@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
@@ -57,4 +57,4 @@ sap.ui.define(["sap/base/util/ObjectPath", "sap/fe/core/CommonUtils"], function
57
57
  };
58
58
  return FPMHelper;
59
59
  }, false);
60
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZQTUhlbHBlci50cyJdLCJuYW1lcyI6WyJGUE1IZWxwZXIiLCJhY3Rpb25XcmFwcGVyIiwib0V2ZW50Iiwic01vZHVsZSIsInNNZXRob2QiLCJvUGFyYW1ldGVycyIsIlByb21pc2UiLCJyZXNvbHZlIiwib1NvdXJjZSIsImdldFNvdXJjZSIsIm9WaWV3IiwiQ29tbW9uVXRpbHMiLCJnZXRUYXJnZXRWaWV3Iiwib0JpbmRpbmdDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJvRXh0ZW5zaW9uQVBJIiwiYVNlbGVjdGVkQ29udGV4dHMiLCJ1bmRlZmluZWQiLCJjb250ZXh0cyIsImdldENvbnRyb2xsZXJOYW1lIiwiZ2V0Q29udHJvbGxlciIsImdldEV4dGVuc2lvbkFQSSIsInN0YXJ0c1dpdGgiLCJmblRhcmdldCIsIk9iamVjdFBhdGgiLCJnZXQiLCJyZXBsYWNlIiwic3Vic3RyIiwic2FwIiwidWkiLCJyZXF1aXJlIiwibW9kdWxlIiwiYmluZCIsInZhbGlkYXRpb25XcmFwcGVyIiwib1ZhbGlkYXRpb25Db250ZXh0cyJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7OztBQUdBLE1BQU1BLFNBQVMsR0FBRztBQUNqQkMsSUFBQUEsYUFBYSxFQUFFLFVBQVVDLE1BQVYsRUFBdUJDLE9BQXZCLEVBQXFDQyxPQUFyQyxFQUFtREMsV0FBbkQsRUFBcUU7QUFDbkYsYUFBTyxJQUFJQyxPQUFKLENBQVksVUFBVUMsT0FBVixFQUF5QztBQUMzRDtBQUNBLFlBQU1DLE9BQU8sR0FBR04sTUFBTSxDQUFDTyxTQUFQLEdBQW1CUCxNQUFNLENBQUNPLFNBQVAsRUFBbkIsR0FBd0NQLE1BQU0sQ0FBQ00sT0FBL0Q7QUFBQSxZQUNDRSxLQUFLLEdBQUdDLFdBQVcsQ0FBQ0MsYUFBWixDQUEwQkosT0FBMUIsQ0FEVDtBQUFBLFlBRUNLLGVBQWUsR0FBR0wsT0FBTyxDQUFDTSxpQkFBUixFQUZuQjtBQUdBLFlBQUlDLGFBQUo7QUFDQSxZQUFJQyxpQkFBSjs7QUFFQSxZQUFJWCxXQUFXLEtBQUtZLFNBQXBCLEVBQStCO0FBQzlCRCxVQUFBQSxpQkFBaUIsR0FBR1gsV0FBVyxDQUFDYSxRQUFaLElBQXdCLEVBQTVDO0FBQ0EsU0FGRCxNQUVPLElBQUlMLGVBQWUsS0FBS0ksU0FBeEIsRUFBbUM7QUFDekNELFVBQUFBLGlCQUFpQixHQUFHLENBQUNILGVBQUQsQ0FBcEI7QUFDQSxTQUZNLE1BRUE7QUFDTkcsVUFBQUEsaUJBQWlCLEdBQUcsRUFBcEI7QUFDQTs7QUFFRCxZQUNDTixLQUFLLENBQUNTLGlCQUFOLE9BQThCLGtEQUE5QixJQUNBVCxLQUFLLENBQUNTLGlCQUFOLE9BQThCLGtEQUYvQixFQUdFO0FBQ0RKLFVBQUFBLGFBQWEsR0FBR0wsS0FBSyxDQUFDVSxhQUFOLEdBQXNCQyxlQUF0QixFQUFoQjtBQUNBOztBQUVELFlBQUlsQixPQUFPLENBQUNtQixVQUFSLENBQW1CLGFBQW5CLENBQUosRUFBdUM7QUFDdEMsY0FBTUMsUUFBUSxHQUFHQyxVQUFVLENBQUNDLEdBQVgsQ0FBZXRCLE9BQU8sQ0FBQ3VCLE9BQVIsQ0FBZ0IsS0FBaEIsRUFBdUIsR0FBdkIsRUFBNEJDLE1BQTVCLENBQW1DLENBQW5DLENBQWYsRUFBc0RaLGFBQXRELENBQWpCO0FBQ0FSLFVBQUFBLE9BQU8sQ0FBQ2dCLFFBQVEsQ0FBQ25CLE9BQUQsQ0FBUixDQUFrQlMsZUFBbEIsRUFBbUNHLGlCQUFuQyxDQUFELENBQVA7QUFDQSxTQUhELE1BR087QUFDTlksVUFBQUEsR0FBRyxDQUFDQyxFQUFKLENBQU9DLE9BQVAsQ0FBZSxDQUFDM0IsT0FBRCxDQUFmLEVBQTBCLFVBQVU0QixNQUFWLEVBQXVCO0FBQ2hEO0FBQ0E7QUFDQXhCLFlBQUFBLE9BQU8sQ0FBQ3dCLE1BQU0sQ0FBQzNCLE9BQUQsQ0FBTixDQUFnQjRCLElBQWhCLENBQXFCakIsYUFBckIsRUFBb0NGLGVBQXBDLEVBQXFERyxpQkFBckQsQ0FBRCxDQUFQO0FBQ0EsV0FKRDtBQUtBO0FBQ0QsT0FqQ00sQ0FBUDtBQWtDQSxLQXBDZ0I7QUFxQ2pCaUIsSUFBQUEsaUJBQWlCLEVBQUUsVUFBVTlCLE9BQVYsRUFBd0JDLE9BQXhCLEVBQXNDOEIsbUJBQXRDLEVBQWdFeEIsS0FBaEUsRUFBNEVHLGVBQTVFLEVBQWtHO0FBQ3BILGFBQU8sSUFBSVAsT0FBSixDQUFZLFVBQVVDLE9BQVYsRUFBeUM7QUFDM0QsWUFBSVEsYUFBSjs7QUFFQSxZQUNDTCxLQUFLLENBQUNTLGlCQUFOLE9BQThCLGtEQUE5QixJQUNBVCxLQUFLLENBQUNTLGlCQUFOLE9BQThCLGtEQUYvQixFQUdFO0FBQ0RKLFVBQUFBLGFBQWEsR0FBR0wsS0FBSyxDQUFDVSxhQUFOLEdBQXNCQyxlQUF0QixFQUFoQjtBQUNBOztBQUVETyxRQUFBQSxHQUFHLENBQUNDLEVBQUosQ0FBT0MsT0FBUCxDQUFlLENBQUMzQixPQUFELENBQWYsRUFBMEIsVUFBVTRCLE1BQVYsRUFBdUI7QUFDaEQ7QUFDQTtBQUNBeEIsVUFBQUEsT0FBTyxDQUFDd0IsTUFBTSxDQUFDM0IsT0FBRCxDQUFOLENBQWdCNEIsSUFBaEIsQ0FBcUJqQixhQUFyQixFQUFvQ0YsZUFBcEMsRUFBcURxQixtQkFBckQsQ0FBRCxDQUFQO0FBQ0EsU0FKRDtBQUtBLE9BZk0sQ0FBUDtBQWdCQTtBQXREZ0IsR0FBbEI7U0F5RGVsQyxTIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgT2JqZWN0UGF0aCBmcm9tIFwic2FwL2Jhc2UvdXRpbC9PYmplY3RQYXRoXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgRXh0ZW5zaW9uQVBJIGZyb20gXCJzYXAvZmUvY29yZS9FeHRlbnNpb25BUElcIjtcbmltcG9ydCBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuXG5jb25zdCBGUE1IZWxwZXIgPSB7XG5cdGFjdGlvbldyYXBwZXI6IGZ1bmN0aW9uIChvRXZlbnQ6IGFueSwgc01vZHVsZTogYW55LCBzTWV0aG9kOiBhbnksIG9QYXJhbWV0ZXJzOiBhbnkpIHtcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmU6ICh2YWx1ZTogYW55KSA9PiB2b2lkKSB7XG5cdFx0XHQvL1RoZSBzb3VyY2Ugd291bGQgYmUgY29tbWFuZCBleGVjdXRpb24sIGluIGNhc2UgYSBjb21tYW5kIGlzIGRlZmluZWQgZm9yIHRoZSBhY3Rpb24gaW4gdGhlIG1hbmlmZXN0LlxuXHRcdFx0Y29uc3Qgb1NvdXJjZSA9IG9FdmVudC5nZXRTb3VyY2UgPyBvRXZlbnQuZ2V0U291cmNlKCkgOiBvRXZlbnQub1NvdXJjZSxcblx0XHRcdFx0b1ZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KG9Tb3VyY2UpLFxuXHRcdFx0XHRvQmluZGluZ0NvbnRleHQgPSBvU291cmNlLmdldEJpbmRpbmdDb250ZXh0KCk7XG5cdFx0XHRsZXQgb0V4dGVuc2lvbkFQSTogRXh0ZW5zaW9uQVBJIHwgdW5kZWZpbmVkO1xuXHRcdFx0bGV0IGFTZWxlY3RlZENvbnRleHRzOiBDb250ZXh0W107XG5cblx0XHRcdGlmIChvUGFyYW1ldGVycyAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGFTZWxlY3RlZENvbnRleHRzID0gb1BhcmFtZXRlcnMuY29udGV4dHMgfHwgW107XG5cdFx0XHR9IGVsc2UgaWYgKG9CaW5kaW5nQ29udGV4dCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGFTZWxlY3RlZENvbnRleHRzID0gW29CaW5kaW5nQ29udGV4dF07XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRhU2VsZWN0ZWRDb250ZXh0cyA9IFtdO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoXG5cdFx0XHRcdG9WaWV3LmdldENvbnRyb2xsZXJOYW1lKCkgPT09IFwic2FwLmZlLnRlbXBsYXRlcy5PYmplY3RQYWdlLk9iamVjdFBhZ2VDb250cm9sbGVyXCIgfHxcblx0XHRcdFx0b1ZpZXcuZ2V0Q29udHJvbGxlck5hbWUoKSA9PT0gXCJzYXAuZmUudGVtcGxhdGVzLkxpc3RSZXBvcnQuTGlzdFJlcG9ydENvbnRyb2xsZXJcIlxuXHRcdFx0KSB7XG5cdFx0XHRcdG9FeHRlbnNpb25BUEkgPSBvVmlldy5nZXRDb250cm9sbGVyKCkuZ2V0RXh0ZW5zaW9uQVBJKCk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChzTW9kdWxlLnN0YXJ0c1dpdGgoXCIvZXh0ZW5zaW9uL1wiKSkge1xuXHRcdFx0XHRjb25zdCBmblRhcmdldCA9IE9iamVjdFBhdGguZ2V0KHNNb2R1bGUucmVwbGFjZSgvXFwvL2csIFwiLlwiKS5zdWJzdHIoMSksIG9FeHRlbnNpb25BUEkpO1xuXHRcdFx0XHRyZXNvbHZlKGZuVGFyZ2V0W3NNZXRob2RdKG9CaW5kaW5nQ29udGV4dCwgYVNlbGVjdGVkQ29udGV4dHMpKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHNhcC51aS5yZXF1aXJlKFtzTW9kdWxlXSwgZnVuY3Rpb24gKG1vZHVsZTogYW55KSB7XG5cdFx0XHRcdFx0Ly8gLSB3ZSBiaW5kIHRoZSBhY3Rpb24gdG8gdGhlIGV4dGVuc2lvbkFQSSBvZiB0aGUgY29udHJvbGxlciBzbyBpdCBoYXMgdGhlIHNhbWUgc2NvcGUgYXMgYSBjdXN0b20gc2VjdGlvblxuXHRcdFx0XHRcdC8vIC0gd2UgcHJvdmlkZSB0aGUgY29udGV4dCBhcyBBUEksIG1heWJlIGlmIG5lZWRlZCBmdXJ0aGVyIHByb3BlcnRpZXNcblx0XHRcdFx0XHRyZXNvbHZlKG1vZHVsZVtzTWV0aG9kXS5iaW5kKG9FeHRlbnNpb25BUEkpKG9CaW5kaW5nQ29udGV4dCwgYVNlbGVjdGVkQ29udGV4dHMpKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0sXG5cdHZhbGlkYXRpb25XcmFwcGVyOiBmdW5jdGlvbiAoc01vZHVsZTogYW55LCBzTWV0aG9kOiBhbnksIG9WYWxpZGF0aW9uQ29udGV4dHM6IGFueSwgb1ZpZXc6IGFueSwgb0JpbmRpbmdDb250ZXh0OiBhbnkpIHtcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmU6ICh2YWx1ZTogYW55KSA9PiB2b2lkKSB7XG5cdFx0XHRsZXQgb0V4dGVuc2lvbkFQSTogRXh0ZW5zaW9uQVBJO1xuXG5cdFx0XHRpZiAoXG5cdFx0XHRcdG9WaWV3LmdldENvbnRyb2xsZXJOYW1lKCkgPT09IFwic2FwLmZlLnRlbXBsYXRlcy5PYmplY3RQYWdlLk9iamVjdFBhZ2VDb250cm9sbGVyXCIgfHxcblx0XHRcdFx0b1ZpZXcuZ2V0Q29udHJvbGxlck5hbWUoKSA9PT0gXCJzYXAuZmUudGVtcGxhdGVzLkxpc3RSZXBvcnQuTGlzdFJlcG9ydENvbnRyb2xsZXJcIlxuXHRcdFx0KSB7XG5cdFx0XHRcdG9FeHRlbnNpb25BUEkgPSBvVmlldy5nZXRDb250cm9sbGVyKCkuZ2V0RXh0ZW5zaW9uQVBJKCk7XG5cdFx0XHR9XG5cblx0XHRcdHNhcC51aS5yZXF1aXJlKFtzTW9kdWxlXSwgZnVuY3Rpb24gKG1vZHVsZTogYW55KSB7XG5cdFx0XHRcdC8vIC0gd2UgYmluZCB0aGUgYWN0aW9uIHRvIHRoZSBleHRlbnNpb25BUEkgb2YgdGhlIGNvbnRyb2xsZXIgc28gaXQgaGFzIHRoZSBzYW1lIHNjb3BlIGFzIGEgY3VzdG9tIHNlY3Rpb25cblx0XHRcdFx0Ly8gLSB3ZSBwcm92aWRlIHRoZSBjb250ZXh0IGFzIEFQSSwgbWF5YmUgaWYgbmVlZGVkIGZ1cnRoZXIgcHJvcGVydGllc1xuXHRcdFx0XHRyZXNvbHZlKG1vZHVsZVtzTWV0aG9kXS5iaW5kKG9FeHRlbnNpb25BUEkpKG9CaW5kaW5nQ29udGV4dCwgb1ZhbGlkYXRpb25Db250ZXh0cykpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZQTUhlbHBlcjtcbiJdfQ==
60
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZQTUhlbHBlci50cyJdLCJuYW1lcyI6WyJGUE1IZWxwZXIiLCJhY3Rpb25XcmFwcGVyIiwib0V2ZW50Iiwic01vZHVsZSIsInNNZXRob2QiLCJvUGFyYW1ldGVycyIsIlByb21pc2UiLCJyZXNvbHZlIiwib1NvdXJjZSIsImdldFNvdXJjZSIsIm9WaWV3IiwiQ29tbW9uVXRpbHMiLCJnZXRUYXJnZXRWaWV3Iiwib0JpbmRpbmdDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJvRXh0ZW5zaW9uQVBJIiwiYVNlbGVjdGVkQ29udGV4dHMiLCJ1bmRlZmluZWQiLCJjb250ZXh0cyIsImdldENvbnRyb2xsZXJOYW1lIiwiZ2V0Q29udHJvbGxlciIsImdldEV4dGVuc2lvbkFQSSIsInN0YXJ0c1dpdGgiLCJmblRhcmdldCIsIk9iamVjdFBhdGgiLCJnZXQiLCJyZXBsYWNlIiwic3Vic3RyIiwic2FwIiwidWkiLCJyZXF1aXJlIiwibW9kdWxlIiwiYmluZCIsInZhbGlkYXRpb25XcmFwcGVyIiwib1ZhbGlkYXRpb25Db250ZXh0cyJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7OztBQUdBLE1BQU1BLFNBQVMsR0FBRztBQUNqQkMsSUFBQUEsYUFBYSxFQUFFLFVBQVVDLE1BQVYsRUFBdUJDLE9BQXZCLEVBQXFDQyxPQUFyQyxFQUFtREMsV0FBbkQsRUFBcUU7QUFDbkYsYUFBTyxJQUFJQyxPQUFKLENBQVksVUFBVUMsT0FBVixFQUF5QztBQUMzRDtBQUNBLFlBQU1DLE9BQU8sR0FBR04sTUFBTSxDQUFDTyxTQUFQLEdBQW1CUCxNQUFNLENBQUNPLFNBQVAsRUFBbkIsR0FBd0NQLE1BQU0sQ0FBQ00sT0FBL0Q7QUFBQSxZQUNDRSxLQUFLLEdBQUdDLFdBQVcsQ0FBQ0MsYUFBWixDQUEwQkosT0FBMUIsQ0FEVDtBQUFBLFlBRUNLLGVBQWUsR0FBR0wsT0FBTyxDQUFDTSxpQkFBUixFQUZuQjtBQUdBLFlBQUlDLGFBQUo7QUFDQSxZQUFJQyxpQkFBSjs7QUFFQSxZQUFJWCxXQUFXLEtBQUtZLFNBQXBCLEVBQStCO0FBQzlCRCxVQUFBQSxpQkFBaUIsR0FBR1gsV0FBVyxDQUFDYSxRQUFaLElBQXdCLEVBQTVDO0FBQ0EsU0FGRCxNQUVPLElBQUlMLGVBQWUsS0FBS0ksU0FBeEIsRUFBbUM7QUFDekNELFVBQUFBLGlCQUFpQixHQUFHLENBQUNILGVBQUQsQ0FBcEI7QUFDQSxTQUZNLE1BRUE7QUFDTkcsVUFBQUEsaUJBQWlCLEdBQUcsRUFBcEI7QUFDQTs7QUFFRCxZQUNDTixLQUFLLENBQUNTLGlCQUFOLE9BQThCLGtEQUE5QixJQUNBVCxLQUFLLENBQUNTLGlCQUFOLE9BQThCLGtEQUYvQixFQUdFO0FBQ0RKLFVBQUFBLGFBQWEsR0FBR0wsS0FBSyxDQUFDVSxhQUFOLEdBQXNCQyxlQUF0QixFQUFoQjtBQUNBOztBQUVELFlBQUlsQixPQUFPLENBQUNtQixVQUFSLENBQW1CLGFBQW5CLENBQUosRUFBdUM7QUFDdEMsY0FBTUMsUUFBUSxHQUFHQyxVQUFVLENBQUNDLEdBQVgsQ0FBZXRCLE9BQU8sQ0FBQ3VCLE9BQVIsQ0FBZ0IsS0FBaEIsRUFBdUIsR0FBdkIsRUFBNEJDLE1BQTVCLENBQW1DLENBQW5DLENBQWYsRUFBc0RaLGFBQXRELENBQWpCO0FBQ0FSLFVBQUFBLE9BQU8sQ0FBQ2dCLFFBQVEsQ0FBQ25CLE9BQUQsQ0FBUixDQUFrQlMsZUFBbEIsRUFBbUNHLGlCQUFuQyxDQUFELENBQVA7QUFDQSxTQUhELE1BR087QUFDTlksVUFBQUEsR0FBRyxDQUFDQyxFQUFKLENBQU9DLE9BQVAsQ0FBZSxDQUFDM0IsT0FBRCxDQUFmLEVBQTBCLFVBQVU0QixNQUFWLEVBQXVCO0FBQ2hEO0FBQ0E7QUFDQXhCLFlBQUFBLE9BQU8sQ0FBQ3dCLE1BQU0sQ0FBQzNCLE9BQUQsQ0FBTixDQUFnQjRCLElBQWhCLENBQXFCakIsYUFBckIsRUFBb0NGLGVBQXBDLEVBQXFERyxpQkFBckQsQ0FBRCxDQUFQO0FBQ0EsV0FKRDtBQUtBO0FBQ0QsT0FqQ00sQ0FBUDtBQWtDQSxLQXBDZ0I7QUFxQ2pCaUIsSUFBQUEsaUJBQWlCLEVBQUUsVUFBVTlCLE9BQVYsRUFBd0JDLE9BQXhCLEVBQXNDOEIsbUJBQXRDLEVBQWdFeEIsS0FBaEUsRUFBNEVHLGVBQTVFLEVBQWtHO0FBQ3BILGFBQU8sSUFBSVAsT0FBSixDQUFZLFVBQVVDLE9BQVYsRUFBeUM7QUFDM0QsWUFBSVEsYUFBSjs7QUFFQSxZQUNDTCxLQUFLLENBQUNTLGlCQUFOLE9BQThCLGtEQUE5QixJQUNBVCxLQUFLLENBQUNTLGlCQUFOLE9BQThCLGtEQUYvQixFQUdFO0FBQ0RKLFVBQUFBLGFBQWEsR0FBR0wsS0FBSyxDQUFDVSxhQUFOLEdBQXNCQyxlQUF0QixFQUFoQjtBQUNBOztBQUVETyxRQUFBQSxHQUFHLENBQUNDLEVBQUosQ0FBT0MsT0FBUCxDQUFlLENBQUMzQixPQUFELENBQWYsRUFBMEIsVUFBVTRCLE1BQVYsRUFBdUI7QUFDaEQ7QUFDQTtBQUNBeEIsVUFBQUEsT0FBTyxDQUFDd0IsTUFBTSxDQUFDM0IsT0FBRCxDQUFOLENBQWdCNEIsSUFBaEIsQ0FBcUJqQixhQUFyQixFQUFvQ0YsZUFBcEMsRUFBcURxQixtQkFBckQsQ0FBRCxDQUFQO0FBQ0EsU0FKRDtBQUtBLE9BZk0sQ0FBUDtBQWdCQTtBQXREZ0IsR0FBbEI7U0F5RGVsQyxTIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgT2JqZWN0UGF0aCBmcm9tIFwic2FwL2Jhc2UvdXRpbC9PYmplY3RQYXRoXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBFeHRlbnNpb25BUEkgZnJvbSBcInNhcC9mZS9jb3JlL0V4dGVuc2lvbkFQSVwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcblxuY29uc3QgRlBNSGVscGVyID0ge1xuXHRhY3Rpb25XcmFwcGVyOiBmdW5jdGlvbiAob0V2ZW50OiBhbnksIHNNb2R1bGU6IGFueSwgc01ldGhvZDogYW55LCBvUGFyYW1ldGVyczogYW55KSB7XG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlOiAodmFsdWU6IGFueSkgPT4gdm9pZCkge1xuXHRcdFx0Ly9UaGUgc291cmNlIHdvdWxkIGJlIGNvbW1hbmQgZXhlY3V0aW9uLCBpbiBjYXNlIGEgY29tbWFuZCBpcyBkZWZpbmVkIGZvciB0aGUgYWN0aW9uIGluIHRoZSBtYW5pZmVzdC5cblx0XHRcdGNvbnN0IG9Tb3VyY2UgPSBvRXZlbnQuZ2V0U291cmNlID8gb0V2ZW50LmdldFNvdXJjZSgpIDogb0V2ZW50Lm9Tb3VyY2UsXG5cdFx0XHRcdG9WaWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0VmlldyhvU291cmNlKSxcblx0XHRcdFx0b0JpbmRpbmdDb250ZXh0ID0gb1NvdXJjZS5nZXRCaW5kaW5nQ29udGV4dCgpO1xuXHRcdFx0bGV0IG9FeHRlbnNpb25BUEk6IEV4dGVuc2lvbkFQSSB8IHVuZGVmaW5lZDtcblx0XHRcdGxldCBhU2VsZWN0ZWRDb250ZXh0czogQ29udGV4dFtdO1xuXG5cdFx0XHRpZiAob1BhcmFtZXRlcnMgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRhU2VsZWN0ZWRDb250ZXh0cyA9IG9QYXJhbWV0ZXJzLmNvbnRleHRzIHx8IFtdO1xuXHRcdFx0fSBlbHNlIGlmIChvQmluZGluZ0NvbnRleHQgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRhU2VsZWN0ZWRDb250ZXh0cyA9IFtvQmluZGluZ0NvbnRleHRdO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0YVNlbGVjdGVkQ29udGV4dHMgPSBbXTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKFxuXHRcdFx0XHRvVmlldy5nZXRDb250cm9sbGVyTmFtZSgpID09PSBcInNhcC5mZS50ZW1wbGF0ZXMuT2JqZWN0UGFnZS5PYmplY3RQYWdlQ29udHJvbGxlclwiIHx8XG5cdFx0XHRcdG9WaWV3LmdldENvbnRyb2xsZXJOYW1lKCkgPT09IFwic2FwLmZlLnRlbXBsYXRlcy5MaXN0UmVwb3J0Lkxpc3RSZXBvcnRDb250cm9sbGVyXCJcblx0XHRcdCkge1xuXHRcdFx0XHRvRXh0ZW5zaW9uQVBJID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpLmdldEV4dGVuc2lvbkFQSSgpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoc01vZHVsZS5zdGFydHNXaXRoKFwiL2V4dGVuc2lvbi9cIikpIHtcblx0XHRcdFx0Y29uc3QgZm5UYXJnZXQgPSBPYmplY3RQYXRoLmdldChzTW9kdWxlLnJlcGxhY2UoL1xcLy9nLCBcIi5cIikuc3Vic3RyKDEpLCBvRXh0ZW5zaW9uQVBJKTtcblx0XHRcdFx0cmVzb2x2ZShmblRhcmdldFtzTWV0aG9kXShvQmluZGluZ0NvbnRleHQsIGFTZWxlY3RlZENvbnRleHRzKSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzYXAudWkucmVxdWlyZShbc01vZHVsZV0sIGZ1bmN0aW9uIChtb2R1bGU6IGFueSkge1xuXHRcdFx0XHRcdC8vIC0gd2UgYmluZCB0aGUgYWN0aW9uIHRvIHRoZSBleHRlbnNpb25BUEkgb2YgdGhlIGNvbnRyb2xsZXIgc28gaXQgaGFzIHRoZSBzYW1lIHNjb3BlIGFzIGEgY3VzdG9tIHNlY3Rpb25cblx0XHRcdFx0XHQvLyAtIHdlIHByb3ZpZGUgdGhlIGNvbnRleHQgYXMgQVBJLCBtYXliZSBpZiBuZWVkZWQgZnVydGhlciBwcm9wZXJ0aWVzXG5cdFx0XHRcdFx0cmVzb2x2ZShtb2R1bGVbc01ldGhvZF0uYmluZChvRXh0ZW5zaW9uQVBJKShvQmluZGluZ0NvbnRleHQsIGFTZWxlY3RlZENvbnRleHRzKSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9LFxuXHR2YWxpZGF0aW9uV3JhcHBlcjogZnVuY3Rpb24gKHNNb2R1bGU6IGFueSwgc01ldGhvZDogYW55LCBvVmFsaWRhdGlvbkNvbnRleHRzOiBhbnksIG9WaWV3OiBhbnksIG9CaW5kaW5nQ29udGV4dDogYW55KSB7XG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlOiAodmFsdWU6IGFueSkgPT4gdm9pZCkge1xuXHRcdFx0bGV0IG9FeHRlbnNpb25BUEk6IEV4dGVuc2lvbkFQSTtcblxuXHRcdFx0aWYgKFxuXHRcdFx0XHRvVmlldy5nZXRDb250cm9sbGVyTmFtZSgpID09PSBcInNhcC5mZS50ZW1wbGF0ZXMuT2JqZWN0UGFnZS5PYmplY3RQYWdlQ29udHJvbGxlclwiIHx8XG5cdFx0XHRcdG9WaWV3LmdldENvbnRyb2xsZXJOYW1lKCkgPT09IFwic2FwLmZlLnRlbXBsYXRlcy5MaXN0UmVwb3J0Lkxpc3RSZXBvcnRDb250cm9sbGVyXCJcblx0XHRcdCkge1xuXHRcdFx0XHRvRXh0ZW5zaW9uQVBJID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpLmdldEV4dGVuc2lvbkFQSSgpO1xuXHRcdFx0fVxuXG5cdFx0XHRzYXAudWkucmVxdWlyZShbc01vZHVsZV0sIGZ1bmN0aW9uIChtb2R1bGU6IGFueSkge1xuXHRcdFx0XHQvLyAtIHdlIGJpbmQgdGhlIGFjdGlvbiB0byB0aGUgZXh0ZW5zaW9uQVBJIG9mIHRoZSBjb250cm9sbGVyIHNvIGl0IGhhcyB0aGUgc2FtZSBzY29wZSBhcyBhIGN1c3RvbSBzZWN0aW9uXG5cdFx0XHRcdC8vIC0gd2UgcHJvdmlkZSB0aGUgY29udGV4dCBhcyBBUEksIG1heWJlIGlmIG5lZWRlZCBmdXJ0aGVyIHByb3BlcnRpZXNcblx0XHRcdFx0cmVzb2x2ZShtb2R1bGVbc01ldGhvZF0uYmluZChvRXh0ZW5zaW9uQVBJKShvQmluZGluZ0NvbnRleHQsIG9WYWxpZGF0aW9uQ29udGV4dHMpKTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBGUE1IZWxwZXI7XG4iXX0=
@@ -1,7 +1,7 @@
1
1
  import ObjectPath from "sap/base/util/ObjectPath";
