@sapui5/sap.fe.core 1.102.0 → 1.103.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 (311) hide show
  1. package/package.json +5 -5
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AppComponent.js +62 -26
  4. package/src/sap/fe/core/AppComponent.ts +56 -40
  5. package/src/sap/fe/core/AppStateHandler.js +10 -10
  6. package/src/sap/fe/core/AppStateHandler.ts +9 -9
  7. package/src/sap/fe/core/BaseController.js +11 -9
  8. package/src/sap/fe/core/BaseController.ts +15 -13
  9. package/src/sap/fe/core/CommonUtils.js +236 -109
  10. package/src/sap/fe/core/CommonUtils.ts +252 -136
  11. package/src/sap/fe/core/ExtensionAPI.js +24 -27
  12. package/src/sap/fe/core/ExtensionAPI.ts +36 -38
  13. package/src/sap/fe/core/PageController.js +4 -4
  14. package/src/sap/fe/core/PageController.ts +4 -5
  15. package/src/sap/fe/core/TemplateComponent.js +1 -1
  16. package/src/sap/fe/core/TemplateComponent.ts +6 -6
  17. package/src/sap/fe/core/TemplateModel.js +1 -1
  18. package/src/sap/fe/core/TemplateModel.ts +1 -1
  19. package/src/sap/fe/core/buildingBlocks/AttributeModel.js +1 -1
  20. package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +1 -1
  21. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +8 -8
  22. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +11 -10
  23. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +27 -27
  24. package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +28 -26
  25. package/src/sap/fe/core/controllerextensions/EditFlow.js +129 -118
  26. package/src/sap/fe/core/controllerextensions/EditFlow.ts +154 -141
  27. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +9 -9
  28. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +10 -10
  29. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +31 -26
  30. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +34 -35
  31. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +70 -70
  32. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +77 -77
  33. package/src/sap/fe/core/controllerextensions/InternalRouting.js +84 -78
  34. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +105 -101
  35. package/src/sap/fe/core/controllerextensions/KPIManagement.js +66 -68
  36. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +106 -123
  37. package/src/sap/fe/core/controllerextensions/MassEdit.js +8 -8
  38. package/src/sap/fe/core/controllerextensions/MassEdit.ts +19 -26
  39. package/src/sap/fe/core/controllerextensions/MessageHandler.js +20 -12
  40. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +29 -14
  41. package/src/sap/fe/core/controllerextensions/PageReady.js +97 -25
  42. package/src/sap/fe/core/controllerextensions/PageReady.ts +94 -34
  43. package/src/sap/fe/core/controllerextensions/Paginator.js +21 -22
  44. package/src/sap/fe/core/controllerextensions/Paginator.ts +24 -25
  45. package/src/sap/fe/core/controllerextensions/Placeholder.js +4 -6
  46. package/src/sap/fe/core/controllerextensions/Placeholder.ts +12 -14
  47. package/src/sap/fe/core/controllerextensions/Routing.js +10 -11
  48. package/src/sap/fe/core/controllerextensions/Routing.ts +12 -13
  49. package/src/sap/fe/core/controllerextensions/Share.js +22 -22
  50. package/src/sap/fe/core/controllerextensions/Share.ts +30 -29
  51. package/src/sap/fe/core/controllerextensions/SideEffects.js +46 -50
  52. package/src/sap/fe/core/controllerextensions/SideEffects.ts +56 -60
  53. package/src/sap/fe/core/controllerextensions/ViewState.js +65 -62
  54. package/src/sap/fe/core/controllerextensions/ViewState.ts +68 -63
  55. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +5 -5
  56. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +8 -7
  57. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +6 -6
  58. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +12 -17
  59. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +2 -2
  60. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +4 -4
  61. package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +7 -9
  62. package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +18 -19
  63. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +184 -137
  64. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +253 -206
  65. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +113 -121
  66. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +148 -158
  67. package/src/sap/fe/core/controllerextensions/editFlow/operations.js +198 -148
  68. package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +223 -159
  69. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +24 -26
  70. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +35 -33
  71. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +78 -44
  72. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +90 -60
  73. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +52 -55
  74. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +55 -58
  75. package/src/sap/fe/core/controls/Any.js +9 -5
  76. package/src/sap/fe/core/controls/Any.ts +10 -4
  77. package/src/sap/fe/core/controls/CommandExecution.js +11 -25
  78. package/src/sap/fe/core/controls/CommandExecution.ts +11 -25
  79. package/src/sap/fe/core/controls/ConditionalWrapper.js +2 -2
  80. package/src/sap/fe/core/controls/ConditionalWrapper.ts +3 -3
  81. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +22 -22
  82. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +25 -24
  83. package/src/sap/fe/core/controls/CustomQuickViewPage.js +2 -2
  84. package/src/sap/fe/core/controls/CustomQuickViewPage.ts +2 -2
  85. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +3 -3
  86. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +5 -5
  87. package/src/sap/fe/core/controls/FieldWrapper.js +2 -2
  88. package/src/sap/fe/core/controls/FieldWrapper.ts +3 -3
  89. package/src/sap/fe/core/controls/FileWrapper.js +2 -2
  90. package/src/sap/fe/core/controls/FileWrapper.ts +11 -11
  91. package/src/sap/fe/core/controls/FilterBar.js +6 -2
  92. package/src/sap/fe/core/controls/FilterBar.ts +13 -9
  93. package/src/sap/fe/core/controls/FormElementWrapper.js +1 -1
  94. package/src/sap/fe/core/controls/FormElementWrapper.ts +2 -2
  95. package/src/sap/fe/core/controls/MassEditSelect.js +1 -1
  96. package/src/sap/fe/core/controls/MassEditSelect.ts +0 -4
  97. package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +3 -3
  98. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +16 -12
  99. package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +20 -22
  100. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +3 -3
  101. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +8 -8
  102. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +47 -47
  103. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +52 -52
  104. package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +8 -2
  105. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +89 -88
  106. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +107 -106
  107. package/src/sap/fe/core/converters/ConverterContext.js +26 -33
  108. package/src/sap/fe/core/converters/ConverterContext.ts +51 -60
  109. package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  110. package/src/sap/fe/core/converters/ManifestSettings.ts +14 -14
  111. package/src/sap/fe/core/converters/ManifestWrapper.js +59 -45
  112. package/src/sap/fe/core/converters/ManifestWrapper.ts +55 -45
  113. package/src/sap/fe/core/converters/MetaModelConverter.js +50 -32
  114. package/src/sap/fe/core/converters/MetaModelConverter.ts +145 -127
  115. package/src/sap/fe/core/converters/TemplateConverter.js +21 -20
  116. package/src/sap/fe/core/converters/TemplateConverter.ts +27 -24
  117. package/src/sap/fe/core/converters/annotations/DataField.js +54 -34
  118. package/src/sap/fe/core/converters/annotations/DataField.ts +97 -75
  119. package/src/sap/fe/core/converters/common/AnnotationConverter.js +1911 -1495
  120. package/src/sap/fe/core/converters/controls/Common/Action.js +50 -41
  121. package/src/sap/fe/core/converters/controls/Common/Action.ts +56 -46
  122. package/src/sap/fe/core/converters/controls/Common/Chart.js +14 -14
  123. package/src/sap/fe/core/converters/controls/Common/Chart.ts +23 -26
  124. package/src/sap/fe/core/converters/controls/Common/Criticality.js +3 -3
  125. package/src/sap/fe/core/converters/controls/Common/Criticality.ts +4 -4
  126. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +28 -28
  127. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +40 -36
  128. package/src/sap/fe/core/converters/controls/Common/Form.js +25 -27
  129. package/src/sap/fe/core/converters/controls/Common/Form.ts +37 -45
  130. package/src/sap/fe/core/converters/controls/Common/KPI.js +11 -11
  131. package/src/sap/fe/core/converters/controls/Common/KPI.ts +35 -39
  132. package/src/sap/fe/core/converters/controls/Common/Table.js +174 -183
  133. package/src/sap/fe/core/converters/controls/Common/Table.ts +237 -250
  134. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +119 -119
  135. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +144 -141
  136. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +45 -41
  137. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +64 -57
  138. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +28 -26
  139. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +46 -43
  140. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +9 -9
  141. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +14 -13
  142. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +67 -64
  143. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +69 -66
  144. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +73 -72
  145. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +98 -96
  146. package/src/sap/fe/core/converters/helpers/Aggregation.js +2 -4
  147. package/src/sap/fe/core/converters/helpers/Aggregation.ts +10 -13
  148. package/src/sap/fe/core/converters/helpers/BindingHelper.js +31 -31
  149. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +30 -29
  150. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +4 -4
  151. package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +9 -9
  152. package/src/sap/fe/core/converters/helpers/ID.js +46 -46
  153. package/src/sap/fe/core/converters/helpers/ID.ts +25 -25
  154. package/src/sap/fe/core/converters/helpers/Key.js +7 -7
  155. package/src/sap/fe/core/converters/helpers/Key.ts +7 -7
  156. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
  157. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +4 -4
  158. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +6 -6
  159. package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +10 -10
  160. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +46 -62
  161. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +54 -82
  162. package/src/sap/fe/core/converters/templates/ListReportConverter.js +30 -29
  163. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +40 -40
  164. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +39 -38
  165. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +52 -61
  166. package/src/sap/fe/core/designtime/AppComponent.designtime.js +4 -4
  167. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +4 -4
  168. package/src/sap/fe/core/formatters/CollaborationFormatter.js +2 -2
  169. package/src/sap/fe/core/formatters/CollaborationFormatter.ts +3 -3
  170. package/src/sap/fe/core/formatters/FPMFormatter.js +5 -5
  171. package/src/sap/fe/core/formatters/FPMFormatter.ts +10 -10
  172. package/src/sap/fe/core/formatters/KPIFormatter.js +7 -7
  173. package/src/sap/fe/core/formatters/KPIFormatter.ts +10 -10
  174. package/src/sap/fe/core/formatters/StandardFormatter.js +89 -0
  175. package/src/sap/fe/core/formatters/StandardFormatter.ts +64 -0
  176. package/src/sap/fe/core/formatters/TableFormatter.js +11 -11
  177. package/src/sap/fe/core/formatters/TableFormatter.ts +12 -12
  178. package/src/sap/fe/core/formatters/ValueFormatter.js +8 -8
  179. package/src/sap/fe/core/formatters/ValueFormatter.ts +9 -9
  180. package/src/sap/fe/core/helpers/AppStartupHelper.js +15 -15
  181. package/src/sap/fe/core/helpers/AppStartupHelper.ts +37 -40
  182. package/src/sap/fe/core/helpers/BindingToolkit.js +1809 -0
  183. package/src/sap/fe/core/helpers/{BindingExpression.ts → BindingToolkit.ts} +365 -264
  184. package/src/sap/fe/core/helpers/ClassSupport.js +20 -11
  185. package/src/sap/fe/core/helpers/ClassSupport.ts +14 -10
  186. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +2 -2
  187. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -1
  188. package/src/sap/fe/core/helpers/EditState.js +1 -6
  189. package/src/sap/fe/core/helpers/EditState.ts +5 -10
  190. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +2 -2
  191. package/src/sap/fe/core/helpers/ExcelFormatHelper.ts +4 -4
  192. package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
  193. package/src/sap/fe/core/helpers/FPMHelper.ts +2 -2
  194. package/src/sap/fe/core/helpers/KeepAliveHelper.js +31 -31
  195. package/src/sap/fe/core/helpers/KeepAliveHelper.ts +52 -56
  196. package/src/sap/fe/core/helpers/MassEditHelper.js +281 -254
  197. package/src/sap/fe/core/helpers/MassEditHelper.ts +337 -289
  198. package/src/sap/fe/core/helpers/ModelHelper.js +25 -25
  199. package/src/sap/fe/core/helpers/ModelHelper.ts +34 -32
  200. package/src/sap/fe/core/helpers/PasteHelper.js +3 -10
  201. package/src/sap/fe/core/helpers/PasteHelper.ts +20 -25
  202. package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
  203. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +11 -11
  204. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +3 -3
  205. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +8 -8
  206. package/src/sap/fe/core/helpers/StableIdHelper.js +12 -12
  207. package/src/sap/fe/core/helpers/StableIdHelper.ts +12 -12
  208. package/src/sap/fe/core/jsx-runtime/jsx.js +1 -1
  209. package/src/sap/fe/core/jsx-runtime/jsx.ts +8 -8
  210. package/src/sap/fe/core/library.js +42 -3
  211. package/src/sap/fe/core/library.ts +38 -0
  212. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +3 -3
  213. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +2 -2
  214. package/src/sap/fe/core/messagebundle.properties +49 -35
  215. package/src/sap/fe/core/messagebundle_ar.properties +13 -5
  216. package/src/sap/fe/core/messagebundle_bg.properties +13 -5
  217. package/src/sap/fe/core/messagebundle_ca.properties +13 -5
  218. package/src/sap/fe/core/messagebundle_cs.properties +13 -5
  219. package/src/sap/fe/core/messagebundle_cy.properties +14 -6
  220. package/src/sap/fe/core/messagebundle_da.properties +13 -5
  221. package/src/sap/fe/core/messagebundle_de.properties +15 -7
  222. package/src/sap/fe/core/messagebundle_el.properties +14 -6
  223. package/src/sap/fe/core/messagebundle_en.properties +9 -1
  224. package/src/sap/fe/core/messagebundle_en_GB.properties +11 -3
  225. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +7 -1
  226. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +9 -1
  227. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +44 -85
  228. package/src/sap/fe/core/messagebundle_es.properties +13 -5
  229. package/src/sap/fe/core/messagebundle_es_MX.properties +13 -5
  230. package/src/sap/fe/core/messagebundle_et.properties +13 -5
  231. package/src/sap/fe/core/messagebundle_fi.properties +14 -6
  232. package/src/sap/fe/core/messagebundle_fr.properties +14 -6
  233. package/src/sap/fe/core/messagebundle_fr_CA.properties +14 -6
  234. package/src/sap/fe/core/messagebundle_hi.properties +14 -6
  235. package/src/sap/fe/core/messagebundle_hr.properties +14 -6
  236. package/src/sap/fe/core/messagebundle_hu.properties +13 -5
  237. package/src/sap/fe/core/messagebundle_id.properties +13 -5
  238. package/src/sap/fe/core/messagebundle_it.properties +33 -25
  239. package/src/sap/fe/core/messagebundle_iw.properties +13 -5
  240. package/src/sap/fe/core/messagebundle_ja.properties +14 -6
  241. package/src/sap/fe/core/messagebundle_kk.properties +13 -5
  242. package/src/sap/fe/core/messagebundle_ko.properties +13 -5
  243. package/src/sap/fe/core/messagebundle_lt.properties +13 -5
  244. package/src/sap/fe/core/messagebundle_lv.properties +14 -6
  245. package/src/sap/fe/core/messagebundle_ms.properties +13 -5
  246. package/src/sap/fe/core/messagebundle_nl.properties +13 -5
  247. package/src/sap/fe/core/messagebundle_no.properties +13 -5
  248. package/src/sap/fe/core/messagebundle_pl.properties +13 -5
  249. package/src/sap/fe/core/messagebundle_pt.properties +13 -5
  250. package/src/sap/fe/core/messagebundle_pt_PT.properties +14 -6
  251. package/src/sap/fe/core/messagebundle_ro.properties +13 -5
  252. package/src/sap/fe/core/messagebundle_ru.properties +13 -5
  253. package/src/sap/fe/core/messagebundle_sh.properties +13 -5
  254. package/src/sap/fe/core/messagebundle_sk.properties +13 -5
  255. package/src/sap/fe/core/messagebundle_sl.properties +17 -9
  256. package/src/sap/fe/core/messagebundle_sv.properties +14 -6
  257. package/src/sap/fe/core/messagebundle_th.properties +13 -5
  258. package/src/sap/fe/core/messagebundle_tr.properties +13 -5
  259. package/src/sap/fe/core/messagebundle_uk.properties +13 -5
  260. package/src/sap/fe/core/messagebundle_vi.properties +13 -5
  261. package/src/sap/fe/core/messagebundle_zh_CN.properties +14 -6
  262. package/src/sap/fe/core/messagebundle_zh_TW.properties +13 -5
  263. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +2 -2
  264. package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +5 -5
  265. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +2 -2
  266. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +14 -14
  267. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -1
  268. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +3 -2
  269. package/src/sap/fe/core/services/NavigationServiceFactory.js +53 -44
  270. package/src/sap/fe/core/services/NavigationServiceFactory.ts +54 -46
  271. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +2 -2
  272. package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +4 -4
  273. package/src/sap/fe/core/services/RoutingServiceFactory.js +55 -55
  274. package/src/sap/fe/core/services/RoutingServiceFactory.ts +67 -65
  275. package/src/sap/fe/core/services/ShellServicesFactory.js +72 -76
  276. package/src/sap/fe/core/services/ShellServicesFactory.ts +76 -82
  277. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +61 -61
  278. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +102 -92
  279. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +20 -15
  280. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +26 -21
  281. package/src/sap/fe/core/support/CommonHelper.js +3 -2
  282. package/src/sap/fe/core/support/CommonHelper.ts +9 -13
  283. package/src/sap/fe/core/support/Diagnostics.js +1 -1
  284. package/src/sap/fe/core/support/Diagnostics.ts +5 -5
  285. package/src/sap/fe/core/templating/CommonFormatters.js +84 -0
  286. package/src/sap/fe/core/templating/CommonFormatters.ts +86 -0
  287. package/src/sap/fe/core/templating/CriticalityFormatters.js +31 -31
  288. package/src/sap/fe/core/templating/CriticalityFormatters.ts +42 -40
  289. package/src/sap/fe/core/templating/DataFieldFormatters.js +8 -8
  290. package/src/sap/fe/core/templating/DataFieldFormatters.ts +13 -10
  291. package/src/sap/fe/core/templating/DataModelPathHelper.js +16 -15
  292. package/src/sap/fe/core/templating/DataModelPathHelper.ts +42 -32
  293. package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
  294. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +2 -3
  295. package/src/sap/fe/core/templating/EntitySetHelper.js +7 -7
  296. package/src/sap/fe/core/templating/EntitySetHelper.ts +6 -8
  297. package/src/sap/fe/core/templating/FieldControlHelper.js +35 -34
  298. package/src/sap/fe/core/templating/FieldControlHelper.ts +29 -46
  299. package/src/sap/fe/core/templating/FilterHelper.js +10 -9
  300. package/src/sap/fe/core/templating/FilterHelper.ts +13 -13
  301. package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
  302. package/src/sap/fe/core/templating/FilterTemplating.ts +3 -3
  303. package/src/sap/fe/core/templating/PropertyFormatters.js +7 -7
  304. package/src/sap/fe/core/templating/PropertyFormatters.ts +21 -19
  305. package/src/sap/fe/core/templating/PropertyHelper.js +25 -25
  306. package/src/sap/fe/core/templating/PropertyHelper.ts +25 -26
  307. package/src/sap/fe/core/templating/UIFormatters.js +148 -93
  308. package/src/sap/fe/core/templating/UIFormatters.ts +196 -124
  309. package/src/sap/fe/core/type/Email.js +2 -2
  310. package/src/sap/fe/core/type/Email.ts +2 -2
  311. package/src/sap/fe/core/helpers/BindingExpression.js +0 -1732
