@grafana/scenes 6.7.0 → 6.8.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 (331) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/esm/components/layout/CSSGrid/SceneCSSGridItem.js +33 -0
  3. package/dist/esm/dist/esm/behaviors/CursorSync.js +76 -0
  4. package/dist/esm/dist/esm/behaviors/LiveNowTimer.js +44 -0
  5. package/dist/esm/dist/esm/behaviors/SceneQueryController.js +14 -0
  6. package/dist/esm/dist/esm/components/EmbeddedScene.js +59 -0
  7. package/dist/esm/dist/esm/components/NestedScene.js +95 -0
  8. package/dist/esm/dist/esm/components/SceneApp/SceneApp.js +27 -0
  9. package/dist/esm/dist/esm/components/SceneApp/SceneAppPage.js +176 -0
  10. package/dist/esm/dist/esm/components/SceneApp/SceneAppPageView.js +104 -0
  11. package/dist/esm/dist/esm/components/SceneApp/utils.js +42 -0
  12. package/dist/esm/dist/esm/components/SceneByFrameRepeater.js +41 -0
  13. package/dist/esm/dist/esm/components/SceneByVariableRepeater.js +55 -0
  14. package/dist/esm/dist/esm/components/SceneCanvasText.js +32 -0
  15. package/dist/esm/dist/esm/components/SceneControlsSpacer.js +17 -0
  16. package/dist/esm/dist/esm/components/SceneDebugger/DebugDetails.js +82 -0
  17. package/dist/esm/dist/esm/components/SceneDebugger/DebugTreeNode.js +72 -0
  18. package/dist/esm/dist/esm/components/SceneDebugger/SceneDebugger.js +77 -0
  19. package/dist/esm/dist/esm/components/SceneReactObject.js +34 -0
  20. package/dist/esm/dist/esm/components/SceneRefreshPicker.js +205 -0
  21. package/dist/esm/dist/esm/components/SceneTimePicker.js +139 -0
  22. package/dist/esm/dist/esm/components/SceneTimeRangeCompare.js +240 -0
  23. package/dist/esm/dist/esm/components/SceneToolbarButton.js +33 -0
  24. package/dist/esm/dist/esm/components/VizPanel/VizPanel.js +406 -0
  25. package/dist/esm/dist/esm/components/VizPanel/VizPanelExploreButton.js +44 -0
  26. package/dist/esm/dist/esm/components/VizPanel/VizPanelMenu.js +59 -0
  27. package/dist/esm/dist/esm/components/VizPanel/VizPanelRenderer.js +285 -0
  28. package/dist/esm/dist/esm/components/VizPanel/VizPanelSeriesLimit.js +45 -0
  29. package/dist/esm/dist/esm/components/VizPanel/colorSeriesConfigFactory.js +72 -0
  30. package/dist/esm/dist/esm/components/VizPanel/registerRuntimePanelPlugin.js +11 -0
  31. package/dist/esm/dist/esm/components/VizPanel/seriesVisibilityConfigFactory.js +164 -0
  32. package/dist/esm/dist/esm/components/layout/CSSGrid/SceneCSSGridLayout.js +124 -0
  33. package/dist/esm/dist/esm/components/layout/LazyLoader.js +103 -0
  34. package/dist/esm/dist/esm/components/layout/SceneFlexLayout.js +135 -0
  35. package/dist/esm/dist/esm/components/layout/grid/SceneGridItem.js +30 -0
  36. package/dist/esm/dist/esm/components/layout/grid/SceneGridLayout.js +283 -0
  37. package/dist/esm/dist/esm/components/layout/grid/SceneGridLayoutRenderer.js +178 -0
  38. package/dist/esm/dist/esm/components/layout/grid/SceneGridRow.js +190 -0
  39. package/dist/esm/dist/esm/components/layout/grid/constants.js +7 -0
  40. package/dist/esm/dist/esm/components/layout/grid/utils.js +36 -0
  41. package/dist/esm/dist/esm/components/layout/split/SplitLayout.js +17 -0
  42. package/dist/esm/dist/esm/components/layout/split/SplitLayoutRenderer.js +29 -0
  43. package/dist/esm/dist/esm/components/layout/split/Splitter.js +386 -0
  44. package/dist/esm/dist/esm/core/SceneComponentWrapper.js +57 -0
  45. package/dist/esm/dist/esm/core/SceneDataNode.js +43 -0
  46. package/dist/esm/dist/esm/core/SceneObjectBase.js +286 -0
  47. package/dist/esm/dist/esm/core/SceneObjectRef.js +32 -0
  48. package/dist/esm/dist/esm/core/SceneTimeRange.js +231 -0
  49. package/dist/esm/dist/esm/core/events.js +11 -0
  50. package/dist/esm/dist/esm/core/sceneGraph/getTimeRange.js +10 -0
  51. package/dist/esm/dist/esm/core/sceneGraph/index.js +25 -0
  52. package/dist/esm/dist/esm/core/sceneGraph/sceneGraph.js +178 -0
  53. package/dist/esm/dist/esm/core/sceneGraph/utils.js +64 -0
  54. package/dist/esm/dist/esm/core/types.js +15 -0
  55. package/dist/esm/dist/esm/querying/DataLayersMerger.js +46 -0
  56. package/dist/esm/dist/esm/querying/ExtraQueryProvider.js +6 -0
  57. package/dist/esm/dist/esm/querying/RuntimeDataSource.js +6 -0
  58. package/dist/esm/dist/esm/querying/SceneDataLayerSet.js +100 -0
  59. package/dist/esm/dist/esm/querying/SceneQueryRunner.js +468 -0
  60. package/dist/esm/dist/esm/querying/extraQueryProcessingOperator.js +46 -0
  61. package/dist/esm/dist/esm/querying/getEnrichedDataRequest.js +12 -0
  62. package/dist/esm/dist/esm/querying/layers/SceneDataLayerBase.js +112 -0
  63. package/dist/esm/dist/esm/querying/layers/SceneDataLayerControls.js +51 -0
  64. package/dist/esm/dist/esm/querying/layers/annotations/AnnotationsDataLayer.js +130 -0
  65. package/dist/esm/dist/esm/querying/layers/annotations/filterAnnotations.js +85 -0
  66. package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationQuery.js +121 -0
  67. package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationsSupport.js +211 -0
  68. package/dist/esm/dist/esm/querying/layers/annotations/utils.js +77 -0
  69. package/dist/esm/dist/esm/querying/registerQueryWithController.js +41 -0
  70. package/dist/esm/dist/esm/services/SceneObjectUrlSyncConfig.js +30 -0
  71. package/dist/esm/dist/esm/services/UniqueUrlKeyMapper.js +45 -0
  72. package/dist/esm/dist/esm/services/UrlSyncManager.js +167 -0
  73. package/dist/esm/dist/esm/services/useUrlSync.js +29 -0
  74. package/dist/esm/dist/esm/services/utils.js +71 -0
  75. package/dist/esm/dist/esm/utils/ControlsLabel.js +107 -0
  76. package/dist/esm/dist/esm/utils/LoadingIndicator.js +19 -0
  77. package/dist/esm/dist/esm/utils/SafeSerializableSceneObject.js +39 -0
  78. package/dist/esm/dist/esm/utils/compatibility/setWindowGrafanaSceneContext.js +16 -0
  79. package/dist/esm/dist/esm/utils/date.js +15 -0
  80. package/dist/esm/dist/esm/utils/evaluateTimeRange.js +16 -0
  81. package/dist/esm/dist/esm/utils/explore.js +47 -0
  82. package/dist/esm/dist/esm/utils/getCompareSeriesRefId.js +4 -0
  83. package/dist/esm/dist/esm/utils/getDataSource.js +18 -0
  84. package/dist/esm/dist/esm/utils/getMessageFromError.js +24 -0
  85. package/dist/esm/dist/esm/utils/metricTree.js +53 -0
  86. package/dist/esm/dist/esm/utils/parseUrlParam.js +41 -0
  87. package/dist/esm/dist/esm/utils/utils.js +11 -0
  88. package/dist/esm/dist/esm/utils/wrapInSafeSerializableSceneObject.js +30 -0
  89. package/dist/esm/dist/esm/utils/writeSceneLog.js +12 -0
  90. package/dist/esm/dist/esm/variables/VariableDependencyConfig.js +150 -0
  91. package/dist/esm/dist/esm/variables/VariableValueRecorder.js +71 -0
  92. package/dist/esm/dist/esm/variables/adhoc/AdHocFilterBuilder.js +24 -0
  93. package/dist/esm/dist/esm/variables/adhoc/AdHocFilterRenderer.js +303 -0
  94. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +162 -0
  95. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +20 -0
  96. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +640 -0
  97. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +65 -0
  98. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +146 -0
  99. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +114 -0
  100. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +68 -0
  101. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/utils.js +146 -0
  102. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariable.js +289 -0
  103. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +76 -0
  104. package/dist/esm/dist/esm/variables/adhoc/getAdhocOptionSearcher.js +13 -0
  105. package/dist/esm/dist/esm/variables/adhoc/patchGetAdhocFilters.js +47 -0
  106. package/dist/esm/dist/esm/variables/components/VariableValueControl.js +23 -0
  107. package/dist/esm/dist/esm/variables/components/VariableValueInput.js +33 -0
  108. package/dist/esm/dist/esm/variables/components/VariableValueSelect.js +228 -0
  109. package/dist/esm/dist/esm/variables/components/VariableValueSelectors.js +72 -0
  110. package/dist/esm/dist/esm/variables/components/getOptionSearcher.js +15 -0
  111. package/dist/esm/dist/esm/variables/constants.js +9 -0
  112. package/dist/esm/dist/esm/variables/getEnrichedFiltersRequest.js +12 -0
  113. package/dist/esm/dist/esm/variables/groupby/GroupByVariable.js +259 -0
  114. package/dist/esm/dist/esm/variables/groupby/GroupByVariableUrlSyncHandler.js +63 -0
  115. package/dist/esm/dist/esm/variables/groupby/findActiveGroupByVariablesByUid.js +13 -0
  116. package/dist/esm/dist/esm/variables/interpolation/ScopedVarsVariable.js +40 -0
  117. package/dist/esm/dist/esm/variables/interpolation/defaults.js +21 -0
  118. package/dist/esm/dist/esm/variables/interpolation/fieldAccessorCache.js +13 -0
  119. package/dist/esm/dist/esm/variables/interpolation/formatRegistry.js +296 -0
  120. package/dist/esm/dist/esm/variables/interpolation/sceneInterpolator.js +87 -0
  121. package/dist/esm/dist/esm/variables/lookupVariable.js +20 -0
  122. package/dist/esm/dist/esm/variables/macros/AllVariablesMacro.js +57 -0
  123. package/dist/esm/dist/esm/variables/macros/contextMacros.js +43 -0
  124. package/dist/esm/dist/esm/variables/macros/dataMacros.js +134 -0
  125. package/dist/esm/dist/esm/variables/macros/index.js +26 -0
  126. package/dist/esm/dist/esm/variables/macros/templateProxies.js +51 -0
  127. package/dist/esm/dist/esm/variables/macros/timeMacros.js +86 -0
  128. package/dist/esm/dist/esm/variables/macros/types.js +11 -0
  129. package/dist/esm/dist/esm/variables/macros/urlMacros.js +56 -0
  130. package/dist/esm/dist/esm/variables/sets/SceneVariableSet.js +254 -0
  131. package/dist/esm/dist/esm/variables/types.js +11 -0
  132. package/dist/esm/dist/esm/variables/utils.js +172 -0
  133. package/dist/esm/dist/esm/variables/variants/ConstantVariable.js +38 -0
  134. package/dist/esm/dist/esm/variables/variants/CustomVariable.js +60 -0
  135. package/dist/esm/dist/esm/variables/variants/DataSourceVariable.js +88 -0
  136. package/dist/esm/dist/esm/variables/variants/IntervalVariable.js +117 -0
  137. package/dist/esm/dist/esm/variables/variants/MultiValueVariable.js +295 -0
  138. package/dist/esm/dist/esm/variables/variants/TestVariable.js +117 -0
  139. package/dist/esm/dist/esm/variables/variants/TextBoxVariable.js +61 -0
  140. package/dist/esm/dist/esm/variables/variants/query/QueryVariable.js +139 -0
  141. package/dist/esm/dist/esm/variables/variants/query/createQueryVariableRunner.js +129 -0
  142. package/dist/esm/dist/esm/variables/variants/query/guards.js +28 -0
  143. package/dist/esm/dist/esm/variables/variants/query/toMetricFindValues.js +96 -0
  144. package/dist/esm/dist/esm/variables/variants/query/utils.js +124 -0
  145. package/dist/esm/index.js +1 -1
  146. package/dist/esm/index.js.map +1 -1
  147. package/dist/esm/querying/DataProviderSharer.js +39 -0
  148. package/dist/esm/src/behaviors/ActWhenVariableChanged.js +27 -0
  149. package/dist/esm/src/behaviors/CursorSync.js +76 -0
  150. package/dist/esm/src/behaviors/LiveNowTimer.js +44 -0
  151. package/dist/esm/src/behaviors/SceneQueryController.js +60 -0
  152. package/dist/esm/src/behaviors/index.js +5 -0
  153. package/dist/esm/src/components/EmbeddedScene.js +59 -0
  154. package/dist/esm/src/components/NestedScene.js +95 -0
  155. package/dist/esm/src/components/SceneApp/SceneApp.js +37 -0
  156. package/dist/esm/src/components/SceneApp/SceneAppPage.js +176 -0
  157. package/dist/esm/src/components/SceneApp/SceneAppPageView.js +104 -0
  158. package/dist/esm/src/components/SceneApp/utils.js +42 -0
  159. package/dist/esm/src/components/SceneByFrameRepeater.js +41 -0
  160. package/dist/esm/src/components/SceneByVariableRepeater.js +55 -0
  161. package/dist/esm/src/components/SceneCanvasText.js +32 -0
  162. package/dist/esm/src/components/SceneControlsSpacer.js +17 -0
  163. package/dist/esm/src/components/SceneDebugger/DebugDetails.js +82 -0
  164. package/dist/esm/src/components/SceneDebugger/DebugTreeNode.js +72 -0
  165. package/dist/esm/src/components/SceneDebugger/SceneDebugger.js +77 -0
  166. package/dist/esm/src/components/SceneReactObject.js +34 -0
  167. package/dist/esm/src/components/SceneRefreshPicker.js +205 -0
  168. package/dist/esm/src/components/SceneTimePicker.js +139 -0
  169. package/dist/esm/src/components/SceneTimeRangeCompare.js +240 -0
  170. package/dist/esm/src/components/SceneToolbarButton.js +33 -0
  171. package/dist/esm/src/components/VizPanel/VizPanel.js +406 -0
  172. package/dist/esm/src/components/VizPanel/VizPanelExploreButton.js +44 -0
  173. package/dist/esm/src/components/VizPanel/VizPanelMenu.js +59 -0
  174. package/dist/esm/src/components/VizPanel/VizPanelRenderer.js +285 -0
  175. package/dist/esm/src/components/VizPanel/VizPanelSeriesLimit.js +45 -0
  176. package/dist/esm/src/components/VizPanel/colorSeriesConfigFactory.js +72 -0
  177. package/dist/esm/src/components/VizPanel/registerRuntimePanelPlugin.js +56 -0
  178. package/dist/esm/src/components/VizPanel/seriesVisibilityConfigFactory.js +164 -0
  179. package/dist/esm/src/components/layout/CSSGrid/SceneCSSGridLayout.js +124 -0
  180. package/dist/esm/src/components/layout/LazyLoader.js +103 -0
  181. package/dist/esm/src/components/layout/SceneFlexLayout.js +135 -0
  182. package/dist/esm/src/components/layout/grid/SceneGridItem.js +30 -0
  183. package/dist/esm/src/components/layout/grid/SceneGridLayout.js +283 -0
  184. package/dist/esm/src/components/layout/grid/SceneGridLayoutRenderer.js +178 -0
  185. package/dist/esm/src/components/layout/grid/SceneGridRow.js +190 -0
  186. package/dist/esm/src/components/layout/grid/constants.js +7 -0
  187. package/dist/esm/src/components/layout/grid/utils.js +36 -0
  188. package/dist/esm/src/components/layout/split/SplitLayout.js +17 -0
  189. package/dist/esm/src/components/layout/split/SplitLayoutRenderer.js +29 -0
  190. package/dist/esm/src/components/layout/split/Splitter.js +386 -0
  191. package/dist/esm/src/core/PanelBuilders/FieldConfigBuilder.js +100 -0
  192. package/dist/esm/src/core/PanelBuilders/FieldConfigBuilders.js +75 -0
  193. package/dist/esm/src/core/PanelBuilders/FieldConfigOverridesBuilder.js +75 -0
  194. package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilder.js +22 -0
  195. package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilders.js +85 -0
  196. package/dist/esm/src/core/PanelBuilders/StandardFieldConfigBuilders.js +52 -0
  197. package/dist/esm/src/core/PanelBuilders/VizConfigBuilder.js +78 -0
  198. package/dist/esm/src/core/PanelBuilders/VizConfigBuilders.js +114 -0
  199. package/dist/esm/src/core/PanelBuilders/VizPanelBuilder.js +162 -0
  200. package/dist/esm/src/core/PanelBuilders/index.js +116 -0
  201. package/dist/esm/src/core/SceneComponentWrapper.js +57 -0
  202. package/dist/esm/src/core/SceneDataNode.js +43 -0
  203. package/dist/esm/src/core/SceneObjectBase.js +286 -0
  204. package/dist/esm/src/core/SceneObjectRef.js +32 -0
  205. package/dist/esm/src/core/SceneTimeRange.js +231 -0
  206. package/dist/esm/src/core/SceneTimeRangeTransformerBase.js +35 -0
  207. package/dist/esm/src/core/SceneTimeZoneOverride.js +63 -0
  208. package/dist/esm/src/core/events.js +11 -0
  209. package/dist/esm/src/core/sceneGraph/getTimeRange.js +10 -0
  210. package/dist/esm/src/core/sceneGraph/index.js +25 -0
  211. package/dist/esm/src/core/sceneGraph/sceneGraph.js +178 -0
  212. package/dist/esm/src/core/sceneGraph/utils.js +64 -0
  213. package/dist/esm/src/core/types.js +15 -0
  214. package/dist/esm/src/index.js +108 -0
  215. package/dist/esm/src/querying/DataLayersMerger.js +46 -0
  216. package/dist/esm/src/querying/DataProviderProxy.js +37 -0
  217. package/dist/esm/src/querying/DataProviderSharer.js +108 -0
  218. package/dist/esm/src/querying/ExtraQueryProvider.js +6 -0
  219. package/dist/esm/src/querying/RuntimeDataSource.js +49 -0
  220. package/dist/esm/src/querying/SceneDataLayerSet.js +100 -0
  221. package/dist/esm/src/querying/SceneDataTransformer.js +178 -0
  222. package/dist/esm/src/querying/SceneQueryRunner.js +468 -0
  223. package/dist/esm/src/querying/extraQueryProcessingOperator.js +46 -0
  224. package/dist/esm/src/querying/getEnrichedDataRequest.js +12 -0
  225. package/dist/esm/src/querying/layers/SceneDataLayerBase.js +112 -0
  226. package/dist/esm/src/querying/layers/SceneDataLayerControls.js +51 -0
  227. package/dist/esm/src/querying/layers/annotations/AnnotationsDataLayer.js +130 -0
  228. package/dist/esm/src/querying/layers/annotations/filterAnnotations.js +85 -0
  229. package/dist/esm/src/querying/layers/annotations/standardAnnotationQuery.js +121 -0
  230. package/dist/esm/src/querying/layers/annotations/standardAnnotationsSupport.js +211 -0
  231. package/dist/esm/src/querying/layers/annotations/utils.js +77 -0
  232. package/dist/esm/src/querying/layers/index.js +2 -0
  233. package/dist/esm/src/querying/registerQueryWithController.js +41 -0
  234. package/dist/esm/src/services/SceneObjectUrlSyncConfig.js +30 -0
  235. package/dist/esm/src/services/UniqueUrlKeyMapper.js +45 -0
  236. package/dist/esm/src/services/UrlSyncContextProvider.js +17 -0
  237. package/dist/esm/src/services/UrlSyncManager.js +167 -0
  238. package/dist/esm/src/services/useUrlSync.js +29 -0
  239. package/dist/esm/src/services/utils.js +75 -0
  240. package/dist/esm/src/utils/ControlsLabel.js +107 -0
  241. package/dist/esm/src/utils/LoadingIndicator.js +19 -0
  242. package/dist/esm/src/utils/SafeSerializableSceneObject.js +39 -0
  243. package/dist/esm/src/utils/compatibility/setWindowGrafanaSceneContext.js +16 -0
  244. package/dist/esm/src/utils/date.js +15 -0
  245. package/dist/esm/src/utils/evaluateTimeRange.js +16 -0
  246. package/dist/esm/src/utils/explore.js +47 -0
  247. package/dist/esm/src/utils/getCompareSeriesRefId.js +4 -0
  248. package/dist/esm/src/utils/getDataSource.js +18 -0
  249. package/dist/esm/src/utils/getMessageFromError.js +24 -0
  250. package/dist/esm/src/utils/metricTree.js +53 -0
  251. package/dist/esm/src/utils/parseUrlParam.js +41 -0
  252. package/dist/esm/src/utils/utils.js +11 -0
  253. package/dist/esm/src/utils/wrapInSafeSerializableSceneObject.js +30 -0
  254. package/dist/esm/src/utils/writeSceneLog.js +12 -0
  255. package/dist/esm/src/variables/VariableDependencyConfig.js +150 -0
  256. package/dist/esm/src/variables/VariableValueRecorder.js +71 -0
  257. package/dist/esm/src/variables/adhoc/AdHocFilterBuilder.js +24 -0
  258. package/dist/esm/src/variables/adhoc/AdHocFilterRenderer.js +303 -0
  259. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +162 -0
  260. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +20 -0
  261. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +640 -0
  262. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +65 -0
  263. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +146 -0
  264. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +114 -0
  265. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +68 -0
  266. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/utils.js +146 -0
  267. package/dist/esm/src/variables/adhoc/AdHocFiltersVariable.js +289 -0
  268. package/dist/esm/src/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +76 -0
  269. package/dist/esm/src/variables/adhoc/getAdhocOptionSearcher.js +13 -0
  270. package/dist/esm/src/variables/adhoc/patchGetAdhocFilters.js +47 -0
  271. package/dist/esm/src/variables/components/VariableValueControl.js +23 -0
  272. package/dist/esm/src/variables/components/VariableValueInput.js +33 -0
  273. package/dist/esm/src/variables/components/VariableValueSelect.js +228 -0
  274. package/dist/esm/src/variables/components/VariableValueSelectors.js +72 -0
  275. package/dist/esm/src/variables/components/getOptionSearcher.js +15 -0
  276. package/dist/esm/src/variables/constants.js +9 -0
  277. package/dist/esm/src/variables/getEnrichedFiltersRequest.js +12 -0
  278. package/dist/esm/src/variables/groupby/GroupByVariable.js +259 -0
  279. package/dist/esm/src/variables/groupby/GroupByVariableUrlSyncHandler.js +63 -0
  280. package/dist/esm/src/variables/groupby/findActiveGroupByVariablesByUid.js +13 -0
  281. package/dist/esm/src/variables/interpolation/ScopedVarsVariable.js +40 -0
  282. package/dist/esm/src/variables/interpolation/defaults.js +21 -0
  283. package/dist/esm/src/variables/interpolation/fieldAccessorCache.js +13 -0
  284. package/dist/esm/src/variables/interpolation/formatRegistry.js +296 -0
  285. package/dist/esm/src/variables/interpolation/sceneInterpolator.js +87 -0
  286. package/dist/esm/src/variables/lookupVariable.js +20 -0
  287. package/dist/esm/src/variables/macros/AllVariablesMacro.js +57 -0
  288. package/dist/esm/src/variables/macros/contextMacros.js +43 -0
  289. package/dist/esm/src/variables/macros/dataMacros.js +134 -0
  290. package/dist/esm/src/variables/macros/index.js +35 -0
  291. package/dist/esm/src/variables/macros/templateProxies.js +51 -0
  292. package/dist/esm/src/variables/macros/timeMacros.js +86 -0
  293. package/dist/esm/src/variables/macros/types.js +11 -0
  294. package/dist/esm/src/variables/macros/urlMacros.js +56 -0
  295. package/dist/esm/src/variables/sets/SceneVariableSet.js +254 -0
  296. package/dist/esm/src/variables/types.js +11 -0
  297. package/dist/esm/src/variables/utils.js +172 -0
  298. package/dist/esm/src/variables/variants/ConstantVariable.js +38 -0
  299. package/dist/esm/src/variables/variants/CustomVariable.js +60 -0
  300. package/dist/esm/src/variables/variants/DataSourceVariable.js +88 -0
  301. package/dist/esm/src/variables/variants/IntervalVariable.js +117 -0
  302. package/dist/esm/src/variables/variants/JsonVariable.js +193 -0
  303. package/dist/esm/src/variables/variants/LocalValueVariable.js +56 -0
  304. package/dist/esm/src/variables/variants/MultiValueVariable.js +295 -0
  305. package/dist/esm/src/variables/variants/TestVariable.js +117 -0
  306. package/dist/esm/src/variables/variants/TextBoxVariable.js +61 -0
  307. package/dist/esm/src/variables/variants/guards.js +27 -0
  308. package/dist/esm/src/variables/variants/query/QueryVariable.js +139 -0
  309. package/dist/esm/src/variables/variants/query/createQueryVariableRunner.js +129 -0
  310. package/dist/esm/src/variables/variants/query/guards.js +28 -0
  311. package/dist/esm/src/variables/variants/query/toMetricFindValues.js +96 -0
  312. package/dist/esm/src/variables/variants/query/utils.js +124 -0
  313. package/dist/esm/variables/components/VariableValueSelect.js +13 -9
  314. package/dist/esm/variables/components/VariableValueSelect.js.map +1 -1
  315. package/dist/esm/variables/variants/ConstantVariable.js +22 -0
  316. package/dist/esm/variables/variants/ConstantVariable.js.map +1 -1
  317. package/dist/esm/variables/variants/CustomVariable.js +3 -2
  318. package/dist/esm/variables/variants/CustomVariable.js.map +1 -1
  319. package/dist/esm/variables/variants/DataSourceVariable.js +3 -2
  320. package/dist/esm/variables/variants/DataSourceVariable.js.map +1 -1
  321. package/dist/esm/variables/variants/JsonVariable.js +96 -0
  322. package/dist/esm/variables/variants/TestVariable.js +3 -2
  323. package/dist/esm/variables/variants/TestVariable.js.map +1 -1
  324. package/dist/esm/variables/variants/json/JsonVariable.js +95 -0
  325. package/dist/esm/variables/variants/json/JsonVariableOptionProviders.js +70 -0
  326. package/dist/esm/variables/variants/query/QueryVariable.js +3 -2
  327. package/dist/esm/variables/variants/query/QueryVariable.js.map +1 -1
  328. package/dist/index.d.ts +14 -6
  329. package/dist/index.js +35 -13
  330. package/dist/index.js.map +1 -1
  331. package/package.json +2 -2
