@sapui5/sap.fe.core 1.112.0 → 1.114.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 (434) 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 +70 -6
  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 +118 -3
  7. package/src/sap/fe/core/AppComponent-dbg.js +16 -6
  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 +21 -7
  11. package/src/sap/fe/core/AppStateHandler-dbg.js +11 -10
  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 +14 -11
  15. package/src/sap/fe/core/CommonUtils-dbg.js +102 -175
  16. package/src/sap/fe/core/CommonUtils.js +1 -1
  17. package/src/sap/fe/core/CommonUtils.js.map +1 -1
  18. package/src/sap/fe/core/CommonUtils.ts +114 -211
  19. package/src/sap/fe/core/ExtensionAPI-dbg.js +3 -1
  20. package/src/sap/fe/core/ExtensionAPI.js.map +1 -1
  21. package/src/sap/fe/core/ExtensionAPI.ts +2 -0
  22. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase-dbg.js +2 -1
  23. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js +1 -1
  24. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js.map +1 -1
  25. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.ts +1 -0
  26. package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport-dbg.js +2 -2
  27. package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport.js +1 -1
  28. package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport.js.map +1 -1
  29. package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport.ts +13 -18
  30. package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor-dbg.js +32 -24
  31. package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor.js +4 -4
  32. package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor.js.map +1 -1
  33. package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor.ts +41 -29
  34. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock-dbg.js +2 -2
  35. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock.js +1 -1
  36. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock.js.map +1 -1
  37. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock.ts +1 -1
  38. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment-dbg.js +2 -2
  39. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.js +1 -1
  40. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.js.map +1 -1
  41. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.ts +3 -1
  42. package/src/sap/fe/core/controllerextensions/EditFlow-dbg.js +124 -57
  43. package/src/sap/fe/core/controllerextensions/EditFlow.js +1 -1
  44. package/src/sap/fe/core/controllerextensions/EditFlow.js.map +1 -1
  45. package/src/sap/fe/core/controllerextensions/EditFlow.ts +146 -73
  46. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +35 -74
  47. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +1 -1
  48. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js.map +1 -1
  49. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +35 -78
  50. package/src/sap/fe/core/controllerextensions/InternalRouting-dbg.js +217 -127
  51. package/src/sap/fe/core/controllerextensions/InternalRouting.js +1 -1
  52. package/src/sap/fe/core/controllerextensions/InternalRouting.js.map +1 -1
  53. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +227 -129
  54. package/src/sap/fe/core/controllerextensions/PageReady-dbg.js +3 -5
  55. package/src/sap/fe/core/controllerextensions/PageReady.js +1 -1
  56. package/src/sap/fe/core/controllerextensions/PageReady.js.map +1 -1
  57. package/src/sap/fe/core/controllerextensions/PageReady.ts +2 -4
  58. package/src/sap/fe/core/controllerextensions/Share-dbg.js +3 -2
  59. package/src/sap/fe/core/controllerextensions/Share.js +1 -1
  60. package/src/sap/fe/core/controllerextensions/Share.js.map +1 -1
  61. package/src/sap/fe/core/controllerextensions/Share.ts +2 -1
  62. package/src/sap/fe/core/controllerextensions/SideEffects-dbg.js +19 -14
  63. package/src/sap/fe/core/controllerextensions/SideEffects.js +1 -1
  64. package/src/sap/fe/core/controllerextensions/SideEffects.js.map +1 -1
  65. package/src/sap/fe/core/controllerextensions/SideEffects.ts +22 -14
  66. package/src/sap/fe/core/controllerextensions/ViewState-dbg.js +41 -24
  67. package/src/sap/fe/core/controllerextensions/ViewState.js +1 -1
  68. package/src/sap/fe/core/controllerextensions/ViewState.js.map +1 -1
  69. package/src/sap/fe/core/controllerextensions/ViewState.ts +64 -31
  70. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync-dbg.js +8 -8
  71. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +1 -1
  72. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js.map +1 -1
  73. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +7 -9
  74. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon-dbg.js +7 -45
  75. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +1 -1
  76. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js.map +1 -1
  77. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +5 -48
  78. package/src/sap/fe/core/controllerextensions/collaboration/Manage-dbg.js +4 -4
  79. package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +1 -1
  80. package/src/sap/fe/core/controllerextensions/collaboration/Manage.js.map +1 -1
  81. package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +2 -2
  82. package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +3 -3
  83. package/src/sap/fe/core/controllerextensions/collaboration/ManageDialogTemplating-dbg.js +52 -0
  84. package/src/sap/fe/core/controllerextensions/collaboration/ManageDialogTemplating.js +6 -0
  85. package/src/sap/fe/core/controllerextensions/collaboration/ManageDialogTemplating.js.map +1 -0
  86. package/src/sap/fe/core/controllerextensions/collaboration/ManageDialogTemplating.ts +46 -0
  87. package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog-dbg.js +103 -0
  88. package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js +6 -0
  89. package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js.map +1 -0
  90. package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.tsx +124 -0
  91. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper-dbg.js +106 -205
  92. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1 -1
  93. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js.map +1 -1
  94. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +121 -216
  95. package/src/sap/fe/core/controllerextensions/editFlow/draft-dbg.js +31 -4
  96. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +1 -1
  97. package/src/sap/fe/core/controllerextensions/editFlow/draft.js.map +1 -1
  98. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +38 -3
  99. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup-dbg.js +13 -10
  100. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +1 -1
  101. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js.map +1 -1
  102. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +7 -20
  103. package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal-dbg.js +9 -4
  104. package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.js +1 -1
  105. package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.js.map +1 -1
  106. package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.ts +12 -3
  107. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade-dbg.js +10 -6
  108. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +1 -1
  109. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js.map +1 -1
  110. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +20 -11
  111. package/src/sap/fe/core/controllerextensions/editFlow/sticky-dbg.js +1 -8
  112. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +1 -1
  113. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js.map +1 -1
  114. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +0 -9
  115. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling-dbg.js +19 -15
  116. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +1 -1
  117. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js.map +1 -1
  118. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +19 -22
  119. package/src/sap/fe/core/controllerextensions/routing/RouterProxy-dbg.js +67 -1
  120. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +1 -1
  121. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js.map +1 -1
  122. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +68 -0
  123. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +2 -0
  124. package/src/sap/fe/core/controls/CommandExecution-dbg.js +4 -9
  125. package/src/sap/fe/core/controls/CommandExecution.js +1 -1
  126. package/src/sap/fe/core/controls/CommandExecution.js.map +1 -1
  127. package/src/sap/fe/core/controls/CommandExecution.ts +0 -8
  128. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block-dbg.js +335 -0
  129. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.js +6 -0
  130. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.js.map +1 -0
  131. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.tsx +336 -0
  132. package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +1 -0
  133. package/src/sap/fe/core/controls/filterbar/VisualFilter-dbg.js +3 -28
  134. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +1 -1
  135. package/src/sap/fe/core/controls/filterbar/VisualFilter.js.map +1 -1
  136. package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +8 -29
  137. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils-dbg.js +30 -1
  138. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +1 -1
  139. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js.map +1 -1
  140. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +38 -0
  141. package/src/sap/fe/core/converters/ConverterContext-dbg.js +3 -5
  142. package/src/sap/fe/core/converters/ConverterContext.js +1 -1
  143. package/src/sap/fe/core/converters/ConverterContext.js.map +1 -1
  144. package/src/sap/fe/core/converters/ConverterContext.ts +2 -5
  145. package/src/sap/fe/core/converters/ManifestSettings-dbg.js +1 -1
  146. package/src/sap/fe/core/converters/ManifestSettings.ts +7 -6
  147. package/src/sap/fe/core/converters/ManifestWrapper-dbg.js +5 -3
  148. package/src/sap/fe/core/converters/ManifestWrapper.js +1 -1
  149. package/src/sap/fe/core/converters/ManifestWrapper.js.map +1 -1
  150. package/src/sap/fe/core/converters/ManifestWrapper.ts +7 -1
  151. package/src/sap/fe/core/converters/MetaModelConverter-dbg.js +49 -28
  152. package/src/sap/fe/core/converters/MetaModelConverter.js +1 -1
  153. package/src/sap/fe/core/converters/MetaModelConverter.js.map +1 -1
  154. package/src/sap/fe/core/converters/MetaModelConverter.ts +62 -30
  155. package/src/sap/fe/core/converters/TemplateConverter-dbg.js +2 -3
  156. package/src/sap/fe/core/converters/TemplateConverter.js +1 -1
  157. package/src/sap/fe/core/converters/TemplateConverter.js.map +1 -1
  158. package/src/sap/fe/core/converters/TemplateConverter.ts +1 -6
  159. package/src/sap/fe/core/converters/annotations/DataField-dbg.js +22 -7
  160. package/src/sap/fe/core/converters/annotations/DataField.js +1 -1
  161. package/src/sap/fe/core/converters/annotations/DataField.js.map +1 -1
  162. package/src/sap/fe/core/converters/annotations/DataField.ts +20 -7
  163. package/src/sap/fe/core/converters/common/AnnotationConverter-dbg.js +701 -681
  164. package/src/sap/fe/core/converters/common/AnnotationConverter.js +1 -1
  165. package/src/sap/fe/core/converters/common/AnnotationConverter.js.map +1 -1
  166. package/src/sap/fe/core/converters/controls/Common/Action-dbg.js +6 -12
  167. package/src/sap/fe/core/converters/controls/Common/Action.js +1 -1
  168. package/src/sap/fe/core/converters/controls/Common/Action.js.map +1 -1
  169. package/src/sap/fe/core/converters/controls/Common/Action.ts +9 -14
  170. package/src/sap/fe/core/converters/controls/Common/Chart-dbg.js +32 -20
  171. package/src/sap/fe/core/converters/controls/Common/Chart.js +1 -1
  172. package/src/sap/fe/core/converters/controls/Common/Chart.js.map +1 -1
  173. package/src/sap/fe/core/converters/controls/Common/Chart.ts +30 -18
  174. package/src/sap/fe/core/converters/controls/Common/DataVisualization-dbg.js +4 -5
  175. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +1 -1
  176. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js.map +1 -1
  177. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +6 -37
  178. package/src/sap/fe/core/converters/controls/Common/Form-dbg.js +7 -6
  179. package/src/sap/fe/core/converters/controls/Common/Form.js +1 -1
  180. package/src/sap/fe/core/converters/controls/Common/Form.js.map +1 -1
  181. package/src/sap/fe/core/converters/controls/Common/Form.ts +5 -11
  182. package/src/sap/fe/core/converters/controls/Common/KPI-dbg.js +5 -5
  183. package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
  184. package/src/sap/fe/core/converters/controls/Common/KPI.js.map +1 -1
  185. package/src/sap/fe/core/converters/controls/Common/KPI.ts +3 -4
  186. package/src/sap/fe/core/converters/controls/Common/Table-dbg.js +135 -85
  187. package/src/sap/fe/core/converters/controls/Common/Table.js +1 -1
  188. package/src/sap/fe/core/converters/controls/Common/Table.js.map +1 -1
  189. package/src/sap/fe/core/converters/controls/Common/Table.ts +189 -119
  190. package/src/sap/fe/core/converters/controls/Common/table/StandardActions-dbg.js +56 -22
  191. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +1 -1
  192. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js.map +1 -1
  193. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +67 -31
  194. package/src/sap/fe/core/converters/controls/ListReport/FilterBar-dbg.js +137 -49
  195. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +1 -1
  196. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js.map +1 -1
  197. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +166 -43
  198. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters-dbg.js +33 -14
  199. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +1 -1
  200. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js.map +1 -1
  201. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +31 -12
  202. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection-dbg.js +27 -18
  203. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +1 -1
  204. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js.map +1 -1
  205. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +36 -23
  206. package/src/sap/fe/core/converters/helpers/Aggregation-dbg.js +37 -15
  207. package/src/sap/fe/core/converters/helpers/Aggregation.js +1 -1
  208. package/src/sap/fe/core/converters/helpers/Aggregation.js.map +1 -1
  209. package/src/sap/fe/core/converters/helpers/Aggregation.ts +36 -20
  210. package/src/sap/fe/core/converters/helpers/BindingHelper-dbg.js +8 -6
  211. package/src/sap/fe/core/converters/helpers/BindingHelper.js +1 -1
  212. package/src/sap/fe/core/converters/helpers/BindingHelper.js.map +1 -1
  213. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +8 -6
  214. package/src/sap/fe/core/converters/helpers/InsightsHelpers-dbg.js +39 -0
  215. package/src/sap/fe/core/converters/helpers/InsightsHelpers.js +6 -0
  216. package/src/sap/fe/core/converters/helpers/InsightsHelpers.js.map +1 -0
  217. package/src/sap/fe/core/converters/helpers/InsightsHelpers.ts +45 -0
  218. package/src/sap/fe/core/converters/helpers/IssueManager-dbg.js +3 -2
  219. package/src/sap/fe/core/converters/helpers/IssueManager.js +1 -1
  220. package/src/sap/fe/core/converters/helpers/IssueManager.js.map +1 -1
  221. package/src/sap/fe/core/converters/helpers/IssueManager.ts +2 -1
  222. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction-dbg.js +17 -16
  223. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +1 -1
  224. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js.map +1 -1
  225. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +11 -11
  226. package/src/sap/fe/core/converters/templates/ListReportConverter-dbg.js +20 -17
  227. package/src/sap/fe/core/converters/templates/ListReportConverter.js +1 -1
  228. package/src/sap/fe/core/converters/templates/ListReportConverter.js.map +1 -1
  229. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +25 -56
  230. package/src/sap/fe/core/converters/templates/ObjectPageConverter-dbg.js +13 -13
  231. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +1 -1
  232. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js.map +1 -1
  233. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +18 -13
  234. package/src/sap/fe/core/formatters/CollaborationFormatter-dbg.js +17 -33
  235. package/src/sap/fe/core/formatters/CollaborationFormatter.js +1 -1
  236. package/src/sap/fe/core/formatters/CollaborationFormatter.js.map +1 -1
  237. package/src/sap/fe/core/formatters/CollaborationFormatter.ts +27 -22
  238. package/src/sap/fe/core/formatters/TableFormatter-dbg.js +2 -6
  239. package/src/sap/fe/core/formatters/TableFormatter.js +1 -1
  240. package/src/sap/fe/core/formatters/TableFormatter.js.map +1 -1
  241. package/src/sap/fe/core/formatters/TableFormatter.ts +1 -5
  242. package/src/sap/fe/core/formatters/ValueFormatter-dbg.js +13 -5
  243. package/src/sap/fe/core/formatters/ValueFormatter.js +1 -1
  244. package/src/sap/fe/core/formatters/ValueFormatter.js.map +1 -1
  245. package/src/sap/fe/core/formatters/ValueFormatter.ts +19 -9
  246. package/src/sap/fe/core/fpm/manifest.json +1 -1
  247. package/src/sap/fe/core/helpers/BindingToolkit-dbg.js +2 -1
  248. package/src/sap/fe/core/helpers/BindingToolkit.js +1 -1
  249. package/src/sap/fe/core/helpers/BindingToolkit.js.map +1 -1
  250. package/src/sap/fe/core/helpers/BindingToolkit.ts +1 -1
  251. package/src/sap/fe/core/helpers/DeleteHelper-dbg.js +58 -35
  252. package/src/sap/fe/core/helpers/DeleteHelper.js +1 -1
  253. package/src/sap/fe/core/helpers/DeleteHelper.js.map +1 -1
  254. package/src/sap/fe/core/helpers/DeleteHelper.ts +76 -54
  255. package/src/sap/fe/core/helpers/MassEditHelper-dbg.js +8 -4
  256. package/src/sap/fe/core/helpers/MassEditHelper.js +1 -1
  257. package/src/sap/fe/core/helpers/MassEditHelper.js.map +1 -1
  258. package/src/sap/fe/core/helpers/MassEditHelper.ts +7 -5
  259. package/src/sap/fe/core/helpers/MessageStrip-dbg.js +6 -5
  260. package/src/sap/fe/core/helpers/MessageStrip.js +1 -1
  261. package/src/sap/fe/core/helpers/MessageStrip.js.map +1 -1
  262. package/src/sap/fe/core/helpers/MessageStrip.ts +4 -4
  263. package/src/sap/fe/core/helpers/MetaModelFunction-dbg.js +167 -4
  264. package/src/sap/fe/core/helpers/MetaModelFunction.js +1 -1
  265. package/src/sap/fe/core/helpers/MetaModelFunction.js.map +1 -1
  266. package/src/sap/fe/core/helpers/MetaModelFunction.ts +205 -3
  267. package/src/sap/fe/core/helpers/ModelHelper-dbg.js +37 -73
  268. package/src/sap/fe/core/helpers/ModelHelper.js +1 -1
  269. package/src/sap/fe/core/helpers/ModelHelper.js.map +1 -1
  270. package/src/sap/fe/core/helpers/ModelHelper.ts +41 -68
  271. package/src/sap/fe/core/helpers/RecommendationHelper-dbg.js +71 -0
  272. package/src/sap/fe/core/helpers/RecommendationHelper.js +6 -0
  273. package/src/sap/fe/core/helpers/RecommendationHelper.js.map +1 -0
  274. package/src/sap/fe/core/helpers/RecommendationHelper.ts +94 -0
  275. package/src/sap/fe/core/helpers/ResourceModelHelper-dbg.js +19 -3
  276. package/src/sap/fe/core/helpers/ResourceModelHelper.js +1 -1
  277. package/src/sap/fe/core/helpers/ResourceModelHelper.js.map +1 -1
  278. package/src/sap/fe/core/helpers/ResourceModelHelper.ts +21 -0
  279. package/src/sap/fe/core/helpers/SemanticDateOperators-dbg.js +40 -6
  280. package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
  281. package/src/sap/fe/core/helpers/SemanticDateOperators.js.map +1 -1
  282. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +39 -5
  283. package/src/sap/fe/core/helpers/SizeHelper-dbg.js +53 -0
  284. package/src/sap/fe/core/helpers/SizeHelper.js +6 -0
  285. package/src/sap/fe/core/helpers/SizeHelper.js.map +1 -0
  286. package/src/sap/fe/core/helpers/SizeHelper.ts +51 -0
  287. package/src/sap/fe/core/helpers/StableIdHelper-dbg.js +52 -26
  288. package/src/sap/fe/core/helpers/StableIdHelper.js +1 -1
  289. package/src/sap/fe/core/helpers/StableIdHelper.js.map +1 -1
  290. package/src/sap/fe/core/helpers/StableIdHelper.ts +49 -25
  291. package/src/sap/fe/core/helpers/TypeGuards-dbg.js +147 -1
  292. package/src/sap/fe/core/helpers/TypeGuards.js +1 -1
  293. package/src/sap/fe/core/helpers/TypeGuards.js.map +1 -1
  294. package/src/sap/fe/core/helpers/TypeGuards.ts +151 -1
  295. package/src/sap/fe/core/jsx-runtime/jsx-control-dbg.js +25 -2
  296. package/src/sap/fe/core/jsx-runtime/jsx-control.js +1 -1
  297. package/src/sap/fe/core/jsx-runtime/jsx-control.js.map +1 -1
  298. package/src/sap/fe/core/jsx-runtime/jsx-control.ts +24 -0
  299. package/src/sap/fe/core/jsx-runtime/jsx-dbg.js +1 -1
  300. package/src/sap/fe/core/jsx-runtime/jsx.ts +1 -0
  301. package/src/sap/fe/core/library-dbg.js +1 -1
  302. package/src/sap/fe/core/library-preload.js +123 -95
  303. package/src/sap/fe/core/library-preload.js.map +1 -1
  304. package/src/sap/fe/core/library.js +1 -1
  305. package/src/sap/fe/core/manifest.json +1 -1
  306. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration-dbg.js +67 -15
  307. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -1
  308. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js.map +1 -1
  309. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +66 -14
  310. package/src/sap/fe/core/messagebundle.properties +6 -6
  311. package/src/sap/fe/core/messagebundle_ar.properties +5 -6
  312. package/src/sap/fe/core/messagebundle_bg.properties +11 -12
  313. package/src/sap/fe/core/messagebundle_ca.properties +3 -4
  314. package/src/sap/fe/core/messagebundle_cs.properties +3 -4
  315. package/src/sap/fe/core/messagebundle_cy.properties +3 -4
  316. package/src/sap/fe/core/messagebundle_da.properties +3 -4
  317. package/src/sap/fe/core/messagebundle_de.properties +11 -12
  318. package/src/sap/fe/core/messagebundle_el.properties +5 -6
  319. package/src/sap/fe/core/messagebundle_en.properties +3 -4
  320. package/src/sap/fe/core/messagebundle_en_GB.properties +4 -5
  321. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +3 -4
  322. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +3 -4
  323. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +3 -2
  324. package/src/sap/fe/core/messagebundle_es.properties +3 -4
  325. package/src/sap/fe/core/messagebundle_es_MX.properties +3 -4
  326. package/src/sap/fe/core/messagebundle_et.properties +3 -4
  327. package/src/sap/fe/core/messagebundle_fi.properties +3 -4
  328. package/src/sap/fe/core/messagebundle_fr.properties +3 -4
  329. package/src/sap/fe/core/messagebundle_fr_CA.properties +11 -12
  330. package/src/sap/fe/core/messagebundle_hi.properties +11 -12
  331. package/src/sap/fe/core/messagebundle_hr.properties +3 -4
  332. package/src/sap/fe/core/messagebundle_hu.properties +3 -4
  333. package/src/sap/fe/core/messagebundle_id.properties +11 -12
  334. package/src/sap/fe/core/messagebundle_it.properties +3 -4
  335. package/src/sap/fe/core/messagebundle_iw.properties +3 -4
  336. package/src/sap/fe/core/messagebundle_ja.properties +4 -5
  337. package/src/sap/fe/core/messagebundle_kk.properties +3 -4
  338. package/src/sap/fe/core/messagebundle_ko.properties +11 -12
  339. package/src/sap/fe/core/messagebundle_lt.properties +3 -4
  340. package/src/sap/fe/core/messagebundle_lv.properties +11 -12
  341. package/src/sap/fe/core/messagebundle_ms.properties +3 -4
  342. package/src/sap/fe/core/messagebundle_nl.properties +3 -4
  343. package/src/sap/fe/core/messagebundle_no.properties +3 -4
  344. package/src/sap/fe/core/messagebundle_pl.properties +11 -12
  345. package/src/sap/fe/core/messagebundle_pt.properties +3 -4
  346. package/src/sap/fe/core/messagebundle_pt_PT.properties +3 -4
  347. package/src/sap/fe/core/messagebundle_ro.properties +14 -15
  348. package/src/sap/fe/core/messagebundle_ru.properties +11 -12
  349. package/src/sap/fe/core/messagebundle_sh.properties +3 -4
  350. package/src/sap/fe/core/messagebundle_sk.properties +3 -4
  351. package/src/sap/fe/core/messagebundle_sl.properties +3 -4
  352. package/src/sap/fe/core/messagebundle_sv.properties +11 -12
  353. package/src/sap/fe/core/messagebundle_th.properties +3 -4
  354. package/src/sap/fe/core/messagebundle_tr.properties +3 -4
  355. package/src/sap/fe/core/messagebundle_uk.properties +3 -4
  356. package/src/sap/fe/core/messagebundle_vi.properties +3 -4
  357. package/src/sap/fe/core/messagebundle_zh_CN.properties +11 -12
  358. package/src/sap/fe/core/messagebundle_zh_TW.properties +11 -12
  359. package/src/sap/fe/core/rootView/RootViewBaseController-dbg.js +22 -8
  360. package/src/sap/fe/core/rootView/RootViewBaseController.js +1 -1
  361. package/src/sap/fe/core/rootView/RootViewBaseController.js.map +1 -1
  362. package/src/sap/fe/core/rootView/RootViewBaseController.ts +17 -7
  363. package/src/sap/fe/core/services/EnvironmentServiceFactory-dbg.js +36 -3
  364. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -1
  365. package/src/sap/fe/core/services/EnvironmentServiceFactory.js.map +1 -1
  366. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +37 -1
  367. package/src/sap/fe/core/services/NavigationServiceFactory-dbg.js +13 -1
  368. package/src/sap/fe/core/services/NavigationServiceFactory.js +1 -1
  369. package/src/sap/fe/core/services/NavigationServiceFactory.js.map +1 -1
  370. package/src/sap/fe/core/services/NavigationServiceFactory.ts +13 -0
  371. package/src/sap/fe/core/services/RoutingServiceFactory-dbg.js +7 -1
  372. package/src/sap/fe/core/services/RoutingServiceFactory.js +1 -1
  373. package/src/sap/fe/core/services/RoutingServiceFactory.js.map +1 -1
  374. package/src/sap/fe/core/services/RoutingServiceFactory.ts +20 -2
  375. package/src/sap/fe/core/services/ShellServicesFactory-dbg.js +7 -1
  376. package/src/sap/fe/core/services/ShellServicesFactory.js +1 -1
  377. package/src/sap/fe/core/services/ShellServicesFactory.js.map +1 -1
  378. package/src/sap/fe/core/services/ShellServicesFactory.ts +10 -0
  379. package/src/sap/fe/core/services/SideEffectsServiceFactory-dbg.js +10 -7
  380. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +1 -1
  381. package/src/sap/fe/core/services/SideEffectsServiceFactory.js.map +1 -1
  382. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +12 -13
  383. package/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +9 -3
  384. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +1 -1
  385. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js.map +1 -1
  386. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +11 -15
  387. package/src/sap/fe/core/templating/CommonFormatters-dbg.js +4 -3
  388. package/src/sap/fe/core/templating/CommonFormatters.js +1 -1
  389. package/src/sap/fe/core/templating/CommonFormatters.js.map +1 -1
  390. package/src/sap/fe/core/templating/CommonFormatters.ts +2 -2
  391. package/src/sap/fe/core/templating/CriticalityFormatters-dbg.js +1 -1
  392. package/src/sap/fe/core/templating/CriticalityFormatters.ts +2 -2
  393. package/src/sap/fe/core/templating/DataModelPathHelper-dbg.js +19 -18
  394. package/src/sap/fe/core/templating/DataModelPathHelper.js +1 -1
  395. package/src/sap/fe/core/templating/DataModelPathHelper.js.map +1 -1
  396. package/src/sap/fe/core/templating/DataModelPathHelper.ts +24 -18
  397. package/src/sap/fe/core/templating/DisplayModeFormatter-dbg.js +5 -5
  398. package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
  399. package/src/sap/fe/core/templating/DisplayModeFormatter.js.map +1 -1
  400. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +2 -2
  401. package/src/sap/fe/core/templating/EntitySetHelper-dbg.js +19 -28
  402. package/src/sap/fe/core/templating/EntitySetHelper.js +1 -1
  403. package/src/sap/fe/core/templating/EntitySetHelper.js.map +1 -1
  404. package/src/sap/fe/core/templating/EntitySetHelper.ts +14 -24
  405. package/src/sap/fe/core/templating/EntityTypeHelper-dbg.js +48 -0
  406. package/src/sap/fe/core/templating/EntityTypeHelper.js +6 -0
  407. package/src/sap/fe/core/templating/EntityTypeHelper.js.map +1 -0
  408. package/src/sap/fe/core/templating/EntityTypeHelper.ts +37 -0
  409. package/src/sap/fe/core/templating/FilterHelper-dbg.js +12 -1
  410. package/src/sap/fe/core/templating/FilterHelper.js +1 -1
  411. package/src/sap/fe/core/templating/FilterHelper.js.map +1 -1
  412. package/src/sap/fe/core/templating/FilterHelper.ts +12 -0
  413. package/src/sap/fe/core/templating/FilterTemplating-dbg.js +7 -8
  414. package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
  415. package/src/sap/fe/core/templating/FilterTemplating.js.map +1 -1
  416. package/src/sap/fe/core/templating/FilterTemplating.ts +5 -8
  417. package/src/sap/fe/core/templating/PropertyFormatters-dbg.js +1 -6
  418. package/src/sap/fe/core/templating/PropertyFormatters.js +1 -1
  419. package/src/sap/fe/core/templating/PropertyFormatters.js.map +1 -1
  420. package/src/sap/fe/core/templating/PropertyFormatters.ts +0 -5
  421. package/src/sap/fe/core/templating/PropertyHelper-dbg.js +13 -46
  422. package/src/sap/fe/core/templating/PropertyHelper.js +1 -1
  423. package/src/sap/fe/core/templating/PropertyHelper.js.map +1 -1
  424. package/src/sap/fe/core/templating/PropertyHelper.ts +14 -43
  425. package/src/sap/fe/core/templating/UIFormatters-dbg.js +32 -26
  426. package/src/sap/fe/core/templating/UIFormatters.js +1 -1
  427. package/src/sap/fe/core/templating/UIFormatters.js.map +1 -1
  428. package/src/sap/fe/core/templating/UIFormatters.ts +45 -34
  429. package/src/sap/fe/core/controls/ActionPartial.fragment.xml +0 -91
  430. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossDraft.fragment.xml +0 -59
  431. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler-dbg.js +0 -171
  432. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +0 -6
  433. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js.map +0 -1
  434. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +0 -184
