@sapui5/sap.fe.core 1.102.2 → 1.104.1

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 (324) hide show
  1. package/package.json +6 -6
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AppComponent.js +73 -30
  4. package/src/sap/fe/core/AppComponent.ts +65 -43
  5. package/src/sap/fe/core/AppStateHandler.js +82 -70
  6. package/src/sap/fe/core/AppStateHandler.ts +32 -37
  7. package/src/sap/fe/core/BaseController.js +11 -9
  8. package/src/sap/fe/core/BaseController.ts +15 -13
  9. package/src/sap/fe/core/CommonUtils.js +227 -126
  10. package/src/sap/fe/core/CommonUtils.ts +240 -163
  11. package/src/sap/fe/core/ExtensionAPI.js +24 -27
  12. package/src/sap/fe/core/ExtensionAPI.ts +36 -38
  13. package/src/sap/fe/core/PageController.js +4 -4
  14. package/src/sap/fe/core/PageController.ts +4 -5
  15. package/src/sap/fe/core/TemplateComponent.js +1 -1
  16. package/src/sap/fe/core/TemplateComponent.ts +6 -6
  17. package/src/sap/fe/core/TemplateModel.js +1 -1
  18. package/src/sap/fe/core/TemplateModel.ts +1 -1
  19. package/src/sap/fe/core/buildingBlocks/AttributeModel.js +1 -1
  20. package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +1 -1
  21. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +181 -43
  22. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +150 -24
  23. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +585 -210
  24. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +246 -96
  25. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +30 -30
  26. package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +32 -29
  27. package/src/sap/fe/core/controllerextensions/EditFlow.js +379 -330
  28. package/src/sap/fe/core/controllerextensions/EditFlow.ts +253 -245
  29. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +9 -9
  30. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +10 -10
  31. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +101 -74
  32. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +69 -79
  33. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +67 -67
  34. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +76 -76
  35. package/src/sap/fe/core/controllerextensions/InternalRouting.js +85 -77
  36. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +103 -99
  37. package/src/sap/fe/core/controllerextensions/KPIManagement.js +66 -68
  38. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +106 -123
  39. package/src/sap/fe/core/controllerextensions/MassEdit.js +9 -9
  40. package/src/sap/fe/core/controllerextensions/MassEdit.ts +20 -27
  41. package/src/sap/fe/core/controllerextensions/MessageHandler.js +20 -12
  42. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +21 -14
  43. package/src/sap/fe/core/controllerextensions/PageReady.js +97 -25
  44. package/src/sap/fe/core/controllerextensions/PageReady.ts +98 -34
  45. package/src/sap/fe/core/controllerextensions/Paginator.js +21 -22
  46. package/src/sap/fe/core/controllerextensions/Paginator.ts +24 -25
  47. package/src/sap/fe/core/controllerextensions/Placeholder.js +4 -6
  48. package/src/sap/fe/core/controllerextensions/Placeholder.ts +12 -14
  49. package/src/sap/fe/core/controllerextensions/Routing.js +10 -11
  50. package/src/sap/fe/core/controllerextensions/Routing.ts +12 -13
  51. package/src/sap/fe/core/controllerextensions/Share.js +170 -139
  52. package/src/sap/fe/core/controllerextensions/Share.ts +117 -118
  53. package/src/sap/fe/core/controllerextensions/SideEffects.js +46 -50
  54. package/src/sap/fe/core/controllerextensions/SideEffects.ts +56 -60
  55. package/src/sap/fe/core/controllerextensions/ViewState.js +200 -131
  56. package/src/sap/fe/core/controllerextensions/ViewState.ts +141 -148
  57. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +5 -5
  58. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +8 -7
  59. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +11 -10
  60. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +17 -20
  61. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +2 -2
  62. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +4 -4
  63. package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +7 -9
  64. package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +18 -19
  65. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +190 -141
  66. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +258 -210
  67. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +183 -125
  68. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +213 -156
  69. package/src/sap/fe/core/controllerextensions/editFlow/operations.js +164 -140
  70. package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +180 -150
  71. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +24 -26
  72. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +35 -33
  73. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +71 -41
  74. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +102 -82
  75. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +61 -71
  76. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +56 -64
  77. package/src/sap/fe/core/controls/Any.js +9 -5
  78. package/src/sap/fe/core/controls/Any.ts +10 -4
  79. package/src/sap/fe/core/controls/CommandExecution.js +11 -25
  80. package/src/sap/fe/core/controls/CommandExecution.ts +11 -25
  81. package/src/sap/fe/core/controls/ConditionalWrapper.js +2 -2
  82. package/src/sap/fe/core/controls/ConditionalWrapper.ts +3 -3
  83. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +22 -22
  84. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +25 -24
  85. package/src/sap/fe/core/controls/CustomQuickViewPage.js +2 -2
  86. package/src/sap/fe/core/controls/CustomQuickViewPage.ts +2 -2
  87. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +3 -3
  88. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +5 -5
  89. package/src/sap/fe/core/controls/FieldWrapper.js +2 -2
  90. package/src/sap/fe/core/controls/FieldWrapper.ts +3 -3
  91. package/src/sap/fe/core/controls/FileWrapper.js +7 -2
  92. package/src/sap/fe/core/controls/FileWrapper.ts +15 -11
  93. package/src/sap/fe/core/controls/FilterBar.js +6 -2
  94. package/src/sap/fe/core/controls/FilterBar.ts +13 -9
  95. package/src/sap/fe/core/controls/FormElementWrapper.js +1 -1
  96. package/src/sap/fe/core/controls/FormElementWrapper.ts +2 -2
  97. package/src/sap/fe/core/controls/MassEditSelect.js +1 -1
  98. package/src/sap/fe/core/controls/MassEditSelect.ts +0 -4
  99. package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +3 -3
  100. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +16 -12
  101. package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +20 -22
  102. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +3 -3
  103. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +8 -8
  104. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +49 -49
  105. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +54 -54
  106. package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +8 -2
  107. package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +22 -35
  108. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +89 -88
  109. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +107 -106
  110. package/src/sap/fe/core/converters/ConverterContext.js +26 -33
  111. package/src/sap/fe/core/converters/ConverterContext.ts +52 -61
  112. package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  113. package/src/sap/fe/core/converters/ManifestSettings.ts +17 -15
  114. package/src/sap/fe/core/converters/ManifestWrapper.js +59 -45
  115. package/src/sap/fe/core/converters/ManifestWrapper.ts +55 -45
  116. package/src/sap/fe/core/converters/MetaModelConverter.js +64 -35
  117. package/src/sap/fe/core/converters/MetaModelConverter.ts +154 -129
  118. package/src/sap/fe/core/converters/TemplateConverter.js +21 -20
  119. package/src/sap/fe/core/converters/TemplateConverter.ts +27 -24
  120. package/src/sap/fe/core/converters/annotations/DataField.js +58 -35
  121. package/src/sap/fe/core/converters/annotations/DataField.ts +102 -76
  122. package/src/sap/fe/core/converters/common/AnnotationConverter.js +1911 -1495
  123. package/src/sap/fe/core/converters/controls/Common/Action.js +50 -41
  124. package/src/sap/fe/core/converters/controls/Common/Action.ts +56 -46
  125. package/src/sap/fe/core/converters/controls/Common/Chart.js +14 -14
  126. package/src/sap/fe/core/converters/controls/Common/Chart.ts +26 -33
  127. package/src/sap/fe/core/converters/controls/Common/Criticality.js +3 -3
  128. package/src/sap/fe/core/converters/controls/Common/Criticality.ts +4 -4
  129. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +30 -28
  130. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +60 -61
  131. package/src/sap/fe/core/converters/controls/Common/Form.js +27 -28
  132. package/src/sap/fe/core/converters/controls/Common/Form.ts +44 -57
  133. package/src/sap/fe/core/converters/controls/Common/KPI.js +11 -11
  134. package/src/sap/fe/core/converters/controls/Common/KPI.ts +49 -52
  135. package/src/sap/fe/core/converters/controls/Common/Table.js +181 -197
  136. package/src/sap/fe/core/converters/controls/Common/Table.ts +251 -280
  137. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +119 -119
  138. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +144 -141
  139. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +45 -41
  140. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +65 -59
  141. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +28 -26
  142. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +46 -43
  143. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +9 -9
  144. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +14 -13
  145. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +67 -64
  146. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +69 -66
  147. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +77 -73
  148. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +101 -97
  149. package/src/sap/fe/core/converters/helpers/Aggregation.js +2 -4
  150. package/src/sap/fe/core/converters/helpers/Aggregation.ts +12 -15
  151. package/src/sap/fe/core/converters/helpers/BindingHelper.js +31 -31
  152. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +30 -29
  153. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +4 -4
  154. package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +9 -9
  155. package/src/sap/fe/core/converters/helpers/ID.js +48 -46
  156. package/src/sap/fe/core/converters/helpers/ID.ts +26 -25
  157. package/src/sap/fe/core/converters/helpers/Key.js +7 -7
  158. package/src/sap/fe/core/converters/helpers/Key.ts +7 -7
  159. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
  160. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +4 -5
  161. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +6 -6
  162. package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +10 -10
  163. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +46 -62
  164. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +54 -82
  165. package/src/sap/fe/core/converters/templates/ListReportConverter.js +55 -42
  166. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +81 -66
  167. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +39 -38
  168. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +52 -61
  169. package/src/sap/fe/core/designtime/AppComponent.designtime.js +4 -4
  170. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +4 -4
  171. package/src/sap/fe/core/formatters/CollaborationFormatter.js +2 -2
  172. package/src/sap/fe/core/formatters/CollaborationFormatter.ts +3 -3
  173. package/src/sap/fe/core/formatters/FPMFormatter.js +5 -5
  174. package/src/sap/fe/core/formatters/FPMFormatter.ts +10 -10
  175. package/src/sap/fe/core/formatters/KPIFormatter.js +7 -7
  176. package/src/sap/fe/core/formatters/KPIFormatter.ts +10 -10
  177. package/src/sap/fe/core/formatters/StandardFormatter.js +96 -0
  178. package/src/sap/fe/core/formatters/StandardFormatter.ts +70 -0
  179. package/src/sap/fe/core/formatters/TableFormatter.js +11 -11
  180. package/src/sap/fe/core/formatters/TableFormatter.ts +12 -12
  181. package/src/sap/fe/core/formatters/ValueFormatter.js +8 -8
  182. package/src/sap/fe/core/formatters/ValueFormatter.ts +9 -9
  183. package/src/sap/fe/core/helpers/AppStartupHelper.js +15 -15
  184. package/src/sap/fe/core/helpers/AppStartupHelper.ts +37 -40
  185. package/src/sap/fe/core/helpers/BindingToolkit.js +1832 -0
  186. package/src/sap/fe/core/helpers/{BindingExpression.ts → BindingToolkit.ts} +396 -269
  187. package/src/sap/fe/core/helpers/ClassSupport.js +49 -12
  188. package/src/sap/fe/core/helpers/ClassSupport.ts +37 -10
  189. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +2 -2
  190. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -1
  191. package/src/sap/fe/core/helpers/EditState.js +1 -6
  192. package/src/sap/fe/core/helpers/EditState.ts +5 -10
  193. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +2 -2
  194. package/src/sap/fe/core/helpers/ExcelFormatHelper.ts +4 -4
  195. package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
  196. package/src/sap/fe/core/helpers/FPMHelper.ts +2 -2
  197. package/src/sap/fe/core/helpers/KeepAliveHelper.js +31 -31
  198. package/src/sap/fe/core/helpers/KeepAliveHelper.ts +52 -56
  199. package/src/sap/fe/core/helpers/MassEditHelper.js +306 -280
  200. package/src/sap/fe/core/helpers/MassEditHelper.ts +380 -360
  201. package/src/sap/fe/core/helpers/MessageStrip.js +81 -0
  202. package/src/sap/fe/core/helpers/MessageStrip.ts +79 -0
  203. package/src/sap/fe/core/helpers/ModelHelper.js +25 -25
  204. package/src/sap/fe/core/helpers/ModelHelper.ts +34 -32
  205. package/src/sap/fe/core/helpers/PasteHelper.js +3 -10
  206. package/src/sap/fe/core/helpers/PasteHelper.ts +20 -25
  207. package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
  208. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +11 -11
  209. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +3 -3
  210. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +8 -8
  211. package/src/sap/fe/core/helpers/StableIdHelper.js +12 -12
  212. package/src/sap/fe/core/helpers/StableIdHelper.ts +12 -12
  213. package/src/sap/fe/core/helpers/ToES6Promise.js +32 -0
  214. package/src/sap/fe/core/helpers/ToES6Promise.ts +19 -0
  215. package/src/sap/fe/core/jsx-runtime/Fragment.js +16 -0
  216. package/src/sap/fe/core/jsx-runtime/Fragment.ts +3 -0
  217. package/src/sap/fe/core/jsx-runtime/jsx-control.js +99 -0
  218. package/src/sap/fe/core/jsx-runtime/jsx-control.ts +82 -0
  219. package/src/sap/fe/core/jsx-runtime/jsx-xml.js +105 -0
  220. package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +89 -0
  221. package/src/sap/fe/core/jsx-runtime/jsx.js +12 -90
  222. package/src/sap/fe/core/jsx-runtime/jsx.ts +24 -85
  223. package/src/sap/fe/core/library.js +42 -3
  224. package/src/sap/fe/core/library.ts +38 -0
  225. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +3 -3
  226. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +2 -2
  227. package/src/sap/fe/core/messagebundle.properties +39 -63
  228. package/src/sap/fe/core/messagebundle_ar.properties +25 -39
  229. package/src/sap/fe/core/messagebundle_bg.properties +25 -39
  230. package/src/sap/fe/core/messagebundle_ca.properties +25 -39
  231. package/src/sap/fe/core/messagebundle_cs.properties +25 -39
  232. package/src/sap/fe/core/messagebundle_cy.properties +25 -39
  233. package/src/sap/fe/core/messagebundle_da.properties +25 -39
  234. package/src/sap/fe/core/messagebundle_de.properties +25 -39
  235. package/src/sap/fe/core/messagebundle_el.properties +26 -40
  236. package/src/sap/fe/core/messagebundle_en.properties +25 -39
  237. package/src/sap/fe/core/messagebundle_en_GB.properties +25 -39
  238. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +25 -39
  239. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +25 -39
  240. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +26 -18
  241. package/src/sap/fe/core/messagebundle_es.properties +27 -41
  242. package/src/sap/fe/core/messagebundle_es_MX.properties +25 -39
  243. package/src/sap/fe/core/messagebundle_et.properties +25 -39
  244. package/src/sap/fe/core/messagebundle_fi.properties +25 -39
  245. package/src/sap/fe/core/messagebundle_fr.properties +26 -40
  246. package/src/sap/fe/core/messagebundle_fr_CA.properties +25 -39
  247. package/src/sap/fe/core/messagebundle_hi.properties +25 -39
  248. package/src/sap/fe/core/messagebundle_hr.properties +25 -39
  249. package/src/sap/fe/core/messagebundle_hu.properties +25 -39
  250. package/src/sap/fe/core/messagebundle_id.properties +25 -39
  251. package/src/sap/fe/core/messagebundle_it.properties +41 -55
  252. package/src/sap/fe/core/messagebundle_iw.properties +25 -39
  253. package/src/sap/fe/core/messagebundle_ja.properties +25 -39
  254. package/src/sap/fe/core/messagebundle_kk.properties +25 -39
  255. package/src/sap/fe/core/messagebundle_ko.properties +30 -44
  256. package/src/sap/fe/core/messagebundle_lt.properties +25 -39
  257. package/src/sap/fe/core/messagebundle_lv.properties +25 -39
  258. package/src/sap/fe/core/messagebundle_ms.properties +25 -39
  259. package/src/sap/fe/core/messagebundle_nl.properties +27 -41
  260. package/src/sap/fe/core/messagebundle_no.properties +25 -39
  261. package/src/sap/fe/core/messagebundle_pl.properties +26 -40
  262. package/src/sap/fe/core/messagebundle_pt.properties +26 -40
  263. package/src/sap/fe/core/messagebundle_pt_PT.properties +25 -39
  264. package/src/sap/fe/core/messagebundle_ro.properties +25 -39
  265. package/src/sap/fe/core/messagebundle_ru.properties +25 -39
  266. package/src/sap/fe/core/messagebundle_sh.properties +25 -39
  267. package/src/sap/fe/core/messagebundle_sk.properties +25 -39
  268. package/src/sap/fe/core/messagebundle_sl.properties +25 -39
  269. package/src/sap/fe/core/messagebundle_sv.properties +25 -39
  270. package/src/sap/fe/core/messagebundle_th.properties +25 -39
  271. package/src/sap/fe/core/messagebundle_tr.properties +25 -39
  272. package/src/sap/fe/core/messagebundle_uk.properties +25 -39
  273. package/src/sap/fe/core/messagebundle_vi.properties +25 -39
  274. package/src/sap/fe/core/messagebundle_zh_CN.properties +25 -39
  275. package/src/sap/fe/core/messagebundle_zh_TW.properties +25 -39
  276. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +2 -2
  277. package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +5 -5
  278. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +97 -69
  279. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +68 -69
  280. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -1
  281. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +3 -2
  282. package/src/sap/fe/core/services/NavigationServiceFactory.js +61 -49
  283. package/src/sap/fe/core/services/NavigationServiceFactory.ts +63 -52
  284. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +2 -2
  285. package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +4 -4
  286. package/src/sap/fe/core/services/RoutingServiceFactory.js +55 -55
  287. package/src/sap/fe/core/services/RoutingServiceFactory.ts +67 -65
  288. package/src/sap/fe/core/services/ShellServicesFactory.js +92 -76
  289. package/src/sap/fe/core/services/ShellServicesFactory.ts +95 -82
  290. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +61 -61
  291. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +102 -92
  292. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +224 -198
  293. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +138 -139
  294. package/src/sap/fe/core/support/CommonHelper.js +3 -2
  295. package/src/sap/fe/core/support/CommonHelper.ts +9 -13
  296. package/src/sap/fe/core/support/Diagnostics.js +1 -1
  297. package/src/sap/fe/core/support/Diagnostics.ts +5 -5
  298. package/src/sap/fe/core/templating/CommonFormatters.js +84 -0
  299. package/src/sap/fe/core/templating/CommonFormatters.ts +86 -0
  300. package/src/sap/fe/core/templating/CriticalityFormatters.js +31 -31
  301. package/src/sap/fe/core/templating/CriticalityFormatters.ts +42 -40
  302. package/src/sap/fe/core/templating/DataFieldFormatters.js +8 -8
  303. package/src/sap/fe/core/templating/DataFieldFormatters.ts +13 -10
  304. package/src/sap/fe/core/templating/DataModelPathHelper.js +16 -15
  305. package/src/sap/fe/core/templating/DataModelPathHelper.ts +42 -32
  306. package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
  307. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +2 -3
  308. package/src/sap/fe/core/templating/EntitySetHelper.js +7 -7
  309. package/src/sap/fe/core/templating/EntitySetHelper.ts +6 -8
  310. package/src/sap/fe/core/templating/FieldControlHelper.js +35 -34
  311. package/src/sap/fe/core/templating/FieldControlHelper.ts +29 -46
  312. package/src/sap/fe/core/templating/FilterHelper.js +16 -15
  313. package/src/sap/fe/core/templating/FilterHelper.ts +18 -18
  314. package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
  315. package/src/sap/fe/core/templating/FilterTemplating.ts +3 -3
  316. package/src/sap/fe/core/templating/PropertyFormatters.js +7 -7
  317. package/src/sap/fe/core/templating/PropertyFormatters.ts +21 -19
  318. package/src/sap/fe/core/templating/PropertyHelper.js +25 -25
  319. package/src/sap/fe/core/templating/PropertyHelper.ts +25 -26
  320. package/src/sap/fe/core/templating/UIFormatters.js +152 -95
  321. package/src/sap/fe/core/templating/UIFormatters.ts +202 -128
  322. package/src/sap/fe/core/type/Email.js +2 -2
  323. package/src/sap/fe/core/type/Email.ts +2 -2
  324. package/src/sap/fe/core/helpers/BindingExpression.js +0 -1732
@@ -21,7 +21,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ClassSupport", "sap/fe/core/
21
21
 
