@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.
- package/CHANGELOG.md +20 -0
- package/dist/esm/components/VizPanel/VizPanelRenderer.js +4 -3
- package/dist/esm/components/VizPanel/VizPanelRenderer.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/esm/components/layout/CSSGrid/SceneCSSGridItem.js +0 -33
- package/dist/esm/dist/esm/behaviors/CursorSync.js +0 -76
- package/dist/esm/dist/esm/behaviors/LiveNowTimer.js +0 -44
- package/dist/esm/dist/esm/behaviors/SceneQueryController.js +0 -14
- package/dist/esm/dist/esm/components/EmbeddedScene.js +0 -59
- package/dist/esm/dist/esm/components/NestedScene.js +0 -95
- package/dist/esm/dist/esm/components/SceneApp/SceneApp.js +0 -27
- package/dist/esm/dist/esm/components/SceneApp/SceneAppPage.js +0 -176
- package/dist/esm/dist/esm/components/SceneApp/SceneAppPageView.js +0 -104
- package/dist/esm/dist/esm/components/SceneApp/utils.js +0 -42
- package/dist/esm/dist/esm/components/SceneByFrameRepeater.js +0 -41
- package/dist/esm/dist/esm/components/SceneByVariableRepeater.js +0 -55
- package/dist/esm/dist/esm/components/SceneCanvasText.js +0 -32
- package/dist/esm/dist/esm/components/SceneControlsSpacer.js +0 -17
- package/dist/esm/dist/esm/components/SceneDebugger/DebugDetails.js +0 -82
- package/dist/esm/dist/esm/components/SceneDebugger/DebugTreeNode.js +0 -72
- package/dist/esm/dist/esm/components/SceneDebugger/SceneDebugger.js +0 -77
- package/dist/esm/dist/esm/components/SceneReactObject.js +0 -34
- package/dist/esm/dist/esm/components/SceneRefreshPicker.js +0 -205
- package/dist/esm/dist/esm/components/SceneTimePicker.js +0 -139
- package/dist/esm/dist/esm/components/SceneTimeRangeCompare.js +0 -240
- package/dist/esm/dist/esm/components/SceneToolbarButton.js +0 -33
- package/dist/esm/dist/esm/components/VizPanel/VizPanel.js +0 -406
- package/dist/esm/dist/esm/components/VizPanel/VizPanelExploreButton.js +0 -44
- package/dist/esm/dist/esm/components/VizPanel/VizPanelMenu.js +0 -59
- package/dist/esm/dist/esm/components/VizPanel/VizPanelRenderer.js +0 -285
- package/dist/esm/dist/esm/components/VizPanel/VizPanelSeriesLimit.js +0 -45
- package/dist/esm/dist/esm/components/VizPanel/colorSeriesConfigFactory.js +0 -72
- package/dist/esm/dist/esm/components/VizPanel/registerRuntimePanelPlugin.js +0 -11
- package/dist/esm/dist/esm/components/VizPanel/seriesVisibilityConfigFactory.js +0 -164
- package/dist/esm/dist/esm/components/layout/CSSGrid/SceneCSSGridLayout.js +0 -124
- package/dist/esm/dist/esm/components/layout/LazyLoader.js +0 -103
- package/dist/esm/dist/esm/components/layout/SceneFlexLayout.js +0 -135
- package/dist/esm/dist/esm/components/layout/grid/SceneGridItem.js +0 -30
- package/dist/esm/dist/esm/components/layout/grid/SceneGridLayout.js +0 -283
- package/dist/esm/dist/esm/components/layout/grid/SceneGridLayoutRenderer.js +0 -178
- package/dist/esm/dist/esm/components/layout/grid/SceneGridRow.js +0 -190
- package/dist/esm/dist/esm/components/layout/grid/constants.js +0 -7
- package/dist/esm/dist/esm/components/layout/grid/utils.js +0 -36
- package/dist/esm/dist/esm/components/layout/split/SplitLayout.js +0 -17
- package/dist/esm/dist/esm/components/layout/split/SplitLayoutRenderer.js +0 -29
- package/dist/esm/dist/esm/components/layout/split/Splitter.js +0 -386
- package/dist/esm/dist/esm/core/SceneComponentWrapper.js +0 -57
- package/dist/esm/dist/esm/core/SceneDataNode.js +0 -43
- package/dist/esm/dist/esm/core/SceneObjectBase.js +0 -286
- package/dist/esm/dist/esm/core/SceneObjectRef.js +0 -32
- package/dist/esm/dist/esm/core/SceneTimeRange.js +0 -231
- package/dist/esm/dist/esm/core/events.js +0 -11
- package/dist/esm/dist/esm/core/sceneGraph/getTimeRange.js +0 -10
- package/dist/esm/dist/esm/core/sceneGraph/index.js +0 -25
- package/dist/esm/dist/esm/core/sceneGraph/sceneGraph.js +0 -178
- package/dist/esm/dist/esm/core/sceneGraph/utils.js +0 -64
- package/dist/esm/dist/esm/core/types.js +0 -15
- package/dist/esm/dist/esm/querying/DataLayersMerger.js +0 -46
- package/dist/esm/dist/esm/querying/ExtraQueryProvider.js +0 -6
- package/dist/esm/dist/esm/querying/RuntimeDataSource.js +0 -6
- package/dist/esm/dist/esm/querying/SceneDataLayerSet.js +0 -100
- package/dist/esm/dist/esm/querying/SceneQueryRunner.js +0 -468
- package/dist/esm/dist/esm/querying/extraQueryProcessingOperator.js +0 -46
- package/dist/esm/dist/esm/querying/getEnrichedDataRequest.js +0 -12
- package/dist/esm/dist/esm/querying/layers/SceneDataLayerBase.js +0 -112
- package/dist/esm/dist/esm/querying/layers/SceneDataLayerControls.js +0 -51
- package/dist/esm/dist/esm/querying/layers/annotations/AnnotationsDataLayer.js +0 -130
- package/dist/esm/dist/esm/querying/layers/annotations/filterAnnotations.js +0 -85
- package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationQuery.js +0 -121
- package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationsSupport.js +0 -211
- package/dist/esm/dist/esm/querying/layers/annotations/utils.js +0 -77
- package/dist/esm/dist/esm/querying/registerQueryWithController.js +0 -41
- package/dist/esm/dist/esm/services/SceneObjectUrlSyncConfig.js +0 -30
- package/dist/esm/dist/esm/services/UniqueUrlKeyMapper.js +0 -45
- package/dist/esm/dist/esm/services/UrlSyncManager.js +0 -167
- package/dist/esm/dist/esm/services/useUrlSync.js +0 -29
- package/dist/esm/dist/esm/services/utils.js +0 -71
- package/dist/esm/dist/esm/utils/ControlsLabel.js +0 -107
- package/dist/esm/dist/esm/utils/LoadingIndicator.js +0 -19
- package/dist/esm/dist/esm/utils/SafeSerializableSceneObject.js +0 -39
- package/dist/esm/dist/esm/utils/compatibility/setWindowGrafanaSceneContext.js +0 -16
- package/dist/esm/dist/esm/utils/date.js +0 -15
- package/dist/esm/dist/esm/utils/evaluateTimeRange.js +0 -16
- package/dist/esm/dist/esm/utils/explore.js +0 -47
- package/dist/esm/dist/esm/utils/getCompareSeriesRefId.js +0 -4
- package/dist/esm/dist/esm/utils/getDataSource.js +0 -18
- package/dist/esm/dist/esm/utils/getMessageFromError.js +0 -24
- package/dist/esm/dist/esm/utils/metricTree.js +0 -53
- package/dist/esm/dist/esm/utils/parseUrlParam.js +0 -41
- package/dist/esm/dist/esm/utils/utils.js +0 -11
- package/dist/esm/dist/esm/utils/wrapInSafeSerializableSceneObject.js +0 -30
- package/dist/esm/dist/esm/utils/writeSceneLog.js +0 -12
- package/dist/esm/dist/esm/variables/VariableDependencyConfig.js +0 -150
- package/dist/esm/dist/esm/variables/VariableValueRecorder.js +0 -71
- package/dist/esm/dist/esm/variables/adhoc/AdHocFilterBuilder.js +0 -24
- package/dist/esm/dist/esm/variables/adhoc/AdHocFilterRenderer.js +0 -303
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +0 -162
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +0 -20
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +0 -640
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +0 -65
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +0 -146
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +0 -114
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +0 -68
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/utils.js +0 -146
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariable.js +0 -289
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +0 -76
- package/dist/esm/dist/esm/variables/adhoc/getAdhocOptionSearcher.js +0 -13
- package/dist/esm/dist/esm/variables/adhoc/patchGetAdhocFilters.js +0 -47
- package/dist/esm/dist/esm/variables/components/VariableValueControl.js +0 -23
- package/dist/esm/dist/esm/variables/components/VariableValueInput.js +0 -33
- package/dist/esm/dist/esm/variables/components/VariableValueSelect.js +0 -228
- package/dist/esm/dist/esm/variables/components/VariableValueSelectors.js +0 -72
- package/dist/esm/dist/esm/variables/components/getOptionSearcher.js +0 -15
- package/dist/esm/dist/esm/variables/constants.js +0 -9
- package/dist/esm/dist/esm/variables/getEnrichedFiltersRequest.js +0 -12
- package/dist/esm/dist/esm/variables/groupby/GroupByVariable.js +0 -259
- package/dist/esm/dist/esm/variables/groupby/GroupByVariableUrlSyncHandler.js +0 -63
- package/dist/esm/dist/esm/variables/groupby/findActiveGroupByVariablesByUid.js +0 -13
- package/dist/esm/dist/esm/variables/interpolation/ScopedVarsVariable.js +0 -40
- package/dist/esm/dist/esm/variables/interpolation/defaults.js +0 -21
- package/dist/esm/dist/esm/variables/interpolation/fieldAccessorCache.js +0 -13
- package/dist/esm/dist/esm/variables/interpolation/formatRegistry.js +0 -296
- package/dist/esm/dist/esm/variables/interpolation/sceneInterpolator.js +0 -87
- package/dist/esm/dist/esm/variables/lookupVariable.js +0 -20
- package/dist/esm/dist/esm/variables/macros/AllVariablesMacro.js +0 -57
- package/dist/esm/dist/esm/variables/macros/contextMacros.js +0 -43
- package/dist/esm/dist/esm/variables/macros/dataMacros.js +0 -134
- package/dist/esm/dist/esm/variables/macros/index.js +0 -26
- package/dist/esm/dist/esm/variables/macros/templateProxies.js +0 -51
- package/dist/esm/dist/esm/variables/macros/timeMacros.js +0 -86
- package/dist/esm/dist/esm/variables/macros/types.js +0 -11
- package/dist/esm/dist/esm/variables/macros/urlMacros.js +0 -56
- package/dist/esm/dist/esm/variables/sets/SceneVariableSet.js +0 -254
- package/dist/esm/dist/esm/variables/types.js +0 -11
- package/dist/esm/dist/esm/variables/utils.js +0 -172
- package/dist/esm/dist/esm/variables/variants/ConstantVariable.js +0 -38
- package/dist/esm/dist/esm/variables/variants/CustomVariable.js +0 -60
- package/dist/esm/dist/esm/variables/variants/DataSourceVariable.js +0 -88
- package/dist/esm/dist/esm/variables/variants/IntervalVariable.js +0 -117
- package/dist/esm/dist/esm/variables/variants/MultiValueVariable.js +0 -295
- package/dist/esm/dist/esm/variables/variants/TestVariable.js +0 -117
- package/dist/esm/dist/esm/variables/variants/TextBoxVariable.js +0 -61
- package/dist/esm/dist/esm/variables/variants/query/QueryVariable.js +0 -139
- package/dist/esm/dist/esm/variables/variants/query/createQueryVariableRunner.js +0 -129
- package/dist/esm/dist/esm/variables/variants/query/guards.js +0 -28
- package/dist/esm/dist/esm/variables/variants/query/toMetricFindValues.js +0 -96
- package/dist/esm/dist/esm/variables/variants/query/utils.js +0 -124
- package/dist/esm/querying/DataProviderSharer.js +0 -39
- package/dist/esm/src/behaviors/ActWhenVariableChanged.js +0 -27
- package/dist/esm/src/behaviors/CursorSync.js +0 -76
- package/dist/esm/src/behaviors/LiveNowTimer.js +0 -44
- package/dist/esm/src/behaviors/SceneQueryController.js +0 -60
- package/dist/esm/src/behaviors/index.js +0 -5
- package/dist/esm/src/components/EmbeddedScene.js +0 -59
- package/dist/esm/src/components/NestedScene.js +0 -95
- package/dist/esm/src/components/SceneApp/SceneApp.js +0 -37
- package/dist/esm/src/components/SceneApp/SceneAppPage.js +0 -176
- package/dist/esm/src/components/SceneApp/SceneAppPageView.js +0 -104
- package/dist/esm/src/components/SceneApp/utils.js +0 -42
- package/dist/esm/src/components/SceneByFrameRepeater.js +0 -41
- package/dist/esm/src/components/SceneByVariableRepeater.js +0 -55
- package/dist/esm/src/components/SceneCanvasText.js +0 -32
- package/dist/esm/src/components/SceneControlsSpacer.js +0 -17
- package/dist/esm/src/components/SceneDebugger/DebugDetails.js +0 -82
- package/dist/esm/src/components/SceneDebugger/DebugTreeNode.js +0 -72
- package/dist/esm/src/components/SceneDebugger/SceneDebugger.js +0 -77
- package/dist/esm/src/components/SceneReactObject.js +0 -34
- package/dist/esm/src/components/SceneRefreshPicker.js +0 -205
- package/dist/esm/src/components/SceneTimePicker.js +0 -139
- package/dist/esm/src/components/SceneTimeRangeCompare.js +0 -240
- package/dist/esm/src/components/SceneToolbarButton.js +0 -33
- package/dist/esm/src/components/VizPanel/VizPanel.js +0 -406
- package/dist/esm/src/components/VizPanel/VizPanelExploreButton.js +0 -44
- package/dist/esm/src/components/VizPanel/VizPanelMenu.js +0 -59
- package/dist/esm/src/components/VizPanel/VizPanelRenderer.js +0 -285
- package/dist/esm/src/components/VizPanel/VizPanelSeriesLimit.js +0 -45
- package/dist/esm/src/components/VizPanel/colorSeriesConfigFactory.js +0 -72
- package/dist/esm/src/components/VizPanel/registerRuntimePanelPlugin.js +0 -56
- package/dist/esm/src/components/VizPanel/seriesVisibilityConfigFactory.js +0 -164
- package/dist/esm/src/components/layout/CSSGrid/SceneCSSGridLayout.js +0 -124
- package/dist/esm/src/components/layout/LazyLoader.js +0 -103
- package/dist/esm/src/components/layout/SceneFlexLayout.js +0 -135
- package/dist/esm/src/components/layout/grid/SceneGridItem.js +0 -30
- package/dist/esm/src/components/layout/grid/SceneGridLayout.js +0 -283
- package/dist/esm/src/components/layout/grid/SceneGridLayoutRenderer.js +0 -178
- package/dist/esm/src/components/layout/grid/SceneGridRow.js +0 -190
- package/dist/esm/src/components/layout/grid/constants.js +0 -7
- package/dist/esm/src/components/layout/grid/utils.js +0 -36
- package/dist/esm/src/components/layout/split/SplitLayout.js +0 -17
- package/dist/esm/src/components/layout/split/SplitLayoutRenderer.js +0 -29
- package/dist/esm/src/components/layout/split/Splitter.js +0 -386
- package/dist/esm/src/core/PanelBuilders/FieldConfigBuilder.js +0 -100
- package/dist/esm/src/core/PanelBuilders/FieldConfigBuilders.js +0 -75
- package/dist/esm/src/core/PanelBuilders/FieldConfigOverridesBuilder.js +0 -75
- package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilder.js +0 -22
- package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilders.js +0 -85
- package/dist/esm/src/core/PanelBuilders/StandardFieldConfigBuilders.js +0 -52
- package/dist/esm/src/core/PanelBuilders/VizConfigBuilder.js +0 -78
- package/dist/esm/src/core/PanelBuilders/VizConfigBuilders.js +0 -114
- package/dist/esm/src/core/PanelBuilders/VizPanelBuilder.js +0 -162
- package/dist/esm/src/core/PanelBuilders/index.js +0 -116
- package/dist/esm/src/core/SceneComponentWrapper.js +0 -57
- package/dist/esm/src/core/SceneDataNode.js +0 -43
- package/dist/esm/src/core/SceneObjectBase.js +0 -286
- package/dist/esm/src/core/SceneObjectRef.js +0 -32
- package/dist/esm/src/core/SceneTimeRange.js +0 -231
- package/dist/esm/src/core/SceneTimeRangeTransformerBase.js +0 -35
- package/dist/esm/src/core/SceneTimeZoneOverride.js +0 -63
- package/dist/esm/src/core/events.js +0 -11
- package/dist/esm/src/core/sceneGraph/getTimeRange.js +0 -10
- package/dist/esm/src/core/sceneGraph/index.js +0 -25
- package/dist/esm/src/core/sceneGraph/sceneGraph.js +0 -178
- package/dist/esm/src/core/sceneGraph/utils.js +0 -64
- package/dist/esm/src/core/types.js +0 -15
- package/dist/esm/src/index.js +0 -108
- package/dist/esm/src/querying/DataLayersMerger.js +0 -46
- package/dist/esm/src/querying/DataProviderProxy.js +0 -37
- package/dist/esm/src/querying/DataProviderSharer.js +0 -108
- package/dist/esm/src/querying/ExtraQueryProvider.js +0 -6
- package/dist/esm/src/querying/RuntimeDataSource.js +0 -49
- package/dist/esm/src/querying/SceneDataLayerSet.js +0 -100
- package/dist/esm/src/querying/SceneDataTransformer.js +0 -178
- package/dist/esm/src/querying/SceneQueryRunner.js +0 -468
- package/dist/esm/src/querying/extraQueryProcessingOperator.js +0 -46
- package/dist/esm/src/querying/getEnrichedDataRequest.js +0 -12
- package/dist/esm/src/querying/layers/SceneDataLayerBase.js +0 -112
- package/dist/esm/src/querying/layers/SceneDataLayerControls.js +0 -51
- package/dist/esm/src/querying/layers/annotations/AnnotationsDataLayer.js +0 -130
- package/dist/esm/src/querying/layers/annotations/filterAnnotations.js +0 -85
- package/dist/esm/src/querying/layers/annotations/standardAnnotationQuery.js +0 -121
- package/dist/esm/src/querying/layers/annotations/standardAnnotationsSupport.js +0 -211
- package/dist/esm/src/querying/layers/annotations/utils.js +0 -77
- package/dist/esm/src/querying/layers/index.js +0 -2
- package/dist/esm/src/querying/registerQueryWithController.js +0 -41
- package/dist/esm/src/services/SceneObjectUrlSyncConfig.js +0 -30
- package/dist/esm/src/services/UniqueUrlKeyMapper.js +0 -45
- package/dist/esm/src/services/UrlSyncContextProvider.js +0 -17
- package/dist/esm/src/services/UrlSyncManager.js +0 -167
- package/dist/esm/src/services/useUrlSync.js +0 -29
- package/dist/esm/src/services/utils.js +0 -75
- package/dist/esm/src/utils/ControlsLabel.js +0 -107
- package/dist/esm/src/utils/LoadingIndicator.js +0 -19
- package/dist/esm/src/utils/SafeSerializableSceneObject.js +0 -39
- package/dist/esm/src/utils/compatibility/setWindowGrafanaSceneContext.js +0 -16
- package/dist/esm/src/utils/date.js +0 -15
- package/dist/esm/src/utils/evaluateTimeRange.js +0 -16
- package/dist/esm/src/utils/explore.js +0 -47
- package/dist/esm/src/utils/getCompareSeriesRefId.js +0 -4
- package/dist/esm/src/utils/getDataSource.js +0 -18
- package/dist/esm/src/utils/getMessageFromError.js +0 -24
- package/dist/esm/src/utils/metricTree.js +0 -53
- package/dist/esm/src/utils/parseUrlParam.js +0 -41
- package/dist/esm/src/utils/utils.js +0 -11
- package/dist/esm/src/utils/wrapInSafeSerializableSceneObject.js +0 -30
- package/dist/esm/src/utils/writeSceneLog.js +0 -12
- package/dist/esm/src/variables/VariableDependencyConfig.js +0 -150
- package/dist/esm/src/variables/VariableValueRecorder.js +0 -71
- package/dist/esm/src/variables/adhoc/AdHocFilterBuilder.js +0 -24
- package/dist/esm/src/variables/adhoc/AdHocFilterRenderer.js +0 -303
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +0 -162
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +0 -20
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +0 -640
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +0 -65
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +0 -146
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +0 -114
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +0 -68
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/utils.js +0 -146
- package/dist/esm/src/variables/adhoc/AdHocFiltersVariable.js +0 -289
- package/dist/esm/src/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +0 -76
- package/dist/esm/src/variables/adhoc/getAdhocOptionSearcher.js +0 -13
- package/dist/esm/src/variables/adhoc/patchGetAdhocFilters.js +0 -47
- package/dist/esm/src/variables/components/VariableValueControl.js +0 -23
- package/dist/esm/src/variables/components/VariableValueInput.js +0 -33
- package/dist/esm/src/variables/components/VariableValueSelect.js +0 -228
- package/dist/esm/src/variables/components/VariableValueSelectors.js +0 -72
- package/dist/esm/src/variables/components/getOptionSearcher.js +0 -15
- package/dist/esm/src/variables/constants.js +0 -9
- package/dist/esm/src/variables/getEnrichedFiltersRequest.js +0 -12
- package/dist/esm/src/variables/groupby/GroupByVariable.js +0 -259
- package/dist/esm/src/variables/groupby/GroupByVariableUrlSyncHandler.js +0 -63
- package/dist/esm/src/variables/groupby/findActiveGroupByVariablesByUid.js +0 -13
- package/dist/esm/src/variables/interpolation/ScopedVarsVariable.js +0 -40
- package/dist/esm/src/variables/interpolation/defaults.js +0 -21
- package/dist/esm/src/variables/interpolation/fieldAccessorCache.js +0 -13
- package/dist/esm/src/variables/interpolation/formatRegistry.js +0 -296
- package/dist/esm/src/variables/interpolation/sceneInterpolator.js +0 -87
- package/dist/esm/src/variables/lookupVariable.js +0 -20
- package/dist/esm/src/variables/macros/AllVariablesMacro.js +0 -57
- package/dist/esm/src/variables/macros/contextMacros.js +0 -43
- package/dist/esm/src/variables/macros/dataMacros.js +0 -134
- package/dist/esm/src/variables/macros/index.js +0 -35
- package/dist/esm/src/variables/macros/templateProxies.js +0 -51
- package/dist/esm/src/variables/macros/timeMacros.js +0 -86
- package/dist/esm/src/variables/macros/types.js +0 -11
- package/dist/esm/src/variables/macros/urlMacros.js +0 -56
- package/dist/esm/src/variables/sets/SceneVariableSet.js +0 -254
- package/dist/esm/src/variables/types.js +0 -11
- package/dist/esm/src/variables/utils.js +0 -172
- package/dist/esm/src/variables/variants/ConstantVariable.js +0 -38
- package/dist/esm/src/variables/variants/CustomVariable.js +0 -60
- package/dist/esm/src/variables/variants/DataSourceVariable.js +0 -88
- package/dist/esm/src/variables/variants/IntervalVariable.js +0 -117
- package/dist/esm/src/variables/variants/JsonVariable.js +0 -193
- package/dist/esm/src/variables/variants/LocalValueVariable.js +0 -56
- package/dist/esm/src/variables/variants/MultiValueVariable.js +0 -295
- package/dist/esm/src/variables/variants/TestVariable.js +0 -117
- package/dist/esm/src/variables/variants/TextBoxVariable.js +0 -61
- package/dist/esm/src/variables/variants/guards.js +0 -27
- package/dist/esm/src/variables/variants/query/QueryVariable.js +0 -139
- package/dist/esm/src/variables/variants/query/createQueryVariableRunner.js +0 -129
- package/dist/esm/src/variables/variants/query/guards.js +0 -28
- package/dist/esm/src/variables/variants/query/toMetricFindValues.js +0 -96
- package/dist/esm/src/variables/variants/query/utils.js +0 -124
- package/dist/esm/variables/variants/JsonVariable.js +0 -96
- package/dist/esm/variables/variants/json/JsonVariable.js +0 -95
- package/dist/esm/variables/variants/json/JsonVariableOptionProviders.js +0 -70
|
@@ -1,289 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { SceneObjectBase } from '../../core/SceneObjectBase.js';
|
|
3
|
-
import { SceneVariableValueChangedEvent } from '../types.js';
|
|
4
|
-
import { dataFromResponse, getQueriesForVariables, responseHasError, renderPrometheusLabelFilters } from '../utils.js';
|
|
5
|
-
import { patchGetAdhocFilters } from './patchGetAdhocFilters.js';
|
|
6
|
-
import { useStyles2 } from '@grafana/ui';
|
|
7
|
-
import { sceneGraph } from '../../core/sceneGraph/index.js';
|
|
8
|
-
import { AdHocFilterBuilder } from './AdHocFilterBuilder.js';
|
|
9
|
-
import { AdHocFilterRenderer } from './AdHocFilterRenderer.js';
|
|
10
|
-
import { getDataSourceSrv } from '@grafana/runtime';
|
|
11
|
-
import { AdHocFiltersVariableUrlSyncHandler } from './AdHocFiltersVariableUrlSyncHandler.js';
|
|
12
|
-
import { css } from '@emotion/css';
|
|
13
|
-
import { getEnrichedFiltersRequest } from '../getEnrichedFiltersRequest.js';
|
|
14
|
-
import { AdHocFiltersComboboxRenderer } from './AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js';
|
|
15
|
-
import { wrapInSafeSerializableSceneObject } from '../../utils/wrapInSafeSerializableSceneObject.js';
|
|
16
|
-
|
|
17
|
-
var __defProp = Object.defineProperty;
|
|
18
|
-
var __defProps = Object.defineProperties;
|
|
19
|
-
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
20
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
21
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
22
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
23
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
24
|
-
var __spreadValues = (a, b) => {
|
|
25
|
-
for (var prop in b || (b = {}))
|
|
26
|
-
if (__hasOwnProp.call(b, prop))
|
|
27
|
-
__defNormalProp(a, prop, b[prop]);
|
|
28
|
-
if (__getOwnPropSymbols)
|
|
29
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
30
|
-
if (__propIsEnum.call(b, prop))
|
|
31
|
-
__defNormalProp(a, prop, b[prop]);
|
|
32
|
-
}
|
|
33
|
-
return a;
|
|
34
|
-
};
|
|
35
|
-
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
36
|
-
const OPERATORS = [
|
|
37
|
-
{
|
|
38
|
-
value: "=",
|
|
39
|
-
description: "Equals"
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
value: "!=",
|
|
43
|
-
description: "Not equal"
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
value: "=|",
|
|
47
|
-
description: "One of. Use to filter on multiple values.",
|
|
48
|
-
isMulti: true
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
value: "!=|",
|
|
52
|
-
description: "Not one of. Use to exclude multiple values.",
|
|
53
|
-
isMulti: true
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
value: "=~",
|
|
57
|
-
description: "Matches regex"
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
value: "!~",
|
|
61
|
-
description: "Does not match regex"
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
value: "<",
|
|
65
|
-
description: "Less than"
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
value: ">",
|
|
69
|
-
description: "Greater than"
|
|
70
|
-
}
|
|
71
|
-
];
|
|
72
|
-
class AdHocFiltersVariable extends SceneObjectBase {
|
|
73
|
-
constructor(state) {
|
|
74
|
-
var _a, _b;
|
|
75
|
-
super(__spreadValues({
|
|
76
|
-
type: "adhoc",
|
|
77
|
-
name: (_a = state.name) != null ? _a : "Filters",
|
|
78
|
-
filters: [],
|
|
79
|
-
datasource: null,
|
|
80
|
-
applyMode: "auto",
|
|
81
|
-
filterExpression: (_b = state.filterExpression) != null ? _b : renderExpression(state.expressionBuilder, state.filters)
|
|
82
|
-
}, state));
|
|
83
|
-
this._scopedVars = { __sceneObject: wrapInSafeSerializableSceneObject(this) };
|
|
84
|
-
this._dataSourceSrv = getDataSourceSrv();
|
|
85
|
-
this._urlSync = new AdHocFiltersVariableUrlSyncHandler(this);
|
|
86
|
-
if (this.state.applyMode === "auto") {
|
|
87
|
-
patchGetAdhocFilters(this);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
setState(update) {
|
|
91
|
-
let filterExpressionChanged = false;
|
|
92
|
-
if (update.filters && update.filters !== this.state.filters && !update.filterExpression) {
|
|
93
|
-
update.filterExpression = renderExpression(this.state.expressionBuilder, update.filters);
|
|
94
|
-
filterExpressionChanged = update.filterExpression !== this.state.filterExpression;
|
|
95
|
-
}
|
|
96
|
-
super.setState(update);
|
|
97
|
-
if (filterExpressionChanged) {
|
|
98
|
-
this.publishEvent(new SceneVariableValueChangedEvent(this), true);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
getValue() {
|
|
102
|
-
return this.state.filterExpression;
|
|
103
|
-
}
|
|
104
|
-
_updateFilter(filter, update) {
|
|
105
|
-
const { filters, _wip } = this.state;
|
|
106
|
-
if (filter === _wip) {
|
|
107
|
-
if ("value" in update && update["value"] !== "") {
|
|
108
|
-
this.setState({ filters: [...filters, __spreadValues(__spreadValues({}, _wip), update)], _wip: void 0 });
|
|
109
|
-
} else {
|
|
110
|
-
this.setState({ _wip: __spreadValues(__spreadValues({}, filter), update) });
|
|
111
|
-
}
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
const updatedFilters = this.state.filters.map((f) => {
|
|
115
|
-
return f === filter ? __spreadValues(__spreadValues({}, f), update) : f;
|
|
116
|
-
});
|
|
117
|
-
this.setState({ filters: updatedFilters });
|
|
118
|
-
}
|
|
119
|
-
_removeFilter(filter) {
|
|
120
|
-
if (filter === this.state._wip) {
|
|
121
|
-
this.setState({ _wip: void 0 });
|
|
122
|
-
return;
|
|
123
|
-
}
|
|
124
|
-
this.setState({ filters: this.state.filters.filter((f) => f !== filter) });
|
|
125
|
-
}
|
|
126
|
-
_removeLastFilter() {
|
|
127
|
-
const filterToRemove = this.state.filters.at(-1);
|
|
128
|
-
if (filterToRemove) {
|
|
129
|
-
this._removeFilter(filterToRemove);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
_handleComboboxBackspace(filter) {
|
|
133
|
-
if (this.state.filters.length) {
|
|
134
|
-
let filterToForceIndex = this.state.filters.length - 1;
|
|
135
|
-
if (filter !== this.state._wip) {
|
|
136
|
-
filterToForceIndex = -1;
|
|
137
|
-
}
|
|
138
|
-
this.setState({
|
|
139
|
-
filters: this.state.filters.reduce((acc, f, index) => {
|
|
140
|
-
if (index === filterToForceIndex) {
|
|
141
|
-
return [
|
|
142
|
-
...acc,
|
|
143
|
-
__spreadProps(__spreadValues({}, f), {
|
|
144
|
-
forceEdit: true
|
|
145
|
-
})
|
|
146
|
-
];
|
|
147
|
-
}
|
|
148
|
-
if (f === filter) {
|
|
149
|
-
return acc;
|
|
150
|
-
}
|
|
151
|
-
return [...acc, f];
|
|
152
|
-
}, [])
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
async _getKeys(currentKey) {
|
|
157
|
-
var _a, _b, _c;
|
|
158
|
-
const override = await ((_b = (_a = this.state).getTagKeysProvider) == null ? void 0 : _b.call(_a, this, currentKey));
|
|
159
|
-
if (override && override.replace) {
|
|
160
|
-
return dataFromResponse(override.values).map(toSelectableValue);
|
|
161
|
-
}
|
|
162
|
-
if (this.state.defaultKeys) {
|
|
163
|
-
return this.state.defaultKeys.map(toSelectableValue);
|
|
164
|
-
}
|
|
165
|
-
const ds = await this._dataSourceSrv.get(this.state.datasource, this._scopedVars);
|
|
166
|
-
if (!ds || !ds.getTagKeys) {
|
|
167
|
-
return [];
|
|
168
|
-
}
|
|
169
|
-
const otherFilters = this.state.filters.filter((f) => f.key !== currentKey).concat((_c = this.state.baseFilters) != null ? _c : []);
|
|
170
|
-
const timeRange = sceneGraph.getTimeRange(this).state.value;
|
|
171
|
-
const queries = this.state.useQueriesAsFilterForOptions ? getQueriesForVariables(this) : void 0;
|
|
172
|
-
const response = await ds.getTagKeys(__spreadValues({
|
|
173
|
-
filters: otherFilters,
|
|
174
|
-
queries,
|
|
175
|
-
timeRange
|
|
176
|
-
}, getEnrichedFiltersRequest(this)));
|
|
177
|
-
if (responseHasError(response)) {
|
|
178
|
-
this.setState({ error: response.error.message });
|
|
179
|
-
}
|
|
180
|
-
let keys = dataFromResponse(response);
|
|
181
|
-
if (override) {
|
|
182
|
-
keys = keys.concat(dataFromResponse(override.values));
|
|
183
|
-
}
|
|
184
|
-
const tagKeyRegexFilter = this.state.tagKeyRegexFilter;
|
|
185
|
-
if (tagKeyRegexFilter) {
|
|
186
|
-
keys = keys.filter((f) => f.text.match(tagKeyRegexFilter));
|
|
187
|
-
}
|
|
188
|
-
return keys.map(toSelectableValue);
|
|
189
|
-
}
|
|
190
|
-
async _getValuesFor(filter) {
|
|
191
|
-
var _a, _b, _c;
|
|
192
|
-
const override = await ((_b = (_a = this.state).getTagValuesProvider) == null ? void 0 : _b.call(_a, this, filter));
|
|
193
|
-
if (override && override.replace) {
|
|
194
|
-
return dataFromResponse(override.values).map(toSelectableValue);
|
|
195
|
-
}
|
|
196
|
-
const ds = await this._dataSourceSrv.get(this.state.datasource, this._scopedVars);
|
|
197
|
-
if (!ds || !ds.getTagValues) {
|
|
198
|
-
return [];
|
|
199
|
-
}
|
|
200
|
-
const otherFilters = this.state.filters.filter((f) => f.key !== filter.key).concat((_c = this.state.baseFilters) != null ? _c : []);
|
|
201
|
-
const timeRange = sceneGraph.getTimeRange(this).state.value;
|
|
202
|
-
const queries = this.state.useQueriesAsFilterForOptions ? getQueriesForVariables(this) : void 0;
|
|
203
|
-
const response = await ds.getTagValues(__spreadValues({
|
|
204
|
-
key: filter.key,
|
|
205
|
-
filters: otherFilters,
|
|
206
|
-
timeRange,
|
|
207
|
-
queries
|
|
208
|
-
}, getEnrichedFiltersRequest(this)));
|
|
209
|
-
if (responseHasError(response)) {
|
|
210
|
-
this.setState({ error: response.error.message });
|
|
211
|
-
}
|
|
212
|
-
let values = dataFromResponse(response);
|
|
213
|
-
if (override) {
|
|
214
|
-
values = values.concat(dataFromResponse(override.values));
|
|
215
|
-
}
|
|
216
|
-
return values.map(toSelectableValue);
|
|
217
|
-
}
|
|
218
|
-
_addWip() {
|
|
219
|
-
this.setState({
|
|
220
|
-
_wip: { key: "", value: "", operator: "=", condition: "" }
|
|
221
|
-
});
|
|
222
|
-
}
|
|
223
|
-
_getOperators() {
|
|
224
|
-
const filteredOperators = this.state.supportsMultiValueOperators ? OPERATORS : OPERATORS.filter((operator) => !operator.isMulti);
|
|
225
|
-
return filteredOperators.map(({ value, description }) => ({
|
|
226
|
-
label: value,
|
|
227
|
-
value,
|
|
228
|
-
description
|
|
229
|
-
}));
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
AdHocFiltersVariable.Component = AdHocFiltersVariableRenderer;
|
|
233
|
-
function renderExpression(builder, filters) {
|
|
234
|
-
return (builder != null ? builder : renderPrometheusLabelFilters)(filters != null ? filters : []);
|
|
235
|
-
}
|
|
236
|
-
function AdHocFiltersVariableRenderer({ model }) {
|
|
237
|
-
const { filters, readOnly, addFilterButtonText } = model.useState();
|
|
238
|
-
const styles = useStyles2(getStyles);
|
|
239
|
-
if (model.state.layout === "combobox") {
|
|
240
|
-
return /* @__PURE__ */ React.createElement(AdHocFiltersComboboxRenderer, {
|
|
241
|
-
model
|
|
242
|
-
});
|
|
243
|
-
}
|
|
244
|
-
return /* @__PURE__ */ React.createElement("div", {
|
|
245
|
-
className: styles.wrapper
|
|
246
|
-
}, filters.map((filter, index) => /* @__PURE__ */ React.createElement(React.Fragment, {
|
|
247
|
-
key: index
|
|
248
|
-
}, /* @__PURE__ */ React.createElement(AdHocFilterRenderer, {
|
|
249
|
-
filter,
|
|
250
|
-
model
|
|
251
|
-
}))), !readOnly && /* @__PURE__ */ React.createElement(AdHocFilterBuilder, {
|
|
252
|
-
model,
|
|
253
|
-
key: "'builder",
|
|
254
|
-
addFilterButtonText
|
|
255
|
-
}));
|
|
256
|
-
}
|
|
257
|
-
const getStyles = (theme) => ({
|
|
258
|
-
wrapper: css({
|
|
259
|
-
display: "flex",
|
|
260
|
-
flexWrap: "wrap",
|
|
261
|
-
alignItems: "flex-end",
|
|
262
|
-
columnGap: theme.spacing(2),
|
|
263
|
-
rowGap: theme.spacing(1)
|
|
264
|
-
})
|
|
265
|
-
});
|
|
266
|
-
function toSelectableValue(input) {
|
|
267
|
-
const { text, value } = input;
|
|
268
|
-
const result = {
|
|
269
|
-
label: text,
|
|
270
|
-
value: String(value != null ? value : text)
|
|
271
|
-
};
|
|
272
|
-
if ("group" in input) {
|
|
273
|
-
result.group = input.group;
|
|
274
|
-
}
|
|
275
|
-
return result;
|
|
276
|
-
}
|
|
277
|
-
function isFilterComplete(filter) {
|
|
278
|
-
return filter.key !== "" && filter.operator !== "" && filter.value !== "";
|
|
279
|
-
}
|
|
280
|
-
function isMultiValueOperator(operatorValue) {
|
|
281
|
-
const operator = OPERATORS.find((o) => o.value === operatorValue);
|
|
282
|
-
if (!operator) {
|
|
283
|
-
return false;
|
|
284
|
-
}
|
|
285
|
-
return Boolean(operator.isMulti);
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
export { AdHocFiltersVariable, AdHocFiltersVariableRenderer, OPERATORS, isFilterComplete, isMultiValueOperator, toSelectableValue };
|
|
289
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWRIb2NGaWx0ZXJzVmFyaWFibGUuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3ZhcmlhYmxlcy9hZGhvYy9BZEhvY0ZpbHRlcnNWYXJpYWJsZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgU2NlbmVPYmplY3RCYXNlIH0gZnJvbSAnLi4vLi4vY29yZS9TY2VuZU9iamVjdEJhc2UuanMnO1xuaW1wb3J0IHsgU2NlbmVWYXJpYWJsZVZhbHVlQ2hhbmdlZEV2ZW50IH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuaW1wb3J0IHsgZGF0YUZyb21SZXNwb25zZSwgZ2V0UXVlcmllc0ZvclZhcmlhYmxlcywgcmVzcG9uc2VIYXNFcnJvciwgcmVuZGVyUHJvbWV0aGV1c0xhYmVsRmlsdGVycyB9IGZyb20gJy4uL3V0aWxzLmpzJztcbmltcG9ydCB7IHBhdGNoR2V0QWRob2NGaWx0ZXJzIH0gZnJvbSAnLi9wYXRjaEdldEFkaG9jRmlsdGVycy5qcyc7XG5pbXBvcnQgeyB1c2VTdHlsZXMyIH0gZnJvbSAnQGdyYWZhbmEvdWknO1xuaW1wb3J0IHsgc2NlbmVHcmFwaCB9IGZyb20gJy4uLy4uL2NvcmUvc2NlbmVHcmFwaC9pbmRleC5qcyc7XG5pbXBvcnQgeyBBZEhvY0ZpbHRlckJ1aWxkZXIgfSBmcm9tICcuL0FkSG9jRmlsdGVyQnVpbGRlci5qcyc7XG5pbXBvcnQgeyBBZEhvY0ZpbHRlclJlbmRlcmVyIH0gZnJvbSAnLi9BZEhvY0ZpbHRlclJlbmRlcmVyLmpzJztcbmltcG9ydCB7IGdldERhdGFTb3VyY2VTcnYgfSBmcm9tICdAZ3JhZmFuYS9ydW50aW1lJztcbmltcG9ydCB7IEFkSG9jRmlsdGVyc1ZhcmlhYmxlVXJsU3luY0hhbmRsZXIgfSBmcm9tICcuL0FkSG9jRmlsdGVyc1ZhcmlhYmxlVXJsU3luY0hhbmRsZXIuanMnO1xuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vY3NzJztcbmltcG9ydCB7IGdldEVucmljaGVkRmlsdGVyc1JlcXVlc3QgfSBmcm9tICcuLi9nZXRFbnJpY2hlZEZpbHRlcnNSZXF1ZXN0LmpzJztcbmltcG9ydCB7IEFkSG9jRmlsdGVyc0NvbWJvYm94UmVuZGVyZXIgfSBmcm9tICcuL0FkSG9jRmlsdGVyc0NvbWJvYm94L0FkSG9jRmlsdGVyc0NvbWJvYm94UmVuZGVyZXIuanMnO1xuaW1wb3J0IHsgd3JhcEluU2FmZVNlcmlhbGl6YWJsZVNjZW5lT2JqZWN0IH0gZnJvbSAnLi4vLi4vdXRpbHMvd3JhcEluU2FmZVNlcmlhbGl6YWJsZVNjZW5lT2JqZWN0LmpzJztcblxudmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2RlZlByb3BzID0gT2JqZWN0LmRlZmluZVByb3BlcnRpZXM7XG52YXIgX19nZXRPd25Qcm9wRGVzY3MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycztcbnZhciBfX2dldE93blByb3BTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcChvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMgPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcC5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wKGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scylcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0uY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wKGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xudmFyIF9fc3ByZWFkUHJvcHMgPSAoYSwgYikgPT4gX19kZWZQcm9wcyhhLCBfX2dldE93blByb3BEZXNjcyhiKSk7XG5jb25zdCBPUEVSQVRPUlMgPSBbXG4gIHtcbiAgICB2YWx1ZTogXCI9XCIsXG4gICAgZGVzY3JpcHRpb246IFwiRXF1YWxzXCJcbiAgfSxcbiAge1xuICAgIHZhbHVlOiBcIiE9XCIsXG4gICAgZGVzY3JpcHRpb246IFwiTm90IGVxdWFsXCJcbiAgfSxcbiAge1xuICAgIHZhbHVlOiBcIj18XCIsXG4gICAgZGVzY3JpcHRpb246IFwiT25lIG9mLiBVc2UgdG8gZmlsdGVyIG9uIG11bHRpcGxlIHZhbHVlcy5cIixcbiAgICBpc011bHRpOiB0cnVlXG4gIH0sXG4gIHtcbiAgICB2YWx1ZTogXCIhPXxcIixcbiAgICBkZXNjcmlwdGlvbjogXCJOb3Qgb25lIG9mLiBVc2UgdG8gZXhjbHVkZSBtdWx0aXBsZSB2YWx1ZXMuXCIsXG4gICAgaXNNdWx0aTogdHJ1ZVxuICB9LFxuICB7XG4gICAgdmFsdWU6IFwiPX5cIixcbiAgICBkZXNjcmlwdGlvbjogXCJNYXRjaGVzIHJlZ2V4XCJcbiAgfSxcbiAge1xuICAgIHZhbHVlOiBcIiF+XCIsXG4gICAgZGVzY3JpcHRpb246IFwiRG9lcyBub3QgbWF0Y2ggcmVnZXhcIlxuICB9LFxuICB7XG4gICAgdmFsdWU6IFwiPFwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkxlc3MgdGhhblwiXG4gIH0sXG4gIHtcbiAgICB2YWx1ZTogXCI+XCIsXG4gICAgZGVzY3JpcHRpb246IFwiR3JlYXRlciB0aGFuXCJcbiAgfVxuXTtcbmNsYXNzIEFkSG9jRmlsdGVyc1ZhcmlhYmxlIGV4dGVuZHMgU2NlbmVPYmplY3RCYXNlIHtcbiAgY29uc3RydWN0b3Ioc3RhdGUpIHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIHN1cGVyKF9fc3ByZWFkVmFsdWVzKHtcbiAgICAgIHR5cGU6IFwiYWRob2NcIixcbiAgICAgIG5hbWU6IChfYSA9IHN0YXRlLm5hbWUpICE9IG51bGwgPyBfYSA6IFwiRmlsdGVyc1wiLFxuICAgICAgZmlsdGVyczogW10sXG4gICAgICBkYXRhc291cmNlOiBudWxsLFxuICAgICAgYXBwbHlNb2RlOiBcImF1dG9cIixcbiAgICAgIGZpbHRlckV4cHJlc3Npb246IChfYiA9IHN0YXRlLmZpbHRlckV4cHJlc3Npb24pICE9IG51bGwgPyBfYiA6IHJlbmRlckV4cHJlc3Npb24oc3RhdGUuZXhwcmVzc2lvbkJ1aWxkZXIsIHN0YXRlLmZpbHRlcnMpXG4gICAgfSwgc3RhdGUpKTtcbiAgICB0aGlzLl9zY29wZWRWYXJzID0geyBfX3NjZW5lT2JqZWN0OiB3cmFwSW5TYWZlU2VyaWFsaXphYmxlU2NlbmVPYmplY3QodGhpcykgfTtcbiAgICB0aGlzLl9kYXRhU291cmNlU3J2ID0gZ2V0RGF0YVNvdXJjZVNydigpO1xuICAgIHRoaXMuX3VybFN5bmMgPSBuZXcgQWRIb2NGaWx0ZXJzVmFyaWFibGVVcmxTeW5jSGFuZGxlcih0aGlzKTtcbiAgICBpZiAodGhpcy5zdGF0ZS5hcHBseU1vZGUgPT09IFwiYXV0b1wiKSB7XG4gICAgICBwYXRjaEdldEFkaG9jRmlsdGVycyh0aGlzKTtcbiAgICB9XG4gIH1cbiAgc2V0U3RhdGUodXBkYXRlKSB7XG4gICAgbGV0IGZpbHRlckV4cHJlc3Npb25DaGFuZ2VkID0gZmFsc2U7XG4gICAgaWYgKHVwZGF0ZS5maWx0ZXJzICYmIHVwZGF0ZS5maWx0ZXJzICE9PSB0aGlzLnN0YXRlLmZpbHRlcnMgJiYgIXVwZGF0ZS5maWx0ZXJFeHByZXNzaW9uKSB7XG4gICAgICB1cGRhdGUuZmlsdGVyRXhwcmVzc2lvbiA9IHJlbmRlckV4cHJlc3Npb24odGhpcy5zdGF0ZS5leHByZXNzaW9uQnVpbGRlciwgdXBkYXRlLmZpbHRlcnMpO1xuICAgICAgZmlsdGVyRXhwcmVzc2lvbkNoYW5nZWQgPSB1cGRhdGUuZmlsdGVyRXhwcmVzc2lvbiAhPT0gdGhpcy5zdGF0ZS5maWx0ZXJFeHByZXNzaW9uO1xuICAgIH1cbiAgICBzdXBlci5zZXRTdGF0ZSh1cGRhdGUpO1xuICAgIGlmIChmaWx0ZXJFeHByZXNzaW9uQ2hhbmdlZCkge1xuICAgICAgdGhpcy5wdWJsaXNoRXZlbnQobmV3IFNjZW5lVmFyaWFibGVWYWx1ZUNoYW5nZWRFdmVudCh0aGlzKSwgdHJ1ZSk7XG4gICAgfVxuICB9XG4gIGdldFZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLmZpbHRlckV4cHJlc3Npb247XG4gIH1cbiAgX3VwZGF0ZUZpbHRlcihmaWx0ZXIsIHVwZGF0ZSkge1xuICAgIGNvbnN0IHsgZmlsdGVycywgX3dpcCB9ID0gdGhpcy5zdGF0ZTtcbiAgICBpZiAoZmlsdGVyID09PSBfd2lwKSB7XG4gICAgICBpZiAoXCJ2YWx1ZVwiIGluIHVwZGF0ZSAmJiB1cGRhdGVbXCJ2YWx1ZVwiXSAhPT0gXCJcIikge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgZmlsdGVyczogWy4uLmZpbHRlcnMsIF9fc3ByZWFkVmFsdWVzKF9fc3ByZWFkVmFsdWVzKHt9LCBfd2lwKSwgdXBkYXRlKV0sIF93aXA6IHZvaWQgMCB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBfd2lwOiBfX3NwcmVhZFZhbHVlcyhfX3NwcmVhZFZhbHVlcyh7fSwgZmlsdGVyKSwgdXBkYXRlKSB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgdXBkYXRlZEZpbHRlcnMgPSB0aGlzLnN0YXRlLmZpbHRlcnMubWFwKChmKSA9PiB7XG4gICAgICByZXR1cm4gZiA9PT0gZmlsdGVyID8gX19zcHJlYWRWYWx1ZXMoX19zcHJlYWRWYWx1ZXMoe30sIGYpLCB1cGRhdGUpIDogZjtcbiAgICB9KTtcbiAgICB0aGlzLnNldFN0YXRlKHsgZmlsdGVyczogdXBkYXRlZEZpbHRlcnMgfSk7XG4gIH1cbiAgX3JlbW92ZUZpbHRlcihmaWx0ZXIpIHtcbiAgICBpZiAoZmlsdGVyID09PSB0aGlzLnN0YXRlLl93aXApIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBfd2lwOiB2b2lkIDAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2V0U3RhdGUoeyBmaWx0ZXJzOiB0aGlzLnN0YXRlLmZpbHRlcnMuZmlsdGVyKChmKSA9PiBmICE9PSBmaWx0ZXIpIH0pO1xuICB9XG4gIF9yZW1vdmVMYXN0RmlsdGVyKCkge1xuICAgIGNvbnN0IGZpbHRlclRvUmVtb3ZlID0gdGhpcy5zdGF0ZS5maWx0ZXJzLmF0KC0xKTtcbiAgICBpZiAoZmlsdGVyVG9SZW1vdmUpIHtcbiAgICAgIHRoaXMuX3JlbW92ZUZpbHRlcihmaWx0ZXJUb1JlbW92ZSk7XG4gICAgfVxuICB9XG4gIF9oYW5kbGVDb21ib2JveEJhY2tzcGFjZShmaWx0ZXIpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5maWx0ZXJzLmxlbmd0aCkge1xuICAgICAgbGV0IGZpbHRlclRvRm9yY2VJbmRleCA9IHRoaXMuc3RhdGUuZmlsdGVycy5sZW5ndGggLSAxO1xuICAgICAgaWYgKGZpbHRlciAhPT0gdGhpcy5zdGF0ZS5fd2lwKSB7XG4gICAgICAgIGZpbHRlclRvRm9yY2VJbmRleCA9IC0xO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGZpbHRlcnM6IHRoaXMuc3RhdGUuZmlsdGVycy5yZWR1Y2UoKGFjYywgZiwgaW5kZXgpID0+IHtcbiAgICAgICAgICBpZiAoaW5kZXggPT09IGZpbHRlclRvRm9yY2VJbmRleCkge1xuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgICBfX3NwcmVhZFByb3BzKF9fc3ByZWFkVmFsdWVzKHt9LCBmKSwge1xuICAgICAgICAgICAgICAgIGZvcmNlRWRpdDogdHJ1ZVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGYgPT09IGZpbHRlcikge1xuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFsuLi5hY2MsIGZdO1xuICAgICAgICB9LCBbXSlcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBhc3luYyBfZ2V0S2V5cyhjdXJyZW50S2V5KSB7XG4gICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgY29uc3Qgb3ZlcnJpZGUgPSBhd2FpdCAoKF9iID0gKF9hID0gdGhpcy5zdGF0ZSkuZ2V0VGFnS2V5c1Byb3ZpZGVyKSA9PSBudWxsID8gdm9pZCAwIDogX2IuY2FsbChfYSwgdGhpcywgY3VycmVudEtleSkpO1xuICAgIGlmIChvdmVycmlkZSAmJiBvdmVycmlkZS5yZXBsYWNlKSB7XG4gICAgICByZXR1cm4gZGF0YUZyb21SZXNwb25zZShvdmVycmlkZS52YWx1ZXMpLm1hcCh0b1NlbGVjdGFibGVWYWx1ZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnN0YXRlLmRlZmF1bHRLZXlzKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdGF0ZS5kZWZhdWx0S2V5cy5tYXAodG9TZWxlY3RhYmxlVmFsdWUpO1xuICAgIH1cbiAgICBjb25zdCBkcyA9IGF3YWl0IHRoaXMuX2RhdGFTb3VyY2VTcnYuZ2V0KHRoaXMuc3RhdGUuZGF0YXNvdXJjZSwgdGhpcy5fc2NvcGVkVmFycyk7XG4gICAgaWYgKCFkcyB8fCAhZHMuZ2V0VGFnS2V5cykge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBjb25zdCBvdGhlckZpbHRlcnMgPSB0aGlzLnN0YXRlLmZpbHRlcnMuZmlsdGVyKChmKSA9PiBmLmtleSAhPT0gY3VycmVudEtleSkuY29uY2F0KChfYyA9IHRoaXMuc3RhdGUuYmFzZUZpbHRlcnMpICE9IG51bGwgPyBfYyA6IFtdKTtcbiAgICBjb25zdCB0aW1lUmFuZ2UgPSBzY2VuZUdyYXBoLmdldFRpbWVSYW5nZSh0aGlzKS5zdGF0ZS52YWx1ZTtcbiAgICBjb25zdCBxdWVyaWVzID0gdGhpcy5zdGF0ZS51c2VRdWVyaWVzQXNGaWx0ZXJGb3JPcHRpb25zID8gZ2V0UXVlcmllc0ZvclZhcmlhYmxlcyh0aGlzKSA6IHZvaWQgMDtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGRzLmdldFRhZ0tleXMoX19zcHJlYWRWYWx1ZXMoe1xuICAgICAgZmlsdGVyczogb3RoZXJGaWx0ZXJzLFxuICAgICAgcXVlcmllcyxcbiAgICAgIHRpbWVSYW5nZVxuICAgIH0sIGdldEVucmljaGVkRmlsdGVyc1JlcXVlc3QodGhpcykpKTtcbiAgICBpZiAocmVzcG9uc2VIYXNFcnJvcihyZXNwb25zZSkpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBlcnJvcjogcmVzcG9uc2UuZXJyb3IubWVzc2FnZSB9KTtcbiAgICB9XG4gICAgbGV0IGtleXMgPSBkYXRhRnJvbVJlc3BvbnNlKHJlc3BvbnNlKTtcbiAgICBpZiAob3ZlcnJpZGUpIHtcbiAgICAgIGtleXMgPSBrZXlzLmNvbmNhdChkYXRhRnJvbVJlc3BvbnNlKG92ZXJyaWRlLnZhbHVlcykpO1xuICAgIH1cbiAgICBjb25zdCB0YWdLZXlSZWdleEZpbHRlciA9IHRoaXMuc3RhdGUudGFnS2V5UmVnZXhGaWx0ZXI7XG4gICAgaWYgKHRhZ0tleVJlZ2V4RmlsdGVyKSB7XG4gICAgICBrZXlzID0ga2V5cy5maWx0ZXIoKGYpID0+IGYudGV4dC5tYXRjaCh0YWdLZXlSZWdleEZpbHRlcikpO1xuICAgIH1cbiAgICByZXR1cm4ga2V5cy5tYXAodG9TZWxlY3RhYmxlVmFsdWUpO1xuICB9XG4gIGFzeW5jIF9nZXRWYWx1ZXNGb3IoZmlsdGVyKSB7XG4gICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgY29uc3Qgb3ZlcnJpZGUgPSBhd2FpdCAoKF9iID0gKF9hID0gdGhpcy5zdGF0ZSkuZ2V0VGFnVmFsdWVzUHJvdmlkZXIpID09IG51bGwgPyB2b2lkIDAgOiBfYi5jYWxsKF9hLCB0aGlzLCBmaWx0ZXIpKTtcbiAgICBpZiAob3ZlcnJpZGUgJiYgb3ZlcnJpZGUucmVwbGFjZSkge1xuICAgICAgcmV0dXJuIGRhdGFGcm9tUmVzcG9uc2Uob3ZlcnJpZGUudmFsdWVzKS5tYXAodG9TZWxlY3RhYmxlVmFsdWUpO1xuICAgIH1cbiAgICBjb25zdCBkcyA9IGF3YWl0IHRoaXMuX2RhdGFTb3VyY2VTcnYuZ2V0KHRoaXMuc3RhdGUuZGF0YXNvdXJjZSwgdGhpcy5fc2NvcGVkVmFycyk7XG4gICAgaWYgKCFkcyB8fCAhZHMuZ2V0VGFnVmFsdWVzKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IG90aGVyRmlsdGVycyA9IHRoaXMuc3RhdGUuZmlsdGVycy5maWx0ZXIoKGYpID0+IGYua2V5ICE9PSBmaWx0ZXIua2V5KS5jb25jYXQoKF9jID0gdGhpcy5zdGF0ZS5iYXNlRmlsdGVycykgIT0gbnVsbCA/IF9jIDogW10pO1xuICAgIGNvbnN0IHRpbWVSYW5nZSA9IHNjZW5lR3JhcGguZ2V0VGltZVJhbmdlKHRoaXMpLnN0YXRlLnZhbHVlO1xuICAgIGNvbnN0IHF1ZXJpZXMgPSB0aGlzLnN0YXRlLnVzZVF1ZXJpZXNBc0ZpbHRlckZvck9wdGlvbnMgPyBnZXRRdWVyaWVzRm9yVmFyaWFibGVzKHRoaXMpIDogdm9pZCAwO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZHMuZ2V0VGFnVmFsdWVzKF9fc3ByZWFkVmFsdWVzKHtcbiAgICAgIGtleTogZmlsdGVyLmtleSxcbiAgICAgIGZpbHRlcnM6IG90aGVyRmlsdGVycyxcbiAgICAgIHRpbWVSYW5nZSxcbiAgICAgIHF1ZXJpZXNcbiAgICB9LCBnZXRFbnJpY2hlZEZpbHRlcnNSZXF1ZXN0KHRoaXMpKSk7XG4gICAgaWYgKHJlc3BvbnNlSGFzRXJyb3IocmVzcG9uc2UpKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgZXJyb3I6IHJlc3BvbnNlLmVycm9yLm1lc3NhZ2UgfSk7XG4gICAgfVxuICAgIGxldCB2YWx1ZXMgPSBkYXRhRnJvbVJlc3BvbnNlKHJlc3BvbnNlKTtcbiAgICBpZiAob3ZlcnJpZGUpIHtcbiAgICAgIHZhbHVlcyA9IHZhbHVlcy5jb25jYXQoZGF0YUZyb21SZXNwb25zZShvdmVycmlkZS52YWx1ZXMpKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlcy5tYXAodG9TZWxlY3RhYmxlVmFsdWUpO1xuICB9XG4gIF9hZGRXaXAoKSB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBfd2lwOiB7IGtleTogXCJcIiwgdmFsdWU6IFwiXCIsIG9wZXJhdG9yOiBcIj1cIiwgY29uZGl0aW9uOiBcIlwiIH1cbiAgICB9KTtcbiAgfVxuICBfZ2V0T3BlcmF0b3JzKCkge1xuICAgIGNvbnN0IGZpbHRlcmVkT3BlcmF0b3JzID0gdGhpcy5zdGF0ZS5zdXBwb3J0c011bHRpVmFsdWVPcGVyYXRvcnMgPyBPUEVSQVRPUlMgOiBPUEVSQVRPUlMuZmlsdGVyKChvcGVyYXRvcikgPT4gIW9wZXJhdG9yLmlzTXVsdGkpO1xuICAgIHJldHVybiBmaWx0ZXJlZE9wZXJhdG9ycy5tYXAoKHsgdmFsdWUsIGRlc2NyaXB0aW9uIH0pID0+ICh7XG4gICAgICBsYWJlbDogdmFsdWUsXG4gICAgICB2YWx1ZSxcbiAgICAgIGRlc2NyaXB0aW9uXG4gICAgfSkpO1xuICB9XG59XG5BZEhvY0ZpbHRlcnNWYXJpYWJsZS5Db21wb25lbnQgPSBBZEhvY0ZpbHRlcnNWYXJpYWJsZVJlbmRlcmVyO1xuZnVuY3Rpb24gcmVuZGVyRXhwcmVzc2lvbihidWlsZGVyLCBmaWx0ZXJzKSB7XG4gIHJldHVybiAoYnVpbGRlciAhPSBudWxsID8gYnVpbGRlciA6IHJlbmRlclByb21ldGhldXNMYWJlbEZpbHRlcnMpKGZpbHRlcnMgIT0gbnVsbCA/IGZpbHRlcnMgOiBbXSk7XG59XG5mdW5jdGlvbiBBZEhvY0ZpbHRlcnNWYXJpYWJsZVJlbmRlcmVyKHsgbW9kZWwgfSkge1xuICBjb25zdCB7IGZpbHRlcnMsIHJlYWRPbmx5LCBhZGRGaWx0ZXJCdXR0b25UZXh0IH0gPSBtb2RlbC51c2VTdGF0ZSgpO1xuICBjb25zdCBzdHlsZXMgPSB1c2VTdHlsZXMyKGdldFN0eWxlcyk7XG4gIGlmIChtb2RlbC5zdGF0ZS5sYXlvdXQgPT09IFwiY29tYm9ib3hcIikge1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QuY3JlYXRlRWxlbWVudChBZEhvY0ZpbHRlcnNDb21ib2JveFJlbmRlcmVyLCB7XG4gICAgICBtb2RlbFxuICAgIH0pO1xuICB9XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgY2xhc3NOYW1lOiBzdHlsZXMud3JhcHBlclxuICB9LCBmaWx0ZXJzLm1hcCgoZmlsdGVyLCBpbmRleCkgPT4gLyogQF9fUFVSRV9fICovIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIHtcbiAgICBrZXk6IGluZGV4XG4gIH0sIC8qIEBfX1BVUkVfXyAqLyBSZWFjdC5jcmVhdGVFbGVtZW50KEFkSG9jRmlsdGVyUmVuZGVyZXIsIHtcbiAgICBmaWx0ZXIsXG4gICAgbW9kZWxcbiAgfSkpKSwgIXJlYWRPbmx5ICYmIC8qIEBfX1BVUkVfXyAqLyBSZWFjdC5jcmVhdGVFbGVtZW50KEFkSG9jRmlsdGVyQnVpbGRlciwge1xuICAgIG1vZGVsLFxuICAgIGtleTogXCInYnVpbGRlclwiLFxuICAgIGFkZEZpbHRlckJ1dHRvblRleHRcbiAgfSkpO1xufVxuY29uc3QgZ2V0U3R5bGVzID0gKHRoZW1lKSA9PiAoe1xuICB3cmFwcGVyOiBjc3Moe1xuICAgIGRpc3BsYXk6IFwiZmxleFwiLFxuICAgIGZsZXhXcmFwOiBcIndyYXBcIixcbiAgICBhbGlnbkl0ZW1zOiBcImZsZXgtZW5kXCIsXG4gICAgY29sdW1uR2FwOiB0aGVtZS5zcGFjaW5nKDIpLFxuICAgIHJvd0dhcDogdGhlbWUuc3BhY2luZygxKVxuICB9KVxufSk7XG5mdW5jdGlvbiB0b1NlbGVjdGFibGVWYWx1ZShpbnB1dCkge1xuICBjb25zdCB7IHRleHQsIHZhbHVlIH0gPSBpbnB1dDtcbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIGxhYmVsOiB0ZXh0LFxuICAgIHZhbHVlOiBTdHJpbmcodmFsdWUgIT0gbnVsbCA/IHZhbHVlIDogdGV4dClcbiAgfTtcbiAgaWYgKFwiZ3JvdXBcIiBpbiBpbnB1dCkge1xuICAgIHJlc3VsdC5ncm91cCA9IGlucHV0Lmdyb3VwO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBpc0ZpbHRlckNvbXBsZXRlKGZpbHRlcikge1xuICByZXR1cm4gZmlsdGVyLmtleSAhPT0gXCJcIiAmJiBmaWx0ZXIub3BlcmF0b3IgIT09IFwiXCIgJiYgZmlsdGVyLnZhbHVlICE9PSBcIlwiO1xufVxuZnVuY3Rpb24gaXNNdWx0aVZhbHVlT3BlcmF0b3Iob3BlcmF0b3JWYWx1ZSkge1xuICBjb25zdCBvcGVyYXRvciA9IE9QRVJBVE9SUy5maW5kKChvKSA9PiBvLnZhbHVlID09PSBvcGVyYXRvclZhbHVlKTtcbiAgaWYgKCFvcGVyYXRvcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gQm9vbGVhbihvcGVyYXRvci5pc011bHRpKTtcbn1cblxuZXhwb3J0IHsgQWRIb2NGaWx0ZXJzVmFyaWFibGUsIEFkSG9jRmlsdGVyc1ZhcmlhYmxlUmVuZGVyZXIsIE9QRVJBVE9SUywgaXNGaWx0ZXJDb21wbGV0ZSwgaXNNdWx0aVZhbHVlT3BlcmF0b3IsIHRvU2VsZWN0YWJsZVZhbHVlIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVFXUkliMk5HYVd4MFpYSnpWbUZ5YVdGaWJHVXVhbk1pTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUx5NHVMM055WXk5MllYSnBZV0pzWlhNdllXUm9iMk12UVdSSWIyTkdhV3gwWlhKelZtRnlhV0ZpYkdVdWRITjRJbDBzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0JTWldGamRDQm1jbTl0SUNkeVpXRmpkQ2M3WEc1cGJYQnZjblFnZXlCQlpFaHZZMVpoY21saFlteGxSbWxzZEdWeUxDQkhaWFJVWVdkU1pYTndiMjV6WlN3Z1IzSmhabUZ1WVZSb1pXMWxNaXdnVFdWMGNtbGpSbWx1WkZaaGJIVmxMQ0JUWld4bFkzUmhZbXhsVm1Gc2RXVWdmU0JtY205dElDZEFaM0poWm1GdVlTOWtZWFJoSnp0Y2JtbHRjRzl5ZENCN0lGTmpaVzVsVDJKcVpXTjBRbUZ6WlNCOUlHWnliMjBnSnk0dUx5NHVMMk52Y21VdlUyTmxibVZQWW1wbFkzUkNZWE5sSnp0Y2JtbHRjRzl5ZENCN0lGTmpaVzVsVm1GeWFXRmliR1VzSUZOalpXNWxWbUZ5YVdGaWJHVlRkR0YwWlN3Z1UyTmxibVZXWVhKcFlXSnNaVlpoYkhWbFEyaGhibWRsWkVWMlpXNTBMQ0JXWVhKcFlXSnNaVlpoYkhWbElIMGdabkp2YlNBbkxpNHZkSGx3WlhNbk8xeHVhVzF3YjNKMElIc2dRMjl1ZEhKdmJITk1ZWGx2ZFhRc0lGTmpaVzVsUTI5dGNHOXVaVzUwVUhKdmNITWdmU0JtY205dElDY3VMaTh1TGk5amIzSmxMM1I1Y0dWekp6dGNibWx0Y0c5eWRDQjdJRVJoZEdGVGIzVnlZMlZTWldZZ2ZTQm1jbTl0SUNkQVozSmhabUZ1WVM5elkyaGxiV0VuTzF4dWFXMXdiM0owSUhzZ1pHRjBZVVp5YjIxU1pYTndiMjV6WlN3Z1oyVjBVWFZsY21sbGMwWnZjbFpoY21saFlteGxjeXdnY21WdVpHVnlVSEp2YldWMGFHVjFjMHhoWW1Wc1JtbHNkR1Z5Y3l3Z2NtVnpjRzl1YzJWSVlYTkZjbkp2Y2lCOUlHWnliMjBnSnk0dUwzVjBhV3h6Snp0Y2JtbHRjRzl5ZENCN0lIQmhkR05vUjJWMFFXUm9iMk5HYVd4MFpYSnpJSDBnWm5KdmJTQW5MaTl3WVhSamFFZGxkRUZrYUc5alJtbHNkR1Z5Y3ljN1hHNXBiWEJ2Y25RZ2V5QjFjMlZUZEhsc1pYTXlJSDBnWm5KdmJTQW5RR2R5WVdaaGJtRXZkV2tuTzF4dWFXMXdiM0owSUhzZ2MyTmxibVZIY21Gd2FDQjlJR1p5YjIwZ0p5NHVMeTR1TDJOdmNtVXZjMk5sYm1WSGNtRndhQ2M3WEc1cGJYQnZjblFnZXlCQlpFaHZZMFpwYkhSbGNrSjFhV3hrWlhJZ2ZTQm1jbTl0SUNjdUwwRmtTRzlqUm1sc2RHVnlRblZwYkdSbGNpYzdYRzVwYlhCdmNuUWdleUJCWkVodlkwWnBiSFJsY2xKbGJtUmxjbVZ5SUgwZ1puSnZiU0FuTGk5QlpFaHZZMFpwYkhSbGNsSmxibVJsY21WeUp6dGNibWx0Y0c5eWRDQjdJR2RsZEVSaGRHRlRiM1Z5WTJWVGNuWWdmU0JtY205dElDZEFaM0poWm1GdVlTOXlkVzUwYVcxbEp6dGNibWx0Y0c5eWRDQjdJRUZrU0c5alJtbHNkR1Z5YzFaaGNtbGhZbXhsVlhKc1UzbHVZMGhoYm1Sc1pYSWdmU0JtY205dElDY3VMMEZrU0c5alJtbHNkR1Z5YzFaaGNtbGhZbXhsVlhKc1UzbHVZMGhoYm1Sc1pYSW5PMXh1YVcxd2IzSjBJSHNnWTNOeklIMGdabkp2YlNBblFHVnRiM1JwYjI0dlkzTnpKenRjYm1sdGNHOXlkQ0I3SUdkbGRFVnVjbWxqYUdWa1JtbHNkR1Z5YzFKbGNYVmxjM1FnZlNCbWNtOXRJQ2N1TGk5blpYUkZibkpwWTJobFpFWnBiSFJsY25OU1pYRjFaWE4wSnp0Y2JtbHRjRzl5ZENCN0lFRmtTRzlqUm1sc2RHVnljME52YldKdlltOTRVbVZ1WkdWeVpYSWdmU0JtY205dElDY3VMMEZrU0c5alJtbHNkR1Z5YzBOdmJXSnZZbTk0TDBGa1NHOWpSbWxzZEdWeWMwTnZiV0p2WW05NFVtVnVaR1Z5WlhJbk8xeHVhVzF3YjNKMElIc2dkM0poY0VsdVUyRm1aVk5sY21saGJHbDZZV0pzWlZOalpXNWxUMkpxWldOMElIMGdabkp2YlNBbkxpNHZMaTR2ZFhScGJITXZkM0poY0VsdVUyRm1aVk5sY21saGJHbDZZV0pzWlZOalpXNWxUMkpxWldOMEp6dGNibHh1Wlhod2IzSjBJR2x1ZEdWeVptRmpaU0JCWkVodlkwWnBiSFJsY2xkcGRHaE1ZV0psYkhNZ1pYaDBaVzVrY3lCQlpFaHZZMVpoY21saFlteGxSbWxzZEdWeUlIdGNiaUFnYTJWNVRHRmlaV3cvT2lCemRISnBibWM3WEc0Z0lIWmhiSFZsVEdGaVpXeHpQem9nYzNSeWFXNW5XMTA3WEc0Z0lDOHZJSFJvYVhNZ2FYTWdkWE5sWkNCMGJ5QmxlSFJsY201aGJHeDVJSFJ5YVdkblpYSWdaV1JwZENCdGIyUmxJR2x1SUdOdmJXSnZZbTk0SUdacGJIUmxjaUJWU1Z4dUlDQm1iM0pqWlVWa2FYUS9PaUJpYjI5c1pXRnVPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ2RIbHdaU0JCWkVodlkwTnZiblJ5YjJ4elRHRjViM1YwSUQwZ1EyOXVkSEp2YkhOTVlYbHZkWFFnZkNBblkyOXRZbTlpYjNnbk8xeHVYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRUZrU0c5alJtbHNkR1Z5YzFaaGNtbGhZbXhsVTNSaGRHVWdaWGgwWlc1a2N5QlRZMlZ1WlZaaGNtbGhZbXhsVTNSaGRHVWdlMXh1SUNBdktpb2dUM0IwYVc5dVlXd2dkR1Y0ZENCMGJ5QmthWE53YkdGNUlHOXVJSFJvWlNBbllXUmtJR1pwYkhSbGNpY2dZblYwZEc5dUlDb3ZYRzRnSUdGa1pFWnBiSFJsY2tKMWRIUnZibFJsZUhRL09pQnpkSEpwYm1jN1hHNGdJQzhxS2lCVWFHVWdkbWx6YVdKc1pTQm1hV3gwWlhKeklDb3ZYRzRnSUdacGJIUmxjbk02SUVGa1NHOWpSbWxzZEdWeVYybDBhRXhoWW1Wc2MxdGRPMXh1SUNBdktpb2dRbUZ6WlNCbWFXeDBaWEp6SUhSdklHRnNkMkY1Y3lCaGNIQnNlU0IzYUdWdUlHeHZiMnRwYm1jZ2RYQWdhMlY1Y3lvdlhHNGdJR0poYzJWR2FXeDBaWEp6UHpvZ1FXUkliMk5HYVd4MFpYSlhhWFJvVEdGaVpXeHpXMTA3WEc0Z0lDOHFLaUJFWVhSaGMyOTFjbU5sSUhSdklIVnpaU0JtYjNJZ1oyVjBWR0ZuUzJWNWN5QmhibVFnWjJWMFZHRm5WbUZzZFdWeklHRnVaQ0JoYkhOdklHTnZiblJ5YjJ4eklIZG9hV05vSUhOalpXNWxJSEYxWlhKcFpYTWdkR2hsSUdacGJIUmxjbk1nYzJodmRXeGtJR0Z3Y0d4NUlIUnZJQ292WEc0Z0lHUmhkR0Z6YjNWeVkyVTZJRVJoZEdGVGIzVnlZMlZTWldZZ2ZDQnVkV3hzTzF4dUlDQXZLaW9nUTI5dWRISnZiSE1nYVdZZ2RHaGxJR1pwYkhSbGNuTWdZMkZ1SUdKbElHTm9ZVzVuWldRZ0tpOWNiaUFnY21WaFpFOXViSGsvT2lCaWIyOXNaV0Z1TzF4dUlDQXZLaXBjYmlBZ0lDb2dRR1Y0Y0dWeWFXMWxiblJoYkZ4dUlDQWdLaUJEYjI1MGNtOXNjeUIwYUdVZ2JHRjViM1YwSUdGdVpDQmtaWE5wWjI0Z2IyWWdkR2hsSUd4aFltVnNMbHh1SUNBZ0tpOWNiaUFnYkdGNWIzVjBQem9nUVdSSWIyTkRiMjUwY205c2MweGhlVzkxZER0Y2JpQWdMeW9xWEc0Z0lDQXFJRVJsWm1GMWJIUnpJSFJ2SUdGMWRHOXRZWFJwWXlCM2FHbGphQ0J0WldGdWN5Qm1hV3gwWlhKeklIZHBiR3dnWVhWMGIyMWhkR2xqWVd4c2VTQmlaU0JoY0hCc2FXVmtJSFJ2SUdGc2JDQnhkV1Z5YVdWeklIZHBkR2dnZEdobElITmhiV1VnWkdGMFlTQnpiM1Z5WTJVZ1lYTWdkR2hwY3lCQlpFaHZZMFpwYkhSbGNsTmxkQzVjYmlBZ0lDb2dTVzRnYldGdWRXRnNJRzF2WkdVZ2VXOTFJR1ZwZEdobGNpQm9ZWFpsSUhSdklIVnpaU0IwYUdVZ1ptbHNkR1Z5Y3lCd2NtOW5jbUZ0YldGMGFXTmhiR3g1SUc5eUlHRnpJR0VnZG1GeWFXRmliR1VnYVc1emFXUmxJSEYxWlhKNUlHVjRjSEpsYzNOcGIyNXpMbHh1SUNBZ0tpOWNiaUFnWVhCd2JIbE5iMlJsT2lBbllYVjBieWNnZkNBbmJXRnVkV0ZzSnp0Y2JpQWdMeW9xWEc0Z0lDQXFJRVpwYkhSbGNpQnZkWFFnZEdobElHdGxlWE1nZEdoaGRDQmtieUJ1YjNRZ2JXRjBZMmdnZEdobElISmxaMlY0TGx4dUlDQWdLaTljYmlBZ2RHRm5TMlY1VW1WblpYaEdhV3gwWlhJL09pQlNaV2RGZUhBN1hHNGdJQzhxS2x4dUlDQWdLaUJGZUhSbGJuTnBiMjRnYUc5dmF5Qm1iM0lnWTNWemRHOXRhWHBwYm1jZ2RHaGxJR3RsZVNCc2IyOXJkWEF1WEc0Z0lDQXFJRkpsZEhWeWJpQnlaWEJzWVdObE9pQjBjblZsSUdsbUlIbHZkU0IzWVc1MElIUnZJRzkyWlhKeWFXUmxJSFJvWlNCa1pXWmhkV3gwSUd4dmIydDFjRnh1SUNBZ0tpQlNaWFIxY200Z2NtVndiR0ZqWlRvZ1ptRnNjMlVnYVdZZ2VXOTFJSGRoYm5RZ2RHOGdZMjl0WW1sdVpTQjBhR1VnY21WemRXeDBjeUIzYVhSb0lIUm9aU0JrWldaaGRXeDBJR3h2YjJ0MWNGeHVJQ0FnS2k5Y2JpQWdaMlYwVkdGblMyVjVjMUJ5YjNacFpHVnlQem9nWjJWMFZHRm5TMlY1YzFCeWIzWnBaR1Z5TzF4dUlDQXZLaXBjYmlBZ0lDb2dSWGgwWlc1emFXOXVJR2h2YjJzZ1ptOXlJR04xYzNSdmJXbDZhVzVuSUhSb1pTQjJZV3gxWlNCc2IyOXJkWEF1WEc0Z0lDQXFJRkpsZEhWeWJpQnlaWEJzWVdObE9pQjBjblZsSUdsbUlIbHZkU0IzWVc1MElIUnZJRzkyWlhKeWFXUmxJSFJvWlNCa1pXWmhkV3gwSUd4dmIydDFjQzVjYmlBZ0lDb2dVbVYwZFhKdUlISmxjR3hoWTJVNklHWmhiSE5sSUdsbUlIbHZkU0IzWVc1MElIUnZJR052YldKcGJtVWdkR2hsSUhKbGMzVnNkSE1nZDJsMGFDQjBhR1VnWkdWbVlYVnNkQ0JzYjI5cmRYQmNiaUFnSUNvdlhHNGdJR2RsZEZSaFoxWmhiSFZsYzFCeWIzWnBaR1Z5UHpvZ1oyVjBWR0ZuVm1Gc2RXVnpVSEp2ZG1sa1pYSTdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFOXdkR2x2Ym1Gc2JIa2djSEp2ZG1sa1pTQmhiaUJoY25KaGVTQnZaaUJ6ZEdGMGFXTWdhMlY1Y3lCMGFHRjBJRzkyWlhKeWFXUmxJR2RsZEZSaFowdGxlWE5jYmlBZ0lDb3ZYRzRnSUdSbFptRjFiSFJMWlhselB6b2dUV1YwY21salJtbHVaRlpoYkhWbFcxMDdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGUm9hWE1nYVhNZ2RHaGxJR1Y0Y0hKbGMzTnBiMjRnZEdoaGRDQjBhR1VnWm1sc2RHVnljeUJ5WlhOMWJIUmxaQ0JwYmk0Z1JHVm1ZWFZzZEhNZ2RHOWNiaUFnSUNvZ1VISnZiV1YwYUdWMWN5QXZJRXh2YTJrZ1kyOXRjR0YwYVdKc1pTQnNZV0psYkNCbWFXeDBaWElnWlhod2NtVnpjMmx2Ymx4dUlDQWdLaTljYmlBZ1ptbHNkR1Z5Ulhod2NtVnpjMmx2Ymo4NklITjBjbWx1Wnp0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVkdobElHUmxabUYxYkhRZ1luVnBiR1JsY2lCamNtVmhkR1Z6SUdFZ1VISnZiV1YwYUdWMWN5OU1iMnRwSUdOdmJYQmhkR2xpYkdVZ1ptbHNkR1Z5SUdWNGNISmxjM05wYjI0c1hHNGdJQ0FxSUhSb2FYTWdZMkZ1SUdKbElHOTJaWEp5YVdSa1pXNGdkRzhnWTNKbFlYUmxJR0VnWkdsbVptVnlaVzUwSUdWNGNISmxjM05wYjI0Z1ltRnpaV1FnYjI0Z2RHaGxJR04xY25KbGJuUWdabWxzZEdWeWN5NWNiaUFnSUNvdlhHNGdJR1Y0Y0hKbGMzTnBiMjVDZFdsc1pHVnlQem9nUVdSSWIyTldZWEpwWVdKc1pVVjRjSEpsYzNOcGIyNUNkV2xzWkdWeVJtNDdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGZG9aWFJvWlhJZ2RHaGxJR1pwYkhSbGNpQnpkWEJ3YjNKMGN5QnVaWGNnYlhWc2RHa3RkbUZzZFdVZ2IzQmxjbUYwYjNKeklHeHBhMlVnUFh3Z1lXNWtJQ0U5ZkZ4dUlDQWdLaTljYmlBZ2MzVndjRzl5ZEhOTmRXeDBhVlpoYkhWbFQzQmxjbUYwYjNKelB6b2dZbTl2YkdWaGJqdGNibHh1SUNBdktpcGNiaUFnSUNvZ1YyaGxiaUJ4ZFdWeWVXbHVaeUIwYUdVZ1pHRjBZWE52ZFhKalpTQm1iM0lnYkdGaVpXd2dibUZ0WlhNZ1lXNWtJSFpoYkhWbGN5QjBieUJrWlhSbGNtMXBibVVnYTJWNWN5QmhibVFnZG1Gc2RXVnpYRzRnSUNBcUlHWnZjaUIwYUdseklHRmtJR2h2WXlCbWFXeDBaWElzSUdOdmJuTnBaR1Z5SUhSb1pTQnhkV1Z5YVdWeklHbHVJSFJvWlNCelkyVnVaU0JoYm1RZ2RYTmxJSFJvWlcwZ1lYTWdZU0JtYVd4MFpYSXVYRzRnSUNBcUlGUm9hWE1nY1hWbGNtbGxjeUJtYVd4MFpYSWdZMkZ1SUdKbElIVnpaV1FnZEc4Z1pXNXpkWEpsSUhSb1lYUWdiMjVzZVNCaFpDQm9iMk1nWm1sc2RHVnlJRzl3ZEdsdmJuTWdkR2hoZENCM2IzVnNaRnh1SUNBZ0tpQnBiWEJoWTNRZ2RHaGxJR04xY25KbGJuUWdjWFZsY21sbGN5QmhjbVVnY0hKbGMyVnVkR1ZrSUhSdklIUm9aU0IxYzJWeUxseHVJQ0FnS2k5Y2JpQWdkWE5sVVhWbGNtbGxjMEZ6Um1sc2RHVnlSbTl5VDNCMGFXOXVjejg2SUdKdmIyeGxZVzQ3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRVpzWVdjZ2RHaGhkQ0JrWldOcFpHVnpJSGRvWlhSb1pYSWdZM1Z6ZEc5dElIWmhiSFZsY3lCallXNGdZbVVnWVdSa1pXUWdkRzhnZEdobElHWnBiSFJsY2x4dUlDQWdLaTljYmlBZ1lXeHNiM2REZFhOMGIyMVdZV3gxWlQ4NklHSnZiMnhsWVc0N1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVCcGJuUmxjbTVoYkNCemRHRjBaU0J2WmlCMGFHVWdibVYzSUdacGJIUmxjaUJpWldsdVp5QmhaR1JsWkZ4dUlDQWdLaTljYmlBZ1gzZHBjRDg2SUVGa1NHOWpSbWxzZEdWeVYybDBhRXhoWW1Wc2N6dGNibjFjYmx4dVpYaHdiM0owSUhSNWNHVWdRV1JJYjJOV1lYSnBZV0pzWlVWNGNISmxjM05wYjI1Q2RXbHNaR1Z5Um00Z1BTQW9abWxzZEdWeWN6b2dRV1JJYjJOR2FXeDBaWEpYYVhSb1RHRmlaV3h6VzEwcElEMCtJSE4wY21sdVp6dGNibHh1Wlhod2IzSjBJSFI1Y0dVZ1oyVjBWR0ZuUzJWNWMxQnliM1pwWkdWeUlEMGdLRnh1SUNCMllYSnBZV0pzWlRvZ1FXUkliMk5HYVd4MFpYSnpWbUZ5YVdGaWJHVXNYRzRnSUdOMWNuSmxiblJMWlhrNklITjBjbWx1WnlCOElHNTFiR3hjYmlrZ1BUNGdVSEp2YldselpUeDdJSEpsY0d4aFkyVS9PaUJpYjI5c1pXRnVPeUIyWVd4MVpYTTZJRWRsZEZSaFoxSmxjM0J2Ym5ObElId2dUV1YwY21salJtbHVaRlpoYkhWbFcxMGdmVDQ3WEc1Y2JtVjRjRzl5ZENCMGVYQmxJR2RsZEZSaFoxWmhiSFZsYzFCeWIzWnBaR1Z5SUQwZ0tGeHVJQ0IyWVhKcFlXSnNaVG9nUVdSSWIyTkdhV3gwWlhKelZtRnlhV0ZpYkdVc1hHNGdJR1pwYkhSbGNqb2dRV1JJYjJOR2FXeDBaWEpYYVhSb1RHRmlaV3h6WEc0cElEMCtJRkJ5YjIxcGMyVThleUJ5WlhCc1lXTmxQem9nWW05dmJHVmhianNnZG1Gc2RXVnpPaUJIWlhSVVlXZFNaWE53YjI1elpTQjhJRTFsZEhKcFkwWnBibVJXWVd4MVpWdGRJSDArTzF4dVhHNWxlSEJ2Y25RZ2RIbHdaU0JCWkVodlkwWnBiSFJsY25OV1lYSnBZV0pzWlVOeVpXRjBaVWhsYkhCbGNrRnlaM01nUFNCQlpFaHZZMFpwYkhSbGNuTldZWEpwWVdKc1pWTjBZWFJsTzF4dVhHNWxlSEJ2Y25RZ2RIbHdaU0JQY0dWeVlYUnZja1JsWm1sdWFYUnBiMjRnUFNCN1hHNGdJSFpoYkhWbE9pQnpkSEpwYm1jN1hHNGdJR1JsYzJOeWFYQjBhVzl1UHpvZ2MzUnlhVzVuTzF4dUlDQnBjMDExYkhScFB6b2dRbTl2YkdWaGJqdGNibjA3WEc1Y2JtVjRjRzl5ZENCamIyNXpkQ0JQVUVWU1FWUlBVbE02SUU5d1pYSmhkRzl5UkdWbWFXNXBkR2x2Ymx0ZElEMGdXMXh1SUNCN1hHNGdJQ0FnZG1Gc2RXVTZJQ2M5Snl4Y2JpQWdJQ0JrWlhOamNtbHdkR2x2YmpvZ0owVnhkV0ZzY3ljc1hHNGdJSDBzWEc0Z0lIdGNiaUFnSUNCMllXeDFaVG9nSnlFOUp5eGNiaUFnSUNCa1pYTmpjbWx3ZEdsdmJqb2dKMDV2ZENCbGNYVmhiQ2NzWEc0Z0lIMHNYRzRnSUh0Y2JpQWdJQ0IyWVd4MVpUb2dKejE4Snl4Y2JpQWdJQ0JrWlhOamNtbHdkR2x2YmpvZ0owOXVaU0J2Wmk0Z1ZYTmxJSFJ2SUdacGJIUmxjaUJ2YmlCdGRXeDBhWEJzWlNCMllXeDFaWE11Snl4Y2JpQWdJQ0JwYzAxMWJIUnBPaUIwY25WbExGeHVJQ0I5TEZ4dUlDQjdYRzRnSUNBZ2RtRnNkV1U2SUNjaFBYd25MRnh1SUNBZ0lHUmxjMk55YVhCMGFXOXVPaUFuVG05MElHOXVaU0J2Wmk0Z1ZYTmxJSFJ2SUdWNFkyeDFaR1VnYlhWc2RHbHdiR1VnZG1Gc2RXVnpMaWNzWEc0Z0lDQWdhWE5OZFd4MGFUb2dkSEoxWlN4Y2JpQWdmU3hjYmlBZ2UxeHVJQ0FnSUhaaGJIVmxPaUFuUFg0bkxGeHVJQ0FnSUdSbGMyTnlhWEIwYVc5dU9pQW5UV0YwWTJobGN5QnlaV2RsZUNjc1hHNGdJSDBzWEc0Z0lIdGNiaUFnSUNCMllXeDFaVG9nSnlGK0p5eGNiaUFnSUNCa1pYTmpjbWx3ZEdsdmJqb2dKMFJ2WlhNZ2JtOTBJRzFoZEdOb0lISmxaMlY0Snl4Y2JpQWdmU3hjYmlBZ2UxeHVJQ0FnSUhaaGJIVmxPaUFuUENjc1hHNGdJQ0FnWkdWelkzSnBjSFJwYjI0NklDZE1aWE56SUhSb1lXNG5MRnh1SUNCOUxGeHVJQ0I3WEc0Z0lDQWdkbUZzZFdVNklDYytKeXhjYmlBZ0lDQmtaWE5qY21sd2RHbHZiam9nSjBkeVpXRjBaWElnZEdoaGJpY3NYRzRnSUgwc1hHNWRPMXh1WEc1bGVIQnZjblFnWTJ4aGMzTWdRV1JJYjJOR2FXeDBaWEp6Vm1GeWFXRmliR1ZjYmlBZ1pYaDBaVzVrY3lCVFkyVnVaVTlpYW1WamRFSmhjMlU4UVdSSWIyTkdhV3gwWlhKelZtRnlhV0ZpYkdWVGRHRjBaVDVjYmlBZ2FXMXdiR1Z0Wlc1MGN5QlRZMlZ1WlZaaGNtbGhZbXhsUEVGa1NHOWpSbWxzZEdWeWMxWmhjbWxoWW14bFUzUmhkR1UrWEc1N1hHNGdJSE4wWVhScFl5QkRiMjF3YjI1bGJuUWdQU0JCWkVodlkwWnBiSFJsY25OV1lYSnBZV0pzWlZKbGJtUmxjbVZ5TzF4dVhHNGdJSEJ5YVhaaGRHVWdYM05qYjNCbFpGWmhjbk1nUFNCN0lGOWZjMk5sYm1WUFltcGxZM1E2SUhkeVlYQkpibE5oWm1WVFpYSnBZV3hwZW1GaWJHVlRZMlZ1WlU5aWFtVmpkQ2gwYUdsektTQjlPMXh1SUNCd2NtbDJZWFJsSUY5a1lYUmhVMjkxY21ObFUzSjJJRDBnWjJWMFJHRjBZVk52ZFhKalpWTnlkaWdwTzF4dVhHNGdJSEJ5YjNSbFkzUmxaQ0JmZFhKc1UzbHVZeUE5SUc1bGR5QkJaRWh2WTBacGJIUmxjbk5XWVhKcFlXSnNaVlZ5YkZONWJtTklZVzVrYkdWeUtIUm9hWE1wTzF4dVhHNGdJSEIxWW14cFl5QmpiMjV6ZEhKMVkzUnZjaWh6ZEdGMFpUb2dVR0Z5ZEdsaGJEeEJaRWh2WTBacGJIUmxjbk5XWVhKcFlXSnNaVk4wWVhSbFBpa2dlMXh1SUNBZ0lITjFjR1Z5S0h0Y2JpQWdJQ0FnSUhSNWNHVTZJQ2RoWkdodll5Y3NYRzRnSUNBZ0lDQnVZVzFsT2lCemRHRjBaUzV1WVcxbElEOC9JQ2RHYVd4MFpYSnpKeXhjYmlBZ0lDQWdJR1pwYkhSbGNuTTZJRnRkTEZ4dUlDQWdJQ0FnWkdGMFlYTnZkWEpqWlRvZ2JuVnNiQ3hjYmlBZ0lDQWdJR0Z3Y0d4NVRXOWtaVG9nSjJGMWRHOG5MRnh1SUNBZ0lDQWdabWxzZEdWeVJYaHdjbVZ6YzJsdmJqb2djM1JoZEdVdVptbHNkR1Z5Ulhod2NtVnpjMmx2YmlBL1B5QnlaVzVrWlhKRmVIQnlaWE56YVc5dUtITjBZWFJsTG1WNGNISmxjM05wYjI1Q2RXbHNaR1Z5TENCemRHRjBaUzVtYVd4MFpYSnpLU3hjYmlBZ0lDQWdJQzR1TG5OMFlYUmxMRnh1SUNBZ0lIMHBPMXh1WEc0Z0lDQWdhV1lnS0hSb2FYTXVjM1JoZEdVdVlYQndiSGxOYjJSbElEMDlQU0FuWVhWMGJ5Y3BJSHRjYmlBZ0lDQWdJSEJoZEdOb1IyVjBRV1JvYjJOR2FXeDBaWEp6S0hSb2FYTXBPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5QnpaWFJUZEdGMFpTaDFjR1JoZEdVNklGQmhjblJwWVd3OFFXUkliMk5HYVd4MFpYSnpWbUZ5YVdGaWJHVlRkR0YwWlQ0cE9pQjJiMmxrSUh0Y2JpQWdJQ0JzWlhRZ1ptbHNkR1Z5Ulhod2NtVnpjMmx2YmtOb1lXNW5aV1FnUFNCbVlXeHpaVHRjYmx4dUlDQWdJR2xtSUNoMWNHUmhkR1V1Wm1sc2RHVnljeUFtSmlCMWNHUmhkR1V1Wm1sc2RHVnljeUFoUFQwZ2RHaHBjeTV6ZEdGMFpTNW1hV3gwWlhKeklDWW1JQ0YxY0dSaGRHVXVabWxzZEdWeVJYaHdjbVZ6YzJsdmJpa2dlMXh1SUNBZ0lDQWdkWEJrWVhSbExtWnBiSFJsY2tWNGNISmxjM05wYjI0Z1BTQnlaVzVrWlhKRmVIQnlaWE56YVc5dUtIUm9hWE11YzNSaGRHVXVaWGh3Y21WemMybHZia0oxYVd4a1pYSXNJSFZ3WkdGMFpTNW1hV3gwWlhKektUdGNiaUFnSUNBZ0lHWnBiSFJsY2tWNGNISmxjM05wYjI1RGFHRnVaMlZrSUQwZ2RYQmtZWFJsTG1acGJIUmxja1Y0Y0hKbGMzTnBiMjRnSVQwOUlIUm9hWE11YzNSaGRHVXVabWxzZEdWeVJYaHdjbVZ6YzJsdmJqdGNiaUFnSUNCOVhHNWNiaUFnSUNCemRYQmxjaTV6WlhSVGRHRjBaU2gxY0dSaGRHVXBPMXh1WEc0Z0lDQWdhV1lnS0dacGJIUmxja1Y0Y0hKbGMzTnBiMjVEYUdGdVoyVmtLU0I3WEc0Z0lDQWdJQ0IwYUdsekxuQjFZbXhwYzJoRmRtVnVkQ2h1WlhjZ1UyTmxibVZXWVhKcFlXSnNaVlpoYkhWbFEyaGhibWRsWkVWMlpXNTBLSFJvYVhNcExDQjBjblZsS1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWjJWMFZtRnNkV1VvS1RvZ1ZtRnlhV0ZpYkdWV1lXeDFaU0I4SUhWdVpHVm1hVzVsWkNCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWMzUmhkR1V1Wm1sc2RHVnlSWGh3Y21WemMybHZianRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJmZFhCa1lYUmxSbWxzZEdWeUtHWnBiSFJsY2pvZ1FXUkliMk5HYVd4MFpYSlhhWFJvVEdGaVpXeHpMQ0IxY0dSaGRHVTZJRkJoY25ScFlXdzhRV1JJYjJOR2FXeDBaWEpYYVhSb1RHRmlaV3h6UGlrZ2UxeHVJQ0FnSUdOdmJuTjBJSHNnWm1sc2RHVnljeXdnWDNkcGNDQjlJRDBnZEdocGN5NXpkR0YwWlR0Y2JseHVJQ0FnSUdsbUlDaG1hV3gwWlhJZ1BUMDlJRjkzYVhBcElIdGNiaUFnSUNBZ0lDOHZJRWxtSUhkbElITmxkQ0IyWVd4MVpTQjNaU0JoY21VZ1pHOXVaU0IzYVhSb0lIUm9hWE1nWENKM2IzSnJJR2x1SUhCeWIyZHlaWE56WENJZ1ptbHNkR1Z5SUdGdVpDQjNaU0JqWVc0Z1lXUmtJR2wwWEc0Z0lDQWdJQ0JwWmlBb0ozWmhiSFZsSnlCcGJpQjFjR1JoZEdVZ0ppWWdkWEJrWVhSbFd5ZDJZV3gxWlNkZElDRTlQU0FuSnlrZ2UxeHVJQ0FnSUNBZ0lDQjBhR2x6TG5ObGRGTjBZWFJsS0hzZ1ptbHNkR1Z5Y3pvZ1d5NHVMbVpwYkhSbGNuTXNJSHNnTGk0dVgzZHBjQ3dnTGk0dWRYQmtZWFJsSUgxZExDQmZkMmx3T2lCMWJtUmxabWx1WldRZ2ZTazdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQjBhR2x6TG5ObGRGTjBZWFJsS0hzZ1gzZHBjRG9nZXlBdUxpNW1hV3gwWlhJc0lDNHVMblZ3WkdGMFpTQjlJSDBwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHTnZibk4wSUhWd1pHRjBaV1JHYVd4MFpYSnpJRDBnZEdocGN5NXpkR0YwWlM1bWFXeDBaWEp6TG0xaGNDZ29aaWtnUFQ0Z2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUdZZ1BUMDlJR1pwYkhSbGNpQS9JSHNnTGk0dVppd2dMaTR1ZFhCa1lYUmxJSDBnT2lCbU8xeHVJQ0FnSUgwcE8xeHVYRzRnSUNBZ2RHaHBjeTV6WlhSVGRHRjBaU2g3SUdacGJIUmxjbk02SUhWd1pHRjBaV1JHYVd4MFpYSnpJSDBwTzF4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUY5eVpXMXZkbVZHYVd4MFpYSW9abWxzZEdWeU9pQkJaRWh2WTBacGJIUmxjbGRwZEdoTVlXSmxiSE1wSUh0Y2JpQWdJQ0JwWmlBb1ptbHNkR1Z5SUQwOVBTQjBhR2x6TG5OMFlYUmxMbDkzYVhBcElIdGNiaUFnSUNBZ0lIUm9hWE11YzJWMFUzUmhkR1VvZXlCZmQybHdPaUIxYm1SbFptbHVaV1FnZlNrN1hHNGdJQ0FnSUNCeVpYUjFjbTQ3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdkR2hwY3k1elpYUlRkR0YwWlNoN0lHWnBiSFJsY25NNklIUm9hWE11YzNSaGRHVXVabWxzZEdWeWN5NW1hV3gwWlhJb0tHWXBJRDArSUdZZ0lUMDlJR1pwYkhSbGNpa2dmU2s3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWDNKbGJXOTJaVXhoYzNSR2FXeDBaWElvS1NCN1hHNGdJQ0FnWTI5dWMzUWdabWxzZEdWeVZHOVNaVzF2ZG1VZ1BTQjBhR2x6TG5OMFlYUmxMbVpwYkhSbGNuTXVZWFFvTFRFcE8xeHVYRzRnSUNBZ2FXWWdLR1pwYkhSbGNsUnZVbVZ0YjNabEtTQjdYRzRnSUNBZ0lDQjBhR2x6TGw5eVpXMXZkbVZHYVd4MFpYSW9abWxzZEdWeVZHOVNaVzF2ZG1VcE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCZmFHRnVaR3hsUTI5dFltOWliM2hDWVdOcmMzQmhZMlVvWm1sc2RHVnlPaUJCWkVodlkwWnBiSFJsY2xkcGRHaE1ZV0psYkhNcElIdGNiaUFnSUNCcFppQW9kR2hwY3k1emRHRjBaUzVtYVd4MFpYSnpMbXhsYm1kMGFDa2dlMXh1SUNBZ0lDQWdMeThnWkdWbVlYVnNkQ0JtYjNKalpVVmthWFFnYkdGemRDQm1hV3gwWlhJZ0tIZG9aVzRnZEhKcFoyZGxjbWx1WnlCbWNtOXRJSGRwY0NCbWFXeDBaWElwWEc0Z0lDQWdJQ0JzWlhRZ1ptbHNkR1Z5Vkc5R2IzSmpaVWx1WkdWNElEMGdkR2hwY3k1emRHRjBaUzVtYVd4MFpYSnpMbXhsYm1kMGFDQXRJREU3WEc1Y2JpQWdJQ0FnSUM4dklHRmthblZ6ZENCbWFXeDBaWEpVYjBadmNtTmxTVzVrWlhnZ2FXNWtaWGdnZEc4Z0xURWdhV1lnWW1GamEzTndZV05sSUhSeWFXZG5aWEpsWkNCbWNtOXRJRzV2YmlCM2FYQWdabWxzZEdWeVhHNGdJQ0FnSUNBdkx5QWdkRzhnWVhadmFXUWdkSEpwWjJkbGNtbHVaeUJtYjNKalpVVmthWFFnYkc5bmFXTmNiaUFnSUNBZ0lHbG1JQ2htYVd4MFpYSWdJVDA5SUhSb2FYTXVjM1JoZEdVdVgzZHBjQ2tnZTF4dUlDQWdJQ0FnSUNCbWFXeDBaWEpVYjBadmNtTmxTVzVrWlhnZ1BTQXRNVHRjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnZEdocGN5NXpaWFJUZEdGMFpTaDdYRzRnSUNBZ0lDQWdJR1pwYkhSbGNuTTZJSFJvYVhNdWMzUmhkR1V1Wm1sc2RHVnljeTV5WldSMVkyVThRV1JJYjJOR2FXeDBaWEpYYVhSb1RHRmlaV3h6VzEwK0tDaGhZMk1zSUdZc0lHbHVaR1Y0S1NBOVBpQjdYRzRnSUNBZ0lDQWdJQ0FnTHk4Z1lXUnFkWE4wSUdadmNtTmxSV1JwZENCdlppQndjbVZqWldScGJtY2dabWxzZEdWeVhHNGdJQ0FnSUNBZ0lDQWdhV1lnS0dsdVpHVjRJRDA5UFNCbWFXeDBaWEpVYjBadmNtTmxTVzVrWlhncElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJiWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQzR1TG1Gall5eGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDNHVMbVlzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWm05eVkyVkZaR2wwT2lCMGNuVmxMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQjlMRnh1SUNBZ0lDQWdJQ0FnSUNBZ1hUdGNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0x5OGdjbVZ0YjNabElHTjFjbkpsYm5RZ1ptbHNkR1Z5WEc0Z0lDQWdJQ0FnSUNBZ2FXWWdLR1lnUFQwOUlHWnBiSFJsY2lrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJR0ZqWXp0Y2JpQWdJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnV3k0dUxtRmpZeXdnWmwwN1hHNGdJQ0FnSUNBZ0lIMHNJRnRkS1N4Y2JpQWdJQ0FnSUgwcE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkhaWFFnY0c5emMybGliR1VnYTJWNWN5Qm5hWFpsYmlCamRYSnlaVzUwSUdacGJIUmxjbk11SUVSdklHNXZkQ0JqWVd4c0lHWnliMjBnY0d4MVoybHVjeUJrYVhKbFkzUnNlVnh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR0Z6ZVc1aklGOW5aWFJMWlhsektHTjFjbkpsYm5STFpYazZJSE4wY21sdVp5QjhJRzUxYkd3cE9pQlFjbTl0YVhObFBFRnljbUY1UEZObGJHVmpkR0ZpYkdWV1lXeDFaVHh6ZEhKcGJtYytQajRnZTF4dUlDQWdJR052Ym5OMElHOTJaWEp5YVdSbElEMGdZWGRoYVhRZ2RHaHBjeTV6ZEdGMFpTNW5aWFJVWVdkTFpYbHpVSEp2ZG1sa1pYSS9MaWgwYUdsekxDQmpkWEp5Wlc1MFMyVjVLVHRjYmx4dUlDQWdJR2xtSUNodmRtVnljbWxrWlNBbUppQnZkbVZ5Y21sa1pTNXlaWEJzWVdObEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z1pHRjBZVVp5YjIxU1pYTndiMjV6WlNodmRtVnljbWxrWlM1MllXeDFaWE1wTG0xaGNDaDBiMU5sYkdWamRHRmliR1ZXWVd4MVpTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLSFJvYVhNdWMzUmhkR1V1WkdWbVlYVnNkRXRsZVhNcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCMGFHbHpMbk4wWVhSbExtUmxabUYxYkhSTFpYbHpMbTFoY0NoMGIxTmxiR1ZqZEdGaWJHVldZV3gxWlNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWTI5dWMzUWdaSE1nUFNCaGQyRnBkQ0IwYUdsekxsOWtZWFJoVTI5MWNtTmxVM0oyTG1kbGRDaDBhR2x6TG5OMFlYUmxMbVJoZEdGemIzVnlZMlVzSUhSb2FYTXVYM05qYjNCbFpGWmhjbk1wTzF4dUlDQWdJR2xtSUNnaFpITWdmSHdnSVdSekxtZGxkRlJoWjB0bGVYTXBJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQmJYVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCdmRHaGxja1pwYkhSbGNuTWdQU0IwYUdsekxuTjBZWFJsTG1acGJIUmxjbk11Wm1sc2RHVnlLQ2htS1NBOVBpQm1MbXRsZVNBaFBUMGdZM1Z5Y21WdWRFdGxlU2t1WTI5dVkyRjBLSFJvYVhNdWMzUmhkR1V1WW1GelpVWnBiSFJsY25NZ1B6OGdXMTBwTzF4dUlDQWdJR052Ym5OMElIUnBiV1ZTWVc1blpTQTlJSE5qWlc1bFIzSmhjR2d1WjJWMFZHbHRaVkpoYm1kbEtIUm9hWE1wTG5OMFlYUmxMblpoYkhWbE8xeHVJQ0FnSUdOdmJuTjBJSEYxWlhKcFpYTWdQU0IwYUdsekxuTjBZWFJsTG5WelpWRjFaWEpwWlhOQmMwWnBiSFJsY2tadmNrOXdkR2x2Ym5NZ1B5Qm5aWFJSZFdWeWFXVnpSbTl5Vm1GeWFXRmliR1Z6S0hSb2FYTXBJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJR052Ym5OMElISmxjM0J2Ym5ObElEMGdZWGRoYVhRZ1pITXVaMlYwVkdGblMyVjVjeWg3WEc0Z0lDQWdJQ0JtYVd4MFpYSnpPaUJ2ZEdobGNrWnBiSFJsY25Nc1hHNGdJQ0FnSUNCeGRXVnlhV1Z6TEZ4dUlDQWdJQ0FnZEdsdFpWSmhibWRsTEZ4dUlDQWdJQ0FnTGk0dVoyVjBSVzV5YVdOb1pXUkdhV3gwWlhKelVtVnhkV1Z6ZENoMGFHbHpLU3hjYmlBZ0lDQjlLVHRjYmx4dUlDQWdJR2xtSUNoeVpYTndiMjV6WlVoaGMwVnljbTl5S0hKbGMzQnZibk5sS1NrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTV6WlhSVGRHRjBaU2g3SUdWeWNtOXlPaUJ5WlhOd2IyNXpaUzVsY25KdmNpNXRaWE56WVdkbElIMHBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHeGxkQ0JyWlhseklEMGdaR0YwWVVaeWIyMVNaWE53YjI1elpTaHlaWE53YjI1elpTazdYRzRnSUNBZ2FXWWdLRzkyWlhKeWFXUmxLU0I3WEc0Z0lDQWdJQ0JyWlhseklEMGdhMlY1Y3k1amIyNWpZWFFvWkdGMFlVWnliMjFTWlhOd2IyNXpaU2h2ZG1WeWNtbGtaUzUyWVd4MVpYTXBLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCMFlXZExaWGxTWldkbGVFWnBiSFJsY2lBOUlIUm9hWE11YzNSaGRHVXVkR0ZuUzJWNVVtVm5aWGhHYVd4MFpYSTdYRzRnSUNBZ2FXWWdLSFJoWjB0bGVWSmxaMlY0Um1sc2RHVnlLU0I3WEc0Z0lDQWdJQ0JyWlhseklEMGdhMlY1Y3k1bWFXeDBaWElvS0dZcElEMCtJR1l1ZEdWNGRDNXRZWFJqYUNoMFlXZExaWGxTWldkbGVFWnBiSFJsY2lrcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhKbGRIVnliaUJyWlhsekxtMWhjQ2gwYjFObGJHVmpkR0ZpYkdWV1lXeDFaU2s3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1IyVjBJSEJ2YzNOcFlteGxJR3RsZVNCMllXeDFaWE1nWm05eUlHRWdjM0JsWTJsbWFXTWdhMlY1SUdkcGRtVnVJR04xY25KbGJuUWdabWxzZEdWeWN5NGdSRzhnYm05MElHTmhiR3dnWm5KdmJTQndiSFZuYVc1eklHUnBjbVZqZEd4NVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ1lYTjVibU1nWDJkbGRGWmhiSFZsYzBadmNpaG1hV3gwWlhJNklFRmtTRzlqUm1sc2RHVnlWMmwwYUV4aFltVnNjeWs2SUZCeWIyMXBjMlU4UVhKeVlYazhVMlZzWldOMFlXSnNaVlpoYkhWbFBITjBjbWx1Wno0K1BpQjdYRzRnSUNBZ1kyOXVjM1FnYjNabGNuSnBaR1VnUFNCaGQyRnBkQ0IwYUdsekxuTjBZWFJsTG1kbGRGUmhaMVpoYkhWbGMxQnliM1pwWkdWeVB5NG9kR2hwY3l3Z1ptbHNkR1Z5S1R0Y2JseHVJQ0FnSUdsbUlDaHZkbVZ5Y21sa1pTQW1KaUJ2ZG1WeWNtbGtaUzV5WlhCc1lXTmxLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdaR0YwWVVaeWIyMVNaWE53YjI1elpTaHZkbVZ5Y21sa1pTNTJZV3gxWlhNcExtMWhjQ2gwYjFObGJHVmpkR0ZpYkdWV1lXeDFaU2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdZMjl1YzNRZ1pITWdQU0JoZDJGcGRDQjBhR2x6TGw5a1lYUmhVMjkxY21ObFUzSjJMbWRsZENoMGFHbHpMbk4wWVhSbExtUmhkR0Z6YjNWeVkyVXNJSFJvYVhNdVgzTmpiM0JsWkZaaGNuTXBPMXh1WEc0Z0lDQWdhV1lnS0NGa2N5QjhmQ0FoWkhNdVoyVjBWR0ZuVm1Gc2RXVnpLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdXMTA3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeThnUm1sc2RHVnlJRzkxZENCMGFHVWdZM1Z5Y21WdWRDQm1hV3gwWlhJZ2EyVjVJR1p5YjIwZ2RHaGxJR3hwYzNRZ2IyWWdZV3hzSUdacGJIUmxjbk5jYmlBZ0lDQmpiMjV6ZENCdmRHaGxja1pwYkhSbGNuTWdQU0IwYUdsekxuTjBZWFJsTG1acGJIUmxjbk11Wm1sc2RHVnlLQ2htS1NBOVBpQm1MbXRsZVNBaFBUMGdabWxzZEdWeUxtdGxlU2t1WTI5dVkyRjBLSFJvYVhNdWMzUmhkR1V1WW1GelpVWnBiSFJsY25NZ1B6OGdXMTBwTzF4dVhHNGdJQ0FnWTI5dWMzUWdkR2x0WlZKaGJtZGxJRDBnYzJObGJtVkhjbUZ3YUM1blpYUlVhVzFsVW1GdVoyVW9kR2hwY3lrdWMzUmhkR1V1ZG1Gc2RXVTdYRzRnSUNBZ1kyOXVjM1FnY1hWbGNtbGxjeUE5SUhSb2FYTXVjM1JoZEdVdWRYTmxVWFZsY21sbGMwRnpSbWxzZEdWeVJtOXlUM0IwYVc5dWN5QS9JR2RsZEZGMVpYSnBaWE5HYjNKV1lYSnBZV0pzWlhNb2RHaHBjeWtnT2lCMWJtUmxabWx1WldRN1hHNWNiaUFnSUNCamIyNXpkQ0J5WlhOd2IyNXpaU0E5SUdGM1lXbDBJR1J6TG1kbGRGUmhaMVpoYkhWbGN5aDdYRzRnSUNBZ0lDQnJaWGs2SUdacGJIUmxjaTVyWlhrc1hHNGdJQ0FnSUNCbWFXeDBaWEp6T2lCdmRHaGxja1pwYkhSbGNuTXNYRzRnSUNBZ0lDQjBhVzFsVW1GdVoyVXNYRzRnSUNBZ0lDQnhkV1Z5YVdWekxGeHVJQ0FnSUNBZ0xpNHVaMlYwUlc1eWFXTm9aV1JHYVd4MFpYSnpVbVZ4ZFdWemRDaDBhR2x6S1N4Y2JpQWdJQ0I5S1R0Y2JseHVJQ0FnSUdsbUlDaHlaWE53YjI1elpVaGhjMFZ5Y205eUtISmxjM0J2Ym5ObEtTa2dlMXh1SUNBZ0lDQWdkR2hwY3k1elpYUlRkR0YwWlNoN0lHVnljbTl5T2lCeVpYTndiMjV6WlM1bGNuSnZjaTV0WlhOellXZGxJSDBwTzF4dUlDQWdJSDFjYmx4dUlDQWdJR3hsZENCMllXeDFaWE1nUFNCa1lYUmhSbkp2YlZKbGMzQnZibk5sS0hKbGMzQnZibk5sS1R0Y2JpQWdJQ0JwWmlBb2IzWmxjbkpwWkdVcElIdGNiaUFnSUNBZ0lIWmhiSFZsY3lBOUlIWmhiSFZsY3k1amIyNWpZWFFvWkdGMFlVWnliMjFTWlhOd2IyNXpaU2h2ZG1WeWNtbGtaUzUyWVd4MVpYTXBLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z2RtRnNkV1Z6TG0xaGNDaDBiMU5sYkdWamRHRmliR1ZXWVd4MVpTazdYRzRnSUgxY2JseHVJQ0J3ZFdKc2FXTWdYMkZrWkZkcGNDZ3BJSHRjYmlBZ0lDQjBhR2x6TG5ObGRGTjBZWFJsS0h0Y2JpQWdJQ0FnSUY5M2FYQTZJSHNnYTJWNU9pQW5KeXdnZG1Gc2RXVTZJQ2NuTENCdmNHVnlZWFJ2Y2pvZ0p6MG5MQ0JqYjI1a2FYUnBiMjQ2SUNjbklIMHNYRzRnSUNBZ2ZTazdYRzRnSUgxY2JseHVJQ0J3ZFdKc2FXTWdYMmRsZEU5d1pYSmhkRzl5Y3lncElIdGNiaUFnSUNCamIyNXpkQ0JtYVd4MFpYSmxaRTl3WlhKaGRHOXljeUE5SUhSb2FYTXVjM1JoZEdVdWMzVndjRzl5ZEhOTmRXeDBhVlpoYkhWbFQzQmxjbUYwYjNKelhHNGdJQ0FnSUNBL0lFOVFSVkpCVkU5U1UxeHVJQ0FnSUNBZ09pQlBVRVZTUVZSUFVsTXVabWxzZEdWeUtDaHZjR1Z5WVhSdmNpa2dQVDRnSVc5d1pYSmhkRzl5TG1selRYVnNkR2twTzF4dUlDQWdJSEpsZEhWeWJpQm1hV3gwWlhKbFpFOXdaWEpoZEc5eWN5NXRZWEE4VTJWc1pXTjBZV0pzWlZaaGJIVmxQSE4wY21sdVp6NCtLQ2g3SUhaaGJIVmxMQ0JrWlhOamNtbHdkR2x2YmlCOUtTQTlQaUFvZTF4dUlDQWdJQ0FnYkdGaVpXdzZJSFpoYkhWbExGeHVJQ0FnSUNBZ2RtRnNkV1VzWEc0Z0lDQWdJQ0JrWlhOamNtbHdkR2x2Yml4Y2JpQWdJQ0I5S1NrN1hHNGdJSDFjYm4xY2JseHVablZ1WTNScGIyNGdjbVZ1WkdWeVJYaHdjbVZ6YzJsdmJpaGNiaUFnWW5WcGJHUmxjam9nUVdSSWIyTldZWEpwWVdKc1pVVjRjSEpsYzNOcGIyNUNkV2xzWkdWeVJtNGdmQ0IxYm1SbFptbHVaV1FzWEc0Z0lHWnBiSFJsY25NNklFRmtTRzlqUm1sc2RHVnlWMmwwYUV4aFltVnNjMXRkSUh3Z2RXNWtaV1pwYm1Wa1hHNHBJSHRjYmlBZ2NtVjBkWEp1SUNoaWRXbHNaR1Z5SUQ4L0lISmxibVJsY2xCeWIyMWxkR2hsZFhOTVlXSmxiRVpwYkhSbGNuTXBLR1pwYkhSbGNuTWdQejhnVzEwcE8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnUVdSSWIyTkdhV3gwWlhKelZtRnlhV0ZpYkdWU1pXNWtaWEpsY2loN0lHMXZaR1ZzSUgwNklGTmpaVzVsUTI5dGNHOXVaVzUwVUhKdmNITThRV1JJYjJOR2FXeDBaWEp6Vm1GeWFXRmliR1UrS1NCN1hHNGdJR052Ym5OMElIc2dabWxzZEdWeWN5d2djbVZoWkU5dWJIa3NJR0ZrWkVacGJIUmxja0oxZEhSdmJsUmxlSFFnZlNBOUlHMXZaR1ZzTG5WelpWTjBZWFJsS0NrN1hHNGdJR052Ym5OMElITjBlV3hsY3lBOUlIVnpaVk4wZVd4bGN6SW9aMlYwVTNSNWJHVnpLVHRjYmx4dUlDQnBaaUFvYlc5a1pXd3VjM1JoZEdVdWJHRjViM1YwSUQwOVBTQW5ZMjl0WW05aWIzZ25LU0I3WEc0Z0lDQWdjbVYwZFhKdUlEeEJaRWh2WTBacGJIUmxjbk5EYjIxaWIySnZlRkpsYm1SbGNtVnlJRzF2WkdWc1BYdHRiMlJsYkgwZ0x6NDdYRzRnSUgxY2JseHVJQ0J5WlhSMWNtNGdLRnh1SUNBZ0lEeGthWFlnWTJ4aGMzTk9ZVzFsUFh0emRIbHNaWE11ZDNKaGNIQmxjbjArWEc0Z0lDQWdJQ0I3Wm1sc2RHVnljeTV0WVhBb0tHWnBiSFJsY2l3Z2FXNWtaWGdwSUQwK0lDaGNiaUFnSUNBZ0lDQWdQRkpsWVdOMExrWnlZV2R0Wlc1MElHdGxlVDE3YVc1a1pYaDlQbHh1SUNBZ0lDQWdJQ0FnSUR4QlpFaHZZMFpwYkhSbGNsSmxibVJsY21WeUlHWnBiSFJsY2oxN1ptbHNkR1Z5ZlNCdGIyUmxiRDE3Ylc5a1pXeDlJQzgrWEc0Z0lDQWdJQ0FnSUR3dlVtVmhZM1F1Um5KaFoyMWxiblErWEc0Z0lDQWdJQ0FwS1gxY2JseHVJQ0FnSUNBZ2V5RnlaV0ZrVDI1c2VTQW1KaUE4UVdSSWIyTkdhV3gwWlhKQ2RXbHNaR1Z5SUcxdlpHVnNQWHR0YjJSbGJIMGdhMlY1UFZ3aUoySjFhV3hrWlhKY0lpQmhaR1JHYVd4MFpYSkNkWFIwYjI1VVpYaDBQWHRoWkdSR2FXeDBaWEpDZFhSMGIyNVVaWGgwZlNBdlBuMWNiaUFnSUNBOEwyUnBkajVjYmlBZ0tUdGNibjFjYmx4dVkyOXVjM1FnWjJWMFUzUjViR1Z6SUQwZ0tIUm9aVzFsT2lCSGNtRm1ZVzVoVkdobGJXVXlLU0E5UGlBb2UxeHVJQ0IzY21Gd2NHVnlPaUJqYzNNb2UxeHVJQ0FnSUdScGMzQnNZWGs2SUNkbWJHVjRKeXhjYmlBZ0lDQm1iR1Y0VjNKaGNEb2dKM2R5WVhBbkxGeHVJQ0FnSUdGc2FXZHVTWFJsYlhNNklDZG1iR1Y0TFdWdVpDY3NYRzRnSUNBZ1kyOXNkVzF1UjJGd09pQjBhR1Z0WlM1emNHRmphVzVuS0RJcExGeHVJQ0FnSUhKdmQwZGhjRG9nZEdobGJXVXVjM0JoWTJsdVp5Z3hLU3hjYmlBZ2ZTa3NYRzU5S1R0Y2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlIUnZVMlZzWldOMFlXSnNaVlpoYkhWbEtHbHVjSFYwT2lCTlpYUnlhV05HYVc1a1ZtRnNkV1VwT2lCVFpXeGxZM1JoWW14bFZtRnNkV1U4YzNSeWFXNW5QaUI3WEc0Z0lHTnZibk4wSUhzZ2RHVjRkQ3dnZG1Gc2RXVWdmU0E5SUdsdWNIVjBPMXh1SUNCamIyNXpkQ0J5WlhOMWJIUTZJRk5sYkdWamRHRmliR1ZXWVd4MVpUeHpkSEpwYm1jK0lEMGdlMXh1SUNBZ0lHeGhZbVZzT2lCMFpYaDBMRnh1SUNBZ0lIWmhiSFZsT2lCVGRISnBibWNvZG1Gc2RXVWdQejhnZEdWNGRDa3NYRzRnSUgwN1hHNWNiaUFnYVdZZ0tDZG5jbTkxY0NjZ2FXNGdhVzV3ZFhRcElIdGNiaUFnSUNCeVpYTjFiSFF1WjNKdmRYQWdQU0JwYm5CMWRDNW5jbTkxY0R0Y2JpQWdmVnh1WEc0Z0lISmxkSFZ5YmlCeVpYTjFiSFE3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnBjMFpwYkhSbGNrTnZiWEJzWlhSbEtHWnBiSFJsY2pvZ1FXUkliMk5HYVd4MFpYSlhhWFJvVEdGaVpXeHpLVG9nWW05dmJHVmhiaUI3WEc0Z0lISmxkSFZ5YmlCbWFXeDBaWEl1YTJWNUlDRTlQU0FuSnlBbUppQm1hV3gwWlhJdWIzQmxjbUYwYjNJZ0lUMDlJQ2NuSUNZbUlHWnBiSFJsY2k1MllXeDFaU0FoUFQwZ0p5YzdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCcGMwMTFiSFJwVm1Gc2RXVlBjR1Z5WVhSdmNpaHZjR1Z5WVhSdmNsWmhiSFZsT2lCemRISnBibWNwT2lCaWIyOXNaV0Z1SUh0Y2JpQWdZMjl1YzNRZ2IzQmxjbUYwYjNJZ1BTQlBVRVZTUVZSUFVsTXVabWx1WkNnb2J5a2dQVDRnYnk1MllXeDFaU0E5UFQwZ2IzQmxjbUYwYjNKV1lXeDFaU2s3WEc0Z0lHbG1JQ2doYjNCbGNtRjBiM0lwSUh0Y2JpQWdJQ0F2THlCa1pXWmhkV3gwSUhSdklHWmhiSE5sSUdsbUlHOXdaWEpoZEc5eUlHbHpJRzV2ZENCbWIzVnVaRnh1SUNBZ0lISmxkSFZ5YmlCbVlXeHpaVHRjYmlBZ2ZWeHVJQ0J5WlhSMWNtNGdRbTl2YkdWaGJpaHZjR1Z5WVhSdmNpNXBjMDExYkhScEtUdGNibjFjYmlKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenRCUVN0SVR5eE5RVUZOTEZOQlFXdERMRWRCUVVFN1FVRkJRU3hGUVVNM1F6dEJRVUZCTEVsQlEwVXNTMEZCVHl4RlFVRkJMRWRCUVVFN1FVRkJRU3hKUVVOUUxGZEJRV0VzUlVGQlFTeFJRVUZCTzBGQlFVRXNSMEZEWmp0QlFVRkJMRVZCUTBFN1FVRkJRU3hKUVVORkxFdEJRVThzUlVGQlFTeEpRVUZCTzBGQlFVRXNTVUZEVUN4WFFVRmhMRVZCUVVFc1YwRkJRVHRCUVVGQkxFZEJRMlk3UVVGQlFTeEZRVU5CTzBGQlFVRXNTVUZEUlN4TFFVRlBMRVZCUVVFc1NVRkJRVHRCUVVGQkxFbEJRMUFzVjBGQllTeEZRVUZCTERKRFFVRkJPMEZCUVVFc1NVRkRZaXhQUVVGVExFVkJRVUVzU1VGQlFUdEJRVUZCTEVkQlExZzdRVUZCUVN4RlFVTkJPMEZCUVVFc1NVRkRSU3hMUVVGUExFVkJRVUVzUzBGQlFUdEJRVUZCTEVsQlExQXNWMEZCWVN4RlFVRkJMRFpEUVVGQk8wRkJRVUVzU1VGRFlpeFBRVUZUTEVWQlFVRXNTVUZCUVR0QlFVRkJMRWRCUTFnN1FVRkJRU3hGUVVOQk8wRkJRVUVzU1VGRFJTeExRVUZQTEVWQlFVRXNTVUZCUVR0QlFVRkJMRWxCUTFBc1YwRkJZU3hGUVVGQkxHVkJRVUU3UVVGQlFTeEhRVU5tTzBGQlFVRXNSVUZEUVR0QlFVRkJMRWxCUTBVc1MwRkJUeXhGUVVGQkxFbEJRVUU3UVVGQlFTeEpRVU5RTEZkQlFXRXNSVUZCUVN4elFrRkJRVHRCUVVGQkxFZEJRMlk3UVVGQlFTeEZRVU5CTzBGQlFVRXNTVUZEUlN4TFFVRlBMRVZCUVVFc1IwRkJRVHRCUVVGQkxFbEJRMUFzVjBGQllTeEZRVUZCTEZkQlFVRTdRVUZCUVN4SFFVTm1PMEZCUVVFc1JVRkRRVHRCUVVGQkxFbEJRMFVzUzBGQlR5eEZRVUZCTEVkQlFVRTdRVUZCUVN4SlFVTlFMRmRCUVdFc1JVRkJRU3hqUVVGQk8wRkJRVUVzUjBGRFpqdEJRVU5HTEVWQlFVRTdRVUZGVHl4TlFVRk5MRFpDUVVOSUxHVkJSVllzUTBGQlFUdEJRVUZCTEVWQlVWTXNXVUZCV1N4TFFVRXlReXhGUVVGQk8wRkJMMHRvUlN4SlFVRkJMRWxCUVVFc1JVRkJRU3hGUVVGQkxFVkJRVUVzUTBGQlFUdEJRV2RNU1N4SlFVRk5MRXRCUVVFc1EwRkJRU3hqUVVGQkxFTkJRVUU3UVVGQlFTeE5RVU5LTEVsQlFVMHNSVUZCUVN4UFFVRkJPMEZCUVVFc1RVRkRUaXhKUVVGQkxFVkJRVUVzUTBGQlRTeEZRVUZOTEVkQlFVRXNTMEZCUVN4RFFVRkJMRWxCUVVFc1MwRkJUaXhKUVVGakxFZEJRVUVzUlVGQlFTeEhRVUZCTEZOQlFVRTdRVUZCUVN4TlFVTndRaXhUUVVGVExFVkJRVU03UVVGQlFTeE5RVU5XTEZWQlFWa3NSVUZCUVN4SlFVRkJPMEZCUVVFc1RVRkRXaXhUUVVGWExFVkJRVUVzVFVGQlFUdEJRVUZCTEUxQlExZ3NaMEpCUVVFc1JVRkJRU3hEUVVGclFpeFhRVUZOTEdkQ1FVRk9MRXRCUVVFc1NVRkJRU3hIUVVGQkxFVkJRVUVzUjBGQk1FSXNhVUpCUVdsQ0xFdEJRVTBzUTBGQlFTeHBRa0ZCUVN4RlFVRnRRaXhOUVVGTkxFOUJRVThzUTBGQlFUdEJRVUZCTEV0QlFVRXNSVUZEYUVjc1MwRkRTaXhEUVVGQkxFTkJRVUVzUTBGQlFUdEJRV1JJTEVsQlFVRXNTVUZCUVN4RFFVRlJMRmRCUVdNc1IwRkJRU3hGUVVGRkxHRkJRV1VzUlVGQlFTeHBRMEZCUVN4RFFVRnJReXhKUVVGSkxFTkJRVVVzUlVGQlFTeERRVUZCTzBGQlF5OUZMRWxCUVVFc1NVRkJRU3hEUVVGUkxHbENRVUZwUWl4blFrRkJhVUlzUlVGQlFTeERRVUZCTzBGQlJURkRMRWxCUVZVc1NVRkJRU3hEUVVGQkxGRkJRVUVzUjBGQlZ5eEpRVUZKTEd0RFFVRkJMRU5CUVcxRExFbEJRVWtzUTBGQlFTeERRVUZCTzBGQllUbEVMRWxCUVVrc1NVRkJRU3hKUVVGQkxFTkJRVXNzUzBGQlRTeERRVUZCTEZOQlFVRXNTMEZCWXl4TlFVRlJMRVZCUVVFN1FVRkRia01zVFVGQlFTeHZRa0ZCUVN4RFFVRnhRaXhKUVVGSkxFTkJRVUVzUTBGQlFUdEJRVUZCTEV0QlF6TkNPMEZCUVVFc1IwRkRSanRCUVVGQkxFVkJSVThzVTBGQlV5eE5RVUZyUkN4RlFVRkJPMEZCUTJoRkxFbEJRVUVzU1VGQlNTeDFRa0ZCTUVJc1IwRkJRU3hMUVVGQkxFTkJRVUU3UVVGRk9VSXNTVUZCU1N4SlFVRkJMRTFCUVVFc1EwRkJUeXhYUVVGWExFMUJRVThzUTBGQlFTeFBRVUZCTEV0QlFWa3NTMEZCU3l4TFFVRk5MRU5CUVVFc1QwRkJRU3hKUVVGWExFTkJRVU1zVFVGQlFTeERRVUZQTEdkQ1FVRnJRaXhGUVVGQk8wRkJRM1pHTEUxQlFVRXNUVUZCUVN4RFFVRlBMRzFDUVVGdFFpeG5Ra0ZCYVVJc1EwRkJRU3hKUVVGQkxFTkJRVXNzUzBGQlRTeERRVUZCTEdsQ1FVRkJMRVZCUVcxQ0xFOUJRVThzVDBGQlR5eERRVUZCTEVOQlFVRTdRVUZEZGtZc1RVRkJNRUlzZFVKQlFVRXNSMEZCUVN4TlFVRkJMRU5CUVU4c1owSkJRWEZDTEV0QlFVRXNTVUZCUVN4RFFVRkxMRXRCUVUwc1EwRkJRU3huUWtGQlFTeERRVUZCTzBGQlFVRXNTMEZEYmtVN1FVRkZRU3hKUVVGQkxFdEJRVUVzUTBGQlRTeFRRVUZUTEUxQlFVMHNRMEZCUVN4RFFVRkJPMEZCUlhKQ0xFbEJRVUVzU1VGQlNTeDFRa0ZCZVVJc1JVRkJRVHRCUVVNelFpeE5RVUZCTEVsQlFVRXNRMEZCU3l4WlFVRmhMRU5CUVVFc1NVRkJTU3c0UWtGQkswSXNRMEZCUVN4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGQkxFTkJRVUU3UVVGQlFTeExRVU5zUlR0QlFVRkJMRWRCUTBZN1FVRkJRU3hGUVVWUExGRkJRWE5ETEVkQlFVRTdRVUZETTBNc1NVRkJRU3hQUVVGUExFdEJRVXNzUzBGQlRTeERRVUZCTEdkQ1FVRkJMRU5CUVVFN1FVRkJRU3hIUVVOd1FqdEJRVUZCTEVWQlJVOHNZVUZCUVN4RFFVRmpMRkZCUVN0Q0xFMUJRWGRETEVWQlFVRTdRVUZETVVZc1NVRkJRU3hOUVVGTkxFVkJRVVVzVDBGQlFTeEZRVUZUTEVsQlFVc3NSVUZCUVN4SFFVRkpMRWxCUVVzc1EwRkJRU3hMUVVGQkxFTkJRVUU3UVVGRkwwSXNTVUZCUVN4SlFVRkpMRmRCUVZjc1NVRkJUU3hGUVVGQk8wRkJSVzVDTEUxQlFVRXNTVUZCU1N4UFFVRlhMRWxCUVVFc1RVRkJRU3hKUVVGVkxFMUJRVThzUTBGQlFTeFBRVUZCTEVOQlFVRXNTMEZCWVN4RlFVRkpMRVZCUVVFN1FVRkRMME1zVVVGQlFTeEpRVUZCTEVOQlFVc3NVVUZCVXl4RFFVRkJMRVZCUVVVc1QwRkJVeXhGUVVGQkxFTkJRVU1zUjBGQlJ5eFBRVUZCTEVWQlFWTXNZMEZCU3l4RFFVRkJMR05CUVVFc1EwRkJRU3hGUVVGQkxFVkJRVUVzU1VGQlFTeERRVUZCTEVWQlFWTXNUVUZCVVN4RFFVRkJMRU5CUVVFc1JVRkJSeXhKUVVGTkxFVkJRVUVzUzBGQlFTeERRVUZCTEVWQlFWY3NRMEZCUVN4RFFVRkJPMEZCUVVFc1QwRkRNMFVzVFVGQlFUdEJRVU5NTEZGQlFVRXNTVUZCUVN4RFFVRkxMRk5CUVZNc1JVRkJSU3hKUVVGQkxFVkJRVTBzWTBGQlN5eERRVUZCTEdOQlFVRXNRMEZCUVN4RlFVRkJMRVZCUVVFc1RVRkJRU3hEUVVGQkxFVkJRVmNzVTBGQlZTeERRVUZCTEVOQlFVRTdRVUZCUVN4UFFVTnNSRHRCUVVOQkxFMUJRVUVzVDBGQlFUdEJRVUZCTEV0QlEwWTdRVUZGUVN4SlFVRkJMRTFCUVUwc2FVSkJRV2xDTEVsQlFVc3NRMEZCUVN4TFFVRkJMRU5CUVUwc1QwRkJVU3hEUVVGQkxFZEJRVUVzUTBGQlNTeERRVUZETEVOQlFVMHNTMEZCUVR0QlFVTnVSQ3hOUVVGQkxFOUJRVThzUTBGQlRTeExRVUZCTEUxQlFVRXNSMEZCVXl4alFVRkxMRU5CUVVFc1kwRkJRU3hEUVVGQkxFVkJRVUVzUlVGQlFTeERRVUZCTEVOQlFVRXNSVUZCVFN4TlFVRlhMRU5CUVVFc1IwRkJRU3hEUVVGQkxFTkJRVUU3UVVGQlFTeExRVU0zUXl4RFFVRkJMRU5CUVVFN1FVRkZSQ3hKUVVGQkxFbEJRVUVzUTBGQlN5eFJRVUZUTEVOQlFVRXNSVUZCUlN4UFFVRlRMRVZCUVVFc1kwRkJRU3hGUVVGblFpeERRVUZCTEVOQlFVRTdRVUZCUVN4SFFVTXpRenRCUVVGQkxFVkJSVThzWTBGQll5eE5RVUVyUWl4RlFVRkJPMEZCUTJ4RUxFbEJRVWtzU1VGQlFTeE5RVUZCTEV0QlFWY3NTVUZCU3l4RFFVRkJMRXRCUVVFc1EwRkJUU3hKUVVGTkxFVkJRVUU3UVVGRE9VSXNUVUZCUVN4SlFVRkJMRU5CUVVzc1VVRkJVeXhEUVVGQkxFVkJRVVVzU1VGQlRTeEZRVUZCTEV0QlFVRXNRMEZCUVN4RlFVRlhMRU5CUVVFc1EwRkJRVHRCUVVOcVF5eE5RVUZCTEU5QlFVRTdRVUZCUVN4TFFVTkdPMEZCUlVFc1NVRkJRU3hKUVVGQkxFTkJRVXNzVVVGQlV5eERRVUZCTEVWQlFVVXNUMEZCVXl4RlFVRkJMRWxCUVVFc1EwRkJTeXhMUVVGTkxFTkJRVUVzVDBGQlFTeERRVUZSTEUxQlFVOHNRMEZCUVN4RFFVRkRMRU5CUVUwc1MwRkJRU3hEUVVGQkxFdEJRVTBzVFVGQlRTeERRVUZCTEVWQlFVY3NRMEZCUVN4RFFVRkJPMEZCUVVFc1IwRkRNMFU3UVVGQlFTeEZRVVZQTEdsQ1FVRnZRaXhIUVVGQk8wRkJRM3BDTEVsQlFVRXNUVUZCVFN4alFVRnBRaXhIUVVGQkxFbEJRVUVzUTBGQlN5eExRVUZOTEVOQlFVRXNUMEZCUVN4RFFVRlJMRWRCUVVjc1EwRkJSU3hEUVVGQkxFTkJRVUVzUTBGQlFUdEJRVVV2UXl4SlFVRkJMRWxCUVVrc1kwRkJaMElzUlVGQlFUdEJRVU5zUWl4TlFVRkJMRWxCUVVFc1EwRkJTeXhqUVVGakxHTkJRV01zUTBGQlFTeERRVUZCTzBGQlFVRXNTMEZEYmtNN1FVRkJRU3hIUVVOR08wRkJRVUVzUlVGRlR5eDVRa0ZCZVVJc1RVRkJLMElzUlVGQlFUdEJRVU0zUkN4SlFVRkpMRWxCUVVFc1NVRkJRU3hEUVVGTExFdEJRVTBzUTBGQlFTeFBRVUZCTEVOQlFWRXNUVUZCVVN4RlFVRkJPMEZCUlRkQ0xFMUJRVUVzU1VGQlNTeHJRa0ZCY1VJc1IwRkJRU3hKUVVGQkxFTkJRVXNzUzBGQlRTeERRVUZCTEU5QlFVRXNRMEZCVVN4TlFVRlRMRWRCUVVFc1EwRkJRU3hEUVVGQk8wRkJTWEpFTEUxQlFVa3NTVUZCUVN4TlFVRkJMRXRCUVZjc1NVRkJTeXhEUVVGQkxFdEJRVUVzUTBGQlRTeEpRVUZOTEVWQlFVRTdRVUZET1VJc1VVRkJjVUlzYTBKQlFVRXNSMEZCUVN4RFFVRkJMRU5CUVVFc1EwRkJRVHRCUVVGQkxFOUJRM1pDTzBGQlJVRXNUVUZCUVN4SlFVRkJMRU5CUVVzc1VVRkJVeXhEUVVGQk8wRkJRVUVzVVVGRFdpeFBRVUZCTEVWQlFWTXNTMEZCU3l4TFFVRk5MRU5CUVVFc1QwRkJRU3hEUVVGUkxFOUJRV2RETEVOQlFVTXNSMEZCUVN4RlFVRkxMRWRCUVVjc1MwRkJWU3hMUVVGQk8wRkJSVGRGTEZWQlFVRXNTVUZCU1N4VlFVRlZMR3RDUVVGdlFpeEZRVUZCTzBGQlEyaERMRmxCUVU4c1QwRkJRVHRCUVVGQkxHTkJRMHdzUjBGQlJ5eEhRVUZCTzBGQlFVRXNZMEZEU0N4cFEwRkRTeXhEUVVSTUxFTkJRVUVzUlVGQlFUdEJRVUZCTEdkQ1FVVkZMRk5CUVZjc1JVRkJRU3hKUVVGQk8wRkJRVUVzWlVGRFlpeERRVUZCTzBGQlFVRXNZVUZEUml4RFFVRkJPMEZCUVVFc1YwRkRSanRCUVVWQkxGVkJRVUVzU1VGQlNTeE5RVUZOTEUxQlFWRXNSVUZCUVR0QlFVTm9RaXhaUVVGUExFOUJRVUVzUjBGQlFTeERRVUZCTzBGQlFVRXNWMEZEVkR0QlFVVkJMRlZCUVU4c1QwRkJRU3hEUVVGRExFZEJRVWNzUjBGQlFTeEZRVUZMTEVOQlFVTXNRMEZCUVN4RFFVRkJPMEZCUVVFc1UwRkRia0lzUlVGQlJ5eEZRVUZGTEVOQlFVRTdRVUZCUVN4UFFVTk9MRU5CUVVFc1EwRkJRVHRCUVVGQkxFdEJRMGc3UVVGQlFTeEhRVU5HTzBGQlFVRXNSVUZMUVN4TlFVRmhMRk5CUVZNc1ZVRkJiMFVzUlVGQlFUdEJRVFZTTlVZc1NVRkJRU3hKUVVGQkxFVkJRVUVzUlVGQlFTeEZRVUZCTEVWQlFVRXNSVUZCUVN4RFFVRkJPMEZCTmxKSkxFbEJRVUVzVFVGQlRTeFhRVUZYTEU5QlFVMHNRMEZCUVN4RlFVRkJMRWRCUVVFc1EwRkJRU3hGUVVGQkxFZEJRVUVzU1VGQlFTeERRVUZMTEV0QlFVMHNSVUZCUVN4clFrRkJRU3hMUVVGWUxEUkNRVUZuUXl4SlFVRk5MRVZCUVVFc1ZVRkJRU3hEUVVGQkxFTkJRVUVzUTBGQlFUdEJRVVUzUkN4SlFVRkpMRWxCUVVFc1VVRkJRU3hKUVVGWkxGTkJRVk1zVDBGQlV5eEZRVUZCTzBGQlEyaERMRTFCUVVFc1QwRkJUeXhuUWtGQmFVSXNRMEZCUVN4UlFVRkJMRU5CUVZNc1RVRkJUU3hEUVVGQkxFTkJRVVVzU1VGQlNTeHBRa0ZCYVVJc1EwRkJRU3hEUVVGQk8wRkJRVUVzUzBGRGFFVTdRVUZGUVN4SlFVRkpMRWxCUVVFc1NVRkJRU3hEUVVGTExFMUJRVTBzVjBGQllTeEZRVUZCTzBGQlF6RkNMRTFCUVVFc1QwRkJUeXhKUVVGTExFTkJRVUVzUzBGQlFTeERRVUZOTEZkQlFWa3NRMEZCUVN4SFFVRkJMRU5CUVVrc2FVSkJRV2xDTEVOQlFVRXNRMEZCUVR0QlFVRkJMRXRCUTNKRU8wRkJSVUVzU1VGQlRTeE5RVUZCTEVWQlFVRXNSMEZCU3l4TlFVRk5MRWxCUVVzc1EwRkJRU3hqUVVGQkxFTkJRV1VzU1VGQlNTeEpRVUZMTEVOQlFVRXNTMEZCUVN4RFFVRk5MRlZCUVZrc1JVRkJRU3hKUVVGQkxFTkJRVXNzVjBGQlZ5eERRVUZCTEVOQlFVRTdRVUZEYUVZc1NVRkJRU3hKUVVGSkxFTkJRVU1zUlVGQlFTeEpRVUZOTEVOQlFVTXNSVUZCUVN4RFFVRkhMRlZCUVZrc1JVRkJRVHRCUVVONlFpeE5RVUZCTEU5QlFVOHNSVUZCUXl4RFFVRkJPMEZCUVVFc1MwRkRWanRCUVVWQkxFbEJRVUVzVFVGQlRTeGxRVUZsTEVsQlFVc3NRMEZCUVN4TFFVRkJMRU5CUVUwc1QwRkJVU3hEUVVGQkxFMUJRVUVzUTBGQlR5eERRVUZETEVOQlFVMHNTMEZCUVN4RFFVRkJMRU5CUVVVc1IwRkJVU3hMUVVGQkxGVkJRVlVzUlVGQlJTeE5RVUZQTEVOQlFVRXNRMEZCUVN4RlFVRkJMRWRCUVVFc1NVRkJRU3hEUVVGTExFMUJRVTBzVjBGQldDeExRVUZCTEVsQlFVRXNSMEZCUVN4RlFVRkJMRWRCUVRCQ0xFVkJRVVVzUTBGQlFTeERRVUZCTzBGQlF5OUhMRWxCUVVFc1RVRkJUU3hUUVVGWkxFZEJRVUVzVlVGQlFTeERRVUZYTEZsQlFXRXNRMEZCUVN4SlFVRkpMRVZCUVVVc1MwRkJUU3hEUVVGQkxFdEJRVUVzUTBGQlFUdEJRVU4wUkN4SlFVRkJMRTFCUVUwc1ZVRkJWU3hKUVVGTExFTkJRVUVzUzBGQlFTeERRVUZOTERSQ1FVRXJRaXhIUVVGQkxITkNRVUZCTEVOQlFYVkNMRWxCUVVrc1EwRkJTU3hIUVVGQkxFdEJRVUVzUTBGQlFTeERRVUZCTzBGQlEzcEdMRWxCUVUwc1RVRkJRU3hSUVVGQkxFZEJRVmNzVFVGQlRTeEZRVUZCTEVOQlFVY3NWVUZCVnl4RFFVRkJMR05CUVVFc1EwRkJRVHRCUVVGQkxFMUJRMjVETEU5QlFWTXNSVUZCUVN4WlFVRkJPMEZCUVVFc1RVRkRWQ3hQUVVGQk8wRkJRVUVzVFVGRFFTeFRRVUZCTzBGQlFVRXNTMEZEUnl4RlFVRkJMSGxDUVVGQkxFTkJRVEJDTEVsQlFVa3NRMEZEYkVNc1EwRkJRU3hEUVVGQkxFTkJRVUU3UVVGRlJDeEpRVUZKTEVsQlFVRXNaMEpCUVVFc1EwRkJhVUlzVVVGQlVTeERRVUZITEVWQlFVRTdRVUZET1VJc1RVRkJRU3hKUVVGQkxFTkJRVXNzVTBGQlV5eEZRVUZGTEV0QlFVRXNSVUZCVHl4UlFVRlRMRU5CUVVFc1MwRkJRU3hEUVVGTkxGTkJRVk1zUTBGQlFTeERRVUZCTzBGQlFVRXNTMEZEYWtRN1FVRkZRU3hKUVVGSkxFbEJRVUVzU1VGQlFTeEhRVUZQTEdsQ1FVRnBRaXhSUVVGUkxFTkJRVUVzUTBGQlFUdEJRVU53UXl4SlFVRkJMRWxCUVVrc1VVRkJWU3hGUVVGQk8wRkJRMW9zVFVGQlFTeEpRVUZCTEVkQlFVOHNTVUZCU3l4RFFVRkJMRTFCUVVFc1EwRkJUeXhuUWtGQmFVSXNRMEZCUVN4UlFVRkJMRU5CUVZNc1RVRkJUU3hEUVVGRExFTkJRVUVzUTBGQlFUdEJRVUZCTEV0QlEzUkVPMEZCUlVFc1NVRkJUU3hOUVVGQkxHbENRVUZCTEVkQlFXOUNMRXRCUVVzc1MwRkJUU3hEUVVGQkxHbENRVUZCTEVOQlFVRTdRVUZEY2tNc1NVRkJRU3hKUVVGSkxHbENRVUZ0UWl4RlFVRkJPMEZCUTNKQ0xFMUJRVThzU1VGQlFTeEhRVUZCTEVsQlFVRXNRMEZCU3l4UFFVRlBMRU5CUVVNc1EwRkJRU3hMUVVGTkxFVkJRVVVzU1VGQlN5eERRVUZCTEV0QlFVRXNRMEZCVFN4cFFrRkJhVUlzUTBGQlF5eERRVUZCTEVOQlFVRTdRVUZCUVN4TFFVTXpSRHRCUVVWQkxFbEJRVThzVDBGQlFTeEpRVUZCTEVOQlFVc3NTVUZCU1N4cFFrRkJhVUlzUTBGQlFTeERRVUZCTzBGQlFVRXNSMEZEYmtNN1FVRkJRU3hGUVV0QkxFMUJRV0VzWTBGQll5eE5RVUYzUlN4RlFVRkJPMEZCTVZWeVJ5eEpRVUZCTEVsQlFVRXNSVUZCUVN4RlFVRkJMRVZCUVVFc1JVRkJRU3hGUVVGQkxFTkJRVUU3UVVFeVZVa3NTVUZCUVN4TlFVRk5MRmRCUVZjc1QwRkJUU3hEUVVGQkxFVkJRVUVzUjBGQlFTeERRVUZCTEVWQlFVRXNSMEZCUVN4SlFVRkJMRU5CUVVzc1MwRkJUU3hGUVVGQkxHOUNRVUZCTEV0QlFWZ3NORUpCUVd0RExFbEJRVTBzUlVGQlFTeE5RVUZCTEVOQlFVRXNRMEZCUVN4RFFVRkJPMEZCUlM5RUxFbEJRVWtzU1VGQlFTeFJRVUZCTEVsQlFWa3NVMEZCVXl4UFFVRlRMRVZCUVVFN1FVRkRhRU1zVFVGQlFTeFBRVUZQTEdkQ1FVRnBRaXhEUVVGQkxGRkJRVUVzUTBGQlV5eE5RVUZOTEVOQlFVRXNRMEZCUlN4SlFVRkpMR2xDUVVGcFFpeERRVUZCTEVOQlFVRTdRVUZCUVN4TFFVTm9SVHRCUVVWQkxFbEJRVTBzVFVGQlFTeEZRVUZCTEVkQlFVc3NUVUZCVFN4SlFVRkxMRU5CUVVFc1kwRkJRU3hEUVVGbExFbEJRVWtzU1VGQlN5eERRVUZCTEV0QlFVRXNRMEZCVFN4VlFVRlpMRVZCUVVFc1NVRkJRU3hEUVVGTExGZEJRVmNzUTBGQlFTeERRVUZCTzBGQlJXaEdMRWxCUVVFc1NVRkJTU3hEUVVGRExFVkJRVUVzU1VGQlRTeERRVUZETEVWQlFVRXNRMEZCUnl4WlFVRmpMRVZCUVVFN1FVRkRNMElzVFVGQlFTeFBRVUZQTEVWQlFVTXNRMEZCUVR0QlFVRkJMRXRCUTFZN1FVRkhRU3hKUVVGQkxFMUJRVTBzWlVGQlpTeEpRVUZMTEVOQlFVRXNTMEZCUVN4RFFVRk5MRkZCUVZFc1RVRkJUeXhEUVVGQkxFTkJRVU1zVFVGQlRTeERRVUZGTEVOQlFVRXNSMEZCUVN4TFFVRlJMRTFCUVU4c1EwRkJRU3hIUVVGSExFVkJRVVVzVFVGQlR5eERRVUZCTEVOQlFVRXNSVUZCUVN4SFFVRkJMRWxCUVVFc1EwRkJTeXhOUVVGTkxGZEJRVmdzUzBGQlFTeEpRVUZCTEVkQlFVRXNSVUZCUVN4SFFVRXdRaXhGUVVGRkxFTkJRVUVzUTBGQlFUdEJRVVV2Unl4SlFVRkJMRTFCUVUwc1UwRkJXU3hIUVVGQkxGVkJRVUVzUTBGQlZ5eFpRVUZoTEVOQlFVRXNTVUZCU1N4RlFVRkZMRXRCUVUwc1EwRkJRU3hMUVVGQkxFTkJRVUU3UVVGRGRFUXNTVUZCUVN4TlFVRk5MRlZCUVZVc1NVRkJTeXhEUVVGQkxFdEJRVUVzUTBGQlRTdzBRa0ZCSzBJc1IwRkJRU3h6UWtGQlFTeERRVUYxUWl4SlFVRkpMRU5CUVVrc1IwRkJRU3hMUVVGQkxFTkJRVUVzUTBGQlFUdEJRVVY2Uml4SlFVRk5MRTFCUVVFc1VVRkJRU3hIUVVGWExFMUJRVTBzUlVGQlFTeERRVUZITEZsQlFXRXNRMEZCUVN4alFVRkJMRU5CUVVFN1FVRkJRU3hOUVVOeVF5eExRVUZMTEUxQlFVOHNRMEZCUVN4SFFVRkJPMEZCUVVFc1RVRkRXaXhQUVVGVExFVkJRVUVzV1VGQlFUdEJRVUZCTEUxQlExUXNVMEZCUVR0QlFVRkJMRTFCUTBFc1QwRkJRVHRCUVVGQkxFdEJRMGNzUlVGQlFTeDVRa0ZCUVN4RFFVRXdRaXhKUVVGSkxFTkJRMnhETEVOQlFVRXNRMEZCUVN4RFFVRkJPMEZCUlVRc1NVRkJTU3hKUVVGQkxHZENRVUZCTEVOQlFXbENMRkZCUVZFc1EwRkJSeXhGUVVGQk8wRkJRemxDTEUxQlFVRXNTVUZCUVN4RFFVRkxMRk5CUVZNc1JVRkJSU3hMUVVGQkxFVkJRVThzVVVGQlV5eERRVUZCTEV0QlFVRXNRMEZCVFN4VFFVRlRMRU5CUVVFc1EwRkJRVHRCUVVGQkxFdEJRMnBFTzBGQlJVRXNTVUZCU1N4SlFVRkJMRTFCUVVFc1IwRkJVeXhwUWtGQmFVSXNVVUZCVVN4RFFVRkJMRU5CUVVFN1FVRkRkRU1zU1VGQlFTeEpRVUZKTEZGQlFWVXNSVUZCUVR0QlFVTmFMRTFCUVVFc1RVRkJRU3hIUVVGVExFMUJRVThzUTBGQlFTeE5RVUZCTEVOQlFVOHNaMEpCUVdsQ0xFTkJRVUVzVVVGQlFTeERRVUZUTEUxQlFVMHNRMEZCUXl4RFFVRkJMRU5CUVVFN1FVRkJRU3hMUVVNeFJEdEJRVVZCTEVsQlFVOHNUMEZCUVN4TlFVRkJMRU5CUVU4c1NVRkJTU3hwUWtGQmFVSXNRMEZCUVN4RFFVRkJPMEZCUVVFc1IwRkRja003UVVGQlFTeEZRVVZQTEU5QlFWVXNSMEZCUVR0QlFVTm1MRWxCUVVFc1NVRkJRU3hEUVVGTExGRkJRVk1zUTBGQlFUdEJRVUZCTEUxQlExb3NTVUZCUVN4RlFVRk5MRVZCUVVVc1IwRkJTeXhGUVVGQkxFVkJRVUVzUlVGQlNTeFBRVUZQTEVWQlFVa3NSVUZCUVN4UlFVRkJMRVZCUVZVc1IwRkJTeXhGUVVGQkxGTkJRVUVzUlVGQlZ5eEZRVUZITEVWQlFVRTdRVUZCUVN4TFFVTXhSQ3hEUVVGQkxFTkJRVUU3UVVGQlFTeEhRVU5JTzBGQlFVRXNSVUZGVHl4aFFVRm5RaXhIUVVGQk8wRkJRM0pDTEVsQlFVMHNUVUZCUVN4cFFrRkJRU3hIUVVGdlFpeEpRVUZMTEVOQlFVRXNTMEZCUVN4RFFVRk5MREpDUVVOcVF5eEhRVUZCTEZOQlFVRXNSMEZEUVN4VFFVRlZMRU5CUVVFc1RVRkJRU3hEUVVGUExFTkJRVU1zVVVGQlFTeExRVUZoTEVOQlFVTXNVVUZCUVN4RFFVRlRMRTlCUVU4c1EwRkJRU3hEUVVGQk8wRkJRM0JFTEVsQlFVRXNUMEZCVHl4clFrRkJhMElzUjBGQk5rSXNRMEZCUVN4RFFVRkRMRVZCUVVVc1MwRkJRU3hGUVVGUExHRkJRVzFDTEUxQlFVRTdRVUZCUVN4TlFVTnFSaXhMUVVGUExFVkJRVUVzUzBGQlFUdEJRVUZCTEUxQlExQXNTMEZCUVR0QlFVRkJMRTFCUTBFc1YwRkJRVHRCUVVGQkxFdEJRMEVzUTBGQlFTeERRVUZCTEVOQlFVRTdRVUZCUVN4SFFVTktPMEZCUTBZc1EwRkJRVHRCUVRkT1lTeHZRa0ZCUVN4RFFVbEtMRk5CUVZrc1IwRkJRU3cwUWtGQlFTeERRVUZCTzBGQk1rNXlRaXhUUVVGVExHZENRVUZCTEVOQlExQXNVMEZEUVN4UFFVTkJMRVZCUVVFN1FVRkRRU3hGUVVGQkxFOUJRVUVzUTBGQlVTeFBRVUZYTEVsQlFVRXNTVUZCUVN4SFFVRkJMRTlCUVVFc1IwRkJRU3cwUWtGQlFTeEZRVUU0UWl4UFFVRlhMRWxCUVVFc1NVRkJRU3hIUVVGQkxFOUJRVUVzUjBGQlFTeEZRVUZGTEVOQlFVRXNRMEZCUVR0QlFVTm9SU3hEUVVGQk8wRkJSV2RDTEZOQlFVRXNORUpCUVVFc1EwRkJOa0lzUlVGQlJTeExRVUZCTEVWQlFXOUVMRVZCUVVFN1FVRkRha2NzUlVGQlFTeE5RVUZOTEVWQlFVVXNUMEZCVXl4RlFVRkJMRkZCUVVFc1JVRkJWU3h0UWtGQmIwSXNSVUZCUVN4SFFVRkpMRTFCUVUwc1VVRkJVeXhGUVVGQkxFTkJRVUU3UVVGRGJFVXNSVUZCVFN4TlFVRkJMRTFCUVVFc1IwRkJVeXhYUVVGWExGTkJRVk1zUTBGQlFTeERRVUZCTzBGQlJXNURMRVZCUVVrc1NVRkJRU3hMUVVGQkxFTkJRVTBzUzBGQlRTeERRVUZCTEUxQlFVRXNTMEZCVnl4VlFVRlpMRVZCUVVFN1FVRkRja01zU1VGQlFTeDFRa0ZCVVN4TFFVRkJMRU5CUVVFc1lVRkJRU3hEUVVGQkxEUkNRVUZCTEVWQlFVRTdRVUZCUVN4TlFVRTJRaXhMUVVGQk8wRkJRVUVzUzBGQll5eERRVUZCTEVOQlFVRTdRVUZCUVN4SFFVTnlSRHRCUVVWQkxFVkJRVUVzZFVKQlEwY3NTMEZCUVN4RFFVRkJMR0ZCUVVFc1EwRkJRU3hMUVVGQkxFVkJRVUU3UVVGQlFTeEpRVUZKTEZkQlFWY3NUVUZCVHl4RFFVRkJMRTlCUVVFN1FVRkJRU3hIUVVGQkxFVkJRM0JDTEZGQlFWRXNSMEZCU1N4RFFVRkJMRU5CUVVNc1VVRkJVU3hMUVVOd1FpeHhRa0ZCUVN4TFFVRkJMRU5CUVVFc1lVRkJRU3hEUVVGRExFMUJRVTBzVVVGQlRpeEZRVUZCTzBGQlFVRXNTVUZCWlN4SFFVRkxMRVZCUVVFc1MwRkJRVHRCUVVGQkxFZEJRVUVzYTBKQlEyeENMRXRCUVVFc1EwRkJRU3hoUVVGQkxFTkJRVUVzYlVKQlFVRXNSVUZCUVR0QlFVRkJMRWxCUVc5Q0xFMUJRVUU3UVVGQlFTeEpRVUZuUWl4TFFVRkJPMEZCUVVFc1IwRkJZeXhEUVVOeVJDeERRVU5FTEVOQlJVRXNSVUZCUVN4RFFVRkRMRFJDUVVGaExFdEJRVUVzUTBGQlFTeGhRVUZCTEVOQlFVRXNhMEpCUVVFc1JVRkJRVHRCUVVGQkxFbEJRVzFDTEV0QlFVRTdRVUZCUVN4SlFVRmpMRWRCUVVrc1JVRkJRU3hWUVVGQk8wRkJRVUVzU1VGQlZ5eHRRa0ZCUVR0QlFVRkJMRWRCUVRCRExFTkJRek5ITEVOQlFVRXNRMEZCUVR0QlFVVktMRU5CUVVFN1FVRkZRU3hOUVVGTkxGTkJRVUVzUjBGQldTeERRVUZETEV0QlFUQkNMRTFCUVVFN1FVRkJRU3hGUVVNelF5eFRRVUZUTEVkQlFVa3NRMEZCUVR0QlFVRkJMRWxCUTFnc1QwRkJVeXhGUVVGQkxFMUJRVUU3UVVGQlFTeEpRVU5VTEZGQlFWVXNSVUZCUVN4TlFVRkJPMEZCUVVFc1NVRkRWaXhWUVVGWkxFVkJRVUVzVlVGQlFUdEJRVUZCTEVsQlExb3NVMEZCUVN4RlFVRlhMRXRCUVUwc1EwRkJRU3hQUVVGQkxFTkJRVkVzUTBGQlF5eERRVUZCTzBGQlFVRXNTVUZETVVJc1RVRkJRU3hGUVVGUkxFdEJRVTBzUTBGQlFTeFBRVUZCTEVOQlFWRXNRMEZCUXl4RFFVRkJPMEZCUVVFc1IwRkRlRUlzUTBGQlFUdEJRVU5JTEVOQlFVRXNRMEZCUVN4RFFVRkJPMEZCUlU4c1UwRkJVeXhyUWtGQmEwSXNTMEZCYVVRc1JVRkJRVHRCUVVOcVJpeEZRVUZOTEUxQlFVRXNSVUZCUlN4SlFVRk5MRVZCUVVFc1MwRkJRU3hGUVVGVkxFZEJRVUVzUzBGQlFTeERRVUZCTzBGQlEzaENMRVZCUVVFc1RVRkJUU3hOUVVGclF5eEhRVUZCTzBGQlFVRXNTVUZEZEVNc1MwRkJUeXhGUVVGQkxFbEJRVUU3UVVGQlFTeEpRVU5RTEV0QlFVRXNSVUZCVHl4TlFVRlBMRU5CUVVFc1MwRkJRU3hKUVVGQkxFbEJRVUVzUjBGQlFTeExRVUZCTEVkQlFWTXNTVUZCU1N4RFFVRkJPMEZCUVVFc1IwRkROMElzUTBGQlFUdEJRVVZCTEVWQlFVRXNTVUZCU1N4WFFVRlhMRXRCUVU4c1JVRkJRVHRCUVVOd1FpeEpRVUZCTEUxQlFVRXNRMEZCVHl4UlFVRlJMRXRCUVUwc1EwRkJRU3hMUVVGQkxFTkJRVUU3UVVGQlFTeEhRVU4yUWp0QlFVVkJMRVZCUVU4c1QwRkJRU3hOUVVGQkxFTkJRVUU3UVVGRFZDeERRVUZCTzBGQlJVOHNVMEZCVXl4cFFrRkJhVUlzVFVGQmQwTXNSVUZCUVR0QlFVTjJSU3hGUVVGQkxFOUJRVThzVDBGQlR5eEhRVUZSTEV0QlFVRXNSVUZCUVN4SlFVRk5MRTlCUVU4c1VVRkJZU3hMUVVGQkxFVkJRVUVzU1VGQlRTeFBRVUZQTEV0QlFWVXNTMEZCUVN4RlFVRkJMRU5CUVVFN1FVRkRla1VzUTBGQlFUdEJRVVZQTEZOQlFWTXNjVUpCUVhGQ0xHRkJRV2RETEVWQlFVRTdRVUZEYmtVc1JVRkJRU3hOUVVGTkxGZEJRVmNzVTBGQlZTeERRVUZCTEVsQlFVRXNRMEZCU3l4RFFVRkRMRU5CUVUwc1MwRkJRU3hEUVVGQkxFTkJRVVVzVlVGQlZTeGhRVUZoTEVOQlFVRXNRMEZCUVR0QlFVTm9SU3hGUVVGQkxFbEJRVWtzUTBGQlF5eFJRVUZWTEVWQlFVRTdRVUZGWWl4SlFVRlBMRTlCUVVFc1MwRkJRU3hEUVVGQk8wRkJRVUVzUjBGRFZEdEJRVU5CTEVWQlFVOHNUMEZCUVN4UFFVRkJMRU5CUVZFc1UwRkJVeXhQUVVGUExFTkJRVUVzUTBGQlFUdEJRVU5xUXpzN096c2lmUT09XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUErSE8sTUFBTSxTQUFrQyxHQUFBO0FBQzdDLEVBQUE7SUFDRSxLQUFPLEVBQUEsR0FBQTtJQUNQLFdBQWEsRUFBQSxRQUFBO0FBQUEsR0FBQTtBQUVmLEVBQUE7SUFDRSxLQUFPLEVBQUEsSUFBQTtJQUNQLFdBQWEsRUFBQSxXQUFBO0FBQUEsR0FBQTtBQUVmLEVBQUE7SUFDRSxLQUFPLEVBQUEsSUFBQTtJQUNQLFdBQWEsRUFBQSwyQ0FBQTtJQUNiLE9BQVMsRUFBQSxJQUFBO0FBQUEsR0FBQTtBQUVYLEVBQUE7SUFDRSxLQUFPLEVBQUEsS0FBQTtJQUNQLFdBQWEsRUFBQSw2Q0FBQTtJQUNiLE9BQVMsRUFBQSxJQUFBO0FBQUEsR0FBQTtBQUVYLEVBQUE7SUFDRSxLQUFPLEVBQUEsSUFBQTtJQUNQLFdBQWEsRUFBQSxlQUFBO0FBQUEsR0FBQTtBQUVmLEVBQUE7SUFDRSxLQUFPLEVBQUEsSUFBQTtJQUNQLFdBQWEsRUFBQSxzQkFBQTtBQUFBLEdBQUE7QUFFZixFQUFBO0lBQ0UsS0FBTyxFQUFBLEdBQUE7SUFDUCxXQUFhLEVBQUEsV0FBQTtBQUFBLEdBQUE7QUFFZixFQUFBO0lBQ0UsS0FBTyxFQUFBLEdBQUE7SUFDUCxXQUFhLEVBQUEsY0FBQTtBQUFBLEdBQUE7QUFFakIsRUFBQTtBQUVPLE1BQU0sNkJBQ0gsZUFFVixDQUFBO0FBUVMsRUFBQSxXQUFBLENBQVksS0FBMkMsRUFBQTtBQS9LaEUsSUFBQSxJQUFBLEVBQUEsRUFBQSxFQUFBLENBQUE7QUFnTFUsSUFBQSxLQUFBLENBQUEsY0FBQSxDQUFBO01BQ0osSUFBTSxFQUFBLE9BQUE7QUFDTixNQUFBLElBQUEsRUFBQSxDQUFNLEVBQU0sR0FBQSxLQUFBLENBQUEsSUFBTixLQUFBLElBQUEsR0FBYyxFQUFBLEdBQUEsU0FBQTtBQUNwQixNQUFBLE9BQUEsRUFBUyxFQUFBO01BQ1QsVUFBWSxFQUFBLElBQUE7TUFDWixTQUFXLEVBQUEsTUFBQTtNQUNYLGdCQUFrQixFQUFBLENBQUEsRUFBQSxHQUFBLE1BQU0sZ0JBQU4sS0FBQSxJQUFBLEdBQUEsS0FBMEIsZ0JBQWlCLENBQUEsS0FBQSxDQUFNLGlCQUFtQixFQUFBLEtBQUEsQ0FBTSxPQUFPLENBQUE7QUFBQSxLQUFBLEVBQ2hHLEtBQ0osQ0FBQSxDQUFBLENBQUE7QUFkSCxJQUFBLElBQUEsQ0FBUSxXQUFjLEdBQUEsRUFBRSxhQUFlLEVBQUEsaUNBQUEsQ0FBa0MsSUFBSSxDQUFFLEVBQUEsQ0FBQTtBQUMvRSxJQUFBLElBQUEsQ0FBUSxpQkFBaUIsZ0JBQWlCLEVBQUEsQ0FBQTtBQUVoQyxJQUFBLElBQUEsQ0FBQSxRQUFBLEdBQVcsSUFBSSxrQ0FBQSxDQUFtQyxJQUFJLENBQUEsQ0FBQTtBQWExRCxJQUFBLElBQUEsSUFBQSxDQUFLLEtBQU0sQ0FBQSxTQUFBLEtBQWMsTUFBUSxFQUFBO0FBQ25DLE1BQUEsb0JBQUEsQ0FBcUIsSUFBSSxDQUFBLENBQUE7QUFBQSxLQUFBO0FBQzNCLEdBQUE7QUFHSyxFQUFBLFFBQUEsQ0FBUyxNQUFrRCxFQUFBO0FBQ2hFLElBQUEsSUFBSSx1QkFBMEIsR0FBQSxLQUFBLENBQUE7QUFFMUIsSUFBQSxJQUFBLE1BQUEsQ0FBTyxXQUFXLE1BQU8sQ0FBQSxPQUFBLEtBQVksS0FBSyxLQUFNLENBQUEsT0FBQSxJQUFXLENBQUMsTUFBQSxDQUFPLGdCQUFrQixFQUFBO0FBQ3ZGLE1BQUEsTUFBQSxDQUFPLG1CQUFtQixnQkFBaUIsQ0FBQSxJQUFBLENBQUssS0FBTSxDQUFBLGlCQUFBLEVBQW1CLE9BQU8sT0FBTyxDQUFBLENBQUE7QUFDN0QsTUFBQSx1QkFBQSxHQUFBLE1BQUEsQ0FBTyxnQkFBcUIsS0FBQSxJQUFBLENBQUssS0FBTSxDQUFBLGdCQUFBLENBQUE7QUFBQSxLQUFBO0FBR25FLElBQUEsS0FBQSxDQUFNLFNBQVMsTUFBTSxDQUFBLENBQUE7QUFFckIsSUFBQSxJQUFJLHVCQUF5QixFQUFBO0FBQzNCLE1BQUEsSUFBQSxDQUFLLFlBQWEsQ0FBQSxJQUFJLDhCQUErQixDQUFBLElBQUksR0FBRyxJQUFJLENBQUEsQ0FBQTtBQUFBLEtBQUE7QUFDbEUsR0FBQTtFQUdLLFFBQXNDLEdBQUE7QUFDM0MsSUFBQSxPQUFPLEtBQUssS0FBTSxDQUFBLGdCQUFBLENBQUE7QUFBQSxHQUFBO0FBR2IsRUFBQSxhQUFBLENBQWMsUUFBK0IsTUFBd0MsRUFBQTtBQUMxRixJQUFBLE1BQU0sRUFBRSxPQUFBLEVBQVMsSUFBSyxFQUFBLEdBQUksSUFBSyxDQUFBLEtBQUEsQ0FBQTtBQUUvQixJQUFBLElBQUksV0FBVyxJQUFNLEVBQUE7QUFFbkIsTUFBQSxJQUFJLE9BQVcsSUFBQSxNQUFBLElBQVUsTUFBTyxDQUFBLE9BQUEsQ0FBQSxLQUFhLEVBQUksRUFBQTtBQUMvQyxRQUFBLElBQUEsQ0FBSyxTQUFTLEVBQUUsT0FBQSxFQUFTLENBQUMsR0FBRyxTQUFTLGNBQUssQ0FBQSxjQUFBLENBQUEsRUFBQSxFQUFBLElBQUEsQ0FBUyxFQUFBLE1BQVEsQ0FBQSxDQUFHLEVBQUEsSUFBQSxFQUFNLFFBQVcsQ0FBQSxDQUFBO09BQzNFLE1BQUE7QUFDTCxRQUFLLElBQUEsQ0FBQSxRQUFBLENBQVMsRUFBRSxJQUFBLEVBQU0sY0FBSyxDQUFBLGNBQUEsQ0FBQSxFQUFBLEVBQUEsTUFBQSxDQUFBLEVBQVcsTUFBQSxDQUFBLEVBQVUsQ0FBQSxDQUFBO0FBQUEsT0FBQTtBQUVsRCxNQUFBLE9BQUE7QUFBQSxLQUFBO0FBR0YsSUFBQSxNQUFNLGlCQUFpQixJQUFLLENBQUEsS0FBQSxDQUFNLE9BQVEsQ0FBQSxHQUFBLENBQUksQ0FBQyxDQUFNLEtBQUE7QUFDbkQsTUFBTyxPQUFBLENBQUEsS0FBTSxTQUFTLGNBQUssQ0FBQSxjQUFBLENBQUEsRUFBQSxFQUFBLENBQUEsQ0FBTSxFQUFBLE1BQVcsQ0FBQSxHQUFBLENBQUEsQ0FBQTtLQUM3QyxDQUFBLENBQUE7QUFFRCxJQUFBLElBQUEsQ0FBSyxRQUFTLENBQUEsRUFBRSxPQUFTLEVBQUEsY0FBQSxFQUFnQixDQUFBLENBQUE7QUFBQSxHQUFBO0FBR3BDLEVBQUEsYUFBQSxDQUFjLE1BQStCLEVBQUE7QUFDOUMsSUFBQSxJQUFBLE1BQUEsS0FBVyxJQUFLLENBQUEsS0FBQSxDQUFNLElBQU0sRUFBQTtBQUM5QixNQUFBLElBQUEsQ0FBSyxRQUFTLENBQUEsRUFBRSxJQUFNLEVBQUEsS0FBQSxDQUFBLEVBQVcsQ0FBQSxDQUFBO0FBQ2pDLE1BQUEsT0FBQTtBQUFBLEtBQUE7QUFHRixJQUFBLElBQUEsQ0FBSyxRQUFTLENBQUEsRUFBRSxPQUFTLEVBQUEsSUFBQSxDQUFLLEtBQU0sQ0FBQSxPQUFBLENBQVEsTUFBTyxDQUFBLENBQUMsQ0FBTSxLQUFBLENBQUEsS0FBTSxNQUFNLENBQUEsRUFBRyxDQUFBLENBQUE7QUFBQSxHQUFBO0VBR3BFLGlCQUFvQixHQUFBO0FBQ3pCLElBQUEsTUFBTSxjQUFpQixHQUFBLElBQUEsQ0FBSyxLQUFNLENBQUEsT0FBQSxDQUFRLEdBQUcsQ0FBRSxDQUFBLENBQUEsQ0FBQTtBQUUvQyxJQUFBLElBQUksY0FBZ0IsRUFBQTtBQUNsQixNQUFBLElBQUEsQ0FBSyxjQUFjLGNBQWMsQ0FBQSxDQUFBO0FBQUEsS0FBQTtBQUNuQyxHQUFBO0FBR0ssRUFBQSx3QkFBQSxDQUF5QixNQUErQixFQUFBO0FBQ3pELElBQUEsSUFBQSxJQUFBLENBQUssS0FBTSxDQUFBLE9BQUEsQ0FBUSxNQUFRLEVBQUE7QUFFN0IsTUFBQSxJQUFJLGtCQUFxQixHQUFBLElBQUEsQ0FBSyxLQUFNLENBQUEsT0FBQSxDQUFRLE1BQVMsR0FBQSxDQUFBLENBQUE7QUFJakQsTUFBQSxJQUFBLE1BQUEsS0FBVyxJQUFLLENBQUEsS0FBQSxDQUFNLElBQU0sRUFBQTtBQUNULFFBQUEsa0JBQUEsR0FBQSxDQUFBLENBQUEsQ0FBQTtBQUFBLE9BQUE7QUFHdkIsTUFBQSxJQUFBLENBQUssUUFBUyxDQUFBO0FBQ1osUUFBQSxPQUFBLEVBQVMsS0FBSyxLQUFNLENBQUEsT0FBQSxDQUFRLE9BQWdDLENBQUMsR0FBQSxFQUFLLEdBQUcsS0FBVSxLQUFBO0FBRTdFLFVBQUEsSUFBSSxVQUFVLGtCQUFvQixFQUFBO0FBQ3pCLFlBQUEsT0FBQTtjQUNMLEdBQUcsR0FBQTtBQUNILGNBQUEsYUFBQSxDQUFBLGNBQUEsQ0FBQSxFQUNLLEVBQUEsQ0FETCxDQUFBLEVBQUE7Z0JBRUUsU0FBVyxFQUFBLElBQUE7ZUFDYixDQUFBO0FBQUEsYUFBQSxDQUFBO0FBQ0YsV0FBQTtBQUdGLFVBQUEsSUFBSSxNQUFNLE1BQVEsRUFBQTtBQUNULFlBQUEsT0FBQSxHQUFBLENBQUE7QUFBQSxXQUFBO0FBR0YsVUFBQSxPQUFBLENBQUMsR0FBRyxHQUFBLEVBQUssQ0FBQyxDQUFBLENBQUE7QUFBQSxTQUFBLEVBQ2hCLEVBQUUsQ0FBQTtPQUNOLENBQUEsQ0FBQTtBQUFBLEtBQUE7QUFDSCxHQUFBO0FBTUYsRUFBQSxNQUFhLFNBQVMsVUFBb0UsRUFBQTtBQTVSNUYsSUFBQSxJQUFBLElBQUEsRUFBQSxFQUFBLEVBQUEsQ0FBQTtBQTZSSSxJQUFBLE1BQU0sUUFBVyxHQUFBLE9BQUEsQ0FBTSxFQUFBLEdBQUEsQ0FBQSxFQUFBLEdBQUEsSUFBSyxDQUFBLEtBQUEsRUFBTSxrQkFBWCxLQUFBLElBQUEsR0FBQSxLQUFBLENBQUEsR0FBQSxFQUFBLENBQUEsSUFBQSxDQUFBLEVBQUEsRUFBZ0MsTUFBTSxVQUFBLENBQUEsQ0FBQSxDQUFBO0FBRXpELElBQUEsSUFBQSxRQUFBLElBQVksU0FBUyxPQUFTLEVBQUE7QUFDaEMsTUFBQSxPQUFPLGdCQUFpQixDQUFBLFFBQUEsQ0FBUyxNQUFNLENBQUEsQ0FBRSxJQUFJLGlCQUFpQixDQUFBLENBQUE7QUFBQSxLQUFBO0FBRzVELElBQUEsSUFBQSxJQUFBLENBQUssTUFBTSxXQUFhLEVBQUE7QUFDMUIsTUFBQSxPQUFPLElBQUssQ0FBQSxLQUFBLENBQU0sV0FBWSxDQUFBLEdBQUEsQ0FBSSxpQkFBaUIsQ0FBQSxDQUFBO0FBQUEsS0FBQTtBQUcvQyxJQUFBLE1BQUEsRUFBQSxHQUFLLE1BQU0sSUFBSyxDQUFBLGNBQUEsQ0FBZSxJQUFJLElBQUssQ0FBQSxLQUFBLENBQU0sVUFBWSxFQUFBLElBQUEsQ0FBSyxXQUFXLENBQUEsQ0FBQTtBQUNoRixJQUFBLElBQUksQ0FBQyxFQUFBLElBQU0sQ0FBQyxFQUFBLENBQUcsVUFBWSxFQUFBO0FBQ3pCLE1BQUEsT0FBTyxFQUFBLENBQUE7QUFBQyxLQUFBO0FBR1YsSUFBQSxNQUFNLGVBQWUsSUFBSyxDQUFBLEtBQUEsQ0FBTSxRQUFRLE1BQU8sQ0FBQSxDQUFDLE1BQU0sQ0FBRSxDQUFBLEdBQUEsS0FBUSxVQUFVLENBQUUsQ0FBQSxNQUFBLENBQUEsQ0FBTyxLQUFBLElBQUssQ0FBQSxLQUFBLENBQU0sZ0JBQVgsSUFBQSxHQUFBLEVBQUEsR0FBMEIsRUFBRSxDQUFBLENBQUE7QUFDL0csSUFBQSxNQUFNLFNBQVksR0FBQSxVQUFBLENBQVcsWUFBYSxDQUFBLElBQUksRUFBRSxLQUFNLENBQUEsS0FBQSxDQUFBO0FBQ3RELElBQUEsTUFBTSxVQUFVLElBQUssQ0FBQSxLQUFBLENBQU0sNEJBQStCLEdBQUEsc0JBQUEsQ0FBdUIsSUFBSSxDQUFJLEdBQUEsS0FBQSxDQUFBLENBQUE7QUFDbkYsSUFBQSxNQUFBLFFBQVcsR0FBQSxNQUFNLEVBQUcsQ0FBQSxVQUFBLENBQVcsY0FBQSxDQUFBO01BQ25DLE9BQVMsRUFBQSxZQUFBO0FBQ1QsTUFBQSxPQUFBO0FBQ0EsTUFBQSxTQUFBO0tBQ0csRUFBQSx5QkFBQSxDQUEwQixJQUFJLENBQ2xDLENBQUEsQ0FBQSxDQUFBO0FBRUcsSUFBQSxJQUFBLGdCQUFBLENBQWlCLFFBQVEsQ0FBRyxFQUFBO0FBQzlCLE1BQUEsSUFBQSxDQUFLLFNBQVMsRUFBRSxLQUFBLEVBQU8sUUFBUyxDQUFBLEtBQUEsQ0FBTSxTQUFTLENBQUEsQ0FBQTtBQUFBLEtBQUE7QUFHN0MsSUFBQSxJQUFBLElBQUEsR0FBTyxpQkFBaUIsUUFBUSxDQUFBLENBQUE7QUFDcEMsSUFBQSxJQUFJLFFBQVUsRUFBQTtBQUNaLE1BQUEsSUFBQSxHQUFPLElBQUssQ0FBQSxNQUFBLENBQU8sZ0JBQWlCLENBQUEsUUFBQSxDQUFTLE1BQU0sQ0FBQyxDQUFBLENBQUE7QUFBQSxLQUFBO0FBR2hELElBQUEsTUFBQSxpQkFBQSxHQUFvQixLQUFLLEtBQU0sQ0FBQSxpQkFBQSxDQUFBO0FBQ3JDLElBQUEsSUFBSSxpQkFBbUIsRUFBQTtBQUNkLE1BQUEsSUFBQSxHQUFBLElBQUEsQ0FBSyxPQUFPLENBQUMsQ0FBQSxLQUFNLEVBQUUsSUFBSyxDQUFBLEtBQUEsQ0FBTSxpQkFBaUIsQ0FBQyxDQUFBLENBQUE7QUFBQSxLQUFBO0FBR3BELElBQUEsT0FBQSxJQUFBLENBQUssSUFBSSxpQkFBaUIsQ0FBQSxDQUFBO0FBQUEsR0FBQTtBQU1uQyxFQUFBLE1BQWEsY0FBYyxNQUF3RSxFQUFBO0FBMVVyRyxJQUFBLElBQUEsSUFBQSxFQUFBLEVBQUEsRUFBQSxDQUFBO0FBMlVJLElBQUEsTUFBTSxRQUFXLEdBQUEsT0FBQSxDQUFNLEVBQUEsR0FBQSxDQUFBLEVBQUEsR0FBQSxJQUFLLENBQUEsS0FBQSxFQUFNLG9CQUFYLEtBQUEsSUFBQSxHQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsQ0FBQSxJQUFBLENBQUEsRUFBQSxFQUFrQyxNQUFNLE1BQUEsQ0FBQSxDQUFBLENBQUE7QUFFM0QsSUFBQSxJQUFBLFFBQUEsSUFBWSxTQUFTLE9BQVMsRUFBQTtBQUNoQyxNQUFBLE9BQU8sZ0JBQWlCLENBQUEsUUFBQSxDQUFTLE1BQU0sQ0FBQSxDQUFFLElBQUksaUJBQWlCLENBQUEsQ0FBQTtBQUFBLEtBQUE7QUFHMUQsSUFBQSxNQUFBLEVBQUEsR0FBSyxNQUFNLElBQUssQ0FBQSxjQUFBLENBQWUsSUFBSSxJQUFLLENBQUEsS0FBQSxDQUFNLFVBQVksRUFBQSxJQUFBLENBQUssV0FBVyxDQUFBLENBQUE7QUFFaEYsSUFBQSxJQUFJLENBQUMsRUFBQSxJQUFNLENBQUMsRUFBQSxDQUFHLFlBQWMsRUFBQTtBQUMzQixNQUFBLE9BQU8sRUFBQSxDQUFBO0FBQUMsS0FBQTtBQUlWLElBQU0sTUFBQSxZQUFBLEdBQWUsS0FBSyxLQUFNLENBQUEsT0FBQSxDQUFRLE9BQU8sQ0FBQyxDQUFBLEtBQU0sRUFBRSxHQUFRLEtBQUEsTUFBQSxDQUFPLEdBQUcsQ0FBRSxDQUFBLE1BQUEsQ0FBQSxDQUFPLEtBQUEsSUFBSyxDQUFBLEtBQUEsQ0FBTSxnQkFBWCxJQUFBLEdBQUEsRUFBQSxHQUEwQixFQUFFLENBQUEsQ0FBQTtBQUUvRyxJQUFBLE1BQU0sU0FBWSxHQUFBLFVBQUEsQ0FBVyxZQUFhLENBQUEsSUFBSSxFQUFFLEtBQU0sQ0FBQSxLQUFBLENBQUE7QUFDdEQsSUFBQSxNQUFNLFVBQVUsSUFBSyxDQUFBLEtBQUEsQ0FBTSw0QkFBK0IsR0FBQSxzQkFBQSxDQUF1QixJQUFJLENBQUksR0FBQSxLQUFBLENBQUEsQ0FBQTtBQUVuRixJQUFBLE1BQUEsUUFBVyxHQUFBLE1BQU0sRUFBRyxDQUFBLFlBQUEsQ0FBYSxjQUFBLENBQUE7QUFDckMsTUFBQSxHQUFBLEVBQUssTUFBTyxDQUFBLEdBQUE7TUFDWixPQUFTLEVBQUEsWUFBQTtBQUNULE1BQUEsU0FBQTtBQUNBLE1BQUEsT0FBQTtLQUNHLEVBQUEseUJBQUEsQ0FBMEIsSUFBSSxDQUNsQyxDQUFBLENBQUEsQ0FBQTtBQUVHLElBQUEsSUFBQSxnQkFBQSxDQUFpQixRQUFRLENBQUcsRUFBQTtBQUM5QixNQUFBLElBQUEsQ0FBSyxTQUFTLEVBQUUsS0FBQSxFQUFPLFFBQVMsQ0FBQSxLQUFBLENBQU0sU0FBUyxDQUFBLENBQUE7QUFBQSxLQUFBO0FBRzdDLElBQUEsSUFBQSxNQUFBLEdBQVMsaUJBQWlCLFFBQVEsQ0FBQSxDQUFBO0FBQ3RDLElBQUEsSUFBSSxRQUFVLEVBQUE7QUFDWixNQUFBLE1BQUEsR0FBUyxNQUFPLENBQUEsTUFBQSxDQUFPLGdCQUFpQixDQUFBLFFBQUEsQ0FBUyxNQUFNLENBQUMsQ0FBQSxDQUFBO0FBQUEsS0FBQTtBQUduRCxJQUFBLE9BQUEsTUFBQSxDQUFPLElBQUksaUJBQWlCLENBQUEsQ0FBQTtBQUFBLEdBQUE7RUFHOUIsT0FBVSxHQUFBO0FBQ2YsSUFBQSxJQUFBLENBQUssUUFBUyxDQUFBO01BQ1osSUFBTSxFQUFBLEVBQUUsS0FBSyxFQUFJLEVBQUEsS0FBQSxFQUFPLElBQUksUUFBVSxFQUFBLEdBQUEsRUFBSyxXQUFXLEVBQUcsRUFBQTtLQUMxRCxDQUFBLENBQUE7QUFBQSxHQUFBO0VBR0ksYUFBZ0IsR0FBQTtBQUNmLElBQUEsTUFBQSxpQkFBQSxHQUFvQixJQUFLLENBQUEsS0FBQSxDQUFNLDJCQUNqQyxHQUFBLFNBQUEsR0FDQSxTQUFVLENBQUEsTUFBQSxDQUFPLENBQUMsUUFBQSxLQUFhLENBQUMsUUFBQSxDQUFTLE9BQU8sQ0FBQSxDQUFBO0FBQ3BELElBQUEsT0FBTyxrQkFBa0IsR0FBNkIsQ0FBQSxDQUFDLEVBQUUsS0FBQSxFQUFPLGFBQW1CLE1BQUE7TUFDakYsS0FBTyxFQUFBLEtBQUE7QUFDUCxNQUFBLEtBQUE7QUFDQSxNQUFBLFdBQUE7S0FDQSxDQUFBLENBQUEsQ0FBQTtBQUFBLEdBQUE7QUFFTixDQUFBO0FBN05hLG9CQUFBLENBSUosU0FBWSxHQUFBLDRCQUFBLENBQUE7QUEyTnJCLFNBQVMsZ0JBQUEsQ0FDUCxTQUNBLE9BQ0EsRUFBQTtBQUNBLEVBQVEsT0FBQSxDQUFBLE9BQUEsSUFBVyxPQUFBLE9BQUEsR0FBQSw0QkFBQSxFQUE4QixXQUFXLElBQUEsR0FBQSxPQUFBLEdBQUEsRUFBRSxDQUFBLENBQUE7QUFDaEUsQ0FBQTtBQUVnQixTQUFBLDRCQUFBLENBQTZCLEVBQUUsS0FBQSxFQUFvRCxFQUFBO0FBQ2pHLEVBQUEsTUFBTSxFQUFFLE9BQVMsRUFBQSxRQUFBLEVBQVUsbUJBQW9CLEVBQUEsR0FBSSxNQUFNLFFBQVMsRUFBQSxDQUFBO0FBQzVELEVBQUEsTUFBQSxNQUFBLEdBQVMsV0FBVyxTQUFTLENBQUEsQ0FBQTtBQUUvQixFQUFBLElBQUEsS0FBQSxDQUFNLEtBQU0sQ0FBQSxNQUFBLEtBQVcsVUFBWSxFQUFBO0FBQ3JDLElBQVEsdUJBQUEsS0FBQSxDQUFBLGNBQUEsNEJBQUEsRUFBQTtBQUE2QixNQUFBLEtBQUE7S0FBYyxDQUFBLENBQUE7QUFBQSxHQUFBO0FBR3JELEVBQ0csdUJBQUEsS0FBQSxDQUFBLGNBQUEsS0FBQSxFQUFBO0FBQUksSUFBQSxTQUFBLEVBQVcsTUFBTyxDQUFBLE9BQUE7R0FDcEIsRUFBQSxPQUFBLENBQVEsSUFBSSxDQUFDLE1BQUEsRUFBUSwwQkFDcEIsS0FBQSxDQUFBLGFBQUEsQ0FBQyxNQUFNLFFBQU4sRUFBQTtJQUFlLEdBQUssRUFBQSxLQUFBO0dBQ2xCLGtCQUFBLEtBQUEsQ0FBQSxjQUFBLG1CQUFBLEVBQUE7QUFBb0IsSUFBQSxNQUFBO0FBQWdCLElBQUEsS0FBQTtBQUFBLEdBQWMsQ0FDckQsQ0FDRCxDQUFBLEVBRUEsQ0FBQyxRQUFhLG9CQUFBLEtBQUEsQ0FBQSxjQUFBLGtCQUFBLEVBQUE7QUFBbUIsSUFBQSxLQUFBO0lBQWMsR0FBSSxFQUFBLFVBQUE7QUFBVyxJQUFBLG1CQUFBO0FBQUEsR0FBMEMsQ0FDM0csQ0FBQSxDQUFBO0FBRUosQ0FBQTtBQUVBLE1BQU0sU0FBQSxHQUFZLENBQUMsS0FBMEIsTUFBQTtBQUMzQyxFQUFBLE9BQUEsRUFBUyxHQUFJLENBQUE7SUFDWCxPQUFTLEVBQUEsTUFBQTtJQUNULFFBQVUsRUFBQSxNQUFBO0lBQ1YsVUFBWSxFQUFBLFVBQUE7SUFDWixTQUFXLEVBQUEsS0FBQSxDQUFNLFFBQVEsQ0FBQyxDQUFBO0lBQzFCLE1BQVEsRUFBQSxLQUFBLENBQU0sUUFBUSxDQUFDLENBQUE7R0FDeEIsQ0FBQTtBQUNILENBQUEsQ0FBQSxDQUFBO0FBRU8sU0FBUyxrQkFBa0IsS0FBaUQsRUFBQTtBQUMzRSxFQUFBLE1BQUEsRUFBRSxJQUFNLEVBQUEsS0FBQSxFQUFVLEdBQUEsS0FBQSxDQUFBO0FBQ3hCLEVBQUEsTUFBTSxNQUFrQyxHQUFBO0lBQ3RDLEtBQU8sRUFBQSxJQUFBO0FBQ1AsSUFBQSxLQUFBLEVBQU8sTUFBTyxDQUFBLEtBQUEsSUFBQSxJQUFBLEdBQUEsS0FBQSxHQUFTLElBQUksQ0FBQTtBQUFBLEdBQUEsQ0FBQTtBQUc3QixFQUFBLElBQUksV0FBVyxLQUFPLEVBQUE7QUFDcEIsSUFBQSxNQUFBLENBQU8sUUFBUSxLQUFNLENBQUEsS0FBQSxDQUFBO0FBQUEsR0FBQTtBQUdoQixFQUFBLE9BQUEsTUFBQSxDQUFBO0FBQ1QsQ0FBQTtBQUVPLFNBQVMsaUJBQWlCLE1BQXdDLEVBQUE7QUFDdkUsRUFBQSxPQUFPLE9BQU8sR0FBUSxLQUFBLEVBQUEsSUFBTSxPQUFPLFFBQWEsS0FBQSxFQUFBLElBQU0sT0FBTyxLQUFVLEtBQUEsRUFBQSxDQUFBO0FBQ3pFLENBQUE7QUFFTyxTQUFTLHFCQUFxQixhQUFnQyxFQUFBO0FBQ25FLEVBQUEsTUFBTSxXQUFXLFNBQVUsQ0FBQSxJQUFBLENBQUssQ0FBQyxDQUFNLEtBQUEsQ0FBQSxDQUFFLFVBQVUsYUFBYSxDQUFBLENBQUE7QUFDaEUsRUFBQSxJQUFJLENBQUMsUUFBVSxFQUFBO0FBRU4sSUFBQSxPQUFBLEtBQUEsQ0FBQTtBQUFBLEdBQUE7QUFFRixFQUFBLE9BQUEsT0FBQSxDQUFRLFNBQVMsT0FBTyxDQUFBLENBQUE7QUFDakM7Ozs7In0=
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import { isFilterComplete, isMultiValueOperator } from './AdHocFiltersVariable.js';
|
|
2
|
-
import { escapeUrlPipeDelimiters, toUrlCommaDelimitedString, unescapeUrlDelimiters } from '../utils.js';
|
|
3
|
-
|
|
4
|
-
class AdHocFiltersVariableUrlSyncHandler {
|
|
5
|
-
constructor(_variable) {
|
|
6
|
-
this._variable = _variable;
|
|
7
|
-
}
|
|
8
|
-
getKey() {
|
|
9
|
-
return `var-${this._variable.state.name}`;
|
|
10
|
-
}
|
|
11
|
-
getKeys() {
|
|
12
|
-
return [this.getKey()];
|
|
13
|
-
}
|
|
14
|
-
getUrlState() {
|
|
15
|
-
const filters = this._variable.state.filters;
|
|
16
|
-
if (filters.length === 0) {
|
|
17
|
-
return { [this.getKey()]: [""] };
|
|
18
|
-
}
|
|
19
|
-
const value = filters.filter(isFilterComplete).map((filter) => toArray(filter).map(escapeUrlPipeDelimiters).join("|"));
|
|
20
|
-
return { [this.getKey()]: value };
|
|
21
|
-
}
|
|
22
|
-
updateFromUrl(values) {
|
|
23
|
-
const urlValue = values[this.getKey()];
|
|
24
|
-
if (urlValue == null) {
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
const filters = deserializeUrlToFilters(urlValue);
|
|
28
|
-
this._variable.setState({ filters });
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
function deserializeUrlToFilters(value) {
|
|
32
|
-
if (Array.isArray(value)) {
|
|
33
|
-
const values = value;
|
|
34
|
-
return values.map(toFilter).filter(isFilter);
|
|
35
|
-
}
|
|
36
|
-
const filter = toFilter(value);
|
|
37
|
-
return filter === null ? [] : [filter];
|
|
38
|
-
}
|
|
39
|
-
function toArray(filter) {
|
|
40
|
-
var _a;
|
|
41
|
-
const result = [toUrlCommaDelimitedString(filter.key, filter.keyLabel), filter.operator];
|
|
42
|
-
if (isMultiValueOperator(filter.operator)) {
|
|
43
|
-
filter.values.forEach((value, index) => {
|
|
44
|
-
var _a2;
|
|
45
|
-
result.push(toUrlCommaDelimitedString(value, (_a2 = filter.valueLabels) == null ? void 0 : _a2[index]));
|
|
46
|
-
});
|
|
47
|
-
} else {
|
|
48
|
-
result.push(toUrlCommaDelimitedString(filter.value, (_a = filter.valueLabels) == null ? void 0 : _a[0]));
|
|
49
|
-
}
|
|
50
|
-
return result;
|
|
51
|
-
}
|
|
52
|
-
function toFilter(urlValue) {
|
|
53
|
-
if (typeof urlValue !== "string" || urlValue.length === 0) {
|
|
54
|
-
return null;
|
|
55
|
-
}
|
|
56
|
-
const [key, keyLabel, operator, _operatorLabel, ...values] = urlValue.split("|").reduce((acc, v) => {
|
|
57
|
-
const [key2, label] = v.split(",");
|
|
58
|
-
acc.push(key2, label != null ? label : key2);
|
|
59
|
-
return acc;
|
|
60
|
-
}, []).map(unescapeUrlDelimiters);
|
|
61
|
-
return {
|
|
62
|
-
key,
|
|
63
|
-
keyLabel,
|
|
64
|
-
operator,
|
|
65
|
-
value: values[0],
|
|
66
|
-
values: isMultiValueOperator(operator) ? values.filter((_, index) => index % 2 === 0) : void 0,
|
|
67
|
-
valueLabels: values.filter((_, index) => index % 2 === 1),
|
|
68
|
-
condition: ""
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
function isFilter(filter) {
|
|
72
|
-
return filter !== null && typeof filter.key === "string" && typeof filter.value === "string";
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
export { AdHocFiltersVariableUrlSyncHandler };
|
|
76
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWRIb2NGaWx0ZXJzVmFyaWFibGVVcmxTeW5jSGFuZGxlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdmFyaWFibGVzL2FkaG9jL0FkSG9jRmlsdGVyc1ZhcmlhYmxlVXJsU3luY0hhbmRsZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNGaWx0ZXJDb21wbGV0ZSwgaXNNdWx0aVZhbHVlT3BlcmF0b3IgfSBmcm9tICcuL0FkSG9jRmlsdGVyc1ZhcmlhYmxlLmpzJztcbmltcG9ydCB7IGVzY2FwZVVybFBpcGVEZWxpbWl0ZXJzLCB0b1VybENvbW1hRGVsaW1pdGVkU3RyaW5nLCB1bmVzY2FwZVVybERlbGltaXRlcnMgfSBmcm9tICcuLi91dGlscy5qcyc7XG5cbmNsYXNzIEFkSG9jRmlsdGVyc1ZhcmlhYmxlVXJsU3luY0hhbmRsZXIge1xuICBjb25zdHJ1Y3RvcihfdmFyaWFibGUpIHtcbiAgICB0aGlzLl92YXJpYWJsZSA9IF92YXJpYWJsZTtcbiAgfVxuICBnZXRLZXkoKSB7XG4gICAgcmV0dXJuIGB2YXItJHt0aGlzLl92YXJpYWJsZS5zdGF0ZS5uYW1lfWA7XG4gIH1cbiAgZ2V0S2V5cygpIHtcbiAgICByZXR1cm4gW3RoaXMuZ2V0S2V5KCldO1xuICB9XG4gIGdldFVybFN0YXRlKCkge1xuICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLl92YXJpYWJsZS5zdGF0ZS5maWx0ZXJzO1xuICAgIGlmIChmaWx0ZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHsgW3RoaXMuZ2V0S2V5KCldOiBbXCJcIl0gfTtcbiAgICB9XG4gICAgY29uc3QgdmFsdWUgPSBmaWx0ZXJzLmZpbHRlcihpc0ZpbHRlckNvbXBsZXRlKS5tYXAoKGZpbHRlcikgPT4gdG9BcnJheShmaWx0ZXIpLm1hcChlc2NhcGVVcmxQaXBlRGVsaW1pdGVycykuam9pbihcInxcIikpO1xuICAgIHJldHVybiB7IFt0aGlzLmdldEtleSgpXTogdmFsdWUgfTtcbiAgfVxuICB1cGRhdGVGcm9tVXJsKHZhbHVlcykge1xuICAgIGNvbnN0IHVybFZhbHVlID0gdmFsdWVzW3RoaXMuZ2V0S2V5KCldO1xuICAgIGlmICh1cmxWYWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGZpbHRlcnMgPSBkZXNlcmlhbGl6ZVVybFRvRmlsdGVycyh1cmxWYWx1ZSk7XG4gICAgdGhpcy5fdmFyaWFibGUuc2V0U3RhdGUoeyBmaWx0ZXJzIH0pO1xuICB9XG59XG5mdW5jdGlvbiBkZXNlcmlhbGl6ZVVybFRvRmlsdGVycyh2YWx1ZSkge1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBjb25zdCB2YWx1ZXMgPSB2YWx1ZTtcbiAgICByZXR1cm4gdmFsdWVzLm1hcCh0b0ZpbHRlcikuZmlsdGVyKGlzRmlsdGVyKTtcbiAgfVxuICBjb25zdCBmaWx0ZXIgPSB0b0ZpbHRlcih2YWx1ZSk7XG4gIHJldHVybiBmaWx0ZXIgPT09IG51bGwgPyBbXSA6IFtmaWx0ZXJdO1xufVxuZnVuY3Rpb24gdG9BcnJheShmaWx0ZXIpIHtcbiAgdmFyIF9hO1xuICBjb25zdCByZXN1bHQgPSBbdG9VcmxDb21tYURlbGltaXRlZFN0cmluZyhmaWx0ZXIua2V5LCBmaWx0ZXIua2V5TGFiZWwpLCBmaWx0ZXIub3BlcmF0b3JdO1xuICBpZiAoaXNNdWx0aVZhbHVlT3BlcmF0b3IoZmlsdGVyLm9wZXJhdG9yKSkge1xuICAgIGZpbHRlci52YWx1ZXMuZm9yRWFjaCgodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICB2YXIgX2EyO1xuICAgICAgcmVzdWx0LnB1c2godG9VcmxDb21tYURlbGltaXRlZFN0cmluZyh2YWx1ZSwgKF9hMiA9IGZpbHRlci52YWx1ZUxhYmVscykgPT0gbnVsbCA/IHZvaWQgMCA6IF9hMltpbmRleF0pKTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICByZXN1bHQucHVzaCh0b1VybENvbW1hRGVsaW1pdGVkU3RyaW5nKGZpbHRlci52YWx1ZSwgKF9hID0gZmlsdGVyLnZhbHVlTGFiZWxzKSA9PSBudWxsID8gdm9pZCAwIDogX2FbMF0pKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gdG9GaWx0ZXIodXJsVmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB1cmxWYWx1ZSAhPT0gXCJzdHJpbmdcIiB8fCB1cmxWYWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBba2V5LCBrZXlMYWJlbCwgb3BlcmF0b3IsIF9vcGVyYXRvckxhYmVsLCAuLi52YWx1ZXNdID0gdXJsVmFsdWUuc3BsaXQoXCJ8XCIpLnJlZHVjZSgoYWNjLCB2KSA9PiB7XG4gICAgY29uc3QgW2tleTIsIGxhYmVsXSA9IHYuc3BsaXQoXCIsXCIpO1xuICAgIGFjYy5wdXNoKGtleTIsIGxhYmVsICE9IG51bGwgPyBsYWJlbCA6IGtleTIpO1xuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKS5tYXAodW5lc2NhcGVVcmxEZWxpbWl0ZXJzKTtcbiAgcmV0dXJuIHtcbiAgICBrZXksXG4gICAga2V5TGFiZWwsXG4gICAgb3BlcmF0b3IsXG4gICAgdmFsdWU6IHZhbHVlc1swXSxcbiAgICB2YWx1ZXM6IGlzTXVsdGlWYWx1ZU9wZXJhdG9yKG9wZXJhdG9yKSA/IHZhbHVlcy5maWx0ZXIoKF8sIGluZGV4KSA9PiBpbmRleCAlIDIgPT09IDApIDogdm9pZCAwLFxuICAgIHZhbHVlTGFiZWxzOiB2YWx1ZXMuZmlsdGVyKChfLCBpbmRleCkgPT4gaW5kZXggJSAyID09PSAxKSxcbiAgICBjb25kaXRpb246IFwiXCJcbiAgfTtcbn1cbmZ1bmN0aW9uIGlzRmlsdGVyKGZpbHRlcikge1xuICByZXR1cm4gZmlsdGVyICE9PSBudWxsICYmIHR5cGVvZiBmaWx0ZXIua2V5ID09PSBcInN0cmluZ1wiICYmIHR5cGVvZiBmaWx0ZXIudmFsdWUgPT09IFwic3RyaW5nXCI7XG59XG5cbmV4cG9ydCB7IEFkSG9jRmlsdGVyc1ZhcmlhYmxlVXJsU3luY0hhbmRsZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pUVdSSWIyTkdhV3gwWlhKelZtRnlhV0ZpYkdWVmNteFRlVzVqU0dGdVpHeGxjaTVxY3lJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dkxpNHZMaTR2YzNKakwzWmhjbWxoWW14bGN5OWhaR2h2WXk5QlpFaHZZMFpwYkhSbGNuTldZWEpwWVdKc1pWVnliRk41Ym1OSVlXNWtiR1Z5TG5SeklsMHNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQjdJRk5qWlc1bFQySnFaV04wVlhKc1UzbHVZMGhoYm1Sc1pYSXNJRk5qWlc1bFQySnFaV04wVlhKc1ZtRnNkV1VzSUZOalpXNWxUMkpxWldOMFZYSnNWbUZzZFdWeklIMGdabkp2YlNBbkxpNHZMaTR2WTI5eVpTOTBlWEJsY3ljN1hHNXBiWEJ2Y25RZ2UxeHVJQ0JCWkVodlkwWnBiSFJsY25OV1lYSnBZV0pzWlN4Y2JpQWdRV1JJYjJOR2FXeDBaWEpYYVhSb1RHRmlaV3h6TEZ4dUlDQnBjMFpwYkhSbGNrTnZiWEJzWlhSbExGeHVJQ0JwYzAxMWJIUnBWbUZzZFdWUGNHVnlZWFJ2Y2l4Y2JuMGdabkp2YlNBbkxpOUJaRWh2WTBacGJIUmxjbk5XWVhKcFlXSnNaU2M3WEc1cGJYQnZjblFnZXlCbGMyTmhjR1ZWY214UWFYQmxSR1ZzYVcxcGRHVnljeXdnZEc5VmNteERiMjF0WVVSbGJHbHRhWFJsWkZOMGNtbHVaeXdnZFc1bGMyTmhjR1ZWY214RVpXeHBiV2wwWlhKeklIMGdabkp2YlNBbkxpNHZkWFJwYkhNbk8xeHVYRzVsZUhCdmNuUWdZMnhoYzNNZ1FXUkliMk5HYVd4MFpYSnpWbUZ5YVdGaWJHVlZjbXhUZVc1alNHRnVaR3hsY2lCcGJYQnNaVzFsYm5SeklGTmpaVzVsVDJKcVpXTjBWWEpzVTNsdVkwaGhibVJzWlhJZ2UxeHVJQ0J3ZFdKc2FXTWdZMjl1YzNSeWRXTjBiM0lvY0hKcGRtRjBaU0JmZG1GeWFXRmliR1U2SUVGa1NHOWpSbWxzZEdWeWMxWmhjbWxoWW14bEtTQjdmVnh1WEc0Z0lIQnlhWFpoZEdVZ1oyVjBTMlY1S0NrNklITjBjbWx1WnlCN1hHNGdJQ0FnY21WMGRYSnVJR0IyWVhJdEpIdDBhR2x6TGw5MllYSnBZV0pzWlM1emRHRjBaUzV1WVcxbGZXQTdYRzRnSUgxY2JseHVJQ0J3ZFdKc2FXTWdaMlYwUzJWNWN5Z3BPaUJ6ZEhKcGJtZGJYU0I3WEc0Z0lDQWdjbVYwZFhKdUlGdDBhR2x6TG1kbGRFdGxlU2dwWFR0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCblpYUlZjbXhUZEdGMFpTZ3BPaUJUWTJWdVpVOWlhbVZqZEZWeWJGWmhiSFZsY3lCN1hHNGdJQ0FnWTI5dWMzUWdabWxzZEdWeWN5QTlJSFJvYVhNdVgzWmhjbWxoWW14bExuTjBZWFJsTG1acGJIUmxjbk03WEc1Y2JpQWdJQ0JwWmlBb1ptbHNkR1Z5Y3k1c1pXNW5kR2dnUFQwOUlEQXBJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQjdJRnQwYUdsekxtZGxkRXRsZVNncFhUb2dXeWNuWFNCOU8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdOdmJuTjBJSFpoYkhWbElEMGdabWxzZEdWeWMxeHVJQ0FnSUNBZ0xtWnBiSFJsY2locGMwWnBiSFJsY2tOdmJYQnNaWFJsS1Z4dUlDQWdJQ0FnTG0xaGNDZ29abWxzZEdWeUtTQTlQaUIwYjBGeWNtRjVLR1pwYkhSbGNpa3ViV0Z3S0dWelkyRndaVlZ5YkZCcGNHVkVaV3hwYldsMFpYSnpLUzVxYjJsdUtDZDhKeWtwTzF4dUlDQWdJSEpsZEhWeWJpQjdJRnQwYUdsekxtZGxkRXRsZVNncFhUb2dkbUZzZFdVZ2ZUdGNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5QjFjR1JoZEdWR2NtOXRWWEpzS0haaGJIVmxjem9nVTJObGJtVlBZbXBsWTNSVmNteFdZV3gxWlhNcE9pQjJiMmxrSUh0Y2JpQWdJQ0JqYjI1emRDQjFjbXhXWVd4MVpTQTlJSFpoYkhWbGMxdDBhR2x6TG1kbGRFdGxlU2dwWFR0Y2JseHVJQ0FnSUdsbUlDaDFjbXhXWVd4MVpTQTlQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWTI5dWMzUWdabWxzZEdWeWN5QTlJR1JsYzJWeWFXRnNhWHBsVlhKc1ZHOUdhV3gwWlhKektIVnliRlpoYkhWbEtUdGNiaUFnSUNCMGFHbHpMbDkyWVhKcFlXSnNaUzV6WlhSVGRHRjBaU2g3SUdacGJIUmxjbk1nZlNrN1hHNGdJSDFjYm4xY2JseHVablZ1WTNScGIyNGdaR1Z6WlhKcFlXeHBlbVZWY214VWIwWnBiSFJsY25Nb2RtRnNkV1U2SUZOalpXNWxUMkpxWldOMFZYSnNWbUZzZFdVcE9pQkJaRWh2WTBacGJIUmxjbGRwZEdoTVlXSmxiSE5iWFNCN1hHNGdJR2xtSUNoQmNuSmhlUzVwYzBGeWNtRjVLSFpoYkhWbEtTa2dlMXh1SUNBZ0lHTnZibk4wSUhaaGJIVmxjeUE5SUhaaGJIVmxPMXh1SUNBZ0lISmxkSFZ5YmlCMllXeDFaWE11YldGd0tIUnZSbWxzZEdWeUtTNW1hV3gwWlhJb2FYTkdhV3gwWlhJcE8xeHVJQ0I5WEc1Y2JpQWdZMjl1YzNRZ1ptbHNkR1Z5SUQwZ2RHOUdhV3gwWlhJb2RtRnNkV1VwTzF4dUlDQnlaWFIxY200Z1ptbHNkR1Z5SUQwOVBTQnVkV3hzSUQ4Z1cxMGdPaUJiWm1sc2RHVnlYVHRjYm4xY2JseHVablZ1WTNScGIyNGdkRzlCY25KaGVTaG1hV3gwWlhJNklFRmtTRzlqUm1sc2RHVnlWMmwwYUV4aFltVnNjeWs2SUhOMGNtbHVaMXRkSUh0Y2JpQWdZMjl1YzNRZ2NtVnpkV3gwSUQwZ1czUnZWWEpzUTI5dGJXRkVaV3hwYldsMFpXUlRkSEpwYm1jb1ptbHNkR1Z5TG10bGVTd2dabWxzZEdWeUxtdGxlVXhoWW1Wc0tTd2dabWxzZEdWeUxtOXdaWEpoZEc5eVhUdGNiaUFnYVdZZ0tHbHpUWFZzZEdsV1lXeDFaVTl3WlhKaGRHOXlLR1pwYkhSbGNpNXZjR1Z5WVhSdmNpa3BJSHRjYmlBZ0lDQXZMeUJVVDBSUElISmxiVzkyWlNCbGVIQmxZM1F0WlhKeWIzSWdkMmhsYmlCM1pTZHlaU0J2YmlCMGFHVWdiR0YwWlhOMElIWmxjbk5wYjI0Z2IyWWdRR2R5WVdaaGJtRXZaR0YwWVZ4dUlDQWdJQzh2SUVCMGN5MWxlSEJsWTNRdFpYSnliM0pjYmlBZ0lDQm1hV3gwWlhJdWRtRnNkV1Z6TG1admNrVmhZMmdvS0haaGJIVmxMQ0JwYm1SbGVDa2dQVDRnZTF4dUlDQWdJQ0FnY21WemRXeDBMbkIxYzJnb2RHOVZjbXhEYjIxdFlVUmxiR2x0YVhSbFpGTjBjbWx1WnloMllXeDFaU3dnWm1sc2RHVnlMblpoYkhWbFRHRmlaV3h6UHk1YmFXNWtaWGhkS1NrN1hHNGdJQ0FnZlNrN1hHNGdJSDBnWld4elpTQjdYRzRnSUNBZ2NtVnpkV3gwTG5CMWMyZ29kRzlWY214RGIyMXRZVVJsYkdsdGFYUmxaRk4wY21sdVp5aG1hV3gwWlhJdWRtRnNkV1VzSUdacGJIUmxjaTUyWVd4MVpVeGhZbVZzY3o4dVd6QmRLU2s3WEc0Z0lIMWNiaUFnY21WMGRYSnVJSEpsYzNWc2REdGNibjFjYmx4dVpuVnVZM1JwYjI0Z2RHOUdhV3gwWlhJb2RYSnNWbUZzZFdVNklITjBjbWx1WnlCOElHNTFiV0psY2lCOElHSnZiMnhsWVc0Z2ZDQjFibVJsWm1sdVpXUWdmQ0J1ZFd4c0tUb2dRV1JJYjJOR2FXeDBaWEpYYVhSb1RHRmlaV3h6SUh3Z2JuVnNiQ0I3WEc0Z0lHbG1JQ2gwZVhCbGIyWWdkWEpzVm1Gc2RXVWdJVDA5SUNkemRISnBibWNuSUh4OElIVnliRlpoYkhWbExteGxibWQwYUNBOVBUMGdNQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQnVkV3hzTzF4dUlDQjlYRzVjYmlBZ1kyOXVjM1FnVzJ0bGVTd2dhMlY1VEdGaVpXd3NJRzl3WlhKaGRHOXlMQ0JmYjNCbGNtRjBiM0pNWVdKbGJDd2dMaTR1ZG1Gc2RXVnpYU0E5SUhWeWJGWmhiSFZsWEc0Z0lDQWdMbk53YkdsMEtDZDhKeWxjYmlBZ0lDQXVjbVZrZFdObFBITjBjbWx1WjF0ZFBpZ29ZV05qTENCMktTQTlQaUI3WEc0Z0lDQWdJQ0JqYjI1emRDQmJhMlY1TENCc1lXSmxiRjBnUFNCMkxuTndiR2wwS0Njc0p5azdYRzVjYmlBZ0lDQWdJR0ZqWXk1d2RYTm9LR3RsZVN3Z2JHRmlaV3dnUHo4Z2EyVjVLVHRjYmx4dUlDQWdJQ0FnY21WMGRYSnVJR0ZqWXp0Y2JpQWdJQ0I5TENCYlhTbGNiaUFnSUNBdWJXRndLSFZ1WlhOallYQmxWWEpzUkdWc2FXMXBkR1Z5Y3lrN1hHNWNiaUFnY21WMGRYSnVJSHRjYmlBZ0lDQnJaWGtzWEc0Z0lDQWdhMlY1VEdGaVpXd3NYRzRnSUNBZ2IzQmxjbUYwYjNJc1hHNGdJQ0FnZG1Gc2RXVTZJSFpoYkhWbGMxc3dYU3hjYmlBZ0lDQjJZV3gxWlhNNklHbHpUWFZzZEdsV1lXeDFaVTl3WlhKaGRHOXlLRzl3WlhKaGRHOXlLU0EvSUhaaGJIVmxjeTVtYVd4MFpYSW9LRjhzSUdsdVpHVjRLU0E5UGlCcGJtUmxlQ0FsSURJZ1BUMDlJREFwSURvZ2RXNWtaV1pwYm1Wa0xGeHVJQ0FnSUhaaGJIVmxUR0ZpWld4ek9pQjJZV3gxWlhNdVptbHNkR1Z5S0NoZkxDQnBibVJsZUNrZ1BUNGdhVzVrWlhnZ0pTQXlJRDA5UFNBeEtTeGNiaUFnSUNCamIyNWthWFJwYjI0NklDY25MRnh1SUNCOU8xeHVmVnh1WEc1bWRXNWpkR2x2YmlCcGMwWnBiSFJsY2lobWFXeDBaWEk2SUVGa1NHOWpSbWxzZEdWeVYybDBhRXhoWW1Wc2N5QjhJRzUxYkd3cE9pQm1hV3gwWlhJZ2FYTWdRV1JJYjJOR2FXeDBaWEpYYVhSb1RHRmlaV3h6SUh0Y2JpQWdjbVYwZFhKdUlHWnBiSFJsY2lBaFBUMGdiblZzYkNBbUppQjBlWEJsYjJZZ1ptbHNkR1Z5TG10bGVTQTlQVDBnSjNOMGNtbHVaeWNnSmlZZ2RIbHdaVzltSUdacGJIUmxjaTUyWVd4MVpTQTlQVDBnSjNOMGNtbHVaeWM3WEc1OVhHNGlYU3dpYm1GdFpYTWlPbHNpWDJFaUxDSnJaWGtpWFN3aWJXRndjR2x1WjNNaU9pSTdPenRCUVZOUExFMUJRVTBzYTBOQlFYZEZMRU5CUVVFN1FVRkJRU3hGUVVNMVJTeFpRVUZ2UWl4VFFVRnBReXhGUVVGQk8wRkJRV3BETEVsQlFVRXNTVUZCUVN4RFFVRkJMRk5CUVVFc1IwRkJRU3hUUVVGQkxFTkJRVUU3UVVGQlFTeEhRVUZyUXp0QlFVRkJMRVZCUlhKRUxFMUJRV2xDTEVkQlFVRTdRVUZEZGtJc1NVRkJUeXhQUVVGQkxFTkJRVUVzU1VGQlFTeEZRVUZQTEVsQlFVc3NRMEZCUVN4VFFVRkJMRU5CUVZVc1MwRkJUU3hEUVVGQkxFbEJRVUVzUTBGQlFTeERRVUZCTEVOQlFVRTdRVUZCUVN4SFFVTnlRenRCUVVGQkxFVkJSVThzVDBGQmIwSXNSMEZCUVR0QlFVTjZRaXhKUVVGUExFOUJRVUVzUTBGQlF5eEpRVUZMTEVOQlFVRXNUVUZCUVN4RlFVRlJMRU5CUVVFc1EwRkJRVHRCUVVGQkxFZEJRM1pDTzBGQlFVRXNSVUZGVHl4WFFVRnZReXhIUVVGQk8wRkJRM3BETEVsQlFVMHNUVUZCUVN4UFFVRkJMRWRCUVZVc1NVRkJTeXhEUVVGQkxGTkJRVUVzUTBGQlZTeExRVUZOTEVOQlFVRXNUMEZCUVN4RFFVRkJPMEZCUlhKRExFbEJRVWtzU1VGQlFTeFBRVUZCTEVOQlFWRXNWMEZCVnl4RFFVRkhMRVZCUVVFN1FVRkRlRUlzVFVGQlFTeFBRVUZQTEVWQlFVVXNRMEZCUXl4SlFVRkJMRU5CUVVzc1VVRkJWeXhIUVVGQkxFTkJRVU1zUlVGQlJTeERRVUZGTEVWQlFVRXNRMEZCUVR0QlFVRkJMRXRCUTJwRE8wRkJSVUVzU1VGQlFTeE5RVUZOTEZGQlFWRXNUMEZEV0N4RFFVRkJMRTFCUVVFc1EwRkJUeXhuUWtGQlowSXNRMEZCUVN4RFFVTjJRaXhKUVVGSkxFTkJRVU1zVFVGQlFTeExRVUZYTEU5QlFWRXNRMEZCUVN4TlFVRk5MRVZCUVVVc1IwRkJTU3hEUVVGQkxIVkNRVUYxUWl4RFFVRkZMRU5CUVVFc1NVRkJRU3hEUVVGTExFZEJRVWNzUTBGQlF5eERRVUZCTEVOQlFVRTdRVUZEZWtVc1NVRkJRU3hQUVVGUExFVkJRVVVzUTBGQlF5eEpRVUZMTEVOQlFVRXNUVUZCUVN4TFFVRlhMRXRCUVUwc1JVRkJRU3hEUVVGQk8wRkJRVUVzUjBGRGJFTTdRVUZCUVN4RlFVVlBMR05CUVdNc1RVRkJiME1zUlVGQlFUdEJRVU4yUkN4SlFVRk5MRTFCUVVFc1VVRkJRU3hIUVVGWExFMUJRVThzUTBGQlFTeEpRVUZCTEVOQlFVc3NUVUZCVHl4RlFVRkJMRU5CUVVFc1EwRkJRVHRCUVVWd1F5eEpRVUZCTEVsQlFVa3NXVUZCV1N4SlFVRk5MRVZCUVVFN1FVRkRjRUlzVFVGQlFTeFBRVUZCTzBGQlFVRXNTMEZEUmp0QlFVVkJMRWxCUVUwc1RVRkJRU3hQUVVGQkxFZEJRVlVzZDBKQlFYZENMRkZCUVZFc1EwRkJRU3hEUVVGQk8wRkJRMmhFTEVsQlFVRXNTVUZCUVN4RFFVRkxMRk5CUVZVc1EwRkJRU3hSUVVGQkxFTkJRVk1zUlVGQlJTeFBRVUZCTEVWQlFWTXNRMEZCUVN4RFFVRkJPMEZCUVVFc1IwRkRja003UVVGRFJpeERRVUZCTzBGQlJVRXNVMEZCVXl4M1FrRkJkMElzUzBGQmNVUXNSVUZCUVR0QlFVTndSaXhGUVVGSkxFbEJRVUVzUzBGQlFTeERRVUZOTEU5QlFWRXNRMEZCUVN4TFFVRkxMRU5CUVVjc1JVRkJRVHRCUVVONFFpeEpRVUZCTEUxQlFVMHNUVUZCVXl4SFFVRkJMRXRCUVVFc1EwRkJRVHRCUVVObUxFbEJRVUVzVDBGQlR5eE5RVUZQTEVOQlFVRXNSMEZCUVN4RFFVRkpMRkZCUVZFc1EwRkJRU3hEUVVGRkxFOUJRVThzVVVGQlVTeERRVUZCTEVOQlFVRTdRVUZCUVN4SFFVTTNRenRCUVVWQkxFVkJRVTBzVFVGQlFTeE5RVUZCTEVkQlFWTXNVMEZCVXl4TFFVRkxMRU5CUVVFc1EwRkJRVHRCUVVNM1FpeEZRVUZCTEU5QlFVOHNUVUZCVnl4TFFVRkJMRWxCUVVFc1IwRkJUeXhGUVVGRExFZEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVRXNRMEZCUVR0QlFVTjJReXhEUVVGQk8wRkJSVUVzVTBGQlV5eFJRVUZSTEUxQlFYbERMRVZCUVVFN1FVRjJSREZFTEVWQlFVRXNTVUZCUVN4RlFVRkJMRU5CUVVFN1FVRjNSRVVzUlVGQlRTeE5RVUZCTEUxQlFVRXNSMEZCVXl4RFFVRkRMSGxDUVVFd1FpeERRVUZCTEUxQlFVRXNRMEZCVHl4TFFVRkxMRTFCUVU4c1EwRkJRU3hSUVVGUkxFTkJRVWNzUlVGQlFTeE5RVUZCTEVOQlFVOHNVVUZCVVN4RFFVRkJMRU5CUVVFN1FVRkRka1lzUlVGQlNTeEpRVUZCTEc5Q1FVRkJMRU5CUVhGQ0xFMUJRVThzUTBGQlFTeFJRVUZSTEVOQlFVY3NSVUZCUVR0QlFVZDZReXhKUVVGQkxFMUJRVUVzUTBGQlR5eE5RVUZQTEVOQlFVRXNUMEZCUVN4RFFVRlJMRU5CUVVNc1MwRkJRU3hGUVVGUExFdEJRVlVzUzBGQlFUdEJRVFZFTlVNc1RVRkJRVUVzU1VGQlFVRXNSMEZCUVVFc1EwRkJRVUU3UVVFMlJFMHNUVUZCVHl4TlFVRkJMRU5CUVVFc1NVRkJRU3hEUVVGTExEQkNRVUV3UWl4TFFVRlBRU3hGUVVGQlFTeERRVUZCUVN4SFFVRkJRU3hIUVVGQkxFOUJRVThzVjBGQlVDeExRVUZCTEVsQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRVUVzUjBGQmNVSXNRMEZCUVN4TFFVRkJMRU5CUVUwc1EwRkJReXhEUVVGQkxFTkJRVUU3UVVGQlFTeExRVU14UlN4RFFVRkJMRU5CUVVFN1FVRkJRU3hIUVVOSkxFMUJRVUU3UVVGRFRDeEpRVUZQTEUxQlFVRXNRMEZCUVN4SlFVRkJMRU5CUVVzc01FSkJRVEJDTEUxQlFVOHNRMEZCUVN4TFFVRkJMRVZCUVVFc1EwRkJUeXhaUVVGUExGZEJRVkFzUzBGQlFTeEpRVUZCTEVkQlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1JVRkJRU3hEUVVGeFFpeEZRVUZGTEVOQlFVTXNRMEZCUVN4RFFVRkJPMEZCUVVFc1IwRkRPVVU3UVVGRFFTeEZRVUZQTEU5QlFVRXNUVUZCUVN4RFFVRkJPMEZCUTFRc1EwRkJRVHRCUVVWQkxGTkJRVk1zVTBGQlV5eFJRVUZ6Uml4RlFVRkJPMEZCUTNSSExFVkJRVUVzU1VGQlNTeFBRVUZQTEZGQlFVRXNTMEZCWVN4UlFVRlpMRWxCUVVFc1VVRkJRU3hEUVVGVExGZEJRVmNzUTBGQlJ5eEZRVUZCTzBGQlEzcEVMRWxCUVU4c1QwRkJRU3hKUVVGQkxFTkJRVUU3UVVGQlFTeEhRVU5VTzBGQlJVRXNSVUZCUVN4TlFVRk5MRU5CUVVNc1IwRkJRU3hGUVVGTExGRkJRVlVzUlVGQlFTeFJRVUZCTEVWQlFWVXNiVUpCUVcxQ0xFMUJRVTBzUTBGQlFTeEhRVUZKTEZGQlF6RkVMRU5CUVVFc1MwRkJRU3hEUVVGTkxFZEJRVWNzUTBGQlFTeERRVU5VTEUxQlFXbENMRU5CUVVFc1EwRkJReXhMUVVGTExFTkJRVTBzUzBGQlFUdEJRVU0xUWl4SlFVRkJMRTFCUVUwc1EwRkJRME1zU1VGQlN5eEZRVUZCTEV0QlFVc3NRMEZCU1N4SFFVRkJMRU5CUVVFc1EwRkJSU3hOUVVGTkxFZEJRVWNzUTBGQlFTeERRVUZCTzBGQlJXaERMRWxCUVVrc1IwRkJRU3hEUVVGQkxFbEJRVUVzUTBGQlMwRXNTVUZCU3l4RlFVRkJMRXRCUVVFc1NVRkJRU3hKUVVGQkxFZEJRVUVzUzBGQlFTeEhRVUZUUVN4SlFVRkhMRU5CUVVFc1EwRkJRVHRCUVVVeFFpeEpRVUZQTEU5QlFVRXNSMEZCUVN4RFFVRkJPMEZCUVVFc1IwRkRUaXhGUVVGQkxFVkJRVVVzUTBGQlFTeERRVU5LTEVsQlFVa3NjVUpCUVhGQ0xFTkJRVUVzUTBGQlFUdEJRVVUxUWl4RlFVRlBMRTlCUVVFN1FVRkJRU3hKUVVOTUxFZEJRVUU3UVVGQlFTeEpRVU5CTEZGQlFVRTdRVUZCUVN4SlFVTkJMRkZCUVVFN1FVRkJRU3hKUVVOQkxFOUJRVThzVFVGQlR5eERRVUZCTEVOQlFVRXNRMEZCUVR0QlFVRkJMRWxCUTJRc1RVRkJVU3hGUVVGQkxHOUNRVUZCTEVOQlFYRkNMRkZCUVZFc1EwRkJRU3hIUVVGSkxFMUJRVThzUTBGQlFTeE5RVUZCTEVOQlFVOHNRMEZCUXl4RFFVRkJMRVZCUVVjc1MwRkJWU3hMUVVGQkxFdEJRVUVzUjBGQlVTeERRVUZOTEV0QlFVRXNRMEZCUXl4RFFVRkpMRWRCUVVFc1MwRkJRU3hEUVVGQk8wRkJRVUVzU1VGRGVFWXNWMEZCUVN4RlFVRmhMRTlCUVU4c1RVRkJUeXhEUVVGQkxFTkJRVU1zUjBGQlJ5eExRVUZWTEV0QlFVRXNTMEZCUVN4SFFVRlJMRTFCUVUwc1EwRkJReXhEUVVGQk8wRkJRVUVzU1VGRGVFUXNVMEZCVnl4RlFVRkJMRVZCUVVFN1FVRkJRU3hIUVVOaUxFTkJRVUU3UVVGRFJpeERRVUZCTzBGQlJVRXNVMEZCVXl4VFFVRlRMRTFCUVhWRkxFVkJRVUU3UVVGRGRrWXNSVUZCVHl4UFFVRkJMRTFCUVVFc1MwRkJWeXhSUVVGUkxFOUJRVThzVFVGQlFTeERRVUZQTEZGQlFWRXNVVUZCV1N4SlFVRkJMRTlCUVU4c1QwRkJUeXhMUVVGVkxFdEJRVUVzVVVGQlFTeERRVUZCTzBGQlEzUkdPenM3T3lKOVxuIl0sIm5hbWVzIjpbIl9hIiwia2V5Il0sIm1hcHBpbmdzIjoiOzs7QUFTTyxNQUFNLGtDQUF3RSxDQUFBO0FBQzVFLEVBQUEsV0FBQSxDQUFvQixTQUFpQyxFQUFBO0FBQWpDLElBQUEsSUFBQSxDQUFBLFNBQUEsR0FBQSxTQUFBLENBQUE7QUFBQSxHQUFBO0VBRW5CLE1BQWlCLEdBQUE7QUFDaEIsSUFBQSxPQUFBLENBQUEsSUFBQSxFQUFPLElBQUssQ0FBQSxTQUFBLENBQVUsS0FBTSxDQUFBLElBQUEsQ0FBQSxDQUFBLENBQUE7QUFBQSxHQUFBO0VBRzlCLE9BQW9CLEdBQUE7QUFDbEIsSUFBQSxPQUFBLENBQUMsSUFBSyxDQUFBLE1BQUEsRUFBUSxDQUFBLENBQUE7QUFBQSxHQUFBO0VBR2hCLFdBQW9DLEdBQUE7QUFDbkMsSUFBQSxNQUFBLE9BQUEsR0FBVSxJQUFLLENBQUEsU0FBQSxDQUFVLEtBQU0sQ0FBQSxPQUFBLENBQUE7QUFFakMsSUFBQSxJQUFBLE9BQUEsQ0FBUSxXQUFXLENBQUcsRUFBQTtBQUN4QixNQUFBLE9BQU8sRUFBRSxDQUFDLElBQUEsQ0FBSyxRQUFXLEdBQUEs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
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { getFuzzySearcher } from '../utils.js';
|
|
2
|
-
|
|
3
|
-
function getAdhocOptionSearcher(options) {
|
|
4
|
-
const haystack = options.map((o) => {
|
|
5
|
-
var _a;
|
|
6
|
-
return (_a = o.label) != null ? _a : String(o.value);
|
|
7
|
-
});
|
|
8
|
-
const fuzzySearch = getFuzzySearcher(haystack);
|
|
9
|
-
return (search) => fuzzySearch(search).map((i) => options[i]);
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export { getAdhocOptionSearcher };
|
|
13
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0QWRob2NPcHRpb25TZWFyY2hlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdmFyaWFibGVzL2FkaG9jL2dldEFkaG9jT3B0aW9uU2VhcmNoZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0RnV6enlTZWFyY2hlciB9IGZyb20gJy4uL3V0aWxzLmpzJztcblxuZnVuY3Rpb24gZ2V0QWRob2NPcHRpb25TZWFyY2hlcihvcHRpb25zKSB7XG4gIGNvbnN0IGhheXN0YWNrID0gb3B0aW9ucy5tYXAoKG8pID0+IHtcbiAgICB2YXIgX2E7XG4gICAgcmV0dXJuIChfYSA9IG8ubGFiZWwpICE9IG51bGwgPyBfYSA6IFN0cmluZyhvLnZhbHVlKTtcbiAgfSk7XG4gIGNvbnN0IGZ1enp5U2VhcmNoID0gZ2V0RnV6enlTZWFyY2hlcihoYXlzdGFjayk7XG4gIHJldHVybiAoc2VhcmNoKSA9PiBmdXp6eVNlYXJjaChzZWFyY2gpLm1hcCgoaSkgPT4gb3B0aW9uc1tpXSk7XG59XG5cbmV4cG9ydCB7IGdldEFkaG9jT3B0aW9uU2VhcmNoZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWjJWMFFXUm9iMk5QY0hScGIyNVRaV0Z5WTJobGNpNXFjeUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2TGk0dkxpNHZjM0pqTDNaaGNtbGhZbXhsY3k5aFpHaHZZeTluWlhSQlpHaHZZMDl3ZEdsdmJsTmxZWEpqYUdWeUxuUnpJbDBzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0I3SUZObGJHVmpkR0ZpYkdWV1lXeDFaU0I5SUdaeWIyMGdKMEJuY21GbVlXNWhMMlJoZEdFbk8xeHVhVzF3YjNKMElIc2daMlYwUm5WNmVubFRaV0Z5WTJobGNpQjlJR1p5YjIwZ0p5NHVMM1YwYVd4ekp6dGNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR2RsZEVGa2FHOWpUM0IwYVc5dVUyVmhjbU5vWlhJb2IzQjBhVzl1Y3pvZ1UyVnNaV04wWVdKc1pWWmhiSFZsVzEwcElIdGNiaUFnWTI5dWMzUWdhR0Y1YzNSaFkyc2dQU0J2Y0hScGIyNXpMbTFoY0Nnb2J5a2dQVDRnYnk1c1lXSmxiQ0EvUHlCVGRISnBibWNvYnk1MllXeDFaU2twTzF4dUlDQmpiMjV6ZENCbWRYcDZlVk5sWVhKamFDQTlJR2RsZEVaMWVucDVVMlZoY21Ob1pYSW9hR0Y1YzNSaFkyc3BPMXh1WEc0Z0lISmxkSFZ5YmlBb2MyVmhjbU5vT2lCemRISnBibWNwSUQwK0lHWjFlbnA1VTJWaGNtTm9LSE5sWVhKamFDa3ViV0Z3S0NocEtTQTlQaUJ2Y0hScGIyNXpXMmxkS1R0Y2JuMWNiaUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenRCUVVkUExGTkJRVk1zZFVKQlFYVkNMRTlCUVRSQ0xFVkJRVUU3UVVGRGFrVXNSVUZCUVN4TlFVRk5MRkZCUVZjc1IwRkJRU3hQUVVGQkxFTkJRVkVzUjBGQlNTeERRVUZCTEVOQlFVTXNRMEZCUnl4TFFVRkJPMEZCU201RExFbEJRVUVzU1VGQlFTeEZRVUZCTEVOQlFVRTdRVUZKYzBNc1NVRkJRU3hQUVVGQkxFTkJRVUVzUlVGQlFTeEhRVUZCTEVOQlFVRXNRMEZCUlN4TFFVRkdMRXRCUVVFc1NVRkJRU3hIUVVGQkxFVkJRVUVzUjBGQlZ5eE5RVUZQTEVOQlFVRXNRMEZCUVN4RFFVRkZMRXRCUVVzc1EwRkJRU3hEUVVGQk8wRkJRVUVzUjBGQlF5eERRVUZCTEVOQlFVRTdRVUZET1VRc1JVRkJUU3hOUVVGQkxGZEJRVUVzUjBGQll5eHBRa0ZCYVVJc1VVRkJVU3hEUVVGQkxFTkJRVUU3UVVGRk4wTXNSVUZCVHl4UFFVRkJMRU5CUVVNc1YwRkJiVUlzVjBGQldTeERRVUZCTEUxQlFVMHNSVUZCUlN4SFFVRkpMRU5CUVVFc1EwRkJReXhEUVVGTkxFdEJRVUVzVDBGQlFTeERRVUZSTEVOQlFVVXNRMEZCUVN4RFFVRkJMRU5CUVVFN1FVRkRkRVU3T3pzN0luMD1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUdPLFNBQVMsdUJBQXVCLE9BQTRCLEVBQUE7QUFDakUsRUFBQSxNQUFNLFFBQVcsR0FBQSxPQUFBLENBQVEsR0FBSSxDQUFBLENBQUMsQ0FBRyxLQUFBO0FBSm5DLElBQUEsSUFBQSxFQUFBLENBQUE7QUFJc0MsSUFBQSxPQUFBLENBQUEsS0FBQSxDQUFFLENBQUEsS0FBQSxLQUFGLE9BQUEsRUFBVyxHQUFBLE1BQUEsQ0FBTyxFQUFFLEtBQUssQ0FBQSxDQUFBO0dBQUMsQ0FBQSxDQUFBO0FBQ3hELEVBQUEsTUFBQSxXQUFBLEdBQWMsaUJBQWlCLFFBQVEsQ0FBQSxDQUFBO0FBRXRDLEVBQUEsT0FBQSxDQUFDLFdBQW1CLFdBQVksQ0FBQSxNQUFNLEVBQUUsR0FBSSxDQUFBLENBQUMsQ0FBTSxLQUFBLE9BQUEsQ0FBUSxDQUFFLENBQUEsQ0FBQSxDQUFBO0FBQ3RFOzs7OyJ9
|