@sapui5/sap.fe.core 1.141.2 → 1.142.1
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/package.json +1 -1
- package/src/sap/fe/core/.library +4 -1
- package/src/sap/fe/core/ActionRuntime.js +48 -23
- package/src/sap/fe/core/ActionRuntime.ts +61 -35
- package/src/sap/fe/core/AppComponent.js +76 -6
- package/src/sap/fe/core/AppComponent.ts +94 -8
- package/src/sap/fe/core/AppStateHandler.js +9 -8
- package/src/sap/fe/core/AppStateHandler.ts +13 -9
- package/src/sap/fe/core/BaseController.js +8 -5
- package/src/sap/fe/core/BaseController.ts +6 -1
- package/src/sap/fe/core/CommonUtils.js +4 -123
- package/src/sap/fe/core/CommonUtils.ts +3 -172
- package/src/sap/fe/core/ExtensionAPI.js +3 -10
- package/src/sap/fe/core/ExtensionAPI.ts +2 -14
- package/src/sap/fe/core/PageController.js +64 -43
- package/src/sap/fe/core/PageController.ts +62 -47
- package/src/sap/fe/core/TemplateComponent.js +20 -1
- package/src/sap/fe/core/TemplateComponent.ts +24 -2
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +37 -24
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +47 -31
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.js +1 -1
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.ts +4 -0
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.js +4 -1
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.ts +3 -0
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.js +4 -1
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.ts +4 -0
- package/src/sap/fe/core/controllerextensions/BaseControllerExtension.js +7 -5
- package/src/sap/fe/core/controllerextensions/BaseControllerExtension.ts +22 -2
- package/src/sap/fe/core/controllerextensions/CollaborativeDraft.js +82 -39
- package/src/sap/fe/core/controllerextensions/CollaborativeDraft.ts +91 -54
- package/src/sap/fe/core/controllerextensions/EditFlow.js +25 -3
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +27 -3
- package/src/sap/fe/core/controllerextensions/InlineEditFlow.js +9 -7
- package/src/sap/fe/core/controllerextensions/InlineEditFlow.ts +17 -5
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +37 -18
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +49 -17
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +30 -15
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +32 -14
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +9 -10
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +8 -9
- package/src/sap/fe/core/controllerextensions/Paginator.js +2 -2
- package/src/sap/fe/core/controllerextensions/Paginator.ts +1 -1
- package/src/sap/fe/core/controllerextensions/Placeholder.js +10 -2
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +5 -1
- package/src/sap/fe/core/controllerextensions/Recommendations.js +3 -3
- package/src/sap/fe/core/controllerextensions/Recommendations.ts +2 -2
- package/src/sap/fe/core/controllerextensions/Routing.js +9 -5
- package/src/sap/fe/core/controllerextensions/Routing.ts +7 -7
- package/src/sap/fe/core/controllerextensions/Share.js +5 -5
- package/src/sap/fe/core/controllerextensions/Share.ts +4 -4
- package/src/sap/fe/core/controllerextensions/SideEffects.js +1 -1
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +17 -2
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +2 -2
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js +3 -3
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.tsx +3 -2
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +33 -11
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +45 -14
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +37 -3
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +41 -8
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +10 -4
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +6 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.js +7 -7
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.ts +6 -5
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.js +2 -2
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.ts +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationParameters.js +2 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationParameters.ts +1 -0
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +10 -6
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +6 -5
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +11 -9
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +22 -9
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.js +9 -4
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.tsx +10 -4
- package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.js +31 -2
- package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.tsx +34 -1
- package/src/sap/fe/core/converters/ManifestSettings.js +7 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +37 -0
- package/src/sap/fe/core/converters/ManifestWrapper.js +29 -9
- package/src/sap/fe/core/converters/ManifestWrapper.ts +29 -11
- package/src/sap/fe/core/converters/annotations/DataField.js +46 -19
- package/src/sap/fe/core/converters/annotations/DataField.ts +93 -19
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +88 -35
- package/src/sap/fe/core/converters/controls/Common/Action.js +57 -20
- package/src/sap/fe/core/converters/controls/Common/Action.ts +71 -21
- package/src/sap/fe/core/converters/controls/Common/Chart.js +13 -3
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +20 -4
- package/src/sap/fe/core/converters/controls/Common/Form.js +18 -3
- package/src/sap/fe/core/converters/controls/Common/Form.ts +23 -1
- package/src/sap/fe/core/converters/controls/Common/Table.js +89 -57
- package/src/sap/fe/core/converters/controls/Common/Table.ts +110 -56
- package/src/sap/fe/core/converters/controls/Common/filter/FilterRestrictions.js +243 -0
- package/src/sap/fe/core/converters/controls/Common/filter/FilterRestrictions.ts +309 -0
- package/src/sap/fe/core/converters/controls/Common/table/Columns.js +142 -58
- package/src/sap/fe/core/converters/controls/Common/table/Columns.ts +172 -78
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +12 -18
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +13 -27
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +7 -16
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +6 -17
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +16 -5
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +16 -5
- package/src/sap/fe/core/converters/helpers/Aggregation.js +12 -2
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +11 -1
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +27 -3
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +28 -1
- package/src/sap/fe/core/converters/helpers/ID.js +3 -1
- package/src/sap/fe/core/converters/helpers/ID.ts +1 -0
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +5 -2
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +7 -1
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +11 -3
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +12 -4
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +19 -8
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +18 -7
- package/src/sap/fe/core/designtime/AnnotationBasedChanges.js +8 -3
- package/src/sap/fe/core/designtime/AnnotationBasedChanges.ts +7 -2
- package/src/sap/fe/core/formatters/FPMFormatter.js +2 -2
- package/src/sap/fe/core/formatters/FPMFormatter.ts +1 -1
- package/src/sap/fe/core/fpm/Component.js +8 -1
- package/src/sap/fe/core/fpm/Component.ts +8 -0
- package/src/sap/fe/core/fpm/manifest.json +1 -1
- package/src/sap/fe/core/helpers/AppStartupHelper.js +79 -25
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +91 -32
- package/src/sap/fe/core/helpers/ManifestHelper.js +6 -3
- package/src/sap/fe/core/helpers/ManifestHelper.ts +3 -0
- package/src/sap/fe/core/helpers/MetaModelFunction.js +12 -3
- package/src/sap/fe/core/helpers/MetaModelFunction.ts +11 -3
- package/src/sap/fe/core/helpers/ModelHelper.js +48 -9
- package/src/sap/fe/core/helpers/ModelHelper.ts +55 -10
- package/src/sap/fe/core/helpers/TypeGuards.js +12 -2
- package/src/sap/fe/core/helpers/TypeGuards.ts +10 -1
- package/src/sap/fe/core/helpers/WebSocket.js +6 -7
- package/src/sap/fe/core/helpers/WebSocket.ts +10 -6
- package/src/sap/fe/core/library.js +30 -3
- package/src/sap/fe/core/library.ts +28 -1
- package/src/sap/fe/core/messagebundle.properties +8 -1
- package/src/sap/fe/core/messagebundle_ar.properties +7 -0
- package/src/sap/fe/core/messagebundle_bg.properties +10 -3
- package/src/sap/fe/core/messagebundle_ca.properties +7 -0
- package/src/sap/fe/core/messagebundle_cnr.properties +7 -0
- package/src/sap/fe/core/messagebundle_cs.properties +7 -0
- package/src/sap/fe/core/messagebundle_cy.properties +8 -1
- package/src/sap/fe/core/messagebundle_da.properties +7 -0
- package/src/sap/fe/core/messagebundle_de.properties +7 -0
- package/src/sap/fe/core/messagebundle_el.properties +7 -0
- package/src/sap/fe/core/messagebundle_en.properties +8 -1
- package/src/sap/fe/core/messagebundle_en_GB.properties +7 -0
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +5 -0
- package/src/sap/fe/core/messagebundle_es.properties +8 -1
- package/src/sap/fe/core/messagebundle_es_MX.properties +7 -0
- package/src/sap/fe/core/messagebundle_et.properties +7 -0
- package/src/sap/fe/core/messagebundle_fi.properties +7 -0
- package/src/sap/fe/core/messagebundle_fr.properties +16 -9
- package/src/sap/fe/core/messagebundle_fr_CA.properties +7 -0
- package/src/sap/fe/core/messagebundle_hi.properties +8 -1
- package/src/sap/fe/core/messagebundle_hr.properties +7 -0
- package/src/sap/fe/core/messagebundle_hu.properties +7 -0
- package/src/sap/fe/core/messagebundle_id.properties +7 -0
- package/src/sap/fe/core/messagebundle_it.properties +7 -0
- package/src/sap/fe/core/messagebundle_iw.properties +7 -0
- package/src/sap/fe/core/messagebundle_ja.properties +8 -1
- package/src/sap/fe/core/messagebundle_kk.properties +7 -0
- package/src/sap/fe/core/messagebundle_ko.properties +7 -0
- package/src/sap/fe/core/messagebundle_lt.properties +7 -0
- package/src/sap/fe/core/messagebundle_lv.properties +7 -0
- package/src/sap/fe/core/messagebundle_mk.properties +7 -0
- package/src/sap/fe/core/messagebundle_ms.properties +7 -0
- package/src/sap/fe/core/messagebundle_nl.properties +7 -0
- package/src/sap/fe/core/messagebundle_no.properties +7 -0
- package/src/sap/fe/core/messagebundle_pl.properties +7 -0
- package/src/sap/fe/core/messagebundle_pt.properties +7 -0
- package/src/sap/fe/core/messagebundle_pt_PT.properties +7 -0
- package/src/sap/fe/core/messagebundle_ro.properties +7 -0
- package/src/sap/fe/core/messagebundle_ru.properties +7 -0
- package/src/sap/fe/core/messagebundle_sh.properties +7 -0
- package/src/sap/fe/core/messagebundle_sk.properties +7 -0
- package/src/sap/fe/core/messagebundle_sl.properties +7 -0
- package/src/sap/fe/core/messagebundle_sr.properties +7 -0
- package/src/sap/fe/core/messagebundle_sv.properties +7 -0
- package/src/sap/fe/core/messagebundle_th.properties +7 -0
- package/src/sap/fe/core/messagebundle_tr.properties +7 -0
- package/src/sap/fe/core/messagebundle_uk.properties +7 -0
- package/src/sap/fe/core/messagebundle_vi.properties +7 -0
- package/src/sap/fe/core/messagebundle_zh_CN.properties +8 -1
- package/src/sap/fe/core/messagebundle_zh_TW.properties +7 -0
- package/src/sap/fe/core/rootView/Fcl.controller.js +21 -7
- package/src/sap/fe/core/rootView/Fcl.controller.ts +28 -6
- package/src/sap/fe/core/rootView/RootViewBaseController.js +96 -88
- package/src/sap/fe/core/rootView/RootViewBaseController.ts +106 -96
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +14 -10
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +15 -10
- package/src/sap/fe/core/services/RoutingServiceFactory.js +16 -7
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +23 -10
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +9 -7
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +13 -8
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +62 -6
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +74 -11
- package/src/sap/fe/core/services/collaborativeDraftServiceFactory.js +33 -15
- package/src/sap/fe/core/services/collaborativeDraftServiceFactory.ts +31 -11
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +4 -5
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +4 -6
- package/src/sap/fe/core/templating/UIFormatters.js +17 -2
- package/src/sap/fe/core/templating/UIFormatters.ts +25 -1
- package/src/sap/fe/core/types/sap.fe.core-auto-ext.d.js +10 -0
- package/src/sap/fe/core/types/sap.fe.core-auto-ext.d.ts +369 -0
- package/src/sap/fe/core/types/sap.fe.core-manual-ext.d.js +9 -0
- package/src/sap/fe/core/types/sap.fe.core-manual-ext.d.ts +49 -0
- package/ui5.yaml +2 -0
|
@@ -39,7 +39,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/AppState
|
|
|
39
39
|
* Main class for components used for an application in SAP Fiori elements.
|
|
40
40
|
*
|
|
41
41
|
* Application developers using the templates and building blocks provided by SAP Fiori elements should create their apps by extending this component.
|
|
42
|
-
* This ensures that all the necessary services that you need for the building blocks and templates to work
|
|
42
|
+
* This ensures that all the necessary services that you need for the building blocks and templates to work are started.
|
|
43
43
|
*
|
|
44
44
|
* When you use sap.fe.core.AppComponent as the base component, you also need to use a rootView. SAP Fiori elements provides two options: <br/>
|
|
45
45
|
* - sap.fe.core.rootView.NavContainer when using sap.m.routing.Router <br/>
|
|
@@ -156,12 +156,21 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/AppState
|
|
|
156
156
|
*/
|
|
157
157
|
_this.additionalConfiguration = {};
|
|
158
158
|
_this.startupMode = StartupMode.Normal;
|
|
159
|
+
_this.delayTime = 100;
|
|
160
|
+
_this.delayMetadataCheck = false;
|
|
159
161
|
_this._startedServices = [];
|
|
160
162
|
_this.isAdaptationEnabled = false;
|
|
161
163
|
_this.isExiting = false;
|
|
162
164
|
_this.pageConfigurationChanges = {};
|
|
163
165
|
_this.suspended = false;
|
|
164
166
|
_this.discardPromise = Promise.resolve();
|
|
167
|
+
/**
|
|
168
|
+
* Status of the preferred action execution to prevent duplicate triggering.
|
|
169
|
+
* - NotSet: Initial state, no preferred action has been evaluated
|
|
170
|
+
* - CanPerform: Preferred action can be performed (conditions are met)
|
|
171
|
+
* - AlreadyPerformed: Preferred action has been executed and should not be triggered again
|
|
172
|
+
*/
|
|
173
|
+
_this.preferredActionStatus = library.PreferredActionStatusType.NotSet;
|
|
165
174
|
return _this;
|
|
166
175
|
}
|
|
167
176
|
_inheritsLoose(AppComponent, _UIComponent);
|
|
@@ -177,6 +186,25 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/AppState
|
|
|
177
186
|
/**
|
|
178
187
|
* Registered handlers for modifying additional configuration.
|
|
179
188
|
*/;
|
|
189
|
+
/**
|
|
190
|
+
* Gets the current status of the preferred action.
|
|
191
|
+
* @returns The current preferred action status
|
|
192
|
+
*/
|
|
193
|
+
_proto.getPreferredActionStatus = function getPreferredActionStatus() {
|
|
194
|
+
return this.preferredActionStatus;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Sets the status of the preferred action.
|
|
199
|
+
* @param status The new status to set
|
|
200
|
+
*/;
|
|
201
|
+
_proto.setPreferredActionStatus = function setPreferredActionStatus(status) {
|
|
202
|
+
this.preferredActionStatus = status;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Singleton to hold processes from libraries that need to be run for every instance prior to startup.
|
|
207
|
+
*/;
|
|
180
208
|
_proto._isFclEnabled = function _isFclEnabled() {
|
|
181
209
|
const oManifestUI5 = this.getManifestEntry("sap.ui5");
|
|
182
210
|
return oManifestUI5?.routing?.config?.routerClass === NAVCONF.FCL.ROUTERCLASS;
|
|
@@ -301,6 +329,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/AppState
|
|
|
301
329
|
this.startupMode = StartupMode.Deeplink;
|
|
302
330
|
};
|
|
303
331
|
_proto.init = function init() {
|
|
332
|
+
this.oComponentData ??= {};
|
|
304
333
|
const params = new URLSearchParams(window.location.search);
|
|
305
334
|
if (params.has("sap-ui-xx-fe-support")) {
|
|
306
335
|
setTimeout(function () {
|
|
@@ -309,6 +338,24 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/AppState
|
|
|
309
338
|
});
|
|
310
339
|
}, 2000);
|
|
311
340
|
}
|
|
341
|
+
if (params.has("sap-ui-xx-fe-eager-view")) {
|
|
342
|
+
this.eagerViewCreation = true;
|
|
343
|
+
}
|
|
344
|
+
if (params.has("sap-ui-xx-fe-hide-view")) {
|
|
345
|
+
this.hideViewDuringCreation = true;
|
|
346
|
+
}
|
|
347
|
+
if (params.has("sap-ui-xx-fe-field-opt")) {
|
|
348
|
+
// STABLE-ISH
|
|
349
|
+
this.delayMetadataCheck = true;
|
|
350
|
+
}
|
|
351
|
+
if (params.has("sap-ui-xx-fe-delay")) {
|
|
352
|
+
// STABLE
|
|
353
|
+
this.delayTime = parseInt(params.get("sap-ui-xx-fe-delay"), 10);
|
|
354
|
+
}
|
|
355
|
+
if (params.has("sap-ui-xx-fe-fcl-opt")) {
|
|
356
|
+
// STABLE
|
|
357
|
+
this.delayFcl = true;
|
|
358
|
+
}
|
|
312
359
|
this._initializedKeeper = new PromiseKeeper();
|
|
313
360
|
this.initialized = this._initializedKeeper.promise;
|
|
314
361
|
const uiModel = new JSONModel({
|
|
@@ -353,6 +400,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/AppState
|
|
|
353
400
|
AppComponent._customManifestChecks.forEach(fnProcess => {
|
|
354
401
|
return fnProcess.call(this, oManifestUI5);
|
|
355
402
|
});
|
|
403
|
+
this.preloadLibraries(oManifestUI5);
|
|
356
404
|
|
|
357
405
|
// the init function configures the routing according to the settings above
|
|
358
406
|
// it will call the createContent function to instantiate the RootView and add it to the UIComponent aggregations
|
|
@@ -363,6 +411,21 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/AppState
|
|
|
363
411
|
_proto.http503RetryHandler = async function http503RetryHandler(error) {
|
|
364
412
|
return HTTP503Handler.handle503Delay(error, this.getRootControl(), getResourceModel(this));
|
|
365
413
|
};
|
|
414
|
+
_proto.preloadLibraries = function preloadLibraries(oManifestUI5) {
|
|
415
|
+
for (const targetsKey in oManifestUI5.routing?.targets) {
|
|
416
|
+
if (oManifestUI5.routing?.targets[targetsKey].name === "sap.fe.templates.ObjectPage") {
|
|
417
|
+
Library.load({
|
|
418
|
+
name: "sap.uxap"
|
|
419
|
+
}); // fire and forget
|
|
420
|
+
}
|
|
421
|
+
const settings = JSON.stringify(oManifestUI5.routing?.targets[targetsKey]?.options?.settings?.controlConfiguration);
|
|
422
|
+
if (settings?.includes("GridTable") || settings?.includes("TreeTable")) {
|
|
423
|
+
Library.load({
|
|
424
|
+
name: "sap.ui.table"
|
|
425
|
+
}); // fire and forget
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
};
|
|
366
429
|
_proto.checkRoutingConfiguration = function checkRoutingConfiguration(oManifestUI5) {
|
|
367
430
|
if (oManifestUI5?.rootView?.viewName) {
|
|
368
431
|
// The application specified an own root view in the manifest
|
|
@@ -397,6 +460,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/AppState
|
|
|
397
460
|
//starting of the router
|
|
398
461
|
const finalizedRoutingInitialization = () => {
|
|
399
462
|
this.entityContainer.then(async () => {
|
|
463
|
+
// Preload currencyCodes and UoM if they exists
|
|
464
|
+
this.getMetaModel().requestCodeList?.("CurrencyCodes");
|
|
465
|
+
this.getMetaModel().requestCodeList?.("UnitOfMeasures");
|
|
400
466
|
if (this.getRootViewController().attachRouteMatchers) {
|
|
401
467
|
this.getRootViewController().attachRouteMatchers();
|
|
402
468
|
}
|
|
@@ -522,8 +588,11 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/AppState
|
|
|
522
588
|
return {};
|
|
523
589
|
};
|
|
524
590
|
_proto.getStartupParameters = async function getStartupParameters() {
|
|
525
|
-
const
|
|
526
|
-
|
|
591
|
+
const startupParams = this.getComponentData()?.startupParameters;
|
|
592
|
+
if (startupParams?.preferredAction?.[0].includes("summary") && this.getPreferredActionStatus() === library.PreferredActionStatusType.NotSet) {
|
|
593
|
+
this.setPreferredActionStatus(library.PreferredActionStatusType.CanPerform);
|
|
594
|
+
}
|
|
595
|
+
return startupParams ?? {};
|
|
527
596
|
};
|
|
528
597
|
_proto.restore = function restore() {
|
|
529
598
|
// called by FLP when app sap-keep-alive is enabled and app is restored
|
|
@@ -647,7 +716,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/AppState
|
|
|
647
716
|
* @returns True if the component is embedded, false otherwise.
|
|
648
717
|
*/;
|
|
649
718
|
_proto._isEmbedded = function _isEmbedded() {
|
|
650
|
-
return !!this.getComponentData()
|
|
719
|
+
return !!this.getComponentData()?.feEnvironment;
|
|
651
720
|
};
|
|
652
721
|
return AppComponent;
|
|
653
722
|
}(UIComponent), _AppComponent.instanceMap = {}, _AppComponent.configurationHandlers = [], _AppComponent.instanceDependentProcesses = [], _AppComponent._customManifestChecks = [], _AppComponent), _descriptor = _applyDecoratedDescriptor(_class2.prototype, "__implements__sap_ui_core_IAsyncContentCreation", [_dec2], {
|
|
@@ -657,7 +726,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/AppState
|
|
|
657
726
|
initializer: function () {
|
|
658
727
|
return true;
|
|
659
728
|
}
|
|
660
|
-
}), _class2)) || _class);
|
|
729
|
+
}), _class2)) || _class); // eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
730
|
+
// @ts-ignore
|
|
661
731
|
return AppComponent;
|
|
662
732
|
}, false);
|
|
663
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTdGFydHVwTW9kZSIsImxpYnJhcnkiLCJOQVZDT05GIiwiRkNMIiwiVklFV05BTUUiLCJWSUVXTkFNRV9DT01QQVRJQklMSVRZIiwiUk9VVEVSQ0xBU1MiLCJOQVZDT05UQUlORVIiLCJfbVJvdXRlciIsIlJvdXRlciIsIkFwcENvbXBvbmVudCIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsImNvbmZpZyIsImZ1bGxXaWR0aCIsIm1hbmlmZXN0IiwiX3ZlcnNpb24iLCJzZXJ2aWNlcyIsInZpZXdQcmVsb2FkZXJTZXJ2aWNlIiwiZmFjdG9yeU5hbWUiLCJzdGFydHVwIiwicmVzb3VyY2VNb2RlbCIsInNldHRpbmdzIiwiYnVuZGxlcyIsIm1vZGVsTmFtZSIsInJvdXRpbmdTZXJ2aWNlIiwic2hlbGxTZXJ2aWNlcyIsIlNoZWxsVUlTZXJ2aWNlIiwibmF2aWdhdGlvblNlcnZpY2UiLCJlbnZpcm9ubWVudENhcGFiaWxpdGllcyIsInNpZGVFZmZlY3RzU2VydmljZSIsImFzeW5jQ29tcG9uZW50U2VydmljZSIsImNvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZSIsImNvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2UiLCJ0ZWxlbWV0cnlTZXJ2aWNlIiwidmFsdWVIZWxwSGlzdG9yeVNlcnZpY2UiLCJDb2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlIiwiQ29udGV4dFNoYXJpbmdTZXJ2aWNlIiwiaW5saW5lRWRpdFNlcnZpY2UiLCJyb290VmlldyIsInZpZXdOYW1lIiwiaWQiLCJyb3V0aW5nIiwiY29udHJvbElkIiwicm91dGVyQ2xhc3MiLCJ2aWV3VHlwZSIsImNvbnRyb2xBZ2dyZWdhdGlvbiIsImNvbnRhaW5lck9wdGlvbnMiLCJwcm9wYWdhdGVNb2RlbCIsImRlc2lnbnRpbWUiLCJfZGVjMiIsImltcGxlbWVudEludGVyZmFjZSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQXBwQ29tcG9uZW50IiwiX1VJQ29tcG9uZW50IiwiX3RoaXMiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiYWRkaXRpb25hbENvbmZpZ3VyYXRpb24iLCJzdGFydHVwTW9kZSIsIk5vcm1hbCIsIl9zdGFydGVkU2VydmljZXMiLCJpc0FkYXB0YXRpb25FbmFibGVkIiwiaXNFeGl0aW5nIiwicGFnZUNvbmZpZ3VyYXRpb25DaGFuZ2VzIiwic3VzcGVuZGVkIiwiZGlzY2FyZFByb21pc2UiLCJQcm9taXNlIiwicmVzb2x2ZSIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiZ2V0QWRkaXRpb25hbENvbmZpZ3VyYXRpb24iLCJfaXNGY2xFbmFibGVkIiwib01hbmlmZXN0VUk1IiwiZ2V0TWFuaWZlc3RFbnRyeSIsInNldEFkYXB0YXRpb25Nb2RlIiwiaXNBZGFwdGF0aW9uTW9kZSIsInJlZ2lzdGVyQ29uZmlndXJhdGlvbkhhbmRsZXJzIiwiaGFuZGxlciIsImNvbmZpZ3VyYXRpb25IYW5kbGVycyIsInB1c2giLCJpbml0aWFsaXplRmVhdHVyZVRvZ2dsZXMiLCJjaGFuZ2VQYWdlQ29uZmlndXJhdGlvbiIsInBhZ2VJZCIsInBhdGgiLCJ2YWx1ZSIsImNoYW5nZUNvbmZpZ3VyYXRpb24iLCJnZXRNYW5pZmVzdCIsImdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwic2V0Q2FwYWJpbGl0eSIsImNsZWFuUGFnZUNvbmZpZ3VyYXRpb25DaGFuZ2VzIiwiZ2V0Um91dGVyUHJveHkiLCJfb1JvdXRlclByb3h5IiwiZ2V0QXBwU3RhdGVIYW5kbGVyIiwiX29BcHBTdGF0ZUhhbmRsZXIiLCJnZXRSb290Vmlld0NvbnRyb2xsZXIiLCJnZXRSb290Q29udHJvbCIsImdldENvbnRyb2xsZXIiLCJnZXRSb290Q29udGFpbmVyIiwiZ2V0Q29udGVudCIsImdldFN0YXJ0dXBNb2RlIiwic2V0U3RhcnR1cE1vZGVDcmVhdGUiLCJDcmVhdGUiLCJzZXRTdGFydHVwTW9kZUF1dG9DcmVhdGUiLCJBdXRvQ3JlYXRlIiwic2V0U3RhcnR1cE1vZGVEZWVwbGluayIsIkRlZXBsaW5rIiwiaW5pdCIsInBhcmFtcyIsIlVSTFNlYXJjaFBhcmFtcyIsIndpbmRvdyIsImxvY2F0aW9uIiwic2VhcmNoIiwiaGFzIiwic2V0VGltZW91dCIsIkxpYnJhcnkiLCJsb2FkIiwibmFtZSIsIl9pbml0aWFsaXplZEtlZXBlciIsIlByb21pc2VLZWVwZXIiLCJpbml0aWFsaXplZCIsInByb21pc2UiLCJ1aU1vZGVsIiwiSlNPTk1vZGVsIiwiZWRpdE1vZGUiLCJFZGl0TW9kZSIsIkRpc3BsYXkiLCJpc0VkaXRhYmxlIiwiZHJhZnRTdGF0dXMiLCJEcmFmdFN0YXR1cyIsIkNsZWFyIiwiYnVzeSIsImJ1c3lMb2NhbCIsInBhZ2VzIiwib0ludGVybmFsTW9kZWwiLCJzZXREZWZhdWx0QmluZGluZ01vZGUiLCJNb2RlbEhlbHBlciIsImVuaGFuY2VVaUpTT05Nb2RlbCIsImVuaGFuY2VJbnRlcm5hbEpTT05Nb2RlbCIsInNldE1vZGVsIiwiYkluaXRpYWxpemVSb3V0aW5nIiwidW5kZWZpbmVkIiwiUm91dGVyUHJveHkiLCJBcHBTdGF0ZUhhbmRsZXIiLCJfb0RpYWdub3N0aWNzIiwiRGlhZ25vc3RpY3MiLCJvTW9kZWwiLCJnZXRNb2RlbCIsImlzQSIsImVuaGFuY2VPRGF0YU1vZGVsIiwic2V0UmV0cnlBZnRlckhhbmRsZXIiLCJodHRwNTAzUmV0cnlIYW5kbGVyIiwiYmluZCIsImVudGl0eUNvbnRhaW5lciIsImdldE1ldGFNb2RlbCIsInJlcXVlc3RPYmplY3QiLCJhcHAiLCJkaXNhYmxlQ29sbGFib3JhdGlvbkRyYWZ0IiwiY2hlY2tSb3V0aW5nQ29uZmlndXJhdGlvbiIsIl9jdXN0b21NYW5pZmVzdENoZWNrcyIsImZvckVhY2giLCJmblByb2Nlc3MiLCJpbnN0YW5jZU1hcCIsImdldElkIiwiZXJyb3IiLCJIVFRQNTAzSGFuZGxlciIsImhhbmRsZTUwM0RlbGF5IiwiZ2V0UmVzb3VyY2VNb2RlbCIsIkxvZyIsImluZm8iLCJpbmNsdWRlcyIsIkVycm9yIiwib25TZXJ2aWNlc1N0YXJ0ZWQiLCJhbGxTZXJ2aWNlcyIsImFsbCIsIm1hcCIsImFsbFNldHRsZWQiLCJpbnN0YW5jZURlcGVuZGVudFByb2Nlc3NlcyIsImZpbmFsaXplZFJvdXRpbmdJbml0aWFsaXphdGlvbiIsInRoZW4iLCJhdHRhY2hSb3V0ZU1hdGNoZXJzIiwiZ2V0Um91dGVyIiwiaW5pdGlhbGl6ZSIsImdldFZhbHVlSGVscEhpc3RvcnlTZXJ2aWNlIiwicmVnaXN0ZXJTaGVsbEhvb2siLCJjYXRjaCIsIm9SZXNvdXJjZUJ1bmRsZSIsImdldFJlc291cmNlQnVuZGxlRm9yIiwiZGlzcGxheUVycm9yUGFnZSIsImdldFRleHQiLCJ0aXRsZSIsImRlc2NyaXB0aW9uIiwibWVzc2FnZSIsImdldFJvdXRpbmdTZXJ2aWNlIiwiaW5pdGlhbGl6ZVJvdXRpbmciLCJhdHRhY2hBZnRlckluaXQiLCJlcnIiLCJ0b1N0cmluZyIsImV4aXQiLCJkZXN0cm95IiwiZGVsZXRlTW9kZWxDYWNoZURhdGEiLCJnZXREaWFnbm9zdGljcyIsImJTdXBwcmVzc0ludmFsaWRhdGUiLCJfcm91dGluZyIsImUiLCJvTWFpbk1vZGVsIiwib01vZGVscyIsIm9IZWFkZXJzIiwib1JlcXVlc3RvciIsIk9iamVjdCIsImFzc2lnbiIsIm1IZWFkZXJzIiwiYmVmb3JlRXhpdCIsInVucmVnaXN0ZXJDYWxsYmFja3MiLCJnZXRTaGVsbFNlcnZpY2VzIiwiZ2V0TmF2aWdhdGlvblNlcnZpY2UiLCJnZXRTaWRlRWZmZWN0c1NlcnZpY2UiLCJnZXRDb2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2UiLCJnZXRWaWV3UHJlbG9hZGVyU2VydmljZSIsImdldENvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2UiLCJnZXRDb2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlIiwiZ2V0Q29udGV4dFNoYXJpbmdTZXJ2aWNlIiwiZ2V0VGVsZW1ldHJ5U2VydmljZSIsImdldElubGluZUVkaXRTZXJ2aWNlIiwiZ2V0U3RhcnR1cFBhcmFtZXRlcnMiLCJvQ29tcG9uZW50RGF0YSIsImdldENvbXBvbmVudERhdGEiLCJzdGFydHVwUGFyYW1ldGVycyIsInJlc3RvcmUiLCJzdGFydGVkU2VydmljZSIsIm9uUmVzdG9yZSIsInZpZXdTdGF0ZSIsInJlc2V0VmVyc2lvbkFjdGl2YXRpb25TdGF0dXMiLCJzdXNwZW5kIiwib25TdXNwZW5kIiwiaXNTdXNwZW5kZWQiLCJpc0FwcENvbXBvbmVudEJ1c3kiLCJuYXZpZ2F0ZUJhc2VkT25TdGFydHVwUGFyYW1ldGVyIiwiQnVzeUxvY2tlciIsImlzTG9ja2VkIiwiX21hbmFnZURlZXBMaW5rU3RhcnR1cCIsImV4Y2VwdGlvbiIsInVubG9jayIsImlzQ29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlRW5hYmxlZCIsInJlZ2lzdGVySW5zdGFuY2VEZXBlbmRlbnRQcm9jZXNzRm9yU3RhcnRVcCIsInJlZ2lzdGVySW5pdENoZWNrcyIsInJlZ2lzdGVyQ2FsbGJhY2tzIiwiZGlydHlTdGF0ZVByb3ZpZGVyQ2FsbGJhY2siLCJkaXNjYXJkQWZ0ZXJOYXZpZ2F0aW9uQ2FsbGJhY2siLCJzZXNzaW9uVGltZW91dENhbGxiYWNrIiwicmVnaXN0ZXJEaXJ0eVN0YXRlUHJvdmlkZXIiLCJzdGlja3lTZXNzaW9uVGltZW91dENhbGxiYWNrIiwiYXR0YWNoU2Vzc2lvblRpbWVvdXQiLCJfcm91dGVNYXRjaEhhbmRsZXIiLCJhdHRhY2hSb3V0ZU1hdGNoZWQiLCJkZXJlZ2lzdGVyRGlydHlTdGF0ZVByb3ZpZGVyIiwiZGV0YWNoU2Vzc2lvblRpbWVvdXQiLCJkZXRhY2hSb3V0ZU1hdGNoZWQiLCJfaXNFbWJlZGRlZCIsImZlRW52aXJvbm1lbnQiLCJVSUNvbXBvbmVudCIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQXBwQ29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgRmxleGlibGVDb2x1bW5MYXlvdXQgZnJvbSBcInNhcC9mL0ZsZXhpYmxlQ29sdW1uTGF5b3V0XCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcyxpbXBsZW1lbnRJbnRlcmZhY2UgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQXBwU3RhdGVIYW5kbGVyIGZyb20gXCJzYXAvZmUvY29yZS9BcHBTdGF0ZUhhbmRsZXJcIjtcbmltcG9ydCBSb3V0ZXJQcm94eSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvcm91dGluZy9Sb3V0ZXJQcm94eVwiO1xuaW1wb3J0IEhUVFA1MDNIYW5kbGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0hUVFA1MDNIYW5kbGVyXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBQcm9taXNlS2VlcGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1Byb21pc2VLZWVwZXJcIjtcbmltcG9ydCBsaWJyYXJ5IGZyb20gXCJzYXAvZmUvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgeyBjaGFuZ2VDb25maWd1cmF0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL21hbmlmZXN0TWVyZ2VyL0NoYW5nZVBhZ2VDb25maWd1cmF0aW9uXCI7XG5pbXBvcnQgdHlwZSBSb290Vmlld0Jhc2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9yb290Vmlldy9Sb290Vmlld0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSB7IENvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9Db2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7IENvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2UgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvQ29sbGFib3JhdGl2ZVRvb2xzU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgQ29udGV4dFNoYXJpbmdTZXJ2aWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL0NvbnRleHRTaGFyaW5nU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgRW52aXJvbm1lbnRDYXBhYmlsaXRpZXNTZXJ2aWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL0Vudmlyb25tZW50U2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgSW5saW5lRWRpdFNlcnZpY2UgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvSW5saW5lRWRpdFNlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL05hdmlnYXRpb25TZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHR5cGUgeyBSb3V0aW5nU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9Sb3V0aW5nU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgSVNoZWxsU2VydmljZXMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvU2hlbGxTZXJ2aWNlc0ZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgU2lkZUVmZmVjdHNTZXJ2aWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1NpZGVFZmZlY3RzU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgVGVsZW1ldHJ5U2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9UZWxlbWV0cnlTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHR5cGUgeyBDb2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL2NvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgRGlhZ25vc3RpY3MgZnJvbSBcInNhcC9mZS9jb3JlL3N1cHBvcnQvRGlhZ25vc3RpY3NcIjtcbmltcG9ydCB0eXBlIE5hdkNvbnRhaW5lciBmcm9tIFwic2FwL20vTmF2Q29udGFpbmVyXCI7XG5pbXBvcnQgUm91dGVyIGZyb20gXCJzYXAvbS9yb3V0aW5nL1JvdXRlclwiO1xuaW1wb3J0IExpYnJhcnkgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHR5cGUgeyBNYW5pZmVzdENvbnRlbnQgfSBmcm9tIFwic2FwL3VpL2NvcmUvTWFuaWZlc3RcIjtcbmltcG9ydCBVSUNvbXBvbmVudCBmcm9tIFwic2FwL3VpL2NvcmUvVUlDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgSUFzeW5jQ29udGVudENyZWF0aW9uIH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9WaWV3XCI7XG5pbXBvcnQgdHlwZSBTZXJ2aWNlIGZyb20gXCJzYXAvdWkvY29yZS9zZXJ2aWNlL1NlcnZpY2VcIjtcbmltcG9ydCB0eXBlIE1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvTW9kZWxcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IFwic2FwL3VpL21vZGVsL29kYXRhL3R5cGUvQ3VycmVuY3lcIjtcbmltcG9ydCBcInNhcC91aS9tb2RlbC9vZGF0YS90eXBlL1VuaXRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIE9EYXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1vZGVsXCI7XG5pbXBvcnQgQnVzeUxvY2tlciBmcm9tIFwiLi9jb250cm9sbGVyZXh0ZW5zaW9ucy9CdXN5TG9ja2VyXCI7XG5pbXBvcnQgeyBkZWxldGVNb2RlbENhY2hlRGF0YSB9IGZyb20gXCIuL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgeyBnZXRSZXNvdXJjZU1vZGVsIH0gZnJvbSBcIi4vaGVscGVycy9SZXNvdXJjZU1vZGVsSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IFZhbHVlSGVscEhpc3RvcnlTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvVmFsdWVIZWxwSGlzdG9yeVNlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7IFZpZXdQcmVsb2FkZXJTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvVmlld1ByZWxvYWRlclNlcnZpY2VGYWN0b3J5XCI7XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIHRoYXQgY2FuIGJlIHByb3ZpZGVkIGJ5IGxpYnJhcmllcy5cbiAqL1xuZXhwb3J0IHR5cGUgQWRkaXRpb25hbENvbmZpZ3VyYXRpb24gPSB7XG5cdC8qKlxuXHQgKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIFNBUCBGaW9yaSBlbGVtZW50cyBtYWNyb3MuXG5cdCAqL1xuXHRcInNhcC5mZS5tYWNyb3NcIj86IHtcblx0XHQvKipcblx0XHQgKiBDb25maWd1cmF0aW9uIGZvciB0aGUgU3RhdHVzIG1hY3JvLlxuXHRcdCAqL1xuXHRcdFN0YXR1cz86IHtcblx0XHRcdC8qKlxuXHRcdFx0ICogV2hldGhlciB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBpbnZlcnRlZC5cblx0XHRcdCAqL1xuXHRcdFx0aW52ZXJ0ZWREZWZhdWx0VmFsdWU/OiBib29sZWFuO1xuXHRcdFx0LyoqXG5cdFx0XHQgKiBDb2xvciBtYXBwaW5nIGZvciBkaWZmZXJlbnQgc3RhdHVzIHZhbHVlcy5cblx0XHRcdCAqL1xuXHRcdFx0Y29sb3JNYXA/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXHRcdH07XG5cdH07XG59O1xuXG5jb25zdCBTdGFydHVwTW9kZSA9IGxpYnJhcnkuU3RhcnR1cE1vZGU7XG5jb25zdCBOQVZDT05GID0ge1xuXHRGQ0w6IHtcblx0XHRWSUVXTkFNRTogXCJzYXAuZmUuY29yZS5yb290Vmlldy5GY2xcIixcblx0XHRWSUVXTkFNRV9DT01QQVRJQklMSVRZOiBcInNhcC5mZS50ZW1wbGF0ZXMuUm9vdENvbnRhaW5lci52aWV3LkZjbFwiLFxuXHRcdFJPVVRFUkNMQVNTOiBcInNhcC5mLnJvdXRpbmcuUm91dGVyXCJcblx0fSxcblx0TkFWQ09OVEFJTkVSOiB7XG5cdFx0VklFV05BTUU6IFwic2FwLmZlLmNvcmUucm9vdFZpZXcuTmF2Q29udGFpbmVyXCIsXG5cdFx0VklFV05BTUVfQ09NUEFUSUJJTElUWTogXCJzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIudmlldy5OYXZDb250YWluZXJcIixcblx0XHRST1VURVJDTEFTUzogXCJzYXAubS5yb3V0aW5nLlJvdXRlclwiXG5cdH1cbn07XG5cbmV4cG9ydCB0eXBlIENvbXBvbmVudERhdGEgPSB7XG5cdHN0YXJ0dXBQYXJhbWV0ZXJzPzogU3RhcnR1cFBhcmFtZXRlcnM7XG5cdC8vZmVFbnZpcm9ubWVudCBpcyBvYmplY3Qgd2hpY2ggaXMgcmVjZWl2ZWQgYXMgYSBwYXJ0IG9mIHRoZSBjb21wb25lbnQgZGF0YSBmb3IgTXkgSW5ib3ggYXBwbGljYXRpb25zLlxuXHRmZUVudmlyb25tZW50Pzoge1xuXHRcdC8vV2l0aGluIHRoaXMgb2JqZWN0IHRoZXkgcGFzcyBhIGZ1bmN0aW9uIGNhbGxlZCBnZXRJbnRlbnQoKSB3aGljaCByZXR1cm5zIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBzZW1hbnRpY09iamVjdCBhbmQgYWN0aW9uIGFzIHNlcGFyYXRlIHByb3BlcnR5LXZhbHVlIGVudHJpZXMgdGhhdCBhcmUgdGhlbiB1c2VkIHRvIHVwZGF0ZSB0aGUgcmVsYXRlZCBhcHBzIGJ1dHRvbi5cblx0XHRnZXRJbnRlbnQ6IEZ1bmN0aW9uO1xuXHRcdC8vV2l0aGluIHRoaXMgb2JqZWN0IHRoZXkgcGFzcyBhIGZ1bmN0aW9uIGNhbGxlZCBnZXRTaGFyZUNvbnRyb2xWaXNpYmlsaXR5KCkgdGhhdCByZXR1cm5zIGJvb2xlYW4gdmFsdWVzKHRydWUgb3IgZmFsc2UpIHdoaWNoIGRldGVybWluZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIHNoYXJlIGJ1dHRvbi5cblx0XHRnZXRTaGFyZUNvbnRyb2xWaXNpYmlsaXR5OiBGdW5jdGlvbjtcblx0fTtcbn07XG4vLyBLZWVwIGEgcmVmZXJlbmNlIHNvIGFzIHRvIGtlZXAgdGhlIGltcG9ydCBkZXNwaXRlIGl0IG5vdCBiZWluZyBkaXJlY3RseSB1c2VkXG5jb25zdCBfbVJvdXRlciA9IFJvdXRlcjtcblxuZXhwb3J0IHR5cGUgU3RhcnR1cFBhcmFtZXRlcnMgPSB7XG5cdHByZWZlcnJlZE1vZGU/OiBzdHJpbmdbXTtcbn0gJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duW10+O1xuLyoqXG4gKiBNYWluIGNsYXNzIGZvciBjb21wb25lbnRzIHVzZWQgZm9yIGFuIGFwcGxpY2F0aW9uIGluIFNBUCBGaW9yaSBlbGVtZW50cy5cbiAqXG4gKiBBcHBsaWNhdGlvbiBkZXZlbG9wZXJzIHVzaW5nIHRoZSB0ZW1wbGF0ZXMgYW5kIGJ1aWxkaW5nIGJsb2NrcyBwcm92aWRlZCBieSBTQVAgRmlvcmkgZWxlbWVudHMgc2hvdWxkIGNyZWF0ZSB0aGVpciBhcHBzIGJ5IGV4dGVuZGluZyB0aGlzIGNvbXBvbmVudC5cbiAqIFRoaXMgZW5zdXJlcyB0aGF0IGFsbCB0aGUgbmVjZXNzYXJ5IHNlcnZpY2VzIHRoYXQgeW91IG5lZWQgZm9yIHRoZSBidWlsZGluZyBibG9ja3MgYW5kIHRlbXBsYXRlcyB0byB3b3JrIHByb3Blcmx5IGFyZSBzdGFydGVkLlxuICpcbiAqIFdoZW4geW91IHVzZSBzYXAuZmUuY29yZS5BcHBDb21wb25lbnQgYXMgdGhlIGJhc2UgY29tcG9uZW50LCB5b3UgYWxzbyBuZWVkIHRvIHVzZSBhIHJvb3RWaWV3LiBTQVAgRmlvcmkgZWxlbWVudHMgcHJvdmlkZXMgdHdvIG9wdGlvbnM6IDxici8+XG4gKiAtIHNhcC5mZS5jb3JlLnJvb3RWaWV3Lk5hdkNvbnRhaW5lciB3aGVuIHVzaW5nIHNhcC5tLnJvdXRpbmcuUm91dGVyIDxici8+XG4gKiAtIHNhcC5mZS5jb3JlLnJvb3RWaWV3LkZjbCB3aGVuIHVzaW5nIHNhcC5mLnJvdXRpbmcuUm91dGVyIChGQ0wgdXNlIGNhc2UpIDxici8+XG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAcHVibGljXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLkFwcENvbXBvbmVudFwiLCB7XG5cdGNvbmZpZzoge1xuXHRcdGZ1bGxXaWR0aDogdHJ1ZVxuXHR9LFxuXHRtYW5pZmVzdDoge1xuXHRcdF92ZXJzaW9uOiBcIjIuMC4wXCIsXG5cdFx0XCJzYXAudWk1XCI6IHtcblx0XHRcdHNlcnZpY2VzOiB7XG5cdFx0XHRcdHZpZXdQcmVsb2FkZXJTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuVmlld1ByZWxvYWRlclNlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRyZXNvdXJjZU1vZGVsOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuUmVzb3VyY2VNb2RlbFNlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIixcblx0XHRcdFx0XHRzZXR0aW5nczoge1xuXHRcdFx0XHRcdFx0YnVuZGxlczogW1wic2FwLmZlLmNvcmUubWVzc2FnZWJ1bmRsZVwiXSxcblx0XHRcdFx0XHRcdG1vZGVsTmFtZTogXCJzYXAuZmUuaTE4blwiXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRyb3V0aW5nU2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLlJvdXRpbmdTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0c2hlbGxTZXJ2aWNlczoge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLlNoZWxsU2VydmljZXNcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRTaGVsbFVJU2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC51c2hlbGwudWk1c2VydmljZS5TaGVsbFVJU2VydmljZVwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdG5hdmlnYXRpb25TZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuTmF2aWdhdGlvblNlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRlbnZpcm9ubWVudENhcGFiaWxpdGllczoge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLkVudmlyb25tZW50U2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHNpZGVFZmZlY3RzU2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLlNpZGVFZmZlY3RzU2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGFzeW5jQ29tcG9uZW50U2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLkFzeW5jQ29tcG9uZW50U2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGNvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLkNvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGNvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5Db2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0dGVsZW1ldHJ5U2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLlRlbGVtZXRyeVNlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHR2YWx1ZUhlbHBIaXN0b3J5U2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLlZhbHVlSGVscEhpc3RvcnlTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0Q29sbGFib3JhdGl2ZURyYWZ0U2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLkNvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRDb250ZXh0U2hhcmluZ1NlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5Db250ZXh0U2hhcmluZ1NlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRpbmxpbmVFZGl0U2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLklubGluZUVkaXRTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdHJvb3RWaWV3OiB7XG5cdFx0XHRcdHZpZXdOYW1lOiBOQVZDT05GLk5BVkNPTlRBSU5FUi5WSUVXTkFNRSxcblx0XHRcdFx0aWQ6IFwiYXBwUm9vdFZpZXdcIlxuXHRcdFx0fSxcblx0XHRcdHJvdXRpbmc6IHtcblx0XHRcdFx0Y29uZmlnOiB7XG5cdFx0XHRcdFx0Y29udHJvbElkOiBcImFwcENvbnRlbnRcIixcblx0XHRcdFx0XHRyb3V0ZXJDbGFzczogTkFWQ09ORi5OQVZDT05UQUlORVIuUk9VVEVSQ0xBU1MsXG5cdFx0XHRcdFx0dmlld1R5cGU6IFwiWE1MXCIsXG5cdFx0XHRcdFx0Y29udHJvbEFnZ3JlZ2F0aW9uOiBcInBhZ2VzXCIsXG5cdFx0XHRcdFx0Y29udGFpbmVyT3B0aW9uczoge1xuXHRcdFx0XHRcdFx0cHJvcGFnYXRlTW9kZWw6IHRydWVcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdGRlc2lnbnRpbWU6IFwic2FwL2ZlL2NvcmUvZGVzaWdudGltZS9BcHBDb21wb25lbnQuZGVzaWdudGltZVwiLFxuXG5cdGxpYnJhcnk6IFwic2FwLmZlLmNvcmVcIlxufSlcbmNsYXNzIEFwcENvbXBvbmVudCBleHRlbmRzIFVJQ29tcG9uZW50IGltcGxlbWVudHMgSUFzeW5jQ29udGVudENyZWF0aW9uIHtcblx0QGltcGxlbWVudEludGVyZmFjZShcInNhcC51aS5jb3JlLklBc3luY0NvbnRlbnRDcmVhdGlvblwiKVxuXHRfX2ltcGxlbWVudHNfX3NhcF91aV9jb3JlX0lBc3luY0NvbnRlbnRDcmVhdGlvbiA9IHRydWU7XG5cblx0c3RhdGljIGluc3RhbmNlTWFwOiBSZWNvcmQ8c3RyaW5nLCBBcHBDb21wb25lbnQ+ID0ge307XG5cblx0LyoqXG5cdCAqIFRoZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBhcHBsaWNhdGlvbi5cblx0ICogQHByaXZhdGVcblx0ICovXG5cdHByaXZhdGUgYWRkaXRpb25hbENvbmZpZ3VyYXRpb246IEFkZGl0aW9uYWxDb25maWd1cmF0aW9uID0ge307XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgdGhlIGFwcGxpY2F0aW9uLlxuXHQgKiBAcmV0dXJucyBUaGUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uXG5cdCAqL1xuXHRnZXRBZGRpdGlvbmFsQ29uZmlndXJhdGlvbigpOiBBZGRpdGlvbmFsQ29uZmlndXJhdGlvbiB7XG5cdFx0cmV0dXJuIHRoaXMuYWRkaXRpb25hbENvbmZpZ3VyYXRpb247XG5cdH1cblxuXHQvKipcblx0ICogUmVnaXN0ZXJlZCBoYW5kbGVycyBmb3IgbW9kaWZ5aW5nIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbi5cblx0ICovXG5cdHByaXZhdGUgc3RhdGljIGNvbmZpZ3VyYXRpb25IYW5kbGVyczogKChhZGRpdGlvbmFsQ29uZmlndXJhdGlvbjogQWRkaXRpb25hbENvbmZpZ3VyYXRpb24pID0+IFByb21pc2U8dm9pZD4pW10gPSBbXTtcblxuXHRwcml2YXRlIF9vUm91dGVyUHJveHkhOiBSb3V0ZXJQcm94eTtcblxuXHRwcml2YXRlIF9vQXBwU3RhdGVIYW5kbGVyITogQXBwU3RhdGVIYW5kbGVyO1xuXG5cdHByaXZhdGUgYkluaXRpYWxpemVSb3V0aW5nPzogYm9vbGVhbjtcblxuXHRwcml2YXRlIF9vRGlhZ25vc3RpY3MhOiBEaWFnbm9zdGljcztcblxuXHRwcml2YXRlIGVudGl0eUNvbnRhaW5lciE6IFByb21pc2U8dm9pZD47XG5cblx0cHJpdmF0ZSBzdGFydHVwTW9kZTogc3RyaW5nID0gU3RhcnR1cE1vZGUuTm9ybWFsO1xuXG5cdHByaXZhdGUgX3N0YXJ0ZWRTZXJ2aWNlczogU2VydmljZTx1bmtub3duPltdID0gW107XG5cblx0cHVibGljIGluaXRpYWxpemVkITogUHJvbWlzZTx2b2lkPjtcblxuXHRwcml2YXRlIF9pbml0aWFsaXplZEtlZXBlciE6IFByb21pc2VLZWVwZXI8dm9pZD47XG5cblx0cHJpdmF0ZSBpc0FkYXB0YXRpb25FbmFibGVkID0gZmFsc2U7XG5cblx0cHVibGljIGlzRXhpdGluZyA9IGZhbHNlO1xuXG5cdHB1YmxpYyBwYWdlQ29uZmlndXJhdGlvbkNoYW5nZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9O1xuXG5cdHByaXZhdGUgZGlydHlTdGF0ZVByb3ZpZGVyQ2FsbGJhY2s/OiBGdW5jdGlvbjtcblxuXHRwcml2YXRlIHN0aWNreVNlc3Npb25UaW1lb3V0Q2FsbGJhY2s/OiBGdW5jdGlvbjtcblxuXHRwcml2YXRlIGRpc2NhcmRBZnRlck5hdmlnYXRpb25DYWxsYmFjaz86IEZ1bmN0aW9uO1xuXG5cdHByaXZhdGUgc3VzcGVuZGVkID0gZmFsc2U7XG5cblx0cHJpdmF0ZSBkaXNjYXJkUHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpO1xuXG5cdHByaXZhdGUgX3JvdXRlTWF0Y2hIYW5kbGVyPzogRnVuY3Rpb247XG5cblx0LyoqXG5cdCAqIFNpbmdsZXRvbiB0byBob2xkIHByb2Nlc3NlcyBmcm9tIGxpYnJhcmllcyB0aGF0IG5lZWQgdG8gYmUgcnVuIGZvciBldmVyeSBpbnN0YW5jZSBwcmlvciB0byBzdGFydHVwLlxuXHQgKi9cblx0cHJpdmF0ZSBzdGF0aWMgaW5zdGFuY2VEZXBlbmRlbnRQcm9jZXNzZXM6ICgoYXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQpID0+IFByb21pc2U8dm9pZD4pW10gPSBbXTtcblxuXHQvKipcblx0ICogU2luZ2xldG9uIGhvbGRpbmcgY3VzdG9tIGluaXRpYWxpemF0aW9uIGNoZWNrcyB0aGF0IGNhbiBiZSByZWdpc3RlcmVkIGJ5IGxpYnJhcmllcy5cblx0ICovXG5cdHByaXZhdGUgc3RhdGljIF9jdXN0b21NYW5pZmVzdENoZWNrczogKChtYW5pZmVzdENvbnRlbnQ6IE1hbmlmZXN0Q29udGVudFtcInNhcC51aTVcIl0pID0+IHZvaWQpW10gPSBbXTtcblxuXHRfaXNGY2xFbmFibGVkKCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IG9NYW5pZmVzdFVJNSA9IHRoaXMuZ2V0TWFuaWZlc3RFbnRyeShcInNhcC51aTVcIik7XG5cdFx0cmV0dXJuIG9NYW5pZmVzdFVJNT8ucm91dGluZz8uY29uZmlnPy5yb3V0ZXJDbGFzcyA9PT0gTkFWQ09ORi5GQ0wuUk9VVEVSQ0xBU1M7XG5cdH1cblxuXHRzZXRBZGFwdGF0aW9uTW9kZShpc0FkYXB0YXRpb25FbmFibGVkOiBib29sZWFuKTogdm9pZCB7XG5cdFx0dGhpcy5pc0FkYXB0YXRpb25FbmFibGVkID0gaXNBZGFwdGF0aW9uRW5hYmxlZDtcblx0fVxuXG5cdGlzQWRhcHRhdGlvbk1vZGUoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuaXNBZGFwdGF0aW9uRW5hYmxlZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWdpc3RlciBhIGhhbmRsZXIgZm9yIG1vZGlmeWluZyBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24uXG5cdCAqIFRoZSBoYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSBmZWF0dXJlIHRvZ2dsZXMgYXJlIGluaXRpYWxpemVkLlxuXHQgKiBAcGFyYW0gaGFuZGxlciBUaGUgaGFuZGxlciBmdW5jdGlvbiB0aGF0IHdpbGwgbW9kaWZ5IHRoZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb25cblx0ICovXG5cdHN0YXRpYyByZWdpc3RlckNvbmZpZ3VyYXRpb25IYW5kbGVycyhoYW5kbGVyOiAoYWRkaXRpb25hbENvbmZpZ3VyYXRpb246IEFkZGl0aW9uYWxDb25maWd1cmF0aW9uKSA9PiBQcm9taXNlPHZvaWQ+KTogdm9pZCB7XG5cdFx0dGhpcy5jb25maWd1cmF0aW9uSGFuZGxlcnMucHVzaChoYW5kbGVyKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQcm92aWRlcyBhIGhvb2sgdG8gaW5pdGlhbGl6ZSBmZWF0dXJlIHRvZ2dsZXMuXG5cdCAqXG5cdCAqIFRoaXMgaG9vayBpcyBiZWluZyBjYWxsZWQgYnkgdGhlIFNBUCBGaW9yaSBlbGVtZW50cyBBcHBDb21wb25lbnQgYXQgdGhlIHRpbWUgZmVhdHVyZSB0b2dnbGVzIGNhbiBiZSBpbml0aWFsaXplZC5cblx0ICogVG8gY2hhbmdlIHBhZ2UgY29uZmlndXJhdGlvbiwgdXNlIHRoZSB7QGxpbmsgc2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50I2NoYW5nZVBhZ2VDb25maWd1cmF0aW9ufSBtZXRob2QuXG5cdCAqIEBwdWJsaWNcblx0ICogQHJldHVybnMgQSBwcm9taXNlIHdpdGhvdXQgYW55IHZhbHVlIHRvIGFsbG93IGFzeW5jaHJvbm91cyBwcm9jZXNzZXNcblx0ICovXG5cdGFzeW5jIGluaXRpYWxpemVGZWF0dXJlVG9nZ2xlcygpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHQvLyB0aGlzIG1ldGhvZCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBhcHBsaWNhdGlvbnNcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdH1cblxuXHQvKipcblx0ICogQ2hhbmdlcyB0aGUgcGFnZSBjb25maWd1cmF0aW9uIG9mIFNBUCBGaW9yaSBlbGVtZW50cy5cblx0ICpcblx0ICogVGhpcyBtZXRob2QgZW5hYmxlcyB5b3UgdG8gY2hhbmdlIHRoZSBwYWdlIGNvbmZpZ3VyYXRpb24gb2YgU0FQIEZpb3JpIGVsZW1lbnRzLlxuXHQgKiBAcGFyYW0gcGFnZUlkIFRoZSBJRCBvZiB0aGUgcGFnZSBmb3Igd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXMgdG8gYmUgY2hhbmdlZC5cblx0ICogQHBhcmFtIHBhdGggVGhlIHBhdGggaW4gdGhlIHBhZ2Ugc2V0dGluZ3MgZm9yIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGlzIHRvIGJlIGNoYW5nZWQuXG5cdCAqIEBwYXJhbSB2YWx1ZSBUaGUgbmV3IHZhbHVlIG9mIHRoZSBjb25maWd1cmF0aW9uLiBUaGlzIGNvdWxkIGJlIGEgcGxhaW4gdmFsdWUgbGlrZSBhIHN0cmluZywgb3IgYSBCb29sZWFuLCBvciBhIHN0cnVjdHVyZWQgb2JqZWN0LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRjaGFuZ2VQYWdlQ29uZmlndXJhdGlvbihwYWdlSWQ6IHN0cmluZywgcGF0aDogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHZvaWQge1xuXHRcdGNvbnN0IG1hbmlmZXN0ID0gY2hhbmdlQ29uZmlndXJhdGlvbih0aGlzLmdldE1hbmlmZXN0KCksIHBhZ2VJZCwgcGF0aCwgdmFsdWUsIHRydWUsIHRoaXMpIGFzIE1hbmlmZXN0Q29udGVudDtcblx0XHRpZiAoXG5cdFx0XHRwYXRoID09PSBcImFwcC9kaXNhYmxlSW5wdXRBc3Npc3RhbmNlXCIgJiZcblx0XHRcdChtYW5pZmVzdD8uW1wic2FwLmZlXCJdIGFzIFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+Pik/LltcImFwcFwiXT8uW1wiZGlzYWJsZUlucHV0QXNzaXN0YW5jZVwiXSA9PT0gdmFsdWVcblx0XHQpIHtcblx0XHRcdHRoaXMuZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKS5zZXRDYXBhYmlsaXR5KFwiRGlzYWJsZUlucHV0QXNzaXN0YW5jZVwiLCB2YWx1ZSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIENsZWFucyBhbGwgcmVnaXN0ZXJlZCBwYWdlIGNvbmZpZ3VyYXRpb24gY2hhbmdlcy5cblx0ICovXG5cdGNsZWFuUGFnZUNvbmZpZ3VyYXRpb25DaGFuZ2VzKCk6IHZvaWQge1xuXHRcdHRoaXMucGFnZUNvbmZpZ3VyYXRpb25DaGFuZ2VzID0ge307XG5cdH1cblxuXHQvKipcblx0ICogR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBSb3V0ZXJQcm94eS5cblx0ICogQHJldHVybnMgQSBSZWZlcmVuY2UgdG8gdGhlIFJvdXRlclByb3h5XG5cdCAqIEBmaW5hbFxuXHQgKi9cblx0Z2V0Um91dGVyUHJveHkoKTogUm91dGVyUHJveHkge1xuXHRcdHJldHVybiB0aGlzLl9vUm91dGVyUHJveHk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBBcHBTdGF0ZUhhbmRsZXIuXG5cdCAqIEByZXR1cm5zIEEgcmVmZXJlbmNlIHRvIHRoZSBBcHBTdGF0ZUhhbmRsZXJcblx0ICogQGZpbmFsXG5cdCAqL1xuXHRnZXRBcHBTdGF0ZUhhbmRsZXIoKTogQXBwU3RhdGVIYW5kbGVyIHtcblx0XHRyZXR1cm4gdGhpcy5fb0FwcFN0YXRlSGFuZGxlcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIG5hdi9GQ0wgQ29udHJvbGxlci5cblx0ICogQHJldHVybnMgIEEgcmVmZXJlbmNlIHRvIHRoZSBGQ0wgQ29udHJvbGxlclxuXHQgKiBAZmluYWxcblx0ICovXG5cdGdldFJvb3RWaWV3Q29udHJvbGxlcigpOiBSb290Vmlld0Jhc2VDb250cm9sbGVyIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRSb290Q29udHJvbCgpLmdldENvbnRyb2xsZXIoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIE5hdkNvbnRhaW5lciBjb250cm9sIG9yIHRoZSBGQ0wgY29udHJvbC5cblx0ICogQHJldHVybnMgIEEgcmVmZXJlbmNlIHRvIE5hdkNvbnRhaW5lciBjb250cm9sIG9yIHRoZSBGQ0wgY29udHJvbFxuXHQgKiBAZmluYWxcblx0ICovXG5cdGdldFJvb3RDb250YWluZXIoKTogTmF2Q29udGFpbmVyIHwgRmxleGlibGVDb2x1bW5MYXlvdXQge1xuXHRcdHJldHVybiB0aGlzLmdldFJvb3RDb250cm9sKCkuZ2V0Q29udGVudCgpWzBdIGFzIE5hdkNvbnRhaW5lciB8IEZsZXhpYmxlQ29sdW1uTGF5b3V0O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgc3RhcnR1cCBtb2RlIG9mIHRoZSBhcHAuXG5cdCAqIEByZXR1cm5zIFRoZSBzdGFydHVwIG1vZGVcblx0ICovXG5cdGdldFN0YXJ0dXBNb2RlKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMuc3RhcnR1cE1vZGU7XG5cdH1cblxuXHQvKipcblx0ICogU2V0IHRoZSBzdGFydHVwIG1vZGUgZm9yIHRoZSBhcHAgdG8gJ0NyZWF0ZScuXG5cdCAqXG5cdCAqL1xuXHRzZXRTdGFydHVwTW9kZUNyZWF0ZSgpOiB2b2lkIHtcblx0XHR0aGlzLnN0YXJ0dXBNb2RlID0gU3RhcnR1cE1vZGUuQ3JlYXRlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldCB0aGUgc3RhcnR1cCBtb2RlIGZvciB0aGUgYXBwIHRvICdBdXRvQ3JlYXRlJy5cblx0ICpcblx0ICovXG5cdHNldFN0YXJ0dXBNb2RlQXV0b0NyZWF0ZSgpOiB2b2lkIHtcblx0XHR0aGlzLnN0YXJ0dXBNb2RlID0gU3RhcnR1cE1vZGUuQXV0b0NyZWF0ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXQgdGhlIHN0YXJ0dXAgbW9kZSBmb3IgdGhlIGFwcCB0byAnRGVlcGxpbmsnLlxuXHQgKlxuXHQgKi9cblx0c2V0U3RhcnR1cE1vZGVEZWVwbGluaygpOiB2b2lkIHtcblx0XHR0aGlzLnN0YXJ0dXBNb2RlID0gU3RhcnR1cE1vZGUuRGVlcGxpbms7XG5cdH1cblxuXHRpbml0KCk6IHZvaWQge1xuXHRcdGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG5cdFx0aWYgKHBhcmFtcy5oYXMoXCJzYXAtdWkteHgtZmUtc3VwcG9ydFwiKSkge1xuXHRcdFx0c2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdExpYnJhcnkubG9hZCh7IG5hbWU6IFwic2FwLmZlLnRvb2xzXCIgfSk7XG5cdFx0XHR9LCAyMDAwKTtcblx0XHR9XG5cdFx0dGhpcy5faW5pdGlhbGl6ZWRLZWVwZXIgPSBuZXcgUHJvbWlzZUtlZXBlcjx2b2lkPigpO1xuXHRcdHRoaXMuaW5pdGlhbGl6ZWQgPSB0aGlzLl9pbml0aWFsaXplZEtlZXBlci5wcm9taXNlO1xuXHRcdGNvbnN0IHVpTW9kZWwgPSBuZXcgSlNPTk1vZGVsKHtcblx0XHRcdGVkaXRNb2RlOiBsaWJyYXJ5LkVkaXRNb2RlLkRpc3BsYXksXG5cdFx0XHRpc0VkaXRhYmxlOiBmYWxzZSxcblx0XHRcdGRyYWZ0U3RhdHVzOiBsaWJyYXJ5LkRyYWZ0U3RhdHVzLkNsZWFyLFxuXHRcdFx0YnVzeTogZmFsc2UsXG5cdFx0XHRidXN5TG9jYWw6IHt9LFxuXHRcdFx0cGFnZXM6IHt9XG5cdFx0fSk7XG5cdFx0Y29uc3Qgb0ludGVybmFsTW9kZWwgPSBuZXcgSlNPTk1vZGVsKHtcblx0XHRcdHBhZ2VzOiB7fVxuXHRcdH0pO1xuXHRcdC8vIHNldCB0aGUgYmluZGluZyBPbmVXYXkgZm9yIHVpTW9kZWwgdG8gcHJldmVudCBjaGFuZ2VzIGlmIGNvbnRyb2xsZXIgZXh0ZW5zaW9ucyBtb2RpZnkgYSBib3VuZCBwcm9wZXJ0eSBvZiBhIGNvbnRyb2xcblx0XHR1aU1vZGVsLnNldERlZmF1bHRCaW5kaW5nTW9kZShcIk9uZVdheVwiKTtcblx0XHQvLyBmb3IgaW50ZXJuYWwgbW9kZWwgYmluZGluZyBuZWVkcyB0byBiZSB0d28gd2F5XG5cdFx0TW9kZWxIZWxwZXIuZW5oYW5jZVVpSlNPTk1vZGVsKHVpTW9kZWwsIGxpYnJhcnkpO1xuXHRcdE1vZGVsSGVscGVyLmVuaGFuY2VJbnRlcm5hbEpTT05Nb2RlbChvSW50ZXJuYWxNb2RlbCk7XG5cblx0XHR0aGlzLnNldE1vZGVsKHVpTW9kZWwsIFwidWlcIik7XG5cdFx0dGhpcy5zZXRNb2RlbChvSW50ZXJuYWxNb2RlbCwgXCJpbnRlcm5hbFwiKTtcblxuXHRcdHRoaXMuYkluaXRpYWxpemVSb3V0aW5nID0gdGhpcy5iSW5pdGlhbGl6ZVJvdXRpbmcgIT09IHVuZGVmaW5lZCA/IHRoaXMuYkluaXRpYWxpemVSb3V0aW5nIDogdHJ1ZTtcblx0XHR0aGlzLl9vUm91dGVyUHJveHkgPSBuZXcgUm91dGVyUHJveHkoKTtcblx0XHR0aGlzLl9vQXBwU3RhdGVIYW5kbGVyID0gbmV3IEFwcFN0YXRlSGFuZGxlcih0aGlzKTtcblx0XHR0aGlzLl9vRGlhZ25vc3RpY3MgPSBuZXcgRGlhZ25vc3RpY3MoKTtcblxuXHRcdGNvbnN0IG9Nb2RlbCA9IHRoaXMuZ2V0TW9kZWwoKTtcblx0XHRpZiAob01vZGVsPy5pc0E/LjxPRGF0YU1vZGVsPihcInNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YU1vZGVsXCIpKSB7XG5cdFx0XHRNb2RlbEhlbHBlci5lbmhhbmNlT0RhdGFNb2RlbChvTW9kZWwsIHRoaXMpO1xuXHRcdFx0b01vZGVsLnNldFJldHJ5QWZ0ZXJIYW5kbGVyKHRoaXMuaHR0cDUwM1JldHJ5SGFuZGxlci5iaW5kKHRoaXMpKTtcblx0XHRcdHRoaXMuZW50aXR5Q29udGFpbmVyID0gb01vZGVsLmdldE1ldGFNb2RlbCgpLnJlcXVlc3RPYmplY3QoXCIvJEVudGl0eUNvbnRhaW5lci9cIik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIG5vdCBhbiBPRGF0YSB2NCBzZXJ2aWNlXG5cdFx0XHR0aGlzLmVudGl0eUNvbnRhaW5lciA9IFByb21pc2UucmVzb2x2ZSgpO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmdldE1hbmlmZXN0RW50cnkoXCJzYXAuZmVcIik/LmFwcD8uZGlzYWJsZUNvbGxhYm9yYXRpb25EcmFmdCkge1xuXHRcdFx0Ly8gZGlzYWJsZSB0aGUgY29sbGFib3JhdGlvbiBkcmFmdCBnbG9iYWxseSBpbiBjYXNlIHByaXZhdGUgbWFuaWZlc3QgZmxhZyBpcyBzZXRcblx0XHRcdC8vIHRoaXMgYWxsb3dzIGN1c3RvbWVycyB0byBkaXNhYmxlIHRoZSBjb2xsYWJvcmF0aW9uIGRyYWZ0IGluIGNhc2Ugd2UgcnVuIGludG8gaXNzdWVzIHdpdGggdGhlIGZpcnN0IGRlbGl2ZXJ5XG5cdFx0XHQvLyB0aGlzIHdpbGwgYmUgcmVtb3ZlZCB3aXRoIHRoZSBuZXh0IFMvNCByZWxlYXNlXG5cdFx0XHRNb2RlbEhlbHBlci5kaXNhYmxlQ29sbGFib3JhdGlvbkRyYWZ0ID0gdHJ1ZTtcblx0XHR9XG5cblx0XHRjb25zdCBvTWFuaWZlc3RVSTUgPSB0aGlzLmdldE1hbmlmZXN0KClbXCJzYXAudWk1XCJdO1xuXHRcdHRoaXMuY2hlY2tSb3V0aW5nQ29uZmlndXJhdGlvbihvTWFuaWZlc3RVSTUpO1xuXHRcdEFwcENvbXBvbmVudC5fY3VzdG9tTWFuaWZlc3RDaGVja3MuZm9yRWFjaCgoZm5Qcm9jZXNzKSA9PiB7XG5cdFx0XHRyZXR1cm4gZm5Qcm9jZXNzLmNhbGwodGhpcywgb01hbmlmZXN0VUk1KTtcblx0XHR9KTtcblxuXHRcdC8vIHRoZSBpbml0IGZ1bmN0aW9uIGNvbmZpZ3VyZXMgdGhlIHJvdXRpbmcgYWNjb3JkaW5nIHRvIHRoZSBzZXR0aW5ncyBhYm92ZVxuXHRcdC8vIGl0IHdpbGwgY2FsbCB0aGUgY3JlYXRlQ29udGVudCBmdW5jdGlvbiB0byBpbnN0YW50aWF0ZSB0aGUgUm9vdFZpZXcgYW5kIGFkZCBpdCB0byB0aGUgVUlDb21wb25lbnQgYWdncmVnYXRpb25zXG5cblx0XHRzdXBlci5pbml0KCk7XG5cdFx0QXBwQ29tcG9uZW50Lmluc3RhbmNlTWFwW3RoaXMuZ2V0SWQoKV0gPSB0aGlzO1xuXHR9XG5cblx0cHJpdmF0ZSBhc3luYyBodHRwNTAzUmV0cnlIYW5kbGVyKGVycm9yOiBFcnJvciAmIHsgcmV0cnlBZnRlcj86IERhdGUgfSk6IFByb21pc2U8dW5kZWZpbmVkPiB7XG5cdFx0cmV0dXJuIEhUVFA1MDNIYW5kbGVyLmhhbmRsZTUwM0RlbGF5KGVycm9yLCB0aGlzLmdldFJvb3RDb250cm9sKCksIGdldFJlc291cmNlTW9kZWwodGhpcykpO1xuXHR9XG5cblx0cHJpdmF0ZSBjaGVja1JvdXRpbmdDb25maWd1cmF0aW9uKG9NYW5pZmVzdFVJNTogTWFuaWZlc3RDb250ZW50W1wic2FwLnVpNVwiXSk6IHZvaWQge1xuXHRcdGlmIChvTWFuaWZlc3RVSTU/LnJvb3RWaWV3Py52aWV3TmFtZSkge1xuXHRcdFx0Ly8gVGhlIGFwcGxpY2F0aW9uIHNwZWNpZmllZCBhbiBvd24gcm9vdCB2aWV3IGluIHRoZSBtYW5pZmVzdFxuXG5cdFx0XHQvLyBSb290IFZpZXcgd2FzIG1vdmVkIGZyb20gc2FwLmZlLnRlbXBsYXRlcyB0byBzYXAuZmUuY29yZSAtIGtlZXAgaXQgY29tcGF0aWJsZVxuXHRcdFx0aWYgKG9NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZSA9PT0gTkFWQ09ORi5GQ0wuVklFV05BTUVfQ09NUEFUSUJJTElUWSkge1xuXHRcdFx0XHRvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWUgPSBOQVZDT05GLkZDTC5WSUVXTkFNRTtcblx0XHRcdH0gZWxzZSBpZiAob01hbmlmZXN0VUk1LnJvb3RWaWV3LnZpZXdOYW1lID09PSBOQVZDT05GLk5BVkNPTlRBSU5FUi5WSUVXTkFNRV9DT01QQVRJQklMSVRZKSB7XG5cdFx0XHRcdG9NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZSA9IE5BVkNPTkYuTkFWQ09OVEFJTkVSLlZJRVdOQU1FO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoXG5cdFx0XHRcdG9NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZSA9PT0gTkFWQ09ORi5GQ0wuVklFV05BTUUgJiZcblx0XHRcdFx0b01hbmlmZXN0VUk1LnJvdXRpbmc/LmNvbmZpZz8ucm91dGVyQ2xhc3MgPT09IE5BVkNPTkYuRkNMLlJPVVRFUkNMQVNTXG5cdFx0XHQpIHtcblx0XHRcdFx0TG9nLmluZm8oYFJvb3Rjb250YWluZXI6IFwiJHtOQVZDT05GLkZDTC5WSUVXTkFNRX1cIiAtIFJvdXRlcmNsYXNzOiBcIiR7TkFWQ09ORi5GQ0wuUk9VVEVSQ0xBU1N9XCJgKTtcblx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdG9NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZSA9PT0gTkFWQ09ORi5OQVZDT05UQUlORVIuVklFV05BTUUgJiZcblx0XHRcdFx0b01hbmlmZXN0VUk1LnJvdXRpbmc/LmNvbmZpZz8ucm91dGVyQ2xhc3MgPT09IE5BVkNPTkYuTkFWQ09OVEFJTkVSLlJPVVRFUkNMQVNTXG5cdFx0XHQpIHtcblx0XHRcdFx0TG9nLmluZm8oYFJvb3Rjb250YWluZXI6IFwiJHtOQVZDT05GLk5BVkNPTlRBSU5FUi5WSUVXTkFNRX1cIiAtIFJvdXRlcmNsYXNzOiBcIiR7TkFWQ09ORi5OQVZDT05UQUlORVIuUk9VVEVSQ0xBU1N9XCJgKTtcblx0XHRcdH0gZWxzZSBpZiAob01hbmlmZXN0VUk1LnJvb3RWaWV3Py52aWV3TmFtZT8uaW5jbHVkZXMoXCJzYXAuZmUuY29yZS5yb290Vmlld1wiKSkge1xuXHRcdFx0XHR0aHJvdyBFcnJvcihcblx0XHRcdFx0XHRgXFxuV3JvbmcgY29uZmlndXJhdGlvbiBmb3IgdGhlIGNvdXBsZSAocm9vdFZpZXcvcm91dGVyQ2xhc3MpIGluIG1hbmlmZXN0IGZpbGUuXFxuYCArXG5cdFx0XHRcdFx0XHRgQ3VycmVudCB2YWx1ZXMgYXJlIDooJHtvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWV9LyR7XG5cdFx0XHRcdFx0XHRcdG9NYW5pZmVzdFVJNS5yb3V0aW5nPy5jb25maWc/LnJvdXRlckNsYXNzIHx8IFwiPG1pc3Npbmcgcm91dGVyIGNsYXNzPlwiXG5cdFx0XHRcdFx0XHR9KVxcbmAgK1xuXHRcdFx0XHRcdFx0YEV4cGVjdGVkIHZhbHVlcyBhcmUgXFxuYCArXG5cdFx0XHRcdFx0XHRgXFx0IC0gKCR7TkFWQ09ORi5OQVZDT05UQUlORVIuVklFV05BTUV9LyR7TkFWQ09ORi5OQVZDT05UQUlORVIuUk9VVEVSQ0xBU1N9KVxcbmAgK1xuXHRcdFx0XHRcdFx0YFxcdCAtICgke05BVkNPTkYuRkNMLlZJRVdOQU1FfS8ke05BVkNPTkYuRkNMLlJPVVRFUkNMQVNTfSlgXG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRMb2cuaW5mbyhgUm9vdGNvbnRhaW5lcjogXCIke29NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZX1cIiAtIFJvdXRlcmNsYXNzOiBcIiR7TkFWQ09ORi5OQVZDT05UQUlORVIuUk9VVEVSQ0xBU1N9XCJgKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRhc3luYyBvblNlcnZpY2VzU3RhcnRlZChhbGxTZXJ2aWNlczogU2VydmljZTx1bmtub3duPltdKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dGhpcy5fc3RhcnRlZFNlcnZpY2VzID0gYWxsU2VydmljZXM7XG5cdFx0Ly8gRXhlY3V0ZSBhbGwgcmVnaXN0ZXJlZCBjb25maWd1cmF0aW9uIGhhbmRsZXJzXG5cdFx0YXdhaXQgUHJvbWlzZS5hbGwoQXBwQ29tcG9uZW50LmNvbmZpZ3VyYXRpb25IYW5kbGVycy5tYXAoYXN5bmMgKGhhbmRsZXIpID0+IGhhbmRsZXIodGhpcy5hZGRpdGlvbmFsQ29uZmlndXJhdGlvbikpKTtcblx0XHRhd2FpdCB0aGlzLmluaXRpYWxpemVGZWF0dXJlVG9nZ2xlcygpO1xuXHRcdGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcblx0XHRcdEFwcENvbXBvbmVudC5pbnN0YW5jZURlcGVuZGVudFByb2Nlc3Nlcy5tYXAoYXN5bmMgKGZuUHJvY2VzcykgPT4ge1xuXHRcdFx0XHRyZXR1cm4gZm5Qcm9jZXNzLmNhbGwobnVsbCwgdGhpcyk7XG5cdFx0XHR9KVxuXHRcdCk7XG5cblx0XHQvL3JvdXRlciBtdXN0IGJlIHN0YXJ0ZWQgb25jZSB0aGUgcm9vdGNvbnRhaW5lciBpcyBpbml0aWFsaXplZFxuXHRcdC8vc3RhcnRpbmcgb2YgdGhlIHJvdXRlclxuXHRcdGNvbnN0IGZpbmFsaXplZFJvdXRpbmdJbml0aWFsaXphdGlvbiA9ICgpOiB2b2lkID0+IHtcblx0XHRcdHRoaXMuZW50aXR5Q29udGFpbmVyXG5cdFx0XHRcdC50aGVuKGFzeW5jICgpID0+IHtcblx0XHRcdFx0XHRpZiAodGhpcy5nZXRSb290Vmlld0NvbnRyb2xsZXIoKS5hdHRhY2hSb3V0ZU1hdGNoZXJzKSB7XG5cdFx0XHRcdFx0XHR0aGlzLmdldFJvb3RWaWV3Q29udHJvbGxlcigpLmF0dGFjaFJvdXRlTWF0Y2hlcnMoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhpcy5nZXRSb3V0ZXIoKS5pbml0aWFsaXplKCk7XG5cdFx0XHRcdFx0dGhpcy5nZXRSb3V0ZXJQcm94eSgpLmluaXQodGhpcywgdGhpcy5faXNGY2xFbmFibGVkKCkpO1xuXG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMuZ2V0VmFsdWVIZWxwSGlzdG9yeVNlcnZpY2UoKS5yZWdpc3RlclNoZWxsSG9vaygpO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IG9SZXNvdXJjZUJ1bmRsZSA9IExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29yZVwiKSE7XG5cblx0XHRcdFx0XHR0aGlzLmdldFJvb3RWaWV3Q29udHJvbGxlcigpLmRpc3BsYXlFcnJvclBhZ2UoXG5cdFx0XHRcdFx0XHRvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfQVBQX0NPTVBPTkVOVF9TQVBGRV9BUFBTVEFSVF9URUNITklDQUxfSVNTVUVTXCIpLFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0aXRsZTogb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX0NPTU1PTl9TQVBGRV9FUlJPUlwiKSxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IGVycm9yLm1lc3NhZ2Vcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9KTtcblx0XHR9O1xuXG5cdFx0aWYgKHRoaXMuYkluaXRpYWxpemVSb3V0aW5nKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5nZXRSb3V0aW5nU2VydmljZSgpXG5cdFx0XHRcdC5pbml0aWFsaXplUm91dGluZygpXG5cdFx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0XHRpZiAodGhpcy5nZXRSb290Vmlld0NvbnRyb2xsZXIoKSkge1xuXHRcdFx0XHRcdFx0ZmluYWxpemVkUm91dGluZ0luaXRpYWxpemF0aW9uKCk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHRoaXMuZ2V0Um9vdENvbnRyb2woKS5hdHRhY2hBZnRlckluaXQoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRmaW5hbGl6ZWRSb3V0aW5nSW5pdGlhbGl6YXRpb24oKTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLl9pbml0aWFsaXplZEtlZXBlci5yZXNvbHZlKCk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKGVycjogRXJyb3IpIHtcblx0XHRcdFx0XHRMb2cuZXJyb3IoYGNhbm5vdCBjYW5ub3QgaW5pdGlhbGl6ZSByb3V0aW5nOiAke2Vyci50b1N0cmluZygpfWApO1xuXHRcdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5faW5pdGlhbGl6ZWRLZWVwZXIucmVzb2x2ZSgpO1xuXHRcdH1cblx0fVxuXG5cdGV4aXQoKTogdm9pZCB7XG5cdFx0dGhpcy5fc3RhcnRlZFNlcnZpY2VzID0gW107XG5cdFx0dGhpcy5fb0FwcFN0YXRlSGFuZGxlci5kZXN0cm95KCk7XG5cdFx0dGhpcy5fb1JvdXRlclByb3h5LmRlc3Ryb3koKTtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdGRlbGV0ZSB0aGlzLl9vQXBwU3RhdGVIYW5kbGVyO1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0ZGVsZXRlIHRoaXMuX29Sb3V0ZXJQcm94eTtcblx0XHRkZWxldGVNb2RlbENhY2hlRGF0YSh0aGlzLmdldE1ldGFNb2RlbCgpKTtcblx0XHR0aGlzLmdldE1vZGVsKFwidWlcIikuZGVzdHJveSgpO1xuXHRcdHRoaXMuY2xlYW5QYWdlQ29uZmlndXJhdGlvbkNoYW5nZXMoKTtcblx0fVxuXG5cdGdldE1ldGFNb2RlbCgpOiBPRGF0YU1ldGFNb2RlbCB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKTtcblx0fVxuXG5cdGdldERpYWdub3N0aWNzKCk6IERpYWdub3N0aWNzIHtcblx0XHRyZXR1cm4gdGhpcy5fb0RpYWdub3N0aWNzO1xuXHR9XG5cblx0ZGVzdHJveShiU3VwcHJlc3NJbnZhbGlkYXRlPzogYm9vbGVhbik6IHZvaWQge1xuXHRcdHRoaXMuaXNFeGl0aW5nID0gdHJ1ZTtcblxuXHRcdC8vIExFQUtTLCB3aXRoIHdvcmthcm91bmQgZm9yIHNvbWUgRmxleCAvIE1EQyBpc3N1ZVxuXHRcdHRyeSB7XG5cdFx0XHRkZWxldGUgQXBwQ29tcG9uZW50Lmluc3RhbmNlTWFwW3RoaXMuZ2V0SWQoKV07XG5cblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcblx0XHRcdC8vIEB0cy1pZ25vcmVcblx0XHRcdGRlbGV0ZSAod2luZG93IGFzIHVua25vd24pLl9yb3V0aW5nO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdExvZy5pbmZvKGUgYXMgc3RyaW5nKTtcblx0XHR9XG5cblx0XHQvL1dPUktBUk9VTkQgZm9yIHN0aWNreSBkaXNjYXJkIHJlcXVlc3QgOiBkdWUgdG8gYXN5bmMgY2FsbGJhY2ssIHJlcXVlc3QgdHJpZ2dlcmVkIGJ5IHRoZSBleGl0QXBwbGljYXRpb24gd2lsbCBiZSBzZW5kIGFmdGVyIHRoZSBVSUNvbXBvbmVudC5wcm90b3R5cGUuZGVzdHJveVxuXHRcdC8vc28gd2UgbmVlZCB0byBjb3B5IHRoZSBSZXF1ZXN0b3IgaGVhZGVycyBhcyBpdCB3aWxsIGJlIGRlc3Ryb3lcblxuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0Y29uc3Qgb01haW5Nb2RlbCA9IHRoaXMub01vZGVsc1t1bmRlZmluZWRdO1xuXHRcdGxldCBvSGVhZGVycztcblx0XHRpZiAob01haW5Nb2RlbD8ub1JlcXVlc3Rvcikge1xuXHRcdFx0b0hlYWRlcnMgPSBPYmplY3QuYXNzaWduKHt9LCBvTWFpbk1vZGVsLm9SZXF1ZXN0b3IubUhlYWRlcnMpO1xuXHRcdH1cblxuXHRcdC8vIEFzIHdlIG5lZWQgdG8gY2xlYW51cCB0aGUgYXBwbGljYXRpb24gLyBoYW5kbGUgdGhlIGRpcnR5IG9iamVjdCB3ZSBuZWVkIHRvIGNhbGwgb3VyIGNsZWFudXAgYmVmb3JlIHRoZSBtb2RlbHMgYXJlIGRlc3Ryb3llZFxuXHRcdHRoaXMuZ2V0Um91dGluZ1NlcnZpY2UoKT8uYmVmb3JlRXhpdD8uKCk7XG5cdFx0dGhpcy51bnJlZ2lzdGVyQ2FsbGJhY2tzKCk7XG5cdFx0c3VwZXIuZGVzdHJveShiU3VwcHJlc3NJbnZhbGlkYXRlKTtcblx0XHRpZiAob0hlYWRlcnMgJiYgb01haW5Nb2RlbC5vUmVxdWVzdG9yKSB7XG5cdFx0XHRvTWFpbk1vZGVsLm9SZXF1ZXN0b3IubUhlYWRlcnMgPSBvSGVhZGVycztcblx0XHR9XG5cdH1cblxuXHRnZXRSb3V0aW5nU2VydmljZSgpOiBSb3V0aW5nU2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIFJvdXRpbmdTZXJ2aWNlOyAvLyBvdmVycmlkZW4gYXQgcnVudGltZVxuXHR9XG5cblx0Z2V0U2hlbGxTZXJ2aWNlcygpOiBJU2hlbGxTZXJ2aWNlcyB7XG5cdFx0cmV0dXJuIHt9IGFzIElTaGVsbFNlcnZpY2VzOyAvLyBvdmVycmlkZW4gYXQgcnVudGltZVxuXHR9XG5cblx0Z2V0TmF2aWdhdGlvblNlcnZpY2UoKTogTmF2aWdhdGlvblNlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBOYXZpZ2F0aW9uU2VydmljZTsgLy8gb3ZlcnJpZGVuIGF0IHJ1bnRpbWVcblx0fVxuXG5cdGdldFNpZGVFZmZlY3RzU2VydmljZSgpOiBTaWRlRWZmZWN0c1NlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBTaWRlRWZmZWN0c1NlcnZpY2U7XG5cdH1cblxuXHRnZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcygpOiBFbnZpcm9ubWVudENhcGFiaWxpdGllc1NlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBFbnZpcm9ubWVudENhcGFiaWxpdGllc1NlcnZpY2U7XG5cdH1cblxuXHRnZXRDb2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2UoKTogQ29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlIHtcblx0XHRyZXR1cm4ge30gYXMgQ29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlO1xuXHR9XG5cblx0Z2V0Vmlld1ByZWxvYWRlclNlcnZpY2UoKTogVmlld1ByZWxvYWRlclNlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBWaWV3UHJlbG9hZGVyU2VydmljZTtcblx0fVxuXG5cdGdldENvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2UoKTogQ29sbGFib3JhdGl2ZVRvb2xzU2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIENvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2U7XG5cdH1cblxuXHRnZXRDb2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlKCk6IENvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBDb2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlO1xuXHR9XG5cblx0Z2V0Q29udGV4dFNoYXJpbmdTZXJ2aWNlKCk6IENvbnRleHRTaGFyaW5nU2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIENvbnRleHRTaGFyaW5nU2VydmljZTtcblx0fVxuXG5cdGdldFRlbGVtZXRyeVNlcnZpY2UoKTogVGVsZW1ldHJ5U2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIFRlbGVtZXRyeVNlcnZpY2U7XG5cdH1cblxuXHRnZXRWYWx1ZUhlbHBIaXN0b3J5U2VydmljZSgpOiBWYWx1ZUhlbHBIaXN0b3J5U2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIFZhbHVlSGVscEhpc3RvcnlTZXJ2aWNlO1xuXHR9XG5cblx0Z2V0SW5saW5lRWRpdFNlcnZpY2UoKTogSW5saW5lRWRpdFNlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBJbmxpbmVFZGl0U2VydmljZTtcblx0fVxuXG5cdGFzeW5jIGdldFN0YXJ0dXBQYXJhbWV0ZXJzKCk6IFByb21pc2U8U3RhcnR1cFBhcmFtZXRlcnM+IHtcblx0XHRjb25zdCBvQ29tcG9uZW50RGF0YSA9IHRoaXMuZ2V0Q29tcG9uZW50RGF0YSgpO1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKG9Db21wb25lbnREYXRhICYmIG9Db21wb25lbnREYXRhLnN0YXJ0dXBQYXJhbWV0ZXJzKSB8fCB7fSk7XG5cdH1cblxuXHRyZXN0b3JlKCk6IHZvaWQge1xuXHRcdC8vIGNhbGxlZCBieSBGTFAgd2hlbiBhcHAgc2FwLWtlZXAtYWxpdmUgaXMgZW5hYmxlZCBhbmQgYXBwIGlzIHJlc3RvcmVkXG5cdFx0Zm9yIChjb25zdCBzdGFydGVkU2VydmljZSBvZiB0aGlzLl9zdGFydGVkU2VydmljZXMpIHtcblx0XHRcdHN0YXJ0ZWRTZXJ2aWNlLm9uUmVzdG9yZT8uKCk7XG5cdFx0fVxuXHRcdHRoaXMuZ2V0Um9vdFZpZXdDb250cm9sbGVyKCkudmlld1N0YXRlLm9uUmVzdG9yZSgpO1xuXG5cdFx0Ly8gUmVzZXQgYWxsIHZhbHVlcyBpbiB2ZXJzaW9uQWN0aXZhdGlvblN0YXR1cyB0byBmYWxzZVxuXHRcdEFwcFN0YXRlSGFuZGxlci5yZXNldFZlcnNpb25BY3RpdmF0aW9uU3RhdHVzKCk7XG5cblx0XHR0aGlzLnN1c3BlbmRlZCA9IGZhbHNlO1xuXHR9XG5cblx0c3VzcGVuZCgpOiB2b2lkIHtcblx0XHQvLyBjYWxsZWQgYnkgRkxQIHdoZW4gYXBwIHNhcC1rZWVwLWFsaXZlIGlzIGVuYWJsZWQgYW5kIGFwcCBpcyBzdXNwZW5kZWRcblx0XHRmb3IgKGNvbnN0IHN0YXJ0ZWRTZXJ2aWNlIG9mIHRoaXMuX3N0YXJ0ZWRTZXJ2aWNlcykge1xuXHRcdFx0c3RhcnRlZFNlcnZpY2Uub25TdXNwZW5kPy4oKTtcblx0XHR9XG5cdFx0dGhpcy5nZXRSb290Vmlld0NvbnRyb2xsZXIoKS52aWV3U3RhdGUub25TdXNwZW5kKCk7XG5cblx0XHR0aGlzLnN1c3BlbmRlZCA9IHRydWU7XG5cdH1cblxuXHRpc1N1c3BlbmRlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5zdXNwZW5kZWQ7XG5cdH1cblxuXHRhc3luYyBpc0FwcENvbXBvbmVudEJ1c3koKSA6IFByb21pc2U8dm9pZD4ge1xuXHRcdHJldHVybiB0aGlzLmRpc2NhcmRQcm9taXNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIG5hdmlnYXRlQmFzZWRPblN0YXJ0dXBQYXJhbWV0ZXIgZnVuY3Rpb24gaXMgYSBwdWJsaWMgYXBpIHRoYXQgYWN0cyBhcyBhIHdyYXBwZXIgdG8gX21hbmFnZURlZXBMaW5rU3RhcnR1cCBmdW5jdGlvbi4gSXQgcGFzc2VzIHRoZSBzdGFydHVwIHBhcmFtZXRlcnMgZnVydGhlciB0byBfbWFuYWdlRGVlcExpbmtTdGFydHVwIGZ1bmN0aW9uXG5cdCAqIEBwYXJhbSBzdGFydHVwUGFyYW1ldGVycyBEZWZpbmVzIHRoZSBzdGFydHVwIHBhcmFtZXRlcnMgd2hpY2ggaXMgZnVydGhlciBwYXNzZWQgdG8gX21hbmFnZURlZXBMaW5rU3RhcnR1cCBmdW5jdGlvbi5cblx0ICovXG5cblx0YXN5bmMgbmF2aWdhdGVCYXNlZE9uU3RhcnR1cFBhcmFtZXRlcihzdGFydHVwUGFyYW1ldGVyczogU3RhcnR1cFBhcmFtZXRlcnMgfCBudWxsIHwgdW5kZWZpbmVkKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dHJ5IHtcblx0XHRcdGlmICghQnVzeUxvY2tlci5pc0xvY2tlZCh0aGlzLmdldE1vZGVsKFwidWlcIikpKSB7XG5cdFx0XHRcdGlmICghc3RhcnR1cFBhcmFtZXRlcnMpIHtcblx0XHRcdFx0XHRzdGFydHVwUGFyYW1ldGVycyA9IG51bGw7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3Qgcm91dGluZ1NlcnZpY2UgPSB0aGlzLmdldFJvdXRpbmdTZXJ2aWNlKCk7XG5cdFx0XHRcdGF3YWl0IHJvdXRpbmdTZXJ2aWNlLl9tYW5hZ2VEZWVwTGlua1N0YXJ0dXAoc3RhcnR1cFBhcmFtZXRlcnMpO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGV4Y2VwdGlvbjogdW5rbm93bikge1xuXHRcdFx0TG9nLmVycm9yKGV4Y2VwdGlvbiBhcyBzdHJpbmcpO1xuXHRcdFx0QnVzeUxvY2tlci51bmxvY2sodGhpcy5nZXRNb2RlbChcInVpXCIpKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogVXNlZCB0byBhbGxvdyBkaXNhYmxpbmcgdGhlIENvbGxhYm9yYXRpb24gTWFuYWdlciBpbnRlZ3JhdGlvbiBmb3IgdGhlIE9WUCB1c2UgY2FzZS5cblx0ICogQHJldHVybnMgV2hldGhlciB0aGUgY29sbGFib3JhdGlvbiBtYW5hZ2VyIHNlcnZpY2UgaXMgYWN0aXZlLlxuXHQgKi9cblx0aXNDb2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2VFbmFibGVkKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlZ2lzdGVyIHByb2Nlc3NlcyB0aGF0IG5lZWQgdG8gYmUgcnVuIGZvciBldmVyeSBpbnN0YW5jZSBwcmlvciB0byBzdGFydHVwLlxuXHQgKiBAcGFyYW0gZm5Qcm9jZXNzIEZ1bmN0aW9uIHRoYXQgaG9sZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIHByb2Nlc3MuXG5cdCAqXG5cdCAqIFRoZSByZWdpc3RlcmVkIHByb2Nlc3MgY2FuIGJlIGFuIGFzeW5jaHJvbm91cyBwcm9jZXNzLlxuXHQgKiBJdCBzaGFsbCBiZSBjYWxsZWQgd2l0aCB0aGUgQXBwQ29tcG9uZW50IGluc3RhbmNlIGFzIGEgcGFyYW1ldGVyIGJlZm9yZSBzdGFydHVwLlxuXHQgKi9cblx0c3RhdGljIHJlZ2lzdGVySW5zdGFuY2VEZXBlbmRlbnRQcm9jZXNzRm9yU3RhcnRVcChmblByb2Nlc3M6IChhcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudCkgPT4gUHJvbWlzZTx2b2lkPik6IHZvaWQge1xuXHRcdHRoaXMuaW5zdGFuY2VEZXBlbmRlbnRQcm9jZXNzZXMucHVzaChmblByb2Nlc3MpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlZ2lzdGVycyBjdXN0b20gaW5pdGlhbGl6YXRpb24gY2hlY2tzIHRoYXQgYXJlIHJ1biBiZWZvcmUgdGhlIGNvbXBvbmVudCBpcyBpbml0aWFsaXplZC5cblx0ICogVGhpcyBpcyB1c2VmdWwgZm9yIHJ1bm5pbmcgY2hlY2tzIHRoYXQgYXJlIHNwZWNpZmljIHRvIGEgbGlicmFyeS5cblx0ICogVGhlc2UgY2hlY2tzIGFyZSBydW4gYmVmb3JlIHRoZSBjb21wb25lbnQgaXMgaW5pdGlhbGl6ZWQgYW5kIGJlZm9yZSB0aGUgbWFuaWZlc3QgaXMgbWVyZ2VkLlxuXHQgKiBAcGFyYW0gZm5Qcm9jZXNzXG5cdCAqL1xuXHRzdGF0aWMgcmVnaXN0ZXJJbml0Q2hlY2tzKGZuUHJvY2VzczogKG1hbmlmZXN0Q29udGVudDogTWFuaWZlc3RDb250ZW50W1wic2FwLnVpNVwiXSkgPT4gdm9pZCk6IHZvaWQge1xuXHRcdHRoaXMuX2N1c3RvbU1hbmlmZXN0Q2hlY2tzLnB1c2goZm5Qcm9jZXNzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWdpc3RlcnMgdGhlIGNhbGxiYWNrcyByZWxhdGVkIHRvIGEgc3RpY2t5IGVkaXQgc2Vzc2lvbi5cblx0ICogQHBhcmFtIGRpcnR5U3RhdGVQcm92aWRlckNhbGxiYWNrXG5cdCAqIEBwYXJhbSBkaXNjYXJkQWZ0ZXJOYXZpZ2F0aW9uQ2FsbGJhY2tcblx0ICogQHBhcmFtIHNlc3Npb25UaW1lb3V0Q2FsbGJhY2tcblx0ICovXG5cdHJlZ2lzdGVyQ2FsbGJhY2tzKFxuXHRcdGRpcnR5U3RhdGVQcm92aWRlckNhbGxiYWNrOiBGdW5jdGlvbixcblx0XHRkaXNjYXJkQWZ0ZXJOYXZpZ2F0aW9uQ2FsbGJhY2s6IEZ1bmN0aW9uLFxuXHRcdHNlc3Npb25UaW1lb3V0Q2FsbGJhY2s/OiBGdW5jdGlvblxuXHQpOiB2b2lkIHtcblx0XHR0aGlzLmRpcnR5U3RhdGVQcm92aWRlckNhbGxiYWNrID0gZGlydHlTdGF0ZVByb3ZpZGVyQ2FsbGJhY2s7XG5cdFx0dGhpcy5nZXRTaGVsbFNlcnZpY2VzKCkucmVnaXN0ZXJEaXJ0eVN0YXRlUHJvdmlkZXIoZGlydHlTdGF0ZVByb3ZpZGVyQ2FsbGJhY2spO1xuXG5cdFx0aWYgKHNlc3Npb25UaW1lb3V0Q2FsbGJhY2spIHtcblx0XHRcdHRoaXMuc3RpY2t5U2Vzc2lvblRpbWVvdXRDYWxsYmFjayA9IHNlc3Npb25UaW1lb3V0Q2FsbGJhY2s7XG5cdFx0XHR0aGlzLmdldE1vZGVsKCkuYXR0YWNoU2Vzc2lvblRpbWVvdXQoc2Vzc2lvblRpbWVvdXRDYWxsYmFjayk7XG5cdFx0fVxuXG5cdFx0dGhpcy5kaXNjYXJkQWZ0ZXJOYXZpZ2F0aW9uQ2FsbGJhY2sgPSBkaXNjYXJkQWZ0ZXJOYXZpZ2F0aW9uQ2FsbGJhY2s7XG5cdFx0dGhpcy5fcm91dGVNYXRjaEhhbmRsZXIgPSAoKTogdm9pZCA9PiB7XG5cdFx0XHRpZiAodGhpcy5kaXNjYXJkQWZ0ZXJOYXZpZ2F0aW9uQ2FsbGJhY2spIHtcblx0XHRcdFx0dGhpcy5kaXNjYXJkUHJvbWlzZSA9IHRoaXMuZGlzY2FyZEFmdGVyTmF2aWdhdGlvbkNhbGxiYWNrKCk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHR0aGlzLmdldFJvdXRpbmdTZXJ2aWNlKCkuYXR0YWNoUm91dGVNYXRjaGVkKHt9LCB0aGlzLl9yb3V0ZU1hdGNoSGFuZGxlcik7XG5cdH1cblxuXHQvKipcblx0ICogVW5yZWdpc3RlcnMgdGhlIGNhbGxiYWNrcyByZWxhdGVkIHRvIGEgc3RpY2t5IGVkaXQgc2Vzc2lvbi5cblx0ICovXG5cdHVucmVnaXN0ZXJDYWxsYmFja3MoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuZGlydHlTdGF0ZVByb3ZpZGVyQ2FsbGJhY2spIHtcblx0XHRcdHRoaXMuZ2V0U2hlbGxTZXJ2aWNlcygpLmRlcmVnaXN0ZXJEaXJ0eVN0YXRlUHJvdmlkZXIodGhpcy5kaXJ0eVN0YXRlUHJvdmlkZXJDYWxsYmFjayk7XG5cdFx0XHR0aGlzLmRpcnR5U3RhdGVQcm92aWRlckNhbGxiYWNrID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRpZiAodGhpcy5zdGlja3lTZXNzaW9uVGltZW91dENhbGxiYWNrICYmIHRoaXMuZ2V0TW9kZWwoKSkge1xuXHRcdFx0dGhpcy5nZXRNb2RlbCgpLmRldGFjaFNlc3Npb25UaW1lb3V0KHRoaXMuc3RpY2t5U2Vzc2lvblRpbWVvdXRDYWxsYmFjayk7XG5cdFx0XHR0aGlzLnN0aWNreVNlc3Npb25UaW1lb3V0Q2FsbGJhY2sgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGlmICh0aGlzLl9yb3V0ZU1hdGNoSGFuZGxlcikge1xuXHRcdFx0dGhpcy5nZXRSb3V0aW5nU2VydmljZSgpLmRldGFjaFJvdXRlTWF0Y2hlZCh0aGlzLl9yb3V0ZU1hdGNoSGFuZGxlcik7XG5cdFx0XHR0aGlzLl9yb3V0ZU1hdGNoSGFuZGxlciA9IHVuZGVmaW5lZDtcblx0XHRcdHRoaXMuZGlzY2FyZEFmdGVyTmF2aWdhdGlvbkNhbGxiYWNrID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgdGhlIGNvbXBvbmVudCBpcyBlbWJlZGRlZCBpbiBhbm90aGVyIGFwcGxpY2F0aW9uLlxuXHQgKiBUaGlzIGlzIGRldGVybWluZWQgYnkgY2hlY2tpbmcgaWYgdGhlIGNvbXBvbmVudCBkYXRhIGNvbnRhaW5zIGEgYGZlRW52aXJvbm1lbnRgIG9iamVjdC5cblx0ICogVGhpcyBpcyBzZXQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGVtYmVkZGVkIGluIE15IEluYm94LlxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBjb21wb25lbnQgaXMgZW1iZWRkZWQsIGZhbHNlIG90aGVyd2lzZS5cblx0ICovXG5cdF9pc0VtYmVkZGVkKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiAhIXRoaXMuZ2V0Q29tcG9uZW50RGF0YSgpLmZlRW52aXJvbm1lbnQ7XG5cdH1cbn1cblxuaW50ZXJmYWNlIEFwcENvbXBvbmVudCBleHRlbmRzIFVJQ29tcG9uZW50IHtcblx0aXNBZGFwdGF0aW9uTW9kZSgpOiBib29sZWFuO1xuXHRnZXRNYW5pZmVzdCgpOiBNYW5pZmVzdENvbnRlbnQ7XG5cdGdldE1hbmlmZXN0RW50cnkoZW50cnk6IFwic2FwLmFwcFwiKTogTWFuaWZlc3RDb250ZW50W1wic2FwLmFwcFwiXTtcblx0Z2V0TWFuaWZlc3RFbnRyeShlbnRyeTogXCJzYXAudWk1XCIpOiBNYW5pZmVzdENvbnRlbnRbXCJzYXAudWk1XCJdO1xuXHRfZ2V0TWFuaWZlc3RFbnRyeShlbnRyeTogXCJzYXAudWk1XCIsIG1lcmdlZDogYm9vbGVhbik6IE1hbmlmZXN0Q29udGVudFtcInNhcC51aTVcIl07XG5cdGdldE1hbmlmZXN0RW50cnkoZW50cnk6IFwic2FwLnVpXCIpOiBNYW5pZmVzdENvbnRlbnRbXCJzYXAudWlcIl07XG5cdGdldE1hbmlmZXN0RW50cnkoZW50cnk6IFwic2FwLmZlXCIpOiBNYW5pZmVzdENvbnRlbnRbXCJzYXAuZmVcIl0gfCB1bmRlZmluZWQ7XG5cdGdldE1hbmlmZXN0RW50cnkoZW50cnk6IFwic2FwLmZpb3JpXCIpOiBNYW5pZmVzdENvbnRlbnRbXCJzYXAuZmlvcmlcIl07XG5cdGdldENvbXBvbmVudERhdGEoKTogQ29tcG9uZW50RGF0YTtcblx0Z2V0Um9vdENvbnRyb2woKToge1xuXHRcdGdldENvbnRyb2xsZXIoKTogUm9vdFZpZXdCYXNlQ29udHJvbGxlcjtcblx0fSAmIFZpZXc7XG5cdGdldE1vZGVsKCk6IE9EYXRhTW9kZWw7XG5cdGdldE1vZGVsKG5hbWU6IFwidWlcIik6IEpTT05Nb2RlbDtcblx0Z2V0TW9kZWwobmFtZTogc3RyaW5nKTogTW9kZWwgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEFwcENvbXBvbmVudDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBMkNBO0FBQ0E7QUFDQTs7RUFzQkEsTUFBTUEsV0FBVyxHQUFHQyxPQUFPLENBQUNELFdBQVc7RUFDdkMsTUFBTUUsT0FBTyxHQUFHO0lBQ2ZDLEdBQUcsRUFBRTtNQUNKQyxRQUFRLEVBQUUsMEJBQTBCO01BQ3BDQyxzQkFBc0IsRUFBRSx5Q0FBeUM7TUFDakVDLFdBQVcsRUFBRTtJQUNkLENBQUM7SUFDREMsWUFBWSxFQUFFO01BQ2JILFFBQVEsRUFBRSxtQ0FBbUM7TUFDN0NDLHNCQUFzQixFQUFFLGtEQUFrRDtNQUMxRUMsV0FBVyxFQUFFO0lBQ2Q7RUFDRCxDQUFDO0VBWUQ7RUFDQSxNQUFNRSxRQUFRLEdBQUdDLE1BQU07RUFLdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBWEEsSUE2R01DLFlBQVksSUFBQUMsSUFBQSxHQWpHakJDLGNBQWMsQ0FBQywwQkFBMEIsRUFBRTtJQUMzQ0MsTUFBTSxFQUFFO01BQ1BDLFNBQVMsRUFBRTtJQUNaLENBQUM7SUFDREMsUUFBUSxFQUFFO01BQ1RDLFFBQVEsRUFBRSxPQUFPO01BQ2pCLFNBQVMsRUFBRTtRQUNWQyxRQUFRLEVBQUU7VUFDVEMsb0JBQW9CLEVBQUU7WUFDckJDLFdBQVcsRUFBRSwyQ0FBMkM7WUFDeERDLE9BQU8sRUFBRTtVQUNWLENBQUM7VUFDREMsYUFBYSxFQUFFO1lBQ2RGLFdBQVcsRUFBRSwyQ0FBMkM7WUFDeERDLE9BQU8sRUFBRSxTQUFTO1lBQ2xCRSxRQUFRLEVBQUU7Y0FDVEMsT0FBTyxFQUFFLENBQUMsMkJBQTJCLENBQUM7Y0FDdENDLFNBQVMsRUFBRTtZQUNaO1VBQ0QsQ0FBQztVQUNEQyxjQUFjLEVBQUU7WUFD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LG1CQUFtQkEsQ0FBQSxFQUFTO01BQzNCLElBQUksSUFBSSxDQUFDa0MsMEJBQTBCLEVBQUU7UUFDcEMsSUFBSSxDQUFDakMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDeUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDUiwwQkFBMEIsQ0FBQztRQUNyRixJQUFJLENBQUNBLDBCQUEwQixHQUFHMUcsU0FBUztNQUM1QztNQUNBLElBQUksSUFBSSxDQUFDOEcsNEJBQTRCLElBQUksSUFBSSxDQUFDeEcsUUFBUSxDQUFDLENBQUMsRUFBRTtRQUN6RCxJQUFJLENBQUNBLFFBQVEsQ0FBQyxDQUFDLENBQUM2RyxvQkFBb0IsQ0FBQyxJQUFJLENBQUNMLDRCQUE0QixDQUFDO1FBQ3ZFLElBQUksQ0FBQ0EsNEJBQTRCLEdBQUc5RyxTQUFTO01BQzlDO01BQ0EsSUFBSSxJQUFJLENBQUNnSCxrQkFBa0IsRUFBRTtRQUM1QixJQUFJLENBQUM1RCxpQkFBaUIsQ0FBQyxDQUFDLENBQUNnRSxrQkFBa0IsQ0FBQyxJQUFJLENBQUNKLGtCQUFrQixDQUFDO1FBQ3BFLElBQUksQ0FBQ0Esa0JBQWtCLEdBQUdoSCxTQUFTO1FBQ25DLElBQUksQ0FBQzJHLDhCQUE4QixHQUFHM0csU0FBUztNQUNoRDtJQUNEOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUxDO0lBQUF4RSxNQUFBLENBTUE2TCxXQUFXLEdBQVgsU0FBQUEsV0FBV0EsQ0FBQSxFQUFZO01BQ3RCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQ2hDLGdCQUFnQixDQUFDLENBQUMsQ0FBQ2lDLGFBQWE7SUFDL0MsQ0FBQztJQUFBLE9BQUFsUSxZQUFBO0VBQUEsRUFybUJ5Qm1RLFdBQVcsR0FBQXZOLGFBQUEsQ0FJOUJxSCxXQUFXLEdBQWlDLENBQUMsQ0FBQyxFQUFBckgsYUFBQSxDQW1CdENrQyxxQkFBcUIsR0FBNEUsRUFBRSxFQUFBbEMsYUFBQSxDQXlDbkdvSSwwQkFBMEIsR0FBc0QsRUFBRSxFQUFBcEksYUFBQSxDQUtsRmtILHFCQUFxQixHQUE4RCxFQUFFLEVBQUFsSCxhQUFBLEdBQUFXLFdBQUEsR0FBQTZNLHlCQUFBLENBQUF6TixPQUFBLENBQUEwQixTQUFBLHNEQUFBN0IsS0FBQTtJQUFBNk4sWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQSxXQUFBQSxDQUFBO01BQUEsT0FuRWxELElBQUk7SUFBQTtFQUFBLElBQUE3TixPQUFBLE1BQUFELE1BQUE7RUFBQSxPQXduQnhDMUMsWUFBWTtBQUFBIiwiaWdub3JlTGlzdCI6W119
|
|
733
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTdGFydHVwTW9kZSIsImxpYnJhcnkiLCJOQVZDT05GIiwiRkNMIiwiVklFV05BTUUiLCJWSUVXTkFNRV9DT01QQVRJQklMSVRZIiwiUk9VVEVSQ0xBU1MiLCJOQVZDT05UQUlORVIiLCJfbVJvdXRlciIsIlJvdXRlciIsIkFwcENvbXBvbmVudCIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsImNvbmZpZyIsImZ1bGxXaWR0aCIsIm1hbmlmZXN0IiwiX3ZlcnNpb24iLCJzZXJ2aWNlcyIsInZpZXdQcmVsb2FkZXJTZXJ2aWNlIiwiZmFjdG9yeU5hbWUiLCJzdGFydHVwIiwicmVzb3VyY2VNb2RlbCIsInNldHRpbmdzIiwiYnVuZGxlcyIsIm1vZGVsTmFtZSIsInJvdXRpbmdTZXJ2aWNlIiwic2hlbGxTZXJ2aWNlcyIsIlNoZWxsVUlTZXJ2aWNlIiwibmF2aWdhdGlvblNlcnZpY2UiLCJlbnZpcm9ubWVudENhcGFiaWxpdGllcyIsInNpZGVFZmZlY3RzU2VydmljZSIsImFzeW5jQ29tcG9uZW50U2VydmljZSIsImNvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZSIsImNvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2UiLCJ0ZWxlbWV0cnlTZXJ2aWNlIiwidmFsdWVIZWxwSGlzdG9yeVNlcnZpY2UiLCJDb2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlIiwiQ29udGV4dFNoYXJpbmdTZXJ2aWNlIiwiaW5saW5lRWRpdFNlcnZpY2UiLCJyb290VmlldyIsInZpZXdOYW1lIiwiaWQiLCJyb3V0aW5nIiwiY29udHJvbElkIiwicm91dGVyQ2xhc3MiLCJ2aWV3VHlwZSIsImNvbnRyb2xBZ2dyZWdhdGlvbiIsImNvbnRhaW5lck9wdGlvbnMiLCJwcm9wYWdhdGVNb2RlbCIsImRlc2lnbnRpbWUiLCJfZGVjMiIsImltcGxlbWVudEludGVyZmFjZSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQXBwQ29tcG9uZW50IiwiX1VJQ29tcG9uZW50IiwiX3RoaXMiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiYWRkaXRpb25hbENvbmZpZ3VyYXRpb24iLCJzdGFydHVwTW9kZSIsIk5vcm1hbCIsImRlbGF5VGltZSIsImRlbGF5TWV0YWRhdGFDaGVjayIsIl9zdGFydGVkU2VydmljZXMiLCJpc0FkYXB0YXRpb25FbmFibGVkIiwiaXNFeGl0aW5nIiwicGFnZUNvbmZpZ3VyYXRpb25DaGFuZ2VzIiwic3VzcGVuZGVkIiwiZGlzY2FyZFByb21pc2UiLCJQcm9taXNlIiwicmVzb2x2ZSIsInByZWZlcnJlZEFjdGlvblN0YXR1cyIsIlByZWZlcnJlZEFjdGlvblN0YXR1c1R5cGUiLCJOb3RTZXQiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsImdldEFkZGl0aW9uYWxDb25maWd1cmF0aW9uIiwiZ2V0UHJlZmVycmVkQWN0aW9uU3RhdHVzIiwic2V0UHJlZmVycmVkQWN0aW9uU3RhdHVzIiwic3RhdHVzIiwiX2lzRmNsRW5hYmxlZCIsIm9NYW5pZmVzdFVJNSIsImdldE1hbmlmZXN0RW50cnkiLCJzZXRBZGFwdGF0aW9uTW9kZSIsImlzQWRhcHRhdGlvbk1vZGUiLCJyZWdpc3RlckNvbmZpZ3VyYXRpb25IYW5kbGVycyIsImhhbmRsZXIiLCJjb25maWd1cmF0aW9uSGFuZGxlcnMiLCJwdXNoIiwiaW5pdGlhbGl6ZUZlYXR1cmVUb2dnbGVzIiwiY2hhbmdlUGFnZUNvbmZpZ3VyYXRpb24iLCJwYWdlSWQiLCJwYXRoIiwidmFsdWUiLCJjaGFuZ2VDb25maWd1cmF0aW9uIiwiZ2V0TWFuaWZlc3QiLCJnZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcyIsInNldENhcGFiaWxpdHkiLCJjbGVhblBhZ2VDb25maWd1cmF0aW9uQ2hhbmdlcyIsImdldFJvdXRlclByb3h5IiwiX29Sb3V0ZXJQcm94eSIsImdldEFwcFN0YXRlSGFuZGxlciIsIl9vQXBwU3RhdGVIYW5kbGVyIiwiZ2V0Um9vdFZpZXdDb250cm9sbGVyIiwiZ2V0Um9vdENvbnRyb2wiLCJnZXRDb250cm9sbGVyIiwiZ2V0Um9vdENvbnRhaW5lciIsImdldENvbnRlbnQiLCJnZXRTdGFydHVwTW9kZSIsInNldFN0YXJ0dXBNb2RlQ3JlYXRlIiwiQ3JlYXRlIiwic2V0U3RhcnR1cE1vZGVBdXRvQ3JlYXRlIiwiQXV0b0NyZWF0ZSIsInNldFN0YXJ0dXBNb2RlRGVlcGxpbmsiLCJEZWVwbGluayIsImluaXQiLCJvQ29tcG9uZW50RGF0YSIsInBhcmFtcyIsIlVSTFNlYXJjaFBhcmFtcyIsIndpbmRvdyIsImxvY2F0aW9uIiwic2VhcmNoIiwiaGFzIiwic2V0VGltZW91dCIsIkxpYnJhcnkiLCJsb2FkIiwibmFtZSIsImVhZ2VyVmlld0NyZWF0aW9uIiwiaGlkZVZpZXdEdXJpbmdDcmVhdGlvbiIsInBhcnNlSW50IiwiZ2V0IiwiZGVsYXlGY2wiLCJfaW5pdGlhbGl6ZWRLZWVwZXIiLCJQcm9taXNlS2VlcGVyIiwiaW5pdGlhbGl6ZWQiLCJwcm9taXNlIiwidWlNb2RlbCIsIkpTT05Nb2RlbCIsImVkaXRNb2RlIiwiRWRpdE1vZGUiLCJEaXNwbGF5IiwiaXNFZGl0YWJsZSIsImRyYWZ0U3RhdHVzIiwiRHJhZnRTdGF0dXMiLCJDbGVhciIsImJ1c3kiLCJidXN5TG9jYWwiLCJwYWdlcyIsIm9JbnRlcm5hbE1vZGVsIiwic2V0RGVmYXVsdEJpbmRpbmdNb2RlIiwiTW9kZWxIZWxwZXIiLCJlbmhhbmNlVWlKU09OTW9kZWwiLCJlbmhhbmNlSW50ZXJuYWxKU09OTW9kZWwiLCJzZXRNb2RlbCIsImJJbml0aWFsaXplUm91dGluZyIsInVuZGVmaW5lZCIsIlJvdXRlclByb3h5IiwiQXBwU3RhdGVIYW5kbGVyIiwiX29EaWFnbm9zdGljcyIsIkRpYWdub3N0aWNzIiwib01vZGVsIiwiZ2V0TW9kZWwiLCJpc0EiLCJlbmhhbmNlT0RhdGFNb2RlbCIsInNldFJldHJ5QWZ0ZXJIYW5kbGVyIiwiaHR0cDUwM1JldHJ5SGFuZGxlciIsImJpbmQiLCJlbnRpdHlDb250YWluZXIiLCJnZXRNZXRhTW9kZWwiLCJyZXF1ZXN0T2JqZWN0IiwiYXBwIiwiZGlzYWJsZUNvbGxhYm9yYXRpb25EcmFmdCIsImNoZWNrUm91dGluZ0NvbmZpZ3VyYXRpb24iLCJfY3VzdG9tTWFuaWZlc3RDaGVja3MiLCJmb3JFYWNoIiwiZm5Qcm9jZXNzIiwicHJlbG9hZExpYnJhcmllcyIsImluc3RhbmNlTWFwIiwiZ2V0SWQiLCJlcnJvciIsIkhUVFA1MDNIYW5kbGVyIiwiaGFuZGxlNTAzRGVsYXkiLCJnZXRSZXNvdXJjZU1vZGVsIiwidGFyZ2V0c0tleSIsInRhcmdldHMiLCJKU09OIiwic3RyaW5naWZ5Iiwib3B0aW9ucyIsImNvbnRyb2xDb25maWd1cmF0aW9uIiwiaW5jbHVkZXMiLCJMb2ciLCJpbmZvIiwiRXJyb3IiLCJvblNlcnZpY2VzU3RhcnRlZCIsImFsbFNlcnZpY2VzIiwiYWxsIiwibWFwIiwiYWxsU2V0dGxlZCIsImluc3RhbmNlRGVwZW5kZW50UHJvY2Vzc2VzIiwiZmluYWxpemVkUm91dGluZ0luaXRpYWxpemF0aW9uIiwidGhlbiIsInJlcXVlc3RDb2RlTGlzdCIsImF0dGFjaFJvdXRlTWF0Y2hlcnMiLCJnZXRSb3V0ZXIiLCJpbml0aWFsaXplIiwiZ2V0VmFsdWVIZWxwSGlzdG9yeVNlcnZpY2UiLCJyZWdpc3RlclNoZWxsSG9vayIsImNhdGNoIiwib1Jlc291cmNlQnVuZGxlIiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJkaXNwbGF5RXJyb3JQYWdlIiwiZ2V0VGV4dCIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJtZXNzYWdlIiwiZ2V0Um91dGluZ1NlcnZpY2UiLCJpbml0aWFsaXplUm91dGluZyIsImF0dGFjaEFmdGVySW5pdCIsImVyciIsInRvU3RyaW5nIiwiZXhpdCIsImRlc3Ryb3kiLCJkZWxldGVNb2RlbENhY2hlRGF0YSIsImdldERpYWdub3N0aWNzIiwiYlN1cHByZXNzSW52YWxpZGF0ZSIsIl9yb3V0aW5nIiwiZSIsIm9NYWluTW9kZWwiLCJvTW9kZWxzIiwib0hlYWRlcnMiLCJvUmVxdWVzdG9yIiwiT2JqZWN0IiwiYXNzaWduIiwibUhlYWRlcnMiLCJiZWZvcmVFeGl0IiwidW5yZWdpc3RlckNhbGxiYWNrcyIsImdldFNoZWxsU2VydmljZXMiLCJnZXROYXZpZ2F0aW9uU2VydmljZSIsImdldFNpZGVFZmZlY3RzU2VydmljZSIsImdldENvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZSIsImdldFZpZXdQcmVsb2FkZXJTZXJ2aWNlIiwiZ2V0Q29sbGFib3JhdGl2ZVRvb2xzU2VydmljZSIsImdldENvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2UiLCJnZXRDb250ZXh0U2hhcmluZ1NlcnZpY2UiLCJnZXRUZWxlbWV0cnlTZXJ2aWNlIiwiZ2V0SW5saW5lRWRpdFNlcnZpY2UiLCJnZXRTdGFydHVwUGFyYW1ldGVycyIsInN0YXJ0dXBQYXJhbXMiLCJnZXRDb21wb25lbnREYXRhIiwic3RhcnR1cFBhcmFtZXRlcnMiLCJwcmVmZXJyZWRBY3Rpb24iLCJDYW5QZXJmb3JtIiwicmVzdG9yZSIsInN0YXJ0ZWRTZXJ2aWNlIiwib25SZXN0b3JlIiwidmlld1N0YXRlIiwicmVzZXRWZXJzaW9uQWN0aXZhdGlvblN0YXR1cyIsInN1c3BlbmQiLCJvblN1c3BlbmQiLCJpc1N1c3BlbmRlZCIsImlzQXBwQ29tcG9uZW50QnVzeSIsIm5hdmlnYXRlQmFzZWRPblN0YXJ0dXBQYXJhbWV0ZXIiLCJCdXN5TG9ja2VyIiwiaXNMb2NrZWQiLCJfbWFuYWdlRGVlcExpbmtTdGFydHVwIiwiZXhjZXB0aW9uIiwidW5sb2NrIiwiaXNDb2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2VFbmFibGVkIiwicmVnaXN0ZXJJbnN0YW5jZURlcGVuZGVudFByb2Nlc3NGb3JTdGFydFVwIiwicmVnaXN0ZXJJbml0Q2hlY2tzIiwicmVnaXN0ZXJDYWxsYmFja3MiLCJkaXJ0eVN0YXRlUHJvdmlkZXJDYWxsYmFjayIsImRpc2NhcmRBZnRlck5hdmlnYXRpb25DYWxsYmFjayIsInNlc3Npb25UaW1lb3V0Q2FsbGJhY2siLCJyZWdpc3RlckRpcnR5U3RhdGVQcm92aWRlciIsInN0aWNreVNlc3Npb25UaW1lb3V0Q2FsbGJhY2siLCJhdHRhY2hTZXNzaW9uVGltZW91dCIsIl9yb3V0ZU1hdGNoSGFuZGxlciIsImF0dGFjaFJvdXRlTWF0Y2hlZCIsImRlcmVnaXN0ZXJEaXJ0eVN0YXRlUHJvdmlkZXIiLCJkZXRhY2hTZXNzaW9uVGltZW91dCIsImRldGFjaFJvdXRlTWF0Y2hlZCIsIl9pc0VtYmVkZGVkIiwiZmVFbnZpcm9ubWVudCIsIlVJQ29tcG9uZW50IiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJBcHBDb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSBGbGV4aWJsZUNvbHVtbkxheW91dCBmcm9tIFwic2FwL2YvRmxleGlibGVDb2x1bW5MYXlvdXRcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBpbXBsZW1lbnRJbnRlcmZhY2UgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQXBwU3RhdGVIYW5kbGVyIGZyb20gXCJzYXAvZmUvY29yZS9BcHBTdGF0ZUhhbmRsZXJcIjtcbmltcG9ydCBSb3V0ZXJQcm94eSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvcm91dGluZy9Sb3V0ZXJQcm94eVwiO1xuaW1wb3J0IEhUVFA1MDNIYW5kbGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0hUVFA1MDNIYW5kbGVyXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBQcm9taXNlS2VlcGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1Byb21pc2VLZWVwZXJcIjtcbmltcG9ydCBsaWJyYXJ5IGZyb20gXCJzYXAvZmUvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgeyBjaGFuZ2VDb25maWd1cmF0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL21hbmlmZXN0TWVyZ2VyL0NoYW5nZVBhZ2VDb25maWd1cmF0aW9uXCI7XG5pbXBvcnQgdHlwZSBSb290Vmlld0Jhc2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9yb290Vmlldy9Sb290Vmlld0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSB7IENvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9Db2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7IENvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2UgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvQ29sbGFib3JhdGl2ZVRvb2xzU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgQ29udGV4dFNoYXJpbmdTZXJ2aWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL0NvbnRleHRTaGFyaW5nU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgRW52aXJvbm1lbnRDYXBhYmlsaXRpZXNTZXJ2aWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL0Vudmlyb25tZW50U2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgSW5saW5lRWRpdFNlcnZpY2UgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvSW5saW5lRWRpdFNlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL05hdmlnYXRpb25TZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHR5cGUgeyBSb3V0aW5nU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9Sb3V0aW5nU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgSVNoZWxsU2VydmljZXMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvU2hlbGxTZXJ2aWNlc0ZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgU2lkZUVmZmVjdHNTZXJ2aWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1NpZGVFZmZlY3RzU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgVGVsZW1ldHJ5U2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9UZWxlbWV0cnlTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHR5cGUgeyBDb2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL2NvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgRGlhZ25vc3RpY3MgZnJvbSBcInNhcC9mZS9jb3JlL3N1cHBvcnQvRGlhZ25vc3RpY3NcIjtcbmltcG9ydCB0eXBlIE5hdkNvbnRhaW5lciBmcm9tIFwic2FwL20vTmF2Q29udGFpbmVyXCI7XG5pbXBvcnQgUm91dGVyIGZyb20gXCJzYXAvbS9yb3V0aW5nL1JvdXRlclwiO1xuaW1wb3J0IExpYnJhcnkgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHR5cGUgeyBNYW5pZmVzdENvbnRlbnQgfSBmcm9tIFwic2FwL3VpL2NvcmUvTWFuaWZlc3RcIjtcbmltcG9ydCBVSUNvbXBvbmVudCBmcm9tIFwic2FwL3VpL2NvcmUvVUlDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgSUFzeW5jQ29udGVudENyZWF0aW9uIH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9WaWV3XCI7XG5pbXBvcnQgdHlwZSBTZXJ2aWNlIGZyb20gXCJzYXAvdWkvY29yZS9zZXJ2aWNlL1NlcnZpY2VcIjtcbmltcG9ydCB0eXBlIE1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvTW9kZWxcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IFwic2FwL3VpL21vZGVsL29kYXRhL3R5cGUvQ3VycmVuY3lcIjtcbmltcG9ydCBcInNhcC91aS9tb2RlbC9vZGF0YS90eXBlL1VuaXRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIE9EYXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1vZGVsXCI7XG5pbXBvcnQgQnVzeUxvY2tlciBmcm9tIFwiLi9jb250cm9sbGVyZXh0ZW5zaW9ucy9CdXN5TG9ja2VyXCI7XG5pbXBvcnQgeyBkZWxldGVNb2RlbENhY2hlRGF0YSB9IGZyb20gXCIuL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgeyBnZXRSZXNvdXJjZU1vZGVsIH0gZnJvbSBcIi4vaGVscGVycy9SZXNvdXJjZU1vZGVsSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IFZhbHVlSGVscEhpc3RvcnlTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvVmFsdWVIZWxwSGlzdG9yeVNlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7IFZpZXdQcmVsb2FkZXJTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvVmlld1ByZWxvYWRlclNlcnZpY2VGYWN0b3J5XCI7XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIHRoYXQgY2FuIGJlIHByb3ZpZGVkIGJ5IGxpYnJhcmllcy5cbiAqL1xuZXhwb3J0IHR5cGUgQWRkaXRpb25hbENvbmZpZ3VyYXRpb24gPSB7XG5cdFwic2FwLmZlLmNvcmUuZnBtXCI/OiB7XG5cdFx0aTE4bkJ1bmRsZXM/OiBzdHJpbmdbXTtcblx0fTtcblx0LyoqXG5cdCAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgU0FQIEZpb3JpIGVsZW1lbnRzIG1hY3Jvcy5cblx0ICovXG5cdFwic2FwLmZlLm1hY3Jvc1wiPzoge1xuXHRcdC8qKlxuXHRcdCAqIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBTdGF0dXMgYnVpbGRpbmcgYmxvY2suXG5cdFx0ICovXG5cdFx0U3RhdHVzPzoge1xuXHRcdFx0LyoqXG5cdFx0XHQgKiBXaGV0aGVyIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGludmVydGVkLlxuXHRcdFx0ICovXG5cdFx0XHRpbnZlcnRlZERlZmF1bHRWYWx1ZT86IGJvb2xlYW47XG5cdFx0XHQvKipcblx0XHRcdCAqIENvbG9yIG1hcHBpbmcgZm9yIGRpZmZlcmVudCBzdGF0dXMgdmFsdWVzLlxuXHRcdFx0ICovXG5cdFx0XHRjb2xvclBhbGV0dGU/OiBcIlN0YW5kYXJkXCIgfCBcIlBhc3RlbFwiO1xuXHRcdH07XG5cdH07XG59O1xuXG5jb25zdCBTdGFydHVwTW9kZSA9IGxpYnJhcnkuU3RhcnR1cE1vZGU7XG5jb25zdCBOQVZDT05GID0ge1xuXHRGQ0w6IHtcblx0XHRWSUVXTkFNRTogXCJzYXAuZmUuY29yZS5yb290Vmlldy5GY2xcIixcblx0XHRWSUVXTkFNRV9DT01QQVRJQklMSVRZOiBcInNhcC5mZS50ZW1wbGF0ZXMuUm9vdENvbnRhaW5lci52aWV3LkZjbFwiLFxuXHRcdFJPVVRFUkNMQVNTOiBcInNhcC5mLnJvdXRpbmcuUm91dGVyXCJcblx0fSxcblx0TkFWQ09OVEFJTkVSOiB7XG5cdFx0VklFV05BTUU6IFwic2FwLmZlLmNvcmUucm9vdFZpZXcuTmF2Q29udGFpbmVyXCIsXG5cdFx0VklFV05BTUVfQ09NUEFUSUJJTElUWTogXCJzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIudmlldy5OYXZDb250YWluZXJcIixcblx0XHRST1VURVJDTEFTUzogXCJzYXAubS5yb3V0aW5nLlJvdXRlclwiXG5cdH1cbn07XG5cbmV4cG9ydCB0eXBlIENvbXBvbmVudERhdGEgPSB7XG5cdHN0YXJ0dXBQYXJhbWV0ZXJzPzogU3RhcnR1cFBhcmFtZXRlcnM7XG5cdC8vZmVFbnZpcm9ubWVudCBpcyBvYmplY3Qgd2hpY2ggaXMgcmVjZWl2ZWQgYXMgYSBwYXJ0IG9mIHRoZSBjb21wb25lbnQgZGF0YSBmb3IgTXkgSW5ib3ggYXBwbGljYXRpb25zLlxuXHRmZUVudmlyb25tZW50Pzoge1xuXHRcdC8vV2l0aGluIHRoaXMgb2JqZWN0IHRoZXkgcGFzcyBhIGZ1bmN0aW9uIGNhbGxlZCBnZXRJbnRlbnQoKSB3aGljaCByZXR1cm5zIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBzZW1hbnRpY09iamVjdCBhbmQgYWN0aW9uIGFzIHNlcGFyYXRlIHByb3BlcnR5LXZhbHVlIGVudHJpZXMgdGhhdCBhcmUgdGhlbiB1c2VkIHRvIHVwZGF0ZSB0aGUgcmVsYXRlZCBhcHBzIGJ1dHRvbi5cblx0XHRnZXRJbnRlbnQ6IEZ1bmN0aW9uO1xuXHRcdC8vV2l0aGluIHRoaXMgb2JqZWN0IHRoZXkgcGFzcyBhIGZ1bmN0aW9uIGNhbGxlZCBnZXRTaGFyZUNvbnRyb2xWaXNpYmlsaXR5KCkgdGhhdCByZXR1cm5zIGJvb2xlYW4gdmFsdWVzKHRydWUgb3IgZmFsc2UpIHdoaWNoIGRldGVybWluZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIHNoYXJlIGJ1dHRvbi5cblx0XHRnZXRTaGFyZUNvbnRyb2xWaXNpYmlsaXR5OiBGdW5jdGlvbjtcblx0fTtcbn07XG4vLyBLZWVwIGEgcmVmZXJlbmNlIHNvIGFzIHRvIGtlZXAgdGhlIGltcG9ydCBkZXNwaXRlIGl0IG5vdCBiZWluZyBkaXJlY3RseSB1c2VkXG5jb25zdCBfbVJvdXRlciA9IFJvdXRlcjtcblxuZXhwb3J0IHR5cGUgU3RhcnR1cFBhcmFtZXRlcnMgPSB7XG5cdHByZWZlcnJlZE1vZGU/OiBzdHJpbmdbXTtcblx0cHJlZmVycmVkQWN0aW9uPzogc3RyaW5nW107XG59ICYgUmVjb3JkPHN0cmluZywgdW5rbm93bltdPjtcblxuLyoqXG4gKiBNYWluIGNsYXNzIGZvciBjb21wb25lbnRzIHVzZWQgZm9yIGFuIGFwcGxpY2F0aW9uIGluIFNBUCBGaW9yaSBlbGVtZW50cy5cbiAqXG4gKiBBcHBsaWNhdGlvbiBkZXZlbG9wZXJzIHVzaW5nIHRoZSB0ZW1wbGF0ZXMgYW5kIGJ1aWxkaW5nIGJsb2NrcyBwcm92aWRlZCBieSBTQVAgRmlvcmkgZWxlbWVudHMgc2hvdWxkIGNyZWF0ZSB0aGVpciBhcHBzIGJ5IGV4dGVuZGluZyB0aGlzIGNvbXBvbmVudC5cbiAqIFRoaXMgZW5zdXJlcyB0aGF0IGFsbCB0aGUgbmVjZXNzYXJ5IHNlcnZpY2VzIHRoYXQgeW91IG5lZWQgZm9yIHRoZSBidWlsZGluZyBibG9ja3MgYW5kIHRlbXBsYXRlcyB0byB3b3JrIGFyZSBzdGFydGVkLlxuICpcbiAqIFdoZW4geW91IHVzZSBzYXAuZmUuY29yZS5BcHBDb21wb25lbnQgYXMgdGhlIGJhc2UgY29tcG9uZW50LCB5b3UgYWxzbyBuZWVkIHRvIHVzZSBhIHJvb3RWaWV3LiBTQVAgRmlvcmkgZWxlbWVudHMgcHJvdmlkZXMgdHdvIG9wdGlvbnM6IDxici8+XG4gKiAtIHNhcC5mZS5jb3JlLnJvb3RWaWV3Lk5hdkNvbnRhaW5lciB3aGVuIHVzaW5nIHNhcC5tLnJvdXRpbmcuUm91dGVyIDxici8+XG4gKiAtIHNhcC5mZS5jb3JlLnJvb3RWaWV3LkZjbCB3aGVuIHVzaW5nIHNhcC5mLnJvdXRpbmcuUm91dGVyIChGQ0wgdXNlIGNhc2UpIDxici8+XG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAcHVibGljXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLkFwcENvbXBvbmVudFwiLCB7XG5cdGNvbmZpZzoge1xuXHRcdGZ1bGxXaWR0aDogdHJ1ZVxuXHR9LFxuXHRtYW5pZmVzdDoge1xuXHRcdF92ZXJzaW9uOiBcIjIuMC4wXCIsXG5cdFx0XCJzYXAudWk1XCI6IHtcblx0XHRcdHNlcnZpY2VzOiB7XG5cdFx0XHRcdHZpZXdQcmVsb2FkZXJTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuVmlld1ByZWxvYWRlclNlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRyZXNvdXJjZU1vZGVsOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuUmVzb3VyY2VNb2RlbFNlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIixcblx0XHRcdFx0XHRzZXR0aW5nczoge1xuXHRcdFx0XHRcdFx0YnVuZGxlczogW1wic2FwLmZlLmNvcmUubWVzc2FnZWJ1bmRsZVwiXSxcblx0XHRcdFx0XHRcdG1vZGVsTmFtZTogXCJzYXAuZmUuaTE4blwiXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRyb3V0aW5nU2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLlJvdXRpbmdTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0c2hlbGxTZXJ2aWNlczoge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLlNoZWxsU2VydmljZXNcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRTaGVsbFVJU2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC51c2hlbGwudWk1c2VydmljZS5TaGVsbFVJU2VydmljZVwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdG5hdmlnYXRpb25TZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuTmF2aWdhdGlvblNlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRlbnZpcm9ubWVudENhcGFiaWxpdGllczoge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLkVudmlyb25tZW50U2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHNpZGVFZmZlY3RzU2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLlNpZGVFZmZlY3RzU2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGFzeW5jQ29tcG9uZW50U2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLkFzeW5jQ29tcG9uZW50U2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGNvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLkNvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGNvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5Db2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0dGVsZW1ldHJ5U2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLlRlbGVtZXRyeVNlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHR2YWx1ZUhlbHBIaXN0b3J5U2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLlZhbHVlSGVscEhpc3RvcnlTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0Q29sbGFib3JhdGl2ZURyYWZ0U2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLkNvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRDb250ZXh0U2hhcmluZ1NlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5Db250ZXh0U2hhcmluZ1NlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRpbmxpbmVFZGl0U2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLklubGluZUVkaXRTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdHJvb3RWaWV3OiB7XG5cdFx0XHRcdHZpZXdOYW1lOiBOQVZDT05GLk5BVkNPTlRBSU5FUi5WSUVXTkFNRSxcblx0XHRcdFx0aWQ6IFwiYXBwUm9vdFZpZXdcIlxuXHRcdFx0fSxcblx0XHRcdHJvdXRpbmc6IHtcblx0XHRcdFx0Y29uZmlnOiB7XG5cdFx0XHRcdFx0Y29udHJvbElkOiBcImFwcENvbnRlbnRcIixcblx0XHRcdFx0XHRyb3V0ZXJDbGFzczogTkFWQ09ORi5OQVZDT05UQUlORVIuUk9VVEVSQ0xBU1MsXG5cdFx0XHRcdFx0dmlld1R5cGU6IFwiWE1MXCIsXG5cdFx0XHRcdFx0Y29udHJvbEFnZ3JlZ2F0aW9uOiBcInBhZ2VzXCIsXG5cdFx0XHRcdFx0Y29udGFpbmVyT3B0aW9uczoge1xuXHRcdFx0XHRcdFx0cHJvcGFnYXRlTW9kZWw6IHRydWVcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdGRlc2lnbnRpbWU6IFwic2FwL2ZlL2NvcmUvZGVzaWdudGltZS9BcHBDb21wb25lbnQuZGVzaWdudGltZVwiLFxuXG5cdGxpYnJhcnk6IFwic2FwLmZlLmNvcmVcIlxufSlcbmNsYXNzIEFwcENvbXBvbmVudCBleHRlbmRzIFVJQ29tcG9uZW50IGltcGxlbWVudHMgSUFzeW5jQ29udGVudENyZWF0aW9uIHtcblx0QGltcGxlbWVudEludGVyZmFjZShcInNhcC51aS5jb3JlLklBc3luY0NvbnRlbnRDcmVhdGlvblwiKVxuXHRfX2ltcGxlbWVudHNfX3NhcF91aV9jb3JlX0lBc3luY0NvbnRlbnRDcmVhdGlvbiA9IHRydWU7XG5cblx0c3RhdGljIGluc3RhbmNlTWFwOiBSZWNvcmQ8c3RyaW5nLCBBcHBDb21wb25lbnQ+ID0ge307XG5cblx0LyoqXG5cdCAqIFRoZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBhcHBsaWNhdGlvbi5cblx0ICogQHByaXZhdGVcblx0ICovXG5cdHByaXZhdGUgYWRkaXRpb25hbENvbmZpZ3VyYXRpb246IEFkZGl0aW9uYWxDb25maWd1cmF0aW9uID0ge307XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgdGhlIGFwcGxpY2F0aW9uLlxuXHQgKiBAcmV0dXJucyBUaGUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uXG5cdCAqL1xuXHRnZXRBZGRpdGlvbmFsQ29uZmlndXJhdGlvbigpOiBBZGRpdGlvbmFsQ29uZmlndXJhdGlvbiB7XG5cdFx0cmV0dXJuIHRoaXMuYWRkaXRpb25hbENvbmZpZ3VyYXRpb247XG5cdH1cblxuXHQvKipcblx0ICogUmVnaXN0ZXJlZCBoYW5kbGVycyBmb3IgbW9kaWZ5aW5nIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbi5cblx0ICovXG5cdHByaXZhdGUgc3RhdGljIGNvbmZpZ3VyYXRpb25IYW5kbGVyczogKChhZGRpdGlvbmFsQ29uZmlndXJhdGlvbjogQWRkaXRpb25hbENvbmZpZ3VyYXRpb24pID0+IFByb21pc2U8dm9pZD4pW10gPSBbXTtcblxuXHRwcml2YXRlIF9vUm91dGVyUHJveHkhOiBSb3V0ZXJQcm94eTtcblxuXHRwcml2YXRlIF9vQXBwU3RhdGVIYW5kbGVyITogQXBwU3RhdGVIYW5kbGVyO1xuXG5cdHByaXZhdGUgYkluaXRpYWxpemVSb3V0aW5nPzogYm9vbGVhbjtcblxuXHRwcml2YXRlIF9vRGlhZ25vc3RpY3MhOiBEaWFnbm9zdGljcztcblxuXHRwcml2YXRlIGVudGl0eUNvbnRhaW5lciE6IFByb21pc2U8dm9pZD47XG5cblx0cHJpdmF0ZSBzdGFydHVwTW9kZTogc3RyaW5nID0gU3RhcnR1cE1vZGUuTm9ybWFsO1xuXG5cdHB1YmxpYyBlYWdlclZpZXdDcmVhdGlvbj86IGJvb2xlYW47XG5cblx0cHVibGljIGhpZGVWaWV3RHVyaW5nQ3JlYXRpb24/OiBib29sZWFuO1xuXG5cdHB1YmxpYyBkZWxheUZjbD86IGJvb2xlYW47XG5cblx0cHVibGljIGRlbGF5VGltZSA9IDEwMDtcblxuXHRwdWJsaWMgZGVsYXlNZXRhZGF0YUNoZWNrID0gZmFsc2U7XG5cblx0cHJpdmF0ZSBfc3RhcnRlZFNlcnZpY2VzOiBTZXJ2aWNlPHVua25vd24+W10gPSBbXTtcblxuXHRwdWJsaWMgaW5pdGlhbGl6ZWQhOiBQcm9taXNlPHZvaWQ+O1xuXG5cdHByaXZhdGUgX2luaXRpYWxpemVkS2VlcGVyITogUHJvbWlzZUtlZXBlcjx2b2lkPjtcblxuXHRwcml2YXRlIGlzQWRhcHRhdGlvbkVuYWJsZWQgPSBmYWxzZTtcblxuXHRwdWJsaWMgaXNFeGl0aW5nID0gZmFsc2U7XG5cblx0cHVibGljIHBhZ2VDb25maWd1cmF0aW9uQ2hhbmdlczogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge307XG5cblx0cHJpdmF0ZSBkaXJ0eVN0YXRlUHJvdmlkZXJDYWxsYmFjaz86IEZ1bmN0aW9uO1xuXG5cdHByaXZhdGUgc3RpY2t5U2Vzc2lvblRpbWVvdXRDYWxsYmFjaz86IEZ1bmN0aW9uO1xuXG5cdHByaXZhdGUgZGlzY2FyZEFmdGVyTmF2aWdhdGlvbkNhbGxiYWNrPzogRnVuY3Rpb247XG5cblx0cHJpdmF0ZSBzdXNwZW5kZWQgPSBmYWxzZTtcblxuXHRwcml2YXRlIGRpc2NhcmRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7XG5cblx0cHJpdmF0ZSBfcm91dGVNYXRjaEhhbmRsZXI/OiBGdW5jdGlvbjtcblxuXHRwcml2YXRlIG9Db21wb25lbnREYXRhPzogQ29tcG9uZW50RGF0YTtcblxuXHQvKipcblx0ICogU3RhdHVzIG9mIHRoZSBwcmVmZXJyZWQgYWN0aW9uIGV4ZWN1dGlvbiB0byBwcmV2ZW50IGR1cGxpY2F0ZSB0cmlnZ2VyaW5nLlxuXHQgKiAtIE5vdFNldDogSW5pdGlhbCBzdGF0ZSwgbm8gcHJlZmVycmVkIGFjdGlvbiBoYXMgYmVlbiBldmFsdWF0ZWRcblx0ICogLSBDYW5QZXJmb3JtOiBQcmVmZXJyZWQgYWN0aW9uIGNhbiBiZSBwZXJmb3JtZWQgKGNvbmRpdGlvbnMgYXJlIG1ldClcblx0ICogLSBBbHJlYWR5UGVyZm9ybWVkOiBQcmVmZXJyZWQgYWN0aW9uIGhhcyBiZWVuIGV4ZWN1dGVkIGFuZCBzaG91bGQgbm90IGJlIHRyaWdnZXJlZCBhZ2FpblxuXHQgKi9cblx0cHVibGljIHByZWZlcnJlZEFjdGlvblN0YXR1czogKHR5cGVvZiBsaWJyYXJ5LlByZWZlcnJlZEFjdGlvblN0YXR1c1R5cGUpW2tleW9mIHR5cGVvZiBsaWJyYXJ5LlByZWZlcnJlZEFjdGlvblN0YXR1c1R5cGVdID1cblx0XHRsaWJyYXJ5LlByZWZlcnJlZEFjdGlvblN0YXR1c1R5cGUuTm90U2V0O1xuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBjdXJyZW50IHN0YXR1cyBvZiB0aGUgcHJlZmVycmVkIGFjdGlvbi5cblx0ICogQHJldHVybnMgVGhlIGN1cnJlbnQgcHJlZmVycmVkIGFjdGlvbiBzdGF0dXNcblx0ICovXG5cdGdldFByZWZlcnJlZEFjdGlvblN0YXR1cygpOiAodHlwZW9mIGxpYnJhcnkuUHJlZmVycmVkQWN0aW9uU3RhdHVzVHlwZSlba2V5b2YgdHlwZW9mIGxpYnJhcnkuUHJlZmVycmVkQWN0aW9uU3RhdHVzVHlwZV0ge1xuXHRcdHJldHVybiB0aGlzLnByZWZlcnJlZEFjdGlvblN0YXR1cztcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBzdGF0dXMgb2YgdGhlIHByZWZlcnJlZCBhY3Rpb24uXG5cdCAqIEBwYXJhbSBzdGF0dXMgVGhlIG5ldyBzdGF0dXMgdG8gc2V0XG5cdCAqL1xuXHRzZXRQcmVmZXJyZWRBY3Rpb25TdGF0dXMoc3RhdHVzOiAodHlwZW9mIGxpYnJhcnkuUHJlZmVycmVkQWN0aW9uU3RhdHVzVHlwZSlba2V5b2YgdHlwZW9mIGxpYnJhcnkuUHJlZmVycmVkQWN0aW9uU3RhdHVzVHlwZV0pOiB2b2lkIHtcblx0XHR0aGlzLnByZWZlcnJlZEFjdGlvblN0YXR1cyA9IHN0YXR1cztcblx0fVxuXG5cdC8qKlxuXHQgKiBTaW5nbGV0b24gdG8gaG9sZCBwcm9jZXNzZXMgZnJvbSBsaWJyYXJpZXMgdGhhdCBuZWVkIHRvIGJlIHJ1biBmb3IgZXZlcnkgaW5zdGFuY2UgcHJpb3IgdG8gc3RhcnR1cC5cblx0ICovXG5cdHByaXZhdGUgc3RhdGljIGluc3RhbmNlRGVwZW5kZW50UHJvY2Vzc2VzOiAoKGFwcENvbXBvbmVudDogQXBwQ29tcG9uZW50KSA9PiBQcm9taXNlPHZvaWQ+KVtdID0gW107XG5cblx0LyoqXG5cdCAqIFNpbmdsZXRvbiBob2xkaW5nIGN1c3RvbSBpbml0aWFsaXphdGlvbiBjaGVja3MgdGhhdCBjYW4gYmUgcmVnaXN0ZXJlZCBieSBsaWJyYXJpZXMuXG5cdCAqL1xuXHRwcml2YXRlIHN0YXRpYyBfY3VzdG9tTWFuaWZlc3RDaGVja3M6ICgobWFuaWZlc3RDb250ZW50OiBNYW5pZmVzdENvbnRlbnRbXCJzYXAudWk1XCJdKSA9PiB2b2lkKVtdID0gW107XG5cblx0X2lzRmNsRW5hYmxlZCgpOiBib29sZWFuIHtcblx0XHRjb25zdCBvTWFuaWZlc3RVSTUgPSB0aGlzLmdldE1hbmlmZXN0RW50cnkoXCJzYXAudWk1XCIpO1xuXHRcdHJldHVybiBvTWFuaWZlc3RVSTU/LnJvdXRpbmc/LmNvbmZpZz8ucm91dGVyQ2xhc3MgPT09IE5BVkNPTkYuRkNMLlJPVVRFUkNMQVNTO1xuXHR9XG5cblx0c2V0QWRhcHRhdGlvbk1vZGUoaXNBZGFwdGF0aW9uRW5hYmxlZDogYm9vbGVhbik6IHZvaWQge1xuXHRcdHRoaXMuaXNBZGFwdGF0aW9uRW5hYmxlZCA9IGlzQWRhcHRhdGlvbkVuYWJsZWQ7XG5cdH1cblxuXHRpc0FkYXB0YXRpb25Nb2RlKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLmlzQWRhcHRhdGlvbkVuYWJsZWQ7XG5cdH1cblxuXHQvKipcblx0ICogUmVnaXN0ZXIgYSBoYW5kbGVyIGZvciBtb2RpZnlpbmcgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uLlxuXHQgKiBUaGUgaGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgZmVhdHVyZSB0b2dnbGVzIGFyZSBpbml0aWFsaXplZC5cblx0ICogQHBhcmFtIGhhbmRsZXIgVGhlIGhhbmRsZXIgZnVuY3Rpb24gdGhhdCB3aWxsIG1vZGlmeSB0aGUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uXG5cdCAqL1xuXHRzdGF0aWMgcmVnaXN0ZXJDb25maWd1cmF0aW9uSGFuZGxlcnMoaGFuZGxlcjogKGFkZGl0aW9uYWxDb25maWd1cmF0aW9uOiBBZGRpdGlvbmFsQ29uZmlndXJhdGlvbikgPT4gUHJvbWlzZTx2b2lkPik6IHZvaWQge1xuXHRcdHRoaXMuY29uZmlndXJhdGlvbkhhbmRsZXJzLnB1c2goaGFuZGxlcik7XG5cdH1cblxuXHQvKipcblx0ICogUHJvdmlkZXMgYSBob29rIHRvIGluaXRpYWxpemUgZmVhdHVyZSB0b2dnbGVzLlxuXHQgKlxuXHQgKiBUaGlzIGhvb2sgaXMgYmVpbmcgY2FsbGVkIGJ5IHRoZSBTQVAgRmlvcmkgZWxlbWVudHMgQXBwQ29tcG9uZW50IGF0IHRoZSB0aW1lIGZlYXR1cmUgdG9nZ2xlcyBjYW4gYmUgaW5pdGlhbGl6ZWQuXG5cdCAqIFRvIGNoYW5nZSBwYWdlIGNvbmZpZ3VyYXRpb24sIHVzZSB0aGUge0BsaW5rIHNhcC5mZS5jb3JlLkFwcENvbXBvbmVudCNjaGFuZ2VQYWdlQ29uZmlndXJhdGlvbn0gbWV0aG9kLlxuXHQgKiBAcHVibGljXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB3aXRob3V0IGFueSB2YWx1ZSB0byBhbGxvdyBhc3luY2hyb25vdXMgcHJvY2Vzc2VzXG5cdCAqL1xuXHRhc3luYyBpbml0aWFsaXplRmVhdHVyZVRvZ2dsZXMoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Ly8gdGhpcyBtZXRob2QgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYXBwbGljYXRpb25zXG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoYW5nZXMgdGhlIHBhZ2UgY29uZmlndXJhdGlvbiBvZiBTQVAgRmlvcmkgZWxlbWVudHMuXG5cdCAqXG5cdCAqIFRoaXMgbWV0aG9kIGVuYWJsZXMgeW91IHRvIGNoYW5nZSB0aGUgcGFnZSBjb25maWd1cmF0aW9uIG9mIFNBUCBGaW9yaSBlbGVtZW50cy5cblx0ICogQHBhcmFtIHBhZ2VJZCBUaGUgSUQgb2YgdGhlIHBhZ2UgZm9yIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGlzIHRvIGJlIGNoYW5nZWQuXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIGluIHRoZSBwYWdlIHNldHRpbmdzIGZvciB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpcyB0byBiZSBjaGFuZ2VkLlxuXHQgKiBAcGFyYW0gdmFsdWUgVGhlIG5ldyB2YWx1ZSBvZiB0aGUgY29uZmlndXJhdGlvbi4gVGhpcyBjb3VsZCBiZSBhIHBsYWluIHZhbHVlIGxpa2UgYSBzdHJpbmcsIG9yIGEgQm9vbGVhbiwgb3IgYSBzdHJ1Y3R1cmVkIG9iamVjdC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0Y2hhbmdlUGFnZUNvbmZpZ3VyYXRpb24ocGFnZUlkOiBzdHJpbmcsIHBhdGg6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkIHtcblx0XHRjb25zdCBtYW5pZmVzdCA9IGNoYW5nZUNvbmZpZ3VyYXRpb24odGhpcy5nZXRNYW5pZmVzdCgpLCBwYWdlSWQsIHBhdGgsIHZhbHVlLCB0cnVlLCB0aGlzKSBhcyBNYW5pZmVzdENvbnRlbnQ7XG5cdFx0aWYgKFxuXHRcdFx0cGF0aCA9PT0gXCJhcHAvZGlzYWJsZUlucHV0QXNzaXN0YW5jZVwiICYmXG5cdFx0XHQobWFuaWZlc3Q/LltcInNhcC5mZVwiXSBhcyBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj4pPy5bXCJhcHBcIl0/LltcImRpc2FibGVJbnB1dEFzc2lzdGFuY2VcIl0gPT09IHZhbHVlXG5cdFx0KSB7XG5cdFx0XHR0aGlzLmdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzKCkuc2V0Q2FwYWJpbGl0eShcIkRpc2FibGVJbnB1dEFzc2lzdGFuY2VcIiwgdmFsdWUpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDbGVhbnMgYWxsIHJlZ2lzdGVyZWQgcGFnZSBjb25maWd1cmF0aW9uIGNoYW5nZXMuXG5cdCAqL1xuXHRjbGVhblBhZ2VDb25maWd1cmF0aW9uQ2hhbmdlcygpOiB2b2lkIHtcblx0XHR0aGlzLnBhZ2VDb25maWd1cmF0aW9uQ2hhbmdlcyA9IHt9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgUm91dGVyUHJveHkuXG5cdCAqIEByZXR1cm5zIEEgUmVmZXJlbmNlIHRvIHRoZSBSb3V0ZXJQcm94eVxuXHQgKiBAZmluYWxcblx0ICovXG5cdGdldFJvdXRlclByb3h5KCk6IFJvdXRlclByb3h5IHtcblx0XHRyZXR1cm4gdGhpcy5fb1JvdXRlclByb3h5O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgQXBwU3RhdGVIYW5kbGVyLlxuXHQgKiBAcmV0dXJucyBBIHJlZmVyZW5jZSB0byB0aGUgQXBwU3RhdGVIYW5kbGVyXG5cdCAqIEBmaW5hbFxuXHQgKi9cblx0Z2V0QXBwU3RhdGVIYW5kbGVyKCk6IEFwcFN0YXRlSGFuZGxlciB7XG5cdFx0cmV0dXJuIHRoaXMuX29BcHBTdGF0ZUhhbmRsZXI7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBuYXYvRkNMIENvbnRyb2xsZXIuXG5cdCAqIEByZXR1cm5zICBBIHJlZmVyZW5jZSB0byB0aGUgRkNMIENvbnRyb2xsZXJcblx0ICogQGZpbmFsXG5cdCAqL1xuXHRnZXRSb290Vmlld0NvbnRyb2xsZXIoKTogUm9vdFZpZXdCYXNlQ29udHJvbGxlciB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0Um9vdENvbnRyb2woKS5nZXRDb250cm9sbGVyKCk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBOYXZDb250YWluZXIgY29udHJvbCBvciB0aGUgRkNMIGNvbnRyb2wuXG5cdCAqIEByZXR1cm5zICBBIHJlZmVyZW5jZSB0byBOYXZDb250YWluZXIgY29udHJvbCBvciB0aGUgRkNMIGNvbnRyb2xcblx0ICogQGZpbmFsXG5cdCAqL1xuXHRnZXRSb290Q29udGFpbmVyKCk6IE5hdkNvbnRhaW5lciB8IEZsZXhpYmxlQ29sdW1uTGF5b3V0IHtcblx0XHRyZXR1cm4gdGhpcy5nZXRSb290Q29udHJvbCgpLmdldENvbnRlbnQoKVswXSBhcyBOYXZDb250YWluZXIgfCBGbGV4aWJsZUNvbHVtbkxheW91dDtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIHN0YXJ0dXAgbW9kZSBvZiB0aGUgYXBwLlxuXHQgKiBAcmV0dXJucyBUaGUgc3RhcnR1cCBtb2RlXG5cdCAqL1xuXHRnZXRTdGFydHVwTW9kZSgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLnN0YXJ0dXBNb2RlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldCB0aGUgc3RhcnR1cCBtb2RlIGZvciB0aGUgYXBwIHRvICdDcmVhdGUnLlxuXHQgKlxuXHQgKi9cblx0c2V0U3RhcnR1cE1vZGVDcmVhdGUoKTogdm9pZCB7XG5cdFx0dGhpcy5zdGFydHVwTW9kZSA9IFN0YXJ0dXBNb2RlLkNyZWF0ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXQgdGhlIHN0YXJ0dXAgbW9kZSBmb3IgdGhlIGFwcCB0byAnQXV0b0NyZWF0ZScuXG5cdCAqXG5cdCAqL1xuXHRzZXRTdGFydHVwTW9kZUF1dG9DcmVhdGUoKTogdm9pZCB7XG5cdFx0dGhpcy5zdGFydHVwTW9kZSA9IFN0YXJ0dXBNb2RlLkF1dG9DcmVhdGU7XG5cdH1cblxuXHQvKipcblx0ICogU2V0IHRoZSBzdGFydHVwIG1vZGUgZm9yIHRoZSBhcHAgdG8gJ0RlZXBsaW5rJy5cblx0ICpcblx0ICovXG5cdHNldFN0YXJ0dXBNb2RlRGVlcGxpbmsoKTogdm9pZCB7XG5cdFx0dGhpcy5zdGFydHVwTW9kZSA9IFN0YXJ0dXBNb2RlLkRlZXBsaW5rO1xuXHR9XG5cblx0aW5pdCgpOiB2b2lkIHtcblx0XHR0aGlzLm9Db21wb25lbnREYXRhID8/PSB7fTtcblx0XHRjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuXHRcdGlmIChwYXJhbXMuaGFzKFwic2FwLXVpLXh4LWZlLXN1cHBvcnRcIikpIHtcblx0XHRcdHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRMaWJyYXJ5LmxvYWQoeyBuYW1lOiBcInNhcC5mZS50b29sc1wiIH0pO1xuXHRcdFx0fSwgMjAwMCk7XG5cdFx0fVxuXHRcdGlmIChwYXJhbXMuaGFzKFwic2FwLXVpLXh4LWZlLWVhZ2VyLXZpZXdcIikpIHtcblx0XHRcdHRoaXMuZWFnZXJWaWV3Q3JlYXRpb24gPSB0cnVlO1xuXHRcdH1cblx0XHRpZiAocGFyYW1zLmhhcyhcInNhcC11aS14eC1mZS1oaWRlLXZpZXdcIikpIHtcblx0XHRcdHRoaXMuaGlkZVZpZXdEdXJpbmdDcmVhdGlvbiA9IHRydWU7XG5cdFx0fVxuXHRcdGlmIChwYXJhbXMuaGFzKFwic2FwLXVpLXh4LWZlLWZpZWxkLW9wdFwiKSkge1xuXHRcdFx0Ly8gU1RBQkxFLUlTSFxuXHRcdFx0dGhpcy5kZWxheU1ldGFkYXRhQ2hlY2sgPSB0cnVlO1xuXHRcdH1cblx0XHRpZiAocGFyYW1zLmhhcyhcInNhcC11aS14eC1mZS1kZWxheVwiKSkge1xuXHRcdFx0Ly8gU1RBQkxFXG5cdFx0XHR0aGlzLmRlbGF5VGltZSA9IHBhcnNlSW50KHBhcmFtcy5nZXQoXCJzYXAtdWkteHgtZmUtZGVsYXlcIikhLCAxMCk7XG5cdFx0fVxuXHRcdGlmIChwYXJhbXMuaGFzKFwic2FwLXVpLXh4LWZlLWZjbC1vcHRcIikpIHtcblx0XHRcdC8vIFNUQUJMRVxuXHRcdFx0dGhpcy5kZWxheUZjbCA9IHRydWU7XG5cdFx0fVxuXHRcdHRoaXMuX2luaXRpYWxpemVkS2VlcGVyID0gbmV3IFByb21pc2VLZWVwZXI8dm9pZD4oKTtcblx0XHR0aGlzLmluaXRpYWxpemVkID0gdGhpcy5faW5pdGlhbGl6ZWRLZWVwZXIucHJvbWlzZTtcblx0XHRjb25zdCB1aU1vZGVsID0gbmV3IEpTT05Nb2RlbCh7XG5cdFx0XHRlZGl0TW9kZTogbGlicmFyeS5FZGl0TW9kZS5EaXNwbGF5LFxuXHRcdFx0aXNFZGl0YWJsZTogZmFsc2UsXG5cdFx0XHRkcmFmdFN0YXR1czogbGlicmFyeS5EcmFmdFN0YXR1cy5DbGVhcixcblx0XHRcdGJ1c3k6IGZhbHNlLFxuXHRcdFx0YnVzeUxvY2FsOiB7fSxcblx0XHRcdHBhZ2VzOiB7fVxuXHRcdH0pO1xuXHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsID0gbmV3IEpTT05Nb2RlbCh7XG5cdFx0XHRwYWdlczoge31cblx0XHR9KTtcblx0XHQvLyBzZXQgdGhlIGJpbmRpbmcgT25lV2F5IGZvciB1aU1vZGVsIHRvIHByZXZlbnQgY2hhbmdlcyBpZiBjb250cm9sbGVyIGV4dGVuc2lvbnMgbW9kaWZ5IGEgYm91bmQgcHJvcGVydHkgb2YgYSBjb250cm9sXG5cdFx0dWlNb2RlbC5zZXREZWZhdWx0QmluZGluZ01vZGUoXCJPbmVXYXlcIik7XG5cdFx0Ly8gZm9yIGludGVybmFsIG1vZGVsIGJpbmRpbmcgbmVlZHMgdG8gYmUgdHdvIHdheVxuXHRcdE1vZGVsSGVscGVyLmVuaGFuY2VVaUpTT05Nb2RlbCh1aU1vZGVsLCBsaWJyYXJ5KTtcblx0XHRNb2RlbEhlbHBlci5lbmhhbmNlSW50ZXJuYWxKU09OTW9kZWwob0ludGVybmFsTW9kZWwpO1xuXG5cdFx0dGhpcy5zZXRNb2RlbCh1aU1vZGVsLCBcInVpXCIpO1xuXHRcdHRoaXMuc2V0TW9kZWwob0ludGVybmFsTW9kZWwsIFwiaW50ZXJuYWxcIik7XG5cblx0XHR0aGlzLmJJbml0aWFsaXplUm91dGluZyA9IHRoaXMuYkluaXRpYWxpemVSb3V0aW5nICE9PSB1bmRlZmluZWQgPyB0aGlzLmJJbml0aWFsaXplUm91dGluZyA6IHRydWU7XG5cdFx0dGhpcy5fb1JvdXRlclByb3h5ID0gbmV3IFJvdXRlclByb3h5KCk7XG5cdFx0dGhpcy5fb0FwcFN0YXRlSGFuZGxlciA9IG5ldyBBcHBTdGF0ZUhhbmRsZXIodGhpcyk7XG5cdFx0dGhpcy5fb0RpYWdub3N0aWNzID0gbmV3IERpYWdub3N0aWNzKCk7XG5cblx0XHRjb25zdCBvTW9kZWwgPSB0aGlzLmdldE1vZGVsKCk7XG5cdFx0aWYgKG9Nb2RlbD8uaXNBPy48T0RhdGFNb2RlbD4oXCJzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFNb2RlbFwiKSkge1xuXHRcdFx0TW9kZWxIZWxwZXIuZW5oYW5jZU9EYXRhTW9kZWwob01vZGVsLCB0aGlzKTtcblx0XHRcdG9Nb2RlbC5zZXRSZXRyeUFmdGVySGFuZGxlcih0aGlzLmh0dHA1MDNSZXRyeUhhbmRsZXIuYmluZCh0aGlzKSk7XG5cdFx0XHR0aGlzLmVudGl0eUNvbnRhaW5lciA9IG9Nb2RlbC5nZXRNZXRhTW9kZWwoKS5yZXF1ZXN0T2JqZWN0KFwiLyRFbnRpdHlDb250YWluZXIvXCIpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBub3QgYW4gT0RhdGEgdjQgc2VydmljZVxuXHRcdFx0dGhpcy5lbnRpdHlDb250YWluZXIgPSBQcm9taXNlLnJlc29sdmUoKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5nZXRNYW5pZmVzdEVudHJ5KFwic2FwLmZlXCIpPy5hcHA/LmRpc2FibGVDb2xsYWJvcmF0aW9uRHJhZnQpIHtcblx0XHRcdC8vIGRpc2FibGUgdGhlIGNvbGxhYm9yYXRpb24gZHJhZnQgZ2xvYmFsbHkgaW4gY2FzZSBwcml2YXRlIG1hbmlmZXN0IGZsYWcgaXMgc2V0XG5cdFx0XHQvLyB0aGlzIGFsbG93cyBjdXN0b21lcnMgdG8gZGlzYWJsZSB0aGUgY29sbGFib3JhdGlvbiBkcmFmdCBpbiBjYXNlIHdlIHJ1biBpbnRvIGlzc3VlcyB3aXRoIHRoZSBmaXJzdCBkZWxpdmVyeVxuXHRcdFx0Ly8gdGhpcyB3aWxsIGJlIHJlbW92ZWQgd2l0aCB0aGUgbmV4dCBTLzQgcmVsZWFzZVxuXHRcdFx0TW9kZWxIZWxwZXIuZGlzYWJsZUNvbGxhYm9yYXRpb25EcmFmdCA9IHRydWU7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgb01hbmlmZXN0VUk1ID0gdGhpcy5nZXRNYW5pZmVzdCgpW1wic2FwLnVpNVwiXTtcblx0XHR0aGlzLmNoZWNrUm91dGluZ0NvbmZpZ3VyYXRpb24ob01hbmlmZXN0VUk1KTtcblx0XHRBcHBDb21wb25lbnQuX2N1c3RvbU1hbmlmZXN0Q2hlY2tzLmZvckVhY2goKGZuUHJvY2VzcykgPT4ge1xuXHRcdFx0cmV0dXJuIGZuUHJvY2Vzcy5jYWxsKHRoaXMsIG9NYW5pZmVzdFVJNSk7XG5cdFx0fSk7XG5cblx0XHR0aGlzLnByZWxvYWRMaWJyYXJpZXMob01hbmlmZXN0VUk1KTtcblxuXHRcdC8vIHRoZSBpbml0IGZ1bmN0aW9uIGNvbmZpZ3VyZXMgdGhlIHJvdXRpbmcgYWNjb3JkaW5nIHRvIHRoZSBzZXR0aW5ncyBhYm92ZVxuXHRcdC8vIGl0IHdpbGwgY2FsbCB0aGUgY3JlYXRlQ29udGVudCBmdW5jdGlvbiB0byBpbnN0YW50aWF0ZSB0aGUgUm9vdFZpZXcgYW5kIGFkZCBpdCB0byB0aGUgVUlDb21wb25lbnQgYWdncmVnYXRpb25zXG5cblx0XHRzdXBlci5pbml0KCk7XG5cdFx0QXBwQ29tcG9uZW50Lmluc3RhbmNlTWFwW3RoaXMuZ2V0SWQoKV0gPSB0aGlzO1xuXHR9XG5cblx0cHJpdmF0ZSBhc3luYyBodHRwNTAzUmV0cnlIYW5kbGVyKGVycm9yOiBFcnJvciAmIHsgcmV0cnlBZnRlcj86IERhdGUgfSk6IFByb21pc2U8dW5kZWZpbmVkPiB7XG5cdFx0cmV0dXJuIEhUVFA1MDNIYW5kbGVyLmhhbmRsZTUwM0RlbGF5KGVycm9yLCB0aGlzLmdldFJvb3RDb250cm9sKCksIGdldFJlc291cmNlTW9kZWwodGhpcykpO1xuXHR9XG5cblx0cHJpdmF0ZSBwcmVsb2FkTGlicmFyaWVzKG9NYW5pZmVzdFVJNTogTWFuaWZlc3RDb250ZW50W1wic2FwLnVpNVwiXSk6IHZvaWQge1xuXHRcdGZvciAoY29uc3QgdGFyZ2V0c0tleSBpbiBvTWFuaWZlc3RVSTUucm91dGluZz8udGFyZ2V0cykge1xuXHRcdFx0aWYgKG9NYW5pZmVzdFVJNS5yb3V0aW5nPy50YXJnZXRzW3RhcmdldHNLZXldLm5hbWUgPT09IFwic2FwLmZlLnRlbXBsYXRlcy5PYmplY3RQYWdlXCIpIHtcblx0XHRcdFx0TGlicmFyeS5sb2FkKHsgbmFtZTogXCJzYXAudXhhcFwiIH0pOyAvLyBmaXJlIGFuZCBmb3JnZXRcblx0XHRcdH1cblx0XHRcdGNvbnN0IHNldHRpbmdzID0gSlNPTi5zdHJpbmdpZnkob01hbmlmZXN0VUk1LnJvdXRpbmc/LnRhcmdldHNbdGFyZ2V0c0tleV0/Lm9wdGlvbnM/LnNldHRpbmdzPy5jb250cm9sQ29uZmlndXJhdGlvbik7XG5cdFx0XHRpZiAoc2V0dGluZ3M/LmluY2x1ZGVzKFwiR3JpZFRhYmxlXCIpIHx8IHNldHRpbmdzPy5pbmNsdWRlcyhcIlRyZWVUYWJsZVwiKSkge1xuXHRcdFx0XHRMaWJyYXJ5LmxvYWQoeyBuYW1lOiBcInNhcC51aS50YWJsZVwiIH0pOyAvLyBmaXJlIGFuZCBmb3JnZXRcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGNoZWNrUm91dGluZ0NvbmZpZ3VyYXRpb24ob01hbmlmZXN0VUk1OiBNYW5pZmVzdENvbnRlbnRbXCJzYXAudWk1XCJdKTogdm9pZCB7XG5cdFx0aWYgKG9NYW5pZmVzdFVJNT8ucm9vdFZpZXc/LnZpZXdOYW1lKSB7XG5cdFx0XHQvLyBUaGUgYXBwbGljYXRpb24gc3BlY2lmaWVkIGFuIG93biByb290IHZpZXcgaW4gdGhlIG1hbmlmZXN0XG5cblx0XHRcdC8vIFJvb3QgVmlldyB3YXMgbW92ZWQgZnJvbSBzYXAuZmUudGVtcGxhdGVzIHRvIHNhcC5mZS5jb3JlIC0ga2VlcCBpdCBjb21wYXRpYmxlXG5cdFx0XHRpZiAob01hbmlmZXN0VUk1LnJvb3RWaWV3LnZpZXdOYW1lID09PSBOQVZDT05GLkZDTC5WSUVXTkFNRV9DT01QQVRJQklMSVRZKSB7XG5cdFx0XHRcdG9NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZSA9IE5BVkNPTkYuRkNMLlZJRVdOQU1FO1xuXHRcdFx0fSBlbHNlIGlmIChvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWUgPT09IE5BVkNPTkYuTkFWQ09OVEFJTkVSLlZJRVdOQU1FX0NPTVBBVElCSUxJVFkpIHtcblx0XHRcdFx0b01hbmlmZXN0VUk1LnJvb3RWaWV3LnZpZXdOYW1lID0gTkFWQ09ORi5OQVZDT05UQUlORVIuVklFV05BTUU7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChcblx0XHRcdFx0b01hbmlmZXN0VUk1LnJvb3RWaWV3LnZpZXdOYW1lID09PSBOQVZDT05GLkZDTC5WSUVXTkFNRSAmJlxuXHRcdFx0XHRvTWFuaWZlc3RVSTUucm91dGluZz8uY29uZmlnPy5yb3V0ZXJDbGFzcyA9PT0gTkFWQ09ORi5GQ0wuUk9VVEVSQ0xBU1Ncblx0XHRcdCkge1xuXHRcdFx0XHRMb2cuaW5mbyhgUm9vdGNvbnRhaW5lcjogXCIke05BVkNPTkYuRkNMLlZJRVdOQU1FfVwiIC0gUm91dGVyY2xhc3M6IFwiJHtOQVZDT05GLkZDTC5ST1VURVJDTEFTU31cImApO1xuXHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0b01hbmlmZXN0VUk1LnJvb3RWaWV3LnZpZXdOYW1lID09PSBOQVZDT05GLk5BVkNPTlRBSU5FUi5WSUVXTkFNRSAmJlxuXHRcdFx0XHRvTWFuaWZlc3RVSTUucm91dGluZz8uY29uZmlnPy5yb3V0ZXJDbGFzcyA9PT0gTkFWQ09ORi5OQVZDT05UQUlORVIuUk9VVEVSQ0xBU1Ncblx0XHRcdCkge1xuXHRcdFx0XHRMb2cuaW5mbyhgUm9vdGNvbnRhaW5lcjogXCIke05BVkNPTkYuTkFWQ09OVEFJTkVSLlZJRVdOQU1FfVwiIC0gUm91dGVyY2xhc3M6IFwiJHtOQVZDT05GLk5BVkNPTlRBSU5FUi5ST1VURVJDTEFTU31cImApO1xuXHRcdFx0fSBlbHNlIGlmIChvTWFuaWZlc3RVSTUucm9vdFZpZXc/LnZpZXdOYW1lPy5pbmNsdWRlcyhcInNhcC5mZS5jb3JlLnJvb3RWaWV3XCIpKSB7XG5cdFx0XHRcdHRocm93IEVycm9yKFxuXHRcdFx0XHRcdGBcXG5Xcm9uZyBjb25maWd1cmF0aW9uIGZvciB0aGUgY291cGxlIChyb290Vmlldy9yb3V0ZXJDbGFzcykgaW4gbWFuaWZlc3QgZmlsZS5cXG5gICtcblx0XHRcdFx0XHRcdGBDdXJyZW50IHZhbHVlcyBhcmUgOigke29NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZX0vJHtcblx0XHRcdFx0XHRcdFx0b01hbmlmZXN0VUk1LnJvdXRpbmc/LmNvbmZpZz8ucm91dGVyQ2xhc3MgfHwgXCI8bWlzc2luZyByb3V0ZXIgY2xhc3M+XCJcblx0XHRcdFx0XHRcdH0pXFxuYCArXG5cdFx0XHRcdFx0XHRgRXhwZWN0ZWQgdmFsdWVzIGFyZSBcXG5gICtcblx0XHRcdFx0XHRcdGBcXHQgLSAoJHtOQVZDT05GLk5BVkNPTlRBSU5FUi5WSUVXTkFNRX0vJHtOQVZDT05GLk5BVkNPTlRBSU5FUi5ST1VURVJDTEFTU30pXFxuYCArXG5cdFx0XHRcdFx0XHRgXFx0IC0gKCR7TkFWQ09ORi5GQ0wuVklFV05BTUV9LyR7TkFWQ09ORi5GQ0wuUk9VVEVSQ0xBU1N9KWBcblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdExvZy5pbmZvKGBSb290Y29udGFpbmVyOiBcIiR7b01hbmlmZXN0VUk1LnJvb3RWaWV3LnZpZXdOYW1lfVwiIC0gUm91dGVyY2xhc3M6IFwiJHtOQVZDT05GLk5BVkNPTlRBSU5FUi5ST1VURVJDTEFTU31cImApO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGFzeW5jIG9uU2VydmljZXNTdGFydGVkKGFsbFNlcnZpY2VzOiBTZXJ2aWNlPHVua25vd24+W10pOiBQcm9taXNlPHZvaWQ+IHtcblx0XHR0aGlzLl9zdGFydGVkU2VydmljZXMgPSBhbGxTZXJ2aWNlcztcblx0XHQvLyBFeGVjdXRlIGFsbCByZWdpc3RlcmVkIGNvbmZpZ3VyYXRpb24gaGFuZGxlcnNcblx0XHRhd2FpdCBQcm9taXNlLmFsbChBcHBDb21wb25lbnQuY29uZmlndXJhdGlvbkhhbmRsZXJzLm1hcChhc3luYyAoaGFuZGxlcikgPT4gaGFuZGxlcih0aGlzLmFkZGl0aW9uYWxDb25maWd1cmF0aW9uKSkpO1xuXHRcdGF3YWl0IHRoaXMuaW5pdGlhbGl6ZUZlYXR1cmVUb2dnbGVzKCk7XG5cdFx0YXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuXHRcdFx0QXBwQ29tcG9uZW50Lmluc3RhbmNlRGVwZW5kZW50UHJvY2Vzc2VzLm1hcChhc3luYyAoZm5Qcm9jZXNzKSA9PiB7XG5cdFx0XHRcdHJldHVybiBmblByb2Nlc3MuY2FsbChudWxsLCB0aGlzKTtcblx0XHRcdH0pXG5cdFx0KTtcblxuXHRcdC8vcm91dGVyIG11c3QgYmUgc3RhcnRlZCBvbmNlIHRoZSByb290Y29udGFpbmVyIGlzIGluaXRpYWxpemVkXG5cdFx0Ly9zdGFydGluZyBvZiB0aGUgcm91dGVyXG5cdFx0Y29uc3QgZmluYWxpemVkUm91dGluZ0luaXRpYWxpemF0aW9uID0gKCk6IHZvaWQgPT4ge1xuXHRcdFx0dGhpcy5lbnRpdHlDb250YWluZXJcblx0XHRcdFx0LnRoZW4oYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRcdC8vIFByZWxvYWQgY3VycmVuY3lDb2RlcyBhbmQgVW9NIGlmIHRoZXkgZXhpc3RzXG5cdFx0XHRcdFx0KHRoaXMuZ2V0TWV0YU1vZGVsKCkgYXMgeyByZXF1ZXN0Q29kZUxpc3Q/OiBGdW5jdGlvbiB9KS5yZXF1ZXN0Q29kZUxpc3Q/LihcIkN1cnJlbmN5Q29kZXNcIik7XG5cdFx0XHRcdFx0KHRoaXMuZ2V0TWV0YU1vZGVsKCkgYXMgeyByZXF1ZXN0Q29kZUxpc3Q/OiBGdW5jdGlvbiB9KS5yZXF1ZXN0Q29kZUxpc3Q/LihcIlVuaXRPZk1lYXN1cmVzXCIpO1xuXHRcdFx0XHRcdGlmICh0aGlzLmdldFJvb3RWaWV3Q29udHJvbGxlcigpLmF0dGFjaFJvdXRlTWF0Y2hlcnMpIHtcblx0XHRcdFx0XHRcdHRoaXMuZ2V0Um9vdFZpZXdDb250cm9sbGVyKCkuYXR0YWNoUm91dGVNYXRjaGVycygpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLmdldFJvdXRlcigpLmluaXRpYWxpemUoKTtcblx0XHRcdFx0XHR0aGlzLmdldFJvdXRlclByb3h5KCkuaW5pdCh0aGlzLCB0aGlzLl9pc0ZjbEVuYWJsZWQoKSk7XG5cblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRWYWx1ZUhlbHBIaXN0b3J5U2VydmljZSgpLnJlZ2lzdGVyU2hlbGxIb29rKCk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qgb1Jlc291cmNlQnVuZGxlID0gTGlicmFyeS5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5jb3JlXCIpITtcblxuXHRcdFx0XHRcdHRoaXMuZ2V0Um9vdFZpZXdDb250cm9sbGVyKCkuZGlzcGxheUVycm9yUGFnZShcblx0XHRcdFx0XHRcdG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19BUFBfQ09NUE9ORU5UX1NBUEZFX0FQUFNUQVJUX1RFQ0hOSUNBTF9JU1NVRVNcIiksXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRpdGxlOiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfQ09NTU9OX1NBUEZFX0VSUk9SXCIpLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogZXJyb3IubWVzc2FnZVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0pO1xuXHRcdH07XG5cblx0XHRpZiAodGhpcy5iSW5pdGlhbGl6ZVJvdXRpbmcpIHtcblx0XHRcdHJldHVybiB0aGlzLmdldFJvdXRpbmdTZXJ2aWNlKClcblx0XHRcdFx0LmluaXRpYWxpemVSb3V0aW5nKClcblx0XHRcdFx0LnRoZW4oKCkgPT4ge1xuXHRcdFx0XHRcdGlmICh0aGlzLmdldFJvb3RWaWV3Q29udHJvbGxlcigpKSB7XG5cdFx0XHRcdFx0XHRmaW5hbGl6ZWRSb3V0aW5nSW5pdGlhbGl6YXRpb24oKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dGhpcy5nZXRSb290Q29udHJvbCgpLmF0dGFjaEFmdGVySW5pdChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdGZpbmFsaXplZFJvdXRpbmdJbml0aWFsaXphdGlvbigpO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMuX2luaXRpYWxpemVkS2VlcGVyLnJlc29sdmUoKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaChmdW5jdGlvbiAoZXJyOiBFcnJvcikge1xuXHRcdFx0XHRcdExvZy5lcnJvcihgY2Fubm90IGNhbm5vdCBpbml0aWFsaXplIHJvdXRpbmc6ICR7ZXJyLnRvU3RyaW5nKCl9YCk7XG5cdFx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLl9pbml0aWFsaXplZEtlZXBlci5yZXNvbHZlKCk7XG5cdFx0fVxuXHR9XG5cblx0ZXhpdCgpOiB2b2lkIHtcblx0XHR0aGlzLl9zdGFydGVkU2VydmljZXMgPSBbXTtcblx0XHR0aGlzLl9vQXBwU3RhdGVIYW5kbGVyLmRlc3Ryb3koKTtcblx0XHR0aGlzLl9vUm91dGVyUHJveHkuZGVzdHJveSgpO1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0ZGVsZXRlIHRoaXMuX29BcHBTdGF0ZUhhbmRsZXI7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRkZWxldGUgdGhpcy5fb1JvdXRlclByb3h5O1xuXHRcdGRlbGV0ZU1vZGVsQ2FjaGVEYXRhKHRoaXMuZ2V0TWV0YU1vZGVsKCkpO1xuXHRcdHRoaXMuZ2V0TW9kZWwoXCJ1aVwiKS5kZXN0cm95KCk7XG5cdFx0dGhpcy5jbGVhblBhZ2VDb25maWd1cmF0aW9uQ2hhbmdlcygpO1xuXHR9XG5cblx0Z2V0TWV0YU1vZGVsKCk6IE9EYXRhTWV0YU1vZGVsIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpO1xuXHR9XG5cblx0Z2V0RGlhZ25vc3RpY3MoKTogRGlhZ25vc3RpY3Mge1xuXHRcdHJldHVybiB0aGlzLl9vRGlhZ25vc3RpY3M7XG5cdH1cblxuXHRkZXN0cm95KGJTdXBwcmVzc0ludmFsaWRhdGU/OiBib29sZWFuKTogdm9pZCB7XG5cdFx0dGhpcy5pc0V4aXRpbmcgPSB0cnVlO1xuXG5cdFx0Ly8gTEVBS1MsIHdpdGggd29ya2Fyb3VuZCBmb3Igc29tZSBGbGV4IC8gTURDIGlzc3VlXG5cdFx0dHJ5IHtcblx0XHRcdGRlbGV0ZSBBcHBDb21wb25lbnQuaW5zdGFuY2VNYXBbdGhpcy5nZXRJZCgpXTtcblxuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdFx0ZGVsZXRlICh3aW5kb3cgYXMgdW5rbm93bikuX3JvdXRpbmc7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0TG9nLmluZm8oZSBhcyBzdHJpbmcpO1xuXHRcdH1cblxuXHRcdC8vV09SS0FST1VORCBmb3Igc3RpY2t5IGRpc2NhcmQgcmVxdWVzdCA6IGR1ZSB0byBhc3luYyBjYWxsYmFjaywgcmVxdWVzdCB0cmlnZ2VyZWQgYnkgdGhlIGV4aXRBcHBsaWNhdGlvbiB3aWxsIGJlIHNlbmQgYWZ0ZXIgdGhlIFVJQ29tcG9uZW50LnByb3RvdHlwZS5kZXN0cm95XG5cdFx0Ly9zbyB3ZSBuZWVkIHRvIGNvcHkgdGhlIFJlcXVlc3RvciBoZWFkZXJzIGFzIGl0IHdpbGwgYmUgZGVzdHJveVxuXG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRjb25zdCBvTWFpbk1vZGVsID0gdGhpcy5vTW9kZWxzW3VuZGVmaW5lZF07XG5cdFx0bGV0IG9IZWFkZXJzO1xuXHRcdGlmIChvTWFpbk1vZGVsPy5vUmVxdWVzdG9yKSB7XG5cdFx0XHRvSGVhZGVycyA9IE9iamVjdC5hc3NpZ24oe30sIG9NYWluTW9kZWwub1JlcXVlc3Rvci5tSGVhZGVycyk7XG5cdFx0fVxuXG5cdFx0Ly8gQXMgd2UgbmVlZCB0byBjbGVhbnVwIHRoZSBhcHBsaWNhdGlvbiAvIGhhbmRsZSB0aGUgZGlydHkgb2JqZWN0IHdlIG5lZWQgdG8gY2FsbCBvdXIgY2xlYW51cCBiZWZvcmUgdGhlIG1vZGVscyBhcmUgZGVzdHJveWVkXG5cdFx0dGhpcy5nZXRSb3V0aW5nU2VydmljZSgpPy5iZWZvcmVFeGl0Py4oKTtcblx0XHR0aGlzLnVucmVnaXN0ZXJDYWxsYmFja3MoKTtcblx0XHRzdXBlci5kZXN0cm95KGJTdXBwcmVzc0ludmFsaWRhdGUpO1xuXHRcdGlmIChvSGVhZGVycyAmJiBvTWFpbk1vZGVsLm9SZXF1ZXN0b3IpIHtcblx0XHRcdG9NYWluTW9kZWwub1JlcXVlc3Rvci5tSGVhZGVycyA9IG9IZWFkZXJzO1xuXHRcdH1cblx0fVxuXG5cdGdldFJvdXRpbmdTZXJ2aWNlKCk6IFJvdXRpbmdTZXJ2aWNlIHtcblx0XHRyZXR1cm4ge30gYXMgUm91dGluZ1NlcnZpY2U7IC8vIG92ZXJyaWRlbiBhdCBydW50aW1lXG5cdH1cblxuXHRnZXRTaGVsbFNlcnZpY2VzKCk6IElTaGVsbFNlcnZpY2VzIHtcblx0XHRyZXR1cm4ge30gYXMgSVNoZWxsU2VydmljZXM7IC8vIG92ZXJyaWRlbiBhdCBydW50aW1lXG5cdH1cblxuXHRnZXROYXZpZ2F0aW9uU2VydmljZSgpOiBOYXZpZ2F0aW9uU2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIE5hdmlnYXRpb25TZXJ2aWNlOyAvLyBvdmVycmlkZW4gYXQgcnVudGltZVxuXHR9XG5cblx0Z2V0U2lkZUVmZmVjdHNTZXJ2aWNlKCk6IFNpZGVFZmZlY3RzU2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIFNpZGVFZmZlY3RzU2VydmljZTtcblx0fVxuXG5cdGdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzKCk6IEVudmlyb25tZW50Q2FwYWJpbGl0aWVzU2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIEVudmlyb25tZW50Q2FwYWJpbGl0aWVzU2VydmljZTtcblx0fVxuXG5cdGdldENvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZSgpOiBDb2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBDb2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2U7XG5cdH1cblxuXHRnZXRWaWV3UHJlbG9hZGVyU2VydmljZSgpOiBWaWV3UHJlbG9hZGVyU2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIFZpZXdQcmVsb2FkZXJTZXJ2aWNlO1xuXHR9XG5cblx0Z2V0Q29sbGFib3JhdGl2ZVRvb2xzU2VydmljZSgpOiBDb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlIHtcblx0XHRyZXR1cm4ge30gYXMgQ29sbGFib3JhdGl2ZVRvb2xzU2VydmljZTtcblx0fVxuXG5cdGdldENvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2UoKTogQ29sbGFib3JhdGl2ZURyYWZ0U2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIENvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2U7XG5cdH1cblxuXHRnZXRDb250ZXh0U2hhcmluZ1NlcnZpY2UoKTogQ29udGV4dFNoYXJpbmdTZXJ2aWNlIHtcblx0XHRyZXR1cm4ge30gYXMgQ29udGV4dFNoYXJpbmdTZXJ2aWNlO1xuXHR9XG5cblx0Z2V0VGVsZW1ldHJ5U2VydmljZSgpOiBUZWxlbWV0cnlTZXJ2aWNlIHtcblx0XHRyZXR1cm4ge30gYXMgVGVsZW1ldHJ5U2VydmljZTtcblx0fVxuXG5cdGdldFZhbHVlSGVscEhpc3RvcnlTZXJ2aWNlKCk6IFZhbHVlSGVscEhpc3RvcnlTZXJ2aWNlIHtcblx0XHRyZXR1cm4ge30gYXMgVmFsdWVIZWxwSGlzdG9yeVNlcnZpY2U7XG5cdH1cblxuXHRnZXRJbmxpbmVFZGl0U2VydmljZSgpOiBJbmxpbmVFZGl0U2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIElubGluZUVkaXRTZXJ2aWNlO1xuXHR9XG5cblx0YXN5bmMgZ2V0U3RhcnR1cFBhcmFtZXRlcnMoKTogUHJvbWlzZTxTdGFydHVwUGFyYW1ldGVycz4ge1xuXHRcdGNvbnN0IHN0YXJ0dXBQYXJhbXMgPSB0aGlzLmdldENvbXBvbmVudERhdGEoKT8uc3RhcnR1cFBhcmFtZXRlcnM7XG5cdFx0aWYgKFxuXHRcdFx0c3RhcnR1cFBhcmFtcz8ucHJlZmVycmVkQWN0aW9uPy5bMF0uaW5jbHVkZXMoXCJzdW1tYXJ5XCIpICYmXG5cdFx0XHR0aGlzLmdldFByZWZlcnJlZEFjdGlvblN0YXR1cygpID09PSBsaWJyYXJ5LlByZWZlcnJlZEFjdGlvblN0YXR1c1R5cGUuTm90U2V0XG5cdFx0KSB7XG5cdFx0XHR0aGlzLnNldFByZWZlcnJlZEFjdGlvblN0YXR1cyhsaWJyYXJ5LlByZWZlcnJlZEFjdGlvblN0YXR1c1R5cGUuQ2FuUGVyZm9ybSk7XG5cdFx0fVxuXHRcdHJldHVybiBzdGFydHVwUGFyYW1zID8/IHt9O1xuXHR9XG5cblx0cmVzdG9yZSgpOiB2b2lkIHtcblx0XHQvLyBjYWxsZWQgYnkgRkxQIHdoZW4gYXBwIHNhcC1rZWVwLWFsaXZlIGlzIGVuYWJsZWQgYW5kIGFwcCBpcyByZXN0b3JlZFxuXHRcdGZvciAoY29uc3Qgc3RhcnRlZFNlcnZpY2Ugb2YgdGhpcy5fc3RhcnRlZFNlcnZpY2VzKSB7XG5cdFx0XHRzdGFydGVkU2VydmljZS5vblJlc3RvcmU/LigpO1xuXHRcdH1cblx0XHR0aGlzLmdldFJvb3RWaWV3Q29udHJvbGxlcigpLnZpZXdTdGF0ZS5vblJlc3RvcmUoKTtcblxuXHRcdC8vIFJlc2V0IGFsbCB2YWx1ZXMgaW4gdmVyc2lvbkFjdGl2YXRpb25TdGF0dXMgdG8gZmFsc2Vcblx0XHRBcHBTdGF0ZUhhbmRsZXIucmVzZXRWZXJzaW9uQWN0aXZhdGlvblN0YXR1cygpO1xuXG5cdFx0dGhpcy5zdXNwZW5kZWQgPSBmYWxzZTtcblx0fVxuXG5cdHN1c3BlbmQoKTogdm9pZCB7XG5cdFx0Ly8gY2FsbGVkIGJ5IEZMUCB3aGVuIGFwcCBzYXAta2VlcC1hbGl2ZSBpcyBlbmFibGVkIGFuZCBhcHAgaXMgc3VzcGVuZGVkXG5cdFx0Zm9yIChjb25zdCBzdGFydGVkU2VydmljZSBvZiB0aGlzLl9zdGFydGVkU2VydmljZXMpIHtcblx0XHRcdHN0YXJ0ZWRTZXJ2aWNlLm9uU3VzcGVuZD8uKCk7XG5cdFx0fVxuXHRcdHRoaXMuZ2V0Um9vdFZpZXdDb250cm9sbGVyKCkudmlld1N0YXRlLm9uU3VzcGVuZCgpO1xuXG5cdFx0dGhpcy5zdXNwZW5kZWQgPSB0cnVlO1xuXHR9XG5cblx0aXNTdXNwZW5kZWQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuc3VzcGVuZGVkO1xuXHR9XG5cblx0YXN5bmMgaXNBcHBDb21wb25lbnRCdXN5KCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHJldHVybiB0aGlzLmRpc2NhcmRQcm9taXNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIG5hdmlnYXRlQmFzZWRPblN0YXJ0dXBQYXJhbWV0ZXIgZnVuY3Rpb24gaXMgYSBwdWJsaWMgYXBpIHRoYXQgYWN0cyBhcyBhIHdyYXBwZXIgdG8gX21hbmFnZURlZXBMaW5rU3RhcnR1cCBmdW5jdGlvbi4gSXQgcGFzc2VzIHRoZSBzdGFydHVwIHBhcmFtZXRlcnMgZnVydGhlciB0byBfbWFuYWdlRGVlcExpbmtTdGFydHVwIGZ1bmN0aW9uXG5cdCAqIEBwYXJhbSBzdGFydHVwUGFyYW1ldGVycyBEZWZpbmVzIHRoZSBzdGFydHVwIHBhcmFtZXRlcnMgd2hpY2ggaXMgZnVydGhlciBwYXNzZWQgdG8gX21hbmFnZURlZXBMaW5rU3RhcnR1cCBmdW5jdGlvbi5cblx0ICovXG5cblx0YXN5bmMgbmF2aWdhdGVCYXNlZE9uU3RhcnR1cFBhcmFtZXRlcihzdGFydHVwUGFyYW1ldGVyczogU3RhcnR1cFBhcmFtZXRlcnMgfCBudWxsIHwgdW5kZWZpbmVkKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dHJ5IHtcblx0XHRcdGlmICghQnVzeUxvY2tlci5pc0xvY2tlZCh0aGlzLmdldE1vZGVsKFwidWlcIikpKSB7XG5cdFx0XHRcdGlmICghc3RhcnR1cFBhcmFtZXRlcnMpIHtcblx0XHRcdFx0XHRzdGFydHVwUGFyYW1ldGVycyA9IG51bGw7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3Qgcm91dGluZ1NlcnZpY2UgPSB0aGlzLmdldFJvdXRpbmdTZXJ2aWNlKCk7XG5cdFx0XHRcdGF3YWl0IHJvdXRpbmdTZXJ2aWNlLl9tYW5hZ2VEZWVwTGlua1N0YXJ0dXAoc3RhcnR1cFBhcmFtZXRlcnMpO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGV4Y2VwdGlvbjogdW5rbm93bikge1xuXHRcdFx0TG9nLmVycm9yKGV4Y2VwdGlvbiBhcyBzdHJpbmcpO1xuXHRcdFx0QnVzeUxvY2tlci51bmxvY2sodGhpcy5nZXRNb2RlbChcInVpXCIpKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogVXNlZCB0byBhbGxvdyBkaXNhYmxpbmcgdGhlIENvbGxhYm9yYXRpb24gTWFuYWdlciBpbnRlZ3JhdGlvbiBmb3IgdGhlIE9WUCB1c2UgY2FzZS5cblx0ICogQHJldHVybnMgV2hldGhlciB0aGUgY29sbGFib3JhdGlvbiBtYW5hZ2VyIHNlcnZpY2UgaXMgYWN0aXZlLlxuXHQgKi9cblx0aXNDb2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2VFbmFibGVkKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlZ2lzdGVyIHByb2Nlc3NlcyB0aGF0IG5lZWQgdG8gYmUgcnVuIGZvciBldmVyeSBpbnN0YW5jZSBwcmlvciB0byBzdGFydHVwLlxuXHQgKiBAcGFyYW0gZm5Qcm9jZXNzIEZ1bmN0aW9uIHRoYXQgaG9sZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIHByb2Nlc3MuXG5cdCAqXG5cdCAqIFRoZSByZWdpc3RlcmVkIHByb2Nlc3MgY2FuIGJlIGFuIGFzeW5jaHJvbm91cyBwcm9jZXNzLlxuXHQgKiBJdCBzaGFsbCBiZSBjYWxsZWQgd2l0aCB0aGUgQXBwQ29tcG9uZW50IGluc3RhbmNlIGFzIGEgcGFyYW1ldGVyIGJlZm9yZSBzdGFydHVwLlxuXHQgKi9cblx0c3RhdGljIHJlZ2lzdGVySW5zdGFuY2VEZXBlbmRlbnRQcm9jZXNzRm9yU3RhcnRVcChmblByb2Nlc3M6IChhcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudCkgPT4gUHJvbWlzZTx2b2lkPik6IHZvaWQge1xuXHRcdHRoaXMuaW5zdGFuY2VEZXBlbmRlbnRQcm9jZXNzZXMucHVzaChmblByb2Nlc3MpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlZ2lzdGVycyBjdXN0b20gaW5pdGlhbGl6YXRpb24gY2hlY2tzIHRoYXQgYXJlIHJ1biBiZWZvcmUgdGhlIGNvbXBvbmVudCBpcyBpbml0aWFsaXplZC5cblx0ICogVGhpcyBpcyB1c2VmdWwgZm9yIHJ1bm5pbmcgY2hlY2tzIHRoYXQgYXJlIHNwZWNpZmljIHRvIGEgbGlicmFyeS5cblx0ICogVGhlc2UgY2hlY2tzIGFyZSBydW4gYmVmb3JlIHRoZSBjb21wb25lbnQgaXMgaW5pdGlhbGl6ZWQgYW5kIGJlZm9yZSB0aGUgbWFuaWZlc3QgaXMgbWVyZ2VkLlxuXHQgKiBAcGFyYW0gZm5Qcm9jZXNzXG5cdCAqL1xuXHRzdGF0aWMgcmVnaXN0ZXJJbml0Q2hlY2tzKGZuUHJvY2VzczogKG1hbmlmZXN0Q29udGVudDogTWFuaWZlc3RDb250ZW50W1wic2FwLnVpNVwiXSkgPT4gdm9pZCk6IHZvaWQge1xuXHRcdHRoaXMuX2N1c3RvbU1hbmlmZXN0Q2hlY2tzLnB1c2goZm5Qcm9jZXNzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWdpc3RlcnMgdGhlIGNhbGxiYWNrcyByZWxhdGVkIHRvIGEgc3RpY2t5IGVkaXQgc2Vzc2lvbi5cblx0ICogQHBhcmFtIGRpcnR5U3RhdGVQcm92aWRlckNhbGxiYWNrXG5cdCAqIEBwYXJhbSBkaXNjYXJkQWZ0ZXJOYXZpZ2F0aW9uQ2FsbGJhY2tcblx0ICogQHBhcmFtIHNlc3Npb25UaW1lb3V0Q2FsbGJhY2tcblx0ICovXG5cdHJlZ2lzdGVyQ2FsbGJhY2tzKFxuXHRcdGRpcnR5U3RhdGVQcm92aWRlckNhbGxiYWNrOiBGdW5jdGlvbixcblx0XHRkaXNjYXJkQWZ0ZXJOYXZpZ2F0aW9uQ2FsbGJhY2s6IEZ1bmN0aW9uLFxuXHRcdHNlc3Npb25UaW1lb3V0Q2FsbGJhY2s/OiBGdW5jdGlvblxuXHQpOiB2b2lkIHtcblx0XHR0aGlzLmRpcnR5U3RhdGVQcm92aWRlckNhbGxiYWNrID0gZGlydHlTdGF0ZVByb3ZpZGVyQ2FsbGJhY2s7XG5cdFx0dGhpcy5nZXRTaGVsbFNlcnZpY2VzKCkucmVnaXN0ZXJEaXJ0eVN0YXRlUHJvdmlkZXIoZGlydHlTdGF0ZVByb3ZpZGVyQ2FsbGJhY2spO1xuXG5cdFx0aWYgKHNlc3Npb25UaW1lb3V0Q2FsbGJhY2spIHtcblx0XHRcdHRoaXMuc3RpY2t5U2Vzc2lvblRpbWVvdXRDYWxsYmFjayA9IHNlc3Npb25UaW1lb3V0Q2FsbGJhY2s7XG5cdFx0XHR0aGlzLmdldE1vZGVsKCkuYXR0YWNoU2Vzc2lvblRpbWVvdXQoc2Vzc2lvblRpbWVvdXRDYWxsYmFjayk7XG5cdFx0fVxuXG5cdFx0dGhpcy5kaXNjYXJkQWZ0ZXJOYXZpZ2F0aW9uQ2FsbGJhY2sgPSBkaXNjYXJkQWZ0ZXJOYXZpZ2F0aW9uQ2FsbGJhY2s7XG5cdFx0dGhpcy5fcm91dGVNYXRjaEhhbmRsZXIgPSAoKTogdm9pZCA9PiB7XG5cdFx0XHRpZiAodGhpcy5kaXNjYXJkQWZ0ZXJOYXZpZ2F0aW9uQ2FsbGJhY2spIHtcblx0XHRcdFx0dGhpcy5kaXNjYXJkUHJvbWlzZSA9IHRoaXMuZGlzY2FyZEFmdGVyTmF2aWdhdGlvbkNhbGxiYWNrKCk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHR0aGlzLmdldFJvdXRpbmdTZXJ2aWNlKCkuYXR0YWNoUm91dGVNYXRjaGVkKHt9LCB0aGlzLl9yb3V0ZU1hdGNoSGFuZGxlcik7XG5cdH1cblxuXHQvKipcblx0ICogVW5yZWdpc3RlcnMgdGhlIGNhbGxiYWNrcyByZWxhdGVkIHRvIGEgc3RpY2t5IGVkaXQgc2Vzc2lvbi5cblx0ICovXG5cdHVucmVnaXN0ZXJDYWxsYmFja3MoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuZGlydHlTdGF0ZVByb3ZpZGVyQ2FsbGJhY2spIHtcblx0XHRcdHRoaXMuZ2V0U2hlbGxTZXJ2aWNlcygpLmRlcmVnaXN0ZXJEaXJ0eVN0YXRlUHJvdmlkZXIodGhpcy5kaXJ0eVN0YXRlUHJvdmlkZXJDYWxsYmFjayk7XG5cdFx0XHR0aGlzLmRpcnR5U3RhdGVQcm92aWRlckNhbGxiYWNrID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRpZiAodGhpcy5zdGlja3lTZXNzaW9uVGltZW91dENhbGxiYWNrICYmIHRoaXMuZ2V0TW9kZWwoKSkge1xuXHRcdFx0dGhpcy5nZXRNb2RlbCgpLmRldGFjaFNlc3Npb25UaW1lb3V0KHRoaXMuc3RpY2t5U2Vzc2lvblRpbWVvdXRDYWxsYmFjayk7XG5cdFx0XHR0aGlzLnN0aWNreVNlc3Npb25UaW1lb3V0Q2FsbGJhY2sgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGlmICh0aGlzLl9yb3V0ZU1hdGNoSGFuZGxlcikge1xuXHRcdFx0dGhpcy5nZXRSb3V0aW5nU2VydmljZSgpLmRldGFjaFJvdXRlTWF0Y2hlZCh0aGlzLl9yb3V0ZU1hdGNoSGFuZGxlcik7XG5cdFx0XHR0aGlzLl9yb3V0ZU1hdGNoSGFuZGxlciA9IHVuZGVmaW5lZDtcblx0XHRcdHRoaXMuZGlzY2FyZEFmdGVyTmF2aWdhdGlvbkNhbGxiYWNrID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgdGhlIGNvbXBvbmVudCBpcyBlbWJlZGRlZCBpbiBhbm90aGVyIGFwcGxpY2F0aW9uLlxuXHQgKiBUaGlzIGlzIGRldGVybWluZWQgYnkgY2hlY2tpbmcgaWYgdGhlIGNvbXBvbmVudCBkYXRhIGNvbnRhaW5zIGEgYGZlRW52aXJvbm1lbnRgIG9iamVjdC5cblx0ICogVGhpcyBpcyBzZXQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGVtYmVkZGVkIGluIE15IEluYm94LlxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBjb21wb25lbnQgaXMgZW1iZWRkZWQsIGZhbHNlIG90aGVyd2lzZS5cblx0ICovXG5cdF9pc0VtYmVkZGVkKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiAhIXRoaXMuZ2V0Q29tcG9uZW50RGF0YSgpPy5mZUVudmlyb25tZW50O1xuXHR9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1pZ25vcmVcbmludGVyZmFjZSBBcHBDb21wb25lbnQgZXh0ZW5kcyBVSUNvbXBvbmVudCB7XG5cdGlzQWRhcHRhdGlvbk1vZGUoKTogYm9vbGVhbjtcblx0Z2V0TWFuaWZlc3QoKTogTWFuaWZlc3RDb250ZW50O1xuXHRnZXRNYW5pZmVzdEVudHJ5KGVudHJ5OiBcInNhcC5hcHBcIik6IE1hbmlmZXN0Q29udGVudFtcInNhcC5hcHBcIl07XG5cdGdldE1hbmlmZXN0RW50cnkoZW50cnk6IFwic2FwLnVpNVwiKTogTWFuaWZlc3RDb250ZW50W1wic2FwLnVpNVwiXTtcblx0X2dldE1hbmlmZXN0RW50cnkoZW50cnk6IFwic2FwLnVpNVwiLCBtZXJnZWQ6IGJvb2xlYW4pOiBNYW5pZmVzdENvbnRlbnRbXCJzYXAudWk1XCJdO1xuXHRnZXRNYW5pZmVzdEVudHJ5KGVudHJ5OiBcInNhcC51aVwiKTogTWFuaWZlc3RDb250ZW50W1wic2FwLnVpXCJdO1xuXHRnZXRNYW5pZmVzdEVudHJ5KGVudHJ5OiBcInNhcC5mZVwiKTogTWFuaWZlc3RDb250ZW50W1wic2FwLmZlXCJdIHwgdW5kZWZpbmVkO1xuXHRnZXRNYW5pZmVzdEVudHJ5KGVudHJ5OiBcInNhcC5maW9yaVwiKTogTWFuaWZlc3RDb250ZW50W1wic2FwLmZpb3JpXCJdO1xuXHRnZXRDb21wb25lbnREYXRhKCk6IENvbXBvbmVudERhdGE7XG5cdGdldFJvb3RDb250cm9sKCk6IHtcblx0XHRnZXRDb250cm9sbGVyKCk6IFJvb3RWaWV3QmFzZUNvbnRyb2xsZXI7XG5cdH0gJiBWaWV3O1xuXHRnZXRNb2RlbCgpOiBPRGF0YU1vZGVsO1xuXHRnZXRNb2RlbChuYW1lOiBcInVpXCIpOiBKU09OTW9kZWw7XG5cdGdldE1vZGVsKG5hbWU6IHN0cmluZyk6IE1vZGVsIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBBcHBDb21wb25lbnQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQTJDQTtBQUNBO0FBQ0E7O0VBeUJBLE1BQU1BLFdBQVcsR0FBR0MsT0FBTyxDQUFDRCxXQUFXO0VBQ3ZDLE1BQU1FLE9BQU8sR0FBRztJQUNmQyxHQUFHLEVBQUU7TUFDSkMsUUFBUSxFQUFFLDBCQUEwQjtNQUNwQ0Msc0JBQXNCLEVBQUUseUNBQXlDO01BQ2pFQyxXQUFXLEVBQUU7SUFDZCxDQUFDO0lBQ0RDLFlBQVksRUFBRTtNQUNiSCxRQUFRLEVBQUUsbUNBQW1DO01BQzdDQyxzQkFBc0IsRUFBRSxrREFBa0Q7TUFDMUVDLFdBQVcsRUFBRTtJQUNkO0VBQ0QsQ0FBQztFQVlEO0VBQ0EsTUFBTUUsUUFBUSxHQUFHQyxNQUFNO0VBT3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQVhBLElBNkdNQyxZQUFZLElBQUFDLElBQUEsR0FqR2pCQyxjQUFjLENBQUMsMEJBQTBCLEVBQUU7SUFDM0NDLE1BQU0sRUFBRTtNQUNQQyxTQUFTLEVBQUU7SUFDWixDQUFDO0lBQ0RDLFFBQVEsRUFBRTtNQUNUQyxRQUFRLEVBQUUsT0FBTztNQUNqQixTQUFTLEVBQUU7UUFDVkMsUUFBUSxFQUFFO1VBQ1RDLG9CQUFvQixFQUFFO1lBQ3JCQyxXQUFXLEVBQUUsMkNBQTJDO1lBQ3hEQyxPQUFPLEVBQUU7VUFDVixDQUFDO1VBQ0RDLGFBQWEsRUFBRTtZQUNkRixXQUFXLEVBQUUsMkNBQTJDO1lBQ3hEQyxPQUFPLEVBQUUsU0FBUztZQUNsQkUsUUFBUSxFQUFFO2NBQ1RDLE9BQU8sRUFBRSxDQUFDLDJCQUEyQixDQUFDO2NBQ3RDQyxT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
|