22
22
  /**
23
23
  * @class Controller extension providing hooks for the mass edit in a table
24
- *
25
24
  * @name sap.fe.core.controllerextensions.MassEdit
26
25
  * @hideconstructor
27
26
  * @private
@@ -40,7 +39,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ClassSupport", "sap/fe/core/
40
39
  sReasonGroup = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_MESSAGE_DETAIL_REASON"),
41
40
  sReasonDraft = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_MESSAGE_DETAIL_REASON_DRAFT"),
42
41
  sReasonNonEditable = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_MESSAGE_DETAIL_REASON_NON_EDITABLE");
43
- return "<p><strong>" + sHeader + "</strong></p>\n" + "<p>" + sReasonGroup + "</p>\n" + "<ul>" + "<li>" + sReasonDraft + "</li>" + "<li>" + sReasonNonEditable + "</li>" + "</ul>";
42
+ return "<p><strong>".concat(sHeader, "</strong></p>\n") + "<p>".concat(sReasonGroup, "</p>\n") + "<ul>" + "<li>".concat(sReasonDraft, "</li>") + "<li>".concat(sReasonNonEditable, "</li>") + "</ul>";
44
43
  };
45
44
 
46
45
  _proto._openConfirmDialog = function _openConfirmDialog(oTable, aContexts, iSelectedContexts) {
@@ -50,7 +49,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ClassSupport", "sap/fe/core/
50
49
  return new Promise(function (resolve) {
51
50
  _this.getView().getModel("sap.fe.i18n").getResourceBundle().then(function (oResourceBundle) {
52
51
  var sEditButton = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_BUTTON_TEXT"),
53
- sCancelButton = oResourceBundle.getText("C_MASS_EDIT_CANCEL_BUTTON_TEXT"),
52
+ sCancelButton = oResourceBundle.getText("C_COMMON_OBJECT_PAGE_CANCEL"),
54
53
  iNonEditable = iSelectedContexts - iUpdatableContexts,
55
54
  sMessage = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_MESSAGE", [iNonEditable, iSelectedContexts, iUpdatableContexts]),
56
55
  sPath = oTable.data("targetCollectionPath"),
@@ -101,8 +100,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ClassSupport", "sap/fe/core/
101
100
  * => Sets the runtime model to the dialog.
102
101
  * => Sets the static model's context to the dialog.
103
102
  *
104
- * @param {sap.ui.mdc.Table} oTable Instance of the table
105
- * @returns {Promise} A promise that resolves on open of the mass edit dialog.
103
+ * @param oTable Instance of the table
104
+ * @returns A promise that resolves on open of the mass edit dialog.
106
105
  * @private
107
106
  */
108
107
  ;
@@ -123,12 +122,13 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ClassSupport", "sap/fe/core/
123
122
  }
124
123
  /**
125
124
  * Returns a promise that resolves to the contexts for mass edit.
125
+ *
126
126
  * @function
127
- * @param {sap.ui.mdc.Table} oTable Table for mass edit.
127
+ * @param oTable Table for mass edit.
128
128
  * @alias sap.fe.core.contrllerextensions.MassEdit#fetchContextsForEdit
129
- * @returns {Promise} A promise to be resolved with an array of context(s) which should be considered for mass edit.
129
+ * @returns A promise to be resolved with an array of context(s) which should be considered for mass edit.
130
130
  * @private
131
- **/
131
+ */
132
132
  ;
133
133
 
134
134
  _proto.fetchContextsForEdit = function fetchContextsForEdit(oTable) {
@@ -142,4 +142,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ClassSupport", "sap/fe/core/
142
142
  }(ControllerExtension), (_applyDecoratedDescriptor(_class2.prototype, "getMessageDetailForNonEditable", [_dec2, _dec3], Object.getOwnPropertyDescriptor(_class2.prototype, "getMessageDetailForNonEditable"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "openMassEditDialog", [_dec4, _dec5], Object.getOwnPropertyDescriptor(_class2.prototype, "openMassEditDialog"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "fetchContextsForEdit", [_dec6, _dec7], Object.getOwnPropertyDescriptor(_class2.prototype, "fetchContextsForEdit"), _class2.prototype)), _class2)) || _class);
143
143
  return MassEdit;
144
144
  }, false);