@@ -0,0 +1,303 @@
1
+ import React, { useState, useMemo } from 'react';
2
+ import { isMultiValueOperator } from './AdHocFiltersVariable.js';
3
+ import { useStyles2, Select, Field, Button } from '@grafana/ui';
4
+ import { cx, css } from '@emotion/css';
5
+ import { ControlsLabel } from '../../utils/ControlsLabel.js';
6
+ import { getAdhocOptionSearcher } from './getAdhocOptionSearcher.js';
7
+ import { handleOptionGroups } from '../utils.js';
8
+ import { OptionWithCheckbox } from '../components/VariableValueSelect.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
+ function keyLabelToOption(key, label) {
27
+ return key !== "" ? {
28
+ value: key,
29
+ label: label || key
30
+ } : null;
31
+ }
32
+ const filterNoOp = () => true;
33
+ function AdHocFilterRenderer({ filter, model }) {
34
+ var _a, _b, _c, _d, _e;
35
+ const styles = useStyles2(getStyles);
36
+ const [keys, setKeys] = useState([]);
37
+ const [values, setValues] = useState([]);
38
+ const [isKeysLoading, setIsKeysLoading] = useState(false);
39
+ const [isValuesLoading, setIsValuesLoading] = useState(false);
40
+ const [isKeysOpen, setIsKeysOpen] = useState(false);
41
+ const [isValuesOpen, setIsValuesOpen] = useState(false);
42
+ const [isOperatorOpen, setIsOperatorOpen] = useState(false);
43
+ const [valueInputValue, setValueInputValue] = useState("");
44
+ const [valueHasCustomValue, setValueHasCustomValue] = useState(false);
45
+ const [uncommittedValue, setUncommittedValue] = useState(
46
+ filter.values ? filter.values.map((value, index) => {
47
+ var _a2;
48
+ return keyLabelToOption(value, (_a2 = filter.valueLabels) == null ? void 0 : _a2[index]);
49
+ }) : []
50
+ );
51
+ const isMultiValue = isMultiValueOperator(filter.operator);
52
+ const keyValue = keyLabelToOption(filter.key, filter.keyLabel);
53
+ const valueValue = keyLabelToOption(filter.value, (_a = filter.valueLabels) == null ? void 0 : _a[0]);
54
+ const optionSearcher = useMemo(() => getAdhocOptionSearcher(values), [values]);
55
+ const onValueInputChange = (value, { action }) => {
56
+ if (action === "input-change") {
57
+ setValueInputValue(value);
58
+ }
59
+ return value;
60
+ };
61
+ const onOperatorChange = (v) => {
62
+ var _a2, _b2;
63
+ const existingOperator = filter.operator;
64
+ const newOperator = v.value;
65
+ const update = { operator: newOperator };
66
+ if (isMultiValueOperator(existingOperator) && !isMultiValueOperator(newOperator)) {
67
+ update.value = "";
68
+ update.valueLabels = [""];
69
+ update.values = void 0;
70
+ setUncommittedValue([]);
71
+ } else if (!isMultiValueOperator(existingOperator) && isMultiValueOperator(newOperator) && filter.value) {
72
+ update.values = [filter.value];
73
+ setUncommittedValue([
74
+ {
75
+ value: filter.value,
76
+ label: (_b2 = (_a2 = filter.valueLabels) == null ? void 0 : _a2[0]) != null ? _b2 : filter.value
77
+ }
78
+ ]);
79
+ }
80
+ model._updateFilter(filter, update);
81
+ };
82
+ const filteredValueOptions = useMemo(
83
+ () => handleOptionGroups(optionSearcher(valueInputValue)),
84
+ [optionSearcher, valueInputValue]
85
+ );
86
+ const multiValueProps = {
87
+ isMulti: true,
88
+ value: uncommittedValue,
89
+ components: {
90
+ Option: OptionWithCheckbox
91
+ },
92
+ hideSelectedOptions: false,
93
+ closeMenuOnSelect: false,
94
+ openMenuOnFocus: false,
95
+ onChange: (v) => {
96
+ setUncommittedValue(v);
97
+ if (v.some((value) => value.__isNew__)) {
98
+ setValueInputValue("");
99
+ }
100
+ },
101
+ onBlur: () => {
102
+ var _a2, _b2;
103
+ model._updateFilter(filter, {
104
+ value: (_b2 = (_a2 = uncommittedValue[0]) == null ? void 0 : _a2.value) != null ? _b2 : "",
105
+ values: uncommittedValue.map((option) => option.value),
106
+ valueLabels: uncommittedValue.map((option) => option.label)
107
+ });
108
+ }
109
+ };
110
+ const valueSelect = /* @__PURE__ */ React.createElement(Select, __spreadValues({
111
+ virtualized: true,
112
+ allowCustomValue: (_b = model.state.allowCustomValue) != null ? _b : true,
113
+ isValidNewOption: (inputValue) => inputValue.trim().length > 0,
114
+ allowCreateWhileLoading: true,
115
+ formatCreateLabel: (inputValue) => `Use custom value: ${inputValue}`,
116
+ disabled: model.state.readOnly,
117
+ className: cx(styles.value, isValuesOpen ? styles.widthWhenOpen : void 0),
118
+ width: "auto",
119
+ value: valueValue,
120
+ filterOption: filterNoOp,
121
+ placeholder: "Select value",
122
+ options: filteredValueOptions,
123
+ inputValue: valueInputValue,
124
+ onInputChange: onValueInputChange,
125
+ onChange: (v) => {
126
+ model._updateFilter(filter, {
127
+ value: v.value,
128
+ valueLabels: v.label ? [v.label] : [v.value]
129
+ });
130
+ if (valueHasCustomValue !== v.__isNew__) {
131
+ setValueHasCustomValue(v.__isNew__);
132
+ }
133
+ },
134
+ isOpen: isValuesOpen && !isValuesLoading,
135
+ isLoading: isValuesLoading,
136
+ openMenuOnFocus: true,
137
+ onOpenMenu: async () => {
138
+ var _a2;
139
+ setIsValuesLoading(true);
140
+ setIsValuesOpen(true);
141
+ const values2 = await model._getValuesFor(filter);
142
+ setIsValuesLoading(false);
143
+ setValues(values2);
144
+ if (valueHasCustomValue) {
145
+ setValueInputValue((_a2 = valueValue == null ? void 0 : valueValue.label) != null ? _a2 : "");
146
+ }
147
+ },
148
+ onCloseMenu: () => {
149
+ setIsValuesOpen(false);
150
+ setValueInputValue("");
151
+ }
152
+ }, isMultiValue && multiValueProps));
153
+ const keySelect = /* @__PURE__ */ React.createElement(Select, {
154
+ key: `${isValuesLoading ? "loading" : "loaded"}`,
155
+ disabled: model.state.readOnly,
156
+ className: cx(styles.key, isKeysOpen ? styles.widthWhenOpen : void 0),
157
+ width: "auto",
158
+ allowCustomValue: (_c = model.state.allowCustomValue) != null ? _c : true,
159
+ value: keyValue,
160
+ placeholder: "Select label",
161
+ options: handleOptionGroups(keys),
162
+ onChange: (v) => {
163
+ model._updateFilter(filter, {
164
+ key: v.value,
165
+ keyLabel: v.label,
166
+ value: "",
167
+ valueLabels: [""],
168
+ values: void 0
169
+ });
170
+ setUncommittedValue([]);
171
+ },
172
+ autoFocus: filter.key === "",
173
+ isOpen: isKeysOpen && !isKeysLoading,
174
+ isLoading: isKeysLoading,
175
+ onOpenMenu: async () => {
176
+ setIsKeysOpen(true);
177
+ setIsKeysLoading(true);
178
+ const keys2 = await model._getKeys(filter.key);
179
+ setIsKeysLoading(false);
180
+ setKeys(keys2);
181
+ },
182
+ onCloseMenu: () => {
183
+ setIsKeysOpen(false);
184
+ },
185
+ onBlur: () => {
186
+ if (filter.key === "") {
187
+ model._removeFilter(filter);
188
+ }
189
+ },
190
+ openMenuOnFocus: true
191
+ });
192
+ const operatorSelect = /* @__PURE__ */ React.createElement(Select, {
193
+ className: cx(styles.operator, {
194
+ [styles.widthWhenOpen]: isOperatorOpen
195
+ }),
196
+ value: filter.operator,
197
+ disabled: model.state.readOnly,
198
+ options: model._getOperators(),
199
+ onChange: onOperatorChange,
200
+ onOpenMenu: () => {
201
+ setIsOperatorOpen(true);
202
+ },
203
+ onCloseMenu: () => {
204
+ setIsOperatorOpen(false);
205
+ }
206
+ });
207
+ if (model.state.layout === "vertical") {
208
+ if (filter.key) {
209
+ const label = /* @__PURE__ */ React.createElement(ControlsLabel, {
210
+ layout: "vertical",
211
+ label: (_d = filter.key) != null ? _d : "",
212
+ onRemove: () => model._removeFilter(filter)
213
+ });
214
+ return /* @__PURE__ */ React.createElement(Field, {
215
+ label,
216
+ "data-testid": `AdHocFilter-${filter.key}`,
217
+ className: styles.field
218
+ }, /* @__PURE__ */ React.createElement("div", {
219
+ className: styles.wrapper
220
+ }, operatorSelect, valueSelect));
221
+ } else {
222
+ return /* @__PURE__ */ React.createElement(Field, {
223
+ label: "Select label",
224
+ "data-testid": `AdHocFilter-${filter.key}`,
225
+ className: styles.field
226
+ }, keySelect);
227
+ }
228
+ }
229
+ return /* @__PURE__ */ React.createElement("div", {
230
+ className: styles.wrapper,
231
+ "data-testid": `AdHocFilter-${filter.key}`
232
+ }, keySelect, operatorSelect, valueSelect, /* @__PURE__ */ React.createElement(Button, {
233
+ variant: "secondary",
234
+ "aria-label": "Remove filter",
235
+ title: "Remove filter",
236
+ className: styles.removeButton,
237
+ icon: "times",
238
+ "data-testid": `AdHocFilter-remove-${(_e = filter.key) != null ? _e : ""}`,
239
+ onClick: () => model._removeFilter(filter)
240
+ }));
241
+ }
242
+ const getStyles = (theme) => ({
243
+ field: css({
244
+ marginBottom: 0
245
+ }),
246
+ wrapper: css({
247
+ display: "flex",
248
+ "> *": {
249
+ "&:not(:first-child)": {
250
+ marginLeft: -1
251
+ },
252
+ "&:first-child": {
253
+ borderTopRightRadius: 0,
254
+ borderBottomRightRadius: 0
255
+ },
256
+ "&:last-child": {
257
+ borderTopLeftRadius: 0,
258
+ borderBottomLeftRadius: 0
259
+ },
260
+ "&:not(:first-child):not(:last-child)": {
261
+ borderRadius: 0
262
+ },
263
+ position: "relative",
264
+ zIndex: 0,
265
+ "&:hover": {
266
+ zIndex: 1
267
+ },
268
+ "&:focus-within": {
269
+ zIndex: 2
270
+ }
271
+ }
272
+ }),
273
+ widthWhenOpen: css({
274
+ minWidth: theme.spacing(16)
275
+ }),
276
+ value: css({
277
+ flexBasis: "content",
278
+ flexShrink: 1,
279
+ minWidth: "90px"
280
+ }),
281
+ key: css({
282
+ flexBasis: "content",
283
+ minWidth: "90px",
284
+ flexShrink: 1
285
+ }),
286
+ operator: css({
287
+ flexShrink: 0,
288
+ flexBasis: "content"
289
+ }),
290
+ removeButton: css({
291
+ paddingLeft: theme.spacing(3 / 2),
292
+ paddingRight: theme.spacing(3 / 2),
293
+ borderLeft: "none",
294
+ width: theme.spacing(3),
295
+ marginRight: theme.spacing(1),
296
+ boxSizing: "border-box",
297
+ position: "relative",
298
+ left: "1px"
299
+ })
300
+ });
301
+
302
+ export { AdHocFilterRenderer };
303
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWRIb2NGaWx0ZXJSZW5kZXJlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdmFyaWFibGVzL2FkaG9jL0FkSG9jRmlsdGVyUmVuZGVyZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgaXNNdWx0aVZhbHVlT3BlcmF0b3IgfSBmcm9tICcuL0FkSG9jRmlsdGVyc1ZhcmlhYmxlLmpzJztcbmltcG9ydCB7IHVzZVN0eWxlczIsIFNlbGVjdCwgRmllbGQsIEJ1dHRvbiB9IGZyb20gJ0BncmFmYW5hL3VpJztcbmltcG9ydCB7IGN4LCBjc3MgfSBmcm9tICdAZW1vdGlvbi9jc3MnO1xuaW1wb3J0IHsgQ29udHJvbHNMYWJlbCB9IGZyb20gJy4uLy4uL3V0aWxzL0NvbnRyb2xzTGFiZWwuanMnO1xuaW1wb3J0IHsgZ2V0QWRob2NPcHRpb25TZWFyY2hlciB9IGZyb20gJy4vZ2V0QWRob2NPcHRpb25TZWFyY2hlci5qcyc7XG5pbXBvcnQgeyBoYW5kbGVPcHRpb25Hcm91cHMgfSBmcm9tICcuLi91dGlscy5qcyc7XG5pbXBvcnQgeyBPcHRpb25XaXRoQ2hlY2tib3ggfSBmcm9tICcuLi9jb21wb25lbnRzL1ZhcmlhYmxlVmFsdWVTZWxlY3QuanMnO1xuXG52YXIgX19kZWZQcm9wID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wKG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wLmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyhiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bS5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG5mdW5jdGlvbiBrZXlMYWJlbFRvT3B0aW9uKGtleSwgbGFiZWwpIHtcbiAgcmV0dXJuIGtleSAhPT0gXCJcIiA/IHtcbiAgICB2YWx1ZToga2V5LFxuICAgIGxhYmVsOiBsYWJlbCB8fCBrZXlcbiAgfSA6IG51bGw7XG59XG5jb25zdCBmaWx0ZXJOb09wID0gKCkgPT4gdHJ1ZTtcbmZ1bmN0aW9uIEFkSG9jRmlsdGVyUmVuZGVyZXIoeyBmaWx0ZXIsIG1vZGVsIH0pIHtcbiAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZTtcbiAgY29uc3Qgc3R5bGVzID0gdXNlU3R5bGVzMihnZXRTdHlsZXMpO1xuICBjb25zdCBba2V5cywgc2V0S2V5c10gPSB1c2VTdGF0ZShbXSk7XG4gIGNvbnN0IFt2YWx1ZXMsIHNldFZhbHVlc10gPSB1c2VTdGF0ZShbXSk7XG4gIGNvbnN0IFtpc0tleXNMb2FkaW5nLCBzZXRJc0tleXNMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2lzVmFsdWVzTG9hZGluZywgc2V0SXNWYWx1ZXNMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2lzS2V5c09wZW4sIHNldElzS2V5c09wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbaXNWYWx1ZXNPcGVuLCBzZXRJc1ZhbHVlc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbaXNPcGVyYXRvck9wZW4sIHNldElzT3BlcmF0b3JPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3ZhbHVlSW5wdXRWYWx1ZSwgc2V0VmFsdWVJbnB1dFZhbHVlXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBbdmFsdWVIYXNDdXN0b21WYWx1ZSwgc2V0VmFsdWVIYXNDdXN0b21WYWx1ZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFt1bmNvbW1pdHRlZFZhbHVlLCBzZXRVbmNvbW1pdHRlZFZhbHVlXSA9IHVzZVN0YXRlKFxuICAgIGZpbHRlci52YWx1ZXMgPyBmaWx0ZXIudmFsdWVzLm1hcCgodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICB2YXIgX2EyO1xuICAgICAgcmV0dXJuIGtleUxhYmVsVG9PcHRpb24odmFsdWUsIChfYTIgPSBmaWx0ZXIudmFsdWVMYWJlbHMpID09IG51bGwgPyB2b2lkIDAgOiBfYTJbaW5kZXhdKTtcbiAgICB9KSA6IFtdXG4gICk7XG4gIGNvbnN0IGlzTXVsdGlWYWx1ZSA9IGlzTXVsdGlWYWx1ZU9wZXJhdG9yKGZpbHRlci5vcGVyYXRvcik7XG4gIGNvbnN0IGtleVZhbHVlID0ga2V5TGFiZWxUb09wdGlvbihmaWx0ZXIua2V5LCBmaWx0ZXIua2V5TGFiZWwpO1xuICBjb25zdCB2YWx1ZVZhbHVlID0ga2V5TGFiZWxUb09wdGlvbihmaWx0ZXIudmFsdWUsIChfYSA9IGZpbHRlci52YWx1ZUxhYmVscykgPT0gbnVsbCA/IHZvaWQgMCA6IF9hWzBdKTtcbiAgY29uc3Qgb3B0aW9uU2VhcmNoZXIgPSB1c2VNZW1vKCgpID0+IGdldEFkaG9jT3B0aW9uU2VhcmNoZXIodmFsdWVzKSwgW3ZhbHVlc10pO1xuICBjb25zdCBvblZhbHVlSW5wdXRDaGFuZ2UgPSAodmFsdWUsIHsgYWN0aW9uIH0pID0+IHtcbiAgICBpZiAoYWN0aW9uID09PSBcImlucHV0LWNoYW5nZVwiKSB7XG4gICAgICBzZXRWYWx1ZUlucHV0VmFsdWUodmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH07XG4gIGNvbnN0IG9uT3BlcmF0b3JDaGFuZ2UgPSAodikgPT4ge1xuICAgIHZhciBfYTIsIF9iMjtcbiAgICBjb25zdCBleGlzdGluZ09wZXJhdG9yID0gZmlsdGVyLm9wZXJhdG9yO1xuICAgIGNvbnN0IG5ld09wZXJhdG9yID0gdi52YWx1ZTtcbiAgICBjb25zdCB1cGRhdGUgPSB7IG9wZXJhdG9yOiBuZXdPcGVyYXRvciB9O1xuICAgIGlmIChpc011bHRpVmFsdWVPcGVyYXRvcihleGlzdGluZ09wZXJhdG9yKSAmJiAhaXNNdWx0aVZhbHVlT3BlcmF0b3IobmV3T3BlcmF0b3IpKSB7XG4gICAgICB1cGRhdGUudmFsdWUgPSBcIlwiO1xuICAgICAgdXBkYXRlLnZhbHVlTGFiZWxzID0gW1wiXCJdO1xuICAgICAgdXBkYXRlLnZhbHVlcyA9IHZvaWQgMDtcbiAgICAgIHNldFVuY29tbWl0dGVkVmFsdWUoW10pO1xuICAgIH0gZWxzZSBpZiAoIWlzTXVsdGlWYWx1ZU9wZXJhdG9yKGV4aXN0aW5nT3BlcmF0b3IpICYmIGlzTXVsdGlWYWx1ZU9wZXJhdG9yKG5ld09wZXJhdG9yKSAmJiBmaWx0ZXIudmFsdWUpIHtcbiAgICAgIHVwZGF0ZS52YWx1ZXMgPSBbZmlsdGVyLnZhbHVlXTtcbiAgICAgIHNldFVuY29tbWl0dGVkVmFsdWUoW1xuICAgICAgICB7XG4gICAgICAgICAgdmFsdWU6IGZpbHRlci52YWx1ZSxcbiAgICAgICAgICBsYWJlbDogKF9iMiA9IChfYTIgPSBmaWx0ZXIudmFsdWVMYWJlbHMpID09IG51bGwgPyB2b2lkIDAgOiBfYTJbMF0pICE9IG51bGwgPyBfYjIgOiBmaWx0ZXIudmFsdWVcbiAgICAgICAgfVxuICAgICAgXSk7XG4gICAgfVxuICAgIG1vZGVsLl91cGRhdGVGaWx0ZXIoZmlsdGVyLCB1cGRhdGUpO1xuICB9O1xuICBjb25zdCBmaWx0ZXJlZFZhbHVlT3B0aW9ucyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gaGFuZGxlT3B0aW9uR3JvdXBzKG9wdGlvblNlYXJjaGVyKHZhbHVlSW5wdXRWYWx1ZSkpLFxuICAgIFtvcHRpb25TZWFyY2hlciwgdmFsdWVJbnB1dFZhbHVlXVxuICApO1xuICBjb25zdCBtdWx0aVZhbHVlUHJvcHMgPSB7XG4gICAgaXNNdWx0aTogdHJ1ZSxcbiAgICB2YWx1ZTogdW5jb21taXR0ZWRWYWx1ZSxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICBPcHRpb246IE9wdGlvbldpdGhDaGVja2JveFxuICAgIH0sXG4gICAgaGlkZVNlbGVjdGVkT3B0aW9uczogZmFsc2UsXG4gICAgY2xvc2VNZW51T25TZWxlY3Q6IGZhbHNlLFxuICAgIG9wZW5NZW51T25Gb2N1czogZmFsc2UsXG4gICAgb25DaGFuZ2U6ICh2KSA9PiB7XG4gICAgICBzZXRVbmNvbW1pdHRlZFZhbHVlKHYpO1xuICAgICAgaWYgKHYuc29tZSgodmFsdWUpID0+IHZhbHVlLl9faXNOZXdfXykpIHtcbiAgICAgICAgc2V0VmFsdWVJbnB1dFZhbHVlKFwiXCIpO1xuICAgICAgfVxuICAgIH0sXG4gICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICB2YXIgX2EyLCBfYjI7XG4gICAgICBtb2RlbC5fdXBkYXRlRmlsdGVyKGZpbHRlciwge1xuICAgICAgICB2YWx1ZTogKF9iMiA9IChfYTIgPSB1bmNvbW1pdHRlZFZhbHVlWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX2EyLnZhbHVlKSAhPSBudWxsID8gX2IyIDogXCJcIixcbiAgICAgICAgdmFsdWVzOiB1bmNvbW1pdHRlZFZhbHVlLm1hcCgob3B0aW9uKSA9PiBvcHRpb24udmFsdWUpLFxuICAgICAgICB2YWx1ZUxhYmVsczogdW5jb21taXR0ZWRWYWx1ZS5tYXAoKG9wdGlvbikgPT4gb3B0aW9uLmxhYmVsKVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuICBjb25zdCB2YWx1ZVNlbGVjdCA9IC8qIEBfX1BVUkVfXyAqLyBSZWFjdC5jcmVhdGVFbGVtZW50KFNlbGVjdCwgX19zcHJlYWRWYWx1ZXMoe1xuICAgIHZpcnR1YWxpemVkOiB0cnVlLFxuICAgIGFsbG93Q3VzdG9tVmFsdWU6IChfYiA9IG1vZGVsLnN0YXRlLmFsbG93Q3VzdG9tVmFsdWUpICE9IG51bGwgPyBfYiA6IHRydWUsXG4gICAgaXNWYWxpZE5ld09wdGlvbjogKGlucHV0VmFsdWUpID0+IGlucHV0VmFsdWUudHJpbSgpLmxlbmd0aCA+IDAsXG4gICAgYWxsb3dDcmVhdGVXaGlsZUxvYWRpbmc6IHRydWUsXG4gICAgZm9ybWF0Q3JlYXRlTGFiZWw6IChpbnB1dFZhbHVlKSA9PiBgVXNlIGN1c3RvbSB2YWx1ZTogJHtpbnB1dFZhbHVlfWAsXG4gICAgZGlzYWJsZWQ6IG1vZGVsLnN0YXRlLnJlYWRPbmx5LFxuICAgIGNsYXNzTmFtZTogY3goc3R5bGVzLnZhbHVlLCBpc1ZhbHVlc09wZW4gPyBzdHlsZXMud2lkdGhXaGVuT3BlbiA6IHZvaWQgMCksXG4gICAgd2lkdGg6IFwiYXV0b1wiLFxuICAgIHZhbHVlOiB2YWx1ZVZhbHVlLFxuICAgIGZpbHRlck9wdGlvbjogZmlsdGVyTm9PcCxcbiAgICBwbGFjZWhvbGRlcjogXCJTZWxlY3QgdmFsdWVcIixcbiAgICBvcHRpb25zOiBmaWx0ZXJlZFZhbHVlT3B0aW9ucyxcbiAgICBpbnB1dFZhbHVlOiB2YWx1ZUlucHV0VmFsdWUsXG4gICAgb25JbnB1dENoYW5nZTogb25WYWx1ZUlucHV0Q2hhbmdlLFxuICAgIG9uQ2hhbmdlOiAodikgPT4ge1xuICAgICAgbW9kZWwuX3VwZGF0ZUZpbHRlcihmaWx0ZXIsIHtcbiAgICAgICAgdmFsdWU6IHYudmFsdWUsXG4gICAgICAgIHZhbHVlTGFiZWxzOiB2LmxhYmVsID8gW3YubGFiZWxdIDogW3YudmFsdWVdXG4gICAgICB9KTtcbiAgICAgIGlmICh2YWx1ZUhhc0N1c3RvbVZhbHVlICE9PSB2Ll9faXNOZXdfXykge1xuICAgICAgICBzZXRWYWx1ZUhhc0N1c3RvbVZhbHVlKHYuX19pc05ld19fKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGlzT3BlbjogaXNWYWx1ZXNPcGVuICYmICFpc1ZhbHVlc0xvYWRpbmcsXG4gICAgaXNMb2FkaW5nOiBpc1ZhbHVlc0xvYWRpbmcsXG4gICAgb3Blbk1lbnVPbkZvY3VzOiB0cnVlLFxuICAgIG9uT3Blbk1lbnU6IGFzeW5jICgpID0+IHtcbiAgICAgIHZhciBfYTI7XG4gICAgICBzZXRJc1ZhbHVlc0xvYWRpbmcodHJ1ZSk7XG4gICAgICBzZXRJc1ZhbHVlc09wZW4odHJ1ZSk7XG4gICAgICBjb25zdCB2YWx1ZXMyID0gYXdhaXQgbW9kZWwuX2dldFZhbHVlc0ZvcihmaWx0ZXIpO1xuICAgICAgc2V0SXNWYWx1ZXNMb2FkaW5nKGZhbHNlKTtcbiAgICAgIHNldFZhbHVlcyh2YWx1ZXMyKTtcbiAgICAgIGlmICh2YWx1ZUhhc0N1c3RvbVZhbHVlKSB7XG4gICAgICAgIHNldFZhbHVlSW5wdXRWYWx1ZSgoX2EyID0gdmFsdWVWYWx1ZSA9PSBudWxsID8gdm9pZCAwIDogdmFsdWVWYWx1ZS5sYWJlbCkgIT0gbnVsbCA/IF9hMiA6IFwiXCIpO1xuICAgICAgfVxuICAgIH0sXG4gICAgb25DbG9zZU1lbnU6ICgpID0+IHtcbiAgICAgIHNldElzVmFsdWVzT3BlbihmYWxzZSk7XG4gICAgICBzZXRWYWx1ZUlucHV0VmFsdWUoXCJcIik7XG4gICAgfVxuICB9LCBpc011bHRpVmFsdWUgJiYgbXVsdGlWYWx1ZVByb3BzKSk7XG4gIGNvbnN0IGtleVNlbGVjdCA9IC8qIEBfX1BVUkVfXyAqLyBSZWFjdC5jcmVhdGVFbGVtZW50KFNlbGVjdCwge1xuICAgIGtleTogYCR7aXNWYWx1ZXNMb2FkaW5nID8gXCJsb2FkaW5nXCIgOiBcImxvYWRlZFwifWAsXG4gICAgZGlzYWJsZWQ6IG1vZGVsLnN0YXRlLnJlYWRPbmx5LFxuICAgIGNsYXNzTmFtZTogY3goc3R5bGVzLmtleSwgaXNLZXlzT3BlbiA/IHN0eWxlcy53aWR0aFdoZW5PcGVuIDogdm9pZCAwKSxcbiAgICB3aWR0aDogXCJhdXRvXCIsXG4gICAgYWxsb3dDdXN0b21WYWx1ZTogKF9jID0gbW9kZWwuc3RhdGUuYWxsb3dDdXN0b21WYWx1ZSkgIT0gbnVsbCA/IF9jIDogdHJ1ZSxcbiAgICB2YWx1ZToga2V5VmFsdWUsXG4gICAgcGxhY2Vob2xkZXI6IFwiU2VsZWN0IGxhYmVsXCIsXG4gICAgb3B0aW9uczogaGFuZGxlT3B0aW9uR3JvdXBzKGtleXMpLFxuICAgIG9uQ2hhbmdlOiAodikgPT4ge1xuICAgICAgbW9kZWwuX3VwZGF0ZUZpbHRlcihmaWx0ZXIsIHtcbiAgICAgICAga2V5OiB2LnZhbHVlLFxuICAgICAgICBrZXlMYWJlbDogdi5sYWJlbCxcbiAgICAgICAgdmFsdWU6IFwiXCIsXG4gICAgICAgIHZhbHVlTGFiZWxzOiBbXCJcIl0sXG4gICAgICAgIHZhbHVlczogdm9pZCAwXG4gICAgICB9KTtcbiAgICAgIHNldFVuY29tbWl0dGVkVmFsdWUoW10pO1xuICAgIH0sXG4gICAgYXV0b0ZvY3VzOiBmaWx0ZXIua2V5ID09PSBcIlwiLFxuICAgIGlzT3BlbjogaXNLZXlzT3BlbiAmJiAhaXNLZXlzTG9hZGluZyxcbiAgICBpc0xvYWRpbmc6IGlzS2V5c0xvYWRpbmcsXG4gICAgb25PcGVuTWVudTogYXN5bmMgKCkgPT4ge1xuICAgICAgc2V0SXNLZXlzT3Blbih0cnVlKTtcbiAgICAgIHNldElzS2V5c0xvYWRpbmcodHJ1ZSk7XG4gICAgICBjb25zdCBrZXlzMiA9IGF3YWl0IG1vZGVsLl9nZXRLZXlzKGZpbHRlci5rZXkpO1xuICAgICAgc2V0SXNLZXlzTG9hZGluZyhmYWxzZSk7XG4gICAgICBzZXRLZXlzKGtleXMyKTtcbiAgICB9LFxuICAgIG9uQ2xvc2VNZW51OiAoKSA9PiB7XG4gICAgICBzZXRJc0tleXNPcGVuKGZhbHNlKTtcbiAgICB9LFxuICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgaWYgKGZpbHRlci5rZXkgPT09IFwiXCIpIHtcbiAgICAgICAgbW9kZWwuX3JlbW92ZUZpbHRlcihmaWx0ZXIpO1xuICAgICAgfVxuICAgIH0sXG4gICAgb3Blbk1lbnVPbkZvY3VzOiB0cnVlXG4gIH0pO1xuICBjb25zdCBvcGVyYXRvclNlbGVjdCA9IC8qIEBfX1BVUkVfXyAqLyBSZWFjdC5jcmVhdGVFbGVtZW50KFNlbGVjdCwge1xuICAgIGNsYXNzTmFtZTogY3goc3R5bGVzLm9wZXJhdG9yLCB7XG4gICAgICBbc3R5bGVzLndpZHRoV2hlbk9wZW5dOiBpc09wZXJhdG9yT3BlblxuICAgIH0pLFxuICAgIHZhbHVlOiBmaWx0ZXIub3BlcmF0b3IsXG4gICAgZGlzYWJsZWQ6IG1vZGVsLnN0YXRlLnJlYWRPbmx5LFxuICAgIG9wdGlvbnM6IG1vZGVsLl9nZXRPcGVyYXRvcnMoKSxcbiAgICBvbkNoYW5nZTogb25PcGVyYXRvckNoYW5nZSxcbiAgICBvbk9wZW5NZW51OiAoKSA9PiB7XG4gICAgICBzZXRJc09wZXJhdG9yT3Blbih0cnVlKTtcbiAgICB9LFxuICAgIG9uQ2xvc2VNZW51OiAoKSA9PiB7XG4gICAgICBzZXRJc09wZXJhdG9yT3BlbihmYWxzZSk7XG4gICAgfVxuICB9KTtcbiAgaWYgKG1vZGVsLnN0YXRlLmxheW91dCA9PT0gXCJ2ZXJ0aWNhbFwiKSB7XG4gICAgaWYgKGZpbHRlci5rZXkpIHtcbiAgICAgIGNvbnN0IGxhYmVsID0gLyogQF9fUFVSRV9fICovIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29udHJvbHNMYWJlbCwge1xuICAgICAgICBsYXlvdXQ6IFwidmVydGljYWxcIixcbiAgICAgICAgbGFiZWw6IChfZCA9IGZpbHRlci5rZXkpICE9IG51bGwgPyBfZCA6IFwiXCIsXG4gICAgICAgIG9uUmVtb3ZlOiAoKSA9PiBtb2RlbC5fcmVtb3ZlRmlsdGVyKGZpbHRlcilcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdC5jcmVhdGVFbGVtZW50KEZpZWxkLCB7XG4gICAgICAgIGxhYmVsLFxuICAgICAgICBcImRhdGEtdGVzdGlkXCI6IGBBZEhvY0ZpbHRlci0ke2ZpbHRlci5rZXl9YCxcbiAgICAgICAgY2xhc3NOYW1lOiBzdHlsZXMuZmllbGRcbiAgICAgIH0sIC8qIEBfX1BVUkVfXyAqLyBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBzdHlsZXMud3JhcHBlclxuICAgICAgfSwgb3BlcmF0b3JTZWxlY3QsIHZhbHVlU2VsZWN0KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QuY3JlYXRlRWxlbWVudChGaWVsZCwge1xuICAgICAgICBsYWJlbDogXCJTZWxlY3QgbGFiZWxcIixcbiAgICAgICAgXCJkYXRhLXRlc3RpZFwiOiBgQWRIb2NGaWx0ZXItJHtmaWx0ZXIua2V5fWAsXG4gICAgICAgIGNsYXNzTmFtZTogc3R5bGVzLmZpZWxkXG4gICAgICB9LCBrZXlTZWxlY3QpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgIGNsYXNzTmFtZTogc3R5bGVzLndyYXBwZXIsXG4gICAgXCJkYXRhLXRlc3RpZFwiOiBgQWRIb2NGaWx0ZXItJHtmaWx0ZXIua2V5fWBcbiAgfSwga2V5U2VsZWN0LCBvcGVyYXRvclNlbGVjdCwgdmFsdWVTZWxlY3QsIC8qIEBfX1BVUkVfXyAqLyBSZWFjdC5jcmVhdGVFbGVtZW50KEJ1dHRvbiwge1xuICAgIHZhcmlhbnQ6IFwic2Vjb25kYXJ5XCIsXG4gICAgXCJhcmlhLWxhYmVsXCI6IFwiUmVtb3ZlIGZpbHRlclwiLFxuICAgIHRpdGxlOiBcIlJlbW92ZSBmaWx0ZXJcIixcbiAgICBjbGFzc05hbWU6IHN0eWxlcy5yZW1vdmVCdXR0b24sXG4gICAgaWNvbjogXCJ0aW1lc1wiLFxuICAgIFwiZGF0YS10ZXN0aWRcIjogYEFkSG9jRmlsdGVyLXJlbW92ZS0keyhfZSA9IGZpbHRlci5rZXkpICE9IG51bGwgPyBfZSA6IFwiXCJ9YCxcbiAgICBvbkNsaWNrOiAoKSA9PiBtb2RlbC5fcmVtb3ZlRmlsdGVyKGZpbHRlcilcbiAgfSkpO1xufVxuY29uc3QgZ2V0U3R5bGVzID0gKHRoZW1lKSA9PiAoe1xuICBmaWVsZDogY3NzKHtcbiAgICBtYXJnaW5Cb3R0b206IDBcbiAgfSksXG4gIHdyYXBwZXI6IGNzcyh7XG4gICAgZGlzcGxheTogXCJmbGV4XCIsXG4gICAgXCI+ICpcIjoge1xuICAgICAgXCImOm5vdCg6Zmlyc3QtY2hpbGQpXCI6IHtcbiAgICAgICAgbWFyZ2luTGVmdDogLTFcbiAgICAgIH0sXG4gICAgICBcIiY6Zmlyc3QtY2hpbGRcIjoge1xuICAgICAgICBib3JkZXJUb3BSaWdodFJhZGl1czogMCxcbiAgICAgICAgYm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6IDBcbiAgICAgIH0sXG4gICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgIGJvcmRlclRvcExlZnRSYWRpdXM6IDAsXG4gICAgICAgIGJvcmRlckJvdHRvbUxlZnRSYWRpdXM6IDBcbiAgICAgIH0sXG4gICAgICBcIiY6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKVwiOiB7XG4gICAgICAgIGJvcmRlclJhZGl1czogMFxuICAgICAgfSxcbiAgICAgIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXG4gICAgICB6SW5kZXg6IDAsXG4gICAgICBcIiY6aG92ZXJcIjoge1xuICAgICAgICB6SW5kZXg6IDFcbiAgICAgIH0sXG4gICAgICBcIiY6Zm9jdXMtd2l0aGluXCI6IHtcbiAgICAgICAgekluZGV4OiAyXG4gICAgICB9XG4gICAgfVxuICB9KSxcbiAgd2lkdGhXaGVuT3BlbjogY3NzKHtcbiAgICBtaW5XaWR0aDogdGhlbWUuc3BhY2luZygxNilcbiAgfSksXG4gIHZhbHVlOiBjc3Moe1xuICAgIGZsZXhCYXNpczogXCJjb250ZW50XCIsXG4gICAgZmxleFNocmluazogMSxcbiAgICBtaW5XaWR0aDogXCI5MHB4XCJcbiAgfSksXG4gIGtleTogY3NzKHtcbiAgICBmbGV4QmFzaXM6IFwiY29udGVudFwiLFxuICAgIG1pbldpZHRoOiBcIjkwcHhcIixcbiAgICBmbGV4U2hyaW5rOiAxXG4gIH0pLFxuICBvcGVyYXRvcjogY3NzKHtcbiAgICBmbGV4U2hyaW5rOiAwLFxuICAgIGZsZXhCYXNpczogXCJjb250ZW50XCJcbiAgfSksXG4gIHJlbW92ZUJ1dHRvbjogY3NzKHtcbiAgICBwYWRkaW5nTGVmdDogdGhlbWUuc3BhY2luZygzIC8gMiksXG4gICAgcGFkZGluZ1JpZ2h0OiB0aGVtZS5zcGFjaW5nKDMgLyAyKSxcbiAgICBib3JkZXJMZWZ0OiBcIm5vbmVcIixcbiAgICB3aWR0aDogdGhlbWUuc3BhY2luZygzKSxcbiAgICBtYXJnaW5SaWdodDogdGhlbWUuc3BhY2luZygxKSxcbiAgICBib3hTaXppbmc6IFwiYm9yZGVyLWJveFwiLFxuICAgIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXG4gICAgbGVmdDogXCIxcHhcIlxuICB9KVxufSk7XG5cbmV4cG9ydCB7IEFkSG9jRmlsdGVyUmVuZGVyZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pUVdSSWIyTkdhV3gwWlhKU1pXNWtaWEpsY2k1cWN5SXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZMaTR2TGk0dmMzSmpMM1poY21saFlteGxjeTloWkdodll5OUJaRWh2WTBacGJIUmxjbEpsYm1SbGNtVnlMblJ6ZUNKZExDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ1VtVmhZM1FzSUhzZ2RYTmxUV1Z0Ynl3Z2RYTmxVM1JoZEdVZ2ZTQm1jbTl0SUNkeVpXRmpkQ2M3WEc1Y2JtbHRjRzl5ZENCN0lFRmtTRzlqUm1sc2RHVnljMVpoY21saFlteGxMQ0JCWkVodlkwWnBiSFJsY2xkcGRHaE1ZV0psYkhNc0lHbHpUWFZzZEdsV1lXeDFaVTl3WlhKaGRHOXlJSDBnWm5KdmJTQW5MaTlCWkVodlkwWnBiSFJsY25OV1lYSnBZV0pzWlNjN1hHNXBiWEJ2Y25RZ2V5QkhjbUZtWVc1aFZHaGxiV1V5TENCVFpXeGxZM1JoWW14bFZtRnNkV1VnZlNCbWNtOXRJQ2RBWjNKaFptRnVZUzlrWVhSaEp6dGNibWx0Y0c5eWRDQjdJRUoxZEhSdmJpd2dSbWxsYkdRc0lFbHVjSFYwUVdOMGFXOXVUV1YwWVN3Z1UyVnNaV04wTENCMWMyVlRkSGxzWlhNeUlIMGdabkp2YlNBblFHZHlZV1poYm1FdmRXa25PMXh1YVcxd2IzSjBJSHNnWTNOekxDQmplQ0I5SUdaeWIyMGdKMEJsYlc5MGFXOXVMMk56Y3ljN1hHNXBiWEJ2Y25RZ2V5QkRiMjUwY205c2MweGhZbVZzSUgwZ1puSnZiU0FuTGk0dkxpNHZkWFJwYkhNdlEyOXVkSEp2YkhOTVlXSmxiQ2M3WEc1cGJYQnZjblFnZXlCblpYUkJaR2h2WTA5d2RHbHZibE5sWVhKamFHVnlJSDBnWm5KdmJTQW5MaTluWlhSQlpHaHZZMDl3ZEdsdmJsTmxZWEpqYUdWeUp6dGNibWx0Y0c5eWRDQjdJR2hoYm1Sc1pVOXdkR2x2YmtkeWIzVndjeUI5SUdaeWIyMGdKeTR1TDNWMGFXeHpKenRjYm1sdGNHOXlkQ0I3SUU5d2RHbHZibGRwZEdoRGFHVmphMkp2ZUNCOUlHWnliMjBnSnk0dUwyTnZiWEJ2Ym1WdWRITXZWbUZ5YVdGaWJHVldZV3gxWlZObGJHVmpkQ2M3WEc1Y2JtbHVkR1Z5Wm1GalpTQlFjbTl3Y3lCN1hHNGdJR1pwYkhSbGNqb2dRV1JJYjJOR2FXeDBaWEpYYVhSb1RHRmlaV3h6TzF4dUlDQnRiMlJsYkRvZ1FXUkliMk5HYVd4MFpYSnpWbUZ5YVdGaWJHVTdYRzU5WEc1Y2JtWjFibU4wYVc5dUlHdGxlVXhoWW1Wc1ZHOVBjSFJwYjI0b2EyVjVPaUJ6ZEhKcGJtY3NJR3hoWW1Wc1B6b2djM1J5YVc1bktUb2dVMlZzWldOMFlXSnNaVlpoYkhWbElId2diblZzYkNCN1hHNGdJSEpsZEhWeWJpQnJaWGtnSVQwOUlDY25YRzRnSUNBZ1B5QjdYRzRnSUNBZ0lDQWdJSFpoYkhWbE9pQnJaWGtzWEc0Z0lDQWdJQ0FnSUd4aFltVnNPaUJzWVdKbGJDQjhmQ0JyWlhrc1hHNGdJQ0FnSUNCOVhHNGdJQ0FnT2lCdWRXeHNPMXh1ZlZ4dVhHNWpiMjV6ZENCbWFXeDBaWEpPYjA5d0lEMGdLQ2tnUFQ0Z2RISjFaVHRjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUVGa1NHOWpSbWxzZEdWeVVtVnVaR1Z5WlhJb2V5Qm1hV3gwWlhJc0lHMXZaR1ZzSUgwNklGQnliM0J6S1NCN1hHNGdJR052Ym5OMElITjBlV3hsY3lBOUlIVnpaVk4wZVd4bGN6SW9aMlYwVTNSNWJHVnpLVHRjYmx4dUlDQmpiMjV6ZENCYmEyVjVjeXdnYzJWMFMyVjVjMTBnUFNCMWMyVlRkR0YwWlR4VFpXeGxZM1JoWW14bFZtRnNkV1ZiWFQ0b1cxMHBPMXh1SUNCamIyNXpkQ0JiZG1Gc2RXVnpMQ0J6WlhSV1lXeDFaWE5kSUQwZ2RYTmxVM1JoZEdVOFUyVnNaV04wWVdKc1pWWmhiSFZsVzEwK0tGdGRLVHRjYmlBZ1kyOXVjM1FnVzJselMyVjVjMHh2WVdScGJtY3NJSE5sZEVselMyVjVjMHh2WVdScGJtZGRJRDBnZFhObFUzUmhkR1VvWm1Gc2MyVXBPMXh1SUNCamIyNXpkQ0JiYVhOV1lXeDFaWE5NYjJGa2FXNW5MQ0J6WlhSSmMxWmhiSFZsYzB4dllXUnBibWRkSUQwZ2RYTmxVM1JoZEdVb1ptRnNjMlVwTzF4dUlDQmpiMjV6ZENCYmFYTkxaWGx6VDNCbGJpd2djMlYwU1hOTFpYbHpUM0JsYmwwZ1BTQjFjMlZUZEdGMFpTaG1ZV3h6WlNrN1hHNGdJR052Ym5OMElGdHBjMVpoYkhWbGMwOXdaVzRzSUhObGRFbHpWbUZzZFdWelQzQmxibDBnUFNCMWMyVlRkR0YwWlNobVlXeHpaU2s3WEc0Z0lHTnZibk4wSUZ0cGMwOXdaWEpoZEc5eVQzQmxiaXdnYzJWMFNYTlBjR1Z5WVhSdmNrOXdaVzVkSUQwZ2RYTmxVM1JoZEdVb1ptRnNjMlVwTzF4dUlDQmpiMjV6ZENCYmRtRnNkV1ZKYm5CMWRGWmhiSFZsTENCelpYUldZV3gxWlVsdWNIVjBWbUZzZFdWZElEMGdkWE5sVTNSaGRHVW9KeWNwTzF4dUlDQmpiMjV6ZENCYmRtRnNkV1ZJWVhORGRYTjBiMjFXWVd4MVpTd2djMlYwVm1Gc2RXVklZWE5EZFhOMGIyMVdZV3gxWlYwZ1BTQjFjMlZUZEdGMFpTaG1ZV3h6WlNrN1hHNGdJQzh2SUZSdklHNXZkQ0IwY21sbloyVnlJSEYxWlhKcFpYTWdiMjRnWlhabGNua2djMlZzWldOMGFXOXVJSGRsSUhOMGIzSmxJSFJvYVhNZ2MzUmhkR1VnYkc5allXeHNlU0JvWlhKbElHRnVaQ0J2Ym14NUlIVndaR0YwWlNCMGFHVWdkbUZ5YVdGaWJHVWdiMjVDYkhWeVhHNGdJR052Ym5OMElGdDFibU52YlcxcGRIUmxaRlpoYkhWbExDQnpaWFJWYm1OdmJXMXBkSFJsWkZaaGJIVmxYU0E5SUhWelpWTjBZWFJsUEZObGJHVmpkR0ZpYkdWV1lXeDFaVDRvWEc0Z0lDQWdabWxzZEdWeUxuWmhiSFZsY3lBL0lHWnBiSFJsY2k1MllXeDFaWE11YldGd0tDaDJZV3gxWlN3Z2FXNWtaWGdwSUQwK0lHdGxlVXhoWW1Wc1ZHOVBjSFJwYjI0b2RtRnNkV1VzSUdacGJIUmxjaTUyWVd4MVpVeGhZbVZzY3o4dVcybHVaR1Y0WFNrcElEb2dXMTFjYmlBZ0tUdGNiaUFnWTI5dWMzUWdhWE5OZFd4MGFWWmhiSFZsSUQwZ2FYTk5kV3gwYVZaaGJIVmxUM0JsY21GMGIzSW9abWxzZEdWeUxtOXdaWEpoZEc5eUtUdGNibHh1SUNCamIyNXpkQ0JyWlhsV1lXeDFaU0E5SUd0bGVVeGhZbVZzVkc5UGNIUnBiMjRvWm1sc2RHVnlMbXRsZVN3Z1ptbHNkR1Z5TG10bGVVeGhZbVZzS1R0Y2JpQWdZMjl1YzNRZ2RtRnNkV1ZXWVd4MVpTQTlJR3RsZVV4aFltVnNWRzlQY0hScGIyNG9abWxzZEdWeUxuWmhiSFZsTENCbWFXeDBaWEl1ZG1Gc2RXVk1ZV0psYkhNL0xsc3dYU2s3WEc1Y2JpQWdZMjl1YzNRZ2IzQjBhVzl1VTJWaGNtTm9aWElnUFNCMWMyVk5aVzF2S0NncElEMCtJR2RsZEVGa2FHOWpUM0IwYVc5dVUyVmhjbU5vWlhJb2RtRnNkV1Z6S1N3Z1czWmhiSFZsYzEwcE8xeHVYRzRnSUdOdmJuTjBJRzl1Vm1Gc2RXVkpibkIxZEVOb1lXNW5aU0E5SUNoMllXeDFaVG9nYzNSeWFXNW5MQ0I3SUdGamRHbHZiaUI5T2lCSmJuQjFkRUZqZEdsdmJrMWxkR0VwSUQwK0lIdGNiaUFnSUNCcFppQW9ZV04wYVc5dUlEMDlQU0FuYVc1d2RYUXRZMmhoYm1kbEp5a2dlMXh1SUNBZ0lDQWdjMlYwVm1Gc2RXVkpibkIxZEZaaGJIVmxLSFpoYkhWbEtUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSFpoYkhWbE8xeHVJQ0I5TzF4dVhHNGdJR052Ym5OMElHOXVUM0JsY21GMGIzSkRhR0Z1WjJVZ1BTQW9kam9nVTJWc1pXTjBZV0pzWlZaaGJIVmxLU0E5UGlCN1hHNGdJQ0FnWTI5dWMzUWdaWGhwYzNScGJtZFBjR1Z5WVhSdmNpQTlJR1pwYkhSbGNpNXZjR1Z5WVhSdmNqdGNiaUFnSUNCamIyNXpkQ0J1WlhkUGNHVnlZWFJ2Y2lBOUlIWXVkbUZzZFdVN1hHNWNiaUFnSUNCamIyNXpkQ0IxY0dSaGRHVTZJRkJoY25ScFlXdzhRV1JJYjJOR2FXeDBaWEpYYVhSb1RHRmlaV3h6UGlBOUlIc2diM0JsY21GMGIzSTZJRzVsZDA5d1pYSmhkRzl5SUgwN1hHNGdJQ0FnTHk4Z1kyeGxZWElnZG1Gc2RXVWdhV1lnYjNCbGNtRjBiM0lnYUdGeklHTm9ZVzVuWldRZ1puSnZiU0J0ZFd4MGFTQjBieUJ6YVc1bmJHVmNiaUFnSUNCcFppQW9hWE5OZFd4MGFWWmhiSFZsVDNCbGNtRjBiM0lvWlhocGMzUnBibWRQY0dWeVlYUnZjaWtnSmlZZ0lXbHpUWFZzZEdsV1lXeDFaVTl3WlhKaGRHOXlLRzVsZDA5d1pYSmhkRzl5S1NrZ2UxeHVJQ0FnSUNBZ2RYQmtZWFJsTG5aaGJIVmxJRDBnSnljN1hHNGdJQ0FnSUNCMWNHUmhkR1V1ZG1Gc2RXVk1ZV0psYkhNZ1BTQmJKeWRkTzF4dUlDQWdJQ0FnZFhCa1lYUmxMblpoYkhWbGN5QTlJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQWdJSE5sZEZWdVkyOXRiV2wwZEdWa1ZtRnNkV1VvVzEwcE8xeHVJQ0FnSUNBZ0x5OGdjMlYwSUhaaGJIVmxjeUJwWmlCdmNHVnlZWFJ2Y2lCb1lYTWdZMmhoYm1kbFpDQm1jbTl0SUhOcGJtZHNaU0IwYnlCdGRXeDBhVnh1SUNBZ0lIMGdaV3h6WlNCcFppQW9JV2x6VFhWc2RHbFdZV3gxWlU5d1pYSmhkRzl5S0dWNGFYTjBhVzVuVDNCbGNtRjBiM0lwSUNZbUlHbHpUWFZzZEdsV1lXeDFaVTl3WlhKaGRHOXlLRzVsZDA5d1pYSmhkRzl5S1NBbUppQm1hV3gwWlhJdWRtRnNkV1VwSUh0Y2JpQWdJQ0FnSUhWd1pHRjBaUzUyWVd4MVpYTWdQU0JiWm1sc2RHVnlMblpoYkhWbFhUdGNiaUFnSUNBZ0lITmxkRlZ1WTI5dGJXbDBkR1ZrVm1Gc2RXVW9XMXh1SUNBZ0lDQWdJQ0I3WEc0Z0lDQWdJQ0FnSUNBZ2RtRnNkV1U2SUdacGJIUmxjaTUyWVd4MVpTeGNiaUFnSUNBZ0lDQWdJQ0JzWVdKbGJEb2dabWxzZEdWeUxuWmhiSFZsVEdGaVpXeHpQeTViTUYwZ1B6OGdabWxzZEdWeUxuWmhiSFZsTEZ4dUlDQWdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ1hTazdYRzRnSUNBZ2ZWeHVJQ0FnSUcxdlpHVnNMbDkxY0dSaGRHVkdhV3gwWlhJb1ptbHNkR1Z5TENCMWNHUmhkR1VwTzF4dUlDQjlPMXh1WEc0Z0lHTnZibk4wSUdacGJIUmxjbVZrVm1Gc2RXVlBjSFJwYjI1eklEMGdkWE5sVFdWdGJ5aGNiaUFnSUNBb0tTQTlQaUJvWVc1a2JHVlBjSFJwYjI1SGNtOTFjSE1vYjNCMGFXOXVVMlZoY21Ob1pYSW9kbUZzZFdWSmJuQjFkRlpoYkhWbEtTa3NYRzRnSUNBZ1cyOXdkR2x2YmxObFlYSmphR1Z5TENCMllXeDFaVWx1Y0hWMFZtRnNkV1ZkWEc0Z0lDazdYRzVjYmlBZ1kyOXVjM1FnYlhWc2RHbFdZV3gxWlZCeWIzQnpJRDBnZTF4dUlDQWdJR2x6VFhWc2RHazZJSFJ5ZFdVc1hHNGdJQ0FnZG1Gc2RXVTZJSFZ1WTI5dGJXbDBkR1ZrVm1Gc2RXVXNYRzRnSUNBZ1kyOXRjRzl1Wlc1MGN6b2dlMXh1SUNBZ0lDQWdUM0IwYVc5dU9pQlBjSFJwYjI1WGFYUm9RMmhsWTJ0aWIzZ3NYRzRnSUNBZ2ZTeGNiaUFnSUNCb2FXUmxVMlZzWldOMFpXUlBjSFJwYjI1ek9pQm1ZV3h6WlN4Y2JpQWdJQ0JqYkc5elpVMWxiblZQYmxObGJHVmpkRG9nWm1Gc2MyVXNYRzRnSUNBZ2IzQmxiazFsYm5WUGJrWnZZM1Z6T2lCbVlXeHpaU3hjYmlBZ0lDQnZia05vWVc1blpUb2dLSFk2SUZObGJHVmpkR0ZpYkdWV1lXeDFaU2tnUFQ0Z2UxeHVJQ0FnSUNBZ2MyVjBWVzVqYjIxdGFYUjBaV1JXWVd4MVpTaDJLVHRjYmlBZ0lDQWdJQzh2SUdOc1pXRnlJR2x1Y0hWMElIWmhiSFZsSUhkb1pXNGdZM0psWVhScGJtY2dZU0J1WlhjZ1kzVnpkRzl0SUcxMWJIUnBJSFpoYkhWbFhHNGdJQ0FnSUNCcFppQW9kaTV6YjIxbEtDaDJZV3gxWlRvZ1UyVnNaV04wWVdKc1pWWmhiSFZsS1NBOVBpQjJZV3gxWlM1ZlgybHpUbVYzWDE4cEtTQjdYRzRnSUNBZ0lDQWdJSE5sZEZaaGJIVmxTVzV3ZFhSV1lXeDFaU2duSnlrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlN4Y2JpQWdJQ0J2YmtKc2RYSTZJQ2dwSUQwK0lIdGNiaUFnSUNBZ0lHMXZaR1ZzTGw5MWNHUmhkR1ZHYVd4MFpYSW9abWxzZEdWeUxDQjdYRzRnSUNBZ0lDQWdJSFpoYkhWbE9pQjFibU52YlcxcGRIUmxaRlpoYkhWbFd6QmRQeTUyWVd4MVpTQS9QeUFuSnl4Y2JpQWdJQ0FnSUNBZ0x5OGdWRTlFVHlCeVpXMXZkbVVnWlhod1pXTjBMV1Z5Y205eUlIZG9aVzRnZDJVbmNtVWdiMjRnZEdobElHeGhkR1Z6ZENCMlpYSnphVzl1SUc5bUlFQm5jbUZtWVc1aEwyUmhkR0ZjYmlBZ0lDQWdJQ0FnZG1Gc2RXVnpPaUIxYm1OdmJXMXBkSFJsWkZaaGJIVmxMbTFoY0Nnb2IzQjBhVzl1T2lCVFpXeGxZM1JoWW14bFZtRnNkV1U4YzNSeWFXNW5QaWtnUFQ0Z2IzQjBhVzl1TG5aaGJIVmxLU3hjYmlBZ0lDQWdJQ0FnZG1Gc2RXVk1ZV0psYkhNNklIVnVZMjl0YldsMGRHVmtWbUZzZFdVdWJXRndLQ2h2Y0hScGIyNDZJRk5sYkdWamRHRmliR1ZXWVd4MVpUeHpkSEpwYm1jK0tTQTlQaUJ2Y0hScGIyNHViR0ZpWld3cExGeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ2ZTeGNiaUFnZlR0Y2JseHVJQ0JqYjI1emRDQjJZV3gxWlZObGJHVmpkQ0E5SUNoY2JpQWdJQ0E4VTJWc1pXTjBYRzRnSUNBZ0lDQjJhWEowZFdGc2FYcGxaRnh1SUNBZ0lDQWdZV3hzYjNkRGRYTjBiMjFXWVd4MVpUMTdiVzlrWld3dWMzUmhkR1V1WVd4c2IzZERkWE4wYjIxV1lXeDFaU0EvUHlCMGNuVmxmVnh1SUNBZ0lDQWdhWE5XWVd4cFpFNWxkMDl3ZEdsdmJqMTdLR2x1Y0hWMFZtRnNkV1VwSUQwK0lHbHVjSFYwVm1Gc2RXVXVkSEpwYlNncExteGxibWQwYUNBK0lEQjlYRzRnSUNBZ0lDQmhiR3h2ZDBOeVpXRjBaVmRvYVd4bFRHOWhaR2x1WjF4dUlDQWdJQ0FnWm05eWJXRjBRM0psWVhSbFRHRmlaV3c5ZXlocGJuQjFkRlpoYkhWbEtTQTlQaUJnVlhObElHTjFjM1J2YlNCMllXeDFaVG9nSkh0cGJuQjFkRlpoYkhWbGZXQjlYRzRnSUNBZ0lDQmthWE5oWW14bFpEMTdiVzlrWld3dWMzUmhkR1V1Y21WaFpFOXViSGw5WEc0Z0lDQWdJQ0JqYkdGemMwNWhiV1U5ZTJONEtITjBlV3hsY3k1MllXeDFaU3dnYVhOV1lXeDFaWE5QY0dWdUlEOGdjM1I1YkdWekxuZHBaSFJvVjJobGJrOXdaVzRnT2lCMWJtUmxabWx1WldRcGZWeHVJQ0FnSUNBZ2QybGtkR2c5WENKaGRYUnZYQ0pjYmlBZ0lDQWdJSFpoYkhWbFBYdDJZV3gxWlZaaGJIVmxmVnh1SUNBZ0lDQWdabWxzZEdWeVQzQjBhVzl1UFh0bWFXeDBaWEpPYjA5d2ZWeHVJQ0FnSUNBZ2NHeGhZMlZvYjJ4a1pYSTlleWRUWld4bFkzUWdkbUZzZFdVbmZWeHVJQ0FnSUNBZ2IzQjBhVzl1Y3oxN1ptbHNkR1Z5WldSV1lXeDFaVTl3ZEdsdmJuTjlYRzRnSUNBZ0lDQnBibkIxZEZaaGJIVmxQWHQyWVd4MVpVbHVjSFYwVm1Gc2RXVjlYRzRnSUNBZ0lDQnZia2x1Y0hWMFEyaGhibWRsUFh0dmJsWmhiSFZsU1c1d2RYUkRhR0Z1WjJWOVhHNGdJQ0FnSUNCdmJrTm9ZVzVuWlQxN0tIWXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ2JXOWtaV3d1WDNWd1pHRjBaVVpwYkhSbGNpaG1hV3gwWlhJc0lIdGNiaUFnSUNBZ0lDQWdJQ0IyWVd4MVpUb2dkaTUyWVd4MVpTeGNiaUFnSUNBZ0lDQWdJQ0IyWVd4MVpVeGhZbVZzY3pvZ2RpNXNZV0psYkNBL0lGdDJMbXhoWW1Wc1hTQTZJRnQyTG5aaGJIVmxYU3hjYmlBZ0lDQWdJQ0FnZlNrN1hHNWNiaUFnSUNBZ0lDQWdhV1lnS0haaGJIVmxTR0Z6UTNWemRHOXRWbUZzZFdVZ0lUMDlJSFl1WDE5cGMwNWxkMTlmS1NCN1hHNGdJQ0FnSUNBZ0lDQWdjMlYwVm1Gc2RXVklZWE5EZFhOMGIyMVdZV3gxWlNoMkxsOWZhWE5PWlhkZlh5azdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDE5WEc0Z0lDQWdJQ0F2THlCMGFHVnlaU2R6SUdFZ1luVm5JR2x1SUhKbFlXTjBMWE5sYkdWamRDQjNhR1Z5WlNCMGFHVWdiV1Z1ZFNCa2IyVnpiaWQwSUhKbFkyRnNZM1ZzWVhSbElHbDBjeUJ3YjNOcGRHbHZiaUIzYUdWdUlIUm9aU0J2Y0hScGIyNXpJR0Z5WlNCc2IyRmtaV1FnWVhONWJtTm9jbTl1YjNWemJIbGNiaUFnSUNBZ0lDOHZJSE5sWlNCb2RIUndjem92TDJkcGRHaDFZaTVqYjIwdlozSmhabUZ1WVM5bmNtRm1ZVzVoTDJsemMzVmxjeTgyTXpVMU9GeHVJQ0FnSUNBZ0x5OGdhVzV6ZEdWaFpDd2dkMlVnWlhod2JHbGphWFJzZVNCamIyNTBjbTlzSUhSb1pTQnRaVzUxSUhacGMybGlhV3hwZEhrZ1lXNWtJSEJ5WlhabGJuUWdjMmh2ZDJsdVp5QnBkQ0IxYm5ScGJDQjBhR1VnYjNCMGFXOXVjeUJvWVhabElHWjFiR3g1SUd4dllXUmxaRnh1SUNBZ0lDQWdhWE5QY0dWdVBYdHBjMVpoYkhWbGMwOXdaVzRnSmlZZ0lXbHpWbUZzZFdWelRHOWhaR2x1WjMxY2JpQWdJQ0FnSUdselRHOWhaR2x1WnoxN2FYTldZV3gxWlhOTWIyRmthVzVuZlZ4dUlDQWdJQ0FnYjNCbGJrMWxiblZQYmtadlkzVnpQWHQwY25WbGZWeHVJQ0FnSUNBZ2IyNVBjR1Z1VFdWdWRUMTdZWE41Ym1NZ0tDa2dQVDRnZTF4dUlDQWdJQ0FnSUNCelpYUkpjMVpoYkhWbGMweHZZV1JwYm1jb2RISjFaU2s3WEc0Z0lDQWdJQ0FnSUhObGRFbHpWbUZzZFdWelQzQmxiaWgwY25WbEtUdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2RtRnNkV1Z6SUQwZ1lYZGhhWFFnYlc5a1pXd3VYMmRsZEZaaGJIVmxjMFp2Y2lobWFXeDBaWElwTzF4dUlDQWdJQ0FnSUNCelpYUkpjMVpoYkhWbGMweHZZV1JwYm1jb1ptRnNjMlVwTzF4dUlDQWdJQ0FnSUNCelpYUldZV3gxWlhNb2RtRnNkV1Z6S1R0Y2JpQWdJQ0FnSUNBZ2FXWWdLSFpoYkhWbFNHRnpRM1Z6ZEc5dFZtRnNkV1VwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnpaWFJXWVd4MVpVbHVjSFYwVm1Gc2RXVW9kbUZzZFdWV1lXeDFaVDh1YkdGaVpXd2dQejhnSnljcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlmVnh1SUNBZ0lDQWdiMjVEYkc5elpVMWxiblU5ZXlncElEMCtJSHRjYmlBZ0lDQWdJQ0FnYzJWMFNYTldZV3gxWlhOUGNHVnVLR1poYkhObEtUdGNiaUFnSUNBZ0lDQWdjMlYwVm1Gc2RXVkpibkIxZEZaaGJIVmxLQ2NuS1R0Y2JpQWdJQ0FnSUgxOVhHNGdJQ0FnSUNCN0xpNHVLR2x6VFhWc2RHbFdZV3gxWlNBbUppQnRkV3gwYVZaaGJIVmxVSEp2Y0hNcGZWeHVJQ0FnSUM4K1hHNGdJQ2s3WEc1Y2JpQWdZMjl1YzNRZ2EyVjVVMlZzWldOMElEMGdLRnh1SUNBZ0lEeFRaV3hsWTNSY2JpQWdJQ0FnSUM4dklFSjVJR05vWVc1bmFXNW5JSFJvWlNCclpYa3NJSGRsSUhKbGMyVjBJSFJvWlNCVFpXeGxZM1FnWTI5dGNHOXVaVzUwTEZ4dUlDQWdJQ0FnTHk4Z2RHOGdaVzV6ZFhKbElIUm9ZWFFnZEdobElHeHZZV1JsWkNCMllXeDFaWE1nWVhKbElITm9iM2R1SUdGbWRHVnlJSFJvWlhrZ1lYSmxJR3h2WVdSbFpGeHVJQ0FnSUNBZ2EyVjVQWHRnSkh0cGMxWmhiSFZsYzB4dllXUnBibWNnUHlBbmJHOWhaR2x1WnljZ09pQW5iRzloWkdWa0ozMWdmVnh1SUNBZ0lDQWdaR2x6WVdKc1pXUTllMjF2WkdWc0xuTjBZWFJsTG5KbFlXUlBibXg1ZlZ4dUlDQWdJQ0FnWTJ4aGMzTk9ZVzFsUFh0amVDaHpkSGxzWlhNdWEyVjVMQ0JwYzB0bGVYTlBjR1Z1SUQ4Z2MzUjViR1Z6TG5kcFpIUm9WMmhsYms5d1pXNGdPaUIxYm1SbFptbHVaV1FwZlZ4dUlDQWdJQ0FnZDJsa2RHZzlYQ0poZFhSdlhDSmNiaUFnSUNBZ0lHRnNiRzkzUTNWemRHOXRWbUZzZFdVOWUyMXZaR1ZzTG5OMFlYUmxMbUZzYkc5M1EzVnpkRzl0Vm1Gc2RXVWdQejhnZEhKMVpYMWNiaUFnSUNBZ0lIWmhiSFZsUFh0clpYbFdZV3gxWlgxY2JpQWdJQ0FnSUhCc1lXTmxhRzlzWkdWeVBYc25VMlZzWldOMElHeGhZbVZzSjMxY2JpQWdJQ0FnSUc5d2RHbHZibk05ZTJoaGJtUnNaVTl3ZEdsdmJrZHliM1Z3Y3loclpYbHpLWDFjYmlBZ0lDQWdJRzl1UTJoaGJtZGxQWHNvZGlrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0J0YjJSbGJDNWZkWEJrWVhSbFJtbHNkR1Z5S0dacGJIUmxjaXdnZTF4dUlDQWdJQ0FnSUNBZ0lHdGxlVG9nZGk1MllXeDFaU3hjYmlBZ0lDQWdJQ0FnSUNCclpYbE1ZV0psYkRvZ2RpNXNZV0psYkN4Y2JpQWdJQ0FnSUNBZ0lDQXZMeUJqYkdWaGNpQjJZV3gxWlNCcFppQnJaWGtnYUdGeklHTm9ZVzVuWldSY2JpQWdJQ0FnSUNBZ0lDQjJZV3gxWlRvZ0p5Y3NYRzRnSUNBZ0lDQWdJQ0FnZG1Gc2RXVk1ZV0psYkhNNklGc25KMTBzWEc0Z0lDQWdJQ0FnSUNBZ2RtRnNkV1Z6T2lCMWJtUmxabWx1WldRc1hHNGdJQ0FnSUNBZ0lIMHBPMXh1SUNBZ0lDQWdJQ0J6WlhSVmJtTnZiVzFwZEhSbFpGWmhiSFZsS0Z0ZEtUdGNiaUFnSUNBZ0lIMTlYRzRnSUNBZ0lDQmhkWFJ2Um05amRYTTllMlpwYkhSbGNpNXJaWGtnUFQwOUlDY25mVnh1SUNBZ0lDQWdMeThnZEdobGNtVW5jeUJoSUdKMVp5QnBiaUJ5WldGamRDMXpaV3hsWTNRZ2QyaGxjbVVnZEdobElHMWxiblVnWkc5bGMyNG5kQ0J5WldOaGJHTjFiR0YwWlNCcGRITWdjRzl6YVhScGIyNGdkMmhsYmlCMGFHVWdiM0IwYVc5dWN5QmhjbVVnYkc5aFpHVmtJR0Z6ZVc1amFISnZibTkxYzJ4NVhHNGdJQ0FnSUNBdkx5QnpaV1VnYUhSMGNITTZMeTluYVhSb2RXSXVZMjl0TDJkeVlXWmhibUV2WjNKaFptRnVZUzlwYzNOMVpYTXZOak0xTlRoY2JpQWdJQ0FnSUM4dklHbHVjM1JsWVdRc0lIZGxJR1Y0Y0d4cFkybDBiSGtnWTI5dWRISnZiQ0IwYUdVZ2JXVnVkU0IyYVhOcFltbHNhWFI1SUdGdVpDQndjbVYyWlc1MElITm9iM2RwYm1jZ2FYUWdkVzUwYVd3Z2RHaGxJRzl3ZEdsdmJuTWdhR0YyWlNCbWRXeHNlU0JzYjJGa1pXUmNiaUFnSUNBZ0lHbHpUM0JsYmoxN2FYTkxaWGx6VDNCbGJpQW1KaUFoYVhOTFpYbHpURzloWkdsdVozMWNiaUFnSUNBZ0lHbHpURzloWkdsdVp6MTdhWE5MWlhselRHOWhaR2x1WjMxY2JpQWdJQ0FnSUc5dVQzQmxiazFsYm5VOWUyRnplVzVqSUNncElEMCtJSHRjYmlBZ0lDQWdJQ0FnYzJWMFNYTkxaWGx6VDNCbGJpaDBjblZsS1R0Y2JpQWdJQ0FnSUNBZ2MyVjBTWE5MWlhselRHOWhaR2x1WnloMGNuVmxLVHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdhMlY1Y3lBOUlHRjNZV2wwSUcxdlpHVnNMbDluWlhSTFpYbHpLR1pwYkhSbGNpNXJaWGtwTzF4dUlDQWdJQ0FnSUNCelpYUkpjMHRsZVhOTWIyRmthVzVuS0daaGJITmxLVHRjYmlBZ0lDQWdJQ0FnYzJWMFMyVjVjeWhyWlhsektUdGNiaUFnSUNBZ0lIMTlYRzRnSUNBZ0lDQnZia05zYjNObFRXVnVkVDE3S0NrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0J6WlhSSmMwdGxlWE5QY0dWdUtHWmhiSE5sS1R0Y2JpQWdJQ0FnSUgxOVhHNGdJQ0FnSUNCdmJrSnNkWEk5ZXlncElEMCtJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHWnBiSFJsY2k1clpYa2dQVDA5SUNjbktTQjdYRzRnSUNBZ0lDQWdJQ0FnYlc5a1pXd3VYM0psYlc5MlpVWnBiSFJsY2lobWFXeDBaWElwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOWZWeHVJQ0FnSUNBZ2IzQmxiazFsYm5WUGJrWnZZM1Z6UFh0MGNuVmxmVnh1SUNBZ0lDOCtYRzRnSUNrN1hHNWNiaUFnWTI5dWMzUWdiM0JsY21GMGIzSlRaV3hsWTNRZ1BTQW9YRzRnSUNBZ1BGTmxiR1ZqZEZ4dUlDQWdJQ0FnWTJ4aGMzTk9ZVzFsUFh0amVDaHpkSGxzWlhNdWIzQmxjbUYwYjNJc0lIdGNiaUFnSUNBZ0lDQWdXM04wZVd4bGN5NTNhV1IwYUZkb1pXNVBjR1Z1WFRvZ2FYTlBjR1Z5WVhSdmNrOXdaVzRzWEc0Z0lDQWdJQ0I5S1gxY2JpQWdJQ0FnSUhaaGJIVmxQWHRtYVd4MFpYSXViM0JsY21GMGIzSjlYRzRnSUNBZ0lDQmthWE5oWW14bFpEMTdiVzlrWld3dWMzUmhkR1V1Y21WaFpFOXViSGw5WEc0Z0lDQWdJQ0J2Y0hScGIyNXpQWHR0YjJSbGJDNWZaMlYwVDNCbGNtRjBiM0p6S0NsOVhHNGdJQ0FnSUNCdmJrTm9ZVzVuWlQxN2IyNVBjR1Z5WVhSdmNrTm9ZVzVuWlgxY2JpQWdJQ0FnSUc5dVQzQmxiazFsYm5VOWV5Z3BJRDArSUh0Y2JpQWdJQ0FnSUNBZ2MyVjBTWE5QY0dWeVlYUnZjazl3Wlc0b2RISjFaU2s3WEc0Z0lDQWdJQ0I5ZlZ4dUlDQWdJQ0FnYjI1RGJHOXpaVTFsYm5VOWV5Z3BJRDArSUh0Y2JpQWdJQ0FnSUNBZ2MyVjBTWE5QY0dWeVlYUnZjazl3Wlc0b1ptRnNjMlVwTzF4dUlDQWdJQ0FnZlgxY2JpQWdJQ0F2UGx4dUlDQXBPMXh1WEc0Z0lHbG1JQ2h0YjJSbGJDNXpkR0YwWlM1c1lYbHZkWFFnUFQwOUlDZDJaWEowYVdOaGJDY3BJSHRjYmlBZ0lDQnBaaUFvWm1sc2RHVnlMbXRsZVNrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnYkdGaVpXd2dQU0FvWEc0Z0lDQWdJQ0FnSUR4RGIyNTBjbTlzYzB4aFltVnNJR3hoZVc5MWREMWNJblpsY25ScFkyRnNYQ0lnYkdGaVpXdzllMlpwYkhSbGNpNXJaWGtnUHo4Z0p5ZDlJRzl1VW1WdGIzWmxQWHNvS1NBOVBpQnRiMlJsYkM1ZmNtVnRiM1psUm1sc2RHVnlLR1pwYkhSbGNpbDlJQzgrWEc0Z0lDQWdJQ0FwTzF4dVhHNGdJQ0FnSUNCeVpYUjFjbTRnS0Z4dUlDQWdJQ0FnSUNBOFJtbGxiR1FnYkdGaVpXdzllMnhoWW1Wc2ZTQmtZWFJoTFhSbGMzUnBaRDE3WUVGa1NHOWpSbWxzZEdWeUxTUjdabWxzZEdWeUxtdGxlWDFnZlNCamJHRnpjMDVoYldVOWUzTjBlV3hsY3k1bWFXVnNaSDArWEc0Z0lDQWdJQ0FnSUNBZ1BHUnBkaUJqYkdGemMwNWhiV1U5ZTNOMGVXeGxjeTUzY21Gd2NHVnlmVDVjYmlBZ0lDQWdJQ0FnSUNBZ0lIdHZjR1Z5WVhSdmNsTmxiR1ZqZEgxY2JpQWdJQ0FnSUNBZ0lDQWdJSHQyWVd4MVpWTmxiR1ZqZEgxY2JpQWdJQ0FnSUNBZ0lDQThMMlJwZGo1Y2JpQWdJQ0FnSUNBZ1BDOUdhV1ZzWkQ1Y2JpQWdJQ0FnSUNrN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQW9YRzRnSUNBZ0lDQWdJRHhHYVdWc1pDQnNZV0psYkQxN0oxTmxiR1ZqZENCc1lXSmxiQ2Q5SUdSaGRHRXRkR1Z6ZEdsa1BYdGdRV1JJYjJOR2FXeDBaWEl0Skh0bWFXeDBaWEl1YTJWNWZXQjlJR05zWVhOelRtRnRaVDE3YzNSNWJHVnpMbVpwWld4a2ZUNWNiaUFnSUNBZ0lDQWdJQ0I3YTJWNVUyVnNaV04wZlZ4dUlDQWdJQ0FnSUNBOEwwWnBaV3hrUGx4dUlDQWdJQ0FnS1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCeVpYUjFjbTRnS0Z4dUlDQWdJRHhrYVhZZ1kyeGhjM05PWVcxbFBYdHpkSGxzWlhNdWQzSmhjSEJsY24wZ1pHRjBZUzEwWlhOMGFXUTllMkJCWkVodlkwWnBiSFJsY2kwa2UyWnBiSFJsY2k1clpYbDlZSDArWEc0Z0lDQWdJQ0I3YTJWNVUyVnNaV04wZlZ4dUlDQWdJQ0FnZTI5d1pYSmhkRzl5VTJWc1pXTjBmVnh1SUNBZ0lDQWdlM1poYkhWbFUyVnNaV04wZlZ4dUlDQWdJQ0FnUEVKMWRIUnZibHh1SUNBZ0lDQWdJQ0IyWVhKcFlXNTBQVndpYzJWamIyNWtZWEo1WENKY2JpQWdJQ0FnSUNBZ1lYSnBZUzFzWVdKbGJEMWNJbEpsYlc5MlpTQm1hV3gwWlhKY0lseHVJQ0FnSUNBZ0lDQjBhWFJzWlQxY0lsSmxiVzkyWlNCbWFXeDBaWEpjSWx4dUlDQWdJQ0FnSUNCamJHRnpjMDVoYldVOWUzTjBlV3hsY3k1eVpXMXZkbVZDZFhSMGIyNTlYRzRnSUNBZ0lDQWdJR2xqYjI0OVhDSjBhVzFsYzF3aVhHNGdJQ0FnSUNBZ0lHUmhkR0V0ZEdWemRHbGtQWHRnUVdSSWIyTkdhV3gwWlhJdGNtVnRiM1psTFNSN1ptbHNkR1Z5TG10bGVTQS9QeUFuSjMxZ2ZWeHVJQ0FnSUNBZ0lDQnZia05zYVdOclBYc29LU0E5UGlCdGIyUmxiQzVmY21WdGIzWmxSbWxzZEdWeUtHWnBiSFJsY2lsOVhHNGdJQ0FnSUNBdlBseHVJQ0FnSUR3dlpHbDJQbHh1SUNBcE8xeHVmVnh1WEc1amIyNXpkQ0JuWlhSVGRIbHNaWE1nUFNBb2RHaGxiV1U2SUVkeVlXWmhibUZVYUdWdFpUSXBJRDArSUNoN1hHNGdJR1pwWld4a09pQmpjM01vZTF4dUlDQWdJRzFoY21kcGJrSnZkSFJ2YlRvZ01DeGNiaUFnZlNrc1hHNGdJSGR5WVhCd1pYSTZJR056Y3loN1hHNGdJQ0FnWkdsemNHeGhlVG9nSjJac1pYZ25MRnh1SUNBZ0lDYytJQ29uT2lCN1hHNGdJQ0FnSUNBbkpqcHViM1FvT21acGNuTjBMV05vYVd4a0tTYzZJSHRjYmlBZ0lDQWdJQ0FnTHk4Z1RtVm5ZWFJwZG1VZ2JXRnlaMmx1SUdocFpHVnpJSFJvWlNCa2IzVmliR1V0WW05eVpHVnlJRzl1SUdGa2FtRmpaVzUwSUhObGJHVmpkSE5jYmlBZ0lDQWdJQ0FnYldGeVoybHVUR1ZtZERvZ0xURXNYRzRnSUNBZ0lDQjlMRnh1WEc0Z0lDQWdJQ0FuSmpwbWFYSnpkQzFqYUdsc1pDYzZJSHRjYmlBZ0lDQWdJQ0FnWW05eVpHVnlWRzl3VW1sbmFIUlNZV1JwZFhNNklEQXNYRzRnSUNBZ0lDQWdJR0p2Y21SbGNrSnZkSFJ2YlZKcFoyaDBVbUZrYVhWek9pQXdMRnh1SUNBZ0lDQWdmU3hjYmx4dUlDQWdJQ0FnSnlZNmJHRnpkQzFqYUdsc1pDYzZJSHRjYmlBZ0lDQWdJQ0FnWW05eVpHVnlWRzl3VEdWbWRGSmhaR2wxY3pvZ01DeGNiaUFnSUNBZ0lDQWdZbTl5WkdWeVFtOTBkRzl0VEdWbWRGSmhaR2wxY3pvZ01DeGNiaUFnSUNBZ0lIMHNYRzVjYmlBZ0lDQWdJQ2NtT201dmRDZzZabWx5YzNRdFkyaHBiR1FwT201dmRDZzZiR0Z6ZEMxamFHbHNaQ2tuT2lCN1hHNGdJQ0FnSUNBZ0lHSnZjbVJsY2xKaFpHbDFjem9nTUN4Y2JpQWdJQ0FnSUgwc1hHNWNiaUFnSUNBZ0lDOHZJRVpwZUNCbWIyTjFjeUJ6ZEdGMFpTQjZTVzVrWlhnZ2FYTnpkV1Z6WEc0Z0lDQWdJQ0J3YjNOcGRHbHZiam9nSjNKbGJHRjBhWFpsSnl4Y2JpQWdJQ0FnSUhwSmJtUmxlRG9nTUN4Y2JseHVJQ0FnSUNBZ0x5OGdRV1JxWVdObGJuUWdZbTl5WkdWeWN5QmhjbVVnYjNabGNteGhjSEJwYm1jc0lITnZJSEpoYVhObElHTm9hV3hrY21WdUlIVndJSGRvWlc0Z2FHOTJaWEpwYm1jZ1pYUmpYRzRnSUNBZ0lDQXZMeUJ6YnlCaGJHd2dkR2hoZENCamFHbHNaQ2R6SUdKdmNtUmxjbk1nWVhKbElIWnBjMmxpYkdVdVhHNGdJQ0FnSUNBbkpqcG9iM1psY2ljNklIdGNiaUFnSUNBZ0lDQWdla2x1WkdWNE9pQXhMRnh1SUNBZ0lDQWdmU3hjYmx4dUlDQWdJQ0FnSnlZNlptOWpkWE10ZDJsMGFHbHVKem9nZTF4dUlDQWdJQ0FnSUNCNlNXNWtaWGc2SURJc1hHNGdJQ0FnSUNCOUxGeHVJQ0FnSUgwc1hHNGdJSDBwTEZ4dUlDQjNhV1IwYUZkb1pXNVBjR1Z1T2lCamMzTW9lMXh1SUNBZ0lHMXBibGRwWkhSb09pQjBhR1Z0WlM1emNHRmphVzVuS0RFMktTeGNiaUFnZlNrc1hHNGdJSFpoYkhWbE9pQmpjM01vZTF4dUlDQWdJR1pzWlhoQ1lYTnBjem9nSjJOdmJuUmxiblFuTEZ4dUlDQWdJR1pzWlhoVGFISnBibXM2SURFc1hHNGdJQ0FnYldsdVYybGtkR2c2SUNjNU1IQjRKeXhjYmlBZ2ZTa3NYRzRnSUd0bGVUb2dZM056S0h0Y2JpQWdJQ0JtYkdWNFFtRnphWE02SUNkamIyNTBaVzUwSnl4Y2JpQWdJQ0J0YVc1WGFXUjBhRG9nSnprd2NIZ25MRnh1SUNBZ0lHWnNaWGhUYUhKcGJtczZJREVzWEc0Z0lIMHBMRnh1SUNCdmNHVnlZWFJ2Y2pvZ1kzTnpLSHRjYmlBZ0lDQm1iR1Y0VTJoeWFXNXJPaUF3TEZ4dUlDQWdJR1pzWlhoQ1lYTnBjem9nSjJOdmJuUmxiblFuTEZ4dUlDQjlLU3hjYmlBZ2NtVnRiM1psUW5WMGRHOXVPaUJqYzNNb2UxeHVJQ0FnSUhCaFpHUnBibWRNWldaME9pQjBhR1Z0WlM1emNHRmphVzVuS0RNZ0x5QXlLU3hjYmlBZ0lDQndZV1JrYVc1blVtbG5hSFE2SUhSb1pXMWxMbk53WVdOcGJtY29NeUF2SURJcExGeHVJQ0FnSUdKdmNtUmxja3hsWm5RNklDZHViMjVsSnl4Y2JpQWdJQ0IzYVdSMGFEb2dkR2hsYldVdWMzQmhZMmx1WnlnektTeGNiaUFnSUNCdFlYSm5hVzVTYVdkb2REb2dkR2hsYldVdWMzQmhZMmx1WnlneEtTeGNiaUFnSUNCaWIzaFRhWHBwYm1jNklDZGliM0prWlhJdFltOTRKeXhjYmlBZ0lDQXZMeUJVYnlCdWIzUWdhR0YyWlNCaWRYUjBiMjRnWW1GamEyZHliM1Z1WkNCaGJtUWdiR0Z6ZENCelpXeGxZM1FnWW05eVpHVnlJR2x1ZEdWeWMyVmpkRnh1SUNBZ0lIQnZjMmwwYVc5dU9pQW5jbVZzWVhScGRtVW5MRnh1SUNBZ0lHeGxablE2SUNjeGNIZ25MRnh1SUNCOUtTeGNibjBwTzF4dUlsMHNJbTVoYldWeklqcGJJbDloSWl3aVgySWlMQ0oyWVd4MVpYTWlMQ0pyWlhseklsMHNJbTFoY0hCcGJtZHpJam9pT3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPMEZCWjBKQkxGTkJRVk1zWjBKQlFVRXNRMEZCYVVJc1MwRkJZU3hMUVVGM1F5eEZRVUZCTzBGQlF6ZEZMRVZCUVVFc1QwRkJUeXhSUVVGUkxFVkJRMWdzUjBGQlFUdEJRVUZCTEVsQlEwVXNTMEZCVHl4RlFVRkJMRWRCUVVFN1FVRkJRU3hKUVVOUUxFOUJRVThzUzBGQlV5eEpRVUZCTEVkQlFVRTdRVUZCUVN4SFFVVnNRaXhIUVVGQkxFbEJRVUVzUTBGQlFUdEJRVU5PTEVOQlFVRTdRVUZGUVN4TlFVRk5MR0ZCUVdFc1RVRkJUU3hKUVVGQkxFTkJRVUU3UVVGRmJFSXNVMEZCVXl4dFFrRkJiMElzUTBGQlFTeEZRVUZGTEUxQlFWRXNSVUZCUVN4TFFVRkJMRVZCUVdkQ0xFVkJRVUU3UVVFelFqbEVMRVZCUVVFc1NVRkJRU3hGUVVGQkxFVkJRVUVzUlVGQlFTeEZRVUZCTEVWQlFVRXNSVUZCUVN4RlFVRkJMRVZCUVVFc1JVRkJRU3hEUVVGQk8wRkJORUpGTEVWQlFVMHNUVUZCUVN4TlFVRkJMRWRCUVZNc1YwRkJWeXhUUVVGVExFTkJRVUVzUTBGQlFUdEJRVVZ1UXl4RlFVRkJMRTFCUVUwc1EwRkJReXhKUVVGTkxFVkJRVUVzVDBGQlR5eERRVUZKTEVkQlFVRXNVVUZCUVN4RFFVRTBRaXhGUVVGRkxFTkJRVUVzUTBGQlFUdEJRVU4wUkN4RlFVRkJMRTFCUVUwc1EwRkJReXhOUVVGUkxFVkJRVUVzVTBGQlV5eERRVUZKTEVkQlFVRXNVVUZCUVN4RFFVRTBRaXhGUVVGRkxFTkJRVUVzUTBGQlFUdEJRVU14UkN4RlFVRkJMRTFCUVUwc1EwRkJReXhoUVVGQkxFVkJRV1VzWjBKQlFXZENMRU5CUVVFc1IwRkJTU3hUUVVGVExFdEJRVXNzUTBGQlFTeERRVUZCTzBGQlEzaEVMRVZCUVVFc1RVRkJUU3hEUVVGRExHVkJRVUVzUlVGQmFVSXNhMEpCUVd0Q0xFTkJRVUVzUjBGQlNTeFRRVUZUTEV0QlFVc3NRMEZCUVN4RFFVRkJPMEZCUXpWRUxFVkJRVUVzVFVGQlRTeERRVUZETEZWQlFVRXNSVUZCV1N4aFFVRmhMRU5CUVVFc1IwRkJTU3hUUVVGVExFdEJRVXNzUTBGQlFTeERRVUZCTzBGQlEyeEVMRVZCUVVFc1RVRkJUU3hEUVVGRExGbEJRVUVzUlVGQll5eGxRVUZsTEVOQlFVRXNSMEZCU1N4VFFVRlRMRXRCUVVzc1EwRkJRU3hEUVVGQk8wRkJRM1JFTEVWQlFVRXNUVUZCVFN4RFFVRkRMR05CUVVFc1JVRkJaMElzYVVKQlFXbENMRU5CUVVFc1IwRkJTU3hUUVVGVExFdEJRVXNzUTBGQlFTeERRVUZCTzBGQlF6RkVMRVZCUVVFc1RVRkJUU3hEUVVGRExHVkJRVUVzUlVGQmFVSXNhMEpCUVd0Q0xFTkJRVUVzUjBGQlNTeFRRVUZUTEVWQlFVVXNRMEZCUVN4RFFVRkJPMEZCUTNwRUxFVkJRVUVzVFVGQlRTeERRVUZETEcxQ1FVRkJMRVZCUVhGQ0xITkNRVUZ6UWl4RFFVRkJMRWRCUVVrc1UwRkJVeXhMUVVGTExFTkJRVUVzUTBGQlFUdEJRVVZ3UlN4RlFVRk5MRTFCUVVFc1EwRkJReXhuUWtGQmEwSXNSVUZCUVN4dFFrRkJiVUlzUTBGQlNTeEhRVUZCTEZGQlFVRTdRVUZCUVN4SlFVTTVReXhQUVVGUExFMUJRVk1zUjBGQlFTeE5RVUZCTEVOQlFVOHNUMEZCVHl4SFFVRkpMRU5CUVVFc1EwRkJReXhQUVVGUExFdEJRVThzUzBGQlFUdEJRWHBEY2tRc1RVRkJRVUVzU1VGQlFVRXNSMEZCUVVFc1EwRkJRVUU3UVVGNVEzZEVMRTFCUVVFc1QwRkJRU3huUWtGQlFTeERRVUZwUWl4UlFVRlBRU3hIUVVGQkxFZEJRVUVzVFVGQlFTeERRVUZQTEZkQlFWQXNTMEZCUVN4SlFVRkJMRWRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUZCTEVsQlFYRkNMRXRCUVUwc1EwRkJRU3hEUVVGQkxFTkJRVUU3UVVGQlFTeExRVUZETEVsQlFVa3NSVUZCUXp0QlFVRkJMRWRCUXk5SExFTkJRVUU3UVVGRFFTeEZRVUZOTEUxQlFVRXNXVUZCUVN4SFFVRmxMRzlDUVVGeFFpeERRVUZCTEUxQlFVRXNRMEZCVHl4UlFVRlJMRU5CUVVFc1EwRkJRVHRCUVVWNlJDeEZRVUZCTEUxQlFVMHNVVUZCVnl4SFFVRkJMR2RDUVVGQkxFTkJRV2xDTEUxQlFVOHNRMEZCUVN4SFFVRkJMRVZCUVVzc1QwRkJUeXhSUVVGUkxFTkJRVUVzUTBGQlFUdEJRVU0zUkN4RlFVRkJMRTFCUVUwc1lVRkJZU3huUWtGQmFVSXNRMEZCUVN4TlFVRkJMRU5CUVU4c1VVRkJUeXhGUVVGUExFZEJRVUVzVFVGQlFTeERRVUZCTEZkQlFVRXNTMEZCVUN4dFFrRkJjVUlzUTBGQlJTeERRVUZCTEVOQlFVRXNRMEZCUVR0QlFVVjZSU3hGUVVGTkxFMUJRVUVzWTBGQlFTeEhRVUZwUWl4UlFVRlJMRTFCUVUwc2MwSkJRVUVzUTBGQmRVSXNUVUZCVFN4RFFVRkhMRVZCUVVFc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlFTeERRVUZCTzBGQlJUZEZMRVZCUVVFc1RVRkJUU3hyUWtGQmNVSXNSMEZCUVN4RFFVRkRMRXRCUVdVc1JVRkJRU3hGUVVGRkxGRkJRVGhDTEV0QlFVRTdRVUZEZWtVc1NVRkJRU3hKUVVGSkxGZEJRVmNzWTBGQlowSXNSVUZCUVR0QlFVTTNRaXhOUVVGQkxHdENRVUZCTEVOQlFXMUNMRXRCUVVzc1EwRkJRU3hEUVVGQk8wRkJRVUVzUzBGRE1VSTdRVUZEUVN4SlFVRlBMRTlCUVVFc1MwRkJRU3hEUVVGQk8wRkJRVUVzUjBGRFZDeERRVUZCTzBGQlJVRXNSVUZCVFN4TlFVRkJMR2RDUVVGQkxFZEJRVzFDTEVOQlFVTXNRMEZCZFVJc1MwRkJRVHRCUVhwRWJrUXNTVUZCUVN4SlFVRkJRU3hIUVVGQlF5eEZRVUZCUVN4SFFVRkJRU3hEUVVGQlFUdEJRVEJFU1N4SlFVRkJMRTFCUVUwc2JVSkJRVzFDTEUxQlFVOHNRMEZCUVN4UlFVRkJMRU5CUVVFN1FVRkRhRU1zU1VGQlFTeE5RVUZOTEdOQlFXTXNRMEZCUlN4RFFVRkJMRXRCUVVFc1EwRkJRVHRCUVVWMFFpeEpRVUZOTEUxQlFVRXNUVUZCUVN4SFFVRjVReXhGUVVGRkxGRkJRVUVzUlVGQlZTeFhRVUZaTEVWQlFVRXNRMEZCUVR0QlFVVjJSU3hKUVVGQkxFbEJRVWtzY1VKQlFYRkNMR2RDUVVGblFpeERRVUZCTEVsQlFVc3NRMEZCUXl4dlFrRkJRU3hEUVVGeFFpeFhRVUZYTEVOQlFVY3NSVUZCUVR0QlFVTm9SaXhOUVVGQkxFMUJRVUVzUTBGQlR5eExRVUZSTEVkQlFVRXNSVUZCUVN4RFFVRkJPMEZCUTJZc1RVRkJUeXhOUVVGQkxFTkJRVUVzVjBGQlFTeEhRVUZqTEVOQlFVTXNSVUZCUlN4RFFVRkJMRU5CUVVFN1FVRkRlRUlzVFVGQlFTeE5RVUZCTEVOQlFVOHNUVUZCVXl4SFFVRkJMRXRCUVVFc1EwRkJRU3hEUVVGQk8wRkJRMmhDTEUxQlFVRXNiVUpCUVVFc1EwRkJiMElzUlVGQlJTeERRVUZCTEVOQlFVRTdRVUZCUVN4TFFVVjRRaXhOUVVGQkxFbEJRVmNzUTBGQlF5eHZRa0ZCY1VJc1EwRkJRU3huUWtGQlowSXNTMEZCU3l4dlFrRkJjVUlzUTBGQlFTeFhRVUZYTEVOQlFVc3NTVUZCUVN4TlFVRkJMRU5CUVU4c1MwRkJUeXhGUVVGQk8wRkJRM1pITEUxQlFVOHNUVUZCUVN4RFFVRkJMRTFCUVVFc1IwRkJVeXhEUVVGRExFMUJRVUVzUTBGQlR5eExRVUZMTEVOQlFVRXNRMEZCUVR0QlFVTTNRaXhOUVVGdlFpeHRRa0ZCUVN4RFFVRkJPMEZCUVVFc1VVRkRiRUk3UVVGQlFTeFZRVU5GTEU5QlFVOHNUVUZCVHl4RFFVRkJMRXRCUVVFN1FVRkJRU3hWUVVOa0xFdEJRVUVzUlVGQlFTeERRVUZQUVN4SFFVRkJSQ3hIUVVGQlFTeERRVUZCUVN4SFFVRkJRU3hIUVVGQkxFMUJRVThzUTBGQlFTeFhRVUZCTEV0QlFWQXNaMEpCUVVGQkxFZEJRWEZDTEVOQlFVRXNRMEZCUVN4RFFVRkJMRXRCUVhKQ0xFbEJRVUZETEVkQlFVRkJMRWRCUVVGQkxFZEJRVEpDTEUxQlFVOHNRMEZCUVN4TFFVRkJPMEZCUVVFc1UwRkRNME03UVVGQlFTeFBRVU5FTEVOQlFVRXNRMEZCUVR0QlFVRkJMRXRCUTBnN1FVRkRRU3hKUVVGTkxFdEJRVUVzUTBGQlFTeGhRVUZCTEVOQlFXTXNVVUZCVVN4TlFVRk5MRU5CUVVFc1EwRkJRVHRCUVVGQkxFZEJRM0JETEVOQlFVRTdRVUZGUVN4RlFVRkJMRTFCUVUwc2IwSkJRWFZDTEVkQlFVRXNUMEZCUVR0QlFVRkJMRWxCUXpOQ0xFMUJRVTBzYTBKQlFVRXNRMEZCYlVJc1kwRkJaU3hEUVVGQkxHVkJRV1VzUTBGQlF5eERRVUZCTzBGQlFVRXNTVUZEZUVRc1EwRkJReXhuUWtGQlowSXNaVUZCWlN4RFFVRkJPMEZCUVVFc1IwRkRiRU1zUTBGQlFUdEJRVVZCTEVWQlFVRXNUVUZCVFN4bFFVRnJRaXhIUVVGQk8wRkJRVUVzU1VGRGRFSXNUMEZCVXl4RlFVRkJMRWxCUVVFN1FVRkJRU3hKUVVOVUxFdEJRVThzUlVGQlFTeG5Ra0ZCUVR0QlFVRkJMRWxCUTFBc1ZVRkJXU3hGUVVGQk8wRkJRVUVzVFVGRFZpeE5RVUZSTEVWQlFVRXNhMEpCUVVFN1FVRkJRU3hMUVVOV08wRkJRVUVzU1VGRFFTeHRRa0ZCY1VJc1JVRkJRU3hMUVVGQk8wRkJRVUVzU1VGRGNrSXNhVUpCUVcxQ0xFVkJRVUVzUzBGQlFUdEJRVUZCTEVsQlEyNUNMR1ZCUVdsQ0xFVkJRVUVzUzBGQlFUdEJRVUZCTEVsQlEycENMRkZCUVVFc1JVRkJWU3hEUVVGRExFTkJRWFZDTEV0QlFVRTdRVUZEYUVNc1RVRkJRU3h0UWtGQlFTeERRVUZ2UWl4RFFVRkRMRU5CUVVFc1EwRkJRVHRCUVVWeVFpeE5RVUZCTEVsQlFVa3NSVUZCUlN4SlFVRkxMRU5CUVVFc1EwRkJReXhMUVVFeVFpeExRVUZCTEV0QlFVRXNRMEZCVFN4VFFVRlRMRU5CUVVjc1JVRkJRVHRCUVVOMlJDeFJRVUZCTEd0Q1FVRkJMRU5CUVcxQ0xFVkJRVVVzUTBGQlFTeERRVUZCTzBGQlFVRXNUMEZEZGtJN1FVRkJRU3hMUVVOR08wRkJRVUVzU1VGRFFTeFJRVUZSTEUxQlFVMDdRVUYwUjJ4Q0xFMUJRVUVzU1VGQlFVUXNSMEZCUVVNc1JVRkJRVUVzUjBGQlFVRXNRMEZCUVVFN1FVRjFSMDBzVFVGQlFTeExRVUZCTEVOQlFVMHNZMEZCWXl4TlFVRlJMRVZCUVVFN1FVRkJRU3hSUVVNeFFpeExRVUZCTEVWQlFVRXNRMEZCVDBFc1QwRkJRVVFzUjBGQlFTeEhRVUZCTEdkQ1FVRkJMRU5CUVdsQ0xFOUJRV3BDTEVsQlFVRkJMRWRCUVVGQkxFdEJRVUZCTEVOQlFVRkJMRWRCUVVGQkxFZEJRVUZCTEVOQlFYRkNMRXRCUVhKQ0xFdEJRVUVzU1VGQlFTeEhRVUZCUXl4SFFVRTRRaXhIUVVGQkxFVkJRVUU3UVVGQlFTeFJRVVZ5UXl4UlFVRlJMR2RDUVVGcFFpeERRVUZCTEVkQlFVRXNRMEZCU1N4RFFVRkRMRTFCUVVFc1MwRkJiME1zVDBGQlR5eExRVUZMTEVOQlFVRTdRVUZCUVN4UlFVTTVSU3hoUVVGaExHZENRVUZwUWl4RFFVRkJMRWRCUVVFc1EwRkJTU3hEUVVGRExFMUJRVUVzUzBGQmIwTXNUMEZCVHl4TFFVRkxMRU5CUVVFN1FVRkJRU3hQUVVOd1JpeERRVUZCTEVOQlFVRTdRVUZCUVN4TFFVTklPMEZCUVVFc1IwRkRSaXhEUVVGQk8wRkJSVUVzUlVGQlFTeE5RVUZOTERoQ1FVTklMRXRCUVVFc1EwRkJRU3hoUVVGQkxFTkJRVUVzVFVGQlFTeEZRVUZCTEdOQlFVRXNRMEZCUVR0QlFVRkJMRWxCUTBNc1YwRkJWeXhGUVVGQkxFbEJRVUU3UVVGQlFTeEpRVU5ZTEdkQ1FVRnJRaXhGUVVGQkxFTkJRVUVzUlVGQlFTeEhRVUZCTEV0QlFVRXNRMEZCVFN4TFFVRk5MRU5CUVVFc1owSkJRVUVzUzBGQldpeEpRVUZuUXl4SFFVRkJMRVZCUVVFc1IwRkJRU3hKUVVGQk8wRkJRVUVzU1VGRGJFUXNhMEpCUVd0Q0xFTkJRVU1zVlVGQlFTeExRVUZsTEZWQlFWY3NRMEZCUVN4SlFVRkJMRWRCUVU4c1RVRkJVeXhIUVVGQkxFTkJRVUU3UVVGQlFTeEpRVU0zUkN4MVFrRkJkVUlzUlVGQlFTeEpRVUZCTzBGQlFVRXNTVUZEZGtJc2FVSkJRVUVzUlVGQmJVSXNRMEZCUXl4VlFVRkJMRXRCUVdVc1EwRkJjVUlzYTBKQlFVRXNSVUZCUVN4VlFVRkJMRU5CUVVFc1EwRkJRVHRCUVVGQkxFbEJRM2hFTEZGQlFVRXNSVUZCVlN4TlFVRk5MRXRCUVUwc1EwRkJRU3hSUVVGQk8wRkJRVUVzU1VGRGRFSXNWMEZCVnl4RlFVRkhMRU5CUVVFc1RVRkJRU3hEUVVGUExFOUJRVThzV1VGQlpTeEhRVUZCTEUxQlFVRXNRMEZCVHl4blFrRkJaMElzUzBGQlV5eERRVUZCTEVOQlFVRTdRVUZCUVN4SlFVTXpSU3hMUVVGTkxFVkJRVUVzVFVGQlFUdEJRVUZCTEVsQlEwNHNTMEZCVHl4RlFVRkJMRlZCUVVFN1FVRkJRU3hKUVVOUUxGbEJRV01zUlVGQlFTeFZRVUZCTzBGQlFVRXNTVUZEWkN4WFFVRmhMRVZCUVVFc1kwRkJRVHRCUVVGQkxFbEJRMklzVDBGQlV5eEZRVUZCTEc5Q1FVRkJPMEZCUVVFc1NVRkRWQ3hWUVVGWkxFVkJRVUVzWlVGQlFUdEJRVUZCTEVsQlExb3NZVUZCWlN4RlFVRkJMR3RDUVVGQk8wRkJRVUVzU1VGRFppeFJRVUZCTEVWQlFWVXNRMEZCUXl4RFFVRk5MRXRCUVVFN1FVRkRaaXhOUVVGQkxFdEJRVUVzUTBGQlRTeGpRVUZqTEUxQlFWRXNSVUZCUVR0QlFVRkJMRkZCUXpGQ0xFOUJRVThzUTBGQlJTeERRVUZCTEV0QlFVRTdRVUZCUVN4UlFVTlVMRmRCUVVFc1JVRkJZU3hGUVVGRkxFdEJRVkVzUjBGQlFTeERRVUZETEVWQlFVVXNTMEZCU3l4RFFVRkJMRWRCUVVrc1EwRkJReXhEUVVGQkxFTkJRVVVzUzBGQlN5eERRVUZCTzBGQlFVRXNUMEZETlVNc1EwRkJRU3hEUVVGQk8wRkJSVVFzVFVGQlNTeEpRVUZCTEcxQ1FVRkJMRXRCUVhkQ0xFVkJRVVVzVTBGQlZ5eEZRVUZCTzBGQlEzWkRMRkZCUVVFc2MwSkJRVUVzUTBGQmRVSXNSVUZCUlN4VFFVRlRMRU5CUVVFc1EwRkJRVHRCUVVGQkxFOUJRM0JETzBGQlFVRXNTMEZEUmp0QlFVRkJMRWxCU1VFc1RVRkJRU3hGUVVGUkxHZENRVUZuUWl4RFFVRkRMR1ZCUVVFN1FVRkJRU3hKUVVONlFpeFRRVUZYTEVWQlFVRXNaVUZCUVR0QlFVRkJMRWxCUTFnc1pVRkJhVUlzUlVGQlFTeEpRVUZCTzBGQlFVRXNTVUZEYWtJc1dVRkJXU3haUVVGWk8wRkJhRW81UWl4TlFVRkJSQ3hKUVVGQlFTeEhRVUZCUVN4RFFVRkJRVHRCUVdsS1VTeE5RVUZCTEd0Q1FVRkJMRU5CUVcxQ0xFbEJRVWtzUTBGQlFTeERRVUZCTzBGQlEzWkNMRTFCUVVFc1pVRkJRU3hEUVVGblFpeEpRVUZKTEVOQlFVRXNRMEZCUVR0QlFVTndRaXhOUVVGQkxFMUJRVTFGTEU5QlFWTXNSMEZCUVN4TlFVRk5MRXRCUVUwc1EwRkJRU3hoUVVGQkxFTkJRV01zVFVGQlRTeERRVUZCTEVOQlFVRTdRVUZETDBNc1RVRkJRU3hyUWtGQlFTeERRVUZ0UWl4TFFVRkxMRU5CUVVFc1EwRkJRVHRCUVVONFFpeE5RVUZCTEZOQlFVRXNRMEZCVlVFc1QwRkJUU3hEUVVGQkxFTkJRVUU3UVVGRGFFSXNUVUZCUVN4SlFVRkpMRzFDUVVGeFFpeEZRVUZCTzBGQlEzWkNMRkZCUVVFc2EwSkJRVUVzUTBGQlFTeERRVUZ0UWtZc1IwRkJRU3hIUVVGQkxGVkJRVUVzU1VGQlFTeEpRVUZCTEVkQlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1ZVRkJRU3hEUVVGWkxFdEJRVm9zUzBGQlFTeEpRVUZCTEVkQlFVRkJMRTFCUVhGQ0xFVkJRVVVzUTBGQlFTeERRVUZCTzBGQlFVRXNUMEZETlVNN1FVRkJRU3hMUVVOR08wRkJRVUVzU1VGRFFTeGhRVUZoTEUxQlFVMDdRVUZEYWtJc1RVRkJRU3hsUVVGQkxFTkJRV2RDTEV0QlFVc3NRMEZCUVN4RFFVRkJPMEZCUTNKQ0xFMUJRVUVzYTBKQlFVRXNRMEZCYlVJc1JVRkJSU3hEUVVGQkxFTkJRVUU3UVVGQlFTeExRVU4yUWp0QlFVRkJMRWRCUVVFc1JVRkRTeXhuUWtGQlowSXNaVUZEZGtJc1EwRkJRU3hEUVVGQkxFTkJRVUU3UVVGSFJpeEZRVUZCTEUxQlFVMHNORUpCUTBnc1MwRkJRU3hEUVVGQkxHRkJRVUVzUTBGQlFTeE5RVUZCTEVWQlFVRTdRVUZCUVN4SlFVZERMRWRCUVVFc1JVRkJTeXhEUVVGSExFVkJRVUVzWlVGQlFTeEhRVUZyUWl4VFFVRlpMRWRCUVVFc1VVRkJRU3hEUVVGQkxFTkJRVUU3UVVGQlFTeEpRVU4wUXl4UlFVRkJMRVZCUVZVc1RVRkJUU3hMUVVGTkxFTkJRVUVzVVVGQlFUdEJRVUZCTEVsQlEzUkNMRmRCUVZjc1JVRkJSeXhEUVVGQkxFMUJRVUVzUTBGQlR5eExRVUZMTEZWQlFXRXNSMEZCUVN4TlFVRkJMRU5CUVU4c1owSkJRV2RDTEV0QlFWTXNRMEZCUVN4RFFVRkJPMEZCUVVFc1NVRkRka1VzUzBGQlRTeEZRVUZCTEUxQlFVRTdRVUZCUVN4SlFVTk9MR2RDUVVGclFpeEZRVUZCTEVOQlFVRXNSVUZCUVN4SFFVRkJMRXRCUVVFc1EwRkJUU3hMUVVGTkxFTkJRVUVzWjBKQlFVRXNTMEZCV2l4SlFVRm5ReXhIUVVGQkxFVkJRVUVzUjBGQlFTeEpRVUZCTzBGQlFVRXNTVUZEYkVRc1MwRkJUeXhGUVVGQkxGRkJRVUU3UVVGQlFTeEpRVU5RTEZkQlFXRXNSVUZCUVN4alFVRkJPMEZCUVVFc1NVRkRZaXhQUVVGQkxFVkJRVk1zYlVKQlFXMUNMRWxCUVVrc1EwRkJRVHRCUVVGQkxFbEJRMmhETEZGQlFVRXNSVUZCVlN4RFFVRkRMRU5CUVUwc1MwRkJRVHRCUVVObUxFMUJRVUVzUzBGQlFTeERRVUZOTEdOQlFXTXNUVUZCVVN4RlFVRkJPMEZCUVVFc1VVRkRNVUlzUzBGQlN5eERRVUZGTEVOQlFVRXNTMEZCUVR0QlFVRkJMRkZCUTFBc1ZVRkJWU3hEUVVGRkxFTkJRVUVzUzBGQlFUdEJRVUZCTEZGQlJWb3NTMEZCVHl4RlFVRkJMRVZCUVVFN1FVRkJRU3hSUVVOUUxGZEJRVUVzUlVGQllTeERRVUZETEVWQlFVVXNRMEZCUVR0QlFVRkJMRkZCUTJoQ0xFMUJRVkVzUlVGQlFTeExRVUZCTEVOQlFVRTdRVUZCUVN4UFFVTlVMRU5CUVVFc1EwRkJRVHRCUVVORUxFMUJRVUVzYlVKQlFVRXNRMEZCYjBJc1JVRkJSU3hEUVVGQkxFTkJRVUU3UVVGQlFTeExRVU40UWp0QlFVRkJMRWxCUTBFc1UwRkJRU3hGUVVGWExFOUJRVThzUjBGQlVTeExRVUZCTEVWQlFVRTdRVUZCUVN4SlFVa3hRaXhOUVVGQkxFVkJRVkVzWTBGQll5eERRVUZETEdGQlFVRTdRVUZCUVN4SlFVTjJRaXhUUVVGWExFVkJRVUVzWVVGQlFUdEJRVUZCTEVsQlExZ3NXVUZCV1N4WlFVRlpPMEZCUTNSQ0xFMUJRVUVzWVVGQlFTeERRVUZqTEVsQlFVa3NRMEZCUVN4RFFVRkJPMEZCUTJ4Q0xFMUJRVUVzWjBKQlFVRXNRMEZCYVVJc1NVRkJTU3hEUVVGQkxFTkJRVUU3UVVGRGNrSXNUVUZCUVN4TlFVRk5SeXhMUVVGUExFZEJRVUVzVFVGQlRTeExRVUZOTEVOQlFVRXNVVUZCUVN4RFFVRlRMRTlCUVU4c1IwRkJSeXhEUVVGQkxFTkJRVUU3UVVGRE5VTXNUVUZCUVN4blFrRkJRU3hEUVVGcFFpeExRVUZMTEVOQlFVRXNRMEZCUVR0QlFVTjBRaXhOUVVGQkxFOUJRVUVzUTBGQlVVRXNTMEZCU1N4RFFVRkJMRU5CUVVFN1FVRkJRU3hMUVVOa08wRkJRVUVzU1VGRFFTeGhRVUZoTEUxQlFVMDdRVUZEYWtJc1RVRkJRU3hoUVVGQkxFTkJRV01zUzBGQlN5eERRVUZCTEVOQlFVRTdRVUZCUVN4TFFVTnlRanRCUVVGQkxFbEJRMEVzVVVGQlVTeE5RVUZOTzBGQlExb3NUVUZCU1N4SlFVRkJMRTFCUVVFc1EwRkJUeXhSUVVGUkxFVkJRVWtzUlVGQlFUdEJRVU55UWl4UlFVRkJMRXRCUVVFc1EwRkJUU3hqUVVGakxFMUJRVTBzUTBGQlFTeERRVUZCTzBGQlFVRXNUMEZETlVJN1FVRkJRU3hMUVVOR08wRkJRVUVzU1VGRFFTeGxRVUZwUWl4RlFVRkJMRWxCUVVFN1FVRkJRU3hIUVVOdVFpeERRVUZCTEVOQlFVRTdRVUZIUml4RlFVRkJMRTFCUVUwc2FVTkJRMGdzUzBGQlFTeERRVUZCTEdGQlFVRXNRMEZCUVN4TlFVRkJMRVZCUVVFN1FVRkJRU3hKUVVORExGTkJRVUVzUlVGQlZ5eEZRVUZITEVOQlFVRXNUVUZCUVN4RFFVRlBMRkZCUVZVc1JVRkJRVHRCUVVGQkxFMUJRemRDTEVOQlFVTXNUMEZCVHl4aFFVRm5RaXhIUVVGQkxHTkJRVUU3UVVGQlFTeExRVU42UWl4RFFVRkJPMEZCUVVFc1NVRkRSQ3hQUVVGUExFMUJRVThzUTBGQlFTeFJRVUZCTzBGQlFVRXNTVUZEWkN4UlFVRkJMRVZCUVZVc1RVRkJUU3hMUVVGTkxFTkJRVUVzVVVGQlFUdEJRVUZCTEVsQlEzUkNMRTlCUVVFc1JVRkJVeXhOUVVGTkxHRkJRV01zUlVGQlFUdEJRVUZCTEVsQlF6ZENMRkZCUVZVc1JVRkJRU3huUWtGQlFUdEJRVUZCTEVsQlExWXNXVUZCV1N4TlFVRk5PMEZCUTJoQ0xFMUJRVUVzYVVKQlFVRXNRMEZCYTBJc1NVRkJTU3hEUVVGQkxFTkJRVUU3UVVGQlFTeExRVU40UWp0QlFVRkJMRWxCUTBFc1lVRkJZU3hOUVVGTk8wRkJRMnBDTEUxQlFVRXNhVUpCUVVFc1EwRkJhMElzUzBGQlN5eERRVUZCTEVOQlFVRTdRVUZCUVN4TFFVTjZRanRCUVVGQkxFZEJRMFlzUTBGQlFTeERRVUZCTzBGQlIwWXNSVUZCU1N4SlFVRkJMRXRCUVVFc1EwRkJUU3hMUVVGTkxFTkJRVUVzVFVGQlFTeExRVUZYTEZWQlFWa3NSVUZCUVR0QlFVTnlReXhKUVVGQkxFbEJRVWtzVDBGQlR5eEhRVUZMTEVWQlFVRTdRVUZEWkN4TlFVRkJMRTFCUVUwc2QwSkJRMGdzUzBGQlFTeERRVUZCTEdGQlFVRXNRMEZCUVN4aFFVRkJMRVZCUVVFN1FVRkJRU3hSUVVGakxFMUJRVThzUlVGQlFTeFZRVUZCTzBGQlFVRXNVVUZCVnl4TFFVRkJMRVZCUVVFc1EwRkJUeXhGUVVGUExFZEJRVUVzVFVGQlFTeERRVUZCTEVkQlFVRXNTMEZCVUN4SlFVRmpMRWRCUVVFc1JVRkJRU3hIUVVGQkxFVkJRVUU3UVVGQlFTeFJRVUZKTEZGQlFWVXNSVUZCUVN4TlFVRk5MRXRCUVUwc1EwRkJRU3hoUVVGQkxFTkJRV01zVFVGQlRTeERRVUZCTzBGQlFVRXNUMEZCUnl4RFFVRkJMRU5CUVVFN1FVRkhla2NzVFVGQlFTeDFRa0ZEUnl4TFFVRkJMRU5CUVVFc1lVRkJRU3hEUVVGQkxFdEJRVUVzUlVGQlFUdEJRVUZCTEZGQlFVMHNTMEZCUVR0QlFVRkJMRkZCUVdNc1lVRkJRU3hGUVVGaExHVkJRV1VzVFVGQlR5eERRVUZCTEVkQlFVRXNRMEZCUVN4RFFVRkJPMEZCUVVFc1VVRkJUeXhYUVVGWExFMUJRVThzUTBGQlFTeExRVUZCTzBGQlFVRXNUMEZCUVN4clFrRkRPVVVzUzBGQlFTeERRVUZCTEdGQlFVRXNRMEZCUVN4TFFVRkJMRVZCUVVFN1FVRkJRU3hSUVVGSkxGZEJRVmNzVFVGQlR5eERRVUZCTEU5QlFVRTdRVUZCUVN4UFFVTndRaXhGUVVGQkxHTkJRVUVzUlVGRFFTeFhRVU5JTEVOQlEwWXNRMEZCUVN4RFFVRkJPMEZCUVVFc1MwRkZSeXhOUVVGQk8wRkJRMHdzVFVGQlFTeDFRa0ZEUnl4TFFVRkJMRU5CUVVFc1lVRkJRU3hEUVVGQkxFdEJRVUVzUlVGQlFUdEJRVUZCTEZGQlFVMHNTMEZCVHl4RlFVRkJMR05CUVVFN1FVRkJRU3hSUVVGblFpeGhRVUZCTEVWQlFXRXNaVUZCWlN4TlFVRlBMRU5CUVVFc1IwRkJRU3hEUVVGQkxFTkJRVUU3UVVGQlFTeFJRVUZQTEZkQlFWY3NUVUZCVHl4RFFVRkJMRXRCUVVFN1FVRkJRU3hQUVVGQkxFVkJRM1pHTEZOQlEwZ3NRMEZCUVN4RFFVRkJPMEZCUVVFc1MwRkZTanRCUVVGQkxFZEJRMFk3UVVGRlFTeEZRVUZCTEhWQ1FVTkhMRXRCUVVFc1EwRkJRU3hoUVVGQkxFTkJRVUVzUzBGQlFTeEZRVUZCTzBGQlFVRXNTVUZCU1N4WFFVRlhMRTFCUVU4c1EwRkJRU3hQUVVGQk8wRkJRVUVzU1VGQlV5eGhRVUZCTEVWQlFXRXNaVUZCWlN4TlFVRlBMRU5CUVVFc1IwRkJRU3hEUVVGQkxFTkJRVUU3UVVGQlFTeEhRVU5vUlN4RlFVRkJMRk5CUVVFc1JVRkRRU3hqUVVOQkxFVkJRVUVzVjBGQlFTeHJRa0ZEUVN4TFFVRkJMRU5CUVVFc1lVRkJRU3hEUVVGQkxFMUJRVUVzUlVGQlFUdEJRVUZCTEVsQlEwTXNUMEZCVVN4RlFVRkJMRmRCUVVFN1FVRkJRU3hKUVVOU0xGbEJRVmNzUlVGQlFTeGxRVUZCTzBGQlFVRXNTVUZEV0N4TFFVRk5MRVZCUVVFc1pVRkJRVHRCUVVGQkxFbEJRMDRzVjBGQlZ5eE5RVUZQTEVOQlFVRXNXVUZCUVR0QlFVRkJMRWxCUTJ4Q0xFbEJRVXNzUlVGQlFTeFBRVUZCTzBGQlFVRXNTVUZEVEN4aFFVRmhMRVZCUVVFc1EwRkJRU3h0UWtGQlFTeEZRVUZCTEVOQlFYTkNMRVZCUVU4c1IwRkJRU3hOUVVGQkxFTkJRVUVzUjBGQlFTeExRVUZRTEVsQlFXTXNSMEZCUVN4RlFVRkJMRWRCUVVFc1JVRkJRU3hEUVVGQkxFTkJRVUU3UVVGQlFTeEpRVU5xUkN4UFFVRlRMRVZCUVVFc1RVRkJUU3hMUVVGTkxFTkJRVUVzWVVGQlFTeERRVUZqTEUxQlFVMHNRMEZCUVR0QlFVRkJMRWRCUXpORExFTkJRMFlzUTBGQlFTeERRVUZCTzBGQlJVb3NRMEZCUVR0QlFVVkJMRTFCUVUwc1UwRkJRU3hIUVVGWkxFTkJRVU1zUzBGQk1FSXNUVUZCUVR0QlFVRkJMRVZCUXpORExFOUJRVThzUjBGQlNTeERRVUZCTzBGQlFVRXNTVUZEVkN4WlFVRmpMRVZCUVVFc1EwRkJRVHRCUVVGQkxFZEJRMllzUTBGQlFUdEJRVUZCTEVWQlEwUXNVMEZCVXl4SFFVRkpMRU5CUVVFN1FVRkJRU3hKUVVOWUxFOUJRVk1zUlVGQlFTeE5RVUZCTzBGQlFVRXNTVUZEVkN4TFFVRlBMRVZCUVVFN1FVRkJRU3hOUVVOTUxIRkNRVUYxUWl4RlFVRkJPMEZCUVVFc1VVRkZja0lzVlVGQldTeEZRVUZCTEVOQlFVRXNRMEZCUVR0QlFVRkJMRTlCUTJRN1FVRkJRU3hOUVVWQkxHVkJRV2xDTEVWQlFVRTdRVUZCUVN4UlFVTm1MRzlDUVVGelFpeEZRVUZCTEVOQlFVRTdRVUZCUVN4UlFVTjBRaXgxUWtGQmVVSXNSVUZCUVN4RFFVRkJPMEZCUVVFc1QwRkRNMEk3UVVGQlFTeE5RVVZCTEdOQlFXZENMRVZCUVVFN1FVRkJRU3hSUVVOa0xHMUNRVUZ4UWl4RlFVRkJMRU5CUVVFN1FVRkJRU3hSUVVOeVFpeHpRa0ZCZDBJc1JVRkJRU3hEUVVGQk8wRkJRVUVzVDBGRE1VSTdRVUZCUVN4TlFVVkJMSE5EUVVGM1F5eEZRVUZCTzBGQlFVRXNVVUZEZEVNc1dVRkJZeXhGUVVGQkxFTkJRVUU3UVVGQlFTeFBRVU5vUWp0QlFVRkJMRTFCUjBFc1VVRkJWU3hGUVVGQkxGVkJRVUU3UVVGQlFTeE5RVU5XTEUxQlFWRXNSVUZCUVN4RFFVRkJPMEZCUVVFc1RVRkpVaXhUUVVGWExFVkJRVUU3UVVGQlFTeFJRVU5VTEUxQlFWRXNSVUZCUVN4RFFVRkJPMEZCUVVFc1QwRkRWanRCUVVGQkxFMUJSVUVzWjBKQlFXdENMRVZCUVVFN1FVRkJRU3hSUVVOb1FpeE5RVUZSTEVWQlFVRXNRMEZCUVR0QlFVRkJMRTlCUTFZN1FVRkJRU3hMUVVOR08wRkJRVUVzUjBGRFJDeERRVUZCTzBGQlFVRXNSVUZEUkN4bFFVRmxMRWRCUVVrc1EwRkJRVHRCUVVGQkxFbEJRMnBDTEZGQlFVRXNSVUZCVlN4TFFVRk5MRU5CUVVFc1QwRkJRU3hEUVVGUkxFVkJRVVVzUTBGQlFUdEJRVUZCTEVkQlF6TkNMRU5CUVVFN1FVRkJRU3hGUVVORUxFOUJRVThzUjBGQlNTeERRVUZCTzBGQlFVRXNTVUZEVkN4VFFVRlhMRVZCUVVFc1UwRkJRVHRCUVVGQkxFbEJRMWdzVlVGQldTeEZRVUZCTEVOQlFVRTdRVUZCUVN4SlFVTmFMRkZCUVZVc1JVRkJRU3hOUVVGQk8wRkJRVUVzUjBGRFdDeERRVUZCTzBGQlFVRXNSVUZEUkN4TFFVRkxMRWRCUVVrc1EwRkJRVHRCUVVGQkxFbEJRMUFzVTBGQlZ5eEZRVUZCTEZOQlFVRTdRVUZCUVN4SlFVTllMRkZCUVZVc1JVRkJRU3hOUVVGQk8wRkJRVUVzU1VGRFZpeFZRVUZaTEVWQlFVRXNRMEZCUVR0QlFVRkJMRWRCUTJJc1EwRkJRVHRCUVVGQkxFVkJRMFFzVlVGQlZTeEhRVUZKTEVOQlFVRTdRVUZCUVN4SlFVTmFMRlZCUVZrc1JVRkJRU3hEUVVGQk8wRkJRVUVzU1VGRFdpeFRRVUZYTEVWQlFVRXNVMEZCUVR0QlFVRkJMRWRCUTFvc1EwRkJRVHRCUVVGQkxFVkJRMFFzWTBGQll5eEhRVUZKTEVOQlFVRTdRVUZCUVN4SlFVTm9RaXhYUVVGaExFVkJRVUVzUzBGQlFTeERRVUZOTEU5QlFWRXNRMEZCUVN4RFFVRkJMRWRCUVVrc1EwRkJReXhEUVVGQk8wRkJRVUVzU1VGRGFFTXNXVUZCWXl4RlFVRkJMRXRCUVVFc1EwRkJUU3hQUVVGUkxFTkJRVUVzUTBGQlFTeEhRVUZKTEVOQlFVTXNRMEZCUVR0QlFVRkJMRWxCUTJwRExGVkJRVmtzUlVGQlFTeE5RVUZCTzBGQlFVRXNTVUZEV2l4TFFVRkJMRVZCUVU4c1MwRkJUU3hEUVVGQkxFOUJRVUVzUTBGQlVTeERRVUZETEVOQlFVRTdRVUZCUVN4SlFVTjBRaXhYUVVGQkxFVkJRV0VzUzBGQlRTeERRVUZCTEU5QlFVRXNRMEZCVVN4RFFVRkRMRU5CUVVFN1FVRkJRU3hKUVVNMVFpeFRRVUZYTEVWQlFVRXNXVUZCUVR0QlFVRkJMRWxCUlZnc1VVRkJWU3hGUVVGQkxGVkJRVUU3UVVGQlFTeEpRVU5XTEVsQlFVMHNSVUZCUVN4TFFVRkJPMEZCUVVFc1IwRkRVQ3hEUVVGQk8wRkJRMGdzUTBGQlFTeERRVUZCT3pzN095SjlcbiJdLCJuYW1lcyI6WyJfYSIsIl9iIiwidmFsdWVzIiwia2V5cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdCQSxTQUFTLGdCQUFBLENBQWlCLEtBQWEsS0FBd0MsRUFBQTtBQUM3RSxFQUFBLE9BQU8sUUFBUSxFQUNYLEdBQUE7SUFDRSxLQUFPLEVBQUEsR0FBQTtBQUNQLElBQUEsS0FBQSxFQUFPLEtBQVMsSUFBQSxHQUFBO0dBRWxCLEdBQUEsSUFBQSxDQUFBO0FBQ04sQ0FBQTtBQUVBLE1BQU0sYUFBYSxNQUFNLElBQUEsQ0FBQTtBQUVsQixTQUFTLG1CQUFvQixDQUFBLEVBQUUsTUFBUSxFQUFBLEtBQUEsRUFBZ0IsRUFBQTtBQTNCOUQsRUFBQSxJQUFBLEVBQUEsRUFBQSxFQUFBLEVBQUEsRUFBQSxFQUFBLEVBQUEsRUFBQSxFQUFBLENBQUE7QUE0QlEsRUFBQSxNQUFBLE1BQUEsR0FBUyxXQUFXLFNBQVMsQ0FBQSxDQUFBO0FBRW5DLEVBQUEsTUFBTSxDQUFDLElBQU0sRUFBQSxPQUFPLENBQUksR0FBQSxRQUFBLENBQTRCLEVBQUUsQ0FBQSxDQUFBO0FBQ3RELEVBQUEsTUFBTSxDQUFDLE1BQVEsRUFBQSxTQUFTLENBQUksR0FBQSxRQUFBLENBQTRCLEVBQUUsQ0FBQSxDQUFBO0FBQzFELEVBQUEsTUFBTSxDQUFDLGFBQUEsRUFBZSxnQkFBZ0IsQ0FBQSxHQUFJLFNB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