@sapui5/sap.fe.core 1.111.1 → 1.112.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 (524) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/ActionRuntime-dbg.js +4 -4
  4. package/src/sap/fe/core/ActionRuntime.js +1 -1
  5. package/src/sap/fe/core/ActionRuntime.js.map +1 -1
  6. package/src/sap/fe/core/ActionRuntime.ts +11 -11
  7. package/src/sap/fe/core/AppComponent-dbg.js +27 -5
  8. package/src/sap/fe/core/AppComponent.js +1 -1
  9. package/src/sap/fe/core/AppComponent.js.map +1 -1
  10. package/src/sap/fe/core/AppComponent.ts +58 -3
  11. package/src/sap/fe/core/AppStateHandler-dbg.js +5 -2
  12. package/src/sap/fe/core/AppStateHandler.js +1 -1
  13. package/src/sap/fe/core/AppStateHandler.js.map +1 -1
  14. package/src/sap/fe/core/AppStateHandler.ts +10 -1
  15. package/src/sap/fe/core/BaseController-dbg.js +1 -1
  16. package/src/sap/fe/core/BaseController.ts +2 -1
  17. package/src/sap/fe/core/CommonUtils-dbg.js +152 -365
  18. package/src/sap/fe/core/CommonUtils.js +1 -1
  19. package/src/sap/fe/core/CommonUtils.js.map +1 -1
  20. package/src/sap/fe/core/CommonUtils.ts +201 -478
  21. package/src/sap/fe/core/ExtensionAPI-dbg.js +2 -1
  22. package/src/sap/fe/core/ExtensionAPI.js +1 -1
  23. package/src/sap/fe/core/ExtensionAPI.js.map +1 -1
  24. package/src/sap/fe/core/ExtensionAPI.ts +9 -1
  25. package/src/sap/fe/core/PageController-dbg.js +26 -31
  26. package/src/sap/fe/core/PageController.js +1 -1
  27. package/src/sap/fe/core/PageController.js.map +1 -1
  28. package/src/sap/fe/core/PageController.ts +17 -3
  29. package/src/sap/fe/core/ResourceModel-dbg.js +71 -0
  30. package/src/sap/fe/core/ResourceModel.js +6 -0
  31. package/src/sap/fe/core/ResourceModel.js.map +1 -0
  32. package/src/sap/fe/core/ResourceModel.ts +67 -0
  33. package/src/sap/fe/core/TemplateComponent-dbg.js +1 -1
  34. package/src/sap/fe/core/TemplateComponent.ts +1 -0
  35. package/src/sap/fe/core/TemplateModel-dbg.js +1 -1
  36. package/src/sap/fe/core/TemplateModel.ts +6 -1
  37. package/src/sap/fe/core/buildingBlocks/AttributeModel-dbg.js +5 -7
  38. package/src/sap/fe/core/buildingBlocks/AttributeModel.js +1 -1
  39. package/src/sap/fe/core/buildingBlocks/AttributeModel.js.map +1 -1
  40. package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +6 -5
  41. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase-dbg.js +163 -0
  42. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js +6 -0
  43. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js.map +1 -0
  44. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.ts +169 -0
  45. package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport-dbg.js +88 -0
  46. package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport.js +6 -0
  47. package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport.js.map +1 -0
  48. package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport.ts +147 -0
  49. package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor-dbg.js +905 -0
  50. package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor.js +21 -0
  51. package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor.js.map +1 -0
  52. package/src/sap/fe/core/buildingBlocks/{BuildingBlockRuntime.ts → BuildingBlockTemplateProcessor.ts} +290 -362
  53. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock-dbg.js +79 -0
  54. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock.js +15 -0
  55. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock.js.map +1 -0
  56. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock.ts +68 -0
  57. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment-dbg.js +162 -0
  58. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.js +6 -0
  59. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.js.map +1 -0
  60. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.ts +181 -0
  61. package/src/sap/fe/core/buildingBlocks/TraceInfo-dbg.js +4 -2
  62. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +1 -1
  63. package/src/sap/fe/core/buildingBlocks/TraceInfo.js.map +1 -1
  64. package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +5 -3
  65. package/src/sap/fe/core/controllerextensions/EditFlow-dbg.js +890 -220
  66. package/src/sap/fe/core/controllerextensions/EditFlow.js +1 -1
  67. package/src/sap/fe/core/controllerextensions/EditFlow.js.map +1 -1
  68. package/src/sap/fe/core/controllerextensions/EditFlow.ts +974 -239
  69. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +24 -34
  70. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +1 -1
  71. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js.map +1 -1
  72. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +71 -61
  73. package/src/sap/fe/core/controllerextensions/InternalRouting-dbg.js +14 -17
  74. package/src/sap/fe/core/controllerextensions/InternalRouting.js +1 -1
  75. package/src/sap/fe/core/controllerextensions/InternalRouting.js.map +1 -1
  76. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +23 -17
  77. package/src/sap/fe/core/controllerextensions/KPIManagement-dbg.js +1 -1
  78. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +2 -0
  79. package/src/sap/fe/core/controllerextensions/MassEdit-dbg.js +3 -3
  80. package/src/sap/fe/core/controllerextensions/MassEdit.js +1 -1
  81. package/src/sap/fe/core/controllerextensions/MassEdit.js.map +1 -1
  82. package/src/sap/fe/core/controllerextensions/MassEdit.ts +2 -2
  83. package/src/sap/fe/core/controllerextensions/MessageHandler-dbg.js +2 -1
  84. package/src/sap/fe/core/controllerextensions/MessageHandler.js.map +1 -1
  85. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +2 -0
  86. package/src/sap/fe/core/controllerextensions/PageReady-dbg.js +1 -1
  87. package/src/sap/fe/core/controllerextensions/PageReady.ts +24 -0
  88. package/src/sap/fe/core/controllerextensions/Paginator-dbg.js +2 -1
  89. package/src/sap/fe/core/controllerextensions/Paginator.js.map +1 -1
  90. package/src/sap/fe/core/controllerextensions/Paginator.ts +7 -0
  91. package/src/sap/fe/core/controllerextensions/Placeholder-dbg.js +1 -1
  92. package/src/sap/fe/core/controllerextensions/Placeholder.ts +8 -0
  93. package/src/sap/fe/core/controllerextensions/Share-dbg.js +8 -1
  94. package/src/sap/fe/core/controllerextensions/Share.js.map +1 -1
  95. package/src/sap/fe/core/controllerextensions/Share.ts +11 -0
  96. package/src/sap/fe/core/controllerextensions/SideEffects-dbg.js +14 -13
  97. package/src/sap/fe/core/controllerextensions/SideEffects.js +1 -1
  98. package/src/sap/fe/core/controllerextensions/SideEffects.js.map +1 -1
  99. package/src/sap/fe/core/controllerextensions/SideEffects.ts +27 -27
  100. package/src/sap/fe/core/controllerextensions/ViewState-dbg.js +17 -8
  101. package/src/sap/fe/core/controllerextensions/ViewState.js +1 -1
  102. package/src/sap/fe/core/controllerextensions/ViewState.js.map +1 -1
  103. package/src/sap/fe/core/controllerextensions/ViewState.ts +35 -14
  104. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase-dbg.js +6 -5
  105. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +1 -1
  106. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js.map +1 -1
  107. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +7 -4
  108. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync-dbg.js +285 -82
  109. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +1 -1
  110. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js.map +1 -1
  111. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +326 -89
  112. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon-dbg.js +23 -2
  113. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +1 -1
  114. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js.map +1 -1
  115. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +32 -3
  116. package/src/sap/fe/core/controllerextensions/collaboration/Manage-dbg.js +1 -1
  117. package/src/sap/fe/core/controllerextensions/collaboration/Manage.js.map +1 -1
  118. package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +2 -3
  119. package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +17 -3
  120. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block-dbg.js +65 -34
  121. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js +1 -1
  122. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js.map +1 -1
  123. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.tsx +33 -18
  124. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper-dbg.js +45 -31
  125. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1 -1
  126. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js.map +1 -1
  127. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +52 -42
  128. package/src/sap/fe/core/controllerextensions/editFlow/draft-dbg.js +44 -49
  129. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +1 -1
  130. package/src/sap/fe/core/controllerextensions/editFlow/draft.js.map +1 -1
  131. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +43 -63
  132. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js.map +1 -1
  133. package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal-dbg.js +77 -0
  134. package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.js +6 -0
  135. package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.js.map +1 -0
  136. package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.ts +114 -0
  137. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade-dbg.js +1505 -0
  138. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +6 -0
  139. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js.map +1 -0
  140. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +1985 -0
  141. package/src/sap/fe/core/controllerextensions/editFlow/operations-dbg.js +3 -1415
  142. package/src/sap/fe/core/controllerextensions/editFlow/operations.js +1 -1
  143. package/src/sap/fe/core/controllerextensions/editFlow/operations.js.map +1 -1
  144. package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +2 -1921
  145. package/src/sap/fe/core/controllerextensions/editFlow/sticky-dbg.js +10 -11
  146. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +1 -1
  147. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js.map +1 -1
  148. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +9 -13
  149. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling-dbg.js +43 -41
  150. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +1 -1
  151. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js.map +1 -1
  152. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +44 -47
  153. package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher-dbg.js +12 -1
  154. package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.js.map +1 -1
  155. package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.ts +19 -0
  156. package/src/sap/fe/core/controllerextensions/routing/RouterProxy-dbg.js +12 -13
  157. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +1 -1
  158. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js.map +1 -1
  159. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +32 -13
  160. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +4 -1
  161. package/src/sap/fe/core/controls/CommandExecution-dbg.js +16 -5
  162. package/src/sap/fe/core/controls/CommandExecution.js +1 -1
  163. package/src/sap/fe/core/controls/CommandExecution.js.map +1 -1
  164. package/src/sap/fe/core/controls/CommandExecution.ts +15 -3
  165. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler-dbg.js +3 -2
  166. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +1 -1
  167. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js.map +1 -1
  168. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +4 -1
  169. package/src/sap/fe/core/controls/FilterBar-dbg.js +1 -1
  170. package/src/sap/fe/core/controls/FilterBar.ts +5 -0
  171. package/src/sap/fe/core/controls/FormElementWrapper-dbg.js +1 -1
  172. package/src/sap/fe/core/controls/FormElementWrapper.ts +3 -0
  173. package/src/sap/fe/core/controls/filterbar/FilterContainer-dbg.js +1 -1
  174. package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +7 -0
  175. package/src/sap/fe/core/controls/filterbar/VisualFilter-dbg.js +1 -1
  176. package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +4 -0
  177. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer-dbg.js +1 -1
  178. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +10 -0
  179. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils-dbg.js +4 -3
  180. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +1 -1
  181. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js.map +1 -1
  182. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +3 -2
  183. package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +0 -1
  184. package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +2 -0
  185. package/src/sap/fe/core/controls/massEdit/MassEditHandlers-dbg.js +6 -1
  186. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +1 -1
  187. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js.map +1 -1
  188. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +5 -0
  189. package/src/sap/fe/core/converters/ConverterContext-dbg.js +1 -1
  190. package/src/sap/fe/core/converters/ConverterContext.ts +2 -1
  191. package/src/sap/fe/core/converters/ManifestSettings-dbg.js +1 -8
  192. package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  193. package/src/sap/fe/core/converters/ManifestSettings.js.map +1 -1
  194. package/src/sap/fe/core/converters/ManifestSettings.ts +15 -6
  195. package/src/sap/fe/core/converters/ManifestWrapper-dbg.js +17 -1
  196. package/src/sap/fe/core/converters/ManifestWrapper.js +1 -1
  197. package/src/sap/fe/core/converters/ManifestWrapper.js.map +1 -1
  198. package/src/sap/fe/core/converters/ManifestWrapper.ts +16 -0
  199. package/src/sap/fe/core/converters/MetaModelConverter-dbg.js +61 -49
  200. package/src/sap/fe/core/converters/MetaModelConverter.js +1 -1
  201. package/src/sap/fe/core/converters/MetaModelConverter.js.map +1 -1
  202. package/src/sap/fe/core/converters/MetaModelConverter.ts +65 -51
  203. package/src/sap/fe/core/converters/TemplateConverter-dbg.js +2 -1
  204. package/src/sap/fe/core/converters/TemplateConverter.js.map +1 -1
  205. package/src/sap/fe/core/converters/TemplateConverter.ts +2 -1
  206. package/src/sap/fe/core/converters/annotations/DataField-dbg.js +65 -16
  207. package/src/sap/fe/core/converters/annotations/DataField.js +1 -1
  208. package/src/sap/fe/core/converters/annotations/DataField.js.map +1 -1
  209. package/src/sap/fe/core/converters/annotations/DataField.ts +62 -18
  210. package/src/sap/fe/core/converters/common/AnnotationConverter-dbg.js +1010 -957
  211. package/src/sap/fe/core/converters/common/AnnotationConverter.js +1 -1
  212. package/src/sap/fe/core/converters/common/AnnotationConverter.js.map +1 -1
  213. package/src/sap/fe/core/converters/controls/Common/Action-dbg.js +8 -8
  214. package/src/sap/fe/core/converters/controls/Common/Action.js +1 -1
  215. package/src/sap/fe/core/converters/controls/Common/Action.js.map +1 -1
  216. package/src/sap/fe/core/converters/controls/Common/Action.ts +28 -26
  217. package/src/sap/fe/core/converters/controls/Common/Chart-dbg.js +95 -33
  218. package/src/sap/fe/core/converters/controls/Common/Chart.js +1 -1
  219. package/src/sap/fe/core/converters/controls/Common/Chart.js.map +1 -1
  220. package/src/sap/fe/core/converters/controls/Common/Chart.ts +133 -49
  221. package/src/sap/fe/core/converters/controls/Common/DataVisualization-dbg.js +99 -62
  222. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +1 -1
  223. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js.map +1 -1
  224. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +140 -75
  225. package/src/sap/fe/core/converters/controls/Common/Form-dbg.js +1 -1
  226. package/src/sap/fe/core/converters/controls/Common/Form.ts +3 -3
  227. package/src/sap/fe/core/converters/controls/Common/KPI-dbg.js +6 -6
  228. package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
  229. package/src/sap/fe/core/converters/controls/Common/KPI.js.map +1 -1
  230. package/src/sap/fe/core/converters/controls/Common/KPI.ts +15 -15
  231. package/src/sap/fe/core/converters/controls/Common/Table-dbg.js +97 -69
  232. package/src/sap/fe/core/converters/controls/Common/Table.js +1 -1
  233. package/src/sap/fe/core/converters/controls/Common/Table.js.map +1 -1
  234. package/src/sap/fe/core/converters/controls/Common/Table.ts +161 -137
  235. package/src/sap/fe/core/converters/controls/Common/table/StandardActions-dbg.js +3 -3
  236. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +1 -1
  237. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js.map +1 -1
  238. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +10 -9
  239. package/src/sap/fe/core/converters/controls/ListReport/FilterBar-dbg.js +48 -44
  240. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +1 -1
  241. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js.map +1 -1
  242. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +130 -86
  243. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters-dbg.js +34 -26
  244. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +1 -1
  245. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js.map +1 -1
  246. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +62 -45
  247. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar-dbg.js +1 -1
  248. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +1 -1
  249. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet-dbg.js +6 -6
  250. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +1 -1
  251. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js.map +1 -1
  252. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +5 -8
  253. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection-dbg.js +34 -13
  254. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +1 -1
  255. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js.map +1 -1
  256. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +54 -20
  257. package/src/sap/fe/core/converters/helpers/Aggregation-dbg.js +3 -1
  258. package/src/sap/fe/core/converters/helpers/Aggregation.js.map +1 -1
  259. package/src/sap/fe/core/converters/helpers/Aggregation.ts +8 -0
  260. package/src/sap/fe/core/converters/helpers/ConfigurableObject-dbg.js +7 -6
  261. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +1 -1
  262. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js.map +1 -1
  263. package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +19 -10
  264. package/src/sap/fe/core/converters/helpers/DataFieldHelper-dbg.js +1 -1
  265. package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +7 -2
  266. package/src/sap/fe/core/converters/helpers/ID-dbg.js +1 -1
  267. package/src/sap/fe/core/converters/helpers/ID.ts +2 -1
  268. package/src/sap/fe/core/converters/helpers/IssueManager-dbg.js +9 -8
  269. package/src/sap/fe/core/converters/helpers/IssueManager.js +1 -1
  270. package/src/sap/fe/core/converters/helpers/IssueManager.js.map +1 -1
  271. package/src/sap/fe/core/converters/helpers/IssueManager.ts +8 -7
  272. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction-dbg.js +8 -7
  273. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +1 -1
  274. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js.map +1 -1
  275. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +9 -6
  276. package/src/sap/fe/core/converters/templates/ListReportConverter-dbg.js +25 -33
  277. package/src/sap/fe/core/converters/templates/ListReportConverter.js +1 -1
  278. package/src/sap/fe/core/converters/templates/ListReportConverter.js.map +1 -1
  279. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +35 -35
  280. package/src/sap/fe/core/converters/templates/ObjectPageConverter-dbg.js +11 -4
  281. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +1 -1
  282. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js.map +1 -1
  283. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +7 -1
  284. package/src/sap/fe/core/formatters/FPMFormatter-dbg.js +1 -1
  285. package/src/sap/fe/core/formatters/FPMFormatter.ts +1 -1
  286. package/src/sap/fe/core/formatters/FiscalFormat-dbg.js +2 -2
  287. package/src/sap/fe/core/formatters/FiscalFormat.ts +6 -1
  288. package/src/sap/fe/core/formatters/TableFormatter-dbg.js +2 -2
  289. package/src/sap/fe/core/formatters/TableFormatter.js +1 -1
  290. package/src/sap/fe/core/formatters/TableFormatter.js.map +1 -1
  291. package/src/sap/fe/core/formatters/TableFormatter.ts +1 -1
  292. package/src/sap/fe/core/formatters/ValueFormatter-dbg.js +5 -5
  293. package/src/sap/fe/core/formatters/ValueFormatter.js +1 -1
  294. package/src/sap/fe/core/formatters/ValueFormatter.js.map +1 -1
  295. package/src/sap/fe/core/formatters/ValueFormatter.ts +6 -4
  296. package/src/sap/fe/core/fpm/Component-dbg.js +1 -1
  297. package/src/sap/fe/core/fpm/Component.ts +1 -0
  298. package/src/sap/fe/core/fpm/manifest.json +1 -1
  299. package/src/sap/fe/core/helpers/AppStartupHelper-dbg.js +2 -2
  300. package/src/sap/fe/core/helpers/AppStartupHelper.js +1 -1
  301. package/src/sap/fe/core/helpers/AppStartupHelper.js.map +1 -1
  302. package/src/sap/fe/core/helpers/AppStartupHelper.ts +1 -1
  303. package/src/sap/fe/core/helpers/BindingToolkit-dbg.js +6 -6
  304. package/src/sap/fe/core/helpers/BindingToolkit.js.map +1 -1
  305. package/src/sap/fe/core/helpers/BindingToolkit.ts +8 -8
  306. package/src/sap/fe/core/helpers/ClassSupport-dbg.js +1 -1
  307. package/src/sap/fe/core/helpers/ClassSupport.js.map +1 -1
  308. package/src/sap/fe/core/helpers/ClassSupport.ts +1 -0
  309. package/src/sap/fe/core/helpers/DeleteHelper-dbg.js +93 -62
  310. package/src/sap/fe/core/helpers/DeleteHelper.js +1 -1
  311. package/src/sap/fe/core/helpers/DeleteHelper.js.map +1 -1
  312. package/src/sap/fe/core/helpers/DeleteHelper.ts +140 -185
  313. package/src/sap/fe/core/helpers/MassEditHelper-dbg.js +20 -18
  314. package/src/sap/fe/core/helpers/MassEditHelper.js +1 -1
  315. package/src/sap/fe/core/helpers/MassEditHelper.js.map +1 -1
  316. package/src/sap/fe/core/helpers/MassEditHelper.ts +22 -23
  317. package/src/sap/fe/core/helpers/MessageStrip-dbg.js +4 -5
  318. package/src/sap/fe/core/helpers/MessageStrip.js +1 -1
  319. package/src/sap/fe/core/helpers/MessageStrip.js.map +1 -1
  320. package/src/sap/fe/core/helpers/MessageStrip.ts +4 -4
  321. package/src/sap/fe/core/helpers/MetaModelFunction-dbg.js +354 -0
  322. package/src/sap/fe/core/helpers/MetaModelFunction.js +6 -0
  323. package/src/sap/fe/core/helpers/MetaModelFunction.js.map +1 -0
  324. package/src/sap/fe/core/helpers/MetaModelFunction.ts +408 -0
  325. package/src/sap/fe/core/helpers/ModelHelper-dbg.js +13 -13
  326. package/src/sap/fe/core/helpers/ModelHelper.js.map +1 -1
  327. package/src/sap/fe/core/helpers/ModelHelper.ts +13 -13
  328. package/src/sap/fe/core/helpers/PasteHelper-dbg.js +5 -5
  329. package/src/sap/fe/core/helpers/PasteHelper.js +1 -1
  330. package/src/sap/fe/core/helpers/PasteHelper.js.map +1 -1
  331. package/src/sap/fe/core/helpers/PasteHelper.ts +6 -10
  332. package/src/sap/fe/core/helpers/ResourceModelHelper-dbg.js +26 -0
  333. package/src/sap/fe/core/helpers/ResourceModelHelper.js +6 -0
  334. package/src/sap/fe/core/helpers/ResourceModelHelper.js.map +1 -0
  335. package/src/sap/fe/core/helpers/ResourceModelHelper.ts +19 -0
  336. package/src/sap/fe/core/helpers/SemanticDateOperators-dbg.js +93 -18
  337. package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
  338. package/src/sap/fe/core/helpers/SemanticDateOperators.js.map +1 -1
  339. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +70 -17
  340. package/src/sap/fe/core/helpers/SemanticKeyHelper-dbg.js +2 -2
  341. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -1
  342. package/src/sap/fe/core/helpers/SemanticKeyHelper.js.map +1 -1
  343. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +1 -1
  344. package/src/sap/fe/core/helpers/Synchronization-dbg.js +1 -1
  345. package/src/sap/fe/core/helpers/Synchronization.ts +2 -0
  346. package/src/sap/fe/core/helpers/TypeGuards-dbg.js +5 -1
  347. package/src/sap/fe/core/helpers/TypeGuards.js +1 -1
  348. package/src/sap/fe/core/helpers/TypeGuards.js.map +1 -1
  349. package/src/sap/fe/core/helpers/TypeGuards.ts +12 -1
  350. package/src/sap/fe/core/jsx-runtime/ViewLoader-dbg.js +2 -1
  351. package/src/sap/fe/core/jsx-runtime/ViewLoader.js.map +1 -1
  352. package/src/sap/fe/core/jsx-runtime/ViewLoader.tsx +6 -2
  353. package/src/sap/fe/core/jsx-runtime/jsx-control-dbg.js +1 -1
  354. package/src/sap/fe/core/jsx-runtime/jsx-control.ts +3 -1
  355. package/src/sap/fe/core/jsx-runtime/useMDXComponents-dbg.js +3 -3
  356. package/src/sap/fe/core/jsx-runtime/useMDXComponents.js +1 -1
  357. package/src/sap/fe/core/jsx-runtime/useMDXComponents.js.map +1 -1
  358. package/src/sap/fe/core/jsx-runtime/useMDXComponents.tsx +1 -1
  359. package/src/sap/fe/core/library-dbg.js +2 -2
  360. package/src/sap/fe/core/library-preload.js +127 -125
  361. package/src/sap/fe/core/library-preload.js.map +1 -1
  362. package/src/sap/fe/core/library.js +1 -1
  363. package/src/sap/fe/core/library.ts +7 -0
  364. package/src/sap/fe/core/manifest.json +1 -1
  365. package/src/sap/fe/core/messagebundle.properties +33 -0
  366. package/src/sap/fe/core/messagebundle_ar.properties +12 -10
  367. package/src/sap/fe/core/messagebundle_bg.properties +11 -9
  368. package/src/sap/fe/core/messagebundle_ca.properties +11 -9
  369. package/src/sap/fe/core/messagebundle_cs.properties +11 -9
  370. package/src/sap/fe/core/messagebundle_cy.properties +11 -9
  371. package/src/sap/fe/core/messagebundle_da.properties +11 -9
  372. package/src/sap/fe/core/messagebundle_de.properties +3 -1
  373. package/src/sap/fe/core/messagebundle_el.properties +11 -9
  374. package/src/sap/fe/core/messagebundle_en.properties +3 -1
  375. package/src/sap/fe/core/messagebundle_en_GB.properties +2 -0
  376. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +2 -0
  377. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +20 -0
  378. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +21 -3
  379. package/src/sap/fe/core/messagebundle_es.properties +11 -9
  380. package/src/sap/fe/core/messagebundle_es_MX.properties +11 -9
  381. package/src/sap/fe/core/messagebundle_et.properties +11 -9
  382. package/src/sap/fe/core/messagebundle_fi.properties +11 -9
  383. package/src/sap/fe/core/messagebundle_fr.properties +11 -9
  384. package/src/sap/fe/core/messagebundle_fr_CA.properties +3 -1
  385. package/src/sap/fe/core/messagebundle_hi.properties +2 -0
  386. package/src/sap/fe/core/messagebundle_hr.properties +11 -9
  387. package/src/sap/fe/core/messagebundle_hu.properties +11 -9
  388. package/src/sap/fe/core/messagebundle_id.properties +3 -1
  389. package/src/sap/fe/core/messagebundle_it.properties +11 -9
  390. package/src/sap/fe/core/messagebundle_iw.properties +11 -9
  391. package/src/sap/fe/core/messagebundle_ja.properties +11 -9
  392. package/src/sap/fe/core/messagebundle_kk.properties +11 -9
  393. package/src/sap/fe/core/messagebundle_ko.properties +2 -0
  394. package/src/sap/fe/core/messagebundle_lt.properties +11 -9
  395. package/src/sap/fe/core/messagebundle_lv.properties +2 -0
  396. package/src/sap/fe/core/messagebundle_ms.properties +12 -10
  397. package/src/sap/fe/core/messagebundle_nl.properties +12 -10
  398. package/src/sap/fe/core/messagebundle_no.properties +11 -9
  399. package/src/sap/fe/core/messagebundle_pl.properties +2 -0
  400. package/src/sap/fe/core/messagebundle_pt.properties +11 -9
  401. package/src/sap/fe/core/messagebundle_pt_PT.properties +11 -9
  402. package/src/sap/fe/core/messagebundle_ro.properties +3 -1
  403. package/src/sap/fe/core/messagebundle_ru.properties +3 -1
  404. package/src/sap/fe/core/messagebundle_sh.properties +11 -9
  405. package/src/sap/fe/core/messagebundle_sk.properties +11 -9
  406. package/src/sap/fe/core/messagebundle_sl.properties +11 -9
  407. package/src/sap/fe/core/messagebundle_sv.properties +2 -0
  408. package/src/sap/fe/core/messagebundle_th.properties +11 -9
  409. package/src/sap/fe/core/messagebundle_tr.properties +11 -9
  410. package/src/sap/fe/core/messagebundle_uk.properties +11 -9
  411. package/src/sap/fe/core/messagebundle_vi.properties +12 -10
  412. package/src/sap/fe/core/messagebundle_zh_CN.properties +2 -0
  413. package/src/sap/fe/core/messagebundle_zh_TW.properties +2 -0
  414. package/src/sap/fe/core/operationsHelper-dbg.js +70 -44
  415. package/src/sap/fe/core/operationsHelper.js +1 -1
  416. package/src/sap/fe/core/operationsHelper.js.map +1 -1
  417. package/src/sap/fe/core/operationsHelper.ts +88 -63
  418. package/src/sap/fe/core/rootView/Fcl-dbg.controller.js +1 -1
  419. package/src/sap/fe/core/rootView/Fcl.controller.ts +10 -0
  420. package/src/sap/fe/core/rootView/NavContainer-dbg.controller.js +2 -2
  421. package/src/sap/fe/core/rootView/NavContainer.controller.js +1 -1
  422. package/src/sap/fe/core/rootView/NavContainer.controller.js.map +1 -1
  423. package/src/sap/fe/core/rootView/NavContainer.controller.ts +5 -3
  424. package/src/sap/fe/core/rootView/RootViewBaseController-dbg.js +4 -3
  425. package/src/sap/fe/core/rootView/RootViewBaseController.js +1 -1
  426. package/src/sap/fe/core/rootView/RootViewBaseController.js.map +1 -1
  427. package/src/sap/fe/core/rootView/RootViewBaseController.ts +15 -5
  428. package/src/sap/fe/core/services/AsyncComponentServiceFactory-dbg.js +1 -1
  429. package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +3 -1
  430. package/src/sap/fe/core/services/CacheHandlerServiceFactory-dbg.js +1 -1
  431. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js.map +1 -1
  432. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +15 -1
  433. package/src/sap/fe/core/services/EnvironmentServiceFactory-dbg.js +1 -1
  434. package/src/sap/fe/core/services/EnvironmentServiceFactory.js.map +1 -1
  435. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +4 -1
  436. package/src/sap/fe/core/services/NavigationServiceFactory-dbg.js +9 -1
  437. package/src/sap/fe/core/services/NavigationServiceFactory.js.map +1 -1
  438. package/src/sap/fe/core/services/NavigationServiceFactory.ts +19 -1
  439. package/src/sap/fe/core/services/ResourceModelServiceFactory-dbg.js +2 -2
  440. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +1 -1
  441. package/src/sap/fe/core/services/ResourceModelServiceFactory.js.map +1 -1
  442. package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +10 -3
  443. package/src/sap/fe/core/services/RoutingServiceFactory-dbg.js +3 -3
  444. package/src/sap/fe/core/services/RoutingServiceFactory.js +1 -1
  445. package/src/sap/fe/core/services/RoutingServiceFactory.js.map +1 -1
  446. package/src/sap/fe/core/services/RoutingServiceFactory.ts +29 -3
  447. package/src/sap/fe/core/services/ShellServicesFactory-dbg.js +1 -1
  448. package/src/sap/fe/core/services/ShellServicesFactory.ts +14 -2
  449. package/src/sap/fe/core/services/SideEffectsServiceFactory-dbg.js +448 -279
  450. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +1 -1
  451. package/src/sap/fe/core/services/SideEffectsServiceFactory.js.map +1 -1
  452. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +502 -333
  453. package/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +18 -5
  454. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +1 -1
  455. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js.map +1 -1
  456. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +41 -12
  457. package/src/sap/fe/core/support/Diagnostics-dbg.js +1 -1
  458. package/src/sap/fe/core/support/Diagnostics.ts +5 -0
  459. package/src/sap/fe/core/templating/DataModelPathHelper-dbg.js +185 -86
  460. package/src/sap/fe/core/templating/DataModelPathHelper.js +1 -1
  461. package/src/sap/fe/core/templating/DataModelPathHelper.js.map +1 -1
  462. package/src/sap/fe/core/templating/DataModelPathHelper.ts +190 -82
  463. package/src/sap/fe/core/templating/DisplayModeFormatter-dbg.js +1 -1
  464. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +1 -1
  465. package/src/sap/fe/core/templating/EntitySetHelper-dbg.js +2 -3
  466. package/src/sap/fe/core/templating/EntitySetHelper.js +1 -1
  467. package/src/sap/fe/core/templating/EntitySetHelper.js.map +1 -1
  468. package/src/sap/fe/core/templating/EntitySetHelper.ts +1 -3
  469. package/src/sap/fe/core/templating/FilterHelper-dbg.js +3 -3
  470. package/src/sap/fe/core/templating/FilterHelper.js +1 -1
  471. package/src/sap/fe/core/templating/FilterHelper.js.map +1 -1
  472. package/src/sap/fe/core/templating/FilterHelper.ts +5 -3
  473. package/src/sap/fe/core/templating/PropertyHelper-dbg.js +1 -1
  474. package/src/sap/fe/core/templating/PropertyHelper.ts +2 -2
  475. package/src/sap/fe/core/templating/UIFormatters-dbg.js +1 -1
  476. package/src/sap/fe/core/templating/UIFormatters.ts +4 -0
  477. package/src/sap/fe/core/type/DateTimeWithTimezone-dbg.js +1 -1
  478. package/src/sap/fe/core/type/DateTimeWithTimezone.ts +2 -0
  479. package/src/sap/fe/core/type/FiscalDate-dbg.js +2 -2
  480. package/src/sap/fe/core/type/FiscalDate.js.map +1 -1
  481. package/src/sap/fe/core/type/FiscalDate.ts +2 -1
  482. package/src/sap/fe/core/type/TypeUtil-dbg.js +5 -10
  483. package/src/sap/fe/core/type/TypeUtil.js +1 -1
  484. package/src/sap/fe/core/type/TypeUtil.js.map +1 -1
  485. package/src/sap/fe/core/type/TypeUtil.ts +3 -6
  486. package/src/sap/fe/core/buildingBlocks/BuildingBlock-dbg.js +0 -410
  487. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +0 -15
  488. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js.map +0 -1
  489. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +0 -536
  490. package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment-dbg.js +0 -44
  491. package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.js +0 -6
  492. package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.js.map +0 -1
  493. package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.ts +0 -14
  494. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime-dbg.js +0 -948
  495. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +0 -19
  496. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js.map +0 -1
  497. package/src/sap/fe/core/controllerextensions/InternalEditFlow-dbg.js +0 -711
  498. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +0 -6
  499. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js.map +0 -1
  500. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +0 -863
  501. package/src/sap/fe/core/controls/ConditionalWrapper-dbg.js +0 -151
  502. package/src/sap/fe/core/controls/ConditionalWrapper.js +0 -6
  503. package/src/sap/fe/core/controls/ConditionalWrapper.js.map +0 -1
  504. package/src/sap/fe/core/controls/ConditionalWrapper.ts +0 -88
  505. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper-dbg.js +0 -330
  506. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +0 -6
  507. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js.map +0 -1
  508. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +0 -292
  509. package/src/sap/fe/core/controls/CustomQuickViewPage-dbg.js +0 -126
  510. package/src/sap/fe/core/controls/CustomQuickViewPage.js +0 -6
  511. package/src/sap/fe/core/controls/CustomQuickViewPage.js.map +0 -1
  512. package/src/sap/fe/core/controls/CustomQuickViewPage.ts +0 -105
  513. package/src/sap/fe/core/controls/FieldWrapper-dbg.js +0 -194
  514. package/src/sap/fe/core/controls/FieldWrapper.js +0 -6
  515. package/src/sap/fe/core/controls/FieldWrapper.js.map +0 -1
  516. package/src/sap/fe/core/controls/FieldWrapper.ts +0 -121
  517. package/src/sap/fe/core/controls/FileWrapper-dbg.js +0 -280
  518. package/src/sap/fe/core/controls/FileWrapper.js +0 -6
  519. package/src/sap/fe/core/controls/FileWrapper.js.map +0 -1
  520. package/src/sap/fe/core/controls/FileWrapper.ts +0 -202
  521. package/src/sap/fe/core/helpers/SideEffectsHelper-dbg.js +0 -141
  522. package/src/sap/fe/core/helpers/SideEffectsHelper.js +0 -6
  523. package/src/sap/fe/core/helpers/SideEffectsHelper.js.map +0 -1
  524. package/src/sap/fe/core/helpers/SideEffectsHelper.ts +0 -129