145
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1hc3NFZGl0LnRzIl0sIm5hbWVzIjpbIk1hc3NFZGl0IiwiZGVmaW5lVUk1Q2xhc3MiLCJwdWJsaWNFeHRlbnNpb24iLCJmaW5hbEV4dGVuc2lvbiIsInByaXZhdGVFeHRlbnNpb24iLCJleHRlbnNpYmxlIiwiT3ZlcnJpZGVFeGVjdXRpb24iLCJBZnRlciIsImdldE1lc3NhZ2VEZXRhaWxGb3JOb25FZGl0YWJsZSIsIm9SZXNvdXJjZUJ1bmRsZSIsInNIZWFkZXIiLCJnZXRUZXh0Iiwic1JlYXNvbkdyb3VwIiwic1JlYXNvbkRyYWZ0Iiwic1JlYXNvbk5vbkVkaXRhYmxlIiwiX29wZW5Db25maXJtRGlhbG9nIiwib1RhYmxlIiwiYUNvbnRleHRzIiwiaVNlbGVjdGVkQ29udGV4dHMiLCJpVXBkYXRhYmxlQ29udGV4dHMiLCJsZW5ndGgiLCJQcm9taXNlIiwicmVzb2x2ZSIsImdldFZpZXciLCJnZXRNb2RlbCIsImdldFJlc291cmNlQnVuZGxlIiwidGhlbiIsInNFZGl0QnV0dG9uIiwic0NhbmNlbEJ1dHRvbiIsImlOb25FZGl0YWJsZSIsInNNZXNzYWdlIiwic1BhdGgiLCJkYXRhIiwib01ldGFNb2RlbCIsImdldE1ldGFNb2RlbCIsImJJc0RyYWZ0IiwiTW9kZWxIZWxwZXIiLCJpc0RyYWZ0U3VwcG9ydGVkIiwiYkRpc3BsYXlNb2RlIiwic01lc3NhZ2VEZXRhaWwiLCJNZXNzYWdlQm94Iiwid2FybmluZyIsImRldGFpbHMiLCJhY3Rpb25zIiwiZW1waGFzaXplZEFjdGlvbiIsImNvbnRlbnRXaWR0aCIsIm9uQ2xvc2UiLCJzU2VsZWN0aW9uIiwiYUNvbnRleHRzRm9yRWRpdCIsIkxvZyIsImluZm8iLCJ0b1N0cmluZyIsImNhdGNoIiwiZXJyb3IiLCJfY29uZmlybUNvbnRleHRzIiwib0ludGVybmFsTW9kZWxDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJnZXRQcm9wZXJ0eSIsIm9wZW5NYXNzRWRpdERpYWxvZyIsIm9Db250cm9sbGVyIiwiZ2V0Q29udHJvbGxlciIsInBDb250ZXh0c0ZvckVkaXQiLCJmZXRjaENvbnRleHRzRm9yRWRpdCIsImJpbmQiLCJNYXNzRWRpdEhlbHBlciIsImNyZWF0ZURpYWxvZyIsIm9EaWFsb2ciLCJhZGREZXBlbmRlbnQiLCJvcGVuIiwib0Vycm9yIiwiYVNlbGVjdGVkQ29udGV4dHMiLCJDb250cm9sbGVyRXh0ZW5zaW9uIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtNQUVNQSxRLFdBRExDLGNBQWMsQ0FBQywyQ0FBRCxDLFVBRWJDLGVBQWUsRSxVQUNmQyxjQUFjLEUsVUEyRmRELGVBQWUsRSxVQUNmQyxjQUFjLEUsVUE2QmRDLGdCQUFnQixFLFVBQ2hCQyxVQUFVLENBQUNDLGlCQUFpQixDQUFDQyxLQUFuQixDOzs7Ozs7Ozs7V0F6SFhDLDhCLEdBRkEsd0NBRStCQyxlQUYvQixFQUVnRTtBQUMvRCxVQUFNQyxPQUFPLEdBQUdELGVBQWUsQ0FBQ0UsT0FBaEIsQ0FBd0IsMkNBQXhCLENBQWhCO0FBQUEsVUFDQ0MsWUFBWSxHQUFHSCxlQUFlLENBQUNFLE9BQWhCLENBQXdCLDJDQUF4QixDQURoQjtBQUFBLFVBRUNFLFlBQVksR0FBR0osZUFBZSxDQUFDRSxPQUFoQixDQUF3QixpREFBeEIsQ0FGaEI7QUFBQSxVQUdDRyxrQkFBa0IsR0FBR0wsZUFBZSxDQUFDRSxPQUFoQixDQUF3Qix3REFBeEIsQ0FIdEI7QUFLQSxhQUNDLGdCQUNBRCxPQURBLEdBRUEsaUJBRkEsR0FHQSxLQUhBLEdBSUFFLFlBSkEsR0FLQSxRQUxBLEdBTUEsTUFOQSxHQU9BLE1BUEEsR0FRQUMsWUFSQSxHQVNBLE9BVEEsR0FVQSxNQVZBLEdBV0FDLGtCQVhBLEdBWUEsT0FaQSxHQWFBLE9BZEQ7QUFnQkEsSzs7V0FFREMsa0IsR0FBQSw0QkFBbUJDLE1BQW5CLEVBQWtDQyxTQUFsQyxFQUF3REMsaUJBQXhELEVBQW1GO0FBQUE7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Q0E7QUFDQTtBQUNBOzs7V0FHQ1Asb0IsR0FGQSw4QkFFcUI5QyxNQUZyQixFQUVvQztBQUNuQztBQUNBLFVBQU11QyxxQkFBcUIsR0FBR3ZDLE1BQU0sQ0FBQ3dDLGlCQUFQLENBQXlCLFVBQXpCLENBQTlCO0FBQUEsVUFDQ2MsaUJBQWlCLEdBQUdmLHFCQUFxQixDQUFDRSxXQUF0QixDQUFrQyxtQkFBbEMsS0FBMEQsRUFEL0U7QUFHQSxhQUFPcEMsT0FBTyxDQUFDQyxPQUFSLENBQWdCZ0QsaUJBQWhCLENBQVA7QUFDQSxLOzs7SUFuSXFCQyxtQjtTQXNJUnZFLFEiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZXNvdXJjZUJ1bmRsZSBmcm9tIFwic2FwL2Jhc2UvaTE4bi9SZXNvdXJjZUJ1bmRsZVwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgZXh0ZW5zaWJsZSwgZmluYWxFeHRlbnNpb24sIHByaXZhdGVFeHRlbnNpb24sIHB1YmxpY0V4dGVuc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IE1hc3NFZGl0SGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01hc3NFZGl0SGVscGVyXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIsIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IE1lc3NhZ2VCb3ggZnJvbSBcInNhcC9tL01lc3NhZ2VCb3hcIjtcbmltcG9ydCBDb250cm9sbGVyRXh0ZW5zaW9uIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvQ29udHJvbGxlckV4dGVuc2lvblwiO1xuaW1wb3J0IE92ZXJyaWRlRXhlY3V0aW9uIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvT3ZlcnJpZGVFeGVjdXRpb25cIjtcbmltcG9ydCBUYWJsZSBmcm9tIFwic2FwL3VpL21kYy9UYWJsZVwiO1xuaW1wb3J0IENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgUmVzb3VyY2VNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL3Jlc291cmNlL1Jlc291cmNlTW9kZWxcIjtcblxuLyoqXG4gKiBAY2xhc3MgQ29udHJvbGxlciBleHRlbnNpb24gcHJvdmlkaW5nIGhvb2tzIGZvciB0aGUgbWFzcyBlZGl0IGluIGEgdGFibGVcbiAqXG4gKiBAbmFtZSBzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5NYXNzRWRpdFxuICogQGhpZGVjb25zdHJ1Y3RvclxuICogQHByaXZhdGVcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuTWFzc0VkaXRcIilcbmNsYXNzIE1hc3NFZGl0IGV4dGVuZHMgQ29udHJvbGxlckV4dGVuc2lvbiB7XG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRnZXRNZXNzYWdlRGV0YWlsRm9yTm9uRWRpdGFibGUob1Jlc291cmNlQnVuZGxlOiBSZXNvdXJjZUJ1bmRsZSkge1xuXHRcdGNvbnN0IHNIZWFkZXIgPSBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfTUFTU19FRElUX0NPTkZJUk1fTUVTU0FHRV9ERVRBSUxfSEVBREVSXCIpLFxuXHRcdFx0c1JlYXNvbkdyb3VwID0gb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX01BU1NfRURJVF9DT05GSVJNX01FU1NBR0VfREVUQUlMX1JFQVNPTlwiKSxcblx0XHRcdHNSZWFzb25EcmFmdCA9IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19NQVNTX0VESVRfQ09ORklSTV9NRVNTQUdFX0RFVEFJTF9SRUFTT05fRFJBRlRcIiksXG5cdFx0XHRzUmVhc29uTm9uRWRpdGFibGUgPSBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfTUFTU19FRElUX0NPTkZJUk1fTUVTU0FHRV9ERVRBSUxfUkVBU09OX05PTl9FRElUQUJMRVwiKTtcblxuXHRcdHJldHVybiAoXG5cdFx0XHRcIjxwPjxzdHJvbmc+XCIgK1xuXHRcdFx0c0hlYWRlciArXG5cdFx0XHRcIjwvc3Ryb25nPjwvcD5cXG5cIiArXG5cdFx0XHRcIjxwPlwiICtcblx0XHRcdHNSZWFzb25Hcm91cCArXG5cdFx0XHRcIjwvcD5cXG5cIiArXG5cdFx0XHRcIjx1bD5cIiArXG5cdFx0XHRcIjxsaT5cIiArXG5cdFx0XHRzUmVhc29uRHJhZnQgK1xuXHRcdFx0XCI8L2xpPlwiICtcblx0XHRcdFwiPGxpPlwiICtcblx0XHRcdHNSZWFzb25Ob25FZGl0YWJsZSArXG5cdFx0XHRcIjwvbGk+XCIgK1xuXHRcdFx0XCI8L3VsPlwiXG5cdFx0KTtcblx0fVxuXG5cdF9vcGVuQ29uZmlybURpYWxvZyhvVGFibGU6IFRhYmxlLCBhQ29udGV4dHM6IENvbnRleHRbXSwgaVNlbGVjdGVkQ29udGV4dHM6IG51bWJlcikge1xuXHRcdGNvbnN0IGlVcGRhdGFibGVDb250ZXh0cyA9IChhQ29udGV4dHMgfHwgW10pLmxlbmd0aDtcblxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuXHRcdFx0KCh0aGlzLmdldFZpZXcoKS5nZXRNb2RlbChcInNhcC5mZS5pMThuXCIpIGFzIFJlc291cmNlTW9kZWwpLmdldFJlc291cmNlQnVuZGxlKCkgYXMgUHJvbWlzZTxSZXNvdXJjZUJ1bmRsZT4pXG5cdFx0XHRcdC50aGVuKChvUmVzb3VyY2VCdW5kbGUpID0+IHtcblx0XHRcdFx0XHRjb25zdCBzRWRpdEJ1dHRvbiA9IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19NQVNTX0VESVRfQ09ORklSTV9CVVRUT05fVEVYVFwiKSxcblx0XHRcdFx0XHRcdHNDYW5jZWxCdXR0b24gPSBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfTUFTU19FRElUX0NBTkNFTF9CVVRUT05fVEVYVFwiKSxcblx0XHRcdFx0XHRcdGlOb25FZGl0YWJsZSA9IGlTZWxlY3RlZENvbnRleHRzIC0gaVVwZGF0YWJsZUNvbnRleHRzLFxuXHRcdFx0XHRcdFx0c01lc3NhZ2UgPSBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfTUFTU19FRElUX0NPTkZJUk1fTUVTU0FHRVwiLCBbXG5cdFx0XHRcdFx0XHRcdGlOb25FZGl0YWJsZSxcblx0XHRcdFx0XHRcdFx0aVNlbGVjdGVkQ29udGV4dHMsXG5cdFx0XHRcdFx0XHRcdGlVcGRhdGFibGVDb250ZXh0c1xuXHRcdFx0XHRcdFx0XSksXG5cdFx0XHRcdFx0XHRzUGF0aCA9IG9UYWJsZS5kYXRhKFwidGFyZ2V0Q29sbGVjdGlvblBhdGhcIiksXG5cdFx0XHRcdFx0XHRvTWV0YU1vZGVsID0gb1RhYmxlLmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCksXG5cdFx0XHRcdFx0XHRiSXNEcmFmdCA9IE1vZGVsSGVscGVyLmlzRHJhZnRTdXBwb3J0ZWQob01ldGFNb2RlbCwgc1BhdGgpLFxuXHRcdFx0XHRcdFx0YkRpc3BsYXlNb2RlID0gb1RhYmxlLmRhdGEoXCJkaXNwbGF5TW9kZVByb3BlcnR5QmluZGluZ1wiKSA9PT0gXCJ0cnVlXCIsXG5cdFx0XHRcdFx0XHRzTWVzc2FnZURldGFpbCA9IGJJc0RyYWZ0ICYmIGJEaXNwbGF5TW9kZSAmJiB0aGlzLmdldE1lc3NhZ2VEZXRhaWxGb3JOb25FZGl0YWJsZShvUmVzb3VyY2VCdW5kbGUpO1xuXG5cdFx0XHRcdFx0TWVzc2FnZUJveC53YXJuaW5nKHNNZXNzYWdlLCB7XG5cdFx0XHRcdFx0XHRkZXRhaWxzOiBzTWVzc2FnZURldGFpbCxcblx0XHRcdFx0XHRcdGFjdGlvbnM6IFtzRWRpdEJ1dHRvbiwgc0NhbmNlbEJ1dHRvbl0sXG5cdFx0XHRcdFx0XHRlbXBoYXNpemVkQWN0aW9uOiBzRWRpdEJ1dHRvbixcblx0XHRcdFx0XHRcdGNvbnRlbnRXaWR0aDogXCIxMDBweFwiLFxuXHRcdFx0XHRcdFx0b25DbG9zZTogZnVuY3Rpb24gKHNTZWxlY3Rpb246IHN0cmluZykge1xuXHRcdFx0XHRcdFx0XHRsZXQgYUNvbnRleHRzRm9yRWRpdDogYW55W10gPSBbXTtcblx0XHRcdFx0XHRcdFx0aWYgKHNTZWxlY3Rpb24gPT09IHNFZGl0QnV0dG9uKSB7XG5cdFx0XHRcdFx0XHRcdFx0TG9nLmluZm8oXCJNYXNzIEVkaXQ6IENvbmZpcm1lZCB0byBlZGl0IFwiLCBpVXBkYXRhYmxlQ29udGV4dHMudG9TdHJpbmcoKSwgXCIgc2VsZWN0aW9ucy5cIik7XG5cdFx0XHRcdFx0XHRcdFx0YUNvbnRleHRzRm9yRWRpdCA9IGFDb250ZXh0cztcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChzU2VsZWN0aW9uID09PSBzQ2FuY2VsQnV0dG9uKSB7XG5cdFx0XHRcdFx0XHRcdFx0TG9nLmluZm8oXCJNYXNzIEVkaXQ6IENhbmNlbGxlZC5cIik7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShhQ29udGV4dHNGb3JFZGl0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9IGFzIGFueSk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcblx0XHRcdFx0XHRMb2cuZXJyb3IoZXJyb3IpO1xuXHRcdFx0XHR9KTtcblx0XHR9KTtcblx0fVxuXG5cdF9jb25maXJtQ29udGV4dHMob1RhYmxlOiBUYWJsZSwgYUNvbnRleHRzOiBDb250ZXh0W10pIHtcblx0XHRjb25zdCBvSW50ZXJuYWxNb2RlbENvbnRleHQgPSBvVGFibGUuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dCxcblx0XHRcdGlTZWxlY3RlZENvbnRleHRzID0gK29JbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQcm9wZXJ0eShcIm51bWJlck9mU2VsZWN0ZWRDb250ZXh0c1wiKSB8fCAwO1xuXG5cdFx0YUNvbnRleHRzID0gYUNvbnRleHRzIHx8IFtdO1xuXG5cdFx0aWYgKGFDb250ZXh0cy5sZW5ndGggJiYgYUNvbnRleHRzLmxlbmd0aCAhPT0gaVNlbGVjdGVkQ29udGV4dHMpIHtcblx0XHRcdHJldHVybiB0aGlzLl9vcGVuQ29uZmlybURpYWxvZyhvVGFibGUsIGFDb250ZXh0cywgaVNlbGVjdGVkQ29udGV4dHMpO1xuXHRcdH1cblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGFDb250ZXh0cyk7XG5cdH1cblxuXHQvKipcblx0ICogVGhlIGZvbGxvd2luZyBvcGVyYXRpb25zIGFyZSBwZXJmb3JtZWQgYnkgbWV0aG9kIG9wZW5NYXNzRWRpdERpYWxvZzpcblx0ICogPT4gT3BlbnMgdGhlIG1hc3MgZWRpdCBkaWFsb2cuXG5cdCAqID0+IEltcGxlbWVudHMgdGhlIHNhdmUgYW5kIGNhbmNlbCBmdW5jdGlvbmFsaXR5LlxuXHQgKiA9PiBTZXRzIHRoZSBydW50aW1lIG1vZGVsIHRvIHRoZSBkaWFsb2cuXG5cdCAqID0+IFNldHMgdGhlIHN0YXRpYyBtb2RlbCdzIGNvbnRleHQgdG8gdGhlIGRpYWxvZy5cblx0ICpcblx0ICogQHBhcmFtIHtzYXAudWkubWRjLlRhYmxlfSBvVGFibGUgSW5zdGFuY2Ugb2YgdGhlIHRhYmxlXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyBvbiBvcGVuIG9mIHRoZSBtYXNzIGVkaXQgZGlhbG9nLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdG9wZW5NYXNzRWRpdERpYWxvZyhvVGFibGU6IFRhYmxlKSB7XG5cdFx0Y29uc3Qgb0NvbnRyb2xsZXIgPSB0aGlzLmdldFZpZXcoKS5nZXRDb250cm9sbGVyKCkgYXMgUGFnZUNvbnRyb2xsZXIsXG5cdFx0XHRwQ29udGV4dHNGb3JFZGl0ID0gdGhpcy5mZXRjaENvbnRleHRzRm9yRWRpdChvVGFibGUpO1xuXG5cdFx0cmV0dXJuIHBDb250ZXh0c0ZvckVkaXRcblx0XHRcdC50aGVuKHRoaXMuX2NvbmZpcm1Db250ZXh0cy5iaW5kKHRoaXMsIG9UYWJsZSkpXG5cdFx0XHQudGhlbihmdW5jdGlvbiAoYUNvbnRleHRzOiBhbnkpIHtcblx0XHRcdFx0cmV0dXJuIGFDb250ZXh0cyAmJiBhQ29udGV4dHMubGVuZ3RoID4gMCA/IE1hc3NFZGl0SGVscGVyLmNyZWF0ZURpYWxvZyhvVGFibGUsIGFDb250ZXh0cywgb0NvbnRyb2xsZXIpIDogUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oZnVuY3Rpb24gKG9EaWFsb2c/OiBhbnkpIHtcblx0XHRcdFx0aWYgKG9EaWFsb2cpIHtcblx0XHRcdFx0XHRvVGFibGUuYWRkRGVwZW5kZW50KG9EaWFsb2cpO1xuXHRcdFx0XHRcdG9EaWFsb2cub3BlbigpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChvRXJyb3I6IGFueSkge1xuXHRcdFx0XHRMb2cuZXJyb3IoXCJNYXNzIEVkaXQ6IFNvbWV0aGluZyB3ZW50IHdyb25nIGluIG1hc3MgZWRpdCBkaWFsb2cgY3JlYXRpb24uXCIsIG9FcnJvcik7XG5cdFx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBjb250ZXh0cyBmb3IgbWFzcyBlZGl0LlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQHBhcmFtIHtzYXAudWkubWRjLlRhYmxlfSBvVGFibGUgVGFibGUgZm9yIG1hc3MgZWRpdC5cblx0ICogQGFsaWFzIHNhcC5mZS5jb3JlLmNvbnRybGxlcmV4dGVuc2lvbnMuTWFzc0VkaXQjZmV0Y2hDb250ZXh0c0ZvckVkaXRcblx0ICogQHJldHVybnMge1Byb21pc2V9IEEgcHJvbWlzZSB0byBiZSByZXNvbHZlZCB3aXRoIGFuIGFycmF5IG9mIGNvbnRleHQocykgd2hpY2ggc2hvdWxkIGJlIGNvbnNpZGVyZWQgZm9yIG1hc3MgZWRpdC5cblx0ICogQHByaXZhdGVcblx0ICoqL1xuXHRAcHJpdmF0ZUV4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKE92ZXJyaWRlRXhlY3V0aW9uLkFmdGVyKVxuXHRmZXRjaENvbnRleHRzRm9yRWRpdChvVGFibGU6IFRhYmxlKSB7XG5cdFx0Ly9UbyBiZSBvdmVycmlkZGVuIGJ5IHRoZSBhcHBsaWNhdGlvblxuXHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsQ29udGV4dCA9IG9UYWJsZS5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0LFxuXHRcdFx0YVNlbGVjdGVkQ29udGV4dHMgPSBvSW50ZXJuYWxNb2RlbENvbnRleHQuZ2V0UHJvcGVydHkoXCJ1cGRhdGFibGVDb250ZXh0c1wiKSB8fCBbXTtcblxuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoYVNlbGVjdGVkQ29udGV4dHMpO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE1hc3NFZGl0O1xuIl19
145
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1hc3NFZGl0LnRzIl0sIm5hbWVzIjpbIk1hc3NFZGl0IiwiZGVmaW5lVUk1Q2xhc3MiLCJwdWJsaWNFeHRlbnNpb24iLCJmaW5hbEV4dGVuc2lvbiIsInByaXZhdGVFeHRlbnNpb24iLCJleHRlbnNpYmxlIiwiT3ZlcnJpZGVFeGVjdXRpb24iLCJBZnRlciIsImdldE1lc3NhZ2VEZXRhaWxGb3JOb25FZGl0YWJsZSIsIm9SZXNvdXJjZUJ1bmRsZSIsInNIZWFkZXIiLCJnZXRUZXh0Iiwic1JlYXNvbkdyb3VwIiwic1JlYXNvbkRyYWZ0Iiwic1JlYXNvbk5vbkVkaXRhYmxlIiwiX29wZW5Db25maXJtRGlhbG9nIiwib1RhYmxlIiwiYUNvbnRleHRzIiwiaVNlbGVjdGVkQ29udGV4dHMiLCJpVXBkYXRhYmxlQ29udGV4dHMiLCJsZW5ndGgiLCJQcm9taXNlIiwicmVzb2x2ZSIsImdldFZpZXciLCJnZXRNb2RlbCIsImdldFJlc291cmNlQnVuZGxlIiwidGhlbiIsInNFZGl0QnV0dG9uIiwic0NhbmNlbEJ1dHRvbiIsImlOb25FZGl0YWJsZSIsInNNZXNzYWdlIiwic1BhdGgiLCJkYXRhIiwib01ldGFNb2RlbCIsImdldE1ldGFNb2RlbCIsImJJc0RyYWZ0IiwiTW9kZWxIZWxwZXIiLCJpc0RyYWZ0U3VwcG9ydGVkIiwiYkRpc3BsYXlNb2RlIiwic01lc3NhZ2VEZXRhaWwiLCJNZXNzYWdlQm94Iiwid2FybmluZyIsImRldGFpbHMiLCJhY3Rpb25zIiwiZW1waGFzaXplZEFjdGlvbiIsImNvbnRlbnRXaWR0aCIsIm9uQ2xvc2UiLCJzU2VsZWN0aW9uIiwiYUNvbnRleHRzRm9yRWRpdCIsIkxvZyIsImluZm8iLCJ0b1N0cmluZyIsImNhdGNoIiwiZXJyb3IiLCJfY29uZmlybUNvbnRleHRzIiwib0ludGVybmFsTW9kZWxDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJnZXRQcm9wZXJ0eSIsIm9wZW5NYXNzRWRpdERpYWxvZyIsIm9Db250cm9sbGVyIiwiZ2V0Q29udHJvbGxlciIsInBDb250ZXh0c0ZvckVkaXQiLCJmZXRjaENvbnRleHRzRm9yRWRpdCIsImJpbmQiLCJNYXNzRWRpdEhlbHBlciIsImNyZWF0ZURpYWxvZyIsIm9EaWFsb2ciLCJhZGREZXBlbmRlbnQiLCJvcGVuIiwib0Vycm9yIiwiYVNlbGVjdGVkQ29udGV4dHMiLCJDb250cm9sbGVyRXh0ZW5zaW9uIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7TUFFTUEsUSxXQURMQyxjQUFjLENBQUMsMkNBQUQsQyxVQUViQyxlQUFlLEUsVUFDZkMsY0FBYyxFLFVBbUZkRCxlQUFlLEUsVUFDZkMsY0FBYyxFLFVBOEJkQyxnQkFBZ0IsRSxVQUNoQkMsVUFBVSxDQUFDQyxpQkFBaUIsQ0FBQ0MsS0FBbkIsQzs7Ozs7Ozs7O1dBbEhYQyw4QixHQUZBLHdDQUUrQkMsZUFGL0IsRUFFZ0U7QUFDL0QsVUFBTUMsT0FBTyxHQUFHRCxlQUFlLENBQUNFLE9BQWhCLENBQXdCLDJDQUF4QixDQUFoQjtBQUFBLFVBQ0NDLFlBQVksR0FBR0gsZUFBZSxDQUFDRSxPQUFoQixDQUF3QiwyQ0FBeEIsQ0FEaEI7QUFBQSxVQUVDRSxZQUFZLEdBQUdKLGVBQWUsQ0FBQ0UsT0FBaEIsQ0FBd0IsaURBQXhCLENBRmhCO0FBQUEsVUFHQ0csa0JBQWtCLEdBQUdMLGVBQWUsQ0FBQ0UsT0FBaEIsQ0FBd0Isd0RBQXhCLENBSHRCO0FBS0EsYUFDQyxxQkFBY0QsT0FBZCxvQ0FDTUUsWUFETixxQ0FHT0MsWUFIUCwyQkFJT0Msa0JBSlAsb0JBREQ7QUFRQSxLOztXQUVEQyxrQixHQUFBLDRCQUFtQkMsTUFBbkIsRUFBa0NDLFNBQWxDLEVBQXdEQyxpQkFBeEQsRUFBbUY7QUFBQTs7QUFDbEYsVUFBTUMsa0JBQWtCLEdBQUcsQ0FBQ0YsU0FBUyxJQUFJLEVBQWQsRUFBa0JHLE1BQTdDO0FBRUEsYUFBTyxJQUFJQyxPQUFKLENBQVksVUFB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QUFNLENBQUN3QyxpQkFBUCxDQUF5QixVQUF6QixDQUE5QjtBQUFBLFVBQ0NjLGlCQUFpQixHQUFHZixxQkFBcUIsQ0FBQ0UsV0FBdEIsQ0FBa0MsbUJBQWxDLEtBQTBELEVBRC9FO0FBR0EsYUFBT3BDLE9BQU8sQ0FBQ0MsT0FBUixDQUFnQmdELGlCQUFoQixDQUFQO0FBQ0EsSzs7O0lBNUhxQkMsbUI7U0ErSFJ2RSxRIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBSZXNvdXJjZUJ1bmRsZSBmcm9tIFwic2FwL2Jhc2UvaTE4bi9SZXNvdXJjZUJ1bmRsZVwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgZXh0ZW5zaWJsZSwgZmluYWxFeHRlbnNpb24sIHByaXZhdGVFeHRlbnNpb24sIHB1YmxpY0V4dGVuc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IE1hc3NFZGl0SGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01hc3NFZGl0SGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IEludGVybmFsTW9kZWxDb250ZXh0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgTWVzc2FnZUJveCBmcm9tIFwic2FwL20vTWVzc2FnZUJveFwiO1xuaW1wb3J0IENvbnRyb2xsZXJFeHRlbnNpb24gZnJvbSBcInNhcC91aS9jb3JlL212Yy9Db250cm9sbGVyRXh0ZW5zaW9uXCI7XG5pbXBvcnQgT3ZlcnJpZGVFeGVjdXRpb24gZnJvbSBcInNhcC91aS9jb3JlL212Yy9PdmVycmlkZUV4ZWN1dGlvblwiO1xuaW1wb3J0IHR5cGUgVGFibGUgZnJvbSBcInNhcC91aS9tZGMvVGFibGVcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBSZXNvdXJjZU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvcmVzb3VyY2UvUmVzb3VyY2VNb2RlbFwiO1xuXG4vKipcbiAqIEBjbGFzcyBDb250cm9sbGVyIGV4dGVuc2lvbiBwcm92aWRpbmcgaG9va3MgZm9yIHRoZSBtYXNzIGVkaXQgaW4gYSB0YWJsZVxuICogQG5hbWUgc2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuTWFzc0VkaXRcbiAqIEBoaWRlY29uc3RydWN0b3JcbiAqIEBwcml2YXRlXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLk1hc3NFZGl0XCIpXG5jbGFzcyBNYXNzRWRpdCBleHRlbmRzIENvbnRyb2xsZXJFeHRlbnNpb24ge1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0Z2V0TWVzc2FnZURldGFpbEZvck5vbkVkaXRhYmxlKG9SZXNvdXJjZUJ1bmRsZTogUmVzb3VyY2VCdW5kbGUpIHtcblx0XHRjb25zdCBzSGVhZGVyID0gb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX01BU1NfRURJVF9DT05GSVJNX01FU1NBR0VfREVUQUlMX0hFQURFUlwiKSxcblx0XHRcdHNSZWFzb25Hcm91cCA9IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19NQVNTX0VESVRfQ09ORklSTV9NRVNTQUdFX0RFVEFJTF9SRUFTT05cIiksXG5cdFx0XHRzUmVhc29uRHJhZnQgPSBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfTUFTU19FRElUX0NPTkZJUk1fTUVTU0FHRV9ERVRBSUxfUkVBU09OX0RSQUZUXCIpLFxuXHRcdFx0c1JlYXNvbk5vbkVkaXRhYmxlID0gb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX01BU1NfRURJVF9DT05GSVJNX01FU1NBR0VfREVUQUlMX1JFQVNPTl9OT05fRURJVEFCTEVcIik7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0YDxwPjxzdHJvbmc+JHtzSGVhZGVyfTwvc3Ryb25nPjwvcD5cXG5gICtcblx0XHRcdGA8cD4ke3NSZWFzb25Hcm91cH08L3A+XFxuYCArXG5cdFx0XHRgPHVsPmAgK1xuXHRcdFx0YDxsaT4ke3NSZWFzb25EcmFmdH08L2xpPmAgK1xuXHRcdFx0YDxsaT4ke3NSZWFzb25Ob25FZGl0YWJsZX08L2xpPmAgK1xuXHRcdFx0YDwvdWw+YFxuXHRcdCk7XG5cdH1cblxuXHRfb3BlbkNvbmZpcm1EaWFsb2cob1RhYmxlOiBUYWJsZSwgYUNvbnRleHRzOiBDb250ZXh0W10sIGlTZWxlY3RlZENvbnRleHRzOiBudW1iZXIpIHtcblx0XHRjb25zdCBpVXBkYXRhYmxlQ29udGV4dHMgPSAoYUNvbnRleHRzIHx8IFtdKS5sZW5ndGg7XG5cblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcblx0XHRcdCgodGhpcy5nZXRWaWV3KCkuZ2V0TW9kZWwoXCJzYXAuZmUuaTE4blwiKSBhcyBSZXNvdXJjZU1vZGVsKS5nZXRSZXNvdXJjZUJ1bmRsZSgpIGFzIFByb21pc2U8UmVzb3VyY2VCdW5kbGU+KVxuXHRcdFx0XHQudGhlbigob1Jlc291cmNlQnVuZGxlKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qgc0VkaXRCdXR0b24gPSBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfTUFTU19FRElUX0NPTkZJUk1fQlVUVE9OX1RFWFRcIiksXG5cdFx0XHRcdFx0XHRzQ2FuY2VsQnV0dG9uID0gb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX0NPTU1PTl9PQkpFQ1RfUEFHRV9DQU5DRUxcIiksXG5cdFx0XHRcdFx0XHRpTm9uRWRpdGFibGUgPSBpU2VsZWN0ZWRDb250ZXh0cyAtIGlVcGRhdGFibGVDb250ZXh0cyxcblx0XHRcdFx0XHRcdHNNZXNzYWdlID0gb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX01BU1NfRURJVF9DT05GSVJNX01FU1NBR0VcIiwgW1xuXHRcdFx0XHRcdFx0XHRpTm9uRWRpdGFibGUsXG5cdFx0XHRcdFx0XHRcdGlTZWxlY3RlZENvbnRleHRzLFxuXHRcdFx0XHRcdFx0XHRpVXBkYXRhYmxlQ29udGV4dHNcblx0XHRcdFx0XHRcdF0pLFxuXHRcdFx0XHRcdFx0c1BhdGggPSBvVGFibGUuZGF0YShcInRhcmdldENvbGxlY3Rpb25QYXRoXCIpLFxuXHRcdFx0XHRcdFx0b01ldGFNb2RlbCA9IG9UYWJsZS5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpLFxuXHRcdFx0XHRcdFx0YklzRHJhZnQgPSBNb2RlbEhlbHBlci5pc0RyYWZ0U3VwcG9ydGVkKG9NZXRhTW9kZWwsIHNQYXRoKSxcblx0XHRcdFx0XHRcdGJEaXNwbGF5TW9kZSA9IG9UYWJsZS5kYXRhKFwiZGlzcGxheU1vZGVQcm9wZXJ0eUJpbmRpbmdcIikgPT09IFwidHJ1ZVwiLFxuXHRcdFx0XHRcdFx0c01lc3NhZ2VEZXRhaWwgPSBiSXNEcmFmdCAmJiBiRGlzcGxheU1vZGUgJiYgdGhpcy5nZXRNZXNzYWdlRGV0YWlsRm9yTm9uRWRpdGFibGUob1Jlc291cmNlQnVuZGxlKTtcblxuXHRcdFx0XHRcdE1lc3NhZ2VCb3gud2FybmluZyhzTWVzc2FnZSwge1xuXHRcdFx0XHRcdFx0ZGV0YWlsczogc01lc3NhZ2VEZXRhaWwsXG5cdFx0XHRcdFx0XHRhY3Rpb25zOiBbc0VkaXRCdXR0b24sIHNDYW5jZWxCdXR0b25dLFxuXHRcdFx0XHRcdFx0ZW1waGFzaXplZEFjdGlvbjogc0VkaXRCdXR0b24sXG5cdFx0XHRcdFx0XHRjb250ZW50V2lkdGg6IFwiMTAwcHhcIixcblx0XHRcdFx0XHRcdG9uQ2xvc2U6IGZ1bmN0aW9uIChzU2VsZWN0aW9uOiBzdHJpbmcpIHtcblx0XHRcdFx0XHRcdFx0bGV0IGFDb250ZXh0c0ZvckVkaXQ6IGFueVtdID0gW107XG5cdFx0XHRcdFx0XHRcdGlmIChzU2VsZWN0aW9uID09PSBzRWRpdEJ1dHRvbikge1xuXHRcdFx0XHRcdFx0XHRcdExvZy5pbmZvKFwiTWFzcyBFZGl0OiBDb25maXJtZWQgdG8gZWRpdCBcIiwgaVVwZGF0YWJsZUNvbnRleHRzLnRvU3RyaW5nKCksIFwiIHNlbGVjdGlvbnMuXCIpO1xuXHRcdFx0XHRcdFx0XHRcdGFDb250ZXh0c0ZvckVkaXQgPSBhQ29udGV4dHM7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoc1NlbGVjdGlvbiA9PT0gc0NhbmNlbEJ1dHRvbikge1xuXHRcdFx0XHRcdFx0XHRcdExvZy5pbmZvKFwiTWFzcyBFZGl0OiBDYW5jZWxsZWQuXCIpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHJlc29sdmUoYUNvbnRleHRzRm9yRWRpdCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBhcyBhbnkpO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG5cdFx0XHRcdFx0TG9nLmVycm9yKGVycm9yKTtcblx0XHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cblxuXHRfY29uZmlybUNvbnRleHRzKG9UYWJsZTogVGFibGUsIGFDb250ZXh0czogQ29udGV4dFtdKSB7XG5cdFx0Y29uc3Qgb0ludGVybmFsTW9kZWxDb250ZXh0ID0gb1RhYmxlLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdFx0XHRpU2VsZWN0ZWRDb250ZXh0cyA9ICtvSW50ZXJuYWxNb2RlbENvbnRleHQuZ2V0UHJvcGVydHkoXCJudW1iZXJPZlNlbGVjdGVkQ29udGV4dHNcIikgfHwgMDtcblxuXHRcdGFDb250ZXh0cyA9IGFDb250ZXh0cyB8fCBbXTtcblxuXHRcdGlmIChhQ29udGV4dHMubGVuZ3RoICYmIGFDb250ZXh0cy5sZW5ndGggIT09IGlTZWxlY3RlZENvbnRleHRzKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5fb3BlbkNvbmZpcm1EaWFsb2cob1RhYmxlLCBhQ29udGV4dHMsIGlTZWxlY3RlZENvbnRleHRzKTtcblx0XHR9XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShhQ29udGV4dHMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoZSBmb2xsb3dpbmcgb3BlcmF0aW9ucyBhcmUgcGVyZm9ybWVkIGJ5IG1ldGhvZCBvcGVuTWFzc0VkaXREaWFsb2c6XG5cdCAqID0+IE9wZW5zIHRoZSBtYXNzIGVkaXQgZGlhbG9nLlxuXHQgKiA9PiBJbXBsZW1lbnRzIHRoZSBzYXZlIGFuZCBjYW5jZWwgZnVuY3Rpb25hbGl0eS5cblx0ICogPT4gU2V0cyB0aGUgcnVudGltZSBtb2RlbCB0byB0aGUgZGlhbG9nLlxuXHQgKiA9PiBTZXRzIHRoZSBzdGF0aWMgbW9kZWwncyBjb250ZXh0IHRvIHRoZSBkaWFsb2cuXG5cdCAqXG5cdCAqIEBwYXJhbSBvVGFibGUgSW5zdGFuY2Ugb2YgdGhlIHRhYmxlXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIG9uIG9wZW4gb2YgdGhlIG1hc3MgZWRpdCBkaWFsb2cuXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0b3Blbk1hc3NFZGl0RGlhbG9nKG9UYWJsZTogVGFibGUpIHtcblx0XHRjb25zdCBvQ29udHJvbGxlciA9IHRoaXMuZ2V0VmlldygpLmdldENvbnRyb2xsZXIoKSBhcyBQYWdlQ29udHJvbGxlcixcblx0XHRcdHBDb250ZXh0c0ZvckVkaXQgPSB0aGlzLmZldGNoQ29udGV4dHNGb3JFZGl0KG9UYWJsZSk7XG5cblx0XHRyZXR1cm4gcENvbnRleHRzRm9yRWRpdFxuXHRcdFx0LnRoZW4odGhpcy5fY29uZmlybUNvbnRleHRzLmJpbmQodGhpcywgb1RhYmxlKSlcblx0XHRcdC50aGVuKGZ1bmN0aW9uIChhQ29udGV4dHM6IGFueSkge1xuXHRcdFx0XHRyZXR1cm4gYUNvbnRleHRzICYmIGFDb250ZXh0cy5sZW5ndGggPiAwID8gTWFzc0VkaXRIZWxwZXIuY3JlYXRlRGlhbG9nKG9UYWJsZSwgYUNvbnRleHRzLCBvQ29udHJvbGxlcikgOiBQcm9taXNlLnJlc29sdmUoKTtcblx0XHRcdH0pXG5cdFx0XHQudGhlbihmdW5jdGlvbiAob0RpYWxvZz86IGFueSkge1xuXHRcdFx0XHRpZiAob0RpYWxvZykge1xuXHRcdFx0XHRcdG9UYWJsZS5hZGREZXBlbmRlbnQob0RpYWxvZyk7XG5cdFx0XHRcdFx0b0RpYWxvZy5vcGVuKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24gKG9FcnJvcjogYW55KSB7XG5cdFx0XHRcdExvZy5lcnJvcihcIk1hc3MgRWRpdDogU29tZXRoaW5nIHdlbnQgd3JvbmcgaW4gbWFzcyBlZGl0IGRpYWxvZyBjcmVhdGlvbi5cIiwgb0Vycm9yKTtcblx0XHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGNvbnRleHRzIGZvciBtYXNzIGVkaXQuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAcGFyYW0gb1RhYmxlIFRhYmxlIGZvciBtYXNzIGVkaXQuXG5cdCAqIEBhbGlhcyBzYXAuZmUuY29yZS5jb250cmxsZXJleHRlbnNpb25zLk1hc3NFZGl0I2ZldGNoQ29udGV4dHNGb3JFZGl0XG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB0byBiZSByZXNvbHZlZCB3aXRoIGFuIGFycmF5IG9mIGNvbnRleHQocykgd2hpY2ggc2hvdWxkIGJlIGNvbnNpZGVyZWQgZm9yIG1hc3MgZWRpdC5cblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBwcml2YXRlRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXIpXG5cdGZldGNoQ29udGV4dHNGb3JFZGl0KG9UYWJsZTogVGFibGUpIHtcblx0XHQvL1RvIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGFwcGxpY2F0aW9uXG5cdFx0Y29uc3Qgb0ludGVybmFsTW9kZWxDb250ZXh0ID0gb1RhYmxlLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdFx0XHRhU2VsZWN0ZWRDb250ZXh0cyA9IG9JbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQcm9wZXJ0eShcInVwZGF0YWJsZUNvbnRleHRzXCIpIHx8IFtdO1xuXG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShhU2VsZWN0ZWRDb250ZXh0cyk7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTWFzc0VkaXQ7XG4iXX0=
@@ -1,19 +1,19 @@
1
- import ResourceBundle from "sap/base/i18n/ResourceBundle";
1
+ import type ResourceBundle from "sap/base/i18n/ResourceBundle";
2
2
  import Log from "sap/base/Log";
