@sapui5/sap.fe.templates 1.102.0 → 1.103.0
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/templates/.library +1 -1
- package/src/sap/fe/templates/AnalyticalListPage/chart/FEChartDelegate.js +2 -2
- package/src/sap/fe/templates/AnalyticalListPage/chart/FEChartDelegate.ts +1 -1
- package/src/sap/fe/templates/Feedback.js +18 -18
- package/src/sap/fe/templates/Feedback.ts +12 -12
- package/src/sap/fe/templates/ListReport/ExtensionAPI.js +9 -12
- package/src/sap/fe/templates/ListReport/ExtensionAPI.ts +9 -12
- package/src/sap/fe/templates/ListReport/ListReport.view.xml +3 -1
- package/src/sap/fe/templates/ListReport/ListReportController.controller.js +80 -55
- package/src/sap/fe/templates/ListReport/ListReportController.controller.ts +95 -71
- package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.js +1 -1
- package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.ts +2 -2
- package/src/sap/fe/templates/ListReport/overrides/Share.js +3 -4
- package/src/sap/fe/templates/ListReport/overrides/Share.ts +6 -7
- package/src/sap/fe/templates/ListReport/overrides/ViewState.js +4 -5
- package/src/sap/fe/templates/ListReport/overrides/ViewState.ts +10 -10
- package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.js +1 -1
- package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.ts +1 -1
- package/src/sap/fe/templates/ObjectPage/ExtensionAPI.js +12 -16
- package/src/sap/fe/templates/ObjectPage/ExtensionAPI.ts +17 -20
- package/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +4 -3
- package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +148 -163
- package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.ts +138 -192
- package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.js +62 -73
- package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.ts +75 -90
- package/src/sap/fe/templates/ObjectPage/controls/SubSectionBlock.js +2 -3
- package/src/sap/fe/templates/ObjectPage/controls/SubSectionBlock.ts +4 -4
- package/src/sap/fe/templates/ObjectPage/designtime/StashableHBox.designtime.js +1 -1
- package/src/sap/fe/templates/ObjectPage/designtime/StashableHBox.designtime.ts +1 -1
- package/src/sap/fe/templates/ObjectPage/designtime/StashableVBox.designtime.js +1 -1
- package/src/sap/fe/templates/ObjectPage/designtime/StashableVBox.designtime.ts +1 -1
- package/src/sap/fe/templates/ObjectPage/handler/DraftHandler.js +103 -0
- package/src/sap/fe/templates/ObjectPage/handler/DraftHandler.ts +97 -0
- package/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation.js +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation.ts +5 -5
- package/src/sap/fe/templates/ObjectPage/overrides/InternalRouting.js +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/InternalRouting.ts +2 -2
- package/src/sap/fe/templates/ObjectPage/overrides/MessageHandler.js +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/MessageHandler.ts +2 -2
- package/src/sap/fe/templates/ObjectPage/overrides/Paginator.js +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/Paginator.ts +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/Share.js +15 -15
- package/src/sap/fe/templates/ObjectPage/overrides/Share.ts +17 -28
- package/src/sap/fe/templates/ObjectPage/overrides/ViewState.js +2 -2
- package/src/sap/fe/templates/ObjectPage/overrides/ViewState.ts +4 -4
- package/src/sap/fe/templates/ObjectPage/view/fragments/Actions.fragment.xml +6 -1
- package/src/sap/fe/templates/ObjectPage/view/fragments/EditableHeaderFacet.fragment.xml +10 -2
- package/src/sap/fe/templates/ObjectPage/view/fragments/FooterContent.fragment.xml +1 -1
- package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderFacet.fragment.xml +1 -14
- package/src/sap/fe/templates/ObjectPage/view/fragments/HeadingTitle.fragment.xml +1 -0
- package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderAddress.fragment.xml +7 -2
- package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderContact.fragment.xml +26 -0
- package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderForm.fragment.xml +1 -1
- package/src/sap/fe/templates/ObjectPage/view/fragments/Section.fragment.xml +4 -1
- package/src/sap/fe/templates/ObjectPage/view/fragments/SectionContent.fragment.xml +6 -2
- package/src/sap/fe/templates/ObjectPage/view/fragments/SectionFormContent.fragment.xml +1 -0
- package/src/sap/fe/templates/ObjectPage/view/fragments/SectionMoreFormContent.fragment.xml +1 -0
- package/src/sap/fe/templates/ObjectPage/view/fragments/SwitchDraftAndActiveObjectPopOver.fragment.xml +2 -2
- package/src/sap/fe/templates/RootContainer/controller/Fcl.controller.js +25 -28
- package/src/sap/fe/templates/RootContainer/controller/Fcl.controller.ts +30 -33
- package/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.js +3 -4
- package/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.ts +4 -5
- package/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.js +140 -52
- package/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.ts +108 -54
- package/src/sap/fe/templates/RootContainer/overrides/EditFlow.js +1 -1
- package/src/sap/fe/templates/RootContainer/overrides/EditFlow.ts +3 -3
- package/src/sap/fe/templates/TableScroller.js +3 -3
- package/src/sap/fe/templates/TableScroller.ts +2 -2
- package/src/sap/fe/templates/controls/Table.fragment.xml +1 -0
- package/src/sap/fe/templates/library.js +5 -2
- package/src/sap/fe/templates/library.ts +3 -0
- package/src/sap/fe/templates/messagebundle.properties +6 -18
- package/src/sap/fe/templates/messagebundle_pt.properties +1 -1
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import Log from "sap/base/Log";
|
|
2
|
+
import type PageController from "sap/fe/core/PageController";
|
|
3
|
+
import type Popover from "sap/m/Popover";
|
|
4
|
+
import type SelectList from "sap/m/SelectList";
|
|
5
|
+
import type Event from "sap/ui/base/Event";
|
|
6
|
+
import type Control from "sap/ui/core/Control";
|
|
7
|
+
import Fragment from "sap/ui/core/Fragment";
|
|
8
|
+
import type Item from "sap/ui/core/Item";
|
|
9
|
+
import XMLPreprocessor from "sap/ui/core/util/XMLPreprocessor";
|
|
10
|
+
import XMLTemplateProcessor from "sap/ui/core/XMLTemplateProcessor";
|
|
11
|
+
import JSONModel from "sap/ui/model/json/JSONModel";
|
|
12
|
+
|
|
13
|
+
let oSwitchDraftAndActivePopOver: Popover;
|
|
14
|
+
/**
|
|
15
|
+
* Generic handler collection for several events in the draft topic area
|
|
16
|
+
*/
|
|
17
|
+
const DraftHandler = {
|
|
18
|
+
/**
|
|
19
|
+
* The method with the behaviour on the switch draft mode button.
|
|
20
|
+
*
|
|
21
|
+
* @param this The type of the this refered to PageController.
|
|
22
|
+
* @param event The event with the bound source control.
|
|
23
|
+
*/
|
|
24
|
+
showSwitchDraftAndActivePopover(this: PageController, event: Event) {
|
|
25
|
+
const view = this.getView(),
|
|
26
|
+
source = event.getSource(),
|
|
27
|
+
fragmentName = "sap.fe.templates.ObjectPage.view.fragments.SwitchDraftAndActiveObjectPopOver";
|
|
28
|
+
|
|
29
|
+
if (oSwitchDraftAndActivePopOver) {
|
|
30
|
+
oSwitchDraftAndActivePopOver.openBy(source, false);
|
|
31
|
+
} else {
|
|
32
|
+
const localThisModel = new JSONModel({}),
|
|
33
|
+
preprocessorSettings = {
|
|
34
|
+
bindingContexts: {
|
|
35
|
+
"this": localThisModel.createBindingContext("/")
|
|
36
|
+
},
|
|
37
|
+
models: {
|
|
38
|
+
"this": localThisModel
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
const popoverFragment = XMLTemplateProcessor.loadTemplate(fragmentName, "fragment");
|
|
42
|
+
Promise.resolve(XMLPreprocessor.process(popoverFragment, { name: fragmentName }, preprocessorSettings))
|
|
43
|
+
.then((fragment) => {
|
|
44
|
+
return Fragment.load({ definition: fragment, controller: this });
|
|
45
|
+
})
|
|
46
|
+
.then((popover: any) => {
|
|
47
|
+
view.addDependent(popover);
|
|
48
|
+
popover.setModel(view.getModel("sap.fe.i18n"), "i18n");
|
|
49
|
+
popover.setPlacement("Bottom");
|
|
50
|
+
oSwitchDraftAndActivePopOver = popover;
|
|
51
|
+
popover.attachAfterOpen(() => {
|
|
52
|
+
// While the list entry corresponding to the currently displayed document version is emphasized with a blue
|
|
53
|
+
// background, we need to pre-focus the other entry
|
|
54
|
+
const context: any = this.getView().getBindingContext(),
|
|
55
|
+
isActiveEntity = context.getObject().IsActiveEntity;
|
|
56
|
+
const switchDraftAndActiveOptionsList: SelectList = (popover.getContent() as unknown as Control[]).find(
|
|
57
|
+
(element) => element.data("listIdentifier") === "switchDraftAndActivePopoverList"
|
|
58
|
+
) as SelectList;
|
|
59
|
+
const listItemToFocus: Item = isActiveEntity
|
|
60
|
+
? (switchDraftAndActiveOptionsList.getItems().find((element) => element.getKey() === "switchToDraft") as Item)
|
|
61
|
+
: (switchDraftAndActiveOptionsList.getItems().find((element) => element.getKey() === "switchToActive") as Item);
|
|
62
|
+
listItemToFocus.focus();
|
|
63
|
+
});
|
|
64
|
+
popover.openBy(source);
|
|
65
|
+
// ensure to remove the reference to the draft popover as it would be destroyed on exit
|
|
66
|
+
view.attachEventOnce("beforeExit", () => {
|
|
67
|
+
oSwitchDraftAndActivePopOver.destroy();
|
|
68
|
+
});
|
|
69
|
+
})
|
|
70
|
+
.catch(function (Error) {
|
|
71
|
+
Log.error("Error while opening the draft switch popup", Error);
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
/**
|
|
76
|
+
* The method with the behaviour on the switch draft mode button popover when an entry is selected.
|
|
77
|
+
*
|
|
78
|
+
* @param this The type of the this refered to PageController.
|
|
79
|
+
* @param event The event with the bound source control.
|
|
80
|
+
*/
|
|
81
|
+
switchDraftAndActivePopoverListSelect(this: PageController, event: Event) {
|
|
82
|
+
const context: any = this.getView().getBindingContext(),
|
|
83
|
+
selectedItemKey = event.getParameter("item").getProperty("key"),
|
|
84
|
+
isActiveEntity = context.getObject().IsActiveEntity;
|
|
85
|
+
// It was decided that we should NOT set the entry in the list corresponding to the currently displayed document version to
|
|
86
|
+
// disabled, hence the user can click entries which to not cause an action (clicking "Draft" when you already display the
|
|
87
|
+
// draft version of the document)
|
|
88
|
+
// Hence we check here which entry in the list was clicked and which document version we currently display and only do
|
|
89
|
+
// the switch between draft / active version if it makes sense.
|
|
90
|
+
if ((isActiveEntity && selectedItemKey === "switchToDraft") || (!isActiveEntity && selectedItemKey === "switchToActive")) {
|
|
91
|
+
this.editFlow.toggleDraftActive(context);
|
|
92
|
+
}
|
|
93
|
+
((event.getSource() as Control).getParent() as Popover).close();
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
export default DraftHandler;
|
|
@@ -55,4 +55,4 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/navigation/SelectionVariant"],
|
|
|
55
55
|
};
|
|
56
56
|
return IntentBasedNavigationOverride;
|
|
57
57
|
}, false);
|
|
58
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkludGVudEJhc2VkTmF2aWdhdGlvbi50cyJdLCJuYW1lcyI6WyJJbnRlbnRCYXNlZE5hdmlnYXRpb25PdmVycmlkZSIsImFkYXB0TmF2aWdhdGlvbkNvbnRleHQiLCJvU2VsZWN0aW9uVmFyaWFudCIsIm9UYXJnZXRJbmZvIiwib1ZpZXciLCJnZXRWaWV3Iiwib0NvbnRyb2xsZXIiLCJnZXRDb250cm9sbGVyIiwib0ludGVybmFsTW9kZWxDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJvRXh0ZXJuYWxOYXZpZ2F0aW9uQ29udGV4dCIsImdldFByb3BlcnR5Iiwib0FwcENvbXBvbmVudCIsIkNvbW1vblV0aWxzIiwiZ2V0QXBwQ29tcG9uZW50Iiwib01ldGFNb2RlbCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwicGFnZSIsIm9QYWdlQ29udGV4dCIsInNNZXRhUGF0aCIsImdldE1ldGFQYXRoIiwiZ2V0UGF0aCIsIm9QYWdlQ29udGV4dERhdGEiLCJfaW50ZW50QmFzZWROYXZpZ2F0aW9uIiwicmVtb3ZlU2Vuc2l0aXZlRGF0YSIsImdldE9iamVjdCIsIm9QYWdlRGF0YSIsInByZXBhcmVDb250ZXh0Rm9yRXh0ZXJuYWxOYXZpZ2F0aW9uIiwib1BhZ2VQcm9wZXJ0aWVzV2l0aG91dENvbmZsaWN0IiwicHJvcGVydGllc1dpdGhvdXRDb25mbGljdCIsIm9QYWdlU1YiLCJhZGRQYWdlQ29udGV4dFRvU2VsZWN0aW9uVmFyaWFudCIsIlNlbGVjdGlvblZhcmlhbnQiLCJzZW1hbnRpY0F0dHJpYnV0ZXMiLCJvUHJvcGVydGllc1dpdGhvdXRDb25mbGljdCIsImFTZWxlY3RPcHRpb25Qcm9wZXJ0eU5hbWVzIiwiZ2V0U2VsZWN0T3B0aW9uc1Byb3BlcnR5TmFtZXMiLCJmb3JFYWNoIiwic1Byb3BlcnR5TmFtZSIsImdldFNlbGVjdE9wdGlvbiIsIm1hc3NBZGRTZWxlY3RPcHRpb24iLCJzZXRQcm9wZXJ0eSJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7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cyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIEludGVudEJhc2VkTmF2aWdhdGlvbiBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW50ZW50QmFzZWROYXZpZ2F0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IEludGVybmFsTW9kZWxDb250ZXh0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB0eXBlIFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IFNlbGVjdGlvblZhcmlhbnQgZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL1NlbGVjdGlvblZhcmlhbnRcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5cbmNvbnN0IEludGVudEJhc2VkTmF2aWdhdGlvbk92ZXJyaWRlID0ge1xuXHRhZGFwdE5hdmlnYXRpb25Db250ZXh0OiBmdW5jdGlvbiAodGhpczogSW50ZW50QmFzZWROYXZpZ2F0aW9uLCBvU2VsZWN0aW9uVmFyaWFudDogYW55LCBvVGFyZ2V0SW5mbzogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIFBhZ2VDb250cm9sbGVyLFxuXHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0ID0gdGhpcy5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dCxcblx0XHRcdG9FeHRlcm5hbE5hdmlnYXRpb25Db250ZXh0ID0gb0ludGVybmFsTW9kZWxDb250ZXh0LmdldFByb3BlcnR5KFwiZXh0ZXJuYWxOYXZpZ2F0aW9uQ29udGV4dFwiKTtcblx0XHRjb25zdCBvQXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KG9WaWV3KTtcblx0XHRjb25zdCBvTWV0YU1vZGVsID0gb0FwcENvbXBvbmVudC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpIGFzIE9EYXRhTWV0YU1vZGVsO1xuXHRcdGlmIChvRXh0ZXJuYWxOYXZpZ2F0aW9uQ29udGV4dC5wYWdlKSB7XG5cdFx0XHRjb25zdCBvUGFnZUNvbnRleHQgPSBvVmlldy5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQsXG5cdFx0XHRcdHNNZXRhUGF0aCA9IG9NZXRhTW9kZWwuZ2V0TWV0YVBhdGgob1BhZ2VDb250ZXh0LmdldFBhdGgoKSk7XG5cdFx0XHRjb25zdCBvUGFnZUNvbnRleHREYXRhID0gb0NvbnRyb2xsZXIuX2ludGVudEJhc2VkTmF2aWdhdGlvbi5yZW1vdmVTZW5zaXRpdmVEYXRhKG9QYWdlQ29udGV4dC5nZXRPYmplY3QoKSwgc01ldGFQYXRoKSxcblx0XHRcdFx0b1BhZ2VEYXRhID0gb0NvbnRyb2xsZXIuX2ludGVudEJhc2VkTmF2aWdhdGlvbi5wcmVwYXJlQ29udGV4dEZvckV4dGVybmFsTmF2aWdhdGlvbihvUGFnZUNvbnRleHREYXRhLCBvUGFnZUNvbnRleHQpLFxuXHRcdFx0XHRvUGFnZVByb3BlcnRpZXNXaXRob3V0Q29uZmxpY3QgPSBvUGFnZURhdGEucHJvcGVydGllc1dpdGhvdXRDb25mbGljdCxcblx0XHRcdFx0Ly8gVE9ETzogbW92ZSB0aGlzIGFsc28gaW50byB0aGUgaW50ZW50IGJhc2VkIG5hdmlnYXRpb24gY29udHJvbGxlciBleHRlbnNpb25cblx0XHRcdFx0b1BhZ2VTViA9IENvbW1vblV0aWxzLmFkZFBhZ2VDb250ZXh0VG9TZWxlY3Rpb25WYXJpYW50KG5ldyBTZWxlY3Rpb25WYXJpYW50KCksIG9QYWdlRGF0YS5zZW1hbnRpY0F0dHJpYnV0ZXMsIG9WaWV3KSxcblx0XHRcdFx0b1Byb3BlcnRpZXNXaXRob3V0Q29uZmxpY3QgPSBvVGFyZ2V0SW5mby5wcm9wZXJ0aWVzV2l0aG91dENvbmZsaWN0O1xuXHRcdFx0Y29uc3QgYVNlbGVjdE9wdGlvblByb3BlcnR5TmFtZXMgPSBvUGFnZVNWLmdldFNlbGVjdE9wdGlvbnNQcm9wZXJ0eU5hbWVzKCk7XG5cdFx0XHRhU2VsZWN0T3B0aW9uUHJvcGVydHlOYW1lcy5mb3JFYWNoKGZ1bmN0aW9uIChzUHJvcGVydHlOYW1lOiBhbnkpIHtcblx0XHRcdFx0aWYgKCFvU2VsZWN0aW9uVmFyaWFudC5nZXRTZWxlY3RPcHRpb24oc1Byb3BlcnR5TmFtZSkpIHtcblx0XHRcdFx0XHRvU2VsZWN0aW9uVmFyaWFudC5tYXNzQWRkU2VsZWN0T3B0aW9uKHNQcm9wZXJ0eU5hbWUsIG9QYWdlU1YuZ2V0U2VsZWN0T3B0aW9uKHNQcm9wZXJ0eU5hbWUpKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBPbmx5IHdoZW4gdGhlcmUgaXMgbm8gY29uZmxpY3QgZG8gd2UgbmVlZCB0byBhZGQgc29tZXRoaW5nXG5cdFx0XHRcdFx0Ly8gaW4gYWxsIG90aGVyIGNhc2UgdGhlIGNvbmZsaWN0ZWQgcGF0aHMgYXJlIGFscmVhZHkgYWRkZWQgaW4gcHJlcGFyZUNvbnRleHRGb3JFeHRlcm5hbE5hdmlnYXRpb25cblx0XHRcdFx0XHQvLyBpZiBwcm9wZXJ0eSB3YXMgd2l0aG91dCBjb25mbGljdCBpbiBpbmNvbWluZyBjb250ZXh0IHRoZW4gYWRkIHBhdGggZnJvbSBpbmNvbWluZyBjb250ZXh0IHRvIFNWXG5cdFx0XHRcdFx0Ly8gVE8tRE8uIFJlbW92ZSB0aGUgY2hlY2sgZm9yIG9Qcm9wZXJ0aWVzV2l0aG91dENvbmZsaWN0IG9uY2Ugc2VtYW50aWMgbGlua3MgZnVuY3Rpb25hbGl0eSBpcyBjb3ZlcmVkXG5cdFx0XHRcdFx0aWYgKG9Qcm9wZXJ0aWVzV2l0aG91dENvbmZsaWN0ICYmIHNQcm9wZXJ0eU5hbWUgaW4gb1Byb3BlcnRpZXNXaXRob3V0Q29uZmxpY3QpIHtcblx0XHRcdFx0XHRcdG9TZWxlY3Rpb25WYXJpYW50Lm1hc3NBZGRTZWxlY3RPcHRpb24oXG5cdFx0XHRcdFx0XHRcdG9Qcm9wZXJ0aWVzV2l0aG91dENvbmZsaWN0W3NQcm9wZXJ0eU5hbWVdLFxuXHRcdFx0XHRcdFx0XHRvU2VsZWN0aW9uVmFyaWFudC5nZXRTZWxlY3RPcHRpb24oc1Byb3BlcnR5TmFtZSlcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vIGlmIHByb3BlcnR5IHdhcyB3aXRob3V0IGNvbmZsaWN0IGluIHBhZ2UgY29udGV4dCB0aGVuIGFkZCBwYXRoIGZyb20gcGFnZSBjb250ZXh0IHRvIFNWXG5cdFx0XHRcdFx0aWYgKHNQcm9wZXJ0eU5hbWUgaW4gb1BhZ2VQcm9wZXJ0aWVzV2l0aG91dENvbmZsaWN0KSB7XG5cdFx0XHRcdFx0XHRvU2VsZWN0aW9uVmFyaWFudC5tYXNzQWRkU2VsZWN0T3B0aW9uKFxuXHRcdFx0XHRcdFx0XHRvUGFnZVByb3BlcnRpZXNXaXRob3V0Q29uZmxpY3Rbc1Byb3BlcnR5TmFtZV0sXG5cdFx0XHRcdFx0XHRcdG9QYWdlU1YuZ2V0U2VsZWN0T3B0aW9uKHNQcm9wZXJ0eU5hbWUpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHQvLyByZW1vdmUgbm9uIHB1YmxpYyBwcm9wZXJ0aWVzIGZyb20gdGFyZ2V0SW5mb1xuXHRcdFx0ZGVsZXRlIG9UYXJnZXRJbmZvLnByb3BlcnRpZXNXaXRob3V0Q29uZmxpY3Q7XG5cdFx0fVxuXHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImV4dGVybmFsTmF2aWdhdGlvbkNvbnRleHRcIiwgeyBcInBhZ2VcIjogdHJ1ZSB9KTtcblx0fVxufTtcblxuZXhwb3J0IGRlZmF1bHQgSW50ZW50QmFzZWROYXZpZ2F0aW9uT3ZlcnJpZGU7XG4iXX0=
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import CommonUtils from "sap/fe/core/CommonUtils";
|
|
2
|
-
import IntentBasedNavigation from "sap/fe/core/controllerextensions/IntentBasedNavigation";
|
|
3
|
-
import { InternalModelContext } from "sap/fe/core/helpers/ModelHelper";
|
|
4
|
-
import PageController from "sap/fe/core/PageController";
|
|
2
|
+
import type IntentBasedNavigation from "sap/fe/core/controllerextensions/IntentBasedNavigation";
|
|
3
|
+
import type { InternalModelContext } from "sap/fe/core/helpers/ModelHelper";
|
|
4
|
+
import type PageController from "sap/fe/core/PageController";
|
|
5
5
|
import SelectionVariant from "sap/fe/navigation/SelectionVariant";
|
|
6
|
-
import Context from "sap/ui/model/Context";
|
|
7
|
-
import ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
|
|
6
|
+
import type Context from "sap/ui/model/Context";
|
|
7
|
+
import type ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
|
|
8
8
|
|
|
9
9
|
const IntentBasedNavigationOverride = {
|
|
10
10
|
adaptNavigationContext: function (this: IntentBasedNavigation, oSelectionVariant: any, oTargetInfo: any) {
|
|
@@ -15,4 +15,4 @@ sap.ui.define([], function () {
|
|
|
15
15
|
};
|
|
16
16
|
return InternalRoutingExtension;
|
|
17
17
|
}, false);
|
|
18
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkludGVybmFsUm91dGluZy50cyJdLCJuYW1lcyI6WyJJbnRlcm5hbFJvdXRpbmdFeHRlbnNpb24iLCJvbkJlZm9yZUJpbmRpbmciLCJvQ29udGV4dCIsIm1QYXJhbWV0ZXJzIiwiZ2V0VmlldyIsImdldENvbnRyb2xsZXIiLCJfb25CZWZvcmVCaW5kaW5nIiwib25BZnRlckJpbmRpbmciLCJfb25BZnRlckJpbmRpbmciXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7QUFDQSxNQUFNQSx3QkFBd0IsR0FBRztBQUNoQ0MsSUFBQUEsZUFBZSxFQUFFLFVBQWlDQyxRQUFqQyxFQUFnREMsV0FBaEQsRUFBa0U7QUFDakYsV0FBS0MsT0FBTCxHQUFlQyxhQUFmLEVBQUQsQ0FBeURDLGdCQUF6RCxDQUEwRUosUUFBMUUsRUFBb0ZDLFdBQXBGO0FBQ0EsS0FIK0I7QUFJaENJLElBQUFBLGNBQWMsRUFBRSxVQUFpQ0wsUUFBakMsRUFBZ0RDLFdBQWhELEVBQWtFO0FBQ2hGLFdBQUtDLE9BQUwsR0FBZUMsYUFBZixFQUFELENBQXlERyxlQUF6RCxDQUF5RU4sUUFBekUsRUFBbUZDLFdBQW5GO0FBQ0E7QUFOK0IsR0FBakM7U0FTZUgsd0IiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIEludGVybmFsUm91dGluZyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW50ZXJuYWxSb3V0aW5nXCI7XG5pbXBvcnQgdHlwZSBPYmplY3RQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL3RlbXBsYXRlcy9PYmplY3RQYWdlL09iamVjdFBhZ2VDb250cm9sbGVyLmNvbnRyb2xsZXJcIjtcblxuY29uc3QgSW50ZXJuYWxSb3V0aW5nRXh0ZW5zaW9uID0ge1xuXHRvbkJlZm9yZUJpbmRpbmc6IGZ1bmN0aW9uICh0aGlzOiBJbnRlcm5hbFJvdXRpbmcsIG9Db250ZXh0OiBhbnksIG1QYXJhbWV0ZXJzOiBhbnkpIHtcblx0XHQodGhpcy5nZXRWaWV3KCkuZ2V0Q29udHJvbGxlcigpIGFzIE9iamVjdFBhZ2VDb250cm9sbGVyKS5fb25CZWZvcmVCaW5kaW5nKG9Db250ZXh0LCBtUGFyYW1ldGVycyk7XG5cdH0sXG5cdG9uQWZ0ZXJCaW5kaW5nOiBmdW5jdGlvbiAodGhpczogSW50ZXJuYWxSb3V0aW5nLCBvQ29udGV4dDogYW55LCBtUGFyYW1ldGVyczogYW55KSB7XG5cdFx0KHRoaXMuZ2V0VmlldygpLmdldENvbnRyb2xsZXIoKSBhcyBPYmplY3RQYWdlQ29udHJvbGxlcikuX29uQWZ0ZXJCaW5kaW5nKG9Db250ZXh0LCBtUGFyYW1ldGVycyk7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IEludGVybmFsUm91dGluZ0V4dGVuc2lvbjtcbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import InternalRouting from "sap/fe/core/controllerextensions/InternalRouting";
|
|
2
|
-
import ObjectPageController from "sap/fe/templates/ObjectPage/ObjectPageController.controller";
|
|
1
|
+
import type InternalRouting from "sap/fe/core/controllerextensions/InternalRouting";
|
|
2
|
+
import type ObjectPageController from "sap/fe/templates/ObjectPage/ObjectPageController.controller";
|
|
3
3
|
|
|
4
4
|
const InternalRoutingExtension = {
|
|
5
5
|
onBeforeBinding: function (this: InternalRouting, oContext: any, mParameters: any) {
|
|
@@ -13,4 +13,4 @@ sap.ui.define([], function () {
|
|
|
13
13
|
};
|
|
14
14
|
return MessageHandlerExtension;
|
|
15
15
|
}, false);
|
|
16
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1lc3NhZ2VIYW5kbGVyLnRzIl0sIm5hbWVzIjpbIk1lc3NhZ2VIYW5kbGVyRXh0ZW5zaW9uIiwiZ2V0U2hvd0JvdW5kTWVzc2FnZXNJbk1lc3NhZ2VEaWFsb2ciLCJiYXNlIiwiZ2V0TW9kZWwiLCJnZXRQcm9wZXJ0eSIsImdldFZpZXciLCJnZXRCaW5kaW5nQ29udGV4dCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7OztBQUNBLE1BQU1BLHVCQUF1QixHQUFHO0FBQy9CQyxJQUFBQSxtQ0FBbUMsRUFBRSxZQUFnQztBQUNwRTtBQUNBLGFBQ0MsQ0FBQyxLQUFLQyxJQUFMLENBQVVDLFFBQVYsQ0FBbUIsSUFBbkIsRUFBeUJDLFdBQXpCLENBQXFDLGFBQXJDLENBQUQsSUFDQyxLQUFLRixJQUFMLENBQVVHLE9BQVYsR0FBb0JDLGlCQUFwQixDQUFzQyxVQUF0QyxDQUFELENBQTRFRixXQUE1RSxDQUF3Riw2QkFBeEYsQ0FGRDtBQUlBO0FBUDhCLEdBQWhDO1NBVWVKLHVCIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBNZXNzYWdlSGFuZGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvTWVzc2FnZUhhbmRsZXJcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuXG5jb25zdCBNZXNzYWdlSGFuZGxlckV4dGVuc2lvbiA9IHtcblx0Z2V0U2hvd0JvdW5kTWVzc2FnZXNJbk1lc3NhZ2VEaWFsb2c6IGZ1bmN0aW9uICh0aGlzOiBNZXNzYWdlSGFuZGxlcikge1xuXHRcdC8vIGluIGNhc2Ugb2YgZWRpdCBtb2RlIHdlIHNob3cgdGhlIG1lc3NhZ2VzIGluIHRoZSBtZXNzYWdlIHBvcG92ZXJcblx0XHRyZXR1cm4gKFxuXHRcdFx0IXRoaXMuYmFzZS5nZXRNb2RlbChcInVpXCIpLmdldFByb3BlcnR5KFwiL2lzRWRpdGFibGVcIikgfHxcblx0XHRcdCh0aGlzLmJhc2UuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQpLmdldFByb3BlcnR5KFwiaXNBY3Rpb25QYXJhbWV0ZXJEaWFsb2dPcGVuXCIpXG5cdFx0KTtcblx0fVxufTtcblxuZXhwb3J0IGRlZmF1bHQgTWVzc2FnZUhhbmRsZXJFeHRlbnNpb247XG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import MessageHandler from "sap/fe/core/controllerextensions/MessageHandler";
|
|
2
|
-
import { InternalModelContext } from "sap/fe/core/helpers/ModelHelper";
|
|
1
|
+
import type MessageHandler from "sap/fe/core/controllerextensions/MessageHandler";
|
|
2
|
+
import type { InternalModelContext } from "sap/fe/core/helpers/ModelHelper";
|
|
3
3
|
|
|
4
4
|
const MessageHandlerExtension = {
|
|
5
5
|
getShowBoundMessagesInMessageDialog: function (this: MessageHandler) {
|
|
@@ -25,4 +25,4 @@ sap.ui.define([], function () {
|
|
|
25
25
|
};
|
|
26
26
|
return PaginatorExtensionOverride;
|
|
27
27
|
}, false);
|
|
28
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlBhZ2luYXRvci50cyJdLCJuYW1lcyI6WyJQYWdpbmF0b3JFeHRlbnNpb25PdmVycmlkZSIsIm9uQmVmb3JlQ29udGV4dFVwZGF0ZSIsIm9MaXN0QmluZGluZyIsImlDdXJyZW50Q29udGV4dEluZGV4Iiwib0N1cnJlbnRWaWV3IiwiZ2V0VmlldyIsIm9Db250cm9sQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0IiwiYUN1cnJlbnRDb250ZXh0cyIsImdldEN1cnJlbnRDb250ZXh0cyIsIm9QYWdpbmF0b3JDdXJyZW50Q29udGV4dCIsImdldFBhdGgiLCJvbkNvbnRleHRVcGRhdGUiLCJvQ29udGV4dCIsImJhc2UiLCJfcm91dGluZyIsIm5hdmlnYXRlVG9Db250ZXh0IiwiY2FsbEV4dGVuc2lvbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7OztBQUFBLE1BQU1BLDBCQUEwQixHQUFHO0FBQ2xDQyxJQUFBQSxxQkFBcUIsRUFBRSxVQUEyQkMsWUFBM0IsRUFBOENDLG9CQUE5QyxFQUF5RTtBQUMvRixVQUFNQyxZQUFZLEdBQUcsS0FBS0MsT0FBTCxFQUFyQjtBQUFBLFVBQ0NDLGVBQWUsR0FBR0YsWUFBWSxJQUFJQSxZQUFZLENBQUNHLGlCQUFiLEVBRG5DO0FBQUEsVUFFQ0MsZ0JBQWdCLEdBQUdOLFlBQVksSUFBSUEsWUFBWSxDQUFDTyxrQkFBYixFQUZwQztBQUFBLFVBR0NDLHdCQUF3QixHQUFHRixnQkFBZ0IsQ0FBQ0wsb0JBQUQsQ0FINUM7O0FBS0EsVUFBSU8sd0JBQXdCLElBQUlKLGVBQTVCLElBQStDSSx3QkFBd0IsQ0FBQ0MsT0FBekIsT0FBdUNMLGVBQWUsQ0FBQ0ssT0FBaEIsRUFBMUYsRUFBcUg7QUFDcEg7QUFDQSxlQUFPLElBQVA7QUFDQTtBQUNELEtBWGlDO0FBYWxDQyxJQUFBQSxlQUFlLEVBQUUsVUFBMkJDLFFBQTNCLEVBQTBDO0FBQzFELFdBQUtDLElBQUwsQ0FBVUMsUUFBVixDQUFtQkMsaUJBQW5CLENBQXFDSCxRQUFyQyxFQUErQztBQUFFSSxRQUFBQSxhQUFhLEVBQUU7QUFBakIsT0FBL0M7QUFDQTtBQWZpQyxHQUFuQztTQWtCZWpCLDBCIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBQYWdpbmF0b3IgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1BhZ2luYXRvclwiO1xuXG5jb25zdCBQYWdpbmF0b3JFeHRlbnNpb25PdmVycmlkZSA9IHtcblx0b25CZWZvcmVDb250ZXh0VXBkYXRlOiBmdW5jdGlvbiAodGhpczogUGFnaW5hdG9yLCBvTGlzdEJpbmRpbmc6IGFueSwgaUN1cnJlbnRDb250ZXh0SW5kZXg6IGFueSkge1xuXHRcdGNvbnN0IG9DdXJyZW50VmlldyA9IHRoaXMuZ2V0VmlldygpLFxuXHRcdFx0b0NvbnRyb2xDb250ZXh0ID0gb0N1cnJlbnRWaWV3ICYmIG9DdXJyZW50Vmlldy5nZXRCaW5kaW5nQ29udGV4dCgpLFxuXHRcdFx0YUN1cnJlbnRDb250ZXh0cyA9IG9MaXN0QmluZGluZyAmJiBvTGlzdEJpbmRpbmcuZ2V0Q3VycmVudENvbnRleHRzKCksXG5cdFx0XHRvUGFnaW5hdG9yQ3VycmVudENvbnRleHQgPSBhQ3VycmVudENvbnRleHRzW2lDdXJyZW50Q29udGV4dEluZGV4XTtcblxuXHRcdGlmIChvUGFnaW5hdG9yQ3VycmVudENvbnRleHQgJiYgb0NvbnRyb2xDb250ZXh0ICYmIG9QYWdpbmF0b3JDdXJyZW50Q29udGV4dC5nZXRQYXRoKCkgIT09IG9Db250cm9sQ29udGV4dC5nZXRQYXRoKCkpIHtcblx0XHRcdC8vIFByZXZlbnQgZGVmYXVsdCB1cGRhdGUgb2YgY29udGV4dCBpbmRleCBpbiBPYmplY3QgUGFnZSBQYWdpbmF0b3Igd2hlbiB2aWV3IGNvbnRleHQgaXMgZGlmZmVyZW50IGZyb20gdGhlIHBhZ2luYXRvciBjb250ZXh0LlxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHR9LFxuXG5cdG9uQ29udGV4dFVwZGF0ZTogZnVuY3Rpb24gKHRoaXM6IFBhZ2luYXRvciwgb0NvbnRleHQ6IGFueSkge1xuXHRcdHRoaXMuYmFzZS5fcm91dGluZy5uYXZpZ2F0ZVRvQ29udGV4dChvQ29udGV4dCwgeyBjYWxsRXh0ZW5zaW9uOiB0cnVlIH0pO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBQYWdpbmF0b3JFeHRlbnNpb25PdmVycmlkZTtcbiJdfQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import Paginator from "sap/fe/core/controllerextensions/Paginator";
|
|
1
|
+
import type Paginator from "sap/fe/core/controllerextensions/Paginator";
|
|
2
2
|
|
|
3
3
|
const PaginatorExtensionOverride = {
|
|
4
4
|
onBeforeContextUpdate: function (this: Paginator, oListBinding: any, iCurrentContextIndex: any) {
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/helpers/SemanticKeyHelper", "sap/ui/core/routing/HashChanger", "sap/ui/model/Filter", "sap/ui/model/FilterOperator"], function (Log, ModelHelper, SemanticKeyHelper, HashChanger, Filter, FilterOperator) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
var
|
|
8
|
+
var bGlobalIsStickySupported;
|
|
9
9
|
|
|
10
10
|
function createFilterToFetchActiveContext(mKeyValues, bIsActiveEntityDefined) {
|
|
11
11
|
var aKeys = Object.keys(mKeyValues);
|
|
@@ -25,12 +25,11 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/h
|
|
|
25
25
|
aFilters.push(oActiveFilter);
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
return oCombinedFilter;
|
|
28
|
+
return new Filter(aFilters, true);
|
|
30
29
|
}
|
|
31
30
|
|
|
32
31
|
function getActiveContextPath(oController, sPageEntityName, oFilter) {
|
|
33
|
-
var oListBinding = oController.getView().getBindingContext().getModel().bindList("/"
|
|
32
|
+
var oListBinding = oController.getView().getBindingContext().getModel().bindList("/".concat(sPageEntityName), undefined, undefined, oFilter, {
|
|
34
33
|
"$$groupId": "$auto.Heroes"
|
|
35
34
|
});
|
|
36
35
|
return oListBinding.requestContexts(0, 2).then(function (oContexts) {
|
|
@@ -76,7 +75,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/h
|
|
|
76
75
|
|
|
77
76
|
if (sKeyAssignment.indexOf("=") === -1) {
|
|
78
77
|
var oMetaModel = oContext.getModel().getMetaModel();
|
|
79
|
-
var aTechnicalKeys = oMetaModel.getObject("/"
|
|
78
|
+
var aTechnicalKeys = oMetaModel.getObject("/".concat(aPageHashArray.join("/"), "/$Type/$Key"));
|
|
80
79
|
sKeyValue = aParts[0];
|
|
81
80
|
sKey = aTechnicalKeys[0];
|
|
82
81
|
oPageMap[sPageHash.split("(")[0]]["bIsActiveEntityDefined"] = false;
|
|
@@ -101,7 +100,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/h
|
|
|
101
100
|
|
|
102
101
|
if (sPageEntitySetName) {
|
|
103
102
|
oPageInfo.pageEntityName = oPageEntitySet.$NavigationPropertyBinding[sNavigationPath];
|
|
104
|
-
oPageEntitySet = oContext.getModel().getMetaModel().getObject("/"
|
|
103
|
+
oPageEntitySet = oContext.getModel().getMetaModel().getObject("/".concat(sPageEntitySetName)) || oEntitySet;
|
|
105
104
|
} else {
|
|
106
105
|
oPageInfo.pageEntityName = sNavigationPath;
|
|
107
106
|
}
|
|
@@ -118,9 +117,10 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/h
|
|
|
118
117
|
}
|
|
119
118
|
/**
|
|
120
119
|
* Method to fetch active context path's.
|
|
121
|
-
*
|
|
120
|
+
*
|
|
121
|
+
* @param oContext The Page Context
|
|
122
122
|
* @param oController
|
|
123
|
-
* @returns
|
|
123
|
+
* @returns Promise which is resolved once the active context's are fetched
|
|
124
124
|
*/
|
|
125
125
|
|
|
126
126
|
|
|
@@ -132,7 +132,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/h
|
|
|
132
132
|
sRootEntityName = sRootEntityName.substring(1);
|
|
133
133
|
}
|
|
134
134
|
|
|
135
|
-
var oEntitySet = oContext.getModel().getMetaModel().getObject("/"
|
|
135
|
+
var oEntitySet = oContext.getModel().getMetaModel().getObject("/".concat(sRootEntityName));
|
|
136
136
|
var oPageContext = oContext;
|
|
137
137
|
var aActiveContextpromises = getActiveContextInstances(oContext, oController, oEntitySet);
|
|
138
138
|
|
|
@@ -167,7 +167,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/h
|
|
|
167
167
|
|
|
168
168
|
if (sNavigatioProperty) {
|
|
169
169
|
aActiveContextPaths.push(sActiveContextPath.replace(sEntitySetName, sNavigatioProperty));
|
|
170
|
-
oPageEntitySet = oPageContext.getModel().getMetaModel().getObject("/"
|
|
170
|
+
oPageEntitySet = oPageContext.getModel().getMetaModel().getObject("/".concat(sEntitySetName)) || oEntitySet;
|
|
171
171
|
} else {
|
|
172
172
|
aActiveContextPaths.push(sActiveContextPath);
|
|
173
173
|
}
|
|
@@ -189,7 +189,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/h
|
|
|
189
189
|
if (oContext) {
|
|
190
190
|
var oModel = oContext.getModel();
|
|
191
191
|
var oMetaModel = oModel.getMetaModel();
|
|
192
|
-
|
|
192
|
+
bGlobalIsStickySupported = ModelHelper.isStickySessionSupported(oMetaModel);
|
|
193
193
|
var sRootEntityName = sCurrentHashNoParams && sCurrentHashNoParams.substr(0, sCurrentHashNoParams.indexOf("("));
|
|
194
194
|
|
|
195
195
|
if (sRootEntityName.indexOf("/") === 0) {
|
|
@@ -204,7 +204,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/h
|
|
|
204
204
|
|
|
205
205
|
var oViewData = oController.getView().getViewData();
|
|
206
206
|
|
|
207
|
-
if (oContext && !
|
|
207
|
+
if (oContext && !bGlobalIsStickySupported && (oViewData.viewLevel === 1 && !aSemanticKeys || oViewData.viewLevel >= 2)) {
|
|
208
208
|
oPromise = getActiveContextPaths(oContext, oController);
|
|
209
209
|
return oPromise;
|
|
210
210
|
} else {
|
|
@@ -284,12 +284,12 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/h
|
|
|
284
284
|
return fetchActiveContextPaths(oContext, this.base.getView().getController()).then(function (aActiveContextPaths) {
|
|
285
285
|
var oPageTitleInfo = _this.base.getView().getController()._getPageTitleInformation();
|
|
286
286
|
|
|
287
|
-
return Promise.all([getJamUrl(bIsEditable,
|
|
287
|
+
return Promise.all([getJamUrl(bIsEditable, bGlobalIsStickySupported, aActiveContextPaths), getShareUrl(bIsEditable, bGlobalIsStickySupported, aActiveContextPaths), getShareEmailUrl()]).then(function (oData) {
|
|
288
288
|
var sTitle = oPageTitleInfo.title;
|
|
289
289
|
var sObjectSubtitle = oPageTitleInfo.subtitle ? oPageTitleInfo.subtitle.toString() : "";
|
|
290
290
|
|
|
291
291
|
if (sObjectSubtitle) {
|
|
292
|
-
sTitle = sTitle
|
|
292
|
+
sTitle = "".concat(sTitle, " - ").concat(sObjectSubtitle);
|
|
293
293
|
}
|
|
294
294
|
|
|
295
295
|
oShareMetadata.tile = {
|
|
@@ -310,4 +310,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/h
|
|
|
310
310
|
};
|
|
311
311
|
return ShareExtensionOverride;
|
|
312
312
|
}, false);
|
|
313
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNoYXJlLnRzIl0sIm5hbWVzIjpbImJJc1N0aWNreVN1cHBvcnRlZCIsImNyZWF0ZUZpbHRlclRvRmV0Y2hBY3RpdmVDb250ZXh0IiwibUtleVZhbHVlcyIsImJJc0FjdGl2ZUVudGl0eURlZmluZWQiLCJhS2V5cyIsIk9iamVjdCIsImtleXMiLCJhRmlsdGVycyIsIm1hcCIsInNLZXkiLCJzVmFsdWUiLCJ1bmRlZmluZWQiLCJGaWx0ZXIiLCJGaWx0ZXJPcGVyYXRvciIsIkVRIiwib0FjdGl2ZUZpbHRlciIsImZpbHRlcnMiLCJhbmQiLCJwdXNoIiwib0NvbWJpbmVkRmlsdGVyIiwiZ2V0QWN0aXZlQ29udGV4dFBhdGgiLCJvQ29udHJvbGxlciIsInNQYWdlRW50aXR5TmFtZSIsIm9GaWx0ZXIiLCJvTGlzdEJpbmRpbmciLCJnZXRWaWV3IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJnZXRNb2RlbCIsImJpbmRMaXN0IiwicmVxdWVzdENvbnRleHRzIiwidGhlbiIsIm9Db250ZXh0cyIsImxlbmd0aCIsImdldFBhdGgiLCJnZXRBY3RpdmVDb250ZXh0SW5zdGFuY2VzIiwib0NvbnRleHQiLCJvRW50aXR5U2V0IiwiYUFjdGl2ZUNvbnRleHRwcm9taXNlcyIsImFQYWdlcyIsInNNZXRhUGF0aCIsImdldE1ldGFNb2RlbCIsImdldE1ldGFQYXRoIiwiaW5kZXhPZiIsInN1YnN0cmluZyIsImFNZXRhUGF0aEFycmF5Iiwic3BsaXQiLCJzQ3VycmVudEhhc2hOb1BhcmFtcyIsIkhhc2hDaGFuZ2VyIiwiZ2V0SW5zdGFuY2UiLCJnZXRIYXNoIiwiYUN1cnJlbnRIYXNoQXJyYXkiLCJvUGFnZU1hcCIsImFQYWdlSGFzaEFycmF5IiwiZm9yRWFjaCIsInNQYWdlSGFzaCIsImFLZXlWYWx1ZXMiLCJzUGFnZUhhc2hOYW1lIiwiaSIsInNLZXlBc3NpZ25tZW50IiwiYVBhcnRzIiwic0tleVZhbHVlIiwib01ldGFNb2RlbCIsImFUZWNobmljYWxLZXlzIiwiZ2V0T2JqZWN0Iiwiam9pbiIsImxhc3RJbmRleE9mIiwiZGVjb2RlVVJJQ29tcG9uZW50Iiwib1BhZ2VFbnRpdHlTZXQiLCJzTmF2aWdhdGlvblBhdGgiLCJvUGFnZUluZm8iLCJzUGFnZUVudGl0eVNldE5hbWUiLCIkTmF2aWdhdGlvblByb3BlcnR5QmluZGluZyIsInBhZ2VFbnRpdHlOYW1lIiwiZ2V0QWN0aXZlQ29udGV4dFBhdGhzIiwic1Jvb3RFbnRpdHlOYW1lIiwic3Vic3RyIiwib1BhZ2VDb250ZXh0IiwiUHJvbWlzZSIsImFsbCIsImFEYXRhIiwiYUFjdGl2ZUNvbnRleHRQYXRocyIsInNBY3RpdmVDb250ZXh0UGF0aCIsInNOYXZpZ2F0aW9Qcm9wZXJ0eSIsInNFbnRpdHlTZXROYW1lIiwidmFsdWVzIiwicmVwbGFjZSIsImNhdGNoIiwib0Vycm9yIiwiTG9nIiwiaW5mbyIsInJlc29sdmUiLCJmZXRjaEFjdGl2ZUNvbnRleHRQYXRocyIsIm9Qcm9taXNlIiwiYVNlbWFudGljS2V5cyIsIm9Nb2RlbCIsIk1vZGVsSGVscGVyIiwiaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwiU2VtYW50aWNLZXlIZWxwZXIiLCJnZXRTZW1hbnRpY0tleXMiLCJvVmlld0RhdGEiLCJnZXRWaWV3RGF0YSIsInZpZXdMZXZlbCIsImdldFNoYXJlVXJsIiwiYklzRWRpdGFibGUiLCJzU2hhcmVVcmwiLCJzSGFzaCIsInNCYXNlUGF0aCIsImhyZWZGb3JBcHBTcGVjaWZpY0hhc2giLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhhc2giLCJnZXRTaGFyZUVtYWlsVXJsIiwib1VTaGVsbENvbnRhaW5lciIsInNhcCIsInVzaGVsbCIsIkNvbnRhaW5lciIsImdldEZMUFVybEFzeW5jIiwic0ZMUFVybCIsInNFcnJvciIsImVycm9yIiwiZG9jdW1lbnQiLCJVUkwiLCJnZXRKYW1VcmwiLCJiSXNFZGl0TW9kZSIsInNKYW1VcmwiLCJydW5uaW5nSW5JZnJhbWUiLCJnZXRGTFBVcmwiLCJzVXJsIiwib3JpZ2luIiwicGF0aG5hbWUiLCJTaGFyZUV4dGVuc2lvbk92ZXJyaWRlIiwiYWRhcHRTaGFyZU1ldGFkYXRhIiwib1NoYXJlTWV0YWRhdGEiLCJiYXNlIiwib1VJTW9kZWwiLCJnZXRQcm9wZXJ0eSIsImdldENvbnRyb2xsZXIiLCJvUGFnZVRpdGxlSW5mbyIsIl9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbiIsIm9EYXRhIiwic1RpdGxlIiwidGl0bGUiLCJzT2JqZWN0U3VidGl0bGUiLCJzdWJ0aXRsZSIsInRvU3RyaW5nIiwidGlsZSIsImVtYWlsIiwiamFtIiwidXJsIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7O0FBT0EsTUFBSUEsa0JBQUo7O0FBRUEsV0FBU0MsZ0NBQVQsQ0FBMENDLFVBQTFDLEVBQTJEQyxzQkFBM0QsRUFBd0Y7QUFDdkYsUUFBTUMsS0FBSyxHQUFHQyxNQUFNLENBQUNDLElBQVAsQ0FBWUosVUFBWixDQUFkO0FBRUEsUUFBTUssUUFBUSxHQUFHSCxLQUFLLENBQUNJLEdBQU4sQ0FBVSxVQUFVQyxJQUFWLEVBQXdCO0FBQ2xELFVBQU1DLE1BQU0sR0FBR1IsVUFBVSxDQUFDTyxJQUFELENBQXpCOztBQUNBLFVBQUlDLE1BQU0sS0FBS0MsU0FBZixFQUEwQjtBQUN6QixlQUFPLElBQUlDLE1BQUosQ0FBV0gsSUFBWCxFQUFpQkksY0FBYyxDQUFDQyxFQUFoQyxFQUFvQ0osTUFBcEMsQ0FBUDtBQUNBO0FBQ0QsS0FMZ0IsQ0FBakI7O0FBT0EsUUFBSVAsc0JBQUosRUFBNEI7QUFDM0IsVUFBTVksYUFBYSxHQUFHLElBQUlILE1BQUosQ0FBVztBQUNoQ0ksUUFBQUEsT0FBTyxFQUFFLENBQUMsSUFBSUosTUFBSixDQUFXLDhCQUFYLEVBQTJDQyxjQUFjLENBQUNDLEVBQTFELEVBQThELElBQTlELENBQUQsQ0FEdUI7QUFFaENHLFFBQUFBLEdBQUcsRUFBRTtBQUYyQixPQUFYLENBQXRCO0FBS0FWLE1BQUFBLFFBQVEsQ0FBQ1csSUFBVCxDQUFjSCxhQUFkO0FBQ0E7O0FBRUQsUUFBTUksZUFBZSxHQUFH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LENBQXdCQyxRQUF4QixFQUExQixHQUErRCxFQUF2Rjs7QUFDQSxjQUFJRixlQUFKLEVBQXFCO0FBQ3BCRixZQUFBQSxNQUFNLEdBQUdBLE1BQU0sR0FBRyxLQUFULEdBQWlCRSxlQUExQjtBQUNBOztBQUNEVixVQUFBQSxjQUFjLENBQUNhLElBQWYsR0FBc0I7QUFDckJKLFlBQUFBLEtBQUssRUFBRUosY0FBYyxDQUFDSSxLQUREO0FBRXJCRSxZQUFBQSxRQUFRLEVBQUVEO0FBRlcsV0FBdEI7QUFJQVYsVUFBQUEsY0FBYyxDQUFDYyxLQUFmLENBQXFCTCxLQUFyQixHQUE2QkQsTUFBN0I7QUFDQVIsVUFBQUEsY0FBYyxDQUFDUyxLQUFmLEdBQXVCRCxNQUF2QjtBQUNBUixVQUFBQSxjQUFjLENBQUNlLEdBQWYsQ0FBbUJDLEdBQW5CLEdBQXlCVCxLQUFLLENBQUMsQ0FBRCxDQUE5QjtBQUNBUCxVQUFBQSxjQUFjLENBQUNnQixHQUFmLEdBQXFCVCxLQUFLLENBQUMsQ0FBRCxDQUExQjtBQUNBUCxVQUFBQSxjQUFjLENBQUNjLEtBQWYsQ0FBcUJFLEdBQXJCLEdBQTJCVCxLQUFLLENBQUMsQ0FBRCxDQUFoQztBQUVBLGlCQUFPUCxjQUFQO0FBQ0EsU0F0QkssRUF1Qkw5QyxLQXZCSyxDQXVCQyxVQUFVaUMsS0FBVixFQUFzQjtBQUM1Qi9CLFVBQUFBLEdBQUcsQ0FBQytCLEtBQUosQ0FBVUEsS0FBVjtBQUNBLFNBekJLLENBQVA7QUEwQkEsT0E3Qk0sQ0FBUDtBQThCQTtBQW5DNkIsR0FBL0I7U0FzQ2VXLHNCIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBTaGFyZSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvU2hhcmVcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IFNlbWFudGljS2V5SGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1NlbWFudGljS2V5SGVscGVyXCI7XG5pbXBvcnQgT2JqZWN0UGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS90ZW1wbGF0ZXMvT2JqZWN0UGFnZS9PYmplY3RQYWdlQ29udHJvbGxlci5jb250cm9sbGVyXCI7XG5pbXBvcnQgSGFzaENoYW5nZXIgZnJvbSBcInNhcC91aS9jb3JlL3JvdXRpbmcvSGFzaENoYW5nZXJcIjtcbmltcG9ydCBGaWx0ZXIgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJcIjtcbmltcG9ydCBGaWx0ZXJPcGVyYXRvciBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlck9wZXJhdG9yXCI7XG5cbmxldCBiSXNTdGlja3lTdXBwb3J0ZWQ6IGJvb2xlYW47XG5cbmZ1bmN0aW9uIGNyZWF0ZUZpbHRlclRvRmV0Y2hBY3RpdmVDb250ZXh0KG1LZXlWYWx1ZXM6IGFueSwgYklzQWN0aXZlRW50aXR5RGVmaW5lZDogYW55KSB7XG5cdGNvbnN0IGFLZXlzID0gT2JqZWN0LmtleXMobUtleVZhbHVlcyk7XG5cblx0Y29uc3QgYUZpbHRlcnMgPSBhS2V5cy5tYXAoZnVuY3Rpb24gKHNLZXk6IHN0cmluZykge1xuXHRcdGNvbnN0IHNWYWx1ZSA9IG1LZXlWYWx1ZXNbc0tleV07XG5cdFx0aWYgKHNWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRyZXR1cm4gbmV3IEZpbHRlcihzS2V5LCBGaWx0ZXJPcGVyYXRvci5FUSwgc1ZhbHVlKTtcblx0XHR9XG5cdH0pO1xuXG5cdGlmIChiSXNBY3RpdmVFbnRpdHlEZWZpbmVkKSB7XG5cdFx0Y29uc3Qgb0FjdGl2ZUZpbHRlciA9IG5ldyBGaWx0ZXIoe1xuXHRcdFx0ZmlsdGVyczogW25ldyBGaWx0ZXIoXCJTaWJsaW5nRW50aXR5L0lzQWN0aXZlRW50aXR5XCIsIEZpbHRlck9wZXJhdG9yLkVRLCB0cnVlKV0sXG5cdFx0XHRhbmQ6IGZhbHNlXG5cdFx0fSk7XG5cblx0XHRhRmlsdGVycy5wdXNoKG9BY3RpdmVGaWx0ZXIpO1xuXHR9XG5cblx0Y29uc3Qgb0NvbWJpbmVkRmlsdGVyID0gbmV3IEZpbHRlcihhRmlsdGVycyBhcyBhbnksIHRydWUpO1xuXHRyZXR1cm4gb0NvbWJpbmVkRmlsdGVyO1xufVxuZnVuY3Rpb24gZ2V0QWN0aXZlQ29udGV4dFBhdGgob0NvbnRyb2xsZXI6IGFueSwgc1BhZ2VFbnRpdHlOYW1lOiBhbnksIG9GaWx0ZXI6IGFueSkge1xuXHRjb25zdCBvTGlzdEJpbmRpbmcgPSBvQ29udHJvbGxlclxuXHRcdC5nZXRWaWV3KClcblx0XHQuZ2V0QmluZGluZ0NvbnRleHQoKVxuXHRcdC5nZXRNb2RlbCgpXG5cdFx0LmJpbmRMaXN0KFwiL1wiICsgc1BhZ2VFbnRpdHlOYW1lLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgb0ZpbHRlciwgeyBcIiQkZ3JvdXBJZFwiOiBcIiRhdXRvLkhlcm9lc1wiIH0pO1xuXHRyZXR1cm4gb0xpc3RCaW5kaW5nLnJlcXVlc3RDb250ZXh0cygwLCAyKS50aGVuKGZ1bmN0aW9uIChvQ29udGV4dHM6IGFueSkge1xuXHRcdGlmIChvQ29udGV4dHMgJiYgb0NvbnRleHRzLmxlbmd0aCkge1xuXHRcdFx0cmV0dXJuIG9Db250ZXh0c1swXS5nZXRQYXRoKCk7XG5cdFx0fVxuXHR9KTtcbn1cbmZ1bmN0aW9uIGdldEFjdGl2ZUNvbnRleHRJbnN0YW5jZXMob0NvbnRleHQ6IGFueSwgb0NvbnRyb2xsZXI6IGFueSwgb0VudGl0eVNldDogYW55KSB7XG5cdGNvbnN0IGFBY3RpdmVDb250ZXh0cHJvbWlzZXM6IGFueVtdID0gW107XG5cdGNvbnN0IGFQYWdlczogYW55W10gPSBbXTtcblx0bGV0IHNNZXRhUGF0aCA9IG9Db250ZXh0LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCkuZ2V0TWV0YVBhdGgob0NvbnRleHQuZ2V0UGF0aCgpKTtcblx0aWYgKHNNZXRhUGF0aC5pbmRleE9mKFwiL1wiKSA9PT0gMCkge1xuXHRcdHNNZXRhUGF0aCA9IHNNZXRhUGF0aC5zdWJzdHJpbmcoMSk7XG5cdH1cblx0Y29uc3QgYU1ldGFQYXRoQXJyYXkgPSBzTWV0YVBhdGguc3BsaXQoXCIvXCIpO1xuXHRjb25zdCBzQ3VycmVudEhhc2hOb1BhcmFtcyA9IEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkuZ2V0SGFzaCgpLnNwbGl0KFwiP1wiKVswXTtcblx0Y29uc3QgYUN1cnJlbnRIYXNoQXJyYXkgPSBzQ3VycmVudEhhc2hOb1BhcmFtcy5zcGxpdChcIi9cIik7XG5cblx0Ly8gb1BhZ2VNYXAgLSBjcmVhdGluZyBhbiBvYmplY3QgdGhhdCBjb250YWlucyBtYXAgb2YgbWV0YXBhdGggbmFtZSBhbmQgaXQncyB0ZWNobmljYWwgZGV0YWlsc1xuXHQvLyB3aGljaCBpcyByZXF1aXJlZCB0byBjcmVhdGUgYSBmaWx0ZXIgdG8gZmV0Y2ggdGhlIHJlbGF2YW50L2NvcnJlY3QgYWN0aXZlIGNvbnRleHRcblx0Ly8gRXhhbXBsZToge1NhbGVzT3JkZXJNYW5hZ2U6e3RlY2huaWNhbElEOnRlY2huaWNhbElEVmFsdWV9LCBfSXRlbTp7dGVjaG5pY2FsSUQ6dGVjaG5pY2FsSURWYWx1ZX19IGV0Yy4sXG5cdGNvbnN0IG9QYWdlTWFwOiBhbnkgPSB7fTtcblx0Y29uc3QgYVBhZ2VIYXNoQXJyYXk6IGFueVtdID0gW107XG5cdGFDdXJyZW50SGFzaEFycmF5LmZvckVhY2goZnVuY3Rpb24gKHNQYWdlSGFzaDogYW55KSB7XG5cdFx0Y29uc3QgYUtleVZhbHVlcyA9IHNQYWdlSGFzaC5zdWJzdHJpbmcoc1BhZ2VIYXNoLmluZGV4T2YoXCIoXCIpICsgMSwgc1BhZ2VIYXNoLmxlbmd0aCAtIDEpLnNwbGl0KFwiLFwiKTtcblx0XHRjb25zdCBtS2V5VmFsdWVzOiBhbnkgPSB7fTtcblx0XHRjb25zdCBzUGFnZUhhc2hOYW1lID0gc1BhZ2VIYXNoLnNwbGl0KFwiKFwiKVswXTtcblx0XHRvUGFnZU1hcFtzUGFnZUhhc2hOYW1lXSA9IHt9O1xuXHRcdGFQYWdlSGFzaEFycmF5LnB1c2goc1BhZ2VIYXNoTmFtZSk7XG5cdFx0b1BhZ2VNYXBbc1BhZ2VIYXNoTmFtZV1bXCJiSXNBY3RpdmVFbnRpdHlEZWZpbmVkXCJdID0gdHJ1ZTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFLZXlWYWx1ZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IHNLZXlBc3NpZ25tZW50ID0gYUtleVZhbHVlc1tpXTtcblx0XHRcdGNvbnN0IGFQYXJ0cyA9IHNLZXlBc3NpZ25tZW50LnNwbGl0KFwiPVwiKTtcblx0XHRcdGxldCBzS2V5VmFsdWUgPSBhUGFydHNbMV07XG5cdFx0XHRsZXQgc0tleSA9IGFQYXJ0c1swXTtcblx0XHRcdC8vIEluIGNhc2UgaWYgb25seSBvbmUgdGVjaG5pY2FsIGtleSBpcyBkZWZpbmVkIHRoZW4gdGhlIHVybCBqdXN0IGNvbnRhaW5zIHRoZSB0ZWNobmljYWxJRFZhbHVlIGJ1dCBub3QgdGhlIHRlY2huaWNhbElEXG5cdFx0XHQvLyBFeGFtcGxlOiBTYWxlc09yZGVyTWFuYWdlKElEPTExMTExMTI5LWFhYWEtYmJiYi1jY2NjLWRkZGRlZWVlZmZmZixJc0FjdGl2ZUVudGl0eT1mYWxzZSkvX0l0ZW0oMTExMTExMjktYWFhYS1iYmJiLWNjY2MtZGRkZGVlZWVmZmZmKVxuXHRcdFx0Ly8gSW4gYWJvdmUgZXhhbXBsZSBTYWxlc09yZGVySXRlbSBoYXMgb25seSBvbmUgdGVjaG5pY2FsIGtleSBkZWZpbmVkLCBoZW5jZSB0ZWNobmljYWxJRCBpbmZvIGlzIG5vdCBwcmVzZW50IGluIHRoZSB1cmxcblx0XHRcdC8vIEhlbmNlIGluIHN1Y2ggY2FzZXMgd2UgZ2V0IHRlY2huaWNhbCBrZXkgYW5kIHVzZSB0aGVtIHRvIGZldGNoIGFjdGl2ZSBjb250ZXh0XG5cdFx0XHRpZiAoc0tleUFzc2lnbm1lbnQuaW5kZXhPZihcIj1cIikgPT09IC0xKSB7XG5cdFx0XHRcdGNvbnN0IG9NZXRhTW9kZWwgPSBvQ29udGV4dC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpO1xuXHRcdFx0XHRjb25zdCBhVGVjaG5pY2FsS2V5cyA9IG9NZXRhTW9kZWwuZ2V0T2JqZWN0KFwiL1wiICsgYVBhZ2VIYXNoQXJyYXkuam9pbihcIi9cIikgKyBcIi8kVHlwZS8kS2V5XCIpO1xuXHRcdFx0XHRzS2V5VmFsdWUgPSBhUGFydHNbMF07XG5cdFx0XHRcdHNLZXkgPSBhVGVjaG5pY2FsS2V5c1swXTtcblx0XHRcdFx0b1BhZ2VNYXBbc1BhZ2VIYXNoLnNwbGl0KFwiKFwiKVswXV1bXCJiSXNBY3RpdmVFbnRpdHlEZWZpbmVkXCJdID0gZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChzS2V5ICE9PSBcIklzQWN0aXZlRW50aXR5XCIpIHtcblx0XHRcdFx0aWYgKHNLZXlWYWx1ZS5pbmRleE9mKFwiJ1wiKSA9PT0gMCAmJiBzS2V5VmFsdWUubGFzdEluZGV4T2YoXCInXCIpID09PSBzS2V5VmFsdWUubGVuZ3RoIC0gMSkge1xuXHRcdFx0XHRcdC8vIFJlbW92ZSB0aGUgcXVvdGVzIGZyb20gdGhlIHZhbHVlIGFuZCBkZWNvZGUgc3BlY2lhbCBjaGFyc1xuXHRcdFx0XHRcdHNLZXlWYWx1ZSA9IGRlY29kZVVSSUNvbXBvbmVudChzS2V5VmFsdWUuc3Vic3RyaW5nKDEsIHNLZXlWYWx1ZS5sZW5ndGggLSAxKSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0bUtleVZhbHVlc1tzS2V5XSA9IHNLZXlWYWx1ZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0b1BhZ2VNYXBbc1BhZ2VIYXNoTmFtZV0ubUtleVZhbHVlcyA9IG1LZXlWYWx1ZXM7XG5cdH0pO1xuXG5cdGxldCBvUGFnZUVudGl0eVNldCA9IG9FbnRpdHlTZXQ7XG5cdGFNZXRhUGF0aEFycmF5LmZvckVhY2goZnVuY3Rpb24gKHNOYXZpZ2F0aW9uUGF0aDogYW55KSB7XG5cdFx0Y29uc3Qgb1BhZ2VJbmZvOiBhbnkgPSB7fTtcblx0XHRjb25zdCBzUGFnZUVudGl0eVNldE5hbWUgPSBvUGFnZUVudGl0eVNldC4kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZyAmJiBvUGFnZUVudGl0eVNldC4kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1tzTmF2aWdhdGlvblBhdGhdO1xuXHRcdGlmIChzUGFnZUVudGl0eVNldE5hbWUpIHtcblx0XHRcdG9QYWdlSW5mby5wYWdlRW50aXR5TmFtZSA9IG9QYWdlRW50aXR5U2V0LiROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nW3NOYXZpZ2F0aW9uUGF0aF07XG5cdFx0XHRvUGFnZUVudGl0eVNldCA9XG5cdFx0XHRcdG9Db250ZXh0XG5cdFx0XHRcdFx0LmdldE1vZGVsKClcblx0XHRcdFx0XHQuZ2V0TWV0YU1vZGVsKClcblx0XHRcdFx0XHQuZ2V0T2JqZWN0KFwiL1wiICsgc1BhZ2VFbnRpdHlTZXROYW1lKSB8fCBvRW50aXR5U2V0O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRvUGFnZUluZm8ucGFnZUVudGl0eU5hbWUgPSBzTmF2aWdhdGlvblBhdGg7XG5cdFx0fVxuXHRcdG9QYWdlSW5mby5tS2V5VmFsdWVzID0gb1BhZ2VNYXBbc05hdmlnYXRpb25QYXRoXS5tS2V5VmFsdWVzO1xuXHRcdG9QYWdlSW5mby5iSXNBY3RpdmVFbnRpdHlEZWZpbmVkID0gb1BhZ2VNYXBbc05hdmlnYXRpb25QYXRoXS5iSXNBY3RpdmVFbnRpdHlEZWZpbmVkO1xuXHRcdGFQYWdlcy5wdXNoKG9QYWdlSW5mbyk7XG5cdH0pO1xuXG5cdGFQYWdlcy5mb3JFYWNoKGZ1bmN0aW9uIChvUGFnZUluZm86IGFueSkge1xuXHRcdGNvbnN0IG9GaWx0ZXIgPSBjcmVhdGVGaWx0ZXJUb0ZldGNoQWN0aXZlQ29udGV4dChvUGFnZUluZm8ubUtleVZhbHVlcywgb1BhZ2VJbmZvLmJJc0FjdGl2ZUVudGl0eURlZmluZWQpO1xuXHRcdGFBY3RpdmVDb250ZXh0cHJvbWlzZXMucHVzaChnZXRBY3RpdmVDb250ZXh0UGF0aChvQ29udHJvbGxlciwgb1BhZ2VJbmZvLnBhZ2VFbnRpdHlOYW1lLCBvRmlsdGVyKSk7XG5cdH0pO1xuXG5cdHJldHVybiBhQWN0aXZlQ29udGV4dHByb21pc2VzO1xufVxuXG4vKipcbiAqIE1ldGhvZCB0byBmZXRjaCBhY3RpdmUgY29udGV4dCBwYXRoJ3MuXG4gKiBAcGFyYW0ge3NhcC51aS5tb2RlbC5vZGF0YS52NC5Db250ZXh0fSBvQ29udGV4dCBUaGUgUGFnZSBDb250ZXh0XG4gKiBAcGFyYW0gb0NvbnRyb2xsZXJcbiAqIEByZXR1cm5zIHtQcm9taXNlfSBQcm9taXNlIHdoaWNoIGlzIHJlc29sdmVkIG9uY2UgdGhlIGFjdGl2ZSBjb250ZXh0J3MgYXJlIGZldGNoZWRcbiAqL1xuZnVuY3Rpb24gZ2V0QWN0aXZlQ29udGV4dFBhdGhzKG9Db250ZXh0OiBhbnksIG9Db250cm9sbGVyOiBhbnkpIHtcblx0Y29uc3Qgc0N1cnJlbnRIYXNoTm9QYXJhbXMgPSBIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpLmdldEhhc2goKS5zcGxpdChcIj9cIilbMF07XG5cdGxldCBzUm9vdEVudGl0eU5hbWUgPSBzQ3VycmVudEhhc2hOb1BhcmFtcyAmJiBzQ3VycmVudEhhc2hOb1BhcmFtcy5zdWJzdHIoMCwgc0N1cnJlbnRIYXNoTm9QYXJhbXMuaW5kZXhPZihcIihcIikpO1xuXHRpZiAoc1Jvb3RFbnRpdHlOYW1lLmluZGV4T2YoXCIvXCIpID09PSAwKSB7XG5cdFx0c1Jvb3RFbnRpdHlOYW1lID0gc1Jvb3RFbnRpdHlOYW1lLnN1YnN0cmluZygxKTtcblx0fVxuXHRjb25zdCBvRW50aXR5U2V0ID0gb0NvbnRleHRcblx0XHQuZ2V0TW9kZWwoKVxuXHRcdC5nZXRNZXRhTW9kZWwoKVxuXHRcdC5nZXRPYmplY3QoXCIvXCIgKyBzUm9vdEVudGl0eU5hbWUpO1xuXHRjb25zdCBvUGFnZUNvbnRleHQgPSBvQ29udGV4dDtcblx0Y29uc3QgYUFjdGl2ZUNvbnRleHRwcm9taXNlcyA9IGdldEFjdGl2ZUNvbnRleHRJbnN0YW5jZXMob0NvbnRleHQsIG9Db250cm9sbGVyLCBvRW50aXR5U2V0KTtcblx0aWYgKGFBY3RpdmVDb250ZXh0cHJvbWlzZXMubGVuZ3RoID4gMCkge1xuXHRcdHJldHVybiBQcm9taXNlLmFsbChhQWN0aXZlQ29udGV4dHByb21pc2VzKVxuXHRcdFx0LnRoZW4oZnVuY3Rpb24gKGFEYXRhOiBhbnlbXSkge1xuXHRcdFx0XHRjb25zdCBhQWN0aXZlQ29udGV4dFBhdGhzID0gW107XG5cdFx0XHRcdGxldCBvUGFnZUVudGl0eVNldCA9IG9FbnRpdHlTZXQ7XG5cdFx0XHRcdGlmIChhRGF0YVswXS5pbmRleE9mKFwiL1wiKSA9PT0gMCkge1xuXHRcdFx0XHRcdGFBY3RpdmVDb250ZXh0UGF0aHMucHVzaChhRGF0YVswXS5zdWJzdHJpbmcoMSkpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGFBY3RpdmVDb250ZXh0UGF0aHMucHVzaChhRGF0YVswXSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gSW4gdGhlIGFjdGl2ZSBjb250ZXh0IHBhdGhzIGlkZW50aWZ5IGFuZCByZXBsYWNlIHRoZSBlbnRpdHlTZXQgTmFtZSB3aXRoIGNvcnJlc3BvbmRpbmcgbmF2aWdhdGlvbiBwcm9wZXJ0eSBuYW1lXG5cdFx0XHRcdC8vIFJlcXVpcmVkIHRvIGZvcm0gdGhlIHVybCBwb2ludGluZyB0byBhY3RpdmUgY29udGV4dFxuXHRcdFx0XHQvLyBFeGFtcGxlIDogU2FsZXNPcmRlckl0ZW0gLS0+IF9JdGVtLCBNYXRlcmlhbERldGFpbHMgLS0+IF9NYXRlcmlhbERldGFpbHMgZXRjLixcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDE7IGkgPCBhRGF0YS5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdGxldCBzQWN0aXZlQ29udGV4dFBhdGggPSBhRGF0YVtpXTtcblx0XHRcdFx0XHRsZXQgc05hdmlnYXRpb1Byb3BlcnR5ID0gXCJcIjtcblx0XHRcdFx0XHRsZXQgc0VudGl0eVNldE5hbWUgPSBzQWN0aXZlQ29udGV4dFBhdGggJiYgc0FjdGl2ZUNvbnRleHRQYXRoLnN1YnN0cigwLCBzQWN0aXZlQ29udGV4dFBhdGguaW5kZXhPZihcIihcIikpO1xuXHRcdFx0XHRcdGlmIChzRW50aXR5U2V0TmFtZS5pbmRleE9mKFwiL1wiKSA9PT0gMCkge1xuXHRcdFx0XHRcdFx0c0VudGl0eVNldE5hbWUgPSBzRW50aXR5U2V0TmFtZS5zdWJzdHJpbmcoMSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChzQWN0aXZlQ29udGV4dFBhdGguaW5kZXhPZihcIi9cIikgPT09IDApIHtcblx0XHRcdFx0XHRcdHNBY3RpdmVDb250ZXh0UGF0aCA9IHNBY3RpdmVDb250ZXh0UGF0aC5zdWJzdHJpbmcoMSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHNOYXZpZ2F0aW9Qcm9wZXJ0eSA9IE9iamVjdC5rZXlzKG9QYWdlRW50aXR5U2V0LiROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nKVtcblx0XHRcdFx0XHRcdE9iamVjdC52YWx1ZXMob1BhZ2VFbnRpdHlTZXQuJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcpLmluZGV4T2Yoc0VudGl0eVNldE5hbWUpXG5cdFx0XHRcdFx0XTtcblx0XHRcdFx0XHRpZiAoc05hdmlnYXRpb1Byb3BlcnR5KSB7XG5cdFx0XHRcdFx0XHRhQWN0aXZlQ29udGV4dFBhdGhzLnB1c2goc0FjdGl2ZUNvbnRleHRQYXRoLnJlcGxhY2Uoc0VudGl0eVNldE5hbWUsIHNOYXZpZ2F0aW9Qcm9wZXJ0eSkpO1xuXHRcdFx0XHRcdFx0b1BhZ2VFbnRpdHlTZXQgPVxuXHRcdFx0XHRcdFx0XHRvUGFnZUNvbnRleHRcblx0XHRcdFx0XHRcdFx0XHQuZ2V0TW9kZWwoKVxuXHRcdFx0XHRcdFx0XHRcdC5nZXRNZXRhTW9kZWwoKVxuXHRcdFx0XHRcdFx0XHRcdC5nZXRPYmplY3QoXCIvXCIgKyBzRW50aXR5U2V0TmFtZSkgfHwgb0VudGl0eVNldDtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0YUFjdGl2ZUNvbnRleHRQYXRocy5wdXNoKHNBY3RpdmVDb250ZXh0UGF0aCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBhQWN0aXZlQ29udGV4dFBhdGhzO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAob0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0TG9nLmluZm8oXCJGYWlsZWQgdG8gcmV0cmlldmUgb25lIG9yIG1vcmUgYWN0aXZlIGNvbnRleHQgcGF0aCdzXCIsIG9FcnJvcik7XG5cdFx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdH1cbn1cbmZ1bmN0aW9uIGZldGNoQWN0aXZlQ29udGV4dFBhdGhzKG9Db250ZXh0OiBhbnksIG9Db250cm9sbGVyOiBhbnkpIHtcblx0bGV0IG9Qcm9taXNlLCBhU2VtYW50aWNLZXlzO1xuXHRjb25zdCBzQ3VycmVudEhhc2hOb1BhcmFtcyA9IEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkuZ2V0SGFzaCgpLnNwbGl0KFwiP1wiKVswXTtcblx0aWYgKG9Db250ZXh0KSB7XG5cdFx0Y29uc3Qgb01vZGVsID0gb0NvbnRleHQuZ2V0TW9kZWwoKTtcblx0XHRjb25zdCBvTWV0YU1vZGVsID0gb01vZGVsLmdldE1ldGFNb2RlbCgpO1xuXHRcdGJJc1N0aWNreVN1cHBvcnRlZCA9IE1vZGVsSGVscGVyLmlzU3RpY2t5U2Vzc2lvblN1cHBvcnRlZChvTWV0YU1vZGVsKTtcblx0XHRsZXQgc1Jvb3RFbnRpdHlOYW1lID0gc0N1cnJlbnRIYXNoTm9QYXJhbXMgJiYgc0N1cnJlbnRIYXNoTm9QYXJhbXMuc3Vic3RyKDAsIHNDdXJyZW50SGFzaE5vUGFyYW1zLmluZGV4T2YoXCIoXCIpKTtcblx0XHRpZiAoc1Jvb3RFbnRpdHlOYW1lLmluZGV4T2YoXCIvXCIpID09PSAwKSB7XG5cdFx0XHRzUm9vdEVudGl0eU5hbWUgPSBzUm9vdEVudGl0eU5hbWUuc3Vic3RyaW5nKDEpO1xuXHRcdH1cblx0XHRhU2VtYW50aWNLZXlzID0gU2VtYW50aWNLZXlIZWxwZXIuZ2V0U2VtYW50aWNLZXlzKG9NZXRhTW9kZWwsIHNSb290RW50aXR5TmFtZSk7XG5cdH1cblx0Ly8gRmV0Y2ggYWN0aXZlIGNvbnRleHQgZGV0YWlscyBpbmNhc2Ugb2YgYmVsb3cgc2NlbmFyaW8ncyh3aGVyZSBwYWdlIGlzIG5vdCBzdGlja3kgc3VwcG9ydGVkKHdlIGRvIG5vdCBoYXZlIGRyYWZ0IGluc3RhbmNlKSlcblx0Ly8gMS4gSW4gY2FzZSBvZiBkcmFmdCBlbmFibGVkIE9iamVjdCBwYWdlIHdoZXJlIHNlbWFudGljIGtleSBiYXNlZCBVUkwgaXMgbm90IHBvc3NpYmxlKGxpa2Ugc2VtYW50aWMga2V5cyBhcmUgbm90IG1vZGVsZWQgaW4gdGhlIGVudGl0eSBzZXQpXG5cdC8vIDIuIEluIGNhc2Ugb2YgZHJhZnQgZW5hYmxlZCBTdWIgT2JqZWN0IFBhZ2VzICh3aGVyZSBzZW1hbnRpYyBib29rbWFya2luZyBpcyBub3Qgc3VwcG9ydGVkKVxuXHRjb25zdCBvVmlld0RhdGEgPSBvQ29udHJvbGxlci5nZXRWaWV3KCkuZ2V0Vmlld0RhdGEoKTtcblx0aWYgKG9Db250ZXh0ICYmICFiSXNTdGlja3lTdXBwb3J0ZWQgJiYgKChvVmlld0RhdGEudmlld0xldmVsID09PSAxICYmICFhU2VtYW50aWNLZXlzKSB8fCBvVmlld0RhdGEudmlld0xldmVsID49IDIpKSB7XG5cdFx0b1Byb21pc2UgPSBnZXRBY3RpdmVDb250ZXh0UGF0aHMob0NvbnRleHQsIG9Db250cm9sbGVyKTtcblx0XHRyZXR1cm4gb1Byb21pc2U7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHR9XG59XG5cbi8vIC8qKlxuLy8gICogR2V0IHNoYXJlIFVSTC5cbi8vICAqIEBwYXJhbSBiSXNFZGl0YWJsZVxuLy8gICogQHBhcmFtIGJJc1N0aWNreVN1cHBvcnRlZFxuLy8gICogQHBhcmFtIGFBY3RpdmVDb250ZXh0UGF0aHNcbi8vICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBzaGFyZSBVUkxcbi8vICAqIEBwcm90ZWN0ZWRcbi8vICAqIEBzdGF0aWNcbi8vICAqL1xuZnVuY3Rpb24gZ2V0U2hhcmVVcmwoYklzRWRpdGFibGU6IGFueSwgYklzU3RpY2t5U3VwcG9ydGVkOiBhbnksIGFBY3RpdmVDb250ZXh0UGF0aHM6IGFueSkge1xuXHRsZXQgc1NoYXJlVXJsO1xuXHRjb25zdCBzSGFzaCA9IEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkuZ2V0SGFzaCgpO1xuXHRjb25zdCBzQmFzZVBhdGggPSAoSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKSBhcyBhbnkpLmhyZWZGb3JBcHBTcGVjaWZpY0hhc2hcblx0XHQ/IChIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpIGFzIGFueSkuaHJlZkZvckFwcFNwZWNpZmljSGFzaChcIlwiKVxuXHRcdDogXCJcIjtcblx0aWYgKGJJc0VkaXRhYmxlICYmICFiSXNTdGlja3lTdXBwb3J0ZWQgJiYgYUFjdGl2ZUNvbnRleHRQYXRocykge1xuXHRcdHNTaGFyZVVybCA9IHNCYXNlUGF0aCArIGFBY3RpdmVDb250ZXh0UGF0aHMuam9pbihcIi9cIik7XG5cdH0gZWxzZSB7XG5cdFx0c1NoYXJlVXJsID0gc0hhc2ggPyBzQmFzZVBhdGggKyBzSGFzaCA6IHdpbmRvdy5sb2NhdGlvbi5oYXNoO1xuXHR9XG5cdHJldHVybiBzU2hhcmVVcmw7XG59XG5mdW5jdGlvbiBnZXRTaGFyZUVtYWlsVXJsKCkge1xuXHRjb25zdCBvVVNoZWxsQ29udGFpbmVyID0gc2FwLnVzaGVsbCAmJiBzYXAudXNoZWxsLkNvbnRhaW5lcjtcblx0aWYgKG9VU2hlbGxDb250YWluZXIpIHtcblx0XHRyZXR1cm4gb1VTaGVsbENvbnRhaW5lclxuXHRcdFx0LmdldEZMUFVybEFzeW5jKHRydWUpXG5cdFx0XHQudGhlbihmdW5jdGlvbiAoc0ZMUFVybDogYW55KSB7XG5cdFx0XHRcdHJldHVybiBzRkxQVXJsO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAoc0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0TG9nLmVycm9yKFwiQ291bGQgbm90IHJldHJpZXZlIGNGTFAgVVJMIGZvciB0aGUgc2hhcmluZyBkaWFsb2cgKGRpYWxvZyB3aWxsIG5vdCBiZSBvcGVuZWQpXCIsIHNFcnJvcik7XG5cdFx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGRvY3VtZW50LlVSTCk7XG5cdH1cbn1cblxuZnVuY3Rpb24gZ2V0SmFtVXJsKGJJc0VkaXRNb2RlOiBib29sZWFuLCBiSXNTdGlja3lTdXBwb3J0ZWQ6IGFueSwgYUFjdGl2ZUNvbnRleHRQYXRoczogYW55KSB7XG5cdGxldCBzSmFtVXJsOiBzdHJpbmc7XG5cdGNvbnN0IHNIYXNoID0gSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKS5nZXRIYXNoKCk7XG5cdGNvbnN0IHNCYXNlUGF0aCA9IChIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpIGFzIGFueSkuaHJlZkZvckFwcFNwZWNpZmljSGFzaFxuXHRcdD8gKEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkgYXMgYW55KS5ocmVmRm9yQXBwU3BlY2lmaWNIYXNoKFwiXCIpXG5cdFx0OiBcIlwiO1xuXHRpZiAoYklzRWRpdE1vZGUgJiYgIWJJc1N0aWNreVN1cHBvcnRlZCAmJiBhQWN0aXZlQ29udGV4dFBhdGhzKSB7XG5cdFx0c0phbVVybCA9IHNCYXNlUGF0aCArIGFBY3RpdmVDb250ZXh0UGF0aHMuam9pbihcIi9cIik7XG5cdH0gZWxzZSB7XG5cdFx0c0phbVVybCA9IHNIYXNoID8gc0Jhc2VQYXRoICsgc0hhc2ggOiB3aW5kb3cubG9jYXRpb24uaGFzaDtcblx0fVxuXHQvLyBpbiBjYXNlIHdlIGFyZSBpbiBjRkxQIHNjZW5hcmlvLCB0aGUgYXBwbGljYXRpb24gaXMgcnVubmluZ1xuXHQvLyBpbnNpZGUgYW4gaWZyYW1lLCBhbmQgdGhlcmUgZm9yIHdlIG5lZWQgdG8gZ2V0IHRoZSBjRkxQIFVSTFxuXHQvLyBhbmQgbm90ICdkb2N1bWVudC5VUkwnIHRoYXQgcmVwcmVzZW50cyB0aGUgaWZyYW1lIFVSTFxuXHRpZiAoc2FwLnVzaGVsbCAmJiBzYXAudXNoZWxsLkNvbnRhaW5lciAmJiBzYXAudXNoZWxsLkNvbnRhaW5lci5ydW5uaW5nSW5JZnJhbWUgJiYgc2FwLnVzaGVsbC5Db250YWluZXIucnVubmluZ0luSWZyYW1lKCkpIHtcblx0XHRzYXAudXNoZWxsLkNvbnRhaW5lci5nZXRGTFBVcmwodHJ1ZSlcblx0XHRcdC50aGVuKGZ1bmN0aW9uIChzVXJsOiBhbnkpIHtcblx0XHRcdFx0cmV0dXJuIHNVcmwuc3Vic3RyKDAsIHNVcmwuaW5kZXhPZihcIiNcIikpICsgc0phbVVybDtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24gKHNFcnJvcjogYW55KSB7XG5cdFx0XHRcdExvZy5lcnJvcihcIkNvdWxkIG5vdCByZXRyaWV2ZSBjRkxQIFVSTCBmb3IgdGhlIHNoYXJpbmcgZGlhbG9nIChkaWFsb2cgd2lsbCBub3QgYmUgb3BlbmVkKVwiLCBzRXJyb3IpO1xuXHRcdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lICsgc0phbVVybCk7XG5cdH1cbn1cblxuY29uc3QgU2hhcmVFeHRlbnNpb25PdmVycmlkZSA9IHtcblx0YWRhcHRTaGFyZU1ldGFkYXRhOiBmdW5jdGlvbiAodGhpczogU2hhcmUsIG9TaGFyZU1ldGFkYXRhOiBhbnkpIHtcblx0XHRjb25zdCBvQ29udGV4dCA9IHRoaXMuYmFzZS5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoKSxcblx0XHRcdG9VSU1vZGVsID0gdGhpcy5iYXNlLmdldFZpZXcoKS5nZXRNb2RlbChcInVpXCIpLFxuXHRcdFx0YklzRWRpdGFibGUgPSBvVUlNb2RlbC5nZXRQcm9wZXJ0eShcIi9pc0VkaXRhYmxlXCIpO1xuXHRcdHJldHVybiBmZXRjaEFjdGl2ZUNvbnRleHRQYXRocyhvQ29udGV4dCwgdGhpcy5iYXNlLmdldFZpZXcoKS5nZXRDb250cm9sbGVyKCkpLnRoZW4oKGFBY3RpdmVDb250ZXh0UGF0aHMpID0+IHtcblx0XHRcdGNvbnN0IG9QYWdlVGl0bGVJbmZvID0gKHRoaXMuYmFzZS5nZXRWaWV3KCkuZ2V0Q29udHJvbGxlcigpIGFzIE9iamVjdFBhZ2VDb250cm9sbGVyKS5fZ2V0UGFnZVRpdGxlSW5mb3JtYXRpb24oKTtcblxuXHRcdFx0cmV0dXJuIFByb21pc2UuYWxsKFtcblx0XHRcdFx0Z2V0SmFtVXJsKGJJc0VkaXRhYmxlLCBiSXNTdGlja3lTdXBwb3J0ZWQsIGFBY3RpdmVDb250ZXh0UGF0aHMpLFxuXHRcdFx0XHRnZXRTaGFyZVVybChiSXNFZGl0YWJsZSwgYklzU3RpY2t5U3VwcG9ydGVkLCBhQWN0aXZlQ29udGV4dFBhdGhzKSxcblx0XHRcdFx0Z2V0U2hhcmVFbWFpbFVybCgpXG5cdFx0XHRdKVxuXHRcdFx0XHQudGhlbihmdW5jdGlvbiAob0RhdGEpIHtcblx0XHRcdFx0XHRsZXQgc1RpdGxlID0gb1BhZ2VUaXRsZUluZm8udGl0bGU7XG5cdFx0XHRcdFx0Y29uc3Qgc09iamVjdFN1YnRpdGxlID0gb1BhZ2VUaXRsZUluZm8uc3VidGl0bGUgPyBvUGFnZVRpdGxlSW5mby5zdWJ0aXRsZS50b1N0cmluZygpIDogXCJcIjtcblx0XHRcdFx0XHRpZiAoc09iamVjdFN1YnRpdGxlKSB7XG5cdFx0XHRcdFx0XHRzVGl0bGUgPSBzVGl0bGUgKyBcIiAtIFwiICsgc09iamVjdFN1YnRpdGxlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRvU2hhcmVNZXRhZGF0YS50aWxlID0ge1xuXHRcdFx0XHRcdFx0dGl0bGU6IG9QYWdlVGl0bGVJbmZvLnRpdGxlLFxuXHRcdFx0XHRcdFx0c3VidGl0bGU6IHNPYmplY3RTdWJ0aXRsZVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0b1NoYXJlTWV0YWRhdGEuZW1haWwudGl0bGUgPSBzVGl0bGU7XG5cdFx0XHRcdFx0b1NoYXJlTWV0YWRhdGEudGl0bGUgPSBzVGl0bGU7XG5cdFx0XHRcdFx0b1NoYXJlTWV0YWRhdGEuamFtLnVybCA9IG9EYXRhWzBdO1xuXHRcdFx0XHRcdG9TaGFyZU1ldGFkYXRhLnVybCA9IG9EYXRhWzFdO1xuXHRcdFx0XHRcdG9TaGFyZU1ldGFkYXRhLmVtYWlsLnVybCA9IG9EYXRhWzJdO1xuXG5cdFx0XHRcdFx0cmV0dXJuIG9TaGFyZU1ldGFkYXRhO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKGVycm9yOiBhbnkpIHtcblx0XHRcdFx0XHRMb2cuZXJyb3IoZXJyb3IpO1xuXHRcdFx0XHR9KTtcblx0XHR9KTtcblx0fVxufTtcblxuZXhwb3J0IGRlZmF1bHQgU2hhcmVFeHRlbnNpb25PdmVycmlkZTtcbiJdfQ==
|
|
313
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNoYXJlLnRzIl0sIm5hbWVzIjpbImJHbG9iYWxJc1N0aWNreVN1cHBvcnRlZCIsImNyZWF0ZUZpbHRlclRvRmV0Y2hBY3RpdmVDb250ZXh0IiwibUtleVZhbHVlcyIsImJJc0FjdGl2ZUVudGl0eURlZmluZWQiLCJhS2V5cyIsIk9iamVjdCIsImtleXMiLCJhRmlsdGVycyIsIm1hcCIsInNLZXkiLCJzVmFsdWUiLCJ1bmRlZmluZWQiLCJGaWx0ZXIiLCJGaWx0ZXJPcGVyYXRvciIsIkVRIiwib0FjdGl2ZUZpbHRlciIsImZpbHRlcnMiLCJhbmQiLCJwdXNoIiwiZ2V0QWN0aXZlQ29udGV4dFBhdGgiLCJvQ29udHJvbGxlciIsInNQYWdlRW50aXR5TmFtZSIsIm9GaWx0ZXIiLCJvTGlzdEJpbmRpbmciLCJnZXRWaWV3IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJnZXRNb2RlbCIsImJpbmRMaXN0IiwicmVxdWVzdENvbnRleHRzIiwidGhlbiIsIm9Db250ZXh0cyIsImxlbmd0aCIsImdldFBhdGgiLCJnZXRBY3RpdmVDb250ZXh0SW5zdGFuY2VzIiwib0NvbnRleHQiLCJvRW50aXR5U2V0IiwiYUFjdGl2ZUNvbnRleHRwcm9taXNlcyIsImFQYWdlcyIsInNNZXRhUGF0aCIsImdldE1ldGFNb2RlbCIsImdldE1ldGFQYXRoIiwiaW5kZXhPZiIsInN1YnN0cmluZyIsImFNZXRhUGF0aEFycmF5Iiwic3BsaXQiLCJzQ3VycmVudEhhc2hOb1BhcmFtcyIsIkhhc2hDaGFuZ2VyIiwiZ2V0SW5zdGFuY2UiLCJnZXRIYXNoIiwiYUN1cnJlbnRIYXNoQXJyYXkiLCJvUGFnZU1hcCIsImFQYWdlSGFzaEFycmF5IiwiZm9yRWFjaCIsInNQYWdlSGFzaCIsImFLZXlWYWx1ZXMiLCJzUGFnZUhhc2hOYW1lIiwiaSIsInNLZXlBc3NpZ25tZW50IiwiYVBhcnRzIiwic0tleVZhbHVlIiwib01ldGFNb2RlbCIsImFUZWNobmljYWxLZXlzIiwiZ2V0T2JqZWN0Iiwiam9pbiIsImxhc3RJbmRleE9mIiwiZGVjb2RlVVJJQ29tcG9uZW50Iiwib1BhZ2VFbnRpdHlTZXQiLCJzTmF2aWdhdGlvblBhdGgiLCJvUGFnZUluZm8iLCJzUGFnZUVudGl0eVNldE5hbWUiLCIkTmF2aWdhdGlvblByb3BlcnR5QmluZGluZyIsInBhZ2VFbnRpdHlOYW1lIiwiZ2V0QWN0aXZlQ29udGV4dFBhdGhzIiwic1Jvb3RFbnRpdHlOYW1lIiwic3Vic3RyIiwib1BhZ2VDb250ZXh0IiwiUHJvbWlzZSIsImFsbCIsImFEYXRhIiwiYUFjdGl2ZUNvbnRleHRQYXRocyIsInNBY3RpdmVDb250ZXh0UGF0aCIsInNOYXZpZ2F0aW9Qcm9wZXJ0eSIsInNFbnRpdHlTZXROYW1lIiwidmFsdWVzIiwicmVwbGFjZSIsImNhdGNoIiwib0Vycm9yIiwiTG9nIiwiaW5mbyIsInJlc29sdmUiLCJmZXRjaEFjdGl2ZUNvbnRleHRQYXRocyIsIm9Qcm9taXNlIiwiYVNlbWFudGljS2V5cyIsIm9Nb2RlbCIsIk1vZGVsSGVscGVyIiwiaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwiU2VtYW50aWNLZXlIZWxwZXIiLCJnZXRTZW1hbnRpY0tleXMiLCJvVmlld0RhdGEiLCJnZXRWaWV3RGF0YSIsInZpZXdMZXZlbCIsImdldFNoYXJlVXJsIiwiYklzRWRpdGFibGUiLCJiSXNTdGlja3lTdXBwb3J0ZWQiLCJzU2hhcmVVcmwiLCJzSGFzaCIsInNCYXNlUGF0aCIsImhyZWZGb3JBcHBTcGVjaWZpY0hhc2giLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhhc2giLCJnZXRTaGFyZUVtYWlsVXJsIiwib1VTaGVsbENvbnRhaW5lciIsInNhcCIsInVzaGVsbCIsIkNvbnRhaW5lciIsImdldEZMUFVybEFzeW5jIiwic0ZMUFVybCIsInNFcnJvciIsImVycm9yIiwiZG9jdW1lbnQiLCJVUkwiLCJnZXRKYW1VcmwiLCJiSXNFZGl0TW9kZSIsInNKYW1VcmwiLCJydW5uaW5nSW5JZnJhbWUiLCJnZXRGTFBVcmwiLCJzVXJsIiwib3JpZ2luIiwicGF0aG5hbWUiLCJTaGFyZUV4dGVuc2lvbk92ZXJyaWRlIiwiYWRhcHRTaGFyZU1ldGFkYXRhIiwib1NoYXJlTWV0YWRhdGEiLCJiYXNlIiwib1VJTW9kZWwiLCJnZXRQcm9wZXJ0eSIsImdldENvbnRyb2xsZXIiLCJvUGFnZVRpdGxlSW5mbyIsIl9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbiIsIm9EYXRhIiwic1RpdGxlIiwidGl0bGUiLCJzT2JqZWN0U3VidGl0bGUiLCJzdWJ0aXRsZSIsInRvU3RyaW5nIiwidGlsZSIsImVtYWlsIiwiamFtIiwidXJsIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7O0FBT0EsTUFBSUEsd0JBQUo7O0FBRUEsV0FBU0MsZ0NBQVQsQ0FBMENDLFVBQTFDLEVBQTJEQyxzQkFBM0QsRUFBd0Y7QUFDdkYsUUFBTUMsS0FBSyxHQUFHQyxNQUFNLENBQUNDLElBQVAsQ0FBWUosVUFBWixDQUFkO0FBRUEsUUFBTUssUUFBUSxHQUFHSCxLQUFLLENBQUNJLEdBQU4sQ0FBVSxVQUFVQyxJQUFWLEVBQXdCO0FBQ2xELFVBQU1DLE1BQU0sR0FBR1IsVUFBVSxDQUFDTyxJQUFELENBQXpCOztBQUNBLFVBQUlDLE1BQU0sS0FBS0MsU0FBZixFQUEwQjtBQUN6QixlQUFPLElBQUlDLE1BQUosQ0FBV0gsSUFBWCxFQUFpQkksY0FBYyxDQUFDQyxFQUFoQyxFQUFvQ0osTUFBcEMsQ0FBUDtBQUNBO0FBQ0QsS0FMZ0IsQ0FBakI7O0FBT0EsUUFBSVAsc0JBQUosRUFBNEI7QUFDM0IsVUFBTVksYUFBYSxHQUFHLElBQUlILE1BQUosQ0FBVztBQUNoQ0ksUUFBQUEsT0FBTyxFQUFFLENBQUMsSUFBSUosTUFBSixDQUFXLDhCQUFYLEVBQTJDQyxjQUFjLENBQUNDLEVBQTFELEVBQThELElBQTlELENBQUQsQ0FEdUI7QUFFaENHLFFBQUFBLEdBQUcsRUFBRTtBQUYyQixPQUFYLENBQXRCO0FBS0FWLE1BQUFBLFFBQVEsQ0FBQ1csSUFBVCxDQUFjSCxhQUFkO0FBQ0E7O0FBRUQsV0FBTyxJ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LGVBQUosRUFBcUI7QUFDcEJGLFlBQUFBLE1BQU0sYUFBTUEsTUFBTixnQkFBa0JFLGVBQWxCLENBQU47QUFDQTs7QUFDRFYsVUFBQUEsY0FBYyxDQUFDYSxJQUFmLEdBQXNCO0FBQ3JCSixZQUFBQSxLQUFLLEVBQUVKLGNBQWMsQ0FBQ0ksS0FERDtBQUVyQkUsWUFBQUEsUUFBUSxFQUFFRDtBQUZXLFdBQXRCO0FBSUFWLFVBQUFBLGNBQWMsQ0FBQ2MsS0FBZixDQUFxQkwsS0FBckIsR0FBNkJELE1BQTdCO0FBQ0FSLFVBQUFBLGNBQWMsQ0FBQ1MsS0FBZixHQUF1QkQsTUFBdkI7QUFDQVIsVUFBQUEsY0FBYyxDQUFDZSxHQUFmLENBQW1CQyxHQUFuQixHQUF5QlQsS0FBSyxDQUFDLENBQUQsQ0FBOUI7QUFDQVAsVUFBQUEsY0FBYyxDQUFDZ0IsR0FBZixHQUFxQlQsS0FBSyxDQUFDLENBQUQsQ0FBMUI7QUFDQVAsVUFBQUEsY0FBYyxDQUFDYyxLQUFmLENBQXFCRSxHQUFyQixHQUEyQlQsS0FBSyxDQUFDLENBQUQsQ0FBaEM7QUFFQSxpQkFBT1AsY0FBUDtBQUNBLFNBdEJLLEVBdUJML0MsS0F2QkssQ0F1QkMsVUFBVWtDLEtBQVYsRUFBc0I7QUFDNUJoQyxVQUFBQSxHQUFHLENBQUNnQyxLQUFKLENBQVVBLEtBQVY7QUFDQSxTQXpCSyxDQUFQO0FBMEJBLE9BN0JNLENBQVA7QUE4QkE7QUFuQzZCLEdBQS9CO1NBc0NlVyxzQiIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSBTaGFyZSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvU2hhcmVcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IFNlbWFudGljS2V5SGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1NlbWFudGljS2V5SGVscGVyXCI7XG5pbXBvcnQgdHlwZSBPYmplY3RQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL3RlbXBsYXRlcy9PYmplY3RQYWdlL09iamVjdFBhZ2VDb250cm9sbGVyLmNvbnRyb2xsZXJcIjtcbmltcG9ydCBIYXNoQ2hhbmdlciBmcm9tIFwic2FwL3VpL2NvcmUvcm91dGluZy9IYXNoQ2hhbmdlclwiO1xuaW1wb3J0IEZpbHRlciBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlclwiO1xuaW1wb3J0IEZpbHRlck9wZXJhdG9yIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyT3BlcmF0b3JcIjtcblxubGV0IGJHbG9iYWxJc1N0aWNreVN1cHBvcnRlZDogYm9vbGVhbjtcblxuZnVuY3Rpb24gY3JlYXRlRmlsdGVyVG9GZXRjaEFjdGl2ZUNvbnRleHQobUtleVZhbHVlczogYW55LCBiSXNBY3RpdmVFbnRpdHlEZWZpbmVkOiBhbnkpIHtcblx0Y29uc3QgYUtleXMgPSBPYmplY3Qua2V5cyhtS2V5VmFsdWVzKTtcblxuXHRjb25zdCBhRmlsdGVycyA9IGFLZXlzLm1hcChmdW5jdGlvbiAoc0tleTogc3RyaW5nKSB7XG5cdFx0Y29uc3Qgc1ZhbHVlID0gbUtleVZhbHVlc1tzS2V5XTtcblx0XHRpZiAoc1ZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHJldHVybiBuZXcgRmlsdGVyKHNLZXksIEZpbHRlck9wZXJhdG9yLkVRLCBzVmFsdWUpO1xuXHRcdH1cblx0fSk7XG5cblx0aWYgKGJJc0FjdGl2ZUVudGl0eURlZmluZWQpIHtcblx0XHRjb25zdCBvQWN0aXZlRmlsdGVyID0gbmV3IEZpbHRlcih7XG5cdFx0XHRmaWx0ZXJzOiBbbmV3IEZpbHRlcihcIlNpYmxpbmdFbnRpdHkvSXNBY3RpdmVFbnRpdHlcIiwgRmlsdGVyT3BlcmF0b3IuRVEsIHRydWUpXSxcblx0XHRcdGFuZDogZmFsc2Vcblx0XHR9KTtcblxuXHRcdGFGaWx0ZXJzLnB1c2gob0FjdGl2ZUZpbHRlcik7XG5cdH1cblxuXHRyZXR1cm4gbmV3IEZpbHRlcihhRmlsdGVycyBhcyBhbnksIHRydWUpO1xufVxuZnVuY3Rpb24gZ2V0QWN0aXZlQ29udGV4dFBhdGgob0NvbnRyb2xsZXI6IGFueSwgc1BhZ2VFbnRpdHlOYW1lOiBhbnksIG9GaWx0ZXI6IGFueSkge1xuXHRjb25zdCBvTGlzdEJpbmRpbmcgPSBvQ29udHJvbGxlclxuXHRcdC5nZXRWaWV3KClcblx0XHQuZ2V0QmluZGluZ0NvbnRleHQoKVxuXHRcdC5nZXRNb2RlbCgpXG5cdFx0LmJpbmRMaXN0KGAvJHtzUGFnZUVudGl0eU5hbWV9YCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIG9GaWx0ZXIsIHsgXCIkJGdyb3VwSWRcIjogXCIkYXV0by5IZXJvZXNcIiB9KTtcblx0cmV0dXJuIG9MaXN0QmluZGluZy5yZXF1ZXN0Q29udGV4dHMoMCwgMikudGhlbihmdW5jdGlvbiAob0NvbnRleHRzOiBhbnkpIHtcblx0XHRpZiAob0NvbnRleHRzICYmIG9Db250ZXh0cy5sZW5ndGgpIHtcblx0XHRcdHJldHVybiBvQ29udGV4dHNbMF0uZ2V0UGF0aCgpO1xuXHRcdH1cblx0fSk7XG59XG5mdW5jdGlvbiBnZXRBY3RpdmVDb250ZXh0SW5zdGFuY2VzKG9Db250ZXh0OiBhbnksIG9Db250cm9sbGVyOiBhbnksIG9FbnRpdHlTZXQ6IGFueSkge1xuXHRjb25zdCBhQWN0aXZlQ29udGV4dHByb21pc2VzOiBhbnlbXSA9IFtdO1xuXHRjb25zdCBhUGFnZXM6IGFueVtdID0gW107XG5cdGxldCBzTWV0YVBhdGggPSBvQ29udGV4dC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpLmdldE1ldGFQYXRoKG9Db250ZXh0LmdldFBhdGgoKSk7XG5cdGlmIChzTWV0YVBhdGguaW5kZXhPZihcIi9cIikgPT09IDApIHtcblx0XHRzTWV0YVBhdGggPSBzTWV0YVBhdGguc3Vic3RyaW5nKDEpO1xuXHR9XG5cdGNvbnN0IGFNZXRhUGF0aEFycmF5ID0gc01ldGFQYXRoLnNwbGl0KFwiL1wiKTtcblx0Y29uc3Qgc0N1cnJlbnRIYXNoTm9QYXJhbXMgPSBIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpLmdldEhhc2goKS5zcGxpdChcIj9cIilbMF07XG5cdGNvbnN0IGFDdXJyZW50SGFzaEFycmF5ID0gc0N1cnJlbnRIYXNoTm9QYXJhbXMuc3BsaXQoXCIvXCIpO1xuXG5cdC8vIG9QYWdlTWFwIC0gY3JlYXRpbmcgYW4gb2JqZWN0IHRoYXQgY29udGFpbnMgbWFwIG9mIG1ldGFwYXRoIG5hbWUgYW5kIGl0J3MgdGVjaG5pY2FsIGRldGFpbHNcblx0Ly8gd2hpY2ggaXMgcmVxdWlyZWQgdG8gY3JlYXRlIGEgZmlsdGVyIHRvIGZldGNoIHRoZSByZWxhdmFudC9jb3JyZWN0IGFjdGl2ZSBjb250ZXh0XG5cdC8vIEV4YW1wbGU6IHtTYWxlc09yZGVyTWFuYWdlOnt0ZWNobmljYWxJRDp0ZWNobmljYWxJRFZhbHVlfSwgX0l0ZW06e3RlY2huaWNhbElEOnRlY2huaWNhbElEVmFsdWV9fSBldGMuLFxuXHRjb25zdCBvUGFnZU1hcDogYW55ID0ge307XG5cdGNvbnN0IGFQYWdlSGFzaEFycmF5OiBhbnlbXSA9IFtdO1xuXHRhQ3VycmVudEhhc2hBcnJheS5mb3JFYWNoKGZ1bmN0aW9uIChzUGFnZUhhc2g6IGFueSkge1xuXHRcdGNvbnN0IGFLZXlWYWx1ZXMgPSBzUGFnZUhhc2guc3Vic3RyaW5nKHNQYWdlSGFzaC5pbmRleE9mKFwiKFwiKSArIDEsIHNQYWdlSGFzaC5sZW5ndGggLSAxKS5zcGxpdChcIixcIik7XG5cdFx0Y29uc3QgbUtleVZhbHVlczogYW55ID0ge307XG5cdFx0Y29uc3Qgc1BhZ2VIYXNoTmFtZSA9IHNQYWdlSGFzaC5zcGxpdChcIihcIilbMF07XG5cdFx0b1BhZ2VNYXBbc1BhZ2VIYXNoTmFtZV0gPSB7fTtcblx0XHRhUGFnZUhhc2hBcnJheS5wdXNoKHNQYWdlSGFzaE5hbWUpO1xuXHRcdG9QYWdlTWFwW3NQYWdlSGFzaE5hbWVdW1wiYklzQWN0aXZlRW50aXR5RGVmaW5lZFwiXSA9IHRydWU7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhS2V5VmFsdWVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRjb25zdCBzS2V5QXNzaWdubWVudCA9IGFLZXlWYWx1ZXNbaV07XG5cdFx0XHRjb25zdCBhUGFydHMgPSBzS2V5QXNzaWdubWVudC5zcGxpdChcIj1cIik7XG5cdFx0XHRsZXQgc0tleVZhbHVlID0gYVBhcnRzWzFdO1xuXHRcdFx0bGV0IHNLZXkgPSBhUGFydHNbMF07XG5cdFx0XHQvLyBJbiBjYXNlIGlmIG9ubHkgb25lIHRlY2huaWNhbCBrZXkgaXMgZGVmaW5lZCB0aGVuIHRoZSB1cmwganVzdCBjb250YWlucyB0aGUgdGVjaG5pY2FsSURWYWx1ZSBidXQgbm90IHRoZSB0ZWNobmljYWxJRFxuXHRcdFx0Ly8gRXhhbXBsZTogU2FsZXNPcmRlck1hbmFnZShJRD0xMTExMTEyOS1hYWFhLWJiYmItY2NjYy1kZGRkZWVlZWZmZmYsSXNBY3RpdmVFbnRpdHk9ZmFsc2UpL19JdGVtKDExMTExMTI5LWFhYWEtYmJiYi1jY2NjLWRkZGRlZWVlZmZmZilcblx0XHRcdC8vIEluIGFib3ZlIGV4YW1wbGUgU2FsZXNPcmRlckl0ZW0gaGFzIG9ubHkgb25lIHRlY2huaWNhbCBrZXkgZGVmaW5lZCwgaGVuY2UgdGVjaG5pY2FsSUQgaW5mbyBpcyBub3QgcHJlc2VudCBpbiB0aGUgdXJsXG5cdFx0XHQvLyBIZW5jZSBpbiBzdWNoIGNhc2VzIHdlIGdldCB0ZWNobmljYWwga2V5IGFuZCB1c2UgdGhlbSB0byBmZXRjaCBhY3RpdmUgY29udGV4dFxuXHRcdFx0aWYgKHNLZXlBc3NpZ25tZW50LmluZGV4T2YoXCI9XCIpID09PSAtMSkge1xuXHRcdFx0XHRjb25zdCBvTWV0YU1vZGVsID0gb0NvbnRleHQuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKTtcblx0XHRcdFx0Y29uc3QgYVRlY2huaWNhbEtleXMgPSBvTWV0YU1vZGVsLmdldE9iamVjdChgLyR7YVBhZ2VIYXNoQXJyYXkuam9pbihcIi9cIil9LyRUeXBlLyRLZXlgKTtcblx0XHRcdFx0c0tleVZhbHVlID0gYVBhcnRzWzBdO1xuXHRcdFx0XHRzS2V5ID0gYVRlY2huaWNhbEtleXNbMF07XG5cdFx0XHRcdG9QYWdlTWFwW3NQYWdlSGFzaC5zcGxpdChcIihcIilbMF1dW1wiYklzQWN0aXZlRW50aXR5RGVmaW5lZFwiXSA9IGZhbHNlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoc0tleSAhPT0gXCJJc0FjdGl2ZUVudGl0eVwiKSB7XG5cdFx0XHRcdGlmIChzS2V5VmFsdWUuaW5kZXhPZihcIidcIikgPT09IDAgJiYgc0tleVZhbHVlLmxhc3RJbmRleE9mKFwiJ1wiKSA9PT0gc0tleVZhbHVlLmxlbmd0aCAtIDEpIHtcblx0XHRcdFx0XHQvLyBSZW1vdmUgdGhlIHF1b3RlcyBmcm9tIHRoZSB2YWx1ZSBhbmQgZGVjb2RlIHNwZWNpYWwgY2hhcnNcblx0XHRcdFx0XHRzS2V5VmFsdWUgPSBkZWNvZGVVUklDb21wb25lbnQoc0tleVZhbHVlLnN1YnN0cmluZygxLCBzS2V5VmFsdWUubGVuZ3RoIC0gMSkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG1LZXlWYWx1ZXNbc0tleV0gPSBzS2V5VmFsdWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdG9QYWdlTWFwW3NQYWdlSGFzaE5hbWVdLm1LZXlWYWx1ZXMgPSBtS2V5VmFsdWVzO1xuXHR9KTtcblxuXHRsZXQgb1BhZ2VFbnRpdHlTZXQgPSBvRW50aXR5U2V0O1xuXHRhTWV0YVBhdGhBcnJheS5mb3JFYWNoKGZ1bmN0aW9uIChzTmF2aWdhdGlvblBhdGg6IGFueSkge1xuXHRcdGNvbnN0IG9QYWdlSW5mbzogYW55ID0ge307XG5cdFx0Y29uc3Qgc1BhZ2VFbnRpdHlTZXROYW1lID0gb1BhZ2VFbnRpdHlTZXQuJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcgJiYgb1BhZ2VFbnRpdHlTZXQuJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdbc05hdmlnYXRpb25QYXRoXTtcblx0XHRpZiAoc1BhZ2VFbnRpdHlTZXROYW1lKSB7XG5cdFx0XHRvUGFnZUluZm8ucGFnZUVudGl0eU5hbWUgPSBvUGFnZUVudGl0eVNldC4kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1tzTmF2aWdhdGlvblBhdGhdO1xuXHRcdFx0b1BhZ2VFbnRpdHlTZXQgPSBvQ29udGV4dC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpLmdldE9iamVjdChgLyR7c1BhZ2VFbnRpdHlTZXROYW1lfWApIHx8IG9FbnRpdHlTZXQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG9QYWdlSW5mby5wYWdlRW50aXR5TmFtZSA9IHNOYXZpZ2F0aW9uUGF0aDtcblx0XHR9XG5cdFx0b1BhZ2VJbmZvLm1LZXlWYWx1ZXMgPSBvUGFnZU1hcFtzTmF2aWdhdGlvblBhdGhdLm1LZXlWYWx1ZXM7XG5cdFx0b1BhZ2VJbmZvLmJJc0FjdGl2ZUVudGl0eURlZmluZWQgPSBvUGFnZU1hcFtzTmF2aWdhdGlvblBhdGhdLmJJc0FjdGl2ZUVudGl0eURlZmluZWQ7XG5cdFx0YVBhZ2VzLnB1c2gob1BhZ2VJbmZvKTtcblx0fSk7XG5cblx0YVBhZ2VzLmZvckVhY2goZnVuY3Rpb24gKG9QYWdlSW5mbzogYW55KSB7XG5cdFx0Y29uc3Qgb0ZpbHRlciA9IGNyZWF0ZUZpbHRlclRvRmV0Y2hBY3RpdmVDb250ZXh0KG9QYWdlSW5mby5tS2V5VmFsdWVzLCBvUGFnZUluZm8uYklzQWN0aXZlRW50aXR5RGVmaW5lZCk7XG5cdFx0YUFjdGl2ZUNvbnRleHRwcm9taXNlcy5wdXNoKGdldEFjdGl2ZUNvbnRleHRQYXRoKG9Db250cm9sbGVyLCBvUGFnZUluZm8ucGFnZUVudGl0eU5hbWUsIG9GaWx0ZXIpKTtcblx0fSk7XG5cblx0cmV0dXJuIGFBY3RpdmVDb250ZXh0cHJvbWlzZXM7XG59XG5cbi8qKlxuICogTWV0aG9kIHRvIGZldGNoIGFjdGl2ZSBjb250ZXh0IHBhdGgncy5cbiAqXG4gKiBAcGFyYW0gb0NvbnRleHQgVGhlIFBhZ2UgQ29udGV4dFxuICogQHBhcmFtIG9Db250cm9sbGVyXG4gKiBAcmV0dXJucyBQcm9taXNlIHdoaWNoIGlzIHJlc29sdmVkIG9uY2UgdGhlIGFjdGl2ZSBjb250ZXh0J3MgYXJlIGZldGNoZWRcbiAqL1xuZnVuY3Rpb24gZ2V0QWN0aXZlQ29udGV4dFBhdGhzKG9Db250ZXh0OiBhbnksIG9Db250cm9sbGVyOiBhbnkpIHtcblx0Y29uc3Qgc0N1cnJlbnRIYXNoTm9QYXJhbXMgPSBIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpLmdldEhhc2goKS5zcGxpdChcIj9cIilbMF07XG5cdGxldCBzUm9vdEVudGl0eU5hbWUgPSBzQ3VycmVudEhhc2hOb1BhcmFtcyAmJiBzQ3VycmVudEhhc2hOb1BhcmFtcy5zdWJzdHIoMCwgc0N1cnJlbnRIYXNoTm9QYXJhbXMuaW5kZXhPZihcIihcIikpO1xuXHRpZiAoc1Jvb3RFbnRpdHlOYW1lLmluZGV4T2YoXCIvXCIpID09PSAwKSB7XG5cdFx0c1Jvb3RFbnRpdHlOYW1lID0gc1Jvb3RFbnRpdHlOYW1lLnN1YnN0cmluZygxKTtcblx0fVxuXHRjb25zdCBvRW50aXR5U2V0ID0gb0NvbnRleHQuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKS5nZXRPYmplY3QoYC8ke3NSb290RW50aXR5TmFtZX1gKTtcblx0Y29uc3Qgb1BhZ2VDb250ZXh0ID0gb0NvbnRleHQ7XG5cdGNvbnN0IGFBY3RpdmVDb250ZXh0cHJvbWlzZXMgPSBnZXRBY3RpdmVDb250ZXh0SW5zdGFuY2VzKG9Db250ZXh0LCBvQ29udHJvbGxlciwgb0VudGl0eVNldCk7XG5cdGlmIChhQWN0aXZlQ29udGV4dHByb21pc2VzLmxlbmd0aCA+IDApIHtcblx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoYUFjdGl2ZUNvbnRleHRwcm9taXNlcylcblx0XHRcdC50aGVuKGZ1bmN0aW9uIChhRGF0YTogYW55W10pIHtcblx0XHRcdFx0Y29uc3QgYUFjdGl2ZUNvbnRleHRQYXRocyA9IFtdO1xuXHRcdFx0XHRsZXQgb1BhZ2VFbnRpdHlTZXQgPSBvRW50aXR5U2V0O1xuXHRcdFx0XHRpZiAoYURhdGFbMF0uaW5kZXhPZihcIi9cIikgPT09IDApIHtcblx0XHRcdFx0XHRhQWN0aXZlQ29udGV4dFBhdGhzLnB1c2goYURhdGFbMF0uc3Vic3RyaW5nKDEpKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRhQWN0aXZlQ29udGV4dFBhdGhzLnB1c2goYURhdGFbMF0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIEluIHRoZSBhY3RpdmUgY29udGV4dCBwYXRocyBpZGVudGlmeSBhbmQgcmVwbGFjZSB0aGUgZW50aXR5U2V0IE5hbWUgd2l0aCBjb3JyZXNwb25kaW5nIG5hdmlnYXRpb24gcHJvcGVydHkgbmFtZVxuXHRcdFx0XHQvLyBSZXF1aXJlZCB0byBmb3JtIHRoZSB1cmwgcG9pbnRpbmcgdG8gYWN0aXZlIGNvbnRleHRcblx0XHRcdFx0Ly8gRXhhbXBsZSA6IFNhbGVzT3JkZXJJdGVtIC0tPiBfSXRlbSwgTWF0ZXJpYWxEZXRhaWxzIC0tPiBfTWF0ZXJpYWxEZXRhaWxzIGV0Yy4sXG5cdFx0XHRcdGZvciAobGV0IGkgPSAxOyBpIDwgYURhdGEubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRsZXQgc0FjdGl2ZUNvbnRleHRQYXRoID0gYURhdGFbaV07XG5cdFx0XHRcdFx0bGV0IHNOYXZpZ2F0aW9Qcm9wZXJ0eSA9IFwiXCI7XG5cdFx0XHRcdFx0bGV0IHNFbnRpdHlTZXROYW1lID0gc0FjdGl2ZUNvbnRleHRQYXRoICYmIHNBY3RpdmVDb250ZXh0UGF0aC5zdWJzdHIoMCwgc0FjdGl2ZUNvbnRleHRQYXRoLmluZGV4T2YoXCIoXCIpKTtcblx0XHRcdFx0XHRpZiAoc0VudGl0eVNldE5hbWUuaW5kZXhPZihcIi9cIikgPT09IDApIHtcblx0XHRcdFx0XHRcdHNFbnRpdHlTZXROYW1lID0gc0VudGl0eVNldE5hbWUuc3Vic3RyaW5nKDEpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoc0FjdGl2ZUNvbnRleHRQYXRoLmluZGV4T2YoXCIvXCIpID09PSAwKSB7XG5cdFx0XHRcdFx0XHRzQWN0aXZlQ29udGV4dFBhdGggPSBzQWN0aXZlQ29udGV4dFBhdGguc3Vic3RyaW5nKDEpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRzTmF2aWdhdGlvUHJvcGVydHkgPSBPYmplY3Qua2V5cyhvUGFnZUVudGl0eVNldC4kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZylbXG5cdFx0XHRcdFx0XHRPYmplY3QudmFsdWVzKG9QYWdlRW50aXR5U2V0LiROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nKS5pbmRleE9mKHNFbnRpdHlTZXROYW1lKVxuXHRcdFx0XHRcdF07XG5cdFx0XHRcdFx0aWYgKHNOYXZpZ2F0aW9Qcm9wZXJ0eSkge1xuXHRcdFx0XHRcdFx0YUFjdGl2ZUNvbnRleHRQYXRocy5wdXNoKHNBY3RpdmVDb250ZXh0UGF0aC5yZXBsYWNlKHNFbnRpdHlTZXROYW1lLCBzTmF2aWdhdGlvUHJvcGVydHkpKTtcblx0XHRcdFx0XHRcdG9QYWdlRW50aXR5U2V0ID0gb1BhZ2VDb250ZXh0LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCkuZ2V0T2JqZWN0KGAvJHtzRW50aXR5U2V0TmFtZX1gKSB8fCBvRW50aXR5U2V0O1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRhQWN0aXZlQ29udGV4dFBhdGhzLnB1c2goc0FjdGl2ZUNvbnRleHRQYXRoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGFBY3RpdmVDb250ZXh0UGF0aHM7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChvRXJyb3I6IGFueSkge1xuXHRcdFx0XHRMb2cuaW5mbyhcIkZhaWxlZCB0byByZXRyaWV2ZSBvbmUgb3IgbW9yZSBhY3RpdmUgY29udGV4dCBwYXRoJ3NcIiwgb0Vycm9yKTtcblx0XHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0fVxufVxuZnVuY3Rpb24gZmV0Y2hBY3RpdmVDb250ZXh0UGF0aHMob0NvbnRleHQ6IGFueSwgb0NvbnRyb2xsZXI6IGFueSkge1xuXHRsZXQgb1Byb21pc2UsIGFTZW1hbnRpY0tleXM7XG5cdGNvbnN0IHNDdXJyZW50SGFzaE5vUGFyYW1zID0gSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKS5nZXRIYXNoKCkuc3BsaXQoXCI/XCIpWzBdO1xuXHRpZiAob0NvbnRleHQpIHtcblx0XHRjb25zdCBvTW9kZWwgPSBvQ29udGV4dC5nZXRNb2RlbCgpO1xuXHRcdGNvbnN0IG9NZXRhTW9kZWwgPSBvTW9kZWwuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0Ykdsb2JhbElzU3RpY2t5U3VwcG9ydGVkID0gTW9kZWxIZWxwZXIuaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkKG9NZXRhTW9kZWwpO1xuXHRcdGxldCBzUm9vdEVudGl0eU5hbWUgPSBzQ3VycmVudEhhc2hOb1BhcmFtcyAmJiBzQ3VycmVudEhhc2hOb1BhcmFtcy5zdWJzdHIoMCwgc0N1cnJlbnRIYXNoTm9QYXJhbXMuaW5kZXhPZihcIihcIikpO1xuXHRcdGlmIChzUm9vdEVudGl0eU5hbWUuaW5kZXhPZihcIi9cIikgPT09IDApIHtcblx0XHRcdHNSb290RW50aXR5TmFtZSA9IHNSb290RW50aXR5TmFtZS5zdWJzdHJpbmcoMSk7XG5cdFx0fVxuXHRcdGFTZW1hbnRpY0tleXMgPSBTZW1hbnRpY0tleUhlbHBlci5nZXRTZW1hbnRpY0tleXMob01ldGFNb2RlbCwgc1Jvb3RFbnRpdHlOYW1lKTtcblx0fVxuXHQvLyBGZXRjaCBhY3RpdmUgY29udGV4dCBkZXRhaWxzIGluY2FzZSBvZiBiZWxvdyBzY2VuYXJpbydzKHdoZXJlIHBhZ2UgaXMgbm90IHN0aWNreSBzdXBwb3J0ZWQod2UgZG8gbm90IGhhdmUgZHJhZnQgaW5zdGFuY2UpKVxuXHQvLyAxLiBJbiBjYXNlIG9mIGRyYWZ0IGVuYWJsZWQgT2JqZWN0IHBhZ2Ugd2hlcmUgc2VtYW50aWMga2V5IGJhc2VkIFVSTCBpcyBub3QgcG9zc2libGUobGlrZSBzZW1hbnRpYyBrZXlzIGFyZSBub3QgbW9kZWxlZCBpbiB0aGUgZW50aXR5IHNldClcblx0Ly8gMi4gSW4gY2FzZSBvZiBkcmFmdCBlbmFibGVkIFN1YiBPYmplY3QgUGFnZXMgKHdoZXJlIHNlbWFudGljIGJvb2ttYXJraW5nIGlzIG5vdCBzdXBwb3J0ZWQpXG5cdGNvbnN0IG9WaWV3RGF0YSA9IG9Db250cm9sbGVyLmdldFZpZXcoKS5nZXRWaWV3RGF0YSgpO1xuXHRpZiAob0NvbnRleHQgJiYgIWJHbG9iYWxJc1N0aWNreVN1cHBvcnRlZCAmJiAoKG9WaWV3RGF0YS52aWV3TGV2ZWwgPT09IDEgJiYgIWFTZW1hbnRpY0tleXMpIHx8IG9WaWV3RGF0YS52aWV3TGV2ZWwgPj0gMikpIHtcblx0XHRvUHJvbWlzZSA9IGdldEFjdGl2ZUNvbnRleHRQYXRocyhvQ29udGV4dCwgb0NvbnRyb2xsZXIpO1xuXHRcdHJldHVybiBvUHJvbWlzZTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdH1cbn1cblxuLy8gLyoqXG4vLyAgKiBHZXQgc2hhcmUgVVJMLlxuLy8gICogQHBhcmFtIGJJc0VkaXRhYmxlXG4vLyAgKiBAcGFyYW0gYklzU3RpY2t5U3VwcG9ydGVkXG4vLyAgKiBAcGFyYW0gYUFjdGl2ZUNvbnRleHRQYXRoc1xuLy8gICogQHJldHVybnMge3N0cmluZ30gVGhlIHNoYXJlIFVSTFxuLy8gICogQHByb3RlY3RlZFxuLy8gICogQHN0YXRpY1xuLy8gICovXG5mdW5jdGlvbiBnZXRTaGFyZVVybChiSXNFZGl0YWJsZTogYW55LCBiSXNTdGlja3lTdXBwb3J0ZWQ6IGFueSwgYUFjdGl2ZUNvbnRleHRQYXRoczogYW55KSB7XG5cdGxldCBzU2hhcmVVcmw7XG5cdGNvbnN0IHNIYXNoID0gSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKS5nZXRIYXNoKCk7XG5cdGNvbnN0IHNCYXNlUGF0aCA9IChIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpIGFzIGFueSkuaHJlZkZvckFwcFNwZWNpZmljSGFzaFxuXHRcdD8gKEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkgYXMgYW55KS5ocmVmRm9yQXBwU3BlY2lmaWNIYXNoKFwiXCIpXG5cdFx0OiBcIlwiO1xuXHRpZiAoYklzRWRpdGFibGUgJiYgIWJJc1N0aWNreVN1cHBvcnRlZCAmJiBhQWN0aXZlQ29udGV4dFBhdGhzKSB7XG5cdFx0c1NoYXJlVXJsID0gc0Jhc2VQYXRoICsgYUFjdGl2ZUNvbnRleHRQYXRocy5qb2luKFwiL1wiKTtcblx0fSBlbHNlIHtcblx0XHRzU2hhcmVVcmwgPSBzSGFzaCA/IHNCYXNlUGF0aCArIHNIYXNoIDogd2luZG93LmxvY2F0aW9uLmhhc2g7XG5cdH1cblx0cmV0dXJuIHNTaGFyZVVybDtcbn1cbmZ1bmN0aW9uIGdldFNoYXJlRW1haWxVcmwoKSB7XG5cdGNvbnN0IG9VU2hlbGxDb250YWluZXIgPSBzYXAudXNoZWxsICYmIHNhcC51c2hlbGwuQ29udGFpbmVyO1xuXHRpZiAob1VTaGVsbENvbnRhaW5lcikge1xuXHRcdHJldHVybiBvVVNoZWxsQ29udGFpbmVyXG5cdFx0XHQuZ2V0RkxQVXJsQXN5bmModHJ1ZSlcblx0XHRcdC50aGVuKGZ1bmN0aW9uIChzRkxQVXJsOiBhbnkpIHtcblx0XHRcdFx0cmV0dXJuIHNGTFBVcmw7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChzRXJyb3I6IGFueSkge1xuXHRcdFx0XHRMb2cuZXJyb3IoXCJDb3VsZCBub3QgcmV0cmlldmUgY0ZMUCBVUkwgZm9yIHRoZSBzaGFyaW5nIGRpYWxvZyAoZGlhbG9nIHdpbGwgbm90IGJlIG9wZW5lZClcIiwgc0Vycm9yKTtcblx0XHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoZG9jdW1lbnQuVVJMKTtcblx0fVxufVxuXG5mdW5jdGlvbiBnZXRKYW1VcmwoYklzRWRpdE1vZGU6IGJvb2xlYW4sIGJJc1N0aWNreVN1cHBvcnRlZDogYW55LCBhQWN0aXZlQ29udGV4dFBhdGhzOiBhbnkpIHtcblx0bGV0IHNKYW1Vcmw6IHN0cmluZztcblx0Y29uc3Qgc0hhc2ggPSBIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpLmdldEhhc2goKTtcblx0Y29uc3Qgc0Jhc2VQYXRoID0gKEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkgYXMgYW55KS5ocmVmRm9yQXBwU3BlY2lmaWNIYXNoXG5cdFx0PyAoSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKSBhcyBhbnkpLmhyZWZGb3JBcHBTcGVjaWZpY0hhc2goXCJcIilcblx0XHQ6IFwiXCI7XG5cdGlmIChiSXNFZGl0TW9kZSAmJiAhYklzU3RpY2t5U3VwcG9ydGVkICYmIGFBY3RpdmVDb250ZXh0UGF0aHMpIHtcblx0XHRzSmFtVXJsID0gc0Jhc2VQYXRoICsgYUFjdGl2ZUNvbnRleHRQYXRocy5qb2luKFwiL1wiKTtcblx0fSBlbHNlIHtcblx0XHRzSmFtVXJsID0gc0hhc2ggPyBzQmFzZVBhdGggKyBzSGFzaCA6IHdpbmRvdy5sb2NhdGlvbi5oYXNoO1xuXHR9XG5cdC8vIGluIGNhc2Ugd2UgYXJlIGluIGNGTFAgc2NlbmFyaW8sIHRoZSBhcHBsaWNhdGlvbiBpcyBydW5uaW5nXG5cdC8vIGluc2lkZSBhbiBpZnJhbWUsIGFuZCB0aGVyZSBmb3Igd2UgbmVlZCB0byBnZXQgdGhlIGNGTFAgVVJMXG5cdC8vIGFuZCBub3QgJ2RvY3VtZW50LlVSTCcgdGhhdCByZXByZXNlbnRzIHRoZSBpZnJhbWUgVVJMXG5cdGlmIChzYXAudXNoZWxsICYmIHNhcC51c2hlbGwuQ29udGFpbmVyICYmIHNhcC51c2hlbGwuQ29udGFpbmVyLnJ1bm5pbmdJbklmcmFtZSAmJiBzYXAudXNoZWxsLkNvbnRhaW5lci5ydW5uaW5nSW5JZnJhbWUoKSkge1xuXHRcdHNhcC51c2hlbGwuQ29udGFpbmVyLmdldEZMUFVybCh0cnVlKVxuXHRcdFx0LnRoZW4oZnVuY3Rpb24gKHNVcmw6IGFueSkge1xuXHRcdFx0XHRyZXR1cm4gc1VybC5zdWJzdHIoMCwgc1VybC5pbmRleE9mKFwiI1wiKSkgKyBzSmFtVXJsO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAoc0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0TG9nLmVycm9yKFwiQ291bGQgbm90IHJldHJpZXZlIGNGTFAgVVJMIGZvciB0aGUgc2hhcmluZyBkaWFsb2cgKGRpYWxvZyB3aWxsIG5vdCBiZSBvcGVuZWQpXCIsIHNFcnJvcik7XG5cdFx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgKyBzSmFtVXJsKTtcblx0fVxufVxuXG5jb25zdCBTaGFyZUV4dGVuc2lvbk92ZXJyaWRlID0ge1xuXHRhZGFwdFNoYXJlTWV0YWRhdGE6IGZ1bmN0aW9uICh0aGlzOiBTaGFyZSwgb1NoYXJlTWV0YWRhdGE6IGFueSkge1xuXHRcdGNvbnN0IG9Db250ZXh0ID0gdGhpcy5iYXNlLmdldFZpZXcoKS5nZXRCaW5kaW5nQ29udGV4dCgpLFxuXHRcdFx0b1VJTW9kZWwgPSB0aGlzLmJhc2UuZ2V0VmlldygpLmdldE1vZGVsKFwidWlcIiksXG5cdFx0XHRiSXNFZGl0YWJsZSA9IG9VSU1vZGVsLmdldFByb3BlcnR5KFwiL2lzRWRpdGFibGVcIik7XG5cdFx0cmV0dXJuIGZldGNoQWN0aXZlQ29udGV4dFBhdGhzKG9Db250ZXh0LCB0aGlzLmJhc2UuZ2V0VmlldygpLmdldENvbnRyb2xsZXIoKSkudGhlbigoYUFjdGl2ZUNvbnRleHRQYXRocykgPT4ge1xuXHRcdFx0Y29uc3Qgb1BhZ2VUaXRsZUluZm8gPSAodGhpcy5iYXNlLmdldFZpZXcoKS5nZXRDb250cm9sbGVyKCkgYXMgT2JqZWN0UGFnZUNvbnRyb2xsZXIpLl9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbigpO1xuXG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoW1xuXHRcdFx0XHRnZXRKYW1VcmwoYklzRWRpdGFibGUsIGJHbG9iYWxJc1N0aWNreVN1cHBvcnRlZCwgYUFjdGl2ZUNvbnRleHRQYXRocyksXG5cdFx0XHRcdGdldFNoYXJlVXJsKGJJc0VkaXRhYmxlLCBiR2xvYmFsSXNTdGlja3lTdXBwb3J0ZWQsIGFBY3RpdmVDb250ZXh0UGF0aHMpLFxuXHRcdFx0XHRnZXRTaGFyZUVtYWlsVXJsKClcblx0XHRcdF0pXG5cdFx0XHRcdC50aGVuKGZ1bmN0aW9uIChvRGF0YSkge1xuXHRcdFx0XHRcdGxldCBzVGl0bGUgPSBvUGFnZVRpdGxlSW5mby50aXRsZTtcblx0XHRcdFx0XHRjb25zdCBzT2JqZWN0U3VidGl0bGUgPSBvUGFnZVRpdGxlSW5mby5zdWJ0aXRsZSA/IG9QYWdlVGl0bGVJbmZvLnN1YnRpdGxlLnRvU3RyaW5nKCkgOiBcIlwiO1xuXHRcdFx0XHRcdGlmIChzT2JqZWN0U3VidGl0bGUpIHtcblx0XHRcdFx0XHRcdHNUaXRsZSA9IGAke3NUaXRsZX0gLSAke3NPYmplY3RTdWJ0aXRsZX1gO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRvU2hhcmVNZXRhZGF0YS50aWxlID0ge1xuXHRcdFx0XHRcdFx0dGl0bGU6IG9QYWdlVGl0bGVJbmZvLnRpdGxlLFxuXHRcdFx0XHRcdFx0c3VidGl0bGU6IHNPYmplY3RTdWJ0aXRsZVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0b1NoYXJlTWV0YWRhdGEuZW1haWwudGl0bGUgPSBzVGl0bGU7XG5cdFx0XHRcdFx0b1NoYXJlTWV0YWRhdGEudGl0bGUgPSBzVGl0bGU7XG5cdFx0XHRcdFx0b1NoYXJlTWV0YWRhdGEuamFtLnVybCA9IG9EYXRhWzBdO1xuXHRcdFx0XHRcdG9TaGFyZU1ldGFkYXRhLnVybCA9IG9EYXRhWzFdO1xuXHRcdFx0XHRcdG9TaGFyZU1ldGFkYXRhLmVtYWlsLnVybCA9IG9EYXRhWzJdO1xuXG5cdFx0XHRcdFx0cmV0dXJuIG9TaGFyZU1ldGFkYXRhO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKGVycm9yOiBhbnkpIHtcblx0XHRcdFx0XHRMb2cuZXJyb3IoZXJyb3IpO1xuXHRcdFx0XHR9KTtcblx0XHR9KTtcblx0fVxufTtcblxuZXhwb3J0IGRlZmF1bHQgU2hhcmVFeHRlbnNpb25PdmVycmlkZTtcbiJdfQ==
|