@sapui5/sap.fe.core 1.127.2 → 1.129.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 (393) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/ActionRuntime.js +3 -9
  4. package/src/sap/fe/core/ActionRuntime.ts +3 -7
  5. package/src/sap/fe/core/AppComponent.js +9 -19
  6. package/src/sap/fe/core/AppComponent.ts +2 -12
  7. package/src/sap/fe/core/AppStateHandler.js +3 -11
  8. package/src/sap/fe/core/AppStateHandler.ts +0 -7
  9. package/src/sap/fe/core/BaseController.js +4 -8
  10. package/src/sap/fe/core/BaseController.ts +0 -5
  11. package/src/sap/fe/core/CommonUtils.js +1 -9
  12. package/src/sap/fe/core/CommonUtils.ts +4 -8
  13. package/src/sap/fe/core/ExtensionAPI.js +10 -25
  14. package/src/sap/fe/core/ExtensionAPI.ts +4 -19
  15. package/src/sap/fe/core/InsightsFormattersExtension.js +5 -3
  16. package/src/sap/fe/core/PageController.js +7 -10
  17. package/src/sap/fe/core/PageController.ts +0 -3
  18. package/src/sap/fe/core/ResourceModel.js +3 -5
  19. package/src/sap/fe/core/ResourceModel.ts +0 -2
  20. package/src/sap/fe/core/ReuseComponent.js +8 -14
  21. package/src/sap/fe/core/ReuseComponent.ts +0 -6
  22. package/src/sap/fe/core/TemplateComponent.js +37 -9
  23. package/src/sap/fe/core/TemplateComponent.ts +3 -2
  24. package/src/sap/fe/core/TemplateModel.js +5 -5
  25. package/src/sap/fe/core/TemplateModel.ts +0 -1
  26. package/src/sap/fe/core/UIProvider.js +1 -1
  27. package/src/sap/fe/core/UIProvider.ts +44 -1
  28. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js +7 -12
  29. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.ts +0 -5
  30. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +61 -65
  31. package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +60 -63
  32. package/src/sap/fe/core/buildingBlocks/templating/AttributeModel.js +3 -3
  33. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockFormatter.js +1 -1
  34. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.js +21 -5
  35. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.ts +0 -4
  36. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.js +6 -18
  37. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.ts +3 -20
  38. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.js +5 -11
  39. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.ts +0 -6
  40. package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlock.js +3 -3
  41. package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlockFragment.js +11 -10
  42. package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlockFragment.ts +0 -1
  43. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.js +5 -7
  44. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.ts +0 -1
  45. package/src/sap/fe/core/controllerextensions/BusyLocker.js +1 -1
  46. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.js +3 -10
  47. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.ts +0 -7
  48. package/src/sap/fe/core/controllerextensions/ContextSharing.js +5 -8
  49. package/src/sap/fe/core/controllerextensions/ContextSharing.ts +0 -2
  50. package/src/sap/fe/core/controllerextensions/EditFlow.js +225 -155
  51. package/src/sap/fe/core/controllerextensions/EditFlow.ts +248 -164
  52. package/src/sap/fe/core/controllerextensions/Feedback.js +1 -3
  53. package/src/sap/fe/core/controllerextensions/Feedback.ts +0 -2
  54. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +4 -7
  55. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +0 -3
  56. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +8 -25
  57. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +2 -21
  58. package/src/sap/fe/core/controllerextensions/InternalRouting.js +22 -34
  59. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +25 -31
  60. package/src/sap/fe/core/controllerextensions/KPIManagement.js +8 -21
  61. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +4 -15
  62. package/src/sap/fe/core/controllerextensions/MessageHandler.js +68 -31
  63. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +78 -32
  64. package/src/sap/fe/core/controllerextensions/PageReady.js +4 -4
  65. package/src/sap/fe/core/controllerextensions/Paginator.js +4 -8
  66. package/src/sap/fe/core/controllerextensions/Paginator.ts +0 -4
  67. package/src/sap/fe/core/controllerextensions/Placeholder.js +4 -4
  68. package/src/sap/fe/core/controllerextensions/Recommendations.js +15 -24
  69. package/src/sap/fe/core/controllerextensions/Recommendations.ts +13 -20
  70. package/src/sap/fe/core/controllerextensions/Routing.js +4 -10
  71. package/src/sap/fe/core/controllerextensions/Routing.ts +0 -6
  72. package/src/sap/fe/core/controllerextensions/RoutingListener.js +1 -1
  73. package/src/sap/fe/core/controllerextensions/Share.js +17 -11
  74. package/src/sap/fe/core/controllerextensions/Share.ts +10 -5
  75. package/src/sap/fe/core/controllerextensions/SideEffects.js +49 -45
  76. package/src/sap/fe/core/controllerextensions/SideEffects.ts +54 -41
  77. package/src/sap/fe/core/controllerextensions/Telemetry.js +4 -4
  78. package/src/sap/fe/core/controllerextensions/ViewState.js +10 -34
  79. package/src/sap/fe/core/controllerextensions/ViewState.ts +3 -49
  80. package/src/sap/fe/core/controllerextensions/cards/CollaborationManager.js +6 -8
  81. package/src/sap/fe/core/controllerextensions/cards/CollaborationManager.ts +0 -1
  82. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +1 -2
  83. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +0 -1
  84. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +4 -3
  85. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +1 -1
  86. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js +16 -12
  87. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.tsx +4 -1
  88. package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js +1 -1
  89. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +126 -74
  90. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +158 -91
  91. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +1 -22
  92. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +0 -20
  93. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +10 -20
  94. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +11 -17
  95. package/src/sap/fe/core/controllerextensions/editFlow/editFlowConstants.js +1 -1
  96. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +191 -767
  97. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +277 -1024
  98. package/src/sap/fe/core/controllerextensions/editFlow/operations.js +1 -1
  99. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +1 -6
  100. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +0 -5
  101. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +381 -250
  102. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +467 -301
  103. package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.js +2 -6
  104. package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.ts +0 -5
  105. package/src/sap/fe/core/controllerextensions/recommendations/Telemetry.js +2 -6
  106. package/src/sap/fe/core/controllerextensions/recommendations/Telemetry.ts +4 -6
  107. package/src/sap/fe/core/controllerextensions/routing/ContextPathHelper.js +1 -6
  108. package/src/sap/fe/core/controllerextensions/routing/ContextPathHelper.ts +0 -4
  109. package/src/sap/fe/core/controllerextensions/routing/NavigationReason.js +1 -1
  110. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +4 -41
  111. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +1 -37
  112. package/src/sap/fe/core/controllerextensions/viewState/IViewStateContributor.js +1 -1
  113. package/src/sap/fe/core/controllerextensions/viewState/IViewStateContributor.ts +0 -1
  114. package/src/sap/fe/core/controls/Any.js +1 -2
  115. package/src/sap/fe/core/controls/Any.ts +0 -1
  116. package/src/sap/fe/core/controls/AnyElement.js +1 -2
  117. package/src/sap/fe/core/controls/AnyElement.ts +0 -1
  118. package/src/sap/fe/core/controls/CommandExecution.js +3 -3
  119. package/src/sap/fe/core/controls/ComponentLoader.js +23 -10
  120. package/src/sap/fe/core/controls/ComponentLoader.ts +0 -1
  121. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.js +10 -13
  122. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.tsx +0 -6
  123. package/src/sap/fe/core/controls/EventDelegateHook.js +8 -9
  124. package/src/sap/fe/core/controls/FormElementWrapper.js +7 -7
  125. package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +3 -1
  126. package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block.js +140 -24
  127. package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block.tsx +141 -10
  128. package/src/sap/fe/core/converters/ConverterContext.js +8 -30
  129. package/src/sap/fe/core/converters/ConverterContext.ts +7 -29
  130. package/src/sap/fe/core/converters/ManifestSettings.js +37 -1
  131. package/src/sap/fe/core/converters/ManifestSettings.ts +12 -3
  132. package/src/sap/fe/core/converters/ManifestWrapper.js +12 -40
  133. package/src/sap/fe/core/converters/ManifestWrapper.ts +13 -46
  134. package/src/sap/fe/core/converters/MetaModelConverter.js +44 -48
  135. package/src/sap/fe/core/converters/MetaModelConverter.ts +50 -48
  136. package/src/sap/fe/core/converters/TemplateConverter.js +3 -2
  137. package/src/sap/fe/core/converters/TemplateConverter.ts +0 -1
  138. package/src/sap/fe/core/converters/annotations/DataField.js +1 -28
  139. package/src/sap/fe/core/converters/annotations/DataField.ts +0 -26
  140. package/src/sap/fe/core/converters/common/AnnotationConverter.js +24 -19
  141. package/src/sap/fe/core/converters/controls/Common/Action.js +13 -26
  142. package/src/sap/fe/core/converters/controls/Common/Action.ts +13 -31
  143. package/src/sap/fe/core/converters/controls/Common/Chart.js +5 -6
  144. package/src/sap/fe/core/converters/controls/Common/Chart.ts +0 -5
  145. package/src/sap/fe/core/converters/controls/Common/Criticality.js +2 -4
  146. package/src/sap/fe/core/converters/controls/Common/Criticality.ts +1 -2
  147. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +1 -5
  148. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +0 -4
  149. package/src/sap/fe/core/converters/controls/Common/Form.js +3 -2
  150. package/src/sap/fe/core/converters/controls/Common/Form.ts +2 -1
  151. package/src/sap/fe/core/converters/controls/Common/KPI.js +11 -7
  152. package/src/sap/fe/core/converters/controls/Common/KPI.ts +11 -6
  153. package/src/sap/fe/core/converters/controls/Common/Table.js +159 -141
  154. package/src/sap/fe/core/converters/controls/Common/Table.ts +166 -122
  155. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +5 -30
  156. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +3 -29
  157. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +43 -55
  158. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +43 -47
  159. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +1 -4
  160. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +0 -3
  161. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +1 -1
  162. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +3 -8
  163. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +2 -7
  164. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +1 -11
  165. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +0 -9
  166. package/src/sap/fe/core/converters/helpers/Aggregation.js +1 -10
  167. package/src/sap/fe/core/converters/helpers/Aggregation.ts +0 -9
  168. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +1 -7
  169. package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +0 -6
  170. package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +1 -9
  171. package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +0 -8
  172. package/src/sap/fe/core/converters/helpers/ID.js +1 -2
  173. package/src/sap/fe/core/converters/helpers/ID.ts +0 -1
  174. package/src/sap/fe/core/converters/helpers/InsightsHelpers.js +1 -2
  175. package/src/sap/fe/core/converters/helpers/InsightsHelpers.ts +0 -1
  176. package/src/sap/fe/core/converters/helpers/IssueManager.js +1 -1
  177. package/src/sap/fe/core/converters/helpers/Key.js +1 -5
  178. package/src/sap/fe/core/converters/helpers/Key.ts +0 -4
  179. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -2
  180. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +0 -1
  181. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +1 -1
  182. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +1 -7
  183. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +0 -6
  184. package/src/sap/fe/core/converters/templates/ListReportConverter.js +6 -27
  185. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +9 -26
  186. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +1 -16
  187. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +0 -15
  188. package/src/sap/fe/core/definition/FEDefinition.js +2550 -0
  189. package/src/sap/fe/core/designtime/AppComponent.designtime.js +11 -12
  190. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +9 -10
  191. package/src/sap/fe/core/formatters/CollaborationFormatter.js +8 -2
  192. package/src/sap/fe/core/formatters/CollaborationFormatter.ts +0 -2
  193. package/src/sap/fe/core/formatters/CriticalityFormatter.js +1 -1
  194. package/src/sap/fe/core/formatters/FPMFormatter.js +1 -2
  195. package/src/sap/fe/core/formatters/FPMFormatter.ts +0 -1
  196. package/src/sap/fe/core/formatters/FiscalFormat.js +9 -14
  197. package/src/sap/fe/core/formatters/FiscalFormat.ts +0 -11
  198. package/src/sap/fe/core/formatters/KPIFormatter.js +1 -4
  199. package/src/sap/fe/core/formatters/KPIFormatter.ts +0 -3
  200. package/src/sap/fe/core/formatters/StandardFormatter.js +6 -3
  201. package/src/sap/fe/core/formatters/StandardFormatter.ts +6 -2
  202. package/src/sap/fe/core/formatters/ValueFormatter.js +1 -4
  203. package/src/sap/fe/core/formatters/ValueFormatter.ts +0 -3
  204. package/src/sap/fe/core/fpm/Component.js +14 -17
  205. package/src/sap/fe/core/fpm/Component.ts +7 -10
  206. package/src/sap/fe/core/fpm/manifest.json +1 -1
  207. package/src/sap/fe/core/helpers/AdaptiveCardExpressionCompiler.js +3 -10
  208. package/src/sap/fe/core/helpers/AdaptiveCardExpressionCompiler.ts +0 -9
  209. package/src/sap/fe/core/helpers/AppStartupHelper.js +1 -13
  210. package/src/sap/fe/core/helpers/AppStartupHelper.ts +0 -11
  211. package/src/sap/fe/core/helpers/BindingHelper.js +1 -4
  212. package/src/sap/fe/core/helpers/BindingHelper.ts +0 -3
  213. package/src/sap/fe/core/helpers/BindingToolkitEvaluator.js +1 -2
  214. package/src/sap/fe/core/helpers/BindingToolkitEvaluator.ts +0 -1
  215. package/src/sap/fe/core/helpers/DeleteHelper.js +61 -32
  216. package/src/sap/fe/core/helpers/DeleteHelper.ts +79 -33
  217. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +1 -2
  218. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +0 -1
  219. package/src/sap/fe/core/helpers/EditState.js +1 -1
  220. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +1 -2
  221. package/src/sap/fe/core/helpers/ExcelFormatHelper.ts +0 -1
  222. package/src/sap/fe/core/helpers/FPMHelper.js +1 -2
  223. package/src/sap/fe/core/helpers/FPMHelper.ts +0 -1
  224. package/src/sap/fe/core/helpers/KeepAliveHelper.js +1 -8
  225. package/src/sap/fe/core/helpers/KeepAliveHelper.ts +0 -7
  226. package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +7 -1
  227. package/src/sap/fe/core/helpers/LoaderUtils.js +1 -1
  228. package/src/sap/fe/core/helpers/ManifestHelper.js +1 -3
  229. package/src/sap/fe/core/helpers/ManifestHelper.ts +0 -2
  230. package/src/sap/fe/core/helpers/MessageStrip.js +1 -1
  231. package/src/sap/fe/core/helpers/MetaModelFunction.js +3 -8
  232. package/src/sap/fe/core/helpers/MetaModelFunction.ts +0 -5
  233. package/src/sap/fe/core/helpers/MetaPath.js +1 -7
  234. package/src/sap/fe/core/helpers/MetaPath.ts +0 -6
  235. package/src/sap/fe/core/helpers/ModelHelper.js +55 -35
  236. package/src/sap/fe/core/helpers/ModelHelper.ts +64 -38
  237. package/src/sap/fe/core/helpers/PasteHelper.js +77 -24
  238. package/src/sap/fe/core/helpers/PasteHelper.ts +105 -23
  239. package/src/sap/fe/core/helpers/PromiseKeeper.js +1 -3
  240. package/src/sap/fe/core/helpers/PromiseKeeper.ts +0 -2
  241. package/src/sap/fe/core/helpers/RecommendationHelper.js +1 -4
  242. package/src/sap/fe/core/helpers/RecommendationHelper.ts +0 -3
  243. package/src/sap/fe/core/helpers/ResourceModelHelper.js +1 -3
  244. package/src/sap/fe/core/helpers/ResourceModelHelper.ts +3 -4
  245. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -2
  246. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +0 -1
  247. package/src/sap/fe/core/helpers/SizeHelper.js +1 -2
  248. package/src/sap/fe/core/helpers/SizeHelper.ts +0 -1
  249. package/src/sap/fe/core/helpers/StableIdHelper.js +7 -17
  250. package/src/sap/fe/core/helpers/StableIdHelper.ts +7 -17
  251. package/src/sap/fe/core/helpers/StandardRecommendationHelper.js +1 -12
  252. package/src/sap/fe/core/helpers/StandardRecommendationHelper.ts +0 -11
  253. package/src/sap/fe/core/helpers/Synchronization.js +1 -1
  254. package/src/sap/fe/core/helpers/TitleHelper.js +1 -10
  255. package/src/sap/fe/core/helpers/TitleHelper.ts +0 -9
  256. package/src/sap/fe/core/helpers/ToES6Promise.js +1 -2
  257. package/src/sap/fe/core/helpers/ToES6Promise.ts +0 -1
  258. package/src/sap/fe/core/helpers/TypeGuards.js +1 -15
  259. package/src/sap/fe/core/helpers/TypeGuards.ts +0 -14
  260. package/src/sap/fe/core/helpers/WebSocket.js +1 -1
  261. package/src/sap/fe/core/library.js +10 -44
  262. package/src/sap/fe/core/library.support.js +1 -1
  263. package/src/sap/fe/core/library.ts +8 -45
  264. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -6
  265. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +0 -5
  266. package/src/sap/fe/core/messagebundle.properties +12 -1
  267. package/src/sap/fe/core/messagebundle_ar.properties +8 -0
  268. package/src/sap/fe/core/messagebundle_bg.properties +8 -0
  269. package/src/sap/fe/core/messagebundle_ca.properties +8 -0
  270. package/src/sap/fe/core/messagebundle_cnr.properties +8 -0
  271. package/src/sap/fe/core/messagebundle_cs.properties +9 -1
  272. package/src/sap/fe/core/messagebundle_cy.properties +8 -0
  273. package/src/sap/fe/core/messagebundle_da.properties +8 -0
  274. package/src/sap/fe/core/messagebundle_de.properties +8 -0
  275. package/src/sap/fe/core/messagebundle_el.properties +8 -0
  276. package/src/sap/fe/core/messagebundle_en.properties +8 -0
  277. package/src/sap/fe/core/messagebundle_en_GB.properties +8 -0
  278. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +144 -65
  279. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +8 -0
  280. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +273 -194
  281. package/src/sap/fe/core/messagebundle_es.properties +9 -1
  282. package/src/sap/fe/core/messagebundle_es_MX.properties +8 -0
  283. package/src/sap/fe/core/messagebundle_et.properties +8 -0
  284. package/src/sap/fe/core/messagebundle_fi.properties +8 -0
  285. package/src/sap/fe/core/messagebundle_fr.properties +8 -0
  286. package/src/sap/fe/core/messagebundle_fr_CA.properties +8 -0
  287. package/src/sap/fe/core/messagebundle_hi.properties +9 -1
  288. package/src/sap/fe/core/messagebundle_hr.properties +8 -0
  289. package/src/sap/fe/core/messagebundle_hu.properties +8 -0
  290. package/src/sap/fe/core/messagebundle_id.properties +12 -4
  291. package/src/sap/fe/core/messagebundle_it.properties +8 -0
  292. package/src/sap/fe/core/messagebundle_iw.properties +8 -0
  293. package/src/sap/fe/core/messagebundle_ja.properties +8 -0
  294. package/src/sap/fe/core/messagebundle_kk.properties +8 -0
  295. package/src/sap/fe/core/messagebundle_ko.properties +8 -0
  296. package/src/sap/fe/core/messagebundle_lt.properties +8 -0
  297. package/src/sap/fe/core/messagebundle_lv.properties +8 -0
  298. package/src/sap/fe/core/messagebundle_mk.properties +8 -0
  299. package/src/sap/fe/core/messagebundle_ms.properties +8 -0
  300. package/src/sap/fe/core/messagebundle_nl.properties +16 -8
  301. package/src/sap/fe/core/messagebundle_no.properties +8 -0
  302. package/src/sap/fe/core/messagebundle_pl.properties +8 -0
  303. package/src/sap/fe/core/messagebundle_pt.properties +8 -0
  304. package/src/sap/fe/core/messagebundle_pt_PT.properties +8 -0
  305. package/src/sap/fe/core/messagebundle_ro.properties +8 -0
  306. package/src/sap/fe/core/messagebundle_ru.properties +8 -0
  307. package/src/sap/fe/core/messagebundle_sh.properties +8 -0
  308. package/src/sap/fe/core/messagebundle_sk.properties +8 -0
  309. package/src/sap/fe/core/messagebundle_sl.properties +8 -0
  310. package/src/sap/fe/core/messagebundle_sr.properties +8 -0
  311. package/src/sap/fe/core/messagebundle_sv.properties +8 -0
  312. package/src/sap/fe/core/messagebundle_th.properties +12 -4
  313. package/src/sap/fe/core/messagebundle_tr.properties +8 -0
  314. package/src/sap/fe/core/messagebundle_uk.properties +10 -2
  315. package/src/sap/fe/core/messagebundle_vi.properties +8 -0
  316. package/src/sap/fe/core/messagebundle_zh_CN.properties +8 -0
  317. package/src/sap/fe/core/messagebundle_zh_TW.properties +8 -0
  318. package/src/sap/fe/core/operationsHelper.js +22 -7
  319. package/src/sap/fe/core/operationsHelper.ts +24 -5
  320. package/src/sap/fe/core/rootView/Fcl.controller.js +7 -27
  321. package/src/sap/fe/core/rootView/Fcl.controller.ts +0 -18
  322. package/src/sap/fe/core/rootView/NavContainer.controller.js +7 -12
  323. package/src/sap/fe/core/rootView/NavContainer.controller.ts +0 -5
  324. package/src/sap/fe/core/rootView/RootViewBaseController.js +10 -24
  325. package/src/sap/fe/core/rootView/RootViewBaseController.ts +3 -16
  326. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +3 -3
  327. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +3 -3
  328. package/src/sap/fe/core/services/CollaborationManagerServiceFactory.js +4 -4
  329. package/src/sap/fe/core/services/CollaborativeToolsServiceFactory.js +3 -3
  330. package/src/sap/fe/core/services/ContextSharingServiceFactory.js +3 -4
  331. package/src/sap/fe/core/services/ContextSharingServiceFactory.ts +0 -1
  332. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +13 -20
  333. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +11 -17
  334. package/src/sap/fe/core/services/NavigationServiceFactory.js +11 -21
  335. package/src/sap/fe/core/services/NavigationServiceFactory.ts +4 -17
  336. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +3 -3
  337. package/src/sap/fe/core/services/RoutingServiceFactory.js +7 -19
  338. package/src/sap/fe/core/services/RoutingServiceFactory.ts +0 -12
  339. package/src/sap/fe/core/services/ShellServicesFactory.js +8 -44
  340. package/src/sap/fe/core/services/ShellServicesFactory.ts +1 -41
  341. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +19 -60
  342. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +14 -57
  343. package/src/sap/fe/core/services/TelemetryServiceFactory.js +6 -14
  344. package/src/sap/fe/core/services/TelemetryServiceFactory.ts +2 -10
  345. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +17 -7
  346. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +17 -3
  347. package/src/sap/fe/core/services/ValueHelpHistoryServiceFactory.js +11 -24
  348. package/src/sap/fe/core/services/ValueHelpHistoryServiceFactory.ts +0 -19
  349. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.js +3 -31
  350. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.ts +0 -27
  351. package/src/sap/fe/core/services/valueHelpService/HistoryOptOutProvider.js +1 -4
  352. package/src/sap/fe/core/services/valueHelpService/HistoryOptOutProvider.ts +0 -3
  353. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +7 -7
  354. package/src/sap/fe/core/support/AnnotationIssue.support.js +1 -1
  355. package/src/sap/fe/core/support/CollectionFacetMissingID.support.js +1 -1
  356. package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +1 -1
  357. package/src/sap/fe/core/support/CommonHelper.js +4 -1
  358. package/src/sap/fe/core/support/Diagnostics.js +1 -1
  359. package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +1 -1
  360. package/src/sap/fe/core/templating/ActionHelper.js +1 -2
  361. package/src/sap/fe/core/templating/ActionHelper.ts +0 -1
  362. package/src/sap/fe/core/templating/CommonFormatters.js +1 -2
  363. package/src/sap/fe/core/templating/CommonFormatters.ts +0 -1
  364. package/src/sap/fe/core/templating/CriticalityFormatters.js +1 -6
  365. package/src/sap/fe/core/templating/CriticalityFormatters.ts +0 -5
  366. package/src/sap/fe/core/templating/DataFieldFormatters.js +1 -2
  367. package/src/sap/fe/core/templating/DataFieldFormatters.ts +0 -1
  368. package/src/sap/fe/core/templating/DataModelPathHelper.js +1 -18
  369. package/src/sap/fe/core/templating/DataModelPathHelper.ts +0 -17
  370. package/src/sap/fe/core/templating/DisplayModeFormatter.js +6 -1
  371. package/src/sap/fe/core/templating/EntitySetHelper.js +1 -4
  372. package/src/sap/fe/core/templating/EntitySetHelper.ts +0 -3
  373. package/src/sap/fe/core/templating/EntityTypeHelper.js +4 -5
  374. package/src/sap/fe/core/templating/EntityTypeHelper.ts +3 -4
  375. package/src/sap/fe/core/templating/FieldControlHelper.js +4 -9
  376. package/src/sap/fe/core/templating/FieldControlHelper.ts +3 -9
  377. package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
  378. package/src/sap/fe/core/templating/PropertyFormatters.js +1 -1
  379. package/src/sap/fe/core/templating/PropertyHelper.js +1 -31
  380. package/src/sap/fe/core/templating/PropertyHelper.ts +0 -30
  381. package/src/sap/fe/core/templating/SemanticObjectHelper.js +1 -7
  382. package/src/sap/fe/core/templating/SemanticObjectHelper.ts +0 -6
  383. package/src/sap/fe/core/templating/UIFormatters.js +18 -14
  384. package/src/sap/fe/core/templating/UIFormatters.ts +30 -18
  385. package/src/sap/fe/core/type/Date.js +3 -6
  386. package/src/sap/fe/core/type/Date.ts +0 -3
  387. package/src/sap/fe/core/type/DateTimeWithTimezone.js +3 -3
  388. package/src/sap/fe/core/type/EDM.js +1 -1
  389. package/src/sap/fe/core/type/Email.js +3 -3
  390. package/src/sap/fe/core/type/FiscalDate.js +3 -9
  391. package/src/sap/fe/core/type/FiscalDate.ts +0 -6
  392. package/src/sap/fe/core/type/InputMask.js +3 -7
  393. package/src/sap/fe/core/type/InputMask.ts +0 -4