2
2
  import CommonUtils from "sap/fe/core/CommonUtils";
3
- import ExtensionAPI from "sap/fe/core/ExtensionAPI";
4
- import Context from "sap/ui/model/Context";
3
+ import type ExtensionAPI from "sap/fe/core/ExtensionAPI";
4
+ import type Context from "sap/ui/model/Context";
5
5
 
6
6
  const FPMHelper = {
7
7
  actionWrapper: function (oEvent: any, sModule: any, sMethod: any, oParameters: any) {
@@ -5,14 +5,14 @@
5
5
  sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/KeepAliveRefreshTypes", "./ModelHelper"], function (Log, KeepAliveRefreshTypes, ModelHelper) {
6
6
  "use strict";
7
7
 
8
- var PATH_TO_STORE = KeepAliveRefreshTypes.PATH_TO_STORE;
9
8
  var RefreshStrategyType = KeepAliveRefreshTypes.RefreshStrategyType;
9
+ var PATH_TO_STORE = KeepAliveRefreshTypes.PATH_TO_STORE;
10
10
 
11
11
  // Private functions - start
12
12
  var _fnSimplifyEntitySetPath = function (metaModel, entitySetPathToUse) {
13
13
  var entitySetPath = ModelHelper.getEntitySetPath(entitySetPathToUse);
14
14
  var entitySet = entitySetPath.indexOf("$NavigationPropertyBinding") > -1 && metaModel.getObject(entitySetPath);
15
- return entitySet ? "/" + entitySet : entitySetPathToUse;
15
+ return entitySet ? "/".concat(entitySet) : entitySetPathToUse;
16
16
  };
17
17
 
18
18
  var _fnIsApplicable = function (primaryPath, key, strategy) {
@@ -21,17 +21,17 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/KeepAliveRefreshTypes", "./M
21
21
  /**
22
22
  * Check if given path resides in the context path provided.
23
23
  *
24
- * @param {ODataMetaModel} metaModel MetaModel to be used
25
- * @param {string} contextPath Context path to be used
26
- * @param {string} path Path to be used
27
- * @param {RefreshStrategyType} strategy Strategy, it could be 'self' | 'includingDependents'
28
- * @returns {boolean} Returns true if the context path is applicable.
24
+ * @param metaModel MetaModel to be used
25
+ * @param contextPath Context path to be used
26
+ * @param path Path to be used
27
+ * @param strategy Strategy, it could be 'self' | 'includingDependents'
28
+ * @returns Returns true if the context path is applicable.
29
29
  */
30
30
 
31
31
 
32
32
  var _isPathApplicableToContextPath = function (metaModel, contextPath, path, strategy) {
33
- var contextPathToCheck = contextPath.startsWith("/") ? contextPath : "/" + contextPath,
34
- pathToCheck = path.startsWith("/") ? path : "/" + path;
33
+ var contextPathToCheck = contextPath.startsWith("/") ? contextPath : "/".concat(contextPath),
34
+ pathToCheck = path.startsWith("/") ? path : "/".concat(path);
35
35
 
36
36
  if (!_fnIsApplicable(contextPathToCheck, pathToCheck, strategy)) {
37
37
  contextPathToCheck = _fnSimplifyEntitySetPath(metaModel, contextPathToCheck);
@@ -49,9 +49,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/KeepAliveRefreshTypes", "./M
49
49
  /**
50
50
  * Get controls to refresh in a view.
51
51
  *
52
- * @param {View} view View of the controls
53
- * @param {Control[]} controls Context path to be used
54
- * @returns {Control[]} Returns controls that need to be refreshed.
52
+ * @param view View of the controls
53
+ * @param controls Context path to be used
54
+ * @returns Returns controls that need to be refreshed.
55
55
  */
56
56
 
57
57
 
@@ -80,9 +80,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/KeepAliveRefreshTypes", "./M
80
80
  /**
81
81
  * Get refresh strategy for the control for a context path.
82
82
  *
83
- * @param {Control} control Control from which refresh info is needed
84
- * @param {string} contextPath ContextPath for properities
85
- * @returns {RefreshStrategyType} Returns strategy for control refresh.
83
+ * @param control Control from which refresh info is needed
84
+ * @param contextPath ContextPath for properities
85
+ * @returns Returns strategy for control refresh.
86
86
  */
87
87
 
88
88
 
@@ -111,28 +111,28 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/KeepAliveRefreshTypes", "./M
111
111
  /**
112
112
  * Get refresh info from view.
113
113
  *
114
- * @param {View} view View from which refresh info is needed
115
- * @returns {RefreshStrategyType | undefined} Returns strategy for view refresh.
114
+ * @param view View from which refresh info is needed
115
+ * @returns Returns strategy for view refresh.
116
116
  */
117
117
 
118
118
 
119
119
  var getViewRefreshInfo = function (view) {
120
120
  var viewData = view.getViewData(),
121
- contextPath = viewData && ((viewData === null || viewData === void 0 ? void 0 : viewData.contextPath) || "/" + (viewData === null || viewData === void 0 ? void 0 : viewData.entitySet));
121
+ contextPath = viewData && ((viewData === null || viewData === void 0 ? void 0 : viewData.contextPath) || "/".concat(viewData === null || viewData === void 0 ? void 0 : viewData.entitySet));
122
122
  return KeepAliveHelper.getControlRefreshStrategyForContextPath(view, contextPath);
123
123
  };
124
124
  /**
125
125
  * Get refresh strategy for an intent.
126
126
  *
127
- * @param {RefreshStrategies} refreshStrategies RefreshStrategies to consider
128
- * @param {string} semanticObject Outbound Semantic Object
129
- * @param {string} action Outbound Action
130
- * @returns {SORefreshStrategy | undefined} Returns refresh strategies to use for the intent.
127
+ * @param refreshStrategies RefreshStrategies to consider
128
+ * @param semanticObject Outbound Semantic Object
129
+ * @param action Outbound Action
130
+ * @returns Returns refresh strategies to use for the intent.
131
131
  */
132
132
 
133
133
 
134
134
  var getRefreshStrategyForIntent = function (refreshStrategies, semanticObject, action) {
135
- var soAction = semanticObject && action && semanticObject + "-" + action;
135
+ var soAction = semanticObject && action && "".concat(semanticObject, "-").concat(action);
136
136
  var intents = refreshStrategies.intents;
137
137
  var soActionIntentMatch = intents && soAction && intents[soAction];
138
138
  var soIntentMatch = !soActionIntentMatch && intents && semanticObject && intents[semanticObject];
@@ -141,8 +141,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/KeepAliveRefreshTypes", "./M
141
141
  /**
142
142
  * Store control refresh strategy for hash in the internal model.
143
143
  *
144
- * @param {Control} control Control for the refresh strategy
145
- * @param {SOAction} hash Shell hash object
144
+ * @param control Control for the refresh strategy
145
+ * @param hash Shell hash object
146
146
  */
147
147
 
148
148
 
@@ -161,8 +161,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/KeepAliveRefreshTypes", "./M
161
161
  /**
162
162
  * Method to refresh and restore the view if neccessary.
163
163
  *
164
- * @param {object} view Control for the refresh strategy
165
- * @returns {object} A promise after view refresh and restore are triggered
164
+ * @param view Control for the refresh strategy
165
+ * @returns A promise after view refresh and restore are triggered
166
166
  */
167
167
 
168
168
 
@@ -176,9 +176,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/KeepAliveRefreshTypes", "./M
176
176
  if (viewState.refreshViewBindings) {
177
177
  refreshBindings = viewState.refreshViewBindings();
178
178
  refreshBindings.then(function () {
179
- Log.info("FE V4: Refresh was triggered successfull: " + view.getId());
179
+ Log.info("FE V4: Refresh was triggered successfull: ".concat(view.getId()));
180
180
  }).catch(function (err) {
181
- Log.warning("FE V4: Refresh was unsuccessfull: " + view.getId(), err);
181
+ Log.warning("FE V4: Refresh was unsuccessfull: ".concat(view.getId()), err);
182
182
  });
183
183
  }
184
184
 
@@ -186,7 +186,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/KeepAliveRefreshTypes", "./M
186
186
  viewState.onRestore();
187
187
  internalModelContext.setProperty("restoreStatus", "done");
188
188
  }).catch(function (error) {
189
- Log.warning("FE V4: Restore was unsuccessfull: " + view.getId(), error);
189
+ Log.warning("FE V4: Restore was unsuccessfull: ".concat(view.getId()), error);
190
190
  });
191
191
  }
192
192
 
@@ -207,4 +207,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/KeepAliveRefreshTypes", "./M
207
207
  };
208
208
  return KeepAliveHelper;
209
209
  }, false);
