@testgorilla/tgo-ui 3.2.3 → 3.2.5-beta.1

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.
@@ -1,11 +1,14 @@
1
1
  import { EventEmitter } from '@angular/core';
2
- import { IconName } from '../icon/icon.model';
2
+ import { SafeHtml } from '@angular/platform-browser';
3
3
  import { ApplicationTheme } from '../../models/application-theme.model';
4
- import { ButtonVariant, EmptyStateVariant, IllustrationVariant } from './empty-state.model';
5
4
  import { ButtonIconPosition } from '../button/button.model';
5
+ import { IconName } from '../icon/icon.model';
6
+ import { ButtonVariant, EmptyStateVariant, IllustrationVariant } from './empty-state.model';
6
7
  import * as i0 from "@angular/core";
7
8
  export declare class EmptyStateComponent {
8
9
  private readonly defaultAppTheme;
10
+ private domSanitizer;
11
+ safeBodyText: SafeHtml;
9
12
  /**
10
13
  * @description If the default image should be displayed.
11
14
  * @type {boolean}
@@ -41,7 +44,7 @@ export declare class EmptyStateComponent {
41
44
  * @type {string}
42
45
  * @memberof EmptyStateComponent
43
46
  */
44
- bodyText: string;
47
+ set bodyText(value: string);
45
48
  /**
46
49
  * @description Displays primary button if passed.
47
50
  * @type {string}
@@ -149,7 +152,7 @@ export declare class EmptyStateComponent {
149
152
  onPrimaryButtonClick(event: Event): void;
150
153
  onSecondaryButtonClick(event: Event): void;
151
154
  onTertiaryButtonClick(event: Event): void;
152
- getVariant(variant: ButtonVariant): "primary" | "secondary" | "ghost";
155
+ getVariant(variant: ButtonVariant): "ghost" | "primary" | "secondary";
153
156
  static ɵfac: i0.ɵɵFactoryDeclaration<EmptyStateComponent, [{ optional: true; }]>;
154
157
  static ɵcmp: i0.ɵɵComponentDeclaration<EmptyStateComponent, "ui-empty-state", never, { "showIllustration": { "alias": "showIllustration"; "required": false; }; "illustrationVariant": { "alias": "illustrationVariant"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "emptyStateVariant": { "alias": "emptyStateVariant"; "required": false; }; "title": { "alias": "title"; "required": false; }; "bodyText": { "alias": "bodyText"; "required": false; }; "primaryButtonText": { "alias": "primaryButtonText"; "required": false; }; "primaryButtonVariant": { "alias": "primaryButtonVariant"; "required": false; }; "primaryButtonIconName": { "alias": "primaryButtonIconName"; "required": false; }; "primaryButtonIconPosition": { "alias": "primaryButtonIconPosition"; "required": false; }; "secondaryButtonText": { "alias": "secondaryButtonText"; "required": false; }; "secondaryButtonVariant": { "alias": "secondaryButtonVariant"; "required": false; }; "secondaryButtonIconName": { "alias": "secondaryButtonIconName"; "required": false; }; "secondaryButtonIconPosition": { "alias": "secondaryButtonIconPosition"; "required": false; }; "tertiaryButtonText": { "alias": "tertiaryButtonText"; "required": false; }; "tertiaryButtonVariant": { "alias": "tertiaryButtonVariant"; "required": false; }; "tertiaryButtonIconName": { "alias": "tertiaryButtonIconName"; "required": false; }; "tertiaryButtonIconPosition": { "alias": "tertiaryButtonIconPosition"; "required": false; }; "applicationTheme": { "alias": "applicationTheme"; "required": false; }; }, { "primaryButtonClick": "primaryButtonClick"; "secondaryButtonClick": "secondaryButtonClick"; "tertiaryButtonClick": "tertiaryButtonClick"; }, never, never, false, never>;
155
158
  }
@@ -1,5 +1,5 @@
1
1
  export declare const tgoIcons: readonly ["Add", "Archive", "Arrow_down", "Arrow_left", "Arrow_right", "Arrow_up", "Assessment", "Attempts", "Book", "Calendar", "Candidates", "Chat-notifications", "Chat", "Check", "Clone", "Close", "Code", "Company", "Copy", "Custom-questions", "Delete", "Devices", "Document", "Dot", "Download", "Edit", "Email-message", "Empty-placeholder", "Error", "Essay", "Eye-hide", "Eye-view", "Feedback-1", "Feedback-2", "Feedback-3", "Feedback-4", "Feedback-5", "File-attach", "File-upload", "Filter", "Folder", "Format-add-file", "Format-add-table", "Format-align-L", "Format-align-R", "Format-align-center", "Format-align-justify", "Format-bold", "Format-code-active", "Format-code-block", "Format-edit-table", "Format-format", "Format-function", "Format-italics", "Format-list-bulleted", "Format-list-numbered", "Format-picker", "Format-quote", "Format-subscript", "Format-superscript", "Format-text-direction-L", "Format-text-direction-R", "Format-text-size", "Format-underline", "Format-variable", "Full-screen", "Gender-female", "Gender-male", "Help-2", "Help", "Image", "Info", "Integration", "Language", "Layout", "Learn", "Level", "Light-bulb", "Link", "Loading-spinner", "Localisation", "Location", "Lock", "Log-out", "Menu-burger", "Menu-close", "Menu-ellipsis", "Menu-open", "Microphone", "Minus", "Mouse-cursor", "Mouse-grab-cursor", "Mouse", "Multi-choice", "Notifications", "Password", "Path", "Pin-marker", "Plan-billing", "Plus", "Premium", "Promotion", "Question-count", "Refer", "Reset", "Review", "Round-check-filled", "Round-check", "Search", "Secure-checkout", "Send", "Settings", "Social-facebook", "Social-instagram", "Social-linkedin", "Sorting-down-1", "Sorting-down", "Speedometer", "Star-filled", "Star-half", "Star-outline", "Support", "Sync", "Team", "Test", "Thunder", "Timer", "Trophy", "Type", "Unarchive", "Unlock", "Upgrade", "Upload", "User-access", "User-add", "User-invite", "User-profile", "User-reject", "User-switch", "Video-pause", "Video-play", "Video-record", "Video", "Volume", "Warning", "Zoom-in", "Zoom-out", "Fire", "Gift", "Grab", "Share", "Sparkles", "Video-stop", "Minimize", "Employee", "Money-bag", "Suitcase", "Google", "Fast-forward", "Fast-rewind", "Skip-next", "Skip-previous", "TestGorilla"];
2
- export declare const tgoRebrandIcons: readonly ["Archive-filled", "Archive-in-line", "Add-in-line", "Add-filled", "Arrow-chevron-down-filled", "Arrow-chevron-down-in-line", "Arrow-chevron-left-filled", "Arrow-chevron-left-in-line", "Arrow-chevron-right-filled", "Arrow-chevron-right-in-line", "Arrow-chevron-up-filled", "Arrow-chevron-up-in-line", "Arrow-down-filled", "Arrow-down-in-line", "Arrow-up-filled", "Arrow-up-in-line", "Assessment-filled", "Assessment-in-line", "Attach-filled", "Attach-in-line", "Attempts-filled", "Attempts-in-line", "Book-filled", "Book-in-line", "Calendar-filled", "Calendar-in-line", "Candidates-filled", "Candidates-in-line", "Chat-filled", "Chat-in-line", "Check-filled", "Check-in-line", "Check-round-filled", "Check-round-in-line", "Circle-filled", "Circle-in-line", "Clone-filled", "Clone-in-line", "Close-filled", "Close-in-line", "Code-filled", "Code-in-line", "Company-filled", "Company-in-line", "Copy-filled", "Copy-in-line", "Delete-filled", "Delete-in-line", "Devices-filled", "Devices-in-line", "Document-filled", "Document-in-line", "Dot-filled", "Dot-in-line", "Download-filled", "Download-in-line", "Edit-filled", "Edit-in-line", "Edit-text-filled", "Edit-text-in-line", "Employee-filled", "Employee-in-line", "Error-filled", "Error-in-line", "Essay-filled", "Essay-in-line", "Experience-filled", "Experience-in-line", "Facebook-filled", "Facebook-in-line", "Fast-forward-filled", "Fast-forward-in-line", "Fast-rewind-filled", "Fast-rewind-in-line", "Filter-filled", "Filter-in-line", "Fire-filled", "Fire-in-line", "Folder-filled", "Folder-in-line", "Full-screen-filled", "Full-screen-in-line", "Gender-male-filled", "Gender-male-in-line", "Gender-female-filled", "Gender-female-in-line", "Gift-filled", "Gift-in-line", "Google-filled", "Google-in-line", "Grab-filled", "Grab-in-line", "Help-filled", "Help-in-line", "Hide-filled", "Hide-in-line", "Image-filled", "Image-in-line", "Info-filled", "Info-in-line", "Instagram-filled", "Instagram-in-line", "Integration-filled", "Integration-in-line", "Invite-filled", "Invite-in-line", "Language-filled", "Language-in-line", "Layout-filled", "Layout-in-line", "Learn-filled", "Learn-in-line", "Level-filled", "Level-in-line", "Light-bulb-filled", "Light-bulb-in-line", "Link-filled", "Link-in-line", "Linkedin-filled", "Linkedin-in-line", "Localization-filled", "Localization-in-line", "Location-filled", "Location-in-line", "Lock-filled", "Lock-in-line", "Logout-filled", "Logout-in-line", "Medal-filled", "Medal-in-line", "Menu-burger-filled", "Menu-burger-in-line", "Menu-close-filled", "Menu-close-in-line", "Menu-ellipsis-filled", "Menu-ellipsis-in-line", "Menu-open-filled", "Menu-open-in-line", "Mic-filled", "Mic-in-line", "Minimize-filled", "Minimize-in-line", "Minus-filled", "Minus-in-line", "Mouse-filled", "Mouse-in-line", "Multi-choice-filled", "Multi-choice-in-line", "Notification-bell-filled", "Notification-bell-in-line", "Password-filled", "Password-in-line", "Path-filled", "Path-in-line", "Pause-filled", "Pause-in-line", "Pin-marker-filled", "Pin-marker-in-line", "Plan-billing-filled", "Plan-billing-in-line", "Play-filled", "Play-in-line", "Plus-filled", "Plus-in-line", "Premium-filled", "Premium-in-line", "Premium-circle-in-line", "Question-count-filled", "Question-count-in-line", "Question-filled", "Question-in-line", "Record-filled", "Record-in-line", "Reject-filled", "Refer-in-line", "Refer-filled", "Reject-in-line", "Reset-filled", "Reset-in-line", "Review-emoji-1-filled", "Review-emoji-1-in-line", "Review-emoji-2-filled", "Review-emoji-2-in-line", "Review-emoji-3-filled", "Review-emoji-3-in-line", "Review-emoji-4-filled", "Review-emoji-4-in-line", "Review-emoji-5-filled", "Review-emoji-5-in-line", "Review-filled", "Review-half-star-filled", "Review-half-star-in-line", "Review-in-line", "Review-star-filled", "Review-star-in-line", "Search-filled", "Search-in-line", "Secure-filled", "Secure-in-line", "Send-filled", "Send-in-line", "Settings-filled", "Settings-in-line", "Share-filled", "Share-in-line", "Skip-next-filled", "Skip-next-in-line", "Skip-previous-filled", "Skip-previous-in-line", "Sparkle-filled", "Sparkle-in-line", "Speedometer-filled", "Speedometer-in-line", "Star-filled", "Star-in-line", "Stop-filled", "Stop-in-line", "Switch-filled", "Switch-in-line", "Sync-filled", "Sync-in-line", "Tag-filled", "Tag-in-line", "Team-filled", "Team-in-line", "Test-filled", "Test-in-line", "Timer-filled", "Timer-in-line", "Trophy-filled", "Trophy-in-line", "Type-filled", "Type-in-line", "Unarchive-filled", "Unarchive-in-line", "Unlock-filled", "Unlock-in-line", "Upgrade-filled", "Upgrade-in-line", "Upload-filled", "Upload-in-line", "User-access-filled", "User-access-in-line", "User-add-filled", "User-add-in-line", "User-profile-filled", "User-profile-in-line", "Video-filled", "Video-in-line", "View-filled", "View-in-line", "Volume-filled", "Volume-in-line", "Warning-filled", "Warning-in-line", "Validated-filled", "Validated-in-line", "Verified-badge-filled", "Verified-badge-in-line", "Zoom-in-filled", "Zoom-in-in-line", "Zoom-out-filled", "Zoom-out-in-line", "Analytics-filled", "Analytics-in-line", "Failed-to-load-filled", "Failed-to-load-in-line", "History-filled", "History-in-line", "TestGorilla-filled", "TestGorilla-in-line", "TestGorilla-Pink-filled", "TestGorilla-Pink-in-line"];
2
+ export declare const tgoRebrandIcons: readonly ["Archive-filled", "Archive-in-line", "Add-in-line", "Add-filled", "Arrow-chevron-down-filled", "Arrow-chevron-down-in-line", "Arrow-chevron-left-filled", "Arrow-chevron-left-in-line", "Arrow-chevron-right-filled", "Arrow-chevron-right-in-line", "Arrow-chevron-up-filled", "Arrow-chevron-up-in-line", "Arrow-down-filled", "Arrow-down-in-line", "Arrow-up-filled", "Arrow-up-in-line", "Assessment-filled", "Assessment-in-line", "Attach-filled", "Attach-in-line", "Attempts-filled", "Attempts-in-line", "Book-filled", "Book-in-line", "Calendar-filled", "Calendar-in-line", "Candidates-filled", "Candidates-in-line", "Chat-filled", "Chat-in-line", "Check-filled", "Check-in-line", "Check-round-filled", "Check-round-in-line", "Circle-filled", "Circle-in-line", "Clone-filled", "Clone-in-line", "Close-filled", "Close-in-line", "Code-filled", "Code-in-line", "Company-filled", "Company-in-line", "Copy-filled", "Copy-in-line", "Delete-filled", "Delete-in-line", "Devices-filled", "Devices-in-line", "Document-filled", "Document-in-line", "Dot-filled", "Dot-in-line", "Download-filled", "Download-in-line", "Edit-filled", "Edit-in-line", "Edit-text-filled", "Edit-text-in-line", "Employee-filled", "Employee-in-line", "Error-filled", "Error-in-line", "Essay-filled", "Essay-in-line", "Experience-filled", "Experience-in-line", "Facebook-filled", "Facebook-in-line", "Fast-forward-filled", "Fast-forward-in-line", "Fast-rewind-filled", "Fast-rewind-in-line", "Filter-filled", "Filter-in-line", "Fire-filled", "Fire-in-line", "Folder-filled", "Folder-in-line", "Full-screen-filled", "Full-screen-in-line", "Gender-male-filled", "Gender-male-in-line", "Gender-female-filled", "Gender-female-in-line", "Gift-filled", "Gift-in-line", "Google-filled", "Google-in-line", "Grab-filled", "Grab-in-line", "Help-filled", "Help-in-line", "Hide-filled", "Hide-in-line", "Image-filled", "Image-in-line", "Info-filled", "Info-in-line", "Instagram-filled", "Instagram-in-line", "Integration-filled", "Integration-in-line", "Invite-filled", "Invite-in-line", "Language-filled", "Language-in-line", "Layout-filled", "Layout-in-line", "Learn-filled", "Learn-in-line", "Level-filled", "Level-in-line", "Light-bulb-filled", "Light-bulb-in-line", "Link-filled", "Link-in-line", "Linkedin-filled", "Linkedin-in-line", "Localization-filled", "Localization-in-line", "Location-filled", "Location-in-line", "Lock-filled", "Lock-in-line", "Logout-filled", "Logout-in-line", "Medal-filled", "Medal-in-line", "Menu-burger-filled", "Menu-burger-in-line", "Menu-close-filled", "Menu-close-in-line", "Menu-ellipsis-filled", "Menu-ellipsis-in-line", "Menu-open-filled", "Menu-open-in-line", "Mic-filled", "Mic-in-line", "Minimize-filled", "Minimize-in-line", "Minus-filled", "Minus-in-line", "Mouse-filled", "Mouse-in-line", "Multi-choice-filled", "Multi-choice-in-line", "Notification-bell-filled", "Notification-bell-in-line", "Password-filled", "Password-in-line", "Path-filled", "Path-in-line", "Pause-filled", "Pause-in-line", "Pin-marker-filled", "Pin-marker-in-line", "Plan-billing-filled", "Plan-billing-in-line", "Play-filled", "Play-in-line", "Plus-filled", "Plus-in-line", "Premium-filled", "Premium-in-line", "Premium-circle-in-line", "Question-count-filled", "Question-count-in-line", "Question-filled", "Question-in-line", "Record-filled", "Record-in-line", "Reject-filled", "Refer-in-line", "Refer-filled", "Reject-in-line", "Reset-filled", "Reset-in-line", "Review-emoji-1-filled", "Review-emoji-1-in-line", "Review-emoji-2-filled", "Review-emoji-2-in-line", "Review-emoji-3-filled", "Review-emoji-3-in-line", "Review-emoji-4-filled", "Review-emoji-4-in-line", "Review-emoji-5-filled", "Review-emoji-5-in-line", "Review-filled", "Review-half-star-filled", "Review-half-star-in-line", "Review-in-line", "Review-star-filled", "Review-star-in-line", "Search-filled", "Search-in-line", "Secure-filled", "Secure-in-line", "Send-filled", "Send-in-line", "Settings-filled", "Settings-in-line", "Share-filled", "Share-in-line", "Skip-next-filled", "Skip-next-in-line", "Skip-previous-filled", "Skip-previous-in-line", "Sparkle-filled", "Sparkle-in-line", "Speedometer-filled", "Speedometer-in-line", "Star-filled", "Star-in-line", "Stop-filled", "Stop-in-line", "Switch-filled", "Switch-in-line", "Sync-filled", "Sync-in-line", "Tag-filled", "Tag-in-line", "Team-filled", "Team-in-line", "Test-filled", "Test-in-line", "Timer-filled", "Timer-in-line", "Trophy-filled", "Trophy-in-line", "Type-filled", "Type-in-line", "Unarchive-filled", "Unarchive-in-line", "Unlock-filled", "Unlock-in-line", "Upgrade-filled", "Upgrade-in-line", "Upload-filled", "Upload-in-line", "User-access-filled", "User-access-in-line", "User-add-filled", "User-add-in-line", "User-profile-filled", "User-profile-in-line", "Video-filled", "Video-in-line", "View-filled", "View-in-line", "Volume-filled", "Volume-in-line", "Warning-filled", "Warning-in-line", "Validated-filled", "Validated-in-line", "Verified-badge-filled", "Verified-badge-in-line", "Zoom-in-filled", "Zoom-in-in-line", "Zoom-out-filled", "Zoom-out-in-line", "Analytics-filled", "Analytics-in-line", "Failed-to-load-filled", "Failed-to-load-in-line", "History-filled", "History-in-line", "TestGorilla-filled", "TestGorilla-in-line", "TestGorilla-Pink-filled", "TestGorilla-Pink-in-line", "Pencil-to-gorilla-in-line", "Pencil-to-gorilla-filled"];
3
3
  export declare const groupedIcons: {
4
4
  directional: string[];
5
5
  assessment: string[];
@@ -1,6 +1,7 @@
1
1
  import { OnChanges, OnInit } from '@angular/core';
2
- import { SpinnerSize } from './spinner.model';
3
2
  import { ApplicationTheme } from '../../models/application-theme.model';
3
+ import { IconName, IconSize } from '../icon/icon.model';
4
+ import { SpinnerSize } from './spinner.model';
4
5
  import * as i0 from "@angular/core";
5
6
  export declare class SpinnerComponent implements OnInit, OnChanges {
6
7
  private readonly defaultAppTheme;
@@ -34,11 +35,25 @@ export declare class SpinnerComponent implements OnInit, OnChanges {
34
35
  * @memberof SpinnerComponent
35
36
  */
36
37
  applicationTheme: ApplicationTheme;
38
+ /**
39
+ * Custom Icon name
40
+ *
41
+ * @type {IconName}
42
+ * @memberof SpinnerComponent
43
+ */
44
+ iconName: IconName;
45
+ /**
46
+ * Custom Icon size
47
+ *
48
+ * @type {IconSize}
49
+ * @memberof SpinnerComponent
50
+ */
51
+ iconSize: IconSize;
37
52
  classes: string;
38
53
  constructor(defaultAppTheme: ApplicationTheme);
39
54
  ngOnChanges(): void;
40
55
  ngOnInit(): void;
41
56
  setSpinnerClasses(): void;
42
57
  static ɵfac: i0.ɵɵFactoryDeclaration<SpinnerComponent, [{ optional: true; }]>;
43
- static ɵcmp: i0.ɵɵComponentDeclaration<SpinnerComponent, "ui-spinner", never, { "size": { "alias": "size"; "required": false; }; "isLoader": { "alias": "isLoader"; "required": false; }; "text": { "alias": "text"; "required": false; }; "applicationTheme": { "alias": "applicationTheme"; "required": false; }; }, {}, never, never, false, never>;
58
+ static ɵcmp: i0.ɵɵComponentDeclaration<SpinnerComponent, "ui-spinner", never, { "size": { "alias": "size"; "required": false; }; "isLoader": { "alias": "isLoader"; "required": false; }; "text": { "alias": "text"; "required": false; }; "applicationTheme": { "alias": "applicationTheme"; "required": false; }; "iconName": { "alias": "iconName"; "required": false; }; "iconSize": { "alias": "iconSize"; "required": false; }; }, {}, never, never, false, never>;
44
59
  }