@@ -70,7 +70,6 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/core/converters/annotations
70
70
 
71
71
  /**
72
72
  * Retrieve header facets from annotations.
73
- *
74
73
  * @param converterContext
75
74
  * @returns Header facets from annotations
76
75
  */
@@ -88,7 +87,6 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/core/converters/annotations
88
87
 
89
88
  /**
90
89
  * Retrieve custom header facets from manifest.
91
- *
92
90
  * @param manifestCustomHeaderFacets
93
91
  * @returns HeaderFacets from manifest
94
92
  */
@@ -104,7 +102,6 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/core/converters/annotations
104
102
 
105
103
  /**
106
104
  * Retrieve stashed settings for header facets from manifest.
107
- *
108
105
  * @param facetDefinition
109
106
  * @param collectionFacetDefinition
110
107
  * @param converterContext
@@ -125,7 +122,6 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/core/converters/annotations
125
122
 
126
123
  /**
127
124
  * Retrieve flexibility designtime settings from manifest.
128
- *
129
125
  * @param facetDefinition
130
126
  * @param collectionFacetDefinition
131
127
  * @param converterContext
@@ -273,7 +269,6 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/core/converters/annotations
273
269
 
274
270
  /**
275
271
  * Creates an array of manifest-based FormElements.
276
- *
277
272
  * @param facetDefinition The definition of the facet
278
273
  * @param converterContext The converter context for the facet
279
274
  * @returns Annotation-based FormElements
@@ -284,6 +279,8 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/core/converters/annotations
284
279
  // ReferenceURLFacet and CollectionFacet do not have Target property.
285
280
  if (facetDefinition.$Type !== "com.sap.vocabularies.UI.v1.ReferenceURLFacet" && facetDefinition.$Type !== "com.sap.vocabularies.UI.v1.CollectionFacet") {
286
281
  var _facetDefinition$Targ3, _facetDefinition$Targ4;
282
+ const resolvedTarget = converterContext.getEntityTypeAnnotation(facetDefinition.Target.value);
283
+ converterContext = resolvedTarget.converterContext;
287
284
  (_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.Data.forEach(dataField => {
288
285
  var _dataField$annotation, _dataField$annotation2, _dataField$annotation3;
289
286
  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) {
@@ -349,7 +346,6 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/core/converters/annotations
349
346
 
350
347
  /**
351
348
  * Creates an annotation-based header facet.
352
- *
353
349
  * @param facetDefinition The definition of the facet
354
350
  * @param converterContext The converter context
355
351
  * @returns The created annotation-based header facet
@@ -383,7 +379,6 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/core/converters/annotations
383
379
 
384
380
  /**
385
381
  * Create a manifest based custom header facet.
386
- *
387
382
  * @param customHeaderFacetDefinition
388
383
  * @param headerFacetKey
389
384
  * @returns The manifest based custom header facet created
@@ -421,4 +416,4 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/core/converters/annotations
421
416
  }
422
417
  return _exports;
423
418
  }, false);
424
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJIZWFkZXJGYWNldFR5cGUiLCJGYWNldFR5cGUiLCJGbGV4RGVzaWduVGltZVR5cGUiLCJIZWFkZXJEYXRhUG9pbnRUeXBlIiwiVGFyZ2V0QW5ub3RhdGlvblR5cGUiLCJnZXRIZWFkZXJGYWNldHNGcm9tQW5ub3RhdGlvbnMiLCJjb252ZXJ0ZXJDb250ZXh0IiwiaGVhZGVyRmFjZXRzIiwiZ2V0RW50aXR5VHlwZSIsImFubm90YXRpb25zIiwiVUkiLCJIZWFkZXJGYWNldHMiLCJmb3JFYWNoIiwiZmFjZXQiLCJoZWFkZXJGYWNldCIsImNyZWF0ZUhlYWRlckZhY2V0IiwicHVzaCIsImdldEhlYWRlckZhY2V0c0Zyb21NYW5pZmVzdCIsIm1hbmlmZXN0Q3VzdG9tSGVhZGVyRmFjZXRzIiwiY3VzdG9tSGVhZGVyRmFjZXRzIiwiT2JqZWN0Iiwia2V5cyIsIm1hbmlmZXN0SGVhZGVyRmFjZXRLZXkiLCJjdXN0b21IZWFkZXJGYWNldCIsImNyZWF0ZUN1c3RvbUhlYWRlckZhY2V0IiwiZ2V0U3Rhc2hlZFNldHRpbmdzRm9ySGVhZGVyRmFjZXQiLCJmYWNldERlZmluaXRpb24iLCJjb2xsZWN0aW9uRmFjZXREZWZpbml0aW9uIiwiJFR5cGUiLCJoZWFkZXJGYWNldElEIiwiY3JlYXRlSWRGb3JBbm5vdGF0aW9uIiwiaGVhZGVyRmFjZXRzQ29udHJvbENvbmZpZyIsImdldE1hbmlmZXN0V3JhcHBlciIsImdldEhlYWRlckZhY2V0cyIsInN0YXNoZWRTZXR0aW5nIiwic3Rhc2hlZCIsImdldERlc2lnblRpbWVNZXRhZGF0YVNldHRpbmdzRm9ySGVhZGVyRmFjZXQiLCJkZXNpZ25UaW1lTWV0YWRhdGEiLCJEZWZhdWx0IiwiTm90QWRhcHRhYmxlVHJlZSIsImRlc2lnblRpbWUiLCJmbGV4U2V0dGluZ3MiLCJkZXNpZ250aW1lIiwiTm90QWRhcHRhYmxlIiwiTm90QWRhcHRhYmxlVmlzaWJpbGl0eSIsImNyZWF0ZVJlZmVyZW5jZUhlYWRlckZhY2V0IiwiSGlkZGVuIiwidmFsdWVPZiIsImdldEhlYWRlckZhY2V0SUQiLCJnZXRIZWFkZXJGYWNldEtleSIsImZhY2V0RGVmaW5pdGlvblRvQ2hlY2siLCJmYWxsYmFjayIsIklEIiwidG9TdHJpbmciLCJMYWJlbCIsInRhcmdldEFubm90YXRpb25WYWx1ZSIsIlRhcmdldCIsInZhbHVlIiwidGFyZ2V0QW5ub3RhdGlvblR5cGUiLCJnZXRUYXJnZXRBbm5vdGF0aW9uVHlwZSIsImhlYWRlckZvcm1EYXRhIiwiaGVhZGVyRGF0YVBvaW50RGF0YSIsIkZpZWxkR3JvdXAiLCJnZXRGaWVsZEdyb3VwRm9ybURhdGEiLCJEYXRhUG9pbnQiLCJnZXREYXRhUG9pbnREYXRhIiwiJHRhcmdldCIsInRlcm0iLCJpc0Fubm90YXRpb25GaWVsZFN0YXRpY2FsbHlIaWRkZW4iLCJ1bmRlZmluZWQiLCJ0eXBlIiwiQW5ub3RhdGlvbiIsImZhY2V0VHlwZSIsIlJlZmVyZW5jZSIsImlkIiwiY29udGFpbmVySWQiLCJnZXRIZWFkZXJGYWNldENvbnRhaW5lcklEIiwia2V5IiwidmlzaWJsZSIsImNvbXBpbGVFeHByZXNzaW9uIiwiaXNWaXNpYmxlIiwiYW5ub3RhdGlvblBhdGgiLCJnZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwiY3JlYXRlQ29sbGVjdGlvbkhlYWRlckZhY2V0IiwiZmFjZXRzIiwiRmFjZXRzIiwiQ29sbGVjdGlvbiIsImFubm90YXRpb25UeXBlIiwiTm9uZSIsImFubm90YXRpb25UeXBlTWFwIiwiQ2hhcnQiLCJJZGVudGlmaWNhdGlvbiIsIkNvbnRhY3QiLCJBZGRyZXNzIiwiRXJyb3IiLCJmb3JtRWxlbWVudHMiLCJpbnNlcnRDdXN0b21FbGVtZW50cyIsImdldEZvcm1FbGVtZW50c0Zyb21Bbm5vdGF0aW9ucyIsImdldEZvcm1FbGVtZW50c0Zyb21NYW5pZmVzdCIsImdldEhlYWRlckZhY2V0Rm9ybUlEIiwibGFiZWwiLCJhbm5vdGF0aW9uQmFzZWRGb3JtRWxlbWVudHMiLCJEYXRhIiwiZGF0YUZpZWxkIiwic2VtYW50aWNPYmplY3RBbm5vdGF0aW9uUGF0aCIsImdldFNlbWFudGljT2JqZWN0UGF0aCIsImlzUmVmZXJlbmNlUHJvcGVydHlTdGF0aWNhbGx5SGlkZGVuIiwiaXNWYWx1ZU11bHRpbGluZVRleHQiLCJpc011bHRpTGluZVRleHQiLCJWYWx1ZSIsIkZvcm1FbGVtZW50VHlwZSIsIktleUhlbHBlciIsImdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZCIsIkNvbW1vbiIsImlkUHJlZml4Iiwic2VtYW50aWNPYmplY3RQYXRoIiwiQ29udGVudCIsIlZpc3VhbGl6YXRpb24iLCJQcm9ncmVzc0luZGljYXRvciIsIlJhdGluZ0luZGljYXRvciIsImRhdGFQb2ludCIsInByb3BlcnR5IiwiU2VtYW50aWNPYmplY3QiLCJnZW5lcmF0ZUJpbmRpbmciLCJyZXF1ZXN0R3JvdXBJZCIsImdyb3VwSWQiLCJpbmNsdWRlcyIsImN1c3RvbUhlYWRlckZhY2V0RGVmaW5pdGlvbiIsImhlYWRlckZhY2V0S2V5IiwiY3VzdG9tSGVhZGVyRmFjZXRJRCIsImdldEN1c3RvbUhlYWRlckZhY2V0SUQiLCJwb3NpdGlvbiIsInBsYWNlbWVudCIsIlBsYWNlbWVudCIsIkFmdGVyIiwiZnJhZ21lbnROYW1lIiwidGVtcGxhdGUiLCJuYW1lIiwidGl0bGUiLCJzdWJUaXRsZSIsImJpbmRpbmciLCJ0ZW1wbGF0ZUVkaXQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkhlYWRlckZhY2V0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcblx0RGF0YUZpZWxkQWJzdHJhY3RUeXBlcyxcblx0RGF0YVBvaW50LFxuXHRGYWNldFR5cGVzLFxuXHRGaWVsZEdyb3VwLFxuXHRSZWZlcmVuY2VGYWNldFR5cGVzXG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IFVJQW5ub3RhdGlvblRlcm1zLCBVSUFubm90YXRpb25UeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IGNvbXBpbGVFeHByZXNzaW9uLCB0eXBlIENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgdHlwZSB7IE1hbmlmZXN0SGVhZGVyRmFjZXQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgdHlwZSB7IFBhZ2VDb250ZXh0UGF0aFRhcmdldCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL1RlbXBsYXRlQ29udmVydGVyXCI7XG5pbXBvcnQgeyBnZXRTZW1hbnRpY09iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9hbm5vdGF0aW9ucy9EYXRhRmllbGRcIjtcbmltcG9ydCB0eXBlIHsgQ29uZmlndXJhYmxlT2JqZWN0LCBDb25maWd1cmFibGVSZWNvcmQsIEN1c3RvbUVsZW1lbnQsIFBvc2l0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9Db25maWd1cmFibGVPYmplY3RcIjtcbmltcG9ydCB7IFBsYWNlbWVudCwgaW5zZXJ0Q3VzdG9tRWxlbWVudHMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0NvbmZpZ3VyYWJsZU9iamVjdFwiO1xuaW1wb3J0IHtcblx0Z2V0Q3VzdG9tSGVhZGVyRmFjZXRJRCxcblx0Z2V0SGVhZGVyRmFjZXRDb250YWluZXJJRCxcblx0Z2V0SGVhZGVyRmFjZXRGb3JtSUQsXG5cdGdldEhlYWRlckZhY2V0SURcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9JRFwiO1xuaW1wb3J0IHsgS2V5SGVscGVyIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9LZXlcIjtcbmltcG9ydCB7IGlzTXVsdGlMaW5lVGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1Byb3BlcnR5SGVscGVyXCI7XG5pbXBvcnQgeyBpc1Zpc2libGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCB7IGNyZWF0ZUlkRm9yQW5ub3RhdGlvbiB9IGZyb20gXCIuLi8uLi8uLi9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5pbXBvcnQgdHlwZSBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCIuLi8uLi9Db252ZXJ0ZXJDb250ZXh0XCI7XG5pbXBvcnQgeyBpc0Fubm90YXRpb25GaWVsZFN0YXRpY2FsbHlIaWRkZW4sIGlzUmVmZXJlbmNlUHJvcGVydHlTdGF0aWNhbGx5SGlkZGVuIH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMvRGF0YUZpZWxkSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IEFubm90YXRpb25Gb3JtRWxlbWVudCwgRm9ybUVsZW1lbnQgfSBmcm9tIFwiLi4vQ29tbW9uL0Zvcm1cIjtcbmltcG9ydCB7IEZvcm1FbGVtZW50VHlwZSwgZ2V0Rm9ybUVsZW1lbnRzRnJvbU1hbmlmZXN0IH0gZnJvbSBcIi4uL0NvbW1vbi9Gb3JtXCI7XG5cbi8vIHJlZ2lvbiBkZWZpbml0aW9uc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEZWZpbml0aW9uczogSGVhZGVyIEZhY2V0IFR5cGVzLCBHZW5lcmljIE9QIEhlYWRlciBGYWNldCwgTWFuaWZlc3QgUHJvcGVydGllcyBmb3IgQ3VzdG9tIEhlYWRlciBGYWNldFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbmV4cG9ydCBlbnVtIEhlYWRlckZhY2V0VHlwZSB7XG5cdEFubm90YXRpb24gPSBcIkFubm90YXRpb25cIixcblx0WE1MRnJhZ21lbnQgPSBcIlhNTEZyYWdtZW50XCJcbn1cblxuZXhwb3J0IGVudW0gRmFjZXRUeXBlIHtcblx0UmVmZXJlbmNlID0gXCJSZWZlcmVuY2VcIixcblx0Q29sbGVjdGlvbiA9IFwiQ29sbGVjdGlvblwiXG59XG5cbmV4cG9ydCBlbnVtIEZsZXhEZXNpZ25UaW1lVHlwZSB7XG5cdERlZmF1bHQgPSBcIkRlZmF1bHRcIixcblx0Tm90QWRhcHRhYmxlID0gXCJub3QtYWRhcHRhYmxlXCIsIC8vIGRpc2FibGUgYWxsIGFjdGlvbnMgb24gdGhhdCBpbnN0YW5jZVxuXHROb3RBZGFwdGFibGVUcmVlID0gXCJub3QtYWRhcHRhYmxlLXRyZWVcIiwgLy8gZGlzYWJsZSBhbGwgYWN0aW9ucyBvbiB0aGF0IGluc3RhbmNlIGFuZCBvbiBhbGwgY2hpbGRyZW4gb2YgdGhhdCBpbnN0YW5jZVxuXHROb3RBZGFwdGFibGVWaXNpYmlsaXR5ID0gXCJub3QtYWRhcHRhYmxlLXZpc2liaWxpdHlcIiAvLyBkaXNhYmxlIGFsbCBhY3Rpb25zIHRoYXQgaW5mbHVlbmNlIHRoZSB2aXNpYmlsaXR5LCBuYW1lbHkgcmV2ZWFsIGFuZCByZW1vdmVcbn1cblxuZXhwb3J0IHR5cGUgRmxleFNldHRpbmdzID0ge1xuXHRkZXNpZ250aW1lPzogRmxleERlc2lnblRpbWVUeXBlO1xufTtcblxudHlwZSBIZWFkZXJGb3JtRGF0YSA9IHtcblx0aWQ6IHN0cmluZztcblx0bGFiZWw/OiBzdHJpbmc7XG5cdGZvcm1FbGVtZW50czogRm9ybUVsZW1lbnRbXTtcbn07XG5cbmVudW0gSGVhZGVyRGF0YVBvaW50VHlwZSB7XG5cdFByb2dyZXNzSW5kaWNhdG9yID0gXCJQcm9ncmVzc0luZGljYXRvclwiLFxuXHRSYXRpbmdJbmRpY2F0b3IgPSBcIlJhdGluZ0luZGljYXRvclwiLFxuXHRDb250ZW50ID0gXCJDb250ZW50XCJcbn1cblxudHlwZSBIZWFkZXJEYXRhUG9pbnREYXRhID0ge1xuXHR0eXBlOiBIZWFkZXJEYXRhUG9pbnRUeXBlO1xuXHRzZW1hbnRpY09iamVjdFBhdGg/OiBzdHJpbmc7XG59O1xuXG5lbnVtIFRhcmdldEFubm90YXRpb25UeXBlIHtcblx0Tm9uZSA9IFwiTm9uZVwiLFxuXHREYXRhUG9pbnQgPSBcIkRhdGFQb2ludFwiLFxuXHRDaGFydCA9IFwiQ2hhcnRcIixcblx0SWRlbnRpZmljYXRpb24gPSBcIklkZW50aWZpY2F0aW9uXCIsXG5cdENvbnRhY3QgPSBcIkNvbnRhY3RcIixcblx0QWRkcmVzcyA9IFwiQWRkcmVzc1wiLFxuXHRGaWVsZEdyb3VwID0gXCJGaWVsZEdyb3VwXCJcbn1cblxudHlwZSBCYXNlSGVhZGVyRmFjZXQgPSBDb25maWd1cmFibGVPYmplY3QgJiB7XG5cdHR5cGU/OiBIZWFkZXJGYWNldFR5cGU7IC8vIE1hbmlmZXN0IG9yIE1ldGFkYXRhXG5cdGlkOiBzdHJpbmc7XG5cdGNvbnRhaW5lcklkOiBzdHJpbmc7XG5cdGFubm90YXRpb25QYXRoPzogc3RyaW5nO1xuXHRmbGV4U2V0dGluZ3M6IEZsZXhTZXR0aW5ncztcblx0c3Rhc2hlZDogYm9vbGVhbjtcblx0dmlzaWJsZTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdHRhcmdldEFubm90YXRpb25WYWx1ZT86IHN0cmluZztcblx0dGFyZ2V0QW5ub3RhdGlvblR5cGU/OiBUYXJnZXRBbm5vdGF0aW9uVHlwZTtcbn07XG5cbnR5cGUgQmFzZVJlZmVyZW5jZUZhY2V0ID0gQmFzZUhlYWRlckZhY2V0ICYge1xuXHRmYWNldFR5cGU6IEZhY2V0VHlwZS5SZWZlcmVuY2U7XG59O1xuXG5leHBvcnQgdHlwZSBGaWVsZEdyb3VwRmFjZXQgPSBCYXNlUmVmZXJlbmNlRmFjZXQgJiB7XG5cdGhlYWRlckZvcm1EYXRhOiBIZWFkZXJGb3JtRGF0YTtcbn07XG5cbmV4cG9ydCB0eXBlIERhdGFQb2ludEZhY2V0ID0gQmFzZVJlZmVyZW5jZUZhY2V0ICYge1xuXHRoZWFkZXJEYXRhUG9pbnREYXRhPzogSGVhZGVyRGF0YVBvaW50RGF0YTtcbn07XG5cbnR5cGUgUmVmZXJlbmNlRmFjZXQgPSBGaWVsZEdyb3VwRmFjZXQgfCBEYXRhUG9pbnRGYWNldDtcblxuZXhwb3J0IHR5cGUgQ29sbGVjdGlvbkZhY2V0ID0gQmFzZUhlYWRlckZhY2V0ICYge1xuXHRmYWNldFR5cGU6IEZhY2V0VHlwZS5Db2xsZWN0aW9uO1xuXHRmYWNldHM6IFJlZmVyZW5jZUZhY2V0W107XG59O1xuXG5leHBvcnQgdHlwZSBPYmplY3RQYWdlSGVhZGVyRmFjZXQgPSBSZWZlcmVuY2VGYWNldCB8IENvbGxlY3Rpb25GYWNldDtcblxuZXhwb3J0IHR5cGUgQ3VzdG9tT2JqZWN0UGFnZUhlYWRlckZhY2V0ID0gQ3VzdG9tRWxlbWVudDxPYmplY3RQYWdlSGVhZGVyRmFjZXQ+ICYge1xuXHRmcmFnbWVudE5hbWU/OiBzdHJpbmc7XG5cdHRpdGxlPzogc3RyaW5nO1xuXHRzdWJUaXRsZT86IHN0cmluZztcblx0c3Rhc2hlZD86IGJvb2xlYW47XG5cdGJpbmRpbmc/OiBzdHJpbmc7XG5cdHRlbXBsYXRlRWRpdD86IHN0cmluZztcbn07XG5cbi8vIGVuZHJlZ2lvbiBkZWZpbml0aW9uc1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbGxlY3QgQWxsIEhlYWRlciBGYWNldHM6IEN1c3RvbSAodmlhIE1hbmlmZXN0KSBhbmQgQW5ub3RhdGlvbiBCYXNlZCAodmlhIE1ldGFtb2RlbClcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vKipcbiAqIFJldHJpZXZlIGhlYWRlciBmYWNldHMgZnJvbSBhbm5vdGF0aW9ucy5cbiAqXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dFxuICogQHJldHVybnMgSGVhZGVyIGZhY2V0cyBmcm9tIGFubm90YXRpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRIZWFkZXJGYWNldHNGcm9tQW5ub3RhdGlvbnMoY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+KTogT2JqZWN0UGFnZUhlYWRlckZhY2V0W10ge1xuXHRjb25zdCBoZWFkZXJGYWNldHM6IE9iamVjdFBhZ2VIZWFkZXJGYWNldFtdID0gW107XG5cdGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpLmFubm90YXRpb25zPy5VST8uSGVhZGVyRmFjZXRzPy5mb3JFYWNoKChmYWNldCkgPT4ge1xuXHRcdGNvbnN0IGhlYWRlckZhY2V0OiBPYmplY3RQYWdlSGVhZGVyRmFjZXQgfCB1bmRlZmluZWQgPSBjcmVhdGVIZWFkZXJGYWNldChmYWNldCwgY29udmVydGVyQ29udGV4dCk7XG5cdFx0aWYgKGhlYWRlckZhY2V0KSB7XG5cdFx0XHRoZWFkZXJGYWNldHMucHVzaChoZWFkZXJGYWNldCk7XG5cdFx0fVxuXHR9KTtcblxuXHRyZXR1cm4gaGVhZGVyRmFjZXRzO1xufVxuXG4vKipcbiAqIFJldHJpZXZlIGN1c3RvbSBoZWFkZXIgZmFjZXRzIGZyb20gbWFuaWZlc3QuXG4gKlxuICogQHBhcmFtIG1hbmlmZXN0Q3VzdG9tSGVhZGVyRmFjZXRzXG4gKiBAcmV0dXJucyBIZWFkZXJGYWNldHMgZnJvbSBtYW5pZmVzdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SGVhZGVyRmFjZXRzRnJvbU1hbmlmZXN0KFxuXHRtYW5pZmVzdEN1c3RvbUhlYWRlckZhY2V0czogQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0SGVhZGVyRmFjZXQ+XG4pOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21PYmplY3RQYWdlSGVhZGVyRmFjZXQ+IHtcblx0Y29uc3QgY3VzdG9tSGVhZGVyRmFjZXRzOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21PYmplY3RQYWdlSGVhZGVyRmFjZXQ+ID0ge307XG5cblx0T2JqZWN0LmtleXMobWFuaWZlc3RDdXN0b21IZWFkZXJGYWNldHMpLmZvckVhY2goKG1hbmlmZXN0SGVhZGVyRmFjZXRLZXkpID0+IHtcblx0XHRjb25zdCBjdXN0b21IZWFkZXJGYWNldDogTWFuaWZlc3RIZWFkZXJGYWNldCA9IG1hbmlmZXN0Q3VzdG9tSGVhZGVyRmFjZXRzW21hbmlmZXN0SGVhZGVyRmFjZXRLZXldO1xuXHRcdGN1c3RvbUhlYWRlckZhY2V0c1ttYW5pZmVzdEhlYWRlckZhY2V0S2V5XSA9IGNyZWF0ZUN1c3RvbUhlYWRlckZhY2V0KGN1c3RvbUhlYWRlckZhY2V0LCBtYW5pZmVzdEhlYWRlckZhY2V0S2V5KTtcblx0fSk7XG5cblx0cmV0dXJuIGN1c3RvbUhlYWRlckZhY2V0cztcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZSBzdGFzaGVkIHNldHRpbmdzIGZvciBoZWFkZXIgZmFjZXRzIGZyb20gbWFuaWZlc3QuXG4gKlxuICogQHBhcmFtIGZhY2V0RGVmaW5pdGlvblxuICogQHBhcmFtIGNvbGxlY3Rpb25GYWNldERlZmluaXRpb25cbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcmV0dXJucyBTdGFzaGVkIHNldHRpbmcgZm9yIGhlYWRlciBmYWNldCBvciBmYWxzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3Rhc2hlZFNldHRpbmdzRm9ySGVhZGVyRmFjZXQoXG5cdGZhY2V0RGVmaW5pdGlvbjogRmFjZXRUeXBlcyxcblx0Y29sbGVjdGlvbkZhY2V0RGVmaW5pdGlvbjogRmFjZXRUeXBlcyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+XG4pOiBib29sZWFuIHtcblx0Ly8gV2hlbiBhIEhlYWRlckZhY2V0IGlzIG5lc3RlZCBpbnNpZGUgYSBDb2xsZWN0aW9uRmFjZXQsIHN0YXNoaW5nIGlzIG5vdCBzdXBwb3J0ZWRcblx0aWYgKFxuXHRcdGZhY2V0RGVmaW5pdGlvbi4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuUmVmZXJlbmNlRmFjZXQgJiZcblx0XHRjb2xsZWN0aW9uRmFjZXREZWZpbml0aW9uLiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5Db2xsZWN0aW9uRmFjZXRcblx0KSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cdGNvbnN0IGhlYWRlckZhY2V0SUQgPSBjcmVhdGVJZEZvckFubm90YXRpb24oZmFjZXREZWZpbml0aW9uKSA/PyBcIlwiO1xuXHRjb25zdCBoZWFkZXJGYWNldHNDb250cm9sQ29uZmlnID0gY29udmVydGVyQ29udGV4dC5nZXRNYW5pZmVzdFdyYXBwZXIoKS5nZXRIZWFkZXJGYWNldHMoKTtcblx0Y29uc3Qgc3Rhc2hlZFNldHRpbmcgPSBoZWFkZXJGYWNldHNDb250cm9sQ29uZmlnW2hlYWRlckZhY2V0SURdPy5zdGFzaGVkO1xuXHRyZXR1cm4gc3Rhc2hlZFNldHRpbmcgPT09IHRydWU7XG59XG5cbi8qKlxuICogUmV0cmlldmUgZmxleGliaWxpdHkgZGVzaWdudGltZSBzZXR0aW5ncyBmcm9tIG1hbmlmZXN0LlxuICpcbiAqIEBwYXJhbSBmYWNldERlZmluaXRpb25cbiAqIEBwYXJhbSBjb2xsZWN0aW9uRmFjZXREZWZpbml0aW9uXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dFxuICogQHJldHVybnMgRGVzaWdudGltZSBzZXR0aW5nIG9yIGRlZmF1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERlc2lnblRpbWVNZXRhZGF0YVNldHRpbmdzRm9ySGVhZGVyRmFjZXQoXG5cdGZhY2V0RGVmaW5pdGlvbjogRmFjZXRUeXBlcyxcblx0Y29sbGVjdGlvbkZhY2V0RGVmaW5pdGlvbjogRmFjZXRUeXBlcyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+XG4pOiBGbGV4RGVzaWduVGltZVR5cGUge1xuXHRsZXQgZGVzaWduVGltZU1ldGFkYXRhOiBGbGV4RGVzaWduVGltZVR5cGUgPSBGbGV4RGVzaWduVGltZVR5cGUuRGVmYXVsdDtcblx0Y29uc3QgaGVhZGVyRmFjZXRJRCA9IGNyZWF0ZUlkRm9yQW5ub3RhdGlvbihmYWNldERlZmluaXRpb24pO1xuXG5cdC8vIEZvciBIZWFkZXJGYWNldHMgbmVzdGVkIGluc2lkZSBDb2xsZWN0aW9uRmFjZXQgUlRBIHNob3VsZCBiZSBkaXNhYmxlZCwgdGhlcmVmb3JlIHNldCB0byBcIm5vdC1hZGFwdGFibGUtdHJlZVwiXG5cdGlmIChcblx0XHRmYWNldERlZmluaXRpb24uJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLlJlZmVyZW5jZUZhY2V0ICYmXG5cdFx0Y29sbGVjdGlvbkZhY2V0RGVmaW5pdGlvbi4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuQ29sbGVjdGlvbkZhY2V0XG5cdCkge1xuXHRcdGRlc2lnblRpbWVNZXRhZGF0YSA9IEZsZXhEZXNpZ25UaW1lVHlwZS5Ob3RBZGFwdGFibGVUcmVlO1xuXHR9IGVsc2Uge1xuXHRcdGNvbnN0IGhlYWRlckZhY2V0c0NvbnRyb2xDb25maWcgPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpLmdldEhlYWRlckZhY2V0cygpO1xuXHRcdGlmIChoZWFkZXJGYWNldElEKSB7XG5cdFx0XHRjb25zdCBkZXNpZ25UaW1lID0gaGVhZGVyRmFjZXRzQ29udHJvbENvbmZpZ1toZWFkZXJGYWNldElEXT8uZmxleFNldHRpbmdzPy5kZXNpZ250aW1lO1xuXHRcdFx0c3dpdGNoIChkZXNpZ25UaW1lKSB7XG5cdFx0XHRcdGNhc2UgRmxleERlc2lnblRpbWVUeXBlLk5vdEFkYXB0YWJsZTpcblx0XHRcdFx0Y2FzZSBGbGV4RGVzaWduVGltZVR5cGUuTm90QWRhcHRhYmxlVHJlZTpcblx0XHRcdFx0Y2FzZSBGbGV4RGVzaWduVGltZVR5cGUuTm90QWRhcHRhYmxlVmlzaWJpbGl0eTpcblx0XHRcdFx0XHRkZXNpZ25UaW1lTWV0YWRhdGEgPSBkZXNpZ25UaW1lO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRyZXR1cm4gZGVzaWduVGltZU1ldGFkYXRhO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbnZlcnQgJiBCdWlsZCBBbm5vdGF0aW9uIEJhc2VkIEhlYWRlciBGYWNldHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuZnVuY3Rpb24gY3JlYXRlUmVmZXJlbmNlSGVhZGVyRmFjZXQoXG5cdGZhY2V0RGVmaW5pdGlvbjogRmFjZXRUeXBlcyxcblx0Y29sbGVjdGlvbkZhY2V0RGVmaW5pdGlvbjogRmFjZXRUeXBlcyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+XG4pOiBSZWZlcmVuY2VGYWNldCB8IHVuZGVmaW5lZCB7XG5cdGlmIChmYWNldERlZmluaXRpb24uJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLlJlZmVyZW5jZUZhY2V0ICYmIGZhY2V0RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uVUk/LkhpZGRlbj8udmFsdWVPZigpICE9PSB0cnVlKSB7XG5cdFx0Y29uc3QgaGVhZGVyRmFjZXRJRCA9IGdldEhlYWRlckZhY2V0SUQoZmFjZXREZWZpbml0aW9uKSxcblx0XHRcdGdldEhlYWRlckZhY2V0S2V5ID0gKGZhY2V0RGVmaW5pdGlvblRvQ2hlY2s6IEZhY2V0VHlwZXMsIGZhbGxiYWNrOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuXHRcdFx0XHRyZXR1cm4gZmFjZXREZWZpbml0aW9uVG9DaGVjay5JRD8udG9TdHJpbmcoKSB8fCBmYWNldERlZmluaXRpb25Ub0NoZWNrLkxhYmVsPy50b1N0cmluZygpIHx8IGZhbGxiYWNrO1xuXHRcdFx0fSxcblx0XHRcdHRhcmdldEFubm90YXRpb25WYWx1ZSA9IGZhY2V0RGVmaW5pdGlvbi5UYXJnZXQudmFsdWUsXG5cdFx0XHR0YXJnZXRBbm5vdGF0aW9uVHlwZSA9IGdldFRhcmdldEFubm90YXRpb25UeXBlKGZhY2V0RGVmaW5pdGlvbik7XG5cblx0XHRsZXQgaGVhZGVyRm9ybURhdGE6IEhlYWRlckZvcm1EYXRhIHwgdW5kZWZpbmVkO1xuXHRcdGxldCBoZWFkZXJEYXRhUG9pbnREYXRhOiBIZWFkZXJEYXRhUG9pbnREYXRhIHwgdW5kZWZpbmVkO1xuXG5cdFx0c3dpdGNoICh0YXJnZXRBbm5vdGF0aW9uVHlwZSkge1xuXHRcdFx0Y2FzZSBUYXJnZXRBbm5vdGF0aW9uVHlwZS5GaWVsZEdyb3VwOlxuXHRcdFx0XHRoZWFkZXJGb3JtRGF0YSA9IGdldEZpZWxkR3JvdXBGb3JtRGF0YShmYWNldERlZmluaXRpb24sIGNvbnZlcnRlckNvbnRleHQpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBUYXJnZXRBbm5vdGF0aW9uVHlwZS5EYXRhUG9pbnQ6XG5cdFx0XHRcdGhlYWRlckRhdGFQb2ludERhdGEgPSBnZXREYXRhUG9pbnREYXRhKGZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Ly8gVG9EbzogSGFuZGxlIG90aGVyIGNhc2VzXG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cblx0XHRpZiAoZmFjZXREZWZpbml0aW9uLlRhcmdldD8uJHRhcmdldD8udGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuQ2hhcnQgJiYgaXNBbm5vdGF0aW9uRmllbGRTdGF0aWNhbGx5SGlkZGVuKGZhY2V0RGVmaW5pdGlvbikpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHR5cGU6IEhlYWRlckZhY2V0VHlwZS5Bbm5vdGF0aW9uLFxuXHRcdFx0XHRmYWNldFR5cGU6IEZhY2V0VHlwZS5SZWZlcmVuY2UsXG5cdFx0XHRcdGlkOiBoZWFkZXJGYWNldElELFxuXHRcdFx0XHRjb250YWluZXJJZDogZ2V0SGVhZGVyRmFjZXRDb250YWluZXJJRChmYWNldERlZmluaXRpb24pLFxuXHRcdFx0XHRrZXk6IGdldEhlYWRlckZhY2V0S2V5KGZhY2V0RGVmaW5pdGlvbiwgaGVhZGVyRmFjZXRJRCksXG5cdFx0XHRcdGZsZXhTZXR0aW5nczoge1xuXHRcdFx0XHRcdGRlc2lnbnRpbWU6IGdldERlc2lnblRpbWVNZXRhZGF0YVNldHRpbmdzRm9ySGVhZGVyRmFjZXQoZmFjZXREZWZpbml0aW9uLCBjb2xsZWN0aW9uRmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRzdGFzaGVkOiBnZXRTdGFzaGVkU2V0dGluZ3NGb3JIZWFkZXJGYWNldChmYWNldERlZmluaXRpb24sIGNvbGxlY3Rpb25GYWNldERlZmluaXRpb24sIGNvbnZlcnRlckNvbnRleHQpLFxuXHRcdFx0XHR2aXNpYmxlOiBjb21waWxlRXhwcmVzc2lvbihpc1Zpc2libGUoZmFjZXREZWZpbml0aW9uKSksXG5cdFx0XHRcdGFubm90YXRpb25QYXRoOiBgJHtjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZmFjZXREZWZpbml0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZSl9L2AsXG5cdFx0XHRcdHRhcmdldEFubm90YXRpb25WYWx1ZSxcblx0XHRcdFx0dGFyZ2V0QW5ub3RhdGlvblR5cGUsXG5cdFx0XHRcdGhlYWRlckZvcm1EYXRhLFxuXHRcdFx0XHRoZWFkZXJEYXRhUG9pbnREYXRhXG5cdFx0XHR9O1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbGxlY3Rpb25IZWFkZXJGYWNldChcblx0Y29sbGVjdGlvbkZhY2V0RGVmaW5pdGlvbjogRmFjZXRUeXBlcyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+XG4pOiBDb2xsZWN0aW9uRmFjZXQgfCB1bmRlZmluZWQge1xuXHRpZiAoY29sbGVjdGlvbkZhY2V0RGVmaW5pdGlvbi4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuQ29sbGVjdGlvbkZhY2V0KSB7XG5cdFx0Y29uc3QgZmFjZXRzOiBSZWZlcmVuY2VGYWNldFtdID0gW10sXG5cdFx0XHRoZWFkZXJGYWNldElEID0gZ2V0SGVhZGVyRmFjZXRJRChjb2xsZWN0aW9uRmFjZXREZWZpbml0aW9uKSxcblx0XHRcdGdldEhlYWRlckZhY2V0S2V5ID0gKGZhY2V0RGVmaW5pdGlvbjogRmFjZXRUeXBlcywgZmFsbGJhY2s6IHN0cmluZyk6IHN0cmluZyA9PiB7XG5cdFx0XHRcdHJldHVybiBmYWNldERlZmluaXRpb24uSUQ/LnRvU3RyaW5nKCkgfHwgZmFjZXREZWZpbml0aW9uLkxhYmVsPy50b1N0cmluZygpIHx8IGZhbGxiYWNrO1xuXHRcdFx0fTtcblxuXHRcdGNvbGxlY3Rpb25GYWNldERlZmluaXRpb24uRmFjZXRzLmZvckVhY2goKGZhY2V0RGVmaW5pdGlvbikgPT4ge1xuXHRcdFx0Y29uc3QgZmFjZXQ6IFJlZmVyZW5jZUZhY2V0IHwgdW5kZWZpbmVkID0gY3JlYXRlUmVmZXJlbmNlSGVhZGVyRmFjZXQoXG5cdFx0XHRcdGZhY2V0RGVmaW5pdGlvbixcblx0XHRcdFx0Y29sbGVjdGlvbkZhY2V0RGVmaW5pdGlvbixcblx0XHRcdFx0Y29udmVydGVyQ29udGV4dFxuXHRcdFx0KTtcblx0XHRcdGlmIChmYWNldCkge1xuXHRcdFx0XHRmYWNldHMucHVzaChmYWNldCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0dHlwZTogSGVhZGVyRmFjZXRUeXBlLkFubm90YXRpb24sXG5cdFx0XHRmYWNldFR5cGU6IEZhY2V0VHlwZS5Db2xsZWN0aW9uLFxuXHRcdFx0aWQ6IGhlYWRlckZhY2V0SUQsXG5cdFx0XHRjb250YWluZXJJZDogZ2V0SGVhZGVyRmFjZXRDb250YWluZXJJRChjb2xsZWN0aW9uRmFjZXREZWZpbml0aW9uKSxcblx0XHRcdGtleTogZ2V0SGVhZGVyRmFjZXRLZXkoY29sbGVjdGlvbkZhY2V0RGVmaW5pdGlvbiwgaGVhZGVyRmFjZXRJRCksXG5cdFx0XHRmbGV4U2V0dGluZ3M6IHtcblx0XHRcdFx0ZGVzaWdudGltZTogZ2V0RGVzaWduVGltZU1ldGFkYXRhU2V0dGluZ3NGb3JIZWFkZXJGYWNldChcblx0XHRcdFx0XHRjb2xsZWN0aW9uRmFjZXREZWZpbml0aW9uLFxuXHRcdFx0XHRcdGNvbGxlY3Rpb25GYWNldERlZmluaXRpb24sXG5cdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dFxuXHRcdFx0XHQpXG5cdFx0XHR9LFxuXHRcdFx0c3Rhc2hlZDogZ2V0U3Rhc2hlZFNldHRpbmdzRm9ySGVhZGVyRmFjZXQoY29sbGVjdGlvbkZhY2V0RGVmaW5pdGlvbiwgY29sbGVjdGlvbkZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dCksXG5cdFx0XHR2aXNpYmxlOiBjb21waWxlRXhwcmVzc2lvbihpc1Zpc2libGUoY29sbGVjdGlvbkZhY2V0RGVmaW5pdGlvbikpLFxuXHRcdFx0YW5ub3RhdGlvblBhdGg6IGAke2NvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aChjb2xsZWN0aW9uRmFjZXREZWZpbml0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZSl9L2AsXG5cdFx0XHRmYWNldHNcblx0XHR9O1xuXHR9XG5cblx0cmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZ2V0VGFyZ2V0QW5ub3RhdGlvblR5cGUoZmFjZXREZWZpbml0aW9uOiBGYWNldFR5cGVzKTogVGFyZ2V0QW5ub3RhdGlvblR5cGUge1xuXHRsZXQgYW5ub3RhdGlvblR5cGUgPSBUYXJnZXRBbm5vdGF0aW9uVHlwZS5Ob25lO1xuXHRjb25zdCBhbm5vdGF0aW9uVHlwZU1hcDogUmVjb3JkPHN0cmluZywgVGFyZ2V0QW5ub3RhdGlvblR5cGU+ID0ge1xuXHRcdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YVBvaW50XCI6IFRhcmdldEFubm90YXRpb25UeXBlLkRhdGFQb2ludCxcblx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNoYXJ0XCI6IFRhcmdldEFubm90YXRpb25UeXBlLkNoYXJ0LFxuXHRcdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuSWRlbnRpZmljYXRpb25cIjogVGFyZ2V0QW5ub3RhdGlvblR5cGUuSWRlbnRpZmljYXRpb24sXG5cdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tdW5pY2F0aW9uLnYxLkNvbnRhY3RcIjogVGFyZ2V0QW5ub3RhdGlvblR5cGUuQ29udGFjdCxcblx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW11bmljYXRpb24udjEuQWRkcmVzc1wiOiBUYXJnZXRBbm5vdGF0aW9uVHlwZS5BZGRyZXNzLFxuXHRcdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRmllbGRHcm91cFwiOiBUYXJnZXRBbm5vdGF0aW9uVHlwZS5GaWVsZEdyb3VwXG5cdH07XG5cdC8vIFJlZmVyZW5jZVVSTEZhY2V0IGFuZCBDb2xsZWN0aW9uRmFjZXQgZG8gbm90IGhhdmUgVGFyZ2V0IHByb3BlcnR5LlxuXHRpZiAoXG5cdFx0ZmFjZXREZWZpbml0aW9uLiRUeXBlICE9PSBVSUFubm90YXRpb25UeXBlcy5SZWZlcmVuY2VVUkxGYWNldCAmJlxuXHRcdGZhY2V0RGVmaW5pdGlvbi4kVHlwZSAhPT0gVUlBbm5vdGF0aW9uVHlwZXMuQ29sbGVjdGlvbkZhY2V0ICYmXG5cdFx0ZmFjZXREZWZpbml0aW9uLlRhcmdldC4kdGFyZ2V0XG5cdCkge1xuXHRcdGFubm90YXRpb25UeXBlID0gYW5ub3RhdGlvblR5cGVNYXBbZmFjZXREZWZpbml0aW9uLlRhcmdldC4kdGFyZ2V0LnRlcm1dID8/IFRhcmdldEFubm90YXRpb25UeXBlLk5vbmU7XG5cdH1cblxuXHRyZXR1cm4gYW5ub3RhdGlvblR5cGU7XG59XG5cbmZ1bmN0aW9uIGdldEZpZWxkR3JvdXBGb3JtRGF0YShcblx0ZmFjZXREZWZpbml0aW9uOiBSZWZlcmVuY2VGYWNldFR5cGVzLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD5cbik6IEhlYWRlckZvcm1EYXRhIHtcblx0Ly8gc3BsaXQgaW4gdGhpcyBmcm9tIGFubm90YXRpb24gKyBnZXRGaWVsZEdyb3VwRnJvbURlZmF1bHRcblx0aWYgKCFmYWNldERlZmluaXRpb24pIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgZ2V0IEZpZWxkR3JvdXAgZm9ybSBkYXRhIHdpdGhvdXQgZmFjZXQgZGVmaW5pdGlvblwiKTtcblx0fVxuXG5cdGNvbnN0IGZvcm1FbGVtZW50cyA9IGluc2VydEN1c3RvbUVsZW1lbnRzKFxuXHRcdGdldEZvcm1FbGVtZW50c0Zyb21Bbm5vdGF0aW9ucyhmYWNldERlZmluaXRpb24sIGNvbnZlcnRlckNvbnRleHQpLFxuXHRcdGdldEZvcm1FbGVtZW50c0Zyb21NYW5pZmVzdChmYWNldERlZmluaXRpb24sIGNvbnZlcnRlckNvbnRleHQpXG5cdCk7XG5cblx0cmV0dXJuIHtcblx0XHRpZDogZ2V0SGVhZGVyRmFjZXRGb3JtSUQoZmFjZXREZWZpbml0aW9uKSxcblx0XHRsYWJlbDogZmFjZXREZWZpbml0aW9uLkxhYmVsPy50b1N0cmluZygpLFxuXHRcdGZvcm1FbGVtZW50c1xuXHR9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgbWFuaWZlc3QtYmFzZWQgRm9ybUVsZW1lbnRzLlxuICpcbiAqIEBwYXJhbSBmYWNldERlZmluaXRpb24gVGhlIGRlZmluaXRpb24gb2YgdGhlIGZhY2V0XG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHQgZm9yIHRoZSBmYWNldFxuICogQHJldHVybnMgQW5ub3RhdGlvbi1iYXNlZCBGb3JtRWxlbWVudHNcbiAqL1xuZnVuY3Rpb24gZ2V0Rm9ybUVsZW1lbnRzRnJvbUFubm90YXRpb25zKFxuXHRmYWNldERlZmluaXRpb246IEZhY2V0VHlwZXMsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0PlxuKTogQW5ub3RhdGlvbkZvcm1FbGVtZW50W10ge1xuXHRjb25zdCBhbm5vdGF0aW9uQmFzZWRGb3JtRWxlbWVudHM6IEFubm90YXRpb25Gb3JtRWxlbWVudFtdID0gW107XG5cblx0Ly8gUmVmZXJlbmNlVVJMRmFjZXQgYW5kIENvbGxlY3Rpb25GYWNldCBkbyBub3QgaGF2ZSBUYXJnZXQgcHJvcGVydHkuXG5cdGlmIChmYWNldERlZmluaXRpb24uJFR5cGUgIT09IFVJQW5ub3RhdGlvblR5cGVzLlJlZmVyZW5jZVVSTEZhY2V0ICYmIGZhY2V0RGVmaW5pdGlvbi4kVHlwZSAhPT0gVUlBbm5vdGF0aW9uVHlwZXMuQ29sbGVjdGlvbkZhY2V0KSB7XG5cdFx0KGZhY2V0RGVmaW5pdGlvbi5UYXJnZXQ/LiR0YXJnZXQgYXMgRmllbGRHcm91cCk/LkRhdGEuZm9yRWFjaCgoZGF0YUZpZWxkOiBEYXRhRmllbGRBYnN0cmFjdFR5cGVzKSA9PiB7XG5cdFx0XHRpZiAoZGF0YUZpZWxkLmFubm90YXRpb25zPy5VST8uSGlkZGVuPy52YWx1ZU9mKCkgIT09IHRydWUpIHtcblx0XHRcdFx0Y29uc3Qgc2VtYW50aWNPYmplY3RBbm5vdGF0aW9uUGF0aCA9IGdldFNlbWFudGljT2JqZWN0UGF0aChjb252ZXJ0ZXJDb250ZXh0LCBkYXRhRmllbGQpO1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0KGRhdGFGaWVsZC4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkIHx8XG5cdFx0XHRcdFx0XHRkYXRhRmllbGQuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhVcmwgfHxcblx0XHRcdFx0XHRcdGRhdGFGaWVsZC4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aE5hdmlnYXRpb25QYXRoIHx8XG5cdFx0XHRcdFx0XHRkYXRhRmllbGQuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhJbnRlbnRCYXNlZE5hdmlnYXRpb24gfHxcblx0XHRcdFx0XHRcdGRhdGFGaWVsZC4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aEFjdGlvbikgJiZcblx0XHRcdFx0XHQhaXNSZWZlcmVuY2VQcm9wZXJ0eVN0YXRpY2FsbHlIaWRkZW4oZGF0YUZpZWxkKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRhbm5vdGF0aW9uQmFzZWRGb3JtRWxlbWVudHMucHVzaCh7XG5cdFx0XHRcdFx0XHRpc1ZhbHVlTXVsdGlsaW5lVGV4dDogaXNNdWx0aUxpbmVUZXh0KGRhdGFGaWVsZC5WYWx1ZT8uJHRhcmdldCksXG5cdFx0XHRcdFx0XHR0eXBlOiBGb3JtRWxlbWVudFR5cGUuQW5ub3RhdGlvbixcblx0XHRcdFx0XHRcdGtleTogS2V5SGVscGVyLmdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZChkYXRhRmllbGQpLFxuXHRcdFx0XHRcdFx0dmlzaWJsZTogY29tcGlsZUV4cHJlc3Npb24oaXNWaXNpYmxlKGRhdGFGaWVsZCkpLFxuXHRcdFx0XHRcdFx0bGFiZWw6IGRhdGFGaWVsZC5WYWx1ZT8uJHRhcmdldD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uTGFiZWwgfHwgZGF0YUZpZWxkLkxhYmVsLFxuXHRcdFx0XHRcdFx0aWRQcmVmaXg6IGdldEhlYWRlckZhY2V0Rm9ybUlEKGZhY2V0RGVmaW5pdGlvbiwgZGF0YUZpZWxkKSxcblx0XHRcdFx0XHRcdGFubm90YXRpb25QYXRoOiBgJHtjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZGF0YUZpZWxkLmZ1bGx5UXVhbGlmaWVkTmFtZSl9L2AsXG5cdFx0XHRcdFx0XHRzZW1hbnRpY09iamVjdFBhdGg6IHNlbWFudGljT2JqZWN0QW5ub3RhdGlvblBhdGhcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0XHRkYXRhRmllbGQuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckFubm90YXRpb24gJiZcblx0XHRcdFx0XHQhaXNSZWZlcmVuY2VQcm9wZXJ0eVN0YXRpY2FsbHlIaWRkZW4oZGF0YUZpZWxkKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRhbm5vdGF0aW9uQmFzZWRGb3JtRWxlbWVudHMucHVzaCh7XG5cdFx0XHRcdFx0XHRpc1ZhbHVlTXVsdGlsaW5lVGV4dDogZmFsc2UsIC8vIHdhcyBkYXRhRmllbGQuVGFyZ2V0Py4kdGFyZ2V0Py5hbm5vdGF0aW9ucz8uVUk/Lk11bHRpTGluZVRleHQ/LnZhbHVlT2YoKSA9PT0gdHJ1ZSBidXQgdGhhdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgYXMgdGhlIHRhcmdldCBjYW5ub3QgaGF2ZSB0aGF0IGFubm90YXRpb25cblx0XHRcdFx0XHRcdHR5cGU6IEZvcm1FbGVtZW50VHlwZS5Bbm5vdGF0aW9uLFxuXHRcdFx0XHRcdFx0a2V5OiBLZXlIZWxwZXIuZ2VuZXJhdGVLZXlGcm9tRGF0YUZpZWxkKGRhdGFGaWVsZCksXG5cdFx0XHRcdFx0XHR2aXNpYmxlOiBjb21waWxlRXhwcmVzc2lvbihpc1Zpc2libGUoZGF0YUZpZWxkKSksXG5cdFx0XHRcdFx0XHRsYWJlbDogZGF0YUZpZWxkLlRhcmdldD8uJHRhcmdldD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uTGFiZWw/LnRvU3RyaW5nKCkgfHwgZGF0YUZpZWxkLkxhYmVsPy50b1N0cmluZygpLFxuXHRcdFx0XHRcdFx0aWRQcmVmaXg6IGdldEhlYWRlckZhY2V0Rm9ybUlEKGZhY2V0RGVmaW5pdGlvbiwgZGF0YUZpZWxkKSxcblx0XHRcdFx0XHRcdGFubm90YXRpb25QYXRoOiBgJHtjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZGF0YUZpZWxkLmZ1bGx5UXVhbGlmaWVkTmFtZSl9L2AsXG5cdFx0XHRcdFx0XHRzZW1hbnRpY09iamVjdFBhdGg6IHNlbWFudGljT2JqZWN0QW5ub3RhdGlvblBhdGhcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0cmV0dXJuIGFubm90YXRpb25CYXNlZEZvcm1FbGVtZW50cztcbn1cblxuZnVuY3Rpb24gZ2V0RGF0YVBvaW50RGF0YShmYWNldERlZmluaXRpb246IEZhY2V0VHlwZXMsIGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0Pik6IEhlYWRlckRhdGFQb2ludERhdGEge1xuXHRsZXQgdHlwZSA9IEhlYWRlckRhdGFQb2ludFR5cGUuQ29udGVudDtcblx0bGV0IHNlbWFudGljT2JqZWN0UGF0aDtcblx0aWYgKGZhY2V0RGVmaW5pdGlvbi4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuUmVmZXJlbmNlRmFjZXQgJiYgIWlzQW5ub3RhdGlvbkZpZWxkU3RhdGljYWxseUhpZGRlbihmYWNldERlZmluaXRpb24pKSB7XG5cdFx0aWYgKChmYWNldERlZmluaXRpb24uVGFyZ2V0Py4kdGFyZ2V0IGFzIERhdGFQb2ludCk/LlZpc3VhbGl6YXRpb24gPT09IFwiVUkuVmlzdWFsaXphdGlvblR5cGUvUHJvZ3Jlc3NcIikge1xuXHRcdFx0dHlwZSA9IEhlYWRlckRhdGFQb2ludFR5cGUuUHJvZ3Jlc3NJbmRpY2F0b3I7XG5cdFx0fSBlbHNlIGlmICgoZmFjZXREZWZpbml0aW9uLlRhcmdldD8uJHRhcmdldCBhcyBEYXRhUG9pbnQpPy5WaXN1YWxpemF0aW9uID09PSBcIlVJLlZpc3VhbGl6YXRpb25UeXBlL1JhdGluZ1wiKSB7XG5cdFx0XHR0eXBlID0gSGVhZGVyRGF0YVBvaW50VHlwZS5SYXRpbmdJbmRpY2F0b3I7XG5cdFx0fVxuXHRcdGNvbnN0IGRhdGFQb2ludCA9IGZhY2V0RGVmaW5pdGlvbi5UYXJnZXQ/LiR0YXJnZXQgYXMgRGF0YVBvaW50O1xuXG5cdFx0aWYgKHR5cGVvZiBkYXRhUG9pbnQgPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdGlmIChkYXRhUG9pbnQ/LlZhbHVlPy4kdGFyZ2V0KSB7XG5cdFx0XHRcdGNvbnN0IHByb3BlcnR5ID0gZGF0YVBvaW50LlZhbHVlLiR0YXJnZXQ7XG5cdFx0XHRcdGlmIChwcm9wZXJ0eT8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uU2VtYW50aWNPYmplY3QgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdHNlbWFudGljT2JqZWN0UGF0aCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aChwcm9wZXJ0eT8uZnVsbHlRdWFsaWZpZWROYW1lKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiB7IHR5cGUsIHNlbWFudGljT2JqZWN0UGF0aCB9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gYW5ub3RhdGlvbi1iYXNlZCBoZWFkZXIgZmFjZXQuXG4gKlxuICogQHBhcmFtIGZhY2V0RGVmaW5pdGlvbiBUaGUgZGVmaW5pdGlvbiBvZiB0aGUgZmFjZXRcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0IFRoZSBjb252ZXJ0ZXIgY29udGV4dFxuICogQHJldHVybnMgVGhlIGNyZWF0ZWQgYW5ub3RhdGlvbi1iYXNlZCBoZWFkZXIgZmFjZXRcbiAqL1xuZnVuY3Rpb24gY3JlYXRlSGVhZGVyRmFjZXQoXG5cdGZhY2V0RGVmaW5pdGlvbjogRmFjZXRUeXBlcyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+XG4pOiBPYmplY3RQYWdlSGVhZGVyRmFjZXQgfCB1bmRlZmluZWQge1xuXHRsZXQgaGVhZGVyRmFjZXQ6IE9iamVjdFBhZ2VIZWFkZXJGYWNldCB8IHVuZGVmaW5lZDtcblx0c3dpdGNoIChmYWNldERlZmluaXRpb24uJFR5cGUpIHtcblx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLlJlZmVyZW5jZUZhY2V0OlxuXHRcdFx0aGVhZGVyRmFjZXQgPSBjcmVhdGVSZWZlcmVuY2VIZWFkZXJGYWNldChmYWNldERlZmluaXRpb24sIGZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dCk7XG5cdFx0XHRicmVhaztcblxuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuQ29sbGVjdGlvbkZhY2V0OlxuXHRcdFx0aGVhZGVyRmFjZXQgPSBjcmVhdGVDb2xsZWN0aW9uSGVhZGVyRmFjZXQoZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KTtcblx0XHRcdGJyZWFrO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRicmVhaztcblx0fVxuXG5cdHJldHVybiBoZWFkZXJGYWNldDtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb252ZXJ0ICYgQnVpbGQgTWFuaWZlc3QgQmFzZWQgSGVhZGVyIEZhY2V0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbmZ1bmN0aW9uIGdlbmVyYXRlQmluZGluZyhyZXF1ZXN0R3JvdXBJZD86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGlmICghcmVxdWVzdEdyb3VwSWQpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdGNvbnN0IGdyb3VwSWQgPSBbXCJIZXJvZXNcIiwgXCJEZWNvcmF0aW9uXCIsIFwiV29ya2Vyc1wiLCBcIkxvbmdSdW5uZXJzXCJdLmluY2x1ZGVzKHJlcXVlc3RHcm91cElkKVxuXHRcdD8gYCRhdXRvLiR7cmVxdWVzdEdyb3VwSWR9YFxuXHRcdDogcmVxdWVzdEdyb3VwSWQ7XG5cblx0cmV0dXJuIGB7IHBhdGggOiAnJywgcGFyYW1ldGVycyA6IHsgJCRncm91cElkIDogJyR7Z3JvdXBJZH0nIH0gfWA7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgbWFuaWZlc3QgYmFzZWQgY3VzdG9tIGhlYWRlciBmYWNldC5cbiAqXG4gKiBAcGFyYW0gY3VzdG9tSGVhZGVyRmFjZXREZWZpbml0aW9uXG4gKiBAcGFyYW0gaGVhZGVyRmFjZXRLZXlcbiAqIEByZXR1cm5zIFRoZSBtYW5pZmVzdCBiYXNlZCBjdXN0b20gaGVhZGVyIGZhY2V0IGNyZWF0ZWRcbiAqL1xuZnVuY3Rpb24gY3JlYXRlQ3VzdG9tSGVhZGVyRmFjZXQoY3VzdG9tSGVhZGVyRmFjZXREZWZpbml0aW9uOiBNYW5pZmVzdEhlYWRlckZhY2V0LCBoZWFkZXJGYWNldEtleTogc3RyaW5nKTogQ3VzdG9tT2JqZWN0UGFnZUhlYWRlckZhY2V0IHtcblx0Y29uc3QgY3VzdG9tSGVhZGVyRmFjZXRJRCA9IGdldEN1c3RvbUhlYWRlckZhY2V0SUQoaGVhZGVyRmFjZXRLZXkpO1xuXG5cdGxldCBwb3NpdGlvbjogUG9zaXRpb24gfCB1bmRlZmluZWQgPSBjdXN0b21IZWFkZXJGYWNldERlZmluaXRpb24ucG9zaXRpb247XG5cdGlmICghcG9zaXRpb24pIHtcblx0XHRwb3NpdGlvbiA9IHtcblx0XHRcdHBsYWNlbWVudDogUGxhY2VtZW50LkFmdGVyXG5cdFx0fTtcblx0fVxuXHQvLyBUT0RPIGZvciBhbiBub24gYW5ub3RhdGlvbiBmcmFnbWVudCB0aGUgbmFtZSBpcyBtYW5kYXRvcnkgLT4gTm90IGNoZWNrZWRcblx0cmV0dXJuIHtcblx0XHRmYWNldFR5cGU6IEZhY2V0VHlwZS5SZWZlcmVuY2UsXG5cdFx0dHlwZTogY3VzdG9tSGVhZGVyRmFjZXREZWZpbml0aW9uLnR5cGUsXG5cdFx0aWQ6IGN1c3RvbUhlYWRlckZhY2V0SUQsXG5cdFx0Y29udGFpbmVySWQ6IGN1c3RvbUhlYWRlckZhY2V0SUQsXG5cdFx0a2V5OiBoZWFkZXJGYWNldEtleSxcblx0XHRwb3NpdGlvbjogcG9zaXRpb24sXG5cdFx0dmlzaWJsZTogY3VzdG9tSGVhZGVyRmFjZXREZWZpbml0aW9uLnZpc2libGUsXG5cdFx0ZnJhZ21lbnROYW1lOiBjdXN0b21IZWFkZXJGYWNldERlZmluaXRpb24udGVtcGxhdGUgfHwgY3VzdG9tSGVhZGVyRmFjZXREZWZpbml0aW9uLm5hbWUsXG5cdFx0dGl0bGU6IGN1c3RvbUhlYWRlckZhY2V0RGVmaW5pdGlvbi50aXRsZSxcblx0XHRzdWJUaXRsZTogY3VzdG9tSGVhZGVyRmFjZXREZWZpbml0aW9uLnN1YlRpdGxlLFxuXHRcdHN0YXNoZWQ6IGN1c3RvbUhlYWRlckZhY2V0RGVmaW5pdGlvbi5zdGFzaGVkIHx8IGZhbHNlLFxuXHRcdGZsZXhTZXR0aW5nczogeyAuLi57IGRlc2lnbnRpbWU6IEZsZXhEZXNpZ25UaW1lVHlwZS5EZWZhdWx0IH0sIC4uLmN1c3RvbUhlYWRlckZhY2V0RGVmaW5pdGlvbi5mbGV4U2V0dGluZ3MgfSxcblx0XHRiaW5kaW5nOiBnZW5lcmF0ZUJpbmRpbmcoY3VzdG9tSGVhZGVyRmFjZXREZWZpbml0aW9uLnJlcXVlc3RHcm91cElkKSxcblx0XHR0ZW1wbGF0ZUVkaXQ6IGN1c3RvbUhlYWRlckZhY2V0RGVmaW5pdGlvbi50ZW1wbGF0ZUVkaXRcblx0fTtcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBNkJBO0VBQ0E7RUFDQTtFQUNBO0VBQUEsSUFFWUEsZUFBZTtFQUFBLFdBQWZBLGVBQWU7SUFBZkEsZUFBZTtJQUFmQSxlQUFlO0VBQUEsR0FBZkEsZUFBZSxLQUFmQSxlQUFlO0VBQUE7RUFBQSxJQUtmQyxTQUFTO0VBQUEsV0FBVEEsU0FBUztJQUFUQSxTQUFTO0lBQVRBLFNBQVM7RUFBQSxHQUFUQSxTQUFTLEtBQVRBLFNBQVM7RUFBQTtFQUFBLElBS1RDLGtCQUFrQjtFQUFBLFdBQWxCQSxrQkFBa0I7SUFBbEJBLGtCQUFrQjtJQUFsQkEsa0JBQWtCO0lBQWxCQSxrQkFBa0I7SUFBbEJBLGtCQUFrQjtFQUFBLEdBQWxCQSxrQkFBa0IsS0FBbEJBLGtCQUFrQjtFQUFBO0VBQUEsSUFpQnpCQyxtQkFBbUI7RUFBQSxXQUFuQkEsbUJBQW1CO0lBQW5CQSxtQkFBbUI7SUFBbkJBLG1CQUFtQjtJQUFuQkEsbUJBQW1CO0VBQUEsR0FBbkJBLG1CQUFtQixLQUFuQkEsbUJBQW1CO0VBQUEsSUFXbkJDLG9CQUFvQjtFQUFBLFdBQXBCQSxvQkFBb0I7SUFBcEJBLG9CQUFvQjtJQUFwQkEsb0JBQW9CO0lBQXBCQSxvQkFBb0I7SUFBcEJBLG9CQUFvQjtJQUFwQkEsb0JBQW9CO0lBQXBCQSxvQkFBb0I7SUFBcEJBLG9CQUFvQjtFQUFBLEdBQXBCQSxvQkFBb0IsS0FBcEJBLG9CQUFvQjtFQW9EekI7O0VBRUE7RUFDQTtFQUNBOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNPLFNBQVNDLDhCQUE4QixDQUFDQyxnQkFBeUQsRUFBMkI7SUFBQTtJQUNsSSxNQUFNQyxZQUFxQyxHQUFHLEVBQUU7SUFDaEQseUJBQUFELGdCQUFnQixD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
419
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJIZWFkZXJGYWNldFR5cGUiLCJfZXhwb3J0cyIsIkZhY2V0VHlwZSIsIkZsZXhEZXNpZ25UaW1lVHlwZSIsIkhlYWRlckRhdGFQb2ludFR5cGUiLCJUYXJnZXRBbm5vdGF0aW9uVHlwZSIsImdldEhlYWRlckZhY2V0c0Zyb21Bbm5vdGF0aW9ucyIsImNvbnZlcnRlckNvbnRleHQiLCJfY29udmVydGVyQ29udGV4dCRnZXQiLCJfY29udmVydGVyQ29udGV4dCRnZXQyIiwiX2NvbnZlcnRlckNvbnRleHQkZ2V0MyIsImhlYWRlckZhY2V0cyIsImdldEVudGl0eVR5cGUiLCJhbm5vdGF0aW9ucyIsIlVJIiwiSGVhZGVyRmFjZXRzIiwiZm9yRWFjaCIsImZhY2V0IiwiaGVhZGVyRmFjZXQiLCJjcmVhdGVIZWFkZXJGYWNldCIsInB1c2giLCJnZXRIZWFkZXJGYWNldHNGcm9tTWFuaWZlc3QiLCJtYW5pZmVzdEN1c3RvbUhlYWRlckZhY2V0cyIsImN1c3RvbUhlYWRlckZhY2V0cyIsIk9iamVjdCIsImtleXMiLCJtYW5pZmVzdEhlYWRlckZhY2V0S2V5IiwiY3VzdG9tSGVhZGVyRmFjZXQiLCJjcmVhdGVDdXN0b21IZWFkZXJGYWNldCIsImdldFN0YXNoZWRTZXR0aW5nc0ZvckhlYWRlckZhY2V0IiwiZmFjZXREZWZpbml0aW9uIiwiY29sbGVjdGlvbkZhY2V0RGVmaW5pdGlvbiIsIl9oZWFkZXJGYWNldHNDb250cm9sQyIsIiRUeXBlIiwiaGVhZGVyRmFjZXRJRCIsImNyZWF0ZUlkRm9yQW5ub3RhdGlvbiIsImhlYWRlckZhY2V0c0NvbnRyb2xDb25maWciLCJnZXRNYW5pZmVzdFdyYXBwZXIiLCJnZXRIZWFkZXJGYWNldHMiLCJzdGFzaGVkU2V0dGluZyIsInN0YXNoZWQiLCJnZXREZXNpZ25UaW1lTWV0YWRhdGFTZXR0aW5nc0ZvckhlYWRlckZhY2V0IiwiZGVzaWduVGltZU1ldGFkYXRhIiwiRGVmYXVsdCIsIk5vdEFkYXB0YWJsZVRyZWUiLCJfaGVhZGVyRmFjZXRzQ29udHJvbEMyIiwiX2hlYWRlckZhY2V0c0NvbnRyb2xDMyIsImRlc2lnblRpbWUiLCJmbGV4U2V0dGluZ3MiLCJkZXNpZ250aW1lIiwiTm90QWRhcHRhYmxlIiwiTm90QWRhcHRhYmxlVmlzaWJpbGl0eSIsImNyZWF0ZVJlZmVyZW5jZUhlYWRlckZhY2V0IiwiX2ZhY2V0RGVmaW5pdGlvbiRhbm5vIiwiX2ZhY2V0RGVmaW5pdGlvbiRhbm5vMiIsIl9mYWNldERlZmluaXRpb24kYW5ubzMiLCJIaWRkZW4iLCJ2YWx1ZU9mIiwiX2ZhY2V0RGVmaW5pdGlvbiRUYXJnIiwiX2ZhY2V0RGVmaW5pdGlvbiRUYXJnMiIsImdldEhlYWRlckZhY2V0SUQiLCJnZXRIZWFkZXJGYWNldEtleSIsImZhY2V0RGVmaW5pdGlvblRvQ2hlY2siLCJmYWxsYmFjayIsIl9mYWNldERlZmluaXRpb25Ub0NoZSIsIl9mYWNldERlZmluaXRpb25Ub0NoZTIiLCJJRCIsInRvU3RyaW5nIiwiTGFiZWwiLCJ0YXJnZXRBbm5vdGF0aW9uVmFsdWUiLCJUYXJnZXQiLCJ2YWx1ZSIsInRhcmdldEFubm90YXRpb25UeXBlIiwiZ2V0VGFyZ2V0QW5ub3RhdGlvblR5cGUiLCJoZWFkZXJGb3JtRGF0YSIsImhlYWRlckRhdGFQb2ludERhdGEiLCJGaWVsZEdyb3VwIiwiZ2V0RmllbGRHcm91cEZvcm1EYXRhIiwiRGF0YVBvaW50IiwiZ2V0RGF0YVBvaW50RGF0YSIsIiR0YXJnZXQiLCJ0ZXJtIiwiaXNBbm5vdGF0aW9uRmllbGRTdGF0aWNhbGx5SGlkZGVuIiwidW5kZWZpbmVkIiwidHlwZSIsIkFubm90YXRpb24iLCJmYWNldFR5cGUiLCJSZWZlcmVuY2UiLCJpZCIsImNvbnRhaW5lcklkIiwiZ2V0SGVhZGVyRmFjZXRDb250YWluZXJJRCIsImtleSIsInZpc2libGUiLCJjb21waWxlRXhwcmVzc2lvbiIsImlzVmlzaWJsZSIsImFubm90YXRpb25QYXRoIiwiZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsImNyZWF0ZUNvbGxlY3Rpb25IZWFkZXJGYWNldCIsImZhY2V0cyIsIl9mYWNldERlZmluaXRpb24kSUQiLCJfZmFjZXREZWZpbml0aW9uJExhYmUiLCJGYWNldHMiLCJDb2xsZWN0aW9uIiwiYW5ub3RhdGlvblR5cGUiLCJOb25lIiwiYW5ub3RhdGlvblR5cGVNYXAiLCJDaGFydCIsIklkZW50aWZpY2F0aW9uIiwiQ29udGFjdCIsIkFkZHJlc3MiLCJfZmFjZXREZWZpbml0aW9uJExhYmUyIiwiRXJyb3IiLCJmb3JtRWxlbWVudHMiLCJpbnNlcnRDdXN0b21FbGVtZW50cyIsImdldEZvcm1FbGVtZW50c0Zyb21Bbm5vdGF0aW9ucyIsImdldEZvcm1FbGVtZW50c0Zyb21NYW5pZmVzdCIsImdldEhlYWRlckZhY2V0Rm9ybUlEIiwibGFiZWwiLCJhbm5vdGF0aW9uQmFzZWRGb3JtRWxlbWVudHMiLCJfZmFjZXREZWZpbml0aW9uJFRhcmczIiwiX2ZhY2V0RGVmaW5pdGlvbiRUYXJnNCIsInJlc29sdmVkVGFyZ2V0IiwiZ2V0RW50aXR5VHlwZUFubm90YXRpb24iLCJEYXRhIiwiZGF0YUZpZWxkIiwiX2RhdGFGaWVsZCRhbm5vdGF0aW9uIiwiX2RhdGFGaWVsZCRhbm5vdGF0aW9uMiIsIl9kYXRhRmllbGQkYW5ub3RhdGlvbjMiLCJzZW1hbnRpY09iamVjdEFubm90YXRpb25QYXRoIiwiZ2V0U2VtYW50aWNPYmplY3RQYXRoIiwiaXNSZWZlcmVuY2VQcm9wZXJ0eVN0YXRpY2FsbHlIaWRkZW4iLCJfZGF0YUZpZWxkJFZhbHVlIiwiX2RhdGFGaWVsZCRWYWx1ZTIiLCJfZGF0YUZpZWxkJFZhbHVlMiQkdGEiLCJfZGF0YUZpZWxkJFZhbHVlMiQkdGEyIiwiX2RhdGFGaWVsZCRWYWx1ZTIkJHRhMyIsImlzVmFsdWVNdWx0aWxpbmVUZXh0IiwiaXNNdWx0aUxpbmVUZXh0IiwiVmFsdWUiLCJGb3JtRWxlbWVudFR5cGUiLCJLZXlIZWxwZXIiLCJnZW5lcmF0ZUtleUZyb21EYXRhRmllbGQiLCJDb21tb24iLCJpZFByZWZpeCIsInNlbWFudGljT2JqZWN0UGF0aCIsIl9kYXRhRmllbGQkVGFyZ2V0IiwiX2RhdGFGaWVsZCRUYXJnZXQkJHRhIiwiX2RhdGFGaWVsZCRUYXJnZXQkJHRhMiIsIl9kYXRhRmllbGQkVGFyZ2V0JCR0YTMiLCJfZGF0YUZpZWxkJFRhcmdldCQkdGE0IiwiX2RhdGFGaWVsZCRMYWJlbCIsIkNvbnRlbnQiLCJfZmFjZXREZWZpbml0aW9uJFRhcmc1IiwiX2ZhY2V0RGVmaW5pdGlvbiRUYXJnNiIsIl9mYWNldERlZmluaXRpb24kVGFyZzciLCJfZmFjZXREZWZpbml0aW9uJFRhcmc4IiwiX2ZhY2V0RGVmaW5pdGlvbiRUYXJnOSIsIlZpc3VhbGl6YXRpb24iLCJQcm9ncmVzc0luZGljYXRvciIsIlJhdGluZ0luZGljYXRvciIsImRhdGFQb2ludCIsIl9kYXRhUG9pbnQkVmFsdWUiLCJfcHJvcGVydHkkYW5ub3RhdGlvbnMiLCJfcHJvcGVydHkkYW5ub3RhdGlvbnMyIiwicHJvcGVydHkiLCJTZW1hbnRpY09iamVjdCIsImdlbmVyYXRlQmluZGluZyIsInJlcXVlc3RHcm91cElkIiwiZ3JvdXBJZCIsImluY2x1ZGVzIiwiY3VzdG9tSGVhZGVyRmFjZXREZWZpbml0aW9uIiwiaGVhZGVyRmFjZXRLZXkiLCJjdXN0b21IZWFkZXJGYWNldElEIiwiZ2V0Q3VzdG9tSGVhZGVyRmFjZXRJRCIsInBvc2l0aW9uIiwicGxhY2VtZW50IiwiUGxhY2VtZW50IiwiQWZ0ZXIiLCJmcmFnbWVudE5hbWUiLCJ0ZW1wbGF0ZSIsIm5hbWUiLCJ0aXRsZSIsInN1YlRpdGxlIiwiYmluZGluZyIsInRlbXBsYXRlRWRpdCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiSGVhZGVyRmFjZXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuXHREYXRhRmllbGRBYnN0cmFjdFR5cGVzLFxuXHREYXRhUG9pbnQsXG5cdEZhY2V0VHlwZXMsXG5cdEZpZWxkR3JvdXAsXG5cdFJlZmVyZW5jZUZhY2V0VHlwZXNcbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVGVybXMsIFVJQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgY29tcGlsZUV4cHJlc3Npb24sIHR5cGUgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgTWFuaWZlc3RIZWFkZXJGYWNldCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB0eXBlIHsgUGFnZUNvbnRleHRQYXRoVGFyZ2V0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvVGVtcGxhdGVDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IGdldFNlbWFudGljT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2Fubm90YXRpb25zL0RhdGFGaWVsZFwiO1xuaW1wb3J0IHR5cGUgeyBDb25maWd1cmFibGVPYmplY3QsIENvbmZpZ3VyYWJsZVJlY29yZCwgQ3VzdG9tRWxlbWVudCwgUG9zaXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0NvbmZpZ3VyYWJsZU9iamVjdFwiO1xuaW1wb3J0IHsgUGxhY2VtZW50LCBpbnNlcnRDdXN0b21FbGVtZW50cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvQ29uZmlndXJhYmxlT2JqZWN0XCI7XG5pbXBvcnQge1xuXHRnZXRDdXN0b21IZWFkZXJGYWNldElELFxuXHRnZXRIZWFkZXJGYWNldENvbnRhaW5lcklELFxuXHRnZXRIZWFkZXJGYWNldEZvcm1JRCxcblx0Z2V0SGVhZGVyRmFjZXRJRFxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0lEXCI7XG5pbXBvcnQgeyBLZXlIZWxwZXIgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0tleVwiO1xuaW1wb3J0IHsgaXNNdWx0aUxpbmVUZXh0IH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvUHJvcGVydHlIZWxwZXJcIjtcbmltcG9ydCB7IGlzVmlzaWJsZSB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuaW1wb3J0IHsgY3JlYXRlSWRGb3JBbm5vdGF0aW9uIH0gZnJvbSBcIi4uLy4uLy4uL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB0eXBlIENvbnZlcnRlckNvbnRleHQgZnJvbSBcIi4uLy4uL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB7IGlzQW5ub3RhdGlvbkZpZWxkU3RhdGljYWxseUhpZGRlbiwgaXNSZWZlcmVuY2VQcm9wZXJ0eVN0YXRpY2FsbHlIaWRkZW4gfSBmcm9tIFwiLi4vLi4vaGVscGVycy9EYXRhRmllbGRIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgQW5ub3RhdGlvbkZvcm1FbGVtZW50LCBGb3JtRWxlbWVudCB9IGZyb20gXCIuLi9Db21tb24vRm9ybVwiO1xuaW1wb3J0IHsgRm9ybUVsZW1lbnRUeXBlLCBnZXRGb3JtRWxlbWVudHNGcm9tTWFuaWZlc3QgfSBmcm9tIFwiLi4vQ29tbW9uL0Zvcm1cIjtcblxuLy8gcmVnaW9uIGRlZmluaXRpb25zXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIERlZmluaXRpb25zOiBIZWFkZXIgRmFjZXQgVHlwZXMsIEdlbmVyaWMgT1AgSGVhZGVyIEZhY2V0LCBNYW5pZmVzdCBQcm9wZXJ0aWVzIGZvciBDdXN0b20gSGVhZGVyIEZhY2V0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuZXhwb3J0IGVudW0gSGVhZGVyRmFjZXRUeXBlIHtcblx0QW5ub3RhdGlvbiA9IFwiQW5ub3RhdGlvblwiLFxuXHRYTUxGcmFnbWVudCA9IFwiWE1MRnJhZ21lbnRcIlxufVxuXG5leHBvcnQgZW51bSBGYWNldFR5cGUge1xuXHRSZWZlcmVuY2UgPSBcIlJlZmVyZW5jZVwiLFxuXHRDb2xsZWN0aW9uID0gXCJDb2xsZWN0aW9uXCJcbn1cblxuZXhwb3J0IGVudW0gRmxleERlc2lnblRpbWVUeXBlIHtcblx0RGVmYXVsdCA9IFwiRGVmYXVsdFwiLFxuXHROb3RBZGFwdGFibGUgPSBcIm5vdC1hZGFwdGFibGVcIiwgLy8gZGlzYWJsZSBhbGwgYWN0aW9ucyBvbiB0aGF0IGluc3RhbmNlXG5cdE5vdEFkYXB0YWJsZVRyZWUgPSBcIm5vdC1hZGFwdGFibGUtdHJlZVwiLCAvLyBkaXNhYmxlIGFsbCBhY3Rpb25zIG9uIHRoYXQgaW5zdGFuY2UgYW5kIG9uIGFsbCBjaGlsZHJlbiBvZiB0aGF0IGluc3RhbmNlXG5cdE5vdEFkYXB0YWJsZVZpc2liaWxpdHkgPSBcIm5vdC1hZGFwdGFibGUtdmlzaWJpbGl0eVwiIC8vIGRpc2FibGUgYWxsIGFjdGlvbnMgdGhhdCBpbmZsdWVuY2UgdGhlIHZpc2liaWxpdHksIG5hbWVseSByZXZlYWwgYW5kIHJlbW92ZVxufVxuXG5leHBvcnQgdHlwZSBGbGV4U2V0dGluZ3MgPSB7XG5cdGRlc2lnbnRpbWU/OiBGbGV4RGVzaWduVGltZVR5cGU7XG59O1xuXG50eXBlIEhlYWRlckZvcm1EYXRhID0ge1xuXHRpZDogc3RyaW5nO1xuXHRsYWJlbD86IHN0cmluZztcblx0Zm9ybUVsZW1lbnRzOiBGb3JtRWxlbWVudFtdO1xufTtcblxuZW51bSBIZWFkZXJEYXRhUG9pbnRUeXBlIHtcblx0UHJvZ3Jlc3NJbmRpY2F0b3IgPSBcIlByb2dyZXNzSW5kaWNhdG9yXCIsXG5cdFJhdGluZ0luZGljYXRvciA9IFwiUmF0aW5nSW5kaWNhdG9yXCIsXG5cdENvbnRlbnQgPSBcIkNvbnRlbnRcIlxufVxuXG50eXBlIEhlYWRlckRhdGFQb2ludERhdGEgPSB7XG5cdHR5cGU6IEhlYWRlckRhdGFQb2ludFR5cGU7XG5cdHNlbWFudGljT2JqZWN0UGF0aD86IHN0cmluZztcbn07XG5cbmVudW0gVGFyZ2V0QW5ub3RhdGlvblR5cGUge1xuXHROb25lID0gXCJOb25lXCIsXG5cdERhdGFQb2ludCA9IFwiRGF0YVBvaW50XCIsXG5cdENoYXJ0ID0gXCJDaGFydFwiLFxuXHRJZGVudGlmaWNhdGlvbiA9IFwiSWRlbnRpZmljYXRpb25cIixcblx0Q29udGFjdCA9IFwiQ29udGFjdFwiLFxuXHRBZGRyZXNzID0gXCJBZGRyZXNzXCIsXG5cdEZpZWxkR3JvdXAgPSBcIkZpZWxkR3JvdXBcIlxufVxuXG50eXBlIEJhc2VIZWFkZXJGYWNldCA9IENvbmZpZ3VyYWJsZU9iamVjdCAmIHtcblx0dHlwZT86IEhlYWRlckZhY2V0VHlwZTsgLy8gTWFuaWZlc3Qgb3IgTWV0YWRhdGFcblx0aWQ6IHN0cmluZztcblx0Y29udGFpbmVySWQ6IHN0cmluZztcblx0YW5ub3RhdGlvblBhdGg/OiBzdHJpbmc7XG5cdGZsZXhTZXR0aW5nczogRmxleFNldHRpbmdzO1xuXHRzdGFzaGVkOiBib29sZWFuO1xuXHR2aXNpYmxlOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblx0dGFyZ2V0QW5ub3RhdGlvblZhbHVlPzogc3RyaW5nO1xuXHR0YXJnZXRBbm5vdGF0aW9uVHlwZT86IFRhcmdldEFubm90YXRpb25UeXBlO1xufTtcblxudHlwZSBCYXNlUmVmZXJlbmNlRmFjZXQgPSBCYXNlSGVhZGVyRmFjZXQgJiB7XG5cdGZhY2V0VHlwZTogRmFjZXRUeXBlLlJlZmVyZW5jZTtcbn07XG5cbmV4cG9ydCB0eXBlIEZpZWxkR3JvdXBGYWNldCA9IEJhc2VSZWZlcmVuY2VGYWNldCAmIHtcblx0aGVhZGVyRm9ybURhdGE6IEhlYWRlckZvcm1EYXRhO1xufTtcblxuZXhwb3J0IHR5cGUgRGF0YVBvaW50RmFjZXQgPSBCYXNlUmVmZXJlbmNlRmFjZXQgJiB7XG5cdGhlYWRlckRhdGFQb2ludERhdGE/OiBIZWFkZXJEYXRhUG9pbnREYXRhO1xufTtcblxudHlwZSBSZWZlcmVuY2VGYWNldCA9IEZpZWxkR3JvdXBGYWNldCB8IERhdGFQb2ludEZhY2V0O1xuXG5leHBvcnQgdHlwZSBDb2xsZWN0aW9uRmFjZXQgPSBCYXNlSGVhZGVyRmFjZXQgJiB7XG5cdGZhY2V0VHlwZTogRmFjZXRUeXBlLkNvbGxlY3Rpb247XG5cdGZhY2V0czogUmVmZXJlbmNlRmFjZXRbXTtcbn07XG5cbmV4cG9ydCB0eXBlIE9iamVjdFBhZ2VIZWFkZXJGYWNldCA9IFJlZmVyZW5jZUZhY2V0IHwgQ29sbGVjdGlvbkZhY2V0O1xuXG5leHBvcnQgdHlwZSBDdXN0b21PYmplY3RQYWdlSGVhZGVyRmFjZXQgPSBDdXN0b21FbGVtZW50PE9iamVjdFBhZ2VIZWFkZXJGYWNldD4gJiB7XG5cdGZyYWdtZW50TmFtZT86IHN0cmluZztcblx0dGl0bGU/OiBzdHJpbmc7XG5cdHN1YlRpdGxlPzogc3RyaW5nO1xuXHRzdGFzaGVkPzogYm9vbGVhbjtcblx0YmluZGluZz86IHN0cmluZztcblx0dGVtcGxhdGVFZGl0Pzogc3RyaW5nO1xufTtcblxuLy8gZW5kcmVnaW9uIGRlZmluaXRpb25zXG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29sbGVjdCBBbGwgSGVhZGVyIEZhY2V0czogQ3VzdG9tICh2aWEgTWFuaWZlc3QpIGFuZCBBbm5vdGF0aW9uIEJhc2VkICh2aWEgTWV0YW1vZGVsKVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbi8qKlxuICogUmV0cmlldmUgaGVhZGVyIGZhY2V0cyBmcm9tIGFubm90YXRpb25zLlxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHRcbiAqIEByZXR1cm5zIEhlYWRlciBmYWNldHMgZnJvbSBhbm5vdGF0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SGVhZGVyRmFjZXRzRnJvbUFubm90YXRpb25zKGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0Pik6IE9iamVjdFBhZ2VIZWFkZXJGYWNldFtdIHtcblx0Y29uc3QgaGVhZGVyRmFjZXRzOiBPYmplY3RQYWdlSGVhZGVyRmFjZXRbXSA9IFtdO1xuXHRjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKS5hbm5vdGF0aW9ucz8uVUk/LkhlYWRlckZhY2V0cz8uZm9yRWFjaCgoZmFjZXQpID0+IHtcblx0XHRjb25zdCBoZWFkZXJGYWNldDogT2JqZWN0UGFnZUhlYWRlckZhY2V0IHwgdW5kZWZpbmVkID0gY3JlYXRlSGVhZGVyRmFjZXQoZmFjZXQsIGNvbnZlcnRlckNvbnRleHQpO1xuXHRcdGlmIChoZWFkZXJGYWNldCkge1xuXHRcdFx0aGVhZGVyRmFjZXRzLnB1c2goaGVhZGVyRmFjZXQpO1xuXHRcdH1cblx0fSk7XG5cblx0cmV0dXJuIGhlYWRlckZhY2V0cztcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZSBjdXN0b20gaGVhZGVyIGZhY2V0cyBmcm9tIG1hbmlmZXN0LlxuICogQHBhcmFtIG1hbmlmZXN0Q3VzdG9tSGVhZGVyRmFjZXRzXG4gKiBAcmV0dXJucyBIZWFkZXJGYWNldHMgZnJvbSBtYW5pZmVzdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SGVhZGVyRmFjZXRzRnJvbU1hbmlmZXN0KFxuXHRtYW5pZmVzdEN1c3RvbUhlYWRlckZhY2V0czogQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0SGVhZGVyRmFjZXQ+XG4pOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21PYmplY3RQYWdlSGVhZGVyRmFjZXQ+IHtcblx0Y29uc3QgY3VzdG9tSGVhZGVyRmFjZXRzOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21PYmplY3RQYWdlSGVhZGVyRmFjZXQ+ID0ge307XG5cblx0T2JqZWN0LmtleXMobWFuaWZlc3RDdXN0b21IZWFkZXJGYWNldHMpLmZvckVhY2goKG1hbmlmZXN0SGVhZGVyRmFjZXRLZXkpID0+IHtcblx0XHRjb25zdCBjdXN0b21IZWFkZXJGYWNldDogTWFuaWZlc3RIZWFkZXJGYWNldCA9IG1hbmlmZXN0Q3VzdG9tSGVhZGVyRmFjZXRzW21hbmlmZXN0SGVhZGVyRmFjZXRLZXldO1xuXHRcdGN1c3RvbUhlYWRlckZhY2V0c1ttYW5pZmVzdEhlYWRlckZhY2V0S2V5XSA9IGNyZWF0ZUN1c3RvbUhlYWRlckZhY2V0KGN1c3RvbUhlYWRlckZhY2V0LCBtYW5pZmVzdEhlYWRlckZhY2V0S2V5KTtcblx0fSk7XG5cblx0cmV0dXJuIGN1c3RvbUhlYWRlckZhY2V0cztcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZSBzdGFzaGVkIHNldHRpbmdzIGZvciBoZWFkZXIgZmFjZXRzIGZyb20gbWFuaWZlc3QuXG4gKiBAcGFyYW0gZmFjZXREZWZpbml0aW9uXG4gKiBAcGFyYW0gY29sbGVjdGlvbkZhY2V0RGVmaW5pdGlvblxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHRcbiAqIEByZXR1cm5zIFN0YXNoZWQgc2V0dGluZyBmb3IgaGVhZGVyIGZhY2V0IG9yIGZhbHNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGFzaGVkU2V0dGluZ3NGb3JIZWFkZXJGYWNldChcblx0ZmFjZXREZWZpbml0aW9uOiBGYWNldFR5cGVzLFxuXHRjb2xsZWN0aW9uRmFjZXREZWZpbml0aW9uOiBGYWNldFR5cGVzLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD5cbik6IGJvb2xlYW4ge1xuXHQvLyBXaGVuIGEgSGVhZGVyRmFjZXQgaXMgbmVzdGVkIGluc2lkZSBhIENvbGxlY3Rpb25GYWNldCwgc3Rhc2hpbmcgaXMgbm90IHN1cHBvcnRlZFxuXHRpZiAoXG5cdFx0ZmFjZXREZWZpbml0aW9uLiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5SZWZlcmVuY2VGYWNldCAmJlxuXHRcdGNvbGxlY3Rpb25GYWNldERlZmluaXRpb24uJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkNvbGxlY3Rpb25GYWNldFxuXHQpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0Y29uc3QgaGVhZGVyRmFjZXRJRCA9IGNyZWF0ZUlkRm9yQW5ub3RhdGlvbihmYWNldERlZmluaXRpb24pID8/IFwiXCI7XG5cdGNvbnN0IGhlYWRlckZhY2V0c0NvbnRyb2xDb25maWcgPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpLmdldEhlYWRlckZhY2V0cygpO1xuXHRjb25zdCBzdGFzaGVkU2V0dGluZyA9IGhlYWRlckZhY2V0c0NvbnRyb2xDb25maWdbaGVhZGVyRmFjZXRJRF0/LnN0YXNoZWQ7XG5cdHJldHVybiBzdGFzaGVkU2V0dGluZyA9PT0gdHJ1ZTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZSBmbGV4aWJpbGl0eSBkZXNpZ250aW1lIHNldHRpbmdzIGZyb20gbWFuaWZlc3QuXG4gKiBAcGFyYW0gZmFjZXREZWZpbml0aW9uXG4gKiBAcGFyYW0gY29sbGVjdGlvbkZhY2V0RGVmaW5pdGlvblxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHRcbiAqIEByZXR1cm5zIERlc2lnbnRpbWUgc2V0dGluZyBvciBkZWZhdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZXNpZ25UaW1lTWV0YWRhdGFTZXR0aW5nc0ZvckhlYWRlckZhY2V0KFxuXHRmYWNldERlZmluaXRpb246IEZhY2V0VHlwZXMsXG5cdGNvbGxlY3Rpb25GYWNldERlZmluaXRpb246IEZhY2V0VHlwZXMsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0PlxuKTogRmxleERlc2lnblRpbWVUeXBlIHtcblx0bGV0IGRlc2lnblRpbWVNZXRhZGF0YTogRmxleERlc2lnblRpbWVUeXBlID0gRmxleERlc2lnblRpbWVUeXBlLkRlZmF1bHQ7XG5cdGNvbnN0IGhlYWRlckZhY2V0SUQgPSBjcmVhdGVJZEZvckFubm90YXRpb24oZmFjZXREZWZpbml0aW9uKTtcblxuXHQvLyBGb3IgSGVhZGVyRmFjZXRzIG5lc3RlZCBpbnNpZGUgQ29sbGVjdGlvbkZhY2V0IFJUQSBzaG91bGQgYmUgZGlzYWJsZWQsIHRoZXJlZm9yZSBzZXQgdG8gXCJub3QtYWRhcHRhYmxlLXRyZWVcIlxuXHRpZiAoXG5cdFx0ZmFjZXREZWZpbml0aW9uLiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5SZWZlcmVuY2VGYWNldCAmJlxuXHRcdGNvbGxlY3Rpb25GYWNldERlZmluaXRpb24uJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkNvbGxlY3Rpb25GYWNldFxuXHQpIHtcblx0XHRkZXNpZ25UaW1lTWV0YWRhdGEgPSBGbGV4RGVzaWduVGltZVR5cGUuTm90QWRhcHRhYmxlVHJlZTtcblx0fSBlbHNlIHtcblx0XHRjb25zdCBoZWFkZXJGYWNldHNDb250cm9sQ29uZmlnID0gY29udmVydGVyQ29udGV4dC5nZXRNYW5pZmVzdFdyYXBwZXIoKS5nZXRIZWFkZXJGYWNldHMoKTtcblx0XHRpZiAoaGVhZGVyRmFjZXRJRCkge1xuXHRcdFx0Y29uc3QgZGVzaWduVGltZSA9IGhlYWRlckZhY2V0c0NvbnRyb2xDb25maWdbaGVhZGVyRmFjZXRJRF0/LmZsZXhTZXR0aW5ncz8uZGVzaWdudGltZTtcblx0XHRcdHN3aXRjaCAoZGVzaWduVGltZSkge1xuXHRcdFx0XHRjYXNlIEZsZXhEZXNpZ25UaW1lVHlwZS5Ob3RBZGFwdGFibGU6XG5cdFx0XHRcdGNhc2UgRmxleERlc2lnblRpbWVUeXBlLk5vdEFkYXB0YWJsZVRyZWU6XG5cdFx0XHRcdGNhc2UgRmxleERlc2lnblRpbWVUeXBlLk5vdEFkYXB0YWJsZVZpc2liaWxpdHk6XG5cdFx0XHRcdFx0ZGVzaWduVGltZU1ldGFkYXRhID0gZGVzaWduVGltZTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cmV0dXJuIGRlc2lnblRpbWVNZXRhZGF0YTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb252ZXJ0ICYgQnVpbGQgQW5ub3RhdGlvbiBCYXNlZCBIZWFkZXIgRmFjZXRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbmZ1bmN0aW9uIGNyZWF0ZVJlZmVyZW5jZUhlYWRlckZhY2V0KFxuXHRmYWNldERlZmluaXRpb246IEZhY2V0VHlwZXMsXG5cdGNvbGxlY3Rpb25GYWNldERlZmluaXRpb246IEZhY2V0VHlwZXMsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0PlxuKTogUmVmZXJlbmNlRmFjZXQgfCB1bmRlZmluZWQge1xuXHRpZiAoZmFjZXREZWZpbml0aW9uLiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5SZWZlcmVuY2VGYWNldCAmJiBmYWNldERlZmluaXRpb24uYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4/LnZhbHVlT2YoKSAhPT0gdHJ1ZSkge1xuXHRcdGNvbnN0IGhlYWRlckZhY2V0SUQgPSBnZXRIZWFkZXJGYWNldElEKGZhY2V0RGVmaW5pdGlvbiksXG5cdFx0XHRnZXRIZWFkZXJGYWNldEtleSA9IChmYWNldERlZmluaXRpb25Ub0NoZWNrOiBGYWNldFR5cGVzLCBmYWxsYmFjazogc3RyaW5nKTogc3RyaW5nID0+IHtcblx0XHRcdFx0cmV0dXJuIGZhY2V0RGVmaW5pdGlvblRvQ2hlY2suSUQ/LnRvU3RyaW5nKCkgfHwgZmFjZXREZWZpbml0aW9uVG9DaGVjay5MYWJlbD8udG9TdHJpbmcoKSB8fCBmYWxsYmFjaztcblx0XHRcdH0sXG5cdFx0XHR0YXJnZXRBbm5vdGF0aW9uVmFsdWUgPSBmYWNldERlZmluaXRpb24uVGFyZ2V0LnZhbHVlLFxuXHRcdFx0dGFyZ2V0QW5ub3RhdGlvblR5cGUgPSBnZXRUYXJnZXRBbm5vdGF0aW9uVHlwZShmYWNldERlZmluaXRpb24pO1xuXG5cdFx0bGV0IGhlYWRlckZvcm1EYXRhOiBIZWFkZXJGb3JtRGF0YSB8IHVuZGVmaW5lZDtcblx0XHRsZXQgaGVhZGVyRGF0YVBvaW50RGF0YTogSGVhZGVyRGF0YVBvaW50RGF0YSB8IHVuZGVmaW5lZDtcblxuXHRcdHN3aXRjaCAodGFyZ2V0QW5ub3RhdGlvblR5cGUpIHtcblx0XHRcdGNhc2UgVGFyZ2V0QW5ub3RhdGlvblR5cGUuRmllbGRHcm91cDpcblx0XHRcdFx0aGVhZGVyRm9ybURhdGEgPSBnZXRGaWVsZEdyb3VwRm9ybURhdGEoZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgVGFyZ2V0QW5ub3RhdGlvblR5cGUuRGF0YVBvaW50OlxuXHRcdFx0XHRoZWFkZXJEYXRhUG9pbnREYXRhID0gZ2V0RGF0YVBvaW50RGF0YShmYWNldERlZmluaXRpb24sIGNvbnZlcnRlckNvbnRleHQpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdC8vIFRvRG86IEhhbmRsZSBvdGhlciBjYXNlc1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXG5cdFx0aWYgKGZhY2V0RGVmaW5pdGlvbi5UYXJnZXQ/LiR0YXJnZXQ/LnRlcm0gPT09IFVJQW5ub3RhdGlvblRlcm1zLkNoYXJ0ICYmIGlzQW5ub3RhdGlvbkZpZWxkU3RhdGljYWxseUhpZGRlbihmYWNldERlZmluaXRpb24pKSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHR0eXBlOiBIZWFkZXJGYWNldFR5cGUuQW5ub3RhdGlvbixcblx0XHRcdFx0ZmFjZXRUeXBlOiBGYWNldFR5cGUuUmVmZXJlbmNlLFxuXHRcdFx0XHRpZDogaGVhZGVyRmFjZXRJRCxcblx0XHRcdFx0Y29udGFpbmVySWQ6IGdldEhlYWRlckZhY2V0Q29udGFpbmVySUQoZmFjZXREZWZpbml0aW9uKSxcblx0XHRcdFx0a2V5OiBnZXRIZWFkZXJGYWNldEtleShmYWNldERlZmluaXRpb24sIGhlYWRlckZhY2V0SUQpLFxuXHRcdFx0XHRmbGV4U2V0dGluZ3M6IHtcblx0XHRcdFx0XHRkZXNpZ250aW1lOiBnZXREZXNpZ25UaW1lTWV0YWRhdGFTZXR0aW5nc0ZvckhlYWRlckZhY2V0KGZhY2V0RGVmaW5pdGlvbiwgY29sbGVjdGlvbkZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dClcblx0XHRcdFx0fSxcblx0XHRcdFx0c3Rhc2hlZDogZ2V0U3Rhc2hlZFNldHRpbmdzRm9ySGVhZGVyRmFjZXQoZmFjZXREZWZpbml0aW9uLCBjb2xsZWN0aW9uRmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHRcdFx0dmlzaWJsZTogY29tcGlsZUV4cHJlc3Npb24oaXNWaXNpYmxlKGZhY2V0RGVmaW5pdGlvbikpLFxuXHRcdFx0XHRhbm5vdGF0aW9uUGF0aDogYCR7Y29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoKGZhY2V0RGVmaW5pdGlvbi5mdWxseVF1YWxpZmllZE5hbWUpfS9gLFxuXHRcdFx0XHR0YXJnZXRBbm5vdGF0aW9uVmFsdWUsXG5cdFx0XHRcdHRhcmdldEFubm90YXRpb25UeXBlLFxuXHRcdFx0XHRoZWFkZXJGb3JtRGF0YSxcblx0XHRcdFx0aGVhZGVyRGF0YVBvaW50RGF0YVxuXHRcdFx0fTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVDb2xsZWN0aW9uSGVhZGVyRmFjZXQoXG5cdGNvbGxlY3Rpb25GYWNldERlZmluaXRpb246IEZhY2V0VHlwZXMsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0PlxuKTogQ29sbGVjdGlvbkZhY2V0IHwgdW5kZWZpbmVkIHtcblx0aWYgKGNvbGxlY3Rpb25GYWNldERlZmluaXRpb24uJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkNvbGxlY3Rpb25GYWNldCkge1xuXHRcdGNvbnN0IGZhY2V0czogUmVmZXJlbmNlRmFjZXRbXSA9IFtdLFxuXHRcdFx0aGVhZGVyRmFjZXRJRCA9IGdldEhlYWRlckZhY2V0SUQoY29sbGVjdGlvbkZhY2V0RGVmaW5pdGlvbiksXG5cdFx0XHRnZXRIZWFkZXJGYWNldEtleSA9IChmYWNldERlZmluaXRpb246IEZhY2V0VHlwZXMsIGZhbGxiYWNrOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuXHRcdFx0XHRyZXR1cm4gZmFjZXREZWZpbml0aW9uLklEPy50b1N0cmluZygpIHx8IGZhY2V0RGVmaW5pdGlvbi5MYWJlbD8udG9TdHJpbmcoKSB8fCBmYWxsYmFjaztcblx0XHRcdH07XG5cblx0XHRjb2xsZWN0aW9uRmFjZXREZWZpbml0aW9uLkZhY2V0cy5mb3JFYWNoKChmYWNldERlZmluaXRpb24pID0+IHtcblx0XHRcdGNvbnN0IGZhY2V0OiBSZWZlcmVuY2VGYWNldCB8IHVuZGVmaW5lZCA9IGNyZWF0ZVJlZmVyZW5jZUhlYWRlckZhY2V0KFxuXHRcdFx0XHRmYWNldERlZmluaXRpb24sXG5cdFx0XHRcdGNvbGxlY3Rpb25GYWNldERlZmluaXRpb24sXG5cdFx0XHRcdGNvbnZlcnRlckNvbnRleHRcblx0XHRcdCk7XG5cdFx0XHRpZiAoZmFjZXQpIHtcblx0XHRcdFx0ZmFjZXRzLnB1c2goZmFjZXQpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIHtcblx0XHRcdHR5cGU6IEhlYWRlckZhY2V0VHlwZS5Bbm5vdGF0aW9uLFxuXHRcdFx0ZmFjZXRUeXBlOiBGYWNldFR5cGUuQ29sbGVjdGlvbixcblx0XHRcdGlkOiBoZWFkZXJGYWNldElELFxuXHRcdFx0Y29udGFpbmVySWQ6IGdldEhlYWRlckZhY2V0Q29udGFpbmVySUQoY29sbGVjdGlvbkZhY2V0RGVmaW5pdGlvbiksXG5cdFx0XHRrZXk6IGdldEhlYWRlckZhY2V0S2V5KGNvbGxlY3Rpb25GYWNldERlZmluaXRpb24sIGhlYWRlckZhY2V0SUQpLFxuXHRcdFx0ZmxleFNldHRpbmdzOiB7XG5cdFx0XHRcdGRlc2lnbnRpbWU6IGdldERlc2lnblRpbWVNZXRhZGF0YVNldHRpbmdzRm9ySGVhZGVyRmFjZXQoXG5cdFx0XHRcdFx0Y29sbGVjdGlvbkZhY2V0RGVmaW5pdGlvbixcblx0XHRcdFx0XHRjb2xsZWN0aW9uRmFjZXREZWZpbml0aW9uLFxuXHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHRcblx0XHRcdFx0KVxuXHRcdFx0fSxcblx0XHRcdHN0YXNoZWQ6IGdldFN0YXNoZWRTZXR0aW5nc0ZvckhlYWRlckZhY2V0KGNvbGxlY3Rpb25GYWNldERlZmluaXRpb24sIGNvbGxlY3Rpb25GYWNldERlZmluaXRpb24sIGNvbnZlcnRlckNvbnRleHQpLFxuXHRcdFx0dmlzaWJsZTogY29tcGlsZUV4cHJlc3Npb24oaXNWaXNpYmxlKGNvbGxlY3Rpb25GYWNldERlZmluaXRpb24pKSxcblx0XHRcdGFubm90YXRpb25QYXRoOiBgJHtjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoY29sbGVjdGlvbkZhY2V0RGVmaW5pdGlvbi5mdWxseVF1YWxpZmllZE5hbWUpfS9gLFxuXHRcdFx0ZmFjZXRzXG5cdFx0fTtcblx0fVxuXG5cdHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGdldFRhcmdldEFubm90YXRpb25UeXBlKGZhY2V0RGVmaW5pdGlvbjogRmFjZXRUeXBlcyk6IFRhcmdldEFubm90YXRpb25UeXBlIHtcblx0bGV0IGFubm90YXRpb25UeXBlID0gVGFyZ2V0QW5ub3RhdGlvblR5cGUuTm9uZTtcblx0Y29uc3QgYW5ub3RhdGlvblR5cGVNYXA6IFJlY29yZDxzdHJpbmcsIFRhcmdldEFubm90YXRpb25UeXBlPiA9IHtcblx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFQb2ludFwiOiBUYXJnZXRBbm5vdGF0aW9uVHlwZS5EYXRhUG9pbnQsXG5cdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5DaGFydFwiOiBUYXJnZXRBbm5vdGF0aW9uVHlwZS5DaGFydCxcblx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLklkZW50aWZpY2F0aW9uXCI6IFRhcmdldEFubm90YXRpb25UeXBlLklkZW50aWZpY2F0aW9uLFxuXHRcdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbXVuaWNhdGlvbi52MS5Db250YWN0XCI6IFRhcmdldEFubm90YXRpb25UeXBlLkNvbnRhY3QsXG5cdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tdW5pY2F0aW9uLnYxLkFkZHJlc3NcIjogVGFyZ2V0QW5ub3RhdGlvblR5cGUuQWRkcmVzcyxcblx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkZpZWxkR3JvdXBcIjogVGFyZ2V0QW5ub3RhdGlvblR5cGUuRmllbGRHcm91cFxuXHR9O1xuXHQvLyBSZWZlcmVuY2VVUkxGYWNldCBhbmQgQ29sbGVjdGlvbkZhY2V0IGRvIG5vdCBoYXZlIFRhcmdldCBwcm9wZXJ0eS5cblx0aWYgKFxuXHRcdGZhY2V0RGVmaW5pdGlvbi4kVHlwZSAhPT0gVUlBbm5vdGF0aW9uVHlwZXMuUmVmZXJlbmNlVVJMRmFjZXQgJiZcblx0XHRmYWNldERlZmluaXRpb24uJFR5cGUgIT09IFVJQW5ub3RhdGlvblR5cGVzLkNvbGxlY3Rpb25GYWNldCAmJlxuXHRcdGZhY2V0RGVmaW5pdGlvbi5UYXJnZXQuJHRhcmdldFxuXHQpIHtcblx0XHRhbm5vdGF0aW9uVHlwZSA9IGFubm90YXRpb25UeXBlTWFwW2ZhY2V0RGVmaW5pdGlvbi5UYXJnZXQuJHRhcmdldC50ZXJtXSA/PyBUYXJnZXRBbm5vdGF0aW9uVHlwZS5Ob25lO1xuXHR9XG5cblx0cmV0dXJuIGFubm90YXRpb25UeXBlO1xufVxuXG5mdW5jdGlvbiBnZXRGaWVsZEdyb3VwRm9ybURhdGEoXG5cdGZhY2V0RGVmaW5pdGlvbjogUmVmZXJlbmNlRmFjZXRUeXBlcyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+XG4pOiBIZWFkZXJGb3JtRGF0YSB7XG5cdC8vIHNwbGl0IGluIHRoaXMgZnJvbSBhbm5vdGF0aW9uICsgZ2V0RmllbGRHcm91cEZyb21EZWZhdWx0XG5cdGlmICghZmFjZXREZWZpbml0aW9uKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGdldCBGaWVsZEdyb3VwIGZvcm0gZGF0YSB3aXRob3V0IGZhY2V0IGRlZmluaXRpb25cIik7XG5cdH1cblxuXHRjb25zdCBmb3JtRWxlbWVudHMgPSBpbnNlcnRDdXN0b21FbGVtZW50cyhcblx0XHRnZXRGb3JtRWxlbWVudHNGcm9tQW5ub3RhdGlvbnMoZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHRnZXRGb3JtRWxlbWVudHNGcm9tTWFuaWZlc3QoZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KVxuXHQpO1xuXG5cdHJldHVybiB7XG5cdFx0aWQ6IGdldEhlYWRlckZhY2V0Rm9ybUlEKGZhY2V0RGVmaW5pdGlvbiksXG5cdFx0bGFiZWw6IGZhY2V0RGVmaW5pdGlvbi5MYWJlbD8udG9TdHJpbmcoKSxcblx0XHRmb3JtRWxlbWVudHNcblx0fTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIG1hbmlmZXN0LWJhc2VkIEZvcm1FbGVtZW50cy5cbiAqIEBwYXJhbSBmYWNldERlZmluaXRpb24gVGhlIGRlZmluaXRpb24gb2YgdGhlIGZhY2V0XG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHQgZm9yIHRoZSBmYWNldFxuICogQHJldHVybnMgQW5ub3RhdGlvbi1iYXNlZCBGb3JtRWxlbWVudHNcbiAqL1xuZnVuY3Rpb24gZ2V0Rm9ybUVsZW1lbnRzRnJvbUFubm90YXRpb25zKFxuXHRmYWNldERlZmluaXRpb246IEZhY2V0VHlwZXMsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0PlxuKTogQW5ub3RhdGlvbkZvcm1FbGVtZW50W10ge1xuXHRjb25zdCBhbm5vdGF0aW9uQmFzZWRGb3JtRWxlbWVudHM6IEFubm90YXRpb25Gb3JtRWxlbWVudFtdID0gW107XG5cblx0Ly8gUmVmZXJlbmNlVVJMRmFjZXQgYW5kIENvbGxlY3Rpb25GYWNldCBkbyBub3QgaGF2ZSBUYXJnZXQgcHJvcGVydHkuXG5cdGlmIChmYWNldERlZmluaXRpb24uJFR5cGUgIT09IFVJQW5ub3RhdGlvblR5cGVzLlJlZmVyZW5jZVVSTEZhY2V0ICYmIGZhY2V0RGVmaW5pdGlvbi4kVHlwZSAhPT0gVUlBbm5vdGF0aW9uVHlwZXMuQ29sbGVjdGlvbkZhY2V0KSB7XG5cdFx0Y29uc3QgcmVzb2x2ZWRUYXJnZXQgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGVBbm5vdGF0aW9uKGZhY2V0RGVmaW5pdGlvbi5UYXJnZXQudmFsdWUpO1xuXHRcdGNvbnZlcnRlckNvbnRleHQgPSByZXNvbHZlZFRhcmdldC5jb252ZXJ0ZXJDb250ZXh0O1xuXHRcdChmYWNldERlZmluaXRpb24uVGFyZ2V0Py4kdGFyZ2V0IGFzIEZpZWxkR3JvdXApPy5EYXRhLmZvckVhY2goKGRhdGFGaWVsZDogRGF0YUZpZWxkQWJzdHJhY3RUeXBlcykgPT4ge1xuXHRcdFx0aWYgKGRhdGFGaWVsZC5hbm5vdGF0aW9ucz8uVUk/LkhpZGRlbj8udmFsdWVPZigpICE9PSB0cnVlKSB7XG5cdFx0XHRcdGNvbnN0IHNlbWFudGljT2JqZWN0QW5ub3RhdGlvblBhdGggPSBnZXRTZW1hbnRpY09iamVjdFBhdGgoY29udmVydGVyQ29udGV4dCwgZGF0YUZpZWxkKTtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdChkYXRhRmllbGQuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZCB8fFxuXHRcdFx0XHRcdFx0ZGF0YUZpZWxkLiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoVXJsIHx8XG5cdFx0XHRcdFx0XHRkYXRhRmllbGQuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aCB8fFxuXHRcdFx0XHRcdFx0ZGF0YUZpZWxkLiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoSW50ZW50QmFzZWROYXZpZ2F0aW9uIHx8XG5cdFx0XHRcdFx0XHRkYXRhRmllbGQuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhBY3Rpb24pICYmXG5cdFx0XHRcdFx0IWlzUmVmZXJlbmNlUHJvcGVydHlTdGF0aWNhbGx5SGlkZGVuKGRhdGFGaWVsZClcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0YW5ub3RhdGlvbkJhc2VkRm9ybUVsZW1lbnRzLnB1c2goe1xuXHRcdFx0XHRcdFx0aXNWYWx1ZU11bHRpbGluZVRleHQ6IGlzTXVsdGlMaW5lVGV4dChkYXRhRmllbGQuVmFsdWU/LiR0YXJnZXQpLFxuXHRcdFx0XHRcdFx0dHlwZTogRm9ybUVsZW1lbnRUeXBlLkFubm90YXRpb24sXG5cdFx0XHRcdFx0XHRrZXk6IEtleUhlbHBlci5nZW5lcmF0ZUtleUZyb21EYXRhRmllbGQoZGF0YUZpZWxkKSxcblx0XHRcdFx0XHRcdHZpc2libGU6IGNvbXBpbGVFeHByZXNzaW9uKGlzVmlzaWJsZShkYXRhRmllbGQpKSxcblx0XHRcdFx0XHRcdGxhYmVsOiBkYXRhRmllbGQuVmFsdWU/LiR0YXJnZXQ/LmFubm90YXRpb25zPy5Db21tb24/LkxhYmVsIHx8IGRhdGFGaWVsZC5MYWJlbCxcblx0XHRcdFx0XHRcdGlkUHJlZml4OiBnZXRIZWFkZXJGYWNldEZvcm1JRChmYWNldERlZmluaXRpb24sIGRhdGFGaWVsZCksXG5cdFx0XHRcdFx0XHRhbm5vdGF0aW9uUGF0aDogYCR7Y29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoKGRhdGFGaWVsZC5mdWxseVF1YWxpZmllZE5hbWUpfS9gLFxuXHRcdFx0XHRcdFx0c2VtYW50aWNPYmplY3RQYXRoOiBzZW1hbnRpY09iamVjdEFubm90YXRpb25QYXRoXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdFx0ZGF0YUZpZWxkLiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JBbm5vdGF0aW9uICYmXG5cdFx0XHRcdFx0IWlzUmVmZXJlbmNlUHJvcGVydHlTdGF0aWNhbGx5SGlkZGVuKGRhdGFGaWVsZClcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0YW5ub3RhdGlvbkJhc2VkRm9ybUVsZW1lbnRzLnB1c2goe1xuXHRcdFx0XHRcdFx0aXNWYWx1ZU11bHRpbGluZVRleHQ6IGZhbHNlLCAvLyB3YXMgZGF0YUZpZWxkLlRhcmdldD8uJHRhcmdldD8uYW5ub3RhdGlvbnM/LlVJPy5NdWx0aUxpbmVUZXh0Py52YWx1ZU9mKCkgPT09IHRydWUgYnV0IHRoYXQgZG9lc24ndCBtYWtlIHNlbnNlIGFzIHRoZSB0YXJnZXQgY2Fubm90IGhhdmUgdGhhdCBhbm5vdGF0aW9uXG5cdFx0XHRcdFx0XHR0eXBlOiBGb3JtRWxlbWVudFR5cGUuQW5ub3RhdGlvbixcblx0XHRcdFx0XHRcdGtleTogS2V5SGVscGVyLmdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZChkYXRhRmllbGQpLFxuXHRcdFx0XHRcdFx0dmlzaWJsZTogY29tcGlsZUV4cHJlc3Npb24oaXNWaXNpYmxlKGRhdGFGaWVsZCkpLFxuXHRcdFx0XHRcdFx0bGFiZWw6IGRhdGFGaWVsZC5UYXJnZXQ/LiR0YXJnZXQ/LmFubm90YXRpb25zPy5Db21tb24/LkxhYmVsPy50b1N0cmluZygpIHx8IGRhdGFGaWVsZC5MYWJlbD8udG9TdHJpbmcoKSxcblx0XHRcdFx0XHRcdGlkUHJlZml4OiBnZXRIZWFkZXJGYWNldEZvcm1JRChmYWNldERlZmluaXRpb24sIGRhdGFGaWVsZCksXG5cdFx0XHRcdFx0XHRhbm5vdGF0aW9uUGF0aDogYCR7Y29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoKGRhdGFGaWVsZC5mdWxseVF1YWxpZmllZE5hbWUpfS9gLFxuXHRcdFx0XHRcdFx0c2VtYW50aWNPYmplY3RQYXRoOiBzZW1hbnRpY09iamVjdEFubm90YXRpb25QYXRoXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdHJldHVybiBhbm5vdGF0aW9uQmFzZWRGb3JtRWxlbWVudHM7XG59XG5cbmZ1bmN0aW9uIGdldERhdGFQb2ludERhdGEoZmFjZXREZWZpbml0aW9uOiBGYWNldFR5cGVzLCBjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD4pOiBIZWFkZXJEYXRhUG9pbnREYXRhIHtcblx0bGV0IHR5cGUgPSBIZWFkZXJEYXRhUG9pbnRUeXBlLkNvbnRlbnQ7XG5cdGxldCBzZW1hbnRpY09iamVjdFBhdGg7XG5cdGlmIChmYWNldERlZmluaXRpb24uJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLlJlZmVyZW5jZUZhY2V0ICYmICFpc0Fubm90YXRpb25GaWVsZFN0YXRpY2FsbHlIaWRkZW4oZmFjZXREZWZpbml0aW9uKSkge1xuXHRcdGlmICgoZmFjZXREZWZpbml0aW9uLlRhcmdldD8uJHRhcmdldCBhcyBEYXRhUG9pbnQpPy5WaXN1YWxpemF0aW9uID09PSBcIlVJLlZpc3VhbGl6YXRpb25UeXBlL1Byb2dyZXNzXCIpIHtcblx0XHRcdHR5cGUgPSBIZWFkZXJEYXRhUG9pbnRUeXBlLlByb2dyZXNzSW5kaWNhdG9yO1xuXHRcdH0gZWxzZSBpZiAoKGZhY2V0RGVmaW5pdGlvbi5UYXJnZXQ/LiR0YXJnZXQgYXMgRGF0YVBvaW50KT8uVmlzdWFsaXphdGlvbiA9PT0gXCJVSS5WaXN1YWxpemF0aW9uVHlwZS9SYXRpbmdcIikge1xuXHRcdFx0dHlwZSA9IEhlYWRlckRhdGFQb2ludFR5cGUuUmF0aW5nSW5kaWNhdG9yO1xuXHRcdH1cblx0XHRjb25zdCBkYXRhUG9pbnQgPSBmYWNldERlZmluaXRpb24uVGFyZ2V0Py4kdGFyZ2V0IGFzIERhdGFQb2ludDtcblxuXHRcdGlmICh0eXBlb2YgZGF0YVBvaW50ID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRpZiAoZGF0YVBvaW50Py5WYWx1ZT8uJHRhcmdldCkge1xuXHRcdFx0XHRjb25zdCBwcm9wZXJ0eSA9IGRhdGFQb2ludC5WYWx1ZS4kdGFyZ2V0O1xuXHRcdFx0XHRpZiAocHJvcGVydHk/LmFubm90YXRpb25zPy5Db21tb24/LlNlbWFudGljT2JqZWN0ICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRzZW1hbnRpY09iamVjdFBhdGggPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgocHJvcGVydHk/LmZ1bGx5UXVhbGlmaWVkTmFtZSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4geyB0eXBlLCBzZW1hbnRpY09iamVjdFBhdGggfTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFubm90YXRpb24tYmFzZWQgaGVhZGVyIGZhY2V0LlxuICogQHBhcmFtIGZhY2V0RGVmaW5pdGlvbiBUaGUgZGVmaW5pdGlvbiBvZiB0aGUgZmFjZXRcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0IFRoZSBjb252ZXJ0ZXIgY29udGV4dFxuICogQHJldHVybnMgVGhlIGNyZWF0ZWQgYW5ub3RhdGlvbi1iYXNlZCBoZWFkZXIgZmFjZXRcbiAqL1xuZnVuY3Rpb24gY3JlYXRlSGVhZGVyRmFjZXQoXG5cdGZhY2V0RGVmaW5pdGlvbjogRmFjZXRUeXBlcyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+XG4pOiBPYmplY3RQYWdlSGVhZGVyRmFjZXQgfCB1bmRlZmluZWQge1xuXHRsZXQgaGVhZGVyRmFjZXQ6IE9iamVjdFBhZ2VIZWFkZXJGYWNldCB8IHVuZGVmaW5lZDtcblx0c3dpdGNoIChmYWNldERlZmluaXRpb24uJFR5cGUpIHtcblx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLlJlZmVyZW5jZUZhY2V0OlxuXHRcdFx0aGVhZGVyRmFjZXQgPSBjcmVhdGVSZWZlcmVuY2VIZWFkZXJGYWNldChmYWNldERlZmluaXRpb24sIGZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dCk7XG5cdFx0XHRicmVhaztcblxuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuQ29sbGVjdGlvbkZhY2V0OlxuXHRcdFx0aGVhZGVyRmFjZXQgPSBjcmVhdGVDb2xsZWN0aW9uSGVhZGVyRmFjZXQoZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KTtcblx0XHRcdGJyZWFrO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRicmVhaztcblx0fVxuXG5cdHJldHVybiBoZWFkZXJGYWNldDtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb252ZXJ0ICYgQnVpbGQgTWFuaWZlc3QgQmFzZWQgSGVhZGVyIEZhY2V0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbmZ1bmN0aW9uIGdlbmVyYXRlQmluZGluZyhyZXF1ZXN0R3JvdXBJZD86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGlmICghcmVxdWVzdEdyb3VwSWQpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdGNvbnN0IGdyb3VwSWQgPSBbXCJIZXJvZXNcIiwgXCJEZWNvcmF0aW9uXCIsIFwiV29ya2Vyc1wiLCBcIkxvbmdSdW5uZXJzXCJdLmluY2x1ZGVzKHJlcXVlc3RHcm91cElkKVxuXHRcdD8gYCRhdXRvLiR7cmVxdWVzdEdyb3VwSWR9YFxuXHRcdDogcmVxdWVzdEdyb3VwSWQ7XG5cblx0cmV0dXJuIGB7IHBhdGggOiAnJywgcGFyYW1ldGVycyA6IHsgJCRncm91cElkIDogJyR7Z3JvdXBJZH0nIH0gfWA7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgbWFuaWZlc3QgYmFzZWQgY3VzdG9tIGhlYWRlciBmYWNldC5cbiAqIEBwYXJhbSBjdXN0b21IZWFkZXJGYWNldERlZmluaXRpb25cbiAqIEBwYXJhbSBoZWFkZXJGYWNldEtleVxuICogQHJldHVybnMgVGhlIG1hbmlmZXN0IGJhc2VkIGN1c3RvbSBoZWFkZXIgZmFjZXQgY3JlYXRlZFxuICovXG5mdW5jdGlvbiBjcmVhdGVDdXN0b21IZWFkZXJGYWNldChjdXN0b21IZWFkZXJGYWNldERlZmluaXRpb246IE1hbmlmZXN0SGVhZGVyRmFjZXQsIGhlYWRlckZhY2V0S2V5OiBzdHJpbmcpOiBDdXN0b21PYmplY3RQYWdlSGVhZGVyRmFjZXQge1xuXHRjb25zdCBjdXN0b21IZWFkZXJGYWNldElEID0gZ2V0Q3VzdG9tSGVhZGVyRmFjZXRJRChoZWFkZXJGYWNldEtleSk7XG5cblx0bGV0IHBvc2l0aW9uOiBQb3NpdGlvbiB8IHVuZGVmaW5lZCA9IGN1c3RvbUhlYWRlckZhY2V0RGVmaW5pdGlvbi5wb3NpdGlvbjtcblx0aWYgKCFwb3NpdGlvbikge1xuXHRcdHBvc2l0aW9uID0ge1xuXHRcdFx0cGxhY2VtZW50OiBQbGFjZW1lbnQuQWZ0ZXJcblx0XHR9O1xuXHR9XG5cdC8vIFRPRE8gZm9yIGFuIG5vbiBhbm5vdGF0aW9uIGZyYWdtZW50IHRoZSBuYW1lIGlzIG1hbmRhdG9yeSAtPiBOb3QgY2hlY2tlZFxuXHRyZXR1cm4ge1xuXHRcdGZhY2V0VHlwZTogRmFjZXRUeXBlLlJlZmVyZW5jZSxcblx0XHR0eXBlOiBjdXN0b21IZWFkZXJGYWNldERlZmluaXRpb24udHlwZSxcblx0XHRpZDogY3VzdG9tSGVhZGVyRmFjZXRJRCxcblx0XHRjb250YWluZXJJZDogY3VzdG9tSGVhZGVyRmFjZXRJRCxcblx0XHRrZXk6IGhlYWRlckZhY2V0S2V5LFxuXHRcdHBvc2l0aW9uOiBwb3NpdGlvbixcblx0XHR2aXNpYmxlOiBjdXN0b21IZWFkZXJGYWNldERlZmluaXRpb24udmlzaWJsZSxcblx0XHRmcmFnbWVudE5hbWU6IGN1c3RvbUhlYWRlckZhY2V0RGVmaW5pdGlvbi50ZW1wbGF0ZSB8fCBjdXN0b21IZWFkZXJGYWNldERlZmluaXRpb24ubmFtZSxcblx0XHR0aXRsZTogY3VzdG9tSGVhZGVyRmFjZXREZWZpbml0aW9uLnRpdGxlLFxuXHRcdHN1YlRpdGxlOiBjdXN0b21IZWFkZXJGYWNldERlZmluaXRpb24uc3ViVGl0bGUsXG5cdFx0c3Rhc2hlZDogY3VzdG9tSGVhZGVyRmFjZXREZWZpbml0aW9uLnN0YXNoZWQgfHwgZmFsc2UsXG5cdFx0ZmxleFNldHRpbmdzOiB7IC4uLnsgZGVzaWdudGltZTogRmxleERlc2lnblRpbWVUeXBlLkRlZmF1bHQgfSwgLi4uY3VzdG9tSGVhZGVyRmFjZXREZWZpbml0aW9uLmZsZXhTZXR0aW5ncyB9LFxuXHRcdGJpbmRpbmc6IGdlbmVyYXRlQmluZGluZyhjdXN0b21IZWFkZXJGYWNldERlZmluaXRpb24ucmVxdWVzdEdyb3VwSWQpLFxuXHRcdHRlbXBsYXRlRWRpdDogY3VzdG9tSGVhZGVyRmFjZXREZWZpbml0aW9uLnRlbXBsYXRlRWRpdFxuXHR9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUE2QkE7RUFDQTtFQUNBO0VBQ0E7RUFBQSxJQUVZQSxlQUFlO0VBQUEsV0FBZkEsZUFBZTtJQUFmQSxlQUFlO0lBQWZBLGVBQWU7RUFBQSxHQUFmQSxlQUFlLEtBQWZBLGVBQWU7RUFBQUMsUUFBQSxDQUFBRCxlQUFBLEdBQUFBLGVBQUE7RUFBQSxJQUtmRSxTQUFTO0VBQUEsV0FBVEEsU0FBUztJQUFUQSxTQUFTO0lBQVRBLFNBQVM7RUFBQSxHQUFUQSxTQUFTLEtBQVRBLFNBQVM7RUFBQUQsUUFBQSxDQUFBQyxTQUFBLEdBQUFBLFNBQUE7RUFBQSxJQUtUQyxrQkFBa0I7RUFBQSxXQUFsQkEsa0JBQWtCO0lBQWxCQSxrQkFBa0I7SUFBbEJBLGtCQUFrQjtJQUFsQkEsa0JBQWtCO0lBQWxCQSxrQkFBa0I7RUFBQSxHQUFsQkEsa0JBQWtCLEtBQWxCQSxrQkFBa0I7RUFBQUYsUUFBQSxDQUFBRSxrQkFBQSxHQUFBQSxrQkFBQTtFQUFBLElBaUJ6QkMsbUJBQW1CO0VBQUEsV0FBbkJBLG1CQUFtQjtJQUFuQkEsbUJBQW1CO0lBQW5CQSxtQkFBbUI7SUFBbkJBLG1CQUFtQjtFQUFBLEdBQW5CQSxtQkFBbUIsS0FBbkJBLG1CQUFt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
@@ -130,7 +130,6 @@ export type CustomObjectPageHeaderFacet = CustomElement<ObjectPageHeaderFacet> &
130
130
 
131
131
  /**
132
132
  * Retrieve header facets from annotations.
133
- *
134
133
  * @param converterContext
135
134
  * @returns Header facets from annotations
136
135
  */
