@sapui5/sap.fe.templates 1.109.0 → 1.110.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/README.md +5 -1
- package/package.json +11 -8
- package/src/sap/fe/templates/.library +26 -27
- package/src/sap/fe/templates/AnalyticalListPage/Component.js +1 -7
- package/src/sap/fe/templates/AnalyticalListPage/chart/FEChartDelegate.js +1 -4
- package/src/sap/fe/templates/ListComponent.js +45 -62
- package/src/sap/fe/templates/ListComponent.ts +43 -43
- package/src/sap/fe/templates/ListReport/Component.js +11 -19
- package/src/sap/fe/templates/ListReport/Component.ts +6 -0
- package/src/sap/fe/templates/ListReport/ExtensionAPI.js +11 -37
- package/src/sap/fe/templates/ListReport/ExtensionAPI.ts +1 -1
- package/src/sap/fe/templates/ListReport/LRMessageStrip.js +196 -0
- package/src/sap/fe/templates/ListReport/LRMessageStrip.ts +216 -0
- package/src/sap/fe/templates/ListReport/ListReport.view.xml +31 -0
- package/src/sap/fe/templates/ListReport/ListReportController.controller.js +140 -247
- package/src/sap/fe/templates/ListReport/ListReportController.controller.ts +49 -14
- package/src/sap/fe/templates/ListReport/ListReportTemplating.js +2 -7
- package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.js +21 -108
- package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.js +9 -17
- package/src/sap/fe/templates/ListReport/overrides/Share.js +9 -25
- package/src/sap/fe/templates/ListReport/overrides/ViewState.js +51 -122
- package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.js +1 -23
- package/src/sap/fe/templates/ObjectPage/Component.js +19 -40
- package/src/sap/fe/templates/ObjectPage/Component.ts +9 -2
- package/src/sap/fe/templates/ObjectPage/ExtendPageDefinition.js +64 -0
- package/src/sap/fe/templates/ObjectPage/ExtendPageDefinition.ts +80 -0
- package/src/sap/fe/templates/ObjectPage/ExtensionAPI.js +21 -58
- package/src/sap/fe/templates/ObjectPage/ExtensionAPI.ts +4 -4
- package/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +2 -1
- package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +173 -459
- package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.ts +13 -18
- package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.js +129 -208
- package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.ts +62 -14
- package/src/sap/fe/templates/ObjectPage/components/DraftHandlerButton.js +1 -32
- package/src/sap/fe/templates/ObjectPage/controls/StashableHBox.js +9 -37
- package/src/sap/fe/templates/ObjectPage/controls/StashableVBox.js +1 -7
- package/src/sap/fe/templates/ObjectPage/controls/SubSectionBlock.js +9 -31
- package/src/sap/fe/templates/ObjectPage/designtime/FlexBox.designtime.js +1 -1
- package/src/sap/fe/templates/ObjectPage/designtime/StashableHBox.designtime.js +2 -4
- package/src/sap/fe/templates/ObjectPage/designtime/StashableVBox.designtime.js +1 -1
- package/src/sap/fe/templates/ObjectPage/flexibility/ScrollableHeaderContainer.flexibility.js +4 -5
- package/src/sap/fe/templates/ObjectPage/flexibility/StashableHBox.flexibility.js +4 -4
- package/src/sap/fe/templates/ObjectPage/flexibility/StashableHBox.flexibility.ts +3 -3
- package/src/sap/fe/templates/ObjectPage/flexibility/StashableVBox.flexibility.js +4 -4
- package/src/sap/fe/templates/ObjectPage/flexibility/StashableVBox.flexibility.ts +3 -3
- package/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation.js +16 -21
- package/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation.ts +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/InternalRouting.js +19 -1
- package/src/sap/fe/templates/ObjectPage/overrides/InternalRouting.ts +21 -0
- package/src/sap/fe/templates/ObjectPage/overrides/MessageHandler.js +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/Paginator.js +4 -5
- package/src/sap/fe/templates/ObjectPage/overrides/Share.js +19 -69
- package/src/sap/fe/templates/ObjectPage/overrides/Share.ts +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/ViewState.js +5 -20
- package/src/sap/fe/templates/ObjectPage/view/fragments/Actions.fragment.xml +6 -6
- package/src/sap/fe/templates/ObjectPage/view/fragments/EditableHeaderFacet.fragment.xml +4 -3
- package/src/sap/fe/templates/ObjectPage/view/fragments/FooterContent.fragment.xml +3 -3
- package/src/sap/fe/templates/ObjectPage/view/fragments/FormActions.fragment.xml +1 -1
- package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderContent.fragment.xml +1 -1
- package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderDataPoint.fragment.xml +1 -1
- package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderFacet.fragment.xml +4 -3
- package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderFacetCustomContainer.fragment.xml +7 -5
- package/src/sap/fe/templates/ObjectPage/view/fragments/HeadingAvatar.fragment.xml +1 -1
- package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderContact.fragment.xml +3 -2
- package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderForm.fragment.xml +2 -1
- package/src/sap/fe/templates/ObjectPage/view/fragments/SideContentCustomContainer.fragment.xml +7 -7
- package/src/sap/fe/templates/TableScroller.js +1 -6
- package/src/sap/fe/templates/library.js +4 -7
- package/src/sap/fe/templates/library.ts +1 -2
- package/src/sap/fe/templates/messagebundle.properties +30 -29
- package/src/sap/fe/templates/messagebundle_bg.properties +2 -2
- package/src/sap/fe/templates/messagebundle_cs.properties +1 -1
- package/src/sap/fe/templates/messagebundle_en_US_sappsd.properties +1 -1
- package/src/sap/fe/templates/messagebundle_en_US_saprigi.properties +1 -1
- package/src/sap/fe/templates/messagebundle_en_US_saptrc.properties +1 -1
- package/src/sap/fe/templates/messagebundle_no.properties +3 -3
- package/src/sap/fe/templates/messagebundle_sl.properties +7 -7
- package/ui5.yaml +0 -1
- package/src/sap/fe/templates/Feedback.js +0 -80
- package/src/sap/fe/templates/Feedback.ts +0 -64
- package/src/sap/fe/templates/ObjectPage/view/fragments/FormActionButtons.fragment.xml +0 -82
- package/src/sap/fe/templates/RootContainer/overrides/EditFlow.js +0 -20
- package/src/sap/fe/templates/RootContainer/overrides/EditFlow.ts +0 -20
|
@@ -4,7 +4,6 @@ import ObjectPath from "sap/base/util/ObjectPath";
|
|
|
4
4
|
import type DynamicPage from "sap/f/DynamicPage";
|
|
5
5
|
import ActionRuntime from "sap/fe/core/ActionRuntime";
|
|
6
6
|
import CommonUtils from "sap/fe/core/CommonUtils";
|
|
7
|
-
import EditFlow from "sap/fe/core/controllerextensions/EditFlow";
|
|
8
7
|
import IntentBasedNavigation from "sap/fe/core/controllerextensions/IntentBasedNavigation";
|
|
9
8
|
import InternalIntentBasedNavigation from "sap/fe/core/controllerextensions/InternalIntentBasedNavigation";
|
|
10
9
|
import InternalRouting from "sap/fe/core/controllerextensions/InternalRouting";
|
|
@@ -37,10 +36,8 @@ import FilterUtils from "sap/fe/macros/filter/FilterUtils";
|
|
|
37
36
|
import TableHelper from "sap/fe/macros/table/TableHelper";
|
|
38
37
|
import MultipleModeControl from "sap/fe/templates/ListReport/controls/MultipleModeControl";
|
|
39
38
|
import ExtensionAPI from "sap/fe/templates/ListReport/ExtensionAPI";
|
|
40
|
-
import EditFlowOverrides from "sap/fe/templates/RootContainer/overrides/EditFlow";
|
|
41
39
|
import TableScroller from "sap/fe/templates/TableScroller";
|
|
42
40
|
import type SegmentedButton from "sap/m/SegmentedButton";
|
|
43
|
-
import Component from "sap/ui/core/Component";
|
|
44
41
|
import type Control from "sap/ui/core/Control";
|
|
45
42
|
import OverrideExecution from "sap/ui/core/mvc/OverrideExecution";
|
|
46
43
|
import { system } from "sap/ui/Device";
|
|
@@ -58,6 +55,12 @@ import ViewStateOverrides from "./overrides/ViewState";
|
|
|
58
55
|
const TemplateContentView = CoreLibrary.TemplateContentView,
|
|
59
56
|
InitialLoadMode = CoreLibrary.InitialLoadMode;
|
|
60
57
|
|
|
58
|
+
/**
|
|
59
|
+
* Controller class for the list report page, used inside an SAP Fiori elements application.
|
|
60
|
+
*
|
|
61
|
+
* @hideconstructor
|
|
62
|
+
* @public
|
|
63
|
+
*/
|
|
61
64
|
@defineUI5Class("sap.fe.templates.ListReport.ListReportController")
|
|
62
65
|
class ListReportController extends PageController {
|
|
63
66
|
@usingExtension(
|
|
@@ -85,9 +88,6 @@ class ListReportController extends PageController {
|
|
|
85
88
|
@usingExtension(Share.override(ShareOverrides))
|
|
86
89
|
share!: Share;
|
|
87
90
|
|
|
88
|
-
@usingExtension(EditFlow.override(EditFlowOverrides))
|
|
89
|
-
editFlow!: EditFlow;
|
|
90
|
-
|
|
91
91
|
@usingExtension(ViewState.override(ViewStateOverrides))
|
|
92
92
|
viewState!: ViewState;
|
|
93
93
|
|
|
@@ -104,6 +104,12 @@ class ListReportController extends PageController {
|
|
|
104
104
|
private hasPendingChartChanges?: boolean;
|
|
105
105
|
private hasPendingTableChanges?: boolean;
|
|
106
106
|
|
|
107
|
+
/**
|
|
108
|
+
* Get the extension API for the current page.
|
|
109
|
+
*
|
|
110
|
+
* @public
|
|
111
|
+
* @returns The extension API.
|
|
112
|
+
*/
|
|
107
113
|
@publicExtension()
|
|
108
114
|
@finalExtension()
|
|
109
115
|
getExtensionAPI(): ExtensionAPI {
|
|
@@ -185,7 +191,12 @@ class ListReportController extends PageController {
|
|
|
185
191
|
this._updateTableActions(aTables);
|
|
186
192
|
}
|
|
187
193
|
|
|
188
|
-
this.
|
|
194
|
+
const internalModelContext = this.getView().getBindingContext("internal") as InternalModelContext;
|
|
195
|
+
if (!internalModelContext.getProperty("initialVariantApplied")) {
|
|
196
|
+
const viewId = this.getView().getId();
|
|
197
|
+
this.pageReady.waitFor(this.getAppComponent().getAppStateHandler().applyAppState(viewId, this.getView()));
|
|
198
|
+
internalModelContext.setProperty("initialVariantApplied", true);
|
|
199
|
+
}
|
|
189
200
|
}
|
|
190
201
|
|
|
191
202
|
onBeforeRendering() {
|
|
@@ -224,7 +235,7 @@ class ListReportController extends PageController {
|
|
|
224
235
|
}
|
|
225
236
|
|
|
226
237
|
/**
|
|
227
|
-
* Method called when the content of a list report
|
|
238
|
+
* Method called when the content of a custom view used in a list report needs to be refreshed.
|
|
228
239
|
* This happens either when there is a change on the FilterBar and the search is triggered,
|
|
229
240
|
* or when a tab with custom content is selected.
|
|
230
241
|
* This method can be overwritten by the controller extension in case of customization.
|
|
@@ -276,6 +287,17 @@ class ListReportController extends PageController {
|
|
|
276
287
|
return this._getTable()?.data("targetCollectionPath").slice(1);
|
|
277
288
|
}
|
|
278
289
|
|
|
290
|
+
/**
|
|
291
|
+
* Method called when the 'Clear' button on the FilterBar is pressed.
|
|
292
|
+
*
|
|
293
|
+
* @public
|
|
294
|
+
*/
|
|
295
|
+
@publicExtension()
|
|
296
|
+
@extensible(OverrideExecution.After)
|
|
297
|
+
onAfterClear() {
|
|
298
|
+
/* To be overriden */
|
|
299
|
+
}
|
|
300
|
+
|
|
279
301
|
/**
|
|
280
302
|
* This method initiates the update of the enabled state of the DataFieldForAction and the visible state of the DataFieldForIBN buttons.
|
|
281
303
|
*
|
|
@@ -355,7 +377,7 @@ class ListReportController extends PageController {
|
|
|
355
377
|
const oManifestEntry = this.getAppComponent().getManifestEntry("sap.app");
|
|
356
378
|
return {
|
|
357
379
|
title: oManifestEntry.title,
|
|
358
|
-
subtitle: oManifestEntry.
|
|
380
|
+
subtitle: oManifestEntry.subTitle || "",
|
|
359
381
|
intent: "",
|
|
360
382
|
icon: ""
|
|
361
383
|
};
|
|
@@ -386,11 +408,6 @@ class ListReportController extends PageController {
|
|
|
386
408
|
return controlId && this.getView().byId(controlId);
|
|
387
409
|
}
|
|
388
410
|
|
|
389
|
-
_getPageModel(): JSONModel | undefined {
|
|
390
|
-
const pageComponent = Component.getOwnerComponentFor(this.getView()) as any;
|
|
391
|
-
return pageComponent.getModel("_pageModel");
|
|
392
|
-
}
|
|
393
|
-
|
|
394
411
|
_getDynamicListReportControlId(): string {
|
|
395
412
|
return this._getPageModel()?.getProperty("/dynamicListReportId") || "";
|
|
396
413
|
}
|
|
@@ -664,9 +681,25 @@ class ListReportController extends PageController {
|
|
|
664
681
|
const oVM = oEvent.getSource();
|
|
665
682
|
const currentVariantKey = oEvent.getParameter("key");
|
|
666
683
|
const oMultiModeControl = this._getMultiModeControl();
|
|
684
|
+
const initialControlStatesMapper = this.viewState.initialControlStatesMapper;
|
|
667
685
|
|
|
668
686
|
oMultiModeControl?.invalidateContent();
|
|
669
687
|
oMultiModeControl?.setFreezeContent(true);
|
|
688
|
+
// Reset the Controls Mapped to the selected VM
|
|
689
|
+
const vmAssociatedControlsToReset = oVM.getFor();
|
|
690
|
+
Object.keys(initialControlStatesMapper).forEach((controlKey) => {
|
|
691
|
+
let found = false;
|
|
692
|
+
for (const vmAssociatedcontrolKey of vmAssociatedControlsToReset) {
|
|
693
|
+
if (vmAssociatedcontrolKey.indexOf(controlKey) > -1) {
|
|
694
|
+
found = true;
|
|
695
|
+
break;
|
|
696
|
+
}
|
|
697
|
+
}
|
|
698
|
+
if (found) {
|
|
699
|
+
initialControlStatesMapper[controlKey] = {};
|
|
700
|
+
}
|
|
701
|
+
});
|
|
702
|
+
|
|
670
703
|
// setTimeout cause the variant needs to be applied before judging the auto search or updating the app state
|
|
671
704
|
setTimeout(() => {
|
|
672
705
|
if (this._shouldAutoTriggerSearch(oVM)) {
|
|
@@ -678,6 +711,8 @@ class ListReportController extends PageController {
|
|
|
678
711
|
}, 0);
|
|
679
712
|
},
|
|
680
713
|
onVariantSaved(this: ListReportController) {
|
|
714
|
+
this.viewState.initialControlStatesMapper = {};
|
|
715
|
+
|
|
681
716
|
//TODO: Should remove this setTimeOut once Variant Management provides an api to fetch the current variant key on save!!!
|
|
682
717
|
setTimeout(() => {
|
|
683
718
|
this.getExtensionAPI().updateAppState();
|
|
@@ -7,7 +7,6 @@ sap.ui.define(["sap/fe/core/helpers/StableIdHelper"], function (StableIdHelper)
|
|
|
7
7
|
|
|
8
8
|
var _exports = {};
|
|
9
9
|
var generate = StableIdHelper.generate;
|
|
10
|
-
|
|
11
10
|
/**
|
|
12
11
|
* Method returns an VariantBackReference expression based on variantManagement and oConverterContext value.
|
|
13
12
|
*
|
|
@@ -17,20 +16,17 @@ sap.ui.define(["sap/fe/core/helpers/StableIdHelper"], function (StableIdHelper)
|
|
|
17
16
|
* @param {object} oConverterContext Object containing converted context
|
|
18
17
|
* @returns {string}
|
|
19
18
|
*/
|
|
19
|
+
|
|
20
20
|
var getVariantBackReference = function (oViewData, oConverterContext) {
|
|
21
21
|
if (oViewData && oViewData.variantManagement === "Page") {
|
|
22
22
|
return "fe::PageVariantManagement";
|
|
23
23
|
}
|
|
24
|
-
|
|
25
24
|
if (oViewData && oViewData.variantManagement === "Control") {
|
|
26
25
|
return generate([oConverterContext.filterBarId, "VariantManagement"]);
|
|
27
26
|
}
|
|
28
|
-
|
|
29
27
|
return undefined;
|
|
30
28
|
};
|
|
31
|
-
|
|
32
29
|
_exports.getVariantBackReference = getVariantBackReference;
|
|
33
|
-
|
|
34
30
|
var getDefaultPath = function (aViews) {
|
|
35
31
|
for (var i = 0; i < aViews.length; i++) {
|
|
36
32
|
if (aViews[i].defaultPath) {
|
|
@@ -38,8 +34,7 @@ sap.ui.define(["sap/fe/core/helpers/StableIdHelper"], function (StableIdHelper)
|
|
|
38
34
|
}
|
|
39
35
|
}
|
|
40
36
|
};
|
|
41
|
-
|
|
42
37
|
_exports.getDefaultPath = getDefaultPath;
|
|
43
38
|
return _exports;
|
|
44
39
|
}, false);
|
|
45
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRWYXJpYW50QmFja1JlZmVyZW5jZSIsIm9WaWV3RGF0YSIsIm9Db252ZXJ0ZXJDb250ZXh0IiwidmFyaWFudE1hbmFnZW1lbnQiLCJnZW5lcmF0ZSIsImZpbHRlckJhcklkIiwidW5kZWZpbmVkIiwiZ2V0RGVmYXVsdFBhdGgiLCJhVmlld3MiLCJpIiwibGVuZ3RoIiwiZGVmYXVsdFBhdGgiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkxpc3RSZXBvcnRUZW1wbGF0aW5nLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRlbXBsYXRlIEhlbHBlcnMgZm9yIHRoZSBMaXN0IFJlcG9ydFxuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuXG4vKipcbiAqIE1ldGhvZCByZXR1cm5zIGFuIFZhcmlhbnRCYWNrUmVmZXJlbmNlIGV4cHJlc3Npb24gYmFzZWQgb24gdmFyaWFudE1hbmFnZW1lbnQgYW5kIG9Db252ZXJ0ZXJDb250ZXh0IHZhbHVlLlxuICpcbiAqIEBmdW5jdGlvblxuICogQG5hbWUgZ2V0VmFyaWFudEJhY2tSZWZlcmVuY2VcbiAqIEBwYXJhbSB7b2JqZWN0fSBvVmlld0RhdGEgT2JqZWN0IENvbnRhaW5pbmcgVmlldyBEYXRhXG4gKiBAcGFyYW0ge29iamVjdH0gb0NvbnZlcnRlckNvbnRleHQgT2JqZWN0IGNvbnRhaW5pbmcgY29udmVydGVkIGNvbnRleHRcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cblxuZXhwb3J0IGNvbnN0IGdldFZhcmlhbnRCYWNrUmVmZXJlbmNlID0gZnVuY3Rpb24gKG9WaWV3RGF0YTogYW55LCBvQ29udmVydGVyQ29udGV4dDogYW55KSB7XG5cdGlmIChvVmlld0RhdGEgJiYgb1ZpZXdEYXRhLnZhcmlhbnRNYW5hZ2VtZW50ID09PSBcIlBhZ2VcIikge1xuXHRcdHJldHVybiBcImZlOjpQYWdlVmFyaWFudE1hbmFnZW1lbnRcIjtcblx0fVxuXHRpZiAob1ZpZXdEYXRhICYmIG9WaWV3RGF0YS52YXJpYW50TWFuYWdlbWVudCA9PT0gXCJDb250cm9sXCIpIHtcblx0XHRyZXR1cm4gZ2VuZXJhdGUoW29Db252ZXJ0ZXJDb250ZXh0LmZpbHRlckJhcklkLCBcIlZhcmlhbnRNYW5hZ2VtZW50XCJdKTtcblx0fVxuXHRyZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRQYXRoID0gZnVuY3Rpb24gKGFWaWV3czogYW55KSB7XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgYVZpZXdzLmxlbmd0aDsgaSsrKSB7XG5cdFx0aWYgKGFWaWV3c1tpXS5kZWZhdWx0UGF0aCkge1xuXHRcdFx0cmV0dXJuIGFWaWV3c1tpXS5kZWZhdWx0UGF0aDtcblx0XHR9XG5cdH1cbn07XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7OztFQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7RUFFTyxJQUFNQSx1QkFBdUIsR0FBRyxVQUFVQyxTQUFjLEVBQUVDLGlCQUFzQixFQUFFO0lBQ3hGLElBQUlELFNBQVMsSUFBSUEsU0FBUyxDQUFDRSxpQkFBaUIsS0FBSyxNQUFNLEVBQUU7TUFDeEQsT0FBTywyQkFBMkI7SUFDbkM7SUFDQSxJQUFJRixTQUFTLElBQUlBLFNBQVMsQ0FBQ0UsaUJBQWlCLEtBQUssU0FBUyxFQUFFO01BQzNELE9BQU9DLFFBQVEsQ0FBQyxDQUFDRixpQkFBaUIsQ0FBQ0csV0FBVyxFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDdEU7SUFDQSxPQUFPQyxTQUFTO0VBQ2pCLENBQUM7RUFBQztFQUVLLElBQU1DLGNBQWMsR0FBRyxVQUFVQyxNQUFXLEVBQUU7SUFDcEQsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdELE1BQU0sQ0FBQ0UsTUFBTSxFQUFFRCxDQUFDLEVBQUUsRUFBRTtNQUN2QyxJQUFJRCxNQUFNLENBQUNDLENBQUMsQ0FBQyxDQUFDRSxXQUFXLEVBQUU7UUFDMUIsT0FBT0gsTUFBTSxDQUFDQyxDQUFDLENBQUMsQ0FBQ0UsV0FBVztNQUM3QjtJQUNEO0VBQ0QsQ0FBQztFQUFDO0VBQUE7QUFBQSJ9
|