@@ -6,6 +6,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
6
6
  "use strict";
7
7
 
8
8
  var _exports = {};
9
+ var getActivityKeyFromPath = CollaborationCommon.getActivityKeyFromPath;
9
10
  var CollaborationUtils = CollaborationCommon.CollaborationUtils;
10
11
  var Activity = CollaborationCommon.Activity;
11
12
  var isCollaborationConnected = ActivityBase.isCollaborationConnected;
@@ -169,7 +170,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
169
170
  break;
170
171
  case Activity.LiveChange:
171
172
  mactivity = sender;
172
- mactivity.key = getActivityKey(message.clientContent);
173
+ mactivity.key = getActivityKeyFromPath(message.clientContent);
173
174
 
174
175
  // stupid JSON model...
175
176
  let initJSONModel = "";
@@ -188,7 +189,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
188
189
  case Activity.Undo:
189
190
  // The user did a change but reverted it, therefore unblock the control
190
191
  activities = internalModel.getProperty(ACTIVITIES + metaPath);
191
- activityKey = getActivityKey(message.clientContent);
192
+ activityKey = getActivityKeyFromPath(message.clientContent);
192
193
  internalModel.setProperty(ACTIVITIES + metaPath, activities.filter(a => a.key !== activityKey));
193
194
  break;
194
195
  }