@@ -148,7 +147,6 @@ export function getHeaderFacetsFromAnnotations(converterContext: ConverterContex
148
147
 
149
148
  /**
150
149
  * Retrieve custom header facets from manifest.
151
- *
152
150
  * @param manifestCustomHeaderFacets
153
151
  * @returns HeaderFacets from manifest
154
152
  */
@@ -167,7 +165,6 @@ export function getHeaderFacetsFromManifest(
167
165
 
168
166
  /**
169
167
  * Retrieve stashed settings for header facets from manifest.
170
- *
171
168
  * @param facetDefinition
172
169
  * @param collectionFacetDefinition
173
170
  * @param converterContext
@@ -193,7 +190,6 @@ export function getStashedSettingsForHeaderFacet(
193
190
 
194
191
  /**
195
192
  * Retrieve flexibility designtime settings from manifest.
196
- *
197
193
  * @param facetDefinition
198
194
  * @param collectionFacetDefinition
199
195
  * @param converterContext
@@ -379,7 +375,6 @@ function getFieldGroupFormData(
379
375
 
380
376
  /**
381
377
  * Creates an array of manifest-based FormElements.
382
- *
383
378
  * @param facetDefinition The definition of the facet
384
379
  * @param converterContext The converter context for the facet
385
380
  * @returns Annotation-based FormElements
@@ -392,6 +387,8 @@ function getFormElementsFromAnnotations(
392
387
 
393
388
  // ReferenceURLFacet and CollectionFacet do not have Target property.
394
389
  if (facetDefinition.$Type !== UIAnnotationTypes.ReferenceURLFacet && facetDefinition.$Type !== UIAnnotationTypes.CollectionFacet) {
390
+ const resolvedTarget = converterContext.getEntityTypeAnnotation(facetDefinition.Target.value);
391
+ converterContext = resolvedTarget.converterContext;
395
392
  (facetDefinition.Target?.$target as FieldGroup)?.Data.forEach((dataField: DataFieldAbstractTypes) => {
396
393
  if (dataField.annotations?.UI?.Hidden?.valueOf() !== true) {
397
394
  const semanticObjectAnnotationPath = getSemanticObjectPath(converterContext, dataField);
@@ -461,7 +458,6 @@ function getDataPointData(facetDefinition: FacetTypes, converterContext: Convert
461
458
 
462
459
  /**
463
460
  * Creates an annotation-based header facet.
464
- *
465
461
  * @param facetDefinition The definition of the facet
466
462
  * @param converterContext The converter context
467
463
  * @returns The created annotation-based header facet
@@ -503,7 +499,6 @@ function generateBinding(requestGroupId?: string): string | undefined {
503
499
 
504
500
  /**
505
501
  * Create a manifest based custom header facet.
506
- *
507
502
  * @param customHeaderFacetDefinition
508
503
  * @param headerFacetKey
509
504
  * @returns The manifest based custom header facet created