@sapui5/sap.fe.core 1.93.3 → 1.97.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.
Files changed (193) hide show
  1. package/package.json +6 -6
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AppComponent.js +8 -40
  4. package/src/sap/fe/core/BusyLocker.js +12 -0
  5. package/src/sap/fe/core/CommonUtils.js +224 -48
  6. package/src/sap/fe/core/ExtensionAPI.js +1 -1
  7. package/src/sap/fe/core/PageController.js +13 -2
  8. package/src/sap/fe/core/RouterProxy.js +52 -64
  9. package/src/sap/fe/core/TemplateComponent.js +8 -2
  10. package/src/sap/fe/core/TransactionHelper.js +210 -180
  11. package/src/sap/fe/core/actions/draft.js +13 -1
  12. package/src/sap/fe/core/actions/messageHandling.js +80 -4
  13. package/src/sap/fe/core/actions/operations.js +207 -68
  14. package/src/sap/fe/core/controllerextensions/EditFlow.js +82 -55
  15. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +13 -6
  16. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +132 -23
  17. package/src/sap/fe/core/controllerextensions/InternalRouting.js +203 -214
  18. package/src/sap/fe/core/controllerextensions/KPIManagement.js +834 -170
  19. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +890 -189
  20. package/src/sap/fe/core/controllerextensions/MessageHandler.js +222 -102
  21. package/src/sap/fe/core/controllerextensions/PageReady.js +48 -33
  22. package/src/sap/fe/core/controllerextensions/PageReady.ts +49 -14
  23. package/src/sap/fe/core/controllerextensions/Paginator.js +150 -0
  24. package/src/sap/fe/core/controllerextensions/Placeholder.js +133 -270
  25. package/src/sap/fe/core/controllerextensions/Share.js +12 -9
  26. package/src/sap/fe/core/controllerextensions/SideEffects.js +5 -6
  27. package/src/sap/fe/core/controllerextensions/SideEffects.ts +13 -12
  28. package/src/sap/fe/core/controllerextensions/ViewState.js +202 -8
  29. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +39 -34
  30. package/src/sap/fe/core/controls/ActionParameterDialogValueHelp.fragment.xml +35 -0
  31. package/src/sap/fe/core/controls/ActionPartial.fragment.xml +1 -1
  32. package/src/sap/fe/core/controls/CustomQuickViewPage.js +109 -108
  33. package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +45 -0
  34. package/src/sap/fe/core/controls/filterbar/FilterContainer.js +15 -4
  35. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +250 -94
  36. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +129 -135
  37. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +325 -0
  38. package/src/sap/fe/core/controls/filterbar.d.js +8 -0
  39. package/src/sap/fe/core/controls/filterbar.d.ts +0 -0
  40. package/src/sap/fe/core/converters/ConverterContext.js +19 -5
  41. package/src/sap/fe/core/converters/ConverterContext.ts +13 -3
  42. package/src/sap/fe/core/converters/ManifestSettings.js +2 -1
  43. package/src/sap/fe/core/converters/ManifestSettings.ts +13 -3
  44. package/src/sap/fe/core/converters/ManifestWrapper.js +9 -9
  45. package/src/sap/fe/core/converters/MetaModelConverter.js +867 -871
  46. package/src/sap/fe/core/converters/MetaModelConverter.ts +772 -827
  47. package/src/sap/fe/core/converters/TemplateConverter.js +4 -4
  48. package/src/sap/fe/core/converters/annotations/DataField.js +57 -7
  49. package/src/sap/fe/core/converters/annotations/DataField.ts +52 -2
  50. package/src/sap/fe/core/converters/common/AnnotationConverter.js +146 -85
  51. package/src/sap/fe/core/converters/controls/Common/Action.js +61 -56
  52. package/src/sap/fe/core/converters/controls/Common/Action.ts +54 -39
  53. package/src/sap/fe/core/converters/controls/Common/Chart.js +101 -9
  54. package/src/sap/fe/core/converters/controls/Common/Chart.ts +100 -5
  55. package/src/sap/fe/core/converters/controls/Common/Criticality.js +1 -1
  56. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +15 -16
  57. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +16 -30
  58. package/src/sap/fe/core/converters/controls/Common/Form.js +77 -29
  59. package/src/sap/fe/core/converters/controls/Common/Form.ts +79 -21
  60. package/src/sap/fe/core/converters/controls/Common/KPI.js +287 -109
  61. package/src/sap/fe/core/converters/controls/Common/KPI.ts +314 -139
  62. package/src/sap/fe/core/converters/controls/Common/Table.js +521 -166
  63. package/src/sap/fe/core/converters/controls/Common/Table.ts +519 -115
  64. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +487 -0
  65. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +541 -0
  66. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +364 -0
  67. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +338 -0
  68. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +74 -0
  69. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +50 -0
  70. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +11 -11
  71. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +47 -35
  72. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +45 -29
  73. package/src/sap/fe/core/converters/helpers/Aggregation.js +31 -32
  74. package/src/sap/fe/core/converters/helpers/Aggregation.ts +26 -27
  75. package/src/sap/fe/core/converters/helpers/BindingHelper.js +27 -2
  76. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +22 -2
  77. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +1 -1
  78. package/src/sap/fe/core/converters/helpers/ID.js +9 -3
  79. package/src/sap/fe/core/converters/helpers/ID.ts +6 -3
  80. package/src/sap/fe/core/converters/helpers/IssueManager.js +5 -4
  81. package/src/sap/fe/core/converters/helpers/IssueManager.ts +4 -3
  82. package/src/sap/fe/core/converters/helpers/Key.js +3 -3
  83. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +11 -6
  84. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +9 -5
  85. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +18 -5
  86. package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +14 -14
  87. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +91 -20
  88. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +77 -5
  89. package/src/sap/fe/core/converters/templates/ListReportConverter.js +87 -714
  90. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +85 -812
  91. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +106 -17
  92. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +121 -16
  93. package/src/sap/fe/core/designtime/AppComponent.designtime.js +2 -1
  94. package/src/sap/fe/core/formatters/CriticalityFormatter.js +1 -1
  95. package/src/sap/fe/core/formatters/FPMFormatter.js +1 -1
  96. package/src/sap/fe/core/formatters/FPMFormatter.ts +8 -3
  97. package/src/sap/fe/core/formatters/KPIFormatter.js +1 -1
  98. package/src/sap/fe/core/formatters/TableFormatter.js +27 -4
  99. package/src/sap/fe/core/formatters/TableFormatter.ts +20 -3
  100. package/src/sap/fe/core/formatters/TableFormatterTypes.js +1 -1
  101. package/src/sap/fe/core/formatters/ValueFormatter.js +1 -1
  102. package/src/sap/fe/core/fpm/Component.js +1 -1
  103. package/src/sap/fe/core/helpers/AnnotationEnum.js +3 -3
  104. package/src/sap/fe/core/helpers/BindingExpression.js +6 -6
  105. package/src/sap/fe/core/helpers/ClassSupport.js +4 -4
  106. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +0 -2
  107. package/src/sap/fe/core/helpers/KeepAliveHelper.js +211 -0
  108. package/src/sap/fe/core/helpers/KeepAliveHelper.ts +202 -0
  109. package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +32 -0
  110. package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.ts +36 -0
  111. package/src/sap/fe/core/helpers/ModelHelper.js +78 -0
  112. package/src/sap/fe/core/helpers/PasteHelper.js +6 -0
  113. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +2 -2
  114. package/src/sap/fe/core/helpers/StableIdHelper.js +1 -1
  115. package/src/sap/fe/core/helpers/StableIdHelper.ts +1 -1
  116. package/src/sap/fe/core/jsx-runtime/jsx.js +2 -2
  117. package/src/sap/fe/core/jsx-runtime/jsxs.js +1 -1
  118. package/src/sap/fe/core/library.js +1 -1
  119. package/src/sap/fe/core/messagebundle.properties +45 -2
  120. package/src/sap/fe/core/messagebundle_ar.properties +53 -1
  121. package/src/sap/fe/core/messagebundle_bg.properties +52 -0
  122. package/src/sap/fe/core/messagebundle_ca.properties +54 -2
  123. package/src/sap/fe/core/messagebundle_cs.properties +52 -0
  124. package/src/sap/fe/core/messagebundle_cy.properties +52 -0
  125. package/src/sap/fe/core/messagebundle_da.properties +53 -1
  126. package/src/sap/fe/core/messagebundle_de.properties +55 -3
  127. package/src/sap/fe/core/messagebundle_el.properties +53 -1
  128. package/src/sap/fe/core/messagebundle_en.properties +52 -0
  129. package/src/sap/fe/core/messagebundle_en_GB.properties +53 -1
  130. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +49 -1
  131. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +53 -1
  132. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +53 -1
  133. package/src/sap/fe/core/messagebundle_es.properties +60 -8
  134. package/src/sap/fe/core/messagebundle_es_MX.properties +55 -3
  135. package/src/sap/fe/core/messagebundle_et.properties +52 -0
  136. package/src/sap/fe/core/messagebundle_fi.properties +52 -0
  137. package/src/sap/fe/core/messagebundle_fr.properties +61 -9
  138. package/src/sap/fe/core/messagebundle_fr_CA.properties +52 -0
  139. package/src/sap/fe/core/messagebundle_hi.properties +53 -1
  140. package/src/sap/fe/core/messagebundle_hr.properties +53 -1
  141. package/src/sap/fe/core/messagebundle_hu.properties +52 -0
  142. package/src/sap/fe/core/messagebundle_id.properties +54 -2
  143. package/src/sap/fe/core/messagebundle_it.properties +53 -1
  144. package/src/sap/fe/core/messagebundle_iw.properties +54 -2
  145. package/src/sap/fe/core/messagebundle_ja.properties +62 -10
  146. package/src/sap/fe/core/messagebundle_kk.properties +53 -1
  147. package/src/sap/fe/core/messagebundle_ko.properties +53 -1
  148. package/src/sap/fe/core/messagebundle_lt.properties +53 -1
  149. package/src/sap/fe/core/messagebundle_lv.properties +53 -1
  150. package/src/sap/fe/core/messagebundle_ms.properties +53 -1
  151. package/src/sap/fe/core/messagebundle_nl.properties +57 -5
  152. package/src/sap/fe/core/messagebundle_no.properties +54 -2
  153. package/src/sap/fe/core/messagebundle_pl.properties +53 -1
  154. package/src/sap/fe/core/messagebundle_pt.properties +54 -2
  155. package/src/sap/fe/core/messagebundle_pt_PT.properties +53 -1
  156. package/src/sap/fe/core/messagebundle_ro.properties +53 -1
  157. package/src/sap/fe/core/messagebundle_ru.properties +53 -1
  158. package/src/sap/fe/core/messagebundle_sh.properties +53 -1
  159. package/src/sap/fe/core/messagebundle_sk.properties +52 -0
  160. package/src/sap/fe/core/messagebundle_sl.properties +53 -1
  161. package/src/sap/fe/core/messagebundle_sv.properties +53 -1
  162. package/src/sap/fe/core/messagebundle_th.properties +52 -0
  163. package/src/sap/fe/core/messagebundle_tr.properties +52 -0
  164. package/src/sap/fe/core/messagebundle_uk.properties +52 -0
  165. package/src/sap/fe/core/messagebundle_vi.properties +53 -1
  166. package/src/sap/fe/core/messagebundle_zh_CN.properties +53 -1
  167. package/src/sap/fe/core/messagebundle_zh_TW.properties +53 -1
  168. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +5 -5
  169. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +5 -5
  170. package/src/sap/fe/core/services/RoutingServiceFactory.js +154 -78
  171. package/src/sap/fe/core/services/ShellServicesFactory.js +9 -9
  172. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +11 -12
  173. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +12 -2
  174. package/src/sap/fe/core/support/AnnotationIssue.support.js +2 -4
  175. package/src/sap/fe/core/support/CollectionFacetMissingID.support.js +2 -4
  176. package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +2 -4
  177. package/src/sap/fe/core/support/CommonHelper.js +2 -4
  178. package/src/sap/fe/core/support/Diagnostics.js +1 -1
  179. package/src/sap/fe/core/templating/CriticalityFormatters.js +4 -4
  180. package/src/sap/fe/core/templating/DataFieldFormatters.js +1 -1
  181. package/src/sap/fe/core/templating/DataModelPathHelper.js +54 -6
  182. package/src/sap/fe/core/templating/DataModelPathHelper.ts +54 -4
  183. package/src/sap/fe/core/templating/EntitySetHelper.js +86 -3
  184. package/src/sap/fe/core/templating/EntitySetHelper.ts +44 -0
  185. package/src/sap/fe/core/templating/FieldControlHelper.js +1 -1
  186. package/src/sap/fe/core/templating/FilterHelper.js +23 -5
  187. package/src/sap/fe/core/templating/FilterHelper.ts +15 -1
  188. package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
  189. package/src/sap/fe/core/templating/PropertyFormatters.js +1 -1
  190. package/src/sap/fe/core/templating/PropertyHelper.js +8 -8
  191. package/src/sap/fe/core/templating/UIFormatters.js +72 -4
  192. package/src/sap/fe/core/templating/UIFormatters.ts +98 -3
  193. package/src/sap/fe/core/type/Email.js +1 -1
