@sapui5/sap.fe.core 1.135.0 → 1.136.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 (217) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/ActionRuntime.js +3 -2
  4. package/src/sap/fe/core/ActionRuntime.ts +3 -1
  5. package/src/sap/fe/core/AppComponent.js +6 -4
  6. package/src/sap/fe/core/AppComponent.ts +3 -1
  7. package/src/sap/fe/core/AppStateHandler.js +8 -6
  8. package/src/sap/fe/core/AppStateHandler.ts +7 -5
  9. package/src/sap/fe/core/CommonUtils.js +4 -1
  10. package/src/sap/fe/core/CommonUtils.ts +12 -2
  11. package/src/sap/fe/core/ExtensionAPI.js +5 -3
  12. package/src/sap/fe/core/ExtensionAPI.ts +4 -2
  13. package/src/sap/fe/core/PageController.js +13 -1
  14. package/src/sap/fe/core/PageController.ts +13 -0
  15. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +13 -5
  16. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +19 -6
  17. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.js +4 -2
  18. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.ts +3 -1
  19. package/src/sap/fe/core/controllerextensions/EditFlow.js +58 -14
  20. package/src/sap/fe/core/controllerextensions/EditFlow.ts +71 -11
  21. package/src/sap/fe/core/controllerextensions/InlineEditFlow.js +184 -17
  22. package/src/sap/fe/core/controllerextensions/InlineEditFlow.ts +204 -12
  23. package/src/sap/fe/core/controllerextensions/InternalRouting.js +12 -3
  24. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +11 -1
  25. package/src/sap/fe/core/controllerextensions/MessageHandler.js +35 -5
  26. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +41 -1
  27. package/src/sap/fe/core/controllerextensions/Routing.js +6 -6
  28. package/src/sap/fe/core/controllerextensions/Routing.ts +2 -2
  29. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +3 -11
  30. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +2 -10
  31. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +11 -1
  32. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +12 -0
  33. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +21 -6
  34. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +19 -5
  35. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +17 -14
  36. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +19 -17
  37. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +2 -2
  38. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +4 -1
  39. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.js +10 -2
  40. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.ts +8 -2
  41. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.js +2 -2
  42. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.ts +1 -1
  43. package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.js +1 -1
  44. package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.ts +33 -31
  45. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +2 -2
  46. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +3 -3
  47. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +4 -1
  48. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +2 -1
  49. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.js +2 -2
  50. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.tsx +8 -1
  51. package/src/sap/fe/core/controls/HideFormGroupAutomatically.js +4 -3
  52. package/src/sap/fe/core/controls/HideFormGroupAutomatically.ts +7 -2
  53. package/src/sap/fe/core/controls/inlineEditFlow/BeforeActionDialog.js +68 -0
  54. package/src/sap/fe/core/controls/inlineEditFlow/BeforeActionDialog.tsx +52 -0
  55. package/src/sap/fe/core/controls/inlineEditFlow/BeforeNavigationDialog.js +144 -0
  56. package/src/sap/fe/core/controls/inlineEditFlow/BeforeNavigationDialog.tsx +128 -0
  57. package/src/sap/fe/core/controls/inlineEditFlow/DraftExistsDialog.js +53 -0
  58. package/src/sap/fe/core/controls/inlineEditFlow/DraftExistsDialog.tsx +39 -0
  59. package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  60. package/src/sap/fe/core/converters/ManifestSettings.ts +18 -8
  61. package/src/sap/fe/core/converters/controls/Common/Action.js +54 -5
  62. package/src/sap/fe/core/converters/controls/Common/Action.ts +59 -3
  63. package/src/sap/fe/core/converters/controls/Common/Chart.js +22 -4
  64. package/src/sap/fe/core/converters/controls/Common/Chart.ts +23 -4
  65. package/src/sap/fe/core/converters/controls/Common/Form.js +13 -4
  66. package/src/sap/fe/core/converters/controls/Common/Form.ts +13 -3
  67. package/src/sap/fe/core/converters/controls/Common/Table.js +29 -9
  68. package/src/sap/fe/core/converters/controls/Common/Table.ts +38 -8
  69. package/src/sap/fe/core/converters/controls/Common/table/Columns.js +14 -16
  70. package/src/sap/fe/core/converters/controls/Common/table/Columns.ts +61 -96
  71. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +62 -13
  72. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +75 -13
  73. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +4 -33
  74. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +4 -44
  75. package/src/sap/fe/core/converters/controls/ListReport/FilterField.js +106 -0
  76. package/src/sap/fe/core/converters/controls/ListReport/FilterField.ts +129 -0
  77. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +9 -4
  78. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +8 -3
  79. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +7 -2
  80. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +5 -1
  81. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +29 -7
  82. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +40 -16
  83. package/src/sap/fe/core/designtime/AnnotationBasedChanges.js +34 -16
  84. package/src/sap/fe/core/designtime/AnnotationBasedChanges.ts +35 -16
  85. package/src/sap/fe/core/designtime/messagebundle_ar.properties +7 -0
  86. package/src/sap/fe/core/designtime/messagebundle_bg.properties +7 -0
  87. package/src/sap/fe/core/designtime/messagebundle_ca.properties +7 -0
  88. package/src/sap/fe/core/designtime/messagebundle_cnr.properties +7 -0
  89. package/src/sap/fe/core/designtime/messagebundle_cs.properties +7 -0
  90. package/src/sap/fe/core/designtime/messagebundle_cy.properties +7 -0
  91. package/src/sap/fe/core/designtime/messagebundle_da.properties +7 -0
  92. package/src/sap/fe/core/designtime/messagebundle_de.properties +7 -0
  93. package/src/sap/fe/core/designtime/messagebundle_el.properties +7 -0
  94. package/src/sap/fe/core/designtime/messagebundle_en.properties +7 -0
  95. package/src/sap/fe/core/designtime/messagebundle_en_GB.properties +7 -0
  96. package/src/sap/fe/core/designtime/messagebundle_es.properties +7 -0
  97. package/src/sap/fe/core/designtime/messagebundle_es_MX.properties +7 -0
  98. package/src/sap/fe/core/designtime/messagebundle_et.properties +7 -0
  99. package/src/sap/fe/core/designtime/messagebundle_fi.properties +7 -0
  100. package/src/sap/fe/core/designtime/messagebundle_fr.properties +7 -0
  101. package/src/sap/fe/core/designtime/messagebundle_fr_CA.properties +7 -0
  102. package/src/sap/fe/core/designtime/messagebundle_hi.properties +7 -0
  103. package/src/sap/fe/core/designtime/messagebundle_hr.properties +7 -0
  104. package/src/sap/fe/core/designtime/messagebundle_hu.properties +7 -0
  105. package/src/sap/fe/core/designtime/messagebundle_id.properties +7 -0
  106. package/src/sap/fe/core/designtime/messagebundle_it.properties +7 -0
  107. package/src/sap/fe/core/designtime/messagebundle_iw.properties +7 -0
  108. package/src/sap/fe/core/designtime/messagebundle_ja.properties +7 -0
  109. package/src/sap/fe/core/designtime/messagebundle_kk.properties +7 -0
  110. package/src/sap/fe/core/designtime/messagebundle_ko.properties +7 -0
  111. package/src/sap/fe/core/designtime/messagebundle_lt.properties +7 -0
  112. package/src/sap/fe/core/designtime/messagebundle_lv.properties +7 -0
  113. package/src/sap/fe/core/designtime/messagebundle_mk.properties +7 -0
  114. package/src/sap/fe/core/designtime/messagebundle_ms.properties +7 -0
  115. package/src/sap/fe/core/designtime/messagebundle_nl.properties +7 -0
  116. package/src/sap/fe/core/designtime/messagebundle_no.properties +7 -0
  117. package/src/sap/fe/core/designtime/messagebundle_pl.properties +7 -0
  118. package/src/sap/fe/core/designtime/messagebundle_pt.properties +7 -0
  119. package/src/sap/fe/core/designtime/messagebundle_pt_PT.properties +7 -0
  120. package/src/sap/fe/core/designtime/messagebundle_ro.properties +7 -0
  121. package/src/sap/fe/core/designtime/messagebundle_ru.properties +7 -0
  122. package/src/sap/fe/core/designtime/messagebundle_sh.properties +7 -0
  123. package/src/sap/fe/core/designtime/messagebundle_sk.properties +7 -0
  124. package/src/sap/fe/core/designtime/messagebundle_sl.properties +7 -0
  125. package/src/sap/fe/core/designtime/messagebundle_sr.properties +7 -0
  126. package/src/sap/fe/core/designtime/messagebundle_sv.properties +7 -0
  127. package/src/sap/fe/core/designtime/messagebundle_th.properties +7 -0
  128. package/src/sap/fe/core/designtime/messagebundle_tr.properties +7 -0
  129. package/src/sap/fe/core/designtime/messagebundle_uk.properties +7 -0
  130. package/src/sap/fe/core/designtime/messagebundle_vi.properties +7 -0
  131. package/src/sap/fe/core/designtime/messagebundle_zh_CN.properties +7 -0
  132. package/src/sap/fe/core/designtime/messagebundle_zh_TW.properties +7 -0
  133. package/src/sap/fe/core/fpm/manifest.json +1 -1
  134. package/src/sap/fe/core/helpers/AppStartupHelper.js +24 -3
  135. package/src/sap/fe/core/helpers/AppStartupHelper.ts +28 -2
  136. package/src/sap/fe/core/helpers/BindingHelper.js +3 -2
  137. package/src/sap/fe/core/helpers/BindingHelper.ts +2 -1
  138. package/src/sap/fe/core/helpers/DeleteHelper.js +4 -9
  139. package/src/sap/fe/core/helpers/DeleteHelper.ts +3 -8
  140. package/src/sap/fe/core/helpers/ModelHelper.js +14 -4
  141. package/src/sap/fe/core/helpers/ModelHelper.ts +15 -4
  142. package/src/sap/fe/core/helpers/PasteHelper.js +38 -39
  143. package/src/sap/fe/core/helpers/PasteHelper.ts +49 -51
  144. package/src/sap/fe/core/helpers/WebSocket.js +10 -1
  145. package/src/sap/fe/core/helpers/WebSocket.ts +8 -0
  146. package/src/sap/fe/core/library.js +1 -1
  147. package/src/sap/fe/core/messagebundle.properties +41 -2
  148. package/src/sap/fe/core/messagebundle_ar.properties +23 -2
  149. package/src/sap/fe/core/messagebundle_bg.properties +23 -2
  150. package/src/sap/fe/core/messagebundle_ca.properties +21 -0
  151. package/src/sap/fe/core/messagebundle_cnr.properties +23 -2
  152. package/src/sap/fe/core/messagebundle_cs.properties +21 -0
  153. package/src/sap/fe/core/messagebundle_cy.properties +21 -0
  154. package/src/sap/fe/core/messagebundle_da.properties +23 -2
  155. package/src/sap/fe/core/messagebundle_de.properties +23 -2
  156. package/src/sap/fe/core/messagebundle_el.properties +21 -0
  157. package/src/sap/fe/core/messagebundle_en.properties +23 -2
  158. package/src/sap/fe/core/messagebundle_en_GB.properties +23 -2
  159. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +23 -2
  160. package/src/sap/fe/core/messagebundle_es.properties +21 -0
  161. package/src/sap/fe/core/messagebundle_es_MX.properties +21 -0
  162. package/src/sap/fe/core/messagebundle_et.properties +21 -0
  163. package/src/sap/fe/core/messagebundle_fi.properties +21 -0
  164. package/src/sap/fe/core/messagebundle_fr.properties +22 -1
  165. package/src/sap/fe/core/messagebundle_fr_CA.properties +21 -0
  166. package/src/sap/fe/core/messagebundle_hi.properties +22 -1
  167. package/src/sap/fe/core/messagebundle_hr.properties +24 -3
  168. package/src/sap/fe/core/messagebundle_hu.properties +21 -0
  169. package/src/sap/fe/core/messagebundle_id.properties +21 -0
  170. package/src/sap/fe/core/messagebundle_it.properties +23 -2
  171. package/src/sap/fe/core/messagebundle_iw.properties +21 -0
  172. package/src/sap/fe/core/messagebundle_ja.properties +21 -0
  173. package/src/sap/fe/core/messagebundle_kk.properties +21 -0
  174. package/src/sap/fe/core/messagebundle_ko.properties +21 -0
  175. package/src/sap/fe/core/messagebundle_lt.properties +21 -0
  176. package/src/sap/fe/core/messagebundle_lv.properties +23 -2
  177. package/src/sap/fe/core/messagebundle_mk.properties +21 -0
  178. package/src/sap/fe/core/messagebundle_ms.properties +22 -1
  179. package/src/sap/fe/core/messagebundle_nl.properties +21 -0
  180. package/src/sap/fe/core/messagebundle_no.properties +21 -0
  181. package/src/sap/fe/core/messagebundle_pl.properties +23 -2
  182. package/src/sap/fe/core/messagebundle_pt.properties +23 -2
  183. package/src/sap/fe/core/messagebundle_pt_PT.properties +21 -0
  184. package/src/sap/fe/core/messagebundle_ro.properties +23 -2
  185. package/src/sap/fe/core/messagebundle_ru.properties +22 -1
  186. package/src/sap/fe/core/messagebundle_sh.properties +23 -2
  187. package/src/sap/fe/core/messagebundle_sk.properties +21 -0
  188. package/src/sap/fe/core/messagebundle_sl.properties +23 -2
  189. package/src/sap/fe/core/messagebundle_sr.properties +23 -2
  190. package/src/sap/fe/core/messagebundle_sv.properties +21 -0
  191. package/src/sap/fe/core/messagebundle_th.properties +21 -0
  192. package/src/sap/fe/core/messagebundle_tr.properties +21 -0
  193. package/src/sap/fe/core/messagebundle_uk.properties +23 -2
  194. package/src/sap/fe/core/messagebundle_vi.properties +23 -2
  195. package/src/sap/fe/core/messagebundle_zh_CN.properties +23 -2
  196. package/src/sap/fe/core/messagebundle_zh_TW.properties +21 -0
  197. package/src/sap/fe/core/rootView/Fcl.controller.js +5 -5
  198. package/src/sap/fe/core/rootView/Fcl.controller.ts +10 -4
  199. package/src/sap/fe/core/rootView/NavContainer.controller.js +2 -2
  200. package/src/sap/fe/core/rootView/NavContainer.controller.ts +1 -1
  201. package/src/sap/fe/core/rootView/RootViewBaseController.js +61 -9
  202. package/src/sap/fe/core/rootView/RootViewBaseController.ts +70 -7
  203. package/src/sap/fe/core/services/CollaborationManagerServiceFactory.js +28 -12
  204. package/src/sap/fe/core/services/CollaborationManagerServiceFactory.ts +27 -13
  205. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +7 -1
  206. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +6 -0
  207. package/src/sap/fe/core/services/RoutingServiceFactory.js +3 -2
  208. package/src/sap/fe/core/services/RoutingServiceFactory.ts +2 -1
  209. package/src/sap/fe/core/services/ShellServicesFactory.js +4 -3
  210. package/src/sap/fe/core/services/ShellServicesFactory.ts +5 -3
  211. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +27 -3
  212. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +32 -3
  213. package/src/sap/fe/core/services/view/TemplatingErrorPage.view.xml +1 -1
  214. package/src/sap/fe/core/templating/EntitySetHelper.js +198 -58
  215. package/src/sap/fe/core/templating/EntitySetHelper.ts +221 -61
  216. package/src/sap/fe/core/templating/SemanticObjectHelper.js +6 -7
  217. package/src/sap/fe/core/templating/SemanticObjectHelper.ts +9 -7
@@ -213,8 +213,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BuildingBlockBase", "sap/fe/base/Cla
213
213
  */;
214
214
  _proto.getDataModelObjectForMetaPath = function getDataModelObjectForMetaPath(metapath, contextPath) {
215
215
  const metaModel = this.getMetaModel();
216
- let contextPathToUse = contextPath ?? this.getOwnerContextPath();
217
- contextPathToUse = contextPathToUse?.startsWith("/") ? contextPathToUse : undefined;
216
+ const contextPathToUse = this.getComputedContextPath(contextPath);
218
217
  let resolvedContextPath;
219
218
  if (contextPathToUse) {
220
219
  resolvedContextPath = contextPathToUse.endsWith("/") ? contextPathToUse : contextPathToUse + "/";
@@ -226,6 +225,13 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BuildingBlockBase", "sap/fe/base/Cla
226
225
  metaContext = metaContext ? metaContext : undefined;
227
226
  const metaPathContext = metaModel.createBindingContext(metapath, metaContext);
228
227
  return metaPathContext ? MetaModelConverter.getInvolvedDataModelObjects(metaPathContext, metaContext) : undefined;
228
+ };
229
+ _proto.getComputedContextPath = function getComputedContextPath(contextPath) {
230
+ let contextPathToUse = contextPath ?? this.getOwnerContextPath();
231
+ if (contextPathToUse && !contextPathToUse.startsWith("/")) {
232
+ contextPathToUse = this.getOwnerContextPath() + contextPathToUse;
233
+ }
234
+ return contextPathToUse;
229
235
  }
230
236
 
231
237
  /**
@@ -236,8 +242,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BuildingBlockBase", "sap/fe/base/Cla
236
242
  */;
237
243
  _proto.getMetaPathObject = function getMetaPathObject(metaPath, contextPath) {
238
244
  const metaModel = this.getMetaModel();
239
- let contextPathToUse = contextPath ?? this.getOwnerContextPath();
240
- contextPathToUse = contextPathToUse?.startsWith("/") ? contextPathToUse : undefined;
245
+ const contextPathToUse = this.getComputedContextPath(contextPath);
241
246
  if (!metaModel || !(contextPathToUse || metaPath.charAt(0) === "/")) {
242
247
  Log.warning(`No metamodel or metaPath is not reachable with ${contextPath}:${metaPath}`);
243
248
  return null;
@@ -265,6 +270,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BuildingBlockBase", "sap/fe/base/Cla
265
270
  _proto.getManifestWrapper = function getManifestWrapper() {
266
271
  return this._getOwner()?.getManifestWrapper();
267
272
  };
273
+ _proto.getOwnerPageDefinition = function getOwnerPageDefinition() {
274
+ return this._getOwner()?.preprocessorContext?.getDefinitionForPage();
275
+ };
268
276
  return BuildingBlock;
269
277
  }(BuildingBlockBase), _BuildingBlock._bbobserverMap = new Map(), _BuildingBlock), _descriptor = _applyDecoratedDescriptor(_class2.prototype, "metaModel", [_dec2], {
270
278
  configurable: true,
@@ -274,4 +282,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BuildingBlockBase", "sap/fe/base/Cla
274
282
  }), _class2)) || _class);
