@sapui5/sap.fe.core 1.110.0 → 1.111.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (654) hide show
  1. package/README.md +0 -4
  2. package/package.json +2 -23
  3. package/src/sap/fe/core/.library +1 -1
  4. package/src/sap/fe/core/ActionRuntime-dbg.js +182 -0
  5. package/src/sap/fe/core/ActionRuntime.js +3 -181
  6. package/src/sap/fe/core/ActionRuntime.js.map +1 -0
  7. package/src/sap/fe/core/ActionRuntime.ts +3 -5
  8. package/src/sap/fe/core/AppComponent-dbg.js +435 -0
  9. package/src/sap/fe/core/AppComponent.js +3 -439
  10. package/src/sap/fe/core/AppComponent.js.map +1 -0
  11. package/src/sap/fe/core/AppComponent.ts +0 -3
  12. package/src/sap/fe/core/AppStateHandler-dbg.js +200 -0
  13. package/src/sap/fe/core/AppStateHandler.js +3 -227
  14. package/src/sap/fe/core/AppStateHandler.js.map +1 -0
  15. package/src/sap/fe/core/BaseController-dbg.js +76 -0
  16. package/src/sap/fe/core/BaseController.js +3 -73
  17. package/src/sap/fe/core/BaseController.js.map +1 -0
  18. package/src/sap/fe/core/CommonUtils-dbg.js +2135 -0
  19. package/src/sap/fe/core/CommonUtils.js +3 -2296
  20. package/src/sap/fe/core/CommonUtils.js.map +1 -0
  21. package/src/sap/fe/core/CommonUtils.ts +34 -28
  22. package/src/sap/fe/core/ExtensionAPI-dbg.js +273 -0
  23. package/src/sap/fe/core/ExtensionAPI.js +3 -280
  24. package/src/sap/fe/core/ExtensionAPI.js.map +1 -0
  25. package/src/sap/fe/core/PageController-dbg.js +203 -0
  26. package/src/sap/fe/core/PageController.js +3 -200
  27. package/src/sap/fe/core/PageController.js.map +1 -0
  28. package/src/sap/fe/core/TemplateComponent-dbg.js +218 -0
  29. package/src/sap/fe/core/TemplateComponent.js +3 -216
  30. package/src/sap/fe/core/TemplateComponent.js.map +1 -0
  31. package/src/sap/fe/core/TemplateModel-dbg.js +75 -0
  32. package/src/sap/fe/core/TemplateModel.js +3 -72
  33. package/src/sap/fe/core/TemplateModel.js.map +1 -0
  34. package/src/sap/fe/core/buildingBlocks/AttributeModel-dbg.js +57 -0
  35. package/src/sap/fe/core/buildingBlocks/AttributeModel.js +3 -54
  36. package/src/sap/fe/core/buildingBlocks/AttributeModel.js.map +1 -0
  37. package/src/sap/fe/core/buildingBlocks/BuildingBlock-dbg.js +410 -0
  38. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +11 -355
  39. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js.map +1 -0
  40. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +118 -52
  41. package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter-dbg.js +14 -0
  42. package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter.js +3 -11
  43. package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter.js.map +1 -0
  44. package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment-dbg.js +44 -0
  45. package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.js +3 -40
  46. package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.js.map +1 -0
  47. package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.ts +3 -0
  48. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime-dbg.js +932 -0
  49. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +16 -1292
  50. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js.map +1 -0
  51. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +40 -42
  52. package/src/sap/fe/core/buildingBlocks/TraceInfo-dbg.js +434 -0
  53. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +3 -481
  54. package/src/sap/fe/core/buildingBlocks/TraceInfo.js.map +1 -0
  55. package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +5 -5
  56. package/src/sap/fe/core/controllerextensions/BusyLocker-dbg.js +92 -0
  57. package/src/sap/fe/core/controllerextensions/BusyLocker.js +3 -89
  58. package/src/sap/fe/core/controllerextensions/BusyLocker.js.map +1 -0
  59. package/src/sap/fe/core/controllerextensions/EditFlow-dbg.js +1659 -0
  60. package/src/sap/fe/core/controllerextensions/EditFlow.js +3 -1868
  61. package/src/sap/fe/core/controllerextensions/EditFlow.js.map +1 -0
  62. package/src/sap/fe/core/controllerextensions/EditFlow.ts +180 -125
  63. package/src/sap/fe/core/controllerextensions/Feedback-dbg.js +70 -0
  64. package/src/sap/fe/core/controllerextensions/Feedback.js +3 -67
  65. package/src/sap/fe/core/controllerextensions/Feedback.js.map +1 -0
  66. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation-dbg.js +83 -0
  67. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +3 -84
  68. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js.map +1 -0
  69. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +6 -8
  70. package/src/sap/fe/core/controllerextensions/InternalEditFlow-dbg.js +711 -0
  71. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +3 -707
  72. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js.map +1 -0
  73. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +79 -48
  74. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +791 -0
  75. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +3 -696
  76. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js.map +1 -0
  77. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +107 -7
  78. package/src/sap/fe/core/controllerextensions/InternalRouting-dbg.js +984 -0
  79. package/src/sap/fe/core/controllerextensions/InternalRouting.js +3 -996
  80. package/src/sap/fe/core/controllerextensions/InternalRouting.js.map +1 -0
  81. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +43 -23
  82. package/src/sap/fe/core/controllerextensions/KPIManagement-dbg.js +1013 -0
  83. package/src/sap/fe/core/controllerextensions/KPIManagement.js +3 -1011
  84. package/src/sap/fe/core/controllerextensions/KPIManagement.js.map +1 -0
  85. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +12 -10
  86. package/src/sap/fe/core/controllerextensions/MassEdit-dbg.js +135 -0
  87. package/src/sap/fe/core/controllerextensions/MassEdit.js +3 -133
  88. package/src/sap/fe/core/controllerextensions/MassEdit.js.map +1 -0
  89. package/src/sap/fe/core/controllerextensions/MassEdit.ts +1 -1
  90. package/src/sap/fe/core/controllerextensions/MessageHandler-dbg.js +221 -0
  91. package/src/sap/fe/core/controllerextensions/MessageHandler.js +3 -224
  92. package/src/sap/fe/core/controllerextensions/MessageHandler.js.map +1 -0
  93. package/src/sap/fe/core/controllerextensions/PageReady-dbg.js +254 -0
  94. package/src/sap/fe/core/controllerextensions/PageReady.js +3 -279
  95. package/src/sap/fe/core/controllerextensions/PageReady.js.map +1 -0
  96. package/src/sap/fe/core/controllerextensions/PageReady.ts +2 -2
  97. package/src/sap/fe/core/controllerextensions/Paginator-dbg.js +169 -0
  98. package/src/sap/fe/core/controllerextensions/Paginator.js +3 -174
  99. package/src/sap/fe/core/controllerextensions/Paginator.js.map +1 -0
  100. package/src/sap/fe/core/controllerextensions/Paginator.ts +4 -5
  101. package/src/sap/fe/core/controllerextensions/Placeholder-dbg.js +132 -0
  102. package/src/sap/fe/core/controllerextensions/Placeholder.js +3 -130
  103. package/src/sap/fe/core/controllerextensions/Placeholder.js.map +1 -0
  104. package/src/sap/fe/core/controllerextensions/Routing-dbg.js +138 -0
  105. package/src/sap/fe/core/controllerextensions/Routing.js +3 -135
  106. package/src/sap/fe/core/controllerextensions/Routing.js.map +1 -0
  107. package/src/sap/fe/core/controllerextensions/RoutingListener-dbg.js +10 -0
  108. package/src/sap/fe/core/controllerextensions/RoutingListener.js +3 -7
  109. package/src/sap/fe/core/controllerextensions/RoutingListener.js.map +1 -0
  110. package/src/sap/fe/core/controllerextensions/Share-dbg.js +317 -0
  111. package/src/sap/fe/core/controllerextensions/Share.js +3 -356
  112. package/src/sap/fe/core/controllerextensions/Share.js.map +1 -0
  113. package/src/sap/fe/core/controllerextensions/Share.ts +6 -1
  114. package/src/sap/fe/core/controllerextensions/SideEffects-dbg.js +553 -0
  115. package/src/sap/fe/core/controllerextensions/SideEffects.js +3 -651
  116. package/src/sap/fe/core/controllerextensions/SideEffects.js.map +1 -0
  117. package/src/sap/fe/core/controllerextensions/SideEffects.ts +411 -553
  118. package/src/sap/fe/core/controllerextensions/ViewState-dbg.js +903 -0
  119. package/src/sap/fe/core/controllerextensions/ViewState.js +3 -967
  120. package/src/sap/fe/core/controllerextensions/ViewState.js.map +1 -0
  121. package/src/sap/fe/core/controllerextensions/ViewState.ts +90 -41
  122. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase-dbg.js +99 -0
  123. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +3 -96
  124. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js.map +1 -0
  125. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync-dbg.js +314 -0
  126. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +3 -336
  127. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js.map +1 -0
  128. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon-dbg.js +152 -0
  129. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +3 -161
  130. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js.map +1 -0
  131. package/src/sap/fe/core/controllerextensions/collaboration/Manage-dbg.js +243 -0
  132. package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +3 -302
  133. package/src/sap/fe/core/controllerextensions/collaboration/Manage.js.map +1 -0
  134. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block-dbg.js +252 -0
  135. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js +6 -0
  136. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js.map +1 -0
  137. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.tsx +188 -0
  138. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper-dbg.js +1196 -0
  139. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +3 -1479
  140. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js.map +1 -0
  141. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +239 -289
  142. package/src/sap/fe/core/controllerextensions/editFlow/draft-dbg.js +689 -0
  143. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +3 -785
  144. package/src/sap/fe/core/controllerextensions/editFlow/draft.js.map +1 -0
  145. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +134 -142
  146. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup-dbg.js +236 -0
  147. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +3 -287
  148. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js.map +1 -0
  149. package/src/sap/fe/core/controllerextensions/editFlow/operations-dbg.js +1422 -0
  150. package/src/sap/fe/core/controllerextensions/editFlow/operations.js +3 -1598
  151. package/src/sap/fe/core/controllerextensions/editFlow/operations.js.map +1 -0
  152. package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +40 -24
  153. package/src/sap/fe/core/controllerextensions/editFlow/sticky-dbg.js +185 -0
  154. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +3 -214
  155. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js.map +1 -0
  156. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +4 -5
  157. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling-dbg.js +1219 -0
  158. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +3 -1213
  159. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js.map +1 -0
  160. package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher-dbg.js +304 -0
  161. package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.js +3 -339
  162. package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.js.map +1 -0
  163. package/src/sap/fe/core/controllerextensions/routing/NavigationReason-dbg.js +15 -0
  164. package/src/sap/fe/core/controllerextensions/routing/NavigationReason.js +6 -0
  165. package/src/sap/fe/core/controllerextensions/routing/NavigationReason.js.map +1 -0
  166. package/src/sap/fe/core/controllerextensions/routing/NavigationReason.ts +6 -0
  167. package/src/sap/fe/core/controllerextensions/routing/RouterProxy-dbg.js +798 -0
  168. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +3 -799
  169. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js.map +1 -0
  170. package/src/sap/fe/core/controls/Any-dbg.js +32 -0
  171. package/src/sap/fe/core/controls/Any.js +3 -29
  172. package/src/sap/fe/core/controls/Any.js.map +1 -0
  173. package/src/sap/fe/core/controls/AnyElement-dbg.js +29 -0
  174. package/src/sap/fe/core/controls/AnyElement.js +3 -26
  175. package/src/sap/fe/core/controls/AnyElement.js.map +1 -0
  176. package/src/sap/fe/core/controls/CommandExecution-dbg.js +72 -0
  177. package/src/sap/fe/core/controls/CommandExecution.js +3 -69
  178. package/src/sap/fe/core/controls/CommandExecution.js.map +1 -0
  179. package/src/sap/fe/core/controls/ConditionalWrapper-dbg.js +151 -0
  180. package/src/sap/fe/core/controls/ConditionalWrapper.js +3 -148
  181. package/src/sap/fe/core/controls/ConditionalWrapper.js.map +1 -0
  182. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper-dbg.js +330 -0
  183. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +3 -328
  184. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js.map +1 -0
  185. package/src/sap/fe/core/controls/CustomQuickViewPage-dbg.js +126 -0
  186. package/src/sap/fe/core/controls/CustomQuickViewPage.js +3 -124
  187. package/src/sap/fe/core/controls/CustomQuickViewPage.js.map +1 -0
  188. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler-dbg.js +170 -0
  189. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +3 -171
  190. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js.map +1 -0
  191. package/src/sap/fe/core/controls/FieldWrapper-dbg.js +194 -0
  192. package/src/sap/fe/core/controls/FieldWrapper.js +3 -191
  193. package/src/sap/fe/core/controls/FieldWrapper.js.map +1 -0
  194. package/src/sap/fe/core/controls/FileWrapper-dbg.js +280 -0
  195. package/src/sap/fe/core/controls/FileWrapper.js +3 -277
  196. package/src/sap/fe/core/controls/FileWrapper.js.map +1 -0
  197. package/src/sap/fe/core/controls/FilterBar-dbg.js +167 -0
  198. package/src/sap/fe/core/controls/FilterBar.js +3 -166
  199. package/src/sap/fe/core/controls/FilterBar.js.map +1 -0
  200. package/src/sap/fe/core/controls/FormElementWrapper-dbg.js +92 -0
  201. package/src/sap/fe/core/controls/FormElementWrapper.js +3 -89
  202. package/src/sap/fe/core/controls/FormElementWrapper.js.map +1 -0
  203. package/src/sap/fe/core/controls/MassEditSelect-dbg.js +33 -0
  204. package/src/sap/fe/core/controls/MassEditSelect.js +3 -30
  205. package/src/sap/fe/core/controls/MassEditSelect.js.map +1 -0
  206. package/src/sap/fe/core/controls/MultiValueParameterDelegate-dbg.js +37 -0
  207. package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +3 -34
  208. package/src/sap/fe/core/controls/MultiValueParameterDelegate.js.map +1 -0
  209. package/src/sap/fe/core/controls/filterbar/FilterContainer-dbg.js +119 -0
  210. package/src/sap/fe/core/controls/filterbar/FilterContainer.js +3 -121
  211. package/src/sap/fe/core/controls/filterbar/FilterContainer.js.map +1 -0
  212. package/src/sap/fe/core/controls/filterbar/VisualFilter-dbg.js +267 -0
  213. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +3 -264
  214. package/src/sap/fe/core/controls/filterbar/VisualFilter.js.map +1 -0
  215. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer-dbg.js +150 -0
  216. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +3 -150
  217. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js.map +1 -0
  218. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils-dbg.js +310 -0
  219. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +3 -307
  220. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js.map +1 -0
  221. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +1 -1
  222. package/src/sap/fe/core/controls/massEdit/MassEditHandlers-dbg.js +491 -0
  223. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +3 -504
  224. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js.map +1 -0
  225. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +2 -2
  226. package/src/sap/fe/core/converters/ConverterContext-dbg.js +403 -0
  227. package/src/sap/fe/core/converters/ConverterContext.js +3 -406
  228. package/src/sap/fe/core/converters/ConverterContext.js.map +1 -0
  229. package/src/sap/fe/core/converters/ManifestSettings-dbg.js +88 -0
  230. package/src/sap/fe/core/converters/ManifestSettings.js +3 -84
  231. package/src/sap/fe/core/converters/ManifestSettings.js.map +1 -0
  232. package/src/sap/fe/core/converters/ManifestSettings.ts +3 -1
  233. package/src/sap/fe/core/converters/ManifestWrapper-dbg.js +402 -0
  234. package/src/sap/fe/core/converters/ManifestWrapper.js +3 -406
  235. package/src/sap/fe/core/converters/ManifestWrapper.js.map +1 -0
  236. package/src/sap/fe/core/converters/MetaModelConverter-dbg.js +1161 -0
  237. package/src/sap/fe/core/converters/MetaModelConverter.js +3 -1225
  238. package/src/sap/fe/core/converters/MetaModelConverter.js.map +1 -0
  239. package/src/sap/fe/core/converters/MetaModelConverter.ts +193 -199
  240. package/src/sap/fe/core/converters/TemplateConverter-dbg.js +89 -0
  241. package/src/sap/fe/core/converters/TemplateConverter.js +3 -86
  242. package/src/sap/fe/core/converters/TemplateConverter.js.map +1 -0
  243. package/src/sap/fe/core/converters/annotations/DataField-dbg.js +396 -0
  244. package/src/sap/fe/core/converters/annotations/DataField.js +3 -394
  245. package/src/sap/fe/core/converters/annotations/DataField.js.map +1 -0
  246. package/src/sap/fe/core/converters/annotations/DataField.ts +5 -5
  247. package/src/sap/fe/core/converters/common/AnnotationConverter-dbg.js +1948 -0
  248. package/src/sap/fe/core/converters/common/AnnotationConverter.js +3 -1868
  249. package/src/sap/fe/core/converters/common/AnnotationConverter.js.map +1 -0
  250. package/src/sap/fe/core/converters/controls/Common/Action-dbg.js +424 -0
  251. package/src/sap/fe/core/converters/controls/Common/Action.js +3 -446
  252. package/src/sap/fe/core/converters/controls/Common/Action.js.map +1 -0
  253. package/src/sap/fe/core/converters/controls/Common/Action.ts +31 -14
  254. package/src/sap/fe/core/converters/controls/Common/Chart-dbg.js +276 -0
  255. package/src/sap/fe/core/converters/controls/Common/Chart.js +3 -260
  256. package/src/sap/fe/core/converters/controls/Common/Chart.js.map +1 -0
  257. package/src/sap/fe/core/converters/controls/Common/Chart.ts +52 -7
  258. package/src/sap/fe/core/converters/controls/Common/Criticality-dbg.js +42 -0
  259. package/src/sap/fe/core/converters/controls/Common/Criticality.js +3 -39
  260. package/src/sap/fe/core/converters/controls/Common/Criticality.js.map +1 -0
  261. package/src/sap/fe/core/converters/controls/Common/DataVisualization-dbg.js +247 -0
  262. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +3 -242
  263. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js.map +1 -0
  264. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +1 -1
  265. package/src/sap/fe/core/converters/controls/Common/Form-dbg.js +229 -0
  266. package/src/sap/fe/core/converters/controls/Common/Form.js +3 -234
  267. package/src/sap/fe/core/converters/controls/Common/Form.js.map +1 -0
  268. package/src/sap/fe/core/converters/controls/Common/KPI-dbg.js +374 -0
  269. package/src/sap/fe/core/converters/controls/Common/KPI.js +3 -371
  270. package/src/sap/fe/core/converters/controls/Common/KPI.js.map +1 -0
  271. package/src/sap/fe/core/converters/controls/Common/Table-dbg.js +2596 -0
  272. package/src/sap/fe/core/converters/controls/Common/Table.js +3 -2527
  273. package/src/sap/fe/core/converters/controls/Common/Table.js.map +1 -0
  274. package/src/sap/fe/core/converters/controls/Common/Table.ts +214 -77
  275. package/src/sap/fe/core/converters/controls/Common/table/StandardActions-dbg.js +522 -0
  276. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +3 -527
  277. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js.map +1 -0
  278. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +51 -50
  279. package/src/sap/fe/core/converters/controls/ListReport/FilterBar-dbg.js +786 -0
  280. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +3 -845
  281. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js.map +1 -0
  282. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +0 -64
  283. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters-dbg.js +291 -0
  284. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +3 -316
  285. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js.map +1 -0
  286. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +30 -12
  287. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar-dbg.js +56 -0
  288. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +3 -53
  289. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js.map +1 -0
  290. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet-dbg.js +438 -0
  291. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +3 -431
  292. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js.map +1 -0
  293. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection-dbg.js +597 -0
  294. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +3 -630
  295. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js.map +1 -0
  296. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +1 -1
  297. package/src/sap/fe/core/converters/helpers/Aggregation-dbg.js +204 -0
  298. package/src/sap/fe/core/converters/helpers/Aggregation.js +3 -204
  299. package/src/sap/fe/core/converters/helpers/Aggregation.js.map +1 -0
  300. package/src/sap/fe/core/converters/helpers/BindingHelper-dbg.js +100 -0
  301. package/src/sap/fe/core/converters/helpers/BindingHelper.js +3 -99
  302. package/src/sap/fe/core/converters/helpers/BindingHelper.js.map +1 -0
  303. package/src/sap/fe/core/converters/helpers/ConfigurableObject-dbg.js +199 -0
  304. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +3 -199
  305. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js.map +1 -0
  306. package/src/sap/fe/core/converters/helpers/DataFieldHelper-dbg.js +143 -0
  307. package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +3 -140
  308. package/src/sap/fe/core/converters/helpers/DataFieldHelper.js.map +1 -0
  309. package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +2 -1
  310. package/src/sap/fe/core/converters/helpers/ID-dbg.js +92 -0
  311. package/src/sap/fe/core/converters/helpers/ID.js +3 -89
  312. package/src/sap/fe/core/converters/helpers/ID.js.map +1 -0
  313. package/src/sap/fe/core/converters/helpers/IssueManager-dbg.js +62 -0
  314. package/src/sap/fe/core/converters/helpers/IssueManager.js +3 -59
  315. package/src/sap/fe/core/converters/helpers/IssueManager.js.map +1 -0
  316. package/src/sap/fe/core/converters/helpers/Key-dbg.js +62 -0
  317. package/src/sap/fe/core/converters/helpers/Key.js +3 -59
  318. package/src/sap/fe/core/converters/helpers/Key.js.map +1 -0
  319. package/src/sap/fe/core/converters/helpers/Key.ts +1 -1
  320. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper-dbg.js +80 -0
  321. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +3 -77
  322. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js.map +1 -0
  323. package/src/sap/fe/core/converters/objectPage/FormMenuActions-dbg.js +142 -0
  324. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +3 -139
  325. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js.map +1 -0
  326. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction-dbg.js +406 -0
  327. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +3 -422
  328. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js.map +1 -0
  329. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +132 -111
  330. package/src/sap/fe/core/converters/templates/ListReportConverter-dbg.js +557 -0
  331. package/src/sap/fe/core/converters/templates/ListReportConverter.js +3 -589
  332. package/src/sap/fe/core/converters/templates/ListReportConverter.js.map +1 -0
  333. package/src/sap/fe/core/converters/templates/ObjectPageConverter-dbg.js +474 -0
  334. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +3 -477
  335. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js.map +1 -0
  336. package/src/sap/fe/core/designtime/AppComponent-dbg.designtime.js +103 -0
  337. package/src/sap/fe/core/designtime/AppComponent.designtime.js +3 -100
  338. package/src/sap/fe/core/designtime/AppComponent.designtime.js.map +1 -0
  339. package/src/sap/fe/core/designtime/library-preload.designtime.js +7 -0
  340. package/src/sap/fe/core/designtime/library-preload.designtime.js.map +1 -0
  341. package/src/sap/fe/core/formatters/CollaborationFormatter-dbg.js +95 -0
  342. package/src/sap/fe/core/formatters/CollaborationFormatter.js +3 -92
  343. package/src/sap/fe/core/formatters/CollaborationFormatter.js.map +1 -0
  344. package/src/sap/fe/core/formatters/FPMFormatter-dbg.js +46 -0
  345. package/src/sap/fe/core/formatters/FPMFormatter.js +3 -44
  346. package/src/sap/fe/core/formatters/FPMFormatter.js.map +1 -0
  347. package/src/sap/fe/core/formatters/FPMFormatter.ts +3 -2
  348. package/src/sap/fe/core/formatters/FiscalFormat-dbg.js +343 -0
  349. package/src/sap/fe/core/formatters/FiscalFormat.js +6 -0
  350. package/src/sap/fe/core/formatters/FiscalFormat.js.map +1 -0
  351. package/src/sap/fe/core/formatters/FiscalFormat.ts +319 -0
  352. package/src/sap/fe/core/formatters/KPIFormatter-dbg.js +86 -0
  353. package/src/sap/fe/core/formatters/KPIFormatter.js +3 -83
  354. package/src/sap/fe/core/formatters/KPIFormatter.js.map +1 -0
  355. package/src/sap/fe/core/formatters/StandardFormatter-dbg.js +80 -0
  356. package/src/sap/fe/core/formatters/StandardFormatter.js +3 -78
  357. package/src/sap/fe/core/formatters/StandardFormatter.js.map +1 -0
  358. package/src/sap/fe/core/formatters/TableFormatter-dbg.js +276 -0
  359. package/src/sap/fe/core/formatters/TableFormatter.js +3 -275
  360. package/src/sap/fe/core/formatters/TableFormatter.js.map +1 -0
  361. package/src/sap/fe/core/formatters/TableFormatter.ts +1 -1
  362. package/src/sap/fe/core/formatters/TableFormatterTypes-dbg.js +20 -0
  363. package/src/sap/fe/core/formatters/TableFormatterTypes.js +3 -17
  364. package/src/sap/fe/core/formatters/TableFormatterTypes.js.map +1 -0
  365. package/src/sap/fe/core/formatters/ValueFormatter-dbg.js +172 -0
  366. package/src/sap/fe/core/formatters/ValueFormatter.js +3 -161
  367. package/src/sap/fe/core/formatters/ValueFormatter.js.map +1 -0
  368. package/src/sap/fe/core/formatters/ValueFormatter.ts +25 -8
  369. package/src/sap/fe/core/fpm/Component-dbg.js +94 -0
  370. package/src/sap/fe/core/fpm/Component.js +3 -91
  371. package/src/sap/fe/core/fpm/Component.js.map +1 -0
  372. package/src/sap/fe/core/fpm/manifest.json +1 -1
  373. package/src/sap/fe/core/helpers/AnnotationEnum-dbg.js +30 -0
  374. package/src/sap/fe/core/helpers/AnnotationEnum.js +3 -36
  375. package/src/sap/fe/core/helpers/AnnotationEnum.js.map +1 -0
  376. package/src/sap/fe/core/helpers/AppStartupHelper-dbg.js +334 -0
  377. package/src/sap/fe/core/helpers/AppStartupHelper.js +3 -335
  378. package/src/sap/fe/core/helpers/AppStartupHelper.js.map +1 -0
  379. package/src/sap/fe/core/helpers/BindingToolkit-dbg.js +1739 -0
  380. package/src/sap/fe/core/helpers/BindingToolkit.js +3 -1611
  381. package/src/sap/fe/core/helpers/BindingToolkit.js.map +1 -0
  382. package/src/sap/fe/core/helpers/BindingToolkit.ts +277 -97
  383. package/src/sap/fe/core/helpers/ClassSupport-dbg.js +421 -0
  384. package/src/sap/fe/core/helpers/ClassSupport.js +3 -420
  385. package/src/sap/fe/core/helpers/ClassSupport.js.map +1 -0
  386. package/src/sap/fe/core/helpers/ClassSupport.ts +13 -15
  387. package/src/sap/fe/core/helpers/DeleteHelper-dbg.js +526 -0
  388. package/src/sap/fe/core/helpers/DeleteHelper.js +3 -618
  389. package/src/sap/fe/core/helpers/DeleteHelper.js.map +1 -0
  390. package/src/sap/fe/core/helpers/DeleteHelper.ts +116 -134
  391. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper-dbg.js +55 -0
  392. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +3 -52
  393. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js.map +1 -0
  394. package/src/sap/fe/core/helpers/EditState-dbg.js +80 -0
  395. package/src/sap/fe/core/helpers/EditState.js +3 -77
  396. package/src/sap/fe/core/helpers/EditState.js.map +1 -0
  397. package/src/sap/fe/core/helpers/ExcelFormatHelper-dbg.js +55 -0
  398. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +3 -52
  399. package/src/sap/fe/core/helpers/ExcelFormatHelper.js.map +1 -0
  400. package/src/sap/fe/core/helpers/FPMHelper-dbg.js +55 -0
  401. package/src/sap/fe/core/helpers/FPMHelper.js +3 -52
  402. package/src/sap/fe/core/helpers/FPMHelper.js.map +1 -0
  403. package/src/sap/fe/core/helpers/KeepAliveHelper-dbg.js +180 -0
  404. package/src/sap/fe/core/helpers/KeepAliveHelper.js +3 -177
  405. package/src/sap/fe/core/helpers/KeepAliveHelper.js.map +1 -0
  406. package/src/sap/fe/core/helpers/KeepAliveRefreshTypes-dbg.js +28 -0
  407. package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +3 -25
  408. package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js.map +1 -0
  409. package/src/sap/fe/core/helpers/LoaderUtils-dbg.js +29 -0
  410. package/src/sap/fe/core/helpers/LoaderUtils.js +3 -30
  411. package/src/sap/fe/core/helpers/LoaderUtils.js.map +1 -0
  412. package/src/sap/fe/core/helpers/MassEditHelper-dbg.js +1229 -0
  413. package/src/sap/fe/core/helpers/MassEditHelper.js +3 -1309
  414. package/src/sap/fe/core/helpers/MassEditHelper.js.map +1 -0
  415. package/src/sap/fe/core/helpers/MassEditHelper.ts +6 -6
  416. package/src/sap/fe/core/helpers/MessageStrip-dbg.js +65 -0
  417. package/src/sap/fe/core/helpers/MessageStrip.js +3 -62
  418. package/src/sap/fe/core/helpers/MessageStrip.js.map +1 -0
  419. package/src/sap/fe/core/helpers/ModelHelper-dbg.js +489 -0
  420. package/src/sap/fe/core/helpers/ModelHelper.js +3 -503
  421. package/src/sap/fe/core/helpers/ModelHelper.js.map +1 -0
  422. package/src/sap/fe/core/helpers/ModelHelper.ts +13 -36
  423. package/src/sap/fe/core/helpers/PasteHelper-dbg.js +174 -0
  424. package/src/sap/fe/core/helpers/PasteHelper.js +3 -185
  425. package/src/sap/fe/core/helpers/PasteHelper.js.map +1 -0
  426. package/src/sap/fe/core/helpers/SemanticDateOperators-dbg.js +371 -0
  427. package/src/sap/fe/core/helpers/SemanticDateOperators.js +3 -368
  428. package/src/sap/fe/core/helpers/SemanticDateOperators.js.map +1 -0
  429. package/src/sap/fe/core/helpers/SemanticKeyHelper-dbg.js +70 -0
  430. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +3 -67
  431. package/src/sap/fe/core/helpers/SemanticKeyHelper.js.map +1 -0
  432. package/src/sap/fe/core/helpers/SideEffectsHelper-dbg.js +141 -0
  433. package/src/sap/fe/core/helpers/SideEffectsHelper.js +3 -137
  434. package/src/sap/fe/core/helpers/SideEffectsHelper.js.map +1 -0
  435. package/src/sap/fe/core/helpers/SideEffectsHelper.ts +3 -2
  436. package/src/sap/fe/core/helpers/StableIdHelper-dbg.js +204 -0
  437. package/src/sap/fe/core/helpers/StableIdHelper.js +3 -208
  438. package/src/sap/fe/core/helpers/StableIdHelper.js.map +1 -0
  439. package/src/sap/fe/core/helpers/Synchronization-dbg.js +35 -0
  440. package/src/sap/fe/core/helpers/Synchronization.js +3 -33
  441. package/src/sap/fe/core/helpers/Synchronization.js.map +1 -0
  442. package/src/sap/fe/core/helpers/ToES6Promise-dbg.js +29 -0
  443. package/src/sap/fe/core/helpers/ToES6Promise.js +3 -26
  444. package/src/sap/fe/core/helpers/ToES6Promise.js.map +1 -0
  445. package/src/sap/fe/core/helpers/TypeGuards-dbg.js +20 -0
  446. package/src/sap/fe/core/helpers/TypeGuards.js +3 -19
  447. package/src/sap/fe/core/helpers/TypeGuards.js.map +1 -0
  448. package/src/sap/fe/core/helpers/TypeGuards.ts +5 -1
  449. package/src/sap/fe/core/jsx-runtime/Fragment-dbg.js +14 -0
  450. package/src/sap/fe/core/jsx-runtime/Fragment.js +3 -11
  451. package/src/sap/fe/core/jsx-runtime/Fragment.js.map +1 -0
  452. package/src/sap/fe/core/jsx-runtime/ViewLoader-dbg.js +76 -0
  453. package/src/sap/fe/core/jsx-runtime/ViewLoader.js +3 -86
  454. package/src/sap/fe/core/jsx-runtime/ViewLoader.js.map +1 -0
  455. package/src/sap/fe/core/jsx-runtime/jsx-control-dbg.js +124 -0
  456. package/src/sap/fe/core/jsx-runtime/jsx-control.js +3 -98
  457. package/src/sap/fe/core/jsx-runtime/jsx-control.js.map +1 -0
  458. package/src/sap/fe/core/jsx-runtime/jsx-control.ts +43 -17
  459. package/src/sap/fe/core/jsx-runtime/jsx-dbg.js +41 -0
  460. package/src/sap/fe/core/jsx-runtime/jsx-xml-dbg.js +94 -0
  461. package/src/sap/fe/core/jsx-runtime/jsx-xml.js +3 -90
  462. package/src/sap/fe/core/jsx-runtime/jsx-xml.js.map +1 -0
  463. package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +1 -1
  464. package/src/sap/fe/core/jsx-runtime/jsx.js +3 -28
  465. package/src/sap/fe/core/jsx-runtime/jsx.js.map +1 -0
  466. package/src/sap/fe/core/jsx-runtime/jsx.ts +19 -1
  467. package/src/sap/fe/core/jsx-runtime/jsxs-dbg.js +10 -0
  468. package/src/sap/fe/core/jsx-runtime/jsxs.js +3 -7
  469. package/src/sap/fe/core/jsx-runtime/jsxs.js.map +1 -0
  470. package/src/sap/fe/core/jsx-runtime/useMDXComponents-dbg.js +154 -0
  471. package/src/sap/fe/core/jsx-runtime/useMDXComponents.js +3 -153
  472. package/src/sap/fe/core/jsx-runtime/useMDXComponents.js.map +1 -0
  473. package/src/sap/fe/core/library-dbg.js +437 -0
  474. package/src/sap/fe/core/library-preload.js +900 -0
  475. package/src/sap/fe/core/library-preload.js.map +1 -0
  476. package/src/sap/fe/core/library-preload.support.js +177 -0
  477. package/src/sap/fe/core/library-preload.support.js.map +1 -0
  478. package/src/sap/fe/core/library.js +3 -461
  479. package/src/sap/fe/core/library.js.map +1 -0
  480. package/src/sap/fe/core/library.support.js +1 -1
  481. package/src/sap/fe/core/library.ts +12 -25
  482. package/src/sap/fe/core/manifest.json +100 -0
  483. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration-dbg.js +99 -0
  484. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +3 -96
  485. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js.map +1 -0
  486. package/src/sap/fe/core/messagebundle.properties +6 -0
  487. package/src/sap/fe/core/messagebundle_ar.properties +22 -0
  488. package/src/sap/fe/core/messagebundle_bg.properties +22 -0
  489. package/src/sap/fe/core/messagebundle_ca.properties +22 -0
  490. package/src/sap/fe/core/messagebundle_cs.properties +22 -0
  491. package/src/sap/fe/core/messagebundle_cy.properties +22 -0
  492. package/src/sap/fe/core/messagebundle_da.properties +22 -0
  493. package/src/sap/fe/core/messagebundle_de.properties +22 -0
  494. package/src/sap/fe/core/messagebundle_el.properties +22 -0
  495. package/src/sap/fe/core/messagebundle_en.properties +22 -0
  496. package/src/sap/fe/core/messagebundle_en_GB.properties +22 -0
  497. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +22 -0
  498. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +4 -0
  499. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +4 -0
  500. package/src/sap/fe/core/messagebundle_es.properties +22 -0
  501. package/src/sap/fe/core/messagebundle_es_MX.properties +22 -0
  502. package/src/sap/fe/core/messagebundle_et.properties +22 -0
  503. package/src/sap/fe/core/messagebundle_fi.properties +22 -0
  504. package/src/sap/fe/core/messagebundle_fr.properties +22 -0
  505. package/src/sap/fe/core/messagebundle_fr_CA.properties +22 -0
  506. package/src/sap/fe/core/messagebundle_hi.properties +22 -0
  507. package/src/sap/fe/core/messagebundle_hr.properties +23 -1
  508. package/src/sap/fe/core/messagebundle_hu.properties +22 -0
  509. package/src/sap/fe/core/messagebundle_id.properties +22 -0
  510. package/src/sap/fe/core/messagebundle_it.properties +22 -0
  511. package/src/sap/fe/core/messagebundle_iw.properties +22 -0
  512. package/src/sap/fe/core/messagebundle_ja.properties +22 -0
  513. package/src/sap/fe/core/messagebundle_kk.properties +22 -0
  514. package/src/sap/fe/core/messagebundle_ko.properties +22 -0
  515. package/src/sap/fe/core/messagebundle_lt.properties +22 -0
  516. package/src/sap/fe/core/messagebundle_lv.properties +22 -0
  517. package/src/sap/fe/core/messagebundle_ms.properties +22 -0
  518. package/src/sap/fe/core/messagebundle_nl.properties +22 -0
  519. package/src/sap/fe/core/messagebundle_no.properties +22 -0
  520. package/src/sap/fe/core/messagebundle_pl.properties +22 -0
  521. package/src/sap/fe/core/messagebundle_pt.properties +22 -0
  522. package/src/sap/fe/core/messagebundle_pt_PT.properties +22 -0
  523. package/src/sap/fe/core/messagebundle_ro.properties +22 -0
  524. package/src/sap/fe/core/messagebundle_ru.properties +22 -0
  525. package/src/sap/fe/core/messagebundle_sh.properties +22 -0
  526. package/src/sap/fe/core/messagebundle_sk.properties +22 -0
  527. package/src/sap/fe/core/messagebundle_sl.properties +22 -0
  528. package/src/sap/fe/core/messagebundle_sv.properties +22 -0
  529. package/src/sap/fe/core/messagebundle_th.properties +22 -0
  530. package/src/sap/fe/core/messagebundle_tr.properties +22 -0
  531. package/src/sap/fe/core/messagebundle_uk.properties +22 -0
  532. package/src/sap/fe/core/messagebundle_vi.properties +22 -0
  533. package/src/sap/fe/core/messagebundle_zh_CN.properties +22 -0
  534. package/src/sap/fe/core/messagebundle_zh_TW.properties +22 -0
  535. package/src/sap/fe/core/operationsHelper-dbg.js +155 -0
  536. package/src/sap/fe/core/operationsHelper.js +3 -205
  537. package/src/sap/fe/core/operationsHelper.js.map +1 -0
  538. package/src/sap/fe/core/operationsHelper.ts +14 -68
  539. package/src/sap/fe/core/rootView/Fcl-dbg.controller.js +837 -0
  540. package/src/sap/fe/core/rootView/Fcl.controller.js +3 -855
  541. package/src/sap/fe/core/rootView/Fcl.controller.js.map +1 -0
  542. package/src/sap/fe/core/rootView/NavContainer-dbg.controller.js +190 -0
  543. package/src/sap/fe/core/rootView/NavContainer.controller.js +3 -190
  544. package/src/sap/fe/core/rootView/NavContainer.controller.js.map +1 -0
  545. package/src/sap/fe/core/rootView/RootViewBaseController-dbg.js +506 -0
  546. package/src/sap/fe/core/rootView/RootViewBaseController.js +3 -538
  547. package/src/sap/fe/core/rootView/RootViewBaseController.js.map +1 -0
  548. package/src/sap/fe/core/rootView/RootViewBaseController.ts +3 -4
  549. package/src/sap/fe/core/services/AsyncComponentServiceFactory-dbg.js +60 -0
  550. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +3 -60
  551. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js.map +1 -0
  552. package/src/sap/fe/core/services/CacheHandlerServiceFactory-dbg.js +196 -0
  553. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +3 -219
  554. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js.map +1 -0
  555. package/src/sap/fe/core/services/EnvironmentServiceFactory-dbg.js +80 -0
  556. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +3 -82
  557. package/src/sap/fe/core/services/EnvironmentServiceFactory.js.map +1 -0
  558. package/src/sap/fe/core/services/NavigationServiceFactory-dbg.js +320 -0
  559. package/src/sap/fe/core/services/NavigationServiceFactory.js +3 -320
  560. package/src/sap/fe/core/services/NavigationServiceFactory.js.map +1 -0
  561. package/src/sap/fe/core/services/ResourceModelServiceFactory-dbg.js +91 -0
  562. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +3 -89
  563. package/src/sap/fe/core/services/ResourceModelServiceFactory.js.map +1 -0
  564. package/src/sap/fe/core/services/RoutingServiceFactory-dbg.js +817 -0
  565. package/src/sap/fe/core/services/RoutingServiceFactory.js +3 -847
  566. package/src/sap/fe/core/services/RoutingServiceFactory.js.map +1 -0
  567. package/src/sap/fe/core/services/RoutingServiceFactory.ts +6 -3
  568. package/src/sap/fe/core/services/ShellServicesFactory-dbg.js +732 -0
  569. package/src/sap/fe/core/services/ShellServicesFactory.js +3 -752
  570. package/src/sap/fe/core/services/ShellServicesFactory.js.map +1 -0
  571. package/src/sap/fe/core/services/SideEffectsServiceFactory-dbg.js +569 -0
  572. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +3 -599
  573. package/src/sap/fe/core/services/SideEffectsServiceFactory.js.map +1 -0
  574. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +3 -3
  575. package/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +355 -0
  576. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +3 -387
  577. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js.map +1 -0
  578. package/src/sap/fe/core/services/view/TemplatingErrorPage-dbg.controller.js +37 -0
  579. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +3 -34
  580. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js.map +1 -0
  581. package/src/sap/fe/core/support/AnnotationIssue.support.js +4 -4
  582. package/src/sap/fe/core/support/CollectionFacetMissingID.support.js +3 -3
  583. package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +3 -3
  584. package/src/sap/fe/core/support/CommonHelper-dbg.js +63 -0
  585. package/src/sap/fe/core/support/CommonHelper.js +3 -60
  586. package/src/sap/fe/core/support/CommonHelper.js.map +1 -0
  587. package/src/sap/fe/core/support/Diagnostics-dbg.js +44 -0
  588. package/src/sap/fe/core/support/Diagnostics.js +3 -49
  589. package/src/sap/fe/core/support/Diagnostics.js.map +1 -0
  590. package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +3 -3
  591. package/src/sap/fe/core/templating/CommonFormatters-dbg.js +70 -0
  592. package/src/sap/fe/core/templating/CommonFormatters.js +3 -66
  593. package/src/sap/fe/core/templating/CommonFormatters.js.map +1 -0
  594. package/src/sap/fe/core/templating/CommonFormatters.ts +9 -3
  595. package/src/sap/fe/core/templating/CriticalityFormatters-dbg.js +136 -0
  596. package/src/sap/fe/core/templating/CriticalityFormatters.js +3 -133
  597. package/src/sap/fe/core/templating/CriticalityFormatters.js.map +1 -0
  598. package/src/sap/fe/core/templating/DataFieldFormatters-dbg.js +58 -0
  599. package/src/sap/fe/core/templating/DataFieldFormatters.js +3 -55
  600. package/src/sap/fe/core/templating/DataFieldFormatters.js.map +1 -0
  601. package/src/sap/fe/core/templating/DataModelPathHelper-dbg.js +363 -0
  602. package/src/sap/fe/core/templating/DataModelPathHelper.js +3 -372
  603. package/src/sap/fe/core/templating/DataModelPathHelper.js.map +1 -0
  604. package/src/sap/fe/core/templating/DataModelPathHelper.ts +17 -8
  605. package/src/sap/fe/core/templating/DisplayModeFormatter-dbg.js +56 -0
  606. package/src/sap/fe/core/templating/DisplayModeFormatter.js +3 -124
  607. package/src/sap/fe/core/templating/DisplayModeFormatter.js.map +1 -0
  608. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +0 -47
  609. package/src/sap/fe/core/templating/EntitySetHelper-dbg.js +68 -0
  610. package/src/sap/fe/core/templating/EntitySetHelper.js +3 -81
  611. package/src/sap/fe/core/templating/EntitySetHelper.js.map +1 -0
  612. package/src/sap/fe/core/templating/FieldControlHelper-dbg.js +77 -0
  613. package/src/sap/fe/core/templating/FieldControlHelper.js +3 -74
  614. package/src/sap/fe/core/templating/FieldControlHelper.js.map +1 -0
  615. package/src/sap/fe/core/templating/FilterHelper-dbg.js +346 -0
  616. package/src/sap/fe/core/templating/FilterHelper.js +3 -339
  617. package/src/sap/fe/core/templating/FilterHelper.js.map +1 -0
  618. package/src/sap/fe/core/templating/FilterHelper.ts +2 -21
  619. package/src/sap/fe/core/templating/FilterTemplating-dbg.js +62 -0
  620. package/src/sap/fe/core/templating/FilterTemplating.js +3 -59
  621. package/src/sap/fe/core/templating/FilterTemplating.js.map +1 -0
  622. package/src/sap/fe/core/templating/PropertyFormatters-dbg.js +93 -0
  623. package/src/sap/fe/core/templating/PropertyFormatters.js +3 -90
  624. package/src/sap/fe/core/templating/PropertyFormatters.js.map +1 -0
  625. package/src/sap/fe/core/templating/PropertyHelper-dbg.js +340 -0
  626. package/src/sap/fe/core/templating/PropertyHelper.js +3 -337
  627. package/src/sap/fe/core/templating/PropertyHelper.js.map +1 -0
  628. package/src/sap/fe/core/templating/SemanticObjectHelper-dbg.js +91 -0
  629. package/src/sap/fe/core/templating/SemanticObjectHelper.js +3 -43
  630. package/src/sap/fe/core/templating/SemanticObjectHelper.js.map +1 -0
  631. package/src/sap/fe/core/templating/SemanticObjectHelper.ts +45 -1
  632. package/src/sap/fe/core/templating/UIFormatters-dbg.js +498 -0
  633. package/src/sap/fe/core/templating/UIFormatters.js +3 -544
  634. package/src/sap/fe/core/templating/UIFormatters.js.map +1 -0
  635. package/src/sap/fe/core/templating/UIFormatters.ts +60 -110
  636. package/src/sap/fe/core/type/DateTimeWithTimezone-dbg.js +35 -0
  637. package/src/sap/fe/core/type/DateTimeWithTimezone.js +3 -33
  638. package/src/sap/fe/core/type/DateTimeWithTimezone.js.map +1 -0
  639. package/src/sap/fe/core/type/EDM-dbg.js +84 -0
  640. package/src/sap/fe/core/type/EDM.js +6 -0
  641. package/src/sap/fe/core/type/EDM.js.map +1 -0
  642. package/src/sap/fe/core/type/EDM.ts +70 -0
  643. package/src/sap/fe/core/type/Email-dbg.js +29 -0
  644. package/src/sap/fe/core/type/Email.js +3 -26
  645. package/src/sap/fe/core/type/Email.js.map +1 -0
  646. package/src/sap/fe/core/type/FiscalDate-dbg.js +174 -0
  647. package/src/sap/fe/core/type/FiscalDate.js +6 -0
  648. package/src/sap/fe/core/type/FiscalDate.js.map +1 -0
  649. package/src/sap/fe/core/type/FiscalDate.ts +179 -0
  650. package/src/sap/fe/core/type/TypeUtil-dbg.js +58 -0
  651. package/src/sap/fe/core/type/TypeUtil.js +3 -55
  652. package/src/sap/fe/core/type/TypeUtil.js.map +1 -0
  653. package/src/sap/fe/core/type/TypeUtil.ts +1 -0
  654. package/src/.eslintrc +0 -7
