@grafana/scenes 6.8.0 → 6.9.0--canary.1093.14409340532.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 (321) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/esm/components/VizPanel/VizPanelRenderer.js +4 -3
  3. package/dist/esm/components/VizPanel/VizPanelRenderer.js.map +1 -1
  4. package/dist/esm/index.js +1 -1
  5. package/dist/esm/index.js.map +1 -1
  6. package/dist/index.d.ts +1 -1
  7. package/dist/index.js +5 -4
  8. package/dist/index.js.map +1 -1
  9. package/package.json +2 -2
  10. package/dist/esm/components/layout/CSSGrid/SceneCSSGridItem.js +0 -33
  11. package/dist/esm/dist/esm/behaviors/CursorSync.js +0 -76
  12. package/dist/esm/dist/esm/behaviors/LiveNowTimer.js +0 -44
  13. package/dist/esm/dist/esm/behaviors/SceneQueryController.js +0 -14
  14. package/dist/esm/dist/esm/components/EmbeddedScene.js +0 -59
  15. package/dist/esm/dist/esm/components/NestedScene.js +0 -95
  16. package/dist/esm/dist/esm/components/SceneApp/SceneApp.js +0 -27
  17. package/dist/esm/dist/esm/components/SceneApp/SceneAppPage.js +0 -176
  18. package/dist/esm/dist/esm/components/SceneApp/SceneAppPageView.js +0 -104
  19. package/dist/esm/dist/esm/components/SceneApp/utils.js +0 -42
  20. package/dist/esm/dist/esm/components/SceneByFrameRepeater.js +0 -41
  21. package/dist/esm/dist/esm/components/SceneByVariableRepeater.js +0 -55
  22. package/dist/esm/dist/esm/components/SceneCanvasText.js +0 -32
  23. package/dist/esm/dist/esm/components/SceneControlsSpacer.js +0 -17
  24. package/dist/esm/dist/esm/components/SceneDebugger/DebugDetails.js +0 -82
  25. package/dist/esm/dist/esm/components/SceneDebugger/DebugTreeNode.js +0 -72
  26. package/dist/esm/dist/esm/components/SceneDebugger/SceneDebugger.js +0 -77
  27. package/dist/esm/dist/esm/components/SceneReactObject.js +0 -34
  28. package/dist/esm/dist/esm/components/SceneRefreshPicker.js +0 -205
  29. package/dist/esm/dist/esm/components/SceneTimePicker.js +0 -139
  30. package/dist/esm/dist/esm/components/SceneTimeRangeCompare.js +0 -240
  31. package/dist/esm/dist/esm/components/SceneToolbarButton.js +0 -33
  32. package/dist/esm/dist/esm/components/VizPanel/VizPanel.js +0 -406
  33. package/dist/esm/dist/esm/components/VizPanel/VizPanelExploreButton.js +0 -44
  34. package/dist/esm/dist/esm/components/VizPanel/VizPanelMenu.js +0 -59
  35. package/dist/esm/dist/esm/components/VizPanel/VizPanelRenderer.js +0 -285
  36. package/dist/esm/dist/esm/components/VizPanel/VizPanelSeriesLimit.js +0 -45
  37. package/dist/esm/dist/esm/components/VizPanel/colorSeriesConfigFactory.js +0 -72
  38. package/dist/esm/dist/esm/components/VizPanel/registerRuntimePanelPlugin.js +0 -11
  39. package/dist/esm/dist/esm/components/VizPanel/seriesVisibilityConfigFactory.js +0 -164
  40. package/dist/esm/dist/esm/components/layout/CSSGrid/SceneCSSGridLayout.js +0 -124
  41. package/dist/esm/dist/esm/components/layout/LazyLoader.js +0 -103
  42. package/dist/esm/dist/esm/components/layout/SceneFlexLayout.js +0 -135
  43. package/dist/esm/dist/esm/components/layout/grid/SceneGridItem.js +0 -30
  44. package/dist/esm/dist/esm/components/layout/grid/SceneGridLayout.js +0 -283
  45. package/dist/esm/dist/esm/components/layout/grid/SceneGridLayoutRenderer.js +0 -178
  46. package/dist/esm/dist/esm/components/layout/grid/SceneGridRow.js +0 -190
  47. package/dist/esm/dist/esm/components/layout/grid/constants.js +0 -7
  48. package/dist/esm/dist/esm/components/layout/grid/utils.js +0 -36
  49. package/dist/esm/dist/esm/components/layout/split/SplitLayout.js +0 -17
  50. package/dist/esm/dist/esm/components/layout/split/SplitLayoutRenderer.js +0 -29
  51. package/dist/esm/dist/esm/components/layout/split/Splitter.js +0 -386
  52. package/dist/esm/dist/esm/core/SceneComponentWrapper.js +0 -57
  53. package/dist/esm/dist/esm/core/SceneDataNode.js +0 -43
  54. package/dist/esm/dist/esm/core/SceneObjectBase.js +0 -286
  55. package/dist/esm/dist/esm/core/SceneObjectRef.js +0 -32
  56. package/dist/esm/dist/esm/core/SceneTimeRange.js +0 -231
  57. package/dist/esm/dist/esm/core/events.js +0 -11
  58. package/dist/esm/dist/esm/core/sceneGraph/getTimeRange.js +0 -10
  59. package/dist/esm/dist/esm/core/sceneGraph/index.js +0 -25
  60. package/dist/esm/dist/esm/core/sceneGraph/sceneGraph.js +0 -178
  61. package/dist/esm/dist/esm/core/sceneGraph/utils.js +0 -64
  62. package/dist/esm/dist/esm/core/types.js +0 -15
  63. package/dist/esm/dist/esm/querying/DataLayersMerger.js +0 -46
  64. package/dist/esm/dist/esm/querying/ExtraQueryProvider.js +0 -6
  65. package/dist/esm/dist/esm/querying/RuntimeDataSource.js +0 -6
  66. package/dist/esm/dist/esm/querying/SceneDataLayerSet.js +0 -100
  67. package/dist/esm/dist/esm/querying/SceneQueryRunner.js +0 -468
  68. package/dist/esm/dist/esm/querying/extraQueryProcessingOperator.js +0 -46
  69. package/dist/esm/dist/esm/querying/getEnrichedDataRequest.js +0 -12
  70. package/dist/esm/dist/esm/querying/layers/SceneDataLayerBase.js +0 -112
  71. package/dist/esm/dist/esm/querying/layers/SceneDataLayerControls.js +0 -51
  72. package/dist/esm/dist/esm/querying/layers/annotations/AnnotationsDataLayer.js +0 -130
  73. package/dist/esm/dist/esm/querying/layers/annotations/filterAnnotations.js +0 -85
  74. package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationQuery.js +0 -121
  75. package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationsSupport.js +0 -211
  76. package/dist/esm/dist/esm/querying/layers/annotations/utils.js +0 -77
  77. package/dist/esm/dist/esm/querying/registerQueryWithController.js +0 -41
  78. package/dist/esm/dist/esm/services/SceneObjectUrlSyncConfig.js +0 -30
  79. package/dist/esm/dist/esm/services/UniqueUrlKeyMapper.js +0 -45
  80. package/dist/esm/dist/esm/services/UrlSyncManager.js +0 -167
  81. package/dist/esm/dist/esm/services/useUrlSync.js +0 -29
  82. package/dist/esm/dist/esm/services/utils.js +0 -71
  83. package/dist/esm/dist/esm/utils/ControlsLabel.js +0 -107
  84. package/dist/esm/dist/esm/utils/LoadingIndicator.js +0 -19
  85. package/dist/esm/dist/esm/utils/SafeSerializableSceneObject.js +0 -39
  86. package/dist/esm/dist/esm/utils/compatibility/setWindowGrafanaSceneContext.js +0 -16
  87. package/dist/esm/dist/esm/utils/date.js +0 -15
  88. package/dist/esm/dist/esm/utils/evaluateTimeRange.js +0 -16
  89. package/dist/esm/dist/esm/utils/explore.js +0 -47
  90. package/dist/esm/dist/esm/utils/getCompareSeriesRefId.js +0 -4
  91. package/dist/esm/dist/esm/utils/getDataSource.js +0 -18
  92. package/dist/esm/dist/esm/utils/getMessageFromError.js +0 -24
  93. package/dist/esm/dist/esm/utils/metricTree.js +0 -53
  94. package/dist/esm/dist/esm/utils/parseUrlParam.js +0 -41
  95. package/dist/esm/dist/esm/utils/utils.js +0 -11
  96. package/dist/esm/dist/esm/utils/wrapInSafeSerializableSceneObject.js +0 -30
  97. package/dist/esm/dist/esm/utils/writeSceneLog.js +0 -12
  98. package/dist/esm/dist/esm/variables/VariableDependencyConfig.js +0 -150
  99. package/dist/esm/dist/esm/variables/VariableValueRecorder.js +0 -71
  100. package/dist/esm/dist/esm/variables/adhoc/AdHocFilterBuilder.js +0 -24
  101. package/dist/esm/dist/esm/variables/adhoc/AdHocFilterRenderer.js +0 -303
  102. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +0 -162
  103. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +0 -20
  104. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +0 -640
  105. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +0 -65
  106. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +0 -146
  107. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +0 -114
  108. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +0 -68
  109. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/utils.js +0 -146
  110. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariable.js +0 -289
  111. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +0 -76
  112. package/dist/esm/dist/esm/variables/adhoc/getAdhocOptionSearcher.js +0 -13
  113. package/dist/esm/dist/esm/variables/adhoc/patchGetAdhocFilters.js +0 -47
  114. package/dist/esm/dist/esm/variables/components/VariableValueControl.js +0 -23
  115. package/dist/esm/dist/esm/variables/components/VariableValueInput.js +0 -33
  116. package/dist/esm/dist/esm/variables/components/VariableValueSelect.js +0 -228
  117. package/dist/esm/dist/esm/variables/components/VariableValueSelectors.js +0 -72
  118. package/dist/esm/dist/esm/variables/components/getOptionSearcher.js +0 -15
  119. package/dist/esm/dist/esm/variables/constants.js +0 -9
  120. package/dist/esm/dist/esm/variables/getEnrichedFiltersRequest.js +0 -12
  121. package/dist/esm/dist/esm/variables/groupby/GroupByVariable.js +0 -259
  122. package/dist/esm/dist/esm/variables/groupby/GroupByVariableUrlSyncHandler.js +0 -63
  123. package/dist/esm/dist/esm/variables/groupby/findActiveGroupByVariablesByUid.js +0 -13
  124. package/dist/esm/dist/esm/variables/interpolation/ScopedVarsVariable.js +0 -40
  125. package/dist/esm/dist/esm/variables/interpolation/defaults.js +0 -21
  126. package/dist/esm/dist/esm/variables/interpolation/fieldAccessorCache.js +0 -13
  127. package/dist/esm/dist/esm/variables/interpolation/formatRegistry.js +0 -296
  128. package/dist/esm/dist/esm/variables/interpolation/sceneInterpolator.js +0 -87
  129. package/dist/esm/dist/esm/variables/lookupVariable.js +0 -20
  130. package/dist/esm/dist/esm/variables/macros/AllVariablesMacro.js +0 -57
  131. package/dist/esm/dist/esm/variables/macros/contextMacros.js +0 -43
  132. package/dist/esm/dist/esm/variables/macros/dataMacros.js +0 -134
  133. package/dist/esm/dist/esm/variables/macros/index.js +0 -26
  134. package/dist/esm/dist/esm/variables/macros/templateProxies.js +0 -51
  135. package/dist/esm/dist/esm/variables/macros/timeMacros.js +0 -86
  136. package/dist/esm/dist/esm/variables/macros/types.js +0 -11
  137. package/dist/esm/dist/esm/variables/macros/urlMacros.js +0 -56
  138. package/dist/esm/dist/esm/variables/sets/SceneVariableSet.js +0 -254
  139. package/dist/esm/dist/esm/variables/types.js +0 -11
  140. package/dist/esm/dist/esm/variables/utils.js +0 -172
  141. package/dist/esm/dist/esm/variables/variants/ConstantVariable.js +0 -38
  142. package/dist/esm/dist/esm/variables/variants/CustomVariable.js +0 -60
  143. package/dist/esm/dist/esm/variables/variants/DataSourceVariable.js +0 -88
  144. package/dist/esm/dist/esm/variables/variants/IntervalVariable.js +0 -117
  145. package/dist/esm/dist/esm/variables/variants/MultiValueVariable.js +0 -295
  146. package/dist/esm/dist/esm/variables/variants/TestVariable.js +0 -117
  147. package/dist/esm/dist/esm/variables/variants/TextBoxVariable.js +0 -61
  148. package/dist/esm/dist/esm/variables/variants/query/QueryVariable.js +0 -139
  149. package/dist/esm/dist/esm/variables/variants/query/createQueryVariableRunner.js +0 -129
  150. package/dist/esm/dist/esm/variables/variants/query/guards.js +0 -28
  151. package/dist/esm/dist/esm/variables/variants/query/toMetricFindValues.js +0 -96
  152. package/dist/esm/dist/esm/variables/variants/query/utils.js +0 -124
  153. package/dist/esm/querying/DataProviderSharer.js +0 -39
  154. package/dist/esm/src/behaviors/ActWhenVariableChanged.js +0 -27
  155. package/dist/esm/src/behaviors/CursorSync.js +0 -76
  156. package/dist/esm/src/behaviors/LiveNowTimer.js +0 -44
  157. package/dist/esm/src/behaviors/SceneQueryController.js +0 -60
  158. package/dist/esm/src/behaviors/index.js +0 -5
  159. package/dist/esm/src/components/EmbeddedScene.js +0 -59
  160. package/dist/esm/src/components/NestedScene.js +0 -95
  161. package/dist/esm/src/components/SceneApp/SceneApp.js +0 -37
  162. package/dist/esm/src/components/SceneApp/SceneAppPage.js +0 -176
  163. package/dist/esm/src/components/SceneApp/SceneAppPageView.js +0 -104
  164. package/dist/esm/src/components/SceneApp/utils.js +0 -42
  165. package/dist/esm/src/components/SceneByFrameRepeater.js +0 -41
  166. package/dist/esm/src/components/SceneByVariableRepeater.js +0 -55
  167. package/dist/esm/src/components/SceneCanvasText.js +0 -32
  168. package/dist/esm/src/components/SceneControlsSpacer.js +0 -17
  169. package/dist/esm/src/components/SceneDebugger/DebugDetails.js +0 -82
  170. package/dist/esm/src/components/SceneDebugger/DebugTreeNode.js +0 -72
  171. package/dist/esm/src/components/SceneDebugger/SceneDebugger.js +0 -77
  172. package/dist/esm/src/components/SceneReactObject.js +0 -34
  173. package/dist/esm/src/components/SceneRefreshPicker.js +0 -205
  174. package/dist/esm/src/components/SceneTimePicker.js +0 -139
  175. package/dist/esm/src/components/SceneTimeRangeCompare.js +0 -240
  176. package/dist/esm/src/components/SceneToolbarButton.js +0 -33
  177. package/dist/esm/src/components/VizPanel/VizPanel.js +0 -406
  178. package/dist/esm/src/components/VizPanel/VizPanelExploreButton.js +0 -44
  179. package/dist/esm/src/components/VizPanel/VizPanelMenu.js +0 -59
  180. package/dist/esm/src/components/VizPanel/VizPanelRenderer.js +0 -285
  181. package/dist/esm/src/components/VizPanel/VizPanelSeriesLimit.js +0 -45
  182. package/dist/esm/src/components/VizPanel/colorSeriesConfigFactory.js +0 -72
  183. package/dist/esm/src/components/VizPanel/registerRuntimePanelPlugin.js +0 -56
  184. package/dist/esm/src/components/VizPanel/seriesVisibilityConfigFactory.js +0 -164
  185. package/dist/esm/src/components/layout/CSSGrid/SceneCSSGridLayout.js +0 -124
  186. package/dist/esm/src/components/layout/LazyLoader.js +0 -103
  187. package/dist/esm/src/components/layout/SceneFlexLayout.js +0 -135
  188. package/dist/esm/src/components/layout/grid/SceneGridItem.js +0 -30
  189. package/dist/esm/src/components/layout/grid/SceneGridLayout.js +0 -283
  190. package/dist/esm/src/components/layout/grid/SceneGridLayoutRenderer.js +0 -178
  191. package/dist/esm/src/components/layout/grid/SceneGridRow.js +0 -190
  192. package/dist/esm/src/components/layout/grid/constants.js +0 -7
  193. package/dist/esm/src/components/layout/grid/utils.js +0 -36
  194. package/dist/esm/src/components/layout/split/SplitLayout.js +0 -17
  195. package/dist/esm/src/components/layout/split/SplitLayoutRenderer.js +0 -29
  196. package/dist/esm/src/components/layout/split/Splitter.js +0 -386
  197. package/dist/esm/src/core/PanelBuilders/FieldConfigBuilder.js +0 -100
  198. package/dist/esm/src/core/PanelBuilders/FieldConfigBuilders.js +0 -75
  199. package/dist/esm/src/core/PanelBuilders/FieldConfigOverridesBuilder.js +0 -75
  200. package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilder.js +0 -22
  201. package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilders.js +0 -85
  202. package/dist/esm/src/core/PanelBuilders/StandardFieldConfigBuilders.js +0 -52
  203. package/dist/esm/src/core/PanelBuilders/VizConfigBuilder.js +0 -78
  204. package/dist/esm/src/core/PanelBuilders/VizConfigBuilders.js +0 -114
  205. package/dist/esm/src/core/PanelBuilders/VizPanelBuilder.js +0 -162
  206. package/dist/esm/src/core/PanelBuilders/index.js +0 -116
  207. package/dist/esm/src/core/SceneComponentWrapper.js +0 -57
  208. package/dist/esm/src/core/SceneDataNode.js +0 -43
  209. package/dist/esm/src/core/SceneObjectBase.js +0 -286
  210. package/dist/esm/src/core/SceneObjectRef.js +0 -32
  211. package/dist/esm/src/core/SceneTimeRange.js +0 -231
  212. package/dist/esm/src/core/SceneTimeRangeTransformerBase.js +0 -35
  213. package/dist/esm/src/core/SceneTimeZoneOverride.js +0 -63
  214. package/dist/esm/src/core/events.js +0 -11
  215. package/dist/esm/src/core/sceneGraph/getTimeRange.js +0 -10
  216. package/dist/esm/src/core/sceneGraph/index.js +0 -25
  217. package/dist/esm/src/core/sceneGraph/sceneGraph.js +0 -178
  218. package/dist/esm/src/core/sceneGraph/utils.js +0 -64
  219. package/dist/esm/src/core/types.js +0 -15
  220. package/dist/esm/src/index.js +0 -108
  221. package/dist/esm/src/querying/DataLayersMerger.js +0 -46
  222. package/dist/esm/src/querying/DataProviderProxy.js +0 -37
  223. package/dist/esm/src/querying/DataProviderSharer.js +0 -108
  224. package/dist/esm/src/querying/ExtraQueryProvider.js +0 -6
  225. package/dist/esm/src/querying/RuntimeDataSource.js +0 -49
  226. package/dist/esm/src/querying/SceneDataLayerSet.js +0 -100
  227. package/dist/esm/src/querying/SceneDataTransformer.js +0 -178
  228. package/dist/esm/src/querying/SceneQueryRunner.js +0 -468
  229. package/dist/esm/src/querying/extraQueryProcessingOperator.js +0 -46
  230. package/dist/esm/src/querying/getEnrichedDataRequest.js +0 -12
  231. package/dist/esm/src/querying/layers/SceneDataLayerBase.js +0 -112
  232. package/dist/esm/src/querying/layers/SceneDataLayerControls.js +0 -51
  233. package/dist/esm/src/querying/layers/annotations/AnnotationsDataLayer.js +0 -130
  234. package/dist/esm/src/querying/layers/annotations/filterAnnotations.js +0 -85
  235. package/dist/esm/src/querying/layers/annotations/standardAnnotationQuery.js +0 -121
  236. package/dist/esm/src/querying/layers/annotations/standardAnnotationsSupport.js +0 -211
  237. package/dist/esm/src/querying/layers/annotations/utils.js +0 -77
  238. package/dist/esm/src/querying/layers/index.js +0 -2
  239. package/dist/esm/src/querying/registerQueryWithController.js +0 -41
  240. package/dist/esm/src/services/SceneObjectUrlSyncConfig.js +0 -30
  241. package/dist/esm/src/services/UniqueUrlKeyMapper.js +0 -45
  242. package/dist/esm/src/services/UrlSyncContextProvider.js +0 -17
  243. package/dist/esm/src/services/UrlSyncManager.js +0 -167
  244. package/dist/esm/src/services/useUrlSync.js +0 -29
  245. package/dist/esm/src/services/utils.js +0 -75
  246. package/dist/esm/src/utils/ControlsLabel.js +0 -107
  247. package/dist/esm/src/utils/LoadingIndicator.js +0 -19
  248. package/dist/esm/src/utils/SafeSerializableSceneObject.js +0 -39
  249. package/dist/esm/src/utils/compatibility/setWindowGrafanaSceneContext.js +0 -16
  250. package/dist/esm/src/utils/date.js +0 -15
  251. package/dist/esm/src/utils/evaluateTimeRange.js +0 -16
  252. package/dist/esm/src/utils/explore.js +0 -47
  253. package/dist/esm/src/utils/getCompareSeriesRefId.js +0 -4
  254. package/dist/esm/src/utils/getDataSource.js +0 -18
  255. package/dist/esm/src/utils/getMessageFromError.js +0 -24
  256. package/dist/esm/src/utils/metricTree.js +0 -53
  257. package/dist/esm/src/utils/parseUrlParam.js +0 -41
  258. package/dist/esm/src/utils/utils.js +0 -11
  259. package/dist/esm/src/utils/wrapInSafeSerializableSceneObject.js +0 -30
  260. package/dist/esm/src/utils/writeSceneLog.js +0 -12
  261. package/dist/esm/src/variables/VariableDependencyConfig.js +0 -150
  262. package/dist/esm/src/variables/VariableValueRecorder.js +0 -71
  263. package/dist/esm/src/variables/adhoc/AdHocFilterBuilder.js +0 -24
  264. package/dist/esm/src/variables/adhoc/AdHocFilterRenderer.js +0 -303
  265. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +0 -162
  266. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +0 -20
  267. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +0 -640
  268. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +0 -65
  269. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +0 -146
  270. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +0 -114
  271. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +0 -68
  272. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/utils.js +0 -146
  273. package/dist/esm/src/variables/adhoc/AdHocFiltersVariable.js +0 -289
  274. package/dist/esm/src/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +0 -76
  275. package/dist/esm/src/variables/adhoc/getAdhocOptionSearcher.js +0 -13
  276. package/dist/esm/src/variables/adhoc/patchGetAdhocFilters.js +0 -47
  277. package/dist/esm/src/variables/components/VariableValueControl.js +0 -23
  278. package/dist/esm/src/variables/components/VariableValueInput.js +0 -33
  279. package/dist/esm/src/variables/components/VariableValueSelect.js +0 -228
  280. package/dist/esm/src/variables/components/VariableValueSelectors.js +0 -72
  281. package/dist/esm/src/variables/components/getOptionSearcher.js +0 -15
  282. package/dist/esm/src/variables/constants.js +0 -9
  283. package/dist/esm/src/variables/getEnrichedFiltersRequest.js +0 -12
  284. package/dist/esm/src/variables/groupby/GroupByVariable.js +0 -259
  285. package/dist/esm/src/variables/groupby/GroupByVariableUrlSyncHandler.js +0 -63
  286. package/dist/esm/src/variables/groupby/findActiveGroupByVariablesByUid.js +0 -13
  287. package/dist/esm/src/variables/interpolation/ScopedVarsVariable.js +0 -40
  288. package/dist/esm/src/variables/interpolation/defaults.js +0 -21
  289. package/dist/esm/src/variables/interpolation/fieldAccessorCache.js +0 -13
  290. package/dist/esm/src/variables/interpolation/formatRegistry.js +0 -296
  291. package/dist/esm/src/variables/interpolation/sceneInterpolator.js +0 -87
  292. package/dist/esm/src/variables/lookupVariable.js +0 -20
  293. package/dist/esm/src/variables/macros/AllVariablesMacro.js +0 -57
  294. package/dist/esm/src/variables/macros/contextMacros.js +0 -43
  295. package/dist/esm/src/variables/macros/dataMacros.js +0 -134
  296. package/dist/esm/src/variables/macros/index.js +0 -35
  297. package/dist/esm/src/variables/macros/templateProxies.js +0 -51
  298. package/dist/esm/src/variables/macros/timeMacros.js +0 -86
  299. package/dist/esm/src/variables/macros/types.js +0 -11
  300. package/dist/esm/src/variables/macros/urlMacros.js +0 -56
  301. package/dist/esm/src/variables/sets/SceneVariableSet.js +0 -254
  302. package/dist/esm/src/variables/types.js +0 -11
  303. package/dist/esm/src/variables/utils.js +0 -172
  304. package/dist/esm/src/variables/variants/ConstantVariable.js +0 -38
  305. package/dist/esm/src/variables/variants/CustomVariable.js +0 -60
  306. package/dist/esm/src/variables/variants/DataSourceVariable.js +0 -88
  307. package/dist/esm/src/variables/variants/IntervalVariable.js +0 -117
  308. package/dist/esm/src/variables/variants/JsonVariable.js +0 -193
  309. package/dist/esm/src/variables/variants/LocalValueVariable.js +0 -56
  310. package/dist/esm/src/variables/variants/MultiValueVariable.js +0 -295
  311. package/dist/esm/src/variables/variants/TestVariable.js +0 -117
  312. package/dist/esm/src/variables/variants/TextBoxVariable.js +0 -61
  313. package/dist/esm/src/variables/variants/guards.js +0 -27
  314. package/dist/esm/src/variables/variants/query/QueryVariable.js +0 -139
  315. package/dist/esm/src/variables/variants/query/createQueryVariableRunner.js +0 -129
  316. package/dist/esm/src/variables/variants/query/guards.js +0 -28
  317. package/dist/esm/src/variables/variants/query/toMetricFindValues.js +0 -96
  318. package/dist/esm/src/variables/variants/query/utils.js +0 -124
  319. package/dist/esm/variables/variants/JsonVariable.js +0 -96
  320. package/dist/esm/variables/variants/json/JsonVariable.js +0 -95
  321. package/dist/esm/variables/variants/json/JsonVariableOptionProviders.js +0 -70