275
283
  return BuildingBlock;
276
284
  }, false);
277
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCdWlsZGluZ0Jsb2NrIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJwcm9wZXJ0eSIsInR5cGUiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0J1aWxkaW5nQmxvY2siLCJfQnVpbGRpbmdCbG9ja0Jhc2UiLCJzZXR0aW5ncyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfYXBwbHlpbmdTZXR0aW5ncyIsIm5vdGlmeUJCT2JzZXJ2ZXJzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJhcHBseVNldHRpbmdzIiwibVNldHRpbmdzIiwib1Njb3BlIiwiX2NoZWNrSWZNZXRhZGF0YVJlYWR5IiwiZGVzdHJveSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImJib2JzZXJ2ZXJNYXAiLCJfYmJvYnNlcnZlck1hcCIsImdldCIsImdldElkIiwib2JzZXJ2ZUJCIiwib25EZXN0cm95Iiwib25BdmFpbGFibGUiLCJvYnNlcnZlQnVpbGRpbmdCbG9jayIsImlkIiwicGFyYW1ldGVycyIsImVsZW1lbnQiLCJFbGVtZW50UmVnaXN0cnkiLCJwdXNoIiwic2V0IiwiX2dldE93bmVyIiwiY29udHJvbCIsIm93bmVyIiwiQ29tcG9uZW50IiwiZ2V0T3duZXJDb21wb25lbnRGb3IiLCJpc0EiLCJnZXRQYXJlbnQiLCJnZXRQYWdlQ29udHJvbGxlciIsImxvZ0Vycm9yIiwicGFnZUNvbnRyb2xsZXIiLCJnZXRSb290Q29udHJvbGxlciIsIkxvZyIsImVycm9yIiwiZ2V0TWV0YU1vZGVsIiwibWV0YU1vZGVsIiwic3RhcnRzV2l0aCIsImdldE1ldGFNb2RlbEJ5SWQiLCJzdXBwcmVzc0ludmFsaWRhdGUiLCJ2aWV3U3RhdGUiLCJkZXJlZ2lzdGVyU3RhdGVDb250cmlidXRvciIsInJlbW92ZUNvbnRyb2xsZXJFeHRlbnNpb25Ib29rSGFuZGxlcnMiLCJmcm9tQXBwbHlTZXR0aW5ncyIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJyZWdpc3RlclN0YXRlQ29udHJpYnV0b3IiLCJpbml0Q29udHJvbGxlckV4dGVuc2lvbkhvb2tIYW5kbGVycyIsImNvbnRlbnQiLCJ3YXJuaW5nIiwiYXR0YWNoRXZlbnRPbmNlIiwiY2xvbmUiLCJzSWRTdWZmaXgiLCJhTG9jYWxJZHMiLCJydW5Bc093bmVyIiwiX293bmVyQ29tcG9uZW50IiwiZ2V0QXBwQ29tcG9uZW50IiwiZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCIsInRhcmdldFBhdGgiLCJ0YXJnZXRQYXRoVG9Vc2UiLCJnZXRPd25lckNvbnRleHRQYXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzRm9yVGFyZ2V0UGF0aCIsImdldEZ1bGxDb250ZXh0UGF0aCIsImdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoIiwibWV0YXBhdGgiLCJjb250ZXh0UGF0aCIsImNvbnRleHRQYXRoVG9Vc2UiLCJyZXNvbHZlZENvbnRleHRQYXRoIiwiZW5kc1dpdGgiLCJjaGFyQXQiLCJFcnJvciIsIm1ldGFDb250ZXh0IiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJtZXRhUGF0aENvbnRleHQiLCJNZXRhTW9kZWxDb252ZXJ0ZXIiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJnZXRNZXRhUGF0aE9iamVjdCIsIm1ldGFQYXRoIiwiTWV0YVBhdGgiLCJjb252ZXJ0VHlwZXMiLCJlIiwiY3JlYXRlSWQiLCJfbGVuIiwic3RyaW5nUGFydHMiLCJBcnJheSIsIl9rZXkiLCJnZW5lcmF0ZSIsImdldFRyYW5zbGF0ZWRUZXh0IiwidGV4dElEIiwiZ2V0TW9kZWwiLCJnZXRUZXh0IiwiZ2V0TWFuaWZlc3RXcmFwcGVyIiwiQnVpbGRpbmdCbG9ja0Jhc2UiLCJNYXAiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkJ1aWxkaW5nQmxvY2sudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9ja0Jhc2UgZnJvbSBcInNhcC9mZS9iYXNlL0J1aWxkaW5nQmxvY2tCYXNlXCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBwcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGluaXRDb250cm9sbGVyRXh0ZW5zaW9uSG9va0hhbmRsZXJzLCByZW1vdmVDb250cm9sbGVyRXh0ZW5zaW9uSG9va0hhbmRsZXJzIH0gZnJvbSBcInNhcC9mZS9iYXNlL0hvb2tTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSB7IEZFVmlldyB9IGZyb20gXCJzYXAvZmUvY29yZS9CYXNlQ29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSBSZXNvdXJjZU1vZGVsIGZyb20gXCJzYXAvZmUvY29yZS9SZXNvdXJjZU1vZGVsXCI7XG5pbXBvcnQgdHlwZSBUZW1wbGF0ZUNvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvVGVtcGxhdGVDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIElWaWV3U3RhdGVDb250cmlidXRvciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvdmlld1N0YXRlL0lWaWV3U3RhdGVDb250cmlidXRvclwiO1xuaW1wb3J0IHR5cGUgTWFuaWZlc3RXcmFwcGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01hbmlmZXN0V3JhcHBlclwiO1xuaW1wb3J0ICogYXMgTWV0YU1vZGVsQ29udmVydGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHsgY29udmVydFR5cGVzLCBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHNGb3JUYXJnZXRQYXRoLCBnZXRNZXRhTW9kZWxCeUlkIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgTWV0YVBhdGggZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTWV0YVBhdGhcIjtcbmltcG9ydCB0eXBlIHsgQXV0aG9yaXplZElkQW5ub3RhdGlvbnNUeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB7IGdlbmVyYXRlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB0eXBlIE1hbmFnZWRPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIHsgJE1hbmFnZWRPYmplY3RTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgQ29tcG9uZW50IGZyb20gXCJzYXAvdWkvY29yZS9Db21wb25lbnRcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCBFbGVtZW50UmVnaXN0cnkgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRSZWdpc3RyeVwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgQXBwQ29tcG9uZW50IGZyb20gXCIuLi9BcHBDb21wb25lbnRcIjtcblxuZXhwb3J0IHR5cGUgT2JzZXJ2ZUJ1aWxkaW5nQmxvY2sgPSB7XG5cdG9uQXZhaWxhYmxlPzogKGJiOiBVSTVFbGVtZW50KSA9PiB2b2lkO1xuXHRvbkRlc3Ryb3k/OiAoYmI6IFVJNUVsZW1lbnQpID0+IHZvaWQ7XG59O1xuLyoqXG4gKiBEZWZpbmVzIGEgY29udHJvbCB0aGF0IHdpbGwgbm90IGV4aXN0IGluIHRoZSBET00uXG4gKiBJbnN0ZWFkLCBvbmx5IGl0cyBjaGlsZCB3aWxsIGJlIHRoZXJlIGFuZCB0aGlzIGNvbnRyb2wgd2lsbCBmb3J3YXJkIGFsbCBET00gcmVsYXRlZCBpbnN0cnVjdGlvbiB0byBpdC5cbiAqIEBleHBlcmltZW50YWxcbiAqIEBzaW5jZSAxLjEyMS4wXG4gKiBAcHVibGljXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmJ1aWxkaW5nQmxvY2tzLkJ1aWxkaW5nQmxvY2tcIilcbmNsYXNzIEJ1aWxkaW5nQmxvY2s8VCBleHRlbmRzIFVJNUVsZW1lbnQgPSBDb250cm9sLCBLIGV4dGVuZHMgb2JqZWN0ID0ge30+IGV4dGVuZHMgQnVpbGRpbmdCbG9ja0Jhc2U8VCwgSz4ge1xuXHQvKipcblx0ICogVGhlIG1ldGFtb2RlbCBuYW1lIG9yIGlkIHRvIGJlIHVzZWQgZm9yIHRoaXMgYnVpbGRpbmcgYmxvY2tcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0bWV0YU1vZGVsPzogc3RyaW5nO1xuXG5cdHByb3RlY3RlZCBfYXBwbHlpbmdTZXR0aW5ncyA9IGZhbHNlO1xuXG5cdHByaXZhdGUgc3RhdGljIF9iYm9ic2VydmVyTWFwOiBNYXA8c3RyaW5nLCBPYnNlcnZlQnVpbGRpbmdCbG9ja1tdPiA9IG5ldyBNYXAoKTtcblxuXHRjb25zdHJ1Y3RvcihzZXR0aW5ncz86IHN0cmluZyB8IFByb3BlcnRpZXNPZjxCdWlsZGluZ0Jsb2NrQmFzZTxUPj4sIG90aGVycz86IFByb3BlcnRpZXNPZjxCdWlsZGluZ0Jsb2NrQmFzZTxUPj4pIHtcblx0XHRzdXBlcihzZXR0aW5ncywgb3RoZXJzKTtcblx0XHR0aGlzLm5vdGlmeUJCT2JzZXJ2ZXJzKCk7XG5cdH1cblxuXHRvdmVycmlkZSBhcHBseVNldHRpbmdzKG1TZXR0aW5nczogJE1hbmFnZWRPYmplY3RTZXR0aW5ncywgb1Njb3BlPzogb2JqZWN0KTogdGhpcyB7XG5cdFx0dGhpcy5fYXBwbHlpbmdTZXR0aW5ncyA9IHRydWU7XG5cdFx0c3VwZXIuYXBwbHlTZXR0aW5ncyhtU2V0dGluZ3MsIG9TY29wZSk7XG5cdFx0dGhpcy5fYXBwbHlpbmdTZXR0aW5ncyA9IGZhbHNlO1xuXHRcdHRoaXMuX2NoZWNrSWZNZXRhZGF0YVJlYWR5KHRydWUpO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRub3RpZnlCQk9ic2VydmVycyhkZXN0cm95ID0gZmFsc2UpOiB2b2lkIHtcblx0XHRjb25zdCBiYm9ic2VydmVyTWFwID0gQnVpbGRpbmdCbG9jay5fYmJvYnNlcnZlck1hcC5nZXQodGhpcy5nZXRJZCgpKTtcblx0XHRpZiAoYmJvYnNlcnZlck1hcCAmJiBiYm9ic2VydmVyTWFwLmxlbmd0aCA+IDApIHtcblx0XHRcdGZvciAoY29uc3Qgb2JzZXJ2ZUJCIG9mIGJib2JzZXJ2ZXJNYXApIHtcblx0XHRcdFx0aWYgKGRlc3Ryb3kpIHtcblx0XHRcdFx0XHRpZiAob2JzZXJ2ZUJCLm9uRGVzdHJveSkge1xuXHRcdFx0XHRcdFx0b2JzZXJ2ZUJCLm9uRGVzdHJveSh0aGlzKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSBpZiAob2JzZXJ2ZUJCLm9uQXZhaWxhYmxlKSB7XG5cdFx0XHRcdFx0b2JzZXJ2ZUJCLm9uQXZhaWxhYmxlKHRoaXMpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEFsbG93cyB0byBvYnNlcnZlIGJ1aWxkaW5nIGJsb2NrIG9uY2UgaXQgaXMgY3JlYXRlZC5cblx0ICogQHBhcmFtIGlkIFRoZSBpZCBvZiB0aGUgYnVpbGRpbmcgYmxvY2sgd2hpY2ggd2lsbCBiZSBvYnNlcnZlZFxuXHQgKiBAcGFyYW0gcGFyYW1ldGVycyBUaGUgaWQgb2YgdGhlIGJ1aWxkaW5nIGJsb2NrIHdoaWNoIGlzIGJlaW5nIHJlcXVzdGVkXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzLm9uQXZhaWxhYmxlIENhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCB3aXRoIHRoZSBpbnN0YW5jZSBvZiB0aGUgQkIgd2hlbiBpdCBpcyBhdmFpbGFibGVcblx0ICogQHBhcmFtIHBhcmFtZXRlcnMub25EZXN0cm95IENhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCB3aXRoIHRoZSBpbnN0YW5jZSBvZiB0aGUgQkIgd2hlbiBpdCBpcyBkZXN0cm95ZWRcblx0ICovXG5cdHN0YXRpYyBvYnNlcnZlQnVpbGRpbmdCbG9jayhpZDogc3RyaW5nLCBwYXJhbWV0ZXJzOiBPYnNlcnZlQnVpbGRpbmdCbG9jayk6IHZvaWQge1xuXHRcdC8vaWYgKHBhcmFtZXRlcnMpXG5cdFx0Y29uc3QgZWxlbWVudCA9IEVsZW1lbnRSZWdpc3RyeS5nZXQoaWQpO1xuXHRcdC8vIGlmIHRoZSBlbGVtZW50IGlzIGFscmVhZHkgcmVnaXN0ZXJlZFxuXHRcdGlmIChlbGVtZW50KSB7XG5cdFx0XHRpZiAocGFyYW1ldGVycy5vbkF2YWlsYWJsZSkge1xuXHRcdFx0XHRwYXJhbWV0ZXJzLm9uQXZhaWxhYmxlKGVsZW1lbnQpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBiYm9ic2VydmVyTWFwID0gQnVpbGRpbmdCbG9jay5fYmJvYnNlcnZlck1hcC5nZXQoaWQpO1xuXHRcdFx0aWYgKGJib2JzZXJ2ZXJNYXApIHtcblx0XHRcdFx0YmJvYnNlcnZlck1hcC5wdXNoKHBhcmFtZXRlcnMpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0QnVpbGRpbmdCbG9jay5fYmJvYnNlcnZlck1hcC5zZXQoaWQsIFtwYXJhbWV0ZXJzXSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgaW5zdGFuY2Ugb2YgYSBidWlsZGluZyBibG9jayBiYXNlZCBvbmNlIGl0IGlzIHJlZ2lzdGVyZWQuXG5cdCAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIGJ1aWxkaW5nIGJsb2NrIHdoaWNoIGlzIGJlaW5nIHJlcXVzdGVkXG5cdCAqIEByZXR1cm5zIFByb21pc2UgcmVzb2x2ZWQgd2l0aCBhbiBpbnN0YW5jZSBvZiB0aGUgYnVpbGRpbmcgYmxvY2sgb25jZSBpdCBpcyByZWdpc3RlcmVkL2luc3RhbnRpZWQuXG5cdCAqIFx0IFRoZSBwcm9taXNlIGlzIHJlc29sdmVkIHdoZW4gdGhlIGJ1aWxkaW5nIGJsb2NrIGlzIGludGFudGllZCBoZW5jZSBpdCByZWNvbW1lbmRlZCB0byBvbmx5IGF3YWl0IG9uIHRoZSBwcm9taXNlXG5cdCAqIFx0IHdoZW4gaXQgaXMga25vd24gdGhhdCB0aGUgYnVpbGRpbmcgYmxvY2sgd2lsbCBiZSBhdmFpbGFibGUuIEluIGNhc2VzIGhlcmUgdGhlIGJ1aWxkaW5nIGJsb2NrIG1pZ2h0IG5vdCBiZSBhdmFpbGFibGUsXG5cdCAqIFx0IGZvciBleGFtcGxlIGJlY3Vhc2Ugb2YgbGF6eSBsb2FkaW5nLCB0aGVuIGl0IGlzIHJlY29tbWVuZGVkIG5vdCB0byBhd2FpdCBvbiB0aGUgcHJvbWlzZSBhbmQgaW5zdGVhZCB1c2UgUHJvbWlzZS50aGVuKCkuXG5cdCAqL1xuXG5cdF9nZXRPd25lcigpOiBUZW1wbGF0ZUNvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG5cdFx0Ly9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXNcblx0XHRsZXQgY29udHJvbDogQ29udHJvbCB8IHVuZGVmaW5lZCA9IHRoaXM7XG5cdFx0bGV0IG93bmVyID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKGNvbnRyb2wpO1xuXHRcdHdoaWxlICghb3duZXIgJiYgY29udHJvbCAmJiAhY29udHJvbC5pc0E8RkVWaWV3PihcInNhcC51aS5jb3JlLm12Yy5WaWV3XCIpKSB7XG5cdFx0XHRjb250cm9sID0gY29udHJvbC5nZXRQYXJlbnQoKSBhcyBDb250cm9sIHwgdW5kZWZpbmVkO1xuXHRcdFx0aWYgKGNvbnRyb2wpIHtcblx0XHRcdFx0b3duZXIgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IoY29udHJvbCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChvd25lcj8uaXNBPFRlbXBsYXRlQ29tcG9uZW50PihcInNhcC5mZS5jb3JlLlRlbXBsYXRlQ29tcG9uZW50XCIpKSB7XG5cdFx0XHRyZXR1cm4gb3duZXI7XG5cdFx0fVxuXHRcdGlmIChvd25lcj8uaXNBPFRlbXBsYXRlQ29tcG9uZW50PihcInNhcC5mZS5jb3JlLmJ1aWxkaW5nQmxvY2tzLklCdWlsZGluZ0Jsb2NrT3duZXJDb21wb25lbnRcIikpIHtcblx0XHRcdHJldHVybiBvd25lcjtcblx0XHR9XG5cdH1cblxuXHQvKlxuXHQgKiBHZXQgdGhlIHBhZ2UgY29udHJvbGxlciBpbnN0YW5jZVxuXHQgKiBAcGFyYW0gbG9nRXJyb3IgV2hldGhlciB0byBsb2cgYW4gZXJyb3IgaWYgdGhlIHBhZ2UgY29udHJvbGxlciBpcyBub3QgZm91bmRcblx0ICogQHJldHVybnMgVGhlIHBhZ2UgY29udHJvbGxlciBpbnN0YW5jZVxuXHQgKi9cblx0Z2V0UGFnZUNvbnRyb2xsZXIobG9nRXJyb3IgPSB0cnVlKTogUGFnZUNvbnRyb2xsZXIge1xuXHRcdGNvbnN0IHBhZ2VDb250cm9sbGVyID0gdGhpcy5fZ2V0T3duZXIoKT8uZ2V0Um9vdENvbnRyb2xsZXI/LigpO1xuXHRcdGlmICghcGFnZUNvbnRyb2xsZXIgJiYgbG9nRXJyb3IpIHtcblx0XHRcdExvZy5lcnJvcihcIk5vIHNhcC5mZS5jb3JlLlBhZ2VDb250cm9sbGVyIGZvdW5kXCIpO1xuXHRcdH1cblx0XHRyZXR1cm4gcGFnZUNvbnRyb2xsZXIhO1xuXHR9XG5cblx0Z2V0TWV0YU1vZGVsKCk6IE9EYXRhTWV0YU1vZGVsIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCk7XG5cdFx0aWYgKG93bmVyPy5pc0E8VGVtcGxhdGVDb21wb25lbnQ+KFwic2FwLmZlLmNvcmUuYnVpbGRpbmdCbG9ja3MuSUJ1aWxkaW5nQmxvY2tPd25lckNvbXBvbmVudFwiKSkge1xuXHRcdFx0bGV0IG1ldGFNb2RlbCA9IG93bmVyPy5nZXRNZXRhTW9kZWwodGhpcy5tZXRhTW9kZWwpO1xuXHRcdFx0Ly8gRmFsbGJhY2sgaW4gY2FzZSB0aGV5IGRvbid0IGFwcGx5IHRoZSBsb2dpYyBmb3IgdGhlIG1ldGFtb2RlbCBjb252ZXJ0ZXJcblx0XHRcdGlmICghbWV0YU1vZGVsICYmIHRoaXMubWV0YU1vZGVsPy5zdGFydHNXaXRoKFwiaWQtXCIpKSB7XG5cdFx0XHRcdG1ldGFNb2RlbCA9IGdldE1ldGFNb2RlbEJ5SWQodGhpcy5tZXRhTW9kZWwpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG1ldGFNb2RlbDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIG93bmVyPy5nZXRNZXRhTW9kZWwodGhpcy5tZXRhTW9kZWwpO1xuXHRcdH1cblx0fVxuXG5cdG92ZXJyaWRlIGRlc3Ryb3koc3VwcHJlc3NJbnZhbGlkYXRlPzogYm9vbGVhbik6IHZvaWQge1xuXHRcdGlmICh0aGlzLmlzQTxJVmlld1N0YXRlQ29udHJpYnV0b3I8dW5rbm93bj4gJiBNYW5hZ2VkT2JqZWN0PihcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLnZpZXdTdGF0ZS5JVmlld1N0YXRlQ29udHJpYnV0b3JcIikpIHtcblx0XHRcdHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoZmFsc2UpPy52aWV3U3RhdGU/LmRlcmVnaXN0ZXJTdGF0ZUNvbnRyaWJ1dG9yKHRoaXMpO1xuXHRcdH1cblx0XHRpZiAodGhpcy5nZXRQYWdlQ29udHJvbGxlcihmYWxzZSkpIHtcblx0XHRcdHJlbW92ZUNvbnRyb2xsZXJFeHRlbnNpb25Ib29rSGFuZGxlcnModGhpcywgdGhpcy5nZXRQYWdlQ29udHJvbGxlcigpISk7XG5cdFx0fVxuXHRcdHRoaXMubm90aWZ5QkJPYnNlcnZlcnModHJ1ZSk7XG5cdFx0c3VwZXIuZGVzdHJveShzdXBwcmVzc0ludmFsaWRhdGUpO1xuXHR9XG5cblx0X2NoZWNrSWZNZXRhZGF0YVJlYWR5KGZyb21BcHBseVNldHRpbmdzID0gZmFsc2UpOiB2b2lkIHtcblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCk7XG5cdFx0aWYgKG93bmVyKSB7XG5cdFx0XHR0aGlzLm9uTWV0YWRhdGFBdmFpbGFibGUob3duZXIpO1xuXHRcdFx0aWYgKFxuXHRcdFx0XHR0aGlzLmlzQTxJVmlld1N0YXRlQ29udHJpYnV0b3I8dW5rbm93bj4gJiBNYW5hZ2VkT2JqZWN0PihcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLnZpZXdTdGF0ZS5JVmlld1N0YXRlQ29udHJpYnV0b3JcIilcblx0XHRcdCkge1xuXHRcdFx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKCk/LnZpZXdTdGF0ZS5yZWdpc3RlclN0YXRlQ29udHJpYnV0b3IodGhpcyk7XG5cdFx0XHR9XG5cdFx0XHRpZiAodGhpcy5nZXRQYWdlQ29udHJvbGxlcigpKSB7XG5cdFx0XHRcdGluaXRDb250cm9sbGVyRXh0ZW5zaW9uSG9va0hhbmRsZXJzKHRoaXMsIHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKSEpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZiAoIWZyb21BcHBseVNldHRpbmdzICYmICF0aGlzLmNvbnRlbnQpIHtcblx0XHRcdFx0Ly8gSW4gY2FzZSBjb3VsZG4ndCBjcmVhdGUgdGhlIGNvbnRlbnQgZHVyaW5nIHRoZSBhcHBseVNldHRpbmdzLCB0cnkgYWdhaW5cblx0XHRcdFx0TG9nLndhcm5pbmcoXG5cdFx0XHRcdFx0XCJUaGUgYnVpbGRpbmcgYmxvY2sgd2FzIG5vdCBjcmVhdGVkIHdpdGhpbiBhbiBFeHRlbnNpb25BUEkucnVuV2l0aEZQTUNvbnRleHQgY2FsbCwgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbiBpdCdzIHJlY29tbWVuZGVkIHRvIGRvIHNvLlwiLFxuXHRcdFx0XHRcdHRoaXMgYXMgdW5rbm93biBhcyBzdHJpbmdcblx0XHRcdFx0KTtcblx0XHRcdH1cblxuXHRcdFx0dGhpcy5hdHRhY2hFdmVudE9uY2UoXCJtb2RlbENvbnRleHRDaGFuZ2VcIiwgZnVuY3Rpb24gKHRoaXM6IEJ1aWxkaW5nQmxvY2spOiB2b2lkIHtcblx0XHRcdFx0dGhpcy5fY2hlY2tJZk1ldGFkYXRhUmVhZHkoKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdGNsb25lKHNJZFN1ZmZpeDogc3RyaW5nLCBhTG9jYWxJZHM6IHN0cmluZ1tdKTogdGhpcyB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdGlmIChvd25lcikge1xuXHRcdFx0cmV0dXJuIG93bmVyLnJ1bkFzT3duZXIoKCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gc3VwZXIuY2xvbmUoc0lkU3VmZml4LCBhTG9jYWxJZHMpO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBzdXBlci5jbG9uZShzSWRTdWZmaXgsIGFMb2NhbElkcyk7XG5cdFx0fVxuXHR9XG5cblx0b25NZXRhZGF0YUF2YWlsYWJsZShfb3duZXJDb21wb25lbnQ6IFRlbXBsYXRlQ29tcG9uZW50KTogdm9pZCB7XG5cdFx0Ly8gVG8gYmUgb3ZlcnJpZGVuIGJ5IHRoZSBjaGlsZCBjbGFzc1xuXHR9XG5cblx0Z2V0QXBwQ29tcG9uZW50KCk6IEFwcENvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdHJldHVybiBvd25lcj8uZ2V0QXBwQ29tcG9uZW50KCk7XG5cdH1cblxuXHRnZXREYXRhTW9kZWxPYmplY3RQYXRoPE4+KHRhcmdldFBhdGg/OiBzdHJpbmcpOiBEYXRhTW9kZWxPYmplY3RQYXRoPE4+IHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBtZXRhTW9kZWwgPSB0aGlzLmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IHRhcmdldFBhdGhUb1VzZSA9IHRhcmdldFBhdGggPz8gdGhpcy5nZXRPd25lckNvbnRleHRQYXRoKCk7XG5cdFx0cmV0dXJuIGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0c0ZvclRhcmdldFBhdGgodGFyZ2V0UGF0aFRvVXNlISwgbWV0YU1vZGVsKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGNvbnRleHQgcGF0aCBmcm9tIHRoZSBvd25lciBjb21wb25lbnQuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250ZXh0IHBhdGhcblx0ICovXG5cdGdldE93bmVyQ29udGV4dFBhdGgoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCkhO1xuXHRcdHJldHVybiBvd25lci5nZXRGdWxsQ29udGV4dFBhdGgodGhpcy5tZXRhTW9kZWwpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgZGF0YSBtb2RlbCBvYmplY3QgZm9yIHRoZSBnaXZlbiBtZXRhcGF0aCBhbmQgb3B0aW9uYWwgY29udGV4dFBhdGguXG5cdCAqIEBwYXJhbSBtZXRhcGF0aFxuXHQgKiBAcGFyYW0gY29udGV4dFBhdGhcblx0ICogQHJldHVybnMgVGhlIGRhdGEgbW9kZWwgb2JqZWN0IHBhdGhcblx0ICovXG5cdGdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoPEV4cGVjdGVkRGF0YU1vZGVsVHlwZT4oXG5cdFx0bWV0YXBhdGg6IHN0cmluZyxcblx0XHRjb250ZXh0UGF0aD86IHN0cmluZ1xuXHQpOiBEYXRhTW9kZWxPYmplY3RQYXRoPEV4cGVjdGVkRGF0YU1vZGVsVHlwZT4gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG1ldGFNb2RlbCA9IHRoaXMuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0bGV0IGNvbnRleHRQYXRoVG9Vc2UgPSBjb250ZXh0UGF0aCA/PyB0aGlzLmdldE93bmVyQ29udGV4dFBhdGgoKTtcblx0XHRjb250ZXh0UGF0aFRvVXNlID0gY29udGV4dFBhdGhUb1VzZT8uc3RhcnRzV2l0aChcIi9cIikgPyBjb250ZXh0UGF0aFRvVXNlIDogdW5kZWZpbmVkO1xuXHRcdGxldCByZXNvbHZlZENvbnRleHRQYXRoO1xuXHRcdGlmIChjb250ZXh0UGF0aFRvVXNlKSB7XG5cdFx0XHRyZXNvbHZlZENvbnRleHRQYXRoID0gY29udGV4dFBhdGhUb1VzZS5lbmRzV2l0aChcIi9cIikgPyBjb250ZXh0UGF0aFRvVXNlIDogY29udGV4dFBhdGhUb1VzZSArIFwiL1wiO1xuXHRcdH1cblx0XHRpZiAoIW1ldGFNb2RlbCB8fCAhKHJlc29sdmVkQ29udGV4dFBhdGggfHwgbWV0YXBhdGguY2hhckF0KDApID09PSBcIi9cIikpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIk5vIG1ldGFtb2RlbCBvciBtZXRhcGF0aCBpcyBub3QgcmVhY2hhYmxlIHdpdGggY29udGV4dFBhdGhcIik7XG5cdFx0fVxuXHRcdGxldCBtZXRhQ29udGV4dCA9IHJlc29sdmVkQ29udGV4dFBhdGggPyBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQocmVzb2x2ZWRDb250ZXh0UGF0aCkgOiB1bmRlZmluZWQ7XG5cdFx0bWV0YUNvbnRleHQgPSBtZXRhQ29udGV4dCA/IG1ldGFDb250ZXh0IDogdW5kZWZpbmVkO1xuXHRcdGNvbnN0IG1ldGFQYXRoQ29udGV4dCA9IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChtZXRhcGF0aCwgbWV0YUNvbnRleHQpO1xuXHRcdHJldHVybiBtZXRhUGF0aENvbnRleHRcblx0XHRcdD8gTWV0YU1vZGVsQ29udmVydGVyLmdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0czxFeHBlY3RlZERhdGFNb2RlbFR5cGU+KG1ldGFQYXRoQ29udGV4dCwgbWV0YUNvbnRleHQpXG5cdFx0XHQ6IHVuZGVmaW5lZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIE1ldGFQYXRoIG9iamVjdCBmb3IgdGhlIGdpdmVuIG1ldGFQYXRoIGFuZCBvcHRpb25hbCBjb250ZXh0UGF0aC5cblx0ICogQHBhcmFtIG1ldGFQYXRoXG5cdCAqIEBwYXJhbSBjb250ZXh0UGF0aFxuXHQgKiBAcmV0dXJucyBBIE1ldGFQYXRoIHBvaW50aW5nIHRvIHRoZSB0YXJnZXQge21ldGFQYXRoLCBjb250ZXh0UGF0aH1cblx0ICovXG5cdGdldE1ldGFQYXRoT2JqZWN0PEV4cGVjdGVkRGF0YU1vZGVsVHlwZT4obWV0YVBhdGg6IHN0cmluZywgY29udGV4dFBhdGg/OiBzdHJpbmcpOiBNZXRhUGF0aDxFeHBlY3RlZERhdGFNb2RlbFR5cGU+IHwgbnVsbCB7XG5cdFx0Y29uc3QgbWV0YU1vZGVsID0gdGhpcy5nZXRNZXRhTW9kZWwoKTtcblx0XHRsZXQgY29udGV4dFBhdGhUb1VzZSA9IGNvbnRleHRQYXRoID8/IHRoaXMuZ2V0T3duZXJDb250ZXh0UGF0aCgpO1xuXHRcdGNvbnRleHRQYXRoVG9Vc2UgPSBjb250ZXh0UGF0aFRvVXNlPy5zdGFydHNXaXRoKFwiL1wiKSA/IGNvbnRleHRQYXRoVG9Vc2UgOiB1bmRlZmluZWQ7XG5cdFx0aWYgKCFtZXRhTW9kZWwgfHwgIShjb250ZXh0UGF0aFRvVXNlIHx8IG1ldGFQYXRoLmNoYXJBdCgwKSA9PT0gXCIvXCIpKSB7XG5cdFx0XHRMb2cud2FybmluZyhgTm8gbWV0YW1vZGVsIG9yIG1ldGFQYXRoIGlzIG5vdCByZWFjaGFibGUgd2l0aCAke2NvbnRleHRQYXRofToke21ldGFQYXRofWApO1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXHRcdHRyeSB7XG5cdFx0XHRyZXR1cm4gbmV3IE1ldGFQYXRoKGNvbnZlcnRUeXBlcyhtZXRhTW9kZWwpLCBtZXRhUGF0aCwgY29udGV4dFBhdGhUb1VzZSEpO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdExvZy53YXJuaW5nKGBObyBtZXRhbW9kZWwgb3IgbWV0YVBhdGggaXMgbm90IHJlYWNoYWJsZSB3aXRoICR7Y29udGV4dFBhdGh9OiR7bWV0YVBhdGh9YCk7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cdH1cblxuXHRwcm90ZWN0ZWQgY3JlYXRlSWQoLi4uc3RyaW5nUGFydHM6IChzdHJpbmcgfCB1bmRlZmluZWQgfCBEYXRhTW9kZWxPYmplY3RQYXRoPEF1dGhvcml6ZWRJZEFubm90YXRpb25zVHlwZT4pW10pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdC8vIElmIHRoZSBjaGlsZCBpbnN0YW5jZSBoYXMgYW4gSUQgcHJvcGVydHkgdXNlIGl0IG90aGVyd2lzZSByZXR1cm4gdW5kZWZpbmVkXG5cdFx0aWYgKHRoaXMuZ2V0SWQoKSkge1xuXHRcdFx0cmV0dXJuIGdlbmVyYXRlKFt0aGlzLmdldElkKCksIC4uLnN0cmluZ1BhcnRzXSk7XG5cdFx0fVxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHRnZXRUcmFuc2xhdGVkVGV4dCh0ZXh0SUQ6IHN0cmluZywgcGFyYW1ldGVycz86IHVua25vd25bXSwgbWV0YVBhdGg/OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdHJldHVybiAoXG5cdFx0XHQoKHRoaXMuZ2V0TW9kZWwoXCJzYXAuZmUuaTE4blwiKSA/PyB0aGlzLl9nZXRPd25lcigpPy5nZXRNb2RlbChcInNhcC5mZS5pMThuXCIpKSBhcyBSZXNvdXJjZU1vZGVsKT8uZ2V0VGV4dChcblx0XHRcdFx0dGV4dElELFxuXHRcdFx0XHRwYXJhbWV0ZXJzLFxuXHRcdFx0XHRtZXRhUGF0aFxuXHRcdFx0KSB8fCB0ZXh0SURcblx0XHQpO1xuXHR9XG5cblx0Z2V0TWFuaWZlc3RXcmFwcGVyKCk6IE1hbmlmZXN0V3JhcHBlciB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHRoaXMuX2dldE93bmVyKCk/LmdldE1hbmlmZXN0V3JhcHBlcigpO1xuXHR9XG59XG5cbmludGVyZmFjZSBCdWlsZGluZ0Jsb2NrPFQgZXh0ZW5kcyBVSTVFbGVtZW50PiB7XG5cdGdldENvbnRlbnQoKTogVCB8IHVuZGVmaW5lZDtcblx0Z2V0QXJpYUxhYmVsbGVkQnkoKTogc3RyaW5nW107XG59XG5cbmV4cG9ydCBkZWZhdWx0IEJ1aWxkaW5nQmxvY2s7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQThCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQU5BLElBUU1BLGFBQWEsSUFBQUMsSUFBQSxHQURsQkMsY0FBYyxDQUFDLDBDQUEwQyxDQUFDLEVBQUFDLEtBQUEsR0FLekRDLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBUyxDQUFDLENBQUMsRUFBQUosSUFBQSxDQUFBSyxNQUFBLElBQUFDLE9BQUEsSUFBQUMsY0FBQSwwQkFBQUMsa0JBQUE7SUFPN0IsU0FBQVQsY0FBWVUsUUFBc0QsRUFBRUMsTUFBMkMsRUFBRTtNQUFBLElBQUFDLEtBQUE7TUFDaEhBLEtBQUEsR0FBQUgsa0JBQUEsQ0FBQUksSUFBQSxPQUFNSCxRQUFRLEVBQUVDLE1BQU0sQ0FBQztNQVh4QjtBQUNEO0FBQ0E7TUFGQ0csMEJBQUEsQ0FBQUYsS0FBQSxlQUFBRyxXQUFBLEVBQUFILEtBQUE7TUFBQUEsS0FBQSxDQU1VSSxpQkFBaUIsR0FBRyxLQUFLO01BTWxDSixLQUFBLENBQUtLLGlCQUFpQixDQUFDLENBQUM7TUFBQyxPQUFBTCxLQUFBO0lBQzFCO0lBQUNNLGNBQUEsQ0FBQWxCLGFBQUEsRUFBQVMsa0JBQUE7SUFBQSxJQUFBVSxNQUFBLEdBQUFuQixhQUFBLENBQUFvQixTQUFBO0lBQUFELE1BQUEsQ0FFUUUsYUFBYSxHQUF0QixTQUFTQSxhQUFhQSxDQUFDQyxTQUFpQyxFQUFFQyxNQUFlLEVBQVE7TUFDaEYsSUFBSSxDQUFDUCxpQkFBaUIsR0FBRyxJQUFJO01BQzdCUCxrQkFBQSxDQUFB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TyxJQUFJO01BQ1o7SUFDRCxDQUFDO0lBQUE5RSxNQUFBLENBRVNrRixRQUFRLEdBQWxCLFNBQVVBLFFBQVFBLENBQUEsRUFBZ0g7TUFDakk7TUFDQSxJQUFJLElBQUksQ0FBQ3JFLEtBQUssQ0FBQyxDQUFDLEVBQUU7UUFBQSxTQUFBc0UsSUFBQSxHQUFBNUUsU0FBQSxDQUFBQyxNQUFBLEVBRkc0RSxXQUFXLE9BQUFDLEtBQUEsQ0FBQUYsSUFBQSxHQUFBRyxJQUFBLE1BQUFBLElBQUEsR0FBQUgsSUFBQSxFQUFBRyxJQUFBO1VBQVhGLFdBQVcsQ0FBQUUsSUFBQSxJQUFBL0UsU0FBQSxDQUFBK0UsSUFBQTtRQUFBO1FBRy9CLE9BQU9DLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQzFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBR3VFLFdBQVcsQ0FBQyxDQUFDO01BQ2hEO01BQ0EsT0FBTzNFLFNBQVM7SUFDakIsQ0FBQztJQUFBVCxNQUFBLENBRUR3RixpQkFBaUIsR0FBakIsU0FBQUEsaUJBQWlCQSxDQUFDQyxNQUFjLEVBQUV0RSxVQUFzQixFQUFFMkQsUUFBaUIsRUFBVTtNQUNwRixPQUNDLENBQUUsSUFBSSxDQUFDWSxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxDQUFDbEUsU0FBUyxDQUFDLENBQUMsRUFBRWtFLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBcUJDLE9BQU8sQ0FDdEdGLE1BQU0sRUFDTnRFLFVBQVUsRUFDVjJELFFBQ0QsQ0FBQyxJQUFJVyxNQUFNO0lBRWIsQ0FBQztJQUFBekYsTUFBQSxDQUVENEYsa0JBQWtCLEdBQWxCLFNBQUFBLGtCQUFrQkEsQ0FBQSxFQUFnQztNQUNqRCxPQUFPLElBQUksQ0FBQ3BFLFNBQVMsQ0FBQyxDQUFDLEVBQUVvRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFBQSxPQUFBL0csYUFBQTtFQUFBLEVBdFFpRmdILGlCQUFpQixHQUFBeEcsY0FBQSxDQVNwRnNCLGNBQWMsR0FBd0MsSUFBSW1GLEdBQUcsQ0FBQyxDQUFDLEVBQUF6RyxjQUFBLEdBQUFPLFdBQUEsR0FBQW1HLHlCQUFBLENBQUEzRyxPQUFBLENBQUFhLFNBQUEsZ0JBQUFqQixLQUFBO0lBQUFnSCxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQS9HLE9BQUEsTUFBQUQsTUFBQTtFQUFBLE9BcVFoRU4sYUFBYTtBQUFBIiwiaWdub3JlTGlzdCI6W119
285
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCdWlsZGluZ0Jsb2NrIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJwcm9wZXJ0eSIsInR5cGUiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0J1aWxkaW5nQmxvY2siLCJfQnVpbGRpbmdCbG9ja0Jhc2UiLCJzZXR0aW5ncyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfYXBwbHlpbmdTZXR0aW5ncyIsIm5vdGlmeUJCT2JzZXJ2ZXJzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJhcHBseVNldHRpbmdzIiwibVNldHRpbmdzIiwib1Njb3BlIiwiX2NoZWNrSWZNZXRhZGF0YVJlYWR5IiwiZGVzdHJveSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImJib2JzZXJ2ZXJNYXAiLCJfYmJvYnNlcnZlck1hcCIsImdldCIsImdldElkIiwib2JzZXJ2ZUJCIiwib25EZXN0cm95Iiwib25BdmFpbGFibGUiLCJvYnNlcnZlQnVpbGRpbmdCbG9jayIsImlkIiwicGFyYW1ldGVycyIsImVsZW1lbnQiLCJFbGVtZW50UmVnaXN0cnkiLCJwdXNoIiwic2V0IiwiX2dldE93bmVyIiwiY29udHJvbCIsIm93bmVyIiwiQ29tcG9uZW50IiwiZ2V0T3duZXJDb21wb25lbnRGb3IiLCJpc0EiLCJnZXRQYXJlbnQiLCJnZXRQYWdlQ29udHJvbGxlciIsImxvZ0Vycm9yIiwicGFnZUNvbnRyb2xsZXIiLCJnZXRSb290Q29udHJvbGxlciIsIkxvZyIsImVycm9yIiwiZ2V0TWV0YU1vZGVsIiwibWV0YU1vZGVsIiwic3RhcnRzV2l0aCIsImdldE1ldGFNb2RlbEJ5SWQiLCJzdXBwcmVzc0ludmFsaWRhdGUiLCJ2aWV3U3RhdGUiLCJkZXJlZ2lzdGVyU3RhdGVDb250cmlidXRvciIsInJlbW92ZUNvbnRyb2xsZXJFeHRlbnNpb25Ib29rSGFuZGxlcnMiLCJmcm9tQXBwbHlTZXR0aW5ncyIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJyZWdpc3RlclN0YXRlQ29udHJpYnV0b3IiLCJpbml0Q29udHJvbGxlckV4dGVuc2lvbkhvb2tIYW5kbGVycyIsImNvbnRlbnQiLCJ3YXJuaW5nIiwiYXR0YWNoRXZlbnRPbmNlIiwiY2xvbmUiLCJzSWRTdWZmaXgiLCJhTG9jYWxJZHMiLCJydW5Bc093bmVyIiwiX293bmVyQ29tcG9uZW50IiwiZ2V0QXBwQ29tcG9uZW50IiwiZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCIsInRhcmdldFBhdGgiLCJ0YXJnZXRQYXRoVG9Vc2UiLCJnZXRPd25lckNvbnRleHRQYXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzRm9yVGFyZ2V0UGF0aCIsImdldEZ1bGxDb250ZXh0UGF0aCIsImdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoIiwibWV0YXBhdGgiLCJjb250ZXh0UGF0aCIsImNvbnRleHRQYXRoVG9Vc2UiLCJnZXRDb21wdXRlZENvbnRleHRQYXRoIiwicmVzb2x2ZWRDb250ZXh0UGF0aCIsImVuZHNXaXRoIiwiY2hhckF0IiwiRXJyb3IiLCJtZXRhQ29udGV4dCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwibWV0YVBhdGhDb250ZXh0IiwiTWV0YU1vZGVsQ29udmVydGVyIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwiZ2V0TWV0YVBhdGhPYmplY3QiLCJtZXRhUGF0aCIsIk1ldGFQYXRoIiwiY29udmVydFR5cGVzIiwiZSIsImNyZWF0ZUlkIiwiX2xlbiIsInN0cmluZ1BhcnRzIiwiQXJyYXkiLCJfa2V5IiwiZ2VuZXJhdGUiLCJnZXRUcmFuc2xhdGVkVGV4dCIsInRleHRJRCIsImdldE1vZGVsIiwiZ2V0VGV4dCIsImdldE1hbmlmZXN0V3JhcHBlciIsImdldE93bmVyUGFnZURlZmluaXRpb24iLCJwcmVwcm9jZXNzb3JDb250ZXh0IiwiZ2V0RGVmaW5pdGlvbkZvclBhZ2UiLCJCdWlsZGluZ0Jsb2NrQmFzZSIsIk1hcCIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQnVpbGRpbmdCbG9jay50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrQmFzZSBmcm9tIFwic2FwL2ZlL2Jhc2UvQnVpbGRpbmdCbG9ja0Jhc2VcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgaW5pdENvbnRyb2xsZXJFeHRlbnNpb25Ib29rSGFuZGxlcnMsIHJlbW92ZUNvbnRyb2xsZXJFeHRlbnNpb25Ib29rSGFuZGxlcnMgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvSG9va1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgRkVWaWV3IH0gZnJvbSBcInNhcC9mZS9jb3JlL0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIFJlc291cmNlTW9kZWwgZnJvbSBcInNhcC9mZS9jb3JlL1Jlc291cmNlTW9kZWxcIjtcbmltcG9ydCB0eXBlIFRlbXBsYXRlQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9UZW1wbGF0ZUNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy92aWV3U3RhdGUvSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yXCI7XG5pbXBvcnQgdHlwZSBNYW5pZmVzdFdyYXBwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RXcmFwcGVyXCI7XG5pbXBvcnQgKiBhcyBNZXRhTW9kZWxDb252ZXJ0ZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgeyBjb252ZXJ0VHlwZXMsIGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0c0ZvclRhcmdldFBhdGgsIGdldE1ldGFNb2RlbEJ5SWQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB0eXBlIHsgRGVmaW5pdGlvblBhZ2UgfSBmcm9tIFwic2FwL2ZlL2NvcmUvZGVmaW5pdGlvbi9GRURlZmluaXRpb25cIjtcbmltcG9ydCBNZXRhUGF0aCBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9NZXRhUGF0aFwiO1xuaW1wb3J0IHR5cGUgeyBBdXRob3JpemVkSWRBbm5vdGF0aW9uc1R5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IHR5cGUgeyAkTWFuYWdlZE9iamVjdFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCBDb21wb25lbnQgZnJvbSBcInNhcC91aS9jb3JlL0NvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IEVsZW1lbnRSZWdpc3RyeSBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFJlZ2lzdHJ5XCI7XG5cbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIEFwcENvbXBvbmVudCBmcm9tIFwiLi4vQXBwQ29tcG9uZW50XCI7XG5cbmV4cG9ydCB0eXBlIE9ic2VydmVCdWlsZGluZ0Jsb2NrID0ge1xuXHRvbkF2YWlsYWJsZT86IChiYjogVUk1RWxlbWVudCkgPT4gdm9pZDtcblx0b25EZXN0cm95PzogKGJiOiBVSTVFbGVtZW50KSA9PiB2b2lkO1xufTtcbi8qKlxuICogRGVmaW5lcyBhIGNvbnRyb2wgdGhhdCB3aWxsIG5vdCBleGlzdCBpbiB0aGUgRE9NLlxuICogSW5zdGVhZCwgb25seSBpdHMgY2hpbGQgd2lsbCBiZSB0aGVyZSBhbmQgdGhpcyBjb250cm9sIHdpbGwgZm9yd2FyZCBhbGwgRE9NIHJlbGF0ZWQgaW5zdHJ1Y3Rpb24gdG8gaXQuXG4gKiBAZXhwZXJpbWVudGFsXG4gKiBAc2luY2UgMS4xMjEuMFxuICogQHB1YmxpY1xuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5idWlsZGluZ0Jsb2Nrcy5CdWlsZGluZ0Jsb2NrXCIpXG5jbGFzcyBCdWlsZGluZ0Jsb2NrPFQgZXh0ZW5kcyBVSTVFbGVtZW50ID0gQ29udHJvbCwgSyBleHRlbmRzIG9iamVjdCA9IHt9PiBleHRlbmRzIEJ1aWxkaW5nQmxvY2tCYXNlPFQsIEs+IHtcblx0LyoqXG5cdCAqIFRoZSBtZXRhbW9kZWwgbmFtZSBvciBpZCB0byBiZSB1c2VkIGZvciB0aGlzIGJ1aWxkaW5nIGJsb2NrXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdG1ldGFNb2RlbD86IHN0cmluZztcblxuXHRwcm90ZWN0ZWQgX2FwcGx5aW5nU2V0dGluZ3MgPSBmYWxzZTtcblxuXHRwcml2YXRlIHN0YXRpYyBfYmJvYnNlcnZlck1hcDogTWFwPHN0cmluZywgT2JzZXJ2ZUJ1aWxkaW5nQmxvY2tbXT4gPSBuZXcgTWFwKCk7XG5cblx0Y29uc3RydWN0b3Ioc2V0dGluZ3M/OiBzdHJpbmcgfCBQcm9wZXJ0aWVzT2Y8QnVpbGRpbmdCbG9ja0Jhc2U8VD4+LCBvdGhlcnM/OiBQcm9wZXJ0aWVzT2Y8QnVpbGRpbmdCbG9ja0Jhc2U8VD4+KSB7XG5cdFx0c3VwZXIoc2V0dGluZ3MsIG90aGVycyk7XG5cdFx0dGhpcy5ub3RpZnlCQk9ic2VydmVycygpO1xuXHR9XG5cblx0b3ZlcnJpZGUgYXBwbHlTZXR0aW5ncyhtU2V0dGluZ3M6ICRNYW5hZ2VkT2JqZWN0U2V0dGluZ3MsIG9TY29wZT86IG9iamVjdCk6IHRoaXMge1xuXHRcdHRoaXMuX2FwcGx5aW5nU2V0dGluZ3MgPSB0cnVlO1xuXHRcdHN1cGVyLmFwcGx5U2V0dGluZ3MobVNldHRpbmdzLCBvU2NvcGUpO1xuXHRcdHRoaXMuX2FwcGx5aW5nU2V0dGluZ3MgPSBmYWxzZTtcblx0XHR0aGlzLl9jaGVja0lmTWV0YWRhdGFSZWFkeSh0cnVlKTtcblxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0bm90aWZ5QkJPYnNlcnZlcnMoZGVzdHJveSA9IGZhbHNlKTogdm9pZCB7XG5cdFx0Y29uc3QgYmJvYnNlcnZlck1hcCA9IEJ1aWxkaW5nQmxvY2suX2Jib2JzZXJ2ZXJNYXAuZ2V0KHRoaXMuZ2V0SWQoKSk7XG5cdFx0aWYgKGJib2JzZXJ2ZXJNYXAgJiYgYmJvYnNlcnZlck1hcC5sZW5ndGggPiAwKSB7XG5cdFx0XHRmb3IgKGNvbnN0IG9ic2VydmVCQiBvZiBiYm9ic2VydmVyTWFwKSB7XG5cdFx0XHRcdGlmIChkZXN0cm95KSB7XG5cdFx0XHRcdFx0aWYgKG9ic2VydmVCQi5vbkRlc3Ryb3kpIHtcblx0XHRcdFx0XHRcdG9ic2VydmVCQi5vbkRlc3Ryb3kodGhpcyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2UgaWYgKG9ic2VydmVCQi5vbkF2YWlsYWJsZSkge1xuXHRcdFx0XHRcdG9ic2VydmVCQi5vbkF2YWlsYWJsZSh0aGlzKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBBbGxvd3MgdG8gb2JzZXJ2ZSBidWlsZGluZyBibG9jayBvbmNlIGl0IGlzIGNyZWF0ZWQuXG5cdCAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIGJ1aWxkaW5nIGJsb2NrIHdoaWNoIHdpbGwgYmUgb2JzZXJ2ZWRcblx0ICogQHBhcmFtIHBhcmFtZXRlcnMgVGhlIGlkIG9mIHRoZSBidWlsZGluZyBibG9jayB3aGljaCBpcyBiZWluZyByZXF1c3RlZFxuXHQgKiBAcGFyYW0gcGFyYW1ldGVycy5vbkF2YWlsYWJsZSBDYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2l0aCB0aGUgaW5zdGFuY2Ugb2YgdGhlIEJCIHdoZW4gaXQgaXMgYXZhaWxhYmxlXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzLm9uRGVzdHJveSBDYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2l0aCB0aGUgaW5zdGFuY2Ugb2YgdGhlIEJCIHdoZW4gaXQgaXMgZGVzdHJveWVkXG5cdCAqL1xuXHRzdGF0aWMgb2JzZXJ2ZUJ1aWxkaW5nQmxvY2soaWQ6IHN0cmluZywgcGFyYW1ldGVyczogT2JzZXJ2ZUJ1aWxkaW5nQmxvY2spOiB2b2lkIHtcblx0XHQvL2lmIChwYXJhbWV0ZXJzKVxuXHRcdGNvbnN0IGVsZW1lbnQgPSBFbGVtZW50UmVnaXN0cnkuZ2V0KGlkKTtcblx0XHQvLyBpZiB0aGUgZWxlbWVudCBpcyBhbHJlYWR5IHJlZ2lzdGVyZWRcblx0XHRpZiAoZWxlbWVudCkge1xuXHRcdFx0aWYgKHBhcmFtZXRlcnMub25BdmFpbGFibGUpIHtcblx0XHRcdFx0cGFyYW1ldGVycy5vbkF2YWlsYWJsZShlbGVtZW50KTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgYmJvYnNlcnZlck1hcCA9IEJ1aWxkaW5nQmxvY2suX2Jib2JzZXJ2ZXJNYXAuZ2V0KGlkKTtcblx0XHRcdGlmIChiYm9ic2VydmVyTWFwKSB7XG5cdFx0XHRcdGJib2JzZXJ2ZXJNYXAucHVzaChwYXJhbWV0ZXJzKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdEJ1aWxkaW5nQmxvY2suX2Jib2JzZXJ2ZXJNYXAuc2V0KGlkLCBbcGFyYW1ldGVyc10pO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIGluc3RhbmNlIG9mIGEgYnVpbGRpbmcgYmxvY2sgYmFzZWQgb25jZSBpdCBpcyByZWdpc3RlcmVkLlxuXHQgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSBidWlsZGluZyBibG9jayB3aGljaCBpcyBiZWluZyByZXF1c3RlZFxuXHQgKiBAcmV0dXJucyBQcm9taXNlIHJlc29sdmVkIHdpdGggYW4gaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkaW5nIGJsb2NrIG9uY2UgaXQgaXMgcmVnaXN0ZXJlZC9pbnN0YW50aWVkLlxuXHQgKiBcdCBUaGUgcHJvbWlzZSBpcyByZXNvbHZlZCB3aGVuIHRoZSBidWlsZGluZyBibG9jayBpcyBpbnRhbnRpZWQgaGVuY2UgaXQgcmVjb21tZW5kZWQgdG8gb25seSBhd2FpdCBvbiB0aGUgcHJvbWlzZVxuXHQgKiBcdCB3aGVuIGl0IGlzIGtub3duIHRoYXQgdGhlIGJ1aWxkaW5nIGJsb2NrIHdpbGwgYmUgYXZhaWxhYmxlLiBJbiBjYXNlcyBoZXJlIHRoZSBidWlsZGluZyBibG9jayBtaWdodCBub3QgYmUgYXZhaWxhYmxlLFxuXHQgKiBcdCBmb3IgZXhhbXBsZSBiZWN1YXNlIG9mIGxhenkgbG9hZGluZywgdGhlbiBpdCBpcyByZWNvbW1lbmRlZCBub3QgdG8gYXdhaXQgb24gdGhlIHByb21pc2UgYW5kIGluc3RlYWQgdXNlIFByb21pc2UudGhlbigpLlxuXHQgKi9cblxuXHRfZ2V0T3duZXIoKTogVGVtcGxhdGVDb21wb25lbnQgfCB1bmRlZmluZWQge1xuXHRcdC8vZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzXG5cdFx0bGV0IGNvbnRyb2w6IENvbnRyb2wgfCB1bmRlZmluZWQgPSB0aGlzO1xuXHRcdGxldCBvd25lciA9IENvbXBvbmVudC5nZXRPd25lckNvbXBvbmVudEZvcihjb250cm9sKTtcblx0XHR3aGlsZSAoIW93bmVyICYmIGNvbnRyb2wgJiYgIWNvbnRyb2wuaXNBPEZFVmlldz4oXCJzYXAudWkuY29yZS5tdmMuVmlld1wiKSkge1xuXHRcdFx0Y29udHJvbCA9IGNvbnRyb2wuZ2V0UGFyZW50KCkgYXMgQ29udHJvbCB8IHVuZGVmaW5lZDtcblx0XHRcdGlmIChjb250cm9sKSB7XG5cdFx0XHRcdG93bmVyID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKGNvbnRyb2wpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAob3duZXI/LmlzQTxUZW1wbGF0ZUNvbXBvbmVudD4oXCJzYXAuZmUuY29yZS5UZW1wbGF0ZUNvbXBvbmVudFwiKSkge1xuXHRcdFx0cmV0dXJuIG93bmVyO1xuXHRcdH1cblx0XHRpZiAob3duZXI/LmlzQTxUZW1wbGF0ZUNvbXBvbmVudD4oXCJzYXAuZmUuY29yZS5idWlsZGluZ0Jsb2Nrcy5JQnVpbGRpbmdCbG9ja093bmVyQ29tcG9uZW50XCIpKSB7XG5cdFx0XHRyZXR1cm4gb3duZXI7XG5cdFx0fVxuXHR9XG5cblx0Lypcblx0ICogR2V0IHRoZSBwYWdlIGNvbnRyb2xsZXIgaW5zdGFuY2Vcblx0ICogQHBhcmFtIGxvZ0Vycm9yIFdoZXRoZXIgdG8gbG9nIGFuIGVycm9yIGlmIHRoZSBwYWdlIGNvbnRyb2xsZXIgaXMgbm90IGZvdW5kXG5cdCAqIEByZXR1cm5zIFRoZSBwYWdlIGNvbnRyb2xsZXIgaW5zdGFuY2Vcblx0ICovXG5cdGdldFBhZ2VDb250cm9sbGVyKGxvZ0Vycm9yID0gdHJ1ZSk6IFBhZ2VDb250cm9sbGVyIHtcblx0XHRjb25zdCBwYWdlQ29udHJvbGxlciA9IHRoaXMuX2dldE93bmVyKCk/LmdldFJvb3RDb250cm9sbGVyPy4oKTtcblx0XHRpZiAoIXBhZ2VDb250cm9sbGVyICYmIGxvZ0Vycm9yKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJObyBzYXAuZmUuY29yZS5QYWdlQ29udHJvbGxlciBmb3VuZFwiKTtcblx0XHR9XG5cdFx0cmV0dXJuIHBhZ2VDb250cm9sbGVyITtcblx0fVxuXG5cdGdldE1ldGFNb2RlbCgpOiBPRGF0YU1ldGFNb2RlbCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdGlmIChvd25lcj8uaXNBPFRlbXBsYXRlQ29tcG9uZW50PihcInNhcC5mZS5jb3JlLmJ1aWxkaW5nQmxvY2tzLklCdWlsZGluZ0Jsb2NrT3duZXJDb21wb25lbnRcIikpIHtcblx0XHRcdGxldCBtZXRhTW9kZWwgPSBvd25lcj8uZ2V0TWV0YU1vZGVsKHRoaXMubWV0YU1vZGVsKTtcblx0XHRcdC8vIEZhbGxiYWNrIGluIGNhc2UgdGhleSBkb24ndCBhcHBseSB0aGUgbG9naWMgZm9yIHRoZSBtZXRhbW9kZWwgY29udmVydGVyXG5cdFx0XHRpZiAoIW1ldGFNb2RlbCAmJiB0aGlzLm1ldGFNb2RlbD8uc3RhcnRzV2l0aChcImlkLVwiKSkge1xuXHRcdFx0XHRtZXRhTW9kZWwgPSBnZXRNZXRhTW9kZWxCeUlkKHRoaXMubWV0YU1vZGVsKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBtZXRhTW9kZWw7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBvd25lcj8uZ2V0TWV0YU1vZGVsKHRoaXMubWV0YU1vZGVsKTtcblx0XHR9XG5cdH1cblxuXHRvdmVycmlkZSBkZXN0cm95KHN1cHByZXNzSW52YWxpZGF0ZT86IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRpZiAodGhpcy5pc0E8SVZpZXdTdGF0ZUNvbnRyaWJ1dG9yPHVua25vd24+ICYgTWFuYWdlZE9iamVjdD4oXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy52aWV3U3RhdGUuSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yXCIpKSB7XG5cdFx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKGZhbHNlKT8udmlld1N0YXRlPy5kZXJlZ2lzdGVyU3RhdGVDb250cmlidXRvcih0aGlzKTtcblx0XHR9XG5cdFx0aWYgKHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoZmFsc2UpKSB7XG5cdFx0XHRyZW1vdmVDb250cm9sbGVyRXh0ZW5zaW9uSG9va0hhbmRsZXJzKHRoaXMsIHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKSEpO1xuXHRcdH1cblx0XHR0aGlzLm5vdGlmeUJCT2JzZXJ2ZXJzKHRydWUpO1xuXHRcdHN1cGVyLmRlc3Ryb3koc3VwcHJlc3NJbnZhbGlkYXRlKTtcblx0fVxuXG5cdF9jaGVja0lmTWV0YWRhdGFSZWFkeShmcm9tQXBwbHlTZXR0aW5ncyA9IGZhbHNlKTogdm9pZCB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdGlmIChvd25lcikge1xuXHRcdFx0dGhpcy5vbk1ldGFkYXRhQXZhaWxhYmxlKG93bmVyKTtcblx0XHRcdGlmIChcblx0XHRcdFx0dGhpcy5pc0E8SVZpZXdTdGF0ZUNvbnRyaWJ1dG9yPHVua25vd24+ICYgTWFuYWdlZE9iamVjdD4oXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy52aWV3U3RhdGUuSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yXCIpXG5cdFx0XHQpIHtcblx0XHRcdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpPy52aWV3U3RhdGUucmVnaXN0ZXJTdGF0ZUNvbnRyaWJ1dG9yKHRoaXMpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKSkge1xuXHRcdFx0XHRpbml0Q29udHJvbGxlckV4dGVuc2lvbkhvb2tIYW5kbGVycyh0aGlzLCB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkhKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKCFmcm9tQXBwbHlTZXR0aW5ncyAmJiAhdGhpcy5jb250ZW50KSB7XG5cdFx0XHRcdC8vIEluIGNhc2UgY291bGRuJ3QgY3JlYXRlIHRoZSBjb250ZW50IGR1cmluZyB0aGUgYXBwbHlTZXR0aW5ncywgdHJ5IGFnYWluXG5cdFx0XHRcdExvZy53YXJuaW5nKFxuXHRcdFx0XHRcdFwiVGhlIGJ1aWxkaW5nIGJsb2NrIHdhcyBub3QgY3JlYXRlZCB3aXRoaW4gYW4gRXh0ZW5zaW9uQVBJLnJ1bldpdGhGUE1Db250ZXh0IGNhbGwsIGZvciBwZXJmb3JtYW5jZSByZWFzb24gaXQncyByZWNvbW1lbmRlZCB0byBkbyBzby5cIixcblx0XHRcdFx0XHR0aGlzIGFzIHVua25vd24gYXMgc3RyaW5nXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuYXR0YWNoRXZlbnRPbmNlKFwibW9kZWxDb250ZXh0Q2hhbmdlXCIsIGZ1bmN0aW9uICh0aGlzOiBCdWlsZGluZ0Jsb2NrKTogdm9pZCB7XG5cdFx0XHRcdHRoaXMuX2NoZWNrSWZNZXRhZGF0YVJlYWR5KCk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRjbG9uZShzSWRTdWZmaXg/OiBzdHJpbmcsIGFMb2NhbElkcz86IHN0cmluZ1tdKTogdGhpcyB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdGlmIChvd25lcikge1xuXHRcdFx0cmV0dXJuIG93bmVyLnJ1bkFzT3duZXIoKCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gc3VwZXIuY2xvbmUoc0lkU3VmZml4LCBhTG9jYWxJZHMpO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBzdXBlci5jbG9uZShzSWRTdWZmaXgsIGFMb2NhbElkcyk7XG5cdFx0fVxuXHR9XG5cblx0b25NZXRhZGF0YUF2YWlsYWJsZShfb3duZXJDb21wb25lbnQ6IFRlbXBsYXRlQ29tcG9uZW50KTogdm9pZCB7XG5cdFx0Ly8gVG8gYmUgb3ZlcnJpZGVuIGJ5IHRoZSBjaGlsZCBjbGFzc1xuXHR9XG5cblx0Z2V0QXBwQ29tcG9uZW50KCk6IEFwcENvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdHJldHVybiBvd25lcj8uZ2V0QXBwQ29tcG9uZW50KCk7XG5cdH1cblxuXHRnZXREYXRhTW9kZWxPYmplY3RQYXRoPE4+KHRhcmdldFBhdGg/OiBzdHJpbmcpOiBEYXRhTW9kZWxPYmplY3RQYXRoPE4+IHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBtZXRhTW9kZWwgPSB0aGlzLmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IHRhcmdldFBhdGhUb1VzZSA9IHRhcmdldFBhdGggPz8gdGhpcy5nZXRPd25lckNvbnRleHRQYXRoKCk7XG5cdFx0cmV0dXJuIGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0c0ZvclRhcmdldFBhdGgodGFyZ2V0UGF0aFRvVXNlISwgbWV0YU1vZGVsKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGNvbnRleHQgcGF0aCBmcm9tIHRoZSBvd25lciBjb21wb25lbnQuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250ZXh0IHBhdGhcblx0ICovXG5cdGdldE93bmVyQ29udGV4dFBhdGgoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCkhO1xuXHRcdHJldHVybiBvd25lci5nZXRGdWxsQ29udGV4dFBhdGgodGhpcy5tZXRhTW9kZWwpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgZGF0YSBtb2RlbCBvYmplY3QgZm9yIHRoZSBnaXZlbiBtZXRhcGF0aCBhbmQgb3B0aW9uYWwgY29udGV4dFBhdGguXG5cdCAqIEBwYXJhbSBtZXRhcGF0aFxuXHQgKiBAcGFyYW0gY29udGV4dFBhdGhcblx0ICogQHJldHVybnMgVGhlIGRhdGEgbW9kZWwgb2JqZWN0IHBhdGhcblx0ICovXG5cdGdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoPEV4cGVjdGVkRGF0YU1vZGVsVHlwZT4oXG5cdFx0bWV0YXBhdGg6IHN0cmluZyxcblx0XHRjb250ZXh0UGF0aD86IHN0cmluZ1xuXHQpOiBEYXRhTW9kZWxPYmplY3RQYXRoPEV4cGVjdGVkRGF0YU1vZGVsVHlwZT4gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG1ldGFNb2RlbCA9IHRoaXMuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0Y29uc3QgY29udGV4dFBhdGhUb1VzZSA9IHRoaXMuZ2V0Q29tcHV0ZWRDb250ZXh0UGF0aChjb250ZXh0UGF0aCk7XG5cblx0XHRsZXQgcmVzb2x2ZWRDb250ZXh0UGF0aDtcblx0XHRpZiAoY29udGV4dFBhdGhUb1VzZSkge1xuXHRcdFx0cmVzb2x2ZWRDb250ZXh0UGF0aCA9IGNvbnRleHRQYXRoVG9Vc2UuZW5kc1dpdGgoXCIvXCIpID8gY29udGV4dFBhdGhUb1VzZSA6IGNvbnRleHRQYXRoVG9Vc2UgKyBcIi9cIjtcblx0XHR9XG5cdFx0aWYgKCFtZXRhTW9kZWwgfHwgIShyZXNvbHZlZENvbnRleHRQYXRoIHx8IG1ldGFwYXRoLmNoYXJBdCgwKSA9PT0gXCIvXCIpKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJObyBtZXRhbW9kZWwgb3IgbWV0YXBhdGggaXMgbm90IHJlYWNoYWJsZSB3aXRoIGNvbnRleHRQYXRoXCIpO1xuXHRcdH1cblx0XHRsZXQgbWV0YUNvbnRleHQgPSByZXNvbHZlZENvbnRleHRQYXRoID8gbWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHJlc29sdmVkQ29udGV4dFBhdGgpIDogdW5kZWZpbmVkO1xuXHRcdG1ldGFDb250ZXh0ID0gbWV0YUNvbnRleHQgPyBtZXRhQ29udGV4dCA6IHVuZGVmaW5lZDtcblx0XHRjb25zdCBtZXRhUGF0aENvbnRleHQgPSBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQobWV0YXBhdGgsIG1ldGFDb250ZXh0KTtcblx0XHRyZXR1cm4gbWV0YVBhdGhDb250ZXh0XG5cdFx0XHQ/IE1ldGFNb2RlbENvbnZlcnRlci5nZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8RXhwZWN0ZWREYXRhTW9kZWxUeXBlPihtZXRhUGF0aENvbnRleHQsIG1ldGFDb250ZXh0KVxuXHRcdFx0OiB1bmRlZmluZWQ7XG5cdH1cblxuXHRnZXRDb21wdXRlZENvbnRleHRQYXRoKGNvbnRleHRQYXRoPzogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRsZXQgY29udGV4dFBhdGhUb1VzZSA9IGNvbnRleHRQYXRoID8/IHRoaXMuZ2V0T3duZXJDb250ZXh0UGF0aCgpITtcblx0XHRpZiAoY29udGV4dFBhdGhUb1VzZSAmJiAhY29udGV4dFBhdGhUb1VzZS5zdGFydHNXaXRoKFwiL1wiKSkge1xuXHRcdFx0Y29udGV4dFBhdGhUb1VzZSA9IHRoaXMuZ2V0T3duZXJDb250ZXh0UGF0aCgpICsgY29udGV4dFBhdGhUb1VzZTtcblx0XHR9XG5cdFx0cmV0dXJuIGNvbnRleHRQYXRoVG9Vc2U7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBNZXRhUGF0aCBvYmplY3QgZm9yIHRoZSBnaXZlbiBtZXRhUGF0aCBhbmQgb3B0aW9uYWwgY29udGV4dFBhdGguXG5cdCAqIEBwYXJhbSBtZXRhUGF0aFxuXHQgKiBAcGFyYW0gY29udGV4dFBhdGhcblx0ICogQHJldHVybnMgQSBNZXRhUGF0aCBwb2ludGluZyB0byB0aGUgdGFyZ2V0IHttZXRhUGF0aCwgY29udGV4dFBhdGh9XG5cdCAqL1xuXHRnZXRNZXRhUGF0aE9iamVjdDxFeHBlY3RlZERhdGFNb2RlbFR5cGU+KG1ldGFQYXRoOiBzdHJpbmcsIGNvbnRleHRQYXRoPzogc3RyaW5nKTogTWV0YVBhdGg8RXhwZWN0ZWREYXRhTW9kZWxUeXBlPiB8IG51bGwge1xuXHRcdGNvbnN0IG1ldGFNb2RlbCA9IHRoaXMuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0Y29uc3QgY29udGV4dFBhdGhUb1VzZSA9IHRoaXMuZ2V0Q29tcHV0ZWRDb250ZXh0UGF0aChjb250ZXh0UGF0aCk7XG5cdFx0aWYgKCFtZXRhTW9kZWwgfHwgIShjb250ZXh0UGF0aFRvVXNlIHx8IG1ldGFQYXRoLmNoYXJBdCgwKSA9PT0gXCIvXCIpKSB7XG5cdFx0XHRMb2cud2FybmluZyhgTm8gbWV0YW1vZGVsIG9yIG1ldGFQYXRoIGlzIG5vdCByZWFjaGFibGUgd2l0aCAke2NvbnRleHRQYXRofToke21ldGFQYXRofWApO1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXHRcdHRyeSB7XG5cdFx0XHRyZXR1cm4gbmV3IE1ldGFQYXRoKGNvbnZlcnRUeXBlcyhtZXRhTW9kZWwpLCBtZXRhUGF0aCwgY29udGV4dFBhdGhUb1VzZSk7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0TG9nLndhcm5pbmcoYE5vIG1ldGFtb2RlbCBvciBtZXRhUGF0aCBpcyBub3QgcmVhY2hhYmxlIHdpdGggJHtjb250ZXh0UGF0aH06JHttZXRhUGF0aH1gKTtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblx0fVxuXG5cdHByb3RlY3RlZCBjcmVhdGVJZCguLi5zdHJpbmdQYXJ0czogKHN0cmluZyB8IHVuZGVmaW5lZCB8IERhdGFNb2RlbE9iamVjdFBhdGg8QXV0aG9yaXplZElkQW5ub3RhdGlvbnNUeXBlPilbXSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0Ly8gSWYgdGhlIGNoaWxkIGluc3RhbmNlIGhhcyBhbiBJRCBwcm9wZXJ0eSB1c2UgaXQgb3RoZXJ3aXNlIHJldHVybiB1bmRlZmluZWRcblx0XHRpZiAodGhpcy5nZXRJZCgpKSB7XG5cdFx0XHRyZXR1cm4gZ2VuZXJhdGUoW3RoaXMuZ2V0SWQoKSwgLi4uc3RyaW5nUGFydHNdKTtcblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdGdldFRyYW5zbGF0ZWRUZXh0KHRleHRJRDogc3RyaW5nLCBwYXJhbWV0ZXJzPzogdW5rbm93bltdLCBtZXRhUGF0aD86IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIChcblx0XHRcdCgodGhpcy5nZXRNb2RlbChcInNhcC5mZS5pMThuXCIpID8/IHRoaXMuX2dldE93bmVyKCk/LmdldE1vZGVsKFwic2FwLmZlLmkxOG5cIikpIGFzIFJlc291cmNlTW9kZWwpPy5nZXRUZXh0KFxuXHRcdFx0XHR0ZXh0SUQsXG5cdFx0XHRcdHBhcmFtZXRlcnMsXG5cdFx0XHRcdG1ldGFQYXRoXG5cdFx0XHQpIHx8IHRleHRJRFxuXHRcdCk7XG5cdH1cblxuXHRnZXRNYW5pZmVzdFdyYXBwZXIoKTogTWFuaWZlc3RXcmFwcGVyIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5fZ2V0T3duZXIoKT8uZ2V0TWFuaWZlc3RXcmFwcGVyKCk7XG5cdH1cblxuXHRnZXRPd25lclBhZ2VEZWZpbml0aW9uKCk6IERlZmluaXRpb25QYWdlIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5fZ2V0T3duZXIoKT8ucHJlcHJvY2Vzc29yQ29udGV4dD8uZ2V0RGVmaW5pdGlvbkZvclBhZ2UoKTtcblx0fVxufVxuXG5pbnRlcmZhY2UgQnVpbGRpbmdCbG9jazxUIGV4dGVuZHMgVUk1RWxlbWVudD4ge1xuXHRnZXRDb250ZW50KCk6IFQgfCB1bmRlZmluZWQ7XG5cdGdldEFyaWFMYWJlbGxlZEJ5KCk6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBCdWlsZGluZ0Jsb2NrO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFnQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFOQSxJQVFNQSxhQUFhLElBQUFDLElBQUEsR0FEbEJDLGNBQWMsQ0FBQywwQ0FBMEMsQ0FBQyxFQUFBQyxLQUFBLEdBS3pEQyxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQVMsQ0FBQyxDQUFDLEVBQUFKLElBQUEsQ0FBQUssTUFBQSxJQUFBQyxPQUFBLElBQUFDLGNBQUEsMEJBQUFDLGtCQUFBO0lBTzdCLFNBQUFULGNBQVlVLFFBQXNELEVBQUVDLE1BQTJDLEVBQUU7TUFBQSxJQUFBQyxLQUFBO01BQ2hIQSxLQUFBLEdBQUFILGtCQUFBLENBQUFJLElBQUEsT0FBTUgsUUFBUSxFQUFFQyxNQUFNLENBQUM7TUFYeEI7QUFDRDtBQUNBO01BRkNHLDBCQUFBLENBQUFGLEtBQUEsZUFBQUcsV0FBQSxFQUFBSCxLQUFBO01BQUFBLEtBQUEsQ0FNVUksaUJBQWlCLEdBQUcsS0FBSztNQU1sQ0osS0FBQSxDQUFLSyxpQkFBaUIsQ0FBQyxDQUFDO01BQUMsT0FBQUwsS0FBQTtJQUMxQjtJQUFDTSxjQUFBLENBQUFsQixhQUFBLEVBQUFTLGtCQUFBO0lBQUEsSUFBQVUsTUFBQSxHQUFBbkIsYUFBQSxDQUFBb0IsU0FBQTtJQUFBRCxNQUFBLENBRVFFLGFBQWEsR0FBdEIsU0FBU0EsYUFBYUEsQ0FBQ0MsU0FBaUMsRUFBRUMsTUFBZSxFQUFRO01BQ2hGLElBQUksQ0FBQ1AsaUJBQWlCLEdBQUcsSUFBSTtNQUM3QlAsa0JBQUEsQ0FBQVcsU0FBQSxDQUFNQyxhQUFhLENBQUFSLElBQUEsT0FBQ1MsU0FBUyxFQUFFQyxNQUFNO01BQ3JDLElBQUksQ0FBQ1AsaUJBQWlCLEdBQUcsS0FBSztNQUM5QixJQUFJLENBQUNRLHFCQUFxQixDQUFDLElBQUksQ0FBQztNQUVoQyxPQUFPLElBQUk7SUFDWixDQUFDO0lBQUFMLE1BQUEsQ0FFREYsaUJBQWlCLEdBQWpCLFNBQUFBLGlCQUFpQkEsQ0FBQSxFQUF3QjtNQUFBLElBQXZCUSxPQUFPLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFFLFNBQUEsR0FBQUYsU0FBQSxNQUFHLEtBQUs7TUFDaEMsTUFBTUcsYUFBYSxHQUFHN0IsYUFBYSxDQUFDOEIsY0FBYyxDQUFDQyxHQUFHLENBQUMsSUFBSSxDQUFDQyxLQUFLLENBQUMsQ0FBQyxDQUFDO01BQ3BFLElBQUlILGFBQWEsSUFBSUEsYUFBYSxDQUFDRixNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQzlDLEtBQUssTUFBTU0sU0FBUyxJQUFJSixhQUFhLEVBQUU7VUFDdEMsSUFBSUosT0FBTyxFQUFFO1lBQ1osSUFBSVEsU0FBUyxDQUFDQyxTQUFTLEVBQUU7Y0FDeEJELFNBQVMsQ0FBQ0MsU0FBUyxDQUFDLElBQUksQ0FBQztZQUMxQjtVQUNELENBQUMsTUFBTSxJQUFJRCxTQUFTLENBQUNFLFdBQVcsRUFBRTtZQUNqQ0YsU0FBUyxDQUFDRSxXQUFXLENBQUMsSUFBSSxDQUFDO1VBQzVCO1FBQ0Q7TUFDRDtJQUNEOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BTkM7SUFBQW5DLGFBQUEsQ0FPT29DLG9CQUFvQixHQUEzQixTQUFPQSxvQkFBb0JBLENBQUNDLEVBQVUsRUFBRUMsVUFBZ0MsRUFBUTtNQUMvRTtNQUNBLE1BQU1DLE9BQU8sR0FBR0MsZUFBZSxDQUFDVCxHQUFHLENBQUNNLEVBQUUsQ0FBQztNQUN2QztNQUNBLElBQUlFLE9BQU8sRUFBRTtRQUNaLElBQUlELFVBQVUsQ0FBQ0gsV0FBVyxFQUFFO1VBQzNCRyxVQUFVLENBQUNILFdBQVcsQ0FBQ0ksT0FBTyxDQUFDO1FBQ2hDO01BQ0QsQ0FBQyxNQUFNO1FBQ04sTUFBTVYsYUFBYSxHQUFHN0IsYUFBYSxDQUFDOEIsY0FBYyxDQUFDQyxHQUFHLENBQUNNLEVBQUUsQ0FBQztRQUMxRCxJQUFJUixhQUFhLEVBQUU7VUFDbEJBLGFBQWEsQ0FBQ1ksSUFBSSxDQUFDSCxVQUFVLENBQUM7UUFDL0IsQ0FBQyxNQUFNO1VBQ050QyxhQUFhLENBQUM4QixjQUFjLENBQUNZLEdBQUcsQ0FBQ0wsRUFBRSxFQUFFLENBQUNDLFVBQVUsQ0FBQyxDQUFDO1FBQ25EO01BQ0Q7SUFDRDs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BUEM7SUFBQW5CLE1BQUEsQ0FTQXdCLFNBQVMsR0FBVCxTQUFBQSxTQUFTQSxDQUFBLEVBQWtDO01BQzFDO01BQ0EsSUFBSUMsT0FBNEIsR0FBRyxJQUFJO01BQ3ZDLElBQUlDLEtBQUssR0FBR0MsU0FBUyxDQUFDQyxvQkFBb0IsQ0FBQ0gsT0FBTyxDQUFDO01BQ25ELE9BQU8sQ0FBQ0MsS0FBSyxJQUFJRCxPQUFPLElBQUksQ0FBQ0EsT0FBTyxDQUFDSSxHQUFHLENBQVMsc0JBQXNCLENBQUMsRUFBRTtRQUN6RUosT0FBTyxHQUFHQSxPQUFPLENBQUNLLFNBQVMsQ0FBQyxDQUF3QjtRQUNwRCxJQUFJTCxPQUFPLEVBQUU7VUFDWkMsS0FBSyxHQUFHQyxTQUFTLENBQUNDLG9CQUFvQixDQUFDSCxPQUFPLENBQUM7UUFDaEQ7TUFDRDtNQUNBLElBQUlDLEtBQUssRUFBRUcsR0FBRyxDQUFvQiwrQkFBK0IsQ0FBQyxFQUFFO1FBQ25FLE9BQU9ILEtBQUs7TUFDYjtNQUNBLElBQUlBLEtBQUssRUFBRUcsR0FBRyxDQUFvQix5REFBeUQsQ0FBQyxFQUFFO1FBQzdGLE9BQU9ILEtBQUs7TUFDYjtJQUNEOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsT0FKQztJQUFBMUIsTUFBQSxDQUtBK0IsaUJBQWlCLEdBQWpCLFNBQUFBLGlCQUFpQkEsQ0FBQSxFQUFrQztNQUFBLElBQWpDQyxRQUFRLEdBQUF6QixTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBRyxJQUFJO01BQ2hDLE1BQU0wQixjQUFjLEdBQUcsSUFBSSxDQUFDVCxTQUFTLENBQUMsQ0FBQyxFQUFFVSxpQkFBaUIsR0FBRyxDQUFDO01BQzlELElBQUksQ0FBQ0QsY0FBYyxJQUFJRCxRQUFRLEVBQUU7UUFDaENHLEdBQUcsQ0FBQ0MsS0FBSyxDQUFDLHFDQUFxQyxDQUFDO01BQ2pEO01BQ0EsT0FBT0gsY0FBYztJQUN0QixDQUFDO0lBQUFqQyxNQUFBLENBRURxQyxZQUFZLEdBQVosU0FBQUEsWUFBWUEsQ0FBQSxFQUErQjtNQUMxQyxNQUFNWCxLQUFLLEdBQUcsSUFBSSxDQUFDRixTQUFTLENBQUMsQ0FBQztNQUM5QixJQUFJRSxLQUFLLEVBQUVHLEdBQUcsQ0FBb0IseURBQXlELENBQUMsRUFBRTtRQUM3RixJQUFJUyxTQUFTLEdBQUdaLEtBQUssRUFBRVcsWUFBWSxDQUFDLElBQUksQ0FBQ0MsU0FBUyxDQUFDO1FBQ25EO1FBQ0EsSUFBSSxDQUFDQSxTQUFTLElBQUksSUFBSSxDQUFDQSxTQUFTLEVBQUVDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRTtVQUNwREQsU0FBUyxHQUFHRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUNGLFNBQVMsQ0FBQztRQUM3QztRQUNBLE9BQU9BLFNBQVM7TUFDakIsQ0FBQyxNQUFNO1FBQ04sT0FBT1osS0FBSyxFQUFFVyxZQUFZLENBQUMsSUFBSSxDQUFDQyxTQUFTLENBQUM7TUFDM0M7SUFDRCxDQUFDO0lBQUF0QyxNQUFBLENBRVFNLE9BQU8sR0FBaEIsU0FBU0EsT0FBT0EsQ0FBQ21DLGtCQUE0QixFQUFRO01BQ3BELElBQUksSUFBSSxDQUFDWixHQUFHLENBQWlELGtFQUFrRSxDQUFDLEVBQUU7UUFDakksSUFBSSxDQUFDRSxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsRUFBRVcsU0FBUyxFQUFFQywwQkFBMEIsQ0FBQyxJQUFJLENBQUM7TUFDM0U7TUFDQSxJQUFJLElBQUksQ0FBQ1osaUJBQWlCLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDbENhLHFDQUFxQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUNiLGlCQUFpQixDQUFDLENBQUUsQ0FBQztNQUN2RTtNQUNBLElBQUksQ0FBQ2pDLGlCQUFpQixDQUFDLElBQUksQ0FBQztNQUM1QlIsa0JBQUEsQ0FBQVcsU0FBQSxDQUFNSyxPQUFPLENBQUFaLElBQUEsT0FBQytDLGtCQUFrQjtJQUNqQyxDQUFDO0lBQUF6QyxNQUFBLENBRURLLHFCQUFxQixHQUFyQixTQUFBQSxxQkFBcUJBLENBQUEsRUFBa0M7TUFBQSxJQUFqQ3dDLGlCQUFpQixHQUFBdEMsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixTQUFBLE1BQUcsS0FBSztNQUM5QyxNQUFNbUIsS0FBSyxHQUFHLElBQUksQ0FBQ0YsU0FBUyxDQUFDLENBQUM7TUFDOUIsSUFBSUUsS0FBSyxFQUFFO1FBQ1YsSUFBSSxDQUFDb0IsbUJBQW1CLENBQUNwQixLQUFLLENBQUM7UUFDL0IsSUFDQyxJQUFJLENBQUNHLEdBQUcsQ0FBaUQsa0VBQWtFLENBQUMsRUFDM0g7VUFDRCxJQUFJLENBQUNFLGlCQUFpQixDQUFDLENBQUMsRUFBRVcsU0FBUyxDQUFDSyx3QkFBd0IsQ0FBQyxJQUFJLENBQUM7UUFDbkU7UUFDQSxJQUFJLElBQUksQ0FBQ2hCLGlCQUFpQixDQUFDLENBQUMsRUFBRTtVQUM3QmlCLG1DQUFtQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUNqQixpQkFBaUIsQ0FBQyxDQUFFLENBQUM7UUFDckU7TUFDRCxDQUFDLE1BQU07UUFDTixJQUFJLENBQUNjLGlCQUFpQixJQUFJLENBQUMsSUFBSSxDQUFDSSxPQUFPLEVBQUU7VUFDeEM7VUFDQWQsR0FBRyxDQUFDZSxPQUFPLENBQ1YscUlBQXFJLEVBQ3JJLElBQ0QsQ0FBQztRQUNGO1FBRUEsSUFBSSxDQUFDQyxlQUFlLENBQUMsb0JBQW9CLEVBQUUsWUFBcUM7VUFDL0UsSUFBSSxDQUFDOUMscUJBQXFCLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUM7TUFDSDtJQUNELENBQUM7SUFBQUwsTUFBQSxDQUVEb0QsS0FBSyxHQUFMLFNBQUFBLEtBQUtBLENBQUNDLFNBQWtCLEVBQUVDLFNBQW9CLEVBQVE7TUFDckQsTUFBTTVCLEtBQUssR0FBRyxJQUFJLENBQUNGLFNBQVMsQ0FBQyxDQUFDO01BQzlCLElBQUlFLEtBQUssRUFBRTtRQUNWLE9BQU9BLEtBQUssQ0FBQzZCLFVBQVUsQ0FBQyxNQUFNO1VBQzdCLE9BQUFqRSxrQkFBQSxDQUFBVyxTQUFBLENBQWFtRCxLQUFLLENBQUExRCxJQUFBLE9BQUMyRCxTQUFTLEVBQUVDLFNBQVM7UUFDeEMsQ0FBQyxDQUFDO01BQ0gsQ0FBQyxNQUFNO1FBQ04sT0FBQWhFLGtCQUFBLENBQUFXLFNBQUEsQ0FBYW1ELEtBQUssQ0FBQTFELElBQUEsT0FBQzJELFNBQVMsRUFBRUMsU0FBUztNQUN4QztJQUNELENBQUM7SUFBQXRELE1BQUEsQ0FFRDhDLG1CQUFtQixHQUFuQixTQUFBQSxtQkFBbUJBLENBQUNVLGVBQWtDLEVBQVE7TUFDN0Q7SUFBQSxDQUNBO0lBQUF4RCxNQUFBLENBRUR5RCxlQUFlLEdBQWYsU0FBQUEsZUFBZUEsQ0FBQSxFQUE2QjtNQUMzQyxNQUFNL0IsS0FBSyxHQUFHLElBQUksQ0FBQ0YsU0FBUyxDQUFDLENBQUM7TUFDOUIsT0FBT0UsS0FBSyxFQUFFK0IsZUFBZSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUFBekQsTUFBQSxDQUVEMEQsc0JBQXNCLEdBQXRCLFNBQUFBLHNCQUFzQkEsQ0FBSUMsVUFBbUIsRUFBc0M7TUFDbEYsTUFBTXJCLFNBQVMsR0FBRyxJQUFJLENBQUNELFlBQVksQ0FBQyxDQUFDO01BQ3JDLE1BQU11QixlQUFlLEdBQUdELFVBQVUsSUFBSSxJQUFJLENBQUNFLG1CQUFtQixDQUFDLENBQUM7TUFDaEUsT0FBT0Msd0NBQXdDLENBQUNGLGVBQWUsRUFBR3RCLFNBQVMsQ0FBQztJQUM3RTs7SUFFQTtBQUNEO0FBQ0E7QUFDQSxPQUhDO0lBQUF0QyxNQUFBLENBSUE2RCxtQkFBbUIsR0FBbkIsU0FBQUEsbUJBQW1CQSxDQUFBLEVBQXVCO01BQ3pDLE1BQU1uQyxLQUFLLEdBQUcsSUFBSSxDQUFDRixTQUFTLENBQUMsQ0FBRTtNQUMvQixPQUFPRSxLQUFLLENBQUNxQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUN6QixTQUFTLENBQUM7SUFDaEQ7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BTEM7SUFBQXRDLE1BQUEsQ0FNQWdFLDZCQUE2QixHQUE3QixTQUFBQSw2QkFBNkJBLENBQzVCQyxRQUFnQixFQUNoQkMsV0FBb0IsRUFDcUM7TUFDekQsTUFBTTVCLFNBQVMsR0FBRyxJQUFJLENBQUNELFlBQVksQ0FBQyxDQUFDO01BQ3JDLE1BQU04QixnQkFBZ0IsR0FBRyxJQUFJLENBQUNDLHNCQUFzQixDQUFDRixXQUFXLENBQUM7TUFFakUsSUFBSUcsbUJBQW1CO01BQ3ZCLElBQUlGLGdCQUFnQixFQUFFO1FBQ3JCRSxtQkFBbUIsR0FBR0YsZ0JBQWdCLENBQUNHLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBR0gsZ0JBQWdCLEdBQUdBLGdCQUFnQixHQUFHLEdBQUc7TUFDakc7TUFDQSxJQUFJLENBQUM3QixTQUFTLElBQUksRUFBRStCLG1CQUFtQixJQUFJSixRQUFRLENBQUNNLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRTtRQUN2RSxNQUFNLElBQUlDLEtBQUssQ0FBQyw0REFBNEQsQ0FBQztNQUM5RTtNQUNBLElBQUlDLFdBQVcsR0FBR0osbUJBQW1CLEdBQUcvQixTQUFTLENBQUNvQyxvQkFBb0IsQ0FBQ0wsbUJBQW1CLENBQUMsR0FBRzVELFNBQVM7TUFDdkdnRSxXQUFXLEdBQUdBLFdBQVcsR0FBR0EsV0FBVyxHQUFHaEUsU0FBUztNQUNuRCxNQUFNa0UsZUFBZSxHQUFHckMsU0FBUyxDQUFDb0Msb0JBQW9CLENBQUNULFFBQVEsRUFBRVEsV0FBVyxDQUFDO01BQzdFLE9BQU9FLGVBQWUsR0FDbkJDLGtCQUFrQixDQUFDQywyQkFBMkIsQ0FBd0JGLGVBQWUsRUFBRUYsV0FBVyxDQUFDLEdBQ25HaEUsU0FBUztJQUNiLENBQUM7SUFBQVQsTUFBQSxDQUVEb0Usc0JBQXNCLEdBQXRCLFNBQUFBLHNCQUFzQkEsQ0FBQ0YsV0FBb0IsRUFBVTtNQUNwRCxJQUFJQyxnQkFBZ0IsR0FBR0QsV0FBVyxJQUFJLElBQUksQ0FBQ0wsbUJBQW1CLENBQUMsQ0FBRTtNQUNqRSxJQUFJTSxnQkFBZ0IsSUFBSSxDQUFDQSxnQkFBZ0IsQ0FBQzVCLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUMxRDRCLGdCQUFnQixHQUFHLElBQUksQ0FBQ04sbUJBQW1CLENBQUMsQ0FBQyxHQUFHTSxnQkFBZ0I7TUFDakU7TUFDQSxPQUFPQSxnQkFBZ0I7SUFDeEI7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BTEM7SUFBQW5FLE1BQUEsQ0FNQThFLGlCQUFpQixHQUFqQixTQUFBQSxpQkFBaUJBLENBQXdCQyxRQUFnQixFQUFFYixXQUFvQixFQUEwQztNQUN4SCxNQUFNNUIsU0FBUyxHQUFHLElBQUksQ0FBQ0QsWUFBWSxDQUFDLENBQUM7TUFDckMsTUFBTThCLGdCQUFnQixHQUFHLElBQUksQ0FBQ0Msc0JBQXNCLENBQUNGLFdBQVcsQ0FBQztNQUNqRSxJQUFJLENBQUM1QixTQUFTLElBQUksRUFBRTZCLGdCQUFnQixJQUFJWSxRQUFRLENBQUNSLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRTtRQUNwRXBDLEdBQUcsQ0FBQ2UsT0FBTyxDQUFDLGtEQUFrRGdCLFdBQVcsSUFBSWEsUUFBUSxFQUFFLENBQUM7UUFDeEYsT0FBTyxJQUFJO01BQ1o7TUFDQSxJQUFJO1FBQ0gsT0FBTyxJQUFJQyxRQUFRLENBQUNDLFlBQVksQ0FBQzNDLFNBQVMsQ0FBQyxFQUFFeUMsUUFBUSxFQUFFWixnQkFBZ0IsQ0FBQztNQUN6RSxDQUFDLENBQUMsT0FBT2UsQ0FBQyxFQUFFO1FBQ1gvQyxHQUFHLENBQUNlLE9BQU8sQ0FBQyxrREFBa0RnQixXQUFXLElBQUlhLFFBQVEsRUFBRSxDQUFDO1FBQ3hGLE9BQU8sSUFBSTtNQUNaO0lBQ0QsQ0FBQztJQUFBL0UsTUFBQSxDQUVTbUYsUUFBUSxHQUFsQixTQUFVQSxRQUFRQSxDQUFBLEVBQWdIO01BQ2pJO01BQ0EsSUFBSSxJQUFJLENBQUN0RSxLQUFLLENBQUMsQ0FBQyxFQUFFO1FBQUEsU0FBQXVFLElBQUEsR0FBQTdFLFNBQUEsQ0FBQUMsTUFBQSxFQUZHNkUsV0FBVyxPQUFBQyxLQUFBLENBQUFGLElBQUEsR0FBQUcsSUFBQSxNQUFBQSxJQUFBLEdBQUFILElBQUEsRUFBQUcsSUFBQTtVQUFYRixXQUFXLENBQUFFLElBQUEsSUFBQWhGLFNBQUEsQ0FBQWdGLElBQUE7UUFBQTtRQUcvQixPQUFPQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMzRSxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUd3RSxXQUFXLENBQUMsQ0FBQztNQUNoRDtNQUNBLE9BQU81RSxTQUFTO0lBQ2pCLENBQUM7SUFBQVQsTUFBQSxDQUVEeUYsaUJBQWlCLEdBQWpCLFNBQUFBLGlCQUFpQkEsQ0FBQ0MsTUFBYyxFQUFFdkUsVUFBc0IsRUFBRTRELFFBQWlCLEVBQVU7TUFDcEYsT0FDQyxDQUFFLElBQUksQ0FBQ1ksUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLElBQUksQ0FBQ25FLFNBQVMsQ0FBQyxDQUFDLEVBQUVtRSxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQXFCQyxPQUFPLENBQ3RHRixNQUFNLEVBQ052RSxVQUFVLEVBQ1Y0RCxRQUNELENBQUMsSUFBSVcsTUFBTTtJQUViLENBQUM7SUFBQTFGLE1BQUEsQ0FFRDZGLGtCQUFrQixHQUFsQixTQUFBQSxrQkFBa0JBLENBQUEsRUFBZ0M7TUFDakQsT0FBTyxJQUFJLENBQUNyRSxTQUFTLENBQUMsQ0FBQyxFQUFFcUUsa0JBQWtCLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBQUE3RixNQUFBLENBRUQ4RixzQkFBc0IsR0FBdEIsU0FBQUEsc0JBQXNCQSxDQUFBLEVBQStCO01BQ3BELE9BQU8sSUFBSSxDQUFDdEUsU0FBUyxDQUFDLENBQUMsRUFBRXVFLG1CQUFtQixFQUFFQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFBQSxPQUFBbkgsYUFBQTtFQUFBLEVBalJpRm9ILGlCQUFpQixHQUFBNUcsY0FBQSxDQVNwRnNCLGNBQWMsR0FBd0MsSUFBSXVGLEdBQUcsQ0FBQyxDQUFDLEVBQUE3RyxjQUFBLEdBQUFPLFdBQUEsR0FBQXVHLHlCQUFBLENBQUEvRyxPQUFBLENBQUFhLFNBQUEsZ0JBQUFqQixLQUFBO0lBQUFvSCxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQW5ILE9BQUEsTUFBQUQsTUFBQTtFQUFBLE9BZ1JoRU4sYUFBYTtBQUFBIiwiaWdub3JlTGlzdCI6W119
@@ -11,6 +11,7 @@ import type IViewStateContributor from "sap/fe/core/controllerextensions/viewSta
11
11
  import type ManifestWrapper from "sap/fe/core/converters/ManifestWrapper";
