@sarasanalytics-com/design-system 0.0.170 → 0.0.172
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/dropdown-menu/dropdown-menu.component.mjs +12 -7
- package/esm2022/lib/form-input/form-input.component.mjs +3 -3
- package/fesm2022/sarasanalytics-com-design-system.mjs +12 -7
- package/fesm2022/sarasanalytics-com-design-system.mjs.map +1 -1
- package/lib/dropdown-menu/dropdown-menu.component.d.ts +2 -0
- package/package.json +1 -1
|
@@ -9,13 +9,13 @@ import { MatCardModule } from '@angular/material/card';
|
|
|
9
9
|
import { MatNativeDateModule } from '@angular/material/core';
|
|
10
10
|
import { IconComponent } from '../icon/icon.component';
|
|
11
11
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
12
|
+
import { ToolTipComponent } from "../tool-tip/tool-tip.component";
|
|
12
13
|
import * as i0 from "@angular/core";
|
|
13
14
|
import * as i1 from "@angular/common";
|
|
14
15
|
import * as i2 from "@ngx-formly/core";
|
|
15
16
|
import * as i3 from "@angular/material/menu";
|
|
16
17
|
import * as i4 from "@angular/material/button";
|
|
17
18
|
import * as i5 from "@angular/material/card";
|
|
18
|
-
import * as i6 from "@angular/material/tooltip";
|
|
19
19
|
export class DropdownMenuComponent extends FieldType {
|
|
20
20
|
constructor() {
|
|
21
21
|
super(...arguments);
|
|
@@ -23,6 +23,12 @@ export class DropdownMenuComponent extends FieldType {
|
|
|
23
23
|
this.selectedDate = null;
|
|
24
24
|
this.isNavigating = false;
|
|
25
25
|
this.placeholderLabel = '';
|
|
26
|
+
this.showCustomTooltip = false;
|
|
27
|
+
}
|
|
28
|
+
convertTooltipToArray(msg) {
|
|
29
|
+
if (!msg)
|
|
30
|
+
return [];
|
|
31
|
+
return Array.isArray(msg) ? msg : [msg];
|
|
26
32
|
}
|
|
27
33
|
ngOnInit() {
|
|
28
34
|
this.params = this.field.props['params'] || {};
|
|
@@ -66,7 +72,6 @@ export class DropdownMenuComponent extends FieldType {
|
|
|
66
72
|
this.formControl.setValue(item.value);
|
|
67
73
|
this.formControl.markAsTouched();
|
|
68
74
|
this.menuTrigger.closeMenu();
|
|
69
|
-
console.log(updatedValue);
|
|
70
75
|
}
|
|
71
76
|
get showError() {
|
|
72
77
|
return this.formControl?.invalid && this.formControl?.touched;
|
|
@@ -85,8 +90,8 @@ export class DropdownMenuComponent extends FieldType {
|
|
|
85
90
|
return;
|
|
86
91
|
this.selectedDate = date;
|
|
87
92
|
const formatted = date.toLocaleDateString('en-US', {
|
|
88
|
-
month: '2-digit',
|
|
89
93
|
day: '2-digit',
|
|
94
|
+
month: '2-digit',
|
|
90
95
|
year: 'numeric',
|
|
91
96
|
});
|
|
92
97
|
const updatedValue = {
|
|
@@ -96,7 +101,6 @@ export class DropdownMenuComponent extends FieldType {
|
|
|
96
101
|
this.formControl.setValue(formatted);
|
|
97
102
|
this.formControl.markAsTouched();
|
|
98
103
|
this.menuTrigger.closeMenu();
|
|
99
|
-
console.log(updatedValue);
|
|
100
104
|
}
|
|
101
105
|
stopCalendarClose(event) {
|
|
102
106
|
event.stopPropagation();
|
|
@@ -126,7 +130,7 @@ export class DropdownMenuComponent extends FieldType {
|
|
|
126
130
|
this.activeItem = null;
|
|
127
131
|
}
|
|
128
132
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: DropdownMenuComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
129
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: DropdownMenuComponent, isStandalone: true, selector: "sa-dropdown-menu", viewQueries: [{ propertyName: "menuTrigger", first: true, predicate: MatMenuTrigger, descendants: true }, { propertyName: "dropdownContainer", first: true, predicate: ["dropdownContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"sa-dropdown-container {{ props?.['inputContainerClass'] }}\">\r\n <!-- Label and Tooltip Section -->\r\n @if(!!props?.['label']){\r\n <div class=\"sa-dropdown-label-container\">\r\n <div class=\"sa-dropdown-label-tooltip-container\">\r\n <span class=\"sa-dropdown-label\">\r\n {{ props?.['label'] }}\r\n </span>\r\n @if(!!props?.['tooltip']){\r\n <span class=\"tooltip-container\">\r\n <sa-icon [icon]=\"props?.['tooltipIcon'] || 'infoCircleOutlined'\" customClass=\"info-icon\"\r\n [matTooltip]=\"props?.['tooltip']\" matTooltipClass=\"custom-tooltip\" class=\"tooltip-icon d-flex\"\r\n [size]=\"props?.['tooltipIconSize'] || '20'\">\r\n </sa-icon>\r\n </span>\r\n }\r\n </div>\r\n </div>\r\n }\r\n\r\n <!-- Dropdown Button -->\r\n <div class=\"dropdown-container\" #dropdownContainer [class.disabled]=\"params?.disabled\">\r\n <button mat-button [matMenuTriggerFor]=\"menu\" #menuTrigger=\"matMenuTrigger\" class=\"menu-trigger\"\r\n [disabled]=\"params?.disabled\" [attr.aria-label]=\"params?.label || 'Dropdown menu'\"\r\n [attr.aria-haspopup]=\"'menu'\" [attr.aria-expanded]=\"menuTrigger?.menuOpen\"\r\n (menuOpened)=\"onMenuOpened()\" (menuClosed)=\"onMenuClosed()\">\r\n\r\n <span class=\"selected-value\" [class.placeholder]=\"!formControl.value\">\r\n {{ selectedItem }}\r\n </span>\r\n <span class=\"dropdown_right_icon\">\r\n <sa-icon [icon]=\"'downOutlined'\" [size]=\"'22'\"></sa-icon>\r\n </span>\r\n </button>\r\n\r\n <!-- Dropdown Menu -->\r\n <mat-menu #menu=\"matMenu\" class=\"two-panel-menu\" [hasBackdrop]=\"true\">\r\n <div class=\"two-panel-dropdown\">\r\n <div class=\"menu-left\">\r\n <div *ngFor=\"let item of menuItems\" class=\"menu-item\" [class.active]=\"item.name === activeItem\"\r\n (click)=\"onSelect(item, $event)\" role=\"menuitem\" [attr.aria-selected]=\"isItemSelected(item)\">\r\n\r\n <span>{{ item.name }}</span>\r\n <sa-icon *ngIf=\"item.type === 'date'\" [icon]=\"'rightChevron'\" [size]=\"'16'\" aria-hidden=\"true\">\r\n </sa-icon>\r\n </div>\r\n </div>\r\n\r\n <div class=\"divider\"></div>\r\n\r\n <div class=\"menu-right\" *ngIf=\"activeItem === 'date'\" (click)=\"stopCalendarClose($event)\">\r\n <mat-card class=\"calendar-card\">\r\n <mat-calendar [(selected)]=\"selectedDate\" (selectedChange)=\"onDateSelected($event)\"\r\n (viewChanged)=\"onViewChanged()\" [minDate]=\"params?.minDate\" [maxDate]=\"params?.maxDate\">\r\n </mat-calendar>\r\n </mat-card>\r\n </div>\r\n </div>\r\n </mat-menu>\r\n </div>\r\n\r\n <!-- Validation Message -->\r\n @if(!formControl.valid){\r\n <div class=\"error-message-container\">\r\n <span class=\"error-message\">\r\n <formly-validation-message [field]=\"field\"></formly-validation-message>\r\n </span>\r\n </div>\r\n }\r\n @if(!!props?.['supportText']){\r\n <p class=\"sa-dropdown-supportText\">{{ props?.['supportText'] }}</p>\r\n }\r\n</div>", styles: [".sa-dropdown-container{display:flex;flex-direction:column;width:100%;font-family:var(--font, Inter, sans-serif);gap:var(--small-8px, 8px)}.sa-dropdown-label-container{display:flex;flex-direction:column;gap:var(--small-4px, 4px)}.sa-dropdown-label-tooltip-container{display:flex;gap:var(--small-4px);align-items:center}.sa-dropdown-label{color:var(--text-highemphasis, #1b1d20);font-family:var(--font, Inter, sans-serif);font-size:var(--small-14px, 14px);font-weight:500;line-height:var(--medium-20px, 20px);letter-spacing:.1px}.required-asterisk{color:var(--semantic-error-500, #bd271e);margin-left:2px}.tooltip-container{display:flex;align-items:center}.info-icon{color:var(--grey-500, #777);cursor:pointer}.sa-dropdown-description{font-family:var(--font);font-size:12px;color:var(--text-lowemphasis, #666);line-height:16px;letter-spacing:.25px}.dropdown-container{width:100%;position:relative}.menu-trigger{width:100%;display:flex;align-items:center;justify-content:space-between;height:40px;padding:0 var(--medium-30px, 30px) 0 var(--small-12px, 12px);border-radius:var(--small-4px, 4px);background-color:#fff;font-family:var(--font);font-size:14px;font-weight:400;line-height:20px;letter-spacing:.25px;transition:border .2s ease,color .2s ease;cursor:pointer;border:var(--border, 1px solid var(--grey-50))}.idle{--border: 1px solid var(--grey-50)}.activated{--border: 1px solid var(--primary-300)}.menu-trigger:hover{--border: 1px solid var(--primary-300);color:var(--text-highemphasis, #1b1d20)}.menu-trigger:disabled,.disabled{border:1px solid var(--grey-50)!important;opacity:.6;cursor:not-allowed}.invalid{border:1px solid var(--semantic-error-500, #bd271e)!important}.selected-value{flex:1;text-align:left;color:var(--text-lowemphasis, #555);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.selected-value.placeholder{color:var(--text-lowemphasis, #aaa)}.menu-trigger sa-icon{color:var(--Grey-600, #475467);transition:transform .2s ease}.menu-trigger[aria-expanded=true] sa-icon{transform:rotate(180deg)}::ng-deep .two-panel-menu.mat-mdc-menu-panel{width:var(--dropdown-trigger-width, auto)!important;min-width:var(--dropdown-trigger-width, auto)!important;max-width:var(--dropdown-trigger-width, auto)!important}::ng-deep .mdc-button__label{display:flex;align-items:center;justify-content:space-between;width:100%}::ng-deep .mat-mdc-menu-content .two-panel-dropdown{width:var(--dropdown-trigger-width, 100%)!important;min-width:var(--dropdown-trigger-width, 100%)!important;max-width:var(--dropdown-trigger-width, 100%)!important;border:none;border-radius:var(--small-4px, 4px);box-shadow:none;overflow:hidden;margin-top:4px;box-shadow:0 1px 2px #0000004d}::ng-deep .mat-mdc-menu-content{box-shadow:0 1px 2px #0000004d;border:none;padding:0!important}::ng-deep .mat-mdc-elevation-specific{box-shadow:0 4px 12px #00000014!important}::ng-deep .cdk-overlay-backdrop.cdk-overlay-transparent-backdrop{background:transparent!important}.dropdown-container .menu-trigger{--dropdown-width: 100%}.menu-trigger[aria-expanded=true]{border-color:var(--primary-300)}.two-panel-menu{min-width:550px;overflow:hidden;border-radius:var(--small-8px, 8px);box-shadow:0 4px 16px #0000001f;background-color:#fff}.two-panel-dropdown{display:flex;width:100%}.menu-left{display:flex;flex-direction:column;width:100%;background-color:#fff}.menu-item{padding:10px 16px;cursor:pointer;display:flex;align-items:center;gap:var(--small-8px, 8px);justify-content:space-between;color:var(--text-highemphasis, #1C1B20);font-family:var(--font-family, Roboto);font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.25px}.menu-item sa-icon{display:flex;margin-top:var(--small-4px, 4px)}.menu-item:hover{background-color:var(--primary-50, #f3ebff)}.menu-item.active{background-color:var(--primary-50, #ede7ff);color:var(--primary-700, #5e35b1);font-weight:500}.sa-dropdown-supportText{font-family:var(--font-family, Roboto);font-size:11px;font-style:normal;font-weight:400;line-height:16px;margin:0 4px;letter-spacing:.25px;color:var(--text-mediumemphasis, #6D6979)}.dropdown_right_icon{position:absolute;right:-12px;top:0;color:var(--icon-grey1, #757575)}.divider{width:1px}.menu-right{width:100%;display:flex;align-items:flex-start;background-color:var(--structural-white,#FFFFFF)}.calendar-card{background:var(--structural-white,#FFFFFF);width:100%}::ng-deep .mat-calendar{width:100%;background:var(--structural-white,#FFFFFF)}.error-message-container{margin-top:4px}.error-message{color:var(--semantic-error-500, #bd271e);font-family:var(--font);font-size:11px;font-weight:400;line-height:var(--small-16px, 16px);letter-spacing:.5px}.support-label{font-family:var(--font);font-size:11px;font-weight:400;line-height:16px;letter-spacing:.5px;color:var(--text-lowemphasis);padding:var(--small-4px) var(--small-16px) 0 var(--small-16px)}.d-flex{display:flex}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i2.ɵFormlyValidationMessage, selector: "formly-validation-message", inputs: ["field"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i3.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: MatCalendar, selector: "mat-calendar", inputs: ["headerComponent", "startAt", "startView", "selected", "minDate", "maxDate", "dateFilter", "dateClass", "comparisonStart", "comparisonEnd", "startDateAccessibleName", "endDateAccessibleName"], outputs: ["selectedChange", "yearSelected", "monthSelected", "viewChanged", "_userSelection", "_userDragDrop"], exportAs: ["matCalendar"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i5.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "component", type: IconComponent, selector: "sa-icon", inputs: ["img", "imgWidth", "imgHeight", "icon", "size", "color", "iconPath", "iconUrl", "customClass", "href", "hrefTarget", "iconPosition"], outputs: ["onClickEvent"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
|
|
133
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: DropdownMenuComponent, isStandalone: true, selector: "sa-dropdown-menu", viewQueries: [{ propertyName: "menuTrigger", first: true, predicate: MatMenuTrigger, descendants: true }, { propertyName: "dropdownContainer", first: true, predicate: ["dropdownContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"sa-dropdown-container {{ props?.['inputContainerClass'] }}\">\r\n <!-- Label and Tooltip Section -->\r\n @if(!!props?.['label']){\r\n <div class=\"sa-dropdown-label-container\">\r\n <div class=\"sa-dropdown-label-tooltip-container\">\r\n <span class=\"sa-dropdown-label\">\r\n {{ props?.['label'] }}\r\n </span>\r\n @if(!!props?.['tooltip']){\r\n <span class=\"tooltip-container\" (mouseenter)=\"showCustomTooltip = true\" (mouseleave)=\"showCustomTooltip = false\">\r\n <sa-icon [icon]=\"props?.['tooltipIcon'] || 'infoCircleOutlined'\" customClass=\"info-icon\" class=\"tooltip-icon d-flex\" [size]=\"props?.['tooltipIconSize'] || '20'\">\r\n </sa-icon>\r\n @if(showCustomTooltip){\r\n <sa-tool-tip [messages]=\"convertTooltipToArray(props?.['tooltip'])\" [pointerPosition]=\"'left'\" [simpleMode]=\"true\">\r\n </sa-tool-tip>\r\n }\r\n </span>\r\n }\r\n </div>\r\n </div>\r\n }\r\n\r\n <!-- Dropdown Button -->\r\n <div class=\"dropdown-container\" #dropdownContainer [class.disabled]=\"params?.disabled\">\r\n <button mat-button [matMenuTriggerFor]=\"menu\" #menuTrigger=\"matMenuTrigger\" class=\"menu-trigger\"\r\n [disabled]=\"params?.disabled\" [attr.aria-label]=\"params?.label || 'Dropdown menu'\"\r\n [attr.aria-haspopup]=\"'menu'\" [attr.aria-expanded]=\"menuTrigger?.menuOpen\"\r\n (menuOpened)=\"onMenuOpened()\" (menuClosed)=\"onMenuClosed()\">\r\n\r\n <span class=\"selected-value\" [class.placeholder]=\"!formControl.value\">\r\n {{ selectedItem }}\r\n </span>\r\n <span class=\"dropdown_right_icon\">\r\n <sa-icon [icon]=\"'downOutlined'\" [size]=\"'22'\"></sa-icon>\r\n </span>\r\n </button>\r\n\r\n <!-- Dropdown Menu -->\r\n <mat-menu #menu=\"matMenu\" class=\"two-panel-menu\" [hasBackdrop]=\"true\">\r\n <div class=\"two-panel-dropdown\">\r\n <div class=\"menu-left\">\r\n <div *ngFor=\"let item of menuItems\" class=\"menu-item\" [class.active]=\"item.name === activeItem\"\r\n (click)=\"onSelect(item, $event)\" role=\"menuitem\" [attr.aria-selected]=\"isItemSelected(item)\">\r\n\r\n <span>{{ item.name }}</span>\r\n <sa-icon *ngIf=\"item.type === 'date'\" [icon]=\"'rightChevron'\" [size]=\"'16'\" aria-hidden=\"true\">\r\n </sa-icon>\r\n </div>\r\n </div>\r\n\r\n <div class=\"divider\"></div>\r\n\r\n <div class=\"menu-right\" *ngIf=\"activeItem === 'date'\" (click)=\"stopCalendarClose($event)\">\r\n <mat-card class=\"calendar-card\">\r\n <mat-calendar [(selected)]=\"selectedDate\" (selectedChange)=\"onDateSelected($event)\"\r\n (viewChanged)=\"onViewChanged()\" [minDate]=\"params?.minDate\" [maxDate]=\"params?.maxDate\">\r\n </mat-calendar>\r\n </mat-card>\r\n </div>\r\n </div>\r\n </mat-menu>\r\n </div>\r\n\r\n <!-- Validation Message -->\r\n @if(!formControl.valid){\r\n <div class=\"error-message-container\">\r\n <span class=\"error-message\">\r\n <formly-validation-message [field]=\"field\"></formly-validation-message>\r\n </span>\r\n </div>\r\n }\r\n @if(!!props?.['supportText']){\r\n <p class=\"sa-dropdown-supportText\">{{ props?.['supportText'] }}</p>\r\n }\r\n</div>", styles: [".sa-dropdown-container{display:flex;flex-direction:column;width:100%;font-family:var(--font, Inter, sans-serif);gap:var(--small-8px, 8px)}.sa-dropdown-label-container{display:flex;flex-direction:column;gap:var(--small-4px, 4px)}.sa-dropdown-label-tooltip-container{display:flex;gap:var(--small-4px);align-items:center}.sa-dropdown-label{color:var(--text-highemphasis, #1b1d20);font-family:var(--font, Inter, sans-serif);font-size:var(--small-14px, 14px);font-weight:500;line-height:var(--medium-20px, 20px);letter-spacing:.1px}.required-asterisk{color:var(--semantic-error-500, #bd271e);margin-left:2px}.tooltip-container{display:flex;align-items:center;position:relative}::ng-deep .tooltip-container sa-tool-tip{position:absolute;left:18px}::ng-deep .tooltip-container sa-tool-tip .tool-tip{padding:0;height:40px}::ng-deep .tooltip-container sa-tool-tip .simple-tooltip-content{max-width:fit-content}.info-icon{color:var(--grey-500, #777);cursor:pointer}.sa-dropdown-description{font-family:var(--font);font-size:12px;color:var(--text-lowemphasis, #666);line-height:16px;letter-spacing:.25px}.dropdown-container{width:100%;position:relative}.menu-trigger{width:100%;display:flex;align-items:center;justify-content:space-between;height:40px;padding:0 var(--medium-30px, 30px) 0 var(--small-12px, 12px);border-radius:var(--small-4px, 4px);background-color:#fff;font-family:var(--font);font-size:14px;font-weight:400;line-height:20px;letter-spacing:.25px;transition:border .2s ease,color .2s ease;cursor:pointer;border:var(--border, 1px solid var(--grey-50))}.idle{--border: 1px solid var(--grey-50)}.activated{--border: 1px solid var(--primary-300)}.menu-trigger:hover{--border: 1px solid var(--primary-300);color:var(--text-highemphasis, #1b1d20)}.menu-trigger:disabled,.disabled{border:1px solid var(--grey-50)!important;opacity:.6;cursor:not-allowed}.invalid{border:1px solid var(--semantic-error-500, #bd271e)!important}.selected-value{flex:1;text-align:left;color:var(--text-highemphasis, #1C1B20);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.selected-value.placeholder{color:var(--text-lowemphasis, #aaa)}.menu-trigger sa-icon{color:var(--Grey-600, #475467);transition:transform .2s ease}.menu-trigger[aria-expanded=true] sa-icon{transform:rotate(180deg)}::ng-deep .two-panel-menu.mat-mdc-menu-panel{width:var(--dropdown-trigger-width, auto)!important;min-width:var(--dropdown-trigger-width, auto)!important;max-width:var(--dropdown-trigger-width, auto)!important}::ng-deep .mdc-button__label{display:flex;align-items:center;justify-content:space-between;width:100%}::ng-deep .mat-mdc-menu-content .two-panel-dropdown{width:var(--dropdown-trigger-width, 100%)!important;min-width:var(--dropdown-trigger-width, 100%)!important;max-width:var(--dropdown-trigger-width, 100%)!important;border:none;border-radius:var(--small-4px, 4px);box-shadow:none;overflow:hidden;margin-top:4px;box-shadow:0 1px 2px #0000004d}::ng-deep .mat-mdc-menu-content{box-shadow:0 1px 2px #0000004d;border:none;padding:0!important}::ng-deep .mat-mdc-elevation-specific{box-shadow:0 4px 12px #00000014!important}::ng-deep .cdk-overlay-backdrop.cdk-overlay-transparent-backdrop{background:transparent!important}.dropdown-container .menu-trigger{--dropdown-width: 100%}.menu-trigger[aria-expanded=true]{border-color:var(--primary-300)}.two-panel-menu{min-width:550px;overflow:hidden;border-radius:var(--small-8px, 8px);box-shadow:0 4px 16px #0000001f;background-color:#fff}.two-panel-dropdown{display:flex;width:100%}.menu-left{display:flex;flex-direction:column;width:100%;background-color:#fff}.menu-item{padding:10px 16px;cursor:pointer;display:flex;align-items:center;gap:var(--small-8px, 8px);justify-content:space-between;color:var(--text-highemphasis, #1C1B20);font-family:var(--font-family, Roboto);font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.25px}.menu-item sa-icon{display:flex;margin-top:var(--small-4px, 4px)}.menu-item:hover{background-color:var(--primary-50, #f3ebff)}.menu-item.active{background-color:var(--primary-50, #ede7ff);color:var(--primary-700, #5e35b1);font-weight:500}.sa-dropdown-supportText{font-family:var(--font-family, Roboto);font-size:11px;font-style:normal;font-weight:400;line-height:16px;margin:0 4px;letter-spacing:.25px;color:var(--text-mediumemphasis, #6D6979)}.dropdown_right_icon{position:absolute;right:-12px;top:0;color:var(--icon-grey1, #757575)}.divider{width:1px}.menu-right{width:100%;display:flex;align-items:flex-start;background-color:var(--structural-white,#FFFFFF)}.calendar-card{background:var(--structural-white,#FFFFFF);width:100%}::ng-deep .mat-calendar{width:100%;background:var(--structural-white,#FFFFFF)}.error-message-container{margin-top:4px}.error-message{color:var(--semantic-error-500, #bd271e);font-family:var(--font);font-size:11px;font-weight:400;line-height:var(--small-16px, 16px);letter-spacing:.5px}.support-label{font-family:var(--font);font-size:11px;font-weight:400;line-height:16px;letter-spacing:.5px;color:var(--text-lowemphasis);padding:var(--small-4px) var(--small-16px) 0 var(--small-16px)}.d-flex{display:flex}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i2.ɵFormlyValidationMessage, selector: "formly-validation-message", inputs: ["field"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i3.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: MatCalendar, selector: "mat-calendar", inputs: ["headerComponent", "startAt", "startView", "selected", "minDate", "maxDate", "dateFilter", "dateClass", "comparisonStart", "comparisonEnd", "startDateAccessibleName", "endDateAccessibleName"], outputs: ["selectedChange", "yearSelected", "monthSelected", "viewChanged", "_userSelection", "_userDragDrop"], exportAs: ["matCalendar"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i5.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "component", type: IconComponent, selector: "sa-icon", inputs: ["img", "imgWidth", "imgHeight", "icon", "size", "color", "iconPath", "iconUrl", "customClass", "href", "hrefTarget", "iconPosition"], outputs: ["onClickEvent"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "component", type: ToolTipComponent, selector: "sa-tool-tip", inputs: ["messages", "pointerPosition", "simpleMode"], outputs: ["toolTipSkipped", "toolTipSeen"] }] }); }
|
|
130
134
|
}
|
|
131
135
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: DropdownMenuComponent, decorators: [{
|
|
132
136
|
type: Component,
|
|
@@ -141,7 +145,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
141
145
|
MatNativeDateModule,
|
|
142
146
|
IconComponent,
|
|
143
147
|
MatTooltipModule,
|
|
144
|
-
|
|
148
|
+
ToolTipComponent
|
|
149
|
+
], template: "<div class=\"sa-dropdown-container {{ props?.['inputContainerClass'] }}\">\r\n <!-- Label and Tooltip Section -->\r\n @if(!!props?.['label']){\r\n <div class=\"sa-dropdown-label-container\">\r\n <div class=\"sa-dropdown-label-tooltip-container\">\r\n <span class=\"sa-dropdown-label\">\r\n {{ props?.['label'] }}\r\n </span>\r\n @if(!!props?.['tooltip']){\r\n <span class=\"tooltip-container\" (mouseenter)=\"showCustomTooltip = true\" (mouseleave)=\"showCustomTooltip = false\">\r\n <sa-icon [icon]=\"props?.['tooltipIcon'] || 'infoCircleOutlined'\" customClass=\"info-icon\" class=\"tooltip-icon d-flex\" [size]=\"props?.['tooltipIconSize'] || '20'\">\r\n </sa-icon>\r\n @if(showCustomTooltip){\r\n <sa-tool-tip [messages]=\"convertTooltipToArray(props?.['tooltip'])\" [pointerPosition]=\"'left'\" [simpleMode]=\"true\">\r\n </sa-tool-tip>\r\n }\r\n </span>\r\n }\r\n </div>\r\n </div>\r\n }\r\n\r\n <!-- Dropdown Button -->\r\n <div class=\"dropdown-container\" #dropdownContainer [class.disabled]=\"params?.disabled\">\r\n <button mat-button [matMenuTriggerFor]=\"menu\" #menuTrigger=\"matMenuTrigger\" class=\"menu-trigger\"\r\n [disabled]=\"params?.disabled\" [attr.aria-label]=\"params?.label || 'Dropdown menu'\"\r\n [attr.aria-haspopup]=\"'menu'\" [attr.aria-expanded]=\"menuTrigger?.menuOpen\"\r\n (menuOpened)=\"onMenuOpened()\" (menuClosed)=\"onMenuClosed()\">\r\n\r\n <span class=\"selected-value\" [class.placeholder]=\"!formControl.value\">\r\n {{ selectedItem }}\r\n </span>\r\n <span class=\"dropdown_right_icon\">\r\n <sa-icon [icon]=\"'downOutlined'\" [size]=\"'22'\"></sa-icon>\r\n </span>\r\n </button>\r\n\r\n <!-- Dropdown Menu -->\r\n <mat-menu #menu=\"matMenu\" class=\"two-panel-menu\" [hasBackdrop]=\"true\">\r\n <div class=\"two-panel-dropdown\">\r\n <div class=\"menu-left\">\r\n <div *ngFor=\"let item of menuItems\" class=\"menu-item\" [class.active]=\"item.name === activeItem\"\r\n (click)=\"onSelect(item, $event)\" role=\"menuitem\" [attr.aria-selected]=\"isItemSelected(item)\">\r\n\r\n <span>{{ item.name }}</span>\r\n <sa-icon *ngIf=\"item.type === 'date'\" [icon]=\"'rightChevron'\" [size]=\"'16'\" aria-hidden=\"true\">\r\n </sa-icon>\r\n </div>\r\n </div>\r\n\r\n <div class=\"divider\"></div>\r\n\r\n <div class=\"menu-right\" *ngIf=\"activeItem === 'date'\" (click)=\"stopCalendarClose($event)\">\r\n <mat-card class=\"calendar-card\">\r\n <mat-calendar [(selected)]=\"selectedDate\" (selectedChange)=\"onDateSelected($event)\"\r\n (viewChanged)=\"onViewChanged()\" [minDate]=\"params?.minDate\" [maxDate]=\"params?.maxDate\">\r\n </mat-calendar>\r\n </mat-card>\r\n </div>\r\n </div>\r\n </mat-menu>\r\n </div>\r\n\r\n <!-- Validation Message -->\r\n @if(!formControl.valid){\r\n <div class=\"error-message-container\">\r\n <span class=\"error-message\">\r\n <formly-validation-message [field]=\"field\"></formly-validation-message>\r\n </span>\r\n </div>\r\n }\r\n @if(!!props?.['supportText']){\r\n <p class=\"sa-dropdown-supportText\">{{ props?.['supportText'] }}</p>\r\n }\r\n</div>", styles: [".sa-dropdown-container{display:flex;flex-direction:column;width:100%;font-family:var(--font, Inter, sans-serif);gap:var(--small-8px, 8px)}.sa-dropdown-label-container{display:flex;flex-direction:column;gap:var(--small-4px, 4px)}.sa-dropdown-label-tooltip-container{display:flex;gap:var(--small-4px);align-items:center}.sa-dropdown-label{color:var(--text-highemphasis, #1b1d20);font-family:var(--font, Inter, sans-serif);font-size:var(--small-14px, 14px);font-weight:500;line-height:var(--medium-20px, 20px);letter-spacing:.1px}.required-asterisk{color:var(--semantic-error-500, #bd271e);margin-left:2px}.tooltip-container{display:flex;align-items:center;position:relative}::ng-deep .tooltip-container sa-tool-tip{position:absolute;left:18px}::ng-deep .tooltip-container sa-tool-tip .tool-tip{padding:0;height:40px}::ng-deep .tooltip-container sa-tool-tip .simple-tooltip-content{max-width:fit-content}.info-icon{color:var(--grey-500, #777);cursor:pointer}.sa-dropdown-description{font-family:var(--font);font-size:12px;color:var(--text-lowemphasis, #666);line-height:16px;letter-spacing:.25px}.dropdown-container{width:100%;position:relative}.menu-trigger{width:100%;display:flex;align-items:center;justify-content:space-between;height:40px;padding:0 var(--medium-30px, 30px) 0 var(--small-12px, 12px);border-radius:var(--small-4px, 4px);background-color:#fff;font-family:var(--font);font-size:14px;font-weight:400;line-height:20px;letter-spacing:.25px;transition:border .2s ease,color .2s ease;cursor:pointer;border:var(--border, 1px solid var(--grey-50))}.idle{--border: 1px solid var(--grey-50)}.activated{--border: 1px solid var(--primary-300)}.menu-trigger:hover{--border: 1px solid var(--primary-300);color:var(--text-highemphasis, #1b1d20)}.menu-trigger:disabled,.disabled{border:1px solid var(--grey-50)!important;opacity:.6;cursor:not-allowed}.invalid{border:1px solid var(--semantic-error-500, #bd271e)!important}.selected-value{flex:1;text-align:left;color:var(--text-highemphasis, #1C1B20);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.selected-value.placeholder{color:var(--text-lowemphasis, #aaa)}.menu-trigger sa-icon{color:var(--Grey-600, #475467);transition:transform .2s ease}.menu-trigger[aria-expanded=true] sa-icon{transform:rotate(180deg)}::ng-deep .two-panel-menu.mat-mdc-menu-panel{width:var(--dropdown-trigger-width, auto)!important;min-width:var(--dropdown-trigger-width, auto)!important;max-width:var(--dropdown-trigger-width, auto)!important}::ng-deep .mdc-button__label{display:flex;align-items:center;justify-content:space-between;width:100%}::ng-deep .mat-mdc-menu-content .two-panel-dropdown{width:var(--dropdown-trigger-width, 100%)!important;min-width:var(--dropdown-trigger-width, 100%)!important;max-width:var(--dropdown-trigger-width, 100%)!important;border:none;border-radius:var(--small-4px, 4px);box-shadow:none;overflow:hidden;margin-top:4px;box-shadow:0 1px 2px #0000004d}::ng-deep .mat-mdc-menu-content{box-shadow:0 1px 2px #0000004d;border:none;padding:0!important}::ng-deep .mat-mdc-elevation-specific{box-shadow:0 4px 12px #00000014!important}::ng-deep .cdk-overlay-backdrop.cdk-overlay-transparent-backdrop{background:transparent!important}.dropdown-container .menu-trigger{--dropdown-width: 100%}.menu-trigger[aria-expanded=true]{border-color:var(--primary-300)}.two-panel-menu{min-width:550px;overflow:hidden;border-radius:var(--small-8px, 8px);box-shadow:0 4px 16px #0000001f;background-color:#fff}.two-panel-dropdown{display:flex;width:100%}.menu-left{display:flex;flex-direction:column;width:100%;background-color:#fff}.menu-item{padding:10px 16px;cursor:pointer;display:flex;align-items:center;gap:var(--small-8px, 8px);justify-content:space-between;color:var(--text-highemphasis, #1C1B20);font-family:var(--font-family, Roboto);font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.25px}.menu-item sa-icon{display:flex;margin-top:var(--small-4px, 4px)}.menu-item:hover{background-color:var(--primary-50, #f3ebff)}.menu-item.active{background-color:var(--primary-50, #ede7ff);color:var(--primary-700, #5e35b1);font-weight:500}.sa-dropdown-supportText{font-family:var(--font-family, Roboto);font-size:11px;font-style:normal;font-weight:400;line-height:16px;margin:0 4px;letter-spacing:.25px;color:var(--text-mediumemphasis, #6D6979)}.dropdown_right_icon{position:absolute;right:-12px;top:0;color:var(--icon-grey1, #757575)}.divider{width:1px}.menu-right{width:100%;display:flex;align-items:flex-start;background-color:var(--structural-white,#FFFFFF)}.calendar-card{background:var(--structural-white,#FFFFFF);width:100%}::ng-deep .mat-calendar{width:100%;background:var(--structural-white,#FFFFFF)}.error-message-container{margin-top:4px}.error-message{color:var(--semantic-error-500, #bd271e);font-family:var(--font);font-size:11px;font-weight:400;line-height:var(--small-16px, 16px);letter-spacing:.5px}.support-label{font-family:var(--font);font-size:11px;font-weight:400;line-height:16px;letter-spacing:.5px;color:var(--text-lowemphasis);padding:var(--small-4px) var(--small-16px) 0 var(--small-16px)}.d-flex{display:flex}\n"] }]
|
|
145
150
|
}], propDecorators: { menuTrigger: [{
|
|
146
151
|
type: ViewChild,
|
|
147
152
|
args: [MatMenuTrigger]
|
|
@@ -149,4 +154,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
149
154
|
type: ViewChild,
|
|
150
155
|
args: ['dropdownContainer']
|
|
151
156
|
}] } });
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2Ryb3Bkb3duLW1lbnUvZHJvcGRvd24tbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2Ryb3Bkb3duLW1lbnUvZHJvcGRvd24tbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBbUIsTUFBTSxrQkFBa0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUF1QixXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7OztBQW9CN0QsTUFBTSxPQUFPLHFCQUFzQixTQUFRLFNBQTBCO0lBbEJyRTs7UUFzQkUsZUFBVSxHQUFrQixJQUFJLENBQUM7UUFDakMsaUJBQVksR0FBZ0IsSUFBSSxDQUFD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REYsWUFBWSwrUEFDWixtQkFBbUIsOEJBQ25CLFlBQVksa0pBQ1osYUFBYSx5bUJBQ2IsZUFBZSw0TkFDZixXQUFXLDZZQUNYLGFBQWEsNElBQ2IsbUJBQW1CLCtCQUNuQixhQUFhLDZOQUNiLGdCQUFnQjs7MkZBS1AscUJBQXFCO2tCQWxCakMsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsbUJBQW1CO3dCQUNuQixhQUFhO3dCQUNiLGdCQUFnQjtxQkFDakI7OEJBSzBCLFdBQVc7c0JBQXJDLFNBQVM7dUJBQUMsY0FBYztnQkFDTyxpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRm9ybWx5TW9kdWxlLCBGaWVsZFR5cGUsIEZpZWxkVHlwZUNvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlLCBNYXRNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXREYXRlcGlja2VyTW9kdWxlLCBNYXRDYWxlbmRhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xyXG5pbXBvcnQgeyBNYXRDYXJkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZCc7XHJcbmltcG9ydCB7IE1hdE5hdGl2ZURhdGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcclxuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2ljb24vaWNvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NhLWRyb3Bkb3duLW1lbnUnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIEZvcm1seU1vZHVsZSxcclxuICAgIE1hdE1lbnVNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBNYXRDYWxlbmRhcixcclxuICAgIE1hdENhcmRNb2R1bGUsXHJcbiAgICBNYXROYXRpdmVEYXRlTW9kdWxlLFxyXG4gICAgSWNvbkNvbXBvbmVudCxcclxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24tbWVudS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZHJvcGRvd24tbWVudS5jb21wb25lbnQuY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEcm9wZG93bk1lbnVDb21wb25lbnQgZXh0ZW5kcyBGaWVsZFR5cGU8RmllbGRUeXBlQ29uZmlnPiB7XHJcbiAgQFZpZXdDaGlsZChNYXRNZW51VHJpZ2dlcikgbWVudVRyaWdnZXIhOiBNYXRNZW51VHJpZ2dlcjtcclxuICBAVmlld0NoaWxkKCdkcm9wZG93bkNvbnRhaW5lcicpIGRyb3Bkb3duQ29udGFpbmVyITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcblxyXG4gIGFjdGl2ZUl0ZW06IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIHNlbGVjdGVkRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xyXG4gIGlzTmF2aWdhdGluZyA9IGZhbHNlO1xyXG5cclxuICBwYXJhbXM6IGFueTtcclxuICBwbGFjZWhvbGRlckxhYmVsOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnBhcmFtcyA9IHRoaXMuZmllbGQucHJvcHNbJ3BhcmFtcyddIHx8IHt9O1xyXG4gICAgaWYgKCF0aGlzLnBhcmFtcyB8fCBPYmplY3Qua2V5cyh0aGlzLnBhcmFtcykubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMucGFyYW1zID0gdGhpcy5maWVsZC5wcm9wcztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnBsYWNlaG9sZGVyTGFiZWwgPVxyXG4gICAgICB0aGlzLnBhcmFtcy5wbGFjZWhvbGRlciB8fFxyXG4gICAgICB0aGlzLnBhcmFtcy5sYWJlbCB8fFxyXG4gICAgICB0aGlzLmZpZWxkLnByb3BzLnBsYWNlaG9sZGVyIHx8XHJcbiAgICAgICdTZWxlY3QgYW4gb3B0aW9uJztcclxuICB9XHJcblxyXG4gIGdldCBtZW51SXRlbXMoKTogYW55W10ge1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuZmllbGQucHJvcHM/Lm9wdGlvbnM7XHJcbiAgICBpZiAob3B0aW9ucyAmJiB0eXBlb2YgKG9wdGlvbnMgYXMgYW55KS5zdWJzY3JpYmUgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkob3B0aW9ucykgPyBvcHRpb25zIDogW107XHJcbiAgfVxyXG5cclxuICBnZXQgc2VsZWN0ZWRJdGVtKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWU7XHJcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gdGhpcy5wbGFjZWhvbGRlckxhYmVsO1xyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlLm5hbWUgfHwgdmFsdWUubGFiZWwgfHwgdmFsdWUudmFsdWUgfHwgdGhpcy5wbGFjZWhvbGRlckxhYmVsO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaXRlbSA9IHRoaXMubWVudUl0ZW1zLmZpbmQoXHJcbiAgICAgIChpdGVtKSA9PiBpdGVtLnZhbHVlID09PSB2YWx1ZSB8fCBpdGVtLmlkID09PSB2YWx1ZVxyXG4gICAgKTtcclxuICAgIHJldHVybiBpdGVtPy5uYW1lIHx8IGl0ZW0/LmxhYmVsIHx8IFN0cmluZyh2YWx1ZSkgfHwgdGhpcy5wbGFjZWhvbGRlckxhYmVsO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3QoaXRlbTogYW55LCBldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBpZiAoaXRlbS50eXBlID09PSAnZGF0ZScpIHtcclxuICAgICAgdGhpcy5hY3RpdmVJdGVtID0gaXRlbS50eXBlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmFjdGl2ZUl0ZW0gPSBudWxsO1xyXG5cclxuICAgIGNvbnN0IHVwZGF0ZWRWYWx1ZSA9IHtcclxuICAgICAgaGlzdG9yeVllYXJzOiBpdGVtLnZhbHVlIHx8IGl0ZW0ubmFtZSB8fCBudWxsLFxyXG4gICAgICBoaXN0b3J5RGF0ZTogbnVsbCxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShpdGVtLnZhbHVlKTtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgdGhpcy5tZW51VHJpZ2dlci5jbG9zZU1lbnUoKTtcclxuICAgIGNvbnNvbGUubG9nKHVwZGF0ZWRWYWx1ZSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgb3ZlcnJpZGUgZ2V0IHNob3dFcnJvcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1Db250cm9sPy5pbnZhbGlkICYmIHRoaXMuZm9ybUNvbnRyb2w/LnRvdWNoZWQ7XHJcbiAgfVxyXG5cclxuICBnZXRFcnJvcigpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuZm9ybUNvbnRyb2w/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpKSByZXR1cm4gJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQnO1xyXG4gICAgcmV0dXJuICdQbGVhc2Ugc2VsZWN0IGEgdmFsaWQgb3B0aW9uJztcclxuICB9XHJcblxyXG4gIG9uVmlld0NoYW5nZWQoKSB7XHJcbiAgICB0aGlzLmlzTmF2aWdhdGluZyA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+ICh0aGlzLmlzTmF2aWdhdGluZyA9IGZhbHNlKSwgMzAwKTtcclxuICB9XHJcblxyXG4gIG9uRGF0ZVNlbGVjdGVkKGRhdGU6IERhdGUpIHtcclxuICAgIGlmICh0aGlzLmlzTmF2aWdhdGluZykgcmV0dXJuO1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSBkYXRlO1xyXG5cclxuICAgIGNvbnN0IGZvcm1hdHRlZCA9IGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKCdlbi1VUycsIHtcclxuICAgICAgbW9udGg6ICcyLWRpZ2l0JyxcclxuICAgICAgZGF5OiAnMi1kaWdpdCcsXHJcbiAgICAgIHllYXI6ICdudW1lcmljJyxcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IHVwZGF0ZWRWYWx1ZSA9IHtcclxuICAgICAgaGlzdG9yeVllYXJzOiBudWxsLFxyXG4gICAgICBoaXN0b3J5RGF0ZTogZm9ybWF0dGVkLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKGZvcm1hdHRlZCk7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgIHRoaXMubWVudVRyaWdnZXIuY2xvc2VNZW51KCk7XHJcbiAgICBjb25zb2xlLmxvZyh1cGRhdGVkVmFsdWUpO1xyXG4gIH1cclxuXHJcblxyXG4gIHN0b3BDYWxlbmRhckNsb3NlKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICB9XHJcblxyXG4gIGlzSXRlbVNlbGVjdGVkKGl0ZW06IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLmZvcm1Db250cm9sPy52YWx1ZSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZTtcclxuXHJcbiAgICBpZiAodHlwZW9mIGN1cnJlbnRWYWx1ZSA9PT0gJ29iamVjdCcgJiYgY3VycmVudFZhbHVlICE9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgY3VycmVudFZhbHVlID09PSBpdGVtIHx8XHJcbiAgICAgICAgY3VycmVudFZhbHVlLnZhbHVlID09PSBpdGVtLnZhbHVlIHx8XHJcbiAgICAgICAgY3VycmVudFZhbHVlLmlkID09PSBpdGVtLmlkXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgY3VycmVudFZhbHVlID09PSBpdGVtLnZhbHVlIHx8XHJcbiAgICAgIGN1cnJlbnRWYWx1ZSA9PT0gaXRlbS5pZCB8fFxyXG4gICAgICBjdXJyZW50VmFsdWUgPT09IGl0ZW0ubmFtZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG9uTWVudU9wZW5lZCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGVsID0gdGhpcy5kcm9wZG93bkNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudDtcclxuICAgIGlmICghZWwpIHJldHVybjtcclxuICAgIGNvbnN0IHdpZHRoID0gTWF0aC5yb3VuZChlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCk7XHJcbiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tZHJvcGRvd24tdHJpZ2dlci13aWR0aCcsIHdpZHRoICsgJ3B4Jyk7XHJcbiAgfVxyXG5cclxuICBvbk1lbnVDbG9zZWQoKTogdm9pZCB7XHJcbiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tZHJvcGRvd24tdHJpZ2dlci13aWR0aCcpO1xyXG4gICAgdGhpcy5hY3RpdmVJdGVtID0gbnVsbDtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInNhLWRyb3Bkb3duLWNvbnRhaW5lciB7eyBwcm9wcz8uWydpbnB1dENvbnRhaW5lckNsYXNzJ10gfX1cIj5cclxuICAgIDwhLS0gTGFiZWwgYW5kIFRvb2x0aXAgU2VjdGlvbiAtLT5cclxuICAgIEBpZighIXByb3BzPy5bJ2xhYmVsJ10pe1xyXG4gICAgPGRpdiBjbGFzcz1cInNhLWRyb3Bkb3duLWxhYmVsLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYS1kcm9wZG93bi1sYWJlbC10b29sdGlwLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNhLWRyb3Bkb3duLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBwcm9wcz8uWydsYWJlbCddIH19XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgQGlmKCEhcHJvcHM/LlsndG9vbHRpcCddKXtcclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0b29sdGlwLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPHNhLWljb24gW2ljb25dPVwicHJvcHM/LlsndG9vbHRpcEljb24nXSB8fCAnaW5mb0NpcmNsZU91dGxpbmVkJ1wiIGN1c3RvbUNsYXNzPVwiaW5mby1pY29uXCJcclxuICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJwcm9wcz8uWyd0b29sdGlwJ11cIiBtYXRUb29sdGlwQ2xhc3M9XCJjdXN0b20tdG9vbHRpcFwiIGNsYXNzPVwidG9vbHRpcC1pY29uIGQtZmxleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NpemVdPVwicHJvcHM/LlsndG9vbHRpcEljb25TaXplJ10gfHwgJzIwJ1wiPlxyXG4gICAgICAgICAgICAgICAgPC9zYS1pY29uPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgfVxyXG5cclxuICAgIDwhLS0gRHJvcGRvd24gQnV0dG9uIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWNvbnRhaW5lclwiICNkcm9wZG93bkNvbnRhaW5lciBbY2xhc3MuZGlzYWJsZWRdPVwicGFyYW1zPy5kaXNhYmxlZFwiPlxyXG4gICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiICNtZW51VHJpZ2dlcj1cIm1hdE1lbnVUcmlnZ2VyXCIgY2xhc3M9XCJtZW51LXRyaWdnZXJcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwicGFyYW1zPy5kaXNhYmxlZFwiIFthdHRyLmFyaWEtbGFiZWxdPVwicGFyYW1zPy5sYWJlbCB8fCAnRHJvcGRvd24gbWVudSdcIlxyXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cIidtZW51J1wiIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwibWVudVRyaWdnZXI/Lm1lbnVPcGVuXCJcclxuICAgICAgICAgICAgKG1lbnVPcGVuZWQpPVwib25NZW51T3BlbmVkKClcIiAobWVudUNsb3NlZCk9XCJvbk1lbnVDbG9zZWQoKVwiPlxyXG5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWxlY3RlZC12YWx1ZVwiIFtjbGFzcy5wbGFjZWhvbGRlcl09XCIhZm9ybUNvbnRyb2wudmFsdWVcIj5cclxuICAgICAgICAgICAgICAgIHt7IHNlbGVjdGVkSXRlbSB9fVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcGRvd25fcmlnaHRfaWNvblwiPlxyXG4gICAgICAgICAgICAgICAgPHNhLWljb24gW2ljb25dPVwiJ2Rvd25PdXRsaW5lZCdcIiBbc2l6ZV09XCInMjInXCI+PC9zYS1pY29uPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgIDwhLS0gRHJvcGRvd24gTWVudSAtLT5cclxuICAgICAgICA8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCIgY2xhc3M9XCJ0d28tcGFuZWwtbWVudVwiIFtoYXNCYWNrZHJvcF09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0d28tcGFuZWwtZHJvcGRvd25cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW51LWxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIG1lbnVJdGVtc1wiIGNsYXNzPVwibWVudS1pdGVtXCIgW2NsYXNzLmFjdGl2ZV09XCJpdGVtLm5hbWUgPT09IGFjdGl2ZUl0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3QoaXRlbSwgJGV2ZW50KVwiIHJvbGU9XCJtZW51aXRlbVwiIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaXNJdGVtU2VsZWN0ZWQoaXRlbSlcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW0ubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNhLWljb24gKm5nSWY9XCJpdGVtLnR5cGUgPT09ICdkYXRlJ1wiIFtpY29uXT1cIidyaWdodENoZXZyb24nXCIgW3NpemVdPVwiJzE2J1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NhLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW51LXJpZ2h0XCIgKm5nSWY9XCJhY3RpdmVJdGVtID09PSAnZGF0ZSdcIiAoY2xpY2spPVwic3RvcENhbGVuZGFyQ2xvc2UoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtY2FyZCBjbGFzcz1cImNhbGVuZGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jYWxlbmRhciBbKHNlbGVjdGVkKV09XCJzZWxlY3RlZERhdGVcIiAoc2VsZWN0ZWRDaGFuZ2UpPVwib25EYXRlU2VsZWN0ZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmlld0NoYW5nZWQpPVwib25WaWV3Q2hhbmdlZCgpXCIgW21pbkRhdGVdPVwicGFyYW1zPy5taW5EYXRlXCIgW21heERhdGVdPVwicGFyYW1zPy5tYXhEYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNhbGVuZGFyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQ+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9tYXQtbWVudT5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gVmFsaWRhdGlvbiBNZXNzYWdlIC0tPlxyXG4gICAgQGlmKCFmb3JtQ29udHJvbC52YWxpZCl7XHJcbiAgICA8ZGl2IGNsYXNzPVwiZXJyb3ItbWVzc2FnZS1jb250YWluZXJcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5cclxuICAgICAgICAgICAgPGZvcm1seS12YWxpZGF0aW9uLW1lc3NhZ2UgW2ZpZWxkXT1cImZpZWxkXCI+PC9mb3JtbHktdmFsaWRhdGlvbi1tZXNzYWdlPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gICAgQGlmKCEhcHJvcHM/Llsnc3VwcG9ydFRleHQnXSl7XHJcbiAgICA8cCBjbGFzcz1cInNhLWRyb3Bkb3duLXN1cHBvcnRUZXh0XCI+e3sgcHJvcHM/Llsnc3VwcG9ydFRleHQnXSB9fTwvcD5cclxuICAgIH1cclxuPC9kaXY+Il19
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2Ryb3Bkb3duLW1lbnUvZHJvcGRvd24tbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2Ryb3Bkb3duLW1lbnUvZHJvcGRvd24tbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBbUIsTUFBTSxrQkFBa0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUF1QixXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7O0FBcUJsRSxNQUFNLE9BQU8scUJBQXNCLFNBQVEsU0FBMEI7SUFuQnJFOztRQXVCRSxlQUFV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Q0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLENBQUM7OEdBMUlVLHFCQUFxQjtrR0FBckIscUJBQXFCLHlIQUNyQixjQUFjLGdMQ2pDM0Isa3NIQTBFTSx5aktEekRGLFlBQVksK1BBQ1osbUJBQW1CLDhCQUNuQixZQUFZLGtKQUNaLGFBQWEseW1CQUNiLGVBQWUsNE5BQ2YsV0FBVyw2WUFDWCxhQUFhLDRJQUNiLG1CQUFtQiwrQkFDbkIsYUFBYSw2TkFDYixnQkFBZ0IsK0JBQ2hCLGdCQUFnQjs7MkZBS1AscUJBQXFCO2tCQW5CakMsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsbUJBQW1CO3dCQUNuQixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3FCQUNuQjs4QkFLNEIsV0FBVztzQkFBckMsU0FBUzt1QkFBQyxjQUFjO2dCQUNPLGlCQUFpQjtzQkFBaEQsU0FBUzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGb3JtbHlNb2R1bGUsIEZpZWxkVHlwZSwgRmllbGRUeXBlQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUsIE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdERhdGVwaWNrZXJNb2R1bGUsIE1hdENhbGVuZGFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XHJcbmltcG9ydCB7IE1hdENhcmRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jYXJkJztcclxuaW1wb3J0IHsgTWF0TmF0aXZlRGF0ZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vaWNvbi9pY29uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuaW1wb3J0IHsgVG9vbFRpcENvbXBvbmVudCB9IGZyb20gXCIuLi90b29sLXRpcC90b29sLXRpcC5jb21wb25lbnRcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2EtZHJvcGRvd24tbWVudScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgRm9ybWx5TW9kdWxlLFxyXG4gICAgTWF0TWVudU1vZHVsZSxcclxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcclxuICAgIE1hdENhbGVuZGFyLFxyXG4gICAgTWF0Q2FyZE1vZHVsZSxcclxuICAgIE1hdE5hdGl2ZURhdGVNb2R1bGUsXHJcbiAgICBJY29uQ29tcG9uZW50LFxyXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcclxuICAgIFRvb2xUaXBDb21wb25lbnRcclxuXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24tbWVudS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZHJvcGRvd24tbWVudS5jb21wb25lbnQuY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEcm9wZG93bk1lbnVDb21wb25lbnQgZXh0ZW5kcyBGaWVsZFR5cGU8RmllbGRUeXBlQ29uZmlnPiB7XHJcbiAgQFZpZXdDaGlsZChNYXRNZW51VHJpZ2dlcikgbWVudVRyaWdnZXIhOiBNYXRNZW51VHJpZ2dlcjtcclxuICBAVmlld0NoaWxkKCdkcm9wZG93bkNvbnRhaW5lcicpIGRyb3Bkb3duQ29udGFpbmVyITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcblxyXG4gIGFjdGl2ZUl0ZW06IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIHNlbGVjdGVkRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xyXG4gIGlzTmF2aWdhdGluZyA9IGZhbHNlO1xyXG5cclxuICBwYXJhbXM6IGFueTtcclxuICBwbGFjZWhvbGRlckxhYmVsOiBzdHJpbmcgPSAnJztcclxuICBzaG93Q3VzdG9tVG9vbHRpcCA9IGZhbHNlO1xyXG5cclxuICBjb252ZXJ0VG9vbHRpcFRvQXJyYXkobXNnOiBhbnkpOiBzdHJpbmdbXSB7XHJcbiAgICBpZiAoIW1zZykgcmV0dXJuIFtdO1xyXG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkobXNnKSA/IG1zZyA6IFttc2ddO1xyXG4gIH1cclxuXHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5wYXJhbXMgPSB0aGlzLmZpZWxkLnByb3BzWydwYXJhbXMnXSB8fCB7fTtcclxuICAgIGlmICghdGhpcy5wYXJhbXMgfHwgT2JqZWN0LmtleXModGhpcy5wYXJhbXMpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLnBhcmFtcyA9IHRoaXMuZmllbGQucHJvcHM7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5wbGFjZWhvbGRlckxhYmVsID1cclxuICAgICAgdGhpcy5wYXJhbXMucGxhY2Vob2xkZXIgfHxcclxuICAgICAgdGhpcy5wYXJhbXMubGFiZWwgfHxcclxuICAgICAgdGhpcy5maWVsZC5wcm9wcy5wbGFjZWhvbGRlciB8fFxyXG4gICAgICAnU2VsZWN0IGFuIG9wdGlvbic7XHJcbiAgfVxyXG5cclxuICBnZXQgbWVudUl0ZW1zKCk6IGFueVtdIHtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmZpZWxkLnByb3BzPy5vcHRpb25zO1xyXG4gICAgaWYgKG9wdGlvbnMgJiYgdHlwZW9mIChvcHRpb25zIGFzIGFueSkuc3Vic2NyaWJlID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICAgIHJldHVybiBBcnJheS5pc0FycmF5KG9wdGlvbnMpID8gb3B0aW9ucyA6IFtdO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNlbGVjdGVkSXRlbSgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlO1xyXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIHRoaXMucGxhY2Vob2xkZXJMYWJlbDtcclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZS5uYW1lIHx8IHZhbHVlLmxhYmVsIHx8IHZhbHVlLnZhbHVlIHx8IHRoaXMucGxhY2Vob2xkZXJMYWJlbDtcclxuICAgIH1cclxuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLm1lbnVJdGVtcy5maW5kKFxyXG4gICAgICAoaXRlbSkgPT4gaXRlbS52YWx1ZSA9PT0gdmFsdWUgfHwgaXRlbS5pZCA9PT0gdmFsdWVcclxuICAgICk7XHJcbiAgICByZXR1cm4gaXRlbT8ubmFtZSB8fCBpdGVtPy5sYWJlbCB8fCBTdHJpbmcodmFsdWUpIHx8IHRoaXMucGxhY2Vob2xkZXJMYWJlbDtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0KGl0ZW06IGFueSwgZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgaWYgKGl0ZW0udHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlSXRlbSA9IGl0ZW0udHlwZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hY3RpdmVJdGVtID0gbnVsbDtcclxuXHJcbiAgICBjb25zdCB1cGRhdGVkVmFsdWUgPSB7XHJcbiAgICAgIGhpc3RvcnlZZWFyczogaXRlbS52YWx1ZSB8fCBpdGVtLm5hbWUgfHwgbnVsbCxcclxuICAgICAgaGlzdG9yeURhdGU6IG51bGwsXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoaXRlbS52YWx1ZSk7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgIHRoaXMubWVudVRyaWdnZXIuY2xvc2VNZW51KCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgb3ZlcnJpZGUgZ2V0IHNob3dFcnJvcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1Db250cm9sPy5pbnZhbGlkICYmIHRoaXMuZm9ybUNvbnRyb2w/LnRvdWNoZWQ7XHJcbiAgfVxyXG5cclxuICBnZXRFcnJvcigpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuZm9ybUNvbnRyb2w/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpKSByZXR1cm4gJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQnO1xyXG4gICAgcmV0dXJuICdQbGVhc2Ugc2VsZWN0IGEgdmFsaWQgb3B0aW9uJztcclxuICB9XHJcblxyXG4gIG9uVmlld0NoYW5nZWQoKSB7XHJcbiAgICB0aGlzLmlzTmF2aWdhdGluZyA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+ICh0aGlzLmlzTmF2aWdhdGluZyA9IGZhbHNlKSwgMzAwKTtcclxuICB9XHJcblxyXG4gIG9uRGF0ZVNlbGVjdGVkKGRhdGU6IERhdGUpIHtcclxuICAgIGlmICh0aGlzLmlzTmF2aWdhdGluZykgcmV0dXJuO1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSBkYXRlO1xyXG5cclxuICAgIGNvbnN0IGZvcm1hdHRlZCA9IGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKCdlbi1VUycsIHtcclxuICAgICAgZGF5OiAnMi1kaWdpdCcsXHJcbiAgICAgIG1vbnRoOiAnMi1kaWdpdCcsXHJcbiAgICAgIHllYXI6ICdudW1lcmljJyxcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IHVwZGF0ZWRWYWx1ZSA9IHtcclxuICAgICAgaGlzdG9yeVllYXJzOiBudWxsLFxyXG4gICAgICBoaXN0b3J5RGF0ZTogZm9ybWF0dGVkLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKGZvcm1hdHRlZCk7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgIHRoaXMubWVudVRyaWdnZXIuY2xvc2VNZW51KCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgc3RvcENhbGVuZGFyQ2xvc2UoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgaXNJdGVtU2VsZWN0ZWQoaXRlbTogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuZm9ybUNvbnRyb2w/LnZhbHVlKSByZXR1cm4gZmFsc2U7XHJcbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlO1xyXG5cclxuICAgIGlmICh0eXBlb2YgY3VycmVudFZhbHVlID09PSAnb2JqZWN0JyAmJiBjdXJyZW50VmFsdWUgIT09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICBjdXJyZW50VmFsdWUgPT09IGl0ZW0gfHxcclxuICAgICAgICBjdXJyZW50VmFsdWUudmFsdWUgPT09IGl0ZW0udmFsdWUgfHxcclxuICAgICAgICBjdXJyZW50VmFsdWUuaWQgPT09IGl0ZW0uaWRcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBjdXJyZW50VmFsdWUgPT09IGl0ZW0udmFsdWUgfHxcclxuICAgICAgY3VycmVudFZhbHVlID09PSBpdGVtLmlkIHx8XHJcbiAgICAgIGN1cnJlbnRWYWx1ZSA9PT0gaXRlbS5uYW1lXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb25NZW51T3BlbmVkKCk6IHZvaWQge1xyXG4gICAgY29uc3QgZWwgPSB0aGlzLmRyb3Bkb3duQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50O1xyXG4gICAgaWYgKCFlbCkgcmV0dXJuO1xyXG4gICAgY29uc3Qgd2lkdGggPSBNYXRoLnJvdW5kKGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoKTtcclxuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1kcm9wZG93bi10cmlnZ2VyLXdpZHRoJywgd2lkdGggKyAncHgnKTtcclxuICB9XHJcblxyXG4gIG9uTWVudUNsb3NlZCgpOiB2b2lkIHtcclxuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnLS1kcm9wZG93bi10cmlnZ2VyLXdpZHRoJyk7XHJcbiAgICB0aGlzLmFjdGl2ZUl0ZW0gPSBudWxsO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwic2EtZHJvcGRvd24tY29udGFpbmVyIHt7IHByb3BzPy5bJ2lucHV0Q29udGFpbmVyQ2xhc3MnXSB9fVwiPlxyXG4gICAgPCEtLSBMYWJlbCBhbmQgVG9vbHRpcCBTZWN0aW9uIC0tPlxyXG4gICAgQGlmKCEhcHJvcHM/LlsnbGFiZWwnXSl7XHJcbiAgICA8ZGl2IGNsYXNzPVwic2EtZHJvcGRvd24tbGFiZWwtY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNhLWRyb3Bkb3duLWxhYmVsLXRvb2x0aXAtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2EtZHJvcGRvd24tbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIHt7IHByb3BzPy5bJ2xhYmVsJ10gfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICBAaWYoISFwcm9wcz8uWyd0b29sdGlwJ10pe1xyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRvb2x0aXAtY29udGFpbmVyXCIgKG1vdXNlZW50ZXIpPVwic2hvd0N1c3RvbVRvb2x0aXAgPSB0cnVlXCIgKG1vdXNlbGVhdmUpPVwic2hvd0N1c3RvbVRvb2x0aXAgPSBmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgPHNhLWljb24gW2ljb25dPVwicHJvcHM/LlsndG9vbHRpcEljb24nXSB8fCAnaW5mb0NpcmNsZU91dGxpbmVkJ1wiIGN1c3RvbUNsYXNzPVwiaW5mby1pY29uXCIgY2xhc3M9XCJ0b29sdGlwLWljb24gZC1mbGV4XCIgW3NpemVdPVwicHJvcHM/LlsndG9vbHRpcEljb25TaXplJ10gfHwgJzIwJ1wiPlxyXG4gICAgICAgICAgICAgICAgPC9zYS1pY29uPlxyXG4gICAgICAgICAgICAgICAgQGlmKHNob3dDdXN0b21Ub29sdGlwKXtcclxuICAgICAgICAgICAgICAgICAgICA8c2EtdG9vbC10aXAgW21lc3NhZ2VzXT1cImNvbnZlcnRUb29sdGlwVG9BcnJheShwcm9wcz8uWyd0b29sdGlwJ10pXCIgW3BvaW50ZXJQb3NpdGlvbl09XCInbGVmdCdcIiBbc2ltcGxlTW9kZV09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zYS10b29sLXRpcD5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIH1cclxuXHJcbiAgICA8IS0tIERyb3Bkb3duIEJ1dHRvbiAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1jb250YWluZXJcIiAjZHJvcGRvd25Db250YWluZXIgW2NsYXNzLmRpc2FibGVkXT1cInBhcmFtcz8uZGlzYWJsZWRcIj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiAjbWVudVRyaWdnZXI9XCJtYXRNZW51VHJpZ2dlclwiIGNsYXNzPVwibWVudS10cmlnZ2VyXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cInBhcmFtcz8uZGlzYWJsZWRcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInBhcmFtcz8ubGFiZWwgfHwgJ0Ryb3Bkb3duIG1lbnUnXCJcclxuICAgICAgICAgICAgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCInbWVudSdcIiBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIm1lbnVUcmlnZ2VyPy5tZW51T3BlblwiXHJcbiAgICAgICAgICAgIChtZW51T3BlbmVkKT1cIm9uTWVudU9wZW5lZCgpXCIgKG1lbnVDbG9zZWQpPVwib25NZW51Q2xvc2VkKClcIj5cclxuXHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VsZWN0ZWQtdmFsdWVcIiBbY2xhc3MucGxhY2Vob2xkZXJdPVwiIWZvcm1Db250cm9sLnZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZEl0ZW0gfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3Bkb3duX3JpZ2h0X2ljb25cIj5cclxuICAgICAgICAgICAgICAgIDxzYS1pY29uIFtpY29uXT1cIidkb3duT3V0bGluZWQnXCIgW3NpemVdPVwiJzIyJ1wiPjwvc2EtaWNvbj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICA8IS0tIERyb3Bkb3duIE1lbnUgLS0+XHJcbiAgICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiIGNsYXNzPVwidHdvLXBhbmVsLW1lbnVcIiBbaGFzQmFja2Ryb3BdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHdvLXBhbmVsLWRyb3Bkb3duXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVudS1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBtZW51SXRlbXNcIiBjbGFzcz1cIm1lbnUtaXRlbVwiIFtjbGFzcy5hY3RpdmVdPVwiaXRlbS5uYW1lID09PSBhY3RpdmVJdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0KGl0ZW0sICRldmVudClcIiByb2xlPVwibWVudWl0ZW1cIiBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImlzSXRlbVNlbGVjdGVkKGl0ZW0pXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBpdGVtLm5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzYS1pY29uICpuZ0lmPVwiaXRlbS50eXBlID09PSAnZGF0ZSdcIiBbaWNvbl09XCIncmlnaHRDaGV2cm9uJ1wiIFtzaXplXT1cIicxNidcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zYS1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVudS1yaWdodFwiICpuZ0lmPVwiYWN0aXZlSXRlbSA9PT0gJ2RhdGUnXCIgKGNsaWNrKT1cInN0b3BDYWxlbmRhckNsb3NlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQgY2xhc3M9XCJjYWxlbmRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2FsZW5kYXIgWyhzZWxlY3RlZCldPVwic2VsZWN0ZWREYXRlXCIgKHNlbGVjdGVkQ2hhbmdlKT1cIm9uRGF0ZVNlbGVjdGVkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZpZXdDaGFuZ2VkKT1cIm9uVmlld0NoYW5nZWQoKVwiIFttaW5EYXRlXT1cInBhcmFtcz8ubWluRGF0ZVwiIFttYXhEYXRlXT1cInBhcmFtcz8ubWF4RGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jYWxlbmRhcj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1jYXJkPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIFZhbGlkYXRpb24gTWVzc2FnZSAtLT5cclxuICAgIEBpZighZm9ybUNvbnRyb2wudmFsaWQpe1xyXG4gICAgPGRpdiBjbGFzcz1cImVycm9yLW1lc3NhZ2UtY29udGFpbmVyXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+XHJcbiAgICAgICAgICAgIDxmb3JtbHktdmFsaWRhdGlvbi1tZXNzYWdlIFtmaWVsZF09XCJmaWVsZFwiPjwvZm9ybWx5LXZhbGlkYXRpb24tbWVzc2FnZT5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIH1cclxuICAgIEBpZighIXByb3BzPy5bJ3N1cHBvcnRUZXh0J10pe1xyXG4gICAgPHAgY2xhc3M9XCJzYS1kcm9wZG93bi1zdXBwb3J0VGV4dFwiPnt7IHByb3BzPy5bJ3N1cHBvcnRUZXh0J10gfX08L3A+XHJcbiAgICB9XHJcbjwvZGl2PiJdfQ==
|
|
@@ -291,7 +291,7 @@ export class FormInputComponent extends FieldType {
|
|
|
291
291
|
}
|
|
292
292
|
}
|
|
293
293
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: FormInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
294
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: FormInputComponent, isStandalone: true, selector: "sa-input", inputs: { icon: "icon", params: "params" }, viewQueries: [{ propertyName: "formInput", first: true, predicate: ["formInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"sa-input-container {{props?.['inputContainerClass']}}\" [ngStyle]=\"{'gap': getLabelFieldGap()}\">\r\n @if (!!props?.['bigLabel'] || !!props?.['bigDescription']) {\r\n <div class=\"sa-input-big-label-container\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n <h2 class=\"sa-input-big-label\">\r\n {{props?.['bigLabel']}}\r\n </h2>\r\n <p class=\"sa-input-big-description\">\r\n {{props?.['bigDescription']}}\r\n </p>\r\n </div>\r\n }\r\n @if(!!props?.['label']){\r\n <div class=\"sa-input-label-container\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n <div class=\"sa-input-label-tooltip-container\">\r\n <span class=\"sa-input-label\">\r\n {{props?.['label']}}\r\n </span>\r\n @if(!!props?.['tooltip']){\r\n <span class=\"tooltip-container\">\r\n <sa-icon [icon]=\"props?.['tooltipIcon'] || 'infoCircleOutlined'\" customClass=\"info-icon\"\r\n [matTooltip]=\"props?.['tooltip']\" matTooltipClass=\"custom-tooltip\" class=\"tooltip-icon d-flex\"\r\n [size]=\"props?.['tooltipIconSize'] || '20'\"></sa-icon>\r\n </span>\r\n }\r\n </div>\r\n @if(!!props?.['description']) {\r\n <p class=\"sa-input-description\">\r\n {{props?.['description']}}\r\n </p>\r\n }\r\n </div>\r\n }\r\n <div class=\"sa-input\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n @if((pretext || (!!inputVal?.length && (!!params?.placeholder || !!props?.placeholder))) && props?.['showTag']\r\n !== false){\r\n <span class=\"sa-input-tag\">{{params?.placeholder || props?.placeholder}}</span>\r\n }\r\n <div class=\"sa-input-field\" [ngClass]=\"formControl.invalid && formControl.touched ? 'invalid' : 'idle' \"\r\n (click)=\"onInputFieldClick($event)\">\r\n @if(pretext){\r\n <div class=\"sa-input-pretext\">\r\n {{pretext}}\r\n </div>\r\n }\r\n\r\n <!-- Multi-value chip display -->\r\n @if(isMultiValue) {\r\n <div class=\"chip-container\">\r\n <sa-chip \r\n *ngFor=\"let chip of (chipValues || [])?.slice(startInd,startInd+labelLimit) let i = index\"\r\n [text]=\"chip?.value || chip?.label || chip\"\r\n [type]=\"'regular'\"\r\n [state]=\"'primary'\"\r\n [filling]=\"'filled'\"\r\n [iconPosition]=\"'right'\"\r\n [iconPath]=\"'../assets/closeBlueOutlined.svg'\"\r\n (onClickEvent)=\"removeChip(i)\">\r\n </sa-chip>\r\n \r\n <div (click)=\"shiftLabel('clicked')\" class=\"ng-value overflow-label\"\r\n *ngIf=\"(chipValues || []).length > (startInd + labelLimit)\">\r\n <sa-chip [text]=\"'+' + ((chipValues || []).length - (startInd + labelLimit))\" \r\n type=\"regular\" \r\n state=\"primary\" \r\n filling=\"filled\">\r\n </sa-chip>\r\n </div>\r\n <input\r\n [ngClass]=\"'chip-input'\"\r\n matInput [type]=\"type\"\r\n [disabled]=\"field.props.disabled || false\"\r\n [placeholder]=\"chipValues.length === 0 ? (props?.placeholder || params?.placeholder || '') : ''\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onChipBlur()\"\r\n (input)=\"onChipInputChange($event)\"\r\n (keydown)=\"onChipKeyDown($event)\"\r\n [(ngModel)]=\"currentInputValue\"\r\n #formInput />\r\n </div>\r\n } @else {\r\n <!-- Standard single-value input (backward compatibility) -->\r\n @if(!!props?.['prefix']){\r\n <span matPrefix>{{props?.['prefix']}} </span>\r\n }\r\n <input\r\n [ngClass]=\"(!!inputVal && (params?.type === 'password' || props?.type === 'password') && icon.name !== 'eyeOff') ? 'masked' : ''\"\r\n matInput [type]=\"props?.type || type\" value=\"\" [pattern]=\"type==='tel' ? '[0-9]' : '' \"\r\n [disabled]=\"field.props.disabled || false\"\r\n [placeholder]=\"!pretext && props?.placeholder || params?.placeholder || ''\" (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\" (input)=\"onInput($event)\" [(ngModel)]=\"inputVal\" #formInput />\r\n }\r\n\r\n @if(params?.type === 'password'){\r\n <sa-icon class=\"flex\" icon=\"eyeOutlined\" [size]=\"icon.size || '24'\" (click)=\"inputIconClick()\"\r\n [ngClass]=\"!icon.name || icon.name === 'eyeOutlined' ? '' : 'hide'\"></sa-icon>\r\n <sa-icon class=\"flex\" icon=\"eyeOff\" [size]=\"icon.size || '24'\" (click)=\"inputIconClick()\"\r\n [ngClass]=\"icon.name === 'eyeOff' ? '' : 'hide'\"></sa-icon>\r\n }@else if(params?.type === 'email' && icon.show){\r\n <sa-icon class=\"flex\" [icon]=\"icon.name || 'checkCircleOutlined'\" [size]=\"icon.size || '24'\"\r\n (click)=\"inputIconClick()\" [ngClass]=\"showEmailIcon ? '' : 'hide'\"></sa-icon>\r\n }\r\n @else if(icon?.name){\r\n <sa-icon class=\"flex\" [icon]=\"icon.name\" [size]=\"icon?.size || '24'\" [color]=\"icon?.color || ''\"\r\n [ngClass]=\"icon?.show ? '' : 'hide'\"></sa-icon>\r\n }\r\n </div>\r\n @if((!formControl.valid) || (params?.supportText)){\r\n <div class=\"support-label {{formControl.invalid && formControl.touched ? params?.className : ''}}\" [ngClass]=\"[\r\n formControl.invalid && formControl.touched ? 'invalid' : 'idle'\r\n ]\">\r\n <!-- {{!formControl.valid ? inputErrorText : params.supportText}} -->\r\n {{getFormSupportText()}}\r\n </div>\r\n }\r\n </div>\r\n</div>", styles: ["*{--error-red: #e25c61 }.idle{--border: 1px solid var(--grey-50)}.focus{--border: 1px solid var(--primary-300)}.masked{font-size:28px;font-weight:500;padding-top:4px}.disabled .sa-input-field,[disabled]{background-color:#fafafa;cursor:not-allowed}.disabled .sa-input-field input{color:#989da3}.sa-input-field>input,.sa-input-field>input:focus-visible{--border: 1px solid var(--primary-300);border:none;outline:none}.sa-input-field:hover{--border: 1px solid var(--primary-300);--font-color: var(--text-highemphasis)}.sa-input-field sa-icon{color:var(--icon-grey1)}.sa-input-field>input:focus-visible~sa-icon,.sa-input-field:hover sa-icon{color:var(--primary-300)}.sa-input-field.invalid>input,.sa-input-field.invalid sa-icon,.sa-input-field.invalid .sa-input-pretext{color:var(--semantic-error-500, #BD271E)}.sa-input-field.invalid{--border: 1px solid var(--semantic-error-500, #BD271E)}.sa-input-field.invalid sa-icon{--form-email-icon-color: var(--semantic-error-500, #BD271E)}.sa-input-field.idle sa-icon{--form-email-icon-color: #33961F}.sa-input{position:relative;padding:8px 0}.sa-input-pretext{margin-right:2px}.sa-input-field{width:100%;box-sizing:border-box;position:relative;display:inline-flex;padding:0px var(--small-12px);height:40px;justify-content:center;align-items:center;border:var(--border);border-radius:var(--small-4px);font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.25px;--font-color: var(--text-lowemphasis)}.sa-input-field input{width:inherit}.sa-input-tag{position:absolute;background:#fff;padding:2px 6px;top:-1px;left:12px;z-index:2;font-size:11px;font-weight:500;line-height:16px;letter-spacing:.5px;text-align:left;color:var(--text-lowemphasis)}.support-label{font-family:var(--font);font-size:11px;font-style:normal;font-weight:400;line-height:16px;letter-spacing:.5px;color:var(--text-lowemphasis);padding:var(--small-4px) var(--small-16px) 0px var(--small-16px)}.support-label.invalid{color:var(--error-red)}.hide{display:none}.sa-input-big-label-container,.sa-input-label-container{display:flex;flex-direction:column;gap:var(--small-8px, 8px)}.sa-input-big-label{color:var(--text-highemphasis, #1C1B20);font-family:var(--font-roboto, Roboto);font-size:var(--medium-22px, 22px);font-style:normal;font-weight:500;line-height:var(--medium-28px, 28px);margin:0}.sa-input-big-description,.sa-input-description{color:var(--text-mediumemphasis, #6D6979);font-family:var(--font-roboto, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px;margin:0}.sa-input-container{display:flex;flex-direction:column;gap:var(--medium-20px, 20px)}.sa-input-label{color:var(--text-highemphasis, #1B1D20);font-family:var(--font);font-size:var(--small-14px);font-style:normal;font-weight:500;line-height:var(--medium-20px);letter-spacing:.1px}.sa-input-label-tooltip-container{display:flex;gap:var(--small-4px);align-items:center}.d-flex{display:flex}.chip-container{display:flex;flex-wrap:wrap;align-items:center;gap:4px;width:100%;min-height:20px}.chip-input{border:none;outline:none;background:transparent;flex:1;min-width:60px;font-size:14px;font-family:inherit;color:inherit}.chip-input::placeholder{color:var(--text-medium-emphasis, #6D6979)}.chip-container sa-chip{margin:2px 0}@media screen and (max-width: 1024px){.masked{font-weight:unset}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: IconComponent, selector: "sa-icon", inputs: ["img", "imgWidth", "imgHeight", "icon", "size", "color", "iconPath", "iconUrl", "customClass", "href", "hrefTarget", "iconPosition"], outputs: ["onClickEvent"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: ChipsComponent, selector: "sa-chip", inputs: ["id", "iconPath", "text", "type", "state", "filling", "iconPosition", "largeStateIcon", "largeStateText", "tooltip", "className"], outputs: ["onClickEvent"] }] }); }
|
|
294
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: FormInputComponent, isStandalone: true, selector: "sa-input", inputs: { icon: "icon", params: "params" }, viewQueries: [{ propertyName: "formInput", first: true, predicate: ["formInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"sa-input-container {{props?.['inputContainerClass']}}\" [ngStyle]=\"{'gap': getLabelFieldGap()}\">\r\n @if (!!props?.['bigLabel'] || !!props?.['bigDescription']) {\r\n <div class=\"sa-input-big-label-container\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n <h2 class=\"sa-input-big-label\">\r\n {{props?.['bigLabel']}}\r\n </h2>\r\n <p class=\"sa-input-big-description\">\r\n {{props?.['bigDescription']}}\r\n </p>\r\n </div>\r\n }\r\n @if(!!props?.['label']){\r\n <div class=\"sa-input-label-container\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n <div class=\"sa-input-label-tooltip-container\">\r\n <span class=\"sa-input-label\">\r\n {{props?.['label']}}\r\n </span>\r\n @if(!!props?.['tooltip']){\r\n <span class=\"tooltip-container\">\r\n <sa-icon [icon]=\"props?.['tooltipIcon'] || 'infoCircleOutlined'\" customClass=\"info-icon\"\r\n [matTooltip]=\"props?.['tooltip']\" matTooltipClass=\"custom-tooltip\" class=\"tooltip-icon d-flex\"\r\n [size]=\"props?.['tooltipIconSize'] || '20'\"></sa-icon>\r\n </span>\r\n }\r\n </div>\r\n @if(!!props?.['description']) {\r\n <p class=\"sa-input-description\">\r\n {{props?.['description']}}\r\n </p>\r\n }\r\n </div>\r\n }\r\n <div class=\"sa-input\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n @if((pretext || (!!inputVal?.length && (!!params?.placeholder || !!props?.placeholder))) && props?.['showTag']\r\n !== false){\r\n <span class=\"sa-input-tag\">{{params?.placeholder || props?.placeholder}}</span>\r\n }\r\n <div class=\"sa-input-field\" [ngClass]=\"formControl.invalid && formControl.touched ? 'invalid' : 'idle' \"\r\n (click)=\"onInputFieldClick($event)\">\r\n @if(pretext){\r\n <div class=\"sa-input-pretext\">\r\n {{pretext}}\r\n </div>\r\n }\r\n\r\n <!-- Multi-value chip display -->\r\n @if(isMultiValue) {\r\n <div class=\"chip-container\">\r\n <sa-chip \r\n *ngFor=\"let chip of (chipValues || [])?.slice(startInd,startInd+labelLimit) let i = index\"\r\n [text]=\"chip?.value || chip?.label || chip\"\r\n [type]=\"'regular'\"\r\n [state]=\"'primary'\"\r\n [filling]=\"'filled'\"\r\n [iconPosition]=\"'right'\"\r\n [iconPath]=\"'../assets/closeBlueOutlined.svg'\"\r\n (onClickEvent)=\"removeChip(i)\">\r\n </sa-chip>\r\n \r\n <div (click)=\"shiftLabel('clicked')\" class=\"ng-value overflow-label\"\r\n *ngIf=\"(chipValues || []).length > (startInd + labelLimit)\">\r\n <sa-chip [text]=\"'+' + ((chipValues || []).length - (startInd + labelLimit))\" \r\n type=\"regular\" \r\n state=\"primary\" \r\n filling=\"filled\">\r\n </sa-chip>\r\n </div>\r\n <input\r\n [ngClass]=\"'chip-input'\"\r\n matInput [type]=\"type\"\r\n [disabled]=\"field.props.disabled || false\"\r\n [placeholder]=\"chipValues.length === 0 ? (props?.placeholder || params?.placeholder || '') : ''\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onChipBlur()\"\r\n (input)=\"onChipInputChange($event)\"\r\n (keydown)=\"onChipKeyDown($event)\"\r\n [(ngModel)]=\"currentInputValue\"\r\n #formInput />\r\n </div>\r\n } @else {\r\n <!-- Standard single-value input (backward compatibility) -->\r\n @if(!!props?.['prefix']){\r\n <span matPrefix>{{props?.['prefix']}} </span>\r\n }\r\n <input\r\n [ngClass]=\"(!!inputVal && (params?.type === 'password' || props?.type === 'password') && icon.name !== 'eyeOff') ? 'masked' : ''\"\r\n matInput [type]=\"props?.type || type\" value=\"\" [pattern]=\"type==='tel' ? '[0-9]' : '' \"\r\n [disabled]=\"field.props.disabled || false\"\r\n [placeholder]=\"!pretext && props?.placeholder || params?.placeholder || ''\" (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\" (input)=\"onInput($event)\" [(ngModel)]=\"inputVal\" #formInput />\r\n }\r\n\r\n @if(params?.type === 'password'){\r\n <sa-icon class=\"flex\" icon=\"eyeOutlined\" [size]=\"icon.size || '24'\" (click)=\"inputIconClick()\"\r\n [ngClass]=\"!icon.name || icon.name === 'eyeOutlined' ? '' : 'hide'\"></sa-icon>\r\n <sa-icon class=\"flex\" icon=\"eyeOff\" [size]=\"icon.size || '24'\" (click)=\"inputIconClick()\"\r\n [ngClass]=\"icon.name === 'eyeOff' ? '' : 'hide'\"></sa-icon>\r\n }@else if(params?.type === 'email' && icon.show){\r\n <sa-icon class=\"flex\" [icon]=\"icon.name || 'checkCircleOutlined'\" [size]=\"icon.size || '24'\"\r\n (click)=\"inputIconClick()\" [ngClass]=\"showEmailIcon ? '' : 'hide'\"></sa-icon>\r\n }\r\n @else if(icon?.name){\r\n <sa-icon class=\"flex\" [icon]=\"icon.name\" [size]=\"icon?.size || '24'\" [color]=\"icon?.color || ''\"\r\n [ngClass]=\"icon?.show ? '' : 'hide'\"></sa-icon>\r\n }\r\n </div>\r\n @if((!formControl.valid) || (params?.supportText)){\r\n <div class=\"support-label {{formControl.invalid && formControl.touched ? params?.className : ''}}\" [ngClass]=\"[\r\n formControl.invalid && formControl.touched ? 'invalid' : 'idle'\r\n ]\">\r\n <!-- {{!formControl.valid ? inputErrorText : params.supportText}} -->\r\n {{getFormSupportText()}}\r\n </div>\r\n }\r\n </div>\r\n</div>", styles: ["*{--error-red: #e25c61 }.idle{--border: 1px solid var(--grey-50)}.focus{--border: 1px solid var(--primary-300)}.masked{font-size:28px;font-weight:500;padding-top:4px}.disabled .sa-input-field,[disabled]{background-color:#fafafa;cursor:not-allowed}.disabled .sa-input-field input{color:#989da3}.sa-input-field>input,.sa-input-field>input:focus-visible{--border: 1px solid var(--primary-300);border:none;outline:none}.sa-input-field:hover{--border: 1px solid var(--primary-300);--font-color: var(--text-highemphasis)}.sa-input-field sa-icon{color:var(--icon-grey1)}.sa-input-field>input:focus-visible~sa-icon,.sa-input-field:hover sa-icon{color:var(--primary-300)}.sa-input-field.invalid>input,.sa-input-field.invalid sa-icon,.sa-input-field.invalid .sa-input-pretext{color:var(--semantic-error-500, #BD271E)}.sa-input-field.invalid{--border: 1px solid var(--semantic-error-500, #BD271E)}.sa-input-field.invalid sa-icon{--form-email-icon-color: var(--semantic-error-500, #BD271E)}.sa-input-field.idle sa-icon{--form-email-icon-color: #33961F}.sa-input{position:relative;padding:8px 0}.sa-input input:-webkit-autofill,.sa-input input:-webkit-autofill:hover,.sa-input input:-webkit-autofill:focus,.sa-input input:-internal-autofill-selected{background-clip:text;-webkit-background-clip:text}.sa-input .sa-input-field input{background-clip:text;-webkit-background-clip:text;font-weight:unset}.sa-input-pretext{margin-right:2px}.sa-input-field{width:100%;box-sizing:border-box;position:relative;display:inline-flex;padding:0px var(--small-12px);height:40px;justify-content:center;align-items:center;border:var(--border);border-radius:var(--small-4px);font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.25px;--font-color: var(--text-lowemphasis)}.sa-input-field input{width:inherit}.sa-input-tag{position:absolute;background:#fff;padding:2px 6px;top:-1px;left:12px;z-index:2;font-size:11px;font-weight:500;line-height:16px;letter-spacing:.5px;text-align:left;color:var(--text-lowemphasis)}.support-label{font-family:var(--font);font-size:11px;font-style:normal;font-weight:400;line-height:16px;letter-spacing:.5px;color:var(--text-lowemphasis);padding:var(--small-4px) var(--small-16px) 0px var(--small-16px)}.support-label.invalid{color:var(--error-red)}.hide{display:none}.sa-input-big-label-container,.sa-input-label-container{display:flex;flex-direction:column;gap:var(--small-8px, 8px)}.sa-input-big-label{color:var(--text-highemphasis, #1C1B20);font-family:var(--font-roboto, Roboto);font-size:var(--medium-22px, 22px);font-style:normal;font-weight:500;line-height:var(--medium-28px, 28px);margin:0}.sa-input-big-description,.sa-input-description{color:var(--text-mediumemphasis, #6D6979);font-family:var(--font-roboto, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px;margin:0}.sa-input-container{display:flex;flex-direction:column;gap:var(--medium-20px, 20px)}.sa-input-label{color:var(--text-highemphasis, #1B1D20);font-family:var(--font);font-size:var(--small-14px);font-style:normal;font-weight:500;line-height:var(--medium-20px);letter-spacing:.1px}.sa-input-label-tooltip-container{display:flex;gap:var(--small-4px);align-items:center}.d-flex{display:flex}.chip-container{display:flex;flex-wrap:wrap;align-items:center;gap:4px;width:100%;min-height:20px}.chip-input{border:none;outline:none;background:transparent;flex:1;min-width:60px;font-size:14px;font-family:inherit;color:inherit}.chip-input::placeholder{color:var(--text-medium-emphasis, #6D6979)}.chip-container sa-chip{margin:2px 0}@media screen and (max-width: 1024px){.masked{font-weight:unset}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: IconComponent, selector: "sa-icon", inputs: ["img", "imgWidth", "imgHeight", "icon", "size", "color", "iconPath", "iconUrl", "customClass", "href", "hrefTarget", "iconPosition"], outputs: ["onClickEvent"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: ChipsComponent, selector: "sa-chip", inputs: ["id", "iconPath", "text", "type", "state", "filling", "iconPosition", "largeStateIcon", "largeStateText", "tooltip", "className"], outputs: ["onClickEvent"] }] }); }
|
|
295
295
|
}
|
|
296
296
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: FormInputComponent, decorators: [{
|
|
297
297
|
type: Component,
|
|
@@ -303,7 +303,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
303
303
|
IconComponent,
|
|
304
304
|
MatTooltipModule,
|
|
305
305
|
ChipsComponent
|
|
306
|
-
], template: "<div class=\"sa-input-container {{props?.['inputContainerClass']}}\" [ngStyle]=\"{'gap': getLabelFieldGap()}\">\r\n @if (!!props?.['bigLabel'] || !!props?.['bigDescription']) {\r\n <div class=\"sa-input-big-label-container\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n <h2 class=\"sa-input-big-label\">\r\n {{props?.['bigLabel']}}\r\n </h2>\r\n <p class=\"sa-input-big-description\">\r\n {{props?.['bigDescription']}}\r\n </p>\r\n </div>\r\n }\r\n @if(!!props?.['label']){\r\n <div class=\"sa-input-label-container\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n <div class=\"sa-input-label-tooltip-container\">\r\n <span class=\"sa-input-label\">\r\n {{props?.['label']}}\r\n </span>\r\n @if(!!props?.['tooltip']){\r\n <span class=\"tooltip-container\">\r\n <sa-icon [icon]=\"props?.['tooltipIcon'] || 'infoCircleOutlined'\" customClass=\"info-icon\"\r\n [matTooltip]=\"props?.['tooltip']\" matTooltipClass=\"custom-tooltip\" class=\"tooltip-icon d-flex\"\r\n [size]=\"props?.['tooltipIconSize'] || '20'\"></sa-icon>\r\n </span>\r\n }\r\n </div>\r\n @if(!!props?.['description']) {\r\n <p class=\"sa-input-description\">\r\n {{props?.['description']}}\r\n </p>\r\n }\r\n </div>\r\n }\r\n <div class=\"sa-input\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n @if((pretext || (!!inputVal?.length && (!!params?.placeholder || !!props?.placeholder))) && props?.['showTag']\r\n !== false){\r\n <span class=\"sa-input-tag\">{{params?.placeholder || props?.placeholder}}</span>\r\n }\r\n <div class=\"sa-input-field\" [ngClass]=\"formControl.invalid && formControl.touched ? 'invalid' : 'idle' \"\r\n (click)=\"onInputFieldClick($event)\">\r\n @if(pretext){\r\n <div class=\"sa-input-pretext\">\r\n {{pretext}}\r\n </div>\r\n }\r\n\r\n <!-- Multi-value chip display -->\r\n @if(isMultiValue) {\r\n <div class=\"chip-container\">\r\n <sa-chip \r\n *ngFor=\"let chip of (chipValues || [])?.slice(startInd,startInd+labelLimit) let i = index\"\r\n [text]=\"chip?.value || chip?.label || chip\"\r\n [type]=\"'regular'\"\r\n [state]=\"'primary'\"\r\n [filling]=\"'filled'\"\r\n [iconPosition]=\"'right'\"\r\n [iconPath]=\"'../assets/closeBlueOutlined.svg'\"\r\n (onClickEvent)=\"removeChip(i)\">\r\n </sa-chip>\r\n \r\n <div (click)=\"shiftLabel('clicked')\" class=\"ng-value overflow-label\"\r\n *ngIf=\"(chipValues || []).length > (startInd + labelLimit)\">\r\n <sa-chip [text]=\"'+' + ((chipValues || []).length - (startInd + labelLimit))\" \r\n type=\"regular\" \r\n state=\"primary\" \r\n filling=\"filled\">\r\n </sa-chip>\r\n </div>\r\n <input\r\n [ngClass]=\"'chip-input'\"\r\n matInput [type]=\"type\"\r\n [disabled]=\"field.props.disabled || false\"\r\n [placeholder]=\"chipValues.length === 0 ? (props?.placeholder || params?.placeholder || '') : ''\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onChipBlur()\"\r\n (input)=\"onChipInputChange($event)\"\r\n (keydown)=\"onChipKeyDown($event)\"\r\n [(ngModel)]=\"currentInputValue\"\r\n #formInput />\r\n </div>\r\n } @else {\r\n <!-- Standard single-value input (backward compatibility) -->\r\n @if(!!props?.['prefix']){\r\n <span matPrefix>{{props?.['prefix']}} </span>\r\n }\r\n <input\r\n [ngClass]=\"(!!inputVal && (params?.type === 'password' || props?.type === 'password') && icon.name !== 'eyeOff') ? 'masked' : ''\"\r\n matInput [type]=\"props?.type || type\" value=\"\" [pattern]=\"type==='tel' ? '[0-9]' : '' \"\r\n [disabled]=\"field.props.disabled || false\"\r\n [placeholder]=\"!pretext && props?.placeholder || params?.placeholder || ''\" (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\" (input)=\"onInput($event)\" [(ngModel)]=\"inputVal\" #formInput />\r\n }\r\n\r\n @if(params?.type === 'password'){\r\n <sa-icon class=\"flex\" icon=\"eyeOutlined\" [size]=\"icon.size || '24'\" (click)=\"inputIconClick()\"\r\n [ngClass]=\"!icon.name || icon.name === 'eyeOutlined' ? '' : 'hide'\"></sa-icon>\r\n <sa-icon class=\"flex\" icon=\"eyeOff\" [size]=\"icon.size || '24'\" (click)=\"inputIconClick()\"\r\n [ngClass]=\"icon.name === 'eyeOff' ? '' : 'hide'\"></sa-icon>\r\n }@else if(params?.type === 'email' && icon.show){\r\n <sa-icon class=\"flex\" [icon]=\"icon.name || 'checkCircleOutlined'\" [size]=\"icon.size || '24'\"\r\n (click)=\"inputIconClick()\" [ngClass]=\"showEmailIcon ? '' : 'hide'\"></sa-icon>\r\n }\r\n @else if(icon?.name){\r\n <sa-icon class=\"flex\" [icon]=\"icon.name\" [size]=\"icon?.size || '24'\" [color]=\"icon?.color || ''\"\r\n [ngClass]=\"icon?.show ? '' : 'hide'\"></sa-icon>\r\n }\r\n </div>\r\n @if((!formControl.valid) || (params?.supportText)){\r\n <div class=\"support-label {{formControl.invalid && formControl.touched ? params?.className : ''}}\" [ngClass]=\"[\r\n formControl.invalid && formControl.touched ? 'invalid' : 'idle'\r\n ]\">\r\n <!-- {{!formControl.valid ? inputErrorText : params.supportText}} -->\r\n {{getFormSupportText()}}\r\n </div>\r\n }\r\n </div>\r\n</div>", styles: ["*{--error-red: #e25c61 }.idle{--border: 1px solid var(--grey-50)}.focus{--border: 1px solid var(--primary-300)}.masked{font-size:28px;font-weight:500;padding-top:4px}.disabled .sa-input-field,[disabled]{background-color:#fafafa;cursor:not-allowed}.disabled .sa-input-field input{color:#989da3}.sa-input-field>input,.sa-input-field>input:focus-visible{--border: 1px solid var(--primary-300);border:none;outline:none}.sa-input-field:hover{--border: 1px solid var(--primary-300);--font-color: var(--text-highemphasis)}.sa-input-field sa-icon{color:var(--icon-grey1)}.sa-input-field>input:focus-visible~sa-icon,.sa-input-field:hover sa-icon{color:var(--primary-300)}.sa-input-field.invalid>input,.sa-input-field.invalid sa-icon,.sa-input-field.invalid .sa-input-pretext{color:var(--semantic-error-500, #BD271E)}.sa-input-field.invalid{--border: 1px solid var(--semantic-error-500, #BD271E)}.sa-input-field.invalid sa-icon{--form-email-icon-color: var(--semantic-error-500, #BD271E)}.sa-input-field.idle sa-icon{--form-email-icon-color: #33961F}.sa-input{position:relative;padding:8px 0}.sa-input-pretext{margin-right:2px}.sa-input-field{width:100%;box-sizing:border-box;position:relative;display:inline-flex;padding:0px var(--small-12px);height:40px;justify-content:center;align-items:center;border:var(--border);border-radius:var(--small-4px);font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.25px;--font-color: var(--text-lowemphasis)}.sa-input-field input{width:inherit}.sa-input-tag{position:absolute;background:#fff;padding:2px 6px;top:-1px;left:12px;z-index:2;font-size:11px;font-weight:500;line-height:16px;letter-spacing:.5px;text-align:left;color:var(--text-lowemphasis)}.support-label{font-family:var(--font);font-size:11px;font-style:normal;font-weight:400;line-height:16px;letter-spacing:.5px;color:var(--text-lowemphasis);padding:var(--small-4px) var(--small-16px) 0px var(--small-16px)}.support-label.invalid{color:var(--error-red)}.hide{display:none}.sa-input-big-label-container,.sa-input-label-container{display:flex;flex-direction:column;gap:var(--small-8px, 8px)}.sa-input-big-label{color:var(--text-highemphasis, #1C1B20);font-family:var(--font-roboto, Roboto);font-size:var(--medium-22px, 22px);font-style:normal;font-weight:500;line-height:var(--medium-28px, 28px);margin:0}.sa-input-big-description,.sa-input-description{color:var(--text-mediumemphasis, #6D6979);font-family:var(--font-roboto, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px;margin:0}.sa-input-container{display:flex;flex-direction:column;gap:var(--medium-20px, 20px)}.sa-input-label{color:var(--text-highemphasis, #1B1D20);font-family:var(--font);font-size:var(--small-14px);font-style:normal;font-weight:500;line-height:var(--medium-20px);letter-spacing:.1px}.sa-input-label-tooltip-container{display:flex;gap:var(--small-4px);align-items:center}.d-flex{display:flex}.chip-container{display:flex;flex-wrap:wrap;align-items:center;gap:4px;width:100%;min-height:20px}.chip-input{border:none;outline:none;background:transparent;flex:1;min-width:60px;font-size:14px;font-family:inherit;color:inherit}.chip-input::placeholder{color:var(--text-medium-emphasis, #6D6979)}.chip-container sa-chip{margin:2px 0}@media screen and (max-width: 1024px){.masked{font-weight:unset}}\n"] }]
|
|
306
|
+
], template: "<div class=\"sa-input-container {{props?.['inputContainerClass']}}\" [ngStyle]=\"{'gap': getLabelFieldGap()}\">\r\n @if (!!props?.['bigLabel'] || !!props?.['bigDescription']) {\r\n <div class=\"sa-input-big-label-container\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n <h2 class=\"sa-input-big-label\">\r\n {{props?.['bigLabel']}}\r\n </h2>\r\n <p class=\"sa-input-big-description\">\r\n {{props?.['bigDescription']}}\r\n </p>\r\n </div>\r\n }\r\n @if(!!props?.['label']){\r\n <div class=\"sa-input-label-container\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n <div class=\"sa-input-label-tooltip-container\">\r\n <span class=\"sa-input-label\">\r\n {{props?.['label']}}\r\n </span>\r\n @if(!!props?.['tooltip']){\r\n <span class=\"tooltip-container\">\r\n <sa-icon [icon]=\"props?.['tooltipIcon'] || 'infoCircleOutlined'\" customClass=\"info-icon\"\r\n [matTooltip]=\"props?.['tooltip']\" matTooltipClass=\"custom-tooltip\" class=\"tooltip-icon d-flex\"\r\n [size]=\"props?.['tooltipIconSize'] || '20'\"></sa-icon>\r\n </span>\r\n }\r\n </div>\r\n @if(!!props?.['description']) {\r\n <p class=\"sa-input-description\">\r\n {{props?.['description']}}\r\n </p>\r\n }\r\n </div>\r\n }\r\n <div class=\"sa-input\" [ngClass]=\"disabled ? 'disabled' : '' \">\r\n @if((pretext || (!!inputVal?.length && (!!params?.placeholder || !!props?.placeholder))) && props?.['showTag']\r\n !== false){\r\n <span class=\"sa-input-tag\">{{params?.placeholder || props?.placeholder}}</span>\r\n }\r\n <div class=\"sa-input-field\" [ngClass]=\"formControl.invalid && formControl.touched ? 'invalid' : 'idle' \"\r\n (click)=\"onInputFieldClick($event)\">\r\n @if(pretext){\r\n <div class=\"sa-input-pretext\">\r\n {{pretext}}\r\n </div>\r\n }\r\n\r\n <!-- Multi-value chip display -->\r\n @if(isMultiValue) {\r\n <div class=\"chip-container\">\r\n <sa-chip \r\n *ngFor=\"let chip of (chipValues || [])?.slice(startInd,startInd+labelLimit) let i = index\"\r\n [text]=\"chip?.value || chip?.label || chip\"\r\n [type]=\"'regular'\"\r\n [state]=\"'primary'\"\r\n [filling]=\"'filled'\"\r\n [iconPosition]=\"'right'\"\r\n [iconPath]=\"'../assets/closeBlueOutlined.svg'\"\r\n (onClickEvent)=\"removeChip(i)\">\r\n </sa-chip>\r\n \r\n <div (click)=\"shiftLabel('clicked')\" class=\"ng-value overflow-label\"\r\n *ngIf=\"(chipValues || []).length > (startInd + labelLimit)\">\r\n <sa-chip [text]=\"'+' + ((chipValues || []).length - (startInd + labelLimit))\" \r\n type=\"regular\" \r\n state=\"primary\" \r\n filling=\"filled\">\r\n </sa-chip>\r\n </div>\r\n <input\r\n [ngClass]=\"'chip-input'\"\r\n matInput [type]=\"type\"\r\n [disabled]=\"field.props.disabled || false\"\r\n [placeholder]=\"chipValues.length === 0 ? (props?.placeholder || params?.placeholder || '') : ''\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onChipBlur()\"\r\n (input)=\"onChipInputChange($event)\"\r\n (keydown)=\"onChipKeyDown($event)\"\r\n [(ngModel)]=\"currentInputValue\"\r\n #formInput />\r\n </div>\r\n } @else {\r\n <!-- Standard single-value input (backward compatibility) -->\r\n @if(!!props?.['prefix']){\r\n <span matPrefix>{{props?.['prefix']}} </span>\r\n }\r\n <input\r\n [ngClass]=\"(!!inputVal && (params?.type === 'password' || props?.type === 'password') && icon.name !== 'eyeOff') ? 'masked' : ''\"\r\n matInput [type]=\"props?.type || type\" value=\"\" [pattern]=\"type==='tel' ? '[0-9]' : '' \"\r\n [disabled]=\"field.props.disabled || false\"\r\n [placeholder]=\"!pretext && props?.placeholder || params?.placeholder || ''\" (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\" (input)=\"onInput($event)\" [(ngModel)]=\"inputVal\" #formInput />\r\n }\r\n\r\n @if(params?.type === 'password'){\r\n <sa-icon class=\"flex\" icon=\"eyeOutlined\" [size]=\"icon.size || '24'\" (click)=\"inputIconClick()\"\r\n [ngClass]=\"!icon.name || icon.name === 'eyeOutlined' ? '' : 'hide'\"></sa-icon>\r\n <sa-icon class=\"flex\" icon=\"eyeOff\" [size]=\"icon.size || '24'\" (click)=\"inputIconClick()\"\r\n [ngClass]=\"icon.name === 'eyeOff' ? '' : 'hide'\"></sa-icon>\r\n }@else if(params?.type === 'email' && icon.show){\r\n <sa-icon class=\"flex\" [icon]=\"icon.name || 'checkCircleOutlined'\" [size]=\"icon.size || '24'\"\r\n (click)=\"inputIconClick()\" [ngClass]=\"showEmailIcon ? '' : 'hide'\"></sa-icon>\r\n }\r\n @else if(icon?.name){\r\n <sa-icon class=\"flex\" [icon]=\"icon.name\" [size]=\"icon?.size || '24'\" [color]=\"icon?.color || ''\"\r\n [ngClass]=\"icon?.show ? '' : 'hide'\"></sa-icon>\r\n }\r\n </div>\r\n @if((!formControl.valid) || (params?.supportText)){\r\n <div class=\"support-label {{formControl.invalid && formControl.touched ? params?.className : ''}}\" [ngClass]=\"[\r\n formControl.invalid && formControl.touched ? 'invalid' : 'idle'\r\n ]\">\r\n <!-- {{!formControl.valid ? inputErrorText : params.supportText}} -->\r\n {{getFormSupportText()}}\r\n </div>\r\n }\r\n </div>\r\n</div>", styles: ["*{--error-red: #e25c61 }.idle{--border: 1px solid var(--grey-50)}.focus{--border: 1px solid var(--primary-300)}.masked{font-size:28px;font-weight:500;padding-top:4px}.disabled .sa-input-field,[disabled]{background-color:#fafafa;cursor:not-allowed}.disabled .sa-input-field input{color:#989da3}.sa-input-field>input,.sa-input-field>input:focus-visible{--border: 1px solid var(--primary-300);border:none;outline:none}.sa-input-field:hover{--border: 1px solid var(--primary-300);--font-color: var(--text-highemphasis)}.sa-input-field sa-icon{color:var(--icon-grey1)}.sa-input-field>input:focus-visible~sa-icon,.sa-input-field:hover sa-icon{color:var(--primary-300)}.sa-input-field.invalid>input,.sa-input-field.invalid sa-icon,.sa-input-field.invalid .sa-input-pretext{color:var(--semantic-error-500, #BD271E)}.sa-input-field.invalid{--border: 1px solid var(--semantic-error-500, #BD271E)}.sa-input-field.invalid sa-icon{--form-email-icon-color: var(--semantic-error-500, #BD271E)}.sa-input-field.idle sa-icon{--form-email-icon-color: #33961F}.sa-input{position:relative;padding:8px 0}.sa-input input:-webkit-autofill,.sa-input input:-webkit-autofill:hover,.sa-input input:-webkit-autofill:focus,.sa-input input:-internal-autofill-selected{background-clip:text;-webkit-background-clip:text}.sa-input .sa-input-field input{background-clip:text;-webkit-background-clip:text;font-weight:unset}.sa-input-pretext{margin-right:2px}.sa-input-field{width:100%;box-sizing:border-box;position:relative;display:inline-flex;padding:0px var(--small-12px);height:40px;justify-content:center;align-items:center;border:var(--border);border-radius:var(--small-4px);font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.25px;--font-color: var(--text-lowemphasis)}.sa-input-field input{width:inherit}.sa-input-tag{position:absolute;background:#fff;padding:2px 6px;top:-1px;left:12px;z-index:2;font-size:11px;font-weight:500;line-height:16px;letter-spacing:.5px;text-align:left;color:var(--text-lowemphasis)}.support-label{font-family:var(--font);font-size:11px;font-style:normal;font-weight:400;line-height:16px;letter-spacing:.5px;color:var(--text-lowemphasis);padding:var(--small-4px) var(--small-16px) 0px var(--small-16px)}.support-label.invalid{color:var(--error-red)}.hide{display:none}.sa-input-big-label-container,.sa-input-label-container{display:flex;flex-direction:column;gap:var(--small-8px, 8px)}.sa-input-big-label{color:var(--text-highemphasis, #1C1B20);font-family:var(--font-roboto, Roboto);font-size:var(--medium-22px, 22px);font-style:normal;font-weight:500;line-height:var(--medium-28px, 28px);margin:0}.sa-input-big-description,.sa-input-description{color:var(--text-mediumemphasis, #6D6979);font-family:var(--font-roboto, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px;margin:0}.sa-input-container{display:flex;flex-direction:column;gap:var(--medium-20px, 20px)}.sa-input-label{color:var(--text-highemphasis, #1B1D20);font-family:var(--font);font-size:var(--small-14px);font-style:normal;font-weight:500;line-height:var(--medium-20px);letter-spacing:.1px}.sa-input-label-tooltip-container{display:flex;gap:var(--small-4px);align-items:center}.d-flex{display:flex}.chip-container{display:flex;flex-wrap:wrap;align-items:center;gap:4px;width:100%;min-height:20px}.chip-input{border:none;outline:none;background:transparent;flex:1;min-width:60px;font-size:14px;font-family:inherit;color:inherit}.chip-input::placeholder{color:var(--text-medium-emphasis, #6D6979)}.chip-container sa-chip{margin:2px 0}@media screen and (max-width: 1024px){.masked{font-weight:unset}}\n"] }]
|
|
307
307
|
}], ctorParameters: () => [], propDecorators: { formInput: [{
|
|
308
308
|
type: ViewChild,
|
|
309
309
|
args: ['formInput']
|
|
@@ -319,4 +319,4 @@ export var IInputEventType;
|
|
|
319
319
|
IInputEventType["STATE_CHANGE"] = "STATE_CHANGE";
|
|
320
320
|
IInputEventType["ICON_CLICK"] = "ICON_CLICK";
|
|
321
321
|
})(IInputEventType || (IInputEventType = {}));
|
|
322
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2Zvcm0taW5wdXQvZm9ybS1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2Zvcm0taW5wdXQvZm9ybS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUdMLFdBQVcsRUFDWCxtQkFBbUIsRUFDbkIsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQW1CLE1BQU0sa0JBQWtCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxvQkFBb0IsR0FFckIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxHQUFHLElBQUksSUFBSSxFQUFFLEdBQUcsSUFBSSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7OztBQWdCN0QsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFNBQTBCO0lBK0JoRTtRQUNFLEtBQUssRUFBRSxDQUFDO1FBekJWLGVBQVUsR0FBRyxNQUFNLENBQUM7UUFDcEIsYUFBUSxHQUFHLEVBQUUs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LGdCQUFnQiw2VEFDaEIsY0FBYzs7MkZBS0wsa0JBQWtCO2tCQWY5QixTQUFTOytCQUNFLFVBQVUsY0FDUixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsY0FBYztxQkFDZjt3REFLdUIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUVQLElBQUk7c0JBQWxCLEtBQUs7dUJBQUMsTUFBTTtnQkFNSixNQUFNO3NCQUFkLEtBQUs7O0FBK1VSLE1BQU0sQ0FBTixJQUFZLGVBSVg7QUFKRCxXQUFZLGVBQWU7SUFDekIsZ0RBQTZCLENBQUE7SUFDN0IsZ0RBQTZCLENBQUE7SUFDN0IsNENBQXlCLENBQUE7QUFDM0IsQ0FBQyxFQUpXLGVBQWUsS0FBZixlQUFlLFFBSTFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIEZvcm1Db250cm9sLFxyXG4gIEZvcm1zTW9kdWxlLFxyXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgVmFsaWRhdG9ycyxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZvcm1seU1vZHVsZSB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xyXG5pbXBvcnQgeyBGaWVsZFR5cGUsIEZpZWxkVHlwZUNvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xyXG5pbXBvcnQgeyBOZ1NlbGVjdE1vZHVsZSB9IGZyb20gJ0BuZy1zZWxlY3Qvbmctc2VsZWN0JztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBnZXRWYWxpZGF0aW9uTWVzc2FnZSxcclxuICBwaG9uZU51bWJlclZhbGlkYXRvcixcclxufSBmcm9tICcuLi8uLi91dGlscy92YWxpZGF0b3JzJztcclxuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2ljb24vaWNvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDaGlwc0NvbXBvbmVudCB9IGZyb20gJy4uL2NoaXBzL2NoaXBzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IGdldCBhcyBfZ2V0LCBzZXQgYXMgX3NldCwgbWFwIH0gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NhLWlucHV0JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIEZvcm1seU1vZHVsZSxcclxuICAgIEljb25Db21wb25lbnQsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgQ2hpcHNDb21wb25lbnRcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWlucHV0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vZm9ybS1pbnB1dC5jb21wb25lbnQuY3NzJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1JbnB1dENvbXBvbmVudCBleHRlbmRzIEZpZWxkVHlwZTxGaWVsZFR5cGVDb25maWc+IHtcclxuICBAVmlld0NoaWxkKCdmb3JtSW5wdXQnKSBmb3JtSW5wdXQhOiBFbGVtZW50UmVmO1xyXG5cclxuICBASW5wdXQoJ2ljb24nKSBpY29uOiBJSW5wdXRJY29uO1xyXG5cclxuICBwcmV0ZXh0OiBzdHJpbmc7XHJcblxyXG4gIGlucHV0U3RhdGUgPSAnaWRsZSc7XHJcbiAgaW5wdXRWYWwgPSAnJztcclxuICBASW5wdXQoKSBwYXJhbXM6IElJbnB1dFBhcmFtIHwgbnVsbDtcclxuICBkZXBlbmRlbnQ6IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT4gfCBudWxsO1xyXG4gIGRlcGVuZGVudFZhbDogYW55ID0gbnVsbDtcclxuICAvLyBkeW5hbWljSWNvbjogRHluYW1pY0ljb24gfCBudWxsO1xyXG4gIC8vIGljb246IElJbnB1dEljb24gfCBudWxsO1xyXG5cclxuICB0eXBlOiBzdHJpbmcgPSAnJztcclxuICB2YWxpZGF0b3JzOiBhbnlbXTtcclxuICBhc3luY1ZhbGlkYXRvcnM6IGFueVtdO1xyXG5cclxuICBpbnB1dEVycm9yVGV4dDogc3RyaW5nID0gJ2ludmFsaWQgaW5wdXQnO1xyXG5cclxuICBzaG93RW1haWxJY29uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjaGlwVmFsdWVzOiBhbnlbXSA9IFtdO1xyXG4gIGlzTXVsdGlWYWx1ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGN1cnJlbnRJbnB1dFZhbHVlOiBzdHJpbmcgPSAnJztcclxuICBzdGFydEluZDogbnVtYmVyID0gMDtcclxuICBsYWJlbExpbWl0OiBudW1iZXIgPSAxO1xyXG5cclxuICBwcml2YXRlIHN1cHByZXNzT25CbHVyID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5pbnB1dFZhbCA9IF9nZXQodGhpcy5maWVsZC5wcm9wcywgJ3ZhbHVlJywgX2dldCh0aGlzLm1vZGVsLCBbdGhpcy5rZXkgYXMgc3RyaW5nXSkpIHx8ICcnO1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IHRoaXMuZmllbGQucHJvcHMuZGlzYWJsZWQgfHwgZmFsc2U7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sPy5zZXRWYWx1ZSh0aGlzLmlucHV0VmFsKTtcclxuXHJcbiAgICB0aGlzLnBhcmFtcyA9IHRoaXMucGFyYW1zIHx8IHRoaXMuZmllbGQucHJvcHNbJ3BhcmFtcyddO1xyXG4gICAgdGhpcy5pY29uID0gdGhpcy5pY29uIHx8IHRoaXMuZmllbGQucHJvcHNbJ2ljb24nXSB8fCB7fTtcclxuICAgIHRoaXMudHlwZSA9IHRoaXMucGFyYW1zPy50eXBlIHx8ICcnO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWwpID0+IHtcclxuICAgICAgX3NldCh0aGlzLmZvcm1JbnB1dCwgJ25hdGl2ZUVsZW1lbnQudmFsdWUnLCB2YWwpO1xyXG4gICAgICAvLyBIYW5kbGUgbXVsdGktdmFsdWUgY2hpcCB1cGRhdGVzXHJcbiAgICAgIGlmICh0aGlzLmlzTXVsdGlWYWx1ZSAmJiBBcnJheS5pc0FycmF5KHZhbCkpIHtcclxuICAgICAgICB0aGlzLmNoaXBWYWx1ZXMgPSB2YWw7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIEluaXRpYWxpemUgbXVsdGktdmFsdWUgbW9kZSBpZiBzcGVjaWZpZWRcclxuICAgIGlmICh0aGlzLnBhcmFtcz8udHlwZSA9PT0gJ211bHRpLXZhbHVlJyB8fCB0aGlzLnBhcmFtcz8ubXVsdGlWYWx1ZSkge1xyXG4gICAgICB0aGlzLmlzTXVsdGlWYWx1ZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hpcFZhbHVlcyA9IHRoaXMubW9kZWxbdGhpcy5rZXkgYXMgc3RyaW5nXSB8fCB0aGlzLnBhcmFtcz8uY2hpcFZhbHVlcyB8fCBbXTtcclxuICAgICAgdGhpcy5jdXJyZW50SW5wdXRWYWx1ZSA9ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHRoaXMuZHluYW1pY0ljb24gPSB0aGlzLmZpZWxkLnByb3BzWydkeW5hbWljSWNvbiddO1xyXG4gICAgdGhpcy5zZXRWYWxpZGF0b3JzKCk7XHJcbiAgICB0aGlzLnNldERlcGVuZGVudHMoKTtcclxuXHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xyXG4gICAgICBpZiAodGhpcy50eXBlID09PSAnZW1haWwnKSB7XHJcbiAgICAgICAgaWYgKCEhdGhpcy5pbnB1dFZhbCAmJiAhdGhpcy5mb3JtQ29udHJvbC50b3VjaGVkKSB7XHJcbiAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zaG93RW1haWxJY29uID1cclxuICAgICAgICAgIHN0YXRlID09PSAnVkFMSUQnIHx8XHJcbiAgICAgICAgICAoc3RhdGUgPT09ICdJTlZBTElEJyAmJlxyXG4gICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLmhhc0Vycm9yKCdpbnZhbGlkJykgJiZcclxuICAgICAgICAgICAgISF0aGlzLmZvcm1Db250cm9sLnZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbCkgPT4ge1xyXG4gICAgICBfc2V0KHRoaXMuZm9ybUlucHV0LCAnbmF0aXZlRWxlbWVudC52YWx1ZScsIHZhbCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldFZhbGlkYXRvcnMoKSB7XHJcbiAgICB0aGlzLnZhbGlkYXRvcnMgPSB0aGlzLnBhcmFtcz8udmFsaWRhdG9ycyB8fCB0aGlzLnByZWRlZmluZWRWYWxpZGF0b3JzW3RoaXMudHlwZV0gfHwgW107XHJcbiAgICB0aGlzLmFzeW5jVmFsaWRhdG9ycyA9IHRoaXMucGFyYW1zPy5hc3luY1ZhbGlkYXRvcnMgfHwgW107XHJcbiAgICBpZighX2dldCh0aGlzLmZpZWxkLCAndmFsaWRhdG9ycy52YWxpZGF0aW9uJywgbnVsbCkpIHtcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbD8uc2V0VmFsaWRhdG9ycyhbXHJcbiAgICAgICAgLi4uKHRoaXMudHlwZSA/IHRoaXMucHJlZGVmaW5lZFZhbGlkYXRvcnNbdGhpcy50eXBlXSB8fCBbXSA6IFtdKSxcclxuICAgICAgICAuLi4odGhpcy52YWxpZGF0b3JzKSxcclxuICAgICAgXSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5hc3luY1ZhbGlkYXRvcnMpIHtcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbD8uc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMuYXN5bmNWYWxpZGF0b3JzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICBBc3N1bWluZyBkZXBlbmRlbnQgZmllbGQgaXMgYSBzaW5nbGUgc2VsZWN0IGRyb3Bkb3duXHJcbiAgKi9cclxuICBzZXREZXBlbmRlbnRzKCkge1xyXG4gICAgaWYgKHRoaXMucGFyYW1zPy5kZXBlbmRlbnQpIHtcclxuICAgICAgdGhpcy5kZXBlbmRlbnQgPSB0aGlzLmZvcm0uZ2V0KFt0aGlzLnBhcmFtcz8uZGVwZW5kZW50XSk7XHJcblxyXG4gICAgICB0aGlzLmRlcGVuZGVudFZhbCA9IHRoaXMuZ2V0RGVwZW5kZW50VmFsKF9nZXQodGhpcy5kZXBlbmRlbnQsICd2YWx1ZScpKTtcclxuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ3RlbCcpIHtcclxuICAgICAgICB0aGlzLnByZXRleHQgPSB0aGlzLmRlcGVuZGVudFZhbD8uZGlhbF9jb2RlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmRlcGVuZGVudD8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kZXBlbmRlbnRWYWwgPSB0aGlzLmdldERlcGVuZGVudFZhbCh2YWwpO1xyXG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wucmVzZXQoKTtcclxuICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuaW5wdXRWYWwpO1xyXG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT09ICd0ZWwnKSB7XHJcbiAgICAgICAgICB0aGlzLnByZXRleHQgPSB0aGlzLmRlcGVuZGVudFZhbD8uZGlhbF9jb2RlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldERlcGVuZGVudFZhbCh2YWx1ZTogYW55KSB7XHJcbiAgICBsZXQgZGVwZW5kZW50VmFsdWU6IGFueTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICBkZXBlbmRlbnRWYWx1ZSA9IHZhbHVlLmxlbmd0aCA/IHZhbHVlWzBdIDogbnVsbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRlcGVuZGVudFZhbHVlID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGVwZW5kZW50VmFsdWU7XHJcbiAgfVxyXG5cclxuICBjaGVja1ZhbGlkaXR5KGRlZmF1bHRJbnB1dFN0YXRlID0gJ2ZvY3VzJykge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmZvcm1Db250cm9sICYmXHJcbiAgICAgICF0aGlzLmZvcm1Db250cm9sLnZhbGlkICYmXHJcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wudG91Y2hlZCAmJlxyXG4gICAgICAhdGhpcy5mb3JtQ29udHJvbC5wZW5kaW5nXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5pbnB1dFN0YXRlID0gJ2ludmFsaWQnO1xyXG4gICAgICB0aGlzLmlucHV0RXJyb3JUZXh0ID1cclxuICAgICAgICBnZXRWYWxpZGF0aW9uTWVzc2FnZSh0aGlzLmZvcm1Db250cm9sLmVycm9ycywgdGhpcy5wYXJhbXM/LnBsYWNlaG9sZGVyIHx8IHRoaXMuZmllbGQucHJvcHM/LmxhYmVsIHx8ICdJbnB1dCcsIHtcclxuICAgICAgICAgIGZpZWxkOiB0aGlzLmZpZWxkLFxyXG4gICAgICAgICAgbmF0aXZlVmFsaWRhdGlvbk9iamVjdDogdGhpcy5maWVsZC52YWxpZGF0aW9uLFxyXG4gICAgICAgIH0pIHx8IGBpbnZhbGlkICR7dGhpcy5wYXJhbXM/LnBsYWNlaG9sZGVyIHx8IHRoaXMuZmllbGQucHJvcHM/LmxhYmVsIHx8ICdpbnB1dCd9YFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pbnB1dFN0YXRlID0gZGVmYXVsdElucHV0U3RhdGU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkZvY3VzKCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wudmFsaWQpIHRoaXMuaW5wdXRTdGF0ZSA9ICdmb2N1cyc7XHJcbiAgfVxyXG4gIG9uQmx1cigpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuc3VwcHJlc3NPbkJsdXIpIHtcclxuICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgICB0aGlzLmNoZWNrVmFsaWRpdHkoJ2lkbGUnKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN1cHByZXNzT25CbHVyID0gZmFsc2U7XHJcbiAgICB9LCAyMDApO1xyXG4gIH1cclxuXHJcbiAgb25JbnB1dChldmVudDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5wYXJhbXM/LnR5cGUgPT09ICd0ZWwnKSB7XHJcbiAgICAgIHRoaXMuaW5wdXRWYWwgPSB0aGlzLmlucHV0VmFsLnJlcGxhY2UoL1teMC05KCkrXFwtIF0vZywgJycpO1xyXG4gICAgICB0aGlzLmlucHV0VmFsID0gdGhpcy5oeXBoZW5hdGVQaG9uZU51bWJlcigpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucGFyYW1zPy50eXBlID09PSAncGVyY2VudGFnZScpIHtcclxuICAgICAgbGV0IHZhbHVlID0gdGhpcy5pbnB1dFZhbC5yZXBsYWNlKC9bXjAtOS5dL2csICcnKTtcclxuICAgICAgdGhpcy5pbnB1dFZhbCA9IHZhbHVlID8gYCR7dmFsdWV9JWAgOiAnJztcclxuICAgIH1cclxuICAgIHRoaXMuZm9ybUNvbnRyb2w/LnNldFZhbHVlKHRoaXMuaW5wdXRWYWwpO1xyXG4gICAgdGhpcy5jaGVja1ZhbGlkaXR5KCk7XHJcbiAgICAvKmlmICh0aGlzLnBhcmFtcz8uZXZlbnRMaXN0ZW5lcikge1xyXG4gICAgICB0aGlzLnBhcmFtcz8uZXZlbnRMaXN0ZW5lcih7XHJcbiAgICAgICAgdHlwZTogSUlucHV0RXZlbnRUeXBlLklOUFVUX0NIQU5HRSxcclxuICAgICAgICB2YWx1ZTogdGhpcy5pbnB1dFZhbCxcclxuICAgICAgICBmb3JtQ29udHJvbDogdGhpcy5mb3JtQ29udHJvbFxyXG4gICAgICB9IGFzIElJbnB1dEV2ZW50KS50aGVuKHRoaXMub25GaWVsZENhbGxiYWNrLmJpbmQodGhpcykpO1xyXG4gICAgfSovXHJcbiAgfVxyXG5cclxuICBoeXBoZW5hdGVQaG9uZU51bWJlcigpIHtcclxuICAgIGxldCBuZXdTdHIgPSAnJztcclxuICAgIGxldCBpID0gMDtcclxuICAgIGxldCBoeXBoZW5hdGVkQ291bnQgPSAxO1xyXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmlucHV0VmFsLnJlcGxhY2VBbGwoJy0nLCAnJyk7XHJcbiAgICBmb3IgKDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIG5ld1N0ciA9IG5ld1N0ciArIHZhbHVlLmNoYXJBdChpKTtcclxuICAgICAgaWYgKCEoaHlwaGVuYXRlZENvdW50ICUgMykpIHtcclxuICAgICAgICBpZiAoISgoaSArIDEpICUgMTApICYmIGkgKyAxIDwgdmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgICAgICBuZXdTdHIgPSBuZXdTdHIgKyAnLSc7XHJcbiAgICAgICAgICBoeXBoZW5hdGVkQ291bnQrKztcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgISgoaSArIDEgLSBNYXRoLmZsb29yKGh5cGhlbmF0ZWRDb3VudCAvIDMpKSAlIDMpICYmXHJcbiAgICAgICAgaSArIDEgPCB2YWx1ZS5sZW5ndGhcclxuICAgICAgKSB7XHJcbiAgICAgICAgbmV3U3RyID0gbmV3U3RyICsgJy0nO1xyXG4gICAgICAgIGh5cGhlbmF0ZWRDb3VudCsrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG5ld1N0cjtcclxuICB9XHJcblxyXG4gIG9uSW5wdXRGaWVsZENsaWNrKGV2ZW50OiBhbnkgPSAnaW5wdXQnKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIGV2ZW50ID09PSAnaW5wdXQnIHx8XHJcbiAgICAgIGV2ZW50LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ3NhLWlucHV0LWZpZWxkJylcclxuICAgICkge1xyXG4gICAgICB0aGlzLmZvcm1JbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgIGlmICh0aGlzLnBhcmFtcz8udHlwZSAhPT0gJ2VtYWlsJylcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZm9ybUlucHV0Py5uYXRpdmVFbGVtZW50Py5zZXRTZWxlY3Rpb25SYW5nZShcclxuICAgICAgICAgICAgdGhpcy5pbnB1dFZhbC5sZW5ndGgsXHJcbiAgICAgICAgICAgIHRoaXMuaW5wdXRWYWwubGVuZ3RoLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LCAxMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbnB1dEljb25DbGljaygpIHtcclxuICAgIGlmICh0aGlzLnBhcmFtcz8udHlwZSA9PT0gJ3Bhc3N3b3JkJykge1xyXG4gICAgICB0aGlzLnN1cHByZXNzT25CbHVyID0gdHJ1ZTtcclxuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ3Bhc3N3b3JkJykge1xyXG4gICAgICAgIHRoaXMudHlwZSA9ICd0ZXh0JztcclxuICAgICAgICB0aGlzLmljb24ubmFtZSA9ICdleWVPZmYnO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudHlwZSA9ICdwYXNzd29yZCc7XHJcbiAgICAgICAgdGhpcy5pY29uLm5hbWUgPSAnZXllT3V0bGluZWQnO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMub25JbnB1dEZpZWxkQ2xpY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZENoaXAodmFsdWU6IHN0cmluZykge1xyXG4gICAgaWYgKCF0aGlzLmlzTXVsdGlWYWx1ZSB8fCAhdmFsdWUudHJpbSgpKSByZXR1cm47ICBcclxuICAgIGNvbnN0IGNoaXBWYWx1ZSA9IHtcclxuICAgICAgbGFiZWw6IHZhbHVlLnRyaW0oKSxcclxuICAgICAgdmFsdWU6IHZhbHVlLnRyaW0oKSxcclxuICAgICAgcmVtb3ZhYmxlOiB0cnVlXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jaGlwVmFsdWVzLnB1c2goY2hpcFZhbHVlKTsgICAgXHJcbiAgICBjb25zdCBhY3R1YWxWYWx1ZXMgPSBtYXAodGhpcy5jaGlwVmFsdWVzLCAoY2hpcDogYW55KSA9PiBjaGlwLnZhbHVlIHx8IGNoaXAubGFiZWwgfHwgY2hpcCk7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sPy5zZXRWYWx1ZShhY3R1YWxWYWx1ZXMpO1xyXG4gICAgdGhpcy5jdXJyZW50SW5wdXRWYWx1ZSA9ICcnO1xyXG4gICAgdGhpcy5tb2RlbFt0aGlzLmtleSBhcyBzdHJpbmddID0gYWN0dWFsVmFsdWVzO1xyXG4gIH1cclxuICBcclxuICByZW1vdmVDaGlwKGluZGV4OiBudW1iZXIpIHtcclxuICAgIGlmICghdGhpcy5pc011bHRpVmFsdWUpIHJldHVybjsgIFxyXG4gICAgdGhpcy5jaGlwVmFsdWVzLnNwbGljZShpbmRleCwgMSk7ICBcclxuICAgIGNvbnN0IGFjdHVhbFZhbHVlcyA9IG1hcCh0aGlzLmNoaXBWYWx1ZXMsIChjaGlwOiBhbnkpID0+IGNoaXAudmFsdWUgfHwgY2hpcC5sYWJlbCB8fCBjaGlwKTtcclxuICAgIHRoaXMubW9kZWxbdGhpcy5rZXkgYXMgc3RyaW5nXSA9IGFjdHVhbFZhbHVlcztcclxuICB9XHJcblxyXG4gIG9uQ2hpcEtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmICghdGhpcy5pc011bHRpVmFsdWUpIHJldHVybjtcclxuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicgfHwgZXZlbnQua2V5ID09PSAnLCcpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgdGhpcy5hZGRDaGlwKHRoaXMuY3VycmVudElucHV0VmFsdWUpO1xyXG4gICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdCYWNrc3BhY2UnICYmICF0aGlzLmN1cnJlbnRJbnB1dFZhbHVlICYmIHRoaXMuY2hpcFZhbHVlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucmVtb3ZlQ2hpcCh0aGlzLmNoaXBWYWx1ZXMubGVuZ3RoIC0gMSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIG9uQ2hpcElucHV0Q2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmICghdGhpcy5pc011bHRpVmFsdWUpIHJldHVybjtcclxuICAgIHRoaXMuY3VycmVudElucHV0VmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XHJcbiAgfVxyXG5cclxuICBvbkNoaXBCbHVyKCkge1xyXG4gICAgaWYgKCF0aGlzLmlzTXVsdGlWYWx1ZSkgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMuY3VycmVudElucHV0VmFsdWUudHJpbSgpKSB7XHJcbiAgICAgIHRoaXMuYWRkQ2hpcCh0aGlzLmN1cnJlbnRJbnB1dFZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcbiAgLypvbkZpZWxkQ2FsbGJhY2socGFyYW06IElJbnB1dFBhcmFtKSB7XHJcbiAgICB0aGlzLmljb24gPSBwYXJhbS5pY29uIHx8IHRoaXMuaWNvbjtcclxuICAgIHRoaXMuY2hlY2tWYWxpZGl0eSgpO1xyXG4gIH0qL1xyXG5cclxuICBnZXRGb3JtU3VwcG9ydFRleHQoKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtQ29udHJvbC5pbnZhbGlkICYmIHRoaXMuZm9ybUNvbnRyb2wudG91Y2hlZCkge1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIGdldFZhbGlkYXRpb25NZXNzYWdlKHRoaXMuZm9ybUNvbnRyb2wuZXJyb3JzLCB0aGlzLnBhcmFtcz8ucGxhY2Vob2xkZXIgfHwgdGhpcy5maWVsZC5wcm9wcz8ubGFiZWwgfHwgJ0lucHV0Jyx7XHJcbiAgICAgICAgICBmaWVsZDogdGhpcy5maWVsZCxcclxuICAgICAgICAgIG5hdGl2ZVZhbGlkYXRpb25PYmplY3Q6IF9nZXQodGhpcy5maWVsZCwgJ3ZhbGlkYXRpb24nKSxcclxuICAgICAgICB9KSB8fFxyXG4gICAgICAgIGBpbnZhbGlkICR7dGhpcy5wYXJhbXM/LnBsYWNlaG9sZGVyIHx8IHRoaXMuZmllbGQucHJvcHM/LmxhYmVsIHx8ICdpbnB1dCd9YFxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMucGFyYW1zPy5zdXBwb3J0VGV4dCB8fCAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByZWRlZmluZWRWYWxpZGF0b3JzOiBhbnkgPSB7XHJcbiAgICBlbWFpbDogW1ZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgcGFzc3dvcmQ6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgIHRlbDogW1ZhbGlkYXRvcnMucGF0dGVybignXlswLTkgK1xcXFwtKCldKiQnKV0sXHJcbiAgfTtcclxuXHJcbiAgZ2V0TGFiZWxGaWVsZEdhcCgpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMucHJvcHM/LlsnYmlnTGFiZWwnXSkge1xyXG4gICAgICByZXR1cm4gJ3ZhcigtLW1lZGl1bS0yMHB4KSc7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHM/LlsnbGFiZWwnXSkge1xyXG4gICAgICByZXR1cm4gJ3ZhcigtLXNtYWxsLTRweCknO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICcwcHgnOyAvLyBObyBnYXBcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNoaWZ0TGFiZWwoYWN0aW9uOiAnY2xpY2tlZCcgfCAnY2xlYXJlZCcpIHtcclxuICAgIGlmIChhY3Rpb24gPT09ICdjbGlja2VkJykge1xyXG4gICAgICB0aGlzLnN0YXJ0SW5kID0gMDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc3RhcnRJbmQgPSBNYXRoLm1heCgwLCB0aGlzLmNoaXBWYWx1ZXMubGVuZ3RoIC0gdGhpcy5sYWJlbExpbWl0KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUlucHV0SWNvbiB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHNob3c/OiBib29sZWFuO1xyXG4gIGNvbG9yPzogc3RyaW5nO1xyXG4gIHNpemU/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUlucHV0UGFyYW0ge1xyXG4gIHZhbGlkYXRvcnM/OiBhbnlbXTtcclxuICBhc3luY1ZhbGlkYXRvcnM/OiBhbnlbXTtcclxuICBzdXBwb3J0VGV4dD86IHN0cmluZztcclxuICBwbGFjZWhvbGRlcj86IHN0cmluZztcclxuICB0eXBlPzogc3RyaW5nO1xyXG4gIGRlcGVuZGVudD86IHN0cmluZztcclxuICBldmVudExpc3RlbmVyPzogRnVuY3Rpb247XHJcbiAgaWNvbj86IElJbnB1dEljb247XHJcbiAgZXJyb3JzPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcclxuICBjbGFzc05hbWU/OiBzdHJpbmc7XHJcbiAgbXVsdGlWYWx1ZT86IGJvb2xlYW47IC8vIGZvciBtdWx0aS12YWx1ZSBjaGlwIHN1cHBvcnRcclxuICBjaGlwVmFsdWVzPzogYW55W107IC8vIGZvciBtdWx0aS12YWx1ZSBjaGlwIHN1cHBvcnRcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJSW5wdXRFdmVudCB7XHJcbiAgdHlwZTogSUlucHV0RXZlbnRUeXBlO1xyXG4gIHZhbHVlOiBzdHJpbmc7XHJcbiAgY2FsbEJhY2s6IGFueTtcclxuICBmb3JtQ29udHJvbDogRm9ybUNvbnRyb2w7XHJcbn1cclxuZXhwb3J0IGVudW0gSUlucHV0RXZlbnRUeXBlIHtcclxuICBJTlBVVF9DSEFOR0UgPSAnSU5QVVRfQ0hBTkdFJyxcclxuICBTVEFURV9DSEFOR0UgPSAnU1RBVEVfQ0hBTkdFJyxcclxuICBJQ09OX0NMSUNLID0gJ0lDT05fQ0xJQ0snLFxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJzYS1pbnB1dC1jb250YWluZXIge3twcm9wcz8uWydpbnB1dENvbnRhaW5lckNsYXNzJ119fVwiIFtuZ1N0eWxlXT1cInsnZ2FwJzogZ2V0TGFiZWxGaWVsZEdhcCgpfVwiPlxyXG4gICAgQGlmICghIXByb3BzPy5bJ2JpZ0xhYmVsJ10gfHwgISFwcm9wcz8uWydiaWdEZXNjcmlwdGlvbiddKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwic2EtaW5wdXQtYmlnLWxhYmVsLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cImRpc2FibGVkID8gJ2Rpc2FibGVkJyA6ICcnIFwiPlxyXG4gICAgICAgIDxoMiBjbGFzcz1cInNhLWlucHV0LWJpZy1sYWJlbFwiPlxyXG4gICAgICAgICAgICB7e3Byb3BzPy5bJ2JpZ0xhYmVsJ119fVxyXG4gICAgICAgIDwvaDI+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJzYS1pbnB1dC1iaWctZGVzY3JpcHRpb25cIj5cclxuICAgICAgICAgICAge3twcm9wcz8uWydiaWdEZXNjcmlwdGlvbiddfX1cclxuICAgICAgICA8L3A+XHJcbiAgICA8L2Rpdj5cclxuICAgIH1cclxuICAgIEBpZighIXByb3BzPy5bJ2xhYmVsJ10pe1xyXG4gICAgPGRpdiBjbGFzcz1cInNhLWlucHV0LWxhYmVsLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cImRpc2FibGVkID8gJ2Rpc2FibGVkJyA6ICcnIFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYS1pbnB1dC1sYWJlbC10b29sdGlwLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNhLWlucHV0LWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICB7e3Byb3BzPy5bJ2xhYmVsJ119fVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIEBpZighIXByb3BzPy5bJ3Rvb2x0aXAnXSl7XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidG9vbHRpcC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzYS1pY29uIFtpY29uXT1cInByb3BzPy5bJ3Rvb2x0aXBJY29uJ10gfHwgJ2luZm9DaXJjbGVPdXRsaW5lZCdcIiBjdXN0b21DbGFzcz1cImluZm8taWNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwicHJvcHM/LlsndG9vbHRpcCddXCIgbWF0VG9vbHRpcENsYXNzPVwiY3VzdG9tLXRvb2x0aXBcIiBjbGFzcz1cInRvb2x0aXAtaWNvbiBkLWZsZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzaXplXT1cInByb3BzPy5bJ3Rvb2x0aXBJY29uU2l6ZSddIHx8ICcyMCdcIj48L3NhLWljb24+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIEBpZighIXByb3BzPy5bJ2Rlc2NyaXB0aW9uJ10pIHtcclxuICAgICAgICA8cCBjbGFzcz1cInNhLWlucHV0LWRlc2NyaXB0aW9uXCI+XHJcbiAgICAgICAgICAgIHt7cHJvcHM/LlsnZGVzY3JpcHRpb24nXX19XHJcbiAgICAgICAgPC9wPlxyXG4gICAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gICAgPGRpdiBjbGFzcz1cInNhLWlucHV0XCIgW25nQ2xhc3NdPVwiZGlzYWJsZWQgPyAnZGlzYWJsZWQnIDogJycgXCI+XHJcbiAgICAgICAgQGlmKChwcmV0ZXh0IHx8ICghIWlucHV0VmFsPy5sZW5ndGggJiYgKCEhcGFyYW1zPy5wbGFjZWhvbGRlciB8fCAhIXByb3BzPy5wbGFjZWhvbGRlcikpKSAmJiBwcm9wcz8uWydzaG93VGFnJ11cclxuICAgICAgICAhPT0gZmFsc2Upe1xyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2EtaW5wdXQtdGFnXCI+e3twYXJhbXM/LnBsYWNlaG9sZGVyIHx8IHByb3BzPy5wbGFjZWhvbGRlcn19PC9zcGFuPlxyXG4gICAgICAgIH1cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2EtaW5wdXQtZmllbGRcIiBbbmdDbGFzc109XCJmb3JtQ29udHJvbC5pbnZhbGlkICYmIGZvcm1Db250cm9sLnRvdWNoZWQgPyAnaW52YWxpZCcgOiAnaWRsZScgXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uSW5wdXRGaWVsZENsaWNrKCRldmVudClcIj5cclxuICAgICAgICAgICAgQGlmKHByZXRleHQpe1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2EtaW5wdXQtcHJldGV4dFwiPlxyXG4gICAgICAgICAgICAgICAge3twcmV0ZXh0fX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIDwhLS0gTXVsdGktdmFsdWUgY2hpcCBkaXNwbGF5IC0tPlxyXG4gICAgICAgICAgICBAaWYoaXNNdWx0aVZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c2EtY2hpcCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNoaXAgb2YgKGNoaXBWYWx1ZXMgfHwgW10pPy5zbGljZShzdGFydEluZCxzdGFydEluZCtsYWJlbExpbWl0KSBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwiY2hpcD8udmFsdWUgfHwgY2hpcD8ubGFiZWwgfHwgY2hpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cIidyZWd1bGFyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0ZV09XCIncHJpbWFyeSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZmlsbGluZ109XCInZmlsbGVkJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uUG9zaXRpb25dPVwiJ3JpZ2h0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uUGF0aF09XCInLi4vYXNzZXRzL2Nsb3NlQmx1ZU91dGxpbmVkLnN2ZydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAob25DbGlja0V2ZW50KT1cInJlbW92ZUNoaXAoaSlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NhLWNoaXA+XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwic2hpZnRMYWJlbCgnY2xpY2tlZCcpXCIgY2xhc3M9XCJuZy12YWx1ZSBvdmVyZmxvdy1sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGNoaXBWYWx1ZXMgfHwgW10pLmxlbmd0aCA+IChzdGFydEluZCArIGxhYmVsTGltaXQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzYS1jaGlwIFt0ZXh0XT1cIicrJyArICgoY2hpcFZhbHVlcyB8fCBbXSkubGVuZ3RoIC0gKHN0YXJ0SW5kICsgbGFiZWxMaW1pdCkpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInJlZ3VsYXJcIiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGU9XCJwcmltYXJ5XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbGluZz1cImZpbGxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NhLWNoaXA+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIidjaGlwLWlucHV0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0IFt0eXBlXT1cInR5cGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmllbGQucHJvcHMuZGlzYWJsZWQgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY2hpcFZhbHVlcy5sZW5ndGggPT09IDAgPyAocHJvcHM/LnBsYWNlaG9sZGVyIHx8IHBhcmFtcz8ucGxhY2Vob2xkZXIgfHwgJycpIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25DaGlwQmx1cigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cIm9uQ2hpcElucHV0Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbkNoaXBLZXlEb3duKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImN1cnJlbnRJbnB1dFZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgI2Zvcm1JbnB1dCAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgPCEtLSBTdGFuZGFyZCBzaW5nbGUtdmFsdWUgaW5wdXQgKGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpIC0tPlxyXG4gICAgICAgICAgICAgICAgQGlmKCEhcHJvcHM/LlsncHJlZml4J10pe1xyXG4gICAgICAgICAgICAgICAgPHNwYW4gbWF0UHJlZml4Pnt7cHJvcHM/LlsncHJlZml4J119fSZuYnNwOzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIighIWlucHV0VmFsICYmIChwYXJhbXM/LnR5cGUgPT09ICdwYXNzd29yZCcgfHwgcHJvcHM/LnR5cGUgPT09ICdwYXNzd29yZCcpICYmIGljb24ubmFtZSAhPT0gJ2V5ZU9mZicpID8gJ21hc2tlZCcgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXQgW3R5cGVdPVwicHJvcHM/LnR5cGUgfHwgdHlwZVwiIHZhbHVlPVwiXCIgW3BhdHRlcm5dPVwidHlwZT09PSd0ZWwnID8gJ1swLTldJyA6ICcnIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpZWxkLnByb3BzLmRpc2FibGVkIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiIXByZXRleHQgJiYgcHJvcHM/LnBsYWNlaG9sZGVyIHx8IHBhcmFtcz8ucGxhY2Vob2xkZXIgfHwgJydcIiAoZm9jdXMpPVwib25Gb2N1cygpXCJcclxuICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiIChpbnB1dCk9XCJvbklucHV0KCRldmVudClcIiBbKG5nTW9kZWwpXT1cImlucHV0VmFsXCIgI2Zvcm1JbnB1dCAvPlxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBAaWYocGFyYW1zPy50eXBlID09PSAncGFzc3dvcmQnKXtcclxuICAgICAgICAgICAgPHNhLWljb24gY2xhc3M9XCJmbGV4XCIgaWNvbj1cImV5ZU91dGxpbmVkXCIgW3NpemVdPVwiaWNvbi5zaXplIHx8ICcyNCdcIiAoY2xpY2spPVwiaW5wdXRJY29uQ2xpY2soKVwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCIhaWNvbi5uYW1lIHx8IGljb24ubmFtZSA9PT0gJ2V5ZU91dGxpbmVkJyA/ICcnIDogJ2hpZGUnXCI+PC9zYS1pY29uPlxyXG4gICAgICAgICAgICA8c2EtaWNvbiBjbGFzcz1cImZsZXhcIiBpY29uPVwiZXllT2ZmXCIgW3NpemVdPVwiaWNvbi5zaXplIHx8ICcyNCdcIiAoY2xpY2spPVwiaW5wdXRJY29uQ2xpY2soKVwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJpY29uLm5hbWUgPT09ICdleWVPZmYnID8gJycgOiAnaGlkZSdcIj48L3NhLWljb24+XHJcbiAgICAgICAgICAgIH1AZWxzZSBpZihwYXJhbXM/LnR5cGUgPT09ICdlbWFpbCcgJiYgaWNvbi5zaG93KXtcclxuICAgICAgICAgICAgPHNhLWljb24gY2xhc3M9XCJmbGV4XCIgW2ljb25dPVwiaWNvbi5uYW1lIHx8ICdjaGVja0NpcmNsZU91dGxpbmVkJ1wiIFtzaXplXT1cImljb24uc2l6ZSB8fCAnMjQnXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJpbnB1dEljb25DbGljaygpXCIgW25nQ2xhc3NdPVwic2hvd0VtYWlsSWNvbiA/ICcnIDogJ2hpZGUnXCI+PC9zYS1pY29uPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIEBlbHNlIGlmKGljb24/Lm5hbWUpe1xyXG4gICAgICAgICAgICA8c2EtaWNvbiBjbGFzcz1cImZsZXhcIiBbaWNvbl09XCJpY29uLm5hbWVcIiBbc2l6ZV09XCJpY29uPy5zaXplIHx8ICcyNCdcIiBbY29sb3JdPVwiaWNvbj8uY29sb3IgfHwgJydcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiaWNvbj8uc2hvdyA/ICcnIDogJ2hpZGUnXCI+PC9zYS1pY29uPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgQGlmKCghZm9ybUNvbnRyb2wudmFsaWQpIHx8IChwYXJhbXM/LnN1cHBvcnRUZXh0KSl7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdXBwb3J0LWxhYmVsIHt7Zm9ybUNvbnRyb2wuaW52YWxpZCAmJiBmb3JtQ29udHJvbC50b3VjaGVkID8gcGFyYW1zPy5jbGFzc05hbWUgOiAnJ319XCIgW25nQ2xhc3NdPVwiW1xyXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2wuaW52YWxpZCAmJiBmb3JtQ29udHJvbC50b3VjaGVkID8gJ2ludmFsaWQnIDogJ2lkbGUnXHJcbiAgICAgICAgICAgICAgXVwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSB7eyFmb3JtQ29udHJvbC52YWxpZCA/IGlucHV0RXJyb3JUZXh0IDogcGFyYW1zLnN1cHBvcnRUZXh0fX0gLS0+XHJcbiAgICAgICAgICAgICAgICB7e2dldEZvcm1TdXBwb3J0VGV4dCgpfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|
|
322
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2Zvcm0taW5wdXQvZm9ybS1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2Zvcm0taW5wdXQvZm9ybS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUdMLFdBQVcsRUFDWCxtQkFBbUIsRUFDbkIsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQW1CLE1BQU0sa0JBQWtCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxvQkFBb0IsR0FFckIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxHQUFHLElBQUksSUFBSSxFQUFFLEdBQUcsSUFBSSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7OztBQWdCN0QsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFNBQTBCO0lBK0JoRTtRQUNFLEtBQUssRUFBRSxDQUFDO1FBekJWLGVBQVUsR0FBRyxNQUFNLENBQUM7UUFDcEIsYUFBUSxHQUFHLEVBQUUs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LGdCQUFnQiw2VEFDaEIsY0FBYzs7MkZBS0wsa0JBQWtCO2tCQWY5QixTQUFTOytCQUNFLFVBQVUsY0FDUixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsY0FBYztxQkFDZjt3REFLdUIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUVQLElBQUk7c0JBQWxCLEtBQUs7dUJBQUMsTUFBTTtnQkFNSixNQUFNO3NCQUFkLEtBQUs7O0FBK1VSLE1BQU0sQ0FBTixJQUFZLGVBSVg7QUFKRCxXQUFZLGVBQWU7SUFDekIsZ0RBQTZCLENBQUE7SUFDN0IsZ0RBQTZCLENBQUE7SUFDN0IsNENBQXlCLENBQUE7QUFDM0IsQ0FBQyxFQUpXLGVBQWUsS0FBZixlQUFlLFFBSTFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIEZvcm1Db250cm9sLFxyXG4gIEZvcm1zTW9kdWxlLFxyXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgVmFsaWRhdG9ycyxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZvcm1seU1vZHVsZSB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xyXG5pbXBvcnQgeyBGaWVsZFR5cGUsIEZpZWxkVHlwZUNvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xyXG5pbXBvcnQgeyBOZ1NlbGVjdE1vZHVsZSB9IGZyb20gJ0BuZy1zZWxlY3Qvbmctc2VsZWN0JztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBnZXRWYWxpZGF0aW9uTWVzc2FnZSxcclxuICBwaG9uZU51bWJlclZhbGlkYXRvcixcclxufSBmcm9tICcuLi8uLi91dGlscy92YWxpZGF0b3JzJztcclxuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2ljb24vaWNvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDaGlwc0NvbXBvbmVudCB9IGZyb20gJy4uL2NoaXBzL2NoaXBzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IGdldCBhcyBfZ2V0LCBzZXQgYXMgX3NldCwgbWFwIH0gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NhLWlucHV0JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIEZvcm1seU1vZHVsZSxcclxuICAgIEljb25Db21wb25lbnQsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgQ2hpcHNDb21wb25lbnRcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWlucHV0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vZm9ybS1pbnB1dC5jb21wb25lbnQuY3NzJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1JbnB1dENvbXBvbmVudCBleHRlbmRzIEZpZWxkVHlwZTxGaWVsZFR5cGVDb25maWc+IHtcclxuICBAVmlld0NoaWxkKCdmb3JtSW5wdXQnKSBmb3JtSW5wdXQhOiBFbGVtZW50UmVmO1xyXG5cclxuICBASW5wdXQoJ2ljb24nKSBpY29uOiBJSW5wdXRJY29uO1xyXG5cclxuICBwcmV0ZXh0OiBzdHJpbmc7XHJcblxyXG4gIGlucHV0U3RhdGUgPSAnaWRsZSc7XHJcbiAgaW5wdXRWYWwgPSAnJztcclxuICBASW5wdXQoKSBwYXJhbXM6IElJbnB1dFBhcmFtIHwgbnVsbDtcclxuICBkZXBlbmRlbnQ6IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT4gfCBudWxsO1xyXG4gIGRlcGVuZGVudFZhbDogYW55ID0gbnVsbDtcclxuICAvLyBkeW5hbWljSWNvbjogRHluYW1pY0ljb24gfCBudWxsO1xyXG4gIC8vIGljb246IElJbnB1dEljb24gfCBudWxsO1xyXG5cclxuICB0eXBlOiBzdHJpbmcgPSAnJztcclxuICB2YWxpZGF0b3JzOiBhbnlbXTtcclxuICBhc3luY1ZhbGlkYXRvcnM6IGFueVtdO1xyXG5cclxuICBpbnB1dEVycm9yVGV4dDogc3RyaW5nID0gJ2ludmFsaWQgaW5wdXQnO1xyXG5cclxuICBzaG93RW1haWxJY29uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjaGlwVmFsdWVzOiBhbnlbXSA9IFtdO1xyXG4gIGlzTXVsdGlWYWx1ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGN1cnJlbnRJbnB1dFZhbHVlOiBzdHJpbmcgPSAnJztcclxuICBzdGFydEluZDogbnVtYmVyID0gMDtcclxuICBsYWJlbExpbWl0OiBudW1iZXIgPSAxO1xyXG5cclxuICBwcml2YXRlIHN1cHByZXNzT25CbHVyID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5pbnB1dFZhbCA9IF9nZXQodGhpcy5maWVsZC5wcm9wcywgJ3ZhbHVlJywgX2dldCh0aGlzLm1vZGVsLCBbdGhpcy5rZXkgYXMgc3RyaW5nXSkpIHx8ICcnO1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IHRoaXMuZmllbGQucHJvcHMuZGlzYWJsZWQgfHwgZmFsc2U7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sPy5zZXRWYWx1ZSh0aGlzLmlucHV0VmFsKTtcclxuXHJcbiAgICB0aGlzLnBhcmFtcyA9IHRoaXMucGFyYW1zIHx8IHRoaXMuZmllbGQucHJvcHNbJ3BhcmFtcyddO1xyXG4gICAgdGhpcy5pY29uID0gdGhpcy5pY29uIHx8IHRoaXMuZmllbGQucHJvcHNbJ2ljb24nXSB8fCB7fTtcclxuICAgIHRoaXMudHlwZSA9IHRoaXMucGFyYW1zPy50eXBlIHx8ICcnO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWwpID0+IHtcclxuICAgICAgX3NldCh0aGlzLmZvcm1JbnB1dCwgJ25hdGl2ZUVsZW1lbnQudmFsdWUnLCB2YWwpO1xyXG4gICAgICAvLyBIYW5kbGUgbXVsdGktdmFsdWUgY2hpcCB1cGRhdGVzXHJcbiAgICAgIGlmICh0aGlzLmlzTXVsdGlWYWx1ZSAmJiBBcnJheS5pc0FycmF5KHZhbCkpIHtcclxuICAgICAgICB0aGlzLmNoaXBWYWx1ZXMgPSB2YWw7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIEluaXRpYWxpemUgbXVsdGktdmFsdWUgbW9kZSBpZiBzcGVjaWZpZWRcclxuICAgIGlmICh0aGlzLnBhcmFtcz8udHlwZSA9PT0gJ211bHRpLXZhbHVlJyB8fCB0aGlzLnBhcmFtcz8ubXVsdGlWYWx1ZSkge1xyXG4gICAgICB0aGlzLmlzTXVsdGlWYWx1ZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hpcFZhbHVlcyA9IHRoaXMubW9kZWxbdGhpcy5rZXkgYXMgc3RyaW5nXSB8fCB0aGlzLnBhcmFtcz8uY2hpcFZhbHVlcyB8fCBbXTtcclxuICAgICAgdGhpcy5jdXJyZW50SW5wdXRWYWx1ZSA9ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHRoaXMuZHluYW1pY0ljb24gPSB0aGlzLmZpZWxkLnByb3BzWydkeW5hbWljSWNvbiddO1xyXG4gICAgdGhpcy5zZXRWYWxpZGF0b3JzKCk7XHJcbiAgICB0aGlzLnNldERlcGVuZGVudHMoKTtcclxuXHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xyXG4gICAgICBpZiAodGhpcy50eXBlID09PSAnZW1haWwnKSB7XHJcbiAgICAgICAgaWYgKCEhdGhpcy5pbnB1dFZhbCAmJiAhdGhpcy5mb3JtQ29udHJvbC50b3VjaGVkKSB7XHJcbiAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zaG93RW1haWxJY29uID1cclxuICAgICAgICAgIHN0YXRlID09PSAnVkFMSUQnIHx8XHJcbiAgICAgICAgICAoc3RhdGUgPT09ICdJTlZBTElEJyAmJlxyXG4gICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLmhhc0Vycm9yKCdpbnZhbGlkJykgJiZcclxuICAgICAgICAgICAgISF0aGlzLmZvcm1Db250cm9sLnZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbCkgPT4ge1xyXG4gICAgICBfc2V0KHRoaXMuZm9ybUlucHV0LCAnbmF0aXZlRWxlbWVudC52YWx1ZScsIHZhbCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldFZhbGlkYXRvcnMoKSB7XHJcbiAgICB0aGlzLnZhbGlkYXRvcnMgPSB0aGlzLnBhcmFtcz8udmFsaWRhdG9ycyB8fCB0aGlzLnByZWRlZmluZWRWYWxpZGF0b3JzW3RoaXMudHlwZV0gfHwgW107XHJcbiAgICB0aGlzLmFzeW5jVmFsaWRhdG9ycyA9IHRoaXMucGFyYW1zPy5hc3luY1ZhbGlkYXRvcnMgfHwgW107XHJcbiAgICBpZighX2dldCh0aGlzLmZpZWxkLCAndmFsaWRhdG9ycy52YWxpZGF0aW9uJywgbnVsbCkpIHtcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbD8uc2V0VmFsaWRhdG9ycyhbXHJcbiAgICAgICAgLi4uKHRoaXMudHlwZSA/IHRoaXMucHJlZGVmaW5lZFZhbGlkYXRvcnNbdGhpcy50eXBlXSB8fCBbXSA6IFtdKSxcclxuICAgICAgICAuLi4odGhpcy52YWxpZGF0b3JzKSxcclxuICAgICAgXSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5hc3luY1ZhbGlkYXRvcnMpIHtcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbD8uc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMuYXN5bmNWYWxpZGF0b3JzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICBBc3N1bWluZyBkZXBlbmRlbnQgZmllbGQgaXMgYSBzaW5nbGUgc2VsZWN0IGRyb3Bkb3duXHJcbiAgKi9cclxuICBzZXREZXBlbmRlbnRzKCkge1xyXG4gICAgaWYgKHRoaXMucGFyYW1zPy5kZXBlbmRlbnQpIHtcclxuICAgICAgdGhpcy5kZXBlbmRlbnQgPSB0aGlzLmZvcm0uZ2V0KFt0aGlzLnBhcmFtcz8uZGVwZW5kZW50XSk7XHJcblxyXG4gICAgICB0aGlzLmRlcGVuZGVudFZhbCA9IHRoaXMuZ2V0RGVwZW5kZW50VmFsKF9nZXQodGhpcy5kZXBlbmRlbnQsICd2YWx1ZScpKTtcclxuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ3RlbCcpIHtcclxuICAgICAgICB0aGlzLnByZXRleHQgPSB0aGlzLmRlcGVuZGVudFZhbD8uZGlhbF9jb2RlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmRlcGVuZGVudD8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kZXBlbmRlbnRWYWwgPSB0aGlzLmdldERlcGVuZGVudFZhbCh2YWwpO1xyXG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wucmVzZXQoKTtcclxuICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuaW5wdXRWYWwpO1xyXG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT09ICd0ZWwnKSB7XHJcbiAgICAgICAgICB0aGlzLnByZXRleHQgPSB0aGlzLmRlcGVuZGVudFZhbD8uZGlhbF9jb2RlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldERlcGVuZGVudFZhbCh2YWx1ZTogYW55KSB7XHJcbiAgICBsZXQgZGVwZW5kZW50VmFsdWU6IGFueTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICBkZXBlbmRlbnRWYWx1ZSA9IHZhbHVlLmxlbmd0aCA/IHZhbHVlWzBdIDogbnVsbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRlcGVuZGVudFZhbHVlID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGVwZW5kZW50VmFsdWU7XHJcbiAgfVxyXG5cclxuICBjaGVja1ZhbGlkaXR5KGRlZmF1bHRJbnB1dFN0YXRlID0gJ2ZvY3VzJykge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmZvcm1Db250cm9sICYmXHJcbiAgICAgICF0aGlzLmZvcm1Db250cm9sLnZhbGlkICYmXHJcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wudG91Y2hlZCAmJlxyXG4gICAgICAhdGhpcy5mb3JtQ29udHJvbC5wZW5kaW5nXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5pbnB1dFN0YXRlID0gJ2ludmFsaWQnO1xyXG4gICAgICB0aGlzLmlucHV0RXJyb3JUZXh0ID1cclxuICAgICAgICBnZXRWYWxpZGF0aW9uTWVzc2FnZSh0aGlzLmZvcm1Db250cm9sLmVycm9ycywgdGhpcy5wYXJhbXM/LnBsYWNlaG9sZGVyIHx8IHRoaXMuZmllbGQucHJvcHM/LmxhYmVsIHx8ICdJbnB1dCcsIHtcclxuICAgICAgICAgIGZpZWxkOiB0aGlzLmZpZWxkLFxyXG4gICAgICAgICAgbmF0aXZlVmFsaWRhdGlvbk9iamVjdDogdGhpcy5maWVsZC52YWxpZGF0aW9uLFxyXG4gICAgICAgIH0pIHx8IGBpbnZhbGlkICR7dGhpcy5wYXJhbXM/LnBsYWNlaG9sZGVyIHx8IHRoaXMuZmllbGQucHJvcHM/LmxhYmVsIHx8ICdpbnB1dCd9YFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pbnB1dFN0YXRlID0gZGVmYXVsdElucHV0U3RhdGU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkZvY3VzKCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wudmFsaWQpIHRoaXMuaW5wdXRTdGF0ZSA9ICdmb2N1cyc7XHJcbiAgfVxyXG4gIG9uQmx1cigpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuc3VwcHJlc3NPbkJsdXIpIHtcclxuICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgICB0aGlzLmNoZWNrVmFsaWRpdHkoJ2lkbGUnKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN1cHByZXNzT25CbHVyID0gZmFsc2U7XHJcbiAgICB9LCAyMDApO1xyXG4gIH1cclxuXHJcbiAgb25JbnB1dChldmVudDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5wYXJhbXM/LnR5cGUgPT09ICd0ZWwnKSB7XHJcbiAgICAgIHRoaXMuaW5wdXRWYWwgPSB0aGlzLmlucHV0VmFsLnJlcGxhY2UoL1teMC05KCkrXFwtIF0vZywgJycpO1xyXG4gICAgICB0aGlzLmlucHV0VmFsID0gdGhpcy5oeXBoZW5hdGVQaG9uZU51bWJlcigpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucGFyYW1zPy50eXBlID09PSAncGVyY2VudGFnZScpIHtcclxuICAgICAgbGV0IHZhbHVlID0gdGhpcy5pbnB1dFZhbC5yZXBsYWNlKC9bXjAtOS5dL2csICcnKTtcclxuICAgICAgdGhpcy5pbnB1dFZhbCA9IHZhbHVlID8gYCR7dmFsdWV9JWAgOiAnJztcclxuICAgIH1cclxuICAgIHRoaXMuZm9ybUNvbnRyb2w/LnNldFZhbHVlKHRoaXMuaW5wdXRWYWwpO1xyXG4gICAgdGhpcy5jaGVja1ZhbGlkaXR5KCk7XHJcbiAgICAvKmlmICh0aGlzLnBhcmFtcz8uZXZlbnRMaXN0ZW5lcikge1xyXG4gICAgICB0aGlzLnBhcmFtcz8uZXZlbnRMaXN0ZW5lcih7XHJcbiAgICAgICAgdHlwZTogSUlucHV0RXZlbnRUeXBlLklOUFVUX0NIQU5HRSxcclxuICAgICAgICB2YWx1ZTogdGhpcy5pbnB1dFZhbCxcclxuICAgICAgICBmb3JtQ29udHJvbDogdGhpcy5mb3JtQ29udHJvbFxyXG4gICAgICB9IGFzIElJbnB1dEV2ZW50KS50aGVuKHRoaXMub25GaWVsZENhbGxiYWNrLmJpbmQodGhpcykpO1xyXG4gICAgfSovXHJcbiAgfVxyXG5cclxuICBoeXBoZW5hdGVQaG9uZU51bWJlcigpIHtcclxuICAgIGxldCBuZXdTdHIgPSAnJztcclxuICAgIGxldCBpID0gMDtcclxuICAgIGxldCBoeXBoZW5hdGVkQ291bnQgPSAxO1xyXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmlucHV0VmFsLnJlcGxhY2VBbGwoJy0nLCAnJyk7XHJcbiAgICBmb3IgKDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIG5ld1N0ciA9IG5ld1N0ciArIHZhbHVlLmNoYXJBdChpKTtcclxuICAgICAgaWYgKCEoaHlwaGVuYXRlZENvdW50ICUgMykpIHtcclxuICAgICAgICBpZiAoISgoaSArIDEpICUgMTApICYmIGkgKyAxIDwgdmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgICAgICBuZXdTdHIgPSBuZXdTdHIgKyAnLSc7XHJcbiAgICAgICAgICBoeXBoZW5hdGVkQ291bnQrKztcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgISgoaSArIDEgLSBNYXRoLmZsb29yKGh5cGhlbmF0ZWRDb3VudCAvIDMpKSAlIDMpICYmXHJcbiAgICAgICAgaSArIDEgPCB2YWx1ZS5sZW5ndGhcclxuICAgICAgKSB7XHJcbiAgICAgICAgbmV3U3RyID0gbmV3U3RyICsgJy0nO1xyXG4gICAgICAgIGh5cGhlbmF0ZWRDb3VudCsrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG5ld1N0cjtcclxuICB9XHJcblxyXG4gIG9uSW5wdXRGaWVsZENsaWNrKGV2ZW50OiBhbnkgPSAnaW5wdXQnKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIGV2ZW50ID09PSAnaW5wdXQnIHx8XHJcbiAgICAgIGV2ZW50LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ3NhLWlucHV0LWZpZWxkJylcclxuICAgICkge1xyXG4gICAgICB0aGlzLmZvcm1JbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgIGlmICh0aGlzLnBhcmFtcz8udHlwZSAhPT0gJ2VtYWlsJylcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZm9ybUlucHV0Py5uYXRpdmVFbGVtZW50Py5zZXRTZWxlY3Rpb25SYW5nZShcclxuICAgICAgICAgICAgdGhpcy5pbnB1dFZhbC5sZW5ndGgsXHJcbiAgICAgICAgICAgIHRoaXMuaW5wdXRWYWwubGVuZ3RoLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LCAxMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbnB1dEljb25DbGljaygpIHtcclxuICAgIGlmICh0aGlzLnBhcmFtcz8udHlwZSA9PT0gJ3Bhc3N3b3JkJykge1xyXG4gICAgICB0aGlzLnN1cHByZXNzT25CbHVyID0gdHJ1ZTtcclxuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ3Bhc3N3b3JkJykge1xyXG4gICAgICAgIHRoaXMudHlwZSA9ICd0ZXh0JztcclxuICAgICAgICB0aGlzLmljb24ubmFtZSA9ICdleWVPZmYnO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudHlwZSA9ICdwYXNzd29yZCc7XHJcbiAgICAgICAgdGhpcy5pY29uLm5hbWUgPSAnZXllT3V0bGluZWQnO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMub25JbnB1dEZpZWxkQ2xpY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZENoaXAodmFsdWU6IHN0cmluZykge1xyXG4gICAgaWYgKCF0aGlzLmlzTXVsdGlWYWx1ZSB8fCAhdmFsdWUudHJpbSgpKSByZXR1cm47ICBcclxuICAgIGNvbnN0IGNoaXBWYWx1ZSA9IHtcclxuICAgICAgbGFiZWw6IHZhbHVlLnRyaW0oKSxcclxuICAgICAgdmFsdWU6IHZhbHVlLnRyaW0oKSxcclxuICAgICAgcmVtb3ZhYmxlOiB0cnVlXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jaGlwVmFsdWVzLnB1c2goY2hpcFZhbHVlKTsgICAgXHJcbiAgICBjb25zdCBhY3R1YWxWYWx1ZXMgPSBtYXAodGhpcy5jaGlwVmFsdWVzLCAoY2hpcDogYW55KSA9PiBjaGlwLnZhbHVlIHx8IGNoaXAubGFiZWwgfHwgY2hpcCk7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sPy5zZXRWYWx1ZShhY3R1YWxWYWx1ZXMpO1xyXG4gICAgdGhpcy5jdXJyZW50SW5wdXRWYWx1ZSA9ICcnO1xyXG4gICAgdGhpcy5tb2RlbFt0aGlzLmtleSBhcyBzdHJpbmddID0gYWN0dWFsVmFsdWVzO1xyXG4gIH1cclxuICBcclxuICByZW1vdmVDaGlwKGluZGV4OiBudW1iZXIpIHtcclxuICAgIGlmICghdGhpcy5pc011bHRpVmFsdWUpIHJldHVybjsgIFxyXG4gICAgdGhpcy5jaGlwVmFsdWVzLnNwbGljZShpbmRleCwgMSk7ICBcclxuICAgIGNvbnN0IGFjdHVhbFZhbHVlcyA9IG1hcCh0aGlzLmNoaXBWYWx1ZXMsIChjaGlwOiBhbnkpID0+IGNoaXAudmFsdWUgfHwgY2hpcC5sYWJlbCB8fCBjaGlwKTtcclxuICAgIHRoaXMubW9kZWxbdGhpcy5rZXkgYXMgc3RyaW5nXSA9IGFjdHVhbFZhbHVlcztcclxuICB9XHJcblxyXG4gIG9uQ2hpcEtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmICghdGhpcy5pc011bHRpVmFsdWUpIHJldHVybjtcclxuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicgfHwgZXZlbnQua2V5ID09PSAnLCcpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgdGhpcy5hZGRDaGlwKHRoaXMuY3VycmVudElucHV0VmFsdWUpO1xyXG4gICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdCYWNrc3BhY2UnICYmICF0aGlzLmN1cnJlbnRJbnB1dFZhbHVlICYmIHRoaXMuY2hpcFZhbHVlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucmVtb3ZlQ2hpcCh0aGlzLmNoaXBWYWx1ZXMubGVuZ3RoIC0gMSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIG9uQ2hpcElucHV0Q2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmICghdGhpcy5pc011bHRpVmFsdWUpIHJldHVybjtcclxuICAgIHRoaXMuY3VycmVudElucHV0VmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XHJcbiAgfVxyXG5cclxuICBvbkNoaXBCbHVyKCkge1xyXG4gICAgaWYgKCF0aGlzLmlzTXVsdGlWYWx1ZSkgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMuY3VycmVudElucHV0VmFsdWUudHJpbSgpKSB7XHJcbiAgICAgIHRoaXMuYWRkQ2hpcCh0aGlzLmN1cnJlbnRJbnB1dFZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcbiAgLypvbkZpZWxkQ2FsbGJhY2socGFyYW06IElJbnB1dFBhcmFtKSB7XHJcbiAgICB0aGlzLmljb24gPSBwYXJhbS5pY29uIHx8IHRoaXMuaWNvbjtcclxuICAgIHRoaXMuY2hlY2tWYWxpZGl0eSgpO1xyXG4gIH0qL1xyXG5cclxuICBnZXRGb3JtU3VwcG9ydFRleHQoKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtQ29udHJvbC5pbnZhbGlkICYmIHRoaXMuZm9ybUNvbnRyb2wudG91Y2hlZCkge1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIGdldFZhbGlkYXRpb25NZXNzYWdlKHRoaXMuZm9ybUNvbnRyb2wuZXJyb3JzLCB0aGlzLnBhcmFtcz8ucGxhY2Vob2xkZXIgfHwgdGhpcy5maWVsZC5wcm9wcz8ubGFiZWwgfHwgJ0lucHV0Jyx7XHJcbiAgICAgICAgICBmaWVsZDogdGhpcy5maWVsZCxcclxuICAgICAgICAgIG5hdGl2ZVZhbGlkYXRpb25PYmplY3Q6IF9nZXQodGhpcy5maWVsZCwgJ3ZhbGlkYXRpb24nKSxcclxuICAgICAgICB9KSB8fFxyXG4gICAgICAgIGBpbnZhbGlkICR7dGhpcy5wYXJhbXM/LnBsYWNlaG9sZGVyIHx8IHRoaXMuZmllbGQucHJvcHM/LmxhYmVsIHx8ICdpbnB1dCd9YFxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMucGFyYW1zPy5zdXBwb3J0VGV4dCB8fCAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByZWRlZmluZWRWYWxpZGF0b3JzOiBhbnkgPSB7XHJcbiAgICBlbWFpbDogW1ZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgcGFzc3dvcmQ6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgIHRlbDogW1ZhbGlkYXRvcnMucGF0dGVybignXlswLTkgK1xcXFwtKCldKiQnKV0sXHJcbiAgfTtcclxuXHJcbiAgZ2V0TGFiZWxGaWVsZEdhcCgpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMucHJvcHM/LlsnYmlnTGFiZWwnXSkge1xyXG4gICAgICByZXR1cm4gJ3ZhcigtLW1lZGl1bS0yMHB4KSc7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHM/LlsnbGFiZWwnXSkge1xyXG4gICAgICByZXR1cm4gJ3ZhcigtLXNtYWxsLTRweCknO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICcwcHgnOyAvLyBObyBnYXBcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNoaWZ0TGFiZWwoYWN0aW9uOiAnY2xpY2tlZCcgfCAnY2xlYXJlZCcpIHtcclxuICAgIGlmIChhY3Rpb24gPT09ICdjbGlja2VkJykge1xyXG4gICAgICB0aGlzLnN0YXJ0SW5kID0gMDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc3RhcnRJbmQgPSBNYXRoLm1heCgwLCB0aGlzLmNoaXBWYWx1ZXMubGVuZ3RoIC0gdGhpcy5sYWJlbExpbWl0KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUlucHV0SWNvbiB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHNob3c/OiBib29sZWFuO1xyXG4gIGNvbG9yPzogc3RyaW5nO1xyXG4gIHNpemU/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUlucHV0UGFyYW0ge1xyXG4gIHZhbGlkYXRvcnM/OiBhbnlbXTtcclxuICBhc3luY1ZhbGlkYXRvcnM/OiBhbnlbXTtcclxuICBzdXBwb3J0VGV4dD86IHN0cmluZztcclxuICBwbGFjZWhvbGRlcj86IHN0cmluZztcclxuICB0eXBlPzogc3RyaW5nO1xyXG4gIGRlcGVuZGVudD86IHN0cmluZztcclxuICBldmVudExpc3RlbmVyPzogRnVuY3Rpb247XHJcbiAgaWNvbj86IElJbnB1dEljb247XHJcbiAgZXJyb3JzPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcclxuICBjbGFzc05hbWU/OiBzdHJpbmc7XHJcbiAgbXVsdGlWYWx1ZT86IGJvb2xlYW47IC8vIGZvciBtdWx0aS12YWx1ZSBjaGlwIHN1cHBvcnRcclxuICBjaGlwVmFsdWVzPzogYW55W107IC8vIGZvciBtdWx0aS12YWx1ZSBjaGlwIHN1cHBvcnRcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJSW5wdXRFdmVudCB7XHJcbiAgdHlwZTogSUlucHV0RXZlbnRUeXBlO1xyXG4gIHZhbHVlOiBzdHJpbmc7XHJcbiAgY2FsbEJhY2s6IGFueTtcclxuICBmb3JtQ29udHJvbDogRm9ybUNvbnRyb2w7XHJcbn1cclxuZXhwb3J0IGVudW0gSUlucHV0RXZlbnRUeXBlIHtcclxuICBJTlBVVF9DSEFOR0UgPSAnSU5QVVRfQ0hBTkdFJyxcclxuICBTVEFURV9DSEFOR0UgPSAnU1RBVEVfQ0hBTkdFJyxcclxuICBJQ09OX0NMSUNLID0gJ0lDT05fQ0xJQ0snLFxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJzYS1pbnB1dC1jb250YWluZXIge3twcm9wcz8uWydpbnB1dENvbnRhaW5lckNsYXNzJ119fVwiIFtuZ1N0eWxlXT1cInsnZ2FwJzogZ2V0TGFiZWxGaWVsZEdhcCgpfVwiPlxyXG4gICAgQGlmICghIXByb3BzPy5bJ2JpZ0xhYmVsJ10gfHwgISFwcm9wcz8uWydiaWdEZXNjcmlwdGlvbiddKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwic2EtaW5wdXQtYmlnLWxhYmVsLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cImRpc2FibGVkID8gJ2Rpc2FibGVkJyA6ICcnIFwiPlxyXG4gICAgICAgIDxoMiBjbGFzcz1cInNhLWlucHV0LWJpZy1sYWJlbFwiPlxyXG4gICAgICAgICAgICB7e3Byb3BzPy5bJ2JpZ0xhYmVsJ119fVxyXG4gICAgICAgIDwvaDI+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJzYS1pbnB1dC1iaWctZGVzY3JpcHRpb25cIj5cclxuICAgICAgICAgICAge3twcm9wcz8uWydiaWdEZXNjcmlwdGlvbiddfX1cclxuICAgICAgICA8L3A+XHJcbiAgICA8L2Rpdj5cclxuICAgIH1cclxuICAgIEBpZighIXByb3BzPy5bJ2xhYmVsJ10pe1xyXG4gICAgPGRpdiBjbGFzcz1cInNhLWlucHV0LWxhYmVsLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cImRpc2FibGVkID8gJ2Rpc2FibGVkJyA6ICcnIFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYS1pbnB1dC1sYWJlbC10b29sdGlwLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNhLWlucHV0LWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICB7e3Byb3BzPy5bJ2xhYmVsJ119fVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIEBpZighIXByb3BzPy5bJ3Rvb2x0aXAnXSl7XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidG9vbHRpcC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzYS1pY29uIFtpY29uXT1cInByb3BzPy5bJ3Rvb2x0aXBJY29uJ10gfHwgJ2luZm9DaXJjbGVPdXRsaW5lZCdcIiBjdXN0b21DbGFzcz1cImluZm8taWNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwicHJvcHM/LlsndG9vbHRpcCddXCIgbWF0VG9vbHRpcENsYXNzPVwiY3VzdG9tLXRvb2x0aXBcIiBjbGFzcz1cInRvb2x0aXAtaWNvbiBkLWZsZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzaXplXT1cInByb3BzPy5bJ3Rvb2x0aXBJY29uU2l6ZSddIHx8ICcyMCdcIj48L3NhLWljb24+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIEBpZighIXByb3BzPy5bJ2Rlc2NyaXB0aW9uJ10pIHtcclxuICAgICAgICA8cCBjbGFzcz1cInNhLWlucHV0LWRlc2NyaXB0aW9uXCI+XHJcbiAgICAgICAgICAgIHt7cHJvcHM/LlsnZGVzY3JpcHRpb24nXX19XHJcbiAgICAgICAgPC9wPlxyXG4gICAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gICAgPGRpdiBjbGFzcz1cInNhLWlucHV0XCIgW25nQ2xhc3NdPVwiZGlzYWJsZWQgPyAnZGlzYWJsZWQnIDogJycgXCI+XHJcbiAgICAgICAgQGlmKChwcmV0ZXh0IHx8ICghIWlucHV0VmFsPy5sZW5ndGggJiYgKCEhcGFyYW1zPy5wbGFjZWhvbGRlciB8fCAhIXByb3BzPy5wbGFjZWhvbGRlcikpKSAmJiBwcm9wcz8uWydzaG93VGFnJ11cclxuICAgICAgICAhPT0gZmFsc2Upe1xyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2EtaW5wdXQtdGFnXCI+e3twYXJhbXM/LnBsYWNlaG9sZGVyIHx8IHByb3BzPy5wbGFjZWhvbGRlcn19PC9zcGFuPlxyXG4gICAgICAgIH1cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2EtaW5wdXQtZmllbGRcIiBbbmdDbGFzc109XCJmb3JtQ29udHJvbC5pbnZhbGlkICYmIGZvcm1Db250cm9sLnRvdWNoZWQgPyAnaW52YWxpZCcgOiAnaWRsZScgXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uSW5wdXRGaWVsZENsaWNrKCRldmVudClcIj5cclxuICAgICAgICAgICAgQGlmKHByZXRleHQpe1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2EtaW5wdXQtcHJldGV4dFwiPlxyXG4gICAgICAgICAgICAgICAge3twcmV0ZXh0fX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIDwhLS0gTXVsdGktdmFsdWUgY2hpcCBkaXNwbGF5IC0tPlxyXG4gICAgICAgICAgICBAaWYoaXNNdWx0aVZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c2EtY2hpcCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNoaXAgb2YgKGNoaXBWYWx1ZXMgfHwgW10pPy5zbGljZShzdGFydEluZCxzdGFydEluZCtsYWJlbExpbWl0KSBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwiY2hpcD8udmFsdWUgfHwgY2hpcD8ubGFiZWwgfHwgY2hpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cIidyZWd1bGFyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0ZV09XCIncHJpbWFyeSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZmlsbGluZ109XCInZmlsbGVkJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uUG9zaXRpb25dPVwiJ3JpZ2h0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uUGF0aF09XCInLi4vYXNzZXRzL2Nsb3NlQmx1ZU91dGxpbmVkLnN2ZydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAob25DbGlja0V2ZW50KT1cInJlbW92ZUNoaXAoaSlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NhLWNoaXA+XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwic2hpZnRMYWJlbCgnY2xpY2tlZCcpXCIgY2xhc3M9XCJuZy12YWx1ZSBvdmVyZmxvdy1sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGNoaXBWYWx1ZXMgfHwgW10pLmxlbmd0aCA+IChzdGFydEluZCArIGxhYmVsTGltaXQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzYS1jaGlwIFt0ZXh0XT1cIicrJyArICgoY2hpcFZhbHVlcyB8fCBbXSkubGVuZ3RoIC0gKHN0YXJ0SW5kICsgbGFiZWxMaW1pdCkpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInJlZ3VsYXJcIiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGU9XCJwcmltYXJ5XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbGluZz1cImZpbGxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NhLWNoaXA+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIidjaGlwLWlucHV0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0IFt0eXBlXT1cInR5cGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmllbGQucHJvcHMuZGlzYWJsZWQgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY2hpcFZhbHVlcy5sZW5ndGggPT09IDAgPyAocHJvcHM/LnBsYWNlaG9sZGVyIHx8IHBhcmFtcz8ucGxhY2Vob2xkZXIgfHwgJycpIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25DaGlwQmx1cigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cIm9uQ2hpcElucHV0Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbkNoaXBLZXlEb3duKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImN1cnJlbnRJbnB1dFZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgI2Zvcm1JbnB1dCAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgPCEtLSBTdGFuZGFyZCBzaW5nbGUtdmFsdWUgaW5wdXQgKGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpIC0tPlxyXG4gICAgICAgICAgICAgICAgQGlmKCEhcHJvcHM/LlsncHJlZml4J10pe1xyXG4gICAgICAgICAgICAgICAgPHNwYW4gbWF0UHJlZml4Pnt7cHJvcHM/LlsncHJlZml4J119fSZuYnNwOzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIighIWlucHV0VmFsICYmIChwYXJhbXM/LnR5cGUgPT09ICdwYXNzd29yZCcgfHwgcHJvcHM/LnR5cGUgPT09ICdwYXNzd29yZCcpICYmIGljb24ubmFtZSAhPT0gJ2V5ZU9mZicpID8gJ21hc2tlZCcgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXQgW3R5cGVdPVwicHJvcHM/LnR5cGUgfHwgdHlwZVwiIHZhbHVlPVwiXCIgW3BhdHRlcm5dPVwidHlwZT09PSd0ZWwnID8gJ1swLTldJyA6ICcnIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpZWxkLnByb3BzLmRpc2FibGVkIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiIXByZXRleHQgJiYgcHJvcHM/LnBsYWNlaG9sZGVyIHx8IHBhcmFtcz8ucGxhY2Vob2xkZXIgfHwgJydcIiAoZm9jdXMpPVwib25Gb2N1cygpXCJcclxuICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiIChpbnB1dCk9XCJvbklucHV0KCRldmVudClcIiBbKG5nTW9kZWwpXT1cImlucHV0VmFsXCIgI2Zvcm1JbnB1dCAvPlxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBAaWYocGFyYW1zPy50eXBlID09PSAncGFzc3dvcmQnKXtcclxuICAgICAgICAgICAgPHNhLWljb24gY2xhc3M9XCJmbGV4XCIgaWNvbj1cImV5ZU91dGxpbmVkXCIgW3NpemVdPVwiaWNvbi5zaXplIHx8ICcyNCdcIiAoY2xpY2spPVwiaW5wdXRJY29uQ2xpY2soKVwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCIhaWNvbi5uYW1lIHx8IGljb24ubmFtZSA9PT0gJ2V5ZU91dGxpbmVkJyA/ICcnIDogJ2hpZGUnXCI+PC9zYS1pY29uPlxyXG4gICAgICAgICAgICA8c2EtaWNvbiBjbGFzcz1cImZsZXhcIiBpY29uPVwiZXllT2ZmXCIgW3NpemVdPVwiaWNvbi5zaXplIHx8ICcyNCdcIiAoY2xpY2spPVwiaW5wdXRJY29uQ2xpY2soKVwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJpY29uLm5hbWUgPT09ICdleWVPZmYnID8gJycgOiAnaGlkZSdcIj48L3NhLWljb24+XHJcbiAgICAgICAgICAgIH1AZWxzZSBpZihwYXJhbXM/LnR5cGUgPT09ICdlbWFpbCcgJiYgaWNvbi5zaG93KXtcclxuICAgICAgICAgICAgPHNhLWljb24gY2xhc3M9XCJmbGV4XCIgW2ljb25dPVwiaWNvbi5uYW1lIHx8ICdjaGVja0NpcmNsZU91dGxpbmVkJ1wiIFtzaXplXT1cImljb24uc2l6ZSB8fCAnMjQnXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJpbnB1dEljb25DbGljaygpXCIgW25nQ2xhc3NdPVwic2hvd0VtYWlsSWNvbiA/ICcnIDogJ2hpZGUnXCI+PC9zYS1pY29uPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIEBlbHNlIGlmKGljb24/Lm5hbWUpe1xyXG4gICAgICAgICAgICA8c2EtaWNvbiBjbGFzcz1cImZsZXhcIiBbaWNvbl09XCJpY29uLm5hbWVcIiBbc2l6ZV09XCJpY29uPy5zaXplIHx8ICcyNCdcIiBbY29sb3JdPVwiaWNvbj8uY29sb3IgfHwgJydcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiaWNvbj8uc2hvdyA/ICcnIDogJ2hpZGUnXCI+PC9zYS1pY29uPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgQGlmKCghZm9ybUNvbnRyb2wudmFsaWQpIHx8IChwYXJhbXM/LnN1cHBvcnRUZXh0KSl7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdXBwb3J0LWxhYmVsIHt7Zm9ybUNvbnRyb2wuaW52YWxpZCAmJiBmb3JtQ29udHJvbC50b3VjaGVkID8gcGFyYW1zPy5jbGFzc05hbWUgOiAnJ319XCIgW25nQ2xhc3NdPVwiW1xyXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2wuaW52YWxpZCAmJiBmb3JtQ29udHJvbC50b3VjaGVkID8gJ2ludmFsaWQnIDogJ2lkbGUnXHJcbiAgICAgICAgICAgICAgXVwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSB7eyFmb3JtQ29udHJvbC52YWxpZCA/IGlucHV0RXJyb3JUZXh0IDogcGFyYW1zLnN1cHBvcnRUZXh0fX0gLS0+XHJcbiAgICAgICAgICAgICAgICB7e2dldEZvcm1TdXBwb3J0VGV4dCgpfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|