3
3
  import { defineUI5Class, extensible, finalExtension, privateExtension, publicExtension } from "sap/fe/core/helpers/ClassSupport";
4
4
  import MassEditHelper from "sap/fe/core/helpers/MassEditHelper";
5
- import ModelHelper, { InternalModelContext } from "sap/fe/core/helpers/ModelHelper";
6
- import PageController from "sap/fe/core/PageController";
5
+ import type { InternalModelContext } from "sap/fe/core/helpers/ModelHelper";
6
+ import ModelHelper from "sap/fe/core/helpers/ModelHelper";
7
+ import type PageController from "sap/fe/core/PageController";
7
8
  import MessageBox from "sap/m/MessageBox";
8
9
  import ControllerExtension from "sap/ui/core/mvc/ControllerExtension";
9
10
  import OverrideExecution from "sap/ui/core/mvc/OverrideExecution";
10
- import Table from "sap/ui/mdc/Table";
11
- import Context from "sap/ui/model/Context";
12
- import ResourceModel from "sap/ui/model/resource/ResourceModel";
11
+ import type Table from "sap/ui/mdc/Table";
12
+ import type Context from "sap/ui/model/Context";
13
+ import type ResourceModel from "sap/ui/model/resource/ResourceModel";
13
14
 
14
15
  /**
15
16
  * @class Controller extension providing hooks for the mass edit in a table
16
- *
17
17
  * @name sap.fe.core.controllerextensions.MassEdit
18
18
  * @hideconstructor
19
19
  * @private
@@ -29,20 +29,12 @@ class MassEdit extends ControllerExtension {
29
29
  sReasonNonEditable = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_MESSAGE_DETAIL_REASON_NON_EDITABLE");
30
30
 
31
31
  return (
32
- "<p><strong>" +
33
- sHeader +
34
- "</strong></p>\n" +
35
- "<p>" +
36
- sReasonGroup +
37
- "</p>\n" +
38
- "<ul>" +
39
- "<li>" +
40
- sReasonDraft +
41
- "</li>" +
42
- "<li>" +
43
- sReasonNonEditable +
44
- "</li>" +
45
- "</ul>"
32
+ `<p><strong>${sHeader}</strong></p>\n` +
33
+ `<p>${sReasonGroup}</p>\n` +
34
+ `<ul>` +
35
+ `<li>${sReasonDraft}</li>` +
36
+ `<li>${sReasonNonEditable}</li>` +
37
+ `</ul>`
46
38
  );
47
39
  }
48
40
 
@@ -53,7 +45,7 @@ class MassEdit extends ControllerExtension {
53
45
  ((this.getView().getModel("sap.fe.i18n") as ResourceModel).getResourceBundle() as Promise<ResourceBundle>)
54
46
  .then((oResourceBundle) => {
55
47
  const sEditButton = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_BUTTON_TEXT"),
56
- sCancelButton = oResourceBundle.getText("C_MASS_EDIT_CANCEL_BUTTON_TEXT"),
48
+ sCancelButton = oResourceBundle.getText("C_COMMON_OBJECT_PAGE_CANCEL"),
57
49
  iNonEditable = iSelectedContexts - iUpdatableContexts,
58
50
  sMessage = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_MESSAGE", [
59
51
  iNonEditable,
@@ -108,8 +100,8 @@ class MassEdit extends ControllerExtension {
108
100
  * => Sets the runtime model to the dialog.
109
101
  * => Sets the static model's context to the dialog.
110
102
  *
111
- * @param {sap.ui.mdc.Table} oTable Instance of the table
112
- * @returns {Promise} A promise that resolves on open of the mass edit dialog.
103
+ * @param oTable Instance of the table
104
+ * @returns A promise that resolves on open of the mass edit dialog.
113
105
  * @private
114
106
  */
115
107
  @publicExtension()
@@ -136,12 +128,13 @@ class MassEdit extends ControllerExtension {
136
128
 
137
129
  /**
138
130
  * Returns a promise that resolves to the contexts for mass edit.
131
+ *
139
132
  * @function
140
- * @param {sap.ui.mdc.Table} oTable Table for mass edit.
133
+ * @param oTable Table for mass edit.
141
134
  * @alias sap.fe.core.contrllerextensions.MassEdit#fetchContextsForEdit
142
- * @returns {Promise} A promise to be resolved with an array of context(s) which should be considered for mass edit.
135
+ * @returns A promise to be resolved with an array of context(s) which should be considered for mass edit.
143
136
  * @private
144
- **/
137
+ */
145
138
  @privateExtension()
146
139
  @extensible(OverrideExecution.After)
147
140
  fetchContextsForEdit(oTable: Table) {
@@ -45,7 +45,7 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/controllerextensions/mess
45
45
  * If the bound messages are shown to the user with a different control like the (TODO:Link) MessageButton
46
46
  * this method has to be overridden.
47
47
  *
48
- * @returns {boolean} Determines whether or not bound messages are shown in the message dialog.
48
+ * @returns Determines whether or not bound messages are shown in the message dialog.
49
49
  * @private
50
50
  */
51
51
  _proto.getShowBoundMessagesInMessageDialog = function getShowBoundMessagesInMessageDialog() {
@@ -60,7 +60,7 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/controllerextensions/mess
60
60
  * toast is shown instead.
61
61
  *
62
62
  * @param mParameters PRIVATE
63
- * @returns {Promise} A promise that is resolved once the user closes the dialog. If there are no messages
63
+ * @returns A promise that is resolved once the user closes the dialog. If there are no messages
64
64
  * to be shown, the promise is resolved immediately
65
65
  * @alias sap.fe.core.controllerextensions.MessageHandler#showMessageDialog
66
66
  * @public
@@ -90,7 +90,7 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/controllerextensions/mess
90
90
  // we have to set a timeout to be able to access the most recent messages
91
91
  setTimeout(function () {
92
92
  // TODO: great API - will be changed later
93
- messageHandling.showUnboundMessages(customMessages, oBindingContext, bEtagMessage, bShowBoundMessages, mParameters === null || mParameters === void 0 ? void 0 : mParameters.errorTargetsInAPM, mParameters === null || mParameters === void 0 ? void 0 : mParameters.bShowMessageBox, mParameters === null || mParameters === void 0 ? void 0 : mParameters.concurrentEditFlag).then(resolve).catch(reject);
93
+ messageHandling.showUnboundMessages(customMessages, oBindingContext, bEtagMessage, bShowBoundMessages, mParameters === null || mParameters === void 0 ? void 0 : mParameters.showErrorInAPD, mParameters === null || mParameters === void 0 ? void 0 : mParameters.bShowMessageBox, mParameters === null || mParameters === void 0 ? void 0 : mParameters.concurrentEditFlag).then(resolve).catch(reject);
94
94
  }, 0);
95
95
  });
96
96
  }
@@ -98,19 +98,23 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/controllerextensions/mess
98
98
  * You can remove the existing transition message from the message model with this method.
99
99
  * With every user interaction that causes server communication (like clicking on an action, changing data),
100
100
  * this method removes the existing transition messages from the message model.
101
- * @param {boolean} [keepBoundMessage] Checks if the bound transition messages are not to be removed
102
101
  *
102
+ * @param [keepBoundMessage] Checks if the bound transition messages are not to be removed
103
+ * @param keepUnboundMessage
104
+ * @param sPathToBeRemoved
103
105
  * @alias sap.fe.core.controllerextensions.MessageHandler#removesTransitionMessages
104
106
  * @private
105
107
  */
106
108
  ;
107
109
 
108
- _proto.removeTransitionMessages = function removeTransitionMessages(keepBoundMessage) {
110
+ _proto.removeTransitionMessages = function removeTransitionMessages(keepBoundMessage, keepUnboundMessage, sPathToBeRemoved) {
109
111
  if (!keepBoundMessage) {
110
- messageHandling.removeBoundTransitionMessages();
112
+ messageHandling.removeBoundTransitionMessages(sPathToBeRemoved);
111
113
  }
112
114
 
113
- messageHandling.removeUnboundTransitionMessages();
115
+ if (!keepUnboundMessage) {
116
+ messageHandling.removeUnboundTransitionMessages();
117
+ }
114
118
  };
115
119
 
116
120
  _proto._checkNavigationToMessagePage = function _checkNavigationToMessagePage(mParameters) {
@@ -150,14 +154,14 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/controllerextensions/mess
150
154
  // We can plan to move this and the dialog logic both to messageHandler controller extension if required.
151
155
  sRetryAfterMessage = messageHandling.getRetryAfterMessage(oMessage);
152
156
  mMessagePageParameters = {
153
- description: sRetryAfterMessage ? sRetryAfterMessage + " " + oMessage.getMessage() : oMessage.getMessage(),
157
+ description: sRetryAfterMessage ? "".concat(sRetryAfterMessage, " ").concat(oMessage.getMessage()) : oMessage.getMessage(),
154
158
  navigateBackToOrigin: true
155
159
  };
156
160
  }
157
161
  } else {
158
162
  sRetryAfterMessage = messageHandling.getRetryAfterMessage(oMessage);
159
163
  mMessagePageParameters = {
160
- description: sRetryAfterMessage ? sRetryAfterMessage + " " + oMessage.getMessage() : oMessage.getMessage(),
164
+ description: sRetryAfterMessage ? "".concat(sRetryAfterMessage, " ").concat(oMessage.getMessage()) : oMessage.getMessage(),
161
165
  navigateBackToOrigin: true
162
166
  };
163
167
  }
@@ -176,8 +180,9 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/controllerextensions/mess
176
180
  }
177
181
  /**
178
182
  * Shows a message page or a message dialog based on the messages in the message dialog.
183
+ *
179
184
  * @param [mParameters]
180
- * @returns {Promise} A promise that is resolved once the user closes the message dialog or when navigation to the message page is complete. If there are no messages
185
+ * @returns A promise that is resolved once the user closes the message dialog or when navigation to the message page is complete. If there are no messages
181
186
  * to be shown, the promise is resolved immediately
182
187
  * @private
183
188
  */
@@ -196,7 +201,10 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/controllerextensions/mess
196
201
  if (mMessagePageParameters) {
197
202
  // navigate to message page.
198
203
  // handler before page navigation is triggered, for example to close the action parameter dialog
199
- mParameters && mParameters.messagePageNavigationCallback && mParameters.messagePageNavigationCallback();
204
+ if (mParameters && mParameters.messagePageNavigationCallback) {
205
+ mParameters.messagePageNavigationCallback();
206
+ }
207
+
200
208
  mMessagePageParameters.handleShellBack = !(mParameters && mParameters.shellBack); // TODO: Use Illustrated message instead of normal message page
201
209
  // TODO: Return value needs to provided but since this function is private for now hence we can skip this.
202
210
 
@@ -222,4 +230,4 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/controllerextensions/mess
222
230
  }(ControllerExtension), (_applyDecoratedDescriptor(_class2.prototype, "getShowBoundMessagesInMessageDialog", [_dec2, _dec3], Object.getOwnPropertyDescriptor(_class2.prototype, "getShowBoundMessagesInMessageDialog"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "showMessageDialog", [_dec4, _dec5], Object.getOwnPropertyDescriptor(_class2.prototype, "showMessageDialog"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "removeTransitionMessages", [_dec6], Object.getOwnPropertyDescriptor(_class2.prototype, "removeTransitionMessages"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "showMessages", [_dec7, _dec8], Object.getOwnPropertyDescriptor(_class2.prototype, "showMessages"), _class2.prototype)), _class2)) || _class);
223
231
  return MessageHandler;
224
232
  }, false);