@@ -2,14 +2,18 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2021 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["../ManifestSettings", "../controls/ObjectPage/SubSection", "../controls/ObjectPage/HeaderFacet", "../helpers/ID", "../helpers/ConfigurableObject", "sap/fe/core/converters/controls/Common/Action", "sap/fe/core/converters/objectPage/HeaderAndFooterAction", "sap/fe/core/helpers/BindingExpression"], function (ManifestSettings, SubSection, HeaderFacet, ID, ConfigurableObject, Action, HeaderAndFooterAction, BindingExpression) {
5
+ sap.ui.define(["../ManifestSettings", "../controls/ObjectPage/SubSection", "../controls/ObjectPage/HeaderFacet", "../helpers/ID", "../helpers/ConfigurableObject", "sap/fe/core/converters/controls/Common/Action", "sap/fe/core/converters/objectPage/HeaderAndFooterAction", "../controls/ObjectPage/Avatar", "sap/fe/core/helpers/BindingExpression"], function (ManifestSettings, SubSection, HeaderFacet, ID, ConfigurableObject, Action, HeaderAndFooterAction, Avatar, BindingExpression) {
6
6
  "use strict";
7
7
 
8
8
  var _exports = {};
9
+ var constant = BindingExpression.constant;
10
+ var ifElse = BindingExpression.ifElse;
9
11
  var not = BindingExpression.not;
10
12
  var equal = BindingExpression.equal;
11
13
  var compileBinding = BindingExpression.compileBinding;
14
+ var bindingExpression = BindingExpression.bindingExpression;
12
15
  var annotationExpression = BindingExpression.annotationExpression;
16
+ var getAvatar = Avatar.getAvatar;
13
17
  var getHiddenHeaderActions = HeaderAndFooterAction.getHiddenHeaderActions;
14
18
  var getFooterDefaultActions = HeaderAndFooterAction.getFooterDefaultActions;
15
19
  var getHeaderDefaultActions = HeaderAndFooterAction.getHeaderDefaultActions;
@@ -27,7 +31,7 @@ sap.ui.define(["../ManifestSettings", "../controls/ObjectPage/SubSection", "../c
27
31
  var createCustomSubSections = SubSection.createCustomSubSections;
28
32
  var TemplateType = ManifestSettings.TemplateType;
29
33
 
30
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
34
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
31
35
 
32
36
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
33
37
 
@@ -174,7 +178,7 @@ sap.ui.define(["../ManifestSettings", "../controls/ObjectPage/SubSection", "../c
174
178
  if (!customSectionDefinition.subSections) {
175
179
  // If there is no subSection defined, we add the content of the custom section as subsections
176
180
  // and make sure to set the visibility to 'true', as the actual visibility is handled by the section itself
177
- manifestSubSections = _defineProperty({}, sectionKey, _objectSpread({}, customSectionDefinition, {
181
+ manifestSubSections = _defineProperty({}, sectionKey, _objectSpread(_objectSpread({}, customSectionDefinition), {}, {
178
182
  position: undefined,
179
183
  visible: true
180
184
  }));
@@ -190,17 +194,14 @@ sap.ui.define(["../ManifestSettings", "../controls/ObjectPage/SubSection", "../c
190
194
  showTitle: !!customSectionDefinition.title,
191
195
  visible: customSectionDefinition.visible !== undefined ? customSectionDefinition.visible : true,
192
196
  position: position,
193
- subSections: insertCustomElements([], subSections, {
194
- "title": "overwrite",
195
- "actions": "merge"
196
- })
197
+ subSections: subSections
197
198
  };
198
199
  return customSection;
199
200
  }
200
201
  /**
201
202
  * Retrieves the ObjectPage header actions (both the default ones and the custom ones defined in the manifest).
202
203
  *
203
- * @param converterContext
204
+ * @param {ConverterContext} converterContext The converter context
204
205
  * @returns An array containing all the actions for this ObjectPage header
205
206
  */
206
207
 
@@ -218,7 +219,7 @@ sap.ui.define(["../ManifestSettings", "../controls/ObjectPage/SubSection", "../c
218
219
  /**
219
220
  * Retrieves the ObjectPage footer actions (both the default ones and the custom ones defined in the manifest).
220
221
  *
221
- * @param converterContext
222
+ * @param {ConverterContext} converterContext The converter context
222
223
  * @returns An array containing all the actions for this ObjectPage footer
223
224
  */
224
225
 
@@ -238,7 +239,7 @@ sap.ui.define(["../ManifestSettings", "../controls/ObjectPage/SubSection", "../c
238
239
  /**
239
240
  * Retrieves and merges the ObjectPage sections defined in the annotation and in the manifest.
240
241
  *
241
- * @param converterContext
242
+ * @param {ConverterContext} converterContext The converter context
242
243
  * @returns An array of sections.
243
244
  */
244
245
 
@@ -247,7 +248,7 @@ sap.ui.define(["../ManifestSettings", "../controls/ObjectPage/SubSection", "../c
247
248
 
248
249
  var getSections = function (converterContext) {
249
250
  var manifestWrapper = converterContext.getManifestWrapper();
250
- return insertCustomElements(getSectionsFromAnnotation(converterContext), getSectionsFromManifest(manifestWrapper.getSections(), converterContext), {
251
+ var sections = insertCustomElements(getSectionsFromAnnotation(converterContext), getSectionsFromManifest(manifestWrapper.getSections(), converterContext), {
251
252
  "title": "overwrite",
252
253
  "visible": "overwrite",
253
254
  "subSections": {
@@ -255,11 +256,91 @@ sap.ui.define(["../ManifestSettings", "../controls/ObjectPage/SubSection", "../c
255
256
  "title": "overwrite",
256
257
  "sideContent": "overwrite"
257
258
  }
259
+ }); // Level Adjustment for "Mixed" Collection Facets:
260
+ // ==============================================
261
+ // The manifest definition of custom side contents and actions still needs to be aligned for "Mixed" collection facets:
262
+ // Collection facets containing tables gain an extra reference facet as a table wrapper to ensure, that the table is always
263
+ // placed in an own individual Object Page Block; this additional hierarchy level is unknown to app developers, which are
264
+ // defining the side content and actions in the manifest at collection facet level; now, since the sideContent always needs
265
+ // to be assigned to a block, we need to move the sideContent of from a mixed collection facet to its first child reference facet.
266
+ // ==============================================
267
+
268
+ sections.forEach(function (section) {
269
+ var _section$subSections;
270
+
271
+ (_section$subSections = section.subSections) === null || _section$subSections === void 0 ? void 0 : _section$subSections.forEach(function (subSection) {
272
+ if (subSection.type === "Mixed" && subSection.sideContent != undefined && subSection.content && subSection.content.length > 0) {
273
+ // 1. Copy sideContent / actions to the SubSection's content
274
+ // 2. Delete sideContent / actions at the (invalid) manifest level
275
+ if (subSection.sideContent) {
276
+ subSection.content[0].sideContent = subSection.sideContent;
277
+ subSection.sideContent = undefined;
278
+ }
279
+
280
+ if (subSection.actions.length > 0) {
281
+ subSection.content[0].actions = subSection.actions;
282
+ subSection.actions = [];
283
+ }
284
+ }
285
+ });
258
286
  });
287
+ return sections;
259
288
  };
289
+ /**
290
+ * Determines if the ObjectPage has header content.
291
+ *
292
+ * @param converterContext The instance of the converter context
293
+ * @returns {boolean} `true` if there is at least on header facet
294
+ */
295
+
260
296
 
261
297
  _exports.getSections = getSections;
262
298
 
299
+ function hasHeaderContent(converterContext) {
300
+ var _converterContext$get3, _converterContext$get4;
301
+
302
+ var manifestWrapper = converterContext.getManifestWrapper();
303
+ return (((_converterContext$get3 = converterContext.getEntityType().annotations) === null || _converterContext$get3 === void 0 ? void 0 : (_converterContext$get4 = _converterContext$get3.UI) === null || _converterContext$get4 === void 0 ? void 0 : _converterContext$get4.HeaderFacets) || []).length > 0 || Object.keys(manifestWrapper.getHeaderFacets()).length > 0;
304
+ }
305
+ /**
306
+ * Gets the expression to evaluate the visibility of the header content.
307
+ *
308
+ * @param converterContext The instance of the converter context
309
+ * @returns {BindingExpression<boolean>} The binding expression for the Delete button
310
+ */
311
+
312
+
313
+ function getShowHeaderContentExpression(converterContext) {
314
+ var manifestWrapper = converterContext.getManifestWrapper();
315
+ return ifElse(!hasHeaderContent(converterContext), constant(false), ifElse(equal(manifestWrapper.isHeaderEditable(), false), constant(true), not(equal(bindingExpression("/editMode", "ui"), "Editable"))));
316
+ }
317
+ /**
318
+ * Gets the binding expression to evaluate the visibility of the header content.
319
+ *
320
+ * @param converterContext The instance of the converter context
321
+ * @returns {BindingExpression<boolean>} The binding expression for the Delete button
322
+ */
323
+
324
+
325
+ var getShowHeaderContent = function (converterContext) {
326
+ return compileBinding(getShowHeaderContentExpression(converterContext));
327
+ };
328
+ /**
329
+ * Gets the binding expression to evaluate the visibility of the avatar when the header is in expanded state.
330
+ *
331
+ * @param converterContext The instance of the converter context
332
+ * @returns {BindingExpression<string>} The binding expression for the Delete button
333
+ */
334
+
335
+
336
+ _exports.getShowHeaderContent = getShowHeaderContent;
337
+
338
+ var getExpandedImageVisible = function (converterContext) {
339
+ return compileBinding(not(getShowHeaderContentExpression(converterContext)));
340
+ };
341
+
342
+ _exports.getExpandedImageVisible = getExpandedImageVisible;
343
+
263
344
  var convertPage = function (converterContext) {
264
345
  var _entityType$annotatio4, _entityType$annotatio5;
265
346
 
@@ -273,19 +354,27 @@ sap.ui.define(["../ManifestSettings", "../controls/ObjectPage/SubSection", "../c
273
354
 
274
355
  var footerActions = getFooterActions(converterContext);
275
356
 
276
- if (manifestWrapper.isHeaderEditable() && (((_entityType$annotatio4 = entityType.annotations.UI) === null || _entityType$annotatio4 === void 0 ? void 0 : _entityType$annotatio4.HeaderFacets) || ((_entityType$annotatio5 = entityType.annotations.UI) === null || _entityType$annotatio5 === void 0 ? void 0 : _entityType$annotatio5.HeaderInfo))) {
357
+ if (manifestWrapper.isHeaderEditable() && ((_entityType$annotatio4 = entityType.annotations.UI) !== null && _entityType$annotatio4 !== void 0 && _entityType$annotatio4.HeaderFacets || (_entityType$annotatio5 = entityType.annotations.UI) !== null && _entityType$annotatio5 !== void 0 && _entityType$annotatio5.HeaderInfo)) {
277
358
  headerSection = createEditableHeaderSection(converterContext, headerFacets);
278
359
  }
279
360
 
280
361
  var sections = getSections(converterContext);
281
362
  return {
282
363
  template: TemplateType.ObjectPage,
283
- headerFacets: headerFacets,
284
- headerSection: headerSection,
285
- headerActions: headerActions,
364
+ header: {
365
+ visible: manifestWrapper.getShowObjectPageHeader(),
366
+ section: headerSection,
367
+ facets: headerFacets,
368
+ actions: headerActions,
369
+ showContent: getShowHeaderContent(converterContext),
370
+ hasContent: hasHeaderContent(converterContext),
371
+ avatar: getAvatar(converterContext),
372
+ title: {
373
+ expandedImageVisible: getExpandedImageVisible(converterContext)
374
+ }
375
+ },
286
376
  sections: sections,
287
377
  footerActions: footerActions,
288
- showHeader: manifestWrapper.getShowObjectPageHeader(),
289
378
  showAnchorBar: manifestWrapper.getShowAnchorBar(),
290
379
  useIconTabBar: manifestWrapper.useIconTabBar()
291
380
  };
@@ -294,4 +383,4 @@ sap.ui.define(["../ManifestSettings", "../controls/ObjectPage/SubSection", "../c
294
383
  _exports.convertPage = convertPage;
295
384
  return _exports;
296
385
  }, false);
297
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk9iamVjdFBhZ2VDb252ZXJ0ZXIudHMiXSwibmFtZXMiOlsiZ2V0U2VjdGlvbktleSIsImZhY2V0RGVmaW5pdGlvbiIsImZhbGxiYWNrIiwiSUQiLCJ0b1N0cmluZyIsIkxhYmVsIiwiY3JlYXRlRWRpdGFibGVIZWFkZXJTZWN0aW9uIiwiY29udmVydGVyQ29udGV4dCIsImFsbEhlYWRlckZhY2V0cyIsImVkaXRhYmxlSGVhZGVyU2VjdGlvbklEIiwiRWRpdGFibGVIZWFkZXJTZWN0aW9uSUQiLCJoZWFkZXJGYWNldHMiLCJnZXRFbnRpdHlUeXBlIiwiYW5ub3RhdGlvbnMiLCJVSSIsIkhlYWRlckZhY2V0cyIsImhlYWRlcmZhY2V0U3ViU2VjdGlvbnMiLCJjcmVhdGVTdWJTZWN0aW9ucyIsImN1c3RvbUhlYWRlckZhY2V0U3ViU2VjdGlvbnMiLCJjcmVhdGVDdXN0b21IZWFkZXJGYWNldFN1YlNlY3Rpb25zIiwiYWxsSGVhZGVyRmFjZXRzU3ViU2VjdGlvbnMiLCJsZW5ndGgiLCJpIiwiZm9yRWFjaCIsIml0ZW0iLCJ2aXNpYmxlIiwicHVzaCIsImtleSIsInNsaWNlIiwibGFzdEluZGV4T2YiLCJjdXN0b21JdGVtIiwiaGVhZGVyU2VjdGlvbiIsImlkIiwidGl0bGUiLCJzdWJTZWN0aW9ucyIsImdldFNlY3Rpb25zRnJvbUFubm90YXRpb24iLCJlbnRpdHlUeXBlIiwib2JqZWN0UGFnZVNlY3Rpb25zIiwiRmFjZXRzIiwibWFwIiwiZ2V0U2VjdGlvbkZyb21Bbm5vdGF0aW9uIiwiZmFjZXQiLCJzZWN0aW9uSUQiLCJTZWN0aW9uSUQiLCJGYWNldCIsInNlY3Rpb24iLCJjb21waWxlQmluZGluZyIsImFubm90YXRpb25FeHByZXNzaW9uIiwic2hvd1RpdGxlIiwibm90IiwiZXF1YWwiLCJIaWRkZW4iLCJ2YWx1ZU9mIiwiZ2V0U2VjdGlvbnNGcm9tTWFuaWZlc3QiLCJtYW5pZmVzdFNlY3Rpb25zIiwic2VjdGlvbnMiLCJPYmplY3QiLCJrZXlzIiwibWFuaWZlc3RTZWN0aW9uS2V5IiwiZ2V0U2VjdGlvbkZyb21NYW5pZmVzdCIsImN1c3RvbVNlY3Rpb25EZWZpbml0aW9uIiwic2VjdGlvbktleSIsImN1c3RvbVNlY3Rpb25JRCIsIkN1c3RvbVNlY3Rpb25JRCIsInBvc2l0aW9uIiwicGxhY2VtZW50IiwiUGxhY2VtZW50IiwiQWZ0ZXIiLCJtYW5pZmVzdFN1YlNlY3Rpb25zIiwidW5kZWZpbmVkIiwiY3JlYXRlQ3VzdG9tU3ViU2VjdGlvbnMiLCJjdXN0b21TZWN0aW9uIiwiaW5zZXJ0Q3VzdG9tRWxlbWVudHMiLCJnZXRIZWFkZXJBY3Rpb25zIiwiYUFubm90YXRpb25IZWFkZXJBY3Rpb25zIiwiZ2V0SGVhZGVyRGVmYXVsdEFjdGlvbnMiLCJtYW5pZmVzdFdyYXBwZXIiLCJnZXRNYW5pZmVzdFdyYXBwZXIiLCJoZWFkZXJBY3Rpb25zIiwiZ2V0QWN0aW9uc0Zyb21NYW5pZmVzdCIsImdldEhpZGRlbkhlYWRlckFjdGlvbnMiLCJpc05hdmlnYWJsZSIsImVuYWJsZWQiLCJkZWZhdWx0VmFsdWVzRXh0ZW5zaW9uRnVuY3Rpb24iLCJyZW1vdmVEdXBsaWNhdGVBY3Rpb25zIiwiZ2V0Rm9vdGVyQWN0aW9ucyIsImFBbm5vdGF0aW9uRm9vdGVyQWN0aW9ucyIsImdldEZvb3RlckRlZmF1bHRBY3Rpb25zIiwiZ2V0Vmlld0xldmVsIiwiZm9vdGVyQWN0aW9ucyIsImdldFNlY3Rpb25zIiwiY29udmVydFBhZ2UiLCJnZXRIZWFkZXJGYWNldHNGcm9tQW5ub3RhdGlvbnMiLCJnZXRIZWFkZXJGYWNldHNGcm9tTWFuaWZlc3QiLCJnZXRIZWFkZXJGYWNldHMiLCJpc0hlYWRlckVkaXRhYmxlIiwiSGVhZGVySW5mbyIsInRlbXBsYXRlIiwiVGVtcGxhdGVUeXBlIiwiT2JqZWN0UGFnZSIsInNob3dIZWFkZXIiLCJnZXRTaG93T2JqZWN0UGFnZUhlYWRlciIsInNob3dBbmNob3JCYXIiLCJnZXRTaG93QW5jaG9yQmFyIiwidXNlSWNvblRhYkJhciJdLCJtYXBwaW5n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QUFLTnZCLE1BQUFBLFFBQVEsRUFBRUEsUUFMSjtBQU1Oa0MsTUFBQUEsYUFBYSxFQUFFQSxhQU5UO0FBT05XLE1BQUFBLFVBQVUsRUFBRXhCLGVBQWUsQ0FBQ3lCLHVCQUFoQixFQVBOO0FBUU5DLE1BQUFBLGFBQWEsRUFBRTFCLGVBQWUsQ0FBQzJCLGdCQUFoQixFQVJUO0FBU05DLE1BQUFBLGFBQWEsRUFBRTVCLGVBQWUsQ0FBQzRCLGFBQWhCO0FBVFQsS0FBUDtBQVdBLEdBakNNIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGYWNldFR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgeyBNYW5pZmVzdFNlY3Rpb24sIE1hbmlmZXN0U3ViU2VjdGlvbiwgVGVtcGxhdGVUeXBlIH0gZnJvbSBcIi4uL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IFBhZ2VEZWZpbml0aW9uIH0gZnJvbSBcIi4uL1RlbXBsYXRlQ29udmVydGVyXCI7XG5pbXBvcnQgeyBFbnRpdHlUeXBlIH0gZnJvbSBcIkBzYXAtdXgvYW5ub3RhdGlvbi1jb252ZXJ0ZXJcIjtcbmltcG9ydCB7XG5cdGNyZWF0ZUN1c3RvbVN1YlNlY3Rpb25zLFxuXHRjcmVhdGVTdWJTZWN0aW9ucyxcblx0Y3JlYXRlQ3VzdG9tSGVhZGVyRmFjZXRTdWJTZWN0aW9ucyxcblx0Q3VzdG9tT2JqZWN0UGFnZVNlY3Rpb24sXG5cdEN1c3RvbU9iamVjdFBhZ2VTdWJTZWN0aW9uLFxuXHRPYmplY3RQYWdlU2VjdGlvbixcblx0T2JqZWN0UGFnZVN1YlNlY3Rpb25cbn0gZnJvbSBcIi4uL2NvbnRyb2xzL09iamVjdFBhZ2UvU3ViU2VjdGlvblwiO1xuaW1wb3J0IHsgZ2V0SGVhZGVyRmFjZXRzRnJvbUFubm90YXRpb25zLCBnZXRIZWFkZXJGYWNldHNGcm9tTWFuaWZlc3QsIE9iamVjdFBhZ2VIZWFkZXJGYWNldCB9IGZyb20gXCIuLi9jb250cm9scy9PYmplY3RQYWdlL0hlYWRlckZhY2V0XCI7XG5pbXBvcnQgeyBDdXN0b21TZWN0aW9uSUQsIEVkaXRhYmxlSGVhZGVyU2VjdGlvbklELCBTZWN0aW9uSUQgfSBmcm9tIFwiLi4vaGVscGVycy9JRFwiO1xuaW1wb3J0IHsgQ29uZmlndXJhYmxlUmVjb3JkLCBpbnNlcnRDdXN0b21FbGVtZW50cywgUGxhY2VtZW50LCBQb3NpdGlvbiB9IGZyb20gXCIuLi9oZWxwZXJzL0NvbmZpZ3VyYWJsZU9iamVjdFwiO1xuaW1wb3J0IHsgQmFzZUFjdGlvbiwgZ2V0QWN0aW9uc0Zyb21NYW5pZmVzdCwgcmVtb3ZlRHVwbGljYXRlQWN0aW9ucyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9BY3Rpb25cIjtcbmltcG9ydCB7XG5cdGdldEhlYWRlckRlZmF1bHRBY3Rpb25zLFxuXHRnZXRGb290ZXJEZWZhdWx0QWN0aW9ucyxcblx0Z2V0SGlkZGVuSGVhZGVyQWN0aW9uc1xufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9vYmplY3RQYWdlL0hlYWRlckFuZEZvb3RlckFjdGlvblwiO1xuaW1wb3J0IHsgYW5ub3RhdGlvbkV4cHJlc3Npb24sIGNvbXBpbGVCaW5kaW5nLCBlcXVhbCwgbm90IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ0V4cHJlc3Npb25cIjtcbmltcG9ydCBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCIuLi9Db252ZXJ0ZXJDb250ZXh0XCI7XG5cbmV4cG9ydCB0eXBlIE9iamVjdFBhZ2VEZWZpbml0aW9uID0gUGFnZURlZmluaXRpb24gJiB7XG5cdGhlYWRlckZhY2V0czogT2JqZWN0UGFnZUhlYWRlckZhY2V0W107XG5cdGhlYWRlclNlY3Rpb24/OiBPYmplY3RQYWdlU2VjdGlvbjtcblx0aGVhZGVyQWN0aW9uczogQmFzZUFjdGlvbltdO1xuXHRzZWN0aW9uczogT2JqZWN0UGFnZVNlY3Rpb25bXTtcblx0Zm9vdGVyQWN0aW9uczogQmFzZUFjdGlvbltdO1xuXHRzaG93SGVhZGVyOiBib29sZWFuO1xuXHRzaG93QW5jaG9yQmFyOiBib29sZWFuO1xuXHR1c2VJY29uVGFiQmFyOiBib29sZWFuO1xufTtcblxuY29uc3QgZ2V0U2VjdGlvbktleSA9IChmYWNldERlZmluaXRpb246IEZhY2V0VHlwZXMsIGZhbGxiYWNrOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuXHRyZXR1cm4gZmFjZXREZWZpbml0aW9uLklEPy50b1N0cmluZygpIHx8IGZhY2V0RGVmaW5pdGlvbi5MYWJlbD8udG9TdHJpbmcoKSB8fCBmYWxsYmFjaztcbn07XG5cbi8qKlxuICogQ3JlYXRlcyBhIHNlY3Rpb24gdGhhdCByZXByZXNlbnRzIHRoZSBlZGl0YWJsZSBoZWFkZXIgcGFydDsgaXQgaXMgb25seSB2aXNpYmxlIGluIGVkaXQgbW9kZS5cbiAqXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHRcbiAqIEBwYXJhbSBhbGxIZWFkZXJGYWNldHMgVGhlIGNvbnZlcnRlciBjb250ZXh0XG4gKiBAcmV0dXJucyB7T2JqZWN0UGFnZVNlY3Rpb259IFRoZSBzZWN0aW9uIHJlcHJlc2VudGluZyB0aGUgZWRpdGFibGUgaGVhZGVyIHBhcnRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFZGl0YWJsZUhlYWRlclNlY3Rpb24oXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdGFsbEhlYWRlckZhY2V0czogT2JqZWN0UGFnZUhlYWRlckZhY2V0W11cbik6IE9iamVjdFBhZ2VTZWN0aW9uIHtcblx0Y29uc3QgZWRpdGFibGVIZWFkZXJTZWN0aW9uSUQgPSBFZGl0YWJsZUhlYWRlclNlY3Rpb25JRCgpO1xuXHRjb25zdCBoZWFkZXJGYWNldHMgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKS5hbm5vdGF0aW9ucz8uVUk/LkhlYWRlckZhY2V0cztcblx0Y29uc3QgaGVhZGVyZmFjZXRTdWJTZWN0aW9ucyA9IGhlYWRlckZhY2V0cyA/IGNyZWF0ZVN1YlNlY3Rpb25zKGhlYWRlckZhY2V0cywgY29udmVydGVyQ29udGV4dCwgdHJ1ZSkgOiBbXTtcblx0Y29uc3QgY3VzdG9tSGVhZGVyRmFjZXRTdWJTZWN0aW9ucyA9IGNyZWF0ZUN1c3RvbUhlYWRlckZhY2V0U3ViU2VjdGlvbnMoY29udmVydGVyQ29udGV4dCk7XG5cdGxldCBhbGxIZWFkZXJGYWNldHNTdWJTZWN0aW9uczogT2JqZWN0UGFnZVN1YlNlY3Rpb25bXSA9IFtdO1xuXHRpZiAoY3VzdG9tSGVhZGVyRmFjZXRTdWJTZWN0aW9ucy5sZW5ndGggPiAwKSB7XG5cdFx0Ly8gbWVyZ2UgYW5ub3RhdGlvbiBiYXNlZCBoZWFkZXIgZmFjZXRzIGFuZCBjdXN0b20gaGVhZGVyIGZhY2V0cyBpbiB0aGUgcmlnaHQgb3JkZXJcblx0XHRsZXQgaSA9IDA7XG5cdFx0YWxsSGVhZGVyRmFjZXRzLmZvckVhY2goZnVuY3Rpb24oaXRlbSkge1xuXHRcdFx0Ly8gaGlkZGVuIGhlYWRlciBmYWNldHMgYXJlIG5vdCBpbmNsdWRlZCBpbiBhbGxIZWFkZXJGYWNldHMgYXJyYXkgPT4gYWRkIHRoZW0gYW55d2F5XG5cdFx0XHR3aGlsZSAoaGVhZGVyZmFjZXRTdWJTZWN0aW9ucy5sZW5ndGggPiBpICYmIGhlYWRlcmZhY2V0U3ViU2VjdGlvbnNbaV0udmlzaWJsZSA9PT0gXCJmYWxzZVwiKSB7XG5cdFx0XHRcdGFsbEhlYWRlckZhY2V0c1N1YlNlY3Rpb25zLnB1c2goaGVhZGVyZmFjZXRTdWJTZWN0aW9uc1tpXSk7XG5cdFx0XHRcdGkrKztcblx0XHRcdH1cblx0XHRcdGlmIChcblx0XHRcdFx0aGVhZGVyZmFjZXRTdWJTZWN0aW9ucy5sZW5ndGggPiBpICYmXG5cdFx0XHRcdChpdGVtLmtleSA9PT0gaGVhZGVyZmFjZXRTdWJTZWN0aW9uc1tpXS5rZXkgfHxcblx0XHRcdFx0XHQvLyBmb3IgaGVhZGVyIGZhY2V0cyB3aXRoIG5vIGlkIHRoZSBrZXlzIG9mIGhlYWRlciBmYWNldCBhbmQgc3Vic2VjdGlvbiBhcmUgZGlmZmVyZW50ID0+IGNoZWNrIG9ubHkgdGhlIGxhc3QgcGFydFxuXHRcdFx0XHRcdGl0ZW0ua2V5LnNsaWNlKGl0ZW0ua2V5Lmxhc3RJbmRleE9mKFwiOjpcIikgKyAyKSA9PT1cblx0XHRcdFx0XHRcdGhlYWRlcmZhY2V0U3ViU2VjdGlvbnNbaV0ua2V5LnNsaWNlKGhlYWRlcmZhY2V0U3ViU2VjdGlvbnNbaV0ua2V5Lmxhc3RJbmRleE9mKFwiOjpcIikgKyAyKSlcblx0XHRcdCkge1xuXHRcdFx0XHRhbGxIZWFkZXJGYWNldHNTdWJTZWN0aW9ucy5wdXNoKGhlYWRlcmZhY2V0U3ViU2VjdGlvbnNbaV0pO1xuXHRcdFx0XHRpKys7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjdXN0b21IZWFkZXJGYWNldFN1YlNlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24oY3VzdG9tSXRlbSkge1xuXHRcdFx0XHRcdGlmIChpdGVtLmtleSA9PT0gY3VzdG9tSXRlbS5rZXkpIHtcblx0XHRcdFx0XHRcdGFsbEhlYWRlckZhY2V0c1N1YlNlY3Rpb25zLnB1c2goY3VzdG9tSXRlbSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHRhbGxIZWFkZXJGYWNldHNTdWJTZWN0aW9ucyA9IGhlYWRlcmZhY2V0U3ViU2VjdGlvbnM7XG5cdH1cblx0Y29uc3QgaGVhZGVyU2VjdGlvbjogT2JqZWN0UGFnZVNlY3Rpb24gPSB7XG5cdFx0aWQ6IGVkaXRhYmxlSGVhZGVyU2VjdGlvbklELFxuXHRcdGtleTogXCJFZGl0YWJsZUhlYWRlckNvbnRlbnRcIixcblx0XHR0aXRsZTogXCJ7c2FwLmZlLmkxOG4+VF9DT01NT05fT0JKRUNUX1BBR0VfSEVBREVSX1NFQ1RJT059XCIsXG5cdFx0dmlzaWJsZTogXCJ7PSAke3VpPi9lZGl0TW9kZX0gPT09ICdFZGl0YWJsZScgfVwiLFxuXHRcdHN1YlNlY3Rpb25zOiBhbGxIZWFkZXJGYWNldHNTdWJTZWN0aW9uc1xuXHR9O1xuXHRyZXR1cm4gaGVhZGVyU2VjdGlvbjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgZGVmaW5pdGlvbiBmb3IgYSBzZWN0aW9uIGJhc2VkIG9uIHRoZSBGYWNldCBhbm5vdGF0aW9uLlxuICpcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0IFRoZSBjb252ZXJ0ZXIgY29udGV4dFxuICogQHJldHVybnMge09iamVjdFBhZ2VTZWN0aW9uW119IEFsbCBzZWN0aW9uc1xuICovXG5mdW5jdGlvbiBnZXRTZWN0aW9uc0Zyb21Bbm5vdGF0aW9uKGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBPYmplY3RQYWdlU2VjdGlvbltdIHtcblx0Y29uc3QgZW50aXR5VHlwZSA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpO1xuXHRjb25zdCBvYmplY3RQYWdlU2VjdGlvbnM6IE9iamVjdFBhZ2VTZWN0aW9uW10gPVxuXHRcdGVudGl0eVR5cGUuYW5ub3RhdGlvbnM/LlVJPy5GYWNldHM/Lm1hcCgoZmFjZXREZWZpbml0aW9uOiBGYWNldFR5cGVzKSA9PlxuXHRcdFx0Z2V0U2VjdGlvbkZyb21Bbm5vdGF0aW9uKGZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dClcblx0XHQpIHx8IFtdO1xuXHRyZXR1cm4gb2JqZWN0UGFnZVNlY3Rpb25zO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhbiBhbm5vdGF0aW9uIGJhc2VkIHNlY3Rpb24uXG4gKlxuICogQHBhcmFtIGZhY2V0XG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dFxuICogQHJldHVybnMge09iamVjdFBhZ2VTZWN0aW9ufSBUaGUgY3VycmVudCBzZWN0aW9uXG4gKi9cbmZ1bmN0aW9uIGdldFNlY3Rpb25Gcm9tQW5ub3RhdGlvbihmYWNldDogRmFjZXRUeXBlcywgY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCk6IE9iamVjdFBhZ2VTZWN0aW9uIHtcblx0Y29uc3Qgc2VjdGlvbklEID0gU2VjdGlvbklEKHsgRmFjZXQ6IGZhY2V0IH0pO1xuXHRjb25zdCBzZWN0aW9uOiBPYmplY3RQYWdlU2VjdGlvbiA9IHtcblx0XHRpZDogc2VjdGlvbklELFxuXHRcdGtleTogZ2V0U2VjdGlvbktleShmYWNldCwgc2VjdGlvbklEKSxcblx0XHR0aXRsZTogY29tcGlsZUJpbmRpbmcoYW5ub3RhdGlvbkV4cHJlc3Npb24oZmFjZXQuTGFiZWwpKSxcblx0XHRzaG93VGl0bGU6ICEhZmFjZXQuTGFiZWwsXG5cdFx0dmlzaWJsZTogY29tcGlsZUJpbmRpbmcobm90KGVxdWFsKGFubm90YXRpb25FeHByZXNzaW9uKGZhY2V0LmFubm90YXRpb25zPy5VST8uSGlkZGVuPy52YWx1ZU9mKCkpLCB0cnVlKSkpLFxuXHRcdHN1YlNlY3Rpb25zOiBjcmVhdGVTdWJTZWN0aW9ucyhbZmFjZXRdLCBjb252ZXJ0ZXJDb250ZXh0KVxuXHR9O1xuXHRyZXR1cm4gc2VjdGlvbjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHNlY3Rpb24gZGVmaW5pdGlvbiBiYXNlZCBvbiBtYW5pZmVzdCBkZWZpbml0aW9uLlxuICogQHBhcmFtIG1hbmlmZXN0U2VjdGlvbnMgVGhlIG1hbmlmZXN0IGRlZmluZWQgc2VjdGlvbnNcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcmV0dXJucyB7UmVjb3JkPHN0cmluZywgQ3VzdG9tT2JqZWN0UGFnZVNlY3Rpb24+fSBUaGUgbWFuaWZlc3QgZGVmaW5lZCBzZWN0aW9uc1xuICovXG5mdW5jdGlvbiBnZXRTZWN0aW9uc0Zyb21NYW5pZmVzdChcblx0bWFuaWZlc3RTZWN0aW9uczogQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0U2VjdGlvbj4sXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHRcbik6IFJlY29yZDxzdHJpbmcsIEN1c3RvbU9iamVjdFBhZ2VTZWN0aW9uPiB7XG5cdGNvbnN0IHNlY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21PYmplY3RQYWdlU2VjdGlvbj4gPSB7fTtcblx0T2JqZWN0LmtleXMobWFuaWZlc3RTZWN0aW9ucykuZm9yRWFjaChtYW5pZmVzdFNlY3Rpb25LZXkgPT4ge1xuXHRcdHNlY3Rpb25zW21hbmlmZXN0U2VjdGlvbktleV0gPSBnZXRTZWN0aW9uRnJvbU1hbmlmZXN0KG1hbmlmZXN0U2VjdGlvbnNbbWFuaWZlc3RTZWN0aW9uS2V5XSwgbWFuaWZlc3RTZWN0aW9uS2V5LCBjb252ZXJ0ZXJDb250ZXh0KTtcblx0fSk7XG5cdHJldHVybiBzZWN0aW9ucztcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBtYW5pZmVzdCBiYXNlZCBjdXN0b20gc2VjdGlvbi5cbiAqIEBwYXJhbSBjdXN0b21TZWN0aW9uRGVmaW5pdGlvblxuICogQHBhcmFtIHNlY3Rpb25LZXlcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcmV0dXJucyB7Q3VzdG9tT2JqZWN0UGFnZVNlY3Rpb259IFRoZSBjdXJyZW50IGN1c3RvbSBzZWN0aW9uXG4gKi9cbmZ1bmN0aW9uIGdldFNlY3Rpb25Gcm9tTWFuaWZlc3QoXG5cdGN1c3RvbVNlY3Rpb25EZWZpbml0aW9uOiBNYW5pZmVzdFNlY3Rpb24sXG5cdHNlY3Rpb25LZXk6IHN0cmluZyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dFxuKTogQ3VzdG9tT2JqZWN0UGFnZVNlY3Rpb24ge1xuXHRjb25zdCBjdXN0b21TZWN0aW9uSUQgPSBjdXN0b21TZWN0aW9uRGVmaW5pdGlvbi5pZCB8fCBDdXN0b21TZWN0aW9uSUQoc2VjdGlvbktleSk7XG5cdGxldCBwb3NpdGlvbjogUG9zaXRpb24gfCB1bmRlZmluZWQgPSBjdXN0b21TZWN0aW9uRGVmaW5pdGlvbi5wb3NpdGlvbjtcblx0aWYgKCFwb3NpdGlvbikge1xuXHRcdHBvc2l0aW9uID0ge1xuXHRcdFx0cGxhY2VtZW50OiBQbGFjZW1lbnQuQWZ0ZXJcblx0XHR9O1xuXHR9XG5cdGxldCBtYW5pZmVzdFN1YlNlY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBNYW5pZmVzdFN1YlNlY3Rpb24+O1xuXHRpZiAoIWN1c3RvbVNlY3Rpb25EZWZpbml0aW9uLnN1YlNlY3Rpb25zKSB7XG5cdFx0Ly8gSWYgdGhlcmUgaXMgbm8gc3ViU2VjdGlvbiBkZWZpbmVkLCB3ZSBhZGQgdGhlIGNvbnRlbnQgb2YgdGhlIGN1c3RvbSBzZWN0aW9uIGFzIHN1YnNlY3Rpb25zXG5cdFx0Ly8gYW5kIG1ha2Ugc3VyZSB0byBzZXQgdGhlIHZpc2liaWxpdHkgdG8gJ3RydWUnLCBhcyB0aGUgYWN0dWFsIHZpc2liaWxpdHkgaXMgaGFuZGxlZCBieSB0aGUgc2VjdGlvbiBpdHNlbGZcblx0XHRtYW5pZmVzdFN1YlNlY3Rpb25zID0ge1xuXHRcdFx0W3NlY3Rpb25LZXldOiB7XG5cdFx0XHRcdC4uLmN1c3RvbVNlY3Rpb25EZWZpbml0aW9uLFxuXHRcdFx0XHRwb3NpdGlvbjogdW5kZWZpbmVkLFxuXHRcdFx0XHR2aXNpYmxlOiB0cnVlXG5cdFx0XHR9XG5cdFx0fTtcblx0fSBlbHNlIHtcblx0XHRtYW5pZmVzdFN1YlNlY3Rpb25zID0gY3VzdG9tU2VjdGlvbkRlZmluaXRpb24uc3ViU2VjdGlvbnM7XG5cdH1cblx0Y29uc3Qgc3ViU2VjdGlvbnMgPSBjcmVhdGVDdXN0b21TdWJTZWN0aW9ucyhtYW5pZmVzdFN1YlNlY3Rpb25zLCBjb252ZXJ0ZXJDb250ZXh0KTtcblxuXHRjb25zdCBjdXN0b21TZWN0aW9uOiBDdXN0b21PYmplY3RQYWdlU2VjdGlvbiA9IHtcblx0XHRpZDogY3VzdG9tU2VjdGlvbklELFxuXHRcdGtleTogc2VjdGlvbktleSxcblx0XHR0aXRsZTogY3VzdG9tU2VjdGlvbkRlZmluaXRpb24udGl0bGUsXG5cdFx0c2hvd1RpdGxlOiAhIWN1c3RvbVNlY3Rpb25EZWZpbml0aW9uLnRpdGxlLFxuXHRcdHZpc2libGU6IGN1c3RvbVNlY3Rpb25EZWZpbml0aW9uLnZpc2libGUgIT09IHVuZGVmaW5lZCA/IGN1c3RvbVNlY3Rpb25EZWZpbml0aW9uLnZpc2libGUgOiB0cnVlLFxuXHRcdHBvc2l0aW9uOiBwb3NpdGlvbixcblx0XHRzdWJTZWN0aW9uczogaW5zZXJ0Q3VzdG9tRWxlbWVudHMoW10gYXMgQ3VzdG9tT2JqZWN0UGFnZVN1YlNlY3Rpb25bXSwgc3ViU2VjdGlvbnMsIHsgXCJ0aXRsZVwiOiBcIm92ZXJ3cml0ZVwiLCBcImFjdGlvbnNcIjogXCJtZXJnZVwiIH0pXG5cdH07XG5cdHJldHVybiBjdXN0b21TZWN0aW9uO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgT2JqZWN0UGFnZSBoZWFkZXIgYWN0aW9ucyAoYm90aCB0aGUgZGVmYXVsdCBvbmVzIGFuZCB0aGUgY3VzdG9tIG9uZXMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QpLlxuICpcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcmV0dXJucyBBbiBhcnJheSBjb250YWluaW5nIGFsbCB0aGUgYWN0aW9ucyBmb3IgdGhpcyBPYmplY3RQYWdlIGhlYWRlclxuICovXG5leHBvcnQgY29uc3QgZ2V0SGVhZGVyQWN0aW9ucyA9IGZ1bmN0aW9uKGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBCYXNlQWN0aW9uW10ge1xuXHRjb25zdCBhQW5ub3RhdGlvbkhlYWRlckFjdGlvbnM6IEJhc2VBY3Rpb25bXSA9IGdldEhlYWRlckRlZmF1bHRBY3Rpb25zKGNvbnZlcnRlckNvbnRleHQpO1xuXHRjb25zdCBtYW5pZmVzdFdyYXBwZXIgPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpO1xuXHRjb25zdCBoZWFkZXJBY3Rpb25zID0gaW5zZXJ0Q3VzdG9tRWxlbWVudHMoXG5cdFx0YUFubm90YXRpb25IZWFkZXJBY3Rpb25zLFxuXHRcdGdldEFjdGlvbnNGcm9tTWFuaWZlc3QoXG5cdFx0XHRtYW5pZmVzdFdyYXBwZXIuZ2V0SGVhZGVyQWN0aW9ucygpLFxuXHRcdFx0Y29udmVydGVyQ29udGV4dCxcblx0XHRcdGFBbm5vdGF0aW9uSGVhZGVyQWN0aW9ucyxcblx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdGdldEhpZGRlbkhlYWRlckFjdGlvbnMoY29udmVydGVyQ29udGV4dClcblx0XHQpLFxuXHRcdHsgaXNOYXZpZ2FibGU6IFwib3ZlcndyaXRlXCIsIGVuYWJsZWQ6IFwib3ZlcndyaXRlXCIsIGRlZmF1bHRWYWx1ZXNFeHRlbnNpb25GdW5jdGlvbjogXCJvdmVyd3JpdGVcIiB9XG5cdCk7XG5cdHJldHVybiByZW1vdmVEdXBsaWNhdGVBY3Rpb25zKGhlYWRlckFjdGlvbnMpO1xufTtcblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIE9iamVjdFBhZ2UgZm9vdGVyIGFjdGlvbnMgKGJvdGggdGhlIGRlZmF1bHQgb25lcyBhbmQgdGhlIGN1c3RvbSBvbmVzIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0KS5cbiAqXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dFxuICogQHJldHVybnMgQW4gYXJyYXkgY29udGFpbmluZyBhbGwgdGhlIGFjdGlvbnMgZm9yIHRoaXMgT2JqZWN0UGFnZSBmb290ZXJcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEZvb3RlckFjdGlvbnMgPSBmdW5jdGlvbihjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0KTogQmFzZUFjdGlvbltdIHtcblx0Y29uc3QgbWFuaWZlc3RXcmFwcGVyID0gY29udmVydGVyQ29udGV4dC5nZXRNYW5pZmVzdFdyYXBwZXIoKTtcblx0Y29uc3QgYUFubm90YXRpb25Gb290ZXJBY3Rpb25zOiBCYXNlQWN0aW9uW10gPSBnZXRGb290ZXJEZWZhdWx0QWN0aW9ucyhtYW5pZmVzdFdyYXBwZXIuZ2V0Vmlld0xldmVsKCksIGNvbnZlcnRlckNvbnRleHQpO1xuXHRjb25zdCBmb290ZXJBY3Rpb25zID0gaW5zZXJ0Q3VzdG9tRWxlbWVudHMoXG5cdFx0YUFubm90YXRpb25Gb290ZXJBY3Rpb25zLFxuXHRcdGdldEFjdGlvbnNGcm9tTWFuaWZlc3QobWFuaWZlc3RXcmFwcGVyLmdldEZvb3RlckFjdGlvbnMoKSwgY29udmVydGVyQ29udGV4dCwgYUFubm90YXRpb25Gb290ZXJBY3Rpb25zKSxcblx0XHR7IGlzTmF2aWdhYmxlOiBcIm92ZXJ3cml0ZVwiLCBlbmFibGVkOiBcIm92ZXJ3cml0ZVwiLCBkZWZhdWx0VmFsdWVzRXh0ZW5zaW9uRnVuY3Rpb246IFwib3ZlcndyaXRlXCIgfVxuXHQpO1xuXHRyZXR1cm4gZm9vdGVyQWN0aW9ucztcbn07XG5cbi8qKlxuICogUmV0cmlldmVzIGFuZCBtZXJnZXMgdGhlIE9iamVjdFBhZ2Ugc2VjdGlvbnMgZGVmaW5lZCBpbiB0aGUgYW5ub3RhdGlvbiBhbmQgaW4gdGhlIG1hbmlmZXN0LlxuICpcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBzZWN0aW9ucy5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldFNlY3Rpb25zID0gZnVuY3Rpb24oY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCk6IE9iamVjdFBhZ2VTZWN0aW9uW10ge1xuXHRjb25zdCBtYW5pZmVzdFdyYXBwZXIgPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpO1xuXHRyZXR1cm4gaW5zZXJ0Q3VzdG9tRWxlbWVudHMoXG5cdFx0Z2V0U2VjdGlvbnNGcm9tQW5ub3RhdGlvbihjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHRnZXRTZWN0aW9uc0Zyb21NYW5pZmVzdChtYW5pZmVzdFdyYXBwZXIuZ2V0U2VjdGlvbnMoKSwgY29udmVydGVyQ29udGV4dCksXG5cdFx0e1xuXHRcdFx0XCJ0aXRsZVwiOiBcIm92ZXJ3cml0ZVwiLFxuXHRcdFx0XCJ2aXNpYmxlXCI6IFwib3ZlcndyaXRlXCIsXG5cdFx0XHRcInN1YlNlY3Rpb25zXCI6IHtcblx0XHRcdFx0XCJhY3Rpb25zXCI6IFwibWVyZ2VcIixcblx0XHRcdFx0XCJ0aXRsZVwiOiBcIm92ZXJ3cml0ZVwiLFxuXHRcdFx0XHRcInNpZGVDb250ZW50XCI6IFwib3ZlcndyaXRlXCJcblx0XHRcdH1cblx0XHR9XG5cdCk7XG59O1xuXG5leHBvcnQgY29uc3QgY29udmVydFBhZ2UgPSBmdW5jdGlvbihjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0KTogT2JqZWN0UGFnZURlZmluaXRpb24ge1xuXHRjb25zdCBtYW5pZmVzdFdyYXBwZXIgPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpO1xuXHRsZXQgaGVhZGVyU2VjdGlvbjogT2JqZWN0UGFnZVNlY3Rpb24gfCB1bmRlZmluZWQ7XG5cdGNvbnN0IGVudGl0eVR5cGU6IEVudGl0eVR5cGUgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKTtcblx0Ly8gUmV0cmlldmUgYWxsIGhlYWRlciBmYWNldHMgKGZyb20gYW5ub3RhdGlvbnMgJiBjdXN0b20pXG5cdGNvbnN0IGhlYWRlckZhY2V0cyA9IGluc2VydEN1c3RvbUVsZW1lbnRzKFxuXHRcdGdldEhlYWRlckZhY2V0c0Zyb21Bbm5vdGF0aW9ucyhjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHRnZXRIZWFkZXJGYWNldHNGcm9tTWFuaWZlc3QobWFuaWZlc3RXcmFwcGVyLmdldEhlYWRlckZhY2V0cygpKVxuXHQpO1xuXG5cdC8vIFJldHJpZXZlIHRoZSBwYWdlIGhlYWRlciBhY3Rpb25zXG5cdGNvbnN0IGhlYWRlckFjdGlvbnMgPSBnZXRIZWFkZXJBY3Rpb25zKGNvbnZlcnRlckNvbnRleHQpO1xuXG5cdC8vIFJldHJpZXZlIHRoZSBwYWdlIGZvb3RlciBhY3Rpb25zXG5cdGNvbnN0IGZvb3RlckFjdGlvbnMgPSBnZXRGb290ZXJBY3Rpb25zKGNvbnZlcnRlckNvbnRleHQpO1xuXG5cdGlmIChtYW5pZmVzdFdyYXBwZXIuaXNIZWFkZXJFZGl0YWJsZSgpICYmIChlbnRpdHlUeXBlLmFubm90YXRpb25zLlVJPy5IZWFkZXJGYWNldHMgfHwgZW50aXR5VHlwZS5hbm5vdGF0aW9ucy5VST8uSGVhZGVySW5mbykpIHtcblx0XHRoZWFkZXJTZWN0aW9uID0gY3JlYXRlRWRpdGFibGVIZWFkZXJTZWN0aW9uKGNvbnZlcnRlckNvbnRleHQsIGhlYWRlckZhY2V0cyk7XG5cdH1cblxuXHRjb25zdCBzZWN0aW9ucyA9IGdldFNlY3Rpb25zKGNvbnZlcnRlckNvbnRleHQpO1xuXG5cdHJldHVybiB7XG5cdFx0dGVtcGxhdGU6IFRlbXBsYXRlVHlwZS5PYmplY3RQYWdlLFxuXHRcdGhlYWRlckZhY2V0czogaGVhZGVyRmFjZXRzLFxuXHRcdGhlYWRlclNlY3Rpb246IGhlYWRlclNlY3Rpb24sXG5cdFx0aGVhZGVyQWN0aW9uczogaGVhZGVyQWN0aW9ucyxcblx0XHRzZWN0aW9uczogc2VjdGlvbnMsXG5cdFx0Zm9vdGVyQWN0aW9uczogZm9vdGVyQWN0aW9ucyxcblx0XHRzaG93SGVhZGVyOiBtYW5pZmVzdFdyYXBwZXIuZ2V0U2hvd09iamVjdFBhZ2VIZWFkZXIoKSxcblx0XHRzaG93QW5jaG9yQmFyOiBtYW5pZmVzdFdyYXBwZXIuZ2V0U2hvd0FuY2hvckJhcigpLFxuXHRcdHVzZUljb25UYWJCYXI6IG1hbmlmZXN0V3JhcHBlci51c2VJY29uVGFiQmFyKClcblx0fTtcbn07XG4iXX0=
386
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk9iamVjdFBhZ2VDb252ZXJ0ZXIudHMiXSwibmFtZXMiOlsiZ2V0U2VjdGlvbktleSIsImZhY2V0RGVmaW5pdGlvbiIsImZhbGxiYWNrIiwiSUQiLCJ0b1N0cmluZyIsIkxhYmVsIiwiY3JlYXRlRWRpdGFibGVIZWFkZXJTZWN0aW9uIiwiY29udmVydGVyQ29udGV4dCIsImFsbEhlYWRlckZhY2V0cyIsImVkaXRhYmxlSGVhZGVyU2VjdGlvbklEIiwiRWRpdGFibGVIZWFkZXJTZWN0aW9uSUQiLCJoZWFkZXJGYWNldHMiLCJnZXRFbnRpdHlUeXBlIiwiYW5ub3RhdGlvbnMiLCJVSSIsIkhlYWRlckZhY2V0cyIsImhlYWRlcmZhY2V0U3ViU2VjdGlvbnMiLCJjcmVhdGVTdWJTZWN0aW9ucyIsImN1c3RvbUhlYWRlckZhY2V0U3ViU2VjdGlvbnMiLCJjcmVhdGVDdXN0b21IZWFkZXJGYWNldFN1YlNlY3Rpb25zIiwiYWxsSGVhZGVyRmFjZXRzU3ViU2VjdGlvbnMiLCJsZW5ndGgiLCJpIiwiZm9yRWFjaCIsIml0ZW0iLCJ2aXNpYmxlIiwicHVzaCIsImtleSIsInNsaWNlIiwibGFzdEluZGV4T2YiLCJjdXN0b21JdGVtIiwiaGVhZGVyU2VjdGlvbiIsImlkIiwidGl0bGUiLCJzdWJTZWN0aW9ucyIsImdldFNlY3Rpb25zRnJvbUFubm90YXRpb24iLCJlbnRpdHlUeXBlIiwib2JqZWN0UGFnZVNlY3Rpb25zIiwiRmFjZXRzIiwibWFwIiwiZ2V0U2VjdGlvbkZyb21Bbm5vdGF0aW9uIiwiZmFjZXQiLCJzZWN0aW9uSUQiLCJTZWN0aW9uSUQiLCJGYWNldCIsInNlY3Rpb24iLCJjb21waWxlQmluZGluZyIsImFubm90YXRpb25FeHByZXNzaW9uIiwic2hvd1RpdGxlIiwibm90IiwiZXF1YWwiLCJIaWRkZW4iLCJ2YWx1ZU9mIiwiZ2V0U2VjdGlvbnNGcm9tTWFuaWZlc3QiLCJtYW5pZmVzdFNlY3Rpb25zIiwic2VjdGlvbnMiLCJPYmplY3QiLCJrZXlzIiwibWFuaWZlc3RTZWN0aW9uS2V5IiwiZ2V0U2VjdGlvbkZyb21NYW5pZmVzdCIsImN1c3RvbVNlY3Rpb25EZWZpbml0aW9uIiwic2VjdGlvbktleSIsImN1c3RvbVNlY3Rpb25JRCIsIkN1c3RvbVNlY3Rpb25JRCIsInBvc2l0aW9uIiwicGxhY2VtZW50IiwiUGxhY2VtZW50IiwiQWZ0ZXIiLCJtYW5pZmVzdFN1YlNlY3Rpb25zIiwidW5kZWZpbmVkIiwiY3JlYXRlQ3VzdG9tU3ViU2VjdGlvbnMiLCJjdXN0b21TZWN0aW9uIiwiZ2V0SGVhZGVyQWN0aW9ucyIsImFBbm5vdGF0aW9uSGVhZGVyQWN0aW9ucyIsImdldEhlYWRlckRlZmF1bHRBY3Rpb25zIiwibWFuaWZlc3RXcmFwcGVyIiwiZ2V0TWFuaWZlc3RXcmFwcGVyIiwiaGVhZGVyQWN0aW9ucyIsImluc2VydEN1c3RvbUVsZW1lbnRzIiwiZ2V0QWN0aW9uc0Zyb21NYW5pZmVzdCIsImdldEhpZGRlbkhlYWRlckFjdGlvbnMiLCJpc05hdmlnYWJsZSIsImVuYWJsZWQiLCJkZWZhdWx0VmFsdWVzRXh0ZW5zaW9uRnVuY3Rpb24iLCJyZW1vdmVEdXBsaWNhdGVBY3Rpb25zIiwiZ2V0Rm9vdGVyQWN0aW9ucyIsImFBbm5vdGF0aW9uRm9vdGVyQWN0aW9ucyIsImdldEZvb3RlckRlZmF1bHRBY3Rpb25zIiwiZ2V0Vmlld0xldmVsIiwiZm9vdGVyQWN0aW9ucyIsImdldFNlY3Rpb25zIiwic3ViU2VjdGlvbiIsInR5cGUiLCJzaWRlQ29udGVudCIsImNvbnRlbnQiLCJhY3Rpb25zIiwiaGFzSGVhZGVyQ29udGVudCIsImdldEhlYWRlckZhY2V0cyIsImdldFNob3dIZWFkZXJDb250ZW50RXhwcmVzc2lvbiIsImlmRWxzZSIsImNvbnN0YW50IiwiaXNIZWFkZXJFZGl0YWJsZSIsImJpbmRpbmdFeHByZXNzaW9uIiwiZ2V0U2hvd0hlYWRlckNvbnRlbnQiLCJnZXRFeHBhbmRlZEltYWdlVmlzaWJsZSIsImNvbnZlcnRQYWdlIiwiZ2V0SGVhZGVyRmFjZXRzRnJvbUFubm90YXRpb25zIiwiZ2V0SGVhZGVyRmFjZXRzRnJvbU1hbmlmZXN0IiwiSGVhZGVySW5mbyIsInRlbXBsYXRlIiwiVGVtcGxhdGVUeXBlIiwiT2JqZWN0UGFnZSIsImhlYWRlciIsImdldFNob3dPYmplY3RQYWdlSGVhZGVyIiwiZmFjZXRzIiwic2hvd0NvbnRlbnQiLCJoYXNDb250ZW50IiwiYXZhdGFyIiwiZ2V0QXZhdGFyIiwiZXhwYW5kZWRJbWFnZVZpc2libGUiLCJzaG93QW5jaG9yQmFyIiwiZ2V0U2hvd0FuY2hvckJhciIsInVzZUljb25UYWJCYXIiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFEQSxNQUFNQSxhQUFhLEdBQUcsVUFBQ0MsZUFBRCxFQUE4QkMsUUFBOUIsRUFBMkQ7QUFBQTs7QUFDaEYsV0FBTyx3QkFBQUQsZUFBZSxDQUFDRSxFQUFoQiw0RUFBb0JDLFFBQXBCLGlDQUFrQ0gsZUFBZSxDQUFDSSxLQUFsRCwwREFBa0Msc0JBQXVCRCxRQUF2QixFQUFsQyxLQUF1RUYsUUFBOUU7QUFDQSxHQUZEO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLFdBQVNJLDJCQUFULENBQ05DLGdCQURNLEVBRU5DLGVBRk0sRUFHYztBQUFBOztBQUNwQixRQUFNQyx1QkFBdUIsR0FBR0MsdUJBQXVCLEVBQXZEO0FBQ0EsUUFBTUMsWUFBWSw0QkFBR0osZ0JBQWdCLENBQUNLLGFBQWpCLEdBQWlDQyxXQUFwQyxvRkFBRyxzQkFBOENDLEVBQWpELDJEQUFHLHVCQUFrREMsWUFBdkU7QUFDQSxRQUFNQyxzQkFBc0IsR0FBR0wsWUFBWSxHQUFHTSxpQkFBaUIsQ0FBQ04sWUFBRCxFQUFlSixnQkFBZixFQUFpQyxJQUFqQyxDQUFwQixHQUE2RCxFQUF4RztBQUNBLFFBQU1XLDRCQUE0QixHQUFHQyxrQ0FBa0MsQ0FBQ1osZ0JBQUQsQ0FBdkU7QUFDQSxRQUFJYSwwQkFBa0QsR0FBRyxFQUF6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eXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHsgTWFuaWZlc3RTZWN0aW9uLCBNYW5pZmVzdFN1YlNlY3Rpb24sIFRlbXBsYXRlVHlwZSB9IGZyb20gXCIuLi9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBQYWdlRGVmaW5pdGlvbiB9IGZyb20gXCIuLi9UZW1wbGF0ZUNvbnZlcnRlclwiO1xuaW1wb3J0IHsgRW50aXR5VHlwZSB9IGZyb20gXCJAc2FwLXV4L2Fubm90YXRpb24tY29udmVydGVyXCI7XG5pbXBvcnQge1xuXHRjcmVhdGVDdXN0b21TdWJTZWN0aW9ucyxcblx0Y3JlYXRlU3ViU2VjdGlvbnMsXG5cdGNyZWF0ZUN1c3RvbUhlYWRlckZhY2V0U3ViU2VjdGlvbnMsXG5cdEN1c3RvbU9iamVjdFBhZ2VTZWN0aW9uLFxuXHRPYmplY3RQYWdlU2VjdGlvbixcblx0T2JqZWN0UGFnZVN1YlNlY3Rpb24sXG5cdEZvcm1TdWJTZWN0aW9uXG59IGZyb20gXCIuLi9jb250cm9scy9PYmplY3RQYWdlL1N1YlNlY3Rpb25cIjtcbmltcG9ydCB7IGdldEhlYWRlckZhY2V0c0Zyb21Bbm5vdGF0aW9ucywgZ2V0SGVhZGVyRmFjZXRzRnJvbU1hbmlmZXN0LCBPYmplY3RQYWdlSGVhZGVyRmFjZXQgfSBmcm9tIFwiLi4vY29udHJvbHMvT2JqZWN0UGFnZS9IZWFkZXJGYWNldFwiO1xuaW1wb3J0IHsgQ3VzdG9tU2VjdGlvbklELCBFZGl0YWJsZUhlYWRlclNlY3Rpb25JRCwgU2VjdGlvbklEIH0gZnJvbSBcIi4uL2hlbHBlcnMvSURcIjtcbmltcG9ydCB7IENvbmZpZ3VyYWJsZVJlY29yZCwgaW5zZXJ0Q3VzdG9tRWxlbWVudHMsIFBsYWNlbWVudCwgUG9zaXRpb24gfSBmcm9tIFwiLi4vaGVscGVycy9Db25maWd1cmFibGVPYmplY3RcIjtcbmltcG9ydCB7IEJhc2VBY3Rpb24sIGdldEFjdGlvbnNGcm9tTWFuaWZlc3QsIHJlbW92ZUR1cGxpY2F0ZUFjdGlvbnMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vQWN0aW9uXCI7XG5pbXBvcnQge1xuXHRnZXRIZWFkZXJEZWZhdWx0QWN0aW9ucyxcblx0Z2V0Rm9vdGVyRGVmYXVsdEFjdGlvbnMsXG5cdGdldEhpZGRlbkhlYWRlckFjdGlvbnNcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvb2JqZWN0UGFnZS9IZWFkZXJBbmRGb290ZXJBY3Rpb25cIjtcbmltcG9ydCB7IEF2YXRhciwgZ2V0QXZhdGFyIH0gZnJvbSBcIi4uL2NvbnRyb2xzL09iamVjdFBhZ2UvQXZhdGFyXCI7XG5pbXBvcnQge1xuXHRhbm5vdGF0aW9uRXhwcmVzc2lvbixcblx0YmluZGluZ0V4cHJlc3Npb24sXG5cdGNvbXBpbGVCaW5kaW5nLFxuXHRlcXVhbCxcblx0bm90LFxuXHRpZkVsc2UsXG5cdGNvbnN0YW50LFxuXHRCaW5kaW5nRXhwcmVzc2lvbixcblx0RXhwcmVzc2lvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nRXhwcmVzc2lvblwiO1xuaW1wb3J0IENvbnZlcnRlckNvbnRleHQgZnJvbSBcIi4uL0NvbnZlcnRlckNvbnRleHRcIjtcblxuZXhwb3J0IHR5cGUgT2JqZWN0UGFnZURlZmluaXRpb24gPSBQYWdlRGVmaW5pdGlvbiAmIHtcblx0aGVhZGVyOiB7XG5cdFx0dmlzaWJsZTogYm9vbGVhbjtcblx0XHRzZWN0aW9uPzogT2JqZWN0UGFnZVNlY3Rpb247XG5cdFx0ZmFjZXRzOiBPYmplY3RQYWdlSGVhZGVyRmFjZXRbXTtcblx0XHRhY3Rpb25zOiBCYXNlQWN0aW9uW107XG5cdFx0c2hvd0NvbnRlbnQ6IEJpbmRpbmdFeHByZXNzaW9uPGJvb2xlYW4+O1xuXHRcdGhhc0NvbnRlbnQ6IGJvb2xlYW47XG5cdFx0YXZhdGFyPzogQXZhdGFyO1xuXHRcdHRpdGxlOiB7XG5cdFx0XHRleHBhbmRlZEltYWdlVmlzaWJsZTogQmluZGluZ0V4cHJlc3Npb248c3RyaW5nPjtcblx0XHR9O1xuXHR9O1xuXHRzZWN0aW9uczogT2JqZWN0UGFnZVNlY3Rpb25bXTtcblx0Zm9vdGVyQWN0aW9uczogQmFzZUFjdGlvbltdO1xuXHRzaG93QW5jaG9yQmFyOiBib29sZWFuO1xuXHR1c2VJY29uVGFiQmFyOiBib29sZWFuO1xufTtcblxuY29uc3QgZ2V0U2VjdGlvbktleSA9IChmYWNldERlZmluaXRpb246IEZhY2V0VHlwZXMsIGZhbGxiYWNrOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuXHRyZXR1cm4gZmFjZXREZWZpbml0aW9uLklEPy50b1N0cmluZygpIHx8IGZhY2V0RGVmaW5pdGlvbi5MYWJlbD8udG9TdHJpbmcoKSB8fCBmYWxsYmFjaztcbn07XG5cbi8qKlxuICogQ3JlYXRlcyBhIHNlY3Rpb24gdGhhdCByZXByZXNlbnRzIHRoZSBlZGl0YWJsZSBoZWFkZXIgcGFydDsgaXQgaXMgb25seSB2aXNpYmxlIGluIGVkaXQgbW9kZS5cbiAqXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHRcbiAqIEBwYXJhbSBhbGxIZWFkZXJGYWNldHMgVGhlIGNvbnZlcnRlciBjb250ZXh0XG4gKiBAcmV0dXJucyB7T2JqZWN0UGFnZVNlY3Rpb259IFRoZSBzZWN0aW9uIHJlcHJlc2VudGluZyB0aGUgZWRpdGFibGUgaGVhZGVyIHBhcnRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFZGl0YWJsZUhlYWRlclNlY3Rpb24oXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdGFsbEhlYWRlckZhY2V0czogT2JqZWN0UGFnZUhlYWRlckZhY2V0W11cbik6IE9iamVjdFBhZ2VTZWN0aW9uIHtcblx0Y29uc3QgZWRpdGFibGVIZWFkZXJTZWN0aW9uSUQgPSBFZGl0YWJsZUhlYWRlclNlY3Rpb25JRCgpO1xuXHRjb25zdCBoZWFkZXJGYWNldHMgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKS5hbm5vdGF0aW9ucz8uVUk/LkhlYWRlckZhY2V0cztcblx0Y29uc3QgaGVhZGVyZmFjZXRTdWJTZWN0aW9ucyA9IGhlYWRlckZhY2V0cyA/IGNyZWF0ZVN1YlNlY3Rpb25zKGhlYWRlckZhY2V0cywgY29udmVydGVyQ29udGV4dCwgdHJ1ZSkgOiBbXTtcblx0Y29uc3QgY3VzdG9tSGVhZGVyRmFjZXRTdWJTZWN0aW9ucyA9IGNyZWF0ZUN1c3RvbUhlYWRlckZhY2V0U3ViU2VjdGlvbnMoY29udmVydGVyQ29udGV4dCk7XG5cdGxldCBhbGxIZWFkZXJGYWNldHNTdWJTZWN0aW9uczogT2JqZWN0UGFnZVN1YlNlY3Rpb25bXSA9IFtdO1xuXHRpZiAoY3VzdG9tSGVhZGVyRmFjZXRTdWJTZWN0aW9ucy5sZW5ndGggPiAwKSB7XG5cdFx0Ly8gbWVyZ2UgYW5ub3RhdGlvbiBiYXNlZCBoZWFkZXIgZmFjZXRzIGFuZCBjdXN0b20gaGVhZGVyIGZhY2V0cyBpbiB0aGUgcmlnaHQgb3JkZXJcblx0XHRsZXQgaSA9IDA7XG5cdFx0YWxsSGVhZGVyRmFjZXRzLmZvckVhY2goZnVuY3Rpb24oaXRlbSkge1xuXHRcdFx0Ly8gaGlkZGVuIGhlYWRlciBmYWNldHMgYXJlIG5vdCBpbmNsdWRlZCBpbiBhbGxIZWFkZXJGYWNldHMgYXJyYXkgPT4gYWRkIHRoZW0gYW55d2F5XG5cdFx0XHR3aGlsZSAoaGVhZGVyZmFjZXRTdWJTZWN0aW9ucy5sZW5ndGggPiBpICYmIGhlYWRlcmZhY2V0U3ViU2VjdGlvbnNbaV0udmlzaWJsZSA9PT0gXCJmYWxzZVwiKSB7XG5cdFx0XHRcdGFsbEhlYWRlckZhY2V0c1N1YlNlY3Rpb25zLnB1c2goaGVhZGVyZmFjZXRTdWJTZWN0aW9uc1tpXSk7XG5cdFx0XHRcdGkrKztcblx0XHRcdH1cblx0XHRcdGlmIChcblx0XHRcdFx0aGVhZGVyZmFjZXRTdWJTZWN0aW9ucy5sZW5ndGggPiBpICYmXG5cdFx0XHRcdChpdGVtLmtleSA9PT0gaGVhZGVyZmFjZXRTdWJTZWN0aW9uc1tpXS5rZXkgfHxcblx0XHRcdFx0XHQvLyBmb3IgaGVhZGVyIGZhY2V0cyB3aXRoIG5vIGlkIHRoZSBrZXlzIG9mIGhlYWRlciBmYWNldCBhbmQgc3Vic2VjdGlvbiBhcmUgZGlmZmVyZW50ID0+IGNoZWNrIG9ubHkgdGhlIGxhc3QgcGFydFxuXHRcdFx0XHRcdGl0ZW0ua2V5LnNsaWNlKGl0ZW0ua2V5Lmxhc3RJbmRleE9mKFwiOjpcIikgKyAyKSA9PT1cblx0XHRcdFx0XHRcdGhlYWRlcmZhY2V0U3ViU2VjdGlvbnNbaV0ua2V5LnNsaWNlKGhlYWRlcmZhY2V0U3ViU2VjdGlvbnNbaV0ua2V5Lmxhc3RJbmRleE9mKFwiOjpcIikgKyAyKSlcblx0XHRcdCkge1xuXHRcdFx0XHRhbGxIZWFkZXJGYWNldHNTdWJTZWN0aW9ucy5wdXNoKGhlYWRlcmZhY2V0U3ViU2VjdGlvbnNbaV0pO1xuXHRcdFx0XHRpKys7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjdXN0b21IZWFkZXJGYWNldFN1YlNlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24oY3VzdG9tSXRlbSkge1xuXHRcdFx0XHRcdGlmIChpdGVtLmtleSA9PT0gY3VzdG9tSXRlbS5rZXkpIHtcblx0XHRcdFx0XHRcdGFsbEhlYWRlckZhY2V0c1N1YlNlY3Rpb25zLnB1c2goY3VzdG9tSXRlbSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHRhbGxIZWFkZXJGYWNldHNTdWJTZWN0aW9ucyA9IGhlYWRlcmZhY2V0U3ViU2VjdGlvbnM7XG5cdH1cblx0Y29uc3QgaGVhZGVyU2VjdGlvbjogT2JqZWN0UGFnZVNlY3Rpb24gPSB7XG5cdFx0aWQ6IGVkaXRhYmxlSGVhZGVyU2VjdGlvbklELFxuXHRcdGtleTogXCJFZGl0YWJsZUhlYWRlckNvbnRlbnRcIixcblx0XHR0aXRsZTogXCJ7c2FwLmZlLmkxOG4+VF9DT01NT05fT0JKRUNUX1BBR0VfSEVBREVSX1NFQ1RJT059XCIsXG5cdFx0dmlzaWJsZTogXCJ7PSAke3VpPi9lZGl0TW9kZX0gPT09ICdFZGl0YWJsZScgfVwiLFxuXHRcdHN1YlNlY3Rpb25zOiBhbGxIZWFkZXJGYWNldHNTdWJTZWN0aW9uc1xuXHR9O1xuXHRyZXR1cm4gaGVhZGVyU2VjdGlvbjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgZGVmaW5pdGlvbiBmb3IgYSBzZWN0aW9uIGJhc2VkIG9uIHRoZSBGYWNldCBhbm5vdGF0aW9uLlxuICpcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0IFRoZSBjb252ZXJ0ZXIgY29udGV4dFxuICogQHJldHVybnMge09iamVjdFBhZ2VTZWN0aW9uW119IEFsbCBzZWN0aW9uc1xuICovXG5mdW5jdGlvbiBnZXRTZWN0aW9uc0Zyb21Bbm5vdGF0aW9uKGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBPYmplY3RQYWdlU2VjdGlvbltdIHtcblx0Y29uc3QgZW50aXR5VHlwZSA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpO1xuXHRjb25zdCBvYmplY3RQYWdlU2VjdGlvbnM6IE9iamVjdFBhZ2VTZWN0aW9uW10gPVxuXHRcdGVudGl0eVR5cGUuYW5ub3RhdGlvbnM/LlVJPy5GYWNldHM/Lm1hcCgoZmFjZXREZWZpbml0aW9uOiBGYWNldFR5cGVzKSA9PlxuXHRcdFx0Z2V0U2VjdGlvbkZyb21Bbm5vdGF0aW9uKGZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dClcblx0XHQpIHx8IFtdO1xuXHRyZXR1cm4gb2JqZWN0UGFnZVNlY3Rpb25zO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhbiBhbm5vdGF0aW9uIGJhc2VkIHNlY3Rpb24uXG4gKlxuICogQHBhcmFtIGZhY2V0XG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dFxuICogQHJldHVybnMge09iamVjdFBhZ2VTZWN0aW9ufSBUaGUgY3VycmVudCBzZWN0aW9uXG4gKi9cbmZ1bmN0aW9uIGdldFNlY3Rpb25Gcm9tQW5ub3RhdGlvbihmYWNldDogRmFjZXRUeXBlcywgY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCk6IE9iamVjdFBhZ2VTZWN0aW9uIHtcblx0Y29uc3Qgc2VjdGlvbklEID0gU2VjdGlvbklEKHsgRmFjZXQ6IGZhY2V0IH0pO1xuXHRjb25zdCBzZWN0aW9uOiBPYmplY3RQYWdlU2VjdGlvbiA9IHtcblx0XHRpZDogc2VjdGlvbklELFxuXHRcdGtleTogZ2V0U2VjdGlvbktleShmYWNldCwgc2VjdGlvbklEKSxcblx0XHR0aXRsZTogY29tcGlsZUJpbmRpbmcoYW5ub3RhdGlvbkV4cHJlc3Npb24oZmFjZXQuTGFiZWwpKSxcblx0XHRzaG93VGl0bGU6ICEhZmFjZXQuTGFiZWwsXG5cdFx0dmlzaWJsZTogY29tcGlsZUJpbmRpbmcobm90KGVxdWFsKGFubm90YXRpb25FeHByZXNzaW9uKGZhY2V0LmFubm90YXRpb25zPy5VST8uSGlkZGVuPy52YWx1ZU9mKCkpLCB0cnVlKSkpLFxuXHRcdHN1YlNlY3Rpb25zOiBjcmVhdGVTdWJTZWN0aW9ucyhbZmFjZXRdLCBjb252ZXJ0ZXJDb250ZXh0KVxuXHR9O1xuXHRyZXR1cm4gc2VjdGlvbjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHNlY3Rpb24gZGVmaW5pdGlvbiBiYXNlZCBvbiBtYW5pZmVzdCBkZWZpbml0aW9uLlxuICogQHBhcmFtIG1hbmlmZXN0U2VjdGlvbnMgVGhlIG1hbmlmZXN0IGRlZmluZWQgc2VjdGlvbnNcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcmV0dXJucyB7UmVjb3JkPHN0cmluZywgQ3VzdG9tT2JqZWN0UGFnZVNlY3Rpb24+fSBUaGUgbWFuaWZlc3QgZGVmaW5lZCBzZWN0aW9uc1xuICovXG5mdW5jdGlvbiBnZXRTZWN0aW9uc0Zyb21NYW5pZmVzdChcblx0bWFuaWZlc3RTZWN0aW9uczogQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0U2VjdGlvbj4sXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHRcbik6IFJlY29yZDxzdHJpbmcsIEN1c3RvbU9iamVjdFBhZ2VTZWN0aW9uPiB7XG5cdGNvbnN0IHNlY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21PYmplY3RQYWdlU2VjdGlvbj4gPSB7fTtcblx0T2JqZWN0LmtleXMobWFuaWZlc3RTZWN0aW9ucykuZm9yRWFjaChtYW5pZmVzdFNlY3Rpb25LZXkgPT4ge1xuXHRcdHNlY3Rpb25zW21hbmlmZXN0U2VjdGlvbktleV0gPSBnZXRTZWN0aW9uRnJvbU1hbmlmZXN0KG1hbmlmZXN0U2VjdGlvbnNbbWFuaWZlc3RTZWN0aW9uS2V5XSwgbWFuaWZlc3RTZWN0aW9uS2V5LCBjb252ZXJ0ZXJDb250ZXh0KTtcblx0fSk7XG5cdHJldHVybiBzZWN0aW9ucztcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBtYW5pZmVzdCBiYXNlZCBjdXN0b20gc2VjdGlvbi5cbiAqIEBwYXJhbSBjdXN0b21TZWN0aW9uRGVmaW5pdGlvblxuICogQHBhcmFtIHNlY3Rpb25LZXlcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcmV0dXJucyB7Q3VzdG9tT2JqZWN0UGFnZVNlY3Rpb259IFRoZSBjdXJyZW50IGN1c3RvbSBzZWN0aW9uXG4gKi9cbmZ1bmN0aW9uIGdldFNlY3Rpb25Gcm9tTWFuaWZlc3QoXG5cdGN1c3RvbVNlY3Rpb25EZWZpbml0aW9uOiBNYW5pZmVzdFNlY3Rpb24sXG5cdHNlY3Rpb25LZXk6IHN0cmluZyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dFxuKTogQ3VzdG9tT2JqZWN0UGFnZVNlY3Rpb24ge1xuXHRjb25zdCBjdXN0b21TZWN0aW9uSUQgPSBjdXN0b21TZWN0aW9uRGVmaW5pdGlvbi5pZCB8fCBDdXN0b21TZWN0aW9uSUQoc2VjdGlvbktleSk7XG5cdGxldCBwb3NpdGlvbjogUG9zaXRpb24gfCB1bmRlZmluZWQgPSBjdXN0b21TZWN0aW9uRGVmaW5pdGlvbi5wb3NpdGlvbjtcblx0aWYgKCFwb3NpdGlvbikge1xuXHRcdHBvc2l0aW9uID0ge1xuXHRcdFx0cGxhY2VtZW50OiBQbGFjZW1lbnQuQWZ0ZXJcblx0XHR9O1xuXHR9XG5cdGxldCBtYW5pZmVzdFN1YlNlY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBNYW5pZmVzdFN1YlNlY3Rpb24+O1xuXHRpZiAoIWN1c3RvbVNlY3Rpb25EZWZpbml0aW9uLnN1YlNlY3Rpb25zKSB7XG5cdFx0Ly8gSWYgdGhlcmUgaXMgbm8gc3ViU2VjdGlvbiBkZWZpbmVkLCB3ZSBhZGQgdGhlIGNvbnRlbnQgb2YgdGhlIGN1c3RvbSBzZWN0aW9uIGFzIHN1YnNlY3Rpb25zXG5cdFx0Ly8gYW5kIG1ha2Ugc3VyZSB0byBzZXQgdGhlIHZpc2liaWxpdHkgdG8gJ3RydWUnLCBhcyB0aGUgYWN0dWFsIHZpc2liaWxpdHkgaXMgaGFuZGxlZCBieSB0aGUgc2VjdGlvbiBpdHNlbGZcblx0XHRtYW5pZmVzdFN1YlNlY3Rpb25zID0ge1xuXHRcdFx0W3NlY3Rpb25LZXldOiB7XG5cdFx0XHRcdC4uLmN1c3RvbVNlY3Rpb25EZWZpbml0aW9uLFxuXHRcdFx0XHRwb3NpdGlvbjogdW5kZWZpbmVkLFxuXHRcdFx0XHR2aXNpYmxlOiB0cnVlXG5cdFx0XHR9XG5cdFx0fTtcblx0fSBlbHNlIHtcblx0XHRtYW5pZmVzdFN1YlNlY3Rpb25zID0gY3VzdG9tU2VjdGlvbkRlZmluaXRpb24uc3ViU2VjdGlvbnM7XG5cdH1cblx0Y29uc3Qgc3ViU2VjdGlvbnMgPSBjcmVhdGVDdXN0b21TdWJTZWN0aW9ucyhtYW5pZmVzdFN1YlNlY3Rpb25zLCBjb252ZXJ0ZXJDb250ZXh0KTtcblxuXHRjb25zdCBjdXN0b21TZWN0aW9uOiBDdXN0b21PYmplY3RQYWdlU2VjdGlvbiA9IHtcblx0XHRpZDogY3VzdG9tU2VjdGlvbklELFxuXHRcdGtleTogc2VjdGlvbktleSxcblx0XHR0aXRsZTogY3VzdG9tU2VjdGlvbkRlZmluaXRpb24udGl0bGUsXG5cdFx0c2hvd1RpdGxlOiAhIWN1c3RvbVNlY3Rpb25EZWZpbml0aW9uLnRpdGxlLFxuXHRcdHZpc2libGU6IGN1c3RvbVNlY3Rpb25EZWZpbml0aW9uLnZpc2libGUgIT09IHVuZGVmaW5lZCA/IGN1c3RvbVNlY3Rpb25EZWZpbml0aW9uLnZpc2libGUgOiB0cnVlLFxuXHRcdHBvc2l0aW9uOiBwb3NpdGlvbixcblx0XHRzdWJTZWN0aW9uczogc3ViU2VjdGlvbnMgYXMgYW55XG5cdH07XG5cdHJldHVybiBjdXN0b21TZWN0aW9uO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgT2JqZWN0UGFnZSBoZWFkZXIgYWN0aW9ucyAoYm90aCB0aGUgZGVmYXVsdCBvbmVzIGFuZCB0aGUgY3VzdG9tIG9uZXMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QpLlxuICpcbiAqIEBwYXJhbSB7Q29udmVydGVyQ29udGV4dH0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHRcbiAqIEByZXR1cm5zIEFuIGFycmF5IGNvbnRhaW5pbmcgYWxsIHRoZSBhY3Rpb25zIGZvciB0aGlzIE9iamVjdFBhZ2UgaGVhZGVyXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRIZWFkZXJBY3Rpb25zID0gZnVuY3Rpb24oY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCk6IEJhc2VBY3Rpb25bXSB7XG5cdGNvbnN0IGFBbm5vdGF0aW9uSGVhZGVyQWN0aW9uczogQmFzZUFjdGlvbltdID0gZ2V0SGVhZGVyRGVmYXVsdEFjdGlvbnMoY29udmVydGVyQ29udGV4dCk7XG5cdGNvbnN0IG1hbmlmZXN0V3JhcHBlciA9IGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RXcmFwcGVyKCk7XG5cdGNvbnN0IGhlYWRlckFjdGlvbnMgPSBpbnNlcnRDdXN0b21FbGVtZW50cyhcblx0XHRhQW5ub3RhdGlvbkhlYWRlckFjdGlvbnMsXG5cdFx0Z2V0QWN0aW9uc0Zyb21NYW5pZmVzdChcblx0XHRcdG1hbmlmZXN0V3JhcHBlci5nZXRIZWFkZXJBY3Rpb25zKCksXG5cdFx0XHRjb252ZXJ0ZXJDb250ZXh0LFxuXHRcdFx0YUFubm90YXRpb25IZWFkZXJBY3Rpb25zLFxuXHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0Z2V0SGlkZGVuSGVhZGVyQWN0aW9ucyhjb252ZXJ0ZXJDb250ZXh0KVxuXHRcdCksXG5cdFx0eyBpc05hdmlnYWJsZTogXCJvdmVyd3JpdGVcIiwgZW5hYmxlZDogXCJvdmVyd3JpdGVcIiwgZGVmYXVsdFZhbHVlc0V4dGVuc2lvbkZ1bmN0aW9uOiBcIm92ZXJ3cml0ZVwiIH1cblx0KTtcblx0cmV0dXJuIHJlbW92ZUR1cGxpY2F0ZUFjdGlvbnMoaGVhZGVyQWN0aW9ucyk7XG59O1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgT2JqZWN0UGFnZSBmb290ZXIgYWN0aW9ucyAoYm90aCB0aGUgZGVmYXVsdCBvbmVzIGFuZCB0aGUgY3VzdG9tIG9uZXMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QpLlxuICpcbiAqIEBwYXJhbSB7Q29udmVydGVyQ29udGV4dH0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHRcbiAqIEByZXR1cm5zIEFuIGFycmF5IGNvbnRhaW5pbmcgYWxsIHRoZSBhY3Rpb25zIGZvciB0aGlzIE9iamVjdFBhZ2UgZm9vdGVyXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRGb290ZXJBY3Rpb25zID0gZnVuY3Rpb24oY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCk6IEJhc2VBY3Rpb25bXSB7XG5cdGNvbnN0IG1hbmlmZXN0V3JhcHBlciA9IGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RXcmFwcGVyKCk7XG5cdGNvbnN0IGFBbm5vdGF0aW9uRm9vdGVyQWN0aW9uczogQmFzZUFjdGlvbltdID0gZ2V0Rm9vdGVyRGVmYXVsdEFjdGlvbnMobWFuaWZlc3RXcmFwcGVyLmdldFZpZXdMZXZlbCgpLCBjb252ZXJ0ZXJDb250ZXh0KTtcblx0Y29uc3QgZm9vdGVyQWN0aW9ucyA9IGluc2VydEN1c3RvbUVsZW1lbnRzKFxuXHRcdGFBbm5vdGF0aW9uRm9vdGVyQWN0aW9ucyxcblx0XHRnZXRBY3Rpb25zRnJvbU1hbmlmZXN0KG1hbmlmZXN0V3JhcHBlci5nZXRGb290ZXJBY3Rpb25zKCksIGNvbnZlcnRlckNvbnRleHQsIGFBbm5vdGF0aW9uRm9vdGVyQWN0aW9ucyksXG5cdFx0eyBpc05hdmlnYWJsZTogXCJvdmVyd3JpdGVcIiwgZW5hYmxlZDogXCJvdmVyd3JpdGVcIiwgZGVmYXVsdFZhbHVlc0V4dGVuc2lvbkZ1bmN0aW9uOiBcIm92ZXJ3cml0ZVwiIH1cblx0KTtcblx0cmV0dXJuIGZvb3RlckFjdGlvbnM7XG59O1xuXG4vKipcbiAqIFJldHJpZXZlcyBhbmQgbWVyZ2VzIHRoZSBPYmplY3RQYWdlIHNlY3Rpb25zIGRlZmluZWQgaW4gdGhlIGFubm90YXRpb24gYW5kIGluIHRoZSBtYW5pZmVzdC5cbiAqXG4gKiBAcGFyYW0ge0NvbnZlcnRlckNvbnRleHR9IGNvbnZlcnRlckNvbnRleHQgVGhlIGNvbnZlcnRlciBjb250ZXh0XG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBzZWN0aW9ucy5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldFNlY3Rpb25zID0gZnVuY3Rpb24oY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCk6IE9iamVjdFBhZ2VTZWN0aW9uW10ge1xuXHRjb25zdCBtYW5pZmVzdFdyYXBwZXIgPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpO1xuXHRjb25zdCBzZWN0aW9ucyA9IGluc2VydEN1c3RvbUVsZW1lbnRzKFxuXHRcdGdldFNlY3Rpb25zRnJvbUFubm90YXRpb24oY29udmVydGVyQ29udGV4dCksXG5cdFx0Z2V0U2VjdGlvbnNGcm9tTWFuaWZlc3QobWFuaWZlc3RXcmFwcGVyLmdldFNlY3Rpb25zKCksIGNvbnZlcnRlckNvbnRleHQpLFxuXHRcdHtcblx0XHRcdFwidGl0bGVcIjogXCJvdmVyd3JpdGVcIixcblx0XHRcdFwidmlzaWJsZVwiOiBcIm92ZXJ3cml0ZVwiLFxuXHRcdFx0XCJzdWJTZWN0aW9uc1wiOiB7XG5cdFx0XHRcdFwiYWN0aW9uc1wiOiBcIm1lcmdlXCIsXG5cdFx0XHRcdFwidGl0bGVcIjogXCJvdmVyd3JpdGVcIixcblx0XHRcdFx0XCJzaWRlQ29udGVudFwiOiBcIm92ZXJ3cml0ZVwiXG5cdFx0XHR9XG5cdFx0fVxuXHQpO1xuXHQvLyBMZXZlbCBBZGp1c3RtZW50IGZvciBcIk1peGVkXCIgQ29sbGVjdGlvbiBGYWNldHM6XG5cdC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblx0Ly8gVGhlIG1hbmlmZXN0IGRlZmluaXRpb24gb2YgY3VzdG9tIHNpZGUgY29udGVudHMgYW5kIGFjdGlvbnMgc3RpbGwgbmVlZHMgdG8gYmUgYWxpZ25lZCBmb3IgXCJNaXhlZFwiIGNvbGxlY3Rpb24gZmFjZXRzOlxuXHQvLyBDb2xsZWN0aW9uIGZhY2V0cyBjb250YWluaW5nIHRhYmxlcyBnYWluIGFuIGV4dHJhIHJlZmVyZW5jZSBmYWNldCBhcyBhIHRhYmxlIHdyYXBwZXIgdG8gZW5zdXJlLCB0aGF0IHRoZSB0YWJsZSBpcyBhbHdheXNcblx0Ly8gcGxhY2VkIGluIGFuIG93biBpbmRpdmlkdWFsIE9iamVjdCBQYWdlIEJsb2NrOyB0aGlzIGFkZGl0aW9uYWwgaGllcmFyY2h5IGxldmVsIGlzIHVua25vd24gdG8gYXBwIGRldmVsb3BlcnMsIHdoaWNoIGFyZVxuXHQvLyBkZWZpbmluZyB0aGUgc2lkZSBjb250ZW50IGFuZCBhY3Rpb25zIGluIHRoZSBtYW5pZmVzdCBhdCBjb2xsZWN0aW9uIGZhY2V0IGxldmVsOyBub3csIHNpbmNlIHRoZSBzaWRlQ29udGVudCBhbHdheXMgbmVlZHNcblx0Ly8gdG8gYmUgYXNzaWduZWQgdG8gYSBibG9jaywgd2UgbmVlZCB0byBtb3ZlIHRoZSBzaWRlQ29udGVudCBvZiBmcm9tIGEgbWl4ZWQgY29sbGVjdGlvbiBmYWNldCB0byBpdHMgZmlyc3QgY2hpbGQgcmVmZXJlbmNlIGZhY2V0LlxuXHQvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cdHNlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24oc2VjdGlvbikge1xuXHRcdHNlY3Rpb24uc3ViU2VjdGlvbnM/LmZvckVhY2goZnVuY3Rpb24oc3ViU2VjdGlvbikge1xuXHRcdFx0aWYgKHN1YlNlY3Rpb24udHlwZSA9PT0gXCJNaXhlZFwiICYmIHN1YlNlY3Rpb24uc2lkZUNvbnRlbnQgIT0gdW5kZWZpbmVkICYmIHN1YlNlY3Rpb24uY29udGVudCAmJiBzdWJTZWN0aW9uLmNvbnRlbnQubGVuZ3RoID4gMCkge1xuXHRcdFx0XHQvLyAxLiBDb3B5IHNpZGVDb250ZW50IC8gYWN0aW9ucyB0byB0aGUgU3ViU2VjdGlvbidzIGNvbnRlbnRcblx0XHRcdFx0Ly8gMi4gRGVsZXRlIHNpZGVDb250ZW50IC8gYWN0aW9ucyBhdCB0aGUgKGludmFsaWQpIG1hbmlmZXN0IGxldmVsXG5cdFx0XHRcdGlmICgoc3ViU2VjdGlvbiBhcyBGb3JtU3ViU2VjdGlvbikuc2lkZUNvbnRlbnQpIHtcblx0XHRcdFx0XHRzdWJTZWN0aW9uLmNvbnRlbnRbMF0uc2lkZUNvbnRlbnQgPSBzdWJTZWN0aW9uLnNpZGVDb250ZW50O1xuXHRcdFx0XHRcdHN1YlNlY3Rpb24uc2lkZUNvbnRlbnQgPSB1bmRlZmluZWQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKChzdWJTZWN0aW9uIGFzIEZvcm1TdWJTZWN0aW9uKS5hY3Rpb25zLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHQoc3ViU2VjdGlvbi5jb250ZW50WzBdIGFzIEZvcm1TdWJTZWN0aW9uKS5hY3Rpb25zID0gKHN1YlNlY3Rpb24gYXMgRm9ybVN1YlNlY3Rpb24pLmFjdGlvbnM7XG5cdFx0XHRcdFx0KHN1YlNlY3Rpb24gYXMgRm9ybVN1YlNlY3Rpb24pLmFjdGlvbnMgPSBbXTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHR9KTtcblx0cmV0dXJuIHNlY3Rpb25zO1xufTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIGlmIHRoZSBPYmplY3RQYWdlIGhhcyBoZWFkZXIgY29udGVudC5cbiAqXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgaW5zdGFuY2Ugb2YgdGhlIGNvbnZlcnRlciBjb250ZXh0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHRoZXJlIGlzIGF0IGxlYXN0IG9uIGhlYWRlciBmYWNldFxuICovXG5mdW5jdGlvbiBoYXNIZWFkZXJDb250ZW50KGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBib29sZWFuIHtcblx0Y29uc3QgbWFuaWZlc3RXcmFwcGVyID0gY29udmVydGVyQ29udGV4dC5nZXRNYW5pZmVzdFdyYXBwZXIoKTtcblx0cmV0dXJuIChcblx0XHQoY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKCkuYW5ub3RhdGlvbnM/LlVJPy5IZWFkZXJGYWNldHMgfHwgW10pLmxlbmd0aCA+IDAgfHxcblx0XHRPYmplY3Qua2V5cyhtYW5pZmVzdFdyYXBwZXIuZ2V0SGVhZGVyRmFjZXRzKCkpLmxlbmd0aCA+IDBcblx0KTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBleHByZXNzaW9uIHRvIGV2YWx1YXRlIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBoZWFkZXIgY29udGVudC5cbiAqXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgaW5zdGFuY2Ugb2YgdGhlIGNvbnZlcnRlciBjb250ZXh0XG4gKiBAcmV0dXJucyB7QmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj59IFRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSBEZWxldGUgYnV0dG9uXG4gKi9cbmZ1bmN0aW9uIGdldFNob3dIZWFkZXJDb250ZW50RXhwcmVzc2lvbihjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0KTogRXhwcmVzc2lvbjxhbnk+IHtcblx0Y29uc3QgbWFuaWZlc3RXcmFwcGVyID0gY29udmVydGVyQ29udGV4dC5nZXRNYW5pZmVzdFdyYXBwZXIoKTtcblx0cmV0dXJuIGlmRWxzZShcblx0XHQhaGFzSGVhZGVyQ29udGVudChjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHRjb25zdGFudChmYWxzZSksXG5cdFx0aWZFbHNlKFxuXHRcdFx0ZXF1YWwobWFuaWZlc3RXcmFwcGVyLmlzSGVhZGVyRWRpdGFibGUoKSwgZmFsc2UpLFxuXHRcdFx0Y29uc3RhbnQodHJ1ZSksXG5cdFx0XHRub3QoZXF1YWwoYmluZGluZ0V4cHJlc3Npb24oXCIvZWRpdE1vZGVcIiwgXCJ1aVwiKSwgXCJFZGl0YWJsZVwiKSlcblx0XHQpXG5cdCk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgYmluZGluZyBleHByZXNzaW9uIHRvIGV2YWx1YXRlIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBoZWFkZXIgY29udGVudC5cbiAqXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgaW5zdGFuY2Ugb2YgdGhlIGNvbnZlcnRlciBjb250ZXh0XG4gKiBAcmV0dXJucyB7QmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj59IFRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSBEZWxldGUgYnV0dG9uXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRTaG93SGVhZGVyQ29udGVudCA9IGZ1bmN0aW9uKGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBCaW5kaW5nRXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdHJldHVybiBjb21waWxlQmluZGluZyhnZXRTaG93SGVhZGVyQ29udGVudEV4cHJlc3Npb24oY29udmVydGVyQ29udGV4dCkpO1xufTtcblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gdG8gZXZhbHVhdGUgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGF2YXRhciB3aGVuIHRoZSBoZWFkZXIgaXMgaW4gZXhwYW5kZWQgc3RhdGUuXG4gKlxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHQgVGhlIGluc3RhbmNlIG9mIHRoZSBjb252ZXJ0ZXIgY29udGV4dFxuICogQHJldHVybnMge0JpbmRpbmdFeHByZXNzaW9uPHN0cmluZz59IFRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSBEZWxldGUgYnV0dG9uXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRFeHBhbmRlZEltYWdlVmlzaWJsZSA9IGZ1bmN0aW9uKGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBCaW5kaW5nRXhwcmVzc2lvbjxzdHJpbmc+IHtcblx0cmV0dXJuIGNvbXBpbGVCaW5kaW5nKG5vdChnZXRTaG93SGVhZGVyQ29udGVudEV4cHJlc3Npb24oY29udmVydGVyQ29udGV4dCkpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb252ZXJ0UGFnZSA9IGZ1bmN0aW9uKGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBPYmplY3RQYWdlRGVmaW5pdGlvbiB7XG5cdGNvbnN0IG1hbmlmZXN0V3JhcHBlciA9IGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RXcmFwcGVyKCk7XG5cdGxldCBoZWFkZXJTZWN0aW9uOiBPYmplY3RQYWdlU2VjdGlvbiB8IHVuZGVmaW5lZDtcblx0Y29uc3QgZW50aXR5VHlwZTogRW50aXR5VHlwZSA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpO1xuXHQvLyBSZXRyaWV2ZSBhbGwgaGVhZGVyIGZhY2V0cyAoZnJvbSBhbm5vdGF0aW9ucyAmIGN1c3RvbSlcblx0Y29uc3QgaGVhZGVyRmFjZXRzID0gaW5zZXJ0Q3VzdG9tRWxlbWVudHMoXG5cdFx0Z2V0SGVhZGVyRmFjZXRzRnJvbUFubm90YXRpb25zKGNvbnZlcnRlckNvbnRleHQpLFxuXHRcdGdldEhlYWRlckZhY2V0c0Zyb21NYW5pZmVzdChtYW5pZmVzdFdyYXBwZXIuZ2V0SGVhZGVyRmFjZXRzKCkpXG5cdCk7XG5cblx0Ly8gUmV0cmlldmUgdGhlIHBhZ2UgaGVhZGVyIGFjdGlvbnNcblx0Y29uc3QgaGVhZGVyQWN0aW9ucyA9IGdldEhlYWRlckFjdGlvbnMoY29udmVydGVyQ29udGV4dCk7XG5cblx0Ly8gUmV0cmlldmUgdGhlIHBhZ2UgZm9vdGVyIGFjdGlvbnNcblx0Y29uc3QgZm9vdGVyQWN0aW9ucyA9IGdldEZvb3RlckFjdGlvbnMoY29udmVydGVyQ29udGV4dCk7XG5cblx0aWYgKG1hbmlmZXN0V3JhcHBlci5pc0hlYWRlckVkaXRhYmxlKCkgJiYgKGVudGl0eVR5cGUuYW5ub3RhdGlvbnMuVUk/LkhlYWRlckZhY2V0cyB8fCBlbnRpdHlUeXBlLmFubm90YXRpb25zLlVJPy5IZWFkZXJJbmZvKSkge1xuXHRcdGhlYWRlclNlY3Rpb24gPSBjcmVhdGVFZGl0YWJsZUhlYWRlclNlY3Rpb24oY29udmVydGVyQ29udGV4dCwgaGVhZGVyRmFjZXRzKTtcblx0fVxuXG5cdGNvbnN0IHNlY3Rpb25zID0gZ2V0U2VjdGlvbnMoY29udmVydGVyQ29udGV4dCk7XG5cblx0cmV0dXJuIHtcblx0XHR0ZW1wbGF0ZTogVGVtcGxhdGVUeXBlLk9iamVjdFBhZ2UsXG5cdFx0aGVhZGVyOiB7XG5cdFx0XHR2aXNpYmxlOiBtYW5pZmVzdFdyYXBwZXIuZ2V0U2hvd09iamVjdFBhZ2VIZWFkZXIoKSxcblx0XHRcdHNlY3Rpb246IGhlYWRlclNlY3Rpb24sXG5cdFx0XHRmYWNldHM6IGhlYWRlckZhY2V0cyxcblx0XHRcdGFjdGlvbnM6IGhlYWRlckFjdGlvbnMsXG5cdFx0XHRzaG93Q29udGVudDogZ2V0U2hvd0hlYWRlckNvbnRlbnQoY29udmVydGVyQ29udGV4dCksXG5cdFx0XHRoYXNDb250ZW50OiBoYXNIZWFkZXJDb250ZW50KGNvbnZlcnRlckNvbnRleHQpLFxuXHRcdFx0YXZhdGFyOiBnZXRBdmF0YXIoY29udmVydGVyQ29udGV4dCksXG5cdFx0XHR0aXRsZToge1xuXHRcdFx0XHRleHBhbmRlZEltYWdlVmlzaWJsZTogZ2V0RXhwYW5kZWRJbWFnZVZpc2libGUoY29udmVydGVyQ29udGV4dClcblx0XHRcdH1cblx0XHR9LFxuXHRcdHNlY3Rpb25zOiBzZWN0aW9ucyxcblx0XHRmb290ZXJBY3Rpb25zOiBmb290ZXJBY3Rpb25zLFxuXHRcdHNob3dBbmNob3JCYXI6IG1hbmlmZXN0V3JhcHBlci5nZXRTaG93QW5jaG9yQmFyKCksXG5cdFx0dXNlSWNvblRhYkJhcjogbWFuaWZlc3RXcmFwcGVyLnVzZUljb25UYWJCYXIoKVxuXHR9O1xufTtcbiJdfQ==
@@ -7,9 +7,9 @@ import {
7
7
  createSubSections,
8
8
  createCustomHeaderFacetSubSections,
9
9
  CustomObjectPageSection,
10
- CustomObjectPageSubSection,
11
10
  ObjectPageSection,
12
- ObjectPageSubSection
11
+ ObjectPageSubSection,
12
+ FormSubSection
13
13
  } from "../controls/ObjectPage/SubSection";
14
14
  import { getHeaderFacetsFromAnnotations, getHeaderFacetsFromManifest, ObjectPageHeaderFacet } from "../controls/ObjectPage/HeaderFacet";
15
15
  import { CustomSectionID, EditableHeaderSectionID, SectionID } from "../helpers/ID";
@@ -20,16 +20,35 @@ import {
20
20
  getFooterDefaultActions,
21
21
  getHiddenHeaderActions
22
22
  } from "sap/fe/core/converters/objectPage/HeaderAndFooterAction";
23
- import { annotationExpression, compileBinding, equal, not } from "sap/fe/core/helpers/BindingExpression";
23
+ import { Avatar, getAvatar } from "../controls/ObjectPage/Avatar";
24
+ import {
25
+ annotationExpression,
26
+ bindingExpression,
27
+ compileBinding,
28
+ equal,
29
+ not,
30
+ ifElse,
31
+ constant,
32
+ BindingExpression,
33
+ Expression
34
+ } from "sap/fe/core/helpers/BindingExpression";
24
35
  import ConverterContext from "../ConverterContext";
25
36
 
26
37
  export type ObjectPageDefinition = PageDefinition & {
27
- headerFacets: ObjectPageHeaderFacet[];
28
- headerSection?: ObjectPageSection;
29
- headerActions: BaseAction[];
38
+ header: {
39
+ visible: boolean;
40
+ section?: ObjectPageSection;
41
+ facets: ObjectPageHeaderFacet[];
42
+ actions: BaseAction[];
43
+ showContent: BindingExpression<boolean>;
44
+ hasContent: boolean;
45
+ avatar?: Avatar;
46
+ title: {
47
+ expandedImageVisible: BindingExpression<string>;
48
+ };
49
+ };
30
50
  sections: ObjectPageSection[];
31
51
  footerActions: BaseAction[];
32
- showHeader: boolean;
33
52
  showAnchorBar: boolean;
34
53
  useIconTabBar: boolean;
35
54
  };
@@ -187,7 +206,7 @@ function getSectionFromManifest(
187
206
  showTitle: !!customSectionDefinition.title,
188
207
  visible: customSectionDefinition.visible !== undefined ? customSectionDefinition.visible : true,
189
208
  position: position,
190
- subSections: insertCustomElements([] as CustomObjectPageSubSection[], subSections, { "title": "overwrite", "actions": "merge" })
209
+ subSections: subSections as any
191
210
  };
192
211
  return customSection;
193
212
  }
@@ -195,7 +214,7 @@ function getSectionFromManifest(
195
214
  /**
196
215
  * Retrieves the ObjectPage header actions (both the default ones and the custom ones defined in the manifest).
197
216
  *
198
- * @param converterContext
217
+ * @param {ConverterContext} converterContext The converter context
199
218
  * @returns An array containing all the actions for this ObjectPage header
200
219
  */
201
220
  export const getHeaderActions = function(converterContext: ConverterContext): BaseAction[] {
@@ -219,7 +238,7 @@ export const getHeaderActions = function(converterContext: ConverterContext): Ba
219
238
  /**
220
239
  * Retrieves the ObjectPage footer actions (both the default ones and the custom ones defined in the manifest).
221
240
  *
222
- * @param converterContext
241
+ * @param {ConverterContext} converterContext The converter context
223
242
  * @returns An array containing all the actions for this ObjectPage footer
224
243
  */
225
244
  export const getFooterActions = function(converterContext: ConverterContext): BaseAction[] {
@@ -236,12 +255,12 @@ export const getFooterActions = function(converterContext: ConverterContext): Ba
236
255
  /**
237
256
  * Retrieves and merges the ObjectPage sections defined in the annotation and in the manifest.
238
257
  *
239
- * @param converterContext
258
+ * @param {ConverterContext} converterContext The converter context
240
259
  * @returns An array of sections.
241
260
  */
242
261
  export const getSections = function(converterContext: ConverterContext): ObjectPageSection[] {
243
262
  const manifestWrapper = converterContext.getManifestWrapper();
244
- return insertCustomElements(
263
+ const sections = insertCustomElements(
245
264
  getSectionsFromAnnotation(converterContext),
246
265
  getSectionsFromManifest(manifestWrapper.getSections(), converterContext),
247
266
  {
@@ -254,6 +273,84 @@ export const getSections = function(converterContext: ConverterContext): ObjectP
254
273
  }
255
274
  }
256
275
  );
276
+ // Level Adjustment for "Mixed" Collection Facets:
277
+ // ==============================================
278
+ // The manifest definition of custom side contents and actions still needs to be aligned for "Mixed" collection facets:
279
+ // Collection facets containing tables gain an extra reference facet as a table wrapper to ensure, that the table is always
280
+ // placed in an own individual Object Page Block; this additional hierarchy level is unknown to app developers, which are
281
+ // defining the side content and actions in the manifest at collection facet level; now, since the sideContent always needs
282
+ // to be assigned to a block, we need to move the sideContent of from a mixed collection facet to its first child reference facet.
283
+ // ==============================================
284
+ sections.forEach(function(section) {
285
+ section.subSections?.forEach(function(subSection) {
286
+ if (subSection.type === "Mixed" && subSection.sideContent != undefined && subSection.content && subSection.content.length > 0) {
287
+ // 1. Copy sideContent / actions to the SubSection's content
288
+ // 2. Delete sideContent / actions at the (invalid) manifest level
289
+ if ((subSection as FormSubSection).sideContent) {
290
+ subSection.content[0].sideContent = subSection.sideContent;
291
+ subSection.sideContent = undefined;
292
+ }
293
+ if ((subSection as FormSubSection).actions.length > 0) {
294
+ (subSection.content[0] as FormSubSection).actions = (subSection as FormSubSection).actions;
295
+ (subSection as FormSubSection).actions = [];
296
+ }
297
+ }
298
+ });
299
+ });
300
+ return sections;
301
+ };
302
+
303
+ /**
304
+ * Determines if the ObjectPage has header content.
305
+ *
306
+ * @param converterContext The instance of the converter context
307
+ * @returns {boolean} `true` if there is at least on header facet
308
+ */
309
+ function hasHeaderContent(converterContext: ConverterContext): boolean {
310
+ const manifestWrapper = converterContext.getManifestWrapper();
311
+ return (
312
+ (converterContext.getEntityType().annotations?.UI?.HeaderFacets || []).length > 0 ||
313
+ Object.keys(manifestWrapper.getHeaderFacets()).length > 0
314
+ );
315
+ }
316
+
317
+ /**
318
+ * Gets the expression to evaluate the visibility of the header content.
319
+ *
320
+ * @param converterContext The instance of the converter context
321
+ * @returns {BindingExpression<boolean>} The binding expression for the Delete button
322
+ */
323
+ function getShowHeaderContentExpression(converterContext: ConverterContext): Expression<any> {
324
+ const manifestWrapper = converterContext.getManifestWrapper();
325
+ return ifElse(
326
+ !hasHeaderContent(converterContext),
327
+ constant(false),
328
+ ifElse(
329
+ equal(manifestWrapper.isHeaderEditable(), false),
330
+ constant(true),
331
+ not(equal(bindingExpression("/editMode", "ui"), "Editable"))
332
+ )
333
+ );
334
+ }
335
+
336
+ /**
337
+ * Gets the binding expression to evaluate the visibility of the header content.
338
+ *
339
+ * @param converterContext The instance of the converter context
340
+ * @returns {BindingExpression<boolean>} The binding expression for the Delete button
341
+ */
342
+ export const getShowHeaderContent = function(converterContext: ConverterContext): BindingExpression<boolean> {
343
+ return compileBinding(getShowHeaderContentExpression(converterContext));
344
+ };
345
+
346
+ /**
347
+ * Gets the binding expression to evaluate the visibility of the avatar when the header is in expanded state.
348
+ *
349
+ * @param converterContext The instance of the converter context
350
+ * @returns {BindingExpression<string>} The binding expression for the Delete button
351
+ */
352
+ export const getExpandedImageVisible = function(converterContext: ConverterContext): BindingExpression<string> {
353
+ return compileBinding(not(getShowHeaderContentExpression(converterContext)));
257
354
  };
258
355
 
259
356
  export const convertPage = function(converterContext: ConverterContext): ObjectPageDefinition {
@@ -280,12 +377,20 @@ export const convertPage = function(converterContext: ConverterContext): ObjectP
280
377
 
281
378
  return {
282
379
  template: TemplateType.ObjectPage,
283
- headerFacets: headerFacets,
284
- headerSection: headerSection,
285
- headerActions: headerActions,
380
+ header: {
381
+ visible: manifestWrapper.getShowObjectPageHeader(),
382
+ section: headerSection,
383
+ facets: headerFacets,
384
+ actions: headerActions,
385
+ showContent: getShowHeaderContent(converterContext),
386
+ hasContent: hasHeaderContent(converterContext),
387
+ avatar: getAvatar(converterContext),
388
+ title: {
389
+ expandedImageVisible: getExpandedImageVisible(converterContext)
390
+ }
391
+ },
286
392
  sections: sections,
287
393
  footerActions: footerActions,
288
- showHeader: manifestWrapper.getShowObjectPageHeader(),
289
394
  showAnchorBar: manifestWrapper.getShowAnchorBar(),
290
395
  useIconTabBar: manifestWrapper.useIconTabBar()
291
396
  };
@@ -55,7 +55,8 @@ sap.ui.define(
55
55
  "sap.ui.layout.form.FormElement": true,
56
56
  "sap.ui.fl.variants.VariantManagement": true,
57
57
  "sap.fe.core.controls.FilterBar": true,
58
- "sap.ui.mdc.Table": true
58
+ "sap.ui.mdc.Table": true,
59
+ "sap.m.IconTabBar": true
59
60
  };
60
61
  if (
61
62
  oElement.getMetadata().getName() === "sap.m.MenuButton" &&
@@ -74,4 +74,4 @@ sap.ui.define(["sap/fe/core/formatters/TableFormatterTypes"], function (TableFor
74
74
 
75
75
  return criticalityFormatters;
76
76
  }, true);
77
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNyaXRpY2FsaXR5Rm9ybWF0dGVyLnRzIl0sIm5hbWVzIjpbImNyaXRpY2FsaXR5Rm9ybWF0IiwiY3JpdGljYWxpdHlWYWx1ZSIsImNyaXRpY2FsaXR5UHJvcGVydHkiLCJNZXNzYWdlVHlwZSIsIkVycm9yIiwiV2FybmluZyIsIlN1Y2Nlc3MiLCJJbmZvcm1hdGlvbiIsIk5vbmUiLCJfX2Z1bmN0aW9uTmFtZSIsImNyaXRpY2FsaXR5Rm9ybWF0dGVycyIsInNOYW1lIiwiaGFzT3duUHJvcGVydHkiLCJvQXJncyIsImFwcGx5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFQTs7Ozs7O0FBT0EsTUFBTUEsaUJBQWlCLEdBQUcsVUFBU0MsZ0JBQVQsRUFBeUQ7QUFDbEYsUUFBSUMsbUJBQUo7O0FBQ0EsUUFBSSxPQUFPRCxnQkFBUCxLQUE0QixRQUFoQyxFQUEwQztBQUN6QyxhQUFRQSxnQkFBUjtBQUNBOztBQUNELFlBQVFBLGdCQUFSO0FBQ0MsV0FBSyxDQUFMO0FBQ0NDLFFBQUFBLG1CQUFtQixHQUFHQyxXQUFXLENBQUNDLEtBQWxDO0FBQ0E7O0FBQ0QsV0FBSyxDQUFMO0FBQ0NGLFFBQUFBLG1CQUFtQixHQUFHQyxXQUFXLENBQUNFLE9BQWxDO0FBQ0E7O0FBQ0QsV0FBSyxDQUFMO0FBQ0NILFFBQUFBLG1CQUFtQixHQUFHQyxXQUFXLENBQUNHLE9BQWxDO0FBQ0E7O0FBQ0QsV0FBSyxDQUFMO0FBQ0NKLFFBQUFBLG1CQUFtQixHQUFHQyxXQUFXLENBQUNJLFdBQWxDO0FBQ0E7O0FBQ0Q7QUFDQ0wsUUFBQUEsbUJBQW1CLEdBQUdDLFdBQVcsQ0FBQ0ssSUFBbEM7QUFkRjs7QUFpQkEsV0FBT04sbUJBQVA7QUFDQSxHQXZCRDs7QUF3QkFGLEVBQUFBLGlCQUFpQixDQUFDUyxjQUFsQixHQUFtQywrREFBbkMsQyxDQUVBOztBQUNBOzs7Ozs7Ozs7QUFRQSxNQUFNQyxxQkFBcUIsR0FBRyxVQUF1QkMsS0FBdkIsRUFBNEQ7QUFDekYsUUFBSUQscUJBQXFCLENBQUNFLGNBQXRCLENBQXFDRCxLQUFyQyxDQUFKLEVBQWlEO0FBQUEsd0NBRHFCRSxLQUNyQjtBQURxQkEsUUFBQUEsS0FDckI7QUFBQTs7QUFDaEQsYUFBUUgscUJBQUQsQ0FBK0JDLEtBQS9CLEVBQXNDRyxLQUF0QyxDQUE0QyxJQUE1QyxFQUFrREQsS0FBbEQsQ0FBUDtBQUNBLEtBRkQsTUFFTztBQUNOLGFBQU8sRUFBUDtBQUNBO0FBQ0QsR0FORDs7QUFRQUgsRUFBQUEscUJBQXFCLENBQUNWLGlCQUF0QixHQUEwQ0EsaUJBQTFDO0FBRUE7Ozs7U0FHZVUscUIiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1lc3NhZ2VUeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2Zvcm1hdHRlcnMvVGFibGVGb3JtYXR0ZXJUeXBlc1wiO1xuXG4vKipcbiAqIGNyaXRpY2FsaXR5IGZvcm1hdHRpbmdcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IGNyaXRpY2FsaXR5VmFsdWUgY3JpdGljYWxpdHkgdmFsdWVcbiAqIEByZXR1cm5zIHtvYmplY3R9IFRoZSBmb3JtYXR0ZWQgY3JpdGljYWxpdHlcbiAqL1xuXG5jb25zdCBjcml0aWNhbGl0eUZvcm1hdCA9IGZ1bmN0aW9uKGNyaXRpY2FsaXR5VmFsdWU6IHN0cmluZyB8IG51bWJlcik6IE1lc3NhZ2VUeXBlIHtcblx0bGV0IGNyaXRpY2FsaXR5UHJvcGVydHk7XG5cdGlmICh0eXBlb2YgY3JpdGljYWxpdHlWYWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuXHRcdHJldHVybiAoY3JpdGljYWxpdHlWYWx1ZSBhcyB1bmtub3duKSBhcyBNZXNzYWdlVHlwZTtcblx0fVxuXHRzd2l0Y2ggKGNyaXRpY2FsaXR5VmFsdWUpIHtcblx0XHRjYXNlIDE6XG5cdFx0XHRjcml0aWNhbGl0eVByb3BlcnR5ID0gTWVzc2FnZVR5cGUuRXJyb3I7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIDI6XG5cdFx0XHRjcml0aWNhbGl0eVByb3BlcnR5ID0gTWVzc2FnZVR5cGUuV2FybmluZztcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgMzpcblx0XHRcdGNyaXRpY2FsaXR5UHJvcGVydHkgPSBNZXNzYWdlVHlwZS5TdWNjZXNzO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSA1OlxuXHRcdFx0Y3JpdGljYWxpdHlQcm9wZXJ0eSA9IE1lc3NhZ2VUeXBlLkluZm9ybWF0aW9uO1xuXHRcdFx0YnJlYWs7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdGNyaXRpY2FsaXR5UHJvcGVydHkgPSBNZXNzYWdlVHlwZS5Ob25lO1xuXHR9XG5cblx0cmV0dXJuIGNyaXRpY2FsaXR5UHJvcGVydHk7XG59O1xuY3JpdGljYWxpdHlGb3JtYXQuX19mdW5jdGlvbk5hbWUgPSBcInNhcC5mZS5jb3JlLmZvcm1hdHRlcnMuQ3JpdGljYWxpdHlGb3JtYXR0ZXIjY3JpdGljYWxpdHlGb3JtYXRcIjtcblxuLy8gU2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rL2Z1bmN0aW9ucy5odG1sI3RoaXMtcGFyYW1ldGVycyBmb3IgbW9yZSBkZXRhaWwgb24gdGhpcyB3ZWlyZCBzeW50YXhcbi8qKlxuICogQ29sbGVjdGlvbiBvZiB0YWJsZSBmb3JtYXR0ZXJzLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSB0aGlzIFRoZSBjb250ZXh0XG4gKiBAcGFyYW0ge3N0cmluZ30gc05hbWUgVGhlIGlubmVyIGZ1bmN0aW9uIG5hbWVcbiAqIEBwYXJhbSB7b2JqZWN0W119IG9BcmdzIFRoZSBpbm5lciBmdW5jdGlvbiBwYXJhbWV0ZXJzXG4gKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgdmFsdWUgZnJvbSB0aGUgaW5uZXIgZnVuY3Rpb25cbiAqL1xuY29uc3QgY3JpdGljYWxpdHlGb3JtYXR0ZXJzID0gZnVuY3Rpb24odGhpczogb2JqZWN0LCBzTmFtZTogc3RyaW5nLCAuLi5vQXJnczogYW55W10pOiBhbnkge1xuXHRpZiAoY3JpdGljYWxpdHlGb3JtYXR0ZXJzLmhhc093blByb3BlcnR5KHNOYW1lKSkge1xuXHRcdHJldHVybiAoY3JpdGljYWxpdHlGb3JtYXR0ZXJzIGFzIGFueSlbc05hbWVdLmFwcGx5KHRoaXMsIG9BcmdzKTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gXCJcIjtcblx0fVxufTtcblxuY3JpdGljYWxpdHlGb3JtYXR0ZXJzLmNyaXRpY2FsaXR5Rm9ybWF0ID0gY3JpdGljYWxpdHlGb3JtYXQ7XG5cbi8qKlxuICogQGdsb2JhbFxuICovXG5leHBvcnQgZGVmYXVsdCBjcml0aWNhbGl0eUZvcm1hdHRlcnM7XG4iXX0=
77
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNyaXRpY2FsaXR5Rm9ybWF0dGVyLnRzIl0sIm5hbWVzIjpbImNyaXRpY2FsaXR5Rm9ybWF0IiwiY3JpdGljYWxpdHlWYWx1ZSIsImNyaXRpY2FsaXR5UHJvcGVydHkiLCJNZXNzYWdlVHlwZSIsIkVycm9yIiwiV2FybmluZyIsIlN1Y2Nlc3MiLCJJbmZvcm1hdGlvbiIsIk5vbmUiLCJfX2Z1bmN0aW9uTmFtZSIsImNyaXRpY2FsaXR5Rm9ybWF0dGVycyIsInNOYW1lIiwiaGFzT3duUHJvcGVydHkiLCJvQXJncyIsImFwcGx5Il0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSxNQUFNQSxpQkFBaUIsR0FBRyxVQUFTQyxnQkFBVCxFQUF5RDtBQUNsRixRQUFJQyxtQkFBSjs7QUFDQSxRQUFJLE9BQU9ELGdCQUFQLEtBQTRCLFFBQWhDLEVBQTBDO0FBQ3pDLGFBQVFBLGdCQUFSO0FBQ0E7O0FBQ0QsWUFBUUEsZ0JBQVI7QUFDQyxXQUFLLENBQUw7QUFDQ0MsUUFBQUEsbUJBQW1CLEdBQUdDLFdBQVcsQ0FBQ0MsS0FBbEM7QUFDQTs7QUFDRCxXQUFLLENBQUw7QUFDQ0YsUUFBQUEsbUJBQW1CLEdBQUdDLFdBQVcsQ0FBQ0UsT0FBbEM7QUFDQTs7QUFDRCxXQUFLLENBQUw7QUFDQ0gsUUFBQUEsbUJBQW1CLEdBQUdDLFdBQVcsQ0FBQ0csT0FBbEM7QUFDQTs7QUFDRCxXQUFLLENBQUw7QUFDQ0osUUFBQUEsbUJBQW1CLEdBQUdDLFdBQVcsQ0FBQ0ksV0FBbEM7QUFDQTs7QUFDRDtBQUNDTCxRQUFBQSxtQkFBbUIsR0FBR0MsV0FBVyxDQUFDSyxJQUFsQztBQWRGOztBQWlCQSxXQUFPTixtQkFBUDtBQUNBLEdBdkJEOztBQXdCQUYsRUFBQUEsaUJBQWlCLENBQUNTLGNBQWxCLEdBQW1DLCtEQUFuQyxDLENBRUE7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxNQUFNQyxxQkFBcUIsR0FBRyxVQUF1QkMsS0FBdkIsRUFBNEQ7QUFDekYsUUFBSUQscUJBQXFCLENBQUNFLGNBQXRCLENBQXFDRCxLQUFyQyxDQUFKLEVBQWlEO0FBQUEsd0NBRHFCRSxLQUNyQjtBQURxQkEsUUFBQUEsS0FDckI7QUFBQTs7QUFDaEQsYUFBUUgscUJBQUQsQ0FBK0JDLEtBQS9CLEVBQXNDRyxLQUF0QyxDQUE0QyxJQUE1QyxFQUFrREQsS0FBbEQsQ0FBUDtBQUNBLEtBRkQsTUFFTztBQUNOLGFBQU8sRUFBUDtBQUNBO0FBQ0QsR0FORDs7QUFRQUgsRUFBQUEscUJBQXFCLENBQUNWLGlCQUF0QixHQUEwQ0EsaUJBQTFDO0FBRUE7QUFDQTtBQUNBOztTQUNlVSxxQiIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWVzc2FnZVR5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9UYWJsZUZvcm1hdHRlclR5cGVzXCI7XG5cbi8qKlxuICogY3JpdGljYWxpdHkgZm9ybWF0dGluZ1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gY3JpdGljYWxpdHlWYWx1ZSBjcml0aWNhbGl0eSB2YWx1ZVxuICogQHJldHVybnMge29iamVjdH0gVGhlIGZvcm1hdHRlZCBjcml0aWNhbGl0eVxuICovXG5cbmNvbnN0IGNyaXRpY2FsaXR5Rm9ybWF0ID0gZnVuY3Rpb24oY3JpdGljYWxpdHlWYWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogTWVzc2FnZVR5cGUge1xuXHRsZXQgY3JpdGljYWxpdHlQcm9wZXJ0eTtcblx0aWYgKHR5cGVvZiBjcml0aWNhbGl0eVZhbHVlID09PSBcInN0cmluZ1wiKSB7XG5cdFx0cmV0dXJuIChjcml0aWNhbGl0eVZhbHVlIGFzIHVua25vd24pIGFzIE1lc3NhZ2VUeXBlO1xuXHR9XG5cdHN3aXRjaCAoY3JpdGljYWxpdHlWYWx1ZSkge1xuXHRcdGNhc2UgMTpcblx0XHRcdGNyaXRpY2FsaXR5UHJvcGVydHkgPSBNZXNzYWdlVHlwZS5FcnJvcjtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgMjpcblx0XHRcdGNyaXRpY2FsaXR5UHJvcGVydHkgPSBNZXNzYWdlVHlwZS5XYXJuaW5nO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAzOlxuXHRcdFx0Y3JpdGljYWxpdHlQcm9wZXJ0eSA9IE1lc3NhZ2VUeXBlLlN1Y2Nlc3M7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIDU6XG5cdFx0XHRjcml0aWNhbGl0eVByb3BlcnR5ID0gTWVzc2FnZVR5cGUuSW5mb3JtYXRpb247XG5cdFx0XHRicmVhaztcblx0XHRkZWZhdWx0OlxuXHRcdFx0Y3JpdGljYWxpdHlQcm9wZXJ0eSA9IE1lc3NhZ2VUeXBlLk5vbmU7XG5cdH1cblxuXHRyZXR1cm4gY3JpdGljYWxpdHlQcm9wZXJ0eTtcbn07XG5jcml0aWNhbGl0eUZvcm1hdC5fX2Z1bmN0aW9uTmFtZSA9IFwic2FwLmZlLmNvcmUuZm9ybWF0dGVycy5Dcml0aWNhbGl0eUZvcm1hdHRlciNjcml0aWNhbGl0eUZvcm1hdFwiO1xuXG4vLyBTZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svZnVuY3Rpb25zLmh0bWwjdGhpcy1wYXJhbWV0ZXJzIGZvciBtb3JlIGRldGFpbCBvbiB0aGlzIHdlaXJkIHN5bnRheFxuLyoqXG4gKiBDb2xsZWN0aW9uIG9mIHRhYmxlIGZvcm1hdHRlcnMuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHRoaXMgVGhlIGNvbnRleHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBzTmFtZSBUaGUgaW5uZXIgZnVuY3Rpb24gbmFtZVxuICogQHBhcmFtIHtvYmplY3RbXX0gb0FyZ3MgVGhlIGlubmVyIGZ1bmN0aW9uIHBhcmFtZXRlcnNcbiAqIEByZXR1cm5zIHtvYmplY3R9IFRoZSB2YWx1ZSBmcm9tIHRoZSBpbm5lciBmdW5jdGlvblxuICovXG5jb25zdCBjcml0aWNhbGl0eUZvcm1hdHRlcnMgPSBmdW5jdGlvbih0aGlzOiBvYmplY3QsIHNOYW1lOiBzdHJpbmcsIC4uLm9BcmdzOiBhbnlbXSk6IGFueSB7XG5cdGlmIChjcml0aWNhbGl0eUZvcm1hdHRlcnMuaGFzT3duUHJvcGVydHkoc05hbWUpKSB7XG5cdFx0cmV0dXJuIChjcml0aWNhbGl0eUZvcm1hdHRlcnMgYXMgYW55KVtzTmFtZV0uYXBwbHkodGhpcywgb0FyZ3MpO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBcIlwiO1xuXHR9XG59O1xuXG5jcml0aWNhbGl0eUZvcm1hdHRlcnMuY3JpdGljYWxpdHlGb3JtYXQgPSBjcml0aWNhbGl0eUZvcm1hdDtcblxuLyoqXG4gKiBAZ2xvYmFsXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNyaXRpY2FsaXR5Rm9ybWF0dGVycztcbiJdfQ==
@@ -48,4 +48,4 @@ sap.ui.define([], function () {
48
48
 
49
49
  return fpmFormatter;
50
50
  }, true);
51
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZQTUZvcm1hdHRlci50cyJdLCJuYW1lcyI6WyJjdXN0b21Jc0VuYWJsZWRDaGVjayIsIm9WaWV3IiwibW9kdWxlUGF0aCIsImFTZWxlY3RlZENvbnRleHRzIiwib0V4dGVuc2lvbkFQSSIsImdldENvbnRyb2xsZXIiLCJnZXRFeHRlbnNpb25BUEkiLCJwYXJ0cyIsInNwbGl0IiwibWV0aG9kTmFtZSIsInBvcCIsIm1vZHVsZU5hbWUiLCJqb2luIiwiUHJvbWlzZSIsInJlc29sdmUiLCJzYXAiLCJ1aSIsInJlcXVpcmUiLCJtb2R1bGUiLCJiaW5kIiwiZ2V0QmluZGluZ0NvbnRleHQiLCJfX2Z1bmN0aW9uTmFtZSIsImZwbUZvcm1hdHRlciIsInNOYW1lIiwiaGFzT3duUHJvcGVydHkiLCJvQXJncyIsImFwcGx5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBS0EsTUFBTUEsb0JBQW9CLEdBQUcsVUFBOEJDLEtBQTlCLEVBQTJDQyxVQUEzQyxFQUErREMsaUJBQS9ELEVBQTRHO0FBQUE7O0FBQ3hJLFFBQU1DLGFBQWEsR0FBS0gsS0FBSyxDQUFDSSxhQUFOLEVBQUYsQ0FBbURDLGVBQW5ELEVBQXRCO0FBQ0EsUUFBTUMsS0FBSyxHQUFHTCxVQUFVLENBQUNNLEtBQVgsQ0FBaUIsR0FBakIsQ0FBZDtBQUNBLFFBQU1DLFVBQVUsR0FBR0YsS0FBSyxDQUFDRyxHQUFOLEVBQW5CO0FBQ0EsUUFBTUMsVUFBVSxHQUFHSixLQUFLLENBQUNLLElBQU4sQ0FBVyxHQUFYLENBQW5CO0FBRUEsV0FBTyxJQUFJQyxPQUFKLENBQVksVUFBQUMsT0FBTyxFQUFJO0FBQzdCQyxNQUFBQSxHQUFHLENBQUNDLEVBQUosQ0FBT0MsT0FBUCxDQUFlLENBQUNOLFVBQUQsQ0FBZixFQUE2QixVQUFDTyxNQUFELEVBQWlCO0FBQzdDSixRQUFBQSxPQUFPLENBQUNJLE1BQU0sQ0FBQ1QsVUFBRCxDQUFOLENBQW1CVSxJQUFuQixDQUF3QmYsYUFBeEIsRUFBdUMsS0FBSSxDQUFDZ0IsaUJBQUwsRUFBdkMsRUFBaUVqQixpQkFBaUIsSUFBSSxFQUF0RixDQUFELENBQVA7QUFDQSxPQUZEO0FBR0EsS0FKTSxDQUFQO0FBS0EsR0FYRDs7QUFZQUgsRUFBQUEsb0JBQW9CLENBQUNxQixjQUFyQixHQUFzQywwREFBdEM7QUFFQTs7Ozs7Ozs7O0FBUUEsTUFBTUMsWUFBWSxHQUFHLFVBQXVCQyxLQUF2QixFQUE0RDtBQUNoRixRQUFJRCxZQUFZLENBQUNFLGNBQWIsQ0FBNEJELEtBQTVCLENBQUosRUFBd0M7QUFBQSx3Q0FEcUJFLEtBQ3JCO0FBRHFCQSxRQUFBQSxLQUNyQjtBQUFBOztBQUN2QyxhQUFRSCxZQUFELENBQXNCQyxLQUF0QixFQUE2QkcsS0FBN0IsQ0FBbUMsSUFBbkMsRUFBeUNELEtBQXpDLENBQVA7QUFDQSxLQUZELE1BRU87QUFDTixhQUFPLEVBQVA7QUFDQTtBQUNELEdBTkQ7O0FBUUFILEVBQUFBLFlBQVksQ0FBQ3RCLG9CQUFiLEdBQW9DQSxvQkFBcEM7QUFFQTs7OztTQUdlc0IsWSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gXCJzYXAvdWkvbW9kZWxcIjtcbmltcG9ydCB7IE1hbmFnZWRPYmplY3QgfSBmcm9tIFwic2FwL3VpL2Jhc2VcIjtcbmltcG9ydCB7IFZpZXcgfSBmcm9tIFwic2FwL3VpL2NvcmUvbXZjXCI7XG5pbXBvcnQgeyBQYWdlQ29udHJvbGxlciB9IGZyb20gXCJzYXAvZmUvY29yZVwiO1xuXG5jb25zdCBjdXN0b21Jc0VuYWJsZWRDaGVjayA9IGZ1bmN0aW9uKHRoaXM6IE1hbmFnZWRPYmplY3QsIG9WaWV3OiBWaWV3LCBtb2R1bGVQYXRoOiBzdHJpbmcsIGFTZWxlY3RlZENvbnRleHRzOiBDb250ZXh0W10pOiBQcm9taXNlPHZvaWQ+IHtcblx0Y29uc3Qgb0V4dGVuc2lvbkFQSSA9ICgob1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIGFueSkgYXMgUGFnZUNvbnRyb2xsZXIpLmdldEV4dGVuc2lvbkFQSSgpO1xuXHRjb25zdCBwYXJ0cyA9IG1vZHVsZVBhdGguc3BsaXQoXCIuXCIpO1xuXHRjb25zdCBtZXRob2ROYW1lID0gcGFydHMucG9wKCkgYXMgc3RyaW5nO1xuXHRjb25zdCBtb2R1bGVOYW1lID0gcGFydHMuam9pbihcIi9cIik7XG5cblx0cmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuXHRcdHNhcC51aS5yZXF1aXJlKFttb2R1bGVOYW1lXSwgKG1vZHVsZTogYW55KSA9PiB7XG5cdFx0XHRyZXNvbHZlKG1vZHVsZVttZXRob2ROYW1lXS5iaW5kKG9FeHRlbnNpb25BUEkpKHRoaXMuZ2V0QmluZGluZ0NvbnRleHQoKSwgYVNlbGVjdGVkQ29udGV4dHMgfHwgW10pKTtcblx0XHR9KTtcblx0fSk7XG59O1xuY3VzdG9tSXNFbmFibGVkQ2hlY2suX19mdW5jdGlvbk5hbWUgPSBcInNhcC5mZS5jb3JlLmZvcm1hdHRlcnMuRlBNRm9ybWF0dGVyI2N1c3RvbUlzRW5hYmxlZENoZWNrXCI7XG5cbi8qKlxuICogQ29sbGVjdGlvbiBvZiB0YWJsZSBmb3JtYXR0ZXJzLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSB0aGlzIFRoZSBjb250ZXh0XG4gKiBAcGFyYW0ge3N0cmluZ30gc05hbWUgVGhlIGlubmVyIGZ1bmN0aW9uIG5hbWVcbiAqIEBwYXJhbSB7b2JqZWN0W119IG9BcmdzIFRoZSBpbm5lciBmdW5jdGlvbiBwYXJhbWV0ZXJzXG4gKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgdmFsdWUgZnJvbSB0aGUgaW5uZXIgZnVuY3Rpb25cbiAqL1xuY29uc3QgZnBtRm9ybWF0dGVyID0gZnVuY3Rpb24odGhpczogb2JqZWN0LCBzTmFtZTogc3RyaW5nLCAuLi5vQXJnczogYW55W10pOiBhbnkge1xuXHRpZiAoZnBtRm9ybWF0dGVyLmhhc093blByb3BlcnR5KHNOYW1lKSkge1xuXHRcdHJldHVybiAoZnBtRm9ybWF0dGVyIGFzIGFueSlbc05hbWVdLmFwcGx5KHRoaXMsIG9BcmdzKTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gXCJcIjtcblx0fVxufTtcblxuZnBtRm9ybWF0dGVyLmN1c3RvbUlzRW5hYmxlZENoZWNrID0gY3VzdG9tSXNFbmFibGVkQ2hlY2s7XG5cbi8qKlxuICogQGdsb2JhbFxuICovXG5leHBvcnQgZGVmYXVsdCBmcG1Gb3JtYXR0ZXI7XG4iXX0=
51
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZQTUZvcm1hdHRlci50cyJdLCJuYW1lcyI6WyJjdXN0b21Jc0VuYWJsZWRDaGVjayIsIm9WaWV3IiwibW9kdWxlUGF0aCIsImFTZWxlY3RlZENvbnRleHRzIiwib0V4dGVuc2lvbkFQSSIsImdldENvbnRyb2xsZXIiLCJnZXRFeHRlbnNpb25BUEkiLCJwYXJ0cyIsInNwbGl0IiwibWV0aG9kTmFtZSIsInBvcCIsIm1vZHVsZU5hbWUiLCJqb2luIiwiUHJvbWlzZSIsInJlc29sdmUiLCJzYXAiLCJ1aSIsInJlcXVpcmUiLCJtb2R1bGUiLCJiaW5kIiwiZ2V0QmluZGluZ0NvbnRleHQiLCJfX2Z1bmN0aW9uTmFtZSIsImZwbUZvcm1hdHRlciIsInNOYW1lIiwiaGFzT3duUHJvcGVydHkiLCJvQXJncyIsImFwcGx5Il0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7O0FBR0EsTUFBTUEsb0JBQW9CLEdBQUcsVUFFNUJDLEtBRjRCLEVBRzVCQyxVQUg0QixFQUk1QkMsaUJBSjRCLEVBS1o7QUFBQTs7QUFDaEIsUUFBTUMsYUFBYSxHQUFJSCxLQUFLLENBQUNJLGFBQU4sRUFBRCxDQUErQkMsZUFBL0IsRUFBdEI7QUFDQSxRQUFNQyxLQUFLLEdBQUdMLFVBQVUsQ0FBQ00sS0FBWCxDQUFpQixHQUFqQixDQUFkO0FBQ0EsUUFBTUMsVUFBVSxHQUFHRixLQUFLLENBQUNHLEdBQU4sRUFBbkI7QUFDQSxRQUFNQyxVQUFVLEdBQUdKLEtBQUssQ0FBQ0ssSUFBTixDQUFXLEdBQVgsQ0FBbkI7QUFFQSxXQUFPLElBQUlDLE9BQUosQ0FBWSxVQUFBQyxPQUFPLEVBQUk7QUFDN0JDLE1BQUFBLEdBQUcsQ0FBQ0MsRUFBSixDQUFPQyxPQUFQLENBQWUsQ0FBQ04sVUFBRCxDQUFmLEVBQTZCLFVBQUNPLE1BQUQsRUFBaUI7QUFDN0NKLFFBQUFBLE9BQU8sQ0FBQ0ksTUFBTSxDQUFDVCxVQUFELENBQU4sQ0FBbUJVLElBQW5CLENBQXdCZixhQUF4QixFQUF1QyxLQUFJLENBQUNnQixpQkFBTCxFQUF2QyxFQUFpRWpCLGlCQUFpQixJQUFJLEVBQXRGLENBQUQsQ0FBUDtBQUNBLE9BRkQ7QUFHQSxLQUpNLENBQVA7QUFLQSxHQWhCRDs7QUFpQkFILEVBQUFBLG9CQUFvQixDQUFDcUIsY0FBckIsR0FBc0MsMERBQXRDO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxNQUFNQyxZQUFZLEdBQUcsVUFBdUJDLEtBQXZCLEVBQTREO0FBQ2hGLFFBQUlELFlBQVksQ0FBQ0UsY0FBYixDQUE0QkQsS0FBNUIsQ0FBSixFQUF3QztBQUFBLHdDQURxQkUsS0FDckI7QUFEcUJBLFFBQUFBLEtBQ3JCO0FBQUE7O0FBQ3ZDLGFBQVFILFlBQUQsQ0FBc0JDLEtBQXRCLEVBQTZCRyxLQUE3QixDQUFtQyxJQUFuQyxFQUF5Q0QsS0FBekMsQ0FBUDtBQUNBLEtBRkQsTUFFTztBQUNOLGFBQU8sRUFBUDtBQUNBO0FBQ0QsR0FORDs7QUFRQUgsRUFBQUEsWUFBWSxDQUFDdEIsb0JBQWIsR0FBb0NBLG9CQUFwQztBQUVBO0FBQ0E7QUFDQTs7U0FDZXNCLFkiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRleHQgfSBmcm9tIFwic2FwL3VpL21vZGVsXCI7XG5pbXBvcnQgeyBNYW5hZ2VkT2JqZWN0IH0gZnJvbSBcInNhcC91aS9iYXNlXCI7XG5pbXBvcnQgeyBWaWV3IH0gZnJvbSBcInNhcC91aS9jb3JlL212Y1wiO1xuaW1wb3J0IHsgT0RhdGFNb2RlbCB9IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjRcIjtcblxuY29uc3QgY3VzdG9tSXNFbmFibGVkQ2hlY2sgPSBmdW5jdGlvbihcblx0dGhpczogTWFuYWdlZE9iamVjdCxcblx0b1ZpZXc6IFZpZXcsXG5cdG1vZHVsZVBhdGg6IHN0cmluZyxcblx0YVNlbGVjdGVkQ29udGV4dHM6IENvbnRleHQ8T0RhdGFNb2RlbD5bXVxuKTogUHJvbWlzZTx2b2lkPiB7XG5cdGNvbnN0IG9FeHRlbnNpb25BUEkgPSAob1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIGFueSkuZ2V0RXh0ZW5zaW9uQVBJKCk7XG5cdGNvbnN0IHBhcnRzID0gbW9kdWxlUGF0aC5zcGxpdChcIi5cIik7XG5cdGNvbnN0IG1ldGhvZE5hbWUgPSBwYXJ0cy5wb3AoKSBhcyBzdHJpbmc7XG5cdGNvbnN0IG1vZHVsZU5hbWUgPSBwYXJ0cy5qb2luKFwiL1wiKTtcblxuXHRyZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG5cdFx0c2FwLnVpLnJlcXVpcmUoW21vZHVsZU5hbWVdLCAobW9kdWxlOiBhbnkpID0+IHtcblx0XHRcdHJlc29sdmUobW9kdWxlW21ldGhvZE5hbWVdLmJpbmQob0V4dGVuc2lvbkFQSSkodGhpcy5nZXRCaW5kaW5nQ29udGV4dCgpLCBhU2VsZWN0ZWRDb250ZXh0cyB8fCBbXSkpO1xuXHRcdH0pO1xuXHR9KTtcbn07XG5jdXN0b21Jc0VuYWJsZWRDaGVjay5fX2Z1bmN0aW9uTmFtZSA9IFwic2FwLmZlLmNvcmUuZm9ybWF0dGVycy5GUE1Gb3JtYXR0ZXIjY3VzdG9tSXNFbmFibGVkQ2hlY2tcIjtcblxuLyoqXG4gKiBDb2xsZWN0aW9uIG9mIHRhYmxlIGZvcm1hdHRlcnMuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHRoaXMgVGhlIGNvbnRleHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBzTmFtZSBUaGUgaW5uZXIgZnVuY3Rpb24gbmFtZVxuICogQHBhcmFtIHtvYmplY3RbXX0gb0FyZ3MgVGhlIGlubmVyIGZ1bmN0aW9uIHBhcmFtZXRlcnNcbiAqIEByZXR1cm5zIHtvYmplY3R9IFRoZSB2YWx1ZSBmcm9tIHRoZSBpbm5lciBmdW5jdGlvblxuICovXG5jb25zdCBmcG1Gb3JtYXR0ZXIgPSBmdW5jdGlvbih0aGlzOiBvYmplY3QsIHNOYW1lOiBzdHJpbmcsIC4uLm9BcmdzOiBhbnlbXSk6IGFueSB7XG5cdGlmIChmcG1Gb3JtYXR0ZXIuaGFzT3duUHJvcGVydHkoc05hbWUpKSB7XG5cdFx0cmV0dXJuIChmcG1Gb3JtYXR0ZXIgYXMgYW55KVtzTmFtZV0uYXBwbHkodGhpcywgb0FyZ3MpO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBcIlwiO1xuXHR9XG59O1xuXG5mcG1Gb3JtYXR0ZXIuY3VzdG9tSXNFbmFibGVkQ2hlY2sgPSBjdXN0b21Jc0VuYWJsZWRDaGVjaztcblxuLyoqXG4gKiBAZ2xvYmFsXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZwbUZvcm1hdHRlcjtcbiJdfQ==
@@ -1,10 +1,15 @@
1
1
  import { Context } from "sap/ui/model";
2
2
  import { ManagedObject } from "sap/ui/base";
3
3
  import { View } from "sap/ui/core/mvc";
4
- import { PageController } from "sap/fe/core";
4
+ import { ODataModel } from "sap/ui/model/odata/v4";
5
5
 
6
- const customIsEnabledCheck = function(this: ManagedObject, oView: View, modulePath: string, aSelectedContexts: Context[]): Promise<void> {
7
- const oExtensionAPI = ((oView.getController() as any) as PageController).getExtensionAPI();
6
+ const customIsEnabledCheck = function(
7
+ this: ManagedObject,
8
+ oView: View,
9
+ modulePath: string,
10
+ aSelectedContexts: Context<ODataModel>[]
11
+ ): Promise<void> {
12
+ const oExtensionAPI = (oView.getController() as any).getExtensionAPI();
8
13
  const parts = modulePath.split(".");
9
14
  const methodName = parts.pop() as string;
10
15
  const moduleName = parts.join("/");