@sapui5/sap.fe.core 1.102.0 → 1.103.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (311) hide show
  1. package/package.json +5 -5
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AppComponent.js +62 -26
  4. package/src/sap/fe/core/AppComponent.ts +56 -40
  5. package/src/sap/fe/core/AppStateHandler.js +10 -10
  6. package/src/sap/fe/core/AppStateHandler.ts +9 -9
  7. package/src/sap/fe/core/BaseController.js +11 -9
  8. package/src/sap/fe/core/BaseController.ts +15 -13
  9. package/src/sap/fe/core/CommonUtils.js +236 -109
  10. package/src/sap/fe/core/CommonUtils.ts +252 -136
  11. package/src/sap/fe/core/ExtensionAPI.js +24 -27
  12. package/src/sap/fe/core/ExtensionAPI.ts +36 -38
  13. package/src/sap/fe/core/PageController.js +4 -4
  14. package/src/sap/fe/core/PageController.ts +4 -5
  15. package/src/sap/fe/core/TemplateComponent.js +1 -1
  16. package/src/sap/fe/core/TemplateComponent.ts +6 -6
  17. package/src/sap/fe/core/TemplateModel.js +1 -1
  18. package/src/sap/fe/core/TemplateModel.ts +1 -1
  19. package/src/sap/fe/core/buildingBlocks/AttributeModel.js +1 -1
  20. package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +1 -1
  21. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +8 -8
  22. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +11 -10
  23. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +27 -27
  24. package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +28 -26
  25. package/src/sap/fe/core/controllerextensions/EditFlow.js +129 -118
  26. package/src/sap/fe/core/controllerextensions/EditFlow.ts +154 -141
  27. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +9 -9
  28. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +10 -10
  29. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +31 -26
  30. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +34 -35
  31. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +70 -70
  32. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +77 -77
  33. package/src/sap/fe/core/controllerextensions/InternalRouting.js +84 -78
  34. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +105 -101
  35. package/src/sap/fe/core/controllerextensions/KPIManagement.js +66 -68
  36. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +106 -123
  37. package/src/sap/fe/core/controllerextensions/MassEdit.js +8 -8
  38. package/src/sap/fe/core/controllerextensions/MassEdit.ts +19 -26
  39. package/src/sap/fe/core/controllerextensions/MessageHandler.js +20 -12
  40. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +29 -14
  41. package/src/sap/fe/core/controllerextensions/PageReady.js +97 -25
  42. package/src/sap/fe/core/controllerextensions/PageReady.ts +94 -34
  43. package/src/sap/fe/core/controllerextensions/Paginator.js +21 -22
  44. package/src/sap/fe/core/controllerextensions/Paginator.ts +24 -25
  45. package/src/sap/fe/core/controllerextensions/Placeholder.js +4 -6
  46. package/src/sap/fe/core/controllerextensions/Placeholder.ts +12 -14
  47. package/src/sap/fe/core/controllerextensions/Routing.js +10 -11
  48. package/src/sap/fe/core/controllerextensions/Routing.ts +12 -13
  49. package/src/sap/fe/core/controllerextensions/Share.js +22 -22
  50. package/src/sap/fe/core/controllerextensions/Share.ts +30 -29
  51. package/src/sap/fe/core/controllerextensions/SideEffects.js +46 -50
  52. package/src/sap/fe/core/controllerextensions/SideEffects.ts +56 -60
  53. package/src/sap/fe/core/controllerextensions/ViewState.js +65 -62
  54. package/src/sap/fe/core/controllerextensions/ViewState.ts +68 -63
  55. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +5 -5
  56. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +8 -7
  57. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +6 -6
  58. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +12 -17
  59. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +2 -2
  60. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +4 -4
  61. package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +7 -9
  62. package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +18 -19
  63. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +184 -137
  64. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +253 -206
  65. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +113 -121
  66. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +148 -158
  67. package/src/sap/fe/core/controllerextensions/editFlow/operations.js +198 -148
  68. package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +223 -159
  69. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +24 -26
  70. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +35 -33
  71. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +78 -44
  72. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +90 -60
  73. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +52 -55
  74. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +55 -58
  75. package/src/sap/fe/core/controls/Any.js +9 -5
  76. package/src/sap/fe/core/controls/Any.ts +10 -4
  77. package/src/sap/fe/core/controls/CommandExecution.js +11 -25
  78. package/src/sap/fe/core/controls/CommandExecution.ts +11 -25
  79. package/src/sap/fe/core/controls/ConditionalWrapper.js +2 -2
  80. package/src/sap/fe/core/controls/ConditionalWrapper.ts +3 -3
  81. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +22 -22
  82. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +25 -24
  83. package/src/sap/fe/core/controls/CustomQuickViewPage.js +2 -2
  84. package/src/sap/fe/core/controls/CustomQuickViewPage.ts +2 -2
  85. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +3 -3
  86. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +5 -5
  87. package/src/sap/fe/core/controls/FieldWrapper.js +2 -2
  88. package/src/sap/fe/core/controls/FieldWrapper.ts +3 -3
  89. package/src/sap/fe/core/controls/FileWrapper.js +2 -2
  90. package/src/sap/fe/core/controls/FileWrapper.ts +11 -11
  91. package/src/sap/fe/core/controls/FilterBar.js +6 -2
  92. package/src/sap/fe/core/controls/FilterBar.ts +13 -9
  93. package/src/sap/fe/core/controls/FormElementWrapper.js +1 -1
  94. package/src/sap/fe/core/controls/FormElementWrapper.ts +2 -2
  95. package/src/sap/fe/core/controls/MassEditSelect.js +1 -1
  96. package/src/sap/fe/core/controls/MassEditSelect.ts +0 -4
  97. package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +3 -3
  98. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +16 -12
  99. package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +20 -22
  100. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +3 -3
  101. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +8 -8
  102. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +47 -47
  103. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +52 -52
  104. package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +8 -2
  105. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +89 -88
  106. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +107 -106
  107. package/src/sap/fe/core/converters/ConverterContext.js +26 -33
  108. package/src/sap/fe/core/converters/ConverterContext.ts +51 -60
  109. package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  110. package/src/sap/fe/core/converters/ManifestSettings.ts +14 -14
  111. package/src/sap/fe/core/converters/ManifestWrapper.js +59 -45
  112. package/src/sap/fe/core/converters/ManifestWrapper.ts +55 -45
  113. package/src/sap/fe/core/converters/MetaModelConverter.js +50 -32
  114. package/src/sap/fe/core/converters/MetaModelConverter.ts +145 -127
  115. package/src/sap/fe/core/converters/TemplateConverter.js +21 -20
  116. package/src/sap/fe/core/converters/TemplateConverter.ts +27 -24
  117. package/src/sap/fe/core/converters/annotations/DataField.js +54 -34
  118. package/src/sap/fe/core/converters/annotations/DataField.ts +97 -75
  119. package/src/sap/fe/core/converters/common/AnnotationConverter.js +1911 -1495
  120. package/src/sap/fe/core/converters/controls/Common/Action.js +50 -41
  121. package/src/sap/fe/core/converters/controls/Common/Action.ts +56 -46
  122. package/src/sap/fe/core/converters/controls/Common/Chart.js +14 -14
  123. package/src/sap/fe/core/converters/controls/Common/Chart.ts +23 -26
  124. package/src/sap/fe/core/converters/controls/Common/Criticality.js +3 -3
  125. package/src/sap/fe/core/converters/controls/Common/Criticality.ts +4 -4
  126. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +28 -28
  127. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +40 -36
  128. package/src/sap/fe/core/converters/controls/Common/Form.js +25 -27
  129. package/src/sap/fe/core/converters/controls/Common/Form.ts +37 -45
  130. package/src/sap/fe/core/converters/controls/Common/KPI.js +11 -11
  131. package/src/sap/fe/core/converters/controls/Common/KPI.ts +35 -39
  132. package/src/sap/fe/core/converters/controls/Common/Table.js +174 -183
  133. package/src/sap/fe/core/converters/controls/Common/Table.ts +237 -250
  134. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +119 -119
  135. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +144 -141
  136. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +45 -41
  137. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +64 -57
  138. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +28 -26
  139. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +46 -43
  140. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +9 -9
  141. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +14 -13
  142. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +67 -64
  143. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +69 -66
  144. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +73 -72
  145. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +98 -96
  146. package/src/sap/fe/core/converters/helpers/Aggregation.js +2 -4
  147. package/src/sap/fe/core/converters/helpers/Aggregation.ts +10 -13
  148. package/src/sap/fe/core/converters/helpers/BindingHelper.js +31 -31
  149. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +30 -29
  150. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +4 -4
  151. package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +9 -9
  152. package/src/sap/fe/core/converters/helpers/ID.js +46 -46
  153. package/src/sap/fe/core/converters/helpers/ID.ts +25 -25
  154. package/src/sap/fe/core/converters/helpers/Key.js +7 -7
  155. package/src/sap/fe/core/converters/helpers/Key.ts +7 -7
  156. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
  157. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +4 -4
  158. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +6 -6
  159. package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +10 -10
  160. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +46 -62
  161. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +54 -82
  162. package/src/sap/fe/core/converters/templates/ListReportConverter.js +30 -29
  163. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +40 -40
  164. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +39 -38
  165. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +52 -61
  166. package/src/sap/fe/core/designtime/AppComponent.designtime.js +4 -4
  167. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +4 -4
  168. package/src/sap/fe/core/formatters/CollaborationFormatter.js +2 -2
  169. package/src/sap/fe/core/formatters/CollaborationFormatter.ts +3 -3
  170. package/src/sap/fe/core/formatters/FPMFormatter.js +5 -5
  171. package/src/sap/fe/core/formatters/FPMFormatter.ts +10 -10
  172. package/src/sap/fe/core/formatters/KPIFormatter.js +7 -7
  173. package/src/sap/fe/core/formatters/KPIFormatter.ts +10 -10
  174. package/src/sap/fe/core/formatters/StandardFormatter.js +89 -0
  175. package/src/sap/fe/core/formatters/StandardFormatter.ts +64 -0
  176. package/src/sap/fe/core/formatters/TableFormatter.js +11 -11
  177. package/src/sap/fe/core/formatters/TableFormatter.ts +12 -12
  178. package/src/sap/fe/core/formatters/ValueFormatter.js +8 -8
  179. package/src/sap/fe/core/formatters/ValueFormatter.ts +9 -9
  180. package/src/sap/fe/core/helpers/AppStartupHelper.js +15 -15
  181. package/src/sap/fe/core/helpers/AppStartupHelper.ts +37 -40
  182. package/src/sap/fe/core/helpers/BindingToolkit.js +1809 -0
  183. package/src/sap/fe/core/helpers/{BindingExpression.ts → BindingToolkit.ts} +365 -264
  184. package/src/sap/fe/core/helpers/ClassSupport.js +20 -11
  185. package/src/sap/fe/core/helpers/ClassSupport.ts +14 -10
  186. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +2 -2
  187. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -1
  188. package/src/sap/fe/core/helpers/EditState.js +1 -6
  189. package/src/sap/fe/core/helpers/EditState.ts +5 -10
  190. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +2 -2
  191. package/src/sap/fe/core/helpers/ExcelFormatHelper.ts +4 -4
  192. package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
  193. package/src/sap/fe/core/helpers/FPMHelper.ts +2 -2
  194. package/src/sap/fe/core/helpers/KeepAliveHelper.js +31 -31
  195. package/src/sap/fe/core/helpers/KeepAliveHelper.ts +52 -56
  196. package/src/sap/fe/core/helpers/MassEditHelper.js +281 -254
  197. package/src/sap/fe/core/helpers/MassEditHelper.ts +337 -289
  198. package/src/sap/fe/core/helpers/ModelHelper.js +25 -25
  199. package/src/sap/fe/core/helpers/ModelHelper.ts +34 -32
  200. package/src/sap/fe/core/helpers/PasteHelper.js +3 -10
  201. package/src/sap/fe/core/helpers/PasteHelper.ts +20 -25
  202. package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
  203. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +11 -11
  204. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +3 -3
  205. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +8 -8
  206. package/src/sap/fe/core/helpers/StableIdHelper.js +12 -12
  207. package/src/sap/fe/core/helpers/StableIdHelper.ts +12 -12
  208. package/src/sap/fe/core/jsx-runtime/jsx.js +1 -1
  209. package/src/sap/fe/core/jsx-runtime/jsx.ts +8 -8
  210. package/src/sap/fe/core/library.js +42 -3
  211. package/src/sap/fe/core/library.ts +38 -0
  212. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +3 -3
  213. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +2 -2
  214. package/src/sap/fe/core/messagebundle.properties +49 -35
  215. package/src/sap/fe/core/messagebundle_ar.properties +13 -5
  216. package/src/sap/fe/core/messagebundle_bg.properties +13 -5
  217. package/src/sap/fe/core/messagebundle_ca.properties +13 -5
  218. package/src/sap/fe/core/messagebundle_cs.properties +13 -5
  219. package/src/sap/fe/core/messagebundle_cy.properties +14 -6
  220. package/src/sap/fe/core/messagebundle_da.properties +13 -5
  221. package/src/sap/fe/core/messagebundle_de.properties +15 -7
  222. package/src/sap/fe/core/messagebundle_el.properties +14 -6
  223. package/src/sap/fe/core/messagebundle_en.properties +9 -1
  224. package/src/sap/fe/core/messagebundle_en_GB.properties +11 -3
  225. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +7 -1
  226. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +9 -1
  227. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +44 -85
  228. package/src/sap/fe/core/messagebundle_es.properties +13 -5
  229. package/src/sap/fe/core/messagebundle_es_MX.properties +13 -5
  230. package/src/sap/fe/core/messagebundle_et.properties +13 -5
  231. package/src/sap/fe/core/messagebundle_fi.properties +14 -6
  232. package/src/sap/fe/core/messagebundle_fr.properties +14 -6
  233. package/src/sap/fe/core/messagebundle_fr_CA.properties +14 -6
  234. package/src/sap/fe/core/messagebundle_hi.properties +14 -6
  235. package/src/sap/fe/core/messagebundle_hr.properties +14 -6
  236. package/src/sap/fe/core/messagebundle_hu.properties +13 -5
  237. package/src/sap/fe/core/messagebundle_id.properties +13 -5
  238. package/src/sap/fe/core/messagebundle_it.properties +33 -25
  239. package/src/sap/fe/core/messagebundle_iw.properties +13 -5
  240. package/src/sap/fe/core/messagebundle_ja.properties +14 -6
  241. package/src/sap/fe/core/messagebundle_kk.properties +13 -5
  242. package/src/sap/fe/core/messagebundle_ko.properties +13 -5
  243. package/src/sap/fe/core/messagebundle_lt.properties +13 -5
  244. package/src/sap/fe/core/messagebundle_lv.properties +14 -6
  245. package/src/sap/fe/core/messagebundle_ms.properties +13 -5
  246. package/src/sap/fe/core/messagebundle_nl.properties +13 -5
  247. package/src/sap/fe/core/messagebundle_no.properties +13 -5
  248. package/src/sap/fe/core/messagebundle_pl.properties +13 -5
  249. package/src/sap/fe/core/messagebundle_pt.properties +13 -5
  250. package/src/sap/fe/core/messagebundle_pt_PT.properties +14 -6
  251. package/src/sap/fe/core/messagebundle_ro.properties +13 -5
  252. package/src/sap/fe/core/messagebundle_ru.properties +13 -5
  253. package/src/sap/fe/core/messagebundle_sh.properties +13 -5
  254. package/src/sap/fe/core/messagebundle_sk.properties +13 -5
  255. package/src/sap/fe/core/messagebundle_sl.properties +17 -9
  256. package/src/sap/fe/core/messagebundle_sv.properties +14 -6
  257. package/src/sap/fe/core/messagebundle_th.properties +13 -5
  258. package/src/sap/fe/core/messagebundle_tr.properties +13 -5
  259. package/src/sap/fe/core/messagebundle_uk.properties +13 -5
  260. package/src/sap/fe/core/messagebundle_vi.properties +13 -5
  261. package/src/sap/fe/core/messagebundle_zh_CN.properties +14 -6
  262. package/src/sap/fe/core/messagebundle_zh_TW.properties +13 -5
  263. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +2 -2
  264. package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +5 -5
  265. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +2 -2
  266. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +14 -14
  267. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -1
  268. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +3 -2
  269. package/src/sap/fe/core/services/NavigationServiceFactory.js +53 -44
  270. package/src/sap/fe/core/services/NavigationServiceFactory.ts +54 -46
  271. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +2 -2
  272. package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +4 -4
  273. package/src/sap/fe/core/services/RoutingServiceFactory.js +55 -55
  274. package/src/sap/fe/core/services/RoutingServiceFactory.ts +67 -65
  275. package/src/sap/fe/core/services/ShellServicesFactory.js +72 -76
  276. package/src/sap/fe/core/services/ShellServicesFactory.ts +76 -82
  277. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +61 -61
  278. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +102 -92
  279. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +20 -15
  280. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +26 -21
  281. package/src/sap/fe/core/support/CommonHelper.js +3 -2
  282. package/src/sap/fe/core/support/CommonHelper.ts +9 -13
  283. package/src/sap/fe/core/support/Diagnostics.js +1 -1
  284. package/src/sap/fe/core/support/Diagnostics.ts +5 -5
  285. package/src/sap/fe/core/templating/CommonFormatters.js +84 -0
  286. package/src/sap/fe/core/templating/CommonFormatters.ts +86 -0
  287. package/src/sap/fe/core/templating/CriticalityFormatters.js +31 -31
  288. package/src/sap/fe/core/templating/CriticalityFormatters.ts +42 -40
  289. package/src/sap/fe/core/templating/DataFieldFormatters.js +8 -8
  290. package/src/sap/fe/core/templating/DataFieldFormatters.ts +13 -10
  291. package/src/sap/fe/core/templating/DataModelPathHelper.js +16 -15
  292. package/src/sap/fe/core/templating/DataModelPathHelper.ts +42 -32
  293. package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
  294. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +2 -3
  295. package/src/sap/fe/core/templating/EntitySetHelper.js +7 -7
  296. package/src/sap/fe/core/templating/EntitySetHelper.ts +6 -8
  297. package/src/sap/fe/core/templating/FieldControlHelper.js +35 -34
  298. package/src/sap/fe/core/templating/FieldControlHelper.ts +29 -46
  299. package/src/sap/fe/core/templating/FilterHelper.js +10 -9
  300. package/src/sap/fe/core/templating/FilterHelper.ts +13 -13
  301. package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
  302. package/src/sap/fe/core/templating/FilterTemplating.ts +3 -3
  303. package/src/sap/fe/core/templating/PropertyFormatters.js +7 -7
  304. package/src/sap/fe/core/templating/PropertyFormatters.ts +21 -19
  305. package/src/sap/fe/core/templating/PropertyHelper.js +25 -25
  306. package/src/sap/fe/core/templating/PropertyHelper.ts +25 -26
  307. package/src/sap/fe/core/templating/UIFormatters.js +148 -93
  308. package/src/sap/fe/core/templating/UIFormatters.ts +196 -124
  309. package/src/sap/fe/core/type/Email.js +2 -2
  310. package/src/sap/fe/core/type/Email.ts +2 -2
  311. package/src/sap/fe/core/helpers/BindingExpression.js +0 -1732
@@ -2,16 +2,16 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2021 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/PropertyHelper"], function (BindingExpression, PropertyHelper) {
5
+ sap.ui.define(["sap/fe/core/helpers/BindingToolkit", "sap/fe/core/templating/PropertyHelper"], function (BindingToolkit, PropertyHelper) {
6
6
  "use strict";
7
7
 
8
8
  var _exports = {};
9
9
  var isPathExpression = PropertyHelper.isPathExpression;
10
10
  var isAnnotationPathExpression = PropertyHelper.isAnnotationPathExpression;
11
- var unresolveableExpression = BindingExpression.unresolveableExpression;
12
- var equal = BindingExpression.equal;
13
- var constant = BindingExpression.constant;
14
- var annotationExpression = BindingExpression.annotationExpression;
11
+ var unresolveableExpression = BindingToolkit.unresolveableExpression;
12
+ var getExpressionFromAnnotation = BindingToolkit.getExpressionFromAnnotation;
13
+ var equal = BindingToolkit.equal;
14
+ var constant = BindingToolkit.constant;
15
15
 
16
16
  var getPathRelativeLocation = function (contextPath) {
17
17
  var visitedNavProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
@@ -98,9 +98,10 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
98
98
  var currentEntityType = dataModelObjectPath.targetEntityType;
99
99
  var navigationProperties = dataModelObjectPath.navigationProperties.concat(); // Process only if we have to go through navigation properties
100
100
 
101
- aPathSplit.reduce(function (reducedEntityType, pathPart) {
101
+ var reducedEntityType = dataModelObjectPath.targetEntityType;
102
+ aPathSplit.forEach(function (pathPart) {
102
103
  if (!reducedEntityType) {
103
- return undefined;
104
+ return;
104
105
  }
105
106
 
106
107
  var potentialNavProp = reducedEntityType.navigationProperties.find(function (navProp) {
@@ -115,11 +116,11 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
115
116
  currentEntitySet = currentEntitySet.navigationPropertyBinding[pathPart];
116
117
  }
117
118
 
118
- return currentEntityType;
119
+ reducedEntityType = currentEntityType;
120
+ } else {
121
+ reducedEntityType = undefined;
119
122
  }
120
-
121
- return undefined;
122
- }, dataModelObjectPath.targetEntityType);
123
+ });
123
124
  return {
124
125
  startingEntitySet: dataModelObjectPath.startingEntitySet,
125
126
  navigationProperties: navigationProperties,
@@ -369,7 +370,7 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
369
370
  });
370
371
  var pathVisitorFunction = extractionParametersOnPath !== null && extractionParametersOnPath !== void 0 && extractionParametersOnPath.pathVisitor ? getPathVisitorForSingleton(extractionParametersOnPath.pathVisitor, pathRelativeLocation) : undefined; // send pathVisitor function only when it is defined and only send function or defined as a parameter
371
372
 
372
- restrictions = equal(annotationExpression(restrictionDefinition, pathRelativeLocation, undefined, pathVisitorFunction), true);
373
+ restrictions = equal(getExpressionFromAnnotation(restrictionDefinition, pathRelativeLocation, undefined, pathVisitorFunction), true);
373
374
  }
374
375
  }
375
376
  });
@@ -393,14 +394,14 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
393
394
  return np.name;
394
395
  });
395
396
  var pathVisitorFunction = extractionParametersOnPath !== null && extractionParametersOnPath !== void 0 && extractionParametersOnPath.pathVisitor ? getPathVisitorForSingleton(extractionParametersOnPath.pathVisitor, pathRelativeLocation) : undefined;
396
- targetRestrictions = equal(annotationExpression(restrictionDefinition, pathRelativeLocation, undefined, pathVisitorFunction), true);
397
+ targetRestrictions = equal(getExpressionFromAnnotation(restrictionDefinition, pathRelativeLocation, undefined, pathVisitorFunction), true);
397
398
  }
398
399
  }
399
400
 
400
401
  return restrictions || targetRestrictions || (extractionParametersOnPath !== null && extractionParametersOnPath !== void 0 && extractionParametersOnPath.authorizeUnresolvable ? unresolveableExpression : constant(true));
401
402
  }; // This helper method is used to add relative path location argument to singletonPathVisitorFunction i.e. pathVisitor
402
403
  // pathVisitor method is used later to get the correct bindings for singleton entity
403
- // method is invoked later in bindingExpression() method to get the correct binding.
404
+ // method is invoked later in pathInModel() method to get the correct binding.
404
405
 
405
406
 
406
407
  _exports.checkOnPath = checkOnPath;
@@ -413,4 +414,4 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
413
414
 
414
415
  return _exports;
415
416
  }, false);
