@scion/workbench 18.0.0-beta.3 → 18.0.0-beta.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/common/class-list.mjs +67 -29
- package/esm2022/lib/common/operators.mjs +1 -12
- package/esm2022/lib/content-projection/content-as-overlay.component.mjs +3 -3
- package/esm2022/lib/dialog/dialog-header/dialog-header.component.mjs +3 -8
- package/esm2022/lib/dialog/workbench-dialog.component.mjs +22 -20
- package/esm2022/lib/dialog/workbench-dialog.mjs +61 -1
- package/esm2022/lib/dialog//311/265workbench-dialog.mjs +71 -26
- package/esm2022/lib/dialog//311/265workbench-dialog.service.mjs +25 -23
- package/esm2022/lib/executor/latest-task-executor.mjs +55 -0
- package/esm2022/lib/executor/single-task-executor.mjs +7 -17
- package/esm2022/lib/layout/main-area-layout/main-area-layout.component.mjs +5 -6
- package/esm2022/lib/layout/migration/model/workbench-layout-migration-v5.model.mjs +1 -1
- package/esm2022/lib/layout/migration/workbench-layout-migration-v3.service.mjs +3 -3
- package/esm2022/lib/layout/stringifier.mjs +2 -2
- package/esm2022/lib/layout/workbench-layout.component.mjs +4 -5
- package/esm2022/lib/layout/workbench-layout.mjs +1 -1
- package/esm2022/lib/layout/workbench-layout.model.mjs +1 -1
- package/esm2022/lib/layout/workbench-layout.service.mjs +6 -7
- package/esm2022/lib/layout//311/265workbench-layout.factory.mjs +3 -2
- package/esm2022/lib/layout//311/265workbench-layout.mjs +34 -31
- package/esm2022/lib/message-box/message-box-footer/message-box-footer.component.mjs +3 -3
- package/esm2022/lib/message-box/message-box-header/message-box-header.component.mjs +3 -3
- package/esm2022/lib/microfrontend-platform/common/microfrontend.util.mjs +5 -6
- package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog.component.mjs +3 -3
- package/esm2022/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.mjs +14 -6
- package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/microfrontend-host-message-box.component.mjs +3 -3
- package/esm2022/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.mjs +5 -5
- package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box.component.mjs +3 -3
- package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-handler.interceptor.mjs +11 -12
- package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.mjs +3 -3
- package/esm2022/lib/microfrontend-platform/microfrontend-splash/microfrontend-splash.component.mjs +3 -3
- package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.mjs +11 -12
- package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.mjs +18 -16
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.mjs +13 -14
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-routes.mjs +3 -3
- package/esm2022/lib/microfrontend-platform/workbench-microfrontend-support.mjs +4 -4
- package/esm2022/lib/notification/notification-list.component.mjs +4 -8
- package/esm2022/lib/notification/notification.component.mjs +4 -5
- package/esm2022/lib/page-not-found/page-not-found.component.mjs +3 -3
- package/esm2022/lib/part/part-action-bar/part-action-bar.component.mjs +7 -13
- package/esm2022/lib/part/part-action-bar/part-action.directive.mjs +4 -4
- package/esm2022/lib/part/part-bar/part-bar.component.mjs +56 -75
- package/esm2022/lib/part/part-portal.pipe.mjs +8 -8
- package/esm2022/lib/part/part.component.mjs +32 -40
- package/esm2022/lib/part/view-context-menu/view-menu.component.mjs +4 -6
- package/esm2022/lib/part/view-context-menu/view-menu.directive.mjs +2 -2
- package/esm2022/lib/part/view-context-menu/view-menu.service.mjs +27 -28
- package/esm2022/lib/part/view-list/view-list.component.mjs +41 -48
- package/esm2022/lib/part/view-list-button/view-list-button.component.mjs +20 -24
- package/esm2022/lib/part/view-list-item/view-list-item.component.mjs +15 -17
- package/esm2022/lib/part/view-tab/view-tab.component.mjs +77 -88
- package/esm2022/lib/part/view-tab-content/view-tab-content.component.mjs +3 -4
- package/esm2022/lib/part/view-tab-drag-image/view-tab-drag-image.component.mjs +14 -15
- package/esm2022/lib/part/workbench-part-action.registry.mjs +18 -42
- package/esm2022/lib/part/workbench-part.model.mjs +10 -1
- package/esm2022/lib/part/workbench-part.registry.mjs +11 -45
- package/esm2022/lib/part//311/265workbench-part.model.mjs +71 -55
- package/esm2022/lib/perspective/workbench-perspective.model.mjs +1 -1
- package/esm2022/lib/perspective/workbench-perspective.registry.mjs +11 -43
- package/esm2022/lib/perspective/workbench-perspective.service.mjs +27 -28
- package/esm2022/lib/perspective//311/265workbench-perspective.model.mjs +53 -47
- package/esm2022/lib/popup/popup.component.mjs +3 -3
- package/esm2022/lib/popup/popup.config.mjs +23 -13
- package/esm2022/lib/popup/popup.service.mjs +48 -45
- package/esm2022/lib/portal/wb-component-portal.mjs +2 -2
- package/esm2022/lib/registry/workbench-object-registry.mjs +38 -17
- package/esm2022/lib/routing/public_api.mjs +2 -1
- package/esm2022/lib/routing/routing.model.mjs +1 -1
- package/esm2022/lib/routing/routing.util.mjs +210 -0
- package/esm2022/lib/routing/workbench-auxiliary-route-installer.service.mjs +19 -3
- package/esm2022/lib/routing/workbench-dialog-differ.mjs +3 -3
- package/esm2022/lib/routing/workbench-message-box-differ.mjs +3 -3
- package/esm2022/lib/routing/workbench-navigational-states.mjs +2 -2
- package/esm2022/lib/routing/workbench-popup-differ.mjs +3 -3
- package/esm2022/lib/routing/workbench-route-guards.mjs +57 -0
- package/esm2022/lib/routing/workbench-url-observer.service.mjs +132 -144
- package/esm2022/lib/routing/workbench-view-outlet-differ.mjs +3 -3
- package/esm2022/lib/routing//311/265workbench-router.service.mjs +52 -40
- package/esm2022/lib/startup/splash/splash.component.mjs +3 -3
- package/esm2022/lib/startup/workbench-launcher.service.mjs +7 -10
- package/esm2022/lib/testing/workbench.provider.mjs +2 -2
- package/esm2022/lib/theme/workbench-theme-switcher.service.mjs +15 -19
- package/esm2022/lib/view/public_api.mjs +1 -2
- package/esm2022/lib/view/view-move-handler.service.mjs +7 -7
- package/esm2022/lib/view/view-portal.pipe.mjs +7 -7
- package/esm2022/lib/view/view.component.mjs +22 -34
- package/esm2022/lib/view/workbench-view.model.mjs +1 -1
- package/esm2022/lib/view/workbench-view.registry.mjs +11 -45
- package/esm2022/lib/view//311/265workbench-view.model.mjs +136 -150
- package/esm2022/lib/view-dnd/view-drag.service.mjs +1 -1
- package/esm2022/lib/view-dnd/view-tab-drag-image-renderer.service.mjs +18 -20
- package/esm2022/lib/workbench.component.mjs +3 -3
- package/esm2022/lib/workbench.model.mjs +1 -1
- package/esm2022/lib/workbench.service.mjs +1 -1
- package/esm2022/lib//311/265workbench.service.mjs +31 -42
- package/fesm2022/scion-workbench.mjs +2028 -1953
- package/fesm2022/scion-workbench.mjs.map +1 -1
- package/lib/common/class-list.d.ts +35 -22
- package/lib/common/operators.d.ts +1 -6
- package/lib/dialog/workbench-dialog.component.d.ts +3 -2
- package/lib/dialog/workbench-dialog.d.ts +57 -13
- package/lib/dialog//311/265workbench-dialog.d.ts +36 -17
- package/lib/dialog//311/265workbench-dialog.service.d.ts +10 -11
- package/lib/executor/latest-task-executor.d.ts +26 -0
- package/lib/executor/single-task-executor.d.ts +3 -6
- package/lib/layout/migration/model/workbench-layout-migration-v5.model.d.ts +4 -0
- package/lib/layout/workbench-layout.d.ts +9 -6
- package/lib/layout/workbench-layout.model.d.ts +2 -0
- package/lib/layout/workbench-layout.service.d.ts +4 -4
- package/lib/layout//311/265workbench-layout.d.ts +12 -13
- package/lib/layout//311/265workbench-layout.factory.d.ts +3 -2
- package/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.d.ts +1 -5
- package/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-handler.interceptor.d.ts +4 -8
- package/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.d.ts +5 -8
- package/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.d.ts +3 -7
- package/lib/notification/notification-list.component.d.ts +0 -2
- package/lib/part/part-action-bar/part-action-bar.component.d.ts +4 -1
- package/lib/part/part-action-bar/part-action.directive.d.ts +2 -2
- package/lib/part/part-bar/part-bar.component.d.ts +8 -12
- package/lib/part/part-portal.pipe.d.ts +3 -5
- package/lib/part/part.component.d.ts +9 -12
- package/lib/part/view-context-menu/view-menu.directive.d.ts +1 -1
- package/lib/part/view-context-menu/view-menu.service.d.ts +8 -12
- package/lib/part/view-list/view-list.component.d.ts +8 -21
- package/lib/part/view-list-button/view-list-button.component.d.ts +8 -11
- package/lib/part/view-list-item/view-list-item.component.d.ts +3 -7
- package/lib/part/view-tab/view-tab.component.d.ts +17 -28
- package/lib/part/view-tab-drag-image/view-tab-drag-image.component.d.ts +4 -4
- package/lib/part/workbench-part-action.registry.d.ts +3 -23
- package/lib/part/workbench-part.model.d.ts +8 -27
- package/lib/part/workbench-part.registry.d.ts +3 -26
- package/lib/part//311/265workbench-part.model.d.ts +24 -17
- package/lib/perspective/workbench-perspective.model.d.ts +2 -8
- package/lib/perspective/workbench-perspective.registry.d.ts +3 -26
- package/lib/perspective/workbench-perspective.service.d.ts +8 -14
- package/lib/perspective//311/265workbench-perspective.model.d.ts +26 -21
- package/lib/popup/popup.config.d.ts +2 -0
- package/lib/popup/popup.service.d.ts +12 -14
- package/lib/registry/workbench-object-registry.d.ts +10 -6
- package/lib/routing/public_api.d.ts +2 -1
- package/lib/routing/routing.model.d.ts +25 -13
- package/lib/routing/{router.util.d.ts → routing.util.d.ts} +24 -1
- package/lib/routing/workbench-auxiliary-route-installer.service.d.ts +7 -0
- package/lib/routing/workbench-navigational-states.d.ts +8 -4
- package/lib/{view/workbench-view-route-guards.d.ts → routing/workbench-route-guards.d.ts} +8 -2
- package/lib/routing/workbench-url-observer.service.d.ts +31 -57
- package/lib/routing//311/265workbench-router.service.d.ts +10 -16
- package/lib/startup/workbench-launcher.service.d.ts +4 -5
- package/lib/testing/workbench.provider.d.ts +3 -1
- package/lib/theme/workbench-theme-switcher.service.d.ts +4 -6
- package/lib/view/public_api.d.ts +0 -1
- package/lib/view/view-portal.pipe.d.ts +1 -3
- package/lib/view/view.component.d.ts +2 -4
- package/lib/view/workbench-view.model.d.ts +49 -35
- package/lib/view/workbench-view.registry.d.ts +3 -27
- package/lib/view//311/265workbench-view.model.d.ts +51 -61
- package/lib/view-dnd/view-drag.service.d.ts +5 -2
- package/lib/workbench.model.d.ts +6 -2
- package/lib/workbench.service.d.ts +58 -56
- package/lib//311/265workbench.service.d.ts +18 -31
- package/package.json +1 -1
- package/esm2022/lib/common/filter-by-predicate.pipe.mjs +0 -27
- package/esm2022/lib/common/filter-by-text.pipe.mjs +0 -39
- package/esm2022/lib/part/part-action-bar/part-action-filter.pipe.mjs +0 -26
- package/esm2022/lib/routing/router.util.mjs +0 -126
- package/esm2022/lib/view/workbench-view-route-guards.mjs +0 -47
- package/lib/common/filter-by-predicate.pipe.d.ts +0 -10
- package/lib/common/filter-by-text.pipe.d.ts +0 -12
- package/lib/part/part-action-bar/part-action-filter.pipe.d.ts +0 -11
|
@@ -1,30 +1,37 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2018-2024 Swiss Federal Railways
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made
|
|
5
|
+
* available under the terms of the Eclipse Public License 2.0
|
|
6
|
+
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
7
|
+
*
|
|
8
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
9
|
+
*/
|
|
10
|
+
import { Router } from '@angular/router';
|
|
1
11
|
import { Defined, Observables } from '@scion/toolkit/util';
|
|
2
|
-
import { inject, Injectable, NgZone, runInInjectionContext } from '@angular/core';
|
|
12
|
+
import { inject, Injectable, Injector, NgZone, runInInjectionContext } from '@angular/core';
|
|
13
|
+
import { WorkbenchLayoutService } from '../layout/workbench-layout.service';
|
|
3
14
|
import { MAIN_AREA_LAYOUT_QUERY_PARAM } from '../workbench.constants';
|
|
4
15
|
import { SINGLE_NAVIGATION_EXECUTOR } from '../executor/single-task-executor';
|
|
5
16
|
import { firstValueFrom } from 'rxjs';
|
|
6
17
|
import { WorkbenchNavigationalStates } from './workbench-navigational-states';
|
|
7
|
-
import {
|
|
18
|
+
import { Routing } from './routing.util';
|
|
8
19
|
import { UrlSegmentMatcher } from './url-segment-matcher';
|
|
9
20
|
import { Objects } from '../common/objects.util';
|
|
21
|
+
import { WORKBENCH_VIEW_REGISTRY } from '../view/workbench-view.registry';
|
|
22
|
+
import { Logger } from '../logging';
|
|
10
23
|
import * as i0 from "@angular/core";
|
|
11
|
-
import * as i1 from "@angular/router";
|
|
12
|
-
import * as i2 from "../layout/workbench-layout.service";
|
|
13
|
-
import * as i3 from "../view/workbench-view.registry";
|
|
14
|
-
import * as i4 from "../logging";
|
|
15
24
|
/** @inheritDoc */
|
|
16
25
|
export class ɵWorkbenchRouter {
|
|
17
|
-
constructor(
|
|
18
|
-
this._router =
|
|
19
|
-
this._workbenchLayoutService =
|
|
20
|
-
this._workbenchViewRegistry =
|
|
21
|
-
this._injector =
|
|
22
|
-
this._logger =
|
|
23
|
-
this._zone =
|
|
26
|
+
constructor() {
|
|
27
|
+
this._router = inject(Router);
|
|
28
|
+
this._workbenchLayoutService = inject(WorkbenchLayoutService);
|
|
29
|
+
this._workbenchViewRegistry = inject(WORKBENCH_VIEW_REGISTRY);
|
|
30
|
+
this._injector = inject(Injector);
|
|
31
|
+
this._logger = inject(Logger);
|
|
32
|
+
this._zone = inject(NgZone);
|
|
24
33
|
this._singleNavigationExecutor = inject(SINGLE_NAVIGATION_EXECUTOR);
|
|
25
|
-
/**
|
|
26
|
-
* Holds the current navigational context during a workbench navigation, or `null` if no navigation is in progress.
|
|
27
|
-
*/
|
|
34
|
+
/** Holds the current navigational context during a workbench navigation, or `null` if no navigation is in progress. */
|
|
28
35
|
this._currentNavigationContext = null;
|
|
29
36
|
// Instruct the Angular router to process navigations that do not change the current URL, i.e., when only updating navigation state.
|
|
30
37
|
// For example, the workbench grid is passed to the navigation as state, not as a query parameter. Without this flag set, changes to
|
|
@@ -44,11 +51,11 @@ export class ɵWorkbenchRouter {
|
|
|
44
51
|
return this._singleNavigationExecutor.submit(async () => {
|
|
45
52
|
// Wait until the initial layout is available, i.e., after completion of Angular's initial navigation.
|
|
46
53
|
// Otherwise, this navigation would override the initial layout as given in the URL.
|
|
47
|
-
if (!this._workbenchLayoutService.layout) {
|
|
54
|
+
if (!this._workbenchLayoutService.layout()) {
|
|
48
55
|
await this.waitForInitialLayout();
|
|
49
56
|
}
|
|
50
57
|
// Let the navigator compute the new workbench layout.
|
|
51
|
-
const currentLayout = this._workbenchLayoutService.layout;
|
|
58
|
+
const currentLayout = this._workbenchLayoutService.layout();
|
|
52
59
|
let newLayout = await runInInjectionContext(this._injector, () => navigateFn(currentLayout));
|
|
53
60
|
if (!newLayout) {
|
|
54
61
|
return true;
|
|
@@ -56,12 +63,10 @@ export class ɵWorkbenchRouter {
|
|
|
56
63
|
// Remove views marked for removal, invoking `CanClose` guard if implemented.
|
|
57
64
|
newLayout = await newLayout.removeViewsMarkedForRemoval(viewUid => this.canCloseView(viewUid));
|
|
58
65
|
// Create extras with workbench navigation instructions.
|
|
59
|
-
extras = createNavigationExtras(newLayout, extras);
|
|
60
|
-
// Create the new URL tree.
|
|
61
|
-
const commands = computeNavigationCommands(currentLayout.viewOutlets(), newLayout.viewOutlets());
|
|
62
|
-
const urlTree = this._router.createUrlTree(commands, extras);
|
|
66
|
+
extras = createNavigationExtras({ newLayout, currentLayout }, extras);
|
|
63
67
|
// Perform the navigation.
|
|
64
|
-
|
|
68
|
+
const commands = computeNavigationCommands(currentLayout.viewOutlets(), newLayout.viewOutlets());
|
|
69
|
+
if (!(await this._router.navigate(commands, extras))) {
|
|
65
70
|
return false;
|
|
66
71
|
}
|
|
67
72
|
// Block subsequent navigation(s) until Angular has flushed the changed layout to the DOM.
|
|
@@ -99,11 +104,11 @@ export class ɵWorkbenchRouter {
|
|
|
99
104
|
return this._singleNavigationExecutor.submit(async () => {
|
|
100
105
|
// Wait until the initial layout is available, i.e., after completion of Angular's initial navigation.
|
|
101
106
|
// Otherwise, would override the initial layout as given in the URL.
|
|
102
|
-
if (!this._workbenchLayoutService.layout) {
|
|
107
|
+
if (!this._workbenchLayoutService.layout()) {
|
|
103
108
|
await this.waitForInitialLayout();
|
|
104
109
|
}
|
|
105
110
|
// Let the navigator compute the new workbench layout.
|
|
106
|
-
const currentLayout = this._workbenchLayoutService.layout;
|
|
111
|
+
const currentLayout = this._workbenchLayoutService.layout();
|
|
107
112
|
let newLayout = await runInInjectionContext(this._injector, () => onNavigate(currentLayout));
|
|
108
113
|
if (!newLayout) {
|
|
109
114
|
return null;
|
|
@@ -111,7 +116,7 @@ export class ɵWorkbenchRouter {
|
|
|
111
116
|
// Remove views marked for removal.
|
|
112
117
|
newLayout = await newLayout.removeViewsMarkedForRemoval();
|
|
113
118
|
// Create extras with workbench navigation instructions.
|
|
114
|
-
extras = createNavigationExtras(newLayout, extras);
|
|
119
|
+
extras = createNavigationExtras({ newLayout, currentLayout }, extras);
|
|
115
120
|
// Create the new URL tree.
|
|
116
121
|
const commands = computeNavigationCommands(currentLayout.viewOutlets(), newLayout.viewOutlets());
|
|
117
122
|
return this._router.createUrlTree(commands, extras);
|
|
@@ -121,11 +126,11 @@ export class ɵWorkbenchRouter {
|
|
|
121
126
|
* Decides if given view can be closed, invoking `CanClose` guard if implemented.
|
|
122
127
|
*/
|
|
123
128
|
async canCloseView(viewUid) {
|
|
124
|
-
const view = this._workbenchViewRegistry.
|
|
129
|
+
const view = this._workbenchViewRegistry.objects().find(view => view.uid === viewUid);
|
|
125
130
|
if (!view) {
|
|
126
131
|
return true;
|
|
127
132
|
}
|
|
128
|
-
if (!view.closable) {
|
|
133
|
+
if (!view.closable()) {
|
|
129
134
|
return false;
|
|
130
135
|
}
|
|
131
136
|
// Test if the view implements `CanClose` guard.
|
|
@@ -164,13 +169,13 @@ export class ɵWorkbenchRouter {
|
|
|
164
169
|
async waitForInitialLayout() {
|
|
165
170
|
await firstValueFrom(this._workbenchLayoutService.layout$);
|
|
166
171
|
}
|
|
167
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ɵWorkbenchRouter, deps: [
|
|
172
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ɵWorkbenchRouter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
168
173
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ɵWorkbenchRouter, providedIn: 'root' }); }
|
|
169
174
|
}
|
|
170
175
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ɵWorkbenchRouter, decorators: [{
|
|
171
176
|
type: Injectable,
|
|
172
177
|
args: [{ providedIn: 'root' }]
|
|
173
|
-
}], ctorParameters: () => [
|
|
178
|
+
}], ctorParameters: () => [] });
|
|
174
179
|
/**
|
|
175
180
|
* Creates a navigation to navigate view(s) based on the provided array of commands and extras.
|
|
176
181
|
*/
|
|
@@ -183,7 +188,7 @@ function createNavigationFromCommands(commands, extras) {
|
|
|
183
188
|
}
|
|
184
189
|
return layout.removeView(extras.target);
|
|
185
190
|
}
|
|
186
|
-
const urlSegments =
|
|
191
|
+
const urlSegments = Routing.commandsToSegments(commands, { relativeTo: extras.relativeTo });
|
|
187
192
|
return layout
|
|
188
193
|
.views({
|
|
189
194
|
partId: extras.partId,
|
|
@@ -198,7 +203,7 @@ function createNavigationFromCommands(commands, extras) {
|
|
|
198
203
|
return addView(layout.computeNextViewId(), layout);
|
|
199
204
|
}
|
|
200
205
|
case 'auto': {
|
|
201
|
-
const urlSegments =
|
|
206
|
+
const urlSegments = Routing.commandsToSegments(commands, { relativeTo: extras.relativeTo });
|
|
202
207
|
const views = layout.views({
|
|
203
208
|
partId: extras.partId,
|
|
204
209
|
segments: new UrlSegmentMatcher(urlSegments, { matchMatrixParams: false, matchWildcardPath: false }),
|
|
@@ -239,11 +244,13 @@ function createNavigationFromCommands(commands, extras) {
|
|
|
239
244
|
partId: partId,
|
|
240
245
|
position: extras.position ?? 'after-active-view',
|
|
241
246
|
activateView: extras.activate ?? true,
|
|
247
|
+
activatePart: extras.activate ?? true,
|
|
242
248
|
})
|
|
243
249
|
.navigateView(viewId, commands, {
|
|
244
250
|
relativeTo: extras.relativeTo,
|
|
245
251
|
hint: extras.hint,
|
|
246
252
|
cssClass: extras.cssClass,
|
|
253
|
+
data: extras.data,
|
|
247
254
|
state: extras.state,
|
|
248
255
|
});
|
|
249
256
|
}
|
|
@@ -252,12 +259,13 @@ function createNavigationFromCommands(commands, extras) {
|
|
|
252
259
|
*/
|
|
253
260
|
function updateView(viewId, layout) {
|
|
254
261
|
if (extras.activate ?? true) {
|
|
255
|
-
layout = layout.activateView(viewId);
|
|
262
|
+
layout = layout.activateView(viewId, { activatePart: true });
|
|
256
263
|
}
|
|
257
264
|
return layout.navigateView(viewId, commands, {
|
|
258
265
|
relativeTo: extras.relativeTo,
|
|
259
266
|
hint: extras.hint,
|
|
260
267
|
cssClass: extras.cssClass,
|
|
268
|
+
data: extras.data,
|
|
261
269
|
state: extras.state,
|
|
262
270
|
});
|
|
263
271
|
}
|
|
@@ -265,8 +273,9 @@ function createNavigationFromCommands(commands, extras) {
|
|
|
265
273
|
/**
|
|
266
274
|
* Creates navigation extras with workbench navigation instructions.
|
|
267
275
|
*/
|
|
268
|
-
function createNavigationExtras(
|
|
269
|
-
const {
|
|
276
|
+
function createNavigationExtras(layouts, extras) {
|
|
277
|
+
const { newLayout, currentLayout } = layouts;
|
|
278
|
+
const { workbenchGrid, mainAreaGrid } = newLayout.serialize({ excludeViewMarkedForRemoval: true });
|
|
270
279
|
return {
|
|
271
280
|
...extras,
|
|
272
281
|
// Instruct the Angular router to process the navigation even if the URL does not change, e.g., when changing the workbench grid which is not contained in the URL.
|
|
@@ -276,8 +285,11 @@ function createNavigationExtras(layout, extras) {
|
|
|
276
285
|
// Associate workbench-specific state with the navigation.
|
|
277
286
|
state: WorkbenchNavigationalStates.create({
|
|
278
287
|
workbenchGrid: workbenchGrid,
|
|
279
|
-
|
|
280
|
-
|
|
288
|
+
// Fall back to the current layout's perspective if not specified by the new layout,
|
|
289
|
+
// e.g., the navigator provides a new layout to replace the current layout.
|
|
290
|
+
perspectiveId: newLayout.perspectiveId ?? currentLayout?.perspectiveId,
|
|
291
|
+
maximized: newLayout.maximized,
|
|
292
|
+
navigationStates: newLayout.navigationStates(),
|
|
281
293
|
}),
|
|
282
294
|
// Add the main area as query parameter.
|
|
283
295
|
queryParams: { ...extras?.queryParams, [MAIN_AREA_LAYOUT_QUERY_PARAM]: mainAreaGrid },
|
|
@@ -297,7 +309,7 @@ function computeNavigationCommands(previousViewOutlets, nextViewOutlets) {
|
|
|
297
309
|
viewIds.forEach(viewId => {
|
|
298
310
|
// Test if the view was added to the layout.
|
|
299
311
|
if (!previousViewOutletMap.has(viewId)) {
|
|
300
|
-
commands.set(viewId,
|
|
312
|
+
commands.set(viewId, Routing.segmentsToCommands(nextViewOutletMap.get(viewId)));
|
|
301
313
|
}
|
|
302
314
|
// Test if the view was removed from the layout.
|
|
303
315
|
else if (!nextViewOutletMap.has(viewId)) {
|
|
@@ -305,10 +317,10 @@ function computeNavigationCommands(previousViewOutlets, nextViewOutlets) {
|
|
|
305
317
|
}
|
|
306
318
|
// Test if the view was updated.
|
|
307
319
|
else if (!new UrlSegmentMatcher(previousViewOutletMap.get(viewId), { matchMatrixParams: true, matchWildcardPath: false }).matches(nextViewOutletMap.get(viewId))) {
|
|
308
|
-
commands.set(viewId,
|
|
320
|
+
commands.set(viewId, Routing.segmentsToCommands(nextViewOutletMap.get(viewId)));
|
|
309
321
|
}
|
|
310
322
|
});
|
|
311
323
|
// Add view commands to the 'outlets' property to be interpreted by the Angular router.
|
|
312
324
|
return commands.size ? [{ outlets: Object.fromEntries(commands) }] : [];
|
|
313
325
|
}
|
|
314
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiybV3b3JrYmVuY2gtcm91dGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9yb3V0aW5nL8m1d29ya2JlbmNoLXJvdXRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBLE9BQU8sRUFBQyxPQUFPLEVBQUUsV0FBVyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQVksTUFBTSxFQUFFLHFCQUFxQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTFGLE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3BFLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFFNUUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUcxQyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7Ozs7OztBQUsvQyxrQkFBa0I7QUFFbEIsTUFBTSxPQUFPLGdCQUFnQjtJQVMzQixZQUFvQixPQUFlLEVBQ2YsdUJBQStDLEVBQy9DLHNCQUE2QyxFQUM3QyxTQUFtQixFQUNuQixPQUFlLEVBQ2YsS0FBYTtRQUxiLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZiw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXdCO1FBQy9DLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBdUI7UUFDN0MsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNuQixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsVUFBSyxHQUFMLEtBQUss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QUUsQ0FBQztZQUN4QyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBQ0QsZ0NBQWdDO2FBQzNCLElBQUksQ0FBQyxJQUFJLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUUsRUFBRSxFQUFDLGlCQUFpQixFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2pLLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZGLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILHVGQUF1RjtJQUN2RixPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN4RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDI0IFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge05hdmlnYXRpb25FeHRyYXMsIFJvdXRlciwgVXJsU2VnbWVudCwgVXJsVHJlZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7V29ya2JlbmNoUm91dGVyfSBmcm9tICcuL3dvcmtiZW5jaC1yb3V0ZXIuc2VydmljZSc7XG5pbXBvcnQge0RlZmluZWQsIE9ic2VydmFibGVzfSBmcm9tICdAc2Npb24vdG9vbGtpdC91dGlsJztcbmltcG9ydCB7aW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciwgTmdab25lLCBydW5JbkluamVjdGlvbkNvbnRleHR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtXb3JrYmVuY2hMYXlvdXRTZXJ2aWNlfSBmcm9tICcuLi9sYXlvdXQvd29ya2JlbmNoLWxheW91dC5zZXJ2aWNlJztcbmltcG9ydCB7TUFJTl9BUkVBX0xBWU9VVF9RVUVSWV9QQVJBTX0gZnJvbSAnLi4vd29ya2JlbmNoLmNvbnN0YW50cyc7XG5pbXBvcnQge1NJTkdMRV9OQVZJR0FUSU9OX0VYRUNVVE9SfSBmcm9tICcuLi9leGVjdXRvci9zaW5nbGUtdGFzay1leGVjdXRvcic7XG5pbXBvcnQge2ZpcnN0VmFsdWVGcm9tfSBmcm9tICdyeGpzJztcbmltcG9ydCB7V29ya2JlbmNoTmF2aWdhdGlvbmFsU3RhdGVzfSBmcm9tICcuL3dvcmtiZW5jaC1uYXZpZ2F0aW9uYWwtc3RhdGVzJztcbmltcG9ydCB7ybVXb3JrYmVuY2hMYXlvdXR9IGZyb20gJy4uL2xheW91dC/JtXdvcmtiZW5jaC1sYXlvdXQnO1xuaW1wb3J0IHtSb3V0ZXJVdGlsc30gZnJvbSAnLi9yb3V0ZXIudXRpbCc7XG5pbXBvcnQge0NvbW1hbmRzLCBWaWV3T3V0bGV0cywgV29ya2JlbmNoTmF2aWdhdGlvbkNvbnRleHQsIFdvcmtiZW5jaE5hdmlnYXRpb25FeHRyYXN9IGZyb20gJy4vcm91dGluZy5tb2RlbCc7XG5pbXBvcnQge1ZpZXdJZH0gZnJvbSAnLi4vdmlldy93b3JrYmVuY2gtdmlldy5tb2RlbCc7XG5pbXBvcnQge1VybFNlZ21lbnRNYXRjaGVyfSBmcm9tICcuL3VybC1zZWdtZW50LW1hdGNoZXInO1xuaW1wb3J0IHtPYmplY3RzfSBmcm9tICcuLi9jb21tb24vb2JqZWN0cy51dGlsJztcbmltcG9ydCB7V29ya2JlbmNoVmlld1JlZ2lzdHJ5fSBmcm9tICcuLi92aWV3L3dvcmtiZW5jaC12aWV3LnJlZ2lzdHJ5JztcbmltcG9ydCB7TG9nZ2VyfSBmcm9tICcuLi9sb2dnaW5nJztcbmltcG9ydCB7Q2FuQ2xvc2V9IGZyb20gJy4uL3dvcmtiZW5jaC5tb2RlbCc7XG5cbi8qKiBAaW5oZXJpdERvYyAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgybVXb3JrYmVuY2hSb3V0ZXIgaW1wbGVtZW50cyBXb3JrYmVuY2hSb3V0ZXIge1xuXG4gIHByaXZhdGUgX3NpbmdsZU5hdmlnYXRpb25FeGVjdXRvciA9IGluamVjdChTSU5HTEVfTkFWSUdBVElPTl9FWEVDVVRPUik7XG5cbiAgLyoqXG4gICAqIEhvbGRzIHRoZSBjdXJyZW50IG5hdmlnYXRpb25hbCBjb250ZXh0IGR1cmluZyBhIHdvcmtiZW5jaCBuYXZpZ2F0aW9uLCBvciBgbnVsbGAgaWYgbm8gbmF2aWdhdGlvbiBpcyBpbiBwcm9ncmVzcy5cbiAgICovXG4gIHByaXZhdGUgX2N1cnJlbnROYXZpZ2F0aW9uQ29udGV4dDogV29ya2JlbmNoTmF2aWdhdGlvbkNvbnRleHQgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9yb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfd29ya2JlbmNoTGF5b3V0U2VydmljZTogV29ya2JlbmNoTGF5b3V0U2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfd29ya2JlbmNoVmlld1JlZ2lzdHJ5OiBXb3JrYmVuY2hWaWV3UmVnaXN0cnksXG4gICAgICAgICAgICAgIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfbG9nZ2VyOiBMb2dnZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgX3pvbmU6IE5nWm9uZSkge1xuICAgIC8vIEluc3RydWN0IHRoZSBBbmd1bGFyIHJvdXRlciB0byBwcm9jZXNzIG5hdmlnYXRpb25zIHRoYXQgZG8gbm90IGNoYW5nZSB0aGUgY3VycmVudCBVUkwsIGkuZS4sIHdoZW4gb25seSB1cGRhdGluZyBuYXZpZ2F0aW9uIHN0YXRlLlxuICAgIC8vIEZvciBleGFtcGxlLCB0aGUgd29ya2JlbmNoIGdyaWQgaXMgcGFzc2VkIHRvIHRoZSBuYXZpZ2F0aW9uIGFzIHN0YXRlLCBub3QgYXMgYSBxdWVyeSBwYXJhbWV0ZXIuIFdpdGhvdXQgdGhpcyBmbGFnIHNldCwgY2hhbmdlcyB0b1xuICAgIC8vIHRoZSB3b3JrYmVuY2ggZ3JpZCB3b3VsZCBub3QgYmUgYWRkZWQgdG8gdGhlIGJyb3dzaW5nIGhpc3Rvcnkgc3RhY2suXG4gICAgLy8gQWx0aG91Z2ggdGhlIGBvblNhbWVVcmxOYXZpZ2F0aW9uYCBmbGFnIGNhbiBiZSBzZXQgcGVyIG5hdmlnYXRpb24gdmlhIHRoZSBuYXZpZ2F0aW9uIGV4dHJhcywgdGhpcyBpcyBub3Qgc3VmZmljaWVudCBiZWNhdXNlIHRoZVxuICAgIC8vIEFuZ3VsYXIgcm91dGVyIGlnbm9yZXMgaXQgd2hlbiBuYXZpZ2F0aW5nIGJhY2sgYW5kIGZvcnRoIGluIHRoZSBicm93c2luZyBoaXN0b3J5LlxuICAgIC8vIFNlZSBBbmd1bGFyIHJvdXRlci50cyNzZXRVcExvY2F0aW9uQ2hhbmdlTGlzdGVuZXIgYW5kIHJvdXRlci50cyNuYXZpZ2F0ZVRvU3luY1dpdGhCcm93c2VyXG4gICAgdGhpcy5fcm91dGVyLm9uU2FtZVVybE5hdmlnYXRpb24gPSAncmVsb2FkJztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBwdWJsaWMgbmF2aWdhdGUoY29tbWFuZHM6IENvbW1hbmRzLCBleHRyYXM/OiBXb3JrYmVuY2hOYXZpZ2F0aW9uRXh0cmFzKTogUHJvbWlzZTxib29sZWFuPjtcbiAgcHVibGljIG5hdmlnYXRlKG5hdmlnYXRlRm46IMm1TmF2aWdhdGVGbiwgZXh0cmFzPzogT21pdDxOYXZpZ2F0aW9uRXh0cmFzLCAncmVsYXRpdmVUbycgfCAnc3RhdGUnPik6IFByb21pc2U8Ym9vbGVhbj47XG4gIHB1YmxpYyBuYXZpZ2F0ZShjb21tYW5kc09yTmF2aWdhdGVGbjogQ29tbWFuZHMgfCDJtU5hdmlnYXRlRm4sIGV4dHJhcz86IFdvcmtiZW5jaE5hdmlnYXRpb25FeHRyYXMgfCBPbWl0PE5hdmlnYXRpb25FeHRyYXMsICdyZWxhdGl2ZVRvJyB8ICdzdGF0ZSc+KTogUHJvbWlzZTxib29sZWFuPjtcbiAgcHVibGljIG5hdmlnYXRlKGNvbW1hbmRzT3JOYXZpZ2F0ZUZuOiBDb21tYW5kcyB8IMm1TmF2aWdhdGVGbiwgZXh0cmFzPzogV29ya2JlbmNoTmF2aWdhdGlvbkV4dHJhcyB8IE9taXQ8TmF2aWdhdGlvbkV4dHJhcywgJ3JlbGF0aXZlVG8nIHwgJ3N0YXRlJz4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAvLyBFbnN1cmUgdG8gcnVuIGluIEFuZ3VsYXIgem9uZS5cbiAgICBpZiAoIU5nWm9uZS5pc0luQW5ndWxhclpvbmUoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3pvbmUucnVuKCgpID0+IHRoaXMubmF2aWdhdGUoY29tbWFuZHNPck5hdmlnYXRlRm4sIGV4dHJhcykpO1xuICAgIH1cblxuICAgIGNvbnN0IG5hdmlnYXRlRm4gPSB0eXBlb2YgY29tbWFuZHNPck5hdmlnYXRlRm4gPT09ICdmdW5jdGlvbicgPyBjb21tYW5kc09yTmF2aWdhdGVGbiA6IGNyZWF0ZU5hdmlnYXRpb25Gcm9tQ29tbWFuZHMoY29tbWFuZHNPck5hdmlnYXRlRm4sIGV4dHJhcyA/PyB7fSk7XG5cbiAgICAvLyBTZXJpYWxpemUgbmF2aWdhdGlvbiByZXF1ZXN0cyB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyB3aGVuIG1vZGlmeWluZyB0aGUgY3VycmVudGx5IGFjdGl2ZSB3b3JrYmVuY2ggbGF5b3V0LlxuICAgIHJldHVybiB0aGlzLl9zaW5nbGVOYXZpZ2F0aW9uRXhlY3V0b3Iuc3VibWl0KGFzeW5jICgpID0+IHtcbiAgICAgIC8vIFdhaXQgdW50aWwgdGhlIGluaXRpYWwgbGF5b3V0IGlzIGF2YWlsYWJsZSwgaS5lLiwgYWZ0ZXIgY29tcGxldGlvbiBvZiBBbmd1bGFyJ3MgaW5pdGlhbCBuYXZpZ2F0aW9uLlxuICAgICAgLy8gT3RoZXJ3aXNlLCB0aGlzIG5hdmlnYXRpb24gd291bGQgb3ZlcnJpZGUgdGhlIGluaXRpYWwgbGF5b3V0IGFzIGdpdmVuIGluIHRoZSBVUkwuXG4gICAgICBpZiAoIXRoaXMuX3dvcmtiZW5jaExheW91dFNlcnZpY2UubGF5b3V0KSB7XG4gICAgICAgIGF3YWl0IHRoaXMud2FpdEZvckluaXRpYWxMYXlvdXQoKTtcbiAgICAgIH1cblxuICAgICAgLy8gTGV0IHRoZSBuYXZpZ2F0b3IgY29tcHV0ZSB0aGUgbmV3IHdvcmtiZW5jaCBsYXlvdXQuXG4gICAgICBjb25zdCBjdXJyZW50TGF5b3V0ID0gdGhpcy5fd29ya2JlbmNoTGF5b3V0U2VydmljZS5sYXlvdXQhO1xuICAgICAgbGV0IG5ld0xheW91dDogybVXb3JrYmVuY2hMYXlvdXQgfCBudWxsID0gYXdhaXQgcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuX2luamVjdG9yLCAoKSA9PiBuYXZpZ2F0ZUZuKGN1cnJlbnRMYXlvdXQpKSBhcyDJtVdvcmtiZW5jaExheW91dDtcbiAgICAgIGlmICghbmV3TGF5b3V0KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBSZW1vdmUgdmlld3MgbWFya2VkIGZvciByZW1vdmFsLCBpbnZva2luZyBgQ2FuQ2xvc2VgIGd1YXJkIGlmIGltcGxlbWVudGVkLlxuICAgICAgbmV3TGF5b3V0ID0gYXdhaXQgbmV3TGF5b3V0LnJlbW92ZVZpZXdzTWFya2VkRm9yUmVtb3ZhbCh2aWV3VWlkID0+IHRoaXMuY2FuQ2xvc2VWaWV3KHZpZXdVaWQpKTtcblxuICAgICAgLy8gQ3JlYXRlIGV4dHJhcyB3aXRoIHdvcmtiZW5jaCBuYXZpZ2F0aW9uIGluc3RydWN0aW9ucy5cbiAgICAgIGV4dHJhcyA9IGNyZWF0ZU5hdmlnYXRpb25FeHRyYXMobmV3TGF5b3V0LCBleHRyYXMpO1xuXG4gICAgICAvLyBDcmVhdGUgdGhlIG5ldyBVUkwgdHJlZS5cbiAgICAgIGNvbnN0IGNvbW1hbmRzOiBDb21tYW5kcyA9IGNvbXB1dGVOYXZpZ2F0aW9uQ29tbWFuZHMoY3VycmVudExheW91dC52aWV3T3V0bGV0cygpLCBuZXdMYXlvdXQudmlld091dGxldHMoKSk7XG4gICAgICBjb25zdCB1cmxUcmVlID0gdGhpcy5fcm91dGVyLmNyZWF0ZVVybFRyZWUoY29tbWFuZHMsIGV4dHJhcyk7XG5cbiAgICAgIC8vIFBlcmZvcm0gdGhlIG5hdmlnYXRpb24uXG4gICAgICBpZiAoIShhd2FpdCB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmxUcmVlLCBleHRyYXMpKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIC8vIEJsb2NrIHN1YnNlcXVlbnQgbmF2aWdhdGlvbihzKSB1bnRpbCBBbmd1bGFyIGhhcyBmbHVzaGVkIHRoZSBjaGFuZ2VkIGxheW91dCB0byB0aGUgRE9NLlxuICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fem9uZS5vblN0YWJsZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJmb3JtcyBjaGFuZ2VzIHRvIHRoZSBjdXJyZW50IHdvcmtiZW5jaCBsYXlvdXQuXG4gICAqXG4gICAqIFVubGlrZSB7QGxpbmsgbmF2aWdhdGV9LCBkb2VzIG5vdCBwZXJmb3JtIHRoZSBuYXZpZ2F0aW9uIGJ1dCByZXR1cm5zIHRoZSBVUkwgdHJlZSBpbnN0ZWFkLlxuICAgKlxuICAgKiBUaGUgcm91dGVyIHdpbGwgaW52b2tlIHRoZSBjYWxsYmFjayBhbmQgcGFzcyB0aGUgY3VycmVudCBsYXlvdXQgZm9yIG1vZGlmaWNhdGlvbi4gVGhlIGNhbGxiYWNrIGNhbiBjYWxsIGBpbmplY3RgIHRvIGdldCBhbnkgcmVxdWlyZWQgZGVwZW5kZW5jaWVzLlxuICAgKlxuICAgKiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgYWRkcyBhIHBhcnQgdG8gdGhlIGxlZnQgb2YgdGhlIG1haW4gYXJlYSwgaW5zZXJ0cyBhIHZpZXcgYW5kIG5hdmlnYXRlcyBpdC5cbiAgICpcbiAgICogYGBgdHNcbiAgICogaW5qZWN0KFdvcmtiZW5jaFJvdXRlcikuY3JlYXRlVXJsVHJlZShsYXlvdXQgPT4gbGF5b3V0XG4gICAqICAgLmFkZFBhcnQoJ2xlZnQnLCB7cmVsYXRpdmVUbzogTUFJTl9BUkVBLCBhbGlnbjogJ2xlZnQnfSlcbiAgICogICAuYWRkVmlldygnbmF2aWdhdG9yJywge3BhcnRJZDogJ2xlZnQnfSlcbiAgICogICAubmF2aWdhdGVWaWV3KCduYXZpZ2F0b3InLCBbJ3BhdGgvdG8vdmlldyddKVxuICAgKiAgIC5hY3RpdmF0ZVZpZXcoJ25hdmlnYXRvcicpLFxuICAgKiApO1xuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIG9uTmF2aWdhdGUgLSBTcGVjaWZpZXMgdGhlIGNhbGxiYWNrIHRvIG1vZGlmeSB0aGUgbGF5b3V0LlxuICAgKiBAcGFyYW0gZXh0cmFzIC0gQ29udHJvbHMgaG93IHRvIHBlcmZvcm0gdGhlIG5hdmlnYXRpb24uXG4gICAqIEBzZWUgTmF2aWdhdGVGblxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNyZWF0ZVVybFRyZWUob25OYXZpZ2F0ZTogKGxheW91dDogybVXb3JrYmVuY2hMYXlvdXQpID0+IFByb21pc2U8ybVXb3JrYmVuY2hMYXlvdXQgfCBudWxsPiB8IMm1V29ya2JlbmNoTGF5b3V0IHwgbnVsbCwgZXh0cmFzPzogT21pdDxOYXZpZ2F0aW9uRXh0cmFzLCAncmVsYXRpdmVUbycgfCAnc3RhdGUnPik6IFByb21pc2U8VXJsVHJlZSB8IG51bGw+IHtcbiAgICAvLyBFbnN1cmUgdG8gcnVuIGluIEFuZ3VsYXIgem9uZS5cbiAgICBpZiAoIU5nWm9uZS5pc0luQW5ndWxhclpvbmUoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3pvbmUucnVuKCgpID0+IHRoaXMuY3JlYXRlVXJsVHJlZShvbk5hdmlnYXRlLCBleHRyYXMpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc2luZ2xlTmF2aWdhdGlvbkV4ZWN1dG9yLnN1Ym1pdChhc3luYyAoKSA9PiB7XG4gICAgICAvLyBXYWl0IHVudGlsIHRoZSBpbml0aWFsIGxheW91dCBpcyBhdmFpbGFibGUsIGkuZS4sIGFmdGVyIGNvbXBsZXRpb24gb2YgQW5ndWxhcidzIGluaXRpYWwgbmF2aWdhdGlvbi5cbiAgICAgIC8vIE90aGVyd2lzZSwgd291bGQgb3ZlcnJpZGUgdGhlIGluaXRpYWwgbGF5b3V0IGFzIGdpdmVuIGluIHRoZSBVUkwuXG4gICAgICBpZiAoIXRoaXMuX3dvcmtiZW5jaExheW91dFNlcnZpY2UubGF5b3V0KSB7XG4gICAgICAgIGF3YWl0IHRoaXMud2FpdEZvckluaXRpYWxMYXlvdXQoKTtcbiAgICAgIH1cblxuICAgICAgLy8gTGV0IHRoZSBuYXZpZ2F0b3IgY29tcHV0ZSB0aGUgbmV3IHdvcmtiZW5jaCBsYXlvdXQuXG4gICAgICBjb25zdCBjdXJyZW50TGF5b3V0ID0gdGhpcy5fd29ya2JlbmNoTGF5b3V0U2VydmljZS5sYXlvdXQhO1xuICAgICAgbGV0IG5ld0xheW91dDogybVXb3JrYmVuY2hMYXlvdXQgfCBudWxsID0gYXdhaXQgcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuX2luamVjdG9yLCAoKSA9PiBvbk5hdmlnYXRlKGN1cnJlbnRMYXlvdXQpKTtcbiAgICAgIGlmICghbmV3TGF5b3V0KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyBSZW1vdmUgdmlld3MgbWFya2VkIGZvciByZW1vdmFsLlxuICAgICAgbmV3TGF5b3V0ID0gYXdhaXQgbmV3TGF5b3V0LnJlbW92ZVZpZXdzTWFya2VkRm9yUmVtb3ZhbCgpO1xuXG4gICAgICAvLyBDcmVhdGUgZXh0cmFzIHdpdGggd29ya2JlbmNoIG5hdmlnYXRpb24gaW5zdHJ1Y3Rpb25zLlxuICAgICAgZXh0cmFzID0gY3JlYXRlTmF2aWdhdGlvbkV4dHJhcyhuZXdMYXlvdXQsIGV4dHJhcyk7XG5cbiAgICAgIC8vIENyZWF0ZSB0aGUgbmV3IFVSTCB0cmVlLlxuICAgICAgY29uc3QgY29tbWFuZHM6IENvbW1hbmRzID0gY29tcHV0ZU5hdmlnYXRpb25Db21tYW5kcyhjdXJyZW50TGF5b3V0LnZpZXdPdXRsZXRzKCksIG5ld0xheW91dC52aWV3T3V0bGV0cygpKTtcbiAgICAgIHJldHVybiB0aGlzLl9yb3V0ZXIuY3JlYXRlVXJsVHJlZShjb21tYW5kcywgZXh0cmFzKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNpZGVzIGlmIGdpdmVuIHZpZXcgY2FuIGJlIGNsb3NlZCwgaW52b2tpbmcgYENhbkNsb3NlYCBndWFyZCBpZiBpbXBsZW1lbnRlZC5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgY2FuQ2xvc2VWaWV3KHZpZXdVaWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHZpZXcgPSB0aGlzLl93b3JrYmVuY2hWaWV3UmVnaXN0cnkudmlld3MuZmluZCh2aWV3ID0+IHZpZXcudWlkID09PSB2aWV3VWlkKTtcbiAgICBpZiAoIXZpZXcpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoIXZpZXcuY2xvc2FibGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBUZXN0IGlmIHRoZSB2aWV3IGltcGxlbWVudHMgYENhbkNsb3NlYCBndWFyZC5cbiAgICBjb25zdCBjb21wb25lbnQgPSB2aWV3LmdldENvbXBvbmVudCgpIGFzIENhbkNsb3NlIHwgbnVsbDtcbiAgICBpZiAodHlwZW9mIGNvbXBvbmVudD8uY2FuQ2xvc2UgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIEludm9rZSBgQ2FuQ2xvc2VgIGd1YXJkIHRvIGRlY2lkZSBpZiB0byBjbG9zZSB0aGUgdmlldy5cbiAgICB0cnkge1xuICAgICAgY29uc3QgY2FuQ2xvc2UgPSBydW5JbkluamVjdGlvbkNvbnRleHQodmlldy5nZXRDb21wb25lbnRJbmplY3RvcigpISwgKCkgPT4gY29tcG9uZW50LmNhbkNsb3NlKCkpO1xuICAgICAgcmV0dXJuIGF3YWl0IGZpcnN0VmFsdWVGcm9tKE9ic2VydmFibGVzLmNvZXJjZShjYW5DbG9zZSksIHtkZWZhdWx0VmFsdWU6IHRydWV9KTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoYFVuaGFuZGxlZCBlcnJvciB3aGlsZSBpbnZva2luZyAnQ2FuQ2xvc2UnIGd1YXJkIG9mIHZpZXcgJyR7dmlldy5pZH0nLmAsIGVycm9yKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50IHdvcmtiZW5jaCBuYXZpZ2F0aW9uLCB3aGVuIGJlaW5nIGludm9rZWQgZHVyaW5nIG5hdmlnYXRpb24sIG9yIHRocm93cyBhbiBlcnJvciBvdGhlcndpc2UuXG4gICAqL1xuICBwdWJsaWMgZ2V0Q3VycmVudE5hdmlnYXRpb25Db250ZXh0KCk6IFdvcmtiZW5jaE5hdmlnYXRpb25Db250ZXh0IHtcbiAgICBpZiAoIXRoaXMuX2N1cnJlbnROYXZpZ2F0aW9uQ29udGV4dCkge1xuICAgICAgdGhyb3cgRXJyb3IoJ1tOYXZpZ2F0ZUVycm9yXSBOYXZpZ2F0aW9uIGNvbnRleHQgbm90IGF2YWlsYWJsZSBiZWNhdXNlIG5vIG5hdmlnYXRpb24gaXMgaW4gcHJvZ3Jlc3MuJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jdXJyZW50TmF2aWdhdGlvbkNvbnRleHQ7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBuYXZpZ2F0aW9uYWwgY29udGV4dHVhbCBkYXRhLlxuICAgKi9cbiAgcHVibGljIHNldEN1cnJlbnROYXZpZ2F0aW9uQ29udGV4dChjb250ZXh0OiBXb3JrYmVuY2hOYXZpZ2F0aW9uQ29udGV4dCB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLl9jdXJyZW50TmF2aWdhdGlvbkNvbnRleHQgPSBjb250ZXh0O1xuICB9XG5cbiAgLyoqXG4gICAqIEJsb2NrcyB1bnRpbCB0aGUgaW5pdGlhbCBsYXlvdXQgaXMgYXZhaWxhYmxlLCBpLmUuIGFmdGVyIGNvbXBsZXRpb24gb2YgQW5ndWxhcidzIGluaXRpYWwgbmF2aWdhdGlvbi5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgd2FpdEZvckluaXRpYWxMYXlvdXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fd29ya2JlbmNoTGF5b3V0U2VydmljZS5sYXlvdXQkKTtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuYXZpZ2F0aW9uIHRvIG5hdmlnYXRlIHZpZXcocykgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGFycmF5IG9mIGNvbW1hbmRzIGFuZCBleHRyYXMuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZU5hdmlnYXRpb25Gcm9tQ29tbWFuZHMoY29tbWFuZHM6IENvbW1hbmRzLCBleHRyYXM6IFdvcmtiZW5jaE5hdmlnYXRpb25FeHRyYXMpOiDJtU5hdmlnYXRlRm4ge1xuICByZXR1cm4gKGxheW91dDogybVXb3JrYmVuY2hMYXlvdXQpOiDJtVdvcmtiZW5jaExheW91dCB8IG51bGwgPT4ge1xuICAgIGlmIChleHRyYXMuY2xvc2UpIHtcbiAgICAgIGlmIChleHRyYXMudGFyZ2V0KSB7XG4gICAgICAgIGlmIChjb21tYW5kcy5sZW5ndGggfHwgZXh0cmFzLmhpbnQgfHwgZXh0cmFzLnBhcnRJZCB8fCBleHRyYXMucmVsYXRpdmVUbykge1xuICAgICAgICAgIHRocm93IEVycm9yKCdbTmF2aWdhdGVFcnJvcl0gQ29tbWFuZHMsIGhpbnQsIHBhcnQgb3IgcmVsYXRpdmVUbyBtdXN0IG5vdCBiZSBzZXQgd2hlbiBjbG9zaW5nIGEgdmlldyBieSBpZC4nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGF5b3V0LnJlbW92ZVZpZXcoZXh0cmFzLnRhcmdldCk7XG4gICAgICB9XG4gICAgICBjb25zdCB1cmxTZWdtZW50cyA9IFJvdXRlclV0aWxzLmNvbW1hbmRzVG9TZWdtZW50cyhjb21tYW5kcywge3JlbGF0aXZlVG86IGV4dHJhcy5yZWxhdGl2ZVRvfSk7XG4gICAgICByZXR1cm4gbGF5b3V0XG4gICAgICAgIC52aWV3cyh7XG4gICAgICAgICAgcGFydElkOiBleHRyYXMucGFydElkLFxuICAgICAgICAgIHNlZ21lbnRzOiBuZXcgVXJsU2VnbWVudE1hdGNoZXIodXJsU2VnbWVudHMsIHttYXRjaE1hdHJpeFBhcmFtczogZmFsc2UsIG1hdGNoV2lsZGNhcmRQYXRoOiB0cnVlfSksXG4gICAgICAgICAgbmF2aWdhdGlvbkhpbnQ6IGV4dHJhcy5oaW50ID8/IG51bGwsXG4gICAgICAgIH0pXG4gICAgICAgIC5yZWR1Y2UoKGxheW91dCwgdmlldykgPT4gbGF5b3V0LnJlbW92ZVZpZXcodmlldy5pZCksIGxheW91dCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgc3dpdGNoIChleHRyYXMudGFyZ2V0ID8/ICdhdXRvJykge1xuICAgICAgICBjYXNlICdibGFuayc6IHtcbiAgICAgICAgICByZXR1cm4gYWRkVmlldyhsYXlvdXQuY29tcHV0ZU5leHRWaWV3SWQoKSwgbGF5b3V0KTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdhdXRvJzoge1xuICAgICAgICAgIGNvbnN0IHVybFNlZ21lbnRzID0gUm91dGVyVXRpbHMuY29tbWFuZHNUb1NlZ21lbnRzKGNvbW1hbmRzLCB7cmVsYXRpdmVUbzogZXh0cmFzLnJlbGF0aXZlVG99KTtcbiAgICAgICAgICBjb25zdCB2aWV3cyA9IGxheW91dC52aWV3cyh7XG4gICAgICAgICAgICBwYXJ0SWQ6IGV4dHJhcy5wYXJ0SWQsXG4gICAgICAgICAgICBzZWdtZW50czogbmV3IFVybFNlZ21lbnRNYXRjaGVyKHVybFNlZ21lbnRzLCB7bWF0Y2hNYXRyaXhQYXJhbXM6IGZhbHNlLCBtYXRjaFdpbGRjYXJkUGF0aDogZmFsc2V9KSxcbiAgICAgICAgICAgIG5hdmlnYXRpb25IaW50OiBleHRyYXMuaGludCA/PyBudWxsLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmICh2aWV3cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB2aWV3cy5yZWR1Y2UoKGxheW91dCwgdmlldykgPT4gdXBkYXRlVmlldyh2aWV3LmlkLCBsYXlvdXQpLCBsYXlvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBhZGRWaWV3KGxheW91dC5jb21wdXRlTmV4dFZpZXdJZCgpLCBsYXlvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgY29uc3Qgdmlld0lkID0gZXh0cmFzLnRhcmdldCE7XG4gICAgICAgICAgaWYgKGxheW91dC5oYXNWaWV3KHZpZXdJZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB1cGRhdGVWaWV3KHZpZXdJZCwgbGF5b3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYWRkVmlldyh2aWV3SWQsIGxheW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBBZGRzIHRoZSBzcGVjaWZpZWQgdmlldyB0byB0aGUgbGF5b3V0LlxuICAgKi9cbiAgZnVuY3Rpb24gYWRkVmlldyh2aWV3SWQ6IHN0cmluZywgbGF5b3V0OiDJtVdvcmtiZW5jaExheW91dCk6IMm1V29ya2JlbmNoTGF5b3V0IHtcbiAgICAvLyBEZWZhdWx0IHRvIHRoZSBhY3RpdmUgcGFydCBpZiBub3Qgc3BlY2lmaWVkIG9yIG5vdCBpbiB0aGUgbGF5b3V0LCB3aXRoIHRoZSBhY3RpdmUgcGFydCBvZiB0aGUgbWFpbiBhcmVhIHRha2luZyBwcmVjZWRlbmNlLlxuICAgIGNvbnN0IHBhcnRJZCA9ICgoKTogc3RyaW5nID0+IHtcbiAgICAgIGlmIChleHRyYXMucGFydElkICYmIGxheW91dC5oYXNQYXJ0KGV4dHJhcy5wYXJ0SWQpKSB7XG4gICAgICAgIHJldHVybiBleHRyYXMucGFydElkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGxheW91dC5hY3RpdmVQYXJ0KHtncmlkOiAnbWFpbkFyZWEnfSk/LmlkID8/IGxheW91dC5hY3RpdmVQYXJ0KHtncmlkOiAnd29ya2JlbmNoJ30pLmlkO1xuICAgIH0pKCk7XG5cbiAgICByZXR1cm4gbGF5b3V0XG4gICAgICAuYWRkVmlldyh2aWV3SWQsIHtcbiAgICAgICAgcGFydElkOiBwYXJ0SWQsXG4gICAgICAgIHBvc2l0aW9uOiBleHRyYXMucG9zaXRpb24gPz8gJ2FmdGVyLWFjdGl2ZS12aWV3JyxcbiAgICAgICAgYWN0aXZhdGVWaWV3OiBleHRyYXMuYWN0aXZhdGUgPz8gdHJ1ZSxcbiAgICAgIH0pXG4gICAgICAubmF2aWdhdGVWaWV3KHZpZXdJZCwgY29tbWFuZHMsIHtcbiAgICAgICAgcmVsYXRpdmVUbzogZXh0cmFzLnJlbGF0aXZlVG8sXG4gICAgICAgIGhpbnQ6IGV4dHJhcy5oaW50LFxuICAgICAgICBjc3NDbGFzczogZXh0cmFzLmNzc0NsYXNzLFxuICAgICAgICBzdGF0ZTogZXh0cmFzLnN0YXRlLFxuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgc3BlY2lmaWVkIHZpZXcuXG4gICAqL1xuICBmdW5jdGlvbiB1cGRhdGVWaWV3KHZpZXdJZDogc3RyaW5nLCBsYXlvdXQ6IMm1V29ya2JlbmNoTGF5b3V0KTogybVXb3JrYmVuY2hMYXlvdXQge1xuICAgIGlmIChleHRyYXMuYWN0aXZhdGUgPz8gdHJ1ZSkge1xuICAgICAgbGF5b3V0ID0gbGF5b3V0LmFjdGl2YXRlVmlldyh2aWV3SWQpO1xuICAgIH1cblxuICAgIHJldHVybiBsYXlvdXQubmF2aWdhdGVWaWV3KHZpZXdJZCwgY29tbWFuZHMsIHtcbiAgICAgIHJlbGF0aXZlVG86IGV4dHJhcy5yZWxhdGl2ZVRvLFxuICAgICAgaGludDogZXh0cmFzLmhpbnQsXG4gICAgICBjc3NDbGFzczogZXh0cmFzLmNzc0NsYXNzLFxuICAgICAgc3RhdGU6IGV4dHJhcy5zdGF0ZSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgbmF2aWdhdGlvbiBleHRyYXMgd2l0aCB3b3JrYmVuY2ggbmF2aWdhdGlvbiBpbnN0cnVjdGlvbnMuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZU5hdmlnYXRpb25FeHRyYXMobGF5b3V0OiDJtVdvcmtiZW5jaExheW91dCwgZXh0cmFzPzogT21pdDxOYXZpZ2F0aW9uRXh0cmFzLCAncmVsYXRpdmVUbycgfCAnc3RhdGUnPik6IE5hdmlnYXRpb25FeHRyYXMge1xuICBjb25zdCB7d29ya2JlbmNoR3JpZCwgbWFpbkFyZWFHcmlkfSA9IGxheW91dC5zZXJpYWxpemUoe2V4Y2x1ZGVWaWV3TWFya2VkRm9yUmVtb3ZhbDogdHJ1ZX0pO1xuXG4gIHJldHVybiB7XG4gICAgLi4uZXh0cmFzLFxuICAgIC8vIEluc3RydWN0IHRoZSBBbmd1bGFyIHJvdXRlciB0byBwcm9jZXNzIHRoZSBuYXZpZ2F0aW9uIGV2ZW4gaWYgdGhlIFVSTCBkb2VzIG5vdCBjaGFuZ2UsIGUuZy4sIHdoZW4gY2hhbmdpbmcgdGhlIHdvcmtiZW5jaCBncmlkIHdoaWNoIGlzIG5vdCBjb250YWluZWQgaW4gdGhlIFVSTC5cbiAgICBvblNhbWVVcmxOYXZpZ2F0aW9uOiAncmVsb2FkJyxcbiAgICAvLyBVbnNldCBgcmVsYXRpdmVUb2AgYmVjYXVzZSBjb21tYW5kcyBhcmUgYWxyZWFkeSBub3JtYWxpemVkIHRvIHRoZWlyIGFic29sdXRlIGZvcm0uXG4gICAgcmVsYXRpdmVUbzogbnVsbCxcbiAgICAvLyBBc3NvY2lhdGUgd29ya2JlbmNoLXNwZWNpZmljIHN0YXRlIHdpdGggdGhlIG5hdmlnYXRpb24uXG4gICAgc3RhdGU6IFdvcmtiZW5jaE5hdmlnYXRpb25hbFN0YXRlcy5jcmVhdGUoe1xuICAgICAgd29ya2JlbmNoR3JpZDogd29ya2JlbmNoR3JpZCxcbiAgICAgIG1heGltaXplZDogbGF5b3V0Lm1heGltaXplZCxcbiAgICAgIHZpZXdTdGF0ZXM6IGxheW91dC52aWV3U3RhdGVzKCksXG4gICAgfSksXG4gICAgLy8gQWRkIHRoZSBtYWluIGFyZWEgYXMgcXVlcnkgcGFyYW1ldGVyLlxuICAgIHF1ZXJ5UGFyYW1zOiB7Li4uZXh0cmFzPy5xdWVyeVBhcmFtcywgW01BSU5fQVJFQV9MQVlPVVRfUVVFUllfUEFSQU1dOiBtYWluQXJlYUdyaWR9LFxuICAgIC8vIE1lcmdlIHdpdGggZXhpc3RpbmcgcXVlcnkgcGFyYW1zIHVubGVzcyBzcGVjaWZpZWQgYW4gZXhwbGljaXQgc3RyYXRlZ3ksIGUuZy4sIGZvciBtaWdyYXRpbmcgYW4gb3V0ZGF0ZWQgbGF5b3V0IFVSTC5cbiAgICAvLyBOb3RlIHRoYXQgYG51bGxgIGlzIGEgdmFsaWQgc3RyYXRlZ3kgZm9yIGNsZWFyaW5nIGV4aXN0aW5nIHF1ZXJ5IHBhcmFtcywgc28gZG8gbm90IHVzZSB0aGUgbnVsbGlzaCBjb2FsZXNjaW5nIG9wZXJhdG9yICg/PykuXG4gICAgcXVlcnlQYXJhbXNIYW5kbGluZzogRGVmaW5lZC5vckVsc2UoZXh0cmFzPy5xdWVyeVBhcmFtc0hhbmRsaW5nLCAnbWVyZ2UnKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBDb21wdXRlcyBjb21tYW5kcyB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gdGhlIEFuZ3VsYXIgcm91dGVyIHRvIG5hdmlnYXRlIHZpZXcgb3V0bGV0cyBhbmQgdG8gcmVtb3ZlIHZpZXcgb3V0bGV0cyBvZiByZW1vdmVkIHZpZXdzLlxuICovXG5mdW5jdGlvbiBjb21wdXRlTmF2aWdhdGlvbkNvbW1hbmRzKHByZXZpb3VzVmlld091dGxldHM6IFZpZXdPdXRsZXRzLCBuZXh0Vmlld091dGxldHM6IFZpZXdPdXRsZXRzKTogW3tvdXRsZXRzOiB7W291dGxldDogVmlld0lkXTogQ29tbWFuZHMgfCBudWxsfX1dIHwgW10ge1xuICBjb25zdCBwcmV2aW91c1ZpZXdPdXRsZXRNYXAgPSBuZXcgTWFwPFZpZXdJZCwgVXJsU2VnbWVudFtdPihPYmplY3RzLmVudHJpZXMocHJldmlvdXNWaWV3T3V0bGV0cykpO1xuICBjb25zdCBuZXh0Vmlld091dGxldE1hcCA9IG5ldyBNYXA8Vmlld0lkLCBVcmxTZWdtZW50W10+KE9iamVjdHMuZW50cmllcyhuZXh0Vmlld091dGxldHMpKTtcblxuICBjb25zdCBjb21tYW5kcyA9IG5ldyBNYXA8Vmlld0lkLCBDb21tYW5kcyB8IG51bGw+KCk7XG4gIGNvbnN0IHZpZXdJZHMgPSBuZXcgU2V0PFZpZXdJZD4oWy4uLnByZXZpb3VzVmlld091dGxldE1hcC5rZXlzKCksIC4uLm5leHRWaWV3T3V0bGV0TWFwLmtleXMoKV0pO1xuXG4gIHZpZXdJZHMuZm9yRWFjaCh2aWV3SWQgPT4ge1xuICAgIC8vIFRlc3QgaWYgdGhlIHZpZXcgd2FzIGFkZGVkIHRvIHRoZSBsYXlvdXQuXG4gICAgaWYgKCFwcmV2aW91c1ZpZXdPdXRsZXRNYXAuaGFzKHZpZXdJZCkpIHtcbiAgICAgIGNvbW1hbmRzLnNldCh2aWV3SWQsIFJvdXRlclV0aWxzLnNlZ21lbnRzVG9Db21tYW5kcyhuZXh0Vmlld091dGxldE1hcC5nZXQodmlld0lkKSEpKTtcbiAgICB9XG4gICAgLy8gVGVzdCBpZiB0aGUgdmlldyB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBsYXlvdXQuXG4gICAgZWxzZSBpZiAoIW5leHRWaWV3T3V0bGV0TWFwLmhhcyh2aWV3SWQpKSB7XG4gICAgICBjb21tYW5kcy5zZXQodmlld0lkLCBudWxsKTtcbiAgICB9XG4gICAgLy8gVGVzdCBpZiB0aGUgdmlldyB3YXMgdXBkYXRlZC5cbiAgICBlbHNlIGlmICghbmV3IFVybFNlZ21lbnRNYXRjaGVyKHByZXZpb3VzVmlld091dGxldE1hcC5nZXQodmlld0lkKSEsIHttYXRjaE1hdHJpeFBhcmFtczogdHJ1ZSwgbWF0Y2hXaWxkY2FyZFBhdGg6IGZhbHNlfSkubWF0Y2hlcyhuZXh0Vmlld091dGxldE1hcC5nZXQodmlld0lkKSEpKSB7XG4gICAgICBjb21tYW5kcy5zZXQodmlld0lkLCBSb3V0ZXJVdGlscy5zZWdtZW50c1RvQ29tbWFuZHMobmV4dFZpZXdPdXRsZXRNYXAuZ2V0KHZpZXdJZCkhKSk7XG4gICAgfVxuICB9KTtcblxuICAvLyBBZGQgdmlldyBjb21tYW5kcyB0byB0aGUgJ291dGxldHMnIHByb3BlcnR5IHRvIGJlIGludGVycHJldGVkIGJ5IHRoZSBBbmd1bGFyIHJvdXRlci5cbiAgcmV0dXJuIGNvbW1hbmRzLnNpemUgPyBbe291dGxldHM6IE9iamVjdC5mcm9tRW50cmllcyhjb21tYW5kcyl9XSA6IFtdO1xufVxuXG4vKipcbiAqIEBpbmhlcml0RG9jXG4gKiBAc2VlIE5hdmlnYXRlRm5cbiAqL1xuZXhwb3J0IHR5cGUgybVOYXZpZ2F0ZUZuID0gKGxheW91dDogybVXb3JrYmVuY2hMYXlvdXQpID0+IFByb21pc2U8ybVXb3JrYmVuY2hMYXlvdXQgfCBudWxsPiB8IMm1V29ya2JlbmNoTGF5b3V0IHwgbnVsbDtcbiJdfQ==
|
|
326
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiybV3b3JrYmVuY2gtcm91dGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9yb3V0aW5nL8m1d29ya2JlbmNoLXJvdXRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFtQixNQUFNLEVBQXNCLE1BQU0saUJBQWlCLENBQUM7QUFFOUUsT0FBTyxFQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLHFCQUFxQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQzFFLE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3BFLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFFNUUsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBR3ZDLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sWUFBWSxDQUFDOztBQUdsQyxrQkFBa0I7QUFFbEIsTUFBTSxPQUFPLGdCQUFnQjtJQWEzQjtRQVhpQixZQUFPLEdBQUcsTUFBTSxDQUFDLE1B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LENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDeEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyNCBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtOYXZpZ2F0aW9uRXh0cmFzLCBSb3V0ZXIsIFVybFNlZ21lbnQsIFVybFRyZWV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1dvcmtiZW5jaFJvdXRlcn0gZnJvbSAnLi93b3JrYmVuY2gtcm91dGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtEZWZpbmVkLCBPYnNlcnZhYmxlc30gZnJvbSAnQHNjaW9uL3Rvb2xraXQvdXRpbCc7XG5pbXBvcnQge2luamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIE5nWm9uZSwgcnVuSW5JbmplY3Rpb25Db250ZXh0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7V29ya2JlbmNoTGF5b3V0U2VydmljZX0gZnJvbSAnLi4vbGF5b3V0L3dvcmtiZW5jaC1sYXlvdXQuc2VydmljZSc7XG5pbXBvcnQge01BSU5fQVJFQV9MQVlPVVRfUVVFUllfUEFSQU19IGZyb20gJy4uL3dvcmtiZW5jaC5jb25zdGFudHMnO1xuaW1wb3J0IHtTSU5HTEVfTkFWSUdBVElPTl9FWEVDVVRPUn0gZnJvbSAnLi4vZXhlY3V0b3Ivc2luZ2xlLXRhc2stZXhlY3V0b3InO1xuaW1wb3J0IHtmaXJzdFZhbHVlRnJvbX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1dvcmtiZW5jaE5hdmlnYXRpb25hbFN0YXRlc30gZnJvbSAnLi93b3JrYmVuY2gtbmF2aWdhdGlvbmFsLXN0YXRlcyc7XG5pbXBvcnQge8m1V29ya2JlbmNoTGF5b3V0fSBmcm9tICcuLi9sYXlvdXQvybV3b3JrYmVuY2gtbGF5b3V0JztcbmltcG9ydCB7Um91dGluZ30gZnJvbSAnLi9yb3V0aW5nLnV0aWwnO1xuaW1wb3J0IHtDb21tYW5kcywgVmlld091dGxldHMsIFdvcmtiZW5jaE5hdmlnYXRpb25Db250ZXh0LCBXb3JrYmVuY2hOYXZpZ2F0aW9uRXh0cmFzfSBmcm9tICcuL3JvdXRpbmcubW9kZWwnO1xuaW1wb3J0IHtWaWV3SWR9IGZyb20gJy4uL3ZpZXcvd29ya2JlbmNoLXZpZXcubW9kZWwnO1xuaW1wb3J0IHtVcmxTZWdtZW50TWF0Y2hlcn0gZnJvbSAnLi91cmwtc2VnbWVudC1tYXRjaGVyJztcbmltcG9ydCB7T2JqZWN0c30gZnJvbSAnLi4vY29tbW9uL29iamVjdHMudXRpbCc7XG5pbXBvcnQge1dPUktCRU5DSF9WSUVXX1JFR0lTVFJZfSBmcm9tICcuLi92aWV3L3dvcmtiZW5jaC12aWV3LnJlZ2lzdHJ5JztcbmltcG9ydCB7TG9nZ2VyfSBmcm9tICcuLi9sb2dnaW5nJztcbmltcG9ydCB7Q2FuQ2xvc2V9IGZyb20gJy4uL3dvcmtiZW5jaC5tb2RlbCc7XG5cbi8qKiBAaW5oZXJpdERvYyAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgybVXb3JrYmVuY2hSb3V0ZXIgaW1wbGVtZW50cyBXb3JrYmVuY2hSb3V0ZXIge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3JvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IF93b3JrYmVuY2hMYXlvdXRTZXJ2aWNlID0gaW5qZWN0KFdvcmtiZW5jaExheW91dFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF93b3JrYmVuY2hWaWV3UmVnaXN0cnkgPSBpbmplY3QoV09SS0JFTkNIX1ZJRVdfUkVHSVNUUlkpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlciA9IGluamVjdChMb2dnZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IF96b25lID0gaW5qZWN0KE5nWm9uZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NpbmdsZU5hdmlnYXRpb25FeGVjdXRvciA9IGluamVjdChTSU5HTEVfTkFWSUdBVElPTl9FWEVDVVRPUik7XG5cbiAgLyoqIEhvbGRzIHRoZSBjdXJyZW50IG5hdmlnYXRpb25hbCBjb250ZXh0IGR1cmluZyBhIHdvcmtiZW5jaCBuYXZpZ2F0aW9uLCBvciBgbnVsbGAgaWYgbm8gbmF2aWdhdGlvbiBpcyBpbiBwcm9ncmVzcy4gKi9cbiAgcHJpdmF0ZSBfY3VycmVudE5hdmlnYXRpb25Db250ZXh0OiBXb3JrYmVuY2hOYXZpZ2F0aW9uQ29udGV4dCB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8vIEluc3RydWN0IHRoZSBBbmd1bGFyIHJvdXRlciB0byBwcm9jZXNzIG5hdmlnYXRpb25zIHRoYXQgZG8gbm90IGNoYW5nZSB0aGUgY3VycmVudCBVUkwsIGkuZS4sIHdoZW4gb25seSB1cGRhdGluZyBuYXZpZ2F0aW9uIHN0YXRlLlxuICAgIC8vIEZvciBleGFtcGxlLCB0aGUgd29ya2JlbmNoIGdyaWQgaXMgcGFzc2VkIHRvIHRoZSBuYXZpZ2F0aW9uIGFzIHN0YXRlLCBub3QgYXMgYSBxdWVyeSBwYXJhbWV0ZXIuIFdpdGhvdXQgdGhpcyBmbGFnIHNldCwgY2hhbmdlcyB0b1xuICAgIC8vIHRoZSB3b3JrYmVuY2ggZ3JpZCB3b3VsZCBub3QgYmUgYWRkZWQgdG8gdGhlIGJyb3dzaW5nIGhpc3Rvcnkgc3RhY2suXG4gICAgLy8gQWx0aG91Z2ggdGhlIGBvblNhbWVVcmxOYXZpZ2F0aW9uYCBmbGFnIGNhbiBiZSBzZXQgcGVyIG5hdmlnYXRpb24gdmlhIHRoZSBuYXZpZ2F0aW9uIGV4dHJhcywgdGhpcyBpcyBub3Qgc3VmZmljaWVudCBiZWNhdXNlIHRoZVxuICAgIC8vIEFuZ3VsYXIgcm91dGVyIGlnbm9yZXMgaXQgd2hlbiBuYXZpZ2F0aW5nIGJhY2sgYW5kIGZvcnRoIGluIHRoZSBicm93c2luZyBoaXN0b3J5LlxuICAgIC8vIFNlZSBBbmd1bGFyIHJvdXRlci50cyNzZXRVcExvY2F0aW9uQ2hhbmdlTGlzdGVuZXIgYW5kIHJvdXRlci50cyNuYXZpZ2F0ZVRvU3luY1dpdGhCcm93c2VyXG4gICAgdGhpcy5fcm91dGVyLm9uU2FtZVVybE5hdmlnYXRpb24gPSAncmVsb2FkJztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBwdWJsaWMgbmF2aWdhdGUoY29tbWFuZHM6IENvbW1hbmRzLCBleHRyYXM/OiBXb3JrYmVuY2hOYXZpZ2F0aW9uRXh0cmFzKTogUHJvbWlzZTxib29sZWFuPjtcbiAgcHVibGljIG5hdmlnYXRlKG5hdmlnYXRlRm46IMm1TmF2aWdhdGVGbiwgZXh0cmFzPzogT21pdDxOYXZpZ2F0aW9uRXh0cmFzLCAncmVsYXRpdmVUbycgfCAnc3RhdGUnPik6IFByb21pc2U8Ym9vbGVhbj47XG4gIHB1YmxpYyBuYXZpZ2F0ZShjb21tYW5kc09yTmF2aWdhdGVGbjogQ29tbWFuZHMgfCDJtU5hdmlnYXRlRm4sIGV4dHJhcz86IFdvcmtiZW5jaE5hdmlnYXRpb25FeHRyYXMgfCBPbWl0PE5hdmlnYXRpb25FeHRyYXMsICdyZWxhdGl2ZVRvJyB8ICdzdGF0ZSc+KTogUHJvbWlzZTxib29sZWFuPjtcbiAgcHVibGljIG5hdmlnYXRlKGNvbW1hbmRzT3JOYXZpZ2F0ZUZuOiBDb21tYW5kcyB8IMm1TmF2aWdhdGVGbiwgZXh0cmFzPzogV29ya2JlbmNoTmF2aWdhdGlvbkV4dHJhcyB8IE9taXQ8TmF2aWdhdGlvbkV4dHJhcywgJ3JlbGF0aXZlVG8nIHwgJ3N0YXRlJz4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAvLyBFbnN1cmUgdG8gcnVuIGluIEFuZ3VsYXIgem9uZS5cbiAgICBpZiAoIU5nWm9uZS5pc0luQW5ndWxhclpvbmUoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3pvbmUucnVuKCgpID0+IHRoaXMubmF2aWdhdGUoY29tbWFuZHNPck5hdmlnYXRlRm4sIGV4dHJhcykpO1xuICAgIH1cblxuICAgIGNvbnN0IG5hdmlnYXRlRm4gPSB0eXBlb2YgY29tbWFuZHNPck5hdmlnYXRlRm4gPT09ICdmdW5jdGlvbicgPyBjb21tYW5kc09yTmF2aWdhdGVGbiA6IGNyZWF0ZU5hdmlnYXRpb25Gcm9tQ29tbWFuZHMoY29tbWFuZHNPck5hdmlnYXRlRm4sIGV4dHJhcyA/PyB7fSk7XG5cbiAgICAvLyBTZXJpYWxpemUgbmF2aWdhdGlvbiByZXF1ZXN0cyB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyB3aGVuIG1vZGlmeWluZyB0aGUgY3VycmVudGx5IGFjdGl2ZSB3b3JrYmVuY2ggbGF5b3V0LlxuICAgIHJldHVybiB0aGlzLl9zaW5nbGVOYXZpZ2F0aW9uRXhlY3V0b3Iuc3VibWl0KGFzeW5jICgpID0+IHtcbiAgICAgIC8vIFdhaXQgdW50aWwgdGhlIGluaXRpYWwgbGF5b3V0IGlzIGF2YWlsYWJsZSwgaS5lLiwgYWZ0ZXIgY29tcGxldGlvbiBvZiBBbmd1bGFyJ3MgaW5pdGlhbCBuYXZpZ2F0aW9uLlxuICAgICAgLy8gT3RoZXJ3aXNlLCB0aGlzIG5hdmlnYXRpb24gd291bGQgb3ZlcnJpZGUgdGhlIGluaXRpYWwgbGF5b3V0IGFzIGdpdmVuIGluIHRoZSBVUkwuXG4gICAgICBpZiAoIXRoaXMuX3dvcmtiZW5jaExheW91dFNlcnZpY2UubGF5b3V0KCkpIHtcbiAgICAgICAgYXdhaXQgdGhpcy53YWl0Rm9ySW5pdGlhbExheW91dCgpO1xuICAgICAgfVxuXG4gICAgICAvLyBMZXQgdGhlIG5hdmlnYXRvciBjb21wdXRlIHRoZSBuZXcgd29ya2JlbmNoIGxheW91dC5cbiAgICAgIGNvbnN0IGN1cnJlbnRMYXlvdXQgPSB0aGlzLl93b3JrYmVuY2hMYXlvdXRTZXJ2aWNlLmxheW91dCgpITtcbiAgICAgIGxldCBuZXdMYXlvdXQ6IMm1V29ya2JlbmNoTGF5b3V0IHwgbnVsbCA9IGF3YWl0IHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLl9pbmplY3RvciwgKCkgPT4gbmF2aWdhdGVGbihjdXJyZW50TGF5b3V0KSkgYXMgybVXb3JrYmVuY2hMYXlvdXQ7XG4gICAgICBpZiAoIW5ld0xheW91dCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gUmVtb3ZlIHZpZXdzIG1hcmtlZCBmb3IgcmVtb3ZhbCwgaW52b2tpbmcgYENhbkNsb3NlYCBndWFyZCBpZiBpbXBsZW1lbnRlZC5cbiAgICAgIG5ld0xheW91dCA9IGF3YWl0IG5ld0xheW91dC5yZW1vdmVWaWV3c01hcmtlZEZvclJlbW92YWwodmlld1VpZCA9PiB0aGlzLmNhbkNsb3NlVmlldyh2aWV3VWlkKSk7XG5cbiAgICAgIC8vIENyZWF0ZSBleHRyYXMgd2l0aCB3b3JrYmVuY2ggbmF2aWdhdGlvbiBpbnN0cnVjdGlvbnMuXG4gICAgICBleHRyYXMgPSBjcmVhdGVOYXZpZ2F0aW9uRXh0cmFzKHtuZXdMYXlvdXQsIGN1cnJlbnRMYXlvdXR9LCBleHRyYXMpO1xuXG4gICAgICAvLyBQZXJmb3JtIHRoZSBuYXZpZ2F0aW9uLlxuICAgICAgY29uc3QgY29tbWFuZHM6IENvbW1hbmRzID0gY29tcHV0ZU5hdmlnYXRpb25Db21tYW5kcyhjdXJyZW50TGF5b3V0LnZpZXdPdXRsZXRzKCksIG5ld0xheW91dC52aWV3T3V0bGV0cygpKTtcbiAgICAgIGlmICghKGF3YWl0IHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShjb21tYW5kcywgZXh0cmFzKSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICAvLyBCbG9jayBzdWJzZXF1ZW50IG5hdmlnYXRpb24ocykgdW50aWwgQW5ndWxhciBoYXMgZmx1c2hlZCB0aGUgY2hhbmdlZCBsYXlvdXQgdG8gdGhlIERPTS5cbiAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX3pvbmUub25TdGFibGUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUGVyZm9ybXMgY2hhbmdlcyB0byB0aGUgY3VycmVudCB3b3JrYmVuY2ggbGF5b3V0LlxuICAgKlxuICAgKiBVbmxpa2Uge0BsaW5rIG5hdmlnYXRlfSwgZG9lcyBub3QgcGVyZm9ybSB0aGUgbmF2aWdhdGlvbiBidXQgcmV0dXJucyB0aGUgVVJMIHRyZWUgaW5zdGVhZC5cbiAgICpcbiAgICogVGhlIHJvdXRlciB3aWxsIGludm9rZSB0aGUgY2FsbGJhY2sgYW5kIHBhc3MgdGhlIGN1cnJlbnQgbGF5b3V0IGZvciBtb2RpZmljYXRpb24uIFRoZSBjYWxsYmFjayBjYW4gY2FsbCBgaW5qZWN0YCB0byBnZXQgYW55IHJlcXVpcmVkIGRlcGVuZGVuY2llcy5cbiAgICpcbiAgICogVGhlIGZvbGxvd2luZyBleGFtcGxlIGFkZHMgYSBwYXJ0IHRvIHRoZSBsZWZ0IG9mIHRoZSBtYWluIGFyZWEsIGluc2VydHMgYSB2aWV3IGFuZCBuYXZpZ2F0ZXMgaXQuXG4gICAqXG4gICAqIGBgYHRzXG4gICAqIGluamVjdChXb3JrYmVuY2hSb3V0ZXIpLmNyZWF0ZVVybFRyZWUobGF5b3V0ID0+IGxheW91dFxuICAgKiAgIC5hZGRQYXJ0KCdsZWZ0Jywge3JlbGF0aXZlVG86IE1BSU5fQVJFQSwgYWxpZ246ICdsZWZ0J30pXG4gICAqICAgLmFkZFZpZXcoJ25hdmlnYXRvcicsIHtwYXJ0SWQ6ICdsZWZ0J30pXG4gICAqICAgLm5hdmlnYXRlVmlldygnbmF2aWdhdG9yJywgWydwYXRoL3RvL3ZpZXcnXSlcbiAgICogICAuYWN0aXZhdGVWaWV3KCduYXZpZ2F0b3InKSxcbiAgICogKTtcbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSBvbk5hdmlnYXRlIC0gU3BlY2lmaWVzIHRoZSBjYWxsYmFjayB0byBtb2RpZnkgdGhlIGxheW91dC5cbiAgICogQHBhcmFtIGV4dHJhcyAtIENvbnRyb2xzIGhvdyB0byBwZXJmb3JtIHRoZSBuYXZpZ2F0aW9uLlxuICAgKiBAc2VlIE5hdmlnYXRlRm5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVVcmxUcmVlKG9uTmF2aWdhdGU6IChsYXlvdXQ6IMm1V29ya2JlbmNoTGF5b3V0KSA9PiBQcm9taXNlPMm1V29ya2JlbmNoTGF5b3V0IHwgbnVsbD4gfCDJtVdvcmtiZW5jaExheW91dCB8IG51bGwsIGV4dHJhcz86IE9taXQ8TmF2aWdhdGlvbkV4dHJhcywgJ3JlbGF0aXZlVG8nIHwgJ3N0YXRlJz4pOiBQcm9taXNlPFVybFRyZWUgfCBudWxsPiB7XG4gICAgLy8gRW5zdXJlIHRvIHJ1biBpbiBBbmd1bGFyIHpvbmUuXG4gICAgaWYgKCFOZ1pvbmUuaXNJbkFuZ3VsYXJab25lKCkpIHtcbiAgICAgIHJldHVybiB0aGlzLl96b25lLnJ1bigoKSA9PiB0aGlzLmNyZWF0ZVVybFRyZWUob25OYXZpZ2F0ZSwgZXh0cmFzKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3NpbmdsZU5hdmlnYXRpb25FeGVjdXRvci5zdWJtaXQoYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gV2FpdCB1bnRpbCB0aGUgaW5pdGlhbCBsYXlvdXQgaXMgYXZhaWxhYmxlLCBpLmUuLCBhZnRlciBjb21wbGV0aW9uIG9mIEFuZ3VsYXIncyBpbml0aWFsIG5hdmlnYXRpb24uXG4gICAgICAvLyBPdGhlcndpc2UsIHdvdWxkIG92ZXJyaWRlIHRoZSBpbml0aWFsIGxheW91dCBhcyBnaXZlbiBpbiB0aGUgVVJMLlxuICAgICAgaWYgKCF0aGlzLl93b3JrYmVuY2hMYXlvdXRTZXJ2aWNlLmxheW91dCgpKSB7XG4gICAgICAgIGF3YWl0IHRoaXMud2FpdEZvckluaXRpYWxMYXlvdXQoKTtcbiAgICAgIH1cblxuICAgICAgLy8gTGV0IHRoZSBuYXZpZ2F0b3IgY29tcHV0ZSB0aGUgbmV3IHdvcmtiZW5jaCBsYXlvdXQuXG4gICAgICBjb25zdCBjdXJyZW50TGF5b3V0ID0gdGhpcy5fd29ya2JlbmNoTGF5b3V0U2VydmljZS5sYXlvdXQoKSE7XG4gICAgICBsZXQgbmV3TGF5b3V0OiDJtVdvcmtiZW5jaExheW91dCB8IG51bGwgPSBhd2FpdCBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5faW5qZWN0b3IsICgpID0+IG9uTmF2aWdhdGUoY3VycmVudExheW91dCkpO1xuICAgICAgaWYgKCFuZXdMYXlvdXQpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIFJlbW92ZSB2aWV3cyBtYXJrZWQgZm9yIHJlbW92YWwuXG4gICAgICBuZXdMYXlvdXQgPSBhd2FpdCBuZXdMYXlvdXQucmVtb3ZlVmlld3NNYXJrZWRGb3JSZW1vdmFsKCk7XG5cbiAgICAgIC8vIENyZWF0ZSBleHRyYXMgd2l0aCB3b3JrYmVuY2ggbmF2aWdhdGlvbiBpbnN0cnVjdGlvbnMuXG4gICAgICBleHRyYXMgPSBjcmVhdGVOYXZpZ2F0aW9uRXh0cmFzKHtuZXdMYXlvdXQsIGN1cnJlbnRMYXlvdXR9LCBleHRyYXMpO1xuXG4gICAgICAvLyBDcmVhdGUgdGhlIG5ldyBVUkwgdHJlZS5cbiAgICAgIGNvbnN0IGNvbW1hbmRzOiBDb21tYW5kcyA9IGNvbXB1dGVOYXZpZ2F0aW9uQ29tbWFuZHMoY3VycmVudExheW91dC52aWV3T3V0bGV0cygpLCBuZXdMYXlvdXQudmlld091dGxldHMoKSk7XG4gICAgICByZXR1cm4gdGhpcy5fcm91dGVyLmNyZWF0ZVVybFRyZWUoY29tbWFuZHMsIGV4dHJhcyk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGVjaWRlcyBpZiBnaXZlbiB2aWV3IGNhbiBiZSBjbG9zZWQsIGludm9raW5nIGBDYW5DbG9zZWAgZ3VhcmQgaWYgaW1wbGVtZW50ZWQuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGNhbkNsb3NlVmlldyh2aWV3VWlkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB2aWV3ID0gdGhpcy5fd29ya2JlbmNoVmlld1JlZ2lzdHJ5Lm9iamVjdHMoKS5maW5kKHZpZXcgPT4gdmlldy51aWQgPT09IHZpZXdVaWQpO1xuICAgIGlmICghdmlldykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmICghdmlldy5jbG9zYWJsZSgpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gVGVzdCBpZiB0aGUgdmlldyBpbXBsZW1lbnRzIGBDYW5DbG9zZWAgZ3VhcmQuXG4gICAgY29uc3QgY29tcG9uZW50ID0gdmlldy5nZXRDb21wb25lbnQoKSBhcyBDYW5DbG9zZSB8IG51bGw7XG4gICAgaWYgKHR5cGVvZiBjb21wb25lbnQ/LmNhbkNsb3NlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBJbnZva2UgYENhbkNsb3NlYCBndWFyZCB0byBkZWNpZGUgaWYgdG8gY2xvc2UgdGhlIHZpZXcuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNhbkNsb3NlID0gcnVuSW5JbmplY3Rpb25Db250ZXh0KHZpZXcuZ2V0Q29tcG9uZW50SW5qZWN0b3IoKSEsICgpID0+IGNvbXBvbmVudC5jYW5DbG9zZSgpKTtcbiAgICAgIHJldHVybiBhd2FpdCBmaXJzdFZhbHVlRnJvbShPYnNlcnZhYmxlcy5jb2VyY2UoY2FuQ2xvc2UpLCB7ZGVmYXVsdFZhbHVlOiB0cnVlfSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKGBVbmhhbmRsZWQgZXJyb3Igd2hpbGUgaW52b2tpbmcgJ0NhbkNsb3NlJyBndWFyZCBvZiB2aWV3ICcke3ZpZXcuaWR9Jy5gLCBlcnJvcik7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY29udGV4dCBvZiB0aGUgY3VycmVudCB3b3JrYmVuY2ggbmF2aWdhdGlvbiwgd2hlbiBiZWluZyBpbnZva2VkIGR1cmluZyBuYXZpZ2F0aW9uLCBvciB0aHJvd3MgYW4gZXJyb3Igb3RoZXJ3aXNlLlxuICAgKi9cbiAgcHVibGljIGdldEN1cnJlbnROYXZpZ2F0aW9uQ29udGV4dCgpOiBXb3JrYmVuY2hOYXZpZ2F0aW9uQ29udGV4dCB7XG4gICAgaWYgKCF0aGlzLl9jdXJyZW50TmF2aWdhdGlvbkNvbnRleHQpIHtcbiAgICAgIHRocm93IEVycm9yKCdbTmF2aWdhdGVFcnJvcl0gTmF2aWdhdGlvbiBjb250ZXh0IG5vdCBhdmFpbGFibGUgYmVjYXVzZSBubyBuYXZpZ2F0aW9uIGlzIGluIHByb2dyZXNzLicpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY3VycmVudE5hdmlnYXRpb25Db250ZXh0O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgbmF2aWdhdGlvbmFsIGNvbnRleHR1YWwgZGF0YS5cbiAgICovXG4gIHB1YmxpYyBzZXRDdXJyZW50TmF2aWdhdGlvbkNvbnRleHQoY29udGV4dDogV29ya2JlbmNoTmF2aWdhdGlvbkNvbnRleHQgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5fY3VycmVudE5hdmlnYXRpb25Db250ZXh0ID0gY29udGV4dDtcbiAgfVxuXG4gIC8qKlxuICAgKiBCbG9ja3MgdW50aWwgdGhlIGluaXRpYWwgbGF5b3V0IGlzIGF2YWlsYWJsZSwgaS5lLiBhZnRlciBjb21wbGV0aW9uIG9mIEFuZ3VsYXIncyBpbml0aWFsIG5hdmlnYXRpb24uXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHdhaXRGb3JJbml0aWFsTGF5b3V0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX3dvcmtiZW5jaExheW91dFNlcnZpY2UubGF5b3V0JCk7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmF2aWdhdGlvbiB0byBuYXZpZ2F0ZSB2aWV3KHMpIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBhcnJheSBvZiBjb21tYW5kcyBhbmQgZXh0cmFzLlxuICovXG5mdW5jdGlvbiBjcmVhdGVOYXZpZ2F0aW9uRnJvbUNvbW1hbmRzKGNvbW1hbmRzOiBDb21tYW5kcywgZXh0cmFzOiBXb3JrYmVuY2hOYXZpZ2F0aW9uRXh0cmFzKTogybVOYXZpZ2F0ZUZuIHtcbiAgcmV0dXJuIChsYXlvdXQ6IMm1V29ya2JlbmNoTGF5b3V0KTogybVXb3JrYmVuY2hMYXlvdXQgfCBudWxsID0+IHtcbiAgICBpZiAoZXh0cmFzLmNsb3NlKSB7XG4gICAgICBpZiAoZXh0cmFzLnRhcmdldCkge1xuICAgICAgICBpZiAoY29tbWFuZHMubGVuZ3RoIHx8IGV4dHJhcy5oaW50IHx8IGV4dHJhcy5wYXJ0SWQgfHwgZXh0cmFzLnJlbGF0aXZlVG8pIHtcbiAgICAgICAgICB0aHJvdyBFcnJvcignW05hdmlnYXRlRXJyb3JdIENvbW1hbmRzLCBoaW50LCBwYXJ0IG9yIHJlbGF0aXZlVG8gbXVzdCBub3QgYmUgc2V0IHdoZW4gY2xvc2luZyBhIHZpZXcgYnkgaWQuJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxheW91dC5yZW1vdmVWaWV3KGV4dHJhcy50YXJnZXQpO1xuICAgICAgfVxuICAgICAgY29uc3QgdXJsU2VnbWVudHMgPSBSb3V0aW5nLmNvbW1hbmRzVG9TZWdtZW50cyhjb21tYW5kcywge3JlbGF0aXZlVG86IGV4dHJhcy5yZWxhdGl2ZVRvfSk7XG4gICAgICByZXR1cm4gbGF5b3V0XG4gICAgICAgIC52aWV3cyh7XG4gICAgICAgICAgcGFydElkOiBleHRyYXMucGFydElkLFxuICAgICAgICAgIHNlZ21lbnRzOiBuZXcgVXJsU2VnbWVudE1hdGNoZXIodXJsU2VnbWVudHMsIHttYXRjaE1hdHJpeFBhcmFtczogZmFsc2UsIG1hdGNoV2lsZGNhcmRQYXRoOiB0cnVlfSksXG4gICAgICAgICAgbmF2aWdhdGlvbkhpbnQ6IGV4dHJhcy5oaW50ID8/IG51bGwsXG4gICAgICAgIH0pXG4gICAgICAgIC5yZWR1Y2UoKGxheW91dCwgdmlldykgPT4gbGF5b3V0LnJlbW92ZVZpZXcodmlldy5pZCksIGxheW91dCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgc3dpdGNoIChleHRyYXMudGFyZ2V0ID8/ICdhdXRvJykge1xuICAgICAgICBjYXNlICdibGFuayc6IHtcbiAgICAgICAgICByZXR1cm4gYWRkVmlldyhsYXlvdXQuY29tcHV0ZU5leHRWaWV3SWQoKSwgbGF5b3V0KTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdhdXRvJzoge1xuICAgICAgICAgIGNvbnN0IHVybFNlZ21lbnRzID0gUm91dGluZy5jb21tYW5kc1RvU2VnbWVudHMoY29tbWFuZHMsIHtyZWxhdGl2ZVRvOiBleHRyYXMucmVsYXRpdmVUb30pO1xuICAgICAgICAgIGNvbnN0IHZpZXdzID0gbGF5b3V0LnZpZXdzKHtcbiAgICAgICAgICAgIHBhcnRJZDogZXh0cmFzLnBhcnRJZCxcbiAgICAgICAgICAgIHNlZ21lbnRzOiBuZXcgVXJsU2VnbWVudE1hdGNoZXIodXJsU2VnbWVudHMsIHttYXRjaE1hdHJpeFBhcmFtczogZmFsc2UsIG1hdGNoV2lsZGNhcmRQYXRoOiBmYWxzZX0pLFxuICAgICAgICAgICAgbmF2aWdhdGlvbkhpbnQ6IGV4dHJhcy5oaW50ID8/IG51bGwsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKHZpZXdzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHZpZXdzLnJlZHVjZSgobGF5b3V0LCB2aWV3KSA9PiB1cGRhdGVWaWV3KHZpZXcuaWQsIGxheW91dCksIGxheW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGFkZFZpZXcobGF5b3V0LmNvbXB1dGVOZXh0Vmlld0lkKCksIGxheW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICBjb25zdCB2aWV3SWQgPSBleHRyYXMudGFyZ2V0ITtcbiAgICAgICAgICBpZiAobGF5b3V0Lmhhc1ZpZXcodmlld0lkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHVwZGF0ZVZpZXcodmlld0lkLCBsYXlvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBhZGRWaWV3KHZpZXdJZCwgbGF5b3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIEFkZHMgdGhlIHNwZWNpZmllZCB2aWV3IHRvIHRoZSBsYXlvdXQuXG4gICAqL1xuICBmdW5jdGlvbiBhZGRWaWV3KHZpZXdJZDogc3RyaW5nLCBsYXlvdXQ6IMm1V29ya2JlbmNoTGF5b3V0KTogybVXb3JrYmVuY2hMYXlvdXQge1xuICAgIC8vIERlZmF1bHQgdG8gdGhlIGFjdGl2ZSBwYXJ0IGlmIG5vdCBzcGVjaWZpZWQgb3Igbm90IGluIHRoZSBsYXlvdXQsIHdpdGggdGhlIGFjdGl2ZSBwYXJ0IG9mIHRoZSBtYWluIGFyZWEgdGFraW5nIHByZWNlZGVuY2UuXG4gICAgY29uc3QgcGFydElkID0gKCgpOiBzdHJpbmcgPT4ge1xuICAgICAgaWYgKGV4dHJhcy5wYXJ0SWQgJiYgbGF5b3V0Lmhhc1BhcnQoZXh0cmFzLnBhcnRJZCkpIHtcbiAgICAgICAgcmV0dXJuIGV4dHJhcy5wYXJ0SWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gbGF5b3V0LmFjdGl2ZVBhcnQoe2dyaWQ6ICdtYWluQXJlYSd9KT8uaWQgPz8gbGF5b3V0LmFjdGl2ZVBhcnQoe2dyaWQ6ICd3b3JrYmVuY2gnfSkuaWQ7XG4gICAgfSkoKTtcblxuICAgIHJldHVybiBsYXlvdXRcbiAgICAgIC5hZGRWaWV3KHZpZXdJZCwge1xuICAgICAgICBwYXJ0SWQ6IHBhcnRJZCxcbiAgICAgICAgcG9zaXRpb246IGV4dHJhcy5wb3NpdGlvbiA/PyAnYWZ0ZXItYWN0aXZlLXZpZXcnLFxuICAgICAgICBhY3RpdmF0ZVZpZXc6IGV4dHJhcy5hY3RpdmF0ZSA/PyB0cnVlLFxuICAgICAgICBhY3RpdmF0ZVBhcnQ6IGV4dHJhcy5hY3RpdmF0ZSA/PyB0cnVlLFxuICAgICAgfSlcbiAgICAgIC5uYXZpZ2F0ZVZpZXcodmlld0lkLCBjb21tYW5kcywge1xuICAgICAgICByZWxhdGl2ZVRvOiBleHRyYXMucmVsYXRpdmVUbyxcbiAgICAgICAgaGludDogZXh0cmFzLmhpbnQsXG4gICAgICAgIGNzc0NsYXNzOiBleHRyYXMuY3NzQ2xhc3MsXG4gICAgICAgIGRhdGE6IGV4dHJhcy5kYXRhLFxuICAgICAgICBzdGF0ZTogZXh0cmFzLnN0YXRlLFxuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgc3BlY2lmaWVkIHZpZXcuXG4gICAqL1xuICBmdW5jdGlvbiB1cGRhdGVWaWV3KHZpZXdJZDogc3RyaW5nLCBsYXlvdXQ6IMm1V29ya2JlbmNoTGF5b3V0KTogybVXb3JrYmVuY2hMYXlvdXQge1xuICAgIGlmIChleHRyYXMuYWN0aXZhdGUgPz8gdHJ1ZSkge1xuICAgICAgbGF5b3V0ID0gbGF5b3V0LmFjdGl2YXRlVmlldyh2aWV3SWQsIHthY3RpdmF0ZVBhcnQ6IHRydWV9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGF5b3V0Lm5hdmlnYXRlVmlldyh2aWV3SWQsIGNvbW1hbmRzLCB7XG4gICAgICByZWxhdGl2ZVRvOiBleHRyYXMucmVsYXRpdmVUbyxcbiAgICAgIGhpbnQ6IGV4dHJhcy5oaW50LFxuICAgICAgY3NzQ2xhc3M6IGV4dHJhcy5jc3NDbGFzcyxcbiAgICAgIGRhdGE6IGV4dHJhcy5kYXRhLFxuICAgICAgc3RhdGU6IGV4dHJhcy5zdGF0ZSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgbmF2aWdhdGlvbiBleHRyYXMgd2l0aCB3b3JrYmVuY2ggbmF2aWdhdGlvbiBpbnN0cnVjdGlvbnMuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZU5hdmlnYXRpb25FeHRyYXMobGF5b3V0czoge25ld0xheW91dDogybVXb3JrYmVuY2hMYXlvdXQ7IGN1cnJlbnRMYXlvdXQ/OiDJtVdvcmtiZW5jaExheW91dCB8IHVuZGVmaW5lZH0sIGV4dHJhcz86IE9taXQ8TmF2aWdhdGlvbkV4dHJhcywgJ3JlbGF0aXZlVG8nIHwgJ3N0YXRlJz4pOiBOYXZpZ2F0aW9uRXh0cmFzIHtcbiAgY29uc3Qge25ld0xheW91dCwgY3VycmVudExheW91dH0gPSBsYXlvdXRzO1xuICBjb25zdCB7d29ya2JlbmNoR3JpZCwgbWFpbkFyZWFHcmlkfSA9IG5ld0xheW91dC5zZXJpYWxpemUoe2V4Y2x1ZGVWaWV3TWFya2VkRm9yUmVtb3ZhbDogdHJ1ZX0pO1xuXG4gIHJldHVybiB7XG4gICAgLi4uZXh0cmFzLFxuICAgIC8vIEluc3RydWN0IHRoZSBBbmd1bGFyIHJvdXRlciB0byBwcm9jZXNzIHRoZSBuYXZpZ2F0aW9uIGV2ZW4gaWYgdGhlIFVSTCBkb2VzIG5vdCBjaGFuZ2UsIGUuZy4sIHdoZW4gY2hhbmdpbmcgdGhlIHdvcmtiZW5jaCBncmlkIHdoaWNoIGlzIG5vdCBjb250YWluZWQgaW4gdGhlIFVSTC5cbiAgICBvblNhbWVVcmxOYXZpZ2F0aW9uOiAncmVsb2FkJyxcbiAgICAvLyBVbnNldCBgcmVsYXRpdmVUb2AgYmVjYXVzZSBjb21tYW5kcyBhcmUgYWxyZWFkeSBub3JtYWxpemVkIHRvIHRoZWlyIGFic29sdXRlIGZvcm0uXG4gICAgcmVsYXRpdmVUbzogbnVsbCxcbiAgICAvLyBBc3NvY2lhdGUgd29ya2JlbmNoLXNwZWNpZmljIHN0YXRlIHdpdGggdGhlIG5hdmlnYXRpb24uXG4gICAgc3RhdGU6IFdvcmtiZW5jaE5hdmlnYXRpb25hbFN0YXRlcy5jcmVhdGUoe1xuICAgICAgd29ya2JlbmNoR3JpZDogd29ya2JlbmNoR3JpZCxcbiAgICAgIC8vIEZhbGwgYmFjayB0byB0aGUgY3VycmVudCBsYXlvdXQncyBwZXJzcGVjdGl2ZSBpZiBub3Qgc3BlY2lmaWVkIGJ5IHRoZSBuZXcgbGF5b3V0LFxuICAgICAgLy8gZS5nLiwgdGhlIG5hdmlnYXRvciBwcm92aWRlcyBhIG5ldyBsYXlvdXQgdG8gcmVwbGFjZSB0aGUgY3VycmVudCBsYXlvdXQuXG4gICAgICBwZXJzcGVjdGl2ZUlkOiBuZXdMYXlvdXQucGVyc3BlY3RpdmVJZCA/PyBjdXJyZW50TGF5b3V0Py5wZXJzcGVjdGl2ZUlkLFxuICAgICAgbWF4aW1pemVkOiBuZXdMYXlvdXQubWF4aW1pemVkLFxuICAgICAgbmF2aWdhdGlvblN0YXRlczogbmV3TGF5b3V0Lm5hdmlnYXRpb25TdGF0ZXMoKSxcbiAgICB9KSxcbiAgICAvLyBBZGQgdGhlIG1haW4gYXJlYSBhcyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgcXVlcnlQYXJhbXM6IHsuLi5leHRyYXM/LnF1ZXJ5UGFyYW1zLCBbTUFJTl9BUkVBX0xBWU9VVF9RVUVSWV9QQVJBTV06IG1haW5BcmVhR3JpZH0sXG4gICAgLy8gTWVyZ2Ugd2l0aCBleGlzdGluZyBxdWVyeSBwYXJhbXMgdW5sZXNzIHNwZWNpZmllZCBhbiBleHBsaWNpdCBzdHJhdGVneSwgZS5nLiwgZm9yIG1pZ3JhdGluZyBhbiBvdXRkYXRlZCBsYXlvdXQgVVJMLlxuICAgIC8vIE5vdGUgdGhhdCBgbnVsbGAgaXMgYSB2YWxpZCBzdHJhdGVneSBmb3IgY2xlYXJpbmcgZXhpc3RpbmcgcXVlcnkgcGFyYW1zLCBzbyBkbyBub3QgdXNlIHRoZSBudWxsaXNoIGNvYWxlc2Npbmcgb3BlcmF0b3IgKD8/KS5cbiAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiBEZWZpbmVkLm9yRWxzZShleHRyYXM/LnF1ZXJ5UGFyYW1zSGFuZGxpbmcsICdtZXJnZScpLFxuICB9O1xufVxuXG4vKipcbiAqIENvbXB1dGVzIGNvbW1hbmRzIHRoYXQgY2FuIGJlIHBhc3NlZCB0byB0aGUgQW5ndWxhciByb3V0ZXIgdG8gbmF2aWdhdGUgdmlldyBvdXRsZXRzIGFuZCB0byByZW1vdmUgdmlldyBvdXRsZXRzIG9mIHJlbW92ZWQgdmlld3MuXG4gKi9cbmZ1bmN0aW9uIGNvbXB1dGVOYXZpZ2F0aW9uQ29tbWFuZHMocHJldmlvdXNWaWV3T3V0bGV0czogVmlld091dGxldHMsIG5leHRWaWV3T3V0bGV0czogVmlld091dGxldHMpOiBbe291dGxldHM6IHtbb3V0bGV0OiBWaWV3SWRdOiBDb21tYW5kcyB8IG51bGx9fV0gfCBbXSB7XG4gIGNvbnN0IHByZXZpb3VzVmlld091dGxldE1hcCA9IG5ldyBNYXA8Vmlld0lkLCBVcmxTZWdtZW50W10+KE9iamVjdHMuZW50cmllcyhwcmV2aW91c1ZpZXdPdXRsZXRzKSk7XG4gIGNvbnN0IG5leHRWaWV3T3V0bGV0TWFwID0gbmV3IE1hcDxWaWV3SWQsIFVybFNlZ21lbnRbXT4oT2JqZWN0cy5lbnRyaWVzKG5leHRWaWV3T3V0bGV0cykpO1xuXG4gIGNvbnN0IGNvbW1hbmRzID0gbmV3IE1hcDxWaWV3SWQsIENvbW1hbmRzIHwgbnVsbD4oKTtcbiAgY29uc3Qgdmlld0lkcyA9IG5ldyBTZXQ8Vmlld0lkPihbLi4ucHJldmlvdXNWaWV3T3V0bGV0TWFwLmtleXMoKSwgLi4ubmV4dFZpZXdPdXRsZXRNYXAua2V5cygpXSk7XG5cbiAgdmlld0lkcy5mb3JFYWNoKHZpZXdJZCA9PiB7XG4gICAgLy8gVGVzdCBpZiB0aGUgdmlldyB3YXMgYWRkZWQgdG8gdGhlIGxheW91dC5cbiAgICBpZiAoIXByZXZpb3VzVmlld091dGxldE1hcC5oYXModmlld0lkKSkge1xuICAgICAgY29tbWFuZHMuc2V0KHZpZXdJZCwgUm91dGluZy5zZWdtZW50c1RvQ29tbWFuZHMobmV4dFZpZXdPdXRsZXRNYXAuZ2V0KHZpZXdJZCkhKSk7XG4gICAgfVxuICAgIC8vIFRlc3QgaWYgdGhlIHZpZXcgd2FzIHJlbW92ZWQgZnJvbSB0aGUgbGF5b3V0LlxuICAgIGVsc2UgaWYgKCFuZXh0Vmlld091dGxldE1hcC5oYXModmlld0lkKSkge1xuICAgICAgY29tbWFuZHMuc2V0KHZpZXdJZCwgbnVsbCk7XG4gICAgfVxuICAgIC8vIFRlc3QgaWYgdGhlIHZpZXcgd2FzIHVwZGF0ZWQuXG4gICAgZWxzZSBpZiAoIW5ldyBVcmxTZWdtZW50TWF0Y2hlcihwcmV2aW91c1ZpZXdPdXRsZXRNYXAuZ2V0KHZpZXdJZCkhLCB7bWF0Y2hNYXRyaXhQYXJhbXM6IHRydWUsIG1hdGNoV2lsZGNhcmRQYXRoOiBmYWxzZX0pLm1hdGNoZXMobmV4dFZpZXdPdXRsZXRNYXAuZ2V0KHZpZXdJZCkhKSkge1xuICAgICAgY29tbWFuZHMuc2V0KHZpZXdJZCwgUm91dGluZy5zZWdtZW50c1RvQ29tbWFuZHMobmV4dFZpZXdPdXRsZXRNYXAuZ2V0KHZpZXdJZCkhKSk7XG4gICAgfVxuICB9KTtcblxuICAvLyBBZGQgdmlldyBjb21tYW5kcyB0byB0aGUgJ291dGxldHMnIHByb3BlcnR5IHRvIGJlIGludGVycHJldGVkIGJ5IHRoZSBBbmd1bGFyIHJvdXRlci5cbiAgcmV0dXJuIGNvbW1hbmRzLnNpemUgPyBbe291dGxldHM6IE9iamVjdC5mcm9tRW50cmllcyhjb21tYW5kcyl9XSA6IFtdO1xufVxuXG4vKipcbiAqIEBpbmhlcml0RG9jXG4gKiBAc2VlIE5hdmlnYXRlRm5cbiAqL1xuZXhwb3J0IHR5cGUgybVOYXZpZ2F0ZUZuID0gKGxheW91dDogybVXb3JrYmVuY2hMYXlvdXQpID0+IFByb21pc2U8ybVXb3JrYmVuY2hMYXlvdXQgfCBudWxsPiB8IMm1V29ya2JlbmNoTGF5b3V0IHwgbnVsbDtcbiJdfQ==
|
|
@@ -15,10 +15,10 @@ import * as i0 from "@angular/core";
|
|
|
15
15
|
*/
|
|
16
16
|
export class SplashComponent {
|
|
17
17
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: SplashComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
18
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: SplashComponent, isStandalone: true, selector: "wb-splash", ngImport: i0, template: "<sci-throbber type=\"ellipsis\"
|
|
18
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: SplashComponent, isStandalone: true, selector: "wb-splash", ngImport: i0, template: "<sci-throbber type=\"ellipsis\"/>\n", styles: [":host{display:grid;justify-content:center;margin-top:3em}:host>sci-throbber{--sci-throbber-size: 80px}\n"], dependencies: [{ kind: "component", type: SciThrobberComponent, selector: "sci-throbber", inputs: ["type"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
19
19
|
}
|
|
20
20
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: SplashComponent, decorators: [{
|
|
21
21
|
type: Component,
|
|
22
|
-
args: [{ selector: 'wb-splash', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [SciThrobberComponent], template: "<sci-throbber type=\"ellipsis\"
|
|
22
|
+
args: [{ selector: 'wb-splash', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [SciThrobberComponent], template: "<sci-throbber type=\"ellipsis\"/>\n", styles: [":host{display:grid;justify-content:center;margin-top:3em}:host>sci-throbber{--sci-throbber-size: 80px}\n"] }]
|
|
23
23
|
}] });
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsYXNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3N0YXJ0dXAvc3BsYXNoL3NwbGFzaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9zdGFydHVwL3NwbGFzaC9zcGxhc2guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDOztBQUVoRTs7R0FFRztBQVNILE1BQU0sT0FBTyxlQUFlOzhHQUFmLGVBQWU7a0dBQWYsZUFBZSxxRUN4QjVCLHFDQUNBLGtLRHFCWSxvQkFBb0I7OzJGQUVuQixlQUFlO2tCQVIzQixTQUFTOytCQUNFLFdBQVcsbUJBR0osdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U2NpVGhyb2JiZXJDb21wb25lbnR9IGZyb20gJ0BzY2lvbi9jb21wb25lbnRzL3Rocm9iYmVyJztcblxuLyoqXG4gKiBEZWZhdWx0IHNwbGFzaCBkaXNwbGF5ZWQgd2hpbGUgc3RhcnRpbmcgdGhlIHdvcmtiZW5jaC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2Itc3BsYXNoJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NwbGFzaC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NwbGFzaC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1NjaVRocm9iYmVyQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgU3BsYXNoQ29tcG9uZW50IHtcbn1cbiIsIjxzY2ktdGhyb2JiZXIgdHlwZT1cImVsbGlwc2lzXCIvPlxuIl19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { APP_INITIALIZER, ApplicationInitStatus, inject, Injectable, makeEnvironmentProviders, NgZone } from '@angular/core';
|
|
1
|
+
import { APP_INITIALIZER, ApplicationInitStatus, inject, Injectable, makeEnvironmentProviders, NgZone, signal } from '@angular/core';
|
|
2
2
|
import { runWorkbenchInitializers, WORKBENCH_POST_STARTUP, WORKBENCH_PRE_STARTUP, WORKBENCH_STARTUP } from './workbench-initializer';
|
|
3
3
|
import { LoggerNames } from '../logging';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
@@ -120,21 +120,18 @@ var StartupState;
|
|
|
120
120
|
*/
|
|
121
121
|
export class WorkbenchStartup {
|
|
122
122
|
constructor() {
|
|
123
|
-
|
|
123
|
+
/**
|
|
124
|
+
* Signals when the workbench completed startup.
|
|
125
|
+
*/
|
|
126
|
+
this.isStarted = signal(false);
|
|
124
127
|
/**
|
|
125
128
|
* Promise that resolves when the workbench has completed the startup.
|
|
126
129
|
*/
|
|
127
130
|
this.whenStarted = new Promise(resolve => this.notifyStarted = () => {
|
|
128
|
-
this.
|
|
131
|
+
this.isStarted.set(true);
|
|
129
132
|
resolve(true);
|
|
130
133
|
});
|
|
131
134
|
}
|
|
132
|
-
/**
|
|
133
|
-
* Returns whether the workbench completed startup.
|
|
134
|
-
*/
|
|
135
|
-
isStarted() {
|
|
136
|
-
return this._started;
|
|
137
|
-
}
|
|
138
135
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchStartup, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
139
136
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchStartup, providedIn: 'root' }); }
|
|
140
137
|
}
|
|
@@ -158,4 +155,4 @@ export function provideWorkbenchLauncher(workbenchConfig) {
|
|
|
158
155
|
multi: true,
|
|
159
156
|
}]);
|
|
160
157
|
}
|
|
161
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLWxhdW5jaGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9zdGFydHVwL3dvcmtiZW5jaC1sYXVuY2hlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVdBLE9BQU8sRUFBQyxlQUFlLEVBQUUscUJBQXFCLEVBQXdCLE1BQU0sRUFBRSxVQUFVLEVBQVksd0JBQXdCLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzNKLE9BQU8sRUFBQyx3QkFBd0IsRUFBRSxzQkFBc0IsRUFBRSxxQkFBcUIsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ25JLE9BQU8sRUFBUyxXQUFXLEVBQUMsTUFBTSxZQUFZLENBQUM7OztBQUUvQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFFSCxNQUFNLE9BQU8saUJBQWlCO0lBSTVCLFlBQW9CLFFBQTBCLEVBQzFCLE9BQWUsRUFDZixLQUFhLEVBQ2IsU0FBbUI7UUFIbkIsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7UUFDMUIsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDYixjQUFTLEdBQVQsU0FBUyxDQUFVO1FBTC9CLFdBQU0sR0FBaUIsWUFBWSxDQUFDLE9BQU8sQ0FBQztJQU1wRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F3Q0c7SUFDSSxLQUFLLENBQUMsTUFBTTtRQUNqQix5SUFBeUk7UUFDekksSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO1lBQzlCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUVE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TSxRQUFRLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQzNDLE9BQU8sR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pDLENBQUM7WUFDRCxLQUFLLEVBQUUsSUFBSTtTQUNaLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtXb3JrYmVuY2hDb25maWd9IGZyb20gJy4uL3dvcmtiZW5jaC1jb25maWcnO1xuaW1wb3J0IHtBUFBfSU5JVElBTElaRVIsIEFwcGxpY2F0aW9uSW5pdFN0YXR1cywgRW52aXJvbm1lbnRQcm92aWRlcnMsIGluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycywgTmdab25lfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7cnVuV29ya2JlbmNoSW5pdGlhbGl6ZXJzLCBXT1JLQkVOQ0hfUE9TVF9TVEFSVFVQLCBXT1JLQkVOQ0hfUFJFX1NUQVJUVVAsIFdPUktCRU5DSF9TVEFSVFVQfSBmcm9tICcuL3dvcmtiZW5jaC1pbml0aWFsaXplcic7XG5pbXBvcnQge0xvZ2dlciwgTG9nZ2VyTmFtZXN9IGZyb20gJy4uL2xvZ2dpbmcnO1xuXG4vKipcbiAqIFByb3ZpZGVzIEFQSSB0byBsYXVuY2ggdGhlIFNDSU9OIFdvcmtiZW5jaC5cbiAqXG4gKiBEdXJpbmcgd29ya2JlbmNoIHN0YXJ0dXAsIHRoZSBsYXVuY2hlciBydW5zIHJlZ2lzdGVyZWQgd29ya2JlbmNoIGluaXRpYWxpemVycyBhbmQgd2FpdHMgZm9yIHRoZW0gdG8gY29tcGxldGUuXG4gKiBXb3JrYmVuY2ggaW5pdGlhbGl6ZXJzIG1heSBleGVjdXRlIGluIHBhcmFsbGVsLiBUbyByZWdpc3RlciBhIHdvcmtiZW5jaCBpbml0aWFsaXplciwgcHJvdmlkZSBhIGNsYXNzIGltcGxlbWVudGluZ1xuICoge0BsaW5rIFdvcmtiZW5jaEluaXRpYWxpemVyfSBhcyBhIG11bHRpLXByb3ZpZGVyIHVzaW5nIHRoZSBESSBjbGFzcyB0b2tlbiB7QGxpbmsgV29ya2JlbmNoSW5pdGlhbGl6ZXJ9LlxuICpcbiAqIFRoZSBTQ0lPTiBXb3JrYmVuY2ggc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBsYXVuY2hlcnM6XG4gKlxuICogIC0gKipBUFBfSU5JVElBTElaRVIqKlxuICogICBMYXVuY2hlcyB0aGUgd29ya2JlbmNoIGluIGFuIEFuZ3VsYXIgYEFQUF9JTklUSUFMSVpFUmAsIHdoaWNoIGlzIGJlZm9yZSBib290c3RyYXBwaW5nIHRoZSBhcHAgY29tcG9uZW50LlxuICpcbiAqIC0gKipMQVpZKiogKHdoaWNoIGlzIHRoZSBkZWZhdWx0KVxuICogICBMYXVuY2hlcyB0aGUgd29ya2JlbmNoIGF0IHRoZSBsYXRlc3Qgd2hlbiBib290c3RyYXBwaW5nIHRoZSB3b3JrYmVuY2ggcm9vdCBjb21wb25lbnQgYDx3Yi13b3JrYmVuY2g+YC5cbiAqXG4gKiAgIFdpdGggdGhpcyBzdHJhdGVneSwgeW91IGFyZSBmbGV4aWJsZSB3aGVuIHRvIHN0YXJ0IHRoZSB3b3JrYmVuY2guIFlvdSBjYW4gc3RhcnQgdGhlIHdvcmtiZW5jaCBleHBsaWNpdGx5IGJ5XG4gKiAgIGNhbGxpbmcge0BsaW5rIFdvcmtiZW5jaExhdW5jaGVyI2xhdW5jaH0sIGUuZy4sIHRvIGxhdW5jaCB0aGUgd29ya2JlbmNoIGZyb20gYSByb3V0ZSBndWFyZCBvciBhcHAgaW5pdGlhbGl6ZXIsXG4gKiAgIG9yIHN0YXJ0IGl0IGF1dG9tYXRpY2FsbHkgd2hlbiBhZGRpbmcgdGhlIHdvcmtiZW5jaCByb290IGNvbXBvbmVudCBgPHdiLXdvcmtiZW5jaD5gIHRvIHRoZSBBbmd1bGFyIGNvbXBvbmVudFxuICogICB0cmVlLlxuICpcbiAqIFRoZSB3b3JrYmVuY2ggY29tcG9uZW50IGRpc3BsYXlzIGEgc3RhcnR1cCBzcGxhc2ggdW50aWwgY29tcGxldGVkIHN0YXJ0dXAuIFlvdSBjYW4gY29uZmlndXJlIGEgY3VzdG9tIHNwbGFzaCBpblxuICoge0BsaW5rIFdvcmtiZW5jaENvbmZpZyNzdGFydHVwI3NwbGFzaH0uIFdoZW4gbGF1bmNoaW5nIHRoZSB3b3JrYmVuY2ggaW4gYW4gQW5ndWxhciBgQVBQX0lOSVRJQUxJWkVSYCwgbm8gc3BsYXNoIHdpbGxcbiAqIGRpc3BsYXkgc2luY2UgdGhlIHdvcmtiZW5jaCB3aWxsIHN0YXJ0IHVwZnJvbnQuXG4gKi9cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIFdvcmtiZW5jaExhdW5jaGVyIHtcblxuICBwcml2YXRlIF9zdGF0ZTogU3RhcnR1cFN0YXRlID0gU3RhcnR1cFN0YXRlLlN0b3BwZWQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfc3RhcnR1cDogV29ya2JlbmNoU3RhcnR1cCxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfbG9nZ2VyOiBMb2dnZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgX3pvbmU6IE5nWm9uZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gIH1cblxuICAvKipcbiAgICogTGF1bmNoZXMgdGhlIFNDSU9OIFdvcmtiZW5jaC5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgcmVwcmVzZW50cyB0aGUgaW5pdGlhbCBlbnRyeSBwb2ludCB0aGF0IHNob3VsZCBiZSBjYWxsZWQgdG8gbGF1bmNoIHRoZSB3b3JrYmVuY2guIFRoZSBsYXVuY2hlciBydW5zXG4gICAqIHJlZ2lzdGVyZWQgd29ya2JlbmNoIGluaXRpYWxpemVycyBhbmQgd2FpdHMgZm9yIHRoZW0gdG8gY29tcGxldGUuIENhbGxpbmcgdGhpcyBtZXRob2QgaGFzIG5vIGVmZmVjdCBpZiB0aGUgd29ya2JlbmNoXG4gICAqIGlzIGFscmVhZHkgc3RhcnRpbmcgb3IgaGFzIHN0YXJ0ZWQuXG4gICAqXG4gICAqICMjIyBTcGxhc2hcbiAgICogV2hlbiBtb3VudGluZyB0aGUgd29ya2JlbmNoIHJvb3QgY29tcG9uZW50IGA8d2Itd29ya2JlbmNoPmAgdG8gdGhlIERPTSBiZWZvcmUgdGhlIHdvcmtiZW5jaCBzdGFydHVwIGhhcyBmaW5pc2hlZCxcbiAgICogdGhlIHdvcmtiZW5jaCB3aWxsIGRpc3BsYXkgYSBzdGFydHVwIHNwbGFzaCB1bnRpbCBjb21wbGV0ZWQgc3RhcnR1cC5cbiAgICpcbiAgICogIyMjIFN0YXJ0dXAgTGlmZWN5Y2xlIEhvb2tzXG4gICAqIFRoZSBTQ0lPTiBXb3JrYmVuY2ggZGVmaW5lcyBhIG51bWJlciBvZiBpbmplY3Rpb24gdG9rZW5zIChhbHNvIGNhbGxlZCBESSB0b2tlbnMpIGFzIGhvb2tzIGludG8gdGhlIHdvcmtiZW5jaCdzIHN0YXJ0dXAgcHJvY2Vzcy5cbiAgICogSG9va3MgYXJlIGNhbGxlZCBhdCBkZWZpbmVkIHBvaW50cyBkdXJpbmcgc3RhcnR1cCwgZW5hYmxpbmcgdGhlIGFwcGxpY2F0aW9uJ3MgY29udHJvbGxlZCBpbml0aWFsaXphdGlvbi5cbiAgICpcbiAgICogVGhlIGFwcGxpY2F0aW9uIGNhbiBhc3NvY2lhdGUgb25lIG9yIG1vcmUgaW5pdGlhbGl6ZXJzIHdpdGggYW55IG9mIHRoZXNlIERJIHRva2Vucy4gQW4gaW5pdGlhbGl6ZXIgY2FuIGJlIGFueSBvYmplY3QgYW5kIGlzIHRvXG4gICAqIGJlIHByb3ZpZGVkIGFzIGEgbXVsdGktcHJvdmlkZXIuIElmIHRoZSBpbml0aWFsaXplciBpcyBhIGZ1bmN0aW9uIG9yIGluc3RhbmNlIG9mIHtAbGluayBXb3JrYmVuY2hJbml0aWFsaXplcn0gYW5kIHJldHVybnMgYSBQcm9taXNlLFxuICAgKiB0aGUgd29ya2JlbmNoIHdhaXRzIGZvciB0aGUgUHJvbWlzZSB0byBiZSByZXNvbHZlZCBiZWZvcmUgcHJvY2VlZGluZyB3aXRoIHRoZSBzdGFydHVwLiBJbml0aWFsaXplcnMgY2FuIGNhbGwgYGluamVjdGAgdG8gZ2V0IGFueVxuICAgKiByZXF1aXJlZCBkZXBlbmRlbmNpZXMuIEluaXRpYWxpemVycyBhc3NvY2lhdGVkIHdpdGggdGhlIHNhbWUgREkgdG9rZW4gbWF5IHJ1biBpbiBwYXJhbGxlbC5cbiAgICpcbiAgICogRm9sbG93aW5nIERJIHRva2VucyBhcmUgYXZhaWxhYmxlIGFzIGhvb2tzIGludG8gdGhlIHdvcmtiZW5jaCdzIHN0YXJ0dXAgcHJvY2VzcywgbGlzdGVkIGluIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IGFyZSBpbmplY3RlZCBhbmRcbiAgICogZXhlY3V0ZWQuXG4gICAqXG4gICAqIC0ge0BsaW5rIFdPUktCRU5DSF9QUkVfU1RBUlRVUH1cbiAgICogLSB7QGxpbmsgV09SS0JFTkNIX1NUQVJUVVB9XG4gICAqIC0ge0BsaW5rIE1JQ1JPRlJPTlRFTkRfUExBVEZPUk1fUFJFX1NUQVJUVVB9XG4gICAqIC0ge0BsaW5rIE1JQ1JPRlJPTlRFTkRfUExBVEZPUk1fUE9TVF9TVEFSVFVQfVxuICAgKiAtIHtAbGluayBXT1JLQkVOQ0hfUE9TVF9TVEFSVFVQfVxuICAgKlxuICAgKiAjIyMgRXhhbXBsZSBvZiBob3cgdG8gaG9vayBpbnRvIHRoZSBzdGFydHVwIHByb2Nlc3MuXG4gICAqXG4gICAqIGBgYHRzXG4gICAqIHtcbiAgICogICBwcm92aWRlOiBXT1JLQkVOQ0hfU1RBUlRVUCxcbiAgICogICBtdWx0aTogdHJ1ZSxcbiAgICogICB1c2VWYWx1ZTogKCkgPT4gaW5qZWN0KEluaXRpYWxpemVyKS5pbml0KCksXG4gICAqIH1cbiAgICogYGBgXG4gICAqXG4gICAqIEByZXR1cm4gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgd29ya2JlbmNoIGhhcyBjb21wbGV0ZWQgdGhlIHN0YXJ0dXAgb3IgdGhhdCByZWplY3RzIGlmIHRoZSBzdGFydHVwIGZhaWxlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBsYXVuY2goKTogUHJvbWlzZTx0cnVlPiB7XG4gICAgLy8gRW5zdXJlIHRvIHJ1biBpbiB0aGUgQW5ndWxhciB6b25lIHRvIGNoZWNrIHRoZSB3b3JrYmVuY2ggZm9yIGNoYW5nZXMgZXZlbiBpZiBjYWxsZWQgZnJvbSBvdXRzaWRlIHRoZSBBbmd1bGFyIHpvbmUsIGUuZy4gaW4gdW5pdCB0ZXN0cy5cbiAgICBpZiAoIU5nWm9uZS5pc0luQW5ndWxhclpvbmUoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3pvbmUucnVuKCgpID0+IHRoaXMubGF1bmNoKCkpO1xuICAgIH1cblxuICAgIHN3aXRjaCAodGhpcy5fc3RhdGUpIHtcbiAgICAgIGNhc2UgU3RhcnR1cFN0YXRlLlN0b3BwZWQ6IHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCgpID0+IGBTdGFydGluZyBXb3JrYmVuY2guIFdhaXRpbmcgZm9yIHdvcmtiZW5jaCBpbml0aWFsaXplcnMgdG8gY29tcGxldGUuIFtsYXVuY2hlcj0ke3RoaXMuX2luamVjdG9yLmdldChBcHBsaWNhdGlvbkluaXRTdGF0dXMpLmRvbmUgPyAnTEFaWScgOiAnQVBQX0lOSVRJQUxJWkVSJ31dYCwgTG9nZ2VyTmFtZXMuTElGRUNZQ0xFKTtcbiAgICAgICAgdGhpcy5fc3RhdGUgPSBTdGFydHVwU3RhdGUuU3RhcnRpbmc7XG4gICAgICAgIGF3YWl0IHJ1bldvcmtiZW5jaEluaXRpYWxpemVycyhXT1JLQkVOQ0hfUFJFX1NUQVJUVVAsIHRoaXMuX2luamVjdG9yKTtcbiAgICAgICAgYXdhaXQgcnVuV29ya2JlbmNoSW5pdGlhbGl6ZXJzKFdPUktCRU5DSF9TVEFSVFVQLCB0aGlzLl9pbmplY3Rvcik7XG4gICAgICAgIHRoaXMuX3N0YXRlID0gU3RhcnR1cFN0YXRlLlN0YXJ0ZWQ7XG4gICAgICAgIGF3YWl0IHJ1bldvcmtiZW5jaEluaXRpYWxpemVycyhXT1JLQkVOQ0hfUE9TVF9TVEFSVFVQLCB0aGlzLl9pbmplY3Rvcik7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygoKSA9PiAnV29ya2JlbmNoIHN0YXJ0ZWQuJywgTG9nZ2VyTmFtZXMuTElGRUNZQ0xFKTtcbiAgICAgICAgdGhpcy5fc3RhcnR1cC5ub3RpZnlTdGFydGVkKCk7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGFydHVwLndoZW5TdGFydGVkO1xuICAgICAgfVxuICAgICAgY2FzZSBTdGFydHVwU3RhdGUuU3RhcnRpbmc6XG4gICAgICBjYXNlIFN0YXJ0dXBTdGF0ZS5TdGFydGVkOiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGFydHVwLndoZW5TdGFydGVkO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICB0aHJvdyBFcnJvcihgW1dvcmtiZW5jaFN0YXJ0dXBFcnJvcl0gSWxsZWdhbCBzdGFydHVwIHN0YXRlOiAke3RoaXMuX3N0YXRlfWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5lbnVtIFN0YXJ0dXBTdGF0ZSB7XG4gIFN0b3BwZWQsIFN0YXJ0aW5nLCBTdGFydGVkXG59XG5cbi8qKlxuICogQWxsb3dzIHdhaXRpbmcgZm9yIHRoZSB3b3JrYmVuY2ggc3RhcnR1cCB0byBjb21wbGV0ZS5cbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgV29ya2JlbmNoU3RhcnR1cCB7XG5cbiAgcHJpdmF0ZSBfc3RhcnRlZCA9IGZhbHNlO1xuXG4gIC8qIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgbm90aWZ5U3RhcnRlZCE6ICgpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSB3b3JrYmVuY2ggaGFzIGNvbXBsZXRlZCB0aGUgc3RhcnR1cC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB3aGVuU3RhcnRlZCA9IG5ldyBQcm9taXNlPHRydWU+KHJlc29sdmUgPT4gdGhpcy5ub3RpZnlTdGFydGVkID0gKCkgPT4ge1xuICAgIHRoaXMuX3N0YXJ0ZWQgPSB0cnVlO1xuICAgIHJlc29sdmUodHJ1ZSk7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHdvcmtiZW5jaCBjb21wbGV0ZWQgc3RhcnR1cC5cbiAgICovXG4gIHB1YmxpYyBpc1N0YXJ0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXJ0ZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm92aWRlcyBhIHNldCBvZiBESSBwcm92aWRlcnMgZm9yIGxhdW5jaGluZyB0aGUgd29ya2JlbmNoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZVdvcmtiZW5jaExhdW5jaGVyKHdvcmtiZW5jaENvbmZpZzogV29ya2JlbmNoQ29uZmlnKTogRW52aXJvbm1lbnRQcm92aWRlcnMgfCBbXSB7XG4gIGlmICh3b3JrYmVuY2hDb25maWcuc3RhcnR1cD8ubGF1bmNoZXIgIT09ICdBUFBfSU5JVElBTElaRVInKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhbe1xuICAgIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcbiAgICB1c2VGYWN0b3J5OiAoKSA9PiB7XG4gICAgICBjb25zdCBsYXVuY2hlciA9IGluamVjdChXb3JrYmVuY2hMYXVuY2hlcik7XG4gICAgICByZXR1cm4gKCkgPT4gbGF1bmNoZXIubGF1bmNoKCk7XG4gICAgfSxcbiAgICBtdWx0aTogdHJ1ZSxcbiAgfV0pO1xufVxuIl19
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLWxhdW5jaGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9zdGFydHVwL3dvcmtiZW5jaC1sYXVuY2hlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVdBLE9BQU8sRUFBQyxlQUFlLEVBQUUscUJBQXFCLEVBQXdCLE1BQU0sRUFBRSxVQUFVLEVBQVksd0JBQXdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNuSyxPQUFPLEVBQUMsd0JBQXdCLEVBQUUsc0JBQXNCLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNuSSxPQUFPLEVBQVMsV0FBVyxFQUFDLE1BQU0sWUFBWSxDQUFDOzs7QUFFL0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJHO0FBRUgsTUFBTSxPQUFPLGlCQUFpQjtJQUk1QixZQUFvQixRQUEwQixFQUMxQixPQUFlLEVBQ2YsS0FBYSxFQUNiLFNBQW1CO1FBSG5CLGFBQVEsR0FBUixRQUFRLENBQWtCO1FBQzFCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUwvQixXQUFNLEdBQWlCLFlBQVksQ0FBQyxPQUFPLENBQUM7SUFNcEQsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Bd0NHO0lBQ0ksS0FBSyxDQUFDLE1BQU07UUFDakIseUlBQXlJO1FBQ3pJLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQztZQUM5QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzdD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LE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUMzQyxPQUFPLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQyxDQUFDO1lBQ0QsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLENBQUMsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7V29ya2JlbmNoQ29uZmlnfSBmcm9tICcuLi93b3JrYmVuY2gtY29uZmlnJztcbmltcG9ydCB7QVBQX0lOSVRJQUxJWkVSLCBBcHBsaWNhdGlvbkluaXRTdGF0dXMsIEVudmlyb25tZW50UHJvdmlkZXJzLCBpbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yLCBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMsIE5nWm9uZSwgc2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7cnVuV29ya2JlbmNoSW5pdGlhbGl6ZXJzLCBXT1JLQkVOQ0hfUE9TVF9TVEFSVFVQLCBXT1JLQkVOQ0hfUFJFX1NUQVJUVVAsIFdPUktCRU5DSF9TVEFSVFVQfSBmcm9tICcuL3dvcmtiZW5jaC1pbml0aWFsaXplcic7XG5pbXBvcnQge0xvZ2dlciwgTG9nZ2VyTmFtZXN9IGZyb20gJy4uL2xvZ2dpbmcnO1xuXG4vKipcbiAqIFByb3ZpZGVzIEFQSSB0byBsYXVuY2ggdGhlIFNDSU9OIFdvcmtiZW5jaC5cbiAqXG4gKiBEdXJpbmcgd29ya2JlbmNoIHN0YXJ0dXAsIHRoZSBsYXVuY2hlciBydW5zIHJlZ2lzdGVyZWQgd29ya2JlbmNoIGluaXRpYWxpemVycyBhbmQgd2FpdHMgZm9yIHRoZW0gdG8gY29tcGxldGUuXG4gKiBXb3JrYmVuY2ggaW5pdGlhbGl6ZXJzIG1heSBleGVjdXRlIGluIHBhcmFsbGVsLiBUbyByZWdpc3RlciBhIHdvcmtiZW5jaCBpbml0aWFsaXplciwgcHJvdmlkZSBhIGNsYXNzIGltcGxlbWVudGluZ1xuICoge0BsaW5rIFdvcmtiZW5jaEluaXRpYWxpemVyfSBhcyBhIG11bHRpLXByb3ZpZGVyIHVzaW5nIHRoZSBESSBjbGFzcyB0b2tlbiB7QGxpbmsgV29ya2JlbmNoSW5pdGlhbGl6ZXJ9LlxuICpcbiAqIFRoZSBTQ0lPTiBXb3JrYmVuY2ggc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBsYXVuY2hlcnM6XG4gKlxuICogIC0gKipBUFBfSU5JVElBTElaRVIqKlxuICogICBMYXVuY2hlcyB0aGUgd29ya2JlbmNoIGluIGFuIEFuZ3VsYXIgYEFQUF9JTklUSUFMSVpFUmAsIHdoaWNoIGlzIGJlZm9yZSBib290c3RyYXBwaW5nIHRoZSBhcHAgY29tcG9uZW50LlxuICpcbiAqIC0gKipMQVpZKiogKHdoaWNoIGlzIHRoZSBkZWZhdWx0KVxuICogICBMYXVuY2hlcyB0aGUgd29ya2JlbmNoIGF0IHRoZSBsYXRlc3Qgd2hlbiBib290c3RyYXBwaW5nIHRoZSB3b3JrYmVuY2ggcm9vdCBjb21wb25lbnQgYDx3Yi13b3JrYmVuY2g+YC5cbiAqXG4gKiAgIFdpdGggdGhpcyBzdHJhdGVneSwgeW91IGFyZSBmbGV4aWJsZSB3aGVuIHRvIHN0YXJ0IHRoZSB3b3JrYmVuY2guIFlvdSBjYW4gc3RhcnQgdGhlIHdvcmtiZW5jaCBleHBsaWNpdGx5IGJ5XG4gKiAgIGNhbGxpbmcge0BsaW5rIFdvcmtiZW5jaExhdW5jaGVyI2xhdW5jaH0sIGUuZy4sIHRvIGxhdW5jaCB0aGUgd29ya2JlbmNoIGZyb20gYSByb3V0ZSBndWFyZCBvciBhcHAgaW5pdGlhbGl6ZXIsXG4gKiAgIG9yIHN0YXJ0IGl0IGF1dG9tYXRpY2FsbHkgd2hlbiBhZGRpbmcgdGhlIHdvcmtiZW5jaCByb290IGNvbXBvbmVudCBgPHdiLXdvcmtiZW5jaD5gIHRvIHRoZSBBbmd1bGFyIGNvbXBvbmVudFxuICogICB0cmVlLlxuICpcbiAqIFRoZSB3b3JrYmVuY2ggY29tcG9uZW50IGRpc3BsYXlzIGEgc3RhcnR1cCBzcGxhc2ggdW50aWwgY29tcGxldGVkIHN0YXJ0dXAuIFlvdSBjYW4gY29uZmlndXJlIGEgY3VzdG9tIHNwbGFzaCBpblxuICoge0BsaW5rIFdvcmtiZW5jaENvbmZpZyNzdGFydHVwI3NwbGFzaH0uIFdoZW4gbGF1bmNoaW5nIHRoZSB3b3JrYmVuY2ggaW4gYW4gQW5ndWxhciBgQVBQX0lOSVRJQUxJWkVSYCwgbm8gc3BsYXNoIHdpbGxcbiAqIGRpc3BsYXkgc2luY2UgdGhlIHdvcmtiZW5jaCB3aWxsIHN0YXJ0IHVwZnJvbnQuXG4gKi9cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIFdvcmtiZW5jaExhdW5jaGVyIHtcblxuICBwcml2YXRlIF9zdGF0ZTogU3RhcnR1cFN0YXRlID0gU3RhcnR1cFN0YXRlLlN0b3BwZWQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfc3RhcnR1cDogV29ya2JlbmNoU3RhcnR1cCxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfbG9nZ2VyOiBMb2dnZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgX3pvbmU6IE5nWm9uZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gIH1cblxuICAvKipcbiAgICogTGF1bmNoZXMgdGhlIFNDSU9OIFdvcmtiZW5jaC5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgcmVwcmVzZW50cyB0aGUgaW5pdGlhbCBlbnRyeSBwb2ludCB0aGF0IHNob3VsZCBiZSBjYWxsZWQgdG8gbGF1bmNoIHRoZSB3b3JrYmVuY2guIFRoZSBsYXVuY2hlciBydW5zXG4gICAqIHJlZ2lzdGVyZWQgd29ya2JlbmNoIGluaXRpYWxpemVycyBhbmQgd2FpdHMgZm9yIHRoZW0gdG8gY29tcGxldGUuIENhbGxpbmcgdGhpcyBtZXRob2QgaGFzIG5vIGVmZmVjdCBpZiB0aGUgd29ya2JlbmNoXG4gICAqIGlzIGFscmVhZHkgc3RhcnRpbmcgb3IgaGFzIHN0YXJ0ZWQuXG4gICAqXG4gICAqICMjIyBTcGxhc2hcbiAgICogV2hlbiBtb3VudGluZyB0aGUgd29ya2JlbmNoIHJvb3QgY29tcG9uZW50IGA8d2Itd29ya2JlbmNoPmAgdG8gdGhlIERPTSBiZWZvcmUgdGhlIHdvcmtiZW5jaCBzdGFydHVwIGhhcyBmaW5pc2hlZCxcbiAgICogdGhlIHdvcmtiZW5jaCB3aWxsIGRpc3BsYXkgYSBzdGFydHVwIHNwbGFzaCB1bnRpbCBjb21wbGV0ZWQgc3RhcnR1cC5cbiAgICpcbiAgICogIyMjIFN0YXJ0dXAgTGlmZWN5Y2xlIEhvb2tzXG4gICAqIFRoZSBTQ0lPTiBXb3JrYmVuY2ggZGVmaW5lcyBhIG51bWJlciBvZiBpbmplY3Rpb24gdG9rZW5zIChhbHNvIGNhbGxlZCBESSB0b2tlbnMpIGFzIGhvb2tzIGludG8gdGhlIHdvcmtiZW5jaCdzIHN0YXJ0dXAgcHJvY2Vzcy5cbiAgICogSG9va3MgYXJlIGNhbGxlZCBhdCBkZWZpbmVkIHBvaW50cyBkdXJpbmcgc3RhcnR1cCwgZW5hYmxpbmcgdGhlIGFwcGxpY2F0aW9uJ3MgY29udHJvbGxlZCBpbml0aWFsaXphdGlvbi5cbiAgICpcbiAgICogVGhlIGFwcGxpY2F0aW9uIGNhbiBhc3NvY2lhdGUgb25lIG9yIG1vcmUgaW5pdGlhbGl6ZXJzIHdpdGggYW55IG9mIHRoZXNlIERJIHRva2Vucy4gQW4gaW5pdGlhbGl6ZXIgY2FuIGJlIGFueSBvYmplY3QgYW5kIGlzIHRvXG4gICAqIGJlIHByb3ZpZGVkIGFzIGEgbXVsdGktcHJvdmlkZXIuIElmIHRoZSBpbml0aWFsaXplciBpcyBhIGZ1bmN0aW9uIG9yIGluc3RhbmNlIG9mIHtAbGluayBXb3JrYmVuY2hJbml0aWFsaXplcn0gYW5kIHJldHVybnMgYSBQcm9taXNlLFxuICAgKiB0aGUgd29ya2JlbmNoIHdhaXRzIGZvciB0aGUgUHJvbWlzZSB0byBiZSByZXNvbHZlZCBiZWZvcmUgcHJvY2VlZGluZyB3aXRoIHRoZSBzdGFydHVwLiBJbml0aWFsaXplcnMgY2FuIGNhbGwgYGluamVjdGAgdG8gZ2V0IGFueVxuICAgKiByZXF1aXJlZCBkZXBlbmRlbmNpZXMuIEluaXRpYWxpemVycyBhc3NvY2lhdGVkIHdpdGggdGhlIHNhbWUgREkgdG9rZW4gbWF5IHJ1biBpbiBwYXJhbGxlbC5cbiAgICpcbiAgICogRm9sbG93aW5nIERJIHRva2VucyBhcmUgYXZhaWxhYmxlIGFzIGhvb2tzIGludG8gdGhlIHdvcmtiZW5jaCdzIHN0YXJ0dXAgcHJvY2VzcywgbGlzdGVkIGluIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IGFyZSBpbmplY3RlZCBhbmRcbiAgICogZXhlY3V0ZWQuXG4gICAqXG4gICAqIC0ge0BsaW5rIFdPUktCRU5DSF9QUkVfU1RBUlRVUH1cbiAgICogLSB7QGxpbmsgV09SS0JFTkNIX1NUQVJUVVB9XG4gICAqIC0ge0BsaW5rIE1JQ1JPRlJPTlRFTkRfUExBVEZPUk1fUFJFX1NUQVJUVVB9XG4gICAqIC0ge0BsaW5rIE1JQ1JPRlJPTlRFTkRfUExBVEZPUk1fUE9TVF9TVEFSVFVQfVxuICAgKiAtIHtAbGluayBXT1JLQkVOQ0hfUE9TVF9TVEFSVFVQfVxuICAgKlxuICAgKiAjIyMgRXhhbXBsZSBvZiBob3cgdG8gaG9vayBpbnRvIHRoZSBzdGFydHVwIHByb2Nlc3MuXG4gICAqXG4gICAqIGBgYHRzXG4gICAqIHtcbiAgICogICBwcm92aWRlOiBXT1JLQkVOQ0hfU1RBUlRVUCxcbiAgICogICBtdWx0aTogdHJ1ZSxcbiAgICogICB1c2VWYWx1ZTogKCkgPT4gaW5qZWN0KEluaXRpYWxpemVyKS5pbml0KCksXG4gICAqIH1cbiAgICogYGBgXG4gICAqXG4gICAqIEByZXR1cm4gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgd29ya2JlbmNoIGhhcyBjb21wbGV0ZWQgdGhlIHN0YXJ0dXAgb3IgdGhhdCByZWplY3RzIGlmIHRoZSBzdGFydHVwIGZhaWxlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBsYXVuY2goKTogUHJvbWlzZTx0cnVlPiB7XG4gICAgLy8gRW5zdXJlIHRvIHJ1biBpbiB0aGUgQW5ndWxhciB6b25lIHRvIGNoZWNrIHRoZSB3b3JrYmVuY2ggZm9yIGNoYW5nZXMgZXZlbiBpZiBjYWxsZWQgZnJvbSBvdXRzaWRlIHRoZSBBbmd1bGFyIHpvbmUsIGUuZy4gaW4gdW5pdCB0ZXN0cy5cbiAgICBpZiAoIU5nWm9uZS5pc0luQW5ndWxhclpvbmUoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3pvbmUucnVuKCgpID0+IHRoaXMubGF1bmNoKCkpO1xuICAgIH1cblxuICAgIHN3aXRjaCAodGhpcy5fc3RhdGUpIHtcbiAgICAgIGNhc2UgU3RhcnR1cFN0YXRlLlN0b3BwZWQ6IHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCgpID0+IGBTdGFydGluZyBXb3JrYmVuY2guIFdhaXRpbmcgZm9yIHdvcmtiZW5jaCBpbml0aWFsaXplcnMgdG8gY29tcGxldGUuIFtsYXVuY2hlcj0ke3RoaXMuX2luamVjdG9yLmdldChBcHBsaWNhdGlvbkluaXRTdGF0dXMpLmRvbmUgPyAnTEFaWScgOiAnQVBQX0lOSVRJQUxJWkVSJ31dYCwgTG9nZ2VyTmFtZXMuTElGRUNZQ0xFKTtcbiAgICAgICAgdGhpcy5fc3RhdGUgPSBTdGFydHVwU3RhdGUuU3RhcnRpbmc7XG4gICAgICAgIGF3YWl0IHJ1bldvcmtiZW5jaEluaXRpYWxpemVycyhXT1JLQkVOQ0hfUFJFX1NUQVJUVVAsIHRoaXMuX2luamVjdG9yKTtcbiAgICAgICAgYXdhaXQgcnVuV29ya2JlbmNoSW5pdGlhbGl6ZXJzKFdPUktCRU5DSF9TVEFSVFVQLCB0aGlzLl9pbmplY3Rvcik7XG4gICAgICAgIHRoaXMuX3N0YXRlID0gU3RhcnR1cFN0YXRlLlN0YXJ0ZWQ7XG4gICAgICAgIGF3YWl0IHJ1bldvcmtiZW5jaEluaXRpYWxpemVycyhXT1JLQkVOQ0hfUE9TVF9TVEFSVFVQLCB0aGlzLl9pbmplY3Rvcik7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygoKSA9PiAnV29ya2JlbmNoIHN0YXJ0ZWQuJywgTG9nZ2VyTmFtZXMuTElGRUNZQ0xFKTtcbiAgICAgICAgdGhpcy5fc3RhcnR1cC5ub3RpZnlTdGFydGVkKCk7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGFydHVwLndoZW5TdGFydGVkO1xuICAgICAgfVxuICAgICAgY2FzZSBTdGFydHVwU3RhdGUuU3RhcnRpbmc6XG4gICAgICBjYXNlIFN0YXJ0dXBTdGF0ZS5TdGFydGVkOiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGFydHVwLndoZW5TdGFydGVkO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICB0aHJvdyBFcnJvcihgW1dvcmtiZW5jaFN0YXJ0dXBFcnJvcl0gSWxsZWdhbCBzdGFydHVwIHN0YXRlOiAke3RoaXMuX3N0YXRlfWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5lbnVtIFN0YXJ0dXBTdGF0ZSB7XG4gIFN0b3BwZWQsIFN0YXJ0aW5nLCBTdGFydGVkXG59XG5cbi8qKlxuICogQWxsb3dzIHdhaXRpbmcgZm9yIHRoZSB3b3JrYmVuY2ggc3RhcnR1cCB0byBjb21wbGV0ZS5cbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgV29ya2JlbmNoU3RhcnR1cCB7XG5cbiAgLyoqXG4gICAqIFNpZ25hbHMgd2hlbiB0aGUgd29ya2JlbmNoIGNvbXBsZXRlZCBzdGFydHVwLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlzU3RhcnRlZCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgLyogQGludGVybmFsICovXG4gIHB1YmxpYyBub3RpZnlTdGFydGVkITogKCkgPT4gdm9pZDtcblxuICAvKipcbiAgICogUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHdvcmtiZW5jaCBoYXMgY29tcGxldGVkIHRoZSBzdGFydHVwLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHdoZW5TdGFydGVkID0gbmV3IFByb21pc2U8dHJ1ZT4ocmVzb2x2ZSA9PiB0aGlzLm5vdGlmeVN0YXJ0ZWQgPSAoKSA9PiB7XG4gICAgdGhpcy5pc1N0YXJ0ZWQuc2V0KHRydWUpO1xuICAgIHJlc29sdmUodHJ1ZSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFByb3ZpZGVzIGEgc2V0IG9mIERJIHByb3ZpZGVycyBmb3IgbGF1bmNoaW5nIHRoZSB3b3JrYmVuY2guXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlV29ya2JlbmNoTGF1bmNoZXIod29ya2JlbmNoQ29uZmlnOiBXb3JrYmVuY2hDb25maWcpOiBFbnZpcm9ubWVudFByb3ZpZGVycyB8IFtdIHtcbiAgaWYgKHdvcmtiZW5jaENvbmZpZy5zdGFydHVwPy5sYXVuY2hlciAhPT0gJ0FQUF9JTklUSUFMSVpFUicpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFt7XG4gICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgIHVzZUZhY3Rvcnk6ICgpID0+IHtcbiAgICAgIGNvbnN0IGxhdW5jaGVyID0gaW5qZWN0KFdvcmtiZW5jaExhdW5jaGVyKTtcbiAgICAgIHJldHVybiAoKSA9PiBsYXVuY2hlci5sYXVuY2goKTtcbiAgICB9LFxuICAgIG11bHRpOiB0cnVlLFxuICB9XSk7XG59XG4iXX0=
|
|
@@ -37,7 +37,7 @@ export function provideWorkbenchForTest(config) {
|
|
|
37
37
|
provideWorkbench(config),
|
|
38
38
|
provideNoopAnimations(),
|
|
39
39
|
{ provide: ActivationInstantProvider, useClass: SequenceInstantProvider },
|
|
40
|
-
{ provide: MAIN_AREA_INITIAL_PART_ID, useValue: 'main' },
|
|
40
|
+
{ provide: MAIN_AREA_INITIAL_PART_ID, useValue: config?.mainAreaInitialPartId ?? 'main' },
|
|
41
41
|
{ provide: ComponentFixtureAutoDetect, useValue: true },
|
|
42
42
|
{ provide: ENVIRONMENT_INITIALIZER, multi: true, useValue: () => inject(Router).initialNavigation() },
|
|
43
43
|
{ provide: ENVIRONMENT_INITIALIZER, multi: true, useValue: () => localStorage.clear() },
|
|
@@ -57,4 +57,4 @@ class SequenceInstantProvider {
|
|
|
57
57
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: SequenceInstantProvider, decorators: [{
|
|
58
58
|
type: Injectable
|
|
59
59
|
}] });
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvdGVzdGluZy93b3JrYmVuY2gucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLHVCQUF1QixFQUF3QixNQUFNLEVBQUUsVUFBVSxFQUFFLHdCQUF3QixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzFILE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFdkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Qkc7QUFDSCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsTUFBMkQ7SUFDakcsT0FBTyx3QkFBd0IsQ0FBQztRQUM5QixnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7UUFDeEIscUJBQXFCLEVBQUU7UUFDdkIsRUFBQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsUUFBUSxFQUFFLHVCQUF1QixFQUFDO1FBQ3ZFLEVBQUMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUscUJBQXFCLElBQUksTUFBTSxFQUFDO1FBQ3ZGLEVBQUMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUM7UUFDckQsRUFBQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEVBQUM7UUFDbkcsRUFBQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxFQUFDO1FBQ3JGLEVBQUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsRUFBRSxFQUFDO0tBQ2xGLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUNNLHVCQUF1QjtJQUQ3QjtRQUdVLGNBQVMsR0FBRyxDQUFDLENBQUM7S0FLdkI7SUFIUSxHQUFHO1FBQ1IsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDMUIsQ0FBQzs4R0FORyx1QkFBdUI7a0hBQXZCLHVCQUF1Qjs7MkZBQXZCLHVCQUF1QjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7V29ya2JlbmNoQ29uZmlnfSBmcm9tICcuLi93b3JrYmVuY2gtY29uZmlnJztcbmltcG9ydCB7RU5WSVJPTk1FTlRfSU5JVElBTElaRVIsIEVudmlyb25tZW50UHJvdmlkZXJzLCBpbmplY3QsIEluamVjdGFibGUsIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVyc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3Byb3ZpZGVXb3JrYmVuY2h9IGZyb20gJy4uL3dvcmtiZW5jaC5wcm92aWRlcic7XG5pbXBvcnQge3Byb3ZpZGVOb29wQW5pbWF0aW9uc30gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zJztcbmltcG9ydCB7QWN0aXZhdGlvbkluc3RhbnRQcm92aWRlcn0gZnJvbSAnLi4vYWN0aXZhdGlvbi1pbnN0YW50LnByb3ZpZGVyJztcbmltcG9ydCB7TUFJTl9BUkVBX0lOSVRJQUxfUEFSVF9JRH0gZnJvbSAnLi4vbGF5b3V0L8m1d29ya2JlbmNoLWxheW91dCc7XG5pbXBvcnQge0NvbXBvbmVudEZpeHR1cmVBdXRvRGV0ZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlL3Rlc3RpbmcnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgc2V0IG9mIGRlcGVuZGVuY3ktaW5qZWN0aW9uIHByb3ZpZGVycyB0byBlbmFibGUgYW5kIGNvbmZpZ3VyZSB0aGUgU0NJT04gV29ya2JlbmNoIGluIHRlc3RzLlxuICpcbiAqIERvZXMgdGhlIGZvbGxvd2luZzpcbiAqIC0gcHJvdmlkZXMgdGhlIHdvcmtiZW5jaCB3aXRoIGdpdmVuIGNvbmZpZ1xuICogLSBjb25maWd1cmVzIHRoZSB3b3JrYmVuY2ggdG8gbmFtZSB0aGUgaW5pdGlhbCBwYXJ0ICdtYWluJ1xuICogLSBpbnN0YWxscyBhIHNlcXVlbmNlIGZvciBhY3RpdmF0aW9uIGluc3RhbnRzXG4gKiAtIGNvbmZpZ3VyZXMgdGhlIHRlc3RiZWQgdG8gYXV0by1kZXRlY3QgY2hhbmdlc1xuICogLSBkaXNhYmxlcyBhbmltYXRpb25zXG4gKiAtIHBlcmZvcm1zIHRoZSBpbml0aWFsIG5hdmlnYXRpb25cbiAqXG4gKiAjIyMgVXNhZ2VcbiAqXG4gKiBgYGBcbiAqIGJlZm9yZUVhY2goKCkgPT4ge1xuICogICBUZXN0QmVkLmNvbmZpZ3VyZVRlc3RpbmdNb2R1bGUoe1xuICogICAgICBpbXBvcnRzOiBbXG4gKiAgICAgICAgV29ya2JlbmNoVGVzdGluZ01vZHVsZS5mb3JUZXN0KCksXG4gKiAgICAgICAgUm91dGVyVGVzdGluZ01vZHVsZS53aXRoUm91dGVzKFtcbiAqICAgICAgICAgIHtwYXRoOiAndGVzdC12aWV3JywgY29tcG9uZW50OiBUZXN0Q29tcG9uZW50fSxcbiAqICAgICAgICBdKSxcbiAqICAgICAgXSxcbiAqICAgIH0pO1xuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVXb3JrYmVuY2hGb3JUZXN0KGNvbmZpZz86IFdvcmtiZW5jaENvbmZpZyAmIHttYWluQXJlYUluaXRpYWxQYXJ0SWQ/OiBzdHJpbmd9KTogRW52aXJvbm1lbnRQcm92aWRlcnMge1xuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFtcbiAgICBwcm92aWRlV29ya2JlbmNoKGNvbmZpZyksXG4gICAgcHJvdmlkZU5vb3BBbmltYXRpb25zKCksXG4gICAge3Byb3ZpZGU6IEFjdGl2YXRpb25JbnN0YW50UHJvdmlkZXIsIHVzZUNsYXNzOiBTZXF1ZW5jZUluc3RhbnRQcm92aWRlcn0sXG4gICAge3Byb3ZpZGU6IE1BSU5fQVJFQV9JTklUSUFMX1BBUlRfSUQsIHVzZVZhbHVlOiBjb25maWc/Lm1haW5BcmVhSW5pdGlhbFBhcnRJZCA/PyAnbWFpbid9LFxuICAgIHtwcm92aWRlOiBDb21wb25lbnRGaXh0dXJlQXV0b0RldGVjdCwgdXNlVmFsdWU6IHRydWV9LFxuICAgIHtwcm92aWRlOiBFTlZJUk9OTUVOVF9JTklUSUFMSVpFUiwgbXVsdGk6IHRydWUsIHVzZVZhbHVlOiAoKSA9PiBpbmplY3QoUm91dGVyKS5pbml0aWFsTmF2aWdhdGlvbigpfSxcbiAgICB7cHJvdmlkZTogRU5WSVJPTk1FTlRfSU5JVElBTElaRVIsIG11bHRpOiB0cnVlLCB1c2VWYWx1ZTogKCkgPT4gbG9jYWxTdG9yYWdlLmNsZWFyKCl9LFxuICAgIHtwcm92aWRlOiBFTlZJUk9OTUVOVF9JTklUSUFMSVpFUiwgbXVsdGk6IHRydWUsIHVzZVZhbHVlOiAoKSA9PiB3aW5kb3cubmFtZSA9ICcnfSxcbiAgXSk7XG59XG5cbkBJbmplY3RhYmxlKC8qIERPIE5PVCBQUk9WSURFIHZpYSAncHJvdmlkZWRJbicgbWV0YWRhdGEgYXMgcmVnaXN0ZXJlZCBvbmx5IGlmIHVzaW5nIGBXb3JrYmVuY2hUZXN0aW5nTW9kdWxlYC4gKi8pXG5jbGFzcyBTZXF1ZW5jZUluc3RhbnRQcm92aWRlciBpbXBsZW1lbnRzIEFjdGl2YXRpb25JbnN0YW50UHJvdmlkZXIge1xuXG4gIHByaXZhdGUgX3NlcXVlbmNlID0gMDtcblxuICBwdWJsaWMgbm93KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3NlcXVlbmNlKys7XG4gIH1cbn1cbiJdfQ==
|