@sapui5/sap.fe.core 1.98.0 → 1.101.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 (318) hide show
  1. package/package.json +8 -5
  2. package/src/sap/fe/core/.library +2 -3
  3. package/src/sap/fe/core/AnnotationHelper.js +328 -405
  4. package/src/sap/fe/core/AnnotationHelper.ts +321 -0
  5. package/src/sap/fe/core/AppComponent.js +382 -399
  6. package/src/sap/fe/core/AppComponent.ts +397 -0
  7. package/src/sap/fe/core/AppStateHandler.js +198 -181
  8. package/src/sap/fe/core/AppStateHandler.ts +171 -0
  9. package/src/sap/fe/core/BaseController.js +83 -58
  10. package/src/sap/fe/core/BaseController.ts +67 -0
  11. package/src/sap/fe/core/BusyLocker.js +105 -121
  12. package/src/sap/fe/core/BusyLocker.ts +98 -0
  13. package/src/sap/fe/core/CommonUtils.js +2221 -2399
  14. package/src/sap/fe/core/CommonUtils.ts +2248 -0
  15. package/src/sap/fe/core/ExtensionAPI.js +280 -274
  16. package/src/sap/fe/core/ExtensionAPI.ts +242 -0
  17. package/src/sap/fe/core/PageController.js +219 -131
  18. package/src/sap/fe/core/PageController.ts +129 -0
  19. package/src/sap/fe/core/RouterProxy.js +936 -823
  20. package/src/sap/fe/core/RouterProxy.ts +854 -0
  21. package/src/sap/fe/core/Synchronization.js +41 -35
  22. package/src/sap/fe/core/Synchronization.ts +29 -0
  23. package/src/sap/fe/core/TemplateComponent.js +248 -164
  24. package/src/sap/fe/core/TemplateComponent.ts +161 -0
  25. package/src/sap/fe/core/TemplateModel.js +77 -54
  26. package/src/sap/fe/core/TemplateModel.ts +63 -0
  27. package/src/sap/fe/core/TransactionHelper.js +1575 -1664
  28. package/src/sap/fe/core/TransactionHelper.ts +1736 -0
  29. package/src/sap/fe/core/actions/collaboration/ActivitySync.js +406 -0
  30. package/src/sap/fe/core/actions/collaboration/ActivitySync.ts +362 -0
  31. package/src/sap/fe/core/actions/collaboration/CollaborationCommon.js +146 -0
  32. package/src/sap/fe/core/actions/collaboration/CollaborationCommon.ts +129 -0
  33. package/src/sap/fe/core/actions/collaboration/Manage.js +264 -0
  34. package/src/sap/fe/core/actions/collaboration/Manage.ts +246 -0
  35. package/src/sap/fe/core/actions/collaboration/ManageDialog.fragment.xml +100 -0
  36. package/src/sap/fe/core/actions/collaboration/UserDetails.fragment.xml +13 -0
  37. package/src/sap/fe/core/actions/draft.js +663 -608
  38. package/src/sap/fe/core/actions/draft.ts +669 -0
  39. package/src/sap/fe/core/actions/messageHandling.js +576 -514
  40. package/src/sap/fe/core/actions/messageHandling.ts +562 -0
  41. package/src/sap/fe/core/actions/nonDraft.js +17 -19
  42. package/src/sap/fe/core/actions/nonDraft.ts +12 -0
  43. package/src/sap/fe/core/actions/operations.js +1093 -1215
  44. package/src/sap/fe/core/actions/operations.ts +1193 -0
  45. package/src/sap/fe/core/actions/sticky.js +114 -104
  46. package/src/sap/fe/core/actions/sticky.ts +119 -0
  47. package/src/sap/fe/core/buildingBlocks/AttributeModel.js +60 -0
  48. package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +37 -0
  49. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +165 -0
  50. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +178 -0
  51. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +707 -0
  52. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +628 -0
  53. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +436 -0
  54. package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +431 -0
  55. package/src/sap/fe/core/controllerextensions/EditFlow.js +1855 -1827
  56. package/src/sap/fe/core/controllerextensions/EditFlow.ts +1792 -0
  57. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +80 -54
  58. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +60 -0
  59. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +717 -512
  60. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +785 -0
  61. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +797 -815
  62. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +810 -0
  63. package/src/sap/fe/core/controllerextensions/InternalRouting.js +1057 -1004
  64. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +1001 -0
  65. package/src/sap/fe/core/controllerextensions/KPIManagement.js +498 -533
  66. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +36 -32
  67. package/src/sap/fe/core/controllerextensions/MassEdit.js +142 -77
  68. package/src/sap/fe/core/controllerextensions/MassEdit.ts +155 -0
  69. package/src/sap/fe/core/controllerextensions/MessageHandler.js +222 -236
  70. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +215 -0
  71. package/src/sap/fe/core/controllerextensions/PageReady.js +312 -345
  72. package/src/sap/fe/core/controllerextensions/PageReady.ts +63 -55
  73. package/src/sap/fe/core/controllerextensions/Paginator.js +189 -175
  74. package/src/sap/fe/core/controllerextensions/Paginator.ts +169 -0
  75. package/src/sap/fe/core/controllerextensions/Placeholder.js +158 -149
  76. package/src/sap/fe/core/controllerextensions/Placeholder.ts +149 -0
  77. package/src/sap/fe/core/controllerextensions/Routing.js +145 -121
  78. package/src/sap/fe/core/controllerextensions/Routing.ts +131 -0
  79. package/src/sap/fe/core/controllerextensions/RoutingListener.js +8 -6
  80. package/src/sap/fe/core/controllerextensions/RoutingListener.ts +3 -0
  81. package/src/sap/fe/core/controllerextensions/Share.js +231 -268
  82. package/src/sap/fe/core/controllerextensions/Share.ts +231 -0
  83. package/src/sap/fe/core/controllerextensions/SideEffects.js +603 -644
  84. package/src/sap/fe/core/controllerextensions/SideEffects.ts +79 -79
  85. package/src/sap/fe/core/controllerextensions/ViewState.js +775 -806
  86. package/src/sap/fe/core/controllerextensions/ViewState.ts +796 -0
  87. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +2 -2
  88. package/src/sap/fe/core/controls/ActionPartial.fragment.xml +2 -2
  89. package/src/sap/fe/core/controls/Any.js +28 -0
  90. package/src/sap/fe/core/controls/Any.ts +30 -0
  91. package/src/sap/fe/core/controls/CommandExecution.js +93 -68
  92. package/src/sap/fe/core/controls/CommandExecution.ts +72 -0
  93. package/src/sap/fe/core/controls/ConditionalWrapper.js +166 -79
  94. package/src/sap/fe/core/controls/ConditionalWrapper.ts +74 -0
  95. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +366 -0
  96. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +278 -0
  97. package/src/sap/fe/core/controls/CustomQuickViewPage.js +168 -125
  98. package/src/sap/fe/core/controls/CustomQuickViewPage.ts +116 -0
  99. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossDraft.fragment.xml +44 -5
  100. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +164 -122
  101. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +155 -0
  102. package/src/sap/fe/core/controls/FieldWrapper.js +213 -153
  103. package/src/sap/fe/core/controls/FieldWrapper.ts +104 -0
  104. package/src/sap/fe/core/controls/FileWrapper.js +313 -0
  105. package/src/sap/fe/core/controls/FileWrapper.ts +169 -0
  106. package/src/sap/fe/core/controls/FilterBar.js +198 -159
  107. package/src/sap/fe/core/controls/FilterBar.ts +148 -0
  108. package/src/sap/fe/core/controls/FormElementWrapper.js +101 -39
  109. package/src/sap/fe/core/controls/FormElementWrapper.ts +37 -0
  110. package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +38 -42
  111. package/src/sap/fe/core/controls/MultiValueParameterDelegate.ts +31 -0
  112. package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +1 -0
  113. package/src/sap/fe/core/controls/filterbar/FilterContainer.js +148 -115
  114. package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +102 -0
  115. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +301 -265
  116. package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +252 -0
  117. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +186 -140
  118. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +125 -0
  119. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +336 -322
  120. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +337 -0
  121. package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +37 -42
  122. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +76 -74
  123. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +71 -0
  124. package/src/sap/fe/core/converters/ConverterContext.js +348 -379
  125. package/src/sap/fe/core/converters/ConverterContext.ts +23 -19
  126. package/src/sap/fe/core/converters/ManifestSettings.js +13 -1
  127. package/src/sap/fe/core/converters/ManifestSettings.ts +18 -2
  128. package/src/sap/fe/core/converters/ManifestWrapper.js +354 -365
  129. package/src/sap/fe/core/converters/ManifestWrapper.ts +19 -0
  130. package/src/sap/fe/core/converters/MetaModelConverter.js +16 -11
  131. package/src/sap/fe/core/converters/MetaModelConverter.ts +21 -18
  132. package/src/sap/fe/core/converters/TemplateConverter.js +1 -1
  133. package/src/sap/fe/core/converters/TemplateConverter.ts +4 -3
  134. package/src/sap/fe/core/converters/annotations/DataField.js +26 -13
  135. package/src/sap/fe/core/converters/annotations/DataField.ts +40 -17
  136. package/src/sap/fe/core/converters/common/AnnotationConverter.js +17 -13
  137. package/src/sap/fe/core/converters/controls/Common/Action.js +11 -11
  138. package/src/sap/fe/core/converters/controls/Common/Action.ts +22 -21
  139. package/src/sap/fe/core/converters/controls/Common/Chart.js +12 -10
  140. package/src/sap/fe/core/converters/controls/Common/Chart.ts +23 -14
  141. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +3 -3
  142. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +2 -2
  143. package/src/sap/fe/core/converters/controls/Common/Form.js +9 -7
  144. package/src/sap/fe/core/converters/controls/Common/Form.ts +23 -5
  145. package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
  146. package/src/sap/fe/core/converters/controls/Common/KPI.ts +2 -2
  147. package/src/sap/fe/core/converters/controls/Common/Table.js +562 -218
  148. package/src/sap/fe/core/converters/controls/Common/Table.ts +670 -320
  149. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +218 -94
  150. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +265 -159
  151. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +495 -77
  152. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +535 -130
  153. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +6 -6
  154. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +20 -18
  155. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +10 -7
  156. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +13 -16
  157. package/src/sap/fe/core/converters/helpers/Aggregation.js +117 -127
  158. package/src/sap/fe/core/converters/helpers/Aggregation.ts +20 -5
  159. package/src/sap/fe/core/converters/helpers/BindingHelper.js +20 -6
  160. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +16 -4
  161. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +12 -1
  162. package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +11 -0
  163. package/src/sap/fe/core/converters/helpers/IssueManager.js +4 -1
  164. package/src/sap/fe/core/converters/helpers/IssueManager.ts +3 -0
  165. package/src/sap/fe/core/converters/helpers/Key.js +42 -57
  166. package/src/sap/fe/core/converters/helpers/Key.ts +1 -1
  167. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +1 -1
  168. package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +0 -4
  169. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +54 -30
  170. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +69 -43
  171. package/src/sap/fe/core/converters/templates/ListReportConverter.js +52 -28
  172. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +111 -74
  173. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +11 -9
  174. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +8 -8
  175. package/src/sap/fe/core/designtime/AppComponent.designtime.js +93 -98
  176. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +91 -0
  177. package/src/sap/fe/core/formatters/CollaborationFormatter.js +104 -0
  178. package/src/sap/fe/core/formatters/CollaborationFormatter.ts +60 -0
  179. package/src/sap/fe/core/formatters/CriticalityFormatter.js +1 -1
  180. package/src/sap/fe/core/formatters/CriticalityFormatter.ts +1 -1
  181. package/src/sap/fe/core/formatters/FPMFormatter.js +1 -1
  182. package/src/sap/fe/core/formatters/FPMFormatter.ts +4 -10
  183. package/src/sap/fe/core/formatters/KPIFormatter.js +3 -12
  184. package/src/sap/fe/core/formatters/KPIFormatter.ts +4 -1
  185. package/src/sap/fe/core/formatters/TableFormatter.js +91 -29
  186. package/src/sap/fe/core/formatters/TableFormatter.ts +94 -28
  187. package/src/sap/fe/core/formatters/ValueFormatter.js +4 -4
  188. package/src/sap/fe/core/formatters/ValueFormatter.ts +5 -7
  189. package/src/sap/fe/core/fpm/Component.js +81 -55
  190. package/src/sap/fe/core/fpm/Component.ts +43 -0
  191. package/src/sap/fe/core/helpers/AppStartupHelper.js +324 -310
  192. package/src/sap/fe/core/helpers/AppStartupHelper.ts +370 -341
  193. package/src/sap/fe/core/helpers/BindingExpression.js +319 -360
  194. package/src/sap/fe/core/helpers/BindingExpression.ts +323 -397
  195. package/src/sap/fe/core/helpers/ClassSupport.js +321 -168
  196. package/src/sap/fe/core/helpers/ClassSupport.ts +362 -158
  197. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +64 -59
  198. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +52 -0
  199. package/src/sap/fe/core/helpers/EditState.js +81 -84
  200. package/src/sap/fe/core/helpers/EditState.ts +81 -0
  201. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +62 -48
  202. package/src/sap/fe/core/helpers/ExcelFormatHelper.ts +49 -0
  203. package/src/sap/fe/core/helpers/FPMHelper.js +52 -56
  204. package/src/sap/fe/core/helpers/FPMHelper.ts +62 -0
  205. package/src/sap/fe/core/helpers/KeepAliveHelper.js +3 -4
  206. package/src/sap/fe/core/helpers/KeepAliveHelper.ts +9 -9
  207. package/src/sap/fe/core/helpers/MassEditHelper.js +736 -676
  208. package/src/sap/fe/core/helpers/MassEditHelper.ts +803 -0
  209. package/src/sap/fe/core/helpers/ModelHelper.js +281 -225
  210. package/src/sap/fe/core/helpers/ModelHelper.ts +273 -0
  211. package/src/sap/fe/core/helpers/PasteHelper.js +210 -132
  212. package/src/sap/fe/core/helpers/PasteHelper.ts +197 -0
  213. package/src/sap/fe/core/helpers/SemanticDateOperators.js +336 -313
  214. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +336 -0
  215. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +66 -67
  216. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +73 -0
  217. package/src/sap/fe/core/helpers/StableIdHelper.js +1 -10
  218. package/src/sap/fe/core/helpers/StableIdHelper.ts +2 -10
  219. package/src/sap/fe/core/jsx-runtime/jsx.js +35 -5
  220. package/src/sap/fe/core/jsx-runtime/jsx.ts +23 -9
  221. package/src/sap/fe/core/library.js +426 -451
  222. package/src/sap/fe/core/library.support.js +23 -33
  223. package/src/sap/fe/core/library.support.ts +23 -0
  224. package/src/sap/fe/core/library.ts +420 -0
  225. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +5 -3
  226. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +5 -5
  227. package/src/sap/fe/core/messagebundle.properties +63 -18
  228. package/src/sap/fe/core/messagebundle_ar.properties +37 -6
  229. package/src/sap/fe/core/messagebundle_bg.properties +37 -6
  230. package/src/sap/fe/core/messagebundle_ca.properties +37 -6
  231. package/src/sap/fe/core/messagebundle_cs.properties +38 -7
  232. package/src/sap/fe/core/messagebundle_cy.properties +37 -6
  233. package/src/sap/fe/core/messagebundle_da.properties +37 -6
  234. package/src/sap/fe/core/messagebundle_de.properties +37 -6
  235. package/src/sap/fe/core/messagebundle_el.properties +37 -6
  236. package/src/sap/fe/core/messagebundle_en.properties +37 -6
  237. package/src/sap/fe/core/messagebundle_en_GB.properties +37 -6
  238. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +37 -6
  239. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +37 -6
  240. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +37 -6
  241. package/src/sap/fe/core/messagebundle_es.properties +37 -6
  242. package/src/sap/fe/core/messagebundle_es_MX.properties +37 -6
  243. package/src/sap/fe/core/messagebundle_et.properties +37 -6
  244. package/src/sap/fe/core/messagebundle_fi.properties +38 -7
  245. package/src/sap/fe/core/messagebundle_fr.properties +43 -12
  246. package/src/sap/fe/core/messagebundle_fr_CA.properties +45 -14
  247. package/src/sap/fe/core/messagebundle_hi.properties +43 -12
  248. package/src/sap/fe/core/messagebundle_hr.properties +43 -12
  249. package/src/sap/fe/core/messagebundle_hu.properties +37 -6
  250. package/src/sap/fe/core/messagebundle_id.properties +38 -7
  251. package/src/sap/fe/core/messagebundle_it.properties +37 -6
  252. package/src/sap/fe/core/messagebundle_iw.properties +37 -6
  253. package/src/sap/fe/core/messagebundle_ja.properties +36 -5
  254. package/src/sap/fe/core/messagebundle_kk.properties +43 -12
  255. package/src/sap/fe/core/messagebundle_ko.properties +37 -6
  256. package/src/sap/fe/core/messagebundle_lt.properties +37 -6
  257. package/src/sap/fe/core/messagebundle_lv.properties +44 -13
  258. package/src/sap/fe/core/messagebundle_ms.properties +42 -11
  259. package/src/sap/fe/core/messagebundle_nl.properties +37 -6
  260. package/src/sap/fe/core/messagebundle_no.properties +37 -6
  261. package/src/sap/fe/core/messagebundle_pl.properties +37 -6
  262. package/src/sap/fe/core/messagebundle_pt.properties +38 -7
  263. package/src/sap/fe/core/messagebundle_pt_PT.properties +37 -6
  264. package/src/sap/fe/core/messagebundle_ro.properties +37 -6
  265. package/src/sap/fe/core/messagebundle_ru.properties +37 -6
  266. package/src/sap/fe/core/messagebundle_sh.properties +39 -8
  267. package/src/sap/fe/core/messagebundle_sk.properties +37 -6
  268. package/src/sap/fe/core/messagebundle_sl.properties +43 -12
  269. package/src/sap/fe/core/messagebundle_sv.properties +38 -7
  270. package/src/sap/fe/core/messagebundle_th.properties +36 -5
  271. package/src/sap/fe/core/messagebundle_tr.properties +39 -8
  272. package/src/sap/fe/core/messagebundle_uk.properties +37 -6
  273. package/src/sap/fe/core/messagebundle_vi.properties +37 -6
  274. package/src/sap/fe/core/messagebundle_zh_CN.properties +37 -6
  275. package/src/sap/fe/core/messagebundle_zh_TW.properties +43 -12
  276. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +47 -73
  277. package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +3 -1
  278. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +231 -202
  279. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +211 -0
  280. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +70 -96
  281. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +10 -8
  282. package/src/sap/fe/core/services/NavigationServiceFactory.js +351 -300
  283. package/src/sap/fe/core/services/NavigationServiceFactory.ts +313 -0
  284. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +114 -81
  285. package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +83 -0
  286. package/src/sap/fe/core/services/RoutingServiceFactory.js +963 -899
  287. package/src/sap/fe/core/services/RoutingServiceFactory.ts +907 -0
  288. package/src/sap/fe/core/services/ShellServicesFactory.js +694 -741
  289. package/src/sap/fe/core/services/ShellServicesFactory.ts +45 -40
  290. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +572 -643
  291. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +67 -96
  292. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +429 -487
  293. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +449 -0
  294. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +48 -8
  295. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +11 -0
  296. package/src/sap/fe/core/support/AnnotationIssue.support.js +15 -3
  297. package/src/sap/fe/core/support/AnnotationIssue.support.ts +16 -2
  298. package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +2 -2
  299. package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.ts +1 -1
  300. package/src/sap/fe/core/support/CommonHelper.js +1 -1
  301. package/src/sap/fe/core/support/CommonHelper.ts +1 -4
  302. package/src/sap/fe/core/support/Diagnostics.js +36 -48
  303. package/src/sap/fe/core/templating/DataModelPathHelper.js +91 -90
  304. package/src/sap/fe/core/templating/DataModelPathHelper.ts +126 -123
  305. package/src/sap/fe/core/templating/DisplayModeFormatter.js +23 -3
  306. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +26 -5
  307. package/src/sap/fe/core/templating/FieldControlHelper.js +8 -8
  308. package/src/sap/fe/core/templating/FieldControlHelper.ts +25 -7
  309. package/src/sap/fe/core/templating/FilterHelper.js +138 -79
  310. package/src/sap/fe/core/templating/FilterHelper.ts +148 -79
  311. package/src/sap/fe/core/templating/PropertyHelper.js +16 -2
  312. package/src/sap/fe/core/templating/PropertyHelper.ts +31 -24
  313. package/src/sap/fe/core/templating/UIFormatters.js +179 -43
  314. package/src/sap/fe/core/templating/UIFormatters.ts +190 -61
  315. package/src/sap/fe/core/type/Email.js +26 -8
  316. package/src/sap/fe/core/type/Email.ts +10 -11
  317. package/ui5.yaml +0 -3
  318. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +0 -74