416
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRhdGFNb2RlbFBhdGhIZWxwZXIudHMiXSwibmFtZXMiOlsiZ2V0UGF0aFJlbGF0aXZlTG9jYXRpb24iLCJjb250ZXh0UGF0aCIsInZpc2l0ZWROYXZQcm9wcyIsImxlbmd0aCIsIm5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwicmVtYWluaW5nTmF2UHJvcHMiLCJmb3JFYWNoIiwibmF2UHJvcCIsIm5hdkluZGV4IiwicHVzaCIsImNvbmNhdCIsInNsaWNlIiwiY3VycmVudElkeCIsImN1cnJlbnROYXYiLCJuZXh0TmF2UHJvcCIsInBhcnRuZXIiLCJuYW1lIiwic3BsaWNlIiwiZXh0cmFOYXZQcm9wIiwibWFwIiwidGFyZ2V0VHlwZSIsImZpbmQiLCJucCIsImVuaGFuY2VEYXRhTW9kZWxQYXRoIiwiZGF0YU1vZGVsT2JqZWN0UGF0aCIsInByb3BlcnR5UGF0aCIsInNQcm9wZXJ0eVBhdGgiLCJpc1BhdGhFeHByZXNzaW9uIiwiaXNBbm5vdGF0aW9uUGF0aEV4cHJlc3Npb24iLCJwYXRoIiwib1RhcmdldCIsIiR0YXJnZXQiLCJ0YXJnZXRFbnRpdHlUeXBlIiwicmVzb2x2ZVBhdGgiLCJ0YXJnZXRPYmplY3QiLCJhUGF0aFNwbGl0Iiwic3BsaXQiLCJjdXJyZW50RW50aXR5U2V0IiwidGFyZ2V0RW50aXR5U2V0IiwiY3VycmVudEVudGl0eVR5cGUiLCJyZWR1Y2UiLCJyZWR1Y2VkRW50aXR5VHlwZSIsInBhdGhQYXJ0IiwidW5kZWZpbmVkIiwicG90ZW50aWFsTmF2UHJvcCIsIm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmciLCJoYXNPd25Qcm9wZXJ0eSIsInN0YXJ0aW5nRW50aXR5U2V0IiwiY29udGV4dExvY2F0aW9uIiwiY29udmVydGVkVHlwZXMiLCJnZXRUYXJnZXRFbnRpdHlTZXRQYXRoIiwidGFyZ2V0RW50aXR5U2V0UGF0aCIsIm5hdmlnYXRlZFBhdGhzIiwiam9pbiIsImdldFRhcmdldE9iamVjdFBhdGgiLCJiUmVsYXRpdmUiLCJfdHlwZSIsImVuZHNXaXRoIiwidGVybSIsImdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgiLCJmb3JCaW5kaW5nRXhwcmVzc2lvbiIsIm5hdlByb3BlcnRpZXMiLCJpc0NvbGxlY3Rpb24iLCJ0eXBlIiwidmFsdWUiLCJxdWFsaWZpZXIiLCJpc1BhdGhVcGRhdGFibGUiLCJleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aCIsImNoZWNrT25QYXRoIiwiYW5ub3RhdGlvbk9iamVjdCIsIlVwZGF0ZVJlc3RyaWN0aW9ucyIsIlVwZGF0YWJsZSIsImlzUGF0aFNlYXJjaGFibGUiLCJTZWFyY2hSZXN0cmljdGlvbnMiLCJTZWFyY2hhYmxlIiwiaXNQYXRoRGVsZXRhYmxlIiwiRGVsZXRlUmVzdHJpY3Rpb25zIiwiRGVsZXRhYmxlIiwiaXNQYXRoSW5zZXJ0YWJsZSIsIkluc2VydFJlc3RyaWN0aW9ucyIsIkluc2VydGFibGUiLCJjaGVja0ZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMiLCJhbGxvd2VkRXhwcmVzc2lvbiIsImZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMiLCJGaWx0ZXJSZXN0cmljdGlvbnMiLCJGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zIiwiY3VycmVudE9iamVjdFJlc3RyaWN0aW9uIiwicmVzdHJpY3Rpb24iLCJQcm9wZXJ0eSIsImluZGV4T2YiLCJBbGxvd2VkRXhwcmVzc2lvbnMiLCJ0b1N0cmluZyIsImNoZWNrRnVuY3Rpb24iLCJjb25zdGFudCIsInBhcmVudEVudGl0eVNldCIsInZpc2l0ZWROYXZpZ2F0aW9uUHJvcHNOYW1lIiwiYWxsVmlzaXRlZE5hdmlnYXRpb25Qcm9wcyIsInJlc2V0VmlzaXRlZE5hdlByb3BzIiwibmF2aWdhdGlvblByb3BlcnR5IiwiY29udGFpbnNUYXJnZXQiLCJmdWxsTmF2aWdhdGlvblBhdGgiLCJyZXN0cmljdGlvbnMiLCJfcGFyZW50RW50aXR5U2V0IiwiYW5ub3RhdGlvbnMiLCJDYXBhYmlsaXRpZXMiLCJOYXZpZ2F0aW9uUmVzdHJpY3Rpb25zIiwiUmVzdHJpY3RlZFByb3BlcnRpZXMiLCJyZXN0cmljdGVkTmF2UHJvcCIsIk5hdmlnYXRpb25Qcm9wZXJ0eSIsInJlc3RyaWN0aW9uRGVmaW5pdGlvbiIsIl9hbGxWaXNpdGVkTmF2aWdhdGlvblByb3BzIiwicGF0aFJlbGF0aXZlTG9jYXRpb24iLCJwYXRoVmlzaXRvckZ1bmN0aW9uIiwicGF0aFZpc2l0b3IiLCJnZXRQYXRoVmlzaXRvckZvclNpbmdsZXRvbiIsImVxdWFsIiwiYW5ub3RhdGlvbkV4cHJlc3Npb24iLCJ0YXJnZXRSZXN0cmljdGlvbnMiLCJpZ25vcmVUYXJnZXRDb2xsZWN0aW9uIiwiYXV0aG9yaXplVW5yZXNvbHZhYmxlIiwidW5yZXNvbHZlYWJsZUV4cHJlc3Npb24iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQThCTyxNQUFNQSx1QkFBdUIsR0FBRyxVQUN0Q0MsV0FEc0MsRUFHZjtBQUFBLFFBRHZCQyxlQUN1Qix1RUFEaUIsRUFDakI7O0FBQ3ZCLFFBQUksQ0FBQ0QsV0FBTCxFQUFrQjtBQUNqQixhQUFPQyxlQUFQO0FBQ0EsS0FGRCxNQUVPLElBQUlBLGVBQWUsQ0FBQ0MsTUFBaEIsSUFBMEJGLFdBQVcsQ0FBQ0csb0JBQVosQ0FBaUNELE1BQS9ELEVBQXVFO0FBQzdFLFVBQUlFLGlCQUF1QyxHQUFHLEVBQTlDO0FBQ0FKLE1BQUFBLFdBQVcsQ0FBQ0csb0JBQVosQ0FBaUNFLE9BQWpDLENBQXlDLFVBQUNDLE9BQUQsRUFBVUMsUUFBVixFQUF1QjtBQUMvRCxZQUFJTixlQUFlLENBQUNNLFFBQUQsQ0FBZixLQUE4QkQsT0FBbEMsRUFBMkM7QUFDMUNGLFVBQUFBLGlCQUFpQixDQUFDSSxJQUFsQixDQUF1QlAsZUFBZSxDQUFDTSxRQUFELENBQXRDO0FBQ0E7QUFDRCxPQUpEO0FBS0FILE1BQUFBLGlCQUFpQixHQUFHQSxpQkFBaUIsQ0FBQ0ssTUFBbEIsQ0FBeUJSLGVBQWUsQ0FBQ1MsS0FBaEIsQ0FBc0JWLFdBQVcsQ0FBQ0cs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QUFoQixLQUF1Q2xELDBCQUEwQixTQUExQixJQUFBQSwwQkFBMEIsV0FBMUIsSUFBQUEsMEJBQTBCLENBQUVvRCxxQkFBNUIsR0FBb0RDLHVCQUFwRCxHQUE4RTNCLFFBQVEsQ0FBQyxJQUFELENBQTdILENBREQ7QUFHQSxHQXJHTSxDLENBc0dQO0FBQ0E7QUFDQTs7Ozs7QUFDQSxNQUFNcUIsMEJBQTBCLEdBQUcsVUFBVUQsV0FBVixFQUFpQ0Ysb0JBQWpDLEVBQWlFO0FBQ25HLFdBQU8sVUFBVWxGLElBQVYsRUFBd0I7QUFDOUIsYUFBT29GLFdBQVcsQ0FBQ3BGLElBQUQsRUFBT2tGLG9CQUFQLENBQWxCO0FBQ0EsS0FGRDtBQUdBLEdBSkQiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnZlcnRlck91dHB1dCwgRW50aXR5U2V0LCBFbnRpdHlUeXBlLCBOYXZpZ2F0aW9uUHJvcGVydHksIFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvYW5ub3RhdGlvbi1jb252ZXJ0ZXJcIjtcbmltcG9ydCB7IFByb3BlcnR5UGF0aCB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHsgTmF2aWdhdGlvblByb3BlcnR5UmVzdHJpY3Rpb25UeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy9kaXN0L2dlbmVyYXRlZC9DYXBhYmlsaXRpZXNcIjtcbmltcG9ydCB7XG5cdEVudGl0eVNldEFubm90YXRpb25zX0NhcGFiaWxpdGllcyxcblx0RW50aXR5VHlwZUFubm90YXRpb25zX0NhcGFiaWxpdGllc1xufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvZGlzdC9nZW5lcmF0ZWQvQ2FwYWJpbGl0aWVzX0VkbVwiO1xuaW1wb3J0IHtcblx0RmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9uVHlwZVR5cGVzLFxuXHROYXZpZ2F0aW9uUHJvcGVydHlSZXN0cmljdGlvblxufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdHlwZXMvZ2VuZXJhdGVkL0NhcGFiaWxpdGllc1wiO1xuaW1wb3J0IHsgYW5ub3RhdGlvbkV4cHJlc3Npb24sIGNvbnN0YW50LCBlcXVhbCwgRXhwcmVzc2lvbiwgdW5yZXNvbHZlYWJsZUV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nRXhwcmVzc2lvblwiO1xuaW1wb3J0IHsgUHJvcGVydHlPclBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EaXNwbGF5TW9kZUZvcm1hdHRlclwiO1xuaW1wb3J0IHsgaXNBbm5vdGF0aW9uUGF0aEV4cHJlc3Npb24sIGlzUGF0aEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Qcm9wZXJ0eUhlbHBlclwiO1xuXG5leHBvcnQgdHlwZSBEYXRhTW9kZWxPYmplY3RQYXRoID0ge1xuXHRzdGFydGluZ0VudGl0eVNldDogRW50aXR5U2V0O1xuXHRjb250ZXh0TG9jYXRpb24/OiBEYXRhTW9kZWxPYmplY3RQYXRoO1xuXHRuYXZpZ2F0aW9uUHJvcGVydGllczogTmF2aWdhdGlvblByb3BlcnR5W107XG5cdHRhcmdldEVudGl0eVNldD86IEVudGl0eVNldDtcblx0dGFyZ2V0RW50aXR5VHlwZTogRW50aXR5VHlwZTtcblx0dGFyZ2V0T2JqZWN0OiBhbnk7XG5cdGNvbnZlcnRlZFR5cGVzOiBDb252ZXJ0ZXJPdXRwdXQ7XG59O1xuXG50eXBlIEV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoID0ge1xuXHRwcm9wZXJ0eVBhdGg/OiBQcm9wZXJ0eU9yUGF0aDxQcm9wZXJ0eT47XG5cdHBhdGhWaXNpdG9yPzogRnVuY3Rpb247XG5cdGlnbm9yZVRhcmdldENvbGxlY3Rpb24/OiBib29sZWFuO1xuXHRhdXRob3JpemVVbnJlc29sdmFibGU/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFBhdGhSZWxhdGl2ZUxvY2F0aW9uID0gZnVuY3Rpb24gKFxuXHRjb250ZXh0UGF0aD86IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdHZpc2l0ZWROYXZQcm9wczogTmF2aWdhdGlvblByb3BlcnR5W10gPSBbXVxuKTogTmF2aWdhdGlvblByb3BlcnR5W10ge1xuXHRpZiAoIWNvbnRleHRQYXRoKSB7XG5cdFx0cmV0dXJuIHZpc2l0ZWROYXZQcm9wcztcblx0fSBlbHNlIGlmICh2aXNpdGVkTmF2UHJvcHMubGVuZ3RoID49IGNvbnRleHRQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmxlbmd0aCkge1xuXHRcdGxldCByZW1haW5pbmdOYXZQcm9wczogTmF2aWdhdGlvblByb3BlcnR5W10gPSBbXTtcblx0XHRjb250ZXh0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5mb3JFYWNoKChuYXZQcm9wLCBuYXZJbmRleCkgPT4ge1xuXHRcdFx0aWYgKHZpc2l0ZWROYXZQcm9wc1tuYXZJbmRleF0gIT09IG5hdlByb3ApIHtcblx0XHRcdFx0cmVtYWluaW5nTmF2UHJvcHMucHVzaCh2aXNpdGVkTmF2UHJvcHNbbmF2SW5kZXhdKTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRyZW1haW5pbmdOYXZQcm9wcyA9IHJlbWFpbmluZ05hdlByb3BzLmNvbmNhdCh2aXNpdGVkTmF2UHJvcHMuc2xpY2UoY29udGV4dFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMubGVuZ3RoKSk7XG5cdFx0Ly8gQ2xlYW4gdXAgTmF2UHJvcCAtPiBPd25lclxuXHRcdGxldCBjdXJyZW50SWR4ID0gMDtcblx0XHR3aGlsZSAocmVtYWluaW5nTmF2UHJvcHMubGVuZ3RoID4gMSAmJiBjdXJyZW50SWR4ICE9IHJlbWFpbmluZ05hdlByb3BzLmxlbmd0aCAtIDEpIHtcblx0XHRcdGNvbnN0IGN1cnJlbnROYXYgPSByZW1haW5pbmdOYXZQcm9wc1tjdXJyZW50SWR4XTtcblx0XHRcdGNvbnN0IG5leHROYXZQcm9wID0gcmVtYWluaW5nTmF2UHJvcHNbY3VycmVudElkeCArIDFdO1xuXHRcdFx0aWYgKGN1cnJlbnROYXYucGFydG5lciA9PT0gbmV4dE5hdlByb3AubmFtZSkge1xuXHRcdFx0XHRyZW1haW5pbmdOYXZQcm9wcy5zcGxpY2UoMCwgMik7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjdXJyZW50SWR4Kys7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiByZW1haW5pbmdOYXZQcm9wcztcblx0fSBlbHNlIHtcblx0XHRsZXQgZXh0cmFOYXZQcm9wOiBOYXZpZ2F0aW9uUHJvcGVydHlbXSA9IFtdO1xuXHRcdHZpc2l0ZWROYXZQcm9wcy5mb3JFYWNoKChuYXZQcm9wLCBuYXZJbmRleCkgPT4ge1xuXHRcdFx0aWYgKGNvbnRleHRQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzW25hdkluZGV4XSAhPT0gbmF2UHJvcCkge1xuXHRcdFx0XHRleHRyYU5hdlByb3AucHVzaCh2aXNpdGVkTmF2UHJvcHNbbmF2SW5kZXhdKTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRleHRyYU5hdlByb3AgPSBleHRyYU5hdlByb3AuY29uY2F0KGNvbnRleHRQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLnNsaWNlKHZpc2l0ZWROYXZQcm9wcy5sZW5ndGgpKTtcblx0XHQvLyBDbGVhbiB1cCBOYXZQcm9wIC0+IE93bmVyXG5cdFx0bGV0IGN1cnJlbnRJZHggPSAwO1xuXHRcdHdoaWxlIChleHRyYU5hdlByb3AubGVuZ3RoID4gMSAmJiBjdXJyZW50SWR4ICE9IGV4dHJhTmF2UHJvcC5sZW5ndGggLSAxKSB7XG5cdFx0XHRjb25zdCBjdXJyZW50TmF2ID0gZXh0cmFOYXZQcm9wW2N1cnJlbnRJZHhdO1xuXHRcdFx0Y29uc3QgbmV4dE5hdlByb3AgPSBleHRyYU5hdlByb3BbY3VycmVudElkeCArIDFdO1xuXHRcdFx0aWYgKGN1cnJlbnROYXYucGFydG5lciA9PT0gbmV4dE5hdlByb3AubmFtZSkge1xuXHRcdFx0XHRleHRyYU5hdlByb3Auc3BsaWNlKDAsIDIpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y3VycmVudElkeCsrO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRleHRyYU5hdlByb3AgPSBleHRyYU5hdlByb3AubWFwKChuYXZQcm9wKSA9PiB7XG5cdFx0XHRyZXR1cm4gbmF2UHJvcC50YXJnZXRUeXBlLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmZpbmQoKG5wKSA9PiBucC5uYW1lID09PSBuYXZQcm9wLnBhcnRuZXIpIGFzIE5hdmlnYXRpb25Qcm9wZXJ0eTtcblx0XHR9KTtcblx0XHRyZXR1cm4gZXh0cmFOYXZQcm9wO1xuXHR9XG59O1xuXG5leHBvcnQgY29uc3QgZW5oYW5jZURhdGFNb2RlbFBhdGggPSBmdW5jdGlvbiAoXG5cdGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdHByb3BlcnR5UGF0aD86IFByb3BlcnR5T3JQYXRoPFByb3BlcnR5PlxuKTogRGF0YU1vZGVsT2JqZWN0UGF0aCB7XG5cdGxldCBzUHJvcGVydHlQYXRoOiBzdHJpbmcgPSBcIlwiO1xuXHRpZiAoKGlzUGF0aEV4cHJlc3Npb24ocHJvcGVydHlQYXRoKSB8fCBpc0Fubm90YXRpb25QYXRoRXhwcmVzc2lvbihwcm9wZXJ0eVBhdGgpKSAmJiBwcm9wZXJ0eVBhdGgucGF0aCkge1xuXHRcdHNQcm9wZXJ0eVBhdGggPSBwcm9wZXJ0eVBhdGgucGF0aDtcblx0fSBlbHNlIGlmICh0eXBlb2YgcHJvcGVydHlQYXRoID09PSBcInN0cmluZ1wiKSB7XG5cdFx0c1Byb3BlcnR5UGF0aCA9IHByb3BlcnR5UGF0aCBhcyBzdHJpbmc7XG5cdH1cblx0bGV0IG9UYXJnZXQ7XG5cdGlmIChpc1BhdGhFeHByZXNzaW9uKHByb3BlcnR5UGF0aCkgfHwgaXNBbm5vdGF0aW9uUGF0aEV4cHJlc3Npb24ocHJvcGVydHlQYXRoKSkge1xuXHRcdG9UYXJnZXQgPSBwcm9wZXJ0eVBhdGguJHRhcmdldDtcblx0fSBlbHNlIGlmIChkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldEVudGl0eVR5cGUpIHtcblx0XHRvVGFyZ2V0ID0gZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRFbnRpdHlUeXBlLnJlc29sdmVQYXRoKHNQcm9wZXJ0eVBhdGgpO1xuXHR9IGVsc2Uge1xuXHRcdG9UYXJnZXQgPSBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdDtcblx0fVxuXHRjb25zdCBhUGF0aFNwbGl0ID0gc1Byb3BlcnR5UGF0aC5zcGxpdChcIi9cIik7XG5cdGxldCBjdXJyZW50RW50aXR5U2V0ID0gZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRFbnRpdHlTZXQ7XG5cdGxldCBjdXJyZW50RW50aXR5VHlwZSA9IGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0RW50aXR5VHlwZTtcblx0Y29uc3QgbmF2aWdhdGlvblByb3BlcnRpZXMgPSBkYXRhTW9kZWxPYmplY3RQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmNvbmNhdCgpO1xuXHQvLyBQcm9jZXNzIG9ubHkgaWYgd2UgaGF2ZSB0byBnbyB0aHJvdWdoIG5hdmlnYXRpb24gcHJvcGVydGllc1xuXG5cdGFQYXRoU3BsaXQucmVkdWNlKChyZWR1Y2VkRW50aXR5VHlwZTogRW50aXR5VHlwZSB8IHVuZGVmaW5lZCwgcGF0aFBhcnQ6IHN0cmluZykgPT4ge1xuXHRcdGlmICghcmVkdWNlZEVudGl0eVR5cGUpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGNvbnN0IHBvdGVudGlhbE5hdlByb3AgPSByZWR1Y2VkRW50aXR5VHlwZS5uYXZpZ2F0aW9uUHJvcGVydGllcy5maW5kKChuYXZQcm9wKSA9PiBuYXZQcm9wLm5hbWUgPT09IHBhdGhQYXJ0KTtcblx0XHRpZiAocG90ZW50aWFsTmF2UHJvcCkge1xuXHRcdFx0bmF2aWdhdGlvblByb3BlcnRpZXMucHVzaChwb3RlbnRpYWxOYXZQcm9wKTtcblx0XHRcdGN1cnJlbnRFbnRpdHlUeXBlID0gcG90ZW50aWFsTmF2UHJvcC50YXJnZXRUeXBlO1xuXHRcdFx0aWYgKGN1cnJlbnRFbnRpdHlTZXQgJiYgY3VycmVudEVudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nLmhhc093blByb3BlcnR5KHBhdGhQYXJ0KSkge1xuXHRcdFx0XHRjdXJyZW50RW50aXR5U2V0ID0gY3VycmVudEVudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nW3BhdGhQYXJ0XTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBjdXJyZW50RW50aXR5VHlwZTtcblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fSwgZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRFbnRpdHlUeXBlKTtcblxuXHRyZXR1cm4ge1xuXHRcdHN0YXJ0aW5nRW50aXR5U2V0OiBkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0LFxuXHRcdG5hdmlnYXRpb25Qcm9wZXJ0aWVzOiBuYXZpZ2F0aW9uUHJvcGVydGllcyxcblx0XHRjb250ZXh0TG9jYXRpb246IGRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uLFxuXHRcdHRhcmdldEVudGl0eVNldDogY3VycmVudEVudGl0eVNldCxcblx0XHR0YXJnZXRFbnRpdHlUeXBlOiBjdXJyZW50RW50aXR5VHlwZSxcblx0XHR0YXJnZXRPYmplY3Q6IG9UYXJnZXQsXG5cdFx0Y29udmVydGVkVHlwZXM6IGRhdGFNb2RlbE9iamVjdFBhdGguY29udmVydGVkVHlwZXNcblx0fTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUYXJnZXRFbnRpdHlTZXRQYXRoID0gZnVuY3Rpb24gKGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgpOiBzdHJpbmcge1xuXHRsZXQgdGFyZ2V0RW50aXR5U2V0UGF0aDogc3RyaW5nID0gYC8ke2RhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQubmFtZX1gO1xuXHRsZXQgY3VycmVudEVudGl0eVNldCA9IGRhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQ7XG5cdGxldCBuYXZpZ2F0ZWRQYXRoczogc3RyaW5nW10gPSBbXTtcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5mb3JFYWNoKChuYXZQcm9wKSA9PiB7XG5cdFx0bmF2aWdhdGVkUGF0aHMucHVzaChuYXZQcm9wLm5hbWUpO1xuXHRcdGlmIChjdXJyZW50RW50aXR5U2V0ICYmIGN1cnJlbnRFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZy5oYXNPd25Qcm9wZXJ0eShuYXZpZ2F0ZWRQYXRocy5qb2luKFwiL1wiKSkpIHtcblx0XHRcdHRhcmdldEVudGl0eVNldFBhdGggKz0gYC8kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZy8ke25hdmlnYXRlZFBhdGhzLmpvaW4oXCIvXCIpfS8kYDtcblx0XHRcdGN1cnJlbnRFbnRpdHlTZXQgPSBjdXJyZW50RW50aXR5U2V0Lm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdbbmF2aWdhdGVkUGF0aHMuam9pbihcIi9cIildO1xuXHRcdFx0bmF2aWdhdGVkUGF0aHMgPSBbXTtcblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gdGFyZ2V0RW50aXR5U2V0UGF0aDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUYXJnZXRPYmplY3RQYXRoID0gZnVuY3Rpb24gKGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsIGJSZWxhdGl2ZTogYm9vbGVhbiA9IGZhbHNlKTogc3RyaW5nIHtcblx0bGV0IHBhdGggPSBcIlwiO1xuXHRpZiAoIWRhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQpIHtcblx0XHRyZXR1cm4gXCIvXCI7XG5cdH1cblx0aWYgKCFiUmVsYXRpdmUpIHtcblx0XHRwYXRoICs9IGAvJHtkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0Lm5hbWV9YDtcblx0fVxuXHRpZiAoZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5sZW5ndGggPiAwKSB7XG5cdFx0aWYgKHBhdGgubGVuZ3RoID4gMCkge1xuXHRcdFx0cGF0aCArPSBcIi9cIjtcblx0XHR9XG5cdFx0cGF0aCArPSBkYXRhTW9kZWxPYmplY3RQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLm1hcCgobmF2UHJvcCkgPT4gbmF2UHJvcC5uYW1lKS5qb2luKFwiL1wiKTtcblx0fVxuXG5cdGlmIChcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCAmJlxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Lm5hbWUgJiZcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5fdHlwZSAhPT0gXCJOYXZpZ2F0aW9uUHJvcGVydHlcIiAmJlxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Ll90eXBlICE9PSBcIkVudGl0eVR5cGVcIiAmJlxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0ICE9PSBkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0XG5cdCkge1xuXHRcdGlmICghcGF0aC5lbmRzV2l0aChcIi9cIikpIHtcblx0XHRcdHBhdGggKz0gXCIvXCI7XG5cdFx0fVxuXHRcdHBhdGggKz0gYCR7ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QubmFtZX1gO1xuXHR9IGVsc2UgaWYgKGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0ICYmIGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Lmhhc093blByb3BlcnR5KFwidGVybVwiKSkge1xuXHRcdGlmIChwYXRoLmxlbmd0aCA+IDAgJiYgIXBhdGguZW5kc1dpdGgoXCIvXCIpKSB7XG5cdFx0XHRwYXRoICs9IFwiL1wiO1xuXHRcdH1cblx0XHRwYXRoICs9IGBAJHtkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC50ZXJtfWA7XG5cdH1cblx0cmV0dXJuIHBhdGg7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCA9IGZ1bmN0aW9uIChcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0Zm9yQmluZGluZ0V4cHJlc3Npb246IGJvb2xlYW4gPSBmYWxzZVxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgbmF2UHJvcGVydGllcyA9IGdldFBhdGhSZWxhdGl2ZUxvY2F0aW9uKGRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uLCBkYXRhTW9kZWxPYmplY3RQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzKTtcblx0aWYgKGZvckJpbmRpbmdFeHByZXNzaW9uKSB7XG5cdFx0aWYgKG5hdlByb3BlcnRpZXMuZmluZCgobnApID0+IG5wLmlzQ29sbGVjdGlvbikpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHR9XG5cdGxldCBwYXRoID0gbmF2UHJvcGVydGllcy5tYXAoKG5wKSA9PiBucC5uYW1lKS5qb2luKFwiL1wiKTtcblx0aWYgKFxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0ICYmXG5cdFx0KGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Lm5hbWUgfHxcblx0XHRcdChkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC50eXBlID09PSBcIlByb3BlcnR5UGF0aFwiICYmIGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LnZhbHVlKSkgJiZcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5fdHlwZSAhPT0gXCJOYXZpZ2F0aW9uUHJvcGVydHlcIiAmJlxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0ICE9PSBkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0XG5cdCkge1xuXHRcdGlmIChwYXRoLmxlbmd0aCA+IDAgJiYgIXBhdGguZW5kc1dpdGgoXCIvXCIpKSB7XG5cdFx0XHRwYXRoICs9IFwiL1wiO1xuXHRcdH1cblx0XHRwYXRoICs9XG5cdFx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC50eXBlID09PSBcIlByb3BlcnR5UGF0aFwiXG5cdFx0XHRcdD8gYCR7ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QudmFsdWV9YFxuXHRcdFx0XHQ6IGAke2RhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Lm5hbWV9YDtcblx0fSBlbHNlIGlmIChkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCAmJiBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5oYXNPd25Qcm9wZXJ0eShcInRlcm1cIikpIHtcblx0XHRpZiAocGF0aC5sZW5ndGggPiAwICYmICFwYXRoLmVuZHNXaXRoKFwiL1wiKSkge1xuXHRcdFx0cGF0aCArPSBcIi9cIjtcblx0XHR9XG5cdFx0cGF0aCArPSBgQCR7ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QudGVybX1gO1xuXHRcdGlmIChkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5oYXNPd25Qcm9wZXJ0eShcInF1YWxpZmllclwiKSAmJiAhIWRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LnF1YWxpZmllcikge1xuXHRcdFx0cGF0aCArPSBgIyR7ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QucXVhbGlmaWVyfWA7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKCFkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCkge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblx0cmV0dXJuIHBhdGg7XG59O1xuXG5leHBvcnQgY29uc3QgaXNQYXRoVXBkYXRhYmxlID0gZnVuY3Rpb24gKFxuXHRkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoIHwgdW5kZWZpbmVkLFxuXHRleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aD86IEV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoXG4pOiBFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0cmV0dXJuIGNoZWNrT25QYXRoKFxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0KGFubm90YXRpb25PYmplY3Q6IE5hdmlnYXRpb25Qcm9wZXJ0eVJlc3RyaWN0aW9uIHwgRW50aXR5U2V0QW5ub3RhdGlvbnNfQ2FwYWJpbGl0aWVzKSA9PiB7XG5cdFx0XHRyZXR1cm4gYW5ub3RhdGlvbk9iamVjdD8uVXBkYXRlUmVzdHJpY3Rpb25zPy5VcGRhdGFibGU7XG5cdFx0fSxcblx0XHRleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aFxuXHQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzUGF0aFNlYXJjaGFibGUgPSBmdW5jdGlvbiAoXG5cdGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGggfCB1bmRlZmluZWQsXG5cdGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoPzogRXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGhcbik6IEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRyZXR1cm4gY2hlY2tPblBhdGgoXG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0XHQoYW5ub3RhdGlvbk9iamVjdDogTmF2aWdhdGlvblByb3BlcnR5UmVzdHJpY3Rpb24gfCBFbnRpdHlTZXRBbm5vdGF0aW9uc19DYXBhYmlsaXRpZXMpID0+IHtcblx0XHRcdHJldHVybiBhbm5vdGF0aW9uT2JqZWN0Py5TZWFyY2hSZXN0cmljdGlvbnM/LlNlYXJjaGFibGU7XG5cdFx0fSxcblx0XHRleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aFxuXHQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzUGF0aERlbGV0YWJsZSA9IGZ1bmN0aW9uIChcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCB8IHVuZGVmaW5lZCxcblx0ZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGg/OiBFeHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aFxuKTogRXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdHJldHVybiBjaGVja09uUGF0aChcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdChhbm5vdGF0aW9uT2JqZWN0OiBOYXZpZ2F0aW9uUHJvcGVydHlSZXN0cmljdGlvbiB8IEVudGl0eVNldEFubm90YXRpb25zX0NhcGFiaWxpdGllcykgPT4ge1xuXHRcdFx0cmV0dXJuIGFubm90YXRpb25PYmplY3Q/LkRlbGV0ZVJlc3RyaWN0aW9ucz8uRGVsZXRhYmxlO1xuXHRcdH0sXG5cdFx0ZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGhcblx0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1BhdGhJbnNlcnRhYmxlID0gZnVuY3Rpb24gKFxuXHRkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoIHwgdW5kZWZpbmVkLFxuXHRleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aD86IEV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoXG4pOiBFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0cmV0dXJuIGNoZWNrT25QYXRoKFxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0KGFubm90YXRpb25PYmplY3Q6IE5hdmlnYXRpb25Qcm9wZXJ0eVJlc3RyaWN0aW9uIHwgRW50aXR5U2V0QW5ub3RhdGlvbnNfQ2FwYWJpbGl0aWVzKSA9PiB7XG5cdFx0XHRyZXR1cm4gYW5ub3RhdGlvbk9iamVjdD8uSW5zZXJ0UmVzdHJpY3Rpb25zPy5JbnNlcnRhYmxlO1xuXHRcdH0sXG5cdFx0ZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGhcblx0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja0ZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMgPSBmdW5jdGlvbiAoXG5cdGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdGFsbG93ZWRFeHByZXNzaW9uOiAoc3RyaW5nIHwgdW5kZWZpbmVkKVtdXG4pOiBFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0cmV0dXJuIGNoZWNrT25QYXRoKFxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0KGFubm90YXRpb25PYmplY3Q6IE5hdmlnYXRpb25Qcm9wZXJ0eVJlc3RyaWN0aW9uIHwgRW50aXR5U2V0QW5ub3RhdGlvbnNfQ2FwYWJpbGl0aWVzIHwgRW50aXR5VHlwZUFubm90YXRpb25zX0NhcGFiaWxpdGllcykgPT4ge1xuXHRcdFx0aWYgKGFubm90YXRpb25PYmplY3QgJiYgXCJGaWx0ZXJSZXN0cmljdGlvbnNcIiBpbiBhbm5vdGF0aW9uT2JqZWN0KSB7XG5cdFx0XHRcdGNvbnN0IGZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnM6IEZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvblR5cGVUeXBlc1tdID1cblx0XHRcdFx0XHQoYW5ub3RhdGlvbk9iamVjdD8uRmlsdGVyUmVzdHJpY3Rpb25zPy5GaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zIGFzIEZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvblR5cGVUeXBlc1tdKSB8fCBbXTtcblx0XHRcdFx0Y29uc3QgY3VycmVudE9iamVjdFJlc3RyaWN0aW9uID0gZmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucy5maW5kKChyZXN0cmljdGlvbikgPT4ge1xuXHRcdFx0XHRcdHJldHVybiAocmVzdHJpY3Rpb24uUHJvcGVydHkgYXMgUHJvcGVydHlQYXRoKS4kdGFyZ2V0ID09PSBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdDtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGlmIChjdXJyZW50T2JqZWN0UmVzdHJpY3Rpb24pIHtcblx0XHRcdFx0XHRyZXR1cm4gYWxsb3dlZEV4cHJlc3Npb24uaW5kZXhPZihjdXJyZW50T2JqZWN0UmVzdHJpY3Rpb24/LkFsbG93ZWRFeHByZXNzaW9ucz8udG9TdHJpbmcoKSkgIT09IC0xO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblx0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja09uUGF0aCA9IGZ1bmN0aW9uIChcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCB8IHVuZGVmaW5lZCxcblx0Y2hlY2tGdW5jdGlvbjogRnVuY3Rpb24sXG5cdGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoPzogRXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGhcbik6IEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRpZiAoIWRhdGFNb2RlbE9iamVjdFBhdGggfHwgIWRhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQpIHtcblx0XHRyZXR1cm4gY29uc3RhbnQodHJ1ZSk7XG5cdH1cblxuXHRkYXRhTW9kZWxPYmplY3RQYXRoID0gZW5oYW5jZURhdGFNb2RlbFBhdGgoZGF0YU1vZGVsT2JqZWN0UGF0aCwgZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGg/LnByb3BlcnR5UGF0aCk7XG5cblx0bGV0IGN1cnJlbnRFbnRpdHlTZXQ6IEVudGl0eVNldCB8IG51bGwgPSBkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0O1xuXHRsZXQgcGFyZW50RW50aXR5U2V0OiBFbnRpdHlTZXQgfCBudWxsID0gbnVsbDtcblx0bGV0IHZpc2l0ZWROYXZpZ2F0aW9uUHJvcHNOYW1lOiBzdHJpbmdbXSA9IFtdO1xuXHRjb25zdCBhbGxWaXNpdGVkTmF2aWdhdGlvblByb3BzOiBOYXZpZ2F0aW9uUHJvcGVydHlbXSA9IFtdO1xuXHRsZXQgdGFyZ2V0RW50aXR5U2V0OiBFbnRpdHlTZXQgfCBudWxsID0gY3VycmVudEVudGl0eVNldDtcblx0Y29uc3QgdGFyZ2V0RW50aXR5VHlwZTogRW50aXR5VHlwZSB8IG51bGwgPSBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldEVudGl0eVR5cGU7XG5cdGxldCByZXNldFZpc2l0ZWROYXZQcm9wcyA9IGZhbHNlO1xuXG5cdGRhdGFNb2RlbE9iamVjdFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMuZm9yRWFjaCgobmF2aWdhdGlvblByb3BlcnR5OiBOYXZpZ2F0aW9uUHJvcGVydHkpID0+IHtcblx0XHRpZiAocmVzZXRWaXNpdGVkTmF2UHJvcHMpIHtcblx0XHRcdHZpc2l0ZWROYXZpZ2F0aW9uUHJvcHNOYW1lID0gW107XG5cdFx0fVxuXHRcdHZpc2l0ZWROYXZpZ2F0aW9uUHJvcHNOYW1lLnB1c2gobmF2aWdhdGlvblByb3BlcnR5Lm5hbWUpO1xuXHRcdGFsbFZpc2l0ZWROYXZpZ2F0aW9uUHJvcHMucHVzaChuYXZpZ2F0aW9uUHJvcGVydHkpO1xuXHRcdGlmICghbmF2aWdhdGlvblByb3BlcnR5LmNvbnRhaW5zVGFyZ2V0KSB7XG5cdFx0XHQvLyBXZSBzaG91bGQgaGF2ZSBhIG5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcgYXNzb2NpYXRlZCB3aXRoIHRoZSBwYXRoIHNvIGZhciB3aGljaCBjYW4gY29uc2lzdCBvZiAoW0NvbnRhaW5tZW50TmF2UHJvcF0vKSpbTmF2UHJvcF1cblx0XHRcdGNvbnN0IGZ1bGxOYXZpZ2F0aW9uUGF0aCA9IHZpc2l0ZWROYXZpZ2F0aW9uUHJvcHNOYW1lLmpvaW4oXCIvXCIpO1xuXHRcdFx0aWYgKGN1cnJlbnRFbnRpdHlTZXQgJiYgY3VycmVudEVudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nLmhhc093blByb3BlcnR5KGZ1bGxOYXZpZ2F0aW9uUGF0aCkpIHtcblx0XHRcdFx0cGFyZW50RW50aXR5U2V0ID0gY3VycmVudEVudGl0eVNldDtcblx0XHRcdFx0Y3VycmVudEVudGl0eVNldCA9IGN1cnJlbnRFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1tmdWxsTmF2aWdhdGlvblBhdGhdO1xuXHRcdFx0XHR0YXJnZXRFbnRpdHlTZXQgPSBjdXJyZW50RW50aXR5U2V0O1xuXHRcdFx0XHQvLyBJZiB3ZSByZWFjaGVkIGEgbmF2aWdhdGlvbiBwcm9wZXJ0eSB3aXRoIGEgbmF2aWdhdGlvbnByb3BlcnR5YmluZGluZywgd2UgbmVlZCB0byByZXNldCB0aGUgdmlzaXRlZCBwYXRoIG9uIHRoZSBuZXh0IGl0ZXJhdGlvbiAoaWYgdGhlcmUgaXMgb25lKVxuXHRcdFx0XHRyZXNldFZpc2l0ZWROYXZQcm9wcyA9IHRydWU7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBXZSByZWFsbHkgc2hvdWxkIG5vdCBlbmQgdXAgaGVyZSBidXQgYXQgbGVhc3QgbGV0J3MgdHJ5IHRvIGF2b2lkIGluY29ycmVjdCBiZWhhdmlvclxuXHRcdFx0XHRwYXJlbnRFbnRpdHlTZXQgPSBjdXJyZW50RW50aXR5U2V0O1xuXHRcdFx0XHRjdXJyZW50RW50aXR5U2V0ID0gbnVsbDtcblx0XHRcdFx0cmVzZXRWaXNpdGVkTmF2UHJvcHMgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRwYXJlbnRFbnRpdHlTZXQgPSBjdXJyZW50RW50aXR5U2V0O1xuXHRcdFx0dGFyZ2V0RW50aXR5U2V0ID0gbnVsbDtcblx0XHR9XG5cdH0pO1xuXG5cdC8vIEF0IHRoaXMgcG9pbnQgd2UgaGF2ZSBuYXZpZ2F0ZWQgZG93biBhbGwgdGhlIG5hdiBwcm9wIGFuZCB3ZSBzaG91bGQgaGF2ZVxuXHQvLyBUaGUgdGFyZ2V0IGVudGl0eVNldCBwb2ludGluZyB0byBlaXRoZXIgbnVsbCAoaW4gY2FzZSBvZiBjb250YWlubWVudCBuYXZwcm9wIGEgbGFzdCBwYXJ0KSwgb3IgdGhlIGFjdHVhbCB0YXJnZXQgKG5vbiBjb250YWlubWVudCBhcyB0YXJnZXQpXG5cdC8vIFRoZSBwYXJlbnQgZW50aXR5U2V0IHBvaW50aW5nIHRvIHRoZSBwcmV2aW91cyBlbnRpdHlTZXQgdXNlZCBpbiB0aGUgcGF0aFxuXHQvLyBWaXNpdGVkTmF2aWdhdGlvblBhdGggc2hvdWxkIGNvbnRhaW4gdGhlIHBhdGggdXAgdG8gdGhpcyBwcm9wZXJ0eVxuXG5cdC8vIFJlc3RyaWN0aW9ucyBzaG91bGQgdGhlbiBiZSBldmFsdWF0ZWQgYXMgUGFyZW50RW50aXR5U2V0Lk5hdlJlc3RyaWN0aW9uc1tOYXZQcm9wZXJ0eVBhdGhdIHx8IFRhcmdldEVudGl0eVNldC5SZXN0cmljdGlvbnNcblx0Y29uc3QgZnVsbE5hdmlnYXRpb25QYXRoID0gdmlzaXRlZE5hdmlnYXRpb25Qcm9wc05hbWUuam9pbihcIi9cIik7XG5cdGxldCByZXN0cmljdGlvbnMsIHZpc2l0ZWROYXZQcm9wcztcblx0aWYgKHBhcmVudEVudGl0eVNldCAhPT0gbnVsbCkge1xuXHRcdGNvbnN0IF9wYXJlbnRFbnRpdHlTZXQ6IEVudGl0eVNldCA9IHBhcmVudEVudGl0eVNldDtcblx0XHRfcGFyZW50RW50aXR5U2V0LmFubm90YXRpb25zPy5DYXBhYmlsaXRpZXM/Lk5hdmlnYXRpb25SZXN0cmljdGlvbnM/LlJlc3RyaWN0ZWRQcm9wZXJ0aWVzLmZvckVhY2goXG5cdFx0XHQocmVzdHJpY3RlZE5hdlByb3A6IE5hdmlnYXRpb25Qcm9wZXJ0eVJlc3RyaWN0aW9uVHlwZXMpID0+IHtcblx0XHRcdFx0aWYgKHJlc3RyaWN0ZWROYXZQcm9wLk5hdmlnYXRpb25Qcm9wZXJ0eT8udHlwZSA9PT0gXCJOYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCIpIHtcblx0XHRcdFx0XHRjb25zdCByZXN0cmljdGlvbkRlZmluaXRpb24gPSBjaGVja0Z1bmN0aW9uKHJlc3RyaWN0ZWROYXZQcm9wKTtcblx0XHRcdFx0XHRpZiAoZnVsbE5hdmlnYXRpb25QYXRoID09PSByZXN0cmljdGVkTmF2UHJvcC5OYXZpZ2F0aW9uUHJvcGVydHkudmFsdWUgJiYgcmVzdHJpY3Rpb25EZWZpbml0aW9uICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRcdGNvbnN0IF9hbGxWaXNpdGVkTmF2aWdhdGlvblByb3BzID0gYWxsVmlzaXRlZE5hdmlnYXRpb25Qcm9wcy5zbGljZSgwLCAtMSk7XG5cdFx0XHRcdFx0XHR2aXNpdGVkTmF2UHJvcHMgPSBfYWxsVmlzaXRlZE5hdmlnYXRpb25Qcm9wcztcblx0XHRcdFx0XHRcdGNvbnN0IHBhdGhSZWxhdGl2ZUxvY2F0aW9uID0gZ2V0UGF0aFJlbGF0aXZlTG9jYXRpb24oZGF0YU1vZGVsT2JqZWN0UGF0aD8uY29udGV4dExvY2F0aW9uLCB2aXNpdGVkTmF2UHJvcHMpLm1hcChcblx0XHRcdFx0XHRcdFx0KG5wKSA9PiBucC5uYW1lXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0Y29uc3QgcGF0aFZpc2l0b3JGdW5jdGlvbiA9IGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoPy5wYXRoVmlzaXRvclxuXHRcdFx0XHRcdFx0XHQ/IGdldFBhdGhWaXNpdG9yRm9yU2luZ2xldG9uKGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoLnBhdGhWaXNpdG9yLCBwYXRoUmVsYXRpdmVMb2NhdGlvbilcblx0XHRcdFx0XHRcdFx0OiB1bmRlZmluZWQ7IC8vIHNlbmQgcGF0aFZpc2l0b3IgZnVuY3Rpb24gb25seSB3aGVuIGl0IGlzIGRlZmluZWQgYW5kIG9ubHkgc2VuZCBmdW5jdGlvbiBvciBkZWZpbmVkIGFzIGEgcGFyYW1ldGVyXG5cdFx0XHRcdFx0XHRyZXN0cmljdGlvbnMgPSBlcXVhbChcblx0XHRcdFx0XHRcdFx0YW5ub3RhdGlvbkV4cHJlc3Npb24ocmVzdHJpY3Rpb25EZWZpbml0aW9uLCBwYXRoUmVsYXRpdmVMb2NhdGlvbiwgdW5kZWZpbmVkLCBwYXRoVmlzaXRvckZ1bmN0aW9uKSxcblx0XHRcdFx0XHRcdFx0dHJ1ZVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHQpO1xuXHR9XG5cdGxldCB0YXJnZXRSZXN0cmljdGlvbnM7XG5cdGlmICghZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGg/Lmlnbm9yZVRhcmdldENvbGxlY3Rpb24pIHtcblx0XHRsZXQgcmVzdHJpY3Rpb25EZWZpbml0aW9uID0gY2hlY2tGdW5jdGlvbih0YXJnZXRFbnRpdHlTZXQ/LmFubm90YXRpb25zPy5DYXBhYmlsaXRpZXMpO1xuXHRcdGlmICh0YXJnZXRFbnRpdHlTZXQgPT09IG51bGwgJiYgcmVzdHJpY3Rpb25EZWZpbml0aW9uID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHJlc3RyaWN0aW9uRGVmaW5pdGlvbiA9IGNoZWNrRnVuY3Rpb24odGFyZ2V0RW50aXR5VHlwZT8uYW5ub3RhdGlvbnM/LkNhcGFiaWxpdGllcyk7XG5cdFx0fVxuXHRcdGlmIChyZXN0cmljdGlvbkRlZmluaXRpb24gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0Y29uc3QgcGF0aFJlbGF0aXZlTG9jYXRpb24gPSBnZXRQYXRoUmVsYXRpdmVMb2NhdGlvbihkYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbiwgYWxsVmlzaXRlZE5hdmlnYXRpb25Qcm9wcykubWFwKFxuXHRcdFx0XHQobnApID0+IG5wLm5hbWVcblx0XHRcdCk7XG5cdFx0XHRjb25zdCBwYXRoVmlzaXRvckZ1bmN0aW9uID0gZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGg/LnBhdGhWaXNpdG9yXG5cdFx0XHRcdD8gZ2V0UGF0aFZpc2l0b3JGb3JTaW5nbGV0b24oZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGgucGF0aFZpc2l0b3IsIHBhdGhSZWxhdGl2ZUxvY2F0aW9uKVxuXHRcdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRcdHRhcmdldFJlc3RyaWN0aW9ucyA9IGVxdWFsKFxuXHRcdFx0XHRhbm5vdGF0aW9uRXhwcmVzc2lvbihyZXN0cmljdGlvbkRlZmluaXRpb24sIHBhdGhSZWxhdGl2ZUxvY2F0aW9uLCB1bmRlZmluZWQsIHBhdGhWaXNpdG9yRnVuY3Rpb24pLFxuXHRcdFx0XHR0cnVlXG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiAoXG5cdFx0cmVzdHJpY3Rpb25zIHx8IHRhcmdldFJlc3RyaWN0aW9ucyB8fCAoZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGg/LmF1dGhvcml6ZVVucmVzb2x2YWJsZSA/IHVucmVzb2x2ZWFibGVFeHByZXNzaW9uIDogY29uc3RhbnQodHJ1ZSkpXG5cdCk7XG59O1xuLy8gVGhpcyBoZWxwZXIgbWV0aG9kIGlzIHVzZWQgdG8gYWRkIHJlbGF0aXZlIHBhdGggbG9jYXRpb24gYXJndW1lbnQgdG8gc2luZ2xldG9uUGF0aFZpc2l0b3JGdW5jdGlvbiBpLmUuIHBhdGhWaXNpdG9yXG4vLyBwYXRoVmlzaXRvciBtZXRob2QgaXMgdXNlZCBsYXRlciB0byBnZXQgdGhlIGNvcnJlY3QgYmluZGluZ3MgZm9yIHNpbmdsZXRvbiBlbnRpdHlcbi8vIG1ldGhvZCBpcyBpbnZva2VkIGxhdGVyIGluIGJpbmRpbmdFeHByZXNzaW9uKCkgbWV0aG9kIHRvIGdldCB0aGUgY29ycmVjdCBiaW5kaW5nLlxuY29uc3QgZ2V0UGF0aFZpc2l0b3JGb3JTaW5nbGV0b24gPSBmdW5jdGlvbiAocGF0aFZpc2l0b3I6IEZ1bmN0aW9uLCBwYXRoUmVsYXRpdmVMb2NhdGlvbjogc3RyaW5nW10pIHtcblx0cmV0dXJuIGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gcGF0aFZpc2l0b3IocGF0aCwgcGF0aFJlbGF0aXZlTG9jYXRpb24pO1xuXHR9O1xufTtcbiJdfQ==
417
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRhdGFNb2RlbFBhdGhIZWxwZXIudHMiXSwibmFtZXMiOlsiZ2V0UGF0aFJlbGF0aXZlTG9jYXRpb24iLCJjb250ZXh0UGF0aCIsInZpc2l0ZWROYXZQcm9wcyIsImxlbmd0aCIsIm5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwicmVtYWluaW5nTmF2UHJvcHMiLCJmb3JFYWNoIiwibmF2UHJvcCIsIm5hdkluZGV4IiwicHVzaCIsImNvbmNhdCIsInNsaWNlIiwiY3VycmVudElkeCIsImN1cnJlbnROYXYiLCJuZXh0TmF2UHJvcCIsInBhcnRuZXIiLCJuYW1lIiwic3BsaWNlIiwiZXh0cmFOYXZQcm9wIiwibWFwIiwidGFyZ2V0VHlwZSIsImZpbmQiLCJucCIsImVuaGFuY2VEYXRhTW9kZWxQYXRoIiwiZGF0YU1vZGVsT2JqZWN0UGF0aCIsInByb3BlcnR5UGF0aCIsInNQcm9wZXJ0eVBhdGgiLCJpc1BhdGhFeHByZXNzaW9uIiwiaXNBbm5vdGF0aW9uUGF0aEV4cHJlc3Npb24iLCJwYXRoIiwib1RhcmdldCIsIiR0YXJnZXQiLCJ0YXJnZXRFbnRpdHlUeXBlIiwicmVzb2x2ZVBhdGgiLCJ0YXJnZXRPYmplY3QiLCJhUGF0aFNwbGl0Iiwic3BsaXQiLCJjdXJyZW50RW50aXR5U2V0IiwidGFyZ2V0RW50aXR5U2V0IiwiY3VycmVudEVudGl0eVR5cGUiLCJyZWR1Y2VkRW50aXR5VHlwZSIsInBhdGhQYXJ0IiwicG90ZW50aWFsTmF2UHJvcCIsIm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmciLCJoYXNPd25Qcm9wZXJ0eSIsInVuZGVmaW5lZCIsInN0YXJ0aW5nRW50aXR5U2V0IiwiY29udGV4dExvY2F0aW9uIiwiY29udmVydGVkVHlwZXMiLCJnZXRUYXJnZXRFbnRpdHlTZXRQYXRoIiwidGFyZ2V0RW50aXR5U2V0UGF0aCIsIm5hdmlnYXRlZFBhdGhzIiwiam9pbiIsImdldFRhcmdldE9iamVjdFBhdGgiLCJiUmVsYXRpdmUiLCJfdHlwZSIsImVuZHNXaXRoIiwidGVybSIsImdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgiLCJmb3JCaW5kaW5nRXhwcmVzc2lvbiIsIm5hdlByb3BlcnRpZXMiLCJpc0NvbGxlY3Rpb24iLCJ0eXBlIiwidmFsdWUiLCJxdWFsaWZpZXIiLCJpc1BhdGhVcGRhdGFibGUiLCJleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aCIsImNoZWNrT25QYXRoIiwiYW5ub3RhdGlvbk9iamVjdCIsIlVwZGF0ZVJlc3RyaWN0aW9ucyIsIlVwZGF0YWJsZSIsImlzUGF0aFNlYXJjaGFibGUiLCJTZWFyY2hSZXN0cmljdGlvbnMiLCJTZWFyY2hhYmxlIiwiaXNQYXRoRGVsZXRhYmxlIiwiRGVsZXRlUmVzdHJpY3Rpb25zIiwiRGVsZXRhYmxlIiwiaXNQYXRoSW5zZXJ0YWJsZSIsIkluc2VydFJlc3RyaWN0aW9ucyIsIkluc2VydGFibGUiLCJjaGVja0ZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMiLCJhbGxvd2VkRXhwcmVzc2lvbiIsImZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMiLCJGaWx0ZXJSZXN0cmljdGlvbnMiLCJGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zIiwiY3VycmVudE9iamVjdFJlc3RyaWN0aW9uIiwicmVzdHJpY3Rpb24iLCJQcm9wZXJ0eSIsImluZGV4T2YiLCJBbGxvd2VkRXhwcmVzc2lvbnMiLCJ0b1N0cmluZyIsImNoZWNrRnVuY3Rpb24iLCJjb25zdGFudCIsInBhcmVudEVudGl0eVNldCIsInZpc2l0ZWROYXZpZ2F0aW9uUHJvcHNOYW1lIiwiYWxsVmlzaXRlZE5hdmlnYXRpb25Qcm9wcyIsInJlc2V0VmlzaXRlZE5hdlByb3BzIiwibmF2aWdhdGlvblByb3BlcnR5IiwiY29udGFpbnNUYXJnZXQiLCJmdWxsTmF2aWdhdGlvblBhdGgiLCJyZXN0cmljdGlvbnMiLCJfcGFyZW50RW50aXR5U2V0IiwiYW5ub3RhdGlvbnMiLCJDYXBhYmlsaXRpZXMiLCJOYXZpZ2F0aW9uUmVzdHJpY3Rpb25zIiwiUmVzdHJpY3RlZFByb3BlcnRpZXMiLCJyZXN0cmljdGVkTmF2UHJvcCIsIk5hdmlnYXRpb25Qcm9wZXJ0eSIsInJlc3RyaWN0aW9uRGVmaW5pdGlvbiIsIl9hbGxWaXNpdGVkTmF2aWdhdGlvblByb3BzIiwicGF0aFJlbGF0aXZlTG9jYXRpb24iLCJwYXRoVmlzaXRvckZ1bmN0aW9uIiwicGF0aFZpc2l0b3IiLCJnZXRQYXRoVmlzaXRvckZvclNpbmdsZXRvbiIsImVxdWFsIiwiZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uIiwidGFyZ2V0UmVzdHJpY3Rpb25zIiwiaWdub3JlVGFyZ2V0Q29sbGVjdGlvbiIsImF1dGhvcml6ZVVucmVzb2x2YWJsZSIsInVucmVzb2x2ZWFibGVFeHByZXNzaW9uIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7QUFzQ08sTUFBTUEsdUJBQXVCLEdBQUcsVUFDdENDLFdBRHNDLEVBR2Y7QUFBQSxRQUR2QkMsZUFDdUIsdUVBRGlCLEVBQ2pCOztBQUN2QixRQUFJLENBQUNELFdBQUwsRUFBa0I7QUFDakIsYUFBT0MsZUFBUDtBQUNBLEtBRkQsTUFFTyxJQUFJQSxlQUFlLENBQUNDLE1BQWhCLElBQTBCRixXQUFXLENBQUNHLG9CQUFaLENBQWlDRCxNQUEvRCxFQUF1RTtBQUM3RSxVQUFJRSxpQkFBdUMsR0FBRyxFQUE5QztBQUNBSixNQUFBQSxXQUFXLENBQUNHLG9CQUFaLENBQWlDRSxPQUFqQyxDQUF5QyxVQUFDQyxPQUFELEVBQVVDLFFBQVYsRUFBdUI7QUFDL0QsWUFBSU4sZUFBZSxDQUFDTSxRQUFELENBQWYsS0FBOEJELE9BQWxDLEVBQTJDO0FBQzFDRixVQUFBQSxpQkFBaUIsQ0FBQ0ksSUFBbEIsQ0FBdUJQLGVBQWUsQ0FBQ00sUUFBRCxDQUF0QztBQUNBO0FBQ0QsT0FKRDtBQUtBSCxNQUFBQSxpQkFBaUIsR0FBR0EsaUJBQWlCLENBQUNLLE1BQWxCLENBQXlCUixlQUFlLENBQUNTLEtBQWhCLENBQXNCVixXQUFXLENBQUNHLG9C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SUE7QUFDRDs7QUFFRCxXQUNDWCxZQUFZLElBQUlnQixrQkFBaEIsS0FBdUNsRCwwQkFBMEIsU0FBMUIsSUFBQUEsMEJBQTBCLFdBQTFCLElBQUFBLDBCQUEwQixDQUFFb0QscUJBQTVCLEdBQW9EQyx1QkFBcEQsR0FBOEUzQixRQUFRLENBQUMsSUFBRCxDQUE3SCxDQUREO0FBR0EsR0FyR00sQyxDQXNHUDtBQUNBO0FBQ0E7Ozs7O0FBQ0EsTUFBTXFCLDBCQUEwQixHQUFHLFVBQVVELFdBQVYsRUFBaUNGLG9CQUFqQyxFQUFpRTtBQUNuRyxXQUFPLFVBQVVqRixJQUFWLEVBQXdCO0FBQzlCLGFBQU9tRixXQUFXLENBQUNuRixJQUFELEVBQU9pRixvQkFBUCxDQUFsQjtBQUNBLEtBRkQ7QUFHQSxHQUpEIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG5cdENvbnZlcnRlZE1ldGFkYXRhLFxuXHRFbnRpdHlTZXQsXG5cdEVudGl0eVR5cGUsXG5cdE5hdmlnYXRpb25Qcm9wZXJ0eSxcblx0UHJvcGVydHksXG5cdFByb3BlcnR5UGF0aCxcblx0U2luZ2xldG9uXG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUge1xuXHRGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25UeXBlVHlwZXMsXG5cdE5hdmlnYXRpb25Qcm9wZXJ0eVJlc3RyaWN0aW9uLFxuXHROYXZpZ2F0aW9uUHJvcGVydHlSZXN0cmljdGlvblR5cGVzXG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQ2FwYWJpbGl0aWVzXCI7XG5pbXBvcnQgdHlwZSB7XG5cdEVudGl0eVNldEFubm90YXRpb25zX0NhcGFiaWxpdGllcyxcblx0RW50aXR5VHlwZUFubm90YXRpb25zX0NhcGFiaWxpdGllc1xufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NhcGFiaWxpdGllc19FZG1cIjtcbmltcG9ydCB0eXBlIHsgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGNvbnN0YW50LCBlcXVhbCwgZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uLCB1bnJlc29sdmVhYmxlRXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnR5T3JQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGlzcGxheU1vZGVGb3JtYXR0ZXJcIjtcbmltcG9ydCB7IGlzQW5ub3RhdGlvblBhdGhFeHByZXNzaW9uLCBpc1BhdGhFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvUHJvcGVydHlIZWxwZXJcIjtcblxuZXhwb3J0IHR5cGUgRGF0YU1vZGVsT2JqZWN0UGF0aCA9IHtcblx0c3RhcnRpbmdFbnRpdHlTZXQ6IEVudGl0eVNldDtcblx0Y29udGV4dExvY2F0aW9uPzogRGF0YU1vZGVsT2JqZWN0UGF0aDtcblx0bmF2aWdhdGlvblByb3BlcnRpZXM6IE5hdmlnYXRpb25Qcm9wZXJ0eVtdO1xuXHR0YXJnZXRFbnRpdHlTZXQ/OiBFbnRpdHlTZXQ7XG5cdHRhcmdldEVudGl0eVR5cGU6IEVudGl0eVR5cGU7XG5cdHRhcmdldE9iamVjdDogYW55O1xuXHRjb252ZXJ0ZWRUeXBlczogQ29udmVydGVkTWV0YWRhdGE7XG59O1xuXG50eXBlIEV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoID0ge1xuXHRwcm9wZXJ0eVBhdGg/OiBQcm9wZXJ0eU9yUGF0aDxQcm9wZXJ0eT47XG5cdHBhdGhWaXNpdG9yPzogRnVuY3Rpb247XG5cdGlnbm9yZVRhcmdldENvbGxlY3Rpb24/OiBib29sZWFuO1xuXHRhdXRob3JpemVVbnJlc29sdmFibGU/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFBhdGhSZWxhdGl2ZUxvY2F0aW9uID0gZnVuY3Rpb24gKFxuXHRjb250ZXh0UGF0aD86IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdHZpc2l0ZWROYXZQcm9wczogTmF2aWdhdGlvblByb3BlcnR5W10gPSBbXVxuKTogTmF2aWdhdGlvblByb3BlcnR5W10ge1xuXHRpZiAoIWNvbnRleHRQYXRoKSB7XG5cdFx0cmV0dXJuIHZpc2l0ZWROYXZQcm9wcztcblx0fSBlbHNlIGlmICh2aXNpdGVkTmF2UHJvcHMubGVuZ3RoID49IGNvbnRleHRQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmxlbmd0aCkge1xuXHRcdGxldCByZW1haW5pbmdOYXZQcm9wczogTmF2aWdhdGlvblByb3BlcnR5W10gPSBbXTtcblx0XHRjb250ZXh0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5mb3JFYWNoKChuYXZQcm9wLCBuYXZJbmRleCkgPT4ge1xuXHRcdFx0aWYgKHZpc2l0ZWROYXZQcm9wc1tuYXZJbmRleF0gIT09IG5hdlByb3ApIHtcblx0XHRcdFx0cmVtYWluaW5nTmF2UHJvcHMucHVzaCh2aXNpdGVkTmF2UHJvcHNbbmF2SW5kZXhdKTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRyZW1haW5pbmdOYXZQcm9wcyA9IHJlbWFpbmluZ05hdlByb3BzLmNvbmNhdCh2aXNpdGVkTmF2UHJvcHMuc2xpY2UoY29udGV4dFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMubGVuZ3RoKSk7XG5cdFx0Ly8gQ2xlYW4gdXAgTmF2UHJvcCAtPiBPd25lclxuXHRcdGxldCBjdXJyZW50SWR4ID0gMDtcblx0XHR3aGlsZSAocmVtYWluaW5nTmF2UHJvcHMubGVuZ3RoID4gMSAmJiBjdXJyZW50SWR4ICE9IHJlbWFpbmluZ05hdlByb3BzLmxlbmd0aCAtIDEpIHtcblx0XHRcdGNvbnN0IGN1cnJlbnROYXYgPSByZW1haW5pbmdOYXZQcm9wc1tjdXJyZW50SWR4XTtcblx0XHRcdGNvbnN0IG5leHROYXZQcm9wID0gcmVtYWluaW5nTmF2UHJvcHNbY3VycmVudElkeCArIDFdO1xuXHRcdFx0aWYgKGN1cnJlbnROYXYucGFydG5lciA9PT0gbmV4dE5hdlByb3AubmFtZSkge1xuXHRcdFx0XHRyZW1haW5pbmdOYXZQcm9wcy5zcGxpY2UoMCwgMik7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjdXJyZW50SWR4Kys7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiByZW1haW5pbmdOYXZQcm9wcztcblx0fSBlbHNlIHtcblx0XHRsZXQgZXh0cmFOYXZQcm9wOiBOYXZpZ2F0aW9uUHJvcGVydHlbXSA9IFtdO1xuXHRcdHZpc2l0ZWROYXZQcm9wcy5mb3JFYWNoKChuYXZQcm9wLCBuYXZJbmRleCkgPT4ge1xuXHRcdFx0aWYgKGNvbnRleHRQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzW25hdkluZGV4XSAhPT0gbmF2UHJvcCkge1xuXHRcdFx0XHRleHRyYU5hdlByb3AucHVzaCh2aXNpdGVkTmF2UHJvcHNbbmF2SW5kZXhdKTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRleHRyYU5hdlByb3AgPSBleHRyYU5hdlByb3AuY29uY2F0KGNvbnRleHRQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLnNsaWNlKHZpc2l0ZWROYXZQcm9wcy5sZW5ndGgpKTtcblx0XHQvLyBDbGVhbiB1cCBOYXZQcm9wIC0+IE93bmVyXG5cdFx0bGV0IGN1cnJlbnRJZHggPSAwO1xuXHRcdHdoaWxlIChleHRyYU5hdlByb3AubGVuZ3RoID4gMSAmJiBjdXJyZW50SWR4ICE9IGV4dHJhTmF2UHJvcC5sZW5ndGggLSAxKSB7XG5cdFx0XHRjb25zdCBjdXJyZW50TmF2ID0gZXh0cmFOYXZQcm9wW2N1cnJlbnRJZHhdO1xuXHRcdFx0Y29uc3QgbmV4dE5hdlByb3AgPSBleHRyYU5hdlByb3BbY3VycmVudElkeCArIDFdO1xuXHRcdFx0aWYgKGN1cnJlbnROYXYucGFydG5lciA9PT0gbmV4dE5hdlByb3AubmFtZSkge1xuXHRcdFx0XHRleHRyYU5hdlByb3Auc3BsaWNlKDAsIDIpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y3VycmVudElkeCsrO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRleHRyYU5hdlByb3AgPSBleHRyYU5hdlByb3AubWFwKChuYXZQcm9wKSA9PiB7XG5cdFx0XHRyZXR1cm4gbmF2UHJvcC50YXJnZXRUeXBlLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmZpbmQoKG5wKSA9PiBucC5uYW1lID09PSBuYXZQcm9wLnBhcnRuZXIpIGFzIE5hdmlnYXRpb25Qcm9wZXJ0eTtcblx0XHR9KTtcblx0XHRyZXR1cm4gZXh0cmFOYXZQcm9wO1xuXHR9XG59O1xuXG5leHBvcnQgY29uc3QgZW5oYW5jZURhdGFNb2RlbFBhdGggPSBmdW5jdGlvbiAoXG5cdGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdHByb3BlcnR5UGF0aD86IFByb3BlcnR5T3JQYXRoPFByb3BlcnR5PlxuKTogRGF0YU1vZGVsT2JqZWN0UGF0aCB7XG5cdGxldCBzUHJvcGVydHlQYXRoOiBzdHJpbmcgPSBcIlwiO1xuXHRpZiAoKGlzUGF0aEV4cHJlc3Npb24ocHJvcGVydHlQYXRoKSB8fCBpc0Fubm90YXRpb25QYXRoRXhwcmVzc2lvbihwcm9wZXJ0eVBhdGgpKSAmJiBwcm9wZXJ0eVBhdGgucGF0aCkge1xuXHRcdHNQcm9wZXJ0eVBhdGggPSBwcm9wZXJ0eVBhdGgucGF0aDtcblx0fSBlbHNlIGlmICh0eXBlb2YgcHJvcGVydHlQYXRoID09PSBcInN0cmluZ1wiKSB7XG5cdFx0c1Byb3BlcnR5UGF0aCA9IHByb3BlcnR5UGF0aDtcblx0fVxuXHRsZXQgb1RhcmdldDtcblx0aWYgKGlzUGF0aEV4cHJlc3Npb24ocHJvcGVydHlQYXRoKSB8fCBpc0Fubm90YXRpb25QYXRoRXhwcmVzc2lvbihwcm9wZXJ0eVBhdGgpKSB7XG5cdFx0b1RhcmdldCA9IHByb3BlcnR5UGF0aC4kdGFyZ2V0O1xuXHR9IGVsc2UgaWYgKGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0RW50aXR5VHlwZSkge1xuXHRcdG9UYXJnZXQgPSBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldEVudGl0eVR5cGUucmVzb2x2ZVBhdGgoc1Byb3BlcnR5UGF0aCk7XG5cdH0gZWxzZSB7XG5cdFx0b1RhcmdldCA9IGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0O1xuXHR9XG5cdGNvbnN0IGFQYXRoU3BsaXQgPSBzUHJvcGVydHlQYXRoLnNwbGl0KFwiL1wiKTtcblx0bGV0IGN1cnJlbnRFbnRpdHlTZXQgPSBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldEVudGl0eVNldDtcblx0bGV0IGN1cnJlbnRFbnRpdHlUeXBlID0gZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRFbnRpdHlUeXBlO1xuXHRjb25zdCBuYXZpZ2F0aW9uUHJvcGVydGllcyA9IGRhdGFNb2RlbE9iamVjdFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMuY29uY2F0KCk7XG5cdC8vIFByb2Nlc3Mgb25seSBpZiB3ZSBoYXZlIHRvIGdvIHRocm91Z2ggbmF2aWdhdGlvbiBwcm9wZXJ0aWVzXG5cblx0bGV0IHJlZHVjZWRFbnRpdHlUeXBlOiBFbnRpdHlUeXBlIHwgdW5kZWZpbmVkID0gZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRFbnRpdHlUeXBlO1xuXHRhUGF0aFNwbGl0LmZvckVhY2goKHBhdGhQYXJ0OiBzdHJpbmcpID0+IHtcblx0XHRpZiAoIXJlZHVjZWRFbnRpdHlUeXBlKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IHBvdGVudGlhbE5hdlByb3AgPSByZWR1Y2VkRW50aXR5VHlwZS5uYXZpZ2F0aW9uUHJvcGVydGllcy5maW5kKChuYXZQcm9wKSA9PiBuYXZQcm9wLm5hbWUgPT09IHBhdGhQYXJ0KTtcblx0XHRpZiAocG90ZW50aWFsTmF2UHJvcCkge1xuXHRcdFx0bmF2aWdhdGlvblByb3BlcnRpZXMucHVzaChwb3RlbnRpYWxOYXZQcm9wKTtcblx0XHRcdGN1cnJlbnRFbnRpdHlUeXBlID0gcG90ZW50aWFsTmF2UHJvcC50YXJnZXRUeXBlO1xuXHRcdFx0aWYgKGN1cnJlbnRFbnRpdHlTZXQgJiYgY3VycmVudEVudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nLmhhc093blByb3BlcnR5KHBhdGhQYXJ0KSkge1xuXHRcdFx0XHRjdXJyZW50RW50aXR5U2V0ID0gY3VycmVudEVudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nW3BhdGhQYXJ0XSBhcyBFbnRpdHlTZXQ7XG5cdFx0XHR9XG5cdFx0XHRyZWR1Y2VkRW50aXR5VHlwZSA9IGN1cnJlbnRFbnRpdHlUeXBlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZWR1Y2VkRW50aXR5VHlwZSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdH0pO1xuXG5cdHJldHVybiB7XG5cdFx0c3RhcnRpbmdFbnRpdHlTZXQ6IGRhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQsXG5cdFx0bmF2aWdhdGlvblByb3BlcnRpZXM6IG5hdmlnYXRpb25Qcm9wZXJ0aWVzLFxuXHRcdGNvbnRleHRMb2NhdGlvbjogZGF0YU1vZGVsT2JqZWN0UGF0aC5jb250ZXh0TG9jYXRpb24sXG5cdFx0dGFyZ2V0RW50aXR5U2V0OiBjdXJyZW50RW50aXR5U2V0LFxuXHRcdHRhcmdldEVudGl0eVR5cGU6IGN1cnJlbnRFbnRpdHlUeXBlLFxuXHRcdHRhcmdldE9iamVjdDogb1RhcmdldCxcblx0XHRjb252ZXJ0ZWRUeXBlczogZGF0YU1vZGVsT2JqZWN0UGF0aC5jb252ZXJ0ZWRUeXBlc1xuXHR9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRhcmdldEVudGl0eVNldFBhdGggPSBmdW5jdGlvbiAoZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCk6IHN0cmluZyB7XG5cdGxldCB0YXJnZXRFbnRpdHlTZXRQYXRoOiBzdHJpbmcgPSBgLyR7ZGF0YU1vZGVsT2JqZWN0UGF0aC5zdGFydGluZ0VudGl0eVNldC5uYW1lfWA7XG5cdGxldCBjdXJyZW50RW50aXR5U2V0ID0gZGF0YU1vZGVsT2JqZWN0UGF0aC5zdGFydGluZ0VudGl0eVNldDtcblx0bGV0IG5hdmlnYXRlZFBhdGhzOiBzdHJpbmdbXSA9IFtdO1xuXHRkYXRhTW9kZWxPYmplY3RQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmZvckVhY2goKG5hdlByb3ApID0+IHtcblx0XHRuYXZpZ2F0ZWRQYXRocy5wdXNoKG5hdlByb3AubmFtZSk7XG5cdFx0aWYgKGN1cnJlbnRFbnRpdHlTZXQgJiYgY3VycmVudEVudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nLmhhc093blByb3BlcnR5KG5hdmlnYXRlZFBhdGhzLmpvaW4oXCIvXCIpKSkge1xuXHRcdFx0dGFyZ2V0RW50aXR5U2V0UGF0aCArPSBgLyROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nLyR7bmF2aWdhdGVkUGF0aHMuam9pbihcIi9cIil9LyRgO1xuXHRcdFx0Y3VycmVudEVudGl0eVNldCA9IGN1cnJlbnRFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1tuYXZpZ2F0ZWRQYXRocy5qb2luKFwiL1wiKV0gYXMgRW50aXR5U2V0O1xuXHRcdFx0bmF2aWdhdGVkUGF0aHMgPSBbXTtcblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gdGFyZ2V0RW50aXR5U2V0UGF0aDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUYXJnZXRPYmplY3RQYXRoID0gZnVuY3Rpb24gKGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsIGJSZWxhdGl2ZTogYm9vbGVhbiA9IGZhbHNlKTogc3RyaW5nIHtcblx0bGV0IHBhdGggPSBcIlwiO1xuXHRpZiAoIWRhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQpIHtcblx0XHRyZXR1cm4gXCIvXCI7XG5cdH1cblx0aWYgKCFiUmVsYXRpdmUpIHtcblx0XHRwYXRoICs9IGAvJHtkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0Lm5hbWV9YDtcblx0fVxuXHRpZiAoZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5sZW5ndGggPiAwKSB7XG5cdFx0aWYgKHBhdGgubGVuZ3RoID4gMCkge1xuXHRcdFx0cGF0aCArPSBcIi9cIjtcblx0XHR9XG5cdFx0cGF0aCArPSBkYXRhTW9kZWxPYmplY3RQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLm1hcCgobmF2UHJvcCkgPT4gbmF2UHJvcC5uYW1lKS5qb2luKFwiL1wiKTtcblx0fVxuXG5cdGlmIChcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCAmJlxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Lm5hbWUgJiZcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5fdHlwZSAhPT0gXCJOYXZpZ2F0aW9uUHJvcGVydHlcIiAmJlxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Ll90eXBlICE9PSBcIkVudGl0eVR5cGVcIiAmJlxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0ICE9PSBkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0XG5cdCkge1xuXHRcdGlmICghcGF0aC5lbmRzV2l0aChcIi9cIikpIHtcblx0XHRcdHBhdGggKz0gXCIvXCI7XG5cdFx0fVxuXHRcdHBhdGggKz0gYCR7ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QubmFtZX1gO1xuXHR9IGVsc2UgaWYgKGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0ICYmIGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Lmhhc093blByb3BlcnR5KFwidGVybVwiKSkge1xuXHRcdGlmIChwYXRoLmxlbmd0aCA+IDAgJiYgIXBhdGguZW5kc1dpdGgoXCIvXCIpKSB7XG5cdFx0XHRwYXRoICs9IFwiL1wiO1xuXHRcdH1cblx0XHRwYXRoICs9IGBAJHtkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC50ZXJtfWA7XG5cdH1cblx0cmV0dXJuIHBhdGg7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCA9IGZ1bmN0aW9uIChcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0Zm9yQmluZGluZ0V4cHJlc3Npb246IGJvb2xlYW4gPSBmYWxzZVxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgbmF2UHJvcGVydGllcyA9IGdldFBhdGhSZWxhdGl2ZUxvY2F0aW9uKGRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uLCBkYXRhTW9kZWxPYmplY3RQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzKTtcblx0aWYgKGZvckJpbmRpbmdFeHByZXNzaW9uKSB7XG5cdFx0aWYgKG5hdlByb3BlcnRpZXMuZmluZCgobnApID0+IG5wLmlzQ29sbGVjdGlvbikpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHR9XG5cdGxldCBwYXRoID0gbmF2UHJvcGVydGllcy5tYXAoKG5wKSA9PiBucC5uYW1lKS5qb2luKFwiL1wiKTtcblx0aWYgKFxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0ICYmXG5cdFx0KGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Lm5hbWUgfHxcblx0XHRcdChkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC50eXBlID09PSBcIlByb3BlcnR5UGF0aFwiICYmIGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LnZhbHVlKSkgJiZcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5fdHlwZSAhPT0gXCJOYXZpZ2F0aW9uUHJvcGVydHlcIiAmJlxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0ICE9PSBkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0XG5cdCkge1xuXHRcdGlmIChwYXRoLmxlbmd0aCA+IDAgJiYgIXBhdGguZW5kc1dpdGgoXCIvXCIpKSB7XG5cdFx0XHRwYXRoICs9IFwiL1wiO1xuXHRcdH1cblx0XHRwYXRoICs9XG5cdFx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC50eXBlID09PSBcIlByb3BlcnR5UGF0aFwiXG5cdFx0XHRcdD8gYCR7ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QudmFsdWV9YFxuXHRcdFx0XHQ6IGAke2RhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Lm5hbWV9YDtcblx0fSBlbHNlIGlmIChkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCAmJiBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5oYXNPd25Qcm9wZXJ0eShcInRlcm1cIikpIHtcblx0XHRpZiAocGF0aC5sZW5ndGggPiAwICYmICFwYXRoLmVuZHNXaXRoKFwiL1wiKSkge1xuXHRcdFx0cGF0aCArPSBcIi9cIjtcblx0XHR9XG5cdFx0cGF0aCArPSBgQCR7ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QudGVybX1gO1xuXHRcdGlmIChkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5oYXNPd25Qcm9wZXJ0eShcInF1YWxpZmllclwiKSAmJiAhIWRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LnF1YWxpZmllcikge1xuXHRcdFx0cGF0aCArPSBgIyR7ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QucXVhbGlmaWVyfWA7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKCFkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCkge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblx0cmV0dXJuIHBhdGg7XG59O1xuXG5leHBvcnQgY29uc3QgaXNQYXRoVXBkYXRhYmxlID0gZnVuY3Rpb24gKFxuXHRkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoIHwgdW5kZWZpbmVkLFxuXHRleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aD86IEV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoXG4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRyZXR1cm4gY2hlY2tPblBhdGgoXG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0XHQoYW5ub3RhdGlvbk9iamVjdDogTmF2aWdhdGlvblByb3BlcnR5UmVzdHJpY3Rpb24gfCBFbnRpdHlTZXRBbm5vdGF0aW9uc19DYXBhYmlsaXRpZXMpID0+IHtcblx0XHRcdHJldHVybiBhbm5vdGF0aW9uT2JqZWN0Py5VcGRhdGVSZXN0cmljdGlvbnM/LlVwZGF0YWJsZTtcblx0XHR9LFxuXHRcdGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoXG5cdCk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNQYXRoU2VhcmNoYWJsZSA9IGZ1bmN0aW9uIChcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCB8IHVuZGVmaW5lZCxcblx0ZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGg/OiBFeHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aFxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0cmV0dXJuIGNoZWNrT25QYXRoKFxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0KGFubm90YXRpb25PYmplY3Q6IE5hdmlnYXRpb25Qcm9wZXJ0eVJlc3RyaWN0aW9uIHwgRW50aXR5U2V0QW5ub3RhdGlvbnNfQ2FwYWJpbGl0aWVzKSA9PiB7XG5cdFx0XHRyZXR1cm4gYW5ub3RhdGlvbk9iamVjdD8uU2VhcmNoUmVzdHJpY3Rpb25zPy5TZWFyY2hhYmxlO1xuXHRcdH0sXG5cdFx0ZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGhcblx0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1BhdGhEZWxldGFibGUgPSBmdW5jdGlvbiAoXG5cdGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGggfCB1bmRlZmluZWQsXG5cdGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoPzogRXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGhcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdHJldHVybiBjaGVja09uUGF0aChcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdChhbm5vdGF0aW9uT2JqZWN0OiBOYXZpZ2F0aW9uUHJvcGVydHlSZXN0cmljdGlvbiB8IEVudGl0eVNldEFubm90YXRpb25zX0NhcGFiaWxpdGllcykgPT4ge1xuXHRcdFx0cmV0dXJuIGFubm90YXRpb25PYmplY3Q/LkRlbGV0ZVJlc3RyaWN0aW9ucz8uRGVsZXRhYmxlO1xuXHRcdH0sXG5cdFx0ZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGhcblx0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1BhdGhJbnNlcnRhYmxlID0gZnVuY3Rpb24gKFxuXHRkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoIHwgdW5kZWZpbmVkLFxuXHRleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aD86IEV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoXG4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRyZXR1cm4gY2hlY2tPblBhdGgoXG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0XHQoYW5ub3RhdGlvbk9iamVjdDogTmF2aWdhdGlvblByb3BlcnR5UmVzdHJpY3Rpb24gfCBFbnRpdHlTZXRBbm5vdGF0aW9uc19DYXBhYmlsaXRpZXMpID0+IHtcblx0XHRcdHJldHVybiBhbm5vdGF0aW9uT2JqZWN0Py5JbnNlcnRSZXN0cmljdGlvbnM/Lkluc2VydGFibGU7XG5cdFx0fSxcblx0XHRleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aFxuXHQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucyA9IGZ1bmN0aW9uIChcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0YWxsb3dlZEV4cHJlc3Npb246IChzdHJpbmcgfCB1bmRlZmluZWQpW11cbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdHJldHVybiBjaGVja09uUGF0aChcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdChhbm5vdGF0aW9uT2JqZWN0OiBOYXZpZ2F0aW9uUHJvcGVydHlSZXN0cmljdGlvbiB8IEVudGl0eVNldEFubm90YXRpb25zX0NhcGFiaWxpdGllcyB8IEVudGl0eVR5cGVBbm5vdGF0aW9uc19DYXBhYmlsaXRpZXMpID0+IHtcblx0XHRcdGlmIChhbm5vdGF0aW9uT2JqZWN0ICYmIFwiRmlsdGVyUmVzdHJpY3Rpb25zXCIgaW4gYW5ub3RhdGlvbk9iamVjdCkge1xuXHRcdFx0XHRjb25zdCBmaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zOiBGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25UeXBlVHlwZXNbXSA9XG5cdFx0XHRcdFx0KGFubm90YXRpb25PYmplY3Q/LkZpbHRlclJlc3RyaWN0aW9ucz8uRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucyBhcyBGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25UeXBlVHlwZXNbXSkgfHwgW107XG5cdFx0XHRcdGNvbnN0IGN1cnJlbnRPYmplY3RSZXN0cmljdGlvbiA9IGZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMuZmluZCgocmVzdHJpY3Rpb24pID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gKHJlc3RyaWN0aW9uLlByb3BlcnR5IGFzIFByb3BlcnR5UGF0aCkuJHRhcmdldCA9PT0gZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3Q7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRpZiAoY3VycmVudE9iamVjdFJlc3RyaWN0aW9uKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGFsbG93ZWRFeHByZXNzaW9uLmluZGV4T2YoY3VycmVudE9iamVjdFJlc3RyaWN0aW9uPy5BbGxvd2VkRXhwcmVzc2lvbnM/LnRvU3RyaW5nKCkpICE9PSAtMTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cdCk7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tPblBhdGggPSBmdW5jdGlvbiAoXG5cdGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGggfCB1bmRlZmluZWQsXG5cdGNoZWNrRnVuY3Rpb246IEZ1bmN0aW9uLFxuXHRleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aD86IEV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoXG4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRpZiAoIWRhdGFNb2RlbE9iamVjdFBhdGggfHwgIWRhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQpIHtcblx0XHRyZXR1cm4gY29uc3RhbnQodHJ1ZSk7XG5cdH1cblxuXHRkYXRhTW9kZWxPYmplY3RQYXRoID0gZW5oYW5jZURhdGFNb2RlbFBhdGgoZGF0YU1vZGVsT2JqZWN0UGF0aCwgZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGg/LnByb3BlcnR5UGF0aCk7XG5cblx0bGV0IGN1cnJlbnRFbnRpdHlTZXQ6IEVudGl0eVNldCB8IFNpbmdsZXRvbiB8IG51bGwgPSBkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0O1xuXHRsZXQgcGFyZW50RW50aXR5U2V0OiBFbnRpdHlTZXQgfCBTaW5nbGV0b24gfCBudWxsID0gbnVsbDtcblx0bGV0IHZpc2l0ZWROYXZpZ2F0aW9uUHJvcHNOYW1lOiBzdHJpbmdbXSA9IFtdO1xuXHRjb25zdCBhbGxWaXNpdGVkTmF2aWdhdGlvblByb3BzOiBOYXZpZ2F0aW9uUHJvcGVydHlbXSA9IFtdO1xuXHRsZXQgdGFyZ2V0RW50aXR5U2V0OiBFbnRpdHlTZXQgfCBTaW5nbGV0b24gfCBudWxsID0gY3VycmVudEVudGl0eVNldDtcblx0Y29uc3QgdGFyZ2V0RW50aXR5VHlwZTogRW50aXR5VHlwZSB8IG51bGwgPSBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldEVudGl0eVR5cGU7XG5cdGxldCByZXNldFZpc2l0ZWROYXZQcm9wcyA9IGZhbHNlO1xuXG5cdGRhdGFNb2RlbE9iamVjdFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMuZm9yRWFjaCgobmF2aWdhdGlvblByb3BlcnR5OiBOYXZpZ2F0aW9uUHJvcGVydHkpID0+IHtcblx0XHRpZiAocmVzZXRWaXNpdGVkTmF2UHJvcHMpIHtcblx0XHRcdHZpc2l0ZWROYXZpZ2F0aW9uUHJvcHNOYW1lID0gW107XG5cdFx0fVxuXHRcdHZpc2l0ZWROYXZpZ2F0aW9uUHJvcHNOYW1lLnB1c2gobmF2aWdhdGlvblByb3BlcnR5Lm5hbWUpO1xuXHRcdGFsbFZpc2l0ZWROYXZpZ2F0aW9uUHJvcHMucHVzaChuYXZpZ2F0aW9uUHJvcGVydHkpO1xuXHRcdGlmICghbmF2aWdhdGlvblByb3BlcnR5LmNvbnRhaW5zVGFyZ2V0KSB7XG5cdFx0XHQvLyBXZSBzaG91bGQgaGF2ZSBhIG5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcgYXNzb2NpYXRlZCB3aXRoIHRoZSBwYXRoIHNvIGZhciB3aGljaCBjYW4gY29uc2lzdCBvZiAoW0NvbnRhaW5tZW50TmF2UHJvcF0vKSpbTmF2UHJvcF1cblx0XHRcdGNvbnN0IGZ1bGxOYXZpZ2F0aW9uUGF0aCA9IHZpc2l0ZWROYXZpZ2F0aW9uUHJvcHNOYW1lLmpvaW4oXCIvXCIpO1xuXHRcdFx0aWYgKGN1cnJlbnRFbnRpdHlTZXQgJiYgY3VycmVudEVudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nLmhhc093blByb3BlcnR5KGZ1bGxOYXZpZ2F0aW9uUGF0aCkpIHtcblx0XHRcdFx0cGFyZW50RW50aXR5U2V0ID0gY3VycmVudEVudGl0eVNldDtcblx0XHRcdFx0Y3VycmVudEVudGl0eVNldCA9IGN1cnJlbnRFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1tmdWxsTmF2aWdhdGlvblBhdGhdO1xuXHRcdFx0XHR0YXJnZXRFbnRpdHlTZXQgPSBjdXJyZW50RW50aXR5U2V0O1xuXHRcdFx0XHQvLyBJZiB3ZSByZWFjaGVkIGEgbmF2aWdhdGlvbiBwcm9wZXJ0eSB3aXRoIGEgbmF2aWdhdGlvbnByb3BlcnR5YmluZGluZywgd2UgbmVlZCB0byByZXNldCB0aGUgdmlzaXRlZCBwYXRoIG9uIHRoZSBuZXh0IGl0ZXJhdGlvbiAoaWYgdGhlcmUgaXMgb25lKVxuXHRcdFx0XHRyZXNldFZpc2l0ZWROYXZQcm9wcyA9IHRydWU7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBXZSByZWFsbHkgc2hvdWxkIG5vdCBlbmQgdXAgaGVyZSBidXQgYXQgbGVhc3QgbGV0J3MgdHJ5IHRvIGF2b2lkIGluY29ycmVjdCBiZWhhdmlvclxuXHRcdFx0XHRwYXJlbnRFbnRpdHlTZXQgPSBjdXJyZW50RW50aXR5U2V0O1xuXHRcdFx0XHRjdXJyZW50RW50aXR5U2V0ID0gbnVsbDtcblx0XHRcdFx0cmVzZXRWaXNpdGVkTmF2UHJvcHMgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRwYXJlbnRFbnRpdHlTZXQgPSBjdXJyZW50RW50aXR5U2V0O1xuXHRcdFx0dGFyZ2V0RW50aXR5U2V0ID0gbnVsbDtcblx0XHR9XG5cdH0pO1xuXG5cdC8vIEF0IHRoaXMgcG9pbnQgd2UgaGF2ZSBuYXZpZ2F0ZWQgZG93biBhbGwgdGhlIG5hdiBwcm9wIGFuZCB3ZSBzaG91bGQgaGF2ZVxuXHQvLyBUaGUgdGFyZ2V0IGVudGl0eVNldCBwb2ludGluZyB0byBlaXRoZXIgbnVsbCAoaW4gY2FzZSBvZiBjb250YWlubWVudCBuYXZwcm9wIGEgbGFzdCBwYXJ0KSwgb3IgdGhlIGFjdHVhbCB0YXJnZXQgKG5vbiBjb250YWlubWVudCBhcyB0YXJnZXQpXG5cdC8vIFRoZSBwYXJlbnQgZW50aXR5U2V0IHBvaW50aW5nIHRvIHRoZSBwcmV2aW91cyBlbnRpdHlTZXQgdXNlZCBpbiB0aGUgcGF0aFxuXHQvLyBWaXNpdGVkTmF2aWdhdGlvblBhdGggc2hvdWxkIGNvbnRhaW4gdGhlIHBhdGggdXAgdG8gdGhpcyBwcm9wZXJ0eVxuXG5cdC8vIFJlc3RyaWN0aW9ucyBzaG91bGQgdGhlbiBiZSBldmFsdWF0ZWQgYXMgUGFyZW50RW50aXR5U2V0Lk5hdlJlc3RyaWN0aW9uc1tOYXZQcm9wZXJ0eVBhdGhdIHx8IFRhcmdldEVudGl0eVNldC5SZXN0cmljdGlvbnNcblx0Y29uc3QgZnVsbE5hdmlnYXRpb25QYXRoID0gdmlzaXRlZE5hdmlnYXRpb25Qcm9wc05hbWUuam9pbihcIi9cIik7XG5cdGxldCByZXN0cmljdGlvbnMsIHZpc2l0ZWROYXZQcm9wcztcblx0aWYgKHBhcmVudEVudGl0eVNldCAhPT0gbnVsbCkge1xuXHRcdGNvbnN0IF9wYXJlbnRFbnRpdHlTZXQ6IEVudGl0eVNldCA9IHBhcmVudEVudGl0eVNldDtcblx0XHRfcGFyZW50RW50aXR5U2V0LmFubm90YXRpb25zPy5DYXBhYmlsaXRpZXM/Lk5hdmlnYXRpb25SZXN0cmljdGlvbnM/LlJlc3RyaWN0ZWRQcm9wZXJ0aWVzLmZvckVhY2goXG5cdFx0XHQocmVzdHJpY3RlZE5hdlByb3A6IE5hdmlnYXRpb25Qcm9wZXJ0eVJlc3RyaWN0aW9uVHlwZXMpID0+IHtcblx0XHRcdFx0aWYgKHJlc3RyaWN0ZWROYXZQcm9wLk5hdmlnYXRpb25Qcm9wZXJ0eT8udHlwZSA9PT0gXCJOYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCIpIHtcblx0XHRcdFx0XHRjb25zdCByZXN0cmljdGlvbkRlZmluaXRpb24gPSBjaGVja0Z1bmN0aW9uKHJlc3RyaWN0ZWROYXZQcm9wKTtcblx0XHRcdFx0XHRpZiAoZnVsbE5hdmlnYXRpb25QYXRoID09PSByZXN0cmljdGVkTmF2UHJvcC5OYXZpZ2F0aW9uUHJvcGVydHkudmFsdWUgJiYgcmVzdHJpY3Rpb25EZWZpbml0aW9uICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRcdGNvbnN0IF9hbGxWaXNpdGVkTmF2aWdhdGlvblByb3BzID0gYWxsVmlzaXRlZE5hdmlnYXRpb25Qcm9wcy5zbGljZSgwLCAtMSk7XG5cdFx0XHRcdFx0XHR2aXNpdGVkTmF2UHJvcHMgPSBfYWxsVmlzaXRlZE5hdmlnYXRpb25Qcm9wcztcblx0XHRcdFx0XHRcdGNvbnN0IHBhdGhSZWxhdGl2ZUxvY2F0aW9uID0gZ2V0UGF0aFJlbGF0aXZlTG9jYXRpb24oZGF0YU1vZGVsT2JqZWN0UGF0aD8uY29udGV4dExvY2F0aW9uLCB2aXNpdGVkTmF2UHJvcHMpLm1hcChcblx0XHRcdFx0XHRcdFx0KG5wKSA9PiBucC5uYW1lXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0Y29uc3QgcGF0aFZpc2l0b3JGdW5jdGlvbiA9IGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoPy5wYXRoVmlzaXRvclxuXHRcdFx0XHRcdFx0XHQ/IGdldFBhdGhWaXNpdG9yRm9yU2luZ2xldG9uKGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoLnBhdGhWaXNpdG9yLCBwYXRoUmVsYXRpdmVMb2NhdGlvbilcblx0XHRcdFx0XHRcdFx0OiB1bmRlZmluZWQ7IC8vIHNlbmQgcGF0aFZpc2l0b3IgZnVuY3Rpb24gb25seSB3aGVuIGl0IGlzIGRlZmluZWQgYW5kIG9ubHkgc2VuZCBmdW5jdGlvbiBvciBkZWZpbmVkIGFzIGEgcGFyYW1ldGVyXG5cdFx0XHRcdFx0XHRyZXN0cmljdGlvbnMgPSBlcXVhbChcblx0XHRcdFx0XHRcdFx0Z2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKHJlc3RyaWN0aW9uRGVmaW5pdGlvbiwgcGF0aFJlbGF0aXZlTG9jYXRpb24sIHVuZGVmaW5lZCwgcGF0aFZpc2l0b3JGdW5jdGlvbiksXG5cdFx0XHRcdFx0XHRcdHRydWVcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0KTtcblx0fVxuXHRsZXQgdGFyZ2V0UmVzdHJpY3Rpb25zO1xuXHRpZiAoIWV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoPy5pZ25vcmVUYXJnZXRDb2xsZWN0aW9uKSB7XG5cdFx0bGV0IHJlc3RyaWN0aW9uRGVmaW5pdGlvbiA9IGNoZWNrRnVuY3Rpb24odGFyZ2V0RW50aXR5U2V0Py5hbm5vdGF0aW9ucz8uQ2FwYWJpbGl0aWVzKTtcblx0XHRpZiAodGFyZ2V0RW50aXR5U2V0ID09PSBudWxsICYmIHJlc3RyaWN0aW9uRGVmaW5pdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRyZXN0cmljdGlvbkRlZmluaXRpb24gPSBjaGVja0Z1bmN0aW9uKHRhcmdldEVudGl0eVR5cGU/LmFubm90YXRpb25zPy5DYXBhYmlsaXRpZXMpO1xuXHRcdH1cblx0XHRpZiAocmVzdHJpY3Rpb25EZWZpbml0aW9uICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGNvbnN0IHBhdGhSZWxhdGl2ZUxvY2F0aW9uID0gZ2V0UGF0aFJlbGF0aXZlTG9jYXRpb24oZGF0YU1vZGVsT2JqZWN0UGF0aC5jb250ZXh0TG9jYXRpb24sIGFsbFZpc2l0ZWROYXZpZ2F0aW9uUHJvcHMpLm1hcChcblx0XHRcdFx0KG5wKSA9PiBucC5uYW1lXG5cdFx0XHQpO1xuXHRcdFx0Y29uc3QgcGF0aFZpc2l0b3JGdW5jdGlvbiA9IGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoPy5wYXRoVmlzaXRvclxuXHRcdFx0XHQ/IGdldFBhdGhWaXNpdG9yRm9yU2luZ2xldG9uKGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoLnBhdGhWaXNpdG9yLCBwYXRoUmVsYXRpdmVMb2NhdGlvbilcblx0XHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0XHR0YXJnZXRSZXN0cmljdGlvbnMgPSBlcXVhbChcblx0XHRcdFx0Z2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKHJlc3RyaWN0aW9uRGVmaW5pdGlvbiwgcGF0aFJlbGF0aXZlTG9jYXRpb24sIHVuZGVmaW5lZCwgcGF0aFZpc2l0b3JGdW5jdGlvbiksXG5cdFx0XHRcdHRydWVcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIChcblx0XHRyZXN0cmljdGlvbnMgfHwgdGFyZ2V0UmVzdHJpY3Rpb25zIHx8IChleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aD8uYXV0aG9yaXplVW5yZXNvbHZhYmxlID8gdW5yZXNvbHZlYWJsZUV4cHJlc3Npb24gOiBjb25zdGFudCh0cnVlKSlcblx0KTtcbn07XG4vLyBUaGlzIGhlbHBlciBtZXRob2QgaXMgdXNlZCB0byBhZGQgcmVsYXRpdmUgcGF0aCBsb2NhdGlvbiBhcmd1bWVudCB0byBzaW5nbGV0b25QYXRoVmlzaXRvckZ1bmN0aW9uIGkuZS4gcGF0aFZpc2l0b3Jcbi8vIHBhdGhWaXNpdG9yIG1ldGhvZCBpcyB1c2VkIGxhdGVyIHRvIGdldCB0aGUgY29ycmVjdCBiaW5kaW5ncyBmb3Igc2luZ2xldG9uIGVudGl0eVxuLy8gbWV0aG9kIGlzIGludm9rZWQgbGF0ZXIgaW4gcGF0aEluTW9kZWwoKSBtZXRob2QgdG8gZ2V0IHRoZSBjb3JyZWN0IGJpbmRpbmcuXG5jb25zdCBnZXRQYXRoVmlzaXRvckZvclNpbmdsZXRvbiA9IGZ1bmN0aW9uIChwYXRoVmlzaXRvcjogRnVuY3Rpb24sIHBhdGhSZWxhdGl2ZUxvY2F0aW9uOiBzdHJpbmdbXSkge1xuXHRyZXR1cm4gZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuXHRcdHJldHVybiBwYXRoVmlzaXRvcihwYXRoLCBwYXRoUmVsYXRpdmVMb2NhdGlvbik7XG5cdH07XG59O1xuIl19
@@ -1,16 +1,24 @@
1
- import { ConverterOutput, EntitySet, EntityType, NavigationProperty, Property } from "@sap-ux/annotation-converter";
2
- import { PropertyPath } from "@sap-ux/vocabularies-types";
3
- import { NavigationPropertyRestrictionTypes } from "@sap-ux/vocabularies-types/dist/generated/Capabilities";
4
- import {
1
+ import type {
2
+ ConvertedMetadata,
3
+ EntitySet,
4
+ EntityType,
5
+ NavigationProperty,
6
+ Property,
7
+ PropertyPath,
8
+ Singleton
9
+ } from "@sap-ux/vocabularies-types";
10
+ import type {
11
+ FilterExpressionRestrictionTypeTypes,
12
+ NavigationPropertyRestriction,
13
+ NavigationPropertyRestrictionTypes
14
+ } from "@sap-ux/vocabularies-types/vocabularies/Capabilities";
15
+ import type {
5
16
  EntitySetAnnotations_Capabilities,
6
17
  EntityTypeAnnotations_Capabilities
7
- } from "@sap-ux/vocabularies-types/dist/generated/Capabilities_Edm";
8
- import {
9
- FilterExpressionRestrictionTypeTypes,
10
- NavigationPropertyRestriction
11
- } from "@sap-ux/vocabularies-types/types/generated/Capabilities";
12
- import { annotationExpression, constant, equal, Expression, unresolveableExpression } from "sap/fe/core/helpers/BindingExpression";
13
- import { PropertyOrPath } from "sap/fe/core/templating/DisplayModeFormatter";
18
+ } from "@sap-ux/vocabularies-types/vocabularies/Capabilities_Edm";
19
+ import type { BindingToolkitExpression } from "sap/fe/core/helpers/BindingToolkit";
20
+ import { constant, equal, getExpressionFromAnnotation, unresolveableExpression } from "sap/fe/core/helpers/BindingToolkit";
21
+ import type { PropertyOrPath } from "sap/fe/core/templating/DisplayModeFormatter";
14
22
  import { isAnnotationPathExpression, isPathExpression } from "sap/fe/core/templating/PropertyHelper";