210
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIktlZXBBbGl2ZUhlbHBlci50cyJdLCJuYW1lcyI6WyJfZm5TaW1wbGlmeUVudGl0eVNldFBhdGgiLCJtZXRhTW9kZWwiLCJlbnRpdHlTZXRQYXRoVG9Vc2UiLCJlbnRpdHlTZXRQYXRoIiwiTW9kZWxIZWxwZXIiLCJnZXRFbnRpdHlTZXRQYXRoIiwiZW50aXR5U2V0IiwiaW5kZXhPZiIsImdldE9iamVjdCIsIl9mbklzQXBwbGljYWJsZSIsInByaW1hcnlQYXRoIiwia2V5Iiwic3RyYXRlZ3kiLCJSZWZyZXNoU3RyYXRlZ3lUeXBlIiwiSW5jbHVkaW5nRGVwZW5kZW50cyIsInN0YXJ0c1dpdGgiLCJfaXNQYXRoQXBwbGljYWJsZVRvQ29udGV4dFBhdGgiLCJjb250ZXh0UGF0aCIsInBhdGgiLCJjb250ZXh0UGF0aFRvQ2hlY2siLCJwYXRoVG9DaGVjayIsImdldENvbnRyb2xzRm9yUmVmcmVzaCIsInZpZXciLCJjb250cm9scyIsImNvbnRyb2xzRm9yUmVmcmVzaCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwiaW50ZXJuYWxNb2RlbCIsInJlZnJlc2hTdHJhdGVneSIsImdldFByb3BlcnR5IiwiUEFUSF9UT19TVE9SRSIsImZvckVhY2giLCJjb250cm9sIiwiZGF0YSIsInB1c2giLCJnZXRDb250cm9sUmVmcmVzaFN0cmF0ZWd5Rm9yQ29udGV4dFBhdGgiLCJzdHJhdGVneVRvQ2hlY2siLCJnZXRWaWV3UmVmcmVzaEluZm8iLCJ2aWV3RGF0YSIsImdldFZpZXdEYXRhIiwiS2VlcEFsaXZlSGVscGVyIiwiZ2V0UmVmcmVzaFN0cmF0ZWd5Rm9ySW50ZW50IiwicmVmcmVzaFN0cmF0ZWdpZXMiLCJzZW1hbnRpY09iamVjdCIsImFjdGlvbiIsInNvQWN0aW9uIiwiaW50ZW50cyIsInNvQWN0aW9uSW50ZW50TWF0Y2giLCJzb0ludGVudE1hdGNoIiwiZGVmYXVsdEJlaGF2aW9yIiwiX2ZlRGVmYXVsdCIsInN0b3JlQ29udHJvbFJlZnJlc2hTdHJhdGVneUZvckhhc2giLCJoYXNoIiwic2V0UHJvcGVydHkiLCJyZXN0b3JlVmlldyIsImludGVybmFsTW9kZWxDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJjb250cm9sbGVyIiwiZ2V0Q29udHJvbGxlciIsInZpZXdTdGF0ZSIsInJlZnJlc2hCaW5kaW5ncyIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVmcmVzaFZpZXdCaW5kaW5ncyIsInRoZW4iLCJMb2ciLCJpbmZvIiwiZ2V0SWQiLCJjYXRjaCIsImVyciIsIndhcm5pbmciLCJvblJlc3RvcmUiLCJlcnJvciJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7OztBQWFBO0FBQ0EsTUFBTUEsd0JBQXdCLEdBQUcsVUFBU0MsU0FBVCxFQUFvQ0Msa0JBQXBDLEVBQXdFO0FBQ3hHLFFBQU1DLGFBQWEsR0FBR0MsV0FBVyxDQUFDQyxnQkFBWixDQUE2Qkgsa0JBQTdCLENBQXRCO0FBQ0EsUUFBTUksU0FBUyxHQUFHSCxhQUFhLENBQUNJLE9BQWQsQ0FBc0IsNEJBQXRCLElBQXNELENBQUMsQ0FBdkQsSUFBNEROLFNBQVMsQ0FBQ08sU0FBVixDQUFvQkwsYUFBcEIsQ0FBOUU7QUFDQSxXQUFPRyxTQUFTLEdBQUcsTUFBTUEsU0FBVCxHQUFxQkosa0JBQXJDO0FBQ0EsR0FKRDs7QUFLQSxNQUFNTyxlQUFlLEdBQUcsVUFBU0MsV0FBVCxFQUE4QkMsR0FBOUIsRUFBMkNDLFFBQTNDLEVBQW1GO0FBQzFHLFdBQU9GLFdBQVcsS0FBS0MsR0FBaEIsSUFBd0JDLFFBQVEsS0FBS0MsbUJBQW1CLENBQUNDLG1CQUFqQyxJQUF3REosV0FBVyxDQUFDSyxVQUFaLENBQXVCSixHQUF2QixDQUF2RjtBQUNBLEdBRkQ7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBLE1BQU1LLDhCQUE4QixHQUFHLFVBQ3RDZixTQURzQyxFQUV0Q2dCLFdBRnNDLEVBR3RDQyxJQUhzQyxFQUl0Q04sUUFKc0MsRUFLNUI7QUFDVixRQUFJTyxrQkFBa0IsR0FBR0YsV0FBVyxDQUFDRixVQUFaLENBQXVCLEdBQXZCLElBQThCRSxXQUE5QixHQUE0QyxNQUFNQSxXQUEzRTtBQUFBLFFBQ0NHLFdBQVcsR0FBR0YsSUFBSSxDQUFDSCxVQUFMLENBQWdCLEdBQWhCLElBQXVCRyxJQUF2QixHQUE4QixNQUFNQSxJQURuRDs7QUFFQSxRQUFJLENBQUNULGVBQWUsQ0FBQ1Usa0JBQUQsRUFBcUJDLFdBQXJCLEVBQWtDUixRQUFsQyxDQUFwQixFQUFpRTtBQUNoRU8sTUFBQUEsa0JBQWtCLEdBQUduQix3QkFBd0IsQ0FBQ0MsU0FBRCxFQUFZa0Isa0JBQVosQ0FBN0M7O0FBQ0EsVUFBSSxDQUFDVixlQUFlLENBQUNVLGtCQUFELEVBQXFCQyxXQUFyQixFQUFrQ1IsUUFBbEMsQ0FBcEIsRUFBaUU7QUFDaEVRLFFBQUFBLFdBQVcsR0FBR3BCLHdCQUF3QixDQUFDQyxTQUFELEVBQVltQixXQUFaLENBQXRDO0FBQ0EsT0FGRCxNQUVPO0FBQ04sZUFBTyxJQUFQO0FBQ0E7QUFDRDs7QUFDRCxXQUFPWCxlQUFlLENBQUNVLGtCQUFELEVBQXFCQyxXQUFyQixFQUFrQ1IsUUFBbEMsQ0FBdEI7QUFDQSxHQWpCRCxDLENBa0JBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQSxNQUFNUyxxQkFBcUIsR0FBRyxVQUFTQyxJQUFULEVBQXFCQyxRQUFyQixFQUFxRDtBQUNsRixRQUFNQyxrQkFBNkIsR0FBRyxFQUF0QztBQUNBLFFBQU12QixTQUFTLEdBQUdxQixJQUFJLENBQUNHLFFBQUwsR0FBZ0JDLFlBQWhCLEVBQWxCO0FBQ0EsUUFBTUMsYUFBYSxHQUFHTCxJQUFJLENBQUNHLFFBQUwsQ0FBYyxVQUFkLENBQXRCO0FBQ0EsUUFBTUcsZUFBZSxHQUFHRCxhQUFhLENBQUNFLFdBQWQsQ0FBMEJDLGFBQTFCLEtBQTRDLEVBQXBFOztBQUNBLFFBQUlQLFFBQUosRUFBYztBQUNiQSxNQUFBQSxRQUFRLENBQUNRLE9BQVQsQ0FBaUIsVUFBU0MsT0FBVCxFQUFrQjtBQUNsQyxZQUFNZixXQUFXLEdBQUdlLE9BQU8sQ0FBQ0MsSUFBUixDQUFhLHNCQUFiLENBQXBCOztBQUNBLGFBQUssSUFBTXRCLEdBQVgsSUFBa0JpQixlQUFsQixFQUFtQztBQUNsQyxjQUFNaEIsUUFBUSxHQUFHZ0IsZUFBZSxDQUFDakIsR0FBRCxDQUFoQzs7QUFDQSxjQUFJYSxrQkFBa0IsQ0FBQ2pCLE9BQW5CLENBQTJCeUIsT0FBM0IsTUFBd0MsQ0FBQyxDQUF6QyxJQUE4Q2hCLDhCQUE4QixDQUFDZixTQUFELEVBQVlnQixXQUFaLEVBQXlCTixHQUF6QixFQUE4QkMsUUFBOUIsQ0FBaEYsRUFBeUg7QUFDeEhZLFlBQUFBLGtCQUFrQixDQUFDVSxJQUFuQixDQUF3QkYsT0FBeEI7QUFDQTtBQUNEO0FBQ0QsT0FSRDtBQVNBOztBQUNELFdBQU9SLGtCQUFQO0FBQ0EsR0FqQkQ7QUFrQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBLE1BQU1XLHVDQUF1QyxHQUFHLFVBQVNILE9BQVQsRUFBMkJmLFdBQTNCLEVBQWlGO0FBQ2hJLFFBQU1oQixTQUFTLEdBQUcrQixPQUFPLENBQUNQLFFBQVIsR0FBbUJDLFlBQW5CLEVBQWxCO0FBQ0EsUUFBTUMsYUFBYSxHQUFHSyxPQUFPLENBQUNQLFFBQVIsQ0FBaUIsVUFBakIsQ0FBdEI7QUFDQSxRQUFNRyxlQUFlLEdBQUdELGFBQWEsQ0FBQ0UsV0FBZCxDQUEwQkMsYUFBMUIsS0FBNEMsRUFBcEU7QUFDQSxRQUFJbEIsUUFBSjs7QUFDQSxRQUFJSyxXQUFKLEVBQWlCO0FBQ2hCLFdBQUssSUFBTU4sR0FBWCxJQUFrQmlCLGVBQWxCLEVBQW1DO0FBQ2xDLFlBQU1RLGVBQWUsR0FBR1IsZUFBZSxDQUFDakIsR0FBRCxDQUF2Qzs7QUFDQSxZQUFJSyw4QkFBOEIsQ0FBQ2YsU0FBRCxFQUFZZ0IsV0FBWixFQUF5Qk4sR0FBekIsRUFBOEJ5QixlQUE5QixDQUFsQyxFQUFrRjtBQUNqRnhCLFVBQUFBLFFBQVEsR0FBR3dCLGVBQVg7O0FBQ0EsY0FBSXhCLFFBQVEsS0FBSyxxQkFBakIsRUFBd0M7QUFDdkM7QUFDQTtBQUNEO0FBQ0Q7QUFDRDs7QUFDRCxXQUFPQSxRQUFQO0FBQ0EsR0FqQkQ7QUFrQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQSxNQUFNeUIsa0JBQWtCLEdBQUcsVUFBU2YsSUFBVCxFQUFzRDtBQUNoRixRQUFNZ0IsUUFBUSxHQUFHaEIsSUFBSSxDQUFDaUIsV0FBTCxFQUFqQjtBQUFBLFFBQ0N0QixXQUFXLEdBQUdxQixRQUFRLEtBQUssQ0FBQUEsUUFBUSxTQUFSLElBQUFBLFFBQVEsV0FBUixZQUFBQSxRQUFRLENBQUVyQixXQUFWLEtBQXlCLE9BQU1xQixRQUFOLGFBQU1BLFFBQU4sdUJBQU1BLFFBQVEsQ0FBRWhDLFNBQWhCLENBQTlCLENBRHZCO0FBRUEsV0FBT2tDLGVBQWUsQ0FBQ0wsdUNBQWhCLENBQXdEYixJQUF4RCxFQUE4REwsV0FBOUQsQ0FBUDtBQUNBLEdBSkQ7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQSxNQUFNd0IsMkJBQTJCLEdBQUcsVUFDbkNDLGlCQURtQyxFQUVuQ0MsY0FGbUMsRUFHbkNDLE1BSG1DLEVBSUg7QUFDaEMsUUFBTUMsUUFBUSxHQUFHRixjQUFjLElBQUlDLE1BQWxCLElBQTRCRCxjQUFjLEdBQUcsR0FBakIsR0FBdUJDLE1BQXBFO0FBQ0EsUUFBTUUsT0FBTyxHQUFHSixpQkFBaUIsQ0FBQ0ksT0FBbEM7QUFDQSxRQUFNQyxtQkFBbUIsR0FBR0QsT0FBTyxJQUFJRCxRQUFYLElBQXVCQyxPQUFPLENBQUNELFFBQUQsQ0FBMUQ7QUFDQSxRQUFNRyxhQUFhLEdBQUcsQ0FBQ0QsbUJBQUQsSUFBd0JELE9BQXhCLElBQW1DSCxjQUFuQyxJQUFxREcsT0FBTyxDQUFDSCxjQUFELENBQWxGO0FBRUEsV0FBT0ksbUJBQW1CLElBQUlDLGFBQXZCLEtBQXdDTixpQkFBeEMsYUFBd0NBLGlCQUF4Qyx1QkFBd0NBLGlCQUFpQixDQUFFTyxlQUEzRCxNQUE4RVAsaUJBQTlFLGFBQThFQSxpQkFBOUUsdUJBQThFQSxpQkFBaUIsQ0FBRVEsVUFBakcsQ0FBUDtBQUNBLEdBWEQ7QUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBLE1BQU1DLGtDQUFrQyxHQUFHLFVBQVNuQixPQUFULEVBQTJCb0IsSUFBM0IsRUFBaUQ7QUFDM0YsUUFBSXBCLE9BQU8sSUFBSUEsT0FBTyxDQUFDUCxRQUFSLENBQWlCLFVBQWpCLENBQVgsSUFBMkNPLE9BQU8sQ0FBQ1AsUUFBUixDQUFpQixVQUFqQixDQUEvQyxFQUE2RTtBQUM1RSxVQUFNYSxRQUFRLEdBQUdOLE9BQU8sQ0FBQ1AsUUFBUixDQUFpQixVQUFqQixDQUFqQjtBQUNBLFVBQU1pQixpQkFBb0MsR0FBR0osUUFBUSxDQUFDVCxXQUFULENBQXFCQyxhQUFyQixDQUE3Qzs7QUFDQSxVQUFJWSxpQkFBSixFQUF1QjtBQUN0QixZQUFNZixhQUFhLEdBQUdLLE9BQU8sQ0FBQ1AsUUFBUixDQUFpQixVQUFqQixDQUF0QjtBQUNBLFlBQU1HLGVBQThDLEdBQUdZLGVBQWUsQ0FBQ0MsMkJBQWhCLENBQ3REQyxpQkFEc0QsRUFFdERVLElBRnNELGFBRXREQSxJQUZzRCx1QkFFdERBLElBQUksQ0FBRVQsY0FGZ0QsRUFHdERTLElBSHNELGFBR3REQSxJQUhzRCx1QkFHdERBLElBQUksQ0FBRVIsTUFIZ0QsQ0FBdkQ7QUFLQ2pCLFFBQUFBLGFBQUQsQ0FBNkIwQixXQUE3QixDQUF5Q3ZCLGFBQXpDLEVBQXdERixlQUF4RDtBQUNBO0FBQ0Q7QUFDRCxHQWREO0FBZ0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0EsTUFBTTBCLFdBQVcsR0FBRyxVQUFTaEMsSUFBVCxFQUFtQztBQUN0RCxRQUFNaUMsb0JBQW9CLEdBQUdqQyxJQUFJLENBQUNrQyxpQkFBTCxDQUF1QixVQUF2QixDQUE3QjtBQUNBLFFBQU1DLFVBQVUsR0FBR25DLElBQUksQ0FBQ29DLGFBQUwsRUFBbkI7QUFDQSxRQUFNQyxTQUFTLEdBQUlGLFVBQUosYUFBSUEsVUFBSix1QkFBSUEsVUFBRCxDQUFxQkUsU0FBdkM7QUFDQSxRQUFJQyxlQUFlLEdBQUdDLE9BQU8sQ0FBQ0MsT0FBUixFQUF0Qjs7QUFDQSxRQUFJUCxvQkFBb0IsSUFBSUEsb0JBQW9CLENBQUMxQixXQUFyQixDQUFpQyxlQUFqQyxNQUFzRCxTQUFsRixFQUE2RjtBQUM1RixVQUFJOEIsU0FBUyxDQUFDSSxtQkFBZCxFQUFtQztBQUNsQ0gsUUFBQUEsZUFBZSxHQUFHRCxTQUFTLENBQUNJLG1CQUFWLEVBQWxCO0FBQ0FILFFBQUFBLGVBQWUsQ0FDYkksSUFERixDQUNPLFlBQVc7QUFDaEJDLFVBQUFBLEdBQUcsQ0FBQ0MsSUFBSixDQUFTLCtDQUErQzVDLElBQUksQ0FBQzZDLEtBQUwsRUFBeEQ7QUFDQSxTQUhGLEVBSUVDLEtBSkYsQ0FJUSxVQUFTQyxHQUFULEVBQWM7QUFDcEJKLFVBQUFBLEdBQUcsQ0FBQ0ssT0FBSixDQUFZLHVDQUF1Q2hELElBQUksQ0FBQzZDLEtBQUwsRUFBbkQsRUFBaUVFLEdBQWpFO0FBQ0EsU0FORjtBQU9BOztBQUNEVCxNQUFBQSxlQUFlLEdBQUdBLGVBQWUsQ0FDL0JJLElBRGdCLENBQ1gsWUFBVztBQUNoQkwsUUFBQUEsU0FBUyxDQUFDWSxTQUFWO0FBQ0FoQixRQUFBQSxvQkFBb0IsQ0FBQ0YsV0FBckIsQ0FBaUMsZUFBakMsRUFBa0QsTUFBbEQ7QUFDQSxPQUpnQixFQUtoQmUsS0FMZ0IsQ0FLVixVQUFTSSxLQUFULEVBQWdCO0FBQ3RCUCxRQUFBQSxHQUFHLENBQUNLLE9BQUosQ0FBWSx1Q0FBdUNoRCxJQUFJLENBQUM2QyxLQUFMLEVBQW5ELEVBQWlFSyxLQUFqRTtBQUNBLE9BUGdCLENBQWxCO0FBUUE7O0FBQ0QsV0FBT1osZUFBUDtBQUNBLEdBMUJEO0FBNEJBO0FBQ0E7QUFDQTs7O0FBQ0EsTUFBTXBCLGVBQWUsR0FBRztBQUN2Qm5CLElBQUFBLHFCQUFxQixFQUFyQkEscUJBRHVCO0FBRXZCYyxJQUFBQSx1Q0FBdUMsRUFBdkNBLHVDQUZ1QjtBQUd2QkUsSUFBQUEsa0JBQWtCLEVBQWxCQSxrQkFIdUI7QUFJdkJJLElBQUFBLDJCQUEyQixFQUEzQkEsMkJBSnVCO0FBS3ZCVSxJQUFBQSxrQ0FBa0MsRUFBbENBLGtDQUx1QjtBQU12QkcsSUFBQUEsV0FBVyxFQUFYQTtBQU51QixHQUF4QjtTQVFlZCxlIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9WaWV3XCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgeyBCYXNlTWFuaWZlc3RTZXR0aW5ncyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHtcblx0UmVmcmVzaFN0cmF0ZWd5VHlwZSxcblx0U09SZWZyZXNoU3RyYXRlZ3ksXG5cdFJlZnJlc2hTdHJhdGVnaWVzLFxuXHRQQVRIX1RPX1NUT1JFLFxuXHRTT0FjdGlvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9LZWVwQWxpdmVSZWZyZXNoVHlwZXNcIjtcbmltcG9ydCBNb2RlbEhlbHBlciwgeyBJbnRlcm5hbE1vZGVsQ29udGV4dCB9IGZyb20gXCIuL01vZGVsSGVscGVyXCI7XG5cbi8vIFByaXZhdGUgZnVuY3Rpb25zIC0gc3RhcnRcbmNvbnN0IF9mblNpbXBsaWZ5RW50aXR5U2V0UGF0aCA9IGZ1bmN0aW9uKG1ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwsIGVudGl0eVNldFBhdGhUb1VzZTogc3RyaW5nKTogc3RyaW5nIHtcblx0Y29uc3QgZW50aXR5U2V0UGF0aCA9IE1vZGVsSGVscGVyLmdldEVudGl0eVNldFBhdGgoZW50aXR5U2V0UGF0aFRvVXNlKTtcblx0Y29uc3QgZW50aXR5U2V0ID0gZW50aXR5U2V0UGF0aC5pbmRleE9mKFwiJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdcIikgPiAtMSAmJiBtZXRhTW9kZWwuZ2V0T2JqZWN0KGVudGl0eVNldFBhdGgpO1xuXHRyZXR1cm4gZW50aXR5U2V0ID8gXCIvXCIgKyBlbnRpdHlTZXQgOiBlbnRpdHlTZXRQYXRoVG9Vc2U7XG59O1xuY29uc3QgX2ZuSXNBcHBsaWNhYmxlID0gZnVuY3Rpb24ocHJpbWFyeVBhdGg6IHN0cmluZywga2V5OiBzdHJpbmcsIHN0cmF0ZWd5OiBSZWZyZXNoU3RyYXRlZ3lUeXBlKTogYm9vbGVhbiB7XG5cdHJldHVybiBwcmltYXJ5UGF0aCA9PT0ga2V5IHx8IChzdHJhdGVneSA9PT0gUmVmcmVzaFN0cmF0ZWd5VHlwZS5JbmNsdWRpbmdEZXBlbmRlbnRzICYmIHByaW1hcnlQYXRoLnN0YXJ0c1dpdGgoa2V5KSk7XG59O1xuLyoqXG4gKiBDaGVjayBpZiBnaXZlbiBwYXRoIHJlc2lkZXMgaW4gdGhlIGNvbnRleHQgcGF0aCBwcm92aWRlZC5cbiAqXG4gKiBAcGFyYW0ge09EYXRhTWV0YU1vZGVsfSBtZXRhTW9kZWwgTWV0YU1vZGVsIHRvIGJlIHVzZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZXh0UGF0aCBDb250ZXh0IHBhdGggdG8gYmUgdXNlZFxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggUGF0aCB0byBiZSB1c2VkXG4gKiBAcGFyYW0ge1JlZnJlc2hTdHJhdGVneVR5cGV9IHN0cmF0ZWd5IFN0cmF0ZWd5LCBpdCBjb3VsZCBiZSAnc2VsZicgfCAnaW5jbHVkaW5nRGVwZW5kZW50cydcbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIHRydWUgaWYgdGhlIGNvbnRleHQgcGF0aCBpcyBhcHBsaWNhYmxlLlxuICovXG5jb25zdCBfaXNQYXRoQXBwbGljYWJsZVRvQ29udGV4dFBhdGggPSBmdW5jdGlvbihcblx0bWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbCxcblx0Y29udGV4dFBhdGg6IHN0cmluZyxcblx0cGF0aDogc3RyaW5nLFxuXHRzdHJhdGVneTogUmVmcmVzaFN0cmF0ZWd5VHlwZVxuKTogYm9vbGVhbiB7XG5cdGxldCBjb250ZXh0UGF0aFRvQ2hlY2sgPSBjb250ZXh0UGF0aC5zdGFydHNXaXRoKFwiL1wiKSA/IGNvbnRleHRQYXRoIDogXCIvXCIgKyBjb250ZXh0UGF0aCxcblx0XHRwYXRoVG9DaGVjayA9IHBhdGguc3RhcnRzV2l0aChcIi9cIikgPyBwYXRoIDogXCIvXCIgKyBwYXRoO1xuXHRpZiAoIV9mbklzQXBwbGljYWJsZShjb250ZXh0UGF0aFRvQ2hlY2ssIHBhdGhUb0NoZWNrLCBzdHJhdGVneSkpIHtcblx0XHRjb250ZXh0UGF0aFRvQ2hlY2sgPSBfZm5TaW1wbGlmeUVudGl0eVNldFBhdGgobWV0YU1vZGVsLCBjb250ZXh0UGF0aFRvQ2hlY2spO1xuXHRcdGlmICghX2ZuSXNBcHBsaWNhYmxlKGNvbnRleHRQYXRoVG9DaGVjaywgcGF0aFRvQ2hlY2ssIHN0cmF0ZWd5KSkge1xuXHRcdFx0cGF0aFRvQ2hlY2sgPSBfZm5TaW1wbGlmeUVudGl0eVNldFBhdGgobWV0YU1vZGVsLCBwYXRoVG9DaGVjayk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gX2ZuSXNBcHBsaWNhYmxlKGNvbnRleHRQYXRoVG9DaGVjaywgcGF0aFRvQ2hlY2ssIHN0cmF0ZWd5KTtcbn07XG4vLyBQcml2YXRlIGZ1bmN0aW9ucyAtIGVuZFxuLyoqXG4gKiBHZXQgY29udHJvbHMgdG8gcmVmcmVzaCBpbiBhIHZpZXcuXG4gKlxuICogQHBhcmFtIHtWaWV3fSB2aWV3IFZpZXcgb2YgdGhlIGNvbnRyb2xzXG4gKiBAcGFyYW0ge0NvbnRyb2xbXX0gY29udHJvbHMgQ29udGV4dCBwYXRoIHRvIGJlIHVzZWRcbiAqIEByZXR1cm5zIHtDb250cm9sW119IFJldHVybnMgY29udHJvbHMgdGhhdCBuZWVkIHRvIGJlIHJlZnJlc2hlZC5cbiAqL1xuY29uc3QgZ2V0Q29udHJvbHNGb3JSZWZyZXNoID0gZnVuY3Rpb24odmlldzogVmlldywgY29udHJvbHM6IENvbnRyb2xbXSk6IENvbnRyb2xbXSB7XG5cdGNvbnN0IGNvbnRyb2xzRm9yUmVmcmVzaDogQ29udHJvbFtdID0gW107XG5cdGNvbnN0IG1ldGFNb2RlbCA9IHZpZXcuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKSBhcyBPRGF0YU1ldGFNb2RlbDtcblx0Y29uc3QgaW50ZXJuYWxNb2RlbCA9IHZpZXcuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKTtcblx0Y29uc3QgcmVmcmVzaFN0cmF0ZWd5ID0gaW50ZXJuYWxNb2RlbC5nZXRQcm9wZXJ0eShQQVRIX1RPX1NUT1JFKSB8fCB7fTtcblx0aWYgKGNvbnRyb2xzKSB7XG5cdFx0Y29udHJvbHMuZm9yRWFjaChmdW5jdGlvbihjb250cm9sKSB7XG5cdFx0XHRjb25zdCBjb250ZXh0UGF0aCA9IGNvbnRyb2wuZGF0YShcInRhcmdldENvbGxlY3Rpb25QYXRoXCIpO1xuXHRcdFx0Zm9yIChjb25zdCBrZXkgaW4gcmVmcmVzaFN0cmF0ZWd5KSB7XG5cdFx0XHRcdGNvbnN0IHN0cmF0ZWd5ID0gcmVmcmVzaFN0cmF0ZWd5W2tleV07XG5cdFx0XHRcdGlmIChjb250cm9sc0ZvclJlZnJlc2guaW5kZXhPZihjb250cm9sKSA9PT0gLTEgJiYgX2lzUGF0aEFwcGxpY2FibGVUb0NvbnRleHRQYXRoKG1ldGFNb2RlbCwgY29udGV4dFBhdGgsIGtleSwgc3RyYXRlZ3kpKSB7XG5cdFx0XHRcdFx0Y29udHJvbHNGb3JSZWZyZXNoLnB1c2goY29udHJvbCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXHRyZXR1cm4gY29udHJvbHNGb3JSZWZyZXNoO1xufTtcbi8qKlxuICogR2V0IHJlZnJlc2ggc3RyYXRlZ3kgZm9yIHRoZSBjb250cm9sIGZvciBhIGNvbnRleHQgcGF0aC5cbiAqXG4gKiBAcGFyYW0ge0NvbnRyb2x9IGNvbnRyb2wgQ29udHJvbCBmcm9tIHdoaWNoIHJlZnJlc2ggaW5mbyBpcyBuZWVkZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZXh0UGF0aCBDb250ZXh0UGF0aCBmb3IgcHJvcGVyaXRpZXNcbiAqIEByZXR1cm5zIHtSZWZyZXNoU3RyYXRlZ3lUeXBlfSBSZXR1cm5zIHN0cmF0ZWd5IGZvciBjb250cm9sIHJlZnJlc2guXG4gKi9cbmNvbnN0IGdldENvbnRyb2xSZWZyZXNoU3RyYXRlZ3lGb3JDb250ZXh0UGF0aCA9IGZ1bmN0aW9uKGNvbnRyb2w6IENvbnRyb2wsIGNvbnRleHRQYXRoOiBzdHJpbmcpOiBSZWZyZXNoU3RyYXRlZ3lUeXBlIHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgbWV0YU1vZGVsID0gY29udHJvbC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpIGFzIE9EYXRhTWV0YU1vZGVsO1xuXHRjb25zdCBpbnRlcm5hbE1vZGVsID0gY29udHJvbC5nZXRNb2RlbChcImludGVybmFsXCIpO1xuXHRjb25zdCByZWZyZXNoU3RyYXRlZ3kgPSBpbnRlcm5hbE1vZGVsLmdldFByb3BlcnR5KFBBVEhfVE9fU1RPUkUpIHx8IHt9O1xuXHRsZXQgc3RyYXRlZ3k7XG5cdGlmIChjb250ZXh0UGF0aCkge1xuXHRcdGZvciAoY29uc3Qga2V5IGluIHJlZnJlc2hTdHJhdGVneSkge1xuXHRcdFx0Y29uc3Qgc3RyYXRlZ3lUb0NoZWNrID0gcmVmcmVzaFN0cmF0ZWd5W2tleV07XG5cdFx0XHRpZiAoX2lzUGF0aEFwcGxpY2FibGVUb0NvbnRleHRQYXRoKG1ldGFNb2RlbCwgY29udGV4dFBhdGgsIGtleSwgc3RyYXRlZ3lUb0NoZWNrKSkge1xuXHRcdFx0XHRzdHJhdGVneSA9IHN0cmF0ZWd5VG9DaGVjaztcblx0XHRcdFx0aWYgKHN0cmF0ZWd5ID09PSBcImluY2x1ZGluZ0RlcGVuZGVudHNcIikge1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdHJldHVybiBzdHJhdGVneTtcbn07XG4vKipcbiAqIEdldCByZWZyZXNoIGluZm8gZnJvbSB2aWV3LlxuICpcbiAqIEBwYXJhbSB7Vmlld30gdmlldyBWaWV3IGZyb20gd2hpY2ggcmVmcmVzaCBpbmZvIGlzIG5lZWRlZFxuICogQHJldHVybnMge1JlZnJlc2hTdHJhdGVneVR5cGUgfCB1bmRlZmluZWR9IFJldHVybnMgc3RyYXRlZ3kgZm9yIHZpZXcgcmVmcmVzaC5cbiAqL1xuY29uc3QgZ2V0Vmlld1JlZnJlc2hJbmZvID0gZnVuY3Rpb24odmlldzogVmlldyk6IFJlZnJlc2hTdHJhdGVneVR5cGUgfCB1bmRlZmluZWQge1xuXHRjb25zdCB2aWV3RGF0YSA9IHZpZXcuZ2V0Vmlld0RhdGEoKSBhcyBCYXNlTWFuaWZlc3RTZXR0aW5ncyxcblx0XHRjb250ZXh0UGF0aCA9IHZpZXdEYXRhICYmICh2aWV3RGF0YT8uY29udGV4dFBhdGggfHwgXCIvXCIgKyB2aWV3RGF0YT8uZW50aXR5U2V0KTtcblx0cmV0dXJuIEtlZXBBbGl2ZUhlbHBlci5nZXRDb250cm9sUmVmcmVzaFN0cmF0ZWd5Rm9yQ29udGV4dFBhdGgodmlldywgY29udGV4dFBhdGgpO1xufTtcblxuLyoqXG4gKiBHZXQgcmVmcmVzaCBzdHJhdGVneSBmb3IgYW4gaW50ZW50LlxuICpcbiAqIEBwYXJhbSB7UmVmcmVzaFN0cmF0ZWdpZXN9IHJlZnJlc2hTdHJhdGVnaWVzIFJlZnJlc2hTdHJhdGVnaWVzIHRvIGNvbnNpZGVyXG4gKiBAcGFyYW0ge3N0cmluZ30gc2VtYW50aWNPYmplY3QgT3V0Ym91bmQgU2VtYW50aWMgT2JqZWN0XG4gKiBAcGFyYW0ge3N0cmluZ30gYWN0aW9uIE91dGJvdW5kIEFjdGlvblxuICogQHJldHVybnMge1NPUmVmcmVzaFN0cmF0ZWd5IHwgdW5kZWZpbmVkfSBSZXR1cm5zIHJlZnJlc2ggc3RyYXRlZ2llcyB0byB1c2UgZm9yIHRoZSBpbnRlbnQuXG4gKi9cbmNvbnN0IGdldFJlZnJlc2hTdHJhdGVneUZvckludGVudCA9IGZ1bmN0aW9uKFxuXHRyZWZyZXNoU3RyYXRlZ2llczogUmVmcmVzaFN0cmF0ZWdpZXMsXG5cdHNlbWFudGljT2JqZWN0Pzogc3RyaW5nLFxuXHRhY3Rpb24/OiBzdHJpbmdcbik6IFNPUmVmcmVzaFN0cmF0ZWd5IHwgdW5kZWZpbmVkIHtcblx0Y29uc3Qgc29BY3Rpb24gPSBzZW1hbnRpY09iamVjdCAmJiBhY3Rpb24gJiYgc2VtYW50aWNPYmplY3QgKyBcIi1cIiArIGFjdGlvbjtcblx0Y29uc3QgaW50ZW50cyA9IHJlZnJlc2hTdHJhdGVnaWVzLmludGVudHM7XG5cdGNvbnN0IHNvQWN0aW9uSW50ZW50TWF0Y2ggPSBpbnRlbnRzICYmIHNvQWN0aW9uICYmIGludGVudHNbc29BY3Rpb25dO1xuXHRjb25zdCBzb0ludGVudE1hdGNoID0gIXNvQWN0aW9uSW50ZW50TWF0Y2ggJiYgaW50ZW50cyAmJiBzZW1hbnRpY09iamVjdCAmJiBpbnRlbnRzW3NlbWFudGljT2JqZWN0XTtcblxuXHRyZXR1cm4gc29BY3Rpb25JbnRlbnRNYXRjaCB8fCBzb0ludGVudE1hdGNoIHx8IHJlZnJlc2hTdHJhdGVnaWVzPy5kZWZhdWx0QmVoYXZpb3IgfHwgcmVmcmVzaFN0cmF0ZWdpZXM/Ll9mZURlZmF1bHQ7XG59O1xuLyoqXG4gKiBTdG9yZSBjb250cm9sIHJlZnJlc2ggc3RyYXRlZ3kgZm9yIGhhc2ggaW4gdGhlIGludGVybmFsIG1vZGVsLlxuICpcbiAqIEBwYXJhbSB7Q29udHJvbH0gY29udHJvbCBDb250cm9sIGZvciB0aGUgcmVmcmVzaCBzdHJhdGVneVxuICogQHBhcmFtIHtTT0FjdGlvbn0gaGFzaCBTaGVsbCBoYXNoIG9iamVjdFxuICovXG5jb25zdCBzdG9yZUNvbnRyb2xSZWZyZXNoU3RyYXRlZ3lGb3JIYXNoID0gZnVuY3Rpb24oY29udHJvbDogQ29udHJvbCwgaGFzaDogU09BY3Rpb24pOiB2b2lkIHtcblx0aWYgKGNvbnRyb2wgJiYgY29udHJvbC5nZXRNb2RlbChcInZpZXdEYXRhXCIpICYmIGNvbnRyb2wuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSkge1xuXHRcdGNvbnN0IHZpZXdEYXRhID0gY29udHJvbC5nZXRNb2RlbChcInZpZXdEYXRhXCIpO1xuXHRcdGNvbnN0IHJlZnJlc2hTdHJhdGVnaWVzOiBSZWZyZXNoU3RyYXRlZ2llcyA9IHZpZXdEYXRhLmdldFByb3BlcnR5KFBBVEhfVE9fU1RPUkUpO1xuXHRcdGlmIChyZWZyZXNoU3RyYXRlZ2llcykge1xuXHRcdFx0Y29uc3QgaW50ZXJuYWxNb2RlbCA9IGNvbnRyb2wuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKTtcblx0XHRcdGNvbnN0IHJlZnJlc2hTdHJhdGVneTogU09SZWZyZXNoU3RyYXRlZ3kgfCB1bmRlZmluZWQgPSBLZWVwQWxpdmVIZWxwZXIuZ2V0UmVmcmVzaFN0cmF0ZWd5Rm9ySW50ZW50KFxuXHRcdFx0XHRyZWZyZXNoU3RyYXRlZ2llcyxcblx0XHRcdFx0aGFzaD8uc2VtYW50aWNPYmplY3QsXG5cdFx0XHRcdGhhc2g/LmFjdGlvblxuXHRcdFx0KTtcblx0XHRcdChpbnRlcm5hbE1vZGVsIGFzIEpTT05Nb2RlbCkuc2V0UHJvcGVydHkoUEFUSF9UT19TVE9SRSwgcmVmcmVzaFN0cmF0ZWd5KTtcblx0XHR9XG5cdH1cbn07XG5cbi8qKlxuICogTWV0aG9kIHRvIHJlZnJlc2ggYW5kIHJlc3RvcmUgdGhlIHZpZXcgaWYgbmVjY2Vzc2FyeS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gdmlldyBDb250cm9sIGZvciB0aGUgcmVmcmVzaCBzdHJhdGVneVxuICogQHJldHVybnMge29iamVjdH0gQSBwcm9taXNlIGFmdGVyIHZpZXcgcmVmcmVzaCBhbmQgcmVzdG9yZSBhcmUgdHJpZ2dlcmVkXG4gKi9cbmNvbnN0IHJlc3RvcmVWaWV3ID0gZnVuY3Rpb24odmlldzogVmlldyk6IFByb21pc2U8YW55PiB7XG5cdGNvbnN0IGludGVybmFsTW9kZWxDb250ZXh0ID0gdmlldy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXHRjb25zdCBjb250cm9sbGVyID0gdmlldy5nZXRDb250cm9sbGVyKCk7XG5cdGNvbnN0IHZpZXdTdGF0ZSA9IChjb250cm9sbGVyIGFzIGFueSk/LnZpZXdTdGF0ZTtcblx0bGV0IHJlZnJlc2hCaW5kaW5ncyA9IFByb21pc2UucmVzb2x2ZSgpO1xuXHRpZiAoaW50ZXJuYWxNb2RlbENvbnRleHQgJiYgaW50ZXJuYWxNb2RlbENvbnRleHQuZ2V0UHJvcGVydHkoXCJyZXN0b3JlU3RhdHVzXCIpID09PSBcInBlbmRpbmdcIikge1xuXHRcdGlmICh2aWV3U3RhdGUucmVmcmVzaFZpZXdCaW5kaW5ncykge1xuXHRcdFx0cmVmcmVzaEJpbmRpbmdzID0gdmlld1N0YXRlLnJlZnJlc2hWaWV3QmluZGluZ3MoKTtcblx0XHRcdHJlZnJlc2hCaW5kaW5nc1xuXHRcdFx0XHQudGhlbihmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRMb2cuaW5mbyhcIkZFIFY0OiBSZWZyZXNoIHdhcyB0cmlnZ2VyZWQgc3VjY2Vzc2Z1bGw6IFwiICsgdmlldy5nZXRJZCgpKTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKGZ1bmN0aW9uKGVycikge1xuXHRcdFx0XHRcdExvZy53YXJuaW5nKFwiRkUgVjQ6IFJlZnJlc2ggd2FzIHVuc3VjY2Vzc2Z1bGw6IFwiICsgdmlldy5nZXRJZCgpLCBlcnIpO1xuXHRcdFx0XHR9KTtcblx0XHR9XG5cdFx0cmVmcmVzaEJpbmRpbmdzID0gcmVmcmVzaEJpbmRpbmdzXG5cdFx0XHQudGhlbihmdW5jdGlvbigpIHtcblx0XHRcdFx0dmlld1N0YXRlLm9uUmVzdG9yZSgpO1xuXHRcdFx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcInJlc3RvcmVTdGF0dXNcIiwgXCJkb25lXCIpO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbihlcnJvcikge1xuXHRcdFx0XHRMb2cud2FybmluZyhcIkZFIFY0OiBSZXN0b3JlIHdhcyB1bnN1Y2Nlc3NmdWxsOiBcIiArIHZpZXcuZ2V0SWQoKSwgZXJyb3IpO1xuXHRcdFx0fSk7XG5cdH1cblx0cmV0dXJuIHJlZnJlc2hCaW5kaW5ncztcbn07XG5cbi8qKlxuICogaGVscGVyIGNsYXNzIGZvciBLZWVwQWxpdmUgZmVhdHVyZSBpbiBzYXAuZmUuXG4gKi9cbmNvbnN0IEtlZXBBbGl2ZUhlbHBlciA9IHtcblx0Z2V0Q29udHJvbHNGb3JSZWZyZXNoLFxuXHRnZXRDb250cm9sUmVmcmVzaFN0cmF0ZWd5Rm9yQ29udGV4dFBhdGgsXG5cdGdldFZpZXdSZWZyZXNoSW5mbyxcblx0Z2V0UmVmcmVzaFN0cmF0ZWd5Rm9ySW50ZW50LFxuXHRzdG9yZUNvbnRyb2xSZWZyZXNoU3RyYXRlZ3lGb3JIYXNoLFxuXHRyZXN0b3JlVmlld1xufTtcbmV4cG9ydCBkZWZhdWx0IEtlZXBBbGl2ZUhlbHBlcjtcbiJdfQ==
210
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIktlZXBBbGl2ZUhlbHBlci50cyJdLCJuYW1lcyI6WyJfZm5TaW1wbGlmeUVudGl0eVNldFBhdGgiLCJtZXRhTW9kZWwiLCJlbnRpdHlTZXRQYXRoVG9Vc2UiLCJlbnRpdHlTZXRQYXRoIiwiTW9kZWxIZWxwZXIiLCJnZXRFbnRpdHlTZXRQYXRoIiwiZW50aXR5U2V0IiwiaW5kZXhPZiIsImdldE9iamVjdCIsIl9mbklzQXBwbGljYWJsZSIsInByaW1hcnlQYXRoIiwia2V5Iiwic3RyYXRlZ3kiLCJSZWZyZXNoU3RyYXRlZ3lUeXBlIiwiSW5jbHVkaW5nRGVwZW5kZW50cyIsInN0YXJ0c1dpdGgiLCJfaXNQYXRoQXBwbGljYWJsZVRvQ29udGV4dFBhdGgiLCJjb250ZXh0UGF0aCIsInBhdGgiLCJjb250ZXh0UGF0aFRvQ2hlY2siLCJwYXRoVG9DaGVjayIsImdldENvbnRyb2xzRm9yUmVmcmVzaCIsInZpZXciLCJjb250cm9scyIsImNvbnRyb2xzRm9yUmVmcmVzaCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwiaW50ZXJuYWxNb2RlbCIsInJlZnJlc2hTdHJhdGVneSIsImdldFByb3BlcnR5IiwiUEFUSF9UT19TVE9SRSIsImZvckVhY2giLCJjb250cm9sIiwiZGF0YSIsInB1c2giLCJnZXRDb250cm9sUmVmcmVzaFN0cmF0ZWd5Rm9yQ29udGV4dFBhdGgiLCJzdHJhdGVneVRvQ2hlY2siLCJnZXRWaWV3UmVmcmVzaEluZm8iLCJ2aWV3RGF0YSIsImdldFZpZXdEYXRhIiwiS2VlcEFsaXZlSGVscGVyIiwiZ2V0UmVmcmVzaFN0cmF0ZWd5Rm9ySW50ZW50IiwicmVmcmVzaFN0cmF0ZWdpZXMiLCJzZW1hbnRpY09iamVjdCIsImFjdGlvbiIsInNvQWN0aW9uIiwiaW50ZW50cyIsInNvQWN0aW9uSW50ZW50TWF0Y2giLCJzb0ludGVudE1hdGNoIiwiZGVmYXVsdEJlaGF2aW9yIiwiX2ZlRGVmYXVsdCIsInN0b3JlQ29udHJvbFJlZnJlc2hTdHJhdGVneUZvckhhc2giLCJoYXNoIiwic2V0UHJvcGVydHkiLCJyZXN0b3JlVmlldyIsImludGVybmFsTW9kZWxDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJjb250cm9sbGVyIiwiZ2V0Q29udHJvbGxlciIsInZpZXdTdGF0ZSIsInJlZnJlc2hCaW5kaW5ncyIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVmcmVzaFZpZXdCaW5kaW5ncyIsInRoZW4iLCJMb2ciLCJpbmZvIiwiZ2V0SWQiLCJjYXRjaCIsImVyciIsIndhcm5pbmciLCJvblJlc3RvcmUiLCJlcnJvciJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7OztBQVNBO0FBQ0EsTUFBTUEsd0JBQXdCLEdBQUcsVUFBVUMsU0FBVixFQUFxQ0Msa0JBQXJDLEVBQXlFO0FBQ3pHLFFBQU1DLGFBQWEsR0FBR0MsV0FBVyxDQUFDQyxnQkFBWixDQUE2Qkgsa0JBQTdCLENBQXRCO0FBQ0EsUUFBTUksU0FBUyxHQUFHSCxhQUFhLENBQUNJLE9BQWQsQ0FBc0IsNEJBQXRCLElBQXNELENBQUMsQ0FBdkQsSUFBNEROLFNBQVMsQ0FBQ08sU0FBVixDQUFvQkwsYUFBcEIsQ0FBOUU7QUFDQSxXQUFPRyxTQUFTLGNBQU9BLFNBQVAsSUFBcUJKLGtCQUFyQztBQUNBLEdBSkQ7O0FBS0EsTUFBTU8sZUFBZSxHQUFHLFVBQVVDLFdBQVYsRUFBK0JDLEdBQS9CLEVBQTRDQyxRQUE1QyxFQUFvRjtBQUMzRyxXQUFPRixXQUFXLEtBQUtDLEdBQWhCLElBQXdCQyxRQUFRLEtBQUtDLG1CQUFtQixDQUFDQyxtQkFBakMsSUFBd0RKLFdBQVcsQ0FBQ0ssVUFBWixDQUF1QkosR0FBdkIsQ0FBdkY7QUFDQSxHQUZEO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQSxNQUFNSyw4QkFBOEIsR0FBRyxVQUN0Q2YsU0FEc0MsRUFFdENnQixXQUZzQyxFQUd0Q0MsSUFIc0MsRUFJdENOLFFBSnNDLEVBSzVCO0FBQ1YsUUFBSU8sa0JBQWtCLEdBQUdGLFdBQVcsQ0FBQ0YsVUFBWixDQUF1QixHQUF2QixJQUE4QkUsV0FBOUIsY0FBZ0RBLFdBQWhELENBQXpCO0FBQUEsUUFDQ0csV0FBVyxHQUFHRixJQUFJLENBQUNILFVBQUwsQ0FBZ0IsR0FBaEIsSUFBdUJHLElBQXZCLGNBQWtDQSxJQUFsQyxDQURmOztBQUVBLFFBQUksQ0FBQ1QsZUFBZSxDQUFDVSxrQkFBRCxFQUFxQkMsV0FBckIsRUFBa0NSLFFBQWxDLENBQXBCLEVBQWlFO0FBQ2hFTyxNQUFBQSxrQkFBa0IsR0FBR25CLHdCQUF3QixDQUFDQyxTQUFELEVBQVlrQixrQkFBWixDQUE3Qzs7QUFDQSxVQUFJLENBQUNWLGVBQWUsQ0FBQ1Usa0JBQUQsRUFBcUJDLFdBQXJCLEVBQWtDUixRQUFsQyxDQUFwQixFQUFpRTtBQUNoRVEsUUFBQUEsV0FBVyxHQUFHcEIsd0JBQXdCLENBQUNDLFNBQUQsRUFBWW1CLFdBQVosQ0FBdEM7QUFDQSxPQUZELE1BRU87QUFDTixlQUFPLElBQVA7QUFDQTtBQUNEOztBQUNELFdBQU9YLGVBQWUsQ0FBQ1Usa0JBQUQsRUFBcUJDLFdBQXJCLEVBQWtDUixRQUFsQyxDQUF0QjtBQUNBLEdBakJELEMsQ0FrQkE7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBLE1BQU1TLHFCQUFxQixHQUFHLFVBQVVDLElBQVYsRUFBc0JDLFFBQXRCLEVBQXNEO0FBQ25GLFFBQU1DLGtCQUE2QixHQUFHLEVBQXRDO0FBQ0EsUUFBTXZCLFNBQVMsR0FBR3FCLElBQUksQ0FBQ0csUUFBTCxHQUFnQkMsWUFBaEIsRUFBbEI7QUFDQSxRQUFNQyxhQUFhLEdBQUdMLElBQUksQ0FBQ0csUUFBTCxDQUFjLFVBQWQsQ0FBdEI7QUFDQSxRQUFNRyxlQUFlLEdBQUdELGFBQWEsQ0FBQ0UsV0FBZCxDQUEwQkMsYUFBMUIsS0FBNEMsRUFBcEU7O0FBQ0EsUUFBSVAsUUFBSixFQUFjO0FBQ2JBLE1BQUFBLFFBQVEsQ0FBQ1EsT0FBVCxDQUFpQixVQUFVQyxPQUFWLEVBQW1CO0FBQ25DLFlBQU1mLFdBQVcsR0FBR2UsT0FBTyxDQUFDQyxJQUFSLENBQWEsc0JBQWIsQ0FBcEI7O0FBQ0EsYUFBSyxJQUFNdEIsR0FBWCxJQUFrQmlCLGVBQWxCLEVBQW1DO0FBQ2xDLGNBQU1oQixRQUFRLEdBQUdnQixlQUFlLENBQUNqQixHQUFELENBQWhDOztBQUNBLGNBQUlhLGtCQUFrQixDQUFDakIsT0FBbkIsQ0FBMkJ5QixPQUEzQixNQUF3QyxDQUFDLENBQXpDLElBQThDaEIsOEJBQThCLENBQUNmLFNBQUQsRUFBWWdCLFdBQVosRUFBeUJOLEdBQXpCLEVBQThCQyxRQUE5QixDQUFoRixFQUF5SDtBQUN4SFksWUFBQUEsa0JBQWtCLENBQUNVLElBQW5CLENBQXdCRixPQUF4QjtBQUNBO0FBQ0Q7QUFDRCxPQVJEO0FBU0E7O0FBQ0QsV0FBT1Isa0JBQVA7QUFDQSxHQWpCRDtBQWtCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0EsTUFBTVcsdUNBQXVDLEdBQUcsVUFBVUgsT0FBVixFQUE0QmYsV0FBNUIsRUFBa0Y7QUFDakksUUFBTWhCLFNBQVMsR0FBRytCLE9BQU8sQ0FBQ1AsUUFBUixHQUFtQkMsWUFBbkIsRUFBbEI7QUFDQSxRQUFNQyxhQUFhLEdBQUdLLE9BQU8sQ0FBQ1AsUUFBUixDQUFpQixVQUFqQixDQUF0QjtBQUNBLFFBQU1HLGVBQWUsR0FBR0QsYUFBYSxDQUFDRSxXQUFkLENBQTBCQyxhQUExQixLQUE0QyxFQUFwRTtBQUNBLFFBQUlsQixRQUFKOztBQUNBLFFBQUlLLFdBQUosRUFBaUI7QUFDaEIsV0FBSyxJQUFNTixHQUFYLElBQWtCaUIsZUFBbEIsRUFBbUM7QUFDbEMsWUFBTVEsZUFBZSxHQUFHUixlQUFlLENBQUNqQixHQUFELENBQXZDOztBQUNBLFlBQUlLLDhCQUE4QixDQUFDZixTQUFELEVBQVlnQixXQUFaLEVBQXlCTixHQUF6QixFQUE4QnlCLGVBQTlCLENBQWxDLEVBQWtGO0FBQ2pGeEIsVUFBQUEsUUFBUSxHQUFHd0IsZUFBWDs7QUFDQSxjQUFJeEIsUUFBUSxLQUFLLHFCQUFqQixFQUF3QztBQUN2QztBQUNBO0FBQ0Q7QUFDRDtBQUNEOztBQUNELFdBQU9BLFFBQVA7QUFDQSxHQWpCRDtBQWtCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBLE1BQU15QixrQkFBa0IsR0FBRyxVQUFVZixJQUFWLEVBQXVEO0FBQ2pGLFFBQU1nQixRQUFRLEdBQUdoQixJQUFJLENBQUNpQixXQUFMLEVBQWpCO0FBQUEsUUFDQ3RCLFdBQVcsR0FBR3FCLFFBQVEsS0FBSyxDQUFBQSxRQUFRLFNBQVIsSUFBQUEsUUFBUSxXQUFSLFlBQUFBLFFBQVEsQ0FBRXJCLFdBQVYsZ0JBQTZCcUIsUUFBN0IsYUFBNkJBLFFBQTdCLHVCQUE2QkEsUUFBUSxDQUFFaEMsU0FBdkMsQ0FBTCxDQUR2QjtBQUVBLFdBQU9rQyxlQUFlLENBQUNMLHVDQUFoQixDQUF3RGIsSUFBeEQsRUFBOERMLFdBQTlELENBQVA7QUFDQSxHQUpEO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0EsTUFBTXdCLDJCQUEyQixHQUFHLFVBQ25DQyxpQkFEbUMsRUFFbkNDLGNBRm1DLEVBR25DQyxNQUhtQyxFQUlIO0FBQ2hDLFFBQU1DLFFBQVEsR0FBR0YsY0FBYyxJQUFJQyxNQUFsQixjQUErQkQsY0FBL0IsY0FBaURDLE1BQWpELENBQWpCO0FBQ0EsUUFBTUUsT0FBTyxHQUFHSixpQkFBaUIsQ0FBQ0ksT0FBbEM7QUFDQSxRQUFNQyxtQkFBbUIsR0FBR0QsT0FBTyxJQUFJRCxRQUFYLElBQXVCQyxPQUFPLENBQUNELFFBQUQsQ0FBMUQ7QUFDQSxRQUFNRyxhQUFhLEdBQUcsQ0FBQ0QsbUJBQUQsSUFBd0JELE9BQXhCLElBQW1DSCxjQUFuQyxJQUFxREcsT0FBTyxDQUFDSCxjQUFELENBQWxGO0FBRUEsV0FBT0ksbUJBQW1CLElBQUlDLGFBQXZCLEtBQXdDTixpQkFBeEMsYUFBd0NBLGlCQUF4Qyx1QkFBd0NBLGlCQUFpQixDQUFFTyxlQUEzRCxNQUE4RVAsaUJBQTlFLGFBQThFQSxpQkFBOUUsdUJBQThFQSxpQkFBaUIsQ0FBRVEsVUFBakcsQ0FBUDtBQUNBLEdBWEQ7QUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBLE1BQU1DLGtDQUFrQyxHQUFHLFVBQVVuQixPQUFWLEVBQTRCb0IsSUFBNUIsRUFBa0Q7QUFDNUYsUUFBSXBCLE9BQU8sSUFBSUEsT0FBTyxDQUFDUCxRQUFSLENBQWlCLFVBQWpCLENBQVgsSUFBMkNPLE9BQU8sQ0FBQ1AsUUFBUixDQUFpQixVQUFqQixDQUEvQyxFQUE2RTtBQUM1RSxVQUFNYSxRQUFRLEdBQUdOLE9BQU8sQ0FBQ1AsUUFBUixDQUFpQixVQUFqQixDQUFqQjtBQUNBLFVBQU1pQixpQkFBb0MsR0FBR0osUUFBUSxDQUFDVCxXQUFULENBQXFCQyxhQUFyQixDQUE3Qzs7QUFDQSxVQUFJWSxpQkFBSixFQUF1QjtBQUN0QixZQUFNZixhQUFhLEdBQUdLLE9BQU8sQ0FBQ1AsUUFBUixDQUFpQixVQUFqQixDQUF0QjtBQUNBLFlBQU1HLGVBQThDLEdBQUdZLGVBQWUsQ0FBQ0MsMkJBQWhCLENBQ3REQyxpQkFEc0QsRUFFdERVLElBRnNELGFBRXREQSxJQUZzRCx1QkFFdERBLElBQUksQ0FBRVQsY0FGZ0QsRUFHdERTLElBSHNELGFBR3REQSxJQUhzRCx1QkFHdERBLElBQUksQ0FBRVIsTUFIZ0QsQ0FBdkQ7QUFLQ2pCLFFBQUFBLGFBQUQsQ0FBNkIwQixXQUE3QixDQUF5Q3ZCLGFBQXpDLEVBQXdERixlQUF4RDtBQUNBO0FBQ0Q7QUFDRCxHQWREO0FBZ0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0EsTUFBTTBCLFdBQVcsR0FBRyxVQUFVaEMsSUFBVixFQUFvQztBQUN2RCxRQUFNaUMsb0JBQW9CLEdBQUdqQyxJQUFJLENBQUNrQyxpQkFBTCxDQUF1QixVQUF2QixDQUE3QjtBQUNBLFFBQU1DLFVBQVUsR0FBR25DLElBQUksQ0FBQ29DLGFBQUwsRUFBbkI7QUFDQSxRQUFNQyxTQUFTLEdBQUlGLFVBQUosYUFBSUEsVUFBSix1QkFBSUEsVUFBRCxDQUFxQkUsU0FBdkM7QUFDQSxRQUFJQyxlQUFlLEdBQUdDLE9BQU8sQ0FBQ0MsT0FBUixFQUF0Qjs7QUFDQSxRQUFJUCxvQkFBb0IsSUFBSUEsb0JBQW9CLENBQUMxQixXQUFyQixDQUFpQyxlQUFqQyxNQUFzRCxTQUFsRixFQUE2RjtBQUM1RixVQUFJOEIsU0FBUyxDQUFDSSxtQkFBZCxFQUFtQztBQUNsQ0gsUUFBQUEsZUFBZSxHQUFHRCxTQUFTLENBQUNJLG1CQUFWLEVBQWxCO0FBQ0FILFFBQUFBLGVBQWUsQ0FDYkksSUFERixDQUNPLFlBQVk7QUFDakJDLFVBQUFBLEdBQUcsQ0FBQ0MsSUFBSixxREFBc0Q1QyxJQUFJLENBQUM2QyxLQUFMLEVBQXREO0FBQ0EsU0FIRixFQUlFQyxLQUpGLENBSVEsVUFBVUMsR0FBVixFQUFlO0FBQ3JCSixVQUFBQSxHQUFHLENBQUNLLE9BQUosNkNBQWlEaEQsSUFBSSxDQUFDNkMsS0FBTCxFQUFqRCxHQUFpRUUsR0FBakU7QUFDQSxTQU5GO0FBT0E7O0FBQ0RULE1BQUFBLGVBQWUsR0FBR0EsZUFBZSxDQUMvQkksSUFEZ0IsQ0FDWCxZQUFZO0FBQ2pCTCxRQUFBQSxTQUFTLENBQUNZLFNBQVY7QUFDQWhCLFFBQUFBLG9CQUFvQixDQUFDRixXQUFyQixDQUFpQyxlQUFqQyxFQUFrRCxNQUFsRDtBQUNBLE9BSmdCLEVBS2hCZSxLQUxnQixDQUtWLFVBQVVJLEtBQVYsRUFBaUI7QUFDdkJQLFFBQUFBLEdBQUcsQ0FBQ0ssT0FBSiw2Q0FBaURoRCxJQUFJLENBQUM2QyxLQUFMLEVBQWpELEdBQWlFSyxLQUFqRTtBQUNBLE9BUGdCLENBQWxCO0FBUUE7O0FBQ0QsV0FBT1osZUFBUDtBQUNBLEdBMUJEO0FBNEJBO0FBQ0E7QUFDQTs7O0FBQ0EsTUFBTXBCLGVBQWUsR0FBRztBQUN2Qm5CLElBQUFBLHFCQUFxQixFQUFyQkEscUJBRHVCO0FBRXZCYyxJQUFBQSx1Q0FBdUMsRUFBdkNBLHVDQUZ1QjtBQUd2QkUsSUFBQUEsa0JBQWtCLEVBQWxCQSxrQkFIdUI7QUFJdkJJLElBQUFBLDJCQUEyQixFQUEzQkEsMkJBSnVCO0FBS3ZCVSxJQUFBQSxrQ0FBa0MsRUFBbENBLGtDQUx1QjtBQU12QkcsSUFBQUEsV0FBVyxFQUFYQTtBQU51QixHQUF4QjtTQVFlZCxlIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIHsgQmFzZU1hbmlmZXN0U2V0dGluZ3MgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgdHlwZSB7IFJlZnJlc2hTdHJhdGVnaWVzLCBTT0FjdGlvbiwgU09SZWZyZXNoU3RyYXRlZ3kgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9LZWVwQWxpdmVSZWZyZXNoVHlwZXNcIjtcbmltcG9ydCB7IFBBVEhfVE9fU1RPUkUsIFJlZnJlc2hTdHJhdGVneVR5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9LZWVwQWxpdmVSZWZyZXNoVHlwZXNcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9WaWV3XCI7XG5pbXBvcnQgdHlwZSBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbE1vZGVsQ29udGV4dCB9IGZyb20gXCIuL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcIi4vTW9kZWxIZWxwZXJcIjtcblxuLy8gUHJpdmF0ZSBmdW5jdGlvbnMgLSBzdGFydFxuY29uc3QgX2ZuU2ltcGxpZnlFbnRpdHlTZXRQYXRoID0gZnVuY3Rpb24gKG1ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwsIGVudGl0eVNldFBhdGhUb1VzZTogc3RyaW5nKTogc3RyaW5nIHtcblx0Y29uc3QgZW50aXR5U2V0UGF0aCA9IE1vZGVsSGVscGVyLmdldEVudGl0eVNldFBhdGgoZW50aXR5U2V0UGF0aFRvVXNlKTtcblx0Y29uc3QgZW50aXR5U2V0ID0gZW50aXR5U2V0UGF0aC5pbmRleE9mKFwiJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdcIikgPiAtMSAmJiBtZXRhTW9kZWwuZ2V0T2JqZWN0KGVudGl0eVNldFBhdGgpO1xuXHRyZXR1cm4gZW50aXR5U2V0ID8gYC8ke2VudGl0eVNldH1gIDogZW50aXR5U2V0UGF0aFRvVXNlO1xufTtcbmNvbnN0IF9mbklzQXBwbGljYWJsZSA9IGZ1bmN0aW9uIChwcmltYXJ5UGF0aDogc3RyaW5nLCBrZXk6IHN0cmluZywgc3RyYXRlZ3k6IFJlZnJlc2hTdHJhdGVneVR5cGUpOiBib29sZWFuIHtcblx0cmV0dXJuIHByaW1hcnlQYXRoID09PSBrZXkgfHwgKHN0cmF0ZWd5ID09PSBSZWZyZXNoU3RyYXRlZ3lUeXBlLkluY2x1ZGluZ0RlcGVuZGVudHMgJiYgcHJpbWFyeVBhdGguc3RhcnRzV2l0aChrZXkpKTtcbn07XG4vKipcbiAqIENoZWNrIGlmIGdpdmVuIHBhdGggcmVzaWRlcyBpbiB0aGUgY29udGV4dCBwYXRoIHByb3ZpZGVkLlxuICpcbiAqIEBwYXJhbSBtZXRhTW9kZWwgTWV0YU1vZGVsIHRvIGJlIHVzZWRcbiAqIEBwYXJhbSBjb250ZXh0UGF0aCBDb250ZXh0IHBhdGggdG8gYmUgdXNlZFxuICogQHBhcmFtIHBhdGggUGF0aCB0byBiZSB1c2VkXG4gKiBAcGFyYW0gc3RyYXRlZ3kgU3RyYXRlZ3ksIGl0IGNvdWxkIGJlICdzZWxmJyB8ICdpbmNsdWRpbmdEZXBlbmRlbnRzJ1xuICogQHJldHVybnMgUmV0dXJucyB0cnVlIGlmIHRoZSBjb250ZXh0IHBhdGggaXMgYXBwbGljYWJsZS5cbiAqL1xuY29uc3QgX2lzUGF0aEFwcGxpY2FibGVUb0NvbnRleHRQYXRoID0gZnVuY3Rpb24gKFxuXHRtZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsLFxuXHRjb250ZXh0UGF0aDogc3RyaW5nLFxuXHRwYXRoOiBzdHJpbmcsXG5cdHN0cmF0ZWd5OiBSZWZyZXNoU3RyYXRlZ3lUeXBlXG4pOiBib29sZWFuIHtcblx0bGV0IGNvbnRleHRQYXRoVG9DaGVjayA9IGNvbnRleHRQYXRoLnN0YXJ0c1dpdGgoXCIvXCIpID8gY29udGV4dFBhdGggOiBgLyR7Y29udGV4dFBhdGh9YCxcblx0XHRwYXRoVG9DaGVjayA9IHBhdGguc3RhcnRzV2l0aChcIi9cIikgPyBwYXRoIDogYC8ke3BhdGh9YDtcblx0aWYgKCFfZm5Jc0FwcGxpY2FibGUoY29udGV4dFBhdGhUb0NoZWNrLCBwYXRoVG9DaGVjaywgc3RyYXRlZ3kpKSB7XG5cdFx0Y29udGV4dFBhdGhUb0NoZWNrID0gX2ZuU2ltcGxpZnlFbnRpdHlTZXRQYXRoKG1ldGFNb2RlbCwgY29udGV4dFBhdGhUb0NoZWNrKTtcblx0XHRpZiAoIV9mbklzQXBwbGljYWJsZShjb250ZXh0UGF0aFRvQ2hlY2ssIHBhdGhUb0NoZWNrLCBzdHJhdGVneSkpIHtcblx0XHRcdHBhdGhUb0NoZWNrID0gX2ZuU2ltcGxpZnlFbnRpdHlTZXRQYXRoKG1ldGFNb2RlbCwgcGF0aFRvQ2hlY2spO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIF9mbklzQXBwbGljYWJsZShjb250ZXh0UGF0aFRvQ2hlY2ssIHBhdGhUb0NoZWNrLCBzdHJhdGVneSk7XG59O1xuLy8gUHJpdmF0ZSBmdW5jdGlvbnMgLSBlbmRcbi8qKlxuICogR2V0IGNvbnRyb2xzIHRvIHJlZnJlc2ggaW4gYSB2aWV3LlxuICpcbiAqIEBwYXJhbSB2aWV3IFZpZXcgb2YgdGhlIGNvbnRyb2xzXG4gKiBAcGFyYW0gY29udHJvbHMgQ29udGV4dCBwYXRoIHRvIGJlIHVzZWRcbiAqIEByZXR1cm5zIFJldHVybnMgY29udHJvbHMgdGhhdCBuZWVkIHRvIGJlIHJlZnJlc2hlZC5cbiAqL1xuY29uc3QgZ2V0Q29udHJvbHNGb3JSZWZyZXNoID0gZnVuY3Rpb24gKHZpZXc6IFZpZXcsIGNvbnRyb2xzOiBDb250cm9sW10pOiBDb250cm9sW10ge1xuXHRjb25zdCBjb250cm9sc0ZvclJlZnJlc2g6IENvbnRyb2xbXSA9IFtdO1xuXHRjb25zdCBtZXRhTW9kZWwgPSB2aWV3LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCkgYXMgT0RhdGFNZXRhTW9kZWw7XG5cdGNvbnN0IGludGVybmFsTW9kZWwgPSB2aWV3LmdldE1vZGVsKFwiaW50ZXJuYWxcIik7XG5cdGNvbnN0IHJlZnJlc2hTdHJhdGVneSA9IGludGVybmFsTW9kZWwuZ2V0UHJvcGVydHkoUEFUSF9UT19TVE9SRSkgfHwge307XG5cdGlmIChjb250cm9scykge1xuXHRcdGNvbnRyb2xzLmZvckVhY2goZnVuY3Rpb24gKGNvbnRyb2wpIHtcblx0XHRcdGNvbnN0IGNvbnRleHRQYXRoID0gY29udHJvbC5kYXRhKFwidGFyZ2V0Q29sbGVjdGlvblBhdGhcIik7XG5cdFx0XHRmb3IgKGNvbnN0IGtleSBpbiByZWZyZXNoU3RyYXRlZ3kpIHtcblx0XHRcdFx0Y29uc3Qgc3RyYXRlZ3kgPSByZWZyZXNoU3RyYXRlZ3lba2V5XTtcblx0XHRcdFx0aWYgKGNvbnRyb2xzRm9yUmVmcmVzaC5pbmRleE9mKGNvbnRyb2wpID09PSAtMSAmJiBfaXNQYXRoQXBwbGljYWJsZVRvQ29udGV4dFBhdGgobWV0YU1vZGVsLCBjb250ZXh0UGF0aCwga2V5LCBzdHJhdGVneSkpIHtcblx0XHRcdFx0XHRjb250cm9sc0ZvclJlZnJlc2gucHVzaChjb250cm9sKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cdHJldHVybiBjb250cm9sc0ZvclJlZnJlc2g7XG59O1xuLyoqXG4gKiBHZXQgcmVmcmVzaCBzdHJhdGVneSBmb3IgdGhlIGNvbnRyb2wgZm9yIGEgY29udGV4dCBwYXRoLlxuICpcbiAqIEBwYXJhbSBjb250cm9sIENvbnRyb2wgZnJvbSB3aGljaCByZWZyZXNoIGluZm8gaXMgbmVlZGVkXG4gKiBAcGFyYW0gY29udGV4dFBhdGggQ29udGV4dFBhdGggZm9yIHByb3Blcml0aWVzXG4gKiBAcmV0dXJucyBSZXR1cm5zIHN0cmF0ZWd5IGZvciBjb250cm9sIHJlZnJlc2guXG4gKi9cbmNvbnN0IGdldENvbnRyb2xSZWZyZXNoU3RyYXRlZ3lGb3JDb250ZXh0UGF0aCA9IGZ1bmN0aW9uIChjb250cm9sOiBDb250cm9sLCBjb250ZXh0UGF0aDogc3RyaW5nKTogUmVmcmVzaFN0cmF0ZWd5VHlwZSB8IHVuZGVmaW5lZCB7XG5cdGNvbnN0IG1ldGFNb2RlbCA9IGNvbnRyb2wuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKSBhcyBPRGF0YU1ldGFNb2RlbDtcblx0Y29uc3QgaW50ZXJuYWxNb2RlbCA9IGNvbnRyb2wuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKTtcblx0Y29uc3QgcmVmcmVzaFN0cmF0ZWd5ID0gaW50ZXJuYWxNb2RlbC5nZXRQcm9wZXJ0eShQQVRIX1RPX1NUT1JFKSB8fCB7fTtcblx0bGV0IHN0cmF0ZWd5O1xuXHRpZiAoY29udGV4dFBhdGgpIHtcblx0XHRmb3IgKGNvbnN0IGtleSBpbiByZWZyZXNoU3RyYXRlZ3kpIHtcblx0XHRcdGNvbnN0IHN0cmF0ZWd5VG9DaGVjayA9IHJlZnJlc2hTdHJhdGVneVtrZXldO1xuXHRcdFx0aWYgKF9pc1BhdGhBcHBsaWNhYmxlVG9Db250ZXh0UGF0aChtZXRhTW9kZWwsIGNvbnRleHRQYXRoLCBrZXksIHN0cmF0ZWd5VG9DaGVjaykpIHtcblx0XHRcdFx0c3RyYXRlZ3kgPSBzdHJhdGVneVRvQ2hlY2s7XG5cdFx0XHRcdGlmIChzdHJhdGVneSA9PT0gXCJpbmNsdWRpbmdEZXBlbmRlbnRzXCIpIHtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRyZXR1cm4gc3RyYXRlZ3k7XG59O1xuLyoqXG4gKiBHZXQgcmVmcmVzaCBpbmZvIGZyb20gdmlldy5cbiAqXG4gKiBAcGFyYW0gdmlldyBWaWV3IGZyb20gd2hpY2ggcmVmcmVzaCBpbmZvIGlzIG5lZWRlZFxuICogQHJldHVybnMgUmV0dXJucyBzdHJhdGVneSBmb3IgdmlldyByZWZyZXNoLlxuICovXG5jb25zdCBnZXRWaWV3UmVmcmVzaEluZm8gPSBmdW5jdGlvbiAodmlldzogVmlldyk6IFJlZnJlc2hTdHJhdGVneVR5cGUgfCB1bmRlZmluZWQge1xuXHRjb25zdCB2aWV3RGF0YSA9IHZpZXcuZ2V0Vmlld0RhdGEoKSBhcyBCYXNlTWFuaWZlc3RTZXR0aW5ncyxcblx0XHRjb250ZXh0UGF0aCA9IHZpZXdEYXRhICYmICh2aWV3RGF0YT8uY29udGV4dFBhdGggfHwgYC8ke3ZpZXdEYXRhPy5lbnRpdHlTZXR9YCk7XG5cdHJldHVybiBLZWVwQWxpdmVIZWxwZXIuZ2V0Q29udHJvbFJlZnJlc2hTdHJhdGVneUZvckNvbnRleHRQYXRoKHZpZXcsIGNvbnRleHRQYXRoKTtcbn07XG5cbi8qKlxuICogR2V0IHJlZnJlc2ggc3RyYXRlZ3kgZm9yIGFuIGludGVudC5cbiAqXG4gKiBAcGFyYW0gcmVmcmVzaFN0cmF0ZWdpZXMgUmVmcmVzaFN0cmF0ZWdpZXMgdG8gY29uc2lkZXJcbiAqIEBwYXJhbSBzZW1hbnRpY09iamVjdCBPdXRib3VuZCBTZW1hbnRpYyBPYmplY3RcbiAqIEBwYXJhbSBhY3Rpb24gT3V0Ym91bmQgQWN0aW9uXG4gKiBAcmV0dXJucyBSZXR1cm5zIHJlZnJlc2ggc3RyYXRlZ2llcyB0byB1c2UgZm9yIHRoZSBpbnRlbnQuXG4gKi9cbmNvbnN0IGdldFJlZnJlc2hTdHJhdGVneUZvckludGVudCA9IGZ1bmN0aW9uIChcblx0cmVmcmVzaFN0cmF0ZWdpZXM6IFJlZnJlc2hTdHJhdGVnaWVzLFxuXHRzZW1hbnRpY09iamVjdD86IHN0cmluZyxcblx0YWN0aW9uPzogc3RyaW5nXG4pOiBTT1JlZnJlc2hTdHJhdGVneSB8IHVuZGVmaW5lZCB7XG5cdGNvbnN0IHNvQWN0aW9uID0gc2VtYW50aWNPYmplY3QgJiYgYWN0aW9uICYmIGAke3NlbWFudGljT2JqZWN0fS0ke2FjdGlvbn1gO1xuXHRjb25zdCBpbnRlbnRzID0gcmVmcmVzaFN0cmF0ZWdpZXMuaW50ZW50cztcblx0Y29uc3Qgc29BY3Rpb25JbnRlbnRNYXRjaCA9IGludGVudHMgJiYgc29BY3Rpb24gJiYgaW50ZW50c1tzb0FjdGlvbl07XG5cdGNvbnN0IHNvSW50ZW50TWF0Y2ggPSAhc29BY3Rpb25JbnRlbnRNYXRjaCAmJiBpbnRlbnRzICYmIHNlbWFudGljT2JqZWN0ICYmIGludGVudHNbc2VtYW50aWNPYmplY3RdO1xuXG5cdHJldHVybiBzb0FjdGlvbkludGVudE1hdGNoIHx8IHNvSW50ZW50TWF0Y2ggfHwgcmVmcmVzaFN0cmF0ZWdpZXM/LmRlZmF1bHRCZWhhdmlvciB8fCByZWZyZXNoU3RyYXRlZ2llcz8uX2ZlRGVmYXVsdDtcbn07XG4vKipcbiAqIFN0b3JlIGNvbnRyb2wgcmVmcmVzaCBzdHJhdGVneSBmb3IgaGFzaCBpbiB0aGUgaW50ZXJuYWwgbW9kZWwuXG4gKlxuICogQHBhcmFtIGNvbnRyb2wgQ29udHJvbCBmb3IgdGhlIHJlZnJlc2ggc3RyYXRlZ3lcbiAqIEBwYXJhbSBoYXNoIFNoZWxsIGhhc2ggb2JqZWN0XG4gKi9cbmNvbnN0IHN0b3JlQ29udHJvbFJlZnJlc2hTdHJhdGVneUZvckhhc2ggPSBmdW5jdGlvbiAoY29udHJvbDogQ29udHJvbCwgaGFzaDogU09BY3Rpb24pOiB2b2lkIHtcblx0aWYgKGNvbnRyb2wgJiYgY29udHJvbC5nZXRNb2RlbChcInZpZXdEYXRhXCIpICYmIGNvbnRyb2wuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSkge1xuXHRcdGNvbnN0IHZpZXdEYXRhID0gY29udHJvbC5nZXRNb2RlbChcInZpZXdEYXRhXCIpO1xuXHRcdGNvbnN0IHJlZnJlc2hTdHJhdGVnaWVzOiBSZWZyZXNoU3RyYXRlZ2llcyA9IHZpZXdEYXRhLmdldFByb3BlcnR5KFBBVEhfVE9fU1RPUkUpO1xuXHRcdGlmIChyZWZyZXNoU3RyYXRlZ2llcykge1xuXHRcdFx0Y29uc3QgaW50ZXJuYWxNb2RlbCA9IGNvbnRyb2wuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKTtcblx0XHRcdGNvbnN0IHJlZnJlc2hTdHJhdGVneTogU09SZWZyZXNoU3RyYXRlZ3kgfCB1bmRlZmluZWQgPSBLZWVwQWxpdmVIZWxwZXIuZ2V0UmVmcmVzaFN0cmF0ZWd5Rm9ySW50ZW50KFxuXHRcdFx0XHRyZWZyZXNoU3RyYXRlZ2llcyxcblx0XHRcdFx0aGFzaD8uc2VtYW50aWNPYmplY3QsXG5cdFx0XHRcdGhhc2g/LmFjdGlvblxuXHRcdFx0KTtcblx0XHRcdChpbnRlcm5hbE1vZGVsIGFzIEpTT05Nb2RlbCkuc2V0UHJvcGVydHkoUEFUSF9UT19TVE9SRSwgcmVmcmVzaFN0cmF0ZWd5KTtcblx0XHR9XG5cdH1cbn07XG5cbi8qKlxuICogTWV0aG9kIHRvIHJlZnJlc2ggYW5kIHJlc3RvcmUgdGhlIHZpZXcgaWYgbmVjY2Vzc2FyeS5cbiAqXG4gKiBAcGFyYW0gdmlldyBDb250cm9sIGZvciB0aGUgcmVmcmVzaCBzdHJhdGVneVxuICogQHJldHVybnMgQSBwcm9taXNlIGFmdGVyIHZpZXcgcmVmcmVzaCBhbmQgcmVzdG9yZSBhcmUgdHJpZ2dlcmVkXG4gKi9cbmNvbnN0IHJlc3RvcmVWaWV3ID0gZnVuY3Rpb24gKHZpZXc6IFZpZXcpOiBQcm9taXNlPGFueT4ge1xuXHRjb25zdCBpbnRlcm5hbE1vZGVsQ29udGV4dCA9IHZpZXcuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0Y29uc3QgY29udHJvbGxlciA9IHZpZXcuZ2V0Q29udHJvbGxlcigpO1xuXHRjb25zdCB2aWV3U3RhdGUgPSAoY29udHJvbGxlciBhcyBhbnkpPy52aWV3U3RhdGU7XG5cdGxldCByZWZyZXNoQmluZGluZ3MgPSBQcm9taXNlLnJlc29sdmUoKTtcblx0aWYgKGludGVybmFsTW9kZWxDb250ZXh0ICYmIGludGVybmFsTW9kZWxDb250ZXh0LmdldFByb3BlcnR5KFwicmVzdG9yZVN0YXR1c1wiKSA9PT0gXCJwZW5kaW5nXCIpIHtcblx0XHRpZiAodmlld1N0YXRlLnJlZnJlc2hWaWV3QmluZGluZ3MpIHtcblx0XHRcdHJlZnJlc2hCaW5kaW5ncyA9IHZpZXdTdGF0ZS5yZWZyZXNoVmlld0JpbmRpbmdzKCk7XG5cdFx0XHRyZWZyZXNoQmluZGluZ3Ncblx0XHRcdFx0LnRoZW4oZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdExvZy5pbmZvKGBGRSBWNDogUmVmcmVzaCB3YXMgdHJpZ2dlcmVkIHN1Y2Nlc3NmdWxsOiAke3ZpZXcuZ2V0SWQoKX1gKTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChlcnIpIHtcblx0XHRcdFx0XHRMb2cud2FybmluZyhgRkUgVjQ6IFJlZnJlc2ggd2FzIHVuc3VjY2Vzc2Z1bGw6ICR7dmlldy5nZXRJZCgpfWAsIGVycik7XG5cdFx0XHRcdH0pO1xuXHRcdH1cblx0XHRyZWZyZXNoQmluZGluZ3MgPSByZWZyZXNoQmluZGluZ3Ncblx0XHRcdC50aGVuKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0dmlld1N0YXRlLm9uUmVzdG9yZSgpO1xuXHRcdFx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcInJlc3RvcmVTdGF0dXNcIiwgXCJkb25lXCIpO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcblx0XHRcdFx0TG9nLndhcm5pbmcoYEZFIFY0OiBSZXN0b3JlIHdhcyB1bnN1Y2Nlc3NmdWxsOiAke3ZpZXcuZ2V0SWQoKX1gLCBlcnJvcik7XG5cdFx0XHR9KTtcblx0fVxuXHRyZXR1cm4gcmVmcmVzaEJpbmRpbmdzO1xufTtcblxuLyoqXG4gKiBoZWxwZXIgY2xhc3MgZm9yIEtlZXBBbGl2ZSBmZWF0dXJlIGluIHNhcC5mZS5cbiAqL1xuY29uc3QgS2VlcEFsaXZlSGVscGVyID0ge1xuXHRnZXRDb250cm9sc0ZvclJlZnJlc2gsXG5cdGdldENvbnRyb2xSZWZyZXNoU3RyYXRlZ3lGb3JDb250ZXh0UGF0aCxcblx0Z2V0Vmlld1JlZnJlc2hJbmZvLFxuXHRnZXRSZWZyZXNoU3RyYXRlZ3lGb3JJbnRlbnQsXG5cdHN0b3JlQ29udHJvbFJlZnJlc2hTdHJhdGVneUZvckhhc2gsXG5cdHJlc3RvcmVWaWV3XG59O1xuZXhwb3J0IGRlZmF1bHQgS2VlcEFsaXZlSGVscGVyO1xuIl19
@@ -1,44 +1,40 @@
1
- import Control from "sap/ui/core/Control";
2
- import View from "sap/ui/core/mvc/View";
3
1
  import Log from "sap/base/Log";
