@skyux/lookup 7.8.0 → 8.0.0-alpha.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 +5178 -4272
- package/esm2020/lib/modules/autocomplete/autocomplete-adapter.service.mjs +4 -4
- package/esm2020/lib/modules/autocomplete/autocomplete-input.directive.mjs +4 -4
- package/esm2020/lib/modules/autocomplete/autocomplete-search-async-disabled.pipe.mjs +4 -4
- package/esm2020/lib/modules/autocomplete/autocomplete.component.mjs +5 -5
- package/esm2020/lib/modules/autocomplete/autocomplete.module.mjs +5 -5
- package/esm2020/lib/modules/country-field/country-field.component.mjs +4 -4
- package/esm2020/lib/modules/country-field/country-field.module.mjs +5 -5
- package/esm2020/lib/modules/lookup/lookup-adapter.service.mjs +4 -4
- package/esm2020/lib/modules/lookup/lookup-autocomplete-adapter.mjs +4 -4
- package/esm2020/lib/modules/lookup/lookup-show-more-modal.component.mjs +4 -4
- package/esm2020/lib/modules/lookup/lookup.component.mjs +14 -13
- package/esm2020/lib/modules/lookup/lookup.module.mjs +5 -5
- package/esm2020/lib/modules/search/search-adapter.service.mjs +4 -4
- package/esm2020/lib/modules/search/search.component.mjs +4 -4
- package/esm2020/lib/modules/search/search.module.mjs +5 -5
- package/esm2020/lib/modules/selection-modal/selection-modal-item-selected.pipe.mjs +4 -4
- package/esm2020/lib/modules/selection-modal/selection-modal.component.mjs +5 -5
- package/esm2020/lib/modules/selection-modal/selection-modal.module.mjs +5 -5
- package/esm2020/lib/modules/selection-modal/selection-modal.service.mjs +4 -5
- package/esm2020/lib/modules/selection-modal/types/selection-modal-open-args.mjs +1 -1
- package/esm2020/lib/modules/shared/sky-lookup-resources.module.mjs +5 -5
- package/esm2020/testing/country-field/country-field-testing.module.mjs +5 -5
- package/esm2020/testing/search/search-testing.module.mjs +5 -5
- package/fesm2015/skyux-lookup-testing.mjs +8 -8
- package/fesm2015/skyux-lookup-testing.mjs.map +1 -1
- package/fesm2015/skyux-lookup.mjs +78 -78
- package/fesm2015/skyux-lookup.mjs.map +1 -1
- package/fesm2020/skyux-lookup-testing.mjs +8 -8
- package/fesm2020/skyux-lookup-testing.mjs.map +1 -1
- package/fesm2020/skyux-lookup.mjs +78 -78
- package/fesm2020/skyux-lookup.mjs.map +1 -1
- package/lib/modules/autocomplete/autocomplete-input.directive.d.ts +1 -1
- package/lib/modules/autocomplete/autocomplete.component.d.ts +1 -1
- package/lib/modules/country-field/country-field.component.d.ts +1 -1
- package/lib/modules/lookup/lookup-autocomplete-adapter.d.ts +1 -1
- package/lib/modules/lookup/lookup-show-more-modal.component.d.ts +1 -1
- package/lib/modules/lookup/lookup.component.d.ts +1 -1
- package/lib/modules/search/search.component.d.ts +1 -1
- package/lib/modules/selection-modal/selection-modal.component.d.ts +1 -1
- package/lib/modules/selection-modal/types/selection-modal-open-args.d.ts +0 -5
- package/package.json +16 -16
|
@@ -251,10 +251,10 @@ export class SkyLookupShowMoreModalComponent {
|
|
|
251
251
|
}
|
|
252
252
|
}
|
|
253
253
|
_SkyLookupShowMoreModalComponent_changeDetector = new WeakMap(), _SkyLookupShowMoreModalComponent_itemIndex = new WeakMap(), _SkyLookupShowMoreModalComponent_ngUnsubscribe = new WeakMap();
|
|
254
|
-
SkyLookupShowMoreModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
255
|
-
SkyLookupShowMoreModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
256
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
254
|
+
SkyLookupShowMoreModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyLookupShowMoreModalComponent, deps: [{ token: i1.SkyModalInstance }, { token: i2.SkyLookupShowMoreNativePickerContext }, { token: i0.ChangeDetectorRef }, { token: i3.SkyIdService }], target: i0.ɵɵFactoryTarget.Component });
|
|
255
|
+
SkyLookupShowMoreModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: SkyLookupShowMoreModalComponent, selector: "skyux-lookup-show-more-modal", ngImport: i0, template: "<sky-modal\n class=\"sky-lookup-show-more-modal\"\n [attr.id]=\"id\"\n [ngClass]=\"'sky-lookup-show-more-modal-' + context.selectMode\"\n>\n <sky-modal-header>\n <ng-container *ngIf=\"context.userConfig?.title; else defaultTitle\">\n {{ context.userConfig.title }}\n </ng-container>\n </sky-modal-header>\n <sky-modal-content\n [skyViewkeeper]=\"['.sky-lookup-show-more-toolbar-wrapper']\"\n >\n <div class=\"sky-lookup-show-more-toolbar-wrapper\">\n <sky-toolbar class=\"sky-lookup-show-more-modal-toolbar\">\n <sky-toolbar-section>\n <sky-toolbar-item>\n <sky-search\n [debounceTime]=\"250\"\n [searchText]=\"searchText\"\n (searchApply)=\"searchApplied($event)\"\n >\n </sky-search>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <button\n *ngIf=\"context.showAddButton\"\n type=\"button\"\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-add\"\n (click)=\"addButtonClicked()\"\n >\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"add\"\n iconType=\"skyux\"\n ></sky-icon>\n <sky-icon *skyThemeIf=\"'default'\" icon=\"plus-circle\"></sky-icon>\n {{ 'skyux_lookup_show_more_add' | skyLibResources }}\n </button>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n <sky-toolbar\n *ngIf=\"context.selectMode === 'multiple'\"\n class=\"sky-lookup-show-more-modal-multiselect-toolbar\"\n >\n <sky-toolbar-section>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-select-all-btn\"\n type=\"button\"\n (click)=\"selectAll()\"\n >\n {{\n 'skyux_lookup_show_more_select_all_button_title'\n | skyLibResources\n }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-clear-all-btn\"\n type=\"button\"\n (click)=\"clearAll()\"\n >\n {{\n 'skyux_lookup_show_more_clear_all_button_title'\n | skyLibResources\n }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <sky-checkbox\n [(checked)]=\"onlyShowSelected\"\n (change)=\"updateDataState()\"\n >\n <sky-checkbox-label>\n {{\n 'skyux_lookup_show_more_show_selected_option_title'\n | skyLibResources\n }}\n </sky-checkbox-label>\n </sky-checkbox>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n </div>\n <div\n *ngIf=\"displayedItems.length === 0\"\n class=\"sky-font-deemphasized sky-lookup-show-more-no-results\"\n >\n {{ 'skyux_lookup_show_more_no_results' | skyLibResources }}\n </div>\n <sky-repeater class=\"sky-lookup-show-more-repeater\" expandMode=\"none\">\n <sky-repeater-item\n *ngFor=\"let item of displayedItems\"\n [selectable]=\"context.selectMode === 'multiple'\"\n [(isSelected)]=\"item.selected\"\n (click)=\"itemClick(item)\"\n (keyup.enter)=\"itemClick(item)\"\n (isSelectedChange)=\"onItemSelect($event, item)\"\n >\n <sky-repeater-item-content>\n <ng-container\n *ngTemplateOutlet=\"\n repeaterItemTemplate ?? defaultItemTemplate;\n context: { item: item.value }\n \"\n >\n </ng-container>\n </sky-repeater-item-content>\n </sky-repeater-item>\n </sky-repeater>\n <sky-infinite-scroll [enabled]=\"itemsHaveMore\" (scrollEnd)=\"addItems()\">\n </sky-infinite-scroll>\n </sky-modal-content>\n <sky-modal-footer>\n <button\n class=\"sky-btn sky-btn-primary sky-margin-inline-compact sky-lookup-show-more-modal-save\"\n type=\"button\"\n (click)=\"modalInstance.save(selectedItems)\"\n >\n {{ 'skyux_lookup_show_more_select' | skyLibResources }}\n </button>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-close\"\n type=\"button\"\n (click)=\"modalInstance.close()\"\n >\n {{ 'skyux_lookup_show_more_cancel' | skyLibResources }}\n </button>\n </sky-modal-footer>\n</sky-modal>\n\n<ng-template let-item=\"item\" #defaultItemTemplate>\n {{ item[context.descriptorProperty] }}\n</ng-template>\n\n<ng-template #defaultTitle>\n <ng-container *ngIf=\"context.selectMode === 'single'\">\n {{ 'skyux_lookup_show_more_modal_title_single' | skyLibResources }}\n </ng-container>\n <ng-container *ngIf=\"context.selectMode === 'multiple'\">\n {{ 'skyux_lookup_show_more_modal_title_multiple' | skyLibResources }}\n </ng-container>\n</ng-template>\n", styles: [".sky-lookup-show-more-no-results{padding:20px 0}:host-context(.sky-theme-modern) .sky-lookup-show-more-no-results{padding:30px 0}.sky-theme-modern .sky-lookup-show-more-no-results{padding:30px 0}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.λ3, selector: "sky-checkbox", inputs: ["label", "labelledBy", "id", "disabled", "tabindex", "name", "icon", "checkboxType", "checked", "indeterminate", "required"], outputs: ["change", "checkedChange", "disabledChange", "indeterminateChange"] }, { kind: "component", type: i5.λ4, selector: "sky-checkbox-label" }, { kind: "component", type: i6.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { kind: "component", type: i7.λ6, selector: "sky-infinite-scroll", inputs: ["enabled", "loading"], outputs: ["scrollEnd"] }, { kind: "component", type: i1.λ5, selector: "sky-modal", inputs: ["ariaRole", "tiledBody", "ariaDescribedBy", "ariaLabelledBy"] }, { kind: "component", type: i1.λ2, selector: "sky-modal-content" }, { kind: "component", type: i1.λ3, selector: "sky-modal-footer" }, { kind: "component", type: i1.λ4, selector: "sky-modal-header" }, { kind: "component", type: i7.λ11, selector: "sky-repeater", inputs: ["activeIndex", "ariaLabel", "reorderable", "expandMode"], outputs: ["activeIndexChange", "orderChange"] }, { kind: "component", type: i7.λ10, selector: "sky-repeater-item", inputs: ["disabled", "itemName", "inlineFormConfig", "inlineFormTemplate", "isExpanded", "isSelected", "reorderable", "selectable", "showInlineForm", "tag"], outputs: ["collapse", "expand", "inlineFormClose", "isSelectedChange"] }, { kind: "component", type: i7.λ8, selector: "sky-repeater-item-content" }, { kind: "component", type: i8.SkySearchComponent, selector: "sky-search", inputs: ["searchText", "expandMode", "debounceTime", "disabled", "placeholderText"], outputs: ["searchApply", "searchChange", "searchClear"] }, { kind: "directive", type: i9.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }, { kind: "component", type: i10.λ37, selector: "sky-toolbar" }, { kind: "component", type: i10.λ39, selector: "sky-toolbar-item" }, { kind: "component", type: i10.λ38, selector: "sky-toolbar-section" }, { kind: "component", type: i10.λ40, selector: "sky-toolbar-view-actions" }, { kind: "directive", type: i3.λ3, selector: "[skyViewkeeper]", inputs: ["skyViewkeeper"] }, { kind: "pipe", type: i11.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
256
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyLookupShowMoreModalComponent, decorators: [{
|
|
257
257
|
type: Component,
|
|
258
258
|
args: [{ selector: 'skyux-lookup-show-more-modal', changeDetection: ChangeDetectionStrategy.OnPush, template: "<sky-modal\n class=\"sky-lookup-show-more-modal\"\n [attr.id]=\"id\"\n [ngClass]=\"'sky-lookup-show-more-modal-' + context.selectMode\"\n>\n <sky-modal-header>\n <ng-container *ngIf=\"context.userConfig?.title; else defaultTitle\">\n {{ context.userConfig.title }}\n </ng-container>\n </sky-modal-header>\n <sky-modal-content\n [skyViewkeeper]=\"['.sky-lookup-show-more-toolbar-wrapper']\"\n >\n <div class=\"sky-lookup-show-more-toolbar-wrapper\">\n <sky-toolbar class=\"sky-lookup-show-more-modal-toolbar\">\n <sky-toolbar-section>\n <sky-toolbar-item>\n <sky-search\n [debounceTime]=\"250\"\n [searchText]=\"searchText\"\n (searchApply)=\"searchApplied($event)\"\n >\n </sky-search>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <button\n *ngIf=\"context.showAddButton\"\n type=\"button\"\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-add\"\n (click)=\"addButtonClicked()\"\n >\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"add\"\n iconType=\"skyux\"\n ></sky-icon>\n <sky-icon *skyThemeIf=\"'default'\" icon=\"plus-circle\"></sky-icon>\n {{ 'skyux_lookup_show_more_add' | skyLibResources }}\n </button>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n <sky-toolbar\n *ngIf=\"context.selectMode === 'multiple'\"\n class=\"sky-lookup-show-more-modal-multiselect-toolbar\"\n >\n <sky-toolbar-section>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-select-all-btn\"\n type=\"button\"\n (click)=\"selectAll()\"\n >\n {{\n 'skyux_lookup_show_more_select_all_button_title'\n | skyLibResources\n }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-clear-all-btn\"\n type=\"button\"\n (click)=\"clearAll()\"\n >\n {{\n 'skyux_lookup_show_more_clear_all_button_title'\n | skyLibResources\n }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <sky-checkbox\n [(checked)]=\"onlyShowSelected\"\n (change)=\"updateDataState()\"\n >\n <sky-checkbox-label>\n {{\n 'skyux_lookup_show_more_show_selected_option_title'\n | skyLibResources\n }}\n </sky-checkbox-label>\n </sky-checkbox>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n </div>\n <div\n *ngIf=\"displayedItems.length === 0\"\n class=\"sky-font-deemphasized sky-lookup-show-more-no-results\"\n >\n {{ 'skyux_lookup_show_more_no_results' | skyLibResources }}\n </div>\n <sky-repeater class=\"sky-lookup-show-more-repeater\" expandMode=\"none\">\n <sky-repeater-item\n *ngFor=\"let item of displayedItems\"\n [selectable]=\"context.selectMode === 'multiple'\"\n [(isSelected)]=\"item.selected\"\n (click)=\"itemClick(item)\"\n (keyup.enter)=\"itemClick(item)\"\n (isSelectedChange)=\"onItemSelect($event, item)\"\n >\n <sky-repeater-item-content>\n <ng-container\n *ngTemplateOutlet=\"\n repeaterItemTemplate ?? defaultItemTemplate;\n context: { item: item.value }\n \"\n >\n </ng-container>\n </sky-repeater-item-content>\n </sky-repeater-item>\n </sky-repeater>\n <sky-infinite-scroll [enabled]=\"itemsHaveMore\" (scrollEnd)=\"addItems()\">\n </sky-infinite-scroll>\n </sky-modal-content>\n <sky-modal-footer>\n <button\n class=\"sky-btn sky-btn-primary sky-margin-inline-compact sky-lookup-show-more-modal-save\"\n type=\"button\"\n (click)=\"modalInstance.save(selectedItems)\"\n >\n {{ 'skyux_lookup_show_more_select' | skyLibResources }}\n </button>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-close\"\n type=\"button\"\n (click)=\"modalInstance.close()\"\n >\n {{ 'skyux_lookup_show_more_cancel' | skyLibResources }}\n </button>\n </sky-modal-footer>\n</sky-modal>\n\n<ng-template let-item=\"item\" #defaultItemTemplate>\n {{ item[context.descriptorProperty] }}\n</ng-template>\n\n<ng-template #defaultTitle>\n <ng-container *ngIf=\"context.selectMode === 'single'\">\n {{ 'skyux_lookup_show_more_modal_title_single' | skyLibResources }}\n </ng-container>\n <ng-container *ngIf=\"context.selectMode === 'multiple'\">\n {{ 'skyux_lookup_show_more_modal_title_multiple' | skyLibResources }}\n </ng-container>\n</ng-template>\n", styles: [".sky-lookup-show-more-no-results{padding:20px 0}:host-context(.sky-theme-modern) .sky-lookup-show-more-no-results{padding:30px 0}.sky-theme-modern .sky-lookup-show-more-no-results{padding:30px 0}\n"] }]
|
|
259
259
|
}], ctorParameters: function () { return [{ type: i1.SkyModalInstance }, { type: i2.SkyLookupShowMoreNativePickerContext }, { type: i0.ChangeDetectorRef }, { type: i3.SkyIdService }]; } });
|
|
260
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXNob3ctbW9yZS1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbG9va3VwL3NyYy9saWIvbW9kdWxlcy9sb29rdXAvbG9va3VwLXNob3ctbW9yZS1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbG9va3VwL3NyYy9saWIvbW9kdWxlcy9sb29rdXAvbG9va3VwLXNob3ctbW9yZS1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFJL0I7OztHQUdHO0FBV0gsTUFBTSxPQUFPLCtCQUErQjtJQW1EMUMsWUFDUyxhQUErQixFQUMvQixPQUE2QyxFQUNwRCxjQUFpQyxFQUNqQyxLQUFtQjtRQUhaLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUMvQixZQUFPLEdBQVAsT0FBTyxDQUFzQztRQWxEdEQ7OztXQUdHO1FBQ0ksYUFBUSxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBT3hDLFVBQUssR0FBVSxFQUFFLENBQUM7UUFFbEIsc0JBQWlCLEdBQUc7WUFDekIsV0FBVyxFQUFFO2dCQUNYO29CQUNFLEVBQUUsRUFBRSxJQUFJO29CQUNSLEtBQUssRUFBRSxzQkFBc0I7b0JBQzdCLFVBQVUsRUFBRSxLQUFLO29CQUNqQixZQUFZLEVBQUUsTUFBTTtpQkFDckI7Z0JBQ0Q7b0JBQ0UsRUFBRSxFQUFFLElBQUk7b0JBQ1IsS0FBSyxFQUFFLHNCQUFzQjtvQkFDN0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFlBQVksRUFBRSxNQUFNO2lCQUNyQjthQUNGO1NBQ0Ys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QUVILElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVoQix1QkFBQSxJQUFJLHVEQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RDLENBQUM7Ozs2SEE1VFUsK0JBQStCO2lIQUEvQiwrQkFBK0Isb0VDN0I1Qyx5bEtBa0pBOzRGRHJIYSwrQkFBK0I7a0JBVjNDLFNBQVM7K0JBS0UsOEJBQThCLG1CQUd2Qix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIE9uRGVzdHJveSxcbiAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5SWRTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHsgU2t5TW9kYWxJbnN0YW5jZSB9IGZyb20gJ0Bza3l1eC9tb2RhbHMnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNreUxvb2t1cFNob3dNb3JlTmF0aXZlUGlja2VyQ29udGV4dCB9IGZyb20gJy4vdHlwZXMvbG9va3VwLXNob3ctbW9yZS1uYXRpdmUtcGlja2VyLWNvbnRleHQnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICogSW50ZXJuYWwgY29tcG9uZW50IHRvIGltcGxlbWVudCB0aGUgbmF0aXZlIHBpY2tlci5cbiAqL1xuQENvbXBvbmVudCh7XG4gIC8vIFN1cHByZXNzIHRoaXMgZXJyb3IgcmF0aGVyIHRoYW4gZml4IHRoZSBzZWxlY3RvciBzaW5jZSBjb25zdW1lcnMgd2l0aCB1bml0IHRlc3RzXG4gIC8vIG1heSBiZSBsb29raW5nIGZvciBhbiBlbGVtZW50IHdpdGggdGhpcyBzZWxlY3Rvci4gV2UgY2FuIGNoYW5nZSBpdCBpbiB0aGUgbmV4dCBtYWpvclxuICAvLyB2ZXJzaW9uIG9mIFNLWSBVWC5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdza3l1eC1sb29rdXAtc2hvdy1tb3JlLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xvb2t1cC1zaG93LW1vcmUtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9sb29rdXAtc2hvdy1tb3JlLW1vZGFsLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lMb29rdXBTaG93TW9yZU1vZGFsQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95XG57XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogRmlyZXMgd2hlbiB1c2VycyBzZWxlY3QgdGhlIGJ1dHRvbiB0byBhZGQgbmV3IG9wdGlvbnMgdG8gdGhlIGxpc3QuXG4gICAqL1xuICBwdWJsaWMgYWRkQ2xpY2s6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIGFzc29jaWF0ZSB0aGlzIG1vZGFsIHdpdGggaXRzIG93bmluZyBsb29rdXAgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGlkOiBzdHJpbmc7XG5cbiAgcHVibGljIGl0ZW1zOiBhbnlbXSA9IFtdO1xuXG4gIHB1YmxpYyBkYXRhTWFuYWdlckNvbmZpZyA9IHtcbiAgICBzb3J0T3B0aW9uczogW1xuICAgICAge1xuICAgICAgICBpZDogJ2F6JyxcbiAgICAgICAgbGFiZWw6ICdBbHBoYWJldGljYWwgKEEgLSBaKScsXG4gICAgICAgIGRlc2NlbmRpbmc6IGZhbHNlLFxuICAgICAgICBwcm9wZXJ0eU5hbWU6ICduYW1lJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiAnemEnLFxuICAgICAgICBsYWJlbDogJ0FscGhhYmV0aWNhbCAoWiAtIEEpJyxcbiAgICAgICAgZGVzY2VuZGluZzogdHJ1ZSxcbiAgICAgICAgcHJvcGVydHlOYW1lOiAnbmFtZScsXG4gICAgICB9LFxuICAgIF0sXG4gIH07XG5cbiAgcHVibGljIGRpc3BsYXllZEl0ZW1zOiBhbnlbXSA9IFtdO1xuXG4gIHB1YmxpYyBpdGVtc0hhdmVNb3JlID0gZmFsc2U7XG5cbiAgcHVibGljIG9ubHlTaG93U2VsZWN0ZWQgPSBmYWxzZTtcblxuICBwdWJsaWMgcmVwZWF0ZXJJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgbnVsbCA9IG51bGw7XG5cbiAgcHVibGljIHNlYXJjaFRleHQgPSAnJztcblxuICBwdWJsaWMgc2VsZWN0ZWRJdGVtczogeyBpbmRleDogbnVtYmVyOyBpdGVtRGF0YTogYW55IH1bXSA9IFtdO1xuXG4gICNjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG5cbiAgI2l0ZW1JbmRleCA9IDA7XG5cbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBtb2RhbEluc3RhbmNlOiBTa3lNb2RhbEluc3RhbmNlLFxuICAgIHB1YmxpYyBjb250ZXh0OiBTa3lMb29rdXBTaG93TW9yZU5hdGl2ZVBpY2tlckNvbnRleHQsXG4gICAgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIGlkU3ZjOiBTa3lJZFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IgPSBjaGFuZ2VEZXRlY3RvcjtcblxuICAgIHRoaXMuaWQgPSBpZFN2Yy5nZW5lcmF0ZUlkKCk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmVwZWF0ZXJJdGVtVGVtcGxhdGUgPSB0aGlzLmNvbnRleHQudXNlckNvbmZpZy5pdGVtVGVtcGxhdGUgfHwgbnVsbDtcbiAgICB0aGlzLnNlYXJjaFRleHQgPSB0aGlzLmNvbnRleHQuaW5pdGlhbFNlYXJjaDtcbiAgICB0aGlzLmFkZEl0ZW1zKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIGFkZEJ1dHRvbkNsaWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRDbGljay5uZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgYWRkSXRlbXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLml0ZW1zIHx8IHRoaXMuaXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zOiBhbnlbXSA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5zbGljZSgpO1xuXG4gICAgICB0aGlzLml0ZW1zID0gdGhpcy5jb250ZXh0Lml0ZW1zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHZhbHVlOiBpdGVtLFxuICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLml0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgY29uc3QgaXNJbml0aWFsVmFsdWU6IGJvb2xlYW4gPVxuICAgICAgICAgIHRoaXMuY29udGV4dC5pbml0aWFsVmFsdWUgPT09IGl0ZW0udmFsdWU7XG5cbiAgICAgICAgY29uc3QgaW5pdGlhbElzQXJyYXk6IGJvb2xlYW4gPSBBcnJheS5pc0FycmF5KFxuICAgICAgICAgIHRoaXMuY29udGV4dC5pbml0aWFsVmFsdWVcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgaW5pdGlhbFZhbHVlQ29udGFpbnNJdGVtOiBib29sZWFuID1cbiAgICAgICAgICB0aGlzLmNvbnRleHQuaW5pdGlhbFZhbHVlLmZpbmRJbmRleChcbiAgICAgICAgICAgIChpbml0aWFsSXRlbTogYW55KSA9PiBpbml0aWFsSXRlbSA9PT0gaXRlbS52YWx1ZVxuICAgICAgICAgICkgPj0gMDtcblxuICAgICAgICBpZiAoaXNJbml0aWFsVmFsdWUgfHwgKGluaXRpYWxJc0FycmF5ICYmIGluaXRpYWxWYWx1ZUNvbnRhaW5zSXRlbSkpIHtcbiAgICAgICAgICBpdGVtLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLml0ZW1zLmluZGV4T2YoaXRlbSk7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcy5maW5kSW5kZXgoXG4gICAgICAgICAgICAgIChzZWxlY3RlZEl0ZW0pID0+IHNlbGVjdGVkSXRlbS5pbmRleCA9PT0gaXRlbUluZGV4XG4gICAgICAgICAgICApIDwgMFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcy5wdXNoKHsgaW5kZXg6IGl0ZW1JbmRleCwgaXRlbURhdGE6IGl0ZW0udmFsdWUgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRJdGVtcztcbiAgICAgIHRoaXMudXBkYXRlRGF0YVN0YXRlKCk7XG4gICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvLyBpZiBvbmx5U2hvd1NlbGVjdGVkIGlzIGNoZWNrZWQsIHRoZW4gb25seSBpdGVyYXRlIHRocm91Z2ggdGhlIGluaXRpYWwgc2VsZWN0aW9uXG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLm9ubHlTaG93U2VsZWN0ZWRcbiAgICAgID8gdGhpcy5pdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uc2VsZWN0ZWQpXG4gICAgICA6IHRoaXMuaXRlbXM7XG5cbiAgICB0aGlzLiNpdGVtSW5kZXggPSB0aGlzLiNpdGVtSW5kZXggKyAxMDtcbiAgICB0aGlzLnNlYXJjaEl0ZW1zKGl0ZW1zKS50aGVuKChzZWFyY2hlZEl0ZW1zKSA9PiB7XG4gICAgICB0aGlzLmRpc3BsYXllZEl0ZW1zID0gc2VhcmNoZWRJdGVtcy5zbGljZSgwLCB0aGlzLiNpdGVtSW5kZXgpO1xuXG4gICAgICBpZiAodGhpcy4jaXRlbUluZGV4ID4gc2VhcmNoZWRJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5pdGVtc0hhdmVNb3JlID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLml0ZW1zSGF2ZU1vcmUgPSB0cnVlO1xuICAgICAgfVxuICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJBbGwoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNwbGF5ZWRJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBpZiAoaXRlbS5zZWxlY3RlZCkge1xuICAgICAgICBpdGVtLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XG4gICAgdGhpcy51cGRhdGVEYXRhU3RhdGUoKTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBpdGVtQ2xpY2soc2VsZWN0ZWRJdGVtOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb250ZXh0LnNlbGVjdE1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICB0aGlzLm9uSXRlbVNlbGVjdCghc2VsZWN0ZWRJdGVtLnNlbGVjdGVkLCBzZWxlY3RlZEl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkl0ZW1TZWxlY3QobmV3U2VsZWN0U3RhdGU6IGJvb2xlYW4sIGl0ZW1Ub1NlbGVjdDogYW55KTogdm9pZCB7XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLml0ZW1zO1xuXG4gICAgaWYgKHRoaXMuY29udGV4dC5zZWxlY3RNb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgLyogU2FuaXR5IGNoZWNrIC0gc2luZ2xlIHNlbGVjdCBtb2RlIHNob3VsZCBvbmx5IGFsb3cgZm9yIGEgYHRydWVgIHNlbGVjdCBzdGF0ZSAqL1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChuZXdTZWxlY3RTdGF0ZSkge1xuICAgICAgICBpdGVtVG9TZWxlY3Quc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgaWYgKGl0ZW0udmFsdWUgIT09IGl0ZW1Ub1NlbGVjdC52YWx1ZSkge1xuICAgICAgICAgICAgaXRlbS5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZGlzcGxheWVkSXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgIGlmIChpdGVtLnZhbHVlICE9PSBpdGVtVG9TZWxlY3QudmFsdWUpIHtcbiAgICAgICAgICAgIGl0ZW0uc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBpdGVtSW5kZXggPSBpdGVtcy5maW5kSW5kZXgoXG4gICAgICAgICAgKGl0ZW0pID0+IGl0ZW0udmFsdWUgPT09IGl0ZW1Ub1NlbGVjdC52YWx1ZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXG4gICAgICAgICAgeyBpbmRleDogaXRlbUluZGV4LCBpdGVtRGF0YTogaXRlbXNbaXRlbUluZGV4XS52YWx1ZSB9LFxuICAgICAgICBdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zOiB7IGluZGV4OiBudW1iZXI7IGl0ZW1EYXRhOiBhbnkgfVtdID1cbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zO1xuICAgICAgY29uc3QgYWxsSXRlbXNJbmRleCA9IGl0ZW1zLmZpbmRJbmRleChcbiAgICAgICAgKGl0ZW0pID0+IGl0ZW0udmFsdWUgPT09IGl0ZW1Ub1NlbGVjdC52YWx1ZVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbXNJbmRleCA9IHNlbGVjdGVkSXRlbXMuZmluZEluZGV4KFxuICAgICAgICAoc2VsZWN0ZWRJdGVtKSA9PiBzZWxlY3RlZEl0ZW0uaW5kZXggPT09IGFsbEl0ZW1zSW5kZXhcbiAgICAgICk7XG5cbiAgICAgIGlmIChuZXdTZWxlY3RTdGF0ZSAmJiBzZWxlY3RlZEl0ZW1zSW5kZXggPT09IC0xKSB7XG4gICAgICAgIHNlbGVjdGVkSXRlbXMucHVzaCh7XG4gICAgICAgICAgaW5kZXg6IGFsbEl0ZW1zSW5kZXgsXG4gICAgICAgICAgaXRlbURhdGE6IGl0ZW1zW2FsbEl0ZW1zSW5kZXhdLnZhbHVlLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoIW5ld1NlbGVjdFN0YXRlICYmIHNlbGVjdGVkSXRlbXNJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgc2VsZWN0ZWRJdGVtcy5zcGxpY2Uoc2VsZWN0ZWRJdGVtc0luZGV4LCAxKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRJdGVtcztcbiAgICB9XG4gICAgdGhpcy51cGRhdGVEYXRhU3RhdGUoKTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWFyY2hBcHBsaWVkKHNlYXJjaFRleHQ6IHN0cmluZykge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuc2VhcmNoVGV4dCAhPT0gc2VhcmNoVGV4dCkge1xuICAgICAgdGhpcy4jaXRlbUluZGV4ID0gMTA7XG4gICAgfVxuICAgIHRoaXMuc2VhcmNoVGV4dCA9IHNlYXJjaFRleHQ7XG4gICAgdGhpcy51cGRhdGVEYXRhU3RhdGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWFyY2hJdGVtcyhpdGVtczogYW55W10pOiBQcm9taXNlPGFueVtdPiB7XG4gICAgY29uc3Qgc2VhcmNoVGV4dCA9IHRoaXMuc2VhcmNoVGV4dDtcblxuICAgIGlmIChzZWFyY2hUZXh0KSB7XG4gICAgICBjb25zdCByZXN1bHRWYWx1ZXMgPSB0aGlzLmNvbnRleHQuc2VhcmNoKFxuICAgICAgICBzZWFyY2hUZXh0LFxuICAgICAgICBpdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICByZXR1cm4gaXRlbS52YWx1ZTtcbiAgICAgICAgfSksXG4gICAgICAgIHsgY29udGV4dDogJ21vZGFsJyB9XG4gICAgICApO1xuXG4gICAgICBpZiAocmVzdWx0VmFsdWVzIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gaXRlbXMuZmlsdGVyKFxuICAgICAgICAgIChpdGVtKSA9PiByZXN1bHRWYWx1ZXMuaW5kZXhPZihpdGVtLnZhbHVlKSA+PSAwXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiByZXN1bHRWYWx1ZXMudGhlbigodmFsdWVzKSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gaXRlbXMuZmlsdGVyKFxuICAgICAgICAgICAgKGl0ZW0pID0+IHZhbHVlcy5pbmRleE9mKGl0ZW0udmFsdWUpID49IDBcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoaXRlbXMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RBbGwoKTogdm9pZCB7XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLml0ZW1zO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtczogeyBpbmRleDogbnVtYmVyOyBpdGVtRGF0YTogYW55IH1bXSA9XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXM7XG5cbiAgICB0aGlzLmRpc3BsYXllZEl0ZW1zLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgaWYgKCFpdGVtLnNlbGVjdGVkKSB7XG4gICAgICAgIGl0ZW0uc2VsZWN0ZWQgPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IGluZGV4ID0gaXRlbXMuaW5kZXhPZihpdGVtKTtcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcy5maW5kSW5kZXgoXG4gICAgICAgICAgICAoc2VsZWN0ZWRJdGVtKSA9PiBzZWxlY3RlZEl0ZW0uaW5kZXggPT09IGluZGV4XG4gICAgICAgICAgKSA8IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcy5wdXNoKHtcbiAgICAgICAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgICAgICAgIGl0ZW1EYXRhOiBpdGVtc1tpbmRleF0udmFsdWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHNlbGVjdGVkSXRlbXM7XG4gICAgdGhpcy51cGRhdGVEYXRhU3RhdGUoKTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVEYXRhU3RhdGUoKTogdm9pZCB7XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLml0ZW1zO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtczogeyBpbmRleDogbnVtYmVyOyBpdGVtRGF0YTogYW55IH1bXSA9XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXM7XG4gICAgaXRlbXM/LmZvckVhY2goKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgaXRlbS5zZWxlY3RlZCA9XG4gICAgICAgIHNlbGVjdGVkSXRlbXMuZmluZEluZGV4KFxuICAgICAgICAgIChzZWxlY3RlZEl0ZW0pID0+IHNlbGVjdGVkSXRlbS5pbmRleCA9PT0gaW5kZXhcbiAgICAgICAgKSAhPT0gLTE7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNlYXJjaEl0ZW1zKGl0ZW1zKS50aGVuKChzZWFyY2hlZEl0ZW1zKSA9PiB7XG4gICAgICBpZiAodGhpcy5vbmx5U2hvd1NlbGVjdGVkKSB7XG4gICAgICAgIHNlYXJjaGVkSXRlbXMgPSBzZWFyY2hlZEl0ZW1zLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5zZWxlY3RlZCk7XG4gICAgICB9XG4gICAgICB0aGlzLmRpc3BsYXllZEl0ZW1zID0gc2VhcmNoZWRJdGVtcy5zbGljZSgwLCB0aGlzLiNpdGVtSW5kZXgpO1xuXG4gICAgICBpZiAodGhpcy4jaXRlbUluZGV4ID4gc2VhcmNoZWRJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5pdGVtc0hhdmVNb3JlID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLml0ZW1zSGF2ZU1vcmUgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVJdGVtRGF0YShkYXRhOiBhbnlbXSk6IHZvaWQge1xuICAgIHRoaXMuY29udGV4dC5pdGVtcyA9IGRhdGE7XG4gICAgdGhpcy5pdGVtcyA9IFtdO1xuICAgIHRoaXMuI2l0ZW1JbmRleCA9IDEwO1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5mb3JFYWNoKChzZWxlY3RlZEl0ZW0pID0+IHtcbiAgICAgIHRoaXMuY29udGV4dC5pdGVtcy5mb3JFYWNoKChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgaWYgKHNlbGVjdGVkSXRlbS5pdGVtRGF0YSA9PT0gaXRlbSkge1xuICAgICAgICAgIHNlbGVjdGVkSXRlbS5pbmRleCA9IGluZGV4O1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkSXRlbXMoKTtcblxuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG59XG4iLCI8c2t5LW1vZGFsXG4gIGNsYXNzPVwic2t5LWxvb2t1cC1zaG93LW1vcmUtbW9kYWxcIlxuICBbYXR0ci5pZF09XCJpZFwiXG4gIFtuZ0NsYXNzXT1cIidza3ktbG9va3VwLXNob3ctbW9yZS1tb2RhbC0nICsgY29udGV4dC5zZWxlY3RNb2RlXCJcbj5cbiAgPHNreS1tb2RhbC1oZWFkZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRleHQudXNlckNvbmZpZz8udGl0bGU7IGVsc2UgZGVmYXVsdFRpdGxlXCI+XG4gICAgICB7eyBjb250ZXh0LnVzZXJDb25maWcudGl0bGUgfX1cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9za3ktbW9kYWwtaGVhZGVyPlxuICA8c2t5LW1vZGFsLWNvbnRlbnRcbiAgICBbc2t5Vmlld2tlZXBlcl09XCJbJy5za3ktbG9va3VwLXNob3ctbW9yZS10b29sYmFyLXdyYXBwZXInXVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwic2t5LWxvb2t1cC1zaG93LW1vcmUtdG9vbGJhci13cmFwcGVyXCI+XG4gICAgICA8c2t5LXRvb2xiYXIgY2xhc3M9XCJza3ktbG9va3VwLXNob3ctbW9yZS1tb2RhbC10b29sYmFyXCI+XG4gICAgICAgIDxza3ktdG9vbGJhci1zZWN0aW9uPlxuICAgICAgICAgIDxza3ktdG9vbGJhci1pdGVtPlxuICAgICAgICAgICAgPHNreS1zZWFyY2hcbiAgICAgICAgICAgICAgW2RlYm91bmNlVGltZV09XCIyNTBcIlxuICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hUZXh0XCJcbiAgICAgICAgICAgICAgKHNlYXJjaEFwcGx5KT1cInNlYXJjaEFwcGxpZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3NreS1zZWFyY2g+XG4gICAgICAgICAgPC9za3ktdG9vbGJhci1pdGVtPlxuICAgICAgICAgIDxza3ktdG9vbGJhci12aWV3LWFjdGlvbnM+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udGV4dC5zaG93QWRkQnV0dG9uXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWxpbmsgc2t5LWxvb2t1cC1zaG93LW1vcmUtbW9kYWwtYWRkXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZEJ1dHRvbkNsaWNrZWQoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxza3ktaWNvblxuICAgICAgICAgICAgICAgICpza3lUaGVtZUlmPVwiJ21vZGVybidcIlxuICAgICAgICAgICAgICAgIGljb249XCJhZGRcIlxuICAgICAgICAgICAgICAgIGljb25UeXBlPVwic2t5dXhcIlxuICAgICAgICAgICAgICA+PC9za3ktaWNvbj5cbiAgICAgICAgICAgICAgPHNreS1pY29uICpza3lUaGVtZUlmPVwiJ2RlZmF1bHQnXCIgaWNvbj1cInBsdXMtY2lyY2xlXCI+PC9za3ktaWNvbj5cbiAgICAgICAgICAgICAge3sgJ3NreXV4X2xvb2t1cF9zaG93X21vcmVfYWRkJyB8IHNreUxpYlJlc291cmNlcyB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9za3ktdG9vbGJhci12aWV3LWFjdGlvbnM+XG4gICAgICAgIDwvc2t5LXRvb2xiYXItc2VjdGlvbj5cbiAgICAgIDwvc2t5LXRvb2xiYXI+XG4gICAgICA8c2t5LXRvb2xiYXJcbiAgICAgICAgKm5nSWY9XCJjb250ZXh0LnNlbGVjdE1vZGUgPT09ICdtdWx0aXBsZSdcIlxuICAgICAgICBjbGFzcz1cInNreS1sb29rdXAtc2hvdy1tb3JlLW1vZGFsLW11bHRpc2VsZWN0LXRvb2xiYXJcIlxuICAgICAgPlxuICAgICAgICA8c2t5LXRvb2xiYXItc2VjdGlvbj5cbiAgICAgICAgICA8c2t5LXRvb2xiYXItaXRlbT5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tbGluayBza3ktbG9va3VwLXNob3ctbW9yZS1tb2RhbC1zZWxlY3QtYWxsLWJ0blwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0QWxsKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICdza3l1eF9sb29rdXBfc2hvd19tb3JlX3NlbGVjdF9hbGxfYnV0dG9uX3RpdGxlJ1xuICAgICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvc2t5LXRvb2xiYXItaXRlbT5cbiAgICAgICAgICA8c2t5LXRvb2xiYXItaXRlbT5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tbGluayBza3ktbG9va3VwLXNob3ctbW9yZS1tb2RhbC1jbGVhci1hbGwtYnRuXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbGVhckFsbCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAnc2t5dXhfbG9va3VwX3Nob3dfbW9yZV9jbGVhcl9hbGxfYnV0dG9uX3RpdGxlJ1xuICAgICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvc2t5LXRvb2xiYXItaXRlbT5cbiAgICAgICAgICA8c2t5LXRvb2xiYXItdmlldy1hY3Rpb25zPlxuICAgICAgICAgICAgPHNreS1jaGVja2JveFxuICAgICAgICAgICAgICBbKGNoZWNrZWQpXT1cIm9ubHlTaG93U2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZURhdGFTdGF0ZSgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNreS1jaGVja2JveC1sYWJlbD5cbiAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgJ3NreXV4X2xvb2t1cF9zaG93X21vcmVfc2hvd19zZWxlY3RlZF9vcHRpb25fdGl0bGUnXG4gICAgICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPC9za3ktY2hlY2tib3gtbGFiZWw+XG4gICAgICAgICAgICA8L3NreS1jaGVja2JveD5cbiAgICAgICAgICA8L3NreS10b29sYmFyLXZpZXctYWN0aW9ucz5cbiAgICAgICAgPC9za3ktdG9vbGJhci1zZWN0aW9uPlxuICAgICAgPC9za3ktdG9vbGJhcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cImRpc3BsYXllZEl0ZW1zLmxlbmd0aCA9PT0gMFwiXG4gICAgICBjbGFzcz1cInNreS1mb250LWRlZW1waGFzaXplZCBza3ktbG9va3VwLXNob3ctbW9yZS1uby1yZXN1bHRzXCJcbiAgICA+XG4gICAgICB7eyAnc2t5dXhfbG9va3VwX3Nob3dfbW9yZV9ub19yZXN1bHRzJyB8IHNreUxpYlJlc291cmNlcyB9fVxuICAgIDwvZGl2PlxuICAgIDxza3ktcmVwZWF0ZXIgY2xhc3M9XCJza3ktbG9va3VwLXNob3ctbW9yZS1yZXBlYXRlclwiIGV4cGFuZE1vZGU9XCJub25lXCI+XG4gICAgICA8c2t5LXJlcGVhdGVyLWl0ZW1cbiAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGlzcGxheWVkSXRlbXNcIlxuICAgICAgICBbc2VsZWN0YWJsZV09XCJjb250ZXh0LnNlbGVjdE1vZGUgPT09ICdtdWx0aXBsZSdcIlxuICAgICAgICBbKGlzU2VsZWN0ZWQpXT1cIml0ZW0uc2VsZWN0ZWRcIlxuICAgICAgICAoY2xpY2spPVwiaXRlbUNsaWNrKGl0ZW0pXCJcbiAgICAgICAgKGtleXVwLmVudGVyKT1cIml0ZW1DbGljayhpdGVtKVwiXG4gICAgICAgIChpc1NlbGVjdGVkQ2hhbmdlKT1cIm9uSXRlbVNlbGVjdCgkZXZlbnQsIGl0ZW0pXCJcbiAgICAgID5cbiAgICAgICAgPHNreS1yZXBlYXRlci1pdGVtLWNvbnRlbnQ+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgcmVwZWF0ZXJJdGVtVGVtcGxhdGUgPz8gZGVmYXVsdEl0ZW1UZW1wbGF0ZTtcbiAgICAgICAgICAgICAgY29udGV4dDogeyBpdGVtOiBpdGVtLnZhbHVlIH1cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3NreS1yZXBlYXRlci1pdGVtLWNvbnRlbnQ+XG4gICAgICA8L3NreS1yZXBlYXRlci1pdGVtPlxuICAgIDwvc2t5LXJlcGVhdGVyPlxuICAgIDxza3ktaW5maW5pdGUtc2Nyb2xsIFtlbmFibGVkXT1cIml0ZW1zSGF2ZU1vcmVcIiAoc2Nyb2xsRW5kKT1cImFkZEl0ZW1zKClcIj5cbiAgICA8L3NreS1pbmZpbml0ZS1zY3JvbGw+XG4gIDwvc2t5LW1vZGFsLWNvbnRlbnQ+XG4gIDxza3ktbW9kYWwtZm9vdGVyPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLXByaW1hcnkgc2t5LW1hcmdpbi1pbmxpbmUtY29tcGFjdCBza3ktbG9va3VwLXNob3ctbW9yZS1tb2RhbC1zYXZlXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgKGNsaWNrKT1cIm1vZGFsSW5zdGFuY2Uuc2F2ZShzZWxlY3RlZEl0ZW1zKVwiXG4gICAgPlxuICAgICAge3sgJ3NreXV4X2xvb2t1cF9zaG93X21vcmVfc2VsZWN0JyB8IHNreUxpYlJlc291cmNlcyB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWxpbmsgc2t5LWxvb2t1cC1zaG93LW1vcmUtbW9kYWwtY2xvc2VcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAoY2xpY2spPVwibW9kYWxJbnN0YW5jZS5jbG9zZSgpXCJcbiAgICA+XG4gICAgICB7eyAnc2t5dXhfbG9va3VwX3Nob3dfbW9yZV9jYW5jZWwnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gICAgPC9idXR0b24+XG4gIDwvc2t5LW1vZGFsLWZvb3Rlcj5cbjwvc2t5LW1vZGFsPlxuXG48bmctdGVtcGxhdGUgbGV0LWl0ZW09XCJpdGVtXCIgI2RlZmF1bHRJdGVtVGVtcGxhdGU+XG4gIHt7IGl0ZW1bY29udGV4dC5kZXNjcmlwdG9yUHJvcGVydHldIH19XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRUaXRsZT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRleHQuc2VsZWN0TW9kZSA9PT0gJ3NpbmdsZSdcIj5cbiAgICB7eyAnc2t5dXhfbG9va3VwX3Nob3dfbW9yZV9tb2RhbF90aXRsZV9zaW5nbGUnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGV4dC5zZWxlY3RNb2RlID09PSAnbXVsdGlwbGUnXCI+XG4gICAge3sgJ3NreXV4X2xvb2t1cF9zaG93X21vcmVfbW9kYWxfdGl0bGVfbXVsdGlwbGUnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
260
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXNob3ctbW9yZS1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbG9va3VwL3NyYy9saWIvbW9kdWxlcy9sb29rdXAvbG9va3VwLXNob3ctbW9yZS1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbG9va3VwL3NyYy9saWIvbW9kdWxlcy9sb29rdXAvbG9va3VwLXNob3ctbW9yZS1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFJL0I7OztHQUdHO0FBV0gsTUFBTSxPQUFPLCtCQUErQjtJQW1EMUMsWUFDUyxhQUErQixFQUMvQixPQUE2QyxFQUNwRCxjQUFpQyxFQUNqQyxLQUFtQjtRQUhaLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUMvQixZQUFPLEdBQVAsT0FBTyxDQUFzQztRQWxEdEQ7OztXQUdHO1FBQ0ksYUFBUSxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBT3hDLFVBQUssR0FBVSxFQUFFLENBQUM7UUFFbEIsc0JBQWlCLEdBQUc7WUFDekIsV0FBVyxFQUFFO2dCQUNYO29CQUNFLEVBQUUsRUFBRSxJQUFJO29CQUNSLEtBQUssRUFBRSxzQkFBc0I7b0JBQzdCLFVBQVUsRUFBRSxLQUFLO29CQUNqQixZQUFZLEVBQUUsTUFBTTtpQkFDckI7Z0JBQ0Q7b0JBQ0UsRUFBRSxFQUFFLElBQUk7b0JBQ1IsS0FBSyxFQUFFLHNCQUFzQjtvQkFDN0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFlBQVksRUFBRSxNQUFNO2lCQUNyQjthQUNGO1NBQ0Ys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QUVILElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVoQix1QkFBQSxJQUFJLHVEQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RDLENBQUM7Ozs0SEE1VFUsK0JBQStCO2dIQUEvQiwrQkFBK0Isb0VDN0I1Qyx5bEtBa0pBOzJGRHJIYSwrQkFBK0I7a0JBVjNDLFNBQVM7K0JBS0UsOEJBQThCLG1CQUd2Qix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIE9uRGVzdHJveSxcbiAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5SWRTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHsgU2t5TW9kYWxJbnN0YW5jZSB9IGZyb20gJ0Bza3l1eC9tb2RhbHMnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNreUxvb2t1cFNob3dNb3JlTmF0aXZlUGlja2VyQ29udGV4dCB9IGZyb20gJy4vdHlwZXMvbG9va3VwLXNob3ctbW9yZS1uYXRpdmUtcGlja2VyLWNvbnRleHQnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICogSW50ZXJuYWwgY29tcG9uZW50IHRvIGltcGxlbWVudCB0aGUgbmF0aXZlIHBpY2tlci5cbiAqL1xuQENvbXBvbmVudCh7XG4gIC8vIFN1cHByZXNzIHRoaXMgZXJyb3IgcmF0aGVyIHRoYW4gZml4IHRoZSBzZWxlY3RvciBzaW5jZSBjb25zdW1lcnMgd2l0aCB1bml0IHRlc3RzXG4gIC8vIG1heSBiZSBsb29raW5nIGZvciBhbiBlbGVtZW50IHdpdGggdGhpcyBzZWxlY3Rvci4gV2UgY2FuIGNoYW5nZSBpdCBpbiB0aGUgbmV4dCBtYWpvclxuICAvLyB2ZXJzaW9uIG9mIFNLWSBVWC5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdza3l1eC1sb29rdXAtc2hvdy1tb3JlLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xvb2t1cC1zaG93LW1vcmUtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9sb29rdXAtc2hvdy1tb3JlLW1vZGFsLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lMb29rdXBTaG93TW9yZU1vZGFsQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95XG57XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogRmlyZXMgd2hlbiB1c2VycyBzZWxlY3QgdGhlIGJ1dHRvbiB0byBhZGQgbmV3IG9wdGlvbnMgdG8gdGhlIGxpc3QuXG4gICAqL1xuICBwdWJsaWMgYWRkQ2xpY2s6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIGFzc29jaWF0ZSB0aGlzIG1vZGFsIHdpdGggaXRzIG93bmluZyBsb29rdXAgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGlkOiBzdHJpbmc7XG5cbiAgcHVibGljIGl0ZW1zOiBhbnlbXSA9IFtdO1xuXG4gIHB1YmxpYyBkYXRhTWFuYWdlckNvbmZpZyA9IHtcbiAgICBzb3J0T3B0aW9uczogW1xuICAgICAge1xuICAgICAgICBpZDogJ2F6JyxcbiAgICAgICAgbGFiZWw6ICdBbHBoYWJldGljYWwgKEEgLSBaKScsXG4gICAgICAgIGRlc2NlbmRpbmc6IGZhbHNlLFxuICAgICAgICBwcm9wZXJ0eU5hbWU6ICduYW1lJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiAnemEnLFxuICAgICAgICBsYWJlbDogJ0FscGhhYmV0aWNhbCAoWiAtIEEpJyxcbiAgICAgICAgZGVzY2VuZGluZzogdHJ1ZSxcbiAgICAgICAgcHJvcGVydHlOYW1lOiAnbmFtZScsXG4gICAgICB9LFxuICAgIF0sXG4gIH07XG5cbiAgcHVibGljIGRpc3BsYXllZEl0ZW1zOiBhbnlbXSA9IFtdO1xuXG4gIHB1YmxpYyBpdGVtc0hhdmVNb3JlID0gZmFsc2U7XG5cbiAgcHVibGljIG9ubHlTaG93U2VsZWN0ZWQgPSBmYWxzZTtcblxuICBwdWJsaWMgcmVwZWF0ZXJJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgbnVsbCA9IG51bGw7XG5cbiAgcHVibGljIHNlYXJjaFRleHQgPSAnJztcblxuICBwdWJsaWMgc2VsZWN0ZWRJdGVtczogeyBpbmRleDogbnVtYmVyOyBpdGVtRGF0YTogYW55IH1bXSA9IFtdO1xuXG4gICNjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG5cbiAgI2l0ZW1JbmRleCA9IDA7XG5cbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBtb2RhbEluc3RhbmNlOiBTa3lNb2RhbEluc3RhbmNlLFxuICAgIHB1YmxpYyBjb250ZXh0OiBTa3lMb29rdXBTaG93TW9yZU5hdGl2ZVBpY2tlckNvbnRleHQsXG4gICAgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIGlkU3ZjOiBTa3lJZFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IgPSBjaGFuZ2VEZXRlY3RvcjtcblxuICAgIHRoaXMuaWQgPSBpZFN2Yy5nZW5lcmF0ZUlkKCk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmVwZWF0ZXJJdGVtVGVtcGxhdGUgPSB0aGlzLmNvbnRleHQudXNlckNvbmZpZy5pdGVtVGVtcGxhdGUgfHwgbnVsbDtcbiAgICB0aGlzLnNlYXJjaFRleHQgPSB0aGlzLmNvbnRleHQuaW5pdGlhbFNlYXJjaDtcbiAgICB0aGlzLmFkZEl0ZW1zKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIGFkZEJ1dHRvbkNsaWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRDbGljay5uZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgYWRkSXRlbXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLml0ZW1zIHx8IHRoaXMuaXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zOiBhbnlbXSA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5zbGljZSgpO1xuXG4gICAgICB0aGlzLml0ZW1zID0gdGhpcy5jb250ZXh0Lml0ZW1zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHZhbHVlOiBpdGVtLFxuICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLml0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgY29uc3QgaXNJbml0aWFsVmFsdWU6IGJvb2xlYW4gPVxuICAgICAgICAgIHRoaXMuY29udGV4dC5pbml0aWFsVmFsdWUgPT09IGl0ZW0udmFsdWU7XG5cbiAgICAgICAgY29uc3QgaW5pdGlhbElzQXJyYXk6IGJvb2xlYW4gPSBBcnJheS5pc0FycmF5KFxuICAgICAgICAgIHRoaXMuY29udGV4dC5pbml0aWFsVmFsdWVcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgaW5pdGlhbFZhbHVlQ29udGFpbnNJdGVtOiBib29sZWFuID1cbiAgICAgICAgICB0aGlzLmNvbnRleHQuaW5pdGlhbFZhbHVlLmZpbmRJbmRleChcbiAgICAgICAgICAgIChpbml0aWFsSXRlbTogYW55KSA9PiBpbml0aWFsSXRlbSA9PT0gaXRlbS52YWx1ZVxuICAgICAgICAgICkgPj0gMDtcblxuICAgICAgICBpZiAoaXNJbml0aWFsVmFsdWUgfHwgKGluaXRpYWxJc0FycmF5ICYmIGluaXRpYWxWYWx1ZUNvbnRhaW5zSXRlbSkpIHtcbiAgICAgICAgICBpdGVtLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLml0ZW1zLmluZGV4T2YoaXRlbSk7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcy5maW5kSW5kZXgoXG4gICAgICAgICAgICAgIChzZWxlY3RlZEl0ZW0pID0+IHNlbGVjdGVkSXRlbS5pbmRleCA9PT0gaXRlbUluZGV4XG4gICAgICAgICAgICApIDwgMFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcy5wdXNoKHsgaW5kZXg6IGl0ZW1JbmRleCwgaXRlbURhdGE6IGl0ZW0udmFsdWUgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRJdGVtcztcbiAgICAgIHRoaXMudXBkYXRlRGF0YVN0YXRlKCk7XG4gICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvLyBpZiBvbmx5U2hvd1NlbGVjdGVkIGlzIGNoZWNrZWQsIHRoZW4gb25seSBpdGVyYXRlIHRocm91Z2ggdGhlIGluaXRpYWwgc2VsZWN0aW9uXG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLm9ubHlTaG93U2VsZWN0ZWRcbiAgICAgID8gdGhpcy5pdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uc2VsZWN0ZWQpXG4gICAgICA6IHRoaXMuaXRlbXM7XG5cbiAgICB0aGlzLiNpdGVtSW5kZXggPSB0aGlzLiNpdGVtSW5kZXggKyAxMDtcbiAgICB0aGlzLnNlYXJjaEl0ZW1zKGl0ZW1zKS50aGVuKChzZWFyY2hlZEl0ZW1zKSA9PiB7XG4gICAgICB0aGlzLmRpc3BsYXllZEl0ZW1zID0gc2VhcmNoZWRJdGVtcy5zbGljZSgwLCB0aGlzLiNpdGVtSW5kZXgpO1xuXG4gICAgICBpZiAodGhpcy4jaXRlbUluZGV4ID4gc2VhcmNoZWRJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5pdGVtc0hhdmVNb3JlID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLml0ZW1zSGF2ZU1vcmUgPSB0cnVlO1xuICAgICAgfVxuICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJBbGwoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNwbGF5ZWRJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBpZiAoaXRlbS5zZWxlY3RlZCkge1xuICAgICAgICBpdGVtLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XG4gICAgdGhpcy51cGRhdGVEYXRhU3RhdGUoKTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBpdGVtQ2xpY2soc2VsZWN0ZWRJdGVtOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb250ZXh0LnNlbGVjdE1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICB0aGlzLm9uSXRlbVNlbGVjdCghc2VsZWN0ZWRJdGVtLnNlbGVjdGVkLCBzZWxlY3RlZEl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkl0ZW1TZWxlY3QobmV3U2VsZWN0U3RhdGU6IGJvb2xlYW4sIGl0ZW1Ub1NlbGVjdDogYW55KTogdm9pZCB7XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLml0ZW1zO1xuXG4gICAgaWYgKHRoaXMuY29udGV4dC5zZWxlY3RNb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgLyogU2FuaXR5IGNoZWNrIC0gc2luZ2xlIHNlbGVjdCBtb2RlIHNob3VsZCBvbmx5IGFsb3cgZm9yIGEgYHRydWVgIHNlbGVjdCBzdGF0ZSAqL1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChuZXdTZWxlY3RTdGF0ZSkge1xuICAgICAgICBpdGVtVG9TZWxlY3Quc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgaWYgKGl0ZW0udmFsdWUgIT09IGl0ZW1Ub1NlbGVjdC52YWx1ZSkge1xuICAgICAgICAgICAgaXRlbS5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZGlzcGxheWVkSXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgIGlmIChpdGVtLnZhbHVlICE9PSBpdGVtVG9TZWxlY3QudmFsdWUpIHtcbiAgICAgICAgICAgIGl0ZW0uc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBpdGVtSW5kZXggPSBpdGVtcy5maW5kSW5kZXgoXG4gICAgICAgICAgKGl0ZW0pID0+IGl0ZW0udmFsdWUgPT09IGl0ZW1Ub1NlbGVjdC52YWx1ZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXG4gICAgICAgICAgeyBpbmRleDogaXRlbUluZGV4LCBpdGVtRGF0YTogaXRlbXNbaXRlbUluZGV4XS52YWx1ZSB9LFxuICAgICAgICBdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zOiB7IGluZGV4OiBudW1iZXI7IGl0ZW1EYXRhOiBhbnkgfVtdID1cbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zO1xuICAgICAgY29uc3QgYWxsSXRlbXNJbmRleCA9IGl0ZW1zLmZpbmRJbmRleChcbiAgICAgICAgKGl0ZW0pID0+IGl0ZW0udmFsdWUgPT09IGl0ZW1Ub1NlbGVjdC52YWx1ZVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbXNJbmRleCA9IHNlbGVjdGVkSXRlbXMuZmluZEluZGV4KFxuICAgICAgICAoc2VsZWN0ZWRJdGVtKSA9PiBzZWxlY3RlZEl0ZW0uaW5kZXggPT09IGFsbEl0ZW1zSW5kZXhcbiAgICAgICk7XG5cbiAgICAgIGlmIChuZXdTZWxlY3RTdGF0ZSAmJiBzZWxlY3RlZEl0ZW1zSW5kZXggPT09IC0xKSB7XG4gICAgICAgIHNlbGVjdGVkSXRlbXMucHVzaCh7XG4gICAgICAgICAgaW5kZXg6IGFsbEl0ZW1zSW5kZXgsXG4gICAgICAgICAgaXRlbURhdGE6IGl0ZW1zW2FsbEl0ZW1zSW5kZXhdLnZhbHVlLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoIW5ld1NlbGVjdFN0YXRlICYmIHNlbGVjdGVkSXRlbXNJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgc2VsZWN0ZWRJdGVtcy5zcGxpY2Uoc2VsZWN0ZWRJdGVtc0luZGV4LCAxKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRJdGVtcztcbiAgICB9XG4gICAgdGhpcy51cGRhdGVEYXRhU3RhdGUoKTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWFyY2hBcHBsaWVkKHNlYXJjaFRleHQ6IHN0cmluZykge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuc2VhcmNoVGV4dCAhPT0gc2VhcmNoVGV4dCkge1xuICAgICAgdGhpcy4jaXRlbUluZGV4ID0gMTA7XG4gICAgfVxuICAgIHRoaXMuc2VhcmNoVGV4dCA9IHNlYXJjaFRleHQ7XG4gICAgdGhpcy51cGRhdGVEYXRhU3RhdGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWFyY2hJdGVtcyhpdGVtczogYW55W10pOiBQcm9taXNlPGFueVtdPiB7XG4gICAgY29uc3Qgc2VhcmNoVGV4dCA9IHRoaXMuc2VhcmNoVGV4dDtcblxuICAgIGlmIChzZWFyY2hUZXh0KSB7XG4gICAgICBjb25zdCByZXN1bHRWYWx1ZXMgPSB0aGlzLmNvbnRleHQuc2VhcmNoKFxuICAgICAgICBzZWFyY2hUZXh0LFxuICAgICAgICBpdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICByZXR1cm4gaXRlbS52YWx1ZTtcbiAgICAgICAgfSksXG4gICAgICAgIHsgY29udGV4dDogJ21vZGFsJyB9XG4gICAgICApO1xuXG4gICAgICBpZiAocmVzdWx0VmFsdWVzIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gaXRlbXMuZmlsdGVyKFxuICAgICAgICAgIChpdGVtKSA9PiByZXN1bHRWYWx1ZXMuaW5kZXhPZihpdGVtLnZhbHVlKSA+PSAwXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiByZXN1bHRWYWx1ZXMudGhlbigodmFsdWVzKSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gaXRlbXMuZmlsdGVyKFxuICAgICAgICAgICAgKGl0ZW0pID0+IHZhbHVlcy5pbmRleE9mKGl0ZW0udmFsdWUpID49IDBcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoaXRlbXMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RBbGwoKTogdm9pZCB7XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLml0ZW1zO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtczogeyBpbmRleDogbnVtYmVyOyBpdGVtRGF0YTogYW55IH1bXSA9XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXM7XG5cbiAgICB0aGlzLmRpc3BsYXllZEl0ZW1zLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgaWYgKCFpdGVtLnNlbGVjdGVkKSB7XG4gICAgICAgIGl0ZW0uc2VsZWN0ZWQgPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IGluZGV4ID0gaXRlbXMuaW5kZXhPZihpdGVtKTtcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcy5maW5kSW5kZXgoXG4gICAgICAgICAgICAoc2VsZWN0ZWRJdGVtKSA9PiBzZWxlY3RlZEl0ZW0uaW5kZXggPT09IGluZGV4XG4gICAgICAgICAgKSA8IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcy5wdXNoKHtcbiAgICAgICAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgICAgICAgIGl0ZW1EYXRhOiBpdGVtc1tpbmRleF0udmFsdWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHNlbGVjdGVkSXRlbXM7XG4gICAgdGhpcy51cGRhdGVEYXRhU3RhdGUoKTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVEYXRhU3RhdGUoKTogdm9pZCB7XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLml0ZW1zO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtczogeyBpbmRleDogbnVtYmVyOyBpdGVtRGF0YTogYW55IH1bXSA9XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXM7XG4gICAgaXRlbXM/LmZvckVhY2goKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgaXRlbS5zZWxlY3RlZCA9XG4gICAgICAgIHNlbGVjdGVkSXRlbXMuZmluZEluZGV4KFxuICAgICAgICAgIChzZWxlY3RlZEl0ZW0pID0+IHNlbGVjdGVkSXRlbS5pbmRleCA9PT0gaW5kZXhcbiAgICAgICAgKSAhPT0gLTE7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNlYXJjaEl0ZW1zKGl0ZW1zKS50aGVuKChzZWFyY2hlZEl0ZW1zKSA9PiB7XG4gICAgICBpZiAodGhpcy5vbmx5U2hvd1NlbGVjdGVkKSB7XG4gICAgICAgIHNlYXJjaGVkSXRlbXMgPSBzZWFyY2hlZEl0ZW1zLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5zZWxlY3RlZCk7XG4gICAgICB9XG4gICAgICB0aGlzLmRpc3BsYXllZEl0ZW1zID0gc2VhcmNoZWRJdGVtcy5zbGljZSgwLCB0aGlzLiNpdGVtSW5kZXgpO1xuXG4gICAgICBpZiAodGhpcy4jaXRlbUluZGV4ID4gc2VhcmNoZWRJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5pdGVtc0hhdmVNb3JlID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLml0ZW1zSGF2ZU1vcmUgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVJdGVtRGF0YShkYXRhOiBhbnlbXSk6IHZvaWQge1xuICAgIHRoaXMuY29udGV4dC5pdGVtcyA9IGRhdGE7XG4gICAgdGhpcy5pdGVtcyA9IFtdO1xuICAgIHRoaXMuI2l0ZW1JbmRleCA9IDEwO1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5mb3JFYWNoKChzZWxlY3RlZEl0ZW0pID0+IHtcbiAgICAgIHRoaXMuY29udGV4dC5pdGVtcy5mb3JFYWNoKChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgaWYgKHNlbGVjdGVkSXRlbS5pdGVtRGF0YSA9PT0gaXRlbSkge1xuICAgICAgICAgIHNlbGVjdGVkSXRlbS5pbmRleCA9IGluZGV4O1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkSXRlbXMoKTtcblxuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG59XG4iLCI8c2t5LW1vZGFsXG4gIGNsYXNzPVwic2t5LWxvb2t1cC1zaG93LW1vcmUtbW9kYWxcIlxuICBbYXR0ci5pZF09XCJpZFwiXG4gIFtuZ0NsYXNzXT1cIidza3ktbG9va3VwLXNob3ctbW9yZS1tb2RhbC0nICsgY29udGV4dC5zZWxlY3RNb2RlXCJcbj5cbiAgPHNreS1tb2RhbC1oZWFkZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRleHQudXNlckNvbmZpZz8udGl0bGU7IGVsc2UgZGVmYXVsdFRpdGxlXCI+XG4gICAgICB7eyBjb250ZXh0LnVzZXJDb25maWcudGl0bGUgfX1cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9za3ktbW9kYWwtaGVhZGVyPlxuICA8c2t5LW1vZGFsLWNvbnRlbnRcbiAgICBbc2t5Vmlld2tlZXBlcl09XCJbJy5za3ktbG9va3VwLXNob3ctbW9yZS10b29sYmFyLXdyYXBwZXInXVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwic2t5LWxvb2t1cC1zaG93LW1vcmUtdG9vbGJhci13cmFwcGVyXCI+XG4gICAgICA8c2t5LXRvb2xiYXIgY2xhc3M9XCJza3ktbG9va3VwLXNob3ctbW9yZS1tb2RhbC10b29sYmFyXCI+XG4gICAgICAgIDxza3ktdG9vbGJhci1zZWN0aW9uPlxuICAgICAgICAgIDxza3ktdG9vbGJhci1pdGVtPlxuICAgICAgICAgICAgPHNreS1zZWFyY2hcbiAgICAgICAgICAgICAgW2RlYm91bmNlVGltZV09XCIyNTBcIlxuICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hUZXh0XCJcbiAgICAgICAgICAgICAgKHNlYXJjaEFwcGx5KT1cInNlYXJjaEFwcGxpZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3NreS1zZWFyY2g+XG4gICAgICAgICAgPC9za3ktdG9vbGJhci1pdGVtPlxuICAgICAgICAgIDxza3ktdG9vbGJhci12aWV3LWFjdGlvbnM+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udGV4dC5zaG93QWRkQnV0dG9uXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWxpbmsgc2t5LWxvb2t1cC1zaG93LW1vcmUtbW9kYWwtYWRkXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZEJ1dHRvbkNsaWNrZWQoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxza3ktaWNvblxuICAgICAgICAgICAgICAgICpza3lUaGVtZUlmPVwiJ21vZGVybidcIlxuICAgICAgICAgICAgICAgIGljb249XCJhZGRcIlxuICAgICAgICAgICAgICAgIGljb25UeXBlPVwic2t5dXhcIlxuICAgICAgICAgICAgICA+PC9za3ktaWNvbj5cbiAgICAgICAgICAgICAgPHNreS1pY29uICpza3lUaGVtZUlmPVwiJ2RlZmF1bHQnXCIgaWNvbj1cInBsdXMtY2lyY2xlXCI+PC9za3ktaWNvbj5cbiAgICAgICAgICAgICAge3sgJ3NreXV4X2xvb2t1cF9zaG93X21vcmVfYWRkJyB8IHNreUxpYlJlc291cmNlcyB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9za3ktdG9vbGJhci12aWV3LWFjdGlvbnM+XG4gICAgICAgIDwvc2t5LXRvb2xiYXItc2VjdGlvbj5cbiAgICAgIDwvc2t5LXRvb2xiYXI+XG4gICAgICA8c2t5LXRvb2xiYXJcbiAgICAgICAgKm5nSWY9XCJjb250ZXh0LnNlbGVjdE1vZGUgPT09ICdtdWx0aXBsZSdcIlxuICAgICAgICBjbGFzcz1cInNreS1sb29rdXAtc2hvdy1tb3JlLW1vZGFsLW11bHRpc2VsZWN0LXRvb2xiYXJcIlxuICAgICAgPlxuICAgICAgICA8c2t5LXRvb2xiYXItc2VjdGlvbj5cbiAgICAgICAgICA8c2t5LXRvb2xiYXItaXRlbT5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tbGluayBza3ktbG9va3VwLXNob3ctbW9yZS1tb2RhbC1zZWxlY3QtYWxsLWJ0blwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0QWxsKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICdza3l1eF9sb29rdXBfc2hvd19tb3JlX3NlbGVjdF9hbGxfYnV0dG9uX3RpdGxlJ1xuICAgICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvc2t5LXRvb2xiYXItaXRlbT5cbiAgICAgICAgICA8c2t5LXRvb2xiYXItaXRlbT5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tbGluayBza3ktbG9va3VwLXNob3ctbW9yZS1tb2RhbC1jbGVhci1hbGwtYnRuXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbGVhckFsbCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAnc2t5dXhfbG9va3VwX3Nob3dfbW9yZV9jbGVhcl9hbGxfYnV0dG9uX3RpdGxlJ1xuICAgICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvc2t5LXRvb2xiYXItaXRlbT5cbiAgICAgICAgICA8c2t5LXRvb2xiYXItdmlldy1hY3Rpb25zPlxuICAgICAgICAgICAgPHNreS1jaGVja2JveFxuICAgICAgICAgICAgICBbKGNoZWNrZWQpXT1cIm9ubHlTaG93U2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZURhdGFTdGF0ZSgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNreS1jaGVja2JveC1sYWJlbD5cbiAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgJ3NreXV4X2xvb2t1cF9zaG93X21vcmVfc2hvd19zZWxlY3RlZF9vcHRpb25fdGl0bGUnXG4gICAgICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPC9za3ktY2hlY2tib3gtbGFiZWw+XG4gICAgICAgICAgICA8L3NreS1jaGVja2JveD5cbiAgICAgICAgICA8L3NreS10b29sYmFyLXZpZXctYWN0aW9ucz5cbiAgICAgICAgPC9za3ktdG9vbGJhci1zZWN0aW9uPlxuICAgICAgPC9za3ktdG9vbGJhcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cImRpc3BsYXllZEl0ZW1zLmxlbmd0aCA9PT0gMFwiXG4gICAgICBjbGFzcz1cInNreS1mb250LWRlZW1waGFzaXplZCBza3ktbG9va3VwLXNob3ctbW9yZS1uby1yZXN1bHRzXCJcbiAgICA+XG4gICAgICB7eyAnc2t5dXhfbG9va3VwX3Nob3dfbW9yZV9ub19yZXN1bHRzJyB8IHNreUxpYlJlc291cmNlcyB9fVxuICAgIDwvZGl2PlxuICAgIDxza3ktcmVwZWF0ZXIgY2xhc3M9XCJza3ktbG9va3VwLXNob3ctbW9yZS1yZXBlYXRlclwiIGV4cGFuZE1vZGU9XCJub25lXCI+XG4gICAgICA8c2t5LXJlcGVhdGVyLWl0ZW1cbiAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGlzcGxheWVkSXRlbXNcIlxuICAgICAgICBbc2VsZWN0YWJsZV09XCJjb250ZXh0LnNlbGVjdE1vZGUgPT09ICdtdWx0aXBsZSdcIlxuICAgICAgICBbKGlzU2VsZWN0ZWQpXT1cIml0ZW0uc2VsZWN0ZWRcIlxuICAgICAgICAoY2xpY2spPVwiaXRlbUNsaWNrKGl0ZW0pXCJcbiAgICAgICAgKGtleXVwLmVudGVyKT1cIml0ZW1DbGljayhpdGVtKVwiXG4gICAgICAgIChpc1NlbGVjdGVkQ2hhbmdlKT1cIm9uSXRlbVNlbGVjdCgkZXZlbnQsIGl0ZW0pXCJcbiAgICAgID5cbiAgICAgICAgPHNreS1yZXBlYXRlci1pdGVtLWNvbnRlbnQ+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgcmVwZWF0ZXJJdGVtVGVtcGxhdGUgPz8gZGVmYXVsdEl0ZW1UZW1wbGF0ZTtcbiAgICAgICAgICAgICAgY29udGV4dDogeyBpdGVtOiBpdGVtLnZhbHVlIH1cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3NreS1yZXBlYXRlci1pdGVtLWNvbnRlbnQ+XG4gICAgICA8L3NreS1yZXBlYXRlci1pdGVtPlxuICAgIDwvc2t5LXJlcGVhdGVyPlxuICAgIDxza3ktaW5maW5pdGUtc2Nyb2xsIFtlbmFibGVkXT1cIml0ZW1zSGF2ZU1vcmVcIiAoc2Nyb2xsRW5kKT1cImFkZEl0ZW1zKClcIj5cbiAgICA8L3NreS1pbmZpbml0ZS1zY3JvbGw+XG4gIDwvc2t5LW1vZGFsLWNvbnRlbnQ+XG4gIDxza3ktbW9kYWwtZm9vdGVyPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLXByaW1hcnkgc2t5LW1hcmdpbi1pbmxpbmUtY29tcGFjdCBza3ktbG9va3VwLXNob3ctbW9yZS1tb2RhbC1zYXZlXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgKGNsaWNrKT1cIm1vZGFsSW5zdGFuY2Uuc2F2ZShzZWxlY3RlZEl0ZW1zKVwiXG4gICAgPlxuICAgICAge3sgJ3NreXV4X2xvb2t1cF9zaG93X21vcmVfc2VsZWN0JyB8IHNreUxpYlJlc291cmNlcyB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWxpbmsgc2t5LWxvb2t1cC1zaG93LW1vcmUtbW9kYWwtY2xvc2VcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAoY2xpY2spPVwibW9kYWxJbnN0YW5jZS5jbG9zZSgpXCJcbiAgICA+XG4gICAgICB7eyAnc2t5dXhfbG9va3VwX3Nob3dfbW9yZV9jYW5jZWwnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gICAgPC9idXR0b24+XG4gIDwvc2t5LW1vZGFsLWZvb3Rlcj5cbjwvc2t5LW1vZGFsPlxuXG48bmctdGVtcGxhdGUgbGV0LWl0ZW09XCJpdGVtXCIgI2RlZmF1bHRJdGVtVGVtcGxhdGU+XG4gIHt7IGl0ZW1bY29udGV4dC5kZXNjcmlwdG9yUHJvcGVydHldIH19XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRUaXRsZT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRleHQuc2VsZWN0TW9kZSA9PT0gJ3NpbmdsZSdcIj5cbiAgICB7eyAnc2t5dXhfbG9va3VwX3Nob3dfbW9yZV9tb2RhbF90aXRsZV9zaW5nbGUnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGV4dC5zZWxlY3RNb2RlID09PSAnbXVsdGlwbGUnXCI+XG4gICAge3sgJ3NreXV4X2xvb2t1cF9zaG93X21vcmVfbW9kYWxfdGl0bGVfbXVsdGlwbGUnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|