@worktile/theia 16.2.4 → 16.2.6
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/editor.module.d.ts +2 -2
- package/esm2022/plugins/code/code.component.mjs +8 -6
- package/esm2022/plugins/table/table.store.mjs +13 -9
- package/esm2022/queries/is-empty-content-filter.mjs +2 -2
- package/fesm2022/worktile-theia.mjs +17 -11
- package/fesm2022/worktile-theia.mjs.map +1 -1
- package/package.json +1 -1
- package/plugins/table/table.store.d.ts +3 -3
- package/styles/editor.scss +4 -0
- package/styles/typo.scss +2 -1
package/editor.module.d.ts
CHANGED
|
@@ -101,8 +101,8 @@ import * as i68 from "ngx-tethys/input-number";
|
|
|
101
101
|
import * as i69 from "ngx-tethys/color-picker";
|
|
102
102
|
import * as i70 from "ng-codemirror";
|
|
103
103
|
import * as i71 from "./components/column-resize/column-resize.module";
|
|
104
|
-
export declare const COMPONENTS: (typeof
|
|
105
|
-
export declare const PLUGIN_COMPONENTS: (typeof
|
|
104
|
+
export declare const COMPONENTS: (typeof TheToolbarDropdownComponent | typeof TheDefaultElementComponent | typeof TheToolbarGroupComponent | typeof TheToolbarItemComponent | typeof TheToolbarComponent | typeof TheListboxOptionDirective | typeof TheListboxGroupDirective | typeof TheListboxDirective | typeof ThePreventDefaultDirective | typeof ThePluginMenuComponent | typeof TheVerticalToolbarItemComponent | typeof TheContextMenuComponent | typeof TheTableOptionsComponent | typeof TheTextComponent | typeof TheColorToolbarItemComponent | typeof TheConversionHintComponent | typeof TheTableSelectComponent | typeof TheTableToolbarItemComponent | typeof TheInlineToolbarComponent | typeof TheQuickInsertComponent | typeof TheInsertMarkComponent)[];
|
|
105
|
+
export declare const PLUGIN_COMPONENTS: (typeof TheCodeComponent | typeof TheLinkHoverComponent | typeof TheLinkEditComponent | typeof TheLinkComponent | typeof TheTableToolbarComponent | typeof TheTableComponent | typeof TheTemplateComponent | typeof TheBlockquoteComponent | typeof TheImageComponent | typeof TheTableRowComponent | typeof TheTdComponent | typeof TheTodoItemComponent)[];
|
|
106
106
|
export declare class TheEditorModule {
|
|
107
107
|
static ɵfac: i0.ɵɵFactoryDeclaration<TheEditorModule, never>;
|
|
108
108
|
static ɵmod: i0.ɵɵNgModuleDeclaration<TheEditorModule, [typeof i1.TheEditorComponent, typeof i2.ElementStylePipe, typeof i2.ElementClassPipe, typeof i3.TableFreezeColumnPipe, typeof i3.TableFreezeRowPipe, typeof i2.PluginMenuPipe, typeof i4.TheToolbarComponent, typeof i5.TheToolbarDropdownComponent, typeof i6.TheToolbarGroupComponent, typeof i7.TheToolbarItemComponent, typeof i8.TheInlineToolbarComponent, typeof i9.TheTextComponent, typeof i10.TheDefaultElementComponent, typeof i11.TheQuickInsertComponent, typeof i12.ThePluginMenuComponent, typeof i13.TheColorToolbarItemComponent, typeof i14.TheContextMenuComponent, typeof i15.TheInsertMarkComponent, typeof i16.TheTableSelectComponent, typeof i17.TheTableToolbarItemComponent, typeof i18.TheConversionHintComponent, typeof i19.TheVerticalToolbarItemComponent, typeof i20.TheTableOptionsComponent, typeof i21.TheListboxOptionDirective, typeof i21.TheListboxGroupDirective, typeof i21.TheListboxDirective, typeof i22.ThePreventDefaultDirective, typeof i23.TheImageComponent, typeof i24.TheTemplateComponent, typeof i25.TheHrComponent, typeof i26.TheBlockquoteComponent, typeof i27.TheTodoItemComponent, typeof i28.TheListItemComponent, typeof i29.TheBulletedListComponent, typeof i30.TheNumberedListComponent, typeof i31.TheCodeComponent, typeof i32.TheLinkComponent, typeof i33.TheLinkEditComponent, typeof i34.TheLinkHoverComponent, typeof i35.TheTableToolbarComponent, typeof i36.TheTableComponent, typeof i37.TheTableRowComponent, typeof i38.TheTdComponent, typeof i39.TheInlineCodeComponent], [typeof i40.CommonModule, typeof i41.ScrollingModule, typeof i42.SlateModule, typeof i43.FormsModule, typeof i44.ThyIconModule, typeof i45.ThyAvatarModule, typeof i46.ThyNavModule, typeof i47.ThyFormModule, typeof i48.ThySharedModule, typeof i49.ThyListModule, typeof i50.ThyTooltipModule, typeof i51.ThyProgressModule, typeof i52.ThyAutocompleteModule, typeof i53.ThyInputModule, typeof i54.ThySelectModule, typeof i55.ThyButtonModule, typeof i56.ThyNotifyModule, typeof i57.ThyAlertModule, typeof i58.ThyResizableModule, typeof i59.ThySwitchModule, typeof i60.ThyImageModule, typeof i61.ThyDialogModule, typeof i62.ThyActionModule, typeof i63.ThyDividerModule, typeof i64.ThyDropdownModule, typeof i65.ThyMenuModule, typeof i66.ThyEmptyModule, typeof i67.ThyPopoverModule, typeof i68.ThyInputNumberModule, typeof i69.ThyColorPickerModule, typeof i70.CodemirrorModule, typeof i71.TheColumnSizeModule], [typeof i1.TheEditorComponent, typeof i4.TheToolbarComponent, typeof i5.TheToolbarDropdownComponent, typeof i7.TheToolbarItemComponent, typeof i10.TheDefaultElementComponent, typeof i12.ThePluginMenuComponent, typeof i21.TheListboxOptionDirective, typeof i21.TheListboxGroupDirective, typeof i21.TheListboxDirective, typeof i22.ThePreventDefaultDirective]>;
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, TemplateRef, ViewChild } from '@angular/core';
|
|
2
2
|
import { CodeMirrorComponent } from 'ng-codemirror';
|
|
3
|
-
import {
|
|
3
|
+
import { Subject, fromEvent } from 'rxjs';
|
|
4
4
|
import { delay, take, takeUntil } from 'rxjs/operators';
|
|
5
5
|
import { Transforms } from 'slate';
|
|
6
6
|
import { AngularEditor } from 'slate-angular';
|
|
7
|
-
import { copyNode } from '../../utils';
|
|
8
7
|
import { TheToolbarDropdownComponent } from '../../components/toolbar-dropdown/toolbar-dropdown.component';
|
|
9
8
|
import { CODEMIRROR_PADDING_TOP, CODE_MODES, DropdownMode } from '../../constants';
|
|
10
9
|
import { TheBaseElementComponent } from '../../interfaces';
|
|
11
10
|
import * as TheQueries from '../../queries';
|
|
12
11
|
import * as TheTransforms from '../../transforms';
|
|
13
|
-
import {
|
|
12
|
+
import { copyNode } from '../../utils';
|
|
14
13
|
import { isMobileMode, isPrintMode } from '../../utils/get-mode';
|
|
14
|
+
import { CodeEditor } from './code.editor';
|
|
15
15
|
import * as i0 from "@angular/core";
|
|
16
16
|
import * as i1 from "ngx-tethys/notify";
|
|
17
17
|
import * as i2 from "../../services/context.service";
|
|
@@ -60,7 +60,7 @@ export class TheCodeComponent extends TheBaseElementComponent {
|
|
|
60
60
|
readOnly: false,
|
|
61
61
|
autofocus: false,
|
|
62
62
|
lineWiseCopyCut: true,
|
|
63
|
-
lineWrapping:
|
|
63
|
+
lineWrapping: false,
|
|
64
64
|
cursorBlinkRate: 500
|
|
65
65
|
};
|
|
66
66
|
this.activeLanguage = this.menus[0];
|
|
@@ -211,7 +211,9 @@ export class TheCodeComponent extends TheBaseElementComponent {
|
|
|
211
211
|
}
|
|
212
212
|
}
|
|
213
213
|
useAutoWrap() {
|
|
214
|
-
|
|
214
|
+
const isPrint = isPrintMode(this.editor);
|
|
215
|
+
const lineWrapping = isPrint ? true : this.element.autoWrap || false;
|
|
216
|
+
this.options = { ...this.options, lineWrapping };
|
|
215
217
|
}
|
|
216
218
|
useHeight() {
|
|
217
219
|
if (this.element.height && !isPrintMode(this.editor)) {
|
|
@@ -255,4 +257,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImpor
|
|
|
255
257
|
type: ViewChild,
|
|
256
258
|
args: [TheToolbarDropdownComponent, { read: TheToolbarDropdownComponent, static: false }]
|
|
257
259
|
}] } });
|
|
258
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9jb2RlL2NvZGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvY29kZS9jb2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFFSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUtULFdBQVcsRUFDWCxTQUFTLEVBRVosTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSXBELE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBVSxVQUFVLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQzNHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFbkYsT0FBTyxFQUFzQix1QkFBdUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9FLE9BQU8sS0FBSyxVQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTVDLE9BQU8sS0FBSyxhQUFhLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7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QUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzdCLENBQUM7OEdBaFFRLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLG1JQWlDSyxXQUFXLGlIQUdSLG1CQUFtQix3RUFHekMsMkJBQTJCLDJCQUFVLDJCQUEyQixvREM3RS9FLGs5RUE2REE7OzJGRHZCYSxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0ksY0FBYyxtQkFFUCx1QkFBdUIsQ0FBQyxNQUFNO21TQW9DL0MsT0FBTztzQkFETixTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJekQsVUFBVTtzQkFEVCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUlyRSx3QkFBd0I7c0JBRHZCLFNBQVM7dUJBQUMsMkJBQTJCLEVBQUUsRUFBRSxJQUFJLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbm5lY3RlZFBvc2l0aW9uLCBPdmVybGF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29kZU1pcnJvckNvbXBvbmVudCB9IGZyb20gJ25nLWNvZGVtaXJyb3InO1xuaW1wb3J0IHsgVGh5Tm90aWZ5U2VydmljZSB9IGZyb20gJ25neC10ZXRoeXMvbm90aWZ5JztcbmltcG9ydCB7IFRoeVBvcG92ZXIsIFRoeVBvcG92ZXJSZWYgfSBmcm9tICduZ3gtdGV0aHlzL3BvcG92ZXInO1xuaW1wb3J0IHsgVGh5UmVzaXplRXZlbnQgfSBmcm9tICduZ3gtdGV0aHlzL3Jlc2l6YWJsZSc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlbGF5LCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFZGl0b3IsIFRyYW5zZm9ybXMgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBjb3B5Tm9kZSB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IFRoZVRvb2xiYXJEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvdG9vbGJhci1kcm9wZG93bi90b29sYmFyLWRyb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDT0RFTUlSUk9SX1BBRERJTkdfVE9QLCBDT0RFX01PREVTLCBEcm9wZG93bk1vZGUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQ29kZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9jdXN0b20tdHlwZXMnO1xuaW1wb3J0IHsgRGVmYXVsdFRvb2xiYXJJdGVtLCBUaGVCYXNlRWxlbWVudENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0ICogYXMgVGhlUXVlcmllcyBmcm9tICcuLi8uLi9xdWVyaWVzJztcbmltcG9ydCB7IFRoZUNvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIFRoZVRyYW5zZm9ybXMgZnJvbSAnLi4vLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBDb2RlRWRpdG9yIH0gZnJvbSAnLi9jb2RlLmVkaXRvcic7XG5pbXBvcnQgeyBpc01vYmlsZU1vZGUsIGlzUHJpbnRNb2RlIH0gZnJvbSAnLi4vLi4vdXRpbHMvZ2V0LW1vZGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2Rpdlt0aGVDb2RlXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvZGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFRoZUNvZGVDb21wb25lbnQgZXh0ZW5kcyBUaGVCYXNlRWxlbWVudENvbXBvbmVudDxDb2RlRWxlbWVudCwgRWRpdG9yPiBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBzdGFydFJlbmRlckNvZGVtaXJyb3IgPSBmYWxzZTtcblxuICAgIGRyb3Bkb3duTW9kZSA9IERyb3Bkb3duTW9kZTtcblxuICAgIG1heEhlaWdodCA9IGlzUHJpbnRNb2RlKHRoaXMuZWRpdG9yKSA/IDAgOiAzNTAgLSBDT0RFTUlSUk9SX1BBRERJTkdfVE9QICogMjtcblxuICAgIG1lbnVzID0gQ09ERV9NT0RFUy5tYXAoaXRlbSA9PiB7XG4gICAgICAgIHJldHVybiB7IGtleTogaXRlbS52YWx1ZSwgbmFtZTogaXRlbS5zaG93TmFtZSB9O1xuICAgIH0pO1xuXG4gICAgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgaXNIaWdodExpZ2h0ID0gZmFsc2U7XG5cbiAgICByZXNpemVIZWlnaHQ6IG51bWJlciA9IG51bGw7XG5cbiAgICBvcHRpb25zID0ge1xuICAgICAgICBtb2RlOiB0aGlzLm1lbnVzWzBdLmtleSxcbiAgICAgICAgbGluZU51bWJlcnM6IGZhbHNlLFxuICAgICAgICByZWFkT25seTogZmFsc2UsXG4gICAgICAgIGF1dG9mb2N1czogZmFsc2UsXG4gICAgICAgIGxpbmVXaXNlQ29weUN1dDogdHJ1ZSxcbiAgICAgICAgbGluZVdyYXBwaW5nOiBpc1ByaW50TW9kZSh0aGlzLmVkaXRvciksXG4gICAgICAgIGN1cnNvckJsaW5rUmF0ZTogNTAwXG4gICAgfTtcblxuICAgIGFjdGl2ZUxhbmd1YWdlOiBEZWZhdWx0VG9vbGJhckl0ZW0gPSB0aGlzLm1lbnVzWzBdO1xuXG4gICAgcmVzaXplQm91bmRzID0gbnVsbDtcblxuICAgIHRvb2xiYXJQb3BvdmVyUmVmOiBUaHlQb3BvdmVyUmVmPGFueT47XG5cbiAgICBAVmlld0NoaWxkKCd0b29sYmFyJywgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlIH0pXG4gICAgdG9vbGJhcjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoJ2NvZGVtaXJyb3InLCB7IHJlYWQ6IENvZGVNaXJyb3JDb21wb25lbnQsIHN0YXRpYzogZmFsc2UgfSlcbiAgICBjb2RlbWlycm9yOiBDb2RlTWlycm9yQ29tcG9uZW50O1xuXG4gICAgQFZpZXdDaGlsZChUaGVUb29sYmFyRHJvcGRvd25Db21wb25lbnQsIHsgcmVhZDogVGhlVG9vbGJhckRyb3Bkb3duQ29tcG9uZW50LCBzdGF0aWM6IGZhbHNlIH0pXG4gICAgdG9vbGJhckRyb3Bkb3duQ29tcG9uZW50OiBUaGVUb29sYmFyRHJvcGRvd25Db21wb25lbnQ7XG5cbiAgICBnZXQgY29kZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5jb250ZW50O1xuICAgIH1cblxuICAgIGdldCBpc1Rvb2xiYXJPcGVuKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50b29sYmFyUG9wb3ZlclJlZiAmJiB0aGlzLnRvb2xiYXJQb3BvdmVyUmVmLmdldE92ZXJsYXlSZWYoKSAmJiB0aGlzLnRvb2xiYXJQb3BvdmVyUmVmLmdldE92ZXJsYXlSZWYoKS5oYXNBdHRhY2hlZCgpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgdGh5Tm90aWZ5U2VydmljZTogVGh5Tm90aWZ5U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogVGhlQ29udGV4dFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgdGh5UG9wb3ZlcjogVGh5UG9wb3ZlcixcbiAgICAgICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXlcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgY2RyKTtcbiAgICB9XG5cbiAgICBvbkNvbnRleHRDaGFuZ2UoKSB7XG4gICAgICAgIHN1cGVyLm9uQ29udGV4dENoYW5nZSgpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzQ29sbGFwc2VkQW5kTm9uUmVhZG9ubHkgJiYgIWlzTW9iaWxlTW9kZSh0aGlzLmVkaXRvcikpIHtcbiAgICAgICAgICAgIHRoaXMub3BlblRvb2xiYXIoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VUb29sYmFyKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yZWFkT25seSAhPT0gdGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgICAgIHRoaXMudXNlUmVhZG9ubHkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMubW9kZSAhPT0gdGhpcy5lbGVtZW50Lmxhbmd1YWdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VNb2RlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmxpbmVXcmFwcGluZyAhPT0gdGhpcy5lbGVtZW50LmF1dG9XcmFwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VBdXRvV3JhcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMucmVzaXplSGVpZ2h0ICE9PSB0aGlzLmVsZW1lbnQuaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VIZWlnaHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBmcm9tRXZlbnQodGhpcy5uYXRpdmVFbGVtZW50LCAnbW91c2Vkb3duJylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0Jsb2NrT3BlcmF0aW9uID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNDb2xsYXBzZWRBbmROb25SZWFkb25seSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy50aGUtY29kZS1ibG9jay1vcGVyYXRpb24nKT8uY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNDb2RlbWlycm9yID0gdGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5uZy1jb2RlbWlycm9yJyk/LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNIaWdodExpZ2h0ID0gIWlzQ29kZW1pcnJvciAmJiAhaXNCbG9ja09wZXJhdGlvbjtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3RoZS1jb2RlLWNvbnRhaW5lcicpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIC8vIGRlbGF5IDIwbXNcbiAgICAgICAgICAgIC8vIGNjb2RlbWlycm9yIGlzIHRvbyBzbG93XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSksIGRlbGF5KDIwKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlckNvZGVtaXJyb3IoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gZWRpdCBtb2RlIGNhbiBub3QgZGVsYXlcbiAgICAgICAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlckNvZGVtaXJyb3IoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVDb2RlbWlycm9yRm9jdXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZUJvdW5kcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgbmF0aXZlRWxlbWVudDogdGhpcy5jb250ZXh0U2VydmljZS5nZXRFZGl0YWJsZUVsZW1lbnQoKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9wZW5Ub29sYmFyKCkge1xuICAgICAgICBpZiAoIVRoZVF1ZXJpZXMuaXNHbG9iYWxDb2xsYXBzZWQodGhpcy5lZGl0b3IpIHx8IHRoaXMuaXNUb29sYmFyT3Blbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudG9vbGJhclBvcG92ZXJSZWYgPSB0aGlzLnRoeVBvcG92ZXIub3Blbih0aGlzLnRvb2xiYXIsIHtcbiAgICAgICAgICAgIG9yaWdpbjogdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICB2aWV3Q29udGFpbmVyUmVmOiB0aGlzLnZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgICBwYW5lbENsYXNzOiBbJ3RoZS1wbHVnaW4tdG9vbGJhci1wb3BvdmVyJ10sXG4gICAgICAgICAgICBtaW5XaWR0aDogMCxcbiAgICAgICAgICAgIG1hbnVhbENsb3N1cmU6IHRydWUsXG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogZmFsc2UsXG4gICAgICAgICAgICBpbnNpZGVDbG9zYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBvdXRzaWRlQ2xvc2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy50b29sYmFyUG9wb3ZlclJlZj8uZ2V0T3ZlcmxheVJlZigpLnVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3kodGhpcy5jcmVhdGVQb3NpdGlvblN0cmF0ZWd5KCkpO1xuICAgIH1cblxuICAgIGNsb3NlVG9vbGJhcigpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNUb29sYmFyT3Blbikge1xuICAgICAgICAgICAgdGhpcy50b29sYmFyUG9wb3ZlclJlZi5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY3JlYXRlUG9zaXRpb25TdHJhdGVneSgpIHtcbiAgICAgICAgY29uc3QgdG9wTGVmdFBvc2l0aW9uOiBDb25uZWN0ZWRQb3NpdGlvbiA9IHtcbiAgICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxuICAgICAgICAgICAgb2Zmc2V0WDogMCxcbiAgICAgICAgICAgIG9mZnNldFk6IC00XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB0aGlzLm92ZXJsYXlcbiAgICAgICAgICAgIC5wb3NpdGlvbigpXG4gICAgICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudClcbiAgICAgICAgICAgIC53aXRoRmxleGlibGVEaW1lbnNpb25zKGZhbHNlKVxuICAgICAgICAgICAgLndpdGhHcm93QWZ0ZXJPcGVuKGZhbHNlKVxuICAgICAgICAgICAgLndpdGhQdXNoKGZhbHNlKVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbnMoW3RvcExlZnRQb3NpdGlvbl0pO1xuICAgIH1cblxuICAgIHJlbmRlckNvZGVtaXJyb3IoKSB7XG4gICAgICAgIHRoaXMuc3RhcnRSZW5kZXJDb2RlbWlycm9yID0gdHJ1ZTtcbiAgICAgICAgdGhpcy51c2VSZWFkb25seSgpO1xuICAgICAgICB0aGlzLnVzZU1vZGUoKTtcbiAgICAgICAgdGhpcy51c2VBdXRvV3JhcCgpO1xuICAgICAgICB0aGlzLnVzZUhlaWdodCgpO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZUNvZGVtaXJyb3JGb2N1cygpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNDb2xsYXBzZWRBbmROb25SZWFkb25seSkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNDb2xsYXBzZWRBbmROb25SZWFkb25seSAmJiB0aGlzLmNvZGVtaXJyb3IgJiYgdGhpcy5jb2RlbWlycm9yLmVkaXRvciAmJiAhdGhpcy5jb2RlbWlycm9yLmVkaXRvci5oYXNGb2N1cygpKSB7XG4gICAgICAgICAgICAgICAgICAgIEFuZ3VsYXJFZGl0b3IuYmx1cih0aGlzLmVkaXRvcik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29kZW1pcnJvci5lZGl0b3IuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2RlbWlycm9yLmVkaXRvci5yZWZyZXNoKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgMjAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvZGVDaGFuZ2UoJGV2ZW50KSB7XG4gICAgICAgIHRoaXMuaXNIaWdodExpZ2h0ID0gZmFsc2U7XG4gICAgICAgIENvZGVFZGl0b3Iuc2V0Q29kZUF0dHJpYnV0ZSh0aGlzLmVkaXRvciwgdGhpcy5lbGVtZW50LCB7IGNvbnRlbnQ6ICRldmVudCB9KTtcbiAgICB9XG5cbiAgICBvbkRlbGV0ZShldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBUaGVUcmFuc2Zvcm1zLmRlbGV0ZUVsZW1lbnQodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCk7XG4gICAgfVxuXG4gICAgb25Db3B5KGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGNvcHlOb2RlKHRoaXMuZWRpdG9yLCB0aGlzLmVsZW1lbnQsIHRoaXMudGh5Tm90aWZ5U2VydmljZSwgdGhpcy5jb2RlbWlycm9yLmVkaXRvcik7XG4gICAgfVxuXG4gICAgZm9jdXNDaGFuZ2UoY29kZU1pcnJvckZvY3VzZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKGNvZGVNaXJyb3JGb2N1c2VkKSB7XG4gICAgICAgICAgICB0aGlzLmlzSGlnaHRMaWdodCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25DaGFuZ2VMYW5ndWFnZSA9IGl0ZW0gPT4ge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLnRoaXMub3B0aW9ucywgbW9kZTogaXRlbS5rZXkgfTtcbiAgICAgICAgdGhpcy5hY3RpdmVMYW5ndWFnZSA9IGl0ZW07XG4gICAgICAgIENvZGVFZGl0b3Iuc2V0Q29kZUF0dHJpYnV0ZSh0aGlzLmVkaXRvciwgdGhpcy5lbGVtZW50LCB7IGxhbmd1YWdlOiBpdGVtLmtleSB9KTtcbiAgICB9O1xuXG4gICAgdXNlTW9kZSgpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0geyAuLi50aGlzLm9wdGlvbnMsIG1vZGU6IHRoaXMuZWxlbWVudC5sYW5ndWFnZSB9O1xuICAgICAgICBjb25zdCBtZW51SXRlbSA9IHRoaXMubWVudXMuZmluZChpID0+IGkua2V5ID09PSB0aGlzLmVsZW1lbnQubGFuZ3VhZ2UpO1xuICAgICAgICBpZiAobWVudUl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlTGFuZ3VhZ2UgPSBtZW51SXRlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVzZUF1dG9XcmFwKCkge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLnRoaXMub3B0aW9ucywgbGluZVdyYXBwaW5nOiB0aGlzLmVsZW1lbnQuYXV0b1dyYXAgfHwgZmFsc2UgfTtcbiAgICB9XG5cbiAgICB1c2VIZWlnaHQoKSB7XG4gICAgICAgIGlmICh0aGlzLmVsZW1lbnQuaGVpZ2h0ICYmICFpc1ByaW50TW9kZSh0aGlzLmVkaXRvcikpIHtcbiAgICAgICAgICAgIHRoaXMucmVzaXplSGVpZ2h0ID0gdGhpcy5lbGVtZW50LmhlaWdodDtcbiAgICAgICAgICAgIHRoaXMubWF4SGVpZ2h0ID0gdGhpcy5lbGVtZW50LmhlaWdodDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVzZVJlYWRvbmx5KCkge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLnRoaXMub3B0aW9ucywgcmVhZE9ubHk6IHRoaXMucmVhZG9ubHksIGN1cnNvckJsaW5rUmF0ZTogdGhpcy5yZWFkb25seSA/IC0xIDogNTAwIH07XG4gICAgfVxuXG4gICAgb25SZXNpemUoeyBoZWlnaHQgfTogVGh5UmVzaXplRXZlbnQpIHtcbiAgICAgICAgdGhpcy5yZXNpemVIZWlnaHQgPSBoZWlnaHQ7XG4gICAgICAgIHRoaXMubWF4SGVpZ2h0ID0gaGVpZ2h0O1xuICAgIH1cblxuICAgIG9uRW5kUmVzaXplKCkge1xuICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdCh0aGlzLmVkaXRvciwgQW5ndWxhckVkaXRvci5maW5kUGF0aCh0aGlzLmVkaXRvciwgdGhpcy5lbGVtZW50KSk7XG4gICAgICAgIENvZGVFZGl0b3Iuc2V0Q29kZUF0dHJpYnV0ZSh0aGlzLmVkaXRvciwgdGhpcy5lbGVtZW50LCB7IGhlaWdodDogdGhpcy5yZXNpemVIZWlnaHQgfSk7XG4gICAgfVxuXG4gICAgb25DaGFuZ2VXcmFwKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuaXNIaWdodExpZ2h0ID0gZmFsc2U7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHsgLi4udGhpcy5vcHRpb25zLCBsaW5lV3JhcHBpbmc6IHZhbHVlIHx8IGZhbHNlIH07XG4gICAgICAgIENvZGVFZGl0b3Iuc2V0Q29kZUF0dHJpYnV0ZSh0aGlzLmVkaXRvciwgdGhpcy5lbGVtZW50LCB7IGF1dG9XcmFwOiB2YWx1ZSA/IHZhbHVlIDogbnVsbCB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG59XG4iLCI8c2xhdGUtY2hpbGRyZW4gW2NoaWxkcmVuXT1cImNoaWxkcmVuXCIgW2NvbnRleHRdPVwiY2hpbGRyZW5Db250ZXh0XCIgW3ZpZXdDb250ZXh0XT1cInZpZXdDb250ZXh0XCI+PC9zbGF0ZS1jaGlsZHJlbj5cblxuPCEtLSDlj6ror7vmqKHlvI/kuItDb2RlTWlycm9yLXNpemVy6auY5bqm5q+U57yW6L6R5qih5byP5LiL5aSaMnB477yM6K6+572udGh5TWluSGVpZ2h05Li6NDZweOmYsuatouaLluaLveWIsOacgOWwj+mrmOW6puaXtuWPquivu+aooeW8j+S4i+WHuueOsOa7muWKqOadoSAgLS0+XG48ZGl2XG4gIHRoeVJlc2l6YWJsZVxuICBbdGh5TWluSGVpZ2h0XT1cIjQ2XCJcbiAgW3RoeUJvdW5kc109XCJyZXNpemVCb3VuZHNcIlxuICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJlc2l6ZUhlaWdodFwiXG4gICh0aHlSZXNpemUpPVwib25SZXNpemUoJGV2ZW50KVwiXG4gICh0aHlSZXNpemVFbmQpPVwib25FbmRSZXNpemUoKVwiXG4gIGNsYXNzPVwicmVzaXplLWNvZGUtY29udGFpbmVyXCJcbiAgW25nQ2xhc3NdPVwieyBmb2N1czogaXNDb2xsYXBzZWRBbmROb25SZWFkb25seSwgcmVhZG9ubHk6IG9wdGlvbnMucmVhZE9ubHksIGFjdGl2ZTogaXNIaWdodExpZ2h0ICYmIGlzQ29sbGFwc2VkQW5kTm9uUmVhZG9ubHkgfVwiXG4+XG4gIDxuZy1jb2RlbWlycm9yXG4gICAgKm5nSWY9XCJzdGFydFJlbmRlckNvZGVtaXJyb3JcIlxuICAgICNjb2RlbWlycm9yXG4gICAgY29udGVudGVkaXRhYmxlPVwiZmFsc2VcIlxuICAgIGNsYXNzPVwibmctY29kZW1pcnJvci13cmFwcGVyXCJcbiAgICBbbmdTdHlsZV09XCJ7IG1heEhlaWdodDogbWF4SGVpZ2h0ID4gMCA/IG1heEhlaWdodCArICdweCcgOiAnYXV0bycgfVwiXG4gICAgW29wdGlvbnNdPVwib3B0aW9uc1wiXG4gICAgW25nTW9kZWxdPVwiY29kZVwiXG4gICAgW2RlbGF5UmVmcmVzaFRpbWVdPVwiMzAwXCJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJjb2RlQ2hhbmdlKCRldmVudClcIlxuICAgIChmb2N1c0NoYW5nZSk9XCJmb2N1c0NoYW5nZSgkZXZlbnQpXCJcbiAgICBbYXV0b01heEhlaWdodF09XCJtYXhIZWlnaHRcIlxuICA+XG4gIDwvbmctY29kZW1pcnJvcj5cbiAgPHRoeS1yZXNpemUtaGFuZGxlIHRoeURpcmVjdGlvbj1cImJvdHRvbVwiIGNsYXNzPVwiY29kZS1yZXNpemUtaWNvblwiICpuZ0lmPVwiaXNDb2xsYXBzZWRBbmROb25SZWFkb25seVwiPjwvdGh5LXJlc2l6ZS1oYW5kbGU+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICN0b29sYmFyPlxuICA8dGh5LWFjdGlvbnMgdGh5U2l6ZT1cInh4c1wiIHRoZVByZXZlbnREZWZhdWx0PlxuICAgIDx0aGUtdG9vbGJhci1kcm9wZG93blxuICAgICAgW21lbnVzXT1cIm1lbnVzXCJcbiAgICAgIFt0b29sYmFySXRlbV09XCJhY3RpdmVMYW5ndWFnZVwiXG4gICAgICBbZHJvcGRvd25JdGVtS2V5XT1cImFjdGl2ZUxhbmd1YWdlPy5rZXlcIlxuICAgICAgW2l0ZW1Nb3VzZWRvd25IYW5kbGVdPVwib25DaGFuZ2VMYW5ndWFnZVwiXG4gICAgPlxuICAgIDwvdGhlLXRvb2xiYXItZHJvcGRvd24+XG4gICAgPHNwYW4gY2xhc3M9XCJhdXRvLXdyYXAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBweC0yIHRleHQtc2Vjb25kYXJ5XCI+XG4gICAgICA8c3Bhbj7oh6rliqjmjaLooYw8L3NwYW4+XG4gICAgICA8dGh5LXN3aXRjaFxuICAgICAgICBjbGFzcz1cImF1dG8td3JhcC1idG4gZC1mbGV4IG1sLTFcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cIm9wdGlvbnMubGluZVdyYXBwaW5nXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2VXcmFwKCRldmVudClcIlxuICAgICAgICB0aHlTaXplPVwic21cIlxuICAgICAgPjwvdGh5LXN3aXRjaD5cbiAgICA8L3NwYW4+XG4gICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIHRoeUFjdGlvbiB0aHlBY3Rpb25JY29uPVwiY29weVwiIHRoeVRvb2x0aXA9XCLlpI3liLZcIiB0aHlUb29sdGlwUGxhY2VtZW50PVwidG9wXCIgKGNsaWNrKT1cIm9uQ29weSgkZXZlbnQpXCI+PC9hPlxuICAgIDx0aHktZGl2aWRlciBjbGFzcz1cIm1yLTIgbWwtMSBhbGlnbi1zZWxmLWNlbnRlclwiIFt0aHlWZXJ0aWNhbF09XCJ0cnVlXCIgdGh5Q29sb3I9XCJsaWdodFwiPjwvdGh5LWRpdmlkZXI+XG4gICAgPGFcbiAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OjtcIlxuICAgICAgdGh5QWN0aW9uXG4gICAgICB0aHlUeXBlPVwiZGFuZ2VyXCJcbiAgICAgIHRoeUFjdGlvbkljb249XCJ0cmFzaFwiXG4gICAgICB0aHlUb29sdGlwPVwi5Yig6ZmkXCJcbiAgICAgIHRoeVRvb2x0aXBQbGFjZW1lbnQ9XCJ0b3BcIlxuICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlKCRldmVudClcIlxuICAgID48L2E+XG4gIDwvdGh5LWFjdGlvbnM+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
260
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9jb2RlL2NvZGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvY29kZS9jb2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFFSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUtULFdBQVcsRUFDWCxTQUFTLEVBRVosTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSXBELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBVSxVQUFVLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUMzRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRW5GLE9BQU8sRUFBc0IsdUJBQXVCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvRSxPQUFPLEtBQUssVUFBVSxNQUFNLGVBQWUsQ0FBQztBQUU1QyxPQUFPLEtBQUssYUFBYSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkMsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7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QUUsS0FBSyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ2pFLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDN0IsQ0FBQzs4R0FqUVEsZ0JBQWdCO2tHQUFoQixnQkFBZ0IsbUlBaUNLLFdBQVcsaUhBR1IsbUJBQW1CLHdFQUd6QywyQkFBMkIsMkJBQVUsMkJBQTJCLG9EQzdFL0UsazlFQTZEQTs7MkZEdkJhLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDSSxjQUFjLG1CQUVQLHVCQUF1QixDQUFDLE1BQU07bVNBb0MvQyxPQUFPO3NCQUROLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUl6RCxVQUFVO3NCQURULFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBSXJFLHdCQUF3QjtzQkFEdkIsU0FBUzt1QkFBQywyQkFBMkIsRUFBRSxFQUFFLElBQUksRUFBRSwyQkFBMkIsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29ubmVjdGVkUG9zaXRpb24sIE92ZXJsYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgTmdab25lLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb2RlTWlycm9yQ29tcG9uZW50IH0gZnJvbSAnbmctY29kZW1pcnJvcic7XG5pbXBvcnQgeyBUaHlOb3RpZnlTZXJ2aWNlIH0gZnJvbSAnbmd4LXRldGh5cy9ub3RpZnknO1xuaW1wb3J0IHsgVGh5UG9wb3ZlciwgVGh5UG9wb3ZlclJlZiB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBUaHlSZXNpemVFdmVudCB9IGZyb20gJ25neC10ZXRoeXMvcmVzaXphYmxlJztcbmltcG9ydCB7IFN1YmplY3QsIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVsYXksIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVkaXRvciwgVHJhbnNmb3JtcyB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IEFuZ3VsYXJFZGl0b3IgfSBmcm9tICdzbGF0ZS1hbmd1bGFyJztcbmltcG9ydCB7IFRoZVRvb2xiYXJEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvdG9vbGJhci1kcm9wZG93bi90b29sYmFyLWRyb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDT0RFTUlSUk9SX1BBRERJTkdfVE9QLCBDT0RFX01PREVTLCBEcm9wZG93bk1vZGUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQ29kZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9jdXN0b20tdHlwZXMnO1xuaW1wb3J0IHsgRGVmYXVsdFRvb2xiYXJJdGVtLCBUaGVCYXNlRWxlbWVudENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0ICogYXMgVGhlUXVlcmllcyBmcm9tICcuLi8uLi9xdWVyaWVzJztcbmltcG9ydCB7IFRoZUNvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIFRoZVRyYW5zZm9ybXMgZnJvbSAnLi4vLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBjb3B5Tm9kZSB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IGlzTW9iaWxlTW9kZSwgaXNQcmludE1vZGUgfSBmcm9tICcuLi8uLi91dGlscy9nZXQtbW9kZSc7XG5pbXBvcnQgeyBDb2RlRWRpdG9yIH0gZnJvbSAnLi9jb2RlLmVkaXRvcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZGl2W3RoZUNvZGVdJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29kZS5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVGhlQ29kZUNvbXBvbmVudCBleHRlbmRzIFRoZUJhc2VFbGVtZW50Q29tcG9uZW50PENvZGVFbGVtZW50LCBFZGl0b3I+IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIHN0YXJ0UmVuZGVyQ29kZW1pcnJvciA9IGZhbHNlO1xuXG4gICAgZHJvcGRvd25Nb2RlID0gRHJvcGRvd25Nb2RlO1xuXG4gICAgbWF4SGVpZ2h0ID0gaXNQcmludE1vZGUodGhpcy5lZGl0b3IpID8gMCA6IDM1MCAtIENPREVNSVJST1JfUEFERElOR19UT1AgKiAyO1xuXG4gICAgbWVudXMgPSBDT0RFX01PREVTLm1hcChpdGVtID0+IHtcbiAgICAgICAgcmV0dXJuIHsga2V5OiBpdGVtLnZhbHVlLCBuYW1lOiBpdGVtLnNob3dOYW1lIH07XG4gICAgfSk7XG5cbiAgICBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBpc0hpZ2h0TGlnaHQgPSBmYWxzZTtcblxuICAgIHJlc2l6ZUhlaWdodDogbnVtYmVyID0gbnVsbDtcblxuICAgIG9wdGlvbnMgPSB7XG4gICAgICAgIG1vZGU6IHRoaXMubWVudXNbMF0ua2V5LFxuICAgICAgICBsaW5lTnVtYmVyczogZmFsc2UsXG4gICAgICAgIHJlYWRPbmx5OiBmYWxzZSxcbiAgICAgICAgYXV0b2ZvY3VzOiBmYWxzZSxcbiAgICAgICAgbGluZVdpc2VDb3B5Q3V0OiB0cnVlLFxuICAgICAgICBsaW5lV3JhcHBpbmc6IGZhbHNlLFxuICAgICAgICBjdXJzb3JCbGlua1JhdGU6IDUwMFxuICAgIH07XG5cbiAgICBhY3RpdmVMYW5ndWFnZTogRGVmYXVsdFRvb2xiYXJJdGVtID0gdGhpcy5tZW51c1swXTtcblxuICAgIHJlc2l6ZUJvdW5kcyA9IG51bGw7XG5cbiAgICB0b29sYmFyUG9wb3ZlclJlZjogVGh5UG9wb3ZlclJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZCgndG9vbGJhcicsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIHRvb2xiYXI6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBAVmlld0NoaWxkKCdjb2RlbWlycm9yJywgeyByZWFkOiBDb2RlTWlycm9yQ29tcG9uZW50LCBzdGF0aWM6IGZhbHNlIH0pXG4gICAgY29kZW1pcnJvcjogQ29kZU1pcnJvckNvbXBvbmVudDtcblxuICAgIEBWaWV3Q2hpbGQoVGhlVG9vbGJhckRyb3Bkb3duQ29tcG9uZW50LCB7IHJlYWQ6IFRoZVRvb2xiYXJEcm9wZG93bkNvbXBvbmVudCwgc3RhdGljOiBmYWxzZSB9KVxuICAgIHRvb2xiYXJEcm9wZG93bkNvbXBvbmVudDogVGhlVG9vbGJhckRyb3Bkb3duQ29tcG9uZW50O1xuXG4gICAgZ2V0IGNvZGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQuY29udGVudDtcbiAgICB9XG5cbiAgICBnZXQgaXNUb29sYmFyT3BlbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9vbGJhclBvcG92ZXJSZWYgJiYgdGhpcy50b29sYmFyUG9wb3ZlclJlZi5nZXRPdmVybGF5UmVmKCkgJiYgdGhpcy50b29sYmFyUG9wb3ZlclJlZi5nZXRPdmVybGF5UmVmKCkuaGFzQXR0YWNoZWQoKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHRoeU5vdGlmeVNlcnZpY2U6IFRoeU5vdGlmeVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IFRoZUNvbnRleHRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIHRoeVBvcG92ZXI6IFRoeVBvcG92ZXIsXG4gICAgICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5XG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGVsZW1lbnRSZWYsIGNkcik7XG4gICAgfVxuXG4gICAgb25Db250ZXh0Q2hhbmdlKCkge1xuICAgICAgICBzdXBlci5vbkNvbnRleHRDaGFuZ2UoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNDb2xsYXBzZWRBbmROb25SZWFkb25seSAmJiAhaXNNb2JpbGVNb2RlKHRoaXMuZWRpdG9yKSkge1xuICAgICAgICAgICAgdGhpcy5vcGVuVG9vbGJhcigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jbG9zZVRvb2xiYXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJlYWRPbmx5ICE9PSB0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VSZWFkb25seSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5tb2RlICE9PSB0aGlzLmVsZW1lbnQubGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZU1vZGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMubGluZVdyYXBwaW5nICE9PSB0aGlzLmVsZW1lbnQuYXV0b1dyYXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZUF1dG9XcmFwKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5yZXNpemVIZWlnaHQgIT09IHRoaXMuZWxlbWVudC5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZUhlaWdodCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIGZyb21FdmVudCh0aGlzLm5hdGl2ZUVsZW1lbnQsICdtb3VzZWRvd24nKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzQmxvY2tPcGVyYXRpb24gPVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnRoZS1jb2RlLWJsb2NrLW9wZXJhdGlvbicpPy5jb250YWlucyhldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0NvZGVtaXJyb3IgPSB0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLm5nLWNvZGVtaXJyb3InKT8uY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0hpZ2h0TGlnaHQgPSAhaXNDb2RlbWlycm9yICYmICFpc0Jsb2NrT3BlcmF0aW9uO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgndGhlLWNvZGUtY29udGFpbmVyJyk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgLy8gZGVsYXkgMjBtc1xuICAgICAgICAgICAgLy8gY2NvZGVtaXJyb3IgaXMgdG9vIHNsb3dcbiAgICAgICAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSwgZGVsYXkoMjApKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyQ29kZW1pcnJvcigpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBlZGl0IG1vZGUgY2FuIG5vdCBkZWxheVxuICAgICAgICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyQ29kZW1pcnJvcigpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUNvZGVtaXJyb3JGb2N1cygpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzaXplQm91bmRzID0ge1xuICAgICAgICAgICAgICAgICAgICBuYXRpdmVFbGVtZW50OiB0aGlzLmNvbnRleHRTZXJ2aWNlLmdldEVkaXRhYmxlRWxlbWVudCgpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb3BlblRvb2xiYXIoKSB7XG4gICAgICAgIGlmICghVGhlUXVlcmllcy5pc0dsb2JhbENvbGxhcHNlZCh0aGlzLmVkaXRvcikgfHwgdGhpcy5pc1Rvb2xiYXJPcGVuKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50b29sYmFyUG9wb3ZlclJlZiA9IHRoaXMudGh5UG9wb3Zlci5vcGVuKHRoaXMudG9vbGJhciwge1xuICAgICAgICAgICAgb3JpZ2luOiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIHZpZXdDb250YWluZXJSZWY6IHRoaXMudmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFsndGhlLXBsdWdpbi10b29sYmFyLXBvcG92ZXInXSxcbiAgICAgICAgICAgIG1pbldpZHRoOiAwLFxuICAgICAgICAgICAgbWFudWFsQ2xvc3VyZTogdHJ1ZSxcbiAgICAgICAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcbiAgICAgICAgICAgIGluc2lkZUNsb3NhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIG91dHNpZGVDbG9zYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnRvb2xiYXJQb3BvdmVyUmVmPy5nZXRPdmVybGF5UmVmKCkudXBkYXRlUG9zaXRpb25TdHJhdGVneSh0aGlzLmNyZWF0ZVBvc2l0aW9uU3RyYXRlZ3koKSk7XG4gICAgfVxuXG4gICAgY2xvc2VUb29sYmFyKCkge1xuICAgICAgICBpZiAodGhpcy5pc1Rvb2xiYXJPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLnRvb2xiYXJQb3BvdmVyUmVmLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjcmVhdGVQb3NpdGlvblN0cmF0ZWd5KCkge1xuICAgICAgICBjb25zdCB0b3BMZWZ0UG9zaXRpb246IENvbm5lY3RlZFBvc2l0aW9uID0ge1xuICAgICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgICBvdmVybGF5WTogJ2JvdHRvbScsXG4gICAgICAgICAgICBvZmZzZXRYOiAwLFxuICAgICAgICAgICAgb2Zmc2V0WTogLTRcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMub3ZlcmxheVxuICAgICAgICAgICAgLnBvc2l0aW9uKClcbiAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KVxuICAgICAgICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoZmFsc2UpXG4gICAgICAgICAgICAud2l0aEdyb3dBZnRlck9wZW4oZmFsc2UpXG4gICAgICAgICAgICAud2l0aFB1c2goZmFsc2UpXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhbdG9wTGVmdFBvc2l0aW9uXSk7XG4gICAgfVxuXG4gICAgcmVuZGVyQ29kZW1pcnJvcigpIHtcbiAgICAgICAgdGhpcy5zdGFydFJlbmRlckNvZGVtaXJyb3IgPSB0cnVlO1xuICAgICAgICB0aGlzLnVzZVJlYWRvbmx5KCk7XG4gICAgICAgIHRoaXMudXNlTW9kZSgpO1xuICAgICAgICB0aGlzLnVzZUF1dG9XcmFwKCk7XG4gICAgICAgIHRoaXMudXNlSGVpZ2h0KCk7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplQ29kZW1pcnJvckZvY3VzKCkge1xuICAgICAgICBpZiAodGhpcy5pc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5KSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5ICYmIHRoaXMuY29kZW1pcnJvciAmJiB0aGlzLmNvZGVtaXJyb3IuZWRpdG9yICYmICF0aGlzLmNvZGVtaXJyb3IuZWRpdG9yLmhhc0ZvY3VzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgQW5ndWxhckVkaXRvci5ibHVyKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2RlbWlycm9yLmVkaXRvci5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvZGVtaXJyb3IuZWRpdG9yLnJlZnJlc2goKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAyMDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29kZUNoYW5nZSgkZXZlbnQpIHtcbiAgICAgICAgdGhpcy5pc0hpZ2h0TGlnaHQgPSBmYWxzZTtcbiAgICAgICAgQ29kZUVkaXRvci5zZXRDb2RlQXR0cmlidXRlKHRoaXMuZWRpdG9yLCB0aGlzLmVsZW1lbnQsIHsgY29udGVudDogJGV2ZW50IH0pO1xuICAgIH1cblxuICAgIG9uRGVsZXRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIFRoZVRyYW5zZm9ybXMuZGVsZXRlRWxlbWVudCh0aGlzLmVkaXRvciwgdGhpcy5lbGVtZW50KTtcbiAgICB9XG5cbiAgICBvbkNvcHkoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29weU5vZGUodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCwgdGhpcy50aHlOb3RpZnlTZXJ2aWNlLCB0aGlzLmNvZGVtaXJyb3IuZWRpdG9yKTtcbiAgICB9XG5cbiAgICBmb2N1c0NoYW5nZShjb2RlTWlycm9yRm9jdXNlZDogYm9vbGVhbikge1xuICAgICAgICBpZiAoY29kZU1pcnJvckZvY3VzZWQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNIaWdodExpZ2h0ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNoYW5nZUxhbmd1YWdlID0gaXRlbSA9PiB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHsgLi4udGhpcy5vcHRpb25zLCBtb2RlOiBpdGVtLmtleSB9O1xuICAgICAgICB0aGlzLmFjdGl2ZUxhbmd1YWdlID0gaXRlbTtcbiAgICAgICAgQ29kZUVkaXRvci5zZXRDb2RlQXR0cmlidXRlKHRoaXMuZWRpdG9yLCB0aGlzLmVsZW1lbnQsIHsgbGFuZ3VhZ2U6IGl0ZW0ua2V5IH0pO1xuICAgIH07XG5cbiAgICB1c2VNb2RlKCkge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLnRoaXMub3B0aW9ucywgbW9kZTogdGhpcy5lbGVtZW50Lmxhbmd1YWdlIH07XG4gICAgICAgIGNvbnN0IG1lbnVJdGVtID0gdGhpcy5tZW51cy5maW5kKGkgPT4gaS5rZXkgPT09IHRoaXMuZWxlbWVudC5sYW5ndWFnZSk7XG4gICAgICAgIGlmIChtZW51SXRlbSkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVMYW5ndWFnZSA9IG1lbnVJdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXNlQXV0b1dyYXAoKSB7XG4gICAgICAgIGNvbnN0IGlzUHJpbnQgPSBpc1ByaW50TW9kZSh0aGlzLmVkaXRvcik7XG4gICAgICAgIGNvbnN0IGxpbmVXcmFwcGluZyA9IGlzUHJpbnQgPyB0cnVlIDogdGhpcy5lbGVtZW50LmF1dG9XcmFwIHx8IGZhbHNlO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLnRoaXMub3B0aW9ucywgbGluZVdyYXBwaW5nIH07XG4gICAgfVxuXG4gICAgdXNlSGVpZ2h0KCkge1xuICAgICAgICBpZiAodGhpcy5lbGVtZW50LmhlaWdodCAmJiAhaXNQcmludE1vZGUodGhpcy5lZGl0b3IpKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZUhlaWdodCA9IHRoaXMuZWxlbWVudC5oZWlnaHQ7XG4gICAgICAgICAgICB0aGlzLm1heEhlaWdodCA9IHRoaXMuZWxlbWVudC5oZWlnaHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1c2VSZWFkb25seSgpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0geyAuLi50aGlzLm9wdGlvbnMsIHJlYWRPbmx5OiB0aGlzLnJlYWRvbmx5LCBjdXJzb3JCbGlua1JhdGU6IHRoaXMucmVhZG9ubHkgPyAtMSA6IDUwMCB9O1xuICAgIH1cblxuICAgIG9uUmVzaXplKHsgaGVpZ2h0IH06IFRoeVJlc2l6ZUV2ZW50KSB7XG4gICAgICAgIHRoaXMucmVzaXplSGVpZ2h0ID0gaGVpZ2h0O1xuICAgICAgICB0aGlzLm1heEhlaWdodCA9IGhlaWdodDtcbiAgICB9XG5cbiAgICBvbkVuZFJlc2l6ZSgpIHtcbiAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QodGhpcy5lZGl0b3IsIEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCkpO1xuICAgICAgICBDb2RlRWRpdG9yLnNldENvZGVBdHRyaWJ1dGUodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCwgeyBoZWlnaHQ6IHRoaXMucmVzaXplSGVpZ2h0IH0pO1xuICAgIH1cblxuICAgIG9uQ2hhbmdlV3JhcCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmlzSGlnaHRMaWdodCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLnRoaXMub3B0aW9ucywgbGluZVdyYXBwaW5nOiB2YWx1ZSB8fCBmYWxzZSB9O1xuICAgICAgICBDb2RlRWRpdG9yLnNldENvZGVBdHRyaWJ1dGUodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCwgeyBhdXRvV3JhcDogdmFsdWUgPyB2YWx1ZSA6IG51bGwgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiPHNsYXRlLWNoaWxkcmVuIFtjaGlsZHJlbl09XCJjaGlsZHJlblwiIFtjb250ZXh0XT1cImNoaWxkcmVuQ29udGV4dFwiIFt2aWV3Q29udGV4dF09XCJ2aWV3Q29udGV4dFwiPjwvc2xhdGUtY2hpbGRyZW4+XG5cbjwhLS0g5Y+q6K+75qih5byP5LiLQ29kZU1pcnJvci1zaXplcumrmOW6puavlOe8lui+keaooeW8j+S4i+WkmjJweO+8jOiuvue9rnRoeU1pbkhlaWdodOS4ujQ2cHjpmLLmraLmi5bmi73liLDmnIDlsI/pq5jluqbml7blj6ror7vmqKHlvI/kuIvlh7rnjrDmu5rliqjmnaEgIC0tPlxuPGRpdlxuICB0aHlSZXNpemFibGVcbiAgW3RoeU1pbkhlaWdodF09XCI0NlwiXG4gIFt0aHlCb3VuZHNdPVwicmVzaXplQm91bmRzXCJcbiAgW3N0eWxlLmhlaWdodC5weF09XCJyZXNpemVIZWlnaHRcIlxuICAodGh5UmVzaXplKT1cIm9uUmVzaXplKCRldmVudClcIlxuICAodGh5UmVzaXplRW5kKT1cIm9uRW5kUmVzaXplKClcIlxuICBjbGFzcz1cInJlc2l6ZS1jb2RlLWNvbnRhaW5lclwiXG4gIFtuZ0NsYXNzXT1cInsgZm9jdXM6IGlzQ29sbGFwc2VkQW5kTm9uUmVhZG9ubHksIHJlYWRvbmx5OiBvcHRpb25zLnJlYWRPbmx5LCBhY3RpdmU6IGlzSGlnaHRMaWdodCAmJiBpc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5IH1cIlxuPlxuICA8bmctY29kZW1pcnJvclxuICAgICpuZ0lmPVwic3RhcnRSZW5kZXJDb2RlbWlycm9yXCJcbiAgICAjY29kZW1pcnJvclxuICAgIGNvbnRlbnRlZGl0YWJsZT1cImZhbHNlXCJcbiAgICBjbGFzcz1cIm5nLWNvZGVtaXJyb3Itd3JhcHBlclwiXG4gICAgW25nU3R5bGVdPVwieyBtYXhIZWlnaHQ6IG1heEhlaWdodCA+IDAgPyBtYXhIZWlnaHQgKyAncHgnIDogJ2F1dG8nIH1cIlxuICAgIFtvcHRpb25zXT1cIm9wdGlvbnNcIlxuICAgIFtuZ01vZGVsXT1cImNvZGVcIlxuICAgIFtkZWxheVJlZnJlc2hUaW1lXT1cIjMwMFwiXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwiY29kZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAoZm9jdXNDaGFuZ2UpPVwiZm9jdXNDaGFuZ2UoJGV2ZW50KVwiXG4gICAgW2F1dG9NYXhIZWlnaHRdPVwibWF4SGVpZ2h0XCJcbiAgPlxuICA8L25nLWNvZGVtaXJyb3I+XG4gIDx0aHktcmVzaXplLWhhbmRsZSB0aHlEaXJlY3Rpb249XCJib3R0b21cIiBjbGFzcz1cImNvZGUtcmVzaXplLWljb25cIiAqbmdJZj1cImlzQ29sbGFwc2VkQW5kTm9uUmVhZG9ubHlcIj48L3RoeS1yZXNpemUtaGFuZGxlPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjdG9vbGJhcj5cbiAgPHRoeS1hY3Rpb25zIHRoeVNpemU9XCJ4eHNcIiB0aGVQcmV2ZW50RGVmYXVsdD5cbiAgICA8dGhlLXRvb2xiYXItZHJvcGRvd25cbiAgICAgIFttZW51c109XCJtZW51c1wiXG4gICAgICBbdG9vbGJhckl0ZW1dPVwiYWN0aXZlTGFuZ3VhZ2VcIlxuICAgICAgW2Ryb3Bkb3duSXRlbUtleV09XCJhY3RpdmVMYW5ndWFnZT8ua2V5XCJcbiAgICAgIFtpdGVtTW91c2Vkb3duSGFuZGxlXT1cIm9uQ2hhbmdlTGFuZ3VhZ2VcIlxuICAgID5cbiAgICA8L3RoZS10b29sYmFyLWRyb3Bkb3duPlxuICAgIDxzcGFuIGNsYXNzPVwiYXV0by13cmFwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcHgtMiB0ZXh0LXNlY29uZGFyeVwiPlxuICAgICAgPHNwYW4+6Ieq5Yqo5o2i6KGMPC9zcGFuPlxuICAgICAgPHRoeS1zd2l0Y2hcbiAgICAgICAgY2xhc3M9XCJhdXRvLXdyYXAtYnRuIGQtZmxleCBtbC0xXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJvcHRpb25zLmxpbmVXcmFwcGluZ1wiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlV3JhcCgkZXZlbnQpXCJcbiAgICAgICAgdGh5U2l6ZT1cInNtXCJcbiAgICAgID48L3RoeS1zd2l0Y2g+XG4gICAgPC9zcGFuPlxuICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiB0aHlBY3Rpb24gdGh5QWN0aW9uSWNvbj1cImNvcHlcIiB0aHlUb29sdGlwPVwi5aSN5Yi2XCIgdGh5VG9vbHRpcFBsYWNlbWVudD1cInRvcFwiIChjbGljayk9XCJvbkNvcHkoJGV2ZW50KVwiPjwvYT5cbiAgICA8dGh5LWRpdmlkZXIgY2xhc3M9XCJtci0yIG1sLTEgYWxpZ24tc2VsZi1jZW50ZXJcIiBbdGh5VmVydGljYWxdPVwidHJ1ZVwiIHRoeUNvbG9yPVwibGlnaHRcIj48L3RoeS1kaXZpZGVyPlxuICAgIDxhXG4gICAgICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgICAgIHRoeUFjdGlvblxuICAgICAgdGh5VHlwZT1cImRhbmdlclwiXG4gICAgICB0aHlBY3Rpb25JY29uPVwidHJhc2hcIlxuICAgICAgdGh5VG9vbHRpcD1cIuWIoOmZpFwiXG4gICAgICB0aHlUb29sdGlwUGxhY2VtZW50PVwidG9wXCJcbiAgICAgIChjbGljayk9XCJvbkRlbGV0ZSgkZXZlbnQpXCJcbiAgICA+PC9hPlxuICA8L3RoeS1hY3Rpb25zPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -99,6 +99,8 @@ export class TableStore {
|
|
|
99
99
|
this.areaSelectRowAndColumn(rangeCells);
|
|
100
100
|
}
|
|
101
101
|
else {
|
|
102
|
+
const lastColIndex = pos.tableEntry[0].children[index].children.length - 1;
|
|
103
|
+
this.setAnchorCellPath(pos.tableEntry[1].concat([index, lastColIndex]));
|
|
102
104
|
this.setSelectedCells(rangeCells, pos);
|
|
103
105
|
this.focusCell(pos.tableEntry[1].concat([index, 0]));
|
|
104
106
|
}
|
|
@@ -111,6 +113,8 @@ export class TableStore {
|
|
|
111
113
|
this.areaSelectRowAndColumn(rangeCells);
|
|
112
114
|
}
|
|
113
115
|
else {
|
|
116
|
+
const lastRowIndex = pos.tableEntry[0].children.length - 1;
|
|
117
|
+
this.setAnchorCellPath(pos.tableEntry[1].concat([lastRowIndex, index]));
|
|
114
118
|
this.setSelectedCells(rangeCells, pos);
|
|
115
119
|
this.focusCell(pos.tableEntry[1].concat([0, index]));
|
|
116
120
|
}
|
|
@@ -122,7 +126,7 @@ export class TableStore {
|
|
|
122
126
|
const anchorCellPath = pos.tableEntry[1].concat([lastCell.row, lastCell.col]);
|
|
123
127
|
this.isSelectedTable = true;
|
|
124
128
|
this.setSelectedCells(cells, pos);
|
|
125
|
-
this.
|
|
129
|
+
this.setAnchorCellPath(anchorCellPath);
|
|
126
130
|
this.focusCell(pos.tableEntry[1].concat([0, 0]));
|
|
127
131
|
}
|
|
128
132
|
// 拖选开始 || 记录聚焦点
|
|
@@ -130,7 +134,7 @@ export class TableStore {
|
|
|
130
134
|
const node = AngularEditor.toSlateNode(editor, cell);
|
|
131
135
|
const path = AngularEditor.findPath(editor, node);
|
|
132
136
|
this.isPrepareSelecting = true;
|
|
133
|
-
this.
|
|
137
|
+
this.setAnchorCellPath(path);
|
|
134
138
|
this.focusCellPath = path;
|
|
135
139
|
this.focusCellElement = cell;
|
|
136
140
|
this.lastFocusCellPath = path;
|
|
@@ -168,7 +172,7 @@ export class TableStore {
|
|
|
168
172
|
selectCell(cell, editor) {
|
|
169
173
|
const node = AngularEditor.toSlateNode(editor, cell);
|
|
170
174
|
const path = AngularEditor.findPath(editor, node);
|
|
171
|
-
this.
|
|
175
|
+
this.setAnchorCellPath(path);
|
|
172
176
|
this.focusCellPath = path;
|
|
173
177
|
this.focusCellElement = cell;
|
|
174
178
|
const [row, col] = path.slice(-2);
|
|
@@ -364,7 +368,7 @@ export class TableStore {
|
|
|
364
368
|
this.isPrepareSelecting = true;
|
|
365
369
|
this.lastFocusCellPath = path;
|
|
366
370
|
if (!this?.anchorCellPath) {
|
|
367
|
-
this.
|
|
371
|
+
this.setAnchorCellPath(path);
|
|
368
372
|
}
|
|
369
373
|
if (!this?.focusCellPath) {
|
|
370
374
|
this.focusCellPath = path;
|
|
@@ -408,16 +412,16 @@ export class TableStore {
|
|
|
408
412
|
const endCol = sortRows[sortRows.length - 1];
|
|
409
413
|
const anchorCellPath = pos.tableEntry[1].concat([endCol, endRow]);
|
|
410
414
|
const focusCellPath = pos.tableEntry[1].concat([startRow, startCol]);
|
|
411
|
-
this.
|
|
415
|
+
this.setAnchorCellPath(anchorCellPath);
|
|
412
416
|
this.focusCell(focusCellPath);
|
|
413
417
|
this.selectCells(this.editor);
|
|
414
418
|
}
|
|
415
419
|
/**
|
|
416
|
-
*
|
|
420
|
+
* 设置指定 anchorCellPath
|
|
417
421
|
* @param path 路径
|
|
418
422
|
*/
|
|
419
|
-
|
|
420
|
-
if (
|
|
423
|
+
setAnchorCellPath(path) {
|
|
424
|
+
if (path) {
|
|
421
425
|
this.anchorCellPath = path;
|
|
422
426
|
}
|
|
423
427
|
}
|
|
@@ -434,4 +438,4 @@ export class TableStore {
|
|
|
434
438
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TableStore, decorators: [{
|
|
435
439
|
type: Injectable
|
|
436
440
|
}], ctorParameters: function () { return []; } });
|
|
437
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy90YWJsZS90YWJsZS5zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQWlCLFdBQVcsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNyRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsd0JBQXdCLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuSSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDekQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUduRCxNQUFNLE9BQU8sVUFBVTtJQStDbkIsSUFBSSxjQUFjO1FBQ2QsT0FB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QUM7OEdBM2ZRLFVBQVU7a0hBQVYsVUFBVTs7MkZBQVYsVUFBVTtrQkFEdEIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgbWVyZ2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNraXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFZGl0b3IsIE5vZGUsIFBhdGgsIFRyYW5zZm9ybXMgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBDb2xvclR5cGUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvY29sb3Itc2VsZWN0JztcbmltcG9ydCB7IFRhYmxlQ2VsbEVsZW1lbnQgfSBmcm9tICcuLi8uLi9jdXN0b20tdHlwZXMnO1xuaW1wb3J0IHsgZ3JvdXBCeSwgbWFwLCB1bmlxIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9kYXNoJztcbmltcG9ydCB7IFRhYmxlRWRpdG9yIH0gZnJvbSAnLi90YWJsZS5lZGl0b3InO1xuaW1wb3J0IHsgQ2VsbFBvc2l0aW9uLCBUYWJsZVNlbGVjdENlbGxEaXJlY3Rpb24gfSBmcm9tICcuL3RhYmxlLnR5cGVzJztcbmltcG9ydCB7IFRhYmxlUG9zaXRpb24sIGdldE5leHRDZWxsIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBnZXRDZWxsUG9zaXRpb25zRnJvbVJhbmdlLCBnZXRTZWxlY3RlZENlbGxQb3NpdGlvbnMsIGlzU2VsZWN0ZWRBbGxDZWxsLCB1bmlxdWVDZWxsUG9zaXRpb24gfSBmcm9tICcuL3V0aWxzL2NlbGwtcG9zaXRpb24nO1xuaW1wb3J0IHsgY3JlYXRlVGFibGVQb3NpdGlvbiB9IGZyb20gJy4vdXRpbHMvY3JlYXRlLXRhYmxlLXBvc2l0aW9uJztcbmltcG9ydCB7IGdldE1pbkFuZE1heENlbGxJbmRleCB9IGZyb20gJy4vdXRpbHMvZ2V0LW1pbi1tYXgtY2VsbC1pbmRleCc7XG5pbXBvcnQgeyBmb2N1c0NlbGwgfSBmcm9tICcuL3V0aWxzL2dldC1zZWxlY3QtY2VsbC1ub2RlJztcbmltcG9ydCB7IGdldENlbGxQb3NpdGlvbnNCZWZvcmVNZXJnZSB9IGZyb20gJy4vdXRpbHMvbWVyZ2UtY2VsbCc7XG5pbXBvcnQgeyBnZXRUYWJsZVBhdGggfSBmcm9tICcuL3V0aWxzL3RhYmxlLWVudHJ5JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRhYmxlU3RvcmUge1xuICAgIHByaXZhdGUgc2VsZWN0ZWRDZWxscyQ6IEJlaGF2aW9yU3ViamVjdDxUYWJsZUNlbGxFbGVtZW50W10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUYWJsZUNlbGxFbGVtZW50W10+KFtdKTtcblxuICAgIHByaXZhdGUgZGFuZ2Vyb3VzQ2VsbHMkOiBCZWhhdmlvclN1YmplY3Q8Q2VsbFBvc2l0aW9uW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChbXSk7XG5cbiAgICBwcml2YXRlIGNlbGxzQ2hhbmdlT2JqZWN0JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBwcml2YXRlIHRhYmxlQ2hhbmdlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBzZWxlY3RlZENvbHVtbnNJbmRleDogbnVtYmVyW10gPSBbXTtcblxuICAgIHNlbGVjdGVkUm93c0luZGV4OiBudW1iZXJbXSA9IFtdO1xuXG4gICAgZGFuZ2Vyb3VzQ29sdW1uc0luZGV4OiBudW1iZXJbXSA9IFtdO1xuXG4gICAgZGFuZ2Vyb3VzUm93c0luZGV4OiBudW1iZXJbXSA9IFtdO1xuXG4gICAgaXNTZWxlY3RlZFRhYmxlOiBib29sZWFuO1xuXG4gICAgZWRpdG9yOiBFZGl0b3I7XG5cbiAgICBwdWJsaWMgaXNGdWxsc2NyZWVuOiBib29sZWFuO1xuXG4gICAgcHVibGljIGFuY2hvckNlbGxQYXRoOiBudW1iZXJbXTtcblxuICAgIHB1YmxpYyBmb2N1c0NlbGxQYXRoOiBudW1iZXJbXTtcblxuICAgIHB1YmxpYyBwcmVGb2N1c0NlbGxQYXRoOiBudW1iZXJbXTtcblxuICAgIHB1YmxpYyBsYXN0Rm9jdXNDZWxsUGF0aDogbnVtYmVyW107XG5cbiAgICBwdWJsaWMgZm9jdXNDZWxsRWxlbWVudDogSFRNTFRhYmxlQ2VsbEVsZW1lbnQ7XG5cbiAgICBwdWJsaWMgaXNQcmVwYXJlU2VsZWN0aW5nID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgaXNDZWxsU2VsZWN0aW5nID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgaXNSaWdodENsaWNraW5nID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgaXNGb2N1c2VkSW5wdXQgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBwb2ludGVyU2VsZWN0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgYXJlYVNlbGVjdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcHVibGljIG1heENvbDogbnVtYmVyO1xuXG4gICAgZ2V0IGRhbmdlcm91c0NlbGxzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYW5nZXJvdXNDZWxscyQuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICBnZXQgc2VsZWN0ZWRDZWxscygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRDZWxscyQuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgICBpbml0RWRpdG9yKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIHRoaXMuZWRpdG9yID0gZWRpdG9yO1xuICAgIH1cblxuICAgIGdldFNlbGVjdGVkQ2VsbFBvc2l0aW9ucygpOiBDZWxsUG9zaXRpb25bXSB7XG4gICAgICAgIHJldHVybiBnZXRTZWxlY3RlZENlbGxQb3NpdGlvbnModGhpcy5lZGl0b3IsIHRoaXMuc2VsZWN0ZWRDZWxscyQuZ2V0VmFsdWUoKSk7XG4gICAgfVxuXG4gICAgcHVibGlzaERhbmdlcm91c0NlbGxzKHZhbHVlOiBDZWxsUG9zaXRpb25bXSkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYW5nZXJvdXNDZWxscyQubmV4dCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgc2V0U2VsZWN0ZWRDb2x1bW5zQW5kUm93SW5kZXgoKSB7XG4gICAgICAgIGlmICghdGhpcy5lZGl0b3I/LnNlbGVjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcG9zID0gY3JlYXRlVGFibGVQb3NpdGlvbih0aGlzLmVkaXRvcik7XG4gICAgICAgIGlmICghcG9zPy50YWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWVyZ2VCZWZvcmVDZWxscyA9IFtdO1xuICAgICAgICBjb25zdCBzZWxlY3RlZENlbGxQb3NpdGlvbnMgPSB0aGlzLmdldFNlbGVjdGVkQ2VsbFBvc2l0aW9ucygpO1xuICAgICAgICBzZWxlY3RlZENlbGxQb3NpdGlvbnMuZm9yRWFjaCgoeyByb3csIGNvbCB9KSA9PiB7XG4gICAgICAgICAgICAvLyDorqHnrpflkIjlubbljZXlhYPmoLzmlbDmja7ml7bvvIzopoHmjInlkIjlubbliY3nmoTmlbDmja7lpITnkIZcbiAgICAgICAgICAgIG1lcmdlQmVmb3JlQ2VsbHMucHVzaCguLi5nZXRDZWxsUG9zaXRpb25zQmVmb3JlTWVyZ2UodGhpcy5lZGl0b3IsIHsgcm93LCBjb2wgfSkpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgY2VsbHMgPSB1bmlxdWVDZWxsUG9zaXRpb24obWVyZ2VCZWZvcmVDZWxscywgc2VsZWN0ZWRDZWxsUG9zaXRpb25zKTtcbiAgICAgICAgY29uc3Qgcm93R3JvdXAgPSBncm91cEJ5KGNlbGxzLCAoeyByb3cgfSkgPT4gcm93KTtcbiAgICAgICAgY29uc3QgY29sR3JvdXAgPSBncm91cEJ5KGNlbGxzLCAoeyBjb2wgfSkgPT4gY29sKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3NJbmRleCA9IFtdO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ29sdW1uc0luZGV4ID0gW107XG4gICAgICAgIGZvciAoY29uc3Qgcm93IGluIHJvd0dyb3VwKSB7XG4gICAgICAgICAgICBpZiAocm93R3JvdXBbcm93XS5sZW5ndGggPT09IHBvcy5nZXRXaWR0aCgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3NJbmRleC5wdXNoKHBhcnNlSW50KHJvdywgMTApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IGNvbCBpbiBjb2xHcm91cCkge1xuICAgICAgICAgICAgaWYgKGNvbEdyb3VwW2NvbF0ubGVuZ3RoID09PSBwb3MuZ2V0SGVpZ2h0KCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29sdW1uc0luZGV4LnB1c2gocGFyc2VJbnQoY29sLCAxMCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzSW5kZXggPSB1bmlxKHRoaXMuc2VsZWN0ZWRSb3dzSW5kZXgpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ29sdW1uc0luZGV4ID0gdW5pcSh0aGlzLnNlbGVjdGVkQ29sdW1uc0luZGV4KTtcbiAgICAgICAgaWYgKGlzU2VsZWN0ZWRBbGxDZWxsKHRoaXMuZWRpdG9yLCBzZWxlY3RlZENlbGxQb3NpdGlvbnMpKSB7XG4gICAgICAgICAgICB0aGlzLmlzU2VsZWN0ZWRUYWJsZSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmlzU2VsZWN0ZWRUYWJsZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0U2VsZWN0ZWRDZWxscyhjZWxsczogQ2VsbFBvc2l0aW9uW10sIHBvczogVGFibGVQb3NpdGlvbikge1xuICAgICAgICBjb25zdCB1bmlxdWVDZWxscyA9IHRoaXMucG9pbnRlclNlbGVjdGlvbiA/IHVuaXF1ZUNlbGxQb3NpdGlvbihjZWxscywgdGhpcy5nZXRTZWxlY3RlZENlbGxQb3NpdGlvbnMoKSkgOiBjZWxscztcbiAgICAgICAgY29uc3QgY2VsbEVsZW1lbnRzID0gdW5pcXVlQ2VsbHMubWFwKGNlbGwgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHBvcy5maW5kQ2VsbEJ5UGF0aChjZWxsKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDZWxscyQubmV4dChjZWxsRWxlbWVudHMpO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGVkQ29sdW1uc0FuZFJvd0luZGV4KCk7XG4gICAgfVxuXG4gICAgc2VsZWN0Um93KGVkaXRvcjogRWRpdG9yLCBpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IHBvcyA9IGNyZWF0ZVRhYmxlUG9zaXRpb24oZWRpdG9yKTtcbiAgICAgICAgY29uc3QgcmFuZ2VDZWxscyA9IGdldENlbGxQb3NpdGlvbnNGcm9tUmFuZ2UoaW5kZXgsIDAsIGluZGV4ICsgMSwgcG9zLmdldFdpZHRoKCkpO1xuXG4gICAgICAgIHRoaXMuY2xlYXJMYXN0Rm9jdXNQYXRoKCk7XG4gICAgICAgIGlmICh0aGlzLmFyZWFTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMuYXJlYVNlbGVjdFJvd0FuZENvbHVtbihyYW5nZUNlbGxzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRDZWxscyhyYW5nZUNlbGxzLCBwb3MpO1xuICAgICAgICAgICAgdGhpcy5mb2N1c0NlbGwocG9zLnRhYmxlRW50cnlbMV0uY29uY2F0KFtpbmRleCwgMF0pKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNlbGVjdENvbHVtbihlZGl0b3I6IEVkaXRvciwgaW5kZXg6IG51bWJlcikge1xuICAgICAgICBjb25zdCBwb3MgPSBjcmVhdGVUYWJsZVBvc2l0aW9uKGVkaXRvcik7XG4gICAgICAgIGNvbnN0IHJhbmdlQ2VsbHMgPSBnZXRDZWxsUG9zaXRpb25zRnJvbVJhbmdlKDAsIGluZGV4LCBwb3MuZ2V0SGVpZ2h0KCksIGluZGV4ICsgMSk7XG5cbiAgICAgICAgdGhpcy5jbGVhckxhc3RGb2N1c1BhdGgoKTtcbiAgICAgICAgaWYgKHRoaXMuYXJlYVNlbGVjdGlvbikge1xuICAgICAgICAgICAgdGhpcy5hcmVhU2VsZWN0Um93QW5kQ29sdW1uKHJhbmdlQ2VsbHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZENlbGxzKHJhbmdlQ2VsbHMsIHBvcyk7XG4gICAgICAgICAgICB0aGlzLmZvY3VzQ2VsbChwb3MudGFibGVFbnRyeVsxXS5jb25jYXQoWzAsIGluZGV4XSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VsZWN0VGFibGUoZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgY29uc3QgcG9zID0gY3JlYXRlVGFibGVQb3NpdGlvbihlZGl0b3IpO1xuICAgICAgICBjb25zdCBjZWxscyA9IGdldENlbGxQb3NpdGlvbnNGcm9tUmFuZ2UoMCwgMCwgcG9zLmdldEhlaWdodCgpLCBwb3MuZ2V0V2lkdGgoKSk7XG4gICAgICAgIGNvbnN0IGxhc3RDZWxsID0gY2VsbHNbY2VsbHMubGVuZ3RoIC0gMV07XG4gICAgICAgIGNvbnN0IGFuY2hvckNlbGxQYXRoID0gcG9zLnRhYmxlRW50cnlbMV0uY29uY2F0KFtsYXN0Q2VsbC5yb3csIGxhc3RDZWxsLmNvbF0pO1xuXG4gICAgICAgIHRoaXMuaXNTZWxlY3RlZFRhYmxlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZENlbGxzKGNlbGxzLCBwb3MpO1xuICAgICAgICB0aGlzLnNldEFyZWFBbmNob3JDZWxsUGF0aChhbmNob3JDZWxsUGF0aCk7XG4gICAgICAgIHRoaXMuZm9jdXNDZWxsKHBvcy50YWJsZUVudHJ5WzFdLmNvbmNhdChbMCwgMF0pKTtcbiAgICB9XG5cbiAgICAvLyDmi5bpgInlvIDlp4sgfHwg6K6w5b2V6IGa54Sm54K5XG4gICAgc2VsZWN0Q2VsbFN0YXJ0KGNlbGw6IEhUTUxUYWJsZUNlbGxFbGVtZW50LCBlZGl0b3I6IEVkaXRvcikge1xuICAgICAgICBjb25zdCBub2RlID0gQW5ndWxhckVkaXRvci50b1NsYXRlTm9kZShlZGl0b3IsIGNlbGwpO1xuICAgICAgICBjb25zdCBwYXRoID0gQW5ndWxhckVkaXRvci5maW5kUGF0aChlZGl0b3IsIG5vZGUpO1xuICAgICAgICB0aGlzLmlzUHJlcGFyZVNlbGVjdGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuYW5jaG9yQ2VsbFBhdGggPSBwYXRoO1xuICAgICAgICB0aGlzLmZvY3VzQ2VsbFBhdGggPSBwYXRoO1xuICAgICAgICB0aGlzLmZvY3VzQ2VsbEVsZW1lbnQgPSBjZWxsO1xuICAgICAgICB0aGlzLmxhc3RGb2N1c0NlbGxQYXRoID0gcGF0aDtcbiAgICAgICAgaWYgKCF0aGlzLnByZUZvY3VzQ2VsbFBhdGgpIHtcbiAgICAgICAgICAgIHRoaXMucHJlRm9jdXNDZWxsUGF0aCA9IHRoaXMuYW5jaG9yQ2VsbFBhdGg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyDmi5bpgIlcbiAgICBzZWxlY3RDZWxscyhlZGl0b3I6IEVkaXRvcikge1xuICAgICAgICBjb25zdCBwb3MgPSBjcmVhdGVUYWJsZVBvc2l0aW9uKGVkaXRvcik7XG4gICAgICAgIGNvbnN0IGFuY2hvclBhdGggPSB0aGlzLmFuY2hvckNlbGxQYXRoLnNsaWNlKC0yKTtcbiAgICAgICAgY29uc3QgZm9jdXNQYXRoID0gdGhpcy5mb2N1c0NlbGxQYXRoLnNsaWNlKC0yKTtcblxuICAgICAgICBjb25zdCByb3dzID0gW2FuY2hvclBhdGhbMF0sIGZvY3VzUGF0aFswXV0uc29ydCgobSwgbikgPT4gbSAtIG4pO1xuICAgICAgICBjb25zdCBjb2x1bW5zID0gW2FuY2hvclBhdGhbMV0sIGZvY3VzUGF0aFsxXV0uc29ydCgobSwgbikgPT4gbSAtIG4pO1xuXG4gICAgICAgIGNvbnN0IHsgY29sc3BhbjogYW5jaG9yQ29sU3BhbkNvdW50LCByb3dzcGFuOiBhbmNob3JSb3dTcGFuQ291bnQgfSA9IEVkaXRvci5ub2RlKFxuICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgdGhpcy5hbmNob3JDZWxsUGF0aFxuICAgICAgICApWzBdIGFzIFRhYmxlQ2VsbEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHsgY29sc3BhbjogZm9jdXNDb2xTcGFuQ291bnQsIHJvd3NwYW46IGZvY3VzUm93U3BhbkNvdW50IH0gPSBFZGl0b3Iubm9kZShlZGl0b3IsIHRoaXMuZm9jdXNDZWxsUGF0aClbMF0gYXMgVGFibGVDZWxsRWxlbWVudDtcblxuICAgICAgICBjb25zdCBhbmNob3JSb3cgPSBhbmNob3JQYXRoWzBdICsgKGFuY2hvclJvd1NwYW5Db3VudCB8fCAxKSAtIDE7XG4gICAgICAgIGNvbnN0IGZvY3VzUm93ID0gZm9jdXNQYXRoWzBdICsgKGZvY3VzUm93U3BhbkNvdW50IHx8IDEpIC0gMTtcbiAgICAgICAgY29uc3QgYW5jaG9yQ29sID0gYW5jaG9yUGF0aFsxXSArIChhbmNob3JDb2xTcGFuQ291bnQgfHwgMSkgLSAxO1xuICAgICAgICBjb25zdCBmb2N1c0NvbCA9IGZvY3VzUGF0aFsxXSArIChmb2N1c0NvbFNwYW5Db3VudCB8fCAxKSAtIDE7XG5cbiAgICAgICAgbGV0IGluaXRNYXhDb2wgPSBNYXRoLm1heChhbmNob3JDb2wsIGZvY3VzQ29sKTtcbiAgICAgICAgbGV0IGluaXRNYXhSb3cgPSBNYXRoLm1heChhbmNob3JSb3csIGZvY3VzUm93KTtcbiAgICAgICAgY29uc3QgeyBtaW5Sb3csIG1heFJvdywgbWluQ29sLCBtYXhDb2wgfSA9IGdldE1pbkFuZE1heENlbGxJbmRleChcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yLFxuICAgICAgICAgICAgdGhpcy5nZXRTZWxlY3RlZENlbGxQb3NpdGlvbnMoKSxcbiAgICAgICAgICAgIGluaXRNYXhSb3csXG4gICAgICAgICAgICBpbml0TWF4Q29sLFxuICAgICAgICAgICAgcm93c1swXSxcbiAgICAgICAgICAgIGNvbHVtbnNbMF0sXG4gICAgICAgICAgICBwb3MudGFibGVcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgY2VsbHMgPSBnZXRDZWxsUG9zaXRpb25zRnJvbVJhbmdlKG1pblJvdywgbWluQ29sLCBtYXhSb3cgKyAxLCBtYXhDb2wgKyAxKTtcbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZENlbGxzKGNlbGxzLCBwb3MpO1xuICAgIH1cblxuICAgIHNlbGVjdEZpcnN0Q2VsbCgpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDZWxsUG9zaXRpb25zID0gdGhpcy5nZXRTZWxlY3RlZENlbGxQb3NpdGlvbnMoKTtcbiAgICAgICAgY29uc3QgeyByb3csIGNvbCB9ID0gc2VsZWN0ZWRDZWxsUG9zaXRpb25zWzBdO1xuICAgICAgICBjb25zdCB0YWJsZVBhdGggPSBnZXRUYWJsZVBhdGgodGhpcy5lZGl0b3IpO1xuICAgICAgICBjb25zdCBwYXRoID0gRWRpdG9yLnN0YXJ0KHRoaXMuZWRpdG9yLCBbLi4udGFibGVQYXRoLCByb3csIGNvbF0pO1xuICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdCh0aGlzLmVkaXRvciwgcGF0aCk7XG4gICAgfVxuXG4gICAgLy8g6YCJ5oup5Y2V5YWD5qC8XG4gICAgc2VsZWN0Q2VsbChjZWxsOiBIVE1MVGFibGVDZWxsRWxlbWVudCwgZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IEFuZ3VsYXJFZGl0b3IudG9TbGF0ZU5vZGUoZWRpdG9yLCBjZWxsKSBhcyBUYWJsZUNlbGxFbGVtZW50O1xuICAgICAgICBjb25zdCBwYXRoID0gQW5ndWxhckVkaXRvci5maW5kUGF0aChlZGl0b3IsIG5vZGUpO1xuICAgICAgICB0aGlzLmFuY2hvckNlbGxQYXRoID0gcGF0aDtcbiAgICAgICAgdGhpcy5mb2N1c0NlbGxQYXRoID0gcGF0aDtcbiAgICAgICAgdGhpcy5mb2N1c0NlbGxFbGVtZW50ID0gY2VsbDtcbiAgICAgICAgY29uc3QgW3JvdywgY29sXSA9IHBhdGguc2xpY2UoLTIpO1xuICAgICAgICBjb25zdCBwb3MgPSBjcmVhdGVUYWJsZVBvc2l0aW9uKGVkaXRvcik7XG4gICAgICAgIGNvbnN0IGNlbGxzOiBDZWxsUG9zaXRpb25bXSA9IFt7IHJvdywgY29sIH1dO1xuICAgICAgICBjb25zdCBzZWxlY3RlZENlbGxQb3NpdGlvbnMgPSB0aGlzLmdldFNlbGVjdGVkQ2VsbFBvc2l0aW9ucygpO1xuICAgICAgICBpZiAodGhpcy5wb2ludGVyU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBjZWxscy5wdXNoKC4uLnNlbGVjdGVkQ2VsbFBvc2l0aW9ucyk7XG4gICAgICAgICAgICAvLyDlpITnkIbljZXlhYPmoLzpgInkuK3ml7bvvIzlpITnkIbkuLrpgInkuK3lpJrljZXlhYPmoLxcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkQ2VsbHMgPSBnZXRDZWxsUG9zaXRpb25zQmVmb3JlTWVyZ2UodGhpcy5lZGl0b3IsIHsgcm93LCBjb2wgfSk7XG4gICAgICAgICAgICBjZWxscy5wdXNoKC4uLnNlbGVjdGVkQ2VsbHMpO1xuICAgICAgICAgICAgLy8g5bey6IGa54Sm55qE5Y2V5YWD5qC85Zyo5aSa6YCJ5qih5byP5LiL6YCJ5Lit77yI5pqC5a2Y5LiK5qyh6IGa54Sm55qE5Y2V5YWD5qC85pWw5o2u77yJXG4gICAgICAgICAgICBjb25zdCBmb2N1c0NlbGwgPSB0aGlzLmxhc3RGb2N1c0NlbGxQYXRoPy5zbGljZSgtMik7XG4gICAgICAgICAgICBpZiAoZm9jdXNDZWxsKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9jdXNDZWxscyA9IGdldENlbGxQb3NpdGlvbnNCZWZvcmVNZXJnZSh0aGlzLmVkaXRvciwgeyByb3c6IGZvY3VzQ2VsbFswXSwgY29sOiBmb2N1c0NlbGxbMV0gfSk7XG4gICAgICAgICAgICAgICAgY2VsbHMucHVzaCguLi5mb2N1c0NlbGxzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFNlbGVjdGVkQ2VsbHMoY2VsbHMsIHBvcyk7XG4gICAgfVxuXG4gICAgc2VsZWN0Q2VsbE9uZ29pbmcoY2VsbDogSFRNTFRhYmxlQ2VsbEVsZW1lbnQsIGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIGNvbnN0IHBvcyA9IGNyZWF0ZVRhYmxlUG9zaXRpb24oZWRpdG9yKTtcbiAgICAgICAgaWYgKEFuZ3VsYXJFZGl0b3IuaXNSZWFkb25seShlZGl0b3IpIHx8ICFlZGl0b3Iuc2VsZWN0aW9uIHx8ICFwb3M/LnRhYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGlzQ2hhbmdlZDogYm9vbGVhbjtcbiAgICAgICAgaWYgKGNlbGwpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBBbmd1bGFyRWRpdG9yLnRvU2xhdGVOb2RlKGVkaXRvciwgY2VsbCk7XG4gICAgICAgICAgICBjb25zdCBwYXRoID0gQW5ndWxhckVkaXRvci5maW5kUGF0aChlZGl0b3IsIG5vZGUpO1xuICAgICAgICAgICAgaXNDaGFuZ2VkID0gIXRoaXMuZm9jdXNDZWxsUGF0aCB8fCAhUGF0aC5lcXVhbHModGhpcy5mb2N1c0NlbGxQYXRoLCBwYXRoKTtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNDZWxsUGF0aCA9IHBhdGg7XG4gICAgICAgICAgICB0aGlzLmZvY3VzQ2VsbEVsZW1lbnQgPSBjZWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRDZWxsUG9zaXRpb25zID0gdGhpcy5nZXRTZWxlY3RlZENlbGxQb3NpdGlvbnMoKTtcbiAgICAgICAgICAgIGlzQ2hhbmdlZCA9ICF0aGlzLmZvY3VzQ2VsbFBhdGggfHwgKFBhdGguZXF1YWxzKHRoaXMuZm9jdXNDZWxsUGF0aCwgdGhpcy5hbmNob3JDZWxsUGF0aCkgJiYgc2VsZWN0ZWRDZWxsUG9zaXRpb25zLmxlbmd0aCA9PT0gMCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNQcmVwYXJlU2VsZWN0aW5nICYmIGlzQ2hhbmdlZCkge1xuICAgICAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KHRoaXMucHJlRm9jdXNDZWxsUGF0aCkgIT09IEpTT04uc3RyaW5naWZ5KHRoaXMuZm9jdXNDZWxsUGF0aCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzQ2VsbFNlbGVjdGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RDZWxscyhlZGl0b3IpO1xuICAgICAgICAgICAgICAgIHRoaXMucHJlRm9jdXNDZWxsUGF0aCA9IHRoaXMuZm9jdXNDZWxsUGF0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsZWFyU2VsZWN0ZWRDZWxscygpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnNJbmRleCA9IFtdO1xuICAgICAgICB0aGlzLnNlbGVjdGVkUm93c0luZGV4ID0gW107XG4gICAgICAgIHRoaXMuaXNTZWxlY3RlZFRhYmxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNDZWxsU2VsZWN0aW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNSaWdodENsaWNraW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNGb2N1c2VkSW5wdXQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENlbGxzJC5uZXh0KFtdKTtcbiAgICB9XG5cbiAgICBjbGVhckxhc3RGb2N1c1BhdGgoKSB7XG4gICAgICAgIHRoaXMubGFzdEZvY3VzQ2VsbFBhdGggPSBudWxsO1xuICAgIH1cblxuICAgIHNlbGVjdGVkQ2VsbHNDaGFuZ2UoKTogT2JzZXJ2YWJsZTxUYWJsZUNlbGxFbGVtZW50W10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRDZWxscyQuYXNPYnNlcnZhYmxlKCkucGlwZShza2lwKDEpKTtcbiAgICB9XG5cbiAgICBjZWxsc1Bvc2l0aW9uQ2hhbmdlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jZWxsc0NoYW5nZU9iamVjdCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgY2hhbmdlQ2VsbHMoKSB7XG4gICAgICAgIHRoaXMuY2VsbHNDaGFuZ2VPYmplY3QkLm5leHQoKTtcbiAgICB9XG5cbiAgICBlbWl0VGFibGVDaGFuZ2UoKSB7XG4gICAgICAgIHRoaXMudGFibGVDaGFuZ2UkLm5leHQoKTtcbiAgICB9XG5cbiAgICB0YWJsZUNoYW5nZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFibGVDaGFuZ2UkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHNlbGVjdENlbGxFbmQoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzQ2VsbFNlbGVjdGluZykge1xuICAgICAgICAgICAgdGhpcy5mb2N1c0NlbGwodGhpcy5mb2N1c0NlbGxQYXRoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzUHJlcGFyZVNlbGVjdGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnByZUZvY3VzQ2VsbFBhdGggPSBudWxsO1xuICAgIH1cblxuICAgIGRhbmdlcm91c0NlbGxzQ2hhbmdlKCk6IE9ic2VydmFibGU8Q2VsbFBvc2l0aW9uW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGFuZ2Vyb3VzQ2VsbHMkLmFzT2JzZXJ2YWJsZSgpLnBpcGUoc2tpcCgxKSk7XG4gICAgfVxuXG4gICAgc2V0RGFuZ2Vyb3VzQ2VsbHMoKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkQ2VsbFBvc2l0aW9ucyA9IHRoaXMuZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKCk7XG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzUm93c0luZGV4ID0gdGhpcy5zZWxlY3RlZFJvd3NJbmRleDtcbiAgICAgICAgdGhpcy5kYW5nZXJvdXNDb2x1bW5zSW5kZXggPSB0aGlzLnNlbGVjdGVkQ29sdW1uc0luZGV4O1xuICAgICAgICB0aGlzLmRhbmdlcm91c0NlbGxzJC5uZXh0KHNlbGVjdGVkQ2VsbFBvc2l0aW9ucyk7XG4gICAgfVxuXG4gICAgY2xlYXJEYW5nZXJvdXNDZWxscygpIHtcbiAgICAgICAgdGhpcy5kYW5nZXJvdXNSb3dzSW5kZXggPSBbXTtcbiAgICAgICAgdGhpcy5kYW5nZXJvdXNDb2x1bW5zSW5kZXggPSBbXTtcbiAgICAgICAgdGhpcy5kYW5nZXJvdXNDZWxscyQubmV4dChbXSk7XG4gICAgICAgIGNvbnN0IHBvcyA9IGNyZWF0ZVRhYmxlUG9zaXRpb24odGhpcy5lZGl0b3IpO1xuICAgICAgICBpZiAocG9zLnRhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmlzU2VsZWN0ZWRUYWJsZSA9IHRoaXMuc2VsZWN0ZWRSb3dzSW5kZXgubGVuZ3RoID09PSBwb3MuZ2V0SGVpZ2h0KCkgJiYgdGhpcy5zZWxlY3RlZENvbHVtbnNJbmRleC5sZW5ndGggPT09IHBvcy5nZXRXaWR0aCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGFuZ2Vyb3VzT3JTZWxlY3RlZENlbGxzQ2hhbmdlKCkge1xuICAgICAgICByZXR1cm4gbWVyZ2UodGhpcy5kYW5nZXJvdXNDZWxscyQuYXNPYnNlcnZhYmxlKCkucGlwZShza2lwKDEpKSwgdGhpcy5zZWxlY3RlZENlbGxzJC5hc09ic2VydmFibGUoKS5waXBlKHNraXAoMSkpKTtcbiAgICB9XG5cbiAgICBzZXREYW5nZXJvdXNSb3dzKCkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZENlbGxQb3NpdGlvbnMgPSB0aGlzLmdldFNlbGVjdGVkQ2VsbFBvc2l0aW9ucygpO1xuICAgICAgICBjb25zdCBjZWxscyA9IHNlbGVjdGVkQ2VsbFBvc2l0aW9ucztcbiAgICAgICAgY29uc3Qgcm93cyA9IHVuaXEobWFwKGNlbGxzLCAncm93JykpLnZhbHVlT2YoKSBhcyBudW1iZXJbXTtcbiAgICAgICAgY29uc3QgcG9zID0gY3JlYXRlVGFibGVQb3NpdGlvbih0aGlzLmVkaXRvcik7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuXG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzUm93c0luZGV4ID0gcm93cztcbiAgICAgICAgdGhpcy5pc1NlbGVjdGVkVGFibGUgPSByb3dzLmxlbmd0aCA9PT0gcG9zLmdldEhlaWdodCgpO1xuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGVkVGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuZGFuZ2Vyb3VzQ29sdW1uc0luZGV4ID0gWy4uLkFycmF5KHBvcy5nZXRXaWR0aCgpKV0ubWFwKCh2LCBpKSA9PiBpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3Qgcm93SW5kZXggb2Ygcm93cykge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3MuZ2V0V2lkdGgoKTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgICAgICAgICByb3c6IHJvd0luZGV4LFxuICAgICAgICAgICAgICAgICAgICBjb2w6IGlcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRhbmdlcm91c0NlbGxzJC5uZXh0KHJlc3VsdCk7XG4gICAgfVxuXG4gICAgc2V0RGFuZ2Vyb3VzQ29sdW1ucygpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDZWxsUG9zaXRpb25zID0gdGhpcy5nZXRTZWxlY3RlZENlbGxQb3NpdGlvbnMoKTtcbiAgICAgICAgY29uc3QgY2VsbHMgPSBzZWxlY3RlZENlbGxQb3NpdGlvbnM7XG4gICAgICAgIGNvbnN0IGNvbHMgPSB1bmlxKG1hcChjZWxscywgJ2NvbCcpKS52YWx1ZU9mKCkgYXMgbnVtYmVyW107XG4gICAgICAgIGNvbnN0IHBvcyA9IGNyZWF0ZVRhYmxlUG9zaXRpb24odGhpcy5lZGl0b3IpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcblxuICAgICAgICB0aGlzLmRhbmdlcm91c0NvbHVtbnNJbmRleCA9IGNvbHM7XG4gICAgICAgIHRoaXMuaXNTZWxlY3RlZFRhYmxlID0gY29scy5sZW5ndGggPT09IHBvcy5nZXRXaWR0aCgpO1xuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGVkVGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuZGFuZ2Vyb3VzUm93c0luZGV4ID0gWy4uLkFycmF5KHBvcy5nZXRIZWlnaHQoKSldLm1hcCgoXywgaSkgPT4gaSk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGNvbEluZGV4IG9mIGNvbHMpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zLmdldEhlaWdodCgpOyBpKyspIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIHJvdzogaSxcbiAgICAgICAgICAgICAgICAgICAgY29sOiBjb2xJbmRleFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzQ2VsbHMkLm5leHQocmVzdWx0KTtcbiAgICB9XG5cbiAgICBzZXREYW5nZXJvdXNUYWJsZSgpIHtcbiAgICAgICAgdGhpcy5pc1NlbGVjdGVkVGFibGUgPSB0cnVlO1xuICAgICAgICBjb25zdCBwb3MgPSBjcmVhdGVUYWJsZVBvc2l0aW9uKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgY29uc3QgY2VsbHMgPSBnZXRDZWxsUG9zaXRpb25zRnJvbVJhbmdlKDAsIDAsIHBvcy5nZXRIZWlnaHQoKSwgcG9zLmdldFdpZHRoKCkpO1xuICAgICAgICB0aGlzLmRhbmdlcm91c1Jvd3NJbmRleCA9IFsuLi5BcnJheShwb3MuZ2V0SGVpZ2h0KCkpXS5tYXAoKF8sIGkpID0+IGkpO1xuICAgICAgICB0aGlzLmRhbmdlcm91c0NvbHVtbnNJbmRleCA9IFsuLi5BcnJheShwb3MuZ2V0V2lkdGgoKSldLm1hcCgoXywgaSkgPT4gaSk7XG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzQ2VsbHMkLm5leHQoY2VsbHMpO1xuICAgIH1cblxuICAgIHNldFNlbGVjdGVkQ2VsbHNCYWNrZ3JvdW5kQ29sb3IoYmFja2dyb3VuZENvbG9yOiBDb2xvclR5cGUpIHtcbiAgICAgICAgY29uc3QgY2VsbHMgPSB0aGlzLnNlbGVjdGVkQ2VsbHMkLmdldFZhbHVlKCk7XG4gICAgICAgIEVkaXRvci53aXRob3V0Tm9ybWFsaXppbmcodGhpcy5lZGl0b3IsICgpID0+IHtcbiAgICAgICAgICAgIGNlbGxzLm1hcChjZWxsID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjZWxsUGF0aCA9IEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgodGhpcy5lZGl0b3IsIGNlbGwpO1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZXModGhpcy5lZGl0b3IsIHsgYmFja2dyb3VuZENvbG9yIH0sIHsgYXQ6IGNlbGxQYXRoIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNsZWFyU2VsZWN0ZWRDZWxsc0NvbnRlbnQoKSB7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gdGhpcy5nZXRTZWxlY3RlZENlbGxQb3NpdGlvbnMoKTtcbiAgICAgICAgY29uc3QgdGFibGVQb3NpdGlvbiA9IGNyZWF0ZVRhYmxlUG9zaXRpb24odGhpcy5lZGl0b3IpO1xuXG4gICAgICAgIGlmICh0YWJsZVBvc2l0aW9uLmlzSW5UYWJsZSgpKSB7XG4gICAgICAgICAgICBFZGl0b3Iud2l0aG91dE5vcm1hbGl6aW5nKHRoaXMuZWRpdG9yLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB7IHJvdywgY29sIH0gb2YgY2VsbHMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2VsbFBhdGggPSBbLi4udGFibGVQb3NpdGlvbi50YWJsZUVudHJ5WzFdLCByb3csIGNvbF07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBOb2RlLmdldCh0aGlzLmVkaXRvciwgY2VsbFBhdGgpIGFzIFRhYmxlQ2VsbEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIFRhYmxlRWRpdG9yLmNsZWFyQ2VsbCh0aGlzLmVkaXRvciwgW25vZGUsIGNlbGxQYXRoXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdCh0aGlzLmVkaXRvciwgRWRpdG9yLnN0YXJ0KHRoaXMuZWRpdG9yLCB0YWJsZVBvc2l0aW9uLmNlbGxFbnRyeVsxXSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6IGa54Sm5Y2V5YWD5qC85bm26K6+572u6IGa54Sm55u45YWz6Lev5b6E5Y+K5YWD57SgXG4gICAgICovXG4gICAgZm9jdXNDZWxsKHBhdGg6IG51bWJlcltdKSB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSBOb2RlLmdldCh0aGlzLmVkaXRvciwgcGF0aCkgYXMgVGFibGVDZWxsRWxlbWVudDtcbiAgICAgICAgY29uc3QgY2VsbEhUTUxFbGVtZW50ID0gQW5ndWxhckVkaXRvci50b0RPTU5vZGUodGhpcy5lZGl0b3IsIG5vZGUpIGFzIEhUTUxUYWJsZUNlbGxFbGVtZW50O1xuICAgICAgICB0aGlzLnByZUZvY3VzQ2VsbFBhdGggPSB0aGlzLmZvY3VzQ2VsbFBhdGg7XG4gICAgICAgIHRoaXMuZm9jdXNDZWxsUGF0aCA9IHBhdGg7XG4gICAgICAgIHRoaXMuZm9jdXNDZWxsRWxlbWVudCA9IGNlbGxIVE1MRWxlbWVudDtcbiAgICAgICAgZm9jdXNDZWxsKHRoaXMuZWRpdG9yLCBwYXRoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDljLrln5/pgInmi6nlvIDlp4tcbiAgICAgKiBAcGFyYW0gZWRpdG9yIOe8lui+keWZqOWvueixoVxuICAgICAqIEBwYXJhbSBjZWxsIOWNleWFg+agvOWFg+e0oFxuICAgICAqL1xuICAgIGFyZWFTZWxlY3Rpb25TdGFydChjZWxsOiBIVE1MVGFibGVDZWxsRWxlbWVudCwgZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IEFuZ3VsYXJFZGl0b3IudG9TbGF0ZU5vZGUoZWRpdG9yLCBjZWxsKTtcbiAgICAgICAgY29uc3QgcGF0aCA9IEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgoZWRpdG9yLCBub2RlKTtcbiAgICAgICAgdGhpcy5pc1ByZXBhcmVTZWxlY3RpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmxhc3RGb2N1c0NlbGxQYXRoID0gcGF0aDtcbiAgICAgICAgaWYgKCF0aGlzPy5hbmNob3JDZWxsUGF0aCkge1xuICAgICAgICAgICAgdGhpcy5hbmNob3JDZWxsUGF0aCA9IHBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzPy5mb2N1c0NlbGxQYXRoKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzQ2VsbFBhdGggPSBwYXRoO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5wcmVGb2N1c0NlbGxQYXRoKSB7XG4gICAgICAgICAgICB0aGlzLnByZUZvY3VzQ2VsbFBhdGggPSB0aGlzLmFuY2hvckNlbGxQYXRoO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6K6+572u5Yy65Z+f6YCJ5oup55qE5Y2V5YWD5qC8XG4gICAgICogQHBhcmFtIGNlbGxFbGVtZW50IOWNleWFg+agvOWFg+e0oFxuICAgICAqL1xuICAgIHNldEFyZWFTZWxlY3Rpb25DZWxscyhjZWxsRWxlbWVudDogVGFibGVDZWxsRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBpZiAoQW5ndWxhckVkaXRvci5pc1JlYWRvbmx5KHRoaXMuZWRpdG9yKSB8fCAhdGhpcy5lZGl0b3Iuc2VsZWN0aW9uIHx8ICF0aGlzLmlzUHJlcGFyZVNlbGVjdGluZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY3VycmVudENlbGxQYXRoID0gQW5ndWxhckVkaXRvci5maW5kUGF0aCh0aGlzLmVkaXRvciwgY2VsbEVsZW1lbnQpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZENlbGxQb3NpdGlvbnMgPSB0aGlzLmdldFNlbGVjdGVkQ2VsbFBvc2l0aW9ucygpO1xuICAgICAgICBjb25zdCBzZWxlY3RFcXVhbCA9IFBhdGguZXF1YWxzKGN1cnJlbnRDZWxsUGF0aCwgdGhpcy5hbmNob3JDZWxsUGF0aCk7XG5cbiAgICAgICAgLy8g5LiN5Y+v5Lul5Yy65Z+f6YCJ5oup5Y2V5LiA5Y2V5YWD5qC8XG4gICAgICAgIGlmIChzZWxlY3RlZENlbGxQb3NpdGlvbnMubGVuZ3RoIDw9IDEgJiYgc2VsZWN0RXF1YWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzQ2VsbFNlbGVjdGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuZm9jdXNDZWxsKGN1cnJlbnRDZWxsUGF0aCk7XG4gICAgICAgIHRoaXMuc2VsZWN0Q2VsbHModGhpcy5lZGl0b3IpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOWkhOeQhuWMuuWfn+mAieaLqeWQr+eUqOaXtumAieaLqeaVtOihjC/mlbTliJdcbiAgICAgKiBAcGFyYW0gY2VsbHMg6YCJ5oup55qE5Y2V5YWD5qC8XG4gICAgICovXG4gICAgYXJlYVNlbGVjdFJvd0FuZENvbHVtbihjZWxsczogQ2VsbFBvc2l0aW9uW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcG9zID0gY3JlYXRlVGFibGVQb3NpdGlvbih0aGlzLmVkaXRvcik7XG4gICAgICAgIGNvbnN0IFtyb3csIGNvbF0gPSB0aGlzLmZvY3VzQ2VsbFBhdGguc2xpY2UoLTIpO1xuICAgICAgICBjb25zdCBzZWxlY3RDZWxscyA9IFt7IHJvdywgY29sIH0sIC4uLmNlbGxzXTtcbiAgICAgICAgY29uc3Qgc29ydFJvd3MgPSBzZWxlY3RDZWxscy5tYXAoaXRlbSA9PiBpdGVtLnJvdykuc29ydCgobSwgbikgPT4gbSAtIG4pO1xuICAgICAgICBjb25zdCBzb3J0Q29scyA9IHNlbGVjdENlbGxzLm1hcChpdGVtID0+IGl0ZW0uY29sKS5zb3J0KChtLCBuKSA9PiBtIC0gbik7XG4gICAgICAgIGNvbnN0IHN0YXJ0Um93ID0gc29ydFJvd3NbMF07XG4gICAgICAgIGNvbnN0IHN0YXJ0Q29sID0gc29ydENvbHNbMF07XG4gICAgICAgIGNvbnN0IGVuZFJvdyA9IHNvcnRDb2xzW3NvcnRDb2xzLmxlbmd0aCAtIDFdO1xuICAgICAgICBjb25zdCBlbmRDb2wgPSBzb3J0Um93c1tzb3J0Um93cy5sZW5ndGggLSAxXTtcbiAgICAgICAgY29uc3QgYW5jaG9yQ2VsbFBhdGggPSBwb3MudGFibGVFbnRyeVsxXS5jb25jYXQoW2VuZENvbCwgZW5kUm93XSk7XG4gICAgICAgIGNvbnN0IGZvY3VzQ2VsbFBhdGggPSBwb3MudGFibGVFbnRyeVsxXS5jb25jYXQoW3N0YXJ0Um93LCBzdGFydENvbF0pO1xuXG4gICAgICAgIHRoaXMuc2V0QXJlYUFuY2hvckNlbGxQYXRoKGFuY2hvckNlbGxQYXRoKTtcbiAgICAgICAgdGhpcy5mb2N1c0NlbGwoZm9jdXNDZWxsUGF0aCk7XG4gICAgICAgIHRoaXMuc2VsZWN0Q2VsbHModGhpcy5lZGl0b3IpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiuvue9ruWMuuWfn+mAieaLqeinpuWPkeaXtueahOaMh+WumiBhbmNob3JDZWxsUGF0aFxuICAgICAqIEBwYXJhbSBwYXRoIOi3r+W+hFxuICAgICAqL1xuICAgIHNldEFyZWFBbmNob3JDZWxsUGF0aChwYXRoOiBudW1iZXJbXSkge1xuICAgICAgICBpZiAodGhpcy5hcmVhU2VsZWN0aW9uICYmIHBhdGgpIHtcbiAgICAgICAgICAgIHRoaXMuYW5jaG9yQ2VsbFBhdGggPSBwYXRoO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VsZWN0Q2VsbEluRGlyZWN0aW9uKGRpcmVjdGlvbjogVGFibGVTZWxlY3RDZWxsRGlyZWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IFtyb3csIGNvbF0gPSB0aGlzLmZvY3VzQ2VsbFBhdGguc2xpY2UoLTIpO1xuICAgICAgICBjb25zdCBuZXh0Q2VsbCA9IGdldE5leHRDZWxsKHRoaXMuZWRpdG9yLCBkaXJlY3Rpb24sIFtyb3csIGNvbF0pO1xuICAgICAgICBpZiAobmV4dENlbGwpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0QXJlYVNlbGVjdGlvbkNlbGxzKG5leHRDZWxsKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
441
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy90YWJsZS90YWJsZS5zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQWlCLFdBQVcsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNyRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsd0JBQXdCLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuSSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDekQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUduRCxNQUFNLE9BQU8sVUFBVTtJQStDbkIsSUFBSSxjQUFjO1FBQ2QsT0FB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Q0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsaUJBQWlCLENBQUMsSUFBYztRQUM1QixJQUFJLElBQUksRUFBRTtZQUNOLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1NBQzlCO0lBQ0wsQ0FBQztJQUVELHFCQUFxQixDQUFDLFNBQW1DO1FBQ3JELE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRCxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNqRSxJQUFJLFFBQVEsRUFBRTtZQUNWLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN4QztJQUNMLENBQUM7OEdBL2ZRLFVBQVU7a0hBQVYsVUFBVTs7MkZBQVYsVUFBVTtrQkFEdEIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgbWVyZ2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNraXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFZGl0b3IsIE5vZGUsIFBhdGgsIFRyYW5zZm9ybXMgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBDb2xvclR5cGUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvY29sb3Itc2VsZWN0JztcbmltcG9ydCB7IFRhYmxlQ2VsbEVsZW1lbnQgfSBmcm9tICcuLi8uLi9jdXN0b20tdHlwZXMnO1xuaW1wb3J0IHsgZ3JvdXBCeSwgbWFwLCB1bmlxIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9kYXNoJztcbmltcG9ydCB7IFRhYmxlRWRpdG9yIH0gZnJvbSAnLi90YWJsZS5lZGl0b3InO1xuaW1wb3J0IHsgQ2VsbFBvc2l0aW9uLCBUYWJsZVNlbGVjdENlbGxEaXJlY3Rpb24gfSBmcm9tICcuL3RhYmxlLnR5cGVzJztcbmltcG9ydCB7IFRhYmxlUG9zaXRpb24sIGdldE5leHRDZWxsIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBnZXRDZWxsUG9zaXRpb25zRnJvbVJhbmdlLCBnZXRTZWxlY3RlZENlbGxQb3NpdGlvbnMsIGlzU2VsZWN0ZWRBbGxDZWxsLCB1bmlxdWVDZWxsUG9zaXRpb24gfSBmcm9tICcuL3V0aWxzL2NlbGwtcG9zaXRpb24nO1xuaW1wb3J0IHsgY3JlYXRlVGFibGVQb3NpdGlvbiB9IGZyb20gJy4vdXRpbHMvY3JlYXRlLXRhYmxlLXBvc2l0aW9uJztcbmltcG9ydCB7IGdldE1pbkFuZE1heENlbGxJbmRleCB9IGZyb20gJy4vdXRpbHMvZ2V0LW1pbi1tYXgtY2VsbC1pbmRleCc7XG5pbXBvcnQgeyBmb2N1c0NlbGwgfSBmcm9tICcuL3V0aWxzL2dldC1zZWxlY3QtY2VsbC1ub2RlJztcbmltcG9ydCB7IGdldENlbGxQb3NpdGlvbnNCZWZvcmVNZXJnZSB9IGZyb20gJy4vdXRpbHMvbWVyZ2UtY2VsbCc7XG5pbXBvcnQgeyBnZXRUYWJsZVBhdGggfSBmcm9tICcuL3V0aWxzL3RhYmxlLWVudHJ5JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRhYmxlU3RvcmUge1xuICAgIHByaXZhdGUgc2VsZWN0ZWRDZWxscyQ6IEJlaGF2aW9yU3ViamVjdDxUYWJsZUNlbGxFbGVtZW50W10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUYWJsZUNlbGxFbGVtZW50W10+KFtdKTtcblxuICAgIHByaXZhdGUgZGFuZ2Vyb3VzQ2VsbHMkOiBCZWhhdmlvclN1YmplY3Q8Q2VsbFBvc2l0aW9uW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChbXSk7XG5cbiAgICBwcml2YXRlIGNlbGxzQ2hhbmdlT2JqZWN0JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBwcml2YXRlIHRhYmxlQ2hhbmdlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBzZWxlY3RlZENvbHVtbnNJbmRleDogbnVtYmVyW10gPSBbXTtcblxuICAgIHNlbGVjdGVkUm93c0luZGV4OiBudW1iZXJbXSA9IFtdO1xuXG4gICAgZGFuZ2Vyb3VzQ29sdW1uc0luZGV4OiBudW1iZXJbXSA9IFtdO1xuXG4gICAgZGFuZ2Vyb3VzUm93c0luZGV4OiBudW1iZXJbXSA9IFtdO1xuXG4gICAgaXNTZWxlY3RlZFRhYmxlOiBib29sZWFuO1xuXG4gICAgZWRpdG9yOiBFZGl0b3I7XG5cbiAgICBwdWJsaWMgaXNGdWxsc2NyZWVuOiBib29sZWFuO1xuXG4gICAgcHVibGljIGFuY2hvckNlbGxQYXRoOiBudW1iZXJbXTtcblxuICAgIHB1YmxpYyBmb2N1c0NlbGxQYXRoOiBudW1iZXJbXTtcblxuICAgIHB1YmxpYyBwcmVGb2N1c0NlbGxQYXRoOiBudW1iZXJbXTtcblxuICAgIHB1YmxpYyBsYXN0Rm9jdXNDZWxsUGF0aDogbnVtYmVyW107XG5cbiAgICBwdWJsaWMgZm9jdXNDZWxsRWxlbWVudDogSFRNTFRhYmxlQ2VsbEVsZW1lbnQ7XG5cbiAgICBwdWJsaWMgaXNQcmVwYXJlU2VsZWN0aW5nID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgaXNDZWxsU2VsZWN0aW5nID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgaXNSaWdodENsaWNraW5nID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgaXNGb2N1c2VkSW5wdXQgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBwb2ludGVyU2VsZWN0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgYXJlYVNlbGVjdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcHVibGljIG1heENvbDogbnVtYmVyO1xuXG4gICAgZ2V0IGRhbmdlcm91c0NlbGxzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYW5nZXJvdXNDZWxscyQuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICBnZXQgc2VsZWN0ZWRDZWxscygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRDZWxscyQuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgICBpbml0RWRpdG9yKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIHRoaXMuZWRpdG9yID0gZWRpdG9yO1xuICAgIH1cblxuICAgIGdldFNlbGVjdGVkQ2VsbFBvc2l0aW9ucygpOiBDZWxsUG9zaXRpb25bXSB7XG4gICAgICAgIHJldHVybiBnZXRTZWxlY3RlZENlbGxQb3NpdGlvbnModGhpcy5lZGl0b3IsIHRoaXMuc2VsZWN0ZWRDZWxscyQuZ2V0VmFsdWUoKSk7XG4gICAgfVxuXG4gICAgcHVibGlzaERhbmdlcm91c0NlbGxzKHZhbHVlOiBDZWxsUG9zaXRpb25bXSkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYW5nZXJvdXNDZWxscyQubmV4dCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgc2V0U2VsZWN0ZWRDb2x1bW5zQW5kUm93SW5kZXgoKSB7XG4gICAgICAgIGlmICghdGhpcy5lZGl0b3I/LnNlbGVjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcG9zID0gY3JlYXRlVGFibGVQb3NpdGlvbih0aGlzLmVkaXRvcik7XG4gICAgICAgIGlmICghcG9zPy50YWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWVyZ2VCZWZvcmVDZWxscyA9IFtdO1xuICAgICAgICBjb25zdCBzZWxlY3RlZENlbGxQb3NpdGlvbnMgPSB0aGlzLmdldFNlbGVjdGVkQ2VsbFBvc2l0aW9ucygpO1xuICAgICAgICBzZWxlY3RlZENlbGxQb3NpdGlvbnMuZm9yRWFjaCgoeyByb3csIGNvbCB9KSA9PiB7XG4gICAgICAgICAgICAvLyDorqHnrpflkIjlubbljZXlhYPmoLzmlbDmja7ml7bvvIzopoHmjInlkIjlubbliY3nmoTmlbDmja7lpITnkIZcbiAgICAgICAgICAgIG1lcmdlQmVmb3JlQ2VsbHMucHVzaCguLi5nZXRDZWxsUG9zaXRpb25zQmVmb3JlTWVyZ2UodGhpcy5lZGl0b3IsIHsgcm93LCBjb2wgfSkpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgY2VsbHMgPSB1bmlxdWVDZWxsUG9zaXRpb24obWVyZ2VCZWZvcmVDZWxscywgc2VsZWN0ZWRDZWxsUG9zaXRpb25zKTtcbiAgICAgICAgY29uc3Qgcm93R3JvdXAgPSBncm91cEJ5KGNlbGxzLCAoeyByb3cgfSkgPT4gcm93KTtcbiAgICAgICAgY29uc3QgY29sR3JvdXAgPSBncm91cEJ5KGNlbGxzLCAoeyBjb2wgfSkgPT4gY29sKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3NJbmRleCA9IFtdO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ29sdW1uc0luZGV4ID0gW107XG4gICAgICAgIGZvciAoY29uc3Qgcm93IGluIHJvd0dyb3VwKSB7XG4gICAgICAgICAgICBpZiAocm93R3JvdXBbcm93XS5sZW5ndGggPT09IHBvcy5nZXRXaWR0aCgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3NJbmRleC5wdXNoKHBhcnNlSW50KHJvdywgMTApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IGNvbCBpbiBjb2xHcm91cCkge1xuICAgICAgICAgICAgaWYgKGNvbEdyb3VwW2NvbF0ubGVuZ3RoID09PSBwb3MuZ2V0SGVpZ2h0KCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29sdW1uc0luZGV4LnB1c2gocGFyc2VJbnQoY29sLCAxMCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzSW5kZXggPSB1bmlxKHRoaXMuc2VsZWN0ZWRSb3dzSW5kZXgpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ29sdW1uc0luZGV4ID0gdW5pcSh0aGlzLnNlbGVjdGVkQ29sdW1uc0luZGV4KTtcbiAgICAgICAgaWYgKGlzU2VsZWN0ZWRBbGxDZWxsKHRoaXMuZWRpdG9yLCBzZWxlY3RlZENlbGxQb3NpdGlvbnMpKSB7XG4gICAgICAgICAgICB0aGlzLmlzU2VsZWN0ZWRUYWJsZSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmlzU2VsZWN0ZWRUYWJsZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0U2VsZWN0ZWRDZWxscyhjZWxsczogQ2VsbFBvc2l0aW9uW10sIHBvczogVGFibGVQb3NpdGlvbikge1xuICAgICAgICBjb25zdCB1bmlxdWVDZWxscyA9IHRoaXMucG9pbnRlclNlbGVjdGlvbiA/IHVuaXF1ZUNlbGxQb3NpdGlvbihjZWxscywgdGhpcy5nZXRTZWxlY3RlZENlbGxQb3NpdGlvbnMoKSkgOiBjZWxscztcbiAgICAgICAgY29uc3QgY2VsbEVsZW1lbnRzID0gdW5pcXVlQ2VsbHMubWFwKGNlbGwgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHBvcy5maW5kQ2VsbEJ5UGF0aChjZWxsKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDZWxscyQubmV4dChjZWxsRWxlbWVudHMpO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGVkQ29sdW1uc0FuZFJvd0luZGV4KCk7XG4gICAgfVxuXG4gICAgc2VsZWN0Um93KGVkaXRvcjogRWRpdG9yLCBpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IHBvcyA9IGNyZWF0ZVRhYmxlUG9zaXRpb24oZWRpdG9yKTtcbiAgICAgICAgY29uc3QgcmFuZ2VDZWxscyA9IGdldENlbGxQb3NpdGlvbnNGcm9tUmFuZ2UoaW5kZXgsIDAsIGluZGV4ICsgMSwgcG9zLmdldFdpZHRoKCkpO1xuXG4gICAgICAgIHRoaXMuY2xlYXJMYXN0Rm9jdXNQYXRoKCk7XG4gICAgICAgIGlmICh0aGlzLmFyZWFTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMuYXJlYVNlbGVjdFJvd0FuZENvbHVtbihyYW5nZUNlbGxzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RDb2xJbmRleCA9IHBvcy50YWJsZUVudHJ5WzBdLmNoaWxkcmVuW2luZGV4XS5jaGlsZHJlbi5sZW5ndGggLSAxO1xuICAgICAgICAgICAgdGhpcy5zZXRBbmNob3JDZWxsUGF0aChwb3MudGFibGVFbnRyeVsxXS5jb25jYXQoW2luZGV4LCBsYXN0Q29sSW5kZXhdKSk7XG4gICAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkQ2VsbHMocmFuZ2VDZWxscywgcG9zKTtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNDZWxsKHBvcy50YWJsZUVudHJ5WzFdLmNvbmNhdChbaW5kZXgsIDBdKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZWxlY3RDb2x1bW4oZWRpdG9yOiBFZGl0b3IsIGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgcG9zID0gY3JlYXRlVGFibGVQb3NpdGlvbihlZGl0b3IpO1xuICAgICAgICBjb25zdCByYW5nZUNlbGxzID0gZ2V0Q2VsbFBvc2l0aW9uc0Zyb21SYW5nZSgwLCBpbmRleCwgcG9zLmdldEhlaWdodCgpLCBpbmRleCArIDEpO1xuXG4gICAgICAgIHRoaXMuY2xlYXJMYXN0Rm9jdXNQYXRoKCk7XG4gICAgICAgIGlmICh0aGlzLmFyZWFTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMuYXJlYVNlbGVjdFJvd0FuZENvbHVtbihyYW5nZUNlbGxzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RSb3dJbmRleCA9IHBvcy50YWJsZUVudHJ5WzBdLmNoaWxkcmVuLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICB0aGlzLnNldEFuY2hvckNlbGxQYXRoKHBvcy50YWJsZUVudHJ5WzFdLmNvbmNhdChbbGFzdFJvd0luZGV4LCBpbmRleF0pKTtcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRDZWxscyhyYW5nZUNlbGxzLCBwb3MpO1xuICAgICAgICAgICAgdGhpcy5mb2N1c0NlbGwocG9zLnRhYmxlRW50cnlbMV0uY29uY2F0KFswLCBpbmRleF0pKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNlbGVjdFRhYmxlKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIGNvbnN0IHBvcyA9IGNyZWF0ZVRhYmxlUG9zaXRpb24oZWRpdG9yKTtcbiAgICAgICAgY29uc3QgY2VsbHMgPSBnZXRDZWxsUG9zaXRpb25zRnJvbVJhbmdlKDAsIDAsIHBvcy5nZXRIZWlnaHQoKSwgcG9zLmdldFdpZHRoKCkpO1xuICAgICAgICBjb25zdCBsYXN0Q2VsbCA9IGNlbGxzW2NlbGxzLmxlbmd0aCAtIDFdO1xuICAgICAgICBjb25zdCBhbmNob3JDZWxsUGF0aCA9IHBvcy50YWJsZUVudHJ5WzFdLmNvbmNhdChbbGFzdENlbGwucm93LCBsYXN0Q2VsbC5jb2xdKTtcblxuICAgICAgICB0aGlzLmlzU2VsZWN0ZWRUYWJsZSA9IHRydWU7XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRDZWxscyhjZWxscywgcG9zKTtcbiAgICAgICAgdGhpcy5zZXRBbmNob3JDZWxsUGF0aChhbmNob3JDZWxsUGF0aCk7XG4gICAgICAgIHRoaXMuZm9jdXNDZWxsKHBvcy50YWJsZUVudHJ5WzFdLmNvbmNhdChbMCwgMF0pKTtcbiAgICB9XG5cbiAgICAvLyDmi5bpgInlvIDlp4sgfHwg6K6w5b2V6IGa54Sm54K5XG4gICAgc2VsZWN0Q2VsbFN0YXJ0KGNlbGw6IEhUTUxUYWJsZUNlbGxFbGVtZW50LCBlZGl0b3I6IEVkaXRvcikge1xuICAgICAgICBjb25zdCBub2RlID0gQW5ndWxhckVkaXRvci50b1NsYXRlTm9kZShlZGl0b3IsIGNlbGwpO1xuICAgICAgICBjb25zdCBwYXRoID0gQW5ndWxhckVkaXRvci5maW5kUGF0aChlZGl0b3IsIG5vZGUpO1xuICAgICAgICB0aGlzLmlzUHJlcGFyZVNlbGVjdGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuc2V0QW5jaG9yQ2VsbFBhdGgocGF0aCk7XG4gICAgICAgIHRoaXMuZm9jdXNDZWxsUGF0aCA9IHBhdGg7XG4gICAgICAgIHRoaXMuZm9jdXNDZWxsRWxlbWVudCA9IGNlbGw7XG4gICAgICAgIHRoaXMubGFzdEZvY3VzQ2VsbFBhdGggPSBwYXRoO1xuICAgICAgICBpZiAoIXRoaXMucHJlRm9jdXNDZWxsUGF0aCkge1xuICAgICAgICAgICAgdGhpcy5wcmVGb2N1c0NlbGxQYXRoID0gdGhpcy5hbmNob3JDZWxsUGF0aDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIOaLlumAiVxuICAgIHNlbGVjdENlbGxzKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIGNvbnN0IHBvcyA9IGNyZWF0ZVRhYmxlUG9zaXRpb24oZWRpdG9yKTtcbiAgICAgICAgY29uc3QgYW5jaG9yUGF0aCA9IHRoaXMuYW5jaG9yQ2VsbFBhdGguc2xpY2UoLTIpO1xuICAgICAgICBjb25zdCBmb2N1c1BhdGggPSB0aGlzLmZvY3VzQ2VsbFBhdGguc2xpY2UoLTIpO1xuXG4gICAgICAgIGNvbnN0IHJvd3MgPSBbYW5jaG9yUGF0aFswXSwgZm9jdXNQYXRoWzBdXS5zb3J0KChtLCBuKSA9PiBtIC0gbik7XG4gICAgICAgIGNvbnN0IGNvbHVtbnMgPSBbYW5jaG9yUGF0aFsxXSwgZm9jdXNQYXRoWzFdXS5zb3J0KChtLCBuKSA9PiBtIC0gbik7XG5cbiAgICAgICAgY29uc3QgeyBjb2xzcGFuOiBhbmNob3JDb2xTcGFuQ291bnQsIHJvd3NwYW46IGFuY2hvclJvd1NwYW5Db3VudCB9ID0gRWRpdG9yLm5vZGUoXG4gICAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgICB0aGlzLmFuY2hvckNlbGxQYXRoXG4gICAgICAgIClbMF0gYXMgVGFibGVDZWxsRWxlbWVudDtcbiAgICAgICAgY29uc3QgeyBjb2xzcGFuOiBmb2N1c0NvbFNwYW5Db3VudCwgcm93c3BhbjogZm9jdXNSb3dTcGFuQ291bnQgfSA9IEVkaXRvci5ub2RlKGVkaXRvciwgdGhpcy5mb2N1c0NlbGxQYXRoKVswXSBhcyBUYWJsZUNlbGxFbGVtZW50O1xuXG4gICAgICAgIGNvbnN0IGFuY2hvclJvdyA9IGFuY2hvclBhdGhbMF0gKyAoYW5jaG9yUm93U3BhbkNvdW50IHx8IDEpIC0gMTtcbiAgICAgICAgY29uc3QgZm9jdXNSb3cgPSBmb2N1c1BhdGhbMF0gKyAoZm9jdXNSb3dTcGFuQ291bnQgfHwgMSkgLSAxO1xuICAgICAgICBjb25zdCBhbmNob3JDb2wgPSBhbmNob3JQYXRoWzFdICsgKGFuY2hvckNvbFNwYW5Db3VudCB8fCAxKSAtIDE7XG4gICAgICAgIGNvbnN0IGZvY3VzQ29sID0gZm9jdXNQYXRoWzFdICsgKGZvY3VzQ29sU3BhbkNvdW50IHx8IDEpIC0gMTtcblxuICAgICAgICBsZXQgaW5pdE1heENvbCA9IE1hdGgubWF4KGFuY2hvckNvbCwgZm9jdXNDb2wpO1xuICAgICAgICBsZXQgaW5pdE1heFJvdyA9IE1hdGgubWF4KGFuY2hvclJvdywgZm9jdXNSb3cpO1xuICAgICAgICBjb25zdCB7IG1pblJvdywgbWF4Um93LCBtaW5Db2wsIG1heENvbCB9ID0gZ2V0TWluQW5kTWF4Q2VsbEluZGV4KFxuICAgICAgICAgICAgdGhpcy5lZGl0b3IsXG4gICAgICAgICAgICB0aGlzLmdldFNlbGVjdGVkQ2VsbFBvc2l0aW9ucygpLFxuICAgICAgICAgICAgaW5pdE1heFJvdyxcbiAgICAgICAgICAgIGluaXRNYXhDb2wsXG4gICAgICAgICAgICByb3dzWzBdLFxuICAgICAgICAgICAgY29sdW1uc1swXSxcbiAgICAgICAgICAgIHBvcy50YWJsZVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBjZWxscyA9IGdldENlbGxQb3NpdGlvbnNGcm9tUmFuZ2UobWluUm93LCBtaW5Db2wsIG1heFJvdyArIDEsIG1heENvbCArIDEpO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGVkQ2VsbHMoY2VsbHMsIHBvcyk7XG4gICAgfVxuXG4gICAgc2VsZWN0Rmlyc3RDZWxsKCkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZENlbGxQb3NpdGlvbnMgPSB0aGlzLmdldFNlbGVjdGVkQ2VsbFBvc2l0aW9ucygpO1xuICAgICAgICBjb25zdCB7IHJvdywgY29sIH0gPSBzZWxlY3RlZENlbGxQb3NpdGlvbnNbMF07XG4gICAgICAgIGNvbnN0IHRhYmxlUGF0aCA9IGdldFRhYmxlUGF0aCh0aGlzLmVkaXRvcik7XG4gICAgICAgIGNvbnN0IHBhdGggPSBFZGl0b3Iuc3RhcnQodGhpcy5lZGl0b3IsIFsuLi50YWJsZVBhdGgsIHJvdywgY29sXSk7XG4gICAgICAgIFRyYW5zZm9ybXMuc2VsZWN0KHRoaXMuZWRpdG9yLCBwYXRoKTtcbiAgICB9XG5cbiAgICAvLyDpgInmi6nljZXlhYPmoLxcbiAgICBzZWxlY3RDZWxsKGNlbGw6IEhUTUxUYWJsZUNlbGxFbGVtZW50LCBlZGl0b3I6IEVkaXRvcikge1xuICAgICAgICBjb25zdCBub2RlID0gQW5ndWxhckVkaXRvci50b1NsYXRlTm9kZShlZGl0b3IsIGNlbGwpIGFzIFRhYmxlQ2VsbEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHBhdGggPSBBbmd1bGFyRWRpdG9yLmZpbmRQYXRoKGVkaXRvciwgbm9kZSk7XG4gICAgICAgIHRoaXMuc2V0QW5jaG9yQ2VsbFBhdGgocGF0aCk7XG4gICAgICAgIHRoaXMuZm9jdXNDZWxsUGF0aCA9IHBhdGg7XG4gICAgICAgIHRoaXMuZm9jdXNDZWxsRWxlbWVudCA9IGNlbGw7XG4gICAgICAgIGNvbnN0IFtyb3csIGNvbF0gPSBwYXRoLnNsaWNlKC0yKTtcbiAgICAgICAgY29uc3QgcG9zID0gY3JlYXRlVGFibGVQb3NpdGlvbihlZGl0b3IpO1xuICAgICAgICBjb25zdCBjZWxsczogQ2VsbFBvc2l0aW9uW10gPSBbeyByb3csIGNvbCB9XTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDZWxsUG9zaXRpb25zID0gdGhpcy5nZXRTZWxlY3RlZENlbGxQb3NpdGlvbnMoKTtcbiAgICAgICAgaWYgKHRoaXMucG9pbnRlclNlbGVjdGlvbikge1xuICAgICAgICAgICAgY2VsbHMucHVzaCguLi5zZWxlY3RlZENlbGxQb3NpdGlvbnMpO1xuICAgICAgICAgICAgLy8g5aSE55CG5Y2V5YWD5qC86YCJ5Lit5pe277yM5aSE55CG5Li66YCJ5Lit5aSa5Y2V5YWD5qC8XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZENlbGxzID0gZ2V0Q2VsbFBvc2l0aW9uc0JlZm9yZU1lcmdlKHRoaXMuZWRpdG9yLCB7IHJvdywgY29sIH0pO1xuICAgICAgICAgICAgY2VsbHMucHVzaCguLi5zZWxlY3RlZENlbGxzKTtcbiAgICAgICAgICAgIC8vIOW3suiBmueEpueahOWNleWFg+agvOWcqOWkmumAieaooeW8j+S4i+mAieS4re+8iOaaguWtmOS4iuasoeiBmueEpueahOWNleWFg+agvOaVsOaNru+8iVxuICAgICAgICAgICAgY29uc3QgZm9jdXNDZWxsID0gdGhpcy5sYXN0Rm9jdXNDZWxsUGF0aD8uc2xpY2UoLTIpO1xuICAgICAgICAgICAgaWYgKGZvY3VzQ2VsbCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvY3VzQ2VsbHMgPSBnZXRDZWxsUG9zaXRpb25zQmVmb3JlTWVyZ2UodGhpcy5lZGl0b3IsIHsgcm93OiBmb2N1c0NlbGxbMF0sIGNvbDogZm9jdXNDZWxsWzFdIH0pO1xuICAgICAgICAgICAgICAgIGNlbGxzLnB1c2goLi4uZm9jdXNDZWxscyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZENlbGxzKGNlbGxzLCBwb3MpO1xuICAgIH1cblxuICAgIHNlbGVjdENlbGxPbmdvaW5nKGNlbGw6IEhUTUxUYWJsZUNlbGxFbGVtZW50LCBlZGl0b3I6IEVkaXRvcikge1xuICAgICAgICBjb25zdCBwb3MgPSBjcmVhdGVUYWJsZVBvc2l0aW9uKGVkaXRvcik7XG4gICAgICAgIGlmIChBbmd1bGFyRWRpdG9yLmlzUmVhZG9ubHkoZWRpdG9yKSB8fCAhZWRpdG9yLnNlbGVjdGlvbiB8fCAhcG9zPy50YWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBpc0NoYW5nZWQ6IGJvb2xlYW47XG4gICAgICAgIGlmIChjZWxsKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gQW5ndWxhckVkaXRvci50b1NsYXRlTm9kZShlZGl0b3IsIGNlbGwpO1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgoZWRpdG9yLCBub2RlKTtcbiAgICAgICAgICAgIGlzQ2hhbmdlZCA9ICF0aGlzLmZvY3VzQ2VsbFBhdGggfHwgIVBhdGguZXF1YWxzKHRoaXMuZm9jdXNDZWxsUGF0aCwgcGF0aCk7XG4gICAgICAgICAgICB0aGlzLmZvY3VzQ2VsbFBhdGggPSBwYXRoO1xuICAgICAgICAgICAgdGhpcy5mb2N1c0NlbGxFbGVtZW50ID0gY2VsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkQ2VsbFBvc2l0aW9ucyA9IHRoaXMuZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKCk7XG4gICAgICAgICAgICBpc0NoYW5nZWQgPSAhdGhpcy5mb2N1c0NlbGxQYXRoIHx8IChQYXRoLmVxdWFscyh0aGlzLmZvY3VzQ2VsbFBhdGgsIHRoaXMuYW5jaG9yQ2VsbFBhdGgpICYmIHNlbGVjdGVkQ2VsbFBvc2l0aW9ucy5sZW5ndGggPT09IDApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzUHJlcGFyZVNlbGVjdGluZyAmJiBpc0NoYW5nZWQpIHtcbiAgICAgICAgICAgIGlmIChKU09OLnN0cmluZ2lmeSh0aGlzLnByZUZvY3VzQ2VsbFBhdGgpICE9PSBKU09OLnN0cmluZ2lmeSh0aGlzLmZvY3VzQ2VsbFBhdGgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0NlbGxTZWxlY3RpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0Q2VsbHMoZWRpdG9yKTtcbiAgICAgICAgICAgICAgICB0aGlzLnByZUZvY3VzQ2VsbFBhdGggPSB0aGlzLmZvY3VzQ2VsbFBhdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbGVhclNlbGVjdGVkQ2VsbHMoKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zSW5kZXggPSBbXTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3NJbmRleCA9IFtdO1xuICAgICAgICB0aGlzLmlzU2VsZWN0ZWRUYWJsZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzQ2VsbFNlbGVjdGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzUmlnaHRDbGlja2luZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzRm9jdXNlZElucHV0ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDZWxscyQubmV4dChbXSk7XG4gICAgfVxuXG4gICAgY2xlYXJMYXN0Rm9jdXNQYXRoKCkge1xuICAgICAgICB0aGlzLmxhc3RGb2N1c0NlbGxQYXRoID0gbnVsbDtcbiAgICB9XG5cbiAgICBzZWxlY3RlZENlbGxzQ2hhbmdlKCk6IE9ic2VydmFibGU8VGFibGVDZWxsRWxlbWVudFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkQ2VsbHMkLmFzT2JzZXJ2YWJsZSgpLnBpcGUoc2tpcCgxKSk7XG4gICAgfVxuXG4gICAgY2VsbHNQb3NpdGlvbkNoYW5nZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2VsbHNDaGFuZ2VPYmplY3QkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIGNoYW5nZUNlbGxzKCkge1xuICAgICAgICB0aGlzLmNlbGxzQ2hhbmdlT2JqZWN0JC5uZXh0KCk7XG4gICAgfVxuXG4gICAgZW1pdFRhYmxlQ2hhbmdlKCkge1xuICAgICAgICB0aGlzLnRhYmxlQ2hhbmdlJC5uZXh0KCk7XG4gICAgfVxuXG4gICAgdGFibGVDaGFuZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYmxlQ2hhbmdlJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBzZWxlY3RDZWxsRW5kKCkge1xuICAgICAgICBpZiAodGhpcy5pc0NlbGxTZWxlY3RpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNDZWxsKHRoaXMuZm9jdXNDZWxsUGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc1ByZXBhcmVTZWxlY3RpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5wcmVGb2N1c0NlbGxQYXRoID0gbnVsbDtcbiAgICB9XG5cbiAgICBkYW5nZXJvdXNDZWxsc0NoYW5nZSgpOiBPYnNlcnZhYmxlPENlbGxQb3NpdGlvbltdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhbmdlcm91c0NlbGxzJC5hc09ic2VydmFibGUoKS5waXBlKHNraXAoMSkpO1xuICAgIH1cblxuICAgIHNldERhbmdlcm91c0NlbGxzKCkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZENlbGxQb3NpdGlvbnMgPSB0aGlzLmdldFNlbGVjdGVkQ2VsbFBvc2l0aW9ucygpO1xuICAgICAgICB0aGlzLmRhbmdlcm91c1Jvd3NJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dzSW5kZXg7XG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzQ29sdW1uc0luZGV4ID0gdGhpcy5zZWxlY3RlZENvbHVtbnNJbmRleDtcbiAgICAgICAgdGhpcy5kYW5nZXJvdXNDZWxscyQubmV4dChzZWxlY3RlZENlbGxQb3NpdGlvbnMpO1xuICAgIH1cblxuICAgIGNsZWFyRGFuZ2Vyb3VzQ2VsbHMoKSB7XG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzUm93c0luZGV4ID0gW107XG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzQ29sdW1uc0luZGV4ID0gW107XG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzQ2VsbHMkLm5leHQoW10pO1xuICAgICAgICBjb25zdCBwb3MgPSBjcmVhdGVUYWJsZVBvc2l0aW9uKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgaWYgKHBvcy50YWJsZSkge1xuICAgICAgICAgICAgdGhpcy5pc1NlbGVjdGVkVGFibGUgPSB0aGlzLnNlbGVjdGVkUm93c0luZGV4Lmxlbmd0aCA9PT0gcG9zLmdldEhlaWdodCgpICYmIHRoaXMuc2VsZWN0ZWRDb2x1bW5zSW5kZXgubGVuZ3RoID09PSBwb3MuZ2V0V2lkdGgoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRhbmdlcm91c09yU2VsZWN0ZWRDZWxsc0NoYW5nZSgpIHtcbiAgICAgICAgcmV0dXJuIG1lcmdlKHRoaXMuZGFuZ2Vyb3VzQ2VsbHMkLmFzT2JzZXJ2YWJsZSgpLnBpcGUoc2tpcCgxKSksIHRoaXMuc2VsZWN0ZWRDZWxscyQuYXNPYnNlcnZhYmxlKCkucGlwZShza2lwKDEpKSk7XG4gICAgfVxuXG4gICAgc2V0RGFuZ2Vyb3VzUm93cygpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDZWxsUG9zaXRpb25zID0gdGhpcy5nZXRTZWxlY3RlZENlbGxQb3NpdGlvbnMoKTtcbiAgICAgICAgY29uc3QgY2VsbHMgPSBzZWxlY3RlZENlbGxQb3NpdGlvbnM7XG4gICAgICAgIGNvbnN0IHJvd3MgPSB1bmlxKG1hcChjZWxscywgJ3JvdycpKS52YWx1ZU9mKCkgYXMgbnVtYmVyW107XG4gICAgICAgIGNvbnN0IHBvcyA9IGNyZWF0ZVRhYmxlUG9zaXRpb24odGhpcy5lZGl0b3IpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcblxuICAgICAgICB0aGlzLmRhbmdlcm91c1Jvd3NJbmRleCA9IHJvd3M7XG4gICAgICAgIHRoaXMuaXNTZWxlY3RlZFRhYmxlID0gcm93cy5sZW5ndGggPT09IHBvcy5nZXRIZWlnaHQoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZFRhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmRhbmdlcm91c0NvbHVtbnNJbmRleCA9IFsuLi5BcnJheShwb3MuZ2V0V2lkdGgoKSldLm1hcCgodiwgaSkgPT4gaSk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IHJvd0luZGV4IG9mIHJvd3MpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zLmdldFdpZHRoKCk7IGkrKykge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgcm93OiByb3dJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgY29sOiBpXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kYW5nZXJvdXNDZWxscyQubmV4dChyZXN1bHQpO1xuICAgIH1cblxuICAgIHNldERhbmdlcm91c0NvbHVtbnMoKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkQ2VsbFBvc2l0aW9ucyA9IHRoaXMuZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKCk7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gc2VsZWN0ZWRDZWxsUG9zaXRpb25zO1xuICAgICAgICBjb25zdCBjb2xzID0gdW5pcShtYXAoY2VsbHMsICdjb2wnKSkudmFsdWVPZigpIGFzIG51bWJlcltdO1xuICAgICAgICBjb25zdCBwb3MgPSBjcmVhdGVUYWJsZVBvc2l0aW9uKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XG5cbiAgICAgICAgdGhpcy5kYW5nZXJvdXNDb2x1bW5zSW5kZXggPSBjb2xzO1xuICAgICAgICB0aGlzLmlzU2VsZWN0ZWRUYWJsZSA9IGNvbHMubGVuZ3RoID09PSBwb3MuZ2V0V2lkdGgoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZFRhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmRhbmdlcm91c1Jvd3NJbmRleCA9IFsuLi5BcnJheShwb3MuZ2V0SGVpZ2h0KCkpXS5tYXAoKF8sIGkpID0+IGkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBjb2xJbmRleCBvZiBjb2xzKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvcy5nZXRIZWlnaHQoKTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgICAgICAgICByb3c6IGksXG4gICAgICAgICAgICAgICAgICAgIGNvbDogY29sSW5kZXhcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRhbmdlcm91c0NlbGxzJC5uZXh0KHJlc3VsdCk7XG4gICAgfVxuXG4gICAgc2V0RGFuZ2Vyb3VzVGFibGUoKSB7XG4gICAgICAgIHRoaXMuaXNTZWxlY3RlZFRhYmxlID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgcG9zID0gY3JlYXRlVGFibGVQb3NpdGlvbih0aGlzLmVkaXRvcik7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gZ2V0Q2VsbFBvc2l0aW9uc0Zyb21SYW5nZSgwLCAwLCBwb3MuZ2V0SGVpZ2h0KCksIHBvcy5nZXRXaWR0aCgpKTtcbiAgICAgICAgdGhpcy5kYW5nZXJvdXNSb3dzSW5kZXggPSBbLi4uQXJyYXkocG9zLmdldEhlaWdodCgpKV0ubWFwKChfLCBpKSA9PiBpKTtcbiAgICAgICAgdGhpcy5kYW5nZXJvdXNDb2x1bW5zSW5kZXggPSBbLi4uQXJyYXkocG9zLmdldFdpZHRoKCkpXS5tYXAoKF8sIGkpID0+IGkpO1xuICAgICAgICB0aGlzLmRhbmdlcm91c0NlbGxzJC5uZXh0KGNlbGxzKTtcbiAgICB9XG5cbiAgICBzZXRTZWxlY3RlZENlbGxzQmFja2dyb3VuZENvbG9yKGJhY2tncm91bmRDb2xvcjogQ29sb3JUeXBlKSB7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gdGhpcy5zZWxlY3RlZENlbGxzJC5nZXRWYWx1ZSgpO1xuICAgICAgICBFZGl0b3Iud2l0aG91dE5vcm1hbGl6aW5nKHRoaXMuZWRpdG9yLCAoKSA9PiB7XG4gICAgICAgICAgICBjZWxscy5tYXAoY2VsbCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2VsbFBhdGggPSBBbmd1bGFyRWRpdG9yLmZpbmRQYXRoKHRoaXMuZWRpdG9yLCBjZWxsKTtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGVzKHRoaXMuZWRpdG9yLCB7IGJhY2tncm91bmRDb2xvciB9LCB7IGF0OiBjZWxsUGF0aCB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjbGVhclNlbGVjdGVkQ2VsbHNDb250ZW50KCkge1xuICAgICAgICBjb25zdCBjZWxscyA9IHRoaXMuZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKCk7XG4gICAgICAgIGNvbnN0IHRhYmxlUG9zaXRpb24gPSBjcmVhdGVUYWJsZVBvc2l0aW9uKHRoaXMuZWRpdG9yKTtcblxuICAgICAgICBpZiAodGFibGVQb3NpdGlvbi5pc0luVGFibGUoKSkge1xuICAgICAgICAgICAgRWRpdG9yLndpdGhvdXROb3JtYWxpemluZyh0aGlzLmVkaXRvciwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgeyByb3csIGNvbCB9IG9mIGNlbGxzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNlbGxQYXRoID0gWy4uLnRhYmxlUG9zaXRpb24udGFibGVFbnRyeVsxXSwgcm93LCBjb2xdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gTm9kZS5nZXQodGhpcy5lZGl0b3IsIGNlbGxQYXRoKSBhcyBUYWJsZUNlbGxFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICBUYWJsZUVkaXRvci5jbGVhckNlbGwodGhpcy5lZGl0b3IsIFtub2RlLCBjZWxsUGF0aF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QodGhpcy5lZGl0b3IsIEVkaXRvci5zdGFydCh0aGlzLmVkaXRvciwgdGFibGVQb3NpdGlvbi5jZWxsRW50cnlbMV0pKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiBmueEpuWNleWFg+agvOW5tuiuvue9ruiBmueEpuebuOWFs+i3r+W+hOWPiuWFg+e0oFxuICAgICAqL1xuICAgIGZvY3VzQ2VsbChwYXRoOiBudW1iZXJbXSkge1xuICAgICAgICBjb25zdCBub2RlID0gTm9kZS5nZXQodGhpcy5lZGl0b3IsIHBhdGgpIGFzIFRhYmxlQ2VsbEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGNlbGxIVE1MRWxlbWVudCA9IEFuZ3VsYXJFZGl0b3IudG9ET01Ob2RlKHRoaXMuZWRpdG9yLCBub2RlKSBhcyBIVE1MVGFibGVDZWxsRWxlbWVudDtcbiAgICAgICAgdGhpcy5wcmVGb2N1c0NlbGxQYXRoID0gdGhpcy5mb2N1c0NlbGxQYXRoO1xuICAgICAgICB0aGlzLmZvY3VzQ2VsbFBhdGggPSBwYXRoO1xuICAgICAgICB0aGlzLmZvY3VzQ2VsbEVsZW1lbnQgPSBjZWxsSFRNTEVsZW1lbnQ7XG4gICAgICAgIGZvY3VzQ2VsbCh0aGlzLmVkaXRvciwgcGF0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5Yy65Z+f6YCJ5oup5byA5aeLXG4gICAgICogQHBhcmFtIGVkaXRvciDnvJbovpHlmajlr7nosaFcbiAgICAgKiBAcGFyYW0gY2VsbCDljZXlhYPmoLzlhYPntKBcbiAgICAgKi9cbiAgICBhcmVhU2VsZWN0aW9uU3RhcnQoY2VsbDogSFRNTFRhYmxlQ2VsbEVsZW1lbnQsIGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSBBbmd1bGFyRWRpdG9yLnRvU2xhdGVOb2RlKGVkaXRvciwgY2VsbCk7XG4gICAgICAgIGNvbnN0IHBhdGggPSBBbmd1bGFyRWRpdG9yLmZpbmRQYXRoKGVkaXRvciwgbm9kZSk7XG4gICAgICAgIHRoaXMuaXNQcmVwYXJlU2VsZWN0aW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5sYXN0Rm9jdXNDZWxsUGF0aCA9IHBhdGg7XG4gICAgICAgIGlmICghdGhpcz8uYW5jaG9yQ2VsbFBhdGgpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0QW5jaG9yQ2VsbFBhdGgocGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzPy5mb2N1c0NlbGxQYXRoKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzQ2VsbFBhdGggPSBwYXRoO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5wcmVGb2N1c0NlbGxQYXRoKSB7XG4gICAgICAgICAgICB0aGlzLnByZUZvY3VzQ2VsbFBhdGggPSB0aGlzLmFuY2hvckNlbGxQYXRoO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6K6+572u5Yy65Z+f6YCJ5oup55qE5Y2V5YWD5qC8XG4gICAgICogQHBhcmFtIGNlbGxFbGVtZW50IOWNleWFg+agvOWFg+e0oFxuICAgICAqL1xuICAgIHNldEFyZWFTZWxlY3Rpb25DZWxscyhjZWxsRWxlbWVudDogVGFibGVDZWxsRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBpZiAoQW5ndWxhckVkaXRvci5pc1JlYWRvbmx5KHRoaXMuZWRpdG9yKSB8fCAhdGhpcy5lZGl0b3Iuc2VsZWN0aW9uIHx8ICF0aGlzLmlzUHJlcGFyZVNlbGVjdGluZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY3VycmVudENlbGxQYXRoID0gQW5ndWxhckVkaXRvci5maW5kUGF0aCh0aGlzLmVkaXRvciwgY2VsbEVsZW1lbnQpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZENlbGxQb3NpdGlvbnMgPSB0aGlzLmdldFNlbGVjdGVkQ2VsbFBvc2l0aW9ucygpO1xuICAgICAgICBjb25zdCBzZWxlY3RFcXVhbCA9IFBhdGguZXF1YWxzKGN1cnJlbnRDZWxsUGF0aCwgdGhpcy5hbmNob3JDZWxsUGF0aCk7XG5cbiAgICAgICAgLy8g5LiN5Y+v5Lul5Yy65Z+f6YCJ5oup5Y2V5LiA5Y2V5YWD5qC8XG4gICAgICAgIGlmIChzZWxlY3RlZENlbGxQb3NpdGlvbnMubGVuZ3RoIDw9IDEgJiYgc2VsZWN0RXF1YWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzQ2VsbFNlbGVjdGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuZm9jdXNDZWxsKGN1cnJlbnRDZWxsUGF0aCk7XG4gICAgICAgIHRoaXMuc2VsZWN0Q2VsbHModGhpcy5lZGl0b3IpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOWkhOeQhuWMuuWfn+mAieaLqeWQr+eUqOaXtumAieaLqeaVtOihjC/mlbTliJdcbiAgICAgKiBAcGFyYW0gY2VsbHMg6YCJ5oup55qE5Y2V5YWD5qC8XG4gICAgICovXG4gICAgYXJlYVNlbGVjdFJvd0FuZENvbHVtbihjZWxsczogQ2VsbFBvc2l0aW9uW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcG9zID0gY3JlYXRlVGFibGVQb3NpdGlvbih0aGlzLmVkaXRvcik7XG4gICAgICAgIGNvbnN0IFtyb3csIGNvbF0gPSB0aGlzLmZvY3VzQ2VsbFBhdGguc2xpY2UoLTIpO1xuICAgICAgICBjb25zdCBzZWxlY3RDZWxscyA9IFt7IHJvdywgY29sIH0sIC4uLmNlbGxzXTtcbiAgICAgICAgY29uc3Qgc29ydFJvd3MgPSBzZWxlY3RDZWxscy5tYXAoaXRlbSA9PiBpdGVtLnJvdykuc29ydCgobSwgbikgPT4gbSAtIG4pO1xuICAgICAgICBjb25zdCBzb3J0Q29scyA9IHNlbGVjdENlbGxzLm1hcChpdGVtID0+IGl0ZW0uY29sKS5zb3J0KChtLCBuKSA9PiBtIC0gbik7XG4gICAgICAgIGNvbnN0IHN0YXJ0Um93ID0gc29ydFJvd3NbMF07XG4gICAgICAgIGNvbnN0IHN0YXJ0Q29sID0gc29ydENvbHNbMF07XG4gICAgICAgIGNvbnN0IGVuZFJvdyA9IHNvcnRDb2xzW3NvcnRDb2xzLmxlbmd0aCAtIDFdO1xuICAgICAgICBjb25zdCBlbmRDb2wgPSBzb3J0Um93c1tzb3J0Um93cy5sZW5ndGggLSAxXTtcbiAgICAgICAgY29uc3QgYW5jaG9yQ2VsbFBhdGggPSBwb3MudGFibGVFbnRyeVsxXS5jb25jYXQoW2VuZENvbCwgZW5kUm93XSk7XG4gICAgICAgIGNvbnN0IGZvY3VzQ2VsbFBhdGggPSBwb3MudGFibGVFbnRyeVsxXS5jb25jYXQoW3N0YXJ0Um93LCBzdGFydENvbF0pO1xuXG4gICAgICAgIHRoaXMuc2V0QW5jaG9yQ2VsbFBhdGgoYW5jaG9yQ2VsbFBhdGgpO1xuICAgICAgICB0aGlzLmZvY3VzQ2VsbChmb2N1c0NlbGxQYXRoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RDZWxscyh0aGlzLmVkaXRvcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6K6+572u5oyH5a6aIGFuY2hvckNlbGxQYXRoXG4gICAgICogQHBhcmFtIHBhdGgg6Lev5b6EXG4gICAgICovXG4gICAgc2V0QW5jaG9yQ2VsbFBhdGgocGF0aDogbnVtYmVyW10pIHtcbiAgICAgICAgaWYgKHBhdGgpIHtcbiAgICAgICAgICAgIHRoaXMuYW5jaG9yQ2VsbFBhdGggPSBwYXRoO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VsZWN0Q2VsbEluRGlyZWN0aW9uKGRpcmVjdGlvbjogVGFibGVTZWxlY3RDZWxsRGlyZWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IFtyb3csIGNvbF0gPSB0aGlzLmZvY3VzQ2VsbFBhdGguc2xpY2UoLTIpO1xuICAgICAgICBjb25zdCBuZXh0Q2VsbCA9IGdldE5leHRDZWxsKHRoaXMuZWRpdG9yLCBkaXJlY3Rpb24sIFtyb3csIGNvbF0pO1xuICAgICAgICBpZiAobmV4dENlbGwpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0QXJlYVNlbGVjdGlvbkNlbGxzKG5leHRDZWxsKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -2,7 +2,7 @@ import { Node } from 'slate';
|
|
|
2
2
|
import { ElementKinds } from '../constants';
|
|
3
3
|
export const isEmptyContentByFilter = (editor, rules) => {
|
|
4
4
|
const { children } = editor;
|
|
5
|
-
if (children.length < 1) {
|
|
5
|
+
if (!children || children.length < 1) {
|
|
6
6
|
return true;
|
|
7
7
|
}
|
|
8
8
|
const defaultTypes = [ElementKinds.code, ElementKinds.table, ElementKinds.image];
|
|
@@ -20,4 +20,4 @@ export const isEmptyContentByFilter = (editor, rules) => {
|
|
|
20
20
|
const isEmptyText = textLength <= 0;
|
|
21
21
|
return isEmptyText;
|
|
22
22
|
};
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtZW1wdHktY29udGVudC1maWx0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcXVlcmllcy9pcy1lbXB0eS1jb250ZW50LWZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVUsSUFBSSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFTNUMsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxNQUFjLEVBQUUsS0FBa0IsRUFBRSxFQUFFO0lBQ3pFLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDNUIsSUFBSSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUNsQyxPQUFPLElBQUksQ0FBQztLQUNmO0lBQ0QsTUFBTSxZQUFZLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pGLE1BQU0sWUFBWSxHQUFHLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxZQUFZLEVBQUUsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztJQUNuRyxNQUFNLFNBQVMsR0FBRyxLQUFLLEVBQUUsU0FBUyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzFFLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBRXRELElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtRQUN2RSxPQUFPLEtBQUssQ0FBQztLQUNoQjtJQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUNyRSxNQUFNLFVBQVUsR0FBRyxVQUFVLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQztJQUMzQyxNQUFNLFdBQVcsR0FBRyxVQUFVLElBQUksQ0FBQyxDQUFDO0lBRXBDLE9BQU8sV0FBVyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVkaXRvciwgTm9kZSB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IEVsZW1lbnRLaW5kcyB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyUnVsZSB7XG4gICAgLy8g566X5a6e6ZmF5YaF5a6555qE57G75Z6LXG4gICAgY29udGFpblR5cGVzPzogc3RyaW5nW107XG4gICAgLy8g5piv5ZCm5o6S6Zmk5paH5pys55qE56m65qC8XG4gICAgdGV4dFNwYWNlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IGlzRW1wdHlDb250ZW50QnlGaWx0ZXIgPSAoZWRpdG9yOiBFZGl0b3IsIHJ1bGVzPzogRmlsdGVyUnVsZSkgPT4ge1xuICAgIGNvbnN0IHsgY2hpbGRyZW4gfSA9IGVkaXRvcjtcbiAgICBpZiAoIWNoaWxkcmVuIHx8IGNoaWxkcmVuLmxlbmd0aCA8IDEpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IGRlZmF1bHRUeXBlcyA9IFtFbGVtZW50S2luZHMuY29kZSwgRWxlbWVudEtpbmRzLnRhYmxlLCBFbGVtZW50S2luZHMuaW1hZ2VdO1xuICAgIGNvbnN0IGNvbnRhaW5UeXBlcyA9IHJ1bGVzPy5jb250YWluVHlwZXMgPyBbLi4uZGVmYXVsdFR5cGVzLCAuLi5ydWxlcy5jb250YWluVHlwZXNdIDogZGVmYXVsdFR5cGVzO1xuICAgIGNvbnN0IHRleHRTcGFjZSA9IHJ1bGVzPy50ZXh0U3BhY2UgIT09IHVuZGVmaW5lZCA/IHJ1bGVzLnRleHRTcGFjZSA6IHRydWU7XG4gICAgY29uc3QgZmlsdGVyTm9kZXMgPSBBcnJheS5mcm9tKE5vZGUuZWxlbWVudHMoZWRpdG9yKSk7XG5cbiAgICBpZiAoZmlsdGVyTm9kZXMuc29tZShuID0+IG5bMF0/LnR5cGUgJiYgY29udGFpblR5cGVzLmluY2x1ZGVzKG5bMF0udHlwZSkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBub2Rlc0VudHJ5ID0gTm9kZS50ZXh0cyhlZGl0b3IpO1xuICAgIGNvbnN0IG5vZGVzID0gQXJyYXkuZnJvbShub2Rlc0VudHJ5KTtcbiAgICBjb25zdCBhbGxUZXh0ID0gbm9kZXMucmVkdWNlKCh0b3RhbCwgdGV4dCkgPT4gKHRvdGFsICs9IHRleHRbMF0udGV4dCksICcnKTtcbiAgICBjb25zdCBmaWx0ZXJUZXh0ID0gdGV4dFNwYWNlID8gYWxsVGV4dC5yZXBsYWNlKC9cXHMrL2csICcnKSA6IGFsbFRleHQ7XG4gICAgY29uc3QgdGV4dExlbmd0aCA9IGZpbHRlclRleHQ/Lmxlbmd0aCA/PyAwO1xuICAgIGNvbnN0IGlzRW1wdHlUZXh0ID0gdGV4dExlbmd0aCA8PSAwO1xuXG4gICAgcmV0dXJuIGlzRW1wdHlUZXh0O1xufTtcbiJdfQ==
|