@sapui5/sap.fe.core 1.102.2 → 1.104.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (324) hide show
  1. package/package.json +6 -6
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AppComponent.js +73 -30
  4. package/src/sap/fe/core/AppComponent.ts +65 -43
  5. package/src/sap/fe/core/AppStateHandler.js +82 -70
  6. package/src/sap/fe/core/AppStateHandler.ts +32 -37
  7. package/src/sap/fe/core/BaseController.js +11 -9
  8. package/src/sap/fe/core/BaseController.ts +15 -13
  9. package/src/sap/fe/core/CommonUtils.js +227 -126
  10. package/src/sap/fe/core/CommonUtils.ts +240 -163
  11. package/src/sap/fe/core/ExtensionAPI.js +24 -27
  12. package/src/sap/fe/core/ExtensionAPI.ts +36 -38
  13. package/src/sap/fe/core/PageController.js +4 -4
  14. package/src/sap/fe/core/PageController.ts +4 -5
  15. package/src/sap/fe/core/TemplateComponent.js +1 -1
  16. package/src/sap/fe/core/TemplateComponent.ts +6 -6
  17. package/src/sap/fe/core/TemplateModel.js +1 -1
  18. package/src/sap/fe/core/TemplateModel.ts +1 -1
  19. package/src/sap/fe/core/buildingBlocks/AttributeModel.js +1 -1
  20. package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +1 -1
  21. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +181 -43
  22. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +150 -24
  23. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +585 -210
  24. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +246 -96
  25. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +30 -30
  26. package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +32 -29
  27. package/src/sap/fe/core/controllerextensions/EditFlow.js +379 -330
  28. package/src/sap/fe/core/controllerextensions/EditFlow.ts +253 -245
  29. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +9 -9
  30. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +10 -10
  31. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +101 -74
  32. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +69 -79
  33. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +67 -67
  34. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +76 -76
  35. package/src/sap/fe/core/controllerextensions/InternalRouting.js +85 -77
  36. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +103 -99
  37. package/src/sap/fe/core/controllerextensions/KPIManagement.js +66 -68
  38. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +106 -123
  39. package/src/sap/fe/core/controllerextensions/MassEdit.js +9 -9
  40. package/src/sap/fe/core/controllerextensions/MassEdit.ts +20 -27
  41. package/src/sap/fe/core/controllerextensions/MessageHandler.js +20 -12
  42. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +21 -14
  43. package/src/sap/fe/core/controllerextensions/PageReady.js +97 -25
  44. package/src/sap/fe/core/controllerextensions/PageReady.ts +98 -34
  45. package/src/sap/fe/core/controllerextensions/Paginator.js +21 -22
  46. package/src/sap/fe/core/controllerextensions/Paginator.ts +24 -25
  47. package/src/sap/fe/core/controllerextensions/Placeholder.js +4 -6
  48. package/src/sap/fe/core/controllerextensions/Placeholder.ts +12 -14
  49. package/src/sap/fe/core/controllerextensions/Routing.js +10 -11
  50. package/src/sap/fe/core/controllerextensions/Routing.ts +12 -13
  51. package/src/sap/fe/core/controllerextensions/Share.js +170 -139
  52. package/src/sap/fe/core/controllerextensions/Share.ts +117 -118
  53. package/src/sap/fe/core/controllerextensions/SideEffects.js +46 -50
  54. package/src/sap/fe/core/controllerextensions/SideEffects.ts +56 -60
  55. package/src/sap/fe/core/controllerextensions/ViewState.js +200 -131
  56. package/src/sap/fe/core/controllerextensions/ViewState.ts +141 -148
  57. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +5 -5
  58. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +8 -7
  59. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +11 -10
  60. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +17 -20
  61. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +2 -2
  62. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +4 -4
  63. package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +7 -9
  64. package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +18 -19
  65. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +190 -141
  66. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +258 -210
  67. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +183 -125
  68. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +213 -156
  69. package/src/sap/fe/core/controllerextensions/editFlow/operations.js +164 -140
  70. package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +180 -150
  71. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +24 -26
  72. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +35 -33
  73. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +71 -41
  74. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +102 -82
  75. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +61 -71
  76. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +56 -64
  77. package/src/sap/fe/core/controls/Any.js +9 -5
  78. package/src/sap/fe/core/controls/Any.ts +10 -4
  79. package/src/sap/fe/core/controls/CommandExecution.js +11 -25
  80. package/src/sap/fe/core/controls/CommandExecution.ts +11 -25
  81. package/src/sap/fe/core/controls/ConditionalWrapper.js +2 -2
  82. package/src/sap/fe/core/controls/ConditionalWrapper.ts +3 -3
  83. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +22 -22
  84. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +25 -24
  85. package/src/sap/fe/core/controls/CustomQuickViewPage.js +2 -2
  86. package/src/sap/fe/core/controls/CustomQuickViewPage.ts +2 -2
  87. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +3 -3
  88. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +5 -5
  89. package/src/sap/fe/core/controls/FieldWrapper.js +2 -2
  90. package/src/sap/fe/core/controls/FieldWrapper.ts +3 -3
  91. package/src/sap/fe/core/controls/FileWrapper.js +7 -2
  92. package/src/sap/fe/core/controls/FileWrapper.ts +15 -11
  93. package/src/sap/fe/core/controls/FilterBar.js +6 -2
  94. package/src/sap/fe/core/controls/FilterBar.ts +13 -9
  95. package/src/sap/fe/core/controls/FormElementWrapper.js +1 -1
  96. package/src/sap/fe/core/controls/FormElementWrapper.ts +2 -2
  97. package/src/sap/fe/core/controls/MassEditSelect.js +1 -1
  98. package/src/sap/fe/core/controls/MassEditSelect.ts +0 -4
  99. package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +3 -3
  100. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +16 -12
  101. package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +20 -22
  102. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +3 -3
  103. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +8 -8
  104. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +49 -49
  105. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +54 -54
  106. package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +8 -2
  107. package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +22 -35
  108. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +89 -88
  109. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +107 -106
  110. package/src/sap/fe/core/converters/ConverterContext.js +26 -33
  111. package/src/sap/fe/core/converters/ConverterContext.ts +52 -61
  112. package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  113. package/src/sap/fe/core/converters/ManifestSettings.ts +17 -15
  114. package/src/sap/fe/core/converters/ManifestWrapper.js +59 -45
  115. package/src/sap/fe/core/converters/ManifestWrapper.ts +55 -45
  116. package/src/sap/fe/core/converters/MetaModelConverter.js +64 -35
  117. package/src/sap/fe/core/converters/MetaModelConverter.ts +154 -129
  118. package/src/sap/fe/core/converters/TemplateConverter.js +21 -20
  119. package/src/sap/fe/core/converters/TemplateConverter.ts +27 -24
  120. package/src/sap/fe/core/converters/annotations/DataField.js +58 -35
  121. package/src/sap/fe/core/converters/annotations/DataField.ts +102 -76
  122. package/src/sap/fe/core/converters/common/AnnotationConverter.js +1911 -1495
  123. package/src/sap/fe/core/converters/controls/Common/Action.js +50 -41
  124. package/src/sap/fe/core/converters/controls/Common/Action.ts +56 -46
  125. package/src/sap/fe/core/converters/controls/Common/Chart.js +14 -14
  126. package/src/sap/fe/core/converters/controls/Common/Chart.ts +26 -33
  127. package/src/sap/fe/core/converters/controls/Common/Criticality.js +3 -3
  128. package/src/sap/fe/core/converters/controls/Common/Criticality.ts +4 -4
  129. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +30 -28
  130. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +60 -61
  131. package/src/sap/fe/core/converters/controls/Common/Form.js +27 -28
  132. package/src/sap/fe/core/converters/controls/Common/Form.ts +44 -57
  133. package/src/sap/fe/core/converters/controls/Common/KPI.js +11 -11
  134. package/src/sap/fe/core/converters/controls/Common/KPI.ts +49 -52
  135. package/src/sap/fe/core/converters/controls/Common/Table.js +181 -197
  136. package/src/sap/fe/core/converters/controls/Common/Table.ts +251 -280
  137. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +119 -119
  138. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +144 -141
  139. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +45 -41
  140. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +65 -59
  141. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +28 -26
  142. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +46 -43
  143. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +9 -9
  144. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +14 -13
  145. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +67 -64
  146. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +69 -66
  147. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +77 -73
  148. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +101 -97
  149. package/src/sap/fe/core/converters/helpers/Aggregation.js +2 -4
  150. package/src/sap/fe/core/converters/helpers/Aggregation.ts +12 -15
  151. package/src/sap/fe/core/converters/helpers/BindingHelper.js +31 -31
  152. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +30 -29
  153. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +4 -4
  154. package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +9 -9
  155. package/src/sap/fe/core/converters/helpers/ID.js +48 -46
  156. package/src/sap/fe/core/converters/helpers/ID.ts +26 -25
  157. package/src/sap/fe/core/converters/helpers/Key.js +7 -7
  158. package/src/sap/fe/core/converters/helpers/Key.ts +7 -7
  159. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
  160. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +4 -5
  161. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +6 -6
  162. package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +10 -10
  163. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +46 -62
  164. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +54 -82
  165. package/src/sap/fe/core/converters/templates/ListReportConverter.js +55 -42
  166. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +81 -66
  167. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +39 -38
  168. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +52 -61
  169. package/src/sap/fe/core/designtime/AppComponent.designtime.js +4 -4
  170. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +4 -4
  171. package/src/sap/fe/core/formatters/CollaborationFormatter.js +2 -2
  172. package/src/sap/fe/core/formatters/CollaborationFormatter.ts +3 -3
  173. package/src/sap/fe/core/formatters/FPMFormatter.js +5 -5
  174. package/src/sap/fe/core/formatters/FPMFormatter.ts +10 -10
  175. package/src/sap/fe/core/formatters/KPIFormatter.js +7 -7
  176. package/src/sap/fe/core/formatters/KPIFormatter.ts +10 -10
  177. package/src/sap/fe/core/formatters/StandardFormatter.js +96 -0
  178. package/src/sap/fe/core/formatters/StandardFormatter.ts +70 -0
  179. package/src/sap/fe/core/formatters/TableFormatter.js +11 -11
  180. package/src/sap/fe/core/formatters/TableFormatter.ts +12 -12
  181. package/src/sap/fe/core/formatters/ValueFormatter.js +8 -8
  182. package/src/sap/fe/core/formatters/ValueFormatter.ts +9 -9
  183. package/src/sap/fe/core/helpers/AppStartupHelper.js +15 -15
  184. package/src/sap/fe/core/helpers/AppStartupHelper.ts +37 -40
  185. package/src/sap/fe/core/helpers/BindingToolkit.js +1832 -0
  186. package/src/sap/fe/core/helpers/{BindingExpression.ts → BindingToolkit.ts} +396 -269
  187. package/src/sap/fe/core/helpers/ClassSupport.js +49 -12
  188. package/src/sap/fe/core/helpers/ClassSupport.ts +37 -10
  189. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +2 -2
  190. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -1
  191. package/src/sap/fe/core/helpers/EditState.js +1 -6
  192. package/src/sap/fe/core/helpers/EditState.ts +5 -10
  193. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +2 -2
  194. package/src/sap/fe/core/helpers/ExcelFormatHelper.ts +4 -4
  195. package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
  196. package/src/sap/fe/core/helpers/FPMHelper.ts +2 -2
  197. package/src/sap/fe/core/helpers/KeepAliveHelper.js +31 -31
  198. package/src/sap/fe/core/helpers/KeepAliveHelper.ts +52 -56
  199. package/src/sap/fe/core/helpers/MassEditHelper.js +306 -280
  200. package/src/sap/fe/core/helpers/MassEditHelper.ts +380 -360
  201. package/src/sap/fe/core/helpers/MessageStrip.js +81 -0
  202. package/src/sap/fe/core/helpers/MessageStrip.ts +79 -0
  203. package/src/sap/fe/core/helpers/ModelHelper.js +25 -25
  204. package/src/sap/fe/core/helpers/ModelHelper.ts +34 -32
  205. package/src/sap/fe/core/helpers/PasteHelper.js +3 -10
  206. package/src/sap/fe/core/helpers/PasteHelper.ts +20 -25
  207. package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
  208. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +11 -11
  209. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +3 -3
  210. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +8 -8
  211. package/src/sap/fe/core/helpers/StableIdHelper.js +12 -12
  212. package/src/sap/fe/core/helpers/StableIdHelper.ts +12 -12
  213. package/src/sap/fe/core/helpers/ToES6Promise.js +32 -0
  214. package/src/sap/fe/core/helpers/ToES6Promise.ts +19 -0
  215. package/src/sap/fe/core/jsx-runtime/Fragment.js +16 -0
  216. package/src/sap/fe/core/jsx-runtime/Fragment.ts +3 -0
  217. package/src/sap/fe/core/jsx-runtime/jsx-control.js +99 -0
  218. package/src/sap/fe/core/jsx-runtime/jsx-control.ts +82 -0
  219. package/src/sap/fe/core/jsx-runtime/jsx-xml.js +105 -0
  220. package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +89 -0
  221. package/src/sap/fe/core/jsx-runtime/jsx.js +12 -90
  222. package/src/sap/fe/core/jsx-runtime/jsx.ts +24 -85
  223. package/src/sap/fe/core/library.js +42 -3
  224. package/src/sap/fe/core/library.ts +38 -0
  225. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +3 -3
  226. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +2 -2
  227. package/src/sap/fe/core/messagebundle.properties +39 -63
  228. package/src/sap/fe/core/messagebundle_ar.properties +25 -39
  229. package/src/sap/fe/core/messagebundle_bg.properties +25 -39
  230. package/src/sap/fe/core/messagebundle_ca.properties +25 -39
  231. package/src/sap/fe/core/messagebundle_cs.properties +25 -39
  232. package/src/sap/fe/core/messagebundle_cy.properties +25 -39
  233. package/src/sap/fe/core/messagebundle_da.properties +25 -39
  234. package/src/sap/fe/core/messagebundle_de.properties +25 -39
  235. package/src/sap/fe/core/messagebundle_el.properties +26 -40
  236. package/src/sap/fe/core/messagebundle_en.properties +25 -39
  237. package/src/sap/fe/core/messagebundle_en_GB.properties +25 -39
  238. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +25 -39
  239. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +25 -39
  240. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +26 -18
  241. package/src/sap/fe/core/messagebundle_es.properties +27 -41
  242. package/src/sap/fe/core/messagebundle_es_MX.properties +25 -39
  243. package/src/sap/fe/core/messagebundle_et.properties +25 -39
  244. package/src/sap/fe/core/messagebundle_fi.properties +25 -39
  245. package/src/sap/fe/core/messagebundle_fr.properties +26 -40
  246. package/src/sap/fe/core/messagebundle_fr_CA.properties +25 -39
  247. package/src/sap/fe/core/messagebundle_hi.properties +25 -39
  248. package/src/sap/fe/core/messagebundle_hr.properties +25 -39
  249. package/src/sap/fe/core/messagebundle_hu.properties +25 -39
  250. package/src/sap/fe/core/messagebundle_id.properties +25 -39
  251. package/src/sap/fe/core/messagebundle_it.properties +41 -55
  252. package/src/sap/fe/core/messagebundle_iw.properties +25 -39
  253. package/src/sap/fe/core/messagebundle_ja.properties +25 -39
  254. package/src/sap/fe/core/messagebundle_kk.properties +25 -39
  255. package/src/sap/fe/core/messagebundle_ko.properties +30 -44
  256. package/src/sap/fe/core/messagebundle_lt.properties +25 -39
  257. package/src/sap/fe/core/messagebundle_lv.properties +25 -39
  258. package/src/sap/fe/core/messagebundle_ms.properties +25 -39
  259. package/src/sap/fe/core/messagebundle_nl.properties +27 -41
  260. package/src/sap/fe/core/messagebundle_no.properties +25 -39
  261. package/src/sap/fe/core/messagebundle_pl.properties +26 -40
  262. package/src/sap/fe/core/messagebundle_pt.properties +26 -40
  263. package/src/sap/fe/core/messagebundle_pt_PT.properties +25 -39
  264. package/src/sap/fe/core/messagebundle_ro.properties +25 -39
  265. package/src/sap/fe/core/messagebundle_ru.properties +25 -39
  266. package/src/sap/fe/core/messagebundle_sh.properties +25 -39
  267. package/src/sap/fe/core/messagebundle_sk.properties +25 -39
  268. package/src/sap/fe/core/messagebundle_sl.properties +25 -39
  269. package/src/sap/fe/core/messagebundle_sv.properties +25 -39
  270. package/src/sap/fe/core/messagebundle_th.properties +25 -39
  271. package/src/sap/fe/core/messagebundle_tr.properties +25 -39
  272. package/src/sap/fe/core/messagebundle_uk.properties +25 -39
  273. package/src/sap/fe/core/messagebundle_vi.properties +25 -39
  274. package/src/sap/fe/core/messagebundle_zh_CN.properties +25 -39
  275. package/src/sap/fe/core/messagebundle_zh_TW.properties +25 -39
  276. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +2 -2
  277. package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +5 -5
  278. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +97 -69
  279. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +68 -69
  280. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -1
  281. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +3 -2
  282. package/src/sap/fe/core/services/NavigationServiceFactory.js +61 -49
  283. package/src/sap/fe/core/services/NavigationServiceFactory.ts +63 -52
  284. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +2 -2
  285. package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +4 -4
  286. package/src/sap/fe/core/services/RoutingServiceFactory.js +55 -55
  287. package/src/sap/fe/core/services/RoutingServiceFactory.ts +67 -65
  288. package/src/sap/fe/core/services/ShellServicesFactory.js +92 -76
  289. package/src/sap/fe/core/services/ShellServicesFactory.ts +95 -82
  290. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +61 -61
  291. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +102 -92
  292. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +224 -198
  293. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +138 -139
  294. package/src/sap/fe/core/support/CommonHelper.js +3 -2
  295. package/src/sap/fe/core/support/CommonHelper.ts +9 -13
  296. package/src/sap/fe/core/support/Diagnostics.js +1 -1
  297. package/src/sap/fe/core/support/Diagnostics.ts +5 -5
  298. package/src/sap/fe/core/templating/CommonFormatters.js +84 -0
  299. package/src/sap/fe/core/templating/CommonFormatters.ts +86 -0
  300. package/src/sap/fe/core/templating/CriticalityFormatters.js +31 -31
  301. package/src/sap/fe/core/templating/CriticalityFormatters.ts +42 -40
  302. package/src/sap/fe/core/templating/DataFieldFormatters.js +8 -8
  303. package/src/sap/fe/core/templating/DataFieldFormatters.ts +13 -10
  304. package/src/sap/fe/core/templating/DataModelPathHelper.js +16 -15
  305. package/src/sap/fe/core/templating/DataModelPathHelper.ts +42 -32
  306. package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
  307. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +2 -3
  308. package/src/sap/fe/core/templating/EntitySetHelper.js +7 -7
  309. package/src/sap/fe/core/templating/EntitySetHelper.ts +6 -8
  310. package/src/sap/fe/core/templating/FieldControlHelper.js +35 -34
  311. package/src/sap/fe/core/templating/FieldControlHelper.ts +29 -46
  312. package/src/sap/fe/core/templating/FilterHelper.js +16 -15
  313. package/src/sap/fe/core/templating/FilterHelper.ts +18 -18
  314. package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
  315. package/src/sap/fe/core/templating/FilterTemplating.ts +3 -3
  316. package/src/sap/fe/core/templating/PropertyFormatters.js +7 -7
  317. package/src/sap/fe/core/templating/PropertyFormatters.ts +21 -19
  318. package/src/sap/fe/core/templating/PropertyHelper.js +25 -25
  319. package/src/sap/fe/core/templating/PropertyHelper.ts +25 -26
  320. package/src/sap/fe/core/templating/UIFormatters.js +152 -95
  321. package/src/sap/fe/core/templating/UIFormatters.ts +202 -128
  322. package/src/sap/fe/core/type/Email.js +2 -2
  323. package/src/sap/fe/core/type/Email.ts +2 -2
  324. package/src/sap/fe/core/helpers/BindingExpression.js +0 -1732