@@ -227,7 +228,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
227
228
  updatedObjectsPaths.forEach(updatedPath => {
228
229
  var _currentActivities;
229
230
  const updatedMetaPath = metaModel.getMetaPath(updatedPath);
230
- const activityKey = getActivityKey(updatedPath);
231
+ const activityKey = getActivityKeyFromPath(updatedPath);
231
232
  let currentActivities = internalModel.getProperty(ACTIVITIES + updatedMetaPath) || [];
232
233
  currentActivities = ((_currentActivities = currentActivities) === null || _currentActivities === void 0 ? void 0 : _currentActivities.filter) && currentActivities.filter(activity => activity.key !== activityKey);
233
234
  if (currentActivities) {
@@ -382,9 +383,11 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
382
383
  const actionName = message.clientTriggeredActionName || "";
383
384
  const requestedProperties = (_message$clientReques = message.clientRequestedProperties) === null || _message$clientReques === void 0 ? void 0 : _message$clientReques.split("|");
384
385
  const refreshListBinding = message.clientRefreshListBinding === "true";
385
- const requestPromises = pathsForAction.map(path => requestUpdateForAction(view, path, actionName, requestedProperties));
386
+ let requestPromises = [];
386
387
  if (refreshListBinding) {
387
388
  requestPromises.push(applyUpdatesForCollection(view, pathsForAction[0]));
389
+ } else {
390
+ requestPromises = pathsForAction.map(path => requestUpdateForAction(view, path, actionName, requestedProperties));
388
391
  }
389
392
 
390
393
  // Simulate any change so the edit flow shows the draft indicator and sets the page to dirty
@@ -486,9 +489,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
486
489
  const appComponent = CollaborationUtils.getAppComponent(view);
487
490
  return CommonUtils.getCurrentPageView(appComponent);
488
491
  }
489
- function getActivityKey(x) {
490
- return x.substring(x.lastIndexOf("(") + 1, x.lastIndexOf(")"));
491
- }
492
492
 
493
493
  /**
494
494
  * Calculates the metapath from one or more data path(s).
@@ -514,4 +514,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
514
514
  send: send
515
515
  };
516
516
  }, false);
517
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNWUFDVElWSVRZIiwiQUNUSVZFVVNFUlMiLCJBQ1RJVklUSUVTIiwiU1lOQ0dST1VQSUQiLCJpc0Nvbm5lY3RlZCIsImNvbnRyb2wiLCJpbnRlcm5hbE1vZGVsIiwiZ2V0TW9kZWwiLCJpc0NvbGxhYm9yYXRpb25Db25uZWN0ZWQiLCJzZW5kIiwiYWN0aW9uIiwiY29udGVudCIsInRyaWdnZXJlZEFjdGlvbk5hbWUiLCJyZWZyZXNoTGlzdEJpbmRpbmciLCJhY3Rpb25SZXF1ZXN0ZWRQcm9wZXJ0aWVzIiwiY2xpZW50Q29udGVudCIsIkFycmF5IiwiaXNBcnJheSIsImpvaW4iLCJyZXF1ZXN0ZWRQcm9wZXJ0aWVzIiwibXlBY3Rpdml0eSIsImdldFByb3BlcnR5IiwiQWN0aXZpdHkiLCJMaXZlQ2hhbmdlIiwic2V0UHJvcGVydHkiLCJVbmRvIiwiYnJvYWRjYXN0Q29sbGFib3JhdGlvbk1lc3NhZ2UiLCJnZXRXZWJTb2NrZXRCYXNlVVJMIiwiYmluZGluZ0NvbnRleHQiLCJnZXRNZXRhTW9kZWwiLCJnZXRPYmplY3QiLCJpc0NvbGxhYm9yYXRpb25FbmFibGVkIiwidmlldyIsImdldEJpbmRpbmdDb250ZXh0IiwiY29ubmVjdCIsIm1lIiwiQ29sbGFib3JhdGlvblV0aWxzIiwiZ2V0TWUiLCJ3ZWJTb2NrZXRCYXNlVVJMIiwic2VydmljZVVybCIsImdldFNlcnZpY2VVcmwiLCJzRHJhZnRVVUlEIiwicmVxdWVzdFByb3BlcnR5IiwiaW5pdGlhbGl6ZUNvbGxhYm9yYXRpb24iLCJtZXNzYWdlIiwibWVzc2FnZVJlY2VpdmUiLCJkaXNjb25uZWN0IiwiZW5kQ29sbGFib3JhdGlvbiIsImFjdGl2ZVVzZXJzIiwiYWN0aXZpdGllcyIsImFjdGl2aXR5S2V5IiwibWV0YVBhdGgiLCJjYWxjdWxhdGVNZXRhUGF0aCIsInVzZXJBY3Rpb24iLCJjbGllbnRBY3Rpb24iLCJzZW5kZXIiLCJpZCIsInVzZXJJRCIsIm5hbWUiLCJ1c2VyRGVzY3JpcHRpb24iLCJpbml0aWFscyIsImZvcm1hdEluaXRpYWxzIiwiY29sb3IiLCJnZXRVc2VyQ29sb3IiLCJtYWN0aXZpdHkiLCJKb2luIiwiSm9pbkVjaG8iLCJmaW5kSW5kZXgiLCJ1c2VyIiwidW5zaGlmdCIsIkxlYXZlIiwiZmlsdGVyIiwiYWxsQWN0aXZpdGllcyIsInJlbW92ZVVzZXJBY3Rpdml0aWVzIiwiYmFnIiwiYWN0aXZpdHkiLCJwIiwiQ2hhbmdlIiwidXBkYXRlT25DaGFuZ2UiLCJDcmVhdGUiLCJ1cGRhdGVPbkNyZWF0ZSIsIkRlbGV0ZSIsInVwZGF0ZU9uRGVsZXRlIiwiQWN0aXZhdGUiLCJkcmFmdENsb3NlZEJ5T3RoZXJVc2VyIiwiZ2V0VGV4dCIsIkRpc2NhcmQiLCJBY3Rpb24iLCJ1cGRhdGVPbkFjdGlvbiIsImtleSIsImdldEFjdGl2aXR5S2V5IiwiaW5pdEpTT05Nb2RlbCIsInBhcnRzIiwic3BsaXQiLCJpIiwibGVuZ3RoIiwic2xpY2UiLCJwdXNoIiwiYSIsInBhdGgiLCJtZXNzYWdlVGV4dCIsIk1lc3NhZ2VCb3giLCJpbmZvcm1hdGlvbiIsImdldEJpbmRpbmciLCJyZXNldENoYW5nZXMiLCJ0aGVuIiwibmF2aWdhdGUiLCJjYXRjaCIsIkxvZyIsImVycm9yIiwidXBkYXRlZE9iamVjdHNQYXRocyIsIm1ldGFNb2RlbCIsImZvckVhY2giLCJ1cGRhdGVkUGF0aCIsInVwZGF0ZWRNZXRhUGF0aCIsImdldE1ldGFQYXRoIiwiY3VycmVudEFjdGl2aXRpZXMiLCJjdXJyZW50UGFnZSIsImdldEN1cnJlbnRQYWdlIiwiY3VycmVudENvbnRleHQiLCJyZXF1ZXN0UHJvbWlzZXMiLCJtYXAiLCJhcHBseVVwZGF0ZXNGb3JDaGFuZ2UiLCJnZXRDb250cm9sbGVyIiwiZWRpdEZsb3ciLCJ1cGRhdGVEb2N1bWVudCIsIlByb21pc2UiLCJhbGwiLCJwcm9wZXJ0eVBhdGhGb3JVcGRhdGUiLCJtZXRhQ29udGV4dCIsImdldE1ldGFDb250ZXh0IiwiZGF0YU1vZGVsT2JqZWN0IiwiTWV0YU1vZGVsQ29udmVydGVyIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwidGFyZ2V0Q29udGV4dFBhdGgiLCJzdWJzdHJpbmciLCJsYXN0SW5kZXhPZiIsInRhcmdldENvbnRleHQiLCJmaW5kQ29udGV4dEZvclVwZGF0ZSIsInBhcmVudENvbGxlY3Rpb25QYXRoIiwicGFyZW50Q29udGV4dFBhdGgiLCJwYXJlbnRDb250ZXh0IiwidW5kZWZpbmVkIiwic2lkZUVmZmVjdHNQcm9taXNlcyIsInNpZGVFZmZlY3RzU2VydmljZSIsImdldEFwcENvbXBvbmVudCIsImdldFNpZGVFZmZlY3RzU2VydmljZSIsInRhcmdldE1ldGFQYXRoIiwiZ2V0UGF0aCIsInJlbGF0aXZlTWV0YVBhdGhGb3JVcGRhdGUiLCJyZXBsYWNlIiwicmVxdWVzdFNpZGVFZmZlY3RzIiwiZmllbGRHcm91cElkcyIsImNvbXB1dGVGaWVsZEdyb3VwSWRzIiwidGFyZ2V0RW50aXR5VHlwZSIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsInRhcmdldE9iamVjdCIsInBhZ2VDb250cm9sbGVyIiwic2lkZUVmZmVjdHNNYXBGb3JGaWVsZEdyb3VwIiwiX3NpZGVFZmZlY3RzIiwiZ2V0U2lkZUVmZmVjdHNNYXBGb3JGaWVsZEdyb3VwcyIsIk9iamVjdCIsImtleXMiLCJzaWRlRWZmZWN0TmFtZSIsInNpZGVFZmZlY3QiLCJzaWRlRWZmZWN0cyIsImNvbnRleHQiLCJlcnIiLCJjdXJyZW50UGF0aCIsImRlbGV0ZWRPYmplY3RQYXRocyIsImRlbGV0ZWRQYXRoSW5Vc2UiLCJmaW5kIiwiZGVsZXRlZFBhdGgiLCJzdGFydHNXaXRoIiwib25DbG9zZSIsImdldEtlZXBBbGl2ZUNvbnRleHQiLCJzZXRLZWVwQWxpdmUiLCJyZXF1ZXN0UHJvbWlzZSIsImFwcGx5VXBkYXRlc0ZvckNvbGxlY3Rpb24iLCJfcm91dGluZyIsIm5hdmlnYXRlQmFja0Zyb21Db250ZXh0IiwiY3JlYXRlZE9iamVjdFBhdGhzIiwicGF0aEluQ29sbGVjdGlvbiIsImFwcENvbXBvbmVudCIsInBhcmVudFBhdGgiLCJtZXRhUGF0aEZvclVwZGF0ZSIsInBhcmVudE1ldGFQYXRoIiwicmVsYXRpdmVQYXRoIiwicmVxdWVzdFNpZGVFZmZlY3RzRm9yTmF2aWdhdGlvblByb3BlcnR5IiwicGF0aHNGb3JBY3Rpb24iLCJhY3Rpb25OYW1lIiwiY2xpZW50VHJpZ2dlcmVkQWN0aW9uTmFtZSIsImNsaWVudFJlcXVlc3RlZFByb3BlcnRpZXMiLCJjbGllbnRSZWZyZXNoTGlzdEJpbmRpbmciLCJyZXF1ZXN0VXBkYXRlRm9yQWN0aW9uIiwicGF0aEZvckFjdGlvbiIsInNpZGVFZmZlY3RTZXJ2aWNlIiwic2lkZUVmZmVjdHNGcm9tQWN0aW9uIiwiZ2V0T0RhdGFBY3Rpb25TaWRlRWZmZWN0cyIsInNpZGVFZmZlY3RQcm9taXNlcyIsInBhdGhFeHByZXNzaW9ucyIsIm1ldGFQYXRoRm9yQWN0aW9uIiwiZGF0YU1vZGVsUGF0aCIsImdldENvbnRleHQiLCJwcm9wZXJ0aWVzVG9SZXF1ZXN0IiwiZW50aXR5UHJvcGVydGllcyIsInByb3BlcnR5IiwicHJvcCIsImluY2x1ZGVzIiwidGFyZ2V0UGF0aHMiLCJlbmRzV2l0aCIsImluZGV4T2YiLCJtb2RlbCIsInBhcmVudExpc3RCaW5kaW5nIiwiZ2V0QWxsQmluZGluZ3MiLCJiaW5kaW5nIiwiYmluZGluZ1BhdGgiLCJpc1JlbGF0aXZlIiwiZ2V0UmVzb2x2ZWRQYXRoIiwiaXNBIiwiZ2V0QWxsQ3VycmVudENvbnRleHRzIiwiYmluZENvbnRleHQiLCJnZXRCb3VuZENvbnRleHQiLCJyb3V0aW5nIiwiQ29tbW9uVXRpbHMiLCJnZXRDdXJyZW50UGFnZVZpZXciLCJ4IiwiZGF0YVBhdGgiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkFjdGl2aXR5U3luYy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQge1xuXHRicm9hZGNhc3RDb2xsYWJvcmF0aW9uTWVzc2FnZSxcblx0ZW5kQ29sbGFib3JhdGlvbixcblx0aW5pdGlhbGl6ZUNvbGxhYm9yYXRpb24sXG5cdGlzQ29sbGFib3JhdGlvbkNvbm5lY3RlZFxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvY29sbGFib3JhdGlvbi9BY3Rpdml0eUJhc2VcIjtcbmltcG9ydCB0eXBlIHsgTWVzc2FnZSwgVXNlciwgVXNlckFjdGl2aXR5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2NvbGxhYm9yYXRpb24vQ29sbGFib3JhdGlvbkNvbW1vblwiO1xuaW1wb3J0IHsgQWN0aXZpdHksIENvbGxhYm9yYXRpb25VdGlscyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9jb2xsYWJvcmF0aW9uL0NvbGxhYm9yYXRpb25Db21tb25cIjtcbmltcG9ydCB7IEZpZWxkU2lkZUVmZmVjdERpY3Rpb25hcnkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvU2lkZUVmZmVjdHNcIjtcbmltcG9ydCAqIGFzIE1ldGFNb2RlbENvbnZlcnRlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCBNZXNzYWdlQm94IGZyb20gXCJzYXAvbS9NZXNzYWdlQm94XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IHR5cGUgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IE9EYXRhTGlzdEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUxpc3RCaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgT0RhdGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTW9kZWxcIjtcblxuY29uc3QgTVlBQ1RJVklUWSA9IFwiL2NvbGxhYm9yYXRpb24vbXlBY3Rpdml0eVwiO1xuY29uc3QgQUNUSVZFVVNFUlMgPSBcIi9jb2xsYWJvcmF0aW9uL2FjdGl2ZVVzZXJzXCI7XG5jb25zdCBBQ1RJVklUSUVTID0gXCIvY29sbGFib3JhdGlvbi9hY3Rpdml0aWVzXCI7XG5jb25zdCBTWU5DR1JPVVBJRCA9IFwiJGF1dG8uc3luY1wiO1xuXG5leHBvcnQgY29uc3QgaXNDb25uZWN0ZWQgPSBmdW5jdGlvbiAoY29udHJvbDogQ29udHJvbCk6IGJvb2xlYW4ge1xuXHRjb25zdCBpbnRlcm5hbE1vZGVsID0gY29udHJvbC5nZXRNb2RlbChcImludGVybmFsXCIpIGFzIEpTT05Nb2RlbDtcblx0cmV0dXJuIGlzQ29sbGFib3JhdGlvbkNvbm5lY3RlZChpbnRlcm5hbE1vZGVsKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZW5kID0gZnVuY3Rpb24gKFxuXHRjb250cm9sOiBDb250cm9sLFxuXHRhY3Rpb246IEFjdGl2aXR5LFxuXHRjb250ZW50OiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZCxcblx0dHJpZ2dlcmVkQWN0aW9uTmFtZT86IHN0cmluZyxcblx0cmVmcmVzaExpc3RCaW5kaW5nPzogYm9vbGVhbixcblx0YWN0aW9uUmVxdWVzdGVkUHJvcGVydGllcz86IHN0cmluZ1tdXG4pIHtcblx0aWYgKGlzQ29ubmVjdGVkKGNvbnRyb2wpKSB7XG5cdFx0Y29uc3QgaW50ZXJuYWxNb2RlbCA9IGNvbnRyb2wuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWw7XG5cdFx0Y29uc3QgY2xpZW50Q29udGVudCA9IEFycmF5LmlzQXJyYXkoY29udGVudCkgPyBjb250ZW50LmpvaW4oXCJ8XCIpIDogY29udGVudDtcblx0XHRjb25zdCByZXF1ZXN0ZWRQcm9wZXJ0aWVzID0gYWN0aW9uUmVxdWVzdGVkUHJvcGVydGllcz8uam9pbihcInxcIik7XG5cdFx0Y29uc3QgbXlBY3Rpdml0eSA9IGludGVybmFsTW9kZWwuZ2V0UHJvcGVydHkoTVlBQ1RJVklUWSk7XG5cdFx0aWYgKGFjdGlvbiA9PT0gQWN0aXZpdHkuTGl2ZUNoYW5nZSkge1xuXHRcdFx0Ly8gVG8gYXZvaWQgdW5uZWNlc3NhcnkgdHJhZmZpYyB3ZSBrZWVwIHRyYWNrIG9mIGxpdmUgY2hhbmdlcyBhbmQgc2VuZCBpdCBvbmx5IG9uY2VcblxuXHRcdFx0aWYgKG15QWN0aXZpdHkgPT09IGNsaWVudENvbnRlbnQpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aW50ZXJuYWxNb2RlbC5zZXRQcm9wZXJ0eShNWUFDVElWSVRZLCBjbGllbnRDb250ZW50KTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gTm8gbmVlZCB0byBzZW5kIGFuIFVuZG8gbWVzc2FnZSBpZiB0aGVyZSdzIG5vIGN1cnJlbnQgYWN0aXZpdHlcblx0XHRcdGlmIChhY3Rpb24gPT09IEFjdGl2aXR5LlVuZG8gJiYgbXlBY3Rpdml0eSA9PT0gbnVsbCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vIHVzZXIgZmluaXNoZWQgdGhlIGFjdGl2aXR5XG5cdFx0XHRpbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KE1ZQUNUSVZJVFksIG51bGwpO1xuXHRcdH1cblxuXHRcdGJyb2FkY2FzdENvbGxhYm9yYXRpb25NZXNzYWdlKGFjdGlvbiwgY2xpZW50Q29udGVudCwgaW50ZXJuYWxNb2RlbCwgdHJpZ2dlcmVkQWN0aW9uTmFtZSwgcmVmcmVzaExpc3RCaW5kaW5nLCByZXF1ZXN0ZWRQcm9wZXJ0aWVzKTtcblx0fVxufTtcblxuY29uc3QgZ2V0V2ViU29ja2V0QmFzZVVSTCA9IGZ1bmN0aW9uIChiaW5kaW5nQ29udGV4dDogQ29udGV4dCk6IHN0cmluZyB7XG5cdHJldHVybiBiaW5kaW5nQ29udGV4dC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpLmdldE9iamVjdChcIi9AY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLldlYlNvY2tldEJhc2VVUkxcIik7XG59O1xuXG5leHBvcnQgY29uc3QgaXNDb2xsYWJvcmF0aW9uRW5hYmxlZCA9IGZ1bmN0aW9uICh2aWV3OiBWaWV3KTogYm9vbGVhbiB7XG5cdGNvbnN0IGJpbmRpbmdDb250ZXh0ID0gdmlldz8uZ2V0QmluZGluZ0NvbnRleHQgJiYgKHZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0KTtcblx0cmV0dXJuICEhKGJpbmRpbmdDb250ZXh0ICYmIGdldFdlYlNvY2tldEJhc2VVUkwoYmluZGluZ0NvbnRleHQpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb25uZWN0ID0gYXN5bmMgZnVuY3Rpb24gKHZpZXc6IFZpZXcpIHtcblx0Y29uc3QgaW50ZXJuYWxNb2RlbCA9IHZpZXcuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWw7XG5cdGNvbnN0IG1lID0gQ29sbGFib3JhdGlvblV0aWxzLmdldE1lKHZpZXcpO1xuXG5cdC8vIFJldHJpZXZpbmcgTUUgZnJvbSBzaGVsbCBzZXJ2aWNlXG5cdGlmICghbWUpIHtcblx0XHQvLyBubyBtZSA9IG5vIHNoZWxsID0gbm90IHN1cmUgd2hhdCB0byBkb1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGNvbnN0IGJpbmRpbmdDb250ZXh0ID0gdmlldy5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQ7XG5cdGNvbnN0IHdlYlNvY2tldEJhc2VVUkwgPSBnZXRXZWJTb2NrZXRCYXNlVVJMKGJpbmRpbmdDb250ZXh0KTtcblx0Y29uc3Qgc2VydmljZVVybCA9IGJpbmRpbmdDb250ZXh0LmdldE1vZGVsKCkuZ2V0U2VydmljZVVybCgpO1xuXG5cdGlmICghd2ViU29ja2V0QmFzZVVSTCkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGNvbnN0IHNEcmFmdFVVSUQgPSBhd2FpdCBiaW5kaW5nQ29udGV4dC5yZXF1ZXN0UHJvcGVydHkoXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9EcmFmdFVVSURcIik7XG5cdGlmICghc0RyYWZ0VVVJRCkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGluaXRpYWxpemVDb2xsYWJvcmF0aW9uKG1lLCB3ZWJTb2NrZXRCYXNlVVJMLCBzRHJhZnRVVUlELCBzZXJ2aWNlVXJsLCBpbnRlcm5hbE1vZGVsLCAobWVzc2FnZTogTWVzc2FnZSkgPT4ge1xuXHRcdG1lc3NhZ2VSZWNlaXZlKG1lc3NhZ2UsIHZpZXcpO1xuXHR9KTtcblx0aW50ZXJuYWxNb2RlbC5zZXRQcm9wZXJ0eShNWUFDVElWSVRZLCBudWxsKTtcbn07XG5cbmV4cG9ydCBjb25zdCBkaXNjb25uZWN0ID0gZnVuY3Rpb24gKGNvbnRyb2w6IENvbnRyb2wpIHtcblx0Y29uc3QgaW50ZXJuYWxNb2RlbCA9IGNvbnRyb2wuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWw7XG5cdGVuZENvbGxhYm9yYXRpb24oaW50ZXJuYWxNb2RlbCk7XG59O1xuXG4vKipcbiAqIENhbGxiYWNrIHdoZW4gYSBtZXNzYWdlIGlzIHJlY2VpdmVkIGZyb20gdGhlIHdlYnNvY2tldC5cbiAqXG4gKiBAcGFyYW0gbWVzc2FnZSBUaGUgbWVzc2FnZSByZWNlaXZlZFxuICogQHBhcmFtIHZpZXcgVGhlIHZpZXcgdGhhdCB3YXMgdXNlZCBpbml0aWFsbHkgd2hlbiBjb25uZWN0aW5nIHRoZSB3ZWJzb2NrZXRcbiAqL1xuZnVuY3Rpb24gbWVzc2FnZVJlY2VpdmUobWVzc2FnZTogTWVzc2FnZSwgdmlldzogVmlldykge1xuXHRjb25zdCBpbnRlcm5hbE1vZGVsOiBhbnkgPSB2aWV3LmdldE1vZGVsKFwiaW50ZXJuYWxcIik7XG5cdGxldCBhY3RpdmVVc2VyczogVXNlcltdID0gaW50ZXJuYWxNb2RlbC5nZXRQcm9wZXJ0eShBQ1RJVkVVU0VSUyk7XG5cdGxldCBhY3Rpdml0aWVzOiBVc2VyQWN0aXZpdHlbXTtcblx0bGV0IGFjdGl2aXR5S2V5OiBzdHJpbmc7XG5cdGNvbnN0IG1ldGFQYXRoID0gY2FsY3VsYXRlTWV0YVBhdGgodmlldywgbWVzc2FnZS5jbGllbnRDb250ZW50KTtcblx0bWVzc2FnZS51c2VyQWN0aW9uID0gbWVzc2FnZS51c2VyQWN0aW9uIHx8IG1lc3NhZ2UuY2xpZW50QWN0aW9uO1xuXG5cdGNvbnN0IHNlbmRlcjogVXNlciA9IHtcblx0XHRpZDogbWVzc2FnZS51c2VySUQsXG5cdFx0bmFtZTogbWVzc2FnZS51c2VyRGVzY3JpcHRpb24sXG5cdFx0aW5pdGlhbHM6IENvbGxhYm9yYXRpb25VdGlscy5mb3JtYXRJbml0aWFscyhtZXNzYWdlLnVzZXJEZXNjcmlwdGlvbiksXG5cdFx0Y29sb3I6IENvbGxhYm9yYXRpb25VdGlscy5nZXRVc2VyQ29sb3IobWVzc2FnZS51c2VySUQsIGFjdGl2ZVVzZXJzLCBbXSlcblx0fTtcblxuXHRsZXQgbWFjdGl2aXR5OiBVc2VyQWN0aXZpdHkgPSBzZW5kZXI7XG5cblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlZmF1bHQtY2FzZVxuXHRzd2l0Y2ggKG1lc3NhZ2UudXNlckFjdGlvbikge1xuXHRcdGNhc2UgQWN0aXZpdHkuSm9pbjpcblx0XHRjYXNlIEFjdGl2aXR5LkpvaW5FY2hvOlxuXHRcdFx0aWYgKGFjdGl2ZVVzZXJzLmZpbmRJbmRleCgodXNlcikgPT4gdXNlci5pZCA9PT0gc2VuZGVyLmlkKSA9PT0gLTEpIHtcblx0XHRcdFx0YWN0aXZlVXNlcnMudW5zaGlmdChzZW5kZXIpO1xuXHRcdFx0XHRpbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KEFDVElWRVVTRVJTLCBhY3RpdmVVc2Vycyk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChtZXNzYWdlLnVzZXJBY3Rpb24gPT09IEFjdGl2aXR5LkpvaW4pIHtcblx0XHRcdFx0Ly8gd2UgZWNobyBvdXIgZXhpc3RlbmNlIHRvIHRoZSBuZXdseSBlbnRlcmVkIHVzZXIgYW5kIGFsc28gc2VuZCB0aGUgY3VycmVudCBhY3Rpdml0eSBpZiB0aGVyZSBpcyBhbnlcblx0XHRcdFx0YnJvYWRjYXN0Q29sbGFib3JhdGlvbk1lc3NhZ2UoQWN0aXZpdHkuSm9pbkVjaG8sIGludGVybmFsTW9kZWwuZ2V0UHJvcGVydHkoTVlBQ1RJVklUWSksIGludGVybmFsTW9kZWwpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAobWVzc2FnZS51c2VyQWN0aW9uID09PSBBY3Rpdml0eS5Kb2luRWNobykge1xuXHRcdFx0XHRpZiAobWVzc2FnZS5jbGllbnRDb250ZW50KSB7XG5cdFx0XHRcdFx0Ly8gYW5vdGhlciB1c2VyIHdhcyBhbHJlYWR5IHR5cGluZyB0aGVyZWZvcmUgSSB3YW50IHRvIHNlZSBoaXMgYWN0aXZpdHkgaW1tZWRpYXRlbHkuIENhbGxpbmcgbWUgYWdhaW4gYXMgYSBsaXZlIGNoYW5nZVxuXHRcdFx0XHRcdG1lc3NhZ2UudXNlckFjdGlvbiA9IEFjdGl2aXR5LkxpdmVDaGFuZ2U7XG5cdFx0XHRcdFx0bWVzc2FnZVJlY2VpdmUobWVzc2FnZSwgdmlldyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlIEFjdGl2aXR5LkxlYXZlOlxuXHRcdFx0Ly8gUmVtb3ZpbmcgdGhlIGFjdGl2ZSB1c2VyLiBOb3QgcmVtb3ZpbmcgXCJtZVwiIGlmIEkgaGFkIHRoZSBzY3JlZW4gb3BlbiBpbiBhbm90aGVyIHNlc3Npb25cblx0XHRcdGFjdGl2ZVVzZXJzID0gYWN0aXZlVXNlcnMuZmlsdGVyKCh1c2VyKSA9PiB1c2VyLmlkICE9PSBzZW5kZXIuaWQgfHwgdXNlci5tZSk7XG5cdFx0XHRpbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KEFDVElWRVVTRVJTLCBhY3RpdmVVc2Vycyk7XG5cdFx0XHRjb25zdCBhbGxBY3Rpdml0aWVzID0gaW50ZXJuYWxNb2RlbC5nZXRQcm9wZXJ0eShBQ1RJVklUSUVTKSB8fCB7fTtcblx0XHRcdGNvbnN0IHJlbW92ZVVzZXJBY3Rpdml0aWVzID0gZnVuY3Rpb24gKGJhZzogYW55KSB7XG5cdFx0XHRcdGlmIChBcnJheS5pc0FycmF5KGJhZykpIHtcblx0XHRcdFx0XHRyZXR1cm4gYmFnLmZpbHRlcigoYWN0aXZpdHkpID0+IGFjdGl2aXR5LmlkICE9PSBzZW5kZXIuaWQpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGZvciAoY29uc3QgcCBpbiBiYWcpIHtcblx0XHRcdFx0XHRcdGJhZ1twXSA9IHJlbW92ZVVzZXJBY3Rpdml0aWVzKGJhZ1twXSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiBiYWc7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHRyZW1vdmVVc2VyQWN0aXZpdGllcyhhbGxBY3Rpdml0aWVzKTtcblx0XHRcdGludGVybmFsTW9kZWwuc2V0UHJvcGVydHkoQUNUSVZJVElFUywgYWxsQWN0aXZpdGllcyk7XG5cdFx0XHRicmVhaztcblxuXHRcdGNhc2UgQWN0aXZpdHkuQ2hhbmdlOlxuXHRcdFx0dXBkYXRlT25DaGFuZ2UodmlldywgbWVzc2FnZSk7XG5cdFx0XHRicmVhaztcblxuXHRcdGNhc2UgQWN0aXZpdHkuQ3JlYXRlOlxuXHRcdFx0Ly8gRm9yIGNyZWF0ZSB3ZSBhY3R1YWxseSBqdXN0IG5lZWQgdG8gcmVmcmVzaCB0aGUgdGFibGVcblx0XHRcdHVwZGF0ZU9uQ3JlYXRlKHZpZXcsIG1lc3NhZ2UpO1xuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlIEFjdGl2aXR5LkRlbGV0ZTpcblx0XHRcdC8vIEZvciBub3cgYWxzbyByZWZyZXNoIHRoZSBwYWdlIGJ1dCBpbiBjYXNlIG9mIGRlbGV0aW9uIHdlIG5lZWQgdG8gaW5mb3JtIHRoZSB1c2VyXG5cdFx0XHR1cGRhdGVPbkRlbGV0ZSh2aWV3LCBtZXNzYWdlKTtcblx0XHRcdGJyZWFrO1xuXG5cdFx0Y2FzZSBBY3Rpdml0eS5BY3RpdmF0ZTpcblx0XHRcdGRyYWZ0Q2xvc2VkQnlPdGhlclVzZXIodmlldywgbWVzc2FnZS5jbGllbnRDb250ZW50LCBDb2xsYWJvcmF0aW9uVXRpbHMuZ2V0VGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0FDVElWQVRFXCIsIHNlbmRlci5uYW1lKSk7XG5cdFx0XHRicmVhaztcblxuXHRcdGNhc2UgQWN0aXZpdHkuRGlzY2FyZDpcblx0XHRcdGRyYWZ0Q2xvc2VkQnlPdGhlclVzZXIodmlldywgbWVzc2FnZS5jbGllbnRDb250ZW50LCBDb2xsYWJvcmF0aW9uVXRpbHMuZ2V0VGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0RJU0NBUkRcIiwgc2VuZGVyLm5hbWUpKTtcblx0XHRcdGJyZWFrO1xuXG5cdFx0Y2FzZSBBY3Rpdml0eS5BY3Rpb246XG5cdFx0XHR1cGRhdGVPbkFjdGlvbih2aWV3LCBtZXNzYWdlKTtcblx0XHRcdGJyZWFrO1xuXG5cdFx0Y2FzZSBBY3Rpdml0eS5MaXZlQ2hhbmdlOlxuXHRcdFx0bWFjdGl2aXR5ID0gc2VuZGVyO1xuXHRcdFx0bWFjdGl2aXR5LmtleSA9IGdldEFjdGl2aXR5S2V5KG1lc3NhZ2UuY2xpZW50Q29udGVudCk7XG5cblx0XHRcdC8vIHN0dXBpZCBKU09OIG1vZGVsLi4uXG5cdFx0XHRsZXQgaW5pdEpTT05Nb2RlbDogc3RyaW5nID0gXCJcIjtcblx0XHRcdGNvbnN0IHBhcnRzID0gbWV0YVBhdGguc3BsaXQoXCIvXCIpO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDE7IGkgPCBwYXJ0cy5sZW5ndGggLSAxOyBpKyspIHtcblx0XHRcdFx0aW5pdEpTT05Nb2RlbCArPSBgLyR7cGFydHNbaV19YDtcblx0XHRcdFx0aWYgKCFpbnRlcm5hbE1vZGVsLmdldFByb3BlcnR5KEFDVElWSVRJRVMgKyBpbml0SlNPTk1vZGVsKSkge1xuXHRcdFx0XHRcdGludGVybmFsTW9kZWwuc2V0UHJvcGVydHkoQUNUSVZJVElFUyArIGluaXRKU09OTW9kZWwsIHt9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRhY3Rpdml0aWVzID0gaW50ZXJuYWxNb2RlbC5nZXRQcm9wZXJ0eShBQ1RJVklUSUVTICsgbWV0YVBhdGgpO1xuXHRcdFx0YWN0aXZpdGllcyA9IGFjdGl2aXRpZXM/LnNsaWNlID8gYWN0aXZpdGllcy5zbGljZSgpIDogW107XG5cdFx0XHRhY3Rpdml0aWVzLnB1c2gobWFjdGl2aXR5KTtcblx0XHRcdGludGVybmFsTW9kZWwuc2V0UHJvcGVydHkoQUNUSVZJVElFUyArIG1ldGFQYXRoLCBhY3Rpdml0aWVzKTtcblx0XHRcdGJyZWFrO1xuXG5cdFx0Y2FzZSBBY3Rpdml0eS5VbmRvOlxuXHRcdFx0Ly8gVGhlIHVzZXIgZGlkIGEgY2hhbmdlIGJ1dCByZXZlcnRlZCBpdCwgdGhlcmVmb3JlIHVuYmxvY2sgdGhlIGNvbnRyb2xcblx0XHRcdGFjdGl2aXRpZXMgPSBpbnRlcm5hbE1vZGVsLmdldFByb3BlcnR5KEFDVElWSVRJRVMgKyBtZXRhUGF0aCk7XG5cdFx0XHRhY3Rpdml0eUtleSA9IGdldEFjdGl2aXR5S2V5KG1lc3NhZ2UuY2xpZW50Q29udGVudCk7XG5cdFx0XHRpbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KFxuXHRcdFx0XHRBQ1RJVklUSUVTICsgbWV0YVBhdGgsXG5cdFx0XHRcdGFjdGl2aXRpZXMuZmlsdGVyKChhKSA9PiBhLmtleSAhPT0gYWN0aXZpdHlLZXkpXG5cdFx0XHQpO1xuXHRcdFx0YnJlYWs7XG5cdH1cbn1cblxuLyoqXG4gKiBEaXNwbGF5cyBhIG1lc3NhZ2UgdGhhdCB0aGUgY3VycmVudCBkcmFmdCB3YXMgY2xvc2VkIGJlIGFub3RoZXIgdXNlciwgYW5kIG5hdmlnYXRlcyBiYWNrIHRvIGEgcHJvcGVyIHZpZXcuXG4gKlxuICogQHBhcmFtIHZpZXcgVGhlIHZpZXcgdGhhdCB3YXMgdXNlZCBpbml0aWFsbHkgd2hlbiBjb25uZWN0aW5nIHRoZSB3ZWJzb2NrZXRcbiAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBjb250ZXh0IHRvIG5hdmlnYXRlIHRvXG4gKiBAcGFyYW0gbWVzc2FnZVRleHQgVGhlIG1lc3NhZ2UgdG8gZGlzcGxheVxuICovXG5mdW5jdGlvbiBkcmFmdENsb3NlZEJ5T3RoZXJVc2VyKHZpZXc6IFZpZXcsIHBhdGg6IHN0cmluZywgbWVzc2FnZVRleHQ6IHN0cmluZykge1xuXHRkaXNjb25uZWN0KHZpZXcpO1xuXHRNZXNzYWdlQm94LmluZm9ybWF0aW9uKG1lc3NhZ2VUZXh0KTtcblx0KHZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0KVxuXHRcdC5nZXRCaW5kaW5nKClcblx0XHQucmVzZXRDaGFuZ2VzKClcblx0XHQudGhlbihmdW5jdGlvbiAoKSB7XG5cdFx0XHRuYXZpZ2F0ZShwYXRoLCB2aWV3KTtcblx0XHR9KVxuXHRcdC5jYXRjaChmdW5jdGlvbiAoKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJQZW5kaW5nIENoYW5nZXMgY291bGQgbm90IGJlIHJlc2V0IC0gc3RpbGwgbmF2aWdhdGluZyB0byBhY3RpdmUgaW5zdGFuY2VcIik7XG5cdFx0XHRuYXZpZ2F0ZShwYXRoLCB2aWV3KTtcblx0XHR9KTtcbn1cblxuLyoqXG4gKiBVcGRhdGVzIGRhdGEgd2hlbiBhIENIQU5HRSBtZXNzYWdlIGhhcyBiZWVuIHJlY2VpdmVkLlxuICpcbiAqIEBwYXJhbSB2aWV3IFRoZSB2aWV3IHRoYXQgd2FzIHVzZWQgaW5pdGlhbGx5IHdoZW4gY29ubmVjdGluZyB0aGUgd2Vic29ja2V0XG4gKiBAcGFyYW0gbWVzc2FnZSBUaGUgbWVzc2FnZSByZWNlaXZlZCBmcm9tIHRoZSB3ZWJzb2NrZXRcbiAqL1xuZnVuY3Rpb24gdXBkYXRlT25DaGFuZ2UodmlldzogVmlldywgbWVzc2FnZTogTWVzc2FnZSkge1xuXHRjb25zdCB1cGRhdGVkT2JqZWN0c1BhdGhzID0gbWVzc2FnZS5jbGllbnRDb250ZW50LnNwbGl0KFwifFwiKTtcblx0Y29uc3QgbWV0YU1vZGVsID0gdmlldy5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpIGFzIE9EYXRhTWV0YU1vZGVsO1xuXHRjb25zdCBpbnRlcm5hbE1vZGVsID0gdmlldy5nZXRNb2RlbChcImludGVybmFsXCIpIGFzIEpTT05Nb2RlbDtcblxuXHQvLyBSZW1vdmUgYWxsIGxvY2tzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHBhdGhzXG5cdHVwZGF0ZWRPYmplY3RzUGF0aHMuZm9yRWFjaCgodXBkYXRlZFBhdGgpID0+IHtcblx0XHRjb25zdCB1cGRhdGVkTWV0YVBhdGggPSBtZXRhTW9kZWwuZ2V0TWV0YVBhdGgodXBkYXRlZFBhdGgpO1xuXHRcdGNvbnN0IGFjdGl2aXR5S2V5ID0gZ2V0QWN0aXZpdHlLZXkodXBkYXRlZFBhdGgpO1xuXHRcdGxldCBjdXJyZW50QWN0aXZpdGllczogYW55W10gPSBpbnRlcm5hbE1vZGVsLmdldFByb3BlcnR5KEFDVElWSVRJRVMgKyB1cGRhdGVkTWV0YVBhdGgpIHx8IFtdO1xuXHRcdGN1cnJlbnRBY3Rpdml0aWVzID0gY3VycmVudEFjdGl2aXRpZXM/LmZpbHRlciAmJiBjdXJyZW50QWN0aXZpdGllcy5maWx0ZXIoKGFjdGl2aXR5KSA9PiBhY3Rpdml0eS5rZXkgIT09IGFjdGl2aXR5S2V5KTtcblx0XHRpZiAoY3VycmVudEFjdGl2aXRpZXMpIHtcblx0XHRcdGludGVybmFsTW9kZWwuc2V0UHJvcGVydHkoQUNUSVZJVElFUyArIHVwZGF0ZWRNZXRhUGF0aCwgY3VycmVudEFjdGl2aXRpZXMpO1xuXHRcdH1cblx0fSk7XG5cblx0Y29uc3QgY3VycmVudFBhZ2UgPSBnZXRDdXJyZW50UGFnZSh2aWV3KTtcblx0Y29uc3QgY3VycmVudENvbnRleHQgPSBjdXJyZW50UGFnZS5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQgfCB1bmRlZmluZWQ7XG5cdGNvbnN0IHJlcXVlc3RQcm9taXNlcyA9IHVwZGF0ZWRPYmplY3RzUGF0aHMubWFwKChwYXRoKSA9PiBhcHBseVVwZGF0ZXNGb3JDaGFuZ2UodmlldywgcGF0aCkpO1xuXG5cdC8vIFNpbXVsYXRlIGFueSBjaGFuZ2Ugc28gdGhlIGVkaXQgZmxvdyBzaG93cyB0aGUgZHJhZnQgaW5kaWNhdG9yIGFuZCBzZXRzIHRoZSBwYWdlIHRvIGRpcnR5XG5cdGN1cnJlbnRQYWdlLmdldENvbnRyb2xsZXIoKS5lZGl0Rmxvdy51cGRhdGVEb2N1bWVudChjdXJyZW50Q29udGV4dCwgUHJvbWlzZS5hbGwocmVxdWVzdFByb21pc2VzKSk7XG59XG5cbi8qKlxuICogVXBkYXRlcyBkYXRhIGNvcnJlc3BvbmRpbmcgdG8gYSBwYXRoLlxuICpcbiAqIEBwYXJhbSB2aWV3IFRoZSB2aWV3IHRoYXQgd2FzIHVzZWQgaW5pdGlhbGx5IHdoZW4gY29ubmVjdGluZyB0aGUgd2Vic29ja2V0XG4gKiBAcGFyYW0gcHJvcGVydHlQYXRoRm9yVXBkYXRlIEFic29sdXRlIHBhdGggdG8gdGhlIHVwZGF0ZWQgcHJvcGVydHlcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSByZXNvbHZlZCB3aGVuIHRoZSBkYXRhIGFuZCBpdHMgcmVsYXRlZCBzaWRlIGVmZmVjdHMgaGF2ZSBiZWVuIHJlY2VpdmVkXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGFwcGx5VXBkYXRlc0ZvckNoYW5nZSh2aWV3OiBWaWV3LCBwcm9wZXJ0eVBhdGhGb3JVcGRhdGU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuXHRjb25zdCBtZXRhTW9kZWwgPSB2aWV3LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCkgYXMgT0RhdGFNZXRhTW9kZWw7XG5cdGNvbnN0IG1ldGFDb250ZXh0ID0gbWV0YU1vZGVsLmdldE1ldGFDb250ZXh0KHByb3BlcnR5UGF0aEZvclVwZGF0ZSk7XG5cdGNvbnN0IGRhdGFNb2RlbE9iamVjdCA9IE1ldGFNb2RlbENvbnZlcnRlci5nZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMobWV0YUNvbnRleHQpO1xuXHRjb25zdCB0YXJnZXRDb250ZXh0UGF0aCA9IHByb3BlcnR5UGF0aEZvclVwZGF0ZS5zdWJzdHJpbmcoMCwgcHJvcGVydHlQYXRoRm9yVXBkYXRlLmxhc3RJbmRleE9mKFwiL1wiKSk7IC8vIFJlbW92ZSBwcm9wZXJ0eSBuYW1lXG5cdGNvbnN0IHRhcmdldENvbnRleHQgPSBmaW5kQ29udGV4dEZvclVwZGF0ZSh2aWV3LCB0YXJnZXRDb250ZXh0UGF0aCk7XG5cdGNvbnN0IHBhcmVudENvbGxlY3Rpb25QYXRoID0gdGFyZ2V0Q29udGV4dFBhdGguc3Vic3RyaW5nKDAsIHRhcmdldENvbnRleHRQYXRoLmxhc3RJbmRleE9mKFwiKFwiKSk7XG5cdGNvbnN0IHBhcmVudENvbnRleHRQYXRoID0gcGFyZW50Q29sbGVjdGlvblBhdGguc3Vic3RyaW5nKDAsIHBhcmVudENvbGxlY3Rpb25QYXRoLmxhc3RJbmRleE9mKFwiL1wiKSk7XG5cdGNvbnN0IHBhcmVudENvbnRleHQgPSBwYXJlbnRDb250ZXh0UGF0aCA/IGZpbmRDb250ZXh0Rm9yVXBkYXRlKHZpZXcsIHBhcmVudENvbnRleHRQYXRoKSA6IHVuZGVmaW5lZDtcblxuXHRpZiAoIXRhcmdldENvbnRleHQgJiYgIXBhcmVudENvbnRleHQpIHtcblx0XHRyZXR1cm47IC8vIE5vIGNvbnRleHQgZm9yIHVwZGF0ZVxuXHR9XG5cblx0dHJ5IHtcblx0XHRjb25zdCBzaWRlRWZmZWN0c1Byb21pc2VzOiBQcm9taXNlPGFueT5bXSA9IFtdO1xuXHRcdGNvbnN0IHNpZGVFZmZlY3RzU2VydmljZSA9IENvbGxhYm9yYXRpb25VdGlscy5nZXRBcHBDb21wb25lbnQodmlldykuZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlKCk7XG5cblx0XHRpZiAodGFyZ2V0Q29udGV4dCkge1xuXHRcdFx0Ly8gV2UgaGF2ZSBhIHRhcmdldCBjb250ZXh0LCBzbyB3ZSBjYW4gcmV0cmlldmUgdGhlIHVwZGF0ZWQgcHJvcGVydHlcblx0XHRcdGNvbnN0IHRhcmdldE1ldGFQYXRoID0gbWV0YU1vZGVsLmdldE1ldGFQYXRoKHRhcmdldENvbnRleHQuZ2V0UGF0aCgpKTtcblx0XHRcdGNvbnN0IHJlbGF0aXZlTWV0YVBhdGhGb3JVcGRhdGUgPSBtZXRhTW9kZWwuZ2V0TWV0YVBhdGgocHJvcGVydHlQYXRoRm9yVXBkYXRlKS5yZXBsYWNlKHRhcmdldE1ldGFQYXRoLCBcIlwiKS5zbGljZSgxKTtcblx0XHRcdHNpZGVFZmZlY3RzUHJvbWlzZXMucHVzaChzaWRlRWZmZWN0c1NlcnZpY2UucmVxdWVzdFNpZGVFZmZlY3RzKFtyZWxhdGl2ZU1ldGFQYXRoRm9yVXBkYXRlXSwgdGFyZ2V0Q29udGV4dCwgU1lOQ0dST1VQSUQpKTtcblx0XHR9XG5cblx0XHQvLyBHZXQgdGhlIGZpZWxkR3JvdXBJZHMgY29ycmVzcG9uZGluZyB0byBwYXRoRm9yVXBkYXRlXG5cdFx0Y29uc3QgZmllbGRHcm91cElkcyA9IHNpZGVFZmZlY3RzU2VydmljZS5jb21wdXRlRmllbGRHcm91cElkcyhcblx0XHRcdGRhdGFNb2RlbE9iamVjdC50YXJnZXRFbnRpdHlUeXBlLmZ1bGx5UXVhbGlmaWVkTmFtZSxcblx0XHRcdGRhdGFNb2RlbE9iamVjdC50YXJnZXRPYmplY3QuZnVsbHlRdWFsaWZpZWROYW1lXG5cdFx0KTtcblxuXHRcdC8vIEV4ZWN1dGUgdGhlIHNpZGUgZWZmZWN0cyBmb3IgdGhlIGZpZWxkR3JvdXBJZHNcblx0XHRpZiAoZmllbGRHcm91cElkcy5sZW5ndGgpIHtcblx0XHRcdGNvbnN0IHBhZ2VDb250cm9sbGVyID0gdmlldy5nZXRDb250cm9sbGVyKCkgYXMgUGFnZUNvbnRyb2xsZXI7XG5cdFx0XHRjb25zdCBzaWRlRWZmZWN0c01hcEZvckZpZWxkR3JvdXAgPSBwYWdlQ29udHJvbGxlci5fc2lkZUVmZmVjdHMuZ2V0U2lkZUVmZmVjdHNNYXBGb3JGaWVsZEdyb3Vwcyhcblx0XHRcdFx0ZmllbGRHcm91cElkcyxcblx0XHRcdFx0dGFyZ2V0Q29udGV4dCB8fCBwYXJlbnRDb250ZXh0XG5cdFx0XHQpIGFzIEZpZWxkU2lkZUVmZmVjdERpY3Rpb25hcnk7XG5cdFx0XHRPYmplY3Qua2V5cyhzaWRlRWZmZWN0c01hcEZvckZpZWxkR3JvdXApLmZvckVhY2goKHNpZGVFZmZlY3ROYW1lKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHNpZGVFZmZlY3QgPSBzaWRlRWZmZWN0c01hcEZvckZpZWxkR3JvdXBbc2lkZUVmZmVjdE5hbWVdO1xuXHRcdFx0XHRzaWRlRWZmZWN0c1Byb21pc2VzLnB1c2goXG5cdFx0XHRcdFx0cGFnZUNvbnRyb2xsZXIuX3NpZGVFZmZlY3RzLnJlcXVlc3RTaWRlRWZmZWN0cyhzaWRlRWZmZWN0LnNpZGVFZmZlY3RzLCBzaWRlRWZmZWN0LmNvbnRleHQsIFNZTkNHUk9VUElEKVxuXHRcdFx0XHQpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0YXdhaXQgUHJvbWlzZS5hbGwoc2lkZUVmZmVjdHNQcm9taXNlcyk7XG5cdH0gY2F0Y2ggKGVycikge1xuXHRcdExvZy5lcnJvcihcIkZhaWxlZCB0byB1cGRhdGUgZGF0YSBhZnRlciBjaGFuZ2U6XCIgKyBlcnIpO1xuXHRcdHRocm93IGVycjtcblx0fVxufVxuXG4vKipcbiAqIFVwZGF0ZXMgZGF0YSB3aGVuIGEgREVMRVRFIG1lc3NhZ2UgaGFzIGJlZW4gcmVjZWl2ZWQuXG4gKlxuICogQHBhcmFtIHZpZXcgVGhlIHZpZXcgdGhhdCB3YXMgdXNlZCBpbml0aWFsbHkgd2hlbiBjb25uZWN0aW5nIHRoZSB3ZWJzb2NrZXRcbiAqIEBwYXJhbSBtZXNzYWdlIFRoZSBtZXNzYWdlIHJlY2VpdmVkIGZyb20gdGhlIHdlYnNvY2tldFxuICovXG5mdW5jdGlvbiB1cGRhdGVPbkRlbGV0ZSh2aWV3OiBWaWV3LCBtZXNzYWdlOiBNZXNzYWdlKSB7XG5cdGNvbnN0IGN1cnJlbnRQYWdlID0gZ2V0Q3VycmVudFBhZ2Uodmlldyk7XG5cdGNvbnN0IGN1cnJlbnRDb250ZXh0ID0gY3VycmVudFBhZ2UuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0O1xuXHRjb25zdCBjdXJyZW50UGF0aCA9IGN1cnJlbnRDb250ZXh0LmdldFBhdGgoKTtcblxuXHRjb25zdCBkZWxldGVkT2JqZWN0UGF0aHMgPSBtZXNzYWdlLmNsaWVudENvbnRlbnQuc3BsaXQoXCJ8XCIpO1xuXG5cdC8vIGNoZWNrIGlmIHVzZXIgY3VycmVudGx5IGRpc3BsYXlzIGEgZGVsZXRlZCBvYmplY3Qgb3Igb25lIG9mIGl0cyBkZXNjZW5kYW50c1xuXHRjb25zdCBkZWxldGVkUGF0aEluVXNlID0gZGVsZXRlZE9iamVjdFBhdGhzLmZpbmQoKGRlbGV0ZWRQYXRoKSA9PiBjdXJyZW50UGF0aC5zdGFydHNXaXRoKGRlbGV0ZWRQYXRoKSk7XG5cdGlmIChkZWxldGVkUGF0aEluVXNlKSB7XG5cdFx0Ly8gYW55IG90aGVyIHVzZXIgZGVsZXRlZCB0aGUgb2JqZWN0IEknbSBjdXJyZW50bHkgbG9va2luZyBhdC4gSW5mb3JtIHRoZSB1c2VyIHdlIHdpbGwgbmF2aWdhdGUgdG8gcm9vdCBub3dcblx0XHRNZXNzYWdlQm94LmluZm9ybWF0aW9uKENvbGxhYm9yYXRpb25VdGlscy5nZXRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfREVMRVRFXCIsIG1lc3NhZ2UudXNlckRlc2NyaXB0aW9uKSwge1xuXHRcdFx0b25DbG9zZTogKCkgPT4ge1xuXHRcdFx0XHQvLyBXZSByZXRyaWV2ZSB0aGUgZGVsZXRlZCBjb250ZXh0IGFzIGEga2VlcC1hbGl2ZSwgYW5kIGRpc2FibGUgaXRzIGtlZXBhbGl2ZSBzdGF0dXMsXG5cdFx0XHRcdC8vIHNvIHRoYXQgaXQgaXMgcHJvcGVybHkgZGVzdHJveWVkIHdoZW4gcmVmcmVzaGluZyBkYXRhXG5cdFx0XHRcdGNvbnN0IHRhcmdldENvbnRleHQgPSBjdXJyZW50Q29udGV4dC5nZXRNb2RlbCgpLmdldEtlZXBBbGl2ZUNvbnRleHQoZGVsZXRlZFBhdGhJblVzZSk7XG5cdFx0XHRcdHRhcmdldENvbnRleHQuc2V0S2VlcEFsaXZlKGZhbHNlKTtcblx0XHRcdFx0Y29uc3QgcmVxdWVzdFByb21pc2UgPSBhcHBseVVwZGF0ZXNGb3JDb2xsZWN0aW9uKHZpZXcsIGRlbGV0ZWRPYmplY3RQYXRoc1swXSk7XG5cdFx0XHRcdGN1cnJlbnRQYWdlLmdldENvbnRyb2xsZXIoKS5lZGl0Rmxvdy51cGRhdGVEb2N1bWVudChjdXJyZW50UGFnZS5nZXRCaW5kaW5nQ29udGV4dCgpLCByZXF1ZXN0UHJvbWlzZSk7XG5cdFx0XHRcdChjdXJyZW50UGFnZS5nZXRDb250cm9sbGVyKCkgYXMgUGFnZUNvbnRyb2xsZXIpLl9yb3V0aW5nLm5hdmlnYXRlQmFja0Zyb21Db250ZXh0KHRhcmdldENvbnRleHQpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdGNvbnN0IHJlcXVlc3RQcm9taXNlID0gYXBwbHlVcGRhdGVzRm9yQ29sbGVjdGlvbih2aWV3LCBkZWxldGVkT2JqZWN0UGF0aHNbMF0pO1xuXHRcdGN1cnJlbnRQYWdlLmdldENvbnRyb2xsZXIoKS5lZGl0Rmxvdy51cGRhdGVEb2N1bWVudChjdXJyZW50UGFnZS5nZXRCaW5kaW5nQ29udGV4dCgpLCByZXF1ZXN0UHJvbWlzZSk7XG5cdH1cbn1cblxuLyoqXG4gKiBVcGRhdGVzIGRhdGEgd2hlbiBhIENSRUFURSBtZXNzYWdlIGhhcyBiZWVuIHJlY2VpdmVkLlxuICpcbiAqIEBwYXJhbSB2aWV3IFRoZSB2aWV3IHRoYXQgd2FzIHVzZWQgaW5pdGlhbGx5IHdoZW4gY29ubmVjdGluZyB0aGUgd2Vic29ja2V0XG4gKiBAcGFyYW0gbWVzc2FnZSBUaGUgbWVzc2FnZSByZWNlaXZlZCBmcm9tIHRoZSB3ZWJzb2NrZXRcbiAqL1xuZnVuY3Rpb24gdXBkYXRlT25DcmVhdGUodmlldzogVmlldywgbWVzc2FnZTogTWVzc2FnZSkge1xuXHRjb25zdCBjdXJyZW50UGFnZSA9IGdldEN1cnJlbnRQYWdlKHZpZXcpO1xuXHRjb25zdCBjcmVhdGVkT2JqZWN0UGF0aHMgPSBtZXNzYWdlLmNsaWVudENvbnRlbnQuc3BsaXQoXCJ8XCIpO1xuXG5cdGNvbnN0IHJlcXVlc3RQcm9taXNlID0gYXBwbHlVcGRhdGVzRm9yQ29sbGVjdGlvbih2aWV3LCBjcmVhdGVkT2JqZWN0UGF0aHNbMF0pO1xuXHQvLyBTaW11bGF0ZSBhIGNoYW5nZSBzbyB0aGUgZWRpdCBmbG93IHNob3dzIHRoZSBkcmFmdCBpbmRpY2F0b3IgYW5kIHNldHMgdGhlIHBhZ2UgdG8gZGlydHlcblx0Y3VycmVudFBhZ2UuZ2V0Q29udHJvbGxlcigpLmVkaXRGbG93LnVwZGF0ZURvY3VtZW50KGN1cnJlbnRQYWdlLmdldEJpbmRpbmdDb250ZXh0KCksIHJlcXVlc3RQcm9taXNlKTtcbn1cblxuLyoqXG4gKiBVcGRhdGVzIGRhdGEgaW4gYSBjb2xsZWN0aW9uLlxuICpcbiAqIEBwYXJhbSB2aWV3IFRoZSB2aWV3IHRoYXQgd2FzIHVzZWQgaW5pdGlhbGx5IHdoZW4gY29ubmVjdGluZyB0aGUgd2Vic29ja2V0XG4gKiBAcGFyYW0gcGF0aEluQ29sbGVjdGlvbiBBIHBhdGggdG8gYW4gZW50aXR5IGluIHRoZSBjb2xsZWN0aW9uXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGFwcGx5VXBkYXRlc0ZvckNvbGxlY3Rpb24odmlldzogVmlldywgcGF0aEluQ29sbGVjdGlvbjogc3RyaW5nKSB7XG5cdGNvbnN0IGFwcENvbXBvbmVudCA9IENvbGxhYm9yYXRpb25VdGlscy5nZXRBcHBDb21wb25lbnQodmlldyk7XG5cdGNvbnN0IHBhcmVudFBhdGggPSBwYXRoSW5Db2xsZWN0aW9uLnN1YnN0cmluZygwLCBwYXRoSW5Db2xsZWN0aW9uLmxhc3RJbmRleE9mKFwiL1wiKSk7XG5cdGNvbnN0IHBhcmVudENvbnRleHQgPSBmaW5kQ29udGV4dEZvclVwZGF0ZSh2aWV3LCBwYXJlbnRQYXRoKTtcblxuXHRpZiAocGFyZW50Q29udGV4dCkge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBzaWRlRWZmZWN0c1Byb21pc2VzOiBQcm9taXNlPGFueT5bXSA9IFtdO1xuXG5cdFx0XHRjb25zdCBtZXRhTW9kZWwgPSBwYXJlbnRDb250ZXh0LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0XHRjb25zdCBtZXRhUGF0aEZvclVwZGF0ZSA9IG1ldGFNb2RlbC5nZXRNZXRhUGF0aChwYXRoSW5Db2xsZWN0aW9uKTtcblx0XHRcdGNvbnN0IHBhcmVudE1ldGFQYXRoID0gbWV0YU1vZGVsLmdldE1ldGFQYXRoKHBhcmVudENvbnRleHQuZ2V0UGF0aCgpKTtcblx0XHRcdGNvbnN0IHJlbGF0aXZlUGF0aCA9IG1ldGFQYXRoRm9yVXBkYXRlLnJlcGxhY2UoYCR7cGFyZW50TWV0YVBhdGh9L2AsIFwiXCIpO1xuXG5cdFx0XHQvLyBSZWxvYWQgdGhlIGNvbGxlY3Rpb25cblx0XHRcdGNvbnN0IHNpZGVFZmZlY3RzU2VydmljZSA9IGFwcENvbXBvbmVudC5nZXRTaWRlRWZmZWN0c1NlcnZpY2UoKTtcblx0XHRcdHNpZGVFZmZlY3RzUHJvbWlzZXMucHVzaChzaWRlRWZmZWN0c1NlcnZpY2UucmVxdWVzdFNpZGVFZmZlY3RzKFtyZWxhdGl2ZVBhdGhdLCBwYXJlbnRDb250ZXh0LCBTWU5DR1JPVVBJRCkpO1xuXG5cdFx0XHQvLyBSZXF1ZXN0IHRoZSBzaWRlIGVmZmVjdHMgZm9yIHRoZSBjb2xsZWN0aW9uXG5cdFx0XHRzaWRlRWZmZWN0c1Byb21pc2VzLnB1c2goc2lkZUVmZmVjdHNTZXJ2aWNlLnJlcXVlc3RTaWRlRWZmZWN0c0Zvck5hdmlnYXRpb25Qcm9wZXJ0eShyZWxhdGl2ZVBhdGgsIHBhcmVudENvbnRleHQsIFNZTkNHUk9VUElEKSk7XG5cblx0XHRcdGF3YWl0IFByb21pc2UuYWxsKHNpZGVFZmZlY3RzUHJvbWlzZXMpO1xuXHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0TG9nLmVycm9yKFwiRmFpbGVkIHRvIHVwZGF0ZSBkYXRhIGFmdGVyIGNvbGxlY3Rpb24gdXBkYXRlOlwiICsgZXJyKTtcblx0XHR9XG5cdH1cbn1cblxuLyoqXG4gKiBVcGRhdGVzIGRhdGEgd2hlbiBhIEFDVElPTiBtZXNzYWdlIGhhcyBiZWVuIHJlY2VpdmVkLlxuICpcbiAqIEBwYXJhbSB2aWV3IFRoZSB2aWV3IHRoYXQgd2FzIHVzZWQgaW5pdGlhbGx5IHdoZW4gY29ubmVjdGluZyB0aGUgd2Vic29ja2V0XG4gKiBAcGFyYW0gbWVzc2FnZSBUaGUgbWVzc2FnZSByZWNlaXZlZCBmcm9tIHRoZSB3ZWJzb2NrZXRcbiAqL1xuZnVuY3Rpb24gdXBkYXRlT25BY3Rpb24odmlldzogVmlldywgbWVzc2FnZTogTWVzc2FnZSkge1xuXHRjb25zdCBjdXJyZW50UGFnZSA9IGdldEN1cnJlbnRQYWdlKHZpZXcpO1xuXHRjb25zdCBwYXRoc0ZvckFjdGlvbiA9IG1lc3NhZ2UuY2xpZW50Q29udGVudC5zcGxpdChcInxcIik7XG5cdGNvbnN0IGFjdGlvbk5hbWUgPSBtZXNzYWdlLmNsaWVudFRyaWdnZXJlZEFjdGlvbk5hbWUgfHwgXCJcIjtcblx0Y29uc3QgcmVxdWVzdGVkUHJvcGVydGllcyA9IG1lc3NhZ2UuY2xpZW50UmVxdWVzdGVkUHJvcGVydGllcz8uc3BsaXQoXCJ8XCIpO1xuXHRjb25zdCByZWZyZXNoTGlzdEJpbmRpbmcgPSBtZXNzYWdlLmNsaWVudFJlZnJlc2hMaXN0QmluZGluZyA9PT0gXCJ0cnVlXCI7XG5cblx0Y29uc3QgcmVxdWVzdFByb21pc2VzID0gcGF0aHNGb3JBY3Rpb24ubWFwKChwYXRoKSA9PiByZXF1ZXN0VXBkYXRlRm9yQWN0aW9uKHZpZXcsIHBhdGgsIGFjdGlvbk5hbWUsIHJlcXVlc3RlZFByb3BlcnRpZXMpKTtcblxuXHRpZiAocmVmcmVzaExpc3RCaW5kaW5nKSB7XG5cdFx0cmVxdWVzdFByb21pc2VzLnB1c2goYXBwbHlVcGRhdGVzRm9yQ29sbGVjdGlvbih2aWV3LCBwYXRoc0ZvckFjdGlvblswXSkpO1xuXHR9XG5cblx0Ly8gU2ltdWxhdGUgYW55IGNoYW5nZSBzbyB0aGUgZWRpdCBmbG93IHNob3dzIHRoZSBkcmFmdCBpbmRpY2F0b3IgYW5kIHNldHMgdGhlIHBhZ2UgdG8gZGlydHlcblx0Y3VycmVudFBhZ2UuZ2V0Q29udHJvbGxlcigpLmVkaXRGbG93LnVwZGF0ZURvY3VtZW50KGN1cnJlbnRQYWdlLmdldEJpbmRpbmdDb250ZXh0KCksIFByb21pc2UuYWxsKHJlcXVlc3RQcm9taXNlcykpO1xufVxuXG4vKipcbiAqIFVwZGF0ZXMgc2lkZS1lZmZlY3RzIGRhdGEgd2hlbiBhbiBhY3Rpb24gaGFzIGJlZW4gdHJpZ2dlcmVkIG9uIGEgY29udGV4dC5cbiAqXG4gKiBAcGFyYW0gdmlldyBUaGUgdmlldyB0aGF0IHdhcyB1c2VkIGluaXRpYWxseSB3aGVuIGNvbm5lY3RpbmcgdGhlIHdlYnNvY2tldFxuICogQHBhcmFtIHBhdGhGb3JBY3Rpb24gUGF0aCBvZiB0aGUgY29udGV4dCB0byBhcHBseSB0aGUgYWN0aW9uIHRvXG4gKiBAcGFyYW0gYWN0aW9uTmFtZSBOYW1lIG9mIHRoZSBhY3Rpb25cbiAqIEBwYXJhbSByZXF1ZXN0ZWRQcm9wZXJ0aWVzXG4gKiBAcmV0dXJucyBQcm9taXNlIHJlc29sdmVkIHdoZW4gdGhlIHNpZGUtZWZmZWN0cyBkYXRhIGhhcyBiZWVuIGxvYWRlZFxuICovXG5hc3luYyBmdW5jdGlvbiByZXF1ZXN0VXBkYXRlRm9yQWN0aW9uKFxuXHR2aWV3OiBWaWV3LFxuXHRwYXRoRm9yQWN0aW9uOiBzdHJpbmcsXG5cdGFjdGlvbk5hbWU6IHN0cmluZyxcblx0cmVxdWVzdGVkUHJvcGVydGllcz86IHN0cmluZ1tdXG4pOiBQcm9taXNlPHZvaWQ+IHtcblx0Y29uc3QgdGFyZ2V0Q29udGV4dCA9IGZpbmRDb250ZXh0Rm9yVXBkYXRlKHZpZXcsIHBhdGhGb3JBY3Rpb24pO1xuXHRpZiAoIXRhcmdldENvbnRleHQpIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRjb25zdCBhcHBDb21wb25lbnQgPSBDb2xsYWJvcmF0aW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHZpZXcpO1xuXHRjb25zdCBzaWRlRWZmZWN0U2VydmljZSA9IGFwcENvbXBvbmVudC5nZXRTaWRlRWZmZWN0c1NlcnZpY2UoKTtcblx0Y29uc3Qgc2lkZUVmZmVjdHNGcm9tQWN0aW9uID0gc2lkZUVmZmVjdFNlcnZpY2UuZ2V0T0RhdGFBY3Rpb25TaWRlRWZmZWN0cyhhY3Rpb25OYW1lLCB0YXJnZXRDb250ZXh0KTtcblx0Y29uc3Qgc2lkZUVmZmVjdFByb21pc2VzOiBQcm9taXNlPGFueT5bXSA9IFtdO1xuXHRpZiAoc2lkZUVmZmVjdHNGcm9tQWN0aW9uKSB7XG5cdFx0aWYgKHNpZGVFZmZlY3RzRnJvbUFjdGlvbi5wYXRoRXhwcmVzc2lvbnM/Lmxlbmd0aCkge1xuXHRcdFx0c2lkZUVmZmVjdFByb21pc2VzLnB1c2goXG5cdFx0XHRcdHNpZGVFZmZlY3RTZXJ2aWNlLnJlcXVlc3RTaWRlRWZmZWN0cyhzaWRlRWZmZWN0c0Zyb21BY3Rpb24ucGF0aEV4cHJlc3Npb25zLCB0YXJnZXRDb250ZXh0LCBTWU5DR1JPVVBJRClcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cdGlmIChyZXF1ZXN0ZWRQcm9wZXJ0aWVzICYmIHJlcXVlc3RlZFByb3BlcnRpZXMubGVuZ3RoID4gMCkge1xuXHRcdC8vY2xlYW4tdXAgb2YgdGhlIHByb3BlcnRpZXMgdG8gcmVxdWVzdCBsaXN0OlxuXHRcdGNvbnN0IG1ldGFNb2RlbCA9IHZpZXcuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKSBhcyBPRGF0YU1ldGFNb2RlbDtcblx0XHRjb25zdCBtZXRhUGF0aEZvckFjdGlvbiA9IGNhbGN1bGF0ZU1ldGFQYXRoKHZpZXcsIHBhdGhGb3JBY3Rpb24pO1xuXHRcdGNvbnN0IGRhdGFNb2RlbFBhdGggPSBNZXRhTW9kZWxDb252ZXJ0ZXIuZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKG1ldGFNb2RlbC5nZXRDb250ZXh0KG1ldGFQYXRoRm9yQWN0aW9uKSk7XG5cdFx0Y29uc3QgcHJvcGVydGllc1RvUmVxdWVzdCA9IGRhdGFNb2RlbFBhdGgudGFyZ2V0RW50aXR5VHlwZS5lbnRpdHlQcm9wZXJ0aWVzXG5cdFx0XHQubWFwKChwcm9wZXJ0eTogUHJvcGVydHkpID0+IHtcblx0XHRcdFx0cmV0dXJuIHByb3BlcnR5Lm5hbWU7XG5cdFx0XHR9KVxuXHRcdFx0LmZpbHRlcigocHJvcCkgPT4gcmVxdWVzdGVkUHJvcGVydGllcy5pbmNsdWRlcyhwcm9wKSk7XG5cdFx0aWYgKHByb3BlcnRpZXNUb1JlcXVlc3QubGVuZ3RoID4gMCkge1xuXHRcdFx0c2lkZUVmZmVjdFByb21pc2VzLnB1c2goc2lkZUVmZmVjdFNlcnZpY2UucmVxdWVzdFNpZGVFZmZlY3RzKHByb3BlcnRpZXNUb1JlcXVlc3QsIHRhcmdldENvbnRleHQsIFNZTkNHUk9VUElEKSk7XG5cdFx0fVxuXHR9XG5cblx0YXdhaXQgUHJvbWlzZS5hbGwoc2lkZUVmZmVjdFByb21pc2VzKTtcbn1cblxuLyoqXG4gKiBGaW5kcyBhIGNvbnRleHQgdG8gYXBwbHkgYW4gdXBkYXRlIG1lc3NhZ2UgKENIQU5HRSwgQ1JFQVRFLCBERUxFVEUgb3IgQUNUSU9OKS5cbiAqXG4gKiBAcGFyYW0gdmlldyAgVGhlIHZpZXcgdGhhdCB3YXMgdXNlZCBpbml0aWFsbHkgd2hlbiBjb25uZWN0aW5nIHRoZSB3ZWJzb2NrZXRcbiAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBjb250ZXh0IHRvIGJlIGZvdW5kIChzaGFsbCBwb2ludCB0byBhbiBlbnRpdHksIG5vdCBhIHByb3BlcnR5KVxuICogQHJldHVybnMgQSBjb250ZXh0IGlmIGl0IGNvdWxkIGJlIGZvdW5kXG4gKi9cbmZ1bmN0aW9uIGZpbmRDb250ZXh0Rm9yVXBkYXRlKHZpZXc6IFZpZXcsIHBhdGg6IHN0cmluZyk6IENvbnRleHQgfCB1bmRlZmluZWQge1xuXHRpZiAoIXBhdGgpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdC8vIEZpbmQgYWxsIHBvdGVudGlhbCBwYXRoc1xuXHRjb25zdCB0YXJnZXRQYXRoczogc3RyaW5nW10gPSBbXTtcblx0d2hpbGUgKCFwYXRoLmVuZHNXaXRoKFwiKVwiKSkge1xuXHRcdHRhcmdldFBhdGhzLnVuc2hpZnQocGF0aCk7XG5cdFx0cGF0aCA9IHBhdGguc3Vic3RyaW5nKDAsIHBhdGgubGFzdEluZGV4T2YoXCIvXCIpKTtcblx0fVxuXHR0YXJnZXRQYXRocy51bnNoaWZ0KHBhdGgpO1xuXG5cdGNvbnN0IHBhcmVudENvbGxlY3Rpb25QYXRoID0gcGF0aC5zdWJzdHJpbmcoMCwgcGF0aC5sYXN0SW5kZXhPZihcIihcIikpOyAvLyBSZW1vdmUgdGhlIGxhc3Qga2V5XG5cblx0bGV0IHRhcmdldENvbnRleHQ6IENvbnRleHQgfCB1bmRlZmluZWQ7XG5cdGxldCBjdXJyZW50Q29udGV4dCA9IGdldEN1cnJlbnRQYWdlKHZpZXcpLmdldEJpbmRpbmdDb250ZXh0KCkgYXMgQ29udGV4dCB8IHVuZGVmaW5lZDtcblx0d2hpbGUgKGN1cnJlbnRDb250ZXh0ICYmICF0YXJnZXRDb250ZXh0KSB7XG5cdFx0aWYgKHRhcmdldFBhdGhzLmluZGV4T2YoY3VycmVudENvbnRleHQuZ2V0UGF0aCgpKSA+PSAwKSB7XG5cdFx0XHR0YXJnZXRDb250ZXh0ID0gY3VycmVudENvbnRleHQ7XG5cdFx0fVxuXG5cdFx0Y3VycmVudENvbnRleHQgPSBjdXJyZW50Q29udGV4dC5nZXRCaW5kaW5nKCk/LmdldENvbnRleHQoKSBhcyBDb250ZXh0IHwgdW5kZWZpbmVkO1xuXHR9XG5cblx0aWYgKHRhcmdldENvbnRleHQpIHtcblx0XHQvLyBGb3VuZCAhXG5cdFx0cmV0dXJuIHRhcmdldENvbnRleHQ7XG5cdH1cblxuXHQvLyBUcnkgdG8gZmluZCB0aGUgdGFyZ2V0IGNvbnRleHQgaW4gYSBsaXN0QmluZGluZ1xuXHRjb25zdCBtb2RlbCA9IGdldEN1cnJlbnRQYWdlKHZpZXcpLmdldEJpbmRpbmdDb250ZXh0KCkuZ2V0TW9kZWwoKSBhcyBPRGF0YU1vZGVsO1xuXHRjb25zdCBwYXJlbnRMaXN0QmluZGluZyA9IG1vZGVsLmdldEFsbEJpbmRpbmdzKCkuZmluZCgoYmluZGluZykgPT4ge1xuXHRcdGNvbnN0IGJpbmRpbmdQYXRoID0gYmluZGluZy5pc1JlbGF0aXZlKCkgPyBiaW5kaW5nLmdldFJlc29sdmVkUGF0aCgpIDogYmluZGluZy5nZXRQYXRoKCk7XG5cdFx0cmV0dXJuIGJpbmRpbmcuaXNBKFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTGlzdEJpbmRpbmdcIikgJiYgYmluZGluZ1BhdGggPT09IHBhcmVudENvbGxlY3Rpb25QYXRoO1xuXHR9KSBhcyBPRGF0YUxpc3RCaW5kaW5nIHwgdW5kZWZpbmVkO1xuXHQvLyBXZSd2ZSBmb3VuZCBhIGxpc3QgYmluZGluZyB0aGF0IGNvdWxkIGNvbnRhaW4gdGhlIHRhcmdldCBjb250ZXh0IC0tPiBsb29rIGZvciBpdFxuXHR0YXJnZXRDb250ZXh0ID0gcGFyZW50TGlzdEJpbmRpbmc/LmdldEFsbEN1cnJlbnRDb250ZXh0cygpLmZpbmQoKGNvbnRleHQpID0+IHtcblx0XHRyZXR1cm4gdGFyZ2V0UGF0aHMuaW5kZXhPZihjb250ZXh0LmdldFBhdGgoKSkgPj0gMDtcblx0fSk7XG5cblx0cmV0dXJuIHRhcmdldENvbnRleHQ7XG59XG5cbmZ1bmN0aW9uIG5hdmlnYXRlKHBhdGg6IHN0cmluZywgdmlldzogVmlldykge1xuXHQvLyBUT0RPOiByb3V0aW5nLm5hdmlnYXRlIGRvZXNuJ3QgY29uc2lkZXIgc2VtYW50aWMgYm9va21hcmtpbmdcblx0Y29uc3QgY3VycmVudFBhZ2UgPSBnZXRDdXJyZW50UGFnZSh2aWV3KTtcblx0Y29uc3QgdGFyZ2V0Q29udGV4dCA9IHZpZXcuZ2V0TW9kZWwoKS5iaW5kQ29udGV4dChwYXRoKS5nZXRCb3VuZENvbnRleHQoKTtcblx0Y3VycmVudFBhZ2UuZ2V0Q29udHJvbGxlcigpLnJvdXRpbmcubmF2aWdhdGUodGFyZ2V0Q29udGV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEN1cnJlbnRQYWdlKHZpZXc6IFZpZXcpIHtcblx0Y29uc3QgYXBwQ29tcG9uZW50ID0gQ29sbGFib3JhdGlvblV0aWxzLmdldEFwcENvbXBvbmVudCh2aWV3KTtcblx0cmV0dXJuIENvbW1vblV0aWxzLmdldEN1cnJlbnRQYWdlVmlldyhhcHBDb21wb25lbnQpO1xufVxuXG5mdW5jdGlvbiBnZXRBY3Rpdml0eUtleSh4OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRyZXR1cm4geC5zdWJzdHJpbmcoeC5sYXN0SW5kZXhPZihcIihcIikgKyAxLCB4Lmxhc3RJbmRleE9mKFwiKVwiKSk7XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgbWV0YXBhdGggZnJvbSBvbmUgb3IgbW9yZSBkYXRhIHBhdGgocykuXG4gKlxuICogQHBhcmFtIHZpZXcgVGhlIGN1cnJlbnQgdmlld1xuICogQHBhcmFtIHBhdGggT25lIG9yZSBtb3JlIGRhdGEgcGF0aChzKSwgaW4gY2FzZSBvZiBtdWx0aXBsZSBwYXRocyBzZXBhcmF0ZWQgYnkgJ3wnXG4gKiBAcmV0dXJucyBUaGUgY2FsY3VsYXRlZCBtZXRhUGF0aFxuICovXG5mdW5jdGlvbiBjYWxjdWxhdGVNZXRhUGF0aCh2aWV3OiBWaWV3LCBwYXRoPzogc3RyaW5nKTogc3RyaW5nIHtcblx0bGV0IG1ldGFQYXRoID0gXCJcIjtcblx0aWYgKHBhdGgpIHtcblx0XHQvLyBpbiBjYXNlIG1vcmUgdGhhbiBvbmUgcGF0aCBpcyBzZW50IGFsbCBvZiB0aGVtIGhhdmUgdG8gdXNlIHRoZSBzYW1lIG1ldGFwYXRoIHRoZXJlZm9yZSB3ZSBqdXN0IGNvbnNpZGVyIHRoZSBmaXJzdCBvbmVcblx0XHRjb25zdCBkYXRhUGF0aCA9IHBhdGguc3BsaXQoXCJ8XCIpWzBdO1xuXHRcdG1ldGFQYXRoID0gKHZpZXcuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKSBhcyBPRGF0YU1ldGFNb2RlbCkuZ2V0TWV0YVBhdGgoZGF0YVBhdGgpO1xuXHR9XG5cdHJldHVybiBtZXRhUGF0aDtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuXHRjb25uZWN0OiBjb25uZWN0LFxuXHRkaXNjb25uZWN0OiBkaXNjb25uZWN0LFxuXHRpc0Nvbm5lY3RlZDogaXNDb25uZWN0ZWQsXG5cdGlzQ29sbGFib3JhdGlvbkVuYWJsZWQ6IGlzQ29sbGFib3JhdGlvbkVuYWJsZWQsXG5cdHNlbmQ6IHNlbmRcbn07XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7O0VBdUJBLE1BQU1BLFVBQVUsR0FBRywyQkFBMkI7RUFDOUMsTUFBTUMsV0FBVyxHQUFHLDRCQUE0QjtFQUNoRCxNQUFNQyxVQUFVLEdBQUcsMkJBQTJCO0VBQzlDLE1BQU1DLFdBQVcsR0FBRyxZQUFZO0VBRXpCLE1BQU1DLFdBQVcsR0FBRyxVQUFVQyxPQUFnQixFQUFXO0lBQy9ELE1BQU1DLGFBQWEsR0FBR0QsT0FBTyxDQUFDRSxRQUFRLENBQUMsVUFBVSxDQUFjO0lBQy9ELE9BQU9DLHdCQUF3QixDQUFDRixhQUFhLENBQUM7RUFDL0MsQ0FBQztFQUFDO0VBRUssTUFBTUcsSUFBSSxHQUFHLFVBQ25CSixPQUFnQixFQUNoQkssTUFBZ0IsRUFDaEJDLE9BQXNDLEVBQ3RDQyxtQkFBNEIsRUFDNUJDLGtCQUE0QixFQUM1QkMseUJBQW9DLEVBQ25DO0lBQ0QsSUFBSVYsV0FBVyxDQUFDQyxPQUFPLENBQUMsRUFBRTtNQUN6QixNQUFNQyxhQUFhLEdBQUdELE9BQU8sQ0FBQ0UsUUFBUSxDQUFDLFVBQVUsQ0FBYztNQUMvRCxNQUFNUSxhQUFhLEdBQUdDLEtBQUssQ0FBQ0MsT0FBTyxDQUFDTixPQUFPLENBQUMsR0FBR0EsT0FBTyxDQUFDTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUdQLE9BQU87TUFDMUUsTUFBTVEsbUJBQW1CLEdBQUdMLHlCQUF5QixhQUF6QkEseUJBQXlCLHVCQUF6QkEseUJBQXlCLENBQUVJLElBQUksQ0FBQyxHQUFHLENBQUM7TUFDaEUsTUFBTUUsVUFBVSxHQUFHZCxhQUFhLENBQUNlLFdBQVcsQ0FBQ3JCLFVBQVUsQ0FB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
517
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNWUFDVElWSVRZIiwiQUNUSVZFVVNFUlMiLCJBQ1RJVklUSUVTIiwiU1lOQ0dST1VQSUQiLCJpc0Nvbm5lY3RlZCIsImNvbnRyb2wiLCJpbnRlcm5hbE1vZGVsIiwiZ2V0TW9kZWwiLCJpc0NvbGxhYm9yYXRpb25Db25uZWN0ZWQiLCJzZW5kIiwiYWN0aW9uIiwiY29udGVudCIsInRyaWdnZXJlZEFjdGlvbk5hbWUiLCJyZWZyZXNoTGlzdEJpbmRpbmciLCJhY3Rpb25SZXF1ZXN0ZWRQcm9wZXJ0aWVzIiwiY2xpZW50Q29udGVudCIsIkFycmF5IiwiaXNBcnJheSIsImpvaW4iLCJyZXF1ZXN0ZWRQcm9wZXJ0aWVzIiwibXlBY3Rpdml0eSIsImdldFByb3BlcnR5IiwiQWN0aXZpdHkiLCJMaXZlQ2hhbmdlIiwic2V0UHJvcGVydHkiLCJVbmRvIiwiYnJvYWRjYXN0Q29sbGFib3JhdGlvbk1lc3NhZ2UiLCJnZXRXZWJTb2NrZXRCYXNlVVJMIiwiYmluZGluZ0NvbnRleHQiLCJnZXRNZXRhTW9kZWwiLCJnZXRPYmplY3QiLCJpc0NvbGxhYm9yYXRpb25FbmFibGVkIiwidmlldyIsImdldEJpbmRpbmdDb250ZXh0IiwiY29ubmVjdCIsIm1lIiwiQ29sbGFib3JhdGlvblV0aWxzIiwiZ2V0TWUiLCJ3ZWJTb2NrZXRCYXNlVVJMIiwic2VydmljZVVybCIsImdldFNlcnZpY2VVcmwiLCJzRHJhZnRVVUlEIiwicmVxdWVzdFByb3BlcnR5IiwiaW5pdGlhbGl6ZUNvbGxhYm9yYXRpb24iLCJtZXNzYWdlIiwibWVzc2FnZVJlY2VpdmUiLCJkaXNjb25uZWN0IiwiZW5kQ29sbGFib3JhdGlvbiIsImFjdGl2ZVVzZXJzIiwiYWN0aXZpdGllcyIsImFjdGl2aXR5S2V5IiwibWV0YVBhdGgiLCJjYWxjdWxhdGVNZXRhUGF0aCIsInVzZXJBY3Rpb24iLCJjbGllbnRBY3Rpb24iLCJzZW5kZXIiLCJpZCIsInVzZXJJRCIsIm5hbWUiLCJ1c2VyRGVzY3JpcHRpb24iLCJpbml0aWFscyIsImZvcm1hdEluaXRpYWxzIiwiY29sb3IiLCJnZXRVc2VyQ29sb3IiLCJtYWN0aXZpdHkiLCJKb2luIiwiSm9pbkVjaG8iLCJmaW5kSW5kZXgiLCJ1c2VyIiwidW5zaGlmdCIsIkxlYXZlIiwiZmlsdGVyIiwiYWxsQWN0aXZpdGllcyIsInJlbW92ZVVzZXJBY3Rpdml0aWVzIiwiYmFnIiwiYWN0aXZpdHkiLCJwIiwiQ2hhbmdlIiwidXBkYXRlT25DaGFuZ2UiLCJDcmVhdGUiLCJ1cGRhdGVPbkNyZWF0ZSIsIkRlbGV0ZSIsInVwZGF0ZU9uRGVsZXRlIiwiQWN0aXZhdGUiLCJkcmFmdENsb3NlZEJ5T3RoZXJVc2VyIiwiZ2V0VGV4dCIsIkRpc2NhcmQiLCJBY3Rpb24iLCJ1cGRhdGVPbkFjdGlvbiIsImtleSIsImdldEFjdGl2aXR5S2V5RnJvbVBhdGgiLCJpbml0SlNPTk1vZGVsIiwicGFydHMiLCJzcGxpdCIsImkiLCJsZW5ndGgiLCJzbGljZSIsInB1c2giLCJhIiwicGF0aCIsIm1lc3NhZ2VUZXh0IiwiTWVzc2FnZUJveCIsImluZm9ybWF0aW9uIiwiZ2V0QmluZGluZyIsInJlc2V0Q2hhbmdlcyIsInRoZW4iLCJuYXZpZ2F0ZSIsImNhdGNoIiwiTG9nIiwiZXJyb3IiLCJ1cGRhdGVkT2JqZWN0c1BhdGhzIiwibWV0YU1vZGVsIiwiZm9yRWFjaCIsInVwZGF0ZWRQYXRoIiwidXBkYXRlZE1ldGFQYXRoIiwiZ2V0TWV0YVBhdGgiLCJjdXJyZW50QWN0aXZpdGllcyIsImN1cnJlbnRQYWdlIiwiZ2V0Q3VycmVudFBhZ2UiLCJjdXJyZW50Q29udGV4dCIsInJlcXVlc3RQcm9taXNlcyIsIm1hcCIsImFwcGx5VXBkYXRlc0ZvckNoYW5nZSIsImdldENvbnRyb2xsZXIiLCJlZGl0RmxvdyIsInVwZGF0ZURvY3VtZW50IiwiUHJvbWlzZSIsImFsbCIsInByb3BlcnR5UGF0aEZvclVwZGF0ZSIsIm1ldGFDb250ZXh0IiwiZ2V0TWV0YUNvbnRleHQiLCJkYXRhTW9kZWxPYmplY3QiLCJNZXRhTW9kZWxDb252ZXJ0ZXIiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJ0YXJnZXRDb250ZXh0UGF0aCIsInN1YnN0cmluZyIsImxhc3RJbmRleE9mIiwidGFyZ2V0Q29udGV4dCIsImZpbmRDb250ZXh0Rm9yVXBkYXRlIiwicGFyZW50Q29sbGVjdGlvblBhdGgiLCJwYXJlbnRDb250ZXh0UGF0aCIsInBhcmVudENvbnRleHQiLCJ1bmRlZmluZWQiLCJzaWRlRWZmZWN0c1Byb21pc2VzIiwic2lkZUVmZmVjdHNTZXJ2aWNlIiwiZ2V0QXBwQ29tcG9uZW50IiwiZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlIiwidGFyZ2V0TWV0YVBhdGgiLCJnZXRQYXRoIiwicmVsYXRpdmVNZXRhUGF0aEZvclVwZGF0ZSIsInJlcGxhY2UiLCJyZXF1ZXN0U2lkZUVmZmVjdHMiLCJmaWVsZEdyb3VwSWRzIiwiY29tcHV0ZUZpZWxkR3JvdXBJZHMiLCJ0YXJnZXRFbnRpdHlUeXBlIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwidGFyZ2V0T2JqZWN0IiwicGFnZUNvbnRyb2xsZXIiLCJzaWRlRWZmZWN0c01hcEZvckZpZWxkR3JvdXAiLCJfc2lkZUVmZmVjdHMiLCJnZXRTaWRlRWZmZWN0c01hcEZvckZpZWxkR3JvdXBzIiwiT2JqZWN0Iiwia2V5cyIsInNpZGVFZmZlY3ROYW1lIiwic2lkZUVmZmVjdCIsInNpZGVFZmZlY3RzIiwiY29udGV4dCIsImVyciIsImN1cnJlbnRQYXRoIiwiZGVsZXRlZE9iamVjdFBhdGhzIiwiZGVsZXRlZFBhdGhJblVzZSIsImZpbmQiLCJkZWxldGVkUGF0aCIsInN0YXJ0c1dpdGgiLCJvbkNsb3NlIiwiZ2V0S2VlcEFsaXZlQ29udGV4dCIsInNldEtlZXBBbGl2ZSIsInJlcXVlc3RQcm9taXNlIiwiYXBwbHlVcGRhdGVzRm9yQ29sbGVjdGlvbiIsIl9yb3V0aW5nIiwibmF2aWdhdGVCYWNrRnJvbUNvbnRleHQiLCJjcmVhdGVkT2JqZWN0UGF0aHMiLCJwYXRoSW5Db2xsZWN0aW9uIiwiYXBwQ29tcG9uZW50IiwicGFyZW50UGF0aCIsIm1ldGFQYXRoRm9yVXBkYXRlIiwicGFyZW50TWV0YVBhdGgiLCJyZWxhdGl2ZVBhdGgiLCJyZXF1ZXN0U2lkZUVmZmVjdHNGb3JOYXZpZ2F0aW9uUHJvcGVydHkiLCJwYXRoc0ZvckFjdGlvbiIsImFjdGlvbk5hbWUiLCJjbGllbnRUcmlnZ2VyZWRBY3Rpb25OYW1lIiwiY2xpZW50UmVxdWVzdGVkUHJvcGVydGllcyIsImNsaWVudFJlZnJlc2hMaXN0QmluZGluZyIsInJlcXVlc3RVcGRhdGVGb3JBY3Rpb24iLCJwYXRoRm9yQWN0aW9uIiwic2lkZUVmZmVjdFNlcnZpY2UiLCJzaWRlRWZmZWN0c0Zyb21BY3Rpb24iLCJnZXRPRGF0YUFjdGlvblNpZGVFZmZlY3RzIiwic2lkZUVmZmVjdFByb21pc2VzIiwicGF0aEV4cHJlc3Npb25zIiwibWV0YVBhdGhGb3JBY3Rpb24iLCJkYXRhTW9kZWxQYXRoIiwiZ2V0Q29udGV4dCIsInByb3BlcnRpZXNUb1JlcXVlc3QiLCJlbnRpdHlQcm9wZXJ0aWVzIiwicHJvcGVydHkiLCJwcm9wIiwiaW5jbHVkZXMiLCJ0YXJnZXRQYXRocyIsImVuZHNXaXRoIiwiaW5kZXhPZiIsIm1vZGVsIiwicGFyZW50TGlzdEJpbmRpbmciLCJnZXRBbGxCaW5kaW5ncyIsImJpbmRpbmciLCJiaW5kaW5nUGF0aCIsImlzUmVsYXRpdmUiLCJnZXRSZXNvbHZlZFBhdGgiLCJpc0EiLCJnZXRBbGxDdXJyZW50Q29udGV4dHMiLCJiaW5kQ29udGV4dCIsImdldEJvdW5kQ29udGV4dCIsInJvdXRpbmciLCJDb21tb25VdGlscyIsImdldEN1cnJlbnRQYWdlVmlldyIsImRhdGFQYXRoIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJBY3Rpdml0eVN5bmMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHtcblx0YnJvYWRjYXN0Q29sbGFib3JhdGlvbk1lc3NhZ2UsXG5cdGVuZENvbGxhYm9yYXRpb24sXG5cdGluaXRpYWxpemVDb2xsYWJvcmF0aW9uLFxuXHRpc0NvbGxhYm9yYXRpb25Db25uZWN0ZWRcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2NvbGxhYm9yYXRpb24vQWN0aXZpdHlCYXNlXCI7XG5pbXBvcnQgdHlwZSB7IE1lc3NhZ2UsIFVzZXIsIFVzZXJBY3Rpdml0eSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9jb2xsYWJvcmF0aW9uL0NvbGxhYm9yYXRpb25Db21tb25cIjtcbmltcG9ydCB7IEFjdGl2aXR5LCBDb2xsYWJvcmF0aW9uVXRpbHMsIGdldEFjdGl2aXR5S2V5RnJvbVBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvY29sbGFib3JhdGlvbi9Db2xsYWJvcmF0aW9uQ29tbW9uXCI7XG5pbXBvcnQgeyBGaWVsZFNpZGVFZmZlY3REaWN0aW9uYXJ5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1NpZGVFZmZlY3RzXCI7XG5pbXBvcnQgKiBhcyBNZXRhTW9kZWxDb252ZXJ0ZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgTWVzc2FnZUJveCBmcm9tIFwic2FwL20vTWVzc2FnZUJveFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCB0eXBlIEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCBPRGF0YUxpc3RCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFMaXN0QmluZGluZ1wiO1xuaW1wb3J0IHR5cGUgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuaW1wb3J0IE9EYXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1vZGVsXCI7XG5cbmNvbnN0IE1ZQUNUSVZJVFkgPSBcIi9jb2xsYWJvcmF0aW9uL215QWN0aXZpdHlcIjtcbmNvbnN0IEFDVElWRVVTRVJTID0gXCIvY29sbGFib3JhdGlvbi9hY3RpdmVVc2Vyc1wiO1xuY29uc3QgQUNUSVZJVElFUyA9IFwiL2NvbGxhYm9yYXRpb24vYWN0aXZpdGllc1wiO1xuY29uc3QgU1lOQ0dST1VQSUQgPSBcIiRhdXRvLnN5bmNcIjtcblxuZXhwb3J0IGNvbnN0IGlzQ29ubmVjdGVkID0gZnVuY3Rpb24gKGNvbnRyb2w6IENvbnRyb2wpOiBib29sZWFuIHtcblx0Y29uc3QgaW50ZXJuYWxNb2RlbCA9IGNvbnRyb2wuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWw7XG5cdHJldHVybiBpc0NvbGxhYm9yYXRpb25Db25uZWN0ZWQoaW50ZXJuYWxNb2RlbCk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2VuZCA9IGZ1bmN0aW9uIChcblx0Y29udHJvbDogQ29udHJvbCxcblx0YWN0aW9uOiBBY3Rpdml0eSxcblx0Y29udGVudDogc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQsXG5cdHRyaWdnZXJlZEFjdGlvbk5hbWU/OiBzdHJpbmcsXG5cdHJlZnJlc2hMaXN0QmluZGluZz86IGJvb2xlYW4sXG5cdGFjdGlvblJlcXVlc3RlZFByb3BlcnRpZXM/OiBzdHJpbmdbXVxuKSB7XG5cdGlmIChpc0Nvbm5lY3RlZChjb250cm9sKSkge1xuXHRcdGNvbnN0IGludGVybmFsTW9kZWwgPSBjb250cm9sLmdldE1vZGVsKFwiaW50ZXJuYWxcIikgYXMgSlNPTk1vZGVsO1xuXHRcdGNvbnN0IGNsaWVudENvbnRlbnQgPSBBcnJheS5pc0FycmF5KGNvbnRlbnQpID8gY29udGVudC5qb2luKFwifFwiKSA6IGNvbnRlbnQ7XG5cdFx0Y29uc3QgcmVxdWVzdGVkUHJvcGVydGllcyA9IGFjdGlvblJlcXVlc3RlZFByb3BlcnRpZXM/LmpvaW4oXCJ8XCIpO1xuXHRcdGNvbnN0IG15QWN0aXZpdHkgPSBpbnRlcm5hbE1vZGVsLmdldFByb3BlcnR5KE1ZQUNUSVZJVFkpO1xuXHRcdGlmIChhY3Rpb24gPT09IEFjdGl2aXR5LkxpdmVDaGFuZ2UpIHtcblx0XHRcdC8vIFRvIGF2b2lkIHVubmVjZXNzYXJ5IHRyYWZmaWMgd2Uga2VlcCB0cmFjayBvZiBsaXZlIGNoYW5nZXMgYW5kIHNlbmQgaXQgb25seSBvbmNlXG5cblx0XHRcdGlmIChteUFjdGl2aXR5ID09PSBjbGllbnRDb250ZW50KSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGludGVybmFsTW9kZWwuc2V0UHJvcGVydHkoTVlBQ1RJVklUWSwgY2xpZW50Q29udGVudCk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIE5vIG5lZWQgdG8gc2VuZCBhbiBVbmRvIG1lc3NhZ2UgaWYgdGhlcmUncyBubyBjdXJyZW50IGFjdGl2aXR5XG5cdFx0XHRpZiAoYWN0aW9uID09PSBBY3Rpdml0eS5VbmRvICYmIG15QWN0aXZpdHkgPT09IG51bGwpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyB1c2VyIGZpbmlzaGVkIHRoZSBhY3Rpdml0eVxuXHRcdFx0aW50ZXJuYWxNb2RlbC5zZXRQcm9wZXJ0eShNWUFDVElWSVRZLCBudWxsKTtcblx0XHR9XG5cblx0XHRicm9hZGNhc3RDb2xsYWJvcmF0aW9uTWVzc2FnZShhY3Rpb24sIGNsaWVudENvbnRlbnQsIGludGVybmFsTW9kZWwsIHRyaWdnZXJlZEFjdGlvbk5hbWUsIHJlZnJlc2hMaXN0QmluZGluZywgcmVxdWVzdGVkUHJvcGVydGllcyk7XG5cdH1cbn07XG5cbmNvbnN0IGdldFdlYlNvY2tldEJhc2VVUkwgPSBmdW5jdGlvbiAoYmluZGluZ0NvbnRleHQ6IENvbnRleHQpOiBzdHJpbmcge1xuXHRyZXR1cm4gYmluZGluZ0NvbnRleHQuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKS5nZXRPYmplY3QoXCIvQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5XZWJTb2NrZXRCYXNlVVJMXCIpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzQ29sbGFib3JhdGlvbkVuYWJsZWQgPSBmdW5jdGlvbiAodmlldzogVmlldyk6IGJvb2xlYW4ge1xuXHRjb25zdCBiaW5kaW5nQ29udGV4dCA9IHZpZXc/LmdldEJpbmRpbmdDb250ZXh0ICYmICh2aWV3LmdldEJpbmRpbmdDb250ZXh0KCkgYXMgQ29udGV4dCk7XG5cdHJldHVybiAhIShiaW5kaW5nQ29udGV4dCAmJiBnZXRXZWJTb2NrZXRCYXNlVVJMKGJpbmRpbmdDb250ZXh0KSk7XG59O1xuXG5leHBvcnQgY29uc3QgY29ubmVjdCA9IGFzeW5jIGZ1bmN0aW9uICh2aWV3OiBWaWV3KSB7XG5cdGNvbnN0IGludGVybmFsTW9kZWwgPSB2aWV3LmdldE1vZGVsKFwiaW50ZXJuYWxcIikgYXMgSlNPTk1vZGVsO1xuXHRjb25zdCBtZSA9IENvbGxhYm9yYXRpb25VdGlscy5nZXRNZSh2aWV3KTtcblxuXHQvLyBSZXRyaWV2aW5nIE1FIGZyb20gc2hlbGwgc2VydmljZVxuXHRpZiAoIW1lKSB7XG5cdFx0Ly8gbm8gbWUgPSBubyBzaGVsbCA9IG5vdCBzdXJlIHdoYXQgdG8gZG9cblx0XHRyZXR1cm47XG5cdH1cblxuXHRjb25zdCBiaW5kaW5nQ29udGV4dCA9IHZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0O1xuXHRjb25zdCB3ZWJTb2NrZXRCYXNlVVJMID0gZ2V0V2ViU29ja2V0QmFzZVVSTChiaW5kaW5nQ29udGV4dCk7XG5cdGNvbnN0IHNlcnZpY2VVcmwgPSBiaW5kaW5nQ29udGV4dC5nZXRNb2RlbCgpLmdldFNlcnZpY2VVcmwoKTtcblxuXHRpZiAoIXdlYlNvY2tldEJhc2VVUkwpIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRjb25zdCBzRHJhZnRVVUlEID0gYXdhaXQgYmluZGluZ0NvbnRleHQucmVxdWVzdFByb3BlcnR5KFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvRHJhZnRVVUlEXCIpO1xuXHRpZiAoIXNEcmFmdFVVSUQpIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRpbml0aWFsaXplQ29sbGFib3JhdGlvbihtZSwgd2ViU29ja2V0QmFzZVVSTCwgc0RyYWZ0VVVJRCwgc2VydmljZVVybCwgaW50ZXJuYWxNb2RlbCwgKG1lc3NhZ2U6IE1lc3NhZ2UpID0+IHtcblx0XHRtZXNzYWdlUmVjZWl2ZShtZXNzYWdlLCB2aWV3KTtcblx0fSk7XG5cdGludGVybmFsTW9kZWwuc2V0UHJvcGVydHkoTVlBQ1RJVklUWSwgbnVsbCk7XG59O1xuXG5leHBvcnQgY29uc3QgZGlzY29ubmVjdCA9IGZ1bmN0aW9uIChjb250cm9sOiBDb250cm9sKSB7XG5cdGNvbnN0IGludGVybmFsTW9kZWwgPSBjb250cm9sLmdldE1vZGVsKFwiaW50ZXJuYWxcIikgYXMgSlNPTk1vZGVsO1xuXHRlbmRDb2xsYWJvcmF0aW9uKGludGVybmFsTW9kZWwpO1xufTtcblxuLyoqXG4gKiBDYWxsYmFjayB3aGVuIGEgbWVzc2FnZSBpcyByZWNlaXZlZCBmcm9tIHRoZSB3ZWJzb2NrZXQuXG4gKlxuICogQHBhcmFtIG1lc3NhZ2UgVGhlIG1lc3NhZ2UgcmVjZWl2ZWRcbiAqIEBwYXJhbSB2aWV3IFRoZSB2aWV3IHRoYXQgd2FzIHVzZWQgaW5pdGlhbGx5IHdoZW4gY29ubmVjdGluZyB0aGUgd2Vic29ja2V0XG4gKi9cbmZ1bmN0aW9uIG1lc3NhZ2VSZWNlaXZlKG1lc3NhZ2U6IE1lc3NhZ2UsIHZpZXc6IFZpZXcpIHtcblx0Y29uc3QgaW50ZXJuYWxNb2RlbDogYW55ID0gdmlldy5nZXRNb2RlbChcImludGVybmFsXCIpO1xuXHRsZXQgYWN0aXZlVXNlcnM6IFVzZXJbXSA9IGludGVybmFsTW9kZWwuZ2V0UHJvcGVydHkoQUNUSVZFVVNFUlMpO1xuXHRsZXQgYWN0aXZpdGllczogVXNlckFjdGl2aXR5W107XG5cdGxldCBhY3Rpdml0eUtleTogc3RyaW5nO1xuXHRjb25zdCBtZXRhUGF0aCA9IGNhbGN1bGF0ZU1ldGFQYXRoKHZpZXcsIG1lc3NhZ2UuY2xpZW50Q29udGVudCk7XG5cdG1lc3NhZ2UudXNlckFjdGlvbiA9IG1lc3NhZ2UudXNlckFjdGlvbiB8fCBtZXNzYWdlLmNsaWVudEFjdGlvbjtcblxuXHRjb25zdCBzZW5kZXI6IFVzZXIgPSB7XG5cdFx0aWQ6IG1lc3NhZ2UudXNlcklELFxuXHRcdG5hbWU6IG1lc3NhZ2UudXNlckRlc2NyaXB0aW9uLFxuXHRcdGluaXRpYWxzOiBDb2xsYWJvcmF0aW9uVXRpbHMuZm9ybWF0SW5pdGlhbHMobWVzc2FnZS51c2VyRGVzY3JpcHRpb24pLFxuXHRcdGNvbG9yOiBDb2xsYWJvcmF0aW9uVXRpbHMuZ2V0VXNlckNvbG9yKG1lc3NhZ2UudXNlcklELCBhY3RpdmVVc2VycywgW10pXG5cdH07XG5cblx0bGV0IG1hY3Rpdml0eTogVXNlckFjdGl2aXR5ID0gc2VuZGVyO1xuXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZWZhdWx0LWNhc2Vcblx0c3dpdGNoIChtZXNzYWdlLnVzZXJBY3Rpb24pIHtcblx0XHRjYXNlIEFjdGl2aXR5LkpvaW46XG5cdFx0Y2FzZSBBY3Rpdml0eS5Kb2luRWNobzpcblx0XHRcdGlmIChhY3RpdmVVc2Vycy5maW5kSW5kZXgoKHVzZXIpID0+IHVzZXIuaWQgPT09IHNlbmRlci5pZCkgPT09IC0xKSB7XG5cdFx0XHRcdGFjdGl2ZVVzZXJzLnVuc2hpZnQoc2VuZGVyKTtcblx0XHRcdFx0aW50ZXJuYWxNb2RlbC5zZXRQcm9wZXJ0eShBQ1RJVkVVU0VSUywgYWN0aXZlVXNlcnMpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAobWVzc2FnZS51c2VyQWN0aW9uID09PSBBY3Rpdml0eS5Kb2luKSB7XG5cdFx0XHRcdC8vIHdlIGVjaG8gb3VyIGV4aXN0ZW5jZSB0byB0aGUgbmV3bHkgZW50ZXJlZCB1c2VyIGFuZCBhbHNvIHNlbmQgdGhlIGN1cnJlbnQgYWN0aXZpdHkgaWYgdGhlcmUgaXMgYW55XG5cdFx0XHRcdGJyb2FkY2FzdENvbGxhYm9yYXRpb25NZXNzYWdlKEFjdGl2aXR5LkpvaW5FY2hvLCBpbnRlcm5hbE1vZGVsLmdldFByb3BlcnR5KE1ZQUNUSVZJVFkpLCBpbnRlcm5hbE1vZGVsKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKG1lc3NhZ2UudXNlckFjdGlvbiA9PT0gQWN0aXZpdHkuSm9pbkVjaG8pIHtcblx0XHRcdFx0aWYgKG1lc3NhZ2UuY2xpZW50Q29udGVudCkge1xuXHRcdFx0XHRcdC8vIGFub3RoZXIgdXNlciB3YXMgYWxyZWFkeSB0eXBpbmcgdGhlcmVmb3JlIEkgd2FudCB0byBzZWUgaGlzIGFjdGl2aXR5IGltbWVkaWF0ZWx5LiBDYWxsaW5nIG1lIGFnYWluIGFzIGEgbGl2ZSBjaGFuZ2Vcblx0XHRcdFx0XHRtZXNzYWdlLnVzZXJBY3Rpb24gPSBBY3Rpdml0eS5MaXZlQ2hhbmdlO1xuXHRcdFx0XHRcdG1lc3NhZ2VSZWNlaXZlKG1lc3NhZ2UsIHZpZXcpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGJyZWFrO1xuXG5cdFx0Y2FzZSBBY3Rpdml0eS5MZWF2ZTpcblx0XHRcdC8vIFJlbW92aW5nIHRoZSBhY3RpdmUgdXNlci4gTm90IHJlbW92aW5nIFwibWVcIiBpZiBJIGhhZCB0aGUgc2NyZWVuIG9wZW4gaW4gYW5vdGhlciBzZXNzaW9uXG5cdFx0XHRhY3RpdmVVc2VycyA9IGFjdGl2ZVVzZXJzLmZpbHRlcigodXNlcikgPT4gdXNlci5pZCAhPT0gc2VuZGVyLmlkIHx8IHVzZXIubWUpO1xuXHRcdFx0aW50ZXJuYWxNb2RlbC5zZXRQcm9wZXJ0eShBQ1RJVkVVU0VSUywgYWN0aXZlVXNlcnMpO1xuXHRcdFx0Y29uc3QgYWxsQWN0aXZpdGllcyA9IGludGVybmFsTW9kZWwuZ2V0UHJvcGVydHkoQUNUSVZJVElFUykgfHwge307XG5cdFx0XHRjb25zdCByZW1vdmVVc2VyQWN0aXZpdGllcyA9IGZ1bmN0aW9uIChiYWc6IGFueSkge1xuXHRcdFx0XHRpZiAoQXJyYXkuaXNBcnJheShiYWcpKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGJhZy5maWx0ZXIoKGFjdGl2aXR5KSA9PiBhY3Rpdml0eS5pZCAhPT0gc2VuZGVyLmlkKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRmb3IgKGNvbnN0IHAgaW4gYmFnKSB7XG5cdFx0XHRcdFx0XHRiYWdbcF0gPSByZW1vdmVVc2VyQWN0aXZpdGllcyhiYWdbcF0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gYmFnO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0cmVtb3ZlVXNlckFjdGl2aXRpZXMoYWxsQWN0aXZpdGllcyk7XG5cdFx0XHRpbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KEFDVElWSVRJRVMsIGFsbEFjdGl2aXRpZXMpO1xuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlIEFjdGl2aXR5LkNoYW5nZTpcblx0XHRcdHVwZGF0ZU9uQ2hhbmdlKHZpZXcsIG1lc3NhZ2UpO1xuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlIEFjdGl2aXR5LkNyZWF0ZTpcblx0XHRcdC8vIEZvciBjcmVhdGUgd2UgYWN0dWFsbHkganVzdCBuZWVkIHRvIHJlZnJlc2ggdGhlIHRhYmxlXG5cdFx0XHR1cGRhdGVPbkNyZWF0ZSh2aWV3LCBtZXNzYWdlKTtcblx0XHRcdGJyZWFrO1xuXG5cdFx0Y2FzZSBBY3Rpdml0eS5EZWxldGU6XG5cdFx0XHQvLyBGb3Igbm93IGFsc28gcmVmcmVzaCB0aGUgcGFnZSBidXQgaW4gY2FzZSBvZiBkZWxldGlvbiB3ZSBuZWVkIHRvIGluZm9ybSB0aGUgdXNlclxuXHRcdFx0dXBkYXRlT25EZWxldGUodmlldywgbWVzc2FnZSk7XG5cdFx0XHRicmVhaztcblxuXHRcdGNhc2UgQWN0aXZpdHkuQWN0aXZhdGU6XG5cdFx0XHRkcmFmdENsb3NlZEJ5T3RoZXJVc2VyKHZpZXcsIG1lc3NhZ2UuY2xpZW50Q29udGVudCwgQ29sbGFib3JhdGlvblV0aWxzLmdldFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9BQ1RJVkFURVwiLCBzZW5kZXIubmFtZSkpO1xuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlIEFjdGl2aXR5LkRpc2NhcmQ6XG5cdFx0XHRkcmFmdENsb3NlZEJ5T3RoZXJVc2VyKHZpZXcsIG1lc3NhZ2UuY2xpZW50Q29udGVudCwgQ29sbGFib3JhdGlvblV0aWxzLmdldFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9ESVNDQVJEXCIsIHNlbmRlci5uYW1lKSk7XG5cdFx0XHRicmVhaztcblxuXHRcdGNhc2UgQWN0aXZpdHkuQWN0aW9uOlxuXHRcdFx0dXBkYXRlT25BY3Rpb24odmlldywgbWVzc2FnZSk7XG5cdFx0XHRicmVhaztcblxuXHRcdGNhc2UgQWN0aXZpdHkuTGl2ZUNoYW5nZTpcblx0XHRcdG1hY3Rpdml0eSA9IHNlbmRlcjtcblx0XHRcdG1hY3Rpdml0eS5rZXkgPSBnZXRBY3Rpdml0eUtleUZyb21QYXRoKG1lc3NhZ2UuY2xpZW50Q29udGVudCk7XG5cblx0XHRcdC8vIHN0dXBpZCBKU09OIG1vZGVsLi4uXG5cdFx0XHRsZXQgaW5pdEpTT05Nb2RlbDogc3RyaW5nID0gXCJcIjtcblx0XHRcdGNvbnN0IHBhcnRzID0gbWV0YVBhdGguc3BsaXQoXCIvXCIpO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDE7IGkgPCBwYXJ0cy5sZW5ndGggLSAxOyBpKyspIHtcblx0XHRcdFx0aW5pdEpTT05Nb2RlbCArPSBgLyR7cGFydHNbaV19YDtcblx0XHRcdFx0aWYgKCFpbnRlcm5hbE1vZGVsLmdldFByb3BlcnR5KEFDVElWSVRJRVMgKyBpbml0SlNPTk1vZGVsKSkge1xuXHRcdFx0XHRcdGludGVybmFsTW9kZWwuc2V0UHJvcGVydHkoQUNUSVZJVElFUyArIGluaXRKU09OTW9kZWwsIHt9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRhY3Rpdml0aWVzID0gaW50ZXJuYWxNb2RlbC5nZXRQcm9wZXJ0eShBQ1RJVklUSUVTICsgbWV0YVBhdGgpO1xuXHRcdFx0YWN0aXZpdGllcyA9IGFjdGl2aXRpZXM/LnNsaWNlID8gYWN0aXZpdGllcy5zbGljZSgpIDogW107XG5cdFx0XHRhY3Rpdml0aWVzLnB1c2gobWFjdGl2aXR5KTtcblx0XHRcdGludGVybmFsTW9kZWwuc2V0UHJvcGVydHkoQUNUSVZJVElFUyArIG1ldGFQYXRoLCBhY3Rpdml0aWVzKTtcblx0XHRcdGJyZWFrO1xuXG5cdFx0Y2FzZSBBY3Rpdml0eS5VbmRvOlxuXHRcdFx0Ly8gVGhlIHVzZXIgZGlkIGEgY2hhbmdlIGJ1dCByZXZlcnRlZCBpdCwgdGhlcmVmb3JlIHVuYmxvY2sgdGhlIGNvbnRyb2xcblx0XHRcdGFjdGl2aXRpZXMgPSBpbnRlcm5hbE1vZGVsLmdldFByb3BlcnR5KEFDVElWSVRJRVMgKyBtZXRhUGF0aCk7XG5cdFx0XHRhY3Rpdml0eUtleSA9IGdldEFjdGl2aXR5S2V5RnJvbVBhdGgobWVzc2FnZS5jbGllbnRDb250ZW50KTtcblx0XHRcdGludGVybmFsTW9kZWwuc2V0UHJvcGVydHkoXG5cdFx0XHRcdEFDVElWSVRJRVMgKyBtZXRhUGF0aCxcblx0XHRcdFx0YWN0aXZpdGllcy5maWx0ZXIoKGEpID0+IGEua2V5ICE9PSBhY3Rpdml0eUtleSlcblx0XHRcdCk7XG5cdFx0XHRicmVhaztcblx0fVxufVxuXG4vKipcbiAqIERpc3BsYXlzIGEgbWVzc2FnZSB0aGF0IHRoZSBjdXJyZW50IGRyYWZ0IHdhcyBjbG9zZWQgYmUgYW5vdGhlciB1c2VyLCBhbmQgbmF2aWdhdGVzIGJhY2sgdG8gYSBwcm9wZXIgdmlldy5cbiAqXG4gKiBAcGFyYW0gdmlldyBUaGUgdmlldyB0aGF0IHdhcyB1c2VkIGluaXRpYWxseSB3aGVuIGNvbm5lY3RpbmcgdGhlIHdlYnNvY2tldFxuICogQHBhcmFtIHBhdGggVGhlIHBhdGggb2YgdGhlIGNvbnRleHQgdG8gbmF2aWdhdGUgdG9cbiAqIEBwYXJhbSBtZXNzYWdlVGV4dCBUaGUgbWVzc2FnZSB0byBkaXNwbGF5XG4gKi9cbmZ1bmN0aW9uIGRyYWZ0Q2xvc2VkQnlPdGhlclVzZXIodmlldzogVmlldywgcGF0aDogc3RyaW5nLCBtZXNzYWdlVGV4dDogc3RyaW5nKSB7XG5cdGRpc2Nvbm5lY3Qodmlldyk7XG5cdE1lc3NhZ2VCb3guaW5mb3JtYXRpb24obWVzc2FnZVRleHQpO1xuXHQodmlldy5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQpXG5cdFx0LmdldEJpbmRpbmcoKVxuXHRcdC5yZXNldENoYW5nZXMoKVxuXHRcdC50aGVuKGZ1bmN0aW9uICgpIHtcblx0XHRcdG5hdmlnYXRlKHBhdGgsIHZpZXcpO1xuXHRcdH0pXG5cdFx0LmNhdGNoKGZ1bmN0aW9uICgpIHtcblx0XHRcdExvZy5lcnJvcihcIlBlbmRpbmcgQ2hhbmdlcyBjb3VsZCBub3QgYmUgcmVzZXQgLSBzdGlsbCBuYXZpZ2F0aW5nIHRvIGFjdGl2ZSBpbnN0YW5jZVwiKTtcblx0XHRcdG5hdmlnYXRlKHBhdGgsIHZpZXcpO1xuXHRcdH0pO1xufVxuXG4vKipcbiAqIFVwZGF0ZXMgZGF0YSB3aGVuIGEgQ0hBTkdFIG1lc3NhZ2UgaGFzIGJlZW4gcmVjZWl2ZWQuXG4gKlxuICogQHBhcmFtIHZpZXcgVGhlIHZpZXcgdGhhdCB3YXMgdXNlZCBpbml0aWFsbHkgd2hlbiBjb25uZWN0aW5nIHRoZSB3ZWJzb2NrZXRcbiAqIEBwYXJhbSBtZXNzYWdlIFRoZSBtZXNzYWdlIHJlY2VpdmVkIGZyb20gdGhlIHdlYnNvY2tldFxuICovXG5mdW5jdGlvbiB1cGRhdGVPbkNoYW5nZSh2aWV3OiBWaWV3LCBtZXNzYWdlOiBNZXNzYWdlKSB7XG5cdGNvbnN0IHVwZGF0ZWRPYmplY3RzUGF0aHMgPSBtZXNzYWdlLmNsaWVudENvbnRlbnQuc3BsaXQoXCJ8XCIpO1xuXHRjb25zdCBtZXRhTW9kZWwgPSB2aWV3LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCkgYXMgT0RhdGFNZXRhTW9kZWw7XG5cdGNvbnN0IGludGVybmFsTW9kZWwgPSB2aWV3LmdldE1vZGVsKFwiaW50ZXJuYWxcIikgYXMgSlNPTk1vZGVsO1xuXG5cdC8vIFJlbW92ZSBhbGwgbG9ja3MgY29ycmVzcG9uZGluZyB0byB0aGUgcGF0aHNcblx0dXBkYXRlZE9iamVjdHNQYXRocy5mb3JFYWNoKCh1cGRhdGVkUGF0aCkgPT4ge1xuXHRcdGNvbnN0IHVwZGF0ZWRNZXRhUGF0aCA9IG1ldGFNb2RlbC5nZXRNZXRhUGF0aCh1cGRhdGVkUGF0aCk7XG5cdFx0Y29uc3QgYWN0aXZpdHlLZXkgPSBnZXRBY3Rpdml0eUtleUZyb21QYXRoKHVwZGF0ZWRQYXRoKTtcblx0XHRsZXQgY3VycmVudEFjdGl2aXRpZXM6IGFueVtdID0gaW50ZXJuYWxNb2RlbC5nZXRQcm9wZXJ0eShBQ1RJVklUSUVTICsgdXBkYXRlZE1ldGFQYXRoKSB8fCBbXTtcblx0XHRjdXJyZW50QWN0aXZpdGllcyA9IGN1cnJlbnRBY3Rpdml0aWVzPy5maWx0ZXIgJiYgY3VycmVudEFjdGl2aXRpZXMuZmlsdGVyKChhY3Rpdml0eSkgPT4gYWN0aXZpdHkua2V5ICE9PSBhY3Rpdml0eUtleSk7XG5cdFx0aWYgKGN1cnJlbnRBY3Rpdml0aWVzKSB7XG5cdFx0XHRpbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KEFDVElWSVRJRVMgKyB1cGRhdGVkTWV0YVBhdGgsIGN1cnJlbnRBY3Rpdml0aWVzKTtcblx0XHR9XG5cdH0pO1xuXG5cdGNvbnN0IGN1cnJlbnRQYWdlID0gZ2V0Q3VycmVudFBhZ2Uodmlldyk7XG5cdGNvbnN0IGN1cnJlbnRDb250ZXh0ID0gY3VycmVudFBhZ2UuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0IHwgdW5kZWZpbmVkO1xuXHRjb25zdCByZXF1ZXN0UHJvbWlzZXMgPSB1cGRhdGVkT2JqZWN0c1BhdGhzLm1hcCgocGF0aCkgPT4gYXBwbHlVcGRhdGVzRm9yQ2hhbmdlKHZpZXcsIHBhdGgpKTtcblxuXHQvLyBTaW11bGF0ZSBhbnkgY2hhbmdlIHNvIHRoZSBlZGl0IGZsb3cgc2hvd3MgdGhlIGRyYWZ0IGluZGljYXRvciBhbmQgc2V0cyB0aGUgcGFnZSB0byBkaXJ0eVxuXHRjdXJyZW50UGFnZS5nZXRDb250cm9sbGVyKCkuZWRpdEZsb3cudXBkYXRlRG9jdW1lbnQoY3VycmVudENvbnRleHQsIFByb21pc2UuYWxsKHJlcXVlc3RQcm9taXNlcykpO1xufVxuXG4vKipcbiAqIFVwZGF0ZXMgZGF0YSBjb3JyZXNwb25kaW5nIHRvIGEgcGF0aC5cbiAqXG4gKiBAcGFyYW0gdmlldyBUaGUgdmlldyB0aGF0IHdhcyB1c2VkIGluaXRpYWxseSB3aGVuIGNvbm5lY3RpbmcgdGhlIHdlYnNvY2tldFxuICogQHBhcmFtIHByb3BlcnR5UGF0aEZvclVwZGF0ZSBBYnNvbHV0ZSBwYXRoIHRvIHRoZSB1cGRhdGVkIHByb3BlcnR5XG4gKiBAcmV0dXJucyBBIHByb21pc2UgcmVzb2x2ZWQgd2hlbiB0aGUgZGF0YSBhbmQgaXRzIHJlbGF0ZWQgc2lkZSBlZmZlY3RzIGhhdmUgYmVlbiByZWNlaXZlZFxuICovXG5hc3luYyBmdW5jdGlvbiBhcHBseVVwZGF0ZXNGb3JDaGFuZ2UodmlldzogVmlldywgcHJvcGVydHlQYXRoRm9yVXBkYXRlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcblx0Y29uc3QgbWV0YU1vZGVsID0gdmlldy5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpIGFzIE9EYXRhTWV0YU1vZGVsO1xuXHRjb25zdCBtZXRhQ29udGV4dCA9IG1ldGFNb2RlbC5nZXRNZXRhQ29udGV4dChwcm9wZXJ0eVBhdGhGb3JVcGRhdGUpO1xuXHRjb25zdCBkYXRhTW9kZWxPYmplY3QgPSBNZXRhTW9kZWxDb252ZXJ0ZXIuZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKG1ldGFDb250ZXh0KTtcblx0Y29uc3QgdGFyZ2V0Q29udGV4dFBhdGggPSBwcm9wZXJ0eVBhdGhGb3JVcGRhdGUuc3Vic3RyaW5nKDAsIHByb3BlcnR5UGF0aEZvclVwZGF0ZS5sYXN0SW5kZXhPZihcIi9cIikpOyAvLyBSZW1vdmUgcHJvcGVydHkgbmFtZVxuXHRjb25zdCB0YXJnZXRDb250ZXh0ID0gZmluZENvbnRleHRGb3JVcGRhdGUodmlldywgdGFyZ2V0Q29udGV4dFBhdGgpO1xuXHRjb25zdCBwYXJlbnRDb2xsZWN0aW9uUGF0aCA9IHRhcmdldENvbnRleHRQYXRoLnN1YnN0cmluZygwLCB0YXJnZXRDb250ZXh0UGF0aC5sYXN0SW5kZXhPZihcIihcIikpO1xuXHRjb25zdCBwYXJlbnRDb250ZXh0UGF0aCA9IHBhcmVudENvbGxlY3Rpb25QYXRoLnN1YnN0cmluZygwLCBwYXJlbnRDb2xsZWN0aW9uUGF0aC5sYXN0SW5kZXhPZihcIi9cIikpO1xuXHRjb25zdCBwYXJlbnRDb250ZXh0ID0gcGFyZW50Q29udGV4dFBhdGggPyBmaW5kQ29udGV4dEZvclVwZGF0ZSh2aWV3LCBwYXJlbnRDb250ZXh0UGF0aCkgOiB1bmRlZmluZWQ7XG5cblx0aWYgKCF0YXJnZXRDb250ZXh0ICYmICFwYXJlbnRDb250ZXh0KSB7XG5cdFx0cmV0dXJuOyAvLyBObyBjb250ZXh0IGZvciB1cGRhdGVcblx0fVxuXG5cdHRyeSB7XG5cdFx0Y29uc3Qgc2lkZUVmZmVjdHNQcm9taXNlczogUHJvbWlzZTxhbnk+W10gPSBbXTtcblx0XHRjb25zdCBzaWRlRWZmZWN0c1NlcnZpY2UgPSBDb2xsYWJvcmF0aW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHZpZXcpLmdldFNpZGVFZmZlY3RzU2VydmljZSgpO1xuXG5cdFx0aWYgKHRhcmdldENvbnRleHQpIHtcblx0XHRcdC8vIFdlIGhhdmUgYSB0YXJnZXQgY29udGV4dCwgc28gd2UgY2FuIHJldHJpZXZlIHRoZSB1cGRhdGVkIHByb3BlcnR5XG5cdFx0XHRjb25zdCB0YXJnZXRNZXRhUGF0aCA9IG1ldGFNb2RlbC5nZXRNZXRhUGF0aCh0YXJnZXRDb250ZXh0LmdldFBhdGgoKSk7XG5cdFx0XHRjb25zdCByZWxhdGl2ZU1ldGFQYXRoRm9yVXBkYXRlID0gbWV0YU1vZGVsLmdldE1ldGFQYXRoKHByb3BlcnR5UGF0aEZvclVwZGF0ZSkucmVwbGFjZSh0YXJnZXRNZXRhUGF0aCwgXCJcIikuc2xpY2UoMSk7XG5cdFx0XHRzaWRlRWZmZWN0c1Byb21pc2VzLnB1c2goc2lkZUVmZmVjdHNTZXJ2aWNlLnJlcXVlc3RTaWRlRWZmZWN0cyhbcmVsYXRpdmVNZXRhUGF0aEZvclVwZGF0ZV0sIHRhcmdldENvbnRleHQsIFNZTkNHUk9VUElEKSk7XG5cdFx0fVxuXG5cdFx0Ly8gR2V0IHRoZSBmaWVsZEdyb3VwSWRzIGNvcnJlc3BvbmRpbmcgdG8gcGF0aEZvclVwZGF0ZVxuXHRcdGNvbnN0IGZpZWxkR3JvdXBJZHMgPSBzaWRlRWZmZWN0c1NlcnZpY2UuY29tcHV0ZUZpZWxkR3JvdXBJZHMoXG5cdFx0XHRkYXRhTW9kZWxPYmplY3QudGFyZ2V0RW50aXR5VHlwZS5mdWxseVF1YWxpZmllZE5hbWUsXG5cdFx0XHRkYXRhTW9kZWxPYmplY3QudGFyZ2V0T2JqZWN0LmZ1bGx5UXVhbGlmaWVkTmFtZVxuXHRcdCk7XG5cblx0XHQvLyBFeGVjdXRlIHRoZSBzaWRlIGVmZmVjdHMgZm9yIHRoZSBmaWVsZEdyb3VwSWRzXG5cdFx0aWYgKGZpZWxkR3JvdXBJZHMubGVuZ3RoKSB7XG5cdFx0XHRjb25zdCBwYWdlQ29udHJvbGxlciA9IHZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIFBhZ2VDb250cm9sbGVyO1xuXHRcdFx0Y29uc3Qgc2lkZUVmZmVjdHNNYXBGb3JGaWVsZEdyb3VwID0gcGFnZUNvbnRyb2xsZXIuX3NpZGVFZmZlY3RzLmdldFNpZGVFZmZlY3RzTWFwRm9yRmllbGRHcm91cHMoXG5cdFx0XHRcdGZpZWxkR3JvdXBJZHMsXG5cdFx0XHRcdHRhcmdldENvbnRleHQgfHwgcGFyZW50Q29udGV4dFxuXHRcdFx0KSBhcyBGaWVsZFNpZGVFZmZlY3REaWN0aW9uYXJ5O1xuXHRcdFx0T2JqZWN0LmtleXMoc2lkZUVmZmVjdHNNYXBGb3JGaWVsZEdyb3VwKS5mb3JFYWNoKChzaWRlRWZmZWN0TmFtZSkgPT4ge1xuXHRcdFx0XHRjb25zdCBzaWRlRWZmZWN0ID0gc2lkZUVmZmVjdHNNYXBGb3JGaWVsZEdyb3VwW3NpZGVFZmZlY3ROYW1lXTtcblx0XHRcdFx0c2lkZUVmZmVjdHNQcm9taXNlcy5wdXNoKFxuXHRcdFx0XHRcdHBhZ2VDb250cm9sbGVyLl9zaWRlRWZmZWN0cy5yZXF1ZXN0U2lkZUVmZmVjdHMoc2lkZUVmZmVjdC5zaWRlRWZmZWN0cywgc2lkZUVmZmVjdC5jb250ZXh0LCBTWU5DR1JPVVBJRClcblx0XHRcdFx0KTtcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdGF3YWl0IFByb21pc2UuYWxsKHNpZGVFZmZlY3RzUHJvbWlzZXMpO1xuXHR9IGNhdGNoIChlcnIpIHtcblx0XHRMb2cuZXJyb3IoXCJGYWlsZWQgdG8gdXBkYXRlIGRhdGEgYWZ0ZXIgY2hhbmdlOlwiICsgZXJyKTtcblx0XHR0aHJvdyBlcnI7XG5cdH1cbn1cblxuLyoqXG4gKiBVcGRhdGVzIGRhdGEgd2hlbiBhIERFTEVURSBtZXNzYWdlIGhhcyBiZWVuIHJlY2VpdmVkLlxuICpcbiAqIEBwYXJhbSB2aWV3IFRoZSB2aWV3IHRoYXQgd2FzIHVzZWQgaW5pdGlhbGx5IHdoZW4gY29ubmVjdGluZyB0aGUgd2Vic29ja2V0XG4gKiBAcGFyYW0gbWVzc2FnZSBUaGUgbWVzc2FnZSByZWNlaXZlZCBmcm9tIHRoZSB3ZWJzb2NrZXRcbiAqL1xuZnVuY3Rpb24gdXBkYXRlT25EZWxldGUodmlldzogVmlldywgbWVzc2FnZTogTWVzc2FnZSkge1xuXHRjb25zdCBjdXJyZW50UGFnZSA9IGdldEN1cnJlbnRQYWdlKHZpZXcpO1xuXHRjb25zdCBjdXJyZW50Q29udGV4dCA9IGN1cnJlbnRQYWdlLmdldEJpbmRpbmdDb250ZXh0KCkgYXMgQ29udGV4dDtcblx0Y29uc3QgY3VycmVudFBhdGggPSBjdXJyZW50Q29udGV4dC5nZXRQYXRoKCk7XG5cblx0Y29uc3QgZGVsZXRlZE9iamVjdFBhdGhzID0gbWVzc2FnZS5jbGllbnRDb250ZW50LnNwbGl0KFwifFwiKTtcblxuXHQvLyBjaGVjayBpZiB1c2VyIGN1cnJlbnRseSBkaXNwbGF5cyBhIGRlbGV0ZWQgb2JqZWN0IG9yIG9uZSBvZiBpdHMgZGVzY2VuZGFudHNcblx0Y29uc3QgZGVsZXRlZFBhdGhJblVzZSA9IGRlbGV0ZWRPYmplY3RQYXRocy5maW5kKChkZWxldGVkUGF0aCkgPT4gY3VycmVudFBhdGguc3RhcnRzV2l0aChkZWxldGVkUGF0aCkpO1xuXHRpZiAoZGVsZXRlZFBhdGhJblVzZSkge1xuXHRcdC8vIGFueSBvdGhlciB1c2VyIGRlbGV0ZWQgdGhlIG9iamVjdCBJJ20gY3VycmVudGx5IGxvb2tpbmcgYXQuIEluZm9ybSB0aGUgdXNlciB3ZSB3aWxsIG5hdmlnYXRlIHRvIHJvb3Qgbm93XG5cdFx0TWVzc2FnZUJveC5pbmZvcm1hdGlvbihDb2xsYWJvcmF0aW9uVXRpbHMuZ2V0VGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0RFTEVURVwiLCBtZXNzYWdlLnVzZXJEZXNjcmlwdGlvbiksIHtcblx0XHRcdG9uQ2xvc2U6ICgpID0+IHtcblx0XHRcdFx0Ly8gV2UgcmV0cmlldmUgdGhlIGRlbGV0ZWQgY29udGV4dCBhcyBhIGtlZXAtYWxpdmUsIGFuZCBkaXNhYmxlIGl0cyBrZWVwYWxpdmUgc3RhdHVzLFxuXHRcdFx0XHQvLyBzbyB0aGF0IGl0IGlzIHByb3Blcmx5IGRlc3Ryb3llZCB3aGVuIHJlZnJlc2hpbmcgZGF0YVxuXHRcdFx0XHRjb25zdCB0YXJnZXRDb250ZXh0ID0gY3VycmVudENvbnRleHQuZ2V0TW9kZWwoKS5nZXRLZWVwQWxpdmVDb250ZXh0KGRlbGV0ZWRQYXRoSW5Vc2UpO1xuXHRcdFx0XHR0YXJnZXRDb250ZXh0LnNldEtlZXBBbGl2ZShmYWxzZSk7XG5cdFx0XHRcdGNvbnN0IHJlcXVlc3RQcm9taXNlID0gYXBwbHlVcGRhdGVzRm9yQ29sbGVjdGlvbih2aWV3LCBkZWxldGVkT2JqZWN0UGF0aHNbMF0pO1xuXHRcdFx0XHRjdXJyZW50UGFnZS5nZXRDb250cm9sbGVyKCkuZWRpdEZsb3cudXBkYXRlRG9jdW1lbnQoY3VycmVudFBhZ2UuZ2V0QmluZGluZ0NvbnRleHQoKSwgcmVxdWVzdFByb21pc2UpO1xuXHRcdFx0XHQoY3VycmVudFBhZ2UuZ2V0Q29udHJvbGxlcigpIGFzIFBhZ2VDb250cm9sbGVyKS5fcm91dGluZy5uYXZpZ2F0ZUJhY2tGcm9tQ29udGV4dCh0YXJnZXRDb250ZXh0KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHRjb25zdCByZXF1ZXN0UHJvbWlzZSA9IGFwcGx5VXBkYXRlc0ZvckNvbGxlY3Rpb24odmlldywgZGVsZXRlZE9iamVjdFBhdGhzWzBdKTtcblx0XHRjdXJyZW50UGFnZS5nZXRDb250cm9sbGVyKCkuZWRpdEZsb3cudXBkYXRlRG9jdW1lbnQoY3VycmVudFBhZ2UuZ2V0QmluZGluZ0NvbnRleHQoKSwgcmVxdWVzdFByb21pc2UpO1xuXHR9XG59XG5cbi8qKlxuICogVXBkYXRlcyBkYXRhIHdoZW4gYSBDUkVBVEUgbWVzc2FnZSBoYXMgYmVlbiByZWNlaXZlZC5cbiAqXG4gKiBAcGFyYW0gdmlldyBUaGUgdmlldyB0aGF0IHdhcyB1c2VkIGluaXRpYWxseSB3aGVuIGNvbm5lY3RpbmcgdGhlIHdlYnNvY2tldFxuICogQHBhcmFtIG1lc3NhZ2UgVGhlIG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSB0aGUgd2Vic29ja2V0XG4gKi9cbmZ1bmN0aW9uIHVwZGF0ZU9uQ3JlYXRlKHZpZXc6IFZpZXcsIG1lc3NhZ2U6IE1lc3NhZ2UpIHtcblx0Y29uc3QgY3VycmVudFBhZ2UgPSBnZXRDdXJyZW50UGFnZSh2aWV3KTtcblx0Y29uc3QgY3JlYXRlZE9iamVjdFBhdGhzID0gbWVzc2FnZS5jbGllbnRDb250ZW50LnNwbGl0KFwifFwiKTtcblxuXHRjb25zdCByZXF1ZXN0UHJvbWlzZSA9IGFwcGx5VXBkYXRlc0ZvckNvbGxlY3Rpb24odmlldywgY3JlYXRlZE9iamVjdFBhdGhzWzBdKTtcblx0Ly8gU2ltdWxhdGUgYSBjaGFuZ2Ugc28gdGhlIGVkaXQgZmxvdyBzaG93cyB0aGUgZHJhZnQgaW5kaWNhdG9yIGFuZCBzZXRzIHRoZSBwYWdlIHRvIGRpcnR5XG5cdGN1cnJlbnRQYWdlLmdldENvbnRyb2xsZXIoKS5lZGl0Rmxvdy51cGRhdGVEb2N1bWVudChjdXJyZW50UGFnZS5nZXRCaW5kaW5nQ29udGV4dCgpLCByZXF1ZXN0UHJvbWlzZSk7XG59XG5cbi8qKlxuICogVXBkYXRlcyBkYXRhIGluIGEgY29sbGVjdGlvbi5cbiAqXG4gKiBAcGFyYW0gdmlldyBUaGUgdmlldyB0aGF0IHdhcyB1c2VkIGluaXRpYWxseSB3aGVuIGNvbm5lY3RpbmcgdGhlIHdlYnNvY2tldFxuICogQHBhcmFtIHBhdGhJbkNvbGxlY3Rpb24gQSBwYXRoIHRvIGFuIGVudGl0eSBpbiB0aGUgY29sbGVjdGlvblxuICovXG5hc3luYyBmdW5jdGlvbiBhcHBseVVwZGF0ZXNGb3JDb2xsZWN0aW9uKHZpZXc6IFZpZXcsIHBhdGhJbkNvbGxlY3Rpb246IHN0cmluZykge1xuXHRjb25zdCBhcHBDb21wb25lbnQgPSBDb2xsYWJvcmF0aW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHZpZXcpO1xuXHRjb25zdCBwYXJlbnRQYXRoID0gcGF0aEluQ29sbGVjdGlvbi5zdWJzdHJpbmcoMCwgcGF0aEluQ29sbGVjdGlvbi5sYXN0SW5kZXhPZihcIi9cIikpO1xuXHRjb25zdCBwYXJlbnRDb250ZXh0ID0gZmluZENvbnRleHRGb3JVcGRhdGUodmlldywgcGFyZW50UGF0aCk7XG5cblx0aWYgKHBhcmVudENvbnRleHQpIHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3Qgc2lkZUVmZmVjdHNQcm9taXNlczogUHJvbWlzZTxhbnk+W10gPSBbXTtcblxuXHRcdFx0Y29uc3QgbWV0YU1vZGVsID0gcGFyZW50Q29udGV4dC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpO1xuXHRcdFx0Y29uc3QgbWV0YVBhdGhGb3JVcGRhdGUgPSBtZXRhTW9kZWwuZ2V0TWV0YVBhdGgocGF0aEluQ29sbGVjdGlvbik7XG5cdFx0XHRjb25zdCBwYXJlbnRNZXRhUGF0aCA9IG1ldGFNb2RlbC5nZXRNZXRhUGF0aChwYXJlbnRDb250ZXh0LmdldFBhdGgoKSk7XG5cdFx0XHRjb25zdCByZWxhdGl2ZVBhdGggPSBtZXRhUGF0aEZvclVwZGF0ZS5yZXBsYWNlKGAke3BhcmVudE1ldGFQYXRofS9gLCBcIlwiKTtcblxuXHRcdFx0Ly8gUmVsb2FkIHRoZSBjb2xsZWN0aW9uXG5cdFx0XHRjb25zdCBzaWRlRWZmZWN0c1NlcnZpY2UgPSBhcHBDb21wb25lbnQuZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlKCk7XG5cdFx0XHRzaWRlRWZmZWN0c1Byb21pc2VzLnB1c2goc2lkZUVmZmVjdHNTZXJ2aWNlLnJlcXVlc3RTaWRlRWZmZWN0cyhbcmVsYXRpdmVQYXRoXSwgcGFyZW50Q29udGV4dCwgU1lOQ0dST1VQSUQpKTtcblxuXHRcdFx0Ly8gUmVxdWVzdCB0aGUgc2lkZSBlZmZlY3RzIGZvciB0aGUgY29sbGVjdGlvblxuXHRcdFx0c2lkZUVmZmVjdHNQcm9taXNlcy5wdXNoKHNpZGVFZmZlY3RzU2VydmljZS5yZXF1ZXN0U2lkZUVmZmVjdHNGb3JOYXZpZ2F0aW9uUHJvcGVydHkocmVsYXRpdmVQYXRoLCBwYXJlbnRDb250ZXh0LCBTWU5DR1JPVVBJRCkpO1xuXG5cdFx0XHRhd2FpdCBQcm9taXNlLmFsbChzaWRlRWZmZWN0c1Byb21pc2VzKTtcblx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdExvZy5lcnJvcihcIkZhaWxlZCB0byB1cGRhdGUgZGF0YSBhZnRlciBjb2xsZWN0aW9uIHVwZGF0ZTpcIiArIGVycik7XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogVXBkYXRlcyBkYXRhIHdoZW4gYSBBQ1RJT04gbWVzc2FnZSBoYXMgYmVlbiByZWNlaXZlZC5cbiAqXG4gKiBAcGFyYW0gdmlldyBUaGUgdmlldyB0aGF0IHdhcyB1c2VkIGluaXRpYWxseSB3aGVuIGNvbm5lY3RpbmcgdGhlIHdlYnNvY2tldFxuICogQHBhcmFtIG1lc3NhZ2UgVGhlIG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSB0aGUgd2Vic29ja2V0XG4gKi9cbmZ1bmN0aW9uIHVwZGF0ZU9uQWN0aW9uKHZpZXc6IFZpZXcsIG1lc3NhZ2U6IE1lc3NhZ2UpIHtcblx0Y29uc3QgY3VycmVudFBhZ2UgPSBnZXRDdXJyZW50UGFnZSh2aWV3KTtcblx0Y29uc3QgcGF0aHNGb3JBY3Rpb24gPSBtZXNzYWdlLmNsaWVudENvbnRlbnQuc3BsaXQoXCJ8XCIpO1xuXHRjb25zdCBhY3Rpb25OYW1lID0gbWVzc2FnZS5jbGllbnRUcmlnZ2VyZWRBY3Rpb25OYW1lIHx8IFwiXCI7XG5cdGNvbnN0IHJlcXVlc3RlZFByb3BlcnRpZXMgPSBtZXNzYWdlLmNsaWVudFJlcXVlc3RlZFByb3BlcnRpZXM/LnNwbGl0KFwifFwiKTtcblx0Y29uc3QgcmVmcmVzaExpc3RCaW5kaW5nID0gbWVzc2FnZS5jbGllbnRSZWZyZXNoTGlzdEJpbmRpbmcgPT09IFwidHJ1ZVwiO1xuXG5cdGxldCByZXF1ZXN0UHJvbWlzZXM6IFByb21pc2U8dm9pZD5bXSA9IFtdO1xuXG5cdGlmIChyZWZyZXNoTGlzdEJpbmRpbmcpIHtcblx0XHRyZXF1ZXN0UHJvbWlzZXMucHVzaChhcHBseVVwZGF0ZXNGb3JDb2xsZWN0aW9uKHZpZXcsIHBhdGhzRm9yQWN0aW9uWzBdKSk7XG5cdH0gZWxzZSB7XG5cdFx0cmVxdWVzdFByb21pc2VzID0gcGF0aHNGb3JBY3Rpb24ubWFwKChwYXRoKSA9PiByZXF1ZXN0VXBkYXRlRm9yQWN0aW9uKHZpZXcsIHBhdGgsIGFjdGlvbk5hbWUsIHJlcXVlc3RlZFByb3BlcnRpZXMpKTtcblx0fVxuXG5cdC8vIFNpbXVsYXRlIGFueSBjaGFuZ2Ugc28gdGhlIGVkaXQgZmxvdyBzaG93cyB0aGUgZHJhZnQgaW5kaWNhdG9yIGFuZCBzZXRzIHRoZSBwYWdlIHRvIGRpcnR5XG5cdGN1cnJlbnRQYWdlLmdldENvbnRyb2xsZXIoKS5lZGl0Rmxvdy51cGRhdGVEb2N1bWVudChjdXJyZW50UGFnZS5nZXRCaW5kaW5nQ29udGV4dCgpLCBQcm9taXNlLmFsbChyZXF1ZXN0UHJvbWlzZXMpKTtcbn1cblxuLyoqXG4gKiBVcGRhdGVzIHNpZGUtZWZmZWN0cyBkYXRhIHdoZW4gYW4gYWN0aW9uIGhhcyBiZWVuIHRyaWdnZXJlZCBvbiBhIGNvbnRleHQuXG4gKlxuICogQHBhcmFtIHZpZXcgVGhlIHZpZXcgdGhhdCB3YXMgdXNlZCBpbml0aWFsbHkgd2hlbiBjb25uZWN0aW5nIHRoZSB3ZWJzb2NrZXRcbiAqIEBwYXJhbSBwYXRoRm9yQWN0aW9uIFBhdGggb2YgdGhlIGNvbnRleHQgdG8gYXBwbHkgdGhlIGFjdGlvbiB0b1xuICogQHBhcmFtIGFjdGlvbk5hbWUgTmFtZSBvZiB0aGUgYWN0aW9uXG4gKiBAcGFyYW0gcmVxdWVzdGVkUHJvcGVydGllc1xuICogQHJldHVybnMgUHJvbWlzZSByZXNvbHZlZCB3aGVuIHRoZSBzaWRlLWVmZmVjdHMgZGF0YSBoYXMgYmVlbiBsb2FkZWRcbiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVxdWVzdFVwZGF0ZUZvckFjdGlvbihcblx0dmlldzogVmlldyxcblx0cGF0aEZvckFjdGlvbjogc3RyaW5nLFxuXHRhY3Rpb25OYW1lOiBzdHJpbmcsXG5cdHJlcXVlc3RlZFByb3BlcnRpZXM/OiBzdHJpbmdbXVxuKTogUHJvbWlzZTx2b2lkPiB7XG5cdGNvbnN0IHRhcmdldENvbnRleHQgPSBmaW5kQ29udGV4dEZvclVwZGF0ZSh2aWV3LCBwYXRoRm9yQWN0aW9uKTtcblx0aWYgKCF0YXJnZXRDb250ZXh0KSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Y29uc3QgYXBwQ29tcG9uZW50ID0gQ29sbGFib3JhdGlvblV0aWxzLmdldEFwcENvbXBvbmVudCh2aWV3KTtcblx0Y29uc3Qgc2lkZUVmZmVjdFNlcnZpY2UgPSBhcHBDb21wb25lbnQuZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlKCk7XG5cdGNvbnN0IHNpZGVFZmZlY3RzRnJvbUFjdGlvbiA9IHNpZGVFZmZlY3RTZXJ2aWNlLmdldE9EYXRhQWN0aW9uU2lkZUVmZmVjdHMoYWN0aW9uTmFtZSwgdGFyZ2V0Q29udGV4dCk7XG5cdGNvbnN0IHNpZGVFZmZlY3RQcm9taXNlczogUHJvbWlzZTxhbnk+W10gPSBbXTtcblx0aWYgKHNpZGVFZmZlY3RzRnJvbUFjdGlvbikge1xuXHRcdGlmIChzaWRlRWZmZWN0c0Zyb21BY3Rpb24ucGF0aEV4cHJlc3Npb25zPy5sZW5ndGgpIHtcblx0XHRcdHNpZGVFZmZlY3RQcm9taXNlcy5wdXNoKFxuXHRcdFx0XHRzaWRlRWZmZWN0U2VydmljZS5yZXF1ZXN0U2lkZUVmZmVjdHMoc2lkZUVmZmVjdHNGcm9tQWN0aW9uLnBhdGhFeHByZXNzaW9ucywgdGFyZ2V0Q29udGV4dCwgU1lOQ0dST1VQSUQpXG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXHRpZiAocmVxdWVzdGVkUHJvcGVydGllcyAmJiByZXF1ZXN0ZWRQcm9wZXJ0aWVzLmxlbmd0aCA+IDApIHtcblx0XHQvL2NsZWFuLXVwIG9mIHRoZSBwcm9wZXJ0aWVzIHRvIHJlcXVlc3QgbGlzdDpcblx0XHRjb25zdCBtZXRhTW9kZWwgPSB2aWV3LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCkgYXMgT0RhdGFNZXRhTW9kZWw7XG5cdFx0Y29uc3QgbWV0YVBhdGhGb3JBY3Rpb24gPSBjYWxjdWxhdGVNZXRhUGF0aCh2aWV3LCBwYXRoRm9yQWN0aW9uKTtcblx0XHRjb25zdCBkYXRhTW9kZWxQYXRoID0gTWV0YU1vZGVsQ29udmVydGVyLmdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyhtZXRhTW9kZWwuZ2V0Q29udGV4dChtZXRhUGF0aEZvckFjdGlvbikpO1xuXHRcdGNvbnN0IHByb3BlcnRpZXNUb1JlcXVlc3QgPSBkYXRhTW9kZWxQYXRoLnRhcmdldEVudGl0eVR5cGUuZW50aXR5UHJvcGVydGllc1xuXHRcdFx0Lm1hcCgocHJvcGVydHk6IFByb3BlcnR5KSA9PiB7XG5cdFx0XHRcdHJldHVybiBwcm9wZXJ0eS5uYW1lO1xuXHRcdFx0fSlcblx0XHRcdC5maWx0ZXIoKHByb3ApID0+IHJlcXVlc3RlZFByb3BlcnRpZXMuaW5jbHVkZXMocHJvcCkpO1xuXHRcdGlmIChwcm9wZXJ0aWVzVG9SZXF1ZXN0Lmxlbmd0aCA+IDApIHtcblx0XHRcdHNpZGVFZmZlY3RQcm9taXNlcy5wdXNoKHNpZGVFZmZlY3RTZXJ2aWNlLnJlcXVlc3RTaWRlRWZmZWN0cyhwcm9wZXJ0aWVzVG9SZXF1ZXN0LCB0YXJnZXRDb250ZXh0LCBTWU5DR1JPVVBJRCkpO1xuXHRcdH1cblx0fVxuXG5cdGF3YWl0IFByb21pc2UuYWxsKHNpZGVFZmZlY3RQcm9taXNlcyk7XG59XG5cbi8qKlxuICogRmluZHMgYSBjb250ZXh0IHRvIGFwcGx5IGFuIHVwZGF0ZSBtZXNzYWdlIChDSEFOR0UsIENSRUFURSwgREVMRVRFIG9yIEFDVElPTikuXG4gKlxuICogQHBhcmFtIHZpZXcgIFRoZSB2aWV3IHRoYXQgd2FzIHVzZWQgaW5pdGlhbGx5IHdoZW4gY29ubmVjdGluZyB0aGUgd2Vic29ja2V0XG4gKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCBvZiB0aGUgY29udGV4dCB0byBiZSBmb3VuZCAoc2hhbGwgcG9pbnQgdG8gYW4gZW50aXR5LCBub3QgYSBwcm9wZXJ0eSlcbiAqIEByZXR1cm5zIEEgY29udGV4dCBpZiBpdCBjb3VsZCBiZSBmb3VuZFxuICovXG5mdW5jdGlvbiBmaW5kQ29udGV4dEZvclVwZGF0ZSh2aWV3OiBWaWV3LCBwYXRoOiBzdHJpbmcpOiBDb250ZXh0IHwgdW5kZWZpbmVkIHtcblx0aWYgKCFwYXRoKSB7XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXHQvLyBGaW5kIGFsbCBwb3RlbnRpYWwgcGF0aHNcblx0Y29uc3QgdGFyZ2V0UGF0aHM6IHN0cmluZ1tdID0gW107XG5cdHdoaWxlICghcGF0aC5lbmRzV2l0aChcIilcIikpIHtcblx0XHR0YXJnZXRQYXRocy51bnNoaWZ0KHBhdGgpO1xuXHRcdHBhdGggPSBwYXRoLnN1YnN0cmluZygwLCBwYXRoLmxhc3RJbmRleE9mKFwiL1wiKSk7XG5cdH1cblx0dGFyZ2V0UGF0aHMudW5zaGlmdChwYXRoKTtcblxuXHRjb25zdCBwYXJlbnRDb2xsZWN0aW9uUGF0aCA9IHBhdGguc3Vic3RyaW5nKDAsIHBhdGgubGFzdEluZGV4T2YoXCIoXCIpKTsgLy8gUmVtb3ZlIHRoZSBsYXN0IGtleVxuXG5cdGxldCB0YXJnZXRDb250ZXh0OiBDb250ZXh0IHwgdW5kZWZpbmVkO1xuXHRsZXQgY3VycmVudENvbnRleHQgPSBnZXRDdXJyZW50UGFnZSh2aWV3KS5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQgfCB1bmRlZmluZWQ7XG5cdHdoaWxlIChjdXJyZW50Q29udGV4dCAmJiAhdGFyZ2V0Q29udGV4dCkge1xuXHRcdGlmICh0YXJnZXRQYXRocy5pbmRleE9mKGN1cnJlbnRDb250ZXh0LmdldFBhdGgoKSkgPj0gMCkge1xuXHRcdFx0dGFyZ2V0Q29udGV4dCA9IGN1cnJlbnRDb250ZXh0O1xuXHRcdH1cblxuXHRcdGN1cnJlbnRDb250ZXh0ID0gY3VycmVudENvbnRleHQuZ2V0QmluZGluZygpPy5nZXRDb250ZXh0KCkgYXMgQ29udGV4dCB8IHVuZGVmaW5lZDtcblx0fVxuXG5cdGlmICh0YXJnZXRDb250ZXh0KSB7XG5cdFx0Ly8gRm91bmQgIVxuXHRcdHJldHVybiB0YXJnZXRDb250ZXh0O1xuXHR9XG5cblx0Ly8gVHJ5IHRvIGZpbmQgdGhlIHRhcmdldCBjb250ZXh0IGluIGEgbGlzdEJpbmRpbmdcblx0Y29uc3QgbW9kZWwgPSBnZXRDdXJyZW50UGFnZSh2aWV3KS5nZXRCaW5kaW5nQ29udGV4dCgpLmdldE1vZGVsKCkgYXMgT0RhdGFNb2RlbDtcblx0Y29uc3QgcGFyZW50TGlzdEJpbmRpbmcgPSBtb2RlbC5nZXRBbGxCaW5kaW5ncygpLmZpbmQoKGJpbmRpbmcpID0+IHtcblx0XHRjb25zdCBiaW5kaW5nUGF0aCA9IGJpbmRpbmcuaXNSZWxhdGl2ZSgpID8gYmluZGluZy5nZXRSZXNvbHZlZFBhdGgoKSA6IGJpbmRpbmcuZ2V0UGF0aCgpO1xuXHRcdHJldHVybiBiaW5kaW5nLmlzQShcInNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YUxpc3RCaW5kaW5nXCIpICYmIGJpbmRpbmdQYXRoID09PSBwYXJlbnRDb2xsZWN0aW9uUGF0aDtcblx0fSkgYXMgT0RhdGFMaXN0QmluZGluZyB8IHVuZGVmaW5lZDtcblx0Ly8gV2UndmUgZm91bmQgYSBsaXN0IGJpbmRpbmcgdGhhdCBjb3VsZCBjb250YWluIHRoZSB0YXJnZXQgY29udGV4dCAtLT4gbG9vayBmb3IgaXRcblx0dGFyZ2V0Q29udGV4dCA9IHBhcmVudExpc3RCaW5kaW5nPy5nZXRBbGxDdXJyZW50Q29udGV4dHMoKS5maW5kKChjb250ZXh0KSA9PiB7XG5cdFx0cmV0dXJuIHRhcmdldFBhdGhzLmluZGV4T2YoY29udGV4dC5nZXRQYXRoKCkpID49IDA7XG5cdH0pO1xuXG5cdHJldHVybiB0YXJnZXRDb250ZXh0O1xufVxuXG5mdW5jdGlvbiBuYXZpZ2F0ZShwYXRoOiBzdHJpbmcsIHZpZXc6IFZpZXcpIHtcblx0Ly8gVE9ETzogcm91dGluZy5uYXZpZ2F0ZSBkb2Vzbid0IGNvbnNpZGVyIHNlbWFudGljIGJvb2ttYXJraW5nXG5cdGNvbnN0IGN1cnJlbnRQYWdlID0gZ2V0Q3VycmVudFBhZ2Uodmlldyk7XG5cdGNvbnN0IHRhcmdldENvbnRleHQgPSB2aWV3LmdldE1vZGVsKCkuYmluZENvbnRleHQocGF0aCkuZ2V0Qm91bmRDb250ZXh0KCk7XG5cdGN1cnJlbnRQYWdlLmdldENvbnRyb2xsZXIoKS5yb3V0aW5nLm5hdmlnYXRlKHRhcmdldENvbnRleHQpO1xufVxuXG5mdW5jdGlvbiBnZXRDdXJyZW50UGFnZSh2aWV3OiBWaWV3KSB7XG5cdGNvbnN0IGFwcENvbXBvbmVudCA9IENvbGxhYm9yYXRpb25VdGlscy5nZXRBcHBDb21wb25lbnQodmlldyk7XG5cdHJldHVybiBDb21tb25VdGlscy5nZXRDdXJyZW50UGFnZVZpZXcoYXBwQ29tcG9uZW50KTtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSBtZXRhcGF0aCBmcm9tIG9uZSBvciBtb3JlIGRhdGEgcGF0aChzKS5cbiAqXG4gKiBAcGFyYW0gdmlldyBUaGUgY3VycmVudCB2aWV3XG4gKiBAcGFyYW0gcGF0aCBPbmUgb3JlIG1vcmUgZGF0YSBwYXRoKHMpLCBpbiBjYXNlIG9mIG11bHRpcGxlIHBhdGhzIHNlcGFyYXRlZCBieSAnfCdcbiAqIEByZXR1cm5zIFRoZSBjYWxjdWxhdGVkIG1ldGFQYXRoXG4gKi9cbmZ1bmN0aW9uIGNhbGN1bGF0ZU1ldGFQYXRoKHZpZXc6IFZpZXcsIHBhdGg/OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRsZXQgbWV0YVBhdGggPSBcIlwiO1xuXHRpZiAocGF0aCkge1xuXHRcdC8vIGluIGNhc2UgbW9yZSB0aGFuIG9uZSBwYXRoIGlzIHNlbnQgYWxsIG9mIHRoZW0gaGF2ZSB0byB1c2UgdGhlIHNhbWUgbWV0YXBhdGggdGhlcmVmb3JlIHdlIGp1c3QgY29uc2lkZXIgdGhlIGZpcnN0IG9uZVxuXHRcdGNvbnN0IGRhdGFQYXRoID0gcGF0aC5zcGxpdChcInxcIilbMF07XG5cdFx0bWV0YVBhdGggPSAodmlldy5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpIGFzIE9EYXRhTWV0YU1vZGVsKS5nZXRNZXRhUGF0aChkYXRhUGF0aCk7XG5cdH1cblx0cmV0dXJuIG1ldGFQYXRoO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG5cdGNvbm5lY3Q6IGNvbm5lY3QsXG5cdGRpc2Nvbm5lY3Q6IGRpc2Nvbm5lY3QsXG5cdGlzQ29ubmVjdGVkOiBpc0Nvbm5lY3RlZCxcblx0aXNDb2xsYWJvcmF0aW9uRW5hYmxlZDogaXNDb2xsYWJvcmF0aW9uRW5hYmxlZCxcblx0c2VuZDogc2VuZFxufTtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7O0VBdUJBLE1BQU1BLFVBQVUsR0FBRywyQkFBMkI7RUFDOUMsTUFBTUMsV0FBVyxHQUFHLDRCQUE0QjtFQUNoRCxNQUFNQyxVQUFVLEdBQUcsMkJBQTJCO0VBQzlDLE1BQU1DLFdBQVcsR0FBRyxZQUFZO0VBRXpCLE1BQU1DLFdBQVcsR0FBRyxVQUFVQyxPQUFnQixFQUFXO0lBQy9ELE1BQU1DLGFBQWEsR0FBR0QsT0FBTyxDQUFDRSxRQUFRLENBQUMsVUFBVSxDQUFjO0lBQy9ELE9BQU9DLHdCQUF3QixDQUFDRixhQUFhLENBQUM7RUFDL0MsQ0FBQztFQUFDO0VBRUssTUFBTUcsSUFBSSxHQUFHLFVBQ25CSixPQUFnQixFQUNoQkssTUFBZ0IsRUFDaEJDLE9BQXNDLEVBQ3RDQyxtQkFBNEIsRUFDNUJDLGtCQUE0QixFQUM1QkMseUJBQW9DLEVBQ25DO0lBQ0QsSUFBSVYsV0FBVyxDQUFDQyxPQUFPLENBQUMsRUFBRTtNQUN6QixNQUFNQyxhQUFhLEdBQUdELE9BQU8sQ0FBQ0UsUUFBUSxDQUFDLFVBQVUsQ0FBYztNQUMvRCxNQUFNUSxhQUFhLEdBQUdDLEtBQUssQ0FBQ0MsT0FBTyxDQUFDTixPQUFPLENBQUMsR0FBR0EsT0FBTyxDQUFDTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUdQLE9BQU87TUFDMUUsTUFBTVEsbUJBQW1CLEdBQUdMLHlCQUF5QixhQUF6QkEseUJBQXlCLHVCQUF6QkEseUJBQXlCLENBQUVJLElBQUksQ0FBQyxHQUFHLENBQUM7TUFDaEUsTUFBTUUsVUFBVSxHQUFHZCxhQUFhLENBQUNlLFdBQVcsQ0FBQ3JCLFVBQVUsQ0FBQztNQUN4RCxJQUFJVSxN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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/CommonUtils","sap/fe/core/controllerextensions/collaboration/ActivityBase","sap/fe/core/controllerextensions/collaboration/CollaborationCommon","sap/fe/core/converters/MetaModelConverter","sap/m/MessageBox"],function(t,e,n,o,i,s){"use strict";var r={};var c=o.CollaborationUtils;var a=o.Activity;var l=n.isCollaborationConnected;var d=n.initializeCollaboration;var g=n.endCollaboration;var f=n.broadcastCollaborationMessage;const u="/collaboration/myActivity";const p="/collaboration/activeUsers";const C="/collaboration/activities";const v="$auto.sync";const h=function(t){const e=t.getModel("internal");return l(e)};r.isConnected=h;const y=function(t,e,n,o,i,s){if(h(t)){const r=t.getModel("internal");const c=Array.isArray(n)?n.join("|"):n;const l=s===null||s===void 0?void 0:s.join("|");const d=r.getProperty(u);if(e===a.LiveChange){if(d===c){return}else{r.setProperty(u,c)}}else{if(e===a.Undo&&d===null){return}r.setProperty(u,null)}f(e,c,r,o,i,l)}};r.send=y;const b=function(t){return t.getModel().getMetaModel().getObject("/@com.sap.vocabularies.Common.v1.WebSocketBaseURL")};const M=function(t){const e=(t===null||t===void 0?void 0:t.getBindingContext)&&t.getBindingContext();return!!(e&&b(e))};r.isCollaborationEnabled=M;const P=async function(t){const e=t.getModel("internal");const n=c.getMe(t);if(!n){return}const o=t.getBindingContext();const i=b(o);const s=o.getModel().getServiceUrl();if(!i){return}const r=await o.requestProperty("DraftAdministrativeData/DraftUUID");if(!r){return}d(n,i,r,s,e,e=>{x(e,t)});e.setProperty(u,null)};r.connect=P;const m=function(t){const e=t.getModel("internal");g(e)};r.disconnect=m;function x(t,e){var n;const o=e.getModel("internal");let i=o.getProperty(p);let s;let r;const l=R(e,t.clientContent);t.userAction=t.userAction||t.clientAction;const d={id:t.userID,name:t.userDescription,initials:c.formatInitials(t.userDescription),color:c.getUserColor(t.userID,i,[])};let g=d;switch(t.userAction){case a.Join:case a.JoinEcho:if(i.findIndex(t=>t.id===d.id)===-1){i.unshift(d);o.setProperty(p,i)}if(t.userAction===a.Join){f(a.JoinEcho,o.getProperty(u),o)}if(t.userAction===a.JoinEcho){if(t.clientContent){t.userAction=a.LiveChange;x(t,e)}}break;case a.Leave:i=i.filter(t=>t.id!==d.id||t.me);o.setProperty(p,i);const v=o.getProperty(C)||{};const h=function(t){if(Array.isArray(t)){return t.filter(t=>t.id!==d.id)}else{for(const e in t){t[e]=h(t[e])}return t}};h(v);o.setProperty(C,v);break;case a.Change:E(e,t);break;case a.Create:B(e,t);break;case a.Delete:O(e,t);break;case a.Activate:A(e,t.clientContent,c.getText("C_COLLABORATIONDRAFT_ACTIVATE",d.name));break;case a.Discard:A(e,t.clientContent,c.getText("C_COLLABORATIONDRAFT_DISCARD",d.name));break;case a.Action:S(e,t);break;case a.LiveChange:g=d;g.key=w(t.clientContent);let y="";const b=l.split("/");for(let t=1;t<b.length-1;t++){y+=`/${b[t]}`;if(!o.getProperty(C+y)){o.setProperty(C+y,{})}}s=o.getProperty(C+l);s=(n=s)!==null&&n!==void 0&&n.slice?s.slice():[];s.push(g);o.setProperty(C+l,s);break;case a.Undo:s=o.getProperty(C+l);r=w(t.clientContent);o.setProperty(C+l,s.filter(t=>t.key!==r));break}}function A(e,n,o){m(e);s.information(o);e.getBindingContext().getBinding().resetChanges().then(function(){L(n,e)}).catch(function(){t.error("Pending Changes could not be reset - still navigating to active instance");L(n,e)})}function E(t,e){const n=e.clientContent.split("|");const o=t.getModel().getMetaModel();const i=t.getModel("internal");n.forEach(t=>{var e;const n=o.getMetaPath(t);const s=w(t);let r=i.getProperty(C+n)||[];r=((e=r)===null||e===void 0?void 0:e.filter)&&r.filter(t=>t.key!==s);if(r){i.setProperty(C+n,r)}});const s=T(t);const r=s.getBindingContext();const c=n.map(e=>D(t,e));s.getController().editFlow.updateDocument(r,Promise.all(c))}async function D(e,n){const o=e.getModel().getMetaModel();const s=o.getMetaContext(n);const r=i.getInvolvedDataModelObjects(s);const a=n.substring(0,n.lastIndexOf("/"));const l=F(e,a);const d=a.substring(0,a.lastIndexOf("("));const g=d.substring(0,d.lastIndexOf("/"));const f=g?F(e,g):undefined;if(!l&&!f){return}try{const t=[];const i=c.getAppComponent(e).getSideEffectsService();if(l){const e=o.getMetaPath(l.getPath());const s=o.getMetaPath(n).replace(e,"").slice(1);t.push(i.requestSideEffects([s],l,v))}const s=i.computeFieldGroupIds(r.targetEntityType.fullyQualifiedName,r.targetObject.fullyQualifiedName);if(s.length){const n=e.getController();const o=n._sideEffects.getSideEffectsMapForFieldGroups(s,l||f);Object.keys(o).forEach(e=>{const i=o[e];t.push(n._sideEffects.requestSideEffects(i.sideEffects,i.context,v))})}await Promise.all(t)}catch(e){t.error("Failed to update data after change:"+e);throw e}}function O(t,e){const n=T(t);const o=n.getBindingContext();const i=o.getPath();const r=e.clientContent.split("|");const a=r.find(t=>i.startsWith(t));if(a){s.information(c.getText("C_COLLABORATIONDRAFT_DELETE",e.userDescription),{onClose:()=>{const e=o.getModel().getKeepAliveContext(a);e.setKeepAlive(false);const i=I(t,r[0]);n.getController().editFlow.updateDocument(n.getBindingContext(),i);n.getController()._routing.navigateBackFromContext(e)}})}else{const e=I(t,r[0]);n.getController().editFlow.updateDocument(n.getBindingContext(),e)}}function B(t,e){const n=T(t);const o=e.clientContent.split("|");const i=I(t,o[0]);n.getController().editFlow.updateDocument(n.getBindingContext(),i)}async function I(e,n){const o=c.getAppComponent(e);const i=n.substring(0,n.lastIndexOf("/"));const s=F(e,i);if(s){try{const t=[];const e=s.getModel().getMetaModel();const i=e.getMetaPath(n);const r=e.getMetaPath(s.getPath());const c=i.replace(`${r}/`,"");const a=o.getSideEffectsService();t.push(a.requestSideEffects([c],s,v));t.push(a.requestSideEffectsForNavigationProperty(c,s,v));await Promise.all(t)}catch(e){t.error("Failed to update data after collection update:"+e)}}}function S(t,e){var n;const o=T(t);const i=e.clientContent.split("|");const s=e.clientTriggeredActionName||"";const r=(n=e.clientRequestedProperties)===null||n===void 0?void 0:n.split("|");const c=e.clientRefreshListBinding==="true";const a=i.map(e=>k(t,e,s,r));if(c){a.push(I(t,i[0]))}o.getController().editFlow.updateDocument(o.getBindingContext(),Promise.all(a))}async function k(t,e,n,o){const s=F(t,e);if(!s){return}const r=c.getAppComponent(t);const a=r.getSideEffectsService();const l=a.getODataActionSideEffects(n,s);const d=[];if(l){var g;if((g=l.pathExpressions)!==null&&g!==void 0&&g.length){d.push(a.requestSideEffects(l.pathExpressions,s,v))}}if(o&&o.length>0){const n=t.getModel().getMetaModel();const r=R(t,e);const c=i.getInvolvedDataModelObjects(n.getContext(r));const l=c.targetEntityType.entityProperties.map(t=>t.name).filter(t=>o.includes(t));if(l.length>0){d.push(a.requestSideEffects(l,s,v))}}await Promise.all(d)}function F(t,e){if(!e){return undefined}const n=[];while(!e.endsWith(")")){n.unshift(e);e=e.substring(0,e.lastIndexOf("/"))}n.unshift(e);const o=e.substring(0,e.lastIndexOf("("));let i;let s=T(t).getBindingContext();while(s&&!i){var r;if(n.indexOf(s.getPath())>=0){i=s}s=(r=s.getBinding())===null||r===void 0?void 0:r.getContext()}if(i){return i}const c=T(t).getBindingContext().getModel();const a=c.getAllBindings().find(t=>{const e=t.isRelative()?t.getResolvedPath():t.getPath();return t.isA("sap.ui.model.odata.v4.ODataListBinding")&&e===o});i=a===null||a===void 0?void 0:a.getAllCurrentContexts().find(t=>n.indexOf(t.getPath())>=0);return i}function L(t,e){const n=T(e);const o=e.getModel().bindContext(t).getBoundContext();n.getController().routing.navigate(o)}function T(t){const n=c.getAppComponent(t);return e.getCurrentPageView(n)}function w(t){return t.substring(t.lastIndexOf("(")+1,t.lastIndexOf(")"))}function R(t,e){let n="";if(e){const o=e.split("|")[0];n=t.getModel().getMetaModel().getMetaPath(o)}return n}return{connect:P,disconnect:m,isConnected:h,isCollaborationEnabled:M,send:y}},false);
5
+ sap.ui.define(["sap/base/Log","sap/fe/core/CommonUtils","sap/fe/core/controllerextensions/collaboration/ActivityBase","sap/fe/core/controllerextensions/collaboration/CollaborationCommon","sap/fe/core/converters/MetaModelConverter","sap/m/MessageBox"],function(t,e,n,o,i,s){"use strict";var r={};var c=o.getActivityKeyFromPath;var a=o.CollaborationUtils;var l=o.Activity;var d=n.isCollaborationConnected;var g=n.initializeCollaboration;var f=n.endCollaboration;var u=n.broadcastCollaborationMessage;const p="/collaboration/myActivity";const C="/collaboration/activeUsers";const v="/collaboration/activities";const h="$auto.sync";const y=function(t){const e=t.getModel("internal");return d(e)};r.isConnected=y;const M=function(t,e,n,o,i,s){if(y(t)){const r=t.getModel("internal");const c=Array.isArray(n)?n.join("|"):n;const a=s===null||s===void 0?void 0:s.join("|");const d=r.getProperty(p);if(e===l.LiveChange){if(d===c){return}else{r.setProperty(p,c)}}else{if(e===l.Undo&&d===null){return}r.setProperty(p,null)}u(e,c,r,o,i,a)}};r.send=M;const P=function(t){return t.getModel().getMetaModel().getObject("/@com.sap.vocabularies.Common.v1.WebSocketBaseURL")};const b=function(t){const e=(t===null||t===void 0?void 0:t.getBindingContext)&&t.getBindingContext();return!!(e&&P(e))};r.isCollaborationEnabled=b;const m=async function(t){const e=t.getModel("internal");const n=a.getMe(t);if(!n){return}const o=t.getBindingContext();const i=P(o);const s=o.getModel().getServiceUrl();if(!i){return}const r=await o.requestProperty("DraftAdministrativeData/DraftUUID");if(!r){return}g(n,i,r,s,e,e=>{x(e,t)});e.setProperty(p,null)};r.connect=m;const A=function(t){const e=t.getModel("internal");f(e)};r.disconnect=A;function x(t,e){var n;const o=e.getModel("internal");let i=o.getProperty(C);let s;let r;const d=R(e,t.clientContent);t.userAction=t.userAction||t.clientAction;const g={id:t.userID,name:t.userDescription,initials:a.formatInitials(t.userDescription),color:a.getUserColor(t.userID,i,[])};let f=g;switch(t.userAction){case l.Join:case l.JoinEcho:if(i.findIndex(t=>t.id===g.id)===-1){i.unshift(g);o.setProperty(C,i)}if(t.userAction===l.Join){u(l.JoinEcho,o.getProperty(p),o)}if(t.userAction===l.JoinEcho){if(t.clientContent){t.userAction=l.LiveChange;x(t,e)}}break;case l.Leave:i=i.filter(t=>t.id!==g.id||t.me);o.setProperty(C,i);const h=o.getProperty(v)||{};const y=function(t){if(Array.isArray(t)){return t.filter(t=>t.id!==g.id)}else{for(const e in t){t[e]=y(t[e])}return t}};y(h);o.setProperty(v,h);break;case l.Change:D(e,t);break;case l.Create:I(e,t);break;case l.Delete:O(e,t);break;case l.Activate:E(e,t.clientContent,a.getText("C_COLLABORATIONDRAFT_ACTIVATE",g.name));break;case l.Discard:E(e,t.clientContent,a.getText("C_COLLABORATIONDRAFT_DISCARD",g.name));break;case l.Action:k(e,t);break;case l.LiveChange:f=g;f.key=c(t.clientContent);let M="";const P=d.split("/");for(let t=1;t<P.length-1;t++){M+=`/${P[t]}`;if(!o.getProperty(v+M)){o.setProperty(v+M,{})}}s=o.getProperty(v+d);s=(n=s)!==null&&n!==void 0&&n.slice?s.slice():[];s.push(f);o.setProperty(v+d,s);break;case l.Undo:s=o.getProperty(v+d);r=c(t.clientContent);o.setProperty(v+d,s.filter(t=>t.key!==r));break}}function E(e,n,o){A(e);s.information(o);e.getBindingContext().getBinding().resetChanges().then(function(){T(n,e)}).catch(function(){t.error("Pending Changes could not be reset - still navigating to active instance");T(n,e)})}function D(t,e){const n=e.clientContent.split("|");const o=t.getModel().getMetaModel();const i=t.getModel("internal");n.forEach(t=>{var e;const n=o.getMetaPath(t);const s=c(t);let r=i.getProperty(v+n)||[];r=((e=r)===null||e===void 0?void 0:e.filter)&&r.filter(t=>t.key!==s);if(r){i.setProperty(v+n,r)}});const s=w(t);const r=s.getBindingContext();const a=n.map(e=>B(t,e));s.getController().editFlow.updateDocument(r,Promise.all(a))}async function B(e,n){const o=e.getModel().getMetaModel();const s=o.getMetaContext(n);const r=i.getInvolvedDataModelObjects(s);const c=n.substring(0,n.lastIndexOf("/"));const l=L(e,c);const d=c.substring(0,c.lastIndexOf("("));const g=d.substring(0,d.lastIndexOf("/"));const f=g?L(e,g):undefined;if(!l&&!f){return}try{const t=[];const i=a.getAppComponent(e).getSideEffectsService();if(l){const e=o.getMetaPath(l.getPath());const s=o.getMetaPath(n).replace(e,"").slice(1);t.push(i.requestSideEffects([s],l,h))}const s=i.computeFieldGroupIds(r.targetEntityType.fullyQualifiedName,r.targetObject.fullyQualifiedName);if(s.length){const n=e.getController();const o=n._sideEffects.getSideEffectsMapForFieldGroups(s,l||f);Object.keys(o).forEach(e=>{const i=o[e];t.push(n._sideEffects.requestSideEffects(i.sideEffects,i.context,h))})}await Promise.all(t)}catch(e){t.error("Failed to update data after change:"+e);throw e}}function O(t,e){const n=w(t);const o=n.getBindingContext();const i=o.getPath();const r=e.clientContent.split("|");const c=r.find(t=>i.startsWith(t));if(c){s.information(a.getText("C_COLLABORATIONDRAFT_DELETE",e.userDescription),{onClose:()=>{const e=o.getModel().getKeepAliveContext(c);e.setKeepAlive(false);const i=S(t,r[0]);n.getController().editFlow.updateDocument(n.getBindingContext(),i);n.getController()._routing.navigateBackFromContext(e)}})}else{const e=S(t,r[0]);n.getController().editFlow.updateDocument(n.getBindingContext(),e)}}function I(t,e){const n=w(t);const o=e.clientContent.split("|");const i=S(t,o[0]);n.getController().editFlow.updateDocument(n.getBindingContext(),i)}async function S(e,n){const o=a.getAppComponent(e);const i=n.substring(0,n.lastIndexOf("/"));const s=L(e,i);if(s){try{const t=[];const e=s.getModel().getMetaModel();const i=e.getMetaPath(n);const r=e.getMetaPath(s.getPath());const c=i.replace(`${r}/`,"");const a=o.getSideEffectsService();t.push(a.requestSideEffects([c],s,h));t.push(a.requestSideEffectsForNavigationProperty(c,s,h));await Promise.all(t)}catch(e){t.error("Failed to update data after collection update:"+e)}}}function k(t,e){var n;const o=w(t);const i=e.clientContent.split("|");const s=e.clientTriggeredActionName||"";const r=(n=e.clientRequestedProperties)===null||n===void 0?void 0:n.split("|");const c=e.clientRefreshListBinding==="true";let a=[];if(c){a.push(S(t,i[0]))}else{a=i.map(e=>F(t,e,s,r))}o.getController().editFlow.updateDocument(o.getBindingContext(),Promise.all(a))}async function F(t,e,n,o){const s=L(t,e);if(!s){return}const r=a.getAppComponent(t);const c=r.getSideEffectsService();const l=c.getODataActionSideEffects(n,s);const d=[];if(l){var g;if((g=l.pathExpressions)!==null&&g!==void 0&&g.length){d.push(c.requestSideEffects(l.pathExpressions,s,h))}}if(o&&o.length>0){const n=t.getModel().getMetaModel();const r=R(t,e);const a=i.getInvolvedDataModelObjects(n.getContext(r));const l=a.targetEntityType.entityProperties.map(t=>t.name).filter(t=>o.includes(t));if(l.length>0){d.push(c.requestSideEffects(l,s,h))}}await Promise.all(d)}function L(t,e){if(!e){return undefined}const n=[];while(!e.endsWith(")")){n.unshift(e);e=e.substring(0,e.lastIndexOf("/"))}n.unshift(e);const o=e.substring(0,e.lastIndexOf("("));let i;let s=w(t).getBindingContext();while(s&&!i){var r;if(n.indexOf(s.getPath())>=0){i=s}s=(r=s.getBinding())===null||r===void 0?void 0:r.getContext()}if(i){return i}const c=w(t).getBindingContext().getModel();const a=c.getAllBindings().find(t=>{const e=t.isRelative()?t.getResolvedPath():t.getPath();return t.isA("sap.ui.model.odata.v4.ODataListBinding")&&e===o});i=a===null||a===void 0?void 0:a.getAllCurrentContexts().find(t=>n.indexOf(t.getPath())>=0);return i}function T(t,e){const n=w(e);const o=e.getModel().bindContext(t).getBoundContext();n.getController().routing.navigate(o)}function w(t){const n=a.getAppComponent(t);return e.getCurrentPageView(n)}function R(t,e){let n="";if(e){const o=e.split("|")[0];n=t.getModel().getMetaModel().getMetaPath(o)}return n}return{connect:m,disconnect:A,isConnected:y,isCollaborationEnabled:b,send:M}},false);
6
6
  //# sourceMappingURL=ActivitySync.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActivitySync.js","names":["sap","ui","define","Log","CommonUtils","ActivityBase","CollaborationCommon","MetaModelConverter","MessageBox","_exports","CollaborationUtils","Activity","isCollaborationConnected","initializeCollaboration","endCollaboration","broadcastCollaborationMessage","MYACTIVITY","ACTIVEUSERS","ACTIVITIES","SYNCGROUPID","isConnected","control","internalModel","getModel","send","action","content","triggeredActionName","refreshListBinding","actionRequestedProperties","clientContent","Array","isArray","join","requestedProperties","myActivity","getProperty","LiveChange","setProperty","Undo","getWebSocketBaseURL","bindingContext","getMetaModel","getObject","isCollaborationEnabled","view","getBindingContext","connect","async","me","getMe","webSocketBaseURL","serviceUrl","getServiceUrl","sDraftUUID","requestProperty","message","messageReceive","disconnect","_activities","activeUsers","activities","activityKey","metaPath","calculateMetaPath","userAction","clientAction","sender","id","userID","name","userDescription","initials","formatInitials","color","getUserColor","mactivity","Join","JoinEcho","findIndex","user","unshift","Leave","filter","allActivities","removeUserActivities","bag","activity","p","Change","updateOnChange","Create","updateOnCreate","Delete","updateOnDelete","Activate","draftClosedByOtherUser","getText","Discard","Action","updateOnAction","key","getActivityKey","initJSONModel","parts","split","i","length","slice","push","a","path","messageText","information","getBinding","resetChanges","then","navigate","catch","error","updatedObjectsPaths","metaModel","forEach","updatedPath","_currentActivities","updatedMetaPath","getMetaPath","currentActivities","currentPage","getCurrentPage","currentContext","requestPromises","map","applyUpdatesForChange","getController","editFlow","updateDocument","Promise","all","propertyPathForUpdate","metaContext","getMetaContext","dataModelObject","getInvolvedDataModelObjects","targetContextPath","substring","lastIndexOf","targetContext","findContextForUpdate","parentCollectionPath","parentContextPath","parentContext","undefined","sideEffectsPromises","sideEffectsService","getAppComponent","getSideEffectsService","targetMetaPath","getPath","relativeMetaPathForUpdate","replace","requestSideEffects","fieldGroupIds","computeFieldGroupIds","targetEntityType","fullyQualifiedName","targetObject","pageController","sideEffectsMapForFieldGroup","_sideEffects","getSideEffectsMapForFieldGroups","Object","keys","sideEffectName","sideEffect","sideEffects","context","err","currentPath","deletedObjectPaths","deletedPathInUse","find","deletedPath","startsWith","onClose","getKeepAliveContext","setKeepAlive","requestPromise","applyUpdatesForCollection","_routing","navigateBackFromContext","createdObjectPaths","pathInCollection","appComponent","parentPath","metaPathForUpdate","parentMetaPath","relativePath","requestSideEffectsForNavigationProperty","_message$clientReques","pathsForAction","actionName","clientTriggeredActionName","clientRequestedProperties","clientRefreshListBinding","requestUpdateForAction","pathForAction","sideEffectService","sideEffectsFromAction","getODataActionSideEffects","sideEffectPromises","_sideEffectsFromActio","pathExpressions","metaPathForAction","dataModelPath","getContext","propertiesToRequest","entityProperties","property","prop","includes","targetPaths","endsWith","_currentContext$getBi","indexOf","model","parentListBinding","getAllBindings","binding","bindingPath","isRelative","getResolvedPath","isA","getAllCurrentContexts","bindContext","getBoundContext","routing","getCurrentPageView","x","dataPath"],"sources":["ActivitySync-dbg.js"],"mappings":"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"}
1
+ {"version":3,"file":"ActivitySync.js","names":["sap","ui","define","Log","CommonUtils","ActivityBase","CollaborationCommon","MetaModelConverter","MessageBox","_exports","getActivityKeyFromPath","CollaborationUtils","Activity","isCollaborationConnected","initializeCollaboration","endCollaboration","broadcastCollaborationMessage","MYACTIVITY","ACTIVEUSERS","ACTIVITIES","SYNCGROUPID","isConnected","control","internalModel","getModel","send","action","content","triggeredActionName","refreshListBinding","actionRequestedProperties","clientContent","Array","isArray","join","requestedProperties","myActivity","getProperty","LiveChange","setProperty","Undo","getWebSocketBaseURL","bindingContext","getMetaModel","getObject","isCollaborationEnabled","view","getBindingContext","connect","async","me","getMe","webSocketBaseURL","serviceUrl","getServiceUrl","sDraftUUID","requestProperty","message","messageReceive","disconnect","_activities","activeUsers","activities","activityKey","metaPath","calculateMetaPath","userAction","clientAction","sender","id","userID","name","userDescription","initials","formatInitials","color","getUserColor","mactivity","Join","JoinEcho","findIndex","user","unshift","Leave","filter","allActivities","removeUserActivities","bag","activity","p","Change","updateOnChange","Create","updateOnCreate","Delete","updateOnDelete","Activate","draftClosedByOtherUser","getText","Discard","Action","updateOnAction","key","initJSONModel","parts","split","i","length","slice","push","a","path","messageText","information","getBinding","resetChanges","then","navigate","catch","error","updatedObjectsPaths","metaModel","forEach","updatedPath","_currentActivities","updatedMetaPath","getMetaPath","currentActivities","currentPage","getCurrentPage","currentContext","requestPromises","map","applyUpdatesForChange","getController","editFlow","updateDocument","Promise","all","propertyPathForUpdate","metaContext","getMetaContext","dataModelObject","getInvolvedDataModelObjects","targetContextPath","substring","lastIndexOf","targetContext","findContextForUpdate","parentCollectionPath","parentContextPath","parentContext","undefined","sideEffectsPromises","sideEffectsService","getAppComponent","getSideEffectsService","targetMetaPath","getPath","relativeMetaPathForUpdate","replace","requestSideEffects","fieldGroupIds","computeFieldGroupIds","targetEntityType","fullyQualifiedName","targetObject","pageController","sideEffectsMapForFieldGroup","_sideEffects","getSideEffectsMapForFieldGroups","Object","keys","sideEffectName","sideEffect","sideEffects","context","err","currentPath","deletedObjectPaths","deletedPathInUse","find","deletedPath","startsWith","onClose","getKeepAliveContext","setKeepAlive","requestPromise","applyUpdatesForCollection","_routing","navigateBackFromContext","createdObjectPaths","pathInCollection","appComponent","parentPath","metaPathForUpdate","parentMetaPath","relativePath","requestSideEffectsForNavigationProperty","_message$clientReques","pathsForAction","actionName","clientTriggeredActionName","clientRequestedProperties","clientRefreshListBinding","requestUpdateForAction","pathForAction","sideEffectService","sideEffectsFromAction","getODataActionSideEffects","sideEffectPromises","_sideEffectsFromActio","pathExpressions","metaPathForAction","dataModelPath","getContext","propertiesToRequest","entityProperties","property","prop","includes","targetPaths","endsWith","_currentContext$getBi","indexOf","model","parentListBinding","getAllBindings","binding","bindingPath","isRelative","getResolvedPath","isA","getAllCurrentContexts","bindContext","getBoundContext","routing","getCurrentPageView","dataPath"],"sources":["ActivitySync-dbg.js"],"mappings":"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"}
@@ -8,7 +8,7 @@ import {
8
8
  isCollaborationConnected
9
9
  } from "sap/fe/core/controllerextensions/collaboration/ActivityBase";
10
10
  import type { Message, User, UserActivity } from "sap/fe/core/controllerextensions/collaboration/CollaborationCommon";
11
- import { Activity, CollaborationUtils } from "sap/fe/core/controllerextensions/collaboration/CollaborationCommon";
11
+ import { Activity, CollaborationUtils, getActivityKeyFromPath } from "sap/fe/core/controllerextensions/collaboration/CollaborationCommon";
12
12
  import { FieldSideEffectDictionary } from "sap/fe/core/controllerextensions/SideEffects";
13
13
  import * as MetaModelConverter from "sap/fe/core/converters/MetaModelConverter";
14
14
  import PageController from "sap/fe/core/PageController";
@@ -203,7 +203,7 @@ function messageReceive(message: Message, view: View) {
203
203
 
204
204
  case Activity.LiveChange:
205
205
  mactivity = sender;
206
- mactivity.key = getActivityKey(message.clientContent);
206
+ mactivity.key = getActivityKeyFromPath(message.clientContent);
207
207
 
208
208
  // stupid JSON model...
209
209
  let initJSONModel: string = "";
@@ -224,7 +224,7 @@ function messageReceive(message: Message, view: View) {
224
224
  case Activity.Undo:
225
225
  // The user did a change but reverted it, therefore unblock the control
226
226
  activities = internalModel.getProperty(ACTIVITIES + metaPath);
227
- activityKey = getActivityKey(message.clientContent);
227
+ activityKey = getActivityKeyFromPath(message.clientContent);
228
228
  internalModel.setProperty(
229
229
  ACTIVITIES + metaPath,
230
230
  activities.filter((a) => a.key !== activityKey)
@@ -269,7 +269,7 @@ function updateOnChange(view: View, message: Message) {
269
269
  // Remove all locks corresponding to the paths
270
270
  updatedObjectsPaths.forEach((updatedPath) => {
271
271
  const updatedMetaPath = metaModel.getMetaPath(updatedPath);
272
- const activityKey = getActivityKey(updatedPath);
272
+ const activityKey = getActivityKeyFromPath(updatedPath);
273
273
  let currentActivities: any[] = internalModel.getProperty(ACTIVITIES + updatedMetaPath) || [];
274
274
  currentActivities = currentActivities?.filter && currentActivities.filter((activity) => activity.key !== activityKey);
275
275
  if (currentActivities) {
@@ -441,10 +441,12 @@ function updateOnAction(view: View, message: Message) {
441
441
  const requestedProperties = message.clientRequestedProperties?.split("|");
442
442
  const refreshListBinding = message.clientRefreshListBinding === "true";
443
443
 
444
- const requestPromises = pathsForAction.map((path) => requestUpdateForAction(view, path, actionName, requestedProperties));
444
+ let requestPromises: Promise<void>[] = [];
445
445
 
446
446
  if (refreshListBinding) {
447
447
  requestPromises.push(applyUpdatesForCollection(view, pathsForAction[0]));
448
+ } else {
449
+ requestPromises = pathsForAction.map((path) => requestUpdateForAction(view, path, actionName, requestedProperties));
448
450
  }
449
451
 
450
452
  // Simulate any change so the edit flow shows the draft indicator and sets the page to dirty
@@ -562,10 +564,6 @@ function getCurrentPage(view: View) {
562
564
  return CommonUtils.getCurrentPageView(appComponent);
563
565
  }
564
566
 
565
- function getActivityKey(x: string): string {
566
- return x.substring(x.lastIndexOf("(") + 1, x.lastIndexOf(")"));
567
- }
568
-
569
567
  /**
570
568
  * Calculates the metapath from one or more data path(s).
571
569
  *