12
12
  import * as MetaModelConverter from "sap/fe/core/converters/MetaModelConverter";
13
13
  import { convertTypes, getInvolvedDataModelObjectsForTargetPath, getMetaModelById } from "sap/fe/core/converters/MetaModelConverter";
14
+ import type { DefinitionPage } from "sap/fe/core/definition/FEDefinition";
14
15
  import MetaPath from "sap/fe/core/helpers/MetaPath";
15
16
  import type { AuthorizedIdAnnotationsType } from "sap/fe/core/helpers/StableIdHelper";
16
17
  import { generate } from "sap/fe/core/helpers/StableIdHelper";
@@ -21,6 +22,7 @@ import Component from "sap/ui/core/Component";
21
22
  import type Control from "sap/ui/core/Control";
22
23
  import type UI5Element from "sap/ui/core/Element";
23
24
  import ElementRegistry from "sap/ui/core/ElementRegistry";
25
+
24
26
  import type ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
25
27
  import type AppComponent from "../AppComponent";
26
28
 
@@ -193,7 +195,7 @@ class BuildingBlock<T extends UI5Element = Control, K extends object = {}> exten
193
195
  }
194
196
  }
195
197
 
196
- clone(sIdSuffix: string, aLocalIds: string[]): this {
198
+ clone(sIdSuffix?: string, aLocalIds?: string[]): this {
197
199
  const owner = this._getOwner();
198
200
  if (owner) {
199
201
  return owner.runAsOwner(() => {
@@ -239,8 +241,8 @@ class BuildingBlock<T extends UI5Element = Control, K extends object = {}> exten
239
241
  contextPath?: string
240
242
  ): DataModelObjectPath<ExpectedDataModelType> | undefined {
241
243
  const metaModel = this.getMetaModel();
242
- let contextPathToUse = contextPath ?? this.getOwnerContextPath();
243
- contextPathToUse = contextPathToUse?.startsWith("/") ? contextPathToUse : undefined;
244
+ const contextPathToUse = this.getComputedContextPath(contextPath);
245
+
244
246
  let resolvedContextPath;
245
247
  if (contextPathToUse) {
246
248
  resolvedContextPath = contextPathToUse.endsWith("/") ? contextPathToUse : contextPathToUse + "/";
@@ -256,6 +258,14 @@ class BuildingBlock<T extends UI5Element = Control, K extends object = {}> exten
256
258
  : undefined;
257
259
  }
258
260
 
261
+ getComputedContextPath(contextPath?: string): string {
262
+ let contextPathToUse = contextPath ?? this.getOwnerContextPath()!;
263
+ if (contextPathToUse && !contextPathToUse.startsWith("/")) {
264
+ contextPathToUse = this.getOwnerContextPath() + contextPathToUse;
265
+ }
266
+ return contextPathToUse;
267
+ }
268
+
259
269
  /**
260
270
  * Retrieves the MetaPath object for the given metaPath and optional contextPath.
261
271
  * @param metaPath
@@ -264,14 +274,13 @@ class BuildingBlock<T extends UI5Element = Control, K extends object = {}> exten
264
274
  */
265
275
  getMetaPathObject<ExpectedDataModelType>(metaPath: string, contextPath?: string): MetaPath<ExpectedDataModelType> | null {
266
276
  const metaModel = this.getMetaModel();
267
- let contextPathToUse = contextPath ?? this.getOwnerContextPath();
268
- contextPathToUse = contextPathToUse?.startsWith("/") ? contextPathToUse : undefined;
277
+ const contextPathToUse = this.getComputedContextPath(contextPath);
269
278
  if (!metaModel || !(contextPathToUse || metaPath.charAt(0) === "/")) {
270
279
  Log.warning(`No metamodel or metaPath is not reachable with ${contextPath}:${metaPath}`);
271
280
  return null;
272
281
  }
273
282
  try {
274
- return new MetaPath(convertTypes(metaModel), metaPath, contextPathToUse!);
283
+ return new MetaPath(convertTypes(metaModel), metaPath, contextPathToUse);
275
284
  } catch (e) {
276
285
  Log.warning(`No metamodel or metaPath is not reachable with ${contextPath}:${metaPath}`);
277
286
  return null;
@@ -299,6 +308,10 @@ class BuildingBlock<T extends UI5Element = Control, K extends object = {}> exten
299
308
  getManifestWrapper(): ManifestWrapper | undefined {
300
309
  return this._getOwner()?.getManifestWrapper();
301
310
  }
311
+
312
+ getOwnerPageDefinition(): DefinitionPage | undefined {
313
+ return this._getOwner()?.preprocessorContext?.getDefinitionForPage();
314
+ }
302
315
  }
303
316
 
304
317
  interface BuildingBlock<T extends UI5Element> {
@@ -52,12 +52,14 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/ui/core/mvc/ControllerExtension"
52
52
  if (method.overrideExecution === "BeforeAsync") {
53
53
  methodArrays.reverse();
54
54
  }
55
+ let result;
55
56
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
56
57
  args[_key] = arguments[_key];
57
58
  }
58
59
  for (const arg of methodArrays) {
59
- await arg.apply(_this2, args);
60
+ result = await arg.apply(_this2, args);
60
61
  }
62
+ return result;
61
63
  };
62
64
  }
63
65
  });
@@ -70,4 +72,4 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/ui/core/mvc/ControllerExtension"
70
72
  _exports = BaseControllerExtension;
71
73
  return _exports;
72
74
  }, false);