4
- import ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
5
- import { BaseManifestSettings } from "sap/fe/core/converters/ManifestSettings";
6
- import JSONModel from "sap/ui/model/json/JSONModel";
7
- import {
8
- RefreshStrategyType,
9
- SORefreshStrategy,
10
- RefreshStrategies,
11
- PATH_TO_STORE,
12
- SOAction
13
- } from "sap/fe/core/helpers/KeepAliveRefreshTypes";
14
- import ModelHelper, { InternalModelContext } from "./ModelHelper";
2
+ import type { BaseManifestSettings } from "sap/fe/core/converters/ManifestSettings";
3
+ import type { RefreshStrategies, SOAction, SORefreshStrategy } from "sap/fe/core/helpers/KeepAliveRefreshTypes";
4
+ import { PATH_TO_STORE, RefreshStrategyType } from "sap/fe/core/helpers/KeepAliveRefreshTypes";
5
+ import type Control from "sap/ui/core/Control";
6
+ import type View from "sap/ui/core/mvc/View";
7
+ import type JSONModel from "sap/ui/model/json/JSONModel";
8
+ import type ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
9
+ import type { InternalModelContext } from "./ModelHelper";
10
+ import ModelHelper from "./ModelHelper";
15
11
 
16
12
  // Private functions - start