@@ -2,8 +2,9 @@ import * as i0 from "@angular/core";
2
2
  import * as i1 from "./spinner.component";
3
3
  import * as i2 from "@angular/common";
4
4
  import * as i3 from "../../pipes/ui-translate.pipe";
5
+ import * as i4 from "../icon/icon.component.module";
5
6
  export declare class SpinnerComponentModule {
6
7
  static ɵfac: i0.ɵɵFactoryDeclaration<SpinnerComponentModule, never>;
7
- static ɵmod: i0.ɵɵNgModuleDeclaration<SpinnerComponentModule, [typeof i1.SpinnerComponent], [typeof i2.NgClass, typeof i2.NgIf, typeof i3.UiTranslatePipe, typeof i2.AsyncPipe], [typeof i1.SpinnerComponent]>;
8
+ static ɵmod: i0.ɵɵNgModuleDeclaration<SpinnerComponentModule, [typeof i1.SpinnerComponent], [typeof i2.NgClass, typeof i2.NgIf, typeof i3.UiTranslatePipe, typeof i2.AsyncPipe, typeof i4.IconComponentModule], [typeof i1.SpinnerComponent]>;
8
9
  static ɵinj: i0.ɵɵInjectorDeclaration<SpinnerComponentModule>;
9
10
  }
@@ -685,7 +685,7 @@ export class AutocompleteComponent {
685
685
  this.matAutocomplete._setScrollTop(this.matAutocomplete._keyManager.activeItemIndex * optionHeight);
686
686
  }