73
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlQ29udHJvbGxlckV4dGVuc2lvbiIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9jbGFzcyIsIl9Db250cm9sbGVyRXh0ZW5zaW9uIiwiX3RoaXMiLCJjYWxsIiwiaW5pdCIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJnZXRJbnRlcmZhY2UiLCJfdGhpczIiLCJpbnRlcmZhY2VPYmoiLCJtZXRhZGF0YSIsImdldE1ldGFkYXRhIiwiYWxsTWV0aG9kcyIsImdldEFsbE1ldGhvZHMiLCJtZXRob2RIb2xkZXIiLCJtZXRob2ROYW1lIiwibWV0aG9kIiwib3ZlcnJpZGVFeGVjdXRpb24iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsInNldCIsInYiLCJwdXNoIiwiZ2V0IiwibWV0aG9kQXJyYXlzIiwicmV2ZXJzZSIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiYXJnIiwiYXBwbHkiLCJDb250cm9sbGVyRXh0ZW5zaW9uIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJCYXNlQ29udHJvbGxlckV4dGVuc2lvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZWZpbmVVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIEJhc2VPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL09iamVjdFwiO1xuaW1wb3J0IENvbnRyb2xsZXJFeHRlbnNpb24gZnJvbSBcInNhcC91aS9jb3JlL212Yy9Db250cm9sbGVyRXh0ZW5zaW9uXCI7XG5pbXBvcnQgdHlwZSBDb250cm9sbGVyTWV0YWRhdGEgZnJvbSBcInNhcC91aS9jb3JlL212Yy9Db250cm9sbGVyTWV0YWRhdGFcIjtcbi8qKlxuICogQSBiYXNlIGltcGxlbWVudGF0aW9uIGZvciBjb250cm9sbGVyIGV4dGVuc2lvbiB1c2VkIGludGVybmFsbHkgaW4gc2FwLmZlIGZvciBjZW50cmFsIGZ1bmN0aW9uYWxpdGllcy5cbiAqIEBwdWJsaWNcbiAqIEBzaW5jZSAxLjExOC4wXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLkJhc2VDb250cm9sbGVyRXh0ZW5zaW9uXCIpXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCYXNlQ29udHJvbGxlckV4dGVuc2lvbiBleHRlbmRzIENvbnRyb2xsZXJFeHRlbnNpb24ge1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXHRcdCh0aGlzIGFzIHVua25vd24gYXMgeyBpbml0OiBGdW5jdGlvbiB9KS5pbml0KCk7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gdGhlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGlzIGluc3RhbnRpYXRlZC5cblx0ICogV2UgbmVlZCB0byBvdmVycmlkZSBpdCBmb3IgdGhlIHNwZWNpZmljIGhhbmRsaW5nIGZvciBCZWZvcmVBc3luYyBhbmQgQWZ0ZXJBc3luYyBtZXRob2RzLCBvdGhlcndpc2UgdGhlIGxhc3QgbGV2ZWwgb2YgZXh0ZW5zaW9uIGp1c3QgcmVwbGFjZSBvdXIgaW1wbGVtZW50YXRpb24uXG5cdCAqIEByZXR1cm5zIFRoZSBpbnRlcmZhY2UgZm9yIHRoaXMgY29udHJvbGxlciBleHRlbnNpb25cblx0ICovXG5cdGdldEludGVyZmFjZSgpOiBCYXNlT2JqZWN0IHtcblx0XHRjb25zdCBpbnRlcmZhY2VPYmogPSBzdXBlci5nZXRJbnRlcmZhY2UoKTtcblx0XHRjb25zdCBtZXRhZGF0YSA9IHRoaXMuZ2V0TWV0YWRhdGEoKSBhcyBDb250cm9sbGVyTWV0YWRhdGE7XG5cdFx0Y29uc3QgYWxsTWV0aG9kcyA9IG1ldGFkYXRhLmdldEFsbE1ldGhvZHMoKTtcblx0XHRjb25zdCBtZXRob2RIb2xkZXI6IFJlY29yZDxzdHJpbmcsIEZ1bmN0aW9uW10+ID0ge307XG5cblx0XHRmb3IgKGNvbnN0IG1ldGhvZE5hbWUgaW4gYWxsTWV0aG9kcykge1xuXHRcdFx0Y29uc3QgbWV0aG9kID0gYWxsTWV0aG9kc1ttZXRob2ROYW1lXTtcblx0XHRcdGlmIChtZXRob2Qub3ZlcnJpZGVFeGVjdXRpb24gJiYgKG1ldGhvZC5vdmVycmlkZUV4ZWN1dGlvbiA9PT0gXCJBZnRlckFzeW5jXCIgfHwgbWV0aG9kLm92ZXJyaWRlRXhlY3V0aW9uID09PSBcIkJlZm9yZUFzeW5jXCIpKSB7XG5cdFx0XHRcdG1ldGhvZEhvbGRlclttZXRob2ROYW1lXSA9IFsoaW50ZXJmYWNlT2JqIGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+KVttZXRob2ROYW1lXV07XG5cdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbnRlcmZhY2VPYmosIG1ldGhvZE5hbWUsIHtcblx0XHRcdFx0XHRjb25maWd1cmFibGU6IHRydWUsXG5cdFx0XHRcdFx0c2V0OiAodjogRnVuY3Rpb24pID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiBtZXRob2RIb2xkZXJbbWV0aG9kTmFtZV0ucHVzaCh2KTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGdldDogKCkgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGFzeW5jICguLi5hcmdzOiB1bmtub3duW10pID0+IHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgbWV0aG9kQXJyYXlzID0gbWV0aG9kSG9sZGVyW21ldGhvZE5hbWVdO1xuXHRcdFx0XHRcdFx0XHRpZiAobWV0aG9kLm92ZXJyaWRlRXhlY3V0aW9uID09PSBcIkJlZm9yZUFzeW5jXCIpIHtcblx0XHRcdFx0XHRcdFx0XHRtZXRob2RBcnJheXMucmV2ZXJzZSgpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgYXJnIG9mIG1ldGhvZEFycmF5cykge1xuXHRcdFx0XHRcdFx0XHRcdGF3YWl0IGFyZy5hcHBseSh0aGlzLCBhcmdzKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBpbnRlcmZhY2VPYmo7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0VBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUpBLElBTXFCQSx1QkFBdUIsSUFBQUMsSUFBQSxHQUQzQ0MsY0FBYyxDQUFDLDBEQUEwRCxDQUFDLEVBQUFELElBQUEsQ0FBQUUsTUFBQSwwQkFBQUMsb0JBQUE7SUFFMUUsU0FBQUosd0JBQUEsRUFBYztNQUFBLElBQUFLLEtBQUE7TUFDYkEsS0FBQSxHQUFBRCxvQkFBQSxDQUFBRSxJQUFBLEtBQU0sQ0FBQztNQUNQRCxLQUFBLENBQXdDRSxJQUFJLENBQUMsQ0FBQztNQUFDLE9BQUFGLEtBQUE7SUFDaEQ7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtJQUpDRyxRQUFBLEdBQUFSLHVCQUFBO0lBQUFTLGNBQUEsQ0FBQVQsdUJBQUEsRUFBQUksb0JBQUE7SUFBQSxJQUFBTSxNQUFBLEdBQUFWLHVCQUFBLENBQUFXLFNBQUE7SUFBQUQsTUFBQSxDQUtBRSxZQUFZLEdBQVosU0FBQUEsWUFBWUEsQ0FBQSxFQUFlO01BQUEsSUFBQUMsTUFBQTtNQUMxQixNQUFNQyxZQUFZLEdBQUFWLG9CQUFBLENBQUFPLFNBQUEsQ0FBU0MsWUFBWSxDQUFBTixJQUFBLE1BQUU7TUFDekMsTUFBTVMsUUFBUSxHQUFHLElBQUksQ0FBQ0MsV0FBVyxDQUFDLENBQXVCO01BQ3pELE1BQU1DLFVBQVUsR0FBR0YsUUFBUSxDQUFDRyxhQUFhLENBQUMsQ0FBQztNQUMzQyxNQUFNQyxZQUF3QyxHQUFHLENBQUMsQ0FBQztNQUVuRCxLQUFLLE1BQU1DLFVBQVUsSUFBSUgsVUFBVSxFQUFFO1FBQ3BDLE1BQU1JLE1BQU0sR0FBR0osVUFBVSxDQUFDRyxVQUFVLENBQUM7UUFDckMsSUFBSUMsTUFBTSxDQUFDQyxpQkFBaUIsS0FBS0QsTUFBTSxDQUFDQyxpQkFBaUIsS0FBSyxZQUFZLElBQUlELE1BQU0sQ0FBQ0MsaUJBQWlCLEtBQUssYUFBYSxDQUFDLEVBQUU7VUFDMUhILFlBQVksQ0FBQ0MsVUFBVSxDQUFDLEdBQUcsQ0FBRU4sWUFBWSxDQUF5Q00sVUFBVSxDQUFDLENBQUM7VUFDOUZHLE1BQU0sQ0FBQ0MsY0FBYyxDQUFDVixZQUFZLEVBQUVNLFVBQVUsRUFBRTtZQUMvQ0ssWUFBWSxFQUFFLElBQUk7WUFDbEJDLEdBQUcsRUFBR0MsQ0FBVyxJQUFLO2NBQ3JCLE9BQU9SLFlBQVksQ0FBQ0MsVUFBVSxDQUFDLENBQUNRLElBQUksQ0FBQ0QsQ0FBQyxDQUFDO1lBQ3hDLENBQUM7WUFDREUsR0FBRyxFQUFFQSxDQUFBLEtBQU07Y0FDVixPQUFPLGtCQUE4QjtnQkFDcEMsTUFBTUMsWUFBWSxHQUFHWCxZQUFZLENBQUNDLFVBQVUsQ0FBQztnQkFDN0MsSUFBSUMsTUFBTSxDQUFDQyxpQkFBaUIsS0FBSyxhQUFhLEVBQUU7a0JBQy9DUSxZQUFZLENBQUNDLE9BQU8sQ0FBQyxDQUFDO2dCQUN2QjtnQkFBQyxTQUFBQyxJQUFBLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxFQUplQyxJQUFJLE9BQUFDLEtBQUEsQ0FBQUosSUFBQSxHQUFBSyxJQUFBLE1BQUFBLElBQUEsR0FBQUwsSUFBQSxFQUFBSyxJQUFBO2tCQUFKRixJQUFJLENBQUFFLElBQUEsSUFBQUosU0FBQSxDQUFBSSxJQUFBO2dCQUFBO2dCQUtwQixLQUFLLE1BQU1DLEdBQUcsSUFBSVIsWUFBWSxFQUFFO2tCQUMvQixNQUFNUSxHQUFHLENBQUNDLEtBQUssQ0FBQzFCLE1BQUksRUFBRXNCLElBQUksQ0FBQztnQkFDNUI7Y0FDRCxDQUFDO1lBQ0Y7VUFDRCxDQUFDLENBQUM7UUFDSDtNQUNEO01BRUEsT0FBT3JCLFlBQVk7SUFDcEIsQ0FBQztJQUFBLE9BQUFkLHVCQUFBO0VBQUEsRUExQ21Ed0MsbUJBQW1CLE1BQUFyQyxNQUFBO0VBQUFLLFFBQUEsR0FBQVIsdUJBQUE7RUFBQSxPQUFBUSxRQUFBO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
75
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlQ29udHJvbGxlckV4dGVuc2lvbiIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9jbGFzcyIsIl9Db250cm9sbGVyRXh0ZW5zaW9uIiwiX3RoaXMiLCJjYWxsIiwiaW5pdCIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJnZXRJbnRlcmZhY2UiLCJfdGhpczIiLCJpbnRlcmZhY2VPYmoiLCJtZXRhZGF0YSIsImdldE1ldGFkYXRhIiwiYWxsTWV0aG9kcyIsImdldEFsbE1ldGhvZHMiLCJtZXRob2RIb2xkZXIiLCJtZXRob2ROYW1lIiwibWV0aG9kIiwib3ZlcnJpZGVFeGVjdXRpb24iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsInNldCIsInYiLCJwdXNoIiwiZ2V0IiwibWV0aG9kQXJyYXlzIiwicmV2ZXJzZSIsInJlc3VsdCIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiYXJnIiwiYXBwbHkiLCJDb250cm9sbGVyRXh0ZW5zaW9uIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJCYXNlQ29udHJvbGxlckV4dGVuc2lvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZWZpbmVVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIEJhc2VPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL09iamVjdFwiO1xuaW1wb3J0IENvbnRyb2xsZXJFeHRlbnNpb24gZnJvbSBcInNhcC91aS9jb3JlL212Yy9Db250cm9sbGVyRXh0ZW5zaW9uXCI7XG5pbXBvcnQgdHlwZSBDb250cm9sbGVyTWV0YWRhdGEgZnJvbSBcInNhcC91aS9jb3JlL212Yy9Db250cm9sbGVyTWV0YWRhdGFcIjtcbi8qKlxuICogQSBiYXNlIGltcGxlbWVudGF0aW9uIGZvciBjb250cm9sbGVyIGV4dGVuc2lvbiB1c2VkIGludGVybmFsbHkgaW4gc2FwLmZlIGZvciBjZW50cmFsIGZ1bmN0aW9uYWxpdGllcy5cbiAqIEBwdWJsaWNcbiAqIEBzaW5jZSAxLjExOC4wXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLkJhc2VDb250cm9sbGVyRXh0ZW5zaW9uXCIpXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCYXNlQ29udHJvbGxlckV4dGVuc2lvbiBleHRlbmRzIENvbnRyb2xsZXJFeHRlbnNpb24ge1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXHRcdCh0aGlzIGFzIHVua25vd24gYXMgeyBpbml0OiBGdW5jdGlvbiB9KS5pbml0KCk7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gdGhlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGlzIGluc3RhbnRpYXRlZC5cblx0ICogV2UgbmVlZCB0byBvdmVycmlkZSBpdCBmb3IgdGhlIHNwZWNpZmljIGhhbmRsaW5nIGZvciBCZWZvcmVBc3luYyBhbmQgQWZ0ZXJBc3luYyBtZXRob2RzLCBvdGhlcndpc2UgdGhlIGxhc3QgbGV2ZWwgb2YgZXh0ZW5zaW9uIGp1c3QgcmVwbGFjZSBvdXIgaW1wbGVtZW50YXRpb24uXG5cdCAqIEByZXR1cm5zIFRoZSBpbnRlcmZhY2UgZm9yIHRoaXMgY29udHJvbGxlciBleHRlbnNpb25cblx0ICovXG5cdGdldEludGVyZmFjZSgpOiBCYXNlT2JqZWN0IHtcblx0XHRjb25zdCBpbnRlcmZhY2VPYmogPSBzdXBlci5nZXRJbnRlcmZhY2UoKTtcblx0XHRjb25zdCBtZXRhZGF0YSA9IHRoaXMuZ2V0TWV0YWRhdGEoKSBhcyBDb250cm9sbGVyTWV0YWRhdGE7XG5cdFx0Y29uc3QgYWxsTWV0aG9kcyA9IG1ldGFkYXRhLmdldEFsbE1ldGhvZHMoKTtcblx0XHRjb25zdCBtZXRob2RIb2xkZXI6IFJlY29yZDxzdHJpbmcsIEZ1bmN0aW9uW10+ID0ge307XG5cblx0XHRmb3IgKGNvbnN0IG1ldGhvZE5hbWUgaW4gYWxsTWV0aG9kcykge1xuXHRcdFx0Y29uc3QgbWV0aG9kID0gYWxsTWV0aG9kc1ttZXRob2ROYW1lXTtcblx0XHRcdGlmIChtZXRob2Qub3ZlcnJpZGVFeGVjdXRpb24gJiYgKG1ldGhvZC5vdmVycmlkZUV4ZWN1dGlvbiA9PT0gXCJBZnRlckFzeW5jXCIgfHwgbWV0aG9kLm92ZXJyaWRlRXhlY3V0aW9uID09PSBcIkJlZm9yZUFzeW5jXCIpKSB7XG5cdFx0XHRcdG1ldGhvZEhvbGRlclttZXRob2ROYW1lXSA9IFsoaW50ZXJmYWNlT2JqIGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+KVttZXRob2ROYW1lXV07XG5cdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbnRlcmZhY2VPYmosIG1ldGhvZE5hbWUsIHtcblx0XHRcdFx0XHRjb25maWd1cmFibGU6IHRydWUsXG5cdFx0XHRcdFx0c2V0OiAodjogRnVuY3Rpb24pID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiBtZXRob2RIb2xkZXJbbWV0aG9kTmFtZV0ucHVzaCh2KTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGdldDogKCkgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGFzeW5jICguLi5hcmdzOiB1bmtub3duW10pID0+IHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgbWV0aG9kQXJyYXlzID0gbWV0aG9kSG9sZGVyW21ldGhvZE5hbWVdO1xuXHRcdFx0XHRcdFx0XHRpZiAobWV0aG9kLm92ZXJyaWRlRXhlY3V0aW9uID09PSBcIkJlZm9yZUFzeW5jXCIpIHtcblx0XHRcdFx0XHRcdFx0XHRtZXRob2RBcnJheXMucmV2ZXJzZSgpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGxldCByZXN1bHQ7XG5cdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgYXJnIG9mIG1ldGhvZEFycmF5cykge1xuXHRcdFx0XHRcdFx0XHRcdHJlc3VsdCA9IGF3YWl0IGFyZy5hcHBseSh0aGlzLCBhcmdzKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBpbnRlcmZhY2VPYmo7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0VBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUpBLElBTXFCQSx1QkFBdUIsSUFBQUMsSUFBQSxHQUQzQ0MsY0FBYyxDQUFDLDBEQUEwRCxDQUFDLEVBQUFELElBQUEsQ0FBQUUsTUFBQSwwQkFBQUMsb0JBQUE7SUFFMUUsU0FBQUosd0JBQUEsRUFBYztNQUFBLElBQUFLLEtBQUE7TUFDYkEsS0FBQSxHQUFBRCxvQkFBQSxDQUFBRSxJQUFBLEtBQU0sQ0FBQztNQUNQRCxLQUFBLENBQXdDRSxJQUFJLENBQUMsQ0FBQztNQUFDLE9BQUFGLEtBQUE7SUFDaEQ7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtJQUpDRyxRQUFBLEdBQUFSLHVCQUFBO0lBQUFTLGNBQUEsQ0FBQVQsdUJBQUEsRUFBQUksb0JBQUE7SUFBQSxJQUFBTSxNQUFBLEdBQUFWLHVCQUFBLENBQUFXLFNBQUE7SUFBQUQsTUFBQSxDQUtBRSxZQUFZLEdBQVosU0FBQUEsWUFBWUEsQ0FBQSxFQUFlO01BQUEsSUFBQUMsTUFBQTtNQUMxQixNQUFNQyxZQUFZLEdBQUFWLG9CQUFBLENBQUFPLFNBQUEsQ0FBU0MsWUFBWSxDQUFBTixJQUFBLE1BQUU7TUFDekMsTUFBTVMsUUFBUSxHQUFHLElBQUksQ0FBQ0MsV0FBVyxDQUFDLENBQXVCO01BQ3pELE1BQU1DLFVBQVUsR0FBR0YsUUFBUSxDQUFDRyxhQUFhLENBQUMsQ0FBQztNQUMzQyxNQUFNQyxZQUF3QyxHQUFHLENBQUMsQ0FBQztNQUVuRCxLQUFLLE1BQU1DLFVBQVUsSUFBSUgsVUFBVSxFQUFFO1FBQ3BDLE1BQU1JLE1BQU0sR0FBR0osVUFBVSxDQUFDRyxVQUFVLENBQUM7UUFDckMsSUFBSUMsTUFBTSxDQUFDQyxpQkFBaUIsS0FBS0QsTUFBTSxDQUFDQyxpQkFBaUIsS0FBSyxZQUFZLElBQUlELE1BQU0sQ0FBQ0MsaUJBQWlCLEtBQUssYUFBYSxDQUFDLEVBQUU7VUFDMUhILFlBQVksQ0FBQ0MsVUFBVSxDQUFDLEdBQUcsQ0FBRU4sWUFBWSxDQUF5Q00sVUFBVSxDQUFDLENBQUM7VUFDOUZHLE1BQU0sQ0FBQ0MsY0FBYyxDQUFDVixZQUFZLEVBQUVNLFVBQVUsRUFBRTtZQUMvQ0ssWUFBWSxFQUFFLElBQUk7WUFDbEJDLEdBQUcsRUFBR0MsQ0FBVyxJQUFLO2NBQ3JCLE9BQU9SLFlBQVksQ0FBQ0MsVUFBVSxDQUFDLENBQUNRLElBQUksQ0FBQ0QsQ0FBQyxDQUFDO1lBQ3hDLENBQUM7WUFDREUsR0FBRyxFQUFFQSxDQUFBLEtBQU07Y0FDVixPQUFPLGtCQUE4QjtnQkFDcEMsTUFBTUMsWUFBWSxHQUFHWCxZQUFZLENBQUNDLFVBQVUsQ0FBQztnQkFDN0MsSUFBSUMsTUFBTSxDQUFDQyxpQkFBaUIsS0FBSyxhQUFhLEVBQUU7a0JBQy9DUSxZQUFZLENBQUNDLE9BQU8sQ0FBQyxDQUFDO2dCQUN2QjtnQkFDQSxJQUFJQyxNQUFNO2dCQUFDLFNBQUFDLElBQUEsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLEVBTEtDLElBQUksT0FBQUMsS0FBQSxDQUFBSixJQUFBLEdBQUFLLElBQUEsTUFBQUEsSUFBQSxHQUFBTCxJQUFBLEVBQUFLLElBQUE7a0JBQUpGLElBQUksQ0FBQUUsSUFBQSxJQUFBSixTQUFBLENBQUFJLElBQUE7Z0JBQUE7Z0JBTXBCLEtBQUssTUFBTUMsR0FBRyxJQUFJVCxZQUFZLEVBQUU7a0JBQy9CRSxNQUFNLEdBQUcsTUFBTU8sR0FBRyxDQUFDQyxLQUFLLENBQUMzQixNQUFJLEVBQUV1QixJQUFJLENBQUM7Z0JBQ3JDO2dCQUNBLE9BQU9KLE1BQU07Y0FDZCxDQUFDO1lBQ0Y7VUFDRCxDQUFDLENBQUM7UUFDSDtNQUNEO01BRUEsT0FBT2xCLFlBQVk7SUFDcEIsQ0FBQztJQUFBLE9BQUFkLHVCQUFBO0VBQUEsRUE1Q21EeUMsbUJBQW1CLE1BQUF0QyxNQUFBO0VBQUFLLFFBQUEsR0FBQVIsdUJBQUE7RUFBQSxPQUFBUSxRQUFBO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -40,9 +40,11 @@ export default class BaseControllerExtension extends ControllerExtension {
40
40
  if (method.overrideExecution === "BeforeAsync") {
41
41
  methodArrays.reverse();
42
42
  }
43
+ let result;
43
44
  for (const arg of methodArrays) {
44
- await arg.apply(this, args);
45
+ result = await arg.apply(this, args);
45
46
  }
47
+ return result;
46
48
  };
47
49
  }
48
50
  });