@@ -1,268 +1,304 @@
1
1
  /*!
2
- * SAPUI5
3
- * (c) Copyright 2009-2022 SAP SE. All rights reserved.
2
+ * SAP UI development toolkit for HTML5 (SAPUI5)
3
+ * (c) Copyright 2009-2021 SAP SE. All rights reserved
4
4
  */
5
+ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/controls/filterbar/utils/VisualFilterUtils", "sap/fe/core/helpers/ClassSupport", "sap/fe/macros/CommonHelper", "sap/fe/macros/filter/FilterUtils", "sap/m/VBox", "sap/ui/core/Core", "../../templating/FilterHelper"], function (CommonUtils, VisualFilterUtils, ClassSupport, CommonHelper, FilterUtils, VBox, Core, FilterHelper) {
6
+ "use strict";
5
7
 
6
- // Provides control sap.fe.core.controls.filterbar.VisualFilter.
7
- sap.ui.define(
8
- [
9
- "sap/m/VBox",
10
- "sap/m/VBoxRenderer",
11
- "sap/fe/macros/CommonHelper",
12
- "sap/fe/core/helpers/StableIdHelper",
13
- "sap/fe/core/controls/filterbar/utils/VisualFilterUtils",
14
- "sap/fe/core/templating/FilterHelper",
15
- "sap/fe/macros/filter/FilterUtils"
16
- ],
17
- function(VBox, VBoxRenderer, CommonHelper, StableIdHelper, VisualFilterUtils, FilterHelper, FilterUtils) {
18
- "use strict";
19
-
20
- /**
21
- * Constructor for a new filterBar/aligned/FilterItemLayout.
22
- * @param {string} [sId] ID for the new control, generated automatically if no ID is given
23
- * @param {object} [mSettings] Initial settings for the new control
24
- * @class Represents a filter item on the UI.
25
- * @extends sap.m.VBox
26
- * @implements {sap.ui.core.IFormContent}
27
- * @class
28
- * @private
29
- * @since 1.61.0
30
- * @alias control sap.fe.core.controls.filterbar.VisualFilter
31
- */
32
- var VisualFilter = VBox.extend(
33
- "sap.fe.core.controls.filterbar.VisualFilter",
34
- /** @lends sap.ui.mdc.filterbar.aligned.FilterItemLayout.prototype */ {
35
- renderer: {
36
- apiVersion: 2,
37
- render: VBoxRenderer.render
38
- },
39
- metadata: {
40
- properties: {
41
- showValueHelp: {
42
- type: "boolean"
43
- },
44
- valueHelpIconSrc: {
45
- type: "string"
46
- }
47
- },
48
- events: {
49
- valueHelpRequest: {}
50
- },
51
- interfaces: ["sap.ui.core.IFormContent"]
52
- }
53
- }
54
- );
55
-
56
- VisualFilter.prototype.onAfterRendering = function() {
57
- var oInteractiveChart = this.getItems()[1].getItems()[0];
58
- var sInternalContextPath = this.data("infoPath");
59
- var oInteractiveChartListBinding =
60
- oInteractiveChart.getBinding("segments") || oInteractiveChart.getBinding("bars") || oInteractiveChart.getBinding("points");
61
- var oInternalModelContext = oInteractiveChart.getBindingContext("internal");
62
- var oResourceBundle = sap.ui.getCore().getLibraryResourceBundle("sap.fe.macros");
63
- var bShowOverLayInitially = oInteractiveChart.data("showOverlayInitially");
64
- var oSelectionVariantAnnotation = oInteractiveChart.data("selectionVariantAnnotation")
65
- ? CommonHelper.parseCustomData(oInteractiveChart.data("selectionVariantAnnotation"))
66
- : { SelectOptions: [] };
67
- var aRequiredProperties = oInteractiveChart.data("requiredProperties")
68
- ? CommonHelper.parseCustomData(oInteractiveChart.data("requiredProperties"))
69
- : [];
70
- var oMetaModel = oInteractiveChart.getModel().getMetaModel();
71
- var sEntitySetPath = oInteractiveChartListBinding ? oInteractiveChartListBinding.getPath() : "";
72
- var oFilterBar = this.getParent().getParent();
73
- // TODO: Remove this part once 2170204347 is fixed
74
- if (oFilterBar.getMetadata().getElementName() === "sap.ui.mdc.filterbar.p13n.AdaptationFilterBar") {
75
- oFilterBar = oFilterBar.getParent().getParent();
76
- }
77
- var oFilterBarConditions = {};
78
- var aPropertyInfoSet = [];
79
- var sFilterEntityName;
80
- if (oFilterBar.getMetadata().getElementName() === "sap.fe.core.controls.FilterBar") {
81
- oFilterBarConditions = oFilterBar.getConditions();
82
- aPropertyInfoSet = oFilterBar.getPropertyInfoSet();
83
- sFilterEntityName = oFilterBar.data("entityType").split("/")[1];
84
- }
85
- var aParameters = oInteractiveChart.data("parameters") ? oInteractiveChart.data("parameters").customData : [];
86
- var entityTypeProperties = oMetaModel.getObject(sEntitySetPath + "/");
87
- var filterConditions = FilterHelper.getFiltersConditionsFromSelectionVariant(
88
- entityTypeProperties,
89
- oSelectionVariantAnnotation,
90
- VisualFilterUtils.getCustomConditions.bind(VisualFilterUtils)
91
- );
92
- var oSelectionVariantConditions = VisualFilterUtils.convertFilterCondions(filterConditions);
93
- var mConditions = {};
94
-
95
- Object.keys(oFilterBarConditions).forEach(function(sKey) {
96
- if (oFilterBarConditions[sKey].length) {
97
- mConditions[sKey] = oFilterBarConditions[sKey];
98
- }
99
- });
100
-
101
- Object.keys(oSelectionVariantConditions).forEach(function(sKey) {
102
- if (!mConditions[sKey]) {
103
- mConditions[sKey] = oSelectionVariantConditions[sKey];
104
- }
105
- });
106
- if (bShowOverLayInitially === "true") {
107
- if (!Object.keys(oSelectionVariantAnnotation).length) {
108
- if (aRequiredProperties.length > 1) {
109
- oInternalModelContext.setProperty(sInternalContextPath, {
110
- "showError": true,
111
- "errorMessageTitle": oResourceBundle.getText("M_VISUAL_FILTERS_ERROR_MESSAGE_TITLE"),
112
- "errorMessage": oResourceBundle.getText("M_VISUAL_FILTERS_PROVIDE_FILTER_VAL_MULTIPLEVF")
113
- });
114
- } else {
115
- var sLabel =
116
- oMetaModel.getObject(sEntitySetPath + "/" + aRequiredProperties[0] + "@com.sap.vocabularies.Common.v1.Label") ||
117
- aRequiredProperties[0];
118
- oInternalModelContext.setProperty(sInternalContextPath, {
119
- "showError": true,
120
- "errorMessageTitle": oResourceBundle.getText("M_VISUAL_FILTERS_ERROR_MESSAGE_TITLE"),
121
- "errorMessage": oResourceBundle.getText("M_VISUAL_FILTERS_PROVIDE_FILTER_VAL_SINGLEVF", sLabel)
122
- });
123
- }
124
- } else {
125
- var aSelectOptions = [];
126
- var aNotMatchedConditions = [];
127
- if (oSelectionVariantAnnotation.SelectOptions) {
128
- oSelectionVariantAnnotation.SelectOptions.forEach(function(oSelectOption) {
129
- aSelectOptions.push(oSelectOption.PropertyName.$PropertyPath);
130
- });
131
- }
132
- if (oSelectionVariantAnnotation.Parameters) {
133
- oSelectionVariantAnnotation.Parameters.forEach(function(oParameter) {
134
- aSelectOptions.push(oParameter.PropertyName.$PropertyPath);
135
- });
136
- }
137
- aRequiredProperties.forEach(function(sPath) {
138
- if (aSelectOptions.indexOf(sPath) === -1) {
139
- aNotMatchedConditions.push(sPath);
140
- }
141
- });
142
- if (aNotMatchedConditions.length > 1) {
143
- oInternalModelContext.setProperty(sInternalContextPath, {
144
- "showError": true,
145
- "errorMessageTitle": oResourceBundle.getText("M_VISUAL_FILTERS_ERROR_MESSAGE_TITLE"),
146
- "errorMessage": oResourceBundle.getText("M_VISUAL_FILTERS_PROVIDE_FILTER_VAL_MULTIPLEVF")
147
- });
148
- } else {
149
- var sLabel =
150
- oMetaModel.getObject(
151
- sEntitySetPath + "/" + aNotMatchedConditions[0] + "@com.sap.vocabularies.Common.v1.Label"
152
- ) || aNotMatchedConditions[0];
153
- oInternalModelContext.setProperty(sInternalContextPath, {
154
- "showError": true,
155
- "errorMessageTitle": oResourceBundle.getText("M_VISUAL_FILTERS_ERROR_MESSAGE_TITLE"),
156
- "errorMessage": oResourceBundle.getText("M_VISUAL_FILTERS_PROVIDE_FILTER_VAL_SINGLEVF", sLabel)
157
- });
158
- }
159
- aNotMatchedConditions.length > 1
160
- ? oInternalModelContext.setProperty(sInternalContextPath, {
161
- "showError": true,
162
- "errorMessageTitle": oResourceBundle.getText("M_VISUAL_FILTERS_ERROR_MESSAGE_TITLE"),
163
- "errorMessage": oResourceBundle.getText("M_VISUAL_FILTERS_PROVIDE_FILTER_VAL_MULTIPLEVF")
164
- })
165
- : oInternalModelContext.setProperty(sInternalContextPath, {
166
- "showError": true,
167
- "errorMessageTitle": oResourceBundle.getText("M_VISUAL_FILTERS_ERROR_MESSAGE_TITLE"),
168
- "errorMessage": oResourceBundle.getText(
169
- "M_VISUAL_FILTERS_PROVIDE_FILTER_VAL_SINGLEVF",
170
- aNotMatchedConditions[0]
171
- )
172
- });
173
- }
174
- }
175
-
176
- if (!this._oChartBinding || this._oChartBinding !== oInteractiveChartListBinding) {
177
- if (this._oChartBinding) {
178
- this.detachDataRecivedHandler(this._oChartBinding);
179
- }
180
- this.attachDataRecivedHandler(oInteractiveChartListBinding);
181
- this._oChartBinding = oInteractiveChartListBinding;
182
- }
183
- var bShowOverlay =
184
- oInternalModelContext.getProperty(sInternalContextPath) &&
185
- oInternalModelContext.getProperty(sInternalContextPath).showError;
186
- var sChartEntityName = sEntitySetPath !== "" ? sEntitySetPath.split("/")[1].split("(")[0] : "";
187
- if (aParameters && aParameters.length && sFilterEntityName === sChartEntityName) {
188
- var sBindingPath = FilterUtils.getBindingPathForParameters(oFilterBar, mConditions, aPropertyInfoSet, aParameters);
189
- if (sBindingPath) {
190
- oInteractiveChartListBinding.sPath = sBindingPath;
191
- }
192
- }
193
- // resume binding for only those visual filters that do not have a in parameter attached.
194
- // Bindings of visual filters with inParameters will be resumed later after considering in parameters.
195
- if (oInteractiveChartListBinding && oInteractiveChartListBinding.isSuspended() && !bShowOverlay) {
196
- oInteractiveChartListBinding.resume();
197
- }
198
- };
199
-
200
- VisualFilter.prototype.attachDataRecivedHandler = function(oInteractiveChartListBinding) {
201
- if (oInteractiveChartListBinding) {
202
- oInteractiveChartListBinding.attachEvent("dataReceived", this.onInternalDataReceived, this);
203
- this._oChartBinding = oInteractiveChartListBinding;
204
- }
205
- };
206
-
207
- VisualFilter.prototype.detachDataRecivedHandler = function(oInteractiveChartListBinding) {
208
- if (oInteractiveChartListBinding) {
209
- oInteractiveChartListBinding.detachEvent("dataReceived", this.onInternalDataReceived, this);
210
- this._oChartBinding = null;
211
- }
212
- };
213
-
214
- VisualFilter.prototype.setShowValueHelp = function(bShowValueHelp) {
215
- if (this.getItems().length > 0) {
216
- var oVisualFilterControl = this.getItems()[0].getItems()[0];
217
- oVisualFilterControl.getContent().some(function(oInnerControl) {
218
- if (oInnerControl.isA("sap.m.Button")) {
219
- oInnerControl.setVisible(bShowValueHelp);
220
- }
221
- });
222
- this.setProperty("showValueHelp", bShowValueHelp);
223
- }
224
- };
225
-
226
- VisualFilter.prototype.setValueHelpIconSrc = function(sIconSrc) {
227
- if (this.getItems().length > 0) {
228
- var oVisualFilterControl = this.getItems()[0].getItems()[0];
229
- oVisualFilterControl.getContent().some(function(oInnerControl) {
230
- if (oInnerControl.isA("sap.m.Button")) {
231
- oInnerControl.setIcon(sIconSrc);
232
- }
233
- });
234
- this.setProperty("valueHelpIconSrc", sIconSrc);
235
- }
236
- };
237
-
238
- VisualFilter.prototype.onInternalDataReceived = function(oEvent) {
239
- var sId = this.getId();
240
- var oView = sap.ui.fl.Utils.getViewForControl(this);
241
- var oInteractiveChart = this.getItems()[1].getItems()[0];
242
- var sInternalContextPath = this.data("infoPath");
243
- var oInternalModelContext = oInteractiveChart.getBindingContext("internal");
244
- var oResourceBundle = sap.ui.getCore().getLibraryResourceBundle("sap.fe.macros");
245
- var vUOM = oInteractiveChart.data("uom");
246
- VisualFilterUtils.updateChartScaleFactorTitle(oInteractiveChart, oView, sId, sInternalContextPath);
247
- if (oEvent.getParameter("error")) {
248
- var s18nMessageTitle = oResourceBundle.getText("M_VISUAL_FILTERS_ERROR_MESSAGE_TITLE");
249
- var s18nMessage = oResourceBundle.getText("M_VISUAL_FILTERS_ERROR_DATA_TEXT");
250
- VisualFilterUtils.applyErrorMessageAndTitle(s18nMessageTitle, s18nMessage, sInternalContextPath, oView);
251
- } else if (oEvent.getParameter("data")) {
252
- var oData = oEvent.getSource().getCurrentContexts();
253
- if (oData && oData.length === 0) {
254
- VisualFilterUtils.setNoDataMessage(sInternalContextPath, oResourceBundle, oView);
255
- } else {
256
- oInternalModelContext.setProperty(sInternalContextPath, {});
257
- }
258
- VisualFilterUtils.setMultiUOMMessage(oData, oInteractiveChart, sInternalContextPath, oResourceBundle, oView);
259
- }
260
- if (vUOM && ((vUOM["ISOCurrency"] && vUOM["ISOCurrency"].$Path) || (vUOM["Unit"] && vUOM["Unit"].$Path))) {
261
- var oContexts = oEvent.getSource().getContexts();
262
- var oContextData = oContexts && oContexts[0].getObject();
263
- VisualFilterUtils.applyUOMToTitle(oInteractiveChart, oContextData, oView, sInternalContextPath);
264
- }
265
- };
266
- return VisualFilter;
267
- }
268
- );
8
+ var _dec, _dec2, _dec3, _dec4, _dec5, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4;
9
+
10
+ var getFiltersConditionsFromSelectionVariant = FilterHelper.getFiltersConditionsFromSelectionVariant;
11
+ var property = ClassSupport.property;
12
+ var implementInterface = ClassSupport.implementInterface;
13
+ var event = ClassSupport.event;
14
+ var defineUI5Class = ClassSupport.defineUI5Class;
15
+
16
+ function _initializerDefineProperty(target, property, descriptor, context) { if (!descriptor) return; Object.defineProperty(target, property, { enumerable: descriptor.enumerable, configurable: descriptor.configurable, writable: descriptor.writable, value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 }); }
17
+
18
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
19
+
20
+ function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
21
+
22
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
23
+
24
+ function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }
25
+
26
+ function _initializerWarningHelper(descriptor, context) { throw new Error('Decorating class property failed. Please ensure that ' + 'proposal-class-properties is enabled and runs after the decorators transform.'); }
27
+
28
+ /**
29
+ * Constructor for a new filterBar/aligned/FilterItemLayout.
30
+ *
31
+ * @param {string} [sId] ID for the new control, generated automatically if no ID is given
32
+ * @param {object} [mSettings] Initial settings for the new control
33
+ * @class Represents a filter item on the UI.
34
+ * @extends sap.m.VBox
35
+ * @implements {sap.ui.core.IFormContent}
36
+ * @class
37
+ * @private
38
+ * @since 1.61.0
39
+ * @alias control sap.fe.core.controls.filterbar.VisualFilter
40
+ */
41
+ var VisualFilter = (_dec = defineUI5Class("sap.fe.core.controls.filterbar.VisualFilter"), _dec2 = implementInterface("sap.ui.core.IFormContent"), _dec3 = property({
42
+ type: "boolean"
43
+ }), _dec4 = property({
44
+ type: "string"
45
+ }), _dec5 = event(), _dec(_class = (_class2 = /*#__PURE__*/function (_VBox) {
46
+ _inheritsLoose(VisualFilter, _VBox);
47
+
48
+ function VisualFilter() {
49
+ var _this;
50
+
51
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
52
+ args[_key] = arguments[_key];
53
+ }
54
+
55
+ _this = _VBox.call.apply(_VBox, [this].concat(args)) || this;
56
+
57
+ _initializerDefineProperty(_this, "__implements__sap_ui_core_IFormContent", _descriptor, _assertThisInitialized(_this));
58
+
59
+ _initializerDefineProperty(_this, "showValueHelp", _descriptor2, _assertThisInitialized(_this));
60
+
61
+ _initializerDefineProperty(_this, "valueHelpIconSrc", _descriptor3, _assertThisInitialized(_this));
62
+
63
+ _initializerDefineProperty(_this, "valueHelpRequest", _descriptor4, _assertThisInitialized(_this));
64
+
65
+ return _this;
66
+ }
67
+
68
+ var _proto = VisualFilter.prototype;
69
+
70
+ _proto.onAfterRendering = function onAfterRendering() {
71
+ var sLabel;
72
+ var oInteractiveChart = this.getItems()[1].getItems()[0];
73
+ var sInternalContextPath = this.data("infoPath");
74
+ var oInteractiveChartListBinding = oInteractiveChart.getBinding("segments") || oInteractiveChart.getBinding("bars") || oInteractiveChart.getBinding("points");
75
+ var oInternalModelContext = oInteractiveChart.getBindingContext("internal");
76
+ var oResourceBundle = Core.getLibraryResourceBundle("sap.fe.macros");
77
+ var bShowOverLayInitially = oInteractiveChart.data("showOverlayInitially");
78
+ var oSelectionVariantAnnotation = oInteractiveChart.data("selectionVariantAnnotation") ? CommonHelper.parseCustomData(oInteractiveChart.data("selectionVariantAnnotation")) : {
79
+ SelectOptions: []
80
+ };
81
+ var aRequiredProperties = oInteractiveChart.data("requiredProperties") ? CommonHelper.parseCustomData(oInteractiveChart.data("requiredProperties")) : [];
82
+ var oMetaModel = oInteractiveChart.getModel().getMetaModel();
83
+ var sEntitySetPath = oInteractiveChartListBinding ? oInteractiveChartListBinding.getPath() : "";
84
+ var oFilterBar = this.getParent().getParent(); // TODO: Remove this part once 2170204347 is fixed
85
+
86
+ if (oFilterBar.getMetadata().getElementName() === "sap.ui.mdc.filterbar.p13n.AdaptationFilterBar") {
87
+ oFilterBar = oFilterBar.getParent().getParent();
88
+ }
89
+
90
+ var oFilterBarConditions = {};
91
+ var aPropertyInfoSet = [];
92
+ var sFilterEntityName;
93
+
94
+ if (oFilterBar.getMetadata().getElementName() === "sap.fe.core.controls.FilterBar") {
95
+ oFilterBarConditions = oFilterBar.getConditions();
96
+ aPropertyInfoSet = oFilterBar.getPropertyInfoSet();
97
+ sFilterEntityName = oFilterBar.data("entityType").split("/")[1];
98
+ }
99
+
100
+ var aParameters = oInteractiveChart.data("parameters") ? oInteractiveChart.data("parameters").customData : [];
101
+ var filterConditions = getFiltersConditionsFromSelectionVariant(sEntitySetPath, oMetaModel, oSelectionVariantAnnotation, VisualFilterUtils.getCustomConditions.bind(VisualFilterUtils));
102
+ var oSelectionVariantConditions = VisualFilterUtils.convertFilterCondions(filterConditions);
103
+ var mConditions = {};
104
+ Object.keys(oFilterBarConditions).forEach(function (sKey) {
105
+ if (oFilterBarConditions[sKey].length) {
106
+ mConditions[sKey] = oFilterBarConditions[sKey];
107
+ }
108
+ });
109
+ Object.keys(oSelectionVariantConditions).forEach(function (sKey) {
110
+ if (!mConditions[sKey]) {
111
+ mConditions[sKey] = oSelectionVariantConditions[sKey];
112
+ }
113
+ });
114
+
115
+ if (bShowOverLayInitially === "true") {
116
+ if (!Object.keys(oSelectionVariantAnnotation).length) {
117
+ if (aRequiredProperties.length > 1) {
118
+ oInternalModelContext.setProperty(sInternalContextPath, {
119
+ "showError": true,
120
+ "errorMessageTitle": oResourceBundle.getText("M_VISUAL_FILTERS_ERROR_MESSAGE_TITLE"),
121
+ "errorMessage": oResourceBundle.getText("M_VISUAL_FILTERS_PROVIDE_FILTER_VAL_MULTIPLEVF")
122
+ });
123
+ } else {
124
+ sLabel = oMetaModel.getObject(sEntitySetPath + "/" + aRequiredProperties[0] + "@com.sap.vocabularies.Common.v1.Label") || aRequiredProperties[0];
125
+ oInternalModelContext.setProperty(sInternalContextPath, {
126
+ "showError": true,
127
+ "errorMessageTitle": oResourceBundle.getText("M_VISUAL_FILTERS_ERROR_MESSAGE_TITLE"),
128
+ "errorMessage": oResourceBundle.getText("M_VISUAL_FILTERS_PROVIDE_FILTER_VAL_SINGLEVF", sLabel)
129
+ });
130
+ }
131
+ } else {
132
+ var aSelectOptions = [];
133
+ var aNotMatchedConditions = [];
134
+
135
+ if (oSelectionVariantAnnotation.SelectOptions) {
136
+ oSelectionVariantAnnotation.SelectOptions.forEach(function (oSelectOption) {
137
+ aSelectOptions.push(oSelectOption.PropertyName.$PropertyPath);
138
+ });
139
+ }
140
+
141
+ if (oSelectionVariantAnnotation.Parameters) {
142
+ oSelectionVariantAnnotation.Parameters.forEach(function (oParameter) {
143
+ aSelectOptions.push(oParameter.PropertyName.$PropertyPath);
144
+ });
145
+ }
146
+
147
+ aRequiredProperties.forEach(function (sPath) {
148
+ if (aSelectOptions.indexOf(sPath) === -1) {
149
+ aNotMatchedConditions.push(sPath);
150
+ }
151
+ });
152
+
153
+ if (aNotMatchedConditions.length > 1) {
154
+ oInternalModelContext.setProperty(sInternalContextPath, {
155
+ "showError": true,
156
+ "errorMessageTitle": oResourceBundle.getText("M_VISUAL_FILTERS_ERROR_MESSAGE_TITLE"),
157
+ "errorMessage": oResourceBundle.getText("M_VISUAL_FILTERS_PROVIDE_FILTER_VAL_MULTIPLEVF")
158
+ });
159
+ } else {
160
+ sLabel = oMetaModel.getObject(sEntitySetPath + "/" + aNotMatchedConditions[0] + "@com.sap.vocabularies.Common.v1.Label") || aNotMatchedConditions[0];
161
+ oInternalModelContext.setProperty(sInternalContextPath, {
162
+ "showError": true,
163
+ "errorMessageTitle": oResourceBundle.getText("M_VISUAL_FILTERS_ERROR_MESSAGE_TITLE"),
164
+ "errorMessage": oResourceBundle.getText("M_VISUAL_FILTERS_PROVIDE_FILTER_VAL_SINGLEVF", sLabel)
165
+ });
166
+ }
167
+
168
+ aNotMatchedConditions.length > 1 ? oInternalModelContext.setProperty(sInternalContextPath, {
169
+ "showError": true,
170
+ "errorMessageTitle": oResourceBundle.getText("M_VISUAL_FILTERS_ERROR_MESSAGE_TITLE"),
171
+ "errorMessage": oResourceBundle.getText("M_VISUAL_FILTERS_PROVIDE_FILTER_VAL_MULTIPLEVF")
172
+ }) : oInternalModelContext.setProperty(sInternalContextPath, {
173
+ "showError": true,
174
+ "errorMessageTitle": oResourceBundle.getText("M_VISUAL_FILTERS_ERROR_MESSAGE_TITLE"),
175
+ "errorMessage": oResourceBundle.getText("M_VISUAL_FILTERS_PROVIDE_FILTER_VAL_SINGLEVF", aNotMatchedConditions[0])
176
+ });
177
+ }
178
+ }
179
+
180
+ if (!this._oChartBinding || this._oChartBinding !== oInteractiveChartListBinding) {
181
+ if (this._oChartBinding) {
182
+ this.detachDataReceivedHandler(this._oChartBinding);
183
+ }
184
+
185
+ this.attachDataRecivedHandler(oInteractiveChartListBinding);
186
+ this._oChartBinding = oInteractiveChartListBinding;
187
+ }
188
+
189
+ var bShowOverlay = oInternalModelContext.getProperty(sInternalContextPath) && oInternalModelContext.getProperty(sInternalContextPath).showError;
190
+ var sChartEntityName = sEntitySetPath !== "" ? sEntitySetPath.split("/")[1].split("(")[0] : "";
191
+
192
+ if (aParameters && aParameters.length && sFilterEntityName === sChartEntityName) {
193
+ var sBindingPath = FilterUtils.getBindingPathForParameters(oFilterBar, mConditions, aPropertyInfoSet, aParameters);
194
+
195
+ if (sBindingPath) {
196
+ oInteractiveChartListBinding.sPath = sBindingPath;
197
+ }
198
+ } // resume binding for only those visual filters that do not have a in parameter attached.
199
+ // Bindings of visual filters with inParameters will be resumed later after considering in parameters.
200
+
201
+
202
+ if (oInteractiveChartListBinding && oInteractiveChartListBinding.isSuspended() && !bShowOverlay) {
203
+ oInteractiveChartListBinding.resume();
204
+ }
205
+ };
206
+
207
+ _proto.attachDataRecivedHandler = function attachDataRecivedHandler(oInteractiveChartListBinding) {
208
+ if (oInteractiveChartListBinding) {
209
+ oInteractiveChartListBinding.attachEvent("dataReceived", this.onInternalDataReceived, this);
210
+ this._oChartBinding = oInteractiveChartListBinding;
211
+ }
212
+ };
213
+
214
+ _proto.detachDataReceivedHandler = function detachDataReceivedHandler(oInteractiveChartListBinding) {
215
+ if (oInteractiveChartListBinding) {
216
+ oInteractiveChartListBinding.detachEvent("dataReceived", this.onInternalDataReceived, this);
217
+ this._oChartBinding = undefined;
218
+ }
219
+ };
220
+
221
+ _proto.setShowValueHelp = function setShowValueHelp(bShowValueHelp) {
222
+ if (this.getItems().length > 0) {
223
+ var oVisualFilterControl = this.getItems()[0].getItems()[0];
224
+ oVisualFilterControl.getContent().some(function (oInnerControl) {
225
+ if (oInnerControl.isA("sap.m.Button")) {
226
+ oInnerControl.setVisible(bShowValueHelp);
227
+ }
228
+ });
229
+ this.setProperty("showValueHelp", bShowValueHelp);
230
+ }
231
+ };
232
+
233
+ _proto.setValueHelpIconSrc = function setValueHelpIconSrc(sIconSrc) {
234
+ if (this.getItems().length > 0) {
235
+ var oVisualFilterControl = this.getItems()[0].getItems()[0];
236
+ oVisualFilterControl.getContent().some(function (oInnerControl) {
237
+ if (oInnerControl.isA("sap.m.Button")) {
238
+ oInnerControl.setIcon(sIconSrc);
239
+ }
240
+ });
241
+ this.setProperty("valueHelpIconSrc", sIconSrc);
242
+ }
243
+ };
244
+
245
+ _proto.onInternalDataReceived = function onInternalDataReceived(oEvent) {
246
+ var sId = this.getId();
247
+ var oView = CommonUtils.getTargetView(this);
248
+ var oInteractiveChart = this.getItems()[1].getItems()[0];
249
+ var sInternalContextPath = this.data("infoPath");
250
+ var oInternalModelContext = oInteractiveChart.getBindingContext("internal");
251
+ var oResourceBundle = Core.getLibraryResourceBundle("sap.fe.macros");
252
+ var vUOM = oInteractiveChart.data("uom");
253
+ VisualFilterUtils.updateChartScaleFactorTitle(oInteractiveChart, oView, sId, sInternalContextPath);
254
+
255
+ if (oEvent.getParameter("error")) {
256
+ var s18nMessageTitle = oResourceBundle.getText("M_VISUAL_FILTERS_ERROR_MESSAGE_TITLE");
257
+ var s18nMessage = oResourceBundle.getText("M_VISUAL_FILTERS_ERROR_DATA_TEXT");
258
+ VisualFilterUtils.applyErrorMessageAndTitle(s18nMessageTitle, s18nMessage, sInternalContextPath, oView);
259
+ } else if (oEvent.getParameter("data")) {
260
+ var oData = oEvent.getSource().getCurrentContexts();
261
+
262
+ if (oData && oData.length === 0) {
263
+ VisualFilterUtils.setNoDataMessage(sInternalContextPath, oResourceBundle, oView);
264
+ } else {
265
+ oInternalModelContext.setProperty(sInternalContextPath, {});
266
+ }
267
+
268
+ VisualFilterUtils.setMultiUOMMessage(oData, oInteractiveChart, sInternalContextPath, oResourceBundle, oView);
269
+ }
270
+
271
+ if (vUOM && (vUOM["ISOCurrency"] && vUOM["ISOCurrency"].$Path || vUOM["Unit"] && vUOM["Unit"].$Path)) {
272
+ var oContexts = oEvent.getSource().getContexts();
273
+ var oContextData = oContexts && oContexts[0].getObject();
274
+ VisualFilterUtils.applyUOMToTitle(oInteractiveChart, oContextData, oView, sInternalContextPath);
275
+ }
276
+ };
277
+
278
+ return VisualFilter;
279
+ }(VBox), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, "__implements__sap_ui_core_IFormContent", [_dec2], {
280
+ configurable: true,
281
+ enumerable: true,
282
+ writable: true,
283
+ initializer: function () {
284
+ return true;
285
+ }
286
+ }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "showValueHelp", [_dec3], {
287
+ configurable: true,
288
+ enumerable: true,
289
+ writable: true,
290
+ initializer: null
291
+ }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, "valueHelpIconSrc", [_dec4], {
292
+ configurable: true,
293
+ enumerable: true,
294
+ writable: true,
295
+ initializer: null
296
+ }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, "valueHelpRequest", [_dec5], {
297
+ configurable: true,
298
+ enumerable: true,
299
+ writable: true,
300
+ initializer: null
301
+ })), _class2)) || _class);
302
+ return VisualFilter;
303
+ }, false);
304
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlZpc3VhbEZpbHRlci50cyJdLCJuYW1lcyI6WyJWaXN1YWxGaWx0ZXIiLCJkZWZpbmVVSTVDbGFzcyIsImltcGxlbWVudEludGVyZmFjZSIsInByb3BlcnR5IiwidHlwZSIsImV2ZW50Iiwib25BZnRlclJlbmRlcmluZyIsInNMYWJlbCIsIm9JbnRlcmFjdGl2ZUNoYXJ0IiwiZ2V0SXRlbXMiLCJzSW50ZXJuYWxDb250ZXh0UGF0aCIsImRhdGEiLCJvSW50ZXJhY3RpdmVDaGFydExpc3RCaW5kaW5nIiwiZ2V0QmluZGluZyIsIm9JbnRlcm5hbE1vZGVsQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0Iiwib1Jlc291cmNlQnVuZGxlIiwiQ29yZSIsImdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZSIsImJTaG93T3ZlckxheUluaXRpYWxseSIsIm9TZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvbiIsIkNvbW1vbkhlbHBlciIsInBhcnNlQ3VzdG9tRGF0YSIsIlNlbGVjdE9wdGlvbnMiLCJhUmVxdWlyZWRQcm9wZXJ0aWVzIiwib01ldGFNb2RlbCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwic0VudGl0eVNldFBhdGgiLCJnZXRQYXRoIiwib0ZpbHRlckJhciIsImdldFBhcmVudCIsImdldE1ldGFkYXRhIiwiZ2V0RWxlbWVudE5hbWUiLCJvRmlsdGVyQmFyQ29uZGl0aW9ucyIsImFQcm9wZXJ0eUluZm9TZXQiLCJzRmlsdGVyRW50aXR5TmFtZSIsImdldENvbmRpdGlvbnMiLCJnZXRQcm9wZXJ0eUluZm9TZXQiLCJzcGxpdCIsImFQYXJhbWV0ZXJzIiwiY3VzdG9tRGF0YSIsImZpbHRlckNvbmRpdGlvbnMiLCJnZXRGaWx0ZXJzQ29uZGl0aW9uc0Zyb21TZWxlY3Rpb25WYXJpYW50IiwiVmlzdWFsRmlsdGVyVXRpbHMiLCJnZXRDdXN0b21Db25kaXRpb25zIiwiYmluZCIsIm9TZWxlY3Rpb25WYXJpYW50Q29uZGl0aW9ucyIsImNvbnZlcnRGaWx0ZXJDb25kaW9ucyIsIm1Db25kaXRpb25zIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJzS2V5IiwibGVuZ3RoIiwic2V0UHJvcGVydHkiLCJnZXRUZXh0IiwiZ2V0T2JqZWN0IiwiYVNlbGVjdE9wdGlvbnMiLCJhTm90TWF0Y2hlZENvbmRpdGlvbnMiLCJvU2VsZWN0T3B0aW9uIiwicHVzaCIsIlByb3BlcnR5TmFtZSIsIiRQcm9wZXJ0eVBhdGgiLCJQYXJhbWV0ZXJzIiwib1BhcmFtZXRlciIsInNQYXRoIiwiaW5kZXhPZiIsIl9vQ2hhcnRCaW5kaW5nIiwiZGV0YWNoRGF0YVJlY2VpdmVkSGFuZGxlciIsImF0dGFjaERhdGFSZWNpdmVkSGFuZGxlciIsImJTaG93T3ZlcmxheSIsImdldFByb3BlcnR5Iiwic2hvd0Vycm9yIiwic0NoYXJ0RW50aXR5TmFtZSIsInNCaW5kaW5nUGF0aCIsIkZpbHRlclV0aWxzIiwiZ2V0QmluZGluZ1BhdGhGb3JQYXJhbWV0ZXJzIiwiaXNTdXNwZW5kZWQiLCJyZXN1bWUiLCJhdHRhY2hFdmVudCIsIm9uSW50ZXJuYWxEYXRhUmVjZWl2ZWQiLCJkZXRhY2hFdmVudCIsInVuZGVmaW5lZCIsInNldFNob3dWYWx1ZUhlbHAiLCJiU2hvd1ZhbHVlSGVscCIsIm9WaXN1YWxGaWx0ZXJDb250cm9sIiwiZ2V0Q29udGVudCIsInNvbWUiLCJvSW5uZXJDb250cm9sIiwiaXNBIiwic2V0VmlzaWJsZSIsInNldFZhbHVlSGVscEljb25TcmMiLCJzSWNvblNyYyIsInNldEljb24iLCJvRXZlbnQiLCJzSWQiLCJnZXRJZCIsIm9WaWV3IiwiQ29tbW9uVXRpbHMiLCJnZXRUYXJnZXRWaWV3IiwidlVPTSIsInVwZGF0ZUNoYXJ0U2NhbGVGYWN0b3JUaXRsZSIsImdldFBhcmFtZXRlciIsInMxOG5NZXNzYWdlVGl0bGUiLCJzMThuTWVzc2FnZSIsImFwcGx5RXJyb3JNZXNzYWdlQW5kVGl0bGUiLCJvRGF0YSIsImdldFNvdXJjZSIsImdldEN1cnJlbnRDb250ZXh0cyIsInNldE5vRGF0YU1lc3NhZ2UiLCJzZXRNdWx0aVVPTU1lc3NhZ2UiLCIkUGF0aCIsIm9Db250ZXh0cyIsImdldENvbnRleHRzIiwib0NvbnRleHREYXRhIiwiYXBwbHlVT01Ub1RpdGxlIiwiVkJveCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7TUFFTUEsWSxXQURMQyxjQUFjLENBQUMsNkNBQUQsQyxVQUViQyxrQkFBa0IsQ0FBQywwQkFBRCxDLFVBRWxCQyxRQUFRLENBQUM7QUFDVEMsSUFBQUEsSUFBSSxFQUFFO0FBREcsR0FBRCxDLFVBSVJELFFBQVEsQ0FBQztBQUNUQyxJQUFBQSxJQUFJLEVBQUU7QUFERyxHQUFELEMsVUFJUkMsS0FBSyxFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1dBSU5DLGdCLEdBQUEsNEJBQW1CO0FBQ2xCLFVBQUlDLE1BQUo7QUFDQSxVQUFNQyxpQkFBaUIsR0FBSSxLQUFLQyxRQUFMLEdBQWdCLENBQWhCLENBQUQsQ0FBNEJBLFFBQTVCLEdBQXVDLENBQXZDLENBQTFCO0FBQ0EsVUFBTUMsb0JBQW9CLEdBQUcsS0FBS0MsSUFBTCxDQUFVLFVBQVYsQ0FBN0I7QUFDQSxVQUFNQyw0QkFBNEIsR0FDakNKLGlCQUFpQixDQUFDSyxVQUFsQixDQUE2QixVQUE3QixLQUE0Q0wsaUJBQWlCLENBQUNLLFVBQWxCLENBQTZCLE1BQTdCLENBQTVDLElBQW9GTCxpQkFBaUIsQ0FBQ0ssVUFBbEIsQ0FBNkIsUUFBN0IsQ0FEckY7QUFFQSxVQUFNQyxxQkFBcUIsR0FBR04saUJBQWlCLENBQUNPLGlCQUFsQixDQUFvQyxVQUFwQyxDQUE5QjtBQUNBLFVBQU1DLGVBQWUsR0FBSUMsSUFBRCxDQUFpQkMsd0JBQWpCLENBQTBDLGVBQTFDLENBQXhCO0FBQ0EsVUFBTUMscUJBQXFCLEdBQUdYLGlCQUFpQixDQUFDRyxJQUFsQixDQUF1Qixz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QUZELE1BRU87QUFDTnBGLFVBQUFBLHFCQUFxQixDQUFDeUMsV0FBdEIsQ0FBa0M3QyxvQkFBbEMsRUFBd0QsRUFBeEQ7QUFDQTs7QUFDRGtDLFFBQUFBLGlCQUFpQixDQUFDbUUsa0JBQWxCLENBQXFDSixLQUFyQyxFQUE0Q25HLGlCQUE1QyxFQUErREUsb0JBQS9ELEVBQXFGTSxlQUFyRixFQUFzR2tGLEtBQXRHO0FBQ0E7O0FBQ0QsVUFBSUcsSUFBSSxLQUFNQSxJQUFJLENBQUMsYUFBRCxDQUFKLElBQXVCQSxJQUFJLENBQUMsYUFBRCxDQUFKLENBQW9CVyxLQUE1QyxJQUF1RFgsSUFBSSxDQUFDLE1BQUQsQ0FBSixJQUFnQkEsSUFBSSxDQUFDLE1BQUQsQ0FBSixDQUFhVyxLQUF6RixDQUFSLEVBQTBHO0FBQ3pHLFlBQU1DLFNBQVMsR0FBR2xCLE1BQU0sQ0FBQ2EsU0FBUCxHQUFtQk0sV0FBbkIsRUFBbEI7QUFDQSxZQUFNQyxZQUFZLEdBQUdGLFNBQVMsSUFBSUEsU0FBUyxDQUFDLENBQUQsQ0FBVCxDQUFheEQsU0FBYixFQUFsQztBQUNBYixRQUFBQSxpQkFBaUIsQ0FBQ3dFLGVBQWxCLENBQWtDNUcsaUJBQWxDLEVBQXFEMkcsWUFBckQsRUFBbUVqQixLQUFuRSxFQUEwRXhGLG9CQUExRTtBQUNBO0FBQ0QsSzs7O0lBL055QjJHLEk7Ozs7O2FBRXdCLEk7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQStOcENySCxZIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgVmlzdWFsRmlsdGVyVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xzL2ZpbHRlcmJhci91dGlscy9WaXN1YWxGaWx0ZXJVdGlsc1wiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIGV2ZW50LCBpbXBsZW1lbnRJbnRlcmZhY2UsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQ29tbW9uSGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL0NvbW1vbkhlbHBlclwiO1xuaW1wb3J0IEZpbHRlclV0aWxzIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlci9GaWx0ZXJVdGlsc1wiO1xuaW1wb3J0IFZCb3ggZnJvbSBcInNhcC9tL1ZCb3hcIjtcbmltcG9ydCBDb3JlIGZyb20gXCJzYXAvdWkvY29yZS9Db3JlXCI7XG5pbXBvcnQgRWxlbWVudE1ldGFkYXRhIGZyb20gXCJzYXAvdWkvY29yZS9FbGVtZW50TWV0YWRhdGFcIjtcbmltcG9ydCB7IElGb3JtQ29udGVudCB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgRmlsdGVyQmFyIGZyb20gXCJzYXAvdWkvbWRjL0ZpbHRlckJhclwiO1xuaW1wb3J0IHsgQ29yZUV4IH0gZnJvbSBcInR5cGVzL2V4dGVuc2lvbl90eXBlc1wiO1xuaW1wb3J0IHsgZ2V0RmlsdGVyc0NvbmRpdGlvbnNGcm9tU2VsZWN0aW9uVmFyaWFudCB9IGZyb20gXCIuLi8uLi90ZW1wbGF0aW5nL0ZpbHRlckhlbHBlclwiO1xuLyoqXG4gKiBDb25zdHJ1Y3RvciBmb3IgYSBuZXcgZmlsdGVyQmFyL2FsaWduZWQvRmlsdGVySXRlbUxheW91dC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW3NJZF0gSUQgZm9yIHRoZSBuZXcgY29udHJvbCwgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgaWYgbm8gSUQgaXMgZ2l2ZW5cbiAqIEBwYXJhbSB7b2JqZWN0fSBbbVNldHRpbmdzXSBJbml0aWFsIHNldHRpbmdzIGZvciB0aGUgbmV3IGNvbnRyb2xcbiAqIEBjbGFzcyBSZXByZXNlbnRzIGEgZmlsdGVyIGl0ZW0gb24gdGhlIFVJLlxuICogQGV4dGVuZHMgc2FwLm0uVkJveFxuICogQGltcGxlbWVudHMge3NhcC51aS5jb3JlLklGb3JtQ29udGVudH1cbiAqIEBjbGFzc1xuICogQHByaXZhdGVcbiAqIEBzaW5jZSAxLjYxLjBcbiAqIEBhbGlhcyBjb250cm9sIHNhcC5mZS5jb3JlLmNvbnRyb2xzLmZpbHRlcmJhci5WaXN1YWxGaWx0ZXJcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuY29udHJvbHMuZmlsdGVyYmFyLlZpc3VhbEZpbHRlclwiKVxuY2xhc3MgVmlzdWFsRmlsdGVyIGV4dGVuZHMgVkJveCBpbXBsZW1lbnRzIElGb3JtQ29udGVudCB7XG5cdEBpbXBsZW1lbnRJbnRlcmZhY2UoXCJzYXAudWkuY29yZS5JRm9ybUNvbnRlbnRcIilcblx0X19pbXBsZW1lbnRzX19zYXBfdWlfY29yZV9JRm9ybUNvbnRlbnQ6IGJvb2xlYW4gPSB0cnVlO1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiXG5cdH0pXG5cdHNob3dWYWx1ZUhlbHAhOiBib29sZWFuO1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0dmFsdWVIZWxwSWNvblNyYyE6IHN0cmluZztcblx0QGV2ZW50KClcblx0dmFsdWVIZWxwUmVxdWVzdCE6IEZ1bmN0aW9uO1xuXHRwcml2YXRlIF9vQ2hhcnRCaW5kaW5nPzogYm9vbGVhbjtcblxuXHRvbkFmdGVyUmVuZGVyaW5nKCkge1xuXHRcdGxldCBzTGFiZWw7XG5cdFx0Y29uc3Qgb0ludGVyYWN0aXZlQ2hhcnQgPSAodGhpcy5nZXRJdGVtcygpWzFdIGFzIGFueSkuZ2V0SXRlbXMoKVswXTtcblx0XHRjb25zdCBzSW50ZXJuYWxDb250ZXh0UGF0aCA9IHRoaXMuZGF0YShcImluZm9QYXRoXCIpO1xuXHRcdGNvbnN0IG9JbnRlcmFjdGl2ZUNoYXJ0TGlzdEJpbmRpbmcgPVxuXHRcdFx0b0ludGVyYWN0aXZlQ2hhcnQuZ2V0QmluZGluZyhcInNlZ21lbnRzXCIpIHx8IG9JbnRlcmFjdGl2ZUNoYXJ0LmdldEJpbmRpbmcoXCJiYXJzXCIpIHx8IG9JbnRlcmFjdGl2ZUNoYXJ0LmdldEJpbmRpbmcoXCJwb2ludHNcIik7XG5cdFx0Y29uc3Qgb0ludGVybmFsTW9kZWxDb250ZXh0ID0gb0ludGVyYWN0aXZlQ2hhcnQuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKTtcblx0XHRjb25zdCBvUmVzb3VyY2VCdW5kbGUgPSAoQ29yZSBhcyBDb3JlRXgpLmdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZShcInNhcC5mZS5tYWNyb3NcIik7XG5cdFx0Y29uc3QgYlNob3dPdmVyTGF5SW5pdGlhbGx5ID0gb0ludGVyYWN0aXZlQ2hhcnQuZGF0YShcInNob3dPdmVybGF5SW5pdGlhbGx5XCIpO1xuXHRcdGNvbnN0IG9TZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvbjogYW55ID0gb0ludGVyYWN0aXZlQ2hhcnQuZGF0YShcInNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uXCIpXG5cdFx0XHQ/IENvbW1vbkhlbHBlci5wYXJzZUN1c3RvbURhdGEob0ludGVyYWN0aXZlQ2hhcnQuZGF0YShcInNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uXCIpKVxuXHRcdFx0OiB7IFNlbGVjdE9wdGlvbnM6IFtdIH07XG5cdFx0Y29uc3QgYVJlcXVpcmVkUHJvcGVydGllczogYW55W10gPSBvSW50ZXJhY3RpdmVDaGFydC5kYXRhKFwicmVxdWlyZWRQcm9wZXJ0aWVzXCIpXG5cdFx0XHQ/IChDb21tb25IZWxwZXIucGFyc2VDdXN0b21EYXRhKG9JbnRlcmFjdGl2ZUNoYXJ0LmRhdGEoXCJyZXF1aXJlZFByb3BlcnRpZXNcIikpIGFzIGFueVtdKVxuXHRcdFx0OiBbXTtcblx0XHRjb25zdCBvTWV0YU1vZGVsID0gb0ludGVyYWN0aXZlQ2hhcnQuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKTtcblx0XHRjb25zdCBzRW50aXR5U2V0UGF0aCA9IG9JbnRlcmFjdGl2ZUNoYXJ0TGlzdEJpbmRpbmcgPyBvSW50ZXJhY3RpdmVDaGFydExpc3RCaW5kaW5nLmdldFBhdGgoKSA6IFwiXCI7XG5cdFx0bGV0IG9GaWx0ZXJCYXIgPSB0aGlzLmdldFBhcmVudCgpLmdldFBhcmVudCgpIGFzIEZpbHRlckJhcjtcblx0XHQvLyBUT0RPOiBSZW1vdmUgdGhpcyBwYXJ0IG9uY2UgMjE3MDIwNDM0NyBpcyBmaXhlZFxuXHRcdGlmICgob0ZpbHRlckJhci5nZXRNZXRhZGF0YSgpIGFzIEVsZW1lbnRNZXRhZGF0YSkuZ2V0RWxlbWVudE5hbWUoKSA9PT0gXCJzYXAudWkubWRjLmZpbHRlcmJhci5wMTNuLkFkYXB0YXRpb25GaWx0ZXJCYXJcIikge1xuXHRcdFx0b0ZpbHRlckJhciA9IG9GaWx0ZXJCYXIuZ2V0UGFyZW50KCkuZ2V0UGFyZW50KCkgYXMgRmlsdGVyQmFyO1xuXHRcdH1cblx0XHRsZXQgb0ZpbHRlckJhckNvbmRpdGlvbnM6IGFueSA9IHt9O1xuXHRcdGxldCBhUHJvcGVydHlJbmZvU2V0ID0gW107XG5cdFx0bGV0IHNGaWx0ZXJFbnRpdHlOYW1lO1xuXHRcdGlmICgob0ZpbHRlckJhci5nZXRNZXRhZGF0YSgpIGFzIEVsZW1lbnRNZXRhZGF0YSkuZ2V0RWxlbWVudE5hbWUoKSA9PT0gXCJzYXAuZmUuY29yZS5jb250cm9scy5GaWx0ZXJCYXJcIikge1xuXHRcdFx0b0ZpbHRlckJhckNvbmRpdGlvbnMgPSBvRmlsdGVyQmFyLmdldENvbmRpdGlvbnMoKTtcblx0XHRcdGFQcm9wZXJ0eUluZm9TZXQgPSAob0ZpbHRlckJhciBhcyBhbnkpLmdldFByb3BlcnR5SW5mb1NldCgpO1xuXHRcdFx0c0ZpbHRlckVudGl0eU5hbWUgPSBvRmlsdGVyQmFyLmRhdGEoXCJlbnRpdHlUeXBlXCIpLnNwbGl0KFwiL1wiKVsxXTtcblx0XHR9XG5cdFx0Y29uc3QgYVBhcmFtZXRlcnMgPSBvSW50ZXJhY3RpdmVDaGFydC5kYXRhKFwicGFyYW1ldGVyc1wiKSA/IG9JbnRlcmFjdGl2ZUNoYXJ0LmRhdGEoXCJwYXJhbWV0ZXJzXCIpLmN1c3RvbURhdGEgOiBbXTtcblx0XHRjb25zdCBmaWx0ZXJDb25kaXRpb25zID0gZ2V0RmlsdGVyc0NvbmRpdGlvbnNGcm9tU2VsZWN0aW9uVmFyaWFudChcblx0XHRcdHNFbnRpdHlTZXRQYXRoLFxuXHRcdFx0b01ldGFNb2RlbCxcblx0XHRcdG9TZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvbixcblx0XHRcdFZpc3VhbEZpbHRlclV0aWxzLmdldEN1c3RvbUNvbmRpdGlvbnMuYmluZChWaXN1YWxGaWx0ZXJVdGlscylcblx0XHQpO1xuXHRcdGNvbnN0IG9TZWxlY3Rpb25WYXJpYW50Q29uZGl0aW9ucyA9IFZpc3VhbEZpbHRlclV0aWxzLmNvbnZlcnRGaWx0ZXJDb25kaW9ucyhmaWx0ZXJDb25kaXRpb25zKTtcblx0XHRjb25zdCBtQ29uZGl0aW9uczogYW55ID0ge307XG5cblx0XHRPYmplY3Qua2V5cyhvRmlsdGVyQmFyQ29uZGl0aW9ucykuZm9yRWFjaChmdW5jdGlvbiAoc0tleTogc3RyaW5nKSB7XG5cdFx0XHRpZiAob0ZpbHRlckJhckNvbmRpdGlvbnNbc0tleV0ubGVuZ3RoKSB7XG5cdFx0XHRcdG1Db25kaXRpb25zW3NLZXldID0gb0ZpbHRlckJhckNvbmRpdGlvbnNbc0tleV07XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRPYmplY3Qua2V5cyhvU2VsZWN0aW9uVmFyaWFudENvbmRpdGlvbnMpLmZvckVhY2goZnVuY3Rpb24gKHNLZXk6IHN0cmluZykge1xuXHRcdFx0aWYgKCFtQ29uZGl0aW9uc1tzS2V5XSkge1xuXHRcdFx0XHRtQ29uZGl0aW9uc1tzS2V5XSA9IG9TZWxlY3Rpb25WYXJpYW50Q29uZGl0aW9uc1tzS2V5XTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRpZiAoYlNob3dPdmVyTGF5SW5pdGlhbGx5ID09PSBcInRydWVcIikge1xuXHRcdFx0aWYgKCFPYmplY3Qua2V5cyhvU2VsZWN0aW9uVmFyaWFudEFubm90YXRpb24pLmxlbmd0aCkge1xuXHRcdFx0XHRpZiAoYVJlcXVpcmVkUHJvcGVydGllcy5sZW5ndGggPiAxKSB7XG5cdFx0XHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KHNJbnRlcm5hbENvbnRleHRQYXRoLCB7XG5cdFx0XHRcdFx0XHRcInNob3dFcnJvclwiOiB0cnVlLFxuXHRcdFx0XHRcdFx0XCJlcnJvck1lc3NhZ2VUaXRsZVwiOiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fVklTVUFMX0ZJTFRFUlNfRVJST1JfTUVTU0FHRV9USVRMRVwiKSxcblx0XHRcdFx0XHRcdFwiZXJyb3JNZXNzYWdlXCI6IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9WSVNVQUxfRklMVEVSU19QUk9WSURFX0ZJTFRFUl9WQUxfTVVMVElQTEVWRlwiKVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHNMYWJlbCA9XG5cdFx0XHRcdFx0XHRvTWV0YU1vZGVsLmdldE9iamVjdChzRW50aXR5U2V0UGF0aCArIFwiL1wiICsgYVJlcXVpcmVkUHJvcGVydGllc1swXSArIFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5MYWJlbFwiKSB8fFxuXHRcdFx0XHRcdFx0YVJlcXVpcmVkUHJvcGVydGllc1swXTtcblx0XHRcdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoc0ludGVybmFsQ29udGV4dFBhdGgsIHtcblx0XHRcdFx0XHRcdFwic2hvd0Vycm9yXCI6IHRydWUsXG5cdFx0XHRcdFx0XHRcImVycm9yTWVzc2FnZVRpdGxlXCI6IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9WSVNVQUxfRklMVEVSU19FUlJPUl9NRVNTQUdFX1RJVExFXCIpLFxuXHRcdFx0XHRcdFx0XCJlcnJvck1lc3NhZ2VcIjogb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX1ZJU1VBTF9GSUxURVJTX1BST1ZJREVfRklMVEVSX1ZBTF9TSU5HTEVWRlwiLCBzTGFiZWwpXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnN0IGFTZWxlY3RPcHRpb25zOiBhbnlbXSA9IFtdO1xuXHRcdFx0XHRjb25zdCBhTm90TWF0Y2hlZENvbmRpdGlvbnM6IGFueVtdID0gW107XG5cdFx0XHRcdGlmIChvU2VsZWN0aW9uVmFyaWFudEFubm90YXRpb24uU2VsZWN0T3B0aW9ucykge1xuXHRcdFx0XHRcdG9TZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvbi5TZWxlY3RPcHRpb25zLmZvckVhY2goZnVuY3Rpb24gKG9TZWxlY3RPcHRpb246IGFueSkge1xuXHRcdFx0XHRcdFx0YVNlbGVjdE9wdGlvbnMucHVzaChvU2VsZWN0T3B0aW9uLlByb3BlcnR5TmFtZS4kUHJvcGVydHlQYXRoKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAob1NlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uLlBhcmFtZXRlcnMpIHtcblx0XHRcdFx0XHRvU2VsZWN0aW9uVmFyaWFudEFubm90YXRpb24uUGFyYW1ldGVycy5mb3JFYWNoKGZ1bmN0aW9uIChvUGFyYW1ldGVyOiBhbnkpIHtcblx0XHRcdFx0XHRcdGFTZWxlY3RPcHRpb25zLnB1c2gob1BhcmFtZXRlci5Qcm9wZXJ0eU5hbWUuJFByb3BlcnR5UGF0aCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YVJlcXVpcmVkUHJvcGVydGllcy5mb3JFYWNoKGZ1bmN0aW9uIChzUGF0aDogYW55KSB7XG5cdFx0XHRcdFx0aWYgKGFTZWxlY3RPcHRpb25zLmluZGV4T2Yoc1BhdGgpID09PSAtMSkge1xuXHRcdFx0XHRcdFx0YU5vdE1hdGNoZWRDb25kaXRpb25zLnB1c2goc1BhdGgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHRcdGlmIChhTm90TWF0Y2hlZENvbmRpdGlvbnMubGVuZ3RoID4gMSkge1xuXHRcdFx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShzSW50ZXJuYWxDb250ZXh0UGF0aCwge1xuXHRcdFx0XHRcdFx0XCJzaG93RXJyb3JcIjogdHJ1ZSxcblx0XHRcdFx0XHRcdFwiZXJyb3JNZXNzYWdlVGl0bGVcIjogb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX1ZJU1VBTF9GSUxURVJTX0VSUk9SX01FU1NBR0VfVElUTEVcIiksXG5cdFx0XHRcdFx0XHRcImVycm9yTWVzc2FnZVwiOiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fVklTVUFMX0ZJTFRFUlNfUFJPVklERV9GSUxURVJfVkFMX01VTFRJUExFVkZcIilcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzTGFiZWwgPVxuXHRcdFx0XHRcdFx0b01ldGFNb2RlbC5nZXRPYmplY3Qoc0VudGl0eVNldFBhdGggKyBcIi9cIiArIGFOb3RNYXRjaGVkQ29uZGl0aW9uc1swXSArIFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5MYWJlbFwiKSB8fFxuXHRcdFx0XHRcdFx0YU5vdE1hdGNoZWRDb25kaXRpb25zWzBdO1xuXHRcdFx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShzSW50ZXJuYWxDb250ZXh0UGF0aCwge1xuXHRcdFx0XHRcdFx0XCJzaG93RXJyb3JcIjogdHJ1ZSxcblx0XHRcdFx0XHRcdFwiZXJyb3JNZXNzYWdlVGl0bGVcIjogb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX1ZJU1VBTF9GSUxURVJTX0VSUk9SX01FU1NBR0VfVElUTEVcIiksXG5cdFx0XHRcdFx0XHRcImVycm9yTWVzc2FnZVwiOiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fVklTVUFMX0ZJTFRFUlNfUFJPVklERV9GSUxURVJfVkFMX1NJTkdMRVZGXCIsIHNMYWJlbClcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRhTm90TWF0Y2hlZENvbmRpdGlvbnMubGVuZ3RoID4gMVxuXHRcdFx0XHRcdD8gb0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KHNJbnRlcm5hbENvbnRleHRQYXRoLCB7XG5cdFx0XHRcdFx0XHRcdFwic2hvd0Vycm9yXCI6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFwiZXJyb3JNZXNzYWdlVGl0bGVcIjogb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX1ZJU1VBTF9GSUxURVJTX0VSUk9SX01FU1NBR0VfVElUTEVcIiksXG5cdFx0XHRcdFx0XHRcdFwiZXJyb3JNZXNzYWdlXCI6IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9WSVNVQUxfRklMVEVSU19QUk9WSURFX0ZJTFRFUl9WQUxfTVVMVElQTEVWRlwiKVxuXHRcdFx0XHRcdCAgfSlcblx0XHRcdFx0XHQ6IG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShzSW50ZXJuYWxDb250ZXh0UGF0aCwge1xuXHRcdFx0XHRcdFx0XHRcInNob3dFcnJvclwiOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcImVycm9yTWVzc2FnZVRpdGxlXCI6IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9WSVNVQUxfRklMVEVSU19FUlJPUl9NRVNTQUdFX1RJVExFXCIpLFxuXHRcdFx0XHRcdFx0XHRcImVycm9yTWVzc2FnZVwiOiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcblx0XHRcdFx0XHRcdFx0XHRcIk1fVklTVUFMX0ZJTFRFUlNfUFJPVklERV9GSUxURVJfVkFMX1NJTkdMRVZGXCIsXG5cdFx0XHRcdFx0XHRcdFx0YU5vdE1hdGNoZWRDb25kaXRpb25zWzBdXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQgIH0pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICghdGhpcy5fb0NoYXJ0QmluZGluZyB8fCB0aGlzLl9vQ2hhcnRCaW5kaW5nICE9PSBvSW50ZXJhY3RpdmVDaGFydExpc3RCaW5kaW5nKSB7XG5cdFx0XHRpZiAodGhpcy5fb0NoYXJ0QmluZGluZykge1xuXHRcdFx0XHR0aGlzLmRldGFjaERhdGFSZWNlaXZlZEhhbmRsZXIodGhpcy5fb0NoYXJ0QmluZGluZyk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmF0dGFjaERhdGFSZWNpdmVkSGFuZGxlcihvSW50ZXJhY3RpdmVDaGFydExpc3RCaW5kaW5nKTtcblx0XHRcdHRoaXMuX29DaGFydEJpbmRpbmcgPSBvSW50ZXJhY3RpdmVDaGFydExpc3RCaW5kaW5nO1xuXHRcdH1cblx0XHRjb25zdCBiU2hvd092ZXJsYXkgPVxuXHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LmdldFByb3BlcnR5KHNJbnRlcm5hbENvbnRleHRQYXRoKSAmJiBvSW50ZXJuYWxNb2RlbENvbnRleHQuZ2V0UHJvcGVydHkoc0ludGVybmFsQ29udGV4dFBhdGgpLnNob3dFcnJvcjtcblx0XHRjb25zdCBzQ2hhcnRFbnRpdHlOYW1lID0gc0VudGl0eVNldFBhdGggIT09IFwiXCIgPyBzRW50aXR5U2V0UGF0aC5zcGxpdChcIi9cIilbMV0uc3BsaXQoXCIoXCIpWzBdIDogXCJcIjtcblx0XHRpZiAoYVBhcmFtZXRlcnMgJiYgYVBhcmFtZXRlcnMubGVuZ3RoICYmIHNGaWx0ZXJFbnRpdHlOYW1lID09PSBzQ2hhcnRFbnRpdHlOYW1lKSB7XG5cdFx0XHRjb25zdCBzQmluZGluZ1BhdGggPSBGaWx0ZXJVdGlscy5nZXRCaW5kaW5nUGF0aEZvclBhcmFtZXRlcnMob0ZpbHRlckJhciwgbUNvbmRpdGlvbnMsIGFQcm9wZXJ0eUluZm9TZXQsIGFQYXJhbWV0ZXJzKTtcblx0XHRcdGlmIChzQmluZGluZ1BhdGgpIHtcblx0XHRcdFx0b0ludGVyYWN0aXZlQ2hhcnRMaXN0QmluZGluZy5zUGF0aCA9IHNCaW5kaW5nUGF0aDtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gcmVzdW1lIGJpbmRpbmcgZm9yIG9ubHkgdGhvc2UgdmlzdWFsIGZpbHRlcnMgdGhhdCBkbyBub3QgaGF2ZSBhIGluIHBhcmFtZXRlciBhdHRhY2hlZC5cblx0XHQvLyBCaW5kaW5ncyBvZiB2aXN1YWwgZmlsdGVycyB3aXRoIGluUGFyYW1ldGVycyB3aWxsIGJlIHJlc3VtZWQgbGF0ZXIgYWZ0ZXIgY29uc2lkZXJpbmcgaW4gcGFyYW1ldGVycy5cblx0XHRpZiAob0ludGVyYWN0aXZlQ2hhcnRMaXN0QmluZGluZyAmJiBvSW50ZXJhY3RpdmVDaGFydExpc3RCaW5kaW5nLmlzU3VzcGVuZGVkKCkgJiYgIWJTaG93T3ZlcmxheSkge1xuXHRcdFx0b0ludGVyYWN0aXZlQ2hhcnRMaXN0QmluZGluZy5yZXN1bWUoKTtcblx0XHR9XG5cdH1cblxuXHRhdHRhY2hEYXRhUmVjaXZlZEhhbmRsZXIob0ludGVyYWN0aXZlQ2hhcnRMaXN0QmluZGluZzogYW55KSB7XG5cdFx0aWYgKG9JbnRlcmFjdGl2ZUNoYXJ0TGlzdEJpbmRpbmcpIHtcblx0XHRcdG9JbnRlcmFjdGl2ZUNoYXJ0TGlzdEJpbmRpbmcuYXR0YWNoRXZlbnQoXCJkYXRhUmVjZWl2ZWRcIiwgdGhpcy5vbkludGVybmFsRGF0YVJlY2VpdmVkLCB0aGlzKTtcblx0XHRcdHRoaXMuX29DaGFydEJpbmRpbmcgPSBvSW50ZXJhY3RpdmVDaGFydExpc3RCaW5kaW5nO1xuXHRcdH1cblx0fVxuXG5cdGRldGFjaERhdGFSZWNlaXZlZEhhbmRsZXIob0ludGVyYWN0aXZlQ2hhcnRMaXN0QmluZGluZzogYW55KSB7XG5cdFx0aWYgKG9JbnRlcmFjdGl2ZUNoYXJ0TGlzdEJpbmRpbmcpIHtcblx0XHRcdG9JbnRlcmFjdGl2ZUNoYXJ0TGlzdEJpbmRpbmcuZGV0YWNoRXZlbnQoXCJkYXRhUmVjZWl2ZWRcIiwgdGhpcy5vbkludGVybmFsRGF0YVJlY2VpdmVkLCB0aGlzKTtcblx0XHRcdHRoaXMuX29DaGFydEJpbmRpbmcgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHR9XG5cblx0c2V0U2hvd1ZhbHVlSGVscChiU2hvd1ZhbHVlSGVscDogYW55KSB7XG5cdFx0aWYgKHRoaXMuZ2V0SXRlbXMoKS5sZW5ndGggPiAwKSB7XG5cdFx0XHRjb25zdCBvVmlzdWFsRmlsdGVyQ29udHJvbCA9ICh0aGlzLmdldEl0ZW1zKClbMF0gYXMgYW55KS5nZXRJdGVtcygpWzBdO1xuXHRcdFx0b1Zpc3VhbEZpbHRlckNvbnRyb2wuZ2V0Q29udGVudCgpLnNvbWUoZnVuY3Rpb24gKG9Jbm5lckNvbnRyb2w6IGFueSkge1xuXHRcdFx0XHRpZiAob0lubmVyQ29udHJvbC5pc0EoXCJzYXAubS5CdXR0b25cIikpIHtcblx0XHRcdFx0XHRvSW5uZXJDb250cm9sLnNldFZpc2libGUoYlNob3dWYWx1ZUhlbHApO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdHRoaXMuc2V0UHJvcGVydHkoXCJzaG93VmFsdWVIZWxwXCIsIGJTaG93VmFsdWVIZWxwKTtcblx0XHR9XG5cdH1cblxuXHRzZXRWYWx1ZUhlbHBJY29uU3JjKHNJY29uU3JjOiBhbnkpIHtcblx0XHRpZiAodGhpcy5nZXRJdGVtcygpLmxlbmd0aCA+IDApIHtcblx0XHRcdGNvbnN0IG9WaXN1YWxGaWx0ZXJDb250cm9sID0gKHRoaXMuZ2V0SXRlbXMoKVswXSBhcyBhbnkpLmdldEl0ZW1zKClbMF07XG5cdFx0XHRvVmlzdWFsRmlsdGVyQ29udHJvbC5nZXRDb250ZW50KCkuc29tZShmdW5jdGlvbiAob0lubmVyQ29udHJvbDogYW55KSB7XG5cdFx0XHRcdGlmIChvSW5uZXJDb250cm9sLmlzQShcInNhcC5tLkJ1dHRvblwiKSkge1xuXHRcdFx0XHRcdG9Jbm5lckNvbnRyb2wuc2V0SWNvbihzSWNvblNyYyk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0dGhpcy5zZXRQcm9wZXJ0eShcInZhbHVlSGVscEljb25TcmNcIiwgc0ljb25TcmMpO1xuXHRcdH1cblx0fVxuXG5cdG9uSW50ZXJuYWxEYXRhUmVjZWl2ZWQob0V2ZW50OiBhbnkpIHtcblx0XHRjb25zdCBzSWQgPSB0aGlzLmdldElkKCk7XG5cdFx0Y29uc3Qgb1ZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KHRoaXMpO1xuXHRcdGNvbnN0IG9JbnRlcmFjdGl2ZUNoYXJ0ID0gKHRoaXMuZ2V0SXRlbXMoKVsxXSBhcyBhbnkpLmdldEl0ZW1zKClbMF07XG5cdFx0Y29uc3Qgc0ludGVybmFsQ29udGV4dFBhdGggPSB0aGlzLmRhdGEoXCJpbmZvUGF0aFwiKTtcblx0XHRjb25zdCBvSW50ZXJuYWxNb2RlbENvbnRleHQgPSBvSW50ZXJhY3RpdmVDaGFydC5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpO1xuXHRcdGNvbnN0IG9SZXNvdXJjZUJ1bmRsZSA9IChDb3JlIGFzIENvcmVFeCkuZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlKFwic2FwLmZlLm1hY3Jvc1wiKTtcblx0XHRjb25zdCB2VU9NID0gb0ludGVyYWN0aXZlQ2hhcnQuZGF0YShcInVvbVwiKTtcblx0XHRWaXN1YWxGaWx0ZXJVdGlscy51cGRhdGVDaGFydFNjYWxlRmFjdG9yVGl0bGUob0ludGVyYWN0aXZlQ2hhcnQsIG9WaWV3LCBzSWQsIHNJbnRlcm5hbENvbnRleHRQYXRoKTtcblx0XHRpZiAob0V2ZW50LmdldFBhcmFtZXRlcihcImVycm9yXCIpKSB7XG5cdFx0XHRjb25zdCBzMThuTWVzc2FnZVRpdGxlID0gb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX1ZJU1VBTF9GSUxURVJTX0VSUk9SX01FU1NBR0VfVElUTEVcIik7XG5cdFx0XHRjb25zdCBzMThuTWVzc2FnZSA9IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9WSVNVQUxfRklMVEVSU19FUlJPUl9EQVRBX1RFWFRcIik7XG5cdFx0XHRWaXN1YWxGaWx0ZXJVdGlscy5hcHBseUVycm9yTWVzc2FnZUFuZFRpdGxlKHMxOG5NZXNzYWdlVGl0bGUsIHMxOG5NZXNzYWdlLCBzSW50ZXJuYWxDb250ZXh0UGF0aCwgb1ZpZXcpO1xuXHRcdH0gZWxzZSBpZiAob0V2ZW50LmdldFBhcmFtZXRlcihcImRhdGFcIikpIHtcblx0XHRcdGNvbnN0IG9EYXRhID0gb0V2ZW50LmdldFNvdXJjZSgpLmdldEN1cnJlbnRDb250ZXh0cygpO1xuXHRcdFx0aWYgKG9EYXRhICYmIG9EYXRhLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0XHRWaXN1YWxGaWx0ZXJVdGlscy5zZXROb0RhdGFNZXNzYWdlKHNJbnRlcm5hbENvbnRleHRQYXRoLCBvUmVzb3VyY2VCdW5kbGUsIG9WaWV3KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShzSW50ZXJuYWxDb250ZXh0UGF0aCwge30pO1xuXHRcdFx0fVxuXHRcdFx0VmlzdWFsRmlsdGVyVXRpbHMuc2V0TXVsdGlVT01NZXNzYWdlKG9EYXRhLCBvSW50ZXJhY3RpdmVDaGFydCwgc0ludGVybmFsQ29udGV4dFBhdGgsIG9SZXNvdXJjZUJ1bmRsZSwgb1ZpZXcpO1xuXHRcdH1cblx0XHRpZiAodlVPTSAmJiAoKHZVT01bXCJJU09DdXJyZW5jeVwiXSAmJiB2VU9NW1wiSVNPQ3VycmVuY3lcIl0uJFBhdGgpIHx8ICh2VU9NW1wiVW5pdFwiXSAmJiB2VU9NW1wiVW5pdFwiXS4kUGF0aCkpKSB7XG5cdFx0XHRjb25zdCBvQ29udGV4dHMgPSBvRXZlbnQuZ2V0U291cmNlKCkuZ2V0Q29udGV4dHMoKTtcblx0XHRcdGNvbnN0IG9Db250ZXh0RGF0YSA9IG9Db250ZXh0cyAmJiBvQ29udGV4dHNbMF0uZ2V0T2JqZWN0KCk7XG5cdFx0XHRWaXN1YWxGaWx0ZXJVdGlscy5hcHBseVVPTVRvVGl0bGUob0ludGVyYWN0aXZlQ2hhcnQsIG9Db250ZXh0RGF0YSwgb1ZpZXcsIHNJbnRlcm5hbENvbnRleHRQYXRoKTtcblx0XHR9XG5cdH1cbn1cbmV4cG9ydCBkZWZhdWx0IFZpc3VhbEZpbHRlcjtcbiJdfQ==