@@ -28,6 +28,7 @@ let oLastFocusedControl: Control;
28
28
  @defineUI5Class("sap.fe.core.controllerextensions.Share")
29
29
  class ShareUtils extends ControllerExtension {
30
30
  protected base!: PageController;
31
+
31
32
  @methodOverride()
32
33
  onInit(): void {
33
34
  const collaborationInfoModel: JSONModel = new JSONModel({
@@ -38,6 +39,7 @@ class ShareUtils extends ControllerExtension {
38
39
  });
39
40
  this.base.getView().setModel(collaborationInfoModel, "collaborationInfo");
40
41
  }
42
+
41
43
  @methodOverride()
42
44
  onExit(): void {
43
45
  const collaborationInfoModel: JSONModel = this.base?.getView()?.getModel("collaborationInfo") as JSONModel;
@@ -45,6 +47,7 @@ class ShareUtils extends ControllerExtension {
45
47
  collaborationInfoModel.destroy();
46
48
  }
47
49
  }
50
+
48
51
  /**
49
52
  * Opens the share sheet.
50
53
  *
@@ -59,6 +62,7 @@ class ShareUtils extends ControllerExtension {
59
62
  openShareSheet(oControl: object) {
60
63
  this._openShareSheetImpl(oControl);
61
64
  }
65
+
62
66
  /**
63
67
  * Adapts the metadata used while sharing the page URL via 'Send Email', 'Share in SAP Jam', and 'Save as Tile'.
64
68
  *
@@ -94,6 +98,7 @@ class ShareUtils extends ControllerExtension {
94
98
  }): object | Promise<object> {
95
99
  return oShareMetadata;
96
100
  }
101
+
97
102
  async _openShareSheetImpl(by: any): Promise<void> {
98
103
  let oShareActionSheet: ActionSheet;
99
104
  const sHash = HashChanger.getInstance().getHash(),
@@ -236,6 +241,7 @@ class ShareUtils extends ControllerExtension {
236
241
  Log.error("Error while fetching the share model data", oError);
237
242
  }
238
243
  }
244
+
239
245
  _setStaticShareData(shareModel: any) {
240
246
  const oResource = Core.getLibraryResourceBundle("sap.fe.core");
241
247
  shareModel.setProperty("/jamButtonText", oResource.getText("T_COMMON_SAPFE_SHARE_JAM"));
@@ -252,6 +258,7 @@ class ShareUtils extends ControllerExtension {
252
258
  shareModel.setProperty("/jamVisible", !!fnGetUser && fnGetUser().isJamActive());
253
259
  shareModel.setProperty("/saveAsTileVisible", !!(sap && sap.ushell && sap.ushell.Container));
254
260
  }
261
+
255
262
  //the actual opening of the JAM share dialog
256
263
  _doOpenJamShareDialog(text: any, sUrl?: any) {
257
264
  const oShareDialog = Core.createComponent({
@@ -265,6 +272,7 @@ class ShareUtils extends ControllerExtension {
265
272
  });
266
273
  (oShareDialog as any).open();
267
274
  }
275
+
268
276
  /**
269
277
  * Triggers the email flow.
270
278
  *
@@ -281,6 +289,7 @@ class ShareUtils extends ControllerExtension {
281
289
  : oResource.getText("T_SHARE_UTIL_HELPER_SAPFE_EMAIL_SUBJECT", [shareMetadata.title]);
282
290
  library.URLHelper.triggerEmail(undefined, sEmailSubject, shareMetadata.email.url ? shareMetadata.email.url : shareMetadata.url);
283
291
  }
292
+
284
293
  /**
285
294
  * Triggers the share to jam flow.
286
295
  *
@@ -296,6 +305,7 @@ class ShareUtils extends ControllerExtension {
296
305
  shareMetadata.jam.url ? shareMetadata.jam.url : window.location.origin + window.location.pathname + shareMetadata.url
297
306
  );
298
307
  }
308
+
299
309
  /**
300
310
  * Triggers the save as tile flow.
301
311
  *
@@ -324,6 +334,7 @@ class ShareUtils extends ControllerExtension {
324
334
  // addBookmarkButton fire press
325
335
  internalAddBookmarkButton.firePress();
326
336
  }
337
+
327
338
  /**
328
339
  * Call the adaptShareMetadata extension.
329
340
  *
@@ -2,7 +2,7 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2023 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/SideEffectsHelper", "sap/ui/core/mvc/ControllerExtension", "../CommonUtils", "../helpers/ClassSupport"], function (Log, SideEffectsHelper, ControllerExtension, CommonUtils, ClassSupport) {
5
+ sap.ui.define(["sap/base/Log", "sap/ui/core/mvc/ControllerExtension", "../CommonUtils", "../helpers/ClassSupport"], function (Log, ControllerExtension, CommonUtils, ClassSupport) {
6
6
  "use strict";
7
7
 
8
8
  var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _dec20, _dec21, _dec22, _dec23, _dec24, _dec25, _dec26, _dec27, _dec28, _dec29, _dec30, _dec31, _dec32, _dec33, _dec34, _dec35, _dec36, _dec37, _dec38, _class, _class2;
@@ -14,6 +14,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/SideEffectsHelper", "sap/ui/
14
14
  function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
15
15
  function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
16
16
  function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }
17
+ const IMMEDIATE_REQUEST = "$$ImmediateRequest";
17
18
  let SideEffectsControllerExtension = (_dec = defineUI5Class("sap.fe.core.controllerextensions.SideEffects"), _dec2 = methodOverride(), _dec3 = publicExtension(), _dec4 = finalExtension(), _dec5 = publicExtension(), _dec6 = finalExtension(), _dec7 = publicExtension(), _dec8 = finalExtension(), _dec9 = publicExtension(), _dec10 = finalExtension(), _dec11 = publicExtension(), _dec12 = finalExtension(), _dec13 = publicExtension(), _dec14 = finalExtension(), _dec15 = publicExtension(), _dec16 = finalExtension(), _dec17 = publicExtension(), _dec18 = finalExtension(), _dec19 = publicExtension(), _dec20 = finalExtension(), _dec21 = publicExtension(), _dec22 = finalExtension(), _dec23 = publicExtension(), _dec24 = finalExtension(), _dec25 = publicExtension(), _dec26 = finalExtension(), _dec27 = privateExtension(), _dec28 = finalExtension(), _dec29 = publicExtension(), _dec30 = finalExtension(), _dec31 = privateExtension(), _dec32 = finalExtension(), _dec33 = privateExtension(), _dec34 = finalExtension(), _dec35 = privateExtension(), _dec36 = finalExtension(), _dec37 = publicExtension(), _dec38 = finalExtension(), _dec(_class = (_class2 = /*#__PURE__*/function (_ControllerExtension) {
18
19
  _inheritsLoose(SideEffectsControllerExtension, _ControllerExtension);
19
20
  function SideEffectsControllerExtension() {
@@ -106,7 +107,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/SideEffectsHelper", "sap/ui/
106
107
  });
107
108
 
108
109
  // SideEffects coming from an OData Service
109
- sideEffectsMap = this.getSideEffectsMapForFieldGroups(fieldGroupIds, field);
110
+ sideEffectsMap = this.getSideEffectsMapForFieldGroups(fieldGroupIds, field.getBindingContext());
110
111
 
111
112
  // SideEffects coming from control(s)
112
113
  if (viewEntitySetSetName && viewEntitySet) {
@@ -117,7 +118,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/SideEffectsHelper", "sap/ui/
117
118
  const controlSideEffectsEntityType = this._sideEffectsService.getControlEntitySideEffects(viewEntityType);
118
119
  Object.keys(controlSideEffectsEntityType).forEach(sideEffectsName => {
119
120
  const oControlSideEffects = controlSideEffectsEntityType[sideEffectsName];
120
- if (oControlSideEffects.SourceProperties.includes(fieldPath)) {
121
+ if (oControlSideEffects.sourceProperties.includes(fieldPath)) {
121
122
  const name = `${sideEffectsName}::${viewEntityType}`;
122
123
  sideEffectsMap[name] = {
123
124
  name: name,
@@ -138,10 +139,10 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/SideEffectsHelper", "sap/ui/
138
139
  * @function
139
140
  * @name getSideEffectsMapForFieldGroups
140
141
  * @param fieldGroupIds Field group ids
141
- * @param field Field control
142
+ * @param fieldContext Field binding context
142
143
  * @returns SideEffects map
143
144
  */;
144
- _proto.getSideEffectsMapForFieldGroups = function getSideEffectsMapForFieldGroups(fieldGroupIds, field) {
145
+ _proto.getSideEffectsMapForFieldGroups = function getSideEffectsMapForFieldGroups(fieldGroupIds, fieldContext) {
145
146
  const mSideEffectsMap = {};
146
147
  fieldGroupIds.forEach(fieldGroupId => {
147
148
  const {
@@ -150,14 +151,14 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/SideEffectsHelper", "sap/ui/
150
151
  sideEffects,
151
152
  sideEffectEntityType
152
153
  } = this._getSideEffectsPropertyForFieldGroup(fieldGroupId);
153
- const oContext = field ? this.getContextForSideEffects(field.getBindingContext(), sideEffectEntityType) : undefined;
154
- if (sideEffects && (!field || field && oContext)) {
154
+ const oContext = fieldContext ? this.getContextForSideEffects(fieldContext, sideEffectEntityType) : undefined;
155
+ if (sideEffects && (!fieldContext || fieldContext && oContext)) {
155
156
  mSideEffectsMap[name] = {
156
157
  name,
157
158
  immediate,
158
159
  sideEffects
159
160
  };
160
- if (field) {
161
+ if (fieldContext) {
161
162
  mSideEffectsMap[name].context = oContext;
162
163
  }
163
164
  }
@@ -275,8 +276,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/SideEffectsHelper", "sap/ui/
275
276
  targets = targetsAndActionData["aTargets"];
276
277
  triggerAction = targetsAndActionData["TriggerAction"];
277
278
  } else {
278
- targets = [...(sideEffects.TargetEntities ?? []), ...(sideEffects.TargetProperties ?? [])];
279
- triggerAction = sideEffects.TriggerAction;
279
+ targets = [...(sideEffects.targetEntities ?? []), ...(sideEffects.targetProperties ?? [])];
280
+ triggerAction = sideEffects.triggerAction;
280
281
  }
281
282
  if (triggerAction) {
282
283
  this._sideEffectsService.executeAction(triggerAction, context, groupId);
@@ -432,8 +433,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/SideEffectsHelper", "sap/ui/
432
433
  * be deferred (on field group focus out)
433
434
  *
434
435
  */
435
- const immediate = fieldGroupId.indexOf(SideEffectsHelper.IMMEDIATE_REQUEST) !== -1,
436
- name = fieldGroupId.replace(SideEffectsHelper.IMMEDIATE_REQUEST, ""),
436
+ const immediate = fieldGroupId.indexOf(IMMEDIATE_REQUEST) !== -1,
437
+ name = fieldGroupId.replace(IMMEDIATE_REQUEST, ""),
437
438
  sideEffectParts = name.split("#"),
438
439
  sideEffectEntityType = sideEffectParts[0],
439
440
  sideEffectPath = `${sideEffectEntityType}@com.sap.vocabularies.Common.v1.SideEffects${sideEffectParts.length === 2 ? `#${sideEffectParts[1]}` : ""}`,
@@ -550,4 +551,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/SideEffectsHelper", "sap/ui/
550
551
  }(ControllerExtension), (_applyDecoratedDescriptor(_class2.prototype, "onInit", [_dec2], Object.getOwnPropertyDescriptor(_class2.prototype, "onInit"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "addControlSideEffects", [_dec3, _dec4], Object.getOwnPropertyDescriptor(_class2.prototype, "addControlSideEffects"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "removeControlSideEffects", [_dec5, _dec6], Object.getOwnPropertyDescriptor(_class2.prototype, "removeControlSideEffects"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "getContextForSideEffects", [_dec7, _dec8], Object.getOwnPropertyDescriptor(_class2.prototype, "getContextForSideEffects"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "getFieldSideEffectsMap", [_dec9, _dec10], Object.getOwnPropertyDescriptor(_class2.prototype, "getFieldSideEffectsMap"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "getSideEffectsMapForFieldGroups", [_dec11, _dec12], Object.getOwnPropertyDescriptor(_class2.prototype, "getSideEffectsMapForFieldGroups"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "clearFieldGroupsValidity", [_dec13, _dec14], Object.getOwnPropertyDescriptor(_class2.prototype, "clearFieldGroupsValidity"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "isFieldGroupValid", [_dec15, _dec16], Object.getOwnPropertyDescriptor(_class2.prototype, "isFieldGroupValid"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "getTargetProperty", [_dec17, _dec18], Object.getOwnPropertyDescriptor(_class2.prototype, "getTargetProperty"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "handleFieldChange", [_dec19, _dec20], Object.getOwnPropertyDescriptor(_class2.prototype, "handleFieldChange"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "handleFieldGroupChange", [_dec21, _dec22], Object.getOwnPropertyDescriptor(_class2.prototype, "handleFieldGroupChange"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "requestSideEffects", [_dec23, _dec24], Object.getOwnPropertyDescriptor(_class2.prototype, "requestSideEffects"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "getRegisteredFailedRequests", [_dec25, _dec26], Object.getOwnPropertyDescriptor(_class2.prototype, "getRegisteredFailedRequests"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "registerFailedSideEffects", [_dec27, _dec28], Object.getOwnPropertyDescriptor(_class2.prototype, "registerFailedSideEffects"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "unregisterFailedSideEffectsForAContext", [_dec29, _dec30], Object.getOwnPropertyDescriptor(_class2.prototype, "unregisterFailedSideEffectsForAContext"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "unregisterFailedSideEffects", [_dec31, _dec32], Object.getOwnPropertyDescriptor(_class2.prototype, "unregisterFailedSideEffects"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "registerFieldGroupSideEffects", [_dec33, _dec34], Object.getOwnPropertyDescriptor(_class2.prototype, "registerFieldGroupSideEffects"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "unregisterFieldGroupSideEffects", [_dec35, _dec36], Object.getOwnPropertyDescriptor(_class2.prototype, "unregisterFieldGroupSideEffects"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "getRegisteredSideEffectsForFieldGroup", [_dec37, _dec38], Object.getOwnPropertyDescriptor(_class2.prototype, "getRegisteredSideEffectsForFieldGroup"), _class2.prototype)), _class2)) || _class);
551
552
  return SideEffectsControllerExtension;
552
553
  }, false);
553
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTaWRlRWZmZWN0c0NvbnRyb2xsZXJFeHRlbnNpb24iLCJkZWZpbmVVSTVDbGFzcyIsIm1ldGhvZE92ZXJyaWRlIiwicHVibGljRXh0ZW5zaW9uIiwiZmluYWxFeHRlbnNpb24iLCJwcml2YXRlRXh0ZW5zaW9uIiwib25Jbml0IiwiX3ZpZXciLCJiYXNlIiwiZ2V0VmlldyIsIl9zaWRlRWZmZWN0c1NlcnZpY2UiLCJDb21tb25VdGlscyIsImdldEFwcENvbXBvbmVudCIsImdldFNpZGVFZmZlY3RzU2VydmljZSIsIl9yZWdpc3RlcmVkRmllbGRHcm91cE1hcCIsIl9maWVsZEdyb3VwSW52YWxpZGl0eSIsIl9yZWdpc3RlcmVkRmFpbGVkU2lkZUVmZmVjdHMiLCJhZGRDb250cm9sU2lkZUVmZmVjdHMiLCJlbnRpdHlUeXBlIiwiY29udHJvbFNpZGVFZmZlY3RzIiwicmVtb3ZlQ29udHJvbFNpZGVFZmZlY3RzIiwiY29udHJvbCIsImNvbnRyb2xJZCIsImlzQSIsImdldElkIiwiZ2V0Q29udGV4dEZvclNpZGVFZmZlY3RzIiwiYmluZGluZ0NvbnRleHQiLCJzaWRlRWZmZWN0RW50aXR5VHlwZSIsImNvbnRleHRGb3JTaWRlRWZmZWN0cyIsImdldEVudGl0eVR5cGVGcm9tQ29udGV4dCIsImdldEJpbmRpbmciLCJnZXRDb250ZXh0IiwidW5kZWZpbmVkIiwiZ2V0RmllbGRTaWRlRWZmZWN0c01hcCIsImZpZWxkIiwic2lkZUVmZmVjdHNNYXAiLCJmaWVsZEdyb3VwSWRzIiwiZ2V0RmllbGRHcm91cElkcyIsInZpZXdFbnRpdHlTZXRTZXROYW1lIiwiZ2V0Vmlld0RhdGEiLCJlbnRpdHlTZXQiLCJ2aWV3RW50aXR5U2V0IiwiZ2V0Q29udmVydGVkTWV0YU1vZGVsIiwiZW50aXR5U2V0cyIsImZpbmQiLCJuYW1lIiwiZ2V0U2lkZUVmZmVjdHNNYXBGb3JGaWVsZEdyb3VwcyIsInZpZXdFbnRpdHlUeXBlIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwiZmllbGRQYXRoIiwiZ2V0VGFyZ2V0UHJvcGVydHkiLCJjb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJjb250cm9sU2lkZUVmZmVjdHNFbnRpdHlUeXBlIiwiZ2V0Q29udHJvbEVudGl0eVNpZGVFZmZlY3RzIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJzaWRlRWZmZWN0c05hbWUiLCJvQ29udHJvbFNpZGVFZmZlY3RzIiwiU291cmNlUHJvcGVydGllcyIsImluY2x1ZGVzIiwiaW1tZWRpYXRlIiwic2lkZUVmZmVjdHMiLCJtU2lkZUVmZmVjdHNNYXAiLCJmaWVsZEdyb3VwSWQiLCJfZ2V0U2lkZUVmZmVjdHNQcm9wZXJ0eUZvckZpZWxkR3JvdXAiLCJvQ29udGV4dCIsImNsZWFyRmllbGRHcm91cHNWYWxpZGl0eSIsImlzRmllbGRHcm91cFZhbGlkIiwiaWQiLCJfZ2V0RmllbGRHcm91cEluZGV4IiwibGVuZ3RoIiwiZGF0YSIsIm1ldGFNb2RlbCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwidmlld0JpbmRpbmdQYXRoIiwiZ2V0UGF0aCIsInZpZXdNZXRhTW9kZWxQYXRoIiwiZ2V0TWV0YVBhdGgiLCJyZXBsYWNlIiwiaGFuZGxlRmllbGRDaGFuZ2UiLCJldmVudCIsImZpZWxkVmFsaWRpdHkiLCJmaWVsZEdyb3VwUHJlUmVxdWlzaXRlIiwiZ2V0U291cmNlIiwiX3NhdmVGaWVsZFByb3BlcnRpZXNTdGF0dXMiLCJnZXRQYXJhbWV0ZXIiLCJQcm9taXNlIiwicmVzb2x2ZSIsImUiLCJMb2ciLCJkZWJ1ZyIsIl9tYW5hZ2VTaWRlRWZmZWN0c0Zyb21GaWVsZCIsImhhbmRsZUZpZWxkR3JvdXBDaGFuZ2UiLCJmaWVsZEdyb3Vwc1NpZGVFZmZlY3RzIiwicmVkdWNlIiwicmVzdWx0cyIsImNvbmNhdCIsImdldFJlZ2lzdGVyZWRTaWRlRWZmZWN0c0ZvckZpZWxkR3JvdXAiLCJhbGwiLCJtYXAiLCJmaWVsZEdyb3VwU2lkZUVmZmVjdHMiLCJfcmVxdWVzdEZpZWxkR3JvdXBTaWRlRWZmZWN0cyIsImNhdGNoIiwiZXJyb3IiLCJjb250ZXh0UGF0aCIsInJlcXVlc3RTaWRlRWZmZWN0cyIsImdyb3VwSWQiLCJmbkdldFRhcmdldHMiLCJ0YXJnZXRzIiwidHJpZ2dlckFjdGlvbiIsInRhcmdldHNBbmRBY3Rpb25EYXRhIiwiVGFyZ2V0RW50aXRpZXMiLCJUYXJnZXRQcm9wZXJ0aWVzIiwiVHJpZ2dlckFjdGlvbiIsImV4ZWN1dGVBY3Rpb24iLCJyZWdpc3RlckZhaWxlZFNpZGVFZmZlY3RzIiwiZ2V0UmVnaXN0ZXJlZEZhaWxlZFJlcXVlc3RzIiwiaXNOb3RBbHJlYWR5TGlzdGVkIiwiZXZlcnkiLCJtRmFpbGVkU2lkZUVmZmVjdHMiLCJwdXNoIiwidW5yZWdpc3RlckZhaWxlZFNpZGVFZmZlY3RzRm9yQUNvbnRleHQiLCJ1bnJlZ2lzdGVyRmFpbGVkU2lkZUVmZmVjdHMiLCJzaWRlRWZmZWN0c0Z1bGx5UXVhbGlmaWVkTmFtZSIsImZpbHRlciIsInJlZ2lzdGVyRmllbGRHcm91cFNpZGVFZmZlY3RzIiwic2lkZUVmZmVjdHNQcm9wZXJ0aWVzIiwicHJvbWlzZSIsInNpZGVFZmZlY3RQcm9wZXJ0eSIsInVucmVnaXN0ZXJGaWVsZEdyb3VwU2lkZUVmZmVjdHMiLCJyZWdpc3RyeUluZGV4Iiwic3RhcnRzV2l0aCIsImluZGV4T2YiLCJTaWRlRWZmZWN0c0hlbHBlciIsIklNTUVESUFURV9SRVFVRVNUIiwic2lkZUVmZmVjdFBhcnRzIiwic3BsaXQiLCJzaWRlRWZmZWN0UGF0aCIsImdldE9EYXRhRW50aXR5U2lkZUVmZmVjdHMiLCJmYWlsZWRTaWRlRWZmZWN0c1Byb21pc2VzIiwic2lkZUVmZmVjdHNQcm9taXNlcyIsImZhaWxlZFNpZGVFZmZlY3RzIiwiZmFpbGVkU2lkZUVmZmVjdCIsInN1Y2Nlc3MiLCJrZXkiLCJDb250cm9sbGVyRXh0ZW5zaW9uIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJTaWRlRWZmZWN0cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBTaWRlRWZmZWN0c0hlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TaWRlRWZmZWN0c0hlbHBlclwiO1xuaW1wb3J0IHR5cGUge1xuXHRDb250cm9sU2lkZUVmZmVjdHNUeXBlLFxuXHRPRGF0YVNpZGVFZmZlY3RzVHlwZSxcblx0U2lkZUVmZmVjdHNTZXJ2aWNlLFxuXHRTaWRlRWZmZWN0c1RhcmdldCxcblx0U2lkZUVmZmVjdHNUeXBlXG59IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9TaWRlRWZmZWN0c1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSBFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBDb250cm9sbGVyRXh0ZW5zaW9uIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvQ29udHJvbGxlckV4dGVuc2lvblwiO1xuaW1wb3J0IHR5cGUgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuaW1wb3J0IE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCB7IFY0Q29udGV4dCB9IGZyb20gXCJ0eXBlcy9leHRlbnNpb25fdHlwZXNcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwiLi4vQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB7IEJhc2VNYW5pZmVzdFNldHRpbmdzIH0gZnJvbSBcIi4uL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIGZpbmFsRXh0ZW5zaW9uLCBtZXRob2RPdmVycmlkZSwgcHJpdmF0ZUV4dGVuc2lvbiwgcHVibGljRXh0ZW5zaW9uIH0gZnJvbSBcIi4uL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgUGFnZUNvbnRyb2xsZXIgZnJvbSBcIi4uL1BhZ2VDb250cm9sbGVyXCI7XG5cbnR5cGUgQmFzZVNpZGVFZmZlY3RQcm9wZXJ0eVR5cGUgPSB7XG5cdG5hbWU6IHN0cmluZztcblx0aW1tZWRpYXRlPzogYm9vbGVhbjtcblx0c2lkZUVmZmVjdHM6IFNpZGVFZmZlY3RzVHlwZTtcbn07XG5cbmV4cG9ydCB0eXBlIE1hc3NFZGl0RmllbGRTaWRlRWZmZWN0UHJvcGVydHlUeXBlID0gQmFzZVNpZGVFZmZlY3RQcm9wZXJ0eVR5cGU7XG5cbmV4cG9ydCB0eXBlIEZpZWxkU2lkZUVmZmVjdFByb3BlcnR5VHlwZSA9IEJhc2VTaWRlRWZmZWN0UHJvcGVydHlUeXBlICYge1xuXHRjb250ZXh0OiBWNENvbnRleHQ7XG59O1xuXG5leHBvcnQgdHlwZSBGaWVsZFNpZGVFZmZlY3REaWN0aW9uYXJ5ID0gUmVjb3JkPHN0cmluZywgRmllbGRTaWRlRWZmZWN0UHJvcGVydHlUeXBlPjtcblxuZXhwb3J0IHR5cGUgTWFzc0VkaXRGaWVsZFNpZGVFZmZlY3REaWN0aW9uYXJ5ID0gUmVjb3JkPHN0cmluZywgTWFzc0VkaXRGaWVsZFNpZGVFZmZlY3RQcm9wZXJ0eVR5cGU+O1xuXG50eXBlIEZhaWxlZFNpZGVFZmZlY3REaWN0aW9uYXJ5ID0gUmVjb3JkPHN0cmluZywgU2lkZUVmZmVjdHNUeXBlW10+O1xuXG5leHBvcnQgdHlwZSBGaWVsZEdyb3VwU2lkZUVmZmVjdFR5cGUgPSB7XG5cdHByb21pc2U6IFByb21pc2U8YW55Pjtcblx0c2lkZUVmZmVjdFByb3BlcnR5OiBGaWVsZFNpZGVFZmZlY3RQcm9wZXJ0eVR5cGU7XG59O1xuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5TaWRlRWZmZWN0c1wiKVxuY2xhc3MgU2lkZUVmZmVjdHNDb250cm9sbGVyRXh0ZW5zaW9uIGV4dGVuZHMgQ29udHJvbGxlckV4dGVuc2lvbiB7XG5cdHByb3RlY3RlZCBiYXNlITogUGFnZUNvbnRyb2xsZXI7XG5cdHByaXZhdGUgX3ZpZXchOiBWaWV3O1xuXHRwcml2YXRlIF9yZWdpc3RlcmVkRmllbGRHcm91cE1hcCE6IFJlY29yZDxzdHJpbmcsIEZpZWxkR3JvdXBTaWRlRWZmZWN0VHlwZT47XG5cdHByaXZhdGUgX2ZpZWxkR3JvdXBJbnZhbGlkaXR5ITogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgYm9vbGVhbj4+O1xuXHRwcml2YXRlIF9zaWRlRWZmZWN0c1NlcnZpY2UhOiBTaWRlRWZmZWN0c1NlcnZpY2U7XG5cdHByaXZhdGUgX3JlZ2lzdGVyZWRGYWlsZWRTaWRlRWZmZWN0cyE6IEZhaWxlZFNpZGVFZmZlY3REaWN0aW9uYXJ5O1xuXG5cdEBtZXRob2RPdmVycmlkZSgpXG5cdG9uSW5pdCgpIHtcblx0XHR0aGlzLl92aWV3ID0gdGhpcy5iYXNlLmdldFZpZXcoKTtcblx0XHR0aGlzLl9zaWRlRWZmZWN0c1NlcnZpY2UgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodGhpcy5fdmlldykuZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlKCk7XG5cdFx0dGhpcy5fcmVnaXN0ZXJlZEZpZWxkR3JvdXBNYXAgPSB7fTtcblx0XHR0aGlzLl9maWVsZEdyb3VwSW52YWxpZGl0eSA9IHt9O1xuXHRcdHRoaXMuX3JlZ2lzdGVyZWRGYWlsZWRTaWRlRWZmZWN0cyA9IHt9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYSBTaWRlRWZmZWN0cyBjb250cm9sLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgYWRkQ29udHJvbFNpZGVFZmZlY3RzXG5cdCAqIEBwYXJhbSBlbnRpdHlUeXBlIE5hbWUgb2YgdGhlIGVudGl0eSB3aGVyZSB0aGUgU2lkZUVmZmVjdHMgY29udHJvbCB3aWxsIGJlIHJlZ2lzdGVyZWRcblx0ICogQHBhcmFtIGNvbnRyb2xTaWRlRWZmZWN0cyBTaWRlRWZmZWN0cyB0byByZWdpc3Rlci4gRW5zdXJlIHRoZSBzb3VyY2VDb250cm9sSWQgbWF0Y2hlcyB0aGUgYXNzb2NpYXRlZCBTQVBVSTUgY29udHJvbCBJRC5cblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRhZGRDb250cm9sU2lkZUVmZmVjdHMoZW50aXR5VHlwZTogc3RyaW5nLCBjb250cm9sU2lkZUVmZmVjdHM6IE9taXQ8Q29udHJvbFNpZGVFZmZlY3RzVHlwZSwgXCJmdWxseVF1YWxpZmllZE5hbWVcIj4pOiB2b2lkIHtcblx0XHR0aGlzLl9zaWRlRWZmZWN0c1NlcnZpY2UuYWRkQ29udHJvbFNpZGVFZmZlY3RzKGVudGl0eVR5cGUsIGNvbnRyb2xTaWRlRWZmZWN0cyk7XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlcyBTaWRlRWZmZWN0cyBjcmVhdGVkIGJ5IGEgY29udHJvbC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIHJlbW92ZUNvbnRyb2xTaWRlRWZmZWN0c1xuXHQgKiBAcGFyYW0gY29udHJvbCBTQVBVSTUgQ29udHJvbFxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdHJlbW92ZUNvbnRyb2xTaWRlRWZmZWN0cyhjb250cm9sOiBDb250cm9sKTogdm9pZCB7XG5cdFx0Y29uc3QgY29udHJvbElkID0gY29udHJvbC5pc0E/LihcInNhcC51aS5iYXNlLk1hbmFnZWRPYmplY3RcIikgJiYgY29udHJvbC5nZXRJZCgpO1xuXG5cdFx0aWYgKGNvbnRyb2xJZCkge1xuXHRcdFx0dGhpcy5fc2lkZUVmZmVjdHNTZXJ2aWNlLnJlbW92ZUNvbnRyb2xTaWRlRWZmZWN0cyhjb250cm9sSWQpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBhcHByb3ByaWF0ZSBjb250ZXh0IG9uIHdoaWNoIFNpZGVFZmZlY3RzIGNhbiBiZSByZXF1ZXN0ZWQuXG5cdCAqIFRoZSBjb3JyZWN0IG9uZSBtdXN0IGhhdmUgdGhlIGJpbmRpbmcgcGFyYW1ldGVyICQkcGF0Y2hXaXRob3V0U2lkZUVmZmVjdHMuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBnZXRDb250ZXh0Rm9yU2lkZUVmZmVjdHNcblx0ICogQHBhcmFtIGJpbmRpbmdDb250ZXh0IEluaXRpYWwgYmluZGluZyBjb250ZXh0XG5cdCAqIEBwYXJhbSBzaWRlRWZmZWN0RW50aXR5VHlwZSBFbnRpdHlUeXBlIG9mIHRoZSBzaWRlRWZmZWN0c1xuXHQgKiBAcmV0dXJucyBTQVBVSTUgQ29udGV4dCBvciB1bmRlZmluZWRcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRnZXRDb250ZXh0Rm9yU2lkZUVmZmVjdHMoYmluZGluZ0NvbnRleHQ6IGFueSwgc2lkZUVmZmVjdEVudGl0eVR5cGU6IHN0cmluZyk6IENvbnRleHQgfCB1bmRlZmluZWQge1xuXHRcdGxldCBjb250ZXh0Rm9yU2lkZUVmZmVjdHMgPSBiaW5kaW5nQ29udGV4dCxcblx0XHRcdGVudGl0eVR5cGUgPSB0aGlzLl9zaWRlRWZmZWN0c1NlcnZpY2UuZ2V0RW50aXR5VHlwZUZyb21Db250ZXh0KGJpbmRpbmdDb250ZXh0KTtcblxuXHRcdGlmIChzaWRlRWZmZWN0RW50aXR5VHlwZSAhPT0gZW50aXR5VHlwZSkge1xuXHRcdFx0Y29udGV4dEZvclNpZGVFZmZlY3RzID0gYmluZGluZ0NvbnRleHQuZ2V0QmluZGluZygpLmdldENvbnRleHQoKTtcblx0XHRcdGlmIChjb250ZXh0Rm9yU2lkZUVmZmVjdHMpIHtcblx0XHRcdFx0ZW50aXR5VHlwZSA9IHRoaXMuX3NpZGVFZmZlY3RzU2VydmljZS5nZXRFbnRpdHlUeXBlRnJvbUNvbnRleHQoY29udGV4dEZvclNpZGVFZmZlY3RzKTtcblx0XHRcdFx0aWYgKHNpZGVFZmZlY3RFbnRpdHlUeXBlICE9PSBlbnRpdHlUeXBlKSB7XG5cdFx0XHRcdFx0Y29udGV4dEZvclNpZGVFZmZlY3RzID0gY29udGV4dEZvclNpZGVFZmZlY3RzLmdldEJpbmRpbmcoKS5nZXRDb250ZXh0KCk7XG5cdFx0XHRcdFx0aWYgKGNvbnRleHRGb3JTaWRlRWZmZWN0cykge1xuXHRcdFx0XHRcdFx0ZW50aXR5VHlwZSA9IHRoaXMuX3NpZGVFZmZlY3RzU2VydmljZS5nZXRFbnRpdHlUeXBlRnJvbUNvbnRleHQoY29udGV4dEZvclNpZGVFZmZlY3RzKTtcblx0XHRcdFx0XHRcdGlmIChzaWRlRWZmZWN0RW50aXR5VHlwZSAhPT0gZW50aXR5VHlwZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBjb250ZXh0Rm9yU2lkZUVmZmVjdHMgfHwgdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIFNpZGVFZmZlY3RzIG1hcCBmb3IgYSBmaWVsZFxuXHQgKiBUaGVzZSBTaWRlRWZmZWN0cyBhcmVcblx0ICogLSBsaXN0ZWQgaW50byBGaWVsZEdyb3VwSWRzIChjb21pbmcgZnJvbSBhbiBPRGF0YSBTZXJ2aWNlKVxuXHQgKiAtIGdlbmVyYXRlZCBieSBhIGNvbnRyb2wgb3IgY29udHJvbHMgYW5kIHRoYXQgY29uZmlndXJlIHRoaXMgZmllbGQgYXMgU291cmNlUHJvcGVydGllcy5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIGdldEZpZWxkU2lkZUVmZmVjdHNNYXBcblx0ICogQHBhcmFtIGZpZWxkIEZpZWxkIGNvbnRyb2xcblx0ICogQHJldHVybnMgU2lkZUVmZmVjdHMgbWFwXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0Z2V0RmllbGRTaWRlRWZmZWN0c01hcChmaWVsZDogQ29udHJvbCk6IEZpZWxkU2lkZUVmZmVjdERpY3Rpb25hcnkge1xuXHRcdGxldCBzaWRlRWZmZWN0c01hcDogRmllbGRTaWRlRWZmZWN0RGljdGlvbmFyeSA9IHt9O1xuXHRcdGNvbnN0IGZpZWxkR3JvdXBJZHMgPSBmaWVsZC5nZXRGaWVsZEdyb3VwSWRzKCksXG5cdFx0XHR2aWV3RW50aXR5U2V0U2V0TmFtZSA9ICh0aGlzLl92aWV3LmdldFZpZXdEYXRhKCkgYXMgQmFzZU1hbmlmZXN0U2V0dGluZ3MpLmVudGl0eVNldCxcblx0XHRcdHZpZXdFbnRpdHlTZXQgPSB0aGlzLl9zaWRlRWZmZWN0c1NlcnZpY2UuZ2V0Q29udmVydGVkTWV0YU1vZGVsKCkuZW50aXR5U2V0cy5maW5kKChlbnRpdHlTZXQpID0+IHtcblx0XHRcdFx0cmV0dXJuIGVudGl0eVNldC5uYW1lID09PSB2aWV3RW50aXR5U2V0U2V0TmFtZTtcblx0XHRcdH0pO1xuXG5cdFx0Ly8gU2lkZUVmZmVjdHMgY29taW5nIGZyb20gYW4gT0RhdGEgU2VydmljZVxuXHRcdHNpZGVFZmZlY3RzTWFwID0gdGhpcy5nZXRTaWRlRWZmZWN0c01hcEZvckZpZWxkR3JvdXBzKGZpZWxkR3JvdXBJZHMsIGZpZWxkKSBhcyBGaWVsZFNpZGVFZmZlY3REaWN0aW9uYXJ5O1xuXG5cdFx0Ly8gU2lkZUVmZmVjdHMgY29taW5nIGZyb20gY29udHJvbChzKVxuXHRcdGlmICh2aWV3RW50aXR5U2V0U2V0TmFtZSAmJiB2aWV3RW50aXR5U2V0KSB7XG5cdFx0XHRjb25zdCB2aWV3RW50aXR5VHlwZSA9IHZpZXdFbnRpdHlTZXQuZW50aXR5VHlwZS5mdWxseVF1YWxpZmllZE5hbWUsXG5cdFx0XHRcdGZpZWxkUGF0aCA9IHRoaXMuZ2V0VGFyZ2V0UHJvcGVydHkoZmllbGQpLFxuXHRcdFx0XHRjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0Rm9yU2lkZUVmZmVjdHMoZmllbGQuZ2V0QmluZGluZ0NvbnRleHQoKSwgdmlld0VudGl0eVR5cGUpIGFzIFY0Q29udGV4dCB8IHVuZGVmaW5lZDtcblxuXHRcdFx0aWYgKGZpZWxkUGF0aCAmJiBjb250ZXh0KSB7XG5cdFx0XHRcdGNvbnN0IGNvbnRyb2xTaWRlRWZmZWN0c0VudGl0eVR5cGUgPSB0aGlzLl9zaWRlRWZmZWN0c1NlcnZpY2UuZ2V0Q29udHJvbEVudGl0eVNpZGVFZmZlY3RzKHZpZXdFbnRpdHlUeXBlKTtcblx0XHRcdFx0T2JqZWN0LmtleXMoY29udHJvbFNpZGVFZmZlY3RzRW50aXR5VHlwZSkuZm9yRWFjaCgoc2lkZUVmZmVjdHNOYW1lKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qgb0NvbnRyb2xTaWRlRWZmZWN0cyA9IGNvbnRyb2xTaWRlRWZmZWN0c0VudGl0eVR5cGVbc2lkZUVmZmVjdHNOYW1lXTtcblx0XHRcdFx0XHRpZiAob0NvbnRyb2xTaWRlRWZmZWN0cy5Tb3VyY2VQcm9wZXJ0aWVzLmluY2x1ZGVzKGZpZWxkUGF0aCkpIHtcblx0XHRcdFx0XHRcdGNvbnN0IG5hbWUgPSBgJHtzaWRlRWZmZWN0c05hbWV9Ojoke3ZpZXdFbnRpdHlUeXBlfWA7XG5cdFx0XHRcdFx0XHRzaWRlRWZmZWN0c01hcFtuYW1lXSA9IHtcblx0XHRcdFx0XHRcdFx0bmFtZTogbmFtZSxcblx0XHRcdFx0XHRcdFx0aW1tZWRpYXRlOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRzaWRlRWZmZWN0czogb0NvbnRyb2xTaWRlRWZmZWN0cyxcblx0XHRcdFx0XHRcdFx0Y29udGV4dDogY29udGV4dFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gc2lkZUVmZmVjdHNNYXA7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgc2lkZUVmZmVjdHMgbWFwIGZvciBmaWVsZEdyb3Vwcy5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIGdldFNpZGVFZmZlY3RzTWFwRm9yRmllbGRHcm91cHNcblx0ICogQHBhcmFtIGZpZWxkR3JvdXBJZHMgRmllbGQgZ3JvdXAgaWRzXG5cdCAqIEBwYXJhbSBmaWVsZCBGaWVsZCBjb250cm9sXG5cdCAqIEByZXR1cm5zIFNpZGVFZmZlY3RzIG1hcFxuXHQgKi9cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0Z2V0U2lkZUVmZmVjdHNNYXBGb3JGaWVsZEdyb3Vwcyhcblx0XHRmaWVsZEdyb3VwSWRzOiBzdHJpbmdbXSxcblx0XHRmaWVsZD86IENvbnRyb2xcblx0KTogTWFzc0VkaXRGaWVsZFNpZGVFZmZlY3REaWN0aW9uYXJ5IHwgRmllbGRTaWRlRWZmZWN0RGljdGlvbmFyeSB7XG5cdFx0Y29uc3QgbVNpZGVFZmZlY3RzTWFwOiBNYXNzRWRpdEZpZWxkU2lkZUVmZmVjdERpY3Rpb25hcnkgfCBGaWVsZFNpZGVFZmZlY3REaWN0aW9uYXJ5ID0ge307XG5cdFx0ZmllbGRHcm91cElkcy5mb3JFYWNoKChmaWVsZEdyb3VwSWQpID0+IHtcblx0XHRcdGNvbnN0IHsgbmFtZSwgaW1tZWRpYXRlLCBzaWRlRWZmZWN0cywgc2lkZUVmZmVjdEVudGl0eVR5cGUgfSA9IHRoaXMuX2dldFNpZGVFZmZlY3RzUHJvcGVydHlGb3JGaWVsZEdyb3VwKGZpZWxkR3JvdXBJZCk7XG5cdFx0XHRjb25zdCBvQ29udGV4dCA9IGZpZWxkXG5cdFx0XHRcdD8gKHRoaXMuZ2V0Q29udGV4dEZvclNpZGVFZmZlY3RzKGZpZWxkLmdldEJpbmRpbmdDb250ZXh0KCksIHNpZGVFZmZlY3RFbnRpdHlUeXBlKSBhcyBWNENvbnRleHQpXG5cdFx0XHRcdDogdW5kZWZpbmVkO1xuXHRcdFx0aWYgKHNpZGVFZmZlY3RzICYmICghZmllbGQgfHwgKGZpZWxkICYmIG9Db250ZXh0KSkpIHtcblx0XHRcdFx0bVNpZGVFZmZlY3RzTWFwW25hbWVdID0ge1xuXHRcdFx0XHRcdG5hbWUsXG5cdFx0XHRcdFx0aW1tZWRpYXRlLFxuXHRcdFx0XHRcdHNpZGVFZmZlY3RzXG5cdFx0XHRcdH07XG5cdFx0XHRcdGlmIChmaWVsZCkge1xuXHRcdFx0XHRcdChtU2lkZUVmZmVjdHNNYXBbbmFtZV0gYXMgRmllbGRTaWRlRWZmZWN0UHJvcGVydHlUeXBlKS5jb250ZXh0ID0gb0NvbnRleHQhO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIG1TaWRlRWZmZWN0c01hcDtcblx0fVxuXG5cdC8qKlxuXHQgKiBDbGVhciByZWNvcmRlZCB2YWxpZGF0aW9uIHN0YXR1cyBmb3IgYWxsIHByb3BlcnRpZXMuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBjbGVhckZpZWxkR3JvdXBzVmFsaWRpdHlcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRjbGVhckZpZWxkR3JvdXBzVmFsaWRpdHkoKTogdm9pZCB7XG5cdFx0dGhpcy5fZmllbGRHcm91cEludmFsaWRpdHkgPSB7fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDbGVhciByZWNvcmRlZCB2YWxpZGF0aW9uIHN0YXR1cyBmb3IgYWxsIHByb3BlcnRpZXMuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBpc0ZpZWxkR3JvdXBWYWxpZFxuXHQgKiBAcGFyYW0gZmllbGRHcm91cElkIEZpZWxkIGdyb3VwIGlkXG5cdCAqIEBwYXJhbSBjb250ZXh0IENvbnRleHRcblx0ICogQHJldHVybnMgU0FQVUk1IENvbnRleHQgb3IgdW5kZWZpbmVkXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0aXNGaWVsZEdyb3VwVmFsaWQoZmllbGRHcm91cElkOiBzdHJpbmcsIGNvbnRleHQ6IFY0Q29udGV4dCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IGlkID0gdGhpcy5fZ2V0RmllbGRHcm91cEluZGV4KGZpZWxkR3JvdXBJZCwgY29udGV4dCk7XG5cdFx0cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX2ZpZWxkR3JvdXBJbnZhbGlkaXR5W2lkXSA/PyB7fSkubGVuZ3RoID09PSAwO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHJlbGF0aXZlIHRhcmdldCBwcm9wZXJ0eSByZWxhdGVkIHRvIHRoZSBGaWVsZC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIGdldFRhcmdldFByb3BlcnR5XG5cdCAqIEBwYXJhbSBmaWVsZCBGaWVsZCBjb250cm9sXG5cdCAqIEByZXR1cm5zIFJlbGF0aXZlIHRhcmdldCBwcm9wZXJ0eVxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdGdldFRhcmdldFByb3BlcnR5KGZpZWxkOiBDb250cm9sKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBmaWVsZFBhdGggPSBmaWVsZC5kYXRhKFwic291cmNlUGF0aFwiKSBhcyBzdHJpbmc7XG5cdFx0Y29uc3QgbWV0YU1vZGVsID0gdGhpcy5fdmlldy5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpIGFzIE9EYXRhTWV0YU1vZGVsO1xuXHRcdGNvbnN0IHZpZXdCaW5kaW5nUGF0aCA9IHRoaXMuX3ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKT8uZ2V0UGF0aCgpO1xuXHRcdGNvbnN0IHZpZXdNZXRhTW9kZWxQYXRoID0gdmlld0JpbmRpbmdQYXRoID8gYCR7bWV0YU1vZGVsLmdldE1ldGFQYXRoKHZpZXdCaW5kaW5nUGF0aCl9L2AgOiBcIlwiO1xuXHRcdHJldHVybiBmaWVsZFBhdGg/LnJlcGxhY2Uodmlld01ldGFNb2RlbFBhdGgsIFwiXCIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1hbmFnZXMgdGhlIHdvcmtmbG93IGZvciBTaWRlRWZmZWN0cyB3aXRoIHJlbGF0ZWQgY2hhbmdlcyB0byBhIGZpZWxkXG5cdCAqIFRoZSBmb2xsb3dpbmcgc2NlbmFyaW9zIGFyZSBtYW5hZ2VkOlxuXHQgKiAgLSBFeGVjdXRlOiB0cmlnZ2VycyBpbW1lZGlhdGUgU2lkZUVmZmVjdHMgcmVxdWVzdHMgaWYgdGhlIHByb21pc2UgZm9yIHRoZSBmaWVsZCBldmVudCBpcyBmdWxmaWxsZWRcblx0ICogIC0gUmVnaXN0ZXI6IGNhY2hlcyBkZWZlcnJlZCBTaWRlRWZmZWN0cyB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgd2hlbiB0aGUgRmllbGRHcm91cCBpcyB1bmZvY3VzZWQuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBoYW5kbGVGaWVsZENoYW5nZVxuXHQgKiBAcGFyYW0gZXZlbnQgU0FQVUk1IGV2ZW50IHRoYXQgY29tZXMgZnJvbSBhIGZpZWxkIGNoYW5nZVxuXHQgKiBAcGFyYW0gZmllbGRWYWxpZGl0eVxuXHQgKiBAcGFyYW0gZmllbGRHcm91cFByZVJlcXVpc2l0ZSBQcm9taXNlIHRvIGJlIGZ1bGZpbGxlZCBiZWZvcmUgZXhlY3V0aW5nIGRlZmVycmVkIFNpZGVFZmZlY3RzXG5cdCAqIEByZXR1cm5zICBQcm9taXNlIG9uIFNpZGVFZmZlY3RzIHJlcXVlc3Qocylcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRhc3luYyBoYW5kbGVGaWVsZENoYW5nZShldmVudDogRXZlbnQsIGZpZWxkVmFsaWRpdHk6IGJvb2xlYW4sIGZpZWxkR3JvdXBQcmVSZXF1aXNpdGU/OiBQcm9taXNlPGFueT4pOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBmaWVsZCA9IGV2ZW50LmdldFNvdXJjZSgpIGFzIENvbnRyb2w7XG5cdFx0dGhpcy5fc2F2ZUZpZWxkUHJvcGVydGllc1N0YXR1cyhmaWVsZCwgZmllbGRWYWxpZGl0eSk7XG5cdFx0aWYgKCFmaWVsZFZhbGlkaXR5KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dHJ5IHtcblx0XHRcdGF3YWl0IChldmVudC5nZXRQYXJhbWV0ZXIoXCJwcm9taXNlXCIpID8/IFByb21pc2UucmVzb2x2ZSgpKTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRMb2cuZGVidWcoXCJQcmVyZXF1aXNpdGVzIG9uIEZpZWxkIGZvciB0aGUgU2lkZUVmZmVjdHMgaGF2ZSBiZWVuIHJlamVjdGVkXCIsIGUgYXMgc3RyaW5nKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuX21hbmFnZVNpZGVFZmZlY3RzRnJvbUZpZWxkKGZpZWxkLCBmaWVsZEdyb3VwUHJlUmVxdWlzaXRlID8/IFByb21pc2UucmVzb2x2ZSgpKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBNYW5hZ2VzIFNpZGVFZmZlY3RzIHdpdGggYSByZWxhdGVkICdmb2N1cyBvdXQnIHRvIGEgZmllbGQgZ3JvdXAuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBoYW5kbGVGaWVsZEdyb3VwQ2hhbmdlXG5cdCAqIEBwYXJhbSBldmVudCBTQVBVSTUgRXZlbnRcblx0ICogQHJldHVybnMgUHJvbWlzZSByZXR1cm5pbmcgdHJ1ZSBpZiB0aGUgU2lkZUVmZmVjdHMgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSBleGVjdXRlZFxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdGhhbmRsZUZpZWxkR3JvdXBDaGFuZ2UoZXZlbnQ6IEV2ZW50KTogUHJvbWlzZTx2b2lkIHwgdm9pZFtdPiB7XG5cdFx0Y29uc3QgZmllbGQgPSBldmVudC5nZXRTb3VyY2UoKSBhcyBDb250cm9sLFxuXHRcdFx0ZmllbGRHcm91cElkczogc3RyaW5nW10gPSBldmVudC5nZXRQYXJhbWV0ZXIoXCJmaWVsZEdyb3VwSWRzXCIpLFxuXHRcdFx0ZmllbGRHcm91cHNTaWRlRWZmZWN0cyA9IGZpZWxkR3JvdXBJZHMucmVkdWNlKChyZXN1bHRzOiBGaWVsZEdyb3VwU2lkZUVmZmVjdFR5cGVbXSwgZmllbGRHcm91cElkKSA9PiB7XG5cdFx0XHRcdHJldHVybiByZXN1bHRzLmNvbmNhdCh0aGlzLmdldFJlZ2lzdGVyZWRTaWRlRWZmZWN0c0ZvckZpZWxkR3JvdXAoZmllbGRHcm91cElkKSk7XG5cdFx0XHR9LCBbXSk7XG5cblx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoXG5cdFx0XHRmaWVsZEdyb3Vwc1NpZGVFZmZlY3RzLm1hcCgoZmllbGRHcm91cFNpZGVFZmZlY3RzKSA9PiB7XG5cdFx0XHRcdHJldHVybiB0aGlzLl9yZXF1ZXN0RmllbGRHcm91cFNpZGVFZmZlY3RzKGZpZWxkR3JvdXBTaWRlRWZmZWN0cyk7XG5cdFx0XHR9KVxuXHRcdCkuY2F0Y2goKGVycm9yKSA9PiB7XG5cdFx0XHRjb25zdCBjb250ZXh0UGF0aCA9IGZpZWxkLmdldEJpbmRpbmdDb250ZXh0KCk/LmdldFBhdGgoKTtcblx0XHRcdExvZy5kZWJ1ZyhgRXJyb3Igd2hpbGUgcHJvY2Vzc2luZyBGaWVsZEdyb3VwIFNpZGVFZmZlY3RzIG9uIGNvbnRleHQgJHtjb250ZXh0UGF0aH1gLCBlcnJvcik7XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogUmVxdWVzdCBTaWRlRWZmZWN0cyBvbiBhIHNwZWNpZmljIGNvbnRleHQuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSByZXF1ZXN0U2lkZUVmZmVjdHNcblx0ICogQHBhcmFtIHNpZGVFZmZlY3RzIFNpZGVFZmZlY3RzIHRvIGJlIGV4ZWN1dGVkXG5cdCAqIEBwYXJhbSBjb250ZXh0IENvbnRleHQgd2hlcmUgU2lkZUVmZmVjdHMgbmVlZCB0byBiZSBleGVjdXRlZFxuXHQgKiBAcGFyYW0gZ3JvdXBJZFxuXHQgKiBAcGFyYW0gZm5HZXRUYXJnZXRzIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB3aGljaCB3aWxsIGdpdmUgdXMgdGhlIHRhcmdldHMgYW5kIGFjdGlvbnMgaWYgaXQgd2FzIGNvbWluZyB0aHJvdWdoIHNvbWUgc3BlY2lmaWMgaGFuZGxpbmcuXG5cdCAqIEByZXR1cm5zIFNpZGVFZmZlY3RzIHJlcXVlc3Qgb24gU0FQVUk1IGNvbnRleHRcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRhc3luYyByZXF1ZXN0U2lkZUVmZmVjdHMoXG5cdFx0c2lkZUVmZmVjdHM6IFNpZGVFZmZlY3RzVHlwZSxcblx0XHRjb250ZXh0OiBWNENvbnRleHQsXG5cdFx0Z3JvdXBJZD86IHN0cmluZyxcblx0XHRmbkdldFRhcmdldHM/OiBGdW5jdGlvblxuXHQpOiBQcm9taXNlPHVua25vd24+IHtcblx0XHRsZXQgdGFyZ2V0czogU2lkZUVmZmVjdHNUYXJnZXRbXSwgdHJpZ2dlckFjdGlvbjtcblx0XHRpZiAoZm5HZXRUYXJnZXRzKSB7XG5cdFx0XHRjb25zdCB0YXJnZXRzQW5kQWN0aW9uRGF0YSA9IGF3YWl0IGZuR2V0VGFyZ2V0cyhzaWRlRWZmZWN0cyk7XG5cdFx0XHR0YXJnZXRzID0gdGFyZ2V0c0FuZEFjdGlvbkRhdGFbXCJhVGFyZ2V0c1wiXTtcblx0XHRcdHRyaWdnZXJBY3Rpb24gPSB0YXJnZXRzQW5kQWN0aW9uRGF0YVtcIlRyaWdnZXJBY3Rpb25cIl07XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRhcmdldHMgPSBbLi4uKHNpZGVFZmZlY3RzLlRhcmdldEVudGl0aWVzID8/IFtdKSwgLi4uKHNpZGVFZmZlY3RzLlRhcmdldFByb3BlcnRpZXMgPz8gW10pXTtcblx0XHRcdHRyaWdnZXJBY3Rpb24gPSAoc2lkZUVmZmVjdHMgYXMgT0RhdGFTaWRlRWZmZWN0c1R5cGUpLlRyaWdnZXJBY3Rpb247XG5cdFx0fVxuXHRcdGlmICh0cmlnZ2VyQWN0aW9uKSB7XG5cdFx0XHR0aGlzLl9zaWRlRWZmZWN0c1NlcnZpY2UuZXhlY3V0ZUFjdGlvbih0cmlnZ2VyQWN0aW9uLCBjb250ZXh0LCBncm91cElkKTtcblx0XHR9XG5cblx0XHRpZiAodGFyZ2V0cy5sZW5ndGgpIHtcblx0XHRcdHJldHVybiB0aGlzLl9zaWRlRWZmZWN0c1NlcnZpY2UucmVxdWVzdFNpZGVFZmZlY3RzKHRhcmdldHMsIGNvbnRleHQsIGdyb3VwSWQpLmNhdGNoKChlcnJvcjogdW5rbm93bikgPT4ge1xuXHRcdFx0XHR0aGlzLnJlZ2lzdGVyRmFpbGVkU2lkZUVmZmVjdHMoc2lkZUVmZmVjdHMsIGNvbnRleHQpO1xuXHRcdFx0XHR0aHJvdyBlcnJvcjtcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIGZhaWxlZCBTaWRlRWZmZWN0cy5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIGdldFJlZ2lzdGVyZWRGYWlsZWRSZXF1ZXN0c1xuXHQgKiBAcmV0dXJucyBSZWdpc3RlcmVkIFNpZGVFZmZlY3RzIHJlcXVlc3RzIHRoYXQgaGF2ZSBmYWlsZWRcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRwdWJsaWMgZ2V0UmVnaXN0ZXJlZEZhaWxlZFJlcXVlc3RzKCk6IEZhaWxlZFNpZGVFZmZlY3REaWN0aW9uYXJ5IHtcblx0XHRyZXR1cm4gdGhpcy5fcmVnaXN0ZXJlZEZhaWxlZFNpZGVFZmZlY3RzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgU2lkZUVmZmVjdHMgdG8gdGhlIHF1ZXVlIG9mIHRoZSBmYWlsZWQgU2lkZUVmZmVjdHNcblx0ICogVGhlIFNpZGVFZmZlY3RzIGFyZSByZXRyaWdnZXJlZCBvbiB0aGUgbmV4dCBjaGFuZ2Ugb24gdGhlIHNhbWUgY29udGV4dC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIHJlZ2lzdGVyRmFpbGVkU2lkZUVmZmVjdHNcblx0ICogQHBhcmFtIHNpZGVFZmZlY3RzIFNpZGVFZmZlY3RzIHRoYXQgbmVlZCB0byBiZSByZXRyaWdnZXJlZFxuXHQgKiBAcGFyYW0gY29udGV4dCBDb250ZXh0IHdoZXJlIFNpZGVFZmZlY3RzIGhhdmUgZmFpbGVkXG5cdCAqL1xuXHRAcHJpdmF0ZUV4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdHJlZ2lzdGVyRmFpbGVkU2lkZUVmZmVjdHMoc2lkZUVmZmVjdHM6IFNpZGVFZmZlY3RzVHlwZSwgY29udGV4dDogQ29udGV4dCk6IHZvaWQge1xuXHRcdGNvbnN0IGNvbnRleHRQYXRoID0gY29udGV4dC5nZXRQYXRoKCk7XG5cdFx0dGhpcy5fcmVnaXN0ZXJlZEZhaWxlZFNpZGVFZmZlY3RzW2NvbnRleHRQYXRoXSA9IHRoaXMuX3JlZ2lzdGVyZWRGYWlsZWRTaWRlRWZmZWN0c1tjb250ZXh0UGF0aF0gPz8gW107XG5cdFx0Y29uc3QgaXNOb3RBbHJlYWR5TGlzdGVkID0gdGhpcy5fcmVnaXN0ZXJlZEZhaWxlZFNpZGVFZmZlY3RzW2NvbnRleHRQYXRoXS5ldmVyeShcblx0XHRcdChtRmFpbGVkU2lkZUVmZmVjdHMpID0+IHNpZGVFZmZlY3RzLmZ1bGx5UXVhbGlmaWVkTmFtZSAhPT0gbUZhaWxlZFNpZGVFZmZlY3RzLmZ1bGx5UXVhbGlmaWVkTmFtZVxuXHRcdCk7XG5cdFx0aWYgKGlzTm90QWxyZWFkeUxpc3RlZCkge1xuXHRcdFx0dGhpcy5fcmVnaXN0ZXJlZEZhaWxlZFNpZGVFZmZlY3RzW2NvbnRleHRQYXRoXS5wdXNoKHNpZGVFZmZlY3RzKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRGVsZXRlcyBTaWRlRWZmZWN0cyB0byB0aGUgcXVldWUgb2YgdGhlIGZhaWxlZCBTaWRlRWZmZWN0cyBmb3IgYSBjb250ZXh0LlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgdW5yZWdpc3RlckZhaWxlZFNpZGVFZmZlY3RzRm9yQUNvbnRleHRcblx0ICogQHBhcmFtIGNvbnRleHRQYXRoIENvbnRleHQgcGF0aCB3aGVyZSBTaWRlRWZmZWN0cyBoYXZlIGZhaWxlZFxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdHVucmVnaXN0ZXJGYWlsZWRTaWRlRWZmZWN0c0ZvckFDb250ZXh0KGNvbnRleHRQYXRoOiBzdHJpbmcpIHtcblx0XHRkZWxldGUgdGhpcy5fcmVnaXN0ZXJlZEZhaWxlZFNpZGVFZmZlY3RzW2NvbnRleHRQYXRoXTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEZWxldGVzIFNpZGVFZmZlY3RzIHRvIHRoZSBxdWV1ZSBvZiB0aGUgZmFpbGVkIFNpZGVFZmZlY3RzLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgdW5yZWdpc3RlckZhaWxlZFNpZGVFZmZlY3RzXG5cdCAqIEBwYXJhbSBzaWRlRWZmZWN0c0Z1bGx5UXVhbGlmaWVkTmFtZSBTaWRlRWZmZWN0cyB0aGF0IG5lZWQgdG8gYmUgcmV0cmlnZ2VyZWRcblx0ICogQHBhcmFtIGNvbnRleHQgQ29udGV4dCB3aGVyZSBTaWRlRWZmZWN0cyBoYXZlIGZhaWxlZFxuXHQgKi9cblx0QHByaXZhdGVFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHR1bnJlZ2lzdGVyRmFpbGVkU2lkZUVmZmVjdHMoc2lkZUVmZmVjdHNGdWxseVF1YWxpZmllZE5hbWU6IHN0cmluZywgY29udGV4dDogQ29udGV4dCk6IHZvaWQge1xuXHRcdGNvbnN0IGNvbnRleHRQYXRoID0gY29udGV4dC5nZXRQYXRoKCk7XG5cdFx0aWYgKHRoaXMuX3JlZ2lzdGVyZWRGYWlsZWRTaWRlRWZmZWN0c1tjb250ZXh0UGF0aF0/Lmxlbmd0aCkge1xuXHRcdFx0dGhpcy5fcmVnaXN0ZXJlZEZhaWxlZFNpZGVFZmZlY3RzW2NvbnRleHRQYXRoXSA9IHRoaXMuX3JlZ2lzdGVyZWRGYWlsZWRTaWRlRWZmZWN0c1tjb250ZXh0UGF0aF0uZmlsdGVyKFxuXHRcdFx0XHQoc2lkZUVmZmVjdHMpID0+IHNpZGVFZmZlY3RzLmZ1bGx5UXVhbGlmaWVkTmFtZSAhPT0gc2lkZUVmZmVjdHNGdWxseVF1YWxpZmllZE5hbWVcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgU2lkZUVmZmVjdHMgdG8gdGhlIHF1ZXVlIG9mIGEgRmllbGRHcm91cFxuXHQgKiBUaGUgU2lkZUVmZmVjdHMgYXJlIHRyaWdnZXJlZCB3aGVuIGV2ZW50IHJlbGF0ZWQgdG8gdGhlIGZpZWxkIGdyb3VwIGNoYW5nZSBpcyBmaXJlZC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIHJlZ2lzdGVyRmllbGRHcm91cFNpZGVFZmZlY3RzXG5cdCAqIEBwYXJhbSBzaWRlRWZmZWN0c1Byb3BlcnRpZXMgU2lkZUVmZmVjdHMgcHJvcGVydGllc1xuXHQgKiBAcGFyYW0gZmllbGRHcm91cFByZVJlcXVpc2l0ZSBQcm9taXNlIHRvIGZ1bGxmaWwgYmVmb3JlIGV4ZWN1dGluZyB0aGUgU2lkZUVmZmVjdHNcblx0ICovXG5cdEBwcml2YXRlRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0cmVnaXN0ZXJGaWVsZEdyb3VwU2lkZUVmZmVjdHMoc2lkZUVmZmVjdHNQcm9wZXJ0aWVzOiBGaWVsZFNpZGVFZmZlY3RQcm9wZXJ0eVR5cGUsIGZpZWxkR3JvdXBQcmVSZXF1aXNpdGU/OiBQcm9taXNlPHVua25vd24+KSB7XG5cdFx0Y29uc3QgaWQgPSB0aGlzLl9nZXRGaWVsZEdyb3VwSW5kZXgoc2lkZUVmZmVjdHNQcm9wZXJ0aWVzLm5hbWUsIHNpZGVFZmZlY3RzUHJvcGVydGllcy5jb250ZXh0KTtcblx0XHRpZiAoIXRoaXMuX3JlZ2lzdGVyZWRGaWVsZEdyb3VwTWFwW2lkXSkge1xuXHRcdFx0dGhpcy5fcmVnaXN0ZXJlZEZpZWxkR3JvdXBNYXBbaWRdID0ge1xuXHRcdFx0XHRwcm9taXNlOiBmaWVsZEdyb3VwUHJlUmVxdWlzaXRlID8/IFByb21pc2UucmVzb2x2ZSgpLFxuXHRcdFx0XHRzaWRlRWZmZWN0UHJvcGVydHk6IHNpZGVFZmZlY3RzUHJvcGVydGllc1xuXHRcdFx0fTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRGVsZXRlcyBTaWRlRWZmZWN0cyB0byB0aGUgcXVldWUgb2YgYSBGaWVsZEdyb3VwLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgdW5yZWdpc3RlckZpZWxkR3JvdXBTaWRlRWZmZWN0c1xuXHQgKiBAcGFyYW0gc2lkZUVmZmVjdHNQcm9wZXJ0aWVzIFNpZGVFZmZlY3RzIHByb3BlcnRpZXNcblx0ICovXG5cdEBwcml2YXRlRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0dW5yZWdpc3RlckZpZWxkR3JvdXBTaWRlRWZmZWN0cyhzaWRlRWZmZWN0c1Byb3BlcnRpZXM6IEZpZWxkU2lkZUVmZmVjdFByb3BlcnR5VHlwZSkge1xuXHRcdGNvbnN0IHsgY29udGV4dCwgbmFtZSB9ID0gc2lkZUVmZmVjdHNQcm9wZXJ0aWVzO1xuXHRcdGNvbnN0IGlkID0gdGhpcy5fZ2V0RmllbGRHcm91cEluZGV4KG5hbWUsIGNvbnRleHQpO1xuXHRcdGRlbGV0ZSB0aGlzLl9yZWdpc3RlcmVkRmllbGRHcm91cE1hcFtpZF07XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgcmVnaXN0ZXJlZCBTaWRlRWZmZWN0cyBpbnRvIHRoZSBxdWV1ZSBmb3IgYSBmaWVsZCBncm91cCBpZC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIGdldFJlZ2lzdGVyZWRTaWRlRWZmZWN0c0ZvckZpZWxkR3JvdXBcblx0ICogQHBhcmFtIGZpZWxkR3JvdXBJZCBGaWVsZCBncm91cCBpZFxuXHQgKiBAcmV0dXJucyBBcnJheSBvZiByZWdpc3RlcmVkIFNpZGVFZmZlY3RzIGFuZCB0aGVpciBwcm9taXNlXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0Z2V0UmVnaXN0ZXJlZFNpZGVFZmZlY3RzRm9yRmllbGRHcm91cChmaWVsZEdyb3VwSWQ6IHN0cmluZyk6IEZpZWxkR3JvdXBTaWRlRWZmZWN0VHlwZVtdIHtcblx0XHRjb25zdCBzaWRlRWZmZWN0cyA9IFtdO1xuXHRcdGZvciAoY29uc3QgcmVnaXN0cnlJbmRleCBvZiBPYmplY3Qua2V5cyh0aGlzLl9yZWdpc3RlcmVkRmllbGRHcm91cE1hcCkpIHtcblx0XHRcdGlmIChyZWdpc3RyeUluZGV4LnN0YXJ0c1dpdGgoYCR7ZmllbGRHcm91cElkfV9gKSkge1xuXHRcdFx0XHRzaWRlRWZmZWN0cy5wdXNoKHRoaXMuX3JlZ2lzdGVyZWRGaWVsZEdyb3VwTWFwW3JlZ2lzdHJ5SW5kZXhdKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHNpZGVFZmZlY3RzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgYSBzdGF0dXMgaW5kZXguXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBfZ2V0RmllbGRHcm91cEluZGV4XG5cdCAqIEBwYXJhbSBmaWVsZEdyb3VwSWQgVGhlIGZpZWxkIGdyb3VwIGlkXG5cdCAqIEBwYXJhbSBjb250ZXh0IFNBUFVJNSBDb250ZXh0XG5cdCAqIEByZXR1cm5zIEluZGV4XG5cdCAqL1xuXHRwcml2YXRlIF9nZXRGaWVsZEdyb3VwSW5kZXgoZmllbGRHcm91cElkOiBzdHJpbmcsIGNvbnRleHQ6IFY0Q29udGV4dCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGAke2ZpZWxkR3JvdXBJZH1fJHtjb250ZXh0LmdldFBhdGgoKX1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgc2lkZUVmZmVjdHMgcHJvcGVydGllcyBmcm9tIGEgZmllbGQgZ3JvdXAgaWRcblx0ICogVGhlIHByb3BlcnRpZXMgYXJlOlxuXHQgKiAgLSBuYW1lXG5cdCAqICAtIHNpZGVFZmZlY3RzIGRlZmluaXRpb25cblx0ICogIC0gc2lkZUVmZmVjdHMgZW50aXR5IHR5cGVcblx0ICogIC0gaW1tZWRpYXRlIHNpZGVFZmZlY3RzLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgX2dldFNpZGVFZmZlY3RzUHJvcGVydHlGb3JGaWVsZEdyb3VwXG5cdCAqIEBwYXJhbSBmaWVsZEdyb3VwSWRcblx0ICogQHJldHVybnMgU2lkZUVmZmVjdHMgcHJvcGVydGllc1xuXHQgKi9cblx0cHJpdmF0ZSBfZ2V0U2lkZUVmZmVjdHNQcm9wZXJ0eUZvckZpZWxkR3JvdXAoZmllbGRHcm91cElkOiBzdHJpbmcpIHtcblx0XHQvKipcblx0XHQgKiBzdHJpbmcgXCIkJEltbWVkaWF0ZVJlcXVlc3RcIiBpcyBhZGRlZCB0byB0aGUgU2lkZUVmZmVjdHMgbmFtZSBkdXJpbmcgdGVtcGxhdGluZyB0byBrbm93XG5cdFx0ICogaWYgdGhpcyBTaWRlRWZmZWN0cyBtdXN0IGJlIGltbWVkaWF0ZWx5IGV4ZWN1dGVkIHJlcXVlc3RlZCAob24gZmllbGQgY2hhbmdlKSBvciBtdXN0XG5cdFx0ICogYmUgZGVmZXJyZWQgKG9uIGZpZWxkIGdyb3VwIGZvY3VzIG91dClcblx0XHQgKlxuXHRcdCAqL1xuXHRcdGNvbnN0IGltbWVkaWF0ZSA9IGZpZWxkR3JvdXBJZC5pbmRleE9mKFNpZGVFZmZlY3RzSGVscGVyLklNTUVESUFURV9SRVFVRVNUKSAhPT0gLTEsXG5cdFx0XHRuYW1lID0gZmllbGRHcm91cElkLnJlcGxhY2UoU2lkZUVmZmVjdHNIZWxwZXIuSU1NRURJQVRFX1JFUVVFU1QsIFwiXCIpLFxuXHRcdFx0c2lkZUVmZmVjdFBhcnRzID0gbmFtZS5zcGxpdChcIiNcIiksXG5cdFx0XHRzaWRlRWZmZWN0RW50aXR5VHlwZSA9IHNpZGVFZmZlY3RQYXJ0c1swXSxcblx0XHRcdHNpZGVFZmZlY3RQYXRoID0gYCR7c2lkZUVmZmVjdEVudGl0eVR5cGV9QGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5TaWRlRWZmZWN0cyR7XG5cdFx0XHRcdHNpZGVFZmZlY3RQYXJ0cy5sZW5ndGggPT09IDIgPyBgIyR7c2lkZUVmZmVjdFBhcnRzWzFdfWAgOiBcIlwiXG5cdFx0XHR9YCxcblx0XHRcdHNpZGVFZmZlY3RzOiBPRGF0YVNpZGVFZmZlY3RzVHlwZSB8IHVuZGVmaW5lZCA9XG5cdFx0XHRcdHRoaXMuX3NpZGVFZmZlY3RzU2VydmljZS5nZXRPRGF0YUVudGl0eVNpZGVFZmZlY3RzKHNpZGVFZmZlY3RFbnRpdHlUeXBlKT8uW3NpZGVFZmZlY3RQYXRoXTtcblx0XHRyZXR1cm4geyBuYW1lLCBpbW1lZGlhdGUsIHNpZGVFZmZlY3RzLCBzaWRlRWZmZWN0RW50aXR5VHlwZSB9O1xuXHR9XG5cblx0LyoqXG5cdCAqIE1hbmFnZXMgdGhlIFNpZGVFZmZlY3RzIGZvciBhIGZpZWxkLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgX21hbmFnZVNpZGVFZmZlY3RzRnJvbUZpZWxkXG5cdCAqIEBwYXJhbSBmaWVsZCBGaWVsZCBjb250cm9sXG5cdCAqIEBwYXJhbSBmaWVsZEdyb3VwUHJlUmVxdWlzaXRlIFByb21pc2UgdG8gZnVsbGZpbCBiZWZvcmUgZXhlY3V0aW5nIGRlZmVycmVkIFNpZGVFZmZlY3RzXG5cdCAqIEByZXR1cm5zIFByb21pc2UgcmVsYXRlZCB0byB0aGUgcmVxdWVzdGVkIGltbWVkaWF0ZSBzaWRlRWZmZWN0cyBhbmQgcmVnaXN0ZXJlZCBkZWZlcnJlZCBTaWRlRWZmZWN0c1xuXHQgKi9cblx0cHJpdmF0ZSBhc3luYyBfbWFuYWdlU2lkZUVmZmVjdHNGcm9tRmllbGQoZmllbGQ6IENvbnRyb2wsIGZpZWxkR3JvdXBQcmVSZXF1aXNpdGU6IFByb21pc2U8dW5rbm93bj4pOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBzaWRlRWZmZWN0c01hcCA9IHRoaXMuZ2V0RmllbGRTaWRlRWZmZWN0c01hcChmaWVsZCk7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGZhaWxlZFNpZGVFZmZlY3RzUHJvbWlzZXM6ICh2b2lkIHwgUHJvbWlzZTx1bmtub3duPilbXSA9IFtdO1xuXHRcdFx0Y29uc3Qgc2lkZUVmZmVjdHNQcm9taXNlcyA9IE9iamVjdC5rZXlzKHNpZGVFZmZlY3RzTWFwKS5tYXAoKHNpZGVFZmZlY3RzTmFtZSkgPT4ge1xuXHRcdFx0XHRjb25zdCBzaWRlRWZmZWN0c1Byb3BlcnRpZXMgPSBzaWRlRWZmZWN0c01hcFtzaWRlRWZmZWN0c05hbWVdO1xuXG5cdFx0XHRcdGlmIChzaWRlRWZmZWN0c1Byb3BlcnRpZXMuaW1tZWRpYXRlID09PSB0cnVlKSB7XG5cdFx0XHRcdFx0Ly8gaWYgdGhpcyBTaWRlRWZmZWN0cyBpcyByZWNvcmRlZCBhcyBmYWlsZWQgU2lkZUVmZmVjdHMsIG5lZWQgdG8gcmVtb3ZlIGl0LlxuXHRcdFx0XHRcdHRoaXMudW5yZWdpc3RlckZhaWxlZFNpZGVFZmZlY3RzKHNpZGVFZmZlY3RzUHJvcGVydGllcy5zaWRlRWZmZWN0cy5mdWxseVF1YWxpZmllZE5hbWUsIHNpZGVFZmZlY3RzUHJvcGVydGllcy5jb250ZXh0KTtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5yZXF1ZXN0U2lkZUVmZmVjdHMoc2lkZUVmZmVjdHNQcm9wZXJ0aWVzLnNpZGVFZmZlY3RzLCBzaWRlRWZmZWN0c1Byb3BlcnRpZXMuY29udGV4dCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRoaXMucmVnaXN0ZXJGaWVsZEdyb3VwU2lkZUVmZmVjdHMoc2lkZUVmZmVjdHNQcm9wZXJ0aWVzLCBmaWVsZEdyb3VwUHJlUmVxdWlzaXRlKTtcblx0XHRcdH0pO1xuXG5cdFx0XHQvL1JlcGxheSBmYWlsZWQgU2lkZUVmZmVjdHMgcmVsYXRlZCB0byB0aGUgdmlldyBvciBGaWVsZFxuXHRcdFx0Zm9yIChjb25zdCBjb250ZXh0IG9mIFtmaWVsZC5nZXRCaW5kaW5nQ29udGV4dCgpLCB0aGlzLl92aWV3LmdldEJpbmRpbmdDb250ZXh0KCldKSB7XG5cdFx0XHRcdGlmIChjb250ZXh0KSB7XG5cdFx0XHRcdFx0Y29uc3QgY29udGV4dFBhdGggPSBjb250ZXh0LmdldFBhdGgoKTtcblx0XHRcdFx0XHRjb25zdCBmYWlsZWRTaWRlRWZmZWN0cyA9IHRoaXMuX3JlZ2lzdGVyZWRGYWlsZWRTaWRlRWZmZWN0c1tjb250ZXh0UGF0aF0gPz8gW107XG5cdFx0XHRcdFx0dGhpcy51bnJlZ2lzdGVyRmFpbGVkU2lkZUVmZmVjdHNGb3JBQ29udGV4dChjb250ZXh0UGF0aCk7XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBmYWlsZWRTaWRlRWZmZWN0IG9mIGZhaWxlZFNpZGVFZmZlY3RzKSB7XG5cdFx0XHRcdFx0XHRmYWlsZWRTaWRlRWZmZWN0c1Byb21pc2VzLnB1c2godGhpcy5yZXF1ZXN0U2lkZUVmZmVjdHMoZmFpbGVkU2lkZUVmZmVjdCwgY29udGV4dCBhcyBWNENvbnRleHQpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0YXdhaXQgUHJvbWlzZS5hbGwoc2lkZUVmZmVjdHNQcm9taXNlcy5jb25jYXQoZmFpbGVkU2lkZUVmZmVjdHNQcm9taXNlcykpO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdExvZy5kZWJ1ZyhgRXJyb3Igd2hpbGUgbWFuYWdpbmcgRmllbGQgU2lkZUVmZmVjdHNgLCBlIGFzIHN0cmluZyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJlcXVlc3RzIHRoZSBTaWRlRWZmZWN0cyBmb3IgYSBmaWVsZEdyb3VwLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgX3JlcXVlc3RGaWVsZEdyb3VwU2lkZUVmZmVjdHNcblx0ICogQHBhcmFtIGZpZWxkR3JvdXBTaWRlRWZmZWN0cyBGaWVsZCBncm91cCBzaWRlRWZmZWN0cyB3aXRoIGl0cyBwcm9taXNlXG5cdCAqIEByZXR1cm5zIFByb21pc2UgcmV0dXJuaW5nIHRydWUgaWYgdGhlIFNpZGVFZmZlY3RzIGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgZXhlY3V0ZWRcblx0ICovXG5cdHByaXZhdGUgYXN5bmMgX3JlcXVlc3RGaWVsZEdyb3VwU2lkZUVmZmVjdHMoZmllbGRHcm91cFNpZGVFZmZlY3RzOiBGaWVsZEdyb3VwU2lkZUVmZmVjdFR5cGUpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHR0aGlzLnVucmVnaXN0ZXJGaWVsZEdyb3VwU2lkZUVmZmVjdHMoZmllbGRHcm91cFNpZGVFZmZlY3RzLnNpZGVFZmZlY3RQcm9wZXJ0eSk7XG5cdFx0dHJ5IHtcblx0XHRcdGF3YWl0IGZpZWxkR3JvdXBTaWRlRWZmZWN0cy5wcm9taXNlO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdExvZy5kZWJ1ZyhgRXJyb3Igd2hpbGUgcHJvY2Vzc2luZyBGaWVsZEdyb3VwIFNpZGVFZmZlY3RzYCwgZSBhcyBzdHJpbmcpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgeyBzaWRlRWZmZWN0cywgY29udGV4dCwgbmFtZSB9ID0gZmllbGRHcm91cFNpZGVFZmZlY3RzLnNpZGVFZmZlY3RQcm9wZXJ0eTtcblx0XHRcdGlmICh0aGlzLmlzRmllbGRHcm91cFZhbGlkKG5hbWUsIGNvbnRleHQpKSB7XG5cdFx0XHRcdGF3YWl0IHRoaXMucmVxdWVzdFNpZGVFZmZlY3RzKHNpZGVFZmZlY3RzLCBjb250ZXh0KTtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRMb2cuZGVidWcoYEVycm9yIHdoaWxlIGV4ZWN1dGluZyBGaWVsZEdyb3VwIFNpZGVFZmZlY3RzYCwgZSBhcyBzdHJpbmcpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBTYXZlcyB0aGUgdmFsaWRhdGlvbiBzdGF0dXMgb2YgcHJvcGVydGllcyByZWxhdGVkIHRvIGEgZmllbGQgY29udHJvbC5cblx0ICpcblx0ICogQHBhcmFtIGZpZWxkIFRoZSBmaWVsZCBjb250cm9sXG5cdCAqIEBwYXJhbSBzdWNjZXNzIFN0YXR1cyBvZiB0aGUgZmllbGQgdmFsaWRhdGlvblxuXHQgKi9cblx0cHJpdmF0ZSBfc2F2ZUZpZWxkUHJvcGVydGllc1N0YXR1cyhmaWVsZDogQ29udHJvbCwgc3VjY2VzczogYm9vbGVhbik6IHZvaWQge1xuXHRcdGNvbnN0IHNpZGVFZmZlY3RzTWFwID0gdGhpcy5nZXRGaWVsZFNpZGVFZmZlY3RzTWFwKGZpZWxkKTtcblx0XHRPYmplY3Qua2V5cyhzaWRlRWZmZWN0c01hcCkuZm9yRWFjaCgoa2V5KSA9PiB7XG5cdFx0XHRjb25zdCB7IG5hbWUsIGltbWVkaWF0ZSwgY29udGV4dCB9ID0gc2lkZUVmZmVjdHNNYXBba2V5XTtcblx0XHRcdGlmICghaW1tZWRpYXRlKSB7XG5cdFx0XHRcdGNvbnN0IGlkID0gdGhpcy5fZ2V0RmllbGRHcm91cEluZGV4KG5hbWUsIGNvbnRleHQpO1xuXHRcdFx0XHRpZiAoc3VjY2Vzcykge1xuXHRcdFx0XHRcdGRlbGV0ZSB0aGlzLl9maWVsZEdyb3VwSW52YWxpZGl0eVtpZF0/LltmaWVsZC5nZXRJZCgpXTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0aGlzLl9maWVsZEdyb3VwSW52YWxpZGl0eVtpZF0gPSB7XG5cdFx0XHRcdFx0XHQuLi50aGlzLl9maWVsZEdyb3VwSW52YWxpZGl0eVtpZF0sXG5cdFx0XHRcdFx0XHQuLi57IFtmaWVsZC5nZXRJZCgpXTogdHJ1ZSB9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNpZGVFZmZlY3RzQ29udHJvbGxlckV4dGVuc2lvbjtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7OztNQTZDTUEsOEJBQThCLFdBRG5DQyxjQUFjLENBQUMsOENBQThDLENBQUMsVUFTN0RDLGNBQWMsRUFBRSxVQWlCaEJDLGVBQWUsRUFBRSxVQUNqQkMsY0FBYyxFQUFFLFVBWWhCRCxlQUFlLEVBQUUsVUFDakJDLGNBQWMsRUFBRSxVQW1CaEJELGVBQWUsRUFBRSxVQUNqQkMsY0FBYyxFQUFFLFVBbUNoQkQsZUFBZSxFQUFFLFdBQ2pCQyxjQUFjLEVBQUUsV0ErQ2hCRCxlQUFlLEVBQUUsV0FDakJDLGNBQWMsRUFBRSxXQStCaEJELGVBQWUsRUFBRSxXQUNqQkMsY0FBYyxFQUFFLFdBY2hCRCxlQUFlLEVBQUUsV0FDakJDLGNBQWMsRUFBRSxXQWNoQkQsZUFBZSxFQUFFLFdBQ2pCQyxjQUFjLEVBQUUsV0FzQmhCRCxlQUFlLEVBQUUsV0FDakJDLGNBQWMsRUFBRSxXQXlCaEJELGVBQWUsRUFBRSxXQUNqQkMsY0FBYyxFQUFFLFdBNkJoQkQsZUFBZSxFQUFFLFdBQ2pCQyxjQUFjLEVBQUUsV0FtQ2hCRCxlQUFlLEVBQUUsV0FDakJDLGNBQWMsRUFBRSxXQWNoQkMsZ0JBQWdCLEVBQUUsV0FDbEJELGNBQWMsRUFBRSxXQW1CaEJELGVBQWUsRUFBRSxXQUNqQkMsY0FBYyxFQUFFLFdBYWhCQyxnQkFBZ0IsRUFBRSxXQUNsQkQsY0FBYyxFQUFFLFdBbUJoQkMsZ0JBQWdCLEVBQUUsV0FDbEJELGNBQWMsRUFBRSxXQWtCaEJDLGdCQUFnQixFQUFFLFdBQ2xCRCxjQUFj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
554
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJTU1FRElBVEVfUkVRVUVTVCIsIlNpZGVFZmZlY3RzQ29udHJvbGxlckV4dGVuc2lvbiIsImRlZmluZVVJNUNsYXNzIiwibWV0aG9kT3ZlcnJpZGUiLCJwdWJsaWNFeHRlbnNpb24iLCJmaW5hbEV4dGVuc2lvbiIsInByaXZhdGVFeHRlbnNpb24iLCJvbkluaXQiLCJfdmlldyIsImJhc2UiLCJnZXRWaWV3IiwiX3NpZGVFZmZlY3RzU2VydmljZSIsIkNvbW1vblV0aWxzIiwiZ2V0QXBwQ29tcG9uZW50IiwiZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlIiwiX3JlZ2lzdGVyZWRGaWVsZEdyb3VwTWFwIiwiX2ZpZWxkR3JvdXBJbnZhbGlkaXR5IiwiX3JlZ2lzdGVyZWRGYWlsZWRTaWRlRWZmZWN0cyIsImFkZENvbnRyb2xTaWRlRWZmZWN0cyIsImVudGl0eVR5cGUiLCJjb250cm9sU2lkZUVmZmVjdHMiLCJyZW1vdmVDb250cm9sU2lkZUVmZmVjdHMiLCJjb250cm9sIiwiY29udHJvbElkIiwiaXNBIiwiZ2V0SWQiLCJnZXRDb250ZXh0Rm9yU2lkZUVmZmVjdHMiLCJiaW5kaW5nQ29udGV4dCIsInNpZGVFZmZlY3RFbnRpdHlUeXBlIiwiY29udGV4dEZvclNpZGVFZmZlY3RzIiwiZ2V0RW50aXR5VHlwZUZyb21Db250ZXh0IiwiZ2V0QmluZGluZyIsImdldENvbnRleHQiLCJ1bmRlZmluZWQiLCJnZXRGaWVsZFNpZGVFZmZlY3RzTWFwIiwiZmllbGQiLCJzaWRlRWZmZWN0c01hcCIsImZpZWxkR3JvdXBJZHMiLCJnZXRGaWVsZEdyb3VwSWRzIiwidmlld0VudGl0eVNldFNldE5hbWUiLCJnZXRWaWV3RGF0YSIsImVudGl0eVNldCIsInZpZXdFbnRpdHlTZXQiLCJnZXRDb252ZXJ0ZWRNZXRhTW9kZWwiLCJlbnRpdHlTZXRzIiwiZmluZCIsIm5hbWUiLCJnZXRTaWRlRWZmZWN0c01hcEZvckZpZWxkR3JvdXBzIiwiZ2V0QmluZGluZ0NvbnRleHQiLCJ2aWV3RW50aXR5VHlwZSIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsImZpZWxkUGF0aCIsImdldFRhcmdldFByb3BlcnR5IiwiY29udGV4dCIsImNvbnRyb2xTaWRlRWZmZWN0c0VudGl0eVR5cGUiLCJnZXRDb250cm9sRW50aXR5U2lkZUVmZmVjdHMiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsInNpZGVFZmZlY3RzTmFtZSIsIm9Db250cm9sU2lkZUVmZmVjdHMiLCJzb3VyY2VQcm9wZXJ0aWVzIiwiaW5jbHVkZXMiLCJpbW1lZGlhdGUiLCJzaWRlRWZmZWN0cyIsImZpZWxkQ29udGV4dCIsIm1TaWRlRWZmZWN0c01hcCIsImZpZWxkR3JvdXBJZCIsIl9nZXRTaWRlRWZmZWN0c1Byb3BlcnR5Rm9yRmllbGRHcm91cCIsIm9Db250ZXh0IiwiY2xlYXJGaWVsZEdyb3Vwc1ZhbGlkaXR5IiwiaXNGaWVsZEdyb3VwVmFsaWQiLCJpZCIsIl9nZXRGaWVsZEdyb3VwSW5kZXgiLCJsZW5ndGgiLCJkYXRhIiwibWV0YU1vZGVsIiwiZ2V0TW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJ2aWV3QmluZGluZ1BhdGgiLCJnZXRQYXRoIiwidmlld01ldGFNb2RlbFBhdGgiLCJnZXRNZXRhUGF0aCIsInJlcGxhY2UiLCJoYW5kbGVGaWVsZENoYW5nZSIsImV2ZW50IiwiZmllbGRWYWxpZGl0eSIsImZpZWxkR3JvdXBQcmVSZXF1aXNpdGUiLCJnZXRTb3VyY2UiLCJfc2F2ZUZpZWxkUHJvcGVydGllc1N0YXR1cyIsImdldFBhcmFtZXRlciIsIlByb21pc2UiLCJyZXNvbHZlIiwiZSIsIkxvZyIsImRlYnVnIiwiX21hbmFnZVNpZGVFZmZlY3RzRnJvbUZpZWxkIiwiaGFuZGxlRmllbGRHcm91cENoYW5nZSIsImZpZWxkR3JvdXBzU2lkZUVmZmVjdHMiLCJyZWR1Y2UiLCJyZXN1bHRzIiwiY29uY2F0IiwiZ2V0UmVnaXN0ZXJlZFNpZGVFZmZlY3RzRm9yRmllbGRHcm91cCIsImFsbCIsIm1hcCIsImZpZWxkR3JvdXBTaWRlRWZmZWN0cyIsIl9yZXF1ZXN0RmllbGRHcm91cFNpZGVFZmZlY3RzIiwiY2F0Y2giLCJlcnJvciIsImNvbnRleHRQYXRoIiwicmVxdWVzdFNpZGVFZmZlY3RzIiwiZ3JvdXBJZCIsImZuR2V0VGFyZ2V0cyIsInRhcmdldHMiLCJ0cmlnZ2VyQWN0aW9uIiwidGFyZ2V0c0FuZEFjdGlvbkRhdGEiLCJ0YXJnZXRFbnRpdGllcyIsInRhcmdldFByb3BlcnRpZXMiLCJleGVjdXRlQWN0aW9uIiwicmVnaXN0ZXJGYWlsZWRTaWRlRWZmZWN0cyIsImdldFJlZ2lzdGVyZWRGYWlsZWRSZXF1ZXN0cyIsImlzTm90QWxyZWFkeUxpc3RlZCIsImV2ZXJ5IiwibUZhaWxlZFNpZGVFZmZlY3RzIiwicHVzaCIsInVucmVnaXN0ZXJGYWlsZWRTaWRlRWZmZWN0c0ZvckFDb250ZXh0IiwidW5yZWdpc3RlckZhaWxlZFNpZGVFZmZlY3RzIiwic2lkZUVmZmVjdHNGdWxseVF1YWxpZmllZE5hbWUiLCJmaWx0ZXIiLCJyZWdpc3RlckZpZWxkR3JvdXBTaWRlRWZmZWN0cyIsInNpZGVFZmZlY3RzUHJvcGVydGllcyIsInByb21pc2UiLCJzaWRlRWZmZWN0UHJvcGVydHkiLCJ1bnJlZ2lzdGVyRmllbGRHcm91cFNpZGVFZmZlY3RzIiwicmVnaXN0cnlJbmRleCIsInN0YXJ0c1dpdGgiLCJpbmRleE9mIiwic2lkZUVmZmVjdFBhcnRzIiwic3BsaXQiLCJzaWRlRWZmZWN0UGF0aCIsImdldE9EYXRhRW50aXR5U2lkZUVmZmVjdHMiLCJmYWlsZWRTaWRlRWZmZWN0c1Byb21pc2VzIiwic2lkZUVmZmVjdHNQcm9taXNlcyIsImZhaWxlZFNpZGVFZmZlY3RzIiwiZmFpbGVkU2lkZUVmZmVjdCIsInN1Y2Nlc3MiLCJrZXkiLCJDb250cm9sbGVyRXh0ZW5zaW9uIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJTaWRlRWZmZWN0cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIHtcblx0Q29udHJvbFNpZGVFZmZlY3RzVHlwZSxcblx0T0RhdGFTaWRlRWZmZWN0c1R5cGUsXG5cdFNpZGVFZmZlY3RzU2VydmljZSxcblx0U2lkZUVmZmVjdHNUYXJnZXQsXG5cdFNpZGVFZmZlY3RzVHlwZVxufSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvU2lkZUVmZmVjdHNTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHR5cGUgRXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgQ29udHJvbGxlckV4dGVuc2lvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL0NvbnRyb2xsZXJFeHRlbnNpb25cIjtcbmltcG9ydCB0eXBlIFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9WaWV3XCI7XG5pbXBvcnQgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcIi4uL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgeyBCYXNlTWFuaWZlc3RTZXR0aW5ncyB9IGZyb20gXCIuLi9jb252ZXJ0ZXJzL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBmaW5hbEV4dGVuc2lvbiwgbWV0aG9kT3ZlcnJpZGUsIHByaXZhdGVFeHRlbnNpb24sIHB1YmxpY0V4dGVuc2lvbiB9IGZyb20gXCIuLi9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IFBhZ2VDb250cm9sbGVyIGZyb20gXCIuLi9QYWdlQ29udHJvbGxlclwiO1xuXG50eXBlIEJhc2VTaWRlRWZmZWN0UHJvcGVydHlUeXBlID0ge1xuXHRuYW1lOiBzdHJpbmc7XG5cdGltbWVkaWF0ZT86IGJvb2xlYW47XG5cdHNpZGVFZmZlY3RzOiBTaWRlRWZmZWN0c1R5cGU7XG59O1xuXG5leHBvcnQgdHlwZSBNYXNzRWRpdEZpZWxkU2lkZUVmZmVjdFByb3BlcnR5VHlwZSA9IEJhc2VTaWRlRWZmZWN0UHJvcGVydHlUeXBlO1xuXG5leHBvcnQgdHlwZSBGaWVsZFNpZGVFZmZlY3RQcm9wZXJ0eVR5cGUgPSBCYXNlU2lkZUVmZmVjdFByb3BlcnR5VHlwZSAmIHtcblx0Y29udGV4dDogQ29udGV4dDtcbn07XG5cbmV4cG9ydCB0eXBlIEZpZWxkU2lkZUVmZmVjdERpY3Rpb25hcnkgPSBSZWNvcmQ8c3RyaW5nLCBGaWVsZFNpZGVFZmZlY3RQcm9wZXJ0eVR5cGU+O1xuXG5leHBvcnQgdHlwZSBNYXNzRWRpdEZpZWxkU2lkZUVmZmVjdERpY3Rpb25hcnkgPSBSZWNvcmQ8c3RyaW5nLCBNYXNzRWRpdEZpZWxkU2lkZUVmZmVjdFByb3BlcnR5VHlwZT47XG5cbnR5cGUgRmFpbGVkU2lkZUVmZmVjdERpY3Rpb25hcnkgPSBSZWNvcmQ8c3RyaW5nLCBTaWRlRWZmZWN0c1R5cGVbXT47XG5cbmV4cG9ydCB0eXBlIEZpZWxkR3JvdXBTaWRlRWZmZWN0VHlwZSA9IHtcblx0cHJvbWlzZTogUHJvbWlzZTxhbnk+O1xuXHRzaWRlRWZmZWN0UHJvcGVydHk6IEZpZWxkU2lkZUVmZmVjdFByb3BlcnR5VHlwZTtcbn07XG5cbmNvbnN0IElNTUVESUFURV9SRVFVRVNUID0gXCIkJEltbWVkaWF0ZVJlcXVlc3RcIjtcbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLlNpZGVFZmZlY3RzXCIpXG5jbGFzcyBTaWRlRWZmZWN0c0NvbnRyb2xsZXJFeHRlbnNpb24gZXh0ZW5kcyBDb250cm9sbGVyRXh0ZW5zaW9uIHtcblx0cHJvdGVjdGVkIGJhc2UhOiBQYWdlQ29udHJvbGxlcjtcblxuXHRwcml2YXRlIF92aWV3ITogVmlldztcblxuXHRwcml2YXRlIF9yZWdpc3RlcmVkRmllbGRHcm91cE1hcCE6IFJlY29yZDxzdHJpbmcsIEZpZWxkR3JvdXBTaWRlRWZmZWN0VHlwZT47XG5cblx0cHJpdmF0ZSBfZmllbGRHcm91cEludmFsaWRpdHkhOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj47XG5cblx0cHJpdmF0ZSBfc2lkZUVmZmVjdHNTZXJ2aWNlITogU2lkZUVmZmVjdHNTZXJ2aWNlO1xuXG5cdHByaXZhdGUgX3JlZ2lzdGVyZWRGYWlsZWRTaWRlRWZmZWN0cyE6IEZhaWxlZFNpZGVFZmZlY3REaWN0aW9uYXJ5O1xuXG5cdEBtZXRob2RPdmVycmlkZSgpXG5cdG9uSW5pdCgpIHtcblx0XHR0aGlzLl92aWV3ID0gdGhpcy5iYXNlLmdldFZpZXcoKTtcblx0XHR0aGlzLl9zaWRlRWZmZWN0c1NlcnZpY2UgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodGhpcy5fdmlldykuZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlKCk7XG5cdFx0dGhpcy5fcmVnaXN0ZXJlZEZpZWxkR3JvdXBNYXAgPSB7fTtcblx0XHR0aGlzLl9maWVsZEdyb3VwSW52YWxpZGl0eSA9IHt9O1xuXHRcdHRoaXMuX3JlZ2lzdGVyZWRGYWlsZWRTaWRlRWZmZWN0cyA9IHt9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYSBTaWRlRWZmZWN0cyBjb250cm9sLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgYWRkQ29udHJvbFNpZGVFZmZlY3RzXG5cdCAqIEBwYXJhbSBlbnRpdHlUeXBlIE5hbWUgb2YgdGhlIGVudGl0eSB3aGVyZSB0aGUgU2lkZUVmZmVjdHMgY29udHJvbCB3aWxsIGJlIHJlZ2lzdGVyZWRcblx0ICogQHBhcmFtIGNvbnRyb2xTaWRlRWZmZWN0cyBTaWRlRWZmZWN0cyB0byByZWdpc3Rlci4gRW5zdXJlIHRoZSBzb3VyY2VDb250cm9sSWQgbWF0Y2hlcyB0aGUgYXNzb2NpYXRlZCBTQVBVSTUgY29udHJvbCBJRC5cblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRhZGRDb250cm9sU2lkZUVmZmVjdHMoZW50aXR5VHlwZTogc3RyaW5nLCBjb250cm9sU2lkZUVmZmVjdHM6IE9taXQ8Q29udHJvbFNpZGVFZmZlY3RzVHlwZSwgXCJmdWxseVF1YWxpZmllZE5hbWVcIj4pOiB2b2lkIHtcblx0XHR0aGlzLl9zaWRlRWZmZWN0c1NlcnZpY2UuYWRkQ29udHJvbFNpZGVFZmZlY3RzKGVudGl0eVR5cGUsIGNvbnRyb2xTaWRlRWZmZWN0cyk7XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlcyBTaWRlRWZmZWN0cyBjcmVhdGVkIGJ5IGEgY29udHJvbC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIHJlbW92ZUNvbnRyb2xTaWRlRWZmZWN0c1xuXHQgKiBAcGFyYW0gY29udHJvbCBTQVBVSTUgQ29udHJvbFxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdHJlbW92ZUNvbnRyb2xTaWRlRWZmZWN0cyhjb250cm9sOiBDb250cm9sKTogdm9pZCB7XG5cdFx0Y29uc3QgY29udHJvbElkID0gY29udHJvbC5pc0E/LihcInNhcC51aS5iYXNlLk1hbmFnZWRPYmplY3RcIikgJiYgY29udHJvbC5nZXRJZCgpO1xuXG5cdFx0aWYgKGNvbnRyb2xJZCkge1xuXHRcdFx0dGhpcy5fc2lkZUVmZmVjdHNTZXJ2aWNlLnJlbW92ZUNvbnRyb2xTaWRlRWZmZWN0cyhjb250cm9sSWQpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBhcHByb3ByaWF0ZSBjb250ZXh0IG9uIHdoaWNoIFNpZGVFZmZlY3RzIGNhbiBiZSByZXF1ZXN0ZWQuXG5cdCAqIFRoZSBjb3JyZWN0IG9uZSBtdXN0IGhhdmUgdGhlIGJpbmRpbmcgcGFyYW1ldGVyICQkcGF0Y2hXaXRob3V0U2lkZUVmZmVjdHMuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBnZXRDb250ZXh0Rm9yU2lkZUVmZmVjdHNcblx0ICogQHBhcmFtIGJpbmRpbmdDb250ZXh0IEluaXRpYWwgYmluZGluZyBjb250ZXh0XG5cdCAqIEBwYXJhbSBzaWRlRWZmZWN0RW50aXR5VHlwZSBFbnRpdHlUeXBlIG9mIHRoZSBzaWRlRWZmZWN0c1xuXHQgKiBAcmV0dXJucyBTQVBVSTUgQ29udGV4dCBvciB1bmRlZmluZWRcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRnZXRDb250ZXh0Rm9yU2lkZUVmZmVjdHMoYmluZGluZ0NvbnRleHQ6IGFueSwgc2lkZUVmZmVjdEVudGl0eVR5cGU6IHN0cmluZyk6IENvbnRleHQgfCB1bmRlZmluZWQge1xuXHRcdGxldCBjb250ZXh0Rm9yU2lkZUVmZmVjdHMgPSBiaW5kaW5nQ29udGV4dCxcblx0XHRcdGVudGl0eVR5cGUgPSB0aGlzLl9zaWRlRWZmZWN0c1NlcnZpY2UuZ2V0RW50aXR5VHlwZUZyb21Db250ZXh0KGJpbmRpbmdDb250ZXh0KTtcblxuXHRcdGlmIChzaWRlRWZmZWN0RW50aXR5VHlwZSAhPT0gZW50aXR5VHlwZSkge1xuXHRcdFx0Y29udGV4dEZvclNpZGVFZmZlY3RzID0gYmluZGluZ0NvbnRleHQuZ2V0QmluZGluZygpLmdldENvbnRleHQoKTtcblx0XHRcdGlmIChjb250ZXh0Rm9yU2lkZUVmZmVjdHMpIHtcblx0XHRcdFx0ZW50aXR5VHlwZSA9IHRoaXMuX3NpZGVFZmZlY3RzU2VydmljZS5nZXRFbnRpdHlUeXBlRnJvbUNvbnRleHQoY29udGV4dEZvclNpZGVFZmZlY3RzKTtcblx0XHRcdFx0aWYgKHNpZGVFZmZlY3RFbnRpdHlUeXBlICE9PSBlbnRpdHlUeXBlKSB7XG5cdFx0XHRcdFx0Y29udGV4dEZvclNpZGVFZmZlY3RzID0gY29udGV4dEZvclNpZGVFZmZlY3RzLmdldEJpbmRpbmcoKS5nZXRDb250ZXh0KCk7XG5cdFx0XHRcdFx0aWYgKGNvbnRleHRGb3JTaWRlRWZmZWN0cykge1xuXHRcdFx0XHRcdFx0ZW50aXR5VHlwZSA9IHRoaXMuX3NpZGVFZmZlY3RzU2VydmljZS5nZXRFbnRpdHlUeXBlRnJvbUNvbnRleHQoY29udGV4dEZvclNpZGVFZmZlY3RzKTtcblx0XHRcdFx0XHRcdGlmIChzaWRlRWZmZWN0RW50aXR5VHlwZSAhPT0gZW50aXR5VHlwZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBjb250ZXh0Rm9yU2lkZUVmZmVjdHMgfHwgdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIFNpZGVFZmZlY3RzIG1hcCBmb3IgYSBmaWVsZFxuXHQgKiBUaGVzZSBTaWRlRWZmZWN0cyBhcmVcblx0ICogLSBsaXN0ZWQgaW50byBGaWVsZEdyb3VwSWRzIChjb21pbmcgZnJvbSBhbiBPRGF0YSBTZXJ2aWNlKVxuXHQgKiAtIGdlbmVyYXRlZCBieSBhIGNvbnRyb2wgb3IgY29udHJvbHMgYW5kIHRoYXQgY29uZmlndXJlIHRoaXMgZmllbGQgYXMgU291cmNlUHJvcGVydGllcy5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIGdldEZpZWxkU2lkZUVmZmVjdHNNYXBcblx0ICogQHBhcmFtIGZpZWxkIEZpZWxkIGNvbnRyb2xcblx0ICogQHJldHVybnMgU2lkZUVmZmVjdHMgbWFwXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0Z2V0RmllbGRTaWRlRWZmZWN0c01hcChmaWVsZDogQ29udHJvbCk6IEZpZWxkU2lkZUVmZmVjdERpY3Rpb25hcnkge1xuXHRcdGxldCBzaWRlRWZmZWN0c01hcDogRmllbGRTaWRlRWZmZWN0RGljdGlvbmFyeSA9IHt9O1xuXHRcdGNvbnN0IGZpZWxkR3JvdXBJZHMgPSBmaWVsZC5nZXRGaWVsZEdyb3VwSWRzKCksXG5cdFx0XHR2aWV3RW50aXR5U2V0U2V0TmFtZSA9ICh0aGlzLl92aWV3LmdldFZpZXdEYXRhKCkgYXMgQmFzZU1hbmlmZXN0U2V0dGluZ3MpLmVudGl0eVNldCxcblx0XHRcdHZpZXdFbnRpdHlTZXQgPSB0aGlzLl9zaWRlRWZmZWN0c1NlcnZpY2UuZ2V0Q29udmVydGVkTWV0YU1vZGVsKCkuZW50aXR5U2V0cy5maW5kKChlbnRpdHlTZXQpID0+IHtcblx0XHRcdFx0cmV0dXJuIGVudGl0eVNldC5uYW1lID09PSB2aWV3RW50aXR5U2V0U2V0TmFtZTtcblx0XHRcdH0pO1xuXG5cdFx0Ly8gU2lkZUVmZmVjdHMgY29taW5nIGZyb20gYW4gT0RhdGEgU2VydmljZVxuXHRcdHNpZGVFZmZlY3RzTWFwID0gdGhpcy5nZXRTaWRlRWZmZWN0c01hcEZvckZpZWxkR3JvdXBzKFxuXHRcdFx0ZmllbGRHcm91cElkcyxcblx0XHRcdGZpZWxkLmdldEJpbmRpbmdDb250ZXh0KCkgYXMgQ29udGV4dCB8IG51bGwgfCB1bmRlZmluZWRcblx0XHQpIGFzIEZpZWxkU2lkZUVmZmVjdERpY3Rpb25hcnk7XG5cblx0XHQvLyBTaWRlRWZmZWN0cyBjb21pbmcgZnJvbSBjb250cm9sKHMpXG5cdFx0aWYgKHZpZXdFbnRpdHlTZXRTZXROYW1lICYmIHZpZXdFbnRpdHlTZXQpIHtcblx0XHRcdGNvbnN0IHZpZXdFbnRpdHlUeXBlID0gdmlld0VudGl0eVNldC5lbnRpdHlUeXBlLmZ1bGx5UXVhbGlmaWVkTmFtZSxcblx0XHRcdFx0ZmllbGRQYXRoID0gdGhpcy5nZXRUYXJnZXRQcm9wZXJ0eShmaWVsZCksXG5cdFx0XHRcdGNvbnRleHQgPSB0aGlzLmdldENvbnRleHRGb3JTaWRlRWZmZWN0cyhmaWVsZC5nZXRCaW5kaW5nQ29udGV4dCgpLCB2aWV3RW50aXR5VHlwZSk7XG5cblx0XHRcdGlmIChmaWVsZFBhdGggJiYgY29udGV4dCkge1xuXHRcdFx0XHRjb25zdCBjb250cm9sU2lkZUVmZmVjdHNFbnRpdHlUeXBlID0gdGhpcy5fc2lkZUVmZmVjdHNTZXJ2aWNlLmdldENvbnRyb2xFbnRpdHlTaWRlRWZmZWN0cyh2aWV3RW50aXR5VHlwZSk7XG5cdFx0XHRcdE9iamVjdC5rZXlzKGNvbnRyb2xTaWRlRWZmZWN0c0VudGl0eVR5cGUpLmZvckVhY2goKHNpZGVFZmZlY3RzTmFtZSkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IG9Db250cm9sU2lkZUVmZmVjdHMgPSBjb250cm9sU2lkZUVmZmVjdHNFbnRpdHlUeXBlW3NpZGVFZmZlY3RzTmFtZV07XG5cdFx0XHRcdFx0aWYgKG9Db250cm9sU2lkZUVmZmVjdHMuc291cmNlUHJvcGVydGllcy5pbmNsdWRlcyhmaWVsZFBhdGgpKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBuYW1lID0gYCR7c2lkZUVmZmVjdHNOYW1lfTo6JHt2aWV3RW50aXR5VHlwZX1gO1xuXHRcdFx0XHRcdFx0c2lkZUVmZmVjdHNNYXBbbmFtZV0gPSB7XG5cdFx0XHRcdFx0XHRcdG5hbWU6IG5hbWUsXG5cdFx0XHRcdFx0XHRcdGltbWVkaWF0ZTogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0c2lkZUVmZmVjdHM6IG9Db250cm9sU2lkZUVmZmVjdHMsXG5cdFx0XHRcdFx0XHRcdGNvbnRleHQ6IGNvbnRleHRcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHNpZGVFZmZlY3RzTWFwO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHNpZGVFZmZlY3RzIG1hcCBmb3IgZmllbGRHcm91cHMuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBnZXRTaWRlRWZmZWN0c01hcEZvckZpZWxkR3JvdXBzXG5cdCAqIEBwYXJhbSBmaWVsZEdyb3VwSWRzIEZpZWxkIGdyb3VwIGlkc1xuXHQgKiBAcGFyYW0gZmllbGRDb250ZXh0IEZpZWxkIGJpbmRpbmcgY29udGV4dFxuXHQgKiBAcmV0dXJucyBTaWRlRWZmZWN0cyBtYXBcblx0ICovXG5cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdGdldFNpZGVFZmZlY3RzTWFwRm9yRmllbGRHcm91cHMoXG5cdFx0ZmllbGRHcm91cElkczogc3RyaW5nW10sXG5cdFx0ZmllbGRDb250ZXh0PzogQ29udGV4dCB8IG51bGxcblx0KTogTWFzc0VkaXRGaWVsZFNpZGVFZmZlY3REaWN0aW9uYXJ5IHwgRmllbGRTaWRlRWZmZWN0RGljdGlvbmFyeSB7XG5cdFx0Y29uc3QgbVNpZGVFZmZlY3RzTWFwOiBNYXNzRWRpdEZpZWxkU2lkZUVmZmVjdERpY3Rpb25hcnkgfCBGaWVsZFNpZGVFZmZlY3REaWN0aW9uYXJ5ID0ge307XG5cdFx0ZmllbGRHcm91cElkcy5mb3JFYWNoKChmaWVsZEdyb3VwSWQpID0+IHtcblx0XHRcdGNvbnN0IHsgbmFtZSwgaW1tZWRpYXRlLCBzaWRlRWZmZWN0cywgc2lkZUVmZmVjdEVudGl0eVR5cGUgfSA9IHRoaXMuX2dldFNpZGVFZmZlY3RzUHJvcGVydHlGb3JGaWVsZEdyb3VwKGZpZWxkR3JvdXBJZCk7XG5cdFx0XHRjb25zdCBvQ29udGV4dCA9IGZpZWxkQ29udGV4dCA/ICh0aGlzLmdldENvbnRleHRGb3JTaWRlRWZmZWN0cyhmaWVsZENvbnRleHQsIHNpZGVFZmZlY3RFbnRpdHlUeXBlKSBhcyBDb250ZXh0KSA6IHVuZGVmaW5lZDtcblx0XHRcdGlmIChzaWRlRWZmZWN0cyAmJiAoIWZpZWxkQ29udGV4dCB8fCAoZmllbGRDb250ZXh0ICYmIG9Db250ZXh0KSkpIHtcblx0XHRcdFx0bVNpZGVFZmZlY3RzTWFwW25hbWVdID0ge1xuXHRcdFx0XHRcdG5hbWUsXG5cdFx0XHRcdFx0aW1tZWRpYXRlLFxuXHRcdFx0XHRcdHNpZGVFZmZlY3RzXG5cdFx0XHRcdH07XG5cdFx0XHRcdGlmIChmaWVsZENvbnRleHQpIHtcblx0XHRcdFx0XHQobVNpZGVFZmZlY3RzTWFwW25hbWVdIGFzIEZpZWxkU2lkZUVmZmVjdFByb3BlcnR5VHlwZSkuY29udGV4dCA9IG9Db250ZXh0ITtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHJldHVybiBtU2lkZUVmZmVjdHNNYXA7XG5cdH1cblxuXHQvKipcblx0ICogQ2xlYXIgcmVjb3JkZWQgdmFsaWRhdGlvbiBzdGF0dXMgZm9yIGFsbCBwcm9wZXJ0aWVzLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgY2xlYXJGaWVsZEdyb3Vwc1ZhbGlkaXR5XG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0Y2xlYXJGaWVsZEdyb3Vwc1ZhbGlkaXR5KCk6IHZvaWQge1xuXHRcdHRoaXMuX2ZpZWxkR3JvdXBJbnZhbGlkaXR5ID0ge307XG5cdH1cblxuXHQvKipcblx0ICogQ2xlYXIgcmVjb3JkZWQgdmFsaWRhdGlvbiBzdGF0dXMgZm9yIGFsbCBwcm9wZXJ0aWVzLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgaXNGaWVsZEdyb3VwVmFsaWRcblx0ICogQHBhcmFtIGZpZWxkR3JvdXBJZCBGaWVsZCBncm91cCBpZFxuXHQgKiBAcGFyYW0gY29udGV4dCBDb250ZXh0XG5cdCAqIEByZXR1cm5zIFNBUFVJNSBDb250ZXh0IG9yIHVuZGVmaW5lZFxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdGlzRmllbGRHcm91cFZhbGlkKGZpZWxkR3JvdXBJZDogc3RyaW5nLCBjb250ZXh0OiBDb250ZXh0KTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgaWQgPSB0aGlzLl9nZXRGaWVsZEdyb3VwSW5kZXgoZmllbGRHcm91cElkLCBjb250ZXh0KTtcblx0XHRyZXR1cm4gT2JqZWN0LmtleXModGhpcy5fZmllbGRHcm91cEludmFsaWRpdHlbaWRdID8/IHt9KS5sZW5ndGggPT09IDA7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgcmVsYXRpdmUgdGFyZ2V0IHByb3BlcnR5IHJlbGF0ZWQgdG8gdGhlIEZpZWxkLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgZ2V0VGFyZ2V0UHJvcGVydHlcblx0ICogQHBhcmFtIGZpZWxkIEZpZWxkIGNvbnRyb2xcblx0ICogQHJldHVybnMgUmVsYXRpdmUgdGFyZ2V0IHByb3BlcnR5XG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0Z2V0VGFyZ2V0UHJvcGVydHkoZmllbGQ6IENvbnRyb2wpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IGZpZWxkUGF0aCA9IGZpZWxkLmRhdGEoXCJzb3VyY2VQYXRoXCIpIGFzIHN0cmluZztcblx0XHRjb25zdCBtZXRhTW9kZWwgPSB0aGlzLl92aWV3LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCkgYXMgT0RhdGFNZXRhTW9kZWw7XG5cdFx0Y29uc3Qgdmlld0JpbmRpbmdQYXRoID0gdGhpcy5fdmlldy5nZXRCaW5kaW5nQ29udGV4dCgpPy5nZXRQYXRoKCk7XG5cdFx0Y29uc3Qgdmlld01ldGFNb2RlbFBhdGggPSB2aWV3QmluZGluZ1BhdGggPyBgJHttZXRhTW9kZWwuZ2V0TWV0YVBhdGgodmlld0JpbmRpbmdQYXRoKX0vYCA6IFwiXCI7XG5cdFx0cmV0dXJuIGZpZWxkUGF0aD8ucmVwbGFjZSh2aWV3TWV0YU1vZGVsUGF0aCwgXCJcIik7XG5cdH1cblxuXHQvKipcblx0ICogTWFuYWdlcyB0aGUgd29ya2Zsb3cgZm9yIFNpZGVFZmZlY3RzIHdpdGggcmVsYXRlZCBjaGFuZ2VzIHRvIGEgZmllbGRcblx0ICogVGhlIGZvbGxvd2luZyBzY2VuYXJpb3MgYXJlIG1hbmFnZWQ6XG5cdCAqICAtIEV4ZWN1dGU6IHRyaWdnZXJzIGltbWVkaWF0ZSBTaWRlRWZmZWN0cyByZXF1ZXN0cyBpZiB0aGUgcHJvbWlzZSBmb3IgdGhlIGZpZWxkIGV2ZW50IGlzIGZ1bGZpbGxlZFxuXHQgKiAgLSBSZWdpc3RlcjogY2FjaGVzIGRlZmVycmVkIFNpZGVFZmZlY3RzIHRoYXQgd2lsbCBiZSBleGVjdXRlZCB3aGVuIHRoZSBGaWVsZEdyb3VwIGlzIHVuZm9jdXNlZC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIGhhbmRsZUZpZWxkQ2hhbmdlXG5cdCAqIEBwYXJhbSBldmVudCBTQVBVSTUgZXZlbnQgdGhhdCBjb21lcyBmcm9tIGEgZmllbGQgY2hhbmdlXG5cdCAqIEBwYXJhbSBmaWVsZFZhbGlkaXR5XG5cdCAqIEBwYXJhbSBmaWVsZEdyb3VwUHJlUmVxdWlzaXRlIFByb21pc2UgdG8gYmUgZnVsZmlsbGVkIGJlZm9yZSBleGVjdXRpbmcgZGVmZXJyZWQgU2lkZUVmZmVjdHNcblx0ICogQHJldHVybnMgIFByb21pc2Ugb24gU2lkZUVmZmVjdHMgcmVxdWVzdChzKVxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdGFzeW5jIGhhbmRsZUZpZWxkQ2hhbmdlKGV2ZW50OiBFdmVudCwgZmllbGRWYWxpZGl0eTogYm9vbGVhbiwgZmllbGRHcm91cFByZVJlcXVpc2l0ZT86IFByb21pc2U8YW55Pik6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IGZpZWxkID0gZXZlbnQuZ2V0U291cmNlKCkgYXMgQ29udHJvbDtcblx0XHR0aGlzLl9zYXZlRmllbGRQcm9wZXJ0aWVzU3RhdHVzKGZpZWxkLCBmaWVsZFZhbGlkaXR5KTtcblx0XHRpZiAoIWZpZWxkVmFsaWRpdHkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0cnkge1xuXHRcdFx0YXdhaXQgKGV2ZW50LmdldFBhcmFtZXRlcihcInByb21pc2VcIikgPz8gUHJvbWlzZS5yZXNvbHZlKCkpO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdExvZy5kZWJ1ZyhcIlByZXJlcXVpc2l0ZXMgb24gRmllbGQgZm9yIHRoZSBTaWRlRWZmZWN0cyBoYXZlIGJlZW4gcmVqZWN0ZWRcIiwgZSBhcyBzdHJpbmcpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5fbWFuYWdlU2lkZUVmZmVjdHNGcm9tRmllbGQoZmllbGQsIGZpZWxkR3JvdXBQcmVSZXF1aXNpdGUgPz8gUHJvbWlzZS5yZXNvbHZlKCkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1hbmFnZXMgU2lkZUVmZmVjdHMgd2l0aCBhIHJlbGF0ZWQgJ2ZvY3VzIG91dCcgdG8gYSBmaWVsZCBncm91cC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIGhhbmRsZUZpZWxkR3JvdXBDaGFuZ2Vcblx0ICogQHBhcmFtIGV2ZW50IFNBUFVJNSBFdmVudFxuXHQgKiBAcmV0dXJucyBQcm9taXNlIHJldHVybmluZyB0cnVlIGlmIHRoZSBTaWRlRWZmZWN0cyBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0aGFuZGxlRmllbGRHcm91cENoYW5nZShldmVudDogRXZlbnQpOiBQcm9taXNlPHZvaWQgfCB2b2lkW10+IHtcblx0XHRjb25zdCBmaWVsZCA9IGV2ZW50LmdldFNvdXJjZSgpIGFzIENvbnRyb2wsXG5cdFx0XHRmaWVsZEdyb3VwSWRzOiBzdHJpbmdbXSA9IGV2ZW50LmdldFBhcmFtZXRlcihcImZpZWxkR3JvdXBJZHNcIiksXG5cdFx0XHRmaWVsZEdyb3Vwc1NpZGVFZmZlY3RzID0gZmllbGRHcm91cElkcy5yZWR1Y2UoKHJlc3VsdHM6IEZpZWxkR3JvdXBTaWRlRWZmZWN0VHlwZVtdLCBmaWVsZEdyb3VwSWQpID0+IHtcblx0XHRcdFx0cmV0dXJuIHJlc3VsdHMuY29uY2F0KHRoaXMuZ2V0UmVnaXN0ZXJlZFNpZGVFZmZlY3RzRm9yRmllbGRHcm91cChmaWVsZEdyb3VwSWQpKTtcblx0XHRcdH0sIFtdKTtcblxuXHRcdHJldHVybiBQcm9taXNlLmFsbChcblx0XHRcdGZpZWxkR3JvdXBzU2lkZUVmZmVjdHMubWFwKChmaWVsZEdyb3VwU2lkZUVmZmVjdHMpID0+IHtcblx0XHRcdFx0cmV0dXJuIHRoaXMuX3JlcXVlc3RGaWVsZEdyb3VwU2lkZUVmZmVjdHMoZmllbGRHcm91cFNpZGVFZmZlY3RzKTtcblx0XHRcdH0pXG5cdFx0KS5jYXRjaCgoZXJyb3IpID0+IHtcblx0XHRcdGNvbnN0IGNvbnRleHRQYXRoID0gZmllbGQuZ2V0QmluZGluZ0NvbnRleHQoKT8uZ2V0UGF0aCgpO1xuXHRcdFx0TG9nLmRlYnVnKGBFcnJvciB3aGlsZSBwcm9jZXNzaW5nIEZpZWxkR3JvdXAgU2lkZUVmZmVjdHMgb24gY29udGV4dCAke2NvbnRleHRQYXRofWAsIGVycm9yKTtcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXF1ZXN0IFNpZGVFZmZlY3RzIG9uIGEgc3BlY2lmaWMgY29udGV4dC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIHJlcXVlc3RTaWRlRWZmZWN0c1xuXHQgKiBAcGFyYW0gc2lkZUVmZmVjdHMgU2lkZUVmZmVjdHMgdG8gYmUgZXhlY3V0ZWRcblx0ICogQHBhcmFtIGNvbnRleHQgQ29udGV4dCB3aGVyZSBTaWRlRWZmZWN0cyBuZWVkIHRvIGJlIGV4ZWN1dGVkXG5cdCAqIEBwYXJhbSBncm91cElkXG5cdCAqIEBwYXJhbSBmbkdldFRhcmdldHMgVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHdoaWNoIHdpbGwgZ2l2ZSB1cyB0aGUgdGFyZ2V0cyBhbmQgYWN0aW9ucyBpZiBpdCB3YXMgY29taW5nIHRocm91Z2ggc29tZSBzcGVjaWZpYyBoYW5kbGluZy5cblx0ICogQHJldHVybnMgU2lkZUVmZmVjdHMgcmVxdWVzdCBvbiBTQVBVSTUgY29udGV4dFxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdGFzeW5jIHJlcXVlc3RTaWRlRWZmZWN0cyhzaWRlRWZmZWN0czogU2lkZUVmZmVjdHNUeXBlLCBjb250ZXh0OiBDb250ZXh0LCBncm91cElkPzogc3RyaW5nLCBmbkdldFRhcmdldHM/OiBGdW5jdGlvbik6IFByb21pc2U8dW5rbm93bj4ge1xuXHRcdGxldCB0YXJnZXRzOiBTaWRlRWZmZWN0c1RhcmdldFtdLCB0cmlnZ2VyQWN0aW9uO1xuXHRcdGlmIChmbkdldFRhcmdldHMpIHtcblx0XHRcdGNvbnN0IHRhcmdldHNBbmRBY3Rpb25EYXRhID0gYXdhaXQgZm5HZXRUYXJnZXRzKHNpZGVFZmZlY3RzKTtcblx0XHRcdHRhcmdldHMgPSB0YXJnZXRzQW5kQWN0aW9uRGF0YVtcImFUYXJnZXRzXCJdO1xuXHRcdFx0dHJpZ2dlckFjdGlvbiA9IHRhcmdldHNBbmRBY3Rpb25EYXRhW1wiVHJpZ2dlckFjdGlvblwiXTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGFyZ2V0cyA9IFsuLi4oc2lkZUVmZmVjdHMudGFyZ2V0RW50aXRpZXMgPz8gW10pLCAuLi4oc2lkZUVmZmVjdHMudGFyZ2V0UHJvcGVydGllcyA/PyBbXSldO1xuXHRcdFx0dHJpZ2dlckFjdGlvbiA9IChzaWRlRWZmZWN0cyBhcyBPRGF0YVNpZGVFZmZlY3RzVHlwZSkudHJpZ2dlckFjdGlvbjtcblx0XHR9XG5cdFx0aWYgKHRyaWdnZXJBY3Rpb24pIHtcblx0XHRcdHRoaXMuX3NpZGVFZmZlY3RzU2VydmljZS5leGVjdXRlQWN0aW9uKHRyaWdnZXJBY3Rpb24sIGNvbnRleHQsIGdyb3VwSWQpO1xuXHRcdH1cblxuXHRcdGlmICh0YXJnZXRzLmxlbmd0aCkge1xuXHRcdFx0cmV0dXJuIHRoaXMuX3NpZGVFZmZlY3RzU2VydmljZS5yZXF1ZXN0U2lkZUVmZmVjdHModGFyZ2V0cywgY29udGV4dCwgZ3JvdXBJZCkuY2F0Y2goKGVycm9yOiB1bmtub3duKSA9PiB7XG5cdFx0XHRcdHRoaXMucmVnaXN0ZXJGYWlsZWRTaWRlRWZmZWN0cyhzaWRlRWZmZWN0cywgY29udGV4dCk7XG5cdFx0XHRcdHRocm93IGVycm9yO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgZmFpbGVkIFNpZGVFZmZlY3RzLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgZ2V0UmVnaXN0ZXJlZEZhaWxlZFJlcXVlc3RzXG5cdCAqIEByZXR1cm5zIFJlZ2lzdGVyZWQgU2lkZUVmZmVjdHMgcmVxdWVzdHMgdGhhdCBoYXZlIGZhaWxlZFxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdHB1YmxpYyBnZXRSZWdpc3RlcmVkRmFpbGVkUmVxdWVzdHMoKTogRmFpbGVkU2lkZUVmZmVjdERpY3Rpb25hcnkge1xuXHRcdHJldHVybiB0aGlzLl9yZWdpc3RlcmVkRmFpbGVkU2lkZUVmZmVjdHM7XG5cdH1cblxuXHQvKipcblx0ICogQWRkcyBTaWRlRWZmZWN0cyB0byB0aGUgcXVldWUgb2YgdGhlIGZhaWxlZCBTaWRlRWZmZWN0c1xuXHQgKiBUaGUgU2lkZUVmZmVjdHMgYXJlIHJldHJpZ2dlcmVkIG9uIHRoZSBuZXh0IGNoYW5nZSBvbiB0aGUgc2FtZSBjb250ZXh0LlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgcmVnaXN0ZXJGYWlsZWRTaWRlRWZmZWN0c1xuXHQgKiBAcGFyYW0gc2lkZUVmZmVjdHMgU2lkZUVmZmVjdHMgdGhhdCBuZWVkIHRvIGJlIHJldHJpZ2dlcmVkXG5cdCAqIEBwYXJhbSBjb250ZXh0IENvbnRleHQgd2hlcmUgU2lkZUVmZmVjdHMgaGF2ZSBmYWlsZWRcblx0ICovXG5cdEBwcml2YXRlRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0cmVnaXN0ZXJGYWlsZWRTaWRlRWZmZWN0cyhzaWRlRWZmZWN0czogU2lkZUVmZmVjdHNUeXBlLCBjb250ZXh0OiBDb250ZXh0KTogdm9pZCB7XG5cdFx0Y29uc3QgY29udGV4dFBhdGggPSBjb250ZXh0LmdldFBhdGgoKTtcblx0XHR0aGlzLl9yZWdpc3RlcmVkRmFpbGVkU2lkZUVmZmVjdHNbY29udGV4dFBhdGhdID0gdGhpcy5fcmVnaXN0ZXJlZEZhaWxlZFNpZGVFZmZlY3RzW2NvbnRleHRQYXRoXSA/PyBbXTtcblx0XHRjb25zdCBpc05vdEFscmVhZHlMaXN0ZWQgPSB0aGlzLl9yZWdpc3RlcmVkRmFpbGVkU2lkZUVmZmVjdHNbY29udGV4dFBhdGhdLmV2ZXJ5KFxuXHRcdFx0KG1GYWlsZWRTaWRlRWZmZWN0cykgPT4gc2lkZUVmZmVjdHMuZnVsbHlRdWFsaWZpZWROYW1lICE9PSBtRmFpbGVkU2lkZUVmZmVjdHMuZnVsbHlRdWFsaWZpZWROYW1lXG5cdFx0KTtcblx0XHRpZiAoaXNOb3RBbHJlYWR5TGlzdGVkKSB7XG5cdFx0XHR0aGlzLl9yZWdpc3RlcmVkRmFpbGVkU2lkZUVmZmVjdHNbY29udGV4dFBhdGhdLnB1c2goc2lkZUVmZmVjdHMpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBEZWxldGVzIFNpZGVFZmZlY3RzIHRvIHRoZSBxdWV1ZSBvZiB0aGUgZmFpbGVkIFNpZGVFZmZlY3RzIGZvciBhIGNvbnRleHQuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSB1bnJlZ2lzdGVyRmFpbGVkU2lkZUVmZmVjdHNGb3JBQ29udGV4dFxuXHQgKiBAcGFyYW0gY29udGV4dFBhdGggQ29udGV4dCBwYXRoIHdoZXJlIFNpZGVFZmZlY3RzIGhhdmUgZmFpbGVkXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0dW5yZWdpc3RlckZhaWxlZFNpZGVFZmZlY3RzRm9yQUNvbnRleHQoY29udGV4dFBhdGg6IHN0cmluZykge1xuXHRcdGRlbGV0ZSB0aGlzLl9yZWdpc3RlcmVkRmFpbGVkU2lkZUVmZmVjdHNbY29udGV4dFBhdGhdO1xuXHR9XG5cblx0LyoqXG5cdCAqIERlbGV0ZXMgU2lkZUVmZmVjdHMgdG8gdGhlIHF1ZXVlIG9mIHRoZSBmYWlsZWQgU2lkZUVmZmVjdHMuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSB1bnJlZ2lzdGVyRmFpbGVkU2lkZUVmZmVjdHNcblx0ICogQHBhcmFtIHNpZGVFZmZlY3RzRnVsbHlRdWFsaWZpZWROYW1lIFNpZGVFZmZlY3RzIHRoYXQgbmVlZCB0byBiZSByZXRyaWdnZXJlZFxuXHQgKiBAcGFyYW0gY29udGV4dCBDb250ZXh0IHdoZXJlIFNpZGVFZmZlY3RzIGhhdmUgZmFpbGVkXG5cdCAqL1xuXHRAcHJpdmF0ZUV4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdHVucmVnaXN0ZXJGYWlsZWRTaWRlRWZmZWN0cyhzaWRlRWZmZWN0c0Z1bGx5UXVhbGlmaWVkTmFtZTogc3RyaW5nLCBjb250ZXh0OiBDb250ZXh0KTogdm9pZCB7XG5cdFx0Y29uc3QgY29udGV4dFBhdGggPSBjb250ZXh0LmdldFBhdGgoKTtcblx0XHRpZiAodGhpcy5fcmVnaXN0ZXJlZEZhaWxlZFNpZGVFZmZlY3RzW2NvbnRleHRQYXRoXT8ubGVuZ3RoKSB7XG5cdFx0XHR0aGlzLl9yZWdpc3RlcmVkRmFpbGVkU2lkZUVmZmVjdHNbY29udGV4dFBhdGhdID0gdGhpcy5fcmVnaXN0ZXJlZEZhaWxlZFNpZGVFZmZlY3RzW2NvbnRleHRQYXRoXS5maWx0ZXIoXG5cdFx0XHRcdChzaWRlRWZmZWN0cykgPT4gc2lkZUVmZmVjdHMuZnVsbHlRdWFsaWZpZWROYW1lICE9PSBzaWRlRWZmZWN0c0Z1bGx5UXVhbGlmaWVkTmFtZVxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQWRkcyBTaWRlRWZmZWN0cyB0byB0aGUgcXVldWUgb2YgYSBGaWVsZEdyb3VwXG5cdCAqIFRoZSBTaWRlRWZmZWN0cyBhcmUgdHJpZ2dlcmVkIHdoZW4gZXZlbnQgcmVsYXRlZCB0byB0aGUgZmllbGQgZ3JvdXAgY2hhbmdlIGlzIGZpcmVkLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgcmVnaXN0ZXJGaWVsZEdyb3VwU2lkZUVmZmVjdHNcblx0ICogQHBhcmFtIHNpZGVFZmZlY3RzUHJvcGVydGllcyBTaWRlRWZmZWN0cyBwcm9wZXJ0aWVzXG5cdCAqIEBwYXJhbSBmaWVsZEdyb3VwUHJlUmVxdWlzaXRlIFByb21pc2UgdG8gZnVsbGZpbCBiZWZvcmUgZXhlY3V0aW5nIHRoZSBTaWRlRWZmZWN0c1xuXHQgKi9cblx0QHByaXZhdGVFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRyZWdpc3RlckZpZWxkR3JvdXBTaWRlRWZmZWN0cyhzaWRlRWZmZWN0c1Byb3BlcnRpZXM6IEZpZWxkU2lkZUVmZmVjdFByb3BlcnR5VHlwZSwgZmllbGRHcm91cFByZVJlcXVpc2l0ZT86IFByb21pc2U8dW5rbm93bj4pIHtcblx0XHRjb25zdCBpZCA9IHRoaXMuX2dldEZpZWxkR3JvdXBJbmRleChzaWRlRWZmZWN0c1Byb3BlcnRpZXMubmFtZSwgc2lkZUVmZmVjdHNQcm9wZXJ0aWVzLmNvbnRleHQpO1xuXHRcdGlmICghdGhpcy5fcmVnaXN0ZXJlZEZpZWxkR3JvdXBNYXBbaWRdKSB7XG5cdFx0XHR0aGlzLl9yZWdpc3RlcmVkRmllbGRHcm91cE1hcFtpZF0gPSB7XG5cdFx0XHRcdHByb21pc2U6IGZpZWxkR3JvdXBQcmVSZXF1aXNpdGUgPz8gUHJvbWlzZS5yZXNvbHZlKCksXG5cdFx0XHRcdHNpZGVFZmZlY3RQcm9wZXJ0eTogc2lkZUVmZmVjdHNQcm9wZXJ0aWVzXG5cdFx0XHR9O1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBEZWxldGVzIFNpZGVFZmZlY3RzIHRvIHRoZSBxdWV1ZSBvZiBhIEZpZWxkR3JvdXAuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSB1bnJlZ2lzdGVyRmllbGRHcm91cFNpZGVFZmZlY3RzXG5cdCAqIEBwYXJhbSBzaWRlRWZmZWN0c1Byb3BlcnRpZXMgU2lkZUVmZmVjdHMgcHJvcGVydGllc1xuXHQgKi9cblx0QHByaXZhdGVFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHR1bnJlZ2lzdGVyRmllbGRHcm91cFNpZGVFZmZlY3RzKHNpZGVFZmZlY3RzUHJvcGVydGllczogRmllbGRTaWRlRWZmZWN0UHJvcGVydHlUeXBlKSB7XG5cdFx0Y29uc3QgeyBjb250ZXh0LCBuYW1lIH0gPSBzaWRlRWZmZWN0c1Byb3BlcnRpZXM7XG5cdFx0Y29uc3QgaWQgPSB0aGlzLl9nZXRGaWVsZEdyb3VwSW5kZXgobmFtZSwgY29udGV4dCk7XG5cdFx0ZGVsZXRlIHRoaXMuX3JlZ2lzdGVyZWRGaWVsZEdyb3VwTWFwW2lkXTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSByZWdpc3RlcmVkIFNpZGVFZmZlY3RzIGludG8gdGhlIHF1ZXVlIGZvciBhIGZpZWxkIGdyb3VwIGlkLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgZ2V0UmVnaXN0ZXJlZFNpZGVFZmZlY3RzRm9yRmllbGRHcm91cFxuXHQgKiBAcGFyYW0gZmllbGRHcm91cElkIEZpZWxkIGdyb3VwIGlkXG5cdCAqIEByZXR1cm5zIEFycmF5IG9mIHJlZ2lzdGVyZWQgU2lkZUVmZmVjdHMgYW5kIHRoZWlyIHByb21pc2Vcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRnZXRSZWdpc3RlcmVkU2lkZUVmZmVjdHNGb3JGaWVsZEdyb3VwKGZpZWxkR3JvdXBJZDogc3RyaW5nKTogRmllbGRHcm91cFNpZGVFZmZlY3RUeXBlW10ge1xuXHRcdGNvbnN0IHNpZGVFZmZlY3RzID0gW107XG5cdFx0Zm9yIChjb25zdCByZWdpc3RyeUluZGV4IG9mIE9iamVjdC5rZXlzKHRoaXMuX3JlZ2lzdGVyZWRGaWVsZEdyb3VwTWFwKSkge1xuXHRcdFx0aWYgKHJlZ2lzdHJ5SW5kZXguc3RhcnRzV2l0aChgJHtmaWVsZEdyb3VwSWR9X2ApKSB7XG5cdFx0XHRcdHNpZGVFZmZlY3RzLnB1c2godGhpcy5fcmVnaXN0ZXJlZEZpZWxkR3JvdXBNYXBbcmVnaXN0cnlJbmRleF0pO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gc2lkZUVmZmVjdHM7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyBhIHN0YXR1cyBpbmRleC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIF9nZXRGaWVsZEdyb3VwSW5kZXhcblx0ICogQHBhcmFtIGZpZWxkR3JvdXBJZCBUaGUgZmllbGQgZ3JvdXAgaWRcblx0ICogQHBhcmFtIGNvbnRleHQgU0FQVUk1IENvbnRleHRcblx0ICogQHJldHVybnMgSW5kZXhcblx0ICovXG5cdHByaXZhdGUgX2dldEZpZWxkR3JvdXBJbmRleChmaWVsZEdyb3VwSWQ6IHN0cmluZywgY29udGV4dDogQ29udGV4dCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGAke2ZpZWxkR3JvdXBJZH1fJHtjb250ZXh0LmdldFBhdGgoKX1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgc2lkZUVmZmVjdHMgcHJvcGVydGllcyBmcm9tIGEgZmllbGQgZ3JvdXAgaWRcblx0ICogVGhlIHByb3BlcnRpZXMgYXJlOlxuXHQgKiAgLSBuYW1lXG5cdCAqICAtIHNpZGVFZmZlY3RzIGRlZmluaXRpb25cblx0ICogIC0gc2lkZUVmZmVjdHMgZW50aXR5IHR5cGVcblx0ICogIC0gaW1tZWRpYXRlIHNpZGVFZmZlY3RzLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgX2dldFNpZGVFZmZlY3RzUHJvcGVydHlGb3JGaWVsZEdyb3VwXG5cdCAqIEBwYXJhbSBmaWVsZEdyb3VwSWRcblx0ICogQHJldHVybnMgU2lkZUVmZmVjdHMgcHJvcGVydGllc1xuXHQgKi9cblx0cHJpdmF0ZSBfZ2V0U2lkZUVmZmVjdHNQcm9wZXJ0eUZvckZpZWxkR3JvdXAoZmllbGRHcm91cElkOiBzdHJpbmcpIHtcblx0XHQvKipcblx0XHQgKiBzdHJpbmcgXCIkJEltbWVkaWF0ZVJlcXVlc3RcIiBpcyBhZGRlZCB0byB0aGUgU2lkZUVmZmVjdHMgbmFtZSBkdXJpbmcgdGVtcGxhdGluZyB0byBrbm93XG5cdFx0ICogaWYgdGhpcyBTaWRlRWZmZWN0cyBtdXN0IGJlIGltbWVkaWF0ZWx5IGV4ZWN1dGVkIHJlcXVlc3RlZCAob24gZmllbGQgY2hhbmdlKSBvciBtdXN0XG5cdFx0ICogYmUgZGVmZXJyZWQgKG9uIGZpZWxkIGdyb3VwIGZvY3VzIG91dClcblx0XHQgKlxuXHRcdCAqL1xuXHRcdGNvbnN0IGltbWVkaWF0ZSA9IGZpZWxkR3JvdXBJZC5pbmRleE9mKElNTUVESUFURV9SRVFVRVNUKSAhPT0gLTEsXG5cdFx0XHRuYW1lID0gZmllbGRHcm91cElkLnJlcGxhY2UoSU1NRURJQVRFX1JFUVVFU1QsIFwiXCIpLFxuXHRcdFx0c2lkZUVmZmVjdFBhcnRzID0gbmFtZS5zcGxpdChcIiNcIiksXG5cdFx0XHRzaWRlRWZmZWN0RW50aXR5VHlwZSA9IHNpZGVFZmZlY3RQYXJ0c1swXSxcblx0XHRcdHNpZGVFZmZlY3RQYXRoID0gYCR7c2lkZUVmZmVjdEVudGl0eVR5cGV9QGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5TaWRlRWZmZWN0cyR7XG5cdFx0XHRcdHNpZGVFZmZlY3RQYXJ0cy5sZW5ndGggPT09IDIgPyBgIyR7c2lkZUVmZmVjdFBhcnRzWzFdfWAgOiBcIlwiXG5cdFx0XHR9YCxcblx0XHRcdHNpZGVFZmZlY3RzOiBPRGF0YVNpZGVFZmZlY3RzVHlwZSB8IHVuZGVmaW5lZCA9XG5cdFx0XHRcdHRoaXMuX3NpZGVFZmZlY3RzU2VydmljZS5nZXRPRGF0YUVudGl0eVNpZGVFZmZlY3RzKHNpZGVFZmZlY3RFbnRpdHlUeXBlKT8uW3NpZGVFZmZlY3RQYXRoXTtcblx0XHRyZXR1cm4geyBuYW1lLCBpbW1lZGlhdGUsIHNpZGVFZmZlY3RzLCBzaWRlRWZmZWN0RW50aXR5VHlwZSB9O1xuXHR9XG5cblx0LyoqXG5cdCAqIE1hbmFnZXMgdGhlIFNpZGVFZmZlY3RzIGZvciBhIGZpZWxkLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgX21hbmFnZVNpZGVFZmZlY3RzRnJvbUZpZWxkXG5cdCAqIEBwYXJhbSBmaWVsZCBGaWVsZCBjb250cm9sXG5cdCAqIEBwYXJhbSBmaWVsZEdyb3VwUHJlUmVxdWlzaXRlIFByb21pc2UgdG8gZnVsbGZpbCBiZWZvcmUgZXhlY3V0aW5nIGRlZmVycmVkIFNpZGVFZmZlY3RzXG5cdCAqIEByZXR1cm5zIFByb21pc2UgcmVsYXRlZCB0byB0aGUgcmVxdWVzdGVkIGltbWVkaWF0ZSBzaWRlRWZmZWN0cyBhbmQgcmVnaXN0ZXJlZCBkZWZlcnJlZCBTaWRlRWZmZWN0c1xuXHQgKi9cblx0cHJpdmF0ZSBhc3luYyBfbWFuYWdlU2lkZUVmZmVjdHNGcm9tRmllbGQoZmllbGQ6IENvbnRyb2wsIGZpZWxkR3JvdXBQcmVSZXF1aXNpdGU6IFByb21pc2U8dW5rbm93bj4pOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBzaWRlRWZmZWN0c01hcCA9IHRoaXMuZ2V0RmllbGRTaWRlRWZmZWN0c01hcChmaWVsZCk7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGZhaWxlZFNpZGVFZmZlY3RzUHJvbWlzZXM6ICh2b2lkIHwgUHJvbWlzZTx1bmtub3duPilbXSA9IFtdO1xuXHRcdFx0Y29uc3Qgc2lkZUVmZmVjdHNQcm9taXNlcyA9IE9iamVjdC5rZXlzKHNpZGVFZmZlY3RzTWFwKS5tYXAoKHNpZGVFZmZlY3RzTmFtZSkgPT4ge1xuXHRcdFx0XHRjb25zdCBzaWRlRWZmZWN0c1Byb3BlcnRpZXMgPSBzaWRlRWZmZWN0c01hcFtzaWRlRWZmZWN0c05hbWVdO1xuXG5cdFx0XHRcdGlmIChzaWRlRWZmZWN0c1Byb3BlcnRpZXMuaW1tZWRpYXRlID09PSB0cnVlKSB7XG5cdFx0XHRcdFx0Ly8gaWYgdGhpcyBTaWRlRWZmZWN0cyBpcyByZWNvcmRlZCBhcyBmYWlsZWQgU2lkZUVmZmVjdHMsIG5lZWQgdG8gcmVtb3ZlIGl0LlxuXHRcdFx0XHRcdHRoaXMudW5yZWdpc3RlckZhaWxlZFNpZGVFZmZlY3RzKHNpZGVFZmZlY3RzUHJvcGVydGllcy5zaWRlRWZmZWN0cy5mdWxseVF1YWxpZmllZE5hbWUsIHNpZGVFZmZlY3RzUHJvcGVydGllcy5jb250ZXh0KTtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5yZXF1ZXN0U2lkZUVmZmVjdHMoc2lkZUVmZmVjdHNQcm9wZXJ0aWVzLnNpZGVFZmZlY3RzLCBzaWRlRWZmZWN0c1Byb3BlcnRpZXMuY29udGV4dCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRoaXMucmVnaXN0ZXJGaWVsZEdyb3VwU2lkZUVmZmVjdHMoc2lkZUVmZmVjdHNQcm9wZXJ0aWVzLCBmaWVsZEdyb3VwUHJlUmVxdWlzaXRlKTtcblx0XHRcdH0pO1xuXG5cdFx0XHQvL1JlcGxheSBmYWlsZWQgU2lkZUVmZmVjdHMgcmVsYXRlZCB0byB0aGUgdmlldyBvciBGaWVsZFxuXHRcdFx0Zm9yIChjb25zdCBjb250ZXh0IG9mIFtmaWVsZC5nZXRCaW5kaW5nQ29udGV4dCgpLCB0aGlzLl92aWV3LmdldEJpbmRpbmdDb250ZXh0KCldKSB7XG5cdFx0XHRcdGlmIChjb250ZXh0KSB7XG5cdFx0XHRcdFx0Y29uc3QgY29udGV4dFBhdGggPSBjb250ZXh0LmdldFBhdGgoKTtcblx0XHRcdFx0XHRjb25zdCBmYWlsZWRTaWRlRWZmZWN0cyA9IHRoaXMuX3JlZ2lzdGVyZWRGYWlsZWRTaWRlRWZmZWN0c1tjb250ZXh0UGF0aF0gPz8gW107XG5cdFx0XHRcdFx0dGhpcy51bnJlZ2lzdGVyRmFpbGVkU2lkZUVmZmVjdHNGb3JBQ29udGV4dChjb250ZXh0UGF0aCk7XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBmYWlsZWRTaWRlRWZmZWN0IG9mIGZhaWxlZFNpZGVFZmZlY3RzKSB7XG5cdFx0XHRcdFx0XHRmYWlsZWRTaWRlRWZmZWN0c1Byb21pc2VzLnB1c2godGhpcy5yZXF1ZXN0U2lkZUVmZmVjdHMoZmFpbGVkU2lkZUVmZmVjdCwgY29udGV4dCBhcyBDb250ZXh0KSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGF3YWl0IFByb21pc2UuYWxsKHNpZGVFZmZlY3RzUHJvbWlzZXMuY29uY2F0KGZhaWxlZFNpZGVFZmZlY3RzUHJvbWlzZXMpKTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRMb2cuZGVidWcoYEVycm9yIHdoaWxlIG1hbmFnaW5nIEZpZWxkIFNpZGVFZmZlY3RzYCwgZSBhcyBzdHJpbmcpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZXF1ZXN0cyB0aGUgU2lkZUVmZmVjdHMgZm9yIGEgZmllbGRHcm91cC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIF9yZXF1ZXN0RmllbGRHcm91cFNpZGVFZmZlY3RzXG5cdCAqIEBwYXJhbSBmaWVsZEdyb3VwU2lkZUVmZmVjdHMgRmllbGQgZ3JvdXAgc2lkZUVmZmVjdHMgd2l0aCBpdHMgcHJvbWlzZVxuXHQgKiBAcmV0dXJucyBQcm9taXNlIHJldHVybmluZyB0cnVlIGlmIHRoZSBTaWRlRWZmZWN0cyBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkXG5cdCAqL1xuXHRwcml2YXRlIGFzeW5jIF9yZXF1ZXN0RmllbGRHcm91cFNpZGVFZmZlY3RzKGZpZWxkR3JvdXBTaWRlRWZmZWN0czogRmllbGRHcm91cFNpZGVFZmZlY3RUeXBlKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dGhpcy51bnJlZ2lzdGVyRmllbGRHcm91cFNpZGVFZmZlY3RzKGZpZWxkR3JvdXBTaWRlRWZmZWN0cy5zaWRlRWZmZWN0UHJvcGVydHkpO1xuXHRcdHRyeSB7XG5cdFx0XHRhd2FpdCBmaWVsZEdyb3VwU2lkZUVmZmVjdHMucHJvbWlzZTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRMb2cuZGVidWcoYEVycm9yIHdoaWxlIHByb2Nlc3NpbmcgRmllbGRHcm91cCBTaWRlRWZmZWN0c2AsIGUgYXMgc3RyaW5nKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IHsgc2lkZUVmZmVjdHMsIGNvbnRleHQsIG5hbWUgfSA9IGZpZWxkR3JvdXBTaWRlRWZmZWN0cy5zaWRlRWZmZWN0UHJvcGVydHk7XG5cdFx0XHRpZiAodGhpcy5pc0ZpZWxkR3JvdXBWYWxpZChuYW1lLCBjb250ZXh0KSkge1xuXHRcdFx0XHRhd2FpdCB0aGlzLnJlcXVlc3RTaWRlRWZmZWN0cyhzaWRlRWZmZWN0cywgY29udGV4dCk7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0TG9nLmRlYnVnKGBFcnJvciB3aGlsZSBleGVjdXRpbmcgRmllbGRHcm91cCBTaWRlRWZmZWN0c2AsIGUgYXMgc3RyaW5nKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogU2F2ZXMgdGhlIHZhbGlkYXRpb24gc3RhdHVzIG9mIHByb3BlcnRpZXMgcmVsYXRlZCB0byBhIGZpZWxkIGNvbnRyb2wuXG5cdCAqXG5cdCAqIEBwYXJhbSBmaWVsZCBUaGUgZmllbGQgY29udHJvbFxuXHQgKiBAcGFyYW0gc3VjY2VzcyBTdGF0dXMgb2YgdGhlIGZpZWxkIHZhbGlkYXRpb25cblx0ICovXG5cdHByaXZhdGUgX3NhdmVGaWVsZFByb3BlcnRpZXNTdGF0dXMoZmllbGQ6IENvbnRyb2wsIHN1Y2Nlc3M6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRjb25zdCBzaWRlRWZmZWN0c01hcCA9IHRoaXMuZ2V0RmllbGRTaWRlRWZmZWN0c01hcChmaWVsZCk7XG5cdFx0T2JqZWN0LmtleXMoc2lkZUVmZmVjdHNNYXApLmZvckVhY2goKGtleSkgPT4ge1xuXHRcdFx0Y29uc3QgeyBuYW1lLCBpbW1lZGlhdGUsIGNvbnRleHQgfSA9IHNpZGVFZmZlY3RzTWFwW2tleV07XG5cdFx0XHRpZiAoIWltbWVkaWF0ZSkge1xuXHRcdFx0XHRjb25zdCBpZCA9IHRoaXMuX2dldEZpZWxkR3JvdXBJbmRleChuYW1lLCBjb250ZXh0KTtcblx0XHRcdFx0aWYgKHN1Y2Nlc3MpIHtcblx0XHRcdFx0XHRkZWxldGUgdGhpcy5fZmllbGRHcm91cEludmFsaWRpdHlbaWRdPy5bZmllbGQuZ2V0SWQoKV07XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5fZmllbGRHcm91cEludmFsaWRpdHlbaWRdID0ge1xuXHRcdFx0XHRcdFx0Li4udGhpcy5fZmllbGRHcm91cEludmFsaWRpdHlbaWRdLFxuXHRcdFx0XHRcdFx0Li4ueyBbZmllbGQuZ2V0SWQoKV06IHRydWUgfVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBTaWRlRWZmZWN0c0NvbnRyb2xsZXJFeHRlbnNpb247XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7RUEwQ0EsTUFBTUEsaUJBQWlCLEdBQUcsb0JBQW9CO0VBQUMsSUFFekNDLDhCQUE4QixXQURuQ0MsY0FBYyxDQUFDLDhDQUE4QyxDQUFDLFVBYzdEQyxjQUFjLEVBQUUsVUFpQmhCQyxlQUFlLEVBQUUsVUFDakJDLGNBQWMsRUFBRSxVQVloQkQsZUFBZSxFQUFFLFVBQ2pCQyxjQUFjLEVBQUUsVUFtQmhCRCxlQUFlLEVBQUUsVUFDakJDLGNBQWMsRUFBRSxVQW1DaEJELGVBQWUsRUFBRSxXQUNqQkMsY0FBYyxFQUFFLFdBa0RoQkQsZUFBZSxFQUFFLFdBQ2pCQyxjQUFjLEVBQUUsV0E2QmhCRCxlQUFlLEVBQUUsV0FDakJDLGNBQWMsRUFBRSxXQWNoQkQsZUFBZSxFQUFFLFdBQ2pCQyxjQUFjLEVBQUUsV0FjaEJELGVBQWUsRUFBRSxXQUNqQkMsY0FBYyxFQUFFLFdBc0JoQkQsZUFBZSxFQUFFLFdBQ2pCQyxjQUFjLEVBQUUsV0F5QmhCRCxlQUFlLEVBQUUsV0FDakJDLGNBQWMsRUFBRSxXQTZCaEJELGVBQWUsRUFBRSxXQUNqQkMsY0FBYyxFQUFFLFdBOEJoQkQsZUFBZSxFQUFFLFdBQ2pCQyxjQUFjLEVBQUUsV0FjaEJDLGdCQUFnQixFQUFFLFdBQ2xCRCxjQUFjLEVBQUUsV0FtQmhCRCxlQUFlLEVBQUUsV0FDakJDLGNBQWMsRUFBRSxXQWFoQkMsZ0JBQWdCLEVBQUUsV0FDbEJELGNBQWMsRUFBRSxXQW1CaEJDLGdCQUFnQixFQUFFLFdBQ2xCRCxjQUFjLEVBQUUsV0FrQmhCQyxnQkFBZ0IsRUFBRSxXQUNsQkQsY0FBYyxFQUFFLFdBZWhCRCxlQUFlLEVBQUUsV0FDakJDLGNBQWMsRUFBRTtJQUFB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
@@ -2,5 +2,5 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2023 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/base/Log","sap/fe/core/helpers/SideEffectsHelper","sap/ui/core/mvc/ControllerExtension","../CommonUtils","../helpers/ClassSupport"],function(e,t,i,r,o){"use strict";var s,n,d,f,c,p,a,l,u,g,y,E,h,F,S,v,_,m,O,G,P,b,x,C,w,j,M,I,D,T,q,R,A,$,V,B,Q,k,z,N;var U=o.publicExtension;var H=o.privateExtension;var L=o.methodOverride;var W=o.finalExtension;var J=o.defineUI5Class;function K(e,t){e.prototype=Object.create(t.prototype);e.prototype.constructor=e;X(e,t)}function X(e,t){X=Object.setPrototypeOf?Object.setPrototypeOf.bind():function e(t,i){t.__proto__=i;return t};return X(e,t)}function Y(e,t,i,r,o){var s={};Object.keys(r).forEach(function(e){s[e]=r[e]});s.enumerable=!!s.enumerable;s.configurable=!!s.configurable;if("value"in s||s.initializer){s.writable=true}s=i.slice().reverse().reduce(function(i,r){return r(e,t,i)||i},s);if(o&&s.initializer!==void 0){s.value=s.initializer?s.initializer.call(o):void 0;s.initializer=undefined}if(s.initializer===void 0){Object.defineProperty(e,t,s);s=null}return s}let Z=(s=J("sap.fe.core.controllerextensions.SideEffects"),n=L(),d=U(),f=W(),c=U(),p=W(),a=U(),l=W(),u=U(),g=W(),y=U(),E=W(),h=U(),F=W(),S=U(),v=W(),_=U(),m=W(),O=U(),G=W(),P=U(),b=W(),x=U(),C=W(),w=U(),j=W(),M=H(),I=W(),D=U(),T=W(),q=H(),R=W(),A=H(),$=W(),V=H(),B=W(),Q=U(),k=W(),s(z=(N=function(i){K(o,i);function o(){return i.apply(this,arguments)||this}var s=o.prototype;s.onInit=function e(){this._view=this.base.getView();this._sideEffectsService=r.getAppComponent(this._view).getSideEffectsService();this._registeredFieldGroupMap={};this._fieldGroupInvalidity={};this._registeredFailedSideEffects={}};s.addControlSideEffects=function e(t,i){this._sideEffectsService.addControlSideEffects(t,i)};s.removeControlSideEffects=function e(t){var i;const r=((i=t.isA)===null||i===void 0?void 0:i.call(t,"sap.ui.base.ManagedObject"))&&t.getId();if(r){this._sideEffectsService.removeControlSideEffects(r)}};s.getContextForSideEffects=function e(t,i){let r=t,o=this._sideEffectsService.getEntityTypeFromContext(t);if(i!==o){r=t.getBinding().getContext();if(r){o=this._sideEffectsService.getEntityTypeFromContext(r);if(i!==o){r=r.getBinding().getContext();if(r){o=this._sideEffectsService.getEntityTypeFromContext(r);if(i!==o){return undefined}}}}}return r||undefined};s.getFieldSideEffectsMap=function e(t){let i={};const r=t.getFieldGroupIds(),o=this._view.getViewData().entitySet,s=this._sideEffectsService.getConvertedMetaModel().entitySets.find(e=>e.name===o);i=this.getSideEffectsMapForFieldGroups(r,t);if(o&&s){const e=s.entityType.fullyQualifiedName,r=this.getTargetProperty(t),o=this.getContextForSideEffects(t.getBindingContext(),e);if(r&&o){const t=this._sideEffectsService.getControlEntitySideEffects(e);Object.keys(t).forEach(s=>{const n=t[s];if(n.SourceProperties.includes(r)){const t=`${s}::${e}`;i[t]={name:t,immediate:true,sideEffects:n,context:o}}})}}return i};s.getSideEffectsMapForFieldGroups=function e(t,i){const r={};t.forEach(e=>{const{name:t,immediate:o,sideEffects:s,sideEffectEntityType:n}=this._getSideEffectsPropertyForFieldGroup(e);const d=i?this.getContextForSideEffects(i.getBindingContext(),n):undefined;if(s&&(!i||i&&d)){r[t]={name:t,immediate:o,sideEffects:s};if(i){r[t].context=d}}});return r};s.clearFieldGroupsValidity=function e(){this._fieldGroupInvalidity={}};s.isFieldGroupValid=function e(t,i){const r=this._getFieldGroupIndex(t,i);return Object.keys(this._fieldGroupInvalidity[r]??{}).length===0};s.getTargetProperty=function e(t){var i;const r=t.data("sourcePath");const o=this._view.getModel().getMetaModel();const s=(i=this._view.getBindingContext())===null||i===void 0?void 0:i.getPath();const n=s?`${o.getMetaPath(s)}/`:"";return r===null||r===void 0?void 0:r.replace(n,"")};s.handleFieldChange=async function t(i,r,o){const s=i.getSource();this._saveFieldPropertiesStatus(s,r);if(!r){return}try{await(i.getParameter("promise")??Promise.resolve())}catch(t){e.debug("Prerequisites on Field for the SideEffects have been rejected",t);return}return this._manageSideEffectsFromField(s,o??Promise.resolve())};s.handleFieldGroupChange=function t(i){const r=i.getSource(),o=i.getParameter("fieldGroupIds"),s=o.reduce((e,t)=>e.concat(this.getRegisteredSideEffectsForFieldGroup(t)),[]);return Promise.all(s.map(e=>this._requestFieldGroupSideEffects(e))).catch(t=>{var i;const o=(i=r.getBindingContext())===null||i===void 0?void 0:i.getPath();e.debug(`Error while processing FieldGroup SideEffects on context ${o}`,t)})};s.requestSideEffects=async function e(t,i,r,o){let s,n;if(o){const e=await o(t);s=e["aTargets"];n=e["TriggerAction"]}else{s=[...t.TargetEntities??[],...t.TargetProperties??[]];n=t.TriggerAction}if(n){this._sideEffectsService.executeAction(n,i,r)}if(s.length){return this._sideEffectsService.requestSideEffects(s,i,r).catch(e=>{this.registerFailedSideEffects(t,i);throw e})}};s.getRegisteredFailedRequests=function e(){return this._registeredFailedSideEffects};s.registerFailedSideEffects=function e(t,i){const r=i.getPath();this._registeredFailedSideEffects[r]=this._registeredFailedSideEffects[r]??[];const o=this._registeredFailedSideEffects[r].every(e=>t.fullyQualifiedName!==e.fullyQualifiedName);if(o){this._registeredFailedSideEffects[r].push(t)}};s.unregisterFailedSideEffectsForAContext=function e(t){delete this._registeredFailedSideEffects[t]};s.unregisterFailedSideEffects=function e(t,i){var r;const o=i.getPath();if((r=this._registeredFailedSideEffects[o])!==null&&r!==void 0&&r.length){this._registeredFailedSideEffects[o]=this._registeredFailedSideEffects[o].filter(e=>e.fullyQualifiedName!==t)}};s.registerFieldGroupSideEffects=function e(t,i){const r=this._getFieldGroupIndex(t.name,t.context);if(!this._registeredFieldGroupMap[r]){this._registeredFieldGroupMap[r]={promise:i??Promise.resolve(),sideEffectProperty:t}}};s.unregisterFieldGroupSideEffects=function e(t){const{context:i,name:r}=t;const o=this._getFieldGroupIndex(r,i);delete this._registeredFieldGroupMap[o]};s.getRegisteredSideEffectsForFieldGroup=function e(t){const i=[];for(const e of Object.keys(this._registeredFieldGroupMap)){if(e.startsWith(`${t}_`)){i.push(this._registeredFieldGroupMap[e])}}return i};s._getFieldGroupIndex=function e(t,i){return`${t}_${i.getPath()}`};s._getSideEffectsPropertyForFieldGroup=function e(i){var r;const o=i.indexOf(t.IMMEDIATE_REQUEST)!==-1,s=i.replace(t.IMMEDIATE_REQUEST,""),n=s.split("#"),d=n[0],f=`${d}@com.sap.vocabularies.Common.v1.SideEffects${n.length===2?`#${n[1]}`:""}`,c=(r=this._sideEffectsService.getODataEntitySideEffects(d))===null||r===void 0?void 0:r[f];return{name:s,immediate:o,sideEffects:c,sideEffectEntityType:d}};s._manageSideEffectsFromField=async function t(i,r){const o=this.getFieldSideEffectsMap(i);try{const e=[];const t=Object.keys(o).map(e=>{const t=o[e];if(t.immediate===true){this.unregisterFailedSideEffects(t.sideEffects.fullyQualifiedName,t.context);return this.requestSideEffects(t.sideEffects,t.context)}return this.registerFieldGroupSideEffects(t,r)});for(const t of[i.getBindingContext(),this._view.getBindingContext()]){if(t){const i=t.getPath();const r=this._registeredFailedSideEffects[i]??[];this.unregisterFailedSideEffectsForAContext(i);for(const i of r){e.push(this.requestSideEffects(i,t))}}}await Promise.all(t.concat(e))}catch(t){e.debug(`Error while managing Field SideEffects`,t)}};s._requestFieldGroupSideEffects=async function t(i){this.unregisterFieldGroupSideEffects(i.sideEffectProperty);try{await i.promise}catch(t){e.debug(`Error while processing FieldGroup SideEffects`,t);return}try{const{sideEffects:e,context:t,name:r}=i.sideEffectProperty;if(this.isFieldGroupValid(r,t)){await this.requestSideEffects(e,t)}}catch(t){e.debug(`Error while executing FieldGroup SideEffects`,t)}};s._saveFieldPropertiesStatus=function e(t,i){const r=this.getFieldSideEffectsMap(t);Object.keys(r).forEach(e=>{const{name:o,immediate:s,context:n}=r[e];if(!s){const e=this._getFieldGroupIndex(o,n);if(i){var d;(d=this._fieldGroupInvalidity[e])===null||d===void 0?true:delete d[t.getId()]}else{this._fieldGroupInvalidity[e]={...this._fieldGroupInvalidity[e],...{[t.getId()]:true}}}}})};return o}(i),Y(N.prototype,"onInit",[n],Object.getOwnPropertyDescriptor(N.prototype,"onInit"),N.prototype),Y(N.prototype,"addControlSideEffects",[d,f],Object.getOwnPropertyDescriptor(N.prototype,"addControlSideEffects"),N.prototype),Y(N.prototype,"removeControlSideEffects",[c,p],Object.getOwnPropertyDescriptor(N.prototype,"removeControlSideEffects"),N.prototype),Y(N.prototype,"getContextForSideEffects",[a,l],Object.getOwnPropertyDescriptor(N.prototype,"getContextForSideEffects"),N.prototype),Y(N.prototype,"getFieldSideEffectsMap",[u,g],Object.getOwnPropertyDescriptor(N.prototype,"getFieldSideEffectsMap"),N.prototype),Y(N.prototype,"getSideEffectsMapForFieldGroups",[y,E],Object.getOwnPropertyDescriptor(N.prototype,"getSideEffectsMapForFieldGroups"),N.prototype),Y(N.prototype,"clearFieldGroupsValidity",[h,F],Object.getOwnPropertyDescriptor(N.prototype,"clearFieldGroupsValidity"),N.prototype),Y(N.prototype,"isFieldGroupValid",[S,v],Object.getOwnPropertyDescriptor(N.prototype,"isFieldGroupValid"),N.prototype),Y(N.prototype,"getTargetProperty",[_,m],Object.getOwnPropertyDescriptor(N.prototype,"getTargetProperty"),N.prototype),Y(N.prototype,"handleFieldChange",[O,G],Object.getOwnPropertyDescriptor(N.prototype,"handleFieldChange"),N.prototype),Y(N.prototype,"handleFieldGroupChange",[P,b],Object.getOwnPropertyDescriptor(N.prototype,"handleFieldGroupChange"),N.prototype),Y(N.prototype,"requestSideEffects",[x,C],Object.getOwnPropertyDescriptor(N.prototype,"requestSideEffects"),N.prototype),Y(N.prototype,"getRegisteredFailedRequests",[w,j],Object.getOwnPropertyDescriptor(N.prototype,"getRegisteredFailedRequests"),N.prototype),Y(N.prototype,"registerFailedSideEffects",[M,I],Object.getOwnPropertyDescriptor(N.prototype,"registerFailedSideEffects"),N.prototype),Y(N.prototype,"unregisterFailedSideEffectsForAContext",[D,T],Object.getOwnPropertyDescriptor(N.prototype,"unregisterFailedSideEffectsForAContext"),N.prototype),Y(N.prototype,"unregisterFailedSideEffects",[q,R],Object.getOwnPropertyDescriptor(N.prototype,"unregisterFailedSideEffects"),N.prototype),Y(N.prototype,"registerFieldGroupSideEffects",[A,$],Object.getOwnPropertyDescriptor(N.prototype,"registerFieldGroupSideEffects"),N.prototype),Y(N.prototype,"unregisterFieldGroupSideEffects",[V,B],Object.getOwnPropertyDescriptor(N.prototype,"unregisterFieldGroupSideEffects"),N.prototype),Y(N.prototype,"getRegisteredSideEffectsForFieldGroup",[Q,k],Object.getOwnPropertyDescriptor(N.prototype,"getRegisteredSideEffectsForFieldGroup"),N.prototype),N))||z);return Z},false);
5
+ sap.ui.define(["sap/base/Log","sap/ui/core/mvc/ControllerExtension","../CommonUtils","../helpers/ClassSupport"],function(e,t,i,r){"use strict";var o,s,n,d,f,c,p,a,l,u,g,y,E,h,F,S,v,m,_,O,G,P,b,x,C,w,j,M,D,I,q,T,$,R,A,V,B,k,z,N;var Q=r.publicExtension;var U=r.privateExtension;var L=r.methodOverride;var W=r.finalExtension;var H=r.defineUI5Class;function J(e,t){e.prototype=Object.create(t.prototype);e.prototype.constructor=e;K(e,t)}function K(e,t){K=Object.setPrototypeOf?Object.setPrototypeOf.bind():function e(t,i){t.__proto__=i;return t};return K(e,t)}function X(e,t,i,r,o){var s={};Object.keys(r).forEach(function(e){s[e]=r[e]});s.enumerable=!!s.enumerable;s.configurable=!!s.configurable;if("value"in s||s.initializer){s.writable=true}s=i.slice().reverse().reduce(function(i,r){return r(e,t,i)||i},s);if(o&&s.initializer!==void 0){s.value=s.initializer?s.initializer.call(o):void 0;s.initializer=undefined}if(s.initializer===void 0){Object.defineProperty(e,t,s);s=null}return s}const Y="$$ImmediateRequest";let Z=(o=H("sap.fe.core.controllerextensions.SideEffects"),s=L(),n=Q(),d=W(),f=Q(),c=W(),p=Q(),a=W(),l=Q(),u=W(),g=Q(),y=W(),E=Q(),h=W(),F=Q(),S=W(),v=Q(),m=W(),_=Q(),O=W(),G=Q(),P=W(),b=Q(),x=W(),C=Q(),w=W(),j=U(),M=W(),D=Q(),I=W(),q=U(),T=W(),$=U(),R=W(),A=U(),V=W(),B=Q(),k=W(),o(z=(N=function(t){J(r,t);function r(){return t.apply(this,arguments)||this}var o=r.prototype;o.onInit=function e(){this._view=this.base.getView();this._sideEffectsService=i.getAppComponent(this._view).getSideEffectsService();this._registeredFieldGroupMap={};this._fieldGroupInvalidity={};this._registeredFailedSideEffects={}};o.addControlSideEffects=function e(t,i){this._sideEffectsService.addControlSideEffects(t,i)};o.removeControlSideEffects=function e(t){var i;const r=((i=t.isA)===null||i===void 0?void 0:i.call(t,"sap.ui.base.ManagedObject"))&&t.getId();if(r){this._sideEffectsService.removeControlSideEffects(r)}};o.getContextForSideEffects=function e(t,i){let r=t,o=this._sideEffectsService.getEntityTypeFromContext(t);if(i!==o){r=t.getBinding().getContext();if(r){o=this._sideEffectsService.getEntityTypeFromContext(r);if(i!==o){r=r.getBinding().getContext();if(r){o=this._sideEffectsService.getEntityTypeFromContext(r);if(i!==o){return undefined}}}}}return r||undefined};o.getFieldSideEffectsMap=function e(t){let i={};const r=t.getFieldGroupIds(),o=this._view.getViewData().entitySet,s=this._sideEffectsService.getConvertedMetaModel().entitySets.find(e=>e.name===o);i=this.getSideEffectsMapForFieldGroups(r,t.getBindingContext());if(o&&s){const e=s.entityType.fullyQualifiedName,r=this.getTargetProperty(t),o=this.getContextForSideEffects(t.getBindingContext(),e);if(r&&o){const t=this._sideEffectsService.getControlEntitySideEffects(e);Object.keys(t).forEach(s=>{const n=t[s];if(n.sourceProperties.includes(r)){const t=`${s}::${e}`;i[t]={name:t,immediate:true,sideEffects:n,context:o}}})}}return i};o.getSideEffectsMapForFieldGroups=function e(t,i){const r={};t.forEach(e=>{const{name:t,immediate:o,sideEffects:s,sideEffectEntityType:n}=this._getSideEffectsPropertyForFieldGroup(e);const d=i?this.getContextForSideEffects(i,n):undefined;if(s&&(!i||i&&d)){r[t]={name:t,immediate:o,sideEffects:s};if(i){r[t].context=d}}});return r};o.clearFieldGroupsValidity=function e(){this._fieldGroupInvalidity={}};o.isFieldGroupValid=function e(t,i){const r=this._getFieldGroupIndex(t,i);return Object.keys(this._fieldGroupInvalidity[r]??{}).length===0};o.getTargetProperty=function e(t){var i;const r=t.data("sourcePath");const o=this._view.getModel().getMetaModel();const s=(i=this._view.getBindingContext())===null||i===void 0?void 0:i.getPath();const n=s?`${o.getMetaPath(s)}/`:"";return r===null||r===void 0?void 0:r.replace(n,"")};o.handleFieldChange=async function t(i,r,o){const s=i.getSource();this._saveFieldPropertiesStatus(s,r);if(!r){return}try{await(i.getParameter("promise")??Promise.resolve())}catch(t){e.debug("Prerequisites on Field for the SideEffects have been rejected",t);return}return this._manageSideEffectsFromField(s,o??Promise.resolve())};o.handleFieldGroupChange=function t(i){const r=i.getSource(),o=i.getParameter("fieldGroupIds"),s=o.reduce((e,t)=>e.concat(this.getRegisteredSideEffectsForFieldGroup(t)),[]);return Promise.all(s.map(e=>this._requestFieldGroupSideEffects(e))).catch(t=>{var i;const o=(i=r.getBindingContext())===null||i===void 0?void 0:i.getPath();e.debug(`Error while processing FieldGroup SideEffects on context ${o}`,t)})};o.requestSideEffects=async function e(t,i,r,o){let s,n;if(o){const e=await o(t);s=e["aTargets"];n=e["TriggerAction"]}else{s=[...t.targetEntities??[],...t.targetProperties??[]];n=t.triggerAction}if(n){this._sideEffectsService.executeAction(n,i,r)}if(s.length){return this._sideEffectsService.requestSideEffects(s,i,r).catch(e=>{this.registerFailedSideEffects(t,i);throw e})}};o.getRegisteredFailedRequests=function e(){return this._registeredFailedSideEffects};o.registerFailedSideEffects=function e(t,i){const r=i.getPath();this._registeredFailedSideEffects[r]=this._registeredFailedSideEffects[r]??[];const o=this._registeredFailedSideEffects[r].every(e=>t.fullyQualifiedName!==e.fullyQualifiedName);if(o){this._registeredFailedSideEffects[r].push(t)}};o.unregisterFailedSideEffectsForAContext=function e(t){delete this._registeredFailedSideEffects[t]};o.unregisterFailedSideEffects=function e(t,i){var r;const o=i.getPath();if((r=this._registeredFailedSideEffects[o])!==null&&r!==void 0&&r.length){this._registeredFailedSideEffects[o]=this._registeredFailedSideEffects[o].filter(e=>e.fullyQualifiedName!==t)}};o.registerFieldGroupSideEffects=function e(t,i){const r=this._getFieldGroupIndex(t.name,t.context);if(!this._registeredFieldGroupMap[r]){this._registeredFieldGroupMap[r]={promise:i??Promise.resolve(),sideEffectProperty:t}}};o.unregisterFieldGroupSideEffects=function e(t){const{context:i,name:r}=t;const o=this._getFieldGroupIndex(r,i);delete this._registeredFieldGroupMap[o]};o.getRegisteredSideEffectsForFieldGroup=function e(t){const i=[];for(const e of Object.keys(this._registeredFieldGroupMap)){if(e.startsWith(`${t}_`)){i.push(this._registeredFieldGroupMap[e])}}return i};o._getFieldGroupIndex=function e(t,i){return`${t}_${i.getPath()}`};o._getSideEffectsPropertyForFieldGroup=function e(t){var i;const r=t.indexOf(Y)!==-1,o=t.replace(Y,""),s=o.split("#"),n=s[0],d=`${n}@com.sap.vocabularies.Common.v1.SideEffects${s.length===2?`#${s[1]}`:""}`,f=(i=this._sideEffectsService.getODataEntitySideEffects(n))===null||i===void 0?void 0:i[d];return{name:o,immediate:r,sideEffects:f,sideEffectEntityType:n}};o._manageSideEffectsFromField=async function t(i,r){const o=this.getFieldSideEffectsMap(i);try{const e=[];const t=Object.keys(o).map(e=>{const t=o[e];if(t.immediate===true){this.unregisterFailedSideEffects(t.sideEffects.fullyQualifiedName,t.context);return this.requestSideEffects(t.sideEffects,t.context)}return this.registerFieldGroupSideEffects(t,r)});for(const t of[i.getBindingContext(),this._view.getBindingContext()]){if(t){const i=t.getPath();const r=this._registeredFailedSideEffects[i]??[];this.unregisterFailedSideEffectsForAContext(i);for(const i of r){e.push(this.requestSideEffects(i,t))}}}await Promise.all(t.concat(e))}catch(t){e.debug(`Error while managing Field SideEffects`,t)}};o._requestFieldGroupSideEffects=async function t(i){this.unregisterFieldGroupSideEffects(i.sideEffectProperty);try{await i.promise}catch(t){e.debug(`Error while processing FieldGroup SideEffects`,t);return}try{const{sideEffects:e,context:t,name:r}=i.sideEffectProperty;if(this.isFieldGroupValid(r,t)){await this.requestSideEffects(e,t)}}catch(t){e.debug(`Error while executing FieldGroup SideEffects`,t)}};o._saveFieldPropertiesStatus=function e(t,i){const r=this.getFieldSideEffectsMap(t);Object.keys(r).forEach(e=>{const{name:o,immediate:s,context:n}=r[e];if(!s){const e=this._getFieldGroupIndex(o,n);if(i){var d;(d=this._fieldGroupInvalidity[e])===null||d===void 0?true:delete d[t.getId()]}else{this._fieldGroupInvalidity[e]={...this._fieldGroupInvalidity[e],...{[t.getId()]:true}}}}})};return r}(t),X(N.prototype,"onInit",[s],Object.getOwnPropertyDescriptor(N.prototype,"onInit"),N.prototype),X(N.prototype,"addControlSideEffects",[n,d],Object.getOwnPropertyDescriptor(N.prototype,"addControlSideEffects"),N.prototype),X(N.prototype,"removeControlSideEffects",[f,c],Object.getOwnPropertyDescriptor(N.prototype,"removeControlSideEffects"),N.prototype),X(N.prototype,"getContextForSideEffects",[p,a],Object.getOwnPropertyDescriptor(N.prototype,"getContextForSideEffects"),N.prototype),X(N.prototype,"getFieldSideEffectsMap",[l,u],Object.getOwnPropertyDescriptor(N.prototype,"getFieldSideEffectsMap"),N.prototype),X(N.prototype,"getSideEffectsMapForFieldGroups",[g,y],Object.getOwnPropertyDescriptor(N.prototype,"getSideEffectsMapForFieldGroups"),N.prototype),X(N.prototype,"clearFieldGroupsValidity",[E,h],Object.getOwnPropertyDescriptor(N.prototype,"clearFieldGroupsValidity"),N.prototype),X(N.prototype,"isFieldGroupValid",[F,S],Object.getOwnPropertyDescriptor(N.prototype,"isFieldGroupValid"),N.prototype),X(N.prototype,"getTargetProperty",[v,m],Object.getOwnPropertyDescriptor(N.prototype,"getTargetProperty"),N.prototype),X(N.prototype,"handleFieldChange",[_,O],Object.getOwnPropertyDescriptor(N.prototype,"handleFieldChange"),N.prototype),X(N.prototype,"handleFieldGroupChange",[G,P],Object.getOwnPropertyDescriptor(N.prototype,"handleFieldGroupChange"),N.prototype),X(N.prototype,"requestSideEffects",[b,x],Object.getOwnPropertyDescriptor(N.prototype,"requestSideEffects"),N.prototype),X(N.prototype,"getRegisteredFailedRequests",[C,w],Object.getOwnPropertyDescriptor(N.prototype,"getRegisteredFailedRequests"),N.prototype),X(N.prototype,"registerFailedSideEffects",[j,M],Object.getOwnPropertyDescriptor(N.prototype,"registerFailedSideEffects"),N.prototype),X(N.prototype,"unregisterFailedSideEffectsForAContext",[D,I],Object.getOwnPropertyDescriptor(N.prototype,"unregisterFailedSideEffectsForAContext"),N.prototype),X(N.prototype,"unregisterFailedSideEffects",[q,T],Object.getOwnPropertyDescriptor(N.prototype,"unregisterFailedSideEffects"),N.prototype),X(N.prototype,"registerFieldGroupSideEffects",[$,R],Object.getOwnPropertyDescriptor(N.prototype,"registerFieldGroupSideEffects"),N.prototype),X(N.prototype,"unregisterFieldGroupSideEffects",[A,V],Object.getOwnPropertyDescriptor(N.prototype,"unregisterFieldGroupSideEffects"),N.prototype),X(N.prototype,"getRegisteredSideEffectsForFieldGroup",[B,k],Object.getOwnPropertyDescriptor(N.prototype,"getRegisteredSideEffectsForFieldGroup"),N.prototype),N))||z);return Z},false);
6
6
  //# sourceMappingURL=SideEffects.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SideEffects.js","names":["sap","ui","define","Log","SideEffectsHelper","ControllerExtension","CommonUtils","ClassSupport","_dec","_dec2","_dec3","_dec4","_dec5","_dec6","_dec7","_dec8","_dec9","_dec10","_dec11","_dec12","_dec13","_dec14","_dec15","_dec16","_dec17","_dec18","_dec19","_dec20","_dec21","_dec22","_dec23","_dec24","_dec25","_dec26","_dec27","_dec28","_dec29","_dec30","_dec31","_dec32","_dec33","_dec34","_dec35","_dec36","_dec37","_dec38","_class","_class2","publicExtension","privateExtension","methodOverride","finalExtension","defineUI5Class","_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","_setPrototypeOf","o","p","setPrototypeOf","bind","__proto__","_applyDecoratedDescriptor","target","property","decorators","descriptor","context","desc","keys","forEach","key","enumerable","configurable","initializer","writable","slice","reverse","reduce","decorator","value","call","undefined","defineProperty","SideEffectsControllerExtension","_ControllerExtension","apply","this","arguments","_proto","onInit","_view","base","getView","_sideEffectsService","getAppComponent","getSideEffectsService","_registeredFieldGroupMap","_fieldGroupInvalidity","_registeredFailedSideEffects","addControlSideEffects","entityType","controlSideEffects","removeControlSideEffects","control","_control$isA","controlId","isA","getId","getContextForSideEffects","bindingContext","sideEffectEntityType","contextForSideEffects","getEntityTypeFromContext","getBinding","getContext","getFieldSideEffectsMap","field","sideEffectsMap","fieldGroupIds","getFieldGroupIds","viewEntitySetSetName","getViewData","entitySet","viewEntitySet","getConvertedMetaModel","entitySets","find","name","getSideEffectsMapForFieldGroups","viewEntityType","fullyQualifiedName","fieldPath","getTargetProperty","getBindingContext","controlSideEffectsEntityType","getControlEntitySideEffects","sideEffectsName","oControlSideEffects","SourceProperties","includes","immediate","sideEffects","mSideEffectsMap","fieldGroupId","_getSideEffectsPropertyForFieldGroup","oContext","clearFieldGroupsValidity","isFieldGroupValid","id","_getFieldGroupIndex","length","_this$_view$getBindin","data","metaModel","getModel","getMetaModel","viewBindingPath","getPath","viewMetaModelPath","getMetaPath","replace","handleFieldChange","async","event","fieldValidity","fieldGroupPreRequisite","getSource","_saveFieldPropertiesStatus","getParameter","Promise","resolve","e","debug","_manageSideEffectsFromField","handleFieldGroupChange","fieldGroupsSideEffects","results","concat","getRegisteredSideEffectsForFieldGroup","all","map","fieldGroupSideEffects","_requestFieldGroupSideEffects","catch","error","_field$getBindingCont","contextPath","requestSideEffects","groupId","fnGetTargets","targets","triggerAction","targetsAndActionData","TargetEntities","TargetProperties","TriggerAction","executeAction","registerFailedSideEffects","getRegisteredFailedRequests","isNotAlreadyListed","every","mFailedSideEffects","push","unregisterFailedSideEffectsForAContext","unregisterFailedSideEffects","sideEffectsFullyQualifiedName","_this$_registeredFail","filter","registerFieldGroupSideEffects","sideEffectsProperties","promise","sideEffectProperty","unregisterFieldGroupSideEffects","registryIndex","startsWith","_this$_sideEffectsSer","indexOf","IMMEDIATE_REQUEST","sideEffectParts","split","sideEffectPath","getODataEntitySideEffects","failedSideEffectsPromises","sideEffectsPromises","failedSideEffects","failedSideEffect","success","_this$_fieldGroupInva","getOwnPropertyDescriptor"],"sources":["SideEffects-dbg.js"],"mappings":"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"}
1
+ {"version":3,"file":"SideEffects.js","names":["sap","ui","define","Log","ControllerExtension","CommonUtils","ClassSupport","_dec","_dec2","_dec3","_dec4","_dec5","_dec6","_dec7","_dec8","_dec9","_dec10","_dec11","_dec12","_dec13","_dec14","_dec15","_dec16","_dec17","_dec18","_dec19","_dec20","_dec21","_dec22","_dec23","_dec24","_dec25","_dec26","_dec27","_dec28","_dec29","_dec30","_dec31","_dec32","_dec33","_dec34","_dec35","_dec36","_dec37","_dec38","_class","_class2","publicExtension","privateExtension","methodOverride","finalExtension","defineUI5Class","_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","_setPrototypeOf","o","p","setPrototypeOf","bind","__proto__","_applyDecoratedDescriptor","target","property","decorators","descriptor","context","desc","keys","forEach","key","enumerable","configurable","initializer","writable","slice","reverse","reduce","decorator","value","call","undefined","defineProperty","IMMEDIATE_REQUEST","SideEffectsControllerExtension","_ControllerExtension","apply","this","arguments","_proto","onInit","_view","base","getView","_sideEffectsService","getAppComponent","getSideEffectsService","_registeredFieldGroupMap","_fieldGroupInvalidity","_registeredFailedSideEffects","addControlSideEffects","entityType","controlSideEffects","removeControlSideEffects","control","_control$isA","controlId","isA","getId","getContextForSideEffects","bindingContext","sideEffectEntityType","contextForSideEffects","getEntityTypeFromContext","getBinding","getContext","getFieldSideEffectsMap","field","sideEffectsMap","fieldGroupIds","getFieldGroupIds","viewEntitySetSetName","getViewData","entitySet","viewEntitySet","getConvertedMetaModel","entitySets","find","name","getSideEffectsMapForFieldGroups","getBindingContext","viewEntityType","fullyQualifiedName","fieldPath","getTargetProperty","controlSideEffectsEntityType","getControlEntitySideEffects","sideEffectsName","oControlSideEffects","sourceProperties","includes","immediate","sideEffects","fieldContext","mSideEffectsMap","fieldGroupId","_getSideEffectsPropertyForFieldGroup","oContext","clearFieldGroupsValidity","isFieldGroupValid","id","_getFieldGroupIndex","length","_this$_view$getBindin","data","metaModel","getModel","getMetaModel","viewBindingPath","getPath","viewMetaModelPath","getMetaPath","replace","handleFieldChange","async","event","fieldValidity","fieldGroupPreRequisite","getSource","_saveFieldPropertiesStatus","getParameter","Promise","resolve","e","debug","_manageSideEffectsFromField","handleFieldGroupChange","fieldGroupsSideEffects","results","concat","getRegisteredSideEffectsForFieldGroup","all","map","fieldGroupSideEffects","_requestFieldGroupSideEffects","catch","error","_field$getBindingCont","contextPath","requestSideEffects","groupId","fnGetTargets","targets","triggerAction","targetsAndActionData","targetEntities","targetProperties","executeAction","registerFailedSideEffects","getRegisteredFailedRequests","isNotAlreadyListed","every","mFailedSideEffects","push","unregisterFailedSideEffectsForAContext","unregisterFailedSideEffects","sideEffectsFullyQualifiedName","_this$_registeredFail","filter","registerFieldGroupSideEffects","sideEffectsProperties","promise","sideEffectProperty","unregisterFieldGroupSideEffects","registryIndex","startsWith","_this$_sideEffectsSer","indexOf","sideEffectParts","split","sideEffectPath","getODataEntitySideEffects","failedSideEffectsPromises","sideEffectsPromises","failedSideEffects","failedSideEffect","success","_this$_fieldGroupInva","getOwnPropertyDescriptor"],"sources":["SideEffects-dbg.js"],"mappings":"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"}