@skyux/lookup 10.30.0 → 10.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/documentation.json +865 -851
- package/esm2022/lib/modules/autocomplete/autocomplete.component.mjs +6 -5
- package/esm2022/lib/modules/autocomplete/autocomplete.module.mjs +3 -2
- package/esm2022/lib/modules/country-field/country-field.component.mjs +2 -2
- package/esm2022/lib/modules/country-field/country-field.module.mjs +2 -2
- package/esm2022/lib/modules/lookup/lookup-show-more-modal.component.mjs +4 -4
- package/esm2022/lib/modules/lookup/lookup.component.mjs +5 -4
- package/esm2022/lib/modules/lookup/lookup.module.mjs +3 -2
- package/esm2022/lib/modules/search/search.component.mjs +2 -2
- package/esm2022/lib/modules/search/search.module.mjs +2 -2
- package/esm2022/lib/modules/selection-modal/selection-modal.component.mjs +7 -5
- package/fesm2022/skyux-lookup.mjs +12 -10
- package/fesm2022/skyux-lookup.mjs.map +1 -1
- package/lib/modules/autocomplete/autocomplete.module.d.ts +4 -3
- package/lib/modules/country-field/country-field.module.d.ts +1 -1
- package/lib/modules/lookup/lookup.module.d.ts +3 -2
- package/lib/modules/search/search.module.d.ts +1 -1
- package/package.json +11 -10
|
@@ -19,8 +19,9 @@ import * as i3 from "@skyux/theme";
|
|
|
19
19
|
import * as i4 from "@angular/common";
|
|
20
20
|
import * as i5 from "../autocomplete/autocomplete.component";
|
|
21
21
|
import * as i6 from "../autocomplete/autocomplete-input.directive";
|
|
22
|
-
import * as i7 from "@skyux/
|
|
23
|
-
import * as i8 from "@skyux/
|
|
22
|
+
import * as i7 from "@skyux/icon";
|
|
23
|
+
import * as i8 from "@skyux/indicators";
|
|
24
|
+
import * as i9 from "@skyux/i18n";
|
|
24
25
|
export class SkyLookupComponent extends SkyLookupAutocompleteAdapter {
|
|
25
26
|
/**
|
|
26
27
|
* The data source for the lookup component to search when users
|
|
@@ -665,7 +666,7 @@ export class SkyLookupComponent extends SkyLookupAutocompleteAdapter {
|
|
|
665
666
|
return !!(this.#openNativePicker || this.#openSelectionModal);
|
|
666
667
|
}
|
|
667
668
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: SkyLookupComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i2.SkyInputBoxHostService, optional: true }, { token: i3.SkyThemeService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
668
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: SkyLookupComponent, selector: "sky-lookup", inputs: { ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", autocompleteAttribute: "autocompleteAttribute", data: "data", disabled: "disabled", enableShowMore: "enableShowMore", placeholderText: "placeholderText", idProperty: "idProperty", showAddButton: "showAddButton", showMoreConfig: "showMoreConfig", selectMode: "selectMode", wrapperClass: "wrapperClass" }, outputs: { addClick: "addClick", openChange: "openChange" }, providers: [SkyLookupAdapterService], viewQueries: [{ propertyName: "autocompleteInputDirective", first: true, predicate: SkyAutocompleteInputDirective, descendants: true, read: SkyAutocompleteInputDirective }, { propertyName: "showMoreButtonTemplateRef", first: true, predicate: ["showMoreButtonTemplateRef"], descendants: true, read: TemplateRef, static: true }, { propertyName: "inputTemplateRef", first: true, predicate: ["inputTemplateRef"], descendants: true, read: TemplateRef, static: true }, { propertyName: "lookupWrapperRef", first: true, predicate: ["lookupWrapper"], descendants: true, read: ElementRef }, { propertyName: "searchIconTemplateRef", first: true, predicate: ["searchIconTemplateRef"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"!inputBoxHostSvc\">\n <ng-container *ngTemplateOutlet=\"inputTemplateRef\"></ng-container>\n</ng-container>\n\n<ng-template #inputTemplateRef>\n <div\n class=\"sky-lookup\"\n [ngClass]=\"{\n 'sky-lookup-focused': isInputFocused,\n 'sky-lookup-disabled': disabled,\n 'sky-lookup-single': selectMode === 'single'\n }\"\n #lookupWrapper\n >\n <sky-autocomplete\n [ariaLabelledBy]=\"ariaLabelledBy || controlId\"\n [attr.data-sky-lookup-show-more-picker-id]=\"showMorePickerId\"\n [data]=\"data\"\n [debounceTime]=\"debounceTime\"\n [descriptorProperty]=\"descriptorProperty\"\n [enableShowMore]=\"enableShowMore\"\n [messageStream]=\"autocompleteController\"\n [propertiesToSearch]=\"propertiesToSearch\"\n [search]=\"searchOrDefault\"\n [searchAsyncDisabled]=\"searchAsync.observers.length === 0\"\n [searchFilters]=\"searchFilters\"\n [searchResultsLimit]=\"searchResultsLimit\"\n [searchResultTemplate]=\"searchResultTemplate\"\n [searchTextMinimumCharacters]=\"searchTextMinimumCharacters\"\n [showAddButton]=\"showAddButton\"\n [wrapperClass]=\"wrapperClass\"\n (addClick)=\"addButtonClicked()\"\n (searchAsync)=\"onSearchAsync($event)\"\n (selectionChange)=\"onAutocompleteSelectionChange($event)\"\n (showMoreClick)=\"onShowMoreClick($event)\"\n (openChange)=\"onAutocompleteOpenChange($event)\"\n >\n <div class=\"sky-lookup-search-flex-wrapper\">\n <div\n class=\"sky-lookup-search\"\n [ngClass]=\"{\n 'sky-field-status-active': isInputFocused && !disabled\n }\"\n >\n <sky-tokens\n *ngIf=\"selectMode === 'multiple'\"\n class=\"sky-lookup-tokens\"\n [disabled]=\"disabled\"\n [displayWith]=\"descriptorProperty\"\n [focusable]=\"false\"\n [messageStream]=\"tokensController\"\n [trackWith]=\"idProperty\"\n [tokens]=\"tokens\"\n (keyup)=\"onTokensKeyUp($event)\"\n (tokensChange)=\"onTokensChange($event)\"\n (tokensRendered)=\"onTokensRendered()\"\n (tokenSelected)=\"enableShowMore ? openPicker('') : undefined\"\n (focusIndexOverRange)=\"onTokensFocusIndexOverRange()\"\n >\n <textarea\n class=\"sky-form-control sky-lookup-input\"\n rows=\"1\"\n skyAutocomplete\n wrap=\"off\"\n [attr.aria-describedby]=\"ariaDescribedBy | async\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.id]=\"controlId\"\n [attr.placeholder]=\"placeholderText\"\n [autocompleteAttribute]=\"autocompleteAttribute\"\n [disabled]=\"disabled\"\n (blur)=\"onAutocompleteBlur()\"\n (keydown)=\"inputKeydown($event)\"\n (keyup)=\"inputKeyup($event)\"\n ></textarea>\n <ng-container *ngIf=\"!inputBoxHostSvc && !enableShowMore\">\n <ng-container\n *ngTemplateOutlet=\"searchIconTemplateRef\"\n ></ng-container>\n </ng-container>\n </sky-tokens>\n <div\n *ngIf=\"selectMode === 'single'\"\n class=\"sky-lookup-single-control\"\n >\n <textarea\n class=\"sky-form-control sky-lookup-input\"\n rows=\"1\"\n skyAutocomplete\n wrap=\"off\"\n [attr.aria-describedby]=\"ariaDescribedBy | async\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.id]=\"controlId\"\n [attr.placeholder]=\"placeholderText\"\n [autocompleteAttribute]=\"autocompleteAttribute\"\n [disabled]=\"disabled\"\n (blur)=\"onAutocompleteBlur()\"\n ></textarea>\n <ng-container *ngIf=\"!inputBoxHostSvc && !enableShowMore\">\n <ng-container\n *ngTemplateOutlet=\"searchIconTemplateRef\"\n ></ng-container>\n </ng-container>\n </div>\n </div>\n <ng-container *ngIf=\"!inputBoxHostSvc && enableShowMore\">\n <ng-container\n *ngTemplateOutlet=\"showMoreButtonTemplateRef\"\n ></ng-container>\n </ng-container>\n </div>\n </sky-autocomplete>\n </div>\n</ng-template>\n\n<ng-template #showMoreButtonTemplateRef>\n <div class=\"sky-input-group-btn\">\n <button\n class=\"sky-btn sky-btn-default\"\n [disabled]=\"disabled\"\n [ngClass]=\"{ 'sky-btn-disabled': disabled }\"\n type=\"button\"\n [attr.aria-label]=\"\n 'skyux_lookup_search_button_show_more' | skyLibResources\n \"\n (click)=\"onSearchButtonClick()\"\n >\n <sky-icon icon=\"search\" />\n </button>\n </div>\n</ng-template>\n\n<ng-template #searchIconTemplateRef>\n <div\n class=\"sky-input-group-icon sky-input-box-icon-inset\"\n [ngClass]=\"{ 'sky-lookup-disabled': disabled }\"\n >\n <sky-icon icon=\"search\" />\n </div>\n</ng-template>\n", styles: [".sky-lookup .sky-lookup-input.sky-form-control{resize:none;border:0;box-sizing:content-box;height:1.428571429em;overflow:hidden;padding:0;background-color:transparent}.sky-lookup .sky-lookup-input.sky-form-control:focus{outline:none;box-shadow:none}.sky-lookup .sky-lookup-search-flex-wrapper{display:flex}.sky-lookup.sky-lookup-disabled .sky-lookup-search{background-color:#cdcfd2}.sky-lookup sky-tokens.sky-lookup-tokens:focus{outline:none}.sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens{margin-top:-5px;margin-bottom:-5px}.sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens .sky-tokens-content{padding-top:5px;padding-bottom:5px;padding-left:10px;flex-basis:100px}.sky-lookup .sky-lookup-single-control{display:inline-flex;padding-left:7px;width:100%}.sky-lookup-search{cursor:text;background-color:#fff;line-height:1.428571429em;padding:6px 12px 6px 3px;flex-grow:1}.sky-lookup-search:not(.sky-field-status-active){border-top:1px solid #cdcfd2;border-bottom:1px solid #cdcfd2;border-left:1px solid #cdcfd2;border-right:1px solid #cdcfd2}.sky-lookup-disabled .sky-lookup-search{cursor:default}.sky-lookup-focused .sky-tokens-content{flex-basis:100px}.sky-lookup-single sky-tokens.sky-lookup-tokens sky-token{display:none}sky-lookup.ng-invalid.ng-touched .sky-lookup-search{box-shadow:0 0 8px #ef404499;border:1px solid var(--sky-highlight-color-danger);outline:none}sky-input-box .sky-lookup{width:100%}sky-input-box .sky-lookup .sky-lookup-search{border:none;padding-bottom:5px;width:100%}:host-context(.sky-theme-modern) sky-tokens.sky-lookup-tokens .sky-tokens{margin-top:-6px}:host-context(.sky-theme-modern) sky-input-box .sky-lookup{margin-top:-26px;padding-top:26px}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens sky-token{z-index:1}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens{margin-top:0;margin-bottom:0}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens sky-token{padding-bottom:0;padding-top:0}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens .sky-tokens-content{padding-bottom:0;padding-top:0}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens .sky-tokens-content:first-child{padding-left:0}:host-context(.sky-theme-modern) sky-input-box .sky-lookup.sky-lookup-single sky-tokens.sky-lookup-tokens .sky-tokens-content{padding-left:0}:host-context(.sky-theme-modern) sky-input-box .sky-lookup .sky-lookup-search{background-color:transparent;padding:0 0 0 15px}:host-context(.sky-theme-modern) sky-input-box .sky-lookup .sky-lookup-search.sky-field-status-active{box-shadow:none}:host-context(.sky-theme-modern) sky-input-box .sky-lookup textarea.sky-lookup-input.sky-form-control{padding-left:0;resize:none}:host-context(.sky-theme-modern) sky-input-box .sky-lookup .sky-lookup-single-control{padding-left:0}.sky-theme-modern sky-tokens.sky-lookup-tokens .sky-tokens{margin-top:-6px}.sky-theme-modern sky-input-box .sky-lookup{margin-top:-26px;padding-top:26px}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens sky-token{z-index:1}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens{margin-top:0;margin-bottom:0}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens sky-token{padding-bottom:0;padding-top:0}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens .sky-tokens-content{padding-bottom:0;padding-top:0}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens .sky-tokens-content:first-child{padding-left:0}.sky-theme-modern sky-input-box .sky-lookup.sky-lookup-single sky-tokens.sky-lookup-tokens .sky-tokens-content{padding-left:0}.sky-theme-modern sky-input-box .sky-lookup .sky-lookup-search{background-color:transparent;padding:0 0 0 15px}.sky-theme-modern sky-input-box .sky-lookup .sky-lookup-search.sky-field-status-active{box-shadow:none}.sky-theme-modern sky-input-box .sky-lookup textarea.sky-lookup-input.sky-form-control{padding-left:0;resize:none}.sky-theme-modern sky-input-box .sky-lookup .sky-lookup-single-control{padding-left:0}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.SkyAutocompleteComponent, selector: "sky-autocomplete", inputs: ["ariaLabelledBy", "data", "debounceTime", "descriptorProperty", "enableShowMore", "messageStream", "wrapperClass", "propertiesToSearch", "search", "searchResultTemplate", "searchTextMinimumCharacters", "searchFilters", "searchResultsLimit", "showAddButton", "noResultsFoundText", "searchAsyncDisabled"], outputs: ["addClick", "showMoreClick", "selectionChange", "searchAsync", "openChange"] }, { kind: "directive", type: i6.SkyAutocompleteInputDirective, selector: "input[skyAutocomplete], textarea[skyAutocomplete]", inputs: ["autocompleteAttribute", "disabled"] }, { kind: "component", type: i7.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { kind: "component", type: i7.λ13, selector: "sky-tokens", inputs: ["disabled", "dismissible", "displayWith", "trackWith", "focusable", "tokens", "messageStream"], outputs: ["focusIndexOverRange", "focusIndexUnderRange", "tokenSelected", "tokensChange", "tokensRendered"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
669
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: SkyLookupComponent, selector: "sky-lookup", inputs: { ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", autocompleteAttribute: "autocompleteAttribute", data: "data", disabled: "disabled", enableShowMore: "enableShowMore", placeholderText: "placeholderText", idProperty: "idProperty", showAddButton: "showAddButton", showMoreConfig: "showMoreConfig", selectMode: "selectMode", wrapperClass: "wrapperClass" }, outputs: { addClick: "addClick", openChange: "openChange" }, providers: [SkyLookupAdapterService], viewQueries: [{ propertyName: "autocompleteInputDirective", first: true, predicate: SkyAutocompleteInputDirective, descendants: true, read: SkyAutocompleteInputDirective }, { propertyName: "showMoreButtonTemplateRef", first: true, predicate: ["showMoreButtonTemplateRef"], descendants: true, read: TemplateRef, static: true }, { propertyName: "inputTemplateRef", first: true, predicate: ["inputTemplateRef"], descendants: true, read: TemplateRef, static: true }, { propertyName: "lookupWrapperRef", first: true, predicate: ["lookupWrapper"], descendants: true, read: ElementRef }, { propertyName: "searchIconTemplateRef", first: true, predicate: ["searchIconTemplateRef"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"!inputBoxHostSvc\">\n <ng-container *ngTemplateOutlet=\"inputTemplateRef\"></ng-container>\n</ng-container>\n\n<ng-template #inputTemplateRef>\n <div\n class=\"sky-lookup\"\n [ngClass]=\"{\n 'sky-lookup-focused': isInputFocused,\n 'sky-lookup-disabled': disabled,\n 'sky-lookup-single': selectMode === 'single'\n }\"\n #lookupWrapper\n >\n <sky-autocomplete\n [ariaLabelledBy]=\"ariaLabelledBy || controlId\"\n [attr.data-sky-lookup-show-more-picker-id]=\"showMorePickerId\"\n [data]=\"data\"\n [debounceTime]=\"debounceTime\"\n [descriptorProperty]=\"descriptorProperty\"\n [enableShowMore]=\"enableShowMore\"\n [messageStream]=\"autocompleteController\"\n [propertiesToSearch]=\"propertiesToSearch\"\n [search]=\"searchOrDefault\"\n [searchAsyncDisabled]=\"searchAsync.observers.length === 0\"\n [searchFilters]=\"searchFilters\"\n [searchResultsLimit]=\"searchResultsLimit\"\n [searchResultTemplate]=\"searchResultTemplate\"\n [searchTextMinimumCharacters]=\"searchTextMinimumCharacters\"\n [showAddButton]=\"showAddButton\"\n [wrapperClass]=\"wrapperClass\"\n (addClick)=\"addButtonClicked()\"\n (searchAsync)=\"onSearchAsync($event)\"\n (selectionChange)=\"onAutocompleteSelectionChange($event)\"\n (showMoreClick)=\"onShowMoreClick($event)\"\n (openChange)=\"onAutocompleteOpenChange($event)\"\n >\n <div class=\"sky-lookup-search-flex-wrapper\">\n <div\n class=\"sky-lookup-search\"\n [ngClass]=\"{\n 'sky-field-status-active': isInputFocused && !disabled\n }\"\n >\n <sky-tokens\n *ngIf=\"selectMode === 'multiple'\"\n class=\"sky-lookup-tokens\"\n [disabled]=\"disabled\"\n [displayWith]=\"descriptorProperty\"\n [focusable]=\"false\"\n [messageStream]=\"tokensController\"\n [trackWith]=\"idProperty\"\n [tokens]=\"tokens\"\n (keyup)=\"onTokensKeyUp($event)\"\n (tokensChange)=\"onTokensChange($event)\"\n (tokensRendered)=\"onTokensRendered()\"\n (tokenSelected)=\"enableShowMore ? openPicker('') : undefined\"\n (focusIndexOverRange)=\"onTokensFocusIndexOverRange()\"\n >\n <textarea\n class=\"sky-form-control sky-lookup-input\"\n rows=\"1\"\n skyAutocomplete\n wrap=\"off\"\n [attr.aria-describedby]=\"ariaDescribedBy | async\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.id]=\"controlId\"\n [attr.placeholder]=\"placeholderText\"\n [autocompleteAttribute]=\"autocompleteAttribute\"\n [disabled]=\"disabled\"\n (blur)=\"onAutocompleteBlur()\"\n (keydown)=\"inputKeydown($event)\"\n (keyup)=\"inputKeyup($event)\"\n ></textarea>\n <ng-container *ngIf=\"!inputBoxHostSvc && !enableShowMore\">\n <ng-container\n *ngTemplateOutlet=\"searchIconTemplateRef\"\n ></ng-container>\n </ng-container>\n </sky-tokens>\n <div\n *ngIf=\"selectMode === 'single'\"\n class=\"sky-lookup-single-control\"\n >\n <textarea\n class=\"sky-form-control sky-lookup-input\"\n rows=\"1\"\n skyAutocomplete\n wrap=\"off\"\n [attr.aria-describedby]=\"ariaDescribedBy | async\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.id]=\"controlId\"\n [attr.placeholder]=\"placeholderText\"\n [autocompleteAttribute]=\"autocompleteAttribute\"\n [disabled]=\"disabled\"\n (blur)=\"onAutocompleteBlur()\"\n ></textarea>\n <ng-container *ngIf=\"!inputBoxHostSvc && !enableShowMore\">\n <ng-container\n *ngTemplateOutlet=\"searchIconTemplateRef\"\n ></ng-container>\n </ng-container>\n </div>\n </div>\n <ng-container *ngIf=\"!inputBoxHostSvc && enableShowMore\">\n <ng-container\n *ngTemplateOutlet=\"showMoreButtonTemplateRef\"\n ></ng-container>\n </ng-container>\n </div>\n </sky-autocomplete>\n </div>\n</ng-template>\n\n<ng-template #showMoreButtonTemplateRef>\n <div class=\"sky-input-group-btn\">\n <button\n class=\"sky-btn sky-btn-default\"\n [disabled]=\"disabled\"\n [ngClass]=\"{ 'sky-btn-disabled': disabled }\"\n type=\"button\"\n [attr.aria-label]=\"\n 'skyux_lookup_search_button_show_more' | skyLibResources\n \"\n (click)=\"onSearchButtonClick()\"\n >\n <sky-icon icon=\"search\" />\n </button>\n </div>\n</ng-template>\n\n<ng-template #searchIconTemplateRef>\n <div\n class=\"sky-input-group-icon sky-input-box-icon-inset\"\n [ngClass]=\"{ 'sky-lookup-disabled': disabled }\"\n >\n <sky-icon icon=\"search\" />\n </div>\n</ng-template>\n", styles: [".sky-lookup .sky-lookup-input.sky-form-control{resize:none;border:0;box-sizing:content-box;height:1.428571429em;overflow:hidden;padding:0;background-color:transparent}.sky-lookup .sky-lookup-input.sky-form-control:focus{outline:none;box-shadow:none}.sky-lookup .sky-lookup-search-flex-wrapper{display:flex}.sky-lookup.sky-lookup-disabled .sky-lookup-search{background-color:#cdcfd2}.sky-lookup sky-tokens.sky-lookup-tokens:focus{outline:none}.sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens{margin-top:-5px;margin-bottom:-5px}.sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens .sky-tokens-content{padding-top:5px;padding-bottom:5px;padding-left:10px;flex-basis:100px}.sky-lookup .sky-lookup-single-control{display:inline-flex;padding-left:7px;width:100%}.sky-lookup-search{cursor:text;background-color:#fff;line-height:1.428571429em;padding:6px 12px 6px 3px;flex-grow:1}.sky-lookup-search:not(.sky-field-status-active){border-top:1px solid #cdcfd2;border-bottom:1px solid #cdcfd2;border-left:1px solid #cdcfd2;border-right:1px solid #cdcfd2}.sky-lookup-disabled .sky-lookup-search{cursor:default}.sky-lookup-focused .sky-tokens-content{flex-basis:100px}.sky-lookup-single sky-tokens.sky-lookup-tokens sky-token{display:none}sky-lookup.ng-invalid.ng-touched .sky-lookup-search{box-shadow:0 0 8px #ef404499;border:1px solid var(--sky-highlight-color-danger);outline:none}sky-input-box .sky-lookup{width:100%}sky-input-box .sky-lookup .sky-lookup-search{border:none;padding-bottom:5px;width:100%}:host-context(.sky-theme-modern) sky-tokens.sky-lookup-tokens .sky-tokens{margin-top:-6px}:host-context(.sky-theme-modern) sky-input-box .sky-lookup{margin-top:-26px;padding-top:26px}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens sky-token{z-index:1}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens{margin-top:0;margin-bottom:0}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens sky-token{padding-bottom:0;padding-top:0}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens .sky-tokens-content{padding-bottom:0;padding-top:0}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens .sky-tokens-content:first-child{padding-left:0}:host-context(.sky-theme-modern) sky-input-box .sky-lookup.sky-lookup-single sky-tokens.sky-lookup-tokens .sky-tokens-content{padding-left:0}:host-context(.sky-theme-modern) sky-input-box .sky-lookup .sky-lookup-search{background-color:transparent;padding:0 0 0 15px}:host-context(.sky-theme-modern) sky-input-box .sky-lookup .sky-lookup-search.sky-field-status-active{box-shadow:none}:host-context(.sky-theme-modern) sky-input-box .sky-lookup textarea.sky-lookup-input.sky-form-control{padding-left:0;resize:none}:host-context(.sky-theme-modern) sky-input-box .sky-lookup .sky-lookup-single-control{padding-left:0}.sky-theme-modern sky-tokens.sky-lookup-tokens .sky-tokens{margin-top:-6px}.sky-theme-modern sky-input-box .sky-lookup{margin-top:-26px;padding-top:26px}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens sky-token{z-index:1}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens{margin-top:0;margin-bottom:0}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens sky-token{padding-bottom:0;padding-top:0}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens .sky-tokens-content{padding-bottom:0;padding-top:0}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens .sky-tokens-content:first-child{padding-left:0}.sky-theme-modern sky-input-box .sky-lookup.sky-lookup-single sky-tokens.sky-lookup-tokens .sky-tokens-content{padding-left:0}.sky-theme-modern sky-input-box .sky-lookup .sky-lookup-search{background-color:transparent;padding:0 0 0 15px}.sky-theme-modern sky-input-box .sky-lookup .sky-lookup-search.sky-field-status-active{box-shadow:none}.sky-theme-modern sky-input-box .sky-lookup textarea.sky-lookup-input.sky-form-control{padding-left:0;resize:none}.sky-theme-modern sky-input-box .sky-lookup .sky-lookup-single-control{padding-left:0}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.SkyAutocompleteComponent, selector: "sky-autocomplete", inputs: ["ariaLabelledBy", "data", "debounceTime", "descriptorProperty", "enableShowMore", "messageStream", "wrapperClass", "propertiesToSearch", "search", "searchResultTemplate", "searchTextMinimumCharacters", "searchFilters", "searchResultsLimit", "showAddButton", "noResultsFoundText", "searchAsyncDisabled"], outputs: ["addClick", "showMoreClick", "selectionChange", "searchAsync", "openChange"] }, { kind: "directive", type: i6.SkyAutocompleteInputDirective, selector: "input[skyAutocomplete], textarea[skyAutocomplete]", inputs: ["autocompleteAttribute", "disabled"] }, { kind: "component", type: i7.λ1, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { kind: "component", type: i8.λ13, selector: "sky-tokens", inputs: ["disabled", "dismissible", "displayWith", "trackWith", "focusable", "tokens", "messageStream"], outputs: ["focusIndexOverRange", "focusIndexUnderRange", "tokenSelected", "tokensChange", "tokensRendered"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
669
670
|
}
|
|
670
671
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: SkyLookupComponent, decorators: [{
|
|
671
672
|
type: Component,
|
|
@@ -736,4 +737,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
736
737
|
static: true,
|
|
737
738
|
}]
|
|
738
739
|
}] } });
|
|
739
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvc3JjL2xpYi9tb2R1bGVzL2xvb2t1cC9sb29rdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC9zcmMvbGliL21vZHVsZXMvbG9va3VwL2xvb2t1cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBQ0osV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUzRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckQsT0FBTyxFQUdMLG9CQUFvQixHQUNyQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBb0IsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR2xFLE9BQU8sRUFBYyxPQUFPLEVBQUUsU0FBUyxJQUFJLG1CQUFtQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFN0YsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFJN0YsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFHdEYsT0FB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WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFNlbGYsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNreUFwcFdpbmRvd1JlZiwgU2t5SWRTZXJ2aWNlLCBTa3lMb2dTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHsgU2t5SW5wdXRCb3hIb3N0U2VydmljZSB9IGZyb20gJ0Bza3l1eC9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2kxOG4nO1xuaW1wb3J0IHtcbiAgU2t5VG9rZW4sXG4gIFNreVRva2Vuc01lc3NhZ2UsXG4gIFNreVRva2Vuc01lc3NhZ2VUeXBlLFxufSBmcm9tICdAc2t5dXgvaW5kaWNhdG9ycyc7XG5pbXBvcnQgeyBTa3lNb2RhbEluc3RhbmNlLCBTa3lNb2RhbFNlcnZpY2UgfSBmcm9tICdAc2t5dXgvbW9kYWxzJztcbmltcG9ydCB7IFNreVRoZW1lU2VydmljZSB9IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIGZyb21FdmVudCBhcyBvYnNlcnZhYmxlRnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlIH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS1pbnB1dC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU2t5QXV0b2NvbXBsZXRlTWVzc2FnZSB9IGZyb20gJy4uL2F1dG9jb21wbGV0ZS90eXBlcy9hdXRvY29tcGxldGUtbWVzc2FnZSc7XG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVNZXNzYWdlVHlwZSB9IGZyb20gJy4uL2F1dG9jb21wbGV0ZS90eXBlcy9hdXRvY29tcGxldGUtbWVzc2FnZS10eXBlJztcbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZVNlYXJjaEFzeW5jQXJncyB9IGZyb20gJy4uL2F1dG9jb21wbGV0ZS90eXBlcy9hdXRvY29tcGxldGUtc2VhcmNoLWFzeW5jLWFyZ3MnO1xuaW1wb3J0IHsgU2t5QXV0b2NvbXBsZXRlU2VsZWN0aW9uQ2hhbmdlIH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlL3R5cGVzL2F1dG9jb21wbGV0ZS1zZWxlY3Rpb24tY2hhbmdlJztcbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZVNob3dNb3JlQXJncyB9IGZyb20gJy4uL2F1dG9jb21wbGV0ZS90eXBlcy9hdXRvY29tcGxldGUtc2hvdy1tb3JlLWFyZ3MnO1xuaW1wb3J0IHsgU2t5U2VsZWN0aW9uTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vc2VsZWN0aW9uLW1vZGFsL3NlbGVjdGlvbi1tb2RhbC5zZXJ2aWNlJztcbmltcG9ydCB7IFNreVNlbGVjdGlvbk1vZGFsSW5zdGFuY2UgfSBmcm9tICcuLi9zZWxlY3Rpb24tbW9kYWwvdHlwZXMvc2VsZWN0aW9uLW1vZGFsLWluc3RhbmNlJztcblxuaW1wb3J0IHsgU2t5TG9va3VwQWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL2xvb2t1cC1hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5TG9va3VwQXV0b2NvbXBsZXRlQWRhcHRlciB9IGZyb20gJy4vbG9va3VwLWF1dG9jb21wbGV0ZS1hZGFwdGVyJztcbmltcG9ydCB7IFNreUxvb2t1cFNob3dNb3JlTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL2xvb2t1cC1zaG93LW1vcmUtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IFNreUxvb2t1cEFkZENhbGxiYWNrQXJncyB9IGZyb20gJy4vdHlwZXMvbG9va3VwLWFkZC1jbGljay1jYWxsYmFjay1hcmdzJztcbmltcG9ydCB7IFNreUxvb2t1cEFkZENsaWNrRXZlbnRBcmdzIH0gZnJvbSAnLi90eXBlcy9sb29rdXAtYWRkLWNsaWNrLWV2ZW50LWFyZ3MnO1xuaW1wb3J0IHsgU2t5TG9va3VwU2VsZWN0TW9kZVR5cGUgfSBmcm9tICcuL3R5cGVzL2xvb2t1cC1zZWxlY3QtbW9kZS10eXBlJztcbmltcG9ydCB7IFNreUxvb2t1cFNob3dNb3JlQ29uZmlnIH0gZnJvbSAnLi90eXBlcy9sb29rdXAtc2hvdy1tb3JlLWNvbmZpZyc7XG5pbXBvcnQgeyBTa3lMb29rdXBTaG93TW9yZU5hdGl2ZVBpY2tlckNvbnRleHQgfSBmcm9tICcuL3R5cGVzL2xvb2t1cC1zaG93LW1vcmUtbmF0aXZlLXBpY2tlci1jb250ZXh0JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWxvb2t1cCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9sb29rdXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9sb29rdXAuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbU2t5TG9va3VwQWRhcHRlclNlcnZpY2VdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2t5TG9va3VwQ29tcG9uZW50XG4gIGV4dGVuZHMgU2t5TG9va3VwQXV0b2NvbXBsZXRlQWRhcHRlclxuICBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3Nvclxue1xuICAvKipcbiAgICogVGhlIEFSSUEgbGFiZWwgZm9yIHRoZSB0eXBlYWhlYWQgc2VhcmNoIGlucHV0LiBUaGlzIHNldHMgdGhlIGlucHV0J3MgYGFyaWEtbGFiZWxgIGF0dHJpYnV0ZSB0byBwcm92aWRlIGEgdGV4dCBlcXVpdmFsZW50IGZvclxuICAgKiBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2FjY2Vzc2liaWxpdHkpLlxuICAgKiBJZiB0aGUgaW5wdXQgaW5jbHVkZXMgYSB2aXNpYmxlIGxhYmVsLCB1c2UgYGFyaWFMYWJlbGxlZEJ5YCBpbnN0ZWFkLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYGFyaWEtbGFiZWxgIGF0dHJpYnV0ZSwgc2VlIHRoZSBbV0FJLUFSSUEgZGVmaW5pdGlvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLyNhcmlhLWxhYmVsKS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIEhUTUwgZWxlbWVudCBJRCBvZiB0aGUgZWxlbWVudCB0aGF0IGxhYmVsc1xuICAgKiB0aGUgdHlwZWFoZWFkIHNlYXJjaCBpbnB1dC4gVGhpcyBzZXRzIHRoZSBpbnB1dCdzIGBhcmlhLWxhYmVsbGVkYnlgIGF0dHJpYnV0ZSB0byBwcm92aWRlIGEgdGV4dCBlcXVpdmFsZW50IGZvclxuICAgKiBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2FjY2Vzc2liaWxpdHkpLlxuICAgKiBJZiB0aGUgaW5wdXQgZG9lcyBub3QgaW5jbHVkZSBhIHZpc2libGUgbGFiZWwsIHVzZSBgYXJpYUxhYmVsYCBpbnN0ZWFkLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYGFyaWEtbGFiZWxsZWRieWAgYXR0cmlidXRlLCBzZWUgdGhlIFtXQUktQVJJQSBkZWZpbml0aW9uXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvI2FyaWEtbGFiZWxsZWRieSkuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXJpYUxhYmVsbGVkQnk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIHZhbHVlIGZvciB0aGUgYGF1dG9jb21wbGV0ZWAgYXR0cmlidXRlIG9uIHRoZSBmb3JtIGlucHV0LlxuICAgKiBAZGVmYXVsdCAnb2ZmJ1xuICAgKiBAZGVwcmVjYXRlZCBTS1kgVVggb25seSBzdXBwb3J0cyBicm93c2VyIGF1dG9maWxsIG9uIGNvbXBvbmVudHMgd2hlcmUgdGhlIGRpcmVjdCBpbnB1dCBtYXRjaGVzIHRoZSByZXR1cm4gdmFsdWUuIFRoaXMgaW5wdXQgbWF5IG5vdCBiZWhhdmUgYXMgZXhwZWN0ZWQgZHVlIHRvIHRoZSBkcm9wZG93biBzZWxlY3Rpb24gaW50ZXJhY3Rpb24uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXV0b2NvbXBsZXRlQXR0cmlidXRlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBkYXRhIHNvdXJjZSBmb3IgdGhlIGxvb2t1cCBjb21wb25lbnQgdG8gc2VhcmNoIHdoZW4gdXNlcnNcbiAgICogZW50ZXIgdGV4dC4gWW91IGNhbiBzcGVjaWZ5IHN0YXRpYyBkYXRhIHN1Y2ggYXMgYW4gYXJyYXkgb2Ygb2JqZWN0cywgb3JcbiAgICogeW91IGNhbiBwdWxsIGRhdGEgZnJvbSBhIGRhdGFiYXNlLlxuICAgKiBAZGVmYXVsdCBbXVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkYXRhKHZhbHVlOiBhbnlbXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19kYXRhID0gdmFsdWU7XG5cbiAgICBpZiAodGhpcy4jb3Blbk5hdGl2ZVBpY2tlciAmJiAhdGhpcy4jaGFzU2VhcmNoQXN5bmMoKSkge1xuICAgICAgdGhpcy4jb3Blbk5hdGl2ZVBpY2tlci5jb21wb25lbnRJbnN0YW5jZS51cGRhdGVJdGVtRGF0YSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBkYXRhKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy4jX2RhdGEgfHwgW107XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNhYmxlIHRoZSBsb29rdXAgZmllbGQgb24gdGVtcGxhdGUtZHJpdmVuIGZvcm1zLiBEb24ndCB1c2UgdGhpcyBpbnB1dCBvbiByZWFjdGl2ZSBmb3JtcyBiZWNhdXNlIHRoZXkgbWF5IG92ZXJ3cml0ZSB0aGUgaW5wdXQgb3IgbGVhdmUgdGhlIGNvbnRyb2wgb3V0IG9mIHN5bmMuXG4gICAqIFRvIHNldCB0aGUgZGlzYWJsZWQgc3RhdGUgb24gcmVhY3RpdmUgZm9ybXMsIHVzZSB0aGUgYEZvcm1Db250cm9sYCBpbnN0ZWFkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19kaXNhYmxlZCA9IHZhbHVlID8/IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2Rpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZW5hYmxlIHVzZXJzIHRvIG9wZW4gYSBwaWNrZXIgd2hlcmUgdGhleSBjYW4gdmlldyBhbGwgb3B0aW9ucy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZW5hYmxlU2hvd01vcmUodmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfZW5hYmxlU2hvd01vcmUgPSB2YWx1ZSA/PyBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZW5hYmxlU2hvd01vcmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI19lbmFibGVTaG93TW9yZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQbGFjZWhvbGRlciB0ZXh0IHRvIGRpc3BsYXkgaW4gdGhlIGxvb2t1cCBmaWVsZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwbGFjZWhvbGRlclRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIG9iamVjdCBwcm9wZXJ0eSB0aGF0IHJlcHJlc2VudHMgdGhlIG9iamVjdCdzIHVuaXF1ZSBpZGVudGlmaWVyLlxuICAgKiBTcGVjaWZ5aW5nIHRoaXMgcHJvcGVydHkgZW5hYmxlcyB0b2tlbiBhbmltYXRpb25zIGFuZCBtb3JlIGVmZmljaWVudCByZW5kZXJpbmcuXG4gICAqIFRoaXMgcHJvcGVydHkgaXMgcmVxdWlyZWQgd2hlbiB1c2luZyBgZW5hYmxlU2hvd01vcmVgIGFuZCBgc2VhcmNoQXN5bmNgIHRvZ2V0aGVyLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGlkUHJvcGVydHk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNwbGF5IGEgYnV0dG9uIHRoYXQgbGV0cyB1c2VycyBhZGQgb3B0aW9ucyB0byB0aGUgbGlzdC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2hvd0FkZEJ1dHRvbih2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19zaG93QWRkQnV0dG9uID0gdmFsdWUgPz8gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNob3dBZGRCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI19zaG93QWRkQnV0dG9uO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIHBpY2tlciB0aGF0IGRpc3BsYXlzIGFsbCBvcHRpb25zLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNob3dNb3JlQ29uZmlnOiBTa3lMb29rdXBTaG93TW9yZUNvbmZpZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGFiaWxpdHkgZm9yIHVzZXJzIHRvIHNlbGVjdCBvbmUgb3B0aW9uIG9yIG11bHRpcGxlIG9wdGlvbnMuXG4gICAqIEBkZWZhdWx0IFwibXVsdGlwbGVcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZWxlY3RNb2RlKHZhbHVlOiBTa3lMb29rdXBTZWxlY3RNb2RlVHlwZSB8IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IG11bHRpcGxlVG9TaW5nbGU6IGJvb2xlYW4gPVxuICAgICAgdmFsdWUgPT09ICdzaW5nbGUnICYmIHRoaXMuc2VsZWN0TW9kZSA9PT0gJ211bHRpcGxlJztcblxuICAgIHRoaXMuI19zZWxlY3RNb2RlID0gdmFsdWU7XG4gICAgdGhpcy4jdXBkYXRlRm9yU2VsZWN0TW9kZSgpO1xuXG4gICAgaWYgKG11bHRpcGxlVG9TaW5nbGUpIHtcbiAgICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUubGVuZ3RoID4gMSkge1xuICAgICAgICAvLyBUaGUgYHNldFRpbWVvdXRgIGlzIG5lZWRlZCB0byBhdm9pZCBhIGBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yYCBlcnJvciBpbiB0ZW1wbGF0ZSBmb3Jtcy5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy53cml0ZVZhbHVlKFt0aGlzLnZhbHVlWzBdXSk7XG4gICAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdE1vZGUoKTogU2t5TG9va3VwU2VsZWN0TW9kZVR5cGUge1xuICAgIHJldHVybiB0aGlzLiNfc2VsZWN0TW9kZSB8fCAnbXVsdGlwbGUnO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHdyYXBwZXJDbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIHNlbGVjdCB0aGUgYnV0dG9uIHRvIGFkZCBvcHRpb25zIHRvIHRoZSBsaXN0LlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBhZGRDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5TG9va3VwQWRkQ2xpY2tFdmVudEFyZ3M+KCk7XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBvcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHB1YmxpYyBnZXQgdG9rZW5zKCk6IFNreVRva2VuW10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfdG9rZW5zO1xuICB9XG5cbiAgcHVibGljIHNldCB0b2tlbnModmFsdWU6IFNreVRva2VuW10gfCB1bmRlZmluZWQpIHtcbiAgICAvLyBDb2xsYXBzZSB0aGUgdG9rZW5zIGludG8gYSBzaW5nbGUgdG9rZW4gaWYgdGhlIHVzZXIgaGFzIHNlbGVjdGVkIG1hbnkgb3B0aW9ucy5cbiAgICBpZiAodGhpcy5lbmFibGVTaG93TW9yZSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA+IDUpIHtcbiAgICAgIHRoaXMuI3Jlc291cmNlc1NlcnZpY2VcbiAgICAgICAgLmdldFN0cmluZygnc2t5dXhfbG9va3VwX3Rva2Vuc19zdW1tYXJ5JywgdGhpcy52YWx1ZS5sZW5ndGgudG9TdHJpbmcoKSlcbiAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgLnN1YnNjcmliZSgobGFiZWwpID0+IHtcbiAgICAgICAgICB0aGlzLiNfdG9rZW5zID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB2YWx1ZTogeyBbdGhpcy5kZXNjcmlwdG9yUHJvcGVydHldOiBsYWJlbCB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdO1xuICAgICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jX3Rva2VucyA9IHZhbHVlO1xuICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZSgpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuI192YWx1ZSA/IHRoaXMuI192YWx1ZSA6IFtdO1xuICB9XG5cbiAgcHVibGljIHNldCB2YWx1ZShuZXdWYWx1ZTogYW55W10pIHtcbiAgICB0aGlzLiNfdmFsdWUgPSBuZXdWYWx1ZTtcblxuICAgIGlmICghdGhpcy4jcGlja2VyTW9kYWxPcGVuKCkpIHtcbiAgICAgIHRoaXMudG9rZW5zID0gdGhpcy4jcGFyc2VUb2tlbnMobmV3VmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMub25DaGFuZ2UodGhpcy4jX3ZhbHVlKTtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICB9XG5cbiAgcHVibGljIGF1dG9jb21wbGV0ZUNvbnRyb2xsZXIgPSBuZXcgU3ViamVjdDxTa3lBdXRvY29tcGxldGVNZXNzYWdlPigpO1xuICBwdWJsaWMgaXNJbnB1dEZvY3VzZWQgPSBmYWxzZTtcbiAgcHVibGljIHNob3dNb3JlUGlja2VySWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHRva2Vuc0NvbnRyb2xsZXIgPSBuZXcgU3ViamVjdDxTa3lUb2tlbnNNZXNzYWdlPigpO1xuICBwcm90ZWN0ZWQgY29udHJvbElkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBhcmlhRGVzY3JpYmVkQnk6IE9ic2VydmFibGU8c3RyaW5nIHwgdW5kZWZpbmVkPiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKFNreUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlLCB7XG4gICAgcmVhZDogU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUsXG4gICAgc3RhdGljOiBmYWxzZSxcbiAgfSlcbiAgcHVibGljIHNldCBhdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZShcbiAgICB2YWx1ZTogU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUgfCB1bmRlZmluZWQsXG4gICkge1xuICAgIHRoaXMuI19hdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSA9IHZhbHVlO1xuICAgIHRoaXMuI3VwZGF0ZUZvclNlbGVjdE1vZGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUoKTpcbiAgICB8IFNreUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlXG4gICAgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmU7XG4gIH1cblxuICBAVmlld0NoaWxkKCdzaG93TW9yZUJ1dHRvblRlbXBsYXRlUmVmJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHVibGljIHNob3dNb3JlQnV0dG9uVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ2lucHV0VGVtcGxhdGVSZWYnLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwdWJsaWMgaW5wdXRUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgnbG9va3VwV3JhcHBlcicsIHtcbiAgICByZWFkOiBFbGVtZW50UmVmLFxuICB9KVxuICBwdWJsaWMgbG9va3VwV3JhcHBlclJlZjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCdzZWFyY2hJY29uVGVtcGxhdGVSZWYnLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwdWJsaWMgc2VhcmNoSWNvblRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICAjaWRsZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICNtYXJrRm9yVG9rZW5Gb2N1c09uS2V5VXAgPSBmYWxzZTtcbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAjb3Blbk5hdGl2ZVBpY2tlcjogU2t5TW9kYWxJbnN0YW5jZSB8IHVuZGVmaW5lZDtcbiAgI29wZW5TZWxlY3Rpb25Nb2RhbDogU2t5U2VsZWN0aW9uTW9kYWxJbnN0YW5jZSB8IHVuZGVmaW5lZDtcblxuICAjX2F1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlOiBTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSB8IHVuZGVmaW5lZDtcbiAgI19kYXRhOiBhbnlbXSB8IHVuZGVmaW5lZDtcbiAgI19kaXNhYmxlZCA9IGZhbHNlO1xuICAjX2VuYWJsZVNob3dNb3JlID0gZmFsc2U7XG4gICNfc2VsZWN0TW9kZTogU2t5TG9va3VwU2VsZWN0TW9kZVR5cGUgfCB1bmRlZmluZWQ7XG4gICNfc2hvd0FkZEJ1dHRvbiA9IGZhbHNlO1xuICAjX3Rva2VuczogU2t5VG9rZW5bXSB8IHVuZGVmaW5lZDtcbiAgI192YWx1ZTogYW55W10gfCB1bmRlZmluZWQ7XG5cbiAgcmVhZG9ubHkgI2FkYXB0ZXIgPSBpbmplY3QoU2t5TG9va3VwQWRhcHRlclNlcnZpY2UpO1xuICByZWFkb25seSAjY2hhbmdlRGV0ZWN0b3IgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICByZWFkb25seSAjZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcmVhZG9ubHkgI2lkU2VydmljZSA9IGluamVjdChTa3lJZFNlcnZpY2UpO1xuICByZWFkb25seSAjbG9nU3ZjID0gaW5qZWN0KFNreUxvZ1NlcnZpY2UpO1xuICByZWFkb25seSAjbW9kYWxTZXJ2aWNlID0gaW5qZWN0KFNreU1vZGFsU2VydmljZSk7XG4gIHJlYWRvbmx5ICNyZXNvdXJjZXNTZXJ2aWNlID0gaW5qZWN0KFNreUxpYlJlc291cmNlc1NlcnZpY2UpO1xuICByZWFkb25seSAjc2VsZWN0aW9uTW9kYWxTdmMgPSBpbmplY3QoU2t5U2VsZWN0aW9uTW9kYWxTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI3dpbmRvd1JlZiA9IGluamVjdChTa3lBcHBXaW5kb3dSZWYpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBTZWxmKCkgQE9wdGlvbmFsKCkgbmdDb250cm9sPzogTmdDb250cm9sLFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyBpbnB1dEJveEhvc3RTdmM/OiBTa3lJbnB1dEJveEhvc3RTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyB0aGVtZVN2Yz86IFNreVRoZW1lU2VydmljZSxcbiAgKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGlmIChuZ0NvbnRyb2wpIHtcbiAgICAgIG5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5wdXRCb3hIb3N0U3ZjICYmIHRoaXMuaW5wdXRUZW1wbGF0ZVJlZikge1xuICAgICAgdGhpcy5jb250cm9sSWQgPSB0aGlzLmlucHV0Qm94SG9zdFN2Yy5jb250cm9sSWQ7XG4gICAgICB0aGlzLmFyaWFEZXNjcmliZWRCeSA9IHRoaXMuaW5wdXRCb3hIb3N0U3ZjLmFyaWFEZXNjcmliZWRCeTtcblxuICAgICAgdGhpcy5pbnB1dEJveEhvc3RTdmMucG9wdWxhdGUoe1xuICAgICAgICBpbnB1dFRlbXBsYXRlOiB0aGlzLmlucHV0VGVtcGxhdGVSZWYsXG4gICAgICAgIGJ1dHRvbnNUZW1wbGF0ZTogdGhpcy5lbmFibGVTaG93TW9yZVxuICAgICAgICAgID8gdGhpcy5zaG93TW9yZUJ1dHRvblRlbXBsYXRlUmVmXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIGljb25zSW5zZXRUZW1wbGF0ZTogdGhpcy5lbmFibGVTaG93TW9yZVxuICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgOiB0aGlzLnNlYXJjaEljb25UZW1wbGF0ZVJlZixcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbnRyb2xJZCA9IHRoaXMuI2lkU2VydmljZS5nZW5lcmF0ZUlkKCk7XG4gICAgfVxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy50aGVtZVN2Yykge1xuICAgICAgLy8gVGhpcyBpcyByZXF1aXJlZCBmb3IgdGhlIGF1dG9jb21wbGV0ZSBkaXJlY3RpdmUgdG8gYmUgc2V0IGFmdGVyIGVsZW1lbnRzXG4gICAgICAvLyBhcmUgcmVhcnJhbmdlZCB3aGVuIHN3aXRjaGluZyB0aGVtZXMuXG4gICAgICB0aGlzLnRoZW1lU3ZjLnNldHRpbmdzQ2hhbmdlXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLiNhZGRFdmVudExpc3RlbmVycygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNyZW1vdmVFdmVudExpc3RlbmVycygpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB0aGlzLmFkZENsaWNrLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5vcGVuQ2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy50b2tlbnNDb250cm9sbGVyLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgYWRkQnV0dG9uQ2xpY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZENsaWNrLmVtaXQoe1xuICAgICAgaXRlbUFkZGVkOiAoYXJnczogU2t5TG9va3VwQWRkQ2FsbGJhY2tBcmdzKSA9PlxuICAgICAgICB0aGlzLiNvbkFkZEJ1dHRvbkNvbXBsZXRlKGFyZ3MpLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uQXV0b2NvbXBsZXRlU2VsZWN0aW9uQ2hhbmdlKFxuICAgIGNoYW5nZTogU2t5QXV0b2NvbXBsZXRlU2VsZWN0aW9uQ2hhbmdlLFxuICApOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChjaGFuZ2Uuc2VsZWN0ZWRJdGVtKSB7XG4gICAgICB0aGlzLiNhZGRUb1NlbGVjdGVkKGNoYW5nZS5zZWxlY3RlZEl0ZW0pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RNb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgdGhpcy53cml0ZVZhbHVlKFtdKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25BdXRvY29tcGxldGVCbHVyKCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gIH1cblxuICBwdWJsaWMgb25Ub2tlbnNDaGFuZ2UoY2hhbmdlOiBTa3lUb2tlbltdKTogdm9pZCB7XG4gICAgaWYgKCFjaGFuZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50b2tlbnMgIT09IGNoYW5nZSkge1xuICAgICAgaWYgKGNoYW5nZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy4jZm9jdXNJbnB1dCgpO1xuICAgICAgfVxuXG4gICAgICAvLyBOT1RFOiBXZSBkbyB0aGlzIGhlcmUgaW5zdGVhZCBvZiBqdXN0IHVzaW5nIHRoZSBgdmFsdWVgIHNldHRlciBiZWNhdXNlIHdlIG5lZWQgdG8gdXNlIHRoZVxuICAgICAgLy8gc2V0IG9mIHRva2VucyByZXR1cm5lZCBoZXJlIGZvciB0aGUgcHVycG9zZXMgb2Ygc2V0dGluZyBmb2N1cyAoc2VlIGBvblRva2Vuc0tleVVwYCkuXG4gICAgICB0aGlzLiNfdmFsdWUgPSBjaGFuZ2UubWFwKCh0b2tlbikgPT4ge1xuICAgICAgICByZXR1cm4gdG9rZW4udmFsdWU7XG4gICAgICB9KTtcbiAgICAgIHRoaXMudG9rZW5zID0gY2hhbmdlO1xuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLiNfdmFsdWUpO1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25Ub2tlbnNGb2N1c0luZGV4T3ZlclJhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuI3dpbmRvd1JlZi5uYXRpdmVXaW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLiNmb2N1c0lucHV0KCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25Ub2tlbnNLZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuc2VsZWN0TW9kZSAhPT0gJ3NpbmdsZScpIHtcbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XG4gICAgICAgICAgdGhpcy4jc2VuZFRva2Vuc01lc3NhZ2UoU2t5VG9rZW5zTWVzc2FnZVR5cGUuUmVtb3ZlQWN0aXZlVG9rZW4pO1xuICAgICAgICAgIHRoaXMuI3NlbmRUb2tlbnNNZXNzYWdlKFNreVRva2Vuc01lc3NhZ2VUeXBlLkZvY3VzUHJldmlvdXNUb2tlbik7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdEZWwnOlxuICAgICAgICBjYXNlICdEZWxldGUnOlxuICAgICAgICAgIHRoaXMuI3NlbmRUb2tlbnNNZXNzYWdlKFNreVRva2Vuc01lc3NhZ2VUeXBlLlJlbW92ZUFjdGl2ZVRva2VuKTtcbiAgICAgICAgICB0aGlzLiN3aW5kb3dSZWYubmF0aXZlV2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy4jc2VuZFRva2Vuc01lc3NhZ2UoU2t5VG9rZW5zTWVzc2FnZVR5cGUuRm9jdXNBY3RpdmVUb2tlbik7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25Ub2tlbnNSZW5kZXJlZCgpOiB2b2lkIHtcbiAgICB0aGlzLiNzZW5kQXV0b2NvbXBsZXRlTWVzc2FnZShcbiAgICAgIFNreUF1dG9jb21wbGV0ZU1lc3NhZ2VUeXBlLlJlcG9zaXRpb25Ecm9wZG93bixcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGFueVtdKTogdm9pZCB7XG4gICAgLy8gU2luY2Ugd2UgYXJlIGRlYWxpbmcgd2l0aCBhcnJheXMgLSBjbG9uZSB0aGUgYXJyYXkgYmVpbmcgc2VudCBpbiB0byBlbnN1cmUgd2UgYXJlbid0IG1vZGlmeWluZyBhIGNvbnN1bWVycyBvdXRlciBhcnJheVxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZSA/IHZhbHVlLnNsaWNlKCkgOiBbXTtcbiAgICB0aGlzLiN1cGRhdGVGb3JTZWxlY3RNb2RlKCk7XG4gIH1cblxuICAvLyBBbmd1bGFyIGF1dG9tYXRpY2FsbHkgY29uc3RydWN0cyB0aGVzZSBtZXRob2RzLlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIHB1YmxpYyBvbkNoYW5nZSA9ICh2YWx1ZTogYW55W10pID0+IHt9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIHB1YmxpYyBvblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLy8gQWxsb3dzIEFuZ3VsYXIgdG8gZGlzYWJsZSB0aGUgaW5wdXQuXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy4jcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTtcblxuICAgIGlmICghZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuI2FkZEV2ZW50TGlzdGVuZXJzKCk7XG4gICAgfVxuXG4gICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGNsZWFyU2VhcmNoVGV4dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSkge1xuICAgICAgdGhpcy5hdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZS52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUuaW5wdXRUZXh0VmFsdWUgPSAnJztcbiAgICB9XG4gIH1cblxuICAvLyBIYW5kbGVzIHdoZW4gdG8gZm9jdXMgb24gdGhlIHRva2Vucy5cbiAgLy8gQ2hlY2sgZm9yIGVtcHR5IHNlYXJjaCB0ZXh0IG9uIGtleWRvd24sIGJlZm9yZSB0aGUgZXNjYXBlIGtleSBpcyBmdWxseSBwcmVzc2VkLlxuICAvLyAoT3RoZXJ3aXNlLCBhIHNpbmdsZSBjaGFyYWN0ZXIgYmVpbmcgZXNjYXBlZCB3b3VsZCByZWdpc3RlciBhcyBlbXB0eSBvbiBrZXl1cC4pXG4gIC8vIElmIGVtcHR5IG9uIGtleWRvd24sIHNldCBhIGZsYWcgc28gdGhhdCB0aGUgYXBwcm9wcmlhdGUgYWN0aW9uIGNhbiBiZSB0YWtlbiBvbiBrZXl1cC5cbiAgcHVibGljIGlucHV0S2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MVGV4dEFyZWFFbGVtZW50KS52YWx1ZTtcblxuICAgIC8qIFNhbml0eSBjaGVjayBhcyB0aGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIGluIG11bHRpcGxlIHNlbGVjdCBtb2RlICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5zZWxlY3RNb2RlICE9PSAnc2luZ2xlJykge1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XG4gICAgICAgIGNhc2UgJ0xlZnQnOlxuICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy4jbWFya0ZvclRva2VuRm9jdXNPbktleVVwID0gZmFsc2U7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuI21hcmtGb3JUb2tlbkZvY3VzT25LZXlVcCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpbnB1dEtleXVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgLyogU2FuaXR5IGNoZWNrIGFzIHRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gaW4gbXVsdGlwbGUgc2VsZWN0IG1vZGUgKi9cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLnNlbGVjdE1vZGUgIT09ICdzaW5nbGUnKSB7XG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICBjYXNlICdFc2MnOlxuICAgICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgICAgIHRoaXMuY2xlYXJTZWFyY2hUZXh0KCk7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgY2FzZSAnQmFja3NwYWNlJzpcbiAgICAgICAgY2FzZSAnTGVmdCc6XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBpZiAodGhpcy4jbWFya0ZvclRva2VuRm9jdXNPbktleVVwKSB7XG4gICAgICAgICAgICB0aGlzLiNzZW5kVG9rZW5zTWVzc2FnZShTa3lUb2tlbnNNZXNzYWdlVHlwZS5Gb2N1c0xhc3RUb2tlbik7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgIH1cblxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uU2VhcmNoQnV0dG9uQ2xpY2soKTogdm9pZCB7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgbmV4dCovXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy4jc2VuZEF1dG9jb21wbGV0ZU1lc3NhZ2UoU2t5QXV0b2NvbXBsZXRlTWVzc2FnZVR5cGUuQ2xvc2VEcm9wZG93bik7XG4gICAgbGV0IGlzVmFsdWVJblRleHRCb3ggPSBmYWxzZTtcbiAgICBpZiAodGhpcy5zZWxlY3RNb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgaXNWYWx1ZUluVGV4dEJveCA9XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmU/LnZhbHVlICYmXG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUuaW5wdXRUZXh0VmFsdWUgPT09XG4gICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZS52YWx1ZVt0aGlzLmRlc2NyaXB0b3JQcm9wZXJ0eV07XG4gICAgfVxuXG4gICAgbGV0IHNlYXJjaFZhbHVlID0gJyc7XG5cbiAgICBpZiAoIWlzVmFsdWVJblRleHRCb3ggJiYgdGhpcy5hdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSkge1xuICAgICAgc2VhcmNoVmFsdWUgPSB0aGlzLmF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlLmlucHV0VGV4dFZhbHVlO1xuICAgIH1cblxuICAgIHRoaXMub3BlblBpY2tlcihzZWFyY2hWYWx1ZSk7XG4gICAgdGhpcy5hdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZT8ucmVzdG9yZUlucHV0VGV4dFZhbHVlVG9QcmV2aW91c1N0YXRlKCk7XG4gIH1cblxuICBwdWJsaWMgb25TaG93TW9yZUNsaWNrKGV2ZW50OiBTa3lBdXRvY29tcGxldGVTaG93TW9yZUFyZ3MpOiB2b2lkIHtcbiAgICAvKiBTYW5pdHkgY2hlY2sgKi9cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICB0aGlzLm9wZW5QaWNrZXIoZXZlbnQuaW5wdXRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9wZW5QaWNrZXIoaW5pdGlhbFNlYXJjaDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2hvd01vcmVDb25maWc/LmN1c3RvbVBpY2tlcikge1xuICAgICAgdGhpcy5zaG93TW9yZVBpY2tlcklkID0gdW5kZWZpbmVkO1xuXG4gICAgICB0aGlzLnNob3dNb3JlQ29uZmlnLmN1c3RvbVBpY2tlci5vcGVuKHtcbiAgICAgICAgaXRlbXM6IHRoaXMuZGF0YSxcbiAgICAgICAgaW5pdGlhbFNlYXJjaCxcbiAgICAgICAgaW5pdGlhbFZhbHVlOiB0aGlzLnZhbHVlLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGluaXRpYWxWYWx1ZSA9IHRoaXMudmFsdWU7XG5cbiAgICAgIGlmICh0aGlzLiNoYXNTZWFyY2hBc3luYygpKSB7XG4gICAgICAgIHRoaXMuI29wZW5TZWxlY3Rpb25Nb2RhbCA9XG4gICAgICAgICAgdGhpcy4jY3JlYXRlU2VsZWN0aW9uTW9kYWxJbnN0YW5jZShpbml0aWFsU2VhcmNoKTtcblxuICAgICAgICB0aGlzLnNob3dNb3JlUGlja2VySWQgPSB0aGlzLiNvcGVuU2VsZWN0aW9uTW9kYWwuaWQ7XG5cbiAgICAgICAgdGhpcy4jb3BlblNlbGVjdGlvbk1vZGFsLmNsb3NlZC5zdWJzY3JpYmUoKGNsb3NlQXJncykgPT4ge1xuICAgICAgICAgIHRoaXMuI3Byb2Nlc3NQaWNrZXJSZXN1bHQoXG4gICAgICAgICAgICBjbG9zZUFyZ3MucmVhc29uID09PSAnc2F2ZSdcbiAgICAgICAgICAgICAgPyBjbG9zZUFyZ3Muc2VsZWN0ZWRJdGVtc1xuICAgICAgICAgICAgICA6IGluaXRpYWxWYWx1ZSxcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuI29wZW5OYXRpdmVQaWNrZXIgPVxuICAgICAgICAgIHRoaXMuI2NyZWF0ZU5hdGl2ZVBpY2tlckluc3RhbmNlKGluaXRpYWxTZWFyY2gpO1xuXG4gICAgICAgIHRoaXMuc2hvd01vcmVQaWNrZXJJZCA9IHRoaXMuI29wZW5OYXRpdmVQaWNrZXIuY29tcG9uZW50SW5zdGFuY2UuaWQ7XG5cbiAgICAgICAgdGhpcy4jb3Blbk5hdGl2ZVBpY2tlci5jb21wb25lbnRJbnN0YW5jZS5hZGRDbGljay5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuYWRkQnV0dG9uQ2xpY2tlZCgpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLiNvcGVuTmF0aXZlUGlja2VyLmNsb3NlZC5zdWJzY3JpYmUoKGNsb3NlQXJncykgPT4ge1xuICAgICAgICAgIGxldCBzZWxlY3RlZEl0ZW1zOiBhbnlbXTtcblxuICAgICAgICAgIGlmIChjbG9zZUFyZ3MucmVhc29uID09PSAnc2F2ZScpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMgPSBbXTtcblxuICAgICAgICAgICAgdGhpcy5kYXRhLmZvckVhY2goKGl0ZW06IGFueSwgZGF0YUluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGNsb3NlQXJncy5kYXRhLnNvbWUoKHNhdmVkSXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gc2F2ZWRJdGVtLmluZGV4ID09PSBkYXRhSW5kZXg7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcyA9IGluaXRpYWxWYWx1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLiNwcm9jZXNzUGlja2VyUmVzdWx0KHNlbGVjdGVkSXRlbXMpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb25BdXRvY29tcGxldGVPcGVuQ2hhbmdlKCRldmVudDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICgkZXZlbnQpIHtcbiAgICAgIHRoaXMub3BlbkNoYW5nZS5lbWl0KHRydWUpO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuI3BpY2tlck1vZGFsT3BlbigpKSB7XG4gICAgICB0aGlzLm9wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgI2NyZWF0ZVNlbGVjdGlvbk1vZGFsSW5zdGFuY2UoXG4gICAgaW5pdGlhbFNlYXJjaDogc3RyaW5nLFxuICApOiBTa3lTZWxlY3Rpb25Nb2RhbEluc3RhbmNlIHtcbiAgICBjb25zdCBpbml0aWFsVmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgIGNvbnN0IG1vZGFsQ29uZmlnID0gdGhpcy5zaG93TW9yZUNvbmZpZz8ubmF0aXZlUGlja2VyQ29uZmlnIHx8IHt9O1xuXG4gICAgaWYgKCFtb2RhbENvbmZpZy5pdGVtVGVtcGxhdGUpIHtcbiAgICAgIG1vZGFsQ29uZmlnLml0ZW1UZW1wbGF0ZSA9IHRoaXMuc2VhcmNoUmVzdWx0VGVtcGxhdGU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaWRQcm9wZXJ0eSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLiNsb2dTdmMuZXJyb3IoXG4gICAgICAgIFwiVGhlIGxvb2t1cCBjb21wb25lbnQncyAnaWRQcm9wZXJ0eScgaW5wdXQgaXMgcmVxdWlyZWQgd2hlbiBgZW5hYmxlU2hvd01vcmVgIGFuZCAnc2VhcmNoQXN5bmMnIGFyZSB1c2VkIHRvZ2V0aGVyLlwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy4jc2VsZWN0aW9uTW9kYWxTdmMub3Blbih7XG4gICAgICBkZXNjcmlwdG9yUHJvcGVydHk6IHRoaXMuZGVzY3JpcHRvclByb3BlcnR5LFxuICAgICAgaWRQcm9wZXJ0eTogdGhpcy5pZFByb3BlcnR5ISxcbiAgICAgIHNlYXJjaEFzeW5jOiAoYXJncykgPT4ge1xuICAgICAgICBjb25zdCBzZWFyY2hBc3luY0FyZ3M6IFNreUF1dG9jb21wbGV0ZVNlYXJjaEFzeW5jQXJncyA9IHtcbiAgICAgICAgICBkaXNwbGF5VHlwZTogJ21vZGFsJyxcbiAgICAgICAgICBvZmZzZXQ6IGFyZ3Mub2Zmc2V0LFxuICAgICAgICAgIHNlYXJjaFRleHQ6IGFyZ3Muc2VhcmNoVGV4dCxcbiAgICAgICAgICBjb250aW51YXRpb25EYXRhOiBhcmdzLmNvbnRpbnVhdGlvbkRhdGEsXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5zZWFyY2hBc3luYy5lbWl0KHNlYXJjaEFzeW5jQXJncyk7XG5cbiAgICAgICAgcmV0dXJuIHNlYXJjaEFzeW5jQXJncy5yZXN1bHQ7XG4gICAgICB9LFxuICAgICAgc2VsZWN0TW9kZTogdGhpcy5zZWxlY3RNb2RlLFxuICAgICAgYWRkQ2xpY2s6ICgpID0+IHtcbiAgICAgICAgdGhpcy5hZGRCdXR0b25DbGlja2VkKCk7XG4gICAgICB9LFxuICAgICAgaW5pdGlhbFNlYXJjaCxcbiAgICAgIGl0ZW1UZW1wbGF0ZTogbW9kYWxDb25maWcuaXRlbVRlbXBsYXRlLFxuICAgICAgc2VsZWN0aW9uRGVzY3JpcHRvcjogbW9kYWxDb25maWcuc2VsZWN0aW9uRGVzY3JpcHRvcixcbiAgICAgIHNob3dBZGRCdXR0b246IHRoaXMuc2hvd0FkZEJ1dHRvbixcbiAgICAgIHRpdGxlOiBtb2RhbENvbmZpZy50aXRsZSxcbiAgICAgIHZhbHVlOiBpbml0aWFsVmFsdWUsXG4gICAgICB3cmFwcGVyQ2xhc3M6IHRoaXMud3JhcHBlckNsYXNzLFxuICAgIH0pO1xuICB9XG5cbiAgI2NyZWF0ZU5hdGl2ZVBpY2tlckluc3RhbmNlKGluaXRpYWxTZWFyY2g6IHN0cmluZyk6IFNreU1vZGFsSW5zdGFuY2Uge1xuICAgIGNvbnN0IGluaXRpYWxWYWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgY29uc3QgbW9kYWxDb25maWcgPSB0aGlzLnNob3dNb3JlQ29uZmlnPy5uYXRpdmVQaWNrZXJDb25maWcgfHwge307XG5cbiAgICBpZiAoIW1vZGFsQ29uZmlnLml0ZW1UZW1wbGF0ZSkge1xuICAgICAgbW9kYWxDb25maWcuaXRlbVRlbXBsYXRlID0gdGhpcy5zZWFyY2hSZXN1bHRUZW1wbGF0ZTtcbiAgICB9XG5cbiAgICBpZiAoIW1vZGFsQ29uZmlnLnNlbGVjdGlvbkRlc2NyaXB0b3IpIHtcbiAgICAgIG1vZGFsQ29uZmlnLnNlbGVjdGlvbkRlc2NyaXB0b3IgPVxuICAgICAgICB0aGlzLnNlbGVjdE1vZGUgPT09ICdzaW5nbGUnID8gJ2l0ZW0nIDogJ2l0ZW1zJztcbiAgICB9XG5cbiAgICBjb25zdCBjb250ZXh0UHJvdmlkZXJWYWx1ZSA9IG5ldyBTa3lMb29rdXBTaG93TW9yZU5hdGl2ZVBpY2tlckNvbnRleHQoXG4gICAgICB0aGlzLmRlc2NyaXB0b3JQcm9wZXJ0eSxcbiAgICAgIGluaXRpYWxTZWFyY2gsXG4gICAgICBpbml0aWFsVmFsdWUsXG4gICAgICB0aGlzLmRhdGEsXG4gICAgICB0aGlzLnNlYXJjaE9yRGVmYXVsdCxcbiAgICAgIHRoaXMuc2VsZWN0TW9kZSxcbiAgICAgIHRoaXMuc2hvd0FkZEJ1dHRvbixcbiAgICAgIG1vZGFsQ29uZmlnLFxuICAgICk7XG5cbiAgICByZXR1cm4gdGhpcy4jbW9kYWxTZXJ2aWNlLm9wZW4oU2t5TG9va3VwU2hvd01vcmVNb2RhbENvbXBvbmVudCwge1xuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBTa3lMb29rdXBTaG93TW9yZU5hdGl2ZVBpY2tlckNvbnRleHQsXG4gICAgICAgICAgdXNlVmFsdWU6IGNvbnRleHRQcm92aWRlclZhbHVlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogU2t5TG9va3VwQWRhcHRlclNlcnZpY2UsXG4gICAgICAgICAgdXNlVmFsdWU6IHRoaXMuI2FkYXB0ZXIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgc2l6ZTogJ2xhcmdlJyxcbiAgICAgIHdyYXBwZXJDbGFzczogdGhpcy53cmFwcGVyQ2xhc3MsXG4gICAgfSk7XG4gIH1cblxuICAjcHJvY2Vzc1BpY2tlclJlc3VsdChzZWxlY3RlZEl0ZW1zOiBhbnlbXSB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMuI29wZW5TZWxlY3Rpb25Nb2RhbCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLiNvcGVuTmF0aXZlUGlja2VyID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc2hvd01vcmVQaWNrZXJJZCA9IHVuZGVmaW5lZDtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgc2VsZWN0ZWRJdGVtcyA9IHNlbGVjdGVkSXRlbXMgfHwgW107XG5cbiAgICB0aGlzLndyaXRlVmFsdWUoc2VsZWN0ZWRJdGVtcyk7XG4gICAgdGhpcy4jZm9jdXNJbnB1dCgpO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIG9uU2VhcmNoQXN5bmMoYXJnczogU2t5QXV0b2NvbXBsZXRlU2VhcmNoQXN5bmNBcmdzKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hBc3luYy5lbWl0KGFyZ3MpO1xuICB9XG5cbiAgI2FkZFRvU2VsZWN0ZWQoaXRlbTogYW55KTogdm9pZCB7XG4gICAgbGV0IHNlbGVjdGVkSXRlbXM6IGFueVtdO1xuXG4gICAgaWYgKHRoaXMuc2VsZWN0TW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgIHNlbGVjdGVkSXRlbXMgPSBbaXRlbV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlbGVjdGVkSXRlbXMgPSB0aGlzLnZhbHVlO1xuXG4gICAgICBjb25zdCBpZFByb3BlcnR5ID0gdGhpcy5pZFByb3BlcnR5IHx8ICcnO1xuXG4gICAgICAvLyBJZiBpdGVtcyBoYXZlIGEgdW5pcXVlIGlkZW50aWZpZXIsIGRvbid0IGFsbG93IHRoZSBzYW1lIGl0ZW0gdG8gYmUgYWRkZWQgdHdpY2UuXG4gICAgICBpZiAoXG4gICAgICAgICF0aGlzLmlkUHJvcGVydHkgfHxcbiAgICAgICAgIXRoaXMudmFsdWUuc29tZShcbiAgICAgICAgICAoZXhpc3RpbmdJdGVtKSA9PiBleGlzdGluZ0l0ZW1baWRQcm9wZXJ0eV0gPT09IGl0ZW1baWRQcm9wZXJ0eV0sXG4gICAgICAgIClcbiAgICAgICkge1xuICAgICAgICBzZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2xlYXJTZWFyY2hUZXh0KCk7XG4gICAgfVxuXG4gICAgdGhpcy53cml0ZVZhbHVlKHNlbGVjdGVkSXRlbXMpO1xuICB9XG5cbiAgI2FkZEV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuI2lkbGUgPSBuZXcgU3ViamVjdCgpO1xuICAgIHRoaXMuI2ZvY3VzSW5wdXRPbkhvc3RDbGljaygpO1xuICB9XG5cbiAgI3JlbW92ZUV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuI2lkbGUubmV4dCgpO1xuICAgIHRoaXMuI2lkbGUuY29tcGxldGUoKTtcbiAgfVxuXG4gICNmb2N1c0lucHV0T25Ib3N0Q2xpY2soKTogdm9pZCB7XG4gICAgbGV0IGhvc3RFbGVtZW50ID0gIXRoaXMuaW5wdXRCb3hIb3N0U3ZjXG4gICAgICA/IHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxuICAgICAgOiB0aGlzLmxvb2t1cFdyYXBwZXJSZWY/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgZG9jdW1lbnRPYmogPSB0aGlzLiN3aW5kb3dSZWYubmF0aXZlV2luZG93LmRvY3VtZW50O1xuXG4gICAgLy8gSGFuZGxlcyBmb2N1c2luZyB0aGUgaW5wdXQgd2hlbiB0aGUgaG9zdCBpcyBjbGlja2VkLlxuICAgIC8vIFRoZSBpbnB1dCBzaG91bGQgTk9UIGJlIGZvY3VzZWQgaWYgb3RoZXIgZWxlbWVudHMgKHRva2VucywgZXRjLilcbiAgICAvLyBhcmUgY3VycmVudGx5IGZvY3VzZWQgb3IgYmVpbmcgdGFiYmVkIHRocm91Z2guXG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGRvY3VtZW50T2JqLCAnY2xpY2snKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI2lkbGUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGhvc3RFbGVtZW50ID0gIXRoaXMuaW5wdXRCb3hIb3N0U3ZjXG4gICAgICAgICAgPyB0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICA6IHRoaXMubG9va3VwV3JhcHBlclJlZj8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgdGhpcy5pc0lucHV0Rm9jdXNlZCA9IGhvc3RFbGVtZW50LmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpO1xuXG4gICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KGRvY3VtZW50T2JqLCAnZm9jdXNpbicpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jaWRsZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaG9zdEVsZW1lbnQgPSAhdGhpcy5pbnB1dEJveEhvc3RTdmNcbiAgICAgICAgICA/IHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxuICAgICAgICAgIDogdGhpcy5sb29rdXBXcmFwcGVyUmVmPy5uYXRpdmVFbGVtZW50O1xuICAgICAgICB0aGlzLmlzSW5wdXRGb2N1c2VkID0gaG9zdEVsZW1lbnQuY29udGFpbnMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCk7XG5cbiAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIGlmIChob3N0RWxlbWVudCkge1xuICAgICAgb2JzZXJ2YWJsZUZyb21FdmVudChob3N0RWxlbWVudCwgJ21vdXNldXAnKVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jaWRsZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNsYXNzTGlzdCA9IGRvY3VtZW50T2JqLmFjdGl2ZUVsZW1lbnQuY2xhc3NMaXN0O1xuICAgICAgICAgIGlmICghY2xhc3NMaXN0IHx8ICFjbGFzc0xpc3QuY29udGFpbnMoJ3NreS10b2tlbicpKSB7XG4gICAgICAgICAgICB0aGlzLiNmb2N1c0lucHV0KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAjZm9jdXNJbnB1dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sb29rdXBXcmFwcGVyUmVmKSB7XG4gICAgICB0aGlzLiNhZGFwdGVyLmZvY3VzSW5wdXQodGhpcy5sb29rdXBXcmFwcGVyUmVmKTtcbiAgICB9XG4gIH1cblxuICAjb25BZGRCdXR0b25Db21wbGV0ZShhcmdzOiBTa3lMb29rdXBBZGRDYWxsYmFja0FyZ3MpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jb3BlblNlbGVjdGlvbk1vZGFsKSB7XG4gICAgICAvLyBOb3RpZnkgdGhlIHNlbGVjdGlvbiBtb2RhbCBvZiB0aGUgbmV3IGl0ZW0uIFRoZSBzZWxlY3Rpb25cbiAgICAgIC8vIG1vZGFsIHdpbGwgZGVjaWRlIHdoZXRoZXIgdGhlIG5ldyBpdGVtIHNob3VsZCBiZSBhZGRlZFxuICAgICAgLy8gdG8gdGhlIHZhbHVlIHdoZW4gdGhlIHVzZXIgY29uZmlybXMgb3IgY2FuY2VscyB0aGVcbiAgICAgIC8vIHNlbGVjdGlvbiBtb2RhbC5cbiAgICAgIHRoaXMuI29wZW5TZWxlY3Rpb25Nb2RhbC5hZGRJdGVtKGFyZ3MuaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBhZGRJdGVtVG9WYWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKHRoaXMuI2hhc1NlYXJjaEFzeW5jKCkpIHtcbiAgICAgICAgYWRkSXRlbVRvVmFsdWUgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGFyZ3MuZGF0YSkge1xuICAgICAgICAgIHRoaXMuZGF0YSA9IGFyZ3MuZGF0YTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRhdGEuaW5kZXhPZihhcmdzLml0ZW0pID49IDApIHtcbiAgICAgICAgICBpZiAodGhpcy4jb3Blbk5hdGl2ZVBpY2tlcikge1xuICAgICAgICAgICAgLy8gTm90aWZ5IHRoZSBwaWNrZXIgb2YgdGhlIG5ldyBpdGVtLiBUaGUgcGlja2VyIHdpbGxcbiAgICAgICAgICAgIC8vIGRlY2lkZSB3aGV0aGVyIHRoZSBuZXcgaXRlbSBzaG91bGQgYmUgYWRkZWQgdG8gdGhlXG4gICAgICAgICAgICAvLyB2YWx1ZSB3aGVuIHRoZSB1c2VyIGNvbmZpcm1zIG9yIGNhbmNlbHMgdGhlIHBpY2tlci5cbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgdGhpcy4jb3Blbk5hdGl2ZVBpY2tlclxuICAgICAgICAgICAgICAgIC5jb21wb25lbnRJbnN0YW5jZSBhcyBTa3lMb29rdXBTaG93TW9yZU1vZGFsQ29tcG9uZW50XG4gICAgICAgICAgICApLm9uSXRlbVNlbGVjdCh0cnVlLCB7IHZhbHVlOiBhcmdzLml0ZW0sIHNlbGVjdGVkOiBmYWxzZSB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYWRkSXRlbVRvVmFsdWUgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoYWRkSXRlbVRvVmFsdWUpIHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPVxuICAgICAgICAgIHRoaXMuc2VsZWN0TW9kZSA9PT0gJ211bHRpcGxlJ1xuICAgICAgICAgICAgPyB0aGlzLnZhbHVlLmNvbmNhdChhcmdzLml0ZW0pXG4gICAgICAgICAgICA6IFthcmdzLml0ZW1dO1xuICAgICAgICB0aGlzLndyaXRlVmFsdWUobmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICNwYXJzZVRva2VucyhkYXRhOiBhbnlbXSk6IFNreVRva2VuW10ge1xuICAgIHJldHVybiBkYXRhLm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZTogaXRlbSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICAjc2VuZEF1dG9jb21wbGV0ZU1lc3NhZ2UodHlwZTogU2t5QXV0b2NvbXBsZXRlTWVzc2FnZVR5cGUpOiB2b2lkIHtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbnRyb2xsZXIubmV4dCh7IHR5cGUgfSk7XG4gIH1cblxuICAjc2VuZFRva2Vuc01lc3NhZ2UodHlwZTogU2t5VG9rZW5zTWVzc2FnZVR5cGUpOiB2b2lkIHtcbiAgICB0aGlzLnRva2Vuc0NvbnRyb2xsZXIubmV4dCh7IHR5cGUgfSk7XG4gIH1cblxuICAjdXBkYXRlRm9yU2VsZWN0TW9kZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSkge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0TW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZS52YWx1ZSA9IHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZVswXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2xlYXJTZWFyY2hUZXh0KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgI2hhc1NlYXJjaEFzeW5jKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaEFzeW5jLm9ic2VydmVycy5sZW5ndGggPiAwO1xuICB9XG5cbiAgI3BpY2tlck1vZGFsT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEodGhpcy4jb3Blbk5hdGl2ZVBpY2tlciB8fCB0aGlzLiNvcGVuU2VsZWN0aW9uTW9kYWwpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIWlucHV0Qm94SG9zdFN2Y1wiPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXRUZW1wbGF0ZVJlZlwiPjwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjaW5wdXRUZW1wbGF0ZVJlZj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2t5LWxvb2t1cFwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3NreS1sb29rdXAtZm9jdXNlZCc6IGlzSW5wdXRGb2N1c2VkLFxuICAgICAgJ3NreS1sb29rdXAtZGlzYWJsZWQnOiBkaXNhYmxlZCxcbiAgICAgICdza3ktbG9va3VwLXNpbmdsZSc6IHNlbGVjdE1vZGUgPT09ICdzaW5nbGUnXG4gICAgfVwiXG4gICAgI2xvb2t1cFdyYXBwZXJcbiAgPlxuICAgIDxza3ktYXV0b2NvbXBsZXRlXG4gICAgICBbYXJpYUxhYmVsbGVkQnldPVwiYXJpYUxhYmVsbGVkQnkgfHwgY29udHJvbElkXCJcbiAgICAgIFthdHRyLmRhdGEtc2t5LWxvb2t1cC1zaG93LW1vcmUtcGlja2VyLWlkXT1cInNob3dNb3JlUGlja2VySWRcIlxuICAgICAgW2RhdGFdPVwiZGF0YVwiXG4gICAgICBbZGVib3VuY2VUaW1lXT1cImRlYm91bmNlVGltZVwiXG4gICAgICBbZGVzY3JpcHRvclByb3BlcnR5XT1cImRlc2NyaXB0b3JQcm9wZXJ0eVwiXG4gICAgICBbZW5hYmxlU2hvd01vcmVdPVwiZW5hYmxlU2hvd01vcmVcIlxuICAgICAgW21lc3NhZ2VTdHJlYW1dPVwiYXV0b2NvbXBsZXRlQ29udHJvbGxlclwiXG4gICAgICBbcHJvcGVydGllc1RvU2VhcmNoXT1cInByb3BlcnRpZXNUb1NlYXJjaFwiXG4gICAgICBbc2VhcmNoXT1cInNlYXJjaE9yRGVmYXVsdFwiXG4gICAgICBbc2VhcmNoQXN5bmNEaXNhYmxlZF09XCJzZWFyY2hBc3luYy5vYnNlcnZlcnMubGVuZ3RoID09PSAwXCJcbiAgICAgIFtzZWFyY2hGaWx0ZXJzXT1cInNlYXJjaEZpbHRlcnNcIlxuICAgICAgW3NlYXJjaFJlc3VsdHNMaW1pdF09XCJzZWFyY2hSZXN1bHRzTGltaXRcIlxuICAgICAgW3NlYXJjaFJlc3VsdFRlbXBsYXRlXT1cInNlYXJjaFJlc3VsdFRlbXBsYXRlXCJcbiAgICAgIFtzZWFyY2hUZXh0TWluaW11bUNoYXJhY3RlcnNdPVwic2VhcmNoVGV4dE1pbmltdW1DaGFyYWN0ZXJzXCJcbiAgICAgIFtzaG93QWRkQnV0dG9uXT1cInNob3dBZGRCdXR0b25cIlxuICAgICAgW3dyYXBwZXJDbGFzc109XCJ3cmFwcGVyQ2xhc3NcIlxuICAgICAgKGFkZENsaWNrKT1cImFkZEJ1dHRvbkNsaWNrZWQoKVwiXG4gICAgICAoc2VhcmNoQXN5bmMpPVwib25TZWFyY2hBc3luYygkZXZlbnQpXCJcbiAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25BdXRvY29tcGxldGVTZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAoc2hvd01vcmVDbGljayk9XCJvblNob3dNb3JlQ2xpY2soJGV2ZW50KVwiXG4gICAgICAob3BlbkNoYW5nZSk9XCJvbkF1dG9jb21wbGV0ZU9wZW5DaGFuZ2UoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInNreS1sb29rdXAtc2VhcmNoLWZsZXgtd3JhcHBlclwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJza3ktbG9va3VwLXNlYXJjaFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ3NreS1maWVsZC1zdGF0dXMtYWN0aXZlJzogaXNJbnB1dEZvY3VzZWQgJiYgIWRpc2FibGVkXG4gICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2t5LXRva2Vuc1xuICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RNb2RlID09PSAnbXVsdGlwbGUnXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2t5LWxvb2t1cC10b2tlbnNcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIFtkaXNwbGF5V2l0aF09XCJkZXNjcmlwdG9yUHJvcGVydHlcIlxuICAgICAgICAgICAgW2ZvY3VzYWJsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICBbbWVzc2FnZVN0cmVhbV09XCJ0b2tlbnNDb250cm9sbGVyXCJcbiAgICAgICAgICAgIFt0cmFja1dpdGhdPVwiaWRQcm9wZXJ0eVwiXG4gICAgICAgICAgICBbdG9rZW5zXT1cInRva2Vuc1wiXG4gICAgICAgICAgICAoa2V5dXApPVwib25Ub2tlbnNLZXlVcCgkZXZlbnQpXCJcbiAgICAgICAgICAgICh0b2tlbnNDaGFuZ2UpPVwib25Ub2tlbnNDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAodG9rZW5zUmVuZGVyZWQpPVwib25Ub2tlbnNSZW5kZXJlZCgpXCJcbiAgICAgICAgICAgICh0b2tlblNlbGVjdGVkKT1cImVuYWJsZVNob3dNb3JlID8gb3BlblBpY2tlcignJykgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgKGZvY3VzSW5kZXhPdmVyUmFuZ2UpPVwib25Ub2tlbnNGb2N1c0luZGV4T3ZlclJhbmdlKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgICBjbGFzcz1cInNreS1mb3JtLWNvbnRyb2wgc2t5LWxvb2t1cC1pbnB1dFwiXG4gICAgICAgICAgICAgIHJvd3M9XCIxXCJcbiAgICAgICAgICAgICAgc2t5QXV0b2NvbXBsZXRlXG4gICAgICAgICAgICAgIHdyYXA9XCJvZmZcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImFyaWFEZXNjcmliZWRCeSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICAgICAgICBbYXR0ci5pZF09XCJjb250cm9sSWRcIlxuICAgICAgICAgICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclRleHRcIlxuICAgICAgICAgICAgICBbYXV0b2NvbXBsZXRlQXR0cmlidXRlXT1cImF1dG9jb21wbGV0ZUF0dHJpYnV0ZVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgIChibHVyKT1cIm9uQXV0b2NvbXBsZXRlQmx1cigpXCJcbiAgICAgICAgICAgICAgKGtleWRvd24pPVwiaW5wdXRLZXlkb3duKCRldmVudClcIlxuICAgICAgICAgICAgICAoa2V5dXApPVwiaW5wdXRLZXl1cCgkZXZlbnQpXCJcbiAgICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpbnB1dEJveEhvc3RTdmMgJiYgIWVuYWJsZVNob3dNb3JlXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInNlYXJjaEljb25UZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvc2t5LXRva2Vucz5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cInNlbGVjdE1vZGUgPT09ICdzaW5nbGUnXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2t5LWxvb2t1cC1zaW5nbGUtY29udHJvbFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWZvcm0tY29udHJvbCBza3ktbG9va3VwLWlucHV0XCJcbiAgICAgICAgICAgICAgcm93cz1cIjFcIlxuICAgICAgICAgICAgICBza3lBdXRvY29tcGxldGVcbiAgICAgICAgICAgICAgd3JhcD1cIm9mZlwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYXJpYURlc2NyaWJlZEJ5IHwgYXN5bmNcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICAgIFthdHRyLmlkXT1cImNvbnRyb2xJZFwiXG4gICAgICAgICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyVGV4dFwiXG4gICAgICAgICAgICAgIFthdXRvY29tcGxldGVBdHRyaWJ1dGVdPVwiYXV0b2NvbXBsZXRlQXR0cmlidXRlXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgKGJsdXIpPVwib25BdXRvY29tcGxldGVCbHVyKClcIlxuICAgICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlucHV0Qm94SG9zdFN2YyAmJiAhZW5hYmxlU2hvd01vcmVcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwic2VhcmNoSWNvblRlbXBsYXRlUmVmXCJcbiAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlucHV0Qm94SG9zdFN2YyAmJiBlbmFibGVTaG93TW9yZVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwic2hvd01vcmVCdXR0b25UZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvc2t5LWF1dG9jb21wbGV0ZT5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3Nob3dNb3JlQnV0dG9uVGVtcGxhdGVSZWY+XG4gIDxkaXYgY2xhc3M9XCJza3ktaW5wdXQtZ3JvdXAtYnRuXCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tZGVmYXVsdFwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW25nQ2xhc3NdPVwieyAnc2t5LWJ0bi1kaXNhYmxlZCc6IGRpc2FibGVkIH1cIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAnc2t5dXhfbG9va3VwX3NlYXJjaF9idXR0b25fc2hvd19tb3JlJyB8IHNreUxpYlJlc291cmNlc1xuICAgICAgXCJcbiAgICAgIChjbGljayk9XCJvblNlYXJjaEJ1dHRvbkNsaWNrKClcIlxuICAgID5cbiAgICAgIDxza3ktaWNvbiBpY29uPVwic2VhcmNoXCIgLz5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NlYXJjaEljb25UZW1wbGF0ZVJlZj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2t5LWlucHV0LWdyb3VwLWljb24gc2t5LWlucHV0LWJveC1pY29uLWluc2V0XCJcbiAgICBbbmdDbGFzc109XCJ7ICdza3ktbG9va3VwLWRpc2FibGVkJzogZGlzYWJsZWQgfVwiXG4gID5cbiAgICA8c2t5LWljb24gaWNvbj1cInNlYXJjaFwiIC8+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
740
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvc3JjL2xpYi9tb2R1bGVzL2xvb2t1cC9sb29rdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC9zcmMvbGliL21vZHVsZXMvbG9va3VwL2xvb2t1cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBQ0osV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUzRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckQsT0FBTyxFQUdMLG9CQUFvQixHQUNyQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBb0IsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR2xFLE9BQU8sRUFBYyxPQUFPLEVBQUUsU0FBUyxJQUFJLG1CQUFtQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFN0YsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFJN0YsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFHdEYsT0FB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OlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBTZWxmLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lBcHBXaW5kb3dSZWYsIFNreUlkU2VydmljZSwgU2t5TG9nU2VydmljZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcbmltcG9ydCB7IFNreUlucHV0Qm94SG9zdFNlcnZpY2UgfSBmcm9tICdAc2t5dXgvZm9ybXMnO1xuaW1wb3J0IHsgU2t5TGliUmVzb3VyY2VzU2VydmljZSB9IGZyb20gJ0Bza3l1eC9pMThuJztcbmltcG9ydCB7XG4gIFNreVRva2VuLFxuICBTa3lUb2tlbnNNZXNzYWdlLFxuICBTa3lUb2tlbnNNZXNzYWdlVHlwZSxcbn0gZnJvbSAnQHNreXV4L2luZGljYXRvcnMnO1xuaW1wb3J0IHsgU2t5TW9kYWxJbnN0YW5jZSwgU2t5TW9kYWxTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L21vZGFscyc7XG5pbXBvcnQgeyBTa3lUaGVtZVNlcnZpY2UgfSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBmcm9tRXZlbnQgYXMgb2JzZXJ2YWJsZUZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSB9IGZyb20gJy4uL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUtaW5wdXQuZGlyZWN0aXZlJztcbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZU1lc3NhZ2UgfSBmcm9tICcuLi9hdXRvY29tcGxldGUvdHlwZXMvYXV0b2NvbXBsZXRlLW1lc3NhZ2UnO1xuaW1wb3J0IHsgU2t5QXV0b2NvbXBsZXRlTWVzc2FnZVR5cGUgfSBmcm9tICcuLi9hdXRvY29tcGxldGUvdHlwZXMvYXV0b2NvbXBsZXRlLW1lc3NhZ2UtdHlwZSc7XG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVTZWFyY2hBc3luY0FyZ3MgfSBmcm9tICcuLi9hdXRvY29tcGxldGUvdHlwZXMvYXV0b2NvbXBsZXRlLXNlYXJjaC1hc3luYy1hcmdzJztcbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZVNlbGVjdGlvbkNoYW5nZSB9IGZyb20gJy4uL2F1dG9jb21wbGV0ZS90eXBlcy9hdXRvY29tcGxldGUtc2VsZWN0aW9uLWNoYW5nZSc7XG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVTaG93TW9yZUFyZ3MgfSBmcm9tICcuLi9hdXRvY29tcGxldGUvdHlwZXMvYXV0b2NvbXBsZXRlLXNob3ctbW9yZS1hcmdzJztcbmltcG9ydCB7IFNreVNlbGVjdGlvbk1vZGFsU2VydmljZSB9IGZyb20gJy4uL3NlbGVjdGlvbi1tb2RhbC9zZWxlY3Rpb24tbW9kYWwuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lTZWxlY3Rpb25Nb2RhbEluc3RhbmNlIH0gZnJvbSAnLi4vc2VsZWN0aW9uLW1vZGFsL3R5cGVzL3NlbGVjdGlvbi1tb2RhbC1pbnN0YW5jZSc7XG5cbmltcG9ydCB7IFNreUxvb2t1cEFkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9sb29rdXAtYWRhcHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNreUxvb2t1cEF1dG9jb21wbGV0ZUFkYXB0ZXIgfSBmcm9tICcuL2xvb2t1cC1hdXRvY29tcGxldGUtYWRhcHRlcic7XG5pbXBvcnQgeyBTa3lMb29rdXBTaG93TW9yZU1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9sb29rdXAtc2hvdy1tb3JlLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lMb29rdXBBZGRDYWxsYmFja0FyZ3MgfSBmcm9tICcuL3R5cGVzL2xvb2t1cC1hZGQtY2xpY2stY2FsbGJhY2stYXJncyc7XG5pbXBvcnQgeyBTa3lMb29rdXBBZGRDbGlja0V2ZW50QXJncyB9IGZyb20gJy4vdHlwZXMvbG9va3VwLWFkZC1jbGljay1ldmVudC1hcmdzJztcbmltcG9ydCB7IFNreUxvb2t1cFNlbGVjdE1vZGVUeXBlIH0gZnJvbSAnLi90eXBlcy9sb29rdXAtc2VsZWN0LW1vZGUtdHlwZSc7XG5pbXBvcnQgeyBTa3lMb29rdXBTaG93TW9yZUNvbmZpZyB9IGZyb20gJy4vdHlwZXMvbG9va3VwLXNob3ctbW9yZS1jb25maWcnO1xuaW1wb3J0IHsgU2t5TG9va3VwU2hvd01vcmVOYXRpdmVQaWNrZXJDb250ZXh0IH0gZnJvbSAnLi90eXBlcy9sb29rdXAtc2hvdy1tb3JlLW5hdGl2ZS1waWNrZXItY29udGV4dCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1sb29rdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vbG9va3VwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbG9va3VwLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1NreUxvb2t1cEFkYXB0ZXJTZXJ2aWNlXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNreUxvb2t1cENvbXBvbmVudFxuICBleHRlbmRzIFNreUxvb2t1cEF1dG9jb21wbGV0ZUFkYXB0ZXJcbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3JcbntcbiAgLyoqXG4gICAqIFRoZSBBUklBIGxhYmVsIGZvciB0aGUgdHlwZWFoZWFkIHNlYXJjaCBpbnB1dC4gVGhpcyBzZXRzIHRoZSBpbnB1dCdzIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUgdG8gcHJvdmlkZSBhIHRleHQgZXF1aXZhbGVudCBmb3JcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICogSWYgdGhlIGlucHV0IGluY2x1ZGVzIGEgdmlzaWJsZSBsYWJlbCwgdXNlIGBhcmlhTGFiZWxsZWRCeWAgaW5zdGVhZC5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUsIHNlZSB0aGUgW1dBSS1BUklBIGRlZmluaXRpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS8jYXJpYS1sYWJlbCkuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXJpYUxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBIVE1MIGVsZW1lbnQgSUQgb2YgdGhlIGVsZW1lbnQgdGhhdCBsYWJlbHNcbiAgICogdGhlIHR5cGVhaGVhZCBzZWFyY2ggaW5wdXQuIFRoaXMgc2V0cyB0aGUgaW5wdXQncyBgYXJpYS1sYWJlbGxlZGJ5YCBhdHRyaWJ1dGUgdG8gcHJvdmlkZSBhIHRleHQgZXF1aXZhbGVudCBmb3JcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICogSWYgdGhlIGlucHV0IGRvZXMgbm90IGluY2x1ZGUgYSB2aXNpYmxlIGxhYmVsLCB1c2UgYGFyaWFMYWJlbGAgaW5zdGVhZC5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGBhcmlhLWxhYmVsbGVkYnlgIGF0dHJpYnV0ZSwgc2VlIHRoZSBbV0FJLUFSSUEgZGVmaW5pdGlvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLyNhcmlhLWxhYmVsbGVkYnkpLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFyaWFMYWJlbGxlZEJ5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBmb3IgdGhlIGBhdXRvY29tcGxldGVgIGF0dHJpYnV0ZSBvbiB0aGUgZm9ybSBpbnB1dC5cbiAgICogQGRlZmF1bHQgJ29mZidcbiAgICogQGRlcHJlY2F0ZWQgU0tZIFVYIG9ubHkgc3VwcG9ydHMgYnJvd3NlciBhdXRvZmlsbCBvbiBjb21wb25lbnRzIHdoZXJlIHRoZSBkaXJlY3QgaW5wdXQgbWF0Y2hlcyB0aGUgcmV0dXJuIHZhbHVlLiBUaGlzIGlucHV0IG1heSBub3QgYmVoYXZlIGFzIGV4cGVjdGVkIGR1ZSB0byB0aGUgZHJvcGRvd24gc2VsZWN0aW9uIGludGVyYWN0aW9uLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGF1dG9jb21wbGV0ZUF0dHJpYnV0ZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgZGF0YSBzb3VyY2UgZm9yIHRoZSBsb29rdXAgY29tcG9uZW50IHRvIHNlYXJjaCB3aGVuIHVzZXJzXG4gICAqIGVudGVyIHRleHQuIFlvdSBjYW4gc3BlY2lmeSBzdGF0aWMgZGF0YSBzdWNoIGFzIGFuIGFycmF5IG9mIG9iamVjdHMsIG9yXG4gICAqIHlvdSBjYW4gcHVsbCBkYXRhIGZyb20gYSBkYXRhYmFzZS5cbiAgICogQGRlZmF1bHQgW11cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGF0YSh2YWx1ZTogYW55W10gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfZGF0YSA9IHZhbHVlO1xuXG4gICAgaWYgKHRoaXMuI29wZW5OYXRpdmVQaWNrZXIgJiYgIXRoaXMuI2hhc1NlYXJjaEFzeW5jKCkpIHtcbiAgICAgIHRoaXMuI29wZW5OYXRpdmVQaWNrZXIuY29tcG9uZW50SW5zdGFuY2UudXBkYXRlSXRlbURhdGEodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGF0YSgpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuI19kYXRhIHx8IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgbG9va3VwIGZpZWxkIG9uIHRlbXBsYXRlLWRyaXZlbiBmb3Jtcy4gRG9uJ3QgdXNlIHRoaXMgaW5wdXQgb24gcmVhY3RpdmUgZm9ybXMgYmVjYXVzZSB0aGV5IG1heSBvdmVyd3JpdGUgdGhlIGlucHV0IG9yIGxlYXZlIHRoZSBjb250cm9sIG91dCBvZiBzeW5jLlxuICAgKiBUbyBzZXQgdGhlIGRpc2FibGVkIHN0YXRlIG9uIHJlYWN0aXZlIGZvcm1zLCB1c2UgdGhlIGBGb3JtQ29udHJvbGAgaW5zdGVhZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfZGlzYWJsZWQgPSB2YWx1ZSA/PyBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI19kaXNhYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGVuYWJsZSB1c2VycyB0byBvcGVuIGEgcGlja2VyIHdoZXJlIHRoZXkgY2FuIHZpZXcgYWxsIG9wdGlvbnMuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGVuYWJsZVNob3dNb3JlKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2VuYWJsZVNob3dNb3JlID0gdmFsdWUgPz8gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVuYWJsZVNob3dNb3JlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfZW5hYmxlU2hvd01vcmU7XG4gIH1cblxuICAvKipcbiAgICogUGxhY2Vob2xkZXIgdGV4dCB0byBkaXNwbGF5IGluIHRoZSBsb29rdXAgZmllbGQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgcGxhY2Vob2xkZXJUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBvYmplY3QgcHJvcGVydHkgdGhhdCByZXByZXNlbnRzIHRoZSBvYmplY3QncyB1bmlxdWUgaWRlbnRpZmllci5cbiAgICogU3BlY2lmeWluZyB0aGlzIHByb3BlcnR5IGVuYWJsZXMgdG9rZW4gYW5pbWF0aW9ucyBhbmQgbW9yZSBlZmZpY2llbnQgcmVuZGVyaW5nLlxuICAgKiBUaGlzIHByb3BlcnR5IGlzIHJlcXVpcmVkIHdoZW4gdXNpbmcgYGVuYWJsZVNob3dNb3JlYCBhbmQgYHNlYXJjaEFzeW5jYCB0b2dldGhlci5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpZFByb3BlcnR5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzcGxheSBhIGJ1dHRvbiB0aGF0IGxldHMgdXNlcnMgYWRkIG9wdGlvbnMgdG8gdGhlIGxpc3QuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNob3dBZGRCdXR0b24odmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfc2hvd0FkZEJ1dHRvbiA9IHZhbHVlID8/IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGdldCBzaG93QWRkQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfc2hvd0FkZEJ1dHRvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBwaWNrZXIgdGhhdCBkaXNwbGF5cyBhbGwgb3B0aW9ucy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93TW9yZUNvbmZpZzogU2t5TG9va3VwU2hvd01vcmVDb25maWcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBhYmlsaXR5IGZvciB1c2VycyB0byBzZWxlY3Qgb25lIG9wdGlvbiBvciBtdWx0aXBsZSBvcHRpb25zLlxuICAgKiBAZGVmYXVsdCBcIm11bHRpcGxlXCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2VsZWN0TW9kZSh2YWx1ZTogU2t5TG9va3VwU2VsZWN0TW9kZVR5cGUgfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBtdWx0aXBsZVRvU2luZ2xlOiBib29sZWFuID1cbiAgICAgIHZhbHVlID09PSAnc2luZ2xlJyAmJiB0aGlzLnNlbGVjdE1vZGUgPT09ICdtdWx0aXBsZSc7XG5cbiAgICB0aGlzLiNfc2VsZWN0TW9kZSA9IHZhbHVlO1xuICAgIHRoaXMuI3VwZGF0ZUZvclNlbGVjdE1vZGUoKTtcblxuICAgIGlmIChtdWx0aXBsZVRvU2luZ2xlKSB7XG4gICAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgLy8gVGhlIGBzZXRUaW1lb3V0YCBpcyBuZWVkZWQgdG8gYXZvaWQgYSBgRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvcmAgZXJyb3IgaW4gdGVtcGxhdGUgZm9ybXMuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZShbdGhpcy52YWx1ZVswXV0pO1xuICAgICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBzZWxlY3RNb2RlKCk6IFNreUxvb2t1cFNlbGVjdE1vZGVUeXBlIHtcbiAgICByZXR1cm4gdGhpcy4jX3NlbGVjdE1vZGUgfHwgJ211bHRpcGxlJztcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB3cmFwcGVyQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB1c2VycyBzZWxlY3QgdGhlIGJ1dHRvbiB0byBhZGQgb3B0aW9ucyB0byB0aGUgbGlzdC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgYWRkQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPFNreUxvb2t1cEFkZENsaWNrRXZlbnRBcmdzPigpO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgb3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwdWJsaWMgZ2V0IHRva2VucygpOiBTa3lUb2tlbltdIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX3Rva2VucztcbiAgfVxuXG4gIHB1YmxpYyBzZXQgdG9rZW5zKHZhbHVlOiBTa3lUb2tlbltdIHwgdW5kZWZpbmVkKSB7XG4gICAgLy8gQ29sbGFwc2UgdGhlIHRva2VucyBpbnRvIGEgc2luZ2xlIHRva2VuIGlmIHRoZSB1c2VyIGhhcyBzZWxlY3RlZCBtYW55IG9wdGlvbnMuXG4gICAgaWYgKHRoaXMuZW5hYmxlU2hvd01vcmUgJiYgdGhpcy52YWx1ZS5sZW5ndGggPiA1KSB7XG4gICAgICB0aGlzLiNyZXNvdXJjZXNTZXJ2aWNlXG4gICAgICAgIC5nZXRTdHJpbmcoJ3NreXV4X2xvb2t1cF90b2tlbnNfc3VtbWFyeScsIHRoaXMudmFsdWUubGVuZ3RoLnRvU3RyaW5nKCkpXG4gICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGxhYmVsKSA9PiB7XG4gICAgICAgICAgdGhpcy4jX3Rva2VucyA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdmFsdWU6IHsgW3RoaXMuZGVzY3JpcHRvclByb3BlcnR5XTogbGFiZWwgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXTtcbiAgICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI190b2tlbnMgPSB2YWx1ZTtcbiAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLiNfdmFsdWUgPyB0aGlzLiNfdmFsdWUgOiBbXTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgdmFsdWUobmV3VmFsdWU6IGFueVtdKSB7XG4gICAgdGhpcy4jX3ZhbHVlID0gbmV3VmFsdWU7XG5cbiAgICBpZiAoIXRoaXMuI3BpY2tlck1vZGFsT3BlbigpKSB7XG4gICAgICB0aGlzLnRva2VucyA9IHRoaXMuI3BhcnNlVG9rZW5zKG5ld1ZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuI192YWx1ZSk7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBhdXRvY29tcGxldGVDb250cm9sbGVyID0gbmV3IFN1YmplY3Q8U2t5QXV0b2NvbXBsZXRlTWVzc2FnZT4oKTtcbiAgcHVibGljIGlzSW5wdXRGb2N1c2VkID0gZmFsc2U7XG4gIHB1YmxpYyBzaG93TW9yZVBpY2tlcklkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyB0b2tlbnNDb250cm9sbGVyID0gbmV3IFN1YmplY3Q8U2t5VG9rZW5zTWVzc2FnZT4oKTtcbiAgcHJvdGVjdGVkIGNvbnRyb2xJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgYXJpYURlc2NyaWJlZEJ5OiBPYnNlcnZhYmxlPHN0cmluZyB8IHVuZGVmaW5lZD4gfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZChTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSwge1xuICAgIHJlYWQ6IFNreUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlLFxuICAgIHN0YXRpYzogZmFsc2UsXG4gIH0pXG4gIHB1YmxpYyBzZXQgYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUoXG4gICAgdmFsdWU6IFNreUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlIHwgdW5kZWZpbmVkLFxuICApIHtcbiAgICB0aGlzLiNfYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUgPSB2YWx1ZTtcbiAgICB0aGlzLiN1cGRhdGVGb3JTZWxlY3RNb2RlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlKCk6XG4gICAgfCBTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZVxuICAgIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2F1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnc2hvd01vcmVCdXR0b25UZW1wbGF0ZVJlZicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIHB1YmxpYyBzaG93TW9yZUJ1dHRvblRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCdpbnB1dFRlbXBsYXRlUmVmJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHVibGljIGlucHV0VGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ2xvb2t1cFdyYXBwZXInLCB7XG4gICAgcmVhZDogRWxlbWVudFJlZixcbiAgfSlcbiAgcHVibGljIGxvb2t1cFdyYXBwZXJSZWY6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgnc2VhcmNoSWNvblRlbXBsYXRlUmVmJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHVibGljIHNlYXJjaEljb25UZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgI2lkbGUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAjbWFya0ZvclRva2VuRm9jdXNPbktleVVwID0gZmFsc2U7XG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgI29wZW5OYXRpdmVQaWNrZXI6IFNreU1vZGFsSW5zdGFuY2UgfCB1bmRlZmluZWQ7XG4gICNvcGVuU2VsZWN0aW9uTW9kYWw6IFNreVNlbGVjdGlvbk1vZGFsSW5zdGFuY2UgfCB1bmRlZmluZWQ7XG5cbiAgI19hdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZTogU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUgfCB1bmRlZmluZWQ7XG4gICNfZGF0YTogYW55W10gfCB1bmRlZmluZWQ7XG4gICNfZGlzYWJsZWQgPSBmYWxzZTtcbiAgI19lbmFibGVTaG93TW9yZSA9IGZhbHNlO1xuICAjX3NlbGVjdE1vZGU6IFNreUxvb2t1cFNlbGVjdE1vZGVUeXBlIHwgdW5kZWZpbmVkO1xuICAjX3Nob3dBZGRCdXR0b24gPSBmYWxzZTtcbiAgI190b2tlbnM6IFNreVRva2VuW10gfCB1bmRlZmluZWQ7XG4gICNfdmFsdWU6IGFueVtdIHwgdW5kZWZpbmVkO1xuXG4gIHJlYWRvbmx5ICNhZGFwdGVyID0gaW5qZWN0KFNreUxvb2t1cEFkYXB0ZXJTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI2NoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcmVhZG9ubHkgI2VsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHJlYWRvbmx5ICNpZFNlcnZpY2UgPSBpbmplY3QoU2t5SWRTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI2xvZ1N2YyA9IGluamVjdChTa3lMb2dTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI21vZGFsU2VydmljZSA9IGluamVjdChTa3lNb2RhbFNlcnZpY2UpO1xuICByZWFkb25seSAjcmVzb3VyY2VzU2VydmljZSA9IGluamVjdChTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI3NlbGVjdGlvbk1vZGFsU3ZjID0gaW5qZWN0KFNreVNlbGVjdGlvbk1vZGFsU2VydmljZSk7XG4gIHJlYWRvbmx5ICN3aW5kb3dSZWYgPSBpbmplY3QoU2t5QXBwV2luZG93UmVmKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAU2VsZigpIEBPcHRpb25hbCgpIG5nQ29udHJvbD86IE5nQ29udHJvbCxcbiAgICBAT3B0aW9uYWwoKSBwdWJsaWMgaW5wdXRCb3hIb3N0U3ZjPzogU2t5SW5wdXRCb3hIb3N0U2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwdWJsaWMgdGhlbWVTdmM/OiBTa3lUaGVtZVNlcnZpY2UsXG4gICkge1xuICAgIHN1cGVyKCk7XG5cbiAgICBpZiAobmdDb250cm9sKSB7XG4gICAgICBuZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlucHV0Qm94SG9zdFN2YyAmJiB0aGlzLmlucHV0VGVtcGxhdGVSZWYpIHtcbiAgICAgIHRoaXMuY29udHJvbElkID0gdGhpcy5pbnB1dEJveEhvc3RTdmMuY29udHJvbElkO1xuICAgICAgdGhpcy5hcmlhRGVzY3JpYmVkQnkgPSB0aGlzLmlucHV0Qm94SG9zdFN2Yy5hcmlhRGVzY3JpYmVkQnk7XG5cbiAgICAgIHRoaXMuaW5wdXRCb3hIb3N0U3ZjLnBvcHVsYXRlKHtcbiAgICAgICAgaW5wdXRUZW1wbGF0ZTogdGhpcy5pbnB1dFRlbXBsYXRlUmVmLFxuICAgICAgICBidXR0b25zVGVtcGxhdGU6IHRoaXMuZW5hYmxlU2hvd01vcmVcbiAgICAgICAgICA/IHRoaXMuc2hvd01vcmVCdXR0b25UZW1wbGF0ZVJlZlxuICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICBpY29uc0luc2V0VGVtcGxhdGU6IHRoaXMuZW5hYmxlU2hvd01vcmVcbiAgICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICAgIDogdGhpcy5zZWFyY2hJY29uVGVtcGxhdGVSZWYsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb250cm9sSWQgPSB0aGlzLiNpZFNlcnZpY2UuZ2VuZXJhdGVJZCgpO1xuICAgIH1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMudGhlbWVTdmMpIHtcbiAgICAgIC8vIFRoaXMgaXMgcmVxdWlyZWQgZm9yIHRoZSBhdXRvY29tcGxldGUgZGlyZWN0aXZlIHRvIGJlIHNldCBhZnRlciBlbGVtZW50c1xuICAgICAgLy8gYXJlIHJlYXJyYW5nZWQgd2hlbiBzd2l0Y2hpbmcgdGhlbWVzLlxuICAgICAgdGhpcy50aGVtZVN2Yy5zZXR0aW5nc0NoYW5nZVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy4jYWRkRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5hZGRDbGljay5jb21wbGV0ZSgpO1xuICAgIHRoaXMub3BlbkNoYW5nZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMudG9rZW5zQ29udHJvbGxlci5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIGFkZEJ1dHRvbkNsaWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRDbGljay5lbWl0KHtcbiAgICAgIGl0ZW1BZGRlZDogKGFyZ3M6IFNreUxvb2t1cEFkZENhbGxiYWNrQXJncykgPT5cbiAgICAgICAgdGhpcy4jb25BZGRCdXR0b25Db21wbGV0ZShhcmdzKSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvbkF1dG9jb21wbGV0ZVNlbGVjdGlvbkNoYW5nZShcbiAgICBjaGFuZ2U6IFNreUF1dG9jb21wbGV0ZVNlbGVjdGlvbkNoYW5nZSxcbiAgKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoY2hhbmdlLnNlbGVjdGVkSXRlbSkge1xuICAgICAgdGhpcy4jYWRkVG9TZWxlY3RlZChjaGFuZ2Uuc2VsZWN0ZWRJdGVtKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0TW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgIHRoaXMud3JpdGVWYWx1ZShbXSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uQXV0b2NvbXBsZXRlQmx1cigpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICB9XG5cbiAgcHVibGljIG9uVG9rZW5zQ2hhbmdlKGNoYW5nZTogU2t5VG9rZW5bXSk6IHZvaWQge1xuICAgIGlmICghY2hhbmdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudG9rZW5zICE9PSBjaGFuZ2UpIHtcbiAgICAgIGlmIChjaGFuZ2UubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuI2ZvY3VzSW5wdXQoKTtcbiAgICAgIH1cblxuICAgICAgLy8gTk9URTogV2UgZG8gdGhpcyBoZXJlIGluc3RlYWQgb2YganVzdCB1c2luZyB0aGUgYHZhbHVlYCBzZXR0ZXIgYmVjYXVzZSB3ZSBuZWVkIHRvIHVzZSB0aGVcbiAgICAgIC8vIHNldCBvZiB0b2tlbnMgcmV0dXJuZWQgaGVyZSBmb3IgdGhlIHB1cnBvc2VzIG9mIHNldHRpbmcgZm9jdXMgKHNlZSBgb25Ub2tlbnNLZXlVcGApLlxuICAgICAgdGhpcy4jX3ZhbHVlID0gY2hhbmdlLm1hcCgodG9rZW4pID0+IHtcbiAgICAgICAgcmV0dXJuIHRva2VuLnZhbHVlO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnRva2VucyA9IGNoYW5nZTtcbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy4jX3ZhbHVlKTtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uVG9rZW5zRm9jdXNJbmRleE92ZXJSYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLiN3aW5kb3dSZWYubmF0aXZlV2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy4jZm9jdXNJbnB1dCgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uVG9rZW5zS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLnNlbGVjdE1vZGUgIT09ICdzaW5nbGUnKSB7XG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICBjYXNlICdCYWNrc3BhY2UnOlxuICAgICAgICAgIHRoaXMuI3NlbmRUb2tlbnNNZXNzYWdlKFNreVRva2Vuc01lc3NhZ2VUeXBlLlJlbW92ZUFjdGl2ZVRva2VuKTtcbiAgICAgICAgICB0aGlzLiNzZW5kVG9rZW5zTWVzc2FnZShTa3lUb2tlbnNNZXNzYWdlVHlwZS5Gb2N1c1ByZXZpb3VzVG9rZW4pO1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnRGVsJzpcbiAgICAgICAgY2FzZSAnRGVsZXRlJzpcbiAgICAgICAgICB0aGlzLiNzZW5kVG9rZW5zTWVzc2FnZShTa3lUb2tlbnNNZXNzYWdlVHlwZS5SZW1vdmVBY3RpdmVUb2tlbik7XG4gICAgICAgICAgdGhpcy4jd2luZG93UmVmLm5hdGl2ZVdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuI3NlbmRUb2tlbnNNZXNzYWdlKFNreVRva2Vuc01lc3NhZ2VUeXBlLkZvY3VzQWN0aXZlVG9rZW4pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uVG9rZW5zUmVuZGVyZWQoKTogdm9pZCB7XG4gICAgdGhpcy4jc2VuZEF1dG9jb21wbGV0ZU1lc3NhZ2UoXG4gICAgICBTa3lBdXRvY29tcGxldGVNZXNzYWdlVHlwZS5SZXBvc2l0aW9uRHJvcGRvd24sXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnlbXSk6IHZvaWQge1xuICAgIC8vIFNpbmNlIHdlIGFyZSBkZWFsaW5nIHdpdGggYXJyYXlzIC0gY2xvbmUgdGhlIGFycmF5IGJlaW5nIHNlbnQgaW4gdG8gZW5zdXJlIHdlIGFyZW4ndCBtb2RpZnlpbmcgYSBjb25zdW1lcnMgb3V0ZXIgYXJyYXlcbiAgICB0aGlzLnZhbHVlID0gdmFsdWUgPyB2YWx1ZS5zbGljZSgpIDogW107XG4gICAgdGhpcy4jdXBkYXRlRm9yU2VsZWN0TW9kZSgpO1xuICB9XG5cbiAgLy8gQW5ndWxhciBhdXRvbWF0aWNhbGx5IGNvbnN0cnVjdHMgdGhlc2UgbWV0aG9kcy5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICBwdWJsaWMgb25DaGFuZ2UgPSAodmFsdWU6IGFueVtdKSA9PiB7fTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICBwdWJsaWMgb25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYW55KSA9PiB2b2lkKSB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8vIEFsbG93cyBBbmd1bGFyIHRvIGRpc2FibGUgdGhlIGlucHV0LlxuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuI3JlbW92ZUV2ZW50TGlzdGVuZXJzKCk7XG5cbiAgICBpZiAoIWRpc2FibGVkKSB7XG4gICAgICB0aGlzLiNhZGRFdmVudExpc3RlbmVycygpO1xuICAgIH1cblxuICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhclNlYXJjaFRleHQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUpIHtcbiAgICAgIHRoaXMuYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlLmlucHV0VGV4dFZhbHVlID0gJyc7XG4gICAgfVxuICB9XG5cbiAgLy8gSGFuZGxlcyB3aGVuIHRvIGZvY3VzIG9uIHRoZSB0b2tlbnMuXG4gIC8vIENoZWNrIGZvciBlbXB0eSBzZWFyY2ggdGV4dCBvbiBrZXlkb3duLCBiZWZvcmUgdGhlIGVzY2FwZSBrZXkgaXMgZnVsbHkgcHJlc3NlZC5cbiAgLy8gKE90aGVyd2lzZSwgYSBzaW5nbGUgY2hhcmFjdGVyIGJlaW5nIGVzY2FwZWQgd291bGQgcmVnaXN0ZXIgYXMgZW1wdHkgb24ga2V5dXAuKVxuICAvLyBJZiBlbXB0eSBvbiBrZXlkb3duLCBzZXQgYSBmbGFnIHNvIHRoYXQgdGhlIGFwcHJvcHJpYXRlIGFjdGlvbiBjYW4gYmUgdGFrZW4gb24ga2V5dXAuXG4gIHB1YmxpYyBpbnB1dEtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTFRleHRBcmVhRWxlbWVudCkudmFsdWU7XG5cbiAgICAvKiBTYW5pdHkgY2hlY2sgYXMgdGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgd2hlbiBpbiBtdWx0aXBsZSBzZWxlY3QgbW9kZSAqL1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuc2VsZWN0TW9kZSAhPT0gJ3NpbmdsZScpIHtcbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICBjYXNlICdCYWNrc3BhY2UnOlxuICAgICAgICBjYXNlICdMZWZ0JzpcbiAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuI21hcmtGb3JUb2tlbkZvY3VzT25LZXlVcCA9IGZhbHNlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLiNtYXJrRm9yVG9rZW5Gb2N1c09uS2V5VXAgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaW5wdXRLZXl1cChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIC8qIFNhbml0eSBjaGVjayBhcyB0aGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIGluIG11bHRpcGxlIHNlbGVjdCBtb2RlICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5zZWxlY3RNb2RlICE9PSAnc2luZ2xlJykge1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSAnRXNjJzpcbiAgICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgICB0aGlzLmNsZWFyU2VhcmNoVGV4dCgpO1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XG4gICAgICAgIGNhc2UgJ0xlZnQnOlxuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgaWYgKHRoaXMuI21hcmtGb3JUb2tlbkZvY3VzT25LZXlVcCkge1xuICAgICAgICAgICAgdGhpcy4jc2VuZFRva2Vuc01lc3NhZ2UoU2t5VG9rZW5zTWVzc2FnZVR5cGUuRm9jdXNMYXN0VG9rZW4pO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICB9XG5cbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvblNlYXJjaEJ1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIG5leHQqL1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuI3NlbmRBdXRvY29tcGxldGVNZXNzYWdlKFNreUF1dG9jb21wbGV0ZU1lc3NhZ2VUeXBlLkNsb3NlRHJvcGRvd24pO1xuICAgIGxldCBpc1ZhbHVlSW5UZXh0Qm94ID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuc2VsZWN0TW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgIGlzVmFsdWVJblRleHRCb3ggPVxuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlPy52YWx1ZSAmJlxuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlLmlucHV0VGV4dFZhbHVlID09PVxuICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUudmFsdWVbdGhpcy5kZXNjcmlwdG9yUHJvcGVydHldO1xuICAgIH1cblxuICAgIGxldCBzZWFyY2hWYWx1ZSA9ICcnO1xuXG4gICAgaWYgKCFpc1ZhbHVlSW5UZXh0Qm94ICYmIHRoaXMuYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUpIHtcbiAgICAgIHNlYXJjaFZhbHVlID0gdGhpcy5hdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZS5pbnB1dFRleHRWYWx1ZTtcbiAgICB9XG5cbiAgICB0aGlzLm9wZW5QaWNrZXIoc2VhcmNoVmFsdWUpO1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmU/LnJlc3RvcmVJbnB1dFRleHRWYWx1ZVRvUHJldmlvdXNTdGF0ZSgpO1xuICB9XG5cbiAgcHVibGljIG9uU2hvd01vcmVDbGljayhldmVudDogU2t5QXV0b2NvbXBsZXRlU2hvd01vcmVBcmdzKTogdm9pZCB7XG4gICAgLyogU2FuaXR5IGNoZWNrICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmIChldmVudCkge1xuICAgICAgdGhpcy5vcGVuUGlja2VyKGV2ZW50LmlucHV0VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvcGVuUGlja2VyKGluaXRpYWxTZWFyY2g6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNob3dNb3JlQ29uZmlnPy5jdXN0b21QaWNrZXIpIHtcbiAgICAgIHRoaXMuc2hvd01vcmVQaWNrZXJJZCA9IHVuZGVmaW5lZDtcblxuICAgICAgdGhpcy5zaG93TW9yZUNvbmZpZy5jdXN0b21QaWNrZXIub3Blbih7XG4gICAgICAgIGl0ZW1zOiB0aGlzLmRhdGEsXG4gICAgICAgIGluaXRpYWxTZWFyY2gsXG4gICAgICAgIGluaXRpYWxWYWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBpbml0aWFsVmFsdWUgPSB0aGlzLnZhbHVlO1xuXG4gICAgICBpZiAodGhpcy4jaGFzU2VhcmNoQXN5bmMoKSkge1xuICAgICAgICB0aGlzLiNvcGVuU2VsZWN0aW9uTW9kYWwgPVxuICAgICAgICAgIHRoaXMuI2NyZWF0ZVNlbGVjdGlvbk1vZGFsSW5zdGFuY2UoaW5pdGlhbFNlYXJjaCk7XG5cbiAgICAgICAgdGhpcy5zaG93TW9yZVBpY2tlcklkID0gdGhpcy4jb3BlblNlbGVjdGlvbk1vZGFsLmlkO1xuXG4gICAgICAgIHRoaXMuI29wZW5TZWxlY3Rpb25Nb2RhbC5jbG9zZWQuc3Vic2NyaWJlKChjbG9zZUFyZ3MpID0+IHtcbiAgICAgICAgICB0aGlzLiNwcm9jZXNzUGlja2VyUmVzdWx0KFxuICAgICAgICAgICAgY2xvc2VBcmdzLnJlYXNvbiA9PT0gJ3NhdmUnXG4gICAgICAgICAgICAgID8gY2xvc2VBcmdzLnNlbGVjdGVkSXRlbXNcbiAgICAgICAgICAgICAgOiBpbml0aWFsVmFsdWUsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLiNvcGVuTmF0aXZlUGlja2VyID1cbiAgICAgICAgICB0aGlzLiNjcmVhdGVOYXRpdmVQaWNrZXJJbnN0YW5jZShpbml0aWFsU2VhcmNoKTtcblxuICAgICAgICB0aGlzLnNob3dNb3JlUGlja2VySWQgPSB0aGlzLiNvcGVuTmF0aXZlUGlja2VyLmNvbXBvbmVudEluc3RhbmNlLmlkO1xuXG4gICAgICAgIHRoaXMuI29wZW5OYXRpdmVQaWNrZXIuY29tcG9uZW50SW5zdGFuY2UuYWRkQ2xpY2suc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmFkZEJ1dHRvbkNsaWNrZWQoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy4jb3Blbk5hdGl2ZVBpY2tlci5jbG9zZWQuc3Vic2NyaWJlKChjbG9zZUFyZ3MpID0+IHtcbiAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtczogYW55W107XG5cbiAgICAgICAgICBpZiAoY2xvc2VBcmdzLnJlYXNvbiA9PT0gJ3NhdmUnKSB7XG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW1zID0gW107XG5cbiAgICAgICAgICAgIHRoaXMuZGF0YS5mb3JFYWNoKChpdGVtOiBhbnksIGRhdGFJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBjbG9zZUFyZ3MuZGF0YS5zb21lKChzYXZlZEl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHNhdmVkSXRlbS5pbmRleCA9PT0gZGF0YUluZGV4O1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMgPSBpbml0aWFsVmFsdWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy4jcHJvY2Vzc1BpY2tlclJlc3VsdChzZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uQXV0b2NvbXBsZXRlT3BlbkNoYW5nZSgkZXZlbnQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoJGV2ZW50KSB7XG4gICAgICB0aGlzLm9wZW5DaGFuZ2UuZW1pdCh0cnVlKTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLiNwaWNrZXJNb2RhbE9wZW4oKSkge1xuICAgICAgdGhpcy5vcGVuQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gICNjcmVhdGVTZWxlY3Rpb25Nb2RhbEluc3RhbmNlKFxuICAgIGluaXRpYWxTZWFyY2g6IHN0cmluZyxcbiAgKTogU2t5U2VsZWN0aW9uTW9kYWxJbnN0YW5jZSB7XG4gICAgY29uc3QgaW5pdGlhbFZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICBjb25zdCBtb2RhbENvbmZpZyA9IHRoaXMuc2hvd01vcmVDb25maWc/Lm5hdGl2ZVBpY2tlckNvbmZpZyB8fCB7fTtcblxuICAgIGlmICghbW9kYWxDb25maWcuaXRlbVRlbXBsYXRlKSB7XG4gICAgICBtb2RhbENvbmZpZy5pdGVtVGVtcGxhdGUgPSB0aGlzLnNlYXJjaFJlc3VsdFRlbXBsYXRlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlkUHJvcGVydHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy4jbG9nU3ZjLmVycm9yKFxuICAgICAgICBcIlRoZSBsb29rdXAgY29tcG9uZW50J3MgJ2lkUHJvcGVydHknIGlucHV0IGlzIHJlcXVpcmVkIHdoZW4gYGVuYWJsZVNob3dNb3JlYCBhbmQgJ3NlYXJjaEFzeW5jJyBhcmUgdXNlZCB0b2dldGhlci5cIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuI3NlbGVjdGlvbk1vZGFsU3ZjLm9wZW4oe1xuICAgICAgZGVzY3JpcHRvclByb3BlcnR5OiB0aGlzLmRlc2NyaXB0b3JQcm9wZXJ0eSxcbiAgICAgIGlkUHJvcGVydHk6IHRoaXMuaWRQcm9wZXJ0eSEsXG4gICAgICBzZWFyY2hBc3luYzogKGFyZ3MpID0+IHtcbiAgICAgICAgY29uc3Qgc2VhcmNoQXN5bmNBcmdzOiBTa3lBdXRvY29tcGxldGVTZWFyY2hBc3luY0FyZ3MgPSB7XG4gICAgICAgICAgZGlzcGxheVR5cGU6ICdtb2RhbCcsXG4gICAgICAgICAgb2Zmc2V0OiBhcmdzLm9mZnNldCxcbiAgICAgICAgICBzZWFyY2hUZXh0OiBhcmdzLnNlYXJjaFRleHQsXG4gICAgICAgICAgY29udGludWF0aW9uRGF0YTogYXJncy5jb250aW51YXRpb25EYXRhLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuc2VhcmNoQXN5bmMuZW1pdChzZWFyY2hBc3luY0FyZ3MpO1xuXG4gICAgICAgIHJldHVybiBzZWFyY2hBc3luY0FyZ3MucmVzdWx0O1xuICAgICAgfSxcbiAgICAgIHNlbGVjdE1vZGU6IHRoaXMuc2VsZWN0TW9kZSxcbiAgICAgIGFkZENsaWNrOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuYWRkQnV0dG9uQ2xpY2tlZCgpO1xuICAgICAgfSxcbiAgICAgIGluaXRpYWxTZWFyY2gsXG4gICAgICBpdGVtVGVtcGxhdGU6IG1vZGFsQ29uZmlnLml0ZW1UZW1wbGF0ZSxcbiAgICAgIHNlbGVjdGlvbkRlc2NyaXB0b3I6IG1vZGFsQ29uZmlnLnNlbGVjdGlvbkRlc2NyaXB0b3IsXG4gICAgICBzaG93QWRkQnV0dG9uOiB0aGlzLnNob3dBZGRCdXR0b24sXG4gICAgICB0aXRsZTogbW9kYWxDb25maWcudGl0bGUsXG4gICAgICB2YWx1ZTogaW5pdGlhbFZhbHVlLFxuICAgICAgd3JhcHBlckNsYXNzOiB0aGlzLndyYXBwZXJDbGFzcyxcbiAgICB9KTtcbiAgfVxuXG4gICNjcmVhdGVOYXRpdmVQaWNrZXJJbnN0YW5jZShpbml0aWFsU2VhcmNoOiBzdHJpbmcpOiBTa3lNb2RhbEluc3RhbmNlIHtcbiAgICBjb25zdCBpbml0aWFsVmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgIGNvbnN0IG1vZGFsQ29uZmlnID0gdGhpcy5zaG93TW9yZUNvbmZpZz8ubmF0aXZlUGlja2VyQ29uZmlnIHx8IHt9O1xuXG4gICAgaWYgKCFtb2RhbENvbmZpZy5pdGVtVGVtcGxhdGUpIHtcbiAgICAgIG1vZGFsQ29uZmlnLml0ZW1UZW1wbGF0ZSA9IHRoaXMuc2VhcmNoUmVzdWx0VGVtcGxhdGU7XG4gICAgfVxuXG4gICAgaWYgKCFtb2RhbENvbmZpZy5zZWxlY3Rpb25EZXNjcmlwdG9yKSB7XG4gICAgICBtb2RhbENvbmZpZy5zZWxlY3Rpb25EZXNjcmlwdG9yID1cbiAgICAgICAgdGhpcy5zZWxlY3RNb2RlID09PSAnc2luZ2xlJyA/ICdpdGVtJyA6ICdpdGVtcyc7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGV4dFByb3ZpZGVyVmFsdWUgPSBuZXcgU2t5TG9va3VwU2hvd01vcmVOYXRpdmVQaWNrZXJDb250ZXh0KFxuICAgICAgdGhpcy5kZXNjcmlwdG9yUHJvcGVydHksXG4gICAgICBpbml0aWFsU2VhcmNoLFxuICAgICAgaW5pdGlhbFZhbHVlLFxuICAgICAgdGhpcy5kYXRhLFxuICAgICAgdGhpcy5zZWFyY2hPckRlZmF1bHQsXG4gICAgICB0aGlzLnNlbGVjdE1vZGUsXG4gICAgICB0aGlzLnNob3dBZGRCdXR0b24sXG4gICAgICBtb2RhbENvbmZpZyxcbiAgICApO1xuXG4gICAgcmV0dXJuIHRoaXMuI21vZGFsU2VydmljZS5vcGVuKFNreUxvb2t1cFNob3dNb3JlTW9kYWxDb21wb25lbnQsIHtcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogU2t5TG9va3VwU2hvd01vcmVOYXRpdmVQaWNrZXJDb250ZXh0LFxuICAgICAgICAgIHVzZVZhbHVlOiBjb250ZXh0UHJvdmlkZXJWYWx1ZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IFNreUxvb2t1cEFkYXB0ZXJTZXJ2aWNlLFxuICAgICAgICAgIHVzZVZhbHVlOiB0aGlzLiNhZGFwdGVyLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHNpemU6ICdsYXJnZScsXG4gICAgICB3cmFwcGVyQ2xhc3M6IHRoaXMud3JhcHBlckNsYXNzLFxuICAgIH0pO1xuICB9XG5cbiAgI3Byb2Nlc3NQaWNrZXJSZXN1bHQoc2VsZWN0ZWRJdGVtczogYW55W10gfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICB0aGlzLiNvcGVuU2VsZWN0aW9uTW9kYWwgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy4jb3Blbk5hdGl2ZVBpY2tlciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNob3dNb3JlUGlja2VySWQgPSB1bmRlZmluZWQ7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHNlbGVjdGVkSXRlbXMgPSBzZWxlY3RlZEl0ZW1zIHx8IFtdO1xuXG4gICAgdGhpcy53cml0ZVZhbHVlKHNlbGVjdGVkSXRlbXMpO1xuICAgIHRoaXMuI2ZvY3VzSW5wdXQoKTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBvblNlYXJjaEFzeW5jKGFyZ3M6IFNreUF1dG9jb21wbGV0ZVNlYXJjaEFzeW5jQXJncyk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoQXN5bmMuZW1pdChhcmdzKTtcbiAgfVxuXG4gICNhZGRUb1NlbGVjdGVkKGl0ZW06IGFueSk6IHZvaWQge1xuICAgIGxldCBzZWxlY3RlZEl0ZW1zOiBhbnlbXTtcblxuICAgIGlmICh0aGlzLnNlbGVjdE1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICBzZWxlY3RlZEl0ZW1zID0gW2l0ZW1dO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxlY3RlZEl0ZW1zID0gdGhpcy52YWx1ZTtcblxuICAgICAgY29uc3QgaWRQcm9wZXJ0eSA9IHRoaXMuaWRQcm9wZXJ0eSB8fCAnJztcblxuICAgICAgLy8gSWYgaXRlbXMgaGF2ZSBhIHVuaXF1ZSBpZGVudGlmaWVyLCBkb24ndCBhbGxvdyB0aGUgc2FtZSBpdGVtIHRvIGJlIGFkZGVkIHR3aWNlLlxuICAgICAgaWYgKFxuICAgICAgICAhdGhpcy5pZFByb3BlcnR5IHx8XG4gICAgICAgICF0aGlzLnZhbHVlLnNvbWUoXG4gICAgICAgICAgKGV4aXN0aW5nSXRlbSkgPT4gZXhpc3RpbmdJdGVtW2lkUHJvcGVydHldID09PSBpdGVtW2lkUHJvcGVydHldLFxuICAgICAgICApXG4gICAgICApIHtcbiAgICAgICAgc2VsZWN0ZWRJdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNsZWFyU2VhcmNoVGV4dCgpO1xuICAgIH1cblxuICAgIHRoaXMud3JpdGVWYWx1ZShzZWxlY3RlZEl0ZW1zKTtcbiAgfVxuXG4gICNhZGRFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICB0aGlzLiNpZGxlID0gbmV3IFN1YmplY3QoKTtcbiAgICB0aGlzLiNmb2N1c0lucHV0T25Ib3N0Q2xpY2soKTtcbiAgfVxuXG4gICNyZW1vdmVFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICB0aGlzLiNpZGxlLm5leHQoKTtcbiAgICB0aGlzLiNpZGxlLmNvbXBsZXRlKCk7XG4gIH1cblxuICAjZm9jdXNJbnB1dE9uSG9zdENsaWNrKCk6IHZvaWQge1xuICAgIGxldCBob3N0RWxlbWVudCA9ICF0aGlzLmlucHV0Qm94SG9zdFN2Y1xuICAgICAgPyB0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnRcbiAgICAgIDogdGhpcy5sb29rdXBXcmFwcGVyUmVmPy5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IGRvY3VtZW50T2JqID0gdGhpcy4jd2luZG93UmVmLm5hdGl2ZVdpbmRvdy5kb2N1bWVudDtcblxuICAgIC8vIEhhbmRsZXMgZm9jdXNpbmcgdGhlIGlucHV0IHdoZW4gdGhlIGhvc3QgaXMgY2xpY2tlZC5cbiAgICAvLyBUaGUgaW5wdXQgc2hvdWxkIE5PVCBiZSBmb2N1c2VkIGlmIG90aGVyIGVsZW1lbnRzICh0b2tlbnMsIGV0Yy4pXG4gICAgLy8gYXJlIGN1cnJlbnRseSBmb2N1c2VkIG9yIGJlaW5nIHRhYmJlZCB0aHJvdWdoLlxuXG4gICAgb2JzZXJ2YWJsZUZyb21FdmVudDxNb3VzZUV2ZW50Pihkb2N1bWVudE9iaiwgJ2NsaWNrJylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNpZGxlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBob3N0RWxlbWVudCA9ICF0aGlzLmlucHV0Qm94SG9zdFN2Y1xuICAgICAgICAgID8gdGhpcy4jZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgOiB0aGlzLmxvb2t1cFdyYXBwZXJSZWY/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIHRoaXMuaXNJbnB1dEZvY3VzZWQgPSBob3N0RWxlbWVudC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KTtcblxuICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuXG4gICAgb2JzZXJ2YWJsZUZyb21FdmVudDxLZXlib2FyZEV2ZW50Pihkb2N1bWVudE9iaiwgJ2ZvY3VzaW4nKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI2lkbGUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGhvc3RFbGVtZW50ID0gIXRoaXMuaW5wdXRCb3hIb3N0U3ZjXG4gICAgICAgICAgPyB0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICA6IHRoaXMubG9va3VwV3JhcHBlclJlZj8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgdGhpcy5pc0lucHV0Rm9jdXNlZCA9IGhvc3RFbGVtZW50LmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpO1xuXG4gICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICBpZiAoaG9zdEVsZW1lbnQpIHtcbiAgICAgIG9ic2VydmFibGVGcm9tRXZlbnQoaG9zdEVsZW1lbnQsICdtb3VzZXVwJylcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI2lkbGUpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBjbGFzc0xpc3QgPSBkb2N1bWVudE9iai5hY3RpdmVFbGVtZW50LmNsYXNzTGlzdDtcbiAgICAgICAgICBpZiAoIWNsYXNzTGlzdCB8fCAhY2xhc3NMaXN0LmNvbnRhaW5zKCdza3ktdG9rZW4nKSkge1xuICAgICAgICAgICAgdGhpcy4jZm9jdXNJbnB1dCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgI2ZvY3VzSW5wdXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubG9va3VwV3JhcHBlclJlZikge1xuICAgICAgdGhpcy4jYWRhcHRlci5mb2N1c0lucHV0KHRoaXMubG9va3VwV3JhcHBlclJlZik7XG4gICAgfVxuICB9XG5cbiAgI29uQWRkQnV0dG9uQ29tcGxldGUoYXJnczogU2t5TG9va3VwQWRkQ2FsbGJhY2tBcmdzKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI29wZW5TZWxlY3Rpb25Nb2RhbCkge1xuICAgICAgLy8gTm90aWZ5IHRoZSBzZWxlY3Rpb24gbW9kYWwgb2YgdGhlIG5ldyBpdGVtLiBUaGUgc2VsZWN0aW9uXG4gICAgICAvLyBtb2RhbCB3aWxsIGRlY2lkZSB3aGV0aGVyIHRoZSBuZXcgaXRlbSBzaG91bGQgYmUgYWRkZWRcbiAgICAgIC8vIHRvIHRoZSB2YWx1ZSB3aGVuIHRoZSB1c2VyIGNvbmZpcm1zIG9yIGNhbmNlbHMgdGhlXG4gICAgICAvLyBzZWxlY3Rpb24gbW9kYWwuXG4gICAgICB0aGlzLiNvcGVuU2VsZWN0aW9uTW9kYWwuYWRkSXRlbShhcmdzLml0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgYWRkSXRlbVRvVmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgICAgIGlmICh0aGlzLiNoYXNTZWFyY2hBc3luYygpKSB7XG4gICAgICAgIGFkZEl0ZW1Ub1ZhbHVlID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChhcmdzLmRhdGEpIHtcbiAgICAgICAgICB0aGlzLmRhdGEgPSBhcmdzLmRhdGE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5kYXRhLmluZGV4T2YoYXJncy5pdGVtKSA+PSAwKSB7XG4gICAgICAgICAgaWYgKHRoaXMuI29wZW5OYXRpdmVQaWNrZXIpIHtcbiAgICAgICAgICAgIC8vIE5vdGlmeSB0aGUgcGlja2VyIG9mIHRoZSBuZXcgaXRlbS4gVGhlIHBpY2tlciB3aWxsXG4gICAgICAgICAgICAvLyBkZWNpZGUgd2hldGhlciB0aGUgbmV3IGl0ZW0gc2hvdWxkIGJlIGFkZGVkIHRvIHRoZVxuICAgICAgICAgICAgLy8gdmFsdWUgd2hlbiB0aGUgdXNlciBjb25maXJtcyBvciBjYW5jZWxzIHRoZSBwaWNrZXIuXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgIHRoaXMuI29wZW5OYXRpdmVQaWNrZXJcbiAgICAgICAgICAgICAgICAuY29tcG9uZW50SW5zdGFuY2UgYXMgU2t5TG9va3VwU2hvd01vcmVNb2RhbENvbXBvbmVudFxuICAgICAgICAgICAgKS5vbkl0ZW1TZWxlY3QodHJ1ZSwgeyB2YWx1ZTogYXJncy5pdGVtLCBzZWxlY3RlZDogZmFsc2UgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFkZEl0ZW1Ub1ZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGFkZEl0ZW1Ub1ZhbHVlKSB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID1cbiAgICAgICAgICB0aGlzLnNlbGVjdE1vZGUgPT09ICdtdWx0aXBsZSdcbiAgICAgICAgICAgID8gdGhpcy52YWx1ZS5jb25jYXQoYXJncy5pdGVtKVxuICAgICAgICAgICAgOiBbYXJncy5pdGVtXTtcbiAgICAgICAgdGhpcy53cml0ZVZhbHVlKG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAjcGFyc2VUb2tlbnMoZGF0YTogYW55W10pOiBTa3lUb2tlbltdIHtcbiAgICByZXR1cm4gZGF0YS5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IGl0ZW0sXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgI3NlbmRBdXRvY29tcGxldGVNZXNzYWdlKHR5cGU6IFNreUF1dG9jb21wbGV0ZU1lc3NhZ2VUeXBlKTogdm9pZCB7XG4gICAgdGhpcy5hdXRvY29tcGxldGVDb250cm9sbGVyLm5leHQoeyB0eXBlIH0pO1xuICB9XG5cbiAgI3NlbmRUb2tlbnNNZXNzYWdlKHR5cGU6IFNreVRva2Vuc01lc3NhZ2VUeXBlKTogdm9pZCB7XG4gICAgdGhpcy50b2tlbnNDb250cm9sbGVyLm5leHQoeyB0eXBlIH0pO1xuICB9XG5cbiAgI3VwZGF0ZUZvclNlbGVjdE1vZGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUpIHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdE1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUudmFsdWUgPSB0aGlzLnZhbHVlICYmIHRoaXMudmFsdWVbMF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNsZWFyU2VhcmNoVGV4dCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICNoYXNTZWFyY2hBc3luYygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hBc3luYy5vYnNlcnZlcnMubGVuZ3RoID4gMDtcbiAgfVxuXG4gICNwaWNrZXJNb2RhbE9wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKHRoaXMuI29wZW5OYXRpdmVQaWNrZXIgfHwgdGhpcy4jb3BlblNlbGVjdGlvbk1vZGFsKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpbnB1dEJveEhvc3RTdmNcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0VGVtcGxhdGVSZWZcIj48L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2lucHV0VGVtcGxhdGVSZWY+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNreS1sb29rdXBcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdza3ktbG9va3VwLWZvY3VzZWQnOiBpc0lucHV0Rm9jdXNlZCxcbiAgICAgICdza3ktbG9va3VwLWRpc2FibGVkJzogZGlzYWJsZWQsXG4gICAgICAnc2t5LWxvb2t1cC1zaW5nbGUnOiBzZWxlY3RNb2RlID09PSAnc2luZ2xlJ1xuICAgIH1cIlxuICAgICNsb29rdXBXcmFwcGVyXG4gID5cbiAgICA8c2t5LWF1dG9jb21wbGV0ZVxuICAgICAgW2FyaWFMYWJlbGxlZEJ5XT1cImFyaWFMYWJlbGxlZEJ5IHx8IGNvbnRyb2xJZFwiXG4gICAgICBbYXR0ci5kYXRhLXNreS1sb29rdXAtc2hvdy1tb3JlLXBpY2tlci1pZF09XCJzaG93TW9yZVBpY2tlcklkXCJcbiAgICAgIFtkYXRhXT1cImRhdGFcIlxuICAgICAgW2RlYm91bmNlVGltZV09XCJkZWJvdW5jZVRpbWVcIlxuICAgICAgW2Rlc2NyaXB0b3JQcm9wZXJ0eV09XCJkZXNjcmlwdG9yUHJvcGVydHlcIlxuICAgICAgW2VuYWJsZVNob3dNb3JlXT1cImVuYWJsZVNob3dNb3JlXCJcbiAgICAgIFttZXNzYWdlU3RyZWFtXT1cImF1dG9jb21wbGV0ZUNvbnRyb2xsZXJcIlxuICAgICAgW3Byb3BlcnRpZXNUb1NlYXJjaF09XCJwcm9wZXJ0aWVzVG9TZWFyY2hcIlxuICAgICAgW3NlYXJjaF09XCJzZWFyY2hPckRlZmF1bHRcIlxuICAgICAgW3NlYXJjaEFzeW5jRGlzYWJsZWRdPVwic2VhcmNoQXN5bmMub2JzZXJ2ZXJzLmxlbmd0aCA9PT0gMFwiXG4gICAgICBbc2VhcmNoRmlsdGVyc109XCJzZWFyY2hGaWx0ZXJzXCJcbiAgICAgIFtzZWFyY2hSZXN1bHRzTGltaXRdPVwic2VhcmNoUmVzdWx0c0xpbWl0XCJcbiAgICAgIFtzZWFyY2hSZXN1bHRUZW1wbGF0ZV09XCJzZWFyY2hSZXN1bHRUZW1wbGF0ZVwiXG4gICAgICBbc2VhcmNoVGV4dE1pbmltdW1DaGFyYWN0ZXJzXT1cInNlYXJjaFRleHRNaW5pbXVtQ2hhcmFjdGVyc1wiXG4gICAgICBbc2hvd0FkZEJ1dHRvbl09XCJzaG93QWRkQnV0dG9uXCJcbiAgICAgIFt3cmFwcGVyQ2xhc3NdPVwid3JhcHBlckNsYXNzXCJcbiAgICAgIChhZGRDbGljayk9XCJhZGRCdXR0b25DbGlja2VkKClcIlxuICAgICAgKHNlYXJjaEFzeW5jKT1cIm9uU2VhcmNoQXN5bmMoJGV2ZW50KVwiXG4gICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uQXV0b2NvbXBsZXRlU2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgKHNob3dNb3JlQ2xpY2spPVwib25TaG93TW9yZUNsaWNrKCRldmVudClcIlxuICAgICAgKG9wZW5DaGFuZ2UpPVwib25BdXRvY29tcGxldGVPcGVuQ2hhbmdlKCRldmVudClcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJza3ktbG9va3VwLXNlYXJjaC1mbGV4LXdyYXBwZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2t5LWxvb2t1cC1zZWFyY2hcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICdza3ktZmllbGQtc3RhdHVzLWFjdGl2ZSc6IGlzSW5wdXRGb2N1c2VkICYmICFkaXNhYmxlZFxuICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPHNreS10b2tlbnNcbiAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0TW9kZSA9PT0gJ211bHRpcGxlJ1wiXG4gICAgICAgICAgICBjbGFzcz1cInNreS1sb29rdXAtdG9rZW5zXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICBbZGlzcGxheVdpdGhdPVwiZGVzY3JpcHRvclByb3BlcnR5XCJcbiAgICAgICAgICAgIFtmb2N1c2FibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW21lc3NhZ2VTdHJlYW1dPVwidG9rZW5zQ29udHJvbGxlclwiXG4gICAgICAgICAgICBbdHJhY2tXaXRoXT1cImlkUHJvcGVydHlcIlxuICAgICAgICAgICAgW3Rva2Vuc109XCJ0b2tlbnNcIlxuICAgICAgICAgICAgKGtleXVwKT1cIm9uVG9rZW5zS2V5VXAoJGV2ZW50KVwiXG4gICAgICAgICAgICAodG9rZW5zQ2hhbmdlKT1cIm9uVG9rZW5zQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgKHRva2Vuc1JlbmRlcmVkKT1cIm9uVG9rZW5zUmVuZGVyZWQoKVwiXG4gICAgICAgICAgICAodG9rZW5TZWxlY3RlZCk9XCJlbmFibGVTaG93TW9yZSA/IG9wZW5QaWNrZXIoJycpIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgIChmb2N1c0luZGV4T3ZlclJhbmdlKT1cIm9uVG9rZW5zRm9jdXNJbmRleE92ZXJSYW5nZSgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktZm9ybS1jb250cm9sIHNreS1sb29rdXAtaW5wdXRcIlxuICAgICAgICAgICAgICByb3dzPVwiMVwiXG4gICAgICAgICAgICAgIHNreUF1dG9jb21wbGV0ZVxuICAgICAgICAgICAgICB3cmFwPVwib2ZmXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJhcmlhRGVzY3JpYmVkQnkgfCBhc3luY1wiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiY29udHJvbElkXCJcbiAgICAgICAgICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJUZXh0XCJcbiAgICAgICAgICAgICAgW2F1dG9jb21wbGV0ZUF0dHJpYnV0ZV09XCJhdXRvY29tcGxldGVBdHRyaWJ1dGVcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAoYmx1cik9XCJvbkF1dG9jb21wbGV0ZUJsdXIoKVwiXG4gICAgICAgICAgICAgIChrZXlkb3duKT1cImlucHV0S2V5ZG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKGtleXVwKT1cImlucHV0S2V5dXAoJGV2ZW50KVwiXG4gICAgICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaW5wdXRCb3hIb3N0U3ZjICYmICFlbmFibGVTaG93TW9yZVwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWFyY2hJY29uVGVtcGxhdGVSZWZcIlxuICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3NreS10b2tlbnM+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RNb2RlID09PSAnc2luZ2xlJ1wiXG4gICAgICAgICAgICBjbGFzcz1cInNreS1sb29rdXAtc2luZ2xlLWNvbnRyb2xcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgICBjbGFzcz1cInNreS1mb3JtLWNvbnRyb2wgc2t5LWxvb2t1cC1pbnB1dFwiXG4gICAgICAgICAgICAgIHJvd3M9XCIxXCJcbiAgICAgICAgICAgICAgc2t5QXV0b2NvbXBsZXRlXG4gICAgICAgICAgICAgIHdyYXA9XCJvZmZcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImFyaWFEZXNjcmliZWRCeSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICAgICAgICBbYXR0ci5pZF09XCJjb250cm9sSWRcIlxuICAgICAgICAgICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclRleHRcIlxuICAgICAgICAgICAgICBbYXV0b2NvbXBsZXRlQXR0cmlidXRlXT1cImF1dG9jb21wbGV0ZUF0dHJpYnV0ZVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgIChibHVyKT1cIm9uQXV0b2NvbXBsZXRlQmx1cigpXCJcbiAgICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpbnB1dEJveEhvc3RTdmMgJiYgIWVuYWJsZVNob3dNb3JlXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInNlYXJjaEljb25UZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpbnB1dEJveEhvc3RTdmMgJiYgZW5hYmxlU2hvd01vcmVcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInNob3dNb3JlQnV0dG9uVGVtcGxhdGVSZWZcIlxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L3NreS1hdXRvY29tcGxldGU+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzaG93TW9yZUJ1dHRvblRlbXBsYXRlUmVmPlxuICA8ZGl2IGNsYXNzPVwic2t5LWlucHV0LWdyb3VwLWJ0blwiPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWRlZmF1bHRcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ3NreS1idG4tZGlzYWJsZWQnOiBkaXNhYmxlZCB9XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgJ3NreXV4X2xvb2t1cF9zZWFyY2hfYnV0dG9uX3Nob3dfbW9yZScgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgIFwiXG4gICAgICAoY2xpY2spPVwib25TZWFyY2hCdXR0b25DbGljaygpXCJcbiAgICA+XG4gICAgICA8c2t5LWljb24gaWNvbj1cInNlYXJjaFwiIC8+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzZWFyY2hJY29uVGVtcGxhdGVSZWY+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNreS1pbnB1dC1ncm91cC1pY29uIHNreS1pbnB1dC1ib3gtaWNvbi1pbnNldFwiXG4gICAgW25nQ2xhc3NdPVwieyAnc2t5LWxvb2t1cC1kaXNhYmxlZCc6IGRpc2FibGVkIH1cIlxuICA+XG4gICAgPHNreS1pY29uIGljb249XCJzZWFyY2hcIiAvPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
2
|
import { NgModule } from '@angular/core';
|
|
3
|
-
import { SkyIconModule
|
|
3
|
+
import { SkyIconModule } from '@skyux/icon';
|
|
4
|
+
import { SkyTokensModule } from '@skyux/indicators';
|
|
4
5
|
import { SkyThemeModule } from '@skyux/theme';
|
|
5
6
|
import { SkyAutocompleteModule } from '../autocomplete/autocomplete.module';
|
|
6
7
|
import { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';
|
|
@@ -36,4 +37,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
36
37
|
exports: [SkyLookupComponent],
|
|
37
38
|
}]
|
|
38
39
|
}] });
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvc3JjL2xpYi9tb2R1bGVzL2xvb2t1cC9sb29rdXAubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFakYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBY3hELE1BQU0sT0FBTyxlQUFlOzhHQUFmLGVBQWU7K0dBQWYsZUFBZSxpQkFYWCxrQkFBa0IsYUFFL0IsWUFBWTtZQUNaLHFCQUFxQjtZQUNyQixhQUFhO1lBQ2Isd0JBQXdCO1lBQ3hCLGNBQWM7WUFDZCxlQUFlLGFBRVAsa0JBQWtCOytHQUVqQixlQUFlLFlBVHhCLFlBQVk7WUFDWixxQkFBcUI7WUFDckIsYUFBYTtZQUNiLHdCQUF3QjtZQUN4QixjQUFjO1lBQ2QsZUFBZTs7MkZBSU4sZUFBZTtrQkFaM0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztvQkFDbEMsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1oscUJBQXFCO3dCQUNyQixhQUFhO3dCQUNiLHdCQUF3Qjt3QkFDeEIsY0FBYzt3QkFDZCxlQUFlO3FCQUNoQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztpQkFDOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUljb25Nb2R1bGUgfSBmcm9tICdAc2t5dXgvaWNvbic7XG5pbXBvcnQgeyBTa3lUb2tlbnNNb2R1bGUgfSBmcm9tICdAc2t5dXgvaW5kaWNhdG9ycyc7XG5pbXBvcnQgeyBTa3lUaGVtZU1vZHVsZSB9IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZU1vZHVsZSB9IGZyb20gJy4uL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUubW9kdWxlJztcbmltcG9ydCB7IFNreUxvb2t1cFJlc291cmNlc01vZHVsZSB9IGZyb20gJy4uL3NoYXJlZC9za3ktbG9va3VwLXJlc291cmNlcy5tb2R1bGUnO1xuXG5pbXBvcnQgeyBTa3lMb29rdXBDb21wb25lbnQgfSBmcm9tICcuL2xvb2t1cC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtTa3lMb29rdXBDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFNreUF1dG9jb21wbGV0ZU1vZHVsZSxcbiAgICBTa3lJY29uTW9kdWxlLFxuICAgIFNreUxvb2t1cFJlc291cmNlc01vZHVsZSxcbiAgICBTa3lUaGVtZU1vZHVsZSxcbiAgICBTa3lUb2tlbnNNb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtTa3lMb29rdXBDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lMb29rdXBNb2R1bGUge31cbiJdfQ==
|
|
@@ -10,7 +10,7 @@ import * as i2 from "./search-adapter.service";
|
|
|
10
10
|
import * as i3 from "@angular/common";
|
|
11
11
|
import * as i4 from "@skyux/forms";
|
|
12
12
|
import * as i5 from "@angular/forms";
|
|
13
|
-
import * as i6 from "@skyux/
|
|
13
|
+
import * as i6 from "@skyux/icon";
|
|
14
14
|
import * as i7 from "@skyux/theme";
|
|
15
15
|
import * as i8 from "@skyux/i18n";
|
|
16
16
|
const INPUT_SHOWN_STATE = 'inputShown';
|
|
@@ -240,7 +240,7 @@ export class SkySearchComponent {
|
|
|
240
240
|
});
|
|
241
241
|
}
|
|
242
242
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: SkySearchComponent, deps: [{ token: i1.SkyMediaQueryService }, { token: i0.ElementRef }, { token: i2.SkySearchAdapterService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
243
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: SkySearchComponent, selector: "sky-search", inputs: { ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", searchText: "searchText", expandMode: "expandMode", debounceTime: "debounceTime", disabled: "disabled", placeholderText: "placeholderText" }, outputs: { searchApply: "searchApply", searchChange: "searchChange", searchClear: "searchClear" }, providers: [SkySearchAdapterService], usesOnChanges: true, ngImport: i0, template: "<div class=\"sky-search-container\">\n <div class=\"sky-search-button-container\">\n <button\n class=\"sky-btn sky-btn-default sky-btn-icon sky-search-btn-open\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_search_open' | skyLibResources\"\n [hidden]=\"!searchButtonShown\"\n [ngClass]=\"{ 'sky-search-btn-open-applied': clearButtonShown }\"\n (click)=\"toggleSearchInput(true)\"\n >\n <ng-container *ngTemplateOutlet=\"searchIconTemplate\"></ng-container>\n </button>\n </div>\n <div\n class=\"sky-search-dismiss-container\"\n [hidden]=\"searchButtonShown\"\n [ngClass]=\"{\n 'sky-search-dismiss-absolute': mobileSearchShown || isFullWidth\n }\"\n >\n <div class=\"sky-search-item-input\">\n <div\n class=\"sky-search-input-container\"\n [@inputState]=\"inputAnimate\"\n (@inputState.start)=\"inputAnimationStart($event)\"\n (@inputState.done)=\"inputAnimationEnd($event)\"\n [ngClass]=\"{\n 'sky-search-input-container-has-value': searchText?.trim()\n }\"\n >\n <sky-input-box [disabled]=\"disabled\">\n <input\n class=\"sky-form-control sky-search-input sky-rounded-corners\"\n type=\"text\"\n [attr.aria-label]=\"\n ariaLabelledBy\n ? undefined\n : ariaLabel ||\n ((contentInfoObs | async)?.descriptor?.type === 'text'\n ? ('skyux_search_aria_label_descriptor'\n | skyLibResources\n : (contentInfoObs | async)?.descriptor?.value)\n : ('skyux_search_label' | skyLibResources))\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.placeholder]=\"\n placeholderText || ('skyux_search_placeholder' | skyLibResources)\n \"\n [disabled]=\"disabled\"\n [ngModel]=\"searchText\"\n (keyup)=\"enterPress($event, searchText)\"\n (ngModelChange)=\"searchTextChanged($event)\"\n skyId\n #searchInput=\"skyId\"\n />\n <span\n class=\"sky-input-group-btn sky-input-group-clear sky-input-box-btn-inset\"\n [hidden]=\"!clearButtonShown\"\n >\n <button\n aria-hidden=\"true\"\n class=\"sky-btn sky-btn-default sky-search-btn sky-search-btn-clear\"\n tabindex=\"-1\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"clearSearchText()\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"times\" />\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"close\" size=\"sm\" />\n </button>\n </span>\n <span\n *skyThemeIf=\"'default'\"\n class=\"sky-input-group-btn sky-input-box-btn-inset\"\n >\n <button\n class=\"sky-btn sky-btn-default sky-search-btn sky-search-btn-apply\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_search_label' | skyLibResources\"\n [disabled]=\"disabled\"\n (click)=\"applySearchText(searchText)\"\n >\n <ng-container\n *ngTemplateOutlet=\"searchIconTemplate\"\n ></ng-container>\n </button>\n </span>\n <div\n *skyThemeIf=\"'modern'\"\n aria-hidden=\"true\"\n class=\"sky-input-group-icon sky-input-box-icon-inset-left\"\n >\n <ng-container *ngTemplateOutlet=\"searchIconTemplate\"></ng-container>\n </div>\n </sky-input-box>\n </div>\n </div>\n <div class=\"sky-search-item-dismiss\">\n <button\n *ngIf=\"mobileSearchShown\"\n class=\"sky-btn sky-btn-secondary sky-search-btn-dismiss\"\n type=\"button\"\n [attr.title]=\"'skyux_search_dismiss' | skyLibResources\"\n (click)=\"toggleSearchInput(false)\"\n >\n <sky-icon\n *skyThemeIf=\"'default'\"\n icon=\"chevron-circle-left\"\n size=\"lg\"\n />\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"double-chevron-left\" />\n </button>\n </div>\n </div>\n</div>\n\n<ng-template #searchIconTemplate>\n <sky-icon icon=\"search\" size=\"lg\" />\n</ng-template>\n", styles: ["sky-search .sky-search-input{border-top-right-radius:0;border-bottom-right-radius:0;border-right:0 none}sky-search .sky-search-input:focus{border:0 none;box-shadow:none;outline:none}sky-search .sky-search-input::-ms-clear{display:none}sky-search .sky-search-btn{border-left:0 none}sky-search .sky-search-btn:hover,sky-search .sky-search-btn:focus{background-color:#fff}sky-search .sky-search-btn-apply{padding-left:6px;border-top:1px solid #cdcfd2;border-bottom:1px solid #cdcfd2;border-right:1px solid #cdcfd2}sky-search .sky-search-btn-clear{border-right:0 none;padding-right:6px;border-top:1px solid #cdcfd2;border-bottom:1px solid #cdcfd2}sky-search .sky-search-input-focused .sky-search-btn{border-color:transparent;border-top:0 none;border-bottom:0 none}sky-search .sky-search-input-focused .sky-search-btn-apply{border-right:0 none}sky-search .sky-search-input-container .sky-input-group-btn>button:focus{z-index:3}sky-search .sky-search-input-container{min-width:auto}sky-search .sky-responsive-container-xs .sky-search-input-container,sky-search .sky-responsive-container-sm .sky-search-input-container,sky-search .sky-responsive-container-md .sky-search-input-container,sky-search .sky-responsive-container-lg .sky-search-input-container{min-width:auto}@media (min-width: 768px){sky-search .sky-search-input-container{min-width:300px}}sky-search .sky-responsive-container-sm .sky-search-input-container,sky-search .sky-responsive-container-md .sky-search-input-container,sky-search .sky-responsive-container-lg .sky-search-input-container{min-width:300px}@media (max-width: 767px){sky-search .sky-search-input,sky-search .sky-search-btn-apply,sky-search .sky-search-btn-clear{font-size:15px}}sky-search .sky-search-btn-open-applied.sky-search-btn-open,sky-search .sky-search-btn-open-applied.sky-search-btn-open:hover{color:#72bf44;border:2px solid #72bf44;padding:5px 11px}sky-search .sky-search-dismiss-container{display:flex}sky-search .sky-search-item-dismiss{flex-shrink:0;display:flex}sky-search .sky-search-item-dismiss>.sky-btn{border-color:transparent}sky-search .sky-search-item-input{flex-grow:1;display:flex}sky-search .sky-search-dismiss-absolute{align-items:center;position:absolute;background-color:#fff;inset:0;padding:5px}.sky-theme-modern sky-search .sky-input-box{--sky-background-color-input-box-group: transparent}.sky-theme-modern sky-search .sky-input-box .sky-input-group-btn .sky-btn.sky-search-btn{width:40px}.sky-theme-modern sky-search .sky-input-box .sky-input-group-btn .sky-btn.sky-search-btn .sky-icon.sky-i-close{color:#1c1d1f;font-size:inherit}.sky-theme-modern sky-search .sky-search-btn-open-applied.sky-search-btn-open,.sky-theme-modern sky-search .sky-search-btn-open-applied.sky-search-btn-open:hover{border:none;box-shadow:inset 0 0 0 2px #72bf44;padding:8px 14px}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container.sky-search-input-container-has-value .sky-input-box-group-form-control:not(.sky-input-box-group-form-control-focus,:hover) .sky-form-group{border:none;border-radius:unset;box-shadow:inset 0 -1px #1870b8}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box-icon-inset-left-wrapper .sky-input-box-icon-inset-left{padding:0 10px}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-group-icon .sky-icon{font-size:17.3333px;color:#1c1d1f}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box-group .sky-form-group{box-shadow:none}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box-group .sky-form-group .sky-input-box-form-group-inner input{width:auto;padding:10px 10px 10px 0;margin:0}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box-group .sky-form-group .sky-input-box-form-group-inner input::placeholder{font-style:normal;color:inherit;font-weight:400}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box-group .sky-form-group .sky-input-box-form-group-inner input:focus::placeholder{color:transparent}.sky-theme-modern.sky-theme-mode-dark .sky-search-dismiss-absolute{background-color:#121212}.sky-theme-modern.sky-theme-mode-dark .sky-search-btn-open-applied.sky-search-btn-open,.sky-theme-modern.sky-theme-mode-dark .sky-search-btn-open-applied.sky-search-btn-open:hover{color:#72bf44}.sky-theme-modern.sky-theme-mode-dark sky-search .sky-input-box{--sky-background-color-input-box-group: transparent}.sky-theme-modern.sky-theme-mode-dark sky-search .sky-input-box .sky-input-group-btn .sky-btn.sky-search-btn .sky-icon.sky-i-close{color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark sky-search .sky-input-group-icon .sky-icon{font-size:17.333px;color:#fbfcfe}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.λ10, selector: "sky-input-box", inputs: ["hasErrors", "disabled", "labelText", "characterLimit", "stacked", "helpPopoverTitle", "helpPopoverContent", "helpKey", "hintText", "errorsScreenReaderOnly"] }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { kind: "directive", type: i7.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }, { kind: "directive", type: i1.λ2, selector: "[skyId]", exportAs: ["skyId"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.SkyLibResourcesPipe, name: "skyLibResources" }], animations: [
|
|
243
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: SkySearchComponent, selector: "sky-search", inputs: { ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", searchText: "searchText", expandMode: "expandMode", debounceTime: "debounceTime", disabled: "disabled", placeholderText: "placeholderText" }, outputs: { searchApply: "searchApply", searchChange: "searchChange", searchClear: "searchClear" }, providers: [SkySearchAdapterService], usesOnChanges: true, ngImport: i0, template: "<div class=\"sky-search-container\">\n <div class=\"sky-search-button-container\">\n <button\n class=\"sky-btn sky-btn-default sky-btn-icon sky-search-btn-open\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_search_open' | skyLibResources\"\n [hidden]=\"!searchButtonShown\"\n [ngClass]=\"{ 'sky-search-btn-open-applied': clearButtonShown }\"\n (click)=\"toggleSearchInput(true)\"\n >\n <ng-container *ngTemplateOutlet=\"searchIconTemplate\"></ng-container>\n </button>\n </div>\n <div\n class=\"sky-search-dismiss-container\"\n [hidden]=\"searchButtonShown\"\n [ngClass]=\"{\n 'sky-search-dismiss-absolute': mobileSearchShown || isFullWidth\n }\"\n >\n <div class=\"sky-search-item-input\">\n <div\n class=\"sky-search-input-container\"\n [@inputState]=\"inputAnimate\"\n (@inputState.start)=\"inputAnimationStart($event)\"\n (@inputState.done)=\"inputAnimationEnd($event)\"\n [ngClass]=\"{\n 'sky-search-input-container-has-value': searchText?.trim()\n }\"\n >\n <sky-input-box [disabled]=\"disabled\">\n <input\n class=\"sky-form-control sky-search-input sky-rounded-corners\"\n type=\"text\"\n [attr.aria-label]=\"\n ariaLabelledBy\n ? undefined\n : ariaLabel ||\n ((contentInfoObs | async)?.descriptor?.type === 'text'\n ? ('skyux_search_aria_label_descriptor'\n | skyLibResources\n : (contentInfoObs | async)?.descriptor?.value)\n : ('skyux_search_label' | skyLibResources))\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.placeholder]=\"\n placeholderText || ('skyux_search_placeholder' | skyLibResources)\n \"\n [disabled]=\"disabled\"\n [ngModel]=\"searchText\"\n (keyup)=\"enterPress($event, searchText)\"\n (ngModelChange)=\"searchTextChanged($event)\"\n skyId\n #searchInput=\"skyId\"\n />\n <span\n class=\"sky-input-group-btn sky-input-group-clear sky-input-box-btn-inset\"\n [hidden]=\"!clearButtonShown\"\n >\n <button\n aria-hidden=\"true\"\n class=\"sky-btn sky-btn-default sky-search-btn sky-search-btn-clear\"\n tabindex=\"-1\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"clearSearchText()\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"times\" />\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"close\" size=\"sm\" />\n </button>\n </span>\n <span\n *skyThemeIf=\"'default'\"\n class=\"sky-input-group-btn sky-input-box-btn-inset\"\n >\n <button\n class=\"sky-btn sky-btn-default sky-search-btn sky-search-btn-apply\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_search_label' | skyLibResources\"\n [disabled]=\"disabled\"\n (click)=\"applySearchText(searchText)\"\n >\n <ng-container\n *ngTemplateOutlet=\"searchIconTemplate\"\n ></ng-container>\n </button>\n </span>\n <div\n *skyThemeIf=\"'modern'\"\n aria-hidden=\"true\"\n class=\"sky-input-group-icon sky-input-box-icon-inset-left\"\n >\n <ng-container *ngTemplateOutlet=\"searchIconTemplate\"></ng-container>\n </div>\n </sky-input-box>\n </div>\n </div>\n <div class=\"sky-search-item-dismiss\">\n <button\n *ngIf=\"mobileSearchShown\"\n class=\"sky-btn sky-btn-secondary sky-search-btn-dismiss\"\n type=\"button\"\n [attr.title]=\"'skyux_search_dismiss' | skyLibResources\"\n (click)=\"toggleSearchInput(false)\"\n >\n <sky-icon\n *skyThemeIf=\"'default'\"\n icon=\"chevron-circle-left\"\n size=\"lg\"\n />\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"double-chevron-left\" />\n </button>\n </div>\n </div>\n</div>\n\n<ng-template #searchIconTemplate>\n <sky-icon icon=\"search\" size=\"lg\" />\n</ng-template>\n", styles: ["sky-search .sky-search-input{border-top-right-radius:0;border-bottom-right-radius:0;border-right:0 none}sky-search .sky-search-input:focus{border:0 none;box-shadow:none;outline:none}sky-search .sky-search-input::-ms-clear{display:none}sky-search .sky-search-btn{border-left:0 none}sky-search .sky-search-btn:hover,sky-search .sky-search-btn:focus{background-color:#fff}sky-search .sky-search-btn-apply{padding-left:6px;border-top:1px solid #cdcfd2;border-bottom:1px solid #cdcfd2;border-right:1px solid #cdcfd2}sky-search .sky-search-btn-clear{border-right:0 none;padding-right:6px;border-top:1px solid #cdcfd2;border-bottom:1px solid #cdcfd2}sky-search .sky-search-input-focused .sky-search-btn{border-color:transparent;border-top:0 none;border-bottom:0 none}sky-search .sky-search-input-focused .sky-search-btn-apply{border-right:0 none}sky-search .sky-search-input-container .sky-input-group-btn>button:focus{z-index:3}sky-search .sky-search-input-container{min-width:auto}sky-search .sky-responsive-container-xs .sky-search-input-container,sky-search .sky-responsive-container-sm .sky-search-input-container,sky-search .sky-responsive-container-md .sky-search-input-container,sky-search .sky-responsive-container-lg .sky-search-input-container{min-width:auto}@media (min-width: 768px){sky-search .sky-search-input-container{min-width:300px}}sky-search .sky-responsive-container-sm .sky-search-input-container,sky-search .sky-responsive-container-md .sky-search-input-container,sky-search .sky-responsive-container-lg .sky-search-input-container{min-width:300px}@media (max-width: 767px){sky-search .sky-search-input,sky-search .sky-search-btn-apply,sky-search .sky-search-btn-clear{font-size:15px}}sky-search .sky-search-btn-open-applied.sky-search-btn-open,sky-search .sky-search-btn-open-applied.sky-search-btn-open:hover{color:#72bf44;border:2px solid #72bf44;padding:5px 11px}sky-search .sky-search-dismiss-container{display:flex}sky-search .sky-search-item-dismiss{flex-shrink:0;display:flex}sky-search .sky-search-item-dismiss>.sky-btn{border-color:transparent}sky-search .sky-search-item-input{flex-grow:1;display:flex}sky-search .sky-search-dismiss-absolute{align-items:center;position:absolute;background-color:#fff;inset:0;padding:5px}.sky-theme-modern sky-search .sky-input-box{--sky-background-color-input-box-group: transparent}.sky-theme-modern sky-search .sky-input-box .sky-input-group-btn .sky-btn.sky-search-btn{width:40px}.sky-theme-modern sky-search .sky-input-box .sky-input-group-btn .sky-btn.sky-search-btn .sky-icon.sky-i-close{color:#1c1d1f;font-size:inherit}.sky-theme-modern sky-search .sky-search-btn-open-applied.sky-search-btn-open,.sky-theme-modern sky-search .sky-search-btn-open-applied.sky-search-btn-open:hover{border:none;box-shadow:inset 0 0 0 2px #72bf44;padding:8px 14px}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container.sky-search-input-container-has-value .sky-input-box-group-form-control:not(.sky-input-box-group-form-control-focus,:hover) .sky-form-group{border:none;border-radius:unset;box-shadow:inset 0 -1px #1870b8}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box-icon-inset-left-wrapper .sky-input-box-icon-inset-left{padding:0 10px}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-group-icon .sky-icon{font-size:17.3333px;color:#1c1d1f}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box-group .sky-form-group{box-shadow:none}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box-group .sky-form-group .sky-input-box-form-group-inner input{width:auto;padding:10px 10px 10px 0;margin:0}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box-group .sky-form-group .sky-input-box-form-group-inner input::placeholder{font-style:normal;color:inherit;font-weight:400}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box-group .sky-form-group .sky-input-box-form-group-inner input:focus::placeholder{color:transparent}.sky-theme-modern.sky-theme-mode-dark .sky-search-dismiss-absolute{background-color:#121212}.sky-theme-modern.sky-theme-mode-dark .sky-search-btn-open-applied.sky-search-btn-open,.sky-theme-modern.sky-theme-mode-dark .sky-search-btn-open-applied.sky-search-btn-open:hover{color:#72bf44}.sky-theme-modern.sky-theme-mode-dark sky-search .sky-input-box{--sky-background-color-input-box-group: transparent}.sky-theme-modern.sky-theme-mode-dark sky-search .sky-input-box .sky-input-group-btn .sky-btn.sky-search-btn .sky-icon.sky-i-close{color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark sky-search .sky-input-group-icon .sky-icon{font-size:17.333px;color:#fbfcfe}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.λ10, selector: "sky-input-box", inputs: ["hasErrors", "disabled", "labelText", "characterLimit", "stacked", "helpPopoverTitle", "helpPopoverContent", "helpKey", "hintText", "errorsScreenReaderOnly"] }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.λ1, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { kind: "directive", type: i7.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }, { kind: "directive", type: i1.λ2, selector: "[skyId]", exportAs: ["skyId"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.SkyLibResourcesPipe, name: "skyLibResources" }], animations: [
|
|
244
244
|
trigger('inputState', [
|
|
245
245
|
state(INPUT_HIDDEN_STATE, style({
|
|
246
246
|
opacity: 0,
|
|
@@ -3,7 +3,7 @@ import { NgModule } from '@angular/core';
|
|
|
3
3
|
import { FormsModule } from '@angular/forms';
|
|
4
4
|
import { SkyIdModule } from '@skyux/core';
|
|
5
5
|
import { SkyInputBoxModule } from '@skyux/forms';
|
|
6
|
-
import { SkyIconModule } from '@skyux/
|
|
6
|
+
import { SkyIconModule } from '@skyux/icon';
|
|
7
7
|
import { SkyThemeModule } from '@skyux/theme';
|
|
8
8
|
import { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';
|
|
9
9
|
import { SkySearchComponent } from './search.component';
|
|
@@ -41,4 +41,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
41
41
|
exports: [SkySearchComponent],
|
|
42
42
|
}]
|
|
43
43
|
}] });
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9zZWFyY2gubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFakYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBZXhELE1BQU0sT0FBTyxlQUFlOzhHQUFmLGVBQWU7K0dBQWYsZUFBZSxpQkFaWCxrQkFBa0IsYUFFL0IsWUFBWTtZQUNaLGlCQUFpQjtZQUNqQix3QkFBd0I7WUFDeEIsV0FBVztZQUNYLGFBQWE7WUFDYixjQUFjO1lBQ2QsV0FBVyxhQUVILGtCQUFrQjsrR0FFakIsZUFBZSxZQVZ4QixZQUFZO1lBQ1osaUJBQWlCO1lBQ2pCLHdCQUF3QjtZQUN4QixXQUFXO1lBQ1gsYUFBYTtZQUNiLGNBQWM7WUFDZCxXQUFXOzsyRkFJRixlQUFlO2tCQWIzQixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGtCQUFrQixDQUFDO29CQUNsQyxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixpQkFBaUI7d0JBQ2pCLHdCQUF3Qjt3QkFDeEIsV0FBVzt3QkFDWCxhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsV0FBVztxQkFDWjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztpQkFDOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2t5SWRNb2R1bGUgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBTa3lJbnB1dEJveE1vZHVsZSB9IGZyb20gJ0Bza3l1eC9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lJY29uTW9kdWxlIH0gZnJvbSAnQHNreXV4L2ljb24nO1xuaW1wb3J0IHsgU2t5VGhlbWVNb2R1bGUgfSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQgeyBTa3lMb29rdXBSZXNvdXJjZXNNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2t5LWxvb2t1cC1yZXNvdXJjZXMubW9kdWxlJztcblxuaW1wb3J0IHsgU2t5U2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnLi9zZWFyY2guY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbU2t5U2VhcmNoQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBTa3lJbnB1dEJveE1vZHVsZSxcbiAgICBTa3lMb29rdXBSZXNvdXJjZXNNb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgU2t5SWNvbk1vZHVsZSxcbiAgICBTa3lUaGVtZU1vZHVsZSxcbiAgICBTa3lJZE1vZHVsZSxcbiAgXSxcbiAgZXhwb3J0czogW1NreVNlYXJjaENvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreVNlYXJjaE1vZHVsZSB7fVxuIl19
|