225
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1lc3NhZ2VIYW5kbGVyLnRzIl0sIm5hbWVzIjpbIk1lc3NhZ2VIYW5kbGVyIiwiZGVmaW5lVUk1Q2xhc3MiLCJwcml2YXRlRXh0ZW5zaW9uIiwiZXh0ZW5zaWJsZSIsIk92ZXJyaWRlRXhlY3V0aW9uIiwiSW5zdGVhZCIsInB1YmxpY0V4dGVuc2lvbiIsImZpbmFsRXh0ZW5zaW9uIiwiZ2V0U2hvd0JvdW5kTWVzc2FnZXNJbk1lc3NhZ2VEaWFsb2ciLCJzaG93TWVzc2FnZURpYWxvZyIsIm1QYXJhbWV0ZXJzIiwiY3VzdG9tTWVzc2FnZXMiLCJ1bmRlZmluZWQiLCJvT1BJbnRlcm5hbEJpbmRpbmdDb250ZXh0IiwiYmFzZSIsImdldFZpZXciLCJnZXRCaW5kaW5nQ29udGV4dCIsImlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nT3BlbiIsInNldFByb3BlcnR5IiwiYlNob3dCb3VuZE1lc3NhZ2VzIiwib0JpbmRpbmdDb250ZXh0IiwiY29udGV4dCIsImJFdGFnTWVzc2FnZSIsImJIYXNFdGFnTWVzc2FnZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0Iiwic2V0VGltZW91dCIsIm1lc3NhZ2VIYW5kbGluZyIsInNob3dVbmJvdW5kTWVzc2FnZXMiLCJlcnJvclRhcmdldHNJbkFQTSIsImJTaG93TWVzc2FnZUJveCIsImNvbmN1cnJlbnRFZGl0RmxhZyIsInRoZW4iLCJjYXRjaCIsInJlbW92ZVRyYW5zaXRpb25NZXNzYWdlcyIsImtlZXBCb3VuZE1lc3NhZ2UiLCJyZW1vdmVCb3VuZFRyYW5zaXRpb25NZXNzYWdlcyIsInJlbW92ZVVuYm91bmRUcmFuc2l0aW9uTWVzc2FnZXMiLCJfY2hlY2tOYXZpZ2F0aW9uVG9NZXNzYWdlUGFnZSIsImFVbmJvdW5kTWVzc2FnZXMiLCJnZXRNZXNzYWdlcyIsImJTaG93Qm91bmRUcmFuc2l0aW9uTWVzc2FnZXMiLCJhQm91bmRUcmFuc2l0aW9uTWVzc2FnZXMiLCJhQ3VzdG9tTWVzc2FnZXMiLCJiSXNTdGlja3lFZGl0TW9kZSIsIkNvbW1vblV0aWxzIiwiaXNTdGlja3lFZGl0TW9kZSIsIm1NZXNzYWdlUGFnZVBhcmFtZXRlcnMiLCJpc0RhdGFSZWNlaXZlZEVycm9yIiwidGl0bGUiLCJkZXNjcmlwdGlvbiIsIm5hdmlnYXRlQmFja1RvT3JpZ2luIiwibGVuZ3RoIiwiaXNJbml0aWFsTG9hZDUwM0Vycm9yIiwib01lc3NhZ2UiLCJvVGVjaG5pY2FsRGV0YWlscyIsImdldFRlY2huaWNhbERldGFpbHMiLCJzUmV0cnlBZnRlck1lc3NhZ2UiLCJodHRwU3RhdHVzIiwicmV0cnlBZnRlciIsImlTZWNvbmRzQmVmb3JlUmV0cnkiLCJfZ2V0U2Vjb25kc0JlZm9yZVJldHJ5QWZ0ZXIiLCJnZXRSZXRyeUFmdGVyTWVzc2FnZSIsImdldE1lc3NhZ2UiLCJkUmV0cnlBZnRlciIsImRDdXJyZW50RGF0ZVRpbWUiLCJEYXRlIiwiaUN1cnJlbnREYXRlVGltZUluTWlsbGlTZWNvbmRzIiwiZ2V0VGltZSIsImlSZXRyeUFmdGVyRGF0ZVRpbWVJbk1pbGxpU2Vjb25kcyIsInNob3dNZXNzYWdlcyIsIm9BcHBDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJfaXNGY2xFbmFibGVkIiwibWVzc2FnZVBhZ2VOYXZpZ2F0aW9uQ2FsbGJhY2siLCJoYW5kbGVTaGVsbEJhY2siLCJzaGVsbEJhY2siLCJvUmVzb3VyY2VCdW5kbGUiLCJDb3JlIiwiZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlIiwiX3JvdXRpbmciLCJuYXZpZ2F0ZVRvTWVzc2FnZVBhZ2UiLCJnZXRUZXh0IiwiQ29udHJvbGxlckV4dGVuc2lvbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtNQUVNQSxjLFdBRExDLGNBQWMsQ0FBQyxpREFBRCxDLFVBZWJDLGdCQUFnQixFLFVBQ2hCQyxVQUFVLENBQUNDLGlCQUFpQixDQUFDQyxPQUFuQixDLFVBcUJWQyxlQUFlLEUsVUFDZkMsY0FBYyxFLFVBNkNkRCxlQUFlLEUsVUFnRmZBLGVBQWUsRSxVQUNmQyxjQUFjLEU7Ozs7Ozs7OztBQWpLZjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7V0FHQ0MsbUMsR0FGQSwrQ0FFc0M7QUFDckMsYUFBTyxJQUFQO0FBQ0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O1dBR0NDLGlCLEdBRkEsMkJBRWtCQyxXQUZsQixFQUVvRDtBQUNuRCxVQUFNQyxjQUFjLEdBQUdELFdBQVcsSUFBSUEsV0FBVyxDQUFDQyxjQUEzQixHQUE0Q0QsV0FBVyxDQUFDQyxjQUF4RCxHQUF5RUMsU0FBaEc7QUFBQSxVQUNDQyx5QkFBeUIsR0FBRyxLQUFLQyxJQUFMLENBQVVDLE9BQVYsR0FBb0JDLGlCQUFwQixDQUFzQyxVQUF0QyxDQUQ3QixDQURtRCxDQUduRDs7QUFDQSxVQUFJTixXQUFXLElBQUlBLFdBQVcsQ0FBQ08sMkJBQTNCLElBQTBESix5QkFBOUQsRUFBeUY7QUFDeEZBLFFBQUFBLHlCQUF5QixDQUFDSyxXQUExQixDQUFzQyw2QkFBdEMsRUFBcUUsSUFBckU7QUFDQTs7QUFDRCxVQUFNQyxrQkFBa0IsR0FBRyxLQUFLWCxtQ0FBTCxFQUEzQjtBQUNBLFVBQU1ZLGVBQWUsR0FBR1YsV0FBVyxJQUFJQSxXQUFXLENBQUNXLE9BQTNCLEdBQXFDWCxXQUFXLENBQUNXLE9BQWpELEdBQTJELEtBQUtOLE9BQUwsR0FBZUMsaUJBQWYsRUFBbkY7QUFDQSxVQUFNTSxZQUFZLEdBQUdaLFdBQVcsSUFBSUEsV0FBVyxDQUFDYSxlQUFoRCxDQVRtRCxDQVVuRDtBQUNBOztBQUNBLFVBQUlWLHlCQUFKLEVBQStCO0FBQzlCQSxRQUFBQSx5QkFBeUIsQ0FBQ0ssV0FBMUIsQ0FBc0MsNkJBQXRDLEVBQXFFLEtBQXJFO0FBQ0E7O0FBQ0QsYUFBTyxJQUFJTSxPQUFKLENBQVksVUFBVUMsT0FBVixFQUF5Q0MsTUFBekMsRUFBeUU7QUFDM0Y7QUFDQUMsUUFBQUEsVUFBVSxDQUFDLFlBQVk7QUFDdEI7QUFDQUMsVUFBQUEsZUFBZSxDQUNiQyxtQkFERixDQUVFbEIsY0FGRixFQUdFUyxlQUhGLEVBSUVFLFlBSkYsRUFLRUgsa0JBTEYsRUFNRVQsV0FORixhQU1FQSxXQU5GLHVCQU1FQSxXQUFXLENBQUVvQixpQkFOZixFQU9FcEIsV0FQRixhQU9FQSxXQVBGLHVCQU9FQSxXQUFXLENBQUVxQixlQVBmLEVBUUVyQixXQVJGLGFBUUVBLFdBUkYsdUJBUUVBLFdBQVcsQ0FBRXNCLGtCQVJmLEVBVUVDLElBVkYsQ0FVT1IsT0FWUCxFQVdFUyxLQVhGLENBV1FSLE1BWFI7QUFZQSxTQWRTLEVBY1AsQ0FkTyxDQUFWO0FBZUEsT0FqQk0sQ0FBUDtBQWtCQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O1dBRUNTLHdCLEdBREEsa0NBQ3lCQyxnQkFEekIsRUFDcUQ7QUFDcEQsVUFBSSxDQUFDQSxnQkFBTCxFQUF1QjtBQUN0QlIsUUFBQUEsZUFBZSxDQUFDUyw2QkFBaEI7QUFDQTs7QUFDRFQsTUFBQUEsZUFBZSxDQUFDVSwrQkFBaEI7QUFDQSxLOztXQUVEQyw2QixHQUFBLHVDQUE4QjdCLFdBQTlCLEVBQWdEO0FBQy9DLFVBQU04QixnQkFBZ0IsR0FBR1osZUFBZSxDQUFDYSxXQUFoQixFQUF6QjtBQUNBLFVBQU1DLDRCQUE0QixHQUFHLEtBQUtsQyxtQ0FBTCxFQUFyQztBQUNBLFVBQU1tQyx3QkFBd0IsR0FBR0QsNEJBQTRCLEdBQUdkLGVBQWUsQ0FBQ2EsV0FBaEIsQ0FBNEIsSUFBNUIsRUFBa0MsSUFBbEMsQ0FBSCxHQUE2QyxFQUExRztBQUNBLFVBQU1HLGVBQWUsR0FBR2xDLFdBQVcsSUFBSUEsV0FBVyxDQUFDQyxjQUEzQixHQUE0Q0QsV0FBVyxDQUFDQyxjQUF4RCxHQUF5RSxFQUFqRztBQUNBLFVBQU1rQyxpQkFBaUIsR0FBR0MsV0FBVyxDQUFDQyxnQkFBWixDQUE2QixLQUFLakMsSUFBTCxDQUFVQyxPQUFWLEVBQTdCLENBQTFCO0FBQ0EsVUFBSWlDLHNCQUFKLENBTitDLENBUS9DO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBLFVBQUl0QyxXQUFXLElBQUlBLFdBQVcsQ0FBQ3VDLG1CQUEvQixFQUFvRDtBQUNuREQsUUFBQUEsc0JBQXNCLEdBQUc7QUFDeEJFLFVBQUFBLEtBQUssRUFBRXhDLFdBQVcsQ0FBQ3dDLEtBREs7QUFFeEJDLFVBQUFBLFdBQVcsRUFBRXpDLFdBQVcsQ0FBQ3lDLFdBRkQ7QUFHeEJDLFVBQUFBLG9CQUFvQixFQUFFO0FBSEUsU0FBekI7QUFLQSxPQU5ELE1BTU8sSUFDTixDQUFDUCxpQkFBRCxJQUNBLENBQUNGLHdCQUF3QixDQUFDVSxNQUQxQixJQUVBLENBQUNULGVBQWUsQ0FBQ1MsTUFGakIsS0FHQ2IsZ0JBQWdCLENBQUNhLE1BQWpCLEtBQTRCLENBQTVCLElBQWtDM0MsV0FBVyxJQUFJQSxXQUFXLENBQUM0QyxxQkFIOUQsQ0FETSxFQUtMO0FBQ0QsWUFBTUMsUUFBUSxHQUFHZixnQkFBZ0IsQ0FBQyxDQUFELENBQWpDO0FBQUEsWUFDQ2dCLGlCQUFpQixHQUFHRCxRQUFRLENBQUNFLG1CQUFULEVBRHJCO0FBRUEsWUFBSUMsa0JBQUo7O0FBQ0EsWUFBSUYsaUJBQWlCLElBQUlBLGlCQUFpQixDQUFDRyxVQUFsQixLQUFpQyxHQUExRCxFQUErRDtBQUM5RCxjQUFJSCxpQkFBaUIsQ0FBQ0ksVUFBdEIsRUFBa0M7QUFDakMsZ0JBQU1DLG1CQUFtQixHQUFHLEtBQUtDLDJCQUFMLENBQWlDTixpQkFBaUIsQ0FBQ0ksVUFBbkQsQ0FBNUI7O0FBQ0EsZ0JBQUlDLG1CQUFtQixHQUFHLEdBQTFCLEVBQStCO0FBQzlCO0FBQ0E7QUFDQUgsY0FBQUEsa0JBQWtCLEdBQUc5QixlQUFlLENBQUNtQyxvQkFBaEIsQ0FBcUNSLFFBQXJDLENBQXJCO0FBQ0FQLGNBQUFBLHNCQUFzQixHQUFHO0FBQ3hCRyxnQkFBQUEsV0FBVyxFQUFFTyxrQkFBa0IsR0FBR0Esa0JBQWtCLEdBQUcsR0FBckIsR0FBMkJILFFBQVEsQ0FBQ1MsVUFBVCxFQUE5QixHQUFzRFQsUUFBUSxDQUFDUyxVQUFULEVBRDdEO0FBRXhCWixnQkFBQUEsb0JBQW9CLEVBQUU7QUFGRSxlQUF6QjtBQUlBO0FBQ0QsV0FYRCxNQVdPO0FBQ05NLFlBQUFBLGtCQUFrQixHQUFHOUIsZUFBZSxDQUFDbUMsb0JBQWhCLENBQXFDUixRQUFyQyxDQUFyQjtBQUNBUCxZQUFBQSxzQkFBc0IsR0FBRztBQUN4QkcsY0FBQUEsV0FBVyxFQUFFTyxrQkFBa0IsR0FBR0Esa0JBQWtCLEdBQUcsR0FBckIsR0FBMkJILFFBQVEsQ0FBQ1MsVUFBVCxFQUE5QixHQUFzRFQsUUFBUSxDQUFDUyxVQUFULEVBRDdEO0FBRXhCWixjQUFBQSxvQkFBb0IsRUFBRTtBQUZFLGFBQXpCO0FBSUE7QUFDRDtBQUNEOztBQUNELGFBQU9KLHNCQUFQO0FBQ0EsSzs7V0FFRGMsMkIsR0FBQSxxQ0FBNEJHLFdBQTVCLEVBQThDO0FBQzdDLFVBQU1DLGdCQUFnQixHQUFHLElBQUlDLElBQUosRUFBekI7QUFBQSxVQUNDQyw4QkFBOEIsR0FBR0YsZ0JBQWdCLENBQUNHLE9BQWpCLEVBRGxDO0FBQUEsVUFFQ0MsaUNBQWlDLEdBQUdMLFdBQVcsQ0FBQ0ksT0FBWixFQUZyQztBQUFBLFVBR0NSLG1CQUFtQixHQUFHLENBQUNTLGlDQUFpQyxHQUFHRiw4QkFBckMsSUFBdUUsSUFIOUY7QUFJQSxhQUFPUCxtQkFBUDtBQUNBO0FBQ0Q7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztXQUdDVSxZLEdBRkEsc0JBRWE3RCxXQUZiLEVBRWdDO0FBQUE7O0FBQy9CLFVBQU04RCxhQUFhLEdBQUcxQixXQUFXLENBQUMyQixlQUFaLENBQTRCLEtBQUsxRCxPQUFMLEVBQTVCLENBQXRCO0FBQ0EsVUFBSWlDLHNCQUFKOztBQUNBLFVBQUksQ0FBQ3dCLGFBQWEsQ0FBQ0UsYUFBZCxFQUFMLEVBQW9DO0FBQ25DMUIsUUFBQUEsc0JBQXNCLEdBQUcsS0FBS1QsNkJBQUwsQ0FBbUM3QixXQUFuQyxDQUF6QjtBQUNBOztBQUNELFVBQUlzQyxzQkFBSixFQUE0QjtBQUMzQjtBQUNBO0FBQ0F0QyxRQUFBQSxXQUFXLElBQUlBLFdBQVcsQ0FBQ2lFLDZCQUEzQixJQUE0RGpFLFdBQVcsQ0FBQ2lFLDZCQUFaLEVBQTVEO0FBRUEzQixRQUFBQSxzQkFBc0IsQ0FBQzRCLGVBQXZCLEdBQXlDLEVBQUVsRSxXQUFXLElBQUlBLFdBQVcsQ0FBQ21FLFNBQTdCLENBQXpDLENBTDJCLENBTTNCO0FBQ0E7O0FBQ0EsYUFBSzFDLHdCQUFMO0FBQ0EsWUFBTTJDLGVBQWUsR0FBSUMsSUFBRCxDQUFpQkMsd0JBQWpCLENBQTBDLGFBQTFDLENBQXhCOztBQUNBLFlBQUksS0FBS2xFLElBQUwsQ0FBVW1FLFFBQWQsRUFBd0I7QUFDdkIsaUJBQU8sSUFBSXpELE9BQUosQ0FBWSxVQUFDQyxPQUFELEVBQWVDLE1BQWYsRUFBK0I7QUFDakQ7QUFDQUMsWUFBQUEsVUFBVSxDQUFDLFlBQU07QUFDaEI7QUFDQSxjQUFBLEtBQUksQ0FBQ2IsSUFBTCxDQUFVbUUsUUFBVixDQUNFQyxxQkFERixDQUVFeEUsV0FBVyxJQUFJQSxXQUFXLENBQUN1QyxtQkFBM0IsR0FDRzZCLGVBQWUsQ0FBQ0ssT0FBaEIsQ0FBd0Isb0NBQXhCLENBREgsR0FFR0wsZUFBZSxDQUFDSyxPQUFoQixDQUF3QixvQ0FBeEIsQ0FKTCxFQUtFbkMsc0JBTEYsRUFPRWYsSUFQRixDQU9PUixPQVBQLEVBUUVTLEtBUkYsQ0FRUVIsTUFSUjtBQVNBLGFBWFMsRUFXUCxDQVhPLENBQVY7QUFZQSxXQWRNLENBQVA7QUFlQTtBQUNELE9BM0JELE1BMkJPO0FBQ047QUFDQSxlQUFPLEtBQUtqQixpQkFBTCxDQUF1QkMsV0FBdkIsQ0FBUDtBQUNBO0FBQ0QsSzs7O0lBek0yQjBFLG1CO1NBMk1kcEYsYyIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IG1lc3NhZ2VIYW5kbGluZyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvbWVzc2FnZUhhbmRsZXIvbWVzc2FnZUhhbmRsaW5nXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgZXh0ZW5zaWJsZSwgZmluYWxFeHRlbnNpb24sIHByaXZhdGVFeHRlbnNpb24sIHB1YmxpY0V4dGVuc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IENvcmUgZnJvbSBcInNhcC91aS9jb3JlL0NvcmVcIjtcbmltcG9ydCBDb250cm9sbGVyRXh0ZW5zaW9uIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvQ29udHJvbGxlckV4dGVuc2lvblwiO1xuaW1wb3J0IE92ZXJyaWRlRXhlY3V0aW9uIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvT3ZlcnJpZGVFeGVjdXRpb25cIjtcbmltcG9ydCB7IENvcmVFeCB9IGZyb20gXCJ0eXBlcy9leHRlbnNpb25fdHlwZXNcIjtcblxuLyoqXG4gKiBBIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIG9mZmVyaW5nIG1lc3NhZ2UgaGFuZGxpbmcuXG4gKlxuICogQGhpZGVjb25zdHJ1Y3RvclxuICogQHB1YmxpY1xuICogQGV4cGVyaW1lbnRhbCBBcyBvZiB2ZXJzaW9uIDEuOTAuMFxuICogQHNpbmNlIDEuOTAuMFxuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5NZXNzYWdlSGFuZGxlclwiKVxuY2xhc3MgTWVzc2FnZUhhbmRsZXIgZXh0ZW5kcyBDb250cm9sbGVyRXh0ZW5zaW9uIHtcblx0cHJvdGVjdGVkIGJhc2UhOiBQYWdlQ29udHJvbGxlcjtcblx0LyoqXG5cdCAqIERldGVybWluZXMgd2hldGhlciBvciBub3QgYm91bmQgbWVzc2FnZXMgYXJlIHNob3duIGluIHRoZSBtZXNzYWdlIGRpYWxvZy5cblx0ICpcblx0ICogVGhpcyBmdW5jdGlvbiBpcyBtZWFudCB0byBiZSBpbmRpdmlkdWFsbHkgb3ZlcnJpZGRlbiBieSBjb25zdW1pbmcgY29udHJvbGxlcnMsIGJ1dCBub3QgdG8gYmUgY2FsbGVkIGRpcmVjdGx5LlxuXHQgKiBUaGUgb3ZlcnJpZGUgZXhlY3V0aW9uIGlzOiB7QGxpbmsgc2FwLnVpLmNvcmUubXZjLk92ZXJyaWRlRXhlY3V0aW9uLkluc3RlYWR9LlxuXHQgKlxuXHQgKiBJZiB0aGUgYm91bmQgbWVzc2FnZXMgYXJlIHNob3duIHRvIHRoZSB1c2VyIHdpdGggYSBkaWZmZXJlbnQgY29udHJvbCBsaWtlIHRoZSAoVE9ETzpMaW5rKSBNZXNzYWdlQnV0dG9uXG5cdCAqIHRoaXMgbWV0aG9kIGhhcyB0byBiZSBvdmVycmlkZGVuLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn0gRGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCBib3VuZCBtZXNzYWdlcyBhcmUgc2hvd24gaW4gdGhlIG1lc3NhZ2UgZGlhbG9nLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0QHByaXZhdGVFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5JbnN0ZWFkKVxuXHRnZXRTaG93Qm91bmRNZXNzYWdlc0luTWVzc2FnZURpYWxvZygpIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTaG93cyBhIG1lc3NhZ2UgZGlhbG9nIHdpdGggdHJhbnNpdGlvbiBtZXNzYWdlcyBpZiB0aGVyZSBhcmUgYW55LlxuXHQgKiBUaGUgbWVzc2FnZSBkaWFsb2cgaXMgc2hvd24gYXMgYSBtb2RhbCBkaWFsb2cuIE9uY2UgdGhlIHVzZXIgY29uZmlybXMgdGhlIGRpYWxvZywgYWxsIHRyYW5zaXRpb24gbWVzc2FnZXNcblx0ICogYXJlIHJlbW92ZWQgZnJvbSB0aGUgbWVzc2FnZSBtb2RlbC4gSWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBtZXNzYWdlLCBhIGxpc3Qgb2YgbWVzc2FnZXMgaXMgc2hvd24uIFRoZSB1c2VyXG5cdCAqIGNhbiBmaWx0ZXIgb24gbWVzc2FnZSB0eXBlcyBhbmQgY2FuIGRpc3BsYXkgZGV0YWlscyBhcyB3ZWxsIGFzIHRoZSBsb25nIHRleHQuIElmIHRoZXJlIGlzIG9uZSBtZXNzYWdlLFxuXHQgKiB0aGUgZGlhbG9nIGltbWVkaWF0ZWx5IHNob3dzIHRoZSBkZXRhaWxzIG9mIHRoZSBtZXNzYWdlLiBJZiB0aGVyZSBpcyBqdXN0IG9uZSBzdWNjZXNzIG1lc3NhZ2UsIGEgbWVzc2FnZVxuXHQgKiB0b2FzdCBpcyBzaG93biBpbnN0ZWFkLlxuXHQgKlxuXHQgKiBAcGFyYW0gbVBhcmFtZXRlcnMgUFJJVkFURVxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZX0gQSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgb25jZSB0aGUgdXNlciBjbG9zZXMgdGhlIGRpYWxvZy4gSWYgdGhlcmUgYXJlIG5vIG1lc3NhZ2VzXG5cdCAqIHRvIGJlIHNob3duLCB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZCBpbW1lZGlhdGVseVxuXHQgKiBAYWxpYXMgc2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuTWVzc2FnZUhhbmRsZXIjc2hvd01lc3NhZ2VEaWFsb2dcblx0ICogQHB1YmxpY1xuXHQgKiBAZXhwZXJpbWVudGFsIEFzIG9mIHZlcnNpb24gMS45MC4wXG5cdCAqIEBzaW5jZSAxLjkwLjBcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRzaG93TWVzc2FnZURpYWxvZyhtUGFyYW1ldGVycz86IGFueSk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IGN1c3RvbU1lc3NhZ2VzID0gbVBhcmFtZXRlcnMgJiYgbVBhcmFtZXRlcnMuY3VzdG9tTWVzc2FnZXMgPyBtUGFyYW1ldGVycy5jdXN0b21NZXNzYWdlcyA6IHVuZGVmaW5lZCxcblx0XHRcdG9PUEludGVybmFsQmluZGluZ0NvbnRleHQgPSB0aGlzLmJhc2UuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0Ly8gc2V0IGlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nIG9wZW4gc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBpbiB0aGUgY29udHJvbGxlciBleHRlbnNpb24gdG8gZGVjaWRlIHdoZXRoZXIgbWVzc2FnZSBkaWFsb2cgc2hvdWxkIG9wZW4gb3Igbm90XG5cdFx0aWYgKG1QYXJhbWV0ZXJzICYmIG1QYXJhbWV0ZXJzLmlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nT3BlbiAmJiBvT1BJbnRlcm5hbEJpbmRpbmdDb250ZXh0KSB7XG5cdFx0XHRvT1BJbnRlcm5hbEJpbmRpbmdDb250ZXh0LnNldFByb3BlcnR5KFwiaXNBY3Rpb25QYXJhbWV0ZXJEaWFsb2dPcGVuXCIsIHRydWUpO1xuXHRcdH1cblx0XHRjb25zdCBiU2hvd0JvdW5kTWVzc2FnZXMgPSB0aGlzLmdldFNob3dCb3VuZE1lc3NhZ2VzSW5NZXNzYWdlRGlhbG9nKCk7XG5cdFx0Y29uc3Qgb0JpbmRpbmdDb250ZXh0ID0gbVBhcmFtZXRlcnMgJiYgbVBhcmFtZXRlcnMuY29udGV4dCA/IG1QYXJhbWV0ZXJzLmNvbnRleHQgOiB0aGlzLmdldFZpZXcoKS5nZXRCaW5kaW5nQ29udGV4dCgpO1xuXHRcdGNvbnN0IGJFdGFnTWVzc2FnZSA9IG1QYXJhbWV0ZXJzICYmIG1QYXJhbWV0ZXJzLmJIYXNFdGFnTWVzc2FnZTtcblx0XHQvLyByZXNldCAgaXNBY3Rpb25QYXJhbWV0ZXJEaWFsb2dPcGVuXG5cdFx0Ly8gY2Fubm90IGRvIHRoaXMgb3BlcmF0aW9ucy5qcyBzaW5jZSBpdCBpcyBub3QgYXdhcmUgb2YgdGhlIHZpZXdcblx0XHRpZiAob09QSW50ZXJuYWxCaW5kaW5nQ29udGV4dCkge1xuXHRcdFx0b09QSW50ZXJuYWxCaW5kaW5nQ29udGV4dC5zZXRQcm9wZXJ0eShcImlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nT3BlblwiLCBmYWxzZSk7XG5cdFx0fVxuXHRcdHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZTogKHZhbHVlOiBhbnkpID0+IHZvaWQsIHJlamVjdDogKHJlYXNvbj86IGFueSkgPT4gdm9pZCkge1xuXHRcdFx0Ly8gd2UgaGF2ZSB0byBzZXQgYSB0aW1lb3V0IHRvIGJlIGFibGUgdG8gYWNjZXNzIHRoZSBtb3N0IHJlY2VudCBtZXNzYWdlc1xuXHRcdFx0c2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdC8vIFRPRE86IGdyZWF0IEFQSSAtIHdpbGwgYmUgY2hhbmdlZCBsYXRlclxuXHRcdFx0XHRtZXNzYWdlSGFuZGxpbmdcblx0XHRcdFx0XHQuc2hvd1VuYm91bmRNZXNzYWdlcyhcblx0XHRcdFx0XHRcdGN1c3RvbU1lc3NhZ2VzLFxuXHRcdFx0XHRcdFx0b0JpbmRpbmdDb250ZXh0LFxuXHRcdFx0XHRcdFx0YkV0YWdNZXNzYWdlLFxuXHRcdFx0XHRcdFx0YlNob3dCb3VuZE1lc3NhZ2VzLFxuXHRcdFx0XHRcdFx0bVBhcmFtZXRlcnM/LmVycm9yVGFyZ2V0c0luQVBNLFxuXHRcdFx0XHRcdFx0bVBhcmFtZXRlcnM/LmJTaG93TWVzc2FnZUJveCxcblx0XHRcdFx0XHRcdG1QYXJhbWV0ZXJzPy5jb25jdXJyZW50RWRpdEZsYWdcblx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0LnRoZW4ocmVzb2x2ZSlcblx0XHRcdFx0XHQuY2F0Y2gocmVqZWN0KTtcblx0XHRcdH0sIDApO1xuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFlvdSBjYW4gcmVtb3ZlIHRoZSBleGlzdGluZyB0cmFuc2l0aW9uIG1lc3NhZ2UgZnJvbSB0aGUgbWVzc2FnZSBtb2RlbCB3aXRoIHRoaXMgbWV0aG9kLlxuXHQgKiBXaXRoIGV2ZXJ5IHVzZXIgaW50ZXJhY3Rpb24gdGhhdCBjYXVzZXMgc2VydmVyIGNvbW11bmljYXRpb24gKGxpa2UgY2xpY2tpbmcgb24gYW4gYWN0aW9uLCBjaGFuZ2luZyBkYXRhKSxcblx0ICogdGhpcyBtZXRob2QgcmVtb3ZlcyB0aGUgZXhpc3RpbmcgdHJhbnNpdGlvbiBtZXNzYWdlcyBmcm9tIHRoZSBtZXNzYWdlIG1vZGVsLlxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IFtrZWVwQm91bmRNZXNzYWdlXSBDaGVja3MgaWYgdGhlIGJvdW5kIHRyYW5zaXRpb24gbWVzc2FnZXMgYXJlIG5vdCB0byBiZSByZW1vdmVkXG5cdCAqXG5cdCAqIEBhbGlhcyBzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5NZXNzYWdlSGFuZGxlciNyZW1vdmVzVHJhbnNpdGlvbk1lc3NhZ2VzXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0cmVtb3ZlVHJhbnNpdGlvbk1lc3NhZ2VzKGtlZXBCb3VuZE1lc3NhZ2U/OiBib29sZWFuKSB7XG5cdFx0aWYgKCFrZWVwQm91bmRNZXNzYWdlKSB7XG5cdFx0XHRtZXNzYWdlSGFuZGxpbmcucmVtb3ZlQm91bmRUcmFuc2l0aW9uTWVzc2FnZXMoKTtcblx0XHR9XG5cdFx0bWVzc2FnZUhhbmRsaW5nLnJlbW92ZVVuYm91bmRUcmFuc2l0aW9uTWVzc2FnZXMoKTtcblx0fVxuXG5cdF9jaGVja05hdmlnYXRpb25Ub01lc3NhZ2VQYWdlKG1QYXJhbWV0ZXJzOiBhbnkpIHtcblx0XHRjb25zdCBhVW5ib3VuZE1lc3NhZ2VzID0gbWVzc2FnZUhhbmRsaW5nLmdldE1lc3NhZ2VzKCk7XG5cdFx0Y29uc3QgYlNob3dCb3VuZFRyYW5zaXRpb25NZXNzYWdlcyA9IHRoaXMuZ2V0U2hvd0JvdW5kTWVzc2FnZXNJbk1lc3NhZ2VEaWFsb2coKTtcblx0XHRjb25zdCBhQm91bmRUcmFuc2l0aW9uTWVzc2FnZXMgPSBiU2hvd0JvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzID8gbWVzc2FnZUhhbmRsaW5nLmdldE1lc3NhZ2VzKHRydWUsIHRydWUpIDogW107XG5cdFx0Y29uc3QgYUN1c3RvbU1lc3NhZ2VzID0gbVBhcmFtZXRlcnMgJiYgbVBhcmFtZXRlcnMuY3VzdG9tTWVzc2FnZXMgPyBtUGFyYW1ldGVycy5jdXN0b21NZXNzYWdlcyA6IFtdO1xuXHRcdGNvbnN0IGJJc1N0aWNreUVkaXRNb2RlID0gQ29tbW9uVXRpbHMuaXNTdGlja3lFZGl0TW9kZSh0aGlzLmJhc2UuZ2V0VmlldygpKTtcblx0XHRsZXQgbU1lc3NhZ2VQYWdlUGFyYW1ldGVycztcblxuXHRcdC8vIFRPRE86IFN0aWNrIG1vZGUgY2hlY2sgaXMgb2theSBhcyBsb25nIGFzIHRoZSBjb250cm9sbGVyIGV4dGVuc2lvbiBpcyB1c2VkIHdpdGggc2FwLmZlLmNvcmUgYW5kIHNhcC5mZS5jb3JlLkFwcENvbXBvbmVudC5cblx0XHQvLyBJdCBtaWdodCBiZSBiZXR0ZXIgdG8gcHJvdmlkZSBhbiBleHRlbnNpb24gdG8gdGhlIGNvbnN1bWVyIG9mIHRoZSBjb250cm9sbGVyIGV4dGVuc2lvbiB0byBwcm92aWRlIHRoaXMgdmFsdWUuXG5cblx0XHQvLyBUaGUgbWVzc2FnZSBwYWdlIGNhbiBvbmx5IHNob3cgMSBtZXNzYWdlIHRvZGF5LCBzbyB3ZSBuYXZpZ2F0ZSB0byBpdCB3aGVuIDpcblx0XHQvLyAxLiBUaGVyZSBhcmUgbm8gYm91bmQgdHJhbnNpdGlvbiBtZXNzYWdlcyB0byBzaG93LFxuXHRcdC8vIDIuIFRoZXJlIGFyZSBubyBjdXN0b20gbWVzc2FnZXMgdG8gc2hvdywgJlxuXHRcdC8vIDMuIFRoZXJlIGlzIGV4YWN0bHkgMSB1bmJvdW5kIG1lc3NhZ2UgaW4gdGhlIG1lc3NhZ2UgbW9kZWwgd2l0aCBzdGF0dXNDb2RlPTUwMyBhbmQgcmV0cnktQWZ0ZXIgYXZhaWxhYmxlXG5cdFx0Ly8gNC4gcmV0cnlBZnRlciBpcyBncmVhdGVyIHRoYW4gMTIwIHNlY29uZHNcblx0XHQvL1xuXHRcdC8vIEluIEFkZGl0aW9uLCBuYXZpZ2F0aW5nIGF3YXkgZnJvbSBhIHN0aWNreSBzZXNzaW9uIHdpbGwgZGVzdHJveSB0aGUgc2Vzc2lvbiBzbyB3ZSBkbyBub3QgbmF2aWdhdGUgdG8gbWVzc2FnZSBwYWdlIGZvciBub3cuXG5cdFx0Ly8gVE9ETzogY2hlY2sgaWYgbmF2aWdhdGlvbiBzaG91bGQgYmUgZG9uZSBpbiBzdGlja3kgZWRpdCBtb2RlLlxuXHRcdGlmIChtUGFyYW1ldGVycyAmJiBtUGFyYW1ldGVycy5pc0RhdGFSZWNlaXZlZEVycm9yKSB7XG5cdFx0XHRtTWVzc2FnZVBhZ2VQYXJhbWV0ZXJzID0ge1xuXHRcdFx0XHR0aXRsZTogbVBhcmFtZXRlcnMudGl0bGUsXG5cdFx0XHRcdGRlc2NyaXB0aW9uOiBtUGFyYW1ldGVycy5kZXNjcmlwdGlvbixcblx0XHRcdFx0bmF2aWdhdGVCYWNrVG9PcmlnaW46IHRydWVcblx0XHRcdH07XG5cdFx0fSBlbHNlIGlmIChcblx0XHRcdCFiSXNTdGlja3lFZGl0TW9kZSAmJlxuXHRcdFx0IWFCb3VuZFRyYW5zaXRpb25NZXNzYWdlcy5sZW5ndGggJiZcblx0XHRcdCFhQ3VzdG9tTWVzc2FnZXMubGVuZ3RoICYmXG5cdFx0XHQoYVVuYm91bmRNZXNzYWdlcy5sZW5ndGggPT09IDEgfHwgKG1QYXJhbWV0ZXJzICYmIG1QYXJhbWV0ZXJzLmlzSW5pdGlhbExvYWQ1MDNFcnJvcikpXG5cdFx0KSB7XG5cdFx0XHRjb25zdCBvTWVzc2FnZSA9IGFVbmJvdW5kTWVzc2FnZXNbMF0sXG5cdFx0XHRcdG9UZWNobmljYWxEZXRhaWxzID0gb01lc3NhZ2UuZ2V0VGVjaG5pY2FsRGV0YWlscygpO1xuXHRcdFx0bGV0IHNSZXRyeUFmdGVyTWVzc2FnZTtcblx0XHRcdGlmIChvVGVjaG5pY2FsRGV0YWlscyAmJiBvVGVjaG5pY2FsRGV0YWlscy5odHRwU3RhdHVzID09PSA1MDMpIHtcblx0XHRcdFx0aWYgKG9UZWNobmljYWxEZXRhaWxzLnJldHJ5QWZ0ZXIpIHtcblx0XHRcdFx0XHRjb25zdCBpU2Vjb25kc0JlZm9yZVJldHJ5ID0gdGhpcy5fZ2V0U2Vjb25kc0JlZm9yZVJldHJ5QWZ0ZXIob1RlY2huaWNhbERldGFpbHMucmV0cnlBZnRlcik7XG5cdFx0XHRcdFx0aWYgKGlTZWNvbmRzQmVmb3JlUmV0cnkgPiAxMjApIHtcblx0XHRcdFx0XHRcdC8vIFRPRE86IEZvciBub3cgbGV0J3Mga2VlcCBnZXRSZXRyeUFmdGVyTWVzc2FnZSBpbiBtZXNzYWdlSGFuZGxpbmcgYmVjYXVzZSBpdCBpcyBuZWVkZWQgYWxzbyBieSB0aGUgZGlhbG9nLlxuXHRcdFx0XHRcdFx0Ly8gV2UgY2FuIHBsYW4gdG8gbW92ZSB0aGlzIGFuZCB0aGUgZGlhbG9nIGxvZ2ljIGJvdGggdG8gbWVzc2FnZUhhbmRsZXIgY29udHJvbGxlciBleHRlbnNpb24gaWYgcmVxdWlyZWQuXG5cdFx0XHRcdFx0XHRzUmV0cnlBZnRlck1lc3NhZ2UgPSBtZXNzYWdlSGFuZGxpbmcuZ2V0UmV0cnlBZnRlck1lc3NhZ2Uob01lc3NhZ2UpO1xuXHRcdFx0XHRcdFx0bU1lc3NhZ2VQYWdlUGFyYW1ldGVycyA9IHtcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHNSZXRyeUFmdGVyTWVzc2FnZSA/IHNSZXRyeUFmdGVyTWVzc2FnZSArIFwiIFwiICsgb01lc3NhZ2UuZ2V0TWVzc2FnZSgpIDogb01lc3NhZ2UuZ2V0TWVzc2FnZSgpLFxuXHRcdFx0XHRcdFx0XHRuYXZpZ2F0ZUJhY2tUb09yaWdpbjogdHJ1ZVxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0c1JldHJ5QWZ0ZXJNZXNzYWdlID0gbWVzc2FnZUhhbmRsaW5nLmdldFJldHJ5QWZ0ZXJNZXNzYWdlKG9NZXNzYWdlKTtcblx0XHRcdFx0XHRtTWVzc2FnZVBhZ2VQYXJhbWV0ZXJzID0ge1xuXHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHNSZXRyeUFmdGVyTWVzc2FnZSA/IHNSZXRyeUFmdGVyTWVzc2FnZSArIFwiIFwiICsgb01lc3NhZ2UuZ2V0TWVzc2FnZSgpIDogb01lc3NhZ2UuZ2V0TWVzc2FnZSgpLFxuXHRcdFx0XHRcdFx0bmF2aWdhdGVCYWNrVG9PcmlnaW46IHRydWVcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBtTWVzc2FnZVBhZ2VQYXJhbWV0ZXJzO1xuXHR9XG5cblx0X2dldFNlY29uZHNCZWZvcmVSZXRyeUFmdGVyKGRSZXRyeUFmdGVyOiBhbnkpIHtcblx0XHRjb25zdCBkQ3VycmVudERhdGVUaW1lID0gbmV3IERhdGUoKSxcblx0XHRcdGlDdXJyZW50RGF0ZVRpbWVJbk1pbGxpU2Vjb25kcyA9IGRDdXJyZW50RGF0ZVRpbWUuZ2V0VGltZSgpLFxuXHRcdFx0aVJldHJ5QWZ0ZXJEYXRlVGltZUluTWlsbGlTZWNvbmRzID0gZFJldHJ5QWZ0ZXIuZ2V0VGltZSgpLFxuXHRcdFx0aVNlY29uZHNCZWZvcmVSZXRyeSA9IChpUmV0cnlBZnRlckRhdGVUaW1lSW5NaWxsaVNlY29uZHMgLSBpQ3VycmVudERhdGVUaW1lSW5NaWxsaVNlY29uZHMpIC8gMTAwMDtcblx0XHRyZXR1cm4gaVNlY29uZHNCZWZvcmVSZXRyeTtcblx0fVxuXHQvKipcblx0ICogU2hvd3MgYSBtZXNzYWdlIHBhZ2Ugb3IgYSBtZXNzYWdlIGRpYWxvZyBiYXNlZCBvbiB0aGUgbWVzc2FnZXMgaW4gdGhlIG1lc3NhZ2UgZGlhbG9nLlxuXHQgKiBAcGFyYW0gW21QYXJhbWV0ZXJzXVxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZX0gQSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgb25jZSB0aGUgdXNlciBjbG9zZXMgdGhlIG1lc3NhZ2UgZGlhbG9nIG9yIHdoZW4gbmF2aWdhdGlvbiB0byB0aGUgbWVzc2FnZSBwYWdlIGlzIGNvbXBsZXRlLiBJZiB0aGVyZSBhcmUgbm8gbWVzc2FnZXNcblx0ICogdG8gYmUgc2hvd24sIHRoZSBwcm9taXNlIGlzIHJlc29sdmVkIGltbWVkaWF0ZWx5XG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0c2hvd01lc3NhZ2VzKG1QYXJhbWV0ZXJzPzogYW55KSB7XG5cdFx0Y29uc3Qgb0FwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudCh0aGlzLmdldFZpZXcoKSk7XG5cdFx0bGV0IG1NZXNzYWdlUGFnZVBhcmFtZXRlcnM6IGFueTtcblx0XHRpZiAoIW9BcHBDb21wb25lbnQuX2lzRmNsRW5hYmxlZCgpKSB7XG5cdFx0XHRtTWVzc2FnZVBhZ2VQYXJhbWV0ZXJzID0gdGhpcy5fY2hlY2tOYXZpZ2F0aW9uVG9NZXNzYWdlUGFnZShtUGFyYW1ldGVycyk7XG5cdFx0fVxuXHRcdGlmIChtTWVzc2FnZVBhZ2VQYXJhbWV0ZXJzKSB7XG5cdFx0XHQvLyBuYXZpZ2F0ZSB0byBtZXNzYWdlIHBhZ2UuXG5cdFx0XHQvLyBoYW5kbGVyIGJlZm9yZSBwYWdlIG5hdmlnYXRpb24gaXMgdHJpZ2dlcmVkLCBmb3IgZXhhbXBsZSB0byBjbG9zZSB0aGUgYWN0aW9uIHBhcmFtZXRlciBkaWFsb2dcblx0XHRcdG1QYXJhbWV0ZXJzICYmIG1QYXJhbWV0ZXJzLm1lc3NhZ2VQYWdlTmF2aWdhdGlvbkNhbGxiYWNrICYmIG1QYXJhbWV0ZXJzLm1lc3NhZ2VQYWdlTmF2aWdhdGlvbkNhbGxiYWNrKCk7XG5cblx0XHRcdG1NZXNzYWdlUGFnZVBhcmFtZXRlcnMuaGFuZGxlU2hlbGxCYWNrID0gIShtUGFyYW1ldGVycyAmJiBtUGFyYW1ldGVycy5zaGVsbEJhY2spO1xuXHRcdFx0Ly8gVE9ETzogVXNlIElsbHVzdHJhdGVkIG1lc3NhZ2UgaW5zdGVhZCBvZiBub3JtYWwgbWVzc2FnZSBwYWdlXG5cdFx0XHQvLyBUT0RPOiBSZXR1cm4gdmFsdWUgbmVlZHMgdG8gcHJvdmlkZWQgYnV0IHNpbmNlIHRoaXMgZnVuY3Rpb24gaXMgcHJpdmF0ZSBmb3Igbm93IGhlbmNlIHdlIGNhbiBza2lwIHRoaXMuXG5cdFx0XHR0aGlzLnJlbW92ZVRyYW5zaXRpb25NZXNzYWdlcygpO1xuXHRcdFx0Y29uc3Qgb1Jlc291cmNlQnVuZGxlID0gKENvcmUgYXMgQ29yZUV4KS5nZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUoXCJzYXAuZmUuY29yZVwiKTtcblx0XHRcdGlmICh0aGlzLmJhc2UuX3JvdXRpbmcpIHtcblx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBhbnksIHJlamVjdDogYW55KSA9PiB7XG5cdFx0XHRcdFx0Ly8gd2UgaGF2ZSB0byBzZXQgYSB0aW1lb3V0IHRvIGJlIGFibGUgdG8gYWNjZXNzIHRoZSBtb3N0IHJlY2VudCBtZXNzYWdlc1xuXHRcdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdFx0Ly8gVE9ETzogZ3JlYXQgQVBJIC0gd2lsbCBiZSBjaGFuZ2VkIGxhdGVyXG5cdFx0XHRcdFx0XHR0aGlzLmJhc2UuX3JvdXRpbmdcblx0XHRcdFx0XHRcdFx0Lm5hdmlnYXRlVG9NZXNzYWdlUGFnZShcblx0XHRcdFx0XHRcdFx0XHRtUGFyYW1ldGVycyAmJiBtUGFyYW1ldGVycy5pc0RhdGFSZWNlaXZlZEVycm9yXG5cdFx0XHRcdFx0XHRcdFx0XHQ/IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19DT01NT05fU0FQRkVfREFUQV9SRUNFSVZFRF9FUlJPUlwiKVxuXHRcdFx0XHRcdFx0XHRcdFx0OiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfTUVTU0FHRV9IQU5ETElOR19TQVBGRV81MDNfVElUTEVcIiksXG5cdFx0XHRcdFx0XHRcdFx0bU1lc3NhZ2VQYWdlUGFyYW1ldGVyc1xuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdC50aGVuKHJlc29sdmUpXG5cdFx0XHRcdFx0XHRcdC5jYXRjaChyZWplY3QpO1xuXHRcdFx0XHRcdH0sIDApO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gbmF2aWdhdGUgdG8gbWVzc2FnZSBkaWFsb2dcblx0XHRcdHJldHVybiB0aGlzLnNob3dNZXNzYWdlRGlhbG9nKG1QYXJhbWV0ZXJzKTtcblx0XHR9XG5cdH1cbn1cbmV4cG9ydCBkZWZhdWx0IE1lc3NhZ2VIYW5kbGVyO1xuIl19
233
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1lc3NhZ2VIYW5kbGVyLnRzIl0sIm5hbWVzIjpbIk1lc3NhZ2VIYW5kbGVyIiwiZGVmaW5lVUk1Q2xhc3MiLCJwcml2YXRlRXh0ZW5zaW9uIiwiZXh0ZW5zaWJsZSIsIk92ZXJyaWRlRXhlY3V0aW9uIiwiSW5zdGVhZCIsInB1YmxpY0V4dGVuc2lvbiIsImZpbmFsRXh0ZW5zaW9uIiwiZ2V0U2hvd0JvdW5kTWVzc2FnZXNJbk1lc3NhZ2VEaWFsb2ciLCJzaG93TWVzc2FnZURpYWxvZyIsIm1QYXJhbWV0ZXJzIiwiY3VzdG9tTWVzc2FnZXMiLCJ1bmRlZmluZWQiLCJvT1BJbnRlcm5hbEJpbmRpbmdDb250ZXh0IiwiYmFzZSIsImdldFZpZXciLCJnZXRCaW5kaW5nQ29udGV4dCIsImlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nT3BlbiIsInNldFByb3BlcnR5IiwiYlNob3dCb3VuZE1lc3NhZ2VzIiwib0JpbmRpbmdDb250ZXh0IiwiY29udGV4dCIsImJFdGFnTWVzc2FnZSIsImJIYXNFdGFnTWVzc2FnZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0Iiwic2V0VGltZW91dCIsIm1lc3NhZ2VIYW5kbGluZyIsInNob3dVbmJvdW5kTWVzc2FnZXMiLCJzaG93RXJyb3JJbkFQRCIsImJTaG93TWVzc2FnZUJveCIsImNvbmN1cnJlbnRFZGl0RmxhZyIsInRoZW4iLCJjYXRjaCIsInJlbW92ZVRyYW5zaXRpb25NZXNzYWdlcyIsImtlZXBCb3VuZE1lc3NhZ2UiLCJrZWVwVW5ib3VuZE1lc3NhZ2UiLCJzUGF0aFRvQmVSZW1vdmVkIiwicmVtb3ZlQm91bmRUcmFuc2l0aW9uTWVzc2FnZXMiLCJyZW1vdmVVbmJvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzIiwiX2NoZWNrTmF2aWdhdGlvblRvTWVzc2FnZVBhZ2UiLCJhVW5ib3VuZE1lc3NhZ2VzIiwiZ2V0TWVzc2FnZXMiLCJiU2hvd0JvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzIiwiYUJvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzIiwiYUN1c3RvbU1lc3NhZ2VzIiwiYklzU3RpY2t5RWRpdE1vZGUiLCJDb21tb25VdGlscyIsImlzU3RpY2t5RWRpdE1vZGUiLCJtTWVzc2FnZVBhZ2VQYXJhbWV0ZXJzIiwiaXNEYXRhUmVjZWl2ZWRFcnJvciIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJuYXZpZ2F0ZUJhY2tUb09yaWdpbiIsImxlbmd0aCIsImlzSW5pdGlhbExvYWQ1MDNFcnJvciIsIm9NZXNzYWdlIiwib1RlY2huaWNhbERldGFpbHMiLCJnZXRUZWNobmljYWxEZXRhaWxzIiwic1JldHJ5QWZ0ZXJNZXNzYWdlIiwiaHR0cFN0YXR1cyIsInJldHJ5QWZ0ZXIiLCJpU2Vjb25kc0JlZm9yZVJldHJ5IiwiX2dldFNlY29uZHNCZWZvcmVSZXRyeUFmdGVyIiwiZ2V0UmV0cnlBZnRlck1lc3NhZ2UiLCJnZXRNZXNzYWdlIiwiZFJldHJ5QWZ0ZXIiLCJkQ3VycmVudERhdGVUaW1lIiwiRGF0ZSIsImlDdXJyZW50RGF0ZVRpbWVJbk1pbGxpU2Vjb25kcyIsImdldFRpbWUiLCJpUmV0cnlBZnRlckRhdGVUaW1lSW5NaWxsaVNlY29uZHMiLCJzaG93TWVzc2FnZXMiLCJvQXBwQ29tcG9uZW50IiwiZ2V0QXBwQ29tcG9uZW50IiwiX2lzRmNsRW5hYmxlZCIsIm1lc3NhZ2VQYWdlTmF2aWdhdGlvbkNhbGxiYWNrIiwiaGFuZGxlU2hlbGxCYWNrIiwic2hlbGxCYWNrIiwib1Jlc291cmNlQnVuZGxlIiwiQ29yZSIsImdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZSIsIl9yb3V0aW5nIiwibmF2aWdhdGVUb01lc3NhZ2VQYWdlIiwiZ2V0VGV4dCIsIkNvbnRyb2xsZXJFeHRlbnNpb24iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7TUFFTUEsYyxXQURMQyxjQUFjLENBQUMsaURBQUQsQyxVQWViQyxnQkFBZ0IsRSxVQUNoQkMsVUFBVSxD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LFdBZE0sQ0FBUDtBQWVBO0FBQ0QsT0E3QkQsTUE2Qk87QUFDTjtBQUNBLGVBQU8sS0FBS2pCLGlCQUFMLENBQXVCQyxXQUF2QixDQUFQO0FBQ0E7QUFDRCxLOzs7SUFoTjJCNEUsbUI7U0FrTmR0RixjIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgbWVzc2FnZUhhbmRsaW5nIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9tZXNzYWdlSGFuZGxlci9tZXNzYWdlSGFuZGxpbmdcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBleHRlbnNpYmxlLCBmaW5hbEV4dGVuc2lvbiwgcHJpdmF0ZUV4dGVuc2lvbiwgcHVibGljRXh0ZW5zaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSB7IEludGVybmFsTW9kZWxDb250ZXh0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB0eXBlIFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IENvcmUgZnJvbSBcInNhcC91aS9jb3JlL0NvcmVcIjtcbmltcG9ydCBDb250cm9sbGVyRXh0ZW5zaW9uIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvQ29udHJvbGxlckV4dGVuc2lvblwiO1xuaW1wb3J0IE92ZXJyaWRlRXhlY3V0aW9uIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvT3ZlcnJpZGVFeGVjdXRpb25cIjtcbmltcG9ydCB0eXBlIHsgQ29yZUV4IH0gZnJvbSBcInR5cGVzL2V4dGVuc2lvbl90eXBlc1wiO1xuXG4vKipcbiAqIEEgY29udHJvbGxlciBleHRlbnNpb24gb2ZmZXJpbmcgbWVzc2FnZSBoYW5kbGluZy5cbiAqXG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAcHVibGljXG4gKiBAZXhwZXJpbWVudGFsIEFzIG9mIHZlcnNpb24gMS45MC4wXG4gKiBAc2luY2UgMS45MC4wXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLk1lc3NhZ2VIYW5kbGVyXCIpXG5jbGFzcyBNZXNzYWdlSGFuZGxlciBleHRlbmRzIENvbnRyb2xsZXJFeHRlbnNpb24ge1xuXHRwcm90ZWN0ZWQgYmFzZSE6IFBhZ2VDb250cm9sbGVyO1xuXHQvKipcblx0ICogRGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCBib3VuZCBtZXNzYWdlcyBhcmUgc2hvd24gaW4gdGhlIG1lc3NhZ2UgZGlhbG9nLlxuXHQgKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGlzIG1lYW50IHRvIGJlIGluZGl2aWR1YWxseSBvdmVycmlkZGVuIGJ5IGNvbnN1bWluZyBjb250cm9sbGVycywgYnV0IG5vdCB0byBiZSBjYWxsZWQgZGlyZWN0bHkuXG5cdCAqIFRoZSBvdmVycmlkZSBleGVjdXRpb24gaXM6IHtAbGluayBzYXAudWkuY29yZS5tdmMuT3ZlcnJpZGVFeGVjdXRpb24uSW5zdGVhZH0uXG5cdCAqXG5cdCAqIElmIHRoZSBib3VuZCBtZXNzYWdlcyBhcmUgc2hvd24gdG8gdGhlIHVzZXIgd2l0aCBhIGRpZmZlcmVudCBjb250cm9sIGxpa2UgdGhlIChUT0RPOkxpbmspIE1lc3NhZ2VCdXR0b25cblx0ICogdGhpcyBtZXRob2QgaGFzIHRvIGJlIG92ZXJyaWRkZW4uXG5cdCAqXG5cdCAqIEByZXR1cm5zIERldGVybWluZXMgd2hldGhlciBvciBub3QgYm91bmQgbWVzc2FnZXMgYXJlIHNob3duIGluIHRoZSBtZXNzYWdlIGRpYWxvZy5cblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBwcml2YXRlRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoT3ZlcnJpZGVFeGVjdXRpb24uSW5zdGVhZClcblx0Z2V0U2hvd0JvdW5kTWVzc2FnZXNJbk1lc3NhZ2VEaWFsb2coKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHQvKipcblx0ICogU2hvd3MgYSBtZXNzYWdlIGRpYWxvZyB3aXRoIHRyYW5zaXRpb24gbWVzc2FnZXMgaWYgdGhlcmUgYXJlIGFueS5cblx0ICogVGhlIG1lc3NhZ2UgZGlhbG9nIGlzIHNob3duIGFzIGEgbW9kYWwgZGlhbG9nLiBPbmNlIHRoZSB1c2VyIGNvbmZpcm1zIHRoZSBkaWFsb2csIGFsbCB0cmFuc2l0aW9uIG1lc3NhZ2VzXG5cdCAqIGFyZSByZW1vdmVkIGZyb20gdGhlIG1lc3NhZ2UgbW9kZWwuIElmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgbWVzc2FnZSwgYSBsaXN0IG9mIG1lc3NhZ2VzIGlzIHNob3duLiBUaGUgdXNlclxuXHQgKiBjYW4gZmlsdGVyIG9uIG1lc3NhZ2UgdHlwZXMgYW5kIGNhbiBkaXNwbGF5IGRldGFpbHMgYXMgd2VsbCBhcyB0aGUgbG9uZyB0ZXh0LiBJZiB0aGVyZSBpcyBvbmUgbWVzc2FnZSxcblx0ICogdGhlIGRpYWxvZyBpbW1lZGlhdGVseSBzaG93cyB0aGUgZGV0YWlscyBvZiB0aGUgbWVzc2FnZS4gSWYgdGhlcmUgaXMganVzdCBvbmUgc3VjY2VzcyBtZXNzYWdlLCBhIG1lc3NhZ2Vcblx0ICogdG9hc3QgaXMgc2hvd24gaW5zdGVhZC5cblx0ICpcblx0ICogQHBhcmFtIG1QYXJhbWV0ZXJzIFBSSVZBVEVcblx0ICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgb25jZSB0aGUgdXNlciBjbG9zZXMgdGhlIGRpYWxvZy4gSWYgdGhlcmUgYXJlIG5vIG1lc3NhZ2VzXG5cdCAqIHRvIGJlIHNob3duLCB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZCBpbW1lZGlhdGVseVxuXHQgKiBAYWxpYXMgc2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuTWVzc2FnZUhhbmRsZXIjc2hvd01lc3NhZ2VEaWFsb2dcblx0ICogQHB1YmxpY1xuXHQgKiBAZXhwZXJpbWVudGFsIEFzIG9mIHZlcnNpb24gMS45MC4wXG5cdCAqIEBzaW5jZSAxLjkwLjBcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRzaG93TWVzc2FnZURpYWxvZyhtUGFyYW1ldGVycz86IGFueSk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IGN1c3RvbU1lc3NhZ2VzID0gbVBhcmFtZXRlcnMgJiYgbVBhcmFtZXRlcnMuY3VzdG9tTWVzc2FnZXMgPyBtUGFyYW1ldGVycy5jdXN0b21NZXNzYWdlcyA6IHVuZGVmaW5lZCxcblx0XHRcdG9PUEludGVybmFsQmluZGluZ0NvbnRleHQgPSB0aGlzLmJhc2UuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0Ly8gc2V0IGlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nIG9wZW4gc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBpbiB0aGUgY29udHJvbGxlciBleHRlbnNpb24gdG8gZGVjaWRlIHdoZXRoZXIgbWVzc2FnZSBkaWFsb2cgc2hvdWxkIG9wZW4gb3Igbm90XG5cdFx0aWYgKG1QYXJhbWV0ZXJzICYmIG1QYXJhbWV0ZXJzLmlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nT3BlbiAmJiBvT1BJbnRlcm5hbEJpbmRpbmdDb250ZXh0KSB7XG5cdFx0XHRvT1BJbnRlcm5hbEJpbmRpbmdDb250ZXh0LnNldFByb3BlcnR5KFwiaXNBY3Rpb25QYXJhbWV0ZXJEaWFsb2dPcGVuXCIsIHRydWUpO1xuXHRcdH1cblx0XHRjb25zdCBiU2hvd0JvdW5kTWVzc2FnZXMgPSB0aGlzLmdldFNob3dCb3VuZE1lc3NhZ2VzSW5NZXNzYWdlRGlhbG9nKCk7XG5cdFx0Y29uc3Qgb0JpbmRpbmdDb250ZXh0ID0gbVBhcmFtZXRlcnMgJiYgbVBhcmFtZXRlcnMuY29udGV4dCA/IG1QYXJhbWV0ZXJzLmNvbnRleHQgOiB0aGlzLmdldFZpZXcoKS5nZXRCaW5kaW5nQ29udGV4dCgpO1xuXHRcdGNvbnN0IGJFdGFnTWVzc2FnZSA9IG1QYXJhbWV0ZXJzICYmIG1QYXJhbWV0ZXJzLmJIYXNFdGFnTWVzc2FnZTtcblx0XHQvLyByZXNldCAgaXNBY3Rpb25QYXJhbWV0ZXJEaWFsb2dPcGVuXG5cdFx0Ly8gY2Fubm90IGRvIHRoaXMgb3BlcmF0aW9ucy5qcyBzaW5jZSBpdCBpcyBub3QgYXdhcmUgb2YgdGhlIHZpZXdcblx0XHRpZiAob09QSW50ZXJuYWxCaW5kaW5nQ29udGV4dCkge1xuXHRcdFx0b09QSW50ZXJuYWxCaW5kaW5nQ29udGV4dC5zZXRQcm9wZXJ0eShcImlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nT3BlblwiLCBmYWxzZSk7XG5cdFx0fVxuXHRcdHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZTogKHZhbHVlOiBhbnkpID0+IHZvaWQsIHJlamVjdDogKHJlYXNvbj86IGFueSkgPT4gdm9pZCkge1xuXHRcdFx0Ly8gd2UgaGF2ZSB0byBzZXQgYSB0aW1lb3V0IHRvIGJlIGFibGUgdG8gYWNjZXNzIHRoZSBtb3N0IHJlY2VudCBtZXNzYWdlc1xuXHRcdFx0c2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdC8vIFRPRE86IGdyZWF0IEFQSSAtIHdpbGwgYmUgY2hhbmdlZCBsYXRlclxuXHRcdFx0XHRtZXNzYWdlSGFuZGxpbmdcblx0XHRcdFx0XHQuc2hvd1VuYm91bmRNZXNzYWdlcyhcblx0XHRcdFx0XHRcdGN1c3RvbU1lc3NhZ2VzLFxuXHRcdFx0XHRcdFx0b0JpbmRpbmdDb250ZXh0LFxuXHRcdFx0XHRcdFx0YkV0YWdNZXNzYWdlLFxuXHRcdFx0XHRcdFx0YlNob3dCb3VuZE1lc3NhZ2VzLFxuXHRcdFx0XHRcdFx0bVBhcmFtZXRlcnM/LnNob3dFcnJvckluQVBELFxuXHRcdFx0XHRcdFx0bVBhcmFtZXRlcnM/LmJTaG93TWVzc2FnZUJveCxcblx0XHRcdFx0XHRcdG1QYXJhbWV0ZXJzPy5jb25jdXJyZW50RWRpdEZsYWdcblx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0LnRoZW4ocmVzb2x2ZSlcblx0XHRcdFx0XHQuY2F0Y2gocmVqZWN0KTtcblx0XHRcdH0sIDApO1xuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFlvdSBjYW4gcmVtb3ZlIHRoZSBleGlzdGluZyB0cmFuc2l0aW9uIG1lc3NhZ2UgZnJvbSB0aGUgbWVzc2FnZSBtb2RlbCB3aXRoIHRoaXMgbWV0aG9kLlxuXHQgKiBXaXRoIGV2ZXJ5IHVzZXIgaW50ZXJhY3Rpb24gdGhhdCBjYXVzZXMgc2VydmVyIGNvbW11bmljYXRpb24gKGxpa2UgY2xpY2tpbmcgb24gYW4gYWN0aW9uLCBjaGFuZ2luZyBkYXRhKSxcblx0ICogdGhpcyBtZXRob2QgcmVtb3ZlcyB0aGUgZXhpc3RpbmcgdHJhbnNpdGlvbiBtZXNzYWdlcyBmcm9tIHRoZSBtZXNzYWdlIG1vZGVsLlxuXHQgKlxuXHQgKiBAcGFyYW0gW2tlZXBCb3VuZE1lc3NhZ2VdIENoZWNrcyBpZiB0aGUgYm91bmQgdHJhbnNpdGlvbiBtZXNzYWdlcyBhcmUgbm90IHRvIGJlIHJlbW92ZWRcblx0ICogQHBhcmFtIGtlZXBVbmJvdW5kTWVzc2FnZVxuXHQgKiBAcGFyYW0gc1BhdGhUb0JlUmVtb3ZlZFxuXHQgKiBAYWxpYXMgc2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuTWVzc2FnZUhhbmRsZXIjcmVtb3Zlc1RyYW5zaXRpb25NZXNzYWdlc1xuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdHJlbW92ZVRyYW5zaXRpb25NZXNzYWdlcyhrZWVwQm91bmRNZXNzYWdlPzogYm9vbGVhbiwga2VlcFVuYm91bmRNZXNzYWdlPzogYm9vbGVhbiwgc1BhdGhUb0JlUmVtb3ZlZD86IHN0cmluZykge1xuXHRcdGlmICgha2VlcEJvdW5kTWVzc2FnZSkge1xuXHRcdFx0bWVzc2FnZUhhbmRsaW5nLnJlbW92ZUJvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzKHNQYXRoVG9CZVJlbW92ZWQpO1xuXHRcdH1cblx0XHRpZiAoIWtlZXBVbmJvdW5kTWVzc2FnZSkge1xuXHRcdFx0bWVzc2FnZUhhbmRsaW5nLnJlbW92ZVVuYm91bmRUcmFuc2l0aW9uTWVzc2FnZXMoKTtcblx0XHR9XG5cdH1cblxuXHRfY2hlY2tOYXZpZ2F0aW9uVG9NZXNzYWdlUGFnZShtUGFyYW1ldGVyczogYW55KSB7XG5cdFx0Y29uc3QgYVVuYm91bmRNZXNzYWdlcyA9IG1lc3NhZ2VIYW5kbGluZy5nZXRNZXNzYWdlcygpO1xuXHRcdGNvbnN0IGJTaG93Qm91bmRUcmFuc2l0aW9uTWVzc2FnZXMgPSB0aGlzLmdldFNob3dCb3VuZE1lc3NhZ2VzSW5NZXNzYWdlRGlhbG9nKCk7XG5cdFx0Y29uc3QgYUJvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzID0gYlNob3dCb3VuZFRyYW5zaXRpb25NZXNzYWdlcyA/IG1lc3NhZ2VIYW5kbGluZy5nZXRNZXNzYWdlcyh0cnVlLCB0cnVlKSA6IFtdO1xuXHRcdGNvbnN0IGFDdXN0b21NZXNzYWdlcyA9IG1QYXJhbWV0ZXJzICYmIG1QYXJhbWV0ZXJzLmN1c3RvbU1lc3NhZ2VzID8gbVBhcmFtZXRlcnMuY3VzdG9tTWVzc2FnZXMgOiBbXTtcblx0XHRjb25zdCBiSXNTdGlja3lFZGl0TW9kZSA9IENvbW1vblV0aWxzLmlzU3RpY2t5RWRpdE1vZGUodGhpcy5iYXNlLmdldFZpZXcoKSk7XG5cdFx0bGV0IG1NZXNzYWdlUGFnZVBhcmFtZXRlcnM7XG5cblx0XHQvLyBUT0RPOiBTdGljayBtb2RlIGNoZWNrIGlzIG9rYXkgYXMgbG9uZyBhcyB0aGUgY29udHJvbGxlciBleHRlbnNpb24gaXMgdXNlZCB3aXRoIHNhcC5mZS5jb3JlIGFuZCBzYXAuZmUuY29yZS5BcHBDb21wb25lbnQuXG5cdFx0Ly8gSXQgbWlnaHQgYmUgYmV0dGVyIHRvIHByb3ZpZGUgYW4gZXh0ZW5zaW9uIHRvIHRoZSBjb25zdW1lciBvZiB0aGUgY29udHJvbGxlciBleHRlbnNpb24gdG8gcHJvdmlkZSB0aGlzIHZhbHVlLlxuXG5cdFx0Ly8gVGhlIG1lc3NhZ2UgcGFnZSBjYW4gb25seSBzaG93IDEgbWVzc2FnZSB0b2RheSwgc28gd2UgbmF2aWdhdGUgdG8gaXQgd2hlbiA6XG5cdFx0Ly8gMS4gVGhlcmUgYXJlIG5vIGJvdW5kIHRyYW5zaXRpb24gbWVzc2FnZXMgdG8gc2hvdyxcblx0XHQvLyAyLiBUaGVyZSBhcmUgbm8gY3VzdG9tIG1lc3NhZ2VzIHRvIHNob3csICZcblx0XHQvLyAzLiBUaGVyZSBpcyBleGFjdGx5IDEgdW5ib3VuZCBtZXNzYWdlIGluIHRoZSBtZXNzYWdlIG1vZGVsIHdpdGggc3RhdHVzQ29kZT01MDMgYW5kIHJldHJ5LUFmdGVyIGF2YWlsYWJsZVxuXHRcdC8vIDQuIHJldHJ5QWZ0ZXIgaXMgZ3JlYXRlciB0aGFuIDEyMCBzZWNvbmRzXG5cdFx0Ly9cblx0XHQvLyBJbiBBZGRpdGlvbiwgbmF2aWdhdGluZyBhd2F5IGZyb20gYSBzdGlja3kgc2Vzc2lvbiB3aWxsIGRlc3Ryb3kgdGhlIHNlc3Npb24gc28gd2UgZG8gbm90IG5hdmlnYXRlIHRvIG1lc3NhZ2UgcGFnZSBmb3Igbm93LlxuXHRcdC8vIFRPRE86IGNoZWNrIGlmIG5hdmlnYXRpb24gc2hvdWxkIGJlIGRvbmUgaW4gc3RpY2t5IGVkaXQgbW9kZS5cblx0XHRpZiAobVBhcmFtZXRlcnMgJiYgbVBhcmFtZXRlcnMuaXNEYXRhUmVjZWl2ZWRFcnJvcikge1xuXHRcdFx0bU1lc3NhZ2VQYWdlUGFyYW1ldGVycyA9IHtcblx0XHRcdFx0dGl0bGU6IG1QYXJhbWV0ZXJzLnRpdGxlLFxuXHRcdFx0XHRkZXNjcmlwdGlvbjogbVBhcmFtZXRlcnMuZGVzY3JpcHRpb24sXG5cdFx0XHRcdG5hdmlnYXRlQmFja1RvT3JpZ2luOiB0cnVlXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSBpZiAoXG5cdFx0XHQhYklzU3RpY2t5RWRpdE1vZGUgJiZcblx0XHRcdCFhQm91bmRUcmFuc2l0aW9uTWVzc2FnZXMubGVuZ3RoICYmXG5cdFx0XHQhYUN1c3RvbU1lc3NhZ2VzLmxlbmd0aCAmJlxuXHRcdFx0KGFVbmJvdW5kTWVzc2FnZXMubGVuZ3RoID09PSAxIHx8IChtUGFyYW1ldGVycyAmJiBtUGFyYW1ldGVycy5pc0luaXRpYWxMb2FkNTAzRXJyb3IpKVxuXHRcdCkge1xuXHRcdFx0Y29uc3Qgb01lc3NhZ2UgPSBhVW5ib3VuZE1lc3NhZ2VzWzBdLFxuXHRcdFx0XHRvVGVjaG5pY2FsRGV0YWlscyA9IG9NZXNzYWdlLmdldFRlY2huaWNhbERldGFpbHMoKTtcblx0XHRcdGxldCBzUmV0cnlBZnRlck1lc3NhZ2U7XG5cdFx0XHRpZiAob1RlY2huaWNhbERldGFpbHMgJiYgb1RlY2huaWNhbERldGFpbHMuaHR0cFN0YXR1cyA9PT0gNTAzKSB7XG5cdFx0XHRcdGlmIChvVGVjaG5pY2FsRGV0YWlscy5yZXRyeUFmdGVyKSB7XG5cdFx0XHRcdFx0Y29uc3QgaVNlY29uZHNCZWZvcmVSZXRyeSA9IHRoaXMuX2dldFNlY29uZHNCZWZvcmVSZXRyeUFmdGVyKG9UZWNobmljYWxEZXRhaWxzLnJldHJ5QWZ0ZXIpO1xuXHRcdFx0XHRcdGlmIChpU2Vjb25kc0JlZm9yZVJldHJ5ID4gMTIwKSB7XG5cdFx0XHRcdFx0XHQvLyBUT0RPOiBGb3Igbm93IGxldCdzIGtlZXAgZ2V0UmV0cnlBZnRlck1lc3NhZ2UgaW4gbWVzc2FnZUhhbmRsaW5nIGJlY2F1c2UgaXQgaXMgbmVlZGVkIGFsc28gYnkgdGhlIGRpYWxvZy5cblx0XHRcdFx0XHRcdC8vIFdlIGNhbiBwbGFuIHRvIG1vdmUgdGhpcyBhbmQgdGhlIGRpYWxvZyBsb2dpYyBib3RoIHRvIG1lc3NhZ2VIYW5kbGVyIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGlmIHJlcXVpcmVkLlxuXHRcdFx0XHRcdFx0c1JldHJ5QWZ0ZXJNZXNzYWdlID0gbWVzc2FnZUhhbmRsaW5nLmdldFJldHJ5QWZ0ZXJNZXNzYWdlKG9NZXNzYWdlKTtcblx0XHRcdFx0XHRcdG1NZXNzYWdlUGFnZVBhcmFtZXRlcnMgPSB7XG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiBzUmV0cnlBZnRlck1lc3NhZ2UgPyBgJHtzUmV0cnlBZnRlck1lc3NhZ2V9ICR7b01lc3NhZ2UuZ2V0TWVzc2FnZSgpfWAgOiBvTWVzc2FnZS5nZXRNZXNzYWdlKCksXG5cdFx0XHRcdFx0XHRcdG5hdmlnYXRlQmFja1RvT3JpZ2luOiB0cnVlXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzUmV0cnlBZnRlck1lc3NhZ2UgPSBtZXNzYWdlSGFuZGxpbmcuZ2V0UmV0cnlBZnRlck1lc3NhZ2Uob01lc3NhZ2UpO1xuXHRcdFx0XHRcdG1NZXNzYWdlUGFnZVBhcmFtZXRlcnMgPSB7XG5cdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogc1JldHJ5QWZ0ZXJNZXNzYWdlID8gYCR7c1JldHJ5QWZ0ZXJNZXNzYWdlfSAke29NZXNzYWdlLmdldE1lc3NhZ2UoKX1gIDogb01lc3NhZ2UuZ2V0TWVzc2FnZSgpLFxuXHRcdFx0XHRcdFx0bmF2aWdhdGVCYWNrVG9PcmlnaW46IHRydWVcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBtTWVzc2FnZVBhZ2VQYXJhbWV0ZXJzO1xuXHR9XG5cblx0X2dldFNlY29uZHNCZWZvcmVSZXRyeUFmdGVyKGRSZXRyeUFmdGVyOiBhbnkpIHtcblx0XHRjb25zdCBkQ3VycmVudERhdGVUaW1lID0gbmV3IERhdGUoKSxcblx0XHRcdGlDdXJyZW50RGF0ZVRpbWVJbk1pbGxpU2Vjb25kcyA9IGRDdXJyZW50RGF0ZVRpbWUuZ2V0VGltZSgpLFxuXHRcdFx0aVJldHJ5QWZ0ZXJEYXRlVGltZUluTWlsbGlTZWNvbmRzID0gZFJldHJ5QWZ0ZXIuZ2V0VGltZSgpLFxuXHRcdFx0aVNlY29uZHNCZWZvcmVSZXRyeSA9IChpUmV0cnlBZnRlckRhdGVUaW1lSW5NaWxsaVNlY29uZHMgLSBpQ3VycmVudERhdGVUaW1lSW5NaWxsaVNlY29uZHMpIC8gMTAwMDtcblx0XHRyZXR1cm4gaVNlY29uZHNCZWZvcmVSZXRyeTtcblx0fVxuXHQvKipcblx0ICogU2hvd3MgYSBtZXNzYWdlIHBhZ2Ugb3IgYSBtZXNzYWdlIGRpYWxvZyBiYXNlZCBvbiB0aGUgbWVzc2FnZXMgaW4gdGhlIG1lc3NhZ2UgZGlhbG9nLlxuXHQgKlxuXHQgKiBAcGFyYW0gW21QYXJhbWV0ZXJzXVxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCBvbmNlIHRoZSB1c2VyIGNsb3NlcyB0aGUgbWVzc2FnZSBkaWFsb2cgb3Igd2hlbiBuYXZpZ2F0aW9uIHRvIHRoZSBtZXNzYWdlIHBhZ2UgaXMgY29tcGxldGUuIElmIHRoZXJlIGFyZSBubyBtZXNzYWdlc1xuXHQgKiB0byBiZSBzaG93biwgdGhlIHByb21pc2UgaXMgcmVzb2x2ZWQgaW1tZWRpYXRlbHlcblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRzaG93TWVzc2FnZXMobVBhcmFtZXRlcnM/OiBhbnkpIHtcblx0XHRjb25zdCBvQXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHRoaXMuZ2V0VmlldygpKTtcblx0XHRsZXQgbU1lc3NhZ2VQYWdlUGFyYW1ldGVyczogYW55O1xuXHRcdGlmICghb0FwcENvbXBvbmVudC5faXNGY2xFbmFibGVkKCkpIHtcblx0XHRcdG1NZXNzYWdlUGFnZVBhcmFtZXRlcnMgPSB0aGlzLl9jaGVja05hdmlnYXRpb25Ub01lc3NhZ2VQYWdlKG1QYXJhbWV0ZXJzKTtcblx0XHR9XG5cdFx0aWYgKG1NZXNzYWdlUGFnZVBhcmFtZXRlcnMpIHtcblx0XHRcdC8vIG5hdmlnYXRlIHRvIG1lc3NhZ2UgcGFnZS5cblx0XHRcdC8vIGhhbmRsZXIgYmVmb3JlIHBhZ2UgbmF2aWdhdGlvbiBpcyB0cmlnZ2VyZWQsIGZvciBleGFtcGxlIHRvIGNsb3NlIHRoZSBhY3Rpb24gcGFyYW1ldGVyIGRpYWxvZ1xuXHRcdFx0aWYgKG1QYXJhbWV0ZXJzICYmIG1QYXJhbWV0ZXJzLm1lc3NhZ2VQYWdlTmF2aWdhdGlvbkNhbGxiYWNrKSB7XG5cdFx0XHRcdG1QYXJhbWV0ZXJzLm1lc3NhZ2VQYWdlTmF2aWdhdGlvbkNhbGxiYWNrKCk7XG5cdFx0XHR9XG5cblx0XHRcdG1NZXNzYWdlUGFnZVBhcmFtZXRlcnMuaGFuZGxlU2hlbGxCYWNrID0gIShtUGFyYW1ldGVycyAmJiBtUGFyYW1ldGVycy5zaGVsbEJhY2spO1xuXHRcdFx0Ly8gVE9ETzogVXNlIElsbHVzdHJhdGVkIG1lc3NhZ2UgaW5zdGVhZCBvZiBub3JtYWwgbWVzc2FnZSBwYWdlXG5cdFx0XHQvLyBUT0RPOiBSZXR1cm4gdmFsdWUgbmVlZHMgdG8gcHJvdmlkZWQgYnV0IHNpbmNlIHRoaXMgZnVuY3Rpb24gaXMgcHJpdmF0ZSBmb3Igbm93IGhlbmNlIHdlIGNhbiBza2lwIHRoaXMuXG5cdFx0XHR0aGlzLnJlbW92ZVRyYW5zaXRpb25NZXNzYWdlcygpO1xuXHRcdFx0Y29uc3Qgb1Jlc291cmNlQnVuZGxlID0gKENvcmUgYXMgQ29yZUV4KS5nZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUoXCJzYXAuZmUuY29yZVwiKTtcblx0XHRcdGlmICh0aGlzLmJhc2UuX3JvdXRpbmcpIHtcblx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBhbnksIHJlamVjdDogYW55KSA9PiB7XG5cdFx0XHRcdFx0Ly8gd2UgaGF2ZSB0byBzZXQgYSB0aW1lb3V0IHRvIGJlIGFibGUgdG8gYWNjZXNzIHRoZSBtb3N0IHJlY2VudCBtZXNzYWdlc1xuXHRcdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdFx0Ly8gVE9ETzogZ3JlYXQgQVBJIC0gd2lsbCBiZSBjaGFuZ2VkIGxhdGVyXG5cdFx0XHRcdFx0XHR0aGlzLmJhc2UuX3JvdXRpbmdcblx0XHRcdFx0XHRcdFx0Lm5hdmlnYXRlVG9NZXNzYWdlUGFnZShcblx0XHRcdFx0XHRcdFx0XHRtUGFyYW1ldGVycyAmJiBtUGFyYW1ldGVycy5pc0RhdGFSZWNlaXZlZEVycm9yXG5cdFx0XHRcdFx0XHRcdFx0XHQ/IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19DT01NT05fU0FQRkVfREFUQV9SRUNFSVZFRF9FUlJPUlwiKVxuXHRcdFx0XHRcdFx0XHRcdFx0OiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfTUVTU0FHRV9IQU5ETElOR19TQVBGRV81MDNfVElUTEVcIiksXG5cdFx0XHRcdFx0XHRcdFx0bU1lc3NhZ2VQYWdlUGFyYW1ldGVyc1xuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdC50aGVuKHJlc29sdmUpXG5cdFx0XHRcdFx0XHRcdC5jYXRjaChyZWplY3QpO1xuXHRcdFx0XHRcdH0sIDApO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gbmF2aWdhdGUgdG8gbWVzc2FnZSBkaWFsb2dcblx0XHRcdHJldHVybiB0aGlzLnNob3dNZXNzYWdlRGlhbG9nKG1QYXJhbWV0ZXJzKTtcblx0XHR9XG5cdH1cbn1cbmV4cG9ydCBkZWZhdWx0IE1lc3NhZ2VIYW5kbGVyO1xuIl19
@@ -1,12 +1,12 @@
1
1
  import CommonUtils from "sap/fe/core/CommonUtils";