15
23
 
16
24
  export type DataModelObjectPath = {
@@ -20,7 +28,7 @@ export type DataModelObjectPath = {
20
28
  targetEntitySet?: EntitySet;
21
29
  targetEntityType: EntityType;
22
30
  targetObject: any;
23
- convertedTypes: ConverterOutput;
31
+ convertedTypes: ConvertedMetadata;
24
32
  };
25
33
 
26
34
  type ExtractionParametersOnPath = {
@@ -90,7 +98,7 @@ export const enhanceDataModelPath = function (
90
98
  if ((isPathExpression(propertyPath) || isAnnotationPathExpression(propertyPath)) && propertyPath.path) {
91
99
  sPropertyPath = propertyPath.path;
92
100
  } else if (typeof propertyPath === "string") {
93
- sPropertyPath = propertyPath as string;
101
+ sPropertyPath = propertyPath;
94
102
  }
95
103
  let oTarget;
96
104
  if (isPathExpression(propertyPath) || isAnnotationPathExpression(propertyPath)) {
@@ -106,21 +114,23 @@ export const enhanceDataModelPath = function (
106
114
  const navigationProperties = dataModelObjectPath.navigationProperties.concat();
107
115
  // Process only if we have to go through navigation properties
108
116
 
109
- aPathSplit.reduce((reducedEntityType: EntityType | undefined, pathPart: string) => {
117
+ let reducedEntityType: EntityType | undefined = dataModelObjectPath.targetEntityType;
118
+ aPathSplit.forEach((pathPart: string) => {
110
119
  if (!reducedEntityType) {
111
- return undefined;
120
+ return;
112
121
  }
113
122
  const potentialNavProp = reducedEntityType.navigationProperties.find((navProp) => navProp.name === pathPart);
114
123
  if (potentialNavProp) {
115
124
  navigationProperties.push(potentialNavProp);
116
125
  currentEntityType = potentialNavProp.targetType;
117
126
  if (currentEntitySet && currentEntitySet.navigationPropertyBinding.hasOwnProperty(pathPart)) {
118
- currentEntitySet = currentEntitySet.navigationPropertyBinding[pathPart];
127
+ currentEntitySet = currentEntitySet.navigationPropertyBinding[pathPart] as EntitySet;
119
128
  }
120
- return currentEntityType;
129
+ reducedEntityType = currentEntityType;
130
+ } else {
131
+ reducedEntityType = undefined;
121
132
  }
122
- return undefined;
123
- }, dataModelObjectPath.targetEntityType);
133
+ });
124
134
 
125
135
  return {
126
136
  startingEntitySet: dataModelObjectPath.startingEntitySet,
@@ -141,7 +151,7 @@ export const getTargetEntitySetPath = function (dataModelObjectPath: DataModelOb
141
151
  navigatedPaths.push(navProp.name);
142
152
  if (currentEntitySet && currentEntitySet.navigationPropertyBinding.hasOwnProperty(navigatedPaths.join("/"))) {
143
153
  targetEntitySetPath += `/$NavigationPropertyBinding/${navigatedPaths.join("/")}/$`;
144
- currentEntitySet = currentEntitySet.navigationPropertyBinding[navigatedPaths.join("/")];
154
+ currentEntitySet = currentEntitySet.navigationPropertyBinding[navigatedPaths.join("/")] as EntitySet;
145
155
  navigatedPaths = [];
146
156
  }
147
157
  });
@@ -225,7 +235,7 @@ export const getContextRelativeTargetObjectPath = function (
225
235
  export const isPathUpdatable = function (
226
236
  dataModelObjectPath: DataModelObjectPath | undefined,
227
237
  extractionParametersOnPath?: ExtractionParametersOnPath
228
- ): Expression<boolean> {
238
+ ): BindingToolkitExpression<boolean> {
229
239
  return checkOnPath(
230
240
  dataModelObjectPath,
231
241
  (annotationObject: NavigationPropertyRestriction | EntitySetAnnotations_Capabilities) => {
@@ -238,7 +248,7 @@ export const isPathUpdatable = function (
238
248
  export const isPathSearchable = function (
239
249
  dataModelObjectPath: DataModelObjectPath | undefined,
240
250
  extractionParametersOnPath?: ExtractionParametersOnPath
241
- ): Expression<boolean> {
251
+ ): BindingToolkitExpression<boolean> {
242
252
  return checkOnPath(
243
253
  dataModelObjectPath,
244
254
  (annotationObject: NavigationPropertyRestriction | EntitySetAnnotations_Capabilities) => {
@@ -251,7 +261,7 @@ export const isPathSearchable = function (
251
261
  export const isPathDeletable = function (
252
262
  dataModelObjectPath: DataModelObjectPath | undefined,
253
263
  extractionParametersOnPath?: ExtractionParametersOnPath
254
- ): Expression<boolean> {
264
+ ): BindingToolkitExpression<boolean> {
255
265
  return checkOnPath(
256
266
  dataModelObjectPath,
257
267
  (annotationObject: NavigationPropertyRestriction | EntitySetAnnotations_Capabilities) => {
@@ -264,7 +274,7 @@ export const isPathDeletable = function (
264
274
  export const isPathInsertable = function (
265
275
  dataModelObjectPath: DataModelObjectPath | undefined,
266
276
  extractionParametersOnPath?: ExtractionParametersOnPath
267
- ): Expression<boolean> {
277
+ ): BindingToolkitExpression<boolean> {
268
278
  return checkOnPath(
269
279
  dataModelObjectPath,
270
280
  (annotationObject: NavigationPropertyRestriction | EntitySetAnnotations_Capabilities) => {
@@ -277,7 +287,7 @@ export const isPathInsertable = function (
277
287
  export const checkFilterExpressionRestrictions = function (
278
288
  dataModelObjectPath: DataModelObjectPath,
279
289
  allowedExpression: (string | undefined)[]
280
- ): Expression<boolean> {
290
+ ): BindingToolkitExpression<boolean> {
281
291
  return checkOnPath(
282
292
  dataModelObjectPath,
283
293
  (annotationObject: NavigationPropertyRestriction | EntitySetAnnotations_Capabilities | EntityTypeAnnotations_Capabilities) => {
@@ -303,18 +313,18 @@ export const checkOnPath = function (
303
313
  dataModelObjectPath: DataModelObjectPath | undefined,
304
314
  checkFunction: Function,
305
315
  extractionParametersOnPath?: ExtractionParametersOnPath
306
- ): Expression<boolean> {
316
+ ): BindingToolkitExpression<boolean> {
307
317
  if (!dataModelObjectPath || !dataModelObjectPath.startingEntitySet) {
308
318
  return constant(true);
309
319
  }
310
320
 
311
321
  dataModelObjectPath = enhanceDataModelPath(dataModelObjectPath, extractionParametersOnPath?.propertyPath);
312
322
 
313
- let currentEntitySet: EntitySet | null = dataModelObjectPath.startingEntitySet;
314
- let parentEntitySet: EntitySet | null = null;
323
+ let currentEntitySet: EntitySet | Singleton | null = dataModelObjectPath.startingEntitySet;
324
+ let parentEntitySet: EntitySet | Singleton | null = null;
315
325
  let visitedNavigationPropsName: string[] = [];
316
326
  const allVisitedNavigationProps: NavigationProperty[] = [];
317
- let targetEntitySet: EntitySet | null = currentEntitySet;
327
+ let targetEntitySet: EntitySet | Singleton | null = currentEntitySet;
318
328
  const targetEntityType: EntityType | null = dataModelObjectPath.targetEntityType;
319
329
  let resetVisitedNavProps = false;
320
330
 
@@ -369,7 +379,7 @@ export const checkOnPath = function (
369
379
  ? getPathVisitorForSingleton(extractionParametersOnPath.pathVisitor, pathRelativeLocation)
370
380
  : undefined; // send pathVisitor function only when it is defined and only send function or defined as a parameter
371
381
  restrictions = equal(
372
- annotationExpression(restrictionDefinition, pathRelativeLocation, undefined, pathVisitorFunction),
382
+ getExpressionFromAnnotation(restrictionDefinition, pathRelativeLocation, undefined, pathVisitorFunction),
373
383
  true
374
384
  );
375
385
  }
@@ -391,7 +401,7 @@ export const checkOnPath = function (
391
401
  ? getPathVisitorForSingleton(extractionParametersOnPath.pathVisitor, pathRelativeLocation)
392
402
  : undefined;
393
403
  targetRestrictions = equal(
394
- annotationExpression(restrictionDefinition, pathRelativeLocation, undefined, pathVisitorFunction),
404
+ getExpressionFromAnnotation(restrictionDefinition, pathRelativeLocation, undefined, pathVisitorFunction),
395
405
  true
396
406
  );
397
407
  }
@@ -403,7 +413,7 @@ export const checkOnPath = function (
403
413
  };
404
414
  // This helper method is used to add relative path location argument to singletonPathVisitorFunction i.e. pathVisitor
405
415
  // pathVisitor method is used later to get the correct bindings for singleton entity
406
- // method is invoked later in bindingExpression() method to get the correct binding.
416
+ // method is invoked later in pathInModel() method to get the correct binding.
407
417
  const getPathVisitorForSingleton = function (pathVisitor: Function, pathRelativeLocation: string[]) {
408
418
  return function (path: string) {
409
419
  return pathVisitor(path, pathRelativeLocation);
@@ -131,4 +131,4 @@ sap.ui.define(["sap/fe/core/templating/PropertyHelper"], function (PropertyHelpe
131
131
  _exports.getDisplayMode = getDisplayMode;
132
132
  return _exports;
133
133
  }, false);
134
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRpc3BsYXlNb2RlRm9ybWF0dGVyLnRzIl0sIm5hbWVzIjpbIkVETV9UWVBFX01BUFBJTkciLCJ0eXBlIiwiY29uc3RyYWludHMiLCJPREFUQV9UWVBFX01BUFBJTkciLCJnZXREaXNwbGF5TW9kZSIsIm9Qcm9wZXJ0eVBhdGgiLCJvRGF0YU1vZGVsT2JqZWN0UGF0aCIsIm9Qcm9wZXJ0eSIsImlzUGF0aEV4cHJlc3Npb24iLCJpc1Byb3BlcnR5UGF0aEV4cHJlc3Npb24iLCIkdGFyZ2V0Iiwib0VudGl0eVR5cGUiLCJ0YXJnZXRFbnRpdHlUeXBlIiwib1RleHRBbm5vdGF0aW9uIiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJUZXh0Iiwib1RleHRBcnJhbmdlbWVudEFubm90YXRpb24iLCJVSSIsIlRleHRBcnJhbmdlbWVudCIsInRvU3RyaW5nIiwic0Rpc3BsYXlWYWx1ZSJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFXTyxNQUFNQSxnQkFBcUMsR0FBRztBQUNwRCxtQkFBZTtBQUFFQyxNQUFBQSxJQUFJLEVBQUU7QUFBUixLQURxQztBQUVwRCxnQkFBWTtBQUFFQSxNQUFBQSxJQUFJLEVBQUU7QUFBUixLQUZ3QztBQUdwRCxnQkFBWTtBQUFFQSxNQUFBQSxJQUFJLEVBQUU7QUFBUixLQUh3QztBQUlwRCwwQkFBc0I7QUFDckJDLE1BQUFBLFdBQVcsRUFBRTtBQUNaLHNCQUFjLFdBREY7QUFFWixlQUFPO0FBRkssT0FEUTtBQUtyQkQsTUFBQUEsSUFBSSxFQUFFO0FBTGUsS0FKOEI7QUFXcEQsbUJBQWU7QUFDZEMsTUFBQUEsV0FBVyxFQUFFO0FBQ1oscURBQTZDLFNBRGpDO0FBRVosOEVBQXNFLGtCQUYxRDtBQUdaLHFEQUE2QyxTQUhqQztBQUlaLDhFQUFzRSxrQkFKMUQ7QUFLWixzQkFBYyxXQUxGO0FBTVosa0JBQVU7QUFORSxPQURDO0FBU2RELE1BQUFBLElBQUksRUFBRTtBQVRRLEtBWHFDO0FBc0JwRCxrQkFBYztBQUFF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QW1ELHVCQUErQ0MsUUFBL0MsRUFBdkQsRUFBa0g7QUFDakgsVUFBSUgsMEJBQTBCLEtBQUssaUNBQW5DLEVBQXNFO0FBQ3JFSSxRQUFBQSxhQUFhLEdBQUcsYUFBaEI7QUFDQSxPQUZELE1BRU8sSUFBSUosMEJBQTBCLEtBQUssaUNBQW5DLEVBQXNFO0FBQzVFSSxRQUFBQSxhQUFhLEdBQUcsa0JBQWhCO0FBQ0EsT0FGTSxNQUVBLElBQUlKLDBCQUEwQixLQUFLLHFDQUFuQyxFQUEwRTtBQUNoRkksUUFBQUEsYUFBYSxHQUFHLE9BQWhCO0FBQ0EsT0FGTSxNQUVBO0FBQ047QUFDQUEsUUFBQUEsYUFBYSxHQUFHLGtCQUFoQjtBQUNBO0FBQ0Q7O0FBQ0QsV0FBT0EsYUFBUDtBQUNBLEdBM0JNIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNlcGFyYXRpbmcgdGhlc2UgbWV0aG9kcyBmcm9tIHRoZSBVSUZvcm1hdHRlcnMgYXMgdGhleSBhcmUgdXNlZCBhbHNvIGluIHRoZSBjb252ZXJ0ZXIuXG4gKiBUaGVzZSBtZXRob2RzIG11c3QgTk9UIHVzZSBhbnkgZGVwZW5kZW5jeSBmcm9tIHRoZSBTQVAgVUk1IHJ1bnRpbWUuXG4gKiBXaGVuIGNvbnN1bWVkIG91dHNpZGUgb2YgY29udmVydGVycywgeW91IHNob3VsZCBjYWxsIHRoZW0gdmlhIFVJRm9ybWF0dGVycy5cbiAqL1xuXG5pbXBvcnQgeyBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L2Fubm90YXRpb24tY29udmVydGVyXCI7XG5pbXBvcnQgeyBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24gfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdHlwZXMvRWRtXCI7XG5pbXBvcnQgeyBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHsgaXNQYXRoRXhwcmVzc2lvbiwgaXNQcm9wZXJ0eVBhdGhFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvUHJvcGVydHlIZWxwZXJcIjtcblxuZXhwb3J0IHR5cGUgUHJvcGVydHlPclBhdGg8UD4gPSBzdHJpbmcgfCBQIHwgUGF0aEFubm90YXRpb25FeHByZXNzaW9uPFA+O1xuXG5leHBvcnQgY29uc3QgRURNX1RZUEVfTUFQUElORzogUmVjb3JkPHN0cmluZywgYW55PiA9IHtcblx0XCJFZG0uQm9vbGVhblwiOiB7IHR5cGU6IFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuQm9vbGVhblwiIH0sXG5cdFwiRWRtLkJ5dGVcIjogeyB0eXBlOiBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkJ5dGVcIiB9LFxuXHRcIkVkbS5EYXRlXCI6IHsgdHlwZTogXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5EYXRlXCIgfSxcblx0XCJFZG0uRGF0ZVRpbWVPZmZzZXRcIjoge1xuXHRcdGNvbnN0cmFpbnRzOiB7XG5cdFx0XHRcIiRQcmVjaXNpb25cIjogXCJwcmVjaXNpb25cIixcblx0XHRcdFwiJFY0XCI6IFwiVjRcIlxuXHRcdH0sXG5cdFx0dHlwZTogXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5EYXRlVGltZU9mZnNldFwiXG5cdH0sXG5cdFwiRWRtLkRlY2ltYWxcIjoge1xuXHRcdGNvbnN0cmFpbnRzOiB7XG5cdFx0XHRcIkBPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMS5NaW5pbXVtLyREZWNpbWFsXCI6IFwibWluaW11bVwiLFxuXHRcdFx0XCJAT3JnLk9EYXRhLlZhbGlkYXRpb24uVjEuTWluaW11bUBPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMS5FeGNsdXNpdmVcIjogXCJtaW5pbXVtRXhjbHVzaXZlXCIsXG5cdFx0XHRcIkBPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMS5NYXhpbXVtLyREZWNpbWFsXCI6IFwibWF4aW11bVwiLFxuXHRcdFx0XCJAT3JnLk9EYXRhLlZhbGlkYXRpb24uVjEuTWF4aW11bUBPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMS5FeGNsdXNpdmVcIjogXCJtYXhpbXVtRXhjbHVzaXZlXCIsXG5cdFx0XHRcIiRQcmVjaXNpb25cIjogXCJwcmVjaXNpb25cIixcblx0XHRcdFwiJFNjYWxlXCI6IFwic2NhbGVcIlxuXHRcdH0sXG5cdFx0dHlwZTogXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5EZWNpbWFsXCJcblx0fSxcblx0XCJFZG0uRG91YmxlXCI6IHsgdHlwZTogXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5Eb3VibGVcIiB9LFxuXHRcIkVkbS5HdWlkXCI6IHsgdHlwZTogXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5HdWlkXCIgfSxcblx0XCJFZG0uSW50MTZcIjogeyB0eXBlOiBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkludDE2XCIgfSxcblx0XCJFZG0uSW50MzJcIjogeyB0eXBlOiBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkludDMyXCIgfSxcblx0XCJFZG0uSW50NjRcIjogeyB0eXBlOiBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkludDY0XCIgfSxcblx0XCJFZG0uU0J5dGVcIjogeyB0eXBlOiBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlNCeXRlXCIgfSxcblx0XCJFZG0uU2luZ2xlXCI6IHsgdHlwZTogXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5TaW5nbGVcIiB9LFxuXHRcIkVkbS5TdHJlYW1cIjogeyB0eXBlOiBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlN0cmVhbVwiIH0sXG5cdFwiRWRtLkJpbmFyeVwiOiB7IHR5cGU6IFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuU3RyZWFtXCIgfSxcblx0XCJFZG0uU3RyaW5nXCI6IHtcblx0XHRjb25zdHJhaW50czoge1xuXHRcdFx0XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzRGlnaXRTZXF1ZW5jZVwiOiBcImlzRGlnaXRTZXF1ZW5jZVwiLFxuXHRcdFx0XCIkTWF4TGVuZ3RoXCI6IFwibWF4TGVuZ3RoXCIsXG5cdFx0XHRcIiROdWxsYWJsZVwiOiBcIm51bGxhYmxlXCJcblx0XHR9LFxuXHRcdHR5cGU6IFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuU3RyaW5nXCJcblx0fSxcblx0XCJFZG0uVGltZU9mRGF5XCI6IHtcblx0XHRjb25zdHJhaW50czoge1xuXHRcdFx0XCIkUHJlY2lzaW9uXCI6IFwicHJlY2lzaW9uXCJcblx0XHR9LFxuXHRcdHR5cGU6IFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuVGltZU9mRGF5XCJcblx0fVxufTtcblxuZXhwb3J0IGNvbnN0IE9EQVRBX1RZUEVfTUFQUElORzogUmVjb3JkPHN0cmluZywgYW55PiA9IHtcblx0XCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5Cb29sZWFuXCI6IFwiRWRtLkJvb2xlYW5cIixcblx0XCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5CeXRlXCI6IFwiRWRtLkJ5dGVcIixcblx0XCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5EYXRlXCI6IFwiRWRtLkRhdGVcIixcblx0XCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5EYXRlVGltZU9mZnNldFwiOiBcIkVkbS5EYXRlVGltZU9mZnNldFwiLFxuXHRcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkRlY2ltYWxcIjogXCJFZG0uRGVjaW1hbFwiLFxuXHRcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkRvdWJsZVwiOiBcIkVkbS5Eb3VibGVcIixcblx0XCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5HdWlkXCI6IFwiRWRtLkd1aWRcIixcblx0XCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5JbnQxNlwiOiBcIkVkbS5JbnQxNlwiLFxuXHRcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkludDMyXCI6IFwiRWRtLkludDMyXCIsXG5cdFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuSW50NjRcIjogXCJFZG0uSW50NjRcIixcblx0XCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5TQnl0ZVwiOiBcIkVkbS5TQnl0ZVwiLFxuXHRcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlNpbmdsZVwiOiBcIkVkbS5TaW5nbGVcIixcblx0XCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5TdHJlYW1cIjogXCJFZG0uU3RyZWFtXCIsXG5cdFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuVGltZU9mRGF5XCI6IFwiRWRtLlRpbWVPZkRheVwiLFxuXHRcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlN0cmluZ1wiOiBcIkVkbS5TdHJpbmdcIlxufTtcblxuZXhwb3J0IHR5cGUgRGlzcGxheU1vZGUgPSBcIlZhbHVlXCIgfCBcIkRlc2NyaXB0aW9uXCIgfCBcIkRlc2NyaXB0aW9uVmFsdWVcIiB8IFwiVmFsdWVEZXNjcmlwdGlvblwiO1xuZXhwb3J0IGNvbnN0IGdldERpc3BsYXlNb2RlID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eVBhdGg6IFByb3BlcnR5T3JQYXRoPFByb3BlcnR5Piwgb0RhdGFNb2RlbE9iamVjdFBhdGg/OiBEYXRhTW9kZWxPYmplY3RQYXRoKTogRGlzcGxheU1vZGUge1xuXHRpZiAoIW9Qcm9wZXJ0eVBhdGggfHwgdHlwZW9mIG9Qcm9wZXJ0eVBhdGggPT09IFwic3RyaW5nXCIpIHtcblx0XHRyZXR1cm4gXCJWYWx1ZVwiO1xuXHR9XG5cdGNvbnN0IG9Qcm9wZXJ0eSA9XG5cdFx0KChpc1BhdGhFeHByZXNzaW9uKG9Qcm9wZXJ0eVBhdGgpIHx8IGlzUHJvcGVydHlQYXRoRXhwcmVzc2lvbihvUHJvcGVydHlQYXRoKSkgJiYgKG9Qcm9wZXJ0eVBhdGguJHRhcmdldCBhcyBQcm9wZXJ0eSkpIHx8XG5cdFx0KG9Qcm9wZXJ0eVBhdGggYXMgUHJvcGVydHkpO1xuXHRjb25zdCBvRW50aXR5VHlwZSA9IG9EYXRhTW9kZWxPYmplY3RQYXRoICYmIG9EYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldEVudGl0eVR5cGU7XG5cdGNvbnN0IG9UZXh0QW5ub3RhdGlvbiA9IG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uQ29tbW9uPy5UZXh0O1xuXHRjb25zdCBvVGV4dEFycmFuZ2VtZW50QW5ub3RhdGlvbiA9XG5cdFx0KHR5cGVvZiBvVGV4dEFubm90YXRpb24gIT09IFwic3RyaW5nXCIgJiYgb1RleHRBbm5vdGF0aW9uPy5hbm5vdGF0aW9ucz8uVUk/LlRleHRBcnJhbmdlbWVudD8udG9TdHJpbmcoKSkgfHxcblx0XHRvRW50aXR5VHlwZT8uYW5ub3RhdGlvbnM/LlVJPy5UZXh0QXJyYW5nZW1lbnQ/LnRvU3RyaW5nKCk7XG5cblx0bGV0IHNEaXNwbGF5VmFsdWUgPSBvVGV4dEFubm90YXRpb24gPyBcIkRlc2NyaXB0aW9uVmFsdWVcIiA6IFwiVmFsdWVcIjtcblx0aWYgKChvVGV4dEFubm90YXRpb24gJiYgb1RleHRBcnJhbmdlbWVudEFubm90YXRpb24pIHx8IG9FbnRpdHlUeXBlPy5hbm5vdGF0aW9ucz8uVUk/LlRleHRBcnJhbmdlbWVudD8udG9TdHJpbmcoKSkge1xuXHRcdGlmIChvVGV4dEFycmFuZ2VtZW50QW5ub3RhdGlvbiA9PT0gXCJVSS5UZXh0QXJyYW5nZW1lbnRUeXBlL1RleHRPbmx5XCIpIHtcblx0XHRcdHNEaXNwbGF5VmFsdWUgPSBcIkRlc2NyaXB0aW9uXCI7XG5cdFx0fSBlbHNlIGlmIChvVGV4dEFycmFuZ2VtZW50QW5ub3RhdGlvbiA9PT0gXCJVSS5UZXh0QXJyYW5nZW1lbnRUeXBlL1RleHRMYXN0XCIpIHtcblx0XHRcdHNEaXNwbGF5VmFsdWUgPSBcIlZhbHVlRGVzY3JpcHRpb25cIjtcblx0XHR9IGVsc2UgaWYgKG9UZXh0QXJyYW5nZW1lbnRBbm5vdGF0aW9uID09PSBcIlVJLlRleHRBcnJhbmdlbWVudFR5cGUvVGV4dFNlcGFyYXRlXCIpIHtcblx0XHRcdHNEaXNwbGF5VmFsdWUgPSBcIlZhbHVlXCI7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vRGVmYXVsdCBzaG91bGQgYmUgVGV4dEZpcnN0IGlmIHRoZXJlIGlzIGEgVGV4dCBhbm5vdGF0aW9uIGFuZCBuZWl0aGVyIFRleHRPbmx5IG5vciBUZXh0TGFzdCBhcmUgc2V0XG5cdFx0XHRzRGlzcGxheVZhbHVlID0gXCJEZXNjcmlwdGlvblZhbHVlXCI7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBzRGlzcGxheVZhbHVlIGFzIERpc3BsYXlNb2RlO1xufTtcbiJdfQ==
134
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRpc3BsYXlNb2RlRm9ybWF0dGVyLnRzIl0sIm5hbWVzIjpbIkVETV9UWVBFX01BUFBJTkciLCJ0eXBlIiwiY29uc3RyYWludHMiLCJPREFUQV9UWVBFX01BUFBJTkciLCJnZXREaXNwbGF5TW9kZSIsIm9Qcm9wZXJ0eVBhdGgiLCJvRGF0YU1vZGVsT2JqZWN0UGF0aCIsIm9Qcm9wZXJ0eSIsImlzUGF0aEV4cHJlc3Npb24iLCJpc1Byb3BlcnR5UGF0aEV4cHJlc3Npb24iLCIkdGFyZ2V0Iiwib0VudGl0eVR5cGUiLCJ0YXJnZXRFbnRpdHlUeXBlIiwib1RleHRBbm5vdGF0aW9uIiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJUZXh0Iiwib1RleHRBcnJhbmdlbWVudEFubm90YXRpb24iLCJVSSIsIlRleHRBcnJhbmdlbWVudCIsInRvU3RyaW5nIiwic0Rpc3BsYXlWYWx1ZSJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFVTyxNQUFNQSxnQkFBcUMsR0FBRztBQUNwRCxtQkFBZTtBQUFFQyxNQUFBQSxJQUFJLEVBQUU7QUFBUixLQURxQztBQUVwRCxnQkFBWTtBQUFFQSxNQUFBQSxJQUFJLEVBQUU7QUFBUixLQUZ3QztBQUdwRCxnQkFBWTtBQUFFQSxNQUFBQSxJQUFJLEVBQUU7QUFBUixLQUh3QztBQUlwRCwwQkFBc0I7QUFDckJDLE1BQUFBLFdBQVcsRUFBRTtBQUNaLHNCQUFjLFdBREY7QUFFWixlQUFPO0FBRkssT0FEUTtBQUtyQkQsTUFBQUEsSUFBSSxFQUFFO0FBTGUsS0FKOEI7QUFXcEQsbUJBQWU7QUFDZEMsTUFBQUEsV0FBVyxFQUFFO0FBQ1oscURBQTZDLFNBRGpDO0FBRVosOEVBQXNFLGtCQUYxRDtBQUdaLHFEQUE2QyxTQUhqQztBQUlaLDhFQUFzRSxrQkFKMUQ7QUFLWixzQkFBYyxXQUxGO0FBTVosa0JBQVU7QUFORSxPQURDO0FBU2RELE1BQUFBLElBQUksRUFBRTtBQVRRLEtBWHFDO0FBc0JwRCxrQkFBYztBQUFF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QW1ELHVCQUErQ0MsUUFBL0MsRUFBdkQsRUFBa0g7QUFDakgsVUFBSUgsMEJBQTBCLEtBQUssaUNBQW5DLEVBQXNFO0FBQ3JFSSxRQUFBQSxhQUFhLEdBQUcsYUFBaEI7QUFDQSxPQUZELE1BRU8sSUFBSUosMEJBQTBCLEtBQUssaUNBQW5DLEVBQXNFO0FBQzVFSSxRQUFBQSxhQUFhLEdBQUcsa0JBQWhCO0FBQ0EsT0FGTSxNQUVBLElBQUlKLDBCQUEwQixLQUFLLHFDQUFuQyxFQUEwRTtBQUNoRkksUUFBQUEsYUFBYSxHQUFHLE9BQWhCO0FBQ0EsT0FGTSxNQUVBO0FBQ047QUFDQUEsUUFBQUEsYUFBYSxHQUFHLGtCQUFoQjtBQUNBO0FBQ0Q7O0FBQ0QsV0FBT0EsYUFBUDtBQUNBLEdBM0JNIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNlcGFyYXRpbmcgdGhlc2UgbWV0aG9kcyBmcm9tIHRoZSBVSUZvcm1hdHRlcnMgYXMgdGhleSBhcmUgdXNlZCBhbHNvIGluIHRoZSBjb252ZXJ0ZXIuXG4gKiBUaGVzZSBtZXRob2RzIG11c3QgTk9UIHVzZSBhbnkgZGVwZW5kZW5jeSBmcm9tIHRoZSBTQVAgVUk1IHJ1bnRpbWUuXG4gKiBXaGVuIGNvbnN1bWVkIG91dHNpZGUgb2YgY29udmVydGVycywgeW91IHNob3VsZCBjYWxsIHRoZW0gdmlhIFVJRm9ybWF0dGVycy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbiwgUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGlzUGF0aEV4cHJlc3Npb24sIGlzUHJvcGVydHlQYXRoRXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1Byb3BlcnR5SGVscGVyXCI7XG5cbmV4cG9ydCB0eXBlIFByb3BlcnR5T3JQYXRoPFA+ID0gc3RyaW5nIHwgUCB8IFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjxQPjtcblxuZXhwb3J0IGNvbnN0IEVETV9UWVBFX01BUFBJTkc6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XG5cdFwiRWRtLkJvb2xlYW5cIjogeyB0eXBlOiBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkJvb2xlYW5cIiB9LFxuXHRcIkVkbS5CeXRlXCI6IHsgdHlwZTogXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5CeXRlXCIgfSxcblx0XCJFZG0uRGF0ZVwiOiB7IHR5cGU6IFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuRGF0ZVwiIH0sXG5cdFwiRWRtLkRhdGVUaW1lT2Zmc2V0XCI6IHtcblx0XHRjb25zdHJhaW50czoge1xuXHRcdFx0XCIkUHJlY2lzaW9uXCI6IFwicHJlY2lzaW9uXCIsXG5cdFx0XHRcIiRWNFwiOiBcIlY0XCJcblx0XHR9LFxuXHRcdHR5cGU6IFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuRGF0ZVRpbWVPZmZzZXRcIlxuXHR9LFxuXHRcIkVkbS5EZWNpbWFsXCI6IHtcblx0XHRjb25zdHJhaW50czoge1xuXHRcdFx0XCJAT3JnLk9EYXRhLlZhbGlkYXRpb24uVjEuTWluaW11bS8kRGVjaW1hbFwiOiBcIm1pbmltdW1cIixcblx0XHRcdFwiQE9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLk1pbmltdW1AT3JnLk9EYXRhLlZhbGlkYXRpb24uVjEuRXhjbHVzaXZlXCI6IFwibWluaW11bUV4Y2x1c2l2ZVwiLFxuXHRcdFx0XCJAT3JnLk9EYXRhLlZhbGlkYXRpb24uVjEuTWF4aW11bS8kRGVjaW1hbFwiOiBcIm1heGltdW1cIixcblx0XHRcdFwiQE9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLk1heGltdW1AT3JnLk9EYXRhLlZhbGlkYXRpb24uVjEuRXhjbHVzaXZlXCI6IFwibWF4aW11bUV4Y2x1c2l2ZVwiLFxuXHRcdFx0XCIkUHJlY2lzaW9uXCI6IFwicHJlY2lzaW9uXCIsXG5cdFx0XHRcIiRTY2FsZVwiOiBcInNjYWxlXCJcblx0XHR9LFxuXHRcdHR5cGU6IFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuRGVjaW1hbFwiXG5cdH0sXG5cdFwiRWRtLkRvdWJsZVwiOiB7IHR5cGU6IFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuRG91YmxlXCIgfSxcblx0XCJFZG0uR3VpZFwiOiB7IHR5cGU6IFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuR3VpZFwiIH0sXG5cdFwiRWRtLkludDE2XCI6IHsgdHlwZTogXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5JbnQxNlwiIH0sXG5cdFwiRWRtLkludDMyXCI6IHsgdHlwZTogXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5JbnQzMlwiIH0sXG5cdFwiRWRtLkludDY0XCI6IHsgdHlwZTogXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5JbnQ2NFwiIH0sXG5cdFwiRWRtLlNCeXRlXCI6IHsgdHlwZTogXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5TQnl0ZVwiIH0sXG5cdFwiRWRtLlNpbmdsZVwiOiB7IHR5cGU6IFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuU2luZ2xlXCIgfSxcblx0XCJFZG0uU3RyZWFtXCI6IHsgdHlwZTogXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5TdHJlYW1cIiB9LFxuXHRcIkVkbS5CaW5hcnlcIjogeyB0eXBlOiBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlN0cmVhbVwiIH0sXG5cdFwiRWRtLlN0cmluZ1wiOiB7XG5cdFx0Y29uc3RyYWludHM6IHtcblx0XHRcdFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc0RpZ2l0U2VxdWVuY2VcIjogXCJpc0RpZ2l0U2VxdWVuY2VcIixcblx0XHRcdFwiJE1heExlbmd0aFwiOiBcIm1heExlbmd0aFwiLFxuXHRcdFx0XCIkTnVsbGFibGVcIjogXCJudWxsYWJsZVwiXG5cdFx0fSxcblx0XHR0eXBlOiBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlN0cmluZ1wiXG5cdH0sXG5cdFwiRWRtLlRpbWVPZkRheVwiOiB7XG5cdFx0Y29uc3RyYWludHM6IHtcblx0XHRcdFwiJFByZWNpc2lvblwiOiBcInByZWNpc2lvblwiXG5cdFx0fSxcblx0XHR0eXBlOiBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlRpbWVPZkRheVwiXG5cdH1cbn07XG5cbmV4cG9ydCBjb25zdCBPREFUQV9UWVBFX01BUFBJTkc6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XG5cdFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuQm9vbGVhblwiOiBcIkVkbS5Cb29sZWFuXCIsXG5cdFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuQnl0ZVwiOiBcIkVkbS5CeXRlXCIsXG5cdFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuRGF0ZVwiOiBcIkVkbS5EYXRlXCIsXG5cdFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuRGF0ZVRpbWVPZmZzZXRcIjogXCJFZG0uRGF0ZVRpbWVPZmZzZXRcIixcblx0XCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5EZWNpbWFsXCI6IFwiRWRtLkRlY2ltYWxcIixcblx0XCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5Eb3VibGVcIjogXCJFZG0uRG91YmxlXCIsXG5cdFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuR3VpZFwiOiBcIkVkbS5HdWlkXCIsXG5cdFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuSW50MTZcIjogXCJFZG0uSW50MTZcIixcblx0XCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5JbnQzMlwiOiBcIkVkbS5JbnQzMlwiLFxuXHRcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkludDY0XCI6IFwiRWRtLkludDY0XCIsXG5cdFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuU0J5dGVcIjogXCJFZG0uU0J5dGVcIixcblx0XCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5TaW5nbGVcIjogXCJFZG0uU2luZ2xlXCIsXG5cdFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuU3RyZWFtXCI6IFwiRWRtLlN0cmVhbVwiLFxuXHRcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlRpbWVPZkRheVwiOiBcIkVkbS5UaW1lT2ZEYXlcIixcblx0XCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5TdHJpbmdcIjogXCJFZG0uU3RyaW5nXCJcbn07XG5cbmV4cG9ydCB0eXBlIERpc3BsYXlNb2RlID0gXCJWYWx1ZVwiIHwgXCJEZXNjcmlwdGlvblwiIHwgXCJEZXNjcmlwdGlvblZhbHVlXCIgfCBcIlZhbHVlRGVzY3JpcHRpb25cIjtcbmV4cG9ydCBjb25zdCBnZXREaXNwbGF5TW9kZSA9IGZ1bmN0aW9uIChvUHJvcGVydHlQYXRoOiBQcm9wZXJ0eU9yUGF0aDxQcm9wZXJ0eT4sIG9EYXRhTW9kZWxPYmplY3RQYXRoPzogRGF0YU1vZGVsT2JqZWN0UGF0aCk6IERpc3BsYXlNb2RlIHtcblx0aWYgKCFvUHJvcGVydHlQYXRoIHx8IHR5cGVvZiBvUHJvcGVydHlQYXRoID09PSBcInN0cmluZ1wiKSB7XG5cdFx0cmV0dXJuIFwiVmFsdWVcIjtcblx0fVxuXHRjb25zdCBvUHJvcGVydHkgPVxuXHRcdCgoaXNQYXRoRXhwcmVzc2lvbihvUHJvcGVydHlQYXRoKSB8fCBpc1Byb3BlcnR5UGF0aEV4cHJlc3Npb24ob1Byb3BlcnR5UGF0aCkpICYmIChvUHJvcGVydHlQYXRoLiR0YXJnZXQgYXMgUHJvcGVydHkpKSB8fFxuXHRcdChvUHJvcGVydHlQYXRoIGFzIFByb3BlcnR5KTtcblx0Y29uc3Qgb0VudGl0eVR5cGUgPSBvRGF0YU1vZGVsT2JqZWN0UGF0aCAmJiBvRGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRFbnRpdHlUeXBlO1xuXHRjb25zdCBvVGV4dEFubm90YXRpb24gPSBvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVGV4dDtcblx0Y29uc3Qgb1RleHRBcnJhbmdlbWVudEFubm90YXRpb24gPVxuXHRcdCh0eXBlb2Ygb1RleHRBbm5vdGF0aW9uICE9PSBcInN0cmluZ1wiICYmIG9UZXh0QW5ub3RhdGlvbj8uYW5ub3RhdGlvbnM/LlVJPy5UZXh0QXJyYW5nZW1lbnQ/LnRvU3RyaW5nKCkpIHx8XG5cdFx0b0VudGl0eVR5cGU/LmFubm90YXRpb25zPy5VST8uVGV4dEFycmFuZ2VtZW50Py50b1N0cmluZygpO1xuXG5cdGxldCBzRGlzcGxheVZhbHVlID0gb1RleHRBbm5vdGF0aW9uID8gXCJEZXNjcmlwdGlvblZhbHVlXCIgOiBcIlZhbHVlXCI7XG5cdGlmICgob1RleHRBbm5vdGF0aW9uICYmIG9UZXh0QXJyYW5nZW1lbnRBbm5vdGF0aW9uKSB8fCBvRW50aXR5VHlwZT8uYW5ub3RhdGlvbnM/LlVJPy5UZXh0QXJyYW5nZW1lbnQ/LnRvU3RyaW5nKCkpIHtcblx0XHRpZiAob1RleHRBcnJhbmdlbWVudEFubm90YXRpb24gPT09IFwiVUkuVGV4dEFycmFuZ2VtZW50VHlwZS9UZXh0T25seVwiKSB7XG5cdFx0XHRzRGlzcGxheVZhbHVlID0gXCJEZXNjcmlwdGlvblwiO1xuXHRcdH0gZWxzZSBpZiAob1RleHRBcnJhbmdlbWVudEFubm90YXRpb24gPT09IFwiVUkuVGV4dEFycmFuZ2VtZW50VHlwZS9UZXh0TGFzdFwiKSB7XG5cdFx0XHRzRGlzcGxheVZhbHVlID0gXCJWYWx1ZURlc2NyaXB0aW9uXCI7XG5cdFx0fSBlbHNlIGlmIChvVGV4dEFycmFuZ2VtZW50QW5ub3RhdGlvbiA9PT0gXCJVSS5UZXh0QXJyYW5nZW1lbnRUeXBlL1RleHRTZXBhcmF0ZVwiKSB7XG5cdFx0XHRzRGlzcGxheVZhbHVlID0gXCJWYWx1ZVwiO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvL0RlZmF1bHQgc2hvdWxkIGJlIFRleHRGaXJzdCBpZiB0aGVyZSBpcyBhIFRleHQgYW5ub3RhdGlvbiBhbmQgbmVpdGhlciBUZXh0T25seSBub3IgVGV4dExhc3QgYXJlIHNldFxuXHRcdFx0c0Rpc3BsYXlWYWx1ZSA9IFwiRGVzY3JpcHRpb25WYWx1ZVwiO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gc0Rpc3BsYXlWYWx1ZSBhcyBEaXNwbGF5TW9kZTtcbn07XG4iXX0=
@@ -4,9 +4,8 @@
4
4
  * When consumed outside of converters, you should call them via UIFormatters.
5
5
  */
6
6
 
7
- import { Property } from "@sap-ux/annotation-converter";
8
- import { PathAnnotationExpression } from "@sap-ux/vocabularies-types/types/Edm";
9
- import { DataModelObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
7
+ import type { PathAnnotationExpression, Property } from "@sap-ux/vocabularies-types";
8
+ import type { DataModelObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
10
9
  import { isPathExpression, isPropertyPathExpression } from "sap/fe/core/templating/PropertyHelper";
11
10
 
12
11
  export type PropertyOrPath<P> = string | P | PathAnnotationExpression<P>;
@@ -34,8 +34,8 @@ sap.ui.define([], function () {
34
34
  * Reads all SortRestrictions of the main entity and the (first level) navigation restrictions.
35
35
  * This does not work for more than one level of navigation.
36
36
  *
37
- * @param {EntitySet} entitySet Entity set to be analyzed
38
- * @returns {string[]} Array containing the property names of all non-sortable properties
37
+ * @param entitySet Entity set to be analyzed
38
+ * @returns Array containing the property names of all non-sortable properties
39
39
  */
40
40
 
41
41
 
@@ -69,10 +69,10 @@ sap.ui.define([], function () {
69
69
  var _entitySet$entityType, _entitySet$entityType2;
70
70
 
71
71
  // find correct navigation property
72
- var navigationProperty = entitySet === null || entitySet === void 0 ? void 0 : (_entitySet$entityType = entitySet.entityType) === null || _entitySet$entityType === void 0 ? void 0 : (_entitySet$entityType2 = _entitySet$entityType.navigationProperties) === null || _entitySet$entityType2 === void 0 ? void 0 : _entitySet$entityType2.filter(function (navigationProperty) {
72
+ var navigationProperty = entitySet === null || entitySet === void 0 ? void 0 : (_entitySet$entityType = entitySet.entityType) === null || _entitySet$entityType === void 0 ? void 0 : (_entitySet$entityType2 = _entitySet$entityType.navigationProperties) === null || _entitySet$entityType2 === void 0 ? void 0 : _entitySet$entityType2.filter(function (navProperty) {
73
73
  var _navigationRestrictio2;
74
74
 
75
- return navigationProperty.name == (navigationRestriction === null || navigationRestriction === void 0 ? void 0 : (_navigationRestrictio2 = navigationRestriction.NavigationProperty) === null || _navigationRestrictio2 === void 0 ? void 0 : _navigationRestrictio2.value);
75
+ return navProperty.name == (navigationRestriction === null || navigationRestriction === void 0 ? void 0 : (_navigationRestrictio2 = navigationRestriction.NavigationProperty) === null || _navigationRestrictio2 === void 0 ? void 0 : _navigationRestrictio2.value);
76
76
  });
77
77
 
78
78
  if (navigationProperty[0]) {
@@ -80,7 +80,7 @@ sap.ui.define([], function () {
80
80
 
81
81
  // add all properties of the navigation property to the nonSortableProperties
82
82
  (_nonSortablePropertie2 = nonSortableProperties).push.apply(_nonSortablePropertie2, _toConsumableArray((_navigationProperty$ = navigationProperty[0].targetType) === null || _navigationProperty$ === void 0 ? void 0 : _navigationProperty$.entityProperties.map(function (property) {
83
- return navigationProperty[0].name + "/" + property.name;
83
+ return "".concat(navigationProperty[0].name, "/").concat(property.name);
84
84
  })));
85
85
  }
86
86
  } else {
@@ -89,7 +89,7 @@ sap.ui.define([], function () {
89
89
  var nonSortableNavigationProperties = navigationRestriction === null || navigationRestriction === void 0 ? void 0 : (_navigationRestrictio3 = navigationRestriction.SortRestrictions) === null || _navigationRestrictio3 === void 0 ? void 0 : (_navigationRestrictio4 = _navigationRestrictio3.NonSortableProperties) === null || _navigationRestrictio4 === void 0 ? void 0 : _navigationRestrictio4.map(function (property) {
90
90
  var _navigationRestrictio5;
91
91
 
92
- return (navigationRestriction === null || navigationRestriction === void 0 ? void 0 : (_navigationRestrictio5 = navigationRestriction.NavigationProperty) === null || _navigationRestrictio5 === void 0 ? void 0 : _navigationRestrictio5.value) + "/" + property.value;
92
+ return "".concat(navigationRestriction === null || navigationRestriction === void 0 ? void 0 : (_navigationRestrictio5 = navigationRestriction.NavigationProperty) === null || _navigationRestrictio5 === void 0 ? void 0 : _navigationRestrictio5.value, "/").concat(property.value);
93
93
  });
94
94
 
95
95
  if (nonSortableNavigationProperties) {
@@ -105,4 +105,4 @@ sap.ui.define([], function () {
105
105
  _exports.getNonSortablePropertiesRestrictions = getNonSortablePropertiesRestrictions;
106
106
  return _exports;
107
107
  }, false);
108
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkVudGl0eVNldEhlbHBlci50cyJdLCJuYW1lcyI6WyJpc0VudGl0eVNldCIsImRhdGFPYmplY3QiLCJoYXNPd25Qcm9wZXJ0eSIsIl90eXBlIiwiZ2V0RmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucyIsImVudGl0eVNldCIsImFubm90YXRpb25zIiwiQ2FwYWJpbGl0aWVzIiwiRmlsdGVyUmVzdHJpY3Rpb25zIiwiRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucyIsImdldE5vblNvcnRhYmxlUHJvcGVydGllc1Jlc3RyaWN0aW9ucyIsIm5vblNvcnRhYmxlUHJvcGVydGllcyIsIlNvcnRSZXN0cmljdGlvbnMiLCJTb3J0YWJsZSIsInB1c2giLCJlbnRpdHlUeXBlIiwiZW50aXR5UHJvcGVydGllcyIsIm1hcCIsInByb3BlcnR5IiwibmFtZSIsIk5vblNvcnRhYmxlUHJvcGVydGllcyIsInZhbHVlIiwiTmF2aWdhdGlvblJlc3RyaWN0aW9ucyIsIlJlc3RyaWN0ZWRQcm9wZXJ0aWVzIiwiZm9yRWFjaCIsIm5hdmlnYXRpb25SZXN0cmljdGlvbiIsIm5hdmlnYXRpb25Qcm9wZXJ0eSIsIm5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwiZmlsdGVyIiwiTmF2aWdhdGlvblByb3BlcnR5IiwidGFyZ2V0VHlwZSIsIm5vblNvcnRhYmxlTmF2aWdhdGlvblByb3BlcnRpZXMiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNPLE1BQU1BLFdBQVcsR0FBRyxVQUFVQyxVQUFWLEVBQW9EO0FBQzlFLFdBQU9BLFVBQVUsSUFBSUEsVUFBVSxDQUFDQyxjQUFYLENBQTBCLE9BQTFCLENBQWQsSUFBb0RELFVBQVUsQ0FBQ0UsS0FBWCxLQUFxQixXQUFoRjtBQUNBLEdBRk07Ozs7QUFJQSxNQUFNQywrQkFBK0IsR0FBRyxVQUFVQyxTQUFWLEVBQWdDO0FBQUE7O0FBQzlFLFdBQU8sMEJBQUFBLFNBQVMsQ0FBQ0MsV0FBViwwR0FBdUJD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QyxDQUF4Qzs7QUFHQSxZQUFJVSwrQkFBSixFQUFxQztBQUFBOztBQUNwQyxvQ0FBQXBCLHFCQUFxQixFQUFDRyxJQUF0QixrREFBOEJpQiwrQkFBOUI7QUFDQTtBQUNEO0FBQ0QsS0F2QkQ7QUF3QkEsV0FBT3BCLHFCQUFQO0FBQ0EsR0FwQ00iLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudGl0eVNldCB9IGZyb20gXCJAc2FwLXV4L2Fubm90YXRpb24tY29udmVydGVyXCI7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uUHJvcGVydHlQYXRoIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5cbmV4cG9ydCBjb25zdCBpc0VudGl0eVNldCA9IGZ1bmN0aW9uIChkYXRhT2JqZWN0OiBhbnkpOiBkYXRhT2JqZWN0IGlzIEVudGl0eVNldCB7XG5cdHJldHVybiBkYXRhT2JqZWN0ICYmIGRhdGFPYmplY3QuaGFzT3duUHJvcGVydHkoXCJfdHlwZVwiKSAmJiBkYXRhT2JqZWN0Ll90eXBlID09PSBcIkVudGl0eVNldFwiO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMgPSBmdW5jdGlvbiAoZW50aXR5U2V0OiBFbnRpdHlTZXQpIHtcblx0cmV0dXJuIGVudGl0eVNldC5hbm5vdGF0aW9ucz8uQ2FwYWJpbGl0aWVzPy5GaWx0ZXJSZXN0cmljdGlvbnM/LkZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMgfHwgW107XG59O1xuXG4vKipcbiAqIFJlYWRzIGFsbCBTb3J0UmVzdHJpY3Rpb25zIG9mIHRoZSBtYWluIGVudGl0eSBhbmQgdGhlIChmaXJzdCBsZXZlbCkgbmF2aWdhdGlvbiByZXN0cmljdGlvbnMuXG4gKiBUaGlzIGRvZXMgbm90IHdvcmsgZm9yIG1vcmUgdGhhbiBvbmUgbGV2ZWwgb2YgbmF2aWdhdGlvbi5cbiAqXG4gKiBAcGFyYW0ge0VudGl0eVNldH0gZW50aXR5U2V0IEVudGl0eSBzZXQgdG8gYmUgYW5hbHl6ZWRcbiAqIEByZXR1cm5zIHtzdHJpbmdbXX0gQXJyYXkgY29udGFpbmluZyB0aGUgcHJvcGVydHkgbmFtZXMgb2YgYWxsIG5vbi1zb3J0YWJsZSBwcm9wZXJ0aWVzXG4gKi9cbmV4cG9ydCBjb25zdCBnZXROb25Tb3J0YWJsZVByb3BlcnRpZXNSZXN0cmljdGlvbnMgPSBmdW5jdGlvbiAoZW50aXR5U2V0OiBFbnRpdHlTZXQgfCB1bmRlZmluZWQpOiBzdHJpbmdbXSB7XG5cdGxldCBub25Tb3J0YWJsZVByb3BlcnRpZXMgPSBbXTtcblx0Ly8gQ2hlY2sgYW5ub3RhdGlvbnMgZm9yIG1haW4gZW50aXR5XG5cdGlmIChlbnRpdHlTZXQ/LmFubm90YXRpb25zPy5DYXBhYmlsaXRpZXM/LlNvcnRSZXN0cmljdGlvbnM/LlNvcnRhYmxlID09PSBmYWxzZSkge1xuXHRcdC8vIGFkZCBhbGwgcHJvcGVydGllcyBvZiB0aGUgZW50aXR5IHRvIHRoZSBub25Tb3J0YWJsZVByb3BlcnRpZXNcblx0XHRub25Tb3J0YWJsZVByb3BlcnRpZXMucHVzaCguLi5lbnRpdHlTZXQuZW50aXR5VHlwZS5lbnRpdHlQcm9wZXJ0aWVzLm1hcCgocHJvcGVydHkpID0+IHByb3BlcnR5Lm5hbWUpKTtcblx0fSBlbHNlIHtcblx0XHRub25Tb3J0YWJsZVByb3BlcnRpZXMgPVxuXHRcdFx0ZW50aXR5U2V0Py5hbm5vdGF0aW9ucz8uQ2FwYWJpbGl0aWVzPy5Tb3J0UmVzdHJpY3Rpb25zPy5Ob25Tb3J0YWJsZVByb3BlcnRpZXM/Lm1hcCgocHJvcGVydHkpID0+IHByb3BlcnR5LnZhbHVlKSB8fCBbXTtcblx0fVxuXHQvLyBDaGVjayBmb3IgZXZlcnkgbmF2aWdhdGlvblJlc3RyaWN0aW9uIGlmIGl0IGhhcyBzb3J0UmVzdHJpY3Rpb25zXG5cdGVudGl0eVNldD8uYW5ub3RhdGlvbnM/LkNhcGFiaWxpdGllcz8uTmF2aWdhdGlvblJlc3RyaWN0aW9ucz8uUmVzdHJpY3RlZFByb3BlcnRpZXM/LmZvckVhY2goKG5hdmlnYXRpb25SZXN0cmljdGlvbikgPT4ge1xuXHRcdGlmIChuYXZpZ2F0aW9uUmVzdHJpY3Rpb24/LlNvcnRSZXN0cmljdGlvbnM/LlNvcnRhYmxlID09PSBmYWxzZSkge1xuXHRcdFx0Ly8gZmluZCBjb3JyZWN0IG5hdmlnYXRpb24gcHJvcGVydHlcblx0XHRcdGNvbnN0IG5hdmlnYXRpb25Qcm9wZXJ0eSA9IGVudGl0eVNldD8uZW50aXR5VHlwZT8ubmF2aWdhdGlvblByb3BlcnRpZXM/LmZpbHRlcihcblx0XHRcdFx0KG5hdmlnYXRpb25Qcm9wZXJ0eSkgPT5cblx0XHRcdFx0XHRuYXZpZ2F0aW9uUHJvcGVydHkubmFtZSA9PSAobmF2aWdhdGlvblJlc3RyaWN0aW9uPy5OYXZpZ2F0aW9uUHJvcGVydHkgYXMgTmF2aWdhdGlvblByb3BlcnR5UGF0aCk/LnZhbHVlXG5cdFx0XHQpO1xuXHRcdFx0aWYgKG5hdmlnYXRpb25Qcm9wZXJ0eVswXSkge1xuXHRcdFx0XHQvLyBhZGQgYWxsIHByb3BlcnRpZXMgb2YgdGhlIG5hdmlnYXRpb24gcHJvcGVydHkgdG8gdGhlIG5vblNvcnRhYmxlUHJvcGVydGllc1xuXHRcdFx0XHRub25Tb3J0YWJsZVByb3BlcnRpZXMucHVzaChcblx0XHRcdFx0XHQuLi5uYXZpZ2F0aW9uUHJvcGVydHlbMF0udGFyZ2V0VHlwZT8uZW50aXR5UHJvcGVydGllcy5tYXAoXG5cdFx0XHRcdFx0XHQocHJvcGVydHkpID0+IG5hdmlnYXRpb25Qcm9wZXJ0eVswXS5uYW1lICsgXCIvXCIgKyBwcm9wZXJ0eS5uYW1lXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBub25Tb3J0YWJsZU5hdmlnYXRpb25Qcm9wZXJ0aWVzID0gbmF2aWdhdGlvblJlc3RyaWN0aW9uPy5Tb3J0UmVzdHJpY3Rpb25zPy5Ob25Tb3J0YWJsZVByb3BlcnRpZXM/Lm1hcChcblx0XHRcdFx0KHByb3BlcnR5KSA9PiAobmF2aWdhdGlvblJlc3RyaWN0aW9uPy5OYXZpZ2F0aW9uUHJvcGVydHkgYXMgTmF2aWdhdGlvblByb3BlcnR5UGF0aCk/LnZhbHVlICsgXCIvXCIgKyBwcm9wZXJ0eS52YWx1ZVxuXHRcdFx0KTtcblx0XHRcdGlmIChub25Tb3J0YWJsZU5hdmlnYXRpb25Qcm9wZXJ0aWVzKSB7XG5cdFx0XHRcdG5vblNvcnRhYmxlUHJvcGVydGllcy5wdXNoKC4uLm5vblNvcnRhYmxlTmF2aWdhdGlvblByb3BlcnRpZXMpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG5cdHJldHVybiBub25Tb3J0YWJsZVByb3BlcnRpZXM7XG59O1xuIl19
108
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkVudGl0eVNldEhlbHBlci50cyJdLCJuYW1lcyI6WyJpc0VudGl0eVNldCIsImRhdGFPYmplY3QiLCJoYXNPd25Qcm9wZXJ0eSIsIl90eXBlIiwiZ2V0RmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucyIsImVudGl0eVNldCIsImFubm90YXRpb25zIiwiQ2FwYWJpbGl0aWVzIiwiRmlsdGVyUmVzdHJpY3Rpb25zIiwiRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucyIsImdldE5vblNvcnRhYmxlUHJvcGVydGllc1Jlc3RyaWN0aW9ucyIsIm5vblNvcnRhYmxlUHJvcGVydGllcyIsIlNvcnRSZXN0cmljdGlvbnMiLCJTb3J0YWJsZSIsInB1c2giLCJlbnRpdHlUeXBlIiwiZW50aXR5UHJvcGVydGllcyIsIm1hcCIsInByb3BlcnR5IiwibmFtZSIsIk5vblNvcnRhYmxlUHJvcGVydGllcyIsInZhbHVlIiwiTmF2aWdhdGlvblJlc3RyaWN0aW9ucyIsIlJlc3RyaWN0ZWRQcm9wZXJ0aWVzIiwiZm9yRWFjaCIsIm5hdmlnYXRpb25SZXN0cmljdGlvbiIsIm5hdmlnYXRpb25Qcm9wZXJ0eSIsIm5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwiZmlsdGVyIiwibmF2UHJvcGVydHkiLCJOYXZpZ2F0aW9uUHJvcGVydHkiLCJ0YXJnZXRUeXBlIiwibm9uU29ydGFibGVOYXZpZ2F0aW9uUHJvcGVydGllcyJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQU8sTUFBTUEsV0FBVyxHQUFHLFVBQVVDLFVBQVYsRUFBb0Q7QUFDOUUsV0FBT0EsVUFBVSxJQUFJQSxVQUFVLENBQUNDLGNBQVgsQ0FBMEIsT0FBMUIsQ0FBZCxJQUFvREQsVUFBVSxDQUFDRSxLQUFYLEtBQXFCLFdBQWhGO0FBQ0EsR0FGTTs7OztBQUlBLE1BQU1DLCtCQUErQixHQUFHLFVBQVVDLFNBQVYsRUFBZ0M7QUFBQTs7QUFDOUUsV0FBTywwQkFBQUEsU0FBUyxDQUFD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QXhDOztBQUdBLFlBQUlXLCtCQUFKLEVBQXFDO0FBQUE7O0FBQ3BDLG9DQUFBckIscUJBQXFCLEVBQUNHLElBQXRCLGtEQUE4QmtCLCtCQUE5QjtBQUNBO0FBQ0Q7QUFDRCxLQXRCRDtBQXVCQSxXQUFPckIscUJBQVA7QUFDQSxHQW5DTSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBFbnRpdHlTZXQsIE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGggfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcblxuZXhwb3J0IGNvbnN0IGlzRW50aXR5U2V0ID0gZnVuY3Rpb24gKGRhdGFPYmplY3Q6IGFueSk6IGRhdGFPYmplY3QgaXMgRW50aXR5U2V0IHtcblx0cmV0dXJuIGRhdGFPYmplY3QgJiYgZGF0YU9iamVjdC5oYXNPd25Qcm9wZXJ0eShcIl90eXBlXCIpICYmIGRhdGFPYmplY3QuX3R5cGUgPT09IFwiRW50aXR5U2V0XCI7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucyA9IGZ1bmN0aW9uIChlbnRpdHlTZXQ6IEVudGl0eVNldCkge1xuXHRyZXR1cm4gZW50aXR5U2V0LmFubm90YXRpb25zPy5DYXBhYmlsaXRpZXM/LkZpbHRlclJlc3RyaWN0aW9ucz8uRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucyB8fCBbXTtcbn07XG5cbi8qKlxuICogUmVhZHMgYWxsIFNvcnRSZXN0cmljdGlvbnMgb2YgdGhlIG1haW4gZW50aXR5IGFuZCB0aGUgKGZpcnN0IGxldmVsKSBuYXZpZ2F0aW9uIHJlc3RyaWN0aW9ucy5cbiAqIFRoaXMgZG9lcyBub3Qgd29yayBmb3IgbW9yZSB0aGFuIG9uZSBsZXZlbCBvZiBuYXZpZ2F0aW9uLlxuICpcbiAqIEBwYXJhbSBlbnRpdHlTZXQgRW50aXR5IHNldCB0byBiZSBhbmFseXplZFxuICogQHJldHVybnMgQXJyYXkgY29udGFpbmluZyB0aGUgcHJvcGVydHkgbmFtZXMgb2YgYWxsIG5vbi1zb3J0YWJsZSBwcm9wZXJ0aWVzXG4gKi9cbmV4cG9ydCBjb25zdCBnZXROb25Tb3J0YWJsZVByb3BlcnRpZXNSZXN0cmljdGlvbnMgPSBmdW5jdGlvbiAoZW50aXR5U2V0OiBFbnRpdHlTZXQgfCB1bmRlZmluZWQpOiBzdHJpbmdbXSB7XG5cdGxldCBub25Tb3J0YWJsZVByb3BlcnRpZXMgPSBbXTtcblx0Ly8gQ2hlY2sgYW5ub3RhdGlvbnMgZm9yIG1haW4gZW50aXR5XG5cdGlmIChlbnRpdHlTZXQ/LmFubm90YXRpb25zPy5DYXBhYmlsaXRpZXM/LlNvcnRSZXN0cmljdGlvbnM/LlNvcnRhYmxlID09PSBmYWxzZSkge1xuXHRcdC8vIGFkZCBhbGwgcHJvcGVydGllcyBvZiB0aGUgZW50aXR5IHRvIHRoZSBub25Tb3J0YWJsZVByb3BlcnRpZXNcblx0XHRub25Tb3J0YWJsZVByb3BlcnRpZXMucHVzaCguLi5lbnRpdHlTZXQuZW50aXR5VHlwZS5lbnRpdHlQcm9wZXJ0aWVzLm1hcCgocHJvcGVydHkpID0+IHByb3BlcnR5Lm5hbWUpKTtcblx0fSBlbHNlIHtcblx0XHRub25Tb3J0YWJsZVByb3BlcnRpZXMgPVxuXHRcdFx0ZW50aXR5U2V0Py5hbm5vdGF0aW9ucz8uQ2FwYWJpbGl0aWVzPy5Tb3J0UmVzdHJpY3Rpb25zPy5Ob25Tb3J0YWJsZVByb3BlcnRpZXM/Lm1hcCgocHJvcGVydHkpID0+IHByb3BlcnR5LnZhbHVlKSB8fCBbXTtcblx0fVxuXHQvLyBDaGVjayBmb3IgZXZlcnkgbmF2aWdhdGlvblJlc3RyaWN0aW9uIGlmIGl0IGhhcyBzb3J0UmVzdHJpY3Rpb25zXG5cdGVudGl0eVNldD8uYW5ub3RhdGlvbnM/LkNhcGFiaWxpdGllcz8uTmF2aWdhdGlvblJlc3RyaWN0aW9ucz8uUmVzdHJpY3RlZFByb3BlcnRpZXM/LmZvckVhY2goKG5hdmlnYXRpb25SZXN0cmljdGlvbikgPT4ge1xuXHRcdGlmIChuYXZpZ2F0aW9uUmVzdHJpY3Rpb24/LlNvcnRSZXN0cmljdGlvbnM/LlNvcnRhYmxlID09PSBmYWxzZSkge1xuXHRcdFx0Ly8gZmluZCBjb3JyZWN0IG5hdmlnYXRpb24gcHJvcGVydHlcblx0XHRcdGNvbnN0IG5hdmlnYXRpb25Qcm9wZXJ0eSA9IGVudGl0eVNldD8uZW50aXR5VHlwZT8ubmF2aWdhdGlvblByb3BlcnRpZXM/LmZpbHRlcihcblx0XHRcdFx0KG5hdlByb3BlcnR5KSA9PiBuYXZQcm9wZXJ0eS5uYW1lID09IChuYXZpZ2F0aW9uUmVzdHJpY3Rpb24/Lk5hdmlnYXRpb25Qcm9wZXJ0eSBhcyBOYXZpZ2F0aW9uUHJvcGVydHlQYXRoKT8udmFsdWVcblx0XHRcdCk7XG5cdFx0XHRpZiAobmF2aWdhdGlvblByb3BlcnR5WzBdKSB7XG5cdFx0XHRcdC8vIGFkZCBhbGwgcHJvcGVydGllcyBvZiB0aGUgbmF2aWdhdGlvbiBwcm9wZXJ0eSB0byB0aGUgbm9uU29ydGFibGVQcm9wZXJ0aWVzXG5cdFx0XHRcdG5vblNvcnRhYmxlUHJvcGVydGllcy5wdXNoKFxuXHRcdFx0XHRcdC4uLm5hdmlnYXRpb25Qcm9wZXJ0eVswXS50YXJnZXRUeXBlPy5lbnRpdHlQcm9wZXJ0aWVzLm1hcChcblx0XHRcdFx0XHRcdChwcm9wZXJ0eSkgPT4gYCR7bmF2aWdhdGlvblByb3BlcnR5WzBdLm5hbWV9LyR7cHJvcGVydHkubmFtZX1gXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBub25Tb3J0YWJsZU5hdmlnYXRpb25Qcm9wZXJ0aWVzID0gbmF2aWdhdGlvblJlc3RyaWN0aW9uPy5Tb3J0UmVzdHJpY3Rpb25zPy5Ob25Tb3J0YWJsZVByb3BlcnRpZXM/Lm1hcChcblx0XHRcdFx0KHByb3BlcnR5KSA9PiBgJHsobmF2aWdhdGlvblJlc3RyaWN0aW9uPy5OYXZpZ2F0aW9uUHJvcGVydHkgYXMgTmF2aWdhdGlvblByb3BlcnR5UGF0aCk/LnZhbHVlfS8ke3Byb3BlcnR5LnZhbHVlfWBcblx0XHRcdCk7XG5cdFx0XHRpZiAobm9uU29ydGFibGVOYXZpZ2F0aW9uUHJvcGVydGllcykge1xuXHRcdFx0XHRub25Tb3J0YWJsZVByb3BlcnRpZXMucHVzaCguLi5ub25Tb3J0YWJsZU5hdmlnYXRpb25Qcm9wZXJ0aWVzKTtcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gbm9uU29ydGFibGVQcm9wZXJ0aWVzO1xufTtcbiJdfQ==