@@ -2,7 +2,7 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2021 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/ui/core/service/Service", "sap/ui/core/service/ServiceFactory", "sap/ui/core/cache/CacheManager", "sap/base/strings/hash"], function (Service, ServiceFactory, CacheManager, hash) {
5
+ sap.ui.define(["sap/base/strings/hash", "sap/ui/core/cache/CacheManager", "sap/ui/core/service/Service", "sap/ui/core/service/ServiceFactory"], function (hash, CacheManager, Service, ServiceFactory) {
6
6
  "use strict";
7
7
 
8
8
  var _exports = {};
@@ -230,4 +230,4 @@ sap.ui.define(["sap/ui/core/service/Service", "sap/ui/core/service/ServiceFactor
230
230
 
231
231
  return CacheHandlerServiceFactory;
232
232
  }, false);
233
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNhY2hlSGFuZGxlclNlcnZpY2VGYWN0b3J5LnRzIl0sIm5hbWVzIjpbImdldE1ldGFkYXRhRVRhZyIsInNVcmwiLCJzRVRhZyIsIm1VcGRhdGVkTWV0YU1vZGVsRVRhZ3MiLCJQcm9taXNlIiwicmVzb2x2ZSIsImpRdWVyeSIsImFqYXgiLCJtZXRob2QiLCJkb25lIiwib1Jlc3BvbnNlIiwic1RleHRTdGF0dXMiLCJqcVhIUiIsImdldFJlc3BvbnNlSGVhZGVyIiwiZmFpbCIsIkNhY2hlSGFuZGxlclNlcnZpY2UiLCJpbml0Iiwib0NvbnRleHQiLCJnZXRDb250ZXh0Iiwib0ZhY3RvcnkiLCJmYWN0b3J5IiwibVNldHRpbmdzIiwic2V0dGluZ3MiLCJtZXRhTW9kZWwiLCJFcnJvciIsIm9NZXRhTW9kZWwiLCJvQXBwQ29tcG9uZW50IiwiYXBwQ29tcG9uZW50Iiwib0NvbXBvbmVudCIsImNvbXBvbmVudCIsImluaXRQcm9taXNlIiwiZmV0Y2hFbnRpdHlDb250YWluZXIiLCJ0aGVuIiwibUNhY2hlTmVlZHNJbnZhbGlkYXRlIiwiZXhpdCIsInJlbW92ZUdsb2JhbEluc3RhbmNlIiwidmFsaWRhdGVDYWNoZUtleSIsInNDYWNoZUlkZW50aWZpZXIiLCJiQ2FjaGVOZWVkVXBkYXRlIiwiQ2FjaGVNYW5hZ2VyIiwiZ2V0IiwibUNhY2hlT3V0cHV0IiwibU1ldGFNb2RlbEVUYWdzIiwiZ2V0RVRhZ3MiLCJzVXBkYXRlZENhY2hlS2V5IiwiSlNPTiIsInN0cmluZ2lmeSIsIm1DYWNoZWRFVGFncyIsInBhcnNlIiwiY2FjaGVkRVRhZ3MiLCJhbGwiLCJPYmplY3QiLCJrZXlzIiwibWFwIiwiYVZhbGlkRVRhZ3MiLCJpbmRleE9mIiwic29tZSIsInZpZXdDYWNoZUtleSIsImNhdGNoIiwic0NhY2hlS2V5IiwiaW52YWxpZGF0ZUlmTmVlZGVkIiwic0NhY2hlS2V5cyIsInNEYXRhU291cmNlRVRhZ3MiLCJtQ2FjaGVLZXlzIiwic2V0IiwiZm9yRWFjaCIsInNNZXRhTW9kZWxLZXkiLCJEYXRlIiwidG9JU09TdHJpbmciLCJvTWFuaWZlc3RDb250ZW50IiwiZ2V0TWFuaWZlc3QiLCJzTWFuaWZlc3RIYXNoIiwiaGFzaCIsInNhcEFwcCIsInZpZXdEYXRhIiwiZ2V0Vmlld0RhdGEiLCJnZXRJbnRlcmZhY2UiLCJTZXJ2aWNlIiwiQ2FjaGVIYW5kbGVyU2VydmljZUZhY3RvcnkiLCJfb0luc3RhbmNlUmVnaXN0cnkiLCJjcmVhdGVJbnN0YW5jZSIsIm9TZXJ2aWNlQ29udGV4dCIsInNNZXRhTW9kZWxJZCIsImdldElkIiwiY2FjaGVIYW5kbGVySW5zdGFuY2UiLCJhc3NpZ24iLCJzY29wZU9iamVjdCIsInNjb3BlVHlwZSIsImUiLCJnZXRJbnN0YW5jZSIsIlNlcnZpY2VGYWN0b3J5Il0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7O0FBT0EsV0FBU0EsZUFBVCxDQUF5QkMsSUFBekIsRUFBb0NDLEtBQXBDLEVBQWdEQyxzQkFBaEQsRUFBNkU7QUFDNUUsV0FBTyxJQUFJQyxPQUFKLENBQVksVUFBU0MsT0FBVCxFQUFrQjtBQUNwQztBQUNDQyxNQUFBQSxNQUFELENBQ0VDLElBREYsQ0FDT04sSUFEUCxFQUNhO0FBQUVPLFFBQUFBLE1BQU0sRUFBRTtBQUFWLE9BRGIsRUFFRUMsSUFGRixDQUVPLFVBQVNDLFNBQVQsRUFBeUJDLFdBQXpCLEVBQTJDQyxLQUEzQyxFQUF1RDtBQUM1RDtBQUNBO0FBQ0E7QUFDQVQsUUFBQUEsc0JBQXNCLENBQUNGLElBQUQsQ0FBdEIsR0FBK0JXLEtBQUssQ0FBQ0MsaUJBQU4sQ0FBd0IsTUFBeEIsS0FBbUNELEtBQUssQ0FBQ0MsaUJBQU4sQ0FBd0IsZUFBeEIsQ0FBbEU7QUFDQVIsUUFBQUEsT0FBTyxDQUFDSCxLQUFLLEtBQUtDLHNCQUFzQixDQUFDRixJQUFELENBQWpDLENBQVA7QUFDQSxPQVJGLEVBU0VhLElBVEYsQ0FTTyxZQUFXO0FBQ2hCO0FBQ0FYLFFBQUFBLHNCQUFzQixDQUFDRixJQUFELENBQXRCLEdB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QUNBLEs7O1lBQ0RoRCxvQixHQUFBLDhCQUFxQlYsVUFBckIsRUFBaUQ7QUFDaEQsV0FBS3NELGtCQUFMLENBQXdCdEQsVUFBVSxDQUFDMEQsS0FBWCxFQUF4QixJQUE4QyxJQUE5QztBQUNBLEs7OztJQWpDdUNPLGM7O1NBb0MxQlosMEIiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTZXJ2aWNlIGZyb20gXCJzYXAvdWkvY29yZS9zZXJ2aWNlL1NlcnZpY2VcIjtcbmltcG9ydCBTZXJ2aWNlRmFjdG9yeSBmcm9tIFwic2FwL3VpL2NvcmUvc2VydmljZS9TZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IENhY2hlTWFuYWdlciBmcm9tIFwic2FwL3VpL2NvcmUvY2FjaGUvQ2FjaGVNYW5hZ2VyXCI7XG5pbXBvcnQgaGFzaCBmcm9tIFwic2FwL2Jhc2Uvc3RyaW5ncy9oYXNoXCI7XG5pbXBvcnQgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuaW1wb3J0IEFwcENvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwQ29tcG9uZW50XCI7XG5pbXBvcnQgVUlDb21wb25lbnQgZnJvbSBcInNhcC91aS9jb3JlL1VJQ29tcG9uZW50XCI7XG5pbXBvcnQgeyBTZXJ2aWNlQ29udGV4dCB9IGZyb20gXCJ0eXBlcy9leHRlbnNpb25fdHlwZXNcIjtcblxuZnVuY3Rpb24gZ2V0TWV0YWRhdGFFVGFnKHNVcmw6IGFueSwgc0VUYWc6IGFueSwgbVVwZGF0ZWRNZXRhTW9kZWxFVGFnczogYW55KSB7XG5cdHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlKSB7XG5cdFx0Ly8gVGhlcmUgaXMgYW4gVXJsIGluIHRoZSBGRSBjYWNoZSwgdGhhdCdzIG5vdCBpbiB0aGUgTWV0YU1vZGVsIHlldCAtPiB3ZSBuZWVkIHRvIGNoZWNrIHRoZSBFVGFnXG5cdFx0KGpRdWVyeSBhcyBhbnkpXG5cdFx0XHQuYWpheChzVXJsLCB7IG1ldGhvZDogXCJHRVRcIiB9KVxuXHRcdFx0LmRvbmUoZnVuY3Rpb24ob1Jlc3BvbnNlOiBhbnksIHNUZXh0U3RhdHVzOiBhbnksIGpxWEhSOiBhbnkpIHtcblx0XHRcdFx0Ly8gRVRhZyBpcyBub3QgdGhlIHNhbWUgLT4gaW52YWxpZFxuXHRcdFx0XHQvLyBFVGFnIGlzIHRoZSBzYW1lIC0+IHZhbGlkXG5cdFx0XHRcdC8vIElmIEVUYWcgaXMgYXZhaWxhYmxlIHVzZSBpdCwgb3RoZXJ3aXNlIHVzZSBMYXN0LU1vZGlmaWVkXG5cdFx0XHRcdG1VcGRhdGVkTWV0YU1vZGVsRVRhZ3Nbc1VybF0gPSBqcVhIUi5nZXRSZXNwb25zZUhlYWRlcihcIkVUYWdcIikgfHwganFYSFIuZ2V0UmVzcG9uc2VIZWFkZXIoXCJMYXN0LU1vZGlmaWVkXCIpO1xuXHRcdFx0XHRyZXNvbHZlKHNFVGFnID09PSBtVXBkYXRlZE1ldGFNb2RlbEVUYWdzW3NVcmxdKTtcblx0XHRcdH0pXG5cdFx0XHQuZmFpbChmdW5jdGlvbigpIHtcblx0XHRcdFx0Ly8gQ2FzZSAyeiAtIE1ha2Ugc3VyZSB3ZSB1cGRhdGUgdGhlIG1hcCBzbyB0aGF0IHdlIGludmFsaWRhdGUgdGhlIGNhY2hlXG5cdFx0XHRcdG1VcGRhdGVkTWV0YU1vZGVsRVRhZ3Nbc1VybF0gPSBcIlwiO1xuXHRcdFx0XHRyZXNvbHZlKGZhbHNlKTtcblx0XHRcdH0pO1xuXHR9KTtcbn1cbnR5cGUgQ2FjaGVIYW5kbGVyU2VydmljZVNldHRpbmdzID0ge1xuXHRtZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsO1xufTtcblxuZXhwb3J0IGNsYXNzIENhY2hlSGFuZGxlclNlcnZpY2UgZXh0ZW5kcyBTZXJ2aWNlPENhY2hlSGFuZGxlclNlcnZpY2VTZXR0aW5ncz4ge1xuXHRyZXNvbHZlRm46IGFueTtcblx0cmVqZWN0Rm46IGFueTtcblx0aW5pdFByb21pc2UhOiBQcm9taXNlPGFueT47XG5cblx0b0ZhY3RvcnkhOiBDYWNoZUhhbmRsZXJTZXJ2aWNlRmFjdG9yeTtcblx0b01ldGFNb2RlbCE6IE9EYXRhTWV0YU1vZGVsO1xuXHRvQXBwQ29tcG9uZW50ITogQXBwQ29tcG9uZW50O1xuXHRvQ29tcG9uZW50ITogVUlDb21wb25lbnQ7XG5cdG1DYWNoZU5lZWRzSW52YWxpZGF0ZTogYW55O1xuXG5cdGluaXQoKSB7XG5cdFx0Y29uc3Qgb0NvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblx0XHR0aGlzLm9GYWN0b3J5ID0gb0NvbnRleHQuZmFjdG9yeTtcblx0XHRjb25zdCBtU2V0dGluZ3MgPSBvQ29udGV4dC5zZXR0aW5ncztcblx0XHRpZiAoIW1TZXR0aW5ncy5tZXRhTW9kZWwpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcImEgYG1ldGFNb2RlbGAgcHJvcGVydHkgaXMgZXhwZWN0ZWQgd2hlbiBpbnN0YW50aWF0aW5nIHRoZSBDYWNoZUhhbmRsZXJTZXJ2aWNlXCIpO1xuXHRcdH1cblx0XHR0aGlzLm9NZXRhTW9kZWwgPSBtU2V0dGluZ3MubWV0YU1vZGVsO1xuXHRcdHRoaXMub0FwcENvbXBvbmVudCA9IG1TZXR0aW5ncy5hcHBDb21wb25lbnQ7XG5cdFx0dGhpcy5vQ29tcG9uZW50ID0gbVNldHRpbmdzLmNvbXBvbmVudDtcblx0XHR0aGlzLmluaXRQcm9taXNlID0gKHRoaXMub01ldGFNb2RlbCBhcyBhbnkpLmZldGNoRW50aXR5Q29udGFpbmVyKCkudGhlbigoKSA9PiB7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9KTtcblx0XHR0aGlzLm1DYWNoZU5lZWRzSW52YWxpZGF0ZSA9IHt9O1xuXHR9XG5cdGV4aXQoKSB7XG5cdFx0Ly8gRGVyZWdpc3RlciBnbG9iYWwgaW5zdGFuY2Vcblx0XHR0aGlzLm9GYWN0b3J5LnJlbW92ZUdsb2JhbEluc3RhbmNlKHRoaXMub01ldGFNb2RlbCk7XG5cdH1cblx0dmFsaWRhdGVDYWNoZUtleShzQ2FjaGVJZGVudGlmaWVyOiBhbnkpOiBQcm9taXNlPHN0cmluZz4ge1xuXHRcdC8vIEtlZXAgdHJhY2sgaWYgdGhlIGNhY2hlIHdpbGwgYW55d2F5IG5lZWQgdG8gYmUgdXBkYXRlZFxuXHRcdGxldCBiQ2FjaGVOZWVkVXBkYXRlID0gdHJ1ZTtcblx0XHRyZXR1cm4gQ2FjaGVNYW5hZ2VyLmdldChzQ2FjaGVJZGVudGlmaWVyKVxuXHRcdFx0LnRoZW4oKG1DYWNoZU91dHB1dDogYW55KSA9PiB7XG5cdFx0XHRcdC8vIFdlIHByb3ZpZGUgYSBkZWZhdWx0IGtleSBzbyB0aGF0IGFuIHhtbCB2aWV3IGNhY2hlIGlzIHdyaXR0ZW5cblx0XHRcdFx0Y29uc3QgbU1ldGFNb2RlbEVUYWdzID0gdGhpcy5nZXRFVGFncygpO1xuXHRcdFx0XHRsZXQgc1VwZGF0ZWRDYWNoZUtleTogc3RyaW5nIHwgbnVsbCA9IEpTT04uc3RyaW5naWZ5KG1NZXRhTW9kZWxFVGFncyk7XG5cdFx0XHRcdC8vIENhc2UgIzFhIC0gTm8gY2FjaGUsIHNvIG1DYWNoZU91cHV0IGlzIGVtcHR5LCBjYWNoZUtleSA9IGN1cnJlbnQgbWV0YW1vZGVsIEVUYWdzXG5cdFx0XHRcdGlmIChtQ2FjaGVPdXRwdXQpIHtcblx0XHRcdFx0XHQvLyBDYXNlICMyIC0gQ2FjaGUgZW50cnkgZm91bmQsIGNoZWNrIGlmIGl0J3Mgc3RpbGwgdmFsaWRcblx0XHRcdFx0XHRjb25zdCBtVXBkYXRlZE1ldGFNb2RlbEVUYWdzOiBhbnkgPSB7fTtcblx0XHRcdFx0XHRjb25zdCBtQ2FjaGVkRVRhZ3MgPSBKU09OLnBhcnNlKG1DYWNoZU91dHB1dC5jYWNoZWRFVGFncyk7XG5cdFx0XHRcdFx0cmV0dXJuIFByb21pc2UuYWxsKFxuXHRcdFx0XHRcdFx0T2JqZWN0LmtleXMobUNhY2hlZEVUYWdzKS5tYXAoZnVuY3Rpb24oc1VybDogc3RyaW5nKSB7XG5cdFx0XHRcdFx0XHRcdC8vIENoZWNrIHZhbGlkaXR5IG9mIGV2ZXJ5IHNpbmdsZSBVcmwgdGhhdCdzIGluIHRoZSBGRSBDYWNoZSBvYmplY3Rcblx0XHRcdFx0XHRcdFx0aWYgKG1DYWNoZWRFVGFnc1tzVXJsXSkge1xuXHRcdFx0XHRcdFx0XHRcdGlmIChtTWV0YU1vZGVsRVRhZ3Nbc1VybF0pIHtcblx0XHRcdFx0XHRcdFx0XHRcdC8vIENhc2UgIzJhIC0gU2FtZSBudW1iZXIgb2YgRVRhZ3MgaW4gdGhlIGNhY2hlIGFuZCBpbiB0aGUgbWV0YWRhdGFcblx0XHRcdFx0XHRcdFx0XHRcdG1VcGRhdGVkTWV0YU1vZGVsRVRhZ3Nbc1VybF0gPSBtTWV0YU1vZGVsRVRhZ3Nbc1VybF07XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gbUNhY2hlZEVUYWdzW3NVcmxdID09PSBtTWV0YU1vZGVsRVRhZ3Nbc1VybF07XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdC8vIENhc2UgIzJiIC0gTm8gRVRhZyBpbiB0aGUgY2FjaGUgZm9yIHRoYXQgVVJMLCBjYWNoZWRFVGFncyB3YXMgZW5oYW5jZWRcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBnZXRNZXRhZGF0YUVUYWcoc1VybCwgbUNhY2hlZEVUYWdzW3NVcmxdLCBtVXBkYXRlZE1ldGFNb2RlbEVUYWdzKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gQ2FzZSAjMnogLSBMYXN0IFRlbXBsYXRpbmcgYWRkZWQgYW4gVVJMIHdpdGhvdXQgRVRhZ1xuXHRcdFx0XHRcdFx0XHRcdG1VcGRhdGVkTWV0YU1vZGVsRVRhZ3Nbc1VybF0gPSBtTWV0YU1vZGVsRVRhZ3Nbc1VybF07XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG1DYWNoZWRFVGFnc1tzVXJsXSA9PT0gbU1ldGFNb2RlbEVUYWdzW3NVcmxdO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdCkudGhlbihmdW5jdGlvbihhVmFsaWRFVGFnczogYW55W10pIHtcblx0XHRcdFx0XHRcdGJDYWNoZU5lZWRVcGRhdGUgPSBhVmFsaWRFVGFncy5pbmRleE9mKGZhbHNlKSA+PSAwO1xuXHRcdFx0XHRcdFx0Ly8gQ2FzZSAjMmEgLSBTYW1lIG51bWJlciBvZiBFVGFncyBhbmQgYWxsIHZhbGlkIC0+IHdlIHJldHVybiB0aGUgdmlld0NhY2hlS2V5XG5cdFx0XHRcdFx0XHQvLyBDYXNlICMyYiAtIERpZmZlcmVudCBudW1iZXIgb2YgRVRhZ3MgYW5kIHN0aWxsIGFsbCB2YWxpZCAtPiB3ZSByZXR1cm4gdGhlIHZpZXdDYWNoZUtleVxuXHRcdFx0XHRcdFx0Ly8gQ2FzZSAjMmMgLSBTYW1lIG51bWJlciBvZiBFVGFncyBidXQgZGlmZmVyZW50IHZhbHVlcywgbWFpbiBzZXJ2aWNlIEV0YWcgaGFzIGNoYW5nZWQsIHVzZSB0aGF0IGFzIGNhY2hlIGtleVxuXHRcdFx0XHRcdFx0Ly8gQ2FzZSAjMmQgLSBEaWZmZXJlbnQgbnVtYmVyIG9mIEVUYWdzIGJ1dCBkaWZmZXJlbnQgdmFsdWUsIG1haW4gc2VydmljZSBFdGFnIG9yIGxpbmtlZCBzZXJ2aWNlIEV0YWcgaGFzIGNoYW5nZWQsIG5ldyBFVGFncyBzaG91bGQgYmUgdXNlZCBhcyBjYWNoZUtleVxuXHRcdFx0XHRcdFx0Ly8gQ2FzZSAjMnogLSBDYWNoZSBoYXMgYW4gaW52YWxpZCBFdGFnIC0gaWYgdGhlcmUgaXMgYW4gRXRhZyBwcm92aWRlZCBmcm9tIE1ldGFNb2RlbCB1c2UgaXQgYXMgY2FjaGVLZXlcblx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0T2JqZWN0LmtleXMobVVwZGF0ZWRNZXRhTW9kZWxFVGFncykuc29tZShmdW5jdGlvbihzVXJsOiBzdHJpbmcpIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gIW1VcGRhdGVkTWV0YU1vZGVsRVRhZ3Nbc1VybF07XG5cdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdFx0Ly8gQXQgbGVhc3Qgb25lIG9mIHRoZSBNZXRhTW9kZWwgVVJMcyBkb2Vzbid0IHByb3ZpZGUgYW4gRVRhZywgc28gbm8gY2FjaGluZ1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBiQ2FjaGVOZWVkVXBkYXRlID8gSlNPTi5zdHJpbmdpZnkobVVwZGF0ZWRNZXRhTW9kZWxFVGFncykgOiBtQ2FjaGVPdXRwdXQudmlld0NhY2hlS2V5O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHRcdE9iamVjdC5rZXlzKG1NZXRhTW9kZWxFVGFncykuc29tZShmdW5jdGlvbihzVXJsOiBzdHJpbmcpIHtcblx0XHRcdFx0XHRcdHJldHVybiAhbU1ldGFNb2RlbEVUYWdzW3NVcmxdO1xuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdC8vIENoZWNrIGlmIGNhY2hlIGNhbiBiZSB1c2VkIChhbGwgdGhlIG1ldGFkYXRhIGFuZCBhbm5vdGF0aW9ucyBoYXZlIHRvIHByb3ZpZGUgYXQgbGVhc3QgYSBFVGFnIG9yIGEgTGFzdC1Nb2RpZmllZCBoZWFkZXIpXG5cdFx0XHRcdFx0Ly8gQ2FzZSAjMS1iIC0gTm8gQ2FjaGUsIG1DYWNoZU91cHV0IGlzIGVtcHR5LCBidXQgbWV0YW1vZGVsIGV0YWdzIGNhbm5vdCBiZSB1c2VkLCBzbyBubyBjYWNoaW5nXG5cdFx0XHRcdFx0YkNhY2hlTmVlZFVwZGF0ZSA9IHRydWU7XG5cdFx0XHRcdFx0c1VwZGF0ZWRDYWNoZUtleSA9IG51bGw7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHNVcGRhdGVkQ2FjaGVLZXk7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKCgpID0+IHtcblx0XHRcdFx0Ly8gRG9uJ3QgdXNlIHZpZXcgY2FjaGUgaW4gY2FzZSBvZiBpc3N1ZXMgd2l0aCB0aGUgTFJVIGNhY2hlXG5cdFx0XHRcdGJDYWNoZU5lZWRVcGRhdGUgPSB0cnVlO1xuXHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdH0pXG5cdFx0XHQudGhlbigoc0NhY2hlS2V5OiBhbnkpID0+IHtcblx0XHRcdFx0dGhpcy5tQ2FjaGVOZWVkc0ludmFsaWRhdGVbc0NhY2hlSWRlbnRpZmllcl0gPSBiQ2FjaGVOZWVkVXBkYXRlO1xuXHRcdFx0XHRyZXR1cm4gc0NhY2hlS2V5O1xuXHRcdFx0fSk7XG5cdH1cblx0aW52YWxpZGF0ZUlmTmVlZGVkKHNDYWNoZUtleXM6IHN0cmluZywgc0NhY2hlSWRlbnRpZmllcjogc3RyaW5nKSB7XG5cdFx0Ly8gQ2hlY2sgRkUgY2FjaGUgYWZ0ZXIgWE1MIHZpZXcgaXMgcHJvY2Vzc2VkIGNvbXBsZXRlbHlcblx0XHRjb25zdCBzRGF0YVNvdXJjZUVUYWdzID0gSlNPTi5zdHJpbmdpZnkodGhpcy5nZXRFVGFncygpKTtcblx0XHRpZiAodGhpcy5tQ2FjaGVOZWVkc0ludmFsaWRhdGVbc0NhY2hlSWRlbnRpZmllcl0gfHwgKHNDYWNoZUtleXMgJiYgc0NhY2hlS2V5cyAhPT0gc0RhdGFTb3VyY2VFVGFncykpIHtcblx0XHRcdC8vIFNvbWV0aGluZyBpbiB0aGUgc291cmNlcyBhbmQvb3IgaXRzIEVUYWdzIGNoYW5nZWQgLT4gdXBkYXRlIHRoZSBGRSBjYWNoZVxuXHRcdFx0Y29uc3QgbUNhY2hlS2V5czogYW55ID0ge307XG5cdFx0XHQvLyBOZXcgRVRhZ3MgdGhhdCBuZWVkIHRvIGJlIHZlcmlmaWVkLCBtYXkgZGlmZmVyIGZyb20gdGhlIG9uZSB1c2VkIHRvIGdlbmVyYXRlIHRoZSB2aWV3XG5cdFx0XHRtQ2FjaGVLZXlzLmNhY2hlZEVUYWdzID0gc0RhdGFTb3VyY2VFVGFncztcblx0XHRcdC8vIE9sZCBFVGFncyB0aGF0IGFyZSB1c2VkIGZvciB0aGUgeG1sIHZpZXcgY2FjaGUgYXMga2V5XG5cdFx0XHRtQ2FjaGVLZXlzLnZpZXdDYWNoZUtleSA9IHNDYWNoZUtleXM7XG5cdFx0XHRyZXR1cm4gQ2FjaGVNYW5hZ2VyLnNldChzQ2FjaGVJZGVudGlmaWVyLCBtQ2FjaGVLZXlzKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHRcdH1cblx0fVxuXHRnZXRFVGFncygpIHtcblx0XHRjb25zdCBtTWV0YU1vZGVsRVRhZ3MgPSAodGhpcy5vTWV0YU1vZGVsIGFzIGFueSkuZ2V0RVRhZ3MoKTtcblx0XHQvLyBFVGFncyBmcm9tIFVJNSBhcmUgZWl0aGVyIGEgRGF0ZSBvciBhIHN0cmluZywgbGV0J3MgcmF0aW9uYWxpemUgdGhhdFxuXHRcdE9iamVjdC5rZXlzKG1NZXRhTW9kZWxFVGFncykuZm9yRWFjaChmdW5jdGlvbihzTWV0YU1vZGVsS2V5OiBzdHJpbmcpIHtcblx0XHRcdGlmIChtTWV0YU1vZGVsRVRhZ3Nbc01ldGFNb2RlbEtleV0gaW5zdGFuY2VvZiBEYXRlKSB7XG5cdFx0XHRcdC8vIE1ldGFNb2RlbCBjb250YWlucyBhIExhc3QtTW9kaWZpZWQgdGltZXN0YW1wIGZvciB0aGUgVVJMXG5cdFx0XHRcdG1NZXRhTW9kZWxFVGFnc1tzTWV0YU1vZGVsS2V5XSA9IG1NZXRhTW9kZWxFVGFnc1tzTWV0YU1vZGVsS2V5XS50b0lTT1N0cmluZygpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0Ly8gYWRkIGFsc28gdGhlIG1hbmlmZXN0IGhhc2ggYXMgVUk1IG9ubHkgY29uc2lkZXJzIHRoZSByb290IGNvbXBvbmVudCBoYXNoXG5cdFx0Y29uc3Qgb01hbmlmZXN0Q29udGVudDogYW55ID0gdGhpcy5vQXBwQ29tcG9uZW50LmdldE1hbmlmZXN0KCk7XG5cdFx0Y29uc3Qgc01hbmlmZXN0SGFzaCA9IGhhc2goXG5cdFx0XHRKU09OLnN0cmluZ2lmeSh7XG5cdFx0XHRcdHNhcEFwcDogb01hbmlmZXN0Q29udGVudFtcInNhcC5hcHBcIl0sXG5cdFx0XHRcdHZpZXdEYXRhOiAodGhpcy5vQ29tcG9uZW50IGFzIGFueSkuZ2V0Vmlld0RhdGEoKVxuXHRcdFx0fSlcblx0XHQpO1xuXHRcdG1NZXRhTW9kZWxFVGFnc1tcIm1hbmlmZXN0XCJdID0gc01hbmlmZXN0SGFzaDtcblx0XHRyZXR1cm4gbU1ldGFNb2RlbEVUYWdzO1xuXHR9XG5cdGdldEludGVyZmFjZSgpOiBhbnkge1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG59XG5cbmNsYXNzIENhY2hlSGFuZGxlclNlcnZpY2VGYWN0b3J5IGV4dGVuZHMgU2VydmljZUZhY3Rvcnk8Q2FjaGVIYW5kbGVyU2VydmljZVNldHRpbmdzPiB7XG5cdF9vSW5zdGFuY2VSZWdpc3RyeTogUmVjb3JkPHN0cmluZywgQ2FjaGVIYW5kbGVyU2VydmljZSB8IG51bGw+ID0ge307XG5cdGNyZWF0ZUluc3RhbmNlKG9TZXJ2aWNlQ29udGV4dDogU2VydmljZUNvbnRleHQ8Q2FjaGVIYW5kbGVyU2VydmljZVNldHRpbmdzPikge1xuXHRcdGNvbnN0IHNNZXRhTW9kZWxJZCA9IG9TZXJ2aWNlQ29udGV4dC5zZXR0aW5ncy5tZXRhTW9kZWwuZ2V0SWQoKTtcblx0XHRsZXQgY2FjaGVIYW5kbGVySW5zdGFuY2UgPSB0aGlzLl9vSW5zdGFuY2VSZWdpc3RyeVtzTWV0YU1vZGVsSWRdO1xuXHRcdGlmICghY2FjaGVIYW5kbGVySW5zdGFuY2UpIHtcblx0XHRcdHRoaXMuX29JbnN0YW5jZVJlZ2lzdHJ5W3NNZXRhTW9kZWxJZF0gPSBjYWNoZUhhbmRsZXJJbnN0YW5jZSA9IG5ldyBDYWNoZUhhbmRsZXJTZXJ2aWNlKFxuXHRcdFx0XHRPYmplY3QuYXNzaWduKFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGZhY3Rvcnk6IHRoaXMsXG5cdFx0XHRcdFx0XHRzY29wZU9iamVjdDogbnVsbCxcblx0XHRcdFx0XHRcdHNjb3BlVHlwZTogXCJzZXJ2aWNlXCJcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdG9TZXJ2aWNlQ29udGV4dFxuXHRcdFx0XHQpXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdHJldHVybiBjYWNoZUhhbmRsZXJJbnN0YW5jZS5pbml0UHJvbWlzZVxuXHRcdFx0LnRoZW4oKCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5fb0luc3RhbmNlUmVnaXN0cnlbc01ldGFNb2RlbElkXSBhcyBDYWNoZUhhbmRsZXJTZXJ2aWNlO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaCgoZTogYW55KSA9PiB7XG5cdFx0XHRcdC8vIEluIGNhc2Ugb2YgZXJyb3IgZGVsZXRlIHRoZSBnbG9iYWwgaW5zdGFuY2U7XG5cdFx0XHRcdHRoaXMuX29JbnN0YW5jZVJlZ2lzdHJ5W3NNZXRhTW9kZWxJZF0gPSBudWxsO1xuXHRcdFx0XHR0aHJvdyBlO1xuXHRcdFx0fSk7XG5cdH1cblx0Z2V0SW5zdGFuY2Uob01ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwpIHtcblx0XHRyZXR1cm4gdGhpcy5fb0luc3RhbmNlUmVnaXN0cnlbb01ldGFNb2RlbC5nZXRJZCgpXTtcblx0fVxuXHRyZW1vdmVHbG9iYWxJbnN0YW5jZShvTWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbCkge1xuXHRcdHRoaXMuX29JbnN0YW5jZVJlZ2lzdHJ5W29NZXRhTW9kZWwuZ2V0SWQoKV0gPSBudWxsO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENhY2hlSGFuZGxlclNlcnZpY2VGYWN0b3J5O1xuIl19
233
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNhY2hlSGFuZGxlclNlcnZpY2VGYWN0b3J5LnRzIl0sIm5hbWVzIjpbImdldE1ldGFkYXRhRVRhZyIsInNVcmwiLCJzRVRhZyIsIm1VcGRhdGVkTWV0YU1vZGVsRVRhZ3MiLCJQcm9taXNlIiwicmVzb2x2ZSIsImpRdWVyeSIsImFqYXgiLCJtZXRob2QiLCJkb25lIiwib1Jlc3BvbnNlIiwic1RleHRTdGF0dXMiLCJqcVhIUiIsImdldFJlc3BvbnNlSGVhZGVyIiwiZmFpbCIsIkNhY2hlSGFuZGxlclNlcnZpY2UiLCJpbml0Iiwib0NvbnRleHQiLCJnZXRDb250ZXh0Iiwib0ZhY3RvcnkiLCJmYWN0b3J5IiwibVNldHRpbmdzIiwic2V0dGluZ3MiLCJtZXRhTW9kZWwiLCJFcnJvciIsIm9NZXRhTW9kZWwiLCJvQXBwQ29tcG9uZW50IiwiYXBwQ29tcG9uZW50Iiwib0NvbXBvbmVudCIsImNvbXBvbmVudCIsImluaXRQcm9taXNlIiwiZmV0Y2hFbnRpdHlDb250YWluZXIiLCJ0aGVuIiwibUNhY2hlTmVlZHNJbnZhbGlkYXRlIiwiZXhpdCIsInJlbW92ZUdsb2JhbEluc3RhbmNlIiwidmFsaWRhdGVDYWNoZUtleSIsInNDYWNoZUlkZW50aWZpZXIiLCJiQ2FjaGVOZWVkVXBkYXRlIiwiQ2FjaGVNYW5hZ2VyIiwiZ2V0IiwibUNhY2hlT3V0cHV0IiwibU1ldGFNb2RlbEVUYWdzIiwiZ2V0RVRhZ3MiLCJzVXBkYXRlZENhY2hlS2V5IiwiSlNPTiIsInN0cmluZ2lmeSIsIm1DYWNoZWRFVGFncyIsInBhcnNlIiwiY2FjaGVkRVRhZ3MiLCJhbGwiLCJPYmplY3QiLCJrZXlzIiwibWFwIiwiYVZhbGlkRVRhZ3MiLCJpbmRleE9mIiwic29tZSIsInZpZXdDYWNoZUtleSIsImNhdGNoIiwic0NhY2hlS2V5IiwiaW52YWxpZGF0ZUlmTmVlZGVkIiwic0NhY2hlS2V5cyIsInNEYXRhU291cmNlRVRhZ3MiLCJtQ2FjaGVLZXlzIiwic2V0IiwiZm9yRWFjaCIsInNNZXRhTW9kZWxLZXkiLCJEYXRlIiwidG9JU09TdHJpbmciLCJvTWFuaWZlc3RDb250ZW50IiwiZ2V0TWFuaWZlc3QiLCJzTWFuaWZlc3RIYXNoIiwiaGFzaCIsInNhcEFwcCIsInZpZXdEYXRhIiwiZ2V0Vmlld0RhdGEiLCJnZXRJbnRlcmZhY2UiLCJTZXJ2aWNlIiwiQ2FjaGVIYW5kbGVyU2VydmljZUZhY3RvcnkiLCJfb0luc3RhbmNlUmVnaXN0cnkiLCJjcmVhdGVJbnN0YW5jZSIsIm9TZXJ2aWNlQ29udGV4dCIsInNNZXRhTW9kZWxJZCIsImdldElkIiwiY2FjaGVIYW5kbGVySW5zdGFuY2UiLCJhc3NpZ24iLCJzY29wZU9iamVjdCIsInNjb3BlVHlwZSIsImUiLCJnZXRJbnN0YW5jZSIsIlNlcnZpY2VGYWN0b3J5Il0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7O0FBT0EsV0FBU0EsZUFBVCxDQUF5QkMsSUFBekIsRUFBb0NDLEtBQXBDLEVBQWdEQyxzQkFBaEQsRUFBNkU7QUFDNUUsV0FBTyxJQUFJQyxPQUFKLENBQVksVUFBVUMsT0FBVixFQUFtQjtBQUNyQztBQUNDQyxNQUFBQSxNQUFELENBQ0VDLElBREYsQ0FDT04sSUFEUCxFQUNhO0FBQUVPLFFBQUFBLE1BQU0sRUFBRTtBQUFWLE9BRGIsRUFFRUMsSUFGRixDQUVPLFVBQVVDLFNBQVYsRUFBMEJDLFdBQTFCLEVBQTRDQyxLQUE1QyxFQUF3RDtBQUM3RDtBQUNBO0FBQ0E7QUFDQVQsUUFBQUEsc0JBQXNCLENBQUNGLElBQUQsQ0FBdEIsR0FBK0JXLEtBQUssQ0FBQ0MsaUJBQU4sQ0FBd0IsTUFBeEIsS0FBbUNELEtBQUssQ0FBQ0MsaUJBQU4sQ0FBd0IsZUFBeEIsQ0FBbEU7QUFDQVIsUUFBQUEsT0FBTyxDQUFDSCxLQUFLLEtBQUtDLHNCQUFzQixDQUFDRixJQUFELENBQWpDLENBQVA7QUFDQSxPQVJGLEVBU0VhLElBVEYsQ0FTTyxZQUFZO0FBQ2pCO0FBQ0FYLFFBQUFBLHNCQUFzQixDQUFDRixJQUFELENBQXRCLEdB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QUNBLEs7O1lBQ0RoRCxvQixHQUFBLDhCQUFxQlYsVUFBckIsRUFBaUQ7QUFDaEQsV0FBS3NELGtCQUFMLENBQXdCdEQsVUFBVSxDQUFDMEQsS0FBWCxFQUF4QixJQUE4QyxJQUE5QztBQUNBLEs7OztJQWpDdUNPLGM7O1NBb0MxQlosMEIiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBoYXNoIGZyb20gXCJzYXAvYmFzZS9zdHJpbmdzL2hhc2hcIjtcbmltcG9ydCB0eXBlIEFwcENvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwQ29tcG9uZW50XCI7XG5pbXBvcnQgQ2FjaGVNYW5hZ2VyIGZyb20gXCJzYXAvdWkvY29yZS9jYWNoZS9DYWNoZU1hbmFnZXJcIjtcbmltcG9ydCBTZXJ2aWNlIGZyb20gXCJzYXAvdWkvY29yZS9zZXJ2aWNlL1NlcnZpY2VcIjtcbmltcG9ydCBTZXJ2aWNlRmFjdG9yeSBmcm9tIFwic2FwL3VpL2NvcmUvc2VydmljZS9TZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHR5cGUgVUlDb21wb25lbnQgZnJvbSBcInNhcC91aS9jb3JlL1VJQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSB7IFNlcnZpY2VDb250ZXh0IH0gZnJvbSBcInR5cGVzL2V4dGVuc2lvbl90eXBlc1wiO1xuXG5mdW5jdGlvbiBnZXRNZXRhZGF0YUVUYWcoc1VybDogYW55LCBzRVRhZzogYW55LCBtVXBkYXRlZE1ldGFNb2RlbEVUYWdzOiBhbnkpIHtcblx0cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG5cdFx0Ly8gVGhlcmUgaXMgYW4gVXJsIGluIHRoZSBGRSBjYWNoZSwgdGhhdCdzIG5vdCBpbiB0aGUgTWV0YU1vZGVsIHlldCAtPiB3ZSBuZWVkIHRvIGNoZWNrIHRoZSBFVGFnXG5cdFx0KGpRdWVyeSBhcyBhbnkpXG5cdFx0XHQuYWpheChzVXJsLCB7IG1ldGhvZDogXCJHRVRcIiB9KVxuXHRcdFx0LmRvbmUoZnVuY3Rpb24gKG9SZXNwb25zZTogYW55LCBzVGV4dFN0YXR1czogYW55LCBqcVhIUjogYW55KSB7XG5cdFx0XHRcdC8vIEVUYWcgaXMgbm90IHRoZSBzYW1lIC0+IGludmFsaWRcblx0XHRcdFx0Ly8gRVRhZyBpcyB0aGUgc2FtZSAtPiB2YWxpZFxuXHRcdFx0XHQvLyBJZiBFVGFnIGlzIGF2YWlsYWJsZSB1c2UgaXQsIG90aGVyd2lzZSB1c2UgTGFzdC1Nb2RpZmllZFxuXHRcdFx0XHRtVXBkYXRlZE1ldGFNb2RlbEVUYWdzW3NVcmxdID0ganFYSFIuZ2V0UmVzcG9uc2VIZWFkZXIoXCJFVGFnXCIpIHx8IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKFwiTGFzdC1Nb2RpZmllZFwiKTtcblx0XHRcdFx0cmVzb2x2ZShzRVRhZyA9PT0gbVVwZGF0ZWRNZXRhTW9kZWxFVGFnc1tzVXJsXSk7XG5cdFx0XHR9KVxuXHRcdFx0LmZhaWwoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHQvLyBDYXNlIDJ6IC0gTWFrZSBzdXJlIHdlIHVwZGF0ZSB0aGUgbWFwIHNvIHRoYXQgd2UgaW52YWxpZGF0ZSB0aGUgY2FjaGVcblx0XHRcdFx0bVVwZGF0ZWRNZXRhTW9kZWxFVGFnc1tzVXJsXSA9IFwiXCI7XG5cdFx0XHRcdHJlc29sdmUoZmFsc2UpO1xuXHRcdFx0fSk7XG5cdH0pO1xufVxudHlwZSBDYWNoZUhhbmRsZXJTZXJ2aWNlU2V0dGluZ3MgPSB7XG5cdG1ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWw7XG59O1xuXG5leHBvcnQgY2xhc3MgQ2FjaGVIYW5kbGVyU2VydmljZSBleHRlbmRzIFNlcnZpY2U8Q2FjaGVIYW5kbGVyU2VydmljZVNldHRpbmdzPiB7XG5cdHJlc29sdmVGbjogYW55O1xuXHRyZWplY3RGbjogYW55O1xuXHRpbml0UHJvbWlzZSE6IFByb21pc2U8YW55PjtcblxuXHRvRmFjdG9yeSE6IENhY2hlSGFuZGxlclNlcnZpY2VGYWN0b3J5O1xuXHRvTWV0YU1vZGVsITogT0RhdGFNZXRhTW9kZWw7XG5cdG9BcHBDb21wb25lbnQhOiBBcHBDb21wb25lbnQ7XG5cdG9Db21wb25lbnQhOiBVSUNvbXBvbmVudDtcblx0bUNhY2hlTmVlZHNJbnZhbGlkYXRlOiBhbnk7XG5cblx0aW5pdCgpIHtcblx0XHRjb25zdCBvQ29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXHRcdHRoaXMub0ZhY3RvcnkgPSBvQ29udGV4dC5mYWN0b3J5O1xuXHRcdGNvbnN0IG1TZXR0aW5ncyA9IG9Db250ZXh0LnNldHRpbmdzO1xuXHRcdGlmICghbVNldHRpbmdzLm1ldGFNb2RlbCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiYSBgbWV0YU1vZGVsYCBwcm9wZXJ0eSBpcyBleHBlY3RlZCB3aGVuIGluc3RhbnRpYXRpbmcgdGhlIENhY2hlSGFuZGxlclNlcnZpY2VcIik7XG5cdFx0fVxuXHRcdHRoaXMub01ldGFNb2RlbCA9IG1TZXR0aW5ncy5tZXRhTW9kZWw7XG5cdFx0dGhpcy5vQXBwQ29tcG9uZW50ID0gbVNldHRpbmdzLmFwcENvbXBvbmVudDtcblx0XHR0aGlzLm9Db21wb25lbnQgPSBtU2V0dGluZ3MuY29tcG9uZW50O1xuXHRcdHRoaXMuaW5pdFByb21pc2UgPSAodGhpcy5vTWV0YU1vZGVsIGFzIGFueSkuZmV0Y2hFbnRpdHlDb250YWluZXIoKS50aGVuKCgpID0+IHtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH0pO1xuXHRcdHRoaXMubUNhY2hlTmVlZHNJbnZhbGlkYXRlID0ge307XG5cdH1cblx0ZXhpdCgpIHtcblx0XHQvLyBEZXJlZ2lzdGVyIGdsb2JhbCBpbnN0YW5jZVxuXHRcdHRoaXMub0ZhY3RvcnkucmVtb3ZlR2xvYmFsSW5zdGFuY2UodGhpcy5vTWV0YU1vZGVsKTtcblx0fVxuXHR2YWxpZGF0ZUNhY2hlS2V5KHNDYWNoZUlkZW50aWZpZXI6IGFueSk6IFByb21pc2U8c3RyaW5nPiB7XG5cdFx0Ly8gS2VlcCB0cmFjayBpZiB0aGUgY2FjaGUgd2lsbCBhbnl3YXkgbmVlZCB0byBiZSB1cGRhdGVkXG5cdFx0bGV0IGJDYWNoZU5lZWRVcGRhdGUgPSB0cnVlO1xuXHRcdHJldHVybiBDYWNoZU1hbmFnZXIuZ2V0KHNDYWNoZUlkZW50aWZpZXIpXG5cdFx0XHQudGhlbigobUNhY2hlT3V0cHV0OiBhbnkpID0+IHtcblx0XHRcdFx0Ly8gV2UgcHJvdmlkZSBhIGRlZmF1bHQga2V5IHNvIHRoYXQgYW4geG1sIHZpZXcgY2FjaGUgaXMgd3JpdHRlblxuXHRcdFx0XHRjb25zdCBtTWV0YU1vZGVsRVRhZ3MgPSB0aGlzLmdldEVUYWdzKCk7XG5cdFx0XHRcdGxldCBzVXBkYXRlZENhY2hlS2V5OiBzdHJpbmcgfCBudWxsID0gSlNPTi5zdHJpbmdpZnkobU1ldGFNb2RlbEVUYWdzKTtcblx0XHRcdFx0Ly8gQ2FzZSAjMWEgLSBObyBjYWNoZSwgc28gbUNhY2hlT3VwdXQgaXMgZW1wdHksIGNhY2hlS2V5ID0gY3VycmVudCBtZXRhbW9kZWwgRVRhZ3Ncblx0XHRcdFx0aWYgKG1DYWNoZU91dHB1dCkge1xuXHRcdFx0XHRcdC8vIENhc2UgIzIgLSBDYWNoZSBlbnRyeSBmb3VuZCwgY2hlY2sgaWYgaXQncyBzdGlsbCB2YWxpZFxuXHRcdFx0XHRcdGNvbnN0IG1VcGRhdGVkTWV0YU1vZGVsRVRhZ3M6IGFueSA9IHt9O1xuXHRcdFx0XHRcdGNvbnN0IG1DYWNoZWRFVGFncyA9IEpTT04ucGFyc2UobUNhY2hlT3V0cHV0LmNhY2hlZEVUYWdzKTtcblx0XHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoXG5cdFx0XHRcdFx0XHRPYmplY3Qua2V5cyhtQ2FjaGVkRVRhZ3MpLm1hcChmdW5jdGlvbiAoc1VybDogc3RyaW5nKSB7XG5cdFx0XHRcdFx0XHRcdC8vIENoZWNrIHZhbGlkaXR5IG9mIGV2ZXJ5IHNpbmdsZSBVcmwgdGhhdCdzIGluIHRoZSBGRSBDYWNoZSBvYmplY3Rcblx0XHRcdFx0XHRcdFx0aWYgKG1DYWNoZWRFVGFnc1tzVXJsXSkge1xuXHRcdFx0XHRcdFx0XHRcdGlmIChtTWV0YU1vZGVsRVRhZ3Nbc1VybF0pIHtcblx0XHRcdFx0XHRcdFx0XHRcdC8vIENhc2UgIzJhIC0gU2FtZSBudW1iZXIgb2YgRVRhZ3MgaW4gdGhlIGNhY2hlIGFuZCBpbiB0aGUgbWV0YWRhdGFcblx0XHRcdFx0XHRcdFx0XHRcdG1VcGRhdGVkTWV0YU1vZGVsRVRhZ3Nbc1VybF0gPSBtTWV0YU1vZGVsRVRhZ3Nbc1VybF07XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gbUNhY2hlZEVUYWdzW3NVcmxdID09PSBtTWV0YU1vZGVsRVRhZ3Nbc1VybF07XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdC8vIENhc2UgIzJiIC0gTm8gRVRhZyBpbiB0aGUgY2FjaGUgZm9yIHRoYXQgVVJMLCBjYWNoZWRFVGFncyB3YXMgZW5oYW5jZWRcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBnZXRNZXRhZGF0YUVUYWcoc1VybCwgbUNhY2hlZEVUYWdzW3NVcmxdLCBtVXBkYXRlZE1ldGFNb2RlbEVUYWdzKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gQ2FzZSAjMnogLSBMYXN0IFRlbXBsYXRpbmcgYWRkZWQgYW4gVVJMIHdpdGhvdXQgRVRhZ1xuXHRcdFx0XHRcdFx0XHRcdG1VcGRhdGVkTWV0YU1vZGVsRVRhZ3Nbc1VybF0gPSBtTWV0YU1vZGVsRVRhZ3Nbc1VybF07XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG1DYWNoZWRFVGFnc1tzVXJsXSA9PT0gbU1ldGFNb2RlbEVUYWdzW3NVcmxdO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdCkudGhlbihmdW5jdGlvbiAoYVZhbGlkRVRhZ3M6IGFueVtdKSB7XG5cdFx0XHRcdFx0XHRiQ2FjaGVOZWVkVXBkYXRlID0gYVZhbGlkRVRhZ3MuaW5kZXhPZihmYWxzZSkgPj0gMDtcblx0XHRcdFx0XHRcdC8vIENhc2UgIzJhIC0gU2FtZSBudW1iZXIgb2YgRVRhZ3MgYW5kIGFsbCB2YWxpZCAtPiB3ZSByZXR1cm4gdGhlIHZpZXdDYWNoZUtleVxuXHRcdFx0XHRcdFx0Ly8gQ2FzZSAjMmIgLSBEaWZmZXJlbnQgbnVtYmVyIG9mIEVUYWdzIGFuZCBzdGlsbCBhbGwgdmFsaWQgLT4gd2UgcmV0dXJuIHRoZSB2aWV3Q2FjaGVLZXlcblx0XHRcdFx0XHRcdC8vIENhc2UgIzJjIC0gU2FtZSBudW1iZXIgb2YgRVRhZ3MgYnV0IGRpZmZlcmVudCB2YWx1ZXMsIG1haW4gc2VydmljZSBFdGFnIGhhcyBjaGFuZ2VkLCB1c2UgdGhhdCBhcyBjYWNoZSBrZXlcblx0XHRcdFx0XHRcdC8vIENhc2UgIzJkIC0gRGlmZmVyZW50IG51bWJlciBvZiBFVGFncyBidXQgZGlmZmVyZW50IHZhbHVlLCBtYWluIHNlcnZpY2UgRXRhZyBvciBsaW5rZWQgc2VydmljZSBFdGFnIGhhcyBjaGFuZ2VkLCBuZXcgRVRhZ3Mgc2hvdWxkIGJlIHVzZWQgYXMgY2FjaGVLZXlcblx0XHRcdFx0XHRcdC8vIENhc2UgIzJ6IC0gQ2FjaGUgaGFzIGFuIGludmFsaWQgRXRhZyAtIGlmIHRoZXJlIGlzIGFuIEV0YWcgcHJvdmlkZWQgZnJvbSBNZXRhTW9kZWwgdXNlIGl0IGFzIGNhY2hlS2V5XG5cdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdE9iamVjdC5rZXlzKG1VcGRhdGVkTWV0YU1vZGVsRVRhZ3MpLnNvbWUoZnVuY3Rpb24gKHNVcmw6IHN0cmluZykge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAhbVVwZGF0ZWRNZXRhTW9kZWxFVGFnc1tzVXJsXTtcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHQvLyBBdCBsZWFzdCBvbmUgb2YgdGhlIE1ldGFNb2RlbCBVUkxzIGRvZXNuJ3QgcHJvdmlkZSBhbiBFVGFnLCBzbyBubyBjYWNoaW5nXG5cdFx0XHRcdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGJDYWNoZU5lZWRVcGRhdGUgPyBKU09OLnN0cmluZ2lmeShtVXBkYXRlZE1ldGFNb2RlbEVUYWdzKSA6IG1DYWNoZU91dHB1dC52aWV3Q2FjaGVLZXk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdFx0T2JqZWN0LmtleXMobU1ldGFNb2RlbEVUYWdzKS5zb21lKGZ1bmN0aW9uIChzVXJsOiBzdHJpbmcpIHtcblx0XHRcdFx0XHRcdHJldHVybiAhbU1ldGFNb2RlbEVUYWdzW3NVcmxdO1xuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdC8vIENoZWNrIGlmIGNhY2hlIGNhbiBiZSB1c2VkIChhbGwgdGhlIG1ldGFkYXRhIGFuZCBhbm5vdGF0aW9ucyBoYXZlIHRvIHByb3ZpZGUgYXQgbGVhc3QgYSBFVGFnIG9yIGEgTGFzdC1Nb2RpZmllZCBoZWFkZXIpXG5cdFx0XHRcdFx0Ly8gQ2FzZSAjMS1iIC0gTm8gQ2FjaGUsIG1DYWNoZU91cHV0IGlzIGVtcHR5LCBidXQgbWV0YW1vZGVsIGV0YWdzIGNhbm5vdCBiZSB1c2VkLCBzbyBubyBjYWNoaW5nXG5cdFx0XHRcdFx0YkNhY2hlTmVlZFVwZGF0ZSA9IHRydWU7XG5cdFx0XHRcdFx0c1VwZGF0ZWRDYWNoZUtleSA9IG51bGw7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHNVcGRhdGVkQ2FjaGVLZXk7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKCgpID0+IHtcblx0XHRcdFx0Ly8gRG9uJ3QgdXNlIHZpZXcgY2FjaGUgaW4gY2FzZSBvZiBpc3N1ZXMgd2l0aCB0aGUgTFJVIGNhY2hlXG5cdFx0XHRcdGJDYWNoZU5lZWRVcGRhdGUgPSB0cnVlO1xuXHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdH0pXG5cdFx0XHQudGhlbigoc0NhY2hlS2V5OiBhbnkpID0+IHtcblx0XHRcdFx0dGhpcy5tQ2FjaGVOZWVkc0ludmFsaWRhdGVbc0NhY2hlSWRlbnRpZmllcl0gPSBiQ2FjaGVOZWVkVXBkYXRlO1xuXHRcdFx0XHRyZXR1cm4gc0NhY2hlS2V5O1xuXHRcdFx0fSk7XG5cdH1cblx0aW52YWxpZGF0ZUlmTmVlZGVkKHNDYWNoZUtleXM6IHN0cmluZywgc0NhY2hlSWRlbnRpZmllcjogc3RyaW5nKSB7XG5cdFx0Ly8gQ2hlY2sgRkUgY2FjaGUgYWZ0ZXIgWE1MIHZpZXcgaXMgcHJvY2Vzc2VkIGNvbXBsZXRlbHlcblx0XHRjb25zdCBzRGF0YVNvdXJjZUVUYWdzID0gSlNPTi5zdHJpbmdpZnkodGhpcy5nZXRFVGFncygpKTtcblx0XHRpZiAodGhpcy5tQ2FjaGVOZWVkc0ludmFsaWRhdGVbc0NhY2hlSWRlbnRpZmllcl0gfHwgKHNDYWNoZUtleXMgJiYgc0NhY2hlS2V5cyAhPT0gc0RhdGFTb3VyY2VFVGFncykpIHtcblx0XHRcdC8vIFNvbWV0aGluZyBpbiB0aGUgc291cmNlcyBhbmQvb3IgaXRzIEVUYWdzIGNoYW5nZWQgLT4gdXBkYXRlIHRoZSBGRSBjYWNoZVxuXHRcdFx0Y29uc3QgbUNhY2hlS2V5czogYW55ID0ge307XG5cdFx0XHQvLyBOZXcgRVRhZ3MgdGhhdCBuZWVkIHRvIGJlIHZlcmlmaWVkLCBtYXkgZGlmZmVyIGZyb20gdGhlIG9uZSB1c2VkIHRvIGdlbmVyYXRlIHRoZSB2aWV3XG5cdFx0XHRtQ2FjaGVLZXlzLmNhY2hlZEVUYWdzID0gc0RhdGFTb3VyY2VFVGFncztcblx0XHRcdC8vIE9sZCBFVGFncyB0aGF0IGFyZSB1c2VkIGZvciB0aGUgeG1sIHZpZXcgY2FjaGUgYXMga2V5XG5cdFx0XHRtQ2FjaGVLZXlzLnZpZXdDYWNoZUtleSA9IHNDYWNoZUtleXM7XG5cdFx0XHRyZXR1cm4gQ2FjaGVNYW5hZ2VyLnNldChzQ2FjaGVJZGVudGlmaWVyLCBtQ2FjaGVLZXlzKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHRcdH1cblx0fVxuXHRnZXRFVGFncygpIHtcblx0XHRjb25zdCBtTWV0YU1vZGVsRVRhZ3MgPSAodGhpcy5vTWV0YU1vZGVsIGFzIGFueSkuZ2V0RVRhZ3MoKTtcblx0XHQvLyBFVGFncyBmcm9tIFVJNSBhcmUgZWl0aGVyIGEgRGF0ZSBvciBhIHN0cmluZywgbGV0J3MgcmF0aW9uYWxpemUgdGhhdFxuXHRcdE9iamVjdC5rZXlzKG1NZXRhTW9kZWxFVGFncykuZm9yRWFjaChmdW5jdGlvbiAoc01ldGFNb2RlbEtleTogc3RyaW5nKSB7XG5cdFx0XHRpZiAobU1ldGFNb2RlbEVUYWdzW3NNZXRhTW9kZWxLZXldIGluc3RhbmNlb2YgRGF0ZSkge1xuXHRcdFx0XHQvLyBNZXRhTW9kZWwgY29udGFpbnMgYSBMYXN0LU1vZGlmaWVkIHRpbWVzdGFtcCBmb3IgdGhlIFVSTFxuXHRcdFx0XHRtTWV0YU1vZGVsRVRhZ3Nbc01ldGFNb2RlbEtleV0gPSBtTWV0YU1vZGVsRVRhZ3Nbc01ldGFNb2RlbEtleV0udG9JU09TdHJpbmcoKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdC8vIGFkZCBhbHNvIHRoZSBtYW5pZmVzdCBoYXNoIGFzIFVJNSBvbmx5IGNvbnNpZGVycyB0aGUgcm9vdCBjb21wb25lbnQgaGFzaFxuXHRcdGNvbnN0IG9NYW5pZmVzdENvbnRlbnQ6IGFueSA9IHRoaXMub0FwcENvbXBvbmVudC5nZXRNYW5pZmVzdCgpO1xuXHRcdGNvbnN0IHNNYW5pZmVzdEhhc2ggPSBoYXNoKFxuXHRcdFx0SlNPTi5zdHJpbmdpZnkoe1xuXHRcdFx0XHRzYXBBcHA6IG9NYW5pZmVzdENvbnRlbnRbXCJzYXAuYXBwXCJdLFxuXHRcdFx0XHR2aWV3RGF0YTogKHRoaXMub0NvbXBvbmVudCBhcyBhbnkpLmdldFZpZXdEYXRhKClcblx0XHRcdH0pXG5cdFx0KTtcblx0XHRtTWV0YU1vZGVsRVRhZ3NbXCJtYW5pZmVzdFwiXSA9IHNNYW5pZmVzdEhhc2g7XG5cdFx0cmV0dXJuIG1NZXRhTW9kZWxFVGFncztcblx0fVxuXHRnZXRJbnRlcmZhY2UoKTogYW55IHtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxufVxuXG5jbGFzcyBDYWNoZUhhbmRsZXJTZXJ2aWNlRmFjdG9yeSBleHRlbmRzIFNlcnZpY2VGYWN0b3J5PENhY2hlSGFuZGxlclNlcnZpY2VTZXR0aW5ncz4ge1xuXHRfb0luc3RhbmNlUmVnaXN0cnk6IFJlY29yZDxzdHJpbmcsIENhY2hlSGFuZGxlclNlcnZpY2UgfCBudWxsPiA9IHt9O1xuXHRjcmVhdGVJbnN0YW5jZShvU2VydmljZUNvbnRleHQ6IFNlcnZpY2VDb250ZXh0PENhY2hlSGFuZGxlclNlcnZpY2VTZXR0aW5ncz4pIHtcblx0XHRjb25zdCBzTWV0YU1vZGVsSWQgPSBvU2VydmljZUNvbnRleHQuc2V0dGluZ3MubWV0YU1vZGVsLmdldElkKCk7XG5cdFx0bGV0IGNhY2hlSGFuZGxlckluc3RhbmNlID0gdGhpcy5fb0luc3RhbmNlUmVnaXN0cnlbc01ldGFNb2RlbElkXTtcblx0XHRpZiAoIWNhY2hlSGFuZGxlckluc3RhbmNlKSB7XG5cdFx0XHR0aGlzLl9vSW5zdGFuY2VSZWdpc3RyeVtzTWV0YU1vZGVsSWRdID0gY2FjaGVIYW5kbGVySW5zdGFuY2UgPSBuZXcgQ2FjaGVIYW5kbGVyU2VydmljZShcblx0XHRcdFx0T2JqZWN0LmFzc2lnbihcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRmYWN0b3J5OiB0aGlzLFxuXHRcdFx0XHRcdFx0c2NvcGVPYmplY3Q6IG51bGwsXG5cdFx0XHRcdFx0XHRzY29wZVR5cGU6IFwic2VydmljZVwiXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRvU2VydmljZUNvbnRleHRcblx0XHRcdFx0KVxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gY2FjaGVIYW5kbGVySW5zdGFuY2UuaW5pdFByb21pc2Vcblx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0cmV0dXJuIHRoaXMuX29JbnN0YW5jZVJlZ2lzdHJ5W3NNZXRhTW9kZWxJZF0gYXMgQ2FjaGVIYW5kbGVyU2VydmljZTtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goKGU6IGFueSkgPT4ge1xuXHRcdFx0XHQvLyBJbiBjYXNlIG9mIGVycm9yIGRlbGV0ZSB0aGUgZ2xvYmFsIGluc3RhbmNlO1xuXHRcdFx0XHR0aGlzLl9vSW5zdGFuY2VSZWdpc3RyeVtzTWV0YU1vZGVsSWRdID0gbnVsbDtcblx0XHRcdFx0dGhyb3cgZTtcblx0XHRcdH0pO1xuXHR9XG5cdGdldEluc3RhbmNlKG9NZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsKSB7XG5cdFx0cmV0dXJuIHRoaXMuX29JbnN0YW5jZVJlZ2lzdHJ5W29NZXRhTW9kZWwuZ2V0SWQoKV07XG5cdH1cblx0cmVtb3ZlR2xvYmFsSW5zdGFuY2Uob01ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwpIHtcblx0XHR0aGlzLl9vSW5zdGFuY2VSZWdpc3RyeVtvTWV0YU1vZGVsLmdldElkKCldID0gbnVsbDtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBDYWNoZUhhbmRsZXJTZXJ2aWNlRmFjdG9yeTtcbiJdfQ==
@@ -1,25 +1,25 @@
1
+ import hash from "sap/base/strings/hash";
2
+ import type AppComponent from "sap/fe/core/AppComponent";
3
+ import CacheManager from "sap/ui/core/cache/CacheManager";
1
4
  import Service from "sap/ui/core/service/Service";
2
5
  import ServiceFactory from "sap/ui/core/service/ServiceFactory";
3
- import CacheManager from "sap/ui/core/cache/CacheManager";
4
- import hash from "sap/base/strings/hash";
5
- import ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
6
- import AppComponent from "sap/fe/core/AppComponent";
7
- import UIComponent from "sap/ui/core/UIComponent";
8
- import { ServiceContext } from "types/extension_types";
6
+ import type UIComponent from "sap/ui/core/UIComponent";
7
+ import type ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
8
+ import type { ServiceContext } from "types/extension_types";
9
9
 
10
10
  function getMetadataETag(sUrl: any, sETag: any, mUpdatedMetaModelETags: any) {
11
- return new Promise(function(resolve) {
11
+ return new Promise(function (resolve) {
12
12
  // There is an Url in the FE cache, that's not in the MetaModel yet -> we need to check the ETag
13
13
  (jQuery as any)
14
14
  .ajax(sUrl, { method: "GET" })
15
- .done(function(oResponse: any, sTextStatus: any, jqXHR: any) {
15
+ .done(function (oResponse: any, sTextStatus: any, jqXHR: any) {
16
16
  // ETag is not the same -> invalid
17
17
  // ETag is the same -> valid
18
18
  // If ETag is available use it, otherwise use Last-Modified
19
19
  mUpdatedMetaModelETags[sUrl] = jqXHR.getResponseHeader("ETag") || jqXHR.getResponseHeader("Last-Modified");
20
20
  resolve(sETag === mUpdatedMetaModelETags[sUrl]);
21
21
  })
22
- .fail(function() {
22
+ .fail(function () {
23
23
  // Case 2z - Make sure we update the map so that we invalidate the cache
24
24
  mUpdatedMetaModelETags[sUrl] = "";
25
25
  resolve(false);
@@ -74,7 +74,7 @@ export class CacheHandlerService extends Service<CacheHandlerServiceSettings> {
74
74
  const mUpdatedMetaModelETags: any = {};
75
75
  const mCachedETags = JSON.parse(mCacheOutput.cachedETags);
76
76
  return Promise.all(
77
- Object.keys(mCachedETags).map(function(sUrl: string) {
77
+ Object.keys(mCachedETags).map(function (sUrl: string) {
78
78
  // Check validity of every single Url that's in the FE Cache object
79
79
  if (mCachedETags[sUrl]) {
80
80
  if (mMetaModelETags[sUrl]) {
@@ -91,7 +91,7 @@ export class CacheHandlerService extends Service<CacheHandlerServiceSettings> {
91
91
  return mCachedETags[sUrl] === mMetaModelETags[sUrl];
92
92
  }
93
93
  })
94
- ).then(function(aValidETags: any[]) {
94
+ ).then(function (aValidETags: any[]) {
95
95
  bCacheNeedUpdate = aValidETags.indexOf(false) >= 0;
96
96
  // Case #2a - Same number of ETags and all valid -> we return the viewCacheKey
97
97
  // Case #2b - Different number of ETags and still all valid -> we return the viewCacheKey
@@ -99,7 +99,7 @@ export class CacheHandlerService extends Service<CacheHandlerServiceSettings> {
99
99
  // Case #2d - Different number of ETags but different value, main service Etag or linked service Etag has changed, new ETags should be used as cacheKey
100
100
  // Case #2z - Cache has an invalid Etag - if there is an Etag provided from MetaModel use it as cacheKey
101
101
  if (
102
- Object.keys(mUpdatedMetaModelETags).some(function(sUrl: string) {
102
+ Object.keys(mUpdatedMetaModelETags).some(function (sUrl: string) {
103
103
  return !mUpdatedMetaModelETags[sUrl];
104
104
  })
105
105
  ) {
@@ -110,7 +110,7 @@ export class CacheHandlerService extends Service<CacheHandlerServiceSettings> {
110
110
  }
111
111
  });
112
112
  } else if (
113
- Object.keys(mMetaModelETags).some(function(sUrl: string) {
113
+ Object.keys(mMetaModelETags).some(function (sUrl: string) {
114
114
  return !mMetaModelETags[sUrl];
115
115
  })
116
116
  ) {
@@ -149,7 +149,7 @@ export class CacheHandlerService extends Service<CacheHandlerServiceSettings> {
149
149
  getETags() {
150
150
  const mMetaModelETags = (this.oMetaModel as any).getETags();
151
151
  // ETags from UI5 are either a Date or a string, let's rationalize that
152
- Object.keys(mMetaModelETags).forEach(function(sMetaModelKey: string) {
152
+ Object.keys(mMetaModelETags).forEach(function (sMetaModelKey: string) {
153
153
  if (mMetaModelETags[sMetaModelKey] instanceof Date) {
154
154
  // MetaModel contains a Last-Modified timestamp for the URL
155
155
  mMetaModelETags[sMetaModelKey] = mMetaModelETags[sMetaModelKey].toISOString();
@@ -103,4 +103,4 @@ sap.ui.define(["sap/ui/core/Core", "sap/ui/core/service/Service", "sap/ui/core/s
103
103
 
104
104
  return EnvironmentServiceFactory;
105
105
  }, false);
106
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkVudmlyb25tZW50U2VydmljZUZhY3RvcnkudHMiXSwibmFtZXMiOlsiRW52aXJvbm1lbnRDYXBhYmlsaXRpZXNTZXJ2aWNlIiwiaW5pdCIsImluaXRQcm9taXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJyZXNvbHZlRm4iLCJyZWplY3RGbiIsIm9Db250ZXh0IiwiZ2V0Q29udGV4dCIsImVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwiT2JqZWN0IiwiYXNzaWduIiwiRGVmYXVsdEVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwiVmVyc2lvbkluZm8iLCJsb2FkIiwidGhlbiIsInZlcnNpb25JbmZvIiwiQ2hhcnQiLCJsaWJyYXJpZXMiLCJmaW5kIiwibGliIiwibmFtZSIsIk1pY3JvQ2hhcnQiLCJVU2hlbGwiLCJzYXAiLCJ1c2hlbGwiLCJDb250YWluZXIiLCJJbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJzZXR0aW5ncyIsImNhdGNoIiwicmVzb2x2ZUxpYnJhcnkiLCJsaWJyYXJ5TmFtZSIsIkNvcmUiLCJsb2FkTGlicmFyeSIsInJlcGxhY2UiLCJhc3luYyIsImUiLCJzZXRDYXBhYmlsaXRpZXMiLCJvQ2FwYWJpbGl0aWVzIiwic2V0Q2FwYWJpbGl0eSIsImNhcGFiaWxpdHkiLCJ2YWx1ZSIsImdldENhcGFiaWxpdGllcyIsImdldEludGVyZmFjZSIsIlNlcnZpY2UiLCJFbnZpcm9ubWVudFNlcnZpY2VGYWN0b3J5IiwiY3JlYXRlSW5zdGFuY2UiLCJvU2VydmljZUNvbnRleHQiLCJlbnZpcm9ubWVudENhcGFiaWxpdGllc1NlcnZpY2UiLCJTZXJ2aWNlRmFjdG9yeSJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7TUFLYUEsOEI7Ozs7Ozs7Ozs7QUFLWjtXQUVBQyxJLEdBQUEsZ0JBQU87QUFBQTs7QUFDTixXQUFLQyxXQUFMLEdBQW1CLElBQUlDLE9BQUosQ0FBWSxVQUFDQyxPQUFELEVBQVVDLE1BQVYsRUFBcUI7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eEUsVUFBTUMsOEJBQThCLEdBQUcsSUFBSWpELDhCQUFKLENBQW1DZ0QsZUFBbkMsQ0FBdkM7QUFDQSxhQUFPQyw4QkFBOEIsQ0FBQy9DLFdBQXRDO0FBQ0EsSzs7O0lBSnNDZ0QsYzs7U0FPekJKLHlCIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29yZSBmcm9tIFwic2FwL3VpL2NvcmUvQ29yZVwiO1xuaW1wb3J0IFNlcnZpY2UgZnJvbSBcInNhcC91aS9jb3JlL3NlcnZpY2UvU2VydmljZVwiO1xuaW1wb3J0IFNlcnZpY2VGYWN0b3J5IGZyb20gXCJzYXAvdWkvY29yZS9zZXJ2aWNlL1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgVmVyc2lvbkluZm8gZnJvbSBcInNhcC91aS9WZXJzaW9uSW5mb1wiO1xuaW1wb3J0IHsgQ29yZUV4LCBTZXJ2aWNlQ29udGV4dCB9IGZyb20gXCJ0eXBlcy9leHRlbnNpb25fdHlwZXNcIjtcbmltcG9ydCB7IERlZmF1bHRFbnZpcm9ubWVudENhcGFiaWxpdGllcywgRW52aXJvbm1lbnRDYXBhYmlsaXRpZXMgfSBmcm9tIFwiLi4vY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcblxuZXhwb3J0IGNsYXNzIEVudmlyb25tZW50Q2FwYWJpbGl0aWVzU2VydmljZSBleHRlbmRzIFNlcnZpY2U8RW52aXJvbm1lbnRDYXBhYmlsaXRpZXM+IHtcblx0cmVzb2x2ZUZuOiBhbnk7XG5cdHJlamVjdEZuOiBhbnk7XG5cdGluaXRQcm9taXNlITogUHJvbWlzZTxhbnk+O1xuXHRlbnZpcm9ubWVudENhcGFiaWxpdGllcyE6IEVudmlyb25tZW50Q2FwYWJpbGl0aWVzO1xuXHQvLyAhOiBtZWFucyB0aGF0IHdlIGtub3cgaXQgd2lsbCBiZSBhc3NpZ25lZCBiZWZvcmUgdXNhZ2VcblxuXHRpbml0KCkge1xuXHRcdHRoaXMuaW5pdFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHR0aGlzLnJlc29sdmVGbiA9IHJlc29sdmU7XG5cdFx0XHR0aGlzLnJlamVjdEZuID0gcmVqZWN0O1xuXHRcdH0pO1xuXHRcdGNvbnN0IG9Db250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cdFx0dGhpcy5lbnZpcm9ubWVudENhcGFiaWxpdGllcyA9IE9iamVjdC5hc3NpZ24oe30sIERlZmF1bHRFbnZpcm9ubWVudENhcGFiaWxpdGllcyk7XG5cdFx0VmVyc2lvbkluZm8ubG9hZCgpXG5cdFx0XHQudGhlbigodmVyc2lvbkluZm86IGFueSkgPT4ge1xuXHRcdFx0XHR0aGlzLmVudmlyb25tZW50Q2FwYWJpbGl0aWVzLkNoYXJ0ID0gISF2ZXJzaW9uSW5mby5saWJyYXJpZXMuZmluZCgobGliOiBhbnkpID0+IGxpYi5uYW1lID09PSBcInNhcC52aXpcIik7XG5cdFx0XHRcdHRoaXMuZW52aXJvbm1lbnRDYXBhYmlsaXRpZXMuTWljcm9DaGFydCA9ICEhdmVyc2lvbkluZm8ubGlicmFyaWVzLmZpbmQoXG5cdFx0XHRcdFx0KGxpYjogYW55KSA9PiBsaWIubmFtZSA9PT0gXCJzYXAuc3VpdGUudWkubWljcm9jaGFydFwiXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHRoaXMuZW52aXJvbm1lbnRDYXBhYmlsaXRpZXMuVVNoZWxsID0gISEoc2FwICYmIHNhcC51c2hlbGwgJiYgc2FwLnVzaGVsbC5Db250YWluZXIpO1xuXHRcdFx0XHR0aGlzLmVudmlyb25tZW50Q2FwYWJpbGl0aWVzLkludGVudEJhc2VkTmF2aWdhdGlvbiA9ICEhKHNhcCAmJiBzYXAudXNoZWxsICYmIHNhcC51c2hlbGwuQ29udGFpbmVyKTtcblx0XHRcdFx0dGhpcy5lbnZpcm9ubWVudENhcGFiaWxpdGllcyA9IE9iamVjdC5hc3NpZ24odGhpcy5lbnZpcm9ubWVudENhcGFiaWxpdGllcywgb0NvbnRleHQuc2V0dGluZ3MpO1xuXHRcdFx0XHR0aGlzLnJlc29sdmVGbih0aGlzKTtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2godGhpcy5yZWplY3RGbik7XG5cdH1cblxuXHRyZXNvbHZlTGlicmFyeShsaWJyYXJ5TmFtZTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHQoQ29yZSBhcyBDb3JlRXgpXG5cdFx0XHRcdFx0LmxvYWRMaWJyYXJ5KGAke2xpYnJhcnlOYW1lLnJlcGxhY2UoL1xcLi9nLCBcIi9cIil9YCwgeyBhc3luYzogdHJ1ZSB9KVxuXHRcdFx0XHRcdC50aGVuKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHJlc29sdmUodHJ1ZSk7XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0cmVzb2x2ZShmYWxzZSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdHJlc29sdmUoZmFsc2UpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0cHVibGljIHNldENhcGFiaWxpdGllcyhvQ2FwYWJpbGl0aWVzOiBFbnZpcm9ubWVudENhcGFiaWxpdGllcykge1xuXHRcdHRoaXMuZW52aXJvbm1lbnRDYXBhYmlsaXRpZXMgPSBvQ2FwYWJpbGl0aWVzO1xuXHR9XG5cblx0cHVibGljIHNldENhcGFiaWxpdHkoY2FwYWJpbGl0eToga2V5b2YgRW52aXJvbm1lbnRDYXBhYmlsaXRpZXMsIHZhbHVlOiBib29sZWFuKSB7XG5cdFx0dGhpcy5lbnZpcm9ubWVudENhcGFiaWxpdGllc1tjYXBhYmlsaXR5XSA9IHZhbHVlO1xuXHR9XG5cblx0cHVibGljIGdldENhcGFiaWxpdGllcygpIHtcblx0XHRyZXR1cm4gdGhpcy5lbnZpcm9ubWVudENhcGFiaWxpdGllcztcblx0fVxuXG5cdGdldEludGVyZmFjZSgpOiBhbnkge1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG59XG5cbmNsYXNzIEVudmlyb25tZW50U2VydmljZUZhY3RvcnkgZXh0ZW5kcyBTZXJ2aWNlRmFjdG9yeTxFbnZpcm9ubWVudENhcGFiaWxpdGllcz4ge1xuXHRjcmVhdGVJbnN0YW5jZShvU2VydmljZUNvbnRleHQ6IFNlcnZpY2VDb250ZXh0PEVudmlyb25tZW50Q2FwYWJpbGl0aWVzPikge1xuXHRcdGNvbnN0IGVudmlyb25tZW50Q2FwYWJpbGl0aWVzU2VydmljZSA9IG5ldyBFbnZpcm9ubWVudENhcGFiaWxpdGllc1NlcnZpY2Uob1NlcnZpY2VDb250ZXh0KTtcblx0XHRyZXR1cm4gZW52aXJvbm1lbnRDYXBhYmlsaXRpZXNTZXJ2aWNlLmluaXRQcm9taXNlO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEVudmlyb25tZW50U2VydmljZUZhY3Rvcnk7XG4iXX0=
106
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkVudmlyb25tZW50U2VydmljZUZhY3RvcnkudHMiXSwibmFtZXMiOlsiRW52aXJvbm1lbnRDYXBhYmlsaXRpZXNTZXJ2aWNlIiwiaW5pdCIsImluaXRQcm9taXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJyZXNvbHZlRm4iLCJyZWplY3RGbiIsIm9Db250ZXh0IiwiZ2V0Q29udGV4dCIsImVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwiT2JqZWN0IiwiYXNzaWduIiwiRGVmYXVsdEVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwiVmVyc2lvbkluZm8iLCJsb2FkIiwidGhlbiIsInZlcnNpb25JbmZvIiwiQ2hhcnQiLCJsaWJyYXJpZXMiLCJmaW5kIiwibGliIiwibmFtZSIsIk1pY3JvQ2hhcnQiLCJVU2hlbGwiLCJzYXAiLCJ1c2hlbGwiLCJDb250YWluZXIiLCJJbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJzZXR0aW5ncyIsImNhdGNoIiwicmVzb2x2ZUxpYnJhcnkiLCJsaWJyYXJ5TmFtZSIsIkNvcmUiLCJsb2FkTGlicmFyeSIsInJlcGxhY2UiLCJhc3luYyIsImUiLCJzZXRDYXBhYmlsaXRpZXMiLCJvQ2FwYWJpbGl0aWVzIiwic2V0Q2FwYWJpbGl0eSIsImNhcGFiaWxpdHkiLCJ2YWx1ZSIsImdldENhcGFiaWxpdGllcyIsImdldEludGVyZmFjZSIsIlNlcnZpY2UiLCJFbnZpcm9ubWVudFNlcnZpY2VGYWN0b3J5IiwiY3JlYXRlSW5zdGFuY2UiLCJvU2VydmljZUNvbnRleHQiLCJlbnZpcm9ubWVudENhcGFiaWxpdGllc1NlcnZpY2UiLCJTZXJ2aWNlRmFjdG9yeSJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7TUFNYUEsOEI7Ozs7Ozs7Ozs7QUFLWjtXQUVBQyxJLEdBQUEsZ0JBQU87QUFBQTs7QUFDTixXQUFLQyxXQUFMLEdBQW1CLElBQUlDLE9BQUosQ0FBWSxVQUFDQyxPQUFELEVBQVVDLE1BQVYsRUFBcUI7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eEUsVUFBTUMsOEJBQThCLEdBQUcsSUFBSWpELDhCQUFKLENBQW1DZ0QsZUFBbkMsQ0FBdkM7QUFDQSxhQUFPQyw4QkFBOEIsQ0FBQy9DLFdBQXRDO0FBQ0EsSzs7O0lBSnNDZ0QsYzs7U0FPekJKLHlCIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29yZSBmcm9tIFwic2FwL3VpL2NvcmUvQ29yZVwiO1xuaW1wb3J0IFNlcnZpY2UgZnJvbSBcInNhcC91aS9jb3JlL3NlcnZpY2UvU2VydmljZVwiO1xuaW1wb3J0IFNlcnZpY2VGYWN0b3J5IGZyb20gXCJzYXAvdWkvY29yZS9zZXJ2aWNlL1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgVmVyc2lvbkluZm8gZnJvbSBcInNhcC91aS9WZXJzaW9uSW5mb1wiO1xuaW1wb3J0IHR5cGUgeyBDb3JlRXgsIFNlcnZpY2VDb250ZXh0IH0gZnJvbSBcInR5cGVzL2V4dGVuc2lvbl90eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBFbnZpcm9ubWVudENhcGFiaWxpdGllcyB9IGZyb20gXCIuLi9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHsgRGVmYXVsdEVudmlyb25tZW50Q2FwYWJpbGl0aWVzIH0gZnJvbSBcIi4uL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5cbmV4cG9ydCBjbGFzcyBFbnZpcm9ubWVudENhcGFiaWxpdGllc1NlcnZpY2UgZXh0ZW5kcyBTZXJ2aWNlPEVudmlyb25tZW50Q2FwYWJpbGl0aWVzPiB7XG5cdHJlc29sdmVGbjogYW55O1xuXHRyZWplY3RGbjogYW55O1xuXHRpbml0UHJvbWlzZSE6IFByb21pc2U8YW55Pjtcblx0ZW52aXJvbm1lbnRDYXBhYmlsaXRpZXMhOiBFbnZpcm9ubWVudENhcGFiaWxpdGllcztcblx0Ly8gITogbWVhbnMgdGhhdCB3ZSBrbm93IGl0IHdpbGwgYmUgYXNzaWduZWQgYmVmb3JlIHVzYWdlXG5cblx0aW5pdCgpIHtcblx0XHR0aGlzLmluaXRQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0dGhpcy5yZXNvbHZlRm4gPSByZXNvbHZlO1xuXHRcdFx0dGhpcy5yZWplY3RGbiA9IHJlamVjdDtcblx0XHR9KTtcblx0XHRjb25zdCBvQ29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXHRcdHRoaXMuZW52aXJvbm1lbnRDYXBhYmlsaXRpZXMgPSBPYmplY3QuYXNzaWduKHt9LCBEZWZhdWx0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMpO1xuXHRcdFZlcnNpb25JbmZvLmxvYWQoKVxuXHRcdFx0LnRoZW4oKHZlcnNpb25JbmZvOiBhbnkpID0+IHtcblx0XHRcdFx0dGhpcy5lbnZpcm9ubWVudENhcGFiaWxpdGllcy5DaGFydCA9ICEhdmVyc2lvbkluZm8ubGlicmFyaWVzLmZpbmQoKGxpYjogYW55KSA9PiBsaWIubmFtZSA9PT0gXCJzYXAudml6XCIpO1xuXHRcdFx0XHR0aGlzLmVudmlyb25tZW50Q2FwYWJpbGl0aWVzLk1pY3JvQ2hhcnQgPSAhIXZlcnNpb25JbmZvLmxpYnJhcmllcy5maW5kKFxuXHRcdFx0XHRcdChsaWI6IGFueSkgPT4gbGliLm5hbWUgPT09IFwic2FwLnN1aXRlLnVpLm1pY3JvY2hhcnRcIlxuXHRcdFx0XHQpO1xuXHRcdFx0XHR0aGlzLmVudmlyb25tZW50Q2FwYWJpbGl0aWVzLlVTaGVsbCA9ICEhKHNhcCAmJiBzYXAudXNoZWxsICYmIHNhcC51c2hlbGwuQ29udGFpbmVyKTtcblx0XHRcdFx0dGhpcy5lbnZpcm9ubWVudENhcGFiaWxpdGllcy5JbnRlbnRCYXNlZE5hdmlnYXRpb24gPSAhIShzYXAgJiYgc2FwLnVzaGVsbCAmJiBzYXAudXNoZWxsLkNvbnRhaW5lcik7XG5cdFx0XHRcdHRoaXMuZW52aXJvbm1lbnRDYXBhYmlsaXRpZXMgPSBPYmplY3QuYXNzaWduKHRoaXMuZW52aXJvbm1lbnRDYXBhYmlsaXRpZXMsIG9Db250ZXh0LnNldHRpbmdzKTtcblx0XHRcdFx0dGhpcy5yZXNvbHZlRm4odGhpcyk7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKHRoaXMucmVqZWN0Rm4pO1xuXHR9XG5cblx0cmVzb2x2ZUxpYnJhcnkobGlicmFyeU5hbWU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRcdHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0KENvcmUgYXMgQ29yZUV4KVxuXHRcdFx0XHRcdC5sb2FkTGlicmFyeShgJHtsaWJyYXJ5TmFtZS5yZXBsYWNlKC9cXC4vZywgXCIvXCIpfWAsIHsgYXN5bmM6IHRydWUgfSlcblx0XHRcdFx0XHQudGhlbihmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRyZXNvbHZlKHRydWUpO1xuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0LmNhdGNoKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHJlc29sdmUoZmFsc2UpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRyZXNvbHZlKGZhbHNlKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdHB1YmxpYyBzZXRDYXBhYmlsaXRpZXMob0NhcGFiaWxpdGllczogRW52aXJvbm1lbnRDYXBhYmlsaXRpZXMpIHtcblx0XHR0aGlzLmVudmlyb25tZW50Q2FwYWJpbGl0aWVzID0gb0NhcGFiaWxpdGllcztcblx0fVxuXG5cdHB1YmxpYyBzZXRDYXBhYmlsaXR5KGNhcGFiaWxpdHk6IGtleW9mIEVudmlyb25tZW50Q2FwYWJpbGl0aWVzLCB2YWx1ZTogYm9vbGVhbikge1xuXHRcdHRoaXMuZW52aXJvbm1lbnRDYXBhYmlsaXRpZXNbY2FwYWJpbGl0eV0gPSB2YWx1ZTtcblx0fVxuXG5cdHB1YmxpYyBnZXRDYXBhYmlsaXRpZXMoKSB7XG5cdFx0cmV0dXJuIHRoaXMuZW52aXJvbm1lbnRDYXBhYmlsaXRpZXM7XG5cdH1cblxuXHRnZXRJbnRlcmZhY2UoKTogYW55IHtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxufVxuXG5jbGFzcyBFbnZpcm9ubWVudFNlcnZpY2VGYWN0b3J5IGV4dGVuZHMgU2VydmljZUZhY3Rvcnk8RW52aXJvbm1lbnRDYXBhYmlsaXRpZXM+IHtcblx0Y3JlYXRlSW5zdGFuY2Uob1NlcnZpY2VDb250ZXh0OiBTZXJ2aWNlQ29udGV4dDxFbnZpcm9ubWVudENhcGFiaWxpdGllcz4pIHtcblx0XHRjb25zdCBlbnZpcm9ubWVudENhcGFiaWxpdGllc1NlcnZpY2UgPSBuZXcgRW52aXJvbm1lbnRDYXBhYmlsaXRpZXNTZXJ2aWNlKG9TZXJ2aWNlQ29udGV4dCk7XG5cdFx0cmV0dXJuIGVudmlyb25tZW50Q2FwYWJpbGl0aWVzU2VydmljZS5pbml0UHJvbWlzZTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBFbnZpcm9ubWVudFNlcnZpY2VGYWN0b3J5O1xuIl19
@@ -2,8 +2,9 @@ import Core from "sap/ui/core/Core";
2
2
  import Service from "sap/ui/core/service/Service";
3
3
  import ServiceFactory from "sap/ui/core/service/ServiceFactory";
4
4
  import VersionInfo from "sap/ui/VersionInfo";
5
- import { CoreEx, ServiceContext } from "types/extension_types";
6
- import { DefaultEnvironmentCapabilities, EnvironmentCapabilities } from "../converters/MetaModelConverter";
5
+ import type { CoreEx, ServiceContext } from "types/extension_types";
6
+ import type { EnvironmentCapabilities } from "../converters/MetaModelConverter";
7
+ import { DefaultEnvironmentCapabilities } from "../converters/MetaModelConverter";
7
8
 
8
9
  export class EnvironmentCapabilitiesService extends Service<EnvironmentCapabilities> {
9
10
  resolveFn: any;
@@ -34,20 +34,21 @@ sap.ui.define(["sap/fe/navigation/NavigationHandler", "sap/ui/core/service/Servi
34
34
  }
35
35
  /**
36
36
  * Triggers a cross-app navigation after saving the inner and the cross-app states.
37
+ *
37
38
  * @private
38
39
  * @ui5-restricted
39
- * @param {string} sSemanticObject Semantic object of the target app
40
- * @param {string} sActionName Action of the target app
41
- * @param {object | string } [vNavigationParameters] Navigation parameters as an object with key/value pairs or as a string representation of
40
+ * @param sSemanticObject Semantic object of the target app
41
+ * @param sActionName Action of the target app
42
+ * @param [vNavigationParameters] Navigation parameters as an object with key/value pairs or as a string representation of
42
43
  * such an object. If passed as an object, the properties are not checked against the <code>IsPotentialSensitive</code> or
43
44
  * <code>Measure</code> type.
44
- * @param {object} [oInnerAppData] Object for storing current state of the app
45
- * @param {Function} [fnOnError] Callback that is called if an error occurs during navigation <br>
46
- * @param {object} [oExternalAppData] Object for storing the state which will be forwarded to the target component.
47
- * @param {string} [sNavMode] Argument is used to overwrite the FLP-configured target for opening a URL. If used, only the
45
+ * @param [oInnerAppData] Object for storing current state of the app
46
+ * @param [fnOnError] Callback that is called if an error occurs during navigation <br>
47
+ * @param [oExternalAppData] Object for storing the state which will be forwarded to the target component.
48
+ * @param [sNavMode] Argument is used to overwrite the FLP-configured target for opening a URL. If used, only the
48
49
  * <code>explace</code> or <code>inplace</code> values are allowed. Any other value will lead to an exception
49
50
  * <code>NavigationHandler.INVALID_NAV_MODE</code>.
50
- **/
51
+ */
51
52
  ;
52
53
 
53
54
  _proto.navigate = function navigate(sSemanticObject, sActionName, vNavigationParameters, oInnerAppData, fnOnError, oExternalAppData, sNavMode) {
@@ -58,11 +59,12 @@ sap.ui.define(["sap/fe/navigation/NavigationHandler", "sap/ui/core/service/Servi
58
59
  }
59
60
  /**
60
61
  * Parses the incoming URL and returns a Promise.
61
- * @returns {object} A Promise object which returns the
62
+ *
63
+ * @returns A Promise object which returns the
62
64
  * extracted app state, the startup parameters, and the type of navigation when execution is successful,
63
65
  * @private
64
66
  * @ui5-restricted
65
- **/
67
+ */
66
68
  ;
67
69
 
68
70
  _proto.parseNavigation = function parseNavigation() {
@@ -71,12 +73,12 @@ sap.ui.define(["sap/fe/navigation/NavigationHandler", "sap/ui/core/service/Servi
71
73
  /**
72
74
  * Processes navigation-related tasks related to beforePopoverOpens event handling for the SmartLink control and returns a Promise object.
73
75
  *
74
- * @param {object} oTableEventParameters The parameters made available by the SmartTable control when the SmartLink control has been clicked,
76
+ * @param oTableEventParameters The parameters made available by the SmartTable control when the SmartLink control has been clicked,
75
77
  * an instance of a PopOver object
76
- * @param {string} sSelectionVariant Stringified JSON object as returned, for example, from getDataSuiteFormat() of the SmartFilterBar control
77
- * @param {object} [mInnerAppData] Object containing the current state of the app. If provided, opening the Popover is deferred until the
78
+ * @param sSelectionVariant Stringified JSON object as returned, for example, from getDataSuiteFormat() of the SmartFilterBar control
79
+ * @param [mInnerAppData] Object containing the current state of the app. If provided, opening the Popover is deferred until the
78
80
  * inner app data is saved in a consistent way.
79
- * @returns {Promise} A Promise object to monitor when all actions of the function have been executed; if the execution is successful, the
81
+ * @returns A Promise object to monitor when all actions of the function have been executed; if the execution is successful, the
80
82
  * modified oTableEventParameters is returned; if an error occurs, an error object of type
81
83
  * {@link sap.fe.navigation.NavError} is returned
82
84
  * @private
@@ -88,8 +90,9 @@ sap.ui.define(["sap/fe/navigation/NavigationHandler", "sap/ui/core/service/Servi
88
90
  }
89
91
  /**
90
92
  * Processes selectionVariant string and returns a Promise object (semanticAttributes and AppStateKey).
91
- * @param {string} sSelectionVariant Stringified JSON object
92
- * @returns {object} A Promise object to monitor when all actions of the function have been executed; if the execution is successful, the
93
+ *
94
+ * @param sSelectionVariant Stringified JSON object
95
+ * @returns A Promise object to monitor when all actions of the function have been executed; if the execution is successful, the
93
96
  * semanticAttributes as well as the appStateKey are returned; if an error occurs, an error object of type
94
97
  * {@link sap.fe.navigation.NavError} is returned
95
98
  * <br>
@@ -122,7 +125,8 @@ sap.ui.define(["sap/fe/navigation/NavigationHandler", "sap/ui/core/service/Servi
122
125
  }
123
126
  /**
124
127
  * Gets the application specific technical parameters.
125
- * @returns {Array} Containing the technical parameters.
128
+ *
129
+ * @returns Containing the technical parameters.
126
130
  * @private
127
131
  * @ui5-restricted
128
132
  */
@@ -135,7 +139,8 @@ sap.ui.define(["sap/fe/navigation/NavigationHandler", "sap/ui/core/service/Servi
135
139
  * Sets the application specific technical parameters. Technical parameters will not be added to the selection variant passed to the
136
140
  * application.
137
141
  * As a default sap-system, sap-ushell-defaultedParameterNames and hcpApplicationId are considered as technical parameters.
138
- * @param {Array} aTechnicalParameters List of parameter names to be considered as technical parameters. <code>null</code> or
142
+ *
143
+ * @param aTechnicalParameters List of parameter names to be considered as technical parameters. <code>null</code> or
139
144
  * <code>undefined</code> may be used to reset the complete list.
140
145
  * @private
141
146
  * @ui5-restricted
@@ -148,9 +153,10 @@ sap.ui.define(["sap/fe/navigation/NavigationHandler", "sap/ui/core/service/Servi
148
153
  /**
149
154
  * Sets the model that is used for verification of sensitive information. If the model is not set, the unnamed component model is used for the
150
155
  * verification of sensitive information.
156
+ *
151
157
  * @private
152
158
  * @ui5-restricted
153
- * @param {sap.ui.model.odata.v2.ODataModel} oModel Model For checking sensitive information
159
+ * @param oModel Model For checking sensitive information
154
160
  */
155
161
  ;
156
162
 
@@ -159,28 +165,30 @@ sap.ui.define(["sap/fe/navigation/NavigationHandler", "sap/ui/core/service/Servi
159
165
  }
160
166
  /**
161
167
  * Changes the URL according to the current app state and stores the app state for later retrieval.
168
+ *
162
169
  * @private
163
170
  * @ui5-restricted
164
- * @param {object} mInnerAppData Object containing the current state of the app
165
- * @returns {object} A Promise object to monitor when all the actions of the function have been executed; if the execution is successful, the
171
+ * @param mInnerAppData Object containing the current state of the app
172
+ * @returns A Promise object to monitor when all the actions of the function have been executed; if the execution is successful, the
166
173
  * app state key is returned; if an error occurs, an object of type {@link sap.fe.navigation.NavError} is
167
174
  * returned
168
- **/
175
+ */
169
176
  ;
170
177
 
171
178
  _proto.storeInnerAppState = function storeInnerAppState(mInnerAppData) {
172
179
  return this.oNavHandler.storeInnerAppState(mInnerAppData);
173
180
  }
174
181
  /**
175
- * Changes the URL according to the current app state and stores the app state for later retrieval.
176
- * @private
177
- * @ui5-restricted
178
- * @param {object} mInnerAppData Object containing the current state of the app
179
- * @param {boolean} [bImmediateHashReplace=false] If set to false, the inner app hash will not be replaced until storing is successful; do not
180
- * @param bNotLegacy
181
- * @returns {object} An object containing the appStateId and a promise object to monitor when all the actions of the function have been
182
- * executed; Please note that the appStateKey may be undefined or empty.
183
- */
182
+ * Changes the URL according to the current app state and stores the app state for later retrieval.
183
+ *
184
+ * @private
185
+ * @ui5-restricted
186
+ * @param mInnerAppData Object containing the current state of the app
187
+ * @param [bImmediateHashReplace=false] If set to false, the inner app hash will not be replaced until storing is successful; do not
188
+ * @param bNotLegacy
189
+ * @returns An object containing the appStateId and a promise object to monitor when all the actions of the function have been
190
+ * executed; Please note that the appStateKey may be undefined or empty.
191
+ */
184
192
  ;
185
193
 
186
194
  _proto.storeInnerAppStateWithImmediateReturn = function storeInnerAppStateWithImmediateReturn(mInnerAppData, bImmediateHashReplace, bNotLegacy) {
@@ -188,9 +196,10 @@ sap.ui.define(["sap/fe/navigation/NavigationHandler", "sap/ui/core/service/Servi
188
196
  }
189
197
  /**
190
198
  * Changes the URL according to the current sAppStateKey. As an reaction route change event will be triggered.
199
+ *
191
200
  * @private
192
201
  * @ui5-restricted
193
- * @param {string} sAppStateKey The new app state key.
202
+ * @param sAppStateKey The new app state key.
194
203
  */
195
204
  ;
196
205
 
@@ -206,9 +215,9 @@ sap.ui.define(["sap/fe/navigation/NavigationHandler", "sap/ui/core/service/Servi
206
215
  *
207
216
  * @private
208
217
  * @ui5-restricted
209
- * @param {object | string } [vSelectionVariant]
210
- * @param {object} [vSelectionVariant.oUrlParamaters]
211
- * @returns {pbject}
218
+ * @param [vSelectionVariant]
219
+ * @param [vSelectionVariant.oUrlParamaters]
220
+ * @returns The url parameters
212
221
  */
213
222
  ;
214
223
 
@@ -220,8 +229,8 @@ sap.ui.define(["sap/fe/navigation/NavigationHandler", "sap/ui/core/service/Servi
220
229
  *
221
230
  * @private
222
231
  * @ui5-restricted
223
- * @param {object} oInSelectionVariant Instance of sap.fe.navigation.SelectionVariant
224
- * @returns {string} AppState key
232
+ * @param oInSelectionVariant Instance of sap.fe.navigation.SelectionVariant
233
+ * @returns AppState key
225
234
  */
226
235
  ;
227
236
 
@@ -242,14 +251,14 @@ sap.ui.define(["sap/fe/navigation/NavigationHandler", "sap/ui/core/service/Servi
242
251
  /**
243
252
  * Mix Attributes and selectionVariant.
244
253
  *
245
- * @param {object|Array} vSemanticAttributes Object/(Array of Objects) containing key/value pairs
246
- * @param {string} sSelectionVariant The selection variant in string format as provided by the SmartFilterBar control
247
- * @param {int} [iSuppressionBehavior=sap.fe.navigation.SuppressionBehavior.standard] Indicates whether semantic
254
+ * @param vSemanticAttributes Object/(Array of Objects) containing key/value pairs
255
+ * @param sSelectionVariant The selection variant in string format as provided by the SmartFilterBar control
256
+ * @param [iSuppressionBehavior=sap.fe.navigation.SuppressionBehavior.standard] Indicates whether semantic
248
257
  * attributes with special values (see {@link sap.fe.navigation.SuppressionBehavior suppression behavior}) must be
249
258
  * suppressed before they are combined with the selection variant; several
250
259
  * {@link sap.fe.navigation.SuppressionBehavior suppression behaviors} can be combined with the bitwise OR operator
251
260
  * (|)
252
- * @returns {object} Instance of {@link sap.fe.navigation.SelectionVariant}
261
+ * @returns Instance of {@link sap.fe.navigation.SelectionVariant}
253
262
  */
254
263
  ;
255
264
 
@@ -259,9 +268,9 @@ sap.ui.define(["sap/fe/navigation/NavigationHandler", "sap/ui/core/service/Servi
259
268
  /**
260
269
  * The method creates a context url based on provided data. This context url can either be used as.
261
270
  *
262
- * @param {string} sEntitySetName Used for url determination
271
+ * @param sEntitySetName Used for url determination
263
272
  * @param [oModel] The ODataModel used for url determination. If omitted, the NavigationHandler model is used.
264
- * @returns {string} The context url for the given entities
273
+ * @returns The context url for the given entities
265
274
  */
266
275
  ;
267
276
 
@@ -350,4 +359,4 @@ sap.ui.define(["sap/fe/navigation/NavigationHandler", "sap/ui/core/service/Servi
350
359
 
351
360
  return NavigationServiceFactory;
352
361
  }, false);
353
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk5hdmlnYXRpb25TZXJ2aWNlRmFjdG9yeS50cyJdLCJuYW1lcyI6WyJOYXZpZ2F0aW9uU2VydmljZSIsImluaXQiLCJvQ29udGV4dCIsImdldENvbnRleHQiLCJvQ29tcG9uZW50Iiwic2NvcGVPYmplY3QiLCJvTmF2SGFuZGxlciIsIk5hdmlnYXRpb25IYW5kbGVyIiwic2V0TW9kZWwiLCJnZXRNb2RlbCIsImluaXRQcm9taXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJleGl0IiwiZGVzdHJveSIsIm5hdmlnYXRlIiwic1NlbWFudGljT2JqZWN0Iiwic0FjdGlvbk5hbWUiLCJ2TmF2aWdhdGlvblBhcmFtZXRlcnMiLCJvSW5uZXJBcHBEYXRhIiwiZm5PbkVycm9yIiwib0V4dGVybmFsQXBwRGF0YSIsInNOYXZNb2RlIiwicGFyc2VOYXZpZ2F0aW9uIiwiX3Byb2Nlc3NCZWZvcmVTbWFydExpbmtQb3BvdmVyT3BlbnMiLCJvVGFibGVFdmVudFBhcmFtZXRlcnMiLCJzU2VsZWN0aW9uVmFyaWFudCIsIm1Jbm5lckFwcERhdGEiLCJwcm9jZXNzQmVmb3JlU21hcnRMaW5rUG9wb3Zlck9wZW5zIiwiZ2V0QXBwU3RhdGVLZXlBbmRVcmxQYXJhbWV0ZXJzIiwiX2dldEFwcFN0YXRlS2V5QW5kVXJsUGFyYW1ldGVycyIsImdldFRlY2huaWNhbFBhcmFtZXRlcnMiLCJzZXRUZWNobmljYWxQYXJhbWV0ZXJzIiwiYVRlY2huaWNhbFBhcmFtZXRlcnMiLCJvTW9kZWwiLCJzdG9yZUlubmVyQXBwU3RhdGUiLCJzdG9yZUlubmVyQXBwU3RhdGVXaXRoSW1tZWRpYXRlUmV0dXJuIiwiYkltbWVkaWF0ZUhhc2hSZXBsYWNlIiwiYk5vdExlZ2FjeSIsInJlcGxhY2VIYXNoIiwic0FwcFN0YXRlS2V5IiwicmVwbGFjZUlubmVyQXBwU3RhdGVLZXkiLCJzQXBwSGFzaCIsIl9yZXBsYWNlSW5uZXJBcHBTdGF0ZUtleSIsImdldFVybFBhcmFtZXRlcnNGcm9tU2VsZWN0aW9uVmFyaWFudCIsInZTZWxlY3Rpb25WYXJpYW50IiwiX2dldFVSTFBhcmFtZXRlcnNGcm9tU2VsZWN0aW9uVmFyaWFudCIsInNhdmVBcHBTdGF0ZVdpdGhJbW1lZGlhdGVSZXR1cm4iLCJvSW5TZWxlY3Rpb25WYXJpYW50IiwidG9KU09OU3RyaW5nIiwib1NlbGVjdGlvblZhcmlhbnQiLCJKU09OIiwicGFyc2UiLCJvWEFwcFN0YXRlT2JqZWN0Iiwic2VsZWN0aW9uVmFyaWFudCIsIm9SZXR1cm4iLCJfc2F2ZUFwcFN0YXRlV2l0aEltbWVkaWF0ZVJldHVybiIsImFwcFN0YXRlS2V5IiwibWl4QXR0cmlidXRlc0FuZFNlbGVjdGlvblZhcmlhbnQiLCJ2U2VtYW50aWNBdHRyaWJ1dGVzIiwiaVN1cHByZXNzaW9uQmVoYXZpb3IiLCJjb25zdHJ1Y3RDb250ZXh0VXJsIiwic0VudGl0eVNldE5hbWUiLCJnZXRJbnRlcmZhY2UiLCJTZXJ2aWNlIiwiZm5HZXRFbXB0eU9iamVjdCIsImZuR2V0UHJvbWlzZSIsImZuR2V0SlF1ZXJ5UHJvbWlzZSIsIm9NeURlZmZlcmVkIiwialF1ZXJ5IiwiRGVmZXJyZWQiLCJwcm9taXNlIiwiZm5HZXRFbXB0eVN0cmluZyIsIk5hdmlnYXRpb25TZXJ2aWNlc01vY2siLCJjcmVhdGVFbXB0eUFwcFN0YXRlIiwiZ2V0QXBwU3RhdGUiLCJnZXRTdGFydHVwQXBwU3RhdGUiLCJOYXZpZ2F0aW9uU2VydmljZUZhY3RvcnkiLCJjcmVhdGVJbnN0YW5jZSIsIm9TZXJ2aWNlQ29udGV4dCIsIm9OYXZpZ2F0aW9uU2VydmljZSIsInNhcCIsInVzaGVsbCIsIkNvbnRhaW5lciIsInRoZW4iLCJvU2VydmljZSIsIlNlcnZpY2VGYWN0b3J5Il0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7O01BS2FBLGlCOzs7Ozs7Ozs7O1dBR1pDLEksR0FBQSxnQkFBTztBQUNOLFVBQU1DLFFBQVEsR0FBRyxLQUFLQyxVQUFMLEVBQWpCO0FBQUEsVUFDQ0MsVUFBVSxHQUFHRixRQUFRLElBQUlBLFFBQVEsQ0FBQ0csV0FEbkM7QUFHQSxXQUFLQyxXQUFMLEdBQW1CLElBQUlDLGlCQUFKLENBQXNCSCxVQUF0QixDQUFuQjtBQUNBLFdBQUtFLFdBQUwsQ0FBaUJFLFFBQWpCLENBQTBCSixVQUFVLENBQUNLLFFBQVgsRUFBMUI7QUFDQSxXQUFLQyxXQUFMLEdBQW1CQyxPQUFPLENBQUNDLE9BQVIsQ0FBZ0IsSUFBaEIsQ0FBbkI7QUFDQSxLOztXQUNEQyxJLEdBQUEsZ0JBQU87QUFDTixXQUFLUCxXQUFMLENBQWlCUSxPQUFqQjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztXQUNDQyxRLEdBQUEsa0JBQ0NDLGVBREQsRUFFQ0MsV0FGRCxFQUdDQyxxQkFIRCxFQUlDQyxhQUpELEVBS0NDLFNBTEQsRUFNQ0MsZ0JBTkQsRUFPQ0MsUUFQRCxFQVFFO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsV0FBS2hCLFdBQUwsQ0FBaUJTLFFBQWpCLENBQ0NDLGVBREQsRUFFQ0MsV0FGRCxFQUdDQyxxQkFIRCxFQUlDQyxhQUpELEVBS0NDLFNBTEQsRUFNQ0MsZ0JBTkQsRUFPQ0MsUUFQRDtBQVNBO0FBQ0Q7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztXQUNDQyxlLEdBQUEsMkJBQWtCO0FBQ2pCLGFBQU8sS0FBS2pCLFdBQUwsQ0FBaUJpQixlQUFqQixFQUFQO0FBQ0E7QUFDRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O1dBQ0NDLG1DLEdBQUEsNkNBQW9DQyxxQkFBcEMsRUFBbUVDLGlCQUFuRSxFQUE4RkMsYUFBOUYsRUFBaUk7QUFDaEksYUFBTyxLQUFLckIsV0FBTCxDQUFpQnNCLGtDQUFqQixDQUFvREgscUJBQXBELEVBQTJFQyxpQkFBM0UsRUFBOEZDLGFBQTlGLENBQVA7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztXQUNDRSw4QixHQUFBLHdDQUErQkgsaUJBQS9CLEVBQTBEO0FBQ3pELGFBQU8sS0FBS3BCLFdBQUwsQ0FBaUJ3QiwrQkFBakIsQ0FBaURKLGlCQUFqRCxDQUFQO0FBQ0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztXQUNDSyxzQixHQUFBLGtDQUF5QjtBQUN4QixhQUFPLEtBQUt6QixXQUFMLENBQWlCeUIsc0JBQWpCLEVBQVA7QUFDQTtBQUNEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O1dBQ0NDLHNCLEdBQUEsZ0NBQXVCQyxvQkFBdkIsRUFBb0Q7QUFDbkQsV0FBSzNCLFdBQUwsQ0FBaUIwQixzQkFBakIsQ0FBd0NDLG9CQUF4QztBQUNBO0FBQ0Q7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztXQUNDekIsUSxHQUFBLGtCQUFTMEIsTUFBVCxFQUFzQjtBQUNyQixXQUFLNUIsV0FBTCxDQUFpQkUsUUFBakIsQ0FBMEIwQixNQUExQjtBQUNBO0FBQ0Q7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7V0FDQ0Msa0IsR0FBQSw0QkFBbUJSLGFBQW5CLEVBQTBDO0FBQ3pDLGFBQU8sS0FBS3JCLFdBQUwsQ0FBaUI2QixrQkFBakIsQ0FBb0NSLGFBQXBDLENBQVA7QUFDQTtBQUNEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7V0FFQ1MscUMsR0FBQSwrQ0FBc0NULGFBQXRDLEVBQTZEVSxxQkFBN0QsRUFBeUdDLFVBQXpHLEVBQTBIO0FBQ3pILGFBQU8sS0FBS2hDLFdBQUwsQ0FBaUI4QixxQ0FBakIsQ0FBdURULGFBQXZELEVBQXNFVSxxQkFBdEUsRUFBNkZDLFVBQTdGLENBQVA7QUFDQTtBQUNEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O1dBQ0NDLFcsR0FBQSxxQkFBWUMsWUFBWixFQUFrQztBQUNqQyxXQUFLbEMsV0FBTCxDQUFpQmlDLFdBQWpCLENBQTZCQyxZQUE3QjtBQUNBLEs7O1dBQ0RDLHVCLEdBQUEsaUNBQXdCQyxRQUF4QixFQUF1Q0YsWUFBdkMsRUFBMEQ7QUFDekQsYUFBTyxLQUFLbEMsV0FBTCxDQUFpQnFDLHdCQUFqQixDQUEwQ0QsUUFBMUMsRUFBb0RGLFlBQXBELENBQVA7QUFDQTtBQUNEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O1dBQ0NJLG9DLEdBQUEsOENBQXFDQyxpQkFBckMsRUFBcUY7QUFDcEYsYUFBTyxLQUFLdkMsV0FBTCxDQUFpQndDLHFDQUFqQixDQUF1REQsaUJBQXZELENBQVA7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztXQUNDRSwrQixHQUFBLHlDQUFnQ0MsbUJBQWhDLEVBQXVFO0FBQ3RFLFVBQUlBLG1CQUFKLEVBQXlCO0FBQ3hCLFlBQU10QixpQkFBaUIsR0FBR3NCLG1CQUFtQixDQUFDQyxZQUFwQixFQUExQjtBQUFBLFlBQThEO0FBQzdEQyxRQUFBQSxpQkFBaUIsR0FBR0MsSUFBSSxDQUFDQyxLQUFMLENBQVcxQixpQkFBWCxDQURyQjtBQUFBLFlBQ29EO0FBQ25EMkIsUUFBQUEsZ0JBQWdCLEdBQUc7QUFDbEJDLFVBQUFBLGdCQUFnQixFQUFFSjtBQURBLFNBRnBCO0FBQUEsWUFLQ0ssT0FBTyxHQUFHLEtBQUtqRCxXQUFMLENBQWlCa0QsZ0NBQWpCLENBQWtESCxnQkFBbEQsQ0FMWDs7QUFNQSxlQUFPRSxPQUFPLENBQUNFLFdBQVIsR0FBc0JGLE9BQU8sQ0FBQ0UsV0FBOUIsR0FBNEMsRUFBbkQ7QUFDQTtBQUNEO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7V0FDQ0MsZ0MsR0FBQSwwQ0FDQ0MsbUJBREQsRUFFQ2pDLGlCQUZELEVBR0NrQyxvQkFIRCxFQUlFO0FBQ0QsYUFBTyxLQUFLdEQsV0FBTCxDQUFpQm9ELGdDQUFqQixDQUFrREMsbUJBQWxELEVBQXVFakMsaUJBQXZFLEVBQTBGa0Msb0JBQTFGLENBQVA7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7V0FDQ0MsbUIsR0FBQSw2QkFBb0JDLGNBQXBCLEVBQTRDNUIsTUFBNUMsRUFBeUQ7QUFDeEQsYUFBTyxLQUFLNUIsV0FBTCxDQUFpQnVELG1CQUFqQixDQUFxQ0MsY0FBckMsRUFBcUQ1QixNQUFyRCxDQUFQO0FBQ0EsSzs7V0FDRDZCLFksR0FBQSx3QkFBZTtBQUNkLGFBQU8sSUFBUDtBQUNBLEs7OztJQXZQcUNDLE87Ozs7QUF5UHZDLFdBQVNDLGdCQUFULEdBQTRCO0FBQzNCLFdBQU8sRUFBUDtBQUNBOztBQUVELFdBQVNDLFlBQVQsR0FBd0I7QUFDdkIsV0FBT3ZELE9BQU8sQ0FBQ0MsT0FBUixDQUFnQixFQUFoQixDQUFQO0FBQ0E7O0FBRUQsV0FBU3VELGtCQUFULEdBQThCO0FBQzdCLFFBQU1DLFdBQVcsR0FBR0MsTUFBTSxDQUFDQyxRQUFQLEVBQXBCO0FBQ0FGLElBQUFBLFdBQVcsQ0FBQ3hELE9BQVosQ0FBb0IsRUFBcEIsRUFBd0IsRUFBeEIsRUFBNEIsU0FBNUI7QUFDQSxXQUFPd0QsV0FBVyxDQUFDRyxPQUFaLEVBQVA7QUFDQTs7QUFFRCxXQUFTQyxnQkFBVCxHQUE0QjtBQUMzQixXQUFPLEVBQVA7QUFDQTs7TUFDWUMsc0I7QUFFWixzQ0FBYztBQUFBLFdBU2RDLG1CQVRjLEdBU1FULGdCQVRSO0FBQUEsV0FVZDdCLHFDQVZjLEdBVTBCNkIsZ0JBVjFCO0FBQUEsV0FXZFAsZ0NBWGMsR0FXcUJPLGdCQVhyQjtBQUFBLFdBY2RVLFdBZGMsR0FjQVQsWUFkQTtBQUFBLFdBZWRVLGtCQWZjLEdBZU9WLFlBZlA7QUFBQSxXQWdCZDNDLGVBaEJjLEdBZ0JJNEMsa0JBaEJKO0FBQUEsV0FtQmROLG1CQW5CYyxHQW1CUVcsZ0JBbkJSO0FBQ2IsV0FBSzlELFdBQUwsR0FBbUJDLE9BQU8sQ0FBQ0MsT0FBUixDQUFnQixJQUFoQixDQUFuQjtBQUNBOzs7OztZQUVEbUQsWSxHQUFBLHdCQUFlO0FBQ2QsYUFBTyxJQUFQO0FBQ0EsSyxDQUVEOzs7WUFhQXRCLHVCLEdBQUEsaUNBQXdCQyxRQUF4QixFQUF1QztBQUN0QyxhQUFPQSxRQUFRLEdBQUdBLFFBQUgsR0FBYyxFQUE3QjtBQUNBLEs7O1lBRUQzQixRLEdBQUEsb0JBQVcsQ0FDVjtBQUNBLEs7Ozs7Ozs7TUFHSThELHdCOzs7Ozs7Ozs7WUFDTEMsYyxHQUFBLHdCQUFlQyxlQUFmLEVBQTJFO0FBQzFFLFVBQU1DLGtCQUFrQixHQUN2QkMsR0FBRyxDQUFDQyxNQUFKLElBQWNELEdBQUcsQ0FBQ0MsTUFBSixDQUFXQyxTQUF6QixHQUFxQyxJQUFJbkYsaUJBQUosQ0FBc0IrRSxlQUF0QixDQUFyQyxHQUE4RSxJQUFJTixzQkFBSixFQUQvRSxDQUQwRSxDQUcxRTs7QUFDQSxhQUFPTyxrQkFBa0IsQ0FBQ3RFLFdBQW5CLENBQStCMEUsSUFBL0IsQ0FBb0MsVUFBVUMsUUFBVixFQUF5QjtBQUNuRSxlQUFPQSxRQUFQO0FBQ0EsT0FGTSxDQUFQO0FBR0EsSzs7O0lBUnFDQyxjOztTQVd4QlQsd0IiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5hdmlnYXRpb25IYW5kbGVyIH0gZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uXCI7XG5pbXBvcnQgU2VsZWN0aW9uVmFyaWFudCBmcm9tIFwic2FwL2ZlL25hdmlnYXRpb24vU2VsZWN0aW9uVmFyaWFudFwiO1xuaW1wb3J0IFNlcnZpY2UgZnJvbSBcInNhcC91aS9jb3JlL3NlcnZpY2UvU2VydmljZVwiO1xuaW1wb3J0IFNlcnZpY2VGYWN0b3J5IGZyb20gXCJzYXAvdWkvY29yZS9zZXJ2aWNlL1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgeyBTZXJ2aWNlQ29udGV4dCB9IGZyb20gXCJ0eXBlcy9leHRlbnNpb25fdHlwZXNcIjtcblxudHlwZSBOYXZpZ2F0aW9uU2VydmljZVNldHRpbmdzID0ge307XG5leHBvcnQgY2xhc3MgTmF2aWdhdGlvblNlcnZpY2UgZXh0ZW5kcyBTZXJ2aWNlPE5hdmlnYXRpb25TZXJ2aWNlU2V0dGluZ3M+IHtcblx0aW5pdFByb21pc2UhOiBQcm9taXNlPGFueT47XG5cdG9OYXZIYW5kbGVyITogTmF2aWdhdGlvbkhhbmRsZXI7XG5cdGluaXQoKSB7XG5cdFx0Y29uc3Qgb0NvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcblx0XHRcdG9Db21wb25lbnQgPSBvQ29udGV4dCAmJiBvQ29udGV4dC5zY29wZU9iamVjdDtcblxuXHRcdHRoaXMub05hdkhhbmRsZXIgPSBuZXcgTmF2aWdhdGlvbkhhbmRsZXIob0NvbXBvbmVudCk7XG5cdFx0dGhpcy5vTmF2SGFuZGxlci5zZXRNb2RlbChvQ29tcG9uZW50LmdldE1vZGVsKCkpO1xuXHRcdHRoaXMuaW5pdFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUodGhpcyk7XG5cdH1cblx0ZXhpdCgpIHtcblx0XHR0aGlzLm9OYXZIYW5kbGVyLmRlc3Ryb3koKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUcmlnZ2VycyBhIGNyb3NzLWFwcCBuYXZpZ2F0aW9uIGFmdGVyIHNhdmluZyB0aGUgaW5uZXIgYW5kIHRoZSBjcm9zcy1hcHAgc3RhdGVzLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNTZW1hbnRpY09iamVjdCBTZW1hbnRpYyBvYmplY3Qgb2YgdGhlIHRhcmdldCBhcHBcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNBY3Rpb25OYW1lIEFjdGlvbiBvZiB0aGUgdGFyZ2V0IGFwcFxuXHQgKiBAcGFyYW0ge29iamVjdCB8IHN0cmluZyB9IFt2TmF2aWdhdGlvblBhcmFtZXRlcnNdIE5hdmlnYXRpb24gcGFyYW1ldGVycyBhcyBhbiBvYmplY3Qgd2l0aCBrZXkvdmFsdWUgcGFpcnMgb3IgYXMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2Zcblx0ICogICAgICAgIHN1Y2ggYW4gb2JqZWN0LiBJZiBwYXNzZWQgYXMgYW4gb2JqZWN0LCB0aGUgcHJvcGVydGllcyBhcmUgbm90IGNoZWNrZWQgYWdhaW5zdCB0aGUgPGNvZGU+SXNQb3RlbnRpYWxTZW5zaXRpdmU8L2NvZGU+IG9yXG5cdCAqICAgICAgICA8Y29kZT5NZWFzdXJlPC9jb2RlPiB0eXBlLlxuXHQgKiBAcGFyYW0ge29iamVjdH0gW29Jbm5lckFwcERhdGFdIE9iamVjdCBmb3Igc3RvcmluZyBjdXJyZW50IHN0YXRlIG9mIHRoZSBhcHBcblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZuT25FcnJvcl0gQ2FsbGJhY2sgdGhhdCBpcyBjYWxsZWQgaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyBuYXZpZ2F0aW9uIDxicj5cblx0ICogQHBhcmFtIHtvYmplY3R9IFtvRXh0ZXJuYWxBcHBEYXRhXSBPYmplY3QgZm9yIHN0b3JpbmcgdGhlIHN0YXRlIHdoaWNoIHdpbGwgYmUgZm9yd2FyZGVkIHRvIHRoZSB0YXJnZXQgY29tcG9uZW50LlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gW3NOYXZNb2RlXSBBcmd1bWVudCBpcyB1c2VkIHRvIG92ZXJ3cml0ZSB0aGUgRkxQLWNvbmZpZ3VyZWQgdGFyZ2V0IGZvciBvcGVuaW5nIGEgVVJMLiBJZiB1c2VkLCBvbmx5IHRoZVxuXHQgKiAgICAgICAgPGNvZGU+ZXhwbGFjZTwvY29kZT4gb3IgPGNvZGU+aW5wbGFjZTwvY29kZT4gdmFsdWVzIGFyZSBhbGxvd2VkLiBBbnkgb3RoZXIgdmFsdWUgd2lsbCBsZWFkIHRvIGFuIGV4Y2VwdGlvblxuXHQgKiAgICAgICAgPGNvZGU+TmF2aWdhdGlvbkhhbmRsZXIuSU5WQUxJRF9OQVZfTU9ERTwvY29kZT4uXG5cdCAqKi9cblx0bmF2aWdhdGUoXG5cdFx0c1NlbWFudGljT2JqZWN0OiBzdHJpbmcsXG5cdFx0c0FjdGlvbk5hbWU6IHN0cmluZyxcblx0XHR2TmF2aWdhdGlvblBhcmFtZXRlcnM/OiBzdHJpbmcgfCBvYmplY3QsXG5cdFx0b0lubmVyQXBwRGF0YT86IG9iamVjdCxcblx0XHRmbk9uRXJyb3I/OiBGdW5jdGlvbixcblx0XHRvRXh0ZXJuYWxBcHBEYXRhPzogb2JqZWN0LFxuXHRcdHNOYXZNb2RlPzogc3RyaW5nXG5cdCkge1xuXHRcdC8vIFRPRE86IE5hdmlnYXRpb24gSGFuZGxlciBkb2VzIG5vdCBoYW5kbGUgbmF2aWdhdGlvbiB3aXRob3V0IGEgY29udGV4dFxuXHRcdC8vIGJ1dCBpbiB2NCBEYXRhRmllbGRGb3JJQk4gd2l0aCByZXF1aXJlc0NvbnRleHQgZmFsc2UgY2FuIHRyaWdnZXIgYSBuYXZpZ2F0aW9uIHdpdGhvdXQgYW55IGNvbnRleHRcblx0XHQvLyBUaGlzIHNob3VsZCBiZSBoYW5kbGVkXG5cdFx0dGhpcy5vTmF2SGFuZGxlci5uYXZpZ2F0ZShcblx0XHRcdHNTZW1hbnRpY09iamVjdCxcblx0XHRcdHNBY3Rpb25OYW1lLFxuXHRcdFx0dk5hdmlnYXRpb25QYXJhbWV0ZXJzLFxuXHRcdFx0b0lubmVyQXBwRGF0YSxcblx0XHRcdGZuT25FcnJvcixcblx0XHRcdG9FeHRlcm5hbEFwcERhdGEsXG5cdFx0XHRzTmF2TW9kZVxuXHRcdCk7XG5cdH1cblx0LyoqXG5cdCAqIFBhcnNlcyB0aGUgaW5jb21pbmcgVVJMIGFuZCByZXR1cm5zIGEgUHJvbWlzZS5cblx0ICogQHJldHVybnMge29iamVjdH0gQSBQcm9taXNlIG9iamVjdCB3aGljaCByZXR1cm5zIHRoZVxuXHQgKiBleHRyYWN0ZWQgYXBwIHN0YXRlLCB0aGUgc3RhcnR1cCBwYXJhbWV0ZXJzLCBhbmQgdGhlIHR5cGUgb2YgbmF2aWdhdGlvbiB3aGVuIGV4ZWN1dGlvbiBpcyBzdWNjZXNzZnVsLFxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICoqL1xuXHRwYXJzZU5hdmlnYXRpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMub05hdkhhbmRsZXIucGFyc2VOYXZpZ2F0aW9uKCk7XG5cdH1cblx0LyoqXG5cdCAqIFByb2Nlc3NlcyBuYXZpZ2F0aW9uLXJlbGF0ZWQgdGFza3MgcmVsYXRlZCB0byBiZWZvcmVQb3BvdmVyT3BlbnMgZXZlbnQgaGFuZGxpbmcgZm9yIHRoZSBTbWFydExpbmsgY29udHJvbCBhbmQgcmV0dXJucyBhIFByb21pc2Ugb2JqZWN0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gb1RhYmxlRXZlbnRQYXJhbWV0ZXJzIFRoZSBwYXJhbWV0ZXJzIG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBTbWFydFRhYmxlIGNvbnRyb2wgd2hlbiB0aGUgU21hcnRMaW5rIGNvbnRyb2wgaGFzIGJlZW4gY2xpY2tlZCxcblx0ICogICAgICAgIGFuIGluc3RhbmNlIG9mIGEgUG9wT3ZlciBvYmplY3Rcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNTZWxlY3Rpb25WYXJpYW50IFN0cmluZ2lmaWVkIEpTT04gb2JqZWN0IGFzIHJldHVybmVkLCBmb3IgZXhhbXBsZSwgZnJvbSBnZXREYXRhU3VpdGVGb3JtYXQoKSBvZiB0aGUgU21hcnRGaWx0ZXJCYXIgY29udHJvbFxuXHQgKiBAcGFyYW0ge29iamVjdH0gW21Jbm5lckFwcERhdGFdIE9iamVjdCBjb250YWluaW5nIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBhcHAuIElmIHByb3ZpZGVkLCBvcGVuaW5nIHRoZSBQb3BvdmVyIGlzIGRlZmVycmVkIHVudGlsIHRoZVxuXHQgKiAgICAgICAgaW5uZXIgYXBwIGRhdGEgaXMgc2F2ZWQgaW4gYSBjb25zaXN0ZW50IHdheS5cblx0ICogQHJldHVybnMge1Byb21pc2V9IEEgUHJvbWlzZSBvYmplY3QgdG8gbW9uaXRvciB3aGVuIGFsbCBhY3Rpb25zIG9mIHRoZSBmdW5jdGlvbiBoYXZlIGJlZW4gZXhlY3V0ZWQ7IGlmIHRoZSBleGVjdXRpb24gaXMgc3VjY2Vzc2Z1bCwgdGhlXG5cdCAqICAgICAgICAgIG1vZGlmaWVkIG9UYWJsZUV2ZW50UGFyYW1ldGVycyBpcyByZXR1cm5lZDsgaWYgYW4gZXJyb3Igb2NjdXJzLCBhbiBlcnJvciBvYmplY3Qgb2YgdHlwZVxuXHQgKiAgICAgICAgICB7QGxpbmsgc2FwLmZlLm5hdmlnYXRpb24uTmF2RXJyb3J9IGlzIHJldHVybmVkXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRfcHJvY2Vzc0JlZm9yZVNtYXJ0TGlua1BvcG92ZXJPcGVucyhvVGFibGVFdmVudFBhcmFtZXRlcnM6IG9iamVjdCwgc1NlbGVjdGlvblZhcmlhbnQ6IHN0cmluZywgbUlubmVyQXBwRGF0YTogb2JqZWN0IHwgdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIHRoaXMub05hdkhhbmRsZXIucHJvY2Vzc0JlZm9yZVNtYXJ0TGlua1BvcG92ZXJPcGVucyhvVGFibGVFdmVudFBhcmFtZXRlcnMsIHNTZWxlY3Rpb25WYXJpYW50LCBtSW5uZXJBcHBEYXRhKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQcm9jZXNzZXMgc2VsZWN0aW9uVmFyaWFudCBzdHJpbmcgYW5kIHJldHVybnMgYSBQcm9taXNlIG9iamVjdCAoc2VtYW50aWNBdHRyaWJ1dGVzIGFuZCBBcHBTdGF0ZUtleSkuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzU2VsZWN0aW9uVmFyaWFudCBTdHJpbmdpZmllZCBKU09OIG9iamVjdFxuXHQgKiBAcmV0dXJucyB7b2JqZWN0fSBBIFByb21pc2Ugb2JqZWN0IHRvIG1vbml0b3Igd2hlbiBhbGwgYWN0aW9ucyBvZiB0aGUgZnVuY3Rpb24gaGF2ZSBiZWVuIGV4ZWN1dGVkOyBpZiB0aGUgZXhlY3V0aW9uIGlzIHN1Y2Nlc3NmdWwsIHRoZVxuXHQgKiAgICAgICAgICBzZW1hbnRpY0F0dHJpYnV0ZXMgYXMgd2VsbCBhcyB0aGUgYXBwU3RhdGVLZXkgYXJlIHJldHVybmVkOyBpZiBhbiBlcnJvciBvY2N1cnMsIGFuIGVycm9yIG9iamVjdCBvZiB0eXBlXG5cdCAqICAgICAgICAgIHtAbGluayBzYXAuZmUubmF2aWdhdGlvbi5OYXZFcnJvcn0gaXMgcmV0dXJuZWRcblx0ICogPGJyPlxuXHQgKiBAZXhhbXBsZSA8Y29kZT5cblx0ICpcblx0ICogXHRcdHZhciBvU2VsZWN0aW9uVmFyaWFudCA9IG5ldyBzYXAuZmUubmF2aWdhdGlvbi5TZWxlY3Rpb25WYXJpYW50KCk7XG5cdCAqIFx0XHRvU2VsZWN0aW9uVmFyaWFudC5hZGRTZWxlY3RPcHRpb24oXCJDb21wYW55Q29kZVwiLCBcIklcIiwgXCJFUVwiLCBcIjAwMDFcIik7XG5cdCAqIFx0XHRvU2VsZWN0aW9uVmFyaWFudC5hZGRTZWxlY3RPcHRpb24oXCJDdXN0b21lclwiLCBcIklcIiwgXCJFUVwiLCBcIkMwMDAxXCIpO1xuXHQgKiBcdFx0dmFyIHNTZWxlY3Rpb25WYXJpYW50PSBvU2VsZWN0aW9uVmFyaWFudC50b0pTT05TdHJpbmcoKTtcblx0ICpcblx0ICogXHRcdHZhciBvTmF2aWdhdGlvbkhhbmRsZXIgPSBuZXcgc2FwLmZlLm5hdmlnYXRpb24uTmF2aWdhdGlvbkhhbmRsZXIob0NvbnRyb2xsZXIpO1xuXHQgKiBcdFx0dmFyIG9Qcm9taXNlT2JqZWN0ID0gb05hdmlnYXRpb25IYW5kbGVyLl9nZXRBcHBTdGF0ZUtleUFuZFVybFBhcmFtZXRlcnMoc1NlbGVjdGlvblZhcmlhbnQpO1xuXHQgKlxuXHQgKiBcdFx0b1Byb21pc2VPYmplY3QuZG9uZShmdW5jdGlvbihvU2VtYW50aWNBdHRyaWJ1dGVzLCBzQXBwU3RhdGVLZXkpe1xuXHQgKiBcdFx0XHQvLyBoZXJlIHlvdSBjYW4gYWRkIGNvZGluZyB0aGF0IHNob3VsZCBydW4gYWZ0ZXIgYWxsIGFwcCBzdGF0ZSBhbmQgdGhlIHNlbWFudGljIGF0dHJpYnV0ZXMgaGF2ZSBiZWVuIHJldHVybmVkLlxuXHQgKiBcdFx0fSk7XG5cdCAqXG5cdCAqIFx0XHRvUHJvbWlzZU9iamVjdC5mYWlsKGZ1bmN0aW9uKG9FcnJvcil7XG5cdCAqIFx0XHRcdC8vc29tZSBlcnJvciBoYW5kbGluZ1xuXHQgKiBcdFx0fSk7XG5cdCAqXG5cdCAqIDwvY29kZT5cblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqL1xuXHRnZXRBcHBTdGF0ZUtleUFuZFVybFBhcmFtZXRlcnMoc1NlbGVjdGlvblZhcmlhbnQ6IHN0cmluZykge1xuXHRcdHJldHVybiB0aGlzLm9OYXZIYW5kbGVyLl9nZXRBcHBTdGF0ZUtleUFuZFVybFBhcmFtZXRlcnMoc1NlbGVjdGlvblZhcmlhbnQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGFwcGxpY2F0aW9uIHNwZWNpZmljIHRlY2huaWNhbCBwYXJhbWV0ZXJzLlxuXHQgKiBAcmV0dXJucyB7QXJyYXl9IENvbnRhaW5pbmcgdGhlIHRlY2huaWNhbCBwYXJhbWV0ZXJzLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICovXG5cdGdldFRlY2huaWNhbFBhcmFtZXRlcnMoKSB7XG5cdFx0cmV0dXJuIHRoaXMub05hdkhhbmRsZXIuZ2V0VGVjaG5pY2FsUGFyYW1ldGVycygpO1xuXHR9XG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBhcHBsaWNhdGlvbiBzcGVjaWZpYyB0ZWNobmljYWwgcGFyYW1ldGVycy4gVGVjaG5pY2FsIHBhcmFtZXRlcnMgd2lsbCBub3QgYmUgYWRkZWQgdG8gdGhlIHNlbGVjdGlvbiB2YXJpYW50IHBhc3NlZCB0byB0aGVcblx0ICogYXBwbGljYXRpb24uXG5cdCAqIEFzIGEgZGVmYXVsdCBzYXAtc3lzdGVtLCBzYXAtdXNoZWxsLWRlZmF1bHRlZFBhcmFtZXRlck5hbWVzIGFuZCBoY3BBcHBsaWNhdGlvbklkIGFyZSBjb25zaWRlcmVkIGFzIHRlY2huaWNhbCBwYXJhbWV0ZXJzLlxuXHQgKiBAcGFyYW0ge0FycmF5fSBhVGVjaG5pY2FsUGFyYW1ldGVycyBMaXN0IG9mIHBhcmFtZXRlciBuYW1lcyB0byBiZSBjb25zaWRlcmVkIGFzIHRlY2huaWNhbCBwYXJhbWV0ZXJzLiA8Y29kZT5udWxsPC9jb2RlPiBvclxuXHQgKiAgICAgICAgPGNvZGU+dW5kZWZpbmVkPC9jb2RlPiBtYXkgYmUgdXNlZCB0byByZXNldCB0aGUgY29tcGxldGUgbGlzdC5cblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqL1xuXHRzZXRUZWNobmljYWxQYXJhbWV0ZXJzKGFUZWNobmljYWxQYXJhbWV0ZXJzOiBhbnlbXSkge1xuXHRcdHRoaXMub05hdkhhbmRsZXIuc2V0VGVjaG5pY2FsUGFyYW1ldGVycyhhVGVjaG5pY2FsUGFyYW1ldGVycyk7XG5cdH1cblx0LyoqXG5cdCAqIFNldHMgdGhlIG1vZGVsIHRoYXQgaXMgdXNlZCBmb3IgdmVyaWZpY2F0aW9uIG9mIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbi4gSWYgdGhlIG1vZGVsIGlzIG5vdCBzZXQsIHRoZSB1bm5hbWVkIGNvbXBvbmVudCBtb2RlbCBpcyB1c2VkIGZvciB0aGVcblx0ICogdmVyaWZpY2F0aW9uIG9mIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbi5cblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEBwYXJhbSB7c2FwLnVpLm1vZGVsLm9kYXRhLnYyLk9EYXRhTW9kZWx9IG9Nb2RlbCBNb2RlbCBGb3IgY2hlY2tpbmcgc2Vuc2l0aXZlIGluZm9ybWF0aW9uXG5cdCAqL1xuXHRzZXRNb2RlbChvTW9kZWw6IGFueSkge1xuXHRcdHRoaXMub05hdkhhbmRsZXIuc2V0TW9kZWwob01vZGVsKTtcblx0fVxuXHQvKipcblx0ICogQ2hhbmdlcyB0aGUgVVJMIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBhcHAgc3RhdGUgYW5kIHN0b3JlcyB0aGUgYXBwIHN0YXRlIGZvciBsYXRlciByZXRyaWV2YWwuXG5cdCAqIEBwcml2YXRlXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKiBAcGFyYW0ge29iamVjdH0gbUlubmVyQXBwRGF0YSBPYmplY3QgY29udGFpbmluZyB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgYXBwXG5cdCAqIEByZXR1cm5zIHtvYmplY3R9IEEgUHJvbWlzZSBvYmplY3QgdG8gbW9uaXRvciB3aGVuIGFsbCB0aGUgYWN0aW9ucyBvZiB0aGUgZnVuY3Rpb24gaGF2ZSBiZWVuIGV4ZWN1dGVkOyBpZiB0aGUgZXhlY3V0aW9uIGlzIHN1Y2Nlc3NmdWwsIHRoZVxuXHQgKiAgICAgICAgICBhcHAgc3RhdGUga2V5IGlzIHJldHVybmVkOyBpZiBhbiBlcnJvciBvY2N1cnMsIGFuIG9iamVjdCBvZiB0eXBlIHtAbGluayBzYXAuZmUubmF2aWdhdGlvbi5OYXZFcnJvcn0gaXNcblx0ICogICAgICAgICAgcmV0dXJuZWRcblx0ICoqL1xuXHRzdG9yZUlubmVyQXBwU3RhdGUobUlubmVyQXBwRGF0YTogb2JqZWN0KSB7XG5cdFx0cmV0dXJuIHRoaXMub05hdkhhbmRsZXIuc3RvcmVJbm5lckFwcFN0YXRlKG1Jbm5lckFwcERhdGEpO1xuXHR9XG5cdC8qKlxuXHRcdFx0XHQqIENoYW5nZXMgdGhlIFVSTCBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgYXBwIHN0YXRlIGFuZCBzdG9yZXMgdGhlIGFwcCBzdGF0ZSBmb3IgbGF0ZXIgcmV0cmlldmFsLlxuXHRcdFx0XHQqIEBwcml2YXRlXG5cdFx0XHRcdCogQHVpNS1yZXN0cmljdGVkXG5cdFx0XHRcdCogQHBhcmFtIHtvYmplY3R9IG1Jbm5lckFwcERhdGEgT2JqZWN0IGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGFwcFxuXHRcdFx0XHQqIEBwYXJhbSB7Ym9vbGVhbn0gW2JJbW1lZGlhdGVIYXNoUmVwbGFjZT1mYWxzZV0gSWYgc2V0IHRvIGZhbHNlLCB0aGUgaW5uZXIgYXBwIGhhc2ggd2lsbCBub3QgYmUgcmVwbGFjZWQgdW50aWwgc3RvcmluZyBpcyBzdWNjZXNzZnVsOyBkbyBub3Rcblx0XHRcdCAqIEBwYXJhbSBiTm90TGVnYWN5XG5cblx0XHRcdCAqIEByZXR1cm5zIHtvYmplY3R9IEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBhcHBTdGF0ZUlkIGFuZCBhIHByb21pc2Ugb2JqZWN0IHRvIG1vbml0b3Igd2hlbiBhbGwgdGhlIGFjdGlvbnMgb2YgdGhlIGZ1bmN0aW9uIGhhdmUgYmVlblxuXHRcdFx0XHQqIGV4ZWN1dGVkOyBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhcHBTdGF0ZUtleSBtYXkgYmUgdW5kZWZpbmVkIG9yIGVtcHR5LlxuXHRcdFx0XHQqL1xuXHRzdG9yZUlubmVyQXBwU3RhdGVXaXRoSW1tZWRpYXRlUmV0dXJuKG1Jbm5lckFwcERhdGE6IG9iamVjdCwgYkltbWVkaWF0ZUhhc2hSZXBsYWNlOiBib29sZWFuIHwgdW5kZWZpbmVkLCBiTm90TGVnYWN5OiBhbnkpIHtcblx0XHRyZXR1cm4gdGhpcy5vTmF2SGFuZGxlci5zdG9yZUlubmVyQXBwU3RhdGVXaXRoSW1tZWRpYXRlUmV0dXJuKG1Jbm5lckFwcERhdGEsIGJJbW1lZGlhdGVIYXNoUmVwbGFjZSwgYk5vdExlZ2FjeSk7XG5cdH1cblx0LyoqXG5cdCAqIENoYW5nZXMgdGhlIFVSTCBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgc0FwcFN0YXRlS2V5LiBBcyBhbiByZWFjdGlvbiByb3V0ZSBjaGFuZ2UgZXZlbnQgd2lsbCBiZSB0cmlnZ2VyZWQuXG5cdCAqIEBwcml2YXRlXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc0FwcFN0YXRlS2V5IFRoZSBuZXcgYXBwIHN0YXRlIGtleS5cblx0ICovXG5cdHJlcGxhY2VIYXNoKHNBcHBTdGF0ZUtleTogc3RyaW5nKSB7XG5cdFx0dGhpcy5vTmF2SGFuZGxlci5yZXBsYWNlSGFzaChzQXBwU3RhdGVLZXkpO1xuXHR9XG5cdHJlcGxhY2VJbm5lckFwcFN0YXRlS2V5KHNBcHBIYXNoOiBhbnksIHNBcHBTdGF0ZUtleTogYW55KSB7XG5cdFx0cmV0dXJuIHRoaXMub05hdkhhbmRsZXIuX3JlcGxhY2VJbm5lckFwcFN0YXRlS2V5KHNBcHBIYXNoLCBzQXBwU3RhdGVLZXkpO1xuXHR9XG5cdC8qKlxuXHQgKiBHZXQgc2luZ2xlIHZhbHVlcyBmcm9tIFNlbGVjdGlvblZhcmlhbnQgZm9yIHVybCBwYXJhbWV0ZXJzLlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQHBhcmFtIHtvYmplY3QgfCBzdHJpbmcgfSBbdlNlbGVjdGlvblZhcmlhbnRdXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBbdlNlbGVjdGlvblZhcmlhbnQub1VybFBhcmFtYXRlcnNdXG5cdCAqIEByZXR1cm5zIHtwYmplY3R9XG5cdCAqL1xuXHRnZXRVcmxQYXJhbWV0ZXJzRnJvbVNlbGVjdGlvblZhcmlhbnQodlNlbGVjdGlvblZhcmlhbnQ6IHN0cmluZyB8IG9iamVjdCB8IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiB0aGlzLm9OYXZIYW5kbGVyLl9nZXRVUkxQYXJhbWV0ZXJzRnJvbVNlbGVjdGlvblZhcmlhbnQodlNlbGVjdGlvblZhcmlhbnQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNhdmUgYXBwIHN0YXRlIGFuZCByZXR1cm4gaW1tZWRpYXRlbHkgd2l0aG91dCB3YWl0aW5nIGZvciByZXNwb25zZS5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBvSW5TZWxlY3Rpb25WYXJpYW50IEluc3RhbmNlIG9mIHNhcC5mZS5uYXZpZ2F0aW9uLlNlbGVjdGlvblZhcmlhbnRcblx0ICogQHJldHVybnMge3N0cmluZ30gQXBwU3RhdGUga2V5XG5cdCAqL1xuXHRzYXZlQXBwU3RhdGVXaXRoSW1tZWRpYXRlUmV0dXJuKG9JblNlbGVjdGlvblZhcmlhbnQ6IFNlbGVjdGlvblZhcmlhbnQpIHtcblx0XHRpZiAob0luU2VsZWN0aW9uVmFyaWFudCkge1xuXHRcdFx0Y29uc3Qgc1NlbGVjdGlvblZhcmlhbnQgPSBvSW5TZWxlY3Rpb25WYXJpYW50LnRvSlNPTlN0cmluZygpLCAvLyBjcmVhdGUgYW4gU1YgZm9yIGFwcCBzdGF0ZSBpbiBzdHJpbmcgZm9ybWF0XG5cdFx0XHRcdG9TZWxlY3Rpb25WYXJpYW50ID0gSlNPTi5wYXJzZShzU2VsZWN0aW9uVmFyaWFudCksIC8vIGNvbnZlcnQgc3RyaW5nIGludG8gSlNPTiB0byBzdG9yZSBpbiBBcHBTdGF0ZVxuXHRcdFx0XHRvWEFwcFN0YXRlT2JqZWN0ID0ge1xuXHRcdFx0XHRcdHNlbGVjdGlvblZhcmlhbnQ6IG9TZWxlY3Rpb25WYXJpYW50XG5cdFx0XHRcdH0sXG5cdFx0XHRcdG9SZXR1cm4gPSB0aGlzLm9OYXZIYW5kbGVyLl9zYXZlQXBwU3RhdGVXaXRoSW1tZWRpYXRlUmV0dXJuKG9YQXBwU3RhdGVPYmplY3QpO1xuXHRcdFx0cmV0dXJuIG9SZXR1cm4uYXBwU3RhdGVLZXkgPyBvUmV0dXJuLmFwcFN0YXRlS2V5IDogXCJcIjtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogTWl4IEF0dHJpYnV0ZXMgYW5kIHNlbGVjdGlvblZhcmlhbnQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fEFycmF5fSB2U2VtYW50aWNBdHRyaWJ1dGVzIE9iamVjdC8oQXJyYXkgb2YgT2JqZWN0cykgY29udGFpbmluZyBrZXkvdmFsdWUgcGFpcnNcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNTZWxlY3Rpb25WYXJpYW50IFRoZSBzZWxlY3Rpb24gdmFyaWFudCBpbiBzdHJpbmcgZm9ybWF0IGFzIHByb3ZpZGVkIGJ5IHRoZSBTbWFydEZpbHRlckJhciBjb250cm9sXG5cdCAqIEBwYXJhbSB7aW50fSBbaVN1cHByZXNzaW9uQmVoYXZpb3I9c2FwLmZlLm5hdmlnYXRpb24uU3VwcHJlc3Npb25CZWhhdmlvci5zdGFuZGFyZF0gSW5kaWNhdGVzIHdoZXRoZXIgc2VtYW50aWNcblx0ICogICAgICAgIGF0dHJpYnV0ZXMgd2l0aCBzcGVjaWFsIHZhbHVlcyAoc2VlIHtAbGluayBzYXAuZmUubmF2aWdhdGlvbi5TdXBwcmVzc2lvbkJlaGF2aW9yIHN1cHByZXNzaW9uIGJlaGF2aW9yfSkgbXVzdCBiZVxuXHQgKiAgICAgICAgc3VwcHJlc3NlZCBiZWZvcmUgdGhleSBhcmUgY29tYmluZWQgd2l0aCB0aGUgc2VsZWN0aW9uIHZhcmlhbnQ7IHNldmVyYWxcblx0ICogICAgICAgIHtAbGluayBzYXAuZmUubmF2aWdhdGlvbi5TdXBwcmVzc2lvbkJlaGF2aW9yIHN1cHByZXNzaW9uIGJlaGF2aW9yc30gY2FuIGJlIGNvbWJpbmVkIHdpdGggdGhlIGJpdHdpc2UgT1Igb3BlcmF0b3Jcblx0ICogICAgICAgICh8KVxuXHQgKiBAcmV0dXJucyB7b2JqZWN0fSBJbnN0YW5jZSBvZiB7QGxpbmsgc2FwLmZlLm5hdmlnYXRpb24uU2VsZWN0aW9uVmFyaWFudH1cblx0ICovXG5cdG1peEF0dHJpYnV0ZXNBbmRTZWxlY3Rpb25WYXJpYW50KFxuXHRcdHZTZW1hbnRpY0F0dHJpYnV0ZXM6IG9iamVjdCB8IGFueVtdLFxuXHRcdHNTZWxlY3Rpb25WYXJpYW50OiBzdHJpbmcgfCBTZWxlY3Rpb25WYXJpYW50LFxuXHRcdGlTdXBwcmVzc2lvbkJlaGF2aW9yPzogbnVtYmVyXG5cdCkge1xuXHRcdHJldHVybiB0aGlzLm9OYXZIYW5kbGVyLm1peEF0dHJpYnV0ZXNBbmRTZWxlY3Rpb25WYXJpYW50KHZTZW1hbnRpY0F0dHJpYnV0ZXMsIHNTZWxlY3Rpb25WYXJpYW50LCBpU3VwcHJlc3Npb25CZWhhdmlvcik7XG5cdH1cblxuXHQvKipcblx0ICogVGhlIG1ldGhvZCBjcmVhdGVzIGEgY29udGV4dCB1cmwgYmFzZWQgb24gcHJvdmlkZWQgZGF0YS4gVGhpcyBjb250ZXh0IHVybCBjYW4gZWl0aGVyIGJlIHVzZWQgYXMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzRW50aXR5U2V0TmFtZSBVc2VkIGZvciB1cmwgZGV0ZXJtaW5hdGlvblxuXHQgKiBAcGFyYW0gW29Nb2RlbF0gVGhlIE9EYXRhTW9kZWwgdXNlZCBmb3IgdXJsIGRldGVybWluYXRpb24uIElmIG9taXR0ZWQsIHRoZSBOYXZpZ2F0aW9uSGFuZGxlciBtb2RlbCBpcyB1c2VkLlxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29udGV4dCB1cmwgZm9yIHRoZSBnaXZlbiBlbnRpdGllc1xuXHQgKi9cblx0Y29uc3RydWN0Q29udGV4dFVybChzRW50aXR5U2V0TmFtZTogc3RyaW5nLCBvTW9kZWw6IGFueSkge1xuXHRcdHJldHVybiB0aGlzLm9OYXZIYW5kbGVyLmNvbnN0cnVjdENvbnRleHRVcmwoc0VudGl0eVNldE5hbWUsIG9Nb2RlbCk7XG5cdH1cblx0Z2V0SW50ZXJmYWNlKCkge1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG59XG5mdW5jdGlvbiBmbkdldEVtcHR5T2JqZWN0KCkge1xuXHRyZXR1cm4ge307XG59XG5cbmZ1bmN0aW9uIGZuR2V0UHJvbWlzZSgpIHtcblx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSh7fSk7XG59XG5cbmZ1bmN0aW9uIGZuR2V0SlF1ZXJ5UHJvbWlzZSgpIHtcblx0Y29uc3Qgb015RGVmZmVyZWQgPSBqUXVlcnkuRGVmZXJyZWQoKTtcblx0b015RGVmZmVyZWQucmVzb2x2ZSh7fSwge30sIFwiaW5pdGlhbFwiKTtcblx0cmV0dXJuIG9NeURlZmZlcmVkLnByb21pc2UoKTtcbn1cblxuZnVuY3Rpb24gZm5HZXRFbXB0eVN0cmluZygpIHtcblx0cmV0dXJuIFwiXCI7XG59XG5leHBvcnQgY2xhc3MgTmF2aWdhdGlvblNlcnZpY2VzTW9jayB7XG5cdGluaXRQcm9taXNlOiBQcm9taXNlPGFueT47XG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMuaW5pdFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUodGhpcyk7XG5cdH1cblxuXHRnZXRJbnRlcmZhY2UoKSB7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvLyByZXR1cm4gZW1wdHkgb2JqZWN0XG5cdGNyZWF0ZUVtcHR5QXBwU3RhdGUgPSBmbkdldEVtcHR5T2JqZWN0O1xuXHRzdG9yZUlubmVyQXBwU3RhdGVXaXRoSW1tZWRpYXRlUmV0dXJuID0gZm5HZXRFbXB0eU9iamVjdDtcblx0bWl4QXR0cmlidXRlc0FuZFNlbGVjdGlvblZhcmlhbnQgPSBmbkdldEVtcHR5T2JqZWN0O1xuXG5cdC8vIHJldHVybiBwcm9taXNlXG5cdGdldEFwcFN0YXRlID0gZm5HZXRQcm9taXNlO1xuXHRnZXRTdGFydHVwQXBwU3RhdGUgPSBmbkdldFByb21pc2U7XG5cdHBhcnNlTmF2aWdhdGlvbiA9IGZuR2V0SlF1ZXJ5UHJvbWlzZTtcblxuXHQvLyByZXR1cm4gZW1wdHkgc3RyaW5nXG5cdGNvbnN0cnVjdENvbnRleHRVcmwgPSBmbkdldEVtcHR5U3RyaW5nO1xuXG5cdHJlcGxhY2VJbm5lckFwcFN0YXRlS2V5KHNBcHBIYXNoOiBhbnkpIHtcblx0XHRyZXR1cm4gc0FwcEhhc2ggPyBzQXBwSGFzaCA6IFwiXCI7XG5cdH1cblxuXHRuYXZpZ2F0ZSgpIHtcblx0XHQvLyBEb24ndCBkbyBhbnl0aGluZ1xuXHR9XG59XG5cbmNsYXNzIE5hdmlnYXRpb25TZXJ2aWNlRmFjdG9yeSBleHRlbmRzIFNlcnZpY2VGYWN0b3J5PE5hdmlnYXRpb25TZXJ2aWNlU2V0dGluZ3M+IHtcblx0Y3JlYXRlSW5zdGFuY2Uob1NlcnZpY2VDb250ZXh0OiBTZXJ2aWNlQ29udGV4dDxOYXZpZ2F0aW9uU2VydmljZVNldHRpbmdzPikge1xuXHRcdGNvbnN0IG9OYXZpZ2F0aW9uU2VydmljZSA9XG5cdFx0XHRzYXAudXNoZWxsICYmIHNhcC51c2hlbGwuQ29udGFpbmVyID8gbmV3IE5hdmlnYXRpb25TZXJ2aWNlKG9TZXJ2aWNlQ29udGV4dCkgOiBuZXcgTmF2aWdhdGlvblNlcnZpY2VzTW9jaygpO1xuXHRcdC8vIFdhaXQgRm9yIGluaXRcblx0XHRyZXR1cm4gb05hdmlnYXRpb25TZXJ2aWNlLmluaXRQcm9taXNlLnRoZW4oZnVuY3Rpb24gKG9TZXJ2aWNlOiBhbnkpIHtcblx0XHRcdHJldHVybiBvU2VydmljZTtcblx0XHR9KTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBOYXZpZ2F0aW9uU2VydmljZUZhY3Rvcnk7XG4iXX0=
362
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk5hdmlnYXRpb25TZXJ2aWNlRmFjdG9yeS50cyJdLCJuYW1lcyI6WyJOYXZpZ2F0aW9uU2VydmljZSIsImluaXQiLCJvQ29udGV4dCIsImdldENvbnRleHQiLCJvQ29tcG9uZW50Iiwic2NvcGVPYmplY3QiLCJvTmF2SGFuZGxlciIsIk5hdmlnYXRpb25IYW5kbGVyIiwic2V0TW9kZWwiLCJnZXRNb2RlbCIsImluaXRQcm9taXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJleGl0IiwiZGVzdHJveSIsIm5hdmlnYXRlIiwic1NlbWFudGljT2JqZWN0Iiwic0FjdGlvbk5hbWUiLCJ2TmF2aWdhdGlvblBhcmFtZXRlcnMiLCJvSW5uZXJBcHBEYXRhIiwiZm5PbkVycm9yIiwib0V4dGVybmFsQXBwRGF0YSIsInNOYXZNb2RlIiwicGFyc2VOYXZpZ2F0aW9uIiwiX3Byb2Nlc3NCZWZvcmVTbWFydExpbmtQb3BvdmVyT3BlbnMiLCJvVGFibGVFdmVudFBhcmFtZXRlcnMiLCJzU2VsZWN0aW9uVmFyaWFudCIsIm1Jbm5lckFwcERhdGEiLCJwcm9jZXNzQmVmb3JlU21hcnRMaW5rUG9wb3Zlck9wZW5zIiwiZ2V0QXBwU3RhdGVLZXlBbmRVcmxQYXJhbWV0ZXJzIiwiX2dldEFwcFN0YXRlS2V5QW5kVXJsUGFyYW1ldGVycyIsImdldFRlY2huaWNhbFBhcmFtZXRlcnMiLCJzZXRUZWNobmljYWxQYXJhbWV0ZXJzIiwiYVRlY2huaWNhbFBhcmFtZXRlcnMiLCJvTW9kZWwiLCJzdG9yZUlubmVyQXBwU3RhdGUiLCJzdG9yZUlubmVyQXBwU3RhdGVXaXRoSW1tZWRpYXRlUmV0dXJuIiwiYkltbWVkaWF0ZUhhc2hSZXBsYWNlIiwiYk5vdExlZ2FjeSIsInJlcGxhY2VIYXNoIiwic0FwcFN0YXRlS2V5IiwicmVwbGFjZUlubmVyQXBwU3RhdGVLZXkiLCJzQXBwSGFzaCIsIl9yZXBsYWNlSW5uZXJBcHBTdGF0ZUtleSIsImdldFVybFBhcmFtZXRlcnNGcm9tU2VsZWN0aW9uVmFyaWFudCIsInZTZWxlY3Rpb25WYXJpYW50IiwiX2dldFVSTFBhcmFtZXRlcnNGcm9tU2VsZWN0aW9uVmFyaWFudCIsInNhdmVBcHBTdGF0ZVdpdGhJbW1lZGlhdGVSZXR1cm4iLCJvSW5TZWxlY3Rpb25WYXJpYW50IiwidG9KU09OU3RyaW5nIiwib1NlbGVjdGlvblZhcmlhbnQiLCJKU09OIiwicGFyc2UiLCJvWEFwcFN0YXRlT2JqZWN0Iiwic2VsZWN0aW9uVmFyaWFudCIsIm9SZXR1cm4iLCJfc2F2ZUFwcFN0YXRlV2l0aEltbWVkaWF0ZVJldHVybiIsImFwcFN0YXRlS2V5IiwibWl4QXR0cmlidXRlc0FuZFNlbGVjdGlvblZhcmlhbnQiLCJ2U2VtYW50aWNBdHRyaWJ1dGVzIiwiaVN1cHByZXNzaW9uQmVoYXZpb3IiLCJjb25zdHJ1Y3RDb250ZXh0VXJsIiwic0VudGl0eVNldE5hbWUiLCJnZXRJbnRlcmZhY2UiLCJTZXJ2aWNlIiwiZm5HZXRFbXB0eU9iamVjdCIsImZuR2V0UHJvbWlzZSIsImZuR2V0SlF1ZXJ5UHJvbWlzZSIsIm9NeURlZmZlcmVkIiwialF1ZXJ5IiwiRGVmZXJyZWQiLCJwcm9taXNlIiwiZm5HZXRFbXB0eVN0cmluZyIsIk5hdmlnYXRpb25TZXJ2aWNlc01vY2siLCJjcmVhdGVFbXB0eUFwcFN0YXRlIiwiZ2V0QXBwU3RhdGUiLCJnZXRTdGFydHVwQXBwU3RhdGUiLCJOYXZpZ2F0aW9uU2VydmljZUZhY3RvcnkiLCJjcmVhdGVJbnN0YW5jZSIsIm9TZXJ2aWNlQ29udGV4dCIsIm9OYXZpZ2F0aW9uU2VydmljZSIsInNhcCIsInVzaGVsbCIsIkNvbnRhaW5lciIsInRoZW4iLCJvU2VydmljZSIsIlNlcnZpY2VGYWN0b3J5Il0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7O01BS2FBLGlCOzs7Ozs7Ozs7O1dBR1pDLEksR0FBQSxnQkFBTztBQUNOLFVBQU1DLFFBQVEsR0FBRyxLQUFLQyxVQUFMLEVBQWpCO0FBQUEsVUFDQ0MsVUFBVSxHQUFHRixRQUFRLElB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QUFBLFdBZWRVLGtCQWZjLEdBZU9WLFlBZlA7QUFBQSxXQWdCZDNDLGVBaEJjLEdBZ0JJNEMsa0JBaEJKO0FBQUEsV0FtQmROLG1CQW5CYyxHQW1CUVcsZ0JBbkJSO0FBQ2IsV0FBSzlELFdBQUwsR0FBbUJDLE9BQU8sQ0FBQ0MsT0FBUixDQUFnQixJQUFoQixDQUFuQjtBQUNBOzs7OztZQUVEbUQsWSxHQUFBLHdCQUFlO0FBQ2QsYUFBTyxJQUFQO0FBQ0EsSyxDQUVEOzs7WUFhQXRCLHVCLEdBQUEsaUNBQXdCQyxRQUF4QixFQUF1QztBQUN0QyxhQUFPQSxRQUFRLEdBQUdBLFFBQUgsR0FBYyxFQUE3QjtBQUNBLEs7O1lBRUQzQixRLEdBQUEsb0JBQVcsQ0FDVjtBQUNBLEs7Ozs7Ozs7TUFHSThELHdCOzs7Ozs7Ozs7WUFDTEMsYyxHQUFBLHdCQUFlQyxlQUFmLEVBQTJFO0FBQzFFLFVBQU1DLGtCQUFrQixHQUN2QkMsR0FBRyxDQUFDQyxNQUFKLElBQWNELEdBQUcsQ0FBQ0MsTUFBSixDQUFXQyxTQUF6QixHQUFxQyxJQUFJbkYsaUJBQUosQ0FBc0IrRSxlQUF0QixDQUFyQyxHQUE4RSxJQUFJTixzQkFBSixFQUQvRSxDQUQwRSxDQUcxRTs7QUFDQSxhQUFPTyxrQkFBa0IsQ0FBQ3RFLFdBQW5CLENBQStCMEUsSUFBL0IsQ0FBb0MsVUFBVUMsUUFBVixFQUF5QjtBQUNuRSxlQUFPQSxRQUFQO0FBQ0EsT0FGTSxDQUFQO0FBR0EsSzs7O0lBUnFDQyxjOztTQVd4QlQsd0IiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5hdmlnYXRpb25IYW5kbGVyIH0gZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uXCI7XG5pbXBvcnQgdHlwZSBTZWxlY3Rpb25WYXJpYW50IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9TZWxlY3Rpb25WYXJpYW50XCI7XG5pbXBvcnQgU2VydmljZSBmcm9tIFwic2FwL3VpL2NvcmUvc2VydmljZS9TZXJ2aWNlXCI7XG5pbXBvcnQgU2VydmljZUZhY3RvcnkgZnJvbSBcInNhcC91aS9jb3JlL3NlcnZpY2UvU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgU2VydmljZUNvbnRleHQgfSBmcm9tIFwidHlwZXMvZXh0ZW5zaW9uX3R5cGVzXCI7XG5cbnR5cGUgTmF2aWdhdGlvblNlcnZpY2VTZXR0aW5ncyA9IHt9O1xuZXhwb3J0IGNsYXNzIE5hdmlnYXRpb25TZXJ2aWNlIGV4dGVuZHMgU2VydmljZTxOYXZpZ2F0aW9uU2VydmljZVNldHRpbmdzPiB7XG5cdGluaXRQcm9taXNlITogUHJvbWlzZTxhbnk+O1xuXHRvTmF2SGFuZGxlciE6IE5hdmlnYXRpb25IYW5kbGVyO1xuXHRpbml0KCkge1xuXHRcdGNvbnN0IG9Db250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG5cdFx0XHRvQ29tcG9uZW50ID0gb0NvbnRleHQgJiYgb0NvbnRleHQuc2NvcGVPYmplY3Q7XG5cblx0XHR0aGlzLm9OYXZIYW5kbGVyID0gbmV3IE5hdmlnYXRpb25IYW5kbGVyKG9Db21wb25lbnQpO1xuXHRcdHRoaXMub05hdkhhbmRsZXIuc2V0TW9kZWwob0NvbXBvbmVudC5nZXRNb2RlbCgpKTtcblx0XHR0aGlzLmluaXRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKHRoaXMpO1xuXHR9XG5cdGV4aXQoKSB7XG5cdFx0dGhpcy5vTmF2SGFuZGxlci5kZXN0cm95KCk7XG5cdH1cblxuXHQvKipcblx0ICogVHJpZ2dlcnMgYSBjcm9zcy1hcHAgbmF2aWdhdGlvbiBhZnRlciBzYXZpbmcgdGhlIGlubmVyIGFuZCB0aGUgY3Jvc3MtYXBwIHN0YXRlcy5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEBwYXJhbSBzU2VtYW50aWNPYmplY3QgU2VtYW50aWMgb2JqZWN0IG9mIHRoZSB0YXJnZXQgYXBwXG5cdCAqIEBwYXJhbSBzQWN0aW9uTmFtZSBBY3Rpb24gb2YgdGhlIHRhcmdldCBhcHBcblx0ICogQHBhcmFtIFt2TmF2aWdhdGlvblBhcmFtZXRlcnNdIE5hdmlnYXRpb24gcGFyYW1ldGVycyBhcyBhbiBvYmplY3Qgd2l0aCBrZXkvdmFsdWUgcGFpcnMgb3IgYXMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2Zcblx0ICogICAgICAgIHN1Y2ggYW4gb2JqZWN0LiBJZiBwYXNzZWQgYXMgYW4gb2JqZWN0LCB0aGUgcHJvcGVydGllcyBhcmUgbm90IGNoZWNrZWQgYWdhaW5zdCB0aGUgPGNvZGU+SXNQb3RlbnRpYWxTZW5zaXRpdmU8L2NvZGU+IG9yXG5cdCAqICAgICAgICA8Y29kZT5NZWFzdXJlPC9jb2RlPiB0eXBlLlxuXHQgKiBAcGFyYW0gW29Jbm5lckFwcERhdGFdIE9iamVjdCBmb3Igc3RvcmluZyBjdXJyZW50IHN0YXRlIG9mIHRoZSBhcHBcblx0ICogQHBhcmFtIFtmbk9uRXJyb3JdIENhbGxiYWNrIHRoYXQgaXMgY2FsbGVkIGlmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgbmF2aWdhdGlvbiA8YnI+XG5cdCAqIEBwYXJhbSBbb0V4dGVybmFsQXBwRGF0YV0gT2JqZWN0IGZvciBzdG9yaW5nIHRoZSBzdGF0ZSB3aGljaCB3aWxsIGJlIGZvcndhcmRlZCB0byB0aGUgdGFyZ2V0IGNvbXBvbmVudC5cblx0ICogQHBhcmFtIFtzTmF2TW9kZV0gQXJndW1lbnQgaXMgdXNlZCB0byBvdmVyd3JpdGUgdGhlIEZMUC1jb25maWd1cmVkIHRhcmdldCBmb3Igb3BlbmluZyBhIFVSTC4gSWYgdXNlZCwgb25seSB0aGVcblx0ICogICAgICAgIDxjb2RlPmV4cGxhY2U8L2NvZGU+IG9yIDxjb2RlPmlucGxhY2U8L2NvZGU+IHZhbHVlcyBhcmUgYWxsb3dlZC4gQW55IG90aGVyIHZhbHVlIHdpbGwgbGVhZCB0byBhbiBleGNlcHRpb25cblx0ICogICAgICAgIDxjb2RlPk5hdmlnYXRpb25IYW5kbGVyLklOVkFMSURfTkFWX01PREU8L2NvZGU+LlxuXHQgKi9cblx0bmF2aWdhdGUoXG5cdFx0c1NlbWFudGljT2JqZWN0OiBzdHJpbmcsXG5cdFx0c0FjdGlvbk5hbWU6IHN0cmluZyxcblx0XHR2TmF2aWdhdGlvblBhcmFtZXRlcnM/OiBzdHJpbmcgfCBvYmplY3QsXG5cdFx0b0lubmVyQXBwRGF0YT86IG9iamVjdCxcblx0XHRmbk9uRXJyb3I/OiBGdW5jdGlvbixcblx0XHRvRXh0ZXJuYWxBcHBEYXRhPzogb2JqZWN0LFxuXHRcdHNOYXZNb2RlPzogc3RyaW5nXG5cdCkge1xuXHRcdC8vIFRPRE86IE5hdmlnYXRpb24gSGFuZGxlciBkb2VzIG5vdCBoYW5kbGUgbmF2aWdhdGlvbiB3aXRob3V0IGEgY29udGV4dFxuXHRcdC8vIGJ1dCBpbiB2NCBEYXRhRmllbGRGb3JJQk4gd2l0aCByZXF1aXJlc0NvbnRleHQgZmFsc2UgY2FuIHRyaWdnZXIgYSBuYXZpZ2F0aW9uIHdpdGhvdXQgYW55IGNvbnRleHRcblx0XHQvLyBUaGlzIHNob3VsZCBiZSBoYW5kbGVkXG5cdFx0dGhpcy5vTmF2SGFuZGxlci5uYXZpZ2F0ZShcblx0XHRcdHNTZW1hbnRpY09iamVjdCxcblx0XHRcdHNBY3Rpb25OYW1lLFxuXHRcdFx0dk5hdmlnYXRpb25QYXJhbWV0ZXJzLFxuXHRcdFx0b0lubmVyQXBwRGF0YSxcblx0XHRcdGZuT25FcnJvcixcblx0XHRcdG9FeHRlcm5hbEFwcERhdGEsXG5cdFx0XHRzTmF2TW9kZVxuXHRcdCk7XG5cdH1cblx0LyoqXG5cdCAqIFBhcnNlcyB0aGUgaW5jb21pbmcgVVJMIGFuZCByZXR1cm5zIGEgUHJvbWlzZS5cblx0ICpcblx0ICogQHJldHVybnMgQSBQcm9taXNlIG9iamVjdCB3aGljaCByZXR1cm5zIHRoZVxuXHQgKiBleHRyYWN0ZWQgYXBwIHN0YXRlLCB0aGUgc3RhcnR1cCBwYXJhbWV0ZXJzLCBhbmQgdGhlIHR5cGUgb2YgbmF2aWdhdGlvbiB3aGVuIGV4ZWN1dGlvbiBpcyBzdWNjZXNzZnVsLFxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICovXG5cdHBhcnNlTmF2aWdhdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5vTmF2SGFuZGxlci5wYXJzZU5hdmlnYXRpb24oKTtcblx0fVxuXHQvKipcblx0ICogUHJvY2Vzc2VzIG5hdmlnYXRpb24tcmVsYXRlZCB0YXNrcyByZWxhdGVkIHRvIGJlZm9yZVBvcG92ZXJPcGVucyBldmVudCBoYW5kbGluZyBmb3IgdGhlIFNtYXJ0TGluayBjb250cm9sIGFuZCByZXR1cm5zIGEgUHJvbWlzZSBvYmplY3QuXG5cdCAqXG5cdCAqIEBwYXJhbSBvVGFibGVFdmVudFBhcmFtZXRlcnMgVGhlIHBhcmFtZXRlcnMgbWFkZSBhdmFpbGFibGUgYnkgdGhlIFNtYXJ0VGFibGUgY29udHJvbCB3aGVuIHRoZSBTbWFydExpbmsgY29udHJvbCBoYXMgYmVlbiBjbGlja2VkLFxuXHQgKiAgICAgICAgYW4gaW5zdGFuY2Ugb2YgYSBQb3BPdmVyIG9iamVjdFxuXHQgKiBAcGFyYW0gc1NlbGVjdGlvblZhcmlhbnQgU3RyaW5naWZpZWQgSlNPTiBvYmplY3QgYXMgcmV0dXJuZWQsIGZvciBleGFtcGxlLCBmcm9tIGdldERhdGFTdWl0ZUZvcm1hdCgpIG9mIHRoZSBTbWFydEZpbHRlckJhciBjb250cm9sXG5cdCAqIEBwYXJhbSBbbUlubmVyQXBwRGF0YV0gT2JqZWN0IGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGFwcC4gSWYgcHJvdmlkZWQsIG9wZW5pbmcgdGhlIFBvcG92ZXIgaXMgZGVmZXJyZWQgdW50aWwgdGhlXG5cdCAqICAgICAgICBpbm5lciBhcHAgZGF0YSBpcyBzYXZlZCBpbiBhIGNvbnNpc3RlbnQgd2F5LlxuXHQgKiBAcmV0dXJucyBBIFByb21pc2Ugb2JqZWN0IHRvIG1vbml0b3Igd2hlbiBhbGwgYWN0aW9ucyBvZiB0aGUgZnVuY3Rpb24gaGF2ZSBiZWVuIGV4ZWN1dGVkOyBpZiB0aGUgZXhlY3V0aW9uIGlzIHN1Y2Nlc3NmdWwsIHRoZVxuXHQgKiAgICAgICAgICBtb2RpZmllZCBvVGFibGVFdmVudFBhcmFtZXRlcnMgaXMgcmV0dXJuZWQ7IGlmIGFuIGVycm9yIG9jY3VycywgYW4gZXJyb3Igb2JqZWN0IG9mIHR5cGVcblx0ICogICAgICAgICAge0BsaW5rIHNhcC5mZS5uYXZpZ2F0aW9uLk5hdkVycm9yfSBpcyByZXR1cm5lZFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0X3Byb2Nlc3NCZWZvcmVTbWFydExpbmtQb3BvdmVyT3BlbnMob1RhYmxlRXZlbnRQYXJhbWV0ZXJzOiBvYmplY3QsIHNTZWxlY3Rpb25WYXJpYW50OiBzdHJpbmcsIG1Jbm5lckFwcERhdGE6IG9iamVjdCB8IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiB0aGlzLm9OYXZIYW5kbGVyLnByb2Nlc3NCZWZvcmVTbWFydExpbmtQb3BvdmVyT3BlbnMob1RhYmxlRXZlbnRQYXJhbWV0ZXJzLCBzU2VsZWN0aW9uVmFyaWFudCwgbUlubmVyQXBwRGF0YSk7XG5cdH1cblxuXHQvKipcblx0ICogUHJvY2Vzc2VzIHNlbGVjdGlvblZhcmlhbnQgc3RyaW5nIGFuZCByZXR1cm5zIGEgUHJvbWlzZSBvYmplY3QgKHNlbWFudGljQXR0cmlidXRlcyBhbmQgQXBwU3RhdGVLZXkpLlxuXHQgKlxuXHQgKiBAcGFyYW0gc1NlbGVjdGlvblZhcmlhbnQgU3RyaW5naWZpZWQgSlNPTiBvYmplY3Rcblx0ICogQHJldHVybnMgQSBQcm9taXNlIG9iamVjdCB0byBtb25pdG9yIHdoZW4gYWxsIGFjdGlvbnMgb2YgdGhlIGZ1bmN0aW9uIGhhdmUgYmVlbiBleGVjdXRlZDsgaWYgdGhlIGV4ZWN1dGlvbiBpcyBzdWNjZXNzZnVsLCB0aGVcblx0ICogICAgICAgICAgc2VtYW50aWNBdHRyaWJ1dGVzIGFzIHdlbGwgYXMgdGhlIGFwcFN0YXRlS2V5IGFyZSByZXR1cm5lZDsgaWYgYW4gZXJyb3Igb2NjdXJzLCBhbiBlcnJvciBvYmplY3Qgb2YgdHlwZVxuXHQgKiAgICAgICAgICB7QGxpbmsgc2FwLmZlLm5hdmlnYXRpb24uTmF2RXJyb3J9IGlzIHJldHVybmVkXG5cdCAqIDxicj5cblx0ICogQGV4YW1wbGUgPGNvZGU+XG5cdCAqXG5cdCAqIFx0XHR2YXIgb1NlbGVjdGlvblZhcmlhbnQgPSBuZXcgc2FwLmZlLm5hdmlnYXRpb24uU2VsZWN0aW9uVmFyaWFudCgpO1xuXHQgKiBcdFx0b1NlbGVjdGlvblZhcmlhbnQuYWRkU2VsZWN0T3B0aW9uKFwiQ29tcGFueUNvZGVcIiwgXCJJXCIsIFwiRVFcIiwgXCIwMDAxXCIpO1xuXHQgKiBcdFx0b1NlbGVjdGlvblZhcmlhbnQuYWRkU2VsZWN0T3B0aW9uKFwiQ3VzdG9tZXJcIiwgXCJJXCIsIFwiRVFcIiwgXCJDMDAwMVwiKTtcblx0ICogXHRcdHZhciBzU2VsZWN0aW9uVmFyaWFudD0gb1NlbGVjdGlvblZhcmlhbnQudG9KU09OU3RyaW5nKCk7XG5cdCAqXG5cdCAqIFx0XHR2YXIgb05hdmlnYXRpb25IYW5kbGVyID0gbmV3IHNhcC5mZS5uYXZpZ2F0aW9uLk5hdmlnYXRpb25IYW5kbGVyKG9Db250cm9sbGVyKTtcblx0ICogXHRcdHZhciBvUHJvbWlzZU9iamVjdCA9IG9OYXZpZ2F0aW9uSGFuZGxlci5fZ2V0QXBwU3RhdGVLZXlBbmRVcmxQYXJhbWV0ZXJzKHNTZWxlY3Rpb25WYXJpYW50KTtcblx0ICpcblx0ICogXHRcdG9Qcm9taXNlT2JqZWN0LmRvbmUoZnVuY3Rpb24ob1NlbWFudGljQXR0cmlidXRlcywgc0FwcFN0YXRlS2V5KXtcblx0ICogXHRcdFx0Ly8gaGVyZSB5b3UgY2FuIGFkZCBjb2RpbmcgdGhhdCBzaG91bGQgcnVuIGFmdGVyIGFsbCBhcHAgc3RhdGUgYW5kIHRoZSBzZW1hbnRpYyBhdHRyaWJ1dGVzIGhhdmUgYmVlbiByZXR1cm5lZC5cblx0ICogXHRcdH0pO1xuXHQgKlxuXHQgKiBcdFx0b1Byb21pc2VPYmplY3QuZmFpbChmdW5jdGlvbihvRXJyb3Ipe1xuXHQgKiBcdFx0XHQvL3NvbWUgZXJyb3IgaGFuZGxpbmdcblx0ICogXHRcdH0pO1xuXHQgKlxuXHQgKiA8L2NvZGU+XG5cdCAqIEBwcml2YXRlXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKi9cblx0Z2V0QXBwU3RhdGVLZXlBbmRVcmxQYXJhbWV0ZXJzKHNTZWxlY3Rpb25WYXJpYW50OiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gdGhpcy5vTmF2SGFuZGxlci5fZ2V0QXBwU3RhdGVLZXlBbmRVcmxQYXJhbWV0ZXJzKHNTZWxlY3Rpb25WYXJpYW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBhcHBsaWNhdGlvbiBzcGVjaWZpYyB0ZWNobmljYWwgcGFyYW1ldGVycy5cblx0ICpcblx0ICogQHJldHVybnMgQ29udGFpbmluZyB0aGUgdGVjaG5pY2FsIHBhcmFtZXRlcnMuXG5cdCAqIEBwcml2YXRlXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKi9cblx0Z2V0VGVjaG5pY2FsUGFyYW1ldGVycygpIHtcblx0XHRyZXR1cm4gdGhpcy5vTmF2SGFuZGxlci5nZXRUZWNobmljYWxQYXJhbWV0ZXJzKCk7XG5cdH1cblx0LyoqXG5cdCAqIFNldHMgdGhlIGFwcGxpY2F0aW9uIHNwZWNpZmljIHRlY2huaWNhbCBwYXJhbWV0ZXJzLiBUZWNobmljYWwgcGFyYW1ldGVycyB3aWxsIG5vdCBiZSBhZGRlZCB0byB0aGUgc2VsZWN0aW9uIHZhcmlhbnQgcGFzc2VkIHRvIHRoZVxuXHQgKiBhcHBsaWNhdGlvbi5cblx0ICogQXMgYSBkZWZhdWx0IHNhcC1zeXN0ZW0sIHNhcC11c2hlbGwtZGVmYXVsdGVkUGFyYW1ldGVyTmFtZXMgYW5kIGhjcEFwcGxpY2F0aW9uSWQgYXJlIGNvbnNpZGVyZWQgYXMgdGVjaG5pY2FsIHBhcmFtZXRlcnMuXG5cdCAqXG5cdCAqIEBwYXJhbSBhVGVjaG5pY2FsUGFyYW1ldGVycyBMaXN0IG9mIHBhcmFtZXRlciBuYW1lcyB0byBiZSBjb25zaWRlcmVkIGFzIHRlY2huaWNhbCBwYXJhbWV0ZXJzLiA8Y29kZT5udWxsPC9jb2RlPiBvclxuXHQgKiAgICAgICAgPGNvZGU+dW5kZWZpbmVkPC9jb2RlPiBtYXkgYmUgdXNlZCB0byByZXNldCB0aGUgY29tcGxldGUgbGlzdC5cblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqL1xuXHRzZXRUZWNobmljYWxQYXJhbWV0ZXJzKGFUZWNobmljYWxQYXJhbWV0ZXJzOiBhbnlbXSkge1xuXHRcdHRoaXMub05hdkhhbmRsZXIuc2V0VGVjaG5pY2FsUGFyYW1ldGVycyhhVGVjaG5pY2FsUGFyYW1ldGVycyk7XG5cdH1cblx0LyoqXG5cdCAqIFNldHMgdGhlIG1vZGVsIHRoYXQgaXMgdXNlZCBmb3IgdmVyaWZpY2F0aW9uIG9mIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbi4gSWYgdGhlIG1vZGVsIGlzIG5vdCBzZXQsIHRoZSB1bm5hbWVkIGNvbXBvbmVudCBtb2RlbCBpcyB1c2VkIGZvciB0aGVcblx0ICogdmVyaWZpY2F0aW9uIG9mIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbi5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEBwYXJhbSBvTW9kZWwgTW9kZWwgRm9yIGNoZWNraW5nIHNlbnNpdGl2ZSBpbmZvcm1hdGlvblxuXHQgKi9cblx0c2V0TW9kZWwob01vZGVsOiBhbnkpIHtcblx0XHR0aGlzLm9OYXZIYW5kbGVyLnNldE1vZGVsKG9Nb2RlbCk7XG5cdH1cblx0LyoqXG5cdCAqIENoYW5nZXMgdGhlIFVSTCBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgYXBwIHN0YXRlIGFuZCBzdG9yZXMgdGhlIGFwcCBzdGF0ZSBmb3IgbGF0ZXIgcmV0cmlldmFsLlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQHBhcmFtIG1Jbm5lckFwcERhdGEgT2JqZWN0IGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGFwcFxuXHQgKiBAcmV0dXJucyBBIFByb21pc2Ugb2JqZWN0IHRvIG1vbml0b3Igd2hlbiBhbGwgdGhlIGFjdGlvbnMgb2YgdGhlIGZ1bmN0aW9uIGhhdmUgYmVlbiBleGVjdXRlZDsgaWYgdGhlIGV4ZWN1dGlvbiBpcyBzdWNjZXNzZnVsLCB0aGVcblx0ICogICAgICAgICAgYXBwIHN0YXRlIGtleSBpcyByZXR1cm5lZDsgaWYgYW4gZXJyb3Igb2NjdXJzLCBhbiBvYmplY3Qgb2YgdHlwZSB7QGxpbmsgc2FwLmZlLm5hdmlnYXRpb24uTmF2RXJyb3J9IGlzXG5cdCAqICAgICAgICAgIHJldHVybmVkXG5cdCAqL1xuXHRzdG9yZUlubmVyQXBwU3RhdGUobUlubmVyQXBwRGF0YTogb2JqZWN0KSB7XG5cdFx0cmV0dXJuIHRoaXMub05hdkhhbmRsZXIuc3RvcmVJbm5lckFwcFN0YXRlKG1Jbm5lckFwcERhdGEpO1xuXHR9XG5cdC8qKlxuXHQgKiBDaGFuZ2VzIHRoZSBVUkwgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IGFwcCBzdGF0ZSBhbmQgc3RvcmVzIHRoZSBhcHAgc3RhdGUgZm9yIGxhdGVyIHJldHJpZXZhbC5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEBwYXJhbSBtSW5uZXJBcHBEYXRhIE9iamVjdCBjb250YWluaW5nIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBhcHBcblx0ICogQHBhcmFtIFtiSW1tZWRpYXRlSGFzaFJlcGxhY2U9ZmFsc2VdIElmIHNldCB0byBmYWxzZSwgdGhlIGlubmVyIGFwcCBoYXNoIHdpbGwgbm90IGJlIHJlcGxhY2VkIHVudGlsIHN0b3JpbmcgaXMgc3VjY2Vzc2Z1bDsgZG8gbm90XG5cdCAqIEBwYXJhbSBiTm90TGVnYWN5XG5cdCAqIEByZXR1cm5zIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBhcHBTdGF0ZUlkIGFuZCBhIHByb21pc2Ugb2JqZWN0IHRvIG1vbml0b3Igd2hlbiBhbGwgdGhlIGFjdGlvbnMgb2YgdGhlIGZ1bmN0aW9uIGhhdmUgYmVlblxuXHQgKiBleGVjdXRlZDsgUGxlYXNlIG5vdGUgdGhhdCB0aGUgYXBwU3RhdGVLZXkgbWF5IGJlIHVuZGVmaW5lZCBvciBlbXB0eS5cblx0ICovXG5cdHN0b3JlSW5uZXJBcHBTdGF0ZVdpdGhJbW1lZGlhdGVSZXR1cm4obUlubmVyQXBwRGF0YTogb2JqZWN0LCBiSW1tZWRpYXRlSGFzaFJlcGxhY2U6IGJvb2xlYW4gfCB1bmRlZmluZWQsIGJOb3RMZWdhY3k6IGFueSkge1xuXHRcdHJldHVybiB0aGlzLm9OYXZIYW5kbGVyLnN0b3JlSW5uZXJBcHBTdGF0ZVdpdGhJbW1lZGlhdGVSZXR1cm4obUlubmVyQXBwRGF0YSwgYkltbWVkaWF0ZUhhc2hSZXBsYWNlLCBiTm90TGVnYWN5KTtcblx0fVxuXHQvKipcblx0ICogQ2hhbmdlcyB0aGUgVVJMIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBzQXBwU3RhdGVLZXkuIEFzIGFuIHJlYWN0aW9uIHJvdXRlIGNoYW5nZSBldmVudCB3aWxsIGJlIHRyaWdnZXJlZC5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEBwYXJhbSBzQXBwU3RhdGVLZXkgVGhlIG5ldyBhcHAgc3RhdGUga2V5LlxuXHQgKi9cblx0cmVwbGFjZUhhc2goc0FwcFN0YXRlS2V5OiBzdHJpbmcpIHtcblx0XHR0aGlzLm9OYXZIYW5kbGVyLnJlcGxhY2VIYXNoKHNBcHBTdGF0ZUtleSk7XG5cdH1cblx0cmVwbGFjZUlubmVyQXBwU3RhdGVLZXkoc0FwcEhhc2g6IGFueSwgc0FwcFN0YXRlS2V5OiBhbnkpIHtcblx0XHRyZXR1cm4gdGhpcy5vTmF2SGFuZGxlci5fcmVwbGFjZUlubmVyQXBwU3RhdGVLZXkoc0FwcEhhc2gsIHNBcHBTdGF0ZUtleSk7XG5cdH1cblx0LyoqXG5cdCAqIEdldCBzaW5nbGUgdmFsdWVzIGZyb20gU2VsZWN0aW9uVmFyaWFudCBmb3IgdXJsIHBhcmFtZXRlcnMuXG5cdCAqXG5cdCAqIEBwcml2YXRlXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKiBAcGFyYW0gW3ZTZWxlY3Rpb25WYXJpYW50XVxuXHQgKiBAcGFyYW0gW3ZTZWxlY3Rpb25WYXJpYW50Lm9VcmxQYXJhbWF0ZXJzXVxuXHQgKiBAcmV0dXJucyBUaGUgdXJsIHBhcmFtZXRlcnNcblx0ICovXG5cdGdldFVybFBhcmFtZXRlcnNGcm9tU2VsZWN0aW9uVmFyaWFudCh2U2VsZWN0aW9uVmFyaWFudDogc3RyaW5nIHwgb2JqZWN0IHwgdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIHRoaXMub05hdkhhbmRsZXIuX2dldFVSTFBhcmFtZXRlcnNGcm9tU2VsZWN0aW9uVmFyaWFudCh2U2VsZWN0aW9uVmFyaWFudCk7XG5cdH1cblxuXHQvKipcblx0ICogU2F2ZSBhcHAgc3RhdGUgYW5kIHJldHVybiBpbW1lZGlhdGVseSB3aXRob3V0IHdhaXRpbmcgZm9yIHJlc3BvbnNlLlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQHBhcmFtIG9JblNlbGVjdGlvblZhcmlhbnQgSW5zdGFuY2Ugb2Ygc2FwLmZlLm5hdmlnYXRpb24uU2VsZWN0aW9uVmFyaWFudFxuXHQgKiBAcmV0dXJucyBBcHBTdGF0ZSBrZXlcblx0ICovXG5cdHNhdmVBcHBTdGF0ZVdpdGhJbW1lZGlhdGVSZXR1cm4ob0luU2VsZWN0aW9uVmFyaWFudDogU2VsZWN0aW9uVmFyaWFudCkge1xuXHRcdGlmIChvSW5TZWxlY3Rpb25WYXJpYW50KSB7XG5cdFx0XHRjb25zdCBzU2VsZWN0aW9uVmFyaWFudCA9IG9JblNlbGVjdGlvblZhcmlhbnQudG9KU09OU3RyaW5nKCksIC8vIGNyZWF0ZSBhbiBTViBmb3IgYXBwIHN0YXRlIGluIHN0cmluZyBmb3JtYXRcblx0XHRcdFx0b1NlbGVjdGlvblZhcmlhbnQgPSBKU09OLnBhcnNlKHNTZWxlY3Rpb25WYXJpYW50KSwgLy8gY29udmVydCBzdHJpbmcgaW50byBKU09OIHRvIHN0b3JlIGluIEFwcFN0YXRlXG5cdFx0XHRcdG9YQXBwU3RhdGVPYmplY3QgPSB7XG5cdFx0XHRcdFx0c2VsZWN0aW9uVmFyaWFudDogb1NlbGVjdGlvblZhcmlhbnRcblx0XHRcdFx0fSxcblx0XHRcdFx0b1JldHVybiA9IHRoaXMub05hdkhhbmRsZXIuX3NhdmVBcHBTdGF0ZVdpdGhJbW1lZGlhdGVSZXR1cm4ob1hBcHBTdGF0ZU9iamVjdCk7XG5cdFx0XHRyZXR1cm4gb1JldHVybi5hcHBTdGF0ZUtleSA/IG9SZXR1cm4uYXBwU3RhdGVLZXkgOiBcIlwiO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBNaXggQXR0cmlidXRlcyBhbmQgc2VsZWN0aW9uVmFyaWFudC5cblx0ICpcblx0ICogQHBhcmFtIHZTZW1hbnRpY0F0dHJpYnV0ZXMgT2JqZWN0LyhBcnJheSBvZiBPYmplY3RzKSBjb250YWluaW5nIGtleS92YWx1ZSBwYWlyc1xuXHQgKiBAcGFyYW0gc1NlbGVjdGlvblZhcmlhbnQgVGhlIHNlbGVjdGlvbiB2YXJpYW50IGluIHN0cmluZyBmb3JtYXQgYXMgcHJvdmlkZWQgYnkgdGhlIFNtYXJ0RmlsdGVyQmFyIGNvbnRyb2xcblx0ICogQHBhcmFtIFtpU3VwcHJlc3Npb25CZWhhdmlvcj1zYXAuZmUubmF2aWdhdGlvbi5TdXBwcmVzc2lvbkJlaGF2aW9yLnN0YW5kYXJkXSBJbmRpY2F0ZXMgd2hldGhlciBzZW1hbnRpY1xuXHQgKiAgICAgICAgYXR0cmlidXRlcyB3aXRoIHNwZWNpYWwgdmFsdWVzIChzZWUge0BsaW5rIHNhcC5mZS5uYXZpZ2F0aW9uLlN1cHByZXNzaW9uQmVoYXZpb3Igc3VwcHJlc3Npb24gYmVoYXZpb3J9KSBtdXN0IGJlXG5cdCAqICAgICAgICBzdXBwcmVzc2VkIGJlZm9yZSB0aGV5IGFyZSBjb21iaW5lZCB3aXRoIHRoZSBzZWxlY3Rpb24gdmFyaWFudDsgc2V2ZXJhbFxuXHQgKiAgICAgICAge0BsaW5rIHNhcC5mZS5uYXZpZ2F0aW9uLlN1cHByZXNzaW9uQmVoYXZpb3Igc3VwcHJlc3Npb24gYmVoYXZpb3JzfSBjYW4gYmUgY29tYmluZWQgd2l0aCB0aGUgYml0d2lzZSBPUiBvcGVyYXRvclxuXHQgKiAgICAgICAgKHwpXG5cdCAqIEByZXR1cm5zIEluc3RhbmNlIG9mIHtAbGluayBzYXAuZmUubmF2aWdhdGlvbi5TZWxlY3Rpb25WYXJpYW50fVxuXHQgKi9cblx0bWl4QXR0cmlidXRlc0FuZFNlbGVjdGlvblZhcmlhbnQoXG5cdFx0dlNlbWFudGljQXR0cmlidXRlczogb2JqZWN0IHwgYW55W10sXG5cdFx0c1NlbGVjdGlvblZhcmlhbnQ6IHN0cmluZyB8IFNlbGVjdGlvblZhcmlhbnQsXG5cdFx0aVN1cHByZXNzaW9uQmVoYXZpb3I/OiBudW1iZXJcblx0KSB7XG5cdFx0cmV0dXJuIHRoaXMub05hdkhhbmRsZXIubWl4QXR0cmlidXRlc0FuZFNlbGVjdGlvblZhcmlhbnQodlNlbWFudGljQXR0cmlidXRlcywgc1NlbGVjdGlvblZhcmlhbnQsIGlTdXBwcmVzc2lvbkJlaGF2aW9yKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGUgbWV0aG9kIGNyZWF0ZXMgYSBjb250ZXh0IHVybCBiYXNlZCBvbiBwcm92aWRlZCBkYXRhLiBUaGlzIGNvbnRleHQgdXJsIGNhbiBlaXRoZXIgYmUgdXNlZCBhcy5cblx0ICpcblx0ICogQHBhcmFtIHNFbnRpdHlTZXROYW1lIFVzZWQgZm9yIHVybCBkZXRlcm1pbmF0aW9uXG5cdCAqIEBwYXJhbSBbb01vZGVsXSBUaGUgT0RhdGFNb2RlbCB1c2VkIGZvciB1cmwgZGV0ZXJtaW5hdGlvbi4gSWYgb21pdHRlZCwgdGhlIE5hdmlnYXRpb25IYW5kbGVyIG1vZGVsIGlzIHVzZWQuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250ZXh0IHVybCBmb3IgdGhlIGdpdmVuIGVudGl0aWVzXG5cdCAqL1xuXHRjb25zdHJ1Y3RDb250ZXh0VXJsKHNFbnRpdHlTZXROYW1lOiBzdHJpbmcsIG9Nb2RlbDogYW55KSB7XG5cdFx0cmV0dXJuIHRoaXMub05hdkhhbmRsZXIuY29uc3RydWN0Q29udGV4dFVybChzRW50aXR5U2V0TmFtZSwgb01vZGVsKTtcblx0fVxuXHRnZXRJbnRlcmZhY2UoKSB7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cbn1cbmZ1bmN0aW9uIGZuR2V0RW1wdHlPYmplY3QoKSB7XG5cdHJldHVybiB7fTtcbn1cblxuZnVuY3Rpb24gZm5HZXRQcm9taXNlKCkge1xuXHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9KTtcbn1cblxuZnVuY3Rpb24gZm5HZXRKUXVlcnlQcm9taXNlKCkge1xuXHRjb25zdCBvTXlEZWZmZXJlZCA9IGpRdWVyeS5EZWZlcnJlZCgpO1xuXHRvTXlEZWZmZXJlZC5yZXNvbHZlKHt9LCB7fSwgXCJpbml0aWFsXCIpO1xuXHRyZXR1cm4gb015RGVmZmVyZWQucHJvbWlzZSgpO1xufVxuXG5mdW5jdGlvbiBmbkdldEVtcHR5U3RyaW5nKCkge1xuXHRyZXR1cm4gXCJcIjtcbn1cbmV4cG9ydCBjbGFzcyBOYXZpZ2F0aW9uU2VydmljZXNNb2NrIHtcblx0aW5pdFByb21pc2U6IFByb21pc2U8YW55Pjtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0dGhpcy5pbml0UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh0aGlzKTtcblx0fVxuXG5cdGdldEludGVyZmFjZSgpIHtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8vIHJldHVybiBlbXB0eSBvYmplY3Rcblx0Y3JlYXRlRW1wdHlBcHBTdGF0ZSA9IGZuR2V0RW1wdHlPYmplY3Q7XG5cdHN0b3JlSW5uZXJBcHBTdGF0ZVdpdGhJbW1lZGlhdGVSZXR1cm4gPSBmbkdldEVtcHR5T2JqZWN0O1xuXHRtaXhBdHRyaWJ1dGVzQW5kU2VsZWN0aW9uVmFyaWFudCA9IGZuR2V0RW1wdHlPYmplY3Q7XG5cblx0Ly8gcmV0dXJuIHByb21pc2Vcblx0Z2V0QXBwU3RhdGUgPSBmbkdldFByb21pc2U7XG5cdGdldFN0YXJ0dXBBcHBTdGF0ZSA9IGZuR2V0UHJvbWlzZTtcblx0cGFyc2VOYXZpZ2F0aW9uID0gZm5HZXRKUXVlcnlQcm9taXNlO1xuXG5cdC8vIHJldHVybiBlbXB0eSBzdHJpbmdcblx0Y29uc3RydWN0Q29udGV4dFVybCA9IGZuR2V0RW1wdHlTdHJpbmc7XG5cblx0cmVwbGFjZUlubmVyQXBwU3RhdGVLZXkoc0FwcEhhc2g6IGFueSkge1xuXHRcdHJldHVybiBzQXBwSGFzaCA/IHNBcHBIYXNoIDogXCJcIjtcblx0fVxuXG5cdG5hdmlnYXRlKCkge1xuXHRcdC8vIERvbid0IGRvIGFueXRoaW5nXG5cdH1cbn1cblxuY2xhc3MgTmF2aWdhdGlvblNlcnZpY2VGYWN0b3J5IGV4dGVuZHMgU2VydmljZUZhY3Rvcnk8TmF2aWdhdGlvblNlcnZpY2VTZXR0aW5ncz4ge1xuXHRjcmVhdGVJbnN0YW5jZShvU2VydmljZUNvbnRleHQ6IFNlcnZpY2VDb250ZXh0PE5hdmlnYXRpb25TZXJ2aWNlU2V0dGluZ3M+KSB7XG5cdFx0Y29uc3Qgb05hdmlnYXRpb25TZXJ2aWNlID1cblx0XHRcdHNhcC51c2hlbGwgJiYgc2FwLnVzaGVsbC5Db250YWluZXIgPyBuZXcgTmF2aWdhdGlvblNlcnZpY2Uob1NlcnZpY2VDb250ZXh0KSA6IG5ldyBOYXZpZ2F0aW9uU2VydmljZXNNb2NrKCk7XG5cdFx0Ly8gV2FpdCBGb3IgaW5pdFxuXHRcdHJldHVybiBvTmF2aWdhdGlvblNlcnZpY2UuaW5pdFByb21pc2UudGhlbihmdW5jdGlvbiAob1NlcnZpY2U6IGFueSkge1xuXHRcdFx0cmV0dXJuIG9TZXJ2aWNlO1xuXHRcdH0pO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE5hdmlnYXRpb25TZXJ2aWNlRmFjdG9yeTtcbiJdfQ==