From c8749a4c95e059c3f4b81fd366a5529e2d1bcc0d Mon Sep 17 00:00:00 2001 From: Piotr <17101802+thampiotr@users.noreply.github.com> Date: Wed, 23 Jul 2025 12:34:55 +0100 Subject: [PATCH 01/24] fixing scrape mistakes --- .../prometheus/prometheus.scrape.md | 86 ++++++++++--------- .../component/prometheus/scrape/scrape.go | 16 +++- .../prometheus/scrape/scrape_test.go | 51 ++++++++++- 3 files changed, 109 insertions(+), 44 deletions(-) diff --git a/docs/sources/reference/components/prometheus/prometheus.scrape.md b/docs/sources/reference/components/prometheus/prometheus.scrape.md index 6a2e89c39d7..682b3370a07 100644 --- a/docs/sources/reference/components/prometheus/prometheus.scrape.md +++ b/docs/sources/reference/components/prometheus/prometheus.scrape.md @@ -37,47 +37,47 @@ If conflicting attributes are passed, for example, defining both a BearerToken a You can use the following arguments with `prometheus.scrape`: -| Name | Type | Description | Default | Required | -|--------------------------------------|-------------------------|--------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------|----------| -| `forward_to` | `list(MetricsReceiver)` | List of receivers to send scraped metrics to. | | yes | -| `targets` | `list(map(string))` | List of targets to scrape. | | yes | -| `bearer_token_file` | `string` | File containing a bearer token to authenticate with. | | no | -| `bearer_token` | `secret` | Bearer token to authenticate with. | | no | -| `body_size_limit` | `int` | An uncompressed response body larger than this many bytes causes the scrape to fail. 0 means no limit. | | no | -| `convert_classic_histograms_to_nhcb` | `bool` | Whether to convert classic histograms to native histograms with custom buckets (NHCB). | `false` | no | -| `enable_compression` | `bool` | Whether compression is enabled for the scrape. | `true` | no | -| `enable_http2` | `bool` | Whether HTTP2 is supported for requests. | `true` | no | -| `enable_protobuf_negotiation` | `bool` | Deprecated: use `scrape_protocols` instead. | `false` | no | -| `extra_metrics` | `bool` | Whether extra metrics should be generated for scrape targets. | `false` | no | -| `follow_redirects` | `bool` | Whether redirects returned by the server should be followed. | `true` | no | -| `http_headers` | `map(list(secret))` | Custom HTTP headers to be sent along with each request. The map key is the header name. | | no | -| `honor_labels` | `bool` | Indicator whether the scraped metrics should remain unmodified. | `false` | no | -| `honor_timestamps` | `bool` | Indicator whether the scraped timestamps should be respected. | `true` | no | -| `job_name` | `string` | The value to use for the job label if not already set. | component name | no | -| `label_limit` | `uint` | More than this many labels post metric-relabeling causes the scrape to fail. | | no | -| `label_name_length_limit` | `uint` | More than this label name length post metric-relabeling causes the scrape to fail. | | no | -| `label_value_length_limit` | `uint` | More than this label value length post metric-relabeling causes the scrape to fail. | | no | -| `metric_name_escaping_scheme` | `string` | The escaping scheme to use for metric names. See below for available values. | `"allow-utf-8"` | no | -| `metric_name_validation_scheme` | `string` | The validation scheme to use for metric names. See below for available values. | `"utf8"` | no | -| `metrics_path` | `string` | The HTTP resource path on which to fetch metrics from targets. | `"/metrics"` | no | -| `native_histogram_bucket_limit` | `uint` | Native histogram buckets will be merged to stay within this limit. Disabled when set to zero. | `0` | no | -| `native_histogram_min_bucket_factor` | `float64` | If the growth from one bucket to the next is smaller than this, buckets will be merged. Disabled when set to zero. | `0` | no | -| `no_proxy` | `string` | Comma-separated list of IP addresses, CIDR notations, and domain names to exclude from proxying. | | no | -| `params` | `map(list(string))` | A set of query parameters with which the target is scraped. | | no | -| `proxy_connect_header` | `map(list(secret))` | Specifies headers to send to proxies during CONNECT requests. | | no | -| `proxy_from_environment` | `bool` | Use the proxy URL indicated by environment variables. | `false` | no | -| `proxy_url` | `string` | HTTP proxy to send requests through. | | no | -| `sample_limit` | `uint` | More than this many samples post metric-relabeling causes the scrape to fail | | no | -| `scheme` | `string` | The URL scheme with which to fetch metrics from targets. | | no | -| `scrape_classic_histograms` | `bool` | Whether to scrape a classic histogram that's also exposed as a native histogram. | `false` | no | -| `scrape_failure_log_file` | `string` | File to which scrape failures are logged. | `""` | no | -| `scrape_fallback_protocol` | `string` | The fallback protocol to use if the target does not provide a valid Content-Type header. See below for available values. | `PrometheusText0_0_4` | no | -| `scrape_interval` | `duration` | How frequently to scrape the targets of this scrape configuration. | `"60s"` | no | -| `scrape_native_histograms` | `bool` | Whether to scrape native histograms. | `true` | no | -| `scrape_protocols` | `list(string)` | The protocols to negotiate during a scrape, in order of preference. See below for available values. | `["OpenMetricsText1.0.0", "OpenMetricsText0.0.1", "PrometheusText0.0.4"]` | no | -| `scrape_timeout` | `duration` | The timeout for scraping targets of this configuration. | `"10s"` | no | -| `target_limit` | `uint` | More than this many targets after the target relabeling causes the scrapes to fail. | | no | -| `track_timestamps_staleness` | `bool` | Indicator whether to track the staleness of the scraped timestamps. | `false` | no | +| Name | Type | Description | Default | Required | +|--------------------------------------|-------------------------|--------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------|----------| +| `forward_to` | `list(MetricsReceiver)` | List of receivers to send scraped metrics to. | | yes | +| `targets` | `list(map(string))` | List of targets to scrape. | | yes | +| `bearer_token_file` | `string` | File containing a bearer token to authenticate with. | | no | +| `bearer_token` | `secret` | Bearer token to authenticate with. | | no | +| `body_size_limit` | `int` | An uncompressed response body larger than this many bytes causes the scrape to fail. 0 means no limit. | | no | +| `convert_classic_histograms_to_nhcb` | `bool` | Whether to convert classic histograms to native histograms with custom buckets (NHCB). | `false` | no | +| `enable_compression` | `bool` | Whether compression is enabled for the scrape. | `true` | no | +| `enable_http2` | `bool` | Whether HTTP2 is supported for requests. | `true` | no | +| `enable_protobuf_negotiation` | `bool` | Deprecated: use `scrape_protocols` instead. | `false` | no | +| `extra_metrics` | `bool` | Whether extra metrics should be generated for scrape targets. | `false` | no | +| `follow_redirects` | `bool` | Whether redirects returned by the server should be followed. | `true` | no | +| `http_headers` | `map(list(secret))` | Custom HTTP headers to be sent along with each request. The map key is the header name. | | no | +| `honor_labels` | `bool` | Indicator whether the scraped metrics should remain unmodified. | `false` | no | +| `honor_timestamps` | `bool` | Indicator whether the scraped timestamps should be respected. | `true` | no | +| `job_name` | `string` | The value to use for the job label if not already set. | component name | no | +| `label_limit` | `uint` | More than this many labels post metric-relabeling causes the scrape to fail. | | no | +| `label_name_length_limit` | `uint` | More than this label name length post metric-relabeling causes the scrape to fail. | | no | +| `label_value_length_limit` | `uint` | More than this label value length post metric-relabeling causes the scrape to fail. | | no | +| `metric_name_escaping_scheme` | `string` | The escaping scheme to use for metric names. See below for available values. | `"allow-utf-8"` | no | +| `metric_name_validation_scheme` | `string` | The validation scheme to use for metric names. See below for available values. | `"utf8"` | no | +| `metrics_path` | `string` | The HTTP resource path on which to fetch metrics from targets. | `"/metrics"` | no | +| `native_histogram_bucket_limit` | `uint` | Native histogram buckets will be merged to stay within this limit. Disabled when set to zero. | `0` | no | +| `native_histogram_min_bucket_factor` | `float64` | If the growth from one bucket to the next is smaller than this, buckets will be merged. Disabled when set to zero. | `0` | no | +| `no_proxy` | `string` | Comma-separated list of IP addresses, CIDR notations, and domain names to exclude from proxying. | | no | +| `params` | `map(list(string))` | A set of query parameters with which the target is scraped. | | no | +| `proxy_connect_header` | `map(list(secret))` | Specifies headers to send to proxies during CONNECT requests. | | no | +| `proxy_from_environment` | `bool` | Use the proxy URL indicated by environment variables. | `false` | no | +| `proxy_url` | `string` | HTTP proxy to send requests through. | | no | +| `sample_limit` | `uint` | More than this many samples post metric-relabeling causes the scrape to fail | | no | +| `scheme` | `string` | The URL scheme with which to fetch metrics from targets. | | no | +| `scrape_classic_histograms` | `bool` | Whether to scrape a classic histogram that's also exposed as a native histogram. | `false` | no | +| `scrape_failure_log_file` | `string` | File to which scrape failures are logged. | `""` | no | +| `scrape_fallback_protocol` | `string` | The fallback protocol to use if the target does not provide a valid Content-Type header. See below for available values. | `PrometheusText0_0_4` | no | +| `scrape_interval` | `duration` | How frequently to scrape the targets of this scrape configuration. | `"60s"` | no | +| `scrape_native_histograms` | `bool` | Whether to scrape native histograms. | `false` | no | +| `scrape_protocols` | `list(string)` | The protocols to negotiate during a scrape, in order of preference. See below for available values. | `["OpenMetricsText1.0.0", "OpenMetricsText0.0.1", "PrometheusText1.0.0", "PrometheusText0.0.4"]` | no | +| `scrape_timeout` | `duration` | The timeout for scraping targets of this configuration. | `"10s"` | no | +| `target_limit` | `uint` | More than this many targets after the target relabeling causes the scrapes to fail. | | no | +| `track_timestamps_staleness` | `bool` | Indicator whether to track the staleness of the scraped timestamps. | `false` | no | At most, one of the following can be provided: @@ -93,6 +93,7 @@ The following values are supported: * `OpenMetricsText0.0.1` * `OpenMetricsText1.0.0` * `PrometheusProto` +* `PrometheusText1.0.0` * `PrometheusText0.0.4` You can also use the `scrape_fallback_protocol` argument to specify a fallback protocol to use if the target does not provide a valid Content-Type header. @@ -102,6 +103,9 @@ If you were using the deprecated `enable_protobuf_negotiation` argument, switch For now, native histograms are only available through the Prometheus Protobuf exposition format. To scrape native histograms, `scrape_native_histograms` must be set to `true` and the first item in `scrape_protocols` must be `PrometheusProto`. +The default value for `scrape_protocols` changes to `["PrometheusProto", "OpenMetricsText1.0.0", "OpenMetricsText0.0.1", "PrometheusText1.0.0", "PrometheusText0.0.4"]` when +`scrape_native_histograms` is set to `true`. + The `metric_name_validation_scheme` controls how metric names are validated. The following values are supported: * `"utf8"` - Uses UTF-8 validation scheme (default) diff --git a/internal/component/prometheus/scrape/scrape.go b/internal/component/prometheus/scrape/scrape.go index 74c75b46151..533de5d44ff 100644 --- a/internal/component/prometheus/scrape/scrape.go +++ b/internal/component/prometheus/scrape/scrape.go @@ -154,8 +154,8 @@ func (arg *Arguments) SetToDefault() { ScrapeInterval: 1 * time.Minute, // From config.DefaultGlobalConfig ScrapeTimeout: 10 * time.Second, // From config.DefaultGlobalConfig ScrapeProtocols: slices.Clone(defaultScrapeProtocols), - ScrapeFallbackProtocol: string(config.PrometheusText0_0_4), // Use same fallback protocol as Prometheus v2 - ScrapeNativeHistograms: true, + ScrapeFallbackProtocol: string(config.PrometheusText0_0_4), // Use the same fallback protocol as Prometheus v2 + ScrapeNativeHistograms: false, // NOTE: the MetricNameEscapingScheme depends on this, so its default must be set in Validate() function. MetricNameValidationScheme: config.UTF8ValidationConfig, ConvertClassicHistogramsToNHCB: false, @@ -182,6 +182,18 @@ func (arg *Arguments) Validate() error { arg.ScrapeProtocols = slices.Clone(defaultNativeHistogramScrapeProtocols) } + if arg.ScrapeNativeHistograms { + // When scrape_native_histograms is set to true, the default scrape protocols are overridden to + // Proto-first scrape protocols, like in upstream Prometheus. + if reflect.DeepEqual(arg.ScrapeProtocols, defaultScrapeProtocols) { + arg.ScrapeProtocols = slices.Clone(defaultNativeHistogramScrapeProtocols) + } + + if !slices.Contains(arg.ScrapeProtocols, string(config.PrometheusProto)) { + return fmt.Errorf("scrape_native_histograms is set to true, but PrometheusProto is not in scrape_protocols") + } + } + // Validate scrape protocols existing := make(map[string]struct{}) for _, p := range arg.ScrapeProtocols { diff --git a/internal/component/prometheus/scrape/scrape_test.go b/internal/component/prometheus/scrape/scrape_test.go index e7f2c653d9a..fce1928cde1 100644 --- a/internal/component/prometheus/scrape/scrape_test.go +++ b/internal/component/prometheus/scrape/scrape_test.go @@ -290,7 +290,7 @@ func TestAlloyConfigDefaultsAndValidation(t *testing.T) { assertions func(t *testing.T, args Arguments) }{ { - name: "no validation scheme specified", + name: "defaults", config: ` targets = [{ "target1" = "target1" }] forward_to = [] @@ -299,8 +299,57 @@ func TestAlloyConfigDefaultsAndValidation(t *testing.T) { assertions: func(t *testing.T, args Arguments) { require.Equal(t, "utf8", args.MetricNameValidationScheme) require.Equal(t, "allow-utf-8", args.MetricNameEscapingScheme) + require.Equal(t, []string{ + "OpenMetricsText1.0.0", + "OpenMetricsText0.0.1", + "PrometheusText1.0.0", + "PrometheusText0.0.4", + }, args.ScrapeProtocols) + require.Equal(t, "PrometheusText0.0.4", args.ScrapeFallbackProtocol) + require.Equal(t, false, args.ScrapeNativeHistograms) + require.Equal(t, false, args.ConvertClassicHistogramsToNHCB) + require.Equal(t, true, args.EnableCompression) + require.Equal(t, uint(0), args.NativeHistogramBucketLimit) + require.Equal(t, 0.0, args.NativeHistogramMinBucketFactor) }, }, + { + name: "native histogram defaults", + config: ` + targets = [{ "target1" = "target1" }] + forward_to = [] + scrape_native_histograms = true + `, + expectError: false, + assertions: func(t *testing.T, args Arguments) { + require.Equal(t, "utf8", args.MetricNameValidationScheme) + require.Equal(t, "allow-utf-8", args.MetricNameEscapingScheme) + require.Equal(t, []string{ + "PrometheusProto", + "OpenMetricsText1.0.0", + "OpenMetricsText0.0.1", + "PrometheusText1.0.0", + "PrometheusText0.0.4", + }, args.ScrapeProtocols) + require.Equal(t, "PrometheusText0.0.4", args.ScrapeFallbackProtocol) + require.Equal(t, true, args.ScrapeNativeHistograms) + require.Equal(t, false, args.ConvertClassicHistogramsToNHCB) + require.Equal(t, true, args.EnableCompression) + require.Equal(t, uint(0), args.NativeHistogramBucketLimit) + require.Equal(t, 0.0, args.NativeHistogramMinBucketFactor) + }, + }, + { + name: "native histogram missing PrometheusProto", + config: ` + targets = [{ "target1" = "target1" }] + forward_to = [] + scrape_native_histograms = true + scrape_protocols = ["OpenMetricsText1.0.0", "OpenMetricsText0.0.1", "PrometheusText1.0.0"] + `, + expectError: true, + errorContains: `scrape_native_histograms is set to true, but PrometheusProto is not in scrape_protocols`, + }, { name: "valid utf8 with allow-utf-8", config: ` From aae2e796b282484b6345c5ca52b7fe72eadb090d Mon Sep 17 00:00:00 2001 From: Piotr <17101802+thampiotr@users.noreply.github.com> Date: Wed, 23 Jul 2025 12:35:17 +0100 Subject: [PATCH 02/24] fixing worker pool stuck --- .../runtime/internal/controller/loader.go | 6 +- .../runtime/internal/worker/worker_pool.go | 38 +++++++---- .../internal/worker/worker_pool_test.go | 66 ++++++++++++++++--- 3 files changed, 89 insertions(+), 21 deletions(-) diff --git a/internal/runtime/internal/controller/loader.go b/internal/runtime/internal/controller/loader.go index 4c62e98d105..105ea52095f 100644 --- a/internal/runtime/internal/controller/loader.go +++ b/internal/runtime/internal/controller/loader.go @@ -291,7 +291,11 @@ func (l *Loader) Apply(options ApplyOptions) diag.Diagnostics { // Cleanup unregisters any existing metrics and optionally stops the worker pool. func (l *Loader) Cleanup(stopWorkerPool bool) { if stopWorkerPool { - l.workerPool.Stop() + // Wait at most 5 seconds for currently evaluating components to finish. + err := l.workerPool.Stop(time.Second * 5) + if err != nil { + level.Warn(l.log).Log("msg", "timed out stopping worker pool", "err", err) + } } if l.globals.Registerer == nil { return diff --git a/internal/runtime/internal/worker/worker_pool.go b/internal/runtime/internal/worker/worker_pool.go index ee9c27c0c34..be1a0b700c1 100644 --- a/internal/runtime/internal/worker/worker_pool.go +++ b/internal/runtime/internal/worker/worker_pool.go @@ -4,16 +4,19 @@ import ( "fmt" "runtime" "sync" + "time" ) type Pool interface { // Stop stops the worker pool. It does not wait to drain any internal queues, but it does wait for the currently - // running tasks to complete. It must only be called once. - Stop() + // running tasks to complete up to the specified timeout. It must only be called once. + // Returns an error if the timeout is exceeded before all workers have stopped, indicating tasks that + // take longer than timeout to complete. + Stop(timeout time.Duration) error // SubmitWithKey submits a function to be executed by the worker pool, ensuring that: - // * Only one job with given key can be waiting to be executed at the time. This is desired if we don't want to - // run the same task multiple times, e.g. if it's a component update that we only need to run once. - // * Only one job with given key can be running at the time. This is desired when we don't want to duplicate work, + // * Only one job with a given key can be waiting to be executed at the time. This is desired if we don't want to + // run the same task multiple times, e.g., if it's a component update that we only need to run once. + // * Only one job with a given key can be running at the time. This is desired when we don't want to duplicate work, // and we want to protect the pool from a slow task hogging all the workers. // // Note that it is possible to have two tasks with the same key in the pool at the same time: one waiting to be @@ -43,7 +46,7 @@ func NewDefaultWorkerPool() Pool { // NewFixedWorkerPool creates a new Pool with the given number of workers and given max queue size. // The max queue size is the maximum number of tasks that can be queued OR running at the same time. -// The tasks can run on a random worker, but workQueue ensures only one task with given key is running at a time. +// The tasks can run on a random worker, but workQueue ensures only one task with a given key is running at a time. // The pool is automatically started and ready to accept work. To prevent resource leak, Stop() must be called when the // pool is no longer needed. func NewFixedWorkerPool(workersCount int, maxQueueSize int) Pool { @@ -69,9 +72,20 @@ func (w *fixedWorkerPool) QueueSize() int { return w.workQueue.queueSize() } -func (w *fixedWorkerPool) Stop() { +func (w *fixedWorkerPool) Stop(timeout time.Duration) error { close(w.quit) - w.allStopped.Wait() + done := make(chan struct{}) + go func() { + w.allStopped.Wait() + close(done) + }() + + select { + case <-done: + return nil + case <-time.After(timeout): + return fmt.Errorf("worker pool did not stop within %v timeout", timeout) + } } func (w *fixedWorkerPool) start() { @@ -114,7 +128,7 @@ func (w *workQueue) tryEnqueue(key string, f func()) (bool, error) { w.lock.Lock() defer w.lock.Unlock() - // Don't enqueue if same task already waiting + // Don't enqueue if same the task already waiting if _, exists := w.waiting[key]; exists { return false, nil } @@ -144,7 +158,7 @@ func (w *workQueue) taskDone(key string) { } // emitNextTask emits the next eligible task to be run if there is one. It must be called whenever the queue state -// changes (e.g. a task is added or a task finishes). The lock must be held when calling this function. +// changes (e.g., a task is added or a task finishes). The lock must be held when calling this function. func (w *workQueue) emitNextTask() { var ( task func() @@ -168,7 +182,7 @@ func (w *workQueue) emitNextTask() { // Remove the task from waiting and add it to running set. // NOTE: Even though we remove an element from the middle of a collection, we use a slice instead of a linked list. - // This code is NOT identified as a performance hot spot and given that in large Alloy instances we observe max number of + // This code is NOT identified as a performance hot spot and given that in large Alloy instances we observe the max number of // tasks queued to be ~10, the slice is actually faster because it does not allocate memory. See BenchmarkQueue. w.waitingOrder = append(w.waitingOrder[:index], w.waitingOrder[index+1:]...) task = w.waiting[key] @@ -181,7 +195,7 @@ func (w *workQueue) emitNextTask() { task() } - // Emit the task to be run. There will always be space in this buffered channel, because we limit queue size. + // Emit the task to be run. There will always be space in this buffered channel because we limit queue size. w.tasksToRun <- wrapped } diff --git a/internal/runtime/internal/worker/worker_pool_test.go b/internal/runtime/internal/worker/worker_pool_test.go index 7b9b1b6a1e9..c43a66c3260 100644 --- a/internal/runtime/internal/worker/worker_pool_test.go +++ b/internal/runtime/internal/worker/worker_pool_test.go @@ -11,13 +11,15 @@ import ( "go.uber.org/goleak" ) +const testTimeout = 3 * time.Second + func TestWorkerPool(t *testing.T) { t.Run("worker pool", func(t *testing.T) { t.Run("should start and stop cleanly", func(t *testing.T) { defer goleak.VerifyNone(t) pool := NewFixedWorkerPool(4, 1) require.Equal(t, 0, pool.QueueSize()) - defer pool.Stop() + defer pool.Stop(testTimeout) }) t.Run("should reject invalid worker count", func(t *testing.T) { @@ -43,7 +45,7 @@ func TestWorkerPool(t *testing.T) { defer goleak.VerifyNone(t) done := make(chan struct{}) pool := NewFixedWorkerPool(4, 1) - defer pool.Stop() + defer pool.Stop(testTimeout) err := pool.SubmitWithKey("123", func() { done <- struct{}{} @@ -62,7 +64,7 @@ func TestWorkerPool(t *testing.T) { defer goleak.VerifyNone(t) done := make(chan struct{}) pool := NewFixedWorkerPool(4, 1) - defer pool.Stop() + defer pool.Stop(testTimeout) err := pool.SubmitWithKey("testKey", func() { done <- struct{}{} @@ -80,7 +82,7 @@ func TestWorkerPool(t *testing.T) { t.Run("should not queue duplicated keys", func(t *testing.T) { defer goleak.VerifyNone(t) pool := NewFixedWorkerPool(4, 10) - defer pool.Stop() + defer pool.Stop(testTimeout) tasksDone := atomic.Int32{} // First task will block the worker @@ -129,7 +131,7 @@ func TestWorkerPool(t *testing.T) { t.Run("should concurrently process for different keys", func(t *testing.T) { defer goleak.VerifyNone(t) pool := NewFixedWorkerPool(4, 10) - defer pool.Stop() + defer pool.Stop(testTimeout) tasksDone := atomic.Int32{} // First task will block the worker @@ -169,7 +171,7 @@ func TestWorkerPool(t *testing.T) { defer goleak.VerifyNone(t) // Pool with one worker and queue size of 1 - all work goes to one queue pool := NewFixedWorkerPool(1, 2) - defer pool.Stop() + defer pool.Stop(testTimeout) tasksDone := atomic.Int32{} // First task will block the worker @@ -204,7 +206,7 @@ func TestWorkerPool(t *testing.T) { // Queue size is sufficient to queue all tasks pool := NewFixedWorkerPool(3, tasksCount+1) - defer pool.Stop() + defer pool.Stop(testTimeout) tasksDone := atomic.Int32{} // First task will block @@ -240,7 +242,7 @@ func TestWorkerPool(t *testing.T) { // Queue size is sufficient to queue all tasks pool := NewFixedWorkerPool(10, 10) - defer pool.Stop() + defer pool.Stop(testTimeout) tasksDone := atomic.Int32{} // First task will block @@ -278,6 +280,54 @@ func TestWorkerPool(t *testing.T) { return tasksDone.Load() == 2 }, 3*time.Second, 1*time.Millisecond) }) + + t.Run("should timeout when stopping with stuck workers", func(t *testing.T) { + defer goleak.VerifyNone(t) + pool := NewFixedWorkerPool(2, 5) + + // Submit a task that will block indefinitely + blockTask := make(chan struct{}) + taskRunning := make(chan struct{}) + taskDone := make(chan struct{}) + err := pool.SubmitWithKey("blocking-task", func() { + taskRunning <- struct{}{} + <-blockTask // This will block forever + close(taskDone) + }) + require.NoError(t, err) + + // Wait for the task to start running + <-taskRunning + + // Try to stop with a short timeout - should time out + shortTimeout := 100 * time.Millisecond + err = pool.Stop(shortTimeout) + require.Error(t, err) + require.Contains(t, err.Error(), "worker pool did not stop within timeout") + + // Clean up the blocking task + close(blockTask) + <-taskDone + }) + + t.Run("should stop successfully when no tasks are running", func(t *testing.T) { + defer goleak.VerifyNone(t) + pool := NewFixedWorkerPool(2, 5) + + // Submit a quick task that completes immediately + done := make(chan struct{}) + err := pool.SubmitWithKey("quick-task", func() { + done <- struct{}{} + }) + require.NoError(t, err) + + // Wait for the task to complete + <-done + + // Stop should succeed immediately + err = pool.Stop(testTimeout) + require.NoError(t, err) + }) }) } From 8316a6cf3aabe677bb59eec1e80fc4b909eb8550 Mon Sep 17 00:00:00 2001 From: Piotr <17101802+thampiotr@users.noreply.github.com> Date: Wed, 23 Jul 2025 21:30:22 +0100 Subject: [PATCH 03/24] Migrate integration test to new WAL --- .../tests/scrape-prom-metrics/config.alloy | 31 ++++++++++--------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/internal/cmd/integration-tests/tests/scrape-prom-metrics/config.alloy b/internal/cmd/integration-tests/tests/scrape-prom-metrics/config.alloy index 2c4b66dbb97..a1a878c00f9 100644 --- a/internal/cmd/integration-tests/tests/scrape-prom-metrics/config.alloy +++ b/internal/cmd/integration-tests/tests/scrape-prom-metrics/config.alloy @@ -1,28 +1,29 @@ +logging { + level = "debug" +} + +livedebugging {} + prometheus.scrape "scrape_prom_metrics" { targets = [ {"__address__" = "prom-gen:9001"}, ] - forward_to = [prometheus.remote_write.scrape_prom_metrics.receiver, otelcol.receiver.prometheus.scrape_prom_metrics_to_otlp.receiver] + forward_to = [prometheus.write.queue.scrape_prom_metrics.receiver, otelcol.receiver.prometheus.scrape_prom_metrics_to_otlp.receiver] scrape_classic_histograms = true - scrape_protocols = ["PrometheusProto", "OpenMetricsText1.0.0", "OpenMetricsText0.0.1", "PrometheusText0.0.4"] + scrape_native_histograms = true scrape_interval = "1s" scrape_timeout = "500ms" } -prometheus.remote_write "scrape_prom_metrics" { - endpoint { - url = "http://mimir:9009/api/v1/push" - send_native_histograms = true - metadata_config { - send_interval = "1s" +prometheus.write.queue "scrape_prom_metrics" { + endpoint "mimir" { + url = "http://mimir:9009/api/v1/push" + flush_interval = "1s" + batch_count = 10 + external_labels = { + test_name = "scrape_prom_metrics", + } } - queue_config { - max_samples_per_send = 100 - } - } - external_labels = { - test_name = "scrape_prom_metrics", - } } otelcol.receiver.prometheus "scrape_prom_metrics_to_otlp" { From ee6477c3c271370e41d2b14ee5fb8fec76fce41a Mon Sep 17 00:00:00 2001 From: Piotr <17101802+thampiotr@users.noreply.github.com> Date: Wed, 23 Jul 2025 21:30:50 +0100 Subject: [PATCH 04/24] capture argument value more safely --- internal/component/prometheus/scrape/scrape.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/component/prometheus/scrape/scrape.go b/internal/component/prometheus/scrape/scrape.go index 533de5d44ff..c85498847af 100644 --- a/internal/component/prometheus/scrape/scrape.go +++ b/internal/component/prometheus/scrape/scrape.go @@ -531,7 +531,8 @@ func getPromScrapeConfigs(jobName string, c Arguments) *config.ScrapeConfig { dec.MetricNameValidationScheme = c.MetricNameValidationScheme dec.MetricNameEscapingScheme = c.MetricNameEscapingScheme dec.ScrapeFallbackProtocol = config.ScrapeProtocol(c.ScrapeFallbackProtocol) - dec.ConvertClassicHistogramsToNHCB = &c.ConvertClassicHistogramsToNHCB + convertToNHCB := c.ConvertClassicHistogramsToNHCB + dec.ConvertClassicHistogramsToNHCB = &convertToNHCB dec.EnableCompression = c.EnableCompression dec.NativeHistogramBucketLimit = c.NativeHistogramBucketLimit dec.NativeHistogramMinBucketFactor = c.NativeHistogramMinBucketFactor From cdbd30f00a0f2d01b29bc80c3931e22de786d9c9 Mon Sep 17 00:00:00 2001 From: Piotr <17101802+thampiotr@users.noreply.github.com> Date: Tue, 29 Jul 2025 10:29:07 +0100 Subject: [PATCH 05/24] add parser issue test --- .../prometheus/scrape/parser_issue_test.go | 171 ++++++++++++++++++ .../scrape/testdata/proto-base64.txt | 1 + 2 files changed, 172 insertions(+) create mode 100644 internal/component/prometheus/scrape/parser_issue_test.go create mode 100644 internal/component/prometheus/scrape/testdata/proto-base64.txt diff --git a/internal/component/prometheus/scrape/parser_issue_test.go b/internal/component/prometheus/scrape/parser_issue_test.go new file mode 100644 index 00000000000..367d4126d94 --- /dev/null +++ b/internal/component/prometheus/scrape/parser_issue_test.go @@ -0,0 +1,171 @@ +package scrape + +import ( + "encoding/base64" + "errors" + "io" + "os" + "testing" + + "github.com/prometheus/common/model" + "github.com/prometheus/prometheus/model/exemplar" + "github.com/prometheus/prometheus/model/histogram" + "github.com/prometheus/prometheus/model/labels" + "github.com/prometheus/prometheus/model/textparse" + "github.com/stretchr/testify/require" +) + +func TestProtobufParse2(t *testing.T) { + // inputBuf := createTestProtoBuf(t) + // bb := inputBuf.Bytes() + + // Read test data from file + bb, err := os.ReadFile("testdata/proto-base64.txt") + if err != nil { + t.Fatal(err) + } + // Decode base64 + bb, err = base64.StdEncoding.DecodeString(string(bb)) + if err != nil { + t.Fatal(err) + } + + scenarios := []struct { + name string + parser textparse.Parser + expected []parsedEntry + }{ + { + name: "parse classic and native buckets", + parser: textparse.NewProtobufParser(bb, true, nil), + }, + { + name: "don't parse classic and native buckets", + parser: textparse.NewProtobufParser(bb, false, nil), + }, + { + name: "parse classic and native buckets with symbol table", + parser: textparse.NewProtobufParser(bb, true, labels.NewSymbolTable()), + }, + { + name: "don't parse classic and native buckets with symbol table", + parser: textparse.NewProtobufParser(bb, false, labels.NewSymbolTable()), + }, + } + + for _, scenario := range scenarios { + t.Run(scenario.name, func(t *testing.T) { + p := scenario.parser + testParse2(t, p) + }) + } +} + +func testParse2(t *testing.T, p textparse.Parser) (ret []parsedEntry) { + t.Helper() + + var ( + lastLabels labels.Labels + lastLabelsStr = "{}" + ) + + for { + require.True(t, lastLabels.IsValid(model.LegacyValidation)) + require.Equal(t, lastLabelsStr, lastLabels.String()) + + et, err := p.Next() + if errors.Is(err, io.EOF) { + break + } + require.NoError(t, err) + + var got parsedEntry + var m []byte + + require.True(t, lastLabels.IsValid(model.LegacyValidation)) + require.Equal(t, lastLabelsStr, lastLabels.String()) + + switch et { + case textparse.EntryInvalid: + t.Fatal("entry invalid not expected") + case textparse.EntrySeries, textparse.EntryHistogram: + var ts *int64 + if et == textparse.EntrySeries { + m, ts, got.v = p.Series() + } else { + m, ts, got.shs, got.fhs = p.Histogram() + } + if ts != nil { + got.t = nil + } + got.m = string(m) + + p.Labels(&lastLabels) + _ = lastLabels.Hash() + _ = lastLabels.IsEmpty() + _ = lastLabels.Has(labels.MetricName) + require.True(t, lastLabels.IsValid(model.LegacyValidation)) + + lb := labels.NewBuilder(lastLabels) + lb.Set("foo", "bar") + lb.Set("another", "label") + lb.Set("zoo", "animal") + lastLabels = lb.Labels() + + lastLabelsStr = lastLabels.String() + got.lset = lastLabels + t.Log(lastLabelsStr) + + got.ct = p.CreatedTimestamp() + + for e := (exemplar.Exemplar{}); p.Exemplar(&e); { + got.es = append(got.es, e) + } + case textparse.EntryType: + m, got.typ = p.Type() + got.m = string(m) + + case textparse.EntryHelp: + m, h := p.Help() + got.m = string(m) + got.help = string(h) + + case textparse.EntryUnit: + m, u := p.Unit() + got.m = string(m) + got.unit = string(u) + + case textparse.EntryComment: + got.comment = string(p.Comment()) + } + ret = append(ret, got) + } + return ret +} + +type parsedEntry struct { + // In all but EntryComment, EntryInvalid. + m string + + // In EntryHistogram. + shs *histogram.Histogram + fhs *histogram.FloatHistogram + + // In EntrySeries. + v float64 + + // In EntrySeries and EntryHistogram. + lset labels.Labels + t *int64 + es []exemplar.Exemplar + ct int64 + + // In EntryType. + typ model.MetricType + // In EntryHelp. + help string + // In EntryUnit. + unit string + // In EntryComment. + comment string +} diff --git a/internal/component/prometheus/scrape/testdata/proto-base64.txt b/internal/component/prometheus/scrape/testdata/proto-base64.txt new file mode 100644 index 00000000000..b60c23f8b60 --- /dev/null +++ b/internal/component/prometheus/scrape/testdata/proto-base64.txt @@ -0,0 +1 @@ +QwofYW5hbHl0aWNzX3N1bW1hcmllc19idWZmZXJfc2l6ZRIAGAEiHAoPCgRuYW1lEgdkZWZhdWx0EgkJAAAAAAAAAABiCithbmFseXRpY3Nfc3VtbWFyaWVzX3JvbGx1cF9kdXJhdGlvbl9zZWNvbmRzEgAYAiIvIi0IABEAAAAAAAAAABoSCQAAAAAAAOA/EQEAAAAAAPh/IgwIk42ExAYQ9teI0gM7CihhbmFseXRpY3Nfc3VtbWFyaWVzX3JvbGx1cF9wcmV2aW91c190aW1lEgAYASILEgkJAAAAAAAAAABqChxkZXByZWNhdGVkX2ZsYWdzX2ludXNlX3RvdGFsEi1UaGUgbnVtYmVyIG9mIGRlcHJlY2F0ZWQgZmxhZ3MgY3VycmVudGx5IHNldC4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCLzsm0A6ABCiBnb19jZ29fZ29fdG9fY19jYWxsc19jYWxsc190b3RhbBJfQ291bnQgb2YgY2FsbHMgbWFkZSBmcm9tIEdvIHRvIEMgYnkgdGhlIGN1cnJlbnQgcHJvY2Vzcy4gU291cmNlZCBmcm9tIC9jZ28vZ28tdG8tYy1jYWxsczpjYWxscy4YACIZGhcJAAAAAAAA8D8aDAiTjYTEBhCZ9KC7A5QDCi9nb19jcHVfY2xhc3Nlc19nY19tYXJrX2Fzc2lzdF9jcHVfc2Vjb25kc190b3RhbBLDAkVzdGltYXRlZCB0b3RhbCBDUFUgdGltZSBnb3JvdXRpbmVzIHNwZW50IHBlcmZvcm1pbmcgR0MgdGFza3MgdG8gYXNzaXN0IHRoZSBHQyBhbmQgcHJldmVudCBpdCBmcm9tIGZhbGxpbmcgYmVoaW5kIHRoZSBhcHBsaWNhdGlvbi4gVGhpcyBtZXRyaWMgaXMgYW4gb3ZlcmVzdGltYXRlLCBhbmQgbm90IGRpcmVjdGx5IGNvbXBhcmFibGUgdG8gc3lzdGVtIENQVSB0aW1lIG1lYXN1cmVtZW50cy4gQ29tcGFyZSBvbmx5IHdpdGggb3RoZXIgL2NwdS9jbGFzc2VzIG1ldHJpY3MuIFNvdXJjZWQgZnJvbSAvY3B1L2NsYXNzZXMvZ2MvbWFyay9hc3Npc3Q6Y3B1LXNlY29uZHMuGAAiGRoXCbY6O0ScgbU/GgwIk42ExAYQyKChuwONAwoyZ29fY3B1X2NsYXNzZXNfZ2NfbWFya19kZWRpY2F0ZWRfY3B1X3NlY29uZHNfdG90YWwSuQJFc3RpbWF0ZWQgdG90YWwgQ1BVIHRpbWUgc3BlbnQgcGVyZm9ybWluZyBHQyB0YXNrcyBvbiBwcm9jZXNzb3JzIChhcyBkZWZpbmVkIGJ5IEdPTUFYUFJPQ1MpIGRlZGljYXRlZCB0byB0aG9zZSB0YXNrcy4gVGhpcyBtZXRyaWMgaXMgYW4gb3ZlcmVzdGltYXRlLCBhbmQgbm90IGRpcmVjdGx5IGNvbXBhcmFibGUgdG8gc3lzdGVtIENQVSB0aW1lIG1lYXN1cmVtZW50cy4gQ29tcGFyZSBvbmx5IHdpdGggb3RoZXIgL2NwdS9jbGFzc2VzIG1ldHJpY3MuIFNvdXJjZWQgZnJvbSAvY3B1L2NsYXNzZXMvZ2MvbWFyay9kZWRpY2F0ZWQ6Y3B1LXNlY29uZHMuGAAiGRoXCa698eOfKfE/GgwIk42ExAYQoL+huwP1AwotZ29fY3B1X2NsYXNzZXNfZ2NfbWFya19pZGxlX2NwdV9zZWNvbmRzX3RvdGFsEqYDRXN0aW1hdGVkIHRvdGFsIENQVSB0aW1lIHNwZW50IHBlcmZvcm1pbmcgR0MgdGFza3Mgb24gc3BhcmUgQ1BVIHJlc291cmNlcyB0aGF0IHRoZSBHbyBzY2hlZHVsZXIgY291bGQgbm90IG90aGVyd2lzZSBmaW5kIGEgdXNlIGZvci4gVGhpcyBzaG91bGQgYmUgc3VidHJhY3RlZCBmcm9tIHRoZSB0b3RhbCBHQyBDUFUgdGltZSB0byBvYnRhaW4gYSBtZWFzdXJlIG9mIGNvbXB1bHNvcnkgR0MgQ1BVIHRpbWUuIFRoaXMgbWV0cmljIGlzIGFuIG92ZXJlc3RpbWF0ZSwgYW5kIG5vdCBkaXJlY3RseSBjb21wYXJhYmxlIHRvIHN5c3RlbSBDUFUgdGltZSBtZWFzdXJlbWVudHMuIENvbXBhcmUgb25seSB3aXRoIG90aGVyIC9jcHUvY2xhc3NlcyBtZXRyaWNzLiBTb3VyY2VkIGZyb20gL2NwdS9jbGFzc2VzL2djL21hcmsvaWRsZTpjcHUtc2Vjb25kcy4YACIZGhcJr7NCDbbb9z8aDAiTjYTEBhCM2aG7A+UECilnb19jcHVfY2xhc3Nlc19nY19wYXVzZV9jcHVfc2Vjb25kc190b3RhbBKaBEVzdGltYXRlZCB0b3RhbCBDUFUgdGltZSBzcGVudCB3aXRoIHRoZSBhcHBsaWNhdGlvbiBwYXVzZWQgYnkgdGhlIEdDLiBFdmVuIGlmIG9ubHkgb25lIHRocmVhZCBpcyBydW5uaW5nIGR1cmluZyB0aGUgcGF1c2UsIHRoaXMgaXMgY29tcHV0ZWQgYXMgR09NQVhQUk9DUyB0aW1lcyB0aGUgcGF1c2UgbGF0ZW5jeSBiZWNhdXNlIG5vdGhpbmcgZWxzZSBjYW4gYmUgZXhlY3V0aW5nLiBUaGlzIGlzIHRoZSBleGFjdCBzdW0gb2Ygc2FtcGxlcyBpbiAvc2NoZWQvcGF1c2VzL3RvdGFsL2djOnNlY29uZHMgaWYgZWFjaCBzYW1wbGUgaXMgbXVsdGlwbGllZCBieSBHT01BWFBST0NTIGF0IHRoZSB0aW1lIGl0IGlzIHRha2VuLiBUaGlzIG1ldHJpYyBpcyBhbiBvdmVyZXN0aW1hdGUsIGFuZCBub3QgZGlyZWN0bHkgY29tcGFyYWJsZSB0byBzeXN0ZW0gQ1BVIHRpbWUgbWVhc3VyZW1lbnRzLiBDb21wYXJlIG9ubHkgd2l0aCBvdGhlciAvY3B1L2NsYXNzZXMgbWV0cmljcy4gU291cmNlZCBmcm9tIC9jcHUvY2xhc3Nlcy9nYy9wYXVzZTpjcHUtc2Vjb25kcy4YACIZGhcJmBilLam4sT8aDAiTjYTEBhD196G7A+ACCilnb19jcHVfY2xhc3Nlc19nY190b3RhbF9jcHVfc2Vjb25kc190b3RhbBKVAkVzdGltYXRlZCB0b3RhbCBDUFUgdGltZSBzcGVudCBwZXJmb3JtaW5nIEdDIHRhc2tzLiBUaGlzIG1ldHJpYyBpcyBhbiBvdmVyZXN0aW1hdGUsIGFuZCBub3QgZGlyZWN0bHkgY29tcGFyYWJsZSB0byBzeXN0ZW0gQ1BVIHRpbWUgbWVhc3VyZW1lbnRzLiBDb21wYXJlIG9ubHkgd2l0aCBvdGhlciAvY3B1L2NsYXNzZXMgbWV0cmljcy4gU3VtIG9mIGFsbCBtZXRyaWNzIGluIC9jcHUvY2xhc3Nlcy9nYy4gU291cmNlZCBmcm9tIC9jcHUvY2xhc3Nlcy9nYy90b3RhbDpjcHUtc2Vjb25kcy4YACIZGhcJSTspJH28BUAaDAiTjYTEBhDejKK7A5sDCiVnb19jcHVfY2xhc3Nlc19pZGxlX2NwdV9zZWNvbmRzX3RvdGFsEtQCRXN0aW1hdGVkIHRvdGFsIGF2YWlsYWJsZSBDUFUgdGltZSBub3Qgc3BlbnQgZXhlY3V0aW5nIGFueSBHbyBvciBHbyBydW50aW1lIGNvZGUuIEluIG90aGVyIHdvcmRzLCB0aGUgcGFydCBvZiAvY3B1L2NsYXNzZXMvdG90YWw6Y3B1LXNlY29uZHMgdGhhdCB3YXMgdW51c2VkLiBUaGlzIG1ldHJpYyBpcyBhbiBvdmVyZXN0aW1hdGUsIGFuZCBub3QgZGlyZWN0bHkgY29tcGFyYWJsZSB0byBzeXN0ZW0gQ1BVIHRpbWUgbWVhc3VyZW1lbnRzLiBDb21wYXJlIG9ubHkgd2l0aCBvdGhlciAvY3B1L2NsYXNzZXMgbWV0cmljcy4gU291cmNlZCBmcm9tIC9jcHUvY2xhc3Nlcy9pZGxlOmNwdS1zZWNvbmRzLhgAIhkaFwl0R4BMRtGjQBoMCJONhMQGENCiorsDmQMKMGdvX2NwdV9jbGFzc2VzX3NjYXZlbmdlX2Fzc2lzdF9jcHVfc2Vjb25kc190b3RhbBLHAkVzdGltYXRlZCB0b3RhbCBDUFUgdGltZSBzcGVudCByZXR1cm5pbmcgdW51c2VkIG1lbW9yeSB0byB0aGUgdW5kZXJseWluZyBwbGF0Zm9ybSBpbiByZXNwb25zZSBlYWdlcmx5IGluIHJlc3BvbnNlIHRvIG1lbW9yeSBwcmVzc3VyZS4gVGhpcyBtZXRyaWMgaXMgYW4gb3ZlcmVzdGltYXRlLCBhbmQgbm90IGRpcmVjdGx5IGNvbXBhcmFibGUgdG8gc3lzdGVtIENQVSB0aW1lIG1lYXN1cmVtZW50cy4gQ29tcGFyZSBvbmx5IHdpdGggb3RoZXIgL2NwdS9jbGFzc2VzIG1ldHJpY3MuIFNvdXJjZWQgZnJvbSAvY3B1L2NsYXNzZXMvc2NhdmVuZ2UvYXNzaXN0OmNwdS1zZWNvbmRzLhgAIhkaFwkzUhVxP4KQPhoMCJONhMQGEKK7orsDigMKNGdvX2NwdV9jbGFzc2VzX3NjYXZlbmdlX2JhY2tncm91bmRfY3B1X3NlY29uZHNfdG90YWwStAJFc3RpbWF0ZWQgdG90YWwgQ1BVIHRpbWUgc3BlbnQgcGVyZm9ybWluZyBiYWNrZ3JvdW5kIHRhc2tzIHRvIHJldHVybiB1bnVzZWQgbWVtb3J5IHRvIHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtLiBUaGlzIG1ldHJpYyBpcyBhbiBvdmVyZXN0aW1hdGUsIGFuZCBub3QgZGlyZWN0bHkgY29tcGFyYWJsZSB0byBzeXN0ZW0gQ1BVIHRpbWUgbWVhc3VyZW1lbnRzLiBDb21wYXJlIG9ubHkgd2l0aCBvdGhlciAvY3B1L2NsYXNzZXMgbWV0cmljcy4gU291cmNlZCBmcm9tIC9jcHUvY2xhc3Nlcy9zY2F2ZW5nZS9iYWNrZ3JvdW5kOmNwdS1zZWNvbmRzLhgAIhkaFwkTc6HWWraDPxoMCJONhMQGENbWorsDpAMKL2dvX2NwdV9jbGFzc2VzX3NjYXZlbmdlX3RvdGFsX2NwdV9zZWNvbmRzX3RvdGFsEtMCRXN0aW1hdGVkIHRvdGFsIENQVSB0aW1lIHNwZW50IHBlcmZvcm1pbmcgdGFza3MgdGhhdCByZXR1cm4gdW51c2VkIG1lbW9yeSB0byB0aGUgdW5kZXJseWluZyBwbGF0Zm9ybS4gVGhpcyBtZXRyaWMgaXMgYW4gb3ZlcmVzdGltYXRlLCBhbmQgbm90IGRpcmVjdGx5IGNvbXBhcmFibGUgdG8gc3lzdGVtIENQVSB0aW1lIG1lYXN1cmVtZW50cy4gQ29tcGFyZSBvbmx5IHdpdGggb3RoZXIgL2NwdS9jbGFzc2VzIG1ldHJpY3MuIFN1bSBvZiBhbGwgbWV0cmljcyBpbiAvY3B1L2NsYXNzZXMvc2NhdmVuZ2UuIFNvdXJjZWQgZnJvbSAvY3B1L2NsYXNzZXMvc2NhdmVuZ2UvdG90YWw6Y3B1LXNlY29uZHMuGAAiGRoXCT5VINt7toM/GgwIk42ExAYQnO6iuwPsAwomZ29fY3B1X2NsYXNzZXNfdG90YWxfY3B1X3NlY29uZHNfdG90YWwSpANFc3RpbWF0ZWQgdG90YWwgYXZhaWxhYmxlIENQVSB0aW1lIGZvciB1c2VyIEdvIGNvZGUgb3IgdGhlIEdvIHJ1bnRpbWUsIGFzIGRlZmluZWQgYnkgR09NQVhQUk9DUy4gSW4gb3RoZXIgd29yZHMsIEdPTUFYUFJPQ1MgaW50ZWdyYXRlZCBvdmVyIHRoZSB3YWxsLWNsb2NrIGR1cmF0aW9uIHRoaXMgcHJvY2VzcyBoYXMgYmVlbiBleGVjdXRpbmcgZm9yLiBUaGlzIG1ldHJpYyBpcyBhbiBvdmVyZXN0aW1hdGUsIGFuZCBub3QgZGlyZWN0bHkgY29tcGFyYWJsZSB0byBzeXN0ZW0gQ1BVIHRpbWUgbWVhc3VyZW1lbnRzLiBDb21wYXJlIG9ubHkgd2l0aCBvdGhlciAvY3B1L2NsYXNzZXMgbWV0cmljcy4gU3VtIG9mIGFsbCBtZXRyaWNzIGluIC9jcHUvY2xhc3Nlcy4gU291cmNlZCBmcm9tIC9jcHUvY2xhc3Nlcy90b3RhbDpjcHUtc2Vjb25kcy4YACIZGhcJOfoHreEjpEAaDAiTjYTEBhChiKO7A/sCCiVnb19jcHVfY2xhc3Nlc191c2VyX2NwdV9zZWNvbmRzX3RvdGFsErQCRXN0aW1hdGVkIHRvdGFsIENQVSB0aW1lIHNwZW50IHJ1bm5pbmcgdXNlciBHbyBjb2RlLiBUaGlzIG1heSBhbHNvIGluY2x1ZGUgc29tZSBzbWFsbCBhbW91bnQgb2YgdGltZSBzcGVudCBpbiB0aGUgR28gcnVudGltZS4gVGhpcyBtZXRyaWMgaXMgYW4gb3ZlcmVzdGltYXRlLCBhbmQgbm90IGRpcmVjdGx5IGNvbXBhcmFibGUgdG8gc3lzdGVtIENQVSB0aW1lIG1lYXN1cmVtZW50cy4gQ29tcGFyZSBvbmx5IHdpdGggb3RoZXIgL2NwdS9jbGFzc2VzIG1ldHJpY3MuIFNvdXJjZWQgZnJvbSAvY3B1L2NsYXNzZXMvdXNlcjpjcHUtc2Vjb25kcy4YACIZGhcJgWvs59RJQ0AaDAiTjYTEBhCTnaO7A60BCiZnb19nY19jeWNsZXNfYXV0b21hdGljX2djX2N5Y2xlc190b3RhbBJmQ291bnQgb2YgY29tcGxldGVkIEdDIGN5Y2xlcyBnZW5lcmF0ZWQgYnkgdGhlIEdvIHJ1bnRpbWUuIFNvdXJjZWQgZnJvbSAvZ2MvY3ljbGVzL2F1dG9tYXRpYzpnYy1jeWNsZXMuGAAiGRoXCQAAAAAAAEJAGgwIk42ExAYQg7ijuwOlAQojZ29fZ2NfY3ljbGVzX2ZvcmNlZF9nY19jeWNsZXNfdG90YWwSYUNvdW50IG9mIGNvbXBsZXRlZCBHQyBjeWNsZXMgZm9yY2VkIGJ5IHRoZSBhcHBsaWNhdGlvbi4gU291cmNlZCBmcm9tIC9nYy9jeWNsZXMvZm9yY2VkOmdjLWN5Y2xlcy4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhDiz6O7A40BCiJnb19nY19jeWNsZXNfdG90YWxfZ2NfY3ljbGVzX3RvdGFsEkpDb3VudCBvZiBhbGwgY29tcGxldGVkIEdDIGN5Y2xlcy4gU291cmNlZCBmcm9tIC9nYy9jeWNsZXMvdG90YWw6Z2MtY3ljbGVzLhgAIhkaFwkAAAAAAABCQBoMCJONhMQGELblo7sD5wEKFmdvX2djX2R1cmF0aW9uX3NlY29uZHMSWEEgc3VtbWFyeSBvZiB0aGUgd2FsbC10aW1lIHBhdXNlIChzdG9wLXRoZS13b3JsZCkgZHVyYXRpb24gaW4gZ2FyYmFnZSBjb2xsZWN0aW9uIGN5Y2xlcy4YAiJxIm8IJBEOQdPnqkaFPxoSCQAAAAAAAAAAEe1XKj0N9wU/GhIJAAAAAAAA0D8RYga7RYZzEj8aEgkAAAAAAADgPxGXSPqYNc8WPxoSCQAAAAAAAOg/Ea1h335b2Cw/GhIJAAAAAAAA8D8RvVyRhr3KZj/oAQoSZ29fZ2NfZ29nY19wZXJjZW50EsIBSGVhcCBzaXplIHRhcmdldCBwZXJjZW50YWdlIGNvbmZpZ3VyZWQgYnkgdGhlIHVzZXIsIG90aGVyd2lzZSAxMDAuIFRoaXMgdmFsdWUgaXMgc2V0IGJ5IHRoZSBHT0dDIGVudmlyb25tZW50IHZhcmlhYmxlLCBhbmQgdGhlIHJ1bnRpbWUvZGVidWcuU2V0R0NQZXJjZW50IGZ1bmN0aW9uLiBTb3VyY2VkIGZyb20gL2djL2dvZ2M6cGVyY2VudC4YASILEgkJAAAAAAAAWUD+AQoWZ29fZ2NfZ29tZW1saW1pdF9ieXRlcxLUAUdvIHJ1bnRpbWUgbWVtb3J5IGxpbWl0IGNvbmZpZ3VyZWQgYnkgdGhlIHVzZXIsIG90aGVyd2lzZSBtYXRoLk1heEludDY0LiBUaGlzIHZhbHVlIGlzIHNldCBieSB0aGUgR09NRU1MSU1JVCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgYW5kIHRoZSBydW50aW1lL2RlYnVnLlNldE1lbW9yeUxpbWl0IGZ1bmN0aW9uLiBTb3VyY2VkIGZyb20gL2djL2dvbWVtbGltaXQ6Ynl0ZXMuGAEiCxIJCQAAwMzMzORB2wMKH2dvX2djX2hlYXBfYWxsb2NzX2J5X3NpemVfYnl0ZXMS8gFEaXN0cmlidXRpb24gb2YgaGVhcCBhbGxvY2F0aW9ucyBieSBhcHByb3hpbWF0ZSBzaXplLiBCdWNrZXQgY291bnRzIGluY3JlYXNlIG1vbm90b25pY2FsbHkuIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGluY2x1ZGUgdGlueSBvYmplY3RzIGFzIGRlZmluZWQgYnkgL2djL2hlYXAvdGlueS9hbGxvY3M6b2JqZWN0cywgb25seSB0aW55IGJsb2Nrcy4gU291cmNlZCBmcm9tIC9nYy9oZWFwL2FsbG9jcy1ieS1zaXplOmJ5dGVzLhgEIsABOr0BCJD57AQRAAAAEmsK2EEaDQii0RkR////////IUAaDgiR9pECEf///////zhAGg4Ir8++AxH//////z9QQBoOCMienQQR//////8fYkAaDgjS48wEEf//////D3RAGg4Il/rnBBH//////weGQBoOCJLn6gQR//////8DmEAaDgjWz+sEEf//////AalAGg4I9pLsBBH//////4C5QBoOCPe17AQR/////3+AykAaDgibx+wEEf////8/oNpApAEKHWdvX2djX2hlYXBfYWxsb2NzX2J5dGVzX3RvdGFsEmZDdW11bGF0aXZlIHN1bSBvZiBtZW1vcnkgYWxsb2NhdGVkIHRvIHRoZSBoZWFwIGJ5IHRoZSBhcHBsaWNhdGlvbi4gU291cmNlZCBmcm9tIC9nYy9oZWFwL2FsbG9jczpieXRlcy4YACIZGhcJAAAAEmsK2EEaDAiTjYTEBhDk0qS7A5QCCh9nb19nY19oZWFwX2FsbG9jc19vYmplY3RzX3RvdGFsEtMBQ3VtdWxhdGl2ZSBjb3VudCBvZiBoZWFwIGFsbG9jYXRpb25zIHRyaWdnZXJlZCBieSB0aGUgYXBwbGljYXRpb24uIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGluY2x1ZGUgdGlueSBvYmplY3RzIGFzIGRlZmluZWQgYnkgL2djL2hlYXAvdGlueS9hbGxvY3M6b2JqZWN0cywgb25seSB0aW55IGJsb2Nrcy4gU291cmNlZCBmcm9tIC9nYy9oZWFwL2FsbG9jczpvYmplY3RzLhgAIhkaFwkAAAAAkmdjQRoMCJONhMQGEJDmpLsD3wMKHmdvX2djX2hlYXBfZnJlZXNfYnlfc2l6ZV9ieXRlcxL3AURpc3RyaWJ1dGlvbiBvZiBmcmVlZCBoZWFwIGFsbG9jYXRpb25zIGJ5IGFwcHJveGltYXRlIHNpemUuIEJ1Y2tldCBjb3VudHMgaW5jcmVhc2UgbW9ub3RvbmljYWxseS4gTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgaW5jbHVkZSB0aW55IG9iamVjdHMgYXMgZGVmaW5lZCBieSAvZ2MvaGVhcC90aW55L2FsbG9jczpvYmplY3RzLCBvbmx5IHRpbnkgYmxvY2tzLiBTb3VyY2VkIGZyb20gL2djL2hlYXAvZnJlZXMtYnktc2l6ZTpieXRlcy4YBCLAATq9AQiEgPcDEQAAAJYz0tNBGg0I4PoUEf///////yFAGg4IiZrjARH///////84QBoOCOar6wIR//////8/UEAaDgiu6rUDEf//////H2JAGg4I2erdAxH//////w90QBoOCMHI8wMR//////8HhkAaDgiquPUDEf//////A5hAGg4Is//1AxH//////wGpQBoOCPmn9gMR//////+AuUAaDgjpw/YDEf////9/gMpAGg4Ir9H2AxH/////P6DaQJ0BChxnb19nY19oZWFwX2ZyZWVzX2J5dGVzX3RvdGFsEmBDdW11bGF0aXZlIHN1bSBvZiBoZWFwIG1lbW9yeSBmcmVlZCBieSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IuIFNvdXJjZWQgZnJvbSAvZ2MvaGVhcC9mcmVlczpieXRlcy4YACIZGhcJAAAAljPS00EaDAiTjYTEBhC2k6W7A6YCCh5nb19nY19oZWFwX2ZyZWVzX29iamVjdHNfdG90YWwS5gFDdW11bGF0aXZlIGNvdW50IG9mIGhlYXAgYWxsb2NhdGlvbnMgd2hvc2Ugc3RvcmFnZSB3YXMgZnJlZWQgYnkgdGhlIGdhcmJhZ2UgY29sbGVjdG9yLiBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBpbmNsdWRlIHRpbnkgb2JqZWN0cyBhcyBkZWZpbmVkIGJ5IC9nYy9oZWFwL3RpbnkvYWxsb2NzOm9iamVjdHMsIG9ubHkgdGlueSBibG9ja3MuIFNvdXJjZWQgZnJvbSAvZ2MvaGVhcC9mcmVlczpvYmplY3RzLhgAIhkaFwkAAAAAAXBfQRoMCJONhMQGELy1pbsDdwoVZ29fZ2NfaGVhcF9nb2FsX2J5dGVzEk9IZWFwIHNpemUgdGFyZ2V0IGZvciB0aGUgZW5kIG9mIHRoZSBHQyBjeWNsZS4gU291cmNlZCBmcm9tIC9nYy9oZWFwL2dvYWw6Ynl0ZXMuGAEiCxIJCQAAAJrix7NBkwEKFWdvX2djX2hlYXBfbGl2ZV9ieXRlcxJrSGVhcCBtZW1vcnkgb2NjdXBpZWQgYnkgbGl2ZSBvYmplY3RzIHRoYXQgd2VyZSBtYXJrZWQgYnkgdGhlIHByZXZpb3VzIEdDLiBTb3VyY2VkIGZyb20gL2djL2hlYXAvbGl2ZTpieXRlcy4YASILEgkJAAAAcE2Oo0GOAQoaZ29fZ2NfaGVhcF9vYmplY3RzX29iamVjdHMSYU51bWJlciBvZiBvYmplY3RzLCBsaXZlIG9yIHVuc3dlcHQsIG9jY3VweWluZyBoZWFwIG1lbW9yeS4gU291cmNlZCBmcm9tIC9nYy9oZWFwL29iamVjdHM6b2JqZWN0cy4YASILEgkJAAAAAIx8PUGOAwokZ29fZ2NfaGVhcF90aW55X2FsbG9jc19vYmplY3RzX3RvdGFsEsgCQ291bnQgb2Ygc21hbGwgYWxsb2NhdGlvbnMgdGhhdCBhcmUgcGFja2VkIHRvZ2V0aGVyIGludG8gYmxvY2tzLiBUaGVzZSBhbGxvY2F0aW9ucyBhcmUgY291bnRlZCBzZXBhcmF0ZWx5IGZyb20gb3RoZXIgYWxsb2NhdGlvbnMgYmVjYXVzZSBlYWNoIGluZGl2aWR1YWwgYWxsb2NhdGlvbiBpcyBub3QgdHJhY2tlZCBieSB0aGUgcnVudGltZSwgb25seSB0aGVpciBibG9jay4gRWFjaCBibG9jayBpcyBhbHJlYWR5IGFjY291bnRlZCBmb3IgaW4gYWxsb2NzLWJ5LXNpemUgYW5kIGZyZWVzLWJ5LXNpemUuIFNvdXJjZWQgZnJvbSAvZ2MvaGVhcC90aW55L2FsbG9jczpvYmplY3RzLhgAIhkaFwkAAAAAsB0sQRoMCJONhMQGEK3+pbsDzgMKI2dvX2djX2xpbWl0ZXJfbGFzdF9lbmFibGVkX2djX2N5Y2xlEpcDR0MgY3ljbGUgdGhlIGxhc3QgdGltZSB0aGUgR0MgQ1BVIGxpbWl0ZXIgd2FzIGVuYWJsZWQuIFRoaXMgbWV0cmljIGlzIHVzZWZ1bCBmb3IgZGlhZ25vc2luZyB0aGUgcm9vdCBjYXVzZSBvZiBhbiBvdXQtb2YtbWVtb3J5IGVycm9yLCBiZWNhdXNlIHRoZSBsaW1pdGVyIHRyYWRlcyBtZW1vcnkgZm9yIENQVSB0aW1lIHdoZW4gdGhlIEdDJ3MgQ1BVIHRpbWUgZ2V0cyB0b28gaGlnaC4gVGhpcyBpcyBtb3N0IGxpa2VseSB0byBvY2N1ciB3aXRoIHVzZSBvZiBTZXRNZW1vcnlMaW1pdC4gVGhlIGZpcnN0IEdDIGN5Y2xlIGlzIGN5Y2xlIDEsIHNvIGEgdmFsdWUgb2YgMCBpbmRpY2F0ZXMgdGhhdCBpdCB3YXMgbmV2ZXIgZW5hYmxlZC4gU291cmNlZCBmcm9tIC9nYy9saW1pdGVyL2xhc3QtZW5hYmxlZDpnYy1jeWNsZS4YASILEgkJAAAAAAAAAADlAQoUZ29fZ2NfcGF1c2VzX3NlY29uZHMSYURlcHJlY2F0ZWQuIFByZWZlciB0aGUgaWRlbnRpY2FsIC9zY2hlZC9wYXVzZXMvdG90YWwvZ2M6c2Vjb25kcy4gU291cmNlZCBmcm9tIC9nYy9wYXVzZXM6c2Vjb25kcy4YBCJoOmYISBHXtS0yUAVrPxoLCAARlNYm6AsucT4aCwgAETmMMOKOeaU+GgsIDRGD90PWlBDePhoLCDgROYww4o55FT8aCwhGEYP3Q9aUEE4/GgsISBE5jDDijnmFPxoLCEgRg/dD1pQQvj+MAQoYZ29fZ2Nfc2Nhbl9nbG9iYWxzX2J5dGVzEmFUaGUgdG90YWwgYW1vdW50IG9mIGdsb2JhbCB2YXJpYWJsZSBzcGFjZSB0aGF0IGlzIHNjYW5uYWJsZS4gU291cmNlZCBmcm9tIC9nYy9zY2FuL2dsb2JhbHM6Ynl0ZXMuGAEiCxIJCQAAAAB1gkhBewoVZ29fZ2Nfc2Nhbl9oZWFwX2J5dGVzElNUaGUgdG90YWwgYW1vdW50IG9mIGhlYXAgc3BhY2UgdGhhdCBpcyBzY2FubmFibGUuIFNvdXJjZWQgZnJvbSAvZ2Mvc2Nhbi9oZWFwOmJ5dGVzLhgBIgsSCQkAAACAvwymQYkBChZnb19nY19zY2FuX3N0YWNrX2J5dGVzEmBUaGUgbnVtYmVyIG9mIGJ5dGVzIG9mIHN0YWNrIHRoYXQgd2VyZSBzY2FubmVkIGxhc3QgR0MgY3ljbGUuIFNvdXJjZWQgZnJvbSAvZ2Mvc2Nhbi9zdGFjazpieXRlcy4YASILEgkJAAAAAIAgIUGVAQoWZ29fZ2Nfc2Nhbl90b3RhbF9ieXRlcxJsVGhlIHRvdGFsIGFtb3VudCBzcGFjZSB0aGF0IGlzIHNjYW5uYWJsZS4gU3VtIG9mIGFsbCBtZXRyaWNzIGluIC9nYy9zY2FuLiBTb3VyY2VkIGZyb20gL2djL3NjYW4vdG90YWw6Ynl0ZXMuGAEiCxIJCQAAANTpf6ZBfwofZ29fZ2Nfc3RhY2tfc3RhcnRpbmdfc2l6ZV9ieXRlcxJNVGhlIHN0YWNrIHNpemUgb2YgbmV3IGdvcm91dGluZXMuIFNvdXJjZWQgZnJvbSAvZ2Mvc3RhY2svc3RhcnRpbmctc2l6ZTpieXRlcy4YASILEgkJAAAAAAAAoECYAgo7Z29fZ29kZWJ1Z19ub25fZGVmYXVsdF9iZWhhdmlvcl9hc3luY3RpbWVyY2hhbl9ldmVudHNfdG90YWwSuwFUaGUgbnVtYmVyIG9mIG5vbi1kZWZhdWx0IGJlaGF2aW9ycyBleGVjdXRlZCBieSB0aGUgdGltZSBwYWNrYWdlIGR1ZSB0byBhIG5vbi1kZWZhdWx0IEdPREVCVUc9YXN5bmN0aW1lcmNoYW49Li4uIHNldHRpbmcuIFNvdXJjZWQgZnJvbSAvZ29kZWJ1Zy9ub24tZGVmYXVsdC1iZWhhdmlvci9hc3luY3RpbWVyY2hhbjpldmVudHMuGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQ8PWmuwOPAgo3Z29fZ29kZWJ1Z19ub25fZGVmYXVsdF9iZWhhdmlvcl9leGVjZXJyZG90X2V2ZW50c190b3RhbBK2AVRoZSBudW1iZXIgb2Ygbm9uLWRlZmF1bHQgYmVoYXZpb3JzIGV4ZWN1dGVkIGJ5IHRoZSBvcy9leGVjIHBhY2thZ2UgZHVlIHRvIGEgbm9uLWRlZmF1bHQgR09ERUJVRz1leGVjZXJyZG90PS4uLiBzZXR0aW5nLiBTb3VyY2VkIGZyb20gL2dvZGVidWcvbm9uLWRlZmF1bHQtYmVoYXZpb3IvZXhlY2VycmRvdDpldmVudHMuGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQsISnuwORAgo4Z29fZ29kZWJ1Z19ub25fZGVmYXVsdF9iZWhhdmlvcl9nb2NhY2hlaGFzaF9ldmVudHNfdG90YWwStwFUaGUgbnVtYmVyIG9mIG5vbi1kZWZhdWx0IGJlaGF2aW9ycyBleGVjdXRlZCBieSB0aGUgY21kL2dvIHBhY2thZ2UgZHVlIHRvIGEgbm9uLWRlZmF1bHQgR09ERUJVRz1nb2NhY2hlaGFzaD0uLi4gc2V0dGluZy4gU291cmNlZCBmcm9tIC9nb2RlYnVnL25vbi1kZWZhdWx0LWJlaGF2aW9yL2dvY2FjaGVoYXNoOmV2ZW50cy4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCBlKe7A5ECCjhnb19nb2RlYnVnX25vbl9kZWZhdWx0X2JlaGF2aW9yX2dvY2FjaGV0ZXN0X2V2ZW50c190b3RhbBK3AVRoZSBudW1iZXIgb2Ygbm9uLWRlZmF1bHQgYmVoYXZpb3JzIGV4ZWN1dGVkIGJ5IHRoZSBjbWQvZ28gcGFja2FnZSBkdWUgdG8gYSBub24tZGVmYXVsdCBHT0RFQlVHPWdvY2FjaGV0ZXN0PS4uLiBzZXR0aW5nLiBTb3VyY2VkIGZyb20gL2dvZGVidWcvbm9uLWRlZmF1bHQtYmVoYXZpb3IvZ29jYWNoZXRlc3Q6ZXZlbnRzLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGEPSgp7sDlwIKOmdvX2dvZGVidWdfbm9uX2RlZmF1bHRfYmVoYXZpb3JfZ29jYWNoZXZlcmlmeV9ldmVudHNfdG90YWwSuwFUaGUgbnVtYmVyIG9mIG5vbi1kZWZhdWx0IGJlaGF2aW9ycyBleGVjdXRlZCBieSB0aGUgY21kL2dvIHBhY2thZ2UgZHVlIHRvIGEgbm9uLWRlZmF1bHQgR09ERUJVRz1nb2NhY2hldmVyaWZ5PS4uLiBzZXR0aW5nLiBTb3VyY2VkIGZyb20gL2dvZGVidWcvbm9uLWRlZmF1bHQtYmVoYXZpb3IvZ29jYWNoZXZlcmlmeTpldmVudHMuGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQ8q2nuwOpAgpAZ29fZ29kZWJ1Z19ub25fZGVmYXVsdF9iZWhhdmlvcl9nb3Rlc3Rqc29uYnVpbGR0ZXh0X2V2ZW50c190b3RhbBLHAVRoZSBudW1iZXIgb2Ygbm9uLWRlZmF1bHQgYmVoYXZpb3JzIGV4ZWN1dGVkIGJ5IHRoZSBjbWQvZ28gcGFja2FnZSBkdWUgdG8gYSBub24tZGVmYXVsdCBHT0RFQlVHPWdvdGVzdGpzb25idWlsZHRleHQ9Li4uIHNldHRpbmcuIFNvdXJjZWQgZnJvbSAvZ29kZWJ1Zy9ub24tZGVmYXVsdC1iZWhhdmlvci9nb3Rlc3Rqc29uYnVpbGR0ZXh0OmV2ZW50cy4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCgvKe7A5YCCjlnb19nb2RlYnVnX25vbl9kZWZhdWx0X2JlaGF2aW9yX2dvdHlwZXNhbGlhc19ldmVudHNfdG90YWwSuwFUaGUgbnVtYmVyIG9mIG5vbi1kZWZhdWx0IGJlaGF2aW9ycyBleGVjdXRlZCBieSB0aGUgZ28vdHlwZXMgcGFja2FnZSBkdWUgdG8gYSBub24tZGVmYXVsdCBHT0RFQlVHPWdvdHlwZXNhbGlhcz0uLi4gc2V0dGluZy4gU291cmNlZCBmcm9tIC9nb2RlYnVnL25vbi1kZWZhdWx0LWJlaGF2aW9yL2dvdHlwZXNhbGlhczpldmVudHMuGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQocinuwOTAgo4Z29fZ29kZWJ1Z19ub25fZGVmYXVsdF9iZWhhdmlvcl9odHRwMmNsaWVudF9ldmVudHNfdG90YWwSuQFUaGUgbnVtYmVyIG9mIG5vbi1kZWZhdWx0IGJlaGF2aW9ycyBleGVjdXRlZCBieSB0aGUgbmV0L2h0dHAgcGFja2FnZSBkdWUgdG8gYSBub24tZGVmYXVsdCBHT0RFQlVHPWh0dHAyY2xpZW50PS4uLiBzZXR0aW5nLiBTb3VyY2VkIGZyb20gL2dvZGVidWcvbm9uLWRlZmF1bHQtYmVoYXZpb3IvaHR0cDJjbGllbnQ6ZXZlbnRzLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGEPHUp7sDkwIKOGdvX2dvZGVidWdfbm9uX2RlZmF1bHRfYmVoYXZpb3JfaHR0cDJzZXJ2ZXJfZXZlbnRzX3RvdGFsErkBVGhlIG51bWJlciBvZiBub24tZGVmYXVsdCBiZWhhdmlvcnMgZXhlY3V0ZWQgYnkgdGhlIG5ldC9odHRwIHBhY2thZ2UgZHVlIHRvIGEgbm9uLWRlZmF1bHQgR09ERUJVRz1odHRwMnNlcnZlcj0uLi4gc2V0dGluZy4gU291cmNlZCBmcm9tIC9nb2RlYnVnL25vbi1kZWZhdWx0LWJlaGF2aW9yL2h0dHAyc2VydmVyOmV2ZW50cy4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCX4ae7A64CCkFnb19nb2RlYnVnX25vbl9kZWZhdWx0X2JlaGF2aW9yX2h0dHBsYXhjb250ZW50bGVuZ3RoX2V2ZW50c190b3RhbBLLAVRoZSBudW1iZXIgb2Ygbm9uLWRlZmF1bHQgYmVoYXZpb3JzIGV4ZWN1dGVkIGJ5IHRoZSBuZXQvaHR0cCBwYWNrYWdlIGR1ZSB0byBhIG5vbi1kZWZhdWx0IEdPREVCVUc9aHR0cGxheGNvbnRlbnRsZW5ndGg9Li4uIHNldHRpbmcuIFNvdXJjZWQgZnJvbSAvZ29kZWJ1Zy9ub24tZGVmYXVsdC1iZWhhdmlvci9odHRwbGF4Y29udGVudGxlbmd0aDpldmVudHMuGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQi/CnuwOWAgo5Z29fZ29kZWJ1Z19ub25fZGVmYXVsdF9iZWhhdmlvcl9odHRwbXV4Z28xMjFfZXZlbnRzX3RvdGFsErsBVGhlIG51bWJlciBvZiBub24tZGVmYXVsdCBiZWhhdmlvcnMgZXhlY3V0ZWQgYnkgdGhlIG5ldC9odHRwIHBhY2thZ2UgZHVlIHRvIGEgbm9uLWRlZmF1bHQgR09ERUJVRz1odHRwbXV4Z28xMjE9Li4uIHNldHRpbmcuIFNvdXJjZWQgZnJvbSAvZ29kZWJ1Zy9ub24tZGVmYXVsdC1iZWhhdmlvci9odHRwbXV4Z28xMjE6ZXZlbnRzLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGENv6p7sDwwIKSGdvX2dvZGVidWdfbm9uX2RlZmF1bHRfYmVoYXZpb3JfaHR0cHNlcnZlY29udGVudGtlZXBoZWFkZXJzX2V2ZW50c190b3RhbBLZAVRoZSBudW1iZXIgb2Ygbm9uLWRlZmF1bHQgYmVoYXZpb3JzIGV4ZWN1dGVkIGJ5IHRoZSBuZXQvaHR0cCBwYWNrYWdlIGR1ZSB0byBhIG5vbi1kZWZhdWx0IEdPREVCVUc9aHR0cHNlcnZlY29udGVudGtlZXBoZWFkZXJzPS4uLiBzZXR0aW5nLiBTb3VyY2VkIGZyb20gL2dvZGVidWcvbm9uLWRlZmF1bHQtYmVoYXZpb3IvaHR0cHNlcnZlY29udGVudGtlZXBoZWFkZXJzOmV2ZW50cy4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhDEi6i7A5kCCjpnb19nb2RlYnVnX25vbl9kZWZhdWx0X2JlaGF2aW9yX2luc3RhbGxnb3Jvb3RfZXZlbnRzX3RvdGFsEr0BVGhlIG51bWJlciBvZiBub24tZGVmYXVsdCBiZWhhdmlvcnMgZXhlY3V0ZWQgYnkgdGhlIGdvL2J1aWxkIHBhY2thZ2UgZHVlIHRvIGEgbm9uLWRlZmF1bHQgR09ERUJVRz1pbnN0YWxsZ29yb290PS4uLiBzZXR0aW5nLiBTb3VyY2VkIGZyb20gL2dvZGVidWcvbm9uLWRlZmF1bHQtYmVoYXZpb3IvaW5zdGFsbGdvcm9vdDpldmVudHMuGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQ2pqouwOxAgpAZ29fZ29kZWJ1Z19ub25fZGVmYXVsdF9iZWhhdmlvcl9tdWx0aXBhcnRtYXhoZWFkZXJzX2V2ZW50c190b3RhbBLPAVRoZSBudW1iZXIgb2Ygbm9uLWRlZmF1bHQgYmVoYXZpb3JzIGV4ZWN1dGVkIGJ5IHRoZSBtaW1lL211bHRpcGFydCBwYWNrYWdlIGR1ZSB0byBhIG5vbi1kZWZhdWx0IEdPREVCVUc9bXVsdGlwYXJ0bWF4aGVhZGVycz0uLi4gc2V0dGluZy4gU291cmNlZCBmcm9tIC9nb2RlYnVnL25vbi1kZWZhdWx0LWJlaGF2aW9yL211bHRpcGFydG1heGhlYWRlcnM6ZXZlbnRzLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGENemqLsDqwIKPmdvX2dvZGVidWdfbm9uX2RlZmF1bHRfYmVoYXZpb3JfbXVsdGlwYXJ0bWF4cGFydHNfZXZlbnRzX3RvdGFsEssBVGhlIG51bWJlciBvZiBub24tZGVmYXVsdCBiZWhhdmlvcnMgZXhlY3V0ZWQgYnkgdGhlIG1pbWUvbXVsdGlwYXJ0IHBhY2thZ2UgZHVlIHRvIGEgbm9uLWRlZmF1bHQgR09ERUJVRz1tdWx0aXBhcnRtYXhwYXJ0cz0uLi4gc2V0dGluZy4gU291cmNlZCBmcm9tIC9nb2RlYnVnL25vbi1kZWZhdWx0LWJlaGF2aW9yL211bHRpcGFydG1heHBhcnRzOmV2ZW50cy4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhDssqi7A5ECCjlnb19nb2RlYnVnX25vbl9kZWZhdWx0X2JlaGF2aW9yX211bHRpcGF0aHRjcF9ldmVudHNfdG90YWwStgFUaGUgbnVtYmVyIG9mIG5vbi1kZWZhdWx0IGJlaGF2aW9ycyBleGVjdXRlZCBieSB0aGUgbmV0IHBhY2thZ2UgZHVlIHRvIGEgbm9uLWRlZmF1bHQgR09ERUJVRz1tdWx0aXBhdGh0Y3A9Li4uIHNldHRpbmcuIFNvdXJjZWQgZnJvbSAvZ29kZWJ1Zy9ub24tZGVmYXVsdC1iZWhhdmlvci9tdWx0aXBhdGh0Y3A6ZXZlbnRzLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGENC8qLsDhQIKNWdvX2dvZGVidWdfbm9uX2RlZmF1bHRfYmVoYXZpb3JfbmV0ZWRuczBfZXZlbnRzX3RvdGFsEq4BVGhlIG51bWJlciBvZiBub24tZGVmYXVsdCBiZWhhdmlvcnMgZXhlY3V0ZWQgYnkgdGhlIG5ldCBwYWNrYWdlIGR1ZSB0byBhIG5vbi1kZWZhdWx0IEdPREVCVUc9bmV0ZWRuczA9Li4uIHNldHRpbmcuIFNvdXJjZWQgZnJvbSAvZ29kZWJ1Zy9ub24tZGVmYXVsdC1iZWhhdmlvci9uZXRlZG5zMDpldmVudHMuGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQs8youwOJAgo1Z29fZ29kZWJ1Z19ub25fZGVmYXVsdF9iZWhhdmlvcl9wYW5pY25pbF9ldmVudHNfdG90YWwSsgFUaGUgbnVtYmVyIG9mIG5vbi1kZWZhdWx0IGJlaGF2aW9ycyBleGVjdXRlZCBieSB0aGUgcnVudGltZSBwYWNrYWdlIGR1ZSB0byBhIG5vbi1kZWZhdWx0IEdPREVCVUc9cGFuaWNuaWw9Li4uIHNldHRpbmcuIFNvdXJjZWQgZnJvbSAvZ29kZWJ1Zy9ub24tZGVmYXVsdC1iZWhhdmlvci9wYW5pY25pbDpldmVudHMuGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQytaouwOXAgo5Z29fZ29kZWJ1Z19ub25fZGVmYXVsdF9iZWhhdmlvcl9yYW5kYXV0b3NlZWRfZXZlbnRzX3RvdGFsErwBVGhlIG51bWJlciBvZiBub24tZGVmYXVsdCBiZWhhdmlvcnMgZXhlY3V0ZWQgYnkgdGhlIG1hdGgvcmFuZCBwYWNrYWdlIGR1ZSB0byBhIG5vbi1kZWZhdWx0IEdPREVCVUc9cmFuZGF1dG9zZWVkPS4uLiBzZXR0aW5nLiBTb3VyY2VkIGZyb20gL2dvZGVidWcvbm9uLWRlZmF1bHQtYmVoYXZpb3IvcmFuZGF1dG9zZWVkOmV2ZW50cy4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhC54Ki7A5QCCjhnb19nb2RlYnVnX25vbl9kZWZhdWx0X2JlaGF2aW9yX3JhbmRzZWVkbm9wX2V2ZW50c190b3RhbBK6AVRoZSBudW1iZXIgb2Ygbm9uLWRlZmF1bHQgYmVoYXZpb3JzIGV4ZWN1dGVkIGJ5IHRoZSBtYXRoL3JhbmQgcGFja2FnZSBkdWUgdG8gYSBub24tZGVmYXVsdCBHT0RFQlVHPXJhbmRzZWVkbm9wPS4uLiBzZXR0aW5nLiBTb3VyY2VkIGZyb20gL2dvZGVidWcvbm9uLWRlZmF1bHQtYmVoYXZpb3IvcmFuZHNlZWRub3A6ZXZlbnRzLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGEI7rqLsDkgIKN2dvX2dvZGVidWdfbm9uX2RlZmF1bHRfYmVoYXZpb3JfcnNhMTAyNG1pbl9ldmVudHNfdG90YWwSuQFUaGUgbnVtYmVyIG9mIG5vbi1kZWZhdWx0IGJlaGF2aW9ycyBleGVjdXRlZCBieSB0aGUgY3J5cHRvL3JzYSBwYWNrYWdlIGR1ZSB0byBhIG5vbi1kZWZhdWx0IEdPREVCVUc9cnNhMTAyNG1pbj0uLi4gc2V0dGluZy4gU291cmNlZCBmcm9tIC9nb2RlYnVnL25vbi1kZWZhdWx0LWJlaGF2aW9yL3JzYTEwMjRtaW46ZXZlbnRzLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGEPP1qLsDogIKPGdvX2dvZGVidWdfbm9uX2RlZmF1bHRfYmVoYXZpb3JfdGFyaW5zZWN1cmVwYXRoX2V2ZW50c190b3RhbBLEAVRoZSBudW1iZXIgb2Ygbm9uLWRlZmF1bHQgYmVoYXZpb3JzIGV4ZWN1dGVkIGJ5IHRoZSBhcmNoaXZlL3RhciBwYWNrYWdlIGR1ZSB0byBhIG5vbi1kZWZhdWx0IEdPREVCVUc9dGFyaW5zZWN1cmVwYXRoPS4uLiBzZXR0aW5nLiBTb3VyY2VkIGZyb20gL2dvZGVidWcvbm9uLWRlZmF1bHQtYmVoYXZpb3IvdGFyaW5zZWN1cmVwYXRoOmV2ZW50cy4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhDVgKm7A5UCCjhnb19nb2RlYnVnX25vbl9kZWZhdWx0X2JlaGF2aW9yX3RsczEwc2VydmVyX2V2ZW50c190b3RhbBK7AVRoZSBudW1iZXIgb2Ygbm9uLWRlZmF1bHQgYmVoYXZpb3JzIGV4ZWN1dGVkIGJ5IHRoZSBjcnlwdG8vdGxzIHBhY2thZ2UgZHVlIHRvIGEgbm9uLWRlZmF1bHQgR09ERUJVRz10bHMxMHNlcnZlcj0uLi4gc2V0dGluZy4gU291cmNlZCBmcm9tIC9nb2RlYnVnL25vbi1kZWZhdWx0LWJlaGF2aW9yL3RsczEwc2VydmVyOmV2ZW50cy4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCOiqm7A4kCCjRnb19nb2RlYnVnX25vbl9kZWZhdWx0X2JlaGF2aW9yX3RsczNkZXNfZXZlbnRzX3RvdGFsErMBVGhlIG51bWJlciBvZiBub24tZGVmYXVsdCBiZWhhdmlvcnMgZXhlY3V0ZWQgYnkgdGhlIGNyeXB0by90bHMgcGFja2FnZSBkdWUgdG8gYSBub24tZGVmYXVsdCBHT0RFQlVHPXRsczNkZXM9Li4uIHNldHRpbmcuIFNvdXJjZWQgZnJvbSAvZ29kZWJ1Zy9ub24tZGVmYXVsdC1iZWhhdmlvci90bHMzZGVzOmV2ZW50cy4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCFpKm7A5sCCjpnb19nb2RlYnVnX25vbl9kZWZhdWx0X2JlaGF2aW9yX3Rsc21heHJzYXNpemVfZXZlbnRzX3RvdGFsEr8BVGhlIG51bWJlciBvZiBub24tZGVmYXVsdCBiZWhhdmlvcnMgZXhlY3V0ZWQgYnkgdGhlIGNyeXB0by90bHMgcGFja2FnZSBkdWUgdG8gYSBub24tZGVmYXVsdCBHT0RFQlVHPXRsc21heHJzYXNpemU9Li4uIHNldHRpbmcuIFNvdXJjZWQgZnJvbSAvZ29kZWJ1Zy9ub24tZGVmYXVsdC1iZWhhdmlvci90bHNtYXhyc2FzaXplOmV2ZW50cy4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCkr6m7A48CCjZnb19nb2RlYnVnX25vbl9kZWZhdWx0X2JlaGF2aW9yX3Rsc3JzYWtleF9ldmVudHNfdG90YWwStwFUaGUgbnVtYmVyIG9mIG5vbi1kZWZhdWx0IGJlaGF2aW9ycyBleGVjdXRlZCBieSB0aGUgY3J5cHRvL3RscyBwYWNrYWdlIGR1ZSB0byBhIG5vbi1kZWZhdWx0IEdPREVCVUc9dGxzcnNha2V4PS4uLiBzZXR0aW5nLiBTb3VyY2VkIGZyb20gL2dvZGVidWcvbm9uLWRlZmF1bHQtYmVoYXZpb3IvdGxzcnNha2V4OmV2ZW50cy4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhDBuqm7A5gCCjlnb19nb2RlYnVnX25vbl9kZWZhdWx0X2JlaGF2aW9yX3Rsc3Vuc2FmZWVrbV9ldmVudHNfdG90YWwSvQFUaGUgbnVtYmVyIG9mIG5vbi1kZWZhdWx0IGJlaGF2aW9ycyBleGVjdXRlZCBieSB0aGUgY3J5cHRvL3RscyBwYWNrYWdlIGR1ZSB0byBhIG5vbi1kZWZhdWx0IEdPREVCVUc9dGxzdW5zYWZlZWttPS4uLiBzZXR0aW5nLiBTb3VyY2VkIGZyb20gL2dvZGVidWcvbm9uLWRlZmF1bHQtYmVoYXZpb3IvdGxzdW5zYWZlZWttOmV2ZW50cy4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCUxKm7A58CCj5nb19nb2RlYnVnX25vbl9kZWZhdWx0X2JlaGF2aW9yX3dpbnJlYWRsaW5rdm9sdW1lX2V2ZW50c190b3RhbBK/AVRoZSBudW1iZXIgb2Ygbm9uLWRlZmF1bHQgYmVoYXZpb3JzIGV4ZWN1dGVkIGJ5IHRoZSBvcyBwYWNrYWdlIGR1ZSB0byBhIG5vbi1kZWZhdWx0IEdPREVCVUc9d2lucmVhZGxpbmt2b2x1bWU9Li4uIHNldHRpbmcuIFNvdXJjZWQgZnJvbSAvZ29kZWJ1Zy9ub24tZGVmYXVsdC1iZWhhdmlvci93aW5yZWFkbGlua3ZvbHVtZTpldmVudHMuGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQk9SpuwOKAgo3Z29fZ29kZWJ1Z19ub25fZGVmYXVsdF9iZWhhdmlvcl93aW5zeW1saW5rX2V2ZW50c190b3RhbBKxAVRoZSBudW1iZXIgb2Ygbm9uLWRlZmF1bHQgYmVoYXZpb3JzIGV4ZWN1dGVkIGJ5IHRoZSBvcyBwYWNrYWdlIGR1ZSB0byBhIG5vbi1kZWZhdWx0IEdPREVCVUc9d2luc3ltbGluaz0uLi4gc2V0dGluZy4gU291cmNlZCBmcm9tIC9nb2RlYnVnL25vbi1kZWZhdWx0LWJlaGF2aW9yL3dpbnN5bWxpbms6ZXZlbnRzLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGELvoqbsDoQIKPGdvX2dvZGVidWdfbm9uX2RlZmF1bHRfYmVoYXZpb3JfeDUwOWtleXBhaXJsZWFmX2V2ZW50c190b3RhbBLDAVRoZSBudW1iZXIgb2Ygbm9uLWRlZmF1bHQgYmVoYXZpb3JzIGV4ZWN1dGVkIGJ5IHRoZSBjcnlwdG8vdGxzIHBhY2thZ2UgZHVlIHRvIGEgbm9uLWRlZmF1bHQgR09ERUJVRz14NTA5a2V5cGFpcmxlYWY9Li4uIHNldHRpbmcuIFNvdXJjZWQgZnJvbSAvZ29kZWJ1Zy9ub24tZGVmYXVsdC1iZWhhdmlvci94NTA5a2V5cGFpcmxlYWY6ZXZlbnRzLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGEN74qbsDqwIKP2dvX2dvZGVidWdfbm9uX2RlZmF1bHRfYmVoYXZpb3JfeDUwOW5lZ2F0aXZlc2VyaWFsX2V2ZW50c190b3RhbBLKAVRoZSBudW1iZXIgb2Ygbm9uLWRlZmF1bHQgYmVoYXZpb3JzIGV4ZWN1dGVkIGJ5IHRoZSBjcnlwdG8veDUwOSBwYWNrYWdlIGR1ZSB0byBhIG5vbi1kZWZhdWx0IEdPREVCVUc9eDUwOW5lZ2F0aXZlc2VyaWFsPS4uLiBzZXR0aW5nLiBTb3VyY2VkIGZyb20gL2dvZGVidWcvbm9uLWRlZmF1bHQtYmVoYXZpb3IveDUwOW5lZ2F0aXZlc2VyaWFsOmV2ZW50cy4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCsiaq7A5MCCjdnb19nb2RlYnVnX25vbl9kZWZhdWx0X2JlaGF2aW9yX3g1MDlyc2FjcnRfZXZlbnRzX3RvdGFsEroBVGhlIG51bWJlciBvZiBub24tZGVmYXVsdCBiZWhhdmlvcnMgZXhlY3V0ZWQgYnkgdGhlIGNyeXB0by94NTA5IHBhY2thZ2UgZHVlIHRvIGEgbm9uLWRlZmF1bHQgR09ERUJVRz14NTA5cnNhY3J0PS4uLiBzZXR0aW5nLiBTb3VyY2VkIGZyb20gL2dvZGVidWcvbm9uLWRlZmF1bHQtYmVoYXZpb3IveDUwOXJzYWNydDpldmVudHMuGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQ0ZSquwOxAgpBZ29fZ29kZWJ1Z19ub25fZGVmYXVsdF9iZWhhdmlvcl94NTA5dXNlZmFsbGJhY2tyb290c19ldmVudHNfdG90YWwSzgFUaGUgbnVtYmVyIG9mIG5vbi1kZWZhdWx0IGJlaGF2aW9ycyBleGVjdXRlZCBieSB0aGUgY3J5cHRvL3g1MDkgcGFja2FnZSBkdWUgdG8gYSBub24tZGVmYXVsdCBHT0RFQlVHPXg1MDl1c2VmYWxsYmFja3Jvb3RzPS4uLiBzZXR0aW5nLiBTb3VyY2VkIGZyb20gL2dvZGVidWcvbm9uLWRlZmF1bHQtYmVoYXZpb3IveDUwOXVzZWZhbGxiYWNrcm9vdHM6ZXZlbnRzLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGELGgqrsDogIKPGdvX2dvZGVidWdfbm9uX2RlZmF1bHRfYmVoYXZpb3JfeDUwOXVzZXBvbGljaWVzX2V2ZW50c190b3RhbBLEAVRoZSBudW1iZXIgb2Ygbm9uLWRlZmF1bHQgYmVoYXZpb3JzIGV4ZWN1dGVkIGJ5IHRoZSBjcnlwdG8veDUwOSBwYWNrYWdlIGR1ZSB0byBhIG5vbi1kZWZhdWx0IEdPREVCVUc9eDUwOXVzZXBvbGljaWVzPS4uLiBzZXR0aW5nLiBTb3VyY2VkIGZyb20gL2dvZGVidWcvbm9uLWRlZmF1bHQtYmVoYXZpb3IveDUwOXVzZXBvbGljaWVzOmV2ZW50cy4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCEq6q7A6ICCjxnb19nb2RlYnVnX25vbl9kZWZhdWx0X2JlaGF2aW9yX3ppcGluc2VjdXJlcGF0aF9ldmVudHNfdG90YWwSxAFUaGUgbnVtYmVyIG9mIG5vbi1kZWZhdWx0IGJlaGF2aW9ycyBleGVjdXRlZCBieSB0aGUgYXJjaGl2ZS96aXAgcGFja2FnZSBkdWUgdG8gYSBub24tZGVmYXVsdCBHT0RFQlVHPXppcGluc2VjdXJlcGF0aD0uLi4gc2V0dGluZy4gU291cmNlZCBmcm9tIC9nb2RlYnVnL25vbi1kZWZhdWx0LWJlaGF2aW9yL3ppcGluc2VjdXJlcGF0aDpldmVudHMuGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQjrWquwNKCg1nb19nb3JvdXRpbmVzEipOdW1iZXIgb2YgZ29yb3V0aW5lcyB0aGF0IGN1cnJlbnRseSBleGlzdC4YASILEgkJAAAAAAAYh0BUCgdnb19pbmZvEiVJbmZvcm1hdGlvbiBhYm91dCB0aGUgR28gZW52aXJvbm1lbnQuGAEiIAoTCgd2ZXJzaW9uEghnbzEuMjQuNBIJCQAAAAAAAPA/qAIKIWdvX21lbW9yeV9jbGFzc2VzX2hlYXBfZnJlZV9ieXRlcxLzAU1lbW9yeSB0aGF0IGlzIGNvbXBsZXRlbHkgZnJlZSBhbmQgZWxpZ2libGUgdG8gYmUgcmV0dXJuZWQgdG8gdGhlIHVuZGVybHlpbmcgc3lzdGVtLCBidXQgaGFzIG5vdCBiZWVuLiBUaGlzIG1ldHJpYyBpcyB0aGUgcnVudGltZSdzIGVzdGltYXRlIG9mIGZyZWUgYWRkcmVzcyBzcGFjZSB0aGF0IGlzIGJhY2tlZCBieSBwaHlzaWNhbCBtZW1vcnkuIFNvdXJjZWQgZnJvbSAvbWVtb3J5L2NsYXNzZXMvaGVhcC9mcmVlOmJ5dGVzLhgBIgsSCQkAAAAAAGZyQdYBCiRnb19tZW1vcnlfY2xhc3Nlc19oZWFwX29iamVjdHNfYnl0ZXMSngFNZW1vcnkgb2NjdXBpZWQgYnkgbGl2ZSBvYmplY3RzIGFuZCBkZWFkIG9iamVjdHMgdGhhdCBoYXZlIG5vdCB5ZXQgYmVlbiBtYXJrZWQgZnJlZSBieSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IuIFNvdXJjZWQgZnJvbSAvbWVtb3J5L2NsYXNzZXMvaGVhcC9vYmplY3RzOmJ5dGVzLhgBIgsSCQkAAADw3eCwQcICCiVnb19tZW1vcnlfY2xhc3Nlc19oZWFwX3JlbGVhc2VkX2J5dGVzEokCTWVtb3J5IHRoYXQgaXMgY29tcGxldGVseSBmcmVlIGFuZCBoYXMgYmVlbiByZXR1cm5lZCB0byB0aGUgdW5kZXJseWluZyBzeXN0ZW0uIFRoaXMgbWV0cmljIGlzIHRoZSBydW50aW1lJ3MgZXN0aW1hdGUgb2YgZnJlZSBhZGRyZXNzIHNwYWNlIHRoYXQgaXMgc3RpbGwgbWFwcGVkIGludG8gdGhlIHByb2Nlc3MsIGJ1dCBpcyBub3QgYmFja2VkIGJ5IHBoeXNpY2FsIG1lbW9yeS4gU291cmNlZCBmcm9tIC9tZW1vcnkvY2xhc3Nlcy9oZWFwL3JlbGVhc2VkOmJ5dGVzLhgBIgsSCQkAAAAAAGBFQZcDCiNnb19tZW1vcnlfY2xhc3Nlc19oZWFwX3N0YWNrc19ieXRlcxLgAk1lbW9yeSBhbGxvY2F0ZWQgZnJvbSB0aGUgaGVhcCB0aGF0IGlzIHJlc2VydmVkIGZvciBzdGFjayBzcGFjZSwgd2hldGhlciBvciBub3QgaXQgaXMgY3VycmVudGx5IGluLXVzZS4gQ3VycmVudGx5LCB0aGlzIHJlcHJlc2VudHMgYWxsIHN0YWNrIG1lbW9yeSBmb3IgZ29yb3V0aW5lcy4gSXQgYWxzbyBpbmNsdWRlcyBhbGwgT1MgdGhyZWFkIHN0YWNrcyBpbiBub24tY2dvIHByb2dyYW1zLiBOb3RlIHRoYXQgc3RhY2tzIG1heSBiZSBhbGxvY2F0ZWQgZGlmZmVyZW50bHkgaW4gdGhlIGZ1dHVyZSwgYW5kIHRoaXMgbWF5IGNoYW5nZS4gU291cmNlZCBmcm9tIC9tZW1vcnkvY2xhc3Nlcy9oZWFwL3N0YWNrczpieXRlcy4YASILEgkJAAAAAADAUUG/AQojZ29fbWVtb3J5X2NsYXNzZXNfaGVhcF91bnVzZWRfYnl0ZXMSiAFNZW1vcnkgdGhhdCBpcyByZXNlcnZlZCBmb3IgaGVhcCBvYmplY3RzIGJ1dCBpcyBub3QgY3VycmVudGx5IHVzZWQgdG8gaG9sZCBoZWFwIG9iamVjdHMuIFNvdXJjZWQgZnJvbSAvbWVtb3J5L2NsYXNzZXMvaGVhcC91bnVzZWQ6Ynl0ZXMuGAEiCxIJCQAAAAAhcHxBvgEKLGdvX21lbW9yeV9jbGFzc2VzX21ldGFkYXRhX21jYWNoZV9mcmVlX2J5dGVzEn9NZW1vcnkgdGhhdCBpcyByZXNlcnZlZCBmb3IgcnVudGltZSBtY2FjaGUgc3RydWN0dXJlcywgYnV0IG5vdCBpbi11c2UuIFNvdXJjZWQgZnJvbSAvbWVtb3J5L2NsYXNzZXMvbWV0YWRhdGEvbWNhY2hlL2ZyZWU6Ynl0ZXMuGAEiCxIJCQAAAAAAmLdAzgEKLWdvX21lbW9yeV9jbGFzc2VzX21ldGFkYXRhX21jYWNoZV9pbnVzZV9ieXRlcxKNAU1lbW9yeSB0aGF0IGlzIG9jY3VwaWVkIGJ5IHJ1bnRpbWUgbWNhY2hlIHN0cnVjdHVyZXMgdGhhdCBhcmUgY3VycmVudGx5IGJlaW5nIHVzZWQuIFNvdXJjZWQgZnJvbSAvbWVtb3J5L2NsYXNzZXMvbWV0YWRhdGEvbWNhY2hlL2ludXNlOmJ5dGVzLhgBIgsSCQkAAAAAAODCQLsBCitnb19tZW1vcnlfY2xhc3Nlc19tZXRhZGF0YV9tc3Bhbl9mcmVlX2J5dGVzEn1NZW1vcnkgdGhhdCBpcyByZXNlcnZlZCBmb3IgcnVudGltZSBtc3BhbiBzdHJ1Y3R1cmVzLCBidXQgbm90IGluLXVzZS4gU291cmNlZCBmcm9tIC9tZW1vcnkvY2xhc3Nlcy9tZXRhZGF0YS9tc3Bhbi9mcmVlOmJ5dGVzLhgBIgsSCQkAAAAAAHcPQcsBCixnb19tZW1vcnlfY2xhc3Nlc19tZXRhZGF0YV9tc3Bhbl9pbnVzZV9ieXRlcxKLAU1lbW9yeSB0aGF0IGlzIG9jY3VwaWVkIGJ5IHJ1bnRpbWUgbXNwYW4gc3RydWN0dXJlcyB0aGF0IGFyZSBjdXJyZW50bHkgYmVpbmcgdXNlZC4gU291cmNlZCBmcm9tIC9tZW1vcnkvY2xhc3Nlcy9tZXRhZGF0YS9tc3Bhbi9pbnVzZTpieXRlcy4YASILEgkJAAAAAPhCUEGpAQomZ29fbWVtb3J5X2NsYXNzZXNfbWV0YWRhdGFfb3RoZXJfYnl0ZXMScE1lbW9yeSB0aGF0IGlzIHJlc2VydmVkIGZvciBvciB1c2VkIHRvIGhvbGQgcnVudGltZSBtZXRhZGF0YS4gU291cmNlZCBmcm9tIC9tZW1vcnkvY2xhc3Nlcy9tZXRhZGF0YS9vdGhlcjpieXRlcy4YASILEgkJAAAAAP6lWUH0AwohZ29fbWVtb3J5X2NsYXNzZXNfb3Nfc3RhY2tzX2J5dGVzEr8DU3RhY2sgbWVtb3J5IGFsbG9jYXRlZCBieSB0aGUgdW5kZXJseWluZyBvcGVyYXRpbmcgc3lzdGVtLiBJbiBub24tY2dvIHByb2dyYW1zIHRoaXMgbWV0cmljIGlzIGN1cnJlbnRseSB6ZXJvLiBUaGlzIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS5JbiBjZ28gcHJvZ3JhbXMgdGhpcyBtZXRyaWMgaW5jbHVkZXMgT1MgdGhyZWFkIHN0YWNrcyBhbGxvY2F0ZWQgZGlyZWN0bHkgZnJvbSB0aGUgT1MuIEN1cnJlbnRseSwgdGhpcyBvbmx5IGFjY291bnRzIGZvciBvbmUgc3RhY2sgaW4gYy1zaGFyZWQgYW5kIGMtYXJjaGl2ZSBidWlsZCBtb2RlcywgYW5kIG90aGVyIHNvdXJjZXMgb2Ygc3RhY2tzIGZyb20gdGhlIE9TIGFyZSBub3QgbWVhc3VyZWQuIFRoaXMgdG9vIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gU291cmNlZCBmcm9tIC9tZW1vcnkvY2xhc3Nlcy9vcy1zdGFja3M6Ynl0ZXMuGAEiCxIJCQAAAAAAAAAA0wEKHWdvX21lbW9yeV9jbGFzc2VzX290aGVyX2J5dGVzEqIBTWVtb3J5IHVzZWQgYnkgZXhlY3V0aW9uIHRyYWNlIGJ1ZmZlcnMsIHN0cnVjdHVyZXMgZm9yIGRlYnVnZ2luZyB0aGUgcnVudGltZSwgZmluYWxpemVyIGFuZCBwcm9maWxlciBzcGVjaWFscywgYW5kIG1vcmUuIFNvdXJjZWQgZnJvbSAvbWVtb3J5L2NsYXNzZXMvb3RoZXI6Ynl0ZXMuGAEiCxIJCQAAAAAxMz5BtQEKKWdvX21lbW9yeV9jbGFzc2VzX3Byb2ZpbGluZ19idWNrZXRzX2J5dGVzEnlNZW1vcnkgdGhhdCBpcyB1c2VkIGJ5IHRoZSBzdGFjayB0cmFjZSBoYXNoIG1hcCB1c2VkIGZvciBwcm9maWxpbmcuIFNvdXJjZWQgZnJvbSAvbWVtb3J5L2NsYXNzZXMvcHJvZmlsaW5nL2J1Y2tldHM6Ynl0ZXMuGAEiCxIJCQAAAIALT0BBrgIKHWdvX21lbW9yeV9jbGFzc2VzX3RvdGFsX2J5dGVzEv0BQWxsIG1lbW9yeSBtYXBwZWQgYnkgdGhlIEdvIHJ1bnRpbWUgaW50byB0aGUgY3VycmVudCBwcm9jZXNzIGFzIHJlYWQtd3JpdGUuIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGluY2x1ZGUgbWVtb3J5IG1hcHBlZCBieSBjb2RlIGNhbGxlZCB2aWEgY2dvIG9yIHZpYSB0aGUgc3lzY2FsbCBwYWNrYWdlLiBTdW0gb2YgYWxsIG1ldHJpY3MgaW4gL21lbW9yeS9jbGFzc2VzLiBTb3VyY2VkIGZyb20gL21lbW9yeS9jbGFzc2VzL3RvdGFsOmJ5dGVzLhgBIgsSCQkAAABYoSq1QY8BChdnb19tZW1zdGF0c19hbGxvY19ieXRlcxJlTnVtYmVyIG9mIGJ5dGVzIGFsbG9jYXRlZCBpbiBoZWFwIGFuZCBjdXJyZW50bHkgaW4gdXNlLiBFcXVhbHMgdG8gL21lbW9yeS9jbGFzc2VzL2hlYXAvb2JqZWN0czpieXRlcy4YASILEgkJAAAA8N3gsEGdAQodZ29fbWVtc3RhdHNfYWxsb2NfYnl0ZXNfdG90YWwSbVRvdGFsIG51bWJlciBvZiBieXRlcyBhbGxvY2F0ZWQgaW4gaGVhcCB1bnRpbCBub3csIGV2ZW4gaWYgcmVsZWFzZWQgYWxyZWFkeS4gRXF1YWxzIHRvIC9nYy9oZWFwL2FsbG9jczpieXRlcy4YACILGgkJAAAAEmsK2EGdAQofZ29fbWVtc3RhdHNfYnVja19oYXNoX3N5c19ieXRlcxJrTnVtYmVyIG9mIGJ5dGVzIHVzZWQgYnkgdGhlIHByb2ZpbGluZyBidWNrZXQgaGFzaCB0YWJsZS4gRXF1YWxzIHRvIC9tZW1vcnkvY2xhc3Nlcy9wcm9maWxpbmcvYnVja2V0czpieXRlcy4YASILEgkJAAAAgAtPQEGOAQoXZ29fbWVtc3RhdHNfZnJlZXNfdG90YWwSZFRvdGFsIG51bWJlciBvZiBoZWFwIG9iamVjdHMgZnJlZXMuIEVxdWFscyB0byAvZ2MvaGVhcC9mcmVlczpvYmplY3RzICsgL2djL2hlYXAvdGlueS9hbGxvY3M6b2JqZWN0cy4YACILGgkJAAAAgNt5YUGXAQoYZ29fbWVtc3RhdHNfZ2Nfc3lzX2J5dGVzEmxOdW1iZXIgb2YgYnl0ZXMgdXNlZCBmb3IgZ2FyYmFnZSBjb2xsZWN0aW9uIHN5c3RlbSBtZXRhZGF0YS4gRXF1YWxzIHRvIC9tZW1vcnkvY2xhc3Nlcy9tZXRhZGF0YS9vdGhlcjpieXRlcy4YASILEgkJAAAAAP6lWUGzAQocZ29fbWVtc3RhdHNfaGVhcF9hbGxvY19ieXRlcxKDAU51bWJlciBvZiBoZWFwIGJ5dGVzIGFsbG9jYXRlZCBhbmQgY3VycmVudGx5IGluIHVzZSwgc2FtZSBhcyBnb19tZW1zdGF0c19hbGxvY19ieXRlcy4gRXF1YWxzIHRvIC9tZW1vcnkvY2xhc3Nlcy9oZWFwL29iamVjdHM6Ynl0ZXMuGAEiCxIJCQAAAPDd4LBBpwEKG2dvX21lbXN0YXRzX2hlYXBfaWRsZV9ieXRlcxJ5TnVtYmVyIG9mIGhlYXAgYnl0ZXMgd2FpdGluZyB0byBiZSB1c2VkLiBFcXVhbHMgdG8gL21lbW9yeS9jbGFzc2VzL2hlYXAvcmVsZWFzZWQ6Ynl0ZXMgKyAvbWVtb3J5L2NsYXNzZXMvaGVhcC9mcmVlOmJ5dGVzLhgBIgsSCQkAAAAAABJ1QaUBChxnb19tZW1zdGF0c19oZWFwX2ludXNlX2J5dGVzEnZOdW1iZXIgb2YgaGVhcCBieXRlcyB0aGF0IGFyZSBpbiB1c2UuIEVxdWFscyB0byAvbWVtb3J5L2NsYXNzZXMvaGVhcC9vYmplY3RzOmJ5dGVzICsgL21lbW9yeS9jbGFzc2VzL2hlYXAvdW51c2VkOmJ5dGVzGAEiCxIJCQAAAADgp7JBdQoYZ29fbWVtc3RhdHNfaGVhcF9vYmplY3RzEkpOdW1iZXIgb2YgY3VycmVudGx5IGFsbG9jYXRlZCBvYmplY3RzLiBFcXVhbHMgdG8gL2djL2hlYXAvb2JqZWN0czpvYmplY3RzLhgBIgsSCQkAAAAAjHw9QYUBCh9nb19tZW1zdGF0c19oZWFwX3JlbGVhc2VkX2J5dGVzElNOdW1iZXIgb2YgaGVhcCBieXRlcyByZWxlYXNlZCB0byBPUy4gRXF1YWxzIHRvIC9tZW1vcnkvY2xhc3Nlcy9oZWFwL3JlbGVhc2VkOmJ5dGVzLhgBIgsSCQkAAAAAAGBFQfIBChpnb19tZW1zdGF0c19oZWFwX3N5c19ieXRlcxLEAU51bWJlciBvZiBoZWFwIGJ5dGVzIG9idGFpbmVkIGZyb20gc3lzdGVtLiBFcXVhbHMgdG8gL21lbW9yeS9jbGFzc2VzL2hlYXAvb2JqZWN0czpieXRlcyArIC9tZW1vcnkvY2xhc3Nlcy9oZWFwL3VudXNlZDpieXRlcyArIC9tZW1vcnkvY2xhc3Nlcy9oZWFwL3JlbGVhc2VkOmJ5dGVzICsgL21lbW9yeS9jbGFzc2VzL2hlYXAvZnJlZTpieXRlcy4YASILEgkJAAAAAAD5s0FrCiBnb19tZW1zdGF0c19sYXN0X2djX3RpbWVfc2Vjb25kcxI4TnVtYmVyIG9mIHNlY29uZHMgc2luY2UgMTk3MCBvZiBsYXN0IGdhcmJhZ2UgY29sbGVjdGlvbi4YASILEgkJnodo9UEg2kHuAQoZZ29fbWVtc3RhdHNfbWFsbG9jc190b3RhbBLBAVRvdGFsIG51bWJlciBvZiBoZWFwIG9iamVjdHMgYWxsb2NhdGVkLCBib3RoIGxpdmUgYW5kIGdjLWVkLiBTZW1hbnRpY2FsbHkgYSBjb3VudGVyIHZlcnNpb24gZm9yIGdvX21lbXN0YXRzX2hlYXBfb2JqZWN0cyBnYXVnZS4gRXF1YWxzIHRvIC9nYy9oZWFwL2FsbG9jczpvYmplY3RzICsgL2djL2hlYXAvdGlueS9hbGxvY3M6b2JqZWN0cy4YACILGgkJAAAAAG0pZUGUAQoeZ29fbWVtc3RhdHNfbWNhY2hlX2ludXNlX2J5dGVzEmNOdW1iZXIgb2YgYnl0ZXMgaW4gdXNlIGJ5IG1jYWNoZSBzdHJ1Y3R1cmVzLiBFcXVhbHMgdG8gL21lbW9yeS9jbGFzc2VzL21ldGFkYXRhL21jYWNoZS9pbnVzZTpieXRlcy4YASILEgkJAAAAAADgwkDUAQocZ29fbWVtc3RhdHNfbWNhY2hlX3N5c19ieXRlcxKkAU51bWJlciBvZiBieXRlcyB1c2VkIGZvciBtY2FjaGUgc3RydWN0dXJlcyBvYnRhaW5lZCBmcm9tIHN5c3RlbS4gRXF1YWxzIHRvIC9tZW1vcnkvY2xhc3Nlcy9tZXRhZGF0YS9tY2FjaGUvaW51c2U6Ynl0ZXMgKyAvbWVtb3J5L2NsYXNzZXMvbWV0YWRhdGEvbWNhY2hlL2ZyZWU6Ynl0ZXMuGAEiCxIJCQAAAAAArM5AkQEKHWdvX21lbXN0YXRzX21zcGFuX2ludXNlX2J5dGVzEmFOdW1iZXIgb2YgYnl0ZXMgaW4gdXNlIGJ5IG1zcGFuIHN0cnVjdHVyZXMuIEVxdWFscyB0byAvbWVtb3J5L2NsYXNzZXMvbWV0YWRhdGEvbXNwYW4vaW51c2U6Ynl0ZXMuGAEiCxIJCQAAAAD4QlBB0AEKG2dvX21lbXN0YXRzX21zcGFuX3N5c19ieXRlcxKhAU51bWJlciBvZiBieXRlcyB1c2VkIGZvciBtc3BhbiBzdHJ1Y3R1cmVzIG9idGFpbmVkIGZyb20gc3lzdGVtLiBFcXVhbHMgdG8gL21lbW9yeS9jbGFzc2VzL21ldGFkYXRhL21zcGFuL2ludXNlOmJ5dGVzICsgL21lbW9yeS9jbGFzc2VzL21ldGFkYXRhL21zcGFuL2ZyZWU6Ynl0ZXMuGAEiCxIJCQAAAACwPlFBjQEKGWdvX21lbXN0YXRzX25leHRfZ2NfYnl0ZXMSYU51bWJlciBvZiBoZWFwIGJ5dGVzIHdoZW4gbmV4dCBnYXJiYWdlIGNvbGxlY3Rpb24gd2lsbCB0YWtlIHBsYWNlLiBFcXVhbHMgdG8gL2djL2hlYXAvZ29hbDpieXRlcy4YASILEgkJAAAAmuLHs0GHAQobZ29fbWVtc3RhdHNfb3RoZXJfc3lzX2J5dGVzEllOdW1iZXIgb2YgYnl0ZXMgdXNlZCBmb3Igb3RoZXIgc3lzdGVtIGFsbG9jYXRpb25zLiBFcXVhbHMgdG8gL21lbW9yeS9jbGFzc2VzL290aGVyOmJ5dGVzLhgBIgsSCQkAAAAAMTM+Qa4BCh1nb19tZW1zdGF0c19zdGFja19pbnVzZV9ieXRlcxJ+TnVtYmVyIG9mIGJ5dGVzIG9idGFpbmVkIGZyb20gc3lzdGVtIGZvciBzdGFjayBhbGxvY2F0b3IgaW4gbm9uLUNHTyBlbnZpcm9ubWVudHMuIEVxdWFscyB0byAvbWVtb3J5L2NsYXNzZXMvaGVhcC9zdGFja3M6Ynl0ZXMuGAEiCxIJCQAAAAAAwFFBtwEKG2dvX21lbXN0YXRzX3N0YWNrX3N5c19ieXRlcxKIAU51bWJlciBvZiBieXRlcyBvYnRhaW5lZCBmcm9tIHN5c3RlbSBmb3Igc3RhY2sgYWxsb2NhdG9yLiBFcXVhbHMgdG8gL21lbW9yeS9jbGFzc2VzL2hlYXAvc3RhY2tzOmJ5dGVzICsgL21lbW9yeS9jbGFzc2VzL29zLXN0YWNrczpieXRlcy4YASILEgkJAAAAAADAUUFzChVnb19tZW1zdGF0c19zeXNfYnl0ZXMSS051bWJlciBvZiBieXRlcyBvYnRhaW5lZCBmcm9tIHN5c3RlbS4gRXF1YWxzIHRvIC9tZW1vcnkvY2xhc3Nlcy90b3RhbDpieXRlLhgBIgsSCQkAAABYoSq1QdwBChtnb19zY2hlZF9nb21heHByb2NzX3RocmVhZHMSrQFUaGUgY3VycmVudCBydW50aW1lLkdPTUFYUFJPQ1Mgc2V0dGluZywgb3IgdGhlIG51bWJlciBvZiBvcGVyYXRpbmcgc3lzdGVtIHRocmVhZHMgdGhhdCBjYW4gZXhlY3V0ZSB1c2VyLWxldmVsIEdvIGNvZGUgc2ltdWx0YW5lb3VzbHkuIFNvdXJjZWQgZnJvbSAvc2NoZWQvZ29tYXhwcm9jczp0aHJlYWRzLhgBIgsSCQkAAAAAAAAgQHUKHmdvX3NjaGVkX2dvcm91dGluZXNfZ29yb3V0aW5lcxJEQ291bnQgb2YgbGl2ZSBnb3JvdXRpbmVzLiBTb3VyY2VkIGZyb20gL3NjaGVkL2dvcm91dGluZXM6Z29yb3V0aW5lcy4YASILEgkJAAAAAAAQh0DUAgoaZ29fc2NoZWRfbGF0ZW5jaWVzX3NlY29uZHMSuQFEaXN0cmlidXRpb24gb2YgdGhlIHRpbWUgZ29yb3V0aW5lcyBoYXZlIHNwZW50IGluIHRoZSBzY2hlZHVsZXIgaW4gYSBydW5uYWJsZSBzdGF0ZSBiZWZvcmUgYWN0dWFsbHkgcnVubmluZy4gQnVja2V0IGNvdW50cyBpbmNyZWFzZSBtb25vdG9uaWNhbGx5LiBTb3VyY2VkIGZyb20gL3NjaGVkL2xhdGVuY2llczpzZWNvbmRzLhgEIng6dgj4twQRemShDSjq2D8aDQi3tAIRlNYm6AsucT4aDQjPhQMROYww4o55pT4aDQjZtAMRg/dD1pQQ3j4aDQixpgQROYww4o55FT8aDQintwQRg/dD1pQQTj8aDQj1twQROYww4o55hT8aDQj4twQRg/dD1pQQvj+WBAojZ29fc2NoZWRfcGF1c2VzX3N0b3BwaW5nX2djX3NlY29uZHMSggNEaXN0cmlidXRpb24gb2YgaW5kaXZpZHVhbCBHQy1yZWxhdGVkIHN0b3AtdGhlLXdvcmxkIHN0b3BwaW5nIGxhdGVuY2llcy4gVGhpcyBpcyB0aGUgdGltZSBpdCB0YWtlcyBmcm9tIGRlY2lkaW5nIHRvIHN0b3AgdGhlIHdvcmxkIHVudGlsIGFsbCBQcyBhcmUgc3RvcHBlZC4gVGhpcyBpcyBhIHN1YnNldCBvZiB0aGUgdG90YWwgR0MtcmVsYXRlZCBzdG9wLXRoZS13b3JsZCB0aW1lICgvc2NoZWQvcGF1c2VzL3RvdGFsL2djOnNlY29uZHMpLiBEdXJpbmcgdGhpcyB0aW1lLCBzb21lIHRocmVhZHMgbWF5IGJlIGV4ZWN1dGluZy4gQnVja2V0IGNvdW50cyBpbmNyZWFzZSBtb25vdG9uaWNhbGx5LiBTb3VyY2VkIGZyb20gL3NjaGVkL3BhdXNlcy9zdG9wcGluZy9nYzpzZWNvbmRzLhgEImg6ZghIEdJMcQHa6WY/GgsIABGU1iboCy5xPhoLCAAROYww4o55pT4aCwgsEYP3Q9aUEN4+GgsIPBE5jDDijnkVPxoLCEYRg/dD1pQQTj8aCwhIETmMMOKOeYU/GgsISBGD90PWlBC+P6cECiZnb19zY2hlZF9wYXVzZXNfc3RvcHBpbmdfb3RoZXJfc2Vjb25kcxKQA0Rpc3RyaWJ1dGlvbiBvZiBpbmRpdmlkdWFsIG5vbi1HQy1yZWxhdGVkIHN0b3AtdGhlLXdvcmxkIHN0b3BwaW5nIGxhdGVuY2llcy4gVGhpcyBpcyB0aGUgdGltZSBpdCB0YWtlcyBmcm9tIGRlY2lkaW5nIHRvIHN0b3AgdGhlIHdvcmxkIHVudGlsIGFsbCBQcyBhcmUgc3RvcHBlZC4gVGhpcyBpcyBhIHN1YnNldCBvZiB0aGUgdG90YWwgbm9uLUdDLXJlbGF0ZWQgc3RvcC10aGUtd29ybGQgdGltZSAoL3NjaGVkL3BhdXNlcy90b3RhbC9vdGhlcjpzZWNvbmRzKS4gRHVyaW5nIHRoaXMgdGltZSwgc29tZSB0aHJlYWRzIG1heSBiZSBleGVjdXRpbmcuIEJ1Y2tldCBjb3VudHMgaW5jcmVhc2UgbW9ub3RvbmljYWxseS4gU291cmNlZCBmcm9tIC9zY2hlZC9wYXVzZXMvc3RvcHBpbmcvb3RoZXI6c2Vjb25kcy4YBCJoOmYIDhGPUiDrXUcyPxoLCAARlNYm6AsucT4aCwgAETmMMOKOeaU+GgsIBxGD90PWlBDePhoLCAsROYww4o55FT8aCwgOEYP3Q9aUEE4/GgsIDhE5jDDijnmFPxoLCA4Rg/dD1pQQvj+lBAogZ29fc2NoZWRfcGF1c2VzX3RvdGFsX2djX3NlY29uZHMSlANEaXN0cmlidXRpb24gb2YgaW5kaXZpZHVhbCBHQy1yZWxhdGVkIHN0b3AtdGhlLXdvcmxkIHBhdXNlIGxhdGVuY2llcy4gVGhpcyBpcyB0aGUgdGltZSBmcm9tIGRlY2lkaW5nIHRvIHN0b3AgdGhlIHdvcmxkIHVudGlsIHRoZSB3b3JsZCBpcyBzdGFydGVkIGFnYWluLiBTb21lIG9mIHRoaXMgdGltZSBpcyBzcGVudCBnZXR0aW5nIGFsbCB0aHJlYWRzIHRvIHN0b3AgKHRoaXMgaXMgbWVhc3VyZWQgZGlyZWN0bHkgaW4gL3NjaGVkL3BhdXNlcy9zdG9wcGluZy9nYzpzZWNvbmRzKSwgZHVyaW5nIHdoaWNoIHNvbWUgdGhyZWFkcyBtYXkgc3RpbGwgYmUgcnVubmluZy4gQnVja2V0IGNvdW50cyBpbmNyZWFzZSBtb25vdG9uaWNhbGx5LiBTb3VyY2VkIGZyb20gL3NjaGVkL3BhdXNlcy90b3RhbC9nYzpzZWNvbmRzLhgEImg6ZghIEde1LTJQBWs/GgsIABGU1iboCy5xPhoLCAAROYww4o55pT4aCwgNEYP3Q9aUEN4+GgsIOBE5jDDijnkVPxoLCEYRg/dD1pQQTj8aCwhIETmMMOKOeYU/GgsISBGD90PWlBC+P/oDCiNnb19zY2hlZF9wYXVzZXNfdG90YWxfb3RoZXJfc2Vjb25kcxLmAkRpc3RyaWJ1dGlvbiBvZiBpbmRpdmlkdWFsIG5vbi1HQy1yZWxhdGVkIHN0b3AtdGhlLXdvcmxkIHBhdXNlIGxhdGVuY2llcy4gVGhpcyBpcyB0aGUgdGltZSBmcm9tIGRlY2lkaW5nIHRvIHN0b3AgdGhlIHdvcmxkIHVudGlsIHRoZSB3b3JsZCBpcyBzdGFydGVkIGFnYWluLiBTb21lIG9mIHRoaXMgdGltZSBpcyBzcGVudCBnZXR0aW5nIGFsbCB0aHJlYWRzIHRvIHN0b3AgKG1lYXN1cmVkIGRpcmVjdGx5IGluIC9zY2hlZC9wYXVzZXMvc3RvcHBpbmcvb3RoZXI6c2Vjb25kcykuIEJ1Y2tldCBjb3VudHMgaW5jcmVhc2UgbW9ub3RvbmljYWxseS4gU291cmNlZCBmcm9tIC9zY2hlZC9wYXVzZXMvdG90YWwvb3RoZXI6c2Vjb25kcy4YBCJoOmYIDhG/ZVNQfy03PxoLCAARlNYm6AsucT4aCwgAETmMMOKOeaU+GgsIBxGD90PWlBDePhoLCAoROYww4o55FT8aCwgOEYP3Q9aUEE4/GgsIDhE5jDDijnmFPxoLCA4Rg/dD1pQQvj+sAQooZ29fc3FsX3N0YXRzX2Nvbm5lY3Rpb25zX2Jsb2NrZWRfc2Vjb25kcxI0VGhlIHRvdGFsIHRpbWUgYmxvY2tlZCB3YWl0aW5nIGZvciBhIG5ldyBjb25uZWN0aW9uLhgAIh8KEgoHZGJfbmFtZRIHZ3JhZmFuYRoJCdRIUJ6nkdo/IicKGgoHZGJfbmFtZRIPdW5pZmllZF9zdG9yYWdlGgkJAAAAAAAAAAC2AQooZ29fc3FsX3N0YXRzX2Nvbm5lY3Rpb25zX2Nsb3NlZF9tYXhfaWRsZRI+VGhlIHRvdGFsIG51bWJlciBvZiBjb25uZWN0aW9ucyBjbG9zZWQgZHVlIHRvIFNldE1heElkbGVDb25ucy4YACIfChIKB2RiX25hbWUSB2dyYWZhbmEaCQkAAAAAAAAAACInChoKB2RiX25hbWUSD3VuaWZpZWRfc3RvcmFnZRoJCQAAAAAAAAAAvgEKLWdvX3NxbF9zdGF0c19jb25uZWN0aW9uc19jbG9zZWRfbWF4X2lkbGVfdGltZRJBVGhlIHRvdGFsIG51bWJlciBvZiBjb25uZWN0aW9ucyBjbG9zZWQgZHVlIHRvIFNldENvbm5NYXhJZGxlVGltZS4YACIfChIKB2RiX25hbWUSB2dyYWZhbmEaCQkAAAAAAAAAACInChoKB2RiX25hbWUSD3VuaWZpZWRfc3RvcmFnZRoJCQAAAAAAAAAAvQEKLGdvX3NxbF9zdGF0c19jb25uZWN0aW9uc19jbG9zZWRfbWF4X2xpZmV0aW1lEkFUaGUgdG90YWwgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIGNsb3NlZCBkdWUgdG8gU2V0Q29ubk1heExpZmV0aW1lLhgAIh8KEgoHZGJfbmFtZRIHZ3JhZmFuYRoJCQAAAAAAADVAIicKGgoHZGJfbmFtZRIPdW5pZmllZF9zdG9yYWdlGgkJAAAAAAAAMUCMAQodZ29fc3FsX3N0YXRzX2Nvbm5lY3Rpb25zX2lkbGUSH1RoZSBudW1iZXIgb2YgaWRsZSBjb25uZWN0aW9ucy4YASIfChIKB2RiX25hbWUSB2dyYWZhbmESCQkAAAAAAADwPyInChoKB2RiX25hbWUSD3VuaWZpZWRfc3RvcmFnZRIJCQAAAAAAAAAAmgEKH2dvX3NxbF9zdGF0c19jb25uZWN0aW9uc19pbl91c2USK1RoZSBudW1iZXIgb2YgY29ubmVjdGlvbnMgY3VycmVudGx5IGluIHVzZS4YASIfChIKB2RiX25hbWUSB2dyYWZhbmESCQkAAAAAAAAAACInChoKB2RiX25hbWUSD3VuaWZpZWRfc3RvcmFnZRIJCQAAAAAAAPA/pAEKIWdvX3NxbF9zdGF0c19jb25uZWN0aW9uc19tYXhfb3BlbhIzTWF4aW11bSBudW1iZXIgb2Ygb3BlbiBjb25uZWN0aW9ucyB0byB0aGUgZGF0YWJhc2UuGAEiHwoSCgdkYl9uYW1lEgdncmFmYW5hEgkJAAAAAAAAFEAiJwoaCgdkYl9uYW1lEg91bmlmaWVkX3N0b3JhZ2USCQkAAAAAAAAUQKgBCh1nb19zcWxfc3RhdHNfY29ubmVjdGlvbnNfb3BlbhI7VGhlIG51bWJlciBvZiBlc3RhYmxpc2hlZCBjb25uZWN0aW9ucyBib3RoIGluIHVzZSBhbmQgaWRsZS4YASIfChIKB2RiX25hbWUSB2dyYWZhbmESCQkAAAAAAADwPyInChoKB2RiX25hbWUSD3VuaWZpZWRfc3RvcmFnZRIJCQAAAAAAAPA/ngEKI2dvX3NxbF9zdGF0c19jb25uZWN0aW9uc193YWl0ZWRfZm9yEitUaGUgdG90YWwgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIHdhaXRlZCBmb3IuGAAiHwoSCgdkYl9uYW1lEgdncmFmYW5hGgkJAAAAAACAQUAiJwoaCgdkYl9uYW1lEg91bmlmaWVkX3N0b3JhZ2UaCQkAAAAAAAAAAJQDCiZnb19zeW5jX211dGV4X3dhaXRfdG90YWxfc2Vjb25kc190b3RhbBLMAkFwcHJveGltYXRlIGN1bXVsYXRpdmUgdGltZSBnb3JvdXRpbmVzIGhhdmUgc3BlbnQgYmxvY2tlZCBvbiBhIHN5bmMuTXV0ZXgsIHN5bmMuUldNdXRleCwgb3IgcnVudGltZS1pbnRlcm5hbCBsb2NrLiBUaGlzIG1ldHJpYyBpcyB1c2VmdWwgZm9yIGlkZW50aWZ5aW5nIGdsb2JhbCBjaGFuZ2VzIGluIGxvY2sgY29udGVudGlvbi4gQ29sbGVjdCBhIG11dGV4IG9yIGJsb2NrIHByb2ZpbGUgdXNpbmcgdGhlIHJ1bnRpbWUvcHByb2YgcGFja2FnZSBmb3IgbW9yZSBkZXRhaWxlZCBjb250ZW50aW9uIGRhdGEuIFNvdXJjZWQgZnJvbSAvc3luYy9tdXRleC93YWl0L3RvdGFsOnNlY29uZHMuGAAiGRoXCez/p9hUusQ/GgwIk42ExAYQx9OtuwM6Cgpnb190aHJlYWRzEh1OdW1iZXIgb2YgT1MgdGhyZWFkcyBjcmVhdGVkLhgBIgsSCQkAAAAAAAAuQFoKH2dyYWZhbmFfYWNjZXNzX2V2YWx1YXRpb25fY291bnQSGm51bWJlciBvZiBldmFsdWF0aW9uIGNhbGxzGAAiGRoXCQAAAAAAAEFAGgwIk42ExAYQuqGfzwP6AQoiZ3JhZmFuYV9hY2Nlc3NfZXZhbHVhdGlvbl9kdXJhdGlvbhIxSGlzdG9ncmFtIGZvciB0aGUgcnVudGltZSBvZiBldmFsdWF0aW9uIGZ1bmN0aW9uLhgEIp4BOpsBCCIRP+5MguZcQj8aCwgLEfFo44i1+OQ+GgsIIBHxaOOItfgEPxoLCCIR8WjjiLX4JD8aCwgiEfFo44i1+EQ/GgsIIhHxaOOItfhkPxoLCCIR8WjjiLX4hD8aCwgiEfFo44i1+KQ/GgsIIhHxaOOItfjEPxoLCCIR8WjjiLX45D8aCwgiEfFo44i1+ARAegwIk42ExAYQg5KfzwOqAQomZ3JhZmFuYV9hY2Nlc3NfcGVybWlzc2lvbnNfY2FjaGVfdXNhZ2USKWFjY2VzcyBjb250cm9sIHBlcm1pc3Npb25zIGNhY2hlIGhpdC9taXNzGAAiKAoNCgZzdGF0dXMSA2hpdBoXCQAAAAAAAAAAGgwIk42ExAYQ/tCfzwMiKQoOCgZzdGF0dXMSBG1pc3MaFwkAAAAAAAAAABoMCJONhMQGEOXZn88DggIKI2dyYWZhbmFfYWNjZXNzX3Blcm1pc3Npb25zX2R1cmF0aW9uEjhIaXN0b2dyYW0gZm9yIHRoZSBydW50aW1lIG9mIHBlcm1pc3Npb25zIGNoZWNrIGZ1bmN0aW9uLhgEIp4BOpsBCAARAAAAAAAAAAAaCwgAEfFo44i1+OQ+GgsIABHxaOOItfgEPxoLCAAR8WjjiLX4JD8aCwgAEfFo44i1+EQ/GgsIABHxaOOItfhkPxoLCAAR8WjjiLX4hD8aCwgAEfFo44i1+KQ/GgsIABHxaOOItfjEPxoLCAAR8WjjiLX45D8aCwgAEfFo44i1+ARAegwIk42ExAYQyv+ezwNMChlncmFmYW5hX2FjY2Vzc19yb2xlX2NvdW50EiBHYXVnZSBmb3IgdG90YWwgbnVtYmVyIG9mIHJvbGVzLhgBIgsSCQkAAAAAAOBuQNMBCipncmFmYW5hX2FjY2Vzc19zZWFyY2hfcGVybWlzc2lvbnNfZHVyYXRpb24SOEhpc3RvZ3JhbSBmb3IgdGhlIHJ1bnRpbWUgb2YgcGVybWlzc2lvbnMgc2VhcmNoIGZ1bmN0aW9uGAQiaTpnCAARAAAAAAAAAAAaCwgAEfyp8dJNYlA/GgsIABF7FK5H4XqEPxoLCAARmpmZmZmZuT8aCwgAEQAAAAAAAPA/GgsIABEAAAAAAAAkQBoLCAARAAAAAAAAWUB6DAiTjYTEBhDWp5/PA8IBCjJncmFmYW5hX2FjY2Vzc19zZWFyY2hfdXNlcl9wZXJtaXNzaW9uc19jYWNoZV91c2FnZRI1YWNjZXNzIGNvbnRyb2wgc2VhcmNoIHVzZXIgcGVybWlzc2lvbnMgY2FjaGUgaGl0L21pc3MYACIoCg0KBnN0YXR1cxIDaGl0GhcJAAAAAAAAAAAaDAiTjYTEBhCd8p/PAyIpCg4KBnN0YXR1cxIEbWlzcxoXCQAAAAAAAAAAGgwIk42ExAYQnPqfzwNkCh5ncmFmYW5hX2FjY2Vzc190ZWFtX3JvbGVfY291bnQSM0dhdWdlIGZvciB0b3RhbCBudW1iZXIgb2Ygcm9sZSBhc3NpZ25tZW50cyB0byB0ZWFtLhgBIgsSCQkAAAAAAAAAAGUKHmdyYWZhbmFfYWNjZXNzX3VzZXJfcm9sZV9jb3VudBI0R2F1Z2UgZm9yIHRvdGFsIG51bWJlciBvZiByb2xlIGFzc2lnbm1lbnRzIHRvIHVzZXJzLhgBIgsSCQkAAAAAAAAsQJABCjRncmFmYW5hX2FnZ3JlZ2F0b3JfZGlzY292ZXJ5X2FnZ3JlZ2F0aW9uX2NvdW50X3RvdGFsEjtbQUxQSEFdIENvdW50ZXIgb2YgbnVtYmVyIG9mIHRpbWVzIGRpc2NvdmVyeSB3YXMgYWdncmVnYXRlZBgAIhkaFwkAAAAAAAAAABoMCJONhMQGEI/N+cwDdwo6Z3JhZmFuYV9hbGVydF9lbnJpY2htZW50X2NvbmZpZ19zeW5jX2xhc3Rfd2F0Y2hfc3VjY2Vzc2Z1bBIqV2hldGhlciB0aGUgbGFzdCB3YXRjaCBhdHRlbXB0IHN1Y2Nlc3NmdWwuGAEiCxIJCQAAAAAAAAAASAoeZ3JhZmFuYV9hbGVydGluZ19hY3RpdmVfYWxlcnRzEhdhbW91bnQgb2YgYWN0aXZlIGFsZXJ0cxgBIgsSCQkAAAAAAAAAAGoKJmdyYWZhbmFfYWxlcnRpbmdfYWN0aXZlX2NvbmZpZ3VyYXRpb25zEjFUaGUgbnVtYmVyIG9mIGFjdGl2ZSBBbGVydG1hbmFnZXIgY29uZmlndXJhdGlvbnMuGAEiCxIJCQAAAAAAAPA/4gEKJGdyYWZhbmFfYWxlcnRpbmdfYWxlcnRtYW5hZ2VyX2FsZXJ0cxI3SG93IG1hbnkgYWxlcnRzIGJ5IHN0YXRlIGFyZSBpbiBHcmFmYW5hJ3MgQWxlcnRtYW5hZ2VyLhgBIiYKCAoDb3JnEgExCg8KBXN0YXRlEgZhY3RpdmUSCQkAAAAAAAAAACIqCggKA29yZxIBMQoTCgVzdGF0ZRIKc3VwcHJlc3NlZBIJCQAAAAAAAAAAIisKCAoDb3JnEgExChQKBXN0YXRlEgt1bnByb2Nlc3NlZBIJCQAAAAAAAAAAcQopZ3JhZmFuYV9hbGVydGluZ19hbGVydG1hbmFnZXJfY29uZmlnX2hhc2gSK1RoZSBoYXNoIG9mIHRoZSBBbGVydG1hbmFnZXIgY29uZmlndXJhdGlvbi4YASIVCggKA29yZxIBMRIJCUC6+I3V9OVCVgoqZ3JhZmFuYV9hbGVydGluZ19hbGVydG1hbmFnZXJfY29uZmlnX21hdGNoEhlUaGUgdG90YWwgbnVtYmVyIG9mIG1hdGNoGAEiCxIJCQAAAAAAAAAAWwotZ3JhZmFuYV9hbGVydGluZ19hbGVydG1hbmFnZXJfY29uZmlnX21hdGNoX3JlEhtUaGUgdG90YWwgbnVtYmVyIG9mIG1hdGNoUkUYASILEgkJAAAAAAAAAABcCi1ncmFmYW5hX2FsZXJ0aW5nX2FsZXJ0bWFuYWdlcl9jb25maWdfbWF0Y2hlcnMSHFRoZSB0b3RhbCBudW1iZXIgb2YgbWF0Y2hlcnMYASILEgkJAAAAAAAAAABqCjRncmFmYW5hX2FsZXJ0aW5nX2FsZXJ0bWFuYWdlcl9jb25maWdfb2JqZWN0X21hdGNoZXJzEiNUaGUgdG90YWwgbnVtYmVyIG9mIG9iamVjdF9tYXRjaGVycxgBIgsSCQkAAAAAAAAAQIcBCi9ncmFmYW5hX2FsZXJ0aW5nX2FsZXJ0bWFuYWdlcl9jb25maWdfc2l6ZV9ieXRlcxI7VGhlIHNpemUgb2YgdGhlIGdyYWZhbmEgYWxlcnRtYW5hZ2VyIGNvbmZpZ3VyYXRpb24gaW4gYnl0ZXMYASIVCggKA29yZxIBMRIJCQAAAAAAmINAcQouZ3JhZmFuYV9hbGVydGluZ19hbGVydG1hbmFnZXJfaW5oaWJpdGlvbl9ydWxlcxImTnVtYmVyIG9mIGNvbmZpZ3VyZWQgaW5oaWJpdGlvbiBydWxlcy4YASIVCggKA29yZxIBMRIJCQAAAAAAAAAAdQoqZ3JhZmFuYV9hbGVydGluZ19hbGVydG1hbmFnZXJfaW50ZWdyYXRpb25zEh9OdW1iZXIgb2YgY29uZmlndXJlZCByZWNlaXZlcnMuGAEiJAoICgNvcmcSATEKDQoEdHlwZRIFZW1haWwSCQkAAAAAAADwP9cBCidncmFmYW5hX2FsZXJ0aW5nX2FsZXJ0bWFuYWdlcl9yZWNlaXZlcnMSWE51bWJlciBvZiBjb25maWd1cmVkIHJlY2VpdmVycyBieSBzdGF0ZS4gSXQgaXMgY29uc2lkZXJlZCBhY3RpdmUgaWYgdXNlZCB3aXRoaW4gYSByb3V0ZS4YASImCggKA29yZxIBMQoPCgVzdGF0ZRIGYWN0aXZlEgkJAAAAAAAA8D8iKAoICgNvcmcSATEKEQoFc3RhdGUSCGluYWN0aXZlEgkJAAAAAAAAAAB4CiVncmFmYW5hX2FsZXJ0aW5nX2FsZXJ0c19pbnZhbGlkX3RvdGFsEjZUaGUgdG90YWwgbnVtYmVyIG9mIHJlY2VpdmVkIGFsZXJ0cyB0aGF0IHdlcmUgaW52YWxpZC4YACIVCggKA29yZxIBMRoJCQAAAAAAAAAApAEKJmdyYWZhbmFfYWxlcnRpbmdfYWxlcnRzX3JlY2VpdmVkX3RvdGFsEiRUaGUgdG90YWwgbnVtYmVyIG9mIHJlY2VpdmVkIGFsZXJ0cy4YACInCggKA29yZxIBMQoQCgZzdGF0dXMSBmZpcmluZxoJCQAAAAAAAAAAIikKCAoDb3JnEgExChIKBnN0YXR1cxIIcmVzb2x2ZWQaCQkAAAAAAAAAAJUBCipncmFmYW5hX2FsZXJ0aW5nX2Rpc2NvdmVyZWRfY29uZmlndXJhdGlvbnMSWFRoZSBudW1iZXIgb2Ygb3JnYW5pemF0aW9ucyB3ZSd2ZSBkaXNjb3ZlcmVkIHRoYXQgcmVxdWlyZSBhbiBBbGVydG1hbmFnZXIgY29uZmlndXJhdGlvbi4YASILEgkJAAAAAAAA8D9kCi5ncmFmYW5hX2FsZXJ0aW5nX2Rpc3BhdGNoZXJfYWdncmVnYXRpb25fZ3JvdXBzEiNOdW1iZXIgb2YgYWN0aXZlIGFnZ3JlZ2F0aW9uIGdyb3VwcxgBIgsSCQkAAAAAAAAAAIQBCj1ncmFmYW5hX2FsZXJ0aW5nX2Rpc3BhdGNoZXJfYWxlcnRfcHJvY2Vzc2luZ19kdXJhdGlvbl9zZWNvbmRzEjJTdW1tYXJ5IG9mIGxhdGVuY2llcyBmb3IgdGhlIHByb2Nlc3Npbmcgb2YgYWxlcnRzLhgCIg0iCwgAEQAAAAAAAAAArgEKLGdyYWZhbmFfYWxlcnRpbmdfZXhlY3V0aW9uX3RpbWVfbWlsbGlzZWNvbmRzEiNzdW1tYXJ5IG9mIGFsZXJ0IGV4ZWN1dGlvbiBkdXJhdGlvbhgCIlciVQgAEQAAAAAAAAAAGhIJAAAAAAAA4D8RAQAAAAAA+H8aEgnNzMzMzMzsPxEBAAAAAAD4fxoSCa5H4XoUru8/EQEAAAAAAPh/IgwIk42ExAYQ+4qbzwN+CipncmFmYW5hX2FsZXJ0aW5nX25mbG9nX2djX2R1cmF0aW9uX3NlY29uZHMSP0R1cmF0aW9uIG9mIHRoZSBsYXN0IG5vdGlmaWNhdGlvbiBsb2cgZ2FyYmFnZSBjb2xsZWN0aW9uIGN5Y2xlLhgCIg0iCwgAEQAAAAAAAAAAjQEKN2dyYWZhbmFfYWxlcnRpbmdfbmZsb2dfZ29zc2lwX21lc3NhZ2VzX3Byb3BhZ2F0ZWRfdG90YWwSQ051bWJlciBvZiByZWNlaXZlZCBnb3NzaXAgbWVzc2FnZXMgdGhhdCBoYXZlIGJlZW4gZnVydGhlciBnb3NzaXBlZC4YACILGgkJAAAAAAAAAABoCiRncmFmYW5hX2FsZXJ0aW5nX25mbG9nX3F1ZXJpZXNfdG90YWwSMU51bWJlciBvZiBub3RpZmljYXRpb24gbG9nIHF1ZXJpZXMgd2VyZSByZWNlaXZlZC4YACILGgkJAAAAAAAAAACBAgotZ3JhZmFuYV9hbGVydGluZ19uZmxvZ19xdWVyeV9kdXJhdGlvbl9zZWNvbmRzEi5EdXJhdGlvbiBvZiBub3RpZmljYXRpb24gbG9nIHF1ZXJ5IGV2YWx1YXRpb24uGAQinQE6mgEIABEAAAAAAAAAABoLCAARexSuR+F6dD8aCwgAEXsUrkfheoQ/GgsIABGamZmZmZmZPxoLCAARmpmZmZmZqT8aCwgAEZqZmZmZmbk/GgsIABEAAAAAAADQPxoLCAARAAAAAAAA4D8aCwgAEQAAAAAAAPA/GgsIABEAAAAAAAAEQBoLCAARAAAAAAAAFEAaCwgAEQAAAAAAACRAcQopZ3JhZmFuYV9hbGVydGluZ19uZmxvZ19xdWVyeV9lcnJvcnNfdG90YWwSNU51bWJlciBub3RpZmljYXRpb24gbG9nIHJlY2VpdmVkIHF1ZXJpZXMgdGhhdCBmYWlsZWQuGAAiCxoJCQAAAAAAAAAAdAowZ3JhZmFuYV9hbGVydGluZ19uZmxvZ19zbmFwc2hvdF9kdXJhdGlvbl9zZWNvbmRzEi9EdXJhdGlvbiBvZiB0aGUgbGFzdCBub3RpZmljYXRpb24gbG9nIHNuYXBzaG90LhgCIg0iCwgAEQAAAAAAAAAAcQoqZ3JhZmFuYV9hbGVydGluZ19uZmxvZ19zbmFwc2hvdF9zaXplX2J5dGVzEjRTaXplIG9mIHRoZSBsYXN0IG5vdGlmaWNhdGlvbiBsb2cgc25hcHNob3QgaW4gYnl0ZXMuGAEiCxIJCQAAAAAAAAAAbgoqZ3JhZmFuYV9hbGVydGluZ19ub3RpZmljYXRpb25faGlzdG9yeV9pbmZvEjFJbmZvcm1hdGlvbiBhYm91dCB0aGUgbm90aWZpY2F0aW9uIGhpc3Rvcnkgc3RvcmUuGAEiCxIJCQAAAAAAAAAAqQEKOGdyYWZhbmFfYWxlcnRpbmdfbm90aWZpY2F0aW9uX2hpc3Rvcnlfd3JpdGVzX2J5dGVzX3RvdGFsElBUaGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHNlbnQgd2l0aGluIGEgYmF0Y2ggdG8gdGhlIG5vdGlmaWNhdGlvbiBoaXN0b3J5IHN0b3JlLhgAIhkaFwkAAAAAAAAAABoMCLeNhMQGEIHl8OQCnAEKOWdyYWZhbmFfYWxlcnRpbmdfbm90aWZpY2F0aW9uX2hpc3Rvcnlfd3JpdGVzX2ZhaWxlZF90b3RhbBJCVGhlIHRvdGFsIG51bWJlciBvZiBmYWlsZWQgd3JpdGVzIG9mIG5vdGlmaWNhdGlvbiBoaXN0b3J5IGJhdGNoZXMuGAAiGRoXCQAAAAAAAAAAGgwIt42ExAYQtI/w5AKmAQoyZ3JhZmFuYV9hbGVydGluZ19ub3RpZmljYXRpb25faGlzdG9yeV93cml0ZXNfdG90YWwSU1RoZSB0b3RhbCBudW1iZXIgb2Ygbm90aWZpY2F0aW9uIGhpc3RvcnkgYmF0Y2hlcyB0aGF0IHdlcmUgYXR0ZW1wdGVkIHRvIGJlIHdyaXR0ZW4uGAAiGRoXCQAAAAAAAAAAGgwIt42ExAYQ3crv5AJqCi1ncmFmYW5hX2FsZXJ0aW5nX25vdGlmaWNhdGlvbl9sYXRlbmN5X3NlY29uZHMSKFRoZSBsYXRlbmN5IG9mIG5vdGlmaWNhdGlvbnMgaW4gc2Vjb25kcy4YBCINOgsIABEAAAAAAAAAALQBCkZncmFmYW5hX2FsZXJ0aW5nX3JlbW90ZV9hbGVydG1hbmFnZXJfY29uZmlndXJhdGlvbl9zeW5jX2ZhaWx1cmVzX3RvdGFsEk1Ub3RhbCBudW1iZXIgb2YgZmFpbGVkIGF0dGVtcHRzIHRvIHN5bmMgY29uZmlndXJhdGlvbnMgYmV0d2VlbiBBbGVydG1hbmFnZXJzLhgAIhkaFwkAAAAAAAAAABoMCLeNhMQGEKPy9OQCngEKPmdyYWZhbmFfYWxlcnRpbmdfcmVtb3RlX2FsZXJ0bWFuYWdlcl9jb25maWd1cmF0aW9uX3N5bmNzX3RvdGFsEj9Ub3RhbCBudW1iZXIgb2YgY29uZmlndXJhdGlvbiBzeW5jcyB0byB0aGUgcmVtb3RlIEFsZXJ0bWFuYWdlci4YACIZGhcJAAAAAAAAHEAaDAi3jYTEBhCfyvTkAn4KKWdyYWZhbmFfYWxlcnRpbmdfcmVtb3RlX2FsZXJ0bWFuYWdlcl9pbmZvEipJbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVtb3RlIEFsZXJ0bWFuYWdlci4YASIjChYKBG1vZGUSDnJlbW90ZV9wcmltYXJ5EgkJAAAAAAAA8D+7AQpOZ3JhZmFuYV9hbGVydGluZ19yZW1vdGVfYWxlcnRtYW5hZ2VyX2xhc3RfY29uZmlndXJhdGlvbl9zeW5jX3RpbWVzdGFtcF9zZWNvbmRzElpUaW1lc3RhbXAgb2YgdGhlIGxhc3Qgc3VjY2Vzc2Z1bCBjb25maWd1cmF0aW9uIHN5bmMgdG8gdGhlIHJlbW90ZSBBbGVydG1hbmFnZXIgaW4gc2Vjb25kcy4YASILEgkJ3udTCEIg2kG1AQpLZ3JhZmFuYV9hbGVydGluZ19yZW1vdGVfYWxlcnRtYW5hZ2VyX2xhc3RfcmVhZGluZXNzX2NoZWNrX3RpbWVzdGFtcF9zZWNvbmRzEldUaW1lc3RhbXAgb2YgdGhlIGxhc3Qgc3VjY2Vzc2Z1bCByZWFkaW5lc3MgY2hlY2sgdG8gdGhlIHJlbW90ZSBBbGVydG1hbmFnZXIgaW4gc2Vjb25kcy4YASILEgkJoILzrUEg2kGrAQpGZ3JhZmFuYV9hbGVydGluZ19yZW1vdGVfYWxlcnRtYW5hZ2VyX2xhc3Rfc3RhdGVfc3luY190aW1lc3RhbXBfc2Vjb25kcxJSVGltZXN0YW1wIG9mIHRoZSBsYXN0IHN1Y2Nlc3NmdWwgc3RhdGUgc3luYyB0byB0aGUgcmVtb3RlIEFsZXJ0bWFuYWdlciBpbiBzZWNvbmRzLhgBIgsSCQkuafmtQSDaQY4MCjRncmFmYW5hX2FsZXJ0aW5nX3JlbW90ZV9hbGVydG1hbmFnZXJfbGF0ZW5jeV9zZWNvbmRzEjpIaXN0b2dyYW0gb2YgcmVxdWVzdCBsYXRlbmNpZXMgdG8gdGhlIHJlbW90ZSBBbGVydG1hbmFnZXIuGAQi4wIKLgoJb3B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SATEKEAoFc3RhdGUSB2V4cGlyZWQSCQkAAAAAAAAAACInCggKA29yZxIBMQoQCgVzdGF0ZRIHcGVuZGluZxIJCQAAAAAAAAAAeAotZ3JhZmFuYV9hbGVydGluZ19zaWxlbmNlc19nY19kdXJhdGlvbl9zZWNvbmRzEjZEdXJhdGlvbiBvZiB0aGUgbGFzdCBzaWxlbmNlIGdhcmJhZ2UgY29sbGVjdGlvbiBjeWNsZS4YAiINIgsIABEAAAAAAAAAAJABCjpncmFmYW5hX2FsZXJ0aW5nX3NpbGVuY2VzX2dvc3NpcF9tZXNzYWdlc19wcm9wYWdhdGVkX3RvdGFsEkNOdW1iZXIgb2YgcmVjZWl2ZWQgZ29zc2lwIG1lc3NhZ2VzIHRoYXQgaGF2ZSBiZWVuIGZ1cnRoZXIgZ29zc2lwZWQuGAAiCxoJCQAAAAAAAAAAYQonZ3JhZmFuYV9hbGVydGluZ19zaWxlbmNlc19xdWVyaWVzX3RvdGFsEidIb3cgbWFueSBzaWxlbmNlIHF1ZXJpZXMgd2VyZSByZWNlaXZlZC4YACILGgkJAAAAAADgcUCHAgowZ3JhZmFuYV9hbGVydGluZ19zaWxlbmNlc19xdWVyeV9kdXJhdGlvbl9zZWNvbmRzEiVEdXJhdGlvbiBvZiBzaWxlbmNlIHF1ZXJ5IGV2YWx1YXRpb24uGAQiqQE6pgEIngIROblP9uW4Qj8aDAieAhF7FK5H4Xp0PxoMCJ4CEXsUrkfheoQ/GgwIngIRmpmZmZmZmT8aDAieAhGamZmZmZmpPxoMCJ4CEZqZmZmZmbk/GgwIngIRAAAAAAAA0D8aDAieAhEAAAAAAADgPxoMCJ4CEQAAAAAAAPA/GgwIngIRAAAAAAAABEAaDAieAhEAAAAAAAAUQBoMCJ4CEQAAAAAAACRAcQosZ3JhZmFuYV9hbGVydGluZ19zaWxlbmNlc19xdWVyeV9lcnJvcnNfdG90YWwSMkhvdyBtYW55IHNpbGVuY2UgcmVjZWl2ZWQgcXVlcmllcyBkaWQgbm90IHN1Y2NlZWQuGAAiCxoJCQAAAAAAAAAAbgozZ3JhZmFuYV9hbGVydGluZ19zaWxlbmNlc19zbmFwc2hvdF9kdXJhdGlvbl9zZWNvbmRzEiZEdXJhdGlvbiBvZiB0aGUgbGFzdCBzaWxlbmNlIHNuYXBzaG90LhgCIg0iCwgAEQAAAAAAAAAAawotZ3JhZmFuYV9hbGVydGluZ19zaWxlbmNlc19zbmFwc2hvdF9zaXplX2J5dGVzEitTaXplIG9mIHRoZSBsYXN0IHNpbGVuY2Ugc25hcHNob3QgaW4gYnl0ZXMuGAEiCxIJCQAAAAAAAAAA0gEKM2dyYWZhbmFfYWxlcnRpbmdfc3RhdGVfY2FsY3VsYXRpb25fZHVyYXRpb25fc2Vjb25kcxIuVGhlIGR1cmF0aW9uIG9mIGNhbGN1bGF0aW9uIG9mIGEgc2luZ2xlIHN0YXRlLhgEImk6ZwgAEQAAAAAAAAAAGgsIABF7FK5H4XqEPxoLCAARmpmZmZmZuT8aCwgAEQAAAAAAAPA/GgsIABEAAAAAAAAAQBoLCAARAAAAAAAAFEAaCwgAEQAAAAAAACRAegwIt42ExAYQjfjY5ALvAQoxZ3JhZmFuYV9hbGVydGluZ19zdGF0ZV9mdWxsX3N5bmNfZHVyYXRpb25fc2Vjb25kcxJAVGhlIGR1cmF0aW9uIG9mIGZ1bGx5IHN5bmNocm9uaXppbmcgdGhlIHN0YXRlIHdpdGggdGhlIGRhdGFiYXNlLhgEInY6dAgAEQAAAAAAAAAAGgsIABF7FK5H4XqEPxoLCAARmpmZmZmZuT8aCwgAEQAAAAAAAPA/GgsIABEAAAAAAAAAQBoLCAARAAAAAAAAFEAaCwgAEQAAAAAAACRAGgsIABEAAAAAAABOQHoMCLeNhMQGEMe/2eQCcQojZ3JhZmFuYV9hbGVydGluZ19zdGF0ZV9oaXN0b3J5X2luZm8SKkluZm9ybWF0aW9uIGFib3V0IHRoZSBzdGF0ZSBoaXN0b3J5IHN0b3JlLhgBIhwKDwoHYmFja2VuZBIEbG9raRIJCQAAAAAAAPA/nwQKN2dyYWZhbmFfYWxlcnRpbmdfc3RhdGVfaGlzdG9yeV9yZXF1ZXN0X2R1cmF0aW9uX3NlY29uZHMSYUhpc3RvZ3JhbSBvZiByZXF1ZXN0IGR1cmF0aW9ucyB0byB0aGUgc3RhdGUgaGlzdG9yeSBzdG9yZS4gT25seSB2YWxpZCB3aGVuIHVzaW5nIGV4dGVybmFsIHN0b3Jlcy4YBCL+AgokCglvcGVyYXRpb24SF0dFVCAvbG9raS9hcGkvdjEvbGFiZWxzChIKC3N0YXR1c19jb2RlEgMyMDA6wQIIAREsfWcC5bmvPxoLCAARexSuR+F6dD8aCwgAEXsUrkfheoQ/GgsIABGamZmZmZmZPxoLCAARmpmZmZmZqT8afggBEZqZmZmZmbk/GnEKLAoIdHJhY2VfaWQSIDk0YjExYWRhY2VjYTk0NTY3ZTY3ZWE3ZjY3Y2IyMDNmCisKB3RyYWNlSUQSIDk0YjExYWRhY2VjYTk0NTY3ZTY3ZWE3ZjY3Y2IyMDNmESx9ZwLlua8/GgsIuI2ExAYQqIXtOhoLCAERAAAAAAAA0D8aCwgBEQAAAAAAAOA/GgsIAREAAAAAAADwPxoLCAERAAAAAAAABEAaCwgBEQAAAAAAABRAGgsIAREAAAAAAAAkQBoLCAERAAAAAAAAOUAaCwgBEQAAAAAAAElAGgsIAREAAAAAAABZQHoLCLiNhMQGEP2d7DrBAQoxZ3JhZmFuYV9hbGVydGluZ19zdGF0ZV9oaXN0b3J5X3dyaXRlc19ieXRlc190b3RhbBJvVGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyBzZW50IHdpdGhpbiBhIGJhdGNoIHRvIHRoZSBzdGF0ZSBoaXN0b3J5IHN0b3JlLiBPbmx5IHZhbGlkIHdoZW4gdXNpbmcgdGhlIExva2kgc3RvcmUuGAAiGRoXCQAAAAAAAAAAGgwIt42ExAYQr6Hu5AJpCihncmFmYW5hX2FsZXJ0aW5nX3RpY2tlcl9pbnRlcnZhbF9zZWNvbmRzEi5JbnRlcnZhbCBhdCB3aGljaCB0aGUgdGlja2VyIGlzIG1lYW50IHRvIHRpY2suGAEiCxIJCQAAAAAAAAAAfgo8Z3JhZmFuYV9hbGVydGluZ190aWNrZXJfbGFzdF9jb25zdW1lZF90aWNrX3RpbWVzdGFtcF9zZWNvbmRzEi9UaW1lc3RhbXAgb2YgdGhlIGxhc3QgY29uc3VtZWQgdGljayBpbiBzZWNvbmRzLhgBIgsSCQkAAAAAAAAAAIIBCjNncmFmYW5hX2FsZXJ0aW5nX3RpY2tlcl9uZXh0X3RpY2tfdGltZXN0YW1wX3NlY29uZHMSPFRpbWVzdGFtcCBvZiB0aGUgbmV4dCB0aWNrIGluIHNlY29uZHMgYmVmb3JlIGl0IGlzIGNvbnN1bWVkLhgBIgsSCQkAAAAAAAAAAMQBCjRncmFmYW5hX2Fubm90YXRpb25zX3N0YXRlX2hpc3Rvcnlfd3JpdGVzX2J5dGVzX3RvdGFsEm9UaGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHNlbnQgd2l0aGluIGEgYmF0Y2ggdG8gdGhlIHN0YXRlIGhpc3Rvcnkgc3RvcmUuIE9ubHkgdmFsaWQgd2hlbiB1c2luZyB0aGUgTG9raSBzdG9yZS4YACIZGhcJAAAAAAAAAAAaDAi3jYTEBhC82JTQAmMKJGdyYWZhbmFfYXBpX2FkbWluX3VzZXJfY3JlYXRlZF90b3RhbBIeYXBpIGFkbWluIHVzZXIgY3JlYXRlZCBjb3VudGVyGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQ6aWXzwOnAQomZ3JhZmFuYV9hcGlfZGFzaGJvYXJkX2dldF9taWxsaXNlY29uZHMSInN1bW1hcnkgZm9yIGRhc2hib2FyZCBnZXQgZHVyYXRpb24YAiJXIlUIABEAAAAAAAAAABoSCQAAAAAAAOA/EQEAAAAAAPh/GhIJzczMzMzM7D8RAQAAAAAA+H8aEgmuR+F6FK7vPxEBAAAAAAD4fyIMCJONhMQGELrylc8DqQEKJ2dyYWZhbmFfYXBpX2Rhc2hib2FyZF9zYXZlX21pbGxpc2Vjb25kcxIjc3VtbWFyeSBmb3IgZGFzaGJvYXJkIHNhdmUgZHVyYXRpb24YAiJXIlUIABEAAAAAAAAAABoSCQAAAAAAAOA/EQEAAAAAAPh/GhIJzczMzMzM7D8RAQAAAAAA+H8aEgmuR+F6FK7vPxEBAAAAAAD4fyIMCJONhMQGENSClc8DrQEKKWdyYWZhbmFfYXBpX2Rhc2hib2FyZF9zZWFyY2hfbWlsbGlzZWNvbmRzEiVzdW1tYXJ5IGZvciBkYXNoYm9hcmQgc2VhcmNoIGR1cmF0aW9uGAIiVyJVCAARAAAAAAAAAAAaEgkAAAAAAADgPxEBAAAAAAD4fxoSCc3MzMzMzOw/EQEAAAAAAPh/GhIJrkfhehSu7z8RAQAAAAAA+H8iDAiTjYTEBhDWnZfPA2cKK2dyYWZhbmFfYXBpX2Rhc2hib2FyZF9zbmFwc2hvdF9jcmVhdGVfdG90YWwSG2Rhc2hib2FyZCBzbmFwc2hvdHMgY3JlYXRlZBgAIhkaFwkAAAAAAAAAABoMCJONhMQGEMrXl88DcgotZ3JhZmFuYV9hcGlfZGFzaGJvYXJkX3NuYXBzaG90X2V4dGVybmFsX3RvdGFsEiRleHRlcm5hbCBkYXNoYm9hcmQgc25hcHNob3RzIGNyZWF0ZWQYACIZGhcJAAAAAAAAAAAaDAiTjYTEBhDI4JfPA1oKKGdyYWZhbmFfYXBpX2Rhc2hib2FyZF9zbmFwc2hvdF9nZXRfdG90YWwSEWxvYWRlZCBkYXNoYm9hcmRzGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQsumXzwOzAQouZ3JhZmFuYV9hcGlfZGF0YXByb3h5X3JlcXVlc3RfYWxsX21pbGxpc2Vjb25kcxImc3VtbWFyeSBmb3IgZGF0YXByb3h5IHJlcXVlc3QgZHVyYXRpb24YAiJXIlUIABEAAAAAAAAAABoSCQAAAAAAAOA/EQEAAAAAAPh/GhIJzczMzMzM7D8RAQAAAAAA+H8aEgmuR+F6FK7vPxEBAAAAAAD4fyIMCJONhMQGEM6ems8DVQodZ3JhZmFuYV9hcGlfbG9naW5fb2F1dGhfdG90YWwSF2FwaSBsb2dpbiBvYXV0aCBjb3VudGVyGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQ0MCXzwNTChxncmFmYW5hX2FwaV9sb2dpbl9wb3N0X3RvdGFsEhZhcGkgbG9naW4gcG9zdCBjb3VudGVyGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQ0LOXzwNTChxncmFmYW5hX2FwaV9sb2dpbl9zYW1sX3RvdGFsEhZhcGkgbG9naW4gc2FtbCBjb3VudGVyGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQ5ceXzwNeCilncmFmYW5hX2FwaV9tb2RlbHNfZGFzaGJvYXJkX2luc2VydF90b3RhbBIUZGFzaGJvYXJkcyBpbnNlcnRlZCAYACIZGhcJAAAAAAAA8D8aDAiTjYTEBhDi8pfPA1QKHGdyYWZhbmFfYXBpX29yZ19jcmVhdGVfdG90YWwSF2FwaSBvcmcgY3JlYXRlZCBjb3VudGVyGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQ0c+XzwPjAQohZ3JhZmFuYV9hcGlfcmVzcG9uc2Vfc3RhdHVzX3RvdGFsEhhhcGkgaHR0cCByZXNwb25zZSBzdGF0dXMYACImCgsKBGNvZGUSAzIwMBoXCQAAAAAAADVAGgwIk42ExAYQr/GSzwMiJgoLCgRjb2RlEgM0MDQaFwkAAAAAAAAAABoMCJONhMQGENb7ks8DIiYKCwoEY29kZRIDNTAwGhcJAAAAAAAAAAAaDAiTjYTEBhC0g5PPAyIqCg8KBGNvZGUSB3Vua25vd24aFwkAAAAAAAAAABoMCJONhMQGEO2Lk88DdQonZ3JhZmFuYV9hcGlfdXNlcl9zaWdudXBfY29tcGxldGVkX3RvdGFsEi1hbW91bnQgb2YgdXNlcnMgd2hvIGNvbXBsZXRlZCB0aGUgc2lnbnVwIGZsb3cYACIZGhcJAAAAAAAAAAAaDAiTjYTEBhD975PPA2oKJGdyYWZhbmFfYXBpX3VzZXJfc2lnbnVwX2ludml0ZV90b3RhbBIlYW1vdW50IG9mIHVzZXJzIHdobyBoYXZlIGJlZW4gaW52aXRlZBgAIhkaFwkAAAAAAAAAABoMCJONhMQGEN/8k88DcQolZ3JhZmFuYV9hcGlfdXNlcl9zaWdudXBfc3RhcnRlZF90b3RhbBIrYW1vdW50IG9mIHVzZXJzIHdobyBzdGFydGVkIHRoZSBzaWdudXAgZmxvdxgAIhkaFwkAAAAAAAAAABoMCJONhMQGEPTkk88DjAEKI2dyYWZhbmFfYXBpc2VydmVyX2F1ZGl0X2V2ZW50X3RvdGFsEkhbQUxQSEFdIENvdW50ZXIgb2YgYXVkaXQgZXZlbnRzIGdlbmVyYXRlZCBhbmQgc2VudCB0byB0aGUgYXVkaXQgYmFja2VuZC4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCT4YK8A6gBCi9ncmFmYW5hX2FwaXNlcnZlcl9hdWRpdF9yZXF1ZXN0c19yZWplY3RlZF90b3RhbBJYW0FMUEhBXSBDb3VudGVyIG9mIGFwaXNlcnZlciByZXF1ZXN0cyByZWplY3RlZCBkdWUgdG8gYW4gZXJyb3IgaW4gYXVkaXQgbG9nZ2luZyBiYWNrZW5kLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGENqXirwD8wIKN2dyYWZhbmFfYXBpc2VydmVyX2NsaWVudF9jZXJ0aWZpY2F0ZV9leHBpcmF0aW9uX3NlY29uZHMSYVtBTFBIQV0gRGlzdHJpYnV0aW9uIG9mIHRoZSByZW1haW5pbmcgbGlmZXRpbWUgb24gdGhlIGNlcnRpZmljYXRlIHVzZWQgdG8gYXV0aGVudGljYXRlIGEgcmVxdWVzdC4YBCLSATrPAQgAEQAAAAAAAAAAGgsIABEAAAAAAAAAABoLCAARAAAAAAAgnEAaCwgAEQAAAAAAIKxAGgsIABEAAAAAACC8QBoLCAARAAAAAAAY1UAaCwgAEQAAAAAAGOVAGgsIABEAAAAAABj1QBoLCAARAAAAAAAYBUEaCwgAEQAAAAAAGBVBGgsIABEAAAAAAHUiQRoLCAARAAAAAIDGQ0EaCwgAEQAAAADAqV1BGgsIABEAAAAAwKltQRoLCAARAAAAAMCpfUF6DAiTjYTEBhD9//a7A/IBCitncmFmYW5hX2FwaXNlcnZlcl9jdXJyZW50X2luZmxpZ2h0X3JlcXVlc3RzEnNbU1RBQkxFXSBNYXhpbWFsIG51bWJlciBvZiBjdXJyZW50bHkgdXNlZCBpbmZsaWdodCByZXF1ZXN0IGxpbWl0IG9mIHRoaXMgYXBpc2VydmVyIHBlciByZXF1ZXN0IGtpbmQgaW4gbGFzdCBzZWNvbmQuGAEiJQoYCgxyZXF1ZXN0X2tpbmQSCG11dGF0aW5nEgkJAAAAAAAAAAAiJQoYCgxyZXF1ZXN0X2tpbmQSCHJlYWRPbmx5EgkJAAAAAAAAAACUAQo8Z3JhZmFuYV9hcGlzZXJ2ZXJfZW52ZWxvcGVfZW5jcnlwdGlvbl9kZWtfY2FjaGVfZmlsbF9wZXJjZW50EkVbQUxQSEFdIFBlcmNlbnQgb2YgdGhlIGNhY2hlIHNsb3RzIGN1cnJlbnRseSBvY2N1cGllZCBieSBjYWNoZWQgREVLcy4YASILEgkJAAAAAAAAAACTBwo8Z3JhZmFuYV9hcGlzZXJ2ZXJfZmxvd2NvbnRyb2xfcmVhZF92c193cml0ZV9jdXJyZW50X3JlcXVlc3RzEqwBRVhQRVJJTUVOVEFMOiBbQUxQSEFdIE9ic2VydmF0aW9ucywgYXQgdGhlIGVuZCBvZiBldmVyeSBuYW5vc2Vjb25kLCBvZiB0aGUgbnVtYmVyIG9mIHJlcXVlc3RzIChhcyBhIGZyYWN0aW9uIG9mIHRoZSByZWxldmFudCBsaW1pdCkgd2FpdGluZyBvciBpbiByZWd1bGFyIHN0YWdlIG9mIGV4ZWN1dGlvbhgEIs8CChIKBXBoYXNlEglleGVjdXRpbmcKGAoMcmVxdWVzdF9raW5kEghtdXRhdGluZzqeAgiI/fa80goRH4XrkUY4V0EaEAiTq6vVzwoRAAAAAAAAAAAaEAiTq6vVzwoR/Knx0k1iUD8aEAiKwsaX0goRexSuR+F6hD8aEAiI/fa80goRmpmZmZmZuT8aEAiI/fa80goRmpmZmZmZyT8aEAiI/fa80goRMzMzMzMz0z8aEAiI/fa80goRmpmZmZmZ2T8aEAiI/fa80goRAAAAAAAA4D8aEAiI/fa80goRMzMzMzMz4z8aEAiI/fa80goRZmZmZmZm5j8aEAiI/fa80goRmpmZmZmZ6T8aEAiI/fa80goRzczMzMzM7D8aEAiI/fa80goRZmZmZmZm7j8aEAiI/fa80goRrkfhehSu7z8aEAiI/fa80goRAAAAAAAA8D8izwIKEgoFcGhhc2USCWV4ZWN1dGluZwoYCgxyZXF1ZXN0X2tpbmQSCHJlYWRPbmx5Op4CCJzd/73SChFI4Xp0b9MyQRoQCL+C7vHQChEAAAAAAAAAABoQCL+C7vHQChH8qfHSTWJQPxoQCJzd/73SChF7FK5H4XqEPxoQCJzd/73SChGamZmZmZm5PxoQCJzd/73SChGamZmZmZnJPxoQCJzd/73SChEzMzMzMzPTPxoQCJzd/73SChGamZmZmZnZPxoQCJzd/73SChEAAAAAAADgPxoQCJzd/73SChEzMzMzMzPjPxoQCJzd/73SChFmZmZmZmbmPxoQCJzd/73SChGamZmZmZnpPxoQCJzd/73SChHNzMzMzMzsPxoQCJzd/73SChFmZmZmZmbuPxoQCJzd/73SChGuR+F6FK7vPxoQCJzd/73SChEAAAAAAADwP58BCixncmFmYW5hX2FwaXNlcnZlcl9mbG93Y29udHJvbF9zZWF0X2ZhaXJfZnJhYxJgW0FMUEhBXSBGYWlyIGZyYWN0aW9uIG9mIHNlcnZlcidzIGNvbmN1cnJlbmN5IHRvIGFsbG9jYXRlIHRvIGVhY2ggcHJpb3JpdHkgbGV2ZWwgdGhhdCBjYW4gdXNlIGl0GAEiCxIJCQAAAAAAAAAAvgIKOmdyYWZhbmFfYXBpc2VydmVyX2t1YmVfYWdncmVnYXRvcl94NTA5X2luc2VjdXJlX3NoYTFfdG90YWwS4gFbQUxQSEFdIENvdW50cyB0aGUgbnVtYmVyIG9mIHJlcXVlc3RzIHRvIHNlcnZlcnMgd2l0aCBpbnNlY3VyZSBTSEExIHNpZ25hdHVyZXMgaW4gdGhlaXIgc2VydmluZyBjZXJ0aWZpY2F0ZSBPUiB0aGUgbnVtYmVyIG9mIGNvbm5lY3Rpb24gZmFpbHVyZXMgZHVlIHRvIHRoZSBpbnNlY3VyZSBTSEExIHNpZ25hdHVyZXMgKGVpdGhlci9vciwgYmFzZWQgb24gdGhlIHJ1bnRpbWUgZW52aXJvbm1lbnQpGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQ4vL8zgPKAgo4Z3JhZmFuYV9hcGlzZXJ2ZXJfa3ViZV9hZ2dyZWdhdG9yX3g1MDlfbWlzc2luZ19zYW5fdG90YWwS8AFbQUxQSEFdIENvdW50cyB0aGUgbnVtYmVyIG9mIHJlcXVlc3RzIHRvIHNlcnZlcnMgbWlzc2luZyBTQU4gZXh0ZW5zaW9uIGluIHRoZWlyIHNlcnZpbmcgY2VydGlmaWNhdGUgT1IgdGhlIG51bWJlciBvZiBjb25uZWN0aW9uIGZhaWx1cmVzIGR1ZSB0byB0aGUgbGFjayBvZiB4NTA5IGNlcnRpZmljYXRlIFNBTiBleHRlbnNpb24gbWlzc2luZyAoZWl0aGVyL29yLCBiYXNlZCBvbiB0aGUgcnVudGltZSBlbnZpcm9ubWVudCkYACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCg0fvOA5oECiZncmFmYW5hX2FwaXNlcnZlcl9sb25ncnVubmluZ19yZXF1ZXN0cxKmAVtTVEFCTEVdIEdhdWdlIG9mIGFsbCBhY3RpdmUgbG9uZy1ydW5uaW5nIGFwaXNlcnZlciByZXF1ZXN0cyBicm9rZW4gb3V0IGJ5IHZlcmIsIGdyb3VwLCB2ZXJzaW9uLCByZXNvdXJjZSwgc2NvcGUgYW5kIGNvbXBvbmVudC4gTm90IGFsbCByZXF1ZXN0cyBhcmUgdHJhY2tlZCB0aGlzIHdheS4YASKeAQoWCgljb21wb25lbnQSCWFwaXNlcnZlcgofCgVncm91cBIWYXBpcmVnaXN0cmF0aW9uLms4cy5pbwoXCgh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lcnZlciByZXF1ZXN0cyBicm9rZW4gb3V0IGZvciBlYWNoIHZlcmIsIGRyeSBydW4gdmFsdWUsIGdyb3VwLCB2ZXJzaW9uLCByZXNvdXJjZSwgc2NvcGUsIGNvbXBvbmVudCwgYW5kIEhUVFAgcmVzcG9uc2UgY29kZS4YACLFAQoLCgRjb2RlEgMyMDAKFgoJY29tcG9uZW50EglhcGlzZXJ2ZXIKCwoHZHJ5X3J1bhIAChwKBWdyb3VwEhNhZHZpc29yLmdyYWZhbmEuYXBwChIKCHJlc291cmNlEgZjaGVja3MKEgoFc2NvcGUSCW5hbWVzcGFjZQoPCgtzdWJyZXNvdXJjZRIACgwKBHZlcmISBExJU1QKEwoHdmVyc2lvbhIIdjBhbHBoYTEaFwkAAAAAAADwPxoMCLmNhMQGEMf1h58BIscBCgsKBGNvZGUSAzIwMAoWCgljb21wb25lbnQSCWFwaXNlcnZlcgoLCgdkcnlfcnVuEgAKHAoFZ3JvdXASE2Fkdmlzb3IuZ3JhZmFuYS5hcHAKFgoIcmVzb3VyY2USCmNoZWNrdHlwZXMKEQoFc2NvcGUSCHJlc291cmNlCg8KC3N1YnJlc291cmNlEgAKCwoEdmVyYhIDR0VUChMKB3ZlcnNpb24SCHYwYWxwaGExGhcJAAAAAAAAKEAaDAi5jYTEBhDsya2rASLHAQoLCgRjb2RlEgMyMDAKFgoJY29tcG9uZW50EglhcGlzZXJ2ZXIKCwoHZHJ5X3J1bhIAChwKBWdyb3VwEhNhZHZpc29yLmdyYWZhbmEuYXBwChYKCHJlc291cmNlEgpjaGVja3R5cGVzChEKBXNjb3BlEghyZXNvdXJjZQoPCgtzdWJyZXNvdXJjZRIACgsKBHZlcmISA1BVVAoTCgd2ZXJzaW9uEgh2MGFscGhhMRoXCQAAAAAAABhAGgwIuY2ExAYQm4PytAEixQEKCwoEY29kZRIDMjAwChYKCWNvbXBvbmVudBIJYXBpc2VydmVyCgsKB2RyeV9ydW4SAAofCgVncm91cBIWYXBpcmVnaXN0cmF0aW9uLms4cy5pbwoXCghyZXNvdXJjZRILYXBpc2VydmljZXMKEAoFc2NvcGUSB2NsdXN0ZXIKDwoLc3VicmVzb3VyY2USAAoMCgR2ZXJiEgRMSVNUCg0KB3ZlcnNpb24SAnYxGhcJAAAAAAAA8D8aDAi5jYTEBhCR5OiPASLLAQoLCgRjb2RlEgMyMDAKFgoJY29tcG9uZW50EglhcGlzZXJ2ZXIKCwoHZHJ5X3J1bhIACh8KBWdyb3VwEhZhcGlyZWdpc3RyYXRpb24uazhzLmlvChcKCHJlc291cmNlEgthcGlzZXJ2aWNlcwoRCgVzY29wZRIIcmVzb3VyY2UKFQoLc3VicmVzb3VyY2USBnN0YXR1cwoLCgR2ZXJiEgNQVVQKDQoHdmVyc2lvbhICdjEaFwkAAAAAAAAiQBoMCLmNhMQGEPX23swBIssBCgsKBGNvZGUSAzIwMAoWCgljb21wb25lbnQSCWFwaXNlcnZlcgoLCgdkcnlfcnVuEgAKHgoFZ3JvdXASFWRhc2hib2FyZC5ncmFmYW5hLmFwcAoWCghyZXNvdXJjZRIKZGFzaGJvYXJkcwoRCgVzY29wZRIIcmVzb3VyY2UKDwoLc3VicmVzb3VyY2USAAoOCgR2ZXJiEgZERUxFVEUKEwoHdmVyc2lvbhIIdjBhbHBoYTEaFgkAAAAAAADwPxoLCLqNhMQGEMarkjMiyQEKCwoEY29kZRIDMjAwChYKCWNvbXBvbmVudBIJYXBpc2VydmVyCgsKB2RyeV9ydW4SAAoeCgVncm91cBIVZGFzaGJvYXJkLmdyYWZhbmEuYXBwChYKCHJlc291cmNlEgpkYXNoYm9hcmRzChEKBXNjb3BlEghyZXNvdXJjZQoPCgtzdWJyZXNvdXJjZRIACgsKBHZlcmISA0dFVAoTCgd2ZXJzaW9uEgh2MGFscGhhMRoXCQAAAAAAAC5AGgwIuY2ExAYQgNXplQEixAEKCwoEY29kZRIDMjAwChYKCWNvbXBvbmVudBIJYXBpc2VydmVyCgsKB2RyeV9ydW4SAAobCgVncm91cBISZm9sZGVyLmdyYWZhbmEuYXBwChMKCHJlc291cmNlEgdmb2xkZXJzChIKBXNjb3BlEgluYW1lc3BhY2UKDwoLc3VicmVzb3VyY2USAAoMCgR2ZXJiEgRMSVNUChIKB3ZlcnNpb24SB3YxYmV0YTEaFwkAAAAAAADwPxoMCLmNhMQGEM3Ti6EBIsIBCgsKBGNvZGUSAzIwMAoWCgljb21wb25lbnQSCWFwaXNlcnZlcgoLCgdkcnlfcnVuEgAKGwoFZ3JvdXASEmZvbGRlci5ncmFmYW5hLmFwcAoTCghyZXNvdXJjZRIHZm9sZGVycwoRCgVzY29wZRIIcmVzb3VyY2UKDwoLc3VicmVzb3VyY2USAAoLCgR2ZXJiEgNHRVQKEgoHdmVyc2lvbhIHdjFiZXRhMRoXCQAAAAAAACZAGgwIuo2ExAYQ94OrowMiygEKCwoEY29kZRIDMjAwChYKCWNvbXBvbmVudBIJYXBpc2VydmVyCgsKB2RyeV9ydW4SAAocCgVncm91cBITc2VydmljZS5ncmFmYW5hLmFwcAoZCghyZXNvdXJjZRINZXh0ZXJuYWxuYW1lcwoQCgVzY29wZRIHY2x1c3RlcgoPCgtzdWJyZXNvdXJjZRIACgwKBHZlcmISBExJU1QKEwoHdmVyc2lvbhIIdjBhbHBoYTEaFwkAAAAAAADwPxoMCLmNhMQGEIjei5ABIssBCgsKBGNvZGUSAzIwMAoWCgljb21wb25lbnQSCWFwaXNlcnZlcgoLCgdkcnlfcnVuEgAKHAoFZ3JvdXASE3NlcnZpY2UuZ3JhZmFuYS5hcHAKGQoIcmVzb3VyY2USDWV4dGVybmFsbmFtZXMKEAoFc2NvcGUSB2NsdXN0ZXIKDwoLc3VicmVzb3VyY2USAAoNCgR2ZXJiEgVXQVRDSAoTCgd2ZXJzaW9uEgh2MGFscGhhMRoXCQAAAAAAAPA/GgwI/o+ExAYQ5ZLPkAEixgEKCwoEY29kZRIDMjAxChYKCWNvbXBvbmVudBIJYXBpc2VydmVyCgsKB2RyeV9ydW4SAAofCgVncm91cBIWYXBpcmVnaXN0cmF0aW9uLms4cy5pbwoXCghyZXNvdXJjZRILYXBpc2VydmljZXMKEQoFc2NvcGUSCHJlc291cmNlCg8KC3N1YnJlc291cmNlEgAKDAoEdmVyYhIEUE9TVAoNCgd2ZXJzaW9uEgJ2MRoXCQAAAAAAADVAGgwIuY2ExAYQkfCuwAEiyQEKCwoEY29kZRIDMjAxChYKCWNvbXBvbmVudBIJYXBpc2VydmVyCgsKB2RyeV9ydW4SAAoeCgVncm91cBIVZGFzaGJvYXJkLmdyYWZhbmEuYXBwChYKCHJlc291cmNlEgpkYXNoYm9hcmRzChEKBXNjb3BlEghyZXNvdXJjZQoPCgtzdWJyZXNvdXJjZRIACgsKBHZlcmISA1BVVAoTCgd2ZXJzaW9uEgh2MGFscGhhMRoXCQAAAAAAAPA/GgwIuY2ExAYQyovc/gEizAEKCwoEY29kZRIDMjAxChYKCWNvbXBvbmVudBIJYXBpc2VydmVyCgsKB2RyeV9ydW4SAAocCgVncm91cBITc2VydmljZS5ncmFmYW5hLmFwcAoZCghyZXNvdXJjZRINZXh0ZXJuYWxuYW1lcwoRCgVzY29wZRIIcmVzb3VyY2UKDwoLc3VicmVzb3VyY2USAAoNCgR2ZXJiEgVBUFBMWQoTCgd2ZXJzaW9uEgh2MGFscGhhMRoXCQAAAAAAABhAGgwIuY2ExAYQpNuSxwEiyAEKCwoEY29kZRIDNDA5ChYKCWNvbXBvbmVudBIJYXBpc2VydmVyCgsKB2RyeV9ydW4SAAocCgVncm91cBITYWR2aXNvci5ncmFmYW5hLmFwcAoWCghyZXNvdXJjZRIKY2hlY2t0eXBlcwoRCgVzY29wZRIIcmVzb3VyY2UKDwoLc3VicmVzb3VyY2USAAoMCgR2ZXJiEgRQT1NUChMKB3ZlcnNpb24SCHYwYWxwaGExGhcJAAAAAAAAGEAaDAi5jYTEBhCGpu2lASLLAQoLCgRjb2RlEgM0MDkKFgoJY29tcG9uZW50EglhcGlzZXJ2ZXIKCwoHZHJ5X3J1bhIACh8KBWdyb3VwEhZhcGlyZWdpc3RyYXRpb24uazhzLmlvChcKCHJlc291cmNlEgthcGlzZXJ2aWNlcwoRCgVzY29wZRIIcmVzb3VyY2UKFQoLc3VicmVzb3VyY2USBnN0YXR1cwoLCgR2ZXJiEgNQVVQKDQoHdmVyc2lvbhICdjEaFwkAAAAAAAAQQBoMCLmNhMQGEOThifcB7xkKIGdyYWZhbmFfYXBpc2VydmVyX3Jlc3BvbnNlX3NpemVzEndbU1RBQkxFXSBSZXNwb25zZSBzaXplIGRpc3RyaWJ1dGlvbiBpbiBieXRlcyBmb3IgZWFjaCBncm91cCwgdmVyc2lvbiwgdmVyYiwgcmVzb3VyY2UsIHN1YnJlc291cmNlLCBzY29wZSBhbmQgY29tcG9uZW50LhgEIu0CChYKCWNvbXBvbmVudBIJYXBpc2VydmVyChwKBWdyb3VwEhNhZHZpc29yLmdyYWZhbmEuYXBwChIKCHJlc291cmN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IuY2ExAYQsNqNkAEi8wIKFgoJY29tcG9uZW50EglhcGlzZXJ2ZXIKHAoFZ3JvdXASE3NlcnZpY2UuZ3JhZmFuYS5hcHAKGQoIcmVzb3VyY2USDWV4dGVybmFsbmFtZXMKEAoFc2NvcGUSB2NsdXN0ZXIKDwoLc3VicmVzb3VyY2USAAoNCgR2ZXJiEgVXQVRDSAoTCgd2ZXJzaW9uEgh2MGFscGhhMTrYAQgBEQAAAAAAVK5AGgsIABEAAAAAAECPQBpvCAERAAAAAACIw0AaYgobCgdzcGFuX2lkEhBkZDkxZmZjMzExOGE5ZjRiCiwKCHRyYWNlX2lkEiBlYTk5OTVhYjJhNjJiN2RjMWYxZjBkNjQwZmNlODc2MREAAAAAAFSuQBoMCP6PhMQGEPzC0ZABGgsIAREAAAAAAGr4QBoLCAERAAAAAICELkEaCwgBEQAAAADQEmNBGgsIAREAAAAAhNeXQRoLCAERAAAAAGXNzUF6DAj+j4TEBhDitNGQAd4KCiNncmFmYW5hX2FwaXNlcnZlcl9zZWxmcmVxdWVzdF90b3RhbBJiW0FMUEhBXSBDb3VudGVyIG9mIGFwaXNlcnZlciBzZWxmLXJlcXVlc3RzIGJyb2tlbiBvdXQgZm9yIGVhY2ggdmVyYiwgQVBJIHJlc291cmNlIGFuZCBzdWJyZXNvdXJjZS4YACJRChcKCHJlc291cmNlEgthcGlzZXJ2aWNlcwoPCgtzdWJyZXNvdXJjZRIACgwKBHZlcmISBExJU1QaFwkAAAAAAADwPxoMCLmNhMQGEN6F6Y8BIlEKFwoIcmVzb3VyY2USC2FwaXNlcnZpY2VzCg8KC3N1YnJlc291cmNlEgAKDAoEdmVyYhIEUE9TVBoXCQAAAAAAADVAGgwIuY2ExAYQi8CvwAEiVgoXCghyZXNvdXJjZRILYXBpc2VydmljZXMKFQoLc3VicmVzb3VyY2USBnN0YXR1cwoLCgR2ZXJiEgNQVVQaFwkAAAAAAAAqQBoMCLmNhMQGEPuS38wBIkwKEgoIcmVzb3VyY2USBmNoZWNrcwoPCgtzdWJyZXNvdXJjZRIACgwKBHZlcmISBExJU1QaFwkAAAAAAADwPxoMCLmNhMQGEPiaiJ8BIk8KFgoIcmVzb3VyY2USCmNoZWNrdHlwZXMKDwoLc3VicmVzb3VyY2USAAoLCgR2ZXJiEgNHRVQaFwkAAAAAAAAoQBoMCLmNhMQGEJ/wrasBIlAKFgoIcmVzb3VyY2USCmNoZWNrdHlwZXMKDwoLc3VicmVzb3VyY2USAAoMCgR2ZXJiEgRQT1NUGhcJAAAAAAAAGEAaDAi5jYTEBhDr0O2lASJPChYKCHJlc291cmNlEgpjaGVja3R5cGVzCg8KC3N1YnJlc291cmNlEgAKCwoEdmVyYhIDUFVUGhcJAAAAAAAAGEAaDAi5jYTEBhDapfK0ASJRChYKCHJlc291cmNlEgpkYXNoYm9hcmRzCg8KC3N1YnJlc291cmNlEgAKDgoEdmVyYhIGREVMRVRFGhYJAAAAAAAA8D8aCwi6jYTEBhD+05IzIk8KFgoIcmVzb3VyY2USCmRhc2hib2FyZHMKDwoLc3VicmVzb3VyY2USAAoLCgR2ZXJiEgNHRVQaFwkAAAAAAAAuQBoMCLmNhMQGEKP36ZUBIk8KFgoIcmVzb3VyY2USCmRhc2hib2FyZHMKDwoLc3VicmVzb3VyY2USAAoLCgR2ZXJiEgNQVVQaFwkAAAAAAADwPxoMCLmNhMQGEN3g3P4BIlQKGQoIcmVzb3VyY2USDWV4dGVybmFsbmFtZXMKDwoLc3VicmVzb3VyY2USAAoNCgR2ZXJiEgVBUFBMWRoXCQAAAAAAABhAGgwIuY2ExAYQq/iSxwEiUwoZCghyZXNvdXJjZRINZXh0ZXJuYWxuYW1lcwoPCgtzdWJyZXNvdXJjZRIACgwKBHZlcmISBExJU1QaFwkAAAAAAADwPxoMCLmNhMQGEPb3i5ABIlQKGQoIcmVzb3VyY2USDWV4dGVybmFsbmFtZXMKDwoLc3VicmVzb3VyY2USAAoNCgR2ZXJiEgVXQVRDSBoXCQAAAAAAAPA/GgwI/o+ExAYQ2cbPkAEiTAoTCghyZXNvdXJjZRIHZm9sZGVycwoPCgtzdWJyZXNvdXJjZRIACgsKBHZlcmISA0dFVBoXCQAAAAAAACZAGgwIuo2ExAYQvbarowMiTQoTCghyZXNvdXJjZRIHZm9sZGVycwoPCgtzdWJyZXNvdXJjZRIACgwKBHZlcmISBExJU1QaFwkAAAAAAADwPxoMCLmNhMQGEJ32i6EB6AIKPmdyYWZhbmFfYXBpc2VydmVyX3N0b3JhZ2VfZGF0YV9rZXlfZ2VuZXJhdGlvbl9kdXJhdGlvbl9zZWNvbmRzEk9bQUxQSEFdIExhdGVuY2llcyBpbiBzZWNvbmRzIG9mIGRhdGEgZW5jcnlwdGlvbiBrZXkoREVLKSBnZW5lcmF0aW9uIG9wZXJhdGlvbnMuGAQi0gE6zwEIABEAAAAAAAAAABoLCAAR8WjjiLX41D4aCwgAEfFo44i1+OQ+GgsIABHxaOOItfj0PhoLCAAR8WjjiLX4BD8aCwgAEfFo44i1+BQ/GgsIABHxaOOItfgkPxoLCAAR8WjjiLX4ND8aCwgAEfFo44i1+EQ/GgsIABHxaOOItfhUPxoLCAAR8WjjiLX4ZD8aCwgAEfFo44i1+HQ/GgsIABHxaOOItfiEPxoLCAAR8WjjiLX4lD8aCwgAEfFo44i1+KQ/egwIk42ExAYQpp+ovAOrAQo8Z3JhZmFuYV9hcGlzZXJ2ZXJfc3RvcmFnZV9kYXRhX2tleV9nZW5lcmF0aW9uX2ZhaWx1cmVzX3RvdGFsEk5bQUxQSEFdIFRvdGFsIG51bWJlciBvZiBmYWlsZWQgZGF0YSBlbmNyeXB0aW9uIGtleShERUspIGdlbmVyYXRpb24gb3BlcmF0aW9ucy4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCqsay8A7IBCkRncmFmYW5hX2FwaXNlcnZlcl9zdG9yYWdlX2VudmVsb3BlX3RyYW5zZm9ybWF0aW9uX2NhY2hlX21pc3Nlc190b3RhbBJNW0FMUEhBXSBUb3RhbCBudW1iZXIgb2YgY2FjaGUgbWlzc2VzIHdoaWxlIGFjY2Vzc2luZyBrZXkgZGVjcnlwdGlvbiBrZXkoS0VLKS4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhDB7qW8A+sKCiFncmFmYW5hX2FwaXNlcnZlcl9zdG9yYWdlX29iamVjdHMSfVtTVEFCTEVdIE51bWJlciBvZiBzdG9yZWQgb2JqZWN0cyBhdCB0aGUgdGltZSBvZiBsYXN0IGNoZWNrIHNwbGl0IGJ5IGtpbmQuIEluIGNhc2Ugb2YgYSBmZXRjaGluZyBlcnJvciwgdGhlIHZhbHVlIHdpbGwgYmUgLTEuGAEiQQo0CghyZXNvdXJjZRIoYW5ub3VuY2VtZW50LWJhbm5lcnMuYmFubmVycy5ncmFmYW5hLmFwcBIJCQAAAAAAAAAAIjsKLgoIcmVzb3VyY2USImFwaXNlcnZpY2VzLmFwaXJlZ2lzdHJhdGlvbi5rOHMuaW8SCQkAAAAAAAAAACIzCiYKCHJlc291cmNlEhpjaGVja3MuYWR2aXNvci5ncmFmYW5hLmFwcBIJCQAAAAAAAAAAIjcKKgoIcmVzb3VyY2USHmNoZWNrdHlwZXMuYWR2aXNvci5ncmFmYW5hLmFwcBIJCQAAAAAAAAAAIjkKLAoIcmVzb3VyY2USIGRhc2hib2FyZHMuZGFzaGJvYXJkLmdyYWZhbmEuYXBwEgkJAAAAAAAAAAAiOgotCghyZXNvdXJjZRIhZXh0ZXJuYWxuYW1lcy5zZXJ2aWNlLmdyYWZhbmEuYXBwEgkJAAAAAAAAAAAiMwomCghyZXNvdXJjZRIaZm9sZGVycy5mb2xkZXIuZ3JhZmFuYS5hcHASCQkAAAAAAAAAACJICjsKCHJlc291cmNlEi9pbnZlc3RpZ2F0aW9uaW5kZXhlcy5pbnZlc3RpZ2F0aW9ucy5ncmFmYW5hLmFwcBIJCQAAAAAAAAAAIkIKNQoIcmVzb3VyY2USKWludmVzdGlnYXRpb25zLmludmVzdGlnYXRpb25zLmdyYWZhbmEuYXBwEgkJAAAAAAAAAAAiPAovCghyZXNvdXJjZRIjbGlicmFyeXBhbmVscy5kYXNoYm9hcmQuZ3JhZmFuYS5hcHASCQkAAAAAAAAAACI3CioKCHJlc291cmNlEh5wbGF5bGlzdHMucGxheWxpc3QuZ3JhZmFuYS5hcHASCQkAAAAAAAAAACJACjMKCHJlc291cmNlEidxdWVyeXRlbXBsYXRlcy5xdWVyeWxpYnJhcnkuZ3JhZmFuYS5hcHASCQkAAAAAAAAAACJFCjgKCHJlc291cmNlEixyZWNlaXZlcnMubm90aWZpY2F0aW9ucy5hbGVydGluZy5ncmFmYW5hLmFwcBIJCQAAAAAAAAAAIjYKKQoIcmVzb3VyY2USHXJlcG9ydHMucmVwb3J0aW5nLmdyYWZhbmEuYXBwEgkJAAAAAAAAAAAiSAo7CghyZXNvdXJjZRIvcm91dGluZ3RyZWVzLm5vdGlmaWNhdGlvbnMuYWxlcnRpbmcuZ3JhZmFuYS5hcHASCQkAAAAAAAAAACJFCjgKCHJlc291cmNlEixzYW5kYm94LXNldHRpbmdzLnNhbmRib3hzZXR0aW5ncy5ncmFmYW5hLmFwcBIJCQAAAAAAAAAAIkoKPQoIcmVzb3VyY2USMXRlbXBsYXRlZ3JvdXBzLm5vdGlmaWNhdGlvbnMuYWxlcnRpbmcuZ3JhZmFuYS5hcHASCQkAAAAAAAAAACJJCjwKCHJlc291cmNlEjB0aW1laW50ZXJ2YWxzLm5vdGlmaWNhdGlvbnMuYWxlcnRpbmcuZ3JhZmFuYS5hcHASCQkAAAAAAAAAACI9CjAKCHJlc291cmNlEiR1c2VyLXN0b3JhZ2UudXNlcnN0b3JhZ2UuZ3JhZmFuYS5hcHASCQkAAAAAAAAAAJQBCixncmFmYW5hX2FwaXNlcnZlcl90bHNfaGFuZHNoYWtlX2Vycm9yc190b3RhbBJIW0FMUEhBXSBOdW1iZXIgb2YgcmVxdWVzdHMgZHJvcHBlZCB3aXRoICdUTFMgaGFuZHNoYWtlIGVycm9yIGZyb20nIGVycm9yGAAiGBoWCQAAAAAAAAAAGgsIuY2ExAYQ98bGBdUBCkJncmFmYW5hX2FwaXNlcnZlcl92YWxpZGF0aW9uX2RlY2xhcmF0aXZlX3ZhbGlkYXRpb25fbWlzbWF0Y2hfdG90YWwScltCRVRBXSBOdW1iZXIgb2YgdGltZXMgZGVjbGFyYXRpdmUgdmFsaWRhdGlvbiByZXN1bHRzIGRpZmZlcmVkIGZyb20gaGFuZHdyaXR0ZW4gdmFsaWRhdGlvbiByZXN1bHRzIGZvciBjb3JlIHR5cGVzLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGEN3r47sDrQEKP2dyYWZhbmFfYXBpc2VydmVyX3ZhbGlkYXRpb25fZGVjbGFyYXRpdmVfdmFsaWRhdGlvbl9wYW5pY190b3RhbBJNW0JFVEFdIE51bWJlciBvZiB0aW1lcyBkZWNsYXJhdGl2ZSB2YWxpZGF0aW9uIGhhcyBwYW5pY2tlZCBkdXJpbmcgdmFsaWRhdGlvbi4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhDPg+a7A58GCiRncmFmYW5hX2FwaXNlcnZlcl93YXRjaF9ldmVudHNfc2l6ZXMSLltBTFBIQV0gV2F0Y2ggZXZlbnQgc2l6ZSBkaXN0cmlidXRpb24gaW4gYnl0ZXMYBCKQAwofCgVncm91cBIWYXBpcmVnaXN0cmF0aW9uLms4cy5pbwoSCgRraW5kEgpBUElTZXJ2aWNlCg0KB3ZlcnNpb24SAnYxOskCCB4RAAAAAMBR1kAabwgbEQAAAAAAAJBAGmIKLAoIdHJhY2VfaWQSIDZiNGM0MTE2ZjQwYmYyMTVkYzVlYzg4ZDIwZDNkMDQ3ChsKB3NwYW5faWQSEDVjZTIxYmU4MTg4MzBjNTMRAAAAAACYjkAaDAi5jYTEBhCUjsKGAhpvCB4RAAAAAAAAoEAaYgosCgh0cmFjZV9pZBIgNmI0YzQxMTZmNDBiZjIxNWRjNWVjODhkMjBkM2QwNDcKGwoHc3Bhbl9pZBIQNWNlMjFiZTgxODgzMGM1MxEAAAAAANiQQBoMCLmNhMQGEJ/hxdgBGgsIHhEAAAAAAACwQBoLCB4RAAAAAAAAwEAaCwgeEQAAAAAAANBAGgsIHhEAAAAAAADgQBoLCB4RAAAAAAAA8EAaCwgeEQAAAAAAAABBegwIuY2ExAYQotuDwgEisQIKHAoFZ3JvdXASE3NlcnZpY2UuZ3JhZmFuYS5hcHAKFAoEa2luZBIMRXh0ZXJuYWxOYW1lChMKB3ZlcnNpb24SCHYwYWxwaGExOuUBCAYRAAAAAAAcrUAabwgGEQAAAAAAAJBAGmIKLAoIdHJhY2VfaWQSIGVhOTk5NWFiMmE2MmI3ZGMxZjFmMGQ2NDBmY2U4NzYxChsKB3NwYW5faWQSEDIwYmUxMGE3MTc2ZjY1NDERAAAAAACIg0AaDAi5jYTEBhC7mZbTARoLCAYRAAAAAAAAoEAaCwgGEQAAAAAAALBAGgsIBhEAAAAAAADAQBoLCAYRAAAAAAAA0EAaCwgGEQAAAAAAAOBAGgsIBhEAAAAAAADwQBoLCAYRAAAAAAAAAEF6DAi5jYTEBhCY+5fIAZsCCiRncmFmYW5hX2FwaXNlcnZlcl93YXRjaF9ldmVudHNfdG90YWwSLltBTFBIQV0gTnVtYmVyIG9mIGV2ZW50cyBzZW50IGluIHdhdGNoIGNsaWVudHMYACJdCh8KBWdyb3VwEhZhcGlyZWdpc3RyYXRpb24uazhzLmlvChIKBGtpbmQSCkFQSVNlcnZpY2UKDQoHdmVyc2lvbhICdjEaFwkAAAAAAAA+QBoMCLmNhMQGEPbAgcIBImIKHAoFZ3JvdXASE3NlcnZpY2UuZ3JhZmFuYS5hcHAKFAoEa2luZBIMRXh0ZXJuYWxOYW1lChMKB3ZlcnNpb24SCHYwYWxwaGExGhcJAAAAAAAAGEAaDAi5jYTEBhDkgJTIAbcCCjNncmFmYW5hX2FwaXNlcnZlcl93ZWJob29rc194NTA5X2luc2VjdXJlX3NoYTFfdG90YWwS4gFbQUxQSEFdIENvdW50cyB0aGUgbnVtYmVyIG9mIHJlcXVlc3RzIHRvIHNlcnZlcnMgd2l0aCBpbnNlY3VyZSBTSEExIHNpZ25hdHVyZXMgaW4gdGhlaXIgc2VydmluZyBjZXJ0aWZpY2F0ZSBPUiB0aGUgbnVtYmVyIG9mIGNvbm5lY3Rpb24gZmFpbHVyZXMgZHVlIHRvIHRoZSBpbnNlY3VyZSBTSEExIHNpZ25hdHVyZXMgKGVpdGhlci9vciwgYmFzZWQgb24gdGhlIHJ1bnRpbWUgZW52aXJvbm1lbnQpGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQ2bPLzgPDAgoxZ3JhZmFuYV9hcGlzZXJ2ZXJfd2ViaG9va3NfeDUwOV9taXNzaW5nX3Nhbl90b3RhbBLwAVtBTFBIQV0gQ291bnRzIHRoZSBudW1iZXIgb2YgcmVxdWVzdHMgdG8gc2VydmVycyBtaXNzaW5nIFNBTiBleHRlbnNpb24gaW4gdGhlaXIgc2VydmluZyBjZXJ0aWZpY2F0ZSBPUiB0aGUgbnVtYmVyIG9mIGNvbm5lY3Rpb24gZmFpbHVyZXMgZHVlIHRvIHRoZSBsYWNrIG9mIHg1MDkgY2VydGlmaWNhdGUgU0FOIGV4dGVuc2lvbiBtaXNzaW5nIChlaXRoZXIvb3IsIGJhc2VkIG9uIHRoZSBydW50aW1lIGVudmlyb25tZW50KRgAIhkaFwkAAAAAAAAAABoMCJONhMQGEMaQys4DmAEKI2dyYWZhbmFfYXV0aGVudGljYXRlZF91c2VyX3JlcXVlc3RzEkFbQUxQSEFdIENvdW50ZXIgb2YgYXV0aGVudGljYXRlZCByZXF1ZXN0cyBicm9rZW4gb3V0IGJ5IHVzZXJuYW1lLhgAIiwKEQoIdXNlcm5hbWUSBW90aGVyGhcJAAAAAABAWEAaDAi5jYTEBhCU9uyPAX0KH2dyYWZhbmFfYXV0aGVudGljYXRpb25fYXR0ZW1wdHMSKltBTFBIQV0gQ291bnRlciBvZiBhdXRoZW50aWNhdGVkIGF0dGVtcHRzLhgAIiwKEQoGcmVzdWx0EgdzdWNjZXNzGhcJAAAAAABAWEAaDAi5jYTEBhC3hu2PAcYDCidncmFmYW5hX2F1dGhlbnRpY2F0aW9uX2R1cmF0aW9uX3NlY29uZHMSQFtBTFBIQV0gQXV0aGVudGljYXRpb24gZHVyYXRpb24gaW4gc2Vjb25kcyBicm9rZW4gb3V0IGJ5IHJlc3VsdC4YBCLWAgoRCgZyZXN1bHQSB3N1Y2Nlc3M6wAIIYRGYd2po4qE4PxpvCGER/Knx0k1iUD8aYgosCgh0cmFjZV9pZBIgZWE5OTk1YWIyYTYyYjdkYzFmMWYwZDY0MGZjZTg3NjEKGwoHc3Bhbl9pZBIQZGQ5MWZmYzMxMThhOWY0YhFcfNeOTAHFPhoMCP6PhMQGEP3O0pABGgsIYRH8qfHSTWJgPxoLCGER/Knx0k1icD8aCwhhEfyp8dJNYoA/GgsIYRH8qfHSTWKQPxoLCGER/Knx0k1ioD8aCwhhEfyp8dJNYrA/GgsIYRH8qfHSTWLAPxoLCGER/Knx0k1i0D8aCwhhEfyp8dJNYuA/GgsIYRH8qfHSTWLwPxoLCGER/Knx0k1iAEAaCwhhEfyp8dJNYhBAGgsIYRH8qfHSTWIgQBoLCGER/Knx0k1iMEB6DAi5jYTEBhDZoO2PAW8KL2dyYWZhbmFfYXV0aG5fYXV0aG5fZmFpbGVkX2F1dGhlbnRpY2F0aW9uX3RvdGFsEiBOdW1iZXIgb2YgZmFpbGVkIGF1dGhlbnRpY2F0aW9ucxgAIhgaFgkAAAAAAAAAABoLCJSNhMQGEJTCkTrXAQokZ3JhZmFuYV9hdXRob3JpemF0aW9uX2F0dGVtcHRzX3RvdGFsEn9bQUxQSEFdIENvdW50ZXIgb2YgYXV0aG9yaXphdGlvbiBhdHRlbXB0cyBicm9rZW4gZG93biBieSByZXN1bHQuIEl0IGNhbiBiZSBlaXRoZXIgJ2FsbG93ZWQnLCAnZGVuaWVkJywgJ25vLW9waW5pb24nIG9yICdlcnJvcicuGAAiLAoRCgZyZXN1bHQSB2FsbG93ZWQaFwkAAAAAAEBYQBoMCLmNhMQGEIzz648BxAMKJmdyYWZhbmFfYXV0aG9yaXphdGlvbl9kdXJhdGlvbl9zZWNvbmRzEj9bQUxQSEFdIEF1dGhvcml6YXRpb24gZHVyYXRpb24gaW4gc2Vjb25kcyBicm9rZW4gb3V0IGJ5IHJlc3VsdC4YBCLWAgoRCgZyZXN1bHQSB2FsbG93ZWQ6wAIIYRFwTIcCQXY6PxpvCGER/Knx0k1iUD8aYgosCgh0cmFjZV9pZBIgZWE5OTk1YWIyYTYyYjdkYzFmMWYwZDY0MGZjZTg3NjEKGwoHc3Bhbl9pZBIQZGQ5MWZmYzMxMThhOWY0YhGJDyHr/9XAPhoMCP6PhMQGEL+e0pABGgsIYRH8qfHSTWJgPxoLCGER/Knx0k1icD8aCwhhEfyp8dJNYoA/GgsIYRH8qfHSTWKQPxoLCGER/Knx0k1ioD8aCwhhEfyp8dJNYrA/GgsIYRH8qfHSTWLAPxoLCGER/Knx0k1i0D8aCwhhEfyp8dJNYuA/GgsIYRH8qfHSTWLwPxoLCGER/Knx0k1iAEAaCwhhEfyp8dJNYhBAGgsIYRH8qfHSTWIgQBoLCGER/Knx0k1iMEB6DAi5jYTEBhCHj+yPAawCChJncmFmYW5hX2J1aWxkX2luZm8Sc0EgbWV0cmljIHdpdGggYSBjb25zdGFudCAnMScgdmFsdWUgbGFiZWxlZCBieSB2ZXJzaW9uLCByZXZpc2lvbiwgYnJhbmNoLCBhbmQgZ292ZXJzaW9uIGZyb20gd2hpY2ggR3JhZmFuYSB3YXMgYnVpbHQYASKeAQoOCgZicmFuY2gSBEhFQUQKFQoHZWRpdGlvbhIKZW50ZXJwcmlzZQoVCglnb3ZlcnNpb24SCGdvMS4yNC40CjQKCHJldmlzaW9uEihlNWQyZjkyMzg0OTU5YWZjNjE1MjE0MTZkOTUwMGE1NWMwOTcxYjE1Ch0KB3ZlcnNpb24SEjEyLjEuMC0xNjQyNjI0NDM5ORIJCQAAAAAAAPA/8gEKF2dyYWZhbmFfYnVpbGRfdGltZXN0YW1wEjRBIG1ldHJpYyBleHBvc2luZyB3aGVuIHRoZSBiaW5hcnkgd2FzIGJ1aWx0IGluIGVwb2NoGAEingEKDgoGYnJhbmNoEgRIRUFEChUKB2VkaXRpb24SCmVudGVycHJpc2UKFQoJZ292ZXJzaW9uEghnbzEuMjQuNAo0CghyZXZpc2lvbhIoZTVkMmY5MjM4NDk1OWFmYzYxNTIxNDE2ZDk1MDBhNTVjMDk3MWIxNQodCgd2ZXJzaW9uEhIxMi4xLjAtMTY0MjYyNDQzOTkSCQkAAMCkQSDaQc4BCiBncmFmYW5hX2NhY2hpbmdfZGVjb2Rpbmdfc2Vjb25kcxKMAVRoZSB0b3RhbCB0aW1lIHNwZW5kIGRlY29kaW5nIGRhdGEuIEF0IHRoZSB0aW1lIG9mIGVuY29kaW5nIGRhdGEsIHRoZSBkYXRhc291cmNlIGlzIG5vdCBhdmFpbGFibGUsIGFuZCBpcyB0aGVyZWZvcmUgbm90IGFuIGFwcGxpY2FibGUgbGFiZWwuGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQg/SgzwPOAQogZ3JhZmFuYV9jYWNoaW5nX2VuY29kaW5nX3NlY29uZHMSjAFUaGUgdG90YWwgdGltZSBzcGVudCBlbmNvZGluZyBkYXRhLiBBdCB0aGUgdGltZSBvZiBlbmNvZGluZyBkYXRhLCB0aGUgZGF0YXNvdXJjZSBpcyBub3QgYXZhaWxhYmxlLCBhbmQgaXMgdGhlcmVmb3JlIG5vdCBhbiBhcHBsaWNhYmxlIGxhYmVsLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGEJPtoM8DsAEKQGdyYWZhbmFfY2FyZGluYWxpdHlfZW5mb3JjZW1lbnRfdW5leHBlY3RlZF9jYXRlZ29yaXphdGlvbnNfdG90YWwST1tBTFBIQV0gVGhlIGNvdW50IG9mIHVuZXhwZWN0ZWQgY2F0ZWdvcml6YXRpb25zIGR1cmluZyBjYXJkaW5hbGl0eSBlbmZvcmNlbWVudC4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhC/ydO7A3oKImdyYWZhbmFfY2xvdWRfaW5zdGFsbF9mYWlsZWRfdG90YWwSN3VzYWdlIGNvdW50ZXIgZm9yIGNsb3VkIHBsdWdpbnMgaW5zdGFsbCBmYWlsZWQgcmVxdWVzdHMYACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCO3OzPA3UKJGdyYWZhbmFfY2xvdWRfaW5zdGFsbF9yZXF1ZXN0c190b3RhbBIwdXNhZ2UgY291bnRlciBmb3IgY2xvdWQgcGx1Z2lucyBpbnN0YWxsIHJlcXVlc3RzGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQx5HszwN8CiRncmFmYW5hX2Nsb3VkX3VuaW5zdGFsbF9mYWlsZWRfdG90YWwSN3VzYWdlIGNvdW50ZXIgZm9yIGNsb3VkIHBsdWdpbnMgcmVtb3ZhbCBmYWlsZWQgcmVxdWVzdHMYACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCBje/PA3cKJmdyYWZhbmFfY2xvdWRfdW5pbnN0YWxsX3JlcXVlc3RzX3RvdGFsEjB1c2FnZSBjb3VudGVyIGZvciBjbG91ZCBwbHVnaW5zIHJlbW92YWwgcmVxdWVzdHMYACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCm/e3PA8oCCjBncmFmYW5hX2RhdGFiYXNlX2FsbF9taWdyYXRpb25zX2R1cmF0aW9uX3NlY29uZHMSN0R1cmF0aW9uIG9mIHRoZSBlbnRpcmUgU1FMIG1pZ3JhdGlvbiBwcm9jZXNzIGluIHNlY29uZHMYBCLaAQoPCgdzdWNjZXNzEgR0cnVlOsYBCAERKM3IG75XXT8aUAgBEQAAAAAAAPB/GkMKKwoHdHJhY2VJRBIgZjZhNzc5NDUyZDczNGI0ZGU1NzM5ZDJkMTIxNGNjYjARKM3IG75XXT8aCwiUjYTEBhCloo8kKAYxAAAAAAAA8Dc4AGIFCJEBEAFoAnoLCJSNhMQGEI/ijSSCAUMKKwoHdHJhY2VJRBIgZjZhNzc5NDUyZDczNGI0ZGU1NzM5ZDJkMTIxNGNjYjARKM3IG75XXT8aCwiUjYTEBhCloo8kSwoaZ3JhZmFuYV9kYXRhYmFzZV9jb25uX2lkbGUSHlRoZSBudW1iZXIgb2YgaWRsZSBjb25uZWN0aW9ucxgBIgsSCQkAAAAAAADwP1kKHGdyYWZhbmFfZGF0YWJhc2VfY29ubl9pbl91c2USKlRoZSBudW1iZXIgb2YgY29ubmVjdGlvbnMgY3VycmVudGx5IGluIHVzZRgBIgsSCQkAAAAAAAAAAIABCi1ncmFmYW5hX2RhdGFiYXNlX2Nvbm5fbWF4X2lkbGVfY2xvc2VkX3NlY29uZHMSQFRoZSB0b3RhbCBudW1iZXIgb2YgY29ubmVjdGlvbnMgY2xvc2VkIGR1ZSB0byBTZXRDb25uTWF4SWRsZVRpbWUYACILGgkJAAAAAAAAAAB7CitncmFmYW5hX2RhdGFiYXNlX2Nvbm5fbWF4X2lkbGVfY2xvc2VkX3RvdGFsEj1UaGUgdG90YWwgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIGNsb3NlZCBkdWUgdG8gU2V0TWF4SWRsZUNvbm5zGAAiCxoJCQAAAAAAAAAAggEKL2dyYWZhbmFfZGF0YWJhc2VfY29ubl9tYXhfbGlmZXRpbWVfY2xvc2VkX3RvdGFsEkBUaGUgdG90YWwgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIGNsb3NlZCBkdWUgdG8gU2V0Q29ubk1heExpZmV0aW1lGAAiCxoJCQAAAAAAADVAYwoeZ3JhZmFuYV9kYXRhYmFzZV9jb25uX21heF9vcGVuEjJNYXhpbXVtIG51bWJlciBvZiBvcGVuIGNvbm5lY3Rpb25zIHRvIHRoZSBkYXRhYmFzZRgBIgsSCQkAAAAAAAAUQGcKGmdyYWZhbmFfZGF0YWJhc2VfY29ubl9vcGVuEjpUaGUgbnVtYmVyIG9mIGVzdGFibGlzaGVkIGNvbm5lY3Rpb25zIGJvdGggaW4gdXNlIGFuZCBpZGxlGAEiCxIJCQAAAAAAAPA/YwomZ3JhZmFuYV9kYXRhYmFzZV9jb25uX3dhaXRfY291bnRfdG90YWwSKlRoZSB0b3RhbCBudW1iZXIgb2YgY29ubmVjdGlvbnMgd2FpdGVkIGZvchgAIgsaCQkAAAAAAIBBQHEKK2dyYWZhbmFfZGF0YWJhc2VfY29ubl93YWl0X2R1cmF0aW9uX3NlY29uZHMSM1RoZSB0b3RhbCB0aW1lIGJsb2NrZWQgd2FpdGluZyBmb3IgYSBuZXcgY29ubmVjdGlvbhgAIgsaCQnUSFCep5HaP9EDCilncmFmYW5hX2RhdGFiYXNlX3F1ZXJpZXNfZHVyYXRpb25fc2Vjb25kcxIYRGF0YWJhc2UgcXVlcnkgaGlzdG9ncmFtGAQihwMKEQoGc3RhdHVzEgdzdWNjZXNzOvECCIUHERkCcoJpBgVAGgsIABHxaOOItfjkPhoLCAAR8WjjiLX4BD8aCwgAEfFo44i1+CQ/GgsIABHxaOOItfhEPxpRCLEFEfFo44i1+GQ/GkMKKwoHdHJhY2VJRBIgNDQ3ODQyZTI3MzJkMTFiMTZkZGFlNDE0MjMyNDA4NWUR5tAnlLPnWj8aCwinkITEBhDAxNASGlEI2gYR8WjjiLX4hD8aQworCgd0cmFjZUlEEiA3YWZjZDQ5YWQzNTZjNzFjYWNlNDE1MzU0OGM0MDQ1MRG+bfeJO5JmPxoLCKGQhMQGEPiA0VwaUgiFBxHxaOOItfikPxpECisKB3RyYWNlSUQSIDc5NzdmMDNjODY4MGFiNDllN2I1ZmExYzAyYjM0NzQ0EZOfCyW+04c/GgwIxo+ExAYQh5nTwwEaDAiFBxHxaOOItfjEPxoMCIUHEfFo44i1+OQ/GgwIhQcR8WjjiLX4BEB6CwiUjYTEBhD0q9QHbAonZ3JhZmFuYV9kYl9kYXRhc291cmNlX3F1ZXJ5X2J5X2lkX3RvdGFsEiRjb3VudGVyIGZvciBnZXR0aW5nIGRhdGFzb3VyY2UgYnkgaWQYACIZGhcJAAAAAAAAQkAaDAiTjYTEBhDboJjPA4gBCiNncmFmYW5hX2RlYm91bmNlcl9pdGVtc19hZGRlZF90b3RhbBIsVG90YWwgbnVtYmVyIG9mIGl0ZW1zIGFkZGVkIHRvIHRoZSBkZWJvdW5jZXIYACIxChYKBG5hbWUSDmhpc3RvcnlfcHJ1bmVyGhcJAAAAAAAACEAaDAiUjYTEBhCg7aGAApABCiVncmFmYW5hX2RlYm91bmNlcl9pdGVtc19kcm9wcGVkX3RvdGFsEjJUb3RhbCBudW1iZXIgb2YgaXRlbXMgZHJvcHBlZCBkdWUgdG8gYSBmdWxsIGJ1ZmZlchgAIjEKFgoEbmFtZRIOaGlzdG9yeV9wcnVuZXIaFwkAAAAAAAAAABoMCJSNhMQGEKSNpIACkAEKJ2dyYWZhbmFfZGVib3VuY2VyX2l0ZW1zX3Byb2Nlc3NlZF90b3RhbBIwVG90YWwgbnVtYmVyIG9mIGl0ZW1zIHByb2Nlc3NlZCBieSB0aGUgZGVib3VuY2VyGAAiMQoWCgRuYW1lEg5oaXN0b3J5X3BydW5lchoXCQAAAAAAAABAGgwIlI2ExAYQkJelgALSAgotZ3JhZmFuYV9kZWJvdW5jZXJfcHJvY2Vzc2luZ19kdXJhdGlvbl9zZWNvbmRzEhtUaW1lIHRha2VuIHRvIHByb2Nlc3MgaXRlbXMYBCKBAgoWCgRuYW1lEg5oaXN0b3J5X3BydW5lcjrmAQgCEWj5vA0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SI0EgY291bnRlciBmb3IgZW5jcnlwdGlvbiBvcGVyYXRpb25zGAAiQQoUCglvcGVyYXRpb24SB2RlY3J5cHQKEAoHc3VjY2VzcxIFZmFsc2UaFwkAAAAAAAAAABoMCJONhMQGEML/vc8DIkAKFAoJb3BlcmF0aW9uEgdkZWNyeXB0Cg8KB3N1Y2Nlc3MSBHRydWUaFwkAAAAAAAA4QBoMCJONhMQGEKrgvc8DIkEKFAoJb3BlcmF0aW9uEgdlbmNyeXB0ChAKB3N1Y2Nlc3MSBWZhbHNlGhcJAAAAAAAAAAAaDAiTjYTEBhDl8r3PAyJAChQKCW9wZXJhdGlvbhIHZW5jcnlwdAoPCgdzdWNjZXNzEgR0cnVlGhcJAAAAAABAUEAaDAiTjYTEBhDHzr3PA48DChhncmFmYW5hX2Vudmlyb25tZW50X2luZm8SYUEgbWV0cmljIHdpdGggYSBjb25zdGFudCAnMScgdmFsdWUgbGFiZWxlZCBieSBlbnZpcm9ubWVudCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcnVubmluZyBpbnN0YW5jZS4YASKNAgoRCgdjaGFubmVsEgZzdGVhZHkKMgoGY29tbWl0EihlNWQyZjkyMzg0OTU5YWZjNjE1MjE0MTZkOTUwMGE1NWMwOTcxYjE1CjsKCGRhdGFiYXNlEi9kZXYtdXMtY2VudHJhbC0wLWhvc3RlZC1ncmFmYW5hLXNoYXJlZC0yLW15c3FsOAo9ChFlbnRlcnByaXNlX2NvbW1pdBIoZjk1MTczNmU2MzQ4ZTY4NmMxNTBmYjY5ZjRmMGU1MmUxNTIxNjk0NwoMCgRwbGFuEgRwYXlnChAKCHN0YWNrX2lkEgQyMTkzCh0KB3ZlcnNpb24SEjEyLjEuMC0xNjQyNjI0NDM5ORIJCQAAAAAAAPA/eAocZ3JhZmFuYV9leHRzdmNfZGVsZXRlZF90b3RhbBI7TnVtYmVyIG9mIGV4dGVybmFsIHNlcnZpY2UgYWNjb3VudHMgZGVsZXRlZCBzaW5jZSBzdGFydCB1cC4YACIZGhcJAAAAAAAAAAAaDAiUjYTEBhD1jOqKAnQKGmdyYWZhbmFfZXh0c3ZjX3NhdmVkX3RvdGFsEjlOdW1iZXIgb2YgZXh0ZXJuYWwgc2VydmljZSBhY2NvdW50cyBzYXZlZCBzaW5jZSBzdGFydCB1cC4YACIZGhcJAAAAAAAAKkAaDAiUjYTEBhD1guqKAlMKFGdyYWZhbmFfZXh0c3ZjX3RvdGFsEixOdW1iZXIgb2YgZXh0ZXJuYWwgc2VydmljZSBhY2NvdW50cyBpbiBzdG9yZRgBIgsSCQkAAAAAAAAqQN2iAQocZ3JhZmFuYV9mZWF0dXJlX3RvZ2dsZXNfaW5mbxJAaW5mbyBtZXRyaWMgdGhhdCBleHBvc2VzIHdoYXQgZmVhdHVyZSB0b2dnbGVzIGFyZSBlbmFibGVkIG9yIG5vdBgBIiUKGAoEbmFtZRIQYWNjZXNzQWN0aW9uU2V0cxIJCQAAAAAAAPA/IigKGwoEbmFtZRITYWNjZXNzQ29udHJvbE9uQ2FsbBIJCQAAAAAAAPA/Ii8KIgoEbmFtZRIaYWNjZXNzVG9rZW5FeHBpcmF0aW9uQ2hlY2sSCQkAAAAAAADwPyI5CiwKBG5hbWUSJGFkZEZpZWxkRnJvbUNhbGN1bGF0aW9uU3RhdEZ1bmN0aW9ucxIJCQAAAAAAAPA/IjMKJgoEbmFtZRIeYWRvYmVhbmFseXRpY3NSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iKAobCgRuYW1lEhNhZHhSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iMAojCgRuYW1lEhthaUdlbmVyYXRlZERhc2hib2FyZENoYW5nZXMSCQkAAAAAAAAAACIkChcKBG5hbWUSD2FsZXJ0RW5yaWNobWVudBIJCQAAAAAAAAAAIiUKGAoEbmFtZRIQYWxlcnRSdWxlUmVzdG9yZRIJCQAAAAAAAPA/IjMKJgoEbmFtZRIeYWxlcnRSdWxlVXNlRmlyZWRBdEZvclN0YXJ0c0F0EgkJAAAAAAAA8D8iLgohCgRuYW1lEhlhbGVydFN0YXRlSGlzdG9yeUxva2lPbmx5EgkJAAAAAAAA8D8iMQokCgRuYW1lEhxhbGVydFN0YXRlSGlzdG9yeUxva2lQcmltYXJ5EgkJAAAAAAAA8D8iMwomCgRuYW1lEh5hbGVydFN0YXRlSGlzdG9yeUxva2lTZWNvbmRhcnkSCQkAAAAAAADwPyI5CiwKBG5hbWUSJGFsZXJ0aW5nQUlBbmFseXplQ2VudHJhbFN0YXRlSGlzdG9yeRIJCQAAAAAAAAAAIiwKHwoEbmFtZRIXYWxlcnRpbmdBSUdlbkFsZXJ0UnVsZXMSCQkAAAAAAAAAACIrCh4KBG5hbWUSFmFsZXJ0aW5nQUlHZW5UZW1wbGF0ZXMSCQkAAAAAAAAAACIwCiMKBG5hbWUSG2FsZXJ0aW5nQUlJbXByb3ZlQWxlcnRSdWxlcxIJCQAAAAAAAAAAIjgKKwoEbmFtZRIjYWxlcnRpbmdBbGVydG1hbmFnZXJFeHRyYURlZHVwU3RhZ2USCQkAAAAAAADwPyJECjcKBG5hbWUSL2FsZXJ0aW5nQWxlcnRtYW5hZ2VyRXh0cmFEZWR1cFN0YWdlU3RvcFBpcGVsaW5lEgkJAAAAAAAA8D8iJgoZCgRuYW1lEhFhbGVydGluZ0FwaVNlcnZlchIJCQAAAAAAAPA/IigKGwoEbmFtZRITYWxlcnRpbmdCYWNrdGVzdGluZxIJCQAAAAAAAAAAIiwKHwoEbmFtZRIXYWxlcnRpbmdCaWdUcmFuc2FjdGlvbnMSCQkAAAAAAADwPyIsCh8KBG5hbWUSF2FsZXJ0aW5nQnVsa0FjdGlvbnNJblVJEgkJAAAAAAAA8D8iMAojCgRuYW1lEhthbGVydGluZ0NlbnRyYWxBbGVydEhpc3RvcnkSCQkAAAAAAADwPyIqCh0KBG5hbWUSFWFsZXJ0aW5nRGV0YWlsc1ZpZXdWMhIJCQAAAAAAAPA/IjYKKQoEbmFtZRIhYWxlcnRpbmdEaXNhYmxlU2VuZEFsZXJ0c0V4dGVybmFsEgkJAAAAAAAA8D8iJQoYCgRuYW1lEhBhbGVydGluZ0ZpbHRlclYyEgkJAAAAAAAAAAAiMgolCgRuYW1lEh1hbGVydGluZ0ltcG9ydEFsZXJ0bWFuYWdlckFQSRIJCQAAAAAAAAAAIikKHAoEbmFtZRIUYWxlcnRpbmdJbXBvcnRZQU1MVUkSCQkAAAAAAADwPyIsCh8KBG5hbWUSF2FsZXJ0aW5nSmlyYUludGVncmF0aW9uEgkJAAAAAAAAAAAiJwoaCgRuYW1lEhJhbGVydGluZ0xpc3RWaWV3VjISCQkAAAAAAADwPyI0CicKBG5hbWUSH2FsZXJ0aW5nTGlzdFZpZXdWMlByZXZpZXdUb2dnbGUSCQkAAAAAAADwPyIoChsKBG5hbWUSE2FsZXJ0aW5nTWlncmF0aW9uVUkSCQkAAAAAAADwPyIxCiQKBG5hbWUSHGFsZXJ0aW5nTm9EYXRhRXJyb3JFeGVjdXRpb24SCQkAAAAAAADwPyIwCiMKBG5hbWUSG2FsZXJ0aW5nTm90aWZpY2F0aW9uSGlzdG9yeRIJCQAAAAAAAAAAIjIKJQoEbmFtZRIdYWxlcnRpbmdOb3RpZmljYXRpb25zU3RlcE1vZGUSCQkAAAAAAADwPyIzCiYKBG5hbWUSHmFsZXJ0aW5nUHJvbWV0aGV1c1J1bGVzUHJpbWFyeRIJCQAAAAAAAAAAIjgKKwoEbmFtZRIjYWxlcnRpbmdRdWVyeUFuZEV4cHJlc3Npb25zU3RlcE1vZGUSCQkAAAAAAADwPyIuCiEKBG5hbWUSGWFsZXJ0aW5nUXVlcnlPcHRpbWl6YXRpb24SCQkAAAAAAADwPyIyCiUKBG5hbWUSHWFsZXJ0aW5nUnVsZVBlcm1hbmVudGx5RGVsZXRlEgkJAAAAAAAA8D8iLwoiCgRuYW1lEhphbGVydGluZ1J1bGVSZWNvdmVyRGVsZXRlZBIJCQAAAAAAAPA/IjYKKQoEbmFtZRIhYWxlcnRpbmdSdWxlVmVyc2lvbkhpc3RvcnlSZXN0b3JlEgkJAAAAAAAA8D8iMAojCgRuYW1lEhthbGVydGluZ1NhdmVTdGF0ZUNvbXByZXNzZWQSCQkAAAAAAADwPyIuCiEKBG5hbWUSGWFsZXJ0aW5nU2F2ZVN0YXRlUGVyaW9kaWMSCQkAAAAAAAAAACIuCiEKBG5hbWUSGWFsZXJ0aW5nU2ltcGxpZmllZFJvdXRpbmcSCQkAAAAAAADwPyIuCiEKBG5hbWUSGWFsZXJ0aW5nVUlPcHRpbWl6ZVJlZHVjZXISCQkAAAAAAADwPyIuCiEKBG5hbWUSGWFsZXJ0bWFuYWdlclJlbW90ZVByaW1hcnkSCQkAAAAAAADwPyIwCiMKBG5hbWUSG2FsZXJ0bWFuYWdlclJlbW90ZVNlY29uZGFyeRIJCQAAAAAAAPA/IjUKKAoEbmFtZRIgYW1hem9ucHJvbWV0aGV1c1JlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIvCiIKBG5hbWUSGmFubm90YXRpb25QZXJtaXNzaW9uVXBkYXRlEgkJAAAAAAAA8D8iLgohCgRuYW1lEhlhcHBQbGF0Zm9ybUdycGNDbGllbnRBdXRoEgkJAAAAAAAA8D8iMAojCgRuYW1lEhthcHBkeW5hbWljc1JlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyItCiAKBG5hbWUSGGFzc2VydHNOYW1lc3BhY2VTZWxlY3RvchIJCQAAAAAAAPA/IiUKGAoEbmFtZRIQYXNzZXJ0c1J1bGVzVWlWMhIJCQAAAAAAAPA/IiMKFgoEbmFtZRIOYXNzZXRTcmlDaGVja3MSCQkAAAAAAADwPyIsCh8KBG5hbWUSF2FzdHJhZGJSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iKwoeCgRuYW1lEhZhdGhlbmFSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iOAorCgRuYW1lEiNhdGxhc3NpYW5zdGF0dXNwYWdlUmVtb3RlRGF0YXNvdXJjZRIJCQAAAAAAAPA/IisKHgoEbmFtZRIWYXVyb3JhUmVtb3RlRGF0YXNvdXJjZRIJCQAAAAAAAPA/IisKHgoEbmFtZRIWYXV0aEFQSUFjY2Vzc1Rva2VuQXV0aBIJCQAAAAAAAPA/IiQKFwoEbmFtZRIPYXV0aFpHUlBDU2VydmVyEgkJAAAAAAAAAAAiKwoeCgRuYW1lEhZhdXRoZW50aWNhdGlvbkNvbmZpZ1VJEgkJAAAAAAAA8D8iIQoUCgRuYW1lEgxhdXRoblNlcnZpY2USCQkAAAAAAADwPyIqCh0KBG5hbWUSFWF1dG9NaWdyYXRlR3JhcGhQYW5lbBIJCQAAAAAAAPA/Ii0KIAoEbmFtZRIYYXV0b01pZ3JhdGVQaWVjaGFydFBhbmVsEgkJAAAAAAAA8D8iKQocCgRuYW1lEhRhdXRvTWlncmF0ZVN0YXRQYW5lbBIJCQAAAAAAAPA/IioKHQoEbmFtZRIVYXV0b01pZ3JhdGVUYWJsZVBhbmVsEgkJAAAAAAAA8D8iLQogCgRuYW1lEhhhdXRvTWlncmF0ZVdvcmxkbWFwUGFuZWwSCQkAAAAAAADwPyIsCh8KBG5hbWUSF2F1dG9NaWdyYXRlWFlDaGFydFBhbmVsEgkJAAAAAAAA8D8iKQocCgRuYW1lEhRhd3NBc3luY1F1ZXJ5Q2FjaGluZxIJCQAAAAAAAPA/IjEKJAoEbmFtZRIcYXdzRGF0YXNvdXJjZXNOZXdGb3JtU3R5bGluZxIJCQAAAAAAAPA/IjIKJQoEbmFtZRIdYXdzRGF0YXNvdXJjZXNUZW1wQ3JlZGVudGlhbHMSCQkAAAAAAADwPyIyCiUKBG5hbWUSHWF6dXJlQ29zbW9zZGJSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iMAojCgRuYW1lEhthenVyZU1vbml0b3JEaXNhYmxlTG9nTGltaXQSCQkAAAAAAAAAACIvCiIKBG5hbWUSGmF6dXJlTW9uaXRvckVuYWJsZVVzZXJBdXRoEgkJAAAAAAAA8D8iMgolCgRuYW1lEh1henVyZU1vbml0b3JMb2dzQnVpbGRlckVkaXRvchIJCQAAAAAAAAAAIjQKJwoEbmFtZRIfYXp1cmVNb25pdG9yUHJvbWV0aGV1c0V4ZW1wbGFycxIJCQAAAAAAAPA/IjEKJAoEbmFtZRIcYXp1cmVNb25pdG9yUmVtb3RlRGF0YXNvdXJjZRIJCQAAAAAAAPA/IjAKIwoEbmFtZRIbYXp1cmVkZXZvcHNSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iKAobCgRuYW1lEhNiZXR0ZXJQYWdlU2Nyb2xsaW5nEgkJAAAAAAAA8D8iLQogCgRuYW1lEhhiaWdRdWVyeVJlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyI8Ci8KBG5hbWUSJ2NhY2hpbmdPcHRpbWl6ZVNlcmlhbGl6YXRpb25NZW1vcnlVc2FnZRIJCQAAAAAAAAAAIicKGgoEbmFtZRISY2FudmFzUGFuZWxOZXN0aW5nEgkJAAAAAAAAAAAiJwoaCgRuYW1lEhJjYW52YXNQYW5lbFBhblpvb20SCQkAAAAAAADwPyIvCiIKBG5hbWUSGmNhdGNocG9pbnRSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iHwoSCgRuYW1lEgpjZG5QbHVnaW5zEgkJAAAAAAAA8D8iLwoiCgRuYW1lEhpjbGlja2hvdXNlUmVtb3RlRGF0YXNvdXJjZRIJCQAAAAAAAPA/IigKGwoEbmFtZRITY2xpZW50VG9rZW5Sb3RhdGlvbhIJCQAAAAAAAPA/IjAKIwoEbmFtZRIbY2xvdWRIb21lQ29ubmVjdGlvblByZXZpZXdzEgkJAAAAAAAA8D8iMQokCgRuYW1lEhxjbG91ZE1vbml0b3JSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iMgolCgRuYW1lEh1jbG91ZE1vbml0b3JpbmdFeHBlcmltZW50YWxVSRIJCQAAAAAAAPA/Ii4KIQoEbmFtZRIZY2xvdWRPbmJvYXJkaW5nRmFyb0xpc3RlZBIJCQAAAAAAAPA/IiMKFgoEbmFtZRIOY2xvdWRSQkFDUm9sZXMSCQkAAAAAAAAAACIrCh4KBG5hbWUSFmNsb3VkV2F0Y2hCYXRjaFF1ZXJpZXMSCQkAAAAAAADwPyIzCiYKBG5hbWUSHmNsb3VkV2F0Y2hDcm9zc0FjY291bnRRdWVyeWluZxIJCQAAAAAAAPA/IiwKHwoEbmFtZRIXY2xvdWRXYXRjaER5bmFtaWNMYWJlbHMSCQkAAAAAAADwPyIvCiIKBG5hbWUSGmNsb3VkV2F0Y2hMb2dzTW9uYWNvRWRpdG9yEgkJAAAAAAAA8D8iLgohCgRuYW1lEhljbG91ZFdhdGNoTmV3TGFiZWxQYXJzaW5nEgkJAAAAAAAA8D8iLQogCgRuYW1lEhhjbG91ZFdhdGNoUm91bmRVcEVuZFRpbWUSCQkAAAAAAADwPyIvCiIKBG5hbWUSGmNsb3VkZmxhcmVSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iNwoqCgRuYW1lEiJjbG91ZHdhdGNoRXh0ZXJuYWxSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAAAAAiOQosCgRuYW1lEiRjbG91ZHdhdGNoTWV0cmljSW5zaWdodHNDcm9zc0FjY291bnQSCQkAAAAAAADwPyIwCiMKBG5hbWUSG2Nsb3Vkd2F0Y2hOZXdSZWdpb25zSGFuZGxlchIJCQAAAAAAAPA/Ii8KIgoEbmFtZRIaY2xvdWR3YXRjaFJlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIwCiMKBG5hbWUSG2NvY2tyb2FjaGRiUmVtb3RlRGF0YXNvdXJjZRIJCQAAAAAAAPA/IiEKFAoEbmFtZRIMY29sbGVjdG9yQXBwEgkJAAAAAAAA8D8iLgohCgRuYW1lEhljb25maWd1cmFibGVTY2hlZHVsZXJUaWNrEgkJAAAAAAAAAAAiNAonCgRuYW1lEh9jb25uZWN0aW9uc0VuYWJsZUluZmluaXR5V2l6YXJkEgkJAAAAAAAA8D8iIQoUCgRuYW1lEgxjb3JyZWxhdGlvbnMSCQkAAAAAAADwPyIlChgKBG5hbWUSEGNvc3RNYW5hZ2VtZW50VWkSCQkAAAAAAADwPyIjChYKBG5hbWUSDmNyYXNoRGV0ZWN0aW9uEgkJAAAAAAAA8D8iNwoqCgRuYW1lEiJkYXNoYm9hcmREaXNhYmxlU2NoZW1hVmFsaWRhdGlvblYxEgkJAAAAAAAAAAAiNwoqCgRuYW1lEiJkYXNoYm9hcmREaXNhYmxlU2NoZW1hVmFsaWRhdGlvblYyEgkJAAAAAAAAAAAiKAobCgRuYW1lEhNkYXNoYm9hcmROZXdMYXlvdXRzEgkJAAAAAAAAAAAiJQoYCgRuYW1lEhBkYXNoYm9hcmRSZXN0b3JlEgkJAAAAAAAAAAAiJwoaCgRuYW1lEhJkYXNoYm9hcmRSZXN0b3JlVUkSCQkAAAAAAAAAACIjChYKBG5hbWUSDmRhc2hib2FyZFNjZW5lEgkJAAAAAAAA8D8iLQogCgRuYW1lEhhkYXNoYm9hcmRTY2VuZUZvclZpZXdlcnMSCQkAAAAAAADwPyInChoKBG5hbWUSEmRhc2hib2FyZFNjZW5lU29sbxIJCQAAAAAAAPA/IjUKKAoEbmFtZRIgZGFzaGJvYXJkU2NoZW1hVmFsaWRhdGlvbkxvZ2dpbmcSCQkAAAAAAAAAACIcCg8KBG5hbWUSB2Rhc2hncHQSCQkAAAAAAADwPyIpChwKBG5hbWUSFGRhdGFTb3VyY2VQYWdlSGVhZGVyEgkJAAAAAAAA8D8iJQoYCgRuYW1lEhBkYXRhYmFzZV9tZXRyaWNzEgkJAAAAAAAA8D8iLwoiCgRuYW1lEhpkYXRhYnJpY2tzUmVtb3RlRGF0YXNvdXJjZRIJCQAAAAAAAPA/IiwKHwoEbmFtZRIXZGF0YWRvZ1JlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIoChsKBG5hbWUSE2RhdGFwbGFuZUFnZ3JlZ2F0b3ISCQkAAAAAAAAAACIuCiEKBG5hbWUSGWRhdGFwbGFuZUZyb250ZW5kRmFsbGJhY2sSCQkAAAAAAADwPyIpChwKBG5hbWUSFGRhdGFzb3VyY2VBUElTZXJ2ZXJzEgkJAAAAAAAAAAAiLQogCgRuYW1lEhhkYXRhc291cmNlQ29ubmVjdGlvbnNUYWISCQkAAAAAAADwPyIpChwKBG5hbWUSFGRhdGFzb3VyY2VRdWVyeVR5cGVzEgkJAAAAAAAAAAAiKgodCgRuYW1lEhVkYm8xMXlSZWNvbW1lbmRhdGlvbnMSCQkAAAAAAADwPyIwCiMKBG5hbWUSG2Rpc2FibGVDbGFzc2ljSFRUUEhpc3RvZ3JhbRIJCQAAAAAAAAAAIi4KIQoEbmFtZRIZZGlzYWJsZUVudmVsb3BlRW5jcnlwdGlvbhIJCQAAAAAAAAAAIj4KMQoEbmFtZRIpZGlzYWJsZU51bWVyaWNNZXRyaWNzU29ydGluZ0luRXhwcmVzc2lvbnMSCQkAAAAAAAAAACIoChsKBG5hbWUSE2Rpc2FibGVTU0VEYXRhcGxhbmUSCQkAAAAAAAAAACIjChYKBG5hbWUSDmRvY2tlZE1lZ2FNZW51EgkJAAAAAAAA8D8iKgodCgRuYW1lEhVkcm9uZVJlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyItCiAKBG5hbWUSGGR1YWxXcml0ZURhc2hib2FyZHNNb2RlMRIJCQAAAAAAAPA/Ii0KIAoEbmFtZRIYZHVhbFdyaXRlRGFzaGJvYXJkc01vZGUyEgkJAAAAAAAAAAAiNwoqCgRuYW1lEiJkdWFsV3JpdGVEYXNoYm9hcmRzUGVyaW9kU3luY01vZGUxEgkJAAAAAAAAAAAiOQosCgRuYW1lEiRkdWFsV3JpdGVEYXNoYm9hcmRzUGVyaW9kaWNTeW5jTW9kZTESCQkAAAAAAAAAACI5CiwKBG5hbWUSJGR1YWxXcml0ZURhc2hib2FyZHNQZXJpb2RpY1N5bmNNb2RlMhIJCQAAAAAAAAAAIioKHQoEbmFtZRIVZHVhbFdyaXRlRm9sZGVyc01vZGUxEgkJAAAAAAAA8D8iKgodCgRuYW1lEhVkdWFsV3JpdGVGb2xkZXJzTW9kZTISCQkAAAAAAAAAACI2CikKBG5hbWUSIWR1YWxXcml0ZUZvbGRlcnNQZXJpb2RpY1N5bmNNb2RlMRIJCQAAAAAAAAAAIjYKKQoEbmFtZRIhZHVhbFdyaXRlRm9sZGVyc1BlcmlvZGljU3luY01vZGUyEgkJAAAAAAAAAAAiLAofCgRuYW1lEhdkdWFsV3JpdGVQbGF5bGlzdHNNb2RlMhIJCQAAAAAAAPA/IiwKHwoEbmFtZRIXZHVhbFdyaXRlUGxheWxpc3RzTW9kZTMSCQkAAAAAAADwPyIsCh8KBG5hbWUSF2R1YWxXcml0ZVBsYXlsaXN0c01vZGU0EgkJAAAAAAAA8D8iLgohCgRuYW1lEhlkeW5hdHJhY2VSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iLAofCgRuYW1lEhdlZGl0UGFuZWxDU1ZEcmFnQW5kRHJvcBIJCQAAAAAAAAAAIjIKJQoEbmFtZRIdZWxhc3RpY1NlYXJjaFJlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyI0CicKBG5hbWUSH2VsYXN0aWNzZWFyY2hDcm9zc0NsdXN0ZXJTZWFyY2gSCQkAAAAAAADwPyIxCiQKBG5hbWUSHGVsYXN0aWNzZWFyY2hJbXByb3ZlZFBhcnNpbmcSCQkAAAAAAADwPyIuCiEKBG5hbWUSGWVuYWJsZUFwcENocm9tZUV4dGVuc2lvbnMSCQkAAAAAAAAAACItCiAKBG5hbWUSGGVuYWJsZURhc2hib2FyZE1pZ3JhdGlvbhIJCQAAAAAAAAAAIioKHQoEbmFtZRIVZW5hYmxlRGF0YWdyaWRFZGl0aW5nEgkJAAAAAAAAAAAiKAobCgRuYW1lEhNlbmFibGVFeGVjdXRpb25QbGFuEgkJAAAAAAAA8D8iLgohCgRuYW1lEhllbmFibGVFeHRlbnNpb25zQWRtaW5QYWdlEgkJAAAAAAAAAAAiKgodCgRuYW1lEhVlbmFibGVGb2xkZXJNaWdyYXRpb24SCQkAAAAAAAAAACIpChwKBG5hbWUSFGVuYWJsZUxMTUludGVncmF0aW9uEgkJAAAAAAAA8D8iLgohCgRuYW1lEhllbmFibGVOYXRpdmVIVFRQSGlzdG9ncmFtEgkJAAAAAAAA8D8iKQocCgRuYW1lEhRlbmFibGVQbHVnaW5JbXBvcnRlchIJCQAAAAAAAAAAIicKGgoEbmFtZRISZW5hYmxlUXVlcnlTYW1wbGVzEgkJAAAAAAAA8D8iHwoSCgRuYW1lEgplbmFibGVTQ0lNEgkJAAAAAAAAAAAiMQokCgRuYW1lEhxlbmFibGVTY29wZXNJbk1ldHJpY3NFeHBsb3JlEgkJAAAAAAAAAAAiJQoYCgRuYW1lEhBlbmFibGVXYWl0RXZlbnRzEgkJAAAAAAAA8D8iJwoaCgRuYW1lEhJlbnZlbG9wZUVuY3J5cHRpb24SCQkAAAAAAADwPyIxCiQKBG5hbWUSHGV4cGxvcmVMb2dzQWdncmVnYXRlZE1ldHJpY3MSCQkAAAAAAAAAACIwCiMKBG5hbWUSG2V4cGxvcmVMb2dzTGltaXRlZFRpbWVSYW5nZRIJCQAAAAAAAAAAIi4KIQoEbmFtZRIZZXhwbG9yZUxvZ3NTaGFyZFNwbGl0dGluZxIJCQAAAAAAAAAAIi4KIQoEbmFtZRIZZXhwbG9yZU1ldHJpY3NSZWxhdGVkTG9ncxIJCQAAAAAAAAAAIjcKKgoEbmFtZRIiZXhwbG9yZU1ldHJpY3NVc2VFeHRlcm5hbEFwcFBsdWdpbhIJCQAAAAAAAPA/IisKHgoEbmFtZRIWZXhwbG9yZU1peGVkRGF0YXNvdXJjZRIJCQAAAAAAAPA/IiUKGAoEbmFtZRIQZXhwcmVzc2lvblBhcnNlchIJCQAAAAAAAAAAIiUKGAoEbmFtZRIQZXh0ZW5zaW9uU2lkZWJhchIJCQAAAAAAAPA/IigKGwoEbmFtZRITZXh0ZXJuYWxDb3JlUGx1Z2lucxIJCQAAAAAAAPA/IigKGwoEbmFtZRITZXh0ZXJuYWxFbnRpdHlSaW5ncxIJCQAAAAAAAPA/IiwKHwoEbmFtZRIXZXh0ZXJuYWxTZXJ2aWNlQWNjb3VudHMSCQkAAAAAAADwPyIgChMKBG5hbWUSC2V4dHJhVGhlbWVzEgkJAAAAAAAAAAAiMwomCgRuYW1lEh5leHRyYWN0RmllbGRzTmFtZURlZHVwbGljYXRpb24SCQkAAAAAAAAAACIjChYKBG5hbWUSDmZhaWxXcm9uZ0RTVUlEEgkJAAAAAAAA8D8iMwomCgRuYW1lEh5mYWxjb25sb2dzY2FsZVJlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIrCh4KBG5hbWUSFmZhcm9EYXRhc291cmNlU2VsZWN0b3ISCQkAAAAAAAAAACImChkKBG5hbWUSEWZlYXR1cmVIaWdobGlnaHRzEgkJAAAAAAAA8D8iKwoeCgRuYW1lEhZmZWF0dXJlVG9nZ2xlQWRtaW5QYWdlEgkJAAAAAAAAAAAiKAobCgRuYW1lEhNmZWF0dXJlZENvbm5lY3Rpb25zEgkJAAAAAAAA8D8iIwoWCgRuYW1lEg5mZWVkYmFja0J1dHRvbhIJCQAAAAAAAAAAIi0KIAoEbmFtZRIYZmVvMTF5VXNlckFjdGlvblRyYWNraW5nEgkJAAAAAAAA8D8iKAobCgRuYW1lEhNmZXRjaFJ1bGVzVXNpbmdQb3N0EgkJAAAAAAAA8D8iLQogCgRuYW1lEhhmbGFtZUdyYXBoSXRlbUNvbGxhcHNpbmcSCQkAAAAAAADwPyIkChcKBG5hbWUSD2ZsZWV0TWFuYWdlbWVudBIJCQAAAAAAAPA/IjYKKQoEbmFtZRIhZmxlZXRNYW5hZ2VtZW50UHlyb3Njb3BlRXh0ZW5zaW9uEgkJAAAAAAAA8D8iKgodCgRuYW1lEhVmb2xkZXJzQXBwUGxhdGZvcm1BUEkSCQkAAAAAAAAAACIhChQKBG5hbWUSDGZvcm1hdFN0cmluZxIJCQAAAAAAAPA/IjAKIwoEbmFtZRIbZ2NvbU9ubHlFeHRlcm5hbE9yZ1JvbGVTeW5jEgkJAAAAAAAA8D8iKwoeCgRuYW1lEhZnaXRodWJSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iKwoeCgRuYW1lEhZnaXRsYWJSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iMQokCgRuYW1lEhxnb29nbGVTaGVldHNSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iQAozCgRuYW1lEitnb29nbGVTaGVldHNSZW1vdGVEYXRhc291cmNlTWFpbk9ubHlSb2xsb3V0EgkJAAAAAAAA8D8iJQoYCgRuYW1lEhBncmFmYW5hQVBJU2VydmVyEgkJAAAAAAAA8D8iIwoWCgRuYW1lEg5ncmFmYW5hQWR2aXNvchIJCQAAAAAAAPA/IjEKJAoEbmFtZRIcZ3JhZmFuYU1hbmFnZWRSZWNvcmRpbmdSdWxlcxIJCQAAAAAAAPA/IjwKLwoEbmFtZRInZ3JhZmFuYU1hbmFnZWRSZWNvcmRpbmdSdWxlc0RhdGFzb3VyY2VzEgkJAAAAAAAA8D8iJQoYCgRuYW1lEhBncmFmYW5hY29uVGhlbWVzEgkJAAAAAAAA8D8iJwoaCgRuYW1lEhJncm91cEF0dHJpYnV0ZVN5bmMSCQkAAAAAAADwPyIkChcKBG5hbWUSD2dyb3VwQnlWYXJpYWJsZRIJCQAAAAAAAAAAIjUKKAoEbmFtZRIgZ3JvdXBUb05lc3RlZFRhYmxlVHJhbnNmb3JtYXRpb24SCQkAAAAAAADwPyIfChIKBG5hbWUSCmdycGNTZXJ2ZXISCQkAAAAAAADwPyIzCiYKBG5hbWUSHmhnYXBpLmNvbW11bml0eS1yZW1vdGUtcGx1Z2lucxIJCQAAAAAAAPA/IiMKFgoEbmFtZRIOaG9tZVNldHVwR3VpZGUSCQkAAAAAAADwPyIuCiEKBG5hbWUSGWhvbmV5Y29tYlJlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIiChUKBG5hbWUSDWh0dHBTTE9MZXZlbHMSCQkAAAAAAADwPyIhChQKBG5hbWUSDGlkRm9yd2FyZGluZxIJCQAAAAAAAPA/IjQKJwoEbmFtZRIfaW1wcm92ZWRFeHRlcm5hbFNlc3Npb25IYW5kbGluZxIJCQAAAAAAAPA/IjgKKwoEbmFtZRIjaW1wcm92ZWRFeHRlcm5hbFNlc3Npb25IYW5kbGluZ1NBTUwSCQkAAAAAAADwPyIwCiMKBG5hbWUSG2luZGl2aWR1YWxDb29raWVQcmVmZXJlbmNlcxIJCQAAAAAAAAAAIi0KIAoEbmFtZRIYaW5maW5pdHlSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iMQokCgRuYW1lEhxpbmZpbml0eVJ1blF1ZXJpZXNJblBhcmFsbGVsEgkJAAAAAAAAAAAiKwoeCgRuYW1lEhZpbmZsdXhSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iLQogCgRuYW1lEhhpbmZsdXhkYkJhY2tlbmRNaWdyYXRpb24SCQkAAAAAAADwPyIxCiQKBG5hbWUSHGluZmx1eGRiUnVuUXVlcmllc0luUGFyYWxsZWwSCQkAAAAAAAAAACIsCh8KBG5hbWUSF2luZmx1eHFsU3RyZWFtaW5nUGFyc2VyEgkJAAAAAAAAAAAiKgodCgRuYW1lEhVpbnZlc3RpZ2F0aW9uc0JhY2tlbmQSCQkAAAAAAADwPyIrCh4KBG5hbWUSFmludml0ZVVzZXJFeHBlcmltZW50YWwSCQkAAAAAAADwPyIrCh4KBG5hbWUSFmphZWdlckJhY2tlbmRNaWdyYXRpb24SCQkAAAAAAADwPyIrCh4KBG5hbWUSFmphZWdlclJlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIpChwKBG5hbWUSFGppcmFSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iJQoYCgRuYW1lEhBqaXR0ZXJBbGVydFJ1bGVzEgkJAAAAAAAA8D8iMQokCgRuYW1lEhxqaXR0ZXJBbGVydFJ1bGVzV2l0aGluR3JvdXBzEgkJAAAAAAAAAAAiJAoXCgRuYW1lEg9rOFNGb2xkZXJDb3VudHMSCQkAAAAAAAAAACIiChUKBG5hbWUSDWs4U0ZvbGRlck1vdmUSCQkAAAAAAAAAACIpChwKBG5hbWUSFGs4c0FsbG95SW5zdHJ1Y3Rpb25zEgkJAAAAAAAA8D8iKQocCgRuYW1lEhRrdWJlcm5ldGVzQWdncmVnYXRvchIJCQAAAAAAAPA/IjUKKAoEbmFtZRIga3ViZXJuZXRlc0FnZ3JlZ2F0b3JDYXBUb2tlbkF1dGgSCQkAAAAAAADwPyIoChsKBG5hbWUSE2t1YmVybmV0ZXNBdXRoekFwaXMSCQkAAAAAAAAAACI2CikKBG5hbWUSIWt1YmVybmV0ZXNDbGllbnREYXNoYm9hcmRzRm9sZGVycxIJCQAAAAAAAPA/IikKHAoEbmFtZRIUa3ViZXJuZXRlc0Rhc2hib2FyZHMSCQkAAAAAAADwPyIsCh8KBG5hbWUSF2t1YmVybmV0ZXNEYXNoYm9hcmRzQVBJEgkJAAAAAAAA8D8iLQogCgRuYW1lEhhrdWJlcm5ldGVzRmVhdHVyZVRvZ2dsZXMSCQkAAAAAAAAAACImChkKBG5hbWUSEWt1YmVybmV0ZXNGb2xkZXJzEgkJAAAAAAAA8D8iNgopCgRuYW1lEiFrdWJlcm5ldGVzTGlicmFyeVBhbmVsQ29ubmVjdGlvbnMSCQkAAAAAAADwPyIsCh8KBG5hbWUSF2t1YmVybmV0ZXNMaWJyYXJ5UGFuZWxzEgkJAAAAAAAAAAAiKAobCgRuYW1lEhNrdWJlcm5ldGVzUGxheWxpc3RzEgkJAAAAAAAA8D8iKAobCgRuYW1lEhNrdWJlcm5ldGVzU25hcHNob3RzEgkJAAAAAAAAAAAiJQoYCgRuYW1lEhBsaWJyYXJ5UGFuZWxSQkFDEgkJAAAAAAAA8D8iKwoeCgRuYW1lEhZsb2NhbGVGb3JtYXRQcmVmZXJlbmNlEgkJAAAAAAAA8D8iKwoeCgRuYW1lEhZsb2NhbGl6YXRpb25Gb3JQbHVnaW5zEgkJAAAAAAAA8D8iHwoSCgRuYW1lEgpsb2dRTFNjb3BlEgkJAAAAAAAAAAAiNQooCgRuYW1lEiBsb2dSZXF1ZXN0c0luc3RydW1lbnRlZEFzVW5rbm93bhIJCQAAAAAAAAAAIicKGgoEbmFtZRISbG9nUm93c1BvcG92ZXJNZW51EgkJAAAAAAAA8D8iMQokCgRuYW1lEhxsb2dpY21vbml0b3JSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iLAofCgRuYW1lEhdsb2dzQ29udGV4dERhdGFzb3VyY2VVaRIJCQAAAAAAAPA/IjkKLAoEbmFtZRIkbG9nc0V4cGxvcmVUYWJsZURlZmF1bHRWaXN1YWxpemF0aW9uEgkJAAAAAAAAAAAiMgolCgRuYW1lEh1sb2dzRXhwbG9yZVRhYmxlVmlzdWFsaXNhdGlvbhIJCQAAAAAAAPA/IioKHQoEbmFtZRIVbG9nc0luZmluaXRlU2Nyb2xsaW5nEgkJAAAAAAAA8D8iJgoZCgRuYW1lEhFsb2dzUGFuZWxDb250cm9scxIJCQAAAAAAAPA/Ii4KIQoEbmFtZRIZbG9raUV4cGVyaW1lbnRhbFN0cmVhbWluZxIJCQAAAAAAAAAAIisKHgoEbmFtZRIWbG9raUxhYmVsTmFtZXNRdWVyeUFwaRIJCQAAAAAAAPA/IiYKGQoEbmFtZRIRbG9raUxvZ3NEYXRhcGxhbmUSCQkAAAAAAAAAACInChoKBG5hbWUSEmxva2lRdWVyeVNwbGl0dGluZxIJCQAAAAAAAPA/IikKHAoEbmFtZRIUbG9raVJlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyItCiAKBG5hbWUSGGxva2lSdW5RdWVyaWVzSW5QYXJhbGxlbBIJCQAAAAAAAAAAIjAKIwoEbmFtZRIbbG9raVNlbmREYXNoYm9hcmRQYW5lbE5hbWVzEgkJAAAAAAAA8D8iJwoaCgRuYW1lEhJsb2tpU2hhcmRTcGxpdHRpbmcSCQkAAAAAAAAAACIrCh4KBG5hbWUSFmxva2lTdHJ1Y3R1cmVkTWV0YWRhdGESCQkAAAAAAADwPyIrCh4KBG5hbWUSFmxvb2tlclJlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIkChcKBG5hbWUSD21haW5Pbmx5Um9sbG91dBIJCQAAAAAAAPA/IiYKGQoEbmFtZRIRbWFuYWdlZER1YWxXcml0ZXISCQkAAAAAAAAAACIqCh0KBG5hbWUSFW1hbmFnZWRQbHVnaW5zSW5zdGFsbBIJCQAAAAAAAPA/IigKGwoEbmFtZRITbWV0cmljc0Zyb21Qcm9maWxlcxIJCQAAAAAAAPA/IiMKFgoEbmFtZRIObWV0cmljc1N1bW1hcnkSCQkAAAAAAADwPyIlChgKBG5hbWUSEG1pZ3JhdGlvbkxvY2tpbmcSCQkAAAAAAADwPyIiChUKBG5hbWUSDW1sRXhwcmVzc2lvbnMSCQkAAAAAAAAAACIsCh8KBG5hbWUSF21vbmdvZGJSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iKgodCgRuYW1lEhVtc3NxbFJlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIlChgKBG5hbWUSEG10UXVlcmllckVuYWJsZWQSCQkAAAAAAADwPyIfChIKBG5hbWUSCm11bHRpLWh0dHASCQkAAAAAAADwPyIoChsKBG5hbWUSE211bHRpVGVuYW50RnJvbnRlbmQSCQkAAAAAAAAAACIvCiIKBG5hbWUSGm11bHRpVGVuYW50VGVtcENyZWRlbnRpYWxzEgkJAAAAAAAA8D8iJAoXCgRuYW1lEg9teXNxbEFuc2lRdW90ZXMSCQkAAAAAAADwPyIjChYKBG5hbWUSDm15c3FsUGFyc2VUaW1lEgkJAAAAAAAA8D8iKgodCgRuYW1lEhVteXNxbFJlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIoChsKBG5hbWUSE25hdkFkbWluU3Vic2VjdGlvbnMSCQkAAAAAAADwPyIiChUKBG5hbWUSDW5lc3RlZEZvbGRlcnMSCQkAAAAAAADwPyIsCh8KBG5hbWUSF25ldGxpZnlSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iKAobCgRuYW1lEhNuZXdCcm93c2VEYXNoYm9hcmRzEgkJAAAAAAAA8D8iMQokCgRuYW1lEhxuZXdEYXNoYm9hcmRTaGFyaW5nQ29tcG9uZW50EgkJAAAAAAAA8D8iNgopCgRuYW1lEiFuZXdEYXNoYm9hcmRXaXRoRmlsdGVyc0FuZEdyb3VwQnkSCQkAAAAAAAAAACIhChQKBG5hbWUSDG5ld0ZpbHRlcnNVSRIJCQAAAAAAAPA/IjAKIwoEbmFtZRIbbmV3SW5mbHV4RFNDb25maWdQYWdlRGVzaWduEgkJAAAAAAAA8D8iIQoUCgRuYW1lEgxuZXdMb2dzUGFuZWwSCQkAAAAAAADwPyIkChcKBG5hbWUSD25ld1BERlJlbmRlcmluZxIJCQAAAAAAAPA/IiUKGAoEbmFtZRIQbmV3UGFuZWxDaHJvbWVVSRIJCQAAAAAAAPA/IikKHAoEbmFtZRIUbmV3U2hhcmVSZXBvcnREcmF3ZXISCQkAAAAAAADwPyInChoKBG5hbWUSEm5ld1RyYWNlVmlld0hlYWRlchIJCQAAAAAAAPA/IiMKFgoEbmFtZRIObmV3Vml6VG9vbHRpcHMSCQkAAAAAAADwPyIbCg4KBG5hbWUSBm5ld2xvZxIJCQAAAAAAAPA/Ii0KIAoEbmFtZRIYbmV3cmVsaWNSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iHAoPCgRuYW1lEgduZ2FsZXJ0EgkJAAAAAAAA8D8iJwoaCgRuYW1lEhJub2RlR3JhcGhEb3RMYXlvdXQSCQkAAAAAAADwPyInChoKBG5hbWUSEm5vdGlmaWNhdGlvbkJhbm5lchIJCQAAAAAAAPA/IikKHAoEbmFtZRIUb2F1dGhSZXF1aXJlU3ViQ2xhaW0SCQkAAAAAAAAAACIsCh8KBG5hbWUSF29uUHJlbVRvQ2xvdWRNaWdyYXRpb25zEgkJAAAAAAAA8D8iOAorCgRuYW1lEiNvbmJvYXJkaW5nRmxvd0FuZFNldHVwZ3VpZGVNaWdyYXRlZBIJCQAAAAAAAPA/IiwKHwoEbmFtZRIXb25seUV4dGVybmFsT3JnUm9sZVN5bmMSCQkAAAAAAADwPyIxCiQKBG5hbWUSHG9wZW5TZWFyY2hCYWNrZW5kRmxvd0VuYWJsZWQSCQkAAAAAAADwPyIvCiIKBG5hbWUSGm9wZW5zZWFyY2hSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iJwoaCgRuYW1lEhJvdGVsTG9nc0Zvcm1hdHRpbmcSCQkAAAAAAAAAACIuCiEKBG5hbWUSGXBhZ2VyZHV0eVJlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIoChsKBG5hbWUSE3BhbmVsRmlsdGVyVmFyaWFibGUSCQkAAAAAAAAAACIoChsKBG5hbWUSE3BhbmVsRmlyc3REYXNoYm9hcmQSCQkAAAAAAADwPyIkChcKBG5hbWUSD3BhbmVsTW9uaXRvcmluZxIJCQAAAAAAAPA/IiUKGAoEbmFtZRIQcGFuZWxUaXRsZVNlYXJjaBIJCQAAAAAAAAAAIjgKKwoEbmFtZRIjcGFzc3dvcmRsZXNzTWFnaWNMaW5rQXV0aGVudGljYXRpb24SCQkAAAAAAAAAACIoChsKBG5hbWUSE3BkY0Nvbm5lY3Rpb25TdGF0dXMSCQkAAAAAAADwPyIrCh4KBG5hbWUSFnBkY0RhdGFzb3VyY2VFeHRlbnNpb24SCQkAAAAAAADwPyIrCh4KBG5hbWUSFnBkY011bHRpcGxlQ29ubmVjdGlvbnMSCQkAAAAAAADwPyIeChEKBG5hbWUSCXBkZlRhYmxlcxIJCQAAAAAAAPA/IjQKJwoEbmFtZRIfcGVybWlzc2lvbnNGaWx0ZXJSZW1vdmVTdWJxdWVyeRIJCQAAAAAAAAAAIiAKEwoEbmFtZRILcGluTmF2SXRlbXMSCQkAAAAAAADwPyIoChsKBG5hbWUSE3BsYXlsaXN0c1JlY29uY2lsZXISCQkAAAAAAAAAACIoChsKBG5hbWUSE3BsdWdpbkFzc2V0UHJvdmlkZXISCQkAAAAAAADwPyI2CikKBG5hbWUSIXBsdWdpbkNETkxhdGVzdERlcGVuZGVuY3lWZXJzaW9ucxIJCQAAAAAAAPA/IisKHgoEbmFtZRIWcGx1Z2luQ0ROTmVzdGVkUGx1Z2lucxIJCQAAAAAAAPA/IjUKKAoEbmFtZRIgcGx1Z2luUHJveHlQcmVzZXJ2ZVRyYWlsaW5nU2xhc2gSCQkAAAAAAADwPyIqCh0KBG5hbWUSFXBsdWdpbnNBUElNYW5pZmVzdEtleRIJCQAAAAAAAPA/IiYKGQoEbmFtZRIRcGx1Z2luc0F1dG9VcGRhdGUSCQkAAAAAAAAAACIpChwKBG5hbWUSFHBsdWdpbnNDRE5TeW5jTG9hZGVyEgkJAAAAAAAA8D8iLQogCgRuYW1lEhhwbHVnaW5zRGV0YWlsc1JpZ2h0UGFuZWwSCQkAAAAAAADwPyIrCh4KBG5hbWUSFnBsdWdpbnNGcm9udGVuZFNhbmRib3gSCQkAAAAAAADwPyIrCh4KBG5hbWUSFnBsdWdpbnNTa2lwSG9zdEVudlZhcnMSCQkAAAAAAADwPyIlChgKBG5hbWUSEHBsdWdpbnNTcmlDaGVja3MSCQkAAAAAAADwPyIsCh8KBG5hbWUSF3ByZWZlckxpYnJhcnlQYW5lbFRpdGxlEgkJAAAAAAAAAAAiKQocCgRuYW1lEhRwcmVpbnN0YWxsQXV0b1VwZGF0ZRIJCQAAAAAAAPA/IjkKLAoEbmFtZRIkcHJlc2VydmVEYXNoYm9hcmRTdGF0ZVdoZW5OYXZpZ2F0aW5nEgkJAAAAAAAAAAAiIAoTCgRuYW1lEgtwcm9tUUxTY29wZRIJCQAAAAAAAPA/IjQKJwoEbmFtZRIfcHJvbWV0aGV1c0F6dXJlT3ZlcnJpZGVBdWRpZW5jZRIJCQAAAAAAAPA/IjgKKwoEbmFtZRIjcHJvbWV0aGV1c0NvZGVNb2RlTWV0cmljTmFtZXNTZWFyY2gSCQkAAAAAAADwPyIxCiQKBG5hbWUSHHByb21ldGhldXNDb25maWdPdmVyaGF1bEF1dGgSCQkAAAAAAADwPyIoChsKBG5hbWUSE3Byb21ldGhldXNEYXRhcGxhbmUSCQkAAAAAAADwPyIxCiQKBG5hbWUSHHByb21ldGhldXNNZXRyaWNFbmN5Y2xvcGVkaWESCQkAAAAAAADwPyInChoKBG5hbWUSEnByb21ldGhldXNQcm9tUUFJTBIJCQAAAAAAAPA/Ii8KIgoEbmFtZRIacHJvbWV0aGV1c1JlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIzCiYKBG5hbWUSHnByb21ldGhldXNSZXNvdXJjZUJyb3dzZXJDYWNoZRIJCQAAAAAAAPA/IjMKJgoEbmFtZRIecHJvbWV0aGV1c1J1blF1ZXJpZXNJblBhcmFsbGVsEgkJAAAAAAAA8D8iOAorCgRuYW1lEiNwcm9tZXRoZXVzU3BlY2lhbENoYXJzSW5MYWJlbFZhbHVlcxIJCQAAAAAAAAAAIjIKJQoEbmFtZRIdcHJvbWV0aGV1c1N0cmVhbWluZ0pTT05QYXJzZXISCQkAAAAAAADwPyIrCh4KBG5hbWUSFnByb21ldGhldXNVc2VzQ29tYm9ib3gSCQkAAAAAAADwPyIhChQKBG5hbWUSDHByb3Zpc2lvbmluZxIJCQAAAAAAAAAAIi8KIgoEbmFtZRIacHJvdmlzaW9uaW5nU2VjcmV0c1NlcnZpY2USCQkAAAAAAAAAACIlChgKBG5hbWUSEHB1YmxpY0Rhc2hib2FyZHMSCQkAAAAAAADwPyIxCiQKBG5hbWUSHHB1YmxpY0Rhc2hib2FyZHNFbWFpbFNoYXJpbmcSCQkAAAAAAAAAACIqCh0KBG5hbWUSFXB1YmxpY0Rhc2hib2FyZHNTY2VuZRIJCQAAAAAAAPA/IiEKFAoEbmFtZRIMcXVlcnlMaWJyYXJ5EgkJAAAAAAAAAAAiIQoUCgRuYW1lEgxxdWVyeVNlcnZpY2USCQkAAAAAAADwPyIsCh8KBG5hbWUSF3F1ZXJ5U2VydmljZUZyb21FeHBsb3JlEgkJAAAAAAAAAAAiJwoaCgRuYW1lEhJxdWVyeVNlcnZpY2VGcm9tVUkSCQkAAAAAAAAAACInChoKBG5hbWUSEnF1ZXJ5U2VydmljZU1UUGF0aBIJCQAAAAAAAPA/IigKGwoEbmFtZRITcXVlcnlTZXJ2aWNlUmV3cml0ZRIJCQAAAAAAAAAAIikKHAoEbmFtZRIUcmVjb3JkZWRRdWVyaWVzTXVsdGkSCQkAAAAAAADwPyIkChcKBG5hbWUSD3JlZGlzTGl2ZUVuZ2luZRIJCQAAAAAAAPA/Ii0KIAoEbmFtZRIYcmVkc2hpZnRSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iLwoiCgRuYW1lEhpyZWZhY3RvclZhcmlhYmxlc1RpbWVSYW5nZRIJCQAAAAAAAAAAIi0KIAoEbmFtZRIYcmVncmVzc2lvblRyYW5zZm9ybWF0aW9uEgkJAAAAAAAAAAAiMwomCgRuYW1lEh5yZWxvYWREYXNoYm9hcmRzT25QYXJhbXNDaGFuZ2USCQkAAAAAAAAAACIgChMKBG5hbWUSC3JlbW90ZVJ1bGVyEgkJAAAAAAAA8D8iLAofCgRuYW1lEhdyZW1vdGVSdWxlckNvbmZpZ1N5bmNlchIJCQAAAAAAAPA/IiIKFQoEbmFtZRINcmVuZGVyQXV0aEpXVBIJCQAAAAAAAAAAIjUKKAoEbmFtZRIgcmVuZGVyZXJEaXNhYmxlQXBwUGx1Z2luc1ByZWxvYWQSCQkAAAAAAAAAACIlChgKBG5hbWUSEHJlcG9ydGluZ1JldHJpZXMSCQkAAAAAAADwPyItCiAKBG5hbWUSGHJlcG9ydGluZ1VzZVJhd1RpbWVSYW5nZRIJCQAAAAAAAPA/IiYKGQoEbmFtZRIRcmVzdG9yZURhc2hib2FyZHMSCQkAAAAAAAAAACIlChgKBG5hbWUSEHJvbGVQaWNrZXJEcmF3ZXISCQkAAAAAAAAAACIvCiIKBG5hbWUSGnNhbGVzZm9yY2VSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iLAofCgRuYW1lEhdzYXBoYW5hUmVtb3RlRGF0YXNvdXJjZRIJCQAAAAAAAPA/Ih0KEAoEbmFtZRIIc2NvcGVBcGkSCQkAAAAAAAAAACIhChQKBG5hbWUSDHNjb3BlRmlsdGVycxIJCQAAAAAAAAAAIikKHAoEbmFtZRIUc2NvcGVTZWFyY2hBbGxMZXZlbHMSCQkAAAAAAAAAACIkChcKBG5hbWUSD3NjcmlwdGVkLWNoZWNrcxIJCQAAAAAAAPA/IjEKJAoEbmFtZRIcc2VjcmV0c01hbmFnZW1lbnRBcHBQbGF0Zm9ybRIJCQAAAAAAAAAAIi4KIQoEbmFtZRIZc2VjdXJlU29ja3NEU1Byb3h5RW5hYmxlZBIJCQAAAAAAAAAAIi8KIgoEbmFtZRIac2VjdXJlU29ja3NEYXRhc291cmNlUHJveHkSCQkAAAAAAADwPyIrCh4KBG5hbWUSFnNlbnRyeVJlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIvCiIKBG5hbWUSGnNlcnZpY2Vub3dSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iLwoiCgRuYW1lEhpzZXR1cEd1aWRlSG9tZXBhZ2VUYWtlb3ZlchIJCQAAAAAAAPA/IikKHAoEbmFtZRIUc2V0dXBHdWlkZVBsYW5QaWNrZXISCQkAAAAAAADwPyIqCh0KBG5hbWUSFXNoYXJpbmdEYXNoYm9hcmRJbWFnZRIJCQAAAAAAAPA/IjQKJwoEbmFtZRIfc2hvd0Rhc2hib2FyZFZhbGlkYXRpb25XYXJuaW5ncxIJCQAAAAAAAAAAIi0KIAoEbmFtZRIYc2lnbmFsZnhSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iLQogCgRuYW1lEhhzaXRld2lzZVJlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIuCiEKBG5hbWUSGXNraXBUb2tlblJvdGF0aW9uSWZSZWNlbnQSCQkAAAAAAADwPyIoChsKBG5hbWUSE3NtLWFsZXJ0cy1wZXItY2hlY2sSCQkAAAAAAADwPyIuCiEKBG5hbWUSGXNub3dmbGFrZVJlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIrCh4KBG5hbWUSFnNwbHVua1JlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIzCiYKBG5hbWUSHnNxbERhdGFzb3VyY2VEYXRhYmFzZVNlbGVjdGlvbhIJCQAAAAAAAPA/IiMKFgoEbmFtZRIOc3FsRXhwcmVzc2lvbnMSCQkAAAAAAAAAACIpChwKBG5hbWUSFHNzZUdyb3VwQnlEYXRhc291cmNlEgkJAAAAAAAAAAAiIwoWCgRuYW1lEg5zc29TZXR0aW5nc0FwaRIJCQAAAAAAAPA/IiQKFwoEbmFtZRIPc3NvU2V0dGluZ3NMREFQEgkJAAAAAAAA8D8iJAoXCgRuYW1lEg9zc29TZXR0aW5nc1NBTUwSCQkAAAAAAADwPyIcCg8KBG5hbWUSB3N0b3JhZ2USCQkAAAAAAAAAACIuCiEKBG5hbWUSGXN1bW9sb2dpY1JlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIuCiEKBG5hbWUSGXN1cnJlYWxkYlJlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIeChEKBG5hbWUSCXN3YWdnZXJVaRIJCQAAAAAAAPA/Ii4KIQoEbmFtZRIZc3ludGhldGljLW1vbml0b3JpbmctcmJhYxIJCQAAAAAAAPA/IjwKLwoEbmFtZRInc3ludGhldGljLW1vbml0b3Jpbmctc2VjcmV0cy1tYW5hZ2VtZW50EgkJAAAAAAAA8D8iKwoeCgRuYW1lEhZzeW50aGV0aWNzLWFkaG9jY2hlY2tzEgkJAAAAAAAA8D8iJgoZCgRuYW1lEhFzeW50aGV0aWNzLXNjZW5lcxIJCQAAAAAAAPA/IjEKJAoEbmFtZRIcc3ludGhldGljc1BlckNoZWNrRGFzaGJvYXJkcxIJCQAAAAAAAPA/IiEKFAoEbmFtZRIMdGFibGVOZXh0R2VuEgkJAAAAAAAA8D8iKQocCgRuYW1lEhR0YWJsZVNoYXJlZENyb3NzaGFpchIJCQAAAAAAAAAAIiMKFgoEbmFtZRIOdGFidWxhck51bWJlcnMSCQkAAAAAAAAAACIkChcKBG5hbWUSD3RlYW1IdHRwSGVhZGVycxIJCQAAAAAAAPA/IikKHAoEbmFtZRIUdGVhbUh0dHBIZWFkZXJzTWltaXISCQkAAAAAAADwPyIpChwKBG5hbWUSFHRlYW1IdHRwSGVhZGVyc1RlbXBvEgkJAAAAAAAAAAAiMgolCgRuYW1lEh10ZW1wbGF0ZVZhcmlhYmxlc1VzZXNDb21ib2JveBIJCQAAAAAAAAAAIiIKFQoEbmFtZRINdGVtcG9BbGVydGluZxIJCQAAAAAAAAAAIicKGgoEbmFtZRISdGVtcG9CYWNrZW5kU2VhcmNoEgkJAAAAAAAA8D8iIAoTCgRuYW1lEgt0ZW1wb1NlYXJjaBIJCQAAAAAAAPA/IiYKGQoEbmFtZRIRdGltZVJhbmdlUHJvdmlkZXISCQkAAAAAAAAAACIkChcKBG5hbWUSD3RpbWVTZXJpZXNUYWJsZRIJCQAAAAAAAPA/Ii8KIgoEbmFtZRIadGltZXN0cmVhbVJlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIhChQKBG5hbWUSDHRsc01lbWNhY2hlZBIJCQAAAAAAAPA/IiUKGAoEbmFtZRIQdHJhY2VRTFN0cmVhbWluZxIJCQAAAAAAAPA/IiMKFgoEbmFtZRIOdHJhY2VUb01ldHJpY3MSCQkAAAAAAADwPyIkChcKBG5hbWUSD3RyYWNlVG9Qcm9maWxlcxIJCQAAAAAAAPA/IiIKFQoEbmFtZRINdHJhY2VxbFNlYXJjaBIJCQAAAAAAAPA/Ii0KIAoEbmFtZRIYdHJhY2VzRW1iZWRkZWRGbGFtZUdyYXBoEgkJAAAAAAAA8D8iLAofCgRuYW1lEhd0cmFuc2Zvcm1hdGlvbnNSZWRlc2lnbhIJCQAAAAAAAPA/IjMKJgoEbmFtZRIedHJhbnNmb3JtYXRpb25zVmFyaWFibGVTdXBwb3J0EgkJAAAAAAAA8D8iIwoWCgRuYW1lEg51bmlmaWVkSGlzdG9yeRIJCQAAAAAAAAAAIiMKFgoEbmFtZRIOdW5pZmllZE5hdmJhcnMSCQkAAAAAAAAAACImChkKBG5hbWUSEXVuaWZpZWRSZXF1ZXN0TG9nEgkJAAAAAAAA8D8iIwoWCgRuYW1lEg51bmlmaWVkU3RvcmFnZRIJCQAAAAAAAPA/IjQKJwoEbmFtZRIfdW5pZmllZFN0b3JhZ2VCaWdPYmplY3RzU3VwcG9ydBIJCQAAAAAAAAAAIjUKKAoEbmFtZRIgdW5pZmllZFN0b3JhZ2VHcnBjQ29ubmVjdGlvblBvb2wSCQkAAAAAAADwPyIwCiMKBG5hbWUSG3VuaWZpZWRTdG9yYWdlSGlzdG9yeVBydW5lchIJCQAAAAAAAPA/IikKHAoEbmFtZRIUdW5pZmllZFN0b3JhZ2VTZWFyY2gSCQkAAAAAAAAAACI6Ci0KBG5hbWUSJXVuaWZpZWRTdG9yYWdlU2VhcmNoRHVhbFJlYWRlckVuYWJsZWQSCQkAAAAAAADwPyI8Ci8KBG5hbWUSJ3VuaWZpZWRTdG9yYWdlU2VhcmNoUGVybWlzc2lvbkZpbHRlcmluZxIJCQAAAAAAAPA/IjIKJQoEbmFtZRIddW5pZmllZFN0b3JhZ2VTZWFyY2hTcHJpbmtsZXMSCQkAAAAAAAAAACIrCh4KBG5hbWUSFnVuaWZpZWRTdG9yYWdlU2VhcmNoVUkSCQkAAAAAAAAAACIxCiQKBG5hbWUSHHVzZVByb21ldGhldXNGcm9udGVuZFBhY2thZ2USCQkAAAAAAADwPyIwCiMKBG5hbWUSG3VzZVNjb3Blc05hdmlnYXRpb25FbmRwb2ludBIJCQAAAAAAAAAAIjQKJwoEbmFtZRIfdXNlU2Vzc2lvblN0b3JhZ2VGb3JSZWRpcmVjdGlvbhIJCQAAAAAAAPA/IiMKFgoEbmFtZRIOdXNlclN0b3JhZ2VBUEkSCQkAAAAAAADwPyIkChcKBG5hbWUSD3dhcmdhbWVzVGVzdGluZxIJCQAAAAAAAPA/Ii4KIQoEbmFtZRIZd2F2ZWZyb250UmVtb3RlRGF0YXNvdXJjZRIJCQAAAAAAAPA/IikKHAoEbmFtZRIUeHJheVJlbW90ZURhdGFzb3VyY2USCQkAAAAAAAD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aFwkAAAAAAAAAABoMCJONhMQGENy36s8DcAokZ3JhZmFuYV9pbnN0YW5jZXNfYXBpX3JlcXVlc3RzX3RvdGFsEit1c2FnZSBjb3VudGVyIGZvciBpbnN0YW5jZSBwbHVnaW5zIHJlcXVlc3RzGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQp5vpzwOzAQomZ3JhZmFuYV9sZGFwX3VzZXJzX3N5bmNfZXhlY3V0aW9uX3RpbWUSLnN1bW1hcnkgZm9yIExEQVAgdXNlcnMgc3luYyBleGVjdXRpb24gZHVyYXRpb24YAiJXIlUIABEAAAAAAAAAABoSCQAAAAAAAOA/EQEAAAAAAPh/GhIJzczMzMzM7D8RAQAAAAAA+H8aEgmuR+F6FK7vPxEBAAAAAAD4fyIMCJONhMQGEMuBmc8DpQYKM2dyYWZhbmFfbGl2ZV9icm9rZXJfcmVkaXNfcHViX3N1Yl9idWZmZXJlZF9tZXNzYWdlcxItTnVtYmVyIG9mIG1lc3NhZ2VzIGJ1ZmZlcmVkIGluIFJlZGlzIFBVQi9TVUIuGAEiTAoPCgticm9rZXJfbmFtZRIAChYKDGNoYW5uZWxfdHlwZRIGY2xpZW50ChYKEXB1Yl9zdWJfcHJvY2Vzc29yEgEwEgkJAAAAAAAAAAAiTAoPCgticm9rZXJfbmFtZRIAChYKDGNoYW5uZWxfdHlwZRIGY2xpZW50ChYKEXB1Yl9zdWJfcHJvY2Vzc29yEgExEgkJAAAAAAAAAAAiTAoPCgticm9rZXJfbmFtZRIAChYKDGNoYW5uZWxfdHlwZRIGY2xpZW50ChYKEXB1Yl9zdWJfcHJvY2Vzc29yEgEyEgkJAAAAAAAAAAAiTAoPCgticm9rZXJfbmFtZRIAChYKDGNoYW5uZWxfdHlwZRIGY2xpZW50ChYKEXB1Yl9zdWJfcHJvY2Vzc29yEgEzEgkJAAAAAAAAAAAiTAoPCgticm9rZXJfbmFtZRIAChYKDGNoYW5uZWxfdHlwZRIGY2xpZW50ChYKEXB1Yl9zdWJfcHJvY2Vzc29yEgE0EgkJAAAAAAAAAAAiTAoPCgticm9rZXJfbmFtZRIAChYKDGNoYW5uZWxfdHlwZRIGY2xpZW50ChYKEXB1Yl9zdWJfcHJvY2Vzc29yEgE1EgkJAAAAAAAAAAAiTAoPCgticm9rZXJfbmFtZRIAChYKDGNoYW5uZWxfdHlwZRIGY2xpZW50ChYKEXB1Yl9zdWJfcHJvY2Vzc29yEgE2EgkJAAAAAAAAAAAiTAoPCgticm9rZXJfbmFtZRIAChYKDGNoYW5uZWxfdHlwZRIGY2xpZW50ChYKEXB1Yl9zdWJfcHJvY2Vzc29yEgE3EgkJAAAAAAAAAAAiTQoPCgticm9rZXJfbmFtZRIAChcKDGNoYW5uZWxfdHlwZRIHY29udHJvbAoWChFwdWJfc3ViX3Byb2Nlc3NvchIBMBIJCQAAAAAAAAAAggIKMmdyYWZhbmFfbGl2ZV9icm9rZXJfcmVkaXNfcHViX3N1Yl9kcm9wcGVkX21lc3NhZ2VzEkFOdW1iZXIgb2YgZHJvcHBlZCBtZXNzYWdlcyBvbiBhcHBsaWNhdGlvbiBsZXZlbCBpbiBSZWRpcyBQVUIvU1VCLhgAIkIKDwoLYnJva2VyX25hbWUSAAoWCgxjaGFubmVsX3R5cGUSBmNsaWVudBoXCQAAAAAAAAAAGgwIt42ExAYQourZ0QIiQwoPCgticm9rZXJfbmFtZRIAChcKDGNoYW5uZWxfdHlwZRIHY29udHJvbBoXCQAAAAAAAAAAGgwIt42ExAYQtJHZ0QKLDQosZ3JhZmFuYV9saXZlX2NsaWVudF9jb21tYW5kX2R1cmF0aW9uX3NlY29uZHMSIENsaWVudCBjb21tYW5kIGR1cmF0aW9uIHN1bW1hcnkuGAIigQEKFQoRY2hhbm5lbF9uYW1lc3BhY2USAAoRCgZtZXRob2QSB2Nvbm5lY3QiVQgAEQAAAAAAAAAAGhIJAAAAAAAA4D8RAQAAAAAA+H8aEgmuR+F6FK7vPxEBAAAAAAD4fxoSCSuHFtnO9+8/EQEAAAAAAPh/IgwIt42ExAYQg87c0QIigQEKFQoRY2hhbm5lbF9uYW1lc3BhY2USAAoRCgZtZXRob2QSB2hpc3RvcnkiVQgAEQAAAAAAAAAAGhIJAAAAAAAA4D8RAQAAAAAA+H8aEgmuR+F6FK7vPxEBAAAAAAD4fxoSCSuHFtnO9+8/EQEAAAAAAPh/IgwIt42ExAYQmffp0QIiggEKFQoRY2hhbm5lbF9uYW1lc3BhY2USAAoSCgZtZXRob2QSCHByZXNlbmNlIlUIABEAAAAAAAAAABoSCQAAAAA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It42ExAYQqf/X0QLlAQoiZ3JhZmFuYV9wYWdlX3Jlc3BvbnNlX3N0YXR1c190b3RhbBIZcGFnZSBodHRwIHJlc3BvbnNlIHN0YXR1cxgAIiYKCwoEY29kZRIDMjAwGhcJAAAAAABAVkAaDAiTjYTEBhD0rpHPAyImCgsKBGNvZGUSAzQwNBoXCQAAAAAAAAAAGgwIk42ExAYQ+6ySzwMiJgoLCgRjb2RlEgM1MDAaFwkAAAAAAAAAABoMCJONhMQGELe4ks8DIioKDwoEY29kZRIHdW5rbm93bhoXCQAAAAAAAAAAGgwIk42ExAYQkcOSzwPdPgoZZ3JhZmFuYV9wbHVnaW5fYnVpbGRfaW5mbxJyQSBtZXRyaWMgd2l0aCBhIGNvbnN0YW50ICcxJyB2YWx1ZSBsYWJlbGVkIGJ5IHBsdWdpbklkLCBwbHVnaW5UeXBlIGFuZCB2ZXJzaW9uIGZyb20gd2hpY2ggR3JhZmFuYSBwbHVnaW4gd2FzIGJ1aWx0GAEiaQobCglwbHVnaW5faWQSDmNsZXhwb3J0ZXItYXBwChIKC3BsdWdpbl90eXBlEgNhcHAKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEAoHdmVyc2lvbhIFMS4yLjESCQkAAAAAAADwPyJqChsKCXBsdWdpbl9pZBIOY2xvdWQtaG9tZS1hcHAKEgoLcGx1Z2luX3R5cGUSA2FwcAoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAoRCgd2ZXJzaW9uEgY0LjI0LjASCQkAAAAAAADwPyJxCiAKCXBsdWdpbl9pZBITY2xvdWQtaG9tZS1kaXNjb3ZlcgoUCgtwbHVnaW5fdHlwZRIFcGFuZWwKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEQoHdmVyc2lvbhIGdjEuNi4xEgkJAAAAAAAA8D8idQokCglwbHVnaW5faWQSF2Nsb3VkLWhvbWUtaW50ZWdyYXRpb25zChQKC3BsdWdpbl90eXBlEgVwYW5lbAoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAoRCgd2ZXJzaW9uEgZ2MS42LjESCQkAAAAAAADwPyJuCh0KCXBsdWdpbl9pZBIQY2xvdWQtaG9tZS1saW5rcwoUCgtwbHVnaW5fdHlwZRIFcGFuZWwKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEQoHdmVyc2lvbhIGdjEuNi4xEgkJAAAAAAAA8D8icAofCglwbHVnaW5faWQSEmNsb3VkLWhvbWUtd2VsY29tZQoUCgtwbHVnaW5fdHlwZRIFcGFuZWwKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEQoHdmVyc2lvbhIGdjEuNi4xEgkJAAAAAAAA8D8iggEKKwoJcGx1Z2luX2lkEh5kbG9wZXM3LWFwcGR5bmFtaWNzLWRhdGFzb3VyY2UKGQoLcGx1Z2luX3R5cGUSCmRhdGFzb3VyY2UKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEgoHdmVyc2lvbhIHMy4xMS4xMBIJCQAAAAAAAPA/IngKKQoJcGx1Z2luX2lkEhxncmFmYW5hLWFkYXB0aXZlLW1ldHJpY3MtYXBwChIKC3BsdWdpbl90eXBlEgNhcHAKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEQoHdmVyc2lvbhIGMC4yNy4wEgkJAAAAAAAA8D8idAolCglwbHVnaW5faWQSGGdyYWZhbmEtYWRhcHRpdmVsb2dzLWFwcAoSCgtwbHVnaW5fdHlwZRIDYXBwChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkChEKB3ZlcnNpb24SBjAuMTcuNRIJCQAAAAAAAPA/Im8KIAoJcGx1Z2luX2lkEhNncmFmYW5hLWFkdmlzb3ItYXBwChIKC3BsdWdpbl90eXBlEgNhcHAKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEQoHdmVyc2lvbhIGMC4wLjEwEgkJAAAAAAAA8D8icwokCglwbHVnaW5faWQSF2dyYWZhbmEtYWxlcnRpbmctdWktYXBwChIKC3BsdWdpbl90eXBlEgNhcHAKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEQoHdmVyc2lvbhIGdjAuOS4zEgkJAAAAAAAA8D8iggEKLAoJcGx1Z2luX2lkEh9ncmFmYW5hLWFsZXJ0bWFuYWdlci1kYXRhc291cmNlChkKC3BsdWdpbl90eXBlEgpkYXRhc291cmNlChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkChEKB3ZlcnNpb24SBnYwLjkuMxIJCQAAAAAAAPA/IoEBCioKCXBsdWdpbl9pZBIdZ3JhZmFuYS1hcHAtb2JzZXJ2YWJpbGl0eS1hcHAKEgoLcGx1Z2luX3R5cGUSA2FwcAoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAoZCgd2ZXJzaW9uEg4xLjU4LjMtMGYwZTY2NhIJCQAAAAAAAPA/IngKKAoJcGx1Z2luX2lkEhtncmFmYW5hLWFwcC1zZGstZXhhbXBsZS1hcHAKEgoLcGx1Z2luX3R5cGUSA2FwcAoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAoSCgd2ZXJzaW9uEgdmMzE1Y2MwEgkJAAAAAAAA8D8ibwogCglwbHVnaW5faWQSE2dyYWZhbmEtYXNzZXJ0cy1hcHAKEgoLcGx1Z2luX3R5cGUSA2FwcAoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAoRCgd2ZXJzaW9uEgYwLjAuOTISCQkAAAAAAADwPyKaAQoiCglwbHVnaW5faWQSFWdyYWZhbmEtYXNzaXN0YW50LWFwcAoSCgtwbHVnaW5fdHlwZRIDYXBwChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkCjoKB3ZlcnNpb24SLzAuMC4xMis2MGVmNDQ0MDUxZWQzOWQ4ZDZjNjM1YTdkNTg1MzEyOTA4MzQ2ZTQyEgkJAAAAAAAA8D8idAolCglwbHVnaW5faWQSGGdyYWZhbmEtYXR0cmlidXRpb25zLWFwcAoSCgtwbHVnaW5fdHlwZRIDYXBwChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkChEKB3ZlcnNpb24SBjEuMC4zMRIJCQAAAAAAAPA/ImwKHQoJcGx1Z2luX2lkEhBncmFmYW5hLWF1dGgtYXBwChIKC3BsdWdpbl90eXBlEgNhcHAKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEQoHdmVyc2lvbhIGMi4xMC4wEgkJAAAAAAAA8D8ifQooCglwbHVnaW5faWQSG2dyYWZhbmEtYmlncXVlcnktZGF0YXNvdXJjZQoZCgtwbHVnaW5fdHlwZRIKZGF0YXNvdXJjZQoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAoQCgd2ZXJzaW9uEgUyLjEuMBIJCQAAAAAAAPA/InAKIgoJcGx1Z2luX2lkEhVncmFmYW5hLWNvbGxlY3Rvci1hcHAKEgoLcGx1Z2luX3R5cGUSA2FwcAoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAoQCgd2ZXJzaW9uEgUzLjQuNBIJCQAAAAAAAPA/IncKKQoJcGx1Z2luX2lkEhxncmFmYW5hLWNvc3RtYW5hZ2VtZW50dWktYXBwChIKC3BsdWdpbl90eXBlEgNhcHAKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEAoHdmVyc2lvbhIFMC43LjMSCQkAAAAAAADwPyJrChwKCXBsdWdpbl9pZBIPZ3JhZmFuYS1jc3AtYXBwChIKC3BsdWdpbl90eXBlEgNhcHAKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEQoHdmVyc2lvbhIGMy4xNS4wEgkJAAAAAAAA8D8igQEKKgoJcGx1Z2luX2lkEh1ncmFmYW5hLWRhdGFicmlja3MtZGF0YXNvdXJjZQoZCgtwbHVnaW5fdHlwZRIKZGF0YXNvdXJjZQoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAoSCgd2ZXJzaW9uEgcxLjEwLjEwEgkJAAAAAAAA8D8ikAEKHwoJcGx1Z2luX2lkEhJncmFmYW5hLWRibzExeS1hcHAKEgoLcGx1Z2luX3R5cGUSA2FwcAoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAozCgd2ZXJzaW9uEig2OTIyMGI5NmM2OTg4NTgyYjYxNzdlZDU4NzY3YzVmNDg2YWY1YmUwEgkJAAAAAAAA8D8idgonCglwbHVnaW5faWQSGmdyYWZhbmEtZGVtb2Rhc2hib2FyZHMtYXBwChIKC3BsdWdpbl90eXBlEgNhcHAKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEQoHdmVyc2lvbhIGMS4xMy4wEgkJAAAAAAAA8D8ifwopCglwbHVnaW5faWQSHGdyYWZhbmEtZHluYXRyYWNlLWRhdGFzb3VyY2UKGQoLcGx1Z2luX3R5cGUSCmRhdGFzb3VyY2UKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEQoHdmVyc2lvbhIGMy4yNS4yEgkJAAAAAAAA8D8icQoiCglwbHVnaW5faWQSFWdyYWZhbmEtZWFzeXN0YXJ0LWFwcAoSCgtwbHVnaW5fdHlwZRIDYXBwChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkChEKB3ZlcnNpb24SBnY4LjAuMhIJCQAAAAAAAPA/Ip0BCiYKCXBsdWdpbl9pZBIZZ3JhZmFuYS1leHBsb3JldHJhY2VzLWFwcAoSCgtwbHVnaW5fdHlwZRIDYXBwChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkCjkKB3ZlcnNpb24SLjEuMS4yKzZiNDUyN2JlMzI1NzJiNjkyYTc3MzEwNWE2NDc4MDM5ZDllZTg2YjISCQkAAAAAAADwPyKEAQohCglwbHVnaW5faWQSFGdyYWZhbmEtaW5jaWRlbnQtYXBwChIKC3BsdWdpbl90eXBlEgNhcHAKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKJQoHdmVyc2lvbhIadjEuMTE5LjAtZGV2LjE4K2diNzI3ZDVlOTMSCQkAAAAAAADwPyJ+CigKCXBsdWdpbl9pZBIbZ3JhZmFuYS1pbmNpZGVudC1kYXRhc291cmNlChkKC3BsdWdpbl90eXBlEgpkYXRhc291cmNlChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkChEKB3ZlcnNpb24SBjEuNjEuMBIJCQAAAAAAAPA/InUKJwoJcGx1Z2luX2lkEhpncmFmYW5hLWludmVzdGlnYXRpb25zLWFwcAoSCgtwbHVnaW5fdHlwZRIDYXBwChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkChAKB3ZlcnNpb24SBTAuMi40EgkJAAAAAAAA8D8ifQocCglwbHVnaW5faWQSD2dyYWZhbmEtaXJtLWFwcAoSCgtwbHVnaW5fdHlwZRIDYXBwChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkCiMKB3ZlcnNpb24SGHYwLjQxLjEtZGV2LjErZ2I3MjdkNWU5MxIJCQAAAAAAAPA/InkKJAoJcGx1Z2luX2lkEhdncmFmYW5hLWppcmEtZGF0YXNvdXJjZQoZCgtwbHVnaW5fdHlwZRIKZGF0YXNvdXJjZQoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAoQCgd2ZXJzaW9uEgUyLjEuMhIJCQAAAAAAAPA/ImsKHAoJcGx1Z2luX2lkEg9ncmFmYW5hLWs4cy1hcHAKEgoLcGx1Z2luX3R5cGUSA2FwcAoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAoRCgd2ZXJzaW9uEgYyLjE5LjMSCQkAAAAAAADwPyJwCiEKCXBsdWdpbl9pZBIUZ3JhZmFuYS1rb3dhbHNraS1hcHAKEgoLcGx1Z2luX3R5cGUSA2FwcAoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAoRCgd2ZXJzaW9uEgYxLjIwLjMSCQkAAAAAAADwPyKCAQofCglwbHVnaW5faWQSEmdyYWZhbmEtbGFiZWxzLWFwcAoSCgtwbHVnaW5fdHlwZRIDYXBwChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkCiUKB3ZlcnNpb24SGmdpdGh1Yi1hY3Rpb25zLTE2MzQ2ODk5Mzk4EgkJAAAAAAAA8D8ilAEKHAoJcGx1Z2luX2lkEg9ncmFmYW5hLWxsbS1hcHAKEgoLcGx1Z2luX3R5cGUSA2FwcAoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAo6Cgd2ZXJzaW9uEi8wLjIyLjMrMTA5YTc3ODg0ZTgxYTAxY2E3Mjc0NjQ1Y2IzMGE5NmQ5MzIwZjc2YxIJCQAAAAAAAPA/InkKKgoJcGx1Z2luX2lkEh1ncmFmYW5hLWxvZ3ZvbHVtZWV4cGxvcmVyLWFwcAoSCgtwbHVnaW5fdHlwZRIDYXBwChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkChEKB3ZlcnNpb24SBjAuMTUuMBIJCQAAAAAAAPA/IpwBCiQKCXBsdWdpbl9pZBIXZ3JhZmFuYS1sb2tpZXhwbG9yZS1hcHAKEgoLcGx1Z2luX3R5cGUSA2FwcAoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAo6Cgd2ZXJzaW9uEi8xLjAuMjMrNDlmZGY0NDVmYjE4ZmY5NzhkNTE2MmVmMzk2MTA4YTc2ZjI0MWM5NxIJCQAAAAAAAPA/IncKKQoJcGx1Z2luX2lkEhxncmFmYW5hLW1ldHJpY3NkcmlsbGRvd24tYXBwChIKC3BsdWdpbl90eXBlEgNhcHAKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEAoHdmVyc2lvbhIFMS4wLjcSCQkAAAAAAADwPyJqChsKCXBsdWdpbl9pZBIOZ3JhZmFuYS1tbC1hcHAKEgoLcGx1Z2luX3R5cGUSA2FwcAoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAoRCgd2ZXJzaW9uEgYxLjI5LjISCQkAAAAAAADwPyJ9CicKCXBsdWdpbl9pZBIaZ3JhZmFuYS1tb25nb2RiLWRhdGFzb3VyY2UKGQoLcGx1Z2luX3R5cGUSCmRhdGFzb3VyY2UKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEQoHdmVyc2lvbhIGMS4yNC44EgkJAAAAAAAA8D8igAEKHwoJcGx1Z2luX2lkEhJncmFmYW5hLW9uY2FsbC1hcHAKEgoLcGx1Z2luX3R5cGUSA2FwcAoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAojCgd2ZXJzaW9uEhh2MS40My4xLWRldi4xK2diNzI3ZDVlOTMSCQkAAAAAAADwPyKAAQoqCglwbHVnaW5faWQSHWdyYWZhbmEtb3BlbnNlYXJjaC1kYXRhc291cmNlChkKC3BsdWdpbl90eXBlEgpkYXRhc291cmNlChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkChEKB3ZlcnNpb24SBjIuMjguMBIJCQAAAAAAAPA/ImwKHAoJcGx1Z2luX2lkEg9ncmFmYW5hLXBkYy1hcHAKEgoLcGx1Z2luX3R5cGUSA2FwcAoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAoSCgd2ZXJzaW9uEgcwLjEyLjEzEgkJAAAAAAAA8D8iqgEKMwoJcGx1Z2luX2lkEiZncmFmYW5hLXBsdWdpbnNwbGF0Zm9ybXByb3Zpc2lvbmVkLWFwcAoSCgtwbHVnaW5fdHlwZRIDYXBwChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkCjkKB3ZlcnNpb24SLjEuMi4xK2I5OWI3ZDU3ZGZiNzJmMWQyZGMzZDBhYWE0NDVjOTgyNjc1ZjAyNDUSCQkAAAAAAADwPyJ4CiIKCXBsdWdpbl9pZBIVZ3JhZmFuYS1weXJvc2NvcGUtYXBwChIKC3BsdWdpbl90eXBlEgNhcHAKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKGAoHdmVyc2lvbhINMS41LjAtNzBhNjFiZRIJCQAAAAAAAPA/InsKJQoJcGx1Z2luX2lkEhhncmFmYW5hLXJ1bGVyLWRhdGFzb3VyY2UKGQoLcGx1Z2luX3R5cGUSCmRhdGFzb3VyY2UKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEQoHdmVyc2lvbhIGdjAuOS4zEgkJAAAAAAAA8D8igAEKKgoJcGx1Z2luX2lkEh1ncmFmYW5hLXNhbGVzZm9yY2UtZGF0YXNvdXJjZQoZCgtwbHVnaW5fdHlwZRIKZGF0YXNvdXJjZQoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAoRCgd2ZXJzaW9uEgYxLjcuMTISCQkAAAAAAADwPyJ5CisKCXBsdWdpbl9pZBIeZ3JhZmFuYS1zZWxmc2VydmV0dXRvcmlhbHMtYXBwChIKC3BsdWdpbl90eXBlEgNhcHAKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEAoHdmVyc2lvbhIFMy4xLjESCQkAAAAAAADwPyJyCiMKCXBsdWdpbl9pZBIWZ3JhZmFuYS1zZXR1cGd1aWRlLWFwcAoSCgtwbHVnaW5fdHlwZRIDYXBwChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkChEKB3ZlcnNpb24SBjEuMTcuMRIJCQAAAAAAAPA/InAKHwoJcGx1Z2luX2lkEhJncmFmYW5hLXNpZnQtcGFuZWwKFAoLcGx1Z2luX3R5cGUSBXBhbmVsChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkChEKB3ZlcnNpb24SBjEuMjkuMhIJCQAAAAAAAPA/IpEBChwKCXBsdWdpbl9pZBIPZ3JhZmFuYS1zbG8tYXBwChIKC3BsdWdpbl90eXBlEgNhcHAKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKNwoHdmVyc2lvbhIsZGV2LTExOWViYWZmZjQ2YmJhYjIyYjQ5YTU2Y2Y4ZjE1NmRiOWI4Y2QzMjESCQkAAAAAAADwPyJ/CikKCXBsdWdpbl9pZBIcZ3JhZmFuYS1zbm93Zmxha2UtZGF0YXNvdXJjZQoZCgtwbHVnaW5fdHlwZRIKZGF0YXNvdXJjZQoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAoRCgd2ZXJzaW9uEgYxLjE0LjASCQkAAAAAAADwPyJ7CiYKCXBsdWdpbl9pZBIZZ3JhZmFuYS1zcGx1bmstZGF0YXNvdXJjZQoZCgtwbHVnaW5fdHlwZRIKZGF0YXNvdXJjZQoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAoQCgd2ZXJzaW9uEgU1LjcuMxIJCQAAAAAAAPA/InwKLQoJcGx1Z2luX2lkEiBncmFmYW5hLXN5bnRoZXRpYy1tb25pdG9yaW5nLWFwcAoSCgtwbHVnaW5fdHlwZRIDYXBwChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkChEKB3ZlcnNpb24SBjEuMzIuMBIJCQAAAAAAAPA/In8KKQoJcGx1Z2luX2lkEhxncmFmYW5hLXdhdmVmcm9udC1kYXRhc291cmNlChkKC3BsdWdpbl90eXBlEgpkYXRhc291cmNlChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkChEKB3ZlcnNpb24SBjIuNS4xMxIJCQAAAAAAAPA/IoUBCjAKCXBsdWdpbl9pZBIjZ3JhZmFuYWNsb3VkLWNhcmRpbmFsaXR5LWRhdGFzb3VyY2UKGQoLcGx1Z2luX3R5cGUSCmRhdGFzb3VyY2UKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEAoHdmVyc2lvbhIFMi40LjASCQkAAAAAAADwPyKCAQo0CglwbHVnaW5faWQSJ2dyYWZhbmFjbG91ZC1jYXJkaW5hbGl0eS1tYW5hZ2VtZW50LWFwcAoSCgtwbHVnaW5fdHlwZRIDYXBwChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkChAKB3ZlcnNpb24SBTIuNC4wEgkJAAAAAAAA8D8iYgoTCglwbHVnaW5faWQSBms2LWFwcAoSCgtwbHVnaW5fdHlwZRIDYXBwChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkChEKB3ZlcnNpb24SBjAuODYuMBIJCQAAAAAAAPA/InAKGgoJcGx1Z2luX2lkEg1rNi1kYXRhc291cmNlChkKC3BsdWdpbl90eXBlEgpkYXRhc291cmNlChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkChEKB3ZlcnNpb24SBjAuODYuMBIJCQAAAAAAAPA/IncKJwoJcGx1Z2luX2lkEhptYXJjdXNvbHNzb24tdHJlZW1hcC1wYW5lbAoUCgtwbHVnaW5fdHlwZRIFcGFuZWwKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEAoHdmVyc2lvbhIFMi4xLjESCQkAAAAAAADwPyKCAQosCglwbHVnaW5faWQSH3N5bnRoZXRpYy1tb25pdG9yaW5nLWRhdGFzb3VyY2UKGQoLcGx1Z2luX3R5cGUSCmRhdGFzb3VyY2UKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEQoHdmVyc2lvbhIGMS4zMi4wEgkJAAAAAAAA8D/7FwoaZ3JhZmFuYV9wbHVnaW5fdGFyZ2V0X2luZm8SQUEgbWV0cmljIHdpdGggYSBjb25zdGFudCAnMScgdmFsdWUgbGFiZWxlZCBieSBwbHVnaW5JZCBhbmQgdGFyZ2V0GAEiOQobCglwbHVnaW5faWQSDmNsZXhwb3J0ZXItYXBwCg8KBnRhcmdldBIFbG9jYWwSCQkAAAAAAADwPyI2ChcKCXBsdWdpbl9pZBIKY2xvdWR3YXRjaAoQCgZ0YXJnZXQSBnJlbW90ZRIJCQAAAAAAAPA/IkoKKwoJcGx1Z2luX2lkEh5kbG9wZXM3LWFwcGR5bmFtaWNzLWRhdGFzb3VyY2UKEAoGdGFyZ2V0EgZyZW1vdGUSCQkAAAAAAADwPyI5ChoKCXBsdWdpbl9pZBINZWxhc3RpY3NlYXJjaAoQCgZ0YXJnZXQSBnJlbW90ZRIJCQAAAAAAAPA/IjYKFAoJcGx1Z2luX2lkEgdncmFmYW5hChMKBnRhcmdldBIJaW5fbWVtb3J5EgkJAAAAAAAA8D8iSAoqCglwbHVnaW5faWQSHWdyYWZhbmEtYXBwLW9ic2VydmFiaWxpdHktYXBwCg8KBnRhcmdldBIFbG9jYWwSCQkAAAAAAADwPyI+CiAKCXBsdWdpbl9pZBITZ3JhZmFuYS1hc3NlcnRzLWFwcAoPCgZ0YXJnZXQSBWxvY2FsEgkJAAAAAAAA8D8iQAoiCglwbHVnaW5faWQSFWdyYWZhbmEtYXNzaXN0YW50LWFwcAoPCgZ0YXJnZXQSBWxvY2FsEgkJAAAAAAAA8D8iQwolCglwbHVnaW5faWQSGGdyYWZhbmEtYXR0cmlidXRpb25zLWFwcAoPCgZ0YXJnZXQSBWxvY2FsEgkJAAAAAAAA8D8iOwodCglwbHVnaW5faWQSEGdyYWZhbmEtYXV0aC1hcHAKDwoGdGFyZ2V0EgVsb2NhbBIJCQAAAAAAAPA/IkwKLQoJcGx1Z2luX2lkEiBncmFmYW5hLWF6dXJlLW1vbml0b3ItZGF0YXNvdXJjZQoQCgZ0YXJnZXQSBnJlbW90ZRIJCQAAAAAAAPA/IkcKKAoJcGx1Z2luX2lkEhtncmFmYW5hLWJpZ3F1ZXJ5LWRhdGFzb3VyY2UKEAoGdGFyZ2V0EgZyZW1vdGUSCQkAAAAAAADwPyJJCioKCXBsdWdpbl9pZBIdZ3JhZmFuYS1kYXRhYnJpY2tzLWRhdGFzb3VyY2UKEAoGdGFyZ2V0EgZyZW1vdGUSCQkAAAAAAADwPyJFCicKCXBsdWdpbl9pZBIaZ3JhZmFuYS1kZW1vZGFzaGJvYXJkcy1hcHAKDwoGdGFyZ2V0EgVsb2NhbBIJCQAAAAAAAPA/IkgKKQoJcGx1Z2luX2lkEhxncmFmYW5hLWR5bmF0cmFjZS1kYXRhc291cmNlChAKBnRhcmdldBIGcmVtb3RlEgkJAAAAAAAA8D8iPwohCglwbHVnaW5faWQSFGdyYWZhbmEtaW5jaWRlbnQtYXBwCg8KBnRhcmdldBIFbG9jYWwSCQkAAAAAAADwPyJGCigKCXBsdWdpbl9pZBIbZ3JhZmFuYS1pbmNpZGVudC1kYXRhc291cmNlCg8KBnRhcmdldBIFbG9jYWwSCQkAAAAAAADwPyI6ChwKCXBsdWdpbl9pZBIPZ3JhZmFuYS1pcm0tYXBwCg8KBnRhcmdldBIFbG9jYWwSCQkAAAAAAADwPyJDCiQKCXBsdWdpbl9pZBIXZ3JhZmFuYS1qaXJhLWRhdGFzb3VyY2UKEAoGdGFyZ2V0EgZyZW1vdGUSCQkAAAAAAADwPyI9Ch8KCXBsdWdpbl9pZBISZ3JhZmFuYS1sYWJlbHMtYXBwCg8KBnRhcmdldBIFbG9jYWwSCQkAAAAAAADwPyI6ChwKCXBsdWdpbl9pZBIPZ3JhZmFuYS1sbG0tYXBwCg8KBnRhcmdldBIFbG9jYWwSCQkAAAAAAADwPyI5ChsKCXBsdWdpbl9pZBIOZ3JhZmFuYS1tbC1hcHAKDwoGdGFyZ2V0EgVsb2NhbBIJCQAAAAAAAPA/IkYKJwoJcGx1Z2luX2lkEhpncmFmYW5hLW1vbmdvZGItZGF0YXNvdXJjZQoQCgZ0YXJnZXQSBnJlbW90ZRIJCQAAAAAAAPA/IkkKKgoJcGx1Z2luX2lkEh1ncmFmYW5hLW9wZW5zZWFyY2gtZGF0YXNvdXJjZQoQCgZ0YXJnZXQSBnJlbW90ZRIJCQAAAAAAAPA/IlEKMwoJcGx1Z2luX2lkEiZncmFmYW5hLXBsdWdpbnNwbGF0Zm9ybXByb3Zpc2lvbmVkLWFwcAoPCgZ0YXJnZXQSBWxvY2FsEgkJAAAAAAAA8D8iTAoqCglwbHVnaW5faWQSHWdyYWZhbmEtcG9zdGdyZXNxbC1kYXRhc291cmNlChMKBnRhcmdldBIJaW5fbWVtb3J5EgkJAAAAAAAA8D8iSwopCglwbHVnaW5faWQSHGdyYWZhbmEtcHlyb3Njb3BlLWRhdGFzb3VyY2UKEwoGdGFyZ2V0Eglpbl9tZW1vcnkSCQkAAAAAAADwPyJJCioKCXBsdWdpbl9pZBIdZ3JhZmFuYS1zYWxlc2ZvcmNlLWRhdGFzb3VyY2UKEAoGdGFyZ2V0EgZyZW1vdGUSCQkAAAAAAADwPyI6ChwKCXBsdWdpbl9pZBIPZ3JhZmFuYS1zbG8tYXBwCg8KBnRhcmdldBIFbG9jYWwSCQkAAAAAAADwPyJICikKCXBsdWdpbl9pZBIcZ3JhZmFuYS1zbm93Zmxha2UtZGF0YXNvdXJjZQoQCgZ0YXJnZXQSBnJlbW90ZRIJCQAAAAAAAPA/IkUKJgoJcGx1Z2luX2lkEhlncmFmYW5hLXNwbHVuay1kYXRhc291cmNlChAKBnRhcmdldBIGcmVtb3RlEgkJAAAAAAAA8D8iSgooCglwbHVnaW5faWQSG2dyYWZhbmEtdGVzdGRhdGEtZGF0YXNvdXJjZQoTCgZ0YXJnZXQSCWluX21lbW9yeRIJCQAAAAAAAPA/IkgKKQoJcGx1Z2luX2lkEhxncmFmYW5hLXdhdmVmcm9udC1kYXRhc291cmNlChAKBnRhcmdldBIGcmVtb3RlEgkJAAAAAAAA8D8iNwoVCglwbHVnaW5faWQSCGdyYXBoaXRlChMKBnRhcmdldBIJaW5fbWVtb3J5EgkJAAAAAAAA8D8iNAoVCglwbHVnaW5faWQSCGluZmx1eGRiChAKBnRhcmdldBIGcmVtb3RlEgkJAAAAAAAA8D8iMgoTCglwbHVnaW5faWQSBmphZWdlcgoQCgZ0YXJnZXQSBnJlbW90ZRIJCQAAAAAAAPA/IjEKEwoJcGx1Z2luX2lkEgZrNi1hcHAKDwoGdGFyZ2V0EgVsb2NhbBIJCQAAAAAAAPA/IjAKEQoJcGx1Z2luX2lkEgRsb2tpChAKBnRhcmdldBIGcmVtb3RlEgkJAAAAAAAA8D8iMQoSCglwbHVnaW5faWQSBW1zc3FsChAKBnRhcmdldBIGcmVtb3RlEgkJAAAAAAAA8D8iMQoSCglwbHVnaW5faWQSBW15c3FsChAKBnRhcmdldBIGcmVtb3RlEgkJAAAAAAAA8D8iNwoVCglwbHVnaW5faWQSCG9wZW50c2RiChMKBnRhcmdldBIJaW5fbWVtb3J5EgkJAAAAAAAA8D8iNAoSCglwbHVnaW5faWQSBXBhcmNhChMKBnRhcmdldBIJaW5fbWVtb3J5EgkJAAAAAAAA8D8iNgoXCglwbHVnaW5faWQSCnByb21ldGhldXMKEAoGdGFyZ2V0EgZyZW1vdGUSCQkAAAAAAADwPyI3ChgKCXBsdWdpbl9pZBILc3RhY2tkcml2ZXIKEAoGdGFyZ2V0EgZyZW1vdGUSCQkAAAAAAADwPyI0ChIKCXBsdWdpbl9pZBIFdGVtcG8KEwoGdGFyZ2V0Eglpbl9tZW1vcnkSCQkAAAAAAADwPyIyChMKCXBsdWdpbl9pZBIGemlwa2luChAKBnRhcmdldBIGcmVtb3RlEgkJAAAAAAAA8D+bAgomZ3JhZmFuYV9wbHVnaW5zX2ZldGNoX2R1cmF0aW9uX3NlY29uZHMSJ1RoZSBkdXJhdGlvbiBmb3IgYSBwbHVnaW4gZmV0Y2ggcmVxdWVzdBgEIsUBCgwKBWNsYXNzEgNjZG4KCgoFY291bnQSATU6qAEIARHfddhynhmtPxoLCAARexSuR+F6dD8aCwgAEXsUrkfheoQ/GgsIABGamZmZmZmZPxoLCAARmpmZmZmZqT8aCwgBEZqZmZmZmbk/GgsIAREAAAAAAADQPxoLCAERAAAAAAAA4D8aCwgBEQAAAAAAAPA/GgsIAREAAAAAAAAEQBoLCAERAAAAAAAAFEAaCwgBEQAAAAAAACRAegwIt42ExAYQwrTznQJkCiFncmFmYW5hX3Byb2Nlc3NfY3B1X3NlY29uZHNfdG90YWwSMFRvdGFsIHVzZXIgYW5kIHN5c3RlbSBDUFUgdGltZSBzcGVudCBpbiBzZWNvbmRzLhgAIgsaCQkUrkfhehRBQFIKF2dyYWZhbmFfcHJvY2Vzc19tYXhfZmRzEihNYXhpbXVtIG51bWJlciBvZiBvcGVuIGZpbGUgZGVzY3JpcHRvcnMuGAEiCxIJCQAAAAAAADBBdworZ3JhZmFuYV9wcm9jZXNzX25ldHdvcmtfcmVjZWl2ZV9ieXRlc190b3RhbBI5TnVtYmVyIG9mIGJ5dGVzIHJlY2VpdmVkIGJ5IHRoZSBwcm9jZXNzIG92ZXIgdGhlIG5ldHdvcmsuGAAiCxoJCQAAANxFvMFBdAosZ3JhZmFuYV9wcm9jZXNzX25ldHdvcmtfdHJhbnNtaXRfYnl0ZXNfdG90YWwSNU51bWJlciBvZiBieXRlcyBzZW50IGJ5IHRoZSBwcm9jZXNzIG92ZXIgdGhlIG5ldHdvcmsuGAAiCxoJCQAAACAsAnJBSwoYZ3JhZmFuYV9wcm9jZXNzX29wZW5fZmRzEiBOdW1iZXIgb2Ygb3BlbiBmaWxlIGRlc2NyaXB0b3JzLhgBIgsSCQkAAAAAAABYQFYKJWdyYWZhbmFfcHJvY2Vzc19yZXNpZGVudF9tZW1vcnlfYnl0ZXMSHlJlc2lkZW50IG1lbW9yeSBzaXplIGluIGJ5dGVzLhgBIgsSCQkAAAAAQEDAQWsKImdyYWZhbmFfcHJvY2Vzc19zdGFydF90aW1lX3NlY29uZHMSNlN0YXJ0IHRpbWUgb2YgdGhlIHByb2Nlc3Mgc2luY2UgdW5peCBlcG9jaCBpbiBzZWNvbmRzLhgBIgsSCQmPwqWkQSDaQVQKJGdyYWZhbmFfcHJvY2Vzc192aXJ0dWFsX21lbW9yeV9ieXRlcxIdVmlydHVhbCBtZW1vcnkgc2l6ZSBpbiBieXRlcy4YASILEgkJAAAAAPAJ30FvCihncmFmYW5hX3Byb2Nlc3NfdmlydHVhbF9tZW1vcnlfbWF4X2J5dGVzEjRNYXhpbXVtIGFtb3VudCBvZiB2aXJ0dWFsIG1lbW9yeSBhdmFpbGFibGUgaW4gYnl0ZXMuGAEiCxIJCQAAAAAAAPBDSwodZ3JhZmFuYV9wcm92aXNpb25fcm9sZXNfY291bnQSG251bWJlciBvZiByb2xlcyBwcm92aXNpb25lZBgBIgsSCQkAAAAAAAAAAE4KJGdyYWZhbmFfcHJvdmlzaW9uX3JvbGVzX2RlbGV0ZV9jb3VudBIXbnVtYmVyIG9mIHJvbGVzIGRlbGV0ZWQYASILEgkJAAAAAAAAAAB6CiRncmFmYW5hX3Byb3Zpc2lvbmVkX2FwaV9mYWlsZWRfdG90YWwSNXVzYWdlIGNvdW50ZXIgZm9yIHByb3Zpc2lvbmVkIHBsdWdpbnMgZmFpbGVkIHJlcXVlc3RzGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQt87rzwN1CiZncmFmYW5hX3Byb3Zpc2lvbmVkX2FwaV9yZXF1ZXN0c190b3RhbBIudXNhZ2UgY291bnRlciBmb3IgcHJvdmlzaW9uZWQgcGx1Z2lucyByZXF1ZXN0cxgAIhkaFwkAAAAAAAAAABoMCJONhMQGEJKG688D5wEKI2dyYWZhbmFfcHJveHlfcmVzcG9uc2Vfc3RhdHVzX3RvdGFsEhpwcm94eSBodHRwIHJlc3BvbnNlIHN0YXR1cxgAIiYKCwoEY29kZRIDMjAwGhcJAAAAAAAAAAAaDAiTjYTEBhD0r5PPAyImCgsKBGNvZGUSAzQwNBoXCQAAAAAAAAAAGgwIk42ExAYQ+L6TzwMiJgoLCgRjb2RlEgM1MDAaFwkAAAAAAAAAABoMCJONhMQGEOjHk88DIioKDwoEY29kZRIHdW5rbm93bhoXCQAAAAAAAAAAGgwIk42ExAYQv9CTzwNtCiZncmFmYW5hX3B1YmxpY19kYXNoYm9hcmRfcmVxdWVzdF9jb3VudBImY291bnRlciBmb3IgcHVibGljIGRhc2hib2FyZHMgcmVxdWVzdHMYACIZGhcJAAAAAAAAAAAaDAiTjYTEBhDDmJvPA1EKH2dyYWZhbmFfcmVjb3JkZWRfcXVlcmllc19hY3RpdmUSH1RvdGFsIGNvdW50IG9mIHJlY29yZGVkIHF1ZXJpZXMYASILEgkJAAAAAAAAAACjAgorZ3JhZmFuYV9yZWNvcmRlZF9xdWVyaWVzX3Byb21fd3JpdGVfc2Vjb25kcxJEQW1vdW50IG9mIHRpbWUgZm9yIHRoZSB3cml0ZXIgdG8gd3JpdGUgdG8gZXh0ZXJuYWwgcHJvbWV0aGV1cyBzZXJ2ZXIYBCKrATqoAQgAEQAAAAAAAAAAGgsIABF7FK5H4Xp0PxoLCAARexSuR+F6hD8aCwgAEZqZmZmZmZk/GgsIABGamZmZmZmpPxoLCAARmpmZmZmZuT8aCwgAEQAAAAAAANA/GgsIABEAAAAAAADgPxoLCAARAAAAAAAA8D8aCwgAEQAAAAAAAARAGgsIABEAAAAAAAAUQBoLCAARAAAAAAAAJEB6DAiTjYTEBhC3z7XPA/4FCiBncmFmYW5hX3JlZ2lzdGVyZWRfbWV0cmljc190b3RhbBJZW0JFVEFdIFRoZSBjb3VudCBvZiByZWdpc3RlcmVkIG1ldHJpY3MgYnJva2VuIGJ5IHN0YWJpbGl0eSBsZXZlbCBhbmQgZGVwcmVjYXRpb24gdmVyc2lvbi4YACJLChYKEmRlcHJlY2F0ZWRfdmVyc2lvbhIAChgKD3N0YWJpbGl0eV9sZXZlbBIFQUxQSEEaFwkAAAAAAABfQBoMCJONhMQGELXV07sDIkoKFgoSZGVwcmVjYXRlZF92ZXJzaW9uEgAKFwoPc3RhYmlsaXR5X2xldmVsEgRCRVRBGhcJAAAAAAAALkAaDAiTjYTEBhDoicu7AyJNChYKEmRlcHJlY2F0ZWRfdmVyc2lvbhIAChsKD3N0YWJpbGl0eV9sZXZlbBIISU5URVJOQUwaFgkAAAAAAADwPxoLCLmNhMQGEMO+3AUiTAoWChJkZXByZWNhdGVkX3ZlcnNpb24SAAoZCg9zdGFiaWxpdHlfbGV2ZWwSBlNUQUJMRRoXCQAAAAAAAChAGgwIk42ExAYQxY3NvAMiUAocChJkZXByZWNhdGVkX3ZlcnNpb24SBjEuMjcuMAoYCg9zdGFiaWxpdHlfbGV2ZWwSBUFMUEhBGhYJAAAAAAAA8D8aCwi5jYTEBhCOwcQFIlAKHAoSZGVwcmVjYXRlZF92ZXJzaW9uEgYxLjI4LjAKGAoPc3RhYmlsaXR5X2xldmVsEgVBTFBIQRoWCQAAAAAAAPA/GgsIuY2ExAYQ36HhBSJRChwKEmRlcHJlY2F0ZWRfdmVyc2lvbhIGMS4zMC4wChgKD3N0YWJpbGl0eV9sZXZlbBIFQUxQSEEaFwkAAAAAAAAIQBoMCJONhMQGEPqBls0DIlAKHAoSZGVwcmVjYXRlZF92ZXJzaW9uEgYxLjMxLjAKGAoPc3RhYmlsaXR5X2xldmVsEgVBTFBIQRoWCQAAAAAAAPA/GgsIuY2ExAYQr/WGBqUCCjFncmFmYW5hX3JlbW90ZV9ydWxlcl9jb25maWdfc3luY19kdXJhdGlvbl9zZWNvbmRzEkFEdXJhdGlvbiBoaXN0b2dyYW0gZm9yIHN5bmNpbmcgY29uZmlndXJhdGlvbiB0byB0aGUgcmVtb3RlIHJ1bGVyLhgEIqoBOqcBCAIRAAAAbFajm0EaCwgAEXsUrkfhenQ/GgsIABF7FK5H4XqEPxoLCAARmpmZmZmZmT8aCwgAEZqZmZmZmak/GgsIABGamZmZmZm5PxoLCAARAAAAAAAA0D8aCwgAEQAAAAAAAOA/GgsIABEAAAAAAADwPxoLCAARAAAAAAAABEAaCwgAEQAAAAAAABRAGgsIABEAAAAAAAAkQHoLCLiNhMQGEL+qn1rTAQomZ3JhZmFuYV9yZW1vdGVfcnVsZXJfY29uZmlnX3N5bmNfdG90YWwSSk51bWJlciBvZiB0aW1lcyBydWxlIGNvbmZpZ3VyYXRpb24gc3luYyB0byB0aGUgcmVtb3RlIHJ1bGVyIHdhcyBhdHRlbXB0ZWQuGAAiLAoRCgZzb3VyY2USB2luaXRpYWwaFwkAAAAAAADwPxoMCLiNhMQGEPKklbsBIi0KEgoGc291cmNlEghwZXJpb2RpYxoXCQAAAAAAAPA/GgwI5I+ExAYQ7JaYuwFUChlncmFmYW5hX3JlbW90ZV9ydWxlcl9pbmZvEihJbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVtb3RlIHJ1bGVyIHN0YXRlGAEiCxIJCQAAAAAAAPA/rAIKNGdyYWZhbmFfcmVtb3RlX3J1bGVyX3Byb3h5X3JlcXVlc3RzX2R1cmF0aW9uX3NlY29uZHMSRUR1cmF0aW9uIGhpc3RvZ3JhbSBmb3IgcmVxdWVzdHMgcHJveGllZCB0byB0aGUgcmVtb3RlIHJ1bGVyIGVuZHBvaW50LhgEIqoBOqcBCAARAAAAAAAAAAAaCwgAEXsUrkfhenQ/GgsIABF7FK5H4XqEPxoLCAARmpmZmZmZmT8aCwgAEZqZmZmZmak/GgsIABGamZmZmZm5PxoLCAARAAAAAAAA0D8aCwgAEQAAAAAAAOA/GgsIABEAAAAAAADwPxoLCAARAAAAAAAABEAaCwgAEQAAAAAAABRAGgsIABEAAAAAAAAkQHoLCLiNhMQGEJLlnFqXAgorZ3JhZmFuYV9yZW1vdGVfcnVsZXJfcmVxdWVzdHNfZHJvcHBlZF90b3RhbBJLTnVtYmVyIG9mIHJlcXVlc3RzIHdoaWNoIHdlcmUgc2lsZW50bHkgZHJvcHBlZCBkdWUgdG8gY29uZmlndXJhdGlvbiBvcHRpb25zGAAiNgocCgR0eXBlEhREZWxldGVBbGVydEluc3RhbmNlcxoWCQAAAAAAAAAAGgsIuI2ExAYQvZehWiIzChkKBHR5cGUSEVNhdmVBbGVydEluc3RhbmNlGhYJAAAAAAAAAAAaCwi4jYTEBhDAjaFaIiwKEgoEdHlwZRIKU2VuZEFsZXJ0cxoWCQAAAAAAAAAAGgsIuI2ExAYQ0PugWkYKHGdyYWZhbmFfcmVuZGVyaW5nX3F1ZXVlX3NpemUSF3NpemUgb2YgcmVuZGVyaW5nIHF1ZXVlGAEiCxIJCQAAAAAAAAAAYQogZ3JhZmFuYV9yZXBvcnRpbmdfYWN0aXZlX3JlcG9ydHMSLnRvdGFsIG51bWJlciBvZiBhY3RpdmUgcmVwb3J0cyBpbiB0aGUgaW5zdGFuY2UYASILEgkJAAAAAAAA8D+IAQo2Z3JhZmFuYV9yZXBvcnRpbmdfcGFuZWxfcmVuZGVyaW5nX2ZhaWxlZF9yZXF1ZXN0X3RvdGFsEjF1c2FnZSBjb3VudGVyIGZvciBmYWlsZWQgcGFuZWwgcmVuZGVyaW5nIHJlcXVlc3RzGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQm5SM0gN6Ci9ncmFmYW5hX3JlcG9ydGluZ19wYW5lbF9yZW5kZXJpbmdfcmVxdWVzdF90b3RhbBIqdXNhZ2UgY291bnRlciBmb3IgcGFuZWwgcmVuZGVyaW5nIHJlcXVlc3RzGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQt8mL0gNtCixncmFmYW5hX3JlcG9ydGluZ19zZW5kX3JlcG9ydF9yZXF1ZXN0c190b3RhbBIgY291bnRlciBmb3Igc2VuZCByZXBvcnQgcmVxdWVzdHMYACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCvwY7SA10KJGdyYWZhbmFfcmVwb3J0aW5nX3NlbnRfcmVwb3J0c190b3RhbBIYY291bnRlciBmb3Igc2VudCByZXBvcnRzGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQ0NGP0gOYAgocZ3JhZmFuYV9ydm1hbmFnZXJfYmF0Y2hfc2l6ZRIkTnVtYmVyIG9mIHdyaXRlIG9wZXJhdGlvbnMgcGVyIGJhdGNoGAQiZgocCgVncm91cBITYWR2aXNvci5ncmFmYW5hLmFwcAoWCghyZXNvdXJjZRIKY2hlY2t0eXBlczouCAYRAAAAAAAAGEAoBjEAAAAAAADwNzgAYgQIABABaAx6DAi5jYTEBhDi6/2QASJoCh4KBWdyb3VwEhVkYXNoYm9hcmQuZ3JhZmFuYS5hcHAKFgoIcmVzb3VyY2USCmRhc2hib2FyZHM6LggDEQAAAAAAAAhAKAYxAAAAAAAA8Dc4AGIECAAQAWgGegwIuY2ExAYQqOHtlQKAAwotZ3JhZmFuYV9ydm1hbmFnZXJfZXhlY19iYXRjaF9kdXJhdGlvbl9zZWNvbmRzEjNEdXJhdGlvbiBvZiBSZXNvdXJjZVZlcnNpb25NYW5hZ2VyIGJhdGNoIG9wZXJhdGlvbnMYBCKPAQocCgVncm91cBITYWR2aXNvci5ncmFmYW5hLmFwcAoWCghyZXNvdXJjZRIKY2hlY2t0eXBlcwoPCgZzdGF0dXMSBWVycm9yOkYIBhGhmzrlijjCPygGMQAAAAAAAPA3OABiBAhjEAJiBAgGEAFiBAgGEARoAmgAaABoAGgBaAJoAHoMCLmNhMQGEMOaiKEBIoUBCh4KBWdyb3VwEhVkYXNoYm9hcmQuZ3JhZmFuYS5hcHAKFgoIcmVzb3VyY2USCmRhc2hib2FyZHMKEQoGc3RhdHVzEgdzdWNjZXNzOjgIAxEzLDcyPjXFPygGMQAAAAAAAPA3OABiBAhFEAJiBAgGEAFoAmgAaAB6DAi5jYTEBhCw2+G2AooECjNncmFmYW5hX3J2bWFuYWdlcl9leGVjX2JhdGNoX3BoYXNlX2R1cmF0aW9uX3NlY29uZHMSIkR1cmF0aW9uIG9mIGJhdGNoIG9wZXJhdGlvbiBwaGFzZXMYBCKRAQoeCgVncm91cBIVZGFzaGJvYXJkLmdyYWZhbmEuYXBwCiEKBXBoYXNlEhh1cGRhdGVfcmVzb3VyY2VfdmVyc2lvbnMKFgoIcmVzb3VyY2USCmRhc2hib2FyZHM6NAgDEQB7ztutbKc/KAYxAAAAAAAA8Dc4AGIECGEQBGgEaANoAGgCegwIuY2ExAYQqZbNrgIijQEKHgoFZ3JvdXASFWRhc2hib2FyZC5ncmFmYW5hLmFwcAoZCgVwaGFzZRIQd2FpdGluZ19mb3JfbG9jawoWCghyZXNvdXJjZRIKZGFzaGJvYXJkczo4CAMR1tpAKXYOkT8oBjEAAAAAAADwNzgAYgQIfRACYgQIDBABaAJoAGgAegwIuY2ExAYQta3upQIiiAEKHgoFZ3JvdXASFWRhc2hib2FyZC5ncmFmYW5hLmFwcAoSCgVwaGFzZRIJd3JpdGVfb3BzChYKCHJlc291cmNlEgpkYXNoYm9hcmRzOjoIAxHO2OH5VjWkPygGMQAAAAAAAPA3OABiBAhrEANiBAgMEAFoAmgBaAJoAHoMCLmNhMQGEJeLhqIC1AEKIWdyYWZhbmFfcnZtYW5hZ2VyX2luZmxpZ2h0X3dyaXRlcxIlTnVtYmVyIG9mIGNvbmN1cnJlbnQgd3JpdGUgb3BlcmF0aW9ucxgBIkEKHAoFZ3JvdXASE2Fkdmlzb3IuZ3JhZmFuYS5hcHAKFgoIcmVzb3VyY2USCmNoZWNrdHlwZXMSCQkAAAAAAAAAACJDCh4KBWdyb3VwEhVkYXNoYm9hcmQuZ3JhZmFuYS5hcHAKFgoIcmVzb3VyY2USCmRhc2hib2FyZHMSCQkAAAAAAAAAAP0CCihncmFmYW5hX3J2bWFuYWdlcl93cml0ZV9kdXJhdGlvbl9zZWNvbmRzEjNEdXJhdGlvbiBvZiBSZXNvdXJjZVZlcnNpb25NYW5hZ2VyIHdyaXRlIG9wZXJhdGlvbnMYBCKPAQocCgVncm91cBITYWR2aXNvci5ncmFmYW5hLmFwcAoWCghyZXNvdXJjZRIKY2hlY2t0eXBlcwoPCgZzdGF0dXMSBWVycm9yOkYIBhEQIO3GVUHCPygGMQAAAAAAAPA3OABiBAhjEAJiBAgGEAFiBAgGEARoAmgAaABoAGgBaAJoAHoMCLmNhMQGEPSuiaEBIocBCh4KBWdyb3VwEhVkYXNoYm9hcmQuZ3JhZmFuYS5hcHAKFgoIcmVzb3VyY2USCmRhc2hib2FyZHMKEQoGc3RhdHVzEgdzdWNjZXNzOjoIAxFG0oWQp7DKPygGMQAAAAAAAPA3OABiBAhDEAFiBAgGEANoAmgAaAFoAnoMCLmNhMQGEN/s47YClAI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/GgsIABEAAAAAAADgPxoLCAARAAAAAAAA8D8aCwgAEQAAAAAAAARAGgsIABEAAAAAAAAUQBoLCAARAAAAAAAAJEB6Cwi4jYTEBhCCo7tFqQIKSGdyYWZhbmFfc2VjcmV0c19tYW5hZ2VyX3N0b3JhZ2Vfc2VjdXJlX3ZhbHVlX3NldF9zdGF0dXNfZHVyYXRpb25fc2Vjb25kcxIuRHVyYXRpb24gb2Ygc2VjdXJlIHZhbHVlIHNldCBzdGF0dXMgb3BlcmF0aW9ucxgEIqoBOqcBCAARAAAAAAAAAAAaCwgAEXsUrkfhenQ/GgsIABF7FK5H4XqEPxoLCAARmpmZmZmZmT8aCwgAEZqZmZmZmak/GgsIABGamZmZmZm5PxoLCAARAAAAAAAA0D8aCwgAEQAAAAAAAOA/GgsIABEAAAAAAADwPxoLCAARAAAAAAAABEAaCwgAEQAAAAAAABRAGgsIABEAAAAAAAAkQHoLCLiNhMQGEIutu0V6CjRncmFmYW5hX3NldHRpbmdzcHJvdmlkZXJfbGVnYWN5X3NldHRpbmdzX25vdF91cGRhdGVkEjN0b3RhbCBudW1iZXIgb2Ygc2V0dGluZ3MgdGhhdCBoYXZlIG5vdCBiZWVuIHVwZGF0ZWQYASILEgkJAAAAAAAAAABqCjBncmFmYW5hX3NldHRpbmdzcHJvdmlkZXJfbGVnYWN5X3NldHRpbmdzX3VwZGF0ZWQSJ3RvdGFsIG51bWJlciBvZiB1cGRhdGVkIGxlZ2FjeSBzZXR0aW5ncxgBIgsSCQkAAAAAAAAAAOADCixncmFmYW5hX3N0X2FnZ3JlZ2F0b3JfdW5hdmFpbGFibGVfYXBpc2VydmljZRJkW0FMUEhBXSBHYXVnZSBvZiBHcmFmYW5hIEFQSVNlcnZpY2VzIHdoaWNoIGFyZSBtYXJrZWQgYXMgdW5hdmFpbGFibGUgYnJva2VuIGRvd24gYnkgQVBJU2VydmljZSBuYW1lLhgBIjkKLAoEbmFtZRIkdjEucHJvZHVjdGFjdGl2YXRpb24uZXh0LmdyYWZhbmEuY29tEgkJAAAAAAAAAAAiMwomCgRuYW1lEh52MWFscGhhMS5nYW1tYS5leHQuZ3JhZmFuYS5jb20SCQkAAAAAAAAAACI0CicKBG5hbWUSH3YxYWxwaGExLnNka2V4YW1wbGUuZ3JhZmFuYS5hcHASCQkAAAAAAAAAACI6Ci0KBG5hbWUSJXYxYWxwaGExLnNlcnZpY2Vtb2RlbC5leHQuZ3JhZmFuYS5jb20SCQkAAAAAAAAAACIvCiIKBG5hbWUSGnYxYmV0YTEuc2VjcmV0LmdyYWZhbmEuYXBwEgkJAAAAAAAAAAAiNQooCgRuYW1lEiB2MmFscGhhMS5hc3NlcnRzLmV4dC5ncmFmYW5hLmNvbRIJCQAAAAAAAAAAQgoZZ3JhZmFuYV9zdGF0X2FjdGl2ZV91c2VycxIWbnVtYmVyIG9mIGFjdGl2ZSB1c2VycxgBIgsSCQkAAAAAAAAAQIwBCjJncmFmYW5hX3N0YXRfZmFpbGVkX21pZ3JhdGVkX2FwaV9rZXlzX3RvX3NhX3Rva2VucxJHdG90YWwgbnVtYmVyIG9mIGZhaWxlZCBtaWdyYXRpb25zIG9mIEFQSSBrZXlzIHRvIHNlcnZpY2UgYWNjb3VudCB0b2tlbnMYASILEgkJAAAAAAAAAACWAQo4Z3JhZmFuYV9zdGF0X3N1Y2Nlc3NmdWxseV9taWdyYXRlZF9hcGlfa2V5c190b19zYV90b2tlbnMSS3RvdGFsIG51bWJlciBvZiBzdWNjZXNzZnVsIG1pZ3JhdGlvbnMgb2YgQVBJIGtleXMgdG8gc2VydmljZSBhY2NvdW50IHRva2VucxgBIgsSCQkAAAAAAAAAAIUBCjFncmFmYW5hX3N0YXRfdG90YWxfbWlncmF0ZWRfYXBpX2tleXNfdG9fc2FfdG9rZW5zEkF0b3RhbCBudW1iZXIgb2YgQVBJIGtleXMgdG8gYmUgbWlncmF0ZWQgdG8gc2VydmljZSBhY2NvdW50IHRva2VucxgBIgsSCQkAAAAAAAAAAD4KF2dyYWZhbmFfc3RhdF90b3RhbF9vcmdzEhR0b3RhbCBhbW91bnQgb2Ygb3JncxgBIgsSCQkAAAAAAADwP0gKHGdyYWZhbmFfc3RhdF90b3RhbF9wbGF5bGlzdHMSGXRvdGFsIGFtb3VudCBvZiBwbGF5bGlzdHMYASILEgkJAAAAAAAA8D9iCilncmFmYW5hX3N0YXRfdG90YWxfc2VydmljZV9hY2NvdW50X3Rva2VucxImdG90YWwgYW1vdW50IG9mIHNlcnZpY2UgYWNjb3VudCB0b2tlbnMYASILEgkJAAAAAAAALEBWCiNncmFmYW5hX3N0YXRfdG90YWxfc2VydmljZV9hY2NvdW50cxIgdG90YWwgYW1vdW50IG9mIHNlcnZpY2UgYWNjb3VudHMYASILEgkJAAAAAAAALEBtCi1ncmFmYW5hX3N0YXRfdG90YWxfc2VydmljZV9hY2NvdW50c19yb2xlX25vbmUSLXRvdGFsIGFtb3VudCBvZiBzZXJ2aWNlIGFjY291bnRzIHdpdGggbm8gcm9sZRgBIgsSCQkAAAAAAAAqQEAKGGdyYWZhbmFfc3RhdF90b3RhbF90ZWFtcxIVdG90YWwgYW1vdW50IG9mIHRlYW1zGAEiCxIJCQAAAAAAAAAAQAoYZ3JhZmFuYV9zdGF0X3RvdGFsX3VzZXJzEhV0b3RhbCBhbW91bnQgb2YgdXNlcnMYASILEgkJAAAAAAAAIEBRCiFncmFmYW5hX3N0YXRfdG90YWxzX2FjdGl2ZV9hZG1pbnMSHXRvdGFsIGFtb3VudCBvZiBhY3RpdmUgYWRtaW5zGAEiCxIJCQAAAAAAAABAUwoiZ3JhZmFuYV9zdGF0X3RvdGFsc19hY3RpdmVfZWRpdG9ycxIedG90YWwgYW1vdW50IG9mIGFjdGl2ZSBlZGl0b3JzGAEiCxIJCQAAAAAAAAAAUwoiZ3JhZmFuYV9zdGF0X3RvdGFsc19hY3RpdmVfdmlld2VycxIedG90YWwgYW1vdW50IG9mIGFjdGl2ZSB2aWV3ZXJzGAEiCxIJCQAAAAAAAAAAQwoaZ3JhZmFuYV9zdGF0X3RvdGFsc19hZG1pbnMSFnRvdGFsIGFtb3VudCBvZiBhZG1pbnMYASILEgkJAAAAAAAAIkBdCh9ncmFmYW5hX3N0YXRfdG90YWxzX2FsZXJ0X3J1bGVzEit0b3RhbCBhbW91bnQgb2YgYWxlcnQgcnVsZXMgaW4gdGhlIGRhdGFiYXNlGAEiCxIJCQAAAAAAAAAAXQofZ3JhZmFuYV9zdGF0X3RvdGFsc19hbm5vdGF0aW9ucxIrdG90YWwgYW1vdW50IG9mIGFubm90YXRpb25zIGluIHRoZSBkYXRhYmFzZRgBIgsSCQkAAAAAAAAAAE8KIGdyYWZhbmFfc3RhdF90b3RhbHNfY29ycmVsYXRpb25zEhx0b3RhbCBhbW91bnQgb2YgY29ycmVsYXRpb25zGAEiCxIJCQAAAAAAAAAASgodZ3JhZmFuYV9zdGF0X3RvdGFsc19kYXNoYm9hcmQSGnRvdGFsIGFtb3VudCBvZiBkYXNoYm9hcmRzGAEiCxIJCQAAAAAAAC5AawomZ3JhZmFuYV9zdGF0X3RvdGFsc19kYXNoYm9hcmRfdmVyc2lvbnMSMnRvdGFsIGFtb3VudCBvZiBkYXNoYm9hcmQgdmVyc2lvbnMgaW4gdGhlIGRhdGFiYXNlGAEiCxIJCQAAAAAAAD9AhwEKHWdyYWZhbmFfc3RhdF90b3RhbHNfZGF0YV9rZXlzEil0b3RhbCBhbW91bnQgb2YgZGF0YSBrZXlzIGluIHRoZSBkYXRhYmFzZRgBIhwKDwoGYWN0aXZlEgVmYWxzZRIJCQAAAAAAAAAAIhsKDgoGYWN0aXZlEgR0cnVlEgkJAAAAAAAwhkCmCQoeZ3JhZmFuYV9zdGF0X3RvdGFsc19kYXRhc291cmNlEjh0b3RhbCBudW1iZXIgb2YgZGVmaW5lZCBkYXRhc291cmNlcywgbGFiZWxlZCBieSBwbHVnaW5JZBgBIiYKGQoJcGx1Z2luX2lkEgxhbGVydG1hbmFnZXISCQkAAAAAAADwPyIkChcKCXBsdWdpbl9pZBIKY2xvdWR3YXRjaBIJCQAAAAAAAPA/IjoKLQoJcGx1Z2luX2lkEiBncmFmYW5hLWF6dXJlLW1vbml0b3ItZGF0YXNvdXJjZRIJCQAAAAAAAPA/IjUKKAoJcGx1Z2luX2lkEhtncmFmYW5hLWJpZ3F1ZXJ5LWRhdGFzb3VyY2USCQkAAAAAAADwPyI3CioKCXBsdWdpbl9pZBIdZ3JhZmFuYS1kYXRhYnJpY2tzLWRhdGFzb3VyY2USCQkAAAAAAADwPyI2CikKCXBsdWdpbl9pZBIcZ3JhZmFuYS1keW5hdHJhY2UtZGF0YXNvdXJjZRIJCQAAAAAAAPA/IjEKJAoJcGx1Z2luX2lkEhdncmFmYW5hLWppcmEtZGF0YXNvdXJjZRIJCQAAAAAAAPA/IjQKJwoJcGx1Z2luX2lkEhpncmFmYW5hLW1vbmdvZGItZGF0YXNvdXJjZRIJCQAAAAAAAPA/IjcKKgoJcGx1Z2luX2lkEh1ncmFmYW5hLW9wZW5zZWFyY2gtZGF0YXNvdXJjZRIJCQAAAAAAAPA/IjYKKQoJcGx1Z2luX2lkEhxncmFmYW5hLXB5cm9zY29wZS1kYXRhc291cmNlEgkJAAAAAAAA8D8iNwoqCglwbHVnaW5faWQSHWdyYWZhbmEtc2FsZXNmb3JjZS1kYXRhc291cmNlEgkJAAAAAAAA8D8iNgopCglwbHVnaW5faWQSHGdyYWZhbmEtc25vd2ZsYWtlLWRhdGFzb3VyY2USCQkAAAAAAADwPyIzCiYKCXBsdWdpbl9pZBIZZ3JhZmFuYS1zcGx1bmstZGF0YXNvdXJjZRIJCQAAAAAAAPA/IjYKKQoJcGx1Z2luX2lkEhxncmFmYW5hLXdhdmVmcm9udC1kYXRhc291cmNlEgkJAAAAAAAA8D8iPQowCglwbHVnaW5faWQSI2dyYWZhbmFjbG91ZC1jYXJkaW5hbGl0eS1kYXRhc291cmNlEgkJAAAAAAAA8D8iIgoVCglwbHVnaW5faWQSCGdyYXBoaXRlEgkJAAAAAAAAAEAiIgoVCglwbHVnaW5faWQSCGluZmx1eGRiEgkJAAAAAAAA8D8iJwoaCglwbHVnaW5faWQSDWs2LWRhdGFzb3VyY2USCQkAAAAAAADwPyIeChEKCXBsdWdpbl9pZBIEbG9raRIJCQAAAAAAABRAIiAKEwoJcGx1Z2luX2lkEgZwaGxhcmUSCQkAAAAAAADwPyIkChcKCXBsdWdpbl9pZBIKcHJvbWV0aGV1cxIJCQAAAAAAAAhAIiUKGAoJcGx1Z2luX2lkEgtzdGFja2RyaXZlchIJCQAAAAAAAPA/Ih8KEgoJcGx1Z2luX2lkEgV0ZW1wbxIJCQAAAAAAAABARQobZ3JhZmFuYV9zdGF0X3RvdGFsc19lZGl0b3JzEhd0b3RhbCBhbW91bnQgb2YgZWRpdG9ycxgBIgsSCQkAAAAAAAAAAEQKGmdyYWZhbmFfc3RhdF90b3RhbHNfZm9sZGVyEhd0b3RhbCBhbW91bnQgb2YgZm9sZGVycxgBIgsSCQkAAAAAAADwP2MKImdyYWZhbmFfc3RhdF90b3RhbHNfbGlicmFyeV9wYW5lbHMSLnRvdGFsIGFtb3VudCBvZiBsaWJyYXJ5IHBhbmVscyBpbiB0aGUgZGF0YWJhc2UYASILEgkJAAAAAAAAAABYCiRncmFmYW5hX3N0YXRfdG90YWxzX3B1YmxpY19kYXNoYm9hcmQSIXRvdGFsIGFtb3VudCBvZiBwdWJsaWMgZGFzaGJvYXJkcxgBIgsSCQkAAAAAAAAAAGMKH2dyYWZhbmFfc3RhdF90b3RhbHNfcnVsZV9ncm91cHMSMXRvdGFsIGFtb3VudCBvZiBhbGVydCBydWxlIGdyb3VwcyBpbiB0aGUgZGF0YWJhc2UYASILEgkJAAAAAAAAAABFChtncmFmYW5hX3N0YXRfdG90YWxzX3ZpZXdlcnMSF3RvdGFsIGFtb3VudCBvZiB2aWV3ZXJzGAEiCxIJCQAAAAAAACpAhwMKM2dyYWZhbmFfc3RvcmFnZV9zZXJ2ZXJfcG9sbGVyX3F1ZXJ5X2xhdGVuY3lfc2Vjb25kcxIUcG9sbGVyIHF1ZXJ5IGxhdGVuY3kYBCK3Ajq0AgjeGBFx54d5pRU6QBoLCAARexSuR+F6dD8aDAj2FRF7FK5H4XqEPxoMCMkYEZqZmZmZmZk/GgwI2xgRmpmZmZmZqT8aDAjeGBGamZmZmZm5PxoMCN4YEQAAAAAAANA/GgwI3hgRAAAAAAAA4D8aDAjeGBEAAAAAAADwPxoMCN4YEQAAAAAAAARAGgwI3hgRAAAAAAAAFEAaDAjeGBEAAAAAAAAkQBoMCN4YEQAAAAAAADlAGgwI3hgRAAAAAAAASUAaDAjeGBEAAAAAAABZQCgGMQAAAAAAAPA3OABiBAh3EB5oBGioAmiCBmiLAWj+BGi5BWi5AmjfAWiPAWg7aCVoE2gVaANoDWgDaAVoB2gDaAJoBWgBaAZoA2gBaABoAGgAaAFoAnoMCJSNhMQGEKLIwN8B/wUKMGdyYWZhbmFfdW5pZmllZF9zdG9yYWdlX2R1YWxfd3JpdGVyX2N1cnJlbnRfbW9kZRIoVW5pZmllZCBzdG9yYWdlIGR1YWwgd3JpdGVyIGN1cnJlbnQgbW9kZRgBIkMKHgoFZ3JvdXASFWRhc2hib2FyZC5ncmFmYW5hLmFwcAoWCghyZXNvdXJjZRIKZGFzaGJvYXJkcxIJCQAAAAAAAPA/IkYKHgoFZ3JvdXASFWRhc2hib2FyZC5ncmFmYW5hLmFwcAoZCghyZXNvdXJjZRINbGlicmFyeXBhbmVscxIJCQAAAAAAAAAAIj0KGwoFZ3JvdXASEmZvbGRlci5ncmFmYW5hLmFwcAoTCghyZXNvdXJjZRIHZm9sZGVycxIJCQAAAAAAAPA/Ik8KKwoFZ3JvdXASIm5vdGlmaWNhdGlvbnMuYWxlcnRpbmcuZ3JhZmFuYS5hcHAKFQoIcmVzb3VyY2USCXJlY2VpdmVycxIJCQAAAAAAAAAAIlIKKwoFZ3JvdXASIm5vdGlmaWNhdGlvbnMuYWxlcnRpbmcuZ3JhZmFuYS5hcHAKGAoIcmVzb3VyY2USDHJvdXRpbmd0cmVlcxIJCQAAAAAAAAAAIlQKKwoFZ3JvdXASIm5vdGlmaWNhdGlvbnMuYWxlcnRpbmcuZ3JhZmFuYS5hcHAKGgoIcmVzb3VyY2USDnRlbXBsYXRlZ3JvdXBzEgkJAAAAAAAAAAAiUworCgVncm91cBIibm90aWZpY2F0aW9ucy5hbGVydGluZy5ncmFmYW5hLmFwcAoZCghyZXNvdXJjZRINdGltZWludGVydmFscxIJCQAAAAAAAAAAIkEKHQoFZ3JvdXASFHBsYXlsaXN0LmdyYWZhbmEuYXBwChUKCHJlc291cmNlEglwbGF5bGlzdHMSCQkAAAAAAAAIQCJACh4KBWdyb3VwEhVyZXBvcnRpbmcuZ3JhZmFuYS5hcHAKEwoIcmVzb3VyY2USB3JlcG9ydHMSCQkAAAAAAAAAAP0FCi9ncmFmYW5hX3VuaWZpZWRfc3RvcmFnZV9kdWFsX3dyaXRlcl90YXJnZXRfbW9kZRInVW5pZmllZCBTdG9yYWdlIGR1YWwgd3JpdGVyIHRhcmdldCBtb2RlGAEiQwoeCgVncm91cBIVZGFzaGJvYXJkLmdyYWZhbmEuYXBwChYKCHJlc291cmNlEgpkYXNoYm9hcmRzEgkJAAAAAAAA8D8iRgoeCgVncm91cBIVZGFzaGJvYXJkLmdyYWZhbmEuYXBwChkKCHJlc291cmNlEg1saWJyYXJ5cGFuZWxzEgkJAAAAAAAAAAAiPQobCgVncm91cBISZm9sZGVyLmdyYWZhbmEuYXBwChMKCHJlc291cmNlEgdmb2xkZXJzEgkJAAAAAAAA8D8iTworCgVncm91cBIibm90aWZpY2F0aW9ucy5hbGVydGluZy5ncmFmYW5hLmFwcAoVCghyZXNvdXJjZRIJcmVjZWl2ZXJzEgkJAAAAAAAAAAAiUgorCgVncm91cBIibm90aWZpY2F0aW9ucy5hbGVydGluZy5ncmFmYW5hLmFwcAoYCghyZXNvdXJjZRIMcm91dGluZ3RyZWVzEgkJAAAAAAAAAAAiVAorCgVncm91cBIibm90aWZpY2F0aW9ucy5hbGVydGluZy5ncmFmYW5hLmFwcAoaCghyZXNvdXJjZRIOdGVtcGxhdGVncm91cHMSCQkAAAAAAAAAACJTCisKBWdyb3VwEiJub3RpZmljYXRpb25zLmFsZXJ0aW5nLmdyYWZhbmEuYXBwChkKCHJlc291cmNlEg10aW1laW50ZXJ2YWxzEgkJAAAAAAAAAAAiQQodCgVncm91cBIUcGxheWxpc3QuZ3JhZmFuYS5hcHAKFQoIcmVzb3VyY2USCXBsYXlsaXN0cxIJCQAAAAAAAAhAIkAKHgoFZ3JvdXASFXJlcG9ydGluZy5ncmFmYW5hLmFwcAoTCghyZXNvdXJjZRIHcmVwb3J0cxIJCQAAAAAAAAAAKwoYZ3JhZmFuYV92YXVsdF9jYWNoZV9zaXplEgAYASILEgkJAAAAAAAAAABECiNncmFmYW5hX3ZhdWx0X3NlY3JldF9yZW5ld2Fsc190b3RhbBIAGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQuLilzwNMCitncmFmYW5hX3ZhdWx0X3NlcnZpY2Vfc2VjcmV0X3JlbmV3YWxzX3RvdGFsEgAYACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCPr6XPA4UEChxncmFmYW5hX3dvcmtxdWV1ZV9hZGRzX3RvdGFsEjFbQUxQSEFdIFRvdGFsIG51bWJlciBvZiBhZGRzIGhhbmRsZWQgYnkgd29ya3F1ZXVlGAAiQgooCgRuYW1lEiBBUElTZXJ2aWNlUmVnaXN0cmF0aW9uQ29udHJvbGxlchoWCQAAAAAAgElAGgsIuY2ExAYQpKaJRCI+CiQKBG5hbWUSHEF2YWlsYWJsZUNvbmRpdGlvbkNvbnRyb2xsZXIaFgkAAAAAAFByQBoLCLmNhMQGEJPItUQiPQojCgRuYW1lEhtMb2NhbEF2YWlsYWJpbGl0eUNvbnRyb2xsZXIaFgkAAAAAAAA1QBoLCLmNhMQGEOrkjkQiLgoUCgRuYW1lEgxhdXRvcmVnaXN0ZXIaFgkAAAAAAABSQBoLCLmNhMQGEKTbnEQiMwoZCgRuYW1lEhFkaXNjb3ZlcnktbWFuYWdlchoWCQAAAAAAgExAGgsIuY2ExAYQ26KYRCJBCicKBG5hbWUSH29wZW5fYXBpX2FnZ3JlZ2F0aW9uX2NvbnRyb2xsZXIaFgkAAAAAAABFQBoLCLmNhMQGEOLu2H0iRQoqCgRuYW1lEiJvcGVuX2FwaV92M19hZ2dyZWdhdGlvbl9jb250cm9sbGVyGhcJAAAAAACQiEAaDAi5jYTEBhDzzYOPAZUDChdncmFmYW5hX3dvcmtxdWV1ZV9kZXB0aBIiW0FMUEhBXSBDdXJyZW50IGRlcHRoIG9mIHdvcmtxdWV1ZRgBIjUKKAoEbmFtZRIgQVBJU2VydmljZVJlZ2lzdHJhdGlvbkNvbnRyb2xsZXISCQkAAAAAAAAAACIxCiQKBG5hbWUSHEF2YWlsYWJsZUNvbmRpdGlvbkNvbnRyb2xsZXISCQkAAAAAAAAAACIwCiMKBG5hbWUSG0xvY2FsQXZhaWxhYmlsaXR5Q29udHJvbGxlchIJCQAAAAAAADVAIiEKFAoEbmFtZRIMYXV0b3JlZ2lzdGVyEgkJAAAAAAAAAAAiJgoZCgRuYW1lEhFkaXNjb3ZlcnktbWFuYWdlchIJCQAAAAAAAAAAIjQKJwoEbmFtZRIfb3Blbl9hcGlfYWdncmVnYXRpb25fY29udHJvbGxlchIJCQAAAAAAAAAAIjcKKgoEbmFtZRIib3Blbl9hcGlfdjNfYWdncmVnYXRpb25fY29udHJvbGxlchIJCQAAAAAAAAAA5QMKM2dyYWZhbmFfd29ya3F1ZXVlX2xvbmdlc3RfcnVubmluZ19wcm9jZXNzb3Jfc2Vjb25kcxJWW0FMUEhBXSBIb3cgbWFueSBzZWNvbmRzIGhhcyB0aGUgbG9uZ2VzdCBydW5uaW5nIHByb2Nlc3NvciBmb3Igd29ya3F1ZXVlIGJlZW4gcnVubmluZy4YASI1CigKBG5hbWUSIEFQSVNlcnZpY2VSZWdpc3RyYXRpb25Db250cm9sbGVyEgkJAAAAAAAAAAAiMQokCgRuYW1lEhxBdmFpbGFibGVDb25kaXRpb25Db250cm9sbGVyEgkJAAAAAAAAAAAiMAojCgRuYW1lEhtMb2NhbEF2YWlsYWJpbGl0eUNvbnRyb2xsZXISCQkAAAAAAAAAACIhChQKBG5hbWU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jZVJlZ2lzdHJhdGlvbkNvbnRyb2xsZXIaFgkAAAAAAAAAABoLCLmNhMQGEJKhi0QiPgokCgRuYW1lEhxBdmFpbGFibGVDb25kaXRpb25Db250cm9sbGVyGhYJAAAAAAAAEEAaCwi5jYTEBhD0xrdEIj0KIwoEbmFtZRIbTG9jYWxBdmFpbGFiaWxpdHlDb250cm9sbGVyGhYJAAAAAAAAAAAaCwi5jYTEBhDBto9EIi4KFAoEbmFtZRIMYXV0b3JlZ2lzdGVyGhYJAAAAAAAAAAAaCwi5jYTEBhCuyp1EIjMKGQoEbmFtZRIRZGlzY292ZXJ5LW1hbmFnZXIaFgkAAAAAAAAAABoLCLmNhMQGEMH3mEQiQQonCgRuYW1lEh9vcGVuX2FwaV9hZ2dyZWdhdGlvbl9jb250cm9sbGVyGhYJAAAAAAAASEAaCwi5jYTEBhChmN59IkUKKgoEbmFtZRIib3Blbl9hcGlfdjNfYWdncmVnYXRpb25fY29udHJvbGxlchoXCQAAAAAA4IhAGgwIuY2ExAYQtceHjwHtBAopZ3JhZmFuYV93b3JrcXVldWVfdW5maW5pc2hlZF93b3JrX3NlY29uZHMS5wFbQUxQSEFdIEhvdyBtYW55IHNlY29uZHMgb2Ygd29yayBoYXMgZG9uZSB0aGF0IGlzIGluIHByb2dyZXNzIGFuZCBoYXNuJ3QgYmVlbiBvYnNlcnZlZCBieSB3b3JrX2R1cmF0aW9uLiBMYXJnZSB2YWx1ZXMgaW5kaWNhdGUgc3R1Y2sgdGhyZWFkcy4gT25lIGNhbiBkZWR1Y2UgdGhlIG51bWJlciBvZiBzdHVjayB0aHJlYWRzIGJ5IG9ic2VydmluZyB0aGUgcmF0ZSBhdCB3aGljaCB0aGlzIGluY3JlYXNlcy4YASI1CigKBG5hbWUSIEFQSVNlcnZpY2VSZWdpc3RyYXRpb25Db250cm9sbGVyEgkJAAAAAAAAAAAiMQokCgRuYW1lEhxBdmFpbGFibGVDb25kaXRpb25Db250cm9sbGVyEgkJAAAAAAAAAAAiMAojCgRuYW1lEhtMb2NhbEF2YWlsYWJpbGl0eUNvbnRyb2xsZXISCQkAAAAAAAAAACIhChQKBG5hbWUSDGF1dG9yZWdpc3RlchIJCQAAAAAAAAAAIiYKGQoEbmFtZRIRZGl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HVG90YWwgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIGF0dGVtcHRlZCBieSB0aGUgZ2l2ZW4gZGlhbGVyIGEgZ2l2ZW4gbmFtZS4YACI2ChsKC2RpYWxlcl9uYW1lEgxhbGVydG1hbmFnZXIaFwkAAAAAAAAAABoMCLeNhMQGEJS79OwCuAEKJm5ldF9jb25udHJhY2tfZGlhbGVyX2Nvbm5fY2xvc2VkX3RvdGFsElRUb3RhbCBudW1iZXIgb2YgY29ubmVjdGlvbnMgY2xvc2VkIHdoaWNoIG9yaWdpbmF0ZWQgZnJvbSB0aGUgZGlhbGVyIG9mIGEgZ2l2ZW4gbmFtZS4YACI2ChsKC2RpYWxlcl9uYW1lEgxhbGVydG1hbmFnZXIaFwkAAAAAAAAAABoMCLeNhMQGEM6C+OwCvwEKK25ldF9jb25udHJhY2tfZGlhbGVyX2Nvbm5fZXN0YWJsaXNoZWRfdG90YWwSVlRvdGFsIG51bWJlciBvZiBjb25uZWN0aW9ucyBzdWNjZXNzZnVsbHkgZXN0YWJsaXNoZWQgYnkgdGhlIGdpdmVuIGRpYWxlciBhIGdpdmVuIG5hbWUuGAAiNgobCgtkaWFsZXJfbmFtZRIMYWxlcnRtYW5hZ2VyGhcJAAAAAAAAAAAaDAi3jYTEBhCzz/TsAqEDCiZuZXRfY29ubnRyYWNrX2RpYWxlcl9jb25uX2ZhaWxlZF90b3RhbBJGVG90YWwgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIGZhaWxlZCB0byBkaWFsIGJ5IHRoZSBkaWFsZXIgYSBnaXZlbiBuYW1lLhgAIkkKGwoLZGlhbGVyX25hbWUSDGFsZXJ0bWFuYWdlcgoRCgZyZWFzb24SB3JlZnVzZWQaFwkAAAAAAAAAABoMCLeNhMQGENqD9uwCIkwKGwoLZGlhbGVyX25hbWUSDGFsZXJ0bWFuYWdlcgoUCgZyZWFzb24SCnJlc29sdXRpb24aFwkAAAAAAAAAABoMCLeNhMQGEPr19ewCIkkKGwoLZGlhbGVyX25hbWUSDGFsZXJ0bWFuYWdlcgoRCgZyZWFzb24SB3RpbWVvdXQaFwkAAAAAAAAAABoMCLeNhMQGEMzn9OwCIkkKGwoLZGlhbGVyX25hbWUSDGFsZXJ0bWFuYWdlcgoRCgZyZWFzb24SB3Vua25vd24aFwkAAAAAAAAAABoMCLeNhMQGELaS9uwChQEKJ29wZW5mZ2FfY2FjaGVjb250cm9sbGVyX2NhY2hlX2hpdF9jb3VudBI9VGhlIHRvdGFsIG51bWJlciBvZiBjYWNoZSBoaXRzIGZyb20gY2FjaGVjb250cm9sbGVyIHJlcXVlc3RzLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGEN29gcwDlQEKMG9wZW5mZ2FfY2FjaGVjb250cm9sbGVyX2NhY2hlX2ludmFsaWRhdGlvbl9jb3VudBJEVGhlIHRvdGFsIG51bWJlciBvZiBpbnZhbGlkYXRpb25zIHBlcmZvcm1lZCBieSB0aGUgY2FjaGUgY29udHJvbGxlci4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhC5lIPMA3cKKW9wZW5mZ2FfY2FjaGVjb250cm9sbGVyX2NhY2hlX3RvdGFsX2NvdW50Ei1UaGUgdG90YWwgbnVtYmVyIG9mIGNhY2hlY29udHJvbGxlciByZXF1ZXN0cy4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhDVlP/LA24KHW9wZW5mZ2FfY2hlY2tfY2FjaGVfaGl0X2NvdW50EjBUaGUgdG90YWwgbnVtYmVyIG9mIGNhY2hlIGhpdHMgZm9yIFJlc29sdmVDaGVjay4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhDtuaHMA6gBCiVvcGVuZmdhX2NoZWNrX2NhY2hlX2ludmFsaWRfaGl0X2NvdW50EmJUaGUgdG90YWwgbnVtYmVyIG9mIGNhY2hlIGhpdHMgZm9yIFJlc29sdmVDaGVjayB0aGF0IHdlcmUgZGlzY2FyZGVkIGJlY2F1c2UgdGhleSB3ZXJlIGludmFsaWRhdGVkLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGEO+Do8wDagofb3BlbmZnYV9jaGVja19jYWNoZV90b3RhbF9jb3VudBIqVGhlIHRvdGFsIG51bWJlciBvZiBjYWxscyB0byBSZXNvbHZlQ2hlY2suGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQscCgzAOCAgopb3BlbmZnYV9jb25kaXRpb25fY29tcGlsYXRpb25fZHVyYXRpb25fbXMSTEEgaGlzdG9ncmFtIG1lYXN1cmluZyB0aGUgY29tcGlsYXRpb24gdGltZSAoaW4gbWlsbGlzZWNvbmRzKSBvZiBhIENvbmRpdGlvbi4YBCKEATqBAQgAEQAAAAAAAAAAGgsIABEAAAAAAADwPxoLCAARAAAAAAAAFEAaCwgAEQAAAAAAAC5AGgsIABEAAAAAAABJQBoLCAARAAAAAAAAWUAaCwgAEQAAAAAAQG9AGgsIABEAAAAAAEB/QBoLCAARAAAAAABAj0B6DAiTjYTEBhCSop+1A5UCCiFvcGVuZmdhX2NvbmRpdGlvbl9ldmFsdWF0aW9uX2Nvc3QSTUEgaGlzdG9ncmFtIG9mIHRoZSBDRUwgZXZhbHVhdGlvbiBjb3N0IG9mIGEgQ29uZGl0aW9uIGluIGEgUmVsYXRpb25zaGlwIFR1cGxlGAQingE6mwEIABEAAAAAAAAAABoLCAARAAAAAAAAAAAaCwgAEY7jOI7jOCZAGgsIABGO4ziO4zg2QBoLCAARqqqqqqqqQEAaCwgAEY7jOI7jOEZAGgsIABFyHMdxHMdLQBoLCAARq6qqqqqqUEAaCwgAER3HcRzHcVNAGgsIABGP4ziO4zhWQCgGMQAAAAAAAPA3OAB6DAiTjYTEBhDHtaa1A5oCCihvcGVuZmdhX2NvbmRpdGlvbl9ldmFsdWF0aW9uX2R1cmF0aW9uX21zEktBIGhpc3RvZ3JhbSBtZWFzdXJpbmcgdGhlIGV2YWx1YXRpb24gdGltZSAoaW4gbWlsbGlzZWNvbmRzKSBvZiBhIENvbmRpdGlvbi4YBCKeATqbAQgAEQAAAAAAAAAAGgsIABGamZmZmZm5PxoLCAARAAAAAAAA0D8aCwgAEQAAAAAAAOA/GgsIABEAAAAAAADwPxoLCAARAAAAAAAAFEAaCwgAEQAAAAAAAC5AGgsIABEAAAAAAABJQBoLCAARAAAAAAAAWUAaCwgAEQAAAAAAQG9AGgsIABEAAAAAAEB/QHoMCJONhMQGEOi3pLUDtgEKMG9wZW5mZ2FfbGlzdF9vYmplY3RzX2Z1cnRoZXJfZXZhbF9yZXF1aXJlZF9jb3VudBJlTnVtYmVyIG9mIG9iamVjdHMgaW4gYSBMaXN0T2JqZWN0cyBjYWxsIHRoYXQgbmVlZGVkIHRvIGlzc3VlIGEgQ2hlY2sgY2FsbCB0byBkZXRlcm1pbmUgYSBmaW5hbCByZXN1bHQYACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCq/K/MA7kBCjNvcGVuZmdhX2xpc3Rfb2JqZWN0c19ub19mdXJ0aGVyX2V2YWxfcmVxdWlyZWRfY291bnQSZU51bWJlciBvZiBvYmplY3RzIGluIGEgTGlzdE9iamVjdHMgY2FsbCB0aGF0IG5lZWRlZCB0byBpc3N1ZSBhIENoZWNrIGNhbGwgdG8gZGV0ZXJtaW5lIGEgZmluYWwgcmVzdWx0GAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQqpaxzANfCh1vcGVuZmdhX3NoYXJlZF9pdGVyYXRvcl9jb3VudBIvVGhlIGN1cnJlbnQgbnVtYmVyIG9mIGl0ZW1zIG9mIHNoYXJlZCBpdGVyYXRvci4YASILEgkJAAAAAAAAAACDAQowb3BlbmZnYV9zaGFyZWRfaXRlcmF0b3Jfd2F0Y2hkb2dfdGltZXJfdHJpZ2dlcmVkEjJUb3RhbCBudW1iZXIgb2YgdGltZXMgd2F0Y2hkb2cgdGltZXIgaXMgdHJpZ2dlcmVkLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGEL7ipswDUAoYcGx1Z2luc19hY3RpdmVfaW5zdGFuY2VzEiVUaGUgbnVtYmVyIG9mIGFjdGl2ZSBwbHVnaW4gaW5zdGFuY2VzGAEiCxIJCQAAAAAAAAAAdAoicGx1Z2luc19kYXRhc291cmNlX2luc3RhbmNlc190b3RhbBIxVGhlIHRvdGFsIG51bWJlciBvZiBkYXRhIHNvdXJjZSBpbnN0YW5jZXMgY3JlYXRlZBgAIhkaFwkAAAAAAAAAABoMCJONhMQGELihq80DXAoZcHJvY2Vzc19jcHVfc2Vjb25kc190b3RhbBIwVG90YWwgdXNlciBhbmQgc3lzdGVtIENQVSB0aW1lIHNwZW50IGluIHNlY29uZHMuGAAiCxoJCRSuR+F6FEFASgoPcHJvY2Vzc19tYXhfZmRzEihNYXhpbXVtIG51bWJlciBvZiBvcGVuIGZpbGUgZGVzY3JpcHRvcnMuGAEiCxIJCQAAAAAAADBBbwojcHJvY2Vzc19uZXR3b3JrX3JlY2VpdmVfYnl0ZXNfdG90YWwSOU51bWJlciBvZiBieXRlcyByZWNlaXZlZCBieSB0aGUgcHJvY2VzcyBvdmVyIHRoZSBuZXR3b3JrLhgAIgsaCQkAAIDAR7zBQWwKJHByb2Nlc3NfbmV0d29ya190cmFuc21pdF9ieXRlc190b3RhbBI1TnVtYmVyIG9mIGJ5dGVzIHNlbnQgYnkgdGhlIHByb2Nlc3Mgb3ZlciB0aGUgbmV0d29yay4YACILGgkJAAAAMEACckFDChBwcm9jZXNzX29wZW5fZmRzEiBOdW1iZXIgb2Ygb3BlbiBmaWxlIGRlc2NyaXB0b3JzLhgBIgsSCQkAAAAAAABYQE4KHXByb2Nlc3NfcmVzaWRlbnRfbWVtb3J5X2J5dGVzEh5SZXNpZGVudCBtZW1vcnkgc2l6ZSBpbiBieXRlcy4YASILEgkJAAAAAEBBwEFjChpwcm9jZXNzX3N0YXJ0X3RpbWVfc2Vjb25kcxI2U3RhcnQgdGltZSBvZiB0aGUgcHJvY2VzcyBzaW5jZSB1bml4IGVwb2NoIGluIHNlY29uZHMuGAEiCxIJCY/CpaRBINpBTAoccHJvY2Vzc192aXJ0dWFsX21lbW9yeV9ieXRlcxIdVmlydHVhbCBtZW1vcnkgc2l6ZSBpbiBieXRlcy4YASILEgkJAAAAAPAJ30FnCiBwcm9jZXNzX3ZpcnR1YWxfbWVtb3J5X21heF9ieXRlcxI0TWF4aW11bSBhbW91bnQgb2YgdmlydHVhbCBtZW1vcnkgYXZhaWxhYmxlIGluIGJ5dGVzLhgBIgsSCQkAAAAAAADwQ4cBCjFwcm9tZXRoZXVzX3RlbXBsYXRlX3RleHRfZXhwYW5zaW9uX2ZhaWx1cmVzX3RvdGFsEjVUaGUgdG90YWwgbnVtYmVyIG9mIHRlbXBsYXRlIHRleHQgZXhwYW5zaW9uIGZhaWx1cmVzLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGEKybuLUDdwopcHJvbWV0aGV1c190ZW1wbGF0ZV90ZXh0X2V4cGFuc2lvbnNfdG90YWwSLVRoZSB0b3RhbCBudW1iZXIgb2YgdGVtcGxhdGUgdGV4dCBleHBhbnNpb25zLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGELOouLUDZAoqcHJvbWh0dHBfbWV0cmljX2hhbmRsZXJfcmVxdWVzdHNfaW5fZmxpZ2h0EidDdXJyZW50IG51bWJlciBvZiBzY3JhcGVzIGJlaW5nIHNlcnZlZC4YASILEgkJAAAAAAAAAADNAQomcHJvbWh0dHBfbWV0cmljX2hhbmRsZXJfcmVxdWVzdHNfdG90YWwSLFRvdGFsIG51bWJlciBvZiBzY3JhcGVzIGJ5IEhUVFAgc3RhdHVzIGNvZGUuGAAiJQoLCgRjb2RlEgMyMDAaFgkAAAAAAAAAABoLCLmNhMQGEJ/imAYiJQoLCgRjb2RlEgM1MDAaFgkAAAAAAAAAABoLCLmNhMQGELPwmAYiJQoLCgRjb2RlEgM1MDMaFgkAAAAAAAAAABoLCLmNhMQGEMr3mAb5AQoidGVtcG9fYnVmZmVyX3Bvb2xfbWlzc19ieXRlc190b3RhbBI+VGhlIHRvdGFsIG51bWJlciBvZiBhbGxvYydlZCBieXRlcyB0aGF0IG1pc3NlZCB0aGUgc3luYyBwb29scy4YACJHChEKCWRpcmVjdGlvbhIEb3ZlcgoZCgRuYW1lEhFpbmdlc3Rlcl9wcmVhbGxvYxoXCQAAAAAAAAAAGgwIk42ExAYQ/YuSwAMiSAoSCglkaXJlY3Rpb24SBXVuZGVyChkKBG5hbWUSEWluZ2VzdGVyX3ByZWFsbG9jGhcJAAAAAAAAAAAaDAiTjYTEBhDYpZLAAw== \ No newline at end of file From 9e418f0633f9963f1d1e3931988e953562430d4b Mon Sep 17 00:00:00 2001 From: Piotr <17101802+thampiotr@users.noreply.github.com> Date: Wed, 30 Jul 2025 15:05:49 +0100 Subject: [PATCH 06/24] update prom to fix memory corruption --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 116a846657c..0ee44a4cb2a 100644 --- a/go.mod +++ b/go.mod @@ -1056,7 +1056,7 @@ replace github.com/fsnotify/fsnotify v1.8.0 => github.com/fsnotify/fsnotify v1.7 // TODO: remove replace directive once: // * There is a release of Prometheus which addresses https://github.com/prometheus/prometheus/issues/14049, // for example, via this implementation: https://github.com/grafana/prometheus/pull/34 -replace github.com/prometheus/prometheus => github.com/grafana/prometheus v1.8.2-0.20250709144109-5551df55271b +replace github.com/prometheus/prometheus => github.com/grafana/prometheus v1.8.2-0.20250730140258-90a2d9915a0f // staleness_disabling_v3.4.2 branch replace gopkg.in/yaml.v2 => github.com/rfratto/go-yaml v0.0.0-20211119180816-77389c3526dc diff --git a/go.sum b/go.sum index b5d2d732d5b..7f8cfbb4f34 100644 --- a/go.sum +++ b/go.sum @@ -1328,8 +1328,8 @@ github.com/grafana/otel-profiling-go v0.5.1 h1:stVPKAFZSa7eGiqbYuG25VcqYksR6iWvF github.com/grafana/otel-profiling-go v0.5.1/go.mod h1:ftN/t5A/4gQI19/8MoWurBEtC6gFw8Dns1sJZ9W4Tls= github.com/grafana/postgres_exporter v0.0.0-20250714124518-c5d0a4dad445 h1:1rC8i0khfZdRA0/k7RBQQ84PhASNQLssezXHmFcWZ6Y= github.com/grafana/postgres_exporter v0.0.0-20250714124518-c5d0a4dad445/go.mod h1:0elZWWHfbwJNwKbiKgBKaEXTDewatxCt9UFZaN6LZsA= -github.com/grafana/prometheus v1.8.2-0.20250709144109-5551df55271b h1:7e6NMPNpqETo6ID2oddAl7+Vt91SrpGGP3v7qwgrgG0= -github.com/grafana/prometheus v1.8.2-0.20250709144109-5551df55271b/go.mod h1:ioGx2SGKTY+fLnJSQCdTHqARVldGNS8OlIe3kvp98so= +github.com/grafana/prometheus v1.8.2-0.20250730140258-90a2d9915a0f h1:8XSzN/sFjvKFsvCFAvdFSWdvsvd5m+SaWNqxpBV1BGw= +github.com/grafana/prometheus v1.8.2-0.20250730140258-90a2d9915a0f/go.mod h1:ioGx2SGKTY+fLnJSQCdTHqARVldGNS8OlIe3kvp98so= github.com/grafana/pyroscope-go/godeltaprof v0.1.8 h1:iwOtYXeeVSAeYefJNaxDytgjKtUuKQbJqgAIjlnicKg= github.com/grafana/pyroscope-go/godeltaprof v0.1.8/go.mod h1:2+l7K7twW49Ct4wFluZD3tZ6e0SjanjcUUBPVD/UuGU= github.com/grafana/pyroscope/api v1.2.0 h1:SfHDZcEZ4Vbj/Jj3bTOSpm4IDB33wLA2xBYxROhiL4U= From 1bd9e305fff7a7886db24e4e5cdb221fe47f47da Mon Sep 17 00:00:00 2001 From: Piotr <17101802+thampiotr@users.noreply.github.com> Date: Wed, 30 Jul 2025 15:28:50 +0100 Subject: [PATCH 07/24] tweak docs --- .../reference/components/prometheus/prometheus.scrape.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sources/reference/components/prometheus/prometheus.scrape.md b/docs/sources/reference/components/prometheus/prometheus.scrape.md index 682b3370a07..2925be6e492 100644 --- a/docs/sources/reference/components/prometheus/prometheus.scrape.md +++ b/docs/sources/reference/components/prometheus/prometheus.scrape.md @@ -93,8 +93,8 @@ The following values are supported: * `OpenMetricsText0.0.1` * `OpenMetricsText1.0.0` * `PrometheusProto` -* `PrometheusText1.0.0` * `PrometheusText0.0.4` +* `PrometheusText1.0.0` You can also use the `scrape_fallback_protocol` argument to specify a fallback protocol to use if the target does not provide a valid Content-Type header. From 441d86b1ad3c4fce1e540472fe5590f2ee913bba Mon Sep 17 00:00:00 2001 From: Piotr <17101802+thampiotr@users.noreply.github.com> Date: Wed, 30 Jul 2025 15:31:39 +0100 Subject: [PATCH 08/24] delete debugging code --- .../prometheus/scrape/parser_issue_test.go | 171 ------------------ .../scrape/testdata/proto-base64.txt | 1 - 2 files changed, 172 deletions(-) delete mode 100644 internal/component/prometheus/scrape/parser_issue_test.go delete mode 100644 internal/component/prometheus/scrape/testdata/proto-base64.txt diff --git a/internal/component/prometheus/scrape/parser_issue_test.go b/internal/component/prometheus/scrape/parser_issue_test.go deleted file mode 100644 index 367d4126d94..00000000000 --- a/internal/component/prometheus/scrape/parser_issue_test.go +++ /dev/null @@ -1,171 +0,0 @@ -package scrape - -import ( - "encoding/base64" - "errors" - "io" - "os" - "testing" - - "github.com/prometheus/common/model" - "github.com/prometheus/prometheus/model/exemplar" - "github.com/prometheus/prometheus/model/histogram" - "github.com/prometheus/prometheus/model/labels" - "github.com/prometheus/prometheus/model/textparse" - "github.com/stretchr/testify/require" -) - -func TestProtobufParse2(t *testing.T) { - // inputBuf := createTestProtoBuf(t) - // bb := inputBuf.Bytes() - - // Read test data from file - bb, err := os.ReadFile("testdata/proto-base64.txt") - if err != nil { - t.Fatal(err) - } - // Decode base64 - bb, err = base64.StdEncoding.DecodeString(string(bb)) - if err != nil { - t.Fatal(err) - } - - scenarios := []struct { - name string - parser textparse.Parser - expected []parsedEntry - }{ - { - name: "parse classic and native buckets", - parser: textparse.NewProtobufParser(bb, true, nil), - }, - { - name: "don't parse classic and native buckets", - parser: textparse.NewProtobufParser(bb, false, nil), - }, - { - name: "parse classic and native buckets with symbol table", - parser: textparse.NewProtobufParser(bb, true, labels.NewSymbolTable()), - }, - { - name: "don't parse classic and native buckets with symbol table", - parser: textparse.NewProtobufParser(bb, false, labels.NewSymbolTable()), - }, - } - - for _, scenario := range scenarios { - t.Run(scenario.name, func(t *testing.T) { - p := scenario.parser - testParse2(t, p) - }) - } -} - -func testParse2(t *testing.T, p textparse.Parser) (ret []parsedEntry) { - t.Helper() - - var ( - lastLabels labels.Labels - lastLabelsStr = "{}" - ) - - for { - require.True(t, lastLabels.IsValid(model.LegacyValidation)) - require.Equal(t, lastLabelsStr, lastLabels.String()) - - et, err := p.Next() - if errors.Is(err, io.EOF) { - break - } - require.NoError(t, err) - - var got parsedEntry - var m []byte - - require.True(t, lastLabels.IsValid(model.LegacyValidation)) - require.Equal(t, lastLabelsStr, lastLabels.String()) - - switch et { - case textparse.EntryInvalid: - t.Fatal("entry invalid not expected") - case textparse.EntrySeries, textparse.EntryHistogram: - var ts *int64 - if et == textparse.EntrySeries { - m, ts, got.v = p.Series() - } else { - m, ts, got.shs, got.fhs = p.Histogram() - } - if ts != nil { - got.t = nil - } - got.m = string(m) - - p.Labels(&lastLabels) - _ = lastLabels.Hash() - _ = lastLabels.IsEmpty() - _ = lastLabels.Has(labels.MetricName) - require.True(t, lastLabels.IsValid(model.LegacyValidation)) - - lb := labels.NewBuilder(lastLabels) - lb.Set("foo", "bar") - lb.Set("another", "label") - lb.Set("zoo", "animal") - lastLabels = lb.Labels() - - lastLabelsStr = lastLabels.String() - got.lset = lastLabels - t.Log(lastLabelsStr) - - got.ct = p.CreatedTimestamp() - - for e := (exemplar.Exemplar{}); p.Exemplar(&e); { - got.es = append(got.es, e) - } - case textparse.EntryType: - m, got.typ = p.Type() - got.m = string(m) - - case textparse.EntryHelp: - m, h := p.Help() - got.m = string(m) - got.help = string(h) - - case textparse.EntryUnit: - m, u := p.Unit() - got.m = string(m) - got.unit = string(u) - - case textparse.EntryComment: - got.comment = string(p.Comment()) - } - ret = append(ret, got) - } - return ret -} - -type parsedEntry struct { - // In all but EntryComment, EntryInvalid. - m string - - // In EntryHistogram. - shs *histogram.Histogram - fhs *histogram.FloatHistogram - - // In EntrySeries. - v float64 - - // In EntrySeries and EntryHistogram. - lset labels.Labels - t *int64 - es []exemplar.Exemplar - ct int64 - - // In EntryType. - typ model.MetricType - // In EntryHelp. - help string - // In EntryUnit. - unit string - // In EntryComment. - comment string -} diff --git a/internal/component/prometheus/scrape/testdata/proto-base64.txt b/internal/component/prometheus/scrape/testdata/proto-base64.txt deleted file mode 100644 index b60c23f8b60..00000000000 --- a/internal/component/prometheus/scrape/testdata/proto-base64.txt +++ /dev/null @@ -1 +0,0 @@ -QwofYW5hbHl0aWNzX3N1bW1hcmllc19idWZmZXJfc2l6ZRIAGAEiHAoPCgRuYW1lEgdkZWZhdWx0EgkJAAAAAAAAAABiCithbmFseXRpY3Nfc3VtbWFyaWVzX3JvbGx1cF9kdXJhdGlvbl9zZWNvbmRzEgAYAiIvIi0IABEAAAAAAAAAABoSCQAAAAAAAOA/EQEAAAAAAPh/IgwIk42ExAYQ9teI0gM7CihhbmFseXRpY3Nfc3VtbWFyaWVzX3JvbGx1cF9wcmV2aW91c190aW1lEgAYASILEgkJAAAAAAAAAABqChxkZXByZWNhdGVkX2ZsYWdzX2ludXNlX3RvdGFsEi1UaGUgbnVtYmVyIG9mIGRlcHJlY2F0ZWQgZmxhZ3MgY3VycmVudGx5IHNldC4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCLzsm0A6ABCiBnb19jZ29fZ29fdG9fY19jYWxsc19jYWxsc190b3RhbBJfQ291bnQgb2YgY2FsbHMgbWFkZSBmcm9tIEdvIHRvIEMgYnkgdGhlIGN1cnJlbnQgcHJvY2Vzcy4gU291cmNlZCBmcm9tIC9jZ28vZ28tdG8tYy1jYWxsczpjYWxscy4YACIZGhcJAAAAAAAA8D8aDAiTjYTEBhCZ9KC7A5QDCi9nb19jcHVfY2xhc3Nlc19nY19tYXJrX2Fzc2lzdF9jcHVfc2Vjb25kc190b3RhbBLDAkVzdGltYXRlZCB0b3RhbCBDUFUgdGltZSBnb3JvdXRpbmVzIHNwZW50IHBlcmZvcm1pbmcgR0MgdGFza3MgdG8gYXNzaXN0IHRoZSBHQyBhbmQgcHJldmVudCBpdCBmcm9tIGZhbGxpbmcgYmVoaW5kIHRoZSBhcHBsaWNhdGlvbi4gVGhpcyBtZXRyaWMgaXMgYW4gb3ZlcmVzdGltYXRlLCBhbmQgbm90IGRpcmVjdGx5IGNvbXBhcmFibGUgdG8gc3lzdGVtIENQVSB0aW1lIG1lYXN1cmVtZW50cy4gQ29tcGFyZSBvbmx5IHdpdGggb3RoZXIgL2NwdS9jbGFzc2VzIG1ldHJpY3MuIFNvdXJjZWQgZnJvbSAvY3B1L2NsYXNzZXMvZ2MvbWFyay9hc3Npc3Q6Y3B1LXNlY29uZHMuGAAiGRoXCbY6O0ScgbU/GgwIk42ExAYQyKChuwONAwoyZ29fY3B1X2NsYXNzZXNfZ2NfbWFya19kZWRpY2F0ZWRfY3B1X3NlY29uZHNfdG90YWwSuQJFc3RpbWF0ZWQgdG90YWwgQ1BVIHRpbWUgc3BlbnQgcGVyZm9ybWluZyBHQyB0YXNrcyBvbiBwcm9jZXNzb3JzIChhcyBkZWZpbmVkIGJ5IEdPTUFYUFJPQ1MpIGRlZGljYXRlZCB0byB0aG9zZSB0YXNrcy4gVGhpcyBtZXRyaWMgaXMgYW4gb3ZlcmVzdGltYXRlLCBhbmQgbm90IGRpcmVjdGx5IGNvbXBhcmFibGUgdG8gc3lzdGVtIENQVSB0aW1lIG1lYXN1cmVtZW50cy4gQ29tcGFyZSBvbmx5IHdpdGggb3RoZXIgL2NwdS9jbGFzc2VzIG1ldHJpY3MuIFNvdXJjZWQgZnJvbSAvY3B1L2NsYXNzZXMvZ2MvbWFyay9kZWRpY2F0ZWQ6Y3B1LXNlY29uZHMuGAAiGRoXCa698eOfKfE/GgwIk42ExAYQoL+huwP1AwotZ29fY3B1X2NsYXNzZXNfZ2NfbWFya19pZGxlX2NwdV9zZWNvbmRzX3RvdGFsEqYDRXN0aW1hdGVkIHRvdGFsIENQVSB0aW1lIHNwZW50IHBlcmZvcm1pbmcgR0MgdGFza3Mgb24gc3BhcmUgQ1BVIHJlc291cmNlcyB0aGF0IHRoZSBHbyBzY2hlZHVsZXIgY291bGQgbm90IG90aGVyd2lzZSBmaW5kIGEgdXNlIGZvci4gVGhpcyBzaG91bGQgYmUgc3VidHJhY3RlZCBmcm9tIHRoZSB0b3RhbCBHQyBDUFUgdGltZSB0byBvYnRhaW4gYSBtZWFzdXJlIG9mIGNvbXB1bHNvcnkgR0MgQ1BVIHRpbWUuIFRoaXMgbWV0cmljIGlzIGFuIG92ZXJlc3RpbWF0ZSwgYW5kIG5vdCBkaXJlY3RseSBjb21wYXJhYmxlIHRvIHN5c3RlbSBDUFUgdGltZSBtZWFzdXJlbWVudHMuIENvbXBhcmUgb25seSB3aXRoIG90aGVyIC9jcHUvY2xhc3NlcyBtZXRyaWNzLiBTb3VyY2VkIGZyb20gL2NwdS9jbGFzc2VzL2djL21hcmsvaWRsZTpjcHUtc2Vjb25kcy4YACIZGhcJr7NCDbbb9z8aDAiTjYTEBhCM2aG7A+UECilnb19jcHVfY2xhc3Nlc19nY19wYXVzZV9jcHVfc2Vjb25kc190b3RhbBKaBEVzdGltYXRlZCB0b3RhbCBDUFUgdGltZSBzcGVudCB3aXRoIHRoZSBhcHBsaWNhdGlvbiBwYXVzZWQgYnkgdGhlIEdDLiBFdmVuIGlmIG9ubHkgb25lIHRocmVhZCBpcyBydW5uaW5nIGR1cmluZyB0aGUgcGF1c2UsIHRoaXMgaXMgY29tcHV0ZWQgYXMgR09NQVhQUk9DUyB0aW1lcyB0aGUgcGF1c2UgbGF0ZW5jeSBiZWNhdXNlIG5vdGhpbmcgZWxzZSBjYW4gYmUgZXhlY3V0aW5nLiBUaGlzIGlzIHRoZSBleGFjdCBzdW0gb2Ygc2FtcGxlcyBpbiAvc2NoZWQvcGF1c2VzL3RvdGFsL2djOnNlY29uZHMgaWYgZWFjaCBzYW1wbGUgaXMgbXVsdGlwbGllZCBieSBHT01BWFBST0NTIGF0IHRoZSB0aW1lIGl0IGlzIHRha2VuLiBUaGlzIG1ldHJpYyBpcyBhbiBvdmVyZXN0aW1hdGUsIGFuZCBub3QgZGlyZWN0bHkgY29tcGFyYWJsZSB0byBzeXN0ZW0gQ1BVIHRpbWUgbWVhc3VyZW1lbnRzLiBDb21wYXJlIG9ubHkgd2l0aCBvdGhlciAvY3B1L2NsYXNzZXMgbWV0cmljcy4gU291cmNlZCBmcm9tIC9jcHUvY2xhc3Nlcy9nYy9wYXVzZTpjcHUtc2Vjb25kcy4YACIZGhcJmBilLam4sT8aDAiTjYTEBhD196G7A+ACCilnb19jcHVfY2xhc3Nlc19nY190b3RhbF9jcHVfc2Vjb25kc190b3RhbBKVAkVzdGltYXRlZCB0b3RhbCBDUFUgdGltZSBzcGVudCBwZXJmb3JtaW5nIEdDIHRhc2tzLiBUaGlzIG1ldHJpYyBpcyBhbiBvdmVyZXN0aW1hdGUsIGFuZCBub3QgZGlyZWN0bHkgY29tcGFyYWJsZSB0byBzeXN0ZW0gQ1BVIHRpbWUgbWVhc3VyZW1lbnRzLiBDb21wYXJlIG9ubHkgd2l0aCBvdGhlciAvY3B1L2NsYXNzZXMgbWV0cmljcy4gU3VtIG9mIGFsbCBtZXRyaWNzIGluIC9jcHUvY2xhc3Nlcy9nYy4gU291cmNlZCBmcm9tIC9jcHUvY2xhc3Nlcy9nYy90b3RhbDpjcHUtc2Vjb25kcy4YACIZGhcJSTspJH28BUAaDAiTjYTEBhDejKK7A5sDCiVnb19jcHVfY2xhc3Nlc19pZGxlX2NwdV9zZWNvbmRzX3RvdGFsEtQCRXN0aW1hdGVkIHRvdGFsIGF2YWlsYWJsZSBDUFUgdGltZSBub3Qgc3BlbnQgZXhlY3V0aW5nIGFueSBHbyBvciBHbyBydW50aW1lIGNvZGUuIEluIG90aGVyIHdvcmRzLCB0aGUgcGFydCBvZiAvY3B1L2NsYXNzZXMvdG90YWw6Y3B1LXNlY29uZHMgdGhhdCB3YXMgdW51c2VkLiBUaGlzIG1ldHJpYyBpcyBhbiBvdmVyZXN0aW1hdGUsIGFuZCBub3QgZGlyZWN0bHkgY29tcGFyYWJsZSB0byBzeXN0ZW0gQ1BVIHRpbWUgbWVhc3VyZW1lbnRzLiBDb21wYXJlIG9ubHkgd2l0aCBvdGhlciAvY3B1L2NsYXNzZXMgbWV0cmljcy4gU291cmNlZCBmcm9tIC9jcHUvY2xhc3Nlcy9pZGxlOmNwdS1zZWNvbmRzLhgAIhkaFwl0R4BMRtGjQBoMCJONhMQGENCiorsDmQMKMGdvX2NwdV9jbGFzc2VzX3NjYXZlbmdlX2Fzc2lzdF9jcHVfc2Vjb25kc190b3RhbBLHAkVzdGltYXRlZCB0b3RhbCBDUFUgdGltZSBzcGVudCByZXR1cm5pbmcgdW51c2VkIG1lbW9yeSB0byB0aGUgdW5kZXJseWluZyBwbGF0Zm9ybSBpbiByZXNwb25zZSBlYWdlcmx5IGluIHJlc3BvbnNlIHRvIG1lbW9yeSBwcmVzc3VyZS4gVGhpcyBtZXRyaWMgaXMgYW4gb3ZlcmVzdGltYXRlLCBhbmQgbm90IGRpcmVjdGx5IGNvbXBhcmFibGUgdG8gc3lzdGVtIENQVSB0aW1lIG1lYXN1cmVtZW50cy4gQ29tcGFyZSBvbmx5IHdpdGggb3RoZXIgL2NwdS9jbGFzc2VzIG1ldHJpY3MuIFNvdXJjZWQgZnJvbSAvY3B1L2NsYXNzZXMvc2NhdmVuZ2UvYXNzaXN0OmNwdS1zZWNvbmRzLhgAIhkaFwkzUhVxP4KQPhoMCJONhMQGEKK7orsDigMKNGdvX2NwdV9jbGFzc2VzX3NjYXZlbmdlX2JhY2tncm91bmRfY3B1X3NlY29uZHNfdG90YWwStAJFc3RpbWF0ZWQgdG90YWwgQ1BVIHRpbWUgc3BlbnQgcGVyZm9ybWluZyBiYWNrZ3JvdW5kIHRhc2tzIHRvIHJldHVybiB1bnVzZWQgbWVtb3J5IHRvIHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtLiBUaGlzIG1ldHJpYyBpcyBhbiBvdmVyZXN0aW1hdGUsIGFuZCBub3QgZGlyZWN0bHkgY29tcGFyYWJsZSB0byBzeXN0ZW0gQ1BVIHRpbWUgbWVhc3VyZW1lbnRzLiBDb21wYXJlIG9ubHkgd2l0aCBvdGhlciAvY3B1L2NsYXNzZXMgbWV0cmljcy4gU291cmNlZCBmcm9tIC9jcHUvY2xhc3Nlcy9zY2F2ZW5nZS9iYWNrZ3JvdW5kOmNwdS1zZWNvbmRzLhgAIhkaFwkTc6HWWraDPxoMCJONhMQGENbWorsDpAMKL2dvX2NwdV9jbGFzc2VzX3NjYXZlbmdlX3RvdGFsX2NwdV9zZWNvbmRzX3RvdGFsEtMCRXN0aW1hdGVkIHRvdGFsIENQVSB0aW1lIHNwZW50IHBlcmZvcm1pbmcgdGFza3MgdGhhdCByZXR1cm4gdW51c2VkIG1lbW9yeSB0byB0aGUgdW5kZXJseWluZyBwbGF0Zm9ybS4gVGhpcyBtZXRyaWMgaXMgYW4gb3ZlcmVzdGltYXRlLCBhbmQgbm90IGRpcmVjdGx5IGNvbXBhcmFibGUgdG8gc3lzdGVtIENQVSB0aW1lIG1lYXN1cmVtZW50cy4gQ29tcGFyZSBvbmx5IHdpdGggb3RoZXIgL2NwdS9jbGFzc2VzIG1ldHJpY3MuIFN1bSBvZiBhbGwgbWV0cmljcyBpbiAvY3B1L2NsYXNzZXMvc2NhdmVuZ2UuIFNvdXJjZWQgZnJvbSAvY3B1L2NsYXNzZXMvc2NhdmVuZ2UvdG90YWw6Y3B1LXNlY29uZHMuGAAiGRoXCT5VINt7toM/GgwIk42ExAYQnO6iuwPsAwomZ29fY3B1X2NsYXNzZXNfdG90YWxfY3B1X3NlY29uZHNfdG90YWwSpANFc3RpbWF0ZWQgdG90YWwgYXZhaWxhYmxlIENQVSB0aW1lIGZvciB1c2VyIEdvIGNvZGUgb3IgdGhlIEdvIHJ1bnRpbWUsIGFzIGRlZmluZWQgYnkgR09NQVhQUk9DUy4gSW4gb3RoZXIgd29yZHMsIEdPTUFYUFJPQ1MgaW50ZWdyYXRlZCBvdmVyIHRoZSB3YWxsLWNsb2NrIGR1cmF0aW9uIHRoaXMgcHJvY2VzcyBoYXMgYmVlbiBleGVjdXRpbmcgZm9yLiBUaGlzIG1ldHJpYyBpcyBhbiBvdmVyZXN0aW1hdGUsIGFuZCBub3QgZGlyZWN0bHkgY29tcGFyYWJsZSB0byBzeXN0ZW0gQ1BVIHRpbWUgbWVhc3VyZW1lbnRzLiBDb21wYXJlIG9ubHkgd2l0aCBvdGhlciAvY3B1L2NsYXNzZXMgbWV0cmljcy4gU3VtIG9mIGFsbCBtZXRyaWNzIGluIC9jcHUvY2xhc3Nlcy4gU291cmNlZCBmcm9tIC9jcHUvY2xhc3Nlcy90b3RhbDpjcHUtc2Vjb25kcy4YACIZGhcJOfoHreEjpEAaDAiTjYTEBhChiKO7A/sCCiVnb19jcHVfY2xhc3Nlc191c2VyX2NwdV9zZWNvbmRzX3RvdGFsErQCRXN0aW1hdGVkIHRvdGFsIENQVSB0aW1lIHNwZW50IHJ1bm5pbmcgdXNlciBHbyBjb2RlLiBUaGlzIG1heSBhbHNvIGluY2x1ZGUgc29tZSBzbWFsbCBhbW91bnQgb2YgdGltZSBzcGVudCBpbiB0aGUgR28gcnVudGltZS4gVGhpcyBtZXRyaWMgaXMgYW4gb3ZlcmVzdGltYXRlLCBhbmQgbm90IGRpcmVjdGx5IGNvbXBhcmFibGUgdG8gc3lzdGVtIENQVSB0aW1lIG1lYXN1cmVtZW50cy4gQ29tcGFyZSBvbmx5IHdpdGggb3RoZXIgL2NwdS9jbGFzc2VzIG1ldHJpY3MuIFNvdXJjZWQgZnJvbSAvY3B1L2NsYXNzZXMvdXNlcjpjcHUtc2Vjb25kcy4YACIZGhcJgWvs59RJQ0AaDAiTjYTEBhCTnaO7A60BCiZnb19nY19jeWNsZXNfYXV0b21hdGljX2djX2N5Y2xlc190b3RhbBJmQ291bnQgb2YgY29tcGxldGVkIEdDIGN5Y2xlcyBnZW5lcmF0ZWQgYnkgdGhlIEdvIHJ1bnRpbWUuIFNvdXJjZWQgZnJvbSAvZ2MvY3ljbGVzL2F1dG9tYXRpYzpnYy1jeWNsZXMuGAAiGRoXCQAAAAAAAEJAGgwIk42ExAYQg7ijuwOlAQojZ29fZ2NfY3ljbGVzX2ZvcmNlZF9nY19jeWNsZXNfdG90YWwSYUNvdW50IG9mIGNvbXBsZXRlZCBHQyBjeWNsZXMgZm9yY2VkIGJ5IHRoZSBhcHBsaWNhdGlvbi4gU291cmNlZCBmcm9tIC9nYy9jeWNsZXMvZm9yY2VkOmdjLWN5Y2xlcy4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhDiz6O7A40BCiJnb19nY19jeWNsZXNfdG90YWxfZ2NfY3ljbGVzX3RvdGFsEkpDb3VudCBvZiBhbGwgY29tcGxldGVkIEdDIGN5Y2xlcy4gU291cmNlZCBmcm9tIC9nYy9jeWNsZXMvdG90YWw6Z2MtY3ljbGVzLhgAIhkaFwkAAAAAAABCQBoMCJONhMQGELblo7sD5wEKFmdvX2djX2R1cmF0aW9uX3NlY29uZHMSWEEgc3VtbWFyeSBvZiB0aGUgd2FsbC10aW1lIHBhdXNlIChzdG9wLXRoZS13b3JsZCkgZHVyYXRpb24gaW4gZ2FyYmFnZSBjb2xsZWN0aW9uIGN5Y2xlcy4YAiJxIm8IJBEOQdPnqkaFPxoSCQAAAAAAAAAAEe1XKj0N9wU/GhIJAAAAAAAA0D8RYga7RYZzEj8aEgkAAAAAAADgPxGXSPqYNc8WPxoSCQAAAAAAAOg/Ea1h335b2Cw/GhIJAAAAAAAA8D8RvVyRhr3KZj/oAQoSZ29fZ2NfZ29nY19wZXJjZW50EsIBSGVhcCBzaXplIHRhcmdldCBwZXJjZW50YWdlIGNvbmZpZ3VyZWQgYnkgdGhlIHVzZXIsIG90aGVyd2lzZSAxMDAuIFRoaXMgdmFsdWUgaXMgc2V0IGJ5IHRoZSBHT0dDIGVudmlyb25tZW50IHZhcmlhYmxlLCBhbmQgdGhlIHJ1bnRpbWUvZGVidWcuU2V0R0NQZXJjZW50IGZ1bmN0aW9uLiBTb3VyY2VkIGZyb20gL2djL2dvZ2M6cGVyY2VudC4YASILEgkJAAAAAAAAWUD+AQoWZ29fZ2NfZ29tZW1saW1pdF9ieXRlcxLUAUdvIHJ1bnRpbWUgbWVtb3J5IGxpbWl0IGNvbmZpZ3VyZWQgYnkgdGhlIHVzZXIsIG90aGVyd2lzZSBtYXRoLk1heEludDY0LiBUaGlzIHZhbHVlIGlzIHNldCBieSB0aGUgR09NRU1MSU1JVCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgYW5kIHRoZSBydW50aW1lL2RlYnVnLlNldE1lbW9yeUxpbWl0IGZ1bmN0aW9uLiBTb3VyY2VkIGZyb20gL2djL2dvbWVtbGltaXQ6Ynl0ZXMuGAEiCxIJCQAAwMzMzORB2wMKH2dvX2djX2hlYXBfYWxsb2NzX2J5X3NpemVfYnl0ZXMS8gFEaXN0cmlidXRpb24gb2YgaGVhcCBhbGxvY2F0aW9ucyBieSBhcHByb3hpbWF0ZSBzaXplLiBCdWNrZXQgY291bnRzIGluY3JlYXNlIG1vbm90b25pY2FsbHkuIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGluY2x1ZGUgdGlueSBvYmplY3RzIGFzIGRlZmluZWQgYnkgL2djL2hlYXAvdGlueS9hbGxvY3M6b2JqZWN0cywgb25seSB0aW55IGJsb2Nrcy4gU291cmNlZCBmcm9tIC9nYy9oZWFwL2FsbG9jcy1ieS1zaXplOmJ5dGVzLhgEIsABOr0BCJD57AQRAAAAEmsK2EEaDQii0RkR////////IUAaDgiR9pECEf///////zhAGg4Ir8++AxH//////z9QQBoOCMienQQR//////8fYkAaDgjS48wEEf//////D3RAGg4Il/rnBBH//////weGQBoOCJLn6gQR//////8DmEAaDgjWz+sEEf//////AalAGg4I9pLsBBH//////4C5QBoOCPe17AQR/////3+AykAaDgibx+wEEf////8/oNpApAEKHWdvX2djX2hlYXBfYWxsb2NzX2J5dGVzX3RvdGFsEmZDdW11bGF0aXZlIHN1bSBvZiBtZW1vcnkgYWxsb2NhdGVkIHRvIHRoZSBoZWFwIGJ5IHRoZSBhcHBsaWNhdGlvbi4gU291cmNlZCBmcm9tIC9nYy9oZWFwL2FsbG9jczpieXRlcy4YACIZGhcJAAAAEmsK2EEaDAiTjYTEBhDk0qS7A5QCCh9nb19nY19oZWFwX2FsbG9jc19vYmplY3RzX3RvdGFsEtMBQ3VtdWxhdGl2ZSBjb3VudCBvZiBoZWFwIGFsbG9jYXRpb25zIHRyaWdnZXJlZCBieSB0aGUgYXBwbGljYXRpb24uIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGluY2x1ZGUgdGlueSBvYmplY3RzIGFzIGRlZmluZWQgYnkgL2djL2hlYXAvdGlueS9hbGxvY3M6b2JqZWN0cywgb25seSB0aW55IGJsb2Nrcy4gU291cmNlZCBmcm9tIC9nYy9oZWFwL2FsbG9jczpvYmplY3RzLhgAIhkaFwkAAAAAkmdjQRoMCJONhMQGEJDmpLsD3wMKHmdvX2djX2hlYXBfZnJlZXNfYnlfc2l6ZV9ieXRlcxL3AURpc3RyaWJ1dGlvbiBvZiBmcmVlZCBoZWFwIGFsbG9jYXRpb25zIGJ5IGFwcHJveGltYXRlIHNpemUuIEJ1Y2tldCBjb3VudHMgaW5jcmVhc2UgbW9ub3RvbmljYWxseS4gTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgaW5jbHVkZSB0aW55IG9iamVjdHMgYXMgZGVmaW5lZCBieSAvZ2MvaGVhcC90aW55L2FsbG9jczpvYmplY3RzLCBvbmx5IHRpbnkgYmxvY2tzLiBTb3VyY2VkIGZyb20gL2djL2hlYXAvZnJlZXMtYnktc2l6ZTpieXRlcy4YBCLAATq9AQiEgPcDEQAAAJYz0tNBGg0I4PoUEf///////yFAGg4IiZrjARH///////84QBoOCOar6wIR//////8/UEAaDgiu6rUDEf//////H2JAGg4I2erdAxH//////w90QBoOCMHI8wMR//////8HhkAaDgiquPUDEf//////A5hAGg4Is//1AxH//////wGpQBoOCPmn9gMR//////+AuUAaDgjpw/YDEf////9/gMpAGg4Ir9H2AxH/////P6DaQJ0BChxnb19nY19oZWFwX2ZyZWVzX2J5dGVzX3RvdGFsEmBDdW11bGF0aXZlIHN1bSBvZiBoZWFwIG1lbW9yeSBmcmVlZCBieSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IuIFNvdXJjZWQgZnJvbSAvZ2MvaGVhcC9mcmVlczpieXRlcy4YACIZGhcJAAAAljPS00EaDAiTjYTEBhC2k6W7A6YCCh5nb19nY19oZWFwX2ZyZWVzX29iamVjdHNfdG90YWwS5gFDdW11bGF0aXZlIGNvdW50IG9mIGhlYXAgYWxsb2NhdGlvbnMgd2hvc2Ugc3RvcmFnZSB3YXMgZnJlZWQgYnkgdGhlIGdhcmJhZ2UgY29sbGVjdG9yLiBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBpbmNsdWRlIHRpbnkgb2JqZWN0cyBhcyBkZWZpbmVkIGJ5IC9nYy9oZWFwL3RpbnkvYWxsb2NzOm9iamVjdHMsIG9ubHkgdGlueSBibG9ja3MuIFNvdXJjZWQgZnJvbSAvZ2MvaGVhcC9mcmVlczpvYmplY3RzLhgAIhkaFwkAAAAAAXBfQRoMCJONhMQGELy1pbsDdwoVZ29fZ2NfaGVhcF9nb2FsX2J5dGVzEk9IZWFwIHNpemUgdGFyZ2V0IGZvciB0aGUgZW5kIG9mIHRoZSBHQyBjeWNsZS4gU291cmNlZCBmcm9tIC9nYy9oZWFwL2dvYWw6Ynl0ZXMuGAEiCxIJCQAAAJrix7NBkwEKFWdvX2djX2hlYXBfbGl2ZV9ieXRlcxJrSGVhcCBtZW1vcnkgb2NjdXBpZWQgYnkgbGl2ZSBvYmplY3RzIHRoYXQgd2VyZSBtYXJrZWQgYnkgdGhlIHByZXZpb3VzIEdDLiBTb3VyY2VkIGZyb20gL2djL2hlYXAvbGl2ZTpieXRlcy4YASILEgkJAAAAcE2Oo0GOAQoaZ29fZ2NfaGVhcF9vYmplY3RzX29iamVjdHMSYU51bWJlciBvZiBvYmplY3RzLCBsaXZlIG9yIHVuc3dlcHQsIG9jY3VweWluZyBoZWFwIG1lbW9yeS4gU291cmNlZCBmcm9tIC9nYy9oZWFwL29iamVjdHM6b2JqZWN0cy4YASILEgkJAAAAAIx8PUGOAwokZ29fZ2NfaGVhcF90aW55X2FsbG9jc19vYmplY3RzX3RvdGFsEsgCQ291bnQgb2Ygc21hbGwgYWxsb2NhdGlvbnMgdGhhdCBhcmUgcGFja2VkIHRvZ2V0aGVyIGludG8gYmxvY2tzLiBUaGVzZSBhbGxvY2F0aW9ucyBhcmUgY291bnRlZCBzZXBhcmF0ZWx5IGZyb20gb3RoZXIgYWxsb2NhdGlvbnMgYmVjYXVzZSBlYWNoIGluZGl2aWR1YWwgYWxsb2NhdGlvbiBpcyBub3QgdHJhY2tlZCBieSB0aGUgcnVudGltZSwgb25seSB0aGVpciBibG9jay4gRWFjaCBibG9jayBpcyBhbHJlYWR5IGFjY291bnRlZCBmb3IgaW4gYWxsb2NzLWJ5LXNpemUgYW5kIGZyZWVzLWJ5LXNpemUuIFNvdXJjZWQgZnJvbSAvZ2MvaGVhcC90aW55L2FsbG9jczpvYmplY3RzLhgAIhkaFwkAAAAAsB0sQRoMCJONhMQGEK3+pbsDzgMKI2dvX2djX2xpbWl0ZXJfbGFzdF9lbmFibGVkX2djX2N5Y2xlEpcDR0MgY3ljbGUgdGhlIGxhc3QgdGltZSB0aGUgR0MgQ1BVIGxpbWl0ZXIgd2FzIGVuYWJsZWQuIFRoaXMgbWV0cmljIGlzIHVzZWZ1bCBmb3IgZGlhZ25vc2luZyB0aGUgcm9vdCBjYXVzZSBvZiBhbiBvdXQtb2YtbWVtb3J5IGVycm9yLCBiZWNhdXNlIHRoZSBsaW1pdGVyIHRyYWRlcyBtZW1vcnkgZm9yIENQVSB0aW1lIHdoZW4gdGhlIEdDJ3MgQ1BVIHRpbWUgZ2V0cyB0b28gaGlnaC4gVGhpcyBpcyBtb3N0IGxpa2VseSB0byBvY2N1ciB3aXRoIHVzZSBvZiBTZXRNZW1vcnlMaW1pdC4gVGhlIGZpcnN0IEdDIGN5Y2xlIGlzIGN5Y2xlIDEsIHNvIGEgdmFsdWUgb2YgMCBpbmRpY2F0ZXMgdGhhdCBpdCB3YXMgbmV2ZXIgZW5hYmxlZC4gU291cmNlZCBmcm9tIC9nYy9saW1pdGVyL2xhc3QtZW5hYmxlZDpnYy1jeWNsZS4YASILEgkJAAAAAAAAAADlAQoUZ29fZ2NfcGF1c2VzX3NlY29uZHMSYURlcHJlY2F0ZWQuIFByZWZlciB0aGUgaWRlbnRpY2FsIC9zY2hlZC9wYXVzZXMvdG90YWwvZ2M6c2Vjb25kcy4gU291cmNlZCBmcm9tIC9nYy9wYXVzZXM6c2Vjb25kcy4YBCJoOmYISBHXtS0yUAVrPxoLCAARlNYm6AsucT4aCwgAETmMMOKOeaU+GgsIDRGD90PWlBDePhoLCDgROYww4o55FT8aCwhGEYP3Q9aUEE4/GgsISBE5jDDijnmFPxoLCEgRg/dD1pQQvj+MAQoYZ29fZ2Nfc2Nhbl9nbG9iYWxzX2J5dGVzEmFUaGUgdG90YWwgYW1vdW50IG9mIGdsb2JhbCB2YXJpYWJsZSBzcGFjZSB0aGF0IGlzIHNjYW5uYWJsZS4gU291cmNlZCBmcm9tIC9nYy9zY2FuL2dsb2JhbHM6Ynl0ZXMuGAEiCxIJCQAAAAB1gkhBewoVZ29fZ2Nfc2Nhbl9oZWFwX2J5dGVzElNUaGUgdG90YWwgYW1vdW50IG9mIGhlYXAgc3BhY2UgdGhhdCBpcyBzY2FubmFibGUuIFNvdXJjZWQgZnJvbSAvZ2Mvc2Nhbi9oZWFwOmJ5dGVzLhgBIgsSCQkAAACAvwymQYkBChZnb19nY19zY2FuX3N0YWNrX2J5dGVzEmBUaGUgbnVtYmVyIG9mIGJ5dGVzIG9mIHN0YWNrIHRoYXQgd2VyZSBzY2FubmVkIGxhc3QgR0MgY3ljbGUuIFNvdXJjZWQgZnJvbSAvZ2Mvc2Nhbi9zdGFjazpieXRlcy4YASILEgkJAAAAAIAgIUGVAQoWZ29fZ2Nfc2Nhbl90b3RhbF9ieXRlcxJsVGhlIHRvdGFsIGFtb3VudCBzcGFjZSB0aGF0IGlzIHNjYW5uYWJsZS4gU3VtIG9mIGFsbCBtZXRyaWNzIGluIC9nYy9zY2FuLiBTb3VyY2VkIGZyb20gL2djL3NjYW4vdG90YWw6Ynl0ZXMuGAEiCxIJCQAAANTpf6ZBfwofZ29fZ2Nfc3RhY2tfc3RhcnRpbmdfc2l6ZV9ieXRlcxJNVGhlIHN0YWNrIHNpemUgb2YgbmV3IGdvcm91dGluZXMuIFNvdXJjZWQgZnJvbSAvZ2Mvc3RhY2svc3RhcnRpbmctc2l6ZTpieXRlcy4YASILEgkJAAAAAAAAoECYAgo7Z29fZ29kZWJ1Z19ub25fZGVmYXVsdF9iZWhhdmlvcl9hc3luY3RpbWVyY2hhbl9ldmVudHNfdG90YWwSuwFUaGUgbnVtYmVyIG9mIG5vbi1kZWZhdWx0IGJlaGF2aW9ycyBleGVjdXRlZCBieSB0aGUgdGltZSBwYWNrYWdlIGR1ZSB0byBhIG5vbi1kZWZhdWx0IEdPREVCVUc9YXN5bmN0aW1lcmNoYW49Li4uIHNldHRpbmcuIFNvdXJjZWQgZnJvbSAvZ29kZWJ1Zy9ub24tZGVmYXVsdC1iZWhhdmlvci9hc3luY3RpbWVyY2hhbjpldmVudHMuGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQ8PWmuwOPAgo3Z29fZ29kZWJ1Z19ub25fZGVmYXVsdF9iZWhhdmlvcl9leGVjZXJyZG90X2V2ZW50c190b3RhbBK2AVRoZSBudW1iZXIgb2Ygbm9uLWRlZmF1bHQgYmVoYXZpb3JzIGV4ZWN1dGVkIGJ5IHRoZSBvcy9leGVjIHBhY2thZ2UgZHVlIHRvIGEgbm9uLWRlZmF1bHQgR09ERUJVRz1leGVjZXJyZG90PS4uLiBzZXR0aW5nLiBTb3VyY2VkIGZyb20gL2dvZGVidWcvbm9uLWRlZmF1bHQtYmVoYXZpb3IvZXhlY2VycmRvdDpldmVudHMuGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQsISnuwORAgo4Z29fZ29kZWJ1Z19ub25fZGVmYXVsdF9iZWhhdmlvcl9nb2NhY2hlaGFzaF9ldmVudHNfdG90YWwStwFUaGUgbnVtYmVyIG9mIG5vbi1kZWZhdWx0IGJlaGF2aW9ycyBleGVjdXRlZCBieSB0aGUgY21kL2dvIHBhY2thZ2UgZHVlIHRvIGEgbm9uLWRlZmF1bHQgR09ERUJVRz1nb2NhY2hlaGFzaD0uLi4gc2V0dGluZy4gU291cmNlZCBmcm9tIC9nb2RlYnVnL25vbi1kZWZhdWx0LWJlaGF2aW9yL2dvY2FjaGVoYXNoOmV2ZW50cy4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCBlKe7A5ECCjhnb19nb2RlYnVnX25vbl9kZWZhdWx0X2JlaGF2aW9yX2dvY2FjaGV0ZXN0X2V2ZW50c190b3RhbBK3AVRoZSBudW1iZXIgb2Ygbm9uLWRlZmF1bHQgYmVoYXZpb3JzIGV4ZWN1dGVkIGJ5IHRoZSBjbWQvZ28gcGFja2FnZSBkdWUgdG8gYSBub24tZGVmYXVsdCBHT0RFQlVHPWdvY2FjaGV0ZXN0PS4uLiBzZXR0aW5nLiBTb3VyY2VkIGZyb20gL2dvZGVidWcvbm9uLWRlZmF1bHQtYmVoYXZpb3IvZ29jYWNoZXRlc3Q6ZXZlbnRzLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGEPSgp7sDlwIKOmdvX2dvZGVidWdfbm9uX2RlZmF1bHRfYmVoYXZpb3JfZ29jYWNoZXZlcmlmeV9ldmVudHNfdG90YWwSuwFUaGUgbnVtYmVyIG9mIG5vbi1kZWZhdWx0IGJlaGF2aW9ycyBleGVjdXRlZCBieSB0aGUgY21kL2dvIHBhY2thZ2UgZHVlIHRvIGEgbm9uLWRlZmF1bHQgR09ERUJVRz1nb2NhY2hldmVyaWZ5PS4uLiBzZXR0aW5nLiBTb3VyY2VkIGZyb20gL2dvZGVidWcvbm9uLWRlZmF1bHQtYmVoYXZpb3IvZ29jYWNoZXZlcmlmeTpldmVudHMuGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQ8q2nuwOpAgpAZ29fZ29kZWJ1Z19ub25fZGVmYXVsdF9iZWhhdmlvcl9nb3Rlc3Rqc29uYnVpbGR0ZXh0X2V2ZW50c190b3RhbBLHAVRoZSBudW1iZXIgb2Ygbm9uLWRlZmF1bHQgYmVoYXZpb3JzIGV4ZWN1dGVkIGJ5IHRoZSBjbWQvZ28gcGFja2FnZSBkdWUgdG8gYSBub24tZGVmYXVsdCBHT0RFQlVHPWdvdGVzdGpzb25idWlsZHRleHQ9Li4uIHNldHRpbmcuIFNvdXJjZWQgZnJvbSAvZ29kZWJ1Zy9ub24tZGVmYXVsdC1iZWhhdmlvci9nb3Rlc3Rqc29uYnVpbGR0ZXh0OmV2ZW50cy4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCgvKe7A5YCCjlnb19nb2RlYnVnX25vbl9kZWZhdWx0X2JlaGF2aW9yX2dvdHlwZXNhbGlhc19ldmVudHNfdG90YWwSuwFUaGUgbnVtYmVyIG9mIG5vbi1kZWZhdWx0IGJlaGF2aW9ycyBleGVjdXRlZCBieSB0aGUgZ28vdHlwZXMgcGFja2FnZSBkdWUgdG8gYSBub24tZGVmYXVsdCBHT0RFQlVHPWdvdHlwZXNhbGlhcz0uLi4gc2V0dGluZy4gU291cmNlZCBmcm9tIC9nb2RlYnVnL25vbi1kZWZhdWx0LWJlaGF2aW9yL2dvdHlwZXNhbGlhczpldmVudHMuGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQocinuwOTAgo4Z29fZ29kZWJ1Z19ub25fZGVmYXVsdF9iZWhhdmlvcl9odHRwMmNsaWVudF9ldmVudHNfdG90YWwSuQFUaGUgbnVtYmVyIG9mIG5vbi1kZWZhdWx0IGJlaGF2aW9ycyBleGVjdXRlZCBieSB0aGUgbmV0L2h0dHAgcGFja2FnZSBkdWUgdG8gYSBub24tZGVmYXVsdCBHT0RFQlVHPWh0dHAyY2xpZW50PS4uLiBzZXR0aW5nLiBTb3VyY2VkIGZyb20gL2dvZGVidWcvbm9uLWRlZmF1bHQtYmVoYXZpb3IvaHR0cDJjbGllbnQ6ZXZlbnRzLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGEPHUp7sDkwIKOGdvX2dvZGVidWdfbm9uX2RlZmF1bHRfYmVoYXZpb3JfaHR0cDJzZXJ2ZXJfZXZlbnRzX3RvdGFsErkBVGhlIG51bWJlciBvZiBub24tZGVmYXVsdCBiZWhhdmlvcnMgZXhlY3V0ZWQgYnkgdGhlIG5ldC9odHRwIHBhY2thZ2UgZHVlIHRvIGEgbm9uLWRlZmF1bHQgR09ERUJVRz1odHRwMnNlcnZlcj0uLi4gc2V0dGluZy4gU291cmNlZCBmcm9tIC9nb2RlYnVnL25vbi1kZWZhdWx0LWJlaGF2aW9yL2h0dHAyc2VydmVyOmV2ZW50cy4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCX4ae7A64CCkFnb19nb2RlYnVnX25vbl9kZWZhdWx0X2JlaGF2aW9yX2h0dHBsYXhjb250ZW50bGVuZ3RoX2V2ZW50c190b3RhbBLLAVRoZSBudW1iZXIgb2Ygbm9uLWRlZmF1bHQgYmVoYXZpb3JzIGV4ZWN1dGVkIGJ5IHRoZSBuZXQvaHR0cCBwYWNrYWdlIGR1ZSB0byBhIG5vbi1kZWZhdWx0IEdPREVCVUc9aHR0cGxheGNvbnRlbnRsZW5ndGg9Li4uIHNldHRpbmcuIFNvdXJjZWQgZnJvbSAvZ29kZWJ1Zy9ub24tZGVmYXVsdC1iZWhhdmlvci9odHRwbGF4Y29udGVudGxlbmd0aDpldmVudHMuGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQi/CnuwOWAgo5Z29fZ29kZWJ1Z19ub25fZGVmYXVsdF9iZWhhdmlvcl9odHRwbXV4Z28xMjFfZXZlbnRzX3RvdGFsErsBVGhlIG51bWJlciBvZiBub24tZGVmYXVsdCBiZWhhdmlvcnMgZXhlY3V0ZWQgYnkgdGhlIG5ldC9odHRwIHBhY2thZ2UgZHVlIHRvIGEgbm9uLWRlZmF1bHQgR09ERUJVRz1odHRwbXV4Z28xMjE9Li4uIHNldHRpbmcuIFNvdXJjZWQgZnJvbSAvZ29kZWJ1Zy9ub24tZGVmYXVsdC1iZWhhdmlvci9odHRwbXV4Z28xMjE6ZXZlbnRzLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGENv6p7sDwwIKSGdvX2dvZGVidWdfbm9uX2RlZmF1bHRfYmVoYXZpb3JfaHR0cHNlcnZlY29udGVudGtlZXBoZWFkZXJzX2V2ZW50c190b3RhbBLZAVRoZSBudW1iZXIgb2Ygbm9uLWRlZmF1bHQgYmVoYXZpb3JzIGV4ZWN1dGVkIGJ5IHRoZSBuZXQvaHR0cCBwYWNrYWdlIGR1ZSB0byBhIG5vbi1kZWZhdWx0IEdPREVCVUc9aHR0cHNlcnZlY29udGVudGtlZXBoZWFkZXJzPS4uLiBzZXR0aW5nLiBTb3VyY2VkIGZyb20gL2dvZGVidWcvbm9uLWRlZmF1bHQtYmVoYXZpb3IvaHR0cHNlcnZlY29udGVudGtlZXBoZWFkZXJzOmV2ZW50cy4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhDEi6i7A5kCCjpnb19nb2RlYnVnX25vbl9kZWZhdWx0X2JlaGF2aW9yX2luc3RhbGxnb3Jvb3RfZXZlbnRzX3RvdGFsEr0BVGhlIG51bWJlciBvZiBub24tZGVmYXVsdCBiZWhhdmlvcnMgZXhlY3V0ZWQgYnkgdGhlIGdvL2J1aWxkIHBhY2thZ2UgZHVlIHRvIGEgbm9uLWRlZmF1bHQgR09ERUJVRz1pbnN0YWxsZ29yb290PS4uLiBzZXR0aW5nLiBTb3VyY2VkIGZyb20gL2dvZGVidWcvbm9uLWRlZmF1bHQtYmVoYXZpb3IvaW5zdGFsbGdvcm9vdDpldmVudHMuGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQ2pqouwOxAgpAZ29fZ29kZWJ1Z19ub25fZGVmYXVsdF9iZWhhdmlvcl9tdWx0aXBhcnRtYXhoZWFkZXJzX2V2ZW50c190b3RhbBLPAVRoZSBudW1iZXIgb2Ygbm9uLWRlZmF1bHQgYmVoYXZpb3JzIGV4ZWN1dGVkIGJ5IHRoZSBtaW1lL211bHRpcGFydCBwYWNrYWdlIGR1ZSB0byBhIG5vbi1kZWZhdWx0IEdPREVCVUc9bXVsdGlwYXJ0bWF4aGVhZGVycz0uLi4gc2V0dGluZy4gU291cmNlZCBmcm9tIC9nb2RlYnVnL25vbi1kZWZhdWx0LWJlaGF2aW9yL211bHRpcGFydG1heGhlYWRlcnM6ZXZlbnRzLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGENemqLsDqwIKPmdvX2dvZGVidWdfbm9uX2RlZmF1bHRfYmVoYXZpb3JfbXVsdGlwYXJ0bWF4cGFydHNfZXZlbnRzX3RvdGFsEssBVGhlIG51bWJlciBvZiBub24tZGVmYXVsdCBiZWhhdmlvcnMgZXhlY3V0ZWQgYnkgdGhlIG1pbWUvbXVsdGlwYXJ0IHBhY2thZ2UgZHVlIHRvIGEgbm9uLWRlZmF1bHQgR09ERUJVRz1tdWx0aXBhcnRtYXhwYXJ0cz0uLi4gc2V0dGluZy4gU291cmNlZCBmcm9tIC9nb2RlYnVnL25vbi1kZWZhdWx0LWJlaGF2aW9yL211bHRpcGFydG1heHBhcnRzOmV2ZW50cy4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhDssqi7A5ECCjlnb19nb2RlYnVnX25vbl9kZWZhdWx0X2JlaGF2aW9yX211bHRpcGF0aHRjcF9ldmVudHNfdG90YWwStgFUaGUgbnVtYmVyIG9mIG5vbi1kZWZhdWx0IGJlaGF2aW9ycyBleGVjdXRlZCBieSB0aGUgbmV0IHBhY2thZ2UgZHVlIHRvIGEgbm9uLWRlZmF1bHQgR09ERUJVRz1tdWx0aXBhdGh0Y3A9Li4uIHNldHRpbmcuIFNvdXJjZWQgZnJvbSAvZ29kZWJ1Zy9ub24tZGVmYXVsdC1iZWhhdmlvci9tdWx0aXBhdGh0Y3A6ZXZlbnRzLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGENC8qLsDhQIKNWdvX2dvZGVidWdfbm9uX2RlZmF1bHRfYmVoYXZpb3JfbmV0ZWRuczBfZXZlbnRzX3RvdGFsEq4BVGhlIG51bWJlciBvZiBub24tZGVmYXVsdCBiZWhhdmlvcnMgZXhlY3V0ZWQgYnkgdGhlIG5ldCBwYWNrYWdlIGR1ZSB0byBhIG5vbi1kZWZhdWx0IEdPREVCVUc9bmV0ZWRuczA9Li4uIHNldHRpbmcuIFNvdXJjZWQgZnJvbSAvZ29kZWJ1Zy9ub24tZGVmYXVsdC1iZWhhdmlvci9uZXRlZG5zMDpldmVudHMuGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQs8youwOJAgo1Z29fZ29kZWJ1Z19ub25fZGVmYXVsdF9iZWhhdmlvcl9wYW5pY25pbF9ldmVudHNfdG90YWwSsgFUaGUgbnVtYmVyIG9mIG5vbi1kZWZhdWx0IGJlaGF2aW9ycyBleGVjdXRlZCBieSB0aGUgcnVudGltZSBwYWNrYWdlIGR1ZSB0byBhIG5vbi1kZWZhdWx0IEdPREVCVUc9cGFuaWNuaWw9Li4uIHNldHRpbmcuIFNvdXJjZWQgZnJvbSAvZ29kZWJ1Zy9ub24tZGVmYXVsdC1iZWhhdmlvci9wYW5pY25pbDpldmVudHMuGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQytaouwOXAgo5Z29fZ29kZWJ1Z19ub25fZGVmYXVsdF9iZWhhdmlvcl9yYW5kYXV0b3NlZWRfZXZlbnRzX3RvdGFsErwBVGhlIG51bWJlciBvZiBub24tZGVmYXVsdCBiZWhhdmlvcnMgZXhlY3V0ZWQgYnkgdGhlIG1hdGgvcmFuZCBwYWNrYWdlIGR1ZSB0byBhIG5vbi1kZWZhdWx0IEdPREVCVUc9cmFuZGF1dG9zZWVkPS4uLiBzZXR0aW5nLiBTb3VyY2VkIGZyb20gL2dvZGVidWcvbm9uLWRlZmF1bHQtYmVoYXZpb3IvcmFuZGF1dG9zZWVkOmV2ZW50cy4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhC54Ki7A5QCCjhnb19nb2RlYnVnX25vbl9kZWZhdWx0X2JlaGF2aW9yX3JhbmRzZWVkbm9wX2V2ZW50c190b3RhbBK6AVRoZSBudW1iZXIgb2Ygbm9uLWRlZmF1bHQgYmVoYXZpb3JzIGV4ZWN1dGVkIGJ5IHRoZSBtYXRoL3JhbmQgcGFja2FnZSBkdWUgdG8gYSBub24tZGVmYXVsdCBHT0RFQlVHPXJhbmRzZWVkbm9wPS4uLiBzZXR0aW5nLiBTb3VyY2VkIGZyb20gL2dvZGVidWcvbm9uLWRlZmF1bHQtYmVoYXZpb3IvcmFuZHNlZWRub3A6ZXZlbnRzLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGEI7rqLsDkgIKN2dvX2dvZGVidWdfbm9uX2RlZmF1bHRfYmVoYXZpb3JfcnNhMTAyNG1pbl9ldmVudHNfdG90YWwSuQFUaGUgbnVtYmVyIG9mIG5vbi1kZWZhdWx0IGJlaGF2aW9ycyBleGVjdXRlZCBieSB0aGUgY3J5cHRvL3JzYSBwYWNrYWdlIGR1ZSB0byBhIG5vbi1kZWZhdWx0IEdPREVCVUc9cnNhMTAyNG1pbj0uLi4gc2V0dGluZy4gU291cmNlZCBmcm9tIC9nb2RlYnVnL25vbi1kZWZhdWx0LWJlaGF2aW9yL3JzYTEwMjRtaW46ZXZlbnRzLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGEPP1qLsDogIKPGdvX2dvZGVidWdfbm9uX2RlZmF1bHRfYmVoYXZpb3JfdGFyaW5zZWN1cmVwYXRoX2V2ZW50c190b3RhbBLEAVRoZSBudW1iZXIgb2Ygbm9uLWRlZmF1bHQgYmVoYXZpb3JzIGV4ZWN1dGVkIGJ5IHRoZSBhcmNoaXZlL3RhciBwYWNrYWdlIGR1ZSB0byBhIG5vbi1kZWZhdWx0IEdPREVCVUc9dGFyaW5zZWN1cmVwYXRoPS4uLiBzZXR0aW5nLiBTb3VyY2VkIGZyb20gL2dvZGVidWcvbm9uLWRlZmF1bHQtYmVoYXZpb3IvdGFyaW5zZWN1cmVwYXRoOmV2ZW50cy4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhDVgKm7A5UCCjhnb19nb2RlYnVnX25vbl9kZWZhdWx0X2JlaGF2aW9yX3RsczEwc2VydmVyX2V2ZW50c190b3RhbBK7AVRoZSBudW1iZXIgb2Ygbm9uLWRlZmF1bHQgYmVoYXZpb3JzIGV4ZWN1dGVkIGJ5IHRoZSBjcnlwdG8vdGxzIHBhY2thZ2UgZHVlIHRvIGEgbm9uLWRlZmF1bHQgR09ERUJVRz10bHMxMHNlcnZlcj0uLi4gc2V0dGluZy4gU291cmNlZCBmcm9tIC9nb2RlYnVnL25vbi1kZWZhdWx0LWJlaGF2aW9yL3RsczEwc2VydmVyOmV2ZW50cy4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCOiqm7A4kCCjRnb19nb2RlYnVnX25vbl9kZWZhdWx0X2JlaGF2aW9yX3RsczNkZXNfZXZlbnRzX3RvdGFsErMBVGhlIG51bWJlciBvZiBub24tZGVmYXVsdCBiZWhhdmlvcnMgZXhlY3V0ZWQgYnkgdGhlIGNyeXB0by90bHMgcGFja2FnZSBkdWUgdG8gYSBub24tZGVmYXVsdCBHT0RFQlVHPXRsczNkZXM9Li4uIHNldHRpbmcuIFNvdXJjZWQgZnJvbSAvZ29kZWJ1Zy9ub24tZGVmYXVsdC1iZWhhdmlvci90bHMzZGVzOmV2ZW50cy4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCFpKm7A5sCCjpnb19nb2RlYnVnX25vbl9kZWZhdWx0X2JlaGF2aW9yX3Rsc21heHJzYXNpemVfZXZlbnRzX3RvdGFsEr8BVGhlIG51bWJlciBvZiBub24tZGVmYXVsdCBiZWhhdmlvcnMgZXhlY3V0ZWQgYnkgdGhlIGNyeXB0by90bHMgcGFja2FnZSBkdWUgdG8gYSBub24tZGVmYXVsdCBHT0RFQlVHPXRsc21heHJzYXNpemU9Li4uIHNldHRpbmcuIFNvdXJjZWQgZnJvbSAvZ29kZWJ1Zy9ub24tZGVmYXVsdC1iZWhhdmlvci90bHNtYXhyc2FzaXplOmV2ZW50cy4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCkr6m7A48CCjZnb19nb2RlYnVnX25vbl9kZWZhdWx0X2JlaGF2aW9yX3Rsc3JzYWtleF9ldmVudHNfdG90YWwStwFUaGUgbnVtYmVyIG9mIG5vbi1kZWZhdWx0IGJlaGF2aW9ycyBleGVjdXRlZCBieSB0aGUgY3J5cHRvL3RscyBwYWNrYWdlIGR1ZSB0byBhIG5vbi1kZWZhdWx0IEdPREVCVUc9dGxzcnNha2V4PS4uLiBzZXR0aW5nLiBTb3VyY2VkIGZyb20gL2dvZGVidWcvbm9uLWRlZmF1bHQtYmVoYXZpb3IvdGxzcnNha2V4OmV2ZW50cy4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhDBuqm7A5gCCjlnb19nb2RlYnVnX25vbl9kZWZhdWx0X2JlaGF2aW9yX3Rsc3Vuc2FmZWVrbV9ldmVudHNfdG90YWwSvQFUaGUgbnVtYmVyIG9mIG5vbi1kZWZhdWx0IGJlaGF2aW9ycyBleGVjdXRlZCBieSB0aGUgY3J5cHRvL3RscyBwYWNrYWdlIGR1ZSB0byBhIG5vbi1kZWZhdWx0IEdPREVCVUc9dGxzdW5zYWZlZWttPS4uLiBzZXR0aW5nLiBTb3VyY2VkIGZyb20gL2dvZGVidWcvbm9uLWRlZmF1bHQtYmVoYXZpb3IvdGxzdW5zYWZlZWttOmV2ZW50cy4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCUxKm7A58CCj5nb19nb2RlYnVnX25vbl9kZWZhdWx0X2JlaGF2aW9yX3dpbnJlYWRsaW5rdm9sdW1lX2V2ZW50c190b3RhbBK/AVRoZSBudW1iZXIgb2Ygbm9uLWRlZmF1bHQgYmVoYXZpb3JzIGV4ZWN1dGVkIGJ5IHRoZSBvcyBwYWNrYWdlIGR1ZSB0byBhIG5vbi1kZWZhdWx0IEdPREVCVUc9d2lucmVhZGxpbmt2b2x1bWU9Li4uIHNldHRpbmcuIFNvdXJjZWQgZnJvbSAvZ29kZWJ1Zy9ub24tZGVmYXVsdC1iZWhhdmlvci93aW5yZWFkbGlua3ZvbHVtZTpldmVudHMuGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQk9SpuwOKAgo3Z29fZ29kZWJ1Z19ub25fZGVmYXVsdF9iZWhhdmlvcl93aW5zeW1saW5rX2V2ZW50c190b3RhbBKxAVRoZSBudW1iZXIgb2Ygbm9uLWRlZmF1bHQgYmVoYXZpb3JzIGV4ZWN1dGVkIGJ5IHRoZSBvcyBwYWNrYWdlIGR1ZSB0byBhIG5vbi1kZWZhdWx0IEdPREVCVUc9d2luc3ltbGluaz0uLi4gc2V0dGluZy4gU291cmNlZCBmcm9tIC9nb2RlYnVnL25vbi1kZWZhdWx0LWJlaGF2aW9yL3dpbnN5bWxpbms6ZXZlbnRzLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGELvoqbsDoQIKPGdvX2dvZGVidWdfbm9uX2RlZmF1bHRfYmVoYXZpb3JfeDUwOWtleXBhaXJsZWFmX2V2ZW50c190b3RhbBLDAVRoZSBudW1iZXIgb2Ygbm9uLWRlZmF1bHQgYmVoYXZpb3JzIGV4ZWN1dGVkIGJ5IHRoZSBjcnlwdG8vdGxzIHBhY2thZ2UgZHVlIHRvIGEgbm9uLWRlZmF1bHQgR09ERUJVRz14NTA5a2V5cGFpcmxlYWY9Li4uIHNldHRpbmcuIFNvdXJjZWQgZnJvbSAvZ29kZWJ1Zy9ub24tZGVmYXVsdC1iZWhhdmlvci94NTA5a2V5cGFpcmxlYWY6ZXZlbnRzLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGEN74qbsDqwIKP2dvX2dvZGVidWdfbm9uX2RlZmF1bHRfYmVoYXZpb3JfeDUwOW5lZ2F0aXZlc2VyaWFsX2V2ZW50c190b3RhbBLKAVRoZSBudW1iZXIgb2Ygbm9uLWRlZmF1bHQgYmVoYXZpb3JzIGV4ZWN1dGVkIGJ5IHRoZSBjcnlwdG8veDUwOSBwYWNrYWdlIGR1ZSB0byBhIG5vbi1kZWZhdWx0IEdPREVCVUc9eDUwOW5lZ2F0aXZlc2VyaWFsPS4uLiBzZXR0aW5nLiBTb3VyY2VkIGZyb20gL2dvZGVidWcvbm9uLWRlZmF1bHQtYmVoYXZpb3IveDUwOW5lZ2F0aXZlc2VyaWFsOmV2ZW50cy4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCsiaq7A5MCCjdnb19nb2RlYnVnX25vbl9kZWZhdWx0X2JlaGF2aW9yX3g1MDlyc2FjcnRfZXZlbnRzX3RvdGFsEroBVGhlIG51bWJlciBvZiBub24tZGVmYXVsdCBiZWhhdmlvcnMgZXhlY3V0ZWQgYnkgdGhlIGNyeXB0by94NTA5IHBhY2thZ2UgZHVlIHRvIGEgbm9uLWRlZmF1bHQgR09ERUJVRz14NTA5cnNhY3J0PS4uLiBzZXR0aW5nLiBTb3VyY2VkIGZyb20gL2dvZGVidWcvbm9uLWRlZmF1bHQtYmVoYXZpb3IveDUwOXJzYWNydDpldmVudHMuGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQ0ZSquwOxAgpBZ29fZ29kZWJ1Z19ub25fZGVmYXVsdF9iZWhhdmlvcl94NTA5dXNlZmFsbGJhY2tyb290c19ldmVudHNfdG90YWwSzgFUaGUgbnVtYmVyIG9mIG5vbi1kZWZhdWx0IGJlaGF2aW9ycyBleGVjdXRlZCBieSB0aGUgY3J5cHRvL3g1MDkgcGFja2FnZSBkdWUgdG8gYSBub24tZGVmYXVsdCBHT0RFQlVHPXg1MDl1c2VmYWxsYmFja3Jvb3RzPS4uLiBzZXR0aW5nLiBTb3VyY2VkIGZyb20gL2dvZGVidWcvbm9uLWRlZmF1bHQtYmVoYXZpb3IveDUwOXVzZWZhbGxiYWNrcm9vdHM6ZXZlbnRzLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGELGgqrsDogIKPGdvX2dvZGVidWdfbm9uX2RlZmF1bHRfYmVoYXZpb3JfeDUwOXVzZXBvbGljaWVzX2V2ZW50c190b3RhbBLEAVRoZSBudW1iZXIgb2Ygbm9uLWRlZmF1bHQgYmVoYXZpb3JzIGV4ZWN1dGVkIGJ5IHRoZSBjcnlwdG8veDUwOSBwYWNrYWdlIGR1ZSB0byBhIG5vbi1kZWZhdWx0IEdPREVCVUc9eDUwOXVzZXBvbGljaWVzPS4uLiBzZXR0aW5nLiBTb3VyY2VkIGZyb20gL2dvZGVidWcvbm9uLWRlZmF1bHQtYmVoYXZpb3IveDUwOXVzZXBvbGljaWVzOmV2ZW50cy4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCEq6q7A6ICCjxnb19nb2RlYnVnX25vbl9kZWZhdWx0X2JlaGF2aW9yX3ppcGluc2VjdXJlcGF0aF9ldmVudHNfdG90YWwSxAFUaGUgbnVtYmVyIG9mIG5vbi1kZWZhdWx0IGJlaGF2aW9ycyBleGVjdXRlZCBieSB0aGUgYXJjaGl2ZS96aXAgcGFja2FnZSBkdWUgdG8gYSBub24tZGVmYXVsdCBHT0RFQlVHPXppcGluc2VjdXJlcGF0aD0uLi4gc2V0dGluZy4gU291cmNlZCBmcm9tIC9nb2RlYnVnL25vbi1kZWZhdWx0LWJlaGF2aW9yL3ppcGluc2VjdXJlcGF0aDpldmVudHMuGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQjrWquwNKCg1nb19nb3JvdXRpbmVzEipOdW1iZXIgb2YgZ29yb3V0aW5lcyB0aGF0IGN1cnJlbnRseSBleGlzdC4YASILEgkJAAAAAAAYh0BUCgdnb19pbmZvEiVJbmZvcm1hdGlvbiBhYm91dCB0aGUgR28gZW52aXJvbm1lbnQuGAEiIAoTCgd2ZXJzaW9uEghnbzEuMjQuNBIJCQAAAAAAAPA/qAIKIWdvX21lbW9yeV9jbGFzc2VzX2hlYXBfZnJlZV9ieXRlcxLzAU1lbW9yeSB0aGF0IGlzIGNvbXBsZXRlbHkgZnJlZSBhbmQgZWxpZ2libGUgdG8gYmUgcmV0dXJuZWQgdG8gdGhlIHVuZGVybHlpbmcgc3lzdGVtLCBidXQgaGFzIG5vdCBiZWVuLiBUaGlzIG1ldHJpYyBpcyB0aGUgcnVudGltZSdzIGVzdGltYXRlIG9mIGZyZWUgYWRkcmVzcyBzcGFjZSB0aGF0IGlzIGJhY2tlZCBieSBwaHlzaWNhbCBtZW1vcnkuIFNvdXJjZWQgZnJvbSAvbWVtb3J5L2NsYXNzZXMvaGVhcC9mcmVlOmJ5dGVzLhgBIgsSCQkAAAAAAGZyQdYBCiRnb19tZW1vcnlfY2xhc3Nlc19oZWFwX29iamVjdHNfYnl0ZXMSngFNZW1vcnkgb2NjdXBpZWQgYnkgbGl2ZSBvYmplY3RzIGFuZCBkZWFkIG9iamVjdHMgdGhhdCBoYXZlIG5vdCB5ZXQgYmVlbiBtYXJrZWQgZnJlZSBieSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IuIFNvdXJjZWQgZnJvbSAvbWVtb3J5L2NsYXNzZXMvaGVhcC9vYmplY3RzOmJ5dGVzLhgBIgsSCQkAAADw3eCwQcICCiVnb19tZW1vcnlfY2xhc3Nlc19oZWFwX3JlbGVhc2VkX2J5dGVzEokCTWVtb3J5IHRoYXQgaXMgY29tcGxldGVseSBmcmVlIGFuZCBoYXMgYmVlbiByZXR1cm5lZCB0byB0aGUgdW5kZXJseWluZyBzeXN0ZW0uIFRoaXMgbWV0cmljIGlzIHRoZSBydW50aW1lJ3MgZXN0aW1hdGUgb2YgZnJlZSBhZGRyZXNzIHNwYWNlIHRoYXQgaXMgc3RpbGwgbWFwcGVkIGludG8gdGhlIHByb2Nlc3MsIGJ1dCBpcyBub3QgYmFja2VkIGJ5IHBoeXNpY2FsIG1lbW9yeS4gU291cmNlZCBmcm9tIC9tZW1vcnkvY2xhc3Nlcy9oZWFwL3JlbGVhc2VkOmJ5dGVzLhgBIgsSCQkAAAAAAGBFQZcDCiNnb19tZW1vcnlfY2xhc3Nlc19oZWFwX3N0YWNrc19ieXRlcxLgAk1lbW9yeSBhbGxvY2F0ZWQgZnJvbSB0aGUgaGVhcCB0aGF0IGlzIHJlc2VydmVkIGZvciBzdGFjayBzcGFjZSwgd2hldGhlciBvciBub3QgaXQgaXMgY3VycmVudGx5IGluLXVzZS4gQ3VycmVudGx5LCB0aGlzIHJlcHJlc2VudHMgYWxsIHN0YWNrIG1lbW9yeSBmb3IgZ29yb3V0aW5lcy4gSXQgYWxzbyBpbmNsdWRlcyBhbGwgT1MgdGhyZWFkIHN0YWNrcyBpbiBub24tY2dvIHByb2dyYW1zLiBOb3RlIHRoYXQgc3RhY2tzIG1heSBiZSBhbGxvY2F0ZWQgZGlmZmVyZW50bHkgaW4gdGhlIGZ1dHVyZSwgYW5kIHRoaXMgbWF5IGNoYW5nZS4gU291cmNlZCBmcm9tIC9tZW1vcnkvY2xhc3Nlcy9oZWFwL3N0YWNrczpieXRlcy4YASILEgkJAAAAAADAUUG/AQojZ29fbWVtb3J5X2NsYXNzZXNfaGVhcF91bnVzZWRfYnl0ZXMSiAFNZW1vcnkgdGhhdCBpcyByZXNlcnZlZCBmb3IgaGVhcCBvYmplY3RzIGJ1dCBpcyBub3QgY3VycmVudGx5IHVzZWQgdG8gaG9sZCBoZWFwIG9iamVjdHMuIFNvdXJjZWQgZnJvbSAvbWVtb3J5L2NsYXNzZXMvaGVhcC91bnVzZWQ6Ynl0ZXMuGAEiCxIJCQAAAAAhcHxBvgEKLGdvX21lbW9yeV9jbGFzc2VzX21ldGFkYXRhX21jYWNoZV9mcmVlX2J5dGVzEn9NZW1vcnkgdGhhdCBpcyByZXNlcnZlZCBmb3IgcnVudGltZSBtY2FjaGUgc3RydWN0dXJlcywgYnV0IG5vdCBpbi11c2UuIFNvdXJjZWQgZnJvbSAvbWVtb3J5L2NsYXNzZXMvbWV0YWRhdGEvbWNhY2hlL2ZyZWU6Ynl0ZXMuGAEiCxIJCQAAAAAAmLdAzgEKLWdvX21lbW9yeV9jbGFzc2VzX21ldGFkYXRhX21jYWNoZV9pbnVzZV9ieXRlcxKNAU1lbW9yeSB0aGF0IGlzIG9jY3VwaWVkIGJ5IHJ1bnRpbWUgbWNhY2hlIHN0cnVjdHVyZXMgdGhhdCBhcmUgY3VycmVudGx5IGJlaW5nIHVzZWQuIFNvdXJjZWQgZnJvbSAvbWVtb3J5L2NsYXNzZXMvbWV0YWRhdGEvbWNhY2hlL2ludXNlOmJ5dGVzLhgBIgsSCQkAAAAAAODCQLsBCitnb19tZW1vcnlfY2xhc3Nlc19tZXRhZGF0YV9tc3Bhbl9mcmVlX2J5dGVzEn1NZW1vcnkgdGhhdCBpcyByZXNlcnZlZCBmb3IgcnVudGltZSBtc3BhbiBzdHJ1Y3R1cmVzLCBidXQgbm90IGluLXVzZS4gU291cmNlZCBmcm9tIC9tZW1vcnkvY2xhc3Nlcy9tZXRhZGF0YS9tc3Bhbi9mcmVlOmJ5dGVzLhgBIgsSCQkAAAAAAHcPQcsBCixnb19tZW1vcnlfY2xhc3Nlc19tZXRhZGF0YV9tc3Bhbl9pbnVzZV9ieXRlcxKLAU1lbW9yeSB0aGF0IGlzIG9jY3VwaWVkIGJ5IHJ1bnRpbWUgbXNwYW4gc3RydWN0dXJlcyB0aGF0IGFyZSBjdXJyZW50bHkgYmVpbmcgdXNlZC4gU291cmNlZCBmcm9tIC9tZW1vcnkvY2xhc3Nlcy9tZXRhZGF0YS9tc3Bhbi9pbnVzZTpieXRlcy4YASILEgkJAAAAAPhCUEGpAQomZ29fbWVtb3J5X2NsYXNzZXNfbWV0YWRhdGFfb3RoZXJfYnl0ZXMScE1lbW9yeSB0aGF0IGlzIHJlc2VydmVkIGZvciBvciB1c2VkIHRvIGhvbGQgcnVudGltZSBtZXRhZGF0YS4gU291cmNlZCBmcm9tIC9tZW1vcnkvY2xhc3Nlcy9tZXRhZGF0YS9vdGhlcjpieXRlcy4YASILEgkJAAAAAP6lWUH0AwohZ29fbWVtb3J5X2NsYXNzZXNfb3Nfc3RhY2tzX2J5dGVzEr8DU3RhY2sgbWVtb3J5IGFsbG9jYXRlZCBieSB0aGUgdW5kZXJseWluZyBvcGVyYXRpbmcgc3lzdGVtLiBJbiBub24tY2dvIHByb2dyYW1zIHRoaXMgbWV0cmljIGlzIGN1cnJlbnRseSB6ZXJvLiBUaGlzIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS5JbiBjZ28gcHJvZ3JhbXMgdGhpcyBtZXRyaWMgaW5jbHVkZXMgT1MgdGhyZWFkIHN0YWNrcyBhbGxvY2F0ZWQgZGlyZWN0bHkgZnJvbSB0aGUgT1MuIEN1cnJlbnRseSwgdGhpcyBvbmx5IGFjY291bnRzIGZvciBvbmUgc3RhY2sgaW4gYy1zaGFyZWQgYW5kIGMtYXJjaGl2ZSBidWlsZCBtb2RlcywgYW5kIG90aGVyIHNvdXJjZXMgb2Ygc3RhY2tzIGZyb20gdGhlIE9TIGFyZSBub3QgbWVhc3VyZWQuIFRoaXMgdG9vIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gU291cmNlZCBmcm9tIC9tZW1vcnkvY2xhc3Nlcy9vcy1zdGFja3M6Ynl0ZXMuGAEiCxIJCQAAAAAAAAAA0wEKHWdvX21lbW9yeV9jbGFzc2VzX290aGVyX2J5dGVzEqIBTWVtb3J5IHVzZWQgYnkgZXhlY3V0aW9uIHRyYWNlIGJ1ZmZlcnMsIHN0cnVjdHVyZXMgZm9yIGRlYnVnZ2luZyB0aGUgcnVudGltZSwgZmluYWxpemVyIGFuZCBwcm9maWxlciBzcGVjaWFscywgYW5kIG1vcmUuIFNvdXJjZWQgZnJvbSAvbWVtb3J5L2NsYXNzZXMvb3RoZXI6Ynl0ZXMuGAEiCxIJCQAAAAAxMz5BtQEKKWdvX21lbW9yeV9jbGFzc2VzX3Byb2ZpbGluZ19idWNrZXRzX2J5dGVzEnlNZW1vcnkgdGhhdCBpcyB1c2VkIGJ5IHRoZSBzdGFjayB0cmFjZSBoYXNoIG1hcCB1c2VkIGZvciBwcm9maWxpbmcuIFNvdXJjZWQgZnJvbSAvbWVtb3J5L2NsYXNzZXMvcHJvZmlsaW5nL2J1Y2tldHM6Ynl0ZXMuGAEiCxIJCQAAAIALT0BBrgIKHWdvX21lbW9yeV9jbGFzc2VzX3RvdGFsX2J5dGVzEv0BQWxsIG1lbW9yeSBtYXBwZWQgYnkgdGhlIEdvIHJ1bnRpbWUgaW50byB0aGUgY3VycmVudCBwcm9jZXNzIGFzIHJlYWQtd3JpdGUuIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGluY2x1ZGUgbWVtb3J5IG1hcHBlZCBieSBjb2RlIGNhbGxlZCB2aWEgY2dvIG9yIHZpYSB0aGUgc3lzY2FsbCBwYWNrYWdlLiBTdW0gb2YgYWxsIG1ldHJpY3MgaW4gL21lbW9yeS9jbGFzc2VzLiBTb3VyY2VkIGZyb20gL21lbW9yeS9jbGFzc2VzL3RvdGFsOmJ5dGVzLhgBIgsSCQkAAABYoSq1QY8BChdnb19tZW1zdGF0c19hbGxvY19ieXRlcxJlTnVtYmVyIG9mIGJ5dGVzIGFsbG9jYXRlZCBpbiBoZWFwIGFuZCBjdXJyZW50bHkgaW4gdXNlLiBFcXVhbHMgdG8gL21lbW9yeS9jbGFzc2VzL2hlYXAvb2JqZWN0czpieXRlcy4YASILEgkJAAAA8N3gsEGdAQodZ29fbWVtc3RhdHNfYWxsb2NfYnl0ZXNfdG90YWwSbVRvdGFsIG51bWJlciBvZiBieXRlcyBhbGxvY2F0ZWQgaW4gaGVhcCB1bnRpbCBub3csIGV2ZW4gaWYgcmVsZWFzZWQgYWxyZWFkeS4gRXF1YWxzIHRvIC9nYy9oZWFwL2FsbG9jczpieXRlcy4YACILGgkJAAAAEmsK2EGdAQofZ29fbWVtc3RhdHNfYnVja19oYXNoX3N5c19ieXRlcxJrTnVtYmVyIG9mIGJ5dGVzIHVzZWQgYnkgdGhlIHByb2ZpbGluZyBidWNrZXQgaGFzaCB0YWJsZS4gRXF1YWxzIHRvIC9tZW1vcnkvY2xhc3Nlcy9wcm9maWxpbmcvYnVja2V0czpieXRlcy4YASILEgkJAAAAgAtPQEGOAQoXZ29fbWVtc3RhdHNfZnJlZXNfdG90YWwSZFRvdGFsIG51bWJlciBvZiBoZWFwIG9iamVjdHMgZnJlZXMuIEVxdWFscyB0byAvZ2MvaGVhcC9mcmVlczpvYmplY3RzICsgL2djL2hlYXAvdGlueS9hbGxvY3M6b2JqZWN0cy4YACILGgkJAAAAgNt5YUGXAQoYZ29fbWVtc3RhdHNfZ2Nfc3lzX2J5dGVzEmxOdW1iZXIgb2YgYnl0ZXMgdXNlZCBmb3IgZ2FyYmFnZSBjb2xsZWN0aW9uIHN5c3RlbSBtZXRhZGF0YS4gRXF1YWxzIHRvIC9tZW1vcnkvY2xhc3Nlcy9tZXRhZGF0YS9vdGhlcjpieXRlcy4YASILEgkJAAAAAP6lWUGzAQocZ29fbWVtc3RhdHNfaGVhcF9hbGxvY19ieXRlcxKDAU51bWJlciBvZiBoZWFwIGJ5dGVzIGFsbG9jYXRlZCBhbmQgY3VycmVudGx5IGluIHVzZSwgc2FtZSBhcyBnb19tZW1zdGF0c19hbGxvY19ieXRlcy4gRXF1YWxzIHRvIC9tZW1vcnkvY2xhc3Nlcy9oZWFwL29iamVjdHM6Ynl0ZXMuGAEiCxIJCQAAAPDd4LBBpwEKG2dvX21lbXN0YXRzX2hlYXBfaWRsZV9ieXRlcxJ5TnVtYmVyIG9mIGhlYXAgYnl0ZXMgd2FpdGluZyB0byBiZSB1c2VkLiBFcXVhbHMgdG8gL21lbW9yeS9jbGFzc2VzL2hlYXAvcmVsZWFzZWQ6Ynl0ZXMgKyAvbWVtb3J5L2NsYXNzZXMvaGVhcC9mcmVlOmJ5dGVzLhgBIgsSCQkAAAAAABJ1QaUBChxnb19tZW1zdGF0c19oZWFwX2ludXNlX2J5dGVzEnZOdW1iZXIgb2YgaGVhcCBieXRlcyB0aGF0IGFyZSBpbiB1c2UuIEVxdWFscyB0byAvbWVtb3J5L2NsYXNzZXMvaGVhcC9vYmplY3RzOmJ5dGVzICsgL21lbW9yeS9jbGFzc2VzL2hlYXAvdW51c2VkOmJ5dGVzGAEiCxIJCQAAAADgp7JBdQoYZ29fbWVtc3RhdHNfaGVhcF9vYmplY3RzEkpOdW1iZXIgb2YgY3VycmVudGx5IGFsbG9jYXRlZCBvYmplY3RzLiBFcXVhbHMgdG8gL2djL2hlYXAvb2JqZWN0czpvYmplY3RzLhgBIgsSCQkAAAAAjHw9QYUBCh9nb19tZW1zdGF0c19oZWFwX3JlbGVhc2VkX2J5dGVzElNOdW1iZXIgb2YgaGVhcCBieXRlcyByZWxlYXNlZCB0byBPUy4gRXF1YWxzIHRvIC9tZW1vcnkvY2xhc3Nlcy9oZWFwL3JlbGVhc2VkOmJ5dGVzLhgBIgsSCQkAAAAAAGBFQfIBChpnb19tZW1zdGF0c19oZWFwX3N5c19ieXRlcxLEAU51bWJlciBvZiBoZWFwIGJ5dGVzIG9idGFpbmVkIGZyb20gc3lzdGVtLiBFcXVhbHMgdG8gL21lbW9yeS9jbGFzc2VzL2hlYXAvb2JqZWN0czpieXRlcyArIC9tZW1vcnkvY2xhc3Nlcy9oZWFwL3VudXNlZDpieXRlcyArIC9tZW1vcnkvY2xhc3Nlcy9oZWFwL3JlbGVhc2VkOmJ5dGVzICsgL21lbW9yeS9jbGFzc2VzL2hlYXAvZnJlZTpieXRlcy4YASILEgkJAAAAAAD5s0FrCiBnb19tZW1zdGF0c19sYXN0X2djX3RpbWVfc2Vjb25kcxI4TnVtYmVyIG9mIHNlY29uZHMgc2luY2UgMTk3MCBvZiBsYXN0IGdhcmJhZ2UgY29sbGVjdGlvbi4YASILEgkJnodo9UEg2kHuAQoZZ29fbWVtc3RhdHNfbWFsbG9jc190b3RhbBLBAVRvdGFsIG51bWJlciBvZiBoZWFwIG9iamVjdHMgYWxsb2NhdGVkLCBib3RoIGxpdmUgYW5kIGdjLWVkLiBTZW1hbnRpY2FsbHkgYSBjb3VudGVyIHZlcnNpb24gZm9yIGdvX21lbXN0YXRzX2hlYXBfb2JqZWN0cyBnYXVnZS4gRXF1YWxzIHRvIC9nYy9oZWFwL2FsbG9jczpvYmplY3RzICsgL2djL2hlYXAvdGlueS9hbGxvY3M6b2JqZWN0cy4YACILGgkJAAAAAG0pZUGUAQoeZ29fbWVtc3RhdHNfbWNhY2hlX2ludXNlX2J5dGVzEmNOdW1iZXIgb2YgYnl0ZXMgaW4gdXNlIGJ5IG1jYWNoZSBzdHJ1Y3R1cmVzLiBFcXVhbHMgdG8gL21lbW9yeS9jbGFzc2VzL21ldGFkYXRhL21jYWNoZS9pbnVzZTpieXRlcy4YASILEgkJAAAAAADgwkDUAQocZ29fbWVtc3RhdHNfbWNhY2hlX3N5c19ieXRlcxKkAU51bWJlciBvZiBieXRlcyB1c2VkIGZvciBtY2FjaGUgc3RydWN0dXJlcyBvYnRhaW5lZCBmcm9tIHN5c3RlbS4gRXF1YWxzIHRvIC9tZW1vcnkvY2xhc3Nlcy9tZXRhZGF0YS9tY2FjaGUvaW51c2U6Ynl0ZXMgKyAvbWVtb3J5L2NsYXNzZXMvbWV0YWRhdGEvbWNhY2hlL2ZyZWU6Ynl0ZXMuGAEiCxIJCQAAAAAArM5AkQEKHWdvX21lbXN0YXRzX21zcGFuX2ludXNlX2J5dGVzEmFOdW1iZXIgb2YgYnl0ZXMgaW4gdXNlIGJ5IG1zcGFuIHN0cnVjdHVyZXMuIEVxdWFscyB0byAvbWVtb3J5L2NsYXNzZXMvbWV0YWRhdGEvbXNwYW4vaW51c2U6Ynl0ZXMuGAEiCxIJCQAAAAD4QlBB0AEKG2dvX21lbXN0YXRzX21zcGFuX3N5c19ieXRlcxKhAU51bWJlciBvZiBieXRlcyB1c2VkIGZvciBtc3BhbiBzdHJ1Y3R1cmVzIG9idGFpbmVkIGZyb20gc3lzdGVtLiBFcXVhbHMgdG8gL21lbW9yeS9jbGFzc2VzL21ldGFkYXRhL21zcGFuL2ludXNlOmJ5dGVzICsgL21lbW9yeS9jbGFzc2VzL21ldGFkYXRhL21zcGFuL2ZyZWU6Ynl0ZXMuGAEiCxIJCQAAAACwPlFBjQEKGWdvX21lbXN0YXRzX25leHRfZ2NfYnl0ZXMSYU51bWJlciBvZiBoZWFwIGJ5dGVzIHdoZW4gbmV4dCBnYXJiYWdlIGNvbGxlY3Rpb24gd2lsbCB0YWtlIHBsYWNlLiBFcXVhbHMgdG8gL2djL2hlYXAvZ29hbDpieXRlcy4YASILEgkJAAAAmuLHs0GHAQobZ29fbWVtc3RhdHNfb3RoZXJfc3lzX2J5dGVzEllOdW1iZXIgb2YgYnl0ZXMgdXNlZCBmb3Igb3RoZXIgc3lzdGVtIGFsbG9jYXRpb25zLiBFcXVhbHMgdG8gL21lbW9yeS9jbGFzc2VzL290aGVyOmJ5dGVzLhgBIgsSCQkAAAAAMTM+Qa4BCh1nb19tZW1zdGF0c19zdGFja19pbnVzZV9ieXRlcxJ+TnVtYmVyIG9mIGJ5dGVzIG9idGFpbmVkIGZyb20gc3lzdGVtIGZvciBzdGFjayBhbGxvY2F0b3IgaW4gbm9uLUNHTyBlbnZpcm9ubWVudHMuIEVxdWFscyB0byAvbWVtb3J5L2NsYXNzZXMvaGVhcC9zdGFja3M6Ynl0ZXMuGAEiCxIJCQAAAAAAwFFBtwEKG2dvX21lbXN0YXRzX3N0YWNrX3N5c19ieXRlcxKIAU51bWJlciBvZiBieXRlcyBvYnRhaW5lZCBmcm9tIHN5c3RlbSBmb3Igc3RhY2sgYWxsb2NhdG9yLiBFcXVhbHMgdG8gL21lbW9yeS9jbGFzc2VzL2hlYXAvc3RhY2tzOmJ5dGVzICsgL21lbW9yeS9jbGFzc2VzL29zLXN0YWNrczpieXRlcy4YASILEgkJAAAAAADAUUFzChVnb19tZW1zdGF0c19zeXNfYnl0ZXMSS051bWJlciBvZiBieXRlcyBvYnRhaW5lZCBmcm9tIHN5c3RlbS4gRXF1YWxzIHRvIC9tZW1vcnkvY2xhc3Nlcy90b3RhbDpieXRlLhgBIgsSCQkAAABYoSq1QdwBChtnb19zY2hlZF9nb21heHByb2NzX3RocmVhZHMSrQFUaGUgY3VycmVudCBydW50aW1lLkdPTUFYUFJPQ1Mgc2V0dGluZywgb3IgdGhlIG51bWJlciBvZiBvcGVyYXRpbmcgc3lzdGVtIHRocmVhZHMgdGhhdCBjYW4gZXhlY3V0ZSB1c2VyLWxldmVsIEdvIGNvZGUgc2ltdWx0YW5lb3VzbHkuIFNvdXJjZWQgZnJvbSAvc2NoZWQvZ29tYXhwcm9jczp0aHJlYWRzLhgBIgsSCQkAAAAAAAAgQHUKHmdvX3NjaGVkX2dvcm91dGluZXNfZ29yb3V0aW5lcxJEQ291bnQgb2YgbGl2ZSBnb3JvdXRpbmVzLiBTb3VyY2VkIGZyb20gL3NjaGVkL2dvcm91dGluZXM6Z29yb3V0aW5lcy4YASILEgkJAAAAAAAQh0DUAgoaZ29fc2NoZWRfbGF0ZW5jaWVzX3NlY29uZHMSuQFEaXN0cmlidXRpb24gb2YgdGhlIHRpbWUgZ29yb3V0aW5lcyBoYXZlIHNwZW50IGluIHRoZSBzY2hlZHVsZXIgaW4gYSBydW5uYWJsZSBzdGF0ZSBiZWZvcmUgYWN0dWFsbHkgcnVubmluZy4gQnVja2V0IGNvdW50cyBpbmNyZWFzZSBtb25vdG9uaWNhbGx5LiBTb3VyY2VkIGZyb20gL3NjaGVkL2xhdGVuY2llczpzZWNvbmRzLhgEIng6dgj4twQRemShDSjq2D8aDQi3tAIRlNYm6AsucT4aDQjPhQMROYww4o55pT4aDQjZtAMRg/dD1pQQ3j4aDQixpgQROYww4o55FT8aDQintwQRg/dD1pQQTj8aDQj1twQROYww4o55hT8aDQj4twQRg/dD1pQQvj+WBAojZ29fc2NoZWRfcGF1c2VzX3N0b3BwaW5nX2djX3NlY29uZHMSggNEaXN0cmlidXRpb24gb2YgaW5kaXZpZHVhbCBHQy1yZWxhdGVkIHN0b3AtdGhlLXdvcmxkIHN0b3BwaW5nIGxhdGVuY2llcy4gVGhpcyBpcyB0aGUgdGltZSBpdCB0YWtlcyBmcm9tIGRlY2lkaW5nIHRvIHN0b3AgdGhlIHdvcmxkIHVudGlsIGFsbCBQcyBhcmUgc3RvcHBlZC4gVGhpcyBpcyBhIHN1YnNldCBvZiB0aGUgdG90YWwgR0MtcmVsYXRlZCBzdG9wLXRoZS13b3JsZCB0aW1lICgvc2NoZWQvcGF1c2VzL3RvdGFsL2djOnNlY29uZHMpLiBEdXJpbmcgdGhpcyB0aW1lLCBzb21lIHRocmVhZHMgbWF5IGJlIGV4ZWN1dGluZy4gQnVja2V0IGNvdW50cyBpbmNyZWFzZSBtb25vdG9uaWNhbGx5LiBTb3VyY2VkIGZyb20gL3NjaGVkL3BhdXNlcy9zdG9wcGluZy9nYzpzZWNvbmRzLhgEImg6ZghIEdJMcQHa6WY/GgsIABGU1iboCy5xPhoLCAAROYww4o55pT4aCwgsEYP3Q9aUEN4+GgsIPBE5jDDijnkVPxoLCEYRg/dD1pQQTj8aCwhIETmMMOKOeYU/GgsISBGD90PWlBC+P6cECiZnb19zY2hlZF9wYXVzZXNfc3RvcHBpbmdfb3RoZXJfc2Vjb25kcxKQA0Rpc3RyaWJ1dGlvbiBvZiBpbmRpdmlkdWFsIG5vbi1HQy1yZWxhdGVkIHN0b3AtdGhlLXdvcmxkIHN0b3BwaW5nIGxhdGVuY2llcy4gVGhpcyBpcyB0aGUgdGltZSBpdCB0YWtlcyBmcm9tIGRlY2lkaW5nIHRvIHN0b3AgdGhlIHdvcmxkIHVudGlsIGFsbCBQcyBhcmUgc3RvcHBlZC4gVGhpcyBpcyBhIHN1YnNldCBvZiB0aGUgdG90YWwgbm9uLUdDLXJlbGF0ZWQgc3RvcC10aGUtd29ybGQgdGltZSAoL3NjaGVkL3BhdXNlcy90b3RhbC9vdGhlcjpzZWNvbmRzKS4gRHVyaW5nIHRoaXMgdGltZSwgc29tZSB0aHJlYWRzIG1heSBiZSBleGVjdXRpbmcuIEJ1Y2tldCBjb3VudHMgaW5jcmVhc2UgbW9ub3RvbmljYWxseS4gU291cmNlZCBmcm9tIC9zY2hlZC9wYXVzZXMvc3RvcHBpbmcvb3RoZXI6c2Vjb25kcy4YBCJoOmYIDhGPUiDrXUcyPxoLCAARlNYm6AsucT4aCwgAETmMMOKOeaU+GgsIBxGD90PWlBDePhoLCAsROYww4o55FT8aCwgOEYP3Q9aUEE4/GgsIDhE5jDDijnmFPxoLCA4Rg/dD1pQQvj+lBAogZ29fc2NoZWRfcGF1c2VzX3RvdGFsX2djX3NlY29uZHMSlANEaXN0cmlidXRpb24gb2YgaW5kaXZpZHVhbCBHQy1yZWxhdGVkIHN0b3AtdGhlLXdvcmxkIHBhdXNlIGxhdGVuY2llcy4gVGhpcyBpcyB0aGUgdGltZSBmcm9tIGRlY2lkaW5nIHRvIHN0b3AgdGhlIHdvcmxkIHVudGlsIHRoZSB3b3JsZCBpcyBzdGFydGVkIGFnYWluLiBTb21lIG9mIHRoaXMgdGltZSBpcyBzcGVudCBnZXR0aW5nIGFsbCB0aHJlYWRzIHRvIHN0b3AgKHRoaXMgaXMgbWVhc3VyZWQgZGlyZWN0bHkgaW4gL3NjaGVkL3BhdXNlcy9zdG9wcGluZy9nYzpzZWNvbmRzKSwgZHVyaW5nIHdoaWNoIHNvbWUgdGhyZWFkcyBtYXkgc3RpbGwgYmUgcnVubmluZy4gQnVja2V0IGNvdW50cyBpbmNyZWFzZSBtb25vdG9uaWNhbGx5LiBTb3VyY2VkIGZyb20gL3NjaGVkL3BhdXNlcy90b3RhbC9nYzpzZWNvbmRzLhgEImg6ZghIEde1LTJQBWs/GgsIABGU1iboCy5xPhoLCAAROYww4o55pT4aCwgNEYP3Q9aUEN4+GgsIOBE5jDDijnkVPxoLCEYRg/dD1pQQTj8aCwhIETmMMOKOeYU/GgsISBGD90PWlBC+P/oDCiNnb19zY2hlZF9wYXVzZXNfdG90YWxfb3RoZXJfc2Vjb25kcxLmAkRpc3RyaWJ1dGlvbiBvZiBpbmRpdmlkdWFsIG5vbi1HQy1yZWxhdGVkIHN0b3AtdGhlLXdvcmxkIHBhdXNlIGxhdGVuY2llcy4gVGhpcyBpcyB0aGUgdGltZSBmcm9tIGRlY2lkaW5nIHRvIHN0b3AgdGhlIHdvcmxkIHVudGlsIHRoZSB3b3JsZCBpcyBzdGFydGVkIGFnYWluLiBTb21lIG9mIHRoaXMgdGltZSBpcyBzcGVudCBnZXR0aW5nIGFsbCB0aHJlYWRzIHRvIHN0b3AgKG1lYXN1cmVkIGRpcmVjdGx5IGluIC9zY2hlZC9wYXVzZXMvc3RvcHBpbmcvb3RoZXI6c2Vjb25kcykuIEJ1Y2tldCBjb3VudHMgaW5jcmVhc2UgbW9ub3RvbmljYWxseS4gU291cmNlZCBmcm9tIC9zY2hlZC9wYXVzZXMvdG90YWwvb3RoZXI6c2Vjb25kcy4YBCJoOmYIDhG/ZVNQfy03PxoLCAARlNYm6AsucT4aCwgAETmMMOKOeaU+GgsIBxGD90PWlBDePhoLCAoROYww4o55FT8aCwgOEYP3Q9aUEE4/GgsIDhE5jDDijnmFPxoLCA4Rg/dD1pQQvj+sAQooZ29fc3FsX3N0YXRzX2Nvbm5lY3Rpb25zX2Jsb2NrZWRfc2Vjb25kcxI0VGhlIHRvdGFsIHRpbWUgYmxvY2tlZCB3YWl0aW5nIGZvciBhIG5ldyBjb25uZWN0aW9uLhgAIh8KEgoHZGJfbmFtZRIHZ3JhZmFuYRoJCdRIUJ6nkdo/IicKGgoHZGJfbmFtZRIPdW5pZmllZF9zdG9yYWdlGgkJAAAAAAAAAAC2AQooZ29fc3FsX3N0YXRzX2Nvbm5lY3Rpb25zX2Nsb3NlZF9tYXhfaWRsZRI+VGhlIHRvdGFsIG51bWJlciBvZiBjb25uZWN0aW9ucyBjbG9zZWQgZHVlIHRvIFNldE1heElkbGVDb25ucy4YACIfChIKB2RiX25hbWUSB2dyYWZhbmEaCQkAAAAAAAAAACInChoKB2RiX25hbWUSD3VuaWZpZWRfc3RvcmFnZRoJCQAAAAAAAAAAvgEKLWdvX3NxbF9zdGF0c19jb25uZWN0aW9uc19jbG9zZWRfbWF4X2lkbGVfdGltZRJBVGhlIHRvdGFsIG51bWJlciBvZiBjb25uZWN0aW9ucyBjbG9zZWQgZHVlIHRvIFNldENvbm5NYXhJZGxlVGltZS4YACIfChIKB2RiX25hbWUSB2dyYWZhbmEaCQkAAAAAAAAAACInChoKB2RiX25hbWUSD3VuaWZpZWRfc3RvcmFnZRoJCQAAAAAAAAAAvQEKLGdvX3NxbF9zdGF0c19jb25uZWN0aW9uc19jbG9zZWRfbWF4X2xpZmV0aW1lEkFUaGUgdG90YWwgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIGNsb3NlZCBkdWUgdG8gU2V0Q29ubk1heExpZmV0aW1lLhgAIh8KEgoHZGJfbmFtZRIHZ3JhZmFuYRoJCQAAAAAAADVAIicKGgoHZGJfbmFtZRIPdW5pZmllZF9zdG9yYWdlGgkJAAAAAAAAMUCMAQodZ29fc3FsX3N0YXRzX2Nvbm5lY3Rpb25zX2lkbGUSH1RoZSBudW1iZXIgb2YgaWRsZSBjb25uZWN0aW9ucy4YASIfChIKB2RiX25hbWUSB2dyYWZhbmESCQkAAAAAAADwPyInChoKB2RiX25hbWUSD3VuaWZpZWRfc3RvcmFnZRIJCQAAAAAAAAAAmgEKH2dvX3NxbF9zdGF0c19jb25uZWN0aW9uc19pbl91c2USK1RoZSBudW1iZXIgb2YgY29ubmVjdGlvbnMgY3VycmVudGx5IGluIHVzZS4YASIfChIKB2RiX25hbWUSB2dyYWZhbmESCQkAAAAAAAAAACInChoKB2RiX25hbWUSD3VuaWZpZWRfc3RvcmFnZRIJCQAAAAAAAPA/pAEKIWdvX3NxbF9zdGF0c19jb25uZWN0aW9uc19tYXhfb3BlbhIzTWF4aW11bSBudW1iZXIgb2Ygb3BlbiBjb25uZWN0aW9ucyB0byB0aGUgZGF0YWJhc2UuGAEiHwoSCgdkYl9uYW1lEgdncmFmYW5hEgkJAAAAAAAAFEAiJwoaCgdkYl9uYW1lEg91bmlmaWVkX3N0b3JhZ2USCQkAAAAAAAAUQKgBCh1nb19zcWxfc3RhdHNfY29ubmVjdGlvbnNfb3BlbhI7VGhlIG51bWJlciBvZiBlc3RhYmxpc2hlZCBjb25uZWN0aW9ucyBib3RoIGluIHVzZSBhbmQgaWRsZS4YASIfChIKB2RiX25hbWUSB2dyYWZhbmESCQkAAAAAAADwPyInChoKB2RiX25hbWUSD3VuaWZpZWRfc3RvcmFnZRIJCQAAAAAAAPA/ngEKI2dvX3NxbF9zdGF0c19jb25uZWN0aW9uc193YWl0ZWRfZm9yEitUaGUgdG90YWwgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIHdhaXRlZCBmb3IuGAAiHwoSCgdkYl9uYW1lEgdncmFmYW5hGgkJAAAAAACAQUAiJwoaCgdkYl9uYW1lEg91bmlmaWVkX3N0b3JhZ2UaCQkAAAAAAAAAAJQDCiZnb19zeW5jX211dGV4X3dhaXRfdG90YWxfc2Vjb25kc190b3RhbBLMAkFwcHJveGltYXRlIGN1bXVsYXRpdmUgdGltZSBnb3JvdXRpbmVzIGhhdmUgc3BlbnQgYmxvY2tlZCBvbiBhIHN5bmMuTXV0ZXgsIHN5bmMuUldNdXRleCwgb3IgcnVudGltZS1pbnRlcm5hbCBsb2NrLiBUaGlzIG1ldHJpYyBpcyB1c2VmdWwgZm9yIGlkZW50aWZ5aW5nIGdsb2JhbCBjaGFuZ2VzIGluIGxvY2sgY29udGVudGlvbi4gQ29sbGVjdCBhIG11dGV4IG9yIGJsb2NrIHByb2ZpbGUgdXNpbmcgdGhlIHJ1bnRpbWUvcHByb2YgcGFja2FnZSBmb3IgbW9yZSBkZXRhaWxlZCBjb250ZW50aW9uIGRhdGEuIFNvdXJjZWQgZnJvbSAvc3luYy9tdXRleC93YWl0L3RvdGFsOnNlY29uZHMuGAAiGRoXCez/p9hUusQ/GgwIk42ExAYQx9OtuwM6Cgpnb190aHJlYWRzEh1OdW1iZXIgb2YgT1MgdGhyZWFkcyBjcmVhdGVkLhgBIgsSCQkAAAAAAAAuQFoKH2dyYWZhbmFfYWNjZXNzX2V2YWx1YXRpb25fY291bnQSGm51bWJlciBvZiBldmFsdWF0aW9uIGNhbGxzGAAiGRoXCQAAAAAAAEFAGgwIk42ExAYQuqGfzwP6AQoiZ3JhZmFuYV9hY2Nlc3NfZXZhbHVhdGlvbl9kdXJhdGlvbhIxSGlzdG9ncmFtIGZvciB0aGUgcnVudGltZSBvZiBldmFsdWF0aW9uIGZ1bmN0aW9uLhgEIp4BOpsBCCIRP+5MguZcQj8aCwgLEfFo44i1+OQ+GgsIIBHxaOOItfgEPxoLCCIR8WjjiLX4JD8aCwgiEfFo44i1+EQ/GgsIIhHxaOOItfhkPxoLCCIR8WjjiLX4hD8aCwgiEfFo44i1+KQ/GgsIIhHxaOOItfjEPxoLCCIR8WjjiLX45D8aCwgiEfFo44i1+ARAegwIk42ExAYQg5KfzwOqAQomZ3JhZmFuYV9hY2Nlc3NfcGVybWlzc2lvbnNfY2FjaGVfdXNhZ2USKWFjY2VzcyBjb250cm9sIHBlcm1pc3Npb25zIGNhY2hlIGhpdC9taXNzGAAiKAoNCgZzdGF0dXMSA2hpdBoXCQAAAAAAAAAAGgwIk42ExAYQ/tCfzwMiKQoOCgZzdGF0dXMSBG1pc3MaFwkAAAAAAAAAABoMCJONhMQGEOXZn88DggIKI2dyYWZhbmFfYWNjZXNzX3Blcm1pc3Npb25zX2R1cmF0aW9uEjhIaXN0b2dyYW0gZm9yIHRoZSBydW50aW1lIG9mIHBlcm1pc3Npb25zIGNoZWNrIGZ1bmN0aW9uLhgEIp4BOpsBCAARAAAAAAAAAAAaCwgAEfFo44i1+OQ+GgsIABHxaOOItfgEPxoLCAAR8WjjiLX4JD8aCwgAEfFo44i1+EQ/GgsIABHxaOOItfhkPxoLCAAR8WjjiLX4hD8aCwgAEfFo44i1+KQ/GgsIABHxaOOItfjEPxoLCAAR8WjjiLX45D8aCwgAEfFo44i1+ARAegwIk42ExAYQyv+ezwNMChlncmFmYW5hX2FjY2Vzc19yb2xlX2NvdW50EiBHYXVnZSBmb3IgdG90YWwgbnVtYmVyIG9mIHJvbGVzLhgBIgsSCQkAAAAAAOBuQNMBCipncmFmYW5hX2FjY2Vzc19zZWFyY2hfcGVybWlzc2lvbnNfZHVyYXRpb24SOEhpc3RvZ3JhbSBmb3IgdGhlIHJ1bnRpbWUgb2YgcGVybWlzc2lvbnMgc2VhcmNoIGZ1bmN0aW9uGAQiaTpnCAARAAAAAAAAAAAaCwgAEfyp8dJNYlA/GgsIABF7FK5H4XqEPxoLCAARmpmZmZmZuT8aCwgAEQAAAAAAAPA/GgsIABEAAAAAAAAkQBoLCAARAAAAAAAAWUB6DAiTjYTEBhDWp5/PA8IBCjJncmFmYW5hX2FjY2Vzc19zZWFyY2hfdXNlcl9wZXJtaXNzaW9uc19jYWNoZV91c2FnZRI1YWNjZXNzIGNvbnRyb2wgc2VhcmNoIHVzZXIgcGVybWlzc2lvbnMgY2FjaGUgaGl0L21pc3MYACIoCg0KBnN0YXR1cxIDaGl0GhcJAAAAAAAAAAAaDAiTjYTEBhCd8p/PAyIpCg4KBnN0YXR1cxIEbWlzcxoXCQAAAAAAAAAAGgwIk42ExAYQnPqfzwNkCh5ncmFmYW5hX2FjY2Vzc190ZWFtX3JvbGVfY291bnQSM0dhdWdlIGZvciB0b3RhbCBudW1iZXIgb2Ygcm9sZSBhc3NpZ25tZW50cyB0byB0ZWFtLhgBIgsSCQkAAAAAAAAAAGUKHmdyYWZhbmFfYWNjZXNzX3VzZXJfcm9sZV9jb3VudBI0R2F1Z2UgZm9yIHRvdGFsIG51bWJlciBvZiByb2xlIGFzc2lnbm1lbnRzIHRvIHVzZXJzLhgBIgsSCQkAAAAAAAAsQJABCjRncmFmYW5hX2FnZ3JlZ2F0b3JfZGlzY292ZXJ5X2FnZ3JlZ2F0aW9uX2NvdW50X3RvdGFsEjtbQUxQSEFdIENvdW50ZXIgb2YgbnVtYmVyIG9mIHRpbWVzIGRpc2NvdmVyeSB3YXMgYWdncmVnYXRlZBgAIhkaFwkAAAAAAAAAABoMCJONhMQGEI/N+cwDdwo6Z3JhZmFuYV9hbGVydF9lbnJpY2htZW50X2NvbmZpZ19zeW5jX2xhc3Rfd2F0Y2hfc3VjY2Vzc2Z1bBIqV2hldGhlciB0aGUgbGFzdCB3YXRjaCBhdHRlbXB0IHN1Y2Nlc3NmdWwuGAEiCxIJCQAAAAAAAAAASAoeZ3JhZmFuYV9hbGVydGluZ19hY3RpdmVfYWxlcnRzEhdhbW91bnQgb2YgYWN0aXZlIGFsZXJ0cxgBIgsSCQkAAAAAAAAAAGoKJmdyYWZhbmFfYWxlcnRpbmdfYWN0aXZlX2NvbmZpZ3VyYXRpb25zEjFUaGUgbnVtYmVyIG9mIGFjdGl2ZSBBbGVydG1hbmFnZXIgY29uZmlndXJhdGlvbnMuGAEiCxIJCQAAAAAAAPA/4gEKJGdyYWZhbmFfYWxlcnRpbmdfYWxlcnRtYW5hZ2VyX2FsZXJ0cxI3SG93IG1hbnkgYWxlcnRzIGJ5IHN0YXRlIGFyZSBpbiBHcmFmYW5hJ3MgQWxlcnRtYW5hZ2VyLhgBIiYKCAoDb3JnEgExCg8KBXN0YXRlEgZhY3RpdmUSCQkAAAAAAAAAACIqCggKA29yZxIBMQoTCgVzdGF0ZRIKc3VwcHJlc3NlZBIJCQAAAAAAAAAAIisKCAoDb3JnEgExChQKBXN0YXRlEgt1bnByb2Nlc3NlZBIJCQAAAAAAAAAAcQopZ3JhZmFuYV9hbGVydGluZ19hbGVydG1hbmFnZXJfY29uZmlnX2hhc2gSK1RoZSBoYXNoIG9mIHRoZSBBbGVydG1hbmFnZXIgY29uZmlndXJhdGlvbi4YASIVCggKA29yZxIBMRIJCUC6+I3V9OVCVgoqZ3JhZmFuYV9hbGVydGluZ19hbGVydG1hbmFnZXJfY29uZmlnX21hdGNoEhlUaGUgdG90YWwgbnVtYmVyIG9mIG1hdGNoGAEiCxIJCQAAAAAAAAAAWwotZ3JhZmFuYV9hbGVydGluZ19hbGVydG1hbmFnZXJfY29uZmlnX21hdGNoX3JlEhtUaGUgdG90YWwgbnVtYmVyIG9mIG1hdGNoUkUYASILEgkJAAAAAAAAAABcCi1ncmFmYW5hX2FsZXJ0aW5nX2FsZXJ0bWFuYWdlcl9jb25maWdfbWF0Y2hlcnMSHFRoZSB0b3RhbCBudW1iZXIgb2YgbWF0Y2hlcnMYASILEgkJAAAAAAAAAABqCjRncmFmYW5hX2FsZXJ0aW5nX2FsZXJ0bWFuYWdlcl9jb25maWdfb2JqZWN0X21hdGNoZXJzEiNUaGUgdG90YWwgbnVtYmVyIG9mIG9iamVjdF9tYXRjaGVycxgBIgsSCQkAAAAAAAAAQIcBCi9ncmFmYW5hX2FsZXJ0aW5nX2FsZXJ0bWFuYWdlcl9jb25maWdfc2l6ZV9ieXRlcxI7VGhlIHNpemUgb2YgdGhlIGdyYWZhbmEgYWxlcnRtYW5hZ2VyIGNvbmZpZ3VyYXRpb24gaW4gYnl0ZXMYASIVCggKA29yZxIBMRIJCQAAAAAAmINAcQouZ3JhZmFuYV9hbGVydGluZ19hbGVydG1hbmFnZXJfaW5oaWJpdGlvbl9ydWxlcxImTnVtYmVyIG9mIGNvbmZpZ3VyZWQgaW5oaWJpdGlvbiBydWxlcy4YASIVCggKA29yZxIBMRIJCQAAAAAAAAAAdQoqZ3JhZmFuYV9hbGVydGluZ19hbGVydG1hbmFnZXJfaW50ZWdyYXRpb25zEh9OdW1iZXIgb2YgY29uZmlndXJlZCByZWNlaXZlcnMuGAEiJAoICgNvcmcSATEKDQoEdHlwZRIFZW1haWwSCQkAAAAAAADwP9cBCidncmFmYW5hX2FsZXJ0aW5nX2FsZXJ0bWFuYWdlcl9yZWNlaXZlcnMSWE51bWJlciBvZiBjb25maWd1cmVkIHJlY2VpdmVycyBieSBzdGF0ZS4gSXQgaXMgY29uc2lkZXJlZCBhY3RpdmUgaWYgdXNlZCB3aXRoaW4gYSByb3V0ZS4YASImCggKA29yZxIBMQoPCgVzdGF0ZRIGYWN0aXZlEgkJAAAAAAAA8D8iKAoICgNvcmcSATEKEQoFc3RhdGUSCGluYWN0aXZlEgkJAAAAAAAAAAB4CiVncmFmYW5hX2FsZXJ0aW5nX2FsZXJ0c19pbnZhbGlkX3RvdGFsEjZUaGUgdG90YWwgbnVtYmVyIG9mIHJlY2VpdmVkIGFsZXJ0cyB0aGF0IHdlcmUgaW52YWxpZC4YACIVCggKA29yZxIBMRoJCQAAAAAAAAAApAEKJmdyYWZhbmFfYWxlcnRpbmdfYWxlcnRzX3JlY2VpdmVkX3RvdGFsEiRUaGUgdG90YWwgbnVtYmVyIG9mIHJlY2VpdmVkIGFsZXJ0cy4YACInCggKA29yZxIBMQoQCgZzdGF0dXMSBmZpcmluZxoJCQAAAAAAAAAAIikKCAoDb3JnEgExChIKBnN0YXR1cxIIcmVzb2x2ZWQaCQkAAAAAAAAAAJUBCipncmFmYW5hX2FsZXJ0aW5nX2Rpc2NvdmVyZWRfY29uZmlndXJhdGlvbnMSWFRoZSBudW1iZXIgb2Ygb3JnYW5pemF0aW9ucyB3ZSd2ZSBkaXNjb3ZlcmVkIHRoYXQgcmVxdWlyZSBhbiBBbGVydG1hbmFnZXIgY29uZmlndXJhdGlvbi4YASILEgkJAAAAAAAA8D9kCi5ncmFmYW5hX2FsZXJ0aW5nX2Rpc3BhdGNoZXJfYWdncmVnYXRpb25fZ3JvdXBzEiNOdW1iZXIgb2YgYWN0aXZlIGFnZ3JlZ2F0aW9uIGdyb3VwcxgBIgsSCQkAAAAAAAAAAIQBCj1ncmFmYW5hX2FsZXJ0aW5nX2Rpc3BhdGNoZXJfYWxlcnRfcHJvY2Vzc2luZ19kdXJhdGlvbl9zZWNvbmRzEjJTdW1tYXJ5IG9mIGxhdGVuY2llcyBmb3IgdGhlIHByb2Nlc3Npbmcgb2YgYWxlcnRzLhgCIg0iCwgAEQAAAAAAAAAArgEKLGdyYWZhbmFfYWxlcnRpbmdfZXhlY3V0aW9uX3RpbWVfbWlsbGlzZWNvbmRzEiNzdW1tYXJ5IG9mIGFsZXJ0IGV4ZWN1dGlvbiBkdXJhdGlvbhgCIlciVQgAEQAAAAAAAAAAGhIJAAAAAAAA4D8RAQAAAAAA+H8aEgnNzMzMzMzsPxEBAAAAAAD4fxoSCa5H4XoUru8/EQEAAAAAAPh/IgwIk42ExAYQ+4qbzwN+CipncmFmYW5hX2FsZXJ0aW5nX25mbG9nX2djX2R1cmF0aW9uX3NlY29uZHMSP0R1cmF0aW9uIG9mIHRoZSBsYXN0IG5vdGlmaWNhdGlvbiBsb2cgZ2FyYmFnZSBjb2xsZWN0aW9uIGN5Y2xlLhgCIg0iCwgAEQAAAAAAAAAAjQEKN2dyYWZhbmFfYWxlcnRpbmdfbmZsb2dfZ29zc2lwX21lc3NhZ2VzX3Byb3BhZ2F0ZWRfdG90YWwSQ051bWJlciBvZiByZWNlaXZlZCBnb3NzaXAgbWVzc2FnZXMgdGhhdCBoYXZlIGJlZW4gZnVydGhlciBnb3NzaXBlZC4YACILGgkJAAAAAAAAAABoCiRncmFmYW5hX2FsZXJ0aW5nX25mbG9nX3F1ZXJpZXNfdG90YWwSMU51bWJlciBvZiBub3RpZmljYXRpb24gbG9nIHF1ZXJpZXMgd2VyZSByZWNlaXZlZC4YACILGgkJAAAAAAAAAACBAgotZ3JhZmFuYV9hbGVydGluZ19uZmxvZ19xdWVyeV9kdXJhdGlvbl9zZWNvbmRzEi5EdXJhdGlvbiBvZiBub3RpZmljYXRpb24gbG9nIHF1ZXJ5IGV2YWx1YXRpb24uGAQinQE6mgEIABEAAAAAAAAAABoLCAARexSuR+F6dD8aCwgAEXsUrkfheoQ/GgsIABGamZmZmZmZPxoLCAARmpmZmZmZqT8aCwgAEZqZmZmZmbk/GgsIABEAAAAAAADQPxoLCAARAAAAAAAA4D8aCwgAEQAAAAAAAPA/GgsIABEAAAAAAAAEQBoLCAARAAAAAAAAFEAaCwgAEQAAAAAAACRAcQopZ3JhZmFuYV9hbGVydGluZ19uZmxvZ19xdWVyeV9lcnJvcnNfdG90YWwSNU51bWJlciBub3RpZmljYXRpb24gbG9nIHJlY2VpdmVkIHF1ZXJpZXMgdGhhdCBmYWlsZWQuGAAiCxoJCQAAAAAAAAAAdAowZ3JhZmFuYV9hbGVydGluZ19uZmxvZ19zbmFwc2hvdF9kdXJhdGlvbl9zZWNvbmRzEi9EdXJhdGlvbiBvZiB0aGUgbGFzdCBub3RpZmljYXRpb24gbG9nIHNuYXBzaG90LhgCIg0iCwgAEQAAAAAAAAAAcQoqZ3JhZmFuYV9hbGVydGluZ19uZmxvZ19zbmFwc2hvdF9zaXplX2J5dGVzEjRTaXplIG9mIHRoZSBsYXN0IG5vdGlmaWNhdGlvbiBsb2cgc25hcHNob3QgaW4gYnl0ZXMuGAEiCxIJCQAAAAAAAAAAbgoqZ3JhZmFuYV9hbGVydGluZ19ub3RpZmljYXRpb25faGlzdG9yeV9pbmZvEjFJbmZvcm1hdGlvbiBhYm91dCB0aGUgbm90aWZpY2F0aW9uIGhpc3Rvcnkgc3RvcmUuGAEiCxIJCQAAAAAAAAAAqQEKOGdyYWZhbmFfYWxlcnRpbmdfbm90aWZpY2F0aW9uX2hpc3Rvcnlfd3JpdGVzX2J5dGVzX3RvdGFsElBUaGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHNlbnQgd2l0aGluIGEgYmF0Y2ggdG8gdGhlIG5vdGlmaWNhdGlvbiBoaXN0b3J5IHN0b3JlLhgAIhkaFwkAAAAAAAAAABoMCLeNhMQGEIHl8OQCnAEKOWdyYWZhbmFfYWxlcnRpbmdfbm90aWZpY2F0aW9uX2hpc3Rvcnlfd3JpdGVzX2ZhaWxlZF90b3RhbBJCVGhlIHRvdGFsIG51bWJlciBvZiBmYWlsZWQgd3JpdGVzIG9mIG5vdGlmaWNhdGlvbiBoaXN0b3J5IGJhdGNoZXMuGAAiGRoXCQAAAAAAAAAAGgwIt42ExAYQtI/w5AKmAQoyZ3JhZmFuYV9hbGVydGluZ19ub3RpZmljYXRpb25faGlzdG9yeV93cml0ZXNfdG90YWwSU1RoZSB0b3RhbCBudW1iZXIgb2Ygbm90aWZpY2F0aW9uIGhpc3RvcnkgYmF0Y2hlcyB0aGF0IHdlcmUgYXR0ZW1wdGVkIHRvIGJlIHdyaXR0ZW4uGAAiGRoXCQAAAAAAAAAAGgwIt42ExAYQ3crv5AJqCi1ncmFmYW5hX2FsZXJ0aW5nX25vdGlmaWNhdGlvbl9sYXRlbmN5X3NlY29uZHMSKFRoZSBsYXRlbmN5IG9mIG5vdGlmaWNhdGlvbnMgaW4gc2Vjb25kcy4YBCINOgsIABEAAAAAAAAAALQBCkZncmFmYW5hX2FsZXJ0aW5nX3JlbW90ZV9hbGVydG1hbmFnZXJfY29uZmlndXJhdGlvbl9zeW5jX2ZhaWx1cmVzX3RvdGFsEk1Ub3RhbCBudW1iZXIgb2YgZmFpbGVkIGF0dGVtcHRzIHRvIHN5bmMgY29uZmlndXJhdGlvbnMgYmV0d2VlbiBBbGVydG1hbmFnZXJzLhgAIhkaFwkAAAAAAAAAABoMCLeNhMQGEKPy9OQCngEKPmdyYWZhbmFfYWxlcnRpbmdfcmVtb3RlX2FsZXJ0bWFuYWdlcl9jb25maWd1cmF0aW9uX3N5bmNzX3RvdGFsEj9Ub3RhbCBudW1iZXIgb2YgY29uZmlndXJhdGlvbiBzeW5jcyB0byB0aGUgcmVtb3RlIEFsZXJ0bWFuYWdlci4YACIZGhcJAAAAAAAAHEAaDAi3jYTEBhCfyvTkAn4KKWdyYWZhbmFfYWxlcnRpbmdfcmVtb3RlX2FsZXJ0bWFuYWdlcl9pbmZvEipJbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVtb3RlIEFsZXJ0bWFuYWdlci4YASIjChYKBG1vZGUSDnJlbW90ZV9wcmltYXJ5EgkJAAAAAAAA8D+7AQpOZ3JhZmFuYV9hbGVydGluZ19yZW1vdGVfYWxlcnRtYW5hZ2VyX2xhc3RfY29uZmlndXJhdGlvbl9zeW5jX3RpbWVzdGFtcF9zZWNvbmRzElpUaW1lc3RhbXAgb2YgdGhlIGxhc3Qgc3VjY2Vzc2Z1bCBjb25maWd1cmF0aW9uIHN5bmMgdG8gdGhlIHJlbW90ZSBBbGVydG1hbmFnZXIgaW4gc2Vjb25kcy4YASILEgkJ3udTCEIg2kG1AQpLZ3JhZmFuYV9hbGVydGluZ19yZW1vdGVfYWxlcnRtYW5hZ2VyX2xhc3RfcmVhZGluZXNzX2NoZWNrX3RpbWVzdGFtcF9zZWNvbmRzEldUaW1lc3RhbXAgb2YgdGhlIGxhc3Qgc3VjY2Vzc2Z1bCByZWFkaW5lc3MgY2hlY2sgdG8gdGhlIHJlbW90ZSBBbGVydG1hbmFnZXIgaW4gc2Vjb25kcy4YASILEgkJoILzrUEg2kGrAQpGZ3JhZmFuYV9hbGVydGluZ19yZW1vdGVfYWxlcnRtYW5hZ2VyX2xhc3Rfc3RhdGVfc3luY190aW1lc3RhbXBfc2Vjb25kcxJSVGltZXN0YW1wIG9mIHRoZSBsYXN0IHN1Y2Nlc3NmdWwgc3RhdGUgc3luYyB0byB0aGUgcmVtb3RlIEFsZXJ0bWFuYWdlciBpbiBzZWNvbmRzLhgBIgsSCQkuafmtQSDaQY4MCjRncmFmYW5hX2FsZXJ0aW5nX3JlbW90ZV9hbGVydG1hbmFnZXJfbGF0ZW5jeV9zZWNvbmRzEjpIaXN0b2dyYW0gb2YgcmVxdWVzdCBsYXRlbmNpZXMgdG8gdGhlIHJlbW90ZSBBbGVydG1hbmFnZXIuGAQi4wIKLgoJb3Bl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ATEKEAoFc3RhdGUSB2V4cGlyZWQSCQkAAAAAAAAAACInCggKA29yZxIBMQoQCgVzdGF0ZRIHcGVuZGluZxIJCQAAAAAAAAAAeAotZ3JhZmFuYV9hbGVydGluZ19zaWxlbmNlc19nY19kdXJhdGlvbl9zZWNvbmRzEjZEdXJhdGlvbiBvZiB0aGUgbGFzdCBzaWxlbmNlIGdhcmJhZ2UgY29sbGVjdGlvbiBjeWNsZS4YAiINIgsIABEAAAAAAAAAAJABCjpncmFmYW5hX2FsZXJ0aW5nX3NpbGVuY2VzX2dvc3NpcF9tZXNzYWdlc19wcm9wYWdhdGVkX3RvdGFsEkNOdW1iZXIgb2YgcmVjZWl2ZWQgZ29zc2lwIG1lc3NhZ2VzIHRoYXQgaGF2ZSBiZWVuIGZ1cnRoZXIgZ29zc2lwZWQuGAAiCxoJCQAAAAAAAAAAYQonZ3JhZmFuYV9hbGVydGluZ19zaWxlbmNlc19xdWVyaWVzX3RvdGFsEidIb3cgbWFueSBzaWxlbmNlIHF1ZXJpZXMgd2VyZSByZWNlaXZlZC4YACILGgkJAAAAAADgcUCHAgowZ3JhZmFuYV9hbGVydGluZ19zaWxlbmNlc19xdWVyeV9kdXJhdGlvbl9zZWNvbmRzEiVEdXJhdGlvbiBvZiBzaWxlbmNlIHF1ZXJ5IGV2YWx1YXRpb24uGAQiqQE6pgEIngIROblP9uW4Qj8aDAieAhF7FK5H4Xp0PxoMCJ4CEXsUrkfheoQ/GgwIngIRmpmZmZmZmT8aDAieAhGamZmZmZmpPxoMCJ4CEZqZmZmZmbk/GgwIngIRAAAAAAAA0D8aDAieAhEAAAAAAADgPxoMCJ4CEQAAAAAAAPA/GgwIngIRAAAAAAAABEAaDAieAhEAAAAAAAAUQBoMCJ4CEQAAAAAAACRAcQosZ3JhZmFuYV9hbGVydGluZ19zaWxlbmNlc19xdWVyeV9lcnJvcnNfdG90YWwSMkhvdyBtYW55IHNpbGVuY2UgcmVjZWl2ZWQgcXVlcmllcyBkaWQgbm90IHN1Y2NlZWQuGAAiCxoJCQAAAAAAAAAAbgozZ3JhZmFuYV9hbGVydGluZ19zaWxlbmNlc19zbmFwc2hvdF9kdXJhdGlvbl9zZWNvbmRzEiZEdXJhdGlvbiBvZiB0aGUgbGFzdCBzaWxlbmNlIHNuYXBzaG90LhgCIg0iCwgAEQAAAAAAAAAAawotZ3JhZmFuYV9hbGVydGluZ19zaWxlbmNlc19zbmFwc2hvdF9zaXplX2J5dGVzEitTaXplIG9mIHRoZSBsYXN0IHNpbGVuY2Ugc25hcHNob3QgaW4gYnl0ZXMuGAEiCxIJCQAAAAAAAAAA0gEKM2dyYWZhbmFfYWxlcnRpbmdfc3RhdGVfY2FsY3VsYXRpb25fZHVyYXRpb25fc2Vjb25kcxIuVGhlIGR1cmF0aW9uIG9mIGNhbGN1bGF0aW9uIG9mIGEgc2luZ2xlIHN0YXRlLhgEImk6ZwgAEQAAAAAAAAAAGgsIABF7FK5H4XqEPxoLCAARmpmZmZmZuT8aCwgAEQAAAAAAAPA/GgsIABEAAAAAAAAAQBoLCAARAAAAAAAAFEAaCwgAEQAAAAAAACRAegwIt42ExAYQjfjY5ALvAQoxZ3JhZmFuYV9hbGVydGluZ19zdGF0ZV9mdWxsX3N5bmNfZHVyYXRpb25fc2Vjb25kcxJAVGhlIGR1cmF0aW9uIG9mIGZ1bGx5IHN5bmNocm9uaXppbmcgdGhlIHN0YXRlIHdpdGggdGhlIGRhdGFiYXNlLhgEInY6dAgAEQAAAAAAAAAAGgsIABF7FK5H4XqEPxoLCAARmpmZmZmZuT8aCwgAEQAAAAAAAPA/GgsIABEAAAAAAAAAQBoLCAARAAAAAAAAFEAaCwgAEQAAAAAAACRAGgsIABEAAAAAAABOQHoMCLeNhMQGEMe/2eQCcQojZ3JhZmFuYV9hbGVydGluZ19zdGF0ZV9oaXN0b3J5X2luZm8SKkluZm9ybWF0aW9uIGFib3V0IHRoZSBzdGF0ZSBoaXN0b3J5IHN0b3JlLhgBIhwKDwoHYmFja2VuZBIEbG9raRIJCQAAAAAAAPA/nwQKN2dyYWZhbmFfYWxlcnRpbmdfc3RhdGVfaGlzdG9yeV9yZXF1ZXN0X2R1cmF0aW9uX3NlY29uZHMSYUhpc3RvZ3JhbSBvZiByZXF1ZXN0IGR1cmF0aW9ucyB0byB0aGUgc3RhdGUgaGlzdG9yeSBzdG9yZS4gT25seSB2YWxpZCB3aGVuIHVzaW5nIGV4dGVybmFsIHN0b3Jlcy4YBCL+AgokCglvcGVyYXRpb24SF0dFVCAvbG9raS9hcGkvdjEvbGFiZWxzChIKC3N0YXR1c19jb2RlEgMyMDA6wQIIAREsfWcC5bmvPxoLCAARexSuR+F6dD8aCwgAEXsUrkfheoQ/GgsIABGamZmZmZmZPxoLCAARmpmZmZmZqT8afggBEZqZmZmZmbk/GnEKLAoIdHJhY2VfaWQSIDk0YjExYWRhY2VjYTk0NTY3ZTY3ZWE3ZjY3Y2IyMDNmCisKB3RyYWNlSUQSIDk0YjExYWRhY2VjYTk0NTY3ZTY3ZWE3ZjY3Y2IyMDNmESx9ZwLlua8/GgsIuI2ExAYQqIXtOhoLCAERAAAAAAAA0D8aCwgBEQAAAAAAAOA/GgsIAREAAAAAAADwPxoLCAERAAAAAAAABEAaCwgBEQAAAAAAABRAGgsIAREAAAAAAAAkQBoLCAERAAAAAAAAOUAaCwgBEQAAAAAAAElAGgsIAREAAAAAAABZQHoLCLiNhMQGEP2d7DrBAQoxZ3JhZmFuYV9hbGVydGluZ19zdGF0ZV9oaXN0b3J5X3dyaXRlc19ieXRlc190b3RhbBJvVGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyBzZW50IHdpdGhpbiBhIGJhdGNoIHRvIHRoZSBzdGF0ZSBoaXN0b3J5IHN0b3JlLiBPbmx5IHZhbGlkIHdoZW4gdXNpbmcgdGhlIExva2kgc3RvcmUuGAAiGRoXCQAAAAAAAAAAGgwIt42ExAYQr6Hu5AJpCihncmFmYW5hX2FsZXJ0aW5nX3RpY2tlcl9pbnRlcnZhbF9zZWNvbmRzEi5JbnRlcnZhbCBhdCB3aGljaCB0aGUgdGlja2VyIGlzIG1lYW50IHRvIHRpY2suGAEiCxIJCQAAAAAAAAAAfgo8Z3JhZmFuYV9hbGVydGluZ190aWNrZXJfbGFzdF9jb25zdW1lZF90aWNrX3RpbWVzdGFtcF9zZWNvbmRzEi9UaW1lc3RhbXAgb2YgdGhlIGxhc3QgY29uc3VtZWQgdGljayBpbiBzZWNvbmRzLhgBIgsSCQkAAAAAAAAAAIIBCjNncmFmYW5hX2FsZXJ0aW5nX3RpY2tlcl9uZXh0X3RpY2tfdGltZXN0YW1wX3NlY29uZHMSPFRpbWVzdGFtcCBvZiB0aGUgbmV4dCB0aWNrIGluIHNlY29uZHMgYmVmb3JlIGl0IGlzIGNvbnN1bWVkLhgBIgsSCQkAAAAAAAAAAMQBCjRncmFmYW5hX2Fubm90YXRpb25zX3N0YXRlX2hpc3Rvcnlfd3JpdGVzX2J5dGVzX3RvdGFsEm9UaGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHNlbnQgd2l0aGluIGEgYmF0Y2ggdG8gdGhlIHN0YXRlIGhpc3Rvcnkgc3RvcmUuIE9ubHkgdmFsaWQgd2hlbiB1c2luZyB0aGUgTG9raSBzdG9yZS4YACIZGhcJAAAAAAAAAAAaDAi3jYTEBhC82JTQAmMKJGdyYWZhbmFfYXBpX2FkbWluX3VzZXJfY3JlYXRlZF90b3RhbBIeYXBpIGFkbWluIHVzZXIgY3JlYXRlZCBjb3VudGVyGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQ6aWXzwOnAQomZ3JhZmFuYV9hcGlfZGFzaGJvYXJkX2dldF9taWxsaXNlY29uZHMSInN1bW1hcnkgZm9yIGRhc2hib2FyZCBnZXQgZHVyYXRpb24YAiJXIlUIABEAAAAAAAAAABoSCQAAAAAAAOA/EQEAAAAAAPh/GhIJzczMzMzM7D8RAQAAAAAA+H8aEgmuR+F6FK7vPxEBAAAAAAD4fyIMCJONhMQGELrylc8DqQEKJ2dyYWZhbmFfYXBpX2Rhc2hib2FyZF9zYXZlX21pbGxpc2Vjb25kcxIjc3VtbWFyeSBmb3IgZGFzaGJvYXJkIHNhdmUgZHVyYXRpb24YAiJXIlUIABEAAAAAAAAAABoSCQAAAAAAAOA/EQEAAAAAAPh/GhIJzczMzMzM7D8RAQAAAAAA+H8aEgmuR+F6FK7vPxEBAAAAAAD4fyIMCJONhMQGENSClc8DrQEKKWdyYWZhbmFfYXBpX2Rhc2hib2FyZF9zZWFyY2hfbWlsbGlzZWNvbmRzEiVzdW1tYXJ5IGZvciBkYXNoYm9hcmQgc2VhcmNoIGR1cmF0aW9uGAIiVyJVCAARAAAAAAAAAAAaEgkAAAAAAADgPxEBAAAAAAD4fxoSCc3MzMzMzOw/EQEAAAAAAPh/GhIJrkfhehSu7z8RAQAAAAAA+H8iDAiTjYTEBhDWnZfPA2cKK2dyYWZhbmFfYXBpX2Rhc2hib2FyZF9zbmFwc2hvdF9jcmVhdGVfdG90YWwSG2Rhc2hib2FyZCBzbmFwc2hvdHMgY3JlYXRlZBgAIhkaFwkAAAAAAAAAABoMCJONhMQGEMrXl88DcgotZ3JhZmFuYV9hcGlfZGFzaGJvYXJkX3NuYXBzaG90X2V4dGVybmFsX3RvdGFsEiRleHRlcm5hbCBkYXNoYm9hcmQgc25hcHNob3RzIGNyZWF0ZWQYACIZGhcJAAAAAAAAAAAaDAiTjYTEBhDI4JfPA1oKKGdyYWZhbmFfYXBpX2Rhc2hib2FyZF9zbmFwc2hvdF9nZXRfdG90YWwSEWxvYWRlZCBkYXNoYm9hcmRzGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQsumXzwOzAQouZ3JhZmFuYV9hcGlfZGF0YXByb3h5X3JlcXVlc3RfYWxsX21pbGxpc2Vjb25kcxImc3VtbWFyeSBmb3IgZGF0YXByb3h5IHJlcXVlc3QgZHVyYXRpb24YAiJXIlUIABEAAAAAAAAAABoSCQAAAAAAAOA/EQEAAAAAAPh/GhIJzczMzMzM7D8RAQAAAAAA+H8aEgmuR+F6FK7vPxEBAAAAAAD4fyIMCJONhMQGEM6ems8DVQodZ3JhZmFuYV9hcGlfbG9naW5fb2F1dGhfdG90YWwSF2FwaSBsb2dpbiBvYXV0aCBjb3VudGVyGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQ0MCXzwNTChxncmFmYW5hX2FwaV9sb2dpbl9wb3N0X3RvdGFsEhZhcGkgbG9naW4gcG9zdCBjb3VudGVyGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQ0LOXzwNTChxncmFmYW5hX2FwaV9sb2dpbl9zYW1sX3RvdGFsEhZhcGkgbG9naW4gc2FtbCBjb3VudGVyGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQ5ceXzwNeCilncmFmYW5hX2FwaV9tb2RlbHNfZGFzaGJvYXJkX2luc2VydF90b3RhbBIUZGFzaGJvYXJkcyBpbnNlcnRlZCAYACIZGhcJAAAAAAAA8D8aDAiTjYTEBhDi8pfPA1QKHGdyYWZhbmFfYXBpX29yZ19jcmVhdGVfdG90YWwSF2FwaSBvcmcgY3JlYXRlZCBjb3VudGVyGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQ0c+XzwPjAQohZ3JhZmFuYV9hcGlfcmVzcG9uc2Vfc3RhdHVzX3RvdGFsEhhhcGkgaHR0cCByZXNwb25zZSBzdGF0dXMYACImCgsKBGNvZGUSAzIwMBoXCQAAAAAAADVAGgwIk42ExAYQr/GSzwMiJgoLCgRjb2RlEgM0MDQaFwkAAAAAAAAAABoMCJONhMQGENb7ks8DIiYKCwoEY29kZRIDNTAwGhcJAAAAAAAAAAAaDAiTjYTEBhC0g5PPAyIqCg8KBGNvZGUSB3Vua25vd24aFwkAAAAAAAAAABoMCJONhMQGEO2Lk88DdQonZ3JhZmFuYV9hcGlfdXNlcl9zaWdudXBfY29tcGxldGVkX3RvdGFsEi1hbW91bnQgb2YgdXNlcnMgd2hvIGNvbXBsZXRlZCB0aGUgc2lnbnVwIGZsb3cYACIZGhcJAAAAAAAAAAAaDAiTjYTEBhD975PPA2oKJGdyYWZhbmFfYXBpX3VzZXJfc2lnbnVwX2ludml0ZV90b3RhbBIlYW1vdW50IG9mIHVzZXJzIHdobyBoYXZlIGJlZW4gaW52aXRlZBgAIhkaFwkAAAAAAAAAABoMCJONhMQGEN/8k88DcQolZ3JhZmFuYV9hcGlfdXNlcl9zaWdudXBfc3RhcnRlZF90b3RhbBIrYW1vdW50IG9mIHVzZXJzIHdobyBzdGFydGVkIHRoZSBzaWdudXAgZmxvdxgAIhkaFwkAAAAAAAAAABoMCJONhMQGEPTkk88DjAEKI2dyYWZhbmFfYXBpc2VydmVyX2F1ZGl0X2V2ZW50X3RvdGFsEkhbQUxQSEFdIENvdW50ZXIgb2YgYXVkaXQgZXZlbnRzIGdlbmVyYXRlZCBhbmQgc2VudCB0byB0aGUgYXVkaXQgYmFja2VuZC4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCT4YK8A6gBCi9ncmFmYW5hX2FwaXNlcnZlcl9hdWRpdF9yZXF1ZXN0c19yZWplY3RlZF90b3RhbBJYW0FMUEhBXSBDb3VudGVyIG9mIGFwaXNlcnZlciByZXF1ZXN0cyByZWplY3RlZCBkdWUgdG8gYW4gZXJyb3IgaW4gYXVkaXQgbG9nZ2luZyBiYWNrZW5kLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGENqXirwD8wIKN2dyYWZhbmFfYXBpc2VydmVyX2NsaWVudF9jZXJ0aWZpY2F0ZV9leHBpcmF0aW9uX3NlY29uZHMSYVtBTFBIQV0gRGlzdHJpYnV0aW9uIG9mIHRoZSByZW1haW5pbmcgbGlmZXRpbWUgb24gdGhlIGNlcnRpZmljYXRlIHVzZWQgdG8gYXV0aGVudGljYXRlIGEgcmVxdWVzdC4YBCLSATrPAQgAEQAAAAAAAAAAGgsIABEAAAAAAAAAABoLCAARAAAAAAAgnEAaCwgAEQAAAAAAIKxAGgsIABEAAAAAACC8QBoLCAARAAAAAAAY1UAaCwgAEQAAAAAAGOVAGgsIABEAAAAAABj1QBoLCAARAAAAAAAYBUEaCwgAEQAAAAAAGBVBGgsIABEAAAAAAHUiQRoLCAARAAAAAIDGQ0EaCwgAEQAAAADAqV1BGgsIABEAAAAAwKltQRoLCAARAAAAAMCpfUF6DAiTjYTEBhD9//a7A/IBCitncmFmYW5hX2FwaXNlcnZlcl9jdXJyZW50X2luZmxpZ2h0X3JlcXVlc3RzEnNbU1RBQkxFXSBNYXhpbWFsIG51bWJlciBvZiBjdXJyZW50bHkgdXNlZCBpbmZsaWdodCByZXF1ZXN0IGxpbWl0IG9mIHRoaXMgYXBpc2VydmVyIHBlciByZXF1ZXN0IGtpbmQgaW4gbGFzdCBzZWNvbmQuGAEiJQoYCgxyZXF1ZXN0X2tpbmQSCG11dGF0aW5nEgkJAAAAAAAAAAAiJQoYCgxyZXF1ZXN0X2tpbmQSCHJlYWRPbmx5EgkJAAAAAAAAAACUAQo8Z3JhZmFuYV9hcGlzZXJ2ZXJfZW52ZWxvcGVfZW5jcnlwdGlvbl9kZWtfY2FjaGVfZmlsbF9wZXJjZW50EkVbQUxQSEFdIFBlcmNlbnQgb2YgdGhlIGNhY2hlIHNsb3RzIGN1cnJlbnRseSBvY2N1cGllZCBieSBjYWNoZWQgREVLcy4YASILEgkJAAAAAAAAAACTBwo8Z3JhZmFuYV9hcGlzZXJ2ZXJfZmxvd2NvbnRyb2xfcmVhZF92c193cml0ZV9jdXJyZW50X3JlcXVlc3RzEqwBRVhQRVJJTUVOVEFMOiBbQUxQSEFdIE9ic2VydmF0aW9ucywgYXQgdGhlIGVuZCBvZiBldmVyeSBuYW5vc2Vjb25kLCBvZiB0aGUgbnVtYmVyIG9mIHJlcXVlc3RzIChhcyBhIGZyYWN0aW9uIG9mIHRoZSByZWxldmFudCBsaW1pdCkgd2FpdGluZyBvciBpbiByZWd1bGFyIHN0YWdlIG9mIGV4ZWN1dGlvbhgEIs8CChIKBXBoYXNlEglleGVjdXRpbmcKGAoMcmVxdWVzdF9raW5kEghtdXRhdGluZzqeAgiI/fa80goRH4XrkUY4V0EaEAiTq6vVzwoRAAAAAAAAAAAaEAiTq6vVzwoR/Knx0k1iUD8aEAiKwsaX0goRexSuR+F6hD8aEAiI/fa80goRmpmZmZmZuT8aEAiI/fa80goRmpmZmZmZyT8aEAiI/fa80goRMzMzMzMz0z8aEAiI/fa80goRmpmZmZmZ2T8aEAiI/fa80goRAAAAAAAA4D8aEAiI/fa80goRMzMzMzMz4z8aEAiI/fa80goRZmZmZmZm5j8aEAiI/fa80goRmpmZmZmZ6T8aEAiI/fa80goRzczMzMzM7D8aEAiI/fa80goRZmZmZmZm7j8aEAiI/fa80goRrkfhehSu7z8aEAiI/fa80goRAAAAAAAA8D8izwIKEgoFcGhhc2USCWV4ZWN1dGluZwoYCgxyZXF1ZXN0X2tpbmQSCHJlYWRPbmx5Op4CCJzd/73SChFI4Xp0b9MyQRoQCL+C7vHQChEAAAAAAAAAABoQCL+C7vHQChH8qfHSTWJQPxoQCJzd/73SChF7FK5H4XqEPxoQCJzd/73SChGamZmZmZm5PxoQCJzd/73SChGamZmZmZnJPxoQCJzd/73SChEzMzMzMzPTPxoQCJzd/73SChGamZmZmZnZPxoQCJzd/73SChEAAAAAAADgPxoQCJzd/73SChEzMzMzMzPjPxoQCJzd/73SChFmZmZmZmbmPxoQCJzd/73SChGamZmZmZnpPxoQCJzd/73SChHNzMzMzMzsPxoQCJzd/73SChFmZmZmZmbuPxoQCJzd/73SChGuR+F6FK7vPxoQCJzd/73SChEAAAAAAADwP58BCixncmFmYW5hX2FwaXNlcnZlcl9mbG93Y29udHJvbF9zZWF0X2ZhaXJfZnJhYxJgW0FMUEhBXSBGYWlyIGZyYWN0aW9uIG9mIHNlcnZlcidzIGNvbmN1cnJlbmN5IHRvIGFsbG9jYXRlIHRvIGVhY2ggcHJpb3JpdHkgbGV2ZWwgdGhhdCBjYW4gdXNlIGl0GAEiCxIJCQAAAAAAAAAAvgIKOmdyYWZhbmFfYXBpc2VydmVyX2t1YmVfYWdncmVnYXRvcl94NTA5X2luc2VjdXJlX3NoYTFfdG90YWwS4gFbQUxQSEFdIENvdW50cyB0aGUgbnVtYmVyIG9mIHJlcXVlc3RzIHRvIHNlcnZlcnMgd2l0aCBpbnNlY3VyZSBTSEExIHNpZ25hdHVyZXMgaW4gdGhlaXIgc2VydmluZyBjZXJ0aWZpY2F0ZSBPUiB0aGUgbnVtYmVyIG9mIGNvbm5lY3Rpb24gZmFpbHVyZXMgZHVlIHRvIHRoZSBpbnNlY3VyZSBTSEExIHNpZ25hdHVyZXMgKGVpdGhlci9vciwgYmFzZWQgb24gdGhlIHJ1bnRpbWUgZW52aXJvbm1lbnQpGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQ4vL8zgPKAgo4Z3JhZmFuYV9hcGlzZXJ2ZXJfa3ViZV9hZ2dyZWdhdG9yX3g1MDlfbWlzc2luZ19zYW5fdG90YWwS8AFbQUxQSEFdIENvdW50cyB0aGUgbnVtYmVyIG9mIHJlcXVlc3RzIHRvIHNlcnZlcnMgbWlzc2luZyBTQU4gZXh0ZW5zaW9uIGluIHRoZWlyIHNlcnZpbmcgY2VydGlmaWNhdGUgT1IgdGhlIG51bWJlciBvZiBjb25uZWN0aW9uIGZhaWx1cmVzIGR1ZSB0byB0aGUgbGFjayBvZiB4NTA5IGNlcnRpZmljYXRlIFNBTiBleHRlbnNpb24gbWlzc2luZyAoZWl0aGVyL29yLCBiYXNlZCBvbiB0aGUgcnVudGltZSBlbnZpcm9ubWVudCkYACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCg0fvOA5oECiZncmFmYW5hX2FwaXNlcnZlcl9sb25ncnVubmluZ19yZXF1ZXN0cxKmAVtTVEFCTEVdIEdhdWdlIG9mIGFsbCBhY3RpdmUgbG9uZy1ydW5uaW5nIGFwaXNlcnZlciByZXF1ZXN0cyBicm9rZW4gb3V0IGJ5IHZlcmIsIGdyb3VwLCB2ZXJzaW9uLCByZXNvdXJjZSwgc2NvcGUgYW5kIGNvbXBvbmVudC4gTm90IGFsbCByZXF1ZXN0cyBhcmUgdHJhY2tlZCB0aGlzIHdheS4YASKeAQoWCgljb21wb25lbnQSCWFwaXNlcnZlcgofCgVncm91cBIWYXBpcmVnaXN0cmF0aW9uLms4cy5pbwoXCghy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cnZlciByZXF1ZXN0cyBicm9rZW4gb3V0IGZvciBlYWNoIHZlcmIsIGRyeSBydW4gdmFsdWUsIGdyb3VwLCB2ZXJzaW9uLCByZXNvdXJjZSwgc2NvcGUsIGNvbXBvbmVudCwgYW5kIEhUVFAgcmVzcG9uc2UgY29kZS4YACLFAQoLCgRjb2RlEgMyMDAKFgoJY29tcG9uZW50EglhcGlzZXJ2ZXIKCwoHZHJ5X3J1bhIAChwKBWdyb3VwEhNhZHZpc29yLmdyYWZhbmEuYXBwChIKCHJlc291cmNlEgZjaGVja3MKEgoFc2NvcGUSCW5hbWVzcGFjZQoPCgtzdWJyZXNvdXJjZRIACgwKBHZlcmISBExJU1QKEwoHdmVyc2lvbhIIdjBhbHBoYTEaFwkAAAAAAADwPxoMCLmNhMQGEMf1h58BIscBCgsKBGNvZGUSAzIwMAoWCgljb21wb25lbnQSCWFwaXNlcnZlcgoLCgdkcnlfcnVuEgAKHAoFZ3JvdXASE2Fkdmlzb3IuZ3JhZmFuYS5hcHAKFgoIcmVzb3VyY2USCmNoZWNrdHlwZXMKEQoFc2NvcGUSCHJlc291cmNlCg8KC3N1YnJlc291cmNlEgAKCwoEdmVyYhIDR0VUChMKB3ZlcnNpb24SCHYwYWxwaGExGhcJAAAAAAAAKEAaDAi5jYTEBhDsya2rASLHAQoLCgRjb2RlEgMyMDAKFgoJY29tcG9uZW50EglhcGlzZXJ2ZXIKCwoHZHJ5X3J1bhIAChwKBWdyb3VwEhNhZHZpc29yLmdyYWZhbmEuYXBwChYKCHJlc291cmNlEgpjaGVja3R5cGVzChEKBXNjb3BlEghyZXNvdXJjZQoPCgtzdWJyZXNvdXJjZRIACgsKBHZlcmISA1BVVAoTCgd2ZXJzaW9uEgh2MGFscGhhMRoXCQAAAAAAABhAGgwIuY2ExAYQm4PytAEixQEKCwoEY29kZRIDMjAwChYKCWNvbXBvbmVudBIJYXBpc2VydmVyCgsKB2RyeV9ydW4SAAofCgVncm91cBIWYXBpcmVnaXN0cmF0aW9uLms4cy5pbwoXCghyZXNvdXJjZRILYXBpc2VydmljZXMKEAoFc2NvcGUSB2NsdXN0ZXIKDwoLc3VicmVzb3VyY2USAAoMCgR2ZXJiEgRMSVNUCg0KB3ZlcnNpb24SAnYxGhcJAAAAAAAA8D8aDAi5jYTEBhCR5OiPASLLAQoLCgRjb2RlEgMyMDAKFgoJY29tcG9uZW50EglhcGlzZXJ2ZXIKCwoHZHJ5X3J1bhIACh8KBWdyb3VwEhZhcGlyZWdpc3RyYXRpb24uazhzLmlvChcKCHJlc291cmNlEgthcGlzZXJ2aWNlcwoRCgVzY29wZRIIcmVzb3VyY2UKFQoLc3VicmVzb3VyY2USBnN0YXR1cwoLCgR2ZXJiEgNQVVQKDQoHdmVyc2lvbhICdjEaFwkAAAAAAAAiQBoMCLmNhMQGEPX23swBIssBCgsKBGNvZGUSAzIwMAoWCgljb21wb25lbnQSCWFwaXNlcnZlcgoLCgdkcnlfcnVuEgAKHgoFZ3JvdXASFWRhc2hib2FyZC5ncmFmYW5hLmFwcAoWCghyZXNvdXJjZRIKZGFzaGJvYXJkcwoRCgVzY29wZRIIcmVzb3VyY2UKDwoLc3VicmVzb3VyY2USAAoOCgR2ZXJiEgZERUxFVEUKEwoHdmVyc2lvbhIIdjBhbHBoYTEaFgkAAAAAAADwPxoLCLqNhMQGEMarkjMiyQEKCwoEY29kZRIDMjAwChYKCWNvbXBvbmVudBIJYXBpc2VydmVyCgsKB2RyeV9ydW4SAAoeCgVncm91cBIVZGFzaGJvYXJkLmdyYWZhbmEuYXBwChYKCHJlc291cmNlEgpkYXNoYm9hcmRzChEKBXNjb3BlEghyZXNvdXJjZQoPCgtzdWJyZXNvdXJjZRIACgsKBHZlcmISA0dFVAoTCgd2ZXJzaW9uEgh2MGFscGhhMRoXCQAAAAAAAC5AGgwIuY2ExAYQgNXplQEixAEKCwoEY29kZRIDMjAwChYKCWNvbXBvbmVudBIJYXBpc2VydmVyCgsKB2RyeV9ydW4SAAobCgVncm91cBISZm9sZGVyLmdyYWZhbmEuYXBwChMKCHJlc291cmNlEgdmb2xkZXJzChIKBXNjb3BlEgluYW1lc3BhY2UKDwoLc3VicmVzb3VyY2USAAoMCgR2ZXJiEgRMSVNUChIKB3ZlcnNpb24SB3YxYmV0YTEaFwkAAAAAAADwPxoMCLmNhMQGEM3Ti6EBIsIBCgsKBGNvZGUSAzIwMAoWCgljb21wb25lbnQSCWFwaXNlcnZlcgoLCgdkcnlfcnVuEgAKGwoFZ3JvdXASEmZvbGRlci5ncmFmYW5hLmFwcAoTCghyZXNvdXJjZRIHZm9sZGVycwoRCgVzY29wZRIIcmVzb3VyY2UKDwoLc3VicmVzb3VyY2USAAoLCgR2ZXJiEgNHRVQKEgoHdmVyc2lvbhIHdjFiZXRhMRoXCQAAAAAAACZAGgwIuo2ExAYQ94OrowMiygEKCwoEY29kZRIDMjAwChYKCWNvbXBvbmVudBIJYXBpc2VydmVyCgsKB2RyeV9ydW4SAAocCgVncm91cBITc2VydmljZS5ncmFmYW5hLmFwcAoZCghyZXNvdXJjZRINZXh0ZXJuYWxuYW1lcwoQCgVzY29wZRIHY2x1c3RlcgoPCgtzdWJyZXNvdXJjZRIACgwKBHZlcmISBExJU1QKEwoHdmVyc2lvbhIIdjBhbHBoYTEaFwkAAAAAAADwPxoMCLmNhMQGEIjei5ABIssBCgsKBGNvZGUSAzIwMAoWCgljb21wb25lbnQSCWFwaXNlcnZlcgoLCgdkcnlfcnVuEgAKHAoFZ3JvdXASE3NlcnZpY2UuZ3JhZmFuYS5hcHAKGQoIcmVzb3VyY2USDWV4dGVybmFsbmFtZXMKEAoFc2NvcGUSB2NsdXN0ZXIKDwoLc3VicmVzb3VyY2USAAoNCgR2ZXJiEgVXQVRDSAoTCgd2ZXJzaW9uEgh2MGFscGhhMRoXCQAAAAAAAPA/GgwI/o+ExAYQ5ZLPkAEixgEKCwoEY29kZRIDMjAxChYKCWNvbXBvbmVudBIJYXBpc2VydmVyCgsKB2RyeV9ydW4SAAofCgVncm91cBIWYXBpcmVnaXN0cmF0aW9uLms4cy5pbwoXCghyZXNvdXJjZRILYXBpc2VydmljZXMKEQoFc2NvcGUSCHJlc291cmNlCg8KC3N1YnJlc291cmNlEgAKDAoEdmVyYhIEUE9TVAoNCgd2ZXJzaW9uEgJ2MRoXCQAAAAAAADVAGgwIuY2ExAYQkfCuwAEiyQEKCwoEY29kZRIDMjAxChYKCWNvbXBvbmVudBIJYXBpc2VydmVyCgsKB2RyeV9ydW4SAAoeCgVncm91cBIVZGFzaGJvYXJkLmdyYWZhbmEuYXBwChYKCHJlc291cmNlEgpkYXNoYm9hcmRzChEKBXNjb3BlEghyZXNvdXJjZQoPCgtzdWJyZXNvdXJjZRIACgsKBHZlcmISA1BVVAoTCgd2ZXJzaW9uEgh2MGFscGhhMRoXCQAAAAAAAPA/GgwIuY2ExAYQyovc/gEizAEKCwoEY29kZRIDMjAxChYKCWNvbXBvbmVudBIJYXBpc2VydmVyCgsKB2RyeV9ydW4SAAocCgVncm91cBITc2VydmljZS5ncmFmYW5hLmFwcAoZCghyZXNvdXJjZRINZXh0ZXJuYWxuYW1lcwoRCgVzY29wZRIIcmVzb3VyY2UKDwoLc3VicmVzb3VyY2USAAoNCgR2ZXJiEgVBUFBMWQoTCgd2ZXJzaW9uEgh2MGFscGhhMRoXCQAAAAAAABhAGgwIuY2ExAYQpNuSxwEiyAEKCwoEY29kZRIDNDA5ChYKCWNvbXBvbmVudBIJYXBpc2VydmVyCgsKB2RyeV9ydW4SAAocCgVncm91cBITYWR2aXNvci5ncmFmYW5hLmFwcAoWCghyZXNvdXJjZRIKY2hlY2t0eXBlcwoRCgVzY29wZRIIcmVzb3VyY2UKDwoLc3VicmVzb3VyY2USAAoMCgR2ZXJiEgRQT1NUChMKB3ZlcnNpb24SCHYwYWxwaGExGhcJAAAAAAAAGEAaDAi5jYTEBhCGpu2lASLLAQoLCgRjb2RlEgM0MDkKFgoJY29tcG9uZW50EglhcGlzZXJ2ZXIKCwoHZHJ5X3J1bhIACh8KBWdyb3VwEhZhcGlyZWdpc3RyYXRpb24uazhzLmlvChcKCHJlc291cmNlEgthcGlzZXJ2aWNlcwoRCgVzY29wZRIIcmVzb3VyY2UKFQoLc3VicmVzb3VyY2USBnN0YXR1cwoLCgR2ZXJiEgNQVVQKDQoHdmVyc2lvbhICdjEaFwkAAAAAAAAQQBoMCLmNhMQGEOThifcB7xkKIGdyYWZhbmFfYXBpc2VydmVyX3Jlc3BvbnNlX3NpemVzEndbU1RBQkxFXSBSZXNwb25zZSBzaXplIGRpc3RyaWJ1dGlvbiBpbiBieXRlcyBmb3IgZWFjaCBncm91cCwgdmVyc2lvbiwgdmVyYiwgcmVzb3VyY2UsIHN1YnJlc291cmNlLCBzY29wZSBhbmQgY29tcG9uZW50LhgEIu0CChYKCWNvbXBvbmVudBIJYXBpc2VydmVyChwKBWdyb3VwEhNhZHZpc29yLmdyYWZhbmEuYXBwChIKCHJlc291cmNl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uY2ExAYQsNqNkAEi8wIKFgoJY29tcG9uZW50EglhcGlzZXJ2ZXIKHAoFZ3JvdXASE3NlcnZpY2UuZ3JhZmFuYS5hcHAKGQoIcmVzb3VyY2USDWV4dGVybmFsbmFtZXMKEAoFc2NvcGUSB2NsdXN0ZXIKDwoLc3VicmVzb3VyY2USAAoNCgR2ZXJiEgVXQVRDSAoTCgd2ZXJzaW9uEgh2MGFscGhhMTrYAQgBEQAAAAAAVK5AGgsIABEAAAAAAECPQBpvCAERAAAAAACIw0AaYgobCgdzcGFuX2lkEhBkZDkxZmZjMzExOGE5ZjRiCiwKCHRyYWNlX2lkEiBlYTk5OTVhYjJhNjJiN2RjMWYxZjBkNjQwZmNlODc2MREAAAAAAFSuQBoMCP6PhMQGEPzC0ZABGgsIAREAAAAAAGr4QBoLCAERAAAAAICELkEaCwgBEQAAAADQEmNBGgsIAREAAAAAhNeXQRoLCAERAAAAAGXNzUF6DAj+j4TEBhDitNGQAd4KCiNncmFmYW5hX2FwaXNlcnZlcl9zZWxmcmVxdWVzdF90b3RhbBJiW0FMUEhBXSBDb3VudGVyIG9mIGFwaXNlcnZlciBzZWxmLXJlcXVlc3RzIGJyb2tlbiBvdXQgZm9yIGVhY2ggdmVyYiwgQVBJIHJlc291cmNlIGFuZCBzdWJyZXNvdXJjZS4YACJRChcKCHJlc291cmNlEgthcGlzZXJ2aWNlcwoPCgtzdWJyZXNvdXJjZRIACgwKBHZlcmISBExJU1QaFwkAAAAAAADwPxoMCLmNhMQGEN6F6Y8BIlEKFwoIcmVzb3VyY2USC2FwaXNlcnZpY2VzCg8KC3N1YnJlc291cmNlEgAKDAoEdmVyYhIEUE9TVBoXCQAAAAAAADVAGgwIuY2ExAYQi8CvwAEiVgoXCghyZXNvdXJjZRILYXBpc2VydmljZXMKFQoLc3VicmVzb3VyY2USBnN0YXR1cwoLCgR2ZXJiEgNQVVQaFwkAAAAAAAAqQBoMCLmNhMQGEPuS38wBIkwKEgoIcmVzb3VyY2USBmNoZWNrcwoPCgtzdWJyZXNvdXJjZRIACgwKBHZlcmISBExJU1QaFwkAAAAAAADwPxoMCLmNhMQGEPiaiJ8BIk8KFgoIcmVzb3VyY2USCmNoZWNrdHlwZXMKDwoLc3VicmVzb3VyY2USAAoLCgR2ZXJiEgNHRVQaFwkAAAAAAAAoQBoMCLmNhMQGEJ/wrasBIlAKFgoIcmVzb3VyY2USCmNoZWNrdHlwZXMKDwoLc3VicmVzb3VyY2USAAoMCgR2ZXJiEgRQT1NUGhcJAAAAAAAAGEAaDAi5jYTEBhDr0O2lASJPChYKCHJlc291cmNlEgpjaGVja3R5cGVzCg8KC3N1YnJlc291cmNlEgAKCwoEdmVyYhIDUFVUGhcJAAAAAAAAGEAaDAi5jYTEBhDapfK0ASJRChYKCHJlc291cmNlEgpkYXNoYm9hcmRzCg8KC3N1YnJlc291cmNlEgAKDgoEdmVyYhIGREVMRVRFGhYJAAAAAAAA8D8aCwi6jYTEBhD+05IzIk8KFgoIcmVzb3VyY2USCmRhc2hib2FyZHMKDwoLc3VicmVzb3VyY2USAAoLCgR2ZXJiEgNHRVQaFwkAAAAAAAAuQBoMCLmNhMQGEKP36ZUBIk8KFgoIcmVzb3VyY2USCmRhc2hib2FyZHMKDwoLc3VicmVzb3VyY2USAAoLCgR2ZXJiEgNQVVQaFwkAAAAAAADwPxoMCLmNhMQGEN3g3P4BIlQKGQoIcmVzb3VyY2USDWV4dGVybmFsbmFtZXMKDwoLc3VicmVzb3VyY2USAAoNCgR2ZXJiEgVBUFBMWRoXCQAAAAAAABhAGgwIuY2ExAYQq/iSxwEiUwoZCghyZXNvdXJjZRINZXh0ZXJuYWxuYW1lcwoPCgtzdWJyZXNvdXJjZRIACgwKBHZlcmISBExJU1QaFwkAAAAAAADwPxoMCLmNhMQGEPb3i5ABIlQKGQoIcmVzb3VyY2USDWV4dGVybmFsbmFtZXMKDwoLc3VicmVzb3VyY2USAAoNCgR2ZXJiEgVXQVRDSBoXCQAAAAAAAPA/GgwI/o+ExAYQ2cbPkAEiTAoTCghyZXNvdXJjZRIHZm9sZGVycwoPCgtzdWJyZXNvdXJjZRIACgsKBHZlcmISA0dFVBoXCQAAAAAAACZAGgwIuo2ExAYQvbarowMiTQoTCghyZXNvdXJjZRIHZm9sZGVycwoPCgtzdWJyZXNvdXJjZRIACgwKBHZlcmISBExJU1QaFwkAAAAAAADwPxoMCLmNhMQGEJ32i6EB6AIKPmdyYWZhbmFfYXBpc2VydmVyX3N0b3JhZ2VfZGF0YV9rZXlfZ2VuZXJhdGlvbl9kdXJhdGlvbl9zZWNvbmRzEk9bQUxQSEFdIExhdGVuY2llcyBpbiBzZWNvbmRzIG9mIGRhdGEgZW5jcnlwdGlvbiBrZXkoREVLKSBnZW5lcmF0aW9uIG9wZXJhdGlvbnMuGAQi0gE6zwEIABEAAAAAAAAAABoLCAAR8WjjiLX41D4aCwgAEfFo44i1+OQ+GgsIABHxaOOItfj0PhoLCAAR8WjjiLX4BD8aCwgAEfFo44i1+BQ/GgsIABHxaOOItfgkPxoLCAAR8WjjiLX4ND8aCwgAEfFo44i1+EQ/GgsIABHxaOOItfhUPxoLCAAR8WjjiLX4ZD8aCwgAEfFo44i1+HQ/GgsIABHxaOOItfiEPxoLCAAR8WjjiLX4lD8aCwgAEfFo44i1+KQ/egwIk42ExAYQpp+ovAOrAQo8Z3JhZmFuYV9hcGlzZXJ2ZXJfc3RvcmFnZV9kYXRhX2tleV9nZW5lcmF0aW9uX2ZhaWx1cmVzX3RvdGFsEk5bQUxQSEFdIFRvdGFsIG51bWJlciBvZiBmYWlsZWQgZGF0YSBlbmNyeXB0aW9uIGtleShERUspIGdlbmVyYXRpb24gb3BlcmF0aW9ucy4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCqsay8A7IBCkRncmFmYW5hX2FwaXNlcnZlcl9zdG9yYWdlX2VudmVsb3BlX3RyYW5zZm9ybWF0aW9uX2NhY2hlX21pc3Nlc190b3RhbBJNW0FMUEhBXSBUb3RhbCBudW1iZXIgb2YgY2FjaGUgbWlzc2VzIHdoaWxlIGFjY2Vzc2luZyBrZXkgZGVjcnlwdGlvbiBrZXkoS0VLKS4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhDB7qW8A+sKCiFncmFmYW5hX2FwaXNlcnZlcl9zdG9yYWdlX29iamVjdHMSfVtTVEFCTEVdIE51bWJlciBvZiBzdG9yZWQgb2JqZWN0cyBhdCB0aGUgdGltZSBvZiBsYXN0IGNoZWNrIHNwbGl0IGJ5IGtpbmQuIEluIGNhc2Ugb2YgYSBmZXRjaGluZyBlcnJvciwgdGhlIHZhbHVlIHdpbGwgYmUgLTEuGAEiQQo0CghyZXNvdXJjZRIoYW5ub3VuY2VtZW50LWJhbm5lcnMuYmFubmVycy5ncmFmYW5hLmFwcBIJCQAAAAAAAAAAIjsKLgoIcmVzb3VyY2USImFwaXNlcnZpY2VzLmFwaXJlZ2lzdHJhdGlvbi5rOHMuaW8SCQkAAAAAAAAAACIzCiYKCHJlc291cmNlEhpjaGVja3MuYWR2aXNvci5ncmFmYW5hLmFwcBIJCQAAAAAAAAAAIjcKKgoIcmVzb3VyY2USHmNoZWNrdHlwZXMuYWR2aXNvci5ncmFmYW5hLmFwcBIJCQAAAAAAAAAAIjkKLAoIcmVzb3VyY2USIGRhc2hib2FyZHMuZGFzaGJvYXJkLmdyYWZhbmEuYXBwEgkJAAAAAAAAAAAiOgotCghyZXNvdXJjZRIhZXh0ZXJuYWxuYW1lcy5zZXJ2aWNlLmdyYWZhbmEuYXBwEgkJAAAAAAAAAAAiMwomCghyZXNvdXJjZRIaZm9sZGVycy5mb2xkZXIuZ3JhZmFuYS5hcHASCQkAAAAAAAAAACJICjsKCHJlc291cmNlEi9pbnZlc3RpZ2F0aW9uaW5kZXhlcy5pbnZlc3RpZ2F0aW9ucy5ncmFmYW5hLmFwcBIJCQAAAAAAAAAAIkIKNQoIcmVzb3VyY2USKWludmVzdGlnYXRpb25zLmludmVzdGlnYXRpb25zLmdyYWZhbmEuYXBwEgkJAAAAAAAAAAAiPAovCghyZXNvdXJjZRIjbGlicmFyeXBhbmVscy5kYXNoYm9hcmQuZ3JhZmFuYS5hcHASCQkAAAAAAAAAACI3CioKCHJlc291cmNlEh5wbGF5bGlzdHMucGxheWxpc3QuZ3JhZmFuYS5hcHASCQkAAAAAAAAAACJACjMKCHJlc291cmNlEidxdWVyeXRlbXBsYXRlcy5xdWVyeWxpYnJhcnkuZ3JhZmFuYS5hcHASCQkAAAAAAAAAACJFCjgKCHJlc291cmNlEixyZWNlaXZlcnMubm90aWZpY2F0aW9ucy5hbGVydGluZy5ncmFmYW5hLmFwcBIJCQAAAAAAAAAAIjYKKQoIcmVzb3VyY2USHXJlcG9ydHMucmVwb3J0aW5nLmdyYWZhbmEuYXBwEgkJAAAAAAAAAAAiSAo7CghyZXNvdXJjZRIvcm91dGluZ3RyZWVzLm5vdGlmaWNhdGlvbnMuYWxlcnRpbmcuZ3JhZmFuYS5hcHASCQkAAAAAAAAAACJFCjgKCHJlc291cmNlEixzYW5kYm94LXNldHRpbmdzLnNhbmRib3hzZXR0aW5ncy5ncmFmYW5hLmFwcBIJCQAAAAAAAAAAIkoKPQoIcmVzb3VyY2USMXRlbXBsYXRlZ3JvdXBzLm5vdGlmaWNhdGlvbnMuYWxlcnRpbmcuZ3JhZmFuYS5hcHASCQkAAAAAAAAAACJJCjwKCHJlc291cmNlEjB0aW1laW50ZXJ2YWxzLm5vdGlmaWNhdGlvbnMuYWxlcnRpbmcuZ3JhZmFuYS5hcHASCQkAAAAAAAAAACI9CjAKCHJlc291cmNlEiR1c2VyLXN0b3JhZ2UudXNlcnN0b3JhZ2UuZ3JhZmFuYS5hcHASCQkAAAAAAAAAAJQBCixncmFmYW5hX2FwaXNlcnZlcl90bHNfaGFuZHNoYWtlX2Vycm9yc190b3RhbBJIW0FMUEhBXSBOdW1iZXIgb2YgcmVxdWVzdHMgZHJvcHBlZCB3aXRoICdUTFMgaGFuZHNoYWtlIGVycm9yIGZyb20nIGVycm9yGAAiGBoWCQAAAAAAAAAAGgsIuY2ExAYQ98bGBdUBCkJncmFmYW5hX2FwaXNlcnZlcl92YWxpZGF0aW9uX2RlY2xhcmF0aXZlX3ZhbGlkYXRpb25fbWlzbWF0Y2hfdG90YWwScltCRVRBXSBOdW1iZXIgb2YgdGltZXMgZGVjbGFyYXRpdmUgdmFsaWRhdGlvbiByZXN1bHRzIGRpZmZlcmVkIGZyb20gaGFuZHdyaXR0ZW4gdmFsaWRhdGlvbiByZXN1bHRzIGZvciBjb3JlIHR5cGVzLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGEN3r47sDrQEKP2dyYWZhbmFfYXBpc2VydmVyX3ZhbGlkYXRpb25fZGVjbGFyYXRpdmVfdmFsaWRhdGlvbl9wYW5pY190b3RhbBJNW0JFVEFdIE51bWJlciBvZiB0aW1lcyBkZWNsYXJhdGl2ZSB2YWxpZGF0aW9uIGhhcyBwYW5pY2tlZCBkdXJpbmcgdmFsaWRhdGlvbi4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhDPg+a7A58GCiRncmFmYW5hX2FwaXNlcnZlcl93YXRjaF9ldmVudHNfc2l6ZXMSLltBTFBIQV0gV2F0Y2ggZXZlbnQgc2l6ZSBkaXN0cmlidXRpb24gaW4gYnl0ZXMYBCKQAwofCgVncm91cBIWYXBpcmVnaXN0cmF0aW9uLms4cy5pbwoSCgRraW5kEgpBUElTZXJ2aWNlCg0KB3ZlcnNpb24SAnYxOskCCB4RAAAAAMBR1kAabwgbEQAAAAAAAJBAGmIKLAoIdHJhY2VfaWQSIDZiNGM0MTE2ZjQwYmYyMTVkYzVlYzg4ZDIwZDNkMDQ3ChsKB3NwYW5faWQSEDVjZTIxYmU4MTg4MzBjNTMRAAAAAACYjkAaDAi5jYTEBhCUjsKGAhpvCB4RAAAAAAAAoEAaYgosCgh0cmFjZV9pZBIgNmI0YzQxMTZmNDBiZjIxNWRjNWVjODhkMjBkM2QwNDcKGwoHc3Bhbl9pZBIQNWNlMjFiZTgxODgzMGM1MxEAAAAAANiQQBoMCLmNhMQGEJ/hxdgBGgsIHhEAAAAAAACwQBoLCB4RAAAAAAAAwEAaCwgeEQAAAAAAANBAGgsIHhEAAAAAAADgQBoLCB4RAAAAAAAA8EAaCwgeEQAAAAAAAABBegwIuY2ExAYQotuDwgEisQIKHAoFZ3JvdXASE3NlcnZpY2UuZ3JhZmFuYS5hcHAKFAoEa2luZBIMRXh0ZXJuYWxOYW1lChMKB3ZlcnNpb24SCHYwYWxwaGExOuUBCAYRAAAAAAAcrUAabwgGEQAAAAAAAJBAGmIKLAoIdHJhY2VfaWQSIGVhOTk5NWFiMmE2MmI3ZGMxZjFmMGQ2NDBmY2U4NzYxChsKB3NwYW5faWQSEDIwYmUxMGE3MTc2ZjY1NDERAAAAAACIg0AaDAi5jYTEBhC7mZbTARoLCAYRAAAAAAAAoEAaCwgGEQAAAAAAALBAGgsIBhEAAAAAAADAQBoLCAYRAAAAAAAA0EAaCwgGEQAAAAAAAOBAGgsIBhEAAAAAAADwQBoLCAYRAAAAAAAAAEF6DAi5jYTEBhCY+5fIAZsCCiRncmFmYW5hX2FwaXNlcnZlcl93YXRjaF9ldmVudHNfdG90YWwSLltBTFBIQV0gTnVtYmVyIG9mIGV2ZW50cyBzZW50IGluIHdhdGNoIGNsaWVudHMYACJdCh8KBWdyb3VwEhZhcGlyZWdpc3RyYXRpb24uazhzLmlvChIKBGtpbmQSCkFQSVNlcnZpY2UKDQoHdmVyc2lvbhICdjEaFwkAAAAAAAA+QBoMCLmNhMQGEPbAgcIBImIKHAoFZ3JvdXASE3NlcnZpY2UuZ3JhZmFuYS5hcHAKFAoEa2luZBIMRXh0ZXJuYWxOYW1lChMKB3ZlcnNpb24SCHYwYWxwaGExGhcJAAAAAAAAGEAaDAi5jYTEBhDkgJTIAbcCCjNncmFmYW5hX2FwaXNlcnZlcl93ZWJob29rc194NTA5X2luc2VjdXJlX3NoYTFfdG90YWwS4gFbQUxQSEFdIENvdW50cyB0aGUgbnVtYmVyIG9mIHJlcXVlc3RzIHRvIHNlcnZlcnMgd2l0aCBpbnNlY3VyZSBTSEExIHNpZ25hdHVyZXMgaW4gdGhlaXIgc2VydmluZyBjZXJ0aWZpY2F0ZSBPUiB0aGUgbnVtYmVyIG9mIGNvbm5lY3Rpb24gZmFpbHVyZXMgZHVlIHRvIHRoZSBpbnNlY3VyZSBTSEExIHNpZ25hdHVyZXMgKGVpdGhlci9vciwgYmFzZWQgb24gdGhlIHJ1bnRpbWUgZW52aXJvbm1lbnQpGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQ2bPLzgPDAgoxZ3JhZmFuYV9hcGlzZXJ2ZXJfd2ViaG9va3NfeDUwOV9taXNzaW5nX3Nhbl90b3RhbBLwAVtBTFBIQV0gQ291bnRzIHRoZSBudW1iZXIgb2YgcmVxdWVzdHMgdG8gc2VydmVycyBtaXNzaW5nIFNBTiBleHRlbnNpb24gaW4gdGhlaXIgc2VydmluZyBjZXJ0aWZpY2F0ZSBPUiB0aGUgbnVtYmVyIG9mIGNvbm5lY3Rpb24gZmFpbHVyZXMgZHVlIHRvIHRoZSBsYWNrIG9mIHg1MDkgY2VydGlmaWNhdGUgU0FOIGV4dGVuc2lvbiBtaXNzaW5nIChlaXRoZXIvb3IsIGJhc2VkIG9uIHRoZSBydW50aW1lIGVudmlyb25tZW50KRgAIhkaFwkAAAAAAAAAABoMCJONhMQGEMaQys4DmAEKI2dyYWZhbmFfYXV0aGVudGljYXRlZF91c2VyX3JlcXVlc3RzEkFbQUxQSEFdIENvdW50ZXIgb2YgYXV0aGVudGljYXRlZCByZXF1ZXN0cyBicm9rZW4gb3V0IGJ5IHVzZXJuYW1lLhgAIiwKEQoIdXNlcm5hbWUSBW90aGVyGhcJAAAAAABAWEAaDAi5jYTEBhCU9uyPAX0KH2dyYWZhbmFfYXV0aGVudGljYXRpb25fYXR0ZW1wdHMSKltBTFBIQV0gQ291bnRlciBvZiBhdXRoZW50aWNhdGVkIGF0dGVtcHRzLhgAIiwKEQoGcmVzdWx0EgdzdWNjZXNzGhcJAAAAAABAWEAaDAi5jYTEBhC3hu2PAcYDCidncmFmYW5hX2F1dGhlbnRpY2F0aW9uX2R1cmF0aW9uX3NlY29uZHMSQFtBTFBIQV0gQXV0aGVudGljYXRpb24gZHVyYXRpb24gaW4gc2Vjb25kcyBicm9rZW4gb3V0IGJ5IHJlc3VsdC4YBCLWAgoRCgZyZXN1bHQSB3N1Y2Nlc3M6wAIIYRGYd2po4qE4PxpvCGER/Knx0k1iUD8aYgosCgh0cmFjZV9pZBIgZWE5OTk1YWIyYTYyYjdkYzFmMWYwZDY0MGZjZTg3NjEKGwoHc3Bhbl9pZBIQZGQ5MWZmYzMxMThhOWY0YhFcfNeOTAHFPhoMCP6PhMQGEP3O0pABGgsIYRH8qfHSTWJgPxoLCGER/Knx0k1icD8aCwhhEfyp8dJNYoA/GgsIYRH8qfHSTWKQPxoLCGER/Knx0k1ioD8aCwhhEfyp8dJNYrA/GgsIYRH8qfHSTWLAPxoLCGER/Knx0k1i0D8aCwhhEfyp8dJNYuA/GgsIYRH8qfHSTWLwPxoLCGER/Knx0k1iAEAaCwhhEfyp8dJNYhBAGgsIYRH8qfHSTWIgQBoLCGER/Knx0k1iMEB6DAi5jYTEBhDZoO2PAW8KL2dyYWZhbmFfYXV0aG5fYXV0aG5fZmFpbGVkX2F1dGhlbnRpY2F0aW9uX3RvdGFsEiBOdW1iZXIgb2YgZmFpbGVkIGF1dGhlbnRpY2F0aW9ucxgAIhgaFgkAAAAAAAAAABoLCJSNhMQGEJTCkTrXAQokZ3JhZmFuYV9hdXRob3JpemF0aW9uX2F0dGVtcHRzX3RvdGFsEn9bQUxQSEFdIENvdW50ZXIgb2YgYXV0aG9yaXphdGlvbiBhdHRlbXB0cyBicm9rZW4gZG93biBieSByZXN1bHQuIEl0IGNhbiBiZSBlaXRoZXIgJ2FsbG93ZWQnLCAnZGVuaWVkJywgJ25vLW9waW5pb24nIG9yICdlcnJvcicuGAAiLAoRCgZyZXN1bHQSB2FsbG93ZWQaFwkAAAAAAEBYQBoMCLmNhMQGEIzz648BxAMKJmdyYWZhbmFfYXV0aG9yaXphdGlvbl9kdXJhdGlvbl9zZWNvbmRzEj9bQUxQSEFdIEF1dGhvcml6YXRpb24gZHVyYXRpb24gaW4gc2Vjb25kcyBicm9rZW4gb3V0IGJ5IHJlc3VsdC4YBCLWAgoRCgZyZXN1bHQSB2FsbG93ZWQ6wAIIYRFwTIcCQXY6PxpvCGER/Knx0k1iUD8aYgosCgh0cmFjZV9pZBIgZWE5OTk1YWIyYTYyYjdkYzFmMWYwZDY0MGZjZTg3NjEKGwoHc3Bhbl9pZBIQZGQ5MWZmYzMxMThhOWY0YhGJDyHr/9XAPhoMCP6PhMQGEL+e0pABGgsIYRH8qfHSTWJgPxoLCGER/Knx0k1icD8aCwhhEfyp8dJNYoA/GgsIYRH8qfHSTWKQPxoLCGER/Knx0k1ioD8aCwhhEfyp8dJNYrA/GgsIYRH8qfHSTWLAPxoLCGER/Knx0k1i0D8aCwhhEfyp8dJNYuA/GgsIYRH8qfHSTWLwPxoLCGER/Knx0k1iAEAaCwhhEfyp8dJNYhBAGgsIYRH8qfHSTWIgQBoLCGER/Knx0k1iMEB6DAi5jYTEBhCHj+yPAawCChJncmFmYW5hX2J1aWxkX2luZm8Sc0EgbWV0cmljIHdpdGggYSBjb25zdGFudCAnMScgdmFsdWUgbGFiZWxlZCBieSB2ZXJzaW9uLCByZXZpc2lvbiwgYnJhbmNoLCBhbmQgZ292ZXJzaW9uIGZyb20gd2hpY2ggR3JhZmFuYSB3YXMgYnVpbHQYASKeAQoOCgZicmFuY2gSBEhFQUQKFQoHZWRpdGlvbhIKZW50ZXJwcmlzZQoVCglnb3ZlcnNpb24SCGdvMS4yNC40CjQKCHJldmlzaW9uEihlNWQyZjkyMzg0OTU5YWZjNjE1MjE0MTZkOTUwMGE1NWMwOTcxYjE1Ch0KB3ZlcnNpb24SEjEyLjEuMC0xNjQyNjI0NDM5ORIJCQAAAAAAAPA/8gEKF2dyYWZhbmFfYnVpbGRfdGltZXN0YW1wEjRBIG1ldHJpYyBleHBvc2luZyB3aGVuIHRoZSBiaW5hcnkgd2FzIGJ1aWx0IGluIGVwb2NoGAEingEKDgoGYnJhbmNoEgRIRUFEChUKB2VkaXRpb24SCmVudGVycHJpc2UKFQoJZ292ZXJzaW9uEghnbzEuMjQuNAo0CghyZXZpc2lvbhIoZTVkMmY5MjM4NDk1OWFmYzYxNTIxNDE2ZDk1MDBhNTVjMDk3MWIxNQodCgd2ZXJzaW9uEhIxMi4xLjAtMTY0MjYyNDQzOTkSCQkAAMCkQSDaQc4BCiBncmFmYW5hX2NhY2hpbmdfZGVjb2Rpbmdfc2Vjb25kcxKMAVRoZSB0b3RhbCB0aW1lIHNwZW5kIGRlY29kaW5nIGRhdGEuIEF0IHRoZSB0aW1lIG9mIGVuY29kaW5nIGRhdGEsIHRoZSBkYXRhc291cmNlIGlzIG5vdCBhdmFpbGFibGUsIGFuZCBpcyB0aGVyZWZvcmUgbm90IGFuIGFwcGxpY2FibGUgbGFiZWwuGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQg/SgzwPOAQogZ3JhZmFuYV9jYWNoaW5nX2VuY29kaW5nX3NlY29uZHMSjAFUaGUgdG90YWwgdGltZSBzcGVudCBlbmNvZGluZyBkYXRhLiBBdCB0aGUgdGltZSBvZiBlbmNvZGluZyBkYXRhLCB0aGUgZGF0YXNvdXJjZSBpcyBub3QgYXZhaWxhYmxlLCBhbmQgaXMgdGhlcmVmb3JlIG5vdCBhbiBhcHBsaWNhYmxlIGxhYmVsLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGEJPtoM8DsAEKQGdyYWZhbmFfY2FyZGluYWxpdHlfZW5mb3JjZW1lbnRfdW5leHBlY3RlZF9jYXRlZ29yaXphdGlvbnNfdG90YWwST1tBTFBIQV0gVGhlIGNvdW50IG9mIHVuZXhwZWN0ZWQgY2F0ZWdvcml6YXRpb25zIGR1cmluZyBjYXJkaW5hbGl0eSBlbmZvcmNlbWVudC4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhC/ydO7A3oKImdyYWZhbmFfY2xvdWRfaW5zdGFsbF9mYWlsZWRfdG90YWwSN3VzYWdlIGNvdW50ZXIgZm9yIGNsb3VkIHBsdWdpbnMgaW5zdGFsbCBmYWlsZWQgcmVxdWVzdHMYACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCO3OzPA3UKJGdyYWZhbmFfY2xvdWRfaW5zdGFsbF9yZXF1ZXN0c190b3RhbBIwdXNhZ2UgY291bnRlciBmb3IgY2xvdWQgcGx1Z2lucyBpbnN0YWxsIHJlcXVlc3RzGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQx5HszwN8CiRncmFmYW5hX2Nsb3VkX3VuaW5zdGFsbF9mYWlsZWRfdG90YWwSN3VzYWdlIGNvdW50ZXIgZm9yIGNsb3VkIHBsdWdpbnMgcmVtb3ZhbCBmYWlsZWQgcmVxdWVzdHMYACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCBje/PA3cKJmdyYWZhbmFfY2xvdWRfdW5pbnN0YWxsX3JlcXVlc3RzX3RvdGFsEjB1c2FnZSBjb3VudGVyIGZvciBjbG91ZCBwbHVnaW5zIHJlbW92YWwgcmVxdWVzdHMYACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCm/e3PA8oCCjBncmFmYW5hX2RhdGFiYXNlX2FsbF9taWdyYXRpb25zX2R1cmF0aW9uX3NlY29uZHMSN0R1cmF0aW9uIG9mIHRoZSBlbnRpcmUgU1FMIG1pZ3JhdGlvbiBwcm9jZXNzIGluIHNlY29uZHMYBCLaAQoPCgdzdWNjZXNzEgR0cnVlOsYBCAERKM3IG75XXT8aUAgBEQAAAAAAAPB/GkMKKwoHdHJhY2VJRBIgZjZhNzc5NDUyZDczNGI0ZGU1NzM5ZDJkMTIxNGNjYjARKM3IG75XXT8aCwiUjYTEBhCloo8kKAYxAAAAAAAA8Dc4AGIFCJEBEAFoAnoLCJSNhMQGEI/ijSSCAUMKKwoHdHJhY2VJRBIgZjZhNzc5NDUyZDczNGI0ZGU1NzM5ZDJkMTIxNGNjYjARKM3IG75XXT8aCwiUjYTEBhCloo8kSwoaZ3JhZmFuYV9kYXRhYmFzZV9jb25uX2lkbGUSHlRoZSBudW1iZXIgb2YgaWRsZSBjb25uZWN0aW9ucxgBIgsSCQkAAAAAAADwP1kKHGdyYWZhbmFfZGF0YWJhc2VfY29ubl9pbl91c2USKlRoZSBudW1iZXIgb2YgY29ubmVjdGlvbnMgY3VycmVudGx5IGluIHVzZRgBIgsSCQkAAAAAAAAAAIABCi1ncmFmYW5hX2RhdGFiYXNlX2Nvbm5fbWF4X2lkbGVfY2xvc2VkX3NlY29uZHMSQFRoZSB0b3RhbCBudW1iZXIgb2YgY29ubmVjdGlvbnMgY2xvc2VkIGR1ZSB0byBTZXRDb25uTWF4SWRsZVRpbWUYACILGgkJAAAAAAAAAAB7CitncmFmYW5hX2RhdGFiYXNlX2Nvbm5fbWF4X2lkbGVfY2xvc2VkX3RvdGFsEj1UaGUgdG90YWwgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIGNsb3NlZCBkdWUgdG8gU2V0TWF4SWRsZUNvbm5zGAAiCxoJCQAAAAAAAAAAggEKL2dyYWZhbmFfZGF0YWJhc2VfY29ubl9tYXhfbGlmZXRpbWVfY2xvc2VkX3RvdGFsEkBUaGUgdG90YWwgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIGNsb3NlZCBkdWUgdG8gU2V0Q29ubk1heExpZmV0aW1lGAAiCxoJCQAAAAAAADVAYwoeZ3JhZmFuYV9kYXRhYmFzZV9jb25uX21heF9vcGVuEjJNYXhpbXVtIG51bWJlciBvZiBvcGVuIGNvbm5lY3Rpb25zIHRvIHRoZSBkYXRhYmFzZRgBIgsSCQkAAAAAAAAUQGcKGmdyYWZhbmFfZGF0YWJhc2VfY29ubl9vcGVuEjpUaGUgbnVtYmVyIG9mIGVzdGFibGlzaGVkIGNvbm5lY3Rpb25zIGJvdGggaW4gdXNlIGFuZCBpZGxlGAEiCxIJCQAAAAAAAPA/YwomZ3JhZmFuYV9kYXRhYmFzZV9jb25uX3dhaXRfY291bnRfdG90YWwSKlRoZSB0b3RhbCBudW1iZXIgb2YgY29ubmVjdGlvbnMgd2FpdGVkIGZvchgAIgsaCQkAAAAAAIBBQHEKK2dyYWZhbmFfZGF0YWJhc2VfY29ubl93YWl0X2R1cmF0aW9uX3NlY29uZHMSM1RoZSB0b3RhbCB0aW1lIGJsb2NrZWQgd2FpdGluZyBmb3IgYSBuZXcgY29ubmVjdGlvbhgAIgsaCQnUSFCep5HaP9EDCilncmFmYW5hX2RhdGFiYXNlX3F1ZXJpZXNfZHVyYXRpb25fc2Vjb25kcxIYRGF0YWJhc2UgcXVlcnkgaGlzdG9ncmFtGAQihwMKEQoGc3RhdHVzEgdzdWNjZXNzOvECCIUHERkCcoJpBgVAGgsIABHxaOOItfjkPhoLCAAR8WjjiLX4BD8aCwgAEfFo44i1+CQ/GgsIABHxaOOItfhEPxpRCLEFEfFo44i1+GQ/GkMKKwoHdHJhY2VJRBIgNDQ3ODQyZTI3MzJkMTFiMTZkZGFlNDE0MjMyNDA4NWUR5tAnlLPnWj8aCwinkITEBhDAxNASGlEI2gYR8WjjiLX4hD8aQworCgd0cmFjZUlEEiA3YWZjZDQ5YWQzNTZjNzFjYWNlNDE1MzU0OGM0MDQ1MRG+bfeJO5JmPxoLCKGQhMQGEPiA0VwaUgiFBxHxaOOItfikPxpECisKB3RyYWNlSUQSIDc5NzdmMDNjODY4MGFiNDllN2I1ZmExYzAyYjM0NzQ0EZOfCyW+04c/GgwIxo+ExAYQh5nTwwEaDAiFBxHxaOOItfjEPxoMCIUHEfFo44i1+OQ/GgwIhQcR8WjjiLX4BEB6CwiUjYTEBhD0q9QHbAonZ3JhZmFuYV9kYl9kYXRhc291cmNlX3F1ZXJ5X2J5X2lkX3RvdGFsEiRjb3VudGVyIGZvciBnZXR0aW5nIGRhdGFzb3VyY2UgYnkgaWQYACIZGhcJAAAAAAAAQkAaDAiTjYTEBhDboJjPA4gBCiNncmFmYW5hX2RlYm91bmNlcl9pdGVtc19hZGRlZF90b3RhbBIsVG90YWwgbnVtYmVyIG9mIGl0ZW1zIGFkZGVkIHRvIHRoZSBkZWJvdW5jZXIYACIxChYKBG5hbWUSDmhpc3RvcnlfcHJ1bmVyGhcJAAAAAAAACEAaDAiUjYTEBhCg7aGAApABCiVncmFmYW5hX2RlYm91bmNlcl9pdGVtc19kcm9wcGVkX3RvdGFsEjJUb3RhbCBudW1iZXIgb2YgaXRlbXMgZHJvcHBlZCBkdWUgdG8gYSBmdWxsIGJ1ZmZlchgAIjEKFgoEbmFtZRIOaGlzdG9yeV9wcnVuZXIaFwkAAAAAAAAAABoMCJSNhMQGEKSNpIACkAEKJ2dyYWZhbmFfZGVib3VuY2VyX2l0ZW1zX3Byb2Nlc3NlZF90b3RhbBIwVG90YWwgbnVtYmVyIG9mIGl0ZW1zIHByb2Nlc3NlZCBieSB0aGUgZGVib3VuY2VyGAAiMQoWCgRuYW1lEg5oaXN0b3J5X3BydW5lchoXCQAAAAAAAABAGgwIlI2ExAYQkJelgALSAgotZ3JhZmFuYV9kZWJvdW5jZXJfcHJvY2Vzc2luZ19kdXJhdGlvbl9zZWNvbmRzEhtUaW1lIHRha2VuIHRvIHByb2Nlc3MgaXRlbXMYBCKBAgoWCgRuYW1lEg5oaXN0b3J5X3BydW5lcjrmAQgCEWj5vA0q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I0EgY291bnRlciBmb3IgZW5jcnlwdGlvbiBvcGVyYXRpb25zGAAiQQoUCglvcGVyYXRpb24SB2RlY3J5cHQKEAoHc3VjY2VzcxIFZmFsc2UaFwkAAAAAAAAAABoMCJONhMQGEML/vc8DIkAKFAoJb3BlcmF0aW9uEgdkZWNyeXB0Cg8KB3N1Y2Nlc3MSBHRydWUaFwkAAAAAAAA4QBoMCJONhMQGEKrgvc8DIkEKFAoJb3BlcmF0aW9uEgdlbmNyeXB0ChAKB3N1Y2Nlc3MSBWZhbHNlGhcJAAAAAAAAAAAaDAiTjYTEBhDl8r3PAyJAChQKCW9wZXJhdGlvbhIHZW5jcnlwdAoPCgdzdWNjZXNzEgR0cnVlGhcJAAAAAABAUEAaDAiTjYTEBhDHzr3PA48DChhncmFmYW5hX2Vudmlyb25tZW50X2luZm8SYUEgbWV0cmljIHdpdGggYSBjb25zdGFudCAnMScgdmFsdWUgbGFiZWxlZCBieSBlbnZpcm9ubWVudCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcnVubmluZyBpbnN0YW5jZS4YASKNAgoRCgdjaGFubmVsEgZzdGVhZHkKMgoGY29tbWl0EihlNWQyZjkyMzg0OTU5YWZjNjE1MjE0MTZkOTUwMGE1NWMwOTcxYjE1CjsKCGRhdGFiYXNlEi9kZXYtdXMtY2VudHJhbC0wLWhvc3RlZC1ncmFmYW5hLXNoYXJlZC0yLW15c3FsOAo9ChFlbnRlcnByaXNlX2NvbW1pdBIoZjk1MTczNmU2MzQ4ZTY4NmMxNTBmYjY5ZjRmMGU1MmUxNTIxNjk0NwoMCgRwbGFuEgRwYXlnChAKCHN0YWNrX2lkEgQyMTkzCh0KB3ZlcnNpb24SEjEyLjEuMC0xNjQyNjI0NDM5ORIJCQAAAAAAAPA/eAocZ3JhZmFuYV9leHRzdmNfZGVsZXRlZF90b3RhbBI7TnVtYmVyIG9mIGV4dGVybmFsIHNlcnZpY2UgYWNjb3VudHMgZGVsZXRlZCBzaW5jZSBzdGFydCB1cC4YACIZGhcJAAAAAAAAAAAaDAiUjYTEBhD1jOqKAnQKGmdyYWZhbmFfZXh0c3ZjX3NhdmVkX3RvdGFsEjlOdW1iZXIgb2YgZXh0ZXJuYWwgc2VydmljZSBhY2NvdW50cyBzYXZlZCBzaW5jZSBzdGFydCB1cC4YACIZGhcJAAAAAAAAKkAaDAiUjYTEBhD1guqKAlMKFGdyYWZhbmFfZXh0c3ZjX3RvdGFsEixOdW1iZXIgb2YgZXh0ZXJuYWwgc2VydmljZSBhY2NvdW50cyBpbiBzdG9yZRgBIgsSCQkAAAAAAAAqQN2iAQocZ3JhZmFuYV9mZWF0dXJlX3RvZ2dsZXNfaW5mbxJAaW5mbyBtZXRyaWMgdGhhdCBleHBvc2VzIHdoYXQgZmVhdHVyZSB0b2dnbGVzIGFyZSBlbmFibGVkIG9yIG5vdBgBIiUKGAoEbmFtZRIQYWNjZXNzQWN0aW9uU2V0cxIJCQAAAAAAAPA/IigKGwoEbmFtZRITYWNjZXNzQ29udHJvbE9uQ2FsbBIJCQAAAAAAAPA/Ii8KIgoEbmFtZRIaYWNjZXNzVG9rZW5FeHBpcmF0aW9uQ2hlY2sSCQkAAAAAAADwPyI5CiwKBG5hbWUSJGFkZEZpZWxkRnJvbUNhbGN1bGF0aW9uU3RhdEZ1bmN0aW9ucxIJCQAAAAAAAPA/IjMKJgoEbmFtZRIeYWRvYmVhbmFseXRpY3NSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iKAobCgRuYW1lEhNhZHhSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iMAojCgRuYW1lEhthaUdlbmVyYXRlZERhc2hib2FyZENoYW5nZXMSCQkAAAAAAAAAACIkChcKBG5hbWUSD2FsZXJ0RW5yaWNobWVudBIJCQAAAAAAAAAAIiUKGAoEbmFtZRIQYWxlcnRSdWxlUmVzdG9yZRIJCQAAAAAAAPA/IjMKJgoEbmFtZRIeYWxlcnRSdWxlVXNlRmlyZWRBdEZvclN0YXJ0c0F0EgkJAAAAAAAA8D8iLgohCgRuYW1lEhlhbGVydFN0YXRlSGlzdG9yeUxva2lPbmx5EgkJAAAAAAAA8D8iMQokCgRuYW1lEhxhbGVydFN0YXRlSGlzdG9yeUxva2lQcmltYXJ5EgkJAAAAAAAA8D8iMwomCgRuYW1lEh5hbGVydFN0YXRlSGlzdG9yeUxva2lTZWNvbmRhcnkSCQkAAAAAAADwPyI5CiwKBG5hbWUSJGFsZXJ0aW5nQUlBbmFseXplQ2VudHJhbFN0YXRlSGlzdG9yeRIJCQAAAAAAAAAAIiwKHwoEbmFtZRIXYWxlcnRpbmdBSUdlbkFsZXJ0UnVsZXMSCQkAAAAAAAAAACIrCh4KBG5hbWUSFmFsZXJ0aW5nQUlHZW5UZW1wbGF0ZXMSCQkAAAAAAAAAACIwCiMKBG5hbWUSG2FsZXJ0aW5nQUlJbXByb3ZlQWxlcnRSdWxlcxIJCQAAAAAAAAAAIjgKKwoEbmFtZRIjYWxlcnRpbmdBbGVydG1hbmFnZXJFeHRyYURlZHVwU3RhZ2USCQkAAAAAAADwPyJECjcKBG5hbWUSL2FsZXJ0aW5nQWxlcnRtYW5hZ2VyRXh0cmFEZWR1cFN0YWdlU3RvcFBpcGVsaW5lEgkJAAAAAAAA8D8iJgoZCgRuYW1lEhFhbGVydGluZ0FwaVNlcnZlchIJCQAAAAAAAPA/IigKGwoEbmFtZRITYWxlcnRpbmdCYWNrdGVzdGluZxIJCQAAAAAAAAAAIiwKHwoEbmFtZRIXYWxlcnRpbmdCaWdUcmFuc2FjdGlvbnMSCQkAAAAAAADwPyIsCh8KBG5hbWUSF2FsZXJ0aW5nQnVsa0FjdGlvbnNJblVJEgkJAAAAAAAA8D8iMAojCgRuYW1lEhthbGVydGluZ0NlbnRyYWxBbGVydEhpc3RvcnkSCQkAAAAAAADwPyIqCh0KBG5hbWUSFWFsZXJ0aW5nRGV0YWlsc1ZpZXdWMhIJCQAAAAAAAPA/IjYKKQoEbmFtZRIhYWxlcnRpbmdEaXNhYmxlU2VuZEFsZXJ0c0V4dGVybmFsEgkJAAAAAAAA8D8iJQoYCgRuYW1lEhBhbGVydGluZ0ZpbHRlclYyEgkJAAAAAAAAAAAiMgolCgRuYW1lEh1hbGVydGluZ0ltcG9ydEFsZXJ0bWFuYWdlckFQSRIJCQAAAAAAAAAAIikKHAoEbmFtZRIUYWxlcnRpbmdJbXBvcnRZQU1MVUkSCQkAAAAAAADwPyIsCh8KBG5hbWUSF2FsZXJ0aW5nSmlyYUludGVncmF0aW9uEgkJAAAAAAAAAAAiJwoaCgRuYW1lEhJhbGVydGluZ0xpc3RWaWV3VjISCQkAAAAAAADwPyI0CicKBG5hbWUSH2FsZXJ0aW5nTGlzdFZpZXdWMlByZXZpZXdUb2dnbGUSCQkAAAAAAADwPyIoChsKBG5hbWUSE2FsZXJ0aW5nTWlncmF0aW9uVUkSCQkAAAAAAADwPyIxCiQKBG5hbWUSHGFsZXJ0aW5nTm9EYXRhRXJyb3JFeGVjdXRpb24SCQkAAAAAAADwPyIwCiMKBG5hbWUSG2FsZXJ0aW5nTm90aWZpY2F0aW9uSGlzdG9yeRIJCQAAAAAAAAAAIjIKJQoEbmFtZRIdYWxlcnRpbmdOb3RpZmljYXRpb25zU3RlcE1vZGUSCQkAAAAAAADwPyIzCiYKBG5hbWUSHmFsZXJ0aW5nUHJvbWV0aGV1c1J1bGVzUHJpbWFyeRIJCQAAAAAAAAAAIjgKKwoEbmFtZRIjYWxlcnRpbmdRdWVyeUFuZEV4cHJlc3Npb25zU3RlcE1vZGUSCQkAAAAAAADwPyIuCiEKBG5hbWUSGWFsZXJ0aW5nUXVlcnlPcHRpbWl6YXRpb24SCQkAAAAAAADwPyIyCiUKBG5hbWUSHWFsZXJ0aW5nUnVsZVBlcm1hbmVudGx5RGVsZXRlEgkJAAAAAAAA8D8iLwoiCgRuYW1lEhphbGVydGluZ1J1bGVSZWNvdmVyRGVsZXRlZBIJCQAAAAAAAPA/IjYKKQoEbmFtZRIhYWxlcnRpbmdSdWxlVmVyc2lvbkhpc3RvcnlSZXN0b3JlEgkJAAAAAAAA8D8iMAojCgRuYW1lEhthbGVydGluZ1NhdmVTdGF0ZUNvbXByZXNzZWQSCQkAAAAAAADwPyIuCiEKBG5hbWUSGWFsZXJ0aW5nU2F2ZVN0YXRlUGVyaW9kaWMSCQkAAAAAAAAAACIuCiEKBG5hbWUSGWFsZXJ0aW5nU2ltcGxpZmllZFJvdXRpbmcSCQkAAAAAAADwPyIuCiEKBG5hbWUSGWFsZXJ0aW5nVUlPcHRpbWl6ZVJlZHVjZXISCQkAAAAAAADwPyIuCiEKBG5hbWUSGWFsZXJ0bWFuYWdlclJlbW90ZVByaW1hcnkSCQkAAAAAAADwPyIwCiMKBG5hbWUSG2FsZXJ0bWFuYWdlclJlbW90ZVNlY29uZGFyeRIJCQAAAAAAAPA/IjUKKAoEbmFtZRIgYW1hem9ucHJvbWV0aGV1c1JlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIvCiIKBG5hbWUSGmFubm90YXRpb25QZXJtaXNzaW9uVXBkYXRlEgkJAAAAAAAA8D8iLgohCgRuYW1lEhlhcHBQbGF0Zm9ybUdycGNDbGllbnRBdXRoEgkJAAAAAAAA8D8iMAojCgRuYW1lEhthcHBkeW5hbWljc1JlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyItCiAKBG5hbWUSGGFzc2VydHNOYW1lc3BhY2VTZWxlY3RvchIJCQAAAAAAAPA/IiUKGAoEbmFtZRIQYXNzZXJ0c1J1bGVzVWlWMhIJCQAAAAAAAPA/IiMKFgoEbmFtZRIOYXNzZXRTcmlDaGVja3MSCQkAAAAAAADwPyIsCh8KBG5hbWUSF2FzdHJhZGJSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iKwoeCgRuYW1lEhZhdGhlbmFSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iOAorCgRuYW1lEiNhdGxhc3NpYW5zdGF0dXNwYWdlUmVtb3RlRGF0YXNvdXJjZRIJCQAAAAAAAPA/IisKHgoEbmFtZRIWYXVyb3JhUmVtb3RlRGF0YXNvdXJjZRIJCQAAAAAAAPA/IisKHgoEbmFtZRIWYXV0aEFQSUFjY2Vzc1Rva2VuQXV0aBIJCQAAAAAAAPA/IiQKFwoEbmFtZRIPYXV0aFpHUlBDU2VydmVyEgkJAAAAAAAAAAAiKwoeCgRuYW1lEhZhdXRoZW50aWNhdGlvbkNvbmZpZ1VJEgkJAAAAAAAA8D8iIQoUCgRuYW1lEgxhdXRoblNlcnZpY2USCQkAAAAAAADwPyIqCh0KBG5hbWUSFWF1dG9NaWdyYXRlR3JhcGhQYW5lbBIJCQAAAAAAAPA/Ii0KIAoEbmFtZRIYYXV0b01pZ3JhdGVQaWVjaGFydFBhbmVsEgkJAAAAAAAA8D8iKQocCgRuYW1lEhRhdXRvTWlncmF0ZVN0YXRQYW5lbBIJCQAAAAAAAPA/IioKHQoEbmFtZRIVYXV0b01pZ3JhdGVUYWJsZVBhbmVsEgkJAAAAAAAA8D8iLQogCgRuYW1lEhhhdXRvTWlncmF0ZVdvcmxkbWFwUGFuZWwSCQkAAAAAAADwPyIsCh8KBG5hbWUSF2F1dG9NaWdyYXRlWFlDaGFydFBhbmVsEgkJAAAAAAAA8D8iKQocCgRuYW1lEhRhd3NBc3luY1F1ZXJ5Q2FjaGluZxIJCQAAAAAAAPA/IjEKJAoEbmFtZRIcYXdzRGF0YXNvdXJjZXNOZXdGb3JtU3R5bGluZxIJCQAAAAAAAPA/IjIKJQoEbmFtZRIdYXdzRGF0YXNvdXJjZXNUZW1wQ3JlZGVudGlhbHMSCQkAAAAAAADwPyIyCiUKBG5hbWUSHWF6dXJlQ29zbW9zZGJSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iMAojCgRuYW1lEhthenVyZU1vbml0b3JEaXNhYmxlTG9nTGltaXQSCQkAAAAAAAAAACIvCiIKBG5hbWUSGmF6dXJlTW9uaXRvckVuYWJsZVVzZXJBdXRoEgkJAAAAAAAA8D8iMgolCgRuYW1lEh1henVyZU1vbml0b3JMb2dzQnVpbGRlckVkaXRvchIJCQAAAAAAAAAAIjQKJwoEbmFtZRIfYXp1cmVNb25pdG9yUHJvbWV0aGV1c0V4ZW1wbGFycxIJCQAAAAAAAPA/IjEKJAoEbmFtZRIcYXp1cmVNb25pdG9yUmVtb3RlRGF0YXNvdXJjZRIJCQAAAAAAAPA/IjAKIwoEbmFtZRIbYXp1cmVkZXZvcHNSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iKAobCgRuYW1lEhNiZXR0ZXJQYWdlU2Nyb2xsaW5nEgkJAAAAAAAA8D8iLQogCgRuYW1lEhhiaWdRdWVyeVJlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyI8Ci8KBG5hbWUSJ2NhY2hpbmdPcHRpbWl6ZVNlcmlhbGl6YXRpb25NZW1vcnlVc2FnZRIJCQAAAAAAAAAAIicKGgoEbmFtZRISY2FudmFzUGFuZWxOZXN0aW5nEgkJAAAAAAAAAAAiJwoaCgRuYW1lEhJjYW52YXNQYW5lbFBhblpvb20SCQkAAAAAAADwPyIvCiIKBG5hbWUSGmNhdGNocG9pbnRSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iHwoSCgRuYW1lEgpjZG5QbHVnaW5zEgkJAAAAAAAA8D8iLwoiCgRuYW1lEhpjbGlja2hvdXNlUmVtb3RlRGF0YXNvdXJjZRIJCQAAAAAAAPA/IigKGwoEbmFtZRITY2xpZW50VG9rZW5Sb3RhdGlvbhIJCQAAAAAAAPA/IjAKIwoEbmFtZRIbY2xvdWRIb21lQ29ubmVjdGlvblByZXZpZXdzEgkJAAAAAAAA8D8iMQokCgRuYW1lEhxjbG91ZE1vbml0b3JSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iMgolCgRuYW1lEh1jbG91ZE1vbml0b3JpbmdFeHBlcmltZW50YWxVSRIJCQAAAAAAAPA/Ii4KIQoEbmFtZRIZY2xvdWRPbmJvYXJkaW5nRmFyb0xpc3RlZBIJCQAAAAAAAPA/IiMKFgoEbmFtZRIOY2xvdWRSQkFDUm9sZXMSCQkAAAAAAAAAACIrCh4KBG5hbWUSFmNsb3VkV2F0Y2hCYXRjaFF1ZXJpZXMSCQkAAAAAAADwPyIzCiYKBG5hbWUSHmNsb3VkV2F0Y2hDcm9zc0FjY291bnRRdWVyeWluZxIJCQAAAAAAAPA/IiwKHwoEbmFtZRIXY2xvdWRXYXRjaER5bmFtaWNMYWJlbHMSCQkAAAAAAADwPyIvCiIKBG5hbWUSGmNsb3VkV2F0Y2hMb2dzTW9uYWNvRWRpdG9yEgkJAAAAAAAA8D8iLgohCgRuYW1lEhljbG91ZFdhdGNoTmV3TGFiZWxQYXJzaW5nEgkJAAAAAAAA8D8iLQogCgRuYW1lEhhjbG91ZFdhdGNoUm91bmRVcEVuZFRpbWUSCQkAAAAAAADwPyIvCiIKBG5hbWUSGmNsb3VkZmxhcmVSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iNwoqCgRuYW1lEiJjbG91ZHdhdGNoRXh0ZXJuYWxSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAAAAAiOQosCgRuYW1lEiRjbG91ZHdhdGNoTWV0cmljSW5zaWdodHNDcm9zc0FjY291bnQSCQkAAAAAAADwPyIwCiMKBG5hbWUSG2Nsb3Vkd2F0Y2hOZXdSZWdpb25zSGFuZGxlchIJCQAAAAAAAPA/Ii8KIgoEbmFtZRIaY2xvdWR3YXRjaFJlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIwCiMKBG5hbWUSG2NvY2tyb2FjaGRiUmVtb3RlRGF0YXNvdXJjZRIJCQAAAAAAAPA/IiEKFAoEbmFtZRIMY29sbGVjdG9yQXBwEgkJAAAAAAAA8D8iLgohCgRuYW1lEhljb25maWd1cmFibGVTY2hlZHVsZXJUaWNrEgkJAAAAAAAAAAAiNAonCgRuYW1lEh9jb25uZWN0aW9uc0VuYWJsZUluZmluaXR5V2l6YXJkEgkJAAAAAAAA8D8iIQoUCgRuYW1lEgxjb3JyZWxhdGlvbnMSCQkAAAAAAADwPyIlChgKBG5hbWUSEGNvc3RNYW5hZ2VtZW50VWkSCQkAAAAAAADwPyIjChYKBG5hbWUSDmNyYXNoRGV0ZWN0aW9uEgkJAAAAAAAA8D8iNwoqCgRuYW1lEiJkYXNoYm9hcmREaXNhYmxlU2NoZW1hVmFsaWRhdGlvblYxEgkJAAAAAAAAAAAiNwoqCgRuYW1lEiJkYXNoYm9hcmREaXNhYmxlU2NoZW1hVmFsaWRhdGlvblYyEgkJAAAAAAAAAAAiKAobCgRuYW1lEhNkYXNoYm9hcmROZXdMYXlvdXRzEgkJAAAAAAAAAAAiJQoYCgRuYW1lEhBkYXNoYm9hcmRSZXN0b3JlEgkJAAAAAAAAAAAiJwoaCgRuYW1lEhJkYXNoYm9hcmRSZXN0b3JlVUkSCQkAAAAAAAAAACIjChYKBG5hbWUSDmRhc2hib2FyZFNjZW5lEgkJAAAAAAAA8D8iLQogCgRuYW1lEhhkYXNoYm9hcmRTY2VuZUZvclZpZXdlcnMSCQkAAAAAAADwPyInChoKBG5hbWUSEmRhc2hib2FyZFNjZW5lU29sbxIJCQAAAAAAAPA/IjUKKAoEbmFtZRIgZGFzaGJvYXJkU2NoZW1hVmFsaWRhdGlvbkxvZ2dpbmcSCQkAAAAAAAAAACIcCg8KBG5hbWUSB2Rhc2hncHQSCQkAAAAAAADwPyIpChwKBG5hbWUSFGRhdGFTb3VyY2VQYWdlSGVhZGVyEgkJAAAAAAAA8D8iJQoYCgRuYW1lEhBkYXRhYmFzZV9tZXRyaWNzEgkJAAAAAAAA8D8iLwoiCgRuYW1lEhpkYXRhYnJpY2tzUmVtb3RlRGF0YXNvdXJjZRIJCQAAAAAAAPA/IiwKHwoEbmFtZRIXZGF0YWRvZ1JlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIoChsKBG5hbWUSE2RhdGFwbGFuZUFnZ3JlZ2F0b3ISCQkAAAAAAAAAACIuCiEKBG5hbWUSGWRhdGFwbGFuZUZyb250ZW5kRmFsbGJhY2sSCQkAAAAAAADwPyIpChwKBG5hbWUSFGRhdGFzb3VyY2VBUElTZXJ2ZXJzEgkJAAAAAAAAAAAiLQogCgRuYW1lEhhkYXRhc291cmNlQ29ubmVjdGlvbnNUYWISCQkAAAAAAADwPyIpChwKBG5hbWUSFGRhdGFzb3VyY2VRdWVyeVR5cGVzEgkJAAAAAAAAAAAiKgodCgRuYW1lEhVkYm8xMXlSZWNvbW1lbmRhdGlvbnMSCQkAAAAAAADwPyIwCiMKBG5hbWUSG2Rpc2FibGVDbGFzc2ljSFRUUEhpc3RvZ3JhbRIJCQAAAAAAAAAAIi4KIQoEbmFtZRIZZGlzYWJsZUVudmVsb3BlRW5jcnlwdGlvbhIJCQAAAAAAAAAAIj4KMQoEbmFtZRIpZGlzYWJsZU51bWVyaWNNZXRyaWNzU29ydGluZ0luRXhwcmVzc2lvbnMSCQkAAAAAAAAAACIoChsKBG5hbWUSE2Rpc2FibGVTU0VEYXRhcGxhbmUSCQkAAAAAAAAAACIjChYKBG5hbWUSDmRvY2tlZE1lZ2FNZW51EgkJAAAAAAAA8D8iKgodCgRuYW1lEhVkcm9uZVJlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyItCiAKBG5hbWUSGGR1YWxXcml0ZURhc2hib2FyZHNNb2RlMRIJCQAAAAAAAPA/Ii0KIAoEbmFtZRIYZHVhbFdyaXRlRGFzaGJvYXJkc01vZGUyEgkJAAAAAAAAAAAiNwoqCgRuYW1lEiJkdWFsV3JpdGVEYXNoYm9hcmRzUGVyaW9kU3luY01vZGUxEgkJAAAAAAAAAAAiOQosCgRuYW1lEiRkdWFsV3JpdGVEYXNoYm9hcmRzUGVyaW9kaWNTeW5jTW9kZTESCQkAAAAAAAAAACI5CiwKBG5hbWUSJGR1YWxXcml0ZURhc2hib2FyZHNQZXJpb2RpY1N5bmNNb2RlMhIJCQAAAAAAAAAAIioKHQoEbmFtZRIVZHVhbFdyaXRlRm9sZGVyc01vZGUxEgkJAAAAAAAA8D8iKgodCgRuYW1lEhVkdWFsV3JpdGVGb2xkZXJzTW9kZTISCQkAAAAAAAAAACI2CikKBG5hbWUSIWR1YWxXcml0ZUZvbGRlcnNQZXJpb2RpY1N5bmNNb2RlMRIJCQAAAAAAAAAAIjYKKQoEbmFtZRIhZHVhbFdyaXRlRm9sZGVyc1BlcmlvZGljU3luY01vZGUyEgkJAAAAAAAAAAAiLAofCgRuYW1lEhdkdWFsV3JpdGVQbGF5bGlzdHNNb2RlMhIJCQAAAAAAAPA/IiwKHwoEbmFtZRIXZHVhbFdyaXRlUGxheWxpc3RzTW9kZTMSCQkAAAAAAADwPyIsCh8KBG5hbWUSF2R1YWxXcml0ZVBsYXlsaXN0c01vZGU0EgkJAAAAAAAA8D8iLgohCgRuYW1lEhlkeW5hdHJhY2VSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iLAofCgRuYW1lEhdlZGl0UGFuZWxDU1ZEcmFnQW5kRHJvcBIJCQAAAAAAAAAAIjIKJQoEbmFtZRIdZWxhc3RpY1NlYXJjaFJlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyI0CicKBG5hbWUSH2VsYXN0aWNzZWFyY2hDcm9zc0NsdXN0ZXJTZWFyY2gSCQkAAAAAAADwPyIxCiQKBG5hbWUSHGVsYXN0aWNzZWFyY2hJbXByb3ZlZFBhcnNpbmcSCQkAAAAAAADwPyIuCiEKBG5hbWUSGWVuYWJsZUFwcENocm9tZUV4dGVuc2lvbnMSCQkAAAAAAAAAACItCiAKBG5hbWUSGGVuYWJsZURhc2hib2FyZE1pZ3JhdGlvbhIJCQAAAAAAAAAAIioKHQoEbmFtZRIVZW5hYmxlRGF0YWdyaWRFZGl0aW5nEgkJAAAAAAAAAAAiKAobCgRuYW1lEhNlbmFibGVFeGVjdXRpb25QbGFuEgkJAAAAAAAA8D8iLgohCgRuYW1lEhllbmFibGVFeHRlbnNpb25zQWRtaW5QYWdlEgkJAAAAAAAAAAAiKgodCgRuYW1lEhVlbmFibGVGb2xkZXJNaWdyYXRpb24SCQkAAAAAAAAAACIpChwKBG5hbWUSFGVuYWJsZUxMTUludGVncmF0aW9uEgkJAAAAAAAA8D8iLgohCgRuYW1lEhllbmFibGVOYXRpdmVIVFRQSGlzdG9ncmFtEgkJAAAAAAAA8D8iKQocCgRuYW1lEhRlbmFibGVQbHVnaW5JbXBvcnRlchIJCQAAAAAAAAAAIicKGgoEbmFtZRISZW5hYmxlUXVlcnlTYW1wbGVzEgkJAAAAAAAA8D8iHwoSCgRuYW1lEgplbmFibGVTQ0lNEgkJAAAAAAAAAAAiMQokCgRuYW1lEhxlbmFibGVTY29wZXNJbk1ldHJpY3NFeHBsb3JlEgkJAAAAAAAAAAAiJQoYCgRuYW1lEhBlbmFibGVXYWl0RXZlbnRzEgkJAAAAAAAA8D8iJwoaCgRuYW1lEhJlbnZlbG9wZUVuY3J5cHRpb24SCQkAAAAAAADwPyIxCiQKBG5hbWUSHGV4cGxvcmVMb2dzQWdncmVnYXRlZE1ldHJpY3MSCQkAAAAAAAAAACIwCiMKBG5hbWUSG2V4cGxvcmVMb2dzTGltaXRlZFRpbWVSYW5nZRIJCQAAAAAAAAAAIi4KIQoEbmFtZRIZZXhwbG9yZUxvZ3NTaGFyZFNwbGl0dGluZxIJCQAAAAAAAAAAIi4KIQoEbmFtZRIZZXhwbG9yZU1ldHJpY3NSZWxhdGVkTG9ncxIJCQAAAAAAAAAAIjcKKgoEbmFtZRIiZXhwbG9yZU1ldHJpY3NVc2VFeHRlcm5hbEFwcFBsdWdpbhIJCQAAAAAAAPA/IisKHgoEbmFtZRIWZXhwbG9yZU1peGVkRGF0YXNvdXJjZRIJCQAAAAAAAPA/IiUKGAoEbmFtZRIQZXhwcmVzc2lvblBhcnNlchIJCQAAAAAAAAAAIiUKGAoEbmFtZRIQZXh0ZW5zaW9uU2lkZWJhchIJCQAAAAAAAPA/IigKGwoEbmFtZRITZXh0ZXJuYWxDb3JlUGx1Z2lucxIJCQAAAAAAAPA/IigKGwoEbmFtZRITZXh0ZXJuYWxFbnRpdHlSaW5ncxIJCQAAAAAAAPA/IiwKHwoEbmFtZRIXZXh0ZXJuYWxTZXJ2aWNlQWNjb3VudHMSCQkAAAAAAADwPyIgChMKBG5hbWUSC2V4dHJhVGhlbWVzEgkJAAAAAAAAAAAiMwomCgRuYW1lEh5leHRyYWN0RmllbGRzTmFtZURlZHVwbGljYXRpb24SCQkAAAAAAAAAACIjChYKBG5hbWUSDmZhaWxXcm9uZ0RTVUlEEgkJAAAAAAAA8D8iMwomCgRuYW1lEh5mYWxjb25sb2dzY2FsZVJlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIrCh4KBG5hbWUSFmZhcm9EYXRhc291cmNlU2VsZWN0b3ISCQkAAAAAAAAAACImChkKBG5hbWUSEWZlYXR1cmVIaWdobGlnaHRzEgkJAAAAAAAA8D8iKwoeCgRuYW1lEhZmZWF0dXJlVG9nZ2xlQWRtaW5QYWdlEgkJAAAAAAAAAAAiKAobCgRuYW1lEhNmZWF0dXJlZENvbm5lY3Rpb25zEgkJAAAAAAAA8D8iIwoWCgRuYW1lEg5mZWVkYmFja0J1dHRvbhIJCQAAAAAAAAAAIi0KIAoEbmFtZRIYZmVvMTF5VXNlckFjdGlvblRyYWNraW5nEgkJAAAAAAAA8D8iKAobCgRuYW1lEhNmZXRjaFJ1bGVzVXNpbmdQb3N0EgkJAAAAAAAA8D8iLQogCgRuYW1lEhhmbGFtZUdyYXBoSXRlbUNvbGxhcHNpbmcSCQkAAAAAAADwPyIkChcKBG5hbWUSD2ZsZWV0TWFuYWdlbWVudBIJCQAAAAAAAPA/IjYKKQoEbmFtZRIhZmxlZXRNYW5hZ2VtZW50UHlyb3Njb3BlRXh0ZW5zaW9uEgkJAAAAAAAA8D8iKgodCgRuYW1lEhVmb2xkZXJzQXBwUGxhdGZvcm1BUEkSCQkAAAAAAAAAACIhChQKBG5hbWUSDGZvcm1hdFN0cmluZxIJCQAAAAAAAPA/IjAKIwoEbmFtZRIbZ2NvbU9ubHlFeHRlcm5hbE9yZ1JvbGVTeW5jEgkJAAAAAAAA8D8iKwoeCgRuYW1lEhZnaXRodWJSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iKwoeCgRuYW1lEhZnaXRsYWJSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iMQokCgRuYW1lEhxnb29nbGVTaGVldHNSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iQAozCgRuYW1lEitnb29nbGVTaGVldHNSZW1vdGVEYXRhc291cmNlTWFpbk9ubHlSb2xsb3V0EgkJAAAAAAAA8D8iJQoYCgRuYW1lEhBncmFmYW5hQVBJU2VydmVyEgkJAAAAAAAA8D8iIwoWCgRuYW1lEg5ncmFmYW5hQWR2aXNvchIJCQAAAAAAAPA/IjEKJAoEbmFtZRIcZ3JhZmFuYU1hbmFnZWRSZWNvcmRpbmdSdWxlcxIJCQAAAAAAAPA/IjwKLwoEbmFtZRInZ3JhZmFuYU1hbmFnZWRSZWNvcmRpbmdSdWxlc0RhdGFzb3VyY2VzEgkJAAAAAAAA8D8iJQoYCgRuYW1lEhBncmFmYW5hY29uVGhlbWVzEgkJAAAAAAAA8D8iJwoaCgRuYW1lEhJncm91cEF0dHJpYnV0ZVN5bmMSCQkAAAAAAADwPyIkChcKBG5hbWUSD2dyb3VwQnlWYXJpYWJsZRIJCQAAAAAAAAAAIjUKKAoEbmFtZRIgZ3JvdXBUb05lc3RlZFRhYmxlVHJhbnNmb3JtYXRpb24SCQkAAAAAAADwPyIfChIKBG5hbWUSCmdycGNTZXJ2ZXISCQkAAAAAAADwPyIzCiYKBG5hbWUSHmhnYXBpLmNvbW11bml0eS1yZW1vdGUtcGx1Z2lucxIJCQAAAAAAAPA/IiMKFgoEbmFtZRIOaG9tZVNldHVwR3VpZGUSCQkAAAAAAADwPyIuCiEKBG5hbWUSGWhvbmV5Y29tYlJlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIiChUKBG5hbWUSDWh0dHBTTE9MZXZlbHMSCQkAAAAAAADwPyIhChQKBG5hbWUSDGlkRm9yd2FyZGluZxIJCQAAAAAAAPA/IjQKJwoEbmFtZRIfaW1wcm92ZWRFeHRlcm5hbFNlc3Npb25IYW5kbGluZxIJCQAAAAAAAPA/IjgKKwoEbmFtZRIjaW1wcm92ZWRFeHRlcm5hbFNlc3Npb25IYW5kbGluZ1NBTUwSCQkAAAAAAADwPyIwCiMKBG5hbWUSG2luZGl2aWR1YWxDb29raWVQcmVmZXJlbmNlcxIJCQAAAAAAAAAAIi0KIAoEbmFtZRIYaW5maW5pdHlSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iMQokCgRuYW1lEhxpbmZpbml0eVJ1blF1ZXJpZXNJblBhcmFsbGVsEgkJAAAAAAAAAAAiKwoeCgRuYW1lEhZpbmZsdXhSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iLQogCgRuYW1lEhhpbmZsdXhkYkJhY2tlbmRNaWdyYXRpb24SCQkAAAAAAADwPyIxCiQKBG5hbWUSHGluZmx1eGRiUnVuUXVlcmllc0luUGFyYWxsZWwSCQkAAAAAAAAAACIsCh8KBG5hbWUSF2luZmx1eHFsU3RyZWFtaW5nUGFyc2VyEgkJAAAAAAAAAAAiKgodCgRuYW1lEhVpbnZlc3RpZ2F0aW9uc0JhY2tlbmQSCQkAAAAAAADwPyIrCh4KBG5hbWUSFmludml0ZVVzZXJFeHBlcmltZW50YWwSCQkAAAAAAADwPyIrCh4KBG5hbWUSFmphZWdlckJhY2tlbmRNaWdyYXRpb24SCQkAAAAAAADwPyIrCh4KBG5hbWUSFmphZWdlclJlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIpChwKBG5hbWUSFGppcmFSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iJQoYCgRuYW1lEhBqaXR0ZXJBbGVydFJ1bGVzEgkJAAAAAAAA8D8iMQokCgRuYW1lEhxqaXR0ZXJBbGVydFJ1bGVzV2l0aGluR3JvdXBzEgkJAAAAAAAAAAAiJAoXCgRuYW1lEg9rOFNGb2xkZXJDb3VudHMSCQkAAAAAAAAAACIiChUKBG5hbWUSDWs4U0ZvbGRlck1vdmUSCQkAAAAAAAAAACIpChwKBG5hbWUSFGs4c0FsbG95SW5zdHJ1Y3Rpb25zEgkJAAAAAAAA8D8iKQocCgRuYW1lEhRrdWJlcm5ldGVzQWdncmVnYXRvchIJCQAAAAAAAPA/IjUKKAoEbmFtZRIga3ViZXJuZXRlc0FnZ3JlZ2F0b3JDYXBUb2tlbkF1dGgSCQkAAAAAAADwPyIoChsKBG5hbWUSE2t1YmVybmV0ZXNBdXRoekFwaXMSCQkAAAAAAAAAACI2CikKBG5hbWUSIWt1YmVybmV0ZXNDbGllbnREYXNoYm9hcmRzRm9sZGVycxIJCQAAAAAAAPA/IikKHAoEbmFtZRIUa3ViZXJuZXRlc0Rhc2hib2FyZHMSCQkAAAAAAADwPyIsCh8KBG5hbWUSF2t1YmVybmV0ZXNEYXNoYm9hcmRzQVBJEgkJAAAAAAAA8D8iLQogCgRuYW1lEhhrdWJlcm5ldGVzRmVhdHVyZVRvZ2dsZXMSCQkAAAAAAAAAACImChkKBG5hbWUSEWt1YmVybmV0ZXNGb2xkZXJzEgkJAAAAAAAA8D8iNgopCgRuYW1lEiFrdWJlcm5ldGVzTGlicmFyeVBhbmVsQ29ubmVjdGlvbnMSCQkAAAAAAADwPyIsCh8KBG5hbWUSF2t1YmVybmV0ZXNMaWJyYXJ5UGFuZWxzEgkJAAAAAAAAAAAiKAobCgRuYW1lEhNrdWJlcm5ldGVzUGxheWxpc3RzEgkJAAAAAAAA8D8iKAobCgRuYW1lEhNrdWJlcm5ldGVzU25hcHNob3RzEgkJAAAAAAAAAAAiJQoYCgRuYW1lEhBsaWJyYXJ5UGFuZWxSQkFDEgkJAAAAAAAA8D8iKwoeCgRuYW1lEhZsb2NhbGVGb3JtYXRQcmVmZXJlbmNlEgkJAAAAAAAA8D8iKwoeCgRuYW1lEhZsb2NhbGl6YXRpb25Gb3JQbHVnaW5zEgkJAAAAAAAA8D8iHwoSCgRuYW1lEgpsb2dRTFNjb3BlEgkJAAAAAAAAAAAiNQooCgRuYW1lEiBsb2dSZXF1ZXN0c0luc3RydW1lbnRlZEFzVW5rbm93bhIJCQAAAAAAAAAAIicKGgoEbmFtZRISbG9nUm93c1BvcG92ZXJNZW51EgkJAAAAAAAA8D8iMQokCgRuYW1lEhxsb2dpY21vbml0b3JSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iLAofCgRuYW1lEhdsb2dzQ29udGV4dERhdGFzb3VyY2VVaRIJCQAAAAAAAPA/IjkKLAoEbmFtZRIkbG9nc0V4cGxvcmVUYWJsZURlZmF1bHRWaXN1YWxpemF0aW9uEgkJAAAAAAAAAAAiMgolCgRuYW1lEh1sb2dzRXhwbG9yZVRhYmxlVmlzdWFsaXNhdGlvbhIJCQAAAAAAAPA/IioKHQoEbmFtZRIVbG9nc0luZmluaXRlU2Nyb2xsaW5nEgkJAAAAAAAA8D8iJgoZCgRuYW1lEhFsb2dzUGFuZWxDb250cm9scxIJCQAAAAAAAPA/Ii4KIQoEbmFtZRIZbG9raUV4cGVyaW1lbnRhbFN0cmVhbWluZxIJCQAAAAAAAAAAIisKHgoEbmFtZRIWbG9raUxhYmVsTmFtZXNRdWVyeUFwaRIJCQAAAAAAAPA/IiYKGQoEbmFtZRIRbG9raUxvZ3NEYXRhcGxhbmUSCQkAAAAAAAAAACInChoKBG5hbWUSEmxva2lRdWVyeVNwbGl0dGluZxIJCQAAAAAAAPA/IikKHAoEbmFtZRIUbG9raVJlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyItCiAKBG5hbWUSGGxva2lSdW5RdWVyaWVzSW5QYXJhbGxlbBIJCQAAAAAAAAAAIjAKIwoEbmFtZRIbbG9raVNlbmREYXNoYm9hcmRQYW5lbE5hbWVzEgkJAAAAAAAA8D8iJwoaCgRuYW1lEhJsb2tpU2hhcmRTcGxpdHRpbmcSCQkAAAAAAAAAACIrCh4KBG5hbWUSFmxva2lTdHJ1Y3R1cmVkTWV0YWRhdGESCQkAAAAAAADwPyIrCh4KBG5hbWUSFmxvb2tlclJlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIkChcKBG5hbWUSD21haW5Pbmx5Um9sbG91dBIJCQAAAAAAAPA/IiYKGQoEbmFtZRIRbWFuYWdlZER1YWxXcml0ZXISCQkAAAAAAAAAACIqCh0KBG5hbWUSFW1hbmFnZWRQbHVnaW5zSW5zdGFsbBIJCQAAAAAAAPA/IigKGwoEbmFtZRITbWV0cmljc0Zyb21Qcm9maWxlcxIJCQAAAAAAAPA/IiMKFgoEbmFtZRIObWV0cmljc1N1bW1hcnkSCQkAAAAAAADwPyIlChgKBG5hbWUSEG1pZ3JhdGlvbkxvY2tpbmcSCQkAAAAAAADwPyIiChUKBG5hbWUSDW1sRXhwcmVzc2lvbnMSCQkAAAAAAAAAACIsCh8KBG5hbWUSF21vbmdvZGJSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iKgodCgRuYW1lEhVtc3NxbFJlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIlChgKBG5hbWUSEG10UXVlcmllckVuYWJsZWQSCQkAAAAAAADwPyIfChIKBG5hbWUSCm11bHRpLWh0dHASCQkAAAAAAADwPyIoChsKBG5hbWUSE211bHRpVGVuYW50RnJvbnRlbmQSCQkAAAAAAAAAACIvCiIKBG5hbWUSGm11bHRpVGVuYW50VGVtcENyZWRlbnRpYWxzEgkJAAAAAAAA8D8iJAoXCgRuYW1lEg9teXNxbEFuc2lRdW90ZXMSCQkAAAAAAADwPyIjChYKBG5hbWUSDm15c3FsUGFyc2VUaW1lEgkJAAAAAAAA8D8iKgodCgRuYW1lEhVteXNxbFJlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIoChsKBG5hbWUSE25hdkFkbWluU3Vic2VjdGlvbnMSCQkAAAAAAADwPyIiChUKBG5hbWUSDW5lc3RlZEZvbGRlcnMSCQkAAAAAAADwPyIsCh8KBG5hbWUSF25ldGxpZnlSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iKAobCgRuYW1lEhNuZXdCcm93c2VEYXNoYm9hcmRzEgkJAAAAAAAA8D8iMQokCgRuYW1lEhxuZXdEYXNoYm9hcmRTaGFyaW5nQ29tcG9uZW50EgkJAAAAAAAA8D8iNgopCgRuYW1lEiFuZXdEYXNoYm9hcmRXaXRoRmlsdGVyc0FuZEdyb3VwQnkSCQkAAAAAAAAAACIhChQKBG5hbWUSDG5ld0ZpbHRlcnNVSRIJCQAAAAAAAPA/IjAKIwoEbmFtZRIbbmV3SW5mbHV4RFNDb25maWdQYWdlRGVzaWduEgkJAAAAAAAA8D8iIQoUCgRuYW1lEgxuZXdMb2dzUGFuZWwSCQkAAAAAAADwPyIkChcKBG5hbWUSD25ld1BERlJlbmRlcmluZxIJCQAAAAAAAPA/IiUKGAoEbmFtZRIQbmV3UGFuZWxDaHJvbWVVSRIJCQAAAAAAAPA/IikKHAoEbmFtZRIUbmV3U2hhcmVSZXBvcnREcmF3ZXISCQkAAAAAAADwPyInChoKBG5hbWUSEm5ld1RyYWNlVmlld0hlYWRlchIJCQAAAAAAAPA/IiMKFgoEbmFtZRIObmV3Vml6VG9vbHRpcHMSCQkAAAAAAADwPyIbCg4KBG5hbWUSBm5ld2xvZxIJCQAAAAAAAPA/Ii0KIAoEbmFtZRIYbmV3cmVsaWNSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iHAoPCgRuYW1lEgduZ2FsZXJ0EgkJAAAAAAAA8D8iJwoaCgRuYW1lEhJub2RlR3JhcGhEb3RMYXlvdXQSCQkAAAAAAADwPyInChoKBG5hbWUSEm5vdGlmaWNhdGlvbkJhbm5lchIJCQAAAAAAAPA/IikKHAoEbmFtZRIUb2F1dGhSZXF1aXJlU3ViQ2xhaW0SCQkAAAAAAAAAACIsCh8KBG5hbWUSF29uUHJlbVRvQ2xvdWRNaWdyYXRpb25zEgkJAAAAAAAA8D8iOAorCgRuYW1lEiNvbmJvYXJkaW5nRmxvd0FuZFNldHVwZ3VpZGVNaWdyYXRlZBIJCQAAAAAAAPA/IiwKHwoEbmFtZRIXb25seUV4dGVybmFsT3JnUm9sZVN5bmMSCQkAAAAAAADwPyIxCiQKBG5hbWUSHG9wZW5TZWFyY2hCYWNrZW5kRmxvd0VuYWJsZWQSCQkAAAAAAADwPyIvCiIKBG5hbWUSGm9wZW5zZWFyY2hSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iJwoaCgRuYW1lEhJvdGVsTG9nc0Zvcm1hdHRpbmcSCQkAAAAAAAAAACIuCiEKBG5hbWUSGXBhZ2VyZHV0eVJlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIoChsKBG5hbWUSE3BhbmVsRmlsdGVyVmFyaWFibGUSCQkAAAAAAAAAACIoChsKBG5hbWUSE3BhbmVsRmlyc3REYXNoYm9hcmQSCQkAAAAAAADwPyIkChcKBG5hbWUSD3BhbmVsTW9uaXRvcmluZxIJCQAAAAAAAPA/IiUKGAoEbmFtZRIQcGFuZWxUaXRsZVNlYXJjaBIJCQAAAAAAAAAAIjgKKwoEbmFtZRIjcGFzc3dvcmRsZXNzTWFnaWNMaW5rQXV0aGVudGljYXRpb24SCQkAAAAAAAAAACIoChsKBG5hbWUSE3BkY0Nvbm5lY3Rpb25TdGF0dXMSCQkAAAAAAADwPyIrCh4KBG5hbWUSFnBkY0RhdGFzb3VyY2VFeHRlbnNpb24SCQkAAAAAAADwPyIrCh4KBG5hbWUSFnBkY011bHRpcGxlQ29ubmVjdGlvbnMSCQkAAAAAAADwPyIeChEKBG5hbWUSCXBkZlRhYmxlcxIJCQAAAAAAAPA/IjQKJwoEbmFtZRIfcGVybWlzc2lvbnNGaWx0ZXJSZW1vdmVTdWJxdWVyeRIJCQAAAAAAAAAAIiAKEwoEbmFtZRILcGluTmF2SXRlbXMSCQkAAAAAAADwPyIoChsKBG5hbWUSE3BsYXlsaXN0c1JlY29uY2lsZXISCQkAAAAAAAAAACIoChsKBG5hbWUSE3BsdWdpbkFzc2V0UHJvdmlkZXISCQkAAAAAAADwPyI2CikKBG5hbWUSIXBsdWdpbkNETkxhdGVzdERlcGVuZGVuY3lWZXJzaW9ucxIJCQAAAAAAAPA/IisKHgoEbmFtZRIWcGx1Z2luQ0ROTmVzdGVkUGx1Z2lucxIJCQAAAAAAAPA/IjUKKAoEbmFtZRIgcGx1Z2luUHJveHlQcmVzZXJ2ZVRyYWlsaW5nU2xhc2gSCQkAAAAAAADwPyIqCh0KBG5hbWUSFXBsdWdpbnNBUElNYW5pZmVzdEtleRIJCQAAAAAAAPA/IiYKGQoEbmFtZRIRcGx1Z2luc0F1dG9VcGRhdGUSCQkAAAAAAAAAACIpChwKBG5hbWUSFHBsdWdpbnNDRE5TeW5jTG9hZGVyEgkJAAAAAAAA8D8iLQogCgRuYW1lEhhwbHVnaW5zRGV0YWlsc1JpZ2h0UGFuZWwSCQkAAAAAAADwPyIrCh4KBG5hbWUSFnBsdWdpbnNGcm9udGVuZFNhbmRib3gSCQkAAAAAAADwPyIrCh4KBG5hbWUSFnBsdWdpbnNTa2lwSG9zdEVudlZhcnMSCQkAAAAAAADwPyIlChgKBG5hbWUSEHBsdWdpbnNTcmlDaGVja3MSCQkAAAAAAADwPyIsCh8KBG5hbWUSF3ByZWZlckxpYnJhcnlQYW5lbFRpdGxlEgkJAAAAAAAAAAAiKQocCgRuYW1lEhRwcmVpbnN0YWxsQXV0b1VwZGF0ZRIJCQAAAAAAAPA/IjkKLAoEbmFtZRIkcHJlc2VydmVEYXNoYm9hcmRTdGF0ZVdoZW5OYXZpZ2F0aW5nEgkJAAAAAAAAAAAiIAoTCgRuYW1lEgtwcm9tUUxTY29wZRIJCQAAAAAAAPA/IjQKJwoEbmFtZRIfcHJvbWV0aGV1c0F6dXJlT3ZlcnJpZGVBdWRpZW5jZRIJCQAAAAAAAPA/IjgKKwoEbmFtZRIjcHJvbWV0aGV1c0NvZGVNb2RlTWV0cmljTmFtZXNTZWFyY2gSCQkAAAAAAADwPyIxCiQKBG5hbWUSHHByb21ldGhldXNDb25maWdPdmVyaGF1bEF1dGgSCQkAAAAAAADwPyIoChsKBG5hbWUSE3Byb21ldGhldXNEYXRhcGxhbmUSCQkAAAAAAADwPyIxCiQKBG5hbWUSHHByb21ldGhldXNNZXRyaWNFbmN5Y2xvcGVkaWESCQkAAAAAAADwPyInChoKBG5hbWUSEnByb21ldGhldXNQcm9tUUFJTBIJCQAAAAAAAPA/Ii8KIgoEbmFtZRIacHJvbWV0aGV1c1JlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIzCiYKBG5hbWUSHnByb21ldGhldXNSZXNvdXJjZUJyb3dzZXJDYWNoZRIJCQAAAAAAAPA/IjMKJgoEbmFtZRIecHJvbWV0aGV1c1J1blF1ZXJpZXNJblBhcmFsbGVsEgkJAAAAAAAA8D8iOAorCgRuYW1lEiNwcm9tZXRoZXVzU3BlY2lhbENoYXJzSW5MYWJlbFZhbHVlcxIJCQAAAAAAAAAAIjIKJQoEbmFtZRIdcHJvbWV0aGV1c1N0cmVhbWluZ0pTT05QYXJzZXISCQkAAAAAAADwPyIrCh4KBG5hbWUSFnByb21ldGhldXNVc2VzQ29tYm9ib3gSCQkAAAAAAADwPyIhChQKBG5hbWUSDHByb3Zpc2lvbmluZxIJCQAAAAAAAAAAIi8KIgoEbmFtZRIacHJvdmlzaW9uaW5nU2VjcmV0c1NlcnZpY2USCQkAAAAAAAAAACIlChgKBG5hbWUSEHB1YmxpY0Rhc2hib2FyZHMSCQkAAAAAAADwPyIxCiQKBG5hbWUSHHB1YmxpY0Rhc2hib2FyZHNFbWFpbFNoYXJpbmcSCQkAAAAAAAAAACIqCh0KBG5hbWUSFXB1YmxpY0Rhc2hib2FyZHNTY2VuZRIJCQAAAAAAAPA/IiEKFAoEbmFtZRIMcXVlcnlMaWJyYXJ5EgkJAAAAAAAAAAAiIQoUCgRuYW1lEgxxdWVyeVNlcnZpY2USCQkAAAAAAADwPyIsCh8KBG5hbWUSF3F1ZXJ5U2VydmljZUZyb21FeHBsb3JlEgkJAAAAAAAAAAAiJwoaCgRuYW1lEhJxdWVyeVNlcnZpY2VGcm9tVUkSCQkAAAAAAAAAACInChoKBG5hbWUSEnF1ZXJ5U2VydmljZU1UUGF0aBIJCQAAAAAAAPA/IigKGwoEbmFtZRITcXVlcnlTZXJ2aWNlUmV3cml0ZRIJCQAAAAAAAAAAIikKHAoEbmFtZRIUcmVjb3JkZWRRdWVyaWVzTXVsdGkSCQkAAAAAAADwPyIkChcKBG5hbWUSD3JlZGlzTGl2ZUVuZ2luZRIJCQAAAAAAAPA/Ii0KIAoEbmFtZRIYcmVkc2hpZnRSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iLwoiCgRuYW1lEhpyZWZhY3RvclZhcmlhYmxlc1RpbWVSYW5nZRIJCQAAAAAAAAAAIi0KIAoEbmFtZRIYcmVncmVzc2lvblRyYW5zZm9ybWF0aW9uEgkJAAAAAAAAAAAiMwomCgRuYW1lEh5yZWxvYWREYXNoYm9hcmRzT25QYXJhbXNDaGFuZ2USCQkAAAAAAAAAACIgChMKBG5hbWUSC3JlbW90ZVJ1bGVyEgkJAAAAAAAA8D8iLAofCgRuYW1lEhdyZW1vdGVSdWxlckNvbmZpZ1N5bmNlchIJCQAAAAAAAPA/IiIKFQoEbmFtZRINcmVuZGVyQXV0aEpXVBIJCQAAAAAAAAAAIjUKKAoEbmFtZRIgcmVuZGVyZXJEaXNhYmxlQXBwUGx1Z2luc1ByZWxvYWQSCQkAAAAAAAAAACIlChgKBG5hbWUSEHJlcG9ydGluZ1JldHJpZXMSCQkAAAAAAADwPyItCiAKBG5hbWUSGHJlcG9ydGluZ1VzZVJhd1RpbWVSYW5nZRIJCQAAAAAAAPA/IiYKGQoEbmFtZRIRcmVzdG9yZURhc2hib2FyZHMSCQkAAAAAAAAAACIlChgKBG5hbWUSEHJvbGVQaWNrZXJEcmF3ZXISCQkAAAAAAAAAACIvCiIKBG5hbWUSGnNhbGVzZm9yY2VSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iLAofCgRuYW1lEhdzYXBoYW5hUmVtb3RlRGF0YXNvdXJjZRIJCQAAAAAAAPA/Ih0KEAoEbmFtZRIIc2NvcGVBcGkSCQkAAAAAAAAAACIhChQKBG5hbWUSDHNjb3BlRmlsdGVycxIJCQAAAAAAAAAAIikKHAoEbmFtZRIUc2NvcGVTZWFyY2hBbGxMZXZlbHMSCQkAAAAAAAAAACIkChcKBG5hbWUSD3NjcmlwdGVkLWNoZWNrcxIJCQAAAAAAAPA/IjEKJAoEbmFtZRIcc2VjcmV0c01hbmFnZW1lbnRBcHBQbGF0Zm9ybRIJCQAAAAAAAAAAIi4KIQoEbmFtZRIZc2VjdXJlU29ja3NEU1Byb3h5RW5hYmxlZBIJCQAAAAAAAAAAIi8KIgoEbmFtZRIac2VjdXJlU29ja3NEYXRhc291cmNlUHJveHkSCQkAAAAAAADwPyIrCh4KBG5hbWUSFnNlbnRyeVJlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIvCiIKBG5hbWUSGnNlcnZpY2Vub3dSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iLwoiCgRuYW1lEhpzZXR1cEd1aWRlSG9tZXBhZ2VUYWtlb3ZlchIJCQAAAAAAAPA/IikKHAoEbmFtZRIUc2V0dXBHdWlkZVBsYW5QaWNrZXISCQkAAAAAAADwPyIqCh0KBG5hbWUSFXNoYXJpbmdEYXNoYm9hcmRJbWFnZRIJCQAAAAAAAPA/IjQKJwoEbmFtZRIfc2hvd0Rhc2hib2FyZFZhbGlkYXRpb25XYXJuaW5ncxIJCQAAAAAAAAAAIi0KIAoEbmFtZRIYc2lnbmFsZnhSZW1vdGVEYXRhc291cmNlEgkJAAAAAAAA8D8iLQogCgRuYW1lEhhzaXRld2lzZVJlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIuCiEKBG5hbWUSGXNraXBUb2tlblJvdGF0aW9uSWZSZWNlbnQSCQkAAAAAAADwPyIoChsKBG5hbWUSE3NtLWFsZXJ0cy1wZXItY2hlY2sSCQkAAAAAAADwPyIuCiEKBG5hbWUSGXNub3dmbGFrZVJlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIrCh4KBG5hbWUSFnNwbHVua1JlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIzCiYKBG5hbWUSHnNxbERhdGFzb3VyY2VEYXRhYmFzZVNlbGVjdGlvbhIJCQAAAAAAAPA/IiMKFgoEbmFtZRIOc3FsRXhwcmVzc2lvbnMSCQkAAAAAAAAAACIpChwKBG5hbWUSFHNzZUdyb3VwQnlEYXRhc291cmNlEgkJAAAAAAAAAAAiIwoWCgRuYW1lEg5zc29TZXR0aW5nc0FwaRIJCQAAAAAAAPA/IiQKFwoEbmFtZRIPc3NvU2V0dGluZ3NMREFQEgkJAAAAAAAA8D8iJAoXCgRuYW1lEg9zc29TZXR0aW5nc1NBTUwSCQkAAAAAAADwPyIcCg8KBG5hbWUSB3N0b3JhZ2USCQkAAAAAAAAAACIuCiEKBG5hbWUSGXN1bW9sb2dpY1JlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIuCiEKBG5hbWUSGXN1cnJlYWxkYlJlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIeChEKBG5hbWUSCXN3YWdnZXJVaRIJCQAAAAAAAPA/Ii4KIQoEbmFtZRIZc3ludGhldGljLW1vbml0b3JpbmctcmJhYxIJCQAAAAAAAPA/IjwKLwoEbmFtZRInc3ludGhldGljLW1vbml0b3Jpbmctc2VjcmV0cy1tYW5hZ2VtZW50EgkJAAAAAAAA8D8iKwoeCgRuYW1lEhZzeW50aGV0aWNzLWFkaG9jY2hlY2tzEgkJAAAAAAAA8D8iJgoZCgRuYW1lEhFzeW50aGV0aWNzLXNjZW5lcxIJCQAAAAAAAPA/IjEKJAoEbmFtZRIcc3ludGhldGljc1BlckNoZWNrRGFzaGJvYXJkcxIJCQAAAAAAAPA/IiEKFAoEbmFtZRIMdGFibGVOZXh0R2VuEgkJAAAAAAAA8D8iKQocCgRuYW1lEhR0YWJsZVNoYXJlZENyb3NzaGFpchIJCQAAAAAAAAAAIiMKFgoEbmFtZRIOdGFidWxhck51bWJlcnMSCQkAAAAAAAAAACIkChcKBG5hbWUSD3RlYW1IdHRwSGVhZGVycxIJCQAAAAAAAPA/IikKHAoEbmFtZRIUdGVhbUh0dHBIZWFkZXJzTWltaXISCQkAAAAAAADwPyIpChwKBG5hbWUSFHRlYW1IdHRwSGVhZGVyc1RlbXBvEgkJAAAAAAAAAAAiMgolCgRuYW1lEh10ZW1wbGF0ZVZhcmlhYmxlc1VzZXNDb21ib2JveBIJCQAAAAAAAAAAIiIKFQoEbmFtZRINdGVtcG9BbGVydGluZxIJCQAAAAAAAAAAIicKGgoEbmFtZRISdGVtcG9CYWNrZW5kU2VhcmNoEgkJAAAAAAAA8D8iIAoTCgRuYW1lEgt0ZW1wb1NlYXJjaBIJCQAAAAAAAPA/IiYKGQoEbmFtZRIRdGltZVJhbmdlUHJvdmlkZXISCQkAAAAAAAAAACIkChcKBG5hbWUSD3RpbWVTZXJpZXNUYWJsZRIJCQAAAAAAAPA/Ii8KIgoEbmFtZRIadGltZXN0cmVhbVJlbW90ZURhdGFzb3VyY2USCQkAAAAAAADwPyIhChQKBG5hbWUSDHRsc01lbWNhY2hlZBIJCQAAAAAAAPA/IiUKGAoEbmFtZRIQdHJhY2VRTFN0cmVhbWluZxIJCQAAAAAAAPA/IiMKFgoEbmFtZRIOdHJhY2VUb01ldHJpY3MSCQkAAAAAAADwPyIkChcKBG5hbWUSD3RyYWNlVG9Qcm9maWxlcxIJCQAAAAAAAPA/IiIKFQoEbmFtZRINdHJhY2VxbFNlYXJjaBIJCQAAAAAAAPA/Ii0KIAoEbmFtZRIYdHJhY2VzRW1iZWRkZWRGbGFtZUdyYXBoEgkJAAAAAAAA8D8iLAofCgRuYW1lEhd0cmFuc2Zvcm1hdGlvbnNSZWRlc2lnbhIJCQAAAAAAAPA/IjMKJgoEbmFtZRIedHJhbnNmb3JtYXRpb25zVmFyaWFibGVTdXBwb3J0EgkJAAAAAAAA8D8iIwoWCgRuYW1lEg51bmlmaWVkSGlzdG9yeRIJCQAAAAAAAAAAIiMKFgoEbmFtZRIOdW5pZmllZE5hdmJhcnMSCQkAAAAAAAAAACImChkKBG5hbWUSEXVuaWZpZWRSZXF1ZXN0TG9nEgkJAAAAAAAA8D8iIwoWCgRuYW1lEg51bmlmaWVkU3RvcmFnZRIJCQAAAAAAAPA/IjQKJwoEbmFtZRIfdW5pZmllZFN0b3JhZ2VCaWdPYmplY3RzU3VwcG9ydBIJCQAAAAAAAAAAIjUKKAoEbmFtZRIgdW5pZmllZFN0b3JhZ2VHcnBjQ29ubmVjdGlvblBvb2wSCQkAAAAAAADwPyIwCiMKBG5hbWUSG3VuaWZpZWRTdG9yYWdlSGlzdG9yeVBydW5lchIJCQAAAAAAAPA/IikKHAoEbmFtZRIUdW5pZmllZFN0b3JhZ2VTZWFyY2gSCQkAAAAAAAAAACI6Ci0KBG5hbWUSJXVuaWZpZWRTdG9yYWdlU2VhcmNoRHVhbFJlYWRlckVuYWJsZWQSCQkAAAAAAADwPyI8Ci8KBG5hbWUSJ3VuaWZpZWRTdG9yYWdlU2VhcmNoUGVybWlzc2lvbkZpbHRlcmluZxIJCQAAAAAAAPA/IjIKJQoEbmFtZRIddW5pZmllZFN0b3JhZ2VTZWFyY2hTcHJpbmtsZXMSCQkAAAAAAAAAACIrCh4KBG5hbWUSFnVuaWZpZWRTdG9yYWdlU2VhcmNoVUkSCQkAAAAAAAAAACIxCiQKBG5hbWUSHHVzZVByb21ldGhldXNGcm9udGVuZFBhY2thZ2USCQkAAAAAAADwPyIwCiMKBG5hbWUSG3VzZVNjb3Blc05hdmlnYXRpb25FbmRwb2ludBIJCQAAAAAAAAAAIjQKJwoEbmFtZRIfdXNlU2Vzc2lvblN0b3JhZ2VGb3JSZWRpcmVjdGlvbhIJCQAAAAAAAPA/IiMKFgoEbmFtZRIOdXNlclN0b3JhZ2VBUEkSCQkAAAAAAADwPyIkChcKBG5hbWUSD3dhcmdhbWVzVGVzdGluZxIJCQAAAAAAAPA/Ii4KIQoEbmFtZRIZd2F2ZWZyb250UmVtb3RlRGF0YXNvdXJjZRIJCQAAAAAAAPA/IikKHAoEbmFtZRIUeHJheVJlbW90ZURhdGFzb3VyY2USCQkAAAAAAADw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FwkAAAAAAAAAABoMCJONhMQGENy36s8DcAokZ3JhZmFuYV9pbnN0YW5jZXNfYXBpX3JlcXVlc3RzX3RvdGFsEit1c2FnZSBjb3VudGVyIGZvciBpbnN0YW5jZSBwbHVnaW5zIHJlcXVlc3RzGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQp5vpzwOzAQomZ3JhZmFuYV9sZGFwX3VzZXJzX3N5bmNfZXhlY3V0aW9uX3RpbWUSLnN1bW1hcnkgZm9yIExEQVAgdXNlcnMgc3luYyBleGVjdXRpb24gZHVyYXRpb24YAiJXIlUIABEAAAAAAAAAABoSCQAAAAAAAOA/EQEAAAAAAPh/GhIJzczMzMzM7D8RAQAAAAAA+H8aEgmuR+F6FK7vPxEBAAAAAAD4fyIMCJONhMQGEMuBmc8DpQYKM2dyYWZhbmFfbGl2ZV9icm9rZXJfcmVkaXNfcHViX3N1Yl9idWZmZXJlZF9tZXNzYWdlcxItTnVtYmVyIG9mIG1lc3NhZ2VzIGJ1ZmZlcmVkIGluIFJlZGlzIFBVQi9TVUIuGAEiTAoPCgticm9rZXJfbmFtZRIAChYKDGNoYW5uZWxfdHlwZRIGY2xpZW50ChYKEXB1Yl9zdWJfcHJvY2Vzc29yEgEwEgkJAAAAAAAAAAAiTAoPCgticm9rZXJfbmFtZRIAChYKDGNoYW5uZWxfdHlwZRIGY2xpZW50ChYKEXB1Yl9zdWJfcHJvY2Vzc29yEgExEgkJAAAAAAAAAAAiTAoPCgticm9rZXJfbmFtZRIAChYKDGNoYW5uZWxfdHlwZRIGY2xpZW50ChYKEXB1Yl9zdWJfcHJvY2Vzc29yEgEyEgkJAAAAAAAAAAAiTAoPCgticm9rZXJfbmFtZRIAChYKDGNoYW5uZWxfdHlwZRIGY2xpZW50ChYKEXB1Yl9zdWJfcHJvY2Vzc29yEgEzEgkJAAAAAAAAAAAiTAoPCgticm9rZXJfbmFtZRIAChYKDGNoYW5uZWxfdHlwZRIGY2xpZW50ChYKEXB1Yl9zdWJfcHJvY2Vzc29yEgE0EgkJAAAAAAAAAAAiTAoPCgticm9rZXJfbmFtZRIAChYKDGNoYW5uZWxfdHlwZRIGY2xpZW50ChYKEXB1Yl9zdWJfcHJvY2Vzc29yEgE1EgkJAAAAAAAAAAAiTAoPCgticm9rZXJfbmFtZRIAChYKDGNoYW5uZWxfdHlwZRIGY2xpZW50ChYKEXB1Yl9zdWJfcHJvY2Vzc29yEgE2EgkJAAAAAAAAAAAiTAoPCgticm9rZXJfbmFtZRIAChYKDGNoYW5uZWxfdHlwZRIGY2xpZW50ChYKEXB1Yl9zdWJfcHJvY2Vzc29yEgE3EgkJAAAAAAAAAAAiTQoPCgticm9rZXJfbmFtZRIAChcKDGNoYW5uZWxfdHlwZRIHY29udHJvbAoWChFwdWJfc3ViX3Byb2Nlc3NvchIBMBIJCQAAAAAAAAAAggIKMmdyYWZhbmFfbGl2ZV9icm9rZXJfcmVkaXNfcHViX3N1Yl9kcm9wcGVkX21lc3NhZ2VzEkFOdW1iZXIgb2YgZHJvcHBlZCBtZXNzYWdlcyBvbiBhcHBsaWNhdGlvbiBsZXZlbCBpbiBSZWRpcyBQVUIvU1VCLhgAIkIKDwoLYnJva2VyX25hbWUSAAoWCgxjaGFubmVsX3R5cGUSBmNsaWVudBoXCQAAAAAAAAAAGgwIt42ExAYQourZ0QIiQwoPCgticm9rZXJfbmFtZRIAChcKDGNoYW5uZWxfdHlwZRIHY29udHJvbBoXCQAAAAAAAAAAGgwIt42ExAYQtJHZ0QKLDQosZ3JhZmFuYV9saXZlX2NsaWVudF9jb21tYW5kX2R1cmF0aW9uX3NlY29uZHMSIENsaWVudCBjb21tYW5kIGR1cmF0aW9uIHN1bW1hcnkuGAIigQEKFQoRY2hhbm5lbF9uYW1lc3BhY2USAAoRCgZtZXRob2QSB2Nvbm5lY3QiVQgAEQAAAAAAAAAAGhIJAAAAAAAA4D8RAQAAAAAA+H8aEgmuR+F6FK7vPxEBAAAAAAD4fxoSCSuHFtnO9+8/EQEAAAAAAPh/IgwIt42ExAYQg87c0QIigQEKFQoRY2hhbm5lbF9uYW1lc3BhY2USAAoRCgZtZXRob2QSB2hpc3RvcnkiVQgAEQAAAAAAAAAAGhIJAAAAAAAA4D8RAQAAAAAA+H8aEgmuR+F6FK7vPxEBAAAAAAD4fxoSCSuHFtnO9+8/EQEAAAAAAPh/IgwIt42ExAYQmffp0QIiggEKFQoRY2hhbm5lbF9uYW1lc3BhY2USAAoSCgZtZXRob2QSCHByZXNlbmNlIlUIABEAAAAAAAAAABoSCQAAAAAA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t42ExAYQqf/X0QLlAQoiZ3JhZmFuYV9wYWdlX3Jlc3BvbnNlX3N0YXR1c190b3RhbBIZcGFnZSBodHRwIHJlc3BvbnNlIHN0YXR1cxgAIiYKCwoEY29kZRIDMjAwGhcJAAAAAABAVkAaDAiTjYTEBhD0rpHPAyImCgsKBGNvZGUSAzQwNBoXCQAAAAAAAAAAGgwIk42ExAYQ+6ySzwMiJgoLCgRjb2RlEgM1MDAaFwkAAAAAAAAAABoMCJONhMQGELe4ks8DIioKDwoEY29kZRIHdW5rbm93bhoXCQAAAAAAAAAAGgwIk42ExAYQkcOSzwPdPgoZZ3JhZmFuYV9wbHVnaW5fYnVpbGRfaW5mbxJyQSBtZXRyaWMgd2l0aCBhIGNvbnN0YW50ICcxJyB2YWx1ZSBsYWJlbGVkIGJ5IHBsdWdpbklkLCBwbHVnaW5UeXBlIGFuZCB2ZXJzaW9uIGZyb20gd2hpY2ggR3JhZmFuYSBwbHVnaW4gd2FzIGJ1aWx0GAEiaQobCglwbHVnaW5faWQSDmNsZXhwb3J0ZXItYXBwChIKC3BsdWdpbl90eXBlEgNhcHAKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEAoHdmVyc2lvbhIFMS4yLjESCQkAAAAAAADwPyJqChsKCXBsdWdpbl9pZBIOY2xvdWQtaG9tZS1hcHAKEgoLcGx1Z2luX3R5cGUSA2FwcAoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAoRCgd2ZXJzaW9uEgY0LjI0LjASCQkAAAAAAADwPyJxCiAKCXBsdWdpbl9pZBITY2xvdWQtaG9tZS1kaXNjb3ZlcgoUCgtwbHVnaW5fdHlwZRIFcGFuZWwKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEQoHdmVyc2lvbhIGdjEuNi4xEgkJAAAAAAAA8D8idQokCglwbHVnaW5faWQSF2Nsb3VkLWhvbWUtaW50ZWdyYXRpb25zChQKC3BsdWdpbl90eXBlEgVwYW5lbAoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAoRCgd2ZXJzaW9uEgZ2MS42LjESCQkAAAAAAADwPyJuCh0KCXBsdWdpbl9pZBIQY2xvdWQtaG9tZS1saW5rcwoUCgtwbHVnaW5fdHlwZRIFcGFuZWwKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEQoHdmVyc2lvbhIGdjEuNi4xEgkJAAAAAAAA8D8icAofCglwbHVnaW5faWQSEmNsb3VkLWhvbWUtd2VsY29tZQoUCgtwbHVnaW5fdHlwZRIFcGFuZWwKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEQoHdmVyc2lvbhIGdjEuNi4xEgkJAAAAAAAA8D8iggEKKwoJcGx1Z2luX2lkEh5kbG9wZXM3LWFwcGR5bmFtaWNzLWRhdGFzb3VyY2UKGQoLcGx1Z2luX3R5cGUSCmRhdGFzb3VyY2UKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEgoHdmVyc2lvbhIHMy4xMS4xMBIJCQAAAAAAAPA/IngKKQoJcGx1Z2luX2lkEhxncmFmYW5hLWFkYXB0aXZlLW1ldHJpY3MtYXBwChIKC3BsdWdpbl90eXBlEgNhcHAKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEQoHdmVyc2lvbhIGMC4yNy4wEgkJAAAAAAAA8D8idAolCglwbHVnaW5faWQSGGdyYWZhbmEtYWRhcHRpdmVsb2dzLWFwcAoSCgtwbHVnaW5fdHlwZRIDYXBwChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkChEKB3ZlcnNpb24SBjAuMTcuNRIJCQAAAAAAAPA/Im8KIAoJcGx1Z2luX2lkEhNncmFmYW5hLWFkdmlzb3ItYXBwChIKC3BsdWdpbl90eXBlEgNhcHAKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEQoHdmVyc2lvbhIGMC4wLjEwEgkJAAAAAAAA8D8icwokCglwbHVnaW5faWQSF2dyYWZhbmEtYWxlcnRpbmctdWktYXBwChIKC3BsdWdpbl90eXBlEgNhcHAKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEQoHdmVyc2lvbhIGdjAuOS4zEgkJAAAAAAAA8D8iggEKLAoJcGx1Z2luX2lkEh9ncmFmYW5hLWFsZXJ0bWFuYWdlci1kYXRhc291cmNlChkKC3BsdWdpbl90eXBlEgpkYXRhc291cmNlChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkChEKB3ZlcnNpb24SBnYwLjkuMxIJCQAAAAAAAPA/IoEBCioKCXBsdWdpbl9pZBIdZ3JhZmFuYS1hcHAtb2JzZXJ2YWJpbGl0eS1hcHAKEgoLcGx1Z2luX3R5cGUSA2FwcAoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAoZCgd2ZXJzaW9uEg4xLjU4LjMtMGYwZTY2NhIJCQAAAAAAAPA/IngKKAoJcGx1Z2luX2lkEhtncmFmYW5hLWFwcC1zZGstZXhhbXBsZS1hcHAKEgoLcGx1Z2luX3R5cGUSA2FwcAoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAoSCgd2ZXJzaW9uEgdmMzE1Y2MwEgkJAAAAAAAA8D8ibwogCglwbHVnaW5faWQSE2dyYWZhbmEtYXNzZXJ0cy1hcHAKEgoLcGx1Z2luX3R5cGUSA2FwcAoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAoRCgd2ZXJzaW9uEgYwLjAuOTISCQkAAAAAAADwPyKaAQoiCglwbHVnaW5faWQSFWdyYWZhbmEtYXNzaXN0YW50LWFwcAoSCgtwbHVnaW5fdHlwZRIDYXBwChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkCjoKB3ZlcnNpb24SLzAuMC4xMis2MGVmNDQ0MDUxZWQzOWQ4ZDZjNjM1YTdkNTg1MzEyOTA4MzQ2ZTQyEgkJAAAAAAAA8D8idAolCglwbHVnaW5faWQSGGdyYWZhbmEtYXR0cmlidXRpb25zLWFwcAoSCgtwbHVnaW5fdHlwZRIDYXBwChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkChEKB3ZlcnNpb24SBjEuMC4zMRIJCQAAAAAAAPA/ImwKHQoJcGx1Z2luX2lkEhBncmFmYW5hLWF1dGgtYXBwChIKC3BsdWdpbl90eXBlEgNhcHAKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEQoHdmVyc2lvbhIGMi4xMC4wEgkJAAAAAAAA8D8ifQooCglwbHVnaW5faWQSG2dyYWZhbmEtYmlncXVlcnktZGF0YXNvdXJjZQoZCgtwbHVnaW5fdHlwZRIKZGF0YXNvdXJjZQoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAoQCgd2ZXJzaW9uEgUyLjEuMBIJCQAAAAAAAPA/InAKIgoJcGx1Z2luX2lkEhVncmFmYW5hLWNvbGxlY3Rvci1hcHAKEgoLcGx1Z2luX3R5cGUSA2FwcAoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAoQCgd2ZXJzaW9uEgUzLjQuNBIJCQAAAAAAAPA/IncKKQoJcGx1Z2luX2lkEhxncmFmYW5hLWNvc3RtYW5hZ2VtZW50dWktYXBwChIKC3BsdWdpbl90eXBlEgNhcHAKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEAoHdmVyc2lvbhIFMC43LjMSCQkAAAAAAADwPyJrChwKCXBsdWdpbl9pZBIPZ3JhZmFuYS1jc3AtYXBwChIKC3BsdWdpbl90eXBlEgNhcHAKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEQoHdmVyc2lvbhIGMy4xNS4wEgkJAAAAAAAA8D8igQEKKgoJcGx1Z2luX2lkEh1ncmFmYW5hLWRhdGFicmlja3MtZGF0YXNvdXJjZQoZCgtwbHVnaW5fdHlwZRIKZGF0YXNvdXJjZQoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAoSCgd2ZXJzaW9uEgcxLjEwLjEwEgkJAAAAAAAA8D8ikAEKHwoJcGx1Z2luX2lkEhJncmFmYW5hLWRibzExeS1hcHAKEgoLcGx1Z2luX3R5cGUSA2FwcAoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAozCgd2ZXJzaW9uEig2OTIyMGI5NmM2OTg4NTgyYjYxNzdlZDU4NzY3YzVmNDg2YWY1YmUwEgkJAAAAAAAA8D8idgonCglwbHVnaW5faWQSGmdyYWZhbmEtZGVtb2Rhc2hib2FyZHMtYXBwChIKC3BsdWdpbl90eXBlEgNhcHAKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEQoHdmVyc2lvbhIGMS4xMy4wEgkJAAAAAAAA8D8ifwopCglwbHVnaW5faWQSHGdyYWZhbmEtZHluYXRyYWNlLWRhdGFzb3VyY2UKGQoLcGx1Z2luX3R5cGUSCmRhdGFzb3VyY2UKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEQoHdmVyc2lvbhIGMy4yNS4yEgkJAAAAAAAA8D8icQoiCglwbHVnaW5faWQSFWdyYWZhbmEtZWFzeXN0YXJ0LWFwcAoSCgtwbHVnaW5fdHlwZRIDYXBwChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkChEKB3ZlcnNpb24SBnY4LjAuMhIJCQAAAAAAAPA/Ip0BCiYKCXBsdWdpbl9pZBIZZ3JhZmFuYS1leHBsb3JldHJhY2VzLWFwcAoSCgtwbHVnaW5fdHlwZRIDYXBwChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkCjkKB3ZlcnNpb24SLjEuMS4yKzZiNDUyN2JlMzI1NzJiNjkyYTc3MzEwNWE2NDc4MDM5ZDllZTg2YjISCQkAAAAAAADwPyKEAQohCglwbHVnaW5faWQSFGdyYWZhbmEtaW5jaWRlbnQtYXBwChIKC3BsdWdpbl90eXBlEgNhcHAKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKJQoHdmVyc2lvbhIadjEuMTE5LjAtZGV2LjE4K2diNzI3ZDVlOTMSCQkAAAAAAADwPyJ+CigKCXBsdWdpbl9pZBIbZ3JhZmFuYS1pbmNpZGVudC1kYXRhc291cmNlChkKC3BsdWdpbl90eXBlEgpkYXRhc291cmNlChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkChEKB3ZlcnNpb24SBjEuNjEuMBIJCQAAAAAAAPA/InUKJwoJcGx1Z2luX2lkEhpncmFmYW5hLWludmVzdGlnYXRpb25zLWFwcAoSCgtwbHVnaW5fdHlwZRIDYXBwChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkChAKB3ZlcnNpb24SBTAuMi40EgkJAAAAAAAA8D8ifQocCglwbHVnaW5faWQSD2dyYWZhbmEtaXJtLWFwcAoSCgtwbHVnaW5fdHlwZRIDYXBwChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkCiMKB3ZlcnNpb24SGHYwLjQxLjEtZGV2LjErZ2I3MjdkNWU5MxIJCQAAAAAAAPA/InkKJAoJcGx1Z2luX2lkEhdncmFmYW5hLWppcmEtZGF0YXNvdXJjZQoZCgtwbHVnaW5fdHlwZRIKZGF0YXNvdXJjZQoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAoQCgd2ZXJzaW9uEgUyLjEuMhIJCQAAAAAAAPA/ImsKHAoJcGx1Z2luX2lkEg9ncmFmYW5hLWs4cy1hcHAKEgoLcGx1Z2luX3R5cGUSA2FwcAoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAoRCgd2ZXJzaW9uEgYyLjE5LjMSCQkAAAAAAADwPyJwCiEKCXBsdWdpbl9pZBIUZ3JhZmFuYS1rb3dhbHNraS1hcHAKEgoLcGx1Z2luX3R5cGUSA2FwcAoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAoRCgd2ZXJzaW9uEgYxLjIwLjMSCQkAAAAAAADwPyKCAQofCglwbHVnaW5faWQSEmdyYWZhbmEtbGFiZWxzLWFwcAoSCgtwbHVnaW5fdHlwZRIDYXBwChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkCiUKB3ZlcnNpb24SGmdpdGh1Yi1hY3Rpb25zLTE2MzQ2ODk5Mzk4EgkJAAAAAAAA8D8ilAEKHAoJcGx1Z2luX2lkEg9ncmFmYW5hLWxsbS1hcHAKEgoLcGx1Z2luX3R5cGUSA2FwcAoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAo6Cgd2ZXJzaW9uEi8wLjIyLjMrMTA5YTc3ODg0ZTgxYTAxY2E3Mjc0NjQ1Y2IzMGE5NmQ5MzIwZjc2YxIJCQAAAAAAAPA/InkKKgoJcGx1Z2luX2lkEh1ncmFmYW5hLWxvZ3ZvbHVtZWV4cGxvcmVyLWFwcAoSCgtwbHVnaW5fdHlwZRIDYXBwChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkChEKB3ZlcnNpb24SBjAuMTUuMBIJCQAAAAAAAPA/IpwBCiQKCXBsdWdpbl9pZBIXZ3JhZmFuYS1sb2tpZXhwbG9yZS1hcHAKEgoLcGx1Z2luX3R5cGUSA2FwcAoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAo6Cgd2ZXJzaW9uEi8xLjAuMjMrNDlmZGY0NDVmYjE4ZmY5NzhkNTE2MmVmMzk2MTA4YTc2ZjI0MWM5NxIJCQAAAAAAAPA/IncKKQoJcGx1Z2luX2lkEhxncmFmYW5hLW1ldHJpY3NkcmlsbGRvd24tYXBwChIKC3BsdWdpbl90eXBlEgNhcHAKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEAoHdmVyc2lvbhIFMS4wLjcSCQkAAAAAAADwPyJqChsKCXBsdWdpbl9pZBIOZ3JhZmFuYS1tbC1hcHAKEgoLcGx1Z2luX3R5cGUSA2FwcAoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAoRCgd2ZXJzaW9uEgYxLjI5LjISCQkAAAAAAADwPyJ9CicKCXBsdWdpbl9pZBIaZ3JhZmFuYS1tb25nb2RiLWRhdGFzb3VyY2UKGQoLcGx1Z2luX3R5cGUSCmRhdGFzb3VyY2UKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEQoHdmVyc2lvbhIGMS4yNC44EgkJAAAAAAAA8D8igAEKHwoJcGx1Z2luX2lkEhJncmFmYW5hLW9uY2FsbC1hcHAKEgoLcGx1Z2luX3R5cGUSA2FwcAoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAojCgd2ZXJzaW9uEhh2MS40My4xLWRldi4xK2diNzI3ZDVlOTMSCQkAAAAAAADwPyKAAQoqCglwbHVnaW5faWQSHWdyYWZhbmEtb3BlbnNlYXJjaC1kYXRhc291cmNlChkKC3BsdWdpbl90eXBlEgpkYXRhc291cmNlChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkChEKB3ZlcnNpb24SBjIuMjguMBIJCQAAAAAAAPA/ImwKHAoJcGx1Z2luX2lkEg9ncmFmYW5hLXBkYy1hcHAKEgoLcGx1Z2luX3R5cGUSA2FwcAoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAoSCgd2ZXJzaW9uEgcwLjEyLjEzEgkJAAAAAAAA8D8iqgEKMwoJcGx1Z2luX2lkEiZncmFmYW5hLXBsdWdpbnNwbGF0Zm9ybXByb3Zpc2lvbmVkLWFwcAoSCgtwbHVnaW5fdHlwZRIDYXBwChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkCjkKB3ZlcnNpb24SLjEuMi4xK2I5OWI3ZDU3ZGZiNzJmMWQyZGMzZDBhYWE0NDVjOTgyNjc1ZjAyNDUSCQkAAAAAAADwPyJ4CiIKCXBsdWdpbl9pZBIVZ3JhZmFuYS1weXJvc2NvcGUtYXBwChIKC3BsdWdpbl90eXBlEgNhcHAKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKGAoHdmVyc2lvbhINMS41LjAtNzBhNjFiZRIJCQAAAAAAAPA/InsKJQoJcGx1Z2luX2lkEhhncmFmYW5hLXJ1bGVyLWRhdGFzb3VyY2UKGQoLcGx1Z2luX3R5cGUSCmRhdGFzb3VyY2UKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEQoHdmVyc2lvbhIGdjAuOS4zEgkJAAAAAAAA8D8igAEKKgoJcGx1Z2luX2lkEh1ncmFmYW5hLXNhbGVzZm9yY2UtZGF0YXNvdXJjZQoZCgtwbHVnaW5fdHlwZRIKZGF0YXNvdXJjZQoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAoRCgd2ZXJzaW9uEgYxLjcuMTISCQkAAAAAAADwPyJ5CisKCXBsdWdpbl9pZBIeZ3JhZmFuYS1zZWxmc2VydmV0dXRvcmlhbHMtYXBwChIKC3BsdWdpbl90eXBlEgNhcHAKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEAoHdmVyc2lvbhIFMy4xLjESCQkAAAAAAADwPyJyCiMKCXBsdWdpbl9pZBIWZ3JhZmFuYS1zZXR1cGd1aWRlLWFwcAoSCgtwbHVnaW5fdHlwZRIDYXBwChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkChEKB3ZlcnNpb24SBjEuMTcuMRIJCQAAAAAAAPA/InAKHwoJcGx1Z2luX2lkEhJncmFmYW5hLXNpZnQtcGFuZWwKFAoLcGx1Z2luX3R5cGUSBXBhbmVsChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkChEKB3ZlcnNpb24SBjEuMjkuMhIJCQAAAAAAAPA/IpEBChwKCXBsdWdpbl9pZBIPZ3JhZmFuYS1zbG8tYXBwChIKC3BsdWdpbl90eXBlEgNhcHAKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKNwoHdmVyc2lvbhIsZGV2LTExOWViYWZmZjQ2YmJhYjIyYjQ5YTU2Y2Y4ZjE1NmRiOWI4Y2QzMjESCQkAAAAAAADwPyJ/CikKCXBsdWdpbl9pZBIcZ3JhZmFuYS1zbm93Zmxha2UtZGF0YXNvdXJjZQoZCgtwbHVnaW5fdHlwZRIKZGF0YXNvdXJjZQoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAoRCgd2ZXJzaW9uEgYxLjE0LjASCQkAAAAAAADwPyJ7CiYKCXBsdWdpbl9pZBIZZ3JhZmFuYS1zcGx1bmstZGF0YXNvdXJjZQoZCgtwbHVnaW5fdHlwZRIKZGF0YXNvdXJjZQoZChBzaWduYXR1cmVfc3RhdHVzEgV2YWxpZAoQCgd2ZXJzaW9uEgU1LjcuMxIJCQAAAAAAAPA/InwKLQoJcGx1Z2luX2lkEiBncmFmYW5hLXN5bnRoZXRpYy1tb25pdG9yaW5nLWFwcAoSCgtwbHVnaW5fdHlwZRIDYXBwChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkChEKB3ZlcnNpb24SBjEuMzIuMBIJCQAAAAAAAPA/In8KKQoJcGx1Z2luX2lkEhxncmFmYW5hLXdhdmVmcm9udC1kYXRhc291cmNlChkKC3BsdWdpbl90eXBlEgpkYXRhc291cmNlChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkChEKB3ZlcnNpb24SBjIuNS4xMxIJCQAAAAAAAPA/IoUBCjAKCXBsdWdpbl9pZBIjZ3JhZmFuYWNsb3VkLWNhcmRpbmFsaXR5LWRhdGFzb3VyY2UKGQoLcGx1Z2luX3R5cGUSCmRhdGFzb3VyY2UKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEAoHdmVyc2lvbhIFMi40LjASCQkAAAAAAADwPyKCAQo0CglwbHVnaW5faWQSJ2dyYWZhbmFjbG91ZC1jYXJkaW5hbGl0eS1tYW5hZ2VtZW50LWFwcAoSCgtwbHVnaW5fdHlwZRIDYXBwChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkChAKB3ZlcnNpb24SBTIuNC4wEgkJAAAAAAAA8D8iYgoTCglwbHVnaW5faWQSBms2LWFwcAoSCgtwbHVnaW5fdHlwZRIDYXBwChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkChEKB3ZlcnNpb24SBjAuODYuMBIJCQAAAAAAAPA/InAKGgoJcGx1Z2luX2lkEg1rNi1kYXRhc291cmNlChkKC3BsdWdpbl90eXBlEgpkYXRhc291cmNlChkKEHNpZ25hdHVyZV9zdGF0dXMSBXZhbGlkChEKB3ZlcnNpb24SBjAuODYuMBIJCQAAAAAAAPA/IncKJwoJcGx1Z2luX2lkEhptYXJjdXNvbHNzb24tdHJlZW1hcC1wYW5lbAoUCgtwbHVnaW5fdHlwZRIFcGFuZWwKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEAoHdmVyc2lvbhIFMi4xLjESCQkAAAAAAADwPyKCAQosCglwbHVnaW5faWQSH3N5bnRoZXRpYy1tb25pdG9yaW5nLWRhdGFzb3VyY2UKGQoLcGx1Z2luX3R5cGUSCmRhdGFzb3VyY2UKGQoQc2lnbmF0dXJlX3N0YXR1cxIFdmFsaWQKEQoHdmVyc2lvbhIGMS4zMi4wEgkJAAAAAAAA8D/7FwoaZ3JhZmFuYV9wbHVnaW5fdGFyZ2V0X2luZm8SQUEgbWV0cmljIHdpdGggYSBjb25zdGFudCAnMScgdmFsdWUgbGFiZWxlZCBieSBwbHVnaW5JZCBhbmQgdGFyZ2V0GAEiOQobCglwbHVnaW5faWQSDmNsZXhwb3J0ZXItYXBwCg8KBnRhcmdldBIFbG9jYWwSCQkAAAAAAADwPyI2ChcKCXBsdWdpbl9pZBIKY2xvdWR3YXRjaAoQCgZ0YXJnZXQSBnJlbW90ZRIJCQAAAAAAAPA/IkoKKwoJcGx1Z2luX2lkEh5kbG9wZXM3LWFwcGR5bmFtaWNzLWRhdGFzb3VyY2UKEAoGdGFyZ2V0EgZyZW1vdGUSCQkAAAAAAADwPyI5ChoKCXBsdWdpbl9pZBINZWxhc3RpY3NlYXJjaAoQCgZ0YXJnZXQSBnJlbW90ZRIJCQAAAAAAAPA/IjYKFAoJcGx1Z2luX2lkEgdncmFmYW5hChMKBnRhcmdldBIJaW5fbWVtb3J5EgkJAAAAAAAA8D8iSAoqCglwbHVnaW5faWQSHWdyYWZhbmEtYXBwLW9ic2VydmFiaWxpdHktYXBwCg8KBnRhcmdldBIFbG9jYWwSCQkAAAAAAADwPyI+CiAKCXBsdWdpbl9pZBITZ3JhZmFuYS1hc3NlcnRzLWFwcAoPCgZ0YXJnZXQSBWxvY2FsEgkJAAAAAAAA8D8iQAoiCglwbHVnaW5faWQSFWdyYWZhbmEtYXNzaXN0YW50LWFwcAoPCgZ0YXJnZXQSBWxvY2FsEgkJAAAAAAAA8D8iQwolCglwbHVnaW5faWQSGGdyYWZhbmEtYXR0cmlidXRpb25zLWFwcAoPCgZ0YXJnZXQSBWxvY2FsEgkJAAAAAAAA8D8iOwodCglwbHVnaW5faWQSEGdyYWZhbmEtYXV0aC1hcHAKDwoGdGFyZ2V0EgVsb2NhbBIJCQAAAAAAAPA/IkwKLQoJcGx1Z2luX2lkEiBncmFmYW5hLWF6dXJlLW1vbml0b3ItZGF0YXNvdXJjZQoQCgZ0YXJnZXQSBnJlbW90ZRIJCQAAAAAAAPA/IkcKKAoJcGx1Z2luX2lkEhtncmFmYW5hLWJpZ3F1ZXJ5LWRhdGFzb3VyY2UKEAoGdGFyZ2V0EgZyZW1vdGUSCQkAAAAAAADwPyJJCioKCXBsdWdpbl9pZBIdZ3JhZmFuYS1kYXRhYnJpY2tzLWRhdGFzb3VyY2UKEAoGdGFyZ2V0EgZyZW1vdGUSCQkAAAAAAADwPyJFCicKCXBsdWdpbl9pZBIaZ3JhZmFuYS1kZW1vZGFzaGJvYXJkcy1hcHAKDwoGdGFyZ2V0EgVsb2NhbBIJCQAAAAAAAPA/IkgKKQoJcGx1Z2luX2lkEhxncmFmYW5hLWR5bmF0cmFjZS1kYXRhc291cmNlChAKBnRhcmdldBIGcmVtb3RlEgkJAAAAAAAA8D8iPwohCglwbHVnaW5faWQSFGdyYWZhbmEtaW5jaWRlbnQtYXBwCg8KBnRhcmdldBIFbG9jYWwSCQkAAAAAAADwPyJGCigKCXBsdWdpbl9pZBIbZ3JhZmFuYS1pbmNpZGVudC1kYXRhc291cmNlCg8KBnRhcmdldBIFbG9jYWwSCQkAAAAAAADwPyI6ChwKCXBsdWdpbl9pZBIPZ3JhZmFuYS1pcm0tYXBwCg8KBnRhcmdldBIFbG9jYWwSCQkAAAAAAADwPyJDCiQKCXBsdWdpbl9pZBIXZ3JhZmFuYS1qaXJhLWRhdGFzb3VyY2UKEAoGdGFyZ2V0EgZyZW1vdGUSCQkAAAAAAADwPyI9Ch8KCXBsdWdpbl9pZBISZ3JhZmFuYS1sYWJlbHMtYXBwCg8KBnRhcmdldBIFbG9jYWwSCQkAAAAAAADwPyI6ChwKCXBsdWdpbl9pZBIPZ3JhZmFuYS1sbG0tYXBwCg8KBnRhcmdldBIFbG9jYWwSCQkAAAAAAADwPyI5ChsKCXBsdWdpbl9pZBIOZ3JhZmFuYS1tbC1hcHAKDwoGdGFyZ2V0EgVsb2NhbBIJCQAAAAAAAPA/IkYKJwoJcGx1Z2luX2lkEhpncmFmYW5hLW1vbmdvZGItZGF0YXNvdXJjZQoQCgZ0YXJnZXQSBnJlbW90ZRIJCQAAAAAAAPA/IkkKKgoJcGx1Z2luX2lkEh1ncmFmYW5hLW9wZW5zZWFyY2gtZGF0YXNvdXJjZQoQCgZ0YXJnZXQSBnJlbW90ZRIJCQAAAAAAAPA/IlEKMwoJcGx1Z2luX2lkEiZncmFmYW5hLXBsdWdpbnNwbGF0Zm9ybXByb3Zpc2lvbmVkLWFwcAoPCgZ0YXJnZXQSBWxvY2FsEgkJAAAAAAAA8D8iTAoqCglwbHVnaW5faWQSHWdyYWZhbmEtcG9zdGdyZXNxbC1kYXRhc291cmNlChMKBnRhcmdldBIJaW5fbWVtb3J5EgkJAAAAAAAA8D8iSwopCglwbHVnaW5faWQSHGdyYWZhbmEtcHlyb3Njb3BlLWRhdGFzb3VyY2UKEwoGdGFyZ2V0Eglpbl9tZW1vcnkSCQkAAAAAAADwPyJJCioKCXBsdWdpbl9pZBIdZ3JhZmFuYS1zYWxlc2ZvcmNlLWRhdGFzb3VyY2UKEAoGdGFyZ2V0EgZyZW1vdGUSCQkAAAAAAADwPyI6ChwKCXBsdWdpbl9pZBIPZ3JhZmFuYS1zbG8tYXBwCg8KBnRhcmdldBIFbG9jYWwSCQkAAAAAAADwPyJICikKCXBsdWdpbl9pZBIcZ3JhZmFuYS1zbm93Zmxha2UtZGF0YXNvdXJjZQoQCgZ0YXJnZXQSBnJlbW90ZRIJCQAAAAAAAPA/IkUKJgoJcGx1Z2luX2lkEhlncmFmYW5hLXNwbHVuay1kYXRhc291cmNlChAKBnRhcmdldBIGcmVtb3RlEgkJAAAAAAAA8D8iSgooCglwbHVnaW5faWQSG2dyYWZhbmEtdGVzdGRhdGEtZGF0YXNvdXJjZQoTCgZ0YXJnZXQSCWluX21lbW9yeRIJCQAAAAAAAPA/IkgKKQoJcGx1Z2luX2lkEhxncmFmYW5hLXdhdmVmcm9udC1kYXRhc291cmNlChAKBnRhcmdldBIGcmVtb3RlEgkJAAAAAAAA8D8iNwoVCglwbHVnaW5faWQSCGdyYXBoaXRlChMKBnRhcmdldBIJaW5fbWVtb3J5EgkJAAAAAAAA8D8iNAoVCglwbHVnaW5faWQSCGluZmx1eGRiChAKBnRhcmdldBIGcmVtb3RlEgkJAAAAAAAA8D8iMgoTCglwbHVnaW5faWQSBmphZWdlcgoQCgZ0YXJnZXQSBnJlbW90ZRIJCQAAAAAAAPA/IjEKEwoJcGx1Z2luX2lkEgZrNi1hcHAKDwoGdGFyZ2V0EgVsb2NhbBIJCQAAAAAAAPA/IjAKEQoJcGx1Z2luX2lkEgRsb2tpChAKBnRhcmdldBIGcmVtb3RlEgkJAAAAAAAA8D8iMQoSCglwbHVnaW5faWQSBW1zc3FsChAKBnRhcmdldBIGcmVtb3RlEgkJAAAAAAAA8D8iMQoSCglwbHVnaW5faWQSBW15c3FsChAKBnRhcmdldBIGcmVtb3RlEgkJAAAAAAAA8D8iNwoVCglwbHVnaW5faWQSCG9wZW50c2RiChMKBnRhcmdldBIJaW5fbWVtb3J5EgkJAAAAAAAA8D8iNAoSCglwbHVnaW5faWQSBXBhcmNhChMKBnRhcmdldBIJaW5fbWVtb3J5EgkJAAAAAAAA8D8iNgoXCglwbHVnaW5faWQSCnByb21ldGhldXMKEAoGdGFyZ2V0EgZyZW1vdGUSCQkAAAAAAADwPyI3ChgKCXBsdWdpbl9pZBILc3RhY2tkcml2ZXIKEAoGdGFyZ2V0EgZyZW1vdGUSCQkAAAAAAADwPyI0ChIKCXBsdWdpbl9pZBIFdGVtcG8KEwoGdGFyZ2V0Eglpbl9tZW1vcnkSCQkAAAAAAADwPyIyChMKCXBsdWdpbl9pZBIGemlwa2luChAKBnRhcmdldBIGcmVtb3RlEgkJAAAAAAAA8D+bAgomZ3JhZmFuYV9wbHVnaW5zX2ZldGNoX2R1cmF0aW9uX3NlY29uZHMSJ1RoZSBkdXJhdGlvbiBmb3IgYSBwbHVnaW4gZmV0Y2ggcmVxdWVzdBgEIsUBCgwKBWNsYXNzEgNjZG4KCgoFY291bnQSATU6qAEIARHfddhynhmtPxoLCAARexSuR+F6dD8aCwgAEXsUrkfheoQ/GgsIABGamZmZmZmZPxoLCAARmpmZmZmZqT8aCwgBEZqZmZmZmbk/GgsIAREAAAAAAADQPxoLCAERAAAAAAAA4D8aCwgBEQAAAAAAAPA/GgsIAREAAAAAAAAEQBoLCAERAAAAAAAAFEAaCwgBEQAAAAAAACRAegwIt42ExAYQwrTznQJkCiFncmFmYW5hX3Byb2Nlc3NfY3B1X3NlY29uZHNfdG90YWwSMFRvdGFsIHVzZXIgYW5kIHN5c3RlbSBDUFUgdGltZSBzcGVudCBpbiBzZWNvbmRzLhgAIgsaCQkUrkfhehRBQFIKF2dyYWZhbmFfcHJvY2Vzc19tYXhfZmRzEihNYXhpbXVtIG51bWJlciBvZiBvcGVuIGZpbGUgZGVzY3JpcHRvcnMuGAEiCxIJCQAAAAAAADBBdworZ3JhZmFuYV9wcm9jZXNzX25ldHdvcmtfcmVjZWl2ZV9ieXRlc190b3RhbBI5TnVtYmVyIG9mIGJ5dGVzIHJlY2VpdmVkIGJ5IHRoZSBwcm9jZXNzIG92ZXIgdGhlIG5ldHdvcmsuGAAiCxoJCQAAANxFvMFBdAosZ3JhZmFuYV9wcm9jZXNzX25ldHdvcmtfdHJhbnNtaXRfYnl0ZXNfdG90YWwSNU51bWJlciBvZiBieXRlcyBzZW50IGJ5IHRoZSBwcm9jZXNzIG92ZXIgdGhlIG5ldHdvcmsuGAAiCxoJCQAAACAsAnJBSwoYZ3JhZmFuYV9wcm9jZXNzX29wZW5fZmRzEiBOdW1iZXIgb2Ygb3BlbiBmaWxlIGRlc2NyaXB0b3JzLhgBIgsSCQkAAAAAAABYQFYKJWdyYWZhbmFfcHJvY2Vzc19yZXNpZGVudF9tZW1vcnlfYnl0ZXMSHlJlc2lkZW50IG1lbW9yeSBzaXplIGluIGJ5dGVzLhgBIgsSCQkAAAAAQEDAQWsKImdyYWZhbmFfcHJvY2Vzc19zdGFydF90aW1lX3NlY29uZHMSNlN0YXJ0IHRpbWUgb2YgdGhlIHByb2Nlc3Mgc2luY2UgdW5peCBlcG9jaCBpbiBzZWNvbmRzLhgBIgsSCQmPwqWkQSDaQVQKJGdyYWZhbmFfcHJvY2Vzc192aXJ0dWFsX21lbW9yeV9ieXRlcxIdVmlydHVhbCBtZW1vcnkgc2l6ZSBpbiBieXRlcy4YASILEgkJAAAAAPAJ30FvCihncmFmYW5hX3Byb2Nlc3NfdmlydHVhbF9tZW1vcnlfbWF4X2J5dGVzEjRNYXhpbXVtIGFtb3VudCBvZiB2aXJ0dWFsIG1lbW9yeSBhdmFpbGFibGUgaW4gYnl0ZXMuGAEiCxIJCQAAAAAAAPBDSwodZ3JhZmFuYV9wcm92aXNpb25fcm9sZXNfY291bnQSG251bWJlciBvZiByb2xlcyBwcm92aXNpb25lZBgBIgsSCQkAAAAAAAAAAE4KJGdyYWZhbmFfcHJvdmlzaW9uX3JvbGVzX2RlbGV0ZV9jb3VudBIXbnVtYmVyIG9mIHJvbGVzIGRlbGV0ZWQYASILEgkJAAAAAAAAAAB6CiRncmFmYW5hX3Byb3Zpc2lvbmVkX2FwaV9mYWlsZWRfdG90YWwSNXVzYWdlIGNvdW50ZXIgZm9yIHByb3Zpc2lvbmVkIHBsdWdpbnMgZmFpbGVkIHJlcXVlc3RzGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQt87rzwN1CiZncmFmYW5hX3Byb3Zpc2lvbmVkX2FwaV9yZXF1ZXN0c190b3RhbBIudXNhZ2UgY291bnRlciBmb3IgcHJvdmlzaW9uZWQgcGx1Z2lucyByZXF1ZXN0cxgAIhkaFwkAAAAAAAAAABoMCJONhMQGEJKG688D5wEKI2dyYWZhbmFfcHJveHlfcmVzcG9uc2Vfc3RhdHVzX3RvdGFsEhpwcm94eSBodHRwIHJlc3BvbnNlIHN0YXR1cxgAIiYKCwoEY29kZRIDMjAwGhcJAAAAAAAAAAAaDAiTjYTEBhD0r5PPAyImCgsKBGNvZGUSAzQwNBoXCQAAAAAAAAAAGgwIk42ExAYQ+L6TzwMiJgoLCgRjb2RlEgM1MDAaFwkAAAAAAAAAABoMCJONhMQGEOjHk88DIioKDwoEY29kZRIHdW5rbm93bhoXCQAAAAAAAAAAGgwIk42ExAYQv9CTzwNtCiZncmFmYW5hX3B1YmxpY19kYXNoYm9hcmRfcmVxdWVzdF9jb3VudBImY291bnRlciBmb3IgcHVibGljIGRhc2hib2FyZHMgcmVxdWVzdHMYACIZGhcJAAAAAAAAAAAaDAiTjYTEBhDDmJvPA1EKH2dyYWZhbmFfcmVjb3JkZWRfcXVlcmllc19hY3RpdmUSH1RvdGFsIGNvdW50IG9mIHJlY29yZGVkIHF1ZXJpZXMYASILEgkJAAAAAAAAAACjAgorZ3JhZmFuYV9yZWNvcmRlZF9xdWVyaWVzX3Byb21fd3JpdGVfc2Vjb25kcxJEQW1vdW50IG9mIHRpbWUgZm9yIHRoZSB3cml0ZXIgdG8gd3JpdGUgdG8gZXh0ZXJuYWwgcHJvbWV0aGV1cyBzZXJ2ZXIYBCKrATqoAQgAEQAAAAAAAAAAGgsIABF7FK5H4Xp0PxoLCAARexSuR+F6hD8a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ZmFuYV9yZW1vdGVfcnVsZXJfcmVxdWVzdHNfZHJvcHBlZF90b3RhbBJLTnVtYmVyIG9mIHJlcXVlc3RzIHdoaWNoIHdlcmUgc2lsZW50bHkgZHJvcHBlZCBkdWUgdG8gY29uZmlndXJhdGlvbiBvcHRpb25zGAAiNgocCgR0eXBlEhREZWxldGVBbGVydEluc3RhbmNlcxoWCQAAAAAAAAAAGgsIuI2ExAYQvZehWiIzChkKBHR5cGUSEVNhdmVBbGVydEluc3RhbmNlGhYJAAAAAAAAAAAaCwi4jYTEBhDAjaFaIiwKEgoEdHlwZRIKU2VuZEFsZXJ0cxoWCQAAAAAAAAAAGgsIuI2ExAYQ0PugWkYKHGdyYWZhbmFfcmVuZGVyaW5nX3F1ZXVlX3NpemUSF3NpemUgb2YgcmVuZGVyaW5nIHF1ZXVlGAEiCxIJCQAAAAAAAAAAYQogZ3JhZmFuYV9yZXBvcnRpbmdfYWN0aXZlX3JlcG9ydHMSLnRvdGFsIG51bWJlciBvZiBhY3RpdmUgcmVwb3J0cyBpbiB0aGUgaW5zdGFuY2UYASILEgkJAAAAAAAA8D+IAQo2Z3JhZmFuYV9yZXBvcnRpbmdfcGFuZWxfcmVuZGVyaW5nX2ZhaWxlZF9yZXF1ZXN0X3RvdGFsEjF1c2FnZSBjb3VudGVyIGZvciBmYWlsZWQgcGFuZWwgcmVuZGVyaW5nIHJlcXVlc3RzGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQm5SM0gN6Ci9ncmFmYW5hX3JlcG9ydGluZ19wYW5lbF9yZW5kZXJpbmdfcmVxdWVzdF90b3RhbBIqdXNhZ2UgY291bnRlciBmb3IgcGFuZWwgcmVuZGVyaW5nIHJlcXVlc3RzGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQt8mL0gNtCixncmFmYW5hX3JlcG9ydGluZ19zZW5kX3JlcG9ydF9yZXF1ZXN0c190b3RhbBIgY291bnRlciBmb3Igc2VuZCByZXBvcnQgcmVxdWVzdHMYACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCvwY7SA10KJGdyYWZhbmFfcmVwb3J0aW5nX3NlbnRfcmVwb3J0c190b3RhbBIYY291bnRlciBmb3Igc2VudCByZXBvcnRzGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQ0NGP0gOYAgocZ3JhZmFuYV9ydm1hbmFnZXJfYmF0Y2hfc2l6ZRIkTnVtYmVyIG9mIHdyaXRlIG9wZXJhdGlvbnMgcGVyIGJhdGNoGAQiZgocCgVncm91cBITYWR2aXNvci5ncmFmYW5hLmFwcAoWCghyZXNvdXJjZRIKY2hlY2t0eXBlczouCAYRAAAAAAAAGEAoBjEAAAAAAADwNzgAYgQIABABaAx6DAi5jYTEBhDi6/2QASJoCh4KBWdyb3VwEhVkYXNoYm9hcmQuZ3JhZmFuYS5hcHAKFgoIcmVzb3VyY2USCmRhc2hib2FyZHM6LggDEQAAAAAAAAhAKAYxAAAAAAAA8Dc4AGIECAAQAWgGegwIuY2ExAYQqOHtlQKAAwotZ3JhZmFuYV9ydm1hbmFnZXJfZXhlY19iYXRjaF9kdXJhdGlvbl9zZWNvbmRzEjNEdXJhdGlvbiBvZiBSZXNvdXJjZVZlcnNpb25NYW5hZ2VyIGJhdGNoIG9wZXJhdGlvbnMYBCKPAQocCgVncm91cBITYWR2aXNvci5ncmFmYW5hLmFwcAoWCghyZXNvdXJjZRIKY2hlY2t0eXBlcwoPCgZzdGF0dXMSBWVycm9yOkYIBhGhmzrlijjCPygGMQAAAAAAAPA3OABiBAhjEAJiBAgGEAFiBAgGEARoAmgAaABoAGgBaAJoAHoMCLmNhMQGEMOaiKEBIoUBCh4KBWdyb3VwEhVkYXNoYm9hcmQuZ3JhZmFuYS5hcHAKFgoIcmVzb3VyY2USCmRhc2hib2FyZHMKEQoGc3RhdHVzEgdzdWNjZXNzOjgIAxEzLDcyPjXFPygGMQAAAAAAAPA3OABiBAhFEAJiBAgGEAFoAmgAaAB6DAi5jYTEBhCw2+G2AooECjNncmFmYW5hX3J2bWFuYWdlcl9leGVjX2JhdGNoX3BoYXNlX2R1cmF0aW9uX3NlY29uZHMSIkR1cmF0aW9uIG9mIGJhdGNoIG9wZXJhdGlvbiBwaGFzZXMYBCKRAQoeCgVncm91cBIVZGFzaGJvYXJkLmdyYWZhbmEuYXBwCiEKBXBoYXNlEhh1cGRhdGVfcmVzb3VyY2VfdmVyc2lvbnMKFgoIcmVzb3VyY2USCmRhc2hib2FyZHM6NAgDEQB7ztutbKc/KAYxAAAAAAAA8Dc4AGIECGEQBGgEaANoAGgCegwIuY2ExAYQqZbNrgIijQEKHgoFZ3JvdXASFWRhc2hib2FyZC5ncmFmYW5hLmFwcAoZCgVwaGFzZRIQd2FpdGluZ19mb3JfbG9jawoWCghyZXNvdXJjZRIKZGFzaGJvYXJkczo4CAMR1tpAKXYOkT8oBjEAAAAAAADwNzgAYgQIfRACYgQIDBABaAJoAGgAegwIuY2ExAYQta3upQIiiAEKHgoFZ3JvdXASFWRhc2hib2FyZC5ncmFmYW5hLmFwcAoSCgVwaGFzZRIJd3JpdGVfb3BzChYKCHJlc291cmNlEgpkYXNoYm9hcmRzOjoIAxHO2OH5VjWkPygGMQAAAAAAAPA3OABiBAhrEANiBAgMEAFoAmgBaAJoAHoMCLmNhMQGEJeLhqIC1AEKIWdyYWZhbmFfcnZtYW5hZ2VyX2luZmxpZ2h0X3dyaXRlcxIlTnVtYmVyIG9mIGNvbmN1cnJlbnQgd3JpdGUgb3BlcmF0aW9ucxgBIkEKHAoFZ3JvdXASE2Fkdmlzb3IuZ3JhZmFuYS5hcHAKFgoIcmVzb3VyY2USCmNoZWNrdHlwZXMSCQkAAAAAAAAAACJDCh4KBWdyb3VwEhVkYXNoYm9hcmQuZ3JhZmFuYS5hcHAKFgoIcmVzb3VyY2USCmRhc2hib2FyZHMSCQkAAAAAAAAAAP0CCihncmFmYW5hX3J2bWFuYWdlcl93cml0ZV9kdXJhdGlvbl9zZWNvbmRzEjNEdXJhdGlvbiBvZiBSZXNvdXJjZVZlcnNpb25NYW5hZ2VyIHdyaXRlIG9wZXJhdGlvbnMYBCKPAQocCgVncm91cBITYWR2aXNvci5ncmFmYW5hLmFwcAoWCghyZXNvdXJjZRIKY2hlY2t0eXBlcwoPCgZzdGF0dXMSBWVycm9yOkYIBhEQIO3GVUHCPygGMQAAAAAAAPA3OABiBAhjEAJiBAgGEAFiBAgGEARoAmgAaABoAGgBaAJoAHoMCLmNhMQGEPSuiaEBIocBCh4KBWdyb3VwEhVkYXNoYm9hcmQuZ3JhZmFuYS5hcHAKFgoIcmVzb3VyY2USCmRhc2hib2FyZHMKEQoGc3RhdHVzEgdzdWNjZXNzOjoIAxFG0oWQp7DKPygGMQAAAAAAAPA3OABiBAhDEAFiBAgGEANoAmgAaAFoAnoMCLmNhMQGEN/s47YClAIK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GgsIABEAAAAAAADgPxoLCAARAAAAAAAA8D8aCwgAEQAAAAAAAARAGgsIABEAAAAAAAAUQBoLCAARAAAAAAAAJEB6Cwi4jYTEBhCCo7tFqQIKSGdyYWZhbmFfc2VjcmV0c19tYW5hZ2VyX3N0b3JhZ2Vfc2VjdXJlX3ZhbHVlX3NldF9zdGF0dXNfZHVyYXRpb25fc2Vjb25kcxIuRHVyYXRpb24gb2Ygc2VjdXJlIHZhbHVlIHNldCBzdGF0dXMgb3BlcmF0aW9ucxgEIqoBOqcBCAARAAAAAAAAAAAaCwgAEXsUrkfhenQ/GgsIABF7FK5H4XqEPxoLCAARmpmZmZmZmT8aCwgAEZqZmZmZmak/GgsIABGamZmZmZm5PxoLCAARAAAAAAAA0D8aCwgAEQAAAAAAAOA/GgsIABEAAAAAAADwPxoLCAARAAAAAAAABEAaCwgAEQAAAAAAABRAGgsIABEAAAAAAAAkQHoLCLiNhMQGEIutu0V6CjRncmFmYW5hX3NldHRpbmdzcHJvdmlkZXJfbGVnYWN5X3NldHRpbmdzX25vdF91cGRhdGVkEjN0b3RhbCBudW1iZXIgb2Ygc2V0dGluZ3MgdGhhdCBoYXZlIG5vdCBiZWVuIHVwZGF0ZWQYASILEgkJAAAAAAAAAABqCjBncmFmYW5hX3NldHRpbmdzcHJvdmlkZXJfbGVnYWN5X3NldHRpbmdzX3VwZGF0ZWQSJ3RvdGFsIG51bWJlciBvZiB1cGRhdGVkIGxlZ2FjeSBzZXR0aW5ncxgBIgsSCQkAAAAAAAAAAOADCixncmFmYW5hX3N0X2FnZ3JlZ2F0b3JfdW5hdmFpbGFibGVfYXBpc2VydmljZRJkW0FMUEhBXSBHYXVnZSBvZiBHcmFmYW5hIEFQSVNlcnZpY2VzIHdoaWNoIGFyZSBtYXJrZWQgYXMgdW5hdmFpbGFibGUgYnJva2VuIGRvd24gYnkgQVBJU2VydmljZSBuYW1lLhgBIjkKLAoEbmFtZRIkdjEucHJvZHVjdGFjdGl2YXRpb24uZXh0LmdyYWZhbmEuY29tEgkJAAAAAAAAAAAiMwomCgRuYW1lEh52MWFscGhhMS5nYW1tYS5leHQuZ3JhZmFuYS5jb20SCQkAAAAAAAAAACI0CicKBG5hbWUSH3YxYWxwaGExLnNka2V4YW1wbGUuZ3JhZmFuYS5hcHASCQkAAAAAAAAAACI6Ci0KBG5hbWUSJXYxYWxwaGExLnNlcnZpY2Vtb2RlbC5leHQuZ3JhZmFuYS5jb20SCQkAAAAAAAAAACIvCiIKBG5hbWUSGnYxYmV0YTEuc2VjcmV0LmdyYWZhbmEuYXBwEgkJAAAAAAAAAAAiNQooCgRuYW1lEiB2MmFscGhhMS5hc3NlcnRzLmV4dC5ncmFmYW5hLmNvbRIJCQAAAAAAAAAAQgoZZ3JhZmFuYV9zdGF0X2FjdGl2ZV91c2VycxIWbnVtYmVyIG9mIGFjdGl2ZSB1c2VycxgBIgsSCQkAAAAAAAAAQIwBCjJncmFmYW5hX3N0YXRfZmFpbGVkX21pZ3JhdGVkX2FwaV9rZXlzX3RvX3NhX3Rva2VucxJHdG90YWwgbnVtYmVyIG9mIGZhaWxlZCBtaWdyYXRpb25zIG9mIEFQSSBrZXlzIHRvIHNlcnZpY2UgYWNjb3VudCB0b2tlbnMYASILEgkJAAAAAAAAAACWAQo4Z3JhZmFuYV9zdGF0X3N1Y2Nlc3NmdWxseV9taWdyYXRlZF9hcGlfa2V5c190b19zYV90b2tlbnMSS3RvdGFsIG51bWJlciBvZiBzdWNjZXNzZnVsIG1pZ3JhdGlvbnMgb2YgQVBJIGtleXMgdG8gc2VydmljZSBhY2NvdW50IHRva2VucxgBIgsSCQkAAAAAAAAAAIUBCjFncmFmYW5hX3N0YXRfdG90YWxfbWlncmF0ZWRfYXBpX2tleXNfdG9fc2FfdG9rZW5zEkF0b3RhbCBudW1iZXIgb2YgQVBJIGtleXMgdG8gYmUgbWlncmF0ZWQgdG8gc2VydmljZSBhY2NvdW50IHRva2VucxgBIgsSCQkAAAAAAAAAAD4KF2dyYWZhbmFfc3RhdF90b3RhbF9vcmdzEhR0b3RhbCBhbW91bnQgb2Ygb3JncxgBIgsSCQkAAAAAAADwP0gKHGdyYWZhbmFfc3RhdF90b3RhbF9wbGF5bGlzdHMSGXRvdGFsIGFtb3VudCBvZiBwbGF5bGlzdHMYASILEgkJAAAAAAAA8D9iCilncmFmYW5hX3N0YXRfdG90YWxfc2VydmljZV9hY2NvdW50X3Rva2VucxImdG90YWwgYW1vdW50IG9mIHNlcnZpY2UgYWNjb3VudCB0b2tlbnMYASILEgkJAAAAAAAALEBWCiNncmFmYW5hX3N0YXRfdG90YWxfc2VydmljZV9hY2NvdW50cxIgdG90YWwgYW1vdW50IG9mIHNlcnZpY2UgYWNjb3VudHMYASILEgkJAAAAAAAALEBtCi1ncmFmYW5hX3N0YXRfdG90YWxfc2VydmljZV9hY2NvdW50c19yb2xlX25vbmUSLXRvdGFsIGFtb3VudCBvZiBzZXJ2aWNlIGFjY291bnRzIHdpdGggbm8gcm9sZRgBIgsSCQkAAAAAAAAqQEAKGGdyYWZhbmFfc3RhdF90b3RhbF90ZWFtcxIVdG90YWwgYW1vdW50IG9mIHRlYW1zGAEiCxIJCQAAAAAAAAAAQAoYZ3JhZmFuYV9zdGF0X3RvdGFsX3VzZXJzEhV0b3RhbCBhbW91bnQgb2YgdXNlcnMYASILEgkJAAAAAAAAIEBRCiFncmFmYW5hX3N0YXRfdG90YWxzX2FjdGl2ZV9hZG1pbnMSHXRvdGFsIGFtb3VudCBvZiBhY3RpdmUgYWRtaW5zGAEiCxIJCQAAAAAAAABAUwoiZ3JhZmFuYV9zdGF0X3RvdGFsc19hY3RpdmVfZWRpdG9ycxIedG90YWwgYW1vdW50IG9mIGFjdGl2ZSBlZGl0b3JzGAEiCxIJCQAAAAAAAAAAUwoiZ3JhZmFuYV9zdGF0X3RvdGFsc19hY3RpdmVfdmlld2VycxIedG90YWwgYW1vdW50IG9mIGFjdGl2ZSB2aWV3ZXJzGAEiCxIJCQAAAAAAAAAAQwoaZ3JhZmFuYV9zdGF0X3RvdGFsc19hZG1pbnMSFnRvdGFsIGFtb3VudCBvZiBhZG1pbnMYASILEgkJAAAAAAAAIkBdCh9ncmFmYW5hX3N0YXRfdG90YWxzX2FsZXJ0X3J1bGVzEit0b3RhbCBhbW91bnQgb2YgYWxlcnQgcnVsZXMgaW4gdGhlIGRhdGFiYXNlGAEiCxIJCQAAAAAAAAAAXQofZ3JhZmFuYV9zdGF0X3RvdGFsc19hbm5vdGF0aW9ucxIrdG90YWwgYW1vdW50IG9mIGFubm90YXRpb25zIGluIHRoZSBkYXRhYmFzZRgBIgsSCQkAAAAAAAAAAE8KIGdyYWZhbmFfc3RhdF90b3RhbHNfY29ycmVsYXRpb25zEhx0b3RhbCBhbW91bnQgb2YgY29ycmVsYXRpb25zGAEiCxIJCQAAAAAAAAAASgodZ3JhZmFuYV9zdGF0X3RvdGFsc19kYXNoYm9hcmQSGnRvdGFsIGFtb3VudCBvZiBkYXNoYm9hcmRzGAEiCxIJCQAAAAAAAC5AawomZ3JhZmFuYV9zdGF0X3RvdGFsc19kYXNoYm9hcmRfdmVyc2lvbnMSMnRvdGFsIGFtb3VudCBvZiBkYXNoYm9hcmQgdmVyc2lvbnMgaW4gdGhlIGRhdGFiYXNlGAEiCxIJCQAAAAAAAD9AhwEKHWdyYWZhbmFfc3RhdF90b3RhbHNfZGF0YV9rZXlzEil0b3RhbCBhbW91bnQgb2YgZGF0YSBrZXlzIGluIHRoZSBkYXRhYmFzZRgBIhwKDwoGYWN0aXZlEgVmYWxzZRIJCQAAAAAAAAAAIhsKDgoGYWN0aXZlEgR0cnVlEgkJAAAAAAAwhkCmCQoeZ3JhZmFuYV9zdGF0X3RvdGFsc19kYXRhc291cmNlEjh0b3RhbCBudW1iZXIgb2YgZGVmaW5lZCBkYXRhc291cmNlcywgbGFiZWxlZCBieSBwbHVnaW5JZBgBIiYKGQoJcGx1Z2luX2lkEgxhbGVydG1hbmFnZXISCQkAAAAAAADwPyIkChcKCXBsdWdpbl9pZBIKY2xvdWR3YXRjaBIJCQAAAAAAAPA/IjoKLQoJcGx1Z2luX2lkEiBncmFmYW5hLWF6dXJlLW1vbml0b3ItZGF0YXNvdXJjZRIJCQAAAAAAAPA/IjUKKAoJcGx1Z2luX2lkEhtncmFmYW5hLWJpZ3F1ZXJ5LWRhdGFzb3VyY2USCQkAAAAAAADwPyI3CioKCXBsdWdpbl9pZBIdZ3JhZmFuYS1kYXRhYnJpY2tzLWRhdGFzb3VyY2USCQkAAAAAAADwPyI2CikKCXBsdWdpbl9pZBIcZ3JhZmFuYS1keW5hdHJhY2UtZGF0YXNvdXJjZRIJCQAAAAAAAPA/IjEKJAoJcGx1Z2luX2lkEhdncmFmYW5hLWppcmEtZGF0YXNvdXJjZRIJCQAAAAAAAPA/IjQKJwoJcGx1Z2luX2lkEhpncmFmYW5hLW1vbmdvZGItZGF0YXNvdXJjZRIJCQAAAAAAAPA/IjcKKgoJcGx1Z2luX2lkEh1ncmFmYW5hLW9wZW5zZWFyY2gtZGF0YXNvdXJjZRIJCQAAAAAAAPA/IjYKKQoJcGx1Z2luX2lkEhxncmFmYW5hLXB5cm9zY29wZS1kYXRhc291cmNlEgkJAAAAAAAA8D8iNwoqCglwbHVnaW5faWQSHWdyYWZhbmEtc2FsZXNmb3JjZS1kYXRhc291cmNlEgkJAAAAAAAA8D8iNgopCglwbHVnaW5faWQSHGdyYWZhbmEtc25vd2ZsYWtlLWRhdGFzb3VyY2USCQkAAAAAAADwPyIzCiYKCXBsdWdpbl9pZBIZZ3JhZmFuYS1zcGx1bmstZGF0YXNvdXJjZRIJCQAAAAAAAPA/IjYKKQoJcGx1Z2luX2lkEhxncmFmYW5hLXdhdmVmcm9udC1kYXRhc291cmNlEgkJAAAAAAAA8D8iPQowCglwbHVnaW5faWQSI2dyYWZhbmFjbG91ZC1jYXJkaW5hbGl0eS1kYXRhc291cmNlEgkJAAAAAAAA8D8iIgoVCglwbHVnaW5faWQSCGdyYXBoaXRlEgkJAAAAAAAAAEAiIgoVCglwbHVnaW5faWQSCGluZmx1eGRiEgkJAAAAAAAA8D8iJwoaCglwbHVnaW5faWQSDWs2LWRhdGFzb3VyY2USCQkAAAAAAADwPyIeChEKCXBsdWdpbl9pZBIEbG9raRIJCQAAAAAAABRAIiAKEwoJcGx1Z2luX2lkEgZwaGxhcmUSCQkAAAAAAADwPyIkChcKCXBsdWdpbl9pZBIKcHJvbWV0aGV1cxIJCQAAAAAAAAhAIiUKGAoJcGx1Z2luX2lkEgtzdGFja2RyaXZlchIJCQAAAAAAAPA/Ih8KEgoJcGx1Z2luX2lkEgV0ZW1wbxIJCQAAAAAAAABARQobZ3JhZmFuYV9zdGF0X3RvdGFsc19lZGl0b3JzEhd0b3RhbCBhbW91bnQgb2YgZWRpdG9ycxgBIgsSCQkAAAAAAAAAAEQKGmdyYWZhbmFfc3RhdF90b3RhbHNfZm9sZGVyEhd0b3RhbCBhbW91bnQgb2YgZm9sZGVycxgBIgsSCQkAAAAAAADwP2MKImdyYWZhbmFfc3RhdF90b3RhbHNfbGlicmFyeV9wYW5lbHMSLnRvdGFsIGFtb3VudCBvZiBsaWJyYXJ5IHBhbmVscyBpbiB0aGUgZGF0YWJhc2UYASILEgkJAAAAAAAAAABYCiRncmFmYW5hX3N0YXRfdG90YWxzX3B1YmxpY19kYXNoYm9hcmQSIXRvdGFsIGFtb3VudCBvZiBwdWJsaWMgZGFzaGJvYXJkcxgBIgsSCQkAAAAAAAAAAGMKH2dyYWZhbmFfc3RhdF90b3RhbHNfcnVsZV9ncm91cHMSMXRvdGFsIGFtb3VudCBvZiBhbGVydCBydWxlIGdyb3VwcyBpbiB0aGUgZGF0YWJhc2UYASILEgkJAAAAAAAAAABFChtncmFmYW5hX3N0YXRfdG90YWxzX3ZpZXdlcnMSF3RvdGFsIGFtb3VudCBvZiB2aWV3ZXJzGAEiCxIJCQAAAAAAACpAhwMKM2dyYWZhbmFfc3RvcmFnZV9zZXJ2ZXJfcG9sbGVyX3F1ZXJ5X2xhdGVuY3lfc2Vjb25kcxIUcG9sbGVyIHF1ZXJ5IGxhdGVuY3kYBCK3Ajq0AgjeGBFx54d5pRU6QBoLCAARexSuR+F6dD8aDAj2FRF7FK5H4XqEPxoMCMkYEZqZmZmZmZk/GgwI2xgRmpmZmZmZqT8aDAjeGBGamZmZmZm5PxoMCN4YEQAAAAAAANA/GgwI3hgRAAAAAAAA4D8aDAjeGBEAAAAAAADwPxoMCN4YEQAAAAAAAARAGgwI3hgRAAAAAAAAFEAaDAjeGBEAAAAAAAAkQBoMCN4YEQAAAAAAADlAGgwI3hgRAAAAAAAASUAaDAjeGBEAAAAAAABZQCgGMQAAAAAAAPA3OABiBAh3EB5oBGioAmiCBmiLAWj+BGi5BWi5AmjfAWiPAWg7aCVoE2gVaANoDWgDaAVoB2gDaAJoBWgBaAZoA2gBaABoAGgAaAFoAnoMCJSNhMQGEKLIwN8B/wUKMGdyYWZhbmFfdW5pZmllZF9zdG9yYWdlX2R1YWxfd3JpdGVyX2N1cnJlbnRfbW9kZRIoVW5pZmllZCBzdG9yYWdlIGR1YWwgd3JpdGVyIGN1cnJlbnQgbW9kZRgBIkMKHgoFZ3JvdXASFWRhc2hib2FyZC5ncmFmYW5hLmFwcAoWCghyZXNvdXJjZRIKZGFzaGJvYXJkcxIJCQAAAAAAAPA/IkYKHgoFZ3JvdXASFWRhc2hib2FyZC5ncmFmYW5hLmFwcAoZCghyZXNvdXJjZRINbGlicmFyeXBhbmVscxIJCQAAAAAAAAAAIj0KGwoFZ3JvdXASEmZvbGRlci5ncmFmYW5hLmFwcAoTCghyZXNvdXJjZRIHZm9sZGVycxIJCQAAAAAAAPA/Ik8KKwoFZ3JvdXASIm5vdGlmaWNhdGlvbnMuYWxlcnRpbmcuZ3JhZmFuYS5hcHAKFQoIcmVzb3VyY2USCXJlY2VpdmVycxIJCQAAAAAAAAAAIlIKKwoFZ3JvdXASIm5vdGlmaWNhdGlvbnMuYWxlcnRpbmcuZ3JhZmFuYS5hcHAKGAoIcmVzb3VyY2USDHJvdXRpbmd0cmVlcxIJCQAAAAAAAAAAIlQKKwoFZ3JvdXASIm5vdGlmaWNhdGlvbnMuYWxlcnRpbmcuZ3JhZmFuYS5hcHAKGgoIcmVzb3VyY2USDnRlbXBsYXRlZ3JvdXBzEgkJAAAAAAAAAAAiUworCgVncm91cBIibm90aWZpY2F0aW9ucy5hbGVydGluZy5ncmFmYW5hLmFwcAoZCghyZXNvdXJjZRINdGltZWludGVydmFscxIJCQAAAAAAAAAAIkEKHQoFZ3JvdXASFHBsYXlsaXN0LmdyYWZhbmEuYXBwChUKCHJlc291cmNlEglwbGF5bGlzdHMSCQkAAAAAAAAIQCJACh4KBWdyb3VwEhVyZXBvcnRpbmcuZ3JhZmFuYS5hcHAKEwoIcmVzb3VyY2USB3JlcG9ydHMSCQkAAAAAAAAAAP0FCi9ncmFmYW5hX3VuaWZpZWRfc3RvcmFnZV9kdWFsX3dyaXRlcl90YXJnZXRfbW9kZRInVW5pZmllZCBTdG9yYWdlIGR1YWwgd3JpdGVyIHRhcmdldCBtb2RlGAEiQwoeCgVncm91cBIVZGFzaGJvYXJkLmdyYWZhbmEuYXBwChYKCHJlc291cmNlEgpkYXNoYm9hcmRzEgkJAAAAAAAA8D8iRgoeCgVncm91cBIVZGFzaGJvYXJkLmdyYWZhbmEuYXBwChkKCHJlc291cmNlEg1saWJyYXJ5cGFuZWxzEgkJAAAAAAAAAAAiPQobCgVncm91cBISZm9sZGVyLmdyYWZhbmEuYXBwChMKCHJlc291cmNlEgdmb2xkZXJzEgkJAAAAAAAA8D8iTworCgVncm91cBIibm90aWZpY2F0aW9ucy5hbGVydGluZy5ncmFmYW5hLmFwcAoVCghyZXNvdXJjZRIJcmVjZWl2ZXJzEgkJAAAAAAAAAAAiUgorCgVncm91cBIibm90aWZpY2F0aW9ucy5hbGVydGluZy5ncmFmYW5hLmFwcAoYCghyZXNvdXJjZRIMcm91dGluZ3RyZWVzEgkJAAAAAAAAAAAiVAorCgVncm91cBIibm90aWZpY2F0aW9ucy5hbGVydGluZy5ncmFmYW5hLmFwcAoaCghyZXNvdXJjZRIOdGVtcGxhdGVncm91cHMSCQkAAAAAAAAAACJTCisKBWdyb3VwEiJub3RpZmljYXRpb25zLmFsZXJ0aW5nLmdyYWZhbmEuYXBwChkKCHJlc291cmNlEg10aW1laW50ZXJ2YWxzEgkJAAAAAAAAAAAiQQodCgVncm91cBIUcGxheWxpc3QuZ3JhZmFuYS5hcHAKFQoIcmVzb3VyY2USCXBsYXlsaXN0cxIJCQAAAAAAAAhAIkAKHgoFZ3JvdXASFXJlcG9ydGluZy5ncmFmYW5hLmFwcAoTCghyZXNvdXJjZRIHcmVwb3J0cxIJCQAAAAAAAAAAKwoYZ3JhZmFuYV92YXVsdF9jYWNoZV9zaXplEgAYASILEgkJAAAAAAAAAABECiNncmFmYW5hX3ZhdWx0X3NlY3JldF9yZW5ld2Fsc190b3RhbBIAGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQuLilzwNMCitncmFmYW5hX3ZhdWx0X3NlcnZpY2Vfc2VjcmV0X3JlbmV3YWxzX3RvdGFsEgAYACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCPr6XPA4UEChxncmFmYW5hX3dvcmtxdWV1ZV9hZGRzX3RvdGFsEjFbQUxQSEFdIFRvdGFsIG51bWJlciBvZiBhZGRzIGhhbmRsZWQgYnkgd29ya3F1ZXVlGAAiQgooCgRuYW1lEiBBUElTZXJ2aWNlUmVnaXN0cmF0aW9uQ29udHJvbGxlchoWCQAAAAAAgElAGgsIuY2ExAYQpKaJRCI+CiQKBG5hbWUSHEF2YWlsYWJsZUNvbmRpdGlvbkNvbnRyb2xsZXIaFgkAAAAAAFByQBoLCLmNhMQGEJPItUQiPQojCgRuYW1lEhtMb2NhbEF2YWlsYWJpbGl0eUNvbnRyb2xsZXIaFgkAAAAAAAA1QBoLCLmNhMQGEOrkjkQiLgoUCgRuYW1lEgxhdXRvcmVnaXN0ZXIaFgkAAAAAAABSQBoLCLmNhMQGEKTbnEQiMwoZCgRuYW1lEhFkaXNjb3ZlcnktbWFuYWdlchoWCQAAAAAAgExAGgsIuY2ExAYQ26KYRCJBCicKBG5hbWUSH29wZW5fYXBpX2FnZ3JlZ2F0aW9uX2NvbnRyb2xsZXIaFgkAAAAAAABFQBoLCLmNhMQGEOLu2H0iRQoqCgRuYW1lEiJvcGVuX2FwaV92M19hZ2dyZWdhdGlvbl9jb250cm9sbGVyGhcJAAAAAACQiEAaDAi5jYTEBhDzzYOPAZUDChdncmFmYW5hX3dvcmtxdWV1ZV9kZXB0aBIiW0FMUEhBXSBDdXJyZW50IGRlcHRoIG9mIHdvcmtxdWV1ZRgBIjUKKAoEbmFtZRIgQVBJU2VydmljZVJlZ2lzdHJhdGlvbkNvbnRyb2xsZXISCQkAAAAAAAAAACIxCiQKBG5hbWUSHEF2YWlsYWJsZUNvbmRpdGlvbkNvbnRyb2xsZXISCQkAAAAAAAAAACIwCiMKBG5hbWUSG0xvY2FsQXZhaWxhYmlsaXR5Q29udHJvbGxlchIJCQAAAAAAADVAIiEKFAoEbmFtZRIMYXV0b3JlZ2lzdGVyEgkJAAAAAAAAAAAiJgoZCgRuYW1lEhFkaXNjb3ZlcnktbWFuYWdlchIJCQAAAAAAAAAAIjQKJwoEbmFtZRIfb3Blbl9hcGlfYWdncmVnYXRpb25fY29udHJvbGxlchIJCQAAAAAAAAAAIjcKKgoEbmFtZRIib3Blbl9hcGlfdjNfYWdncmVnYXRpb25fY29udHJvbGxlchIJCQAAAAAAAAAA5QMKM2dyYWZhbmFfd29ya3F1ZXVlX2xvbmdlc3RfcnVubmluZ19wcm9jZXNzb3Jfc2Vjb25kcxJWW0FMUEhBXSBIb3cgbWFueSBzZWNvbmRzIGhhcyB0aGUgbG9uZ2VzdCBydW5uaW5nIHByb2Nlc3NvciBmb3Igd29ya3F1ZXVlIGJlZW4gcnVubmluZy4YASI1CigKBG5hbWUSIEFQSVNlcnZpY2VSZWdpc3RyYXRpb25Db250cm9sbGVyEgkJAAAAAAAAAAAiMQokCgRuYW1lEhxBdmFpbGFibGVDb25kaXRpb25Db250cm9sbGVyEgkJAAAAAAAAAAAiMAojCgRuYW1lEhtMb2NhbEF2YWlsYWJpbGl0eUNvbnRyb2xsZXISCQkAAAAAAAAAACIhChQKBG5hbWUS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ZVJlZ2lzdHJhdGlvbkNvbnRyb2xsZXIaFgkAAAAAAAAAABoLCLmNhMQGEJKhi0QiPgokCgRuYW1lEhxBdmFpbGFibGVDb25kaXRpb25Db250cm9sbGVyGhYJAAAAAAAAEEAaCwi5jYTEBhD0xrdEIj0KIwoEbmFtZRIbTG9jYWxBdmFpbGFiaWxpdHlDb250cm9sbGVyGhYJAAAAAAAAAAAaCwi5jYTEBhDBto9EIi4KFAoEbmFtZRIMYXV0b3JlZ2lzdGVyGhYJAAAAAAAAAAAaCwi5jYTEBhCuyp1EIjMKGQoEbmFtZRIRZGlzY292ZXJ5LW1hbmFnZXIaFgkAAAAAAAAAABoLCLmNhMQGEMH3mEQiQQonCgRuYW1lEh9vcGVuX2FwaV9hZ2dyZWdhdGlvbl9jb250cm9sbGVyGhYJAAAAAAAASEAaCwi5jYTEBhChmN59IkUKKgoEbmFtZRIib3Blbl9hcGlfdjNfYWdncmVnYXRpb25fY29udHJvbGxlchoXCQAAAAAA4IhAGgwIuY2ExAYQtceHjwHtBAopZ3JhZmFuYV93b3JrcXVldWVfdW5maW5pc2hlZF93b3JrX3NlY29uZHMS5wFbQUxQSEFdIEhvdyBtYW55IHNlY29uZHMgb2Ygd29yayBoYXMgZG9uZSB0aGF0IGlzIGluIHByb2dyZXNzIGFuZCBoYXNuJ3QgYmVlbiBvYnNlcnZlZCBieSB3b3JrX2R1cmF0aW9uLiBMYXJnZSB2YWx1ZXMgaW5kaWNhdGUgc3R1Y2sgdGhyZWFkcy4gT25lIGNhbiBkZWR1Y2UgdGhlIG51bWJlciBvZiBzdHVjayB0aHJlYWRzIGJ5IG9ic2VydmluZyB0aGUgcmF0ZSBhdCB3aGljaCB0aGlzIGluY3JlYXNlcy4YASI1CigKBG5hbWUSIEFQSVNlcnZpY2VSZWdpc3RyYXRpb25Db250cm9sbGVyEgkJAAAAAAAAAAAiMQokCgRuYW1lEhxBdmFpbGFibGVDb25kaXRpb25Db250cm9sbGVyEgkJAAAAAAAAAAAiMAojCgRuYW1lEhtMb2NhbEF2YWlsYWJpbGl0eUNvbnRyb2xsZXISCQkAAAAAAAAAACIhChQKBG5hbWUSDGF1dG9yZWdpc3RlchIJCQAAAAAAAAAAIiYKGQoEbmFtZRIRZGlzY292ZXJ5LW1hbmFnZXISCQkAAAAAAAAAACI0CicKBG5hbWUSH29wZW5fYXBpX2FnZ3JlZ2F0aW9uX2NvbnRyb2xsZXISCQkAAAAAAAAAACI3CioKBG5hbWUSIm9wZW5fYXBpX3YzX2FnZ3JlZ2F0aW9uX2NvbnRyb2xsZXISCQkAAAAAAAAAANsLCidncmFmYW5hX3dvcmtxdWV1ZV93b3JrX2R1cmF0aW9uX3NlY29uZHMSRFtBTFBIQV0gSG93IGxvbmcgaW4gc2Vjb25kcyBwcm9jZXNzaW5nIGFuIGl0ZW0gZnJvbSB3b3JrcXVldWUgdGFrZXMuGAQixwEKKAoEbmFtZRIgQVBJU2VydmljZVJlZ2lzdHJhdGlvbkNvbnRyb2xsZXI6mgEIMxHflZIiiKzvPxoLCAAROoww4o55RT4aCwgAEUivvJry13o+GgsIARGN7bWg98awPhoLCA4R8GjjiLX45D4aCwgPESxDHOviNho/GgsIGBH8qfHSTWJQPxoLCC0RexSuR+F6hD8aCwgtEZqZmZmZmbk/GgsIMxEAAAAAAADwPxoLCDMRAAAAAAAAJEB6Cwi5jYTEBhDH7olEIsoBCiQKBG5hbWUSHEF2YWlsYWJsZUNvbmRpdGlvbkNvbnRyb2xsZXI6oQEIpQIRQT0uK8bp6j8aCwgAETqMMOKOeUU+GgsIABFIr7ya8td6PhoLCAARje21oPfGsD4aCwhcEfBo44i1+OQ+GgwIwgERLEMc6+I2Gj8aDAjHARH8qfHSTWJQPxoMCJUCEXsUrkfheoQ/GgwIpQIRmpmZmZmZuT8aDAilAhEAAAAAAADwPxoMCKUCEQAAAAAAACRAegsIuY2ExAYQrPK1RCLCAQojCgRuYW1lEhtMb2NhbEF2YWlsYWJpbGl0eUNvbnRyb2xsZXI6mgEIABEAAAAAAAAAABoLCAAROoww4o55RT4aCwgAEUivvJry13o+GgsIABGN7bWg98awPhoLCAAR8GjjiLX45D4aCwgAESxDHOviNho/GgsIABH8qfHSTWJQPxoLCAARexSuR+F6hD8aCwgAEZqZmZmZmbk/GgsIABEAAAAAAADwPxoLCAARAAAAAAAAJEB6Cwi5jYTEBhDv+Y5EIrMBChQKBG5hbWUSDGF1dG9yZWdpc3RlcjqaAQhIES6AumWtv74/GgsIABE6jDDijnlFPhoLCAARSK+8mvLXej4aCwgAEY3ttaD3xrA+GgsIMBHwaOOItfjkPhoLCDIRLEMc6+I2Gj8aCwgzEfyp8dJNYlA/GgsIRBF7FK5H4XqEPxoLCEgRmpmZmZmZuT8aCwhIEQAAAAAAAPA/GgsISBEAAAAAAAAkQHoLCLmNhMQGENL7nEQiuAEKGQoEbmFtZRIRZGlzY292ZXJ5LW1hbmFnZXI6mgEIORGHBHLaag7HPxoLCAAROoww4o55RT4aCwgAEUivvJry13o+GgsIABGN7bWg98awPhoLCAAR8GjjiLX45D4aCwgBESxDHOviNho/GgsIDBH8qfHSTWJQPxoLCDYRexSuR+F6hD8aCwg5EZqZmZmZmbk/GgsIOREAAAAAAADwPxoLCDkRAAAAAAAAJEB6Cwi5jYTEBhDuuphEIsYBCicKBG5hbWUSH29wZW5fYXBpX2FnZ3JlZ2F0aW9uX2NvbnRyb2xsZXI6mgEIKhFcPBxa7ayzPxoLCAAROoww4o55RT4aCwgAEUivvJry13o+GgsIABGN7bWg98awPhoLCAAR8GjjiLX45D4aCwgAESxDHOviNho/GgsIABH8qfHSTWJQPxoLCCoRexSuR+F6hD8aCwgqEZqZmZmZmbk/GgsIKhEAAAAAAADwPxoLCCoRAAAAAAAAJEB6Cwi5jYTEBhCxytx9ItEBCioKBG5hbWUSIm9wZW5fYXBpX3YzX2FnZ3JlZ2F0aW9uX2NvbnRyb2xsZXI6ogEIkgYRJ2nyJTibzj8aCwgAETqMMOKOeUU+GgsIABFIr7ya8td6PhoLCAARje21oPfGsD4aCwgAEfBo44i1+OQ+GgwI6wIRLEMc6+I2Gj8aDAjmBRH8qfHSTWJQPxoMCJIGEXsUrkfheoQ/GgwIkgYRmpmZmZmZuT8aDAiSBhEAAAAAAADwPxoMCJIGEQAAAAAAACRAegwIuY2ExAYQv66FjwFzCidsb2tpX2V4cGVyaW1lbnRhbF9mZWF0dXJlc19pbl91c2VfdG90YWwSK1RoZSBudW1iZXIgb2YgZXhwZXJpbWVudGFsIGZlYXR1cmVzIGluIHVzZS4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCahp3NA64BCiluZXRfY29ubnRyYWNrX2RpYWxlcl9jb25uX2F0dGVtcHRlZF90b3RhbBJHVG90YWwgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIGF0dGVtcHRlZCBieSB0aGUgZ2l2ZW4gZGlhbGVyIGEgZ2l2ZW4gbmFtZS4YACI2ChsKC2RpYWxlcl9uYW1lEgxhbGVydG1hbmFnZXIaFwkAAAAAAAAAABoMCLeNhMQGEJS79OwCuAEKJm5ldF9jb25udHJhY2tfZGlhbGVyX2Nvbm5fY2xvc2VkX3RvdGFsElRUb3RhbCBudW1iZXIgb2YgY29ubmVjdGlvbnMgY2xvc2VkIHdoaWNoIG9yaWdpbmF0ZWQgZnJvbSB0aGUgZGlhbGVyIG9mIGEgZ2l2ZW4gbmFtZS4YACI2ChsKC2RpYWxlcl9uYW1lEgxhbGVydG1hbmFnZXIaFwkAAAAAAAAAABoMCLeNhMQGEM6C+OwCvwEKK25ldF9jb25udHJhY2tfZGlhbGVyX2Nvbm5fZXN0YWJsaXNoZWRfdG90YWwSVlRvdGFsIG51bWJlciBvZiBjb25uZWN0aW9ucyBzdWNjZXNzZnVsbHkgZXN0YWJsaXNoZWQgYnkgdGhlIGdpdmVuIGRpYWxlciBhIGdpdmVuIG5hbWUuGAAiNgobCgtkaWFsZXJfbmFtZRIMYWxlcnRtYW5hZ2VyGhcJAAAAAAAAAAAaDAi3jYTEBhCzz/TsAqEDCiZuZXRfY29ubnRyYWNrX2RpYWxlcl9jb25uX2ZhaWxlZF90b3RhbBJGVG90YWwgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIGZhaWxlZCB0byBkaWFsIGJ5IHRoZSBkaWFsZXIgYSBnaXZlbiBuYW1lLhgAIkkKGwoLZGlhbGVyX25hbWUSDGFsZXJ0bWFuYWdlcgoRCgZyZWFzb24SB3JlZnVzZWQaFwkAAAAAAAAAABoMCLeNhMQGENqD9uwCIkwKGwoLZGlhbGVyX25hbWUSDGFsZXJ0bWFuYWdlcgoUCgZyZWFzb24SCnJlc29sdXRpb24aFwkAAAAAAAAAABoMCLeNhMQGEPr19ewCIkkKGwoLZGlhbGVyX25hbWUSDGFsZXJ0bWFuYWdlcgoRCgZyZWFzb24SB3RpbWVvdXQaFwkAAAAAAAAAABoMCLeNhMQGEMzn9OwCIkkKGwoLZGlhbGVyX25hbWUSDGFsZXJ0bWFuYWdlcgoRCgZyZWFzb24SB3Vua25vd24aFwkAAAAAAAAAABoMCLeNhMQGELaS9uwChQEKJ29wZW5mZ2FfY2FjaGVjb250cm9sbGVyX2NhY2hlX2hpdF9jb3VudBI9VGhlIHRvdGFsIG51bWJlciBvZiBjYWNoZSBoaXRzIGZyb20gY2FjaGVjb250cm9sbGVyIHJlcXVlc3RzLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGEN29gcwDlQEKMG9wZW5mZ2FfY2FjaGVjb250cm9sbGVyX2NhY2hlX2ludmFsaWRhdGlvbl9jb3VudBJEVGhlIHRvdGFsIG51bWJlciBvZiBpbnZhbGlkYXRpb25zIHBlcmZvcm1lZCBieSB0aGUgY2FjaGUgY29udHJvbGxlci4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhC5lIPMA3cKKW9wZW5mZ2FfY2FjaGVjb250cm9sbGVyX2NhY2hlX3RvdGFsX2NvdW50Ei1UaGUgdG90YWwgbnVtYmVyIG9mIGNhY2hlY29udHJvbGxlciByZXF1ZXN0cy4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhDVlP/LA24KHW9wZW5mZ2FfY2hlY2tfY2FjaGVfaGl0X2NvdW50EjBUaGUgdG90YWwgbnVtYmVyIG9mIGNhY2hlIGhpdHMgZm9yIFJlc29sdmVDaGVjay4YACIZGhcJAAAAAAAAAAAaDAiTjYTEBhDtuaHMA6gBCiVvcGVuZmdhX2NoZWNrX2NhY2hlX2ludmFsaWRfaGl0X2NvdW50EmJUaGUgdG90YWwgbnVtYmVyIG9mIGNhY2hlIGhpdHMgZm9yIFJlc29sdmVDaGVjayB0aGF0IHdlcmUgZGlzY2FyZGVkIGJlY2F1c2UgdGhleSB3ZXJlIGludmFsaWRhdGVkLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGEO+Do8wDagofb3BlbmZnYV9jaGVja19jYWNoZV90b3RhbF9jb3VudBIqVGhlIHRvdGFsIG51bWJlciBvZiBjYWxscyB0byBSZXNvbHZlQ2hlY2suGAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQscCgzAOCAgopb3BlbmZnYV9jb25kaXRpb25fY29tcGlsYXRpb25fZHVyYXRpb25fbXMSTEEgaGlzdG9ncmFtIG1lYXN1cmluZyB0aGUgY29tcGlsYXRpb24gdGltZSAoaW4gbWlsbGlzZWNvbmRzKSBvZiBhIENvbmRpdGlvbi4YBCKEATqBAQgAEQAAAAAAAAAAGgsIABEAAAAAAADwPxoLCAARAAAAAAAAFEAaCwgAEQAAAAAAAC5AGgsIABEAAAAAAABJQBoLCAARAAAAAAAAWUAaCwgAEQAAAAAAQG9AGgsIABEAAAAAAEB/QBoLCAARAAAAAABAj0B6DAiTjYTEBhCSop+1A5UCCiFvcGVuZmdhX2NvbmRpdGlvbl9ldmFsdWF0aW9uX2Nvc3QSTUEgaGlzdG9ncmFtIG9mIHRoZSBDRUwgZXZhbHVhdGlvbiBjb3N0IG9mIGEgQ29uZGl0aW9uIGluIGEgUmVsYXRpb25zaGlwIFR1cGxlGAQingE6mwEIABEAAAAAAAAAABoLCAARAAAAAAAAAAAaCwgAEY7jOI7jOCZAGgsIABGO4ziO4zg2QBoLCAARqqqqqqqqQEAaCwgAEY7jOI7jOEZAGgsIABFyHMdxHMdLQBoLCAARq6qqqqqqUEAaCwgAER3HcRzHcVNAGgsIABGP4ziO4zhWQCgGMQAAAAAAAPA3OAB6DAiTjYTEBhDHtaa1A5oCCihvcGVuZmdhX2NvbmRpdGlvbl9ldmFsdWF0aW9uX2R1cmF0aW9uX21zEktBIGhpc3RvZ3JhbSBtZWFzdXJpbmcgdGhlIGV2YWx1YXRpb24gdGltZSAoaW4gbWlsbGlzZWNvbmRzKSBvZiBhIENvbmRpdGlvbi4YBCKeATqbAQgAEQAAAAAAAAAAGgsIABGamZmZmZm5PxoLCAARAAAAAAAA0D8aCwgAEQAAAAAAAOA/GgsIABEAAAAAAADwPxoLCAARAAAAAAAAFEAaCwgAEQAAAAAAAC5AGgsIABEAAAAAAABJQBoLCAARAAAAAAAAWUAaCwgAEQAAAAAAQG9AGgsIABEAAAAAAEB/QHoMCJONhMQGEOi3pLUDtgEKMG9wZW5mZ2FfbGlzdF9vYmplY3RzX2Z1cnRoZXJfZXZhbF9yZXF1aXJlZF9jb3VudBJlTnVtYmVyIG9mIG9iamVjdHMgaW4gYSBMaXN0T2JqZWN0cyBjYWxsIHRoYXQgbmVlZGVkIHRvIGlzc3VlIGEgQ2hlY2sgY2FsbCB0byBkZXRlcm1pbmUgYSBmaW5hbCByZXN1bHQYACIZGhcJAAAAAAAAAAAaDAiTjYTEBhCq/K/MA7kBCjNvcGVuZmdhX2xpc3Rfb2JqZWN0c19ub19mdXJ0aGVyX2V2YWxfcmVxdWlyZWRfY291bnQSZU51bWJlciBvZiBvYmplY3RzIGluIGEgTGlzdE9iamVjdHMgY2FsbCB0aGF0IG5lZWRlZCB0byBpc3N1ZSBhIENoZWNrIGNhbGwgdG8gZGV0ZXJtaW5lIGEgZmluYWwgcmVzdWx0GAAiGRoXCQAAAAAAAAAAGgwIk42ExAYQqpaxzANfCh1vcGVuZmdhX3NoYXJlZF9pdGVyYXRvcl9jb3VudBIvVGhlIGN1cnJlbnQgbnVtYmVyIG9mIGl0ZW1zIG9mIHNoYXJlZCBpdGVyYXRvci4YASILEgkJAAAAAAAAAACDAQowb3BlbmZnYV9zaGFyZWRfaXRlcmF0b3Jfd2F0Y2hkb2dfdGltZXJfdHJpZ2dlcmVkEjJUb3RhbCBudW1iZXIgb2YgdGltZXMgd2F0Y2hkb2cgdGltZXIgaXMgdHJpZ2dlcmVkLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGEL7ipswDUAoYcGx1Z2luc19hY3RpdmVfaW5zdGFuY2VzEiVUaGUgbnVtYmVyIG9mIGFjdGl2ZSBwbHVnaW4gaW5zdGFuY2VzGAEiCxIJCQAAAAAAAAAAdAoicGx1Z2luc19kYXRhc291cmNlX2luc3RhbmNlc190b3RhbBIxVGhlIHRvdGFsIG51bWJlciBvZiBkYXRhIHNvdXJjZSBpbnN0YW5jZXMgY3JlYXRlZBgAIhkaFwkAAAAAAAAAABoMCJONhMQGELihq80DXAoZcHJvY2Vzc19jcHVfc2Vjb25kc190b3RhbBIwVG90YWwgdXNlciBhbmQgc3lzdGVtIENQVSB0aW1lIHNwZW50IGluIHNlY29uZHMuGAAiCxoJCRSuR+F6FEFASgoPcHJvY2Vzc19tYXhfZmRzEihNYXhpbXVtIG51bWJlciBvZiBvcGVuIGZpbGUgZGVzY3JpcHRvcnMuGAEiCxIJCQAAAAAAADBBbwojcHJvY2Vzc19uZXR3b3JrX3JlY2VpdmVfYnl0ZXNfdG90YWwSOU51bWJlciBvZiBieXRlcyByZWNlaXZlZCBieSB0aGUgcHJvY2VzcyBvdmVyIHRoZSBuZXR3b3JrLhgAIgsaCQkAAIDAR7zBQWwKJHByb2Nlc3NfbmV0d29ya190cmFuc21pdF9ieXRlc190b3RhbBI1TnVtYmVyIG9mIGJ5dGVzIHNlbnQgYnkgdGhlIHByb2Nlc3Mgb3ZlciB0aGUgbmV0d29yay4YACILGgkJAAAAMEACckFDChBwcm9jZXNzX29wZW5fZmRzEiBOdW1iZXIgb2Ygb3BlbiBmaWxlIGRlc2NyaXB0b3JzLhgBIgsSCQkAAAAAAABYQE4KHXByb2Nlc3NfcmVzaWRlbnRfbWVtb3J5X2J5dGVzEh5SZXNpZGVudCBtZW1vcnkgc2l6ZSBpbiBieXRlcy4YASILEgkJAAAAAEBBwEFjChpwcm9jZXNzX3N0YXJ0X3RpbWVfc2Vjb25kcxI2U3RhcnQgdGltZSBvZiB0aGUgcHJvY2VzcyBzaW5jZSB1bml4IGVwb2NoIGluIHNlY29uZHMuGAEiCxIJCY/CpaRBINpBTAoccHJvY2Vzc192aXJ0dWFsX21lbW9yeV9ieXRlcxIdVmlydHVhbCBtZW1vcnkgc2l6ZSBpbiBieXRlcy4YASILEgkJAAAAAPAJ30FnCiBwcm9jZXNzX3ZpcnR1YWxfbWVtb3J5X21heF9ieXRlcxI0TWF4aW11bSBhbW91bnQgb2YgdmlydHVhbCBtZW1vcnkgYXZhaWxhYmxlIGluIGJ5dGVzLhgBIgsSCQkAAAAAAADwQ4cBCjFwcm9tZXRoZXVzX3RlbXBsYXRlX3RleHRfZXhwYW5zaW9uX2ZhaWx1cmVzX3RvdGFsEjVUaGUgdG90YWwgbnVtYmVyIG9mIHRlbXBsYXRlIHRleHQgZXhwYW5zaW9uIGZhaWx1cmVzLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGEKybuLUDdwopcHJvbWV0aGV1c190ZW1wbGF0ZV90ZXh0X2V4cGFuc2lvbnNfdG90YWwSLVRoZSB0b3RhbCBudW1iZXIgb2YgdGVtcGxhdGUgdGV4dCBleHBhbnNpb25zLhgAIhkaFwkAAAAAAAAAABoMCJONhMQGELOouLUDZAoqcHJvbWh0dHBfbWV0cmljX2hhbmRsZXJfcmVxdWVzdHNfaW5fZmxpZ2h0EidDdXJyZW50IG51bWJlciBvZiBzY3JhcGVzIGJlaW5nIHNlcnZlZC4YASILEgkJAAAAAAAAAADNAQomcHJvbWh0dHBfbWV0cmljX2hhbmRsZXJfcmVxdWVzdHNfdG90YWwSLFRvdGFsIG51bWJlciBvZiBzY3JhcGVzIGJ5IEhUVFAgc3RhdHVzIGNvZGUuGAAiJQoLCgRjb2RlEgMyMDAaFgkAAAAAAAAAABoLCLmNhMQGEJ/imAYiJQoLCgRjb2RlEgM1MDAaFgkAAAAAAAAAABoLCLmNhMQGELPwmAYiJQoLCgRjb2RlEgM1MDMaFgkAAAAAAAAAABoLCLmNhMQGEMr3mAb5AQoidGVtcG9fYnVmZmVyX3Bvb2xfbWlzc19ieXRlc190b3RhbBI+VGhlIHRvdGFsIG51bWJlciBvZiBhbGxvYydlZCBieXRlcyB0aGF0IG1pc3NlZCB0aGUgc3luYyBwb29scy4YACJHChEKCWRpcmVjdGlvbhIEb3ZlcgoZCgRuYW1lEhFpbmdlc3Rlcl9wcmVhbGxvYxoXCQAAAAAAAAAAGgwIk42ExAYQ/YuSwAMiSAoSCglkaXJlY3Rpb24SBXVuZGVyChkKBG5hbWUSEWluZ2VzdGVyX3ByZWFsbG9jGhcJAAAAAAAAAAAaDAiTjYTEBhDYpZLAAw== \ No newline at end of file From 56d8c6c3762bc9da50bf981ff21d12929d875f01 Mon Sep 17 00:00:00 2001 From: Piotr <17101802+thampiotr@users.noreply.github.com> Date: Wed, 30 Jul 2025 15:57:40 +0100 Subject: [PATCH 09/24] fix worker pool test --- internal/runtime/internal/worker/worker_pool_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/runtime/internal/worker/worker_pool_test.go b/internal/runtime/internal/worker/worker_pool_test.go index c43a66c3260..69aedba307a 100644 --- a/internal/runtime/internal/worker/worker_pool_test.go +++ b/internal/runtime/internal/worker/worker_pool_test.go @@ -303,7 +303,7 @@ func TestWorkerPool(t *testing.T) { shortTimeout := 100 * time.Millisecond err = pool.Stop(shortTimeout) require.Error(t, err) - require.Contains(t, err.Error(), "worker pool did not stop within timeout") + require.Contains(t, err.Error(), "worker pool did not stop within 100ms timeout") // Clean up the blocking task close(blockTask) @@ -311,11 +311,11 @@ func TestWorkerPool(t *testing.T) { }) t.Run("should stop successfully when no tasks are running", func(t *testing.T) { - defer goleak.VerifyNone(t) + defer goleak.VerifyNone(t, goleak.IgnoreAnyFunction("github.com/grafana/alloy/internal/runtime/internal/worker.(*fixedWorkerPool).Stop.func1")) pool := NewFixedWorkerPool(2, 5) // Submit a quick task that completes immediately - done := make(chan struct{}) + done := make(chan struct{}, 1) err := pool.SubmitWithKey("quick-task", func() { done <- struct{}{} }) From 3d1abf34f4dc831a2afb8992149ff9eaa3c390af Mon Sep 17 00:00:00 2001 From: Piotr <17101802+thampiotr@users.noreply.github.com> Date: Wed, 30 Jul 2025 16:22:59 +0100 Subject: [PATCH 10/24] change metric validation scheme to legacy default --- CHANGELOG.md | 4 +--- .../prometheus/prometheus.scrape.md | 8 +++---- docs/sources/release-notes.md | 2 -- .../configgen/config_gen_podmonitor_test.go | 20 ++++++++-------- .../configgen/config_gen_probe_test.go | 12 +++++----- .../configgen/config_gen_scrapeconfig_test.go | 8 +++---- .../config_gen_servicemonitor_test.go | 24 +++++++++---------- .../component/prometheus/operator/types.go | 2 ++ .../component/prometheus/scrape/scrape.go | 2 +- .../prometheus/scrape/scrape_test.go | 21 +++++++--------- 10 files changed, 49 insertions(+), 54 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 19c7c0a3c19..aba480eee3b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,8 +18,6 @@ Main (unreleased) - The `enable_http2` in `prometheus.remote_write` component's endpoints has been changed to `false` by default. Previously, in Prometheus v2 the remote write http client would default to use http2. In order to parallelize multiple remote write queues across multiple sockets its preferable to not default to http2. If you prefer to use http2 for remote write you must now set `enable_http2` to `true` in your `prometheus.remote_write` endpoints configuration section. - - Prometheus components such as `prometheus.scrape` and `prometheus.operator.*` now support UTF-8 in metric and label names by default. This means metric and label names can change after upgrading according to what is exposed by endpoints. Furthermore, metric and label names that would have previously been flagged as invalid no longer will be. Users wishing to preserve the original validation behavior can update their `prometheus.scrape` configuration to specify the legacy validation scheme: `metric_name_validation_scheme = "legacy"` and optionally setting the `metric_name_escaping_scheme` to a desired value. See `prometheus.scrape` reference documentation. - - The experimental CLI flag `--feature.prometheus.metric-validation-scheme` has been deprecated and has no effect. You can configure the metric validation scheme individually for each `prometheus.scrape` component. - Log message format has changed for some of the `prometheus.*` components as part of the upgrade to Prometheus v3. @@ -41,7 +39,7 @@ Main (unreleased) ### Enhancements -- `prometheus.scrape` now supports `convert_classic_histograms_to_nhcb`, `enable_compression`, `native_histogram_bucket_limit`, and `native_histogram_min_bucket_factor` arguments. (@thampiotr) +- `prometheus.scrape` now supports `convert_classic_histograms_to_nhcb`, `enable_compression`, `metric_name_validation_scheme`, `metric_name_escaping_scheme`, `native_histogram_bucket_limit`, and `native_histogram_min_bucket_factor` arguments. See reference documentation for more details. (@thampiotr) - Add `max_send_message_size` configuration option to `loki.source.api` component to control the maximum size of requests to the push API. (@thampiotr) diff --git a/docs/sources/reference/components/prometheus/prometheus.scrape.md b/docs/sources/reference/components/prometheus/prometheus.scrape.md index 2925be6e492..ee2691fea66 100644 --- a/docs/sources/reference/components/prometheus/prometheus.scrape.md +++ b/docs/sources/reference/components/prometheus/prometheus.scrape.md @@ -57,8 +57,8 @@ You can use the following arguments with `prometheus.scrape`: | `label_limit` | `uint` | More than this many labels post metric-relabeling causes the scrape to fail. | | no | | `label_name_length_limit` | `uint` | More than this label name length post metric-relabeling causes the scrape to fail. | | no | | `label_value_length_limit` | `uint` | More than this label value length post metric-relabeling causes the scrape to fail. | | no | -| `metric_name_escaping_scheme` | `string` | The escaping scheme to use for metric names. See below for available values. | `"allow-utf-8"` | no | -| `metric_name_validation_scheme` | `string` | The validation scheme to use for metric names. See below for available values. | `"utf8"` | no | +| `metric_name_escaping_scheme` | `string` | The escaping scheme to use for metric names. See below for available values. | `"underscores"` | no | +| `metric_name_validation_scheme` | `string` | The validation scheme to use for metric names. See below for available values. | `"legacy"` | no | | `metrics_path` | `string` | The HTTP resource path on which to fetch metrics from targets. | `"/metrics"` | no | | `native_histogram_bucket_limit` | `uint` | Native histogram buckets will be merged to stay within this limit. Disabled when set to zero. | `0` | no | | `native_histogram_min_bucket_factor` | `float64` | If the growth from one bucket to the next is smaller than this, buckets will be merged. Disabled when set to zero. | `0` | no | @@ -108,8 +108,8 @@ The default value for `scrape_protocols` changes to `["PrometheusProto", "OpenMe The `metric_name_validation_scheme` controls how metric names are validated. The following values are supported: -* `"utf8"` - Uses UTF-8 validation scheme (default) -* `"legacy"` - Uses legacy validation scheme which was default in Prometheus v2. +* `"utf8"` - Uses UTF-8 validation scheme. +* `"legacy"` - Uses legacy validation scheme which was default in Prometheus v2 (default). The `metric_name_escaping_scheme` controls how metric names are escaped. The following values are supported: diff --git a/docs/sources/release-notes.md b/docs/sources/release-notes.md index 17c4ee589ff..26906e532df 100644 --- a/docs/sources/release-notes.md +++ b/docs/sources/release-notes.md @@ -24,8 +24,6 @@ Prometheus dependency had a major version upgrade from v2.55.1 to v3.4.2. - The `enable_http2` in `prometheus.remote_write` component's endpoints has been changed to `false` by default. Previously, in Prometheus v2 the remote write http client would default to use http2. In order to parallelize multiple remote write queues across multiple sockets its preferable to not default to http2. If you prefer to use http2 for remote write you must now set `enable_http2` to `true` in your `prometheus.remote_write` endpoints configuration section. -- Prometheus components such as `prometheus.scrape` and `prometheus.operator.*` now support UTF-8 in metric and label names by default. This means metric and label names can change after upgrading according to what is exposed by endpoints. Furthermore, metric and label names that would have previously been flagged as invalid no longer will be. Users wishing to preserve the original validation behavior can update their `prometheus.scrape` configuration to specify the legacy validation scheme: `metric_name_validation_scheme = "legacy"` and optionally setting the `metric_name_escaping_scheme` to a desired value. See `prometheus.scrape` reference documentation. - - The experimental CLI flag `--feature.prometheus.metric-validation-scheme` has been deprecated and has no effect. You can configure the metric validation scheme individually for each `prometheus.scrape` component. - Log message format has changed for some of the `prometheus.*` components as part of the upgrade to Prometheus v3. diff --git a/internal/component/prometheus/operator/configgen/config_gen_podmonitor_test.go b/internal/component/prometheus/operator/configgen/config_gen_podmonitor_test.go index 74e06d90f28..e2edd88d72d 100644 --- a/internal/component/prometheus/operator/configgen/config_gen_podmonitor_test.go +++ b/internal/component/prometheus/operator/configgen/config_gen_podmonitor_test.go @@ -89,8 +89,8 @@ func TestGeneratePodMonitorConfig(t *testing.T) { }, }, ConvertClassicHistogramsToNHCB: ptr.To(false), - MetricNameValidationScheme: "utf8", - MetricNameEscapingScheme: "allow-utf-8", + MetricNameValidationScheme: "legacy", + MetricNameEscapingScheme: "underscores", }, }, { @@ -150,8 +150,8 @@ func TestGeneratePodMonitorConfig(t *testing.T) { }, }, ConvertClassicHistogramsToNHCB: ptr.To(false), - MetricNameValidationScheme: "utf8", - MetricNameEscapingScheme: "allow-utf-8", + MetricNameValidationScheme: "legacy", + MetricNameEscapingScheme: "underscores", }, }, { @@ -211,8 +211,8 @@ func TestGeneratePodMonitorConfig(t *testing.T) { }, }, ConvertClassicHistogramsToNHCB: ptr.To(false), - MetricNameValidationScheme: "utf8", - MetricNameEscapingScheme: "allow-utf-8", + MetricNameValidationScheme: "legacy", + MetricNameEscapingScheme: "underscores", }, }, { @@ -272,8 +272,8 @@ func TestGeneratePodMonitorConfig(t *testing.T) { }, }, ConvertClassicHistogramsToNHCB: ptr.To(false), - MetricNameValidationScheme: "utf8", - MetricNameEscapingScheme: "allow-utf-8", + MetricNameValidationScheme: "legacy", + MetricNameEscapingScheme: "underscores", }, }, { @@ -438,8 +438,8 @@ func TestGeneratePodMonitorConfig(t *testing.T) { LabelNameLengthLimit: 104, LabelValueLengthLimit: 105, ConvertClassicHistogramsToNHCB: ptr.To(false), - MetricNameValidationScheme: "utf8", - MetricNameEscapingScheme: "allow-utf-8", + MetricNameValidationScheme: "legacy", + MetricNameEscapingScheme: "underscores", }, }, } diff --git a/internal/component/prometheus/operator/configgen/config_gen_probe_test.go b/internal/component/prometheus/operator/configgen/config_gen_probe_test.go index f0c0127e361..392f2c1bc88 100644 --- a/internal/component/prometheus/operator/configgen/config_gen_probe_test.go +++ b/internal/component/prometheus/operator/configgen/config_gen_probe_test.go @@ -102,8 +102,8 @@ func TestGenerateProbeConfig(t *testing.T) { }, }, ConvertClassicHistogramsToNHCB: ptr.To(false), - MetricNameValidationScheme: "utf8", - MetricNameEscapingScheme: "allow-utf-8", + MetricNameValidationScheme: "legacy", + MetricNameEscapingScheme: "underscores", }, }, { @@ -194,8 +194,8 @@ func TestGenerateProbeConfig(t *testing.T) { }, }, ConvertClassicHistogramsToNHCB: ptr.To(false), - MetricNameValidationScheme: "utf8", - MetricNameEscapingScheme: "allow-utf-8", + MetricNameValidationScheme: "legacy", + MetricNameEscapingScheme: "underscores", }, }, { @@ -288,8 +288,8 @@ func TestGenerateProbeConfig(t *testing.T) { }, }, ConvertClassicHistogramsToNHCB: ptr.To(false), - MetricNameValidationScheme: "utf8", - MetricNameEscapingScheme: "allow-utf-8", + MetricNameValidationScheme: "legacy", + MetricNameEscapingScheme: "underscores", }, }, } diff --git a/internal/component/prometheus/operator/configgen/config_gen_scrapeconfig_test.go b/internal/component/prometheus/operator/configgen/config_gen_scrapeconfig_test.go index b14e6622b96..d1c56434be3 100644 --- a/internal/component/prometheus/operator/configgen/config_gen_scrapeconfig_test.go +++ b/internal/component/prometheus/operator/configgen/config_gen_scrapeconfig_test.go @@ -84,8 +84,8 @@ func TestGenerateStaticScrapeConfigConfig(t *testing.T) { }, }, ConvertClassicHistogramsToNHCB: ptr.To(false), - MetricNameValidationScheme: "utf8", - MetricNameEscapingScheme: "allow-utf-8", + MetricNameValidationScheme: "legacy", + MetricNameEscapingScheme: "underscores", }, }, { @@ -137,8 +137,8 @@ func TestGenerateStaticScrapeConfigConfig(t *testing.T) { }, }, ConvertClassicHistogramsToNHCB: ptr.To(false), - MetricNameValidationScheme: "utf8", - MetricNameEscapingScheme: "allow-utf-8", + MetricNameValidationScheme: "legacy", + MetricNameEscapingScheme: "underscores", }, }, } diff --git a/internal/component/prometheus/operator/configgen/config_gen_servicemonitor_test.go b/internal/component/prometheus/operator/configgen/config_gen_servicemonitor_test.go index d48aad574f6..ffac107de1c 100644 --- a/internal/component/prometheus/operator/configgen/config_gen_servicemonitor_test.go +++ b/internal/component/prometheus/operator/configgen/config_gen_servicemonitor_test.go @@ -101,8 +101,8 @@ func TestGenerateServiceMonitorConfig(t *testing.T) { }, }, ConvertClassicHistogramsToNHCB: ptr.To(false), - MetricNameValidationScheme: "utf8", - MetricNameEscapingScheme: "allow-utf-8", + MetricNameValidationScheme: "legacy", + MetricNameEscapingScheme: "underscores", }, }, { @@ -175,8 +175,8 @@ func TestGenerateServiceMonitorConfig(t *testing.T) { }, }, ConvertClassicHistogramsToNHCB: ptr.To(false), - MetricNameValidationScheme: "utf8", - MetricNameEscapingScheme: "allow-utf-8", + MetricNameValidationScheme: "legacy", + MetricNameEscapingScheme: "underscores", }, }, { @@ -249,8 +249,8 @@ func TestGenerateServiceMonitorConfig(t *testing.T) { }, }, ConvertClassicHistogramsToNHCB: ptr.To(false), - MetricNameValidationScheme: "utf8", - MetricNameEscapingScheme: "allow-utf-8", + MetricNameValidationScheme: "legacy", + MetricNameEscapingScheme: "underscores", }, }, { @@ -323,8 +323,8 @@ func TestGenerateServiceMonitorConfig(t *testing.T) { }, }, ConvertClassicHistogramsToNHCB: ptr.To(false), - MetricNameValidationScheme: "utf8", - MetricNameEscapingScheme: "allow-utf-8", + MetricNameValidationScheme: "legacy", + MetricNameEscapingScheme: "underscores", }, }, { @@ -506,8 +506,8 @@ func TestGenerateServiceMonitorConfig(t *testing.T) { LabelNameLengthLimit: 104, LabelValueLengthLimit: 105, ConvertClassicHistogramsToNHCB: ptr.To(false), - MetricNameValidationScheme: "utf8", - MetricNameEscapingScheme: "allow-utf-8", + MetricNameValidationScheme: "legacy", + MetricNameEscapingScheme: "underscores", }, }, { @@ -585,8 +585,8 @@ func TestGenerateServiceMonitorConfig(t *testing.T) { }, }, ConvertClassicHistogramsToNHCB: ptr.To(false), - MetricNameValidationScheme: "utf8", - MetricNameEscapingScheme: "allow-utf-8", + MetricNameValidationScheme: "legacy", + MetricNameEscapingScheme: "underscores", }, }, } diff --git a/internal/component/prometheus/operator/types.go b/internal/component/prometheus/operator/types.go index 6ac2e99d550..2df849e0651 100644 --- a/internal/component/prometheus/operator/types.go +++ b/internal/component/prometheus/operator/types.go @@ -54,6 +54,8 @@ func (s *ScrapeOptions) GlobalConfig() promconfig.GlobalConfig { cfg := promconfig.DefaultGlobalConfig cfg.ScrapeInterval = model.Duration(s.DefaultScrapeInterval) cfg.ScrapeTimeout = model.Duration(s.DefaultScrapeTimeout) + cfg.MetricNameValidationScheme = promconfig.LegacyValidationConfig + cfg.MetricNameEscapingScheme = model.EscapeUnderscores return cfg } diff --git a/internal/component/prometheus/scrape/scrape.go b/internal/component/prometheus/scrape/scrape.go index c85498847af..196059edf2d 100644 --- a/internal/component/prometheus/scrape/scrape.go +++ b/internal/component/prometheus/scrape/scrape.go @@ -157,7 +157,7 @@ func (arg *Arguments) SetToDefault() { ScrapeFallbackProtocol: string(config.PrometheusText0_0_4), // Use the same fallback protocol as Prometheus v2 ScrapeNativeHistograms: false, // NOTE: the MetricNameEscapingScheme depends on this, so its default must be set in Validate() function. - MetricNameValidationScheme: config.UTF8ValidationConfig, + MetricNameValidationScheme: config.LegacyValidationConfig, ConvertClassicHistogramsToNHCB: false, EnableCompression: true, NativeHistogramBucketLimit: 0, diff --git a/internal/component/prometheus/scrape/scrape_test.go b/internal/component/prometheus/scrape/scrape_test.go index fce1928cde1..84a5404e718 100644 --- a/internal/component/prometheus/scrape/scrape_test.go +++ b/internal/component/prometheus/scrape/scrape_test.go @@ -297,8 +297,8 @@ func TestAlloyConfigDefaultsAndValidation(t *testing.T) { `, expectError: false, assertions: func(t *testing.T, args Arguments) { - require.Equal(t, "utf8", args.MetricNameValidationScheme) - require.Equal(t, "allow-utf-8", args.MetricNameEscapingScheme) + require.Equal(t, "legacy", args.MetricNameValidationScheme) + require.Equal(t, "underscores", args.MetricNameEscapingScheme) require.Equal(t, []string{ "OpenMetricsText1.0.0", "OpenMetricsText0.0.1", @@ -322,8 +322,8 @@ func TestAlloyConfigDefaultsAndValidation(t *testing.T) { `, expectError: false, assertions: func(t *testing.T, args Arguments) { - require.Equal(t, "utf8", args.MetricNameValidationScheme) - require.Equal(t, "allow-utf-8", args.MetricNameEscapingScheme) + require.Equal(t, "legacy", args.MetricNameValidationScheme) + require.Equal(t, "underscores", args.MetricNameEscapingScheme) require.Equal(t, []string{ "PrometheusProto", "OpenMetricsText1.0.0", @@ -450,17 +450,14 @@ func TestAlloyConfigDefaultsAndValidation(t *testing.T) { }, }, { - name: "escaping scheme only - validation scheme should default to utf8", + name: "escaping scheme only set to utf-8", config: ` targets = [{ "target1" = "target1" }] forward_to = [] metric_name_escaping_scheme = "allow-utf-8" `, - expectError: false, - assertions: func(t *testing.T, args Arguments) { - require.Equal(t, "utf8", args.MetricNameValidationScheme) - require.Equal(t, "allow-utf-8", args.MetricNameEscapingScheme) - }, + expectError: true, + errorContains: "metric_name_escaping_scheme cannot be set to 'allow-utf-8' while metric_name_validation_scheme is not set to 'utf8'", }, { name: "empty string validation scheme", @@ -481,8 +478,8 @@ func TestAlloyConfigDefaultsAndValidation(t *testing.T) { `, expectError: false, assertions: func(t *testing.T, args Arguments) { - require.Equal(t, "utf8", args.MetricNameValidationScheme) - require.Equal(t, "allow-utf-8", args.MetricNameEscapingScheme) + require.Equal(t, "legacy", args.MetricNameValidationScheme) + require.Equal(t, "underscores", args.MetricNameEscapingScheme) }, }, { From 4959cb02a45fe0d9a88ab8e5ae371c4bc66a4c63 Mon Sep 17 00:00:00 2001 From: Piotr <17101802+thampiotr@users.noreply.github.com> Date: Wed, 30 Jul 2025 16:27:29 +0100 Subject: [PATCH 11/24] fix module test --- internal/runtime/module_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/runtime/module_test.go b/internal/runtime/module_test.go index c226e5c1d41..35a14c16bf7 100644 --- a/internal/runtime/module_test.go +++ b/internal/runtime/module_test.go @@ -127,7 +127,7 @@ func TestModule(t *testing.T) { defer verifyNoGoroutineLeaks(t) mc := newModuleController(testModuleControllerOptions(t)).(*moduleController) // modules do not clean up their own worker pool as we normally use a shared one from the root controller - defer mc.o.WorkerPool.Stop() + defer mc.o.WorkerPool.Stop(5 * time.Second) tm := &testModule{ content: tc.argumentModuleContent + tc.exportModuleContent, @@ -192,7 +192,7 @@ func TestExportsWhenNotUsed(t *testing.T) { func TestIDList(t *testing.T) { defer verifyNoGoroutineLeaks(t) o := testModuleControllerOptions(t) - defer o.WorkerPool.Stop() + defer o.WorkerPool.Stop(5 * time.Second) nc := newModuleController(o) require.Len(t, nc.ModuleIDs(), 0) @@ -226,7 +226,7 @@ func TestIDList(t *testing.T) { func TestDuplicateIDList(t *testing.T) { defer verifyNoGoroutineLeaks(t) o := testModuleControllerOptions(t) - defer o.WorkerPool.Stop() + defer o.WorkerPool.Stop(5 * time.Second) nc := newModuleController(o) require.Len(t, nc.ModuleIDs(), 0) From ecf7f8441f1e965890d08e3f92c80f901190989d Mon Sep 17 00:00:00 2001 From: Piotr <17101802+thampiotr@users.noreply.github.com> Date: Thu, 31 Jul 2025 10:12:21 +0100 Subject: [PATCH 12/24] fix converter tests for legacy validation scheme --- .../internal/prometheusconvert/component/scrape.go | 7 ++++++- .../prometheusconvert/testdata/azure.alloy | 12 +++++------- .../prometheusconvert/testdata/consul.alloy | 12 +++++------- .../prometheusconvert/testdata/digitalocean.alloy | 12 +++++------- .../prometheusconvert/testdata/discovery.alloy | 7 +++---- .../testdata/discovery_relabel.alloy | 14 ++++++-------- .../internal/prometheusconvert/testdata/dns.alloy | 12 +++++------- .../prometheusconvert/testdata/docker.alloy | 12 +++++------- .../prometheusconvert/testdata/dockerswarm.alloy | 12 +++++------- .../internal/prometheusconvert/testdata/ec2.alloy | 12 +++++------- .../internal/prometheusconvert/testdata/file.alloy | 12 +++++------- .../internal/prometheusconvert/testdata/gce.alloy | 12 +++++------- .../internal/prometheusconvert/testdata/http.alloy | 1 - .../prometheusconvert/testdata/ionos.alloy | 12 +++++------- .../prometheusconvert/testdata/kubernetes.alloy | 12 +++++------- .../internal/prometheusconvert/testdata/kuma.alloy | 12 +++++------- .../prometheusconvert/testdata/lightsail.alloy | 12 +++++------- .../prometheusconvert/testdata/linode.alloy | 12 +++++------- .../prometheusconvert/testdata/marathon.alloy | 12 +++++------- .../testdata/metric_relabel.alloy | 6 ++---- .../prometheusconvert/testdata/nerve.alloy | 12 +++++------- .../prometheusconvert/testdata/openstack.alloy | 12 +++++------- .../prometheusconvert/testdata/ovhcloud.alloy | 12 +++++------- .../prometheusconvert/testdata/scaleway.alloy | 12 +++++------- .../prometheusconvert/testdata/scrape.alloy | 6 ++---- .../prometheusconvert/testdata/serverset.alloy | 14 ++++++-------- .../prometheusconvert/testdata/triton.alloy | 12 +++++------- .../prometheusconvert/testdata/unsupported.alloy | 2 -- 28 files changed, 125 insertions(+), 172 deletions(-) diff --git a/internal/converter/internal/prometheusconvert/component/scrape.go b/internal/converter/internal/prometheusconvert/component/scrape.go index 435bb17d4f2..238a0f3f7f0 100644 --- a/internal/converter/internal/prometheusconvert/component/scrape.go +++ b/internal/converter/internal/prometheusconvert/component/scrape.go @@ -52,6 +52,11 @@ func toScrapeArguments(scrapeConfig *prom_config.ScrapeConfig, forwardTo []stora if fallbackProtocol == "" { fallbackProtocol = string(prom_config.PrometheusText0_0_4) } + + // Set the escaping and validation scheme to default values in Alloy for maximum compatibility with backends. + scrapeConfig.MetricNameValidationScheme = prom_config.LegacyValidationConfig + scrapeConfig.MetricNameEscapingScheme = "" // this will default to underscores given the legacy validation scheme + alloyArgs := &scrape.Arguments{ Targets: targets, ForwardTo: forwardTo, @@ -61,7 +66,7 @@ func toScrapeArguments(scrapeConfig *prom_config.ScrapeConfig, forwardTo []stora TrackTimestampsStaleness: scrapeConfig.TrackTimestampsStaleness, Params: scrapeConfig.Params, ScrapeClassicHistograms: scrapeConfig.AlwaysScrapeClassicHistograms, - ScrapeNativeHistograms: true, + ScrapeNativeHistograms: false, // this is controlled by a Prometheus feature, not the config file ScrapeInterval: time.Duration(scrapeConfig.ScrapeInterval), ScrapeTimeout: time.Duration(scrapeConfig.ScrapeTimeout), ScrapeFailureLogFile: scrapeConfig.ScrapeFailureLogFile, diff --git a/internal/converter/internal/prometheusconvert/testdata/azure.alloy b/internal/converter/internal/prometheusconvert/testdata/azure.alloy index 372d5bd4a26..631f7a5d7af 100644 --- a/internal/converter/internal/prometheusconvert/testdata/azure.alloy +++ b/internal/converter/internal/prometheusconvert/testdata/azure.alloy @@ -35,16 +35,14 @@ prometheus.scrape "prometheus1" { __address__ = "localhost:9090", }], ) - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus1" - metric_name_escaping_scheme = "allow-utf-8" + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus1" } prometheus.scrape "prometheus2" { - targets = discovery.azure.prometheus2.targets - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus2" - metric_name_escaping_scheme = "allow-utf-8" + targets = discovery.azure.prometheus2.targets + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus2" } prometheus.remote_write "default" { diff --git a/internal/converter/internal/prometheusconvert/testdata/consul.alloy b/internal/converter/internal/prometheusconvert/testdata/consul.alloy index 2d344429766..d7d3f6696c3 100644 --- a/internal/converter/internal/prometheusconvert/testdata/consul.alloy +++ b/internal/converter/internal/prometheusconvert/testdata/consul.alloy @@ -13,16 +13,14 @@ prometheus.scrape "prometheus1" { __address__ = "localhost:9090", }], ) - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus1" - metric_name_escaping_scheme = "allow-utf-8" + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus1" } prometheus.scrape "prometheus2" { - targets = discovery.consul.prometheus2.targets - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus2" - metric_name_escaping_scheme = "allow-utf-8" + targets = discovery.consul.prometheus2.targets + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus2" } prometheus.remote_write "default" { diff --git a/internal/converter/internal/prometheusconvert/testdata/digitalocean.alloy b/internal/converter/internal/prometheusconvert/testdata/digitalocean.alloy index 6acb0ca2e1c..4101484322f 100644 --- a/internal/converter/internal/prometheusconvert/testdata/digitalocean.alloy +++ b/internal/converter/internal/prometheusconvert/testdata/digitalocean.alloy @@ -17,16 +17,14 @@ prometheus.scrape "prometheus1" { __address__ = "localhost:9090", }], ) - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus1" - metric_name_escaping_scheme = "allow-utf-8" + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus1" } prometheus.scrape "prometheus2" { - targets = discovery.digitalocean.prometheus2.targets - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus2" - metric_name_escaping_scheme = "allow-utf-8" + targets = discovery.digitalocean.prometheus2.targets + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus2" } prometheus.remote_write "default" { diff --git a/internal/converter/internal/prometheusconvert/testdata/discovery.alloy b/internal/converter/internal/prometheusconvert/testdata/discovery.alloy index 8751521b2e7..726eca77713 100644 --- a/internal/converter/internal/prometheusconvert/testdata/discovery.alloy +++ b/internal/converter/internal/prometheusconvert/testdata/discovery.alloy @@ -47,10 +47,9 @@ discovery.relabel "prometheus1" { } prometheus.scrape "prometheus1" { - targets = discovery.relabel.prometheus1.output - forward_to = [prometheus.relabel.prometheus1.receiver] - job_name = "prometheus1" - metric_name_escaping_scheme = "allow-utf-8" + targets = discovery.relabel.prometheus1.output + forward_to = [prometheus.relabel.prometheus1.receiver] + job_name = "prometheus1" } prometheus.relabel "prometheus1" { diff --git a/internal/converter/internal/prometheusconvert/testdata/discovery_relabel.alloy b/internal/converter/internal/prometheusconvert/testdata/discovery_relabel.alloy index 5bb52090fe5..380c09804a8 100644 --- a/internal/converter/internal/prometheusconvert/testdata/discovery_relabel.alloy +++ b/internal/converter/internal/prometheusconvert/testdata/discovery_relabel.alloy @@ -57,17 +57,15 @@ discovery.relabel "prometheus2" { } prometheus.scrape "prometheus1" { - targets = discovery.relabel.prometheus1.output - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus1" - metric_name_escaping_scheme = "allow-utf-8" + targets = discovery.relabel.prometheus1.output + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus1" } prometheus.scrape "prometheus2" { - targets = discovery.relabel.prometheus2.output - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus2" - metric_name_escaping_scheme = "allow-utf-8" + targets = discovery.relabel.prometheus2.output + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus2" } prometheus.remote_write "default" { diff --git a/internal/converter/internal/prometheusconvert/testdata/dns.alloy b/internal/converter/internal/prometheusconvert/testdata/dns.alloy index 74967d3e022..e1c89092a8f 100644 --- a/internal/converter/internal/prometheusconvert/testdata/dns.alloy +++ b/internal/converter/internal/prometheusconvert/testdata/dns.alloy @@ -16,16 +16,14 @@ prometheus.scrape "prometheus1" { __address__ = "localhost:9090", }], ) - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus1" - metric_name_escaping_scheme = "allow-utf-8" + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus1" } prometheus.scrape "prometheus2" { - targets = discovery.dns.prometheus2.targets - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus2" - metric_name_escaping_scheme = "allow-utf-8" + targets = discovery.dns.prometheus2.targets + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus2" } prometheus.remote_write "default" { diff --git a/internal/converter/internal/prometheusconvert/testdata/docker.alloy b/internal/converter/internal/prometheusconvert/testdata/docker.alloy index f98b8f39262..dbc0858ea8c 100644 --- a/internal/converter/internal/prometheusconvert/testdata/docker.alloy +++ b/internal/converter/internal/prometheusconvert/testdata/docker.alloy @@ -13,16 +13,14 @@ prometheus.scrape "prometheus1" { __address__ = "localhost:9090", }], ) - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus1" - metric_name_escaping_scheme = "allow-utf-8" + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus1" } prometheus.scrape "prometheus2" { - targets = discovery.docker.prometheus2.targets - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus2" - metric_name_escaping_scheme = "allow-utf-8" + targets = discovery.docker.prometheus2.targets + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus2" } prometheus.remote_write "default" { diff --git a/internal/converter/internal/prometheusconvert/testdata/dockerswarm.alloy b/internal/converter/internal/prometheusconvert/testdata/dockerswarm.alloy index 8718e99b4d1..8e4013e1d78 100644 --- a/internal/converter/internal/prometheusconvert/testdata/dockerswarm.alloy +++ b/internal/converter/internal/prometheusconvert/testdata/dockerswarm.alloy @@ -32,16 +32,14 @@ prometheus.scrape "prometheus1" { __address__ = "localhost:9090", }], ) - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus1" - metric_name_escaping_scheme = "allow-utf-8" + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus1" } prometheus.scrape "prometheus2" { - targets = discovery.dockerswarm.prometheus2.targets - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus2" - metric_name_escaping_scheme = "allow-utf-8" + targets = discovery.dockerswarm.prometheus2.targets + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus2" } prometheus.remote_write "default" { diff --git a/internal/converter/internal/prometheusconvert/testdata/ec2.alloy b/internal/converter/internal/prometheusconvert/testdata/ec2.alloy index 45d22526ad0..4e726413c95 100644 --- a/internal/converter/internal/prometheusconvert/testdata/ec2.alloy +++ b/internal/converter/internal/prometheusconvert/testdata/ec2.alloy @@ -24,16 +24,14 @@ prometheus.scrape "prometheus1" { __address__ = "localhost:9090", }], ) - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus1" - metric_name_escaping_scheme = "allow-utf-8" + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus1" } prometheus.scrape "prometheus2" { - targets = discovery.ec2.prometheus2.targets - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus2" - metric_name_escaping_scheme = "allow-utf-8" + targets = discovery.ec2.prometheus2.targets + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus2" } prometheus.remote_write "default" { diff --git a/internal/converter/internal/prometheusconvert/testdata/file.alloy b/internal/converter/internal/prometheusconvert/testdata/file.alloy index 808b8895d75..1cb3e1f2876 100644 --- a/internal/converter/internal/prometheusconvert/testdata/file.alloy +++ b/internal/converter/internal/prometheusconvert/testdata/file.alloy @@ -14,16 +14,14 @@ prometheus.scrape "prometheus1" { __address__ = "localhost:9090", }], ) - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus1" - metric_name_escaping_scheme = "allow-utf-8" + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus1" } prometheus.scrape "prometheus2" { - targets = discovery.file.prometheus2.targets - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus2" - metric_name_escaping_scheme = "allow-utf-8" + targets = discovery.file.prometheus2.targets + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus2" } prometheus.remote_write "default" { diff --git a/internal/converter/internal/prometheusconvert/testdata/gce.alloy b/internal/converter/internal/prometheusconvert/testdata/gce.alloy index 1c230dcf242..a02fad944c7 100644 --- a/internal/converter/internal/prometheusconvert/testdata/gce.alloy +++ b/internal/converter/internal/prometheusconvert/testdata/gce.alloy @@ -17,16 +17,14 @@ prometheus.scrape "prometheus1" { __address__ = "localhost:9090", }], ) - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus1" - metric_name_escaping_scheme = "allow-utf-8" + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus1" } prometheus.scrape "prometheus2" { - targets = discovery.gce.prometheus2.targets - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus2" - metric_name_escaping_scheme = "allow-utf-8" + targets = discovery.gce.prometheus2.targets + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus2" } prometheus.remote_write "default" { diff --git a/internal/converter/internal/prometheusconvert/testdata/http.alloy b/internal/converter/internal/prometheusconvert/testdata/http.alloy index afa727cb071..0b3f85909b1 100644 --- a/internal/converter/internal/prometheusconvert/testdata/http.alloy +++ b/internal/converter/internal/prometheusconvert/testdata/http.alloy @@ -64,7 +64,6 @@ prometheus.scrape "netbox_snmp" { Authorization = ["something", "something else"], Host = ["localhost"], } - metric_name_escaping_scheme = "allow-utf-8" } prometheus.remote_write "default" { diff --git a/internal/converter/internal/prometheusconvert/testdata/ionos.alloy b/internal/converter/internal/prometheusconvert/testdata/ionos.alloy index 49f32ff8613..2468ee63d90 100644 --- a/internal/converter/internal/prometheusconvert/testdata/ionos.alloy +++ b/internal/converter/internal/prometheusconvert/testdata/ionos.alloy @@ -20,16 +20,14 @@ prometheus.scrape "prometheus1" { __address__ = "localhost:9090", }], ) - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus1" - metric_name_escaping_scheme = "allow-utf-8" + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus1" } prometheus.scrape "prometheus2" { - targets = discovery.ionos.prometheus2.targets - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus2" - metric_name_escaping_scheme = "allow-utf-8" + targets = discovery.ionos.prometheus2.targets + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus2" } prometheus.remote_write "default" { diff --git a/internal/converter/internal/prometheusconvert/testdata/kubernetes.alloy b/internal/converter/internal/prometheusconvert/testdata/kubernetes.alloy index 499949ee706..0d40813e321 100644 --- a/internal/converter/internal/prometheusconvert/testdata/kubernetes.alloy +++ b/internal/converter/internal/prometheusconvert/testdata/kubernetes.alloy @@ -13,16 +13,14 @@ prometheus.scrape "prometheus1" { __address__ = "localhost:9090", }], ) - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus1" - metric_name_escaping_scheme = "allow-utf-8" + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus1" } prometheus.scrape "prometheus2" { - targets = discovery.kubernetes.prometheus2.targets - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus2" - metric_name_escaping_scheme = "allow-utf-8" + targets = discovery.kubernetes.prometheus2.targets + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus2" } prometheus.remote_write "default" { diff --git a/internal/converter/internal/prometheusconvert/testdata/kuma.alloy b/internal/converter/internal/prometheusconvert/testdata/kuma.alloy index ba881b4cc09..975d29a2bbc 100644 --- a/internal/converter/internal/prometheusconvert/testdata/kuma.alloy +++ b/internal/converter/internal/prometheusconvert/testdata/kuma.alloy @@ -16,16 +16,14 @@ prometheus.scrape "prometheus1" { __address__ = "localhost:9090", }], ) - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus1" - metric_name_escaping_scheme = "allow-utf-8" + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus1" } prometheus.scrape "prometheus2" { - targets = discovery.kuma.prometheus2.targets - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus2" - metric_name_escaping_scheme = "allow-utf-8" + targets = discovery.kuma.prometheus2.targets + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus2" } prometheus.remote_write "default" { diff --git a/internal/converter/internal/prometheusconvert/testdata/lightsail.alloy b/internal/converter/internal/prometheusconvert/testdata/lightsail.alloy index a5e956207b0..d6a48888f8e 100644 --- a/internal/converter/internal/prometheusconvert/testdata/lightsail.alloy +++ b/internal/converter/internal/prometheusconvert/testdata/lightsail.alloy @@ -24,16 +24,14 @@ prometheus.scrape "prometheus1" { __address__ = "localhost:9090", }], ) - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus1" - metric_name_escaping_scheme = "allow-utf-8" + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus1" } prometheus.scrape "prometheus2" { - targets = discovery.lightsail.prometheus2.targets - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus2" - metric_name_escaping_scheme = "allow-utf-8" + targets = discovery.lightsail.prometheus2.targets + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus2" } prometheus.remote_write "default" { diff --git a/internal/converter/internal/prometheusconvert/testdata/linode.alloy b/internal/converter/internal/prometheusconvert/testdata/linode.alloy index 1ad47cc07a1..43181b81e93 100644 --- a/internal/converter/internal/prometheusconvert/testdata/linode.alloy +++ b/internal/converter/internal/prometheusconvert/testdata/linode.alloy @@ -12,16 +12,14 @@ prometheus.scrape "prometheus1" { __address__ = "localhost:9090", }], ) - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus1" - metric_name_escaping_scheme = "allow-utf-8" + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus1" } prometheus.scrape "prometheus2" { - targets = discovery.linode.prometheus2.targets - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus2" - metric_name_escaping_scheme = "allow-utf-8" + targets = discovery.linode.prometheus2.targets + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus2" } prometheus.remote_write "default" { diff --git a/internal/converter/internal/prometheusconvert/testdata/marathon.alloy b/internal/converter/internal/prometheusconvert/testdata/marathon.alloy index 34872b475a2..cbce99207c6 100644 --- a/internal/converter/internal/prometheusconvert/testdata/marathon.alloy +++ b/internal/converter/internal/prometheusconvert/testdata/marathon.alloy @@ -20,16 +20,14 @@ prometheus.scrape "prometheus1" { __address__ = "localhost:9090", }], ) - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus1" - metric_name_escaping_scheme = "allow-utf-8" + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus1" } prometheus.scrape "prometheus2" { - targets = discovery.marathon.prometheus2.targets - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus2" - metric_name_escaping_scheme = "allow-utf-8" + targets = discovery.marathon.prometheus2.targets + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus2" } prometheus.remote_write "default" { diff --git a/internal/converter/internal/prometheusconvert/testdata/metric_relabel.alloy b/internal/converter/internal/prometheusconvert/testdata/metric_relabel.alloy index 22b323a3082..2a815e58eb1 100644 --- a/internal/converter/internal/prometheusconvert/testdata/metric_relabel.alloy +++ b/internal/converter/internal/prometheusconvert/testdata/metric_relabel.alloy @@ -12,16 +12,14 @@ prometheus.scrape "prometheus1" { username = "user" password = "pass" } - metric_name_escaping_scheme = "allow-utf-8" } prometheus.scrape "prometheus2" { targets = [{ __address__ = "localhost:9091", }] - forward_to = [prometheus.relabel.prometheus2.receiver] - job_name = "prometheus2" - metric_name_escaping_scheme = "allow-utf-8" + forward_to = [prometheus.relabel.prometheus2.receiver] + job_name = "prometheus2" } prometheus.relabel "prometheus2" { diff --git a/internal/converter/internal/prometheusconvert/testdata/nerve.alloy b/internal/converter/internal/prometheusconvert/testdata/nerve.alloy index 83245b900e2..595b36fb4d5 100644 --- a/internal/converter/internal/prometheusconvert/testdata/nerve.alloy +++ b/internal/converter/internal/prometheusconvert/testdata/nerve.alloy @@ -16,16 +16,14 @@ prometheus.scrape "prometheus1" { __address__ = "localhost:9090", }], ) - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus1" - metric_name_escaping_scheme = "allow-utf-8" + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus1" } prometheus.scrape "prometheus2" { - targets = discovery.nerve.prometheus2.targets - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus2" - metric_name_escaping_scheme = "allow-utf-8" + targets = discovery.nerve.prometheus2.targets + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus2" } prometheus.remote_write "default" { diff --git a/internal/converter/internal/prometheusconvert/testdata/openstack.alloy b/internal/converter/internal/prometheusconvert/testdata/openstack.alloy index da46b8de039..d9509151ee1 100644 --- a/internal/converter/internal/prometheusconvert/testdata/openstack.alloy +++ b/internal/converter/internal/prometheusconvert/testdata/openstack.alloy @@ -38,16 +38,14 @@ prometheus.scrape "prometheus1" { __address__ = "localhost:9090", }], ) - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus1" - metric_name_escaping_scheme = "allow-utf-8" + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus1" } prometheus.scrape "prometheus2" { - targets = discovery.openstack.prometheus2.targets - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus2" - metric_name_escaping_scheme = "allow-utf-8" + targets = discovery.openstack.prometheus2.targets + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus2" } prometheus.remote_write "default" { diff --git a/internal/converter/internal/prometheusconvert/testdata/ovhcloud.alloy b/internal/converter/internal/prometheusconvert/testdata/ovhcloud.alloy index f578df22d7c..8396ee99b2a 100644 --- a/internal/converter/internal/prometheusconvert/testdata/ovhcloud.alloy +++ b/internal/converter/internal/prometheusconvert/testdata/ovhcloud.alloy @@ -21,16 +21,14 @@ prometheus.scrape "prometheus1" { __address__ = "localhost:9090", }], ) - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus1" - metric_name_escaping_scheme = "allow-utf-8" + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus1" } prometheus.scrape "prometheus2" { - targets = discovery.ovhcloud.prometheus2.targets - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus2" - metric_name_escaping_scheme = "allow-utf-8" + targets = discovery.ovhcloud.prometheus2.targets + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus2" } prometheus.remote_write "default" { diff --git a/internal/converter/internal/prometheusconvert/testdata/scaleway.alloy b/internal/converter/internal/prometheusconvert/testdata/scaleway.alloy index 1c1ed4b4797..224816f8566 100644 --- a/internal/converter/internal/prometheusconvert/testdata/scaleway.alloy +++ b/internal/converter/internal/prometheusconvert/testdata/scaleway.alloy @@ -19,16 +19,14 @@ prometheus.scrape "prometheus1" { __address__ = "localhost:9090", }], ) - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus1" - metric_name_escaping_scheme = "allow-utf-8" + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus1" } prometheus.scrape "prometheus2" { - targets = discovery.scaleway.prometheus2.targets - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus2" - metric_name_escaping_scheme = "allow-utf-8" + targets = discovery.scaleway.prometheus2.targets + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus2" } prometheus.remote_write "default" { diff --git a/internal/converter/internal/prometheusconvert/testdata/scrape.alloy b/internal/converter/internal/prometheusconvert/testdata/scrape.alloy index 9db7d7de915..ee5d81798c9 100644 --- a/internal/converter/internal/prometheusconvert/testdata/scrape.alloy +++ b/internal/converter/internal/prometheusconvert/testdata/scrape.alloy @@ -20,7 +20,6 @@ prometheus.scrape "prometheus_1" { username = "user" password = "pass" } - metric_name_escaping_scheme = "allow-utf-8" } prometheus.scrape "prometheus2" { @@ -35,9 +34,8 @@ prometheus.scrape "prometheus2" { __address__ = "localhost:9093", }], ) - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus2" - metric_name_escaping_scheme = "allow-utf-8" + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus2" } prometheus.remote_write "default" { diff --git a/internal/converter/internal/prometheusconvert/testdata/serverset.alloy b/internal/converter/internal/prometheusconvert/testdata/serverset.alloy index 88b1755dae3..769ed1c7f34 100644 --- a/internal/converter/internal/prometheusconvert/testdata/serverset.alloy +++ b/internal/converter/internal/prometheusconvert/testdata/serverset.alloy @@ -10,17 +10,15 @@ discovery.serverset "prometheus2" { } prometheus.scrape "prometheus1" { - targets = discovery.serverset.prometheus1.targets - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus1" - metric_name_escaping_scheme = "allow-utf-8" + targets = discovery.serverset.prometheus1.targets + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus1" } prometheus.scrape "prometheus2" { - targets = discovery.serverset.prometheus2.targets - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus2" - metric_name_escaping_scheme = "allow-utf-8" + targets = discovery.serverset.prometheus2.targets + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus2" } prometheus.remote_write "default" { diff --git a/internal/converter/internal/prometheusconvert/testdata/triton.alloy b/internal/converter/internal/prometheusconvert/testdata/triton.alloy index 8a3eb8d51f0..e12ef1f0de1 100644 --- a/internal/converter/internal/prometheusconvert/testdata/triton.alloy +++ b/internal/converter/internal/prometheusconvert/testdata/triton.alloy @@ -17,16 +17,14 @@ prometheus.scrape "prometheus1" { __address__ = "localhost:9090", }], ) - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus1" - metric_name_escaping_scheme = "allow-utf-8" + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus1" } prometheus.scrape "prometheus2" { - targets = discovery.triton.prometheus2.targets - forward_to = [prometheus.remote_write.default.receiver] - job_name = "prometheus2" - metric_name_escaping_scheme = "allow-utf-8" + targets = discovery.triton.prometheus2.targets + forward_to = [prometheus.remote_write.default.receiver] + job_name = "prometheus2" } prometheus.remote_write "default" { diff --git a/internal/converter/internal/prometheusconvert/testdata/unsupported.alloy b/internal/converter/internal/prometheusconvert/testdata/unsupported.alloy index 7e17a1f8f21..dd67312241f 100644 --- a/internal/converter/internal/prometheusconvert/testdata/unsupported.alloy +++ b/internal/converter/internal/prometheusconvert/testdata/unsupported.alloy @@ -12,7 +12,6 @@ prometheus.scrape "prometheus1" { username = "user" password = "pass" } - metric_name_escaping_scheme = "allow-utf-8" } prometheus.scrape "prometheus2" { @@ -22,7 +21,6 @@ prometheus.scrape "prometheus2" { forward_to = [prometheus.remote_write.default.receiver] job_name = "prometheus2" scrape_classic_histograms = true - metric_name_escaping_scheme = "allow-utf-8" native_histogram_bucket_limit = 2 } From 5415887343b78df3ca4e86d6eba193e9ba99e6cd Mon Sep 17 00:00:00 2001 From: Piotr <17101802+thampiotr@users.noreply.github.com> Date: Thu, 31 Jul 2025 10:25:22 +0100 Subject: [PATCH 13/24] fmt --- internal/component/prometheus/scrape/scrape_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/component/prometheus/scrape/scrape_test.go b/internal/component/prometheus/scrape/scrape_test.go index 84a5404e718..a74f858a06a 100644 --- a/internal/component/prometheus/scrape/scrape_test.go +++ b/internal/component/prometheus/scrape/scrape_test.go @@ -456,7 +456,7 @@ func TestAlloyConfigDefaultsAndValidation(t *testing.T) { forward_to = [] metric_name_escaping_scheme = "allow-utf-8" `, - expectError: true, + expectError: true, errorContains: "metric_name_escaping_scheme cannot be set to 'allow-utf-8' while metric_name_validation_scheme is not set to 'utf8'", }, { From 51cd32802868e37cc01319d0fefcf0ec7365c3cb Mon Sep 17 00:00:00 2001 From: Piotr <17101802+thampiotr@users.noreply.github.com> Date: Thu, 31 Jul 2025 14:35:34 +0100 Subject: [PATCH 14/24] temporary gomod change --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 0ee44a4cb2a..4d80eb17cd8 100644 --- a/go.mod +++ b/go.mod @@ -1056,7 +1056,7 @@ replace github.com/fsnotify/fsnotify v1.8.0 => github.com/fsnotify/fsnotify v1.7 // TODO: remove replace directive once: // * There is a release of Prometheus which addresses https://github.com/prometheus/prometheus/issues/14049, // for example, via this implementation: https://github.com/grafana/prometheus/pull/34 -replace github.com/prometheus/prometheus => github.com/grafana/prometheus v1.8.2-0.20250730140258-90a2d9915a0f // staleness_disabling_v3.4.2 branch +replace github.com/prometheus/prometheus => github.com/thampiotr/prometheus v0.0.0-20250731131506-a28a7d9c5b3b // staleness_disabling_v3.4.2 branch replace gopkg.in/yaml.v2 => github.com/rfratto/go-yaml v0.0.0-20211119180816-77389c3526dc diff --git a/go.sum b/go.sum index 7f8cfbb4f34..f178eece446 100644 --- a/go.sum +++ b/go.sum @@ -1328,8 +1328,6 @@ github.com/grafana/otel-profiling-go v0.5.1 h1:stVPKAFZSa7eGiqbYuG25VcqYksR6iWvF github.com/grafana/otel-profiling-go v0.5.1/go.mod h1:ftN/t5A/4gQI19/8MoWurBEtC6gFw8Dns1sJZ9W4Tls= github.com/grafana/postgres_exporter v0.0.0-20250714124518-c5d0a4dad445 h1:1rC8i0khfZdRA0/k7RBQQ84PhASNQLssezXHmFcWZ6Y= github.com/grafana/postgres_exporter v0.0.0-20250714124518-c5d0a4dad445/go.mod h1:0elZWWHfbwJNwKbiKgBKaEXTDewatxCt9UFZaN6LZsA= -github.com/grafana/prometheus v1.8.2-0.20250730140258-90a2d9915a0f h1:8XSzN/sFjvKFsvCFAvdFSWdvsvd5m+SaWNqxpBV1BGw= -github.com/grafana/prometheus v1.8.2-0.20250730140258-90a2d9915a0f/go.mod h1:ioGx2SGKTY+fLnJSQCdTHqARVldGNS8OlIe3kvp98so= github.com/grafana/pyroscope-go/godeltaprof v0.1.8 h1:iwOtYXeeVSAeYefJNaxDytgjKtUuKQbJqgAIjlnicKg= github.com/grafana/pyroscope-go/godeltaprof v0.1.8/go.mod h1:2+l7K7twW49Ct4wFluZD3tZ6e0SjanjcUUBPVD/UuGU= github.com/grafana/pyroscope/api v1.2.0 h1:SfHDZcEZ4Vbj/Jj3bTOSpm4IDB33wLA2xBYxROhiL4U= @@ -2613,6 +2611,8 @@ github.com/testcontainers/testcontainers-go/modules/mongodb v0.34.0 h1:o3bgcECyB github.com/testcontainers/testcontainers-go/modules/mongodb v0.34.0/go.mod h1:ljLR42dN7k40CX0dp30R8BRIB3OOdvr7rBANEpfmMs4= github.com/tg123/go-htpasswd v1.2.4 h1:HgH8KKCjdmo7jjXWN9k1nefPBd7Be3tFCTjc2jPraPU= github.com/tg123/go-htpasswd v1.2.4/go.mod h1:EKThQok9xHkun6NBMynNv6Jmu24A33XdZzzl4Q7H1+0= +github.com/thampiotr/prometheus v0.0.0-20250731131506-a28a7d9c5b3b h1:OIY3jwIlF38C4a4uLw8PrnzzSEmwyMRgUUGCtfmQDTg= +github.com/thampiotr/prometheus v0.0.0-20250731131506-a28a7d9c5b3b/go.mod h1:ioGx2SGKTY+fLnJSQCdTHqARVldGNS8OlIe3kvp98so= github.com/theupdateframework/notary v0.7.0 h1:QyagRZ7wlSpjT5N2qQAh/pN+DVqgekv4DzbAiAiEL3c= github.com/theupdateframework/notary v0.7.0/go.mod h1:c9DRxcmhHmVLDay4/2fUYdISnHqbFDGRSlXPO0AhYWw= github.com/tidwall/gjson v1.10.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= From 662e2c1fe6324c681498ff99dbe1b639930ea374 Mon Sep 17 00:00:00 2001 From: Piotr <17101802+thampiotr@users.noreply.github.com> Date: Fri, 1 Aug 2025 14:47:05 +0100 Subject: [PATCH 15/24] Handle update of non-updateable scrape settings --- internal/component/prometheus/scrape/scrape.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/internal/component/prometheus/scrape/scrape.go b/internal/component/prometheus/scrape/scrape.go index 196059edf2d..a7bc58fa4e7 100644 --- a/internal/component/prometheus/scrape/scrape.go +++ b/internal/component/prometheus/scrape/scrape.go @@ -302,10 +302,12 @@ func New(o component.Options, args Arguments) (*Component, error) { alloyAppendable := prometheus.NewFanout(args.ForwardTo, o.ID, o.Registerer, ls) scrapeOptions := &scrape.Options{ + // NOTE: This is not Update()-able. ExtraMetrics: args.ExtraMetrics, HTTPClientOptions: []config_util.HTTPClientOption{ config_util.WithDialContextFunc(httpData.DialFunc), }, + // NOTE: This is not Update()-able. EnableNativeHistogramsIngestion: args.ScrapeNativeHistograms, } @@ -447,6 +449,14 @@ func (c *Component) Update(args component.Arguments) error { c.mut.Lock() defer c.mut.Unlock() + + if c.args.ScrapeNativeHistograms != newArgs.ScrapeNativeHistograms { + return fmt.Errorf("scrape_native_histograms cannot be updated at runtime") + } + if c.args.ExtraMetrics != newArgs.ExtraMetrics { + return fmt.Errorf("extra_metrics cannot be updated at runtime") + } + c.args = newArgs c.appendable.UpdateChildren(newArgs.ForwardTo) From ed5aa4cdc907b86759f8a7944ab272ebc4271d4e Mon Sep 17 00:00:00 2001 From: Piotr <17101802+thampiotr@users.noreply.github.com> Date: Fri, 1 Aug 2025 14:54:53 +0100 Subject: [PATCH 16/24] temporary go.mod fixes --- go.mod | 3 + go.sum | 266 ++++----------------------------------------------------- 2 files changed, 21 insertions(+), 248 deletions(-) diff --git a/go.mod b/go.mod index 4d80eb17cd8..5cda039e1f6 100644 --- a/go.mod +++ b/go.mod @@ -1058,6 +1058,9 @@ replace github.com/fsnotify/fsnotify v1.8.0 => github.com/fsnotify/fsnotify v1.7 // for example, via this implementation: https://github.com/grafana/prometheus/pull/34 replace github.com/prometheus/prometheus => github.com/thampiotr/prometheus v0.0.0-20250731131506-a28a7d9c5b3b // staleness_disabling_v3.4.2 branch +// TODO: remove this replace directive once the upstream issue is fixed: https://github.com/prometheus/common/pull/809 +replace github.com/prometheus/common => github.com/thampiotr/common v0.0.0-20250801132732-61b386b68d79 + replace gopkg.in/yaml.v2 => github.com/rfratto/go-yaml v0.0.0-20211119180816-77389c3526dc // Replace directives from Loki diff --git a/go.sum b/go.sum index f178eece446..18d65ff8c77 100644 --- a/go.sum +++ b/go.sum @@ -2,36 +2,15 @@ cel.dev/expr v0.23.1 h1:K4KOtPCJQjVggkARsjG9RWXP6O4R73aHeJMa/dmCQQg= cel.dev/expr v0.23.1/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= cloud.google.com/go v0.121.1 h1:S3kTQSydxmu1JfLRLpKtxRPA7rSrYPRPEUmL/PavVUw= cloud.google.com/go v0.121.1/go.mod h1:nRFlrHq39MNVWu+zESP2PosMWA0ryJw8KUBZ2iZpxbw= cloud.google.com/go/auth v0.16.2 h1:QvBAGFPLrDeoiNjyfVunhQ10HKNYuOwZ5noee0M5df4= cloud.google.com/go/auth v0.16.2/go.mod h1:sRBas2Y1fB1vZTdurouM0AzuYQBMZinrUYL8EufhtEA= cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/compute/metadata v0.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU= cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/iam v1.5.2 h1:qgFRAGEmd8z6dJ/qyEchAuL9jpswyODjA2lS+w234g8= cloud.google.com/go/iam v1.5.2/go.mod h1:SE1vg0N81zQqLzQEwxL2WI6yhetBdbNQuTvIKCSkUHE= cloud.google.com/go/kms v1.21.2 h1:c/PRUSMNQ8zXrc1sdAUnsenWWaNXN+PzTXfXOcSFdoE= @@ -42,24 +21,14 @@ cloud.google.com/go/longrunning v0.6.7 h1:IGtfDWHhQCgCjwQjV9iiLnUta9LBCo8R9QmAFs cloud.google.com/go/longrunning v0.6.7/go.mod h1:EAFV3IZAKmM56TyiE6VAP3VoTzhZzySwI/YI1s/nRsY= cloud.google.com/go/monitoring v1.24.2 h1:5OTsoJ1dXYIiMiuL+sYscLc9BumrL3CarVLL7dd7lHM= cloud.google.com/go/monitoring v1.24.2/go.mod h1:x7yzPWcgDRnPEv3sI+jJGBkwl5qINf+6qY4eq0I9B4U= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= cloud.google.com/go/pubsub v1.49.0 h1:5054IkbslnrMCgA2MAEPcsN3Ky+AyMpEZcii/DoySPo= cloud.google.com/go/pubsub v1.49.0/go.mod h1:K1FswTWP+C1tI/nfi3HQecoVeFvL4HUOB1tdaNXKhUY= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/trace v1.11.6 h1:2O2zjPzqPYAHrn3OKl029qlqG6W8ZdYaOWRyr8NgMT4= cloud.google.com/go/trace v1.11.6/go.mod h1:GA855OeDEBiBMzcckLPE2kDunIpC72N+Pq8WFieFjnI= connectrpc.com/connect v1.18.1 h1:PAg7CjSAGvscaf6YZKUefjoih5Z/qYkyaTrBW8xvYPw= connectrpc.com/connect v1.18.1/go.mod h1:0292hj1rnx8oFrStN7cB4jjVBeqs+Yx5yDIC2prWDO8= dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= @@ -154,7 +123,6 @@ github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2/go.mod h1:wP83 github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg= github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ClickHouse/clickhouse-go v1.5.4 h1:cKjXeYLNWVJIx2J1K6H2CqyRmfwVJVY1OV1coaaFcI0= github.com/ClickHouse/clickhouse-go v1.5.4/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI= github.com/Code-Hex/go-generics-cache v1.5.1 h1:6vhZGc5M7Y/YD8cIUcY8kcuQLB4cHR7U+0KMqAA0KcU= @@ -469,8 +437,7 @@ github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuy github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b h1:mimo19zliBX/vSQ6PWWSL9lK8qwHozUj03+zLoEB8O0= github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b/go.mod h1:fvzegU4vN3H1qMT+8wDmzjAcDONcgo2/SZ/TyfdUOFs= github.com/alicebob/miniredis v2.5.0+incompatible h1:yBHoLpsyjupjz3NL3MhKMVkR41j82Yjf3KFv7ApYzUI= @@ -986,9 +953,6 @@ github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMj github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= github.com/go-git/go-git/v5 v5.13.0 h1:vLn5wlGIh/X78El6r3Jr+30W16Blk0CTcxTYcYPWi5E= github.com/go-git/go-git/v5 v5.13.0/go.mod h1:Wjo7/JyVKtQgUNdXYXIepzWfJQkUEIGvkvVkiXRR/zw= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-jose/go-jose/v4 v4.0.5 h1:M6T8+mKZl/+fNNuFHvGIzDz7BTLQPIounk/b9dw3AaE= github.com/go-jose/go-jose/v4 v4.0.5/go.mod h1:s3P1lRrkT8igV8D9OjyL4WRyHvjB6a4JSllnOrmmBOA= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= @@ -1140,19 +1104,11 @@ github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EOqtpKwwwHI= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/mock v1.7.0-rc.1 h1:YojYx61/OLFsiv6Rw1Z96LpldJIy31o+UHmwAUMJ6/U= github.com/golang/mock v1.7.0-rc.1/go.mod h1:s42URUywIqd+OcERslBJvOjepvNymP31m3q8d/GkuRs= @@ -1161,7 +1117,6 @@ github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5y github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= @@ -1202,7 +1157,6 @@ github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= @@ -1224,15 +1178,6 @@ github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/ github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20240227163752-401108e1b7e7/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw= @@ -1254,8 +1199,6 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.3.6 h1:GW/XbdyBFQ8Qe+YAmFU9uHLo7OnF5tL52HFAgMmyrf4= github.com/googleapis/enterprise-certificate-proxy v0.3.6/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.14.2 h1:eBLnkZ9635krYIPD+ag1USrOAI0Nr0QYF3+/3GqO0k0= github.com/googleapis/gax-go/v2 v2.14.2/go.mod h1:ON64QhlJkhVtSqp4v1uaK92VyZ2gmvDQsweuyLV+8+w= github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= @@ -1507,7 +1450,6 @@ github.com/huandu/xstrings v1.5.0 h1:2ag3IFq9ZDANvthTwTiqSSZLjDc+BedvHPAp5tJy2TI github.com/huandu/xstrings v1.5.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20230524184225-eabc099b10ab/go.mod h1:gx7rwoVhcfuVKG5uya9Hs3Sxj7EIvldVofAWIUtGouw= github.com/ianlancetaylor/demangle v0.0.0-20240312041847-bd984b5ce465/go.mod h1:gx7rwoVhcfuVKG5uya9Hs3Sxj7EIvldVofAWIUtGouw= @@ -1669,13 +1611,10 @@ github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/ github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/juju/gnuflag v0.0.0-20171113085948-2ce1bb71843d/go.mod h1:2PavIy+JPciBPrBUjwbNvtwB6RQlve+hkpll6QSNmOE= github.com/juju/loggo v0.0.0-20190526231331-6e530bcce5d8/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/k0kubun/pp/v3 v3.2.0 h1:h33hNTZ9nVFNP3u2Fsgz8JXiF5JINoZfFq4SvKJwNcs= @@ -1700,6 +1639,7 @@ github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46/go.mod h1:yyMNCy github.com/klauspost/asmfmt v1.3.2 h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK4= github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= +github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/klauspost/cpuid/v2 v2.2.11 h1:0OwqZRYI2rFrjS4kvkDnqJkKHdHaRnCm68/DY4OxRzU= @@ -1714,7 +1654,6 @@ github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b h1:udzkj9S/zlT5X367kqJ github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b/go.mod h1:pcaDhQK0/NJZEvtCO0qQPPropqV0sJOJ6YW7X+9kRwM= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= @@ -1929,7 +1868,6 @@ github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ib github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= @@ -2341,15 +2279,14 @@ github.com/prometheus/blackbox_exporter v0.24.1-0.20230623125439-bd22efa1c900/go github.com/prometheus/client_golang v0.9.0-pre1.0.20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.4.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.5.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= -github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_golang v1.20.4/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= @@ -2357,21 +2294,9 @@ github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1: github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.0.0-20180110214958-89604d197083/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= -github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.29.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.31.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= -github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= github.com/prometheus/common/assets v0.2.0 h1:0P5OrzoHrYBOSM1OigWL3mY8ZvV2N4zIE/5AahrSrfM= github.com/prometheus/common/assets v0.2.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= github.com/prometheus/common/sigv4 v0.1.0 h1:qoVebwtwwEhS85Czm2dSROY5fTo2PAPEVdDeppTwGX4= @@ -2427,6 +2352,7 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= @@ -2498,10 +2424,8 @@ github.com/siebenmann/go-kstat v0.0.0-20210513183136-173c9b0a9973/go.mod h1:G81a github.com/sijms/go-ora/v2 v2.9.0 h1:+iQbUeTeCOFMb5BsOMgUhV8KWyrv9yjKpcK4x7+MFrg= github.com/sijms/go-ora/v2 v2.9.0/go.mod h1:QgFInVi3ZWyqAiJwzBQA+nbKYKH77tdp1PYoCqhR2dU= github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= @@ -2611,6 +2535,8 @@ github.com/testcontainers/testcontainers-go/modules/mongodb v0.34.0 h1:o3bgcECyB github.com/testcontainers/testcontainers-go/modules/mongodb v0.34.0/go.mod h1:ljLR42dN7k40CX0dp30R8BRIB3OOdvr7rBANEpfmMs4= github.com/tg123/go-htpasswd v1.2.4 h1:HgH8KKCjdmo7jjXWN9k1nefPBd7Be3tFCTjc2jPraPU= github.com/tg123/go-htpasswd v1.2.4/go.mod h1:EKThQok9xHkun6NBMynNv6Jmu24A33XdZzzl4Q7H1+0= +github.com/thampiotr/common v0.0.0-20250801132732-61b386b68d79 h1:VXzXU3glVu3AiTv3SAsAYdKL4pEv+2V9WNhBW+PMeDc= +github.com/thampiotr/common v0.0.0-20250801132732-61b386b68d79/go.mod h1:LL3lcZII3UXGO4InbF+BTSsiAAPUBnwFVbp4gBWIMqw= github.com/thampiotr/prometheus v0.0.0-20250731131506-a28a7d9c5b3b h1:OIY3jwIlF38C4a4uLw8PrnzzSEmwyMRgUUGCtfmQDTg= github.com/thampiotr/prometheus v0.0.0-20250731131506-a28a7d9c5b3b/go.mod h1:ioGx2SGKTY+fLnJSQCdTHqARVldGNS8OlIe3kvp98so= github.com/theupdateframework/notary v0.7.0 h1:QyagRZ7wlSpjT5N2qQAh/pN+DVqgekv4DzbAiAiEL3c= @@ -2756,9 +2682,7 @@ github.com/yl2chen/cidranger v1.0.2 h1:lbOWZVCG1tCRX4u24kuM1Tb4nHqWkDxwLdoS+Seva github.com/yl2chen/cidranger v1.0.2/go.mod h1:9U1yz7WPYDwf0vpNWFaeRh0bjwz5RVgRy/9UEQfHl0g= github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 h1:ilQV1hzziu+LLM3zUTJ0trRztfwgjqKnBWNtSRkbmwM= github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78/go.mod h1:aL8wCCfTfSfmXjznFBSZNN13rSJjlIOI1fUNAtF7rmI= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= @@ -2795,11 +2719,6 @@ go.etcd.io/etcd/client/v3 v3.5.16 h1:sSmVYOAHeC9doqi0gv7v86oY/BTld0SEFGaxsU9eRhE go.etcd.io/etcd/client/v3 v3.5.16/go.mod h1:X+rExSGkyqxvu276cr2OwPLBaeqFu1cIl4vmRjAD/50= go.mongodb.org/mongo-driver v1.17.4 h1:jUorfmVzljjr0FLzYQsGP8cgN/qzzxlY9Vh0C9KFXVw= go.mongodb.org/mongo-driver v1.17.4/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= @@ -3078,14 +2997,12 @@ golang.design/x/chann v0.1.2 h1:eHF9wjuQnpp+j4ryWhyxC/pFuYzbvMAkudA/I5ALovY= golang.design/x/chann v0.1.2/go.mod h1:Rh5KhCAp+0qu9+FfKPymHpu8onmjl89sFwMeiw3SK14= golang.org/x/arch v0.18.0 h1:WN9poc33zL4AzGxqf8VtpKUnGvMi8O9lhNyBMF/85qc= golang.org/x/arch v0.18.0/go.mod h1:bdwinDaKcfZUGpH09BB7ZmOfhalA8lQdzl62l8gGWsk= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= @@ -3116,47 +3033,28 @@ golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZP golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54= golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U= golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw= golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= golang.org/x/crypto/x509roots/fallback v0.0.0-20240208163226-62c9f1799c91 h1:Lyizcy9jX02jYR0ceBkL6S+jRys8Uepf7wt1vrz6Ras= golang.org/x/crypto/x509roots/fallback v0.0.0-20240208163226-62c9f1799c91/go.mod h1:kNa9WdvYnzFwC79zRpLRMJbdEFlhyM5RPFBBZp/wWH8= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o= golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.1-0.20200828183125-ce943fd02449/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= @@ -3176,45 +3074,31 @@ golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= golang.org/x/net v0.0.0-20180530234432-1e491301e022/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191007182048-72f939374954/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= @@ -3226,7 +3110,6 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210510120150-4163338589ed/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= @@ -3253,18 +3136,17 @@ golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= +golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= @@ -3274,8 +3156,6 @@ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -3288,6 +3168,7 @@ golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -3295,7 +3176,6 @@ golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -3305,14 +3185,9 @@ golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190411185658-b44545bcd369/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190529164535-6a60838ec259/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -3320,32 +3195,19 @@ golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -3402,6 +3264,7 @@ golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= @@ -3433,15 +3296,14 @@ golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M= golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg= golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -3466,9 +3328,9 @@ golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -3482,55 +3344,23 @@ golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190424220101-1e8e1cfdf96b/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190823170909-c4a336ef6a2f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20201022035929-9cf592e881e9/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -3556,6 +3386,7 @@ golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxb golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI= golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ= golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0= +golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI= golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo= golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -3572,66 +3403,20 @@ gonum.org/v1/gonum v0.0.0-20181121035319-3f7ecaa7e8ca/go.mod h1:Y+Yx5eoAFn32cQvJ gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= gonum.org/v1/netlib v0.0.0-20181029234149-ec6d1f5cefe6/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= google.golang.org/api v0.239.0 h1:2hZKUnFZEy81eugPs4e2XzIJ5SOwQg0G82bpXD65Puo= google.golang.org/api v0.239.0/go.mod h1:cOVEm2TpdAGHL2z+UwyS+kmlGr3bVWQQ6sYEqkKje50= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= google.golang.org/genproto v0.0.0-20170818010345-ee236bd376b0/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180518175338-11a468237815/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190404172233-64821d5d2107/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= google.golang.org/genproto v0.0.0-20190927181202-20e1ac93f88c/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2 h1:1tXaIXCracvtsRxSBsYDiSBN0cuJvM7QYW+MrpIRY78= google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2/go.mod h1:49MsLSx0oWMOZqcpB3uL8ZOkAh1+TndpJ8ONoCBWiZk= @@ -3644,20 +3429,13 @@ google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEd google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.22.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= @@ -3673,7 +3451,6 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= @@ -3740,12 +3517,8 @@ gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0= howett.net/plist v1.0.0 h1:7CrbWYbPPO/PyNy38b2EB/+gYbjCe2DXBxgtOOZbSQM= howett.net/plist v1.0.0/go.mod h1:lqaXoTrLY4hg8tnEzNru53gicrbv7rrk+2xJA/7hw9g= @@ -3781,9 +3554,6 @@ k8s.io/utils v0.0.0-20240711033017-18e509b52bc8/go.mod h1:OLgZIPagt7ERELqWJFomSt k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 h1:hwvWFiBzdWw1FhfY1FooPn3kzWuJ8tmbZBHi4zVsl1Y= k8s.io/utils v0.0.0-20250604170112-4c0f3b243397/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/controller-runtime v0.20.4 h1:X3c+Odnxz+iPTRobG4tp092+CvBU9UK0t/bRf+n0DGU= sigs.k8s.io/controller-runtime v0.20.4/go.mod h1:xg2XB0K5ShQzAgsoujxuKN4LNXR2LfwwHsPj7Iaw+XY= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= From 5b13b8a04da18cf068bc485757725be3092f1a6b Mon Sep 17 00:00:00 2001 From: Piotr <17101802+thampiotr@users.noreply.github.com> Date: Fri, 1 Aug 2025 15:06:59 +0100 Subject: [PATCH 17/24] Fix Update in scrape --- .../component/prometheus/scrape/scrape.go | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/internal/component/prometheus/scrape/scrape.go b/internal/component/prometheus/scrape/scrape.go index a7bc58fa4e7..c4374d03c91 100644 --- a/internal/component/prometheus/scrape/scrape.go +++ b/internal/component/prometheus/scrape/scrape.go @@ -259,10 +259,11 @@ type Component struct { movedTargetsCounter client_prometheus.Counter unregisterer util.Unregisterer - mut sync.RWMutex - args Arguments - scraper *scrape.Manager - appendable *prometheus.Fanout + mut sync.RWMutex + args Arguments + scraper *scrape.Manager + appendable *prometheus.Fanout + firstUpdateDone bool dtMutex sync.Mutex distributedTargets *discovery.DistributedTargets @@ -302,12 +303,12 @@ func New(o component.Options, args Arguments) (*Component, error) { alloyAppendable := prometheus.NewFanout(args.ForwardTo, o.ID, o.Registerer, ls) scrapeOptions := &scrape.Options{ - // NOTE: This is not Update()-able. + // NOTE: This is not Update()-able. ExtraMetrics: args.ExtraMetrics, HTTPClientOptions: []config_util.HTTPClientOption{ config_util.WithDialContextFunc(httpData.DialFunc), }, - // NOTE: This is not Update()-able. + // NOTE: This is not Update()-able. EnableNativeHistogramsIngestion: args.ScrapeNativeHistograms, } @@ -450,11 +451,17 @@ func (c *Component) Update(args component.Arguments) error { c.mut.Lock() defer c.mut.Unlock() - if c.args.ScrapeNativeHistograms != newArgs.ScrapeNativeHistograms { - return fmt.Errorf("scrape_native_histograms cannot be updated at runtime") - } - if c.args.ExtraMetrics != newArgs.ExtraMetrics { - return fmt.Errorf("extra_metrics cannot be updated at runtime") + // Some fields are not updateable at runtime - only allow them when Update() + // is called for the first time from New(). + if !c.firstUpdateDone { + c.firstUpdateDone = true + } else { + if c.args.ScrapeNativeHistograms != newArgs.ScrapeNativeHistograms { + return fmt.Errorf("scrape_native_histograms cannot be updated at runtime") + } + if c.args.ExtraMetrics != newArgs.ExtraMetrics { + return fmt.Errorf("extra_metrics cannot be updated at runtime") + } } c.args = newArgs From bcc083acebd216f671ed259db03b793d24c48d4b Mon Sep 17 00:00:00 2001 From: Piotr <17101802+thampiotr@users.noreply.github.com> Date: Fri, 1 Aug 2025 15:32:19 +0100 Subject: [PATCH 18/24] use the right commit of common fork --- go.mod | 2 +- go.sum | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index 5cda039e1f6..929e61d6d63 100644 --- a/go.mod +++ b/go.mod @@ -1059,7 +1059,7 @@ replace github.com/fsnotify/fsnotify v1.8.0 => github.com/fsnotify/fsnotify v1.7 replace github.com/prometheus/prometheus => github.com/thampiotr/prometheus v0.0.0-20250731131506-a28a7d9c5b3b // staleness_disabling_v3.4.2 branch // TODO: remove this replace directive once the upstream issue is fixed: https://github.com/prometheus/common/pull/809 -replace github.com/prometheus/common => github.com/thampiotr/common v0.0.0-20250801132732-61b386b68d79 +replace github.com/prometheus/common => github.com/thampiotr/common v0.0.0-20250801143043-d02488af238f replace gopkg.in/yaml.v2 => github.com/rfratto/go-yaml v0.0.0-20211119180816-77389c3526dc diff --git a/go.sum b/go.sum index 18d65ff8c77..b330287c4d6 100644 --- a/go.sum +++ b/go.sum @@ -2535,8 +2535,8 @@ github.com/testcontainers/testcontainers-go/modules/mongodb v0.34.0 h1:o3bgcECyB github.com/testcontainers/testcontainers-go/modules/mongodb v0.34.0/go.mod h1:ljLR42dN7k40CX0dp30R8BRIB3OOdvr7rBANEpfmMs4= github.com/tg123/go-htpasswd v1.2.4 h1:HgH8KKCjdmo7jjXWN9k1nefPBd7Be3tFCTjc2jPraPU= github.com/tg123/go-htpasswd v1.2.4/go.mod h1:EKThQok9xHkun6NBMynNv6Jmu24A33XdZzzl4Q7H1+0= -github.com/thampiotr/common v0.0.0-20250801132732-61b386b68d79 h1:VXzXU3glVu3AiTv3SAsAYdKL4pEv+2V9WNhBW+PMeDc= -github.com/thampiotr/common v0.0.0-20250801132732-61b386b68d79/go.mod h1:LL3lcZII3UXGO4InbF+BTSsiAAPUBnwFVbp4gBWIMqw= +github.com/thampiotr/common v0.0.0-20250801143043-d02488af238f h1:2ZFNprvf2fFdzpZEBKyqwADJVttZmL5uCYzATdprg8E= +github.com/thampiotr/common v0.0.0-20250801143043-d02488af238f/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= github.com/thampiotr/prometheus v0.0.0-20250731131506-a28a7d9c5b3b h1:OIY3jwIlF38C4a4uLw8PrnzzSEmwyMRgUUGCtfmQDTg= github.com/thampiotr/prometheus v0.0.0-20250731131506-a28a7d9c5b3b/go.mod h1:ioGx2SGKTY+fLnJSQCdTHqARVldGNS8OlIe3kvp98so= github.com/theupdateframework/notary v0.7.0 h1:QyagRZ7wlSpjT5N2qQAh/pN+DVqgekv4DzbAiAiEL3c= @@ -3074,7 +3074,6 @@ golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= -golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= golang.org/x/net v0.0.0-20180530234432-1e491301e022/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -3386,7 +3385,6 @@ golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxb golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI= golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ= golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0= -golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI= golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo= golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From ad515c08c762757680db9f2ac03c7174fbe299cf Mon Sep 17 00:00:00 2001 From: Piotr <17101802+thampiotr@users.noreply.github.com> Date: Fri, 1 Aug 2025 15:49:24 +0100 Subject: [PATCH 19/24] fmt fix --- internal/component/prometheus/scrape/scrape.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/component/prometheus/scrape/scrape.go b/internal/component/prometheus/scrape/scrape.go index c4374d03c91..ddd164041b5 100644 --- a/internal/component/prometheus/scrape/scrape.go +++ b/internal/component/prometheus/scrape/scrape.go @@ -461,7 +461,7 @@ func (c *Component) Update(args component.Arguments) error { } if c.args.ExtraMetrics != newArgs.ExtraMetrics { return fmt.Errorf("extra_metrics cannot be updated at runtime") - } + } } c.args = newArgs From a416031abdd34409dc706d7c9e29b171c8d6b214 Mon Sep 17 00:00:00 2001 From: Piotr <17101802+thampiotr@users.noreply.github.com> Date: Fri, 1 Aug 2025 16:57:41 +0100 Subject: [PATCH 20/24] Ensure native histograms are still enabled when using legacy enable protobuf negotiation option --- internal/component/prometheus/scrape/scrape.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/internal/component/prometheus/scrape/scrape.go b/internal/component/prometheus/scrape/scrape.go index ddd164041b5..f7f4d988d12 100644 --- a/internal/component/prometheus/scrape/scrape.go +++ b/internal/component/prometheus/scrape/scrape.go @@ -180,6 +180,9 @@ func (arg *Arguments) Validate() error { // For backwards-compatibility, if EnableProtobufNegotiation is set to true, the ScrapeProtocols are set to // [PrometheusProto, OpenMetricsText1.0.0, OpenMetricsText0.0.1, PrometheusText0.0.4]. arg.ScrapeProtocols = slices.Clone(defaultNativeHistogramScrapeProtocols) + // In previous Prometheus versions, EnableProtobufNegotiation would also enable native histogram scraping. + // This is no longer the case, so we need to explicitly enable it here. + arg.ScrapeNativeHistograms = true } if arg.ScrapeNativeHistograms { From f702784945253d02bda0ae41f0a111cd1ff8d24b Mon Sep 17 00:00:00 2001 From: Piotr <17101802+thampiotr@users.noreply.github.com> Date: Mon, 4 Aug 2025 13:53:53 +0100 Subject: [PATCH 21/24] document un-update-able properties --- .../reference/components/prometheus/prometheus.scrape.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/sources/reference/components/prometheus/prometheus.scrape.md b/docs/sources/reference/components/prometheus/prometheus.scrape.md index ee2691fea66..0d78aa54dc4 100644 --- a/docs/sources/reference/components/prometheus/prometheus.scrape.md +++ b/docs/sources/reference/components/prometheus/prometheus.scrape.md @@ -48,7 +48,7 @@ You can use the following arguments with `prometheus.scrape`: | `enable_compression` | `bool` | Whether compression is enabled for the scrape. | `true` | no | | `enable_http2` | `bool` | Whether HTTP2 is supported for requests. | `true` | no | | `enable_protobuf_negotiation` | `bool` | Deprecated: use `scrape_protocols` instead. | `false` | no | -| `extra_metrics` | `bool` | Whether extra metrics should be generated for scrape targets. | `false` | no | +| `extra_metrics` | `bool` | Whether extra metrics should be generated for scrape targets. Currently, cannot be updated at runtime. | `false` | no | | `follow_redirects` | `bool` | Whether redirects returned by the server should be followed. | `true` | no | | `http_headers` | `map(list(secret))` | Custom HTTP headers to be sent along with each request. The map key is the header name. | | no | | `honor_labels` | `bool` | Indicator whether the scraped metrics should remain unmodified. | `false` | no | @@ -73,7 +73,7 @@ You can use the following arguments with `prometheus.scrape`: | `scrape_failure_log_file` | `string` | File to which scrape failures are logged. | `""` | no | | `scrape_fallback_protocol` | `string` | The fallback protocol to use if the target does not provide a valid Content-Type header. See below for available values. | `PrometheusText0_0_4` | no | | `scrape_interval` | `duration` | How frequently to scrape the targets of this scrape configuration. | `"60s"` | no | -| `scrape_native_histograms` | `bool` | Whether to scrape native histograms. | `false` | no | +| `scrape_native_histograms` | `bool` | Whether to scrape native histograms. Currently, cannot be updated at runtime. | `false` | no | | `scrape_protocols` | `list(string)` | The protocols to negotiate during a scrape, in order of preference. See below for available values. | `["OpenMetricsText1.0.0", "OpenMetricsText0.0.1", "PrometheusText1.0.0", "PrometheusText0.0.4"]` | no | | `scrape_timeout` | `duration` | The timeout for scraping targets of this configuration. | `"10s"` | no | | `target_limit` | `uint` | More than this many targets after the target relabeling causes the scrapes to fail. | | no | From 6d058d24ed6107aa3b6c1e3f4c63cbf410c657c8 Mon Sep 17 00:00:00 2001 From: Piotr <17101802+thampiotr@users.noreply.github.com> Date: Mon, 4 Aug 2025 14:03:44 +0100 Subject: [PATCH 22/24] Remove worker pool changes --- .../runtime/internal/controller/loader.go | 6 +- .../runtime/internal/worker/worker_pool.go | 38 ++++------- .../internal/worker/worker_pool_test.go | 66 +++---------------- internal/runtime/module_test.go | 6 +- 4 files changed, 24 insertions(+), 92 deletions(-) diff --git a/internal/runtime/internal/controller/loader.go b/internal/runtime/internal/controller/loader.go index 105ea52095f..4c62e98d105 100644 --- a/internal/runtime/internal/controller/loader.go +++ b/internal/runtime/internal/controller/loader.go @@ -291,11 +291,7 @@ func (l *Loader) Apply(options ApplyOptions) diag.Diagnostics { // Cleanup unregisters any existing metrics and optionally stops the worker pool. func (l *Loader) Cleanup(stopWorkerPool bool) { if stopWorkerPool { - // Wait at most 5 seconds for currently evaluating components to finish. - err := l.workerPool.Stop(time.Second * 5) - if err != nil { - level.Warn(l.log).Log("msg", "timed out stopping worker pool", "err", err) - } + l.workerPool.Stop() } if l.globals.Registerer == nil { return diff --git a/internal/runtime/internal/worker/worker_pool.go b/internal/runtime/internal/worker/worker_pool.go index be1a0b700c1..ee9c27c0c34 100644 --- a/internal/runtime/internal/worker/worker_pool.go +++ b/internal/runtime/internal/worker/worker_pool.go @@ -4,19 +4,16 @@ import ( "fmt" "runtime" "sync" - "time" ) type Pool interface { // Stop stops the worker pool. It does not wait to drain any internal queues, but it does wait for the currently - // running tasks to complete up to the specified timeout. It must only be called once. - // Returns an error if the timeout is exceeded before all workers have stopped, indicating tasks that - // take longer than timeout to complete. - Stop(timeout time.Duration) error + // running tasks to complete. It must only be called once. + Stop() // SubmitWithKey submits a function to be executed by the worker pool, ensuring that: - // * Only one job with a given key can be waiting to be executed at the time. This is desired if we don't want to - // run the same task multiple times, e.g., if it's a component update that we only need to run once. - // * Only one job with a given key can be running at the time. This is desired when we don't want to duplicate work, + // * Only one job with given key can be waiting to be executed at the time. This is desired if we don't want to + // run the same task multiple times, e.g. if it's a component update that we only need to run once. + // * Only one job with given key can be running at the time. This is desired when we don't want to duplicate work, // and we want to protect the pool from a slow task hogging all the workers. // // Note that it is possible to have two tasks with the same key in the pool at the same time: one waiting to be @@ -46,7 +43,7 @@ func NewDefaultWorkerPool() Pool { // NewFixedWorkerPool creates a new Pool with the given number of workers and given max queue size. // The max queue size is the maximum number of tasks that can be queued OR running at the same time. -// The tasks can run on a random worker, but workQueue ensures only one task with a given key is running at a time. +// The tasks can run on a random worker, but workQueue ensures only one task with given key is running at a time. // The pool is automatically started and ready to accept work. To prevent resource leak, Stop() must be called when the // pool is no longer needed. func NewFixedWorkerPool(workersCount int, maxQueueSize int) Pool { @@ -72,20 +69,9 @@ func (w *fixedWorkerPool) QueueSize() int { return w.workQueue.queueSize() } -func (w *fixedWorkerPool) Stop(timeout time.Duration) error { +func (w *fixedWorkerPool) Stop() { close(w.quit) - done := make(chan struct{}) - go func() { - w.allStopped.Wait() - close(done) - }() - - select { - case <-done: - return nil - case <-time.After(timeout): - return fmt.Errorf("worker pool did not stop within %v timeout", timeout) - } + w.allStopped.Wait() } func (w *fixedWorkerPool) start() { @@ -128,7 +114,7 @@ func (w *workQueue) tryEnqueue(key string, f func()) (bool, error) { w.lock.Lock() defer w.lock.Unlock() - // Don't enqueue if same the task already waiting + // Don't enqueue if same task already waiting if _, exists := w.waiting[key]; exists { return false, nil } @@ -158,7 +144,7 @@ func (w *workQueue) taskDone(key string) { } // emitNextTask emits the next eligible task to be run if there is one. It must be called whenever the queue state -// changes (e.g., a task is added or a task finishes). The lock must be held when calling this function. +// changes (e.g. a task is added or a task finishes). The lock must be held when calling this function. func (w *workQueue) emitNextTask() { var ( task func() @@ -182,7 +168,7 @@ func (w *workQueue) emitNextTask() { // Remove the task from waiting and add it to running set. // NOTE: Even though we remove an element from the middle of a collection, we use a slice instead of a linked list. - // This code is NOT identified as a performance hot spot and given that in large Alloy instances we observe the max number of + // This code is NOT identified as a performance hot spot and given that in large Alloy instances we observe max number of // tasks queued to be ~10, the slice is actually faster because it does not allocate memory. See BenchmarkQueue. w.waitingOrder = append(w.waitingOrder[:index], w.waitingOrder[index+1:]...) task = w.waiting[key] @@ -195,7 +181,7 @@ func (w *workQueue) emitNextTask() { task() } - // Emit the task to be run. There will always be space in this buffered channel because we limit queue size. + // Emit the task to be run. There will always be space in this buffered channel, because we limit queue size. w.tasksToRun <- wrapped } diff --git a/internal/runtime/internal/worker/worker_pool_test.go b/internal/runtime/internal/worker/worker_pool_test.go index 69aedba307a..7b9b1b6a1e9 100644 --- a/internal/runtime/internal/worker/worker_pool_test.go +++ b/internal/runtime/internal/worker/worker_pool_test.go @@ -11,15 +11,13 @@ import ( "go.uber.org/goleak" ) -const testTimeout = 3 * time.Second - func TestWorkerPool(t *testing.T) { t.Run("worker pool", func(t *testing.T) { t.Run("should start and stop cleanly", func(t *testing.T) { defer goleak.VerifyNone(t) pool := NewFixedWorkerPool(4, 1) require.Equal(t, 0, pool.QueueSize()) - defer pool.Stop(testTimeout) + defer pool.Stop() }) t.Run("should reject invalid worker count", func(t *testing.T) { @@ -45,7 +43,7 @@ func TestWorkerPool(t *testing.T) { defer goleak.VerifyNone(t) done := make(chan struct{}) pool := NewFixedWorkerPool(4, 1) - defer pool.Stop(testTimeout) + defer pool.Stop() err := pool.SubmitWithKey("123", func() { done <- struct{}{} @@ -64,7 +62,7 @@ func TestWorkerPool(t *testing.T) { defer goleak.VerifyNone(t) done := make(chan struct{}) pool := NewFixedWorkerPool(4, 1) - defer pool.Stop(testTimeout) + defer pool.Stop() err := pool.SubmitWithKey("testKey", func() { done <- struct{}{} @@ -82,7 +80,7 @@ func TestWorkerPool(t *testing.T) { t.Run("should not queue duplicated keys", func(t *testing.T) { defer goleak.VerifyNone(t) pool := NewFixedWorkerPool(4, 10) - defer pool.Stop(testTimeout) + defer pool.Stop() tasksDone := atomic.Int32{} // First task will block the worker @@ -131,7 +129,7 @@ func TestWorkerPool(t *testing.T) { t.Run("should concurrently process for different keys", func(t *testing.T) { defer goleak.VerifyNone(t) pool := NewFixedWorkerPool(4, 10) - defer pool.Stop(testTimeout) + defer pool.Stop() tasksDone := atomic.Int32{} // First task will block the worker @@ -171,7 +169,7 @@ func TestWorkerPool(t *testing.T) { defer goleak.VerifyNone(t) // Pool with one worker and queue size of 1 - all work goes to one queue pool := NewFixedWorkerPool(1, 2) - defer pool.Stop(testTimeout) + defer pool.Stop() tasksDone := atomic.Int32{} // First task will block the worker @@ -206,7 +204,7 @@ func TestWorkerPool(t *testing.T) { // Queue size is sufficient to queue all tasks pool := NewFixedWorkerPool(3, tasksCount+1) - defer pool.Stop(testTimeout) + defer pool.Stop() tasksDone := atomic.Int32{} // First task will block @@ -242,7 +240,7 @@ func TestWorkerPool(t *testing.T) { // Queue size is sufficient to queue all tasks pool := NewFixedWorkerPool(10, 10) - defer pool.Stop(testTimeout) + defer pool.Stop() tasksDone := atomic.Int32{} // First task will block @@ -280,54 +278,6 @@ func TestWorkerPool(t *testing.T) { return tasksDone.Load() == 2 }, 3*time.Second, 1*time.Millisecond) }) - - t.Run("should timeout when stopping with stuck workers", func(t *testing.T) { - defer goleak.VerifyNone(t) - pool := NewFixedWorkerPool(2, 5) - - // Submit a task that will block indefinitely - blockTask := make(chan struct{}) - taskRunning := make(chan struct{}) - taskDone := make(chan struct{}) - err := pool.SubmitWithKey("blocking-task", func() { - taskRunning <- struct{}{} - <-blockTask // This will block forever - close(taskDone) - }) - require.NoError(t, err) - - // Wait for the task to start running - <-taskRunning - - // Try to stop with a short timeout - should time out - shortTimeout := 100 * time.Millisecond - err = pool.Stop(shortTimeout) - require.Error(t, err) - require.Contains(t, err.Error(), "worker pool did not stop within 100ms timeout") - - // Clean up the blocking task - close(blockTask) - <-taskDone - }) - - t.Run("should stop successfully when no tasks are running", func(t *testing.T) { - defer goleak.VerifyNone(t, goleak.IgnoreAnyFunction("github.com/grafana/alloy/internal/runtime/internal/worker.(*fixedWorkerPool).Stop.func1")) - pool := NewFixedWorkerPool(2, 5) - - // Submit a quick task that completes immediately - done := make(chan struct{}, 1) - err := pool.SubmitWithKey("quick-task", func() { - done <- struct{}{} - }) - require.NoError(t, err) - - // Wait for the task to complete - <-done - - // Stop should succeed immediately - err = pool.Stop(testTimeout) - require.NoError(t, err) - }) }) } diff --git a/internal/runtime/module_test.go b/internal/runtime/module_test.go index 35a14c16bf7..c226e5c1d41 100644 --- a/internal/runtime/module_test.go +++ b/internal/runtime/module_test.go @@ -127,7 +127,7 @@ func TestModule(t *testing.T) { defer verifyNoGoroutineLeaks(t) mc := newModuleController(testModuleControllerOptions(t)).(*moduleController) // modules do not clean up their own worker pool as we normally use a shared one from the root controller - defer mc.o.WorkerPool.Stop(5 * time.Second) + defer mc.o.WorkerPool.Stop() tm := &testModule{ content: tc.argumentModuleContent + tc.exportModuleContent, @@ -192,7 +192,7 @@ func TestExportsWhenNotUsed(t *testing.T) { func TestIDList(t *testing.T) { defer verifyNoGoroutineLeaks(t) o := testModuleControllerOptions(t) - defer o.WorkerPool.Stop(5 * time.Second) + defer o.WorkerPool.Stop() nc := newModuleController(o) require.Len(t, nc.ModuleIDs(), 0) @@ -226,7 +226,7 @@ func TestIDList(t *testing.T) { func TestDuplicateIDList(t *testing.T) { defer verifyNoGoroutineLeaks(t) o := testModuleControllerOptions(t) - defer o.WorkerPool.Stop(5 * time.Second) + defer o.WorkerPool.Stop() nc := newModuleController(o) require.Len(t, nc.ModuleIDs(), 0) From e8c8ea0f21b5067b24826ad283ec8cc1eee72a13 Mon Sep 17 00:00:00 2001 From: Piotr <17101802+thampiotr@users.noreply.github.com> Date: Mon, 4 Aug 2025 18:43:16 +0100 Subject: [PATCH 23/24] use proper prometheus/common version --- go.mod | 5 +- go.sum | 264 +++++++++++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 249 insertions(+), 20 deletions(-) diff --git a/go.mod b/go.mod index 929e61d6d63..f541bc6ad86 100644 --- a/go.mod +++ b/go.mod @@ -188,7 +188,7 @@ require ( github.com/prometheus/blackbox_exporter v0.24.1-0.20230623125439-bd22efa1c900 github.com/prometheus/client_golang v1.22.0 github.com/prometheus/client_model v0.6.2 - github.com/prometheus/common v0.65.0 + github.com/prometheus/common v0.65.1-0.20250804173848-0ad974f9af53 github.com/prometheus/consul_exporter v0.8.0 github.com/prometheus/memcached_exporter v0.13.0 github.com/prometheus/mysqld_exporter v0.17.2 @@ -1058,9 +1058,6 @@ replace github.com/fsnotify/fsnotify v1.8.0 => github.com/fsnotify/fsnotify v1.7 // for example, via this implementation: https://github.com/grafana/prometheus/pull/34 replace github.com/prometheus/prometheus => github.com/thampiotr/prometheus v0.0.0-20250731131506-a28a7d9c5b3b // staleness_disabling_v3.4.2 branch -// TODO: remove this replace directive once the upstream issue is fixed: https://github.com/prometheus/common/pull/809 -replace github.com/prometheus/common => github.com/thampiotr/common v0.0.0-20250801143043-d02488af238f - replace gopkg.in/yaml.v2 => github.com/rfratto/go-yaml v0.0.0-20211119180816-77389c3526dc // Replace directives from Loki diff --git a/go.sum b/go.sum index b330287c4d6..3553507b34c 100644 --- a/go.sum +++ b/go.sum @@ -2,15 +2,36 @@ cel.dev/expr v0.23.1 h1:K4KOtPCJQjVggkARsjG9RWXP6O4R73aHeJMa/dmCQQg= cel.dev/expr v0.23.1/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= cloud.google.com/go v0.121.1 h1:S3kTQSydxmu1JfLRLpKtxRPA7rSrYPRPEUmL/PavVUw= cloud.google.com/go v0.121.1/go.mod h1:nRFlrHq39MNVWu+zESP2PosMWA0ryJw8KUBZ2iZpxbw= cloud.google.com/go/auth v0.16.2 h1:QvBAGFPLrDeoiNjyfVunhQ10HKNYuOwZ5noee0M5df4= cloud.google.com/go/auth v0.16.2/go.mod h1:sRBas2Y1fB1vZTdurouM0AzuYQBMZinrUYL8EufhtEA= cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/compute/metadata v0.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU= cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/iam v1.5.2 h1:qgFRAGEmd8z6dJ/qyEchAuL9jpswyODjA2lS+w234g8= cloud.google.com/go/iam v1.5.2/go.mod h1:SE1vg0N81zQqLzQEwxL2WI6yhetBdbNQuTvIKCSkUHE= cloud.google.com/go/kms v1.21.2 h1:c/PRUSMNQ8zXrc1sdAUnsenWWaNXN+PzTXfXOcSFdoE= @@ -21,14 +42,24 @@ cloud.google.com/go/longrunning v0.6.7 h1:IGtfDWHhQCgCjwQjV9iiLnUta9LBCo8R9QmAFs cloud.google.com/go/longrunning v0.6.7/go.mod h1:EAFV3IZAKmM56TyiE6VAP3VoTzhZzySwI/YI1s/nRsY= cloud.google.com/go/monitoring v1.24.2 h1:5OTsoJ1dXYIiMiuL+sYscLc9BumrL3CarVLL7dd7lHM= cloud.google.com/go/monitoring v1.24.2/go.mod h1:x7yzPWcgDRnPEv3sI+jJGBkwl5qINf+6qY4eq0I9B4U= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= cloud.google.com/go/pubsub v1.49.0 h1:5054IkbslnrMCgA2MAEPcsN3Ky+AyMpEZcii/DoySPo= cloud.google.com/go/pubsub v1.49.0/go.mod h1:K1FswTWP+C1tI/nfi3HQecoVeFvL4HUOB1tdaNXKhUY= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/trace v1.11.6 h1:2O2zjPzqPYAHrn3OKl029qlqG6W8ZdYaOWRyr8NgMT4= cloud.google.com/go/trace v1.11.6/go.mod h1:GA855OeDEBiBMzcckLPE2kDunIpC72N+Pq8WFieFjnI= connectrpc.com/connect v1.18.1 h1:PAg7CjSAGvscaf6YZKUefjoih5Z/qYkyaTrBW8xvYPw= connectrpc.com/connect v1.18.1/go.mod h1:0292hj1rnx8oFrStN7cB4jjVBeqs+Yx5yDIC2prWDO8= dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= @@ -123,6 +154,7 @@ github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2/go.mod h1:wP83 github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg= github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ClickHouse/clickhouse-go v1.5.4 h1:cKjXeYLNWVJIx2J1K6H2CqyRmfwVJVY1OV1coaaFcI0= github.com/ClickHouse/clickhouse-go v1.5.4/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI= github.com/Code-Hex/go-generics-cache v1.5.1 h1:6vhZGc5M7Y/YD8cIUcY8kcuQLB4cHR7U+0KMqAA0KcU= @@ -437,7 +469,8 @@ github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuy github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b h1:mimo19zliBX/vSQ6PWWSL9lK8qwHozUj03+zLoEB8O0= github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b/go.mod h1:fvzegU4vN3H1qMT+8wDmzjAcDONcgo2/SZ/TyfdUOFs= github.com/alicebob/miniredis v2.5.0+incompatible h1:yBHoLpsyjupjz3NL3MhKMVkR41j82Yjf3KFv7ApYzUI= @@ -953,6 +986,9 @@ github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMj github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= github.com/go-git/go-git/v5 v5.13.0 h1:vLn5wlGIh/X78El6r3Jr+30W16Blk0CTcxTYcYPWi5E= github.com/go-git/go-git/v5 v5.13.0/go.mod h1:Wjo7/JyVKtQgUNdXYXIepzWfJQkUEIGvkvVkiXRR/zw= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-jose/go-jose/v4 v4.0.5 h1:M6T8+mKZl/+fNNuFHvGIzDz7BTLQPIounk/b9dw3AaE= github.com/go-jose/go-jose/v4 v4.0.5/go.mod h1:s3P1lRrkT8igV8D9OjyL4WRyHvjB6a4JSllnOrmmBOA= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= @@ -1104,11 +1140,19 @@ github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EOqtpKwwwHI= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/mock v1.7.0-rc.1 h1:YojYx61/OLFsiv6Rw1Z96LpldJIy31o+UHmwAUMJ6/U= github.com/golang/mock v1.7.0-rc.1/go.mod h1:s42URUywIqd+OcERslBJvOjepvNymP31m3q8d/GkuRs= @@ -1117,6 +1161,7 @@ github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5y github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= @@ -1157,6 +1202,7 @@ github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= @@ -1178,6 +1224,15 @@ github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/ github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20240227163752-401108e1b7e7/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw= @@ -1199,6 +1254,8 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.3.6 h1:GW/XbdyBFQ8Qe+YAmFU9uHLo7OnF5tL52HFAgMmyrf4= github.com/googleapis/enterprise-certificate-proxy v0.3.6/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.14.2 h1:eBLnkZ9635krYIPD+ag1USrOAI0Nr0QYF3+/3GqO0k0= github.com/googleapis/gax-go/v2 v2.14.2/go.mod h1:ON64QhlJkhVtSqp4v1uaK92VyZ2gmvDQsweuyLV+8+w= github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= @@ -1450,6 +1507,7 @@ github.com/huandu/xstrings v1.5.0 h1:2ag3IFq9ZDANvthTwTiqSSZLjDc+BedvHPAp5tJy2TI github.com/huandu/xstrings v1.5.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20230524184225-eabc099b10ab/go.mod h1:gx7rwoVhcfuVKG5uya9Hs3Sxj7EIvldVofAWIUtGouw= github.com/ianlancetaylor/demangle v0.0.0-20240312041847-bd984b5ce465/go.mod h1:gx7rwoVhcfuVKG5uya9Hs3Sxj7EIvldVofAWIUtGouw= @@ -1611,10 +1669,13 @@ github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/ github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/juju/gnuflag v0.0.0-20171113085948-2ce1bb71843d/go.mod h1:2PavIy+JPciBPrBUjwbNvtwB6RQlve+hkpll6QSNmOE= github.com/juju/loggo v0.0.0-20190526231331-6e530bcce5d8/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/k0kubun/pp/v3 v3.2.0 h1:h33hNTZ9nVFNP3u2Fsgz8JXiF5JINoZfFq4SvKJwNcs= @@ -1639,7 +1700,6 @@ github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46/go.mod h1:yyMNCy github.com/klauspost/asmfmt v1.3.2 h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK4= github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= -github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/klauspost/cpuid/v2 v2.2.11 h1:0OwqZRYI2rFrjS4kvkDnqJkKHdHaRnCm68/DY4OxRzU= @@ -1654,6 +1714,7 @@ github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b h1:udzkj9S/zlT5X367kqJ github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b/go.mod h1:pcaDhQK0/NJZEvtCO0qQPPropqV0sJOJ6YW7X+9kRwM= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= @@ -1868,6 +1929,7 @@ github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ib github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= @@ -2279,14 +2341,15 @@ github.com/prometheus/blackbox_exporter v0.24.1-0.20230623125439-bd22efa1c900/go github.com/prometheus/client_golang v0.9.0-pre1.0.20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.4.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.5.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= -github.com/prometheus/client_golang v1.20.4/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= @@ -2294,9 +2357,21 @@ github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1: github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= +github.com/prometheus/common v0.0.0-20180110214958-89604d197083/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/common v0.29.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/common v0.31.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/common v0.65.1-0.20250804173848-0ad974f9af53 h1:9UzEu3LNsyYUSEkNU6mfBwG8TpiURfaJQgz1rVQKmhs= +github.com/prometheus/common v0.65.1-0.20250804173848-0ad974f9af53/go.mod h1:LL3lcZII3UXGO4InbF+BTSsiAAPUBnwFVbp4gBWIMqw= github.com/prometheus/common/assets v0.2.0 h1:0P5OrzoHrYBOSM1OigWL3mY8ZvV2N4zIE/5AahrSrfM= github.com/prometheus/common/assets v0.2.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= github.com/prometheus/common/sigv4 v0.1.0 h1:qoVebwtwwEhS85Czm2dSROY5fTo2PAPEVdDeppTwGX4= @@ -2352,7 +2427,6 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= @@ -2424,8 +2498,10 @@ github.com/siebenmann/go-kstat v0.0.0-20210513183136-173c9b0a9973/go.mod h1:G81a github.com/sijms/go-ora/v2 v2.9.0 h1:+iQbUeTeCOFMb5BsOMgUhV8KWyrv9yjKpcK4x7+MFrg= github.com/sijms/go-ora/v2 v2.9.0/go.mod h1:QgFInVi3ZWyqAiJwzBQA+nbKYKH77tdp1PYoCqhR2dU= github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= @@ -2535,8 +2611,6 @@ github.com/testcontainers/testcontainers-go/modules/mongodb v0.34.0 h1:o3bgcECyB github.com/testcontainers/testcontainers-go/modules/mongodb v0.34.0/go.mod h1:ljLR42dN7k40CX0dp30R8BRIB3OOdvr7rBANEpfmMs4= github.com/tg123/go-htpasswd v1.2.4 h1:HgH8KKCjdmo7jjXWN9k1nefPBd7Be3tFCTjc2jPraPU= github.com/tg123/go-htpasswd v1.2.4/go.mod h1:EKThQok9xHkun6NBMynNv6Jmu24A33XdZzzl4Q7H1+0= -github.com/thampiotr/common v0.0.0-20250801143043-d02488af238f h1:2ZFNprvf2fFdzpZEBKyqwADJVttZmL5uCYzATdprg8E= -github.com/thampiotr/common v0.0.0-20250801143043-d02488af238f/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= github.com/thampiotr/prometheus v0.0.0-20250731131506-a28a7d9c5b3b h1:OIY3jwIlF38C4a4uLw8PrnzzSEmwyMRgUUGCtfmQDTg= github.com/thampiotr/prometheus v0.0.0-20250731131506-a28a7d9c5b3b/go.mod h1:ioGx2SGKTY+fLnJSQCdTHqARVldGNS8OlIe3kvp98so= github.com/theupdateframework/notary v0.7.0 h1:QyagRZ7wlSpjT5N2qQAh/pN+DVqgekv4DzbAiAiEL3c= @@ -2682,7 +2756,9 @@ github.com/yl2chen/cidranger v1.0.2 h1:lbOWZVCG1tCRX4u24kuM1Tb4nHqWkDxwLdoS+Seva github.com/yl2chen/cidranger v1.0.2/go.mod h1:9U1yz7WPYDwf0vpNWFaeRh0bjwz5RVgRy/9UEQfHl0g= github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 h1:ilQV1hzziu+LLM3zUTJ0trRztfwgjqKnBWNtSRkbmwM= github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78/go.mod h1:aL8wCCfTfSfmXjznFBSZNN13rSJjlIOI1fUNAtF7rmI= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= @@ -2719,6 +2795,11 @@ go.etcd.io/etcd/client/v3 v3.5.16 h1:sSmVYOAHeC9doqi0gv7v86oY/BTld0SEFGaxsU9eRhE go.etcd.io/etcd/client/v3 v3.5.16/go.mod h1:X+rExSGkyqxvu276cr2OwPLBaeqFu1cIl4vmRjAD/50= go.mongodb.org/mongo-driver v1.17.4 h1:jUorfmVzljjr0FLzYQsGP8cgN/qzzxlY9Vh0C9KFXVw= go.mongodb.org/mongo-driver v1.17.4/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= @@ -2997,12 +3078,14 @@ golang.design/x/chann v0.1.2 h1:eHF9wjuQnpp+j4ryWhyxC/pFuYzbvMAkudA/I5ALovY= golang.design/x/chann v0.1.2/go.mod h1:Rh5KhCAp+0qu9+FfKPymHpu8onmjl89sFwMeiw3SK14= golang.org/x/arch v0.18.0 h1:WN9poc33zL4AzGxqf8VtpKUnGvMi8O9lhNyBMF/85qc= golang.org/x/arch v0.18.0/go.mod h1:bdwinDaKcfZUGpH09BB7ZmOfhalA8lQdzl62l8gGWsk= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= @@ -3033,28 +3116,47 @@ golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZP golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= -golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54= golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U= golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= -golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw= golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= golang.org/x/crypto/x509roots/fallback v0.0.0-20240208163226-62c9f1799c91 h1:Lyizcy9jX02jYR0ceBkL6S+jRys8Uepf7wt1vrz6Ras= golang.org/x/crypto/x509roots/fallback v0.0.0-20240208163226-62c9f1799c91/go.mod h1:kNa9WdvYnzFwC79zRpLRMJbdEFlhyM5RPFBBZp/wWH8= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o= golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.1-0.20200828183125-ce943fd02449/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= @@ -3080,24 +3182,39 @@ golang.org/x/net v0.0.0-20180530234432-1e491301e022/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191007182048-72f939374954/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= @@ -3109,6 +3226,7 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210510120150-4163338589ed/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= @@ -3135,17 +3253,18 @@ golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= -golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= -golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= @@ -3155,6 +3274,8 @@ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -3167,7 +3288,6 @@ golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -3175,6 +3295,7 @@ golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -3184,9 +3305,14 @@ golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190411185658-b44545bcd369/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190529164535-6a60838ec259/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -3194,19 +3320,32 @@ golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -3263,7 +3402,6 @@ golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= @@ -3295,14 +3433,15 @@ golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= -golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M= golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg= golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -3327,9 +3466,9 @@ golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -3343,23 +3482,55 @@ golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190424220101-1e8e1cfdf96b/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190823170909-c4a336ef6a2f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20201022035929-9cf592e881e9/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -3401,20 +3572,66 @@ gonum.org/v1/gonum v0.0.0-20181121035319-3f7ecaa7e8ca/go.mod h1:Y+Yx5eoAFn32cQvJ gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= gonum.org/v1/netlib v0.0.0-20181029234149-ec6d1f5cefe6/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= google.golang.org/api v0.239.0 h1:2hZKUnFZEy81eugPs4e2XzIJ5SOwQg0G82bpXD65Puo= google.golang.org/api v0.239.0/go.mod h1:cOVEm2TpdAGHL2z+UwyS+kmlGr3bVWQQ6sYEqkKje50= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= google.golang.org/genproto v0.0.0-20170818010345-ee236bd376b0/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180518175338-11a468237815/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190404172233-64821d5d2107/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= google.golang.org/genproto v0.0.0-20190927181202-20e1ac93f88c/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2 h1:1tXaIXCracvtsRxSBsYDiSBN0cuJvM7QYW+MrpIRY78= google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2/go.mod h1:49MsLSx0oWMOZqcpB3uL8ZOkAh1+TndpJ8ONoCBWiZk= @@ -3427,13 +3644,20 @@ google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEd google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.22.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= @@ -3449,6 +3673,7 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= @@ -3515,8 +3740,12 @@ gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0= howett.net/plist v1.0.0 h1:7CrbWYbPPO/PyNy38b2EB/+gYbjCe2DXBxgtOOZbSQM= howett.net/plist v1.0.0/go.mod h1:lqaXoTrLY4hg8tnEzNru53gicrbv7rrk+2xJA/7hw9g= @@ -3552,6 +3781,9 @@ k8s.io/utils v0.0.0-20240711033017-18e509b52bc8/go.mod h1:OLgZIPagt7ERELqWJFomSt k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 h1:hwvWFiBzdWw1FhfY1FooPn3kzWuJ8tmbZBHi4zVsl1Y= k8s.io/utils v0.0.0-20250604170112-4c0f3b243397/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/controller-runtime v0.20.4 h1:X3c+Odnxz+iPTRobG4tp092+CvBU9UK0t/bRf+n0DGU= sigs.k8s.io/controller-runtime v0.20.4/go.mod h1:xg2XB0K5ShQzAgsoujxuKN4LNXR2LfwwHsPj7Iaw+XY= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= From 36dd009943a8b9d55b8795e63c40557db224202d Mon Sep 17 00:00:00 2001 From: Piotr <17101802+thampiotr@users.noreply.github.com> Date: Tue, 5 Aug 2025 10:45:38 +0100 Subject: [PATCH 24/24] add lint ignore for newly deprecated fields in prometheus/common --- internal/component/common/net/server.go | 5 ++++- internal/component/common/relabel/relabel.go | 8 ++++++++ internal/component/loki/process/metric/metricvec.go | 2 ++ internal/component/loki/process/stages/eventlogmessage.go | 4 ++++ internal/component/loki/process/stages/labels.go | 2 ++ internal/component/loki/process/stages/regex.go | 2 ++ internal/component/loki/process/stages/static_labels.go | 2 ++ internal/component/loki/process/stages/windowsevent.go | 4 ++++ .../loki/source/aws_firehose/internal/handler.go | 6 ++++++ .../source/azure_event_hubs/internal/parser/parser.go | 2 ++ .../loki/source/gcplog/internal/gcplogtarget/formatter.go | 2 ++ 11 files changed, 38 insertions(+), 1 deletion(-) diff --git a/internal/component/common/net/server.go b/internal/component/common/net/server.go index ba75ddc6c88..e687d850af2 100644 --- a/internal/component/common/net/server.go +++ b/internal/component/common/net/server.go @@ -5,10 +5,11 @@ import ( "github.com/go-kit/log" "github.com/gorilla/mux" - "github.com/grafana/alloy/internal/runtime/logging/level" dskit "github.com/grafana/dskit/server" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/common/model" + + "github.com/grafana/alloy/internal/runtime/logging/level" ) // TargetServer is wrapper around dskit.Server that handles some common @@ -25,6 +26,8 @@ type TargetServer struct { // NewTargetServer creates a new TargetServer, applying some defaults to the server configuration. // If provided config is nil, a default configuration will be used instead. func NewTargetServer(logger log.Logger, metricsNamespace string, reg prometheus.Registerer, config *ServerConfig) (*TargetServer, error) { + // TODO: add support for different validation schemes. + //nolint:staticcheck if !model.IsValidMetricName(model.LabelValue(metricsNamespace)) { return nil, fmt.Errorf("metrics namespace is not prometheus compatible: %s", metricsNamespace) } diff --git a/internal/component/common/relabel/relabel.go b/internal/component/common/relabel/relabel.go index f406cbcf8c1..d3b3555720d 100644 --- a/internal/component/common/relabel/relabel.go +++ b/internal/component/common/relabel/relabel.go @@ -171,12 +171,16 @@ func (rc *Config) Validate() error { if (rc.Action == Replace || rc.Action == HashMod || rc.Action == Lowercase || rc.Action == Uppercase || rc.Action == KeepEqual || rc.Action == DropEqual) && rc.TargetLabel == "" { return fmt.Errorf("relabel configuration for %s action requires 'target_label' value", rc.Action) } + // TODO: add support for different validation schemes. + //nolint:staticcheck if rc.Action == Replace && !strings.Contains(rc.TargetLabel, "$") && !model.LabelName(rc.TargetLabel).IsValid() { return fmt.Errorf("%q is invalid 'target_label' for %s action", rc.TargetLabel, rc.Action) } if rc.Action == Replace && strings.Contains(rc.TargetLabel, "$") && !relabelTarget.MatchString(rc.TargetLabel) { return fmt.Errorf("%q is invalid 'target_label' for %s action", rc.TargetLabel, rc.Action) } + // TODO: add support for different validation schemes. + //nolint:staticcheck if (rc.Action == Lowercase || rc.Action == Uppercase || rc.Action == KeepEqual || rc.Action == DropEqual) && !model.LabelName(rc.TargetLabel).IsValid() { return fmt.Errorf("%q is invalid 'target_label' for %s action", rc.TargetLabel, rc.Action) } @@ -186,6 +190,8 @@ func (rc *Config) Validate() error { if rc.Action == LabelMap && !relabelTarget.MatchString(rc.Replacement) { return fmt.Errorf("%q is invalid 'replacement' for %s action", rc.Replacement, rc.Action) } + // TODO: add support for different validation schemes. + //nolint:staticcheck if rc.Action == HashMod && !model.LabelName(rc.TargetLabel).IsValid() { return fmt.Errorf("%q is invalid 'target_label' for %s action", rc.TargetLabel, rc.Action) } @@ -261,6 +267,8 @@ func doRelabel(cfg *Config, lb LabelBuilder) (keep bool) { break } target := model.LabelName(cfg.Regex.ExpandString([]byte{}, cfg.TargetLabel, val, indexes)) + // TODO: add support for different validation schemes. + //nolint:staticcheck if !target.IsValid() { break } diff --git a/internal/component/loki/process/metric/metricvec.go b/internal/component/loki/process/metric/metricvec.go index 9069bd555da..23e00e9fc7f 100644 --- a/internal/component/loki/process/metric/metricvec.go +++ b/internal/component/loki/process/metric/metricvec.go @@ -67,6 +67,8 @@ func cleanLabels(set model.LabelSet) model.LabelSet { for k, v := range set { // Performing the same label validity check the prometheus go client library does. // https://github.com/prometheus/client_golang/blob/618194de6ad3db637313666104533639011b470d/prometheus/labels.go#L85 + // TODO: add support for different validation schemes. + //nolint:staticcheck if !k.IsValid() || strings.HasPrefix(string(k), "__") { continue } diff --git a/internal/component/loki/process/stages/eventlogmessage.go b/internal/component/loki/process/stages/eventlogmessage.go index bd4cbd0bf77..baf039ac616 100644 --- a/internal/component/loki/process/stages/eventlogmessage.go +++ b/internal/component/loki/process/stages/eventlogmessage.go @@ -20,6 +20,8 @@ type EventLogMessageConfig struct { } func (e *EventLogMessageConfig) Validate() error { + // TODO: add support for different validation schemes. + //nolint:staticcheck if !model.LabelName(e.Source).IsValidLegacy() { return fmt.Errorf(ErrInvalidLabelName, e.Source) } @@ -82,6 +84,8 @@ func (m *eventLogMessageStage) processEntry(extracted map[string]interface{}, ke continue } mkey := parts[0] + // TODO: add support for different validation schemes. + //nolint:staticcheck if !model.LabelName(mkey).IsValidLegacy() { if m.cfg.DropInvalidLabels { if Debug { diff --git a/internal/component/loki/process/stages/labels.go b/internal/component/loki/process/stages/labels.go index 4764017184f..6ee540ccae1 100644 --- a/internal/component/loki/process/stages/labels.go +++ b/internal/component/loki/process/stages/labels.go @@ -30,6 +30,8 @@ func validateLabelsConfig(c LabelsConfig) (map[string]string, error) { return nil, errors.New(ErrEmptyLabelStageConfig) } for labelName, labelSrc := range c.Values { + // TODO: add support for different validation schemes. + //nolint:staticcheck if !model.LabelName(labelName).IsValid() { return nil, fmt.Errorf(ErrInvalidLabelName, labelName) } diff --git a/internal/component/loki/process/stages/regex.go b/internal/component/loki/process/stages/regex.go index 0c74346a2a9..3164b563619 100644 --- a/internal/component/loki/process/stages/regex.go +++ b/internal/component/loki/process/stages/regex.go @@ -123,6 +123,8 @@ func (r *regexStage) Process(labels model.LabelSet, extracted map[string]interfa labelName := model.LabelName(name) labelValue := model.LabelValue(match[i]) + // TODO: add support for different validation schemes. + //nolint:staticcheck if !labelName.IsValid() { if Debug { level.Debug(r.logger).Log("msg", "invalid label name from regex capture group", "labelName", labelName) diff --git a/internal/component/loki/process/stages/static_labels.go b/internal/component/loki/process/stages/static_labels.go index d3f372844af..75231263645 100644 --- a/internal/component/loki/process/stages/static_labels.go +++ b/internal/component/loki/process/stages/static_labels.go @@ -37,6 +37,8 @@ func validateLabelStaticConfig(c StaticLabelsConfig) error { return ErrEmptyStaticLabelStageConfig } for labelName := range c.Values { + // TODO: add support for different validation schemes. + //nolint:staticcheck if !model.LabelName(labelName).IsValid() { return fmt.Errorf(ErrInvalidLabelName, labelName) } diff --git a/internal/component/loki/process/stages/windowsevent.go b/internal/component/loki/process/stages/windowsevent.go index 57ff96e045a..a2e5b352c49 100644 --- a/internal/component/loki/process/stages/windowsevent.go +++ b/internal/component/loki/process/stages/windowsevent.go @@ -22,6 +22,8 @@ type WindowsEventConfig struct { } func (e *WindowsEventConfig) Validate() error { + // TODO: add support for different validation schemes. + //nolint:staticcheck if !model.LabelName(e.Source).IsValid() { return fmt.Errorf(ErrInvalidLabelName, e.Source) } @@ -165,6 +167,8 @@ func (w *WindowsEventStage) processEntry(extracted map[string]interface{}, key s func (w *WindowsEventStage) sanitizeKey(ekey string, extracted map[string]interface{}) (string, error) { k := w.keyReplacer.Replace(ekey) + // TODO: add support for different validation schemes. + //nolint:staticcheck if !model.LabelName(k).IsValid() { if w.cfg.DropInvalidLabels { return "", fmt.Errorf("invalid label parsed from message, key: %s", k) diff --git a/internal/component/loki/source/aws_firehose/internal/handler.go b/internal/component/loki/source/aws_firehose/internal/handler.go index e43e4ee67bd..de2c2c5997b 100644 --- a/internal/component/loki/source/aws_firehose/internal/handler.go +++ b/internal/component/loki/source/aws_firehose/internal/handler.go @@ -194,6 +194,8 @@ func (h *Handler) postProcessLabels(lbs labels.Labels) model.LabelSet { } // ignore invalid labels + // TODO: add support for different validation schemes. + //nolint:staticcheck if !model.LabelName(lbl.Name).IsValidLegacy() || !model.LabelValue(lbl.Value).IsValid() { continue } @@ -319,12 +321,16 @@ func (h *Handler) tryToGetStaticLabelsFromRequest(req *http.Request, tenantID st // construct model.LabelName from the header value, if the raw data is not valid label name, try to fix it and use rawLabelName := strings.TrimPrefix(name, commonAttributesLabelPrefix) labelName := model.LabelName(rawLabelName) + // TODO: add support for different validation schemes. + //nolint:staticcheck if !labelName.IsValidLegacy() { level.Debug(h.logger).Log(fmt.Sprintf("label name is not valid, trying to fix: %s", rawLabelName)) // try to sanitize label name sanitizedLabelName := yacepromutil.PromString(rawLabelName) labelName = model.LabelName(sanitizedLabelName) + // TODO: add support for different validation schemes. + //nolint:staticcheck if !labelName.IsValidLegacy() { // This situation can happen when: // - the header with label information is a valid JSON diff --git a/internal/component/loki/source/azure_event_hubs/internal/parser/parser.go b/internal/component/loki/source/azure_event_hubs/internal/parser/parser.go index 8b3ec7f6060..81390740e62 100644 --- a/internal/component/loki/source/azure_event_hubs/internal/parser/parser.go +++ b/internal/component/loki/source/azure_event_hubs/internal/parser/parser.go @@ -222,6 +222,8 @@ func (e *AzureEventHubsTargetMessageParser) getLabels(logRecord *azureMonitorRes continue } // ignore invalid labels + // TODO: add support for different validation schemes. + //nolint:staticcheck if !model.LabelName(lbl.Name).IsValid() || !model.LabelValue(lbl.Value).IsValid() { continue } diff --git a/internal/component/loki/source/gcplog/internal/gcplogtarget/formatter.go b/internal/component/loki/source/gcplog/internal/gcplogtarget/formatter.go index 36aa71ee6b1..5a939234c11 100644 --- a/internal/component/loki/source/gcplog/internal/gcplogtarget/formatter.go +++ b/internal/component/loki/source/gcplog/internal/gcplogtarget/formatter.go @@ -89,6 +89,8 @@ func parseGCPLogsEntry(data []byte, other model.LabelSet, otherInternal labels.L continue } // ignore invalid labels + // TODO: add support for different validation schemes. + //nolint:staticcheck if !model.LabelName(lbl.Name).IsValid() || !model.LabelValue(lbl.Value).IsValid() { continue }