@sapui5/sap.fe.core 1.121.2 → 1.123.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 (241) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/ActionRuntime.js +2 -2
  4. package/src/sap/fe/core/ActionRuntime.ts +1 -2
  5. package/src/sap/fe/core/CommonUtils.js +14 -171
  6. package/src/sap/fe/core/CommonUtils.ts +15 -221
  7. package/src/sap/fe/core/PageController.js +13 -1
  8. package/src/sap/fe/core/PageController.ts +16 -0
  9. package/src/sap/fe/core/TemplateComponent.js +6 -1
  10. package/src/sap/fe/core/TemplateComponent.ts +8 -0
  11. package/src/sap/fe/core/UIProvider.js +23 -0
  12. package/src/sap/fe/core/UIProvider.ts +38 -0
  13. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js +97 -43
  14. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.ts +120 -50
  15. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.js +6 -3
  16. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.ts +12 -18
  17. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.js +2 -2
  18. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.ts +1 -1
  19. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.js +1 -1
  20. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.ts +4 -3
  21. package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlockFragment.js +1 -1
  22. package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlockFragment.ts +1 -0
  23. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.js +42 -1
  24. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.ts +40 -0
  25. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.js +5 -2
  26. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.ts +5 -3
  27. package/src/sap/fe/core/controllerextensions/EditFlow.js +151 -60
  28. package/src/sap/fe/core/controllerextensions/EditFlow.ts +165 -68
  29. package/src/sap/fe/core/controllerextensions/HookSupport.js +32 -14
  30. package/src/sap/fe/core/controllerextensions/HookSupport.ts +35 -14
  31. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +5 -17
  32. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +0 -12
  33. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +6 -6
  34. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +15 -10
  35. package/src/sap/fe/core/controllerextensions/InternalRouting.js +108 -287
  36. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +117 -309
  37. package/src/sap/fe/core/controllerextensions/KPIManagement.js +2 -2
  38. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +6 -2
  39. package/src/sap/fe/core/controllerextensions/MessageHandler.js +2 -2
  40. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +1 -1
  41. package/src/sap/fe/core/controllerextensions/PageReady.js +6 -6
  42. package/src/sap/fe/core/controllerextensions/PageReady.ts +5 -4
  43. package/src/sap/fe/core/controllerextensions/Paginator.js +17 -110
  44. package/src/sap/fe/core/controllerextensions/Paginator.ts +13 -130
  45. package/src/sap/fe/core/controllerextensions/Placeholder.js +3 -3
  46. package/src/sap/fe/core/controllerextensions/Placeholder.ts +1 -2
  47. package/src/sap/fe/core/controllerextensions/Recommendations.js +36 -31
  48. package/src/sap/fe/core/controllerextensions/Recommendations.ts +32 -37
  49. package/src/sap/fe/core/controllerextensions/Share.js +7 -7
  50. package/src/sap/fe/core/controllerextensions/Share.ts +6 -6
  51. package/src/sap/fe/core/controllerextensions/SideEffects.js +52 -6
  52. package/src/sap/fe/core/controllerextensions/SideEffects.ts +56 -4
  53. package/src/sap/fe/core/controllerextensions/ViewState.js +32 -46
  54. package/src/sap/fe/core/controllerextensions/ViewState.ts +24 -31
  55. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js +42 -31
  56. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.tsx +6 -0
  57. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +168 -276
  58. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +182 -310
  59. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +3 -3
  60. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +2 -2
  61. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +4 -3
  62. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +3 -2
  63. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +74 -52
  64. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +95 -55
  65. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +3 -17
  66. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +10 -23
  67. package/src/sap/fe/core/controllerextensions/recommendations/Telemetry.js +3 -3
  68. package/src/sap/fe/core/controllerextensions/recommendations/Telemetry.ts +2 -2
  69. package/src/sap/fe/core/controllerextensions/routing/ContextPathHelper.js +225 -0
  70. package/src/sap/fe/core/controllerextensions/routing/ContextPathHelper.ts +241 -0
  71. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.js +69 -48
  72. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.tsx +56 -33
  73. package/src/sap/fe/core/controls/FormElementWrapper.js +8 -11
  74. package/src/sap/fe/core/controls/FormElementWrapper.ts +9 -0
  75. package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block.js +6 -14
  76. package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block.tsx +12 -23
  77. package/src/sap/fe/core/converters/ConverterContext.js +17 -9
  78. package/src/sap/fe/core/converters/ConverterContext.ts +55 -41
  79. package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  80. package/src/sap/fe/core/converters/ManifestSettings.ts +19 -5
  81. package/src/sap/fe/core/converters/ManifestWrapper.js +14 -4
  82. package/src/sap/fe/core/converters/ManifestWrapper.ts +21 -10
  83. package/src/sap/fe/core/converters/MetaModelConverter.js +402 -383
  84. package/src/sap/fe/core/converters/MetaModelConverter.ts +538 -338
  85. package/src/sap/fe/core/converters/TemplateConverter.js +4 -2
  86. package/src/sap/fe/core/converters/TemplateConverter.ts +18 -13
  87. package/src/sap/fe/core/converters/annotations/DataField.js +30 -28
  88. package/src/sap/fe/core/converters/annotations/DataField.ts +58 -35
  89. package/src/sap/fe/core/converters/common/AnnotationConverter.js +24 -23
  90. package/src/sap/fe/core/converters/controls/Common/Action.js +5 -4
  91. package/src/sap/fe/core/converters/controls/Common/Action.ts +34 -28
  92. package/src/sap/fe/core/converters/controls/Common/Chart.js +37 -33
  93. package/src/sap/fe/core/converters/controls/Common/Chart.ts +64 -46
  94. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +15 -4
  95. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +31 -15
  96. package/src/sap/fe/core/converters/controls/Common/Form.js +6 -4
  97. package/src/sap/fe/core/converters/controls/Common/Form.ts +23 -11
  98. package/src/sap/fe/core/converters/controls/Common/KPI.js +5 -3
  99. package/src/sap/fe/core/converters/controls/Common/KPI.ts +17 -11
  100. package/src/sap/fe/core/converters/controls/Common/Table.js +197 -101
  101. package/src/sap/fe/core/converters/controls/Common/Table.ts +393 -182
  102. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +4 -5
  103. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +38 -27
  104. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +41 -11
  105. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +112 -45
  106. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +7 -7
  107. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +18 -12
  108. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +1 -1
  109. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +5 -4
  110. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +1 -1
  111. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +19 -9
  112. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +64 -63
  113. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +109 -100
  114. package/src/sap/fe/core/converters/helpers/Aggregation.js +12 -11
  115. package/src/sap/fe/core/converters/helpers/Aggregation.ts +35 -30
  116. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +4 -1
  117. package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +12 -9
  118. package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +1 -1
  119. package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +1 -1
  120. package/src/sap/fe/core/converters/helpers/ID.js +1 -1
  121. package/src/sap/fe/core/converters/helpers/ID.ts +6 -6
  122. package/src/sap/fe/core/converters/helpers/InsightsHelpers.js +3 -3
  123. package/src/sap/fe/core/converters/helpers/InsightsHelpers.ts +11 -6
  124. package/src/sap/fe/core/converters/helpers/Key.js +2 -2
  125. package/src/sap/fe/core/converters/helpers/Key.ts +4 -4
  126. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
  127. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +2 -2
  128. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +21 -19
  129. package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +43 -31
  130. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +1 -1
  131. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +16 -12
  132. package/src/sap/fe/core/converters/templates/ListReportConverter.js +8 -3
  133. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +41 -21
  134. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +5 -3
  135. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +24 -19
  136. package/src/sap/fe/core/designtime/AppComponent.designtime.js +3 -2
  137. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +2 -1
  138. package/src/sap/fe/core/filter/DraftEditState.fragment.xml +1 -1
  139. package/src/sap/fe/core/formatters/CollaborationFormatter.js +4 -6
  140. package/src/sap/fe/core/formatters/CollaborationFormatter.ts +5 -4
  141. package/src/sap/fe/core/formatters/FPMFormatter.js +5 -13
  142. package/src/sap/fe/core/formatters/FPMFormatter.ts +11 -10
  143. package/src/sap/fe/core/formatters/FiscalFormat.js +1 -1
  144. package/src/sap/fe/core/formatters/FiscalFormat.ts +1 -1
  145. package/src/sap/fe/core/formatters/KPIFormatter.js +4 -7
  146. package/src/sap/fe/core/formatters/KPIFormatter.ts +3 -3
  147. package/src/sap/fe/core/formatters/StandardFormatter.js +4 -7
  148. package/src/sap/fe/core/formatters/StandardFormatter.ts +3 -3
  149. package/src/sap/fe/core/formatters/ValueFormatter.js +35 -6
  150. package/src/sap/fe/core/formatters/ValueFormatter.ts +31 -3
  151. package/src/sap/fe/core/fpm/manifest.json +1 -1
  152. package/src/sap/fe/core/helpers/AppStartupHelper.js +54 -33
  153. package/src/sap/fe/core/helpers/AppStartupHelper.ts +62 -41
  154. package/src/sap/fe/core/helpers/BindingToolkit.js +17 -3
  155. package/src/sap/fe/core/helpers/BindingToolkit.ts +28 -6
  156. package/src/sap/fe/core/helpers/ClassSupport.js +32 -13
  157. package/src/sap/fe/core/helpers/ClassSupport.ts +35 -15
  158. package/src/sap/fe/core/helpers/DeleteHelper.js +71 -61
  159. package/src/sap/fe/core/helpers/DeleteHelper.ts +125 -103
  160. package/src/sap/fe/core/helpers/DraftEditState.js +5 -3
  161. package/src/sap/fe/core/helpers/DraftEditState.ts +3 -1
  162. package/src/sap/fe/core/helpers/FPMHelper.js +43 -46
  163. package/src/sap/fe/core/helpers/FPMHelper.ts +50 -56
  164. package/src/sap/fe/core/helpers/MetaModelFunction.js +77 -53
  165. package/src/sap/fe/core/helpers/MetaModelFunction.ts +78 -57
  166. package/src/sap/fe/core/helpers/ModelHelper.js +10 -4
  167. package/src/sap/fe/core/helpers/ModelHelper.ts +12 -6
  168. package/src/sap/fe/core/helpers/PasteHelper.js +194 -7
  169. package/src/sap/fe/core/helpers/PasteHelper.ts +265 -13
  170. package/src/sap/fe/core/helpers/PromiseKeeper.js +66 -0
  171. package/src/sap/fe/core/helpers/PromiseKeeper.ts +56 -0
  172. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +30 -19
  173. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +34 -22
  174. package/src/sap/fe/core/helpers/StableIdHelper.js +1 -1
  175. package/src/sap/fe/core/helpers/StableIdHelper.ts +7 -2
  176. package/src/sap/fe/core/helpers/StandardRecommendationHelper.js +26 -52
  177. package/src/sap/fe/core/helpers/StandardRecommendationHelper.ts +37 -63
  178. package/src/sap/fe/core/helpers/TitleHelper.js +1 -1
  179. package/src/sap/fe/core/helpers/TitleHelper.ts +17 -14
  180. package/src/sap/fe/core/helpers/TypeGuards.js +27 -3
  181. package/src/sap/fe/core/helpers/TypeGuards.ts +37 -7
  182. package/src/sap/fe/core/jsx-runtime/jsx-xml.js +48 -8
  183. package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +40 -9
  184. package/src/sap/fe/core/library.js +1 -1
  185. package/src/sap/fe/core/messagebundle.properties +5 -2
  186. package/src/sap/fe/core/messagebundle_da.properties +1 -1
  187. package/src/sap/fe/core/messagebundle_en.properties +267 -2
  188. package/src/sap/fe/core/messagebundle_sl.properties +1 -1
  189. package/src/sap/fe/core/operationsHelper.js +2 -1
  190. package/src/sap/fe/core/operationsHelper.ts +1 -0
  191. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +3 -3
  192. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +2 -2
  193. package/src/sap/fe/core/services/NavigationServiceFactory.js +2 -2
  194. package/src/sap/fe/core/services/NavigationServiceFactory.ts +3 -2
  195. package/src/sap/fe/core/services/RoutingServiceFactory.js +27 -14
  196. package/src/sap/fe/core/services/RoutingServiceFactory.ts +27 -14
  197. package/src/sap/fe/core/services/ShellServicesFactory.js +49 -12
  198. package/src/sap/fe/core/services/ShellServicesFactory.ts +62 -13
  199. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +156 -82
  200. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +218 -100
  201. package/src/sap/fe/core/services/TelemetryServiceFactory.js +3 -3
  202. package/src/sap/fe/core/services/TelemetryServiceFactory.ts +6 -6
  203. package/src/sap/fe/core/services/ValueHelpHistoryServiceFactory.js +3 -2
  204. package/src/sap/fe/core/services/ValueHelpHistoryServiceFactory.ts +1 -1
  205. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.js +1 -1
  206. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.ts +2 -2
  207. package/src/sap/fe/core/services/view/TemplatingErrorPage.view.xml +1 -1
  208. package/src/sap/fe/core/templating/CommonFormatters.js +6 -3
  209. package/src/sap/fe/core/templating/CommonFormatters.ts +13 -12
  210. package/src/sap/fe/core/templating/CriticalityFormatters.js +2 -2
  211. package/src/sap/fe/core/templating/CriticalityFormatters.ts +37 -14
  212. package/src/sap/fe/core/templating/DataFieldFormatters.js +12 -11
  213. package/src/sap/fe/core/templating/DataFieldFormatters.ts +35 -24
  214. package/src/sap/fe/core/templating/DataModelPathHelper.js +22 -18
  215. package/src/sap/fe/core/templating/DataModelPathHelper.ts +61 -51
  216. package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
  217. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +8 -3
  218. package/src/sap/fe/core/templating/EntityTypeHelper.js +1 -1
  219. package/src/sap/fe/core/templating/EntityTypeHelper.ts +1 -1
  220. package/src/sap/fe/core/templating/FieldControlHelper.js +3 -3
  221. package/src/sap/fe/core/templating/FieldControlHelper.ts +27 -8
  222. package/src/sap/fe/core/templating/FilterHelper.js +13 -10
  223. package/src/sap/fe/core/templating/FilterHelper.ts +80 -46
  224. package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
  225. package/src/sap/fe/core/templating/FilterTemplating.ts +2 -2
  226. package/src/sap/fe/core/templating/PropertyFormatters.js +6 -8
  227. package/src/sap/fe/core/templating/PropertyFormatters.ts +11 -11
  228. package/src/sap/fe/core/templating/PropertyHelper.js +3 -3
  229. package/src/sap/fe/core/templating/PropertyHelper.ts +4 -4
  230. package/src/sap/fe/core/templating/SemanticObjectHelper.js +157 -13
  231. package/src/sap/fe/core/templating/SemanticObjectHelper.ts +182 -16
  232. package/src/sap/fe/core/templating/UIFormatters.js +23 -22
  233. package/src/sap/fe/core/templating/UIFormatters.ts +94 -66
  234. package/src/sap/fe/core/type/DateTimeWithTimezone.js +1 -1
  235. package/src/sap/fe/core/type/DateTimeWithTimezone.ts +2 -2
  236. package/src/sap/fe/core/type/EDM.js +1 -1
  237. package/src/sap/fe/core/type/EDM.ts +2 -2
  238. package/src/sap/fe/core/type/Email.js +1 -1
  239. package/src/sap/fe/core/type/Email.ts +1 -1
  240. package/src/sap/fe/core/type/FiscalDate.js +2 -2
  241. package/src/sap/fe/core/type/FiscalDate.ts +2 -2
@@ -1,5 +1,5 @@
1
1
  <mvc:View xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m" controllerName="sap.fe.core.services.view.TemplatingErrorPage">
2
- <Page showHeader="false" icon="sap-icon://message-error">
2
+ <Page showHeader="false">
3
3
  <IllustratedMessage
4
4
  illustrationType="sapIllus-ErrorScreen"
5
5
  title="{sap.fe.i18n>T_TEMPLATING_ERROR_PAGE_SAPFE_APPSTART_TEMPLATING_FAILED}"