@@ -0,0 +1,438 @@
1
+ /*!
2
+ * SAP UI development toolkit for HTML5 (SAPUI5)
3
+ * (c) Copyright 2009-2023 SAP SE. All rights reserved
4
+ */
5
+ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/converters/helpers/ConfigurableObject", "sap/fe/core/converters/helpers/ID", "sap/fe/core/converters/helpers/Key", "sap/fe/core/helpers/BindingToolkit", "../../../helpers/StableIdHelper", "../../helpers/DataFieldHelper", "../Common/Form"], function (DataField, ConfigurableObject, ID, Key, BindingToolkit, StableIdHelper, DataFieldHelper, Form) {
6
+ "use strict";
7
+
8
+ var _exports = {};
9
+ var getFormElementsFromManifest = Form.getFormElementsFromManifest;
10
+ var FormElementType = Form.FormElementType;
11
+ var isReferencePropertyStaticallyHidden = DataFieldHelper.isReferencePropertyStaticallyHidden;
12
+ var isAnnotationFieldStaticallyHidden = DataFieldHelper.isAnnotationFieldStaticallyHidden;
13
+ var createIdForAnnotation = StableIdHelper.createIdForAnnotation;
14
+ var not = BindingToolkit.not;
15
+ var getExpressionFromAnnotation = BindingToolkit.getExpressionFromAnnotation;
16
+ var equal = BindingToolkit.equal;
17
+ var compileExpression = BindingToolkit.compileExpression;
18
+ var KeyHelper = Key.KeyHelper;
19
+ var getHeaderFacetID = ID.getHeaderFacetID;
20
+ var getHeaderFacetFormID = ID.getHeaderFacetFormID;
21
+ var getHeaderFacetContainerID = ID.getHeaderFacetContainerID;
22
+ var getCustomHeaderFacetID = ID.getCustomHeaderFacetID;
23
+ var Placement = ConfigurableObject.Placement;
24
+ var insertCustomElements = ConfigurableObject.insertCustomElements;
25
+ var getSemanticObjectPath = DataField.getSemanticObjectPath;
26
+ // region definitions
27
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
28
+ // Definitions: Header Facet Types, Generic OP Header Facet, Manifest Properties for Custom Header Facet
29
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
30
+ let HeaderFacetType;
31
+ (function (HeaderFacetType) {
32
+ HeaderFacetType["Annotation"] = "Annotation";
33
+ HeaderFacetType["XMLFragment"] = "XMLFragment";
34
+ })(HeaderFacetType || (HeaderFacetType = {}));
35
+ _exports.HeaderFacetType = HeaderFacetType;
36
+ let FacetType;
37
+ (function (FacetType) {
38
+ FacetType["Reference"] = "Reference";
39
+ FacetType["Collection"] = "Collection";
40
+ })(FacetType || (FacetType = {}));
41
+ _exports.FacetType = FacetType;
42
+ let FlexDesignTimeType;
43
+ (function (FlexDesignTimeType) {
44
+ FlexDesignTimeType["Default"] = "Default";
45
+ FlexDesignTimeType["NotAdaptable"] = "not-adaptable";
46
+ FlexDesignTimeType["NotAdaptableTree"] = "not-adaptable-tree";
47
+ FlexDesignTimeType["NotAdaptableVisibility"] = "not-adaptable-visibility";
48
+ })(FlexDesignTimeType || (FlexDesignTimeType = {}));
49
+ _exports.FlexDesignTimeType = FlexDesignTimeType;
50
+ var HeaderDataPointType;
51
+ (function (HeaderDataPointType) {
52
+ HeaderDataPointType["ProgressIndicator"] = "ProgressIndicator";
53
+ HeaderDataPointType["RatingIndicator"] = "RatingIndicator";
54
+ HeaderDataPointType["Content"] = "Content";
55
+ })(HeaderDataPointType || (HeaderDataPointType = {}));
56
+ var TargetAnnotationType;
57
+ (function (TargetAnnotationType) {
58
+ TargetAnnotationType["None"] = "None";
59
+ TargetAnnotationType["DataPoint"] = "DataPoint";
60
+ TargetAnnotationType["Chart"] = "Chart";
61
+ TargetAnnotationType["Identification"] = "Identification";
62
+ TargetAnnotationType["Contact"] = "Contact";
63
+ TargetAnnotationType["Address"] = "Address";
64
+ TargetAnnotationType["FieldGroup"] = "FieldGroup";
65
+ })(TargetAnnotationType || (TargetAnnotationType = {}));
66
+ // endregion definitions
67
+
68
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
69
+ // Collect All Header Facets: Custom (via Manifest) and Annotation Based (via Metamodel)
70
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
71
+
72
+ /**
73
+ * Retrieve header facets from annotations.
74
+ *
75
+ * @param converterContext
76
+ * @returns Header facets from annotations
77
+ */
78
+ function getHeaderFacetsFromAnnotations(converterContext) {
79
+ var _converterContext$get, _converterContext$get2, _converterContext$get3;
80
+ const headerFacets = [];
81
+ (_converterContext$get = converterContext.getEntityType().annotations) === null || _converterContext$get === void 0 ? void 0 : (_converterContext$get2 = _converterContext$get.UI) === null || _converterContext$get2 === void 0 ? void 0 : (_converterContext$get3 = _converterContext$get2.HeaderFacets) === null || _converterContext$get3 === void 0 ? void 0 : _converterContext$get3.forEach(facet => {
82
+ const headerFacet = createHeaderFacet(facet, converterContext);
83
+ if (headerFacet) {
84
+ headerFacets.push(headerFacet);
85
+ }
86
+ });
87
+ return headerFacets;
88
+ }
89
+
90
+ /**
91
+ * Retrieve custom header facets from manifest.
92
+ *
93
+ * @param manifestCustomHeaderFacets
94
+ * @returns HeaderFacets from manifest
95
+ */
96
+ _exports.getHeaderFacetsFromAnnotations = getHeaderFacetsFromAnnotations;
97
+ function getHeaderFacetsFromManifest(manifestCustomHeaderFacets) {
98
+ const customHeaderFacets = {};
99
+ Object.keys(manifestCustomHeaderFacets).forEach(manifestHeaderFacetKey => {
100
+ const customHeaderFacet = manifestCustomHeaderFacets[manifestHeaderFacetKey];
101
+ customHeaderFacets[manifestHeaderFacetKey] = createCustomHeaderFacet(customHeaderFacet, manifestHeaderFacetKey);
102
+ });
103
+ return customHeaderFacets;
104
+ }
105
+
106
+ /**
107
+ * Retrieve stashed settings for header facets from manifest.
108
+ *
109
+ * @param facetDefinition
110
+ * @param collectionFacetDefinition
111
+ * @param converterContext
112
+ * @returns Stashed setting for header facet or false
113
+ */
114
+ _exports.getHeaderFacetsFromManifest = getHeaderFacetsFromManifest;
115
+ function getStashedSettingsForHeaderFacet(facetDefinition, collectionFacetDefinition, converterContext) {
116
+ var _headerFacetsControlC;
117
+ // When a HeaderFacet is nested inside a CollectionFacet, stashing is not supported
118
+ if (facetDefinition.$Type === "com.sap.vocabularies.UI.v1.ReferenceFacet" && collectionFacetDefinition.$Type === "com.sap.vocabularies.UI.v1.CollectionFacet") {
119
+ return false;
120
+ }
121
+ const headerFacetID = createIdForAnnotation(facetDefinition) ?? "";
122
+ const headerFacetsControlConfig = converterContext.getManifestWrapper().getHeaderFacets();
123
+ const stashedSetting = (_headerFacetsControlC = headerFacetsControlConfig[headerFacetID]) === null || _headerFacetsControlC === void 0 ? void 0 : _headerFacetsControlC.stashed;
124
+ return stashedSetting === true;
125
+ }
126
+
127
+ /**
128
+ * Retrieve flexibility designtime settings from manifest.
129
+ *
130
+ * @param facetDefinition
131
+ * @param collectionFacetDefinition
132
+ * @param converterContext
133
+ * @returns Designtime setting or default
134
+ */
135
+ _exports.getStashedSettingsForHeaderFacet = getStashedSettingsForHeaderFacet;
136
+ function getDesignTimeMetadataSettingsForHeaderFacet(facetDefinition, collectionFacetDefinition, converterContext) {
137
+ let designTimeMetadata = FlexDesignTimeType.Default;
138
+ const headerFacetID = createIdForAnnotation(facetDefinition);
139
+
140
+ // For HeaderFacets nested inside CollectionFacet RTA should be disabled, therefore set to "not-adaptable-tree"
141
+ if (facetDefinition.$Type === "com.sap.vocabularies.UI.v1.ReferenceFacet" && collectionFacetDefinition.$Type === "com.sap.vocabularies.UI.v1.CollectionFacet") {
142
+ designTimeMetadata = FlexDesignTimeType.NotAdaptableTree;
143
+ } else {
144
+ const headerFacetsControlConfig = converterContext.getManifestWrapper().getHeaderFacets();
145
+ if (headerFacetID) {
146
+ var _headerFacetsControlC2, _headerFacetsControlC3;
147
+ const designTime = (_headerFacetsControlC2 = headerFacetsControlConfig[headerFacetID]) === null || _headerFacetsControlC2 === void 0 ? void 0 : (_headerFacetsControlC3 = _headerFacetsControlC2.flexSettings) === null || _headerFacetsControlC3 === void 0 ? void 0 : _headerFacetsControlC3.designtime;
148
+ switch (designTime) {
149
+ case FlexDesignTimeType.NotAdaptable:
150
+ case FlexDesignTimeType.NotAdaptableTree:
151
+ case FlexDesignTimeType.NotAdaptableVisibility:
152
+ designTimeMetadata = designTime;
153
+ break;
154
+ default:
155
+ break;
156
+ }
157
+ }
158
+ }
159
+ return designTimeMetadata;
160
+ }
161
+
162
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
163
+ // Convert & Build Annotation Based Header Facets
164
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
165
+ _exports.getDesignTimeMetadataSettingsForHeaderFacet = getDesignTimeMetadataSettingsForHeaderFacet;
166
+ function createReferenceHeaderFacet(facetDefinition, collectionFacetDefinition, converterContext) {
167
+ var _facetDefinition$anno, _facetDefinition$anno2, _facetDefinition$anno3;
168
+ if (facetDefinition.$Type === "com.sap.vocabularies.UI.v1.ReferenceFacet" && !(((_facetDefinition$anno = facetDefinition.annotations) === null || _facetDefinition$anno === void 0 ? void 0 : (_facetDefinition$anno2 = _facetDefinition$anno.UI) === null || _facetDefinition$anno2 === void 0 ? void 0 : (_facetDefinition$anno3 = _facetDefinition$anno2.Hidden) === null || _facetDefinition$anno3 === void 0 ? void 0 : _facetDefinition$anno3.valueOf()) === true)) {
169
+ var _facetDefinition$Targ, _facetDefinition$Targ2;
170
+ const headerFacetID = getHeaderFacetID(facetDefinition),
171
+ getHeaderFacetKey = (facetDefinitionToCheck, fallback) => {
172
+ var _facetDefinitionToChe, _facetDefinitionToChe2;
173
+ return ((_facetDefinitionToChe = facetDefinitionToCheck.ID) === null || _facetDefinitionToChe === void 0 ? void 0 : _facetDefinitionToChe.toString()) || ((_facetDefinitionToChe2 = facetDefinitionToCheck.Label) === null || _facetDefinitionToChe2 === void 0 ? void 0 : _facetDefinitionToChe2.toString()) || fallback;
174
+ },
175
+ targetAnnotationValue = facetDefinition.Target.value,
176
+ targetAnnotationType = getTargetAnnotationType(facetDefinition);
177
+ let headerFormData;
178
+ let headerDataPointData;
179
+ switch (targetAnnotationType) {
180
+ case TargetAnnotationType.FieldGroup:
181
+ headerFormData = getFieldGroupFormData(facetDefinition, converterContext);
182
+ break;
183
+ case TargetAnnotationType.DataPoint:
184
+ headerDataPointData = getDataPointData(facetDefinition, converterContext);
185
+ break;
186
+ // ToDo: Handle other cases
187
+ default:
188
+ break;
189
+ }
190
+ const {
191
+ annotations
192
+ } = facetDefinition;
193
+ if (((_facetDefinition$Targ = facetDefinition.Target) === null || _facetDefinition$Targ === void 0 ? void 0 : (_facetDefinition$Targ2 = _facetDefinition$Targ.$target) === null || _facetDefinition$Targ2 === void 0 ? void 0 : _facetDefinition$Targ2.term) === "com.sap.vocabularies.UI.v1.Chart" && isAnnotationFieldStaticallyHidden(facetDefinition)) {
194
+ return undefined;
195
+ } else {
196
+ var _annotations$UI, _annotations$UI$Hidde;
197
+ return {
198
+ type: HeaderFacetType.Annotation,
199
+ facetType: FacetType.Reference,
200
+ id: headerFacetID,
201
+ containerId: getHeaderFacetContainerID(facetDefinition),
202
+ key: getHeaderFacetKey(facetDefinition, headerFacetID),
203
+ flexSettings: {
204
+ designtime: getDesignTimeMetadataSettingsForHeaderFacet(facetDefinition, collectionFacetDefinition, converterContext)
205
+ },
206
+ stashed: getStashedSettingsForHeaderFacet(facetDefinition, collectionFacetDefinition, converterContext),
207
+ visible: compileExpression(not(equal(getExpressionFromAnnotation(annotations === null || annotations === void 0 ? void 0 : (_annotations$UI = annotations.UI) === null || _annotations$UI === void 0 ? void 0 : (_annotations$UI$Hidde = _annotations$UI.Hidden) === null || _annotations$UI$Hidde === void 0 ? void 0 : _annotations$UI$Hidde.valueOf()), true))),
208
+ annotationPath: `${converterContext.getEntitySetBasedAnnotationPath(facetDefinition.fullyQualifiedName)}/`,
209
+ targetAnnotationValue,
210
+ targetAnnotationType,
211
+ headerFormData,
212
+ headerDataPointData
213
+ };
214
+ }
215
+ }
216
+ return undefined;
217
+ }
218
+ function createCollectionHeaderFacet(collectionFacetDefinition, converterContext) {
219
+ if (collectionFacetDefinition.$Type === "com.sap.vocabularies.UI.v1.CollectionFacet") {
220
+ var _collectionFacetDefin, _collectionFacetDefin2, _collectionFacetDefin3;
221
+ const facets = [],
222
+ headerFacetID = getHeaderFacetID(collectionFacetDefinition),
223
+ getHeaderFacetKey = (facetDefinition, fallback) => {
224
+ var _facetDefinition$ID, _facetDefinition$Labe;
225
+ return ((_facetDefinition$ID = facetDefinition.ID) === null || _facetDefinition$ID === void 0 ? void 0 : _facetDefinition$ID.toString()) || ((_facetDefinition$Labe = facetDefinition.Label) === null || _facetDefinition$Labe === void 0 ? void 0 : _facetDefinition$Labe.toString()) || fallback;
226
+ };
227
+ collectionFacetDefinition.Facets.forEach(facetDefinition => {
228
+ const facet = createReferenceHeaderFacet(facetDefinition, collectionFacetDefinition, converterContext);
229
+ if (facet) {
230
+ facets.push(facet);
231
+ }
232
+ });
233
+ return {
234
+ type: HeaderFacetType.Annotation,
235
+ facetType: FacetType.Collection,
236
+ id: headerFacetID,
237
+ containerId: getHeaderFacetContainerID(collectionFacetDefinition),
238
+ key: getHeaderFacetKey(collectionFacetDefinition, headerFacetID),
239
+ flexSettings: {
240
+ designtime: getDesignTimeMetadataSettingsForHeaderFacet(collectionFacetDefinition, collectionFacetDefinition, converterContext)
241
+ },
242
+ stashed: getStashedSettingsForHeaderFacet(collectionFacetDefinition, collectionFacetDefinition, converterContext),
243
+ visible: compileExpression(not(equal(getExpressionFromAnnotation((_collectionFacetDefin = collectionFacetDefinition.annotations) === null || _collectionFacetDefin === void 0 ? void 0 : (_collectionFacetDefin2 = _collectionFacetDefin.UI) === null || _collectionFacetDefin2 === void 0 ? void 0 : (_collectionFacetDefin3 = _collectionFacetDefin2.Hidden) === null || _collectionFacetDefin3 === void 0 ? void 0 : _collectionFacetDefin3.valueOf()), true))),
244
+ annotationPath: `${converterContext.getEntitySetBasedAnnotationPath(collectionFacetDefinition.fullyQualifiedName)}/`,
245
+ facets
246
+ };
247
+ }
248
+ return undefined;
249
+ }
250
+ function getTargetAnnotationType(facetDefinition) {
251
+ let annotationType = TargetAnnotationType.None;
252
+ const annotationTypeMap = {
253
+ "com.sap.vocabularies.UI.v1.DataPoint": TargetAnnotationType.DataPoint,
254
+ "com.sap.vocabularies.UI.v1.Chart": TargetAnnotationType.Chart,
255
+ "com.sap.vocabularies.UI.v1.Identification": TargetAnnotationType.Identification,
256
+ "com.sap.vocabularies.Communication.v1.Contact": TargetAnnotationType.Contact,
257
+ "com.sap.vocabularies.Communication.v1.Address": TargetAnnotationType.Address,
258
+ "com.sap.vocabularies.UI.v1.FieldGroup": TargetAnnotationType.FieldGroup
259
+ };
260
+ // ReferenceURLFacet and CollectionFacet do not have Target property.
261
+ if (facetDefinition.$Type !== "com.sap.vocabularies.UI.v1.ReferenceURLFacet" && facetDefinition.$Type !== "com.sap.vocabularies.UI.v1.CollectionFacet") {
262
+ var _facetDefinition$Targ3, _facetDefinition$Targ4;
263
+ annotationType = annotationTypeMap[(_facetDefinition$Targ3 = facetDefinition.Target) === null || _facetDefinition$Targ3 === void 0 ? void 0 : (_facetDefinition$Targ4 = _facetDefinition$Targ3.$target) === null || _facetDefinition$Targ4 === void 0 ? void 0 : _facetDefinition$Targ4.term] || TargetAnnotationType.None;
264
+ }
265
+ return annotationType;
266
+ }
267
+ function getFieldGroupFormData(facetDefinition, converterContext) {
268
+ var _facetDefinition$Labe2;
269
+ // split in this from annotation + getFieldGroupFromDefault
270
+ if (!facetDefinition) {
271
+ throw new Error("Cannot get FieldGroup form data without facet definition");
272
+ }
273
+ const formElements = insertCustomElements(getFormElementsFromAnnotations(facetDefinition, converterContext), getFormElementsFromManifest(facetDefinition, converterContext));
274
+ return {
275
+ id: getHeaderFacetFormID(facetDefinition),
276
+ label: (_facetDefinition$Labe2 = facetDefinition.Label) === null || _facetDefinition$Labe2 === void 0 ? void 0 : _facetDefinition$Labe2.toString(),
277
+ formElements
278
+ };
279
+ }
280
+
281
+ /**
282
+ * Creates an array of manifest-based FormElements.
283
+ *
284
+ * @param facetDefinition The definition of the facet
285
+ * @param converterContext The converter context for the facet
286
+ * @returns Annotation-based FormElements
287
+ */
288
+ function getFormElementsFromAnnotations(facetDefinition, converterContext) {
289
+ const annotationBasedFormElements = [];
290
+
291
+ // ReferenceURLFacet and CollectionFacet do not have Target property.
292
+ if (facetDefinition.$Type !== "com.sap.vocabularies.UI.v1.ReferenceURLFacet" && facetDefinition.$Type !== "com.sap.vocabularies.UI.v1.CollectionFacet") {
293
+ var _facetDefinition$Targ5, _facetDefinition$Targ6;
294
+ (_facetDefinition$Targ5 = facetDefinition.Target) === null || _facetDefinition$Targ5 === void 0 ? void 0 : (_facetDefinition$Targ6 = _facetDefinition$Targ5.$target) === null || _facetDefinition$Targ6 === void 0 ? void 0 : _facetDefinition$Targ6.Data.forEach(dataField => {
295
+ var _dataField$annotation, _dataField$annotation2, _dataField$annotation3;
296
+ if (!(((_dataField$annotation = dataField.annotations) === null || _dataField$annotation === void 0 ? void 0 : (_dataField$annotation2 = _dataField$annotation.UI) === null || _dataField$annotation2 === void 0 ? void 0 : (_dataField$annotation3 = _dataField$annotation2.Hidden) === null || _dataField$annotation3 === void 0 ? void 0 : _dataField$annotation3.valueOf()) === true)) {
297
+ const semanticObjectAnnotationPath = getSemanticObjectPath(converterContext, dataField);
298
+ if ((dataField.$Type === "com.sap.vocabularies.UI.v1.DataField" || dataField.$Type === "com.sap.vocabularies.UI.v1.DataFieldWithUrl" || dataField.$Type === "com.sap.vocabularies.UI.v1.DataFieldWithNavigationPath" || dataField.$Type === "com.sap.vocabularies.UI.v1.DataFieldWithIntentBasedNavigation" || dataField.$Type === "com.sap.vocabularies.UI.v1.DataFieldWithAction") && !isReferencePropertyStaticallyHidden(dataField)) {
299
+ var _dataField$Value, _dataField$Value$$tar, _dataField$Value$$tar2, _dataField$Value$$tar3, _dataField$Value$$tar4, _annotations$UI2, _annotations$UI2$Hidd, _dataField$Value2, _dataField$Value2$$ta, _dataField$Value2$$ta2, _dataField$Value2$$ta3;
300
+ const {
301
+ annotations
302
+ } = dataField;
303
+ annotationBasedFormElements.push({
304
+ isValueMultilineText: ((_dataField$Value = dataField.Value) === null || _dataField$Value === void 0 ? void 0 : (_dataField$Value$$tar = _dataField$Value.$target) === null || _dataField$Value$$tar === void 0 ? void 0 : (_dataField$Value$$tar2 = _dataField$Value$$tar.annotations) === null || _dataField$Value$$tar2 === void 0 ? void 0 : (_dataField$Value$$tar3 = _dataField$Value$$tar2.UI) === null || _dataField$Value$$tar3 === void 0 ? void 0 : (_dataField$Value$$tar4 = _dataField$Value$$tar3.MultiLineText) === null || _dataField$Value$$tar4 === void 0 ? void 0 : _dataField$Value$$tar4.valueOf()) === true,
305
+ type: FormElementType.Annotation,
306
+ key: KeyHelper.generateKeyFromDataField(dataField),
307
+ visible: compileExpression(not(equal(getExpressionFromAnnotation(annotations === null || annotations === void 0 ? void 0 : (_annotations$UI2 = annotations.UI) === null || _annotations$UI2 === void 0 ? void 0 : (_annotations$UI2$Hidd = _annotations$UI2.Hidden) === null || _annotations$UI2$Hidd === void 0 ? void 0 : _annotations$UI2$Hidd.valueOf()), true))),
308
+ label: ((_dataField$Value2 = dataField.Value) === null || _dataField$Value2 === void 0 ? void 0 : (_dataField$Value2$$ta = _dataField$Value2.$target) === null || _dataField$Value2$$ta === void 0 ? void 0 : (_dataField$Value2$$ta2 = _dataField$Value2$$ta.annotations) === null || _dataField$Value2$$ta2 === void 0 ? void 0 : (_dataField$Value2$$ta3 = _dataField$Value2$$ta2.Common) === null || _dataField$Value2$$ta3 === void 0 ? void 0 : _dataField$Value2$$ta3.Label) || dataField.Label,
309
+ idPrefix: getHeaderFacetFormID(facetDefinition, dataField),
310
+ annotationPath: `${converterContext.getEntitySetBasedAnnotationPath(dataField.fullyQualifiedName)}/`,
311
+ semanticObjectPath: semanticObjectAnnotationPath
312
+ });
313
+ } else if (dataField.$Type === "com.sap.vocabularies.UI.v1.DataFieldForAnnotation" && !isReferencePropertyStaticallyHidden(dataField)) {
314
+ var _dataField$Target, _dataField$Target$$ta, _dataField$Target$$ta2, _dataField$Target$$ta3, _dataField$Target$$ta4, _annotations$UI3, _annotations$UI3$Hidd, _dataField$Target2, _dataField$Target2$$t, _dataField$Target2$$t2, _dataField$Target2$$t3, _dataField$Target2$$t4, _dataField$Label;
315
+ const {
316
+ annotations
317
+ } = dataField;
318
+ annotationBasedFormElements.push({
319
+ // FIXME this is wrong, the annotation should exist, so the target is not properly identified
320
+ isValueMultilineText: ((_dataField$Target = dataField.Target) === null || _dataField$Target === void 0 ? void 0 : (_dataField$Target$$ta = _dataField$Target.$target) === null || _dataField$Target$$ta === void 0 ? void 0 : (_dataField$Target$$ta2 = _dataField$Target$$ta.annotations) === null || _dataField$Target$$ta2 === void 0 ? void 0 : (_dataField$Target$$ta3 = _dataField$Target$$ta2.UI) === null || _dataField$Target$$ta3 === void 0 ? void 0 : (_dataField$Target$$ta4 = _dataField$Target$$ta3.MultiLineText) === null || _dataField$Target$$ta4 === void 0 ? void 0 : _dataField$Target$$ta4.valueOf()) === true,
321
+ type: FormElementType.Annotation,
322
+ key: KeyHelper.generateKeyFromDataField(dataField),
323
+ visible: compileExpression(not(equal(getExpressionFromAnnotation(annotations === null || annotations === void 0 ? void 0 : (_annotations$UI3 = annotations.UI) === null || _annotations$UI3 === void 0 ? void 0 : (_annotations$UI3$Hidd = _annotations$UI3.Hidden) === null || _annotations$UI3$Hidd === void 0 ? void 0 : _annotations$UI3$Hidd.valueOf()), true))),
324
+ label: ((_dataField$Target2 = dataField.Target) === null || _dataField$Target2 === void 0 ? void 0 : (_dataField$Target2$$t = _dataField$Target2.$target) === null || _dataField$Target2$$t === void 0 ? void 0 : (_dataField$Target2$$t2 = _dataField$Target2$$t.annotations) === null || _dataField$Target2$$t2 === void 0 ? void 0 : (_dataField$Target2$$t3 = _dataField$Target2$$t2.Common) === null || _dataField$Target2$$t3 === void 0 ? void 0 : (_dataField$Target2$$t4 = _dataField$Target2$$t3.Label) === null || _dataField$Target2$$t4 === void 0 ? void 0 : _dataField$Target2$$t4.toString()) || ((_dataField$Label = dataField.Label) === null || _dataField$Label === void 0 ? void 0 : _dataField$Label.toString()),
325
+ idPrefix: getHeaderFacetFormID(facetDefinition, dataField),
326
+ annotationPath: `${converterContext.getEntitySetBasedAnnotationPath(dataField.fullyQualifiedName)}/`,
327
+ semanticObjectPath: semanticObjectAnnotationPath
328
+ });
329
+ }
330
+ }
331
+ });
332
+ }
333
+ return annotationBasedFormElements;
334
+ }
335
+ function getDataPointData(facetDefinition, converterContext) {
336
+ let type = HeaderDataPointType.Content;
337
+ let semanticObjectPath;
338
+ if (facetDefinition.$Type === "com.sap.vocabularies.UI.v1.ReferenceFacet" && !isAnnotationFieldStaticallyHidden(facetDefinition)) {
339
+ var _facetDefinition$Targ7, _facetDefinition$Targ8, _facetDefinition$Targ9, _facetDefinition$Targ10, _facetDefinition$Targ11;
340
+ if (((_facetDefinition$Targ7 = facetDefinition.Target) === null || _facetDefinition$Targ7 === void 0 ? void 0 : (_facetDefinition$Targ8 = _facetDefinition$Targ7.$target) === null || _facetDefinition$Targ8 === void 0 ? void 0 : _facetDefinition$Targ8.Visualization) === "UI.VisualizationType/Progress") {
341
+ type = HeaderDataPointType.ProgressIndicator;
342
+ } else if (((_facetDefinition$Targ9 = facetDefinition.Target) === null || _facetDefinition$Targ9 === void 0 ? void 0 : (_facetDefinition$Targ10 = _facetDefinition$Targ9.$target) === null || _facetDefinition$Targ10 === void 0 ? void 0 : _facetDefinition$Targ10.Visualization) === "UI.VisualizationType/Rating") {
343
+ type = HeaderDataPointType.RatingIndicator;
344
+ }
345
+ const dataPoint = (_facetDefinition$Targ11 = facetDefinition.Target) === null || _facetDefinition$Targ11 === void 0 ? void 0 : _facetDefinition$Targ11.$target;
346
+ if (typeof dataPoint === "object") {
347
+ var _dataPoint$Value;
348
+ if (dataPoint !== null && dataPoint !== void 0 && (_dataPoint$Value = dataPoint.Value) !== null && _dataPoint$Value !== void 0 && _dataPoint$Value.$target) {
349
+ var _property$annotations, _property$annotations2;
350
+ const property = dataPoint.Value.$target;
351
+ if ((property === null || property === void 0 ? void 0 : (_property$annotations = property.annotations) === null || _property$annotations === void 0 ? void 0 : (_property$annotations2 = _property$annotations.Common) === null || _property$annotations2 === void 0 ? void 0 : _property$annotations2.SemanticObject) !== undefined) {
352
+ semanticObjectPath = converterContext.getEntitySetBasedAnnotationPath(property === null || property === void 0 ? void 0 : property.fullyQualifiedName);
353
+ }
354
+ }
355
+ }
356
+ }
357
+ return {
358
+ type,
359
+ semanticObjectPath
360
+ };
361
+ }
362
+
363
+ /**
364
+ * Creates an annotation-based header facet.
365
+ *
366
+ * @param facetDefinition The definition of the facet
367
+ * @param converterContext The converter context
368
+ * @returns The created annotation-based header facet
369
+ */
370
+ function createHeaderFacet(facetDefinition, converterContext) {
371
+ let headerFacet;
372
+ switch (facetDefinition.$Type) {
373
+ case "com.sap.vocabularies.UI.v1.ReferenceFacet":
374
+ headerFacet = createReferenceHeaderFacet(facetDefinition, facetDefinition, converterContext);
375
+ break;
376
+ case "com.sap.vocabularies.UI.v1.CollectionFacet":
377
+ headerFacet = createCollectionHeaderFacet(facetDefinition, converterContext);
378
+ break;
379
+ default:
380
+ break;
381
+ }
382
+ return headerFacet;
383
+ }
384
+
385
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
386
+ // Convert & Build Manifest Based Header Facets
387
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
388
+
389
+ function generateBinding(requestGroupId) {
390
+ if (!requestGroupId) {
391
+ return undefined;
392
+ }
393
+ const groupId = ["Heroes", "Decoration", "Workers", "LongRunners"].indexOf(requestGroupId) !== -1 ? `$auto.${requestGroupId}` : requestGroupId;
394
+ return `{ path : '', parameters : { $$groupId : '${groupId}' } }`;
395
+ }
396
+
397
+ /**
398
+ * Create a manifest based custom header facet.
399
+ *
400
+ * @param customHeaderFacetDefinition
401
+ * @param headerFacetKey
402
+ * @returns The manifest based custom header facet created
403
+ */
404
+ function createCustomHeaderFacet(customHeaderFacetDefinition, headerFacetKey) {
405
+ const customHeaderFacetID = getCustomHeaderFacetID(headerFacetKey);
406
+ let position = customHeaderFacetDefinition.position;
407
+ if (!position) {
408
+ position = {
409
+ placement: Placement.After
410
+ };
411
+ }
412
+ // TODO for an non annotation fragment the name is mandatory -> Not checked
413
+ return {
414
+ facetType: FacetType.Reference,
415
+ facets: [],
416
+ type: customHeaderFacetDefinition.type,
417
+ id: customHeaderFacetID,
418
+ containerId: customHeaderFacetID,
419
+ key: headerFacetKey,
420
+ position: position,
421
+ visible: customHeaderFacetDefinition.visible,
422
+ fragmentName: customHeaderFacetDefinition.template || customHeaderFacetDefinition.name,
423
+ title: customHeaderFacetDefinition.title,
424
+ subTitle: customHeaderFacetDefinition.subTitle,
425
+ stashed: customHeaderFacetDefinition.stashed || false,
426
+ flexSettings: {
427
+ ...{
428
+ designtime: FlexDesignTimeType.Default
429
+ },
430
+ ...customHeaderFacetDefinition.flexSettings
431
+ },
432
+ binding: generateBinding(customHeaderFacetDefinition.requestGroupId),
433
+ templateEdit: customHeaderFacetDefinition.templateEdit
434
+ };
435
+ }
436
+ return _exports;
437
+ }, false);
438
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJIZWFkZXJGYWNldFR5cGUiLCJGYWNldFR5cGUiLCJGbGV4RGVzaWduVGltZVR5cGUiLCJIZWFkZXJEYXRhUG9pbnRUeXBlIiwiVGFyZ2V0QW5ub3RhdGlvblR5cGUiLCJnZXRIZWFkZXJGYWNldHNGcm9tQW5ub3RhdGlvbnMiLCJjb252ZXJ0ZXJDb250ZXh0IiwiaGVhZGVyRmFjZXRzIiwiZ2V0RW50aXR5VHlwZSIsImFubm90YXRpb25zIiwiVUkiLCJIZWFkZXJGYWNldHMiLCJmb3JFYWNoIiwiZmFjZXQiLCJoZWFkZXJGYWNldCIsImNyZWF0ZUhlYWRlckZhY2V0IiwicHVzaCIsImdldEhlYWRlckZhY2V0c0Zyb21NYW5pZmVzdCIsIm1hbmlmZXN0Q3VzdG9tSGVhZGVyRmFjZXRzIiwiY3VzdG9tSGVhZGVyRmFjZXRzIiwiT2JqZWN0Iiwia2V5cyIsIm1hbmlmZXN0SGVhZGVyRmFjZXRLZXkiLCJjdXN0b21IZWFkZXJGYWNldCIsImNyZWF0ZUN1c3RvbUhlYWRlckZhY2V0IiwiZ2V0U3Rhc2hlZFNldHRpbmdzRm9ySGVhZGVyRmFjZXQiLCJmYWNldERlZmluaXRpb24iLCJjb2xsZWN0aW9uRmFjZXREZWZpbml0aW9uIiwiJFR5cGUiLCJoZWFkZXJGYWNldElEIiwiY3JlYXRlSWRGb3JBbm5vdGF0aW9uIiwiaGVhZGVyRmFjZXRzQ29udHJvbENvbmZpZyIsImdldE1hbmlmZXN0V3JhcHBlciIsImdldEhlYWRlckZhY2V0cyIsInN0YXNoZWRTZXR0aW5nIiwic3Rhc2hlZCIsImdldERlc2lnblRpbWVNZXRhZGF0YVNldHRpbmdzRm9ySGVhZGVyRmFjZXQiLCJkZXNpZ25UaW1lTWV0YWRhdGEiLCJEZWZhdWx0IiwiTm90QWRhcHRhYmxlVHJlZSIsImRlc2lnblRpbWUiLCJmbGV4U2V0dGluZ3MiLCJkZXNpZ250aW1lIiwiTm90QWRhcHRhYmxlIiwiTm90QWRhcHRhYmxlVmlzaWJpbGl0eSIsImNyZWF0ZVJlZmVyZW5jZUhlYWRlckZhY2V0IiwiSGlkZGVuIiwidmFsdWVPZiIsImdldEhlYWRlckZhY2V0SUQiLCJnZXRIZWFkZXJGYWNldEtleSIsImZhY2V0RGVmaW5pdGlvblRvQ2hlY2siLCJmYWxsYmFjayIsIklEIiwidG9TdHJpbmciLCJMYWJlbCIsInRhcmdldEFubm90YXRpb25WYWx1ZSIsIlRhcmdldCIsInZhbHVlIiwidGFyZ2V0QW5ub3RhdGlvblR5cGUiLCJnZXRUYXJnZXRBbm5vdGF0aW9uVHlwZSIsImhlYWRlckZvcm1EYXRhIiwiaGVhZGVyRGF0YVBvaW50RGF0YSIsIkZpZWxkR3JvdXAiLCJnZXRGaWVsZEdyb3VwRm9ybURhdGEiLCJEYXRhUG9pbnQiLCJnZXREYXRhUG9pbnREYXRhIiwiJHRhcmdldCIsInRlcm0iLCJpc0Fubm90YXRpb25GaWVsZFN0YXRpY2FsbHlIaWRkZW4iLCJ1bmRlZmluZWQiLCJ0eXBlIiwiQW5ub3RhdGlvbiIsImZhY2V0VHlwZSIsIlJlZmVyZW5jZSIsImlkIiwiY29udGFpbmVySWQiLCJnZXRIZWFkZXJGYWNldENvbnRhaW5lcklEIiwia2V5IiwidmlzaWJsZSIsImNvbXBpbGVFeHByZXNzaW9uIiwibm90IiwiZXF1YWwiLCJnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24iLCJhbm5vdGF0aW9uUGF0aCIsImdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgiLCJmdWxseVF1YWxpZmllZE5hbWUiLCJjcmVhdGVDb2xsZWN0aW9uSGVhZGVyRmFjZXQiLCJmYWNldHMiLCJGYWNldHMiLCJDb2xsZWN0aW9uIiwiYW5ub3RhdGlvblR5cGUiLCJOb25lIiwiYW5ub3RhdGlvblR5cGVNYXAiLCJDaGFydCIsIklkZW50aWZpY2F0aW9uIiwiQ29udGFjdCIsIkFkZHJlc3MiLCJFcnJvciIsImZvcm1FbGVtZW50cyIsImluc2VydEN1c3RvbUVsZW1lbnRzIiwiZ2V0Rm9ybUVsZW1lbnRzRnJvbUFubm90YXRpb25zIiwiZ2V0Rm9ybUVsZW1lbnRzRnJvbU1hbmlmZXN0IiwiZ2V0SGVhZGVyRmFjZXRGb3JtSUQiLCJsYWJlbCIsImFubm90YXRpb25CYXNlZEZvcm1FbGVtZW50cyIsIkRhdGEiLCJkYXRhRmllbGQiLCJzZW1hbnRpY09iamVjdEFubm90YXRpb25QYXRoIiwiZ2V0U2VtYW50aWNPYmplY3RQYXRoIiwiaXNSZWZlcmVuY2VQcm9wZXJ0eVN0YXRpY2FsbHlIaWRkZW4iLCJpc1ZhbHVlTXVsdGlsaW5lVGV4dCIsIlZhbHVlIiwiTXVsdGlMaW5lVGV4dCIsIkZvcm1FbGVtZW50VHlwZSIsIktleUhlbHBlciIsImdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZCIsIkNvbW1vbiIsImlkUHJlZml4Iiwic2VtYW50aWNPYmplY3RQYXRoIiwiQ29udGVudCIsIlZpc3VhbGl6YXRpb24iLCJQcm9ncmVzc0luZGljYXRvciIsIlJhdGluZ0luZGljYXRvciIsImRhdGFQb2ludCIsInByb3BlcnR5IiwiU2VtYW50aWNPYmplY3QiLCJnZW5lcmF0ZUJpbmRpbmciLCJyZXF1ZXN0R3JvdXBJZCIsImdyb3VwSWQiLCJpbmRleE9mIiwiY3VzdG9tSGVhZGVyRmFjZXREZWZpbml0aW9uIiwiaGVhZGVyRmFjZXRLZXkiLCJjdXN0b21IZWFkZXJGYWNldElEIiwiZ2V0Q3VzdG9tSGVhZGVyRmFjZXRJRCIsInBvc2l0aW9uIiwicGxhY2VtZW50IiwiUGxhY2VtZW50IiwiQWZ0ZXIiLCJmcmFnbWVudE5hbWUiLCJ0ZW1wbGF0ZSIsIm5hbWUiLCJ0aXRsZSIsInN1YlRpdGxlIiwiYmluZGluZyIsInRlbXBsYXRlRWRpdCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiSGVhZGVyRmFjZXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuXHREYXRhRmllbGRBYnN0cmFjdFR5cGVzLFxuXHREYXRhUG9pbnQsXG5cdEZhY2V0VHlwZXMsXG5cdEZpZWxkR3JvdXAsXG5cdFJlZmVyZW5jZUZhY2V0VHlwZXNcbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVGVybXMsIFVJQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgZ2V0U2VtYW50aWNPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvYW5ub3RhdGlvbnMvRGF0YUZpZWxkXCI7XG5pbXBvcnQgdHlwZSB7IENvbmZpZ3VyYWJsZU9iamVjdCwgQ29uZmlndXJhYmxlUmVjb3JkLCBDdXN0b21FbGVtZW50LCBQb3NpdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvQ29uZmlndXJhYmxlT2JqZWN0XCI7XG5pbXBvcnQgeyBpbnNlcnRDdXN0b21FbGVtZW50cywgUGxhY2VtZW50IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9Db25maWd1cmFibGVPYmplY3RcIjtcbmltcG9ydCB7XG5cdGdldEN1c3RvbUhlYWRlckZhY2V0SUQsXG5cdGdldEhlYWRlckZhY2V0Q29udGFpbmVySUQsXG5cdGdldEhlYWRlckZhY2V0Rm9ybUlELFxuXHRnZXRIZWFkZXJGYWNldElEXG59IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvSURcIjtcbmltcG9ydCB7IEtleUhlbHBlciB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvS2V5XCI7XG5pbXBvcnQgdHlwZSB7IE1hbmlmZXN0SGVhZGVyRmFjZXQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgdHlwZSB7IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGNvbXBpbGVFeHByZXNzaW9uLCBlcXVhbCwgZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uLCBub3QgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgY3JlYXRlSWRGb3JBbm5vdGF0aW9uIH0gZnJvbSBcIi4uLy4uLy4uL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB0eXBlIENvbnZlcnRlckNvbnRleHQgZnJvbSBcIi4uLy4uL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB7IGlzQW5ub3RhdGlvbkZpZWxkU3RhdGljYWxseUhpZGRlbiwgaXNSZWZlcmVuY2VQcm9wZXJ0eVN0YXRpY2FsbHlIaWRkZW4gfSBmcm9tIFwiLi4vLi4vaGVscGVycy9EYXRhRmllbGRIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgQW5ub3RhdGlvbkZvcm1FbGVtZW50LCBGb3JtRWxlbWVudCB9IGZyb20gXCIuLi9Db21tb24vRm9ybVwiO1xuaW1wb3J0IHsgRm9ybUVsZW1lbnRUeXBlLCBnZXRGb3JtRWxlbWVudHNGcm9tTWFuaWZlc3QgfSBmcm9tIFwiLi4vQ29tbW9uL0Zvcm1cIjtcblxuLy8gcmVnaW9uIGRlZmluaXRpb25zXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIERlZmluaXRpb25zOiBIZWFkZXIgRmFjZXQgVHlwZXMsIEdlbmVyaWMgT1AgSGVhZGVyIEZhY2V0LCBNYW5pZmVzdCBQcm9wZXJ0aWVzIGZvciBDdXN0b20gSGVhZGVyIEZhY2V0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuZXhwb3J0IGVudW0gSGVhZGVyRmFjZXRUeXBlIHtcblx0QW5ub3RhdGlvbiA9IFwiQW5ub3RhdGlvblwiLFxuXHRYTUxGcmFnbWVudCA9IFwiWE1MRnJhZ21lbnRcIlxufVxuXG5leHBvcnQgZW51bSBGYWNldFR5cGUge1xuXHRSZWZlcmVuY2UgPSBcIlJlZmVyZW5jZVwiLFxuXHRDb2xsZWN0aW9uID0gXCJDb2xsZWN0aW9uXCJcbn1cblxuZXhwb3J0IGVudW0gRmxleERlc2lnblRpbWVUeXBlIHtcblx0RGVmYXVsdCA9IFwiRGVmYXVsdFwiLFxuXHROb3RBZGFwdGFibGUgPSBcIm5vdC1hZGFwdGFibGVcIiwgLy8gZGlzYWJsZSBhbGwgYWN0aW9ucyBvbiB0aGF0IGluc3RhbmNlXG5cdE5vdEFkYXB0YWJsZVRyZWUgPSBcIm5vdC1hZGFwdGFibGUtdHJlZVwiLCAvLyBkaXNhYmxlIGFsbCBhY3Rpb25zIG9uIHRoYXQgaW5zdGFuY2UgYW5kIG9uIGFsbCBjaGlsZHJlbiBvZiB0aGF0IGluc3RhbmNlXG5cdE5vdEFkYXB0YWJsZVZpc2liaWxpdHkgPSBcIm5vdC1hZGFwdGFibGUtdmlzaWJpbGl0eVwiIC8vIGRpc2FibGUgYWxsIGFjdGlvbnMgdGhhdCBpbmZsdWVuY2UgdGhlIHZpc2liaWxpdHksIG5hbWVseSByZXZlYWwgYW5kIHJlbW92ZVxufVxuXG5leHBvcnQgdHlwZSBGbGV4U2V0dGluZ3MgPSB7XG5cdGRlc2lnbnRpbWU/OiBGbGV4RGVzaWduVGltZVR5cGU7XG59O1xuXG50eXBlIEhlYWRlckZvcm1EYXRhID0ge1xuXHRpZDogc3RyaW5nO1xuXHRsYWJlbD86IHN0cmluZztcblx0Zm9ybUVsZW1lbnRzOiBGb3JtRWxlbWVudFtdO1xufTtcblxuZW51bSBIZWFkZXJEYXRhUG9pbnRUeXBlIHtcblx0UHJvZ3Jlc3NJbmRpY2F0b3IgPSBcIlByb2dyZXNzSW5kaWNhdG9yXCIsXG5cdFJhdGluZ0luZGljYXRvciA9IFwiUmF0aW5nSW5kaWNhdG9yXCIsXG5cdENvbnRlbnQgPSBcIkNvbnRlbnRcIlxufVxuXG50eXBlIEhlYWRlckRhdGFQb2ludERhdGEgPSB7XG5cdHR5cGU6IEhlYWRlckRhdGFQb2ludFR5cGU7XG5cdHNlbWFudGljT2JqZWN0UGF0aD86IHN0cmluZztcbn07XG5cbmVudW0gVGFyZ2V0QW5ub3RhdGlvblR5cGUge1xuXHROb25lID0gXCJOb25lXCIsXG5cdERhdGFQb2ludCA9IFwiRGF0YVBvaW50XCIsXG5cdENoYXJ0ID0gXCJDaGFydFwiLFxuXHRJZGVudGlmaWNhdGlvbiA9IFwiSWRlbnRpZmljYXRpb25cIixcblx0Q29udGFjdCA9IFwiQ29udGFjdFwiLFxuXHRBZGRyZXNzID0gXCJBZGRyZXNzXCIsXG5cdEZpZWxkR3JvdXAgPSBcIkZpZWxkR3JvdXBcIlxufVxuXG50eXBlIEJhc2VIZWFkZXJGYWNldCA9IENvbmZpZ3VyYWJsZU9iamVjdCAmIHtcblx0dHlwZT86IEhlYWRlckZhY2V0VHlwZTsgLy8gTWFuaWZlc3Qgb3IgTWV0YWRhdGFcblx0aWQ6IHN0cmluZztcblx0Y29udGFpbmVySWQ6IHN0cmluZztcblx0YW5ub3RhdGlvblBhdGg/OiBzdHJpbmc7XG5cdGZsZXhTZXR0aW5nczogRmxleFNldHRpbmdzO1xuXHRzdGFzaGVkOiBib29sZWFuO1xuXHR2aXNpYmxlOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblx0dGFyZ2V0QW5ub3RhdGlvblZhbHVlPzogc3RyaW5nO1xuXHR0YXJnZXRBbm5vdGF0aW9uVHlwZT86IFRhcmdldEFubm90YXRpb25UeXBlO1xufTtcblxudHlwZSBCYXNlUmVmZXJlbmNlRmFjZXQgPSBCYXNlSGVhZGVyRmFjZXQgJiB7XG5cdGZhY2V0VHlwZTogRmFjZXRUeXBlLlJlZmVyZW5jZTtcbn07XG5cbmV4cG9ydCB0eXBlIEZpZWxkR3JvdXBGYWNldCA9IEJhc2VSZWZlcmVuY2VGYWNldCAmIHtcblx0aGVhZGVyRm9ybURhdGE6IEhlYWRlckZvcm1EYXRhO1xufTtcblxudHlwZSBEYXRhUG9pbnRGYWNldCA9IEJhc2VSZWZlcmVuY2VGYWNldCAmIHtcblx0aGVhZGVyRGF0YVBvaW50RGF0YT86IEhlYWRlckRhdGFQb2ludERhdGE7XG59O1xuXG50eXBlIFJlZmVyZW5jZUZhY2V0ID0gRmllbGRHcm91cEZhY2V0IHwgRGF0YVBvaW50RmFjZXQ7XG5cbmV4cG9ydCB0eXBlIENvbGxlY3Rpb25GYWNldCA9IEJhc2VIZWFkZXJGYWNldCAmIHtcblx0ZmFjZXRUeXBlOiBGYWNldFR5cGUuQ29sbGVjdGlvbjtcblx0ZmFjZXRzOiBSZWZlcmVuY2VGYWNldFtdO1xufTtcblxuZXhwb3J0IHR5cGUgT2JqZWN0UGFnZUhlYWRlckZhY2V0ID0gUmVmZXJlbmNlRmFjZXQgfCBDb2xsZWN0aW9uRmFjZXQ7XG5cbmV4cG9ydCB0eXBlIEN1c3RvbU9iamVjdFBhZ2VIZWFkZXJGYWNldCA9IEN1c3RvbUVsZW1lbnQ8T2JqZWN0UGFnZUhlYWRlckZhY2V0PiAmIHtcblx0ZnJhZ21lbnROYW1lPzogc3RyaW5nO1xuXHR0aXRsZT86IHN0cmluZztcblx0c3ViVGl0bGU/OiBzdHJpbmc7XG5cdHN0YXNoZWQ/OiBib29sZWFuO1xuXHRiaW5kaW5nPzogc3RyaW5nO1xuXHR0ZW1wbGF0ZUVkaXQ/OiBzdHJpbmc7XG59O1xuXG4vLyBlbmRyZWdpb24gZGVmaW5pdGlvbnNcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb2xsZWN0IEFsbCBIZWFkZXIgRmFjZXRzOiBDdXN0b20gKHZpYSBNYW5pZmVzdCkgYW5kIEFubm90YXRpb24gQmFzZWQgKHZpYSBNZXRhbW9kZWwpXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuLyoqXG4gKiBSZXRyaWV2ZSBoZWFkZXIgZmFjZXRzIGZyb20gYW5ub3RhdGlvbnMuXG4gKlxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHRcbiAqIEByZXR1cm5zIEhlYWRlciBmYWNldHMgZnJvbSBhbm5vdGF0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SGVhZGVyRmFjZXRzRnJvbUFubm90YXRpb25zKGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBPYmplY3RQYWdlSGVhZGVyRmFjZXRbXSB7XG5cdGNvbnN0IGhlYWRlckZhY2V0czogT2JqZWN0UGFnZUhlYWRlckZhY2V0W10gPSBbXTtcblx0Y29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKCkuYW5ub3RhdGlvbnM/LlVJPy5IZWFkZXJGYWNldHM/LmZvckVhY2goKGZhY2V0KSA9PiB7XG5cdFx0Y29uc3QgaGVhZGVyRmFjZXQ6IE9iamVjdFBhZ2VIZWFkZXJGYWNldCB8IHVuZGVmaW5lZCA9IGNyZWF0ZUhlYWRlckZhY2V0KGZhY2V0LCBjb252ZXJ0ZXJDb250ZXh0KTtcblx0XHRpZiAoaGVhZGVyRmFjZXQpIHtcblx0XHRcdGhlYWRlckZhY2V0cy5wdXNoKGhlYWRlckZhY2V0KTtcblx0XHR9XG5cdH0pO1xuXG5cdHJldHVybiBoZWFkZXJGYWNldHM7XG59XG5cbi8qKlxuICogUmV0cmlldmUgY3VzdG9tIGhlYWRlciBmYWNldHMgZnJvbSBtYW5pZmVzdC5cbiAqXG4gKiBAcGFyYW0gbWFuaWZlc3RDdXN0b21IZWFkZXJGYWNldHNcbiAqIEByZXR1cm5zIEhlYWRlckZhY2V0cyBmcm9tIG1hbmlmZXN0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRIZWFkZXJGYWNldHNGcm9tTWFuaWZlc3QoXG5cdG1hbmlmZXN0Q3VzdG9tSGVhZGVyRmFjZXRzOiBDb25maWd1cmFibGVSZWNvcmQ8TWFuaWZlc3RIZWFkZXJGYWNldD5cbik6IFJlY29yZDxzdHJpbmcsIEN1c3RvbU9iamVjdFBhZ2VIZWFkZXJGYWNldD4ge1xuXHRjb25zdCBjdXN0b21IZWFkZXJGYWNldHM6IFJlY29yZDxzdHJpbmcsIEN1c3RvbU9iamVjdFBhZ2VIZWFkZXJGYWNldD4gPSB7fTtcblxuXHRPYmplY3Qua2V5cyhtYW5pZmVzdEN1c3RvbUhlYWRlckZhY2V0cykuZm9yRWFjaCgobWFuaWZlc3RIZWFkZXJGYWNldEtleSkgPT4ge1xuXHRcdGNvbnN0IGN1c3RvbUhlYWRlckZhY2V0OiBNYW5pZmVzdEhlYWRlckZhY2V0ID0gbWFuaWZlc3RDdXN0b21IZWFkZXJGYWNldHNbbWFuaWZlc3RIZWFkZXJGYWNldEtleV07XG5cdFx0Y3VzdG9tSGVhZGVyRmFjZXRzW21hbmlmZXN0SGVhZGVyRmFjZXRLZXldID0gY3JlYXRlQ3VzdG9tSGVhZGVyRmFjZXQoY3VzdG9tSGVhZGVyRmFjZXQsIG1hbmlmZXN0SGVhZGVyRmFjZXRLZXkpO1xuXHR9KTtcblxuXHRyZXR1cm4gY3VzdG9tSGVhZGVyRmFjZXRzO1xufVxuXG4vKipcbiAqIFJldHJpZXZlIHN0YXNoZWQgc2V0dGluZ3MgZm9yIGhlYWRlciBmYWNldHMgZnJvbSBtYW5pZmVzdC5cbiAqXG4gKiBAcGFyYW0gZmFjZXREZWZpbml0aW9uXG4gKiBAcGFyYW0gY29sbGVjdGlvbkZhY2V0RGVmaW5pdGlvblxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHRcbiAqIEByZXR1cm5zIFN0YXNoZWQgc2V0dGluZyBmb3IgaGVhZGVyIGZhY2V0IG9yIGZhbHNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGFzaGVkU2V0dGluZ3NGb3JIZWFkZXJGYWNldChcblx0ZmFjZXREZWZpbml0aW9uOiBGYWNldFR5cGVzLFxuXHRjb2xsZWN0aW9uRmFjZXREZWZpbml0aW9uOiBGYWNldFR5cGVzLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0XG4pOiBib29sZWFuIHtcblx0Ly8gV2hlbiBhIEhlYWRlckZhY2V0IGlzIG5lc3RlZCBpbnNpZGUgYSBDb2xsZWN0aW9uRmFjZXQsIHN0YXNoaW5nIGlzIG5vdCBzdXBwb3J0ZWRcblx0aWYgKFxuXHRcdGZhY2V0RGVmaW5pdGlvbi4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuUmVmZXJlbmNlRmFjZXQgJiZcblx0XHRjb2xsZWN0aW9uRmFjZXREZWZpbml0aW9uLiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5Db2xsZWN0aW9uRmFjZXRcblx0KSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cdGNvbnN0IGhlYWRlckZhY2V0SUQgPSBjcmVhdGVJZEZvckFubm90YXRpb24oZmFjZXREZWZpbml0aW9uKSA/PyBcIlwiO1xuXHRjb25zdCBoZWFkZXJGYWNldHNDb250cm9sQ29uZmlnID0gY29udmVydGVyQ29udGV4dC5nZXRNYW5pZmVzdFdyYXBwZXIoKS5nZXRIZWFkZXJGYWNldHMoKTtcblx0Y29uc3Qgc3Rhc2hlZFNldHRpbmcgPSBoZWFkZXJGYWNldHNDb250cm9sQ29uZmlnW2hlYWRlckZhY2V0SURdPy5zdGFzaGVkO1xuXHRyZXR1cm4gc3Rhc2hlZFNldHRpbmcgPT09IHRydWU7XG59XG5cbi8qKlxuICogUmV0cmlldmUgZmxleGliaWxpdHkgZGVzaWdudGltZSBzZXR0aW5ncyBmcm9tIG1hbmlmZXN0LlxuICpcbiAqIEBwYXJhbSBmYWNldERlZmluaXRpb25cbiAqIEBwYXJhbSBjb2xsZWN0aW9uRmFjZXREZWZpbml0aW9uXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dFxuICogQHJldHVybnMgRGVzaWdudGltZSBzZXR0aW5nIG9yIGRlZmF1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERlc2lnblRpbWVNZXRhZGF0YVNldHRpbmdzRm9ySGVhZGVyRmFjZXQoXG5cdGZhY2V0RGVmaW5pdGlvbjogRmFjZXRUeXBlcyxcblx0Y29sbGVjdGlvbkZhY2V0RGVmaW5pdGlvbjogRmFjZXRUeXBlcyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dFxuKTogRmxleERlc2lnblRpbWVUeXBlIHtcblx0bGV0IGRlc2lnblRpbWVNZXRhZGF0YTogRmxleERlc2lnblRpbWVUeXBlID0gRmxleERlc2lnblRpbWVUeXBlLkRlZmF1bHQ7XG5cdGNvbnN0IGhlYWRlckZhY2V0SUQgPSBjcmVhdGVJZEZvckFubm90YXRpb24oZmFjZXREZWZpbml0aW9uKTtcblxuXHQvLyBGb3IgSGVhZGVyRmFjZXRzIG5lc3RlZCBpbnNpZGUgQ29sbGVjdGlvbkZhY2V0IFJUQSBzaG91bGQgYmUgZGlzYWJsZWQsIHRoZXJlZm9yZSBzZXQgdG8gXCJub3QtYWRhcHRhYmxlLXRyZWVcIlxuXHRpZiAoXG5cdFx0ZmFjZXREZWZpbml0aW9uLiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5SZWZlcmVuY2VGYWNldCAmJlxuXHRcdGNvbGxlY3Rpb25GYWNldERlZmluaXRpb24uJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkNvbGxlY3Rpb25GYWNldFxuXHQpIHtcblx0XHRkZXNpZ25UaW1lTWV0YWRhdGEgPSBGbGV4RGVzaWduVGltZVR5cGUuTm90QWRhcHRhYmxlVHJlZTtcblx0fSBlbHNlIHtcblx0XHRjb25zdCBoZWFkZXJGYWNldHNDb250cm9sQ29uZmlnID0gY29udmVydGVyQ29udGV4dC5nZXRNYW5pZmVzdFdyYXBwZXIoKS5nZXRIZWFkZXJGYWNldHMoKTtcblx0XHRpZiAoaGVhZGVyRmFjZXRJRCkge1xuXHRcdFx0Y29uc3QgZGVzaWduVGltZSA9IGhlYWRlckZhY2V0c0NvbnRyb2xDb25maWdbaGVhZGVyRmFjZXRJRF0/LmZsZXhTZXR0aW5ncz8uZGVzaWdudGltZTtcblx0XHRcdHN3aXRjaCAoZGVzaWduVGltZSkge1xuXHRcdFx0XHRjYXNlIEZsZXhEZXNpZ25UaW1lVHlwZS5Ob3RBZGFwdGFibGU6XG5cdFx0XHRcdGNhc2UgRmxleERlc2lnblRpbWVUeXBlLk5vdEFkYXB0YWJsZVRyZWU6XG5cdFx0XHRcdGNhc2UgRmxleERlc2lnblRpbWVUeXBlLk5vdEFkYXB0YWJsZVZpc2liaWxpdHk6XG5cdFx0XHRcdFx0ZGVzaWduVGltZU1ldGFkYXRhID0gZGVzaWduVGltZTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cmV0dXJuIGRlc2lnblRpbWVNZXRhZGF0YTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb252ZXJ0ICYgQnVpbGQgQW5ub3RhdGlvbiBCYXNlZCBIZWFkZXIgRmFjZXRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbmZ1bmN0aW9uIGNyZWF0ZVJlZmVyZW5jZUhlYWRlckZhY2V0KFxuXHRmYWNldERlZmluaXRpb246IEZhY2V0VHlwZXMsXG5cdGNvbGxlY3Rpb25GYWNldERlZmluaXRpb246IEZhY2V0VHlwZXMsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHRcbik6IFJlZmVyZW5jZUZhY2V0IHwgdW5kZWZpbmVkIHtcblx0aWYgKGZhY2V0RGVmaW5pdGlvbi4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuUmVmZXJlbmNlRmFjZXQgJiYgIShmYWNldERlZmluaXRpb24uYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4/LnZhbHVlT2YoKSA9PT0gdHJ1ZSkpIHtcblx0XHRjb25zdCBoZWFkZXJGYWNldElEID0gZ2V0SGVhZGVyRmFjZXRJRChmYWNldERlZmluaXRpb24pLFxuXHRcdFx0Z2V0SGVhZGVyRmFjZXRLZXkgPSAoZmFjZXREZWZpbml0aW9uVG9DaGVjazogRmFjZXRUeXBlcywgZmFsbGJhY2s6IHN0cmluZyk6IHN0cmluZyA9PiB7XG5cdFx0XHRcdHJldHVybiBmYWNldERlZmluaXRpb25Ub0NoZWNrLklEPy50b1N0cmluZygpIHx8IGZhY2V0RGVmaW5pdGlvblRvQ2hlY2suTGFiZWw/LnRvU3RyaW5nKCkgfHwgZmFsbGJhY2s7XG5cdFx0XHR9LFxuXHRcdFx0dGFyZ2V0QW5ub3RhdGlvblZhbHVlID0gZmFjZXREZWZpbml0aW9uLlRhcmdldC52YWx1ZSxcblx0XHRcdHRhcmdldEFubm90YXRpb25UeXBlID0gZ2V0VGFyZ2V0QW5ub3RhdGlvblR5cGUoZmFjZXREZWZpbml0aW9uKTtcblxuXHRcdGxldCBoZWFkZXJGb3JtRGF0YTogSGVhZGVyRm9ybURhdGEgfCB1bmRlZmluZWQ7XG5cdFx0bGV0IGhlYWRlckRhdGFQb2ludERhdGE6IEhlYWRlckRhdGFQb2ludERhdGEgfCB1bmRlZmluZWQ7XG5cblx0XHRzd2l0Y2ggKHRhcmdldEFubm90YXRpb25UeXBlKSB7XG5cdFx0XHRjYXNlIFRhcmdldEFubm90YXRpb25UeXBlLkZpZWxkR3JvdXA6XG5cdFx0XHRcdGhlYWRlckZvcm1EYXRhID0gZ2V0RmllbGRHcm91cEZvcm1EYXRhKGZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dCk7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIFRhcmdldEFubm90YXRpb25UeXBlLkRhdGFQb2ludDpcblx0XHRcdFx0aGVhZGVyRGF0YVBvaW50RGF0YSA9IGdldERhdGFQb2ludERhdGEoZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHQvLyBUb0RvOiBIYW5kbGUgb3RoZXIgY2FzZXNcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblxuXHRcdGNvbnN0IHsgYW5ub3RhdGlvbnMgfSA9IGZhY2V0RGVmaW5pdGlvbjtcblx0XHRpZiAoXG5cdFx0XHRmYWNldERlZmluaXRpb24uVGFyZ2V0Py4kdGFyZ2V0Py50ZXJtID09PSBVSUFubm90YXRpb25UZXJtcy5DaGFydCAmJlxuXHRcdFx0aXNBbm5vdGF0aW9uRmllbGRTdGF0aWNhbGx5SGlkZGVuKGZhY2V0RGVmaW5pdGlvbiBhcyBhbnkpXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHR0eXBlOiBIZWFkZXJGYWNldFR5cGUuQW5ub3RhdGlvbixcblx0XHRcdFx0ZmFjZXRUeXBlOiBGYWNldFR5cGUuUmVmZXJlbmNlLFxuXHRcdFx0XHRpZDogaGVhZGVyRmFjZXRJRCxcblx0XHRcdFx0Y29udGFpbmVySWQ6IGdldEhlYWRlckZhY2V0Q29udGFpbmVySUQoZmFjZXREZWZpbml0aW9uKSxcblx0XHRcdFx0a2V5OiBnZXRIZWFkZXJGYWNldEtleShmYWNldERlZmluaXRpb24sIGhlYWRlckZhY2V0SUQpLFxuXHRcdFx0XHRmbGV4U2V0dGluZ3M6IHtcblx0XHRcdFx0XHRkZXNpZ250aW1lOiBnZXREZXNpZ25UaW1lTWV0YWRhdGFTZXR0aW5nc0ZvckhlYWRlckZhY2V0KGZhY2V0RGVmaW5pdGlvbiwgY29sbGVjdGlvbkZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dClcblx0XHRcdFx0fSxcblx0XHRcdFx0c3Rhc2hlZDogZ2V0U3Rhc2hlZFNldHRpbmdzRm9ySGVhZGVyRmFjZXQoZmFjZXREZWZpbml0aW9uLCBjb2xsZWN0aW9uRmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHRcdFx0dmlzaWJsZTogY29tcGlsZUV4cHJlc3Npb24obm90KGVxdWFsKGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihhbm5vdGF0aW9ucz8uVUk/LkhpZGRlbj8udmFsdWVPZigpKSwgdHJ1ZSkpKSxcblx0XHRcdFx0YW5ub3RhdGlvblBhdGg6IGAke2NvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aChmYWNldERlZmluaXRpb24uZnVsbHlRdWFsaWZpZWROYW1lKX0vYCxcblx0XHRcdFx0dGFyZ2V0QW5ub3RhdGlvblZhbHVlLFxuXHRcdFx0XHR0YXJnZXRBbm5vdGF0aW9uVHlwZSxcblx0XHRcdFx0aGVhZGVyRm9ybURhdGEsXG5cdFx0XHRcdGhlYWRlckRhdGFQb2ludERhdGFcblx0XHRcdH07XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ29sbGVjdGlvbkhlYWRlckZhY2V0KFxuXHRjb2xsZWN0aW9uRmFjZXREZWZpbml0aW9uOiBGYWNldFR5cGVzLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0XG4pOiBDb2xsZWN0aW9uRmFjZXQgfCB1bmRlZmluZWQge1xuXHRpZiAoY29sbGVjdGlvbkZhY2V0RGVmaW5pdGlvbi4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuQ29sbGVjdGlvbkZhY2V0KSB7XG5cdFx0Y29uc3QgZmFjZXRzOiBSZWZlcmVuY2VGYWNldFtdID0gW10sXG5cdFx0XHRoZWFkZXJGYWNldElEID0gZ2V0SGVhZGVyRmFjZXRJRChjb2xsZWN0aW9uRmFjZXREZWZpbml0aW9uKSxcblx0XHRcdGdldEhlYWRlckZhY2V0S2V5ID0gKGZhY2V0RGVmaW5pdGlvbjogRmFjZXRUeXBlcywgZmFsbGJhY2s6IHN0cmluZyk6IHN0cmluZyA9PiB7XG5cdFx0XHRcdHJldHVybiBmYWNldERlZmluaXRpb24uSUQ/LnRvU3RyaW5nKCkgfHwgZmFjZXREZWZpbml0aW9uLkxhYmVsPy50b1N0cmluZygpIHx8IGZhbGxiYWNrO1xuXHRcdFx0fTtcblxuXHRcdGNvbGxlY3Rpb25GYWNldERlZmluaXRpb24uRmFjZXRzLmZvckVhY2goKGZhY2V0RGVmaW5pdGlvbikgPT4ge1xuXHRcdFx0Y29uc3QgZmFjZXQ6IFJlZmVyZW5jZUZhY2V0IHwgdW5kZWZpbmVkID0gY3JlYXRlUmVmZXJlbmNlSGVhZGVyRmFjZXQoXG5cdFx0XHRcdGZhY2V0RGVmaW5pdGlvbixcblx0XHRcdFx0Y29sbGVjdGlvbkZhY2V0RGVmaW5pdGlvbixcblx0XHRcdFx0Y29udmVydGVyQ29udGV4dFxuXHRcdFx0KTtcblx0XHRcdGlmIChmYWNldCkge1xuXHRcdFx0XHRmYWNldHMucHVzaChmYWNldCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0dHlwZTogSGVhZGVyRmFjZXRUeXBlLkFubm90YXRpb24sXG5cdFx0XHRmYWNldFR5cGU6IEZhY2V0VHlwZS5Db2xsZWN0aW9uLFxuXHRcdFx0aWQ6IGhlYWRlckZhY2V0SUQsXG5cdFx0XHRjb250YWluZXJJZDogZ2V0SGVhZGVyRmFjZXRDb250YWluZXJJRChjb2xsZWN0aW9uRmFjZXREZWZpbml0aW9uKSxcblx0XHRcdGtleTogZ2V0SGVhZGVyRmFjZXRLZXkoY29sbGVjdGlvbkZhY2V0RGVmaW5pdGlvbiwgaGVhZGVyRmFjZXRJRCksXG5cdFx0XHRmbGV4U2V0dGluZ3M6IHtcblx0XHRcdFx0ZGVzaWdudGltZTogZ2V0RGVzaWduVGltZU1ldGFkYXRhU2V0dGluZ3NGb3JIZWFkZXJGYWNldChcblx0XHRcdFx0XHRjb2xsZWN0aW9uRmFjZXREZWZpbml0aW9uLFxuXHRcdFx0XHRcdGNvbGxlY3Rpb25GYWNldERlZmluaXRpb24sXG5cdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dFxuXHRcdFx0XHQpXG5cdFx0XHR9LFxuXHRcdFx0c3Rhc2hlZDogZ2V0U3Rhc2hlZFNldHRpbmdzRm9ySGVhZGVyRmFjZXQoY29sbGVjdGlvbkZhY2V0RGVmaW5pdGlvbiwgY29sbGVjdGlvbkZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dCksXG5cdFx0XHR2aXNpYmxlOiBjb21waWxlRXhwcmVzc2lvbihcblx0XHRcdFx0bm90KGVxdWFsKGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihjb2xsZWN0aW9uRmFjZXREZWZpbml0aW9uLmFubm90YXRpb25zPy5VST8uSGlkZGVuPy52YWx1ZU9mKCkpLCB0cnVlKSlcblx0XHRcdCksXG5cdFx0XHRhbm5vdGF0aW9uUGF0aDogYCR7Y29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoKGNvbGxlY3Rpb25GYWNldERlZmluaXRpb24uZnVsbHlRdWFsaWZpZWROYW1lKX0vYCxcblx0XHRcdGZhY2V0c1xuXHRcdH07XG5cdH1cblxuXHRyZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBnZXRUYXJnZXRBbm5vdGF0aW9uVHlwZShmYWNldERlZmluaXRpb246IEZhY2V0VHlwZXMpOiBUYXJnZXRBbm5vdGF0aW9uVHlwZSB7XG5cdGxldCBhbm5vdGF0aW9uVHlwZSA9IFRhcmdldEFubm90YXRpb25UeXBlLk5vbmU7XG5cdGNvbnN0IGFubm90YXRpb25UeXBlTWFwOiBSZWNvcmQ8c3RyaW5nLCBUYXJnZXRBbm5vdGF0aW9uVHlwZT4gPSB7XG5cdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhUG9pbnRcIjogVGFyZ2V0QW5ub3RhdGlvblR5cGUuRGF0YVBvaW50LFxuXHRcdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ2hhcnRcIjogVGFyZ2V0QW5ub3RhdGlvblR5cGUuQ2hhcnQsXG5cdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5JZGVudGlmaWNhdGlvblwiOiBUYXJnZXRBbm5vdGF0aW9uVHlwZS5JZGVudGlmaWNhdGlvbixcblx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW11bmljYXRpb24udjEuQ29udGFjdFwiOiBUYXJnZXRBbm5vdGF0aW9uVHlwZS5Db250YWN0LFxuXHRcdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbXVuaWNhdGlvbi52MS5BZGRyZXNzXCI6IFRhcmdldEFubm90YXRpb25UeXBlLkFkZHJlc3MsXG5cdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5GaWVsZEdyb3VwXCI6IFRhcmdldEFubm90YXRpb25UeXBlLkZpZWxkR3JvdXBcblx0fTtcblx0Ly8gUmVmZXJlbmNlVVJMRmFjZXQgYW5kIENvbGxlY3Rpb25GYWNldCBkbyBub3QgaGF2ZSBUYXJnZXQgcHJvcGVydHkuXG5cdGlmIChmYWNldERlZmluaXRpb24uJFR5cGUgIT09IFVJQW5ub3RhdGlvblR5cGVzLlJlZmVyZW5jZVVSTEZhY2V0ICYmIGZhY2V0RGVmaW5pdGlvbi4kVHlwZSAhPT0gVUlBbm5vdGF0aW9uVHlwZXMuQ29sbGVjdGlvbkZhY2V0KSB7XG5cdFx0YW5ub3RhdGlvblR5cGUgPSBhbm5vdGF0aW9uVHlwZU1hcFtmYWNldERlZmluaXRpb24uVGFyZ2V0Py4kdGFyZ2V0Py50ZXJtXSB8fCBUYXJnZXRBbm5vdGF0aW9uVHlwZS5Ob25lO1xuXHR9XG5cblx0cmV0dXJuIGFubm90YXRpb25UeXBlO1xufVxuXG5mdW5jdGlvbiBnZXRGaWVsZEdyb3VwRm9ybURhdGEoZmFjZXREZWZpbml0aW9uOiBSZWZlcmVuY2VGYWNldFR5cGVzLCBjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0KTogSGVhZGVyRm9ybURhdGEge1xuXHQvLyBzcGxpdCBpbiB0aGlzIGZyb20gYW5ub3RhdGlvbiArIGdldEZpZWxkR3JvdXBGcm9tRGVmYXVsdFxuXHRpZiAoIWZhY2V0RGVmaW5pdGlvbikge1xuXHRcdHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBnZXQgRmllbGRHcm91cCBmb3JtIGRhdGEgd2l0aG91dCBmYWNldCBkZWZpbml0aW9uXCIpO1xuXHR9XG5cblx0Y29uc3QgZm9ybUVsZW1lbnRzID0gaW5zZXJ0Q3VzdG9tRWxlbWVudHMoXG5cdFx0Z2V0Rm9ybUVsZW1lbnRzRnJvbUFubm90YXRpb25zKGZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dCksXG5cdFx0Z2V0Rm9ybUVsZW1lbnRzRnJvbU1hbmlmZXN0KGZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dClcblx0KTtcblxuXHRyZXR1cm4ge1xuXHRcdGlkOiBnZXRIZWFkZXJGYWNldEZvcm1JRChmYWNldERlZmluaXRpb24pLFxuXHRcdGxhYmVsOiBmYWNldERlZmluaXRpb24uTGFiZWw/LnRvU3RyaW5nKCksXG5cdFx0Zm9ybUVsZW1lbnRzXG5cdH07XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiBtYW5pZmVzdC1iYXNlZCBGb3JtRWxlbWVudHMuXG4gKlxuICogQHBhcmFtIGZhY2V0RGVmaW5pdGlvbiBUaGUgZGVmaW5pdGlvbiBvZiB0aGUgZmFjZXRcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0IFRoZSBjb252ZXJ0ZXIgY29udGV4dCBmb3IgdGhlIGZhY2V0XG4gKiBAcmV0dXJucyBBbm5vdGF0aW9uLWJhc2VkIEZvcm1FbGVtZW50c1xuICovXG5mdW5jdGlvbiBnZXRGb3JtRWxlbWVudHNGcm9tQW5ub3RhdGlvbnMoZmFjZXREZWZpbml0aW9uOiBGYWNldFR5cGVzLCBjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0KTogQW5ub3RhdGlvbkZvcm1FbGVtZW50W10ge1xuXHRjb25zdCBhbm5vdGF0aW9uQmFzZWRGb3JtRWxlbWVudHM6IEFubm90YXRpb25Gb3JtRWxlbWVudFtdID0gW107XG5cblx0Ly8gUmVmZXJlbmNlVVJMRmFjZXQgYW5kIENvbGxlY3Rpb25GYWNldCBkbyBub3QgaGF2ZSBUYXJnZXQgcHJvcGVydHkuXG5cdGlmIChmYWNldERlZmluaXRpb24uJFR5cGUgIT09IFVJQW5ub3RhdGlvblR5cGVzLlJlZmVyZW5jZVVSTEZhY2V0ICYmIGZhY2V0RGVmaW5pdGlvbi4kVHlwZSAhPT0gVUlBbm5vdGF0aW9uVHlwZXMuQ29sbGVjdGlvbkZhY2V0KSB7XG5cdFx0KGZhY2V0RGVmaW5pdGlvbi5UYXJnZXQ/LiR0YXJnZXQgYXMgRmllbGRHcm91cCk/LkRhdGEuZm9yRWFjaCgoZGF0YUZpZWxkOiBEYXRhRmllbGRBYnN0cmFjdFR5cGVzKSA9PiB7XG5cdFx0XHRpZiAoIShkYXRhRmllbGQuYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4/LnZhbHVlT2YoKSA9PT0gdHJ1ZSkpIHtcblx0XHRcdFx0Y29uc3Qgc2VtYW50aWNPYmplY3RBbm5vdGF0aW9uUGF0aCA9IGdldFNlbWFudGljT2JqZWN0UGF0aChjb252ZXJ0ZXJDb250ZXh0LCBkYXRhRmllbGQpO1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0KGRhdGFGaWVsZC4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkIHx8XG5cdFx0XHRcdFx0XHRkYXRhRmllbGQuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhVcmwgfHxcblx0XHRcdFx0XHRcdGRhdGFGaWVsZC4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aE5hdmlnYXRpb25QYXRoIHx8XG5cdFx0XHRcdFx0XHRkYXRhRmllbGQuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhJbnRlbnRCYXNlZE5hdmlnYXRpb24gfHxcblx0XHRcdFx0XHRcdGRhdGFGaWVsZC4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aEFjdGlvbikgJiZcblx0XHRcdFx0XHQhaXNSZWZlcmVuY2VQcm9wZXJ0eVN0YXRpY2FsbHlIaWRkZW4oZGF0YUZpZWxkKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRjb25zdCB7IGFubm90YXRpb25zIH0gPSBkYXRhRmllbGQ7XG5cdFx0XHRcdFx0YW5ub3RhdGlvbkJhc2VkRm9ybUVsZW1lbnRzLnB1c2goe1xuXHRcdFx0XHRcdFx0aXNWYWx1ZU11bHRpbGluZVRleHQ6IGRhdGFGaWVsZC5WYWx1ZT8uJHRhcmdldD8uYW5ub3RhdGlvbnM/LlVJPy5NdWx0aUxpbmVUZXh0Py52YWx1ZU9mKCkgPT09IHRydWUsXG5cdFx0XHRcdFx0XHR0eXBlOiBGb3JtRWxlbWVudFR5cGUuQW5ub3RhdGlvbixcblx0XHRcdFx0XHRcdGtleTogS2V5SGVscGVyLmdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZChkYXRhRmllbGQpLFxuXHRcdFx0XHRcdFx0dmlzaWJsZTogY29tcGlsZUV4cHJlc3Npb24obm90KGVxdWFsKGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihhbm5vdGF0aW9ucz8uVUk/LkhpZGRlbj8udmFsdWVPZigpKSwgdHJ1ZSkpKSxcblx0XHRcdFx0XHRcdGxhYmVsOiBkYXRhRmllbGQuVmFsdWU/LiR0YXJnZXQ/LmFubm90YXRpb25zPy5Db21tb24/LkxhYmVsIHx8IGRhdGFGaWVsZC5MYWJlbCxcblx0XHRcdFx0XHRcdGlkUHJlZml4OiBnZXRIZWFkZXJGYWNldEZvcm1JRChmYWNldERlZmluaXRpb24sIGRhdGFGaWVsZCksXG5cdFx0XHRcdFx0XHRhbm5vdGF0aW9uUGF0aDogYCR7Y29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoKGRhdGFGaWVsZC5mdWxseVF1YWxpZmllZE5hbWUpfS9gLFxuXHRcdFx0XHRcdFx0c2VtYW50aWNPYmplY3RQYXRoOiBzZW1hbnRpY09iamVjdEFubm90YXRpb25QYXRoXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdFx0ZGF0YUZpZWxkLiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JBbm5vdGF0aW9uICYmXG5cdFx0XHRcdFx0IWlzUmVmZXJlbmNlUHJvcGVydHlTdGF0aWNhbGx5SGlkZGVuKGRhdGFGaWVsZClcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0Y29uc3QgeyBhbm5vdGF0aW9ucyB9ID0gZGF0YUZpZWxkO1xuXHRcdFx0XHRcdGFubm90YXRpb25CYXNlZEZvcm1FbGVtZW50cy5wdXNoKHtcblx0XHRcdFx0XHRcdC8vIEZJWE1FIHRoaXMgaXMgd3JvbmcsIHRoZSBhbm5vdGF0aW9uIHNob3VsZCBleGlzdCwgc28gdGhlIHRhcmdldCBpcyBub3QgcHJvcGVybHkgaWRlbnRpZmllZFxuXHRcdFx0XHRcdFx0aXNWYWx1ZU11bHRpbGluZVRleHQ6IChkYXRhRmllbGQuVGFyZ2V0Py4kdGFyZ2V0Py5hbm5vdGF0aW9ucz8uVUkgYXMgYW55KT8uTXVsdGlMaW5lVGV4dD8udmFsdWVPZigpID09PSB0cnVlLFxuXHRcdFx0XHRcdFx0dHlwZTogRm9ybUVsZW1lbnRUeXBlLkFubm90YXRpb24sXG5cdFx0XHRcdFx0XHRrZXk6IEtleUhlbHBlci5nZW5lcmF0ZUtleUZyb21EYXRhRmllbGQoZGF0YUZpZWxkKSxcblx0XHRcdFx0XHRcdHZpc2libGU6IGNvbXBpbGVFeHByZXNzaW9uKG5vdChlcXVhbChnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4/LnZhbHVlT2YoKSksIHRydWUpKSksXG5cdFx0XHRcdFx0XHRsYWJlbDogZGF0YUZpZWxkLlRhcmdldD8uJHRhcmdldD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uTGFiZWw/LnRvU3RyaW5nKCkgfHwgZGF0YUZpZWxkLkxhYmVsPy50b1N0cmluZygpLFxuXHRcdFx0XHRcdFx0aWRQcmVmaXg6IGdldEhlYWRlckZhY2V0Rm9ybUlEKGZhY2V0RGVmaW5pdGlvbiwgZGF0YUZpZWxkKSxcblx0XHRcdFx0XHRcdGFubm90YXRpb25QYXRoOiBgJHtjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZGF0YUZpZWxkLmZ1bGx5UXVhbGlmaWVkTmFtZSl9L2AsXG5cdFx0XHRcdFx0XHRzZW1hbnRpY09iamVjdFBhdGg6IHNlbWFudGljT2JqZWN0QW5ub3RhdGlvblBhdGhcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0cmV0dXJuIGFubm90YXRpb25CYXNlZEZvcm1FbGVtZW50cztcbn1cblxuZnVuY3Rpb24gZ2V0RGF0YVBvaW50RGF0YShmYWNldERlZmluaXRpb246IEZhY2V0VHlwZXMsIGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBIZWFkZXJEYXRhUG9pbnREYXRhIHtcblx0bGV0IHR5cGUgPSBIZWFkZXJEYXRhUG9pbnRUeXBlLkNvbnRlbnQ7XG5cdGxldCBzZW1hbnRpY09iamVjdFBhdGg7XG5cdGlmIChmYWNldERlZmluaXRpb24uJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLlJlZmVyZW5jZUZhY2V0ICYmICFpc0Fubm90YXRpb25GaWVsZFN0YXRpY2FsbHlIaWRkZW4oZmFjZXREZWZpbml0aW9uIGFzIGFueSkpIHtcblx0XHRpZiAoKGZhY2V0RGVmaW5pdGlvbi5UYXJnZXQ/LiR0YXJnZXQgYXMgRGF0YVBvaW50KT8uVmlzdWFsaXphdGlvbiA9PT0gXCJVSS5WaXN1YWxpemF0aW9uVHlwZS9Qcm9ncmVzc1wiKSB7XG5cdFx0XHR0eXBlID0gSGVhZGVyRGF0YVBvaW50VHlwZS5Qcm9ncmVzc0luZGljYXRvcjtcblx0XHR9IGVsc2UgaWYgKChmYWNldERlZmluaXRpb24uVGFyZ2V0Py4kdGFyZ2V0IGFzIERhdGFQb2ludCk/LlZpc3VhbGl6YXRpb24gPT09IFwiVUkuVmlzdWFsaXphdGlvblR5cGUvUmF0aW5nXCIpIHtcblx0XHRcdHR5cGUgPSBIZWFkZXJEYXRhUG9pbnRUeXBlLlJhdGluZ0luZGljYXRvcjtcblx0XHR9XG5cdFx0Y29uc3QgZGF0YVBvaW50ID0gZmFjZXREZWZpbml0aW9uLlRhcmdldD8uJHRhcmdldCBhcyBEYXRhUG9pbnQ7XG5cblx0XHRpZiAodHlwZW9mIGRhdGFQb2ludCA9PT0gXCJvYmplY3RcIikge1xuXHRcdFx0aWYgKGRhdGFQb2ludD8uVmFsdWU/LiR0YXJnZXQpIHtcblx0XHRcdFx0Y29uc3QgcHJvcGVydHkgPSBkYXRhUG9pbnQuVmFsdWUuJHRhcmdldDtcblx0XHRcdFx0aWYgKHByb3BlcnR5Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5TZW1hbnRpY09iamVjdCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0c2VtYW50aWNPYmplY3RQYXRoID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoKHByb3BlcnR5Py5mdWxseVF1YWxpZmllZE5hbWUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHsgdHlwZSwgc2VtYW50aWNPYmplY3RQYXRoIH07XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhbm5vdGF0aW9uLWJhc2VkIGhlYWRlciBmYWNldC5cbiAqXG4gKiBAcGFyYW0gZmFjZXREZWZpbml0aW9uIFRoZSBkZWZpbml0aW9uIG9mIHRoZSBmYWNldFxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHQgVGhlIGNvbnZlcnRlciBjb250ZXh0XG4gKiBAcmV0dXJucyBUaGUgY3JlYXRlZCBhbm5vdGF0aW9uLWJhc2VkIGhlYWRlciBmYWNldFxuICovXG5mdW5jdGlvbiBjcmVhdGVIZWFkZXJGYWNldChmYWNldERlZmluaXRpb246IEZhY2V0VHlwZXMsIGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBPYmplY3RQYWdlSGVhZGVyRmFjZXQgfCB1bmRlZmluZWQge1xuXHRsZXQgaGVhZGVyRmFjZXQ6IE9iamVjdFBhZ2VIZWFkZXJGYWNldCB8IHVuZGVmaW5lZDtcblx0c3dpdGNoIChmYWNldERlZmluaXRpb24uJFR5cGUpIHtcblx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLlJlZmVyZW5jZUZhY2V0OlxuXHRcdFx0aGVhZGVyRmFjZXQgPSBjcmVhdGVSZWZlcmVuY2VIZWFkZXJGYWNldChmYWNldERlZmluaXRpb24sIGZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dCk7XG5cdFx0XHRicmVhaztcblxuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuQ29sbGVjdGlvbkZhY2V0OlxuXHRcdFx0aGVhZGVyRmFjZXQgPSBjcmVhdGVDb2xsZWN0aW9uSGVhZGVyRmFjZXQoZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KTtcblx0XHRcdGJyZWFrO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRicmVhaztcblx0fVxuXG5cdHJldHVybiBoZWFkZXJGYWNldDtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb252ZXJ0ICYgQnVpbGQgTWFuaWZlc3QgQmFzZWQgSGVhZGVyIEZhY2V0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbmZ1bmN0aW9uIGdlbmVyYXRlQmluZGluZyhyZXF1ZXN0R3JvdXBJZD86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGlmICghcmVxdWVzdEdyb3VwSWQpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdGNvbnN0IGdyb3VwSWQgPVxuXHRcdFtcIkhlcm9lc1wiLCBcIkRlY29yYXRpb25cIiwgXCJXb3JrZXJzXCIsIFwiTG9uZ1J1bm5lcnNcIl0uaW5kZXhPZihyZXF1ZXN0R3JvdXBJZCkgIT09IC0xID8gYCRhdXRvLiR7cmVxdWVzdEdyb3VwSWR9YCA6IHJlcXVlc3RHcm91cElkO1xuXG5cdHJldHVybiBgeyBwYXRoIDogJycsIHBhcmFtZXRlcnMgOiB7ICQkZ3JvdXBJZCA6ICcke2dyb3VwSWR9JyB9IH1gO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIG1hbmlmZXN0IGJhc2VkIGN1c3RvbSBoZWFkZXIgZmFjZXQuXG4gKlxuICogQHBhcmFtIGN1c3RvbUhlYWRlckZhY2V0RGVmaW5pdGlvblxuICogQHBhcmFtIGhlYWRlckZhY2V0S2V5XG4gKiBAcmV0dXJucyBUaGUgbWFuaWZlc3QgYmFzZWQgY3VzdG9tIGhlYWRlciBmYWNldCBjcmVhdGVkXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUN1c3RvbUhlYWRlckZhY2V0KGN1c3RvbUhlYWRlckZhY2V0RGVmaW5pdGlvbjogTWFuaWZlc3RIZWFkZXJGYWNldCwgaGVhZGVyRmFjZXRLZXk6IHN0cmluZyk6IEN1c3RvbU9iamVjdFBhZ2VIZWFkZXJGYWNldCB7XG5cdGNvbnN0IGN1c3RvbUhlYWRlckZhY2V0SUQgPSBnZXRDdXN0b21IZWFkZXJGYWNldElEKGhlYWRlckZhY2V0S2V5KTtcblxuXHRsZXQgcG9zaXRpb246IFBvc2l0aW9uIHwgdW5kZWZpbmVkID0gY3VzdG9tSGVhZGVyRmFjZXREZWZpbml0aW9uLnBvc2l0aW9uO1xuXHRpZiAoIXBvc2l0aW9uKSB7XG5cdFx0cG9zaXRpb24gPSB7XG5cdFx0XHRwbGFjZW1lbnQ6IFBsYWNlbWVudC5BZnRlclxuXHRcdH07XG5cdH1cblx0Ly8gVE9ETyBmb3IgYW4gbm9uIGFubm90YXRpb24gZnJhZ21lbnQgdGhlIG5hbWUgaXMgbWFuZGF0b3J5IC0+IE5vdCBjaGVja2VkXG5cdHJldHVybiB7XG5cdFx0ZmFjZXRUeXBlOiBGYWNldFR5cGUuUmVmZXJlbmNlLFxuXHRcdGZhY2V0czogW10sXG5cdFx0dHlwZTogY3VzdG9tSGVhZGVyRmFjZXREZWZpbml0aW9uLnR5cGUsXG5cdFx0aWQ6IGN1c3RvbUhlYWRlckZhY2V0SUQsXG5cdFx0Y29udGFpbmVySWQ6IGN1c3RvbUhlYWRlckZhY2V0SUQsXG5cdFx0a2V5OiBoZWFkZXJGYWNldEtleSxcblx0XHRwb3NpdGlvbjogcG9zaXRpb24sXG5cdFx0dmlzaWJsZTogY3VzdG9tSGVhZGVyRmFjZXREZWZpbml0aW9uLnZpc2libGUsXG5cdFx0ZnJhZ21lbnROYW1lOiBjdXN0b21IZWFkZXJGYWNldERlZmluaXRpb24udGVtcGxhdGUgfHwgY3VzdG9tSGVhZGVyRmFjZXREZWZpbml0aW9uLm5hbWUsXG5cdFx0dGl0bGU6IGN1c3RvbUhlYWRlckZhY2V0RGVmaW5pdGlvbi50aXRsZSxcblx0XHRzdWJUaXRsZTogY3VzdG9tSGVhZGVyRmFjZXREZWZpbml0aW9uLnN1YlRpdGxlLFxuXHRcdHN0YXNoZWQ6IGN1c3RvbUhlYWRlckZhY2V0RGVmaW5pdGlvbi5zdGFzaGVkIHx8IGZhbHNlLFxuXHRcdGZsZXhTZXR0aW5nczogeyAuLi57IGRlc2lnbnRpbWU6IEZsZXhEZXNpZ25UaW1lVHlwZS5EZWZhdWx0IH0sIC4uLmN1c3RvbUhlYWRlckZhY2V0RGVmaW5pdGlvbi5mbGV4U2V0dGluZ3MgfSxcblx0XHRiaW5kaW5nOiBnZW5lcmF0ZUJpbmRpbmcoY3VzdG9tSGVhZGVyRmFjZXREZWZpbml0aW9uLnJlcXVlc3RHcm91cElkKSxcblx0XHR0ZW1wbGF0ZUVkaXQ6IGN1c3RvbUhlYWRlckZhY2V0RGVmaW5pdGlvbi50ZW1wbGF0ZUVkaXRcblx0fTtcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQTJCQTtFQUNBO0VBQ0E7RUFDQTtFQUFBLElBRVlBLGVBQWU7RUFBQSxXQUFmQSxlQUFlO0lBQWZBLGVBQWU7SUFBZkEsZUFBZTtFQUFBLEdBQWZBLGVBQWUsS0FBZkEsZUFBZTtFQUFBO0VBQUEsSUFLZkMsU0FBUztFQUFBLFdBQVRBLFNBQVM7SUFBVEEsU0FBUztJQUFUQSxTQUFTO0VBQUEsR0FBVEEsU0FBUyxLQUFUQSxTQUFTO0VBQUE7RUFBQSxJQUtUQyxrQkFBa0I7RUFBQSxXQUFsQkEsa0JBQWtCO0lBQWxCQSxrQkFBa0I7SUFBbEJBLGtCQUFrQjtJQUFsQkEsa0JBQWtCO0lBQWxCQSxrQkFBa0I7RUFBQSxHQUFsQkEsa0JBQWtCLEtBQWxCQSxrQkFBa0I7RUFBQTtFQUFBLElBaUJ6QkMsbUJBQW1CO0VBQUEsV0FBbkJBLG1CQUFtQjtJQUFuQkEsbUJBQW1CO0lBQW5CQSxtQkFBbUI7SUFBbkJBLG1CQUFtQjtFQUFBLEdBQW5CQSxtQkFBbUIsS0FBbkJBLG1CQUFtQjtFQUFBLElBV25CQyxvQkFBb0I7RUFBQSxXQUFwQkEsb0JBQW9CO0lBQXBCQSxvQkFBb0I7SUFBcEJBLG9CQUFvQjtJQUFwQkEsb0JBQW9CO0lBQXBCQSxvQkFBb0I7SUFBcEJBLG9CQUFvQjtJQUFwQkEsb0JBQW9CO0lBQXBCQSxvQkFBb0I7RUFBQSxHQUFwQkEsb0JBQW9CLEtBQXBCQSxvQkFBb0I7RUFvRHpC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