17
- const _fnSimplifyEntitySetPath = function(metaModel: ODataMetaModel, entitySetPathToUse: string): string {
13
+ const _fnSimplifyEntitySetPath = function (metaModel: ODataMetaModel, entitySetPathToUse: string): string {
18
14
  const entitySetPath = ModelHelper.getEntitySetPath(entitySetPathToUse);
19
15
  const entitySet = entitySetPath.indexOf("$NavigationPropertyBinding") > -1 && metaModel.getObject(entitySetPath);
20
- return entitySet ? "/" + entitySet : entitySetPathToUse;
16
+ return entitySet ? `/${entitySet}` : entitySetPathToUse;
21
17
  };
22
- const _fnIsApplicable = function(primaryPath: string, key: string, strategy: RefreshStrategyType): boolean {
18
+ const _fnIsApplicable = function (primaryPath: string, key: string, strategy: RefreshStrategyType): boolean {
23
19
  return primaryPath === key || (strategy === RefreshStrategyType.IncludingDependents && primaryPath.startsWith(key));
24
20
  };
25
21
  /**
26
22
  * Check if given path resides in the context path provided.
27
23
  *
28
- * @param {ODataMetaModel} metaModel MetaModel to be used
29
- * @param {string} contextPath Context path to be used
30
- * @param {string} path Path to be used
31
- * @param {RefreshStrategyType} strategy Strategy, it could be 'self' | 'includingDependents'
32
- * @returns {boolean} Returns true if the context path is applicable.
24
+ * @param metaModel MetaModel to be used
25
+ * @param contextPath Context path to be used
26
+ * @param path Path to be used
27
+ * @param strategy Strategy, it could be 'self' | 'includingDependents'
28
+ * @returns Returns true if the context path is applicable.
33
29
  */
34
- const _isPathApplicableToContextPath = function(
30
+ const _isPathApplicableToContextPath = function (
35
31
  metaModel: ODataMetaModel,
36
32
  contextPath: string,
37
33
  path: string,
38
34
  strategy: RefreshStrategyType
39
35
  ): boolean {
40
- let contextPathToCheck = contextPath.startsWith("/") ? contextPath : "/" + contextPath,
41
- pathToCheck = path.startsWith("/") ? path : "/" + path;
36
+ let contextPathToCheck = contextPath.startsWith("/") ? contextPath : `/${contextPath}`,
37
+ pathToCheck = path.startsWith("/") ? path : `/${path}`;
42
38
  if (!_fnIsApplicable(contextPathToCheck, pathToCheck, strategy)) {
43
39
  contextPathToCheck = _fnSimplifyEntitySetPath(metaModel, contextPathToCheck);
44
40
  if (!_fnIsApplicable(contextPathToCheck, pathToCheck, strategy)) {
@@ -53,17 +49,17 @@ const _isPathApplicableToContextPath = function(
53
49
  /**
54
50
  * Get controls to refresh in a view.
55
51
  *
56
- * @param {View} view View of the controls
57
- * @param {Control[]} controls Context path to be used
58
- * @returns {Control[]} Returns controls that need to be refreshed.
52
+ * @param view View of the controls
53
+ * @param controls Context path to be used
54
+ * @returns Returns controls that need to be refreshed.
59
55
  */
60
- const getControlsForRefresh = function(view: View, controls: Control[]): Control[] {
56
+ const getControlsForRefresh = function (view: View, controls: Control[]): Control[] {
61
57
  const controlsForRefresh: Control[] = [];
62
58
  const metaModel = view.getModel().getMetaModel() as ODataMetaModel;
63
59
  const internalModel = view.getModel("internal");
64
60
  const refreshStrategy = internalModel.getProperty(PATH_TO_STORE) || {};
65
61
  if (controls) {
66
- controls.forEach(function(control) {
62
+ controls.forEach(function (control) {
67
63
  const contextPath = control.data("targetCollectionPath");
68
64
  for (const key in refreshStrategy) {
69
65
  const strategy = refreshStrategy[key];
@@ -78,11 +74,11 @@ const getControlsForRefresh = function(view: View, controls: Control[]): Control
78
74
  /**
79
75
  * Get refresh strategy for the control for a context path.
80
76
  *
81
- * @param {Control} control Control from which refresh info is needed
82
- * @param {string} contextPath ContextPath for properities
83
- * @returns {RefreshStrategyType} Returns strategy for control refresh.
77
+ * @param control Control from which refresh info is needed
78
+ * @param contextPath ContextPath for properities
79
+ * @returns Returns strategy for control refresh.
84
80
  */
85
- const getControlRefreshStrategyForContextPath = function(control: Control, contextPath: string): RefreshStrategyType | undefined {
81
+ const getControlRefreshStrategyForContextPath = function (control: Control, contextPath: string): RefreshStrategyType | undefined {
86
82
  const metaModel = control.getModel().getMetaModel() as ODataMetaModel;
87
83
  const internalModel = control.getModel("internal");
88
84
  const refreshStrategy = internalModel.getProperty(PATH_TO_STORE) || {};
@@ -103,29 +99,29 @@ const getControlRefreshStrategyForContextPath = function(control: Control, conte
103
99
  /**
104
100
  * Get refresh info from view.
105
101
  *
106
- * @param {View} view View from which refresh info is needed
107
- * @returns {RefreshStrategyType | undefined} Returns strategy for view refresh.
102
+ * @param view View from which refresh info is needed
103
+ * @returns Returns strategy for view refresh.
108
104
  */
109
- const getViewRefreshInfo = function(view: View): RefreshStrategyType | undefined {
105
+ const getViewRefreshInfo = function (view: View): RefreshStrategyType | undefined {
110
106
  const viewData = view.getViewData() as BaseManifestSettings,
111
- contextPath = viewData && (viewData?.contextPath || "/" + viewData?.entitySet);
107
+ contextPath = viewData && (viewData?.contextPath || `/${viewData?.entitySet}`);
112
108
  return KeepAliveHelper.getControlRefreshStrategyForContextPath(view, contextPath);
113
109
  };
114
110
 
115
111
  /**
116
112
  * Get refresh strategy for an intent.
117
113
  *
118
- * @param {RefreshStrategies} refreshStrategies RefreshStrategies to consider
119
- * @param {string} semanticObject Outbound Semantic Object
120
- * @param {string} action Outbound Action
121
- * @returns {SORefreshStrategy | undefined} Returns refresh strategies to use for the intent.
114
+ * @param refreshStrategies RefreshStrategies to consider
115
+ * @param semanticObject Outbound Semantic Object
116
+ * @param action Outbound Action
117
+ * @returns Returns refresh strategies to use for the intent.
122
118
  */
123
- const getRefreshStrategyForIntent = function(
119
+ const getRefreshStrategyForIntent = function (
124
120
  refreshStrategies: RefreshStrategies,
125
121
  semanticObject?: string,
126
122
  action?: string
127
123
  ): SORefreshStrategy | undefined {
128
- const soAction = semanticObject && action && semanticObject + "-" + action;
124
+ const soAction = semanticObject && action && `${semanticObject}-${action}`;
129
125
  const intents = refreshStrategies.intents;
130
126
  const soActionIntentMatch = intents && soAction && intents[soAction];
131
127
  const soIntentMatch = !soActionIntentMatch && intents && semanticObject && intents[semanticObject];
@@ -135,10 +131,10 @@ const getRefreshStrategyForIntent = function(
135
131
  /**
136
132
  * Store control refresh strategy for hash in the internal model.
137
133
  *
138
- * @param {Control} control Control for the refresh strategy
139
- * @param {SOAction} hash Shell hash object
134
+ * @param control Control for the refresh strategy
135
+ * @param hash Shell hash object
140
136
  */
141
- const storeControlRefreshStrategyForHash = function(control: Control, hash: SOAction): void {
137
+ const storeControlRefreshStrategyForHash = function (control: Control, hash: SOAction): void {
142
138
  if (control && control.getModel("viewData") && control.getModel("internal")) {
143
139
  const viewData = control.getModel("viewData");
144
140
  const refreshStrategies: RefreshStrategies = viewData.getProperty(PATH_TO_STORE);
@@ -157,10 +153,10 @@ const storeControlRefreshStrategyForHash = function(control: Control, hash: SOAc
157
153
  /**
158
154
  * Method to refresh and restore the view if neccessary.
159
155
  *
160
- * @param {object} view Control for the refresh strategy
161
- * @returns {object} A promise after view refresh and restore are triggered
156
+ * @param view Control for the refresh strategy
157
+ * @returns A promise after view refresh and restore are triggered
162
158
  */
163
- const restoreView = function(view: View): Promise<any> {
159
+ const restoreView = function (view: View): Promise<any> {
164
160
  const internalModelContext = view.getBindingContext("internal") as InternalModelContext;
165
161
  const controller = view.getController();
166
162
  const viewState = (controller as any)?.viewState;
@@ -169,20 +165,20 @@ const restoreView = function(view: View): Promise<any> {
169
165
  if (viewState.refreshViewBindings) {
170
166
  refreshBindings = viewState.refreshViewBindings();
171
167
  refreshBindings
172
- .then(function() {
173
- Log.info("FE V4: Refresh was triggered successfull: " + view.getId());
168
+ .then(function () {
169
+ Log.info(`FE V4: Refresh was triggered successfull: ${view.getId()}`);
174
170
  })
175
- .catch(function(err) {
176
- Log.warning("FE V4: Refresh was unsuccessfull: " + view.getId(), err);
171
+ .catch(function (err) {
172
+ Log.warning(`FE V4: Refresh was unsuccessfull: ${view.getId()}`, err);
177
173
  });
178
174
  }
179
175
  refreshBindings = refreshBindings
180
- .then(function() {
176
+ .then(function () {
181
177
  viewState.onRestore();
182
178
  internalModelContext.setProperty("restoreStatus", "done");
183
179
  })
184
- .catch(function(error) {
185
- Log.warning("FE V4: Restore was unsuccessfull: " + view.getId(), error);
180
+ .catch(function (error) {
181
+ Log.warning(`FE V4: Restore was unsuccessfull: ${view.getId()}`, error);
186
182
  });
187
183
  }
188
184
  return refreshBindings;