2
2
  import messageHandling from "sap/fe/core/controllerextensions/messageHandler/messageHandling";
3
3
  import { defineUI5Class, extensible, finalExtension, privateExtension, publicExtension } from "sap/fe/core/helpers/ClassSupport";
4
- import { InternalModelContext } from "sap/fe/core/helpers/ModelHelper";
5
- import PageController from "sap/fe/core/PageController";
4
+ import type { InternalModelContext } from "sap/fe/core/helpers/ModelHelper";
5
+ import type PageController from "sap/fe/core/PageController";
6
6
  import Core from "sap/ui/core/Core";
7
7
  import ControllerExtension from "sap/ui/core/mvc/ControllerExtension";
8
8
  import OverrideExecution from "sap/ui/core/mvc/OverrideExecution";
9
- import { CoreEx } from "types/extension_types";
9
+ import type { CoreEx } from "types/extension_types";
10
10
 
11
11
  /**
12
12
  * A controller extension offering message handling.
@@ -28,7 +28,7 @@ class MessageHandler extends ControllerExtension {
28
28
  * If the bound messages are shown to the user with a different control like the (TODO:Link) MessageButton
29
29
  * this method has to be overridden.
30
30
  *
31
- * @returns {boolean} Determines whether or not bound messages are shown in the message dialog.
31
+ * @returns Determines whether or not bound messages are shown in the message dialog.
32
32
  * @private
33
33
  */