687
687
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AutocompleteComponent, deps: [{ token: 'CANOPYUI_DEFAULT_APPLICATION_THEME', optional: true }, { token: i0.ChangeDetectorRef }, { token: i1.DomSanitizer }, { token: i2.NgControl, optional: true, self: true }, { token: PLATFORM_ID }, { token: i0.ElementRef }, { token: i3.FocusMonitor }, { token: i0.DestroyRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
688
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: AutocompleteComponent, selector: "ui-autocomplete", inputs: { itemsList: "itemsList", suggestionsList: "suggestionsList", disabled: "disabled", allowAdd: "allowAdd", textField: "textField", valueField: "valueField", label: "label", placeholder: "placeholder", itemValue: "itemValue", type: "type", minCharactersSearch: "minCharactersSearch", variant: "variant", showBottomContent: "showBottomContent", valuePrimitive: "valuePrimitive", fullWidth: "fullWidth", applicationTheme: "applicationTheme", required: "required", errors: "errors", companyColor: "companyColor", hideBuiltInErrors: "hideBuiltInErrors", hideLabelInErrors: "hideLabelInErrors", virtualScroll: ["virtualScroll", "virtualScroll", booleanAttribute], compareWith: "compareWith", dropdownPanelClass: "dropdownPanelClass", closeOnScroll: "closeOnScroll", size: "size", allowUserInput: "allowUserInput", clearable: "clearable", exactMatchSelect: "exactMatchSelect", maxItemSelected: "maxItemSelected", isDynamicFilteringEnabled: "isDynamicFilteringEnabled", dynamicFilterLoading: "dynamicFilterLoading", dynamicFilteredList: "dynamicFilteredList", infiniteScroll: "infiniteScroll", hasMoreOptionsForInfiniteScroll: "hasMoreOptionsForInfiniteScroll" }, outputs: { selectionChange: "selectionChange", searchTextChange: "searchTextChange", blur: "blur", focus: "focus", scrollViewportBottomReached: "scrollViewportBottomReached" }, host: { properties: { "class.full-width": "this.fullWidth", "attr.theme": "this.applicationTheme" } }, viewQueries: [{ propertyName: "formFieldElement", first: true, predicate: ["formField"], descendants: true }, { propertyName: "tagContainer", first: true, predicate: ["tagContainer"], descendants: true }, { propertyName: "autocomplete", first: true, predicate: ["trigger"], descendants: true }, { propertyName: "cdkVirtualScrollViewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }, { propertyName: "matAutocomplete", first: true, predicate: ["autocomplete"], descendants: true }, { propertyName: "matInput", first: true, predicate: ["matInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container>\n <div class=\"autocomplete-wrapper\" [ngClass]=\"{ 'full-width': fullWidth, disabled: disabled }\">\n <mat-form-field\n [color]=\"(safeErrors.length || (ngControl?.errors && ngControl?.touched ) || (AutocompleteUtils.isArray(value) && value.length) > maxItemSelected || ((AutocompleteUtils.isArray(value) && value.length) >= maxItemSelected && (inputValue && inputValue !== ' ')) ) ? 'warn' : 'accent'\"\n [appearance]=\"'outline'\"\n [ngClass]=\"{ 'large-size': type === autocompleteType.LARGE, 'hide-bottom-content': !showBottomContent, 'keyboard-focused': keyboardFocused(), 'has-label': !!label }\"\n >\n <mat-label *ngIf=\"label\">{{ label }} <span *ngIf=\"required\">*</span></mat-label>\n <div #formField class=\"input-container\">\n <span style=\"position: absolute; left: -9999px\" *ngIf=\"textField ? value?.[textField] : value === inputValue\"\n aria-live=\"polite\">{{ (('SELECTED') | uiTranslate | async) + ' ' + inputValue }}</span>\n\n <input\n #trigger=\"matAutocompleteTrigger\"\n #matInput\n [uiPreventInput]=\"!allowUserInput\"\n [disabled]=\"disabled\"\n [ngClass]=\"{ 'unset-margin': this.value && type === autocompleteType.LARGE, 'no-caret': !allowUserInput }\"\n (blur)=\"refillInput()\"\n (focusin)=\"onFocus()\"\n [attr.aria-label]=\"((translationContext + 'SELECTED') | uiTranslate | async) + ' ' + (value | transformItem: textField : true)\"\n [style.opacity]=\"type === autocompleteType.MULTI ? inputOpacity : 1\"\n matInput\n [placeholder]=\"value && value.length ? '': placeholder\"\n [type]=\"'text'\"\n [matAutocomplete]=\"autocomplete\"\n (input)=\"onInputChange($event)\"\n [(ngModel)]=\"inputValue\"\n />\n <div\n class=\"selected-items\"\n #tagContainer\n *ngIf=\"\n (type === autocompleteType.LARGE && this.value) ||\n (!(inputValue && this.isInputFocus) && this.value && type !== autocompleteType.SINGLE)\n \"\n >\n <ui-tag\n class=\"value-tag\"\n [id]=\"'ui-tag-' + i\"\n *ngFor=\"let valueItem of value; let i = index\"\n [label]=\"valueItem | transformItem: textField\"\n [allowClose]=\"true\"\n [applicationTheme]=\"applicationTheme\"\n [style.opacity]=\"type === autocompleteType.MULTI ? inputOpacity : 1\"\n [style.display]=\"(isOverLapping && i > 0 && i >= overlapIndex) || (size === 'small' && value.length > 1) ? 'none' : 'block'\"\n [ngStyle]=\"{ '--tag-max-width': type === autocompleteType.LARGE ? 'fit-content' : firstTagMaxWidth + 'px' }\"\n [ngClass]=\"{\n 'overlap-tag': isOverlapChecking && overlapIndex && i >= overlapIndex && type === autocompleteType.MULTI\n }\"\n (close)=\"onOptionRemoved(valueItem)\"\n ></ui-tag>\n @if (size === 'small') {\n <div class=\"selected-count\" *ngIf=\"value.length > 1\">\n {{ (translationContext + 'SELECTED_AMOUNT' | uiTranslate : { numberSelected: (value | slice: overlapIndex).length }) | async }}\n </div>\n } @else {\n <div *ngIf=\"value.length > 1 && isOverLapping\" class=\"overlap-count\">\n <ui-tag [applicationTheme]=\"applicationTheme\"\n [label]=\"'+' + (value.length - overlapIndex)\"></ui-tag>\n </div>\n }\n </div>\n </div>\n\n <ui-icon\n *ngIf=\"clearable && (type === autocompleteType.SINGLE && (value?.length || hasObjectValue)) || (type !== autocompleteType.SINGLE && value && value.length > 1 && ((AutocompleteUtils.isPrimitive(value) && value.length) || (!AutocompleteUtils.isPrimitive(value) && (AutocompleteUtils.isArray(value) && value.length || !AutocompleteUtils.isArray(value) && !value.length))))\"\n class=\"remove-selected\"\n [tabIndex]=\"disabled ? -1 : 0\"\n (keydown.enter)=\"onClear();$event.preventDefault();$event.stopPropagation()\"\n (keydown.space)=\"onClear();$event.preventDefault();$event.stopPropagation()\"\n [ngClass]=\"{ 'large-input-icon': type === autocompleteType.LARGE }\"\n (click)=\"onClear();$event.preventDefault();$event.stopPropagation()\"\n [size]=\"'24'\"\n [color]=\"applicationTheme === 'classic' ? 'inherit' : 'rebrand-black'\"\n [attr.aria-label]=\"('COMMON.CLEAR') | uiTranslate | async\"\n [name]=\"applicationTheme === 'classic' ? 'Close' : 'Close-in-line'\"\n ></ui-icon>\n\n <ui-icon\n class=\"arrow-state\"\n [ngClass]=\"{ opened: autocomplete.isOpen, 'large-input-icon': type === autocompleteType.LARGE }\"\n *ngIf=\"isDropdown\"\n [size]=\"'24'\"\n [name]=\"applicationTheme !== 'classic' ? 'Arrow-chevron-down-in-line' : 'Arrow_down'\"\n (click)=\"onChevronClick(autocomplete)\"\n ></ui-icon>\n\n\n <mat-autocomplete\n #autocomplete\n [class]=\"applicationTheme + ' ' + dropdownPanelClass\"\n (optionSelected)=\"onOptionSelected($event)\"\n [disableRipple]=\"applicationTheme !== 'classic'\"\n [hideSingleSelectionIndicator]=\"false\"\n (opened)=\"gotoUp()\"\n >\n @if (type !== autocompleteType.MULTI || value?.length < maxItemSelected) {\n <ng-container *ngIf=\"!(searchResult$ | async)\">\n <ng-container *ngIf=\"!isDropdown; else dropdownList\">\n <mat-optgroup [label]=\"((translationContext + 'SUGGESTED') | uiTranslate | async)! | uppercase\"\n *ngIf=\"suggestionsList.length\">\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': suggested | includes: value : valueField }\"\n *ngFor=\"let suggested of suggestionsList\"\n [value]=\"suggested\"\n >\n <span [selectText]=\"userInput$ | async\">{{ suggested | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n <mat-optgroup [label]=\"((translationContext + 'SELECTED') | uiTranslate | async)! | uppercase\"\n *ngIf=\"value?.length && type !== autocompleteType.SINGLE\">\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of value\"\n [value]=\"item\"\n >\n <span>{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n\n @if (isGrouped) {\n @for (group of itemsList; track group) {\n\n @if (group.groupName) {\n <mat-optgroup [label]=\"group.groupName\">\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.items\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n } @else {\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.items\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n }\n }\n }\n\n <mat-optgroup [label]=\"((translationContext + 'SELECTED') | uiTranslate | async)! | uppercase\"\n *ngIf=\"value?.length && type === autocompleteType.SINGLE\">\n <mat-option\n (mousedown)=$event.preventDefault()\n [class]=\"'selected-option'\"\n [value]=\"value\"\n >\n <span [selectText]=\"userInput$ | async\">{{ value | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n </ng-container>\n\n <ng-template #dropdownList>\n <cdk-virtual-scroll-viewport *ngIf=\"virtualScroll || infiniteScroll; else defaultViewPort\" [itemSize]=\"48\"\n [style.height]=\"'200px'\" class=\"virtual-scroll\">\n @if (!isGrouped) {\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *cdkVirtualFor=\"let item of itemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n\n @if(infiniteScroll && hasMoreOptionsForInfiniteScroll) {\n <mat-option class=\"loading-option\" [style.pointer-events]=\"'none'\">\n <div class=\"loading-container\">\n <ui-spinner size=\"small\" [isLoader]=\"false\"></ui-spinner>\n </div>\n </mat-option>\n }\n } @else {\n @for (group of itemsList; track group) {\n @if (group.groupName) {\n <mat-optgroup [label]=\"group.groupName\">\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *cdkVirtualFor=\"let item of group.items\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n } @else {\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *cdkVirtualFor=\"let item of group.items\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n } }\n }\n\n </cdk-virtual-scroll-viewport>\n\n <ng-template #defaultViewPort>\n @if (!isGrouped) {\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of itemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n } @else {\n @for (group of itemsList; track group) {\n @if (group.groupName) {\n <mat-optgroup [label]=\"group.groupName\">\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.items\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n } @else {\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.items\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n }\n }\n }\n </ng-template>\n\n </ng-template>\n\n </ng-container>\n\n <ng-container *ngIf=\"filteredSuggestionList$ | async as filteredSuggestionList\">\n <ng-container *ngIf=\"filteredItemsList$ | async as filteredItemsList\">\n @if (isGrouped && filteredItemsList.length) {\n @for (group of filteredItemsList; track group) {\n @if (group.groupName) {\n <mat-optgroup [label]=\"group.groupName\">\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.filteredItems\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n } @else {\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.filteredItems\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n }\n }\n }\n\n <mat-optgroup [label]=\"((translationContext + 'SUGGESTED') | uiTranslate | async)! | uppercase\"\n *ngIf=\"filteredSuggestionList.length\">\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of filteredSuggestionList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n <ng-container *ngIf=\"!filteredSuggestionList.length && !isGrouped; else showItemListWithGroup\">\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of filteredItemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </ng-container>\n\n <ng-template #showItemListWithGroup>\n <mat-optgroup [label]=\"((translationContext + 'ALL_ITEMS') | uiTranslate | async)! | uppercase\"\n *ngIf=\"filteredItemsList.length && !isGrouped\">\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of filteredItemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n </ng-template>\n\n @if(isDynamicFilteringEnabled && dynamicFilterLoading) {\n <mat-option class=\"loading-option\" [style.pointer-events]=\"'none'\">\n <div class=\"loading-container\">\n <ui-spinner size=\"small\" [isLoader]=\"false\"></ui-spinner>\n </div>\n </mat-option>\n } @else if(inputValue) {\n @if (allowAdd && !isAlreadyAdded) {\n <mat-option (mousedown)=$event.preventDefault() [value]=\"inputValue\">\n <span>{{ ('COMMON.ADD') | uiTranslate | async }}</span>\n <span class=\"add-suggestion\">\"{{ inputValue }}\"</span>\n </mat-option>\n } @else if (!filteredItemsList.length && !filteredSuggestionList.length) {\n <mat-option [style.pointer-events]=\"'none'\">\n <span>{{ (translationContext + 'NO_RESULTS_FOUND') | uiTranslate | async }}</span>\n </mat-option>\n }\n }\n </ng-container>\n </ng-container>\n }\n </mat-autocomplete>\n <mat-hint class=\"error\"\n *ngIf=\"safeErrors.length || (ngControl?.errors | hasValidationError) || (AutocompleteUtils.isArray(value) && value.length) > maxItemSelected || ((AutocompleteUtils.isArray(value) && value.length) >= maxItemSelected && (inputValue && inputValue !== ' '))\">\n <div class=\"errors\"\n *ngIf=\"(AutocompleteUtils.isArray(value) && value.length) > maxItemSelected || ((AutocompleteUtils.isArray(value) && value.length) >= maxItemSelected && (inputValue && inputValue !== ' '))\">\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"'Error'\"></ui-icon>\n <span>{{ (translationContext + 'MAX_SELECTED_ERROR') | uiTranslate : { max: maxItemSelected } | async }}</span>\n </div>\n <ng-container *ngIf=\"safeErrors.length\">\n <div class=\"errors\" *ngFor=\"let error of safeErrors; trackBy: trackByFn\">\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"'Error'\"></ui-icon>\n <span [innerHTML]=\"error\"></span>\n </div>\n </ng-container>\n <ui-validation-error *ngIf=\"ngControl && !hideBuiltInErrors\" [ngControl]=\"ngControl\"\n [label]=\"hideLabelInErrors ? null : label\"></ui-validation-error>\n\n </mat-hint>\n </mat-form-field>\n </div>\n</ng-container>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host{width:320px;display:block}:host.full-width{width:100%}:host ui-tag{height:32px;margin:4px}:host ui-tag ::ng-deep .tag-container{margin:0!important}:host ui-tag ::ng-deep .tag-wrapper{max-width:fit-content}.large-size input{margin:10px 0}.large-size .selected-items{margin:5px 0;flex-wrap:wrap}.large-size .input-container{display:flex;flex-direction:column-reverse}.large-size ::ng-deep .mat-mdc-form-field-infix,.large-size .mat-mdc-form-field-flex{align-items:unset!important}.disabled *{pointer-events:none}.input-container{width:100%;margin:auto;display:flex;flex-direction:row-reverse}.input-container .selected-items{display:flex;padding-left:4px}.input-container .selected-items .selected-count{white-space:nowrap}.input-container .selected-items .value-tag{max-width:var(--tag-max-width)}.input-container .selected-items .value-tag ::ng-deep .tag-container{max-width:var(--tag-max-width)}.input-container .selected-items .overlap-count{font-size:14px;line-height:20px}.input-container .selected-items .overlap-count ui-tag{display:block}.input-container .selected-items .overlap-tag{position:absolute;opacity:0}.input-container input{margin-left:6px}.input-container input.unset-margin{margin-top:unset}.input-container input.no-caret{cursor:pointer;caret-color:transparent!important}.add-suggestion{margin:0 5px;color:#000;font-weight:700}.remove-selected{cursor:pointer;margin-right:2px;border-radius:50px;height:fit-content}.remove-selected.large-input-icon{margin-top:10px}.arrow-state{height:24px;cursor:pointer}.arrow-state.large-input-icon{margin-top:10px}.arrow-state.opened{transform:rotateX(180deg)}::ng-deep .autocomplete-wrapper .mat-mdc-form-field{width:100%}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error,::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error svg{color:#cb7b7a}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error{display:flex}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error{display:flex;flex-flow:column;row-gap:4px}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error .errors{display:flex}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error .errors ui-icon{margin-right:8px}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error{color:#e02800!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error svg{color:#e02800!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-bottom-align:before{height:0}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint-wrapper{padding:0 0 12px;font-size:12px;line-height:16px;position:relative}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint-wrapper .mat-form-field-hint-spacer{display:none}::ng-deep .autocomplete-wrapper .mat-mdc-form-field.hide-bottom-content .mat-mdc-form-field-subscript-wrapper{display:none}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{top:28px!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:22px!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-text-field-wrapper{padding-left:12px!important;height:unset!important;max-height:unset!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-focused .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{color:#276678!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch{border-bottom:2px solid #276678!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading{border-left:2px solid #276678!important;border-bottom:2px solid #276678!important;border-top:2px solid #276678!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border:2px solid #276678!important;border-left:unset!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-infix,::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-flex{min-height:48px!important;max-height:184px!important;overflow-y:auto;overflow-x:hidden;padding:0!important;display:flex;justify-content:center;text-align:center;align-items:center;flex-direction:row;width:100%}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mdc-line-ripple{display:none!important}::ng-deep .mat-mdc-autocomplete-panel{box-shadow:0 8px 24px 4px #00000014;max-height:312px!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option:hover:not(.mdc-list-item--disabled),::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option:focus:not(.mdc-list-item--disabled),::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option.mat-mdc-option-active,::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple):not(.mdc-list-item--disabled){background:#e9f0f1!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option{padding-right:32px;padding-left:12px!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option ui-icon{display:none;position:absolute;right:0;bottom:calc(50% - 8px);margin:0 10px}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option.selected-option{background:#e9f0f1}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option.selected-option ui-icon{display:block}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option.mdc-list-item--selected .mdc-list-item__primary-text,::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option .mdc-list-item--activated .mdc-list-item__primary-text{color:#000!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option .mat-pseudo-checkbox{display:none}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-optgroup .mat-mdc-optgroup-label{font-weight:700!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-optgroup .mdc-list-item__primary-text{color:#000;font-size:12px;line-height:16px;font-weight:700}.active-field .mdc-notched-outline__leading{border-left-width:2px;border-top-width:2px;border-bottom-width:2px}.active-field .mdc-notched-outline__notch{border-top-width:2px;border-bottom-width:2px}.active-field .mdc-notched-outline__trailing{border-top-width:2px;border-bottom-width:2px;border-right-width:2px}.loading-option{display:flex}.loading-option .loading-container{display:flex;justify-content:center;align-items:center;width:100%;height:100%;position:absolute;top:0;left:0}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: i6.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i7.MatOptgroup, selector: "mat-optgroup", inputs: ["label", "disabled"], exportAs: ["matOptgroup"] }, { kind: "directive", type: i6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { 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.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i9.TagComponent, selector: "ui-tag", inputs: ["label", "icon", "allowClose", "readOnly", "isSelected", "showIconWhenSelected", "isDisabled", "applicationTheme", "ariaLabel", "ariaRequired"], outputs: ["close", "press"] }, { kind: "component", type: i10.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color", "filled", "applicationTheme", "useFullIconName"] }, { kind: "component", type: i11.ValidationErrorComponent, selector: "ui-validation-error", inputs: ["ngControl", "touchedOn", "errorMessage", "label", "applicationTheme"] }, { kind: "directive", type: i12.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i12.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: i12.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i13.PreventInputDirective, selector: "[uiPreventInput]", inputs: ["uiPreventInput"] }, { kind: "component", type: i14.SpinnerComponent, selector: "ui-spinner", inputs: ["size", "isLoader", "text", "applicationTheme"] }, { kind: "directive", type: i15.SelectTextDirective, selector: "[selectText]", inputs: ["selectText"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i4.SlicePipe, name: "slice" }, { kind: "pipe", type: i16.UiTranslatePipe, name: "uiTranslate" }, { kind: "pipe", type: i17.HasValidationErrorPipe, name: "hasValidationError" }, { kind: "pipe", type: i18.TransformItemPipe, name: "transformItem" }, { kind: "pipe", type: i19.IncludesPipe, name: "includes" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
688
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: AutocompleteComponent, selector: "ui-autocomplete", inputs: { itemsList: "itemsList", suggestionsList: "suggestionsList", disabled: "disabled", allowAdd: "allowAdd", textField: "textField", valueField: "valueField", label: "label", placeholder: "placeholder", itemValue: "itemValue", type: "type", minCharactersSearch: "minCharactersSearch", variant: "variant", showBottomContent: "showBottomContent", valuePrimitive: "valuePrimitive", fullWidth: "fullWidth", applicationTheme: "applicationTheme", required: "required", errors: "errors", companyColor: "companyColor", hideBuiltInErrors: "hideBuiltInErrors", hideLabelInErrors: "hideLabelInErrors", virtualScroll: ["virtualScroll", "virtualScroll", booleanAttribute], compareWith: "compareWith", dropdownPanelClass: "dropdownPanelClass", closeOnScroll: "closeOnScroll", size: "size", allowUserInput: "allowUserInput", clearable: "clearable", exactMatchSelect: "exactMatchSelect", maxItemSelected: "maxItemSelected", isDynamicFilteringEnabled: "isDynamicFilteringEnabled", dynamicFilterLoading: "dynamicFilterLoading", dynamicFilteredList: "dynamicFilteredList", infiniteScroll: "infiniteScroll", hasMoreOptionsForInfiniteScroll: "hasMoreOptionsForInfiniteScroll" }, outputs: { selectionChange: "selectionChange", searchTextChange: "searchTextChange", blur: "blur", focus: "focus", scrollViewportBottomReached: "scrollViewportBottomReached" }, host: { properties: { "class.full-width": "this.fullWidth", "attr.theme": "this.applicationTheme" } }, viewQueries: [{ propertyName: "formFieldElement", first: true, predicate: ["formField"], descendants: true }, { propertyName: "tagContainer", first: true, predicate: ["tagContainer"], descendants: true }, { propertyName: "autocomplete", first: true, predicate: ["trigger"], descendants: true }, { propertyName: "cdkVirtualScrollViewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }, { propertyName: "matAutocomplete", first: true, predicate: ["autocomplete"], descendants: true }, { propertyName: "matInput", first: true, predicate: ["matInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container>\n <div class=\"autocomplete-wrapper\" [ngClass]=\"{ 'full-width': fullWidth, disabled: disabled }\">\n <mat-form-field\n [color]=\"(safeErrors.length || (ngControl?.errors && ngControl?.touched ) || (AutocompleteUtils.isArray(value) && value.length) > maxItemSelected || ((AutocompleteUtils.isArray(value) && value.length) >= maxItemSelected && (inputValue && inputValue !== ' ')) ) ? 'warn' : 'accent'\"\n [appearance]=\"'outline'\"\n [ngClass]=\"{ 'large-size': type === autocompleteType.LARGE, 'hide-bottom-content': !showBottomContent, 'keyboard-focused': keyboardFocused(), 'has-label': !!label }\"\n >\n <mat-label *ngIf=\"label\">{{ label }} <span *ngIf=\"required\">*</span></mat-label>\n <div #formField class=\"input-container\">\n <span style=\"position: absolute; left: -9999px\" *ngIf=\"textField ? value?.[textField] : value === inputValue\"\n aria-live=\"polite\">{{ (('SELECTED') | uiTranslate | async) + ' ' + inputValue }}</span>\n\n <input\n #trigger=\"matAutocompleteTrigger\"\n #matInput\n [uiPreventInput]=\"!allowUserInput\"\n [disabled]=\"disabled\"\n [ngClass]=\"{ 'unset-margin': this.value && type === autocompleteType.LARGE, 'no-caret': !allowUserInput }\"\n (blur)=\"refillInput()\"\n (focusin)=\"onFocus()\"\n [attr.aria-label]=\"((translationContext + 'SELECTED') | uiTranslate | async) + ' ' + (value | transformItem: textField : true)\"\n [style.opacity]=\"type === autocompleteType.MULTI ? inputOpacity : 1\"\n matInput\n [placeholder]=\"value && value.length ? '': placeholder\"\n [type]=\"'text'\"\n [matAutocomplete]=\"autocomplete\"\n (input)=\"onInputChange($event)\"\n [(ngModel)]=\"inputValue\"\n />\n <div\n class=\"selected-items\"\n #tagContainer\n *ngIf=\"\n (type === autocompleteType.LARGE && this.value) ||\n (!(inputValue && this.isInputFocus) && this.value && type !== autocompleteType.SINGLE)\n \"\n >\n <ui-tag\n class=\"value-tag\"\n [id]=\"'ui-tag-' + i\"\n *ngFor=\"let valueItem of value; let i = index\"\n [label]=\"valueItem | transformItem: textField\"\n [allowClose]=\"true\"\n [applicationTheme]=\"applicationTheme\"\n [style.opacity]=\"type === autocompleteType.MULTI ? inputOpacity : 1\"\n [style.display]=\"(isOverLapping && i > 0 && i >= overlapIndex) || (size === 'small' && value.length > 1) ? 'none' : 'block'\"\n [ngStyle]=\"{ '--tag-max-width': type === autocompleteType.LARGE ? 'fit-content' : firstTagMaxWidth + 'px' }\"\n [ngClass]=\"{\n 'overlap-tag': isOverlapChecking && overlapIndex && i >= overlapIndex && type === autocompleteType.MULTI\n }\"\n (close)=\"onOptionRemoved(valueItem)\"\n ></ui-tag>\n @if (size === 'small') {\n <div class=\"selected-count\" *ngIf=\"value.length > 1\">\n {{ (translationContext + 'SELECTED_AMOUNT' | uiTranslate : { numberSelected: (value | slice: overlapIndex).length }) | async }}\n </div>\n } @else {\n <div *ngIf=\"value.length > 1 && isOverLapping\" class=\"overlap-count\">\n <ui-tag [applicationTheme]=\"applicationTheme\"\n [label]=\"'+' + (value.length - overlapIndex)\"></ui-tag>\n </div>\n }\n </div>\n </div>\n\n <ui-icon\n *ngIf=\"clearable && (type === autocompleteType.SINGLE && (value?.length || hasObjectValue)) || (type !== autocompleteType.SINGLE && value && value.length > 1 && ((AutocompleteUtils.isPrimitive(value) && value.length) || (!AutocompleteUtils.isPrimitive(value) && (AutocompleteUtils.isArray(value) && value.length || !AutocompleteUtils.isArray(value) && !value.length))))\"\n class=\"remove-selected\"\n [tabIndex]=\"disabled ? -1 : 0\"\n (keydown.enter)=\"onClear();$event.preventDefault();$event.stopPropagation()\"\n (keydown.space)=\"onClear();$event.preventDefault();$event.stopPropagation()\"\n [ngClass]=\"{ 'large-input-icon': type === autocompleteType.LARGE }\"\n (click)=\"onClear();$event.preventDefault();$event.stopPropagation()\"\n [size]=\"'24'\"\n [color]=\"applicationTheme === 'classic' ? 'inherit' : 'rebrand-black'\"\n [attr.aria-label]=\"('COMMON.CLEAR') | uiTranslate | async\"\n [name]=\"applicationTheme === 'classic' ? 'Close' : 'Close-in-line'\"\n ></ui-icon>\n\n <ui-icon\n class=\"arrow-state\"\n [ngClass]=\"{ opened: autocomplete.isOpen, 'large-input-icon': type === autocompleteType.LARGE }\"\n *ngIf=\"isDropdown\"\n [size]=\"'24'\"\n [name]=\"applicationTheme !== 'classic' ? 'Arrow-chevron-down-in-line' : 'Arrow_down'\"\n (click)=\"onChevronClick(autocomplete)\"\n ></ui-icon>\n\n\n <mat-autocomplete\n #autocomplete\n [class]=\"applicationTheme + ' ' + dropdownPanelClass\"\n (optionSelected)=\"onOptionSelected($event)\"\n [disableRipple]=\"applicationTheme !== 'classic'\"\n [hideSingleSelectionIndicator]=\"false\"\n (opened)=\"gotoUp()\"\n >\n @if (type !== autocompleteType.MULTI || value?.length < maxItemSelected) {\n <ng-container *ngIf=\"!(searchResult$ | async)\">\n <ng-container *ngIf=\"!isDropdown; else dropdownList\">\n <mat-optgroup [label]=\"((translationContext + 'SUGGESTED') | uiTranslate | async)! | uppercase\"\n *ngIf=\"suggestionsList.length\">\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': suggested | includes: value : valueField }\"\n *ngFor=\"let suggested of suggestionsList\"\n [value]=\"suggested\"\n >\n <span [selectText]=\"userInput$ | async\">{{ suggested | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n <mat-optgroup [label]=\"((translationContext + 'SELECTED') | uiTranslate | async)! | uppercase\"\n *ngIf=\"value?.length && type !== autocompleteType.SINGLE\">\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of value\"\n [value]=\"item\"\n >\n <span>{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n\n @if (isGrouped) {\n @for (group of itemsList; track group) {\n\n @if (group.groupName) {\n <mat-optgroup [label]=\"group.groupName\">\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.items\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n } @else {\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.items\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n }\n }\n }\n\n <mat-optgroup [label]=\"((translationContext + 'SELECTED') | uiTranslate | async)! | uppercase\"\n *ngIf=\"value?.length && type === autocompleteType.SINGLE\">\n <mat-option\n (mousedown)=$event.preventDefault()\n [class]=\"'selected-option'\"\n [value]=\"value\"\n >\n <span [selectText]=\"userInput$ | async\">{{ value | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n </ng-container>\n\n <ng-template #dropdownList>\n <cdk-virtual-scroll-viewport *ngIf=\"virtualScroll || infiniteScroll; else defaultViewPort\" [itemSize]=\"48\"\n [style.height]=\"'200px'\" class=\"virtual-scroll\">\n @if (!isGrouped) {\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *cdkVirtualFor=\"let item of itemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n\n @if(infiniteScroll && hasMoreOptionsForInfiniteScroll) {\n <mat-option class=\"loading-option\" [style.pointer-events]=\"'none'\">\n <div class=\"loading-container\">\n <ui-spinner size=\"small\" [isLoader]=\"false\"></ui-spinner>\n </div>\n </mat-option>\n }\n } @else {\n @for (group of itemsList; track group) {\n @if (group.groupName) {\n <mat-optgroup [label]=\"group.groupName\">\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *cdkVirtualFor=\"let item of group.items\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n } @else {\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *cdkVirtualFor=\"let item of group.items\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n } }\n }\n\n </cdk-virtual-scroll-viewport>\n\n <ng-template #defaultViewPort>\n @if (!isGrouped) {\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of itemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n } @else {\n @for (group of itemsList; track group) {\n @if (group.groupName) {\n <mat-optgroup [label]=\"group.groupName\">\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.items\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n } @else {\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.items\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n }\n }\n }\n </ng-template>\n\n </ng-template>\n\n </ng-container>\n\n <ng-container *ngIf=\"filteredSuggestionList$ | async as filteredSuggestionList\">\n <ng-container *ngIf=\"filteredItemsList$ | async as filteredItemsList\">\n @if (isGrouped && filteredItemsList.length) {\n @for (group of filteredItemsList; track group) {\n @if (group.groupName) {\n <mat-optgroup [label]=\"group.groupName\">\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.filteredItems\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n } @else {\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of group.filteredItems\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n }\n }\n }\n\n <mat-optgroup [label]=\"((translationContext + 'SUGGESTED') | uiTranslate | async)! | uppercase\"\n *ngIf=\"filteredSuggestionList.length\">\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of filteredSuggestionList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n <ng-container *ngIf=\"!filteredSuggestionList.length && !isGrouped; else showItemListWithGroup\">\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of filteredItemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </ng-container>\n\n <ng-template #showItemListWithGroup>\n <mat-optgroup [label]=\"((translationContext + 'ALL_ITEMS') | uiTranslate | async)! | uppercase\"\n *ngIf=\"filteredItemsList.length && !isGrouped\">\n <mat-option\n (mousedown)=$event.preventDefault()\n [ngClass]=\"{ 'selected-option': item | includes: value : valueField }\"\n *ngFor=\"let item of filteredItemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n </ng-template>\n\n @if(isDynamicFilteringEnabled && dynamicFilterLoading) {\n <mat-option class=\"loading-option\" [style.pointer-events]=\"'none'\">\n <div class=\"loading-container\">\n <ui-spinner size=\"small\" [isLoader]=\"false\"></ui-spinner>\n </div>\n </mat-option>\n } @else if(inputValue) {\n @if (allowAdd && !isAlreadyAdded) {\n <mat-option (mousedown)=$event.preventDefault() [value]=\"inputValue\">\n <span>{{ ('COMMON.ADD') | uiTranslate | async }}</span>\n <span class=\"add-suggestion\">\"{{ inputValue }}\"</span>\n </mat-option>\n } @else if (!filteredItemsList.length && !filteredSuggestionList.length) {\n <mat-option [style.pointer-events]=\"'none'\">\n <span>{{ (translationContext + 'NO_RESULTS_FOUND') | uiTranslate | async }}</span>\n </mat-option>\n }\n }\n </ng-container>\n </ng-container>\n }\n </mat-autocomplete>\n <mat-hint class=\"error\"\n *ngIf=\"safeErrors.length || (ngControl?.errors | hasValidationError) || (AutocompleteUtils.isArray(value) && value.length) > maxItemSelected || ((AutocompleteUtils.isArray(value) && value.length) >= maxItemSelected && (inputValue && inputValue !== ' '))\">\n <div class=\"errors\"\n *ngIf=\"(AutocompleteUtils.isArray(value) && value.length) > maxItemSelected || ((AutocompleteUtils.isArray(value) && value.length) >= maxItemSelected && (inputValue && inputValue !== ' '))\">\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"'Error'\"></ui-icon>\n <span>{{ (translationContext + 'MAX_SELECTED_ERROR') | uiTranslate : { max: maxItemSelected } | async }}</span>\n </div>\n <ng-container *ngIf=\"safeErrors.length\">\n <div class=\"errors\" *ngFor=\"let error of safeErrors; trackBy: trackByFn\">\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"'Error'\"></ui-icon>\n <span [innerHTML]=\"error\"></span>\n </div>\n </ng-container>\n <ui-validation-error *ngIf=\"ngControl && !hideBuiltInErrors\" [ngControl]=\"ngControl\"\n [label]=\"hideLabelInErrors ? null : label\"></ui-validation-error>\n\n </mat-hint>\n </mat-form-field>\n </div>\n</ng-container>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host{width:320px;display:block}:host.full-width{width:100%}:host ui-tag{height:32px;margin:4px}:host ui-tag ::ng-deep .tag-container{margin:0!important}:host ui-tag ::ng-deep .tag-wrapper{max-width:fit-content}.large-size input{margin:10px 0}.large-size .selected-items{margin:5px 0;flex-wrap:wrap}.large-size .input-container{display:flex;flex-direction:column-reverse}.large-size ::ng-deep .mat-mdc-form-field-infix,.large-size .mat-mdc-form-field-flex{align-items:unset!important}.disabled *{pointer-events:none}.input-container{width:100%;margin:auto;display:flex;flex-direction:row-reverse}.input-container .selected-items{display:flex;padding-left:4px}.input-container .selected-items .selected-count{white-space:nowrap}.input-container .selected-items .value-tag{max-width:var(--tag-max-width)}.input-container .selected-items .value-tag ::ng-deep .tag-container{max-width:var(--tag-max-width)}.input-container .selected-items .overlap-count{font-size:14px;line-height:20px}.input-container .selected-items .overlap-count ui-tag{display:block}.input-container .selected-items .overlap-tag{position:absolute;opacity:0}.input-container input{margin-left:6px}.input-container input.unset-margin{margin-top:unset}.input-container input.no-caret{cursor:pointer;caret-color:transparent!important}.add-suggestion{margin:0 5px;color:#000;font-weight:700}.remove-selected{cursor:pointer;margin-right:2px;border-radius:50px;height:fit-content}.remove-selected.large-input-icon{margin-top:10px}.arrow-state{height:24px;cursor:pointer}.arrow-state.large-input-icon{margin-top:10px}.arrow-state.opened{transform:rotateX(180deg)}::ng-deep .autocomplete-wrapper .mat-mdc-form-field{width:100%}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error,::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error svg{color:#cb7b7a}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error{display:flex}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error{display:flex;flex-flow:column;row-gap:4px}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error .errors{display:flex}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error .errors ui-icon{margin-right:8px}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error{color:#e02800!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error svg{color:#e02800!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-bottom-align:before{height:0}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint-wrapper{padding:0 0 12px;font-size:12px;line-height:16px;position:relative}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint-wrapper .mat-form-field-hint-spacer{display:none}::ng-deep .autocomplete-wrapper .mat-mdc-form-field.hide-bottom-content .mat-mdc-form-field-subscript-wrapper{display:none}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{top:28px!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:22px!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-text-field-wrapper{padding-left:12px!important;height:unset!important;max-height:unset!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-focused .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{color:#276678!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch{border-bottom:2px solid #276678!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading{border-left:2px solid #276678!important;border-bottom:2px solid #276678!important;border-top:2px solid #276678!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border:2px solid #276678!important;border-left:unset!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-infix,::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-flex{min-height:48px!important;max-height:184px!important;overflow-y:auto;overflow-x:hidden;padding:0!important;display:flex;justify-content:center;text-align:center;align-items:center;flex-direction:row;width:100%}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mdc-line-ripple{display:none!important}::ng-deep .mat-mdc-autocomplete-panel{box-shadow:0 8px 24px 4px #00000014;max-height:312px!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option:hover:not(.mdc-list-item--disabled),::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option:focus:not(.mdc-list-item--disabled),::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option.mat-mdc-option-active,::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple):not(.mdc-list-item--disabled){background:#e9f0f1!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option{padding-right:32px;padding-left:12px!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option ui-icon{display:none;position:absolute;right:0;bottom:calc(50% - 8px);margin:0 10px}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option.selected-option{background:#e9f0f1}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option.selected-option ui-icon{display:block}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option.mdc-list-item--selected .mdc-list-item__primary-text,::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option .mdc-list-item--activated .mdc-list-item__primary-text{color:#000!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option .mat-pseudo-checkbox{display:none}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-optgroup .mat-mdc-optgroup-label{font-weight:700!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-optgroup .mdc-list-item__primary-text{color:#000;font-size:12px;line-height:16px;font-weight:700}.active-field .mdc-notched-outline__leading{border-left-width:2px;border-top-width:2px;border-bottom-width:2px}.active-field .mdc-notched-outline__notch{border-top-width:2px;border-bottom-width:2px}.active-field .mdc-notched-outline__trailing{border-top-width:2px;border-bottom-width:2px;border-right-width:2px}.loading-option{display:flex}.loading-option .loading-container{display:flex;justify-content:center;align-items:center;width:100%;height:100%;position:absolute;top:0;left:0}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: i6.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i7.MatOptgroup, selector: "mat-optgroup", inputs: ["label", "disabled"], exportAs: ["matOptgroup"] }, { kind: "directive", type: i6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { 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.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i9.TagComponent, selector: "ui-tag", inputs: ["label", "icon", "allowClose", "readOnly", "isSelected", "showIconWhenSelected", "isDisabled", "applicationTheme", "ariaLabel", "ariaRequired"], outputs: ["close", "press"] }, { kind: "component", type: i10.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color", "filled", "applicationTheme", "useFullIconName"] }, { kind: "component", type: i11.ValidationErrorComponent, selector: "ui-validation-error", inputs: ["ngControl", "touchedOn", "errorMessage", "label", "applicationTheme"] }, { kind: "directive", type: i12.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i12.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: i12.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i13.PreventInputDirective, selector: "[uiPreventInput]", inputs: ["uiPreventInput"] }, { kind: "component", type: i14.SpinnerComponent, selector: "ui-spinner", inputs: ["size", "isLoader", "text", "applicationTheme", "iconName", "iconSize"] }, { kind: "directive", type: i15.SelectTextDirective, selector: "[selectText]", inputs: ["selectText"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i4.SlicePipe, name: "slice" }, { kind: "pipe", type: i16.UiTranslatePipe, name: "uiTranslate" }, { kind: "pipe", type: i17.HasValidationErrorPipe, name: "hasValidationError" }, { kind: "pipe", type: i18.TransformItemPipe, name: "transformItem" }, { kind: "pipe", type: i19.IncludesPipe, name: "includes" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
689
689
  }
690
690
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AutocompleteComponent, decorators: [{
691
691
  type: Component,
@@ -1,12 +1,25 @@
1
- import { Component, EventEmitter, Inject, Input, Optional, Output } from '@angular/core';
1
+ import { Component, EventEmitter, inject, Inject, Input, Optional, Output } from '@angular/core';
2
+ import { DomSanitizer } from '@angular/platform-browser';
2
3
  import * as i0 from "@angular/core";
3
4
  import * as i1 from "@angular/common";
4
5
  import * as i2 from "../icon/icon.component";
5
6
  import * as i3 from "../button/button.component";
6
7
  import * as i4 from "../../pipes/ui-translate.pipe";
7
8
  export class EmptyStateComponent {
9
+ /**
10
+ * @description The body text or description of the empty state.
11
+ * @type {string}
12
+ * @memberof EmptyStateComponent
13
+ */
14
+ set bodyText(value) {
15
+ if (value) {
16
+ this.safeBodyText = this.domSanitizer.bypassSecurityTrustHtml(value);
17
+ }
18
+ }
8
19
  constructor(defaultAppTheme) {
9
20
  this.defaultAppTheme = defaultAppTheme;
21
+ this.domSanitizer = inject(DomSanitizer);
22
+ this.safeBodyText = '';
10
23
  /**
11
24
  * @description If the default image should be displayed.
12
25
  * @type {boolean}
@@ -37,12 +50,6 @@ export class EmptyStateComponent {
37
50
  * @memberof EmptyStateComponent
38
51
  */
39
52
  this.title = '';
40
- /**
41
- * @description The body text or description of the empty state.
42
- * @type {string}
43
- * @memberof EmptyStateComponent
44
- */
45
- this.bodyText = '';
46
53
  /**
47
54
  * @description Displays primary button if passed.
48
55
  * @type {string}
@@ -176,11 +183,11 @@ export class EmptyStateComponent {
176
183
  }
177
184
  }
178
185
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EmptyStateComponent, deps: [{ token: 'CANOPYUI_DEFAULT_APPLICATION_THEME', optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
179
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: EmptyStateComponent, selector: "ui-empty-state", inputs: { showIllustration: "showIllustration", illustrationVariant: "illustrationVariant", icon: "icon", emptyStateVariant: "emptyStateVariant", title: "title", bodyText: "bodyText", primaryButtonText: "primaryButtonText", primaryButtonVariant: "primaryButtonVariant", primaryButtonIconName: "primaryButtonIconName", primaryButtonIconPosition: "primaryButtonIconPosition", secondaryButtonText: "secondaryButtonText", secondaryButtonVariant: "secondaryButtonVariant", secondaryButtonIconName: "secondaryButtonIconName", secondaryButtonIconPosition: "secondaryButtonIconPosition", tertiaryButtonText: "tertiaryButtonText", tertiaryButtonVariant: "tertiaryButtonVariant", tertiaryButtonIconName: "tertiaryButtonIconName", tertiaryButtonIconPosition: "tertiaryButtonIconPosition", applicationTheme: "applicationTheme" }, outputs: { primaryButtonClick: "primaryButtonClick", secondaryButtonClick: "secondaryButtonClick", tertiaryButtonClick: "tertiaryButtonClick" }, ngImport: i0, template: "<ng-container>\n <div class=\"empty-state-container\" [attr.theme]=\"applicationTheme\" [class.mobile]=\"emptyStateVariant === 'mobile'\">\n\n <div class=\"illustration\" *ngIf=\"showIllustration\" [attr.aria-hidden]=\"true\">\n <img *ngIf=\"applicationTheme === 'classic'\" [attr.src]=\"'/images/empty-state-default.svg'\" [width]=\"160\" [height]=\"160\" alt=\"illustration\">\n <img *ngIf=\"applicationTheme !== 'classic'\" [attr.src]=\"'/icons/rebrand/'+illustrationVariant+'-in-line.svg'\" [width]=\"160\" [height]=\"160\" alt=\"illustration\">\n </div>\n\n <div class=\"icon\" *ngIf=\"icon\">\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"icon\" size=\"40\"></ui-icon>\n </div>\n\n <div class=\"text-content\">\n <div class=\"title\">{{ title ? title : ('COMMON.NO_RESULTS') | uiTranslate | async }}</div>\n <div class=\"body-text\" *ngIf=\"bodyText\">{{ bodyText }}</div>\n </div>\n\n <div class=\"actions\">\n <ui-button [fullWidth]=\"emptyStateVariant === 'mobile'\" [applicationTheme]=\"buttonApplicationTheme\" class=\"action-button\" *ngIf=\"primaryButtonText\" [variant]=\"applicationTheme !== 'classic' ? getVariant(primaryButtonVariant) : 'primary'\" [label]=\"primaryButtonText\" [iconName]=\"primaryButtonIconName\" [iconPosition]=\"primaryButtonIconPosition\" (buttonClickEvent)=\"onPrimaryButtonClick($event)\"></ui-button>\n <ui-button [fullWidth]=\"emptyStateVariant === 'mobile'\" [applicationTheme]=\"buttonApplicationTheme\" class=\"action-button\" *ngIf=\"secondaryButtonText\" [variant]=\"applicationTheme !== 'classic' ? getVariant(secondaryButtonVariant) : 'secondary'\" [label]=\"secondaryButtonText\" [iconName]=\"secondaryButtonIconName\" [iconPosition]=\"secondaryButtonIconPosition\" (buttonClickEvent)=\"onSecondaryButtonClick($event)\"></ui-button>\n <ui-button [fullWidth]=\"emptyStateVariant === 'mobile'\" [applicationTheme]=\"buttonApplicationTheme\" class=\"action-button\" *ngIf=\"tertiaryButtonText\" [variant]=\"applicationTheme !== 'classic' ? getVariant(tertiaryButtonVariant) : 'tertiary'\" [label]=\"tertiaryButtonText\" [iconName]=\"tertiaryButtonIconName\" [iconPosition]=\"tertiaryButtonIconPosition\" (buttonClickEvent)=\"onTertiaryButtonClick($event)\"></ui-button>\n </div>\n </div>\n</ng-container>\n\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.empty-state-container{max-width:480px;margin:0 auto;flex-direction:column;padding:32px}.empty-state-container.mobile{max-width:none;padding:16px}.empty-state-container.mobile .actions{flex-direction:column;width:100%}@media (max-width: 600px){.empty-state-container{margin:0;padding:16px}.empty-state-container .actions{flex-direction:column;width:100%}.empty-state-container .actions ui-button{width:100%}.empty-state-container .actions ui-button ::ng-deep .button-wrapper,.empty-state-container .actions ui-button ::ng-deep button{width:100%}}.empty-state-container .text-content{margin:24px 0;flex-direction:column}.empty-state-container .text-content .title{font-weight:700;font-size:20px;line-height:26px;margin-bottom:8px;text-align:center}.empty-state-container .text-content .body-text{font-size:16px;line-height:24px;text-align:center}.empty-state-container .actions{display:flex;flex-wrap:wrap;justify-content:center}.empty-state-container .actions .action-button{margin:8px}.flex-center,.empty-state-container,.empty-state-container .text-content{display:flex;justify-content:center;align-items:center}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color", "filled", "applicationTheme", "useFullIconName"] }, { kind: "component", type: i3.ButtonComponent, selector: "ui-button", inputs: ["size", "variant", "label", "iconPosition", "justIcon", "iconName", "disabled", "loading", "fullWidth", "url", "urlTarget", "value", "tooltip", "isPremium", "type", "companyColor", "buttonBadgeConfig", "applicationTheme", "disabledScaleOnClick", "ariaLabel", "ariaRequired", "ariaLabelledby", "ariaDescribedby", "preventDefault", "hasBackground", "tooltipPosition", "role"], outputs: ["buttonClickEvent", "buttonHoverEvent"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.UiTranslatePipe, name: "uiTranslate" }] }); }
186
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: EmptyStateComponent, selector: "ui-empty-state", inputs: { showIllustration: "showIllustration", illustrationVariant: "illustrationVariant", icon: "icon", emptyStateVariant: "emptyStateVariant", title: "title", bodyText: "bodyText", primaryButtonText: "primaryButtonText", primaryButtonVariant: "primaryButtonVariant", primaryButtonIconName: "primaryButtonIconName", primaryButtonIconPosition: "primaryButtonIconPosition", secondaryButtonText: "secondaryButtonText", secondaryButtonVariant: "secondaryButtonVariant", secondaryButtonIconName: "secondaryButtonIconName", secondaryButtonIconPosition: "secondaryButtonIconPosition", tertiaryButtonText: "tertiaryButtonText", tertiaryButtonVariant: "tertiaryButtonVariant", tertiaryButtonIconName: "tertiaryButtonIconName", tertiaryButtonIconPosition: "tertiaryButtonIconPosition", applicationTheme: "applicationTheme" }, outputs: { primaryButtonClick: "primaryButtonClick", secondaryButtonClick: "secondaryButtonClick", tertiaryButtonClick: "tertiaryButtonClick" }, ngImport: i0, template: "<ng-container>\n <div class=\"empty-state-container\" [attr.theme]=\"applicationTheme\" [class.mobile]=\"emptyStateVariant === 'mobile'\">\n\n <div class=\"illustration\" *ngIf=\"showIllustration\" [attr.aria-hidden]=\"true\">\n <img *ngIf=\"applicationTheme === 'classic'\" [attr.src]=\"'/images/empty-state-default.svg'\" [width]=\"160\" [height]=\"160\" alt=\"illustration\">\n <img *ngIf=\"applicationTheme !== 'classic'\" [attr.src]=\"'/icons/rebrand/'+illustrationVariant+'-in-line.svg'\" [width]=\"160\" [height]=\"160\" alt=\"illustration\">\n </div>\n\n <div class=\"icon\" *ngIf=\"icon\">\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"icon\" size=\"40\"></ui-icon>\n </div>\n\n <div class=\"text-content\">\n <div class=\"title\">{{ title ? title : ('COMMON.NO_RESULTS') | uiTranslate | async }}</div>\n @if (safeBodyText) {\n <div class=\"body-text\" [innerHTML]=\"safeBodyText\"></div>\n }\n </div>\n\n <div class=\"actions\">\n <ui-button [fullWidth]=\"emptyStateVariant === 'mobile'\" [applicationTheme]=\"buttonApplicationTheme\" class=\"action-button\" *ngIf=\"primaryButtonText\" [variant]=\"applicationTheme !== 'classic' ? getVariant(primaryButtonVariant) : 'primary'\" [label]=\"primaryButtonText\" [iconName]=\"primaryButtonIconName\" [iconPosition]=\"primaryButtonIconPosition\" (buttonClickEvent)=\"onPrimaryButtonClick($event)\"></ui-button>\n <ui-button [fullWidth]=\"emptyStateVariant === 'mobile'\" [applicationTheme]=\"buttonApplicationTheme\" class=\"action-button\" *ngIf=\"secondaryButtonText\" [variant]=\"applicationTheme !== 'classic' ? getVariant(secondaryButtonVariant) : 'secondary'\" [label]=\"secondaryButtonText\" [iconName]=\"secondaryButtonIconName\" [iconPosition]=\"secondaryButtonIconPosition\" (buttonClickEvent)=\"onSecondaryButtonClick($event)\"></ui-button>\n <ui-button [fullWidth]=\"emptyStateVariant === 'mobile'\" [applicationTheme]=\"buttonApplicationTheme\" class=\"action-button\" *ngIf=\"tertiaryButtonText\" [variant]=\"applicationTheme !== 'classic' ? getVariant(tertiaryButtonVariant) : 'tertiary'\" [label]=\"tertiaryButtonText\" [iconName]=\"tertiaryButtonIconName\" [iconPosition]=\"tertiaryButtonIconPosition\" (buttonClickEvent)=\"onTertiaryButtonClick($event)\"></ui-button>\n </div>\n </div>\n</ng-container>\n\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.empty-state-container{max-width:480px;margin:0 auto;flex-direction:column;padding:32px}.empty-state-container.mobile{max-width:none;padding:16px}.empty-state-container.mobile .actions{flex-direction:column;width:100%}@media (max-width: 600px){.empty-state-container{margin:0;padding:16px}.empty-state-container .actions{flex-direction:column;width:100%}.empty-state-container .actions ui-button{width:100%}.empty-state-container .actions ui-button ::ng-deep .button-wrapper,.empty-state-container .actions ui-button ::ng-deep button{width:100%}}.empty-state-container .text-content{margin:24px 0;flex-direction:column}.empty-state-container .text-content .title{font-weight:700;font-size:20px;line-height:26px;margin-bottom:8px;text-align:center}.empty-state-container .text-content .body-text{font-size:16px;line-height:24px;text-align:center}.empty-state-container .actions{display:flex;flex-wrap:wrap;justify-content:center}.empty-state-container .actions .action-button{margin:8px}.flex-center,.empty-state-container,.empty-state-container .text-content{display:flex;justify-content:center;align-items:center}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color", "filled", "applicationTheme", "useFullIconName"] }, { kind: "component", type: i3.ButtonComponent, selector: "ui-button", inputs: ["size", "variant", "label", "iconPosition", "justIcon", "iconName", "disabled", "loading", "fullWidth", "url", "urlTarget", "value", "tooltip", "isPremium", "type", "companyColor", "buttonBadgeConfig", "applicationTheme", "disabledScaleOnClick", "ariaLabel", "ariaRequired", "ariaLabelledby", "ariaDescribedby", "preventDefault", "hasBackground", "tooltipPosition", "role"], outputs: ["buttonClickEvent", "buttonHoverEvent"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.UiTranslatePipe, name: "uiTranslate" }] }); }
180
187
  }
181
188
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EmptyStateComponent, decorators: [{
182
189
  type: Component,
183
- args: [{ selector: 'ui-empty-state', template: "<ng-container>\n <div class=\"empty-state-container\" [attr.theme]=\"applicationTheme\" [class.mobile]=\"emptyStateVariant === 'mobile'\">\n\n <div class=\"illustration\" *ngIf=\"showIllustration\" [attr.aria-hidden]=\"true\">\n <img *ngIf=\"applicationTheme === 'classic'\" [attr.src]=\"'/images/empty-state-default.svg'\" [width]=\"160\" [height]=\"160\" alt=\"illustration\">\n <img *ngIf=\"applicationTheme !== 'classic'\" [attr.src]=\"'/icons/rebrand/'+illustrationVariant+'-in-line.svg'\" [width]=\"160\" [height]=\"160\" alt=\"illustration\">\n </div>\n\n <div class=\"icon\" *ngIf=\"icon\">\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"icon\" size=\"40\"></ui-icon>\n </div>\n\n <div class=\"text-content\">\n <div class=\"title\">{{ title ? title : ('COMMON.NO_RESULTS') | uiTranslate | async }}</div>\n <div class=\"body-text\" *ngIf=\"bodyText\">{{ bodyText }}</div>\n </div>\n\n <div class=\"actions\">\n <ui-button [fullWidth]=\"emptyStateVariant === 'mobile'\" [applicationTheme]=\"buttonApplicationTheme\" class=\"action-button\" *ngIf=\"primaryButtonText\" [variant]=\"applicationTheme !== 'classic' ? getVariant(primaryButtonVariant) : 'primary'\" [label]=\"primaryButtonText\" [iconName]=\"primaryButtonIconName\" [iconPosition]=\"primaryButtonIconPosition\" (buttonClickEvent)=\"onPrimaryButtonClick($event)\"></ui-button>\n <ui-button [fullWidth]=\"emptyStateVariant === 'mobile'\" [applicationTheme]=\"buttonApplicationTheme\" class=\"action-button\" *ngIf=\"secondaryButtonText\" [variant]=\"applicationTheme !== 'classic' ? getVariant(secondaryButtonVariant) : 'secondary'\" [label]=\"secondaryButtonText\" [iconName]=\"secondaryButtonIconName\" [iconPosition]=\"secondaryButtonIconPosition\" (buttonClickEvent)=\"onSecondaryButtonClick($event)\"></ui-button>\n <ui-button [fullWidth]=\"emptyStateVariant === 'mobile'\" [applicationTheme]=\"buttonApplicationTheme\" class=\"action-button\" *ngIf=\"tertiaryButtonText\" [variant]=\"applicationTheme !== 'classic' ? getVariant(tertiaryButtonVariant) : 'tertiary'\" [label]=\"tertiaryButtonText\" [iconName]=\"tertiaryButtonIconName\" [iconPosition]=\"tertiaryButtonIconPosition\" (buttonClickEvent)=\"onTertiaryButtonClick($event)\"></ui-button>\n </div>\n </div>\n</ng-container>\n\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.empty-state-container{max-width:480px;margin:0 auto;flex-direction:column;padding:32px}.empty-state-container.mobile{max-width:none;padding:16px}.empty-state-container.mobile .actions{flex-direction:column;width:100%}@media (max-width: 600px){.empty-state-container{margin:0;padding:16px}.empty-state-container .actions{flex-direction:column;width:100%}.empty-state-container .actions ui-button{width:100%}.empty-state-container .actions ui-button ::ng-deep .button-wrapper,.empty-state-container .actions ui-button ::ng-deep button{width:100%}}.empty-state-container .text-content{margin:24px 0;flex-direction:column}.empty-state-container .text-content .title{font-weight:700;font-size:20px;line-height:26px;margin-bottom:8px;text-align:center}.empty-state-container .text-content .body-text{font-size:16px;line-height:24px;text-align:center}.empty-state-container .actions{display:flex;flex-wrap:wrap;justify-content:center}.empty-state-container .actions .action-button{margin:8px}.flex-center,.empty-state-container,.empty-state-container .text-content{display:flex;justify-content:center;align-items:center}\n"] }]
190
+ args: [{ selector: 'ui-empty-state', template: "<ng-container>\n <div class=\"empty-state-container\" [attr.theme]=\"applicationTheme\" [class.mobile]=\"emptyStateVariant === 'mobile'\">\n\n <div class=\"illustration\" *ngIf=\"showIllustration\" [attr.aria-hidden]=\"true\">\n <img *ngIf=\"applicationTheme === 'classic'\" [attr.src]=\"'/images/empty-state-default.svg'\" [width]=\"160\" [height]=\"160\" alt=\"illustration\">\n <img *ngIf=\"applicationTheme !== 'classic'\" [attr.src]=\"'/icons/rebrand/'+illustrationVariant+'-in-line.svg'\" [width]=\"160\" [height]=\"160\" alt=\"illustration\">\n </div>\n\n <div class=\"icon\" *ngIf=\"icon\">\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"icon\" size=\"40\"></ui-icon>\n </div>\n\n <div class=\"text-content\">\n <div class=\"title\">{{ title ? title : ('COMMON.NO_RESULTS') | uiTranslate | async }}</div>\n @if (safeBodyText) {\n <div class=\"body-text\" [innerHTML]=\"safeBodyText\"></div>\n }\n </div>\n\n <div class=\"actions\">\n <ui-button [fullWidth]=\"emptyStateVariant === 'mobile'\" [applicationTheme]=\"buttonApplicationTheme\" class=\"action-button\" *ngIf=\"primaryButtonText\" [variant]=\"applicationTheme !== 'classic' ? getVariant(primaryButtonVariant) : 'primary'\" [label]=\"primaryButtonText\" [iconName]=\"primaryButtonIconName\" [iconPosition]=\"primaryButtonIconPosition\" (buttonClickEvent)=\"onPrimaryButtonClick($event)\"></ui-button>\n <ui-button [fullWidth]=\"emptyStateVariant === 'mobile'\" [applicationTheme]=\"buttonApplicationTheme\" class=\"action-button\" *ngIf=\"secondaryButtonText\" [variant]=\"applicationTheme !== 'classic' ? getVariant(secondaryButtonVariant) : 'secondary'\" [label]=\"secondaryButtonText\" [iconName]=\"secondaryButtonIconName\" [iconPosition]=\"secondaryButtonIconPosition\" (buttonClickEvent)=\"onSecondaryButtonClick($event)\"></ui-button>\n <ui-button [fullWidth]=\"emptyStateVariant === 'mobile'\" [applicationTheme]=\"buttonApplicationTheme\" class=\"action-button\" *ngIf=\"tertiaryButtonText\" [variant]=\"applicationTheme !== 'classic' ? getVariant(tertiaryButtonVariant) : 'tertiary'\" [label]=\"tertiaryButtonText\" [iconName]=\"tertiaryButtonIconName\" [iconPosition]=\"tertiaryButtonIconPosition\" (buttonClickEvent)=\"onTertiaryButtonClick($event)\"></ui-button>\n </div>\n </div>\n</ng-container>\n\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.empty-state-container{max-width:480px;margin:0 auto;flex-direction:column;padding:32px}.empty-state-container.mobile{max-width:none;padding:16px}.empty-state-container.mobile .actions{flex-direction:column;width:100%}@media (max-width: 600px){.empty-state-container{margin:0;padding:16px}.empty-state-container .actions{flex-direction:column;width:100%}.empty-state-container .actions ui-button{width:100%}.empty-state-container .actions ui-button ::ng-deep .button-wrapper,.empty-state-container .actions ui-button ::ng-deep button{width:100%}}.empty-state-container .text-content{margin:24px 0;flex-direction:column}.empty-state-container .text-content .title{font-weight:700;font-size:20px;line-height:26px;margin-bottom:8px;text-align:center}.empty-state-container .text-content .body-text{font-size:16px;line-height:24px;text-align:center}.empty-state-container .actions{display:flex;flex-wrap:wrap;justify-content:center}.empty-state-container .actions .action-button{margin:8px}.flex-center,.empty-state-container,.empty-state-container .text-content{display:flex;justify-content:center;align-items:center}\n"] }]
184
191
  }], ctorParameters: () => [{ type: undefined, decorators: [{
185
192
  type: Optional
186
193
  }, {
@@ -231,4 +238,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
231
238
  }], tertiaryButtonClick: [{
232
239
  type: Output
233
240
  }] } });
234
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHktc3RhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQVd6RixNQUFNLE9BQU8sbUJBQW1CO0lBaUs5QixZQUM2RSxlQUFpQztRQUFqQyxvQkFBZSxHQUFmLGVBQWUsQ0FBa0I7UUFqSzlHOzs7O1dBSUc7UUFDTSxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDbEM7Ozs7V0FJRztRQUNNLHdCQUFtQixHQUF3QixjQUFjLENBQUM7UUFDbkU7Ozs7V0FJRztRQUNNLFNBQUksR0FBYSxFQUFFLENBQUM7UUFFN0I7Ozs7V0FJRztRQUNNLHNCQUFpQixHQUFzQixTQUFTLENBQUM7UUFFMUQ7Ozs7V0FJRztRQUNNLFVBQUssR0FBRyxFQUFFLENBQUM7UUFFcEI7Ozs7V0FJRztRQUNNLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFFdkI7Ozs7V0FJRztRQUNNLHNCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUVoQzs7OztXQUlHO1FBQ00seUJBQW9CLEdBQWtCLE1BQU0sQ0FBQztRQUd0RDs7OztXQUlHO1FBQ00sMEJBQXFCLEdBQWEsRUFBRSxDQUFDO1FBRTlDOzs7O1dBSUc7UUFDTSw4QkFBeUIsR0FBdUIsTUFBTSxDQUFDO1FBRWhFOzs7O1dBSUc7UUFDTSx3QkFBbUIsR0FBRyxFQUFFLENBQUM7UUFFbEM7Ozs7V0FJRztRQUNNLDJCQUFzQixHQUFrQixPQUFPLENBQUM7UUFFekQ7Ozs7V0FJRztRQUNNLDRCQUF1QixHQUFhLEVBQUUsQ0FBQztRQUVoRDs7OztXQUlHO1FBQ00sZ0NBQTJCLEdBQXVCLE1BQU0sQ0FBQztRQUVsRTs7OztXQUlHO1FBQ00sdUJBQWtCLEdBQUcsRUFBRSxDQUFDO1FBRWpDOzs7O1dBSUc7UUFDTSwwQkFBcUIsR0FBa0IsT0FBTyxDQUFDO1FBRXhEOzs7O1dBSUc7UUFDTSwyQkFBc0IsR0FBYSxFQUFFLENBQUM7UUFFL0M7Ozs7V0FJRztRQUNNLCtCQUEwQixHQUF1QixNQUFNLENBQUM7UUFFakU7Ozs7OztXQU1HO1FBQ00scUJBQWdCLEdBQXFCLE9BQU8sQ0FBQztRQUV0RDs7Ozs7V0FLRztRQUNPLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7UUFFekQ7Ozs7O1dBS0c7UUFDTyx5QkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO1FBRTNEOzs7OztXQUtHO1FBQ08sd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQVMsQ0FBQztRQU94RCxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxlQUFlLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUN0RCxDQUFDO0lBQ0gsQ0FBQztJQUVELG9CQUFvQixDQUFDLEtBQVk7UUFDL0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsc0JBQXNCLENBQUMsS0FBWTtRQUNqQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxLQUFZO1FBQ2hDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFzQjtRQUMvQixJQUFJLE9BQU8sS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUN2QixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO2FBQU0sSUFBSSxPQUFPLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLHNCQUFzQixHQUFHLE9BQU8sQ0FBQztZQUN0QyxPQUFPLFdBQVcsQ0FBQztRQUNyQixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxPQUFPLENBQUM7WUFDdEMsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztJQUNILENBQUM7K0dBck1VLG1CQUFtQixrQkFrS1Isb0NBQW9DO21HQWxLL0MsbUJBQW1CLHkvQkNYaEMsa3lFQXlCQTs7NEZEZGEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGdCQUFnQjs7MEJBc0t2QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLG9DQUFvQzt5Q0E1SmpELGdCQUFnQjtzQkFBeEIsS0FBSztnQkFNRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBTUcsSUFBSTtzQkFBWixLQUFLO2dCQU9HLGlCQUFpQjtzQkFBekIsS0FBSztnQkFPRyxLQUFLO3NCQUFiLEtBQUs7Z0JBT0csUUFBUTtzQkFBaEIsS0FBSztnQkFPRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBT0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQVFHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFPRyx5QkFBeUI7c0JBQWpDLEtBQUs7Z0JBT0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQU9HLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFPRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBT0csMkJBQTJCO3NCQUFuQyxLQUFLO2dCQU9HLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFPRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBT0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQU9HLDBCQUEwQjtzQkFBbEMsS0FBSztnQkFTRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBUUksa0JBQWtCO3NCQUEzQixNQUFNO2dCQVFHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFRRyxtQkFBbUI7c0JBQTVCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT3B0aW9uYWwsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWNvbk5hbWUgfSBmcm9tICcuLi9pY29uL2ljb24ubW9kZWwnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25UaGVtZSB9IGZyb20gJy4uLy4uL21vZGVscy9hcHBsaWNhdGlvbi10aGVtZS5tb2RlbCc7XG5pbXBvcnQgeyBCdXR0b25WYXJpYW50LCBFbXB0eVN0YXRlVmFyaWFudCwgSWxsdXN0cmF0aW9uVmFyaWFudCB9IGZyb20gJy4vZW1wdHktc3RhdGUubW9kZWwnO1xuaW1wb3J0IHsgQnV0dG9uSWNvblBvc2l0aW9uIH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3VpLWVtcHR5LXN0YXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VtcHR5LXN0YXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZW1wdHktc3RhdGUuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRW1wdHlTdGF0ZUNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSWYgdGhlIGRlZmF1bHQgaW1hZ2Ugc2hvdWxkIGJlIGRpc3BsYXllZC5cbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBtZW1iZXJvZiBFbXB0eVN0YXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBzaG93SWxsdXN0cmF0aW9uID0gZmFsc2U7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSWYgdGhlIGRlZmF1bHQgaW1hZ2Ugc2hvdWxkIGJlIGRpc3BsYXllZC5cbiAgICogQHR5cGUge0lsbHVzdHJhdGlvblZhcmlhbnR9XG4gICAqIEBtZW1iZXJvZiBFbXB0eVN0YXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBpbGx1c3RyYXRpb25WYXJpYW50OiBJbGx1c3RyYXRpb25WYXJpYW50ID0gJ0VtcHR5LXNlYXJjaCc7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVGhlIGljb24gdG8gYmUgZGlzcGxheWVkIGluIHRoZSBlbXB0eSBzdGF0ZS5cbiAgICogQHR5cGUge0ljb25OYW1lfVxuICAgKiBAbWVtYmVyb2YgRW1wdHlTdGF0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgaWNvbjogSWNvbk5hbWUgPSAnJztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBlbXB0eSBzdGF0ZSB2YXJpYW50LlxuICAgKiBAdHlwZSB7RW1wdHlTdGF0ZVZhcmlhbnR9XG4gICAqIEBtZW1iZXJvZiBFbXB0eVN0YXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBlbXB0eVN0YXRlVmFyaWFudDogRW1wdHlTdGF0ZVZhcmlhbnQgPSAnZGVza3RvcCc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgdGl0bGUgb2YgdGhlIGVtcHR5IHN0YXRlLlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgRW1wdHlTdGF0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgdGl0bGUgPSAnJztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBib2R5IHRleHQgb3IgZGVzY3JpcHRpb24gb2YgdGhlIGVtcHR5IHN0YXRlLlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgRW1wdHlTdGF0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgYm9keVRleHQgPSAnJztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIERpc3BsYXlzIHByaW1hcnkgYnV0dG9uIGlmIHBhc3NlZC5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlcm9mIEVtcHR5U3RhdGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHByaW1hcnlCdXR0b25UZXh0ID0gJyc7XG5cbiAgLyoqXG4gICAqIFByaW1hcnkgYnV0dG9uIHZhcmlhbnQgLSBvbmx5IGZvciBuZXcgdGhlbWUuXG4gICAqIEB0eXBlIHtCdXR0b25WYXJpYW50fVxuICAgKiBAbWVtYmVyb2YgRW1wdHlTdGF0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgcHJpbWFyeUJ1dHRvblZhcmlhbnQ6IEJ1dHRvblZhcmlhbnQgPSAncGluayc7XG5cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE5hbWUgb2YgdWktaWNvbiBmb3IgcHJpbWFyeSBidXR0b25cbiAgICogQHR5cGUge0ljb25OYW1lfVxuICAgKiBAbWVtYmVyb2YgRW1wdHlTdGF0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgcHJpbWFyeUJ1dHRvbkljb25OYW1lOiBJY29uTmFtZSA9ICcnO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUG9zaXRpb24gb2YgdWktaWNvbiBmb3IgcHJpbWFyeSBidXR0b25cbiAgICogQHR5cGUge0J1dHRvbkljb25Qb3NpdGlvbn1cbiAgICogQG1lbWJlcm9mIEVtcHR5U3RhdGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHByaW1hcnlCdXR0b25JY29uUG9zaXRpb246IEJ1dHRvbkljb25Qb3NpdGlvbiA9ICdsZWZ0JztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIERpc3BsYXlzIHNlY29uZGFyeSBidXR0b24gaWYgcGFzc2VkLlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgRW1wdHlTdGF0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgc2Vjb25kYXJ5QnV0dG9uVGV4dCA9ICcnO1xuXG4gIC8qKlxuICAgKiBTZWNvbmRhcnkgYnV0dG9uIHZhcmlhbnQgLSBvbmx5IGZvciBuZXcgdGhlbWUuXG4gICAqIEB0eXBlIHtCdXR0b25WYXJpYW50fVxuICAgKiBAbWVtYmVyb2YgRW1wdHlTdGF0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgc2Vjb25kYXJ5QnV0dG9uVmFyaWFudDogQnV0dG9uVmFyaWFudCA9ICdibGFjayc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9mIHVpLWljb24gZm9yIHNlY29uZGFyeSBidXR0b25cbiAgICogQHR5cGUge0ljb25OYW1lfVxuICAgKiBAbWVtYmVyb2YgRW1wdHlTdGF0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgc2Vjb25kYXJ5QnV0dG9uSWNvbk5hbWU6IEljb25OYW1lID0gJyc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQb3NpdGlvbiBvZiB1aS1pY29uIGZvciBzZWNvbmRhcnkgYnV0dG9uXG4gICAqIEB0eXBlIHtCdXR0b25JY29uUG9zaXRpb259XG4gICAqIEBtZW1iZXJvZiBFbXB0eVN0YXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBzZWNvbmRhcnlCdXR0b25JY29uUG9zaXRpb246IEJ1dHRvbkljb25Qb3NpdGlvbiA9ICdsZWZ0JztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIERpc3BsYXlzIHRlcnRpYXJ5IGJ1dHRvbiBpZiBwYXNzZWQuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJvZiBFbXB0eVN0YXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSB0ZXJ0aWFyeUJ1dHRvblRleHQgPSAnJztcblxuICAvKipcbiAgICogVGVydGlhcnkgYnV0dG9uIHZhcmlhbnQgLSBvbmx5IGZvciBuZXcgdGhlbWUuXG4gICAqIEB0eXBlIHtCdXR0b25WYXJpYW50fVxuICAgKiBAbWVtYmVyb2YgRW1wdHlTdGF0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgdGVydGlhcnlCdXR0b25WYXJpYW50OiBCdXR0b25WYXJpYW50ID0gJ2dob3N0JztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE5hbWUgb2YgdWktaWNvbiBmb3IgdGVydGlhcnkgYnV0dG9uXG4gICAqIEB0eXBlIHtJY29uTmFtZX1cbiAgICogQG1lbWJlcm9mIEVtcHR5U3RhdGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHRlcnRpYXJ5QnV0dG9uSWNvbk5hbWU6IEljb25OYW1lID0gJyc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQb3NpdGlvbiBvZiB1aS1pY29uIGZvciB0ZXJ0aWFyeSBidXR0b25cbiAgICogQHR5cGUge0J1dHRvbkljb25Qb3NpdGlvbn1cbiAgICogQG1lbWJlcm9mIEVtcHR5U3RhdGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHRlcnRpYXJ5QnV0dG9uSWNvblBvc2l0aW9uOiBCdXR0b25JY29uUG9zaXRpb24gPSAnbGVmdCc7XG5cbiAgLyoqXG4gICAqXG4gICAqIERlZmluZXMgdGhlIGFwcGxpY2F0aW9uIHRoZW1lXG4gICAqXG4gICAqIEB0eXBlIHtBcHBsaWNhdGlvblRoZW1lfVxuICAgKiBAbWVtYmVyb2YgRW1wdHlTdGF0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgYXBwbGljYXRpb25UaGVtZTogQXBwbGljYXRpb25UaGVtZSA9ICdsaWdodCc7XG5cbiAgLyoqXG4gICAqIEV2ZW50IHRyaWdnZXJlZCB3aGVuIHRoZSBwcmltYXJ5IGJ1dHRvbiBpcyBjbGlja2VkLlxuICAgKiBAdHlwZSB7RXZlbnR9XG4gICAqIEBldmVudFxuICAgKiBAbWVtYmVyb2YgVGFnQ29tcG9uZW50XG4gICAqL1xuICBAT3V0cHV0KCkgcHJpbWFyeUJ1dHRvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICAvKipcbiAgICogRXZlbnQgdHJpZ2dlcmVkIHdoZW4gdGhlIHNlY29uZGFyeSBidXR0b24gaXMgY2xpY2tlZC5cbiAgICogQHR5cGUge0V2ZW50fVxuICAgKiBAZXZlbnRcbiAgICogQG1lbWJlcm9mIFRhZ0NvbXBvbmVudFxuICAgKi9cbiAgQE91dHB1dCgpIHNlY29uZGFyeUJ1dHRvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICAvKipcbiAgICogRXZlbnQgdHJpZ2dlcmVkIHdoZW4gdGhlIHRlcnRpYXJ5IGJ1dHRvbiBpcyBjbGlja2VkLlxuICAgKiBAdHlwZSB7RXZlbnR9XG4gICAqIEBldmVudFxuICAgKiBAbWVtYmVyb2YgVGFnQ29tcG9uZW50XG4gICAqL1xuICBAT3V0cHV0KCkgdGVydGlhcnlCdXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG5cbiAgYnV0dG9uQXBwbGljYXRpb25UaGVtZTogQXBwbGljYXRpb25UaGVtZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KCdDQU5PUFlVSV9ERUZBVUxUX0FQUExJQ0FUSU9OX1RIRU1FJykgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0QXBwVGhlbWU6IEFwcGxpY2F0aW9uVGhlbWUsXG4gICkge1xuICAgIGlmIChkZWZhdWx0QXBwVGhlbWUpIHtcbiAgICAgIHRoaXMuYXBwbGljYXRpb25UaGVtZSA9IGRlZmF1bHRBcHBUaGVtZTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5hcHBsaWNhdGlvblRoZW1lICE9PSAnY2xhc3NpYycpIHtcbiAgICAgIHRoaXMuYnV0dG9uQXBwbGljYXRpb25UaGVtZSA9IHRoaXMuYXBwbGljYXRpb25UaGVtZTtcbiAgICB9XG4gIH1cblxuICBvblByaW1hcnlCdXR0b25DbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnByaW1hcnlCdXR0b25DbGljay5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9uU2Vjb25kYXJ5QnV0dG9uQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5zZWNvbmRhcnlCdXR0b25DbGljay5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9uVGVydGlhcnlCdXR0b25DbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnRlcnRpYXJ5QnV0dG9uQ2xpY2suZW1pdChldmVudCk7XG4gIH1cblxuICBnZXRWYXJpYW50KHZhcmlhbnQ6IEJ1dHRvblZhcmlhbnQpIHtcbiAgICBpZiAodmFyaWFudCA9PT0gJ3BpbmsnKSB7XG4gICAgICByZXR1cm4gJ3ByaW1hcnknO1xuICAgIH0gZWxzZSBpZiAodmFyaWFudCA9PT0gJ2JsYWNrJykge1xuICAgICAgdGhpcy5idXR0b25BcHBsaWNhdGlvblRoZW1lID0gJ2xpZ2h0JztcbiAgICAgIHJldHVybiAnc2Vjb25kYXJ5JztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5idXR0b25BcHBsaWNhdGlvblRoZW1lID0gJ2xpZ2h0JztcbiAgICAgIHJldHVybiAnZ2hvc3QnO1xuICAgIH1cbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lcj5cbiAgPGRpdiBjbGFzcz1cImVtcHR5LXN0YXRlLWNvbnRhaW5lclwiIFthdHRyLnRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIiBbY2xhc3MubW9iaWxlXT1cImVtcHR5U3RhdGVWYXJpYW50ID09PSAnbW9iaWxlJ1wiPlxuXG4gICAgPGRpdiBjbGFzcz1cImlsbHVzdHJhdGlvblwiICpuZ0lmPVwic2hvd0lsbHVzdHJhdGlvblwiIFthdHRyLmFyaWEtaGlkZGVuXT1cInRydWVcIj5cbiAgICAgIDxpbWcgKm5nSWY9XCJhcHBsaWNhdGlvblRoZW1lID09PSAnY2xhc3NpYydcIiBbYXR0ci5zcmNdPVwiJy9pbWFnZXMvZW1wdHktc3RhdGUtZGVmYXVsdC5zdmcnXCIgW3dpZHRoXT1cIjE2MFwiIFtoZWlnaHRdPVwiMTYwXCIgYWx0PVwiaWxsdXN0cmF0aW9uXCI+XG4gICAgICA8aW1nICpuZ0lmPVwiYXBwbGljYXRpb25UaGVtZSAhPT0gJ2NsYXNzaWMnXCIgW2F0dHIuc3JjXT1cIicvaWNvbnMvcmVicmFuZC8nK2lsbHVzdHJhdGlvblZhcmlhbnQrJy1pbi1saW5lLnN2ZydcIiBbd2lkdGhdPVwiMTYwXCIgW2hlaWdodF09XCIxNjBcIiBhbHQ9XCJpbGx1c3RyYXRpb25cIj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJpY29uXCIgKm5nSWY9XCJpY29uXCI+XG4gICAgICA8dWktaWNvbiBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCIgW25hbWVdPVwiaWNvblwiIHNpemU9XCI0MFwiPjwvdWktaWNvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNvbnRlbnRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPnt7IHRpdGxlID8gdGl0bGUgOiAoJ0NPTU1PTi5OT19SRVNVTFRTJykgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jIH19PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYm9keS10ZXh0XCIgKm5nSWY9XCJib2R5VGV4dFwiPnt7IGJvZHlUZXh0IH19PC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxuICAgICAgPHVpLWJ1dHRvbiBbZnVsbFdpZHRoXT1cImVtcHR5U3RhdGVWYXJpYW50ID09PSAnbW9iaWxlJ1wiIFthcHBsaWNhdGlvblRoZW1lXT1cImJ1dHRvbkFwcGxpY2F0aW9uVGhlbWVcIiBjbGFzcz1cImFjdGlvbi1idXR0b25cIiAqbmdJZj1cInByaW1hcnlCdXR0b25UZXh0XCIgW3ZhcmlhbnRdPVwiYXBwbGljYXRpb25UaGVtZSAhPT0gJ2NsYXNzaWMnID8gZ2V0VmFyaWFudChwcmltYXJ5QnV0dG9uVmFyaWFudCkgOiAncHJpbWFyeSdcIiBbbGFiZWxdPVwicHJpbWFyeUJ1dHRvblRleHRcIiBbaWNvbk5hbWVdPVwicHJpbWFyeUJ1dHRvbkljb25OYW1lXCIgW2ljb25Qb3NpdGlvbl09XCJwcmltYXJ5QnV0dG9uSWNvblBvc2l0aW9uXCIgKGJ1dHRvbkNsaWNrRXZlbnQpPVwib25QcmltYXJ5QnV0dG9uQ2xpY2soJGV2ZW50KVwiPjwvdWktYnV0dG9uPlxuICAgICAgPHVpLWJ1dHRvbiBbZnVsbFdpZHRoXT1cImVtcHR5U3RhdGVWYXJpYW50ID09PSAnbW9iaWxlJ1wiIFthcHBsaWNhdGlvblRoZW1lXT1cImJ1dHRvbkFwcGxpY2F0aW9uVGhlbWVcIiBjbGFzcz1cImFjdGlvbi1idXR0b25cIiAqbmdJZj1cInNlY29uZGFyeUJ1dHRvblRleHRcIiBbdmFyaWFudF09XCJhcHBsaWNhdGlvblRoZW1lICE9PSAnY2xhc3NpYycgPyBnZXRWYXJpYW50KHNlY29uZGFyeUJ1dHRvblZhcmlhbnQpIDogJ3NlY29uZGFyeSdcIiBbbGFiZWxdPVwic2Vjb25kYXJ5QnV0dG9uVGV4dFwiIFtpY29uTmFtZV09XCJzZWNvbmRhcnlCdXR0b25JY29uTmFtZVwiIFtpY29uUG9zaXRpb25dPVwic2Vjb25kYXJ5QnV0dG9uSWNvblBvc2l0aW9uXCIgKGJ1dHRvbkNsaWNrRXZlbnQpPVwib25TZWNvbmRhcnlCdXR0b25DbGljaygkZXZlbnQpXCI+PC91aS1idXR0b24+XG4gICAgICA8dWktYnV0dG9uIFtmdWxsV2lkdGhdPVwiZW1wdHlTdGF0ZVZhcmlhbnQgPT09ICdtb2JpbGUnXCIgW2FwcGxpY2F0aW9uVGhlbWVdPVwiYnV0dG9uQXBwbGljYXRpb25UaGVtZVwiIGNsYXNzPVwiYWN0aW9uLWJ1dHRvblwiICpuZ0lmPVwidGVydGlhcnlCdXR0b25UZXh0XCIgW3ZhcmlhbnRdPVwiYXBwbGljYXRpb25UaGVtZSAhPT0gJ2NsYXNzaWMnID8gZ2V0VmFyaWFudCh0ZXJ0aWFyeUJ1dHRvblZhcmlhbnQpIDogJ3RlcnRpYXJ5J1wiIFtsYWJlbF09XCJ0ZXJ0aWFyeUJ1dHRvblRleHRcIiBbaWNvbk5hbWVdPVwidGVydGlhcnlCdXR0b25JY29uTmFtZVwiIFtpY29uUG9zaXRpb25dPVwidGVydGlhcnlCdXR0b25JY29uUG9zaXRpb25cIiAoYnV0dG9uQ2xpY2tFdmVudCk9XCJvblRlcnRpYXJ5QnV0dG9uQ2xpY2soJGV2ZW50KVwiPjwvdWktYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG4iXX0=
241
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHktc3RhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxZQUFZLEVBQVksTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7O0FBV25FLE1BQU0sT0FBTyxtQkFBbUI7SUFxQzlCOzs7O09BSUc7SUFDSCxJQUFhLFFBQVEsQ0FBQyxLQUFhO1FBQ2pDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkUsQ0FBQztJQUNILENBQUM7SUF5SEQsWUFDNkUsZUFBaUM7UUFBakMsb0JBQWUsR0FBZixlQUFlLENBQWtCO1FBdkt0RyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUU1QyxpQkFBWSxHQUFhLEVBQUUsQ0FBQztRQUM1Qjs7OztXQUlHO1FBQ00scUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ2xDOzs7O1dBSUc7UUFDTSx3QkFBbUIsR0FBd0IsY0FBYyxDQUFDO1FBQ25FOzs7O1dBSUc7UUFDTSxTQUFJLEdBQWEsRUFBRSxDQUFDO1FBRTdCOzs7O1dBSUc7UUFDTSxzQkFBaUIsR0FBc0IsU0FBUyxDQUFDO1FBRTFEOzs7O1dBSUc7UUFDTSxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBYXBCOzs7O1dBSUc7UUFDTSxzQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFFaEM7Ozs7V0FJRztRQUNNLHlCQUFvQixHQUFrQixNQUFNLENBQUM7UUFFdEQ7Ozs7V0FJRztRQUNNLDBCQUFxQixHQUFhLEVBQUUsQ0FBQztRQUU5Qzs7OztXQUlHO1FBQ00sOEJBQXlCLEdBQXVCLE1BQU0sQ0FBQztRQUVoRTs7OztXQUlHO1FBQ00sd0JBQW1CLEdBQUcsRUFBRSxDQUFDO1FBRWxDOzs7O1dBSUc7UUFDTSwyQkFBc0IsR0FBa0IsT0FBTyxDQUFDO1FBRXpEOzs7O1dBSUc7UUFDTSw0QkFBdUIsR0FBYSxFQUFFLENBQUM7UUFFaEQ7Ozs7V0FJRztRQUNNLGdDQUEyQixHQUF1QixNQUFNLENBQUM7UUFFbEU7Ozs7V0FJRztRQUNNLHVCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUVqQzs7OztXQUlHO1FBQ00sMEJBQXFCLEdBQWtCLE9BQU8sQ0FBQztRQUV4RDs7OztXQUlHO1FBQ00sMkJBQXNCLEdBQWEsRUFBRSxDQUFDO1FBRS9DOzs7O1dBSUc7UUFDTSwrQkFBMEIsR0FBdUIsTUFBTSxDQUFDO1FBRWpFOzs7Ozs7V0FNRztRQUNNLHFCQUFnQixHQUFxQixPQUFPLENBQUM7UUFFdEQ7Ozs7O1dBS0c7UUFDTyx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO1FBRXpEOzs7OztXQUtHO1FBQ08seUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQVMsQ0FBQztRQUUzRDs7Ozs7V0FLRztRQUNPLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7UUFPeEQsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDO1FBQzFDLENBQUM7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDdEQsQ0FBQztJQUNILENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxLQUFZO1FBQy9CLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELHNCQUFzQixDQUFDLEtBQVk7UUFDakMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQscUJBQXFCLENBQUMsS0FBWTtRQUNoQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxVQUFVLENBQUMsT0FBc0I7UUFDL0IsSUFBSSxPQUFPLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDdkIsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQzthQUFNLElBQUksT0FBTyxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxPQUFPLENBQUM7WUFDdEMsT0FBTyxXQUFXLENBQUM7UUFDckIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsc0JBQXNCLEdBQUcsT0FBTyxDQUFDO1lBQ3RDLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7SUFDSCxDQUFDOytHQTNNVSxtQkFBbUIsa0JBd0tSLG9DQUFvQzttR0F4Sy9DLG1CQUFtQix5L0JDWmhDLHEwRUEyQkE7OzRGRGZhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxnQkFBZ0I7OzBCQTRLdkIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxvQ0FBb0M7eUNBL0pqRCxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBTUcsbUJBQW1CO3NCQUEzQixLQUFLO2dCQU1HLElBQUk7c0JBQVosS0FBSztnQkFPRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBT0csS0FBSztzQkFBYixLQUFLO2dCQU9PLFFBQVE7c0JBQXBCLEtBQUs7Z0JBV0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQU9HLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFPRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBT0cseUJBQXlCO3NCQUFqQyxLQUFLO2dCQU9HLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFPRyxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBT0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQU9HLDJCQUEyQjtzQkFBbkMsS0FBSztnQkFPRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBT0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQU9HLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFPRywwQkFBMEI7c0JBQWxDLEtBQUs7Z0JBU0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQVFJLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFRRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBUUcsbUJBQW1CO3NCQUE1QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5qZWN0LCBJbnB1dCwgT3B0aW9uYWwsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgQXBwbGljYXRpb25UaGVtZSB9IGZyb20gJy4uLy4uL21vZGVscy9hcHBsaWNhdGlvbi10aGVtZS5tb2RlbCc7XG5pbXBvcnQgeyBCdXR0b25JY29uUG9zaXRpb24gfSBmcm9tICcuLi9idXR0b24vYnV0dG9uLm1vZGVsJztcbmltcG9ydCB7IEljb25OYW1lIH0gZnJvbSAnLi4vaWNvbi9pY29uLm1vZGVsJztcbmltcG9ydCB7IEJ1dHRvblZhcmlhbnQsIEVtcHR5U3RhdGVWYXJpYW50LCBJbGx1c3RyYXRpb25WYXJpYW50IH0gZnJvbSAnLi9lbXB0eS1zdGF0ZS5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3VpLWVtcHR5LXN0YXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VtcHR5LXN0YXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZW1wdHktc3RhdGUuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRW1wdHlTdGF0ZUNvbXBvbmVudCB7XG4gIHByaXZhdGUgZG9tU2FuaXRpemVyID0gaW5qZWN0KERvbVNhbml0aXplcik7XG5cbiAgc2FmZUJvZHlUZXh0OiBTYWZlSHRtbCA9ICcnO1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIElmIHRoZSBkZWZhdWx0IGltYWdlIHNob3VsZCBiZSBkaXNwbGF5ZWQuXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgRW1wdHlTdGF0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgc2hvd0lsbHVzdHJhdGlvbiA9IGZhbHNlO1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIElmIHRoZSBkZWZhdWx0IGltYWdlIHNob3VsZCBiZSBkaXNwbGF5ZWQuXG4gICAqIEB0eXBlIHtJbGx1c3RyYXRpb25WYXJpYW50fVxuICAgKiBAbWVtYmVyb2YgRW1wdHlTdGF0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgaWxsdXN0cmF0aW9uVmFyaWFudDogSWxsdXN0cmF0aW9uVmFyaWFudCA9ICdFbXB0eS1zZWFyY2gnO1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBpY29uIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZW1wdHkgc3RhdGUuXG4gICAqIEB0eXBlIHtJY29uTmFtZX1cbiAgICogQG1lbWJlcm9mIEVtcHR5U3RhdGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGljb246IEljb25OYW1lID0gJyc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgZW1wdHkgc3RhdGUgdmFyaWFudC5cbiAgICogQHR5cGUge0VtcHR5U3RhdGVWYXJpYW50fVxuICAgKiBAbWVtYmVyb2YgRW1wdHlTdGF0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgZW1wdHlTdGF0ZVZhcmlhbnQ6IEVtcHR5U3RhdGVWYXJpYW50ID0gJ2Rlc2t0b3AnO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVGhlIHRpdGxlIG9mIHRoZSBlbXB0eSBzdGF0ZS5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlcm9mIEVtcHR5U3RhdGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHRpdGxlID0gJyc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgYm9keSB0ZXh0IG9yIGRlc2NyaXB0aW9uIG9mIHRoZSBlbXB0eSBzdGF0ZS5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlcm9mIEVtcHR5U3RhdGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHNldCBib2R5VGV4dCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLnNhZmVCb2R5VGV4dCA9IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIERpc3BsYXlzIHByaW1hcnkgYnV0dG9uIGlmIHBhc3NlZC5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlcm9mIEVtcHR5U3RhdGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHByaW1hcnlCdXR0b25UZXh0ID0gJyc7XG5cbiAgLyoqXG4gICAqIFByaW1hcnkgYnV0dG9uIHZhcmlhbnQgLSBvbmx5IGZvciBuZXcgdGhlbWUuXG4gICAqIEB0eXBlIHtCdXR0b25WYXJpYW50fVxuICAgKiBAbWVtYmVyb2YgRW1wdHlTdGF0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgcHJpbWFyeUJ1dHRvblZhcmlhbnQ6IEJ1dHRvblZhcmlhbnQgPSAncGluayc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9mIHVpLWljb24gZm9yIHByaW1hcnkgYnV0dG9uXG4gICAqIEB0eXBlIHtJY29uTmFtZX1cbiAgICogQG1lbWJlcm9mIEVtcHR5U3RhdGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHByaW1hcnlCdXR0b25JY29uTmFtZTogSWNvbk5hbWUgPSAnJztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFBvc2l0aW9uIG9mIHVpLWljb24gZm9yIHByaW1hcnkgYnV0dG9uXG4gICAqIEB0eXBlIHtCdXR0b25JY29uUG9zaXRpb259XG4gICAqIEBtZW1iZXJvZiBFbXB0eVN0YXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBwcmltYXJ5QnV0dG9uSWNvblBvc2l0aW9uOiBCdXR0b25JY29uUG9zaXRpb24gPSAnbGVmdCc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEaXNwbGF5cyBzZWNvbmRhcnkgYnV0dG9uIGlmIHBhc3NlZC5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlcm9mIEVtcHR5U3RhdGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHNlY29uZGFyeUJ1dHRvblRleHQgPSAnJztcblxuICAvKipcbiAgICogU2Vjb25kYXJ5IGJ1dHRvbiB2YXJpYW50IC0gb25seSBmb3IgbmV3IHRoZW1lLlxuICAgKiBAdHlwZSB7QnV0dG9uVmFyaWFudH1cbiAgICogQG1lbWJlcm9mIEVtcHR5U3RhdGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHNlY29uZGFyeUJ1dHRvblZhcmlhbnQ6IEJ1dHRvblZhcmlhbnQgPSAnYmxhY2snO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvZiB1aS1pY29uIGZvciBzZWNvbmRhcnkgYnV0dG9uXG4gICAqIEB0eXBlIHtJY29uTmFtZX1cbiAgICogQG1lbWJlcm9mIEVtcHR5U3RhdGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHNlY29uZGFyeUJ1dHRvbkljb25OYW1lOiBJY29uTmFtZSA9ICcnO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUG9zaXRpb24gb2YgdWktaWNvbiBmb3Igc2Vjb25kYXJ5IGJ1dHRvblxuICAgKiBAdHlwZSB7QnV0dG9uSWNvblBvc2l0aW9ufVxuICAgKiBAbWVtYmVyb2YgRW1wdHlTdGF0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgc2Vjb25kYXJ5QnV0dG9uSWNvblBvc2l0aW9uOiBCdXR0b25JY29uUG9zaXRpb24gPSAnbGVmdCc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEaXNwbGF5cyB0ZXJ0aWFyeSBidXR0b24gaWYgcGFzc2VkLlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgRW1wdHlTdGF0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgdGVydGlhcnlCdXR0b25UZXh0ID0gJyc7XG5cbiAgLyoqXG4gICAqIFRlcnRpYXJ5IGJ1dHRvbiB2YXJpYW50IC0gb25seSBmb3IgbmV3IHRoZW1lLlxuICAgKiBAdHlwZSB7QnV0dG9uVmFyaWFudH1cbiAgICogQG1lbWJlcm9mIEVtcHR5U3RhdGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHRlcnRpYXJ5QnV0dG9uVmFyaWFudDogQnV0dG9uVmFyaWFudCA9ICdnaG9zdCc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9mIHVpLWljb24gZm9yIHRlcnRpYXJ5IGJ1dHRvblxuICAgKiBAdHlwZSB7SWNvbk5hbWV9XG4gICAqIEBtZW1iZXJvZiBFbXB0eVN0YXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSB0ZXJ0aWFyeUJ1dHRvbkljb25OYW1lOiBJY29uTmFtZSA9ICcnO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUG9zaXRpb24gb2YgdWktaWNvbiBmb3IgdGVydGlhcnkgYnV0dG9uXG4gICAqIEB0eXBlIHtCdXR0b25JY29uUG9zaXRpb259XG4gICAqIEBtZW1iZXJvZiBFbXB0eVN0YXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSB0ZXJ0aWFyeUJ1dHRvbkljb25Qb3NpdGlvbjogQnV0dG9uSWNvblBvc2l0aW9uID0gJ2xlZnQnO1xuXG4gIC8qKlxuICAgKlxuICAgKiBEZWZpbmVzIHRoZSBhcHBsaWNhdGlvbiB0aGVtZVxuICAgKlxuICAgKiBAdHlwZSB7QXBwbGljYXRpb25UaGVtZX1cbiAgICogQG1lbWJlcm9mIEVtcHR5U3RhdGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGFwcGxpY2F0aW9uVGhlbWU6IEFwcGxpY2F0aW9uVGhlbWUgPSAnbGlnaHQnO1xuXG4gIC8qKlxuICAgKiBFdmVudCB0cmlnZ2VyZWQgd2hlbiB0aGUgcHJpbWFyeSBidXR0b24gaXMgY2xpY2tlZC5cbiAgICogQHR5cGUge0V2ZW50fVxuICAgKiBAZXZlbnRcbiAgICogQG1lbWJlcm9mIFRhZ0NvbXBvbmVudFxuICAgKi9cbiAgQE91dHB1dCgpIHByaW1hcnlCdXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIEV2ZW50IHRyaWdnZXJlZCB3aGVuIHRoZSBzZWNvbmRhcnkgYnV0dG9uIGlzIGNsaWNrZWQuXG4gICAqIEB0eXBlIHtFdmVudH1cbiAgICogQGV2ZW50XG4gICAqIEBtZW1iZXJvZiBUYWdDb21wb25lbnRcbiAgICovXG4gIEBPdXRwdXQoKSBzZWNvbmRhcnlCdXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIEV2ZW50IHRyaWdnZXJlZCB3aGVuIHRoZSB0ZXJ0aWFyeSBidXR0b24gaXMgY2xpY2tlZC5cbiAgICogQHR5cGUge0V2ZW50fVxuICAgKiBAZXZlbnRcbiAgICogQG1lbWJlcm9mIFRhZ0NvbXBvbmVudFxuICAgKi9cbiAgQE91dHB1dCgpIHRlcnRpYXJ5QnV0dG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuXG4gIGJ1dHRvbkFwcGxpY2F0aW9uVGhlbWU6IEFwcGxpY2F0aW9uVGhlbWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdCgnQ0FOT1BZVUlfREVGQVVMVF9BUFBMSUNBVElPTl9USEVNRScpIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdEFwcFRoZW1lOiBBcHBsaWNhdGlvblRoZW1lXG4gICkge1xuICAgIGlmIChkZWZhdWx0QXBwVGhlbWUpIHtcbiAgICAgIHRoaXMuYXBwbGljYXRpb25UaGVtZSA9IGRlZmF1bHRBcHBUaGVtZTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5hcHBsaWNhdGlvblRoZW1lICE9PSAnY2xhc3NpYycpIHtcbiAgICAgIHRoaXMuYnV0dG9uQXBwbGljYXRpb25UaGVtZSA9IHRoaXMuYXBwbGljYXRpb25UaGVtZTtcbiAgICB9XG4gIH1cblxuICBvblByaW1hcnlCdXR0b25DbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnByaW1hcnlCdXR0b25DbGljay5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9uU2Vjb25kYXJ5QnV0dG9uQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5zZWNvbmRhcnlCdXR0b25DbGljay5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9uVGVydGlhcnlCdXR0b25DbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnRlcnRpYXJ5QnV0dG9uQ2xpY2suZW1pdChldmVudCk7XG4gIH1cblxuICBnZXRWYXJpYW50KHZhcmlhbnQ6IEJ1dHRvblZhcmlhbnQpIHtcbiAgICBpZiAodmFyaWFudCA9PT0gJ3BpbmsnKSB7XG4gICAgICByZXR1cm4gJ3ByaW1hcnknO1xuICAgIH0gZWxzZSBpZiAodmFyaWFudCA9PT0gJ2JsYWNrJykge1xuICAgICAgdGhpcy5idXR0b25BcHBsaWNhdGlvblRoZW1lID0gJ2xpZ2h0JztcbiAgICAgIHJldHVybiAnc2Vjb25kYXJ5JztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5idXR0b25BcHBsaWNhdGlvblRoZW1lID0gJ2xpZ2h0JztcbiAgICAgIHJldHVybiAnZ2hvc3QnO1xuICAgIH1cbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lcj5cbiAgPGRpdiBjbGFzcz1cImVtcHR5LXN0YXRlLWNvbnRhaW5lclwiIFthdHRyLnRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIiBbY2xhc3MubW9iaWxlXT1cImVtcHR5U3RhdGVWYXJpYW50ID09PSAnbW9iaWxlJ1wiPlxuXG4gICAgPGRpdiBjbGFzcz1cImlsbHVzdHJhdGlvblwiICpuZ0lmPVwic2hvd0lsbHVzdHJhdGlvblwiIFthdHRyLmFyaWEtaGlkZGVuXT1cInRydWVcIj5cbiAgICAgIDxpbWcgKm5nSWY9XCJhcHBsaWNhdGlvblRoZW1lID09PSAnY2xhc3NpYydcIiBbYXR0ci5zcmNdPVwiJy9pbWFnZXMvZW1wdHktc3RhdGUtZGVmYXVsdC5zdmcnXCIgW3dpZHRoXT1cIjE2MFwiIFtoZWlnaHRdPVwiMTYwXCIgYWx0PVwiaWxsdXN0cmF0aW9uXCI+XG4gICAgICA8aW1nICpuZ0lmPVwiYXBwbGljYXRpb25UaGVtZSAhPT0gJ2NsYXNzaWMnXCIgW2F0dHIuc3JjXT1cIicvaWNvbnMvcmVicmFuZC8nK2lsbHVzdHJhdGlvblZhcmlhbnQrJy1pbi1saW5lLnN2ZydcIiBbd2lkdGhdPVwiMTYwXCIgW2hlaWdodF09XCIxNjBcIiBhbHQ9XCJpbGx1c3RyYXRpb25cIj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJpY29uXCIgKm5nSWY9XCJpY29uXCI+XG4gICAgICA8dWktaWNvbiBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCIgW25hbWVdPVwiaWNvblwiIHNpemU9XCI0MFwiPjwvdWktaWNvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNvbnRlbnRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPnt7IHRpdGxlID8gdGl0bGUgOiAoJ0NPTU1PTi5OT19SRVNVTFRTJykgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jIH19PC9kaXY+XG4gICAgICBAaWYgKHNhZmVCb2R5VGV4dCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9keS10ZXh0XCIgW2lubmVySFRNTF09XCJzYWZlQm9keVRleHRcIj48L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCI+XG4gICAgICA8dWktYnV0dG9uIFtmdWxsV2lkdGhdPVwiZW1wdHlTdGF0ZVZhcmlhbnQgPT09ICdtb2JpbGUnXCIgW2FwcGxpY2F0aW9uVGhlbWVdPVwiYnV0dG9uQXBwbGljYXRpb25UaGVtZVwiIGNsYXNzPVwiYWN0aW9uLWJ1dHRvblwiICpuZ0lmPVwicHJpbWFyeUJ1dHRvblRleHRcIiBbdmFyaWFudF09XCJhcHBsaWNhdGlvblRoZW1lICE9PSAnY2xhc3NpYycgPyBnZXRWYXJpYW50KHByaW1hcnlCdXR0b25WYXJpYW50KSA6ICdwcmltYXJ5J1wiIFtsYWJlbF09XCJwcmltYXJ5QnV0dG9uVGV4dFwiIFtpY29uTmFtZV09XCJwcmltYXJ5QnV0dG9uSWNvbk5hbWVcIiBbaWNvblBvc2l0aW9uXT1cInByaW1hcnlCdXR0b25JY29uUG9zaXRpb25cIiAoYnV0dG9uQ2xpY2tFdmVudCk9XCJvblByaW1hcnlCdXR0b25DbGljaygkZXZlbnQpXCI+PC91aS1idXR0b24+XG4gICAgICA8dWktYnV0dG9uIFtmdWxsV2lkdGhdPVwiZW1wdHlTdGF0ZVZhcmlhbnQgPT09ICdtb2JpbGUnXCIgW2FwcGxpY2F0aW9uVGhlbWVdPVwiYnV0dG9uQXBwbGljYXRpb25UaGVtZVwiIGNsYXNzPVwiYWN0aW9uLWJ1dHRvblwiICpuZ0lmPVwic2Vjb25kYXJ5QnV0dG9uVGV4dFwiIFt2YXJpYW50XT1cImFwcGxpY2F0aW9uVGhlbWUgIT09ICdjbGFzc2ljJyA/IGdldFZhcmlhbnQoc2Vjb25kYXJ5QnV0dG9uVmFyaWFudCkgOiAnc2Vjb25kYXJ5J1wiIFtsYWJlbF09XCJzZWNvbmRhcnlCdXR0b25UZXh0XCIgW2ljb25OYW1lXT1cInNlY29uZGFyeUJ1dHRvbkljb25OYW1lXCIgW2ljb25Qb3NpdGlvbl09XCJzZWNvbmRhcnlCdXR0b25JY29uUG9zaXRpb25cIiAoYnV0dG9uQ2xpY2tFdmVudCk9XCJvblNlY29uZGFyeUJ1dHRvbkNsaWNrKCRldmVudClcIj48L3VpLWJ1dHRvbj5cbiAgICAgIDx1aS1idXR0b24gW2Z1bGxXaWR0aF09XCJlbXB0eVN0YXRlVmFyaWFudCA9PT0gJ21vYmlsZSdcIiBbYXBwbGljYXRpb25UaGVtZV09XCJidXR0b25BcHBsaWNhdGlvblRoZW1lXCIgY2xhc3M9XCJhY3Rpb24tYnV0dG9uXCIgKm5nSWY9XCJ0ZXJ0aWFyeUJ1dHRvblRleHRcIiBbdmFyaWFudF09XCJhcHBsaWNhdGlvblRoZW1lICE9PSAnY2xhc3NpYycgPyBnZXRWYXJpYW50KHRlcnRpYXJ5QnV0dG9uVmFyaWFudCkgOiAndGVydGlhcnknXCIgW2xhYmVsXT1cInRlcnRpYXJ5QnV0dG9uVGV4dFwiIFtpY29uTmFtZV09XCJ0ZXJ0aWFyeUJ1dHRvbkljb25OYW1lXCIgW2ljb25Qb3NpdGlvbl09XCJ0ZXJ0aWFyeUJ1dHRvbkljb25Qb3NpdGlvblwiIChidXR0b25DbGlja0V2ZW50KT1cIm9uVGVydGlhcnlCdXR0b25DbGljaygkZXZlbnQpXCI+PC91aS1idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbiJdfQ==