@smartbit4all/ng-client 1.0.12 → 1.0.13
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/esm2020/lib/smart-client/smart-component-api-client.mjs +36 -14
- package/esm2020/lib/smart-client/smart.component.mjs +12 -13
- package/esm2020/lib/smart-client/smart.service.mjs +12 -13
- package/esm2020/lib/view-context/api/api/view.service.mjs +118 -1
- package/esm2020/lib/view-context/smart-ui-action/ui-action-toolbar.component.mjs +13 -13
- package/esm2020/lib/view-context/smart-ui-action/ui-action.model.mjs +1 -1
- package/esm2020/lib/view-context/smart-ui-action/ui-action.service.mjs +26 -19
- package/esm2020/lib/view-context/smart-view-context.service.mjs +37 -33
- package/fesm2015/smartbit4all-ng-client.mjs +236 -77
- package/fesm2015/smartbit4all-ng-client.mjs.map +1 -1
- package/fesm2020/smartbit4all-ng-client.mjs +225 -76
- package/fesm2020/smartbit4all-ng-client.mjs.map +1 -1
- package/lib/smart-client/smart-component-api-client.d.ts +14 -6
- package/lib/smart-client/smart.component.d.ts +4 -5
- package/lib/smart-client/smart.service.d.ts +4 -5
- package/lib/view-context/api/api/view.service.d.ts +41 -0
- package/lib/view-context/smart-ui-action/ui-action-toolbar.component.d.ts +5 -5
- package/lib/view-context/smart-ui-action/ui-action.model.d.ts +4 -2
- package/lib/view-context/smart-ui-action/ui-action.service.d.ts +16 -6
- package/lib/view-context/smart-view-context.service.d.ts +10 -7
- package/package.json +1 -1
- package/smartbit4all-ng-client-1.0.13.tgz +0 -0
- package/smartbit4all-ng-client-1.0.12.tgz +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Injectable } from
|
|
2
|
-
import { Subject } from
|
|
3
|
-
import { ViewState, ViewType, } from
|
|
4
|
-
import { MessageDialogComponent } from
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import { ViewState, ViewType, } from './api';
|
|
4
|
+
import { MessageDialogComponent } from './message-dialog/message-dialog.component';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
import * as i1 from "./api";
|
|
7
7
|
import * as i2 from "../session/smart-session.service";
|
|
@@ -13,8 +13,8 @@ export class SmartViewContextService {
|
|
|
13
13
|
this.session = session;
|
|
14
14
|
this.navigation = navigation;
|
|
15
15
|
this.dialog = dialog;
|
|
16
|
-
this.tabIdName =
|
|
17
|
-
this.tabIdhttpHeaderName =
|
|
16
|
+
this.tabIdName = 'viewContextUuid';
|
|
17
|
+
this.tabIdhttpHeaderName = 'viewContextUuid';
|
|
18
18
|
this.viewHandlers = new Array();
|
|
19
19
|
this.openedViewUuids = new Array();
|
|
20
20
|
this.uuidOfPageHasBeenChanged = new Subject();
|
|
@@ -47,7 +47,7 @@ export class SmartViewContextService {
|
|
|
47
47
|
}
|
|
48
48
|
getActionDescriptors() {
|
|
49
49
|
if (!this.actionDescriptors) {
|
|
50
|
-
console.error(
|
|
50
|
+
console.error('No action descriptors has been set to ViewContext.');
|
|
51
51
|
}
|
|
52
52
|
return this.actionDescriptors;
|
|
53
53
|
}
|
|
@@ -68,7 +68,7 @@ export class SmartViewContextService {
|
|
|
68
68
|
this.view.configuration.basePath = this.url;
|
|
69
69
|
}
|
|
70
70
|
setUrl(url) {
|
|
71
|
-
this.url = url +
|
|
71
|
+
this.url = url + '/view';
|
|
72
72
|
this.setUpUrlForViewService();
|
|
73
73
|
}
|
|
74
74
|
async getAndSyncViewContext(uuid) {
|
|
@@ -82,7 +82,7 @@ export class SmartViewContextService {
|
|
|
82
82
|
async getViewContext(uuid) {
|
|
83
83
|
this.viewContext = await this.view.getViewContext(uuid).toPromise();
|
|
84
84
|
if (!this.viewContext) {
|
|
85
|
-
throw new Error(
|
|
85
|
+
throw new Error('ViewContext does not exist with the given uuid.');
|
|
86
86
|
}
|
|
87
87
|
return this.viewContext;
|
|
88
88
|
}
|
|
@@ -90,7 +90,7 @@ export class SmartViewContextService {
|
|
|
90
90
|
if (!this.viewContext) {
|
|
91
91
|
let viewContextUuid = sessionStorage.getItem(this.tabIdName);
|
|
92
92
|
if (!viewContextUuid) {
|
|
93
|
-
throw new Error(
|
|
93
|
+
throw new Error('View context is not initialized!');
|
|
94
94
|
}
|
|
95
95
|
await this.getViewContext(viewContextUuid);
|
|
96
96
|
}
|
|
@@ -114,11 +114,9 @@ export class SmartViewContextService {
|
|
|
114
114
|
}
|
|
115
115
|
async startViewContext() {
|
|
116
116
|
this.clearSessionStorage();
|
|
117
|
-
let newViewContext = await this.view
|
|
118
|
-
.createViewContext()
|
|
119
|
-
.toPromise();
|
|
117
|
+
let newViewContext = await this.view.createViewContext().toPromise();
|
|
120
118
|
if (!newViewContext) {
|
|
121
|
-
throw new Error(
|
|
119
|
+
throw new Error('No ViewContext was created');
|
|
122
120
|
}
|
|
123
121
|
this.viewContext = newViewContext;
|
|
124
122
|
this.setTabId(newViewContext.uuid);
|
|
@@ -129,7 +127,7 @@ export class SmartViewContextService {
|
|
|
129
127
|
throw new Error("There aren't any viewHandlers in SmartViewContextService! Provide some to use its functions.");
|
|
130
128
|
}
|
|
131
129
|
if (!this.messageDialogname) {
|
|
132
|
-
throw new Error(
|
|
130
|
+
throw new Error('The messageDialogName provided by the backend has not been set.');
|
|
133
131
|
}
|
|
134
132
|
if (uuid) {
|
|
135
133
|
let subscription = this.session.headersUpdated.subscribe(async () => {
|
|
@@ -173,10 +171,10 @@ export class SmartViewContextService {
|
|
|
173
171
|
if (viewHandler.route === undefined) {
|
|
174
172
|
throw new Error(`Route is undefined in SmartViewHandlerModel with name: ${view.viewName}`);
|
|
175
173
|
}
|
|
176
|
-
this.navigation.navigateTo(viewHandler.route.split(
|
|
174
|
+
this.navigation.navigateTo(viewHandler.route.split('/'));
|
|
177
175
|
}
|
|
178
176
|
else {
|
|
179
|
-
throw new Error(
|
|
177
|
+
throw new Error('The type of the view and its viewHandler is not the same!');
|
|
180
178
|
}
|
|
181
179
|
view.state = ViewState.Opened;
|
|
182
180
|
this.openedViewUuids.push(view.uuid);
|
|
@@ -205,7 +203,7 @@ export class SmartViewContextService {
|
|
|
205
203
|
this.dialogRefs.splice(index, 1);
|
|
206
204
|
}
|
|
207
205
|
else {
|
|
208
|
-
throw new Error(
|
|
206
|
+
throw new Error('DialogRef is not found by uuid.');
|
|
209
207
|
}
|
|
210
208
|
}
|
|
211
209
|
else if (view.type === ViewType.Normal) {
|
|
@@ -213,7 +211,7 @@ export class SmartViewContextService {
|
|
|
213
211
|
// this.navigation.navigateTo(viewHandler.route.split("/"));
|
|
214
212
|
}
|
|
215
213
|
else {
|
|
216
|
-
throw new Error(
|
|
214
|
+
throw new Error('The type of the view and its viewHandler is not the same!');
|
|
217
215
|
}
|
|
218
216
|
view.state = ViewState.Closed;
|
|
219
217
|
this.openedViewUuids.slice(this.openedViewUuids.indexOf(view.uuid), 1);
|
|
@@ -257,18 +255,16 @@ export class SmartViewContextService {
|
|
|
257
255
|
return uuid;
|
|
258
256
|
}
|
|
259
257
|
async message(messageData, messageResult) {
|
|
260
|
-
await this.view
|
|
261
|
-
.message(messageData.viewUuid ?? "", messageData.uuid, messageResult)
|
|
262
|
-
.toPromise();
|
|
258
|
+
await this.view.message(messageData.viewUuid ?? '', messageData.uuid, messageResult).toPromise();
|
|
263
259
|
await this.getAndSyncViewContext();
|
|
264
260
|
}
|
|
265
261
|
getSmartViewContextApiErrorByCode(code) {
|
|
266
262
|
if (!this.smartViewContextApiErrors) {
|
|
267
263
|
return {
|
|
268
264
|
code,
|
|
269
|
-
message:
|
|
270
|
-
buttonLabel:
|
|
271
|
-
dialogTitle:
|
|
265
|
+
message: 'An error has occured.',
|
|
266
|
+
buttonLabel: 'Ok',
|
|
267
|
+
dialogTitle: 'Hiba',
|
|
272
268
|
};
|
|
273
269
|
}
|
|
274
270
|
let apiErrorsWithCode = this.smartViewContextApiErrors.viewContextApiErrors.filter((apiError) => {
|
|
@@ -278,9 +274,9 @@ export class SmartViewContextService {
|
|
|
278
274
|
console.error(`SmartViewContextApiError with code ${code} could not be found.`);
|
|
279
275
|
return {
|
|
280
276
|
code,
|
|
281
|
-
message:
|
|
282
|
-
buttonLabel:
|
|
283
|
-
dialogTitle:
|
|
277
|
+
message: 'An error has occured.',
|
|
278
|
+
buttonLabel: 'Ok',
|
|
279
|
+
dialogTitle: 'Hiba',
|
|
284
280
|
};
|
|
285
281
|
}
|
|
286
282
|
return apiErrorsWithCode[0];
|
|
@@ -288,7 +284,7 @@ export class SmartViewContextService {
|
|
|
288
284
|
async getViewConstraint(uuid) {
|
|
289
285
|
let viewConstraintResponse = await this.view.getViewConstraint(uuid).toPromise();
|
|
290
286
|
if (!viewConstraintResponse)
|
|
291
|
-
throw new Error(
|
|
287
|
+
throw new Error('Could not get ViewConstraint with the given uuid.');
|
|
292
288
|
return viewConstraintResponse;
|
|
293
289
|
}
|
|
294
290
|
async showPublishedView(channel, uuid) {
|
|
@@ -306,7 +302,15 @@ export class SmartViewContextService {
|
|
|
306
302
|
return await this.view.downloadItem(uuid, item).toPromise();
|
|
307
303
|
}
|
|
308
304
|
async performAction(uuid, uiActionRequest) {
|
|
309
|
-
|
|
305
|
+
return await this.handlePerformActionResponse(await this.view.performAction(uuid, uiActionRequest).toPromise());
|
|
306
|
+
}
|
|
307
|
+
async performWidgetAction(uuid, widgetId, nodeId, uiActionRequest) {
|
|
308
|
+
return await this.handlePerformActionResponse(await this.view.performWidgetAction(uuid, widgetId, nodeId, uiActionRequest).toPromise());
|
|
309
|
+
}
|
|
310
|
+
async performWidgetMainAction(uuid, widgetId, uiActionRequest) {
|
|
311
|
+
return await this.handlePerformActionResponse(await this.view.performWidgetMainAction(uuid, widgetId, uiActionRequest).toPromise());
|
|
312
|
+
}
|
|
313
|
+
async handlePerformActionResponse(viewContextChange) {
|
|
310
314
|
this.viewContext = viewContextChange?.viewContext;
|
|
311
315
|
this.syncView();
|
|
312
316
|
if (viewContextChange?.changes) {
|
|
@@ -326,11 +330,11 @@ export class SmartViewContextService {
|
|
|
326
330
|
}
|
|
327
331
|
}
|
|
328
332
|
SmartViewContextService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartViewContextService, deps: [{ token: i1.ViewService }, { token: i2.SmartSessionService }, { token: i3.SmartNavigationService }, { token: i4.SmartdialogService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
329
|
-
SmartViewContextService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartViewContextService, providedIn:
|
|
333
|
+
SmartViewContextService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartViewContextService, providedIn: 'root' });
|
|
330
334
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartViewContextService, decorators: [{
|
|
331
335
|
type: Injectable,
|
|
332
336
|
args: [{
|
|
333
|
-
providedIn:
|
|
337
|
+
providedIn: 'root',
|
|
334
338
|
}]
|
|
335
339
|
}], ctorParameters: function () { return [{ type: i1.ViewService }, { type: i2.SmartSessionService }, { type: i3.SmartNavigationService }, { type: i4.SmartdialogService }]; } });
|
|
336
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtdmlldy1jb250ZXh0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdmlldy1jb250ZXh0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFZSCxTQUFTLEVBQ1QsUUFBUSxHQUNYLE1BQU0sT0FBTyxDQUFDO0FBQ2YsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7OztBQWNuRixNQUFNLE9BQU8sdUJBQXVCO0lBeUNoQyxZQUNZLElBQWlCLEVBQ2pCLE9BQTRCLEVBQzVCLFVBQWtDLEVBQ2xDLE1BQTBCO1FBSDFCLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsWUFBTyxHQUFQLE9BQU8sQ0FBcUI7UUFDNUIsZUFBVSxHQUFWLFVBQVUsQ0FBd0I7UUFDbEMsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUE1QzlCLGNBQVMsR0FBVyxpQkFBaUIsQ0FBQztRQUN0Qyx3QkFBbUIsR0FBVyxpQkFBaUIsQ0FBQztRQUloRCxpQkFBWSxHQUFpQyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3pELG9CQUFlLEdBQWtCLElBQUksS0FBSyxFQUFFLENBQUM7UUFFOUMsNkJBQXdCLEdBQW9CLElBQUksT0FBTyxFQUFFLENBQUM7UUFDMUQsNkJBQXdCLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFJeEQsa0JBQWEsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM3Qyx1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFFbkMsZUFBVSxHQUF5QixFQUFFLENBQUM7UUFNdkMsb0JBQWUsR0FBbUMsSUFBSSxHQUFHLEVBQUUs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QUFFLFdBQVcsQ0FBQztRQUNsRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFaEIsSUFBSSxpQkFBaUIsRUFBRSxPQUFPLEVBQUU7WUFDNUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNqRDtJQUNMLENBQUM7SUFFTyxhQUFhLENBQUMsT0FBb0M7UUFDdEQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLG9CQUEwQyxFQUFFLEVBQUU7WUFDM0QsSUFBSSxZQUFZLEdBQWtDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUN0RSxvQkFBb0IsQ0FBQyxJQUFJLENBQzVCLENBQUM7WUFDRixJQUFJLFlBQVksRUFBRTtnQkFDZCxZQUFZLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ2pEO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFZO1FBQzFCLE9BQU8sTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQy9ELENBQUM7O3FIQWhaUSx1QkFBdUI7eUhBQXZCLHVCQUF1QixjQUZwQixNQUFNOzRGQUVULHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFNtYXJ0ZGlhbG9nU2VydmljZSB9IGZyb20gXCJAc21hcnRiaXQ0YWxsL2RpYWxvZ1wiO1xuaW1wb3J0IHsgU21hcnROYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gXCJAc21hcnRiaXQ0YWxsL25hdmlnYXRpb25cIjtcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnRNb2RlbCxcbiAgICBDb21wb25lbnRNb2RlbENoYW5nZSxcbiAgICBNZXNzYWdlRGF0YSxcbiAgICBNZXNzYWdlUmVzdWx0LFxuICAgIFVpQWN0aW9uRGVzY3JpcHRvcixcbiAgICBVaUFjdGlvblJlcXVlc3QsXG4gICAgVmlld0NvbnN0cmFpbnQsXG4gICAgVmlld0NvbnRleHREYXRhLFxuICAgIFZpZXdDb250ZXh0VXBkYXRlLFxuICAgIFZpZXdEYXRhLFxuICAgIFZpZXdTZXJ2aWNlLFxuICAgIFZpZXdTdGF0ZSxcbiAgICBWaWV3VHlwZSxcbn0gZnJvbSBcIi4vYXBpXCI7XG5pbXBvcnQgeyBNZXNzYWdlRGlhbG9nQ29tcG9uZW50IH0gZnJvbSBcIi4vbWVzc2FnZS1kaWFsb2cvbWVzc2FnZS1kaWFsb2cuY29tcG9uZW50XCI7XG5pbXBvcnQge1xuICAgIFNtYXJ0VHJhbnNsYXRlU2VydmljZSxcbiAgICBTbWFydFZpZXdDb250ZXh0QXBpRXJyb3IsXG4gICAgU21hcnRWaWV3Q29udGV4dEFwaUVycm9ycyxcbiAgICBTbWFydFZpZXdEaWFsb2dSZWYsXG4gICAgU21hcnRWaWV3SGFuZGxlck1vZGVsLFxufSBmcm9tIFwiLi9zbWFydC12aWV3LWNvbnRleHQubW9kZWxcIjtcbmltcG9ydCB7IFNtYXJ0U2Vzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi4vc2Vzc2lvbi9zbWFydC1zZXNzaW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7IFNtYXJ0U3ViamVjdCB9IGZyb20gXCIuLi9zbWFydC1jbGllbnQvc21hcnQuc3ViamVjdFwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogXCJyb290XCIsXG59KVxuZXhwb3J0IGNsYXNzIFNtYXJ0Vmlld0NvbnRleHRTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHRhYklkTmFtZTogc3RyaW5nID0gXCJ2aWV3Q29udGV4dFV1aWRcIjtcbiAgICBwcml2YXRlIHRhYklkaHR0cEhlYWRlck5hbWU6IHN0cmluZyA9IFwidmlld0NvbnRleHRVdWlkXCI7XG4gICAgcHVibGljIG1lc3NhZ2VEaWFsb2duYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgcHJpdmF0ZSB1cmw/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSB2aWV3Q29udGV4dD86IFZpZXdDb250ZXh0RGF0YTtcbiAgICBwcml2YXRlIHZpZXdIYW5kbGVyczogQXJyYXk8U21hcnRWaWV3SGFuZGxlck1vZGVsPiA9IG5ldyBBcnJheSgpO1xuICAgIHByaXZhdGUgb3BlbmVkVmlld1V1aWRzOiBBcnJheTxzdHJpbmc+ID0gbmV3IEFycmF5KCk7XG5cbiAgICBwdWJsaWMgdXVpZE9mUGFnZUhhc0JlZW5DaGFuZ2VkOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdCgpO1xuICAgIHB1YmxpYyB2aWV3Q29udGV4dEhhc0JlZW5TeW5jZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgcHVibGljIHNtYXJ0Vmlld0NvbnRleHRBcGlFcnJvcnM/OiBTbWFydFZpZXdDb250ZXh0QXBpRXJyb3JzO1xuXG4gICAgcHVibGljIG9wZW5TbWFydExpbms6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuICAgIHB1YmxpYyBpc09wZW5pbmdTbWFydExpbms6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHByaXZhdGUgZGlhbG9nUmVmczogU21hcnRWaWV3RGlhbG9nUmVmW10gPSBbXTtcblxuICAgIHByaXZhdGUgYWN0aW9uRGVzY3JpcHRvcnM/OiBNYXA8c3RyaW5nLCBVaUFjdGlvbkRlc2NyaXB0b3I+O1xuXG4gICAgcHVibGljIGNvbW1vbkZlZWRiYWNrVGV4dD86IHN0cmluZztcblxuICAgIHB1YmxpYyBzbWFydEFwaUNsaWVudHM6IE1hcDxzdHJpbmcsIFNtYXJ0U3ViamVjdDxhbnk+PiA9IG5ldyBNYXAoKTtcblxuICAgIHB1YmxpYyBzZXQgdHJhbnNsYXRlU2VydmljZSh0cmFuc2xhdGVTZXJ2aWNlOiBTbWFydFRyYW5zbGF0ZVNlcnZpY2UgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fdHJhbnNsYXRlU2VydmljZSA9IHRyYW5zbGF0ZVNlcnZpY2U7XG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZUNoYW5nZWQubmV4dCgpO1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2VDaGFuZ2VkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0cmFuc2xhdGVTZXJ2aWNlKCk6IFNtYXJ0VHJhbnNsYXRlU2VydmljZSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh0aGlzLl90cmFuc2xhdGVTZXJ2aWNlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlU2VydmljZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3RyYW5zbGF0ZVNlcnZpY2U/OiBTbWFydFRyYW5zbGF0ZVNlcnZpY2U7XG4gICAgcHVibGljIHRyYW5zbGF0ZVNlcnZpY2VDaGFuZ2VkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHZpZXc6IFZpZXdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHNlc3Npb246IFNtYXJ0U2Vzc2lvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbmF2aWdhdGlvbjogU21hcnROYXZpZ2F0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBkaWFsb2c6IFNtYXJ0ZGlhbG9nU2VydmljZVxuICAgICkge31cblxuICAgIHB1YmxpYyBmb2xsb3codXVpZDogc3RyaW5nLCBkZXRlY3RDaGFuZ2U6IFNtYXJ0U3ViamVjdDxhbnk+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc21hcnRBcGlDbGllbnRzLnNldCh1dWlkLCBkZXRlY3RDaGFuZ2UpO1xuICAgIH1cbiAgICBwdWJsaWMgdW5mb2xsb3codXVpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc21hcnRBcGlDbGllbnRzLmRlbGV0ZSh1dWlkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0QWN0aW9uRGVzY3JpcHRvcnMoYWN0aW9uRGVzY3JpcHRvcnM6IE1hcDxzdHJpbmcsIFVpQWN0aW9uRGVzY3JpcHRvcj4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3Rpb25EZXNjcmlwdG9ycyA9IGFjdGlvbkRlc2NyaXB0b3JzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBY3Rpb25EZXNjcmlwdG9ycygpOiBNYXA8c3RyaW5nLCBVaUFjdGlvbkRlc2NyaXB0b3I+IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCF0aGlzLmFjdGlvbkRlc2NyaXB0b3JzKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiTm8gYWN0aW9uIGRlc2NyaXB0b3JzIGhhcyBiZWVuIHNldCB0byBWaWV3Q29udGV4dC5cIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aW9uRGVzY3JpcHRvcnM7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFZpZXdIYW5kbGVycyh2aWV3SGFuZGxlcnM6IEFycmF5PFNtYXJ0Vmlld0hhbmRsZXJNb2RlbD4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aWV3SGFuZGxlcnMgPSB2aWV3SGFuZGxlcnM7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFZpZXdBcGlFcnJvcnModmlld0FwaUVycm9yczogU21hcnRWaWV3Q29udGV4dEFwaUVycm9ycyk6IHZvaWQge1xuICAgICAgICB0aGlzLnNtYXJ0Vmlld0NvbnRleHRBcGlFcnJvcnMgPSB2aWV3QXBpRXJyb3JzO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRNZXNzYWdlRGlhbG9nTmFtZShtZXNzYWdlRGlhbG9nTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWVzc2FnZURpYWxvZ25hbWUgPSBtZXNzYWdlRGlhbG9nTmFtZTtcbiAgICAgICAgdGhpcy52aWV3SGFuZGxlcnMucHVzaCh7XG4gICAgICAgICAgICBuYW1lOiBtZXNzYWdlRGlhbG9nTmFtZSxcbiAgICAgICAgICAgIGNvbXBvbmVudDogTWVzc2FnZURpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRVcFVybEZvclZpZXdTZXJ2aWNlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZpZXcuY29uZmlndXJhdGlvbi5iYXNlUGF0aCA9IHRoaXMudXJsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRVcmwodXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cmwgPSB1cmwgKyBcIi92aWV3XCI7XG4gICAgICAgIHRoaXMuc2V0VXBVcmxGb3JWaWV3U2VydmljZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBbmRTeW5jVmlld0NvbnRleHQodXVpZD86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoIXV1aWQpIHtcbiAgICAgICAgICAgIHV1aWQgPSB0aGlzLmdldFV1aWRPZlBhZ2UodGhpcy50YWJJZE5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMuZ2V0Vmlld0NvbnRleHQodXVpZCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN5bmNWaWV3KCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRWaWV3Q29udGV4dCh1dWlkOiBzdHJpbmcpOiBQcm9taXNlPFZpZXdDb250ZXh0RGF0YT4ge1xuICAgICAgICB0aGlzLnZpZXdDb250ZXh0ID0gYXdhaXQgdGhpcy52aWV3LmdldFZpZXdDb250ZXh0KHV1aWQpLnRvUHJvbWlzZSgpO1xuICAgICAgICBpZiAoIXRoaXMudmlld0NvbnRleHQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlZpZXdDb250ZXh0IGRvZXMgbm90IGV4aXN0IHdpdGggdGhlIGdpdmVuIHV1aWQuXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdDb250ZXh0O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRWaWV3Q29udGV4dERhdGFCeVBhZ2VOYW1lKHBhZ2VOYW1lOiBzdHJpbmcpOiBQcm9taXNlPFZpZXdEYXRhPiB7XG4gICAgICAgIGlmICghdGhpcy52aWV3Q29udGV4dCkge1xuICAgICAgICAgICAgbGV0IHZpZXdDb250ZXh0VXVpZCA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy50YWJJZE5hbWUpO1xuICAgICAgICAgICAgaWYgKCF2aWV3Q29udGV4dFV1aWQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJWaWV3IGNvbnRleHQgaXMgbm90IGluaXRpYWxpemVkIVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZ2V0Vmlld0NvbnRleHQodmlld0NvbnRleHRVdWlkISk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHBhZ2VVdWlkID0gdGhpcy5nZXRVdWlkT2ZQYWdlKHBhZ2VOYW1lKTtcblxuICAgICAgICBsZXQgdmlld0NvbnRleHRCeVBhZ2VOYW1lID0gdGhpcy52aWV3Q29udGV4dD8udmlld3MuZmluZCgodmlldykgPT4gdmlldy51dWlkID09PSBwYWdlVXVpZCk7XG4gICAgICAgIGlmICghdmlld0NvbnRleHRCeVBhZ2VOYW1lKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBWaWV3RGF0YSBvZiAke3BhZ2VOYW1lfSBpcyBub3QgZm91bmQhYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZpZXdDb250ZXh0QnlQYWdlTmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgdXBkYXRlVmlld0NvbnRleHQoXG4gICAgICAgIHZpZXdDb250ZXh0VXBkYXRlOiBWaWV3Q29udGV4dFVwZGF0ZVxuICAgICk6IFByb21pc2U8Vmlld0NvbnRleHREYXRhIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRoaXMudmlld0NvbnRleHQgPSBhd2FpdCB0aGlzLnZpZXcudXBkYXRlVmlld0NvbnRleHQodmlld0NvbnRleHRVcGRhdGUpLnRvUHJvbWlzZSgpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdDb250ZXh0O1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xlYXJTZXNzaW9uU3RvcmFnZSgpOiB2b2lkIHtcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2UuY2xlYXIoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFRhYklkKHRhYklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnRhYklkTmFtZSwgdGFiSWQpO1xuICAgICAgICB0aGlzLnNlc3Npb24uYWRkSGVhZGVyUGFyYW0oeyBoZWFkZXJOYW1lOiB0aGlzLnRhYklkaHR0cEhlYWRlck5hbWUsIHZhbHVlOiB0YWJJZCB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc3RhcnRWaWV3Q29udGV4dCgpOiBQcm9taXNlPFZpZXdDb250ZXh0RGF0YT4ge1xuICAgICAgICB0aGlzLmNsZWFyU2Vzc2lvblN0b3JhZ2UoKTtcblxuICAgICAgICBsZXQgbmV3Vmlld0NvbnRleHQ6IFZpZXdDb250ZXh0RGF0YSB8IHVuZGVmaW5lZCA9IGF3YWl0IHRoaXMudmlld1xuICAgICAgICAgICAgLmNyZWF0ZVZpZXdDb250ZXh0KClcbiAgICAgICAgICAgIC50b1Byb21pc2UoKTtcbiAgICAgICAgaWYgKCFuZXdWaWV3Q29udGV4dCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gVmlld0NvbnRleHQgd2FzIGNyZWF0ZWRcIik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52aWV3Q29udGV4dCA9IG5ld1ZpZXdDb250ZXh0O1xuXG4gICAgICAgIHRoaXMuc2V0VGFiSWQobmV3Vmlld0NvbnRleHQudXVpZCEpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdDb250ZXh0O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBpbml0aWFsaXplKHV1aWQ/OiBzdHJpbmcpOiBQcm9taXNlPFZpZXdDb250ZXh0RGF0YT4ge1xuICAgICAgICBpZiAodGhpcy52aWV3SGFuZGxlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgXCJUaGVyZSBhcmVuJ3QgYW55IHZpZXdIYW5kbGVycyBpbiBTbWFydFZpZXdDb250ZXh0U2VydmljZSEgUHJvdmlkZSBzb21lIHRvIHVzZSBpdHMgZnVuY3Rpb25zLlwiXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5tZXNzYWdlRGlhbG9nbmFtZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhlIG1lc3NhZ2VEaWFsb2dOYW1lIHByb3ZpZGVkIGJ5IHRoZSBiYWNrZW5kIGhhcyBub3QgYmVlbiBzZXQuXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1dWlkKSB7XG4gICAgICAgICAgICBsZXQgc3Vic2NyaXB0aW9uID0gdGhpcy5zZXNzaW9uLmhlYWRlcnNVcGRhdGVkLnN1YnNjcmliZShhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5nZXRWaWV3Q29udGV4dCh1dWlkKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRUYWJJZCh1dWlkISk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc3RhcnRWaWV3Q29udGV4dCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5zZXRUYWJJZCh1dWlkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc3RhcnRWaWV3Q29udGV4dCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0NvbnRleHQhO1xuICAgIH1cblxuICAgIHB1YmxpYyBvcGVuVmlldyh2aWV3OiBWaWV3RGF0YSk6IHZvaWQge1xuICAgICAgICBsZXQgdmlld0hhbmRsZXI6IFNtYXJ0Vmlld0hhbmRsZXJNb2RlbCB8IHVuZGVmaW5lZCA9IHRoaXMudmlld0hhbmRsZXJzLmZpbmQoXG4gICAgICAgICAgICAoaGFuZGxlcikgPT4gaGFuZGxlci5uYW1lID09PSB2aWV3LnZpZXdOYW1lXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKCF2aWV3SGFuZGxlcikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTbWFydFZpZXdIYW5kbGVyTW9kZWwgd2FzIG5vdCBmb3VuZCBieSB2aWV3IG5hbWU6ICR7dmlldy52aWV3TmFtZX1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2aWV3LnR5cGUgPT09IFZpZXdUeXBlLkRpYWxvZykge1xuICAgICAgICAgICAgaWYgKCF2aWV3SGFuZGxlci5jb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGBDb21wb25lbnQgaXMgdW5kZWZpbmVkIGluIFNtYXJ0Vmlld0hhbmRsZXJNb2RlbCB3aXRoIG5hbWU6ICR7dmlldy52aWV3TmFtZX1gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuQ29tcG9uZW50QXNEaWFsb2coXG4gICAgICAgICAgICAgICAgdmlld0hhbmRsZXIuY29tcG9uZW50LFxuICAgICAgICAgICAgICAgIHZpZXdIYW5kbGVyLm5hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAodmlldy52aWV3TmFtZSA9PT0gdGhpcy5tZXNzYWdlRGlhbG9nbmFtZSkge1xuICAgICAgICAgICAgICAgIGlmICh2aWV3Lm1lc3NhZ2U/Lm9wdGlvbnMgJiYgdmlldy5tZXNzYWdlLm9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGRpYWxvZ1JlZi5kaXNhYmxlQ2xvc2UgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZGlhbG9nUmVmcy5wdXNoKHtcbiAgICAgICAgICAgICAgICB1dWlkOiB2aWV3LnV1aWQsXG4gICAgICAgICAgICAgICAgZGlhbG9nUmVmLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodmlldy50eXBlID09PSBWaWV3VHlwZS5Ob3JtYWwpIHtcbiAgICAgICAgICAgIGlmICh2aWV3SGFuZGxlci5yb3V0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICBgUm91dGUgaXMgdW5kZWZpbmVkIGluIFNtYXJ0Vmlld0hhbmRsZXJNb2RlbCB3aXRoIG5hbWU6ICR7dmlldy52aWV3TmFtZX1gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbi5uYXZpZ2F0ZVRvKHZpZXdIYW5kbGVyLnJvdXRlLnNwbGl0KFwiL1wiKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGUgdHlwZSBvZiB0aGUgdmlldyBhbmQgaXRzIHZpZXdIYW5kbGVyIGlzIG5vdCB0aGUgc2FtZSFcIik7XG4gICAgICAgIH1cblxuICAgICAgICB2aWV3LnN0YXRlID0gVmlld1N0YXRlLk9wZW5lZDtcblxuICAgICAgICB0aGlzLm9wZW5lZFZpZXdVdWlkcy5wdXNoKHZpZXcudXVpZCk7XG5cbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh2aWV3LnZpZXdOYW1lLCB2aWV3LnV1aWQpO1xuICAgICAgICB0aGlzLnV1aWRPZlBhZ2VIYXNCZWVuQ2hhbmdlZC5uZXh0KHZpZXcudmlld05hbWUpO1xuXG4gICAgICAgIHRoaXMudXBkYXRlVmlld0NvbnRleHQoe1xuICAgICAgICAgICAgdXBkYXRlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGU6IFZpZXdTdGF0ZS5PcGVuZWQsXG4gICAgICAgICAgICAgICAgICAgIHV1aWQ6IHZpZXcudXVpZCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHV1aWQ6IHRoaXMudmlld0NvbnRleHQ/LnV1aWQsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZVZpZXcodmlldzogVmlld0RhdGEpOiB2b2lkIHtcbiAgICAgICAgbGV0IHZpZXdIYW5kbGVyOiBTbWFydFZpZXdIYW5kbGVyTW9kZWwgfCB1bmRlZmluZWQgPSB0aGlzLnZpZXdIYW5kbGVycy5maW5kKFxuICAgICAgICAgICAgKGhhbmRsZXIpID0+IGhhbmRsZXIubmFtZSA9PT0gdmlldy52aWV3TmFtZVxuICAgICAgICApO1xuXG4gICAgICAgIGlmICghdmlld0hhbmRsZXIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgU21hcnRWaWV3SGFuZGxlck1vZGVsIHdhcyBub3QgZm91bmQgYnkgdmlldyBuYW1lOiAke3ZpZXcudmlld05hbWV9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmlldy50eXBlID09PSBWaWV3VHlwZS5EaWFsb2cpIHtcbiAgICAgICAgICAgIGxldCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZ1JlZnMuZmluZChcbiAgICAgICAgICAgICAgICAoZGlhbG9nUmVmOiBTbWFydFZpZXdEaWFsb2dSZWYpID0+IGRpYWxvZ1JlZi51dWlkID09PSB2aWV3LnV1aWRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoZGlhbG9nUmVmKSB7XG4gICAgICAgICAgICAgICAgZGlhbG9nUmVmLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IHRoaXMuZGlhbG9nUmVmcy5pbmRleE9mKGRpYWxvZ1JlZik7XG4gICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dSZWZzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkRpYWxvZ1JlZiBpcyBub3QgZm91bmQgYnkgdXVpZC5cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodmlldy50eXBlID09PSBWaWV3VHlwZS5Ob3JtYWwpIHtcbiAgICAgICAgICAgIC8vIFRPRE86IGNsb3NlIG5vcm1hbCBwYWdlPz8/XG4gICAgICAgICAgICAvLyB0aGlzLm5hdmlnYXRpb24ubmF2aWdhdGVUbyh2aWV3SGFuZGxlci5yb3V0ZS5zcGxpdChcIi9cIikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhlIHR5cGUgb2YgdGhlIHZpZXcgYW5kIGl0cyB2aWV3SGFuZGxlciBpcyBub3QgdGhlIHNhbWUhXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmlldy5zdGF0ZSA9IFZpZXdTdGF0ZS5DbG9zZWQ7XG5cbiAgICAgICAgdGhpcy5vcGVuZWRWaWV3VXVpZHMuc2xpY2UodGhpcy5vcGVuZWRWaWV3VXVpZHMuaW5kZXhPZih2aWV3LnV1aWQpLCAxKTtcblxuICAgICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKHZpZXcudmlld05hbWUpO1xuXG4gICAgICAgIHRoaXMudXBkYXRlVmlld0NvbnRleHQoe1xuICAgICAgICAgICAgdXBkYXRlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGU6IFZpZXdTdGF0ZS5DbG9zZWQsXG4gICAgICAgICAgICAgICAgICAgIHV1aWQ6IHZpZXcudXVpZCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHV1aWQ6IHRoaXMudmlld0NvbnRleHQ/LnV1aWQsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZXN0b3JlVmlld3ModXVpZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICghdGhpcy52aWV3Q29udGV4dCkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5nZXRWaWV3Q29udGV4dCh1dWlkKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZpZXdDb250ZXh0IS52aWV3cy5tYXAoKHZpZXc6IFZpZXdEYXRhKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9wZW5WaWV3KHZpZXcpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3luY1ZpZXcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlld0NvbnRleHQ/LnZpZXdzLm1hcCgodmlldzogVmlld0RhdGEpID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAodmlldy5zdGF0ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgVmlld1N0YXRlLlRvT3BlbjpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuVmlldyh2aWV3KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBWaWV3U3RhdGUuVG9DbG9zZTpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZVZpZXcodmlldyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy52aWV3Q29udGV4dEhhc0JlZW5TeW5jZWQubmV4dCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRVdWlkT2ZQYWdlKHBhZ2VOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBsZXQgdXVpZCA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0ocGFnZU5hbWUpO1xuICAgICAgICBpZiAoIXV1aWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHV1aWQgb2YgJHtwYWdlTmFtZX0gaXMgbm90IGF2YWlsYWJsZS5gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdXVpZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgbWVzc2FnZShtZXNzYWdlRGF0YTogTWVzc2FnZURhdGEsIG1lc3NhZ2VSZXN1bHQ6IE1lc3NhZ2VSZXN1bHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy52aWV3XG4gICAgICAgICAgICAubWVzc2FnZShtZXNzYWdlRGF0YS52aWV3VXVpZCA/PyBcIlwiLCBtZXNzYWdlRGF0YS51dWlkLCBtZXNzYWdlUmVzdWx0KVxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xuICAgICAgICBhd2FpdCB0aGlzLmdldEFuZFN5bmNWaWV3Q29udGV4dCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTbWFydFZpZXdDb250ZXh0QXBpRXJyb3JCeUNvZGUoY29kZTogc3RyaW5nKTogU21hcnRWaWV3Q29udGV4dEFwaUVycm9yIHtcbiAgICAgICAgaWYgKCF0aGlzLnNtYXJ0Vmlld0NvbnRleHRBcGlFcnJvcnMpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgY29kZSxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBcIkFuIGVycm9yIGhhcyBvY2N1cmVkLlwiLFxuICAgICAgICAgICAgICAgIGJ1dHRvbkxhYmVsOiBcIk9rXCIsXG4gICAgICAgICAgICAgICAgZGlhbG9nVGl0bGU6IFwiSGliYVwiLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgYXBpRXJyb3JzV2l0aENvZGUgPSB0aGlzLnNtYXJ0Vmlld0NvbnRleHRBcGlFcnJvcnMudmlld0NvbnRleHRBcGlFcnJvcnMuZmlsdGVyKFxuICAgICAgICAgICAgKGFwaUVycm9yOiBTbWFydFZpZXdDb250ZXh0QXBpRXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXBpRXJyb3IuY29kZSA9PT0gY29kZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCFhcGlFcnJvcnNXaXRoQ29kZSB8fCAoYXBpRXJyb3JzV2l0aENvZGUgJiYgIWFwaUVycm9yc1dpdGhDb2RlLmxlbmd0aCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFNtYXJ0Vmlld0NvbnRleHRBcGlFcnJvciB3aXRoIGNvZGUgJHtjb2RlfSBjb3VsZCBub3QgYmUgZm91bmQuYCk7XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgY29kZSxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBcIkFuIGVycm9yIGhhcyBvY2N1cmVkLlwiLFxuICAgICAgICAgICAgICAgIGJ1dHRvbkxhYmVsOiBcIk9rXCIsXG4gICAgICAgICAgICAgICAgZGlhbG9nVGl0bGU6IFwiSGliYVwiLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXBpRXJyb3JzV2l0aENvZGVbMF07XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldFZpZXdDb25zdHJhaW50KHV1aWQ6IHN0cmluZyk6IFByb21pc2U8Vmlld0NvbnN0cmFpbnQ+IHtcbiAgICAgICAgbGV0IHZpZXdDb25zdHJhaW50UmVzcG9uc2UgPSBhd2FpdCB0aGlzLnZpZXcuZ2V0Vmlld0NvbnN0cmFpbnQodXVpZCkudG9Qcm9taXNlKCk7XG4gICAgICAgIGlmICghdmlld0NvbnN0cmFpbnRSZXNwb25zZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvdWxkIG5vdCBnZXQgVmlld0NvbnN0cmFpbnQgd2l0aCB0aGUgZ2l2ZW4gdXVpZC5cIik7XG4gICAgICAgIHJldHVybiB2aWV3Q29uc3RyYWludFJlc3BvbnNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzaG93UHVibGlzaGVkVmlldyhjaGFubmVsOiBzdHJpbmcsIHV1aWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLnNlc3Npb24uaW5pdGlhbGl6ZSgpO1xuICAgICAgICAvLyBUT0RPIGluaXQgdmlldyBjb250ZXh0IGF1dG9tYXRpY2FsbHlcbiAgICAgICAgLy8gYXdhaXQgdGhpcy5pbml0aWFsaXplKCk7XG5cbiAgICAgICAgdGhpcy5pc09wZW5pbmdTbWFydExpbmsgPSB0cnVlO1xuICAgICAgICB0aGlzLm9wZW5TbWFydExpbmsubmV4dCgpO1xuICAgICAgICBhd2FpdCB0aGlzLm9wZW5TbWFydExpbmsudG9Qcm9taXNlKCk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy52aWV3LnNob3dQdWJsaXNoZWRWaWV3KGNoYW5uZWwsIHV1aWQpLnRvUHJvbWlzZSgpO1xuICAgICAgICBhd2FpdCB0aGlzLmdldEFuZFN5bmNWaWV3Q29udGV4dCgpO1xuICAgICAgICB0aGlzLmlzT3BlbmluZ1NtYXJ0TGluayA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBkb3dubG9hZFJlc291cmNlKHV1aWQ6IHN0cmluZywgaXRlbTogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMudmlldy5kb3dubG9hZEl0ZW0odXVpZCwgaXRlbSkudG9Qcm9taXNlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHBlcmZvcm1BY3Rpb24odXVpZDogc3RyaW5nLCB1aUFjdGlvblJlcXVlc3Q6IFVpQWN0aW9uUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBsZXQgdmlld0NvbnRleHRDaGFuZ2UgPSBhd2FpdCB0aGlzLnZpZXcucGVyZm9ybUFjdGlvbih1dWlkLCB1aUFjdGlvblJlcXVlc3QpLnRvUHJvbWlzZSgpO1xuXG4gICAgICAgIHRoaXMudmlld0NvbnRleHQgPSB2aWV3Q29udGV4dENoYW5nZT8udmlld0NvbnRleHQ7XG4gICAgICAgIHRoaXMuc3luY1ZpZXcoKTtcblxuICAgICAgICBpZiAodmlld0NvbnRleHRDaGFuZ2U/LmNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlcyh2aWV3Q29udGV4dENoYW5nZS5jaGFuZ2VzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlQ2hhbmdlcyhjaGFuZ2VzOiBBcnJheTxDb21wb25lbnRNb2RlbENoYW5nZT4pOiB2b2lkIHtcbiAgICAgICAgY2hhbmdlcy5mb3JFYWNoKChjb21wb25lbnRNb2RlbENoYW5nZTogQ29tcG9uZW50TW9kZWxDaGFuZ2UpID0+IHtcbiAgICAgICAgICAgIGxldCBkZXRlY3RDaGFuZ2U6IFNtYXJ0U3ViamVjdDxhbnk+IHwgdW5kZWZpbmVkID0gdGhpcy5zbWFydEFwaUNsaWVudHMuZ2V0KFxuICAgICAgICAgICAgICAgIGNvbXBvbmVudE1vZGVsQ2hhbmdlLnV1aWRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoZGV0ZWN0Q2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgZGV0ZWN0Q2hhbmdlLm5leHQoY29tcG9uZW50TW9kZWxDaGFuZ2UudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgbG9hZCh1dWlkOiBzdHJpbmcpOiBQcm9taXNlPENvbXBvbmVudE1vZGVsIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnZpZXcuZ2V0Q29tcG9uZW50TW9kZWwodXVpZCkudG9Qcm9taXNlKCk7XG4gICAgfVxufVxuIl19
|
|
340
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtdmlldy1jb250ZXh0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdmlldy1jb250ZXh0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRy9CLE9BQU8sRUFhTixTQUFTLEVBQ1QsUUFBUSxHQUNSLE1BQU0sT0FBTyxDQUFDO0FBQ2YsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7OztBQVluRixNQUFNLE9BQU8sdUJBQXVCO0lBeUNuQyxZQUNTLElBQWlCLEVBQ2pCLE9BQTRCLEVBQzVCLFVBQWtDLEVBQ2xDLE1BQTBCO1FBSDFCLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsWUFBTyxHQUFQLE9BQU8sQ0FBcUI7UUFDNUIsZUFBVSxHQUFWLFVBQVUsQ0FBd0I7UUFDbEMsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUE1QzNCLGNBQVMsR0FBVyxpQkFBaUIsQ0FBQztRQUN0Qyx3QkFBbUIsR0FBVyxpQkFBaUIsQ0FBQztRQUloRCxpQkFBWSxHQUFpQyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3pELG9CQUFlLEdBQWtCLElBQUksS0FBSyxFQUFFLENBQUM7UUFFOUMsNkJBQXdCLEdBQW9CLElBQUksT0FBTyxFQUFFLENBQUM7UUFDMUQsNkJBQXdCLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFJeEQsa0JBQWEsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM3Qyx1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFFbkMsZUFBVSxHQUF5QixFQUFFLENBQUM7UUFNdkMsb0JBQWUsR0FBbUMsSUFBSSxHQUFHLEVBQUUs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QUMsSUFBWTtRQUM3QixPQUFPLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUM1RCxDQUFDOztxSEFyWlcsdUJBQXVCO3lIQUF2Qix1QkFBdUIsY0FGdkIsTUFBTTs0RkFFTix1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU21hcnRkaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQHNtYXJ0Yml0NGFsbC9kaWFsb2cnO1xuaW1wb3J0IHsgU21hcnROYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJ0BzbWFydGJpdDRhbGwvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTbWFydFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2Vzc2lvbi9zbWFydC1zZXNzaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgU21hcnRTdWJqZWN0IH0gZnJvbSAnLi4vc21hcnQtY2xpZW50L3NtYXJ0LnN1YmplY3QnO1xuaW1wb3J0IHtcblx0Q29tcG9uZW50TW9kZWwsXG5cdENvbXBvbmVudE1vZGVsQ2hhbmdlLFxuXHRNZXNzYWdlRGF0YSxcblx0TWVzc2FnZVJlc3VsdCxcblx0VWlBY3Rpb25EZXNjcmlwdG9yLFxuXHRVaUFjdGlvblJlcXVlc3QsXG5cdFZpZXdDb25zdHJhaW50LFxuXHRWaWV3Q29udGV4dENoYW5nZSxcblx0Vmlld0NvbnRleHREYXRhLFxuXHRWaWV3Q29udGV4dFVwZGF0ZSxcblx0Vmlld0RhdGEsXG5cdFZpZXdTZXJ2aWNlLFxuXHRWaWV3U3RhdGUsXG5cdFZpZXdUeXBlLFxufSBmcm9tICcuL2FwaSc7XG5pbXBvcnQgeyBNZXNzYWdlRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9tZXNzYWdlLWRpYWxvZy9tZXNzYWdlLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHtcblx0U21hcnRUcmFuc2xhdGVTZXJ2aWNlLFxuXHRTbWFydFZpZXdDb250ZXh0QXBpRXJyb3IsXG5cdFNtYXJ0Vmlld0NvbnRleHRBcGlFcnJvcnMsXG5cdFNtYXJ0Vmlld0RpYWxvZ1JlZixcblx0U21hcnRWaWV3SGFuZGxlck1vZGVsLFxufSBmcm9tICcuL3NtYXJ0LXZpZXctY29udGV4dC5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKHtcblx0cHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTbWFydFZpZXdDb250ZXh0U2VydmljZSB7XG5cdHByaXZhdGUgdGFiSWROYW1lOiBzdHJpbmcgPSAndmlld0NvbnRleHRVdWlkJztcblx0cHJpdmF0ZSB0YWJJZGh0dHBIZWFkZXJOYW1lOiBzdHJpbmcgPSAndmlld0NvbnRleHRVdWlkJztcblx0cHVibGljIG1lc3NhZ2VEaWFsb2duYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdHByaXZhdGUgdXJsPzogc3RyaW5nO1xuXHRwcml2YXRlIHZpZXdDb250ZXh0PzogVmlld0NvbnRleHREYXRhO1xuXHRwcml2YXRlIHZpZXdIYW5kbGVyczogQXJyYXk8U21hcnRWaWV3SGFuZGxlck1vZGVsPiA9IG5ldyBBcnJheSgpO1xuXHRwcml2YXRlIG9wZW5lZFZpZXdVdWlkczogQXJyYXk8c3RyaW5nPiA9IG5ldyBBcnJheSgpO1xuXG5cdHB1YmxpYyB1dWlkT2ZQYWdlSGFzQmVlbkNoYW5nZWQ6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0KCk7XG5cdHB1YmxpYyB2aWV3Q29udGV4dEhhc0JlZW5TeW5jZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG5cdHB1YmxpYyBzbWFydFZpZXdDb250ZXh0QXBpRXJyb3JzPzogU21hcnRWaWV3Q29udGV4dEFwaUVycm9ycztcblxuXHRwdWJsaWMgb3BlblNtYXJ0TGluazogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cdHB1YmxpYyBpc09wZW5pbmdTbWFydExpbms6IGJvb2xlYW4gPSBmYWxzZTtcblxuXHRwcml2YXRlIGRpYWxvZ1JlZnM6IFNtYXJ0Vmlld0RpYWxvZ1JlZltdID0gW107XG5cblx0cHJpdmF0ZSBhY3Rpb25EZXNjcmlwdG9ycz86IE1hcDxzdHJpbmcsIFVpQWN0aW9uRGVzY3JpcHRvcj47XG5cblx0cHVibGljIGNvbW1vbkZlZWRiYWNrVGV4dD86IHN0cmluZztcblxuXHRwdWJsaWMgc21hcnRBcGlDbGllbnRzOiBNYXA8c3RyaW5nLCBTbWFydFN1YmplY3Q8YW55Pj4gPSBuZXcgTWFwKCk7XG5cblx0cHVibGljIHNldCB0cmFuc2xhdGVTZXJ2aWNlKHRyYW5zbGF0ZVNlcnZpY2U6IFNtYXJ0VHJhbnNsYXRlU2VydmljZSB8IHVuZGVmaW5lZCkge1xuXHRcdHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UgPSB0cmFuc2xhdGVTZXJ2aWNlO1xuXHRcdHRoaXMudHJhbnNsYXRlU2VydmljZUNoYW5nZWQubmV4dCgpO1xuXHRcdHRoaXMudHJhbnNsYXRlU2VydmljZUNoYW5nZWQuY29tcGxldGUoKTtcblx0fVxuXG5cdHB1YmxpYyBnZXQgdHJhbnNsYXRlU2VydmljZSgpOiBTbWFydFRyYW5zbGF0ZVNlcnZpY2UgfCB1bmRlZmluZWQge1xuXHRcdGlmICh0aGlzLl90cmFuc2xhdGVTZXJ2aWNlKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5fdHJhbnNsYXRlU2VydmljZTtcblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdHByaXZhdGUgX3RyYW5zbGF0ZVNlcnZpY2U/OiBTbWFydFRyYW5zbGF0ZVNlcnZpY2U7XG5cdHB1YmxpYyB0cmFuc2xhdGVTZXJ2aWNlQ2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0cHJpdmF0ZSB2aWV3OiBWaWV3U2VydmljZSxcblx0XHRwcml2YXRlIHNlc3Npb246IFNtYXJ0U2Vzc2lvblNlcnZpY2UsXG5cdFx0cHJpdmF0ZSBuYXZpZ2F0aW9uOiBTbWFydE5hdmlnYXRpb25TZXJ2aWNlLFxuXHRcdHByaXZhdGUgZGlhbG9nOiBTbWFydGRpYWxvZ1NlcnZpY2Vcblx0KSB7fVxuXG5cdHB1YmxpYyBmb2xsb3codXVpZDogc3RyaW5nLCBkZXRlY3RDaGFuZ2U6IFNtYXJ0U3ViamVjdDxhbnk+KTogdm9pZCB7XG5cdFx0dGhpcy5zbWFydEFwaUNsaWVudHMuc2V0KHV1aWQsIGRldGVjdENoYW5nZSk7XG5cdH1cblx0cHVibGljIHVuZm9sbG93KHV1aWQ6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMuc21hcnRBcGlDbGllbnRzLmRlbGV0ZSh1dWlkKTtcblx0fVxuXG5cdHB1YmxpYyBzZXRBY3Rpb25EZXNjcmlwdG9ycyhhY3Rpb25EZXNjcmlwdG9yczogTWFwPHN0cmluZywgVWlBY3Rpb25EZXNjcmlwdG9yPik6IHZvaWQge1xuXHRcdHRoaXMuYWN0aW9uRGVzY3JpcHRvcnMgPSBhY3Rpb25EZXNjcmlwdG9ycztcblx0fVxuXG5cdHB1YmxpYyBnZXRBY3Rpb25EZXNjcmlwdG9ycygpOiBNYXA8c3RyaW5nLCBVaUFjdGlvbkRlc2NyaXB0b3I+IHwgdW5kZWZpbmVkIHtcblx0XHRpZiAoIXRoaXMuYWN0aW9uRGVzY3JpcHRvcnMpIHtcblx0XHRcdGNvbnNvbGUuZXJyb3IoJ05vIGFjdGlvbiBkZXNjcmlwdG9ycyBoYXMgYmVlbiBzZXQgdG8gVmlld0NvbnRleHQuJyk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmFjdGlvbkRlc2NyaXB0b3JzO1xuXHR9XG5cblx0cHVibGljIHNldFZpZXdIYW5kbGVycyh2aWV3SGFuZGxlcnM6IEFycmF5PFNtYXJ0Vmlld0hhbmRsZXJNb2RlbD4pOiB2b2lkIHtcblx0XHR0aGlzLnZpZXdIYW5kbGVycyA9IHZpZXdIYW5kbGVycztcblx0fVxuXG5cdHB1YmxpYyBzZXRWaWV3QXBpRXJyb3JzKHZpZXdBcGlFcnJvcnM6IFNtYXJ0Vmlld0NvbnRleHRBcGlFcnJvcnMpOiB2b2lkIHtcblx0XHR0aGlzLnNtYXJ0Vmlld0NvbnRleHRBcGlFcnJvcnMgPSB2aWV3QXBpRXJyb3JzO1xuXHR9XG5cblx0cHVibGljIHNldE1lc3NhZ2VEaWFsb2dOYW1lKG1lc3NhZ2VEaWFsb2dOYW1lOiBzdHJpbmcpOiB2b2lkIHtcblx0XHR0aGlzLm1lc3NhZ2VEaWFsb2duYW1lID0gbWVzc2FnZURpYWxvZ05hbWU7XG5cdFx0dGhpcy52aWV3SGFuZGxlcnMucHVzaCh7XG5cdFx0XHRuYW1lOiBtZXNzYWdlRGlhbG9nTmFtZSxcblx0XHRcdGNvbXBvbmVudDogTWVzc2FnZURpYWxvZ0NvbXBvbmVudCxcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgc2V0VXBVcmxGb3JWaWV3U2VydmljZSgpOiB2b2lkIHtcblx0XHR0aGlzLnZpZXcuY29uZmlndXJhdGlvbi5iYXNlUGF0aCA9IHRoaXMudXJsO1xuXHR9XG5cblx0cHVibGljIHNldFVybCh1cmw6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMudXJsID0gdXJsICsgJy92aWV3Jztcblx0XHR0aGlzLnNldFVwVXJsRm9yVmlld1NlcnZpY2UoKTtcblx0fVxuXG5cdHB1YmxpYyBhc3luYyBnZXRBbmRTeW5jVmlld0NvbnRleHQodXVpZD86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGlmICghdXVpZCkge1xuXHRcdFx0dXVpZCA9IHRoaXMuZ2V0VXVpZE9mUGFnZSh0aGlzLnRhYklkTmFtZSk7XG5cdFx0fVxuXHRcdGF3YWl0IHRoaXMuZ2V0Vmlld0NvbnRleHQodXVpZCkudGhlbigoKSA9PiB7XG5cdFx0XHR0aGlzLnN5bmNWaWV3KCk7XG5cdFx0fSk7XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgZ2V0Vmlld0NvbnRleHQodXVpZDogc3RyaW5nKTogUHJvbWlzZTxWaWV3Q29udGV4dERhdGE+IHtcblx0XHR0aGlzLnZpZXdDb250ZXh0ID0gYXdhaXQgdGhpcy52aWV3LmdldFZpZXdDb250ZXh0KHV1aWQpLnRvUHJvbWlzZSgpO1xuXHRcdGlmICghdGhpcy52aWV3Q29udGV4dCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdWaWV3Q29udGV4dCBkb2VzIG5vdCBleGlzdCB3aXRoIHRoZSBnaXZlbiB1dWlkLicpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy52aWV3Q29udGV4dDtcblx0fVxuXG5cdHB1YmxpYyBhc3luYyBnZXRWaWV3Q29udGV4dERhdGFCeVBhZ2VOYW1lKHBhZ2VOYW1lOiBzdHJpbmcpOiBQcm9taXNlPFZpZXdEYXRhPiB7XG5cdFx0aWYgKCF0aGlzLnZpZXdDb250ZXh0KSB7XG5cdFx0XHRsZXQgdmlld0NvbnRleHRVdWlkID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnRhYklkTmFtZSk7XG5cdFx0XHRpZiAoIXZpZXdDb250ZXh0VXVpZCkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ1ZpZXcgY29udGV4dCBpcyBub3QgaW5pdGlhbGl6ZWQhJyk7XG5cdFx0XHR9XG5cdFx0XHRhd2FpdCB0aGlzLmdldFZpZXdDb250ZXh0KHZpZXdDb250ZXh0VXVpZCEpO1xuXHRcdH1cblx0XHRsZXQgcGFnZVV1aWQgPSB0aGlzLmdldFV1aWRPZlBhZ2UocGFnZU5hbWUpO1xuXG5cdFx0bGV0IHZpZXdDb250ZXh0QnlQYWdlTmFtZSA9IHRoaXMudmlld0NvbnRleHQ/LnZpZXdzLmZpbmQoKHZpZXcpID0+IHZpZXcudXVpZCA9PT0gcGFnZVV1aWQpO1xuXHRcdGlmICghdmlld0NvbnRleHRCeVBhZ2VOYW1lKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYFRoZSBWaWV3RGF0YSBvZiAke3BhZ2VOYW1lfSBpcyBub3QgZm91bmQhYCk7XG5cdFx0fVxuXHRcdHJldHVybiB2aWV3Q29udGV4dEJ5UGFnZU5hbWU7XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgdXBkYXRlVmlld0NvbnRleHQodmlld0NvbnRleHRVcGRhdGU6IFZpZXdDb250ZXh0VXBkYXRlKTogUHJvbWlzZTxWaWV3Q29udGV4dERhdGEgfCB1bmRlZmluZWQ+IHtcblx0XHR0aGlzLnZpZXdDb250ZXh0ID0gYXdhaXQgdGhpcy52aWV3LnVwZGF0ZVZpZXdDb250ZXh0KHZpZXdDb250ZXh0VXBkYXRlKS50b1Byb21pc2UoKTtcblxuXHRcdHJldHVybiB0aGlzLnZpZXdDb250ZXh0O1xuXHR9XG5cblx0cHJpdmF0ZSBjbGVhclNlc3Npb25TdG9yYWdlKCk6IHZvaWQge1xuXHRcdHNlc3Npb25TdG9yYWdlLmNsZWFyKCk7XG5cdH1cblxuXHRwcml2YXRlIHNldFRhYklkKHRhYklkOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMudGFiSWROYW1lLCB0YWJJZCk7XG5cdFx0dGhpcy5zZXNzaW9uLmFkZEhlYWRlclBhcmFtKHsgaGVhZGVyTmFtZTogdGhpcy50YWJJZGh0dHBIZWFkZXJOYW1lLCB2YWx1ZTogdGFiSWQgfSk7XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgc3RhcnRWaWV3Q29udGV4dCgpOiBQcm9taXNlPFZpZXdDb250ZXh0RGF0YT4ge1xuXHRcdHRoaXMuY2xlYXJTZXNzaW9uU3RvcmFnZSgpO1xuXG5cdFx0bGV0IG5ld1ZpZXdDb250ZXh0OiBWaWV3Q29udGV4dERhdGEgfCB1bmRlZmluZWQgPSBhd2FpdCB0aGlzLnZpZXcuY3JlYXRlVmlld0NvbnRleHQoKS50b1Byb21pc2UoKTtcblx0XHRpZiAoIW5ld1ZpZXdDb250ZXh0KSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ05vIFZpZXdDb250ZXh0IHdhcyBjcmVhdGVkJyk7XG5cdFx0fVxuXHRcdHRoaXMudmlld0NvbnRleHQgPSBuZXdWaWV3Q29udGV4dDtcblxuXHRcdHRoaXMuc2V0VGFiSWQobmV3Vmlld0NvbnRleHQudXVpZCEpO1xuXG5cdFx0cmV0dXJuIHRoaXMudmlld0NvbnRleHQ7XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgaW5pdGlhbGl6ZSh1dWlkPzogc3RyaW5nKTogUHJvbWlzZTxWaWV3Q29udGV4dERhdGE+IHtcblx0XHRpZiAodGhpcy52aWV3SGFuZGxlcnMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXG5cdFx0XHRcdFwiVGhlcmUgYXJlbid0IGFueSB2aWV3SGFuZGxlcnMgaW4gU21hcnRWaWV3Q29udGV4dFNlcnZpY2UhIFByb3ZpZGUgc29tZSB0byB1c2UgaXRzIGZ1bmN0aW9ucy5cIlxuXHRcdFx0KTtcblx0XHR9XG5cdFx0aWYgKCF0aGlzLm1lc3NhZ2VEaWFsb2duYW1lKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ1RoZSBtZXNzYWdlRGlhbG9nTmFtZSBwcm92aWRlZCBieSB0aGUgYmFja2VuZCBoYXMgbm90IGJlZW4gc2V0LicpO1xuXHRcdH1cblx0XHRpZiAodXVpZCkge1xuXHRcdFx0bGV0IHN1YnNjcmlwdGlvbiA9IHRoaXMuc2Vzc2lvbi5oZWFkZXJzVXBkYXRlZC5zdWJzY3JpYmUoYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLmdldFZpZXdDb250ZXh0KHV1aWQpO1xuXHRcdFx0XHRcdHRoaXMuc2V0VGFiSWQodXVpZCEpO1xuXHRcdFx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnN0YXJ0Vmlld0NvbnRleHQoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHR0aGlzLnNldFRhYklkKHV1aWQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRhd2FpdCB0aGlzLnN0YXJ0Vmlld0NvbnRleHQoKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy52aWV3Q29udGV4dCE7XG5cdH1cblxuXHRwdWJsaWMgb3BlblZpZXcodmlldzogVmlld0RhdGEpOiB2b2lkIHtcblx0XHRsZXQgdmlld0hhbmRsZXI6IFNtYXJ0Vmlld0hhbmRsZXJNb2RlbCB8IHVuZGVmaW5lZCA9IHRoaXMudmlld0hhbmRsZXJzLmZpbmQoXG5cdFx0XHQoaGFuZGxlcikgPT4gaGFuZGxlci5uYW1lID09PSB2aWV3LnZpZXdOYW1lXG5cdFx0KTtcblxuXHRcdGlmICghdmlld0hhbmRsZXIpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgU21hcnRWaWV3SGFuZGxlck1vZGVsIHdhcyBub3QgZm91bmQgYnkgdmlldyBuYW1lOiAke3ZpZXcudmlld05hbWV9YCk7XG5cdFx0fVxuXG5cdFx0aWYgKHZpZXcudHlwZSA9PT0gVmlld1R5cGUuRGlhbG9nKSB7XG5cdFx0XHRpZiAoIXZpZXdIYW5kbGVyLmNvbXBvbmVudCkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYENvbXBvbmVudCBpcyB1bmRlZmluZWQgaW4gU21hcnRWaWV3SGFuZGxlck1vZGVsIHdpdGggbmFtZTogJHt2aWV3LnZpZXdOYW1lfWApO1xuXHRcdFx0fVxuXHRcdFx0bGV0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW5Db21wb25lbnRBc0RpYWxvZyh2aWV3SGFuZGxlci5jb21wb25lbnQsIHZpZXdIYW5kbGVyLm5hbWUpO1xuXHRcdFx0aWYgKHZpZXcudmlld05hbWUgPT09IHRoaXMubWVzc2FnZURpYWxvZ25hbWUpIHtcblx0XHRcdFx0aWYgKHZpZXcubWVzc2FnZT8ub3B0aW9ucyAmJiB2aWV3Lm1lc3NhZ2Uub3B0aW9ucy5sZW5ndGgpIHtcblx0XHRcdFx0XHRkaWFsb2dSZWYuZGlzYWJsZUNsb3NlID0gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0dGhpcy5kaWFsb2dSZWZzLnB1c2goe1xuXHRcdFx0XHR1dWlkOiB2aWV3LnV1aWQsXG5cdFx0XHRcdGRpYWxvZ1JlZixcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSBpZiAodmlldy50eXBlID09PSBWaWV3VHlwZS5Ob3JtYWwpIHtcblx0XHRcdGlmICh2aWV3SGFuZGxlci5yb3V0ZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihgUm91dGUgaXMgdW5kZWZpbmVkIGluIFNtYXJ0Vmlld0hhbmRsZXJNb2RlbCB3aXRoIG5hbWU6ICR7dmlldy52aWV3TmFtZX1gKTtcblx0XHRcdH1cblx0XHRcdHRoaXMubmF2aWdhdGlvbi5uYXZpZ2F0ZVRvKHZpZXdIYW5kbGVyLnJvdXRlLnNwbGl0KCcvJykpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ1RoZSB0eXBlIG9mIHRoZSB2aWV3IGFuZCBpdHMgdmlld0hhbmRsZXIgaXMgbm90IHRoZSBzYW1lIScpO1xuXHRcdH1cblxuXHRcdHZpZXcuc3RhdGUgPSBWaWV3U3RhdGUuT3BlbmVkO1xuXG5cdFx0dGhpcy5vcGVuZWRWaWV3VXVpZHMucHVzaCh2aWV3LnV1aWQpO1xuXG5cdFx0c2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh2aWV3LnZpZXdOYW1lLCB2aWV3LnV1aWQpO1xuXHRcdHRoaXMudXVpZE9mUGFnZUhhc0JlZW5DaGFuZ2VkLm5leHQodmlldy52aWV3TmFtZSk7XG5cblx0XHR0aGlzLnVwZGF0ZVZpZXdDb250ZXh0KHtcblx0XHRcdHVwZGF0ZXM6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHN0YXRlOiBWaWV3U3RhdGUuT3BlbmVkLFxuXHRcdFx0XHRcdHV1aWQ6IHZpZXcudXVpZCxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0XHR1dWlkOiB0aGlzLnZpZXdDb250ZXh0Py51dWlkLFxuXHRcdH0pO1xuXHR9XG5cblx0cHVibGljIGNsb3NlVmlldyh2aWV3OiBWaWV3RGF0YSk6IHZvaWQge1xuXHRcdGxldCB2aWV3SGFuZGxlcjogU21hcnRWaWV3SGFuZGxlck1vZGVsIHwgdW5kZWZpbmVkID0gdGhpcy52aWV3SGFuZGxlcnMuZmluZChcblx0XHRcdChoYW5kbGVyKSA9PiBoYW5kbGVyLm5hbWUgPT09IHZpZXcudmlld05hbWVcblx0XHQpO1xuXG5cdFx0aWYgKCF2aWV3SGFuZGxlcikge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBTbWFydFZpZXdIYW5kbGVyTW9kZWwgd2FzIG5vdCBmb3VuZCBieSB2aWV3IG5hbWU6ICR7dmlldy52aWV3TmFtZX1gKTtcblx0XHR9XG5cblx0XHRpZiAodmlldy50eXBlID09PSBWaWV3VHlwZS5EaWFsb2cpIHtcblx0XHRcdGxldCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZ1JlZnMuZmluZCgoZGlhbG9nUmVmOiBTbWFydFZpZXdEaWFsb2dSZWYpID0+IGRpYWxvZ1JlZi51dWlkID09PSB2aWV3LnV1aWQpO1xuXHRcdFx0aWYgKGRpYWxvZ1JlZikge1xuXHRcdFx0XHRkaWFsb2dSZWYuZGlhbG9nUmVmLmNsb3NlKCk7XG5cdFx0XHRcdGxldCBpbmRleCA9IHRoaXMuZGlhbG9nUmVmcy5pbmRleE9mKGRpYWxvZ1JlZik7XG5cdFx0XHRcdHRoaXMuZGlhbG9nUmVmcy5zcGxpY2UoaW5kZXgsIDEpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdEaWFsb2dSZWYgaXMgbm90IGZvdW5kIGJ5IHV1aWQuJyk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmICh2aWV3LnR5cGUgPT09IFZpZXdUeXBlLk5vcm1hbCkge1xuXHRcdFx0Ly8gVE9ETzogY2xvc2Ugbm9ybWFsIHBhZ2U/Pz9cblx0XHRcdC8vIHRoaXMubmF2aWdhdGlvbi5uYXZpZ2F0ZVRvKHZpZXdIYW5kbGVyLnJvdXRlLnNwbGl0KFwiL1wiKSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignVGhlIHR5cGUgb2YgdGhlIHZpZXcgYW5kIGl0cyB2aWV3SGFuZGxlciBpcyBub3QgdGhlIHNhbWUhJyk7XG5cdFx0fVxuXG5cdFx0dmlldy5zdGF0ZSA9IFZpZXdTdGF0ZS5DbG9zZWQ7XG5cblx0XHR0aGlzLm9wZW5lZFZpZXdVdWlkcy5zbGljZSh0aGlzLm9wZW5lZFZpZXdVdWlkcy5pbmRleE9mKHZpZXcudXVpZCksIDEpO1xuXG5cdFx0c2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSh2aWV3LnZpZXdOYW1lKTtcblxuXHRcdHRoaXMudXBkYXRlVmlld0NvbnRleHQoe1xuXHRcdFx0dXBkYXRlczogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0c3RhdGU6IFZpZXdTdGF0ZS5DbG9zZWQsXG5cdFx0XHRcdFx0dXVpZDogdmlldy51dWlkLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHRcdHV1aWQ6IHRoaXMudmlld0NvbnRleHQ/LnV1aWQsXG5cdFx0fSk7XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgcmVzdG9yZVZpZXdzKHV1aWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGlmICghdGhpcy52aWV3Q29udGV4dCkge1xuXHRcdFx0YXdhaXQgdGhpcy5nZXRWaWV3Q29udGV4dCh1dWlkKTtcblx0XHR9XG5cdFx0dGhpcy52aWV3Q29udGV4dCEudmlld3MubWFwKCh2aWV3OiBWaWV3RGF0YSkgPT4ge1xuXHRcdFx0dGhpcy5vcGVuVmlldyh2aWV3KTtcblx0XHR9KTtcblx0fVxuXG5cdHB1YmxpYyBzeW5jVmlldygpOiB2b2lkIHtcblx0XHR0aGlzLnZpZXdDb250ZXh0Py52aWV3cy5tYXAoKHZpZXc6IFZpZXdEYXRhKSA9PiB7XG5cdFx0XHRzd2l0Y2ggKHZpZXcuc3RhdGUpIHtcblx0XHRcdFx0Y2FzZSBWaWV3U3RhdGUuVG9PcGVuOlxuXHRcdFx0XHRcdHRoaXMub3BlblZpZXcodmlldyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgVmlld1N0YXRlLlRvQ2xvc2U6XG5cdFx0XHRcdFx0dGhpcy5jbG9zZVZpZXcodmlldyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0dGhpcy52aWV3Q29udGV4dEhhc0JlZW5TeW5jZWQubmV4dCgpO1xuXHR9XG5cblx0cHVibGljIGdldFV1aWRPZlBhZ2UocGFnZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0bGV0IHV1aWQgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHBhZ2VOYW1lKTtcblx0XHRpZiAoIXV1aWQpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgVGhlIHV1aWQgb2YgJHtwYWdlTmFtZX0gaXMgbm90IGF2YWlsYWJsZS5gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHV1aWQ7XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgbWVzc2FnZShtZXNzYWdlRGF0YTogTWVzc2FnZURhdGEsIG1lc3NhZ2VSZXN1bHQ6IE1lc3NhZ2VSZXN1bHQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRhd2FpdCB0aGlzLnZpZXcubWVzc2FnZShtZXNzYWdlRGF0YS52aWV3VXVpZCA/PyAnJywgbWVzc2FnZURhdGEudXVpZCwgbWVzc2FnZVJlc3VsdCkudG9Qcm9taXNlKCk7XG5cdFx0YXdhaXQgdGhpcy5nZXRBbmRTeW5jVmlld0NvbnRleHQoKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRTbWFydFZpZXdDb250ZXh0QXBpRXJyb3JCeUNvZGUoY29kZTogc3RyaW5nKTogU21hcnRWaWV3Q29udGV4dEFwaUVycm9yIHtcblx0XHRpZiAoIXRoaXMuc21hcnRWaWV3Q29udGV4dEFwaUVycm9ycykge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0Y29kZSxcblx0XHRcdFx0bWVzc2FnZTogJ0FuIGVycm9yIGhhcyBvY2N1cmVkLicsXG5cdFx0XHRcdGJ1dHRvbkxhYmVsOiAnT2snLFxuXHRcdFx0XHRkaWFsb2dUaXRsZTogJ0hpYmEnLFxuXHRcdFx0fTtcblx0XHR9XG5cdFx0bGV0IGFwaUVycm9yc1dpdGhDb2RlID0gdGhpcy5zbWFydFZpZXdDb250ZXh0QXBpRXJyb3JzLnZpZXdDb250ZXh0QXBpRXJyb3JzLmZpbHRlcihcblx0XHRcdChhcGlFcnJvcjogU21hcnRWaWV3Q29udGV4dEFwaUVycm9yKSA9PiB7XG5cdFx0XHRcdHJldHVybiBhcGlFcnJvci5jb2RlID09PSBjb2RlO1xuXHRcdFx0fVxuXHRcdCk7XG5cdFx0aWYgKCFhcGlFcnJvcnNXaXRoQ29kZSB8fCAoYXBpRXJyb3JzV2l0aENvZGUgJiYgIWFwaUVycm9yc1dpdGhDb2RlLmxlbmd0aCkpIHtcblx0XHRcdGNvbnNvbGUuZXJyb3IoYFNtYXJ0Vmlld0NvbnRleHRBcGlFcnJvciB3aXRoIGNvZGUgJHtjb2RlfSBjb3VsZCBub3QgYmUgZm91bmQuYCk7XG5cblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdGNvZGUsXG5cdFx0XHRcdG1lc3NhZ2U6ICdBbiBlcnJvciBoYXMgb2NjdXJlZC4nLFxuXHRcdFx0XHRidXR0b25MYWJlbDogJ09rJyxcblx0XHRcdFx0ZGlhbG9nVGl0bGU6ICdIaWJhJyxcblx0XHRcdH07XG5cdFx0fVxuXHRcdHJldHVybiBhcGlFcnJvcnNXaXRoQ29kZVswXTtcblx0fVxuXG5cdHB1YmxpYyBhc3luYyBnZXRWaWV3Q29uc3RyYWludCh1dWlkOiBzdHJpbmcpOiBQcm9taXNlPFZpZXdDb25zdHJhaW50PiB7XG5cdFx0bGV0IHZpZXdDb25zdHJhaW50UmVzcG9uc2UgPSBhd2FpdCB0aGlzLnZpZXcuZ2V0Vmlld0NvbnN0cmFpbnQodXVpZCkudG9Qcm9taXNlKCk7XG5cdFx0aWYgKCF2aWV3Q29uc3RyYWludFJlc3BvbnNlKSB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBnZXQgVmlld0NvbnN0cmFpbnQgd2l0aCB0aGUgZ2l2ZW4gdXVpZC4nKTtcblx0XHRyZXR1cm4gdmlld0NvbnN0cmFpbnRSZXNwb25zZTtcblx0fVxuXG5cdHB1YmxpYyBhc3luYyBzaG93UHVibGlzaGVkVmlldyhjaGFubmVsOiBzdHJpbmcsIHV1aWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGF3YWl0IHRoaXMuc2Vzc2lvbi5pbml0aWFsaXplKCk7XG5cdFx0Ly8gVE9ETyBpbml0IHZpZXcgY29udGV4dCBhdXRvbWF0aWNhbGx5XG5cdFx0Ly8gYXdhaXQgdGhpcy5pbml0aWFsaXplKCk7XG5cblx0XHR0aGlzLmlzT3BlbmluZ1NtYXJ0TGluayA9IHRydWU7XG5cdFx0dGhpcy5vcGVuU21hcnRMaW5rLm5leHQoKTtcblx0XHRhd2FpdCB0aGlzLm9wZW5TbWFydExpbmsudG9Qcm9taXNlKCk7XG5cblx0XHRhd2FpdCB0aGlzLnZpZXcuc2hvd1B1Ymxpc2hlZFZpZXcoY2hhbm5lbCwgdXVpZCkudG9Qcm9taXNlKCk7XG5cdFx0YXdhaXQgdGhpcy5nZXRBbmRTeW5jVmlld0NvbnRleHQoKTtcblx0XHR0aGlzLmlzT3BlbmluZ1NtYXJ0TGluayA9IGZhbHNlO1xuXHR9XG5cblx0cHVibGljIGFzeW5jIGRvd25sb2FkUmVzb3VyY2UodXVpZDogc3RyaW5nLCBpdGVtOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuXHRcdHJldHVybiBhd2FpdCB0aGlzLnZpZXcuZG93bmxvYWRJdGVtKHV1aWQsIGl0ZW0pLnRvUHJvbWlzZSgpO1xuXHR9XG5cblx0cHVibGljIGFzeW5jIHBlcmZvcm1BY3Rpb24odXVpZDogc3RyaW5nLCB1aUFjdGlvblJlcXVlc3Q6IFVpQWN0aW9uUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHJldHVybiBhd2FpdCB0aGlzLmhhbmRsZVBlcmZvcm1BY3Rpb25SZXNwb25zZShhd2FpdCB0aGlzLnZpZXcucGVyZm9ybUFjdGlvbih1dWlkLCB1aUFjdGlvblJlcXVlc3QpLnRvUHJvbWlzZSgpKTtcblx0fVxuXG5cdHB1YmxpYyBhc3luYyBwZXJmb3JtV2lkZ2V0QWN0aW9uKFxuXHRcdHV1aWQ6IHN0cmluZyxcblx0XHR3aWRnZXRJZDogc3RyaW5nLFxuXHRcdG5vZGVJZDogc3RyaW5nLFxuXHRcdHVpQWN0aW9uUmVxdWVzdDogVWlBY3Rpb25SZXF1ZXN0XG5cdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHJldHVybiBhd2FpdCB0aGlzLmhhbmRsZVBlcmZvcm1BY3Rpb25SZXNwb25zZShcblx0XHRcdGF3YWl0IHRoaXMudmlldy5wZXJmb3JtV2lkZ2V0QWN0aW9uKHV1aWQsIHdpZGdldElkLCBub2RlSWQsIHVpQWN0aW9uUmVxdWVzdCkudG9Qcm9taXNlKClcblx0XHQpO1xuXHR9XG5cblx0cHVibGljIGFzeW5jIHBlcmZvcm1XaWRnZXRNYWluQWN0aW9uKFxuXHRcdHV1aWQ6IHN0cmluZyxcblx0XHR3aWRnZXRJZDogc3RyaW5nLFxuXHRcdHVpQWN0aW9uUmVxdWVzdDogVWlBY3Rpb25SZXF1ZXN0XG5cdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHJldHVybiBhd2FpdCB0aGlzLmhhbmRsZVBlcmZvcm1BY3Rpb25SZXNwb25zZShcblx0XHRcdGF3YWl0IHRoaXMudmlldy5wZXJmb3JtV2lkZ2V0TWFpbkFjdGlvbih1dWlkLCB3aWRnZXRJZCwgdWlBY3Rpb25SZXF1ZXN0KS50b1Byb21pc2UoKVxuXHRcdCk7XG5cdH1cblxuXHRwcml2YXRlIGFzeW5jIGhhbmRsZVBlcmZvcm1BY3Rpb25SZXNwb25zZSh2aWV3Q29udGV4dENoYW5nZTogVmlld0NvbnRleHRDaGFuZ2UgfCB1bmRlZmluZWQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHR0aGlzLnZpZXdDb250ZXh0ID0gdmlld0NvbnRleHRDaGFuZ2U/LnZpZXdDb250ZXh0O1xuXHRcdHRoaXMuc3luY1ZpZXcoKTtcblxuXHRcdGlmICh2aWV3Q29udGV4dENoYW5nZT8uY2hhbmdlcykge1xuXHRcdFx0dGhpcy5oYW5kbGVDaGFuZ2VzKHZpZXdDb250ZXh0Q2hhbmdlLmNoYW5nZXMpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgaGFuZGxlQ2hhbmdlcyhjaGFuZ2VzOiBBcnJheTxDb21wb25lbnRNb2RlbENoYW5nZT4pOiB2b2lkIHtcblx0XHRjaGFuZ2VzLmZvckVhY2goKGNvbXBvbmVudE1vZGVsQ2hhbmdlOiBDb21wb25lbnRNb2RlbENoYW5nZSkgPT4ge1xuXHRcdFx0bGV0IGRldGVjdENoYW5nZTogU21hcnRTdWJqZWN0PGFueT4gfCB1bmRlZmluZWQgPSB0aGlzLnNtYXJ0QXBpQ2xpZW50cy5nZXQoY29tcG9uZW50TW9kZWxDaGFuZ2UudXVpZCk7XG5cdFx0XHRpZiAoZGV0ZWN0Q2hhbmdlKSB7XG5cdFx0XHRcdGRldGVjdENoYW5nZS5uZXh0KGNvbXBvbmVudE1vZGVsQ2hhbmdlLnZhbHVlKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdHB1YmxpYyBhc3luYyBsb2FkKHV1aWQ6IHN0cmluZyk6IFByb21pc2U8Q29tcG9uZW50TW9kZWwgfCB1bmRlZmluZWQ+IHtcblx0XHRyZXR1cm4gYXdhaXQgdGhpcy52aWV3LmdldENvbXBvbmVudE1vZGVsKHV1aWQpLnRvUHJvbWlzZSgpO1xuXHR9XG59XG4iXX0=
|