34
34
  @privateExtension()
@@ -46,7 +46,7 @@ class MessageHandler extends ControllerExtension {
46
46
  * toast is shown instead.
47
47
  *
48
48
  * @param mParameters PRIVATE
49
- * @returns {Promise} A promise that is resolved once the user closes the dialog. If there are no messages
49
+ * @returns A promise that is resolved once the user closes the dialog. If there are no messages
50
50
  * to be shown, the promise is resolved immediately
51
51
  * @alias sap.fe.core.controllerextensions.MessageHandler#showMessageDialog
52
52
  * @public
@@ -80,7 +80,7 @@ class MessageHandler extends ControllerExtension {
80
80
  oBindingContext,
81
81
  bEtagMessage,
82
82
  bShowBoundMessages,
83
- mParameters?.errorTargetsInAPM,
83
+ mParameters?.showErrorInAPD,
84
84
  mParameters?.bShowMessageBox,
85
85
  mParameters?.concurrentEditFlag
86
86
  )
@@ -94,17 +94,21 @@ class MessageHandler extends ControllerExtension {
94
94
  * You can remove the existing transition message from the message model with this method.
95
95
  * With every user interaction that causes server communication (like clicking on an action, changing data),
96
96
  * this method removes the existing transition messages from the message model.
97
- * @param {boolean} [keepBoundMessage] Checks if the bound transition messages are not to be removed
98
97
  *
98
+ * @param [keepBoundMessage] Checks if the bound transition messages are not to be removed
99
+ * @param keepUnboundMessage
100
+ * @param sPathToBeRemoved
99
101
  * @alias sap.fe.core.controllerextensions.MessageHandler#removesTransitionMessages
100
102
  * @private
101
103
  */
102
104
  @publicExtension()
103
- removeTransitionMessages(keepBoundMessage?: boolean) {
105
+ removeTransitionMessages(keepBoundMessage?: boolean, keepUnboundMessage?: boolean, sPathToBeRemoved?: string) {
104
106
  if (!keepBoundMessage) {
105
- messageHandling.removeBoundTransitionMessages();
107
+ messageHandling.removeBoundTransitionMessages(sPathToBeRemoved);
108
+ }
109
+ if (!keepUnboundMessage) {
110
+ messageHandling.removeUnboundTransitionMessages();
106
111
  }
107
- messageHandling.removeUnboundTransitionMessages();
108
112
  }
109
113
 
110
114
  _checkNavigationToMessagePage(mParameters: any) {
@@ -149,14 +153,14 @@ class MessageHandler extends ControllerExtension {
149
153
  // We can plan to move this and the dialog logic both to messageHandler controller extension if required.
150
154
  sRetryAfterMessage = messageHandling.getRetryAfterMessage(oMessage);
151
155
  mMessagePageParameters = {
152
- description: sRetryAfterMessage ? sRetryAfterMessage + " " + oMessage.getMessage() : oMessage.getMessage(),
156
+ description: sRetryAfterMessage ? `${sRetryAfterMessage} ${oMessage.getMessage()}` : oMessage.getMessage(),
153
157
  navigateBackToOrigin: true
154
158
  };
155
159
  }
156
160
  } else {
157
161
  sRetryAfterMessage = messageHandling.getRetryAfterMessage(oMessage);
158
162
  mMessagePageParameters = {
159
- description: sRetryAfterMessage ? sRetryAfterMessage + " " + oMessage.getMessage() : oMessage.getMessage(),
163
+ description: sRetryAfterMessage ? `${sRetryAfterMessage} ${oMessage.getMessage()}` : oMessage.getMessage(),
160
164
  navigateBackToOrigin: true
161
165
  };
162
166
  }
@@ -174,8 +178,9 @@ class MessageHandler extends ControllerExtension {
174
178
  }
175
179
  /**
176
180
  * Shows a message page or a message dialog based on the messages in the message dialog.
181
+ *
177
182
  * @param [mParameters]
178
- * @returns {Promise} A promise that is resolved once the user closes the message dialog or when navigation to the message page is complete. If there are no messages
183
+ * @returns A promise that is resolved once the user closes the message dialog or when navigation to the message page is complete. If there are no messages
179
184
  * to be shown, the promise is resolved immediately
180
185
  * @private
181
186
  */
@@ -190,7 +195,9 @@ class MessageHandler extends ControllerExtension {
190
195
  if (mMessagePageParameters) {
191
196
  // navigate to message page.
192
197
  // handler before page navigation is triggered, for example to close the action parameter dialog
193
- mParameters && mParameters.messagePageNavigationCallback && mParameters.messagePageNavigationCallback();
198
+ if (mParameters && mParameters.messagePageNavigationCallback) {
199
+ mParameters.messagePageNavigationCallback();
200
+ }
194
201
 
195
202
  mMessagePageParameters.handleShellBack = !(mParameters && mParameters.shellBack);
196
203
  // TODO: Use Illustrated message instead of normal message page