@@ -10,6 +10,7 @@ sap.ui.define(["sap/fe/core/formatters/ValueFormatter", "sap/fe/core/helpers/Bin
10
10
  var getRelativePaths = DataModelPathHelper.getRelativePaths;
11
11
  var getContextRelativeTargetObjectPath = DataModelPathHelper.getContextRelativeTargetObjectPath;
12
12
  var enhanceDataModelPath = DataModelPathHelper.enhanceDataModelPath;
13
+ var isPropertyPathExpression = TypeGuards.isPropertyPathExpression;
13
14
  var isPathAnnotationExpression = TypeGuards.isPathAnnotationExpression;
14
15
  var pathInModel = BindingToolkit.pathInModel;
15
16
  var getExpressionFromAnnotation = BindingToolkit.getExpressionFromAnnotation;
@@ -32,7 +33,7 @@ sap.ui.define(["sap/fe/core/formatters/ValueFormatter", "sap/fe/core/helpers/Bin
32
33
  var _propertyDefinition$a, _propertyDefinition$a2;
33
34
  const targetDisplayModeOverride = fieldFormatOptions === null || fieldFormatOptions === void 0 ? void 0 : fieldFormatOptions.displayMode;
34
35
  let outExpression = propertyBindingExpression;
35
- const propertyDefinition = propertyDataModelPath.targetObject.type === "PropertyPath" ? propertyDataModelPath.targetObject.$target : propertyDataModelPath.targetObject;
36
+ const propertyDefinition = isPropertyPathExpression(propertyDataModelPath.targetObject) ? propertyDataModelPath.targetObject.$target : propertyDataModelPath.targetObject;
36
37
  const targetDisplayMode = targetDisplayModeOverride || UIFormatters.getDisplayMode(propertyDataModelPath);
37
38
  const commonText = (_propertyDefinition$a = propertyDefinition.annotations) === null || _propertyDefinition$a === void 0 ? void 0 : (_propertyDefinition$a2 = _propertyDefinition$a.Common) === null || _propertyDefinition$a2 === void 0 ? void 0 : _propertyDefinition$a2.Text;
38
39
  const relativeLocation = getRelativePaths(propertyDataModelPath);
@@ -55,10 +56,12 @@ sap.ui.define(["sap/fe/core/formatters/ValueFormatter", "sap/fe/core/helpers/Bin
55
56
  };
56
57
  _exports.getBindingWithTextArrangement = getBindingWithTextArrangement;
57
58
  const getBindingWithText = function (targetDataModelPath, customFormatter) {
58
- let propertyDataModelPath = targetDataModelPath;
59
+ let propertyDataModelPath;
59
60
  if (isPathAnnotationExpression(targetDataModelPath === null || targetDataModelPath === void 0 ? void 0 : targetDataModelPath.targetObject)) {
60
61
  var _targetDataModelPath$;
61
62
  propertyDataModelPath = enhanceDataModelPath(targetDataModelPath, (_targetDataModelPath$ = targetDataModelPath.targetObject) === null || _targetDataModelPath$ === void 0 ? void 0 : _targetDataModelPath$.path);
63
+ } else {
64
+ propertyDataModelPath = targetDataModelPath;
62
65
  }
63
66
  const propertyDefinition = propertyDataModelPath.targetObject;
64
67
  let propertyBindingExpression = pathInModel(getContextRelativeTargetObjectPath(propertyDataModelPath));
@@ -69,4 +72,4 @@ sap.ui.define(["sap/fe/core/formatters/ValueFormatter", "sap/fe/core/helpers/Bin
69
72
  _exports.getBindingWithText = getBindingWithText;
70
73
  return _exports;
71
74
  }, false);
72
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRFeHByZXNzaW9uQmluZGluZyIsImV4cHJlc3Npb24iLCJjb21waWxlRXhwcmVzc2lvbiIsImdldEJpbmRpbmdXaXRoVGV4dEFycmFuZ2VtZW50IiwicHJvcGVydHlEYXRhTW9kZWxQYXRoIiwicHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbiIsImZpZWxkRm9ybWF0T3B0aW9ucyIsImN1c3RvbUZvcm1hdHRlciIsInRhcmdldERpc3BsYXlNb2RlT3ZlcnJpZGUiLCJkaXNwbGF5TW9kZSIsIm91dEV4cHJlc3Npb24iLCJwcm9wZXJ0eURlZmluaXRpb24iLCJ0YXJnZXRPYmplY3QiLCJ0eXBlIiwiJHRhcmdldCIsInRhcmdldERpc3BsYXlNb2RlIiwiVUlGb3JtYXR0ZXJzIiwiZ2V0RGlzcGxheU1vZGUiLCJjb21tb25UZXh0IiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJUZXh0IiwicmVsYXRpdmVMb2NhdGlvbiIsImdldFJlbGF0aXZlUGF0aHMiLCJmb3JtYXR0ZXIiLCJ2YWx1ZUZvcm1hdHRlcnMiLCJmb3JtYXRXaXRoQnJhY2tldHMiLCJmb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uIiwiZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uIiwiZm9ybWF0UmVzdWx0IiwiZ2V0QmluZGluZ1dpdGhUZXh0IiwidGFyZ2V0RGF0YU1vZGVsUGF0aCIsImlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uIiwiZW5oYW5jZURhdGFNb2RlbFBhdGgiLCJwYXRoIiwicGF0aEluTW9kZWwiLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwidGV4dEFycmFuZ2VtZW50QmluZGluZyIsIlVJIiwiaXNSZWZlcmVuY2VQcm9wZXJ0eVN0YXRpY2FsbHlIaWRkZW4iLCJEYXRhRmllbGREZWZhdWx0IiwidW5kZWZpbmVkIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJDb21tb25Gb3JtYXR0ZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB2YWx1ZUZvcm1hdHRlcnMgZnJvbSBcInNhcC9mZS9jb3JlL2Zvcm1hdHRlcnMvVmFsdWVGb3JtYXR0ZXJcIjtcbmltcG9ydCB0eXBlIHsgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQge1xuXHRjb21waWxlRXhwcmVzc2lvbixcblx0Zm9ybWF0UmVzdWx0LFxuXHRmb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uLFxuXHRnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24sXG5cdHBhdGhJbk1vZGVsXG59IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBpc1BhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1R5cGVHdWFyZHNcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGVuaGFuY2VEYXRhTW9kZWxQYXRoLCBnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoLCBnZXRSZWxhdGl2ZVBhdGhzIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgKiBhcyBEaXNwbGF5TW9kZUZvcm1hdHRlciBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EaXNwbGF5TW9kZUZvcm1hdHRlclwiO1xuaW1wb3J0ICogYXMgVUlGb3JtYXR0ZXJzIGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuaW1wb3J0IHsgaXNSZWZlcmVuY2VQcm9wZXJ0eVN0YXRpY2FsbHlIaWRkZW4gfSBmcm9tIFwiLi4vY29udmVydGVycy9oZWxwZXJzL0RhdGFGaWVsZEhlbHBlclwiO1xuZXhwb3J0IHR5cGUgRGlzcGxheU1vZGUgPSBEaXNwbGF5TW9kZUZvcm1hdHRlci5EaXNwbGF5TW9kZTtcblxuLy8gSW1wb3J0LWV4cG9ydCBtZXRob2RzIHJlbGF0ZWQgdG8gdGhlIGNvbW1vbiBhbm5vdGF0aW9ucyB1c2VkIGJ5IHRoZSBjb252ZXJ0ZXIgdG8gdXNlIHRoZW0gaW4gdGhlIHRlbXBsYXRpbmcgdGhyb3VnaCB0aGUgQ29tbW9uIEZvcm1hdHRlcnMuXG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBleHByZXNzaW9uQmluZGluZyBjcmVhdGVkIG91dCBvZiBhIGJpbmRpbmcgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gZXhwcmVzc2lvbiBUaGUgZXhwcmVzc2lvbiB3aGljaCBuZWVkcyB0byBiZSBjb21waWxlZFxuICogQHJldHVybnMgVGhlIGV4cHJlc3Npb24tYmluZGluZyBzdHJpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEV4cHJlc3Npb25CaW5kaW5nID0gZnVuY3Rpb24gKGV4cHJlc3Npb246IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxhbnk+KTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oZXhwcmVzc2lvbik7XG59O1xuZXhwb3J0IGNvbnN0IGdldEJpbmRpbmdXaXRoVGV4dEFycmFuZ2VtZW50ID0gZnVuY3Rpb24gKFxuXHRwcm9wZXJ0eURhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb246IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+LFxuXHRmaWVsZEZvcm1hdE9wdGlvbnM/OiB7IGRpc3BsYXlNb2RlPzogRGlzcGxheU1vZGUgfSxcblx0Y3VzdG9tRm9ybWF0dGVyPzogc3RyaW5nXG4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiB7XG5cdGNvbnN0IHRhcmdldERpc3BsYXlNb2RlT3ZlcnJpZGUgPSBmaWVsZEZvcm1hdE9wdGlvbnM/LmRpc3BsYXlNb2RlO1xuXHRsZXQgb3V0RXhwcmVzc2lvbiA9IHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb247XG5cdGNvbnN0IHByb3BlcnR5RGVmaW5pdGlvbiA9XG5cdFx0cHJvcGVydHlEYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdC50eXBlID09PSBcIlByb3BlcnR5UGF0aFwiXG5cdFx0XHQ/IChwcm9wZXJ0eURhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0LiR0YXJnZXQgYXMgUHJvcGVydHkpXG5cdFx0XHQ6IChwcm9wZXJ0eURhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0IGFzIFByb3BlcnR5KTtcblx0Y29uc3QgdGFyZ2V0RGlzcGxheU1vZGUgPSB0YXJnZXREaXNwbGF5TW9kZU92ZXJyaWRlIHx8IFVJRm9ybWF0dGVycy5nZXREaXNwbGF5TW9kZShwcm9wZXJ0eURhdGFNb2RlbFBhdGgpO1xuXHRjb25zdCBjb21tb25UZXh0ID0gcHJvcGVydHlEZWZpbml0aW9uLmFubm90YXRpb25zPy5Db21tb24/LlRleHQ7XG5cdGNvbnN0IHJlbGF0aXZlTG9jYXRpb24gPSBnZXRSZWxhdGl2ZVBhdGhzKHByb3BlcnR5RGF0YU1vZGVsUGF0aCk7XG5cdGNvbnN0IGZvcm1hdHRlciA9IGN1c3RvbUZvcm1hdHRlciB8fCB2YWx1ZUZvcm1hdHRlcnMuZm9ybWF0V2l0aEJyYWNrZXRzO1xuXHRwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uID0gZm9ybWF0V2l0aFR5cGVJbmZvcm1hdGlvbihwcm9wZXJ0eURlZmluaXRpb24sIHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24pO1xuXHRpZiAodGFyZ2V0RGlzcGxheU1vZGUgIT09IFwiVmFsdWVcIiAmJiBjb21tb25UZXh0KSB7XG5cdFx0c3dpdGNoICh0YXJnZXREaXNwbGF5TW9kZSkge1xuXHRcdFx0Y2FzZSBcIkRlc2NyaXB0aW9uXCI6XG5cdFx0XHRcdG91dEV4cHJlc3Npb24gPSBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oY29tbW9uVGV4dCwgcmVsYXRpdmVMb2NhdGlvbik7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIkRlc2NyaXB0aW9uVmFsdWVcIjpcblx0XHRcdFx0b3V0RXhwcmVzc2lvbiA9IGZvcm1hdFJlc3VsdChcblx0XHRcdFx0XHRbZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGNvbW1vblRleHQsIHJlbGF0aXZlTG9jYXRpb24pLCBwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uXSxcblx0XHRcdFx0XHRmb3JtYXR0ZXJcblx0XHRcdFx0KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiVmFsdWVEZXNjcmlwdGlvblwiOlxuXHRcdFx0XHRvdXRFeHByZXNzaW9uID0gZm9ybWF0UmVzdWx0KFxuXHRcdFx0XHRcdFtwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uLCBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oY29tbW9uVGV4dCwgcmVsYXRpdmVMb2NhdGlvbildLFxuXHRcdFx0XHRcdGZvcm1hdHRlclxuXHRcdFx0XHQpO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdH1cblx0cmV0dXJuIG91dEV4cHJlc3Npb247XG59O1xuZXhwb3J0IGNvbnN0IGdldEJpbmRpbmdXaXRoVGV4dCA9IGZ1bmN0aW9uIChcblx0dGFyZ2V0RGF0YU1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0Y3VzdG9tRm9ybWF0dGVyPzogc3RyaW5nXG4pOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB7XG5cdGxldCBwcm9wZXJ0eURhdGFNb2RlbFBhdGggPSB0YXJnZXREYXRhTW9kZWxQYXRoO1xuXHRpZiAoaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24odGFyZ2V0RGF0YU1vZGVsUGF0aD8udGFyZ2V0T2JqZWN0KSkge1xuXHRcdHByb3BlcnR5RGF0YU1vZGVsUGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoKHRhcmdldERhdGFNb2RlbFBhdGgsIHRhcmdldERhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0Py5wYXRoKTtcblx0fVxuXHRjb25zdCBwcm9wZXJ0eURlZmluaXRpb24gPSBwcm9wZXJ0eURhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0IGFzIFByb3BlcnR5O1xuXG5cdGxldCBwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uID0gcGF0aEluTW9kZWwoXG5cdFx0Z2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aChwcm9wZXJ0eURhdGFNb2RlbFBhdGgpXG5cdCkgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz47XG5cblx0cHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbiA9IGZvcm1hdFdpdGhUeXBlSW5mb3JtYXRpb24ocHJvcGVydHlEZWZpbml0aW9uLCBwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uLCB0cnVlKTtcblx0Y29uc3QgdGV4dEFycmFuZ2VtZW50QmluZGluZyA9IGdldEJpbmRpbmdXaXRoVGV4dEFycmFuZ2VtZW50KHByb3BlcnR5RGF0YU1vZGVsUGF0aCwgcHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbiwge30sIGN1c3RvbUZvcm1hdHRlcik7XG5cdHJldHVybiAoKHByb3BlcnR5RGVmaW5pdGlvbi5hbm5vdGF0aW9ucy5VSSAmJlxuXHRcdCFpc1JlZmVyZW5jZVByb3BlcnR5U3RhdGljYWxseUhpZGRlbihwcm9wZXJ0eURlZmluaXRpb24uYW5ub3RhdGlvbnMuVUkuRGF0YUZpZWxkRGVmYXVsdCkgJiZcblx0XHRjb21waWxlRXhwcmVzc2lvbih0ZXh0QXJyYW5nZW1lbnRCaW5kaW5nKSkgfHxcblx0XHR1bmRlZmluZWQpIGFzIENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xufTtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7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
75
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRFeHByZXNzaW9uQmluZGluZyIsImV4cHJlc3Npb24iLCJjb21waWxlRXhwcmVzc2lvbiIsImdldEJpbmRpbmdXaXRoVGV4dEFycmFuZ2VtZW50IiwicHJvcGVydHlEYXRhTW9kZWxQYXRoIiwicHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbiIsImZpZWxkRm9ybWF0T3B0aW9ucyIsImN1c3RvbUZvcm1hdHRlciIsInRhcmdldERpc3BsYXlNb2RlT3ZlcnJpZGUiLCJkaXNwbGF5TW9kZSIsIm91dEV4cHJlc3Npb24iLCJwcm9wZXJ0eURlZmluaXRpb24iLCJpc1Byb3BlcnR5UGF0aEV4cHJlc3Npb24iLCJ0YXJnZXRPYmplY3QiLCIkdGFyZ2V0IiwidGFyZ2V0RGlzcGxheU1vZGUiLCJVSUZvcm1hdHRlcnMiLCJnZXREaXNwbGF5TW9kZSIsImNvbW1vblRleHQiLCJhbm5vdGF0aW9ucyIsIkNvbW1vbiIsIlRleHQiLCJyZWxhdGl2ZUxvY2F0aW9uIiwiZ2V0UmVsYXRpdmVQYXRocyIsImZvcm1hdHRlciIsInZhbHVlRm9ybWF0dGVycyIsImZvcm1hdFdpdGhCcmFja2V0cyIsImZvcm1hdFdpdGhUeXBlSW5mb3JtYXRpb24iLCJnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24iLCJmb3JtYXRSZXN1bHQiLCJnZXRCaW5kaW5nV2l0aFRleHQiLCJ0YXJnZXREYXRhTW9kZWxQYXRoIiwiaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24iLCJlbmhhbmNlRGF0YU1vZGVsUGF0aCIsInBhdGgiLCJwYXRoSW5Nb2RlbCIsImdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgiLCJ0ZXh0QXJyYW5nZW1lbnRCaW5kaW5nIiwiVUkiLCJpc1JlZmVyZW5jZVByb3BlcnR5U3RhdGljYWxseUhpZGRlbiIsIkRhdGFGaWVsZERlZmF1bHQiLCJ1bmRlZmluZWQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkNvbW1vbkZvcm1hdHRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24sIFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdmFsdWVGb3JtYXR0ZXJzIGZyb20gXCJzYXAvZmUvY29yZS9mb3JtYXR0ZXJzL1ZhbHVlRm9ybWF0dGVyXCI7XG5pbXBvcnQgdHlwZSB7IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHtcblx0Y29tcGlsZUV4cHJlc3Npb24sXG5cdGZvcm1hdFJlc3VsdCxcblx0Zm9ybWF0V2l0aFR5cGVJbmZvcm1hdGlvbixcblx0Z2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uLFxuXHRwYXRoSW5Nb2RlbFxufSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24sIGlzUHJvcGVydHlQYXRoRXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1R5cGVHdWFyZHNcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGVuaGFuY2VEYXRhTW9kZWxQYXRoLCBnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoLCBnZXRSZWxhdGl2ZVBhdGhzIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgKiBhcyBEaXNwbGF5TW9kZUZvcm1hdHRlciBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EaXNwbGF5TW9kZUZvcm1hdHRlclwiO1xuaW1wb3J0ICogYXMgVUlGb3JtYXR0ZXJzIGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuaW1wb3J0IHsgaXNSZWZlcmVuY2VQcm9wZXJ0eVN0YXRpY2FsbHlIaWRkZW4gfSBmcm9tIFwiLi4vY29udmVydGVycy9oZWxwZXJzL0RhdGFGaWVsZEhlbHBlclwiO1xuZXhwb3J0IHR5cGUgRGlzcGxheU1vZGUgPSBEaXNwbGF5TW9kZUZvcm1hdHRlci5EaXNwbGF5TW9kZTtcblxuLy8gSW1wb3J0LWV4cG9ydCBtZXRob2RzIHJlbGF0ZWQgdG8gdGhlIGNvbW1vbiBhbm5vdGF0aW9ucyB1c2VkIGJ5IHRoZSBjb252ZXJ0ZXIgdG8gdXNlIHRoZW0gaW4gdGhlIHRlbXBsYXRpbmcgdGhyb3VnaCB0aGUgQ29tbW9uIEZvcm1hdHRlcnMuXG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBleHByZXNzaW9uQmluZGluZyBjcmVhdGVkIG91dCBvZiBhIGJpbmRpbmcgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gZXhwcmVzc2lvbiBUaGUgZXhwcmVzc2lvbiB3aGljaCBuZWVkcyB0byBiZSBjb21waWxlZFxuICogQHJldHVybnMgVGhlIGV4cHJlc3Npb24tYmluZGluZyBzdHJpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEV4cHJlc3Npb25CaW5kaW5nID0gZnVuY3Rpb24gKGV4cHJlc3Npb246IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjx1bmtub3duPik6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHtcblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKGV4cHJlc3Npb24pO1xufTtcbmV4cG9ydCBjb25zdCBnZXRCaW5kaW5nV2l0aFRleHRBcnJhbmdlbWVudCA9IGZ1bmN0aW9uIChcblx0cHJvcGVydHlEYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5Pixcblx0cHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4sXG5cdGZpZWxkRm9ybWF0T3B0aW9ucz86IHsgZGlzcGxheU1vZGU/OiBEaXNwbGF5TW9kZSB9LFxuXHRjdXN0b21Gb3JtYXR0ZXI/OiBzdHJpbmdcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+IHtcblx0Y29uc3QgdGFyZ2V0RGlzcGxheU1vZGVPdmVycmlkZSA9IGZpZWxkRm9ybWF0T3B0aW9ucz8uZGlzcGxheU1vZGU7XG5cdGxldCBvdXRFeHByZXNzaW9uID0gcHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbjtcblx0Y29uc3QgcHJvcGVydHlEZWZpbml0aW9uID0gaXNQcm9wZXJ0eVBhdGhFeHByZXNzaW9uKHByb3BlcnR5RGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QpXG5cdFx0PyAocHJvcGVydHlEYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdC4kdGFyZ2V0IGFzIFByb3BlcnR5KVxuXHRcdDogKHByb3BlcnR5RGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QgYXMgUHJvcGVydHkpO1xuXHRjb25zdCB0YXJnZXREaXNwbGF5TW9kZSA9IHRhcmdldERpc3BsYXlNb2RlT3ZlcnJpZGUgfHwgVUlGb3JtYXR0ZXJzLmdldERpc3BsYXlNb2RlKHByb3BlcnR5RGF0YU1vZGVsUGF0aCk7XG5cdGNvbnN0IGNvbW1vblRleHQgPSBwcm9wZXJ0eURlZmluaXRpb24uYW5ub3RhdGlvbnM/LkNvbW1vbj8uVGV4dDtcblx0Y29uc3QgcmVsYXRpdmVMb2NhdGlvbiA9IGdldFJlbGF0aXZlUGF0aHMocHJvcGVydHlEYXRhTW9kZWxQYXRoKTtcblx0Y29uc3QgZm9ybWF0dGVyID0gY3VzdG9tRm9ybWF0dGVyIHx8IHZhbHVlRm9ybWF0dGVycy5mb3JtYXRXaXRoQnJhY2tldHM7XG5cdHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24gPSBmb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uKHByb3BlcnR5RGVmaW5pdGlvbiwgcHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbik7XG5cdGlmICh0YXJnZXREaXNwbGF5TW9kZSAhPT0gXCJWYWx1ZVwiICYmIGNvbW1vblRleHQpIHtcblx0XHRzd2l0Y2ggKHRhcmdldERpc3BsYXlNb2RlKSB7XG5cdFx0XHRjYXNlIFwiRGVzY3JpcHRpb25cIjpcblx0XHRcdFx0b3V0RXhwcmVzc2lvbiA9IGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihjb21tb25UZXh0LCByZWxhdGl2ZUxvY2F0aW9uKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiRGVzY3JpcHRpb25WYWx1ZVwiOlxuXHRcdFx0XHRvdXRFeHByZXNzaW9uID0gZm9ybWF0UmVzdWx0KFxuXHRcdFx0XHRcdFtnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oY29tbW9uVGV4dCwgcmVsYXRpdmVMb2NhdGlvbiksIHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb25dLFxuXHRcdFx0XHRcdGZvcm1hdHRlclxuXHRcdFx0XHQpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJWYWx1ZURlc2NyaXB0aW9uXCI6XG5cdFx0XHRcdG91dEV4cHJlc3Npb24gPSBmb3JtYXRSZXN1bHQoXG5cdFx0XHRcdFx0W3Byb3BlcnR5QmluZGluZ0V4cHJlc3Npb24sIGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihjb21tb25UZXh0LCByZWxhdGl2ZUxvY2F0aW9uKV0sXG5cdFx0XHRcdFx0Zm9ybWF0dGVyXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gb3V0RXhwcmVzc2lvbjtcbn07XG5leHBvcnQgY29uc3QgZ2V0QmluZGluZ1dpdGhUZXh0ID0gZnVuY3Rpb24gKFxuXHR0YXJnZXREYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5IHwgUGF0aEFubm90YXRpb25FeHByZXNzaW9uPFByb3BlcnR5Pj4sXG5cdGN1c3RvbUZvcm1hdHRlcj86IHN0cmluZ1xuKTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRsZXQgcHJvcGVydHlEYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5Pjtcblx0aWYgKGlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uPFByb3BlcnR5Pih0YXJnZXREYXRhTW9kZWxQYXRoPy50YXJnZXRPYmplY3QpKSB7XG5cdFx0cHJvcGVydHlEYXRhTW9kZWxQYXRoID0gZW5oYW5jZURhdGFNb2RlbFBhdGg8UHJvcGVydHk+KHRhcmdldERhdGFNb2RlbFBhdGgsIHRhcmdldERhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0Py5wYXRoKTtcblx0fSBlbHNlIHtcblx0XHRwcm9wZXJ0eURhdGFNb2RlbFBhdGggPSB0YXJnZXREYXRhTW9kZWxQYXRoIGFzIERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+O1xuXHR9XG5cdGNvbnN0IHByb3BlcnR5RGVmaW5pdGlvbiA9IHByb3BlcnR5RGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QgYXMgUHJvcGVydHk7XG5cblx0bGV0IHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24gPSBwYXRoSW5Nb2RlbChcblx0XHRnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoKHByb3BlcnR5RGF0YU1vZGVsUGF0aClcblx0KSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPjtcblxuXHRwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uID0gZm9ybWF0V2l0aFR5cGVJbmZvcm1hdGlvbihwcm9wZXJ0eURlZmluaXRpb24sIHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24sIHRydWUpO1xuXHRjb25zdCB0ZXh0QXJyYW5nZW1lbnRCaW5kaW5nID0gZ2V0QmluZGluZ1dpdGhUZXh0QXJyYW5nZW1lbnQocHJvcGVydHlEYXRhTW9kZWxQYXRoLCBwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uLCB7fSwgY3VzdG9tRm9ybWF0dGVyKTtcblx0cmV0dXJuICgocHJvcGVydHlEZWZpbml0aW9uLmFubm90YXRpb25zLlVJICYmXG5cdFx0IWlzUmVmZXJlbmNlUHJvcGVydHlTdGF0aWNhbGx5SGlkZGVuKHByb3BlcnR5RGVmaW5pdGlvbi5hbm5vdGF0aW9ucy5VSS5EYXRhRmllbGREZWZhdWx0KSAmJlxuXHRcdGNvbXBpbGVFeHByZXNzaW9uKHRleHRBcnJhbmdlbWVudEJpbmRpbmcpKSB8fFxuXHRcdHVuZGVmaW5lZCkgYXMgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG59O1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0VBa0JBOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNPLE1BQU1BLG9CQUFvQixHQUFHLFVBQVVDLFVBQTZDLEVBQW9DO0lBQzlILE9BQU9DLGlCQUFpQixDQUFDRCxVQUFVLENBQUM7RUFDckMsQ0FBQztFQUFDO0VBQ0ssTUFBTUUsNkJBQTZCLEdBQUcsVUFDNUNDLHFCQUFvRCxFQUNwREMseUJBQTJELEVBQzNEQyxrQkFBa0QsRUFDbERDLGVBQXdCLEVBQ1c7SUFBQTtJQUNuQyxNQUFNQyx5QkFBeUIsR0FBR0Ysa0JBQWtCLGFBQWxCQSxrQkFBa0IsdUJBQWxCQSxrQkFBa0IsQ0FBRUcsV0FBVztJQUNqRSxJQUFJQyxhQUFhLEdBQUdMLHlCQUF5QjtJQUM3QyxNQUFNTSxrQkFBa0IsR0FBR0Msd0JBQXdCLENBQUNSLHFCQUFxQixDQUFDUyxZQUFZLENBQUMsR0FDbkZULHFCQUFxQixDQUFDUyxZQUFZLENBQUNDLE9BQU8sR0FDMUNWLHFCQUFxQixDQUFDUyxZQUF5QjtJQUNuRCxNQUFNRSxpQkFBaUIsR0FBR1AseUJBQXlCLElBQUlRLFlBQVksQ0FBQ0MsY0FBYyxDQUFDYixxQkFBcUIsQ0FBQztJQUN6RyxNQUFNYyxVQUFVLDRCQUFHUCxrQkFBa0IsQ0FBQ1EsV0FBVyxvRkFBOUIsc0JBQWdDQyxNQUFNLDJEQUF0Qyx1QkFBd0NDLElBQUk7SUFDL0QsTUFBTUMsZ0JBQWdCLEdBQUdDLGdCQUFnQixDQUFDbkIscUJBQXFCLENBQUM7SUFDaEUsTUFBTW9CLFNBQVMsR0FBR2pCLGVBQWUsSUFBSWtCLGVBQWUsQ0FBQ0Msa0JBQWtCO0lBQ3ZFckIseUJBQXlCLEdBQUdzQix5QkFBeUIsQ0FBQ2hCLGtCQUFrQixFQUFFTix5QkFBeUIsQ0FBQztJQUNwRyxJQUFJVSxpQkFBaUIsS0FBSyxPQUFPLElBQUlHLFVBQVUsRUFBRTtNQUNoRCxRQUFRSCxpQkFBaUI7UUFDeEIsS0FBSyxhQUFhO1VBQ2pCTCxhQUFhLEdBQUdrQiwyQkFBMkIsQ0FBQ1YsVUFBVSxFQUFFSSxnQkFBZ0IsQ0FBQztVQUN6RTtRQUNELEtBQUssa0JBQWtCO1VBQ3RCWixhQUFhLEdBQUdtQixZQUFZLENBQzNCLENBQUNELDJCQUEyQixDQUFDVixVQUFVLEVBQUVJLGdCQUFnQixDQUFDLEVBQUVqQix5QkFBeUIsQ0FBQyxFQUN0Rm1CLFNBQVMsQ0FDVDtVQUNEO1FBQ0QsS0FBSyxrQkFBa0I7VUFDdEJkLGFBQWEsR0FBR21CLFlBQVksQ0FDM0IsQ0FBQ3hCLHlCQUF5QixFQUFFdUIsMkJBQTJCLENBQUNWLFVBQVUsRUFBRUksZ0JBQWdCLENBQUMsQ0FBQyxFQUN0RkUsU0FBUyxDQUNUO1VBQ0Q7TUFBTTtJQUVUO0lBQ0EsT0FBT2QsYUFBYTtFQUNyQixDQUFDO0VBQUM7RUFDSyxNQUFNb0Isa0JBQWtCLEdBQUcsVUFDakNDLG1CQUF1RixFQUN2RnhCLGVBQXdCLEVBQ1c7SUFDbkMsSUFBSUgscUJBQW9EO0lBQ3hELElBQUk0QiwwQkFBMEIsQ0FBV0QsbUJBQW1CLGFBQW5CQSxtQkFBbUIsdUJBQW5CQSxtQkFBbUIsQ0FBRWxCLFlBQVksQ0FBQyxFQUFFO01BQUE7TUFDNUVULHFCQUFxQixHQUFHNkIsb0JBQW9CLENBQVdGLG1CQUFtQiwyQkFBRUEsbUJBQW1CLENBQUNsQixZQUFZLDBEQUFoQyxzQkFBa0NxQixJQUFJLENBQUM7SUFDcEgsQ0FBQyxNQUFNO01BQ045QixxQkFBcUIsR0FBRzJCLG1CQUFvRDtJQUM3RTtJQUNBLE1BQU1wQixrQkFBa0IsR0FBR1AscUJBQXFCLENBQUNTLFlBQXdCO0lBRXpFLElBQUlSLHlCQUF5QixHQUFHOEIsV0FBVyxDQUMxQ0Msa0NBQWtDLENBQUNoQyxxQkFBcUIsQ0FBQyxDQUNyQjtJQUVyQ0MseUJBQXlCLEdBQUdzQix5QkFBeUIsQ0FBQ2hCLGtCQUFrQixFQUFFTix5QkFBeUIsRUFBRSxJQUFJLENBQUM7SUFDMUcsTUFBTWdDLHNCQUFzQixHQUFHbEMsNkJBQTZCLENBQUNDLHFCQUFxQixFQUFFQyx5QkFBeUIsRUFBRSxDQUFDLENBQUMsRUFBRUUsZUFBZSxDQUFDO0lBQ25JLE9BQVNJLGtCQUFrQixDQUFDUSxXQUFXLENBQUNtQixFQUFFLElBQ3pDLENBQUNDLG1DQUFtQyxDQUFDNUIsa0JBQWtCLENBQUNRLFdBQVcsQ0FBQ21CLEVBQUUsQ0FBQ0UsZ0JBQWdCLENBQUMsSUFDeEZ0QyxpQkFBaUIsQ0FBQ21DLHNCQUFzQixDQUFDLElBQ3pDSSxTQUFTO0VBQ1gsQ0FBQztFQUFDO0VBQUE7QUFBQSJ9
@@ -1,4 +1,4 @@
1
- import type { Property } from "@sap-ux/vocabularies-types";
1
+ import type { PathAnnotationExpression, Property } from "@sap-ux/vocabularies-types";
2
2
  import valueFormatters from "sap/fe/core/formatters/ValueFormatter";
3
3
  import type { BindingToolkitExpression, CompiledBindingToolkitExpression } from "sap/fe/core/helpers/BindingToolkit";
4
4
  import {
@@ -8,7 +8,7 @@ import {
8
8
  getExpressionFromAnnotation,
9
9
  pathInModel
10
10
  } from "sap/fe/core/helpers/BindingToolkit";
11
- import { isPathAnnotationExpression } from "sap/fe/core/helpers/TypeGuards";
11
+ import { isPathAnnotationExpression, isPropertyPathExpression } from "sap/fe/core/helpers/TypeGuards";
12
12
  import type { DataModelObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
13
13
  import { enhanceDataModelPath, getContextRelativeTargetObjectPath, getRelativePaths } from "sap/fe/core/templating/DataModelPathHelper";
14
14
  import type * as DisplayModeFormatter from "sap/fe/core/templating/DisplayModeFormatter";
@@ -24,21 +24,20 @@ export type DisplayMode = DisplayModeFormatter.DisplayMode;
24
24
  * @param expression The expression which needs to be compiled
25
25
  * @returns The expression-binding string
26
26
  */
27
- export const getExpressionBinding = function (expression: BindingToolkitExpression<any>): CompiledBindingToolkitExpression {
27
+ export const getExpressionBinding = function (expression: BindingToolkitExpression<unknown>): CompiledBindingToolkitExpression {
28
28
  return compileExpression(expression);
29
29
  };
30
30
  export const getBindingWithTextArrangement = function (
31
- propertyDataModelPath: DataModelObjectPath,
31
+ propertyDataModelPath: DataModelObjectPath<Property>,
32
32
  propertyBindingExpression: BindingToolkitExpression<string>,
33
33
  fieldFormatOptions?: { displayMode?: DisplayMode },
34
34
  customFormatter?: string
35
35
  ): BindingToolkitExpression<string> {
36
36
  const targetDisplayModeOverride = fieldFormatOptions?.displayMode;
37
37
  let outExpression = propertyBindingExpression;
38
- const propertyDefinition =
39
- propertyDataModelPath.targetObject.type === "PropertyPath"
40
- ? (propertyDataModelPath.targetObject.$target as Property)
41
- : (propertyDataModelPath.targetObject as Property);
38
+ const propertyDefinition = isPropertyPathExpression(propertyDataModelPath.targetObject)
39
+ ? (propertyDataModelPath.targetObject.$target as Property)
40
+ : (propertyDataModelPath.targetObject as Property);
42
41
  const targetDisplayMode = targetDisplayModeOverride || UIFormatters.getDisplayMode(propertyDataModelPath);
43
42
  const commonText = propertyDefinition.annotations?.Common?.Text;
44
43
  const relativeLocation = getRelativePaths(propertyDataModelPath);
@@ -66,12 +65,14 @@ export const getBindingWithTextArrangement = function (
66
65
  return outExpression;
67
66
  };
68
67
  export const getBindingWithText = function (
69
- targetDataModelPath: DataModelObjectPath,
68
+ targetDataModelPath: DataModelObjectPath<Property | PathAnnotationExpression<Property>>,
70
69
  customFormatter?: string
71
70
  ): CompiledBindingToolkitExpression {
72
- let propertyDataModelPath = targetDataModelPath;
73
- if (isPathAnnotationExpression(targetDataModelPath?.targetObject)) {
74
- propertyDataModelPath = enhanceDataModelPath(targetDataModelPath, targetDataModelPath.targetObject?.path);
71
+ let propertyDataModelPath: DataModelObjectPath<Property>;
72
+ if (isPathAnnotationExpression<Property>(targetDataModelPath?.targetObject)) {
73
+ propertyDataModelPath = enhanceDataModelPath<Property>(targetDataModelPath, targetDataModelPath.targetObject?.path);
74
+ } else {
75
+ propertyDataModelPath = targetDataModelPath as DataModelObjectPath<Property>;
75
76
  }
76
77
  const propertyDefinition = propertyDataModelPath.targetObject as Property;
77
78
 
@@ -28,7 +28,7 @@ sap.ui.define(["sap/fe/core/helpers/BindingToolkit", "sap/fe/core/templating/Dat
28
28
  * @returns An expression to deduce the state of an objectStatus.
29
29
  */
30
30
  const buildExpressionForCriticalityColor = (oTarget, oPropertyDataModelPath) => {
31
- const oAnnotationTarget = oTarget.targetObject ? oTarget.targetObject : oTarget;
31
+ const oAnnotationTarget = oTarget !== null && oTarget !== void 0 && oTarget.targetObject ? oTarget.targetObject : oTarget;
32
32
  const oCriticalityProperty = oAnnotationTarget === null || oAnnotationTarget === void 0 ? void 0 : oAnnotationTarget.Criticality;
33
33
  const relativeLocation = oPropertyDataModelPath ? getRelativePaths(oPropertyDataModelPath) : undefined;
34
34
  const oCriticalityExpression = getExpressionFromAnnotation(oCriticalityProperty, relativeLocation);
@@ -129,4 +129,4 @@ sap.ui.define(["sap/fe/core/helpers/BindingToolkit", "sap/fe/core/templating/Dat
129
129
  _exports.buildExpressionForCriticality = buildExpressionForCriticality;
130
130
  return _exports;
131
131
  }, false);
132
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJERUZBVUxUQ1JJVElDQUxJVFlNQVAiLCJlcnJvciIsImNyaXRpY2FsIiwiZ29vZCIsIm5ldXRyYWwiLCJidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yIiwib1RhcmdldCIsIm9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgiLCJvQW5ub3RhdGlvblRhcmdldCIsInRhcmdldE9iamVjdCIsIm9Dcml0aWNhbGl0eVByb3BlcnR5IiwiQ3JpdGljYWxpdHkiLCJyZWxhdGl2ZUxvY2F0aW9uIiwiZ2V0UmVsYXRpdmVQYXRocyIsInVuZGVmaW5lZCIsIm9Dcml0aWNhbGl0eUV4cHJlc3Npb24iLCJnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24iLCJzVmFsdWVTdGF0ZUV4cHJlc3Npb24iLCJpZkVsc2UiLCJvciIsImVxdWFsIiwiY29uc3RhbnQiLCJjb21waWxlRXhwcmVzc2lvbiIsImJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5SWNvbiIsImJDb25kaXRpb24iLCJDcml0aWNhbGl0eVJlcHJlc2VudGF0aW9uIiwic0ljb25QYXRoIiwiYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlCdXR0b25UeXBlIiwic0J1dHRvblR5cGVFeHByZXNzaW9uIiwiYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlDb2xvck1pY3JvQ2hhcnQiLCJzQ29sb3JFeHByZXNzaW9uIiwiYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHkiLCJhbm5vdGF0aW9uVGFyZ2V0IiwiY3JpdGljYWxpdHlNYXAiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkNyaXRpY2FsaXR5Rm9ybWF0dGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIEFubm90YXRpb25Bbm5vdGF0aW9uc0Jhc2VfVUkgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJX0VkbVwiO1xuaW1wb3J0IHR5cGUgeyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgY29tcGlsZUV4cHJlc3Npb24sIGNvbnN0YW50LCBlcXVhbCwgZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uLCBpZkVsc2UsIG9yIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGdldFJlbGF0aXZlUGF0aHMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5cbmNvbnN0IERFRkFVTFRDUklUSUNBTElUWU1BUCA9IHtcblx0ZXJyb3I6IFwiRXJyb3JcIixcblx0Y3JpdGljYWw6IFwiQ3JpdGljYWxcIixcblx0Z29vZDogXCJHb29kXCIsXG5cdG5ldXRyYWw6IFwiTmV1dHJhbFwiXG59O1xuLyoqXG4gKiBSZXR1cm5zIGFuIGV4cHJlc3Npb24gdG8gc2V0IGJ1dHRvbiB0eXBlIGJhc2VkIG9uIENyaXRpY2FsaXR5XG4gKiBTdXBwb3J0ZWQgQ3JpdGljYWxpdHk6IFBvc2l0aXZlLCBOZWdhdGl2ZSwgQ3JpdGljYWwgYW5kIEluZm9ybWF0aW9uIGxlYWRpbmcgdG8gU3VjY2VzcywgRXJyb3IsIFdhcm5pbmcgYW5kIE5vbmUgc3RhdGUgcmVzcGVjdGl2ZWx5LlxuICpcbiAqIEBwYXJhbSBvVGFyZ2V0IEEgRGF0YUZpZWxkIGEgRGF0YVBvaW50IG9yIGEgRGF0YU1vZGVsT2JqZWN0UGF0aC5cbiAqIEBwYXJhbSBbb1Byb3BlcnR5RGF0YU1vZGVsUGF0aF0gRGF0YU1vZGVsT2JqZWN0UGF0aC5cbiAqIEByZXR1cm5zIEFuIGV4cHJlc3Npb24gdG8gZGVkdWNlIHRoZSBzdGF0ZSBvZiBhbiBvYmplY3RTdGF0dXMuXG4gKi9cbmV4cG9ydCBjb25zdCBidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yID0gKG9UYXJnZXQ6IGFueSwgb1Byb3BlcnR5RGF0YU1vZGVsUGF0aD86IERhdGFNb2RlbE9iamVjdFBhdGgpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuXHRjb25zdCBvQW5ub3RhdGlvblRhcmdldCA9IG9UYXJnZXQudGFyZ2V0T2JqZWN0ID8gb1RhcmdldC50YXJnZXRPYmplY3QgOiBvVGFyZ2V0O1xuXHRjb25zdCBvQ3JpdGljYWxpdHlQcm9wZXJ0eSA9IG9Bbm5vdGF0aW9uVGFyZ2V0Py5Dcml0aWNhbGl0eTtcblx0Y29uc3QgcmVsYXRpdmVMb2NhdGlvbiA9IG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGggPyBnZXRSZWxhdGl2ZVBhdGhzKG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgpIDogdW5kZWZpbmVkO1xuXHRjb25zdCBvQ3JpdGljYWxpdHlFeHByZXNzaW9uOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiA9IGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihvQ3JpdGljYWxpdHlQcm9wZXJ0eSwgcmVsYXRpdmVMb2NhdGlvbik7XG5cdGxldCBzVmFsdWVTdGF0ZUV4cHJlc3Npb247XG5cdGlmIChvQ3JpdGljYWxpdHlQcm9wZXJ0eSkge1xuXHRcdHNWYWx1ZVN0YXRlRXhwcmVzc2lvbiA9IGlmRWxzZShcblx0XHRcdG9yKFxuXHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIlVJLkNyaXRpY2FsaXR5VHlwZS9OZWdhdGl2ZVwiKSksXG5cdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPG51bWJlcj4sIGNvbnN0YW50KDEpKSxcblx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCIxXCIpKVxuXHRcdFx0KSxcblx0XHRcdGNvbnN0YW50KFwiRXJyb3JcIiksXG5cdFx0XHRpZkVsc2UoXG5cdFx0XHRcdG9yKFxuXHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL0NyaXRpY2FsXCIpKSxcblx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxudW1iZXI+LCBjb25zdGFudCgyKSksXG5cdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCIyXCIpKVxuXHRcdFx0XHQpLFxuXHRcdFx0XHRjb25zdGFudChcIldhcm5pbmdcIiksXG5cdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRvcihcblx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL1Bvc2l0aXZlXCIpKSxcblx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPG51bWJlcj4sIGNvbnN0YW50KDMpKSxcblx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiM1wiKSlcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGNvbnN0YW50KFwiU3VjY2Vzc1wiKSxcblx0XHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0XHRvcihcblx0XHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCJVSS5Dcml0aWNhbGl0eVR5cGUvSW5mb3JtYXRpb25cIikpLFxuXHRcdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxudW1iZXI+LCBjb25zdGFudCg1KSksXG5cdFx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiNVwiKSlcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRjb25zdGFudChcIkluZm9ybWF0aW9uXCIpLFxuXHRcdFx0XHRcdFx0Y29uc3RhbnQoXCJOb25lXCIpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpXG5cdFx0XHQpXG5cdFx0KTtcblx0fSBlbHNlIHtcblx0XHQvLyBBbnkgb3RoZXIgY2FzZXMgYXJlIG5vdCB2YWxpZCwgdGhlIGRlZmF1bHQgdmFsdWUgb2YgJ05vbmUnIHdpbGwgYmUgcmV0dXJuZWRcblx0XHRzVmFsdWVTdGF0ZUV4cHJlc3Npb24gPSBjb25zdGFudChcIk5vbmVcIik7XG5cdH1cblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKHNWYWx1ZVN0YXRlRXhwcmVzc2lvbik7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYW4gZXhwcmVzc2lvbiB0byBzZXQgaWNvbiB0eXBlIGJhc2VkIG9uIENyaXRpY2FsaXR5XG4gKiBTdXBwb3J0ZWQgQ3JpdGljYWxpdHk6IFBvc2l0aXZlLCBOZWdhdGl2ZSwgQ3JpdGljYWwgYW5kIEluZm9ybWF0aW9uLlxuICpcbiAqIEBwYXJhbSBvVGFyZ2V0IEEgRGF0YUZpZWxkIGEgRGF0YVBvaW50IG9yIGEgRGF0YU1vZGVsT2JqZWN0UGF0aC5cbiAqIEBwYXJhbSBbb1Byb3BlcnR5RGF0YU1vZGVsUGF0aF0gRGF0YU1vZGVsT2JqZWN0UGF0aC5cbiAqIEByZXR1cm5zIEFuIGV4cHJlc3Npb24gdG8gZGVkdWNlIHRoZSBpY29uIG9mIGFuIG9iamVjdFN0YXR1cy5cbiAqL1xuZXhwb3J0IGNvbnN0IGJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5SWNvbiA9IChvVGFyZ2V0OiBhbnksIG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGg/OiBEYXRhTW9kZWxPYmplY3RQYXRoKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcblx0Y29uc3Qgb0Fubm90YXRpb25UYXJnZXQgPSBvVGFyZ2V0Py50YXJnZXRPYmplY3QgPyBvVGFyZ2V0LnRhcmdldE9iamVjdCA6IG9UYXJnZXQ7XG5cdGNvbnN0IG9Dcml0aWNhbGl0eVByb3BlcnR5ID0gb0Fubm90YXRpb25UYXJnZXQ/LkNyaXRpY2FsaXR5O1xuXHRjb25zdCByZWxhdGl2ZUxvY2F0aW9uID0gb1Byb3BlcnR5RGF0YU1vZGVsUGF0aCA/IGdldFJlbGF0aXZlUGF0aHMob1Byb3BlcnR5RGF0YU1vZGVsUGF0aCkgOiB1bmRlZmluZWQ7XG5cdGNvbnN0IG9Dcml0aWNhbGl0eUV4cHJlc3Npb246IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+ID0gZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKG9Dcml0aWNhbGl0eVByb3BlcnR5LCByZWxhdGl2ZUxvY2F0aW9uKTtcblx0Y29uc3QgYkNvbmRpdGlvbiA9XG5cdFx0b0Fubm90YXRpb25UYXJnZXQ/LkNyaXRpY2FsaXR5UmVwcmVzZW50YXRpb24gJiZcblx0XHRvQW5ub3RhdGlvblRhcmdldD8uQ3JpdGljYWxpdHlSZXByZXNlbnRhdGlvbiA9PT0gXCJVSS5Dcml0aWNhbGl0eVJlcHJlc2VudGF0aW9uVHlwZS9XaXRob3V0SWNvblwiO1xuXHRsZXQgc0ljb25QYXRoO1xuXHRpZiAoIWJDb25kaXRpb24pIHtcblx0XHRpZiAob0NyaXRpY2FsaXR5UHJvcGVydHkpIHtcblx0XHRcdHNJY29uUGF0aCA9IGlmRWxzZShcblx0XHRcdFx0b3IoXG5cdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCJVSS5Dcml0aWNhbGl0eVR5cGUvTmVnYXRpdmVcIikpLFxuXHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPG51bWJlcj4sIGNvbnN0YW50KDEpKSxcblx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIjFcIikpXG5cdFx0XHRcdCksXG5cdFx0XHRcdGNvbnN0YW50KFwic2FwLWljb246Ly9tZXNzYWdlLWVycm9yXCIpLFxuXHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0b3IoXG5cdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIlVJLkNyaXRpY2FsaXR5VHlwZS9Dcml0aWNhbFwiKSksXG5cdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxudW1iZXI+LCBjb25zdGFudCgyKSksXG5cdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIjJcIikpXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRjb25zdGFudChcInNhcC1pY29uOi8vbWVzc2FnZS13YXJuaW5nXCIpLFxuXHRcdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRcdG9yKFxuXHRcdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIlVJLkNyaXRpY2FsaXR5VHlwZS9Qb3NpdGl2ZVwiKSksXG5cdFx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPG51bWJlcj4sIGNvbnN0YW50KDMpKSxcblx0XHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCIzXCIpKVxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdGNvbnN0YW50KFwic2FwLWljb246Ly9tZXNzYWdlLXN1Y2Nlc3NcIiksXG5cdFx0XHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0XHRcdG9yKFxuXHRcdFx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL0luZm9ybWF0aW9uXCIpKSxcblx0XHRcdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxudW1iZXI+LCBjb25zdGFudCg1KSksXG5cdFx0XHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCI1XCIpKVxuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRjb25zdGFudChcInNhcC1pY29uOi8vbWVzc2FnZS1pbmZvcm1hdGlvblwiKSxcblx0XHRcdFx0XHRcdFx0Y29uc3RhbnQoXCJcIilcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpXG5cdFx0XHRcdClcblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHNJY29uUGF0aCA9IGNvbnN0YW50KFwiXCIpO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRzSWNvblBhdGggPSBjb25zdGFudChcIlwiKTtcblx0fVxuXHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oc0ljb25QYXRoKTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBhbiBleHByZXNzaW9uIHRvIHNldCBidXR0b24gdHlwZSBiYXNlZCBvbiBDcml0aWNhbGl0eVxuICogU3VwcG9ydGVkIENyaXRpY2FsaXR5OiBQb3NpdGl2ZSBhbmQgTmVnYXRpdmUgbGVhZGluZyB0byBBY2NlcHQgYW5kIFJlamVjdCBidXR0b24gdHlwZSByZXNwZWN0aXZlbHkuXG4gKlxuICogQHBhcmFtIG9UYXJnZXQgQSBEYXRhRmllbGQsIERhdGFQb2ludCwgRGF0YU1vZGVsT2JqZWN0UGF0aC5cbiAqIEByZXR1cm5zIEFuIGV4cHJlc3Npb24gdG8gZGVkdWNlIGJ1dHRvbiB0eXBlLlxuICovXG5leHBvcnQgY29uc3QgYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlCdXR0b25UeXBlID0gKG9UYXJnZXQ6IGFueSk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG5cdGNvbnN0IG9Bbm5vdGF0aW9uVGFyZ2V0ID0gb1RhcmdldD8udGFyZ2V0T2JqZWN0ID8gb1RhcmdldC50YXJnZXRPYmplY3QgOiBvVGFyZ2V0O1xuXHRjb25zdCBvQ3JpdGljYWxpdHlQcm9wZXJ0eSA9IG9Bbm5vdGF0aW9uVGFyZ2V0Py5Dcml0aWNhbGl0eTtcblx0Y29uc3Qgb0NyaXRpY2FsaXR5RXhwcmVzc2lvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4gPSBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24ob0NyaXRpY2FsaXR5UHJvcGVydHkpO1xuXHRsZXQgc0J1dHRvblR5cGVFeHByZXNzaW9uO1xuXHRpZiAob0NyaXRpY2FsaXR5UHJvcGVydHkpIHtcblx0XHRzQnV0dG9uVHlwZUV4cHJlc3Npb24gPSBpZkVsc2UoXG5cdFx0XHRvcihcblx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCJVSS5Dcml0aWNhbGl0eVR5cGUvTmVnYXRpdmVcIikpLFxuXHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxudW1iZXI+LCBjb25zdGFudCgxKSksXG5cdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiMVwiKSlcblx0XHRcdCksXG5cdFx0XHRjb25zdGFudChcIlJlamVjdFwiKSxcblx0XHRcdGlmRWxzZShcblx0XHRcdFx0b3IoXG5cdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCJVSS5Dcml0aWNhbGl0eVR5cGUvUG9zaXRpdmVcIikpLFxuXHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPG51bWJlcj4sIGNvbnN0YW50KDMpKSxcblx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIjNcIikpXG5cdFx0XHRcdCksXG5cdFx0XHRcdGNvbnN0YW50KFwiQWNjZXB0XCIpLFxuXHRcdFx0XHRjb25zdGFudChcIkRlZmF1bHRcIilcblx0XHRcdClcblx0XHQpO1xuXHR9IGVsc2Uge1xuXHRcdC8vIEFueSBvdGhlciBjYXNlcyBhcmUgbm90IHZhbGlkLCB0aGUgZ2hvc3QgdmFsdWUgb2YgJ0dob3N0JyB3aWxsIGJlIHJldHVybmVkXG5cdFx0c0J1dHRvblR5cGVFeHByZXNzaW9uID0gY29uc3RhbnQoXCJHaG9zdFwiKTtcblx0fVxuXHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oc0J1dHRvblR5cGVFeHByZXNzaW9uKTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBhbiBleHByZXNzaW9uIHRvIHNldCBjb2xvciBpbiBNaWNyb0NoYXJ0cyBiYXNlZCBvbiBDcml0aWNhbGl0eVxuICogU3VwcG9ydGVkIENyaXRpY2FsaXR5OiBQb3NpdGl2ZSwgTmVnYXRpdmUgYW5kIENyaXRpY2FsIGxlYWRpbmcgdG8gR29vZCwgRXJyb3IgYW5kIENyaXRpY2FsIGNvbG9yIHJlc3BlY3RpdmVseS5cbiAqXG4gKiBAcGFyYW0gb1RhcmdldCBBIERhdGFGaWVsZCwgRGF0YVBvaW50LCBEYXRhTW9kZWxPYmplY3RQYXRoXG4gKiBAcmV0dXJucyBBbiBleHByZXNzaW9uIHRvIGRlZHVjZSBjb2xvcnMgaW4gTWljcm9jaGFydHNcbiAqL1xuZXhwb3J0IGNvbnN0IGJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5Q29sb3JNaWNyb0NoYXJ0ID0gKG9UYXJnZXQ6IGFueSk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG5cdGNvbnN0IG9Bbm5vdGF0aW9uVGFyZ2V0ID0gb1RhcmdldD8udGFyZ2V0T2JqZWN0ID8gb1RhcmdldC50YXJnZXRPYmplY3QgOiBvVGFyZ2V0O1xuXHRjb25zdCBzQ29sb3JFeHByZXNzaW9uID0gYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHkob0Fubm90YXRpb25UYXJnZXQpO1xuXHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oc0NvbG9yRXhwcmVzc2lvbik7XG59O1xuXG4vKipcbiAqIEdlbmVyYXRlcyBhbiBleHByZXNzaW9uIHRvIHNldCBjb2xvciBiYXNlZCBvbiBDcml0aWNhbGl0eS5cbiAqXG4gKiBAcGFyYW0gYW5ub3RhdGlvblRhcmdldCBBIERhdGFGaWVsZCwgRGF0YVBvaW50XG4gKiBAcGFyYW0gY3JpdGljYWxpdHlNYXAgQ3JpdGljYWxpdHkgTWFwcGVyXG4gKiBAcmV0dXJucyBBbiBleHByZXNzaW9uIHRvIGRlZHVjZSBjb2xvcnMgaW4gZGF0YXBvaW50c1xuICovXG5leHBvcnQgY29uc3QgYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHkgPSAoXG5cdGFubm90YXRpb25UYXJnZXQ6IEFubm90YXRpb25Bbm5vdGF0aW9uc0Jhc2VfVUksXG5cdGNyaXRpY2FsaXR5TWFwID0gREVGQVVMVENSSVRJQ0FMSVRZTUFQXG4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248U3RyaW5nPiA9PiB7XG5cdGNvbnN0IG9Dcml0aWNhbGl0eVByb3BlcnR5ID0gYW5ub3RhdGlvblRhcmdldD8uQ3JpdGljYWxpdHk7XG5cdGNvbnN0IG9Dcml0aWNhbGl0eUV4cHJlc3Npb246IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmcgfCBudW1iZXI+ID0gZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKG9Dcml0aWNhbGl0eVByb3BlcnR5KTtcblx0bGV0IHNDb2xvckV4cHJlc3Npb247XG5cdGlmIChvQ3JpdGljYWxpdHlQcm9wZXJ0eSkge1xuXHRcdHNDb2xvckV4cHJlc3Npb24gPSBpZkVsc2UoXG5cdFx0XHRvcihcblx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCJVSS5Dcml0aWNhbGl0eVR5cGUvTmVnYXRpdmVcIikpLFxuXHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxudW1iZXI+LCBjb25zdGFudCgxKSksXG5cdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiMVwiKSlcblx0XHRcdCksXG5cdFx0XHRjb25zdGFudChjcml0aWNhbGl0eU1hcC5lcnJvciksXG5cdFx0XHRpZkVsc2UoXG5cdFx0XHRcdG9yKFxuXHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL0NyaXRpY2FsXCIpKSxcblx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxudW1iZXI+LCBjb25zdGFudCgyKSksXG5cdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCIyXCIpKVxuXHRcdFx0XHQpLFxuXHRcdFx0XHRjb25zdGFudChjcml0aWNhbGl0eU1hcC5jcml0aWNhbCksXG5cdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRvcihcblx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL1Bvc2l0aXZlXCIpKSxcblx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPG51bWJlcj4sIGNvbnN0YW50KDMpKSxcblx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiM1wiKSlcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGNvbnN0YW50KGNyaXRpY2FsaXR5TWFwLmdvb2QpLFxuXHRcdFx0XHRcdGNvbnN0YW50KGNyaXRpY2FsaXR5TWFwLm5ldXRyYWwpXG5cdFx0XHRcdClcblx0XHRcdClcblx0XHQpO1xuXHR9IGVsc2Uge1xuXHRcdHNDb2xvckV4cHJlc3Npb24gPSBjb25zdGFudChjcml0aWNhbGl0eU1hcC5uZXV0cmFsKTtcblx0fVxuXHRyZXR1cm4gc0NvbG9yRXhwcmVzc2lvbjtcbn07XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7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
132
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJERUZBVUxUQ1JJVElDQUxJVFlNQVAiLCJlcnJvciIsImNyaXRpY2FsIiwiZ29vZCIsIm5ldXRyYWwiLCJidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yIiwib1RhcmdldCIsIm9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgiLCJvQW5ub3RhdGlvblRhcmdldCIsInRhcmdldE9iamVjdCIsIm9Dcml0aWNhbGl0eVByb3BlcnR5IiwiQ3JpdGljYWxpdHkiLCJyZWxhdGl2ZUxvY2F0aW9uIiwiZ2V0UmVsYXRpdmVQYXRocyIsInVuZGVmaW5lZCIsIm9Dcml0aWNhbGl0eUV4cHJlc3Npb24iLCJnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24iLCJzVmFsdWVTdGF0ZUV4cHJlc3Npb24iLCJpZkVsc2UiLCJvciIsImVxdWFsIiwiY29uc3RhbnQiLCJjb21waWxlRXhwcmVzc2lvbiIsImJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5SWNvbiIsImJDb25kaXRpb24iLCJDcml0aWNhbGl0eVJlcHJlc2VudGF0aW9uIiwic0ljb25QYXRoIiwiYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlCdXR0b25UeXBlIiwic0J1dHRvblR5cGVFeHByZXNzaW9uIiwiYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlDb2xvck1pY3JvQ2hhcnQiLCJzQ29sb3JFeHByZXNzaW9uIiwiYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHkiLCJhbm5vdGF0aW9uVGFyZ2V0IiwiY3JpdGljYWxpdHlNYXAiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkNyaXRpY2FsaXR5Rm9ybWF0dGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFByb3BlcnR5QW5ub3RhdGlvblZhbHVlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7XG5cdENyaXRpY2FsaXR5VHlwZSxcblx0RGF0YUZpZWxkQWJzdHJhY3RUeXBlcyxcblx0RGF0YUZpZWxkRm9yQWN0aW9uLFxuXHREYXRhUG9pbnQsXG5cdERhdGFQb2ludFR5cGVcbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHR5cGUgeyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgY29tcGlsZUV4cHJlc3Npb24sIGNvbnN0YW50LCBlcXVhbCwgZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uLCBpZkVsc2UsIG9yIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGdldFJlbGF0aXZlUGF0aHMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5cbmNvbnN0IERFRkFVTFRDUklUSUNBTElUWU1BUCA9IHtcblx0ZXJyb3I6IFwiRXJyb3JcIixcblx0Y3JpdGljYWw6IFwiQ3JpdGljYWxcIixcblx0Z29vZDogXCJHb29kXCIsXG5cdG5ldXRyYWw6IFwiTmV1dHJhbFwiXG59O1xuLyoqXG4gKiBSZXR1cm5zIGFuIGV4cHJlc3Npb24gdG8gc2V0IGJ1dHRvbiB0eXBlIGJhc2VkIG9uIENyaXRpY2FsaXR5XG4gKiBTdXBwb3J0ZWQgQ3JpdGljYWxpdHk6IFBvc2l0aXZlLCBOZWdhdGl2ZSwgQ3JpdGljYWwgYW5kIEluZm9ybWF0aW9uIGxlYWRpbmcgdG8gU3VjY2VzcywgRXJyb3IsIFdhcm5pbmcgYW5kIE5vbmUgc3RhdGUgcmVzcGVjdGl2ZWx5LlxuICpcbiAqIEBwYXJhbSBvVGFyZ2V0IEEgRGF0YUZpZWxkIGEgRGF0YVBvaW50IG9yIGEgRGF0YU1vZGVsT2JqZWN0UGF0aC5cbiAqIEBwYXJhbSBbb1Byb3BlcnR5RGF0YU1vZGVsUGF0aF0gRGF0YU1vZGVsT2JqZWN0UGF0aC5cbiAqIEByZXR1cm5zIEFuIGV4cHJlc3Npb24gdG8gZGVkdWNlIHRoZSBzdGF0ZSBvZiBhbiBvYmplY3RTdGF0dXMuXG4gKi9cbmV4cG9ydCBjb25zdCBidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yID0gKFxuXHRvVGFyZ2V0OiBEYXRhTW9kZWxPYmplY3RQYXRoPERhdGFQb2ludFR5cGU+IHwgRGF0YVBvaW50VHlwZSxcblx0b1Byb3BlcnR5RGF0YU1vZGVsUGF0aD86IERhdGFNb2RlbE9iamVjdFBhdGg8RGF0YVBvaW50VHlwZT5cbik6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG5cdGNvbnN0IG9Bbm5vdGF0aW9uVGFyZ2V0ID0gKG9UYXJnZXQgYXMgRGF0YU1vZGVsT2JqZWN0UGF0aDxEYXRhUG9pbnRUeXBlPik/LnRhcmdldE9iamVjdFxuXHRcdD8gKG9UYXJnZXQgYXMgRGF0YU1vZGVsT2JqZWN0UGF0aDxEYXRhUG9pbnRUeXBlPikudGFyZ2V0T2JqZWN0XG5cdFx0OiAob1RhcmdldCBhcyBEYXRhUG9pbnRUeXBlKTtcblx0Y29uc3Qgb0NyaXRpY2FsaXR5UHJvcGVydHkgPSBvQW5ub3RhdGlvblRhcmdldD8uQ3JpdGljYWxpdHkgYXMgUHJvcGVydHlBbm5vdGF0aW9uVmFsdWU8Q3JpdGljYWxpdHlUeXBlPiB8IHVuZGVmaW5lZDtcblx0Y29uc3QgcmVsYXRpdmVMb2NhdGlvbiA9IG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGggPyBnZXRSZWxhdGl2ZVBhdGhzKG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgpIDogdW5kZWZpbmVkO1xuXHRjb25zdCBvQ3JpdGljYWxpdHlFeHByZXNzaW9uOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiA9IGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihvQ3JpdGljYWxpdHlQcm9wZXJ0eSwgcmVsYXRpdmVMb2NhdGlvbik7XG5cdGxldCBzVmFsdWVTdGF0ZUV4cHJlc3Npb247XG5cdGlmIChvQ3JpdGljYWxpdHlQcm9wZXJ0eSkge1xuXHRcdHNWYWx1ZVN0YXRlRXhwcmVzc2lvbiA9IGlmRWxzZShcblx0XHRcdG9yKFxuXHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIlVJLkNyaXRpY2FsaXR5VHlwZS9OZWdhdGl2ZVwiKSksXG5cdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPG51bWJlcj4sIGNvbnN0YW50KDEpKSxcblx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCIxXCIpKVxuXHRcdFx0KSxcblx0XHRcdGNvbnN0YW50KFwiRXJyb3JcIiksXG5cdFx0XHRpZkVsc2UoXG5cdFx0XHRcdG9yKFxuXHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL0NyaXRpY2FsXCIpKSxcblx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxudW1iZXI+LCBjb25zdGFudCgyKSksXG5cdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCIyXCIpKVxuXHRcdFx0XHQpLFxuXHRcdFx0XHRjb25zdGFudChcIldhcm5pbmdcIiksXG5cdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRvcihcblx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL1Bvc2l0aXZlXCIpKSxcblx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPG51bWJlcj4sIGNvbnN0YW50KDMpKSxcblx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiM1wiKSlcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGNvbnN0YW50KFwiU3VjY2Vzc1wiKSxcblx0XHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0XHRvcihcblx0XHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCJVSS5Dcml0aWNhbGl0eVR5cGUvSW5mb3JtYXRpb25cIikpLFxuXHRcdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxudW1iZXI+LCBjb25zdGFudCg1KSksXG5cdFx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiNVwiKSlcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRjb25zdGFudChcIkluZm9ybWF0aW9uXCIpLFxuXHRcdFx0XHRcdFx0Y29uc3RhbnQoXCJOb25lXCIpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpXG5cdFx0XHQpXG5cdFx0KTtcblx0fSBlbHNlIHtcblx0XHQvLyBBbnkgb3RoZXIgY2FzZXMgYXJlIG5vdCB2YWxpZCwgdGhlIGRlZmF1bHQgdmFsdWUgb2YgJ05vbmUnIHdpbGwgYmUgcmV0dXJuZWRcblx0XHRzVmFsdWVTdGF0ZUV4cHJlc3Npb24gPSBjb25zdGFudChcIk5vbmVcIik7XG5cdH1cblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKHNWYWx1ZVN0YXRlRXhwcmVzc2lvbik7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYW4gZXhwcmVzc2lvbiB0byBzZXQgaWNvbiB0eXBlIGJhc2VkIG9uIENyaXRpY2FsaXR5XG4gKiBTdXBwb3J0ZWQgQ3JpdGljYWxpdHk6IFBvc2l0aXZlLCBOZWdhdGl2ZSwgQ3JpdGljYWwgYW5kIEluZm9ybWF0aW9uLlxuICpcbiAqIEBwYXJhbSBvVGFyZ2V0IEEgRGF0YUZpZWxkIGEgRGF0YVBvaW50IG9yIGEgRGF0YU1vZGVsT2JqZWN0UGF0aC5cbiAqIEBwYXJhbSBbb1Byb3BlcnR5RGF0YU1vZGVsUGF0aF0gRGF0YU1vZGVsT2JqZWN0UGF0aC5cbiAqIEByZXR1cm5zIEFuIGV4cHJlc3Npb24gdG8gZGVkdWNlIHRoZSBpY29uIG9mIGFuIG9iamVjdFN0YXR1cy5cbiAqL1xuZXhwb3J0IGNvbnN0IGJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5SWNvbiA9IChcblx0b1RhcmdldDogRGF0YU1vZGVsT2JqZWN0UGF0aDxEYXRhUG9pbnRUeXBlPiB8IERhdGFQb2ludFR5cGUsXG5cdG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGg/OiBEYXRhTW9kZWxPYmplY3RQYXRoPERhdGFQb2ludFR5cGU+XG4pOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuXHRjb25zdCBvQW5ub3RhdGlvblRhcmdldCA9IChvVGFyZ2V0IGFzIERhdGFNb2RlbE9iamVjdFBhdGg8RGF0YVBvaW50VHlwZT4pPy50YXJnZXRPYmplY3Rcblx0XHQ/IChvVGFyZ2V0IGFzIERhdGFNb2RlbE9iamVjdFBhdGg8RGF0YVBvaW50VHlwZT4pLnRhcmdldE9iamVjdFxuXHRcdDogKG9UYXJnZXQgYXMgRGF0YVBvaW50VHlwZSk7XG5cdGNvbnN0IG9Dcml0aWNhbGl0eVByb3BlcnR5ID0gb0Fubm90YXRpb25UYXJnZXQ/LkNyaXRpY2FsaXR5IGFzIFByb3BlcnR5QW5ub3RhdGlvblZhbHVlPENyaXRpY2FsaXR5VHlwZT4gfCB1bmRlZmluZWQ7XG5cdGNvbnN0IHJlbGF0aXZlTG9jYXRpb24gPSBvUHJvcGVydHlEYXRhTW9kZWxQYXRoID8gZ2V0UmVsYXRpdmVQYXRocyhvUHJvcGVydHlEYXRhTW9kZWxQYXRoKSA6IHVuZGVmaW5lZDtcblx0Y29uc3Qgb0NyaXRpY2FsaXR5RXhwcmVzc2lvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4gPSBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24ob0NyaXRpY2FsaXR5UHJvcGVydHksIHJlbGF0aXZlTG9jYXRpb24pO1xuXHRjb25zdCBiQ29uZGl0aW9uID1cblx0XHRvQW5ub3RhdGlvblRhcmdldD8uQ3JpdGljYWxpdHlSZXByZXNlbnRhdGlvbiAmJlxuXHRcdG9Bbm5vdGF0aW9uVGFyZ2V0Py5Dcml0aWNhbGl0eVJlcHJlc2VudGF0aW9uID09PSBcIlVJLkNyaXRpY2FsaXR5UmVwcmVzZW50YXRpb25UeXBlL1dpdGhvdXRJY29uXCI7XG5cdGxldCBzSWNvblBhdGg7XG5cdGlmICghYkNvbmRpdGlvbikge1xuXHRcdGlmIChvQ3JpdGljYWxpdHlQcm9wZXJ0eSkge1xuXHRcdFx0c0ljb25QYXRoID0gaWZFbHNlKFxuXHRcdFx0XHRvcihcblx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIlVJLkNyaXRpY2FsaXR5VHlwZS9OZWdhdGl2ZVwiKSksXG5cdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248bnVtYmVyPiwgY29uc3RhbnQoMSkpLFxuXHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiMVwiKSlcblx0XHRcdFx0KSxcblx0XHRcdFx0Y29uc3RhbnQoXCJzYXAtaWNvbjovL21lc3NhZ2UtZXJyb3JcIiksXG5cdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRvcihcblx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL0NyaXRpY2FsXCIpKSxcblx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPG51bWJlcj4sIGNvbnN0YW50KDIpKSxcblx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiMlwiKSlcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGNvbnN0YW50KFwic2FwLWljb246Ly9tZXNzYWdlLXdhcm5pbmdcIiksXG5cdFx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdFx0b3IoXG5cdFx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL1Bvc2l0aXZlXCIpKSxcblx0XHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248bnVtYmVyPiwgY29uc3RhbnQoMykpLFxuXHRcdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIjNcIikpXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0Y29uc3RhbnQoXCJzYXAtaWNvbjovL21lc3NhZ2Utc3VjY2Vzc1wiKSxcblx0XHRcdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRcdFx0b3IoXG5cdFx0XHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCJVSS5Dcml0aWNhbGl0eVR5cGUvSW5mb3JtYXRpb25cIikpLFxuXHRcdFx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPG51bWJlcj4sIGNvbnN0YW50KDUpKSxcblx0XHRcdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIjVcIikpXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdGNvbnN0YW50KFwic2FwLWljb246Ly9tZXNzYWdlLWluZm9ybWF0aW9uXCIpLFxuXHRcdFx0XHRcdFx0XHRjb25zdGFudChcIlwiKVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KVxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c0ljb25QYXRoID0gY29uc3RhbnQoXCJcIik7XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdHNJY29uUGF0aCA9IGNvbnN0YW50KFwiXCIpO1xuXHR9XG5cdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihzSWNvblBhdGgpO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGFuIGV4cHJlc3Npb24gdG8gc2V0IGJ1dHRvbiB0eXBlIGJhc2VkIG9uIENyaXRpY2FsaXR5XG4gKiBTdXBwb3J0ZWQgQ3JpdGljYWxpdHk6IFBvc2l0aXZlIGFuZCBOZWdhdGl2ZSBsZWFkaW5nIHRvIEFjY2VwdCBhbmQgUmVqZWN0IGJ1dHRvbiB0eXBlIHJlc3BlY3RpdmVseS5cbiAqXG4gKiBAcGFyYW0gb1RhcmdldCBBIERhdGFGaWVsZCwgRGF0YVBvaW50LCBEYXRhTW9kZWxPYmplY3RQYXRoLlxuICogQHJldHVybnMgQW4gZXhwcmVzc2lvbiB0byBkZWR1Y2UgYnV0dG9uIHR5cGUuXG4gKi9cbmV4cG9ydCBjb25zdCBidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUJ1dHRvblR5cGUgPSAoXG5cdG9UYXJnZXQ6IERhdGFNb2RlbE9iamVjdFBhdGg8RGF0YVBvaW50VHlwZSB8IERhdGFGaWVsZEZvckFjdGlvbj4gfCBEYXRhUG9pbnRUeXBlXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuXHRjb25zdCBvQW5ub3RhdGlvblRhcmdldCA9IChvVGFyZ2V0IGFzIERhdGFNb2RlbE9iamVjdFBhdGg8RGF0YVBvaW50VHlwZT4pPy50YXJnZXRPYmplY3Rcblx0XHQ/IChvVGFyZ2V0IGFzIERhdGFNb2RlbE9iamVjdFBhdGg8RGF0YVBvaW50VHlwZT4pLnRhcmdldE9iamVjdFxuXHRcdDogKG9UYXJnZXQgYXMgRGF0YVBvaW50VHlwZSk7XG5cdGNvbnN0IG9Dcml0aWNhbGl0eVByb3BlcnR5ID0gb0Fubm90YXRpb25UYXJnZXQ/LkNyaXRpY2FsaXR5IGFzIFByb3BlcnR5QW5ub3RhdGlvblZhbHVlPENyaXRpY2FsaXR5VHlwZT4gfCB1bmRlZmluZWQ7XG5cdGNvbnN0IG9Dcml0aWNhbGl0eUV4cHJlc3Npb246IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+ID0gZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKG9Dcml0aWNhbGl0eVByb3BlcnR5KTtcblx0bGV0IHNCdXR0b25UeXBlRXhwcmVzc2lvbjtcblx0aWYgKG9Dcml0aWNhbGl0eVByb3BlcnR5KSB7XG5cdFx0c0J1dHRvblR5cGVFeHByZXNzaW9uID0gaWZFbHNlKFxuXHRcdFx0b3IoXG5cdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL05lZ2F0aXZlXCIpKSxcblx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248bnVtYmVyPiwgY29uc3RhbnQoMSkpLFxuXHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIjFcIikpXG5cdFx0XHQpLFxuXHRcdFx0Y29uc3RhbnQoXCJSZWplY3RcIiksXG5cdFx0XHRpZkVsc2UoXG5cdFx0XHRcdG9yKFxuXHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL1Bvc2l0aXZlXCIpKSxcblx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxudW1iZXI+LCBjb25zdGFudCgzKSksXG5cdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCIzXCIpKVxuXHRcdFx0XHQpLFxuXHRcdFx0XHRjb25zdGFudChcIkFjY2VwdFwiKSxcblx0XHRcdFx0Y29uc3RhbnQoXCJEZWZhdWx0XCIpXG5cdFx0XHQpXG5cdFx0KTtcblx0fSBlbHNlIHtcblx0XHQvLyBBbnkgb3RoZXIgY2FzZXMgYXJlIG5vdCB2YWxpZCwgdGhlIGdob3N0IHZhbHVlIG9mICdHaG9zdCcgd2lsbCBiZSByZXR1cm5lZFxuXHRcdHNCdXR0b25UeXBlRXhwcmVzc2lvbiA9IGNvbnN0YW50KFwiR2hvc3RcIik7XG5cdH1cblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKHNCdXR0b25UeXBlRXhwcmVzc2lvbik7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYW4gZXhwcmVzc2lvbiB0byBzZXQgY29sb3IgaW4gTWljcm9DaGFydHMgYmFzZWQgb24gQ3JpdGljYWxpdHlcbiAqIFN1cHBvcnRlZCBDcml0aWNhbGl0eTogUG9zaXRpdmUsIE5lZ2F0aXZlIGFuZCBDcml0aWNhbCBsZWFkaW5nIHRvIEdvb2QsIEVycm9yIGFuZCBDcml0aWNhbCBjb2xvciByZXNwZWN0aXZlbHkuXG4gKlxuICogQHBhcmFtIG9UYXJnZXQgQSBEYXRhRmllbGQsIERhdGFQb2ludCwgRGF0YU1vZGVsT2JqZWN0UGF0aFxuICogQHJldHVybnMgQW4gZXhwcmVzc2lvbiB0byBkZWR1Y2UgY29sb3JzIGluIE1pY3JvY2hhcnRzXG4gKi9cbmV4cG9ydCBjb25zdCBidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yTWljcm9DaGFydCA9IChvVGFyZ2V0OiBEYXRhTW9kZWxPYmplY3RQYXRoPERhdGFQb2ludD4gfCBEYXRhUG9pbnQpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuXHRjb25zdCBvQW5ub3RhdGlvblRhcmdldCA9IChvVGFyZ2V0IGFzIERhdGFNb2RlbE9iamVjdFBhdGg8RGF0YVBvaW50Pik/LnRhcmdldE9iamVjdFxuXHRcdD8gKG9UYXJnZXQgYXMgRGF0YU1vZGVsT2JqZWN0UGF0aDxEYXRhUG9pbnQ+KS50YXJnZXRPYmplY3Rcblx0XHQ6IChvVGFyZ2V0IGFzIERhdGFQb2ludCk7XG5cdGNvbnN0IHNDb2xvckV4cHJlc3Npb24gPSBidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eShvQW5ub3RhdGlvblRhcmdldCk7XG5cdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihzQ29sb3JFeHByZXNzaW9uKTtcbn07XG5cbi8qKlxuICogR2VuZXJhdGVzIGFuIGV4cHJlc3Npb24gdG8gc2V0IGNvbG9yIGJhc2VkIG9uIENyaXRpY2FsaXR5LlxuICpcbiAqIEBwYXJhbSBhbm5vdGF0aW9uVGFyZ2V0IEEgRGF0YUZpZWxkLCBEYXRhUG9pbnRcbiAqIEBwYXJhbSBjcml0aWNhbGl0eU1hcCBDcml0aWNhbGl0eSBNYXBwZXJcbiAqIEByZXR1cm5zIEFuIGV4cHJlc3Npb24gdG8gZGVkdWNlIGNvbG9ycyBpbiBkYXRhcG9pbnRzXG4gKi9cbmV4cG9ydCBjb25zdCBidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eSA9IChcblx0YW5ub3RhdGlvblRhcmdldDogRGF0YVBvaW50IHwgRGF0YUZpZWxkQWJzdHJhY3RUeXBlcyB8IHVuZGVmaW5lZCxcblx0Y3JpdGljYWxpdHlNYXAgPSBERUZBVUxUQ1JJVElDQUxJVFlNQVBcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxTdHJpbmc+ID0+IHtcblx0Y29uc3Qgb0NyaXRpY2FsaXR5UHJvcGVydHkgPSBhbm5vdGF0aW9uVGFyZ2V0Py5Dcml0aWNhbGl0eSBhcyBQcm9wZXJ0eUFubm90YXRpb25WYWx1ZTxDcml0aWNhbGl0eVR5cGU+IHwgdW5kZWZpbmVkO1xuXHRjb25zdCBvQ3JpdGljYWxpdHlFeHByZXNzaW9uOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nIHwgbnVtYmVyPiA9IGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihvQ3JpdGljYWxpdHlQcm9wZXJ0eSk7XG5cdGxldCBzQ29sb3JFeHByZXNzaW9uO1xuXHRpZiAob0NyaXRpY2FsaXR5UHJvcGVydHkpIHtcblx0XHRzQ29sb3JFeHByZXNzaW9uID0gaWZFbHNlKFxuXHRcdFx0b3IoXG5cdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL05lZ2F0aXZlXCIpKSxcblx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248bnVtYmVyPiwgY29uc3RhbnQoMSkpLFxuXHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIjFcIikpXG5cdFx0XHQpLFxuXHRcdFx0Y29uc3RhbnQoY3JpdGljYWxpdHlNYXAuZXJyb3IpLFxuXHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRvcihcblx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIlVJLkNyaXRpY2FsaXR5VHlwZS9Dcml0aWNhbFwiKSksXG5cdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248bnVtYmVyPiwgY29uc3RhbnQoMikpLFxuXHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiMlwiKSlcblx0XHRcdFx0KSxcblx0XHRcdFx0Y29uc3RhbnQoY3JpdGljYWxpdHlNYXAuY3JpdGljYWwpLFxuXHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0b3IoXG5cdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIlVJLkNyaXRpY2FsaXR5VHlwZS9Qb3NpdGl2ZVwiKSksXG5cdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxudW1iZXI+LCBjb25zdGFudCgzKSksXG5cdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIjNcIikpXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRjb25zdGFudChjcml0aWNhbGl0eU1hcC5nb29kKSxcblx0XHRcdFx0XHRjb25zdGFudChjcml0aWNhbGl0eU1hcC5uZXV0cmFsKVxuXHRcdFx0XHQpXG5cdFx0XHQpXG5cdFx0KTtcblx0fSBlbHNlIHtcblx0XHRzQ29sb3JFeHByZXNzaW9uID0gY29uc3RhbnQoY3JpdGljYWxpdHlNYXAubmV1dHJhbCk7XG5cdH1cblx0cmV0dXJuIHNDb2xvckV4cHJlc3Npb247XG59O1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7RUFhQSxNQUFNQSxxQkFBcUIsR0FBRztJQUM3QkMsS0FBSyxFQUFFLE9BQU87SUFDZEMsUUFBUSxFQUFFLFVBQVU7SUFDcEJDLElBQUksRUFBRSxNQUFNO0lBQ1pDLE9BQU8sRUFBRTtFQUNWLENBQUM7RUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ08sTUFBTUMsa0NBQWtDLEdBQUcsQ0FDakRDLE9BQTJELEVBQzNEQyxzQkFBMkQsS0FDbkM7SUFDeEIsTUFBTUMsaUJBQWlCLEdBQUlGLE9BQU8sYUFBUEEsT0FBTyxlQUFQQSxPQUFPLENBQXlDRyxZQUFZLEdBQ25GSCxPQUFPLENBQXdDRyxZQUFZLEdBQzNESCxPQUF5QjtJQUM3QixNQUFNSSxvQkFBb0IsR0FBR0YsaUJBQWlCLGFBQWpCQSxpQkFBaUIsdUJBQWpCQSxpQkFBaUIsQ0FBRUcsV0FBbUU7SUFDbkgsTUFBTUMsZ0JBQWdCLEdBQUdMLHNCQUFzQixHQUFHTSxnQkFBZ0IsQ0FBQ04sc0JBQXNCLENBQUMsR0FBR08sU0FBUztJQUN0RyxNQUFNQyxzQkFBd0QsR0FBR0MsMkJBQTJCLENBQUNOLG9CQUFvQixFQUFFRSxnQkFBZ0IsQ0FBQztJQUNwSSxJQUFJSyxxQkFBcUI7SUFDekIsSUFBSVAsb0JBQW9CLEVBQUU7TUFDekJPLHFCQUFxQixHQUFHQyxNQUFNLENBQzdCQyxFQUFFLENBQ0RDLEtBQUssQ0FBQ0wsc0JBQXNCLEVBQUVNLFFBQVEsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLEVBQ3RFRCxLQUFLLENBQUNMLHNCQUFzQixFQUFzQ00sUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQzlFRCxLQUFLLENBQUNMLHNCQUFzQixFQUFFTSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDNUMsRUFDREEsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUNqQkgsTUFBTSxDQUNMQyxFQUFFLENBQ0RDLEtBQUssQ0FBQ0wsc0JBQXNCLEVBQUVNLFFBQVEsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLEVBQ3RFRCxLQUFLLENBQUNMLHNCQUFzQixFQUFzQ00sUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQzlFRCxLQUFLLENBQUNMLHNCQUFzQixFQUFFTSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDNUMsRUFDREEsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUNuQkgsTUFBTSxDQUNMQyxFQUFFLENBQ0RDLEtBQUssQ0FBQ0wsc0JBQXNCLEVBQUVNLFFBQVEsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLEVBQ3RFRCxLQUFLLENBQUNMLHNCQUFzQixFQUFzQ00sUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQzlFRCxLQUFLLENBQUNMLHNCQUFzQixFQUFFTSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDNUMsRUFDREEsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUNuQkgsTUFBTSxDQUNMQyxFQUFFLENBQ0RDLEtBQUssQ0FBQ0wsc0JBQXNCLEVBQUVNLFFBQVEsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLEVBQ3pFRCxLQUFLLENBQUNMLHNCQUFzQixFQUFzQ00sUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQzlFRCxLQUFLLENBQUNMLHNCQUFzQixFQUFFTSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDNUMsRUFDREEsUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUN2QkEsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUNoQixDQUNELENBQ0QsQ0FDRDtJQUNGLENBQUMsTUFBTTtNQUNOO01BQ0FKLHFCQUFxQixHQUFHSSxRQUFRLENBQUMsTUFBTSxDQUFDO0lBQ3pDO0lBQ0EsT0FBT0MsaUJBQWlCLENBQUNMLHFCQUFxQixDQUFDO0VBQ2hELENBQUM7O0VBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQVBBO0VBUU8sTUFBTU0saUNBQWlDLEdBQUcsQ0FDaERqQixPQUEyRCxFQUMzREMsc0JBQTJELEtBQ25DO0lBQ3hCLE1BQU1DLGlCQUFpQixHQUFJRixPQUFPLGFBQVBBLE9BQU8sZUFBUEEsT0FBTyxDQUF5Q0csWUFBWSxHQUNuRkgsT0FBTyxDQUF3Q0csWUFBWSxHQUMzREgsT0FBeUI7SUFDN0IsTUFBTUksb0JBQW9CLEdBQUdGLGlCQUFpQixhQUFqQkEsaUJBQWlCLHVCQUFqQkEsaUJBQWlCLENBQUVHLFdBQW1FO0lBQ25ILE1BQU1DLGdCQUFnQixHQUFHTCxzQkFBc0IsR0FBR00sZ0JBQWdCLENBQUNOLHNCQUFzQixDQUFDLEdBQUdPLFNBQVM7SUFDdEcsTUFBTUMsc0JBQXdELEdBQUdDLDJCQUEyQixDQUFDTixvQkFBb0IsRUFBRUUsZ0JBQWdCLENBQUM7SUFDcEksTUFBTVksVUFBVSxHQUNmLENBQUFoQixpQkFBaUIsYUFBakJBLGlCQUFpQix1QkFBakJBLGlCQUFpQixDQUFFaUIseUJBQXlCLEtBQzVDLENBQUFqQixpQkFBaUIsYUFBakJBLGlCQUFpQix1QkFBakJBLGlCQUFpQixDQUFFaUIseUJBQXlCLE1BQUssOENBQThDO0lBQ2hHLElBQUlDLFNBQVM7SUFDYixJQUFJLENBQUNGLFVBQVUsRUFBRTtNQUNoQixJQUFJZCxvQkFBb0IsRUFBRTtRQUN6QmdCLFNBQVMsR0FBR1IsTUFBTSxDQUNqQkMsRUFBRSxDQUNEQyxLQUFLLENBQUNMLHNCQUFzQixFQUFFTSxRQUFRLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxFQUN0RUQsS0FBSyxDQUFDTCxzQkFBc0IsRUFBc0NNLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUM5RUQsS0FBSyxDQUFDTCxzQkFBc0IsRUFBRU0sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQzVDLEVBQ0RBLFFBQVEsQ0FBQywwQkFBMEIsQ0FBQyxFQUNwQ0gsTUFBTSxDQUNMQyxFQUFFLENBQ0RDLEtBQUssQ0FBQ0wsc0JBQXNCLEVBQUVNLFFBQVEsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLEVBQ3RFRCxLQUFLLENBQUNMLHNCQUFzQixFQUFzQ00sUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQzlFRCxLQUFLLENBQUNMLHNCQUFzQixFQUFFTSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDNUMsRUFDREEsUUFBUSxDQUFDLDRCQUE0QixDQUFDLEVBQ3RDSCxNQUFNLENBQ0xDLEVBQUUsQ0FDREMsS0FBSyxDQUFDTCxzQkFBc0IsRUFBRU0sUUFBUSxDQUFDLDZCQUE2QixDQUFDLENBQUMsRUFDdEVELEtBQUssQ0FBQ0wsc0JBQXNCLEVBQXNDTSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDOUVELEtBQUssQ0FBQ0wsc0JBQXNCLEVBQUVNLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUM1QyxFQUNEQSxRQUFRLENBQUMsNEJBQTRCLENBQUMsRUFDdENILE1BQU0sQ0FDTEMsRUFBRSxDQUNEQyxLQUFLLENBQUNMLHNCQUFzQixFQUFFTSxRQUFRLENBQUMsZ0NBQWdDLENBQUMsQ0FBQyxFQUN6RUQsS0FBSyxDQUFDTCxzQkFBc0IsRUFBc0NNLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUM5RUQsS0FBSyxDQUFDTCxzQkFBc0IsRUFBRU0sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQzVDLEVBQ0RBLFFBQVEsQ0FBQyxnQ0FBZ0MsQ0FBQyxFQUMxQ0EsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUNaLENBQ0QsQ0FDRCxDQUNEO01BQ0YsQ0FBQyxNQUFNO1FBQ05LLFNBQVMsR0FBR0wsUUFBUSxDQUFDLEVBQUUsQ0FBQztNQUN6QjtJQUNELENBQUMsTUFBTTtNQUNOSyxTQUFTLEdBQUdMLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFDekI7SUFDQSxPQUFPQyxpQkFBaUIsQ0FBQ0ksU0FBUyxDQUFDO0VBQ3BDLENBQUM7O0VBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFOQTtFQU9PLE1BQU1DLHVDQUF1QyxHQUNuRHJCLE9BQWdGLElBQ3hEO0lBQ3hCLE1BQU1FLGlCQUFpQixHQUFJRixPQUFPLGFBQVBBLE9BQU8sZUFBUEEsT0FBTyxDQUF5Q0csWUFBWSxHQUNuRkgsT0FBTyxDQUF3Q0csWUFBWSxHQUMzREgsT0FBeUI7SUFDN0IsTUFBTUksb0JBQW9CLEdBQUdGLGlCQUFpQixhQUFqQkEsaUJBQWlCLHVCQUFqQkEsaUJBQWlCLENBQUVHLFdBQW1FO0lBQ25ILE1BQU1JLHNCQUF3RCxHQUFHQywyQkFBMkIsQ0FBQ04sb0JBQW9CLENBQUM7SUFDbEgsSUFBSWtCLHFCQUFxQjtJQUN6QixJQUFJbEIsb0JBQW9CLEVBQUU7TUFDekJrQixxQkFBcUIsR0FBR1YsTUFBTSxDQUM3QkMsRUFBRSxDQUNEQyxLQUFLLENBQUNMLHNCQUFzQixFQUFFTSxRQUFRLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxFQUN0RUQsS0FBSyxDQUFDTCxzQkFBc0IsRUFBc0NNLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUM5RUQsS0FBSyxDQUFDTCxzQkFBc0IsRUFBRU0sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQzVDLEVBQ0RBLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFDbEJILE1BQU0sQ0FDTEMsRUFBRSxDQUNEQyxLQUFLLENBQUNMLHNCQUFzQixFQUFFTSxRQUFRLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxFQUN0RUQsS0FBSyxDQUFDTCxzQkFBc0IsRUFBc0NNLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUM5RUQsS0FBSyxDQUFDTCxzQkFBc0IsRUFBRU0sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQzVDLEVBQ0RBLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFDbEJBLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FDbkIsQ0FDRDtJQUNGLENBQUMsTUFBTTtNQUNOO01BQ0FPLHFCQUFxQixHQUFHUCxRQUFRLENBQUMsT0FBTyxDQUFDO0lBQzFDO0lBQ0EsT0FBT0MsaUJBQWlCLENBQUNNLHFCQUFxQixDQUFDO0VBQ2hELENBQUM7O0VBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFOQTtFQU9PLE1BQU1DLDRDQUE0QyxHQUFJdkIsT0FBbUQsSUFBeUI7SUFDeEksTUFBTUUsaUJBQWlCLEdBQUlGLE9BQU8sYUFBUEEsT0FBTyxlQUFQQSxPQUFPLENBQXFDRyxZQUFZLEdBQy9FSCxPQUFPLENBQW9DRyxZQUFZLEdBQ3ZESCxPQUFxQjtJQUN6QixNQUFNd0IsZ0JBQWdCLEdBQUdDLDZCQUE2QixDQUFDdkIsaUJBQWlCLENBQUM7SUFDekUsT0FBT2MsaUJBQWlCLENBQUNRLGdCQUFnQixDQUFDO0VBQzNDLENBQUM7O0VBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFOQTtFQU9PLE1BQU1DLDZCQUE2QixHQUFHLFVBQzVDQyxnQkFBZ0UsRUFFMUI7SUFBQSxJQUR0Q0MsY0FBYyx1RUFBR2pDLHFCQUFxQjtJQUV0QyxNQUFNVSxvQkFBb0IsR0FBR3NCLGdCQUFnQixhQUFoQkEsZ0JBQWdCLHVCQUFoQkEsZ0JBQWdCLENBQUVyQixXQUFtRTtJQUNsSCxNQUFNSSxzQkFBaUUsR0FBR0MsMkJBQTJCLENBQUNOLG9CQUFvQixDQUFDO0lBQzNILElBQUlvQixnQkFBZ0I7SUFDcEIsSUFBSXBCLG9CQUFvQixFQUFFO01BQ3pCb0IsZ0JBQWdCLEdBQUdaLE1BQU0sQ0FDeEJDLEVBQUUsQ0FDREMsS0FBSyxDQUFDTCxzQkFBc0IsRUFBRU0sUUFBUSxDQUFDLDZCQUE2QixDQUFDLENBQUMsRUFDdEVELEtBQUssQ0FBQ0wsc0JBQXNCLEVBQXNDTSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDOUVELEtBQUssQ0FBQ0wsc0JBQXNCLEVBQUVNLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUM1QyxFQUNEQSxRQUFRLENBQUNZLGNBQWMsQ0FBQ2hDLEtBQUssQ0FBQyxFQUM5QmlCLE1BQU0sQ0FDTEMsRUFBRSxDQUNEQyxLQUFLLENBQUNMLHNCQUFzQixFQUFFTSxRQUFRLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxFQUN0RUQsS0FBSyxDQUFDTCxzQkFBc0IsRUFBc0NNLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUM5RUQsS0FBSyxDQUFDTCxzQkFBc0IsRUFBRU0sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQzVDLEVBQ0RBLFFBQVEsQ0FBQ1ksY0FBYyxDQUFDL0IsUUFBUSxDQUFDLEVBQ2pDZ0IsTUFBTSxDQUNMQyxFQUFFLENBQ0RDLEtBQUssQ0FBQ0wsc0JBQXNCLEVBQUVNLFFBQVEsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLEVBQ3RFRCxLQUFLLENBQUNMLHNCQUFzQixFQUFzQ00sUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQzlFRCxLQUFLLENBQUNMLHNCQUFzQixFQUFFTSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDNUMsRUFDREEsUUFBUSxDQUFDWSxjQUFjLENBQUM5QixJQUFJLENBQUMsRUFDN0JrQixRQUFRLENBQUNZLGNBQWMsQ0FBQzdCLE9BQU8sQ0FBQyxDQUNoQyxDQUNELENBQ0Q7SUFDRixDQUFDLE1BQU07TUFDTjBCLGdCQUFnQixHQUFHVCxRQUFRLENBQUNZLGNBQWMsQ0FBQzdCLE9BQU8sQ0FBQztJQUNwRDtJQUNBLE9BQU8wQixnQkFBZ0I7RUFDeEIsQ0FBQztFQUFDO0VBQUE7QUFBQSJ9
@@ -1,4 +1,11 @@
1
- import { type AnnotationAnnotationsBase_UI } from "@sap-ux/vocabularies-types/vocabularies/UI_Edm";
1
+ import type { PropertyAnnotationValue } from "@sap-ux/vocabularies-types";
2
+ import type {
3
+ CriticalityType,
4
+ DataFieldAbstractTypes,
5
+ DataFieldForAction,
6
+ DataPoint,
7
+ DataPointType
8
+ } from "@sap-ux/vocabularies-types/vocabularies/UI";
2
9
  import type { BindingToolkitExpression } from "sap/fe/core/helpers/BindingToolkit";
3
10
  import { compileExpression, constant, equal, getExpressionFromAnnotation, ifElse, or } from "sap/fe/core/helpers/BindingToolkit";
4
11
  import type { DataModelObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
@@ -18,9 +25,14 @@ const DEFAULTCRITICALITYMAP = {
18
25
  * @param [oPropertyDataModelPath] DataModelObjectPath.
19
26
  * @returns An expression to deduce the state of an objectStatus.
20
27
  */
21
- export const buildExpressionForCriticalityColor = (oTarget: any, oPropertyDataModelPath?: DataModelObjectPath): string | undefined => {
22
- const oAnnotationTarget = oTarget.targetObject ? oTarget.targetObject : oTarget;
23
- const oCriticalityProperty = oAnnotationTarget?.Criticality;
28
+ export const buildExpressionForCriticalityColor = (
29
+ oTarget: DataModelObjectPath<DataPointType> | DataPointType,
30
+ oPropertyDataModelPath?: DataModelObjectPath<DataPointType>
31
+ ): string | undefined => {
32
+ const oAnnotationTarget = (oTarget as DataModelObjectPath<DataPointType>)?.targetObject
33
+ ? (oTarget as DataModelObjectPath<DataPointType>).targetObject
34
+ : (oTarget as DataPointType);
35
+ const oCriticalityProperty = oAnnotationTarget?.Criticality as PropertyAnnotationValue<CriticalityType> | undefined;
24
36
  const relativeLocation = oPropertyDataModelPath ? getRelativePaths(oPropertyDataModelPath) : undefined;
25
37
  const oCriticalityExpression: BindingToolkitExpression<string> = getExpressionFromAnnotation(oCriticalityProperty, relativeLocation);
26
38
  let sValueStateExpression;
@@ -73,9 +85,14 @@ export const buildExpressionForCriticalityColor = (oTarget: any, oPropertyDataMo
73
85
  * @param [oPropertyDataModelPath] DataModelObjectPath.
74
86
  * @returns An expression to deduce the icon of an objectStatus.
75
87
  */
76
- export const buildExpressionForCriticalityIcon = (oTarget: any, oPropertyDataModelPath?: DataModelObjectPath): string | undefined => {
77
- const oAnnotationTarget = oTarget?.targetObject ? oTarget.targetObject : oTarget;
78
- const oCriticalityProperty = oAnnotationTarget?.Criticality;
88
+ export const buildExpressionForCriticalityIcon = (
89
+ oTarget: DataModelObjectPath<DataPointType> | DataPointType,
90
+ oPropertyDataModelPath?: DataModelObjectPath<DataPointType>
91
+ ): string | undefined => {
92
+ const oAnnotationTarget = (oTarget as DataModelObjectPath<DataPointType>)?.targetObject
93
+ ? (oTarget as DataModelObjectPath<DataPointType>).targetObject
94
+ : (oTarget as DataPointType);
95
+ const oCriticalityProperty = oAnnotationTarget?.Criticality as PropertyAnnotationValue<CriticalityType> | undefined;
79
96
  const relativeLocation = oPropertyDataModelPath ? getRelativePaths(oPropertyDataModelPath) : undefined;
80
97
  const oCriticalityExpression: BindingToolkitExpression<string> = getExpressionFromAnnotation(oCriticalityProperty, relativeLocation);
81
98
  const bCondition =
@@ -133,9 +150,13 @@ export const buildExpressionForCriticalityIcon = (oTarget: any, oPropertyDataMod
133
150
  * @param oTarget A DataField, DataPoint, DataModelObjectPath.
134
151
  * @returns An expression to deduce button type.
135
152
  */
136
- export const buildExpressionForCriticalityButtonType = (oTarget: any): string | undefined => {
137
- const oAnnotationTarget = oTarget?.targetObject ? oTarget.targetObject : oTarget;
138
- const oCriticalityProperty = oAnnotationTarget?.Criticality;
153
+ export const buildExpressionForCriticalityButtonType = (
154
+ oTarget: DataModelObjectPath<DataPointType | DataFieldForAction> | DataPointType
155
+ ): string | undefined => {
156
+ const oAnnotationTarget = (oTarget as DataModelObjectPath<DataPointType>)?.targetObject
157
+ ? (oTarget as DataModelObjectPath<DataPointType>).targetObject
158
+ : (oTarget as DataPointType);
159
+ const oCriticalityProperty = oAnnotationTarget?.Criticality as PropertyAnnotationValue<CriticalityType> | undefined;
139
160
  const oCriticalityExpression: BindingToolkitExpression<string> = getExpressionFromAnnotation(oCriticalityProperty);
140
161
  let sButtonTypeExpression;
141
162
  if (oCriticalityProperty) {
@@ -170,8 +191,10 @@ export const buildExpressionForCriticalityButtonType = (oTarget: any): string |
170
191
  * @param oTarget A DataField, DataPoint, DataModelObjectPath
171
192
  * @returns An expression to deduce colors in Microcharts
172
193
  */
173
- export const buildExpressionForCriticalityColorMicroChart = (oTarget: any): string | undefined => {
174
- const oAnnotationTarget = oTarget?.targetObject ? oTarget.targetObject : oTarget;
194
+ export const buildExpressionForCriticalityColorMicroChart = (oTarget: DataModelObjectPath<DataPoint> | DataPoint): string | undefined => {
195
+ const oAnnotationTarget = (oTarget as DataModelObjectPath<DataPoint>)?.targetObject
196
+ ? (oTarget as DataModelObjectPath<DataPoint>).targetObject
197
+ : (oTarget as DataPoint);
175
198
  const sColorExpression = buildExpressionForCriticality(oAnnotationTarget);
176
199
  return compileExpression(sColorExpression);
177
200
  };
@@ -184,10 +207,10 @@ export const buildExpressionForCriticalityColorMicroChart = (oTarget: any): stri
184
207
  * @returns An expression to deduce colors in datapoints
185
208
  */
186
209
  export const buildExpressionForCriticality = (
187
- annotationTarget: AnnotationAnnotationsBase_UI,
210
+ annotationTarget: DataPoint | DataFieldAbstractTypes | undefined,
188
211
  criticalityMap = DEFAULTCRITICALITYMAP
189
212
  ): BindingToolkitExpression<String> => {
190
- const oCriticalityProperty = annotationTarget?.Criticality;
213
+ const oCriticalityProperty = annotationTarget?.Criticality as PropertyAnnotationValue<CriticalityType> | undefined;
191
214
  const oCriticalityExpression: BindingToolkitExpression<string | number> = getExpressionFromAnnotation(oCriticalityProperty);
192
215
  let sColorExpression;
193
216
  if (oCriticalityProperty) {
@@ -2,13 +2,16 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2024 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/fe/core/converters/MetaModelConverter", "sap/fe/core/helpers/BindingHelper", "sap/fe/core/helpers/BindingToolkit", "sap/fe/core/templating/DataModelPathHelper", "sap/fe/core/templating/UIFormatters"], function (MetaModelConverter, BindingHelper, BindingToolkit, DataModelPathHelper, UIFormatters) {
5
+ sap.ui.define(["sap/fe/core/converters/MetaModelConverter", "sap/fe/core/helpers/BindingHelper", "sap/fe/core/helpers/BindingToolkit", "sap/fe/core/helpers/TypeGuards", "sap/fe/core/templating/DataModelPathHelper", "sap/fe/core/templating/UIFormatters"], function (MetaModelConverter, BindingHelper, BindingToolkit, TypeGuards, DataModelPathHelper, UIFormatters) {
6
6
  "use strict";
7
7
 
8
8
  var _exports = {};
9
9
  var isVisible = UIFormatters.isVisible;
10
10
  var getConverterContext = UIFormatters.getConverterContext;
11
11
  var enhanceDataModelPath = DataModelPathHelper.enhanceDataModelPath;
12
+ var isProperty = TypeGuards.isProperty;
13
+ var isPathAnnotationExpression = TypeGuards.isPathAnnotationExpression;
14
+ var isAnnotationPath = TypeGuards.isAnnotationPath;
12
15
  var or = BindingToolkit.or;
13
16
  var not = BindingToolkit.not;
14
17
  var ifElse = BindingToolkit.ifElse;
@@ -24,14 +27,11 @@ sap.ui.define(["sap/fe/core/converters/MetaModelConverter", "sap/fe/core/helpers
24
27
  if (!oContext) {
25
28
  throw new Error(`Unresolved context path ${sPath}`);
26
29
  }
27
- let isPath = false;
28
- if (typeof oContext === "object" && (oContext.hasOwnProperty("$Path") || oContext.hasOwnProperty("$AnnotationPath"))) {
29
- isPath = true;
30
- } else if (typeof oContext === "object" && oContext.hasOwnProperty("$kind") && oContext.$kind !== "Property") {
30
+ if (typeof oContext === "object" && oContext.hasOwnProperty("$kind") && oContext.$kind !== "Property") {
31
31
  throw new Error(`Context does not resolve to a DataField object but to a ${oContext.$kind}`);
32
32
  }
33
33
  let oConverterContext = getConverterContext(oContext, oInterface);
34
- if (isPath) {
34
+ if (isAnnotationPath(oConverterContext) || isPathAnnotationExpression(oConverterContext)) {
35
35
  oConverterContext = oConverterContext.$target;
36
36
  }
37
37
  return oConverterContext;
@@ -46,11 +46,12 @@ sap.ui.define(["sap/fe/core/converters/MetaModelConverter", "sap/fe/core/helpers
46
46
  throw new Error(`Context does not resolve to a Property object but to a ${oContext.$kind}`);
47
47
  }
48
48
  let involvedDataModelObjects = getInvolvedDataModelObjects(oInterface.context);
49
- if (involvedDataModelObjects.targetObject && involvedDataModelObjects.targetObject.type === "Path") {
49
+ if (involvedDataModelObjects.targetObject && isPathAnnotationExpression(involvedDataModelObjects.targetObject)) {
50
50
  involvedDataModelObjects = enhanceDataModelPath(involvedDataModelObjects, involvedDataModelObjects.targetObject.path);
51
51
  }
52
- if (involvedDataModelObjects.targetObject && involvedDataModelObjects.targetObject.type === "AnnotationPath") {
53
- involvedDataModelObjects = enhanceDataModelPath(involvedDataModelObjects, involvedDataModelObjects.targetObject);
52
+ if (involvedDataModelObjects.targetObject && isAnnotationPath(involvedDataModelObjects.targetObject)) {
53
+ // REVIEW -> The code below was never correct, i'm changing it to something that makes sense type wise
54
+ involvedDataModelObjects = enhanceDataModelPath(involvedDataModelObjects, involvedDataModelObjects.targetObject.value);
54
55
  }
55
56
  if (sPath.endsWith("$Path") || sPath.endsWith("$AnnotationPath")) {
56
57
  involvedDataModelObjects = enhanceDataModelPath(involvedDataModelObjects, oContext);
@@ -123,7 +124,7 @@ sap.ui.define(["sap/fe/core/converters/MetaModelConverter", "sap/fe/core/helpers
123
124
  const generateVisibleExpression = function (targetObject, formatOptions) {
124
125
  var _targetObject$Target, _targetObject$Target$;
125
126
  let propertyValue;
126
- if (targetObject) {
127
+ if (targetObject && !isProperty(targetObject)) {
127
128
  switch (targetObject.$Type) {
128
129
  case "com.sap.vocabularies.UI.v1.DataField":
129
130
  case "com.sap.vocabularies.UI.v1.DataFieldWithUrl":
@@ -159,4 +160,4 @@ sap.ui.define(["sap/fe/core/converters/MetaModelConverter", "sap/fe/core/helpers
159
160
  _exports.generateVisibleExpression = generateVisibleExpression;
160
161
  return _exports;
161
162
  }, false);
162
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXREYXRhRmllbGQiLCJvQ29udGV4dCIsIm9JbnRlcmZhY2UiLCJzUGF0aCIsImNvbnRleHQiLCJnZXRQYXRoIiwiRXJyb3IiLCJpc1BhdGgiLCJoYXNPd25Qcm9wZXJ0eSIsIiRraW5kIiwib0NvbnZlcnRlckNvbnRleHQiLCJnZXRDb252ZXJ0ZXJDb250ZXh0IiwiJHRhcmdldCIsImdldERhdGFGaWVsZE9iamVjdFBhdGgiLCJpbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJ0YXJnZXRPYmplY3QiLCJ0eXBlIiwiZW5oYW5jZURhdGFNb2RlbFBhdGgiLCJwYXRoIiwiZW5kc1dpdGgiLCJpc1NlbWFudGljYWxseUNvbm5lY3RlZEZpZWxkcyIsIm9EYXRhRmllbGQiLCIkVHlwZSIsImlzTXVsdGlMaW5lVGV4dCIsImFubm90YXRpb25zIiwiVUkiLCJNdWx0aUxpbmVUZXh0IiwidmFsdWVPZiIsImNvbm5lY3RlZEZpZWxkc1RlbXBsYXRlUmVnZXgiLCJjb25uZWN0ZWRGaWVsZHNUZW1wbGF0ZVN1YlJlZ2V4IiwiZ2V0TGFiZWxGb3JDb25uZWN0ZWRGaWVsZHMiLCJjb25uZWN0ZWRGaWVsZHNQYXRoIiwiZ2V0VGV4dEJpbmRpbmdFeHByZXNzaW9uIiwiY29tcGlsZUJpbmRpbmdFeHByZXNzaW9uIiwiY29ubmVjdGVkRmllbGRzIiwidGVtcGxhdGVNYXRjaGVzIiwiVGVtcGxhdGUiLCJ0b1N0cmluZyIsIm1hdGNoIiwicGFydHNUb0NvbmNhdCIsInJlZHVjZSIsInN1YlBhcnRzVG9Db25jYXQiLCJzdWJNYXRjaCIsImxlbmd0aCIsInRhcmdldFZhbHVlIiwidGFyZ2V0RGF0YSIsIkRhdGEiLCJkYXRhRmllbGRQYXRoIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwicmVwbGFjZSIsInRhcmdldEVudGl0eVR5cGUiLCJWYWx1ZSIsInB1c2giLCJjb25zdGFudCIsImNvbXBpbGVFeHByZXNzaW9uIiwiY29uY2F0IiwiZ2VuZXJhdGVWaXNpYmxlRXhwcmVzc2lvbiIsImZvcm1hdE9wdGlvbnMiLCJwcm9wZXJ0eVZhbHVlIiwiVGFyZ2V0IiwidW5kZWZpbmVkIiwiaXNBbmFseXRpY2FsR3JvdXBIZWFkZXJFeHBhbmRlZCIsImlzQW5hbHl0aWNzIiwiSXNFeHBhbmRlZCIsImlzQW5hbHl0aWNhbExlYWYiLCJlcXVhbCIsIk5vZGVMZXZlbCIsImFuZCIsImlzVmlzaWJsZSIsImlmRWxzZSIsIm9yIiwibm90Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJEYXRhRmllbGRGb3JtYXR0ZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcblx0Q29ubmVjdGVkRmllbGRzVHlwZVR5cGVzLFxuXHREYXRhRmllbGRBYnN0cmFjdFR5cGVzLFxuXHREYXRhRmllbGRUeXBlcyxcblx0RGF0YVBvaW50VHlwZVR5cGVzXG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IFVJQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eUFubm90YXRpb25zX1VJIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSV9FZG1cIjtcbmltcG9ydCB7IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHsgVUkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBhbmQsIGNvbXBpbGVFeHByZXNzaW9uLCBjb25jYXQsIGNvbnN0YW50LCBlcXVhbCwgaWZFbHNlLCBub3QsIG9yIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGVuaGFuY2VEYXRhTW9kZWxQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBDb21wdXRlZEFubm90YXRpb25JbnRlcmZhY2UsIE1ldGFNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCB7IGdldENvbnZlcnRlckNvbnRleHQsIGlzVmlzaWJsZSB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuXG5leHBvcnQgY29uc3QgZ2V0RGF0YUZpZWxkID0gZnVuY3Rpb24gKFxuXHRvQ29udGV4dDogTWV0YU1vZGVsQ29udGV4dCxcblx0b0ludGVyZmFjZTogQ29tcHV0ZWRBbm5vdGF0aW9uSW50ZXJmYWNlXG4pOiBEYXRhRmllbGRUeXBlcyB8IENvbm5lY3RlZEZpZWxkc1R5cGVUeXBlcyB7XG5cdGNvbnN0IHNQYXRoID0gb0ludGVyZmFjZS5jb250ZXh0LmdldFBhdGgoKTtcblx0aWYgKCFvQ29udGV4dCkge1xuXHRcdHRocm93IG5ldyBFcnJvcihgVW5yZXNvbHZlZCBjb250ZXh0IHBhdGggJHtzUGF0aH1gKTtcblx0fVxuXHRsZXQgaXNQYXRoID0gZmFsc2U7XG5cdGlmICh0eXBlb2Ygb0NvbnRleHQgPT09IFwib2JqZWN0XCIgJiYgKG9Db250ZXh0Lmhhc093blByb3BlcnR5KFwiJFBhdGhcIikgfHwgb0NvbnRleHQuaGFzT3duUHJvcGVydHkoXCIkQW5ub3RhdGlvblBhdGhcIikpKSB7XG5cdFx0aXNQYXRoID0gdHJ1ZTtcblx0fSBlbHNlIGlmICh0eXBlb2Ygb0NvbnRleHQgPT09IFwib2JqZWN0XCIgJiYgb0NvbnRleHQuaGFzT3duUHJvcGVydHkoXCIka2luZFwiKSAmJiBvQ29udGV4dC4ka2luZCAhPT0gXCJQcm9wZXJ0eVwiKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKGBDb250ZXh0IGRvZXMgbm90IHJlc29sdmUgdG8gYSBEYXRhRmllbGQgb2JqZWN0IGJ1dCB0byBhICR7b0NvbnRleHQuJGtpbmR9YCk7XG5cdH1cblx0bGV0IG9Db252ZXJ0ZXJDb250ZXh0ID0gZ2V0Q29udmVydGVyQ29udGV4dChvQ29udGV4dCwgb0ludGVyZmFjZSkgYXMgRGF0YUZpZWxkVHlwZXM7XG5cdGlmIChpc1BhdGgpIHtcblx0XHRvQ29udmVydGVyQ29udGV4dCA9IChvQ29udmVydGVyQ29udGV4dCBhcyBhbnkpLiR0YXJnZXQ7XG5cdH1cblx0cmV0dXJuIG9Db252ZXJ0ZXJDb250ZXh0O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERhdGFGaWVsZE9iamVjdFBhdGggPSBmdW5jdGlvbiAoXG5cdG9Db250ZXh0OiBNZXRhTW9kZWxDb250ZXh0IHwgc3RyaW5nLFxuXHRvSW50ZXJmYWNlOiBDb21wdXRlZEFubm90YXRpb25JbnRlcmZhY2Vcbik6IERhdGFNb2RlbE9iamVjdFBhdGgge1xuXHRjb25zdCBzUGF0aCA9IG9JbnRlcmZhY2UuY29udGV4dC5nZXRQYXRoKCk7XG5cdGlmICghb0NvbnRleHQpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoYFVucmVzb2x2ZWQgY29udGV4dCBwYXRoICR7c1BhdGh9YCk7XG5cdH1cblx0aWYgKHR5cGVvZiBvQ29udGV4dCA9PT0gXCJvYmplY3RcIiAmJiBvQ29udGV4dC5oYXNPd25Qcm9wZXJ0eShcIiRraW5kXCIpICYmIG9Db250ZXh0LiRraW5kICE9PSBcIlByb3BlcnR5XCIpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoYENvbnRleHQgZG9lcyBub3QgcmVzb2x2ZSB0byBhIFByb3BlcnR5IG9iamVjdCBidXQgdG8gYSAke29Db250ZXh0LiRraW5kfWApO1xuXHR9XG5cdGxldCBpbnZvbHZlZERhdGFNb2RlbE9iamVjdHMgPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMob0ludGVyZmFjZS5jb250ZXh0KTtcblx0aWYgKGludm9sdmVkRGF0YU1vZGVsT2JqZWN0cy50YXJnZXRPYmplY3QgJiYgaW52b2x2ZWREYXRhTW9kZWxPYmplY3RzLnRhcmdldE9iamVjdC50eXBlID09PSBcIlBhdGhcIikge1xuXHRcdGludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoKGludm9sdmVkRGF0YU1vZGVsT2JqZWN0cywgaW52b2x2ZWREYXRhTW9kZWxPYmplY3RzLnRhcmdldE9iamVjdC5wYXRoKTtcblx0fVxuXHRpZiAoaW52b2x2ZWREYXRhTW9kZWxPYmplY3RzLnRhcmdldE9iamVjdCAmJiBpbnZvbHZlZERhdGFNb2RlbE9iamVjdHMudGFyZ2V0T2JqZWN0LnR5cGUgPT09IFwiQW5ub3RhdGlvblBhdGhcIikge1xuXHRcdGludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoKGludm9sdmVkRGF0YU1vZGVsT2JqZWN0cywgaW52b2x2ZWREYXRhTW9kZWxPYmplY3RzLnRhcmdldE9iamVjdCk7XG5cdH1cblx0aWYgKHNQYXRoLmVuZHNXaXRoKFwiJFBhdGhcIikgfHwgc1BhdGguZW5kc1dpdGgoXCIkQW5ub3RhdGlvblBhdGhcIikpIHtcblx0XHRpbnZvbHZlZERhdGFNb2RlbE9iamVjdHMgPSBlbmhhbmNlRGF0YU1vZGVsUGF0aChpbnZvbHZlZERhdGFNb2RlbE9iamVjdHMsIG9Db250ZXh0IGFzIHN0cmluZyk7XG5cdH1cblx0cmV0dXJuIGludm9sdmVkRGF0YU1vZGVsT2JqZWN0cztcbn07XG5cbmV4cG9ydCBjb25zdCBpc1NlbWFudGljYWxseUNvbm5lY3RlZEZpZWxkcyA9IGZ1bmN0aW9uIChvQ29udGV4dDogTWV0YU1vZGVsQ29udGV4dCwgb0ludGVyZmFjZTogQ29tcHV0ZWRBbm5vdGF0aW9uSW50ZXJmYWNlKTogYm9vbGVhbiB7XG5cdGNvbnN0IG9EYXRhRmllbGQ6IERhdGFGaWVsZFR5cGVzIHwgQ29ubmVjdGVkRmllbGRzVHlwZVR5cGVzID0gZ2V0RGF0YUZpZWxkKG9Db250ZXh0LCBvSW50ZXJmYWNlKTtcblx0cmV0dXJuIChvRGF0YUZpZWxkIGFzIENvbm5lY3RlZEZpZWxkc1R5cGVUeXBlcykuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkNvbm5lY3RlZEZpZWxkc1R5cGU7XG59O1xuXG4vKipcbiAqXG4gKiBAcGFyYW0gb0NvbnRleHQgVGhlIENvbnRleHQgb2YgdGhlIHByb3BlcnR5XG4gKiBAcGFyYW0gb0ludGVyZmFjZSBUaGUgaW50ZXJmYWNlIGluc3RhbmNlXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBwcm9wZXJ0eSBoYXMgTXVsdGlMaW5lVGV4dCBhbm5vdGF0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBpc011bHRpTGluZVRleHQgPSBmdW5jdGlvbiAob0NvbnRleHQ6IE1ldGFNb2RlbENvbnRleHQsIG9JbnRlcmZhY2U6IENvbXB1dGVkQW5ub3RhdGlvbkludGVyZmFjZSk6IGJvb2xlYW4ge1xuXHRjb25zdCBvRGF0YUZpZWxkID0gZ2V0RGF0YUZpZWxkKG9Db250ZXh0LCBvSW50ZXJmYWNlKTtcblx0cmV0dXJuIChvRGF0YUZpZWxkLmFubm90YXRpb25zPy5VSSBhcyBQcm9wZXJ0eUFubm90YXRpb25zX1VJKT8uTXVsdGlMaW5lVGV4dD8udmFsdWVPZigpID09PSB0cnVlO1xufTtcblxuY29uc3QgY29ubmVjdGVkRmllbGRzVGVtcGxhdGVSZWdleCA9IC8oPzooe1tefV0rfSlbXntdKikvZztcbmNvbnN0IGNvbm5lY3RlZEZpZWxkc1RlbXBsYXRlU3ViUmVnZXggPSAveyhbXn1dKyl9KC4qKS87XG5leHBvcnQgY29uc3QgZ2V0TGFiZWxGb3JDb25uZWN0ZWRGaWVsZHMgPSBmdW5jdGlvbiAoXG5cdGNvbm5lY3RlZEZpZWxkc1BhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdGdldFRleHRCaW5kaW5nRXhwcmVzc2lvbjogRnVuY3Rpb24sXG5cdGNvbXBpbGVCaW5kaW5nRXhwcmVzc2lvbiA9IHRydWVcbikge1xuXHRjb25zdCBjb25uZWN0ZWRGaWVsZHM6IENvbm5lY3RlZEZpZWxkc1R5cGVUeXBlcyA9IGNvbm5lY3RlZEZpZWxkc1BhdGgudGFyZ2V0T2JqZWN0O1xuXHQvLyBGaXJzdCB3ZSBzZXBhcmF0ZSBlYWNoIGdyb3VwIG9mIGB7VGVtcGxhdGVQYXJ0fSB4eHhgXG5cdGNvbnN0IHRlbXBsYXRlTWF0Y2hlcyA9IGNvbm5lY3RlZEZpZWxkcy5UZW1wbGF0ZS50b1N0cmluZygpLm1hdGNoKGNvbm5lY3RlZEZpZWxkc1RlbXBsYXRlUmVnZXgpO1xuXHRpZiAoIXRlbXBsYXRlTWF0Y2hlcykge1xuXHRcdHJldHVybiBcIlwiO1xuXHR9XG5cdGNvbnN0IHBhcnRzVG9Db25jYXQgPSB0ZW1wbGF0ZU1hdGNoZXMucmVkdWNlKChzdWJQYXJ0c1RvQ29uY2F0OiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPltdLCBtYXRjaCkgPT4ge1xuXHRcdC8vIFRoZW4gZm9yIGVhY2ggc3ViLWdyb3VwLCB3ZSByZXRyaWV2ZSB0aGUgbmFtZSBvZiB0aGUgZGF0YSBvYmplY3QgYW5kIHRoZSByZW1haW5pbmcgdGV4dCwgaWYgaXQgZXhpc3RzXG5cdFx0Y29uc3Qgc3ViTWF0Y2ggPSBtYXRjaC5tYXRjaChjb25uZWN0ZWRGaWVsZHNUZW1wbGF0ZVN1YlJlZ2V4KTtcblx0XHRpZiAoc3ViTWF0Y2ggJiYgc3ViTWF0Y2gubGVuZ3RoID4gMSkge1xuXHRcdFx0Y29uc3QgdGFyZ2V0VmFsdWUgPSBzdWJNYXRjaFsxXTtcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5cdFx0XHRjb25zdCB0YXJnZXREYXRhID0gKGNvbm5lY3RlZEZpZWxkcy5EYXRhIGFzIGFueSlbdGFyZ2V0VmFsdWVdO1xuXHRcdFx0aWYgKHRhcmdldERhdGEpIHtcblx0XHRcdFx0Y29uc3QgZGF0YUZpZWxkUGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoKFxuXHRcdFx0XHRcdGNvbm5lY3RlZEZpZWxkc1BhdGgsXG5cdFx0XHRcdFx0Ly8gVE9ETyBCZXR0ZXIgdHlwZSBmb3IgdGhlIEVkbS5EaWN0aW9uYXJ5XG5cdFx0XHRcdFx0dGFyZ2V0RGF0YS5mdWxseVF1YWxpZmllZE5hbWUucmVwbGFjZShjb25uZWN0ZWRGaWVsZHNQYXRoLnRhcmdldEVudGl0eVR5cGUuZnVsbHlRdWFsaWZpZWROYW1lLCBcIlwiKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRkYXRhRmllbGRQYXRoLnRhcmdldE9iamVjdCA9IGRhdGFGaWVsZFBhdGgudGFyZ2V0T2JqZWN0LlZhbHVlO1xuXHRcdFx0XHRzdWJQYXJ0c1RvQ29uY2F0LnB1c2goZ2V0VGV4dEJpbmRpbmdFeHByZXNzaW9uKGRhdGFGaWVsZFBhdGgsIHt9KSk7XG5cdFx0XHRcdGlmIChzdWJNYXRjaC5sZW5ndGggPiAyKSB7XG5cdFx0XHRcdFx0c3ViUGFydHNUb0NvbmNhdC5wdXNoKGNvbnN0YW50KHN1Yk1hdGNoWzJdKSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHN1YlBhcnRzVG9Db25jYXQ7XG5cdH0sIFtdKTtcblx0cmV0dXJuIGNvbXBpbGVCaW5kaW5nRXhwcmVzc2lvbiA/IGNvbXBpbGVFeHByZXNzaW9uKGNvbmNhdCguLi5wYXJ0c1RvQ29uY2F0KSkgOiBjb25jYXQoLi4ucGFydHNUb0NvbmNhdCk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbiB0byBldmFsdWF0ZSB0aGUgdmlzaWJpbGl0eSBvZiBhIERhdGFGaWVsZCBvciBEYXRhUG9pbnQgYW5ub3RhdGlvbi5cbiAqXG4gKiBTQVAgRmlvcmkgZWxlbWVudHMgd2lsbCBldmFsdWF0ZSBlaXRoZXIgdGhlIFVJLkhpZGRlbiBhbm5vdGF0aW9uIGRlZmluZWQgb24gdGhlIGFubm90YXRpb24gaXRzZWxmIG9yIG9uIHRoZSB0YXJnZXQgcHJvcGVydHkuXG4gKlxuICogQHBhcmFtIHRhcmdldE9iamVjdCBUaGUgbWV0YXBhdGggcmVmZXJyaW5nIHRvIHRoZSBhbm5vdGF0aW9uIHdlIGFyZSBldmFsdWF0aW5nLlxuICogQHBhcmFtIFtmb3JtYXRPcHRpb25zXSBGb3JtYXRPcHRpb25zIG9wdGlvbmFsLlxuICogQHBhcmFtIGZvcm1hdE9wdGlvbnMuaXNBbmFseXRpY3MgVGhpcyBmbGFnIGlzIHNldCB3aGVuIHVzaW5nIGFuIGFuYWx5dGljYWwgdGFibGUuXG4gKiBAcmV0dXJucyBBbiBleHByZXNzaW9uIHRoYXQgeW91IGNhbiBiaW5kIHRvIHRoZSBVSS5cbiAqL1xuZXhwb3J0IGNvbnN0IGdlbmVyYXRlVmlzaWJsZUV4cHJlc3Npb24gPSBmdW5jdGlvbiAoXG5cdHRhcmdldE9iamVjdDogRGF0YUZpZWxkQWJzdHJhY3RUeXBlcyB8IERhdGFQb2ludFR5cGVUeXBlcyxcblx0Zm9ybWF0T3B0aW9ucz86IHsgaXNBbmFseXRpY3M/OiBib29sZWFuIH1cbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGxldCBwcm9wZXJ0eVZhbHVlO1xuXHRpZiAodGFyZ2V0T2JqZWN0KSB7XG5cdFx0c3dpdGNoICh0YXJnZXRPYmplY3QuJFR5cGUpIHtcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkOlxuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoVXJsOlxuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGg6XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhJbnRlbnRCYXNlZE5hdmlnYXRpb246XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhBY3Rpb246XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFQb2ludFR5cGU6XG5cdFx0XHRcdHByb3BlcnR5VmFsdWUgPSB0YXJnZXRPYmplY3QuVmFsdWUuJHRhcmdldDtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckFubm90YXRpb246XG5cdFx0XHRcdC8vIGlmIGl0IGlzIGEgRGF0YUZpZWxkRm9yQW5ub3RhdGlvbiBwb2ludGluZyB0byBhIERhdGFQb2ludCB3ZSBsb29rIGF0IHRoZSBkYXRhUG9pbnQncyB2YWx1ZVxuXHRcdFx0XHRpZiAodGFyZ2V0T2JqZWN0Py5UYXJnZXQ/LiR0YXJnZXQ/LiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5EYXRhUG9pbnRUeXBlKSB7XG5cdFx0XHRcdFx0cHJvcGVydHlWYWx1ZSA9IHRhcmdldE9iamVjdC5UYXJnZXQuJHRhcmdldD8uVmFsdWUuJHRhcmdldDtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWZhbGx0aHJvdWdoXG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbjpcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9yQWN0aW9uOlxuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0cHJvcGVydHlWYWx1ZSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdH1cblx0Y29uc3QgaXNBbmFseXRpY2FsR3JvdXBIZWFkZXJFeHBhbmRlZCA9IGZvcm1hdE9wdGlvbnM/LmlzQW5hbHl0aWNzID8gVUkuSXNFeHBhbmRlZCA6IGNvbnN0YW50KGZhbHNlKTtcblx0Y29uc3QgaXNBbmFseXRpY2FsTGVhZiA9IGZvcm1hdE9wdGlvbnM/LmlzQW5hbHl0aWNzID8gZXF1YWwoVUkuTm9kZUxldmVsLCAwKSA6IGNvbnN0YW50KGZhbHNlKTtcblxuXHQvLyBBIGRhdGEgZmllbGQgaXMgdmlzaWJsZSBpZjpcblx0Ly8gLSB0aGUgVUkuSGlkZGVuIGV4cHJlc3Npb24gaW4gdGhlIG9yaWdpbmFsIGFubm90YXRpb24gZG9lcyBub3QgZXZhbHVhdGUgdG8gJ3RydWUnXG5cdC8vIC0gdGhlIFVJLkhpZGRlbiBleHByZXNzaW9uIGluIHRoZSB0YXJnZXQgcHJvcGVydHkgZG9lcyBub3QgZXZhbHVhdGUgdG8gJ3RydWUnXG5cdC8vIC0gaW4gY2FzZSBvZiBBbmFseXRpY3MgaXQncyBub3QgdmlzaWJsZSBmb3IgYW4gZXhwYW5kZWQgR3JvdXBIZWFkZXJcblx0cmV0dXJuIGFuZChcblx0XHQuLi5bXG5cdFx0XHRpc1Zpc2libGUodGFyZ2V0T2JqZWN0KSxcblx0XHRcdGlmRWxzZSghIXByb3BlcnR5VmFsdWUsIHByb3BlcnR5VmFsdWUgJiYgaXNWaXNpYmxlKHByb3BlcnR5VmFsdWUpLCB0cnVlKSxcblx0XHRcdG9yKG5vdChpc0FuYWx5dGljYWxHcm91cEhlYWRlckV4cGFuZGVkKSwgaXNBbmFseXRpY2FsTGVhZilcblx0XHRdXG5cdCk7XG59O1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpQk8sTUFBTUEsWUFBWSxHQUFHLFVBQzNCQyxRQUEwQixFQUMxQkMsVUFBdUMsRUFDSztJQUM1QyxNQUFNQyxLQUFLLEdBQUdELFVBQVUsQ0FBQ0UsT0FBTyxDQUFDQyxPQUFPLEVBQUU7SUFDMUMsSUFBSSxDQUFDSixRQUFRLEVBQUU7TUFDZCxNQUFNLElBQUlLLEtBQUssQ0FBRSwyQkFBMEJILEtBQU0sRUFBQyxDQUFDO0lBQ3BEO0lBQ0EsSUFBSUksTUFBTSxHQUFHLEtBQUs7SUFDbEIsSUFBSSxPQUFPTixRQUFRLEtBQUssUUFBUSxLQUFLQSxRQUFRLENBQUNPLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSVAsUUFBUSxDQUFDTyxj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
163
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXREYXRhRmllbGQiLCJvQ29udGV4dCIsIm9JbnRlcmZhY2UiLCJzUGF0aCIsImNvbnRleHQiLCJnZXRQYXRoIiwiRXJyb3IiLCJoYXNPd25Qcm9wZXJ0eSIsIiRraW5kIiwib0NvbnZlcnRlckNvbnRleHQiLCJnZXRDb252ZXJ0ZXJDb250ZXh0IiwiaXNBbm5vdGF0aW9uUGF0aCIsImlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uIiwiJHRhcmdldCIsImdldERhdGFGaWVsZE9iamVjdFBhdGgiLCJpbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJ0YXJnZXRPYmplY3QiLCJlbmhhbmNlRGF0YU1vZGVsUGF0aCIsInBhdGgiLCJ2YWx1ZSIsImVuZHNXaXRoIiwiaXNTZW1hbnRpY2FsbHlDb25uZWN0ZWRGaWVsZHMiLCJvRGF0YUZpZWxkIiwiJFR5cGUiLCJpc011bHRpTGluZVRleHQiLCJhbm5vdGF0aW9ucyIsIlVJIiwiTXVsdGlMaW5lVGV4dCIsInZhbHVlT2YiLCJjb25uZWN0ZWRGaWVsZHNUZW1wbGF0ZVJlZ2V4IiwiY29ubmVjdGVkRmllbGRzVGVtcGxhdGVTdWJSZWdleCIsImdldExhYmVsRm9yQ29ubmVjdGVkRmllbGRzIiwiY29ubmVjdGVkRmllbGRzUGF0aCIsImdldFRleHRCaW5kaW5nRXhwcmVzc2lvbiIsImNvbXBpbGVCaW5kaW5nRXhwcmVzc2lvbiIsImNvbm5lY3RlZEZpZWxkcyIsInRlbXBsYXRlTWF0Y2hlcyIsIlRlbXBsYXRlIiwidG9TdHJpbmciLCJtYXRjaCIsInBhcnRzVG9Db25jYXQiLCJyZWR1Y2UiLCJzdWJQYXJ0c1RvQ29uY2F0Iiwic3ViTWF0Y2giLCJsZW5ndGgiLCJ0YXJnZXRWYWx1ZSIsInRhcmdldERhdGEiLCJEYXRhIiwiZGF0YUZpZWxkUGF0aCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsInJlcGxhY2UiLCJ0YXJnZXRFbnRpdHlUeXBlIiwiVmFsdWUiLCJwdXNoIiwiY29uc3RhbnQiLCJjb21waWxlRXhwcmVzc2lvbiIsImNvbmNhdCIsImdlbmVyYXRlVmlzaWJsZUV4cHJlc3Npb24iLCJmb3JtYXRPcHRpb25zIiwicHJvcGVydHlWYWx1ZSIsImlzUHJvcGVydHkiLCJUYXJnZXQiLCJ1bmRlZmluZWQiLCJpc0FuYWx5dGljYWxHcm91cEhlYWRlckV4cGFuZGVkIiwiaXNBbmFseXRpY3MiLCJJc0V4cGFuZGVkIiwiaXNBbmFseXRpY2FsTGVhZiIsImVxdWFsIiwiTm9kZUxldmVsIiwiYW5kIiwiaXNWaXNpYmxlIiwiaWZFbHNlIiwib3IiLCJub3QiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkRhdGFGaWVsZEZvcm1hdHRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBbm5vdGF0aW9uUGF0aCwgUGF0aEFubm90YXRpb25FeHByZXNzaW9uLCBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy9FZG1cIjtcbmltcG9ydCB0eXBlIHtcblx0Q29ubmVjdGVkRmllbGRzVHlwZVR5cGVzLFxuXHREYXRhRmllbGRBYnN0cmFjdFR5cGVzLFxuXHREYXRhRmllbGRUeXBlcyxcblx0RGF0YVBvaW50VHlwZVR5cGVzXG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IFVJQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eUFubm90YXRpb25zX1VJIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSV9FZG1cIjtcbmltcG9ydCB7IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHsgVUkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgYW5kLCBjb21waWxlRXhwcmVzc2lvbiwgY29uY2F0LCBjb25zdGFudCwgZXF1YWwsIGlmRWxzZSwgbm90LCBvciB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBpc0Fubm90YXRpb25QYXRoLCBpc1BhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbiwgaXNQcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1R5cGVHdWFyZHNcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGVuaGFuY2VEYXRhTW9kZWxQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBDb21wdXRlZEFubm90YXRpb25JbnRlcmZhY2UsIE1ldGFNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCB7IGdldENvbnZlcnRlckNvbnRleHQsIGlzVmlzaWJsZSB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuXG5leHBvcnQgY29uc3QgZ2V0RGF0YUZpZWxkID0gZnVuY3Rpb24gKFxuXHRvQ29udGV4dDogTWV0YU1vZGVsQ29udGV4dCxcblx0b0ludGVyZmFjZTogQ29tcHV0ZWRBbm5vdGF0aW9uSW50ZXJmYWNlXG4pOiBEYXRhRmllbGRUeXBlcyB8IENvbm5lY3RlZEZpZWxkc1R5cGVUeXBlcyB8IFByb3BlcnR5IHtcblx0Y29uc3Qgc1BhdGggPSBvSW50ZXJmYWNlLmNvbnRleHQuZ2V0UGF0aCgpO1xuXHRpZiAoIW9Db250ZXh0KSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKGBVbnJlc29sdmVkIGNvbnRleHQgcGF0aCAke3NQYXRofWApO1xuXHR9XG5cdGlmICh0eXBlb2Ygb0NvbnRleHQgPT09IFwib2JqZWN0XCIgJiYgb0NvbnRleHQuaGFzT3duUHJvcGVydHkoXCIka2luZFwiKSAmJiBvQ29udGV4dC4ka2luZCAhPT0gXCJQcm9wZXJ0eVwiKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKGBDb250ZXh0IGRvZXMgbm90IHJlc29sdmUgdG8gYSBEYXRhRmllbGQgb2JqZWN0IGJ1dCB0byBhICR7b0NvbnRleHQuJGtpbmR9YCk7XG5cdH1cblx0bGV0IG9Db252ZXJ0ZXJDb250ZXh0ID0gZ2V0Q29udmVydGVyQ29udGV4dChvQ29udGV4dCwgb0ludGVyZmFjZSkgYXNcblx0XHR8IERhdGFGaWVsZFR5cGVzXG5cdFx0fCBQcm9wZXJ0eVxuXHRcdHwgQ29ubmVjdGVkRmllbGRzVHlwZVR5cGVzXG5cdFx0fCBBbm5vdGF0aW9uUGF0aDxEYXRhRmllbGRUeXBlcyB8IENvbm5lY3RlZEZpZWxkc1R5cGVUeXBlcz5cblx0XHR8IFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjxEYXRhRmllbGRUeXBlcyB8IENvbm5lY3RlZEZpZWxkc1R5cGVUeXBlcz47XG5cdGlmIChpc0Fubm90YXRpb25QYXRoKG9Db252ZXJ0ZXJDb250ZXh0KSB8fCBpc1BhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbihvQ29udmVydGVyQ29udGV4dCkpIHtcblx0XHRvQ29udmVydGVyQ29udGV4dCA9IG9Db252ZXJ0ZXJDb250ZXh0LiR0YXJnZXQhO1xuXHR9XG5cdHJldHVybiBvQ29udmVydGVyQ29udGV4dDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREYXRhRmllbGRPYmplY3RQYXRoID0gZnVuY3Rpb24gKFxuXHRvQ29udGV4dDogTWV0YU1vZGVsQ29udGV4dCB8IHN0cmluZyxcblx0b0ludGVyZmFjZTogQ29tcHV0ZWRBbm5vdGF0aW9uSW50ZXJmYWNlXG4pOiBEYXRhTW9kZWxPYmplY3RQYXRoPERhdGFGaWVsZFR5cGVzPiB7XG5cdGNvbnN0IHNQYXRoID0gb0ludGVyZmFjZS5jb250ZXh0LmdldFBhdGgoKTtcblx0aWYgKCFvQ29udGV4dCkge1xuXHRcdHRocm93IG5ldyBFcnJvcihgVW5yZXNvbHZlZCBjb250ZXh0IHBhdGggJHtzUGF0aH1gKTtcblx0fVxuXHRpZiAodHlwZW9mIG9Db250ZXh0ID09PSBcIm9iamVjdFwiICYmIG9Db250ZXh0Lmhhc093blByb3BlcnR5KFwiJGtpbmRcIikgJiYgb0NvbnRleHQuJGtpbmQgIT09IFwiUHJvcGVydHlcIikge1xuXHRcdHRocm93IG5ldyBFcnJvcihgQ29udGV4dCBkb2VzIG5vdCByZXNvbHZlIHRvIGEgUHJvcGVydHkgb2JqZWN0IGJ1dCB0byBhICR7b0NvbnRleHQuJGtpbmR9YCk7XG5cdH1cblx0bGV0IGludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0czxEYXRhRmllbGRUeXBlcz4ob0ludGVyZmFjZS5jb250ZXh0KTtcblx0aWYgKGludm9sdmVkRGF0YU1vZGVsT2JqZWN0cy50YXJnZXRPYmplY3QgJiYgaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24oaW52b2x2ZWREYXRhTW9kZWxPYmplY3RzLnRhcmdldE9iamVjdCkpIHtcblx0XHRpbnZvbHZlZERhdGFNb2RlbE9iamVjdHMgPSBlbmhhbmNlRGF0YU1vZGVsUGF0aDxEYXRhRmllbGRUeXBlcz4oXG5cdFx0XHRpbnZvbHZlZERhdGFNb2RlbE9iamVjdHMsXG5cdFx0XHRpbnZvbHZlZERhdGFNb2RlbE9iamVjdHMudGFyZ2V0T2JqZWN0LnBhdGhcblx0XHQpO1xuXHR9XG5cdGlmIChpbnZvbHZlZERhdGFNb2RlbE9iamVjdHMudGFyZ2V0T2JqZWN0ICYmIGlzQW5ub3RhdGlvblBhdGg8RGF0YUZpZWxkVHlwZXM+KGludm9sdmVkRGF0YU1vZGVsT2JqZWN0cy50YXJnZXRPYmplY3QpKSB7XG5cdFx0Ly8gUkVWSUVXIC0+IFRoZSBjb2RlIGJlbG93IHdhcyBuZXZlciBjb3JyZWN0LCBpJ20gY2hhbmdpbmcgaXQgdG8gc29tZXRoaW5nIHRoYXQgbWFrZXMgc2Vuc2UgdHlwZSB3aXNlXG5cdFx0aW52b2x2ZWREYXRhTW9kZWxPYmplY3RzID0gZW5oYW5jZURhdGFNb2RlbFBhdGg8RGF0YUZpZWxkVHlwZXM+KFxuXHRcdFx0aW52b2x2ZWREYXRhTW9kZWxPYmplY3RzLFxuXHRcdFx0aW52b2x2ZWREYXRhTW9kZWxPYmplY3RzLnRhcmdldE9iamVjdC52YWx1ZVxuXHRcdCk7XG5cdH1cblx0aWYgKHNQYXRoLmVuZHNXaXRoKFwiJFBhdGhcIikgfHwgc1BhdGguZW5kc1dpdGgoXCIkQW5ub3RhdGlvblBhdGhcIikpIHtcblx0XHRpbnZvbHZlZERhdGFNb2RlbE9iamVjdHMgPSBlbmhhbmNlRGF0YU1vZGVsUGF0aDxEYXRhRmllbGRUeXBlcz4oaW52b2x2ZWREYXRhTW9kZWxPYmplY3RzLCBvQ29udGV4dCBhcyBzdHJpbmcpO1xuXHR9XG5cdHJldHVybiBpbnZvbHZlZERhdGFNb2RlbE9iamVjdHM7XG59O1xuXG5leHBvcnQgY29uc3QgaXNTZW1hbnRpY2FsbHlDb25uZWN0ZWRGaWVsZHMgPSBmdW5jdGlvbiAob0NvbnRleHQ6IE1ldGFNb2RlbENvbnRleHQsIG9JbnRlcmZhY2U6IENvbXB1dGVkQW5ub3RhdGlvbkludGVyZmFjZSk6IGJvb2xlYW4ge1xuXHRjb25zdCBvRGF0YUZpZWxkID0gZ2V0RGF0YUZpZWxkKG9Db250ZXh0LCBvSW50ZXJmYWNlKTtcblx0cmV0dXJuIChvRGF0YUZpZWxkIGFzIENvbm5lY3RlZEZpZWxkc1R5cGVUeXBlcykuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkNvbm5lY3RlZEZpZWxkc1R5cGU7XG59O1xuXG4vKipcbiAqXG4gKiBAcGFyYW0gb0NvbnRleHQgVGhlIENvbnRleHQgb2YgdGhlIHByb3BlcnR5XG4gKiBAcGFyYW0gb0ludGVyZmFjZSBUaGUgaW50ZXJmYWNlIGluc3RhbmNlXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBwcm9wZXJ0eSBoYXMgTXVsdGlMaW5lVGV4dCBhbm5vdGF0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBpc011bHRpTGluZVRleHQgPSBmdW5jdGlvbiAob0NvbnRleHQ6IE1ldGFNb2RlbENvbnRleHQsIG9JbnRlcmZhY2U6IENvbXB1dGVkQW5ub3RhdGlvbkludGVyZmFjZSk6IGJvb2xlYW4ge1xuXHRjb25zdCBvRGF0YUZpZWxkID0gZ2V0RGF0YUZpZWxkKG9Db250ZXh0LCBvSW50ZXJmYWNlKTtcblx0cmV0dXJuIChvRGF0YUZpZWxkLmFubm90YXRpb25zPy5VSSBhcyBQcm9wZXJ0eUFubm90YXRpb25zX1VJKT8uTXVsdGlMaW5lVGV4dD8udmFsdWVPZigpID09PSB0cnVlO1xufTtcblxuY29uc3QgY29ubmVjdGVkRmllbGRzVGVtcGxhdGVSZWdleCA9IC8oPzooe1tefV0rfSlbXntdKikvZztcbmNvbnN0IGNvbm5lY3RlZEZpZWxkc1RlbXBsYXRlU3ViUmVnZXggPSAveyhbXn1dKyl9KC4qKS87XG5leHBvcnQgY29uc3QgZ2V0TGFiZWxGb3JDb25uZWN0ZWRGaWVsZHMgPSBmdW5jdGlvbiAoXG5cdGNvbm5lY3RlZEZpZWxkc1BhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8Q29ubmVjdGVkRmllbGRzVHlwZVR5cGVzPixcblx0Z2V0VGV4dEJpbmRpbmdFeHByZXNzaW9uOiBGdW5jdGlvbixcblx0Y29tcGlsZUJpbmRpbmdFeHByZXNzaW9uID0gdHJ1ZVxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4gfCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB7XG5cdGNvbnN0IGNvbm5lY3RlZEZpZWxkczogQ29ubmVjdGVkRmllbGRzVHlwZVR5cGVzID0gY29ubmVjdGVkRmllbGRzUGF0aC50YXJnZXRPYmplY3QhO1xuXHQvLyBGaXJzdCB3ZSBzZXBhcmF0ZSBlYWNoIGdyb3VwIG9mIGB7VGVtcGxhdGVQYXJ0fSB4eHhgXG5cdGNvbnN0IHRlbXBsYXRlTWF0Y2hlcyA9IGNvbm5lY3RlZEZpZWxkcy5UZW1wbGF0ZS50b1N0cmluZygpLm1hdGNoKGNvbm5lY3RlZEZpZWxkc1RlbXBsYXRlUmVnZXgpO1xuXHRpZiAoIXRlbXBsYXRlTWF0Y2hlcykge1xuXHRcdHJldHVybiBcIlwiO1xuXHR9XG5cdGNvbnN0IHBhcnRzVG9Db25jYXQgPSB0ZW1wbGF0ZU1hdGNoZXMucmVkdWNlKChzdWJQYXJ0c1RvQ29uY2F0OiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPltdLCBtYXRjaCkgPT4ge1xuXHRcdC8vIFRoZW4gZm9yIGVhY2ggc3ViLWdyb3VwLCB3ZSByZXRyaWV2ZSB0aGUgbmFtZSBvZiB0aGUgZGF0YSBvYmplY3QgYW5kIHRoZSByZW1haW5pbmcgdGV4dCwgaWYgaXQgZXhpc3RzXG5cdFx0Y29uc3Qgc3ViTWF0Y2ggPSBtYXRjaC5tYXRjaChjb25uZWN0ZWRGaWVsZHNUZW1wbGF0ZVN1YlJlZ2V4KTtcblx0XHRpZiAoc3ViTWF0Y2ggJiYgc3ViTWF0Y2gubGVuZ3RoID4gMSkge1xuXHRcdFx0Y29uc3QgdGFyZ2V0VmFsdWUgPSBzdWJNYXRjaFsxXTtcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5cdFx0XHRjb25zdCB0YXJnZXREYXRhID0gKGNvbm5lY3RlZEZpZWxkcy5EYXRhIGFzIGFueSlbdGFyZ2V0VmFsdWVdO1xuXHRcdFx0aWYgKHRhcmdldERhdGEpIHtcblx0XHRcdFx0Y29uc3QgZGF0YUZpZWxkUGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoPERhdGFGaWVsZFR5cGVzPihcblx0XHRcdFx0XHRjb25uZWN0ZWRGaWVsZHNQYXRoLFxuXHRcdFx0XHRcdC8vIFRPRE8gQmV0dGVyIHR5cGUgZm9yIHRoZSBFZG0uRGljdGlvbmFyeVxuXHRcdFx0XHRcdHRhcmdldERhdGEuZnVsbHlRdWFsaWZpZWROYW1lLnJlcGxhY2UoY29ubmVjdGVkRmllbGRzUGF0aC50YXJnZXRFbnRpdHlUeXBlLmZ1bGx5UXVhbGlmaWVkTmFtZSwgXCJcIilcblx0XHRcdFx0KTtcblx0XHRcdFx0ZGF0YUZpZWxkUGF0aC50YXJnZXRPYmplY3QgPSBkYXRhRmllbGRQYXRoLnRhcmdldE9iamVjdCEuVmFsdWU7XG5cdFx0XHRcdHN1YlBhcnRzVG9Db25jYXQucHVzaChnZXRUZXh0QmluZGluZ0V4cHJlc3Npb24oZGF0YUZpZWxkUGF0aCwge30pKTtcblx0XHRcdFx0aWYgKHN1Yk1hdGNoLmxlbmd0aCA+IDIpIHtcblx0XHRcdFx0XHRzdWJQYXJ0c1RvQ29uY2F0LnB1c2goY29uc3RhbnQoc3ViTWF0Y2hbMl0pKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gc3ViUGFydHNUb0NvbmNhdDtcblx0fSwgW10pO1xuXHRyZXR1cm4gY29tcGlsZUJpbmRpbmdFeHByZXNzaW9uID8gY29tcGlsZUV4cHJlc3Npb24oY29uY2F0KC4uLnBhcnRzVG9Db25jYXQpKSA6IGNvbmNhdCguLi5wYXJ0c1RvQ29uY2F0KTtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgYmluZGluZyBleHByZXNzaW9uIHRvIGV2YWx1YXRlIHRoZSB2aXNpYmlsaXR5IG9mIGEgRGF0YUZpZWxkIG9yIERhdGFQb2ludCBhbm5vdGF0aW9uLlxuICpcbiAqIFNBUCBGaW9yaSBlbGVtZW50cyB3aWxsIGV2YWx1YXRlIGVpdGhlciB0aGUgVUkuSGlkZGVuIGFubm90YXRpb24gZGVmaW5lZCBvbiB0aGUgYW5ub3RhdGlvbiBpdHNlbGYgb3Igb24gdGhlIHRhcmdldCBwcm9wZXJ0eS5cbiAqXG4gKiBAcGFyYW0gdGFyZ2V0T2JqZWN0IFRoZSBtZXRhcGF0aCByZWZlcnJpbmcgdG8gdGhlIGFubm90YXRpb24gd2UgYXJlIGV2YWx1YXRpbmcuXG4gKiBAcGFyYW0gW2Zvcm1hdE9wdGlvbnNdIEZvcm1hdE9wdGlvbnMgb3B0aW9uYWwuXG4gKiBAcGFyYW0gZm9ybWF0T3B0aW9ucy5pc0FuYWx5dGljcyBUaGlzIGZsYWcgaXMgc2V0IHdoZW4gdXNpbmcgYW4gYW5hbHl0aWNhbCB0YWJsZS5cbiAqIEByZXR1cm5zIEFuIGV4cHJlc3Npb24gdGhhdCB5b3UgY2FuIGJpbmQgdG8gdGhlIFVJLlxuICovXG5leHBvcnQgY29uc3QgZ2VuZXJhdGVWaXNpYmxlRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIChcblx0dGFyZ2V0T2JqZWN0OiBEYXRhRmllbGRBYnN0cmFjdFR5cGVzIHwgRGF0YVBvaW50VHlwZVR5cGVzIHwgUHJvcGVydHkgfCB1bmRlZmluZWQsXG5cdGZvcm1hdE9wdGlvbnM/OiB7IGlzQW5hbHl0aWNzPzogYm9vbGVhbiB9XG4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRsZXQgcHJvcGVydHlWYWx1ZTtcblx0aWYgKHRhcmdldE9iamVjdCAmJiAhaXNQcm9wZXJ0eSh0YXJnZXRPYmplY3QpKSB7XG5cdFx0c3dpdGNoICh0YXJnZXRPYmplY3QuJFR5cGUpIHtcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkOlxuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoVXJsOlxuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGg6XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhJbnRlbnRCYXNlZE5hdmlnYXRpb246XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhBY3Rpb246XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFQb2ludFR5cGU6XG5cdFx0XHRcdHByb3BlcnR5VmFsdWUgPSB0YXJnZXRPYmplY3QuVmFsdWUuJHRhcmdldDtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckFubm90YXRpb246XG5cdFx0XHRcdC8vIGlmIGl0IGlzIGEgRGF0YUZpZWxkRm9yQW5ub3RhdGlvbiBwb2ludGluZyB0byBhIERhdGFQb2ludCB3ZSBsb29rIGF0IHRoZSBkYXRhUG9pbnQncyB2YWx1ZVxuXHRcdFx0XHRpZiAodGFyZ2V0T2JqZWN0Py5UYXJnZXQ/LiR0YXJnZXQ/LiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5EYXRhUG9pbnRUeXBlKSB7XG5cdFx0XHRcdFx0cHJvcGVydHlWYWx1ZSA9IHRhcmdldE9iamVjdC5UYXJnZXQuJHRhcmdldD8uVmFsdWUuJHRhcmdldDtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWZhbGx0aHJvdWdoXG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbjpcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9yQWN0aW9uOlxuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0cHJvcGVydHlWYWx1ZSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdH1cblx0Y29uc3QgaXNBbmFseXRpY2FsR3JvdXBIZWFkZXJFeHBhbmRlZCA9IGZvcm1hdE9wdGlvbnM/LmlzQW5hbHl0aWNzID8gVUkuSXNFeHBhbmRlZCA6IGNvbnN0YW50KGZhbHNlKTtcblx0Y29uc3QgaXNBbmFseXRpY2FsTGVhZiA9IGZvcm1hdE9wdGlvbnM/LmlzQW5hbHl0aWNzID8gZXF1YWwoVUkuTm9kZUxldmVsLCAwKSA6IGNvbnN0YW50KGZhbHNlKTtcblxuXHQvLyBBIGRhdGEgZmllbGQgaXMgdmlzaWJsZSBpZjpcblx0Ly8gLSB0aGUgVUkuSGlkZGVuIGV4cHJlc3Npb24gaW4gdGhlIG9yaWdpbmFsIGFubm90YXRpb24gZG9lcyBub3QgZXZhbHVhdGUgdG8gJ3RydWUnXG5cdC8vIC0gdGhlIFVJLkhpZGRlbiBleHByZXNzaW9uIGluIHRoZSB0YXJnZXQgcHJvcGVydHkgZG9lcyBub3QgZXZhbHVhdGUgdG8gJ3RydWUnXG5cdC8vIC0gaW4gY2FzZSBvZiBBbmFseXRpY3MgaXQncyBub3QgdmlzaWJsZSBmb3IgYW4gZXhwYW5kZWQgR3JvdXBIZWFkZXJcblx0cmV0dXJuIGFuZChcblx0XHQuLi5bXG5cdFx0XHRpc1Zpc2libGUodGFyZ2V0T2JqZWN0KSxcblx0XHRcdGlmRWxzZSghIXByb3BlcnR5VmFsdWUsIHByb3BlcnR5VmFsdWUgJiYgaXNWaXNpYmxlKHByb3BlcnR5VmFsdWUpLCB0cnVlKSxcblx0XHRcdG9yKG5vdChpc0FuYWx5dGljYWxHcm91cEhlYWRlckV4cGFuZGVkKSwgaXNBbmFseXRpY2FsTGVhZilcblx0XHRdXG5cdCk7XG59O1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFtQk8sTUFBTUEsWUFBWSxHQUFHLFVBQzNCQyxRQUEwQixFQUMxQkMsVUFBdUMsRUFDZ0I7SUFDdkQsTUFBTUMsS0FBSyxHQUFHRCxVQUFVLENBQUNFLE9BQU8sQ0FBQ0MsT0FBTyxFQUFFO0lBQzFDLElBQUksQ0FBQ0osUUFBUSxFQUFFO01BQ2QsTUFBTSxJQUFJSyxLQUFLLENBQUUsMkJBQTBCSCxLQUFNLEVBQUMsQ0FBQztJQUNwRDtJQUNBLElBQUksT0FBT0YsUUFBUSxLQUFLLFFBQVEsSUFBSUEsUUFBUSxDQUFDTSxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUlOLFFBQVEsQ0FBQ08sS0FBSyxLQUFLLFVBQVUsRUFBRTtNQUN0RyxNQUFNLElBQUlGLEtBQUssQ0FBRSwyREFBMERMLFFBQVEsQ0FBQ08sS0FBTSxFQUFDLENBQUM7SUFDN0Y7SUFDQSxJQUFJQyxpQkFBaUIsR0FBR0MsbUJBQW1CLENBQUNULFFBQVEsRUFBRUMsVUFBVSxDQUtNO0lB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