@@ -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,38 +165,44 @@ 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
+ * @param {boolean} [bImmediateHashReplace=true] If set to false, the inner app hash will not be replaced until storing is successful; do not
173
+ * set to false if you cannot react to the resolution of the Promise, for example, when calling the beforeLinkPressed event
174
+ * @param {boolean} [bSkipHashReplace=false] If set to true, the inner app hash will not be replaced in the storeInnerAppState. Also the bImmediateHashReplace
175
+ * will be ignored.
176
+ * @returns A Promise object to monitor when all the actions of the function have been executed; if the execution is successful, the
166
177
  * app state key is returned; if an error occurs, an object of type {@link sap.fe.navigation.NavError} is
167
178
  * returned
168
- **/
179
+ */
169
180
  ;
170
181
 
171
- _proto.storeInnerAppState = function storeInnerAppState(mInnerAppData) {
172
- return this.oNavHandler.storeInnerAppState(mInnerAppData);
182
+ _proto.storeInnerAppState = function storeInnerAppState(mInnerAppData, bImmediateHashReplace, bSkipHashReplace) {
183
+ return this.oNavHandler.storeInnerAppState(mInnerAppData, bImmediateHashReplace, bSkipHashReplace);
173
184
  }
174
185
  /**
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
- */
186
+ * Changes the URL according to the current app state and stores the app state for later retrieval.
187
+ *
188
+ * @private
189
+ * @ui5-restricted
190
+ * @param mInnerAppData Object containing the current state of the app
191
+ * @param [bImmediateHashReplace=false] If set to false, the inner app hash will not be replaced until storing is successful; do not
192
+ * @returns An object containing the appStateId and a promise object to monitor when all the actions of the function have been
193
+ * executed; Please note that the appStateKey may be undefined or empty.
194
+ */
184
195
  ;
185
196
 
186
- _proto.storeInnerAppStateWithImmediateReturn = function storeInnerAppStateWithImmediateReturn(mInnerAppData, bImmediateHashReplace, bNotLegacy) {
187
- return this.oNavHandler.storeInnerAppStateWithImmediateReturn(mInnerAppData, bImmediateHashReplace, bNotLegacy);
197
+ _proto.storeInnerAppStateWithImmediateReturn = function storeInnerAppStateWithImmediateReturn(mInnerAppData, bImmediateHashReplace) {
198
+ return this.oNavHandler.storeInnerAppStateWithImmediateReturn(mInnerAppData, bImmediateHashReplace);
188
199
  }
189
200
  /**
190
201
  * Changes the URL according to the current sAppStateKey. As an reaction route change event will be triggered.
202
+ *
191
203
  * @private
192
204
  * @ui5-restricted
193
- * @param {string} sAppStateKey The new app state key.
205
+ * @param sAppStateKey The new app state key.
194
206
  */
195
207
  ;
196
208
 
@@ -206,9 +218,9 @@ sap.ui.define(["sap/fe/navigation/NavigationHandler", "sap/ui/core/service/Servi
206
218
  *
207
219
  * @private
208
220
  * @ui5-restricted
209
- * @param {object | string } [vSelectionVariant]
210
- * @param {object} [vSelectionVariant.oUrlParamaters]
211
- * @returns {pbject}
221
+ * @param [vSelectionVariant]
222
+ * @param [vSelectionVariant.oUrlParamaters]
223
+ * @returns The url parameters
212
224
  */
213
225
  ;
214
226
 
@@ -220,8 +232,8 @@ sap.ui.define(["sap/fe/navigation/NavigationHandler", "sap/ui/core/service/Servi
220
232
  *
221
233
  * @private
222
234
  * @ui5-restricted
223
- * @param {object} oInSelectionVariant Instance of sap.fe.navigation.SelectionVariant
224
- * @returns {string} AppState key
235
+ * @param oInSelectionVariant Instance of sap.fe.navigation.SelectionVariant
236
+ * @returns AppState key
225
237
  */
226
238
  ;
227
239
 
@@ -236,20 +248,20 @@ sap.ui.define(["sap/fe/navigation/NavigationHandler", "sap/ui/core/service/Servi
236
248
  },
237
249
  oReturn = this.oNavHandler._saveAppStateWithImmediateReturn(oXAppStateObject);
238
250
 
239
- return oReturn.appStateKey ? oReturn.appStateKey : "";
251
+ return oReturn !== null && oReturn !== void 0 && oReturn.appStateKey ? oReturn.appStateKey : "";
240
252
  }
241
253
  }
242
254
  /**
243
255
  * Mix Attributes and selectionVariant.
244
256
  *
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
257
+ * @param vSemanticAttributes Object/(Array of Objects) containing key/value pairs
258
+ * @param sSelectionVariant The selection variant in string format as provided by the SmartFilterBar control
259
+ * @param [iSuppressionBehavior=sap.fe.navigation.SuppressionBehavior.standard] Indicates whether semantic
248
260
  * attributes with special values (see {@link sap.fe.navigation.SuppressionBehavior suppression behavior}) must be
249
261
  * suppressed before they are combined with the selection variant; several
250
262
  * {@link sap.fe.navigation.SuppressionBehavior suppression behaviors} can be combined with the bitwise OR operator
251
263
  * (|)
252
- * @returns {object} Instance of {@link sap.fe.navigation.SelectionVariant}
264
+ * @returns Instance of {@link sap.fe.navigation.SelectionVariant}
253
265
  */
254
266
  ;
255
267
 
@@ -259,9 +271,9 @@ sap.ui.define(["sap/fe/navigation/NavigationHandler", "sap/ui/core/service/Servi
259
271
  /**
260
272
  * The method creates a context url based on provided data. This context url can either be used as.
261
273
  *
262
- * @param {string} sEntitySetName Used for url determination
274
+ * @param sEntitySetName Used for url determination
263
275
  * @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
276
+ * @returns The context url for the given entities
265
277
  */
266
278
  ;
267
279
 
@@ -350,4 +362,4 @@ sap.ui.define(["sap/fe/navigation/NavigationHandler", "sap/ui/core/service/Servi
350
362
 
351
363
  return NavigationServiceFactory;
352
364
  }, false);
353
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk5hdmlnYXRpb25TZXJ2aWNlRmFjdG9yeS50cyJdLCJuYW1lcyI6WyJOYXZpZ2F0aW9uU2VydmljZSIsImluaXQiLCJvQ29udGV4dCIsImdldENvbnRleHQiLCJvQ29tcG9uZW50Iiwic2NvcGVPYmplY3QiLCJvTmF2SGFuZGxlciIsIk5hdmlnYXRpb25IYW5kbGVyIiwic2V0TW9kZWwiLCJnZXRNb2RlbCIsImluaXRQcm9taXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJleGl0IiwiZGVzdHJveSIsIm5hdmlnYXRlIiwic1NlbWFudGljT2JqZWN0Iiwic0FjdGlvbk5hbWUiLCJ2TmF2aWdhdGlvblBhcmFtZXRlcnMiLCJvSW5uZXJBcHBEYXRhIiwiZm5PbkVycm9yIiwib0V4dGVybmFsQXBwRGF0YSIsInNOYXZNb2RlIiwicGFyc2VOYXZpZ2F0aW9uIiwiX3Byb2Nlc3NCZWZvcmVTbWFydExpbmtQb3BvdmVyT3BlbnMiLCJvVGFibGVFdmVudFBhcmFtZXRlcnMiLCJzU2VsZWN0aW9uVmFyaWFudCIsIm1Jbm5lckFwcERhdGEiLCJwcm9jZXNzQmVmb3JlU21hcnRMaW5rUG9wb3Zlck9wZW5zIiwiZ2V0QXBwU3RhdGVLZXlBbmRVcmxQYXJhbWV0ZXJzIiwiX2dldEFwcFN0YXRlS2V5QW5kVXJsUGFyYW1ldGVycyIsImdldFRlY2huaWNhbFBhcmFtZXRlcnMiLCJzZXRUZWNobmljYWxQYXJhbWV0ZXJzIiwiYVRlY2huaWNhbFBhcmFtZXRlcnMiLCJvTW9kZWwiLCJzdG9yZUlubmVyQXBwU3RhdGUiLCJzdG9yZUlubmVyQXBwU3RhdGVXaXRoSW1tZWRpYXRlUmV0dXJuIiwiYkltbWVkaWF0ZUhhc2hSZXBsYWNlIiwiYk5vdExlZ2FjeSIsInJlcGxhY2VIYXNoIiwic0FwcFN0YXRlS2V5IiwicmVwbGFjZUlubmVyQXBwU3RhdGVLZXkiLCJzQXBwSGFzaCIsIl9yZXBsYWNlSW5uZXJBcHBTdGF0ZUtleSIsImdldFVybFBhcmFtZXRlcnNGcm9tU2VsZWN0aW9uVmFyaWFudCIsInZTZWxlY3Rpb25WYXJpYW50IiwiX2dldFVSTFBhcmFtZXRlcnNGcm9tU2VsZWN0aW9uVmFyaWFudCIsInNhdmVBcHBTdGF0ZVdpdGhJbW1lZGlhdGVSZXR1cm4iLCJvSW5TZWxlY3Rpb25WYXJpYW50IiwidG9KU09OU3RyaW5nIiwib1NlbGVjdGlvblZhcmlhbnQiLCJKU09OIiwicGFyc2UiLCJvWEFwcFN0YXRlT2JqZWN0Iiwic2VsZWN0aW9uVmFyaWFudCIsIm9SZXR1cm4iLCJfc2F2ZUFwcFN0YXRlV2l0aEltbWVkaWF0ZVJldHVybiIsImFwcFN0YXRlS2V5IiwibWl4QXR0cmlidXRlc0FuZFNlbGVjdGlvblZhcmlhbnQiLCJ2U2VtYW50aWNBdHRyaWJ1dGVzIiwiaVN1cHByZXNzaW9uQmVoYXZpb3IiLCJjb25zdHJ1Y3RDb250ZXh0VXJsIiwic0VudGl0eVNldE5hbWUiLCJnZXRJbnRlcmZhY2UiLCJTZXJ2aWNlIiwiZm5HZXRFbXB0eU9iamVjdCIsImZuR2V0UHJvbWlzZSIsImZuR2V0SlF1ZXJ5UHJvbWlzZSIsIm9NeURlZmZlcmVkIiwialF1ZXJ5IiwiRGVmZXJyZWQiLCJwcm9taXNlIiwiZm5HZXRFbXB0eVN0cmluZyIsIk5hdmlnYXRpb25TZXJ2aWNlc01vY2siLCJjcmVhdGVFbXB0eUFwcFN0YXRlIiwiZ2V0QXBwU3RhdGUiLCJnZXRTdGFydHVwQXBwU3RhdGUiLCJOYXZpZ2F0aW9uU2VydmljZUZhY3RvcnkiLCJjcmVhdGVJbnN0YW5jZSIsIm9TZXJ2aWNlQ29udGV4dCIsIm9OYXZpZ2F0aW9uU2VydmljZSIsInNhcCIsInVzaGVsbCIsIkNvbnRhaW5lciIsInRoZW4iLCJvU2VydmljZSIsIlNlcnZpY2VGYWN0b3J5Il0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7O01BS2FBLGlCOzs7Ozs7Ozs7O1dBR1pDLEksR0FBQSxnQkFBTztBQUNOLFVBQU1DLFFBQVEsR0FBRyxLQUFLQyxVQUFMLEVBQWpCO0FBQUEsVUFDQ0MsVUFBVSxHQUFHRixRQUFRLElB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LEdBZ0JJNEMsa0JBaEJKO0FBQUEsV0FtQmROLG1CQW5CYyxHQW1CUVcsZ0JBbkJSO0FBQ2IsV0FBSzlELFdBQUwsR0FBbUJDLE9BQU8sQ0FBQ0MsT0FBUixDQUFnQixJQUFoQixDQUFuQjtBQUNBOzs7OztZQUVEbUQsWSxHQUFBLHdCQUFlO0FBQ2QsYUFBTyxJQUFQO0FBQ0EsSyxDQUVEOzs7WUFhQXRCLHVCLEdBQUEsaUNBQXdCQyxRQUF4QixFQUF1QztBQUN0QyxhQUFPQSxRQUFRLEdBQUdBLFFBQUgsR0FBYyxFQUE3QjtBQUNBLEs7O1lBRUQzQixRLEdBQUEsb0JBQVcsQ0FDVjtBQUNBLEs7Ozs7Ozs7TUFHSThELHdCOzs7Ozs7Ozs7WUFDTEMsYyxHQUFBLHdCQUFlQyxlQUFmLEVBQTJFO0FBQzFFLFVBQU1DLGtCQUFrQixHQUN2QkMsR0FBRyxDQUFDQyxNQUFKLElBQWNELEdBQUcsQ0FBQ0MsTUFBSixDQUFXQyxTQUF6QixHQUFxQyxJQUFJbkYsaUJBQUosQ0FBc0IrRSxlQUF0QixDQUFyQyxHQUE4RSxJQUFJTixzQkFBSixFQUQvRSxDQUQwRSxDQUcxRTs7QUFDQSxhQUFPTyxrQkFBa0IsQ0FBQ3RFLFdBQW5CLENBQStCMEUsSUFBL0IsQ0FBb0MsVUFBVUMsUUFBVixFQUF5QjtBQUNuRSxlQUFPQSxRQUFQO0FBQ0EsT0FGTSxDQUFQO0FBR0EsSzs7O0lBUnFDQyxjOztTQVd4QlQsd0IiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5hdmlnYXRpb25IYW5kbGVyIH0gZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uXCI7XG5pbXBvcnQgU2VsZWN0aW9uVmFyaWFudCBmcm9tIFwic2FwL2ZlL25hdmlnYXRpb24vU2VsZWN0aW9uVmFyaWFudFwiO1xuaW1wb3J0IFNlcnZpY2UgZnJvbSBcInNhcC91aS9jb3JlL3NlcnZpY2UvU2VydmljZVwiO1xuaW1wb3J0IFNlcnZpY2VGYWN0b3J5IGZyb20gXCJzYXAvdWkvY29yZS9zZXJ2aWNlL1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgeyBTZXJ2aWNlQ29udGV4dCB9IGZyb20gXCJ0eXBlcy9leHRlbnNpb25fdHlwZXNcIjtcblxudHlwZSBOYXZpZ2F0aW9uU2VydmljZVNldHRpbmdzID0ge307XG5leHBvcnQgY2xhc3MgTmF2aWdhdGlvblNlcnZpY2UgZXh0ZW5kcyBTZXJ2aWNlPE5hdmlnYXRpb25TZXJ2aWNlU2V0dGluZ3M+IHtcblx0aW5pdFByb21pc2UhOiBQcm9taXNlPGFueT47XG5cdG9OYXZIYW5kbGVyITogTmF2aWdhdGlvbkhhbmRsZXI7XG5cdGluaXQoKSB7XG5cdFx0Y29uc3Qgb0NvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcblx0XHRcdG9Db21wb25lbnQgPSBvQ29udGV4dCAmJiBvQ29udGV4dC5zY29wZU9iamVjdDtcblxuXHRcdHRoaXMub05hdkhhbmRsZXIgPSBuZXcgTmF2aWdhdGlvbkhhbmRsZXIob0NvbXBvbmVudCk7XG5cdFx0dGhpcy5vTmF2SGFuZGxlci5zZXRNb2RlbChvQ29tcG9uZW50LmdldE1vZGVsKCkpO1xuXHRcdHRoaXMuaW5pdFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUodGhpcyk7XG5cdH1cblx0ZXhpdCgpIHtcblx0XHR0aGlzLm9OYXZIYW5kbGVyLmRlc3Ryb3koKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUcmlnZ2VycyBhIGNyb3NzLWFwcCBuYXZpZ2F0aW9uIGFmdGVyIHNhdmluZyB0aGUgaW5uZXIgYW5kIHRoZSBjcm9zcy1hcHAgc3RhdGVzLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNTZW1hbnRpY09iamVjdCBTZW1hbnRpYyBvYmplY3Qgb2YgdGhlIHRhcmdldCBhcHBcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNBY3Rpb25OYW1lIEFjdGlvbiBvZiB0aGUgdGFyZ2V0IGFwcFxuXHQgKiBAcGFyYW0ge29iamVjdCB8IHN0cmluZyB9IFt2TmF2aWdhdGlvblBhcmFtZXRlcnNdIE5hdmlnYXRpb24gcGFyYW1ldGVycyBhcyBhbiBvYmplY3Qgd2l0aCBrZXkvdmFsdWUgcGFpcnMgb3IgYXMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2Zcblx0ICogICAgICAgIHN1Y2ggYW4gb2JqZWN0LiBJZiBwYXNzZWQgYXMgYW4gb2JqZWN0LCB0aGUgcHJvcGVydGllcyBhcmUgbm90IGNoZWNrZWQgYWdhaW5zdCB0aGUgPGNvZGU+SXNQb3RlbnRpYWxTZW5zaXRpdmU8L2NvZGU+IG9yXG5cdCAqICAgICAgICA8Y29kZT5NZWFzdXJlPC9jb2RlPiB0eXBlLlxuXHQgKiBAcGFyYW0ge29iamVjdH0gW29Jbm5lckFwcERhdGFdIE9iamVjdCBmb3Igc3RvcmluZyBjdXJyZW50IHN0YXRlIG9mIHRoZSBhcHBcblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZuT25FcnJvcl0gQ2FsbGJhY2sgdGhhdCBpcyBjYWxsZWQgaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyBuYXZpZ2F0aW9uIDxicj5cblx0ICogQHBhcmFtIHtvYmplY3R9IFtvRXh0ZXJuYWxBcHBEYXRhXSBPYmplY3QgZm9yIHN0b3JpbmcgdGhlIHN0YXRlIHdoaWNoIHdpbGwgYmUgZm9yd2FyZGVkIHRvIHRoZSB0YXJnZXQgY29tcG9uZW50LlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gW3NOYXZNb2RlXSBBcmd1bWVudCBpcyB1c2VkIHRvIG92ZXJ3cml0ZSB0aGUgRkxQLWNvbmZpZ3VyZWQgdGFyZ2V0IGZvciBvcGVuaW5nIGEgVVJMLiBJZiB1c2VkLCBvbmx5IHRoZVxuXHQgKiAgICAgICAgPGNvZGU+ZXhwbGFjZTwvY29kZT4gb3IgPGNvZGU+aW5wbGFjZTwvY29kZT4gdmFsdWVzIGFyZSBhbGxvd2VkLiBBbnkgb3RoZXIgdmFsdWUgd2lsbCBsZWFkIHRvIGFuIGV4Y2VwdGlvblxuXHQgKiAgICAgICAgPGNvZGU+TmF2aWdhdGlvbkhhbmRsZXIuSU5WQUxJRF9OQVZfTU9ERTwvY29kZT4uXG5cdCAqKi9cblx0bmF2aWdhdGUoXG5cdFx0c1NlbWFudGljT2JqZWN0OiBzdHJpbmcsXG5cdFx0c0FjdGlvbk5hbWU6IHN0cmluZyxcblx0XHR2TmF2aWdhdGlvblBhcmFtZXRlcnM/OiBzdHJpbmcgfCBvYmplY3QsXG5cdFx0b0lubmVyQXBwRGF0YT86IG9iamVjdCxcblx0XHRmbk9uRXJyb3I/OiBGdW5jdGlvbixcblx0XHRvRXh0ZXJuYWxBcHBEYXRhPzogb2JqZWN0LFxuXHRcdHNOYXZNb2RlPzogc3RyaW5nXG5cdCkge1xuXHRcdC8vIFRPRE86IE5hdmlnYXRpb24gSGFuZGxlciBkb2VzIG5vdCBoYW5kbGUgbmF2aWdhdGlvbiB3aXRob3V0IGEgY29udGV4dFxuXHRcdC8vIGJ1dCBpbiB2NCBEYXRhRmllbGRGb3JJQk4gd2l0aCByZXF1aXJlc0NvbnRleHQgZmFsc2UgY2FuIHRyaWdnZXIgYSBuYXZpZ2F0aW9uIHdpdGhvdXQgYW55IGNvbnRleHRcblx0XHQvLyBUaGlzIHNob3VsZCBiZSBoYW5kbGVkXG5cdFx0dGhpcy5vTmF2SGFuZGxlci5uYXZpZ2F0ZShcblx0XHRcdHNTZW1hbnRpY09iamVjdCxcblx0XHRcdHNBY3Rpb25OYW1lLFxuXHRcdFx0dk5hdmlnYXRpb25QYXJhbWV0ZXJzLFxuXHRcdFx0b0lubmVyQXBwRGF0YSxcblx0XHRcdGZuT25FcnJvcixcblx0XHRcdG9FeHRlcm5hbEFwcERhdGEsXG5cdFx0XHRzTmF2TW9kZVxuXHRcdCk7XG5cdH1cblx0LyoqXG5cdCAqIFBhcnNlcyB0aGUgaW5jb21pbmcgVVJMIGFuZCByZXR1cm5zIGEgUHJvbWlzZS5cblx0ICogQHJldHVybnMge29iamVjdH0gQSBQcm9taXNlIG9iamVjdCB3aGljaCByZXR1cm5zIHRoZVxuXHQgKiBleHRyYWN0ZWQgYXBwIHN0YXRlLCB0aGUgc3RhcnR1cCBwYXJhbWV0ZXJzLCBhbmQgdGhlIHR5cGUgb2YgbmF2aWdhdGlvbiB3aGVuIGV4ZWN1dGlvbiBpcyBzdWNjZXNzZnVsLFxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICoqL1xuXHRwYXJzZU5hdmlnYXRpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMub05hdkhhbmRsZXIucGFyc2VOYXZpZ2F0aW9uKCk7XG5cdH1cblx0LyoqXG5cdCAqIFByb2Nlc3NlcyBuYXZpZ2F0aW9uLXJlbGF0ZWQgdGFza3MgcmVsYXRlZCB0byBiZWZvcmVQb3BvdmVyT3BlbnMgZXZlbnQgaGFuZGxpbmcgZm9yIHRoZSBTbWFydExpbmsgY29udHJvbCBhbmQgcmV0dXJucyBhIFByb21pc2Ugb2JqZWN0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gb1RhYmxlRXZlbnRQYXJhbWV0ZXJzIFRoZSBwYXJhbWV0ZXJzIG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBTbWFydFRhYmxlIGNvbnRyb2wgd2hlbiB0aGUgU21hcnRMaW5rIGNvbnRyb2wgaGFzIGJlZW4gY2xpY2tlZCxcblx0ICogICAgICAgIGFuIGluc3RhbmNlIG9mIGEgUG9wT3ZlciBvYmplY3Rcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNTZWxlY3Rpb25WYXJpYW50IFN0cmluZ2lmaWVkIEpTT04gb2JqZWN0IGFzIHJldHVybmVkLCBmb3IgZXhhbXBsZSwgZnJvbSBnZXREYXRhU3VpdGVGb3JtYXQoKSBvZiB0aGUgU21hcnRGaWx0ZXJCYXIgY29udHJvbFxuXHQgKiBAcGFyYW0ge29iamVjdH0gW21Jbm5lckFwcERhdGFdIE9iamVjdCBjb250YWluaW5nIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBhcHAuIElmIHByb3ZpZGVkLCBvcGVuaW5nIHRoZSBQb3BvdmVyIGlzIGRlZmVycmVkIHVudGlsIHRoZVxuXHQgKiAgICAgICAgaW5uZXIgYXBwIGRhdGEgaXMgc2F2ZWQgaW4gYSBjb25zaXN0ZW50IHdheS5cblx0ICogQHJldHVybnMge1Byb21pc2V9IEEgUHJvbWlzZSBvYmplY3QgdG8gbW9uaXRvciB3aGVuIGFsbCBhY3Rpb25zIG9mIHRoZSBmdW5jdGlvbiBoYXZlIGJlZW4gZXhlY3V0ZWQ7IGlmIHRoZSBleGVjdXRpb24gaXMgc3VjY2Vzc2Z1bCwgdGhlXG5cdCAqICAgICAgICAgIG1vZGlmaWVkIG9UYWJsZUV2ZW50UGFyYW1ldGVycyBpcyByZXR1cm5lZDsgaWYgYW4gZXJyb3Igb2NjdXJzLCBhbiBlcnJvciBvYmplY3Qgb2YgdHlwZVxuXHQgKiAgICAgICAgICB7QGxpbmsgc2FwLmZlLm5hdmlnYXRpb24uTmF2RXJyb3J9IGlzIHJldHVybmVkXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRfcHJvY2Vzc0JlZm9yZVNtYXJ0TGlua1BvcG92ZXJPcGVucyhvVGFibGVFdmVudFBhcmFtZXRlcnM6IG9iamVjdCwgc1NlbGVjdGlvblZhcmlhbnQ6IHN0cmluZywgbUlubmVyQXBwRGF0YTogb2JqZWN0IHwgdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIHRoaXMub05hdkhhbmRsZXIucHJvY2Vzc0JlZm9yZVNtYXJ0TGlua1BvcG92ZXJPcGVucyhvVGFibGVFdmVudFBhcmFtZXRlcnMsIHNTZWxlY3Rpb25WYXJpYW50LCBtSW5uZXJBcHBEYXRhKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQcm9jZXNzZXMgc2VsZWN0aW9uVmFyaWFudCBzdHJpbmcgYW5kIHJldHVybnMgYSBQcm9taXNlIG9iamVjdCAoc2VtYW50aWNBdHRyaWJ1dGVzIGFuZCBBcHBTdGF0ZUtleSkuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzU2VsZWN0aW9uVmFyaWFudCBTdHJpbmdpZmllZCBKU09OIG9iamVjdFxuXHQgKiBAcmV0dXJucyB7b2JqZWN0fSBBIFByb21pc2Ugb2JqZWN0IHRvIG1vbml0b3Igd2hlbiBhbGwgYWN0aW9ucyBvZiB0aGUgZnVuY3Rpb24gaGF2ZSBiZWVuIGV4ZWN1dGVkOyBpZiB0aGUgZXhlY3V0aW9uIGlzIHN1Y2Nlc3NmdWwsIHRoZVxuXHQgKiAgICAgICAgICBzZW1hbnRpY0F0dHJpYnV0ZXMgYXMgd2VsbCBhcyB0aGUgYXBwU3RhdGVLZXkgYXJlIHJldHVybmVkOyBpZiBhbiBlcnJvciBvY2N1cnMsIGFuIGVycm9yIG9iamVjdCBvZiB0eXBlXG5cdCAqICAgICAgICAgIHtAbGluayBzYXAuZmUubmF2aWdhdGlvbi5OYXZFcnJvcn0gaXMgcmV0dXJuZWRcblx0ICogPGJyPlxuXHQgKiBAZXhhbXBsZSA8Y29kZT5cblx0ICpcblx0ICogXHRcdHZhciBvU2VsZWN0aW9uVmFyaWFudCA9IG5ldyBzYXAuZmUubmF2aWdhdGlvbi5TZWxlY3Rpb25WYXJpYW50KCk7XG5cdCAqIFx0XHRvU2VsZWN0aW9uVmFyaWFudC5hZGRTZWxlY3RPcHRpb24oXCJDb21wYW55Q29kZVwiLCBcIklcIiwgXCJFUVwiLCBcIjAwMDFcIik7XG5cdCAqIFx0XHRvU2VsZWN0aW9uVmFyaWFudC5hZGRTZWxlY3RPcHRpb24oXCJDdXN0b21lclwiLCBcIklcIiwgXCJFUVwiLCBcIkMwMDAxXCIpO1xuXHQgKiBcdFx0dmFyIHNTZWxlY3Rpb25WYXJpYW50PSBvU2VsZWN0aW9uVmFyaWFudC50b0pTT05TdHJpbmcoKTtcblx0ICpcblx0ICogXHRcdHZhciBvTmF2aWdhdGlvbkhhbmRsZXIgPSBuZXcgc2FwLmZlLm5hdmlnYXRpb24uTmF2aWdhdGlvbkhhbmRsZXIob0NvbnRyb2xsZXIpO1xuXHQgKiBcdFx0dmFyIG9Qcm9taXNlT2JqZWN0ID0gb05hdmlnYXRpb25IYW5kbGVyLl9nZXRBcHBTdGF0ZUtleUFuZFVybFBhcmFtZXRlcnMoc1NlbGVjdGlvblZhcmlhbnQpO1xuXHQgKlxuXHQgKiBcdFx0b1Byb21pc2VPYmplY3QuZG9uZShmdW5jdGlvbihvU2VtYW50aWNBdHRyaWJ1dGVzLCBzQXBwU3RhdGVLZXkpe1xuXHQgKiBcdFx0XHQvLyBoZXJlIHlvdSBjYW4gYWRkIGNvZGluZyB0aGF0IHNob3VsZCBydW4gYWZ0ZXIgYWxsIGFwcCBzdGF0ZSBhbmQgdGhlIHNlbWFudGljIGF0dHJpYnV0ZXMgaGF2ZSBiZWVuIHJldHVybmVkLlxuXHQgKiBcdFx0fSk7XG5cdCAqXG5cdCAqIFx0XHRvUHJvbWlzZU9iamVjdC5mYWlsKGZ1bmN0aW9uKG9FcnJvcil7XG5cdCAqIFx0XHRcdC8vc29tZSBlcnJvciBoYW5kbGluZ1xuXHQgKiBcdFx0fSk7XG5cdCAqXG5cdCAqIDwvY29kZT5cblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqL1xuXHRnZXRBcHBTdGF0ZUtleUFuZFVybFBhcmFtZXRlcnMoc1NlbGVjdGlvblZhcmlhbnQ6IHN0cmluZykge1xuXHRcdHJldHVybiB0aGlzLm9OYXZIYW5kbGVyLl9nZXRBcHBTdGF0ZUtleUFuZFVybFBhcmFtZXRlcnMoc1NlbGVjdGlvblZhcmlhbnQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGFwcGxpY2F0aW9uIHNwZWNpZmljIHRlY2huaWNhbCBwYXJhbWV0ZXJzLlxuXHQgKiBAcmV0dXJucyB7QXJyYXl9IENvbnRhaW5pbmcgdGhlIHRlY2huaWNhbCBwYXJhbWV0ZXJzLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICovXG5cdGdldFRlY2huaWNhbFBhcmFtZXRlcnMoKSB7XG5cdFx0cmV0dXJuIHRoaXMub05hdkhhbmRsZXIuZ2V0VGVjaG5pY2FsUGFyYW1ldGVycygpO1xuXHR9XG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBhcHBsaWNhdGlvbiBzcGVjaWZpYyB0ZWNobmljYWwgcGFyYW1ldGVycy4gVGVjaG5pY2FsIHBhcmFtZXRlcnMgd2lsbCBub3QgYmUgYWRkZWQgdG8gdGhlIHNlbGVjdGlvbiB2YXJpYW50IHBhc3NlZCB0byB0aGVcblx0ICogYXBwbGljYXRpb24uXG5cdCAqIEFzIGEgZGVmYXVsdCBzYXAtc3lzdGVtLCBzYXAtdXNoZWxsLWRlZmF1bHRlZFBhcmFtZXRlck5hbWVzIGFuZCBoY3BBcHBsaWNhdGlvbklkIGFyZSBjb25zaWRlcmVkIGFzIHRlY2huaWNhbCBwYXJhbWV0ZXJzLlxuXHQgKiBAcGFyYW0ge0FycmF5fSBhVGVjaG5pY2FsUGFyYW1ldGVycyBMaXN0IG9mIHBhcmFtZXRlciBuYW1lcyB0byBiZSBjb25zaWRlcmVkIGFzIHRlY2huaWNhbCBwYXJhbWV0ZXJzLiA8Y29kZT5udWxsPC9jb2RlPiBvclxuXHQgKiAgICAgICAgPGNvZGU+dW5kZWZpbmVkPC9jb2RlPiBtYXkgYmUgdXNlZCB0byByZXNldCB0aGUgY29tcGxldGUgbGlzdC5cblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqL1xuXHRzZXRUZWNobmljYWxQYXJhbWV0ZXJzKGFUZWNobmljYWxQYXJhbWV0ZXJzOiBhbnlbXSkge1xuXHRcdHRoaXMub05hdkhhbmRsZXIuc2V0VGVjaG5pY2FsUGFyYW1ldGVycyhhVGVjaG5pY2FsUGFyYW1ldGVycyk7XG5cdH1cblx0LyoqXG5cdCAqIFNldHMgdGhlIG1vZGVsIHRoYXQgaXMgdXNlZCBmb3IgdmVyaWZpY2F0aW9uIG9mIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbi4gSWYgdGhlIG1vZGVsIGlzIG5vdCBzZXQsIHRoZSB1bm5hbWVkIGNvbXBvbmVudCBtb2RlbCBpcyB1c2VkIGZvciB0aGVcblx0ICogdmVyaWZpY2F0aW9uIG9mIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbi5cblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEBwYXJhbSB7c2FwLnVpLm1vZGVsLm9kYXRhLnYyLk9EYXRhTW9kZWx9IG9Nb2RlbCBNb2RlbCBGb3IgY2hlY2tpbmcgc2Vuc2l0aXZlIGluZm9ybWF0aW9uXG5cdCAqL1xuXHRzZXRNb2RlbChvTW9kZWw6IGFueSkge1xuXHRcdHRoaXMub05hdkhhbmRsZXIuc2V0TW9kZWwob01vZGVsKTtcblx0fVxuXHQvKipcblx0ICogQ2hhbmdlcyB0aGUgVVJMIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBhcHAgc3RhdGUgYW5kIHN0b3JlcyB0aGUgYXBwIHN0YXRlIGZvciBsYXRlciByZXRyaWV2YWwuXG5cdCAqIEBwcml2YXRlXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKiBAcGFyYW0ge29iamVjdH0gbUlubmVyQXBwRGF0YSBPYmplY3QgY29udGFpbmluZyB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgYXBwXG5cdCAqIEByZXR1cm5zIHtvYmplY3R9IEEgUHJvbWlzZSBvYmplY3QgdG8gbW9uaXRvciB3aGVuIGFsbCB0aGUgYWN0aW9ucyBvZiB0aGUgZnVuY3Rpb24gaGF2ZSBiZWVuIGV4ZWN1dGVkOyBpZiB0aGUgZXhlY3V0aW9uIGlzIHN1Y2Nlc3NmdWwsIHRoZVxuXHQgKiAgICAgICAgICBhcHAgc3RhdGUga2V5IGlzIHJldHVybmVkOyBpZiBhbiBlcnJvciBvY2N1cnMsIGFuIG9iamVjdCBvZiB0eXBlIHtAbGluayBzYXAuZmUubmF2aWdhdGlvbi5OYXZFcnJvcn0gaXNcblx0ICogICAgICAgICAgcmV0dXJuZWRcblx0ICoqL1xuXHRzdG9yZUlubmVyQXBwU3RhdGUobUlubmVyQXBwRGF0YTogb2JqZWN0KSB7XG5cdFx0cmV0dXJuIHRoaXMub05hdkhhbmRsZXIuc3RvcmVJbm5lckFwcFN0YXRlKG1Jbm5lckFwcERhdGEpO1xuXHR9XG5cdC8qKlxuXHRcdFx0XHQqIENoYW5nZXMgdGhlIFVSTCBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgYXBwIHN0YXRlIGFuZCBzdG9yZXMgdGhlIGFwcCBzdGF0ZSBmb3IgbGF0ZXIgcmV0cmlldmFsLlxuXHRcdFx0XHQqIEBwcml2YXRlXG5cdFx0XHRcdCogQHVpNS1yZXN0cmljdGVkXG5cdFx0XHRcdCogQHBhcmFtIHtvYmplY3R9IG1Jbm5lckFwcERhdGEgT2JqZWN0IGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGFwcFxuXHRcdFx0XHQqIEBwYXJhbSB7Ym9vbGVhbn0gW2JJbW1lZGlhdGVIYXNoUmVwbGFjZT1mYWxzZV0gSWYgc2V0IHRvIGZhbHNlLCB0aGUgaW5uZXIgYXBwIGhhc2ggd2lsbCBub3QgYmUgcmVwbGFjZWQgdW50aWwgc3RvcmluZyBpcyBzdWNjZXNzZnVsOyBkbyBub3Rcblx0XHRcdCAqIEBwYXJhbSBiTm90TGVnYWN5XG5cblx0XHRcdCAqIEByZXR1cm5zIHtvYmplY3R9IEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBhcHBTdGF0ZUlkIGFuZCBhIHByb21pc2Ugb2JqZWN0IHRvIG1vbml0b3Igd2hlbiBhbGwgdGhlIGFjdGlvbnMgb2YgdGhlIGZ1bmN0aW9uIGhhdmUgYmVlblxuXHRcdFx0XHQqIGV4ZWN1dGVkOyBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhcHBTdGF0ZUtleSBtYXkgYmUgdW5kZWZpbmVkIG9yIGVtcHR5LlxuXHRcdFx0XHQqL1xuXHRzdG9yZUlubmVyQXBwU3RhdGVXaXRoSW1tZWRpYXRlUmV0dXJuKG1Jbm5lckFwcERhdGE6IG9iamVjdCwgYkltbWVkaWF0ZUhhc2hSZXBsYWNlOiBib29sZWFuIHwgdW5kZWZpbmVkLCBiTm90TGVnYWN5OiBhbnkpIHtcblx0XHRyZXR1cm4gdGhpcy5vTmF2SGFuZGxlci5zdG9yZUlubmVyQXBwU3RhdGVXaXRoSW1tZWRpYXRlUmV0dXJuKG1Jbm5lckFwcERhdGEsIGJJbW1lZGlhdGVIYXNoUmVwbGFjZSwgYk5vdExlZ2FjeSk7XG5cdH1cblx0LyoqXG5cdCAqIENoYW5nZXMgdGhlIFVSTCBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgc0FwcFN0YXRlS2V5LiBBcyBhbiByZWFjdGlvbiByb3V0ZSBjaGFuZ2UgZXZlbnQgd2lsbCBiZSB0cmlnZ2VyZWQuXG5cdCAqIEBwcml2YXRlXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc0FwcFN0YXRlS2V5IFRoZSBuZXcgYXBwIHN0YXRlIGtleS5cblx0ICovXG5cdHJlcGxhY2VIYXNoKHNBcHBTdGF0ZUtleTogc3RyaW5nKSB7XG5cdFx0dGhpcy5vTmF2SGFuZGxlci5yZXBsYWNlSGFzaChzQXBwU3RhdGVLZXkpO1xuXHR9XG5cdHJlcGxhY2VJbm5lckFwcFN0YXRlS2V5KHNBcHBIYXNoOiBhbnksIHNBcHBTdGF0ZUtleTogYW55KSB7XG5cdFx0cmV0dXJuIHRoaXMub05hdkhhbmRsZXIuX3JlcGxhY2VJbm5lckFwcFN0YXRlS2V5KHNBcHBIYXNoLCBzQXBwU3RhdGVLZXkpO1xuXHR9XG5cdC8qKlxuXHQgKiBHZXQgc2luZ2xlIHZhbHVlcyBmcm9tIFNlbGVjdGlvblZhcmlhbnQgZm9yIHVybCBwYXJhbWV0ZXJzLlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQHBhcmFtIHtvYmplY3QgfCBzdHJpbmcgfSBbdlNlbGVjdGlvblZhcmlhbnRdXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBbdlNlbGVjdGlvblZhcmlhbnQub1VybFBhcmFtYXRlcnNdXG5cdCAqIEByZXR1cm5zIHtwYmplY3R9XG5cdCAqL1xuXHRnZXRVcmxQYXJhbWV0ZXJzRnJvbVNlbGVjdGlvblZhcmlhbnQodlNlbGVjdGlvblZhcmlhbnQ6IHN0cmluZyB8IG9iamVjdCB8IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiB0aGlzLm9OYXZIYW5kbGVyLl9nZXRVUkxQYXJhbWV0ZXJzRnJvbVNlbGVjdGlvblZhcmlhbnQodlNlbGVjdGlvblZhcmlhbnQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNhdmUgYXBwIHN0YXRlIGFuZCByZXR1cm4gaW1tZWRpYXRlbHkgd2l0aG91dCB3YWl0aW5nIGZvciByZXNwb25zZS5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBvSW5TZWxlY3Rpb25WYXJpYW50IEluc3RhbmNlIG9mIHNhcC5mZS5uYXZpZ2F0aW9uLlNlbGVjdGlvblZhcmlhbnRcblx0ICogQHJldHVybnMge3N0cmluZ30gQXBwU3RhdGUga2V5XG5cdCAqL1xuXHRzYXZlQXBwU3RhdGVXaXRoSW1tZWRpYXRlUmV0dXJuKG9JblNlbGVjdGlvblZhcmlhbnQ6IFNlbGVjdGlvblZhcmlhbnQpIHtcblx0XHRpZiAob0luU2VsZWN0aW9uVmFyaWFudCkge1xuXHRcdFx0Y29uc3Qgc1NlbGVjdGlvblZhcmlhbnQgPSBvSW5TZWxlY3Rpb25WYXJpYW50LnRvSlNPTlN0cmluZygpLCAvLyBjcmVhdGUgYW4gU1YgZm9yIGFwcCBzdGF0ZSBpbiBzdHJpbmcgZm9ybWF0XG5cdFx0XHRcdG9TZWxlY3Rpb25WYXJpYW50ID0gSlNPTi5wYXJzZShzU2VsZWN0aW9uVmFyaWFudCksIC8vIGNvbnZlcnQgc3RyaW5nIGludG8gSlNPTiB0byBzdG9yZSBpbiBBcHBTdGF0ZVxuXHRcdFx0XHRvWEFwcFN0YXRlT2JqZWN0ID0ge1xuXHRcdFx0XHRcdHNlbGVjdGlvblZhcmlhbnQ6IG9TZWxlY3Rpb25WYXJpYW50XG5cdFx0XHRcdH0sXG5cdFx0XHRcdG9SZXR1cm4gPSB0aGlzLm9OYXZIYW5kbGVyLl9zYXZlQXBwU3RhdGVXaXRoSW1tZWRpYXRlUmV0dXJuKG9YQXBwU3RhdGVPYmplY3QpO1xuXHRcdFx0cmV0dXJuIG9SZXR1cm4uYXBwU3RhdGVLZXkgPyBvUmV0dXJuLmFwcFN0YXRlS2V5IDogXCJcIjtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogTWl4IEF0dHJpYnV0ZXMgYW5kIHNlbGVjdGlvblZhcmlhbnQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fEFycmF5fSB2U2VtYW50aWNBdHRyaWJ1dGVzIE9iamVjdC8oQXJyYXkgb2YgT2JqZWN0cykgY29udGFpbmluZyBrZXkvdmFsdWUgcGFpcnNcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNTZWxlY3Rpb25WYXJpYW50IFRoZSBzZWxlY3Rpb24gdmFyaWFudCBpbiBzdHJpbmcgZm9ybWF0IGFzIHByb3ZpZGVkIGJ5IHRoZSBTbWFydEZpbHRlckJhciBjb250cm9sXG5cdCAqIEBwYXJhbSB7aW50fSBbaVN1cHByZXNzaW9uQmVoYXZpb3I9c2FwLmZlLm5hdmlnYXRpb24uU3VwcHJlc3Npb25CZWhhdmlvci5zdGFuZGFyZF0gSW5kaWNhdGVzIHdoZXRoZXIgc2VtYW50aWNcblx0ICogICAgICAgIGF0dHJpYnV0ZXMgd2l0aCBzcGVjaWFsIHZhbHVlcyAoc2VlIHtAbGluayBzYXAuZmUubmF2aWdhdGlvbi5TdXBwcmVzc2lvbkJlaGF2aW9yIHN1cHByZXNzaW9uIGJlaGF2aW9yfSkgbXVzdCBiZVxuXHQgKiAgICAgICAgc3VwcHJlc3NlZCBiZWZvcmUgdGhleSBhcmUgY29tYmluZWQgd2l0aCB0aGUgc2VsZWN0aW9uIHZhcmlhbnQ7IHNldmVyYWxcblx0ICogICAgICAgIHtAbGluayBzYXAuZmUubmF2aWdhdGlvbi5TdXBwcmVzc2lvbkJlaGF2aW9yIHN1cHByZXNzaW9uIGJlaGF2aW9yc30gY2FuIGJlIGNvbWJpbmVkIHdpdGggdGhlIGJpdHdpc2UgT1Igb3BlcmF0b3Jcblx0ICogICAgICAgICh8KVxuXHQgKiBAcmV0dXJucyB7b2JqZWN0fSBJbnN0YW5jZSBvZiB7QGxpbmsgc2FwLmZlLm5hdmlnYXRpb24uU2VsZWN0aW9uVmFyaWFudH1cblx0ICovXG5cdG1peEF0dHJpYnV0ZXNBbmRTZWxlY3Rpb25WYXJpYW50KFxuXHRcdHZTZW1hbnRpY0F0dHJpYnV0ZXM6IG9iamVjdCB8IGFueVtdLFxuXHRcdHNTZWxlY3Rpb25WYXJpYW50OiBzdHJpbmcgfCBTZWxlY3Rpb25WYXJpYW50LFxuXHRcdGlTdXBwcmVzc2lvbkJlaGF2aW9yPzogbnVtYmVyXG5cdCkge1xuXHRcdHJldHVybiB0aGlzLm9OYXZIYW5kbGVyLm1peEF0dHJpYnV0ZXNBbmRTZWxlY3Rpb25WYXJpYW50KHZTZW1hbnRpY0F0dHJpYnV0ZXMsIHNTZWxlY3Rpb25WYXJpYW50LCBpU3VwcHJlc3Npb25CZWhhdmlvcik7XG5cdH1cblxuXHQvKipcblx0ICogVGhlIG1ldGhvZCBjcmVhdGVzIGEgY29udGV4dCB1cmwgYmFzZWQgb24gcHJvdmlkZWQgZGF0YS4gVGhpcyBjb250ZXh0IHVybCBjYW4gZWl0aGVyIGJlIHVzZWQgYXMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzRW50aXR5U2V0TmFtZSBVc2VkIGZvciB1cmwgZGV0ZXJtaW5hdGlvblxuXHQgKiBAcGFyYW0gW29Nb2RlbF0gVGhlIE9EYXRhTW9kZWwgdXNlZCBmb3IgdXJsIGRldGVybWluYXRpb24uIElmIG9taXR0ZWQsIHRoZSBOYXZpZ2F0aW9uSGFuZGxlciBtb2RlbCBpcyB1c2VkLlxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29udGV4dCB1cmwgZm9yIHRoZSBnaXZlbiBlbnRpdGllc1xuXHQgKi9cblx0Y29uc3RydWN0Q29udGV4dFVybChzRW50aXR5U2V0TmFtZTogc3RyaW5nLCBvTW9kZWw6IGFueSkge1xuXHRcdHJldHVybiB0aGlzLm9OYXZIYW5kbGVyLmNvbnN0cnVjdENvbnRleHRVcmwoc0VudGl0eVNldE5hbWUsIG9Nb2RlbCk7XG5cdH1cblx0Z2V0SW50ZXJmYWNlKCkge1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG59XG5mdW5jdGlvbiBmbkdldEVtcHR5T2JqZWN0KCkge1xuXHRyZXR1cm4ge307XG59XG5cbmZ1bmN0aW9uIGZuR2V0UHJvbWlzZSgpIHtcblx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSh7fSk7XG59XG5cbmZ1bmN0aW9uIGZuR2V0SlF1ZXJ5UHJvbWlzZSgpIHtcblx0Y29uc3Qgb015RGVmZmVyZWQgPSBqUXVlcnkuRGVmZXJyZWQoKTtcblx0b015RGVmZmVyZWQucmVzb2x2ZSh7fSwge30sIFwiaW5pdGlhbFwiKTtcblx0cmV0dXJuIG9NeURlZmZlcmVkLnByb21pc2UoKTtcbn1cblxuZnVuY3Rpb24gZm5HZXRFbXB0eVN0cmluZygpIHtcblx0cmV0dXJuIFwiXCI7XG59XG5leHBvcnQgY2xhc3MgTmF2aWdhdGlvblNlcnZpY2VzTW9jayB7XG5cdGluaXRQcm9taXNlOiBQcm9taXNlPGFueT47XG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMuaW5pdFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUodGhpcyk7XG5cdH1cblxuXHRnZXRJbnRlcmZhY2UoKSB7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvLyByZXR1cm4gZW1wdHkgb2JqZWN0XG5cdGNyZWF0ZUVtcHR5QXBwU3RhdGUgPSBmbkdldEVtcHR5T2JqZWN0O1xuXHRzdG9yZUlubmVyQXBwU3RhdGVXaXRoSW1tZWRpYXRlUmV0dXJuID0gZm5HZXRFbXB0eU9iamVjdDtcblx0bWl4QXR0cmlidXRlc0FuZFNlbGVjdGlvblZhcmlhbnQgPSBmbkdldEVtcHR5T2JqZWN0O1xuXG5cdC8vIHJldHVybiBwcm9taXNlXG5cdGdldEFwcFN0YXRlID0gZm5HZXRQcm9taXNlO1xuXHRnZXRTdGFydHVwQXBwU3RhdGUgPSBmbkdldFByb21pc2U7XG5cdHBhcnNlTmF2aWdhdGlvbiA9IGZuR2V0SlF1ZXJ5UHJvbWlzZTtcblxuXHQvLyByZXR1cm4gZW1wdHkgc3RyaW5nXG5cdGNvbnN0cnVjdENvbnRleHRVcmwgPSBmbkdldEVtcHR5U3RyaW5nO1xuXG5cdHJlcGxhY2VJbm5lckFwcFN0YXRlS2V5KHNBcHBIYXNoOiBhbnkpIHtcblx0XHRyZXR1cm4gc0FwcEhhc2ggPyBzQXBwSGFzaCA6IFwiXCI7XG5cdH1cblxuXHRuYXZpZ2F0ZSgpIHtcblx0XHQvLyBEb24ndCBkbyBhbnl0aGluZ1xuXHR9XG59XG5cbmNsYXNzIE5hdmlnYXRpb25TZXJ2aWNlRmFjdG9yeSBleHRlbmRzIFNlcnZpY2VGYWN0b3J5PE5hdmlnYXRpb25TZXJ2aWNlU2V0dGluZ3M+IHtcblx0Y3JlYXRlSW5zdGFuY2Uob1NlcnZpY2VDb250ZXh0OiBTZXJ2aWNlQ29udGV4dDxOYXZpZ2F0aW9uU2VydmljZVNldHRpbmdzPikge1xuXHRcdGNvbnN0IG9OYXZpZ2F0aW9uU2VydmljZSA9XG5cdFx0XHRzYXAudXNoZWxsICYmIHNhcC51c2hlbGwuQ29udGFpbmVyID8gbmV3IE5hdmlnYXRpb25TZXJ2aWNlKG9TZXJ2aWNlQ29udGV4dCkgOiBuZXcgTmF2aWdhdGlvblNlcnZpY2VzTW9jaygpO1xuXHRcdC8vIFdhaXQgRm9yIGluaXRcblx0XHRyZXR1cm4gb05hdmlnYXRpb25TZXJ2aWNlLmluaXRQcm9taXNlLnRoZW4oZnVuY3Rpb24gKG9TZXJ2aWNlOiBhbnkpIHtcblx0XHRcdHJldHVybiBvU2VydmljZTtcblx0XHR9KTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBOYXZpZ2F0aW9uU2VydmljZUZhY3Rvcnk7XG4iXX0=
365
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk5hdmlnYXRpb25TZXJ2aWNlRmFjdG9yeS50cyJdLCJuYW1lcyI6WyJOYXZpZ2F0aW9uU2VydmljZSIsImluaXQiLCJvQ29udGV4dCIsImdldENvbnRleHQiLCJvQ29tcG9uZW50Iiwic2NvcGVPYmplY3QiLCJvTmF2SGFuZGxlciIsIk5hdmlnYXRpb25IYW5kbGVyIiwic2V0TW9kZWwiLCJnZXRNb2RlbCIsImluaXRQcm9taXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJleGl0IiwiZGVzdHJveSIsIm5hdmlnYXRlIiwic1NlbWFudGljT2JqZWN0Iiwic0FjdGlvbk5hbWUiLCJ2TmF2aWdhdGlvblBhcmFtZXRlcnMiLCJvSW5uZXJBcHBEYXRhIiwiZm5PbkVycm9yIiwib0V4dGVybmFsQXBwRGF0YSIsInNOYXZNb2RlIiwicGFyc2VOYXZpZ2F0aW9uIiwiX3Byb2Nlc3NCZWZvcmVTbWFydExpbmtQb3BvdmVyT3BlbnMiLCJvVGFibGVFdmVudFBhcmFtZXRlcnMiLCJzU2VsZWN0aW9uVmFyaWFudCIsIm1Jbm5lckFwcERhdGEiLCJwcm9jZXNzQmVmb3JlU21hcnRMaW5rUG9wb3Zlck9wZW5zIiwiZ2V0QXBwU3RhdGVLZXlBbmRVcmxQYXJhbWV0ZXJzIiwiX2dldEFwcFN0YXRlS2V5QW5kVXJsUGFyYW1ldGVycyIsImdldFRlY2huaWNhbFBhcmFtZXRlcnMiLCJzZXRUZWNobmljYWxQYXJhbWV0ZXJzIiwiYVRlY2huaWNhbFBhcmFtZXRlcnMiLCJvTW9kZWwiLCJzdG9yZUlubmVyQXBwU3RhdGUiLCJiSW1tZWRpYXRlSGFzaFJlcGxhY2UiLCJiU2tpcEhhc2hSZXBsYWNlIiwic3RvcmVJbm5lckFwcFN0YXRlV2l0aEltbWVkaWF0ZVJldHVybiIsInJlcGxhY2VIYXNoIiwic0FwcFN0YXRlS2V5IiwicmVwbGFjZUlubmVyQXBwU3RhdGVLZXkiLCJzQXBwSGFzaCIsIl9yZXBsYWNlSW5uZXJBcHBTdGF0ZUtleSIsImdldFVybFBhcmFtZXRlcnNGcm9tU2VsZWN0aW9uVmFyaWFudCIsInZTZWxlY3Rpb25WYXJpYW50IiwiX2dldFVSTFBhcmFtZXRlcnNGcm9tU2VsZWN0aW9uVmFyaWFudCIsInNhdmVBcHBTdGF0ZVdpdGhJbW1lZGlhdGVSZXR1cm4iLCJvSW5TZWxlY3Rpb25WYXJpYW50IiwidG9KU09OU3RyaW5nIiwib1NlbGVjdGlvblZhcmlhbnQiLCJKU09OIiwicGFyc2UiLCJvWEFwcFN0YXRlT2JqZWN0Iiwic2VsZWN0aW9uVmFyaWFudCIsIm9SZXR1cm4iLCJfc2F2ZUFwcFN0YXRlV2l0aEltbWVkaWF0ZVJldHVybiIsImFwcFN0YXRlS2V5IiwibWl4QXR0cmlidXRlc0FuZFNlbGVjdGlvblZhcmlhbnQiLCJ2U2VtYW50aWNBdHRyaWJ1dGVzIiwiaVN1cHByZXNzaW9uQmVoYXZpb3IiLCJjb25zdHJ1Y3RDb250ZXh0VXJsIiwic0VudGl0eVNldE5hbWUiLCJnZXRJbnRlcmZhY2UiLCJTZXJ2aWNlIiwiZm5HZXRFbXB0eU9iamVjdCIsImZuR2V0UHJvbWlzZSIsImZuR2V0SlF1ZXJ5UHJvbWlzZSIsIm9NeURlZmZlcmVkIiwialF1ZXJ5IiwiRGVmZXJyZWQiLCJwcm9taXNlIiwiZm5HZXRFbXB0eVN0cmluZyIsIk5hdmlnYXRpb25TZXJ2aWNlc01vY2siLCJjcmVhdGVFbXB0eUFwcFN0YXRlIiwiZ2V0QXBwU3RhdGUiLCJnZXRTdGFydHVwQXBwU3RhdGUiLCJOYXZpZ2F0aW9uU2VydmljZUZhY3RvcnkiLCJjcmVhdGVJbnN0YW5jZSIsIm9TZXJ2aWNlQ29udGV4dCIsIm9OYXZpZ2F0aW9uU2VydmljZSIsInNhcCIsInVzaGVsbCIsIkNvbnRhaW5lciIsInRoZW4iLCJvU2VydmljZSIsIlNlcnZpY2VGYWN0b3J5Il0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7O01BS2FBLGlCOzs7Ozs7Ozs7O1dBR1pDLEksR0FBQSxnQkFBTztBQUNOLFVBQU1DLFFBQVEsR0FBRyxLQUFLQyxVQUFMLEVBQWpCO0FBQUEsVUFDQ0MsVUFBVSxHQUFHRixRQUFRLElBQUlBLFFBQVEsQ0FBQ0csV0FEbkM7QUFHQSxXQUFLQyxXQUFMLEdBQW1CLElBQUlDLGlCQUFKLENBQXNCSCxVQUF0QixDQUFuQjtBQUNBLFdBQUtFLFdBQUwsQ0FBaUJFLFFBQWpCLENBQTBCSixVQUFVLENBQUNLLFFBQVgsRUFBMUI7QUFDQSxXQUFLQyxXQUFMLEdBQW1CQyxPQUFPLENBQUNDLE9BQVIsQ0FBZ0IsSUFBaEIsQ0FBbkI7QUFDQSxLOztXQUNEQyxJLEdBQUEsZ0JBQU87QUFDTixXQUFLUCxXQUFMLENBQWlCUSxPQUFqQjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O1dBQ0NDLFEsR0FBQSxrQkFDQ0MsZUFERCxFQUVDQyxXQUZELEVBR0NDLHFCQUhELEVBSUNDLGFBSkQsRUFLQ0MsU0FMRCxFQU1DQyxnQkFORCxFQU9DQyxRQVBELEVBUUU7QUFDRDtBQUNBO0FBQ0E7QUFDQSxXQUFLaEIsV0FBTCxDQUFpQlMsUUFBakIsQ0FDQ0MsZUFERCxFQUVDQyxXQUZELEVBR0NDLHFCQUhELEVBSUNDLGFBSkQsRUFLQ0MsU0FMRCxFQU1DQyxnQkFORCxFQU9DQyxRQVBEO0FBU0E7QUFDRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7V0FDQ0MsZSxHQUFBLDJCQUFrQjtBQUNqQixhQUFPLEtBQUtqQixXQUFMLENBQWlCaUIsZUFBakIsRUFBUDtBQUNBO0FBQ0Q7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztXQUNDQyxtQyxHQUFBLDZDQUFvQ0MscUJBQXBDLEVBQW1FQyxpQkFBbkUsRUFBOEZDLGFBQTlGLEVBQWlJO0FBQ2hJLGFBQU8sS0FBS3JCLFdBQUwsQ0FBaUJzQixrQ0FBakIsQ0FBb0RILHFCQUFwRCxFQUEyRUMsaUJBQTNFLEVBQThGQyxhQUE5RixDQUFQO0FBQ0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztXQUNDRSw4QixHQUFBLHdDQUErQkgsaUJBQS9CLEVBQTBEO0FBQ3pELGFBQU8sS0FBS3BCLFdBQUwsQ0FBaUJ3QiwrQkFBakIsQ0FBaURKLGlCQUFqRCxDQUFQO0FBQ0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O1dBQ0NLLHNCLEdBQUEsa0NBQXlCO0FBQ3hCLGFBQU8sS0FBS3pCLFdBQUwsQ0FBaUJ5QixzQkFBakIsRUFBUDtBQUNBO0FBQ0Q7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztXQUNDQyxzQixHQUFBLGdDQUF1QkMsb0JBQXZCLEVBQW9EO0FBQ25ELFdBQUszQixXQUFMLENBQWlCMEIsc0JBQWpCLENBQXdDQyxvQkFBeEM7QUFDQTtBQUNEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztXQUNDekIsUSxHQUFBLGtCQUFTMEIsTUFBVCxFQUFzQjtBQUNyQixXQUFLNUIsV0FBTCxDQUFpQkUsUUFBakIsQ0FBMEIwQixNQUExQjtBQUNBO0FBQ0Q7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O1dBQ0NDLGtCLEdBQUEsNEJBQW1CUixhQUFuQixFQUF1Q1MscUJBQXZDLEVBQW9GQyxnQkFBcEYsRUFBNEg7QUFDM0gsYUFBTyxLQUFLL0IsV0FBTCxDQUFpQjZCLGtCQUFqQixDQUFvQ1IsYUFBcEMsRUFBbURTLHFCQUFuRCxFQUEwRUMsZ0JBQTFFLENBQVA7QUFDQTtBQUNEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7V0FDQ0MscUMsR0FBQSwrQ0FBc0NYLGFBQXRDLEVBQTBEUyxxQkFBMUQsRUFBc0c7QUFDckcsYUFBTyxLQUFLOUIsV0FBTCxDQUFpQmdDLHFDQUFqQixDQUF1RFgsYUFBdkQsRUFBc0VTLHFCQUF0RSxDQUFQO0FBQ0E7QUFDRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O1dBQ0NHLFcsR0FBQSxxQkFBWUMsWUFBWixFQUFrQztBQUNqQyxXQUFLbEMsV0FBTCxDQUFpQmlDLFdBQWpCLENBQTZCQyxZQUE3QjtBQUNBLEs7O1dBQ0RDLHVCLEdBQUEsaUNBQXdCQyxRQUF4QixFQUF1Q0YsWUFBdkMsRUFBMEQ7QUFDekQsYUFBTyxLQUFLbEMsV0FBTCxDQUFpQnFDLHdCQUFqQixDQUEwQ0QsUUFBMUMsRUFBb0RGLFlBQXBELENBQVA7QUFDQTtBQUNEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O1dBQ0NJLG9DLEdBQUEsOENBQXFDQyxpQkFBckMsRUFBcUY7QUFDcEYsYUFBTyxLQUFLdkMsV0FBTCxDQUFpQndDLHFDQUFqQixDQUF1REQsaUJBQXZELENBQVA7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztXQUNDRSwrQixHQUFBLHlDQUFnQ0MsbUJBQWhDLEVBQXVFO0FBQ3RFLFVBQUlBLG1CQUFKLEVBQXlCO0FBQ3hCLFlBQU10QixpQkFBaUIsR0FBR3NCLG1CQUFtQixDQUFDQyxZQUFwQixFQUExQjtBQUFBLFlBQThEO0FBQzdEQyxRQUFBQSxpQkFBaUIsR0FBR0MsSUFBSSxDQUFDQyxLQUFMLENBQVcxQixpQkFBWCxDQURyQjtBQUFBLFlBQ29EO0FBQ25EMkIsUUFBQUEsZ0JBQWdCLEdBQUc7QUFDbEJDLFVBQUFBLGdCQUFnQixFQUFFSjtBQURBLFNBRnBCO0FBQUEsWUFLQ0ssT0FBTyxHQUFHLEtBQUtqRCxXQUFMLENBQWlCa0QsZ0NBQWpCLENBQWtESCxnQkFBbEQsQ0FMWDs7QUFNQSxlQUFPRSxPQUFPLFNBQVAsSUFBQUEsT0FBTyxXQUFQLElBQUFBLE9BQU8sQ0FBRUUsV0FBVCxHQUF1QkYsT0FBTyxDQUFDRSxXQUEvQixHQUE2QyxFQUFwRDtBQUNBO0FBQ0Q7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztXQUNDQyxnQyxHQUFBLDBDQUNDQyxtQkFERCxFQUVDakMsaUJBRkQsRUFHQ2tDLG9CQUhELEVBSUU7QUFDRCxhQUFPLEtBQUt0RCxXQUFMLENBQWlCb0QsZ0NBQWpCLENBQWtEQyxtQkFBbEQsRUFBdUVqQyxpQkFBdkUsRUFBMEZrQyxvQkFBMUYsQ0FBUDtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztXQUNDQyxtQixHQUFBLDZCQUFvQkMsY0FBcEIsRUFBNEM1QixNQUE1QyxFQUF5RDtBQUN4RCxhQUFPLEtBQUs1QixXQUFMLENBQWlCdUQsbUJBQWpCLENBQXFDQyxjQUFyQyxFQUFxRDVCLE1BQXJELENBQVA7QUFDQSxLOztXQUNENkIsWSxHQUFBLHdCQUFlO0FBQ2QsYUFBTyxJQUFQO0FBQ0EsSzs7O0lBbFFxQ0MsTzs7OztBQW9RdkMsV0FBU0MsZ0JBQVQsR0FBNEI7QUFDM0IsV0FBTyxFQUFQO0FBQ0E7O0FBRUQsV0FBU0MsWUFBVCxHQUF3QjtBQUN2QixXQUFPdkQsT0FBTyxDQUFDQyxPQUFSLENBQWdCLEVBQWhCLENBQVA7QUFDQTs7QUFFRCxXQUFTdUQsa0JBQVQsR0FBOEI7QUFDN0IsUUFBTUMsV0FBVyxHQUFHQyxNQUFNLENBQUNDLFFBQVAsRUFBcEI7QUFDQUYsSUFBQUEsV0FBVyxDQUFDeEQsT0FBWixDQUFvQixFQUFwQixFQUF3QixFQUF4QixFQUE0QixTQUE1QjtBQUNBLFdBQU93RCxXQUFXLENBQUNHLE9BQVosRUFBUDtBQUNBOztBQUVELFdBQVNDLGdCQUFULEdBQTRCO0FBQzNCLFdBQU8sRUFBUDtBQUNBOztNQUNZQyxzQjtBQUVaLHNDQUFjO0FBQUEsV0FTZEMsbUJBVGMsR0FTUVQsZ0JBVFI7QUFBQSxXQVVkM0IscUNBVmMsR0FVMEIyQixnQkFWMUI7QUFBQSxXQVdkUCxnQ0FYYyxHQVdxQk8sZ0JBWHJCO0FBQUEsV0FjZFUsV0FkYyxHQWNBVCxZQWRBO0FBQUEsV0FlZFUsa0JBZmMsR0FlT1YsWUFmUDtBQUFBLFdBZ0JkM0MsZUFoQmMsR0FnQkk0QyxrQkFoQko7QUFBQSxXQW1CZE4sbUJBbkJjLEdBbUJRVyxnQkFuQlI7QUFDYixXQUFLOUQsV0FBTCxHQUFtQkMsT0FBTyxDQUFDQyxPQUFSLENBQWdCLElBQWhCLENBQW5CO0FBQ0E7Ozs7O1lBRURtRCxZLEdBQUEsd0JBQWU7QUFDZCxhQUFPLElBQVA7QUFDQSxLLENBRUQ7OztZQWFBdEIsdUIsR0FBQSxpQ0FBd0JDLFFBQXhCLEVBQXVDO0FBQ3RDLGFBQU9BLFFBQVEsR0FBR0EsUUFBSCxHQUFjLEVBQTdCO0FBQ0EsSzs7WUFFRDNCLFEsR0FBQSxvQkFBVyxDQUNWO0FBQ0EsSzs7Ozs7OztNQUdJOEQsd0I7Ozs7Ozs7OztZQUNMQyxjLEdBQUEsd0JBQWVDLGVBQWYsRUFBMkU7QUFDMUUsVUFBTUMsa0JBQWtCLEdBQ3ZCQyxHQUFHLENBQUNDLE1BQUosSUFBY0QsR0FBRyxDQUFDQyxNQUFKLENBQVdDLFNBQXpCLEdBQXFDLElBQUluRixpQkFBSixDQUFzQitFLGVBQXRCLENBQXJDLEdBQThFLElBQUlOLHNCQUFKLEVBRC9FLENBRDBFLENBRzFFOztBQUNBLGFBQU9PLGtCQUFrQixDQUFDdEUsV0FBbkIsQ0FBK0IwRSxJQUEvQixDQUFvQyxVQUFVQyxRQUFWLEVBQXlCO0FBQ25FLGVBQU9BLFFBQVA7QUFDQSxPQUZNLENBQVA7QUFHQSxLOzs7SUFScUNDLGM7O1NBV3hCVCx3QiIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmF2aWdhdGlvbkhhbmRsZXIgfSBmcm9tIFwic2FwL2ZlL25hdmlnYXRpb25cIjtcbmltcG9ydCB0eXBlIFNlbGVjdGlvblZhcmlhbnQgZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL1NlbGVjdGlvblZhcmlhbnRcIjtcbmltcG9ydCBTZXJ2aWNlIGZyb20gXCJzYXAvdWkvY29yZS9zZXJ2aWNlL1NlcnZpY2VcIjtcbmltcG9ydCBTZXJ2aWNlRmFjdG9yeSBmcm9tIFwic2FwL3VpL2NvcmUvc2VydmljZS9TZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHR5cGUgeyBTZXJ2aWNlQ29udGV4dCB9IGZyb20gXCJ0eXBlcy9leHRlbnNpb25fdHlwZXNcIjtcblxudHlwZSBOYXZpZ2F0aW9uU2VydmljZVNldHRpbmdzID0ge307XG5leHBvcnQgY2xhc3MgTmF2aWdhdGlvblNlcnZpY2UgZXh0ZW5kcyBTZXJ2aWNlPE5hdmlnYXRpb25TZXJ2aWNlU2V0dGluZ3M+IHtcblx0aW5pdFByb21pc2UhOiBQcm9taXNlPGFueT47XG5cdG9OYXZIYW5kbGVyITogTmF2aWdhdGlvbkhhbmRsZXI7XG5cdGluaXQoKSB7XG5cdFx0Y29uc3Qgb0NvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcblx0XHRcdG9Db21wb25lbnQgPSBvQ29udGV4dCAmJiBvQ29udGV4dC5zY29wZU9iamVjdDtcblxuXHRcdHRoaXMub05hdkhhbmRsZXIgPSBuZXcgTmF2aWdhdGlvbkhhbmRsZXIob0NvbXBvbmVudCk7XG5cdFx0dGhpcy5vTmF2SGFuZGxlci5zZXRNb2RlbChvQ29tcG9uZW50LmdldE1vZGVsKCkpO1xuXHRcdHRoaXMuaW5pdFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUodGhpcyk7XG5cdH1cblx0ZXhpdCgpIHtcblx0XHR0aGlzLm9OYXZIYW5kbGVyLmRlc3Ryb3koKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUcmlnZ2VycyBhIGNyb3NzLWFwcCBuYXZpZ2F0aW9uIGFmdGVyIHNhdmluZyB0aGUgaW5uZXIgYW5kIHRoZSBjcm9zcy1hcHAgc3RhdGVzLlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQHBhcmFtIHNTZW1hbnRpY09iamVjdCBTZW1hbnRpYyBvYmplY3Qgb2YgdGhlIHRhcmdldCBhcHBcblx0ICogQHBhcmFtIHNBY3Rpb25OYW1lIEFjdGlvbiBvZiB0aGUgdGFyZ2V0IGFwcFxuXHQgKiBAcGFyYW0gW3ZOYXZpZ2F0aW9uUGFyYW1ldGVyc10gTmF2aWdhdGlvbiBwYXJhbWV0ZXJzIGFzIGFuIG9iamVjdCB3aXRoIGtleS92YWx1ZSBwYWlycyBvciBhcyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZlxuXHQgKiAgICAgICAgc3VjaCBhbiBvYmplY3QuIElmIHBhc3NlZCBhcyBhbiBvYmplY3QsIHRoZSBwcm9wZXJ0aWVzIGFyZSBub3QgY2hlY2tlZCBhZ2FpbnN0IHRoZSA8Y29kZT5Jc1BvdGVudGlhbFNlbnNpdGl2ZTwvY29kZT4gb3Jcblx0ICogICAgICAgIDxjb2RlPk1lYXN1cmU8L2NvZGU+IHR5cGUuXG5cdCAqIEBwYXJhbSBbb0lubmVyQXBwRGF0YV0gT2JqZWN0IGZvciBzdG9yaW5nIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGFwcFxuXHQgKiBAcGFyYW0gW2ZuT25FcnJvcl0gQ2FsbGJhY2sgdGhhdCBpcyBjYWxsZWQgaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyBuYXZpZ2F0aW9uIDxicj5cblx0ICogQHBhcmFtIFtvRXh0ZXJuYWxBcHBEYXRhXSBPYmplY3QgZm9yIHN0b3JpbmcgdGhlIHN0YXRlIHdoaWNoIHdpbGwgYmUgZm9yd2FyZGVkIHRvIHRoZSB0YXJnZXQgY29tcG9uZW50LlxuXHQgKiBAcGFyYW0gW3NOYXZNb2RlXSBBcmd1bWVudCBpcyB1c2VkIHRvIG92ZXJ3cml0ZSB0aGUgRkxQLWNvbmZpZ3VyZWQgdGFyZ2V0IGZvciBvcGVuaW5nIGEgVVJMLiBJZiB1c2VkLCBvbmx5IHRoZVxuXHQgKiAgICAgICAgPGNvZGU+ZXhwbGFjZTwvY29kZT4gb3IgPGNvZGU+aW5wbGFjZTwvY29kZT4gdmFsdWVzIGFyZSBhbGxvd2VkLiBBbnkgb3RoZXIgdmFsdWUgd2lsbCBsZWFkIHRvIGFuIGV4Y2VwdGlvblxuXHQgKiAgICAgICAgPGNvZGU+TmF2aWdhdGlvbkhhbmRsZXIuSU5WQUxJRF9OQVZfTU9ERTwvY29kZT4uXG5cdCAqL1xuXHRuYXZpZ2F0ZShcblx0XHRzU2VtYW50aWNPYmplY3Q6IHN0cmluZyxcblx0XHRzQWN0aW9uTmFtZTogc3RyaW5nLFxuXHRcdHZOYXZpZ2F0aW9uUGFyYW1ldGVycz86IHN0cmluZyB8IG9iamVjdCxcblx0XHRvSW5uZXJBcHBEYXRhPzogb2JqZWN0LFxuXHRcdGZuT25FcnJvcj86IEZ1bmN0aW9uLFxuXHRcdG9FeHRlcm5hbEFwcERhdGE/OiBhbnksXG5cdFx0c05hdk1vZGU/OiBzdHJpbmdcblx0KSB7XG5cdFx0Ly8gVE9ETzogTmF2aWdhdGlvbiBIYW5kbGVyIGRvZXMgbm90IGhhbmRsZSBuYXZpZ2F0aW9uIHdpdGhvdXQgYSBjb250ZXh0XG5cdFx0Ly8gYnV0IGluIHY0IERhdGFGaWVsZEZvcklCTiB3aXRoIHJlcXVpcmVzQ29udGV4dCBmYWxzZSBjYW4gdHJpZ2dlciBhIG5hdmlnYXRpb24gd2l0aG91dCBhbnkgY29udGV4dFxuXHRcdC8vIFRoaXMgc2hvdWxkIGJlIGhhbmRsZWRcblx0XHR0aGlzLm9OYXZIYW5kbGVyLm5hdmlnYXRlKFxuXHRcdFx0c1NlbWFudGljT2JqZWN0LFxuXHRcdFx0c0FjdGlvbk5hbWUsXG5cdFx0XHR2TmF2aWdhdGlvblBhcmFtZXRlcnMsXG5cdFx0XHRvSW5uZXJBcHBEYXRhLFxuXHRcdFx0Zm5PbkVycm9yLFxuXHRcdFx0b0V4dGVybmFsQXBwRGF0YSxcblx0XHRcdHNOYXZNb2RlXG5cdFx0KTtcblx0fVxuXHQvKipcblx0ICogUGFyc2VzIHRoZSBpbmNvbWluZyBVUkwgYW5kIHJldHVybnMgYSBQcm9taXNlLlxuXHQgKlxuXHQgKiBAcmV0dXJucyBBIFByb21pc2Ugb2JqZWN0IHdoaWNoIHJldHVybnMgdGhlXG5cdCAqIGV4dHJhY3RlZCBhcHAgc3RhdGUsIHRoZSBzdGFydHVwIHBhcmFtZXRlcnMsIGFuZCB0aGUgdHlwZSBvZiBuYXZpZ2F0aW9uIHdoZW4gZXhlY3V0aW9uIGlzIHN1Y2Nlc3NmdWwsXG5cdCAqIEBwcml2YXRlXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKi9cblx0cGFyc2VOYXZpZ2F0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLm9OYXZIYW5kbGVyLnBhcnNlTmF2aWdhdGlvbigpO1xuXHR9XG5cdC8qKlxuXHQgKiBQcm9jZXNzZXMgbmF2aWdhdGlvbi1yZWxhdGVkIHRhc2tzIHJlbGF0ZWQgdG8gYmVmb3JlUG9wb3Zlck9wZW5zIGV2ZW50IGhhbmRsaW5nIGZvciB0aGUgU21hcnRMaW5rIGNvbnRyb2wgYW5kIHJldHVybnMgYSBQcm9taXNlIG9iamVjdC5cblx0ICpcblx0ICogQHBhcmFtIG9UYWJsZUV2ZW50UGFyYW1ldGVycyBUaGUgcGFyYW1ldGVycyBtYWRlIGF2YWlsYWJsZSBieSB0aGUgU21hcnRUYWJsZSBjb250cm9sIHdoZW4gdGhlIFNtYXJ0TGluayBjb250cm9sIGhhcyBiZWVuIGNsaWNrZWQsXG5cdCAqICAgICAgICBhbiBpbnN0YW5jZSBvZiBhIFBvcE92ZXIgb2JqZWN0XG5cdCAqIEBwYXJhbSBzU2VsZWN0aW9uVmFyaWFudCBTdHJpbmdpZmllZCBKU09OIG9iamVjdCBhcyByZXR1cm5lZCwgZm9yIGV4YW1wbGUsIGZyb20gZ2V0RGF0YVN1aXRlRm9ybWF0KCkgb2YgdGhlIFNtYXJ0RmlsdGVyQmFyIGNvbnRyb2xcblx0ICogQHBhcmFtIFttSW5uZXJBcHBEYXRhXSBPYmplY3QgY29udGFpbmluZyB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgYXBwLiBJZiBwcm92aWRlZCwgb3BlbmluZyB0aGUgUG9wb3ZlciBpcyBkZWZlcnJlZCB1bnRpbCB0aGVcblx0ICogICAgICAgIGlubmVyIGFwcCBkYXRhIGlzIHNhdmVkIGluIGEgY29uc2lzdGVudCB3YXkuXG5cdCAqIEByZXR1cm5zIEEgUHJvbWlzZSBvYmplY3QgdG8gbW9uaXRvciB3aGVuIGFsbCBhY3Rpb25zIG9mIHRoZSBmdW5jdGlvbiBoYXZlIGJlZW4gZXhlY3V0ZWQ7IGlmIHRoZSBleGVjdXRpb24gaXMgc3VjY2Vzc2Z1bCwgdGhlXG5cdCAqICAgICAgICAgIG1vZGlmaWVkIG9UYWJsZUV2ZW50UGFyYW1ldGVycyBpcyByZXR1cm5lZDsgaWYgYW4gZXJyb3Igb2NjdXJzLCBhbiBlcnJvciBvYmplY3Qgb2YgdHlwZVxuXHQgKiAgICAgICAgICB7QGxpbmsgc2FwLmZlLm5hdmlnYXRpb24uTmF2RXJyb3J9IGlzIHJldHVybmVkXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRfcHJvY2Vzc0JlZm9yZVNtYXJ0TGlua1BvcG92ZXJPcGVucyhvVGFibGVFdmVudFBhcmFtZXRlcnM6IG9iamVjdCwgc1NlbGVjdGlvblZhcmlhbnQ6IHN0cmluZywgbUlubmVyQXBwRGF0YTogb2JqZWN0IHwgdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIHRoaXMub05hdkhhbmRsZXIucHJvY2Vzc0JlZm9yZVNtYXJ0TGlua1BvcG92ZXJPcGVucyhvVGFibGVFdmVudFBhcmFtZXRlcnMsIHNTZWxlY3Rpb25WYXJpYW50LCBtSW5uZXJBcHBEYXRhKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQcm9jZXNzZXMgc2VsZWN0aW9uVmFyaWFudCBzdHJpbmcgYW5kIHJldHVybnMgYSBQcm9taXNlIG9iamVjdCAoc2VtYW50aWNBdHRyaWJ1dGVzIGFuZCBBcHBTdGF0ZUtleSkuXG5cdCAqXG5cdCAqIEBwYXJhbSBzU2VsZWN0aW9uVmFyaWFudCBTdHJpbmdpZmllZCBKU09OIG9iamVjdFxuXHQgKiBAcmV0dXJucyBBIFByb21pc2Ugb2JqZWN0IHRvIG1vbml0b3Igd2hlbiBhbGwgYWN0aW9ucyBvZiB0aGUgZnVuY3Rpb24gaGF2ZSBiZWVuIGV4ZWN1dGVkOyBpZiB0aGUgZXhlY3V0aW9uIGlzIHN1Y2Nlc3NmdWwsIHRoZVxuXHQgKiAgICAgICAgICBzZW1hbnRpY0F0dHJpYnV0ZXMgYXMgd2VsbCBhcyB0aGUgYXBwU3RhdGVLZXkgYXJlIHJldHVybmVkOyBpZiBhbiBlcnJvciBvY2N1cnMsIGFuIGVycm9yIG9iamVjdCBvZiB0eXBlXG5cdCAqICAgICAgICAgIHtAbGluayBzYXAuZmUubmF2aWdhdGlvbi5OYXZFcnJvcn0gaXMgcmV0dXJuZWRcblx0ICogPGJyPlxuXHQgKiBAZXhhbXBsZSA8Y29kZT5cblx0ICpcblx0ICogXHRcdHZhciBvU2VsZWN0aW9uVmFyaWFudCA9IG5ldyBzYXAuZmUubmF2aWdhdGlvbi5TZWxlY3Rpb25WYXJpYW50KCk7XG5cdCAqIFx0XHRvU2VsZWN0aW9uVmFyaWFudC5hZGRTZWxlY3RPcHRpb24oXCJDb21wYW55Q29kZVwiLCBcIklcIiwgXCJFUVwiLCBcIjAwMDFcIik7XG5cdCAqIFx0XHRvU2VsZWN0aW9uVmFyaWFudC5hZGRTZWxlY3RPcHRpb24oXCJDdXN0b21lclwiLCBcIklcIiwgXCJFUVwiLCBcIkMwMDAxXCIpO1xuXHQgKiBcdFx0dmFyIHNTZWxlY3Rpb25WYXJpYW50PSBvU2VsZWN0aW9uVmFyaWFudC50b0pTT05TdHJpbmcoKTtcblx0ICpcblx0ICogXHRcdHZhciBvTmF2aWdhdGlvbkhhbmRsZXIgPSBuZXcgc2FwLmZlLm5hdmlnYXRpb24uTmF2aWdhdGlvbkhhbmRsZXIob0NvbnRyb2xsZXIpO1xuXHQgKiBcdFx0dmFyIG9Qcm9taXNlT2JqZWN0ID0gb05hdmlnYXRpb25IYW5kbGVyLl9nZXRBcHBTdGF0ZUtleUFuZFVybFBhcmFtZXRlcnMoc1NlbGVjdGlvblZhcmlhbnQpO1xuXHQgKlxuXHQgKiBcdFx0b1Byb21pc2VPYmplY3QuZG9uZShmdW5jdGlvbihvU2VtYW50aWNBdHRyaWJ1dGVzLCBzQXBwU3RhdGVLZXkpe1xuXHQgKiBcdFx0XHQvLyBoZXJlIHlvdSBjYW4gYWRkIGNvZGluZyB0aGF0IHNob3VsZCBydW4gYWZ0ZXIgYWxsIGFwcCBzdGF0ZSBhbmQgdGhlIHNlbWFudGljIGF0dHJpYnV0ZXMgaGF2ZSBiZWVuIHJldHVybmVkLlxuXHQgKiBcdFx0fSk7XG5cdCAqXG5cdCAqIFx0XHRvUHJvbWlzZU9iamVjdC5mYWlsKGZ1bmN0aW9uKG9FcnJvcil7XG5cdCAqIFx0XHRcdC8vc29tZSBlcnJvciBoYW5kbGluZ1xuXHQgKiBcdFx0fSk7XG5cdCAqXG5cdCAqIDwvY29kZT5cblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqL1xuXHRnZXRBcHBTdGF0ZUtleUFuZFVybFBhcmFtZXRlcnMoc1NlbGVjdGlvblZhcmlhbnQ6IHN0cmluZykge1xuXHRcdHJldHVybiB0aGlzLm9OYXZIYW5kbGVyLl9nZXRBcHBTdGF0ZUtleUFuZFVybFBhcmFtZXRlcnMoc1NlbGVjdGlvblZhcmlhbnQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGFwcGxpY2F0aW9uIHNwZWNpZmljIHRlY2huaWNhbCBwYXJhbWV0ZXJzLlxuXHQgKlxuXHQgKiBAcmV0dXJucyBDb250YWluaW5nIHRoZSB0ZWNobmljYWwgcGFyYW1ldGVycy5cblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqL1xuXHRnZXRUZWNobmljYWxQYXJhbWV0ZXJzKCkge1xuXHRcdHJldHVybiB0aGlzLm9OYXZIYW5kbGVyLmdldFRlY2huaWNhbFBhcmFtZXRlcnMoKTtcblx0fVxuXHQvKipcblx0ICogU2V0cyB0aGUgYXBwbGljYXRpb24gc3BlY2lmaWMgdGVjaG5pY2FsIHBhcmFtZXRlcnMuIFRlY2huaWNhbCBwYXJhbWV0ZXJzIHdpbGwgbm90IGJlIGFkZGVkIHRvIHRoZSBzZWxlY3Rpb24gdmFyaWFudCBwYXNzZWQgdG8gdGhlXG5cdCAqIGFwcGxpY2F0aW9uLlxuXHQgKiBBcyBhIGRlZmF1bHQgc2FwLXN5c3RlbSwgc2FwLXVzaGVsbC1kZWZhdWx0ZWRQYXJhbWV0ZXJOYW1lcyBhbmQgaGNwQXBwbGljYXRpb25JZCBhcmUgY29uc2lkZXJlZCBhcyB0ZWNobmljYWwgcGFyYW1ldGVycy5cblx0ICpcblx0ICogQHBhcmFtIGFUZWNobmljYWxQYXJhbWV0ZXJzIExpc3Qgb2YgcGFyYW1ldGVyIG5hbWVzIHRvIGJlIGNvbnNpZGVyZWQgYXMgdGVjaG5pY2FsIHBhcmFtZXRlcnMuIDxjb2RlPm51bGw8L2NvZGU+IG9yXG5cdCAqICAgICAgICA8Y29kZT51bmRlZmluZWQ8L2NvZGU+IG1heSBiZSB1c2VkIHRvIHJlc2V0IHRoZSBjb21wbGV0ZSBsaXN0LlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICovXG5cdHNldFRlY2huaWNhbFBhcmFtZXRlcnMoYVRlY2huaWNhbFBhcmFtZXRlcnM6IGFueVtdKSB7XG5cdFx0dGhpcy5vTmF2SGFuZGxlci5zZXRUZWNobmljYWxQYXJhbWV0ZXJzKGFUZWNobmljYWxQYXJhbWV0ZXJzKTtcblx0fVxuXHQvKipcblx0ICogU2V0cyB0aGUgbW9kZWwgdGhhdCBpcyB1c2VkIGZvciB2ZXJpZmljYXRpb24gb2Ygc2Vuc2l0aXZlIGluZm9ybWF0aW9uLiBJZiB0aGUgbW9kZWwgaXMgbm90IHNldCwgdGhlIHVubmFtZWQgY29tcG9uZW50IG1vZGVsIGlzIHVzZWQgZm9yIHRoZVxuXHQgKiB2ZXJpZmljYXRpb24gb2Ygc2Vuc2l0aXZlIGluZm9ybWF0aW9uLlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQHBhcmFtIG9Nb2RlbCBNb2RlbCBGb3IgY2hlY2tpbmcgc2Vuc2l0aXZlIGluZm9ybWF0aW9uXG5cdCAqL1xuXHRzZXRNb2RlbChvTW9kZWw6IGFueSkge1xuXHRcdHRoaXMub05hdkhhbmRsZXIuc2V0TW9kZWwob01vZGVsKTtcblx0fVxuXHQvKipcblx0ICogQ2hhbmdlcyB0aGUgVVJMIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBhcHAgc3RhdGUgYW5kIHN0b3JlcyB0aGUgYXBwIHN0YXRlIGZvciBsYXRlciByZXRyaWV2YWwuXG5cdCAqXG5cdCAqIEBwcml2YXRlXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKiBAcGFyYW0gbUlubmVyQXBwRGF0YSBPYmplY3QgY29udGFpbmluZyB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgYXBwXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gW2JJbW1lZGlhdGVIYXNoUmVwbGFjZT10cnVlXSBJZiBzZXQgdG8gZmFsc2UsIHRoZSBpbm5lciBhcHAgaGFzaCB3aWxsIG5vdCBiZSByZXBsYWNlZCB1bnRpbCBzdG9yaW5nIGlzIHN1Y2Nlc3NmdWw7IGRvIG5vdFxuXHQgKiAgICAgICAgc2V0IHRvIGZhbHNlIGlmIHlvdSBjYW5ub3QgcmVhY3QgdG8gdGhlIHJlc29sdXRpb24gb2YgdGhlIFByb21pc2UsIGZvciBleGFtcGxlLCB3aGVuIGNhbGxpbmcgdGhlIGJlZm9yZUxpbmtQcmVzc2VkIGV2ZW50XG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gW2JTa2lwSGFzaFJlcGxhY2U9ZmFsc2VdIElmIHNldCB0byB0cnVlLCB0aGUgaW5uZXIgYXBwIGhhc2ggd2lsbCBub3QgYmUgcmVwbGFjZWQgaW4gdGhlIHN0b3JlSW5uZXJBcHBTdGF0ZS4gQWxzbyB0aGUgYkltbWVkaWF0ZUhhc2hSZXBsYWNlXG5cdCAqIFx0XHQgIHdpbGwgYmUgaWdub3JlZC5cblx0ICogQHJldHVybnMgQSBQcm9taXNlIG9iamVjdCB0byBtb25pdG9yIHdoZW4gYWxsIHRoZSBhY3Rpb25zIG9mIHRoZSBmdW5jdGlvbiBoYXZlIGJlZW4gZXhlY3V0ZWQ7IGlmIHRoZSBleGVjdXRpb24gaXMgc3VjY2Vzc2Z1bCwgdGhlXG5cdCAqICAgICAgICAgIGFwcCBzdGF0ZSBrZXkgaXMgcmV0dXJuZWQ7IGlmIGFuIGVycm9yIG9jY3VycywgYW4gb2JqZWN0IG9mIHR5cGUge0BsaW5rIHNhcC5mZS5uYXZpZ2F0aW9uLk5hdkVycm9yfSBpc1xuXHQgKiAgICAgICAgICByZXR1cm5lZFxuXHQgKi9cblx0c3RvcmVJbm5lckFwcFN0YXRlKG1Jbm5lckFwcERhdGE6IGFueSwgYkltbWVkaWF0ZUhhc2hSZXBsYWNlPzogYm9vbGVhbiB8IHVuZGVmaW5lZCwgYlNraXBIYXNoUmVwbGFjZT86IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gdGhpcy5vTmF2SGFuZGxlci5zdG9yZUlubmVyQXBwU3RhdGUobUlubmVyQXBwRGF0YSwgYkltbWVkaWF0ZUhhc2hSZXBsYWNlLCBiU2tpcEhhc2hSZXBsYWNlKTtcblx0fVxuXHQvKipcblx0ICogQ2hhbmdlcyB0aGUgVVJMIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBhcHAgc3RhdGUgYW5kIHN0b3JlcyB0aGUgYXBwIHN0YXRlIGZvciBsYXRlciByZXRyaWV2YWwuXG5cdCAqXG5cdCAqIEBwcml2YXRlXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKiBAcGFyYW0gbUlubmVyQXBwRGF0YSBPYmplY3QgY29udGFpbmluZyB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgYXBwXG5cdCAqIEBwYXJhbSBbYkltbWVkaWF0ZUhhc2hSZXBsYWNlPWZhbHNlXSBJZiBzZXQgdG8gZmFsc2UsIHRoZSBpbm5lciBhcHAgaGFzaCB3aWxsIG5vdCBiZSByZXBsYWNlZCB1bnRpbCBzdG9yaW5nIGlzIHN1Y2Nlc3NmdWw7IGRvIG5vdFxuXHQgKiBAcmV0dXJucyBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgYXBwU3RhdGVJZCBhbmQgYSBwcm9taXNlIG9iamVjdCB0byBtb25pdG9yIHdoZW4gYWxsIHRoZSBhY3Rpb25zIG9mIHRoZSBmdW5jdGlvbiBoYXZlIGJlZW5cblx0ICogZXhlY3V0ZWQ7IFBsZWFzZSBub3RlIHRoYXQgdGhlIGFwcFN0YXRlS2V5IG1heSBiZSB1bmRlZmluZWQgb3IgZW1wdHkuXG5cdCAqL1xuXHRzdG9yZUlubmVyQXBwU3RhdGVXaXRoSW1tZWRpYXRlUmV0dXJuKG1Jbm5lckFwcERhdGE6IGFueSwgYkltbWVkaWF0ZUhhc2hSZXBsYWNlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIHRoaXMub05hdkhhbmRsZXIuc3RvcmVJbm5lckFwcFN0YXRlV2l0aEltbWVkaWF0ZVJldHVybihtSW5uZXJBcHBEYXRhLCBiSW1tZWRpYXRlSGFzaFJlcGxhY2UpO1xuXHR9XG5cdC8qKlxuXHQgKiBDaGFuZ2VzIHRoZSBVUkwgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IHNBcHBTdGF0ZUtleS4gQXMgYW4gcmVhY3Rpb24gcm91dGUgY2hhbmdlIGV2ZW50IHdpbGwgYmUgdHJpZ2dlcmVkLlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQHBhcmFtIHNBcHBTdGF0ZUtleSBUaGUgbmV3IGFwcCBzdGF0ZSBrZXkuXG5cdCAqL1xuXHRyZXBsYWNlSGFzaChzQXBwU3RhdGVLZXk6IHN0cmluZykge1xuXHRcdHRoaXMub05hdkhhbmRsZXIucmVwbGFjZUhhc2goc0FwcFN0YXRlS2V5KTtcblx0fVxuXHRyZXBsYWNlSW5uZXJBcHBTdGF0ZUtleShzQXBwSGFzaDogYW55LCBzQXBwU3RhdGVLZXk6IGFueSkge1xuXHRcdHJldHVybiB0aGlzLm9OYXZIYW5kbGVyLl9yZXBsYWNlSW5uZXJBcHBTdGF0ZUtleShzQXBwSGFzaCwgc0FwcFN0YXRlS2V5KTtcblx0fVxuXHQvKipcblx0ICogR2V0IHNpbmdsZSB2YWx1ZXMgZnJvbSBTZWxlY3Rpb25WYXJpYW50IGZvciB1cmwgcGFyYW1ldGVycy5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEBwYXJhbSBbdlNlbGVjdGlvblZhcmlhbnRdXG5cdCAqIEBwYXJhbSBbdlNlbGVjdGlvblZhcmlhbnQub1VybFBhcmFtYXRlcnNdXG5cdCAqIEByZXR1cm5zIFRoZSB1cmwgcGFyYW1ldGVyc1xuXHQgKi9cblx0Z2V0VXJsUGFyYW1ldGVyc0Zyb21TZWxlY3Rpb25WYXJpYW50KHZTZWxlY3Rpb25WYXJpYW50OiBzdHJpbmcgfCBvYmplY3QgfCB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gdGhpcy5vTmF2SGFuZGxlci5fZ2V0VVJMUGFyYW1ldGVyc0Zyb21TZWxlY3Rpb25WYXJpYW50KHZTZWxlY3Rpb25WYXJpYW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTYXZlIGFwcCBzdGF0ZSBhbmQgcmV0dXJuIGltbWVkaWF0ZWx5IHdpdGhvdXQgd2FpdGluZyBmb3IgcmVzcG9uc2UuXG5cdCAqXG5cdCAqIEBwcml2YXRlXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKiBAcGFyYW0gb0luU2VsZWN0aW9uVmFyaWFudCBJbnN0YW5jZSBvZiBzYXAuZmUubmF2aWdhdGlvbi5TZWxlY3Rpb25WYXJpYW50XG5cdCAqIEByZXR1cm5zIEFwcFN0YXRlIGtleVxuXHQgKi9cblx0c2F2ZUFwcFN0YXRlV2l0aEltbWVkaWF0ZVJldHVybihvSW5TZWxlY3Rpb25WYXJpYW50OiBTZWxlY3Rpb25WYXJpYW50KSB7XG5cdFx0aWYgKG9JblNlbGVjdGlvblZhcmlhbnQpIHtcblx0XHRcdGNvbnN0IHNTZWxlY3Rpb25WYXJpYW50ID0gb0luU2VsZWN0aW9uVmFyaWFudC50b0pTT05TdHJpbmcoKSwgLy8gY3JlYXRlIGFuIFNWIGZvciBhcHAgc3RhdGUgaW4gc3RyaW5nIGZvcm1hdFxuXHRcdFx0XHRvU2VsZWN0aW9uVmFyaWFudCA9IEpTT04ucGFyc2Uoc1NlbGVjdGlvblZhcmlhbnQpLCAvLyBjb252ZXJ0IHN0cmluZyBpbnRvIEpTT04gdG8gc3RvcmUgaW4gQXBwU3RhdGVcblx0XHRcdFx0b1hBcHBTdGF0ZU9iamVjdCA9IHtcblx0XHRcdFx0XHRzZWxlY3Rpb25WYXJpYW50OiBvU2VsZWN0aW9uVmFyaWFudFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRvUmV0dXJuID0gdGhpcy5vTmF2SGFuZGxlci5fc2F2ZUFwcFN0YXRlV2l0aEltbWVkaWF0ZVJldHVybihvWEFwcFN0YXRlT2JqZWN0KTtcblx0XHRcdHJldHVybiBvUmV0dXJuPy5hcHBTdGF0ZUtleSA/IG9SZXR1cm4uYXBwU3RhdGVLZXkgOiBcIlwiO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBNaXggQXR0cmlidXRlcyBhbmQgc2VsZWN0aW9uVmFyaWFudC5cblx0ICpcblx0ICogQHBhcmFtIHZTZW1hbnRpY0F0dHJpYnV0ZXMgT2JqZWN0LyhBcnJheSBvZiBPYmplY3RzKSBjb250YWluaW5nIGtleS92YWx1ZSBwYWlyc1xuXHQgKiBAcGFyYW0gc1NlbGVjdGlvblZhcmlhbnQgVGhlIHNlbGVjdGlvbiB2YXJpYW50IGluIHN0cmluZyBmb3JtYXQgYXMgcHJvdmlkZWQgYnkgdGhlIFNtYXJ0RmlsdGVyQmFyIGNvbnRyb2xcblx0ICogQHBhcmFtIFtpU3VwcHJlc3Npb25CZWhhdmlvcj1zYXAuZmUubmF2aWdhdGlvbi5TdXBwcmVzc2lvbkJlaGF2aW9yLnN0YW5kYXJkXSBJbmRpY2F0ZXMgd2hldGhlciBzZW1hbnRpY1xuXHQgKiAgICAgICAgYXR0cmlidXRlcyB3aXRoIHNwZWNpYWwgdmFsdWVzIChzZWUge0BsaW5rIHNhcC5mZS5uYXZpZ2F0aW9uLlN1cHByZXNzaW9uQmVoYXZpb3Igc3VwcHJlc3Npb24gYmVoYXZpb3J9KSBtdXN0IGJlXG5cdCAqICAgICAgICBzdXBwcmVzc2VkIGJlZm9yZSB0aGV5IGFyZSBjb21iaW5lZCB3aXRoIHRoZSBzZWxlY3Rpb24gdmFyaWFudDsgc2V2ZXJhbFxuXHQgKiAgICAgICAge0BsaW5rIHNhcC5mZS5uYXZpZ2F0aW9uLlN1cHByZXNzaW9uQmVoYXZpb3Igc3VwcHJlc3Npb24gYmVoYXZpb3JzfSBjYW4gYmUgY29tYmluZWQgd2l0aCB0aGUgYml0d2lzZSBPUiBvcGVyYXRvclxuXHQgKiAgICAgICAgKHwpXG5cdCAqIEByZXR1cm5zIEluc3RhbmNlIG9mIHtAbGluayBzYXAuZmUubmF2aWdhdGlvbi5TZWxlY3Rpb25WYXJpYW50fVxuXHQgKi9cblx0bWl4QXR0cmlidXRlc0FuZFNlbGVjdGlvblZhcmlhbnQoXG5cdFx0dlNlbWFudGljQXR0cmlidXRlczogb2JqZWN0IHwgYW55W10sXG5cdFx0c1NlbGVjdGlvblZhcmlhbnQ6IHN0cmluZyB8IFNlbGVjdGlvblZhcmlhbnQsXG5cdFx0aVN1cHByZXNzaW9uQmVoYXZpb3I/OiBudW1iZXJcblx0KSB7XG5cdFx0cmV0dXJuIHRoaXMub05hdkhhbmRsZXIubWl4QXR0cmlidXRlc0FuZFNlbGVjdGlvblZhcmlhbnQodlNlbWFudGljQXR0cmlidXRlcywgc1NlbGVjdGlvblZhcmlhbnQsIGlTdXBwcmVzc2lvbkJlaGF2aW9yKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGUgbWV0aG9kIGNyZWF0ZXMgYSBjb250ZXh0IHVybCBiYXNlZCBvbiBwcm92aWRlZCBkYXRhLiBUaGlzIGNvbnRleHQgdXJsIGNhbiBlaXRoZXIgYmUgdXNlZCBhcy5cblx0ICpcblx0ICogQHBhcmFtIHNFbnRpdHlTZXROYW1lIFVzZWQgZm9yIHVybCBkZXRlcm1pbmF0aW9uXG5cdCAqIEBwYXJhbSBbb01vZGVsXSBUaGUgT0RhdGFNb2RlbCB1c2VkIGZvciB1cmwgZGV0ZXJtaW5hdGlvbi4gSWYgb21pdHRlZCwgdGhlIE5hdmlnYXRpb25IYW5kbGVyIG1vZGVsIGlzIHVzZWQuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250ZXh0IHVybCBmb3IgdGhlIGdpdmVuIGVudGl0aWVzXG5cdCAqL1xuXHRjb25zdHJ1Y3RDb250ZXh0VXJsKHNFbnRpdHlTZXROYW1lOiBzdHJpbmcsIG9Nb2RlbDogYW55KSB7XG5cdFx0cmV0dXJuIHRoaXMub05hdkhhbmRsZXIuY29uc3RydWN0Q29udGV4dFVybChzRW50aXR5U2V0TmFtZSwgb01vZGVsKTtcblx0fVxuXHRnZXRJbnRlcmZhY2UoKSB7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cbn1cbmZ1bmN0aW9uIGZuR2V0RW1wdHlPYmplY3QoKSB7XG5cdHJldHVybiB7fTtcbn1cblxuZnVuY3Rpb24gZm5HZXRQcm9taXNlKCkge1xuXHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9KTtcbn1cblxuZnVuY3Rpb24gZm5HZXRKUXVlcnlQcm9taXNlKCkge1xuXHRjb25zdCBvTXlEZWZmZXJlZCA9IGpRdWVyeS5EZWZlcnJlZCgpO1xuXHRvTXlEZWZmZXJlZC5yZXNvbHZlKHt9LCB7fSwgXCJpbml0aWFsXCIpO1xuXHRyZXR1cm4gb015RGVmZmVyZWQucHJvbWlzZSgpO1xufVxuXG5mdW5jdGlvbiBmbkdldEVtcHR5U3RyaW5nKCkge1xuXHRyZXR1cm4gXCJcIjtcbn1cbmV4cG9ydCBjbGFzcyBOYXZpZ2F0aW9uU2VydmljZXNNb2NrIHtcblx0aW5pdFByb21pc2U6IFByb21pc2U8YW55Pjtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0dGhpcy5pbml0UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh0aGlzKTtcblx0fVxuXG5cdGdldEludGVyZmFjZSgpIHtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8vIHJldHVybiBlbXB0eSBvYmplY3Rcblx0Y3JlYXRlRW1wdHlBcHBTdGF0ZSA9IGZuR2V0RW1wdHlPYmplY3Q7XG5cdHN0b3JlSW5uZXJBcHBTdGF0ZVdpdGhJbW1lZGlhdGVSZXR1cm4gPSBmbkdldEVtcHR5T2JqZWN0O1xuXHRtaXhBdHRyaWJ1dGVzQW5kU2VsZWN0aW9uVmFyaWFudCA9IGZuR2V0RW1wdHlPYmplY3Q7XG5cblx0Ly8gcmV0dXJuIHByb21pc2Vcblx0Z2V0QXBwU3RhdGUgPSBmbkdldFByb21pc2U7XG5cdGdldFN0YXJ0dXBBcHBTdGF0ZSA9IGZuR2V0UHJvbWlzZTtcblx0cGFyc2VOYXZpZ2F0aW9uID0gZm5HZXRKUXVlcnlQcm9taXNlO1xuXG5cdC8vIHJldHVybiBlbXB0eSBzdHJpbmdcblx0Y29uc3RydWN0Q29udGV4dFVybCA9IGZuR2V0RW1wdHlTdHJpbmc7XG5cblx0cmVwbGFjZUlubmVyQXBwU3RhdGVLZXkoc0FwcEhhc2g6IGFueSkge1xuXHRcdHJldHVybiBzQXBwSGFzaCA/IHNBcHBIYXNoIDogXCJcIjtcblx0fVxuXG5cdG5hdmlnYXRlKCkge1xuXHRcdC8vIERvbid0IGRvIGFueXRoaW5nXG5cdH1cbn1cblxuY2xhc3MgTmF2aWdhdGlvblNlcnZpY2VGYWN0b3J5IGV4dGVuZHMgU2VydmljZUZhY3Rvcnk8TmF2aWdhdGlvblNlcnZpY2VTZXR0aW5ncz4ge1xuXHRjcmVhdGVJbnN0YW5jZShvU2VydmljZUNvbnRleHQ6IFNlcnZpY2VDb250ZXh0PE5hdmlnYXRpb25TZXJ2aWNlU2V0dGluZ3M+KSB7XG5cdFx0Y29uc3Qgb05hdmlnYXRpb25TZXJ2aWNlID1cblx0XHRcdHNhcC51c2hlbGwgJiYgc2FwLnVzaGVsbC5Db250YWluZXIgPyBuZXcgTmF2aWdhdGlvblNlcnZpY2Uob1NlcnZpY2VDb250ZXh0KSA6IG5ldyBOYXZpZ2F0aW9uU2VydmljZXNNb2NrKCk7XG5cdFx0Ly8gV2FpdCBGb3IgaW5pdFxuXHRcdHJldHVybiBvTmF2aWdhdGlvblNlcnZpY2UuaW5pdFByb21pc2UudGhlbihmdW5jdGlvbiAob1NlcnZpY2U6IGFueSkge1xuXHRcdFx0cmV0dXJuIG9TZXJ2aWNlO1xuXHRcdH0pO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE5hdmlnYXRpb25TZXJ2aWNlRmFjdG9yeTtcbiJdfQ==
@@ -1,8 +1,8 @@
1
1
  import { NavigationHandler } from "sap/fe/navigation";
2
- import SelectionVariant from "sap/fe/navigation/SelectionVariant";
2
+ import type SelectionVariant from "sap/fe/navigation/SelectionVariant";
3
3
  import Service from "sap/ui/core/service/Service";
4
4
  import ServiceFactory from "sap/ui/core/service/ServiceFactory";
5
- import { ServiceContext } from "types/extension_types";
5
+ import type { ServiceContext } from "types/extension_types";
6
6
 
7
7
  type NavigationServiceSettings = {};
8
8
  export class NavigationService extends Service<NavigationServiceSettings> {
@@ -22,27 +22,28 @@ export class NavigationService extends Service<NavigationServiceSettings> {
22
22
 
23
23
  /**
24
24
  * Triggers a cross-app navigation after saving the inner and the cross-app states.
25
+ *
25
26
  * @private
26
27
  * @ui5-restricted
27
- * @param {string} sSemanticObject Semantic object of the target app
28
- * @param {string} sActionName Action of the target app
29
- * @param {object | string } [vNavigationParameters] Navigation parameters as an object with key/value pairs or as a string representation of
28
+ * @param sSemanticObject Semantic object of the target app
29
+ * @param sActionName Action of the target app
30
+ * @param [vNavigationParameters] Navigation parameters as an object with key/value pairs or as a string representation of
30
31
  * such an object. If passed as an object, the properties are not checked against the <code>IsPotentialSensitive</code> or
31
32
  * <code>Measure</code> type.
32
- * @param {object} [oInnerAppData] Object for storing current state of the app
33
- * @param {Function} [fnOnError] Callback that is called if an error occurs during navigation <br>
34
- * @param {object} [oExternalAppData] Object for storing the state which will be forwarded to the target component.
35
- * @param {string} [sNavMode] Argument is used to overwrite the FLP-configured target for opening a URL. If used, only the
33
+ * @param [oInnerAppData] Object for storing current state of the app
34
+ * @param [fnOnError] Callback that is called if an error occurs during navigation <br>
35
+ * @param [oExternalAppData] Object for storing the state which will be forwarded to the target component.
36
+ * @param [sNavMode] Argument is used to overwrite the FLP-configured target for opening a URL. If used, only the
36
37
  * <code>explace</code> or <code>inplace</code> values are allowed. Any other value will lead to an exception
37
38
  * <code>NavigationHandler.INVALID_NAV_MODE</code>.
38
- **/
39
+ */
39
40
  navigate(
40
41
  sSemanticObject: string,
41
42
  sActionName: string,
42
43
  vNavigationParameters?: string | object,
43
44
  oInnerAppData?: object,
44
45
  fnOnError?: Function,
45
- oExternalAppData?: object,
46
+ oExternalAppData?: any,
46
47
  sNavMode?: string
47
48
  ) {
48
49
  // TODO: Navigation Handler does not handle navigation without a context
@@ -60,23 +61,24 @@ export class NavigationService extends Service<NavigationServiceSettings> {
60
61
  }
61
62
  /**
62
63
  * Parses the incoming URL and returns a Promise.
63
- * @returns {object} A Promise object which returns the
64
+ *
65
+ * @returns A Promise object which returns the
64
66
  * extracted app state, the startup parameters, and the type of navigation when execution is successful,
65
67
  * @private
66
68
  * @ui5-restricted
67
- **/
69
+ */
68
70
  parseNavigation() {
69
71
  return this.oNavHandler.parseNavigation();
70
72
  }
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
@@ -87,8 +89,9 @@ export class NavigationService extends Service<NavigationServiceSettings> {
87
89
 
88
90
  /**
89
91
  * Processes selectionVariant string and returns a Promise object (semanticAttributes and AppStateKey).
90
- * @param {string} sSelectionVariant Stringified JSON object
91
- * @returns {object} A Promise object to monitor when all actions of the function have been executed; if the execution is successful, the
92
+ *
93
+ * @param sSelectionVariant Stringified JSON object
94
+ * @returns A Promise object to monitor when all actions of the function have been executed; if the execution is successful, the
92
95
  * semanticAttributes as well as the appStateKey are returned; if an error occurs, an error object of type
93
96
  * {@link sap.fe.navigation.NavError} is returned
94
97
  * <br>
@@ -120,7 +123,8 @@ export class NavigationService extends Service<NavigationServiceSettings> {
120
123
 
121
124
  /**
122
125
  * Gets the application specific technical parameters.
123
- * @returns {Array} Containing the technical parameters.
126
+ *
127
+ * @returns Containing the technical parameters.
124
128
  * @private
125
129
  * @ui5-restricted
126
130
  */
@@ -131,7 +135,8 @@ export class NavigationService extends Service<NavigationServiceSettings> {
131
135
  * Sets the application specific technical parameters. Technical parameters will not be added to the selection variant passed to the
132
136
  * application.
133
137
  * As a default sap-system, sap-ushell-defaultedParameterNames and hcpApplicationId are considered as technical parameters.
134
- * @param {Array} aTechnicalParameters List of parameter names to be considered as technical parameters. <code>null</code> or
138
+ *
139
+ * @param aTechnicalParameters List of parameter names to be considered as technical parameters. <code>null</code> or
135
140
  * <code>undefined</code> may be used to reset the complete list.
136
141
  * @private
137
142
  * @ui5-restricted
@@ -142,44 +147,50 @@ export class NavigationService extends Service<NavigationServiceSettings> {
142
147
  /**
143
148
  * 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
144
149
  * verification of sensitive information.
150
+ *
145
151
  * @private
146
152
  * @ui5-restricted
147
- * @param {sap.ui.model.odata.v2.ODataModel} oModel Model For checking sensitive information
153
+ * @param oModel Model For checking sensitive information
148
154
  */
149
155
  setModel(oModel: any) {
150
156
  this.oNavHandler.setModel(oModel);
151
157
  }
152
158
  /**
153
159
  * Changes the URL according to the current app state and stores the app state for later retrieval.
160
+ *
154
161
  * @private
155
162
  * @ui5-restricted
156
- * @param {object} mInnerAppData Object containing the current state of the app
157
- * @returns {object} A Promise object to monitor when all the actions of the function have been executed; if the execution is successful, the
163
+ * @param mInnerAppData Object containing the current state of the app
164
+ * @param {boolean} [bImmediateHashReplace=true] If set to false, the inner app hash will not be replaced until storing is successful; do not
165
+ * set to false if you cannot react to the resolution of the Promise, for example, when calling the beforeLinkPressed event
166
+ * @param {boolean} [bSkipHashReplace=false] If set to true, the inner app hash will not be replaced in the storeInnerAppState. Also the bImmediateHashReplace
167
+ * will be ignored.
168
+ * @returns A Promise object to monitor when all the actions of the function have been executed; if the execution is successful, the
158
169
  * app state key is returned; if an error occurs, an object of type {@link sap.fe.navigation.NavError} is
159
170
  * returned
160
- **/
161
- storeInnerAppState(mInnerAppData: object) {
162
- return this.oNavHandler.storeInnerAppState(mInnerAppData);
171
+ */
172
+ storeInnerAppState(mInnerAppData: any, bImmediateHashReplace?: boolean | undefined, bSkipHashReplace?: boolean | undefined) {
173
+ return this.oNavHandler.storeInnerAppState(mInnerAppData, bImmediateHashReplace, bSkipHashReplace);
163
174
  }
164
175
  /**
165
- * Changes the URL according to the current app state and stores the app state for later retrieval.
166
- * @private
167
- * @ui5-restricted
168
- * @param {object} mInnerAppData Object containing the current state of the app
169
- * @param {boolean} [bImmediateHashReplace=false] If set to false, the inner app hash will not be replaced until storing is successful; do not
170
- * @param bNotLegacy
171
-
172
- * @returns {object} An object containing the appStateId and a promise object to monitor when all the actions of the function have been
173
- * executed; Please note that the appStateKey may be undefined or empty.
174
- */
175
- storeInnerAppStateWithImmediateReturn(mInnerAppData: object, bImmediateHashReplace: boolean | undefined, bNotLegacy: any) {
176
- return this.oNavHandler.storeInnerAppStateWithImmediateReturn(mInnerAppData, bImmediateHashReplace, bNotLegacy);
176
+ * Changes the URL according to the current app state and stores the app state for later retrieval.
177
+ *
178
+ * @private
179
+ * @ui5-restricted
180
+ * @param mInnerAppData Object containing the current state of the app
181
+ * @param [bImmediateHashReplace=false] If set to false, the inner app hash will not be replaced until storing is successful; do not
182
+ * @returns An object containing the appStateId and a promise object to monitor when all the actions of the function have been
183
+ * executed; Please note that the appStateKey may be undefined or empty.
184
+ */
185
+ storeInnerAppStateWithImmediateReturn(mInnerAppData: any, bImmediateHashReplace: boolean | undefined) {
186
+ return this.oNavHandler.storeInnerAppStateWithImmediateReturn(mInnerAppData, bImmediateHashReplace);
177
187
  }
178
188
  /**
179
189
  * Changes the URL according to the current sAppStateKey. As an reaction route change event will be triggered.
190
+ *
180
191
  * @private
181
192
  * @ui5-restricted
182
- * @param {string} sAppStateKey The new app state key.
193
+ * @param sAppStateKey The new app state key.
183
194
  */
184
195
  replaceHash(sAppStateKey: string) {
185
196
  this.oNavHandler.replaceHash(sAppStateKey);
@@ -192,9 +203,9 @@ export class NavigationService extends Service<NavigationServiceSettings> {
192
203
  *
193
204
  * @private
194
205
  * @ui5-restricted
195
- * @param {object | string } [vSelectionVariant]
196
- * @param {object} [vSelectionVariant.oUrlParamaters]
197
- * @returns {pbject}
206
+ * @param [vSelectionVariant]
207
+ * @param [vSelectionVariant.oUrlParamaters]
208
+ * @returns The url parameters
198
209
  */
199
210
  getUrlParametersFromSelectionVariant(vSelectionVariant: string | object | undefined) {
200
211
  return this.oNavHandler._getURLParametersFromSelectionVariant(vSelectionVariant);
@@ -205,8 +216,8 @@ export class NavigationService extends Service<NavigationServiceSettings> {
205
216
  *
206
217
  * @private
207
218
  * @ui5-restricted
208
- * @param {object} oInSelectionVariant Instance of sap.fe.navigation.SelectionVariant
209
- * @returns {string} AppState key
219
+ * @param oInSelectionVariant Instance of sap.fe.navigation.SelectionVariant
220
+ * @returns AppState key
210
221
  */
211
222
  saveAppStateWithImmediateReturn(oInSelectionVariant: SelectionVariant) {
212
223
  if (oInSelectionVariant) {
@@ -216,21 +227,21 @@ export class NavigationService extends Service<NavigationServiceSettings> {
216
227
  selectionVariant: oSelectionVariant
217
228
  },
218
229
  oReturn = this.oNavHandler._saveAppStateWithImmediateReturn(oXAppStateObject);
219
- return oReturn.appStateKey ? oReturn.appStateKey : "";
230
+ return oReturn?.appStateKey ? oReturn.appStateKey : "";
220
231
  }
221
232
  }
222
233
 
223
234
  /**
224
235
  * Mix Attributes and selectionVariant.
225
236
  *
226
- * @param {object|Array} vSemanticAttributes Object/(Array of Objects) containing key/value pairs
227
- * @param {string} sSelectionVariant The selection variant in string format as provided by the SmartFilterBar control
228
- * @param {int} [iSuppressionBehavior=sap.fe.navigation.SuppressionBehavior.standard] Indicates whether semantic
237
+ * @param vSemanticAttributes Object/(Array of Objects) containing key/value pairs
238
+ * @param sSelectionVariant The selection variant in string format as provided by the SmartFilterBar control
239
+ * @param [iSuppressionBehavior=sap.fe.navigation.SuppressionBehavior.standard] Indicates whether semantic
229
240
  * attributes with special values (see {@link sap.fe.navigation.SuppressionBehavior suppression behavior}) must be
230
241
  * suppressed before they are combined with the selection variant; several
231
242
  * {@link sap.fe.navigation.SuppressionBehavior suppression behaviors} can be combined with the bitwise OR operator
232
243
  * (|)
233
- * @returns {object} Instance of {@link sap.fe.navigation.SelectionVariant}
244
+ * @returns Instance of {@link sap.fe.navigation.SelectionVariant}
234
245
  */
235
246
  mixAttributesAndSelectionVariant(
236
247
  vSemanticAttributes: object | any[],
@@ -243,9 +254,9 @@ export class NavigationService extends Service<NavigationServiceSettings> {
243
254
  /**
244
255
  * The method creates a context url based on provided data. This context url can either be used as.
245
256
  *
246
- * @param {string} sEntitySetName Used for url determination
257
+ * @param sEntitySetName Used for url determination
247
258
  * @param [oModel] The ODataModel used for url determination. If omitted, the NavigationHandler model is used.
248
- * @returns {string} The context url for the given entities
259
+ * @returns The context url for the given entities
249
260
  */
250
261
  constructContextUrl(sEntitySetName: string, oModel: any) {
251
262
  return this.oNavHandler.constructContextUrl(sEntitySetName, oModel);