@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
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2025 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/BaseController", "sap/fe/core/ExtensionAPI", "sap/fe/core/controllerextensions/CollaborativeDraft", "sap/fe/core/controllerextensions/EditFlow", "sap/fe/core/controllerextensions/InlineEditFlow", "sap/fe/core/controllerextensions/IntentBasedNavigation", "sap/fe/core/controllerextensions/InternalIntentBasedNavigation", "sap/fe/core/controllerextensions/InternalRouting", "sap/fe/core/controllerextensions/MessageHandler", "sap/fe/core/controllerextensions/PageReady", "sap/fe/core/controllerextensions/Paginator", "sap/fe/core/controllerextensions/Placeholder", "sap/fe/core/controllerextensions/Recommendations", "sap/fe/core/controllerextensions/Routing", "sap/fe/core/controllerextensions/Share", "sap/fe/core/controllerextensions/SideEffects", "sap/fe/core/controllerextensions/Telemetry", "sap/fe/core/controllerextensions/ViewState", "sap/fe/core/formatters/
|
|
5
|
+
sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/BaseController", "sap/fe/core/ExtensionAPI", "sap/fe/core/controllerextensions/CollaborativeDraft", "sap/fe/core/controllerextensions/EditFlow", "sap/fe/core/controllerextensions/InlineEditFlow", "sap/fe/core/controllerextensions/IntentBasedNavigation", "sap/fe/core/controllerextensions/InternalIntentBasedNavigation", "sap/fe/core/controllerextensions/InternalRouting", "sap/fe/core/controllerextensions/MessageHandler", "sap/fe/core/controllerextensions/PageReady", "sap/fe/core/controllerextensions/Paginator", "sap/fe/core/controllerextensions/Placeholder", "sap/fe/core/controllerextensions/Recommendations", "sap/fe/core/controllerextensions/Routing", "sap/fe/core/controllerextensions/Share", "sap/fe/core/controllerextensions/SideEffects", "sap/fe/core/controllerextensions/Telemetry", "sap/fe/core/controllerextensions/ViewState", "sap/fe/core/formatters/Scope", "sap/m/MessageBox", "sap/ui/core/Component", "sap/ui/core/Lib", "./controllerextensions/ContextSharing", "./controllerextensions/cards/CollaborationManager"], function (Log, ClassSupport, BaseController, ExtensionAPI, CollaborativeDraft, EditFlow, InlineEditFlow, IntentBasedNavigation, InternalIntentBasedNavigation, InternalRouting, MessageHandler, PageReady, Paginator, Placeholder, Recommendations, Routing, Share, SideEffects, Telemetry, ViewState, Scope, MessageBox, Component, Library, ContextSharing, CollaborationManager) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _dec20, _dec21, _dec22, _dec23, _dec24, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17, _descriptor18;
|
|
@@ -18,7 +18,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/BaseCont
|
|
|
18
18
|
/**
|
|
19
19
|
* Base controller class for your custom page used inside an SAP Fiori elements application.
|
|
20
20
|
*
|
|
21
|
-
* This controller provides preconfigured extensions that
|
|
21
|
+
* This controller provides preconfigured extensions that ensure you have the basic functionalities required to use the building blocks.
|
|
22
22
|
* @hideconstructor
|
|
23
23
|
* @public
|
|
24
24
|
* @since 1.88.0
|
|
@@ -51,14 +51,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/BaseCont
|
|
|
51
51
|
_initializerDefineProperty(_this, "contextSharing", _descriptor16, _this);
|
|
52
52
|
_initializerDefineProperty(_this, "collaborationManager", _descriptor17, _this);
|
|
53
53
|
_initializerDefineProperty(_this, "inlineEditFlow", _descriptor18, _this);
|
|
54
|
-
_this._formatters =
|
|
55
|
-
ValueFormatter: ValueFormatter,
|
|
56
|
-
StandardFormatter: StandardFormatter,
|
|
57
|
-
CriticalityFormatter: CriticalityFormatter,
|
|
58
|
-
FPMFormatter: FPMFormatter,
|
|
59
|
-
KPIFormatter: KPIFormatter,
|
|
60
|
-
CollaborationFormatter: CollaborationFormatter
|
|
61
|
-
};
|
|
54
|
+
_this._formatters = Scope._formatters;
|
|
62
55
|
_this.initialisationForPageControllerDoneProperly = false;
|
|
63
56
|
const ownProps = Object.getOwnPropertyNames(_this.constructor.prototype);
|
|
64
57
|
if (ownProps.includes("_isExtension")) {
|
|
@@ -98,36 +91,14 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/BaseCont
|
|
|
98
91
|
_inheritsLoose(PageController, _BaseController);
|
|
99
92
|
var _proto = PageController.prototype;
|
|
100
93
|
_proto.onInit = function onInit() {
|
|
101
|
-
const
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
collaboration: {}
|
|
110
|
-
});
|
|
111
|
-
this.getView().bindElement({
|
|
112
|
-
path: "/",
|
|
113
|
-
model: "ui"
|
|
114
|
-
});
|
|
115
|
-
this.getView().bindElement({
|
|
116
|
-
path: sPath,
|
|
117
|
-
model: "internal"
|
|
118
|
-
});
|
|
119
|
-
|
|
120
|
-
// for the time being provide it also pageInternal as some macros access it - to be removed
|
|
121
|
-
this.getView().bindElement({
|
|
122
|
-
path: sPath,
|
|
123
|
-
model: "pageInternal"
|
|
124
|
-
});
|
|
125
|
-
this.getView().setModel(oInternalModel, "pageInternal");
|
|
126
|
-
|
|
127
|
-
// as the model propagation happens after init but we actually want to access the binding context in the
|
|
128
|
-
// init phase already setting the model here
|
|
129
|
-
this.getView().setModel(oUIModel, "ui");
|
|
130
|
-
this.getView().setModel(oInternalModel, "internal");
|
|
94
|
+
const ownerComponent = this.getOwnerComponent();
|
|
95
|
+
const fnModel = this.getView().getModel;
|
|
96
|
+
this.getView().getModel = modelName => {
|
|
97
|
+
if (modelName === "$cmd") {
|
|
98
|
+
return fnModel.apply(this.getView(), [modelName]);
|
|
99
|
+
}
|
|
100
|
+
return fnModel.apply(this.getView(), [modelName]) ?? ownerComponent.getModel(modelName);
|
|
101
|
+
};
|
|
131
102
|
this.initialisationForPageControllerDoneProperly = true;
|
|
132
103
|
};
|
|
133
104
|
_proto.onBeforeRendering = function onBeforeRendering() {
|
|
@@ -162,6 +133,55 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/BaseCont
|
|
|
162
133
|
};
|
|
163
134
|
_proto._getPageTitleInformation = async function _getPageTitleInformation() {
|
|
164
135
|
return Promise.resolve({});
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Get the browser title of the object page.
|
|
140
|
+
* @param pageTitleInformation Present page title information
|
|
141
|
+
* @returns Title information to be used by shell services for browser title
|
|
142
|
+
*/;
|
|
143
|
+
_proto._getBrowserTitle = async function _getBrowserTitle(pageTitleInformation) {
|
|
144
|
+
const {
|
|
145
|
+
subtitle,
|
|
146
|
+
title,
|
|
147
|
+
description
|
|
148
|
+
} = pageTitleInformation;
|
|
149
|
+
let titleAggregator;
|
|
150
|
+
const titleExists = title !== undefined && title !== null && title !== "";
|
|
151
|
+
const subtitleExists = subtitle !== undefined && subtitle !== null && subtitle !== "";
|
|
152
|
+
const descriptionExists = description !== undefined && description !== null && description !== "";
|
|
153
|
+
|
|
154
|
+
// Apply title formatting rules based on available components
|
|
155
|
+
if (titleExists && subtitleExists && descriptionExists) {
|
|
156
|
+
// Rule 1: '<subTitle> (<description>) - <title>'
|
|
157
|
+
titleAggregator = `${subtitle} (${description}) - ${title}`;
|
|
158
|
+
} else if (titleExists && subtitleExists) {
|
|
159
|
+
// Rule 2: '<subTitle> - <title>'
|
|
160
|
+
titleAggregator = `${subtitle} - ${title}`;
|
|
161
|
+
} else if (subtitleExists && descriptionExists) {
|
|
162
|
+
// Rule 3: '<subTitle> (<description>)'
|
|
163
|
+
titleAggregator = `${subtitle} (${description})`;
|
|
164
|
+
} else if (titleExists && descriptionExists) {
|
|
165
|
+
// Rule 4: '<description> - <title>'
|
|
166
|
+
titleAggregator = `${description} - ${title}`;
|
|
167
|
+
} else if (titleExists) {
|
|
168
|
+
// Rule 5: '<title>'
|
|
169
|
+
titleAggregator = title;
|
|
170
|
+
} else if (subtitleExists) {
|
|
171
|
+
// Rule 6: '<subTitle>'
|
|
172
|
+
titleAggregator = subtitle;
|
|
173
|
+
} else if (descriptionExists) {
|
|
174
|
+
// Rule 7: '<description>'
|
|
175
|
+
titleAggregator = description;
|
|
176
|
+
} else {
|
|
177
|
+
// Rule 8: None exists, log warning and return undefined
|
|
178
|
+
const view = this.getView();
|
|
179
|
+
Log.warning(`No title, subtitle, or description available for browser title of page: ${view.getId()}`);
|
|
180
|
+
return Promise.resolve(undefined);
|
|
181
|
+
}
|
|
182
|
+
return Promise.resolve({
|
|
183
|
+
headerText: titleAggregator
|
|
184
|
+
});
|
|
165
185
|
};
|
|
166
186
|
_proto._getPageModel = function _getPageModel() {
|
|
167
187
|
const pageComponent = Component.getOwnerComponentFor(this.getView());
|
|
@@ -188,7 +208,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/BaseCont
|
|
|
188
208
|
};
|
|
189
209
|
_proto._onInternalAfterBinding = function _onInternalAfterBinding() {
|
|
190
210
|
const view = this.getView();
|
|
191
|
-
this.pageReady.waitFor(this.getAppComponent().getAppStateHandler().applyAppState(view
|
|
211
|
+
this.pageReady.waitFor(this.getAppComponent().getAppStateHandler().applyAppState(view));
|
|
192
212
|
}
|
|
193
213
|
|
|
194
214
|
/**
|
|
@@ -316,7 +336,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/BaseCont
|
|
|
316
336
|
enumerable: true,
|
|
317
337
|
writable: true,
|
|
318
338
|
initializer: null
|
|
319
|
-
}), _applyDecoratedDescriptor(_class2.prototype, "onInit", [_dec20], Object.getOwnPropertyDescriptor(_class2.prototype, "onInit"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onBeforeRendering", [_dec21], Object.getOwnPropertyDescriptor(_class2.prototype, "onBeforeRendering"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "getExtensionAPI", [_dec22], Object.getOwnPropertyDescriptor(_class2.prototype, "getExtensionAPI"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onPageReady", [_dec23, _dec24], Object.getOwnPropertyDescriptor(_class2.prototype, "onPageReady"), _class2.prototype), _class2)) || _class);
|
|
339
|
+
}), _applyDecoratedDescriptor(_class2.prototype, "onInit", [_dec20], Object.getOwnPropertyDescriptor(_class2.prototype, "onInit"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onBeforeRendering", [_dec21], Object.getOwnPropertyDescriptor(_class2.prototype, "onBeforeRendering"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "getExtensionAPI", [_dec22], Object.getOwnPropertyDescriptor(_class2.prototype, "getExtensionAPI"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onPageReady", [_dec23, _dec24], Object.getOwnPropertyDescriptor(_class2.prototype, "onPageReady"), _class2.prototype), _class2)) || _class); // eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
340
|
+
// @ts-ignore
|
|
320
341
|
return PageController;
|
|
321
342
|
}, false);
|
|
322
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYWdlQ29udHJvbGxlciIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwidXNpbmdFeHRlbnNpb24iLCJSb3V0aW5nIiwiX2RlYzMiLCJDb2xsYWJvcmF0aXZlRHJhZnQiLCJfZGVjNCIsIkludGVybmFsUm91dGluZyIsIm92ZXJyaWRlIiwib25BZnRlckJpbmRpbmciLCJ2aWV3IiwiZ2V0VmlldyIsImNvbnRyb2xsZXIiLCJnZXRDb250cm9sbGVyIiwiX29uSW50ZXJuYWxBZnRlckJpbmRpbmciLCJfZGVjNSIsIkVkaXRGbG93IiwiX2RlYzYiLCJJbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJfZGVjNyIsIkludGVybmFsSW50ZW50QmFzZWROYXZpZ2F0aW9uIiwiX2RlYzgiLCJQYWdlUmVhZHkiLCJfZGVjOSIsIk1lc3NhZ2VIYW5kbGVyIiwiX2RlYzEwIiwiU2hhcmUiLCJfZGVjMTEiLCJQYWdpbmF0b3IiLCJfZGVjMTIiLCJWaWV3U3RhdGUiLCJfZGVjMTMiLCJQbGFjZWhvbGRlciIsIl9kZWMxNCIsIlNpZGVFZmZlY3RzIiwiX2RlYzE1IiwiUmVjb21tZW5kYXRpb25zIiwiX2RlYzE2IiwiVGVsZW1ldHJ5IiwiX2RlYzE3IiwiQ29udGV4dFNoYXJpbmciLCJfZGVjMTgiLCJDb2xsYWJvcmF0aW9uTWFuYWdlciIsIl9kZWMxOSIsIklubGluZUVkaXRGbG93IiwiX2RlYzIwIiwicHVibGljRXh0ZW5zaW9uIiwiX2RlYzIxIiwiX2RlYzIyIiwiX2RlYzIzIiwiX2RlYzI0IiwiZXh0ZW5zaWJsZSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQmFzZUNvbnRyb2xsZXIiLCJuYW1lIiwiX3RoaXMiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsIl9kZXNjcmlwdG9yMyIsIl9kZXNjcmlwdG9yNCIsIl9kZXNjcmlwdG9yNSIsIl9kZXNjcmlwdG9yNiIsIl9kZXNjcmlwdG9yNyIsIl9kZXNjcmlwdG9yOCIsIl9kZXNjcmlwdG9yOSIsIl9kZXNjcmlwdG9yMTAiLCJfZGVzY3JpcHRvcjExIiwiX2Rlc2NyaXB0b3IxMiIsIl9kZXNjcmlwdG9yMTMiLCJfZGVzY3JpcHRvcjE0IiwiX2Rlc2NyaXB0b3IxNSIsIl9kZXNjcmlwdG9yMTYiLCJfZGVzY3JpcHRvcjE3IiwiX2Rlc2NyaXB0b3IxOCIsIl9mb3JtYXR0ZXJzIiwiVmFsdWVGb3JtYXR0ZXIiLCJTdGFuZGFyZEZvcm1hdHRlciIsIkNyaXRpY2FsaXR5Rm9ybWF0dGVyIiwiRlBNRm9ybWF0dGVyIiwiS1BJRm9ybWF0dGVyIiwiQ29sbGFib3JhdGlvbkZvcm1hdHRlciIsImluaXRpYWxpc2F0aW9uRm9yUGFnZUNvbnRyb2xsZXJEb25lUHJvcGVybHkiLCJvd25Qcm9wcyIsIk9iamVjdCIsImdldE93blByb3BlcnR5TmFtZXMiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsImluY2x1ZGVzIiwic3BsaWNlIiwiZ2V0UHJvdG90eXBlT2YiLCJvd25Qcm9wIiwiZm5Qcm9wIiwiZ2V0TWV0YWRhdGEiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsIm93bmVyQ29tcG9uZW50IiwiQ29tcG9uZW50IiwiZ2V0T3duZXJDb21wb25lbnRGb3IiLCJydW5Bc093bmVyIiwiYXBwbHkiLCJkZWZpbmVQcm9wZXJ0eSIsImdldCIsIl9vVmlldyIsInNldCIsInYiLCJnZXRPd25lckNvbXBvbmVudCIsInNldFJvb3RDb250cm9sbGVyIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJvbkluaXQiLCJvVUlNb2RlbCIsImdldEFwcENvbXBvbmVudCIsImdldE1vZGVsIiwib0ludGVybmFsTW9kZWwiLCJzUGF0aCIsImdldElkIiwic2V0UHJvcGVydHkiLCJjb250cm9scyIsImNvbGxhYm9yYXRpb24iLCJiaW5kRWxlbWVudCIsInBhdGgiLCJtb2RlbCIsInNldE1vZGVsIiwib25CZWZvcmVSZW5kZXJpbmciLCJMb2ciLCJlcnJvciIsInBsYWNlaG9sZGVyIiwiYXR0YWNoSGlkZUNhbGxiYWNrIiwiZ2V0RXh0ZW5zaW9uQVBJIiwiaWQiLCJleHRlbnNpb25BUEkiLCJFeHRlbnNpb25BUEkiLCJvblBhZ2VSZWFkeSIsIl9tUGFyYW1ldGVycyIsIl9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbiIsIlByb21pc2UiLCJyZXNvbHZlIiwiX2dldFBhZ2VNb2RlbCIsInBhZ2VDb21wb25lbnQiLCJvbk9wZW5Jbk5ld1RhYk5hdmlnYXRlT3V0Qm91bmQiLCJvdXRib3VuZFRhcmdldCIsImNvbnRleHRzIiwiY3JlYXRlUGF0aCIsIm1heE51bWJlck9mU2VsZWN0ZWRJdGVtcyIsInRoYXQiLCJmb3JFYWNoIiwiY29udGV4dCIsIl9pbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJvbkNoZXZyb25QcmVzc05hdmlnYXRlT3V0Qm91bmQiLCJNZXNzYWdlQm94Iiwid2FybmluZyIsIkxpYnJhcnkiLCJnZXRSZXNvdXJjZUJ1bmRsZUZvciIsImdldFRleHQiLCJwYWdlUmVhZHkiLCJ3YWl0Rm9yIiwiZ2V0QXBwU3RhdGVIYW5kbGVyIiwiYXBwbHlBcHBTdGF0ZSIsImdldFJvdXRpbmdUYXJnZXROYW1lIiwicm91dGluZ1RhcmdldE5hbWUiLCJnZXRSb3V0aW5nU2VydmljZSIsImdldFRhcmdldE5hbWVGb3JWaWV3Iiwic2V0U2hvd0Zvb3RlciIsInNob3ciLCJ1bmRlZmluZWQiLCJwYWdlIiwiZ2V0Q29udGVudCIsImlzQSIsImdldEZvb3RlciIsIkJhc2VDb250cm9sbGVyIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJQYWdlQ29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIER5bmFtaWNQYWdlIGZyb20gXCJzYXAvZi9EeW5hbWljUGFnZVwiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIGV4dGVuc2libGUsIHB1YmxpY0V4dGVuc2lvbiwgdXNpbmdFeHRlbnNpb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQmFzZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgRXh0ZW5zaW9uQVBJIGZyb20gXCJzYXAvZmUvY29yZS9FeHRlbnNpb25BUElcIjtcbmltcG9ydCBDb2xsYWJvcmF0aXZlRHJhZnQgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0NvbGxhYm9yYXRpdmVEcmFmdFwiO1xuaW1wb3J0IEVkaXRGbG93IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9FZGl0Rmxvd1wiO1xuaW1wb3J0IElubGluZUVkaXRGbG93IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9JbmxpbmVFZGl0Rmxvd1wiO1xuaW1wb3J0IEludGVudEJhc2VkTmF2aWdhdGlvbiBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW50ZW50QmFzZWROYXZpZ2F0aW9uXCI7XG5pbXBvcnQgSW50ZXJuYWxJbnRlbnRCYXNlZE5hdmlnYXRpb24gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0ludGVybmFsSW50ZW50QmFzZWROYXZpZ2F0aW9uXCI7XG5pbXBvcnQgSW50ZXJuYWxSb3V0aW5nIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9JbnRlcm5hbFJvdXRpbmdcIjtcbmltcG9ydCBNZXNzYWdlSGFuZGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvTWVzc2FnZUhhbmRsZXJcIjtcbmltcG9ydCBQYWdlUmVhZHkgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1BhZ2VSZWFkeVwiO1xuaW1wb3J0IFBhZ2luYXRvciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvUGFnaW5hdG9yXCI7XG5pbXBvcnQgUGxhY2Vob2xkZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1BsYWNlaG9sZGVyXCI7XG5pbXBvcnQgUmVjb21tZW5kYXRpb25zIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9SZWNvbW1lbmRhdGlvbnNcIjtcbmltcG9ydCBSb3V0aW5nIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9Sb3V0aW5nXCI7XG5pbXBvcnQgU2hhcmUgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1NoYXJlXCI7XG5pbXBvcnQgU2lkZUVmZmVjdHMgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1NpZGVFZmZlY3RzXCI7XG5pbXBvcnQgVGVsZW1ldHJ5IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9UZWxlbWV0cnlcIjtcbmltcG9ydCBWaWV3U3RhdGUgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1ZpZXdTdGF0ZVwiO1xuaW1wb3J0IENvbGxhYm9yYXRpb25Gb3JtYXR0ZXIgZnJvbSBcInNhcC9mZS9jb3JlL2Zvcm1hdHRlcnMvQ29sbGFib3JhdGlvbkZvcm1hdHRlclwiO1xuaW1wb3J0IENyaXRpY2FsaXR5Rm9ybWF0dGVyIGZyb20gXCJzYXAvZmUvY29yZS9mb3JtYXR0ZXJzL0NyaXRpY2FsaXR5Rm9ybWF0dGVyXCI7XG5pbXBvcnQgRlBNRm9ybWF0dGVyIGZyb20gXCJzYXAvZmUvY29yZS9mb3JtYXR0ZXJzL0ZQTUZvcm1hdHRlclwiO1xuaW1wb3J0IEtQSUZvcm1hdHRlciBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9LUElGb3JtYXR0ZXJcIjtcbmltcG9ydCBTdGFuZGFyZEZvcm1hdHRlciBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9TdGFuZGFyZEZvcm1hdHRlclwiO1xuaW1wb3J0IFZhbHVlRm9ybWF0dGVyIGZyb20gXCJzYXAvZmUvY29yZS9mb3JtYXR0ZXJzL1ZhbHVlRm9ybWF0dGVyXCI7XG5pbXBvcnQgdHlwZSB7IFRpdGxlSW5mb3JtYXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvcm9vdFZpZXcvUm9vdFZpZXdCYXNlQ29udHJvbGxlclwiO1xuaW1wb3J0IE1lc3NhZ2VCb3ggZnJvbSBcInNhcC9tL01lc3NhZ2VCb3hcIjtcbmltcG9ydCBDb21wb25lbnQgZnJvbSBcInNhcC91aS9jb3JlL0NvbXBvbmVudFwiO1xuaW1wb3J0IExpYnJhcnkgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHR5cGUgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9tZGMvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPYmplY3RQYWdlTGF5b3V0IGZyb20gXCJzYXAvdXhhcC9PYmplY3RQYWdlTGF5b3V0XCI7XG5pbXBvcnQgQ29udGV4dFNoYXJpbmcgZnJvbSBcIi4vY29udHJvbGxlcmV4dGVuc2lvbnMvQ29udGV4dFNoYXJpbmdcIjtcbmltcG9ydCBDb2xsYWJvcmF0aW9uTWFuYWdlciBmcm9tIFwiLi9jb250cm9sbGVyZXh0ZW5zaW9ucy9jYXJkcy9Db2xsYWJvcmF0aW9uTWFuYWdlclwiO1xuXG4vKipcbiAqIEJhc2UgY29udHJvbGxlciBjbGFzcyBmb3IgeW91ciBjdXN0b20gcGFnZSB1c2VkIGluc2lkZSBhbiBTQVAgRmlvcmkgZWxlbWVudHMgYXBwbGljYXRpb24uXG4gKlxuICogVGhpcyBjb250cm9sbGVyIHByb3ZpZGVzIHByZWNvbmZpZ3VyZWQgZXh0ZW5zaW9ucyB0aGF0IHdpbGwgZW5zdXJlIHlvdSBoYXZlIHRoZSBiYXNpYyBmdW5jdGlvbmFsaXRpZXMgcmVxdWlyZWQgdG8gdXNlIHRoZSBidWlsZGluZyBibG9ja3MuXG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAcHVibGljXG4gKiBAc2luY2UgMS44OC4wXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLlBhZ2VDb250cm9sbGVyXCIpXG5jbGFzcyBQYWdlQ29udHJvbGxlciBleHRlbmRzIEJhc2VDb250cm9sbGVyIHtcblx0QHVzaW5nRXh0ZW5zaW9uKFJvdXRpbmcpXG5cdHJvdXRpbmchOiBSb3V0aW5nO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihDb2xsYWJvcmF0aXZlRHJhZnQpXG5cdGNvbGxhYm9yYXRpdmVEcmFmdCE6IENvbGxhYm9yYXRpdmVEcmFmdDtcblxuXHRAdXNpbmdFeHRlbnNpb24oXG5cdFx0SW50ZXJuYWxSb3V0aW5nLm92ZXJyaWRlKHtcblx0XHRcdG9uQWZ0ZXJCaW5kaW5nOiBmdW5jdGlvbiAodGhpczogSW50ZXJuYWxSb3V0aW5nKSB7XG5cdFx0XHRcdGNvbnN0IHZpZXcgPSB0aGlzLmdldFZpZXcoKTtcblx0XHRcdFx0Y29uc3QgY29udHJvbGxlciA9IHZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIFBhZ2VDb250cm9sbGVyO1xuXHRcdFx0XHRjb250cm9sbGVyLl9vbkludGVybmFsQWZ0ZXJCaW5kaW5nKCk7XG5cdFx0XHR9XG5cdFx0fSlcblx0KVxuXHRfcm91dGluZyE6IEludGVybmFsUm91dGluZztcblxuXHRAdXNpbmdFeHRlbnNpb24oRWRpdEZsb3cpXG5cdGVkaXRGbG93ITogRWRpdEZsb3c7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKEludGVudEJhc2VkTmF2aWdhdGlvbilcblx0aW50ZW50QmFzZWROYXZpZ2F0aW9uITogSW50ZW50QmFzZWROYXZpZ2F0aW9uO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihJbnRlcm5hbEludGVudEJhc2VkTmF2aWdhdGlvbilcblx0X2ludGVudEJhc2VkTmF2aWdhdGlvbiE6IEludGVybmFsSW50ZW50QmFzZWROYXZpZ2F0aW9uO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihQYWdlUmVhZHkpXG5cdHBhZ2VSZWFkeSE6IFBhZ2VSZWFkeTtcblxuXHRAdXNpbmdFeHRlbnNpb24oTWVzc2FnZUhhbmRsZXIpXG5cdG1lc3NhZ2VIYW5kbGVyITogTWVzc2FnZUhhbmRsZXI7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKFNoYXJlKVxuXHRzaGFyZSE6IFNoYXJlO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihQYWdpbmF0b3IpXG5cdHBhZ2luYXRvciE6IFBhZ2luYXRvcjtcblxuXHRAdXNpbmdFeHRlbnNpb24oVmlld1N0YXRlKVxuXHR2aWV3U3RhdGUhOiBWaWV3U3RhdGU7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKFBsYWNlaG9sZGVyKVxuXHRwbGFjZWhvbGRlciE6IFBsYWNlaG9sZGVyO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihTaWRlRWZmZWN0cylcblx0X3NpZGVFZmZlY3RzITogU2lkZUVmZmVjdHM7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKFJlY29tbWVuZGF0aW9ucylcblx0cmVjb21tZW5kYXRpb25zITogUmVjb21tZW5kYXRpb25zO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihUZWxlbWV0cnkpXG5cdHRlbGVtZXRyeSE6IFRlbGVtZXRyeTtcblxuXHRAdXNpbmdFeHRlbnNpb24oQ29udGV4dFNoYXJpbmcpXG5cdGNvbnRleHRTaGFyaW5nITogQ29udGV4dFNoYXJpbmc7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKENvbGxhYm9yYXRpb25NYW5hZ2VyKVxuXHRjb2xsYWJvcmF0aW9uTWFuYWdlciE6IENvbGxhYm9yYXRpb25NYW5hZ2VyO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihJbmxpbmVFZGl0Rmxvdylcblx0aW5saW5lRWRpdEZsb3chOiBJbmxpbmVFZGl0RmxvdztcblxuXHRleHRlbnNpb24hOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuXHRfb1ZpZXc/OiBWaWV3O1xuXG5cdHJvdXRpbmdUYXJnZXROYW1lPzogc3RyaW5nO1xuXG5cdHByb3RlY3RlZCBleHRlbnNpb25BUEk/OiBFeHRlbnNpb25BUEk7XG5cblx0cHJvdGVjdGVkIF9mb3JtYXR0ZXJzID0ge1xuXHRcdFZhbHVlRm9ybWF0dGVyOiBWYWx1ZUZvcm1hdHRlcixcblx0XHRTdGFuZGFyZEZvcm1hdHRlcjogU3RhbmRhcmRGb3JtYXR0ZXIsXG5cdFx0Q3JpdGljYWxpdHlGb3JtYXR0ZXI6IENyaXRpY2FsaXR5Rm9ybWF0dGVyLFxuXHRcdEZQTUZvcm1hdHRlcjogRlBNRm9ybWF0dGVyLFxuXHRcdEtQSUZvcm1hdHRlcjogS1BJRm9ybWF0dGVyLFxuXHRcdENvbGxhYm9yYXRpb25Gb3JtYXR0ZXI6IENvbGxhYm9yYXRpb25Gb3JtYXR0ZXJcblx0fTtcblxuXHRpbml0aWFsaXNhdGlvbkZvclBhZ2VDb250cm9sbGVyRG9uZVByb3Blcmx5ID0gZmFsc2U7XG5cblx0Y29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7XG5cdFx0c3VwZXIobmFtZSk7XG5cblx0XHRjb25zdCBvd25Qcm9wcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMuY29uc3RydWN0b3IucHJvdG90eXBlKTtcblx0XHRpZiAob3duUHJvcHMuaW5jbHVkZXMoXCJfaXNFeHRlbnNpb25cIikpIHtcblx0XHRcdG93blByb3BzLnNwbGljZSgwLCAwLCAuLi5PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcy5jb25zdHJ1Y3Rvci5wcm90b3R5cGUpKSk7IC8vIENhc2Ugd2hlbiB3ZSBoYXZlIGFuIGV4dGVuc2lvbiB0byB0aGUgY29udHJvbGxlciAoaWUuOiBhcmliYSlcblx0XHR9XG5cdFx0Zm9yIChjb25zdCBvd25Qcm9wIG9mIG93blByb3BzKSB7XG5cdFx0XHRpZiAob3duUHJvcCAhPT0gXCJjb25zdHJ1Y3RvclwiICYmIG93blByb3AgIT09IFwiZ2V0TWV0YWRhdGFcIiAmJiBvd25Qcm9wICE9PSBcImV4dGVuc2lvblwiKSB7XG5cdFx0XHRcdGNvbnN0IGZuUHJvcCA9ICh0aGlzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtvd25Qcm9wXTtcblx0XHRcdFx0aWYgKGZuUHJvcCAmJiB0eXBlb2YgZm5Qcm9wID09PSBcImZ1bmN0aW9uXCIgJiYgIShmblByb3AgYXMgeyBnZXRNZXRhZGF0YT86IEZ1bmN0aW9uIH0pLmdldE1ldGFkYXRhKSB7XG5cdFx0XHRcdFx0KHRoaXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW293blByb3BdID0gKC4uLmFyZ3M6IHVua25vd25bXSk6IHVua25vd24gPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3Qgb3duZXJDb21wb25lbnQgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IodGhpcy5nZXRWaWV3KCkpO1xuXHRcdFx0XHRcdFx0aWYgKG93bmVyQ29tcG9uZW50KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBvd25lckNvbXBvbmVudC5ydW5Bc093bmVyKCgpID0+IGZuUHJvcC5hcHBseSh0aGlzLCBhcmdzKSk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gZm5Qcm9wLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgXCJvVmlld1wiLCB7XG5cdFx0XHRnZXQoKTogVmlldyB8IHVuZGVmaW5lZCB7XG5cdFx0XHRcdHJldHVybiB0aGlzLl9vVmlldztcblx0XHRcdH0sXG5cdFx0XHRzZXQodjogVmlldykge1xuXHRcdFx0XHR0aGlzLl9vVmlldyA9IHY7XG5cdFx0XHRcdC8vIE9uIHRoZSBpbml0aWFsIHZpZXcgaW5zdGFudGlhdGlvbiBmcm9tIFhNTCB0aGUgdGVtcGxhdGluZyBwcm9jZXNzIG1heSBiZSBmaW5pc2hlZCBiZWZvcmUgdGhlIHZpZXcgaXMgY29tcGxldGVseSBjcmVhdGVkXG5cdFx0XHRcdC8vIFdoZW4gdGhhdCBoYXBwZW5zIHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHJvb3QgY29udHJvbGxlciBpcyBhdmFpbGFibGUgb24gdGhlIFRlbXBsYXRlQ29tcG9uZW50XG5cdFx0XHRcdHRoaXMuZ2V0T3duZXJDb21wb25lbnQoKT8uc2V0Um9vdENvbnRyb2xsZXI/Lih0aGlzKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRvbkluaXQoKTogdm9pZCB7XG5cdFx0Y29uc3Qgb1VJTW9kZWwgPSB0aGlzLmdldEFwcENvbXBvbmVudCgpLmdldE1vZGVsKFwidWlcIiksXG5cdFx0XHRvSW50ZXJuYWxNb2RlbCA9IHRoaXMuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWwsXG5cdFx0XHRzUGF0aCA9IGAvcGFnZXMvJHt0aGlzLmdldFZpZXcoKS5nZXRJZCgpfWA7XG5cblx0XHRvVUlNb2RlbC5zZXRQcm9wZXJ0eShzUGF0aCwge1xuXHRcdFx0Y29udHJvbHM6IHt9XG5cdFx0fSk7XG5cdFx0b0ludGVybmFsTW9kZWwuc2V0UHJvcGVydHkoc1BhdGgsIHtcblx0XHRcdGNvbnRyb2xzOiB7fSxcblx0XHRcdGNvbGxhYm9yYXRpb246IHt9XG5cdFx0fSk7XG5cdFx0dGhpcy5nZXRWaWV3KCkuYmluZEVsZW1lbnQoe1xuXHRcdFx0cGF0aDogXCIvXCIsXG5cdFx0XHRtb2RlbDogXCJ1aVwiXG5cdFx0fSk7XG5cdFx0dGhpcy5nZXRWaWV3KCkuYmluZEVsZW1lbnQoe1xuXHRcdFx0cGF0aDogc1BhdGgsXG5cdFx0XHRtb2RlbDogXCJpbnRlcm5hbFwiXG5cdFx0fSk7XG5cblx0XHQvLyBmb3IgdGhlIHRpbWUgYmVpbmcgcHJvdmlkZSBpdCBhbHNvIHBhZ2VJbnRlcm5hbCBhcyBzb21lIG1hY3JvcyBhY2Nlc3MgaXQgLSB0byBiZSByZW1vdmVkXG5cdFx0dGhpcy5nZXRWaWV3KCkuYmluZEVsZW1lbnQoe1xuXHRcdFx0cGF0aDogc1BhdGgsXG5cdFx0XHRtb2RlbDogXCJwYWdlSW50ZXJuYWxcIlxuXHRcdH0pO1xuXHRcdHRoaXMuZ2V0VmlldygpLnNldE1vZGVsKG9JbnRlcm5hbE1vZGVsLCBcInBhZ2VJbnRlcm5hbFwiKTtcblxuXHRcdC8vIGFzIHRoZSBtb2RlbCBwcm9wYWdhdGlvbiBoYXBwZW5zIGFmdGVyIGluaXQgYnV0IHdlIGFjdHVhbGx5IHdhbnQgdG8gYWNjZXNzIHRoZSBiaW5kaW5nIGNvbnRleHQgaW4gdGhlXG5cdFx0Ly8gaW5pdCBwaGFzZSBhbHJlYWR5IHNldHRpbmcgdGhlIG1vZGVsIGhlcmVcblx0XHR0aGlzLmdldFZpZXcoKS5zZXRNb2RlbChvVUlNb2RlbCwgXCJ1aVwiKTtcblx0XHR0aGlzLmdldFZpZXcoKS5zZXRNb2RlbChvSW50ZXJuYWxNb2RlbCwgXCJpbnRlcm5hbFwiKTtcblx0XHR0aGlzLmluaXRpYWxpc2F0aW9uRm9yUGFnZUNvbnRyb2xsZXJEb25lUHJvcGVybHkgPSB0cnVlO1xuXHR9XG5cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdG9uQmVmb3JlUmVuZGVyaW5nKCk6IHZvaWQge1xuXHRcdGlmICghdGhpcy5pbml0aWFsaXNhdGlvbkZvclBhZ2VDb250cm9sbGVyRG9uZVByb3Blcmx5KSB7XG5cdFx0XHRMb2cuZXJyb3IoXG5cdFx0XHRcdFwiUGFnZUNvbnRyb2xsZXIgb25Jbml0IGRpZG4ndCBydW4gcHJvcGVybHkuIFlvdXIgQ29udHJvbGxlci5vbkluaXQoKSBtZXRob2QgbWlnaHQgbm90IGV4dGVuZCB0aGUgc2FwLmZlLmNvcmUuUGFnZUNvbnRyb2xsZXIgb25Jbml0IG1ldGhvZCBwcm9wZXJseS4gXCJcblx0XHRcdCk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLnBsYWNlaG9sZGVyLmF0dGFjaEhpZGVDYWxsYmFjaykge1xuXHRcdFx0dGhpcy5wbGFjZWhvbGRlci5hdHRhY2hIaWRlQ2FsbGJhY2soKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBleHRlbnNpb24gQVBJIGZvciB0aGUgY3VycmVudCBwYWdlLlxuXHQgKiBAcGFyYW0gaWQgUFJJVkFURVxuXHQgKiBAcHVibGljXG5cdCAqIEByZXR1cm5zIFRoZSBleHRlbnNpb24gQVBJLlxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdGdldEV4dGVuc2lvbkFQSShpZD86IHN0cmluZyk6IEV4dGVuc2lvbkFQSSB7XG5cdFx0aWYgKCF0aGlzLmV4dGVuc2lvbkFQSSkge1xuXHRcdFx0dGhpcy5leHRlbnNpb25BUEkgPSBuZXcgRXh0ZW5zaW9uQVBJKHRoaXMsIGlkKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuZXh0ZW5zaW9uQVBJO1xuXHR9XG5cblx0Ly8gV2Ugc3BlY2lmeSB0aGUgZXh0ZW5zaWJpbGl0eSBoZXJlIHRoZSBzYW1lIHdheSBhcyBpdCBpcyBkb25lIGluIHRoZSBvYmplY3QgcGFnZSBjb250cm9sbGVyXG5cdC8vIHNpbmNlIHRoZSBzcGVjaWZpY2F0aW9uIGhlcmUgb3ZlcnJpZGVzIGl0IGFuZCBpZiB3ZSBkbyBub3Qgc3BlY2lmeSBhbnl0aGluZyBoZXJlLCB0aGVcblx0Ly8gYmVoYXZpb3IgZGVmYXVsdHMgdG8gYW4gZXhlY3V0ZSBpbnN0ZWFkIVxuXHQvLyBUT0RPIFRoaXMgbWF5IG5vdCBiZSBpZGVhbCwgc2luY2UgaXQgYWxzbyBpbmZsdWVuY2VzIHRoZSBsaXN0IHJlcG9ydCBjb250cm9sbGVyIGJ1dCBjdXJyZW50bHkgaXQncyB0aGUgYmVzdCBzb2x1dGlvbi5cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKFwiQWZ0ZXJcIilcblx0b25QYWdlUmVhZHkoX21QYXJhbWV0ZXJzOiB1bmtub3duKTogdm9pZCB7XG5cdFx0Ly8gQ291bGQgYmUgb3ZlcnJpZGRlbiBieSB0aGUgaW1wbG1lbnRpbmcgY29udHJvbGxlci5cblx0fVxuXG5cdGFzeW5jIF9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbigpOiBQcm9taXNlPFRpdGxlSW5mb3JtYXRpb24+IHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9IGFzIFRpdGxlSW5mb3JtYXRpb24pO1xuXHR9XG5cblx0X2dldFBhZ2VNb2RlbCgpOiBKU09OTW9kZWwgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IHBhZ2VDb21wb25lbnQgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IodGhpcy5nZXRWaWV3KCkpO1xuXHRcdHJldHVybiBwYWdlQ29tcG9uZW50Py5nZXRNb2RlbChcIl9wYWdlTW9kZWxcIikgYXMgSlNPTk1vZGVsO1xuXHR9XG5cblx0LyoqXG5cdCAqIE9wZW5zIG9uZSBvciBtb3JlIG5ldyB0YWJzIHdpdGggdGhlIGdpdmVuIG91dGJvdW5kIHRhcmdldCBmb3IgdGhlIHNlbGVjdGVkIGNvbnRleHRzLlxuXHQgKiBAcGFyYW0gb3V0Ym91bmRUYXJnZXQgVGhlIG91dGJvdW5kIHRhcmdldFxuXHQgKiBAcGFyYW0gY29udGV4dHMgVGhlIHNlbGVjdGVkIGNvbnRleHRzXG5cdCAqIEBwYXJhbSBjcmVhdGVQYXRoIFRoZSBjcmVhdGUgcGF0aFxuXHQgKiBAcGFyYW0gbWF4TnVtYmVyT2ZTZWxlY3RlZEl0ZW1zIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWxlY3RlZCBpdGVtc1xuXHQgKi9cblx0b25PcGVuSW5OZXdUYWJOYXZpZ2F0ZU91dEJvdW5kKFxuXHRcdG91dGJvdW5kVGFyZ2V0OiBzdHJpbmcsXG5cdFx0Y29udGV4dHM6IENvbnRleHRbXSxcblx0XHRjcmVhdGVQYXRoOiBzdHJpbmcsXG5cdFx0bWF4TnVtYmVyT2ZTZWxlY3RlZEl0ZW1zOiBudW1iZXJcblx0KTogdm9pZCB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzXG5cdFx0Y29uc3QgdGhhdCA9IHRoaXM7XG5cdFx0aWYgKGNvbnRleHRzLmxlbmd0aCA8PSBtYXhOdW1iZXJPZlNlbGVjdGVkSXRlbXMpIHtcblx0XHRcdGNvbnRleHRzLmZvckVhY2goZnVuY3Rpb24gKGNvbnRleHQ6IENvbnRleHQpIHtcblx0XHRcdFx0dGhhdC5faW50ZW50QmFzZWROYXZpZ2F0aW9uLm9uQ2hldnJvblByZXNzTmF2aWdhdGVPdXRCb3VuZCh0aGF0LCBvdXRib3VuZFRhcmdldCwgY29udGV4dCwgY3JlYXRlUGF0aCwgXCJleHBsYWNlXCIpO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdE1lc3NhZ2VCb3gud2FybmluZyhcblx0XHRcdFx0TGlicmFyeS5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5tYWNyb3NcIikhLmdldFRleHQoXCJUX1RBQkxFX05BVklHQVRJT05fVE9PX01BTllfSVRFTVNfU0VMRUNURURcIiwgW1xuXHRcdFx0XHRcdG1heE51bWJlck9mU2VsZWN0ZWRJdGVtc1xuXHRcdFx0XHRdKVxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblxuXHRfb25JbnRlcm5hbEFmdGVyQmluZGluZygpOiB2b2lkIHtcblx0XHRjb25zdCB2aWV3ID0gdGhpcy5nZXRWaWV3KCk7XG5cdFx0dGhpcy5wYWdlUmVhZHkud2FpdEZvcih0aGlzLmdldEFwcENvbXBvbmVudCgpLmdldEFwcFN0YXRlSGFuZGxlcigpLmFwcGx5QXBwU3RhdGUodmlldy5nZXRJZCgpLCB2aWV3KSk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBuYW1lIG9mIHRoZSBwYWdlIGFzIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0IHJvdXRpbmcgc2VjdGlvbi5cblx0ICogQHJldHVybnMgVGhlIG5hbWUgb2YgdGhlIHBhZ2Vcblx0ICovXG5cdGdldFJvdXRpbmdUYXJnZXROYW1lKCk6IHN0cmluZyB7XG5cdFx0aWYgKCF0aGlzLnJvdXRpbmdUYXJnZXROYW1lKSB7XG5cdFx0XHR0aGlzLnJvdXRpbmdUYXJnZXROYW1lID0gdGhpcy5nZXRBcHBDb21wb25lbnQoKS5nZXRSb3V0aW5nU2VydmljZSgpLmdldFRhcmdldE5hbWVGb3JWaWV3KHRoaXMuZ2V0VmlldygpKSA/PyBcIlwiO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5yb3V0aW5nVGFyZ2V0TmFtZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBNZXRob2QgdG8gZm9yd2FyZCBzZXRTaG93Rm9vdGVyIG9uIHRoZSBmaXJzdCBjb250ZW50IG9mIHRoZSB2aWV3IGlmIHJlY29nbml6ZWQuXG5cdCAqIEBwYXJhbSBzaG93XG5cdCAqL1xuXHRzZXRTaG93Rm9vdGVyKHNob3cgPSBmYWxzZSk6IHZvaWQge1xuXHRcdGNvbnN0IHBhZ2UgPSB0aGlzLmdldFZpZXcoKS5nZXRDb250ZW50KClbMF07XG5cdFx0aWYgKHBhZ2UuaXNBPER5bmFtaWNQYWdlPihcInNhcC5mLkR5bmFtaWNQYWdlXCIpIHx8IHBhZ2UuaXNBPE9iamVjdFBhZ2VMYXlvdXQ+KFwic2FwLnV4YXAuT2JqZWN0UGFnZUxheW91dFwiKSkge1xuXHRcdFx0cGFnZS5zZXRTaG93Rm9vdGVyKHNob3cpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBNZXRob2QgdG8gZ2V0IHRoZSBmb290ZXIuXG5cdCAqIEByZXR1cm5zIFRoZSBmb290ZXIgb2YgdGhlIHBhZ2UgaWYgaXQgZXhpc3RzXG5cdCAqL1xuXHRnZXRGb290ZXIoKTogQ29udHJvbCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgcGFnZSA9IHRoaXMuZ2V0VmlldygpLmdldENvbnRlbnQoKVswXTtcblx0XHRpZiAocGFnZS5pc0E8RHluYW1pY1BhZ2U+KFwic2FwLmYuRHluYW1pY1BhZ2VcIikgfHwgcGFnZS5pc0E8T2JqZWN0UGFnZUxheW91dD4oXCJzYXAudXhhcC5PYmplY3RQYWdlTGF5b3V0XCIpKSB7XG5cdFx0XHRyZXR1cm4gcGFnZS5nZXRGb290ZXIoKSBhcyB1bmtub3duIGFzIENvbnRyb2w7XG5cdFx0fVxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUGFnZUNvbnRyb2xsZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBdUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFQQSxJQVNNQSxjQUFjLElBQUFDLElBQUEsR0FEbkJDLGNBQWMsQ0FBQyw0QkFBNEIsQ0FBQyxFQUFBQyxLQUFBLEdBRTNDQyxjQUFjLENBQUNDLE9BQU8sQ0FBQyxFQUFBQyxLQUFBLEdBR3ZCRixjQUFjLENBQUNHLGtCQUFrQixDQUFDLEVBQUFDLEtBQUEsR0FHbENKLGNBQWMsQ0FDZEssZUFBZSxDQUFDQyxRQUFRLENBQUM7SUFDeEJDLGNBQWMsRUFBRSxTQUFBQSxDQUFBLEVBQWlDO01BQ2hELE1BQU1DLElBQUksR0FBRyxJQUFJLENBQUNDLE9BQU8sQ0FBQyxDQUFDO01BQzNCLE1BQU1DLFVBQVUsR0FBR0YsSUFBSSxDQUFDRyxhQUFhLENBQUMsQ0FBbUI7TUFDekRELFVBQVUsQ0FBQ0UsdUJBQXVCLENBQUMsQ0FBQztJQUNyQztFQUNELENBQUMsQ0FDRixDQUFDLEVBQUFDLEtBQUEsR0FHQWIsY0FBYyxDQUFDYyxRQUFRLENBQUMsRUFBQUMsS0FBQSxHQUd4QmYsY0FBYyxDQUFDZ0IscUJBQXFCLENBQUMsRUFBQUMsS0FBQSxHQUdyQ2pCLGNBQWMsQ0FBQ2tCLDZCQUE2QixDQUFDLEVBQUFDLEtBQUEsR0FHN0NuQixjQUFjLENBQUNvQixTQUFTLENBQUMsRUFBQUMsS0FBQSxHQUd6QnJCLGNBQWMsQ0FBQ3NCLGNBQWMsQ0FBQyxFQUFBQyxNQUFBLEdBRzlCdkIsY0FBYyxDQUFDd0IsS0FBSyxDQUFDLEVBQUFDLE1BQUEsR0FHckJ6QixjQUFjLENBQUMwQixTQUFTLENBQUMsRUFBQUMsTUFBQSxHQUd6QjNCLGNBQWMsQ0FBQzRCLFNBQVMsQ0FBQyxFQUFBQyxNQUFB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
|
|
343
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYWdlQ29udHJvbGxlciIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwidXNpbmdFeHRlbnNpb24iLCJSb3V0aW5nIiwiX2RlYzMiLCJDb2xsYWJvcmF0aXZlRHJhZnQiLCJfZGVjNCIsIkludGVybmFsUm91dGluZyIsIm92ZXJyaWRlIiwib25BZnRlckJpbmRpbmciLCJ2aWV3IiwiZ2V0VmlldyIsImNvbnRyb2xsZXIiLCJnZXRDb250cm9sbGVyIiwiX29uSW50ZXJuYWxBZnRlckJpbmRpbmciLCJfZGVjNSIsIkVkaXRGbG93IiwiX2RlYzYiLCJJbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJfZGVjNyIsIkludGVybmFsSW50ZW50QmFzZWROYXZpZ2F0aW9uIiwiX2RlYzgiLCJQYWdlUmVhZHkiLCJfZGVjOSIsIk1lc3NhZ2VIYW5kbGVyIiwiX2RlYzEwIiwiU2hhcmUiLCJfZGVjMTEiLCJQYWdpbmF0b3IiLCJfZGVjMTIiLCJWaWV3U3RhdGUiLCJfZGVjMTMiLCJQbGFjZWhvbGRlciIsIl9kZWMxNCIsIlNpZGVFZmZlY3RzIiwiX2RlYzE1IiwiUmVjb21tZW5kYXRpb25zIiwiX2RlYzE2IiwiVGVsZW1ldHJ5IiwiX2RlYzE3IiwiQ29udGV4dFNoYXJpbmciLCJfZGVjMTgiLCJDb2xsYWJvcmF0aW9uTWFuYWdlciIsIl9kZWMxOSIsIklubGluZUVkaXRGbG93IiwiX2RlYzIwIiwicHVibGljRXh0ZW5zaW9uIiwiX2RlYzIxIiwiX2RlYzIyIiwiX2RlYzIzIiwiX2RlYzI0IiwiZXh0ZW5zaWJsZSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQmFzZUNvbnRyb2xsZXIiLCJuYW1lIiwiX3RoaXMiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsIl9kZXNjcmlwdG9yMyIsIl9kZXNjcmlwdG9yNCIsIl9kZXNjcmlwdG9yNSIsIl9kZXNjcmlwdG9yNiIsIl9kZXNjcmlwdG9yNyIsIl9kZXNjcmlwdG9yOCIsIl9kZXNjcmlwdG9yOSIsIl9kZXNjcmlwdG9yMTAiLCJfZGVzY3JpcHRvcjExIiwiX2Rlc2NyaXB0b3IxMiIsIl9kZXNjcmlwdG9yMTMiLCJfZGVzY3JpcHRvcjE0IiwiX2Rlc2NyaXB0b3IxNSIsIl9kZXNjcmlwdG9yMTYiLCJfZGVzY3JpcHRvcjE3IiwiX2Rlc2NyaXB0b3IxOCIsIl9mb3JtYXR0ZXJzIiwiU2NvcGUiLCJpbml0aWFsaXNhdGlvbkZvclBhZ2VDb250cm9sbGVyRG9uZVByb3Blcmx5Iiwib3duUHJvcHMiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJpbmNsdWRlcyIsInNwbGljZSIsImdldFByb3RvdHlwZU9mIiwib3duUHJvcCIsImZuUHJvcCIsImdldE1ldGFkYXRhIiwiX2xlbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJvd25lckNvbXBvbmVudCIsIkNvbXBvbmVudCIsImdldE93bmVyQ29tcG9uZW50Rm9yIiwicnVuQXNPd25lciIsImFwcGx5IiwiZGVmaW5lUHJvcGVydHkiLCJnZXQiLCJfb1ZpZXciLCJzZXQiLCJ2IiwiZ2V0T3duZXJDb21wb25lbnQiLCJzZXRSb290Q29udHJvbGxlciIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwib25Jbml0IiwiZm5Nb2RlbCIsImdldE1vZGVsIiwibW9kZWxOYW1lIiwib25CZWZvcmVSZW5kZXJpbmciLCJMb2ciLCJlcnJvciIsInBsYWNlaG9sZGVyIiwiYXR0YWNoSGlkZUNhbGxiYWNrIiwiZ2V0RXh0ZW5zaW9uQVBJIiwiaWQiLCJleHRlbnNpb25BUEkiLCJFeHRlbnNpb25BUEkiLCJvblBhZ2VSZWFkeSIsIl9tUGFyYW1ldGVycyIsIl9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbiIsIlByb21pc2UiLCJyZXNvbHZlIiwiX2dldEJyb3dzZXJUaXRsZSIsInBhZ2VUaXRsZUluZm9ybWF0aW9uIiwic3VidGl0bGUiLCJ0aXRsZSIsImRlc2NyaXB0aW9uIiwidGl0bGVBZ2dyZWdhdG9yIiwidGl0bGVFeGlzdHMiLCJ1bmRlZmluZWQiLCJzdWJ0aXRsZUV4aXN0cyIsImRlc2NyaXB0aW9uRXhpc3RzIiwid2FybmluZyIsImdldElkIiwiaGVhZGVyVGV4dCIsIl9nZXRQYWdlTW9kZWwiLCJwYWdlQ29tcG9uZW50Iiwib25PcGVuSW5OZXdUYWJOYXZpZ2F0ZU91dEJvdW5kIiwib3V0Ym91bmRUYXJnZXQiLCJjb250ZXh0cyIsImNyZWF0ZVBhdGgiLCJtYXhOdW1iZXJPZlNlbGVjdGVkSXRlbXMiLCJ0aGF0IiwiZm9yRWFjaCIsImNvbnRleHQiLCJfaW50ZW50QmFzZWROYXZpZ2F0aW9uIiwib25DaGV2cm9uUHJlc3NOYXZpZ2F0ZU91dEJvdW5kIiwiTWVzc2FnZUJveCIsIkxpYnJhcnkiLCJnZXRSZXNvdXJjZUJ1bmRsZUZvciIsImdldFRleHQiLCJwYWdlUmVhZHkiLCJ3YWl0Rm9yIiwiZ2V0QXBwQ29tcG9uZW50IiwiZ2V0QXBwU3RhdGVIYW5kbGVyIiwiYXBwbHlBcHBTdGF0ZSIsImdldFJvdXRpbmdUYXJnZXROYW1lIiwicm91dGluZ1RhcmdldE5hbWUiLCJnZXRSb3V0aW5nU2VydmljZSIsImdldFRhcmdldE5hbWVGb3JWaWV3Iiwic2V0U2hvd0Zvb3RlciIsInNob3ciLCJwYWdlIiwiZ2V0Q29udGVudCIsImlzQSIsImdldEZvb3RlciIsIkJhc2VDb250cm9sbGVyIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJQYWdlQ29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIER5bmFtaWNQYWdlIGZyb20gXCJzYXAvZi9EeW5hbWljUGFnZVwiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIGV4dGVuc2libGUsIHB1YmxpY0V4dGVuc2lvbiwgdXNpbmdFeHRlbnNpb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSB7IEZFVmlldyB9IGZyb20gXCJzYXAvZmUvY29yZS9CYXNlQ29udHJvbGxlclwiO1xuaW1wb3J0IEJhc2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9CYXNlQ29udHJvbGxlclwiO1xuaW1wb3J0IEV4dGVuc2lvbkFQSSBmcm9tIFwic2FwL2ZlL2NvcmUvRXh0ZW5zaW9uQVBJXCI7XG5pbXBvcnQgQ29sbGFib3JhdGl2ZURyYWZ0IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9Db2xsYWJvcmF0aXZlRHJhZnRcIjtcbmltcG9ydCBFZGl0RmxvdyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvRWRpdEZsb3dcIjtcbmltcG9ydCBJbmxpbmVFZGl0RmxvdyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW5saW5lRWRpdEZsb3dcIjtcbmltcG9ydCBJbnRlbnRCYXNlZE5hdmlnYXRpb24gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0ludGVudEJhc2VkTmF2aWdhdGlvblwiO1xuaW1wb3J0IEludGVybmFsSW50ZW50QmFzZWROYXZpZ2F0aW9uIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9JbnRlcm5hbEludGVudEJhc2VkTmF2aWdhdGlvblwiO1xuaW1wb3J0IEludGVybmFsUm91dGluZyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW50ZXJuYWxSb3V0aW5nXCI7XG5pbXBvcnQgTWVzc2FnZUhhbmRsZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL01lc3NhZ2VIYW5kbGVyXCI7XG5pbXBvcnQgUGFnZVJlYWR5IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9QYWdlUmVhZHlcIjtcbmltcG9ydCBQYWdpbmF0b3IgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1BhZ2luYXRvclwiO1xuaW1wb3J0IFBsYWNlaG9sZGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9QbGFjZWhvbGRlclwiO1xuaW1wb3J0IFJlY29tbWVuZGF0aW9ucyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvUmVjb21tZW5kYXRpb25zXCI7XG5pbXBvcnQgUm91dGluZyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvUm91dGluZ1wiO1xuaW1wb3J0IFNoYXJlIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9TaGFyZVwiO1xuaW1wb3J0IFNpZGVFZmZlY3RzIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9TaWRlRWZmZWN0c1wiO1xuaW1wb3J0IFRlbGVtZXRyeSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvVGVsZW1ldHJ5XCI7XG5pbXBvcnQgVmlld1N0YXRlIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9WaWV3U3RhdGVcIjtcbmltcG9ydCBTY29wZSBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9TY29wZVwiO1xuaW1wb3J0IHR5cGUgeyBUaXRsZUluZm9ybWF0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL3Jvb3RWaWV3L1Jvb3RWaWV3QmFzZUNvbnRyb2xsZXJcIjtcblxuaW1wb3J0IE1lc3NhZ2VCb3ggZnJvbSBcInNhcC9tL01lc3NhZ2VCb3hcIjtcbmltcG9ydCBDb21wb25lbnQgZnJvbSBcInNhcC91aS9jb3JlL0NvbXBvbmVudFwiO1xuaW1wb3J0IExpYnJhcnkgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHR5cGUgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9tZGMvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IFRpdGxlQWRkaXRpb25hbEluZm8gfSBmcm9tIFwic2FwL3VzaGVsbC91aTVzZXJ2aWNlL1NoZWxsVUlTZXJ2aWNlXCI7XG5pbXBvcnQgdHlwZSBPYmplY3RQYWdlTGF5b3V0IGZyb20gXCJzYXAvdXhhcC9PYmplY3RQYWdlTGF5b3V0XCI7XG5pbXBvcnQgQ29udGV4dFNoYXJpbmcgZnJvbSBcIi4vY29udHJvbGxlcmV4dGVuc2lvbnMvQ29udGV4dFNoYXJpbmdcIjtcbmltcG9ydCBDb2xsYWJvcmF0aW9uTWFuYWdlciBmcm9tIFwiLi9jb250cm9sbGVyZXh0ZW5zaW9ucy9jYXJkcy9Db2xsYWJvcmF0aW9uTWFuYWdlclwiO1xuLyoqXG4gKiBCYXNlIGNvbnRyb2xsZXIgY2xhc3MgZm9yIHlvdXIgY3VzdG9tIHBhZ2UgdXNlZCBpbnNpZGUgYW4gU0FQIEZpb3JpIGVsZW1lbnRzIGFwcGxpY2F0aW9uLlxuICpcbiAqIFRoaXMgY29udHJvbGxlciBwcm92aWRlcyBwcmVjb25maWd1cmVkIGV4dGVuc2lvbnMgdGhhdCBlbnN1cmUgeW91IGhhdmUgdGhlIGJhc2ljIGZ1bmN0aW9uYWxpdGllcyByZXF1aXJlZCB0byB1c2UgdGhlIGJ1aWxkaW5nIGJsb2Nrcy5cbiAqIEBoaWRlY29uc3RydWN0b3JcbiAqIEBwdWJsaWNcbiAqIEBzaW5jZSAxLjg4LjBcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuUGFnZUNvbnRyb2xsZXJcIilcbmNsYXNzIFBhZ2VDb250cm9sbGVyIGV4dGVuZHMgQmFzZUNvbnRyb2xsZXIge1xuXHRAdXNpbmdFeHRlbnNpb24oUm91dGluZylcblx0cm91dGluZyE6IFJvdXRpbmc7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKENvbGxhYm9yYXRpdmVEcmFmdClcblx0Y29sbGFib3JhdGl2ZURyYWZ0ITogQ29sbGFib3JhdGl2ZURyYWZ0O1xuXG5cdEB1c2luZ0V4dGVuc2lvbihcblx0XHRJbnRlcm5hbFJvdXRpbmcub3ZlcnJpZGUoe1xuXHRcdFx0b25BZnRlckJpbmRpbmc6IGZ1bmN0aW9uICh0aGlzOiBJbnRlcm5hbFJvdXRpbmcpIHtcblx0XHRcdFx0Y29uc3QgdmlldyA9IHRoaXMuZ2V0VmlldygpO1xuXHRcdFx0XHRjb25zdCBjb250cm9sbGVyID0gdmlldy5nZXRDb250cm9sbGVyKCkgYXMgUGFnZUNvbnRyb2xsZXI7XG5cdFx0XHRcdGNvbnRyb2xsZXIuX29uSW50ZXJuYWxBZnRlckJpbmRpbmcoKTtcblx0XHRcdH1cblx0XHR9KVxuXHQpXG5cdF9yb3V0aW5nITogSW50ZXJuYWxSb3V0aW5nO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihFZGl0Rmxvdylcblx0ZWRpdEZsb3chOiBFZGl0RmxvdztcblxuXHRAdXNpbmdFeHRlbnNpb24oSW50ZW50QmFzZWROYXZpZ2F0aW9uKVxuXHRpbnRlbnRCYXNlZE5hdmlnYXRpb24hOiBJbnRlbnRCYXNlZE5hdmlnYXRpb247XG5cblx0QHVzaW5nRXh0ZW5zaW9uKEludGVybmFsSW50ZW50QmFzZWROYXZpZ2F0aW9uKVxuXHRfaW50ZW50QmFzZWROYXZpZ2F0aW9uITogSW50ZXJuYWxJbnRlbnRCYXNlZE5hdmlnYXRpb247XG5cblx0QHVzaW5nRXh0ZW5zaW9uKFBhZ2VSZWFkeSlcblx0cGFnZVJlYWR5ITogUGFnZVJlYWR5O1xuXG5cdEB1c2luZ0V4dGVuc2lvbihNZXNzYWdlSGFuZGxlcilcblx0bWVzc2FnZUhhbmRsZXIhOiBNZXNzYWdlSGFuZGxlcjtcblxuXHRAdXNpbmdFeHRlbnNpb24oU2hhcmUpXG5cdHNoYXJlITogU2hhcmU7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKFBhZ2luYXRvcilcblx0cGFnaW5hdG9yITogUGFnaW5hdG9yO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihWaWV3U3RhdGUpXG5cdHZpZXdTdGF0ZSE6IFZpZXdTdGF0ZTtcblxuXHRAdXNpbmdFeHRlbnNpb24oUGxhY2Vob2xkZXIpXG5cdHBsYWNlaG9sZGVyITogUGxhY2Vob2xkZXI7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKFNpZGVFZmZlY3RzKVxuXHRfc2lkZUVmZmVjdHMhOiBTaWRlRWZmZWN0cztcblxuXHRAdXNpbmdFeHRlbnNpb24oUmVjb21tZW5kYXRpb25zKVxuXHRyZWNvbW1lbmRhdGlvbnMhOiBSZWNvbW1lbmRhdGlvbnM7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKFRlbGVtZXRyeSlcblx0dGVsZW1ldHJ5ITogVGVsZW1ldHJ5O1xuXG5cdEB1c2luZ0V4dGVuc2lvbihDb250ZXh0U2hhcmluZylcblx0Y29udGV4dFNoYXJpbmchOiBDb250ZXh0U2hhcmluZztcblxuXHRAdXNpbmdFeHRlbnNpb24oQ29sbGFib3JhdGlvbk1hbmFnZXIpXG5cdGNvbGxhYm9yYXRpb25NYW5hZ2VyITogQ29sbGFib3JhdGlvbk1hbmFnZXI7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKElubGluZUVkaXRGbG93KVxuXHRpbmxpbmVFZGl0RmxvdyE6IElubGluZUVkaXRGbG93O1xuXG5cdGV4dGVuc2lvbiE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG5cdF9vVmlldz86IFZpZXc7XG5cblx0cm91dGluZ1RhcmdldE5hbWU/OiBzdHJpbmc7XG5cblx0cHJvdGVjdGVkIGV4dGVuc2lvbkFQST86IEV4dGVuc2lvbkFQSTtcblxuXHRwcm90ZWN0ZWQgX2Zvcm1hdHRlcnMgPSBTY29wZS5fZm9ybWF0dGVycztcblxuXHRpbml0aWFsaXNhdGlvbkZvclBhZ2VDb250cm9sbGVyRG9uZVByb3Blcmx5ID0gZmFsc2U7XG5cblx0Y29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7XG5cdFx0c3VwZXIobmFtZSk7XG5cblx0XHRjb25zdCBvd25Qcm9wcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMuY29uc3RydWN0b3IucHJvdG90eXBlKTtcblx0XHRpZiAob3duUHJvcHMuaW5jbHVkZXMoXCJfaXNFeHRlbnNpb25cIikpIHtcblx0XHRcdG93blByb3BzLnNwbGljZSgwLCAwLCAuLi5PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcy5jb25zdHJ1Y3Rvci5wcm90b3R5cGUpKSk7IC8vIENhc2Ugd2hlbiB3ZSBoYXZlIGFuIGV4dGVuc2lvbiB0byB0aGUgY29udHJvbGxlciAoaWUuOiBhcmliYSlcblx0XHR9XG5cdFx0Zm9yIChjb25zdCBvd25Qcm9wIG9mIG93blByb3BzKSB7XG5cdFx0XHRpZiAob3duUHJvcCAhPT0gXCJjb25zdHJ1Y3RvclwiICYmIG93blByb3AgIT09IFwiZ2V0TWV0YWRhdGFcIiAmJiBvd25Qcm9wICE9PSBcImV4dGVuc2lvblwiKSB7XG5cdFx0XHRcdGNvbnN0IGZuUHJvcCA9ICh0aGlzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtvd25Qcm9wXTtcblx0XHRcdFx0aWYgKGZuUHJvcCAmJiB0eXBlb2YgZm5Qcm9wID09PSBcImZ1bmN0aW9uXCIgJiYgIShmblByb3AgYXMgeyBnZXRNZXRhZGF0YT86IEZ1bmN0aW9uIH0pLmdldE1ldGFkYXRhKSB7XG5cdFx0XHRcdFx0KHRoaXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW293blByb3BdID0gKC4uLmFyZ3M6IHVua25vd25bXSk6IHVua25vd24gPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3Qgb3duZXJDb21wb25lbnQgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IodGhpcy5nZXRWaWV3KCkpO1xuXHRcdFx0XHRcdFx0aWYgKG93bmVyQ29tcG9uZW50KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBvd25lckNvbXBvbmVudC5ydW5Bc093bmVyKCgpID0+IGZuUHJvcC5hcHBseSh0aGlzLCBhcmdzKSk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gZm5Qcm9wLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgXCJvVmlld1wiLCB7XG5cdFx0XHRnZXQoKTogVmlldyB8IHVuZGVmaW5lZCB7XG5cdFx0XHRcdHJldHVybiB0aGlzLl9vVmlldztcblx0XHRcdH0sXG5cdFx0XHRzZXQodjogVmlldykge1xuXHRcdFx0XHR0aGlzLl9vVmlldyA9IHY7XG5cdFx0XHRcdC8vIE9uIHRoZSBpbml0aWFsIHZpZXcgaW5zdGFudGlhdGlvbiBmcm9tIFhNTCB0aGUgdGVtcGxhdGluZyBwcm9jZXNzIG1heSBiZSBmaW5pc2hlZCBiZWZvcmUgdGhlIHZpZXcgaXMgY29tcGxldGVseSBjcmVhdGVkXG5cdFx0XHRcdC8vIFdoZW4gdGhhdCBoYXBwZW5zIHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHJvb3QgY29udHJvbGxlciBpcyBhdmFpbGFibGUgb24gdGhlIFRlbXBsYXRlQ29tcG9uZW50XG5cdFx0XHRcdHRoaXMuZ2V0T3duZXJDb21wb25lbnQoKT8uc2V0Um9vdENvbnRyb2xsZXI/Lih0aGlzKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRvbkluaXQoKTogdm9pZCB7XG5cdFx0Y29uc3Qgb3duZXJDb21wb25lbnQgPSB0aGlzLmdldE93bmVyQ29tcG9uZW50KCk7XG5cdFx0Y29uc3QgZm5Nb2RlbCA9IHRoaXMuZ2V0VmlldygpLmdldE1vZGVsO1xuXHRcdHRoaXMuZ2V0VmlldygpLmdldE1vZGVsID0gKChtb2RlbE5hbWU/OiBzdHJpbmcpOiBNb2RlbCB8IHVuZGVmaW5lZCA9PiB7XG5cdFx0XHRpZiAobW9kZWxOYW1lID09PSBcIiRjbWRcIikge1xuXHRcdFx0XHRyZXR1cm4gZm5Nb2RlbC5hcHBseSh0aGlzLmdldFZpZXcoKSwgW21vZGVsTmFtZV0pO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZuTW9kZWwuYXBwbHkodGhpcy5nZXRWaWV3KCksIFttb2RlbE5hbWVdKSA/PyBvd25lckNvbXBvbmVudC5nZXRNb2RlbChtb2RlbE5hbWUpO1xuXHRcdH0pIGFzIHVua25vd24gYXMgRkVWaWV3W1wiZ2V0TW9kZWxcIl07XG5cblx0XHR0aGlzLmluaXRpYWxpc2F0aW9uRm9yUGFnZUNvbnRyb2xsZXJEb25lUHJvcGVybHkgPSB0cnVlO1xuXHR9XG5cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdG9uQmVmb3JlUmVuZGVyaW5nKCk6IHZvaWQge1xuXHRcdGlmICghdGhpcy5pbml0aWFsaXNhdGlvbkZvclBhZ2VDb250cm9sbGVyRG9uZVByb3Blcmx5KSB7XG5cdFx0XHRMb2cuZXJyb3IoXG5cdFx0XHRcdFwiUGFnZUNvbnRyb2xsZXIgb25Jbml0IGRpZG4ndCBydW4gcHJvcGVybHkuIFlvdXIgQ29udHJvbGxlci5vbkluaXQoKSBtZXRob2QgbWlnaHQgbm90IGV4dGVuZCB0aGUgc2FwLmZlLmNvcmUuUGFnZUNvbnRyb2xsZXIgb25Jbml0IG1ldGhvZCBwcm9wZXJseS4gXCJcblx0XHRcdCk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLnBsYWNlaG9sZGVyLmF0dGFjaEhpZGVDYWxsYmFjaykge1xuXHRcdFx0dGhpcy5wbGFjZWhvbGRlci5hdHRhY2hIaWRlQ2FsbGJhY2soKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBleHRlbnNpb24gQVBJIGZvciB0aGUgY3VycmVudCBwYWdlLlxuXHQgKiBAcGFyYW0gaWQgUFJJVkFURVxuXHQgKiBAcHVibGljXG5cdCAqIEByZXR1cm5zIFRoZSBleHRlbnNpb24gQVBJLlxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdGdldEV4dGVuc2lvbkFQSShpZD86IHN0cmluZyk6IEV4dGVuc2lvbkFQSSB7XG5cdFx0aWYgKCF0aGlzLmV4dGVuc2lvbkFQSSkge1xuXHRcdFx0dGhpcy5leHRlbnNpb25BUEkgPSBuZXcgRXh0ZW5zaW9uQVBJKHRoaXMsIGlkKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuZXh0ZW5zaW9uQVBJO1xuXHR9XG5cblx0Ly8gV2Ugc3BlY2lmeSB0aGUgZXh0ZW5zaWJpbGl0eSBoZXJlIHRoZSBzYW1lIHdheSBhcyBpdCBpcyBkb25lIGluIHRoZSBvYmplY3QgcGFnZSBjb250cm9sbGVyXG5cdC8vIHNpbmNlIHRoZSBzcGVjaWZpY2F0aW9uIGhlcmUgb3ZlcnJpZGVzIGl0IGFuZCBpZiB3ZSBkbyBub3Qgc3BlY2lmeSBhbnl0aGluZyBoZXJlLCB0aGVcblx0Ly8gYmVoYXZpb3IgZGVmYXVsdHMgdG8gYW4gZXhlY3V0ZSBpbnN0ZWFkIVxuXHQvLyBUT0RPIFRoaXMgbWF5IG5vdCBiZSBpZGVhbCwgc2luY2UgaXQgYWxzbyBpbmZsdWVuY2VzIHRoZSBsaXN0IHJlcG9ydCBjb250cm9sbGVyIGJ1dCBjdXJyZW50bHkgaXQncyB0aGUgYmVzdCBzb2x1dGlvbi5cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKFwiQWZ0ZXJcIilcblx0b25QYWdlUmVhZHkoX21QYXJhbWV0ZXJzOiB1bmtub3duKTogdm9pZCB7XG5cdFx0Ly8gQ291bGQgYmUgb3ZlcnJpZGRlbiBieSB0aGUgaW1wbG1lbnRpbmcgY29udHJvbGxlci5cblx0fVxuXG5cdGFzeW5jIF9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbigpOiBQcm9taXNlPFRpdGxlSW5mb3JtYXRpb24+IHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9IGFzIFRpdGxlSW5mb3JtYXRpb24pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgYnJvd3NlciB0aXRsZSBvZiB0aGUgb2JqZWN0IHBhZ2UuXG5cdCAqIEBwYXJhbSBwYWdlVGl0bGVJbmZvcm1hdGlvbiBQcmVzZW50IHBhZ2UgdGl0bGUgaW5mb3JtYXRpb25cblx0ICogQHJldHVybnMgVGl0bGUgaW5mb3JtYXRpb24gdG8gYmUgdXNlZCBieSBzaGVsbCBzZXJ2aWNlcyBmb3IgYnJvd3NlciB0aXRsZVxuXHQgKi9cblx0YXN5bmMgX2dldEJyb3dzZXJUaXRsZShwYWdlVGl0bGVJbmZvcm1hdGlvbjogVGl0bGVJbmZvcm1hdGlvbik6IFByb21pc2U8VGl0bGVBZGRpdGlvbmFsSW5mbyB8IHVuZGVmaW5lZD4ge1xuXHRcdGNvbnN0IHsgc3VidGl0bGUsIHRpdGxlLCBkZXNjcmlwdGlvbiB9ID0gcGFnZVRpdGxlSW5mb3JtYXRpb247XG5cdFx0bGV0IHRpdGxlQWdncmVnYXRvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRcdGNvbnN0IHRpdGxlRXhpc3RzID0gdGl0bGUgIT09IHVuZGVmaW5lZCAmJiB0aXRsZSAhPT0gbnVsbCAmJiB0aXRsZSAhPT0gXCJcIjtcblx0XHRjb25zdCBzdWJ0aXRsZUV4aXN0cyA9IHN1YnRpdGxlICE9PSB1bmRlZmluZWQgJiYgc3VidGl0bGUgIT09IG51bGwgJiYgc3VidGl0bGUgIT09IFwiXCI7XG5cdFx0Y29uc3QgZGVzY3JpcHRpb25FeGlzdHMgPSBkZXNjcmlwdGlvbiAhPT0gdW5kZWZpbmVkICYmIGRlc2NyaXB0aW9uICE9PSBudWxsICYmIGRlc2NyaXB0aW9uICE9PSBcIlwiO1xuXG5cdFx0Ly8gQXBwbHkgdGl0bGUgZm9ybWF0dGluZyBydWxlcyBiYXNlZCBvbiBhdmFpbGFibGUgY29tcG9uZW50c1xuXHRcdGlmICh0aXRsZUV4aXN0cyAmJiBzdWJ0aXRsZUV4aXN0cyAmJiBkZXNjcmlwdGlvbkV4aXN0cykge1xuXHRcdFx0Ly8gUnVsZSAxOiAnPHN1YlRpdGxlPiAoPGRlc2NyaXB0aW9uPikgLSA8dGl0bGU+J1xuXHRcdFx0dGl0bGVBZ2dyZWdhdG9yID0gYCR7c3VidGl0bGV9ICgke2Rlc2NyaXB0aW9ufSkgLSAke3RpdGxlfWA7XG5cdFx0fSBlbHNlIGlmICh0aXRsZUV4aXN0cyAmJiBzdWJ0aXRsZUV4aXN0cykge1xuXHRcdFx0Ly8gUnVsZSAyOiAnPHN1YlRpdGxlPiAtIDx0aXRsZT4nXG5cdFx0XHR0aXRsZUFnZ3JlZ2F0b3IgPSBgJHtzdWJ0aXRsZX0gLSAke3RpdGxlfWA7XG5cdFx0fSBlbHNlIGlmIChzdWJ0aXRsZUV4aXN0cyAmJiBkZXNjcmlwdGlvbkV4aXN0cykge1xuXHRcdFx0Ly8gUnVsZSAzOiAnPHN1YlRpdGxlPiAoPGRlc2NyaXB0aW9uPiknXG5cdFx0XHR0aXRsZUFnZ3JlZ2F0b3IgPSBgJHtzdWJ0aXRsZX0gKCR7ZGVzY3JpcHRpb259KWA7XG5cdFx0fSBlbHNlIGlmICh0aXRsZUV4aXN0cyAmJiBkZXNjcmlwdGlvbkV4aXN0cykge1xuXHRcdFx0Ly8gUnVsZSA0OiAnPGRlc2NyaXB0aW9uPiAtIDx0aXRsZT4nXG5cdFx0XHR0aXRsZUFnZ3JlZ2F0b3IgPSBgJHtkZXNjcmlwdGlvbn0gLSAke3RpdGxlfWA7XG5cdFx0fSBlbHNlIGlmICh0aXRsZUV4aXN0cykge1xuXHRcdFx0Ly8gUnVsZSA1OiAnPHRpdGxlPidcblx0XHRcdHRpdGxlQWdncmVnYXRvciA9IHRpdGxlO1xuXHRcdH0gZWxzZSBpZiAoc3VidGl0bGVFeGlzdHMpIHtcblx0XHRcdC8vIFJ1bGUgNjogJzxzdWJUaXRsZT4nXG5cdFx0XHR0aXRsZUFnZ3JlZ2F0b3IgPSBzdWJ0aXRsZTtcblx0XHR9IGVsc2UgaWYgKGRlc2NyaXB0aW9uRXhpc3RzKSB7XG5cdFx0XHQvLyBSdWxlIDc6ICc8ZGVzY3JpcHRpb24+J1xuXHRcdFx0dGl0bGVBZ2dyZWdhdG9yID0gZGVzY3JpcHRpb247XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIFJ1bGUgODogTm9uZSBleGlzdHMsIGxvZyB3YXJuaW5nIGFuZCByZXR1cm4gdW5kZWZpbmVkXG5cdFx0XHRjb25zdCB2aWV3ID0gdGhpcy5nZXRWaWV3KCk7XG5cdFx0XHRMb2cud2FybmluZyhgTm8gdGl0bGUsIHN1YnRpdGxlLCBvciBkZXNjcmlwdGlvbiBhdmFpbGFibGUgZm9yIGJyb3dzZXIgdGl0bGUgb2YgcGFnZTogJHt2aWV3LmdldElkKCl9YCk7XG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSh7IGhlYWRlclRleHQ6IHRpdGxlQWdncmVnYXRvciB9KTtcblx0fVxuXG5cdF9nZXRQYWdlTW9kZWwoKTogSlNPTk1vZGVsIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBwYWdlQ29tcG9uZW50ID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKHRoaXMuZ2V0VmlldygpKTtcblx0XHRyZXR1cm4gcGFnZUNvbXBvbmVudD8uZ2V0TW9kZWwoXCJfcGFnZU1vZGVsXCIpIGFzIEpTT05Nb2RlbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBPcGVucyBvbmUgb3IgbW9yZSBuZXcgdGFicyB3aXRoIHRoZSBnaXZlbiBvdXRib3VuZCB0YXJnZXQgZm9yIHRoZSBzZWxlY3RlZCBjb250ZXh0cy5cblx0ICogQHBhcmFtIG91dGJvdW5kVGFyZ2V0IFRoZSBvdXRib3VuZCB0YXJnZXRcblx0ICogQHBhcmFtIGNvbnRleHRzIFRoZSBzZWxlY3RlZCBjb250ZXh0c1xuXHQgKiBAcGFyYW0gY3JlYXRlUGF0aCBUaGUgY3JlYXRlIHBhdGhcblx0ICogQHBhcmFtIG1heE51bWJlck9mU2VsZWN0ZWRJdGVtcyBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2VsZWN0ZWQgaXRlbXNcblx0ICovXG5cdG9uT3BlbkluTmV3VGFiTmF2aWdhdGVPdXRCb3VuZChcblx0XHRvdXRib3VuZFRhcmdldDogc3RyaW5nLFxuXHRcdGNvbnRleHRzOiBDb250ZXh0W10sXG5cdFx0Y3JlYXRlUGF0aDogc3RyaW5nLFxuXHRcdG1heE51bWJlck9mU2VsZWN0ZWRJdGVtczogbnVtYmVyXG5cdCk6IHZvaWQge1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhpcy1hbGlhc1xuXHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xuXHRcdGlmIChjb250ZXh0cy5sZW5ndGggPD0gbWF4TnVtYmVyT2ZTZWxlY3RlZEl0ZW1zKSB7XG5cdFx0XHRjb250ZXh0cy5mb3JFYWNoKGZ1bmN0aW9uIChjb250ZXh0OiBDb250ZXh0KSB7XG5cdFx0XHRcdHRoYXQuX2ludGVudEJhc2VkTmF2aWdhdGlvbi5vbkNoZXZyb25QcmVzc05hdmlnYXRlT3V0Qm91bmQodGhhdCwgb3V0Ym91bmRUYXJnZXQsIGNvbnRleHQsIGNyZWF0ZVBhdGgsIFwiZXhwbGFjZVwiKTtcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRNZXNzYWdlQm94Lndhcm5pbmcoXG5cdFx0XHRcdExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUubWFjcm9zXCIpIS5nZXRUZXh0KFwiVF9UQUJMRV9OQVZJR0FUSU9OX1RPT19NQU5ZX0lURU1TX1NFTEVDVEVEXCIsIFtcblx0XHRcdFx0XHRtYXhOdW1iZXJPZlNlbGVjdGVkSXRlbXNcblx0XHRcdFx0XSlcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0X29uSW50ZXJuYWxBZnRlckJpbmRpbmcoKTogdm9pZCB7XG5cdFx0Y29uc3QgdmlldyA9IHRoaXMuZ2V0VmlldygpO1xuXHRcdHRoaXMucGFnZVJlYWR5LndhaXRGb3IodGhpcy5nZXRBcHBDb21wb25lbnQoKS5nZXRBcHBTdGF0ZUhhbmRsZXIoKS5hcHBseUFwcFN0YXRlKHZpZXcpKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIG5hbWUgb2YgdGhlIHBhZ2UgYXMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3Qgcm91dGluZyBzZWN0aW9uLlxuXHQgKiBAcmV0dXJucyBUaGUgbmFtZSBvZiB0aGUgcGFnZVxuXHQgKi9cblx0Z2V0Um91dGluZ1RhcmdldE5hbWUoKTogc3RyaW5nIHtcblx0XHRpZiAoIXRoaXMucm91dGluZ1RhcmdldE5hbWUpIHtcblx0XHRcdHRoaXMucm91dGluZ1RhcmdldE5hbWUgPSB0aGlzLmdldEFwcENvbXBvbmVudCgpLmdldFJvdXRpbmdTZXJ2aWNlKCkuZ2V0VGFyZ2V0TmFtZUZvclZpZXcodGhpcy5nZXRWaWV3KCkpID8/IFwiXCI7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLnJvdXRpbmdUYXJnZXROYW1lO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1ldGhvZCB0byBmb3J3YXJkIHNldFNob3dGb290ZXIgb24gdGhlIGZpcnN0IGNvbnRlbnQgb2YgdGhlIHZpZXcgaWYgcmVjb2duaXplZC5cblx0ICogQHBhcmFtIHNob3dcblx0ICovXG5cdHNldFNob3dGb290ZXIoc2hvdyA9IGZhbHNlKTogdm9pZCB7XG5cdFx0Y29uc3QgcGFnZSA9IHRoaXMuZ2V0VmlldygpLmdldENvbnRlbnQoKVswXTtcblx0XHRpZiAocGFnZS5pc0E8RHluYW1pY1BhZ2U+KFwic2FwLmYuRHluYW1pY1BhZ2VcIikgfHwgcGFnZS5pc0E8T2JqZWN0UGFnZUxheW91dD4oXCJzYXAudXhhcC5PYmplY3RQYWdlTGF5b3V0XCIpKSB7XG5cdFx0XHRwYWdlLnNldFNob3dGb290ZXIoc2hvdyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIE1ldGhvZCB0byBnZXQgdGhlIGZvb3Rlci5cblx0ICogQHJldHVybnMgVGhlIGZvb3RlciBvZiB0aGUgcGFnZSBpZiBpdCBleGlzdHNcblx0ICovXG5cdGdldEZvb3RlcigpOiBDb250cm9sIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBwYWdlID0gdGhpcy5nZXRWaWV3KCkuZ2V0Q29udGVudCgpWzBdO1xuXHRcdGlmIChwYWdlLmlzQTxEeW5hbWljUGFnZT4oXCJzYXAuZi5EeW5hbWljUGFnZVwiKSB8fCBwYWdlLmlzQTxPYmplY3RQYWdlTGF5b3V0PihcInNhcC51eGFwLk9iamVjdFBhZ2VMYXlvdXRcIikpIHtcblx0XHRcdHJldHVybiBwYWdlLmdldEZvb3RlcigpIGFzIHVua25vd24gYXMgQ29udHJvbDtcblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtaWdub3JlXG5leHBvcnQgZGVmYXVsdCBQYWdlQ29udHJvbGxlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFxQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQVBBLElBU01BLGNBQWMsSUFBQUMsSUFBQSxHQURuQkMsY0FBYyxDQUFDLDRCQUE0QixDQUFDLEVBQUFDLEtBQUEsR0FFM0NDLGNBQWMsQ0FBQ0MsT0FBTyxDQUFDLEVBQUFDLEtBQUEsR0FHdkJGLGNBQWMsQ0FBQ0csa0JBQWtCLENBQUMsRUFBQUMsS0FBQSxHQUdsQ0osY0FBYyxDQUNkSyxlQUFlLENBQUNDLFFBQVEsQ0FBQztJQUN4QkMsY0FBYyxFQUFFLFNBQUFBLENBQUEsRUFBaUM7TUFDaEQsTUFBTUMsSUFBSSxHQUFHLElBQUksQ0FBQ0MsT0FBTyxDQUFDLENBQUM7TUFDM0IsTUFBTUMsVUFBVSxHQUFHRixJQUFJLENBQUNHLGFBQWEsQ0FBQyxDQUFtQjtNQUN6REQsVUFBVSxDQUFDRSx1QkFBdUIsQ0FBQyxDQUFDO0lBQ3JDO0VBQ0QsQ0FBQyxDQUNGLENBQUMsRUFBQUMsS0FBQSxHQUdBYixjQUFjLENBQUNjLFFBQVEsQ0FBQyxFQUFBQyxLQUFBLEdBR3hCZixjQUFjLENBQUNnQixxQkFBcUIsQ0FBQyxFQUFBQyxLQUFBLEdBR3JDakIsY0FBYyxDQUFDa0IsNkJBQTZCLENBQUMsRUFBQUMsS0FBQSxHQUc3Q25CLGNBQWMsQ0FBQ29CLFNBQVMsQ0FBQyxFQUFBQyxLQUFBLEdBR3pCckIsY0FBYyxDQUFDc0IsY0FBYyxDQUFDLEVBQUFDLE1BQUEsR0FHOUJ2QixjQUFjLENBQUN3QixL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QTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUF6RyxhQUFBLEdBQUFxRyx5QkFBQSxDQUFBekgsT0FBQSxDQUFBK0IsU0FBQSxnQkFBQS9DLE1BQUE7SUFBQTBJLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBeEcsYUFBQSxHQUFBb0cseUJBQUEsQ0FBQXpILE9BQUEsQ0FBQStCLFNBQUEscUJBQUE3QyxNQUFBO0lBQUF3SSxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXZHLGFBQUEsR0FBQW1HLHlCQUFBLENBQUF6SCxPQUFBLENBQUErQixTQUFBLDJCQUFBM0MsTUFBQTtJQUFBc0ksWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUF0RyxhQUFBLEdBQUFrRyx5QkFBQSxDQUFBekgsT0FBQSxDQUFBK0IsU0FBQSxxQkFBQXpDLE1BQUE7SUFBQW9JLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBSix5QkFBQSxDQUFBekgsT0FBQSxDQUFBK0IsU0FBQSxhQUFBdkMsTUFBQSxHQUFBb0MsTUFBQSxDQUFBa0csd0JBQUEsQ0FBQTlILE9BQUEsQ0FBQStCLFNBQUEsYUFBQS9CLE9BQUEsQ0FBQStCLFNBQUEsR0FBQTBGLHlCQUFBLENBQUF6SCxPQUFBLENBQUErQixTQUFBLHdCQUFBckMsTUFBQSxHQUFBa0MsTUFBQSxDQUFBa0csd0JBQUEsQ0FBQTlILE9BQUEsQ0FBQStCLFNBQUEsd0JBQUEvQixPQUFBLENBQUErQixTQUFBLEdBQUEwRix5QkFBQSxDQUFBekgsT0FBQSxDQUFBK0IsU0FBQSxzQkFBQXBDLE1BQUEsR0FBQWlDLE1BQUEsQ0FBQWtHLHdCQUFBLENBQUE5SCxPQUFBLENBQUErQixTQUFBLHNCQUFBL0IsT0FBQSxDQUFBK0IsU0FBQSxHQUFBMEYseUJBQUEsQ0FBQXpILE9BQUEsQ0FBQStCLFNBQUEsa0JBQUFuQyxNQUFBLEVBQUFDLE1BQUEsR0FBQStCLE1BQUEsQ0FBQWtHLHdCQUFBLENBQUE5SCxPQUFBLENBQUErQixTQUFBLGtCQUFBL0IsT0FBQSxDQUFBK0IsU0FBQSxHQUFBL0IsT0FBQSxNQUFBRCxNQUFBLEdBMFIzQztFQUNBO0VBQUEsT0FDZXRELGNBQWM7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import Log from "sap/base/Log";
|
|
2
2
|
import type DynamicPage from "sap/f/DynamicPage";
|
|
3
3
|
import { defineUI5Class, extensible, publicExtension, usingExtension } from "sap/fe/base/ClassSupport";
|
|
4
|
+
import type { FEView } from "sap/fe/core/BaseController";
|
|
4
5
|
import BaseController from "sap/fe/core/BaseController";
|
|
5
6
|
import ExtensionAPI from "sap/fe/core/ExtensionAPI";
|
|
6
7
|
import CollaborativeDraft from "sap/fe/core/controllerextensions/CollaborativeDraft";
|
|
@@ -19,28 +20,25 @@ import Share from "sap/fe/core/controllerextensions/Share";
|
|
|
19
20
|
import SideEffects from "sap/fe/core/controllerextensions/SideEffects";
|
|
20
21
|
import Telemetry from "sap/fe/core/controllerextensions/Telemetry";
|
|
21
22
|
import ViewState from "sap/fe/core/controllerextensions/ViewState";
|
|
22
|
-
import
|
|
23
|
-
import CriticalityFormatter from "sap/fe/core/formatters/CriticalityFormatter";
|
|
24
|
-
import FPMFormatter from "sap/fe/core/formatters/FPMFormatter";
|
|
25
|
-
import KPIFormatter from "sap/fe/core/formatters/KPIFormatter";
|
|
26
|
-
import StandardFormatter from "sap/fe/core/formatters/StandardFormatter";
|
|
27
|
-
import ValueFormatter from "sap/fe/core/formatters/ValueFormatter";
|
|
23
|
+
import Scope from "sap/fe/core/formatters/Scope";
|
|
28
24
|
import type { TitleInformation } from "sap/fe/core/rootView/RootViewBaseController";
|
|
25
|
+
|
|
29
26
|
import MessageBox from "sap/m/MessageBox";
|
|
30
27
|
import Component from "sap/ui/core/Component";
|
|
31
28
|
import Library from "sap/ui/core/Lib";
|
|
32
29
|
import type View from "sap/ui/core/mvc/View";
|
|
33
30
|
import type Control from "sap/ui/mdc/Control";
|
|
31
|
+
import type Model from "sap/ui/model/Model";
|
|
34
32
|
import type JSONModel from "sap/ui/model/json/JSONModel";
|
|
35
33
|
import type Context from "sap/ui/model/odata/v4/Context";
|
|
34
|
+
import type { TitleAdditionalInfo } from "sap/ushell/ui5service/ShellUIService";
|
|
36
35
|
import type ObjectPageLayout from "sap/uxap/ObjectPageLayout";
|
|
37
36
|
import ContextSharing from "./controllerextensions/ContextSharing";
|
|
38
37
|
import CollaborationManager from "./controllerextensions/cards/CollaborationManager";
|
|
39
|
-
|
|
40
38
|
/**
|
|
41
39
|
* Base controller class for your custom page used inside an SAP Fiori elements application.
|
|
42
40
|
*
|
|
43
|
-
* This controller provides preconfigured extensions that
|
|
41
|
+
* This controller provides preconfigured extensions that ensure you have the basic functionalities required to use the building blocks.
|
|
44
42
|
* @hideconstructor
|
|
45
43
|
* @public
|
|
46
44
|
* @since 1.88.0
|
|
@@ -117,14 +115,7 @@ class PageController extends BaseController {
|
|
|
117
115
|
|
|
118
116
|
protected extensionAPI?: ExtensionAPI;
|
|
119
117
|
|
|
120
|
-
protected _formatters =
|
|
121
|
-
ValueFormatter: ValueFormatter,
|
|
122
|
-
StandardFormatter: StandardFormatter,
|
|
123
|
-
CriticalityFormatter: CriticalityFormatter,
|
|
124
|
-
FPMFormatter: FPMFormatter,
|
|
125
|
-
KPIFormatter: KPIFormatter,
|
|
126
|
-
CollaborationFormatter: CollaborationFormatter
|
|
127
|
-
};
|
|
118
|
+
protected _formatters = Scope._formatters;
|
|
128
119
|
|
|
129
120
|
initialisationForPageControllerDoneProperly = false;
|
|
130
121
|
|
|
@@ -166,37 +157,15 @@ class PageController extends BaseController {
|
|
|
166
157
|
|
|
167
158
|
@publicExtension()
|
|
168
159
|
onInit(): void {
|
|
169
|
-
const
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
controls: {},
|
|
178
|
-
collaboration: {}
|
|
179
|
-
});
|
|
180
|
-
this.getView().bindElement({
|
|
181
|
-
path: "/",
|
|
182
|
-
model: "ui"
|
|
183
|
-
});
|
|
184
|
-
this.getView().bindElement({
|
|
185
|
-
path: sPath,
|
|
186
|
-
model: "internal"
|
|
187
|
-
});
|
|
188
|
-
|
|
189
|
-
// for the time being provide it also pageInternal as some macros access it - to be removed
|
|
190
|
-
this.getView().bindElement({
|
|
191
|
-
path: sPath,
|
|
192
|
-
model: "pageInternal"
|
|
193
|
-
});
|
|
194
|
-
this.getView().setModel(oInternalModel, "pageInternal");
|
|
160
|
+
const ownerComponent = this.getOwnerComponent();
|
|
161
|
+
const fnModel = this.getView().getModel;
|
|
162
|
+
this.getView().getModel = ((modelName?: string): Model | undefined => {
|
|
163
|
+
if (modelName === "$cmd") {
|
|
164
|
+
return fnModel.apply(this.getView(), [modelName]);
|
|
165
|
+
}
|
|
166
|
+
return fnModel.apply(this.getView(), [modelName]) ?? ownerComponent.getModel(modelName);
|
|
167
|
+
}) as unknown as FEView["getModel"];
|
|
195
168
|
|
|
196
|
-
// as the model propagation happens after init but we actually want to access the binding context in the
|
|
197
|
-
// init phase already setting the model here
|
|
198
|
-
this.getView().setModel(oUIModel, "ui");
|
|
199
|
-
this.getView().setModel(oInternalModel, "internal");
|
|
200
169
|
this.initialisationForPageControllerDoneProperly = true;
|
|
201
170
|
}
|
|
202
171
|
|
|
@@ -240,6 +209,50 @@ class PageController extends BaseController {
|
|
|
240
209
|
return Promise.resolve({} as TitleInformation);
|
|
241
210
|
}
|
|
242
211
|
|
|
212
|
+
/**
|
|
213
|
+
* Get the browser title of the object page.
|
|
214
|
+
* @param pageTitleInformation Present page title information
|
|
215
|
+
* @returns Title information to be used by shell services for browser title
|
|
216
|
+
*/
|
|
217
|
+
async _getBrowserTitle(pageTitleInformation: TitleInformation): Promise<TitleAdditionalInfo | undefined> {
|
|
218
|
+
const { subtitle, title, description } = pageTitleInformation;
|
|
219
|
+
let titleAggregator: string | undefined;
|
|
220
|
+
const titleExists = title !== undefined && title !== null && title !== "";
|
|
221
|
+
const subtitleExists = subtitle !== undefined && subtitle !== null && subtitle !== "";
|
|
222
|
+
const descriptionExists = description !== undefined && description !== null && description !== "";
|
|
223
|
+
|
|
224
|
+
// Apply title formatting rules based on available components
|
|
225
|
+
if (titleExists && subtitleExists && descriptionExists) {
|
|
226
|
+
// Rule 1: '<subTitle> (<description>) - <title>'
|
|
227
|
+
titleAggregator = `${subtitle} (${description}) - ${title}`;
|
|
228
|
+
} else if (titleExists && subtitleExists) {
|
|
229
|
+
// Rule 2: '<subTitle> - <title>'
|
|
230
|
+
titleAggregator = `${subtitle} - ${title}`;
|
|
231
|
+
} else if (subtitleExists && descriptionExists) {
|
|
232
|
+
// Rule 3: '<subTitle> (<description>)'
|
|
233
|
+
titleAggregator = `${subtitle} (${description})`;
|
|
234
|
+
} else if (titleExists && descriptionExists) {
|
|
235
|
+
// Rule 4: '<description> - <title>'
|
|
236
|
+
titleAggregator = `${description} - ${title}`;
|
|
237
|
+
} else if (titleExists) {
|
|
238
|
+
// Rule 5: '<title>'
|
|
239
|
+
titleAggregator = title;
|
|
240
|
+
} else if (subtitleExists) {
|
|
241
|
+
// Rule 6: '<subTitle>'
|
|
242
|
+
titleAggregator = subtitle;
|
|
243
|
+
} else if (descriptionExists) {
|
|
244
|
+
// Rule 7: '<description>'
|
|
245
|
+
titleAggregator = description;
|
|
246
|
+
} else {
|
|
247
|
+
// Rule 8: None exists, log warning and return undefined
|
|
248
|
+
const view = this.getView();
|
|
249
|
+
Log.warning(`No title, subtitle, or description available for browser title of page: ${view.getId()}`);
|
|
250
|
+
return Promise.resolve(undefined);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
return Promise.resolve({ headerText: titleAggregator });
|
|
254
|
+
}
|
|
255
|
+
|
|
243
256
|
_getPageModel(): JSONModel | undefined {
|
|
244
257
|
const pageComponent = Component.getOwnerComponentFor(this.getView());
|
|
245
258
|
return pageComponent?.getModel("_pageModel") as JSONModel;
|
|
@@ -275,7 +288,7 @@ class PageController extends BaseController {
|
|
|
275
288
|
|
|
276
289
|
_onInternalAfterBinding(): void {
|
|
277
290
|
const view = this.getView();
|
|
278
|
-
this.pageReady.waitFor(this.getAppComponent().getAppStateHandler().applyAppState(view
|
|
291
|
+
this.pageReady.waitFor(this.getAppComponent().getAppStateHandler().applyAppState(view));
|
|
279
292
|
}
|
|
280
293
|
|
|
281
294
|
/**
|
|
@@ -313,4 +326,6 @@ class PageController extends BaseController {
|
|
|
313
326
|
}
|
|
314
327
|
}
|
|
315
328
|
|
|
329
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
330
|
+
// @ts-ignore
|
|
316
331
|
export default PageController;
|