@@ -1,286 +0,0 @@
1
- import { useState, useEffect } from 'react';
2
- import { Subscription } from 'rxjs';
3
- import { v4 } from 'uuid';
4
- import { EventBusSrv } from '@grafana/data';
5
- import { SceneComponentWrapper } from './SceneComponentWrapper.js';
6
- import { SceneObjectStateChangedEvent } from './events.js';
7
- import { cloneSceneObject } from './sceneGraph/utils.js';
8
- import { SceneObjectRef } from './SceneObjectRef.js';
9
-
10
- var __defProp = Object.defineProperty;
11
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
12
- var __hasOwnProp = Object.prototype.hasOwnProperty;
13
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
14
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
15
- var __spreadValues = (a, b) => {
16
- for (var prop in b || (b = {}))
17
- if (__hasOwnProp.call(b, prop))
18
- __defNormalProp(a, prop, b[prop]);
19
- if (__getOwnPropSymbols)
20
- for (var prop of __getOwnPropSymbols(b)) {
21
- if (__propIsEnum.call(b, prop))
22
- __defNormalProp(a, prop, b[prop]);
23
- }
24
- return a;
25
- };
26
- class SceneObjectBase {
27
- constructor(state) {
28
- this._isActive = false;
29
- this._activationHandlers = [];
30
- this._deactivationHandlers = /* @__PURE__ */ new Map();
31
- this._subs = new Subscription();
32
- this._refCount = 0;
33
- this._renderBeforeActivation = false;
34
- if (!state.key) {
35
- state.key = v4();
36
- }
37
- this._events = new EventBusSrv();
38
- this._state = Object.freeze(state);
39
- this._setParent(this._state);
40
- }
41
- get state() {
42
- return this._state;
43
- }
44
- get isActive() {
45
- return this._isActive;
46
- }
47
- get renderBeforeActivation() {
48
- return this._renderBeforeActivation;
49
- }
50
- get parent() {
51
- return this._parent;
52
- }
53
- get variableDependency() {
54
- return this._variableDependency;
55
- }
56
- get urlSync() {
57
- return this._urlSync;
58
- }
59
- get Component() {
60
- return SceneComponentWrapper;
61
- }
62
- _setParent(state) {
63
- forEachChild(state, (child) => {
64
- if (child._parent && child._parent !== this) {
65
- console.warn(
66
- "SceneObject already has a parent set that is different from the new parent. You cannot share the same SceneObject instance in multiple scenes or in multiple different places of the same scene graph. Use SceneObject.clone() to duplicate a SceneObject or store a state key reference and use sceneGraph.findObject to locate it.",
67
- child,
68
- this
69
- );
70
- }
71
- child._parent = this;
72
- });
73
- }
74
- clearParent() {
75
- this._parent = void 0;
76
- }
77
- subscribeToState(handler) {
78
- return this._events.subscribe(SceneObjectStateChangedEvent, (event) => {
79
- if (event.payload.changedObject === this) {
80
- handler(event.payload.newState, event.payload.prevState);
81
- }
82
- });
83
- }
84
- subscribeToEvent(eventType, handler) {
85
- return this._events.subscribe(eventType, handler);
86
- }
87
- setState(update) {
88
- const prevState = this._state;
89
- const newState = __spreadValues(__spreadValues({}, this._state), update);
90
- this._state = Object.freeze(newState);
91
- this._setParent(update);
92
- this._handleActivationOfChangedStateProps(prevState, newState);
93
- this.publishEvent(
94
- new SceneObjectStateChangedEvent({
95
- prevState,
96
- newState,
97
- partialUpdate: update,
98
- changedObject: this
99
- }),
100
- true
101
- );
102
- }
103
- _handleActivationOfChangedStateProps(prevState, newState) {
104
- if (!this.isActive) {
105
- return;
106
- }
107
- if (prevState.$behaviors !== newState.$behaviors) {
108
- this._handleChangedBehaviors(prevState.$behaviors, newState.$behaviors);
109
- }
110
- if (prevState.$data !== newState.$data) {
111
- this._handleChangedStateActivation(prevState.$data, newState.$data);
112
- }
113
- if (prevState.$variables !== newState.$variables) {
114
- this._handleChangedStateActivation(prevState.$variables, newState.$variables);
115
- }
116
- if (prevState.$timeRange !== newState.$timeRange) {
117
- this._handleChangedStateActivation(prevState.$timeRange, newState.$timeRange);
118
- }
119
- }
120
- _handleChangedStateActivation(oldValue, newValue) {
121
- if (oldValue) {
122
- const deactivationHandler = this._deactivationHandlers.get(oldValue);
123
- if (deactivationHandler) {
124
- deactivationHandler();
125
- this._deactivationHandlers.delete(oldValue);
126
- }
127
- }
128
- if (newValue) {
129
- this._deactivationHandlers.set(newValue, newValue.activate());
130
- }
131
- }
132
- _handleChangedBehaviors(oldValue, newValue) {
133
- if (oldValue) {
134
- for (const oldBehavior of oldValue) {
135
- if (!newValue || !newValue.includes(oldBehavior)) {
136
- const deactivationHandler = this._deactivationHandlers.get(oldBehavior);
137
- if (deactivationHandler) {
138
- deactivationHandler();
139
- this._deactivationHandlers.delete(oldBehavior);
140
- }
141
- }
142
- }
143
- }
144
- if (newValue) {
145
- for (const newBehavior of newValue) {
146
- if (!oldValue || !oldValue.includes(newBehavior)) {
147
- this._activateBehavior(newBehavior);
148
- }
149
- }
150
- }
151
- }
152
- publishEvent(event, bubble) {
153
- this._events.publish(event);
154
- if (bubble && this.parent) {
155
- this.parent.publishEvent(event, bubble);
156
- }
157
- }
158
- getRoot() {
159
- return !this._parent ? this : this._parent.getRoot();
160
- }
161
- _internalActivate() {
162
- this._isActive = true;
163
- const { $data, $variables, $timeRange, $behaviors } = this.state;
164
- this._activationHandlers.forEach((handler) => {
165
- const result = handler();
166
- if (result) {
167
- this._deactivationHandlers.set(result, result);
168
- }
169
- });
170
- if ($timeRange && !$timeRange.isActive) {
171
- this._deactivationHandlers.set($timeRange, $timeRange.activate());
172
- }
173
- if ($variables && !$variables.isActive) {
174
- this._deactivationHandlers.set($variables, $variables.activate());
175
- }
176
- if ($data && !$data.isActive) {
177
- this._deactivationHandlers.set($data, $data.activate());
178
- }
179
- if ($behaviors) {
180
- for (const behavior of $behaviors) {
181
- this._activateBehavior(behavior);
182
- }
183
- }
184
- }
185
- _activateBehavior(behavior) {
186
- if (behavior instanceof SceneObjectBase) {
187
- this._deactivationHandlers.set(behavior, behavior.activate());
188
- } else if (typeof behavior === "function") {
189
- const deactivate = behavior(this);
190
- if (deactivate) {
191
- this._deactivationHandlers.set(behavior, deactivate);
192
- }
193
- }
194
- }
195
- activate() {
196
- if (!this.isActive) {
197
- this._internalActivate();
198
- }
199
- this._refCount++;
200
- let called = false;
201
- return () => {
202
- this._refCount--;
203
- if (called) {
204
- const msg = `SceneObject cancelation handler returned by activate() called a second time`;
205
- throw new Error(msg);
206
- }
207
- called = true;
208
- if (this._refCount === 0) {
209
- this._internalDeactivate();
210
- }
211
- };
212
- }
213
- _internalDeactivate() {
214
- this._isActive = false;
215
- for (let handler of this._deactivationHandlers.values()) {
216
- handler();
217
- }
218
- this._deactivationHandlers.clear();
219
- this._events.removeAllListeners();
220
- this._subs.unsubscribe();
221
- this._subs = new Subscription();
222
- }
223
- useState() {
224
- return useSceneObjectState(this);
225
- }
226
- forceRender() {
227
- this.setState({});
228
- }
229
- clone(withState) {
230
- return cloneSceneObject(this, withState);
231
- }
232
- addActivationHandler(handler) {
233
- this._activationHandlers.push(handler);
234
- }
235
- forEachChild(callback) {
236
- forEachChild(this.state, callback);
237
- }
238
- getRef() {
239
- if (!this._ref) {
240
- this._ref = new SceneObjectRef(this);
241
- }
242
- return this._ref;
243
- }
244
- }
245
- function useSceneObjectState(model, options) {
246
- var _a;
247
- const [_, setState] = useState(model.state);
248
- const stateAtFirstRender = model.state;
249
- const shouldActivateOrKeepAlive = (_a = options == null ? void 0 : options.shouldActivateOrKeepAlive) != null ? _a : false;
250
- useEffect(() => {
251
- let unactivate;
252
- if (shouldActivateOrKeepAlive) {
253
- unactivate = model.activate();
254
- }
255
- const s = model.subscribeToState((state) => {
256
- setState(state);
257
- });
258
- if (model.state !== stateAtFirstRender) {
259
- setState(model.state);
260
- }
261
- return () => {
262
- s.unsubscribe();
263
- if (unactivate) {
264
- unactivate();
265
- }
266
- };
267
- }, [model, shouldActivateOrKeepAlive]);
268
- return model.state;
269
- }
270
- function forEachChild(state, callback) {
271
- for (const propValue of Object.values(state)) {
272
- if (propValue instanceof SceneObjectBase) {
273
- callback(propValue);
274
- }
275
- if (Array.isArray(propValue)) {
276
- for (const child of propValue) {
277
- if (child instanceof SceneObjectBase) {
278
- callback(child);
279
- }
280
- }
281
- }
282
- }
283
- }
284
-
285
- export { SceneObjectBase, useSceneObjectState };
286
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVPYmplY3RCYXNlLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29yZS9TY2VuZU9iamVjdEJhc2UudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIFVuc3Vic2NyaWJhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcblxuaW1wb3J0IHsgQnVzRXZlbnQsIEJ1c0V2ZW50SGFuZGxlciwgQnVzRXZlbnRUeXBlLCBFdmVudEJ1cywgRXZlbnRCdXNTcnYgfSBmcm9tICdAZ3JhZmFuYS9kYXRhJztcbmltcG9ydCB7XG4gIFNjZW5lT2JqZWN0LFxuICBTY2VuZUNvbXBvbmVudCxcbiAgU2NlbmVPYmplY3RVcmxTeW5jSGFuZGxlcixcbiAgU2NlbmVTdGF0ZUNoYW5nZWRIYW5kbGVyLFxuICBTY2VuZUFjdGl2YXRpb25IYW5kbGVyLFxuICBTY2VuZURlYWN0aXZhdGlvbkhhbmRsZXIsXG4gIENhbmNlbEFjdGl2YXRpb25IYW5kbGVyLFxuICBTY2VuZU9iamVjdFN0YXRlLFxuICBVc2VTdGF0ZUhvb2tPcHRpb25zLFxuICBTY2VuZVN0YXRlbGVzc0JlaGF2aW9yLFxufSBmcm9tICcuL3R5cGVzJztcblxuaW1wb3J0IHsgU2NlbmVDb21wb25lbnRXcmFwcGVyIH0gZnJvbSAnLi9TY2VuZUNvbXBvbmVudFdyYXBwZXInO1xuaW1wb3J0IHsgU2NlbmVPYmplY3RTdGF0ZUNoYW5nZWRFdmVudCB9IGZyb20gJy4vZXZlbnRzJztcbmltcG9ydCB7IGNsb25lU2NlbmVPYmplY3QgfSBmcm9tICcuL3NjZW5lR3JhcGgvdXRpbHMnO1xuaW1wb3J0IHsgU2NlbmVWYXJpYWJsZURlcGVuZGVuY3lDb25maWdMaWtlIH0gZnJvbSAnLi4vdmFyaWFibGVzL3R5cGVzJztcbmltcG9ydCB7IFNjZW5lT2JqZWN0UmVmIH0gZnJvbSAnLi9TY2VuZU9iamVjdFJlZic7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTY2VuZU9iamVjdEJhc2U8VFN0YXRlIGV4dGVuZHMgU2NlbmVPYmplY3RTdGF0ZSA9IFNjZW5lT2JqZWN0U3RhdGU+XG4gIGltcGxlbWVudHMgU2NlbmVPYmplY3Q8VFN0YXRlPlxue1xuICBwcml2YXRlIF9pc0FjdGl2ZSA9IGZhbHNlO1xuICBwcml2YXRlIF9zdGF0ZTogVFN0YXRlO1xuICBwcml2YXRlIF9hY3RpdmF0aW9uSGFuZGxlcnM6IFNjZW5lQWN0aXZhdGlvbkhhbmRsZXJbXSA9IFtdO1xuICBwcml2YXRlIF9kZWFjdGl2YXRpb25IYW5kbGVycyA9IG5ldyBNYXA8b2JqZWN0LCBTY2VuZURlYWN0aXZhdGlvbkhhbmRsZXI+KCk7XG4gIHByaXZhdGUgX3JlZj86IFNjZW5lT2JqZWN0UmVmPHRoaXM+O1xuXG4gIHByb3RlY3RlZCBfZXZlbnRzPzogRXZlbnRCdXM7XG4gIHByb3RlY3RlZCBfcGFyZW50PzogU2NlbmVPYmplY3Q7XG4gIHByb3RlY3RlZCBfc3VicyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJvdGVjdGVkIF9yZWZDb3VudCA9IDA7XG4gIHByb3RlY3RlZCBfcmVuZGVyQmVmb3JlQWN0aXZhdGlvbiA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBfdmFyaWFibGVEZXBlbmRlbmN5OiBTY2VuZVZhcmlhYmxlRGVwZW5kZW5jeUNvbmZpZ0xpa2UgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBfdXJsU3luYzogU2NlbmVPYmplY3RVcmxTeW5jSGFuZGxlciB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgY29uc3RydWN0b3Ioc3RhdGU6IFRTdGF0ZSkge1xuICAgIGlmICghc3RhdGUua2V5KSB7XG4gICAgICBzdGF0ZS5rZXkgPSB1dWlkdjQoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9ldmVudHMgPSBuZXcgRXZlbnRCdXNTcnYoKTtcblxuICAgIHRoaXMuX3N0YXRlID0gT2JqZWN0LmZyZWV6ZShzdGF0ZSk7XG4gICAgdGhpcy5fc2V0UGFyZW50KHRoaXMuX3N0YXRlKTtcbiAgfVxuXG4gIC8qKiBDdXJyZW50IHN0YXRlICovXG4gIHB1YmxpYyBnZXQgc3RhdGUoKTogVFN0YXRlIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGU7XG4gIH1cblxuICAvKiogVHJ1ZSBpZiBjdXJyZW50bHkgYmVpbmcgYWN0aXZlIChpZSBkaXNwbGF5ZWQgZm9yIHZpc3VhbCBvYmplY3RzKSAqL1xuICBwdWJsaWMgZ2V0IGlzQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc0FjdGl2ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVuZGVyQmVmb3JlQWN0aXZhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVuZGVyQmVmb3JlQWN0aXZhdGlvbjtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHRoZSBwYXJlbnQsIHVuZGVmaW5lZCBmb3Igcm9vdCBvYmplY3QgKi9cbiAgcHVibGljIGdldCBwYXJlbnQoKTogU2NlbmVPYmplY3QgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9wYXJlbnQ7XG4gIH1cblxuICAvKiogUmV0dXJucyB2YXJpYWJsZSBkZXBlbmRlbmN5IGNvbmZpZyAqL1xuICBwdWJsaWMgZ2V0IHZhcmlhYmxlRGVwZW5kZW5jeSgpOiBTY2VuZVZhcmlhYmxlRGVwZW5kZW5jeUNvbmZpZ0xpa2UgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl92YXJpYWJsZURlcGVuZGVuY3k7XG4gIH1cblxuICAvKiogUmV0dXJucyB1cmwgc3luYyBjb25maWcgKi9cbiAgcHVibGljIGdldCB1cmxTeW5jKCk6IFNjZW5lT2JqZWN0VXJsU3luY0hhbmRsZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl91cmxTeW5jO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgaW4gcmVuZGVyIGZ1bmN0aW9ucyB3aGVuIHJlbmRlcmluZyBhIFNjZW5lT2JqZWN0LlxuICAgKiBXcmFwcyB0aGUgY29tcG9uZW50IGluIGFuIEVkaXRXcmFwcGVyIHRoYXQgaGFuZGxlcyBlZGl0IG1vZGVcbiAgICovXG4gIHB1YmxpYyBnZXQgQ29tcG9uZW50KCk6IFNjZW5lQ29tcG9uZW50PHRoaXM+IHtcbiAgICByZXR1cm4gU2NlbmVDb21wb25lbnRXcmFwcGVyIGFzIFNjZW5lQ29tcG9uZW50PHRoaXM+O1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0UGFyZW50KHN0YXRlOiBQYXJ0aWFsPFRTdGF0ZT4pIHtcbiAgICBmb3JFYWNoQ2hpbGQoc3RhdGUsIChjaGlsZCkgPT4ge1xuICAgICAgLy8gSWYgd2UgYWxyZWFkeSBoYXZlIGEgcGFyZW50IGFuZCBpdCdzIG5vdCB0aGlzLCB0aGVuIHdlIGxpa2VseSBoYXZlIGEgYnVnXG4gICAgICBpZiAoY2hpbGQuX3BhcmVudCAmJiBjaGlsZC5fcGFyZW50ICE9PSB0aGlzKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAnU2NlbmVPYmplY3QgYWxyZWFkeSBoYXMgYSBwYXJlbnQgc2V0IHRoYXQgaXMgZGlmZmVyZW50IGZyb20gdGhlIG5ldyBwYXJlbnQuIFlvdSBjYW5ub3Qgc2hhcmUgdGhlIHNhbWUgU2NlbmVPYmplY3QgaW5zdGFuY2UgaW4gbXVsdGlwbGUgc2NlbmVzIG9yIGluIG11bHRpcGxlIGRpZmZlcmVudCBwbGFjZXMgb2YgdGhlIHNhbWUgc2NlbmUgZ3JhcGguIFVzZSBTY2VuZU9iamVjdC5jbG9uZSgpIHRvIGR1cGxpY2F0ZSBhIFNjZW5lT2JqZWN0IG9yIHN0b3JlIGEgc3RhdGUga2V5IHJlZmVyZW5jZSBhbmQgdXNlIHNjZW5lR3JhcGguZmluZE9iamVjdCB0byBsb2NhdGUgaXQuJyxcbiAgICAgICAgICBjaGlsZCxcbiAgICAgICAgICB0aGlzXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBjaGlsZC5fcGFyZW50ID0gdGhpcztcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTb21ldGltZXMgeW91IHdhbnQgdG8gbW92ZSBvbmUgaW5zdGFuY2UgdG8gYW5vdGhlciBwYXJlbnQuXG4gICAqIFRoaXMgaXMgYSB3YXkgdG8gZG8gdGhhdCB3aXRob3V0IGdldHRpbmcgdGhlIGNvbnNvbGUgd2FybmluZy5cbiAgICovXG4gIHB1YmxpYyBjbGVhclBhcmVudCgpIHtcbiAgICB0aGlzLl9wYXJlbnQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlIHRvIHRoZSBzY2VuZSBzdGF0ZSBzdWJqZWN0XG4gICAqKi9cbiAgcHVibGljIHN1YnNjcmliZVRvU3RhdGUoaGFuZGxlcjogU2NlbmVTdGF0ZUNoYW5nZWRIYW5kbGVyPFRTdGF0ZT4pOiBVbnN1YnNjcmliYWJsZSB7XG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50cyEuc3Vic2NyaWJlKFNjZW5lT2JqZWN0U3RhdGVDaGFuZ2VkRXZlbnQsIChldmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50LnBheWxvYWQuY2hhbmdlZE9iamVjdCA9PT0gdGhpcykge1xuICAgICAgICBoYW5kbGVyKGV2ZW50LnBheWxvYWQubmV3U3RhdGUgYXMgVFN0YXRlLCBldmVudC5wYXlsb2FkLnByZXZTdGF0ZSBhcyBUU3RhdGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byB0aGUgc2NlbmUgZXZlbnRcbiAgICoqL1xuICBwdWJsaWMgc3Vic2NyaWJlVG9FdmVudDxUIGV4dGVuZHMgQnVzRXZlbnQ+KGV2ZW50VHlwZTogQnVzRXZlbnRUeXBlPFQ+LCBoYW5kbGVyOiBCdXNFdmVudEhhbmRsZXI8VD4pOiBVbnN1YnNjcmliYWJsZSB7XG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50cyEuc3Vic2NyaWJlKGV2ZW50VHlwZSwgaGFuZGxlcik7XG4gIH1cblxuICBwdWJsaWMgc2V0U3RhdGUodXBkYXRlOiBQYXJ0aWFsPFRTdGF0ZT4pIHtcbiAgICBjb25zdCBwcmV2U3RhdGUgPSB0aGlzLl9zdGF0ZTtcbiAgICBjb25zdCBuZXdTdGF0ZTogVFN0YXRlID0ge1xuICAgICAgLi4udGhpcy5fc3RhdGUsXG4gICAgICAuLi51cGRhdGUsXG4gICAgfTtcblxuICAgIHRoaXMuX3N0YXRlID0gT2JqZWN0LmZyZWV6ZShuZXdTdGF0ZSk7XG4gICAgdGhpcy5fc2V0UGFyZW50KHVwZGF0ZSk7XG5cbiAgICAvLyBIYW5kbGVzIGNhc2VzIHdoZW4gJGRhdGEsICR0aW1lUmFuZ2UsIG9yICR2YXJpYWJsZXMgYXJlIGNoYW5nZWRcbiAgICB0aGlzLl9oYW5kbGVBY3RpdmF0aW9uT2ZDaGFuZ2VkU3RhdGVQcm9wcyhwcmV2U3RhdGUsIG5ld1N0YXRlKTtcblxuICAgIC8vIEJ1YmJsZSBzdGF0ZSBjaGFuZ2UgZXZlbnQuIFRoaXMgaXMgZXZlbnQgaXMgc3Vic2NyaWJlZCB0byBieSBVcmxTeW5jTWFuYWdlciBhbmQgVW5kb01hbmFnZXJcbiAgICB0aGlzLnB1Ymxpc2hFdmVudChcbiAgICAgIG5ldyBTY2VuZU9iamVjdFN0YXRlQ2hhbmdlZEV2ZW50KHtcbiAgICAgICAgcHJldlN0YXRlLFxuICAgICAgICBuZXdTdGF0ZSxcbiAgICAgICAgcGFydGlhbFVwZGF0ZTogdXBkYXRlLFxuICAgICAgICBjaGFuZ2VkT2JqZWN0OiB0aGlzLFxuICAgICAgfSksXG4gICAgICB0cnVlXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGhhbmRsZXMgYWN0aXZhdGlvbiBhbmQgZGVhY3RpdmF0aW9uIG9mICRkYXRhLCAkdGltZVJhbmdlIGFuZCAkdmFyaWFibGVzIHdoZW4gdGhleSBjaGFuZ2VcbiAgICogZHVyaW5nIHRoZSBhY3RpdmUgcGhhc2Ugb2YgdGhlIHNjZW5lIG9iamVjdC5cbiAgICovXG4gIHByaXZhdGUgX2hhbmRsZUFjdGl2YXRpb25PZkNoYW5nZWRTdGF0ZVByb3BzKHByZXZTdGF0ZTogVFN0YXRlLCBuZXdTdGF0ZTogVFN0YXRlKSB7XG4gICAgaWYgKCF0aGlzLmlzQWN0aXZlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHByZXZTdGF0ZS4kYmVoYXZpb3JzICE9PSBuZXdTdGF0ZS4kYmVoYXZpb3JzKSB7XG4gICAgICB0aGlzLl9oYW5kbGVDaGFuZ2VkQmVoYXZpb3JzKHByZXZTdGF0ZS4kYmVoYXZpb3JzLCBuZXdTdGF0ZS4kYmVoYXZpb3JzKTtcbiAgICB9XG5cbiAgICBpZiAocHJldlN0YXRlLiRkYXRhICE9PSBuZXdTdGF0ZS4kZGF0YSkge1xuICAgICAgdGhpcy5faGFuZGxlQ2hhbmdlZFN0YXRlQWN0aXZhdGlvbihwcmV2U3RhdGUuJGRhdGEsIG5ld1N0YXRlLiRkYXRhKTtcbiAgICB9XG5cbiAgICBpZiAocHJldlN0YXRlLiR2YXJpYWJsZXMgIT09IG5ld1N0YXRlLiR2YXJpYWJsZXMpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNoYW5nZWRTdGF0ZUFjdGl2YXRpb24ocHJldlN0YXRlLiR2YXJpYWJsZXMsIG5ld1N0YXRlLiR2YXJpYWJsZXMpO1xuICAgIH1cblxuICAgIGlmIChwcmV2U3RhdGUuJHRpbWVSYW5nZSAhPT0gbmV3U3RhdGUuJHRpbWVSYW5nZSkge1xuICAgICAgdGhpcy5faGFuZGxlQ2hhbmdlZFN0YXRlQWN0aXZhdGlvbihwcmV2U3RhdGUuJHRpbWVSYW5nZSwgbmV3U3RhdGUuJHRpbWVSYW5nZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlQ2hhbmdlZFN0YXRlQWN0aXZhdGlvbihvbGRWYWx1ZTogU2NlbmVPYmplY3QgfCB1bmRlZmluZWQsIG5ld1ZhbHVlOiBTY2VuZU9iamVjdCB8IHVuZGVmaW5lZCkge1xuICAgIGlmIChvbGRWYWx1ZSkge1xuICAgICAgY29uc3QgZGVhY3RpdmF0aW9uSGFuZGxlciA9IHRoaXMuX2RlYWN0aXZhdGlvbkhhbmRsZXJzLmdldChvbGRWYWx1ZSk7XG4gICAgICBpZiAoZGVhY3RpdmF0aW9uSGFuZGxlcikge1xuICAgICAgICBkZWFjdGl2YXRpb25IYW5kbGVyKCk7XG4gICAgICAgIHRoaXMuX2RlYWN0aXZhdGlvbkhhbmRsZXJzLmRlbGV0ZShvbGRWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICB0aGlzLl9kZWFjdGl2YXRpb25IYW5kbGVycy5zZXQobmV3VmFsdWUsIG5ld1ZhbHVlLmFjdGl2YXRlKCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZUNoYW5nZWRCZWhhdmlvcnMoXG4gICAgb2xkVmFsdWU6IEFycmF5PFNjZW5lT2JqZWN0IHwgU2NlbmVTdGF0ZWxlc3NCZWhhdmlvcj4gfCB1bmRlZmluZWQsXG4gICAgbmV3VmFsdWU6IEFycmF5PFNjZW5lT2JqZWN0IHwgU2NlbmVTdGF0ZWxlc3NCZWhhdmlvcj4gfCB1bmRlZmluZWRcbiAgKSB7XG4gICAgLy8gSGFuZGxlIHJlbW92ZWQgYmVoYXZpb3JzXG4gICAgaWYgKG9sZFZhbHVlKSB7XG4gICAgICBmb3IgKGNvbnN0IG9sZEJlaGF2aW9yIG9mIG9sZFZhbHVlKSB7XG4gICAgICAgIGlmICghbmV3VmFsdWUgfHwgIW5ld1ZhbHVlLmluY2x1ZGVzKG9sZEJlaGF2aW9yKSkge1xuICAgICAgICAgIGNvbnN0IGRlYWN0aXZhdGlvbkhhbmRsZXIgPSB0aGlzLl9kZWFjdGl2YXRpb25IYW5kbGVycy5nZXQob2xkQmVoYXZpb3IpO1xuICAgICAgICAgIGlmIChkZWFjdGl2YXRpb25IYW5kbGVyKSB7XG4gICAgICAgICAgICBkZWFjdGl2YXRpb25IYW5kbGVyKCk7XG4gICAgICAgICAgICB0aGlzLl9kZWFjdGl2YXRpb25IYW5kbGVycy5kZWxldGUob2xkQmVoYXZpb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEhhbmRsZSBuZXcgYmVoYXZpb3JzXG4gICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICBmb3IgKGNvbnN0IG5ld0JlaGF2aW9yIG9mIG5ld1ZhbHVlKSB7XG4gICAgICAgIGlmICghb2xkVmFsdWUgfHwgIW9sZFZhbHVlLmluY2x1ZGVzKG5ld0JlaGF2aW9yKSkge1xuICAgICAgICAgIHRoaXMuX2FjdGl2YXRlQmVoYXZpb3IobmV3QmVoYXZpb3IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLypcbiAgICogUHVibGlzaCBhbiBldmVudCBhbmQgb3B0aW9uYWxseSBidWJibGUgaXQgdXAgdGhlIHNjZW5lXG4gICAqKi9cbiAgcHVibGljIHB1Ymxpc2hFdmVudChldmVudDogQnVzRXZlbnQsIGJ1YmJsZT86IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9ldmVudHMhLnB1Ymxpc2goZXZlbnQpO1xuXG4gICAgaWYgKGJ1YmJsZSAmJiB0aGlzLnBhcmVudCkge1xuICAgICAgdGhpcy5wYXJlbnQucHVibGlzaEV2ZW50KGV2ZW50LCBidWJibGUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRSb290KCk6IFNjZW5lT2JqZWN0IHtcbiAgICByZXR1cm4gIXRoaXMuX3BhcmVudCA/IHRoaXMgOiB0aGlzLl9wYXJlbnQuZ2V0Um9vdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW50ZXJuYWxBY3RpdmF0ZSgpIHtcbiAgICB0aGlzLl9pc0FjdGl2ZSA9IHRydWU7XG5cbiAgICBjb25zdCB7ICRkYXRhLCAkdmFyaWFibGVzLCAkdGltZVJhbmdlLCAkYmVoYXZpb3JzIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgdGhpcy5fYWN0aXZhdGlvbkhhbmRsZXJzLmZvckVhY2goKGhhbmRsZXIpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGhhbmRsZXIoKTtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgdGhpcy5fZGVhY3RpdmF0aW9uSGFuZGxlcnMuc2V0KHJlc3VsdCwgcmVzdWx0KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICgkdGltZVJhbmdlICYmICEkdGltZVJhbmdlLmlzQWN0aXZlKSB7XG4gICAgICB0aGlzLl9kZWFjdGl2YXRpb25IYW5kbGVycy5zZXQoJHRpbWVSYW5nZSwgJHRpbWVSYW5nZS5hY3RpdmF0ZSgpKTtcbiAgICB9XG5cbiAgICBpZiAoJHZhcmlhYmxlcyAmJiAhJHZhcmlhYmxlcy5pc0FjdGl2ZSkge1xuICAgICAgdGhpcy5fZGVhY3RpdmF0aW9uSGFuZGxlcnMuc2V0KCR2YXJpYWJsZXMsICR2YXJpYWJsZXMuYWN0aXZhdGUoKSk7XG4gICAgfVxuXG4gICAgaWYgKCRkYXRhICYmICEkZGF0YS5pc0FjdGl2ZSkge1xuICAgICAgdGhpcy5fZGVhY3RpdmF0aW9uSGFuZGxlcnMuc2V0KCRkYXRhLCAkZGF0YS5hY3RpdmF0ZSgpKTtcbiAgICB9XG5cbiAgICBpZiAoJGJlaGF2aW9ycykge1xuICAgICAgZm9yIChjb25zdCBiZWhhdmlvciBvZiAkYmVoYXZpb3JzKSB7XG4gICAgICAgIHRoaXMuX2FjdGl2YXRlQmVoYXZpb3IoYmVoYXZpb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2FjdGl2YXRlQmVoYXZpb3IoYmVoYXZpb3I6IFNjZW5lT2JqZWN0IHwgU2NlbmVTdGF0ZWxlc3NCZWhhdmlvcik6IFNjZW5lRGVhY3RpdmF0aW9uSGFuZGxlciB8IHZvaWQge1xuICAgIGlmIChiZWhhdmlvciBpbnN0YW5jZW9mIFNjZW5lT2JqZWN0QmFzZSkge1xuICAgICAgdGhpcy5fZGVhY3RpdmF0aW9uSGFuZGxlcnMuc2V0KGJlaGF2aW9yLCBiZWhhdmlvci5hY3RpdmF0ZSgpKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBiZWhhdmlvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgZGVhY3RpdmF0ZSA9IGJlaGF2aW9yKHRoaXMpO1xuICAgICAgaWYgKGRlYWN0aXZhdGUpIHtcbiAgICAgICAgdGhpcy5fZGVhY3RpdmF0aW9uSGFuZGxlcnMuc2V0KGJlaGF2aW9yLCBkZWFjdGl2YXRlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBpcyBwcmltYXJpbHkgY2FsbGVkIGZyb20gU2NlbmVDb21wb25lbnRXcmFwcGVyIHdoZW4gdGhlIFNjZW5lT2JqZWN0J3MgQ29tcG9uZW50IGlzIG1vdW50ZWQuXG4gICAqIEJ1dCBpbiBzb21lIHNjZW5hcmlvcyB0aGlzIGNhbiBhbHNvIGJlIGNhbGxlZCBkaXJlY3RseSBmcm9tIGFub3RoZXIgc2NlbmUgb2JqZWN0LiBXaGVuIGNhbGxlZCBtYW51YWxseSBmcm9tIGFub3RoZXIgc2NlbmUgb2JqZWN0XG4gICAqIG1ha2Ugc3VyZSB0byBjYWxsIHRoZSByZXR1cm5lZCBmdW5jdGlvbiB3aGVuIHRoZSBzb3VyY2Ugc2NlbmUgb2JqZWN0IGlzIGRlYWN0aXZhdGVkLlxuICAgKi9cbiAgcHVibGljIGFjdGl2YXRlKCk6IENhbmNlbEFjdGl2YXRpb25IYW5kbGVyIHtcbiAgICBpZiAoIXRoaXMuaXNBY3RpdmUpIHtcbiAgICAgIHRoaXMuX2ludGVybmFsQWN0aXZhdGUoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9yZWZDb3VudCsrO1xuXG4gICAgbGV0IGNhbGxlZCA9IGZhbHNlO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHRoaXMuX3JlZkNvdW50LS07XG5cbiAgICAgIGlmIChjYWxsZWQpIHtcbiAgICAgICAgY29uc3QgbXNnID0gYFNjZW5lT2JqZWN0IGNhbmNlbGF0aW9uIGhhbmRsZXIgcmV0dXJuZWQgYnkgYWN0aXZhdGUoKSBjYWxsZWQgYSBzZWNvbmQgdGltZWA7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgfVxuXG4gICAgICBjYWxsZWQgPSB0cnVlO1xuXG4gICAgICBpZiAodGhpcy5fcmVmQ291bnQgPT09IDApIHtcbiAgICAgICAgdGhpcy5faW50ZXJuYWxEZWFjdGl2YXRlKCk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYnkgdGhlIFNjZW5lQ29tcG9uZW50V3JhcHBlciB3aGVuIHRoZSByZWFjdCBjb21wb25lbnQgaXMgdW5tb3VudGVkLlxuICAgKiBEb24ndCBvdmVycmlkZSB0aGlzLCBpbnN0ZWFkIHVzZSBhZGRBY3RpdmF0aW9uSGFuZGxlci4gVGhlIGFjdGl2YXRpb24gaGFuZGxlciBjYW4gcmV0dXJuIGEgZGVhY3RpdmF0aW9uIGhhbmRsZXIuXG4gICAqL1xuICBwcml2YXRlIF9pbnRlcm5hbERlYWN0aXZhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5faXNBY3RpdmUgPSBmYWxzZTtcblxuICAgIGZvciAobGV0IGhhbmRsZXIgb2YgdGhpcy5fZGVhY3RpdmF0aW9uSGFuZGxlcnMudmFsdWVzKCkpIHtcbiAgICAgIGhhbmRsZXIoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9kZWFjdGl2YXRpb25IYW5kbGVycy5jbGVhcigpO1xuXG4gICAgLy8gQ2xlYXIgc3Vic2NyaXB0aW9ucyBhbmQgbGlzdGVuZXJzXG4gICAgdGhpcy5fZXZlbnRzIS5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLl9zdWJzLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fc3VicyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVdGlsaXR5IGhvb2sgdG8gZ2V0IGFuZCBzdWJzY3JpYmUgdG8gc3RhdGVcbiAgICovXG4gIHB1YmxpYyB1c2VTdGF0ZSgpOiBUU3RhdGUge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rc1xuICAgIHJldHVybiB1c2VTY2VuZU9iamVjdFN0YXRlKHRoaXMpO1xuICB9XG5cbiAgLyoqIEZvcmNlIGEgcmUtcmVuZGVyLCBzaG91bGQgb25seSBiZSBuZWVkZWQgd2hlbiB2YXJpYWJsZSB2YWx1ZXMgY2hhbmdlICovXG4gIHB1YmxpYyBmb3JjZVJlbmRlcigpOiB2b2lkIHtcbiAgICB0aGlzLnNldFN0YXRlKHt9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaWxsIGNyZWF0ZSBuZXcgU2NlbmVPYmplY3Qgd2l0aCBzaGFsbG93LWNsb25lZCBzdGF0ZSwgYnV0IGFsbCBzdGF0ZSBpdGVtcyBvZiB0eXBlIFNjZW5lT2JqZWN0IGFyZSBkZWVwIGNsb25lZFxuICAgKi9cbiAgcHVibGljIGNsb25lKHdpdGhTdGF0ZT86IFBhcnRpYWw8VFN0YXRlPik6IHRoaXMge1xuICAgIHJldHVybiBjbG9uZVNjZW5lT2JqZWN0KHRoaXMsIHdpdGhTdGF0ZSk7XG4gIH1cblxuICAvKipcbiAgICogQWxsb3dzIGV4dGVybmFsIGNvZGUgdG8gcmVnaXN0ZXIgY29kZSB0aGF0IGlzIGV4ZWN1dGVkIG9uIGFjdGl2YXRlIGFuZCBkZWFjdGl2YXRlLiBUaGlzIGFsbG93IHlvdVxuICAgKiB0byB3aXJlIHVwIHNjZW5lIG9iamVjdHMgdGhhdCBuZWVkIHRvIHJlc3BvbmQgdG8gc3RhdGUgY2hhbmdlcyBpbiBvdGhlciBvYmplY3RzIGZyb20gdGhlIG91dHNpZGUuXG4gICAqKi9cbiAgcHVibGljIGFkZEFjdGl2YXRpb25IYW5kbGVyKGhhbmRsZXI6IFNjZW5lQWN0aXZhdGlvbkhhbmRsZXIpIHtcbiAgICB0aGlzLl9hY3RpdmF0aW9uSGFuZGxlcnMucHVzaChoYW5kbGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb29wIHRocm91Z2ggc3RhdGUgYW5kIGNhbGwgY2FsbGJhY2sgZm9yIGVhY2ggZGlyZWN0IGNoaWxkIHNjZW5lIG9iamVjdC5cbiAgICogQ2hlY2tzIDEgbGV2ZWwgZGVlcCBwcm9wZXJ0aWVzIGFuZCBhcnJheXMuIFNvIGEgc2NlbmUgb2JqZWN0IGhpZGRlbiBpbiBhIG5lc3RlZCBwbGFpbiBvYmplY3Qgd2lsbCBub3QgYmUgZGV0ZWN0ZWQuXG4gICAqL1xuICBwdWJsaWMgZm9yRWFjaENoaWxkKGNhbGxiYWNrOiAoY2hpbGQ6IFNjZW5lT2JqZWN0QmFzZSkgPT4gdm9pZCkge1xuICAgIGZvckVhY2hDaGlsZCh0aGlzLnN0YXRlLCBjYWxsYmFjayk7XG4gIH1cblxuICAvKiogUmV0dXJucyBhIFNjZW5lT2JqZWN0UmVmIHRoYXQgd2lsbCByZXNvbHZlIHRvIHRoaXMgb2JqZWN0ICovXG4gIHB1YmxpYyBnZXRSZWYoKTogU2NlbmVPYmplY3RSZWY8dGhpcz4ge1xuICAgIGlmICghdGhpcy5fcmVmKSB7XG4gICAgICB0aGlzLl9yZWYgPSBuZXcgU2NlbmVPYmplY3RSZWYodGhpcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3JlZjtcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgaG9vayBpcyBhbHdheXMgcmV0dXJuaW5nIG1vZGVsLnN0YXRlIGluc3RlYWQgb2YgYSB1c2VTdGF0ZSB0aGF0IHJlbWVtYmVycyB0aGUgbGFzdCBzdGF0ZSBlbWl0dGVkIG9uIHRoZSBzdWJqZWN0XG4gKiBUaGUgcmVhc29uIGZvciB0aGlzIGlzIHNvIHRoYXQgaWYgdGhlIG1vZGVsIGluc3RhbmNlIGNoYW5nZSB0aGlzIGZ1bmN0aW9uIHdpbGwgYWx3YXlzIHJldHVybiB0aGUgbGF0ZXN0IHN0YXRlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlU2NlbmVPYmplY3RTdGF0ZTxUU3RhdGUgZXh0ZW5kcyBTY2VuZU9iamVjdFN0YXRlPihcbiAgbW9kZWw6IFNjZW5lT2JqZWN0PFRTdGF0ZT4sXG4gIG9wdGlvbnM/OiBVc2VTdGF0ZUhvb2tPcHRpb25zXG4pOiBUU3RhdGUge1xuICBjb25zdCBbXywgc2V0U3RhdGVdID0gdXNlU3RhdGU8VFN0YXRlPihtb2RlbC5zdGF0ZSk7XG4gIGNvbnN0IHN0YXRlQXRGaXJzdFJlbmRlciA9IG1vZGVsLnN0YXRlO1xuICBjb25zdCBzaG91bGRBY3RpdmF0ZU9yS2VlcEFsaXZlID0gb3B0aW9ucz8uc2hvdWxkQWN0aXZhdGVPcktlZXBBbGl2ZSA/PyBmYWxzZTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxldCB1bmFjdGl2YXRlOiBDYW5jZWxBY3RpdmF0aW9uSGFuZGxlciB8IHVuZGVmaW5lZDtcblxuICAgIGlmIChzaG91bGRBY3RpdmF0ZU9yS2VlcEFsaXZlKSB7XG4gICAgICB1bmFjdGl2YXRlID0gbW9kZWwuYWN0aXZhdGUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBzID0gbW9kZWwuc3Vic2NyaWJlVG9TdGF0ZSgoc3RhdGUpID0+IHtcbiAgICAgIHNldFN0YXRlKHN0YXRlKTtcbiAgICB9KTtcblxuICAgIC8vIFJlLXJlbmRlciBjb21wb25lbnQgaWYgdGhlIHN0YXRlIGNoYW5nZWQgYmV0d2VlbiBmaXJzdCByZW5kZXIgYW5kIHVzZUVmZmVjdCAobW91bnQpXG4gICAgaWYgKG1vZGVsLnN0YXRlICE9PSBzdGF0ZUF0Rmlyc3RSZW5kZXIpIHtcbiAgICAgIHNldFN0YXRlKG1vZGVsLnN0YXRlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgcy51bnN1YnNjcmliZSgpO1xuXG4gICAgICBpZiAodW5hY3RpdmF0ZSkge1xuICAgICAgICB1bmFjdGl2YXRlKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFttb2RlbCwgc2hvdWxkQWN0aXZhdGVPcktlZXBBbGl2ZV0pO1xuXG4gIHJldHVybiBtb2RlbC5zdGF0ZTtcbn1cblxuZnVuY3Rpb24gZm9yRWFjaENoaWxkPFQgZXh0ZW5kcyBvYmplY3Q+KHN0YXRlOiBULCBjYWxsYmFjazogKGNoaWxkOiBTY2VuZU9iamVjdEJhc2UpID0+IHZvaWQpIHtcbiAgZm9yIChjb25zdCBwcm9wVmFsdWUgb2YgT2JqZWN0LnZhbHVlcyhzdGF0ZSkpIHtcbiAgICBpZiAocHJvcFZhbHVlIGluc3RhbmNlb2YgU2NlbmVPYmplY3RCYXNlKSB7XG4gICAgICBjYWxsYmFjayhwcm9wVmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KHByb3BWYWx1ZSkpIHtcbiAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgcHJvcFZhbHVlKSB7XG4gICAgICAgIGlmIChjaGlsZCBpbnN0YW5jZW9mIFNjZW5lT2JqZWN0QmFzZSkge1xuICAgICAgICAgIGNhbGxiYWNrKGNoaWxkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl0sIm5h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
@@ -1,32 +0,0 @@
1
- var __accessCheck = (obj, member, msg) => {
2
- if (!member.has(obj))
3
- throw TypeError("Cannot " + msg);
4
- };
5
- var __privateGet = (obj, member, getter) => {
6
- __accessCheck(obj, member, "read from private field");
7
- return getter ? getter.call(obj) : member.get(obj);
8
- };
9
- var __privateAdd = (obj, member, value) => {
10
- if (member.has(obj))
11
- throw TypeError("Cannot add the same private member more than once");
12
- member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
13
- };
14
- var __privateSet = (obj, member, value, setter) => {
15
- __accessCheck(obj, member, "write to private field");
16
- setter ? setter.call(obj, value) : member.set(obj, value);
17
- return value;
18
- };
19
- var _ref;
20
- class SceneObjectRef {
21
- constructor(ref) {
22
- __privateAdd(this, _ref, void 0);
23
- __privateSet(this, _ref, ref);
24
- }
25
- resolve() {
26
- return __privateGet(this, _ref);
27
- }
28
- }
29
- _ref = new WeakMap();
30
-
31
- export { SceneObjectRef };
32
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVPYmplY3RSZWYuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb3JlL1NjZW5lT2JqZWN0UmVmLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBTY2VuZU9iamVjdFJlZjxUPiB7XG4gICNyZWY6IFQ7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHJlZjogVCkge1xuICAgIHRoaXMuI3JlZiA9IHJlZjtcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlKCk6IFQge1xuICAgIHJldHVybiB0aGlzLiNyZWY7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBLElBQUEsQ0FBQTtBQUFPLE1BQU0sY0FBa0IsQ0FBQTtBQUFBLEVBR3RCLFlBQVksR0FBUSxFQUFBO0FBRjNCLElBQUEsWUFBQSxDQUFBLElBQUEsRUFBQSxJQUFBLEVBQUEsS0FBQSxDQUFBLENBQUEsQ0FBQTtBQUdFLElBQUEsWUFBQSxDQUFBLElBQUEsRUFBSyxJQUFPLEVBQUEsR0FBQSxDQUFBLENBQUE7QUFBQSxHQUNkO0FBQUEsRUFFTyxPQUFhLEdBQUE7QUFDbEIsSUFBQSxPQUFPLFlBQUssQ0FBQSxJQUFBLEVBQUEsSUFBQSxDQUFBLENBQUE7QUFBQSxHQUNkO0FBQ0YsQ0FBQTtBQVRFLElBQUEsR0FBQSxJQUFBLE9BQUEsRUFBQTs7OzsifQ==
@@ -1,231 +0,0 @@
1
- import { getTimeZone, rangeUtil, toUtc } from '@grafana/data';
2
- import { SceneObjectUrlSyncConfig } from '../services/SceneObjectUrlSyncConfig.js';
3
- import { SceneObjectBase } from './SceneObjectBase.js';
4
- import { getClosest } from './sceneGraph/utils.js';
5
- import { parseUrlParam } from '../utils/parseUrlParam.js';
6
- import { evaluateTimeRange } from '../utils/evaluateTimeRange.js';
7
- import { RefreshEvent, locationService } from '@grafana/runtime';
8
- import { isValid } from '../utils/date.js';
9
-
10
- var __defProp = Object.defineProperty;
11
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
12
- var __hasOwnProp = Object.prototype.hasOwnProperty;
13
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
14
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
15
- var __spreadValues = (a, b) => {
16
- for (var prop in b || (b = {}))
17
- if (__hasOwnProp.call(b, prop))
18
- __defNormalProp(a, prop, b[prop]);
19
- if (__getOwnPropSymbols)
20
- for (var prop of __getOwnPropSymbols(b)) {
21
- if (__propIsEnum.call(b, prop))
22
- __defNormalProp(a, prop, b[prop]);
23
- }
24
- return a;
25
- };
26
- class SceneTimeRange extends SceneObjectBase {
27
- constructor(state = {}) {
28
- var _a;
29
- const from = state.from && isValid(state.from) ? state.from : "now-6h";
30
- const to = state.to && isValid(state.to) ? state.to : "now";
31
- const timeZone = state.timeZone;
32
- const value = evaluateTimeRange(
33
- from,
34
- to,
35
- timeZone || getTimeZone(),
36
- state.fiscalYearStartMonth,
37
- state.UNSAFE_nowDelay
38
- );
39
- const refreshOnActivate = (_a = state.refreshOnActivate) != null ? _a : { percent: 10 };
40
- super(__spreadValues({ from, to, timeZone, value, refreshOnActivate }, state));
41
- this._urlSync = new SceneObjectUrlSyncConfig(this, { keys: ["from", "to", "timezone", "time", "time.window"] });
42
- this.onTimeRangeChange = (timeRange) => {
43
- const update = {};
44
- if (typeof timeRange.raw.from === "string") {
45
- update.from = timeRange.raw.from;
46
- } else {
47
- update.from = timeRange.raw.from.toISOString();
48
- }
49
- if (typeof timeRange.raw.to === "string") {
50
- update.to = timeRange.raw.to;
51
- } else {
52
- update.to = timeRange.raw.to.toISOString();
53
- }
54
- update.value = evaluateTimeRange(
55
- update.from,
56
- update.to,
57
- this.getTimeZone(),
58
- this.state.fiscalYearStartMonth,
59
- this.state.UNSAFE_nowDelay
60
- );
61
- if (update.from !== this.state.from || update.to !== this.state.to) {
62
- this._urlSync.performBrowserHistoryAction(() => {
63
- this.setState(update);
64
- });
65
- }
66
- };
67
- this.onTimeZoneChange = (timeZone) => {
68
- this._urlSync.performBrowserHistoryAction(() => {
69
- this.setState({ timeZone });
70
- });
71
- };
72
- this.onRefresh = () => {
73
- this.setState({
74
- value: evaluateTimeRange(
75
- this.state.from,
76
- this.state.to,
77
- this.getTimeZone(),
78
- this.state.fiscalYearStartMonth,
79
- this.state.UNSAFE_nowDelay
80
- )
81
- });
82
- this.publishEvent(new RefreshEvent(), true);
83
- };
84
- this.addActivationHandler(this._onActivate.bind(this));
85
- }
86
- _onActivate() {
87
- if (!this.state.timeZone) {
88
- const timeZoneSource = this.getTimeZoneSource();
89
- if (timeZoneSource !== this) {
90
- this._subs.add(
91
- timeZoneSource.subscribeToState((n, p) => {
92
- if (n.timeZone !== void 0 && n.timeZone !== p.timeZone) {
93
- this.setState({
94
- value: evaluateTimeRange(
95
- this.state.from,
96
- this.state.to,
97
- timeZoneSource.getTimeZone(),
98
- this.state.fiscalYearStartMonth,
99
- this.state.UNSAFE_nowDelay
100
- )
101
- });
102
- }
103
- })
104
- );
105
- }
106
- }
107
- if (rangeUtil.isRelativeTimeRange(this.state.value.raw)) {
108
- this.refreshIfStale();
109
- }
110
- }
111
- refreshIfStale() {
112
- var _a, _b, _c, _d;
113
- let ms;
114
- if (((_b = (_a = this.state) == null ? void 0 : _a.refreshOnActivate) == null ? void 0 : _b.percent) !== void 0) {
115
- ms = this.calculatePercentOfInterval(this.state.refreshOnActivate.percent);
116
- }
117
- if (((_d = (_c = this.state) == null ? void 0 : _c.refreshOnActivate) == null ? void 0 : _d.afterMs) !== void 0) {
118
- ms = Math.min(this.state.refreshOnActivate.afterMs, ms != null ? ms : Infinity);
119
- }
120
- if (ms !== void 0) {
121
- this.refreshRange(ms);
122
- }
123
- }
124
- getTimeZoneSource() {
125
- if (!this.parent || !this.parent.parent) {
126
- return this;
127
- }
128
- const source = getClosest(this.parent.parent, (o) => {
129
- if (o.state.$timeRange && o.state.$timeRange.state.timeZone) {
130
- return o.state.$timeRange;
131
- }
132
- return void 0;
133
- });
134
- if (!source) {
135
- return this;
136
- }
137
- return source;
138
- }
139
- refreshRange(refreshAfterMs) {
140
- var _a;
141
- const value = evaluateTimeRange(
142
- this.state.from,
143
- this.state.to,
144
- (_a = this.state.timeZone) != null ? _a : getTimeZone(),
145
- this.state.fiscalYearStartMonth,
146
- this.state.UNSAFE_nowDelay
147
- );
148
- const diff = value.to.diff(this.state.value.to, "milliseconds");
149
- if (diff >= refreshAfterMs) {
150
- this.setState({
151
- value
152
- });
153
- }
154
- }
155
- calculatePercentOfInterval(percent) {
156
- const intervalMs = this.state.value.to.diff(this.state.value.from, "milliseconds");
157
- return Math.ceil(intervalMs / percent);
158
- }
159
- getTimeZone() {
160
- if (this.state.timeZone) {
161
- return this.state.timeZone;
162
- }
163
- const timeZoneSource = this.getTimeZoneSource();
164
- if (timeZoneSource !== this) {
165
- return timeZoneSource.state.timeZone;
166
- }
167
- return getTimeZone();
168
- }
169
- getUrlState() {
170
- const params = locationService.getSearchObject();
171
- const urlValues = { from: this.state.from, to: this.state.to, timezone: this.getTimeZone() };
172
- if (params.time && params["time.window"]) {
173
- urlValues.time = null;
174
- urlValues["time.window"] = null;
175
- }
176
- return urlValues;
177
- }
178
- updateFromUrl(values) {
179
- var _a, _b, _c;
180
- const update = {};
181
- let from = parseUrlParam(values.from);
182
- let to = parseUrlParam(values.to);
183
- if (values.time && values["time.window"]) {
184
- const time = Array.isArray(values.time) ? values.time[0] : values.time;
185
- const timeWindow = Array.isArray(values["time.window"]) ? values["time.window"][0] : values["time.window"];
186
- const timeRange = getTimeWindow(time, timeWindow);
187
- if (timeRange.from && isValid(timeRange.from)) {
188
- from = timeRange.from;
189
- }
190
- if (timeRange.to && isValid(timeRange.to)) {
191
- to = timeRange.to;
192
- }
193
- }
194
- if (from && isValid(from)) {
195
- update.from = from;
196
- }
197
- if (to && isValid(to)) {
198
- update.to = to;
199
- }
200
- if (typeof values.timezone === "string") {
201
- update.timeZone = values.timezone !== "" ? values.timezone : void 0;
202
- }
203
- if (Object.keys(update).length === 0) {
204
- return;
205
- }
206
- update.value = evaluateTimeRange(
207
- (_a = update.from) != null ? _a : this.state.from,
208
- (_b = update.to) != null ? _b : this.state.to,
209
- (_c = update.timeZone) != null ? _c : this.getTimeZone(),
210
- this.state.fiscalYearStartMonth,
211
- this.state.UNSAFE_nowDelay
212
- );
213
- return this.setState(update);
214
- }
215
- }
216
- function getTimeWindow(time, timeWindow) {
217
- const valueTime = isNaN(Date.parse(time)) ? parseInt(time, 10) : Date.parse(time);
218
- let timeWindowMs;
219
- if (timeWindow.match(/^\d+$/) && parseInt(timeWindow, 10)) {
220
- timeWindowMs = parseInt(timeWindow, 10);
221
- } else {
222
- timeWindowMs = rangeUtil.intervalToMs(timeWindow);
223
- }
224
- return {
225
- from: toUtc(valueTime - timeWindowMs / 2).toISOString(),
226
- to: toUtc(valueTime + timeWindowMs / 2).toISOString()
227
- };
228
- }
229
-
230
- export { SceneTimeRange };
231
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVUaW1lUmFuZ2UuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb3JlL1NjZW5lVGltZVJhbmdlLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRUaW1lWm9uZSwgcmFuZ2VVdGlsLCBUaW1lUmFuZ2UsIHRvVXRjIH0gZnJvbSAnQGdyYWZhbmEvZGF0YSc7XG5pbXBvcnQgeyBUaW1lWm9uZSB9IGZyb20gJ0BncmFmYW5hL3NjaGVtYSc7XG5cbmltcG9ydCB7IFNjZW5lT2JqZWN0VXJsU3luY0NvbmZpZyB9IGZyb20gJy4uL3NlcnZpY2VzL1NjZW5lT2JqZWN0VXJsU3luY0NvbmZpZyc7XG5cbmltcG9ydCB7IFNjZW5lT2JqZWN0QmFzZSB9IGZyb20gJy4vU2NlbmVPYmplY3RCYXNlJztcbmltcG9ydCB7IFNjZW5lVGltZVJhbmdlTGlrZSwgU2NlbmVUaW1lUmFuZ2VTdGF0ZSwgU2NlbmVPYmplY3RVcmxWYWx1ZXMgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGdldENsb3Nlc3QgfSBmcm9tICcuL3NjZW5lR3JhcGgvdXRpbHMnO1xuaW1wb3J0IHsgcGFyc2VVcmxQYXJhbSB9IGZyb20gJy4uL3V0aWxzL3BhcnNlVXJsUGFyYW0nO1xuaW1wb3J0IHsgZXZhbHVhdGVUaW1lUmFuZ2UgfSBmcm9tICcuLi91dGlscy9ldmFsdWF0ZVRpbWVSYW5nZSc7XG5pbXBvcnQgeyBsb2NhdGlvblNlcnZpY2UsIFJlZnJlc2hFdmVudCB9IGZyb20gJ0BncmFmYW5hL3J1bnRpbWUnO1xuaW1wb3J0IHsgaXNWYWxpZCB9IGZyb20gJy4uL3V0aWxzL2RhdGUnO1xuXG5leHBvcnQgY2xhc3MgU2NlbmVUaW1lUmFuZ2UgZXh0ZW5kcyBTY2VuZU9iamVjdEJhc2U8U2NlbmVUaW1lUmFuZ2VTdGF0ZT4gaW1wbGVtZW50cyBTY2VuZVRpbWVSYW5nZUxpa2Uge1xuICBwcm90ZWN0ZWQgX3VybFN5bmMgPSBuZXcgU2NlbmVPYmplY3RVcmxTeW5jQ29uZmlnKHRoaXMsIHsga2V5czogWydmcm9tJywgJ3RvJywgJ3RpbWV6b25lJywgJ3RpbWUnLCAndGltZS53aW5kb3cnXSB9KTtcblxuICBwdWJsaWMgY29uc3RydWN0b3Ioc3RhdGU6IFBhcnRpYWw8U2NlbmVUaW1lUmFuZ2VTdGF0ZT4gPSB7fSkge1xuICAgIGNvbnN0IGZyb20gPSBzdGF0ZS5mcm9tICYmIGlzVmFsaWQoc3RhdGUuZnJvbSkgPyBzdGF0ZS5mcm9tIDogJ25vdy02aCc7XG4gICAgY29uc3QgdG8gPSBzdGF0ZS50byAmJiBpc1ZhbGlkKHN0YXRlLnRvKSA/IHN0YXRlLnRvIDogJ25vdyc7XG5cbiAgICBjb25zdCB0aW1lWm9uZSA9IHN0YXRlLnRpbWVab25lO1xuICAgIGNvbnN0IHZhbHVlID0gZXZhbHVhdGVUaW1lUmFuZ2UoXG4gICAgICBmcm9tLFxuICAgICAgdG8sXG4gICAgICB0aW1lWm9uZSB8fCBnZXRUaW1lWm9uZSgpLFxuICAgICAgc3RhdGUuZmlzY2FsWWVhclN0YXJ0TW9udGgsXG4gICAgICBzdGF0ZS5VTlNBRkVfbm93RGVsYXlcbiAgICApO1xuICAgIGNvbnN0IHJlZnJlc2hPbkFjdGl2YXRlID0gc3RhdGUucmVmcmVzaE9uQWN0aXZhdGUgPz8geyBwZXJjZW50OiAxMCB9O1xuICAgIHN1cGVyKHsgZnJvbSwgdG8sIHRpbWVab25lLCB2YWx1ZSwgcmVmcmVzaE9uQWN0aXZhdGUsIC4uLnN0YXRlIH0pO1xuXG4gICAgdGhpcy5hZGRBY3RpdmF0aW9uSGFuZGxlcih0aGlzLl9vbkFjdGl2YXRlLmJpbmQodGhpcykpO1xuICB9XG5cbiAgcHJpdmF0ZSBfb25BY3RpdmF0ZSgpIHtcbiAgICAvLyBXaGVuIFNjZW5lVGltZVJhbmdlIGhhcyBubyB0aW1lIHpvbmUgcHJvdmlkZWQsIGZpbmQgY2xvc2VzdCBzb3VyY2Ugb2YgdGltZSB6b25lIGFuZCBzdWJzY3JpYmUgdG8gaXRcbiAgICBpZiAoIXRoaXMuc3RhdGUudGltZVpvbmUpIHtcbiAgICAgIGNvbnN0IHRpbWVab25lU291cmNlID0gdGhpcy5nZXRUaW1lWm9uZVNvdXJjZSgpO1xuICAgICAgaWYgKHRpbWVab25lU291cmNlICE9PSB0aGlzKSB7XG4gICAgICAgIHRoaXMuX3N1YnMuYWRkKFxuICAgICAgICAgIHRpbWVab25lU291cmNlLnN1YnNjcmliZVRvU3RhdGUoKG4sIHApID0+IHtcbiAgICAgICAgICAgIGlmIChuLnRpbWVab25lICE9PSB1bmRlZmluZWQgJiYgbi50aW1lWm9uZSAhPT0gcC50aW1lWm9uZSkge1xuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogZXZhbHVhdGVUaW1lUmFuZ2UoXG4gICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmZyb20sXG4gICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnRvLFxuICAgICAgICAgICAgICAgICAgdGltZVpvbmVTb3VyY2UuZ2V0VGltZVpvbmUoKSxcbiAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuZmlzY2FsWWVhclN0YXJ0TW9udGgsXG4gICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLlVOU0FGRV9ub3dEZWxheVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJhbmdlVXRpbC5pc1JlbGF0aXZlVGltZVJhbmdlKHRoaXMuc3RhdGUudmFsdWUucmF3KSkge1xuICAgICAgdGhpcy5yZWZyZXNoSWZTdGFsZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVmcmVzaElmU3RhbGUoKSB7XG4gICAgbGV0IG1zO1xuICAgIGlmICh0aGlzLnN0YXRlPy5yZWZyZXNoT25BY3RpdmF0ZT8ucGVyY2VudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBtcyA9IHRoaXMuY2FsY3VsYXRlUGVyY2VudE9mSW50ZXJ2YWwodGhpcy5zdGF0ZS5yZWZyZXNoT25BY3RpdmF0ZS5wZXJjZW50KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3RhdGU/LnJlZnJlc2hPbkFjdGl2YXRlPy5hZnRlck1zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG1zID0gTWF0aC5taW4odGhpcy5zdGF0ZS5yZWZyZXNoT25BY3RpdmF0ZS5hZnRlck1zLCBtcyA/PyBJbmZpbml0eSk7XG4gICAgfVxuICAgIGlmIChtcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnJlZnJlc2hSYW5nZShtcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFdpbGwgdHJhdmVyc2UgdXAgdGhlIHNjZW5lIGdyYXBoIHRvIGZpbmQgdGhlIGNsb3Nlc3QgU2NlbmVUaW1lUmFuZ2VMaWtlIHdpdGggdGltZSB6b25lIHNldFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRUaW1lWm9uZVNvdXJjZSgpIHtcbiAgICBpZiAoIXRoaXMucGFyZW50IHx8ICF0aGlzLnBhcmVudC5wYXJlbnQpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvLyBGaW5kIHRoZSBjbG9zZXN0IHNvdXJjZSBvZiB0aW1lIHpvbmVcbiAgICBjb25zdCBzb3VyY2UgPSBnZXRDbG9zZXN0PFNjZW5lVGltZVJhbmdlTGlrZT4odGhpcy5wYXJlbnQucGFyZW50LCAobykgPT4ge1xuICAgICAgaWYgKG8uc3RhdGUuJHRpbWVSYW5nZSAmJiBvLnN0YXRlLiR0aW1lUmFuZ2Uuc3RhdGUudGltZVpvbmUpIHtcbiAgICAgICAgcmV0dXJuIG8uc3RhdGUuJHRpbWVSYW5nZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSk7XG5cbiAgICBpZiAoIXNvdXJjZSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZyZXNoZXMgdGltZSByYW5nZSBpZiBpdCBpcyBvbGRlciB0aGFuIHRoZSBpbnZhbGlkYXRpb24gaW50ZXJ2YWxcbiAgICogQHBhcmFtIHJlZnJlc2hBZnRlck1zIGludmFsaWRhdGlvbiBpbnRlcnZhbCAobWlsbGlzZWNvbmRzKVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSByZWZyZXNoUmFuZ2UocmVmcmVzaEFmdGVyTXM6IG51bWJlcikge1xuICAgIGNvbnN0IHZhbHVlID0gZXZhbHVhdGVUaW1lUmFuZ2UoXG4gICAgICB0aGlzLnN0YXRlLmZyb20sXG4gICAgICB0aGlzLnN0YXRlLnRvLFxuICAgICAgdGhpcy5zdGF0ZS50aW1lWm9uZSA/PyBnZXRUaW1lWm9uZSgpLFxuICAgICAgdGhpcy5zdGF0ZS5maXNjYWxZZWFyU3RhcnRNb250aCxcbiAgICAgIHRoaXMuc3RhdGUuVU5TQUZFX25vd0RlbGF5XG4gICAgKTtcblxuICAgIGNvbnN0IGRpZmYgPSB2YWx1ZS50by5kaWZmKHRoaXMuc3RhdGUudmFsdWUudG8sICdtaWxsaXNlY29uZHMnKTtcbiAgICBpZiAoZGlmZiA+PSByZWZyZXNoQWZ0ZXJNcykge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIHZhbHVlLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVQZXJjZW50T2ZJbnRlcnZhbChwZXJjZW50OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IGludGVydmFsTXMgPSB0aGlzLnN0YXRlLnZhbHVlLnRvLmRpZmYodGhpcy5zdGF0ZS52YWx1ZS5mcm9tLCAnbWlsbGlzZWNvbmRzJyk7XG4gICAgcmV0dXJuIE1hdGguY2VpbChpbnRlcnZhbE1zIC8gcGVyY2VudCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VGltZVpvbmUoKTogVGltZVpvbmUge1xuICAgIC8vIFJldHVybiBsb2NhbCB0aW1lIHpvbmUgaWYgcHJvdmlkZWRcbiAgICBpZiAodGhpcy5zdGF0ZS50aW1lWm9uZSkge1xuICAgICAgcmV0dXJuIHRoaXMuc3RhdGUudGltZVpvbmU7XG4gICAgfVxuXG4gICAgLy8gUmVzb2x2ZSBoaWdoZXIgbGV2ZWwgdGltZSB6b25lIHNvdXJjZVxuICAgIGNvbnN0IHRpbWVab25lU291cmNlID0gdGhpcy5nZXRUaW1lWm9uZVNvdXJjZSgpO1xuICAgIGlmICh0aW1lWm9uZVNvdXJjZSAhPT0gdGhpcykge1xuICAgICAgcmV0dXJuIHRpbWVab25lU291cmNlLnN0YXRlLnRpbWVab25lITtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gZGVmYXVsdCB0aW1lIHpvbmVcbiAgICByZXR1cm4gZ2V0VGltZVpvbmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvblRpbWVSYW5nZUNoYW5nZSA9ICh0aW1lUmFuZ2U6IFRpbWVSYW5nZSkgPT4ge1xuICAgIGNvbnN0IHVwZGF0ZTogUGFydGlhbDxTY2VuZVRpbWVSYW5nZVN0YXRlPiA9IHt9O1xuXG4gICAgaWYgKHR5cGVvZiB0aW1lUmFuZ2UucmF3LmZyb20gPT09ICdzdHJpbmcnKSB7XG4gICAgICB1cGRhdGUuZnJvbSA9IHRpbWVSYW5nZS5yYXcuZnJvbTtcbiAgICB9IGVsc2Uge1xuICAgICAgdXBkYXRlLmZyb20gPSB0aW1lUmFuZ2UucmF3LmZyb20udG9JU09TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHRpbWVSYW5nZS5yYXcudG8gPT09ICdzdHJpbmcnKSB7XG4gICAgICB1cGRhdGUudG8gPSB0aW1lUmFuZ2UucmF3LnRvO1xuICAgIH0gZWxzZSB7XG4gICAgICB1cGRhdGUudG8gPSB0aW1lUmFuZ2UucmF3LnRvLnRvSVNPU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgdXBkYXRlLnZhbHVlID0gZXZhbHVhdGVUaW1lUmFuZ2UoXG4gICAgICB1cGRhdGUuZnJvbSxcbiAgICAgIHVwZGF0ZS50byxcbiAgICAgIHRoaXMuZ2V0VGltZVpvbmUoKSxcbiAgICAgIHRoaXMuc3RhdGUuZmlzY2FsWWVhclN0YXJ0TW9udGgsXG4gICAgICB0aGlzLnN0YXRlLlVOU0FGRV9ub3dEZWxheVxuICAgICk7XG5cbiAgICAvLyBPbmx5IHVwZGF0ZSBpZiB0aW1lIHJhbmdlIGFjdHVhbGx5IGNoYW5nZWRcbiAgICBpZiAodXBkYXRlLmZyb20gIT09IHRoaXMuc3RhdGUuZnJvbSB8fCB1cGRhdGUudG8gIT09IHRoaXMuc3RhdGUudG8pIHtcbiAgICAgIHRoaXMuX3VybFN5bmMucGVyZm9ybUJyb3dzZXJIaXN0b3J5QWN0aW9uKCgpID0+IHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh1cGRhdGUpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIHB1YmxpYyBvblRpbWVab25lQ2hhbmdlID0gKHRpbWVab25lOiBUaW1lWm9uZSkgPT4ge1xuICAgIHRoaXMuX3VybFN5bmMucGVyZm9ybUJyb3dzZXJIaXN0b3J5QWN0aW9uKCgpID0+IHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyB0aW1lWm9uZSB9KTtcbiAgICB9KTtcbiAgfTtcblxuICBwdWJsaWMgb25SZWZyZXNoID0gKCkgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgdmFsdWU6IGV2YWx1YXRlVGltZVJhbmdlKFxuICAgICAgICB0aGlzLnN0YXRlLmZyb20sXG4gICAgICAgIHRoaXMuc3RhdGUudG8sXG4gICAgICAgIHRoaXMuZ2V0VGltZVpvbmUoKSxcbiAgICAgICAgdGhpcy5zdGF0ZS5maXNjYWxZZWFyU3RhcnRNb250aCxcbiAgICAgICAgdGhpcy5zdGF0ZS5VTlNBRkVfbm93RGVsYXlcbiAgICAgICksXG4gICAgfSk7XG5cbiAgICB0aGlzLnB1Ymxpc2hFdmVudChuZXcgUmVmcmVzaEV2ZW50KCksIHRydWUpO1xuICB9O1xuXG4gIHB1YmxpYyBnZXRVcmxTdGF0ZSgpIHtcbiAgICBjb25zdCBwYXJhbXMgPSBsb2NhdGlvblNlcnZpY2UuZ2V0U2VhcmNoT2JqZWN0KCk7XG4gICAgY29uc3QgdXJsVmFsdWVzOiBTY2VuZU9iamVjdFVybFZhbHVlcyA9IHsgZnJvbTogdGhpcy5zdGF0ZS5mcm9tLCB0bzogdGhpcy5zdGF0ZS50bywgdGltZXpvbmU6IHRoaXMuZ2V0VGltZVpvbmUoKSB9O1xuXG4gICAgLy8gQ2xlYXIgdGltZSBhbmQgdGltZS53aW5kb3cgb25jZSB0aGV5IGFyZSBjb252ZXJ0ZWQgdG8gZnJvbSBhbmQgdG9cbiAgICBpZiAocGFyYW1zLnRpbWUgJiYgcGFyYW1zWyd0aW1lLndpbmRvdyddKSB7XG4gICAgICB1cmxWYWx1ZXMudGltZSA9IG51bGw7XG4gICAgICB1cmxWYWx1ZXNbJ3RpbWUud2luZG93J10gPSBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB1cmxWYWx1ZXM7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlRnJvbVVybCh2YWx1ZXM6IFNjZW5lT2JqZWN0VXJsVmFsdWVzKSB7XG4gICAgY29uc3QgdXBkYXRlOiBQYXJ0aWFsPFNjZW5lVGltZVJhbmdlU3RhdGU+ID0ge307XG5cbiAgICBsZXQgZnJvbSA9IHBhcnNlVXJsUGFyYW0odmFsdWVzLmZyb20pO1xuICAgIGxldCB0byA9IHBhcnNlVXJsUGFyYW0odmFsdWVzLnRvKTtcblxuICAgIGlmICh2YWx1ZXMudGltZSAmJiB2YWx1ZXNbJ3RpbWUud2luZG93J10pIHtcbiAgICAgIGNvbnN0IHRpbWUgPSBBcnJheS5pc0FycmF5KHZhbHVlcy50aW1lKSA/IHZhbHVlcy50aW1lWzBdIDogdmFsdWVzLnRpbWU7XG4gICAgICBjb25zdCB0aW1lV2luZG93ID0gQXJyYXkuaXNBcnJheSh2YWx1ZXNbJ3RpbWUud2luZG93J10pID8gdmFsdWVzWyd0aW1lLndpbmRvdyddWzBdIDogdmFsdWVzWyd0aW1lLndpbmRvdyddO1xuICAgICAgY29uc3QgdGltZVJhbmdlID0gZ2V0VGltZVdpbmRvdyh0aW1lLCB0aW1lV2luZG93KTtcbiAgICAgIGlmICh0aW1lUmFuZ2UuZnJvbSAmJiBpc1ZhbGlkKHRpbWVSYW5nZS5mcm9tKSkge1xuICAgICAgICBmcm9tID0gdGltZVJhbmdlLmZyb207XG4gICAgICB9XG5cbiAgICAgIGlmICh0aW1lUmFuZ2UudG8gJiYgaXNWYWxpZCh0aW1lUmFuZ2UudG8pKSB7XG4gICAgICAgIHRvID0gdGltZVJhbmdlLnRvO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmcm9tICYmIGlzVmFsaWQoZnJvbSkpIHtcbiAgICAgIHVwZGF0ZS5mcm9tID0gZnJvbTtcbiAgICB9XG5cbiAgICBpZiAodG8gJiYgaXNWYWxpZCh0bykpIHtcbiAgICAgIHVwZGF0ZS50byA9IHRvO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWVzLnRpbWV6b25lID09PSAnc3RyaW5nJykge1xuICAgICAgdXBkYXRlLnRpbWVab25lID0gdmFsdWVzLnRpbWV6b25lICE9PSAnJyA/IHZhbHVlcy50aW1lem9uZSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoT2JqZWN0LmtleXModXBkYXRlKS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB1cGRhdGUudmFsdWUgPSBldmFsdWF0ZVRpbWVSYW5nZShcbiAgICAgIHVwZGF0ZS5mcm9tID8/IHRoaXMuc3RhdGUuZnJvbSxcbiAgICAgIHVwZGF0ZS50byA/PyB0aGlzLnN0YXRlLnRvLFxuICAgICAgdXBkYXRlLnRpbWVab25lID8/IHRoaXMuZ2V0VGltZVpvbmUoKSxcbiAgICAgIHRoaXMuc3RhdGUuZmlzY2FsWWVhclN0YXJ0TW9udGgsXG4gICAgICB0aGlzLnN0YXRlLlVOU0FGRV9ub3dEZWxheVxuICAgICk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXRTdGF0ZSh1cGRhdGUpO1xuICB9XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgZHVyYXRpb24gb2YgdGhlIHRpbWUgcmFuZ2UgZnJvbSB0aW1lLXRpbWUud2luZG93LzIgdG8gdGltZSt0aW1lLndpbmRvdy8yLiBCb3RoIGJlIHNwZWNpZmllZCBpbiBtcy4gRm9yIGV4YW1wbGUgP3RpbWU9MTUwMDAwMDAwMDAwMCZ0aW1lLndpbmRvdz0xMDAwMCByZXN1bHRzIGluIGEgMTAtc2Vjb25kIHRpbWUgcmFuZ2UgZnJvbSAxNDk5OTk5OTk1MDAwIHRvIDE1MDAwMDAwMDUwMDBgLlxuICogQHBhcmFtIHRpbWUgLSB0aW1lIGluIG1zXG4gKiBAcGFyYW0gdGltZVdpbmRvdyAtIHRpbWUgd2luZG93IGluIG1zIG9yIGludGVydmFsIHN0cmluZ1xuICovXG5mdW5jdGlvbiBnZXRUaW1lV2luZG93KHRpbWU6IHN0cmluZywgdGltZVdpbmRvdzogc3RyaW5nKSB7XG4gIC8vIFBhcnNlIHRoZSB0aW1lLCBhc3N1bWluZyBpdCBjb3VsZCBiZSBhbiBJU08gc3RyaW5nIG9yIGEgbnVtYmVyIGluIG1pbGxpc2Vjb25kc1xuICBjb25zdCB2YWx1ZVRpbWUgPSBpc05hTihEYXRlLnBhcnNlKHRpbWUpKSA/IHBhcnNlSW50KHRpbWUsIDEwKSA6IERhdGUucGFyc2UodGltZSk7XG5cbiAgbGV0IHRpbWVXaW5kb3dNcztcblxuICBpZiAodGltZVdpbmRvdy5tYXRjaCgvXlxcZCskLykgJiYgcGFyc2VJbnQodGltZVdpbmRvdywgMTApKSB7XG4gICAgLy8gd2hlbiB0aW1lIHdpbmRvdyBpcyBzcGVjaWZpZWQgaW4gbXNcbiAgICB0aW1lV2luZG93TXMgPSBwYXJzZUludCh0aW1lV2luZG93LCAxMCk7XG4gIH0gZWxzZSB7XG4gICAgdGltZVdpbmRvd01zID0gcmFuZ2VVdGlsLmludGVydmFsVG9Ncyh0aW1lV2luZG93KTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZnJvbTogdG9VdGModmFsdWVUaW1lIC0gdGltZVdpbmRvd01zIC8gMikudG9JU09TdHJpbmcoKSxcbiAgICB0bzogdG9VdGModmFsdWVUaW1lICsgdGltZVdpbmRvd01zIC8gMikudG9JU09TdHJpbmcoKSxcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBYU8sTUFBTSx1QkFBdUIsZUFBbUUsQ0FBQTtBQUFBLEVBRzlGLFdBQUEsQ0FBWSxLQUFzQyxHQUFBLEVBQUksRUFBQTtBQWhCL0QsSUFBQSxJQUFBLEVBQUEsQ0FBQTtBQWlCSSxJQUFNLE1BQUEsSUFBQSxHQUFPLE1BQU0sSUFBUSxJQUFBLE9BQUEsQ0FBUSxNQUFNLElBQUksQ0FBQSxHQUFJLE1BQU0sSUFBTyxHQUFBLFFBQUEsQ0FBQTtBQUM5RCxJQUFNLE1BQUEsRUFBQSxHQUFLLE1BQU0sRUFBTSxJQUFBLE9BQUEsQ0FBUSxNQUFNLEVBQUUsQ0FBQSxHQUFJLE1BQU0sRUFBSyxHQUFBLEtBQUEsQ0FBQTtBQUV0RCxJQUFBLE1BQU0sV0FBVyxLQUFNLENBQUEsUUFBQSxDQUFBO0FBQ3ZCLElBQUEsTUFBTSxLQUFRLEdBQUEsaUJBQUE7QUFBQSxNQUNaLElBQUE7QUFBQSxNQUNBLEVBQUE7QUFBQSxNQUNBLFlBQVksV0FBWSxFQUFBO0FBQUEsTUFDeEIsS0FBTSxDQUFBLG9CQUFBO0FBQUEsTUFDTixLQUFNLENBQUEsZUFBQTtBQUFBLEtBQ1IsQ0FBQTtBQUNBLElBQUEsTUFBTSxxQkFBb0IsRUFBTSxHQUFBLEtBQUEsQ0FBQSxpQkFBQSxLQUFOLElBQTJCLEdBQUEsRUFBQSxHQUFBLEVBQUUsU0FBUyxFQUFHLEVBQUEsQ0FBQTtBQUNuRSxJQUFBLEtBQUEsQ0FBTSxpQkFBRSxJQUFNLEVBQUEsRUFBQSxFQUFJLFFBQVUsRUFBQSxLQUFBLEVBQU8scUJBQXNCLEtBQU8sQ0FBQSxDQUFBLENBQUE7QUFmbEUsSUFBQSxJQUFBLENBQVUsUUFBVyxHQUFBLElBQUksd0JBQXlCLENBQUEsSUFBQSxFQUFNLEVBQUUsSUFBQSxFQUFNLENBQUMsTUFBQSxFQUFRLElBQU0sRUFBQSxVQUFBLEVBQVksTUFBUSxFQUFBLGFBQWEsR0FBRyxDQUFBLENBQUE7QUE4SG5ILElBQU8sSUFBQSxDQUFBLGlCQUFBLEdBQW9CLENBQUMsU0FBeUIsS0FBQTtBQUNuRCxNQUFBLE1BQU0sU0FBdUMsRUFBQyxDQUFBO0FBRTlDLE1BQUEsSUFBSSxPQUFPLFNBQUEsQ0FBVSxHQUFJLENBQUEsSUFBQSxLQUFTLFFBQVUsRUFBQTtBQUMxQyxRQUFPLE1BQUEsQ0FBQSxJQUFBLEdBQU8sVUFBVSxHQUFJLENBQUEsSUFBQSxDQUFBO0FBQUEsT0FDdkIsTUFBQTtBQUNMLFFBQUEsTUFBQSxDQUFPLElBQU8sR0FBQSxTQUFBLENBQVUsR0FBSSxDQUFBLElBQUEsQ0FBSyxXQUFZLEVBQUEsQ0FBQTtBQUFBLE9BQy9DO0FBRUEsTUFBQSxJQUFJLE9BQU8sU0FBQSxDQUFVLEdBQUksQ0FBQSxFQUFBLEtBQU8sUUFBVSxFQUFBO0FBQ3hDLFFBQU8sTUFBQSxDQUFBLEVBQUEsR0FBSyxVQUFVLEdBQUksQ0FBQSxFQUFBLENBQUE7QUFBQSxPQUNyQixNQUFBO0FBQ0wsUUFBQSxNQUFBLENBQU8sRUFBSyxHQUFBLFNBQUEsQ0FBVSxHQUFJLENBQUEsRUFBQSxDQUFHLFdBQVksRUFBQSxDQUFBO0FBQUEsT0FDM0M7QUFFQSxNQUFBLE1BQUEsQ0FBTyxLQUFRLEdBQUEsaUJBQUE7QUFBQSxRQUNiLE1BQU8sQ0FBQSxJQUFBO0FBQUEsUUFDUCxNQUFPLENBQUEsRUFBQTtBQUFBLFFBQ1AsS0FBSyxXQUFZLEVBQUE7QUFBQSxRQUNqQixLQUFLLEtBQU0sQ0FBQSxvQkFBQTtBQUFBLFFBQ1gsS0FBSyxLQUFNLENBQUEsZUFBQTtBQUFBLE9BQ2IsQ0FBQTtBQUdBLE1BQUksSUFBQSxNQUFBLENBQU8sU0FBUyxJQUFLLENBQUEsS0FBQSxDQUFNLFFBQVEsTUFBTyxDQUFBLEVBQUEsS0FBTyxJQUFLLENBQUEsS0FBQSxDQUFNLEVBQUksRUFBQTtBQUNsRSxRQUFLLElBQUEsQ0FBQSxRQUFBLENBQVMsNEJBQTRCLE1BQU07QUFDOUMsVUFBQSxJQUFBLENBQUssU0FBUyxNQUFNLENBQUEsQ0FBQTtBQUFBLFNBQ3JCLENBQUEsQ0FBQTtBQUFBLE9BQ0g7QUFBQSxLQUNGLENBQUE7QUFFQSxJQUFPLElBQUEsQ0FBQSxnQkFBQSxHQUFtQixDQUFDLFFBQXVCLEtBQUE7QUFDaEQsTUFBSyxJQUFBLENBQUEsUUFBQSxDQUFTLDRCQUE0QixNQUFNO0FBQzlDLFFBQUssSUFBQSxDQUFBLFFBQUEsQ0FBUyxFQUFFLFFBQUEsRUFBVSxDQUFBLENBQUE7QUFBQSxPQUMzQixDQUFBLENBQUE7QUFBQSxLQUNILENBQUE7QUFFQSxJQUFBLElBQUEsQ0FBTyxZQUFZLE1BQU07QUFDdkIsTUFBQSxJQUFBLENBQUssUUFBUyxDQUFBO0FBQUEsUUFDWixLQUFPLEVBQUEsaUJBQUE7QUFBQSxVQUNMLEtBQUssS0FBTSxDQUFBLElBQUE7QUFBQSxVQUNYLEtBQUssS0FBTSxDQUFBLEVBQUE7QUFBQSxVQUNYLEtBQUssV0FBWSxFQUFBO0FBQUEsVUFDakIsS0FBSyxLQUFNLENBQUEsb0JBQUE7QUFBQSxVQUNYLEtBQUssS0FBTSxDQUFBLGVBQUE7QUFBQSxTQUNiO0FBQUEsT0FDRCxDQUFBLENBQUE7QUFFRCxNQUFBLElBQUEsQ0FBSyxZQUFhLENBQUEsSUFBSSxZQUFhLEVBQUEsRUFBRyxJQUFJLENBQUEsQ0FBQTtBQUFBLEtBQzVDLENBQUE7QUE5SkUsSUFBQSxJQUFBLENBQUssb0JBQXFCLENBQUEsSUFBQSxDQUFLLFdBQVksQ0FBQSxJQUFBLENBQUssSUFBSSxDQUFDLENBQUEsQ0FBQTtBQUFBLEdBQ3ZEO0FBQUEsRUFFUSxXQUFjLEdBQUE7QUFFcEIsSUFBSSxJQUFBLENBQUMsSUFBSyxDQUFBLEtBQUEsQ0FBTSxRQUFVLEVBQUE7QUFDeEIsTUFBTSxNQUFBLGNBQUEsR0FBaUIsS0FBSyxpQkFBa0IsRUFBQSxDQUFBO0FBQzlDLE1BQUEsSUFBSSxtQkFBbUIsSUFBTSxFQUFBO0FBQzNCLFFBQUEsSUFBQSxDQUFLLEtBQU0sQ0FBQSxHQUFBO0FBQUEsVUFDVCxjQUFlLENBQUEsZ0JBQUEsQ0FBaUIsQ0FBQyxDQUFBLEVBQUcsQ0FBTSxLQUFBO0FBQ3hDLFlBQUEsSUFBSSxFQUFFLFFBQWEsS0FBQSxLQUFBLENBQUEsSUFBYSxDQUFFLENBQUEsUUFBQSxLQUFhLEVBQUUsUUFBVSxFQUFBO0FBQ3pELGNBQUEsSUFBQSxDQUFLLFFBQVMsQ0FBQTtBQUFBLGdCQUNaLEtBQU8sRUFBQSxpQkFBQTtBQUFBLGtCQUNMLEtBQUssS0FBTSxDQUFBLElBQUE7QUFBQSxrQkFDWCxLQUFLLEtBQU0sQ0FBQSxFQUFBO0FBQUEsa0JBQ1gsZUFBZSxXQUFZLEVBQUE7QUFBQSxrQkFDM0IsS0FBSyxLQUFNLENBQUEsb0JBQUE7QUFBQSxrQkFDWCxLQUFLLEtBQU0sQ0FBQSxlQUFBO0FBQUEsaUJBQ2I7QUFBQSxlQUNELENBQUEsQ0FBQTtBQUFBLGFBQ0g7QUFBQSxXQUNELENBQUE7QUFBQSxTQUNILENBQUE7QUFBQSxPQUNGO0FBQUEsS0FDRjtBQUVBLElBQUEsSUFBSSxVQUFVLG1CQUFvQixDQUFBLElBQUEsQ0FBSyxLQUFNLENBQUEsS0FBQSxDQUFNLEdBQUcsQ0FBRyxFQUFBO0FBQ3ZELE1BQUEsSUFBQSxDQUFLLGNBQWUsRUFBQSxDQUFBO0FBQUEsS0FDdEI7QUFBQSxHQUNGO0FBQUEsRUFFUSxjQUFpQixHQUFBO0FBOUQzQixJQUFBLElBQUEsRUFBQSxFQUFBLEVBQUEsRUFBQSxFQUFBLEVBQUEsRUFBQSxDQUFBO0FBK0RJLElBQUksSUFBQSxFQUFBLENBQUE7QUFDSixJQUFBLElBQUEsQ0FBQSxDQUFJLGdCQUFLLEtBQUwsS0FBQSxJQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxDQUFZLGlCQUFaLEtBQUEsSUFBQSxHQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsQ0FBK0IsYUFBWSxLQUFXLENBQUEsRUFBQTtBQUN4RCxNQUFBLEVBQUEsR0FBSyxJQUFLLENBQUEsMEJBQUEsQ0FBMkIsSUFBSyxDQUFBLEtBQUEsQ0FBTSxrQkFBa0IsT0FBTyxDQUFBLENBQUE7QUFBQSxLQUMzRTtBQUNBLElBQUEsSUFBQSxDQUFBLENBQUksZ0JBQUssS0FBTCxLQUFBLElBQUEsR0FBQSxLQUFBLENBQUEsR0FBQSxFQUFBLENBQVksaUJBQVosS0FBQSxJQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxDQUErQixhQUFZLEtBQVcsQ0FBQSxFQUFBO0FBQ3hELE1BQUEsRUFBQSxHQUFLLEtBQUssR0FBSSxDQUFBLElBQUEsQ0FBSyxNQUFNLGlCQUFrQixDQUFBLE9BQUEsRUFBUyxrQkFBTSxRQUFRLENBQUEsQ0FBQTtBQUFBLEtBQ3BFO0FBQ0EsSUFBQSxJQUFJLE9BQU8sS0FBVyxDQUFBLEVBQUE7QUFDcEIsTUFBQSxJQUFBLENBQUssYUFBYSxFQUFFLENBQUEsQ0FBQTtBQUFBLEtBQ3RCO0FBQUEsR0FDRjtBQUFBLEVBS1EsaUJBQW9CLEdBQUE7QUFDMUIsSUFBQSxJQUFJLENBQUMsSUFBSyxDQUFBLE1BQUEsSUFBVSxDQUFDLElBQUEsQ0FBSyxPQUFPLE1BQVEsRUFBQTtBQUN2QyxNQUFPLE9BQUEsSUFBQSxDQUFBO0FBQUEsS0FDVDtBQUVBLElBQUEsTUFBTSxTQUFTLFVBQStCLENBQUEsSUFBQSxDQUFLLE1BQU8sQ0FBQSxNQUFBLEVBQVEsQ0FBQyxDQUFNLEtBQUE7QUFDdkUsTUFBQSxJQUFJLEVBQUUsS0FBTSxDQUFBLFVBQUEsSUFBYyxFQUFFLEtBQU0sQ0FBQSxVQUFBLENBQVcsTUFBTSxRQUFVLEVBQUE7QUFDM0QsUUFBQSxPQUFPLEVBQUUsS0FBTSxDQUFBLFVBQUEsQ0FBQTtBQUFBLE9BQ2pCO0FBQ0EsTUFBTyxPQUFBLEtBQUEsQ0FBQSxDQUFBO0FBQUEsS0FDUixDQUFBLENBQUE7QUFFRCxJQUFBLElBQUksQ0FBQyxNQUFRLEVBQUE7QUFDWCxNQUFPLE9BQUEsSUFBQSxDQUFBO0FBQUEsS0FDVDtBQUVBLElBQU8sT0FBQSxNQUFBLENBQUE7QUFBQSxHQUNUO0FBQUEsRUFPUSxhQUFhLGNBQXdCLEVBQUE7QUF0Ry9DLElBQUEsSUFBQSxFQUFBLENBQUE7QUF1R0ksSUFBQSxNQUFNLEtBQVEsR0FBQSxpQkFBQTtBQUFBLE1BQ1osS0FBSyxLQUFNLENBQUEsSUFBQTtBQUFBLE1BQ1gsS0FBSyxLQUFNLENBQUEsRUFBQTtBQUFBLE1BQUEsQ0FDWCxFQUFLLEdBQUEsSUFBQSxDQUFBLEtBQUEsQ0FBTSxRQUFYLEtBQUEsSUFBQSxHQUFBLEVBQUEsR0FBdUIsV0FBWSxFQUFBO0FBQUEsTUFDbkMsS0FBSyxLQUFNLENBQUEsb0JBQUE7QUFBQSxNQUNYLEtBQUssS0FBTSxDQUFBLGVBQUE7QUFBQSxLQUNiLENBQUE7QUFFQSxJQUFNLE1BQUEsSUFBQSxHQUFPLE1BQU0sRUFBRyxDQUFBLElBQUEsQ0FBSyxLQUFLLEtBQU0sQ0FBQSxLQUFBLENBQU0sSUFBSSxjQUFjLENBQUEsQ0FBQTtBQUM5RCxJQUFBLElBQUksUUFBUSxjQUFnQixFQUFBO0FBQzFCLE1BQUEsSUFBQSxDQUFLLFFBQVMsQ0FBQTtBQUFBLFFBQ1osS0FBQTtBQUFBLE9BQ0QsQ0FBQSxDQUFBO0FBQUEsS0FDSDtBQUFBLEdBQ0Y7QUFBQSxFQUVRLDJCQUEyQixPQUF5QixFQUFBO0FBQzFELElBQU0sTUFBQSxVQUFBLEdBQWEsSUFBSyxDQUFBLEtBQUEsQ0FBTSxLQUFNLENBQUEsRUFBQSxDQUFHLEtBQUssSUFBSyxDQUFBLEtBQUEsQ0FBTSxLQUFNLENBQUEsSUFBQSxFQUFNLGNBQWMsQ0FBQSxDQUFBO0FBQ2pGLElBQU8sT0FBQSxJQUFBLENBQUssSUFBSyxDQUFBLFVBQUEsR0FBYSxPQUFPLENBQUEsQ0FBQTtBQUFBLEdBQ3ZDO0FBQUEsRUFFTyxXQUF3QixHQUFBO0FBRTdCLElBQUksSUFBQSxJQUFBLENBQUssTUFBTSxRQUFVLEVBQUE7QUFDdkIsTUFBQSxPQUFPLEtBQUssS0FBTSxDQUFBLFFBQUEsQ0FBQTtBQUFBLEtBQ3BCO0FBR0EsSUFBTSxNQUFBLGNBQUEsR0FBaUIsS0FBSyxpQkFBa0IsRUFBQSxDQUFBO0FBQzlDLElBQUEsSUFBSSxtQkFBbUIsSUFBTSxFQUFBO0FBQzNCLE1BQUEsT0FBTyxlQUFlLEtBQU0sQ0FBQSxRQUFBLENBQUE7QUFBQSxLQUM5QjtBQUdBLElBQUEsT0FBTyxXQUFZLEVBQUEsQ0FBQTtBQUFBLEdBQ3JCO0FBQUEsRUFxRE8sV0FBYyxHQUFBO0FBQ25CLElBQU0sTUFBQSxNQUFBLEdBQVMsZ0JBQWdCLGVBQWdCLEVBQUEsQ0FBQTtBQUMvQyxJQUFBLE1BQU0sU0FBa0MsR0FBQSxFQUFFLElBQU0sRUFBQSxJQUFBLENBQUssS0FBTSxDQUFBLElBQUEsRUFBTSxFQUFJLEVBQUEsSUFBQSxDQUFLLEtBQU0sQ0FBQSxFQUFBLEVBQUksUUFBVSxFQUFBLElBQUEsQ0FBSyxhQUFjLEVBQUEsQ0FBQTtBQUdqSCxJQUFJLElBQUEsTUFBQSxDQUFPLElBQVEsSUFBQSxNQUFBLENBQU8sYUFBZ0IsQ0FBQSxFQUFBO0FBQ3hDLE1BQUEsU0FBQSxDQUFVLElBQU8sR0FBQSxJQUFBLENBQUE7QUFDakIsTUFBQSxTQUFBLENBQVUsYUFBaUIsQ0FBQSxHQUFBLElBQUEsQ0FBQTtBQUFBLEtBQzdCO0FBRUEsSUFBTyxPQUFBLFNBQUEsQ0FBQTtBQUFBLEdBQ1Q7QUFBQSxFQUVPLGNBQWMsTUFBOEIsRUFBQTtBQTVNckQsSUFBQSxJQUFBLEVBQUEsRUFBQSxFQUFBLEVBQUEsRUFBQSxDQUFBO0FBNk1JLElBQUEsTUFBTSxTQUF1QyxFQUFDLENBQUE7QUFFOUMsSUFBSSxJQUFBLElBQUEsR0FBTyxhQUFjLENBQUEsTUFBQSxDQUFPLElBQUksQ0FBQSxDQUFBO0FBQ3BDLElBQUksSUFBQSxFQUFBLEdBQUssYUFBYyxDQUFBLE1BQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQTtBQUVoQyxJQUFJLElBQUEsTUFBQSxDQUFPLElBQVEsSUFBQSxNQUFBLENBQU8sYUFBZ0IsQ0FBQSxFQUFBO0FBQ3hDLE1BQU0sTUFBQSxJQUFBLEdBQU8sTUFBTSxPQUFRLENBQUEsTUFBQSxDQUFPLElBQUksQ0FBSSxHQUFBLE1BQUEsQ0FBTyxJQUFLLENBQUEsQ0FBQSxDQUFBLEdBQUssTUFBTyxDQUFBLElBQUEsQ0FBQTtBQUNsRSxNQUFNLE1BQUEsVUFBQSxHQUFhLE1BQU0sT0FBUSxDQUFBLE1BQUEsQ0FBTyxjQUFjLENBQUksR0FBQSxNQUFBLENBQU8sYUFBZSxDQUFBLENBQUEsQ0FBQSxDQUFBLEdBQUssTUFBTyxDQUFBLGFBQUEsQ0FBQSxDQUFBO0FBQzVGLE1BQU0sTUFBQSxTQUFBLEdBQVksYUFBYyxDQUFBLElBQUEsRUFBTSxVQUFVLENBQUEsQ0FBQTtBQUNoRCxNQUFBLElBQUksU0FBVSxDQUFBLElBQUEsSUFBUSxPQUFRLENBQUEsU0FBQSxDQUFVLElBQUksQ0FBRyxFQUFBO0FBQzdDLFFBQUEsSUFBQSxHQUFPLFNBQVUsQ0FBQSxJQUFBLENBQUE7QUFBQSxPQUNuQjtBQUVBLE1BQUEsSUFBSSxTQUFVLENBQUEsRUFBQSxJQUFNLE9BQVEsQ0FBQSxTQUFBLENBQVUsRUFBRSxDQUFHLEVBQUE7QUFDekMsUUFBQSxFQUFBLEdBQUssU0FBVSxDQUFBLEVBQUEsQ0FBQTtBQUFBLE9BQ2pCO0FBQUEsS0FDRjtBQUVBLElBQUksSUFBQSxJQUFBLElBQVEsT0FBUSxDQUFBLElBQUksQ0FBRyxFQUFBO0FBQ3pCLE1BQUEsTUFBQSxDQUFPLElBQU8sR0FBQSxJQUFBLENBQUE7QUFBQSxLQUNoQjtBQUVBLElBQUksSUFBQSxFQUFBLElBQU0sT0FBUSxDQUFBLEVBQUUsQ0FBRyxFQUFBO0FBQ3JCLE1BQUEsTUFBQSxDQUFPLEVBQUssR0FBQSxFQUFBLENBQUE7QUFBQSxLQUNkO0FBRUEsSUFBSSxJQUFBLE9BQU8sTUFBTyxDQUFBLFFBQUEsS0FBYSxRQUFVLEVBQUE7QUFDdkMsTUFBQSxNQUFBLENBQU8sUUFBVyxHQUFBLE1BQUEsQ0FBTyxRQUFhLEtBQUEsRUFBQSxHQUFLLE9BQU8sUUFBVyxHQUFBLEtBQUEsQ0FBQSxDQUFBO0FBQUEsS0FDL0Q7QUFFQSxJQUFBLElBQUksTUFBTyxDQUFBLElBQUEsQ0FBSyxNQUFNLENBQUEsQ0FBRSxXQUFXLENBQUcsRUFBQTtBQUNwQyxNQUFBLE9BQUE7QUFBQSxLQUNGO0FBRUEsSUFBQSxNQUFBLENBQU8sS0FBUSxHQUFBLGlCQUFBO0FBQUEsTUFBQSxDQUNiLEVBQU8sR0FBQSxNQUFBLENBQUEsSUFBQSxLQUFQLElBQWUsR0FBQSxFQUFBLEdBQUEsSUFBQSxDQUFLLEtBQU0sQ0FBQSxJQUFBO0FBQUEsTUFBQSxDQUMxQixFQUFPLEdBQUEsTUFBQSxDQUFBLEVBQUEsS0FBUCxJQUFhLEdBQUEsRUFBQSxHQUFBLElBQUEsQ0FBSyxLQUFNLENBQUEsRUFBQTtBQUFBLE1BQUEsQ0FDeEIsRUFBTyxHQUFBLE1BQUEsQ0FBQSxRQUFBLEtBQVAsSUFBbUIsR0FBQSxFQUFBLEdBQUEsSUFBQSxDQUFLLFdBQVksRUFBQTtBQUFBLE1BQ3BDLEtBQUssS0FBTSxDQUFBLG9CQUFBO0FBQUEsTUFDWCxLQUFLLEtBQU0sQ0FBQSxlQUFBO0FBQUEsS0FDYixDQUFBO0FBRUEsSUFBTyxPQUFBLElBQUEsQ0FBSyxTQUFTLE1BQU0sQ0FBQSxDQUFBO0FBQUEsR0FDN0I7QUFDRixDQUFBO0FBT0EsU0FBUyxhQUFBLENBQWMsTUFBYyxVQUFvQixFQUFBO0FBRXZELEVBQUEsTUFBTSxTQUFZLEdBQUEsS0FBQSxDQUFNLElBQUssQ0FBQSxLQUFBLENBQU0sSUFBSSxDQUFDLENBQUksR0FBQSxRQUFBLENBQVMsSUFBTSxFQUFBLEVBQUUsQ0FBSSxHQUFBLElBQUEsQ0FBSyxNQUFNLElBQUksQ0FBQSxDQUFBO0FBRWhGLEVBQUksSUFBQSxZQUFBLENBQUE7QUFFSixFQUFBLElBQUksV0FBVyxLQUFNLENBQUEsT0FBTyxLQUFLLFFBQVMsQ0FBQSxVQUFBLEVBQVksRUFBRSxDQUFHLEVBQUE7QUFFekQsSUFBZSxZQUFBLEdBQUEsUUFBQSxDQUFTLFlBQVksRUFBRSxDQUFBLENBQUE7QUFBQSxHQUNqQyxNQUFBO0FBQ0wsSUFBZSxZQUFBLEdBQUEsU0FBQSxDQUFVLGFBQWEsVUFBVSxDQUFBLENBQUE7QUFBQSxHQUNsRDtBQUVBLEVBQU8sT0FBQTtBQUFBLElBQ0wsTUFBTSxLQUFNLENBQUEsU0FBQSxHQUFZLFlBQWUsR0FBQSxDQUFDLEVBQUUsV0FBWSxFQUFBO0FBQUEsSUFDdEQsSUFBSSxLQUFNLENBQUEsU0FBQSxHQUFZLFlBQWUsR0FBQSxDQUFDLEVBQUUsV0FBWSxFQUFBO0FBQUEsR0FDdEQsQ0FBQTtBQUNGOzs7OyJ9