---
title: "Receiver"
description: "receive log/trace events from a coupled forwarder; in read-only mode\
  \ emit metrics only, in read-write mode also receive and optionally compact events\
  \ before they ship to output"
source: "https://github.com/log-10x/modules/tree/main/pipelines/receiver/app.yaml"
icon: "material/play-circle-outline"

---
The Receiver runs alongside your log forwarder and acts on events as they flow through. The rate regulator finds which patterns are over the byte cap set for their service, and an action decides what happens to that excess: pass, sample, compact, tier\_down, offload, or drop. An AI agent picks the action per service through the log10x MCP (the `configure_engine` tool); the engine enforces it, and the decision travels as a config change through the GitOps repo.

The actions:

- **pass**: forward unchanged.
- **sample**: forward a rate-limited share against a per-pattern budget.
- **compact**: replace repeated lines with an encoded form the destination expands (lossless only where the destination supports it: Splunk, self-hosted Elasticsearch; a no-op elsewhere). Requires the expand plugin installed in [Splunk](compact/splunk.md) or [Elasticsearch](compact/elasticsearch.md). On ClickHouse the lever is offload, not compact: the per-pattern cap sends overflow to the customer's own bucket.
- **tier\_down**: tag the pattern for a cheaper storage tier the destination enforces (Datadog Flex, CloudWatch IA, Azure Monitor Basic/Auxiliary).
- **offload**: route the pattern to customer-owned object storage (S3, GCS, Azure Blob) instead of the destination.
- **drop**: stop forwarding the pattern.

The Receiver also runs in **read-only** mode (observation): receive events from the forwarder, run aggregators, and publish pattern-identity metrics with the event stream untouched. Use it for visibility into per-pattern volume and cost before any action is applied. **Read-write** mode (default) applies the actions above.

Log10x is normally driven by an AI agent (Claude, or a model the customer brings) through the log10x MCP server, which installs, configures, and queries via MCP tools. The agent's `configure_engine` tool turns a target percent or budget into a per-pattern action set, carried as a cap/action CSV that lands in the config repo through a GitOps PR and hot-reloads on the next pull. The hand-authored cap YAML and CSV shown below are the same representation an agent produces.

<h3 id="compact">Compact action</h3>

The compact action replaces repeated lines with an encoded form the destination expands at query time, operating on stable pattern identity. It is lossless only on Splunk and self-hosted Elasticsearch, and a no-op on managed/SaaS destinations (there the levers are offload or drop). For SIEM-side plugin install, see the [Splunk](compact/splunk.md) and [Elasticsearch](compact/elasticsearch.md) pages.

## :material-clipboard-play-outline: Setup Guide

Follow the steps below. Steps that require customization link to the relevant [Config Files](#config-files) section where you can edit on github.dev or locally.

???+ tenx-bootstrap "Step 1: Install"

    Install the engine on the same machine as your log forwarder. The script installs the [`Runtime`](https://doc.log10x.com/engine/flavors/#runtime) native binary; the DEB and RPM packages carry either the [`Compiler`](https://doc.log10x.com/engine/flavors/#compiler) or [`Runtime (JVM)`](https://doc.log10x.com/engine/flavors/#runtime-jvm). Windows has no native build, so the PowerShell script installs `Runtime (JVM)`:
    
    - :simple-linux: [Single line script](https://doc.log10x.com/install/singleline/ "curl https://raw.githubusercontent.com/log-10x/pipeline-releases/main/install.sh | bash -s -- --flavor runtime"){data-copy="curl https://raw.githubusercontent.com/log-10x/pipeline-releases/main/install.sh | bash -s -- --flavor runtime"} | [DEB](https://doc.log10x.com/install/linux/#ubuntu-debian) | [RPM](https://doc.log10x.com/install/linux/#red-hat-centos-7)
    - :simple-macos: [Homebrew](https://doc.log10x.com/install/macos/ "brew install log-10x/tap/log10x"){data-copy="brew install log-10x/tap/log10x"}
    - :material-microsoft-windows: [PowerShell script](https://doc.log10x.com/install/win/)
    - :simple-docker: [Docker image](https://doc.log10x.com/install/docker/)

??? tenx-config "Step 2: Set Environment Variables"

    Set these environment variables before running. See [path configuration](https://doc.log10x.com/install/paths/) for details.
    
    | Variable | Description |
    |----------|-------------|
    | `TENX_MODULES` | Path to your [modules directory](https://doc.log10x.com/install/paths/#modules) |
    | `TENX_CONFIG` | Path to your [configuration directory](https://doc.log10x.com/install/paths/#config) |
    | `TENX_LICENSE_KEY` | Your Log10x license JWT ([licensing](https://doc.log10x.com/manage/license/)); unset, the engine runs on the built-in evaluation license |
    
    ```bash
    export TENX_MODULES=/etc/tenx/modules
    export TENX_CONFIG=/etc/tenx/config
    export TENX_LICENSE_KEY="$(cat license.jwt)"
    ```
    
    For production deployments, mount the license as a file and set `TENX_LICENSE_FILE` instead. See [deploy](https://doc.log10x.com/apps/receiver/deploy/).

??? tenx-forwarderinputs "Step 3: Configure Your Forwarder"

    === ":simple-fluentd: Fluentd"
    
        **Step 1**: Include the 10x receiver configuration:
    
        ```toml title="my-fluentd.conf"
        # Nix/OSX
        @include "#{ENV['TENX_MODULES']}/pipelines/run/modules/input/forwarder/fluentd/conf/tenx-receive-unix.conf"
    
        # Windows
        # @include "#{ENV['TENX_MODULES']}/pipelines/run/modules/input/forwarder/fluentd/conf/tenx-receive-stdio.conf"
        ```
    
        **Step 2**: Apply the `@TENX` label to route events through the receiver:
    
        === "Route Start"
    
            Process events directly after reading from input (simplest setup):
    
            ```xml title="my-fluentd.conf"
            <source>
              @type tail
              path /path/to/file
              tag my_tag
              @label @TENX
            </source>
            ```
    
            Received events are marked with `@TENX-PROCESSED`. To re-apply `@ROOT`:
    
            ```toml
            @include "#{ENV['TENX_MODULES']}/pipelines/run/modules/forwarder/fluentd/conf/auxiliary/root.conf"
            ```
    
        === "Route End"
    
            Process events after all filters have been applied:
    
            ```xml title="my-fluentd.conf"
            <source>
              @type tail
              tag my_logs
            </source>
    
            <filter my_logs>
              @type filter1
            </filter>
    
            <filter my_logs>
              @type filter2
            </filter>
    
            <match my_logs>
              @type relabel
              @label @TENX
            </match>
    
            <label @TENX-PROCESSED>
              <match my_logs>
                @type stdout
              </match>
            </label>
            ```
    
        === "Mid-Route"
    
            Insert the receiver between specific plugins:
    
            ```xml title="my-fluentd.conf"
            <source>
              @type tail
              tag my_logs
            </source>
    
            <filter my_logs>
              @type filter1
            </filter>
    
            <match my_logs>
              @type relabel
              @label @TENX
            </match>
    
            <label @TENX-PROCESSED>
              <filter my_logs>
                @type filter2
              </filter>
    
              <match my_logs>
                @type stdout
              </match>
            </label>
            ```
    
        !!! note
            For large files or volume surges, set [XMX](https://www.baeldung.com/jvm-parameters#explicit-heap-memory---xms-and-xmx-options) or use [read_bytes_limit_per_second](https://docs.fluentd.org/input/tail#read_bytes_limit_per_second).
    
    === ":simple-fluentbit: Fluent-bit"
    
        !!! note "Sidecar topology"
            Fluent Bit and Log10x run as **peer processes** that exchange events over the Fluent Forward protocol in both directions. No Lua filter, no `io.popen()` subprocess. The bypass (preventing the ingest filters from re-firing and the ingest `[OUTPUT] forward` from looping events) is **tag-prefix namespacing**. Fluent Bit has no labels like Fluentd, so the egress `[INPUT] forward` uses `Tag_Prefix tenx.` to put returning events on a tag namespace that the ingest pipeline doesn't match.
    
        **Step 1**: Copy the Fluent Bit sidecar recipe:
    
        ```bash
        cp $TENX_MODULES/pipelines/run/modules/input/forwarder/fluentbit/conf/tenx-sidecar.conf /etc/fluent-bit/
        ```
    
        **Step 2**: Update sources, filters and destination outputs to match your environment. The recipe wires the ingest `[OUTPUT] forward` to log10x:24224 (matching your source tags) and the egress `[INPUT] forward` listening on :24225 with `Tag_Prefix tenx.`, your destinations match `tenx.*`:
    
        ```toml title="tenx-sidecar.conf"
        [SERVICE]
            Flush        1
            Log_Level    info
    
        # Replace with your real sources, tag with anything NOT starting
        # with `tenx.` so the bypass works.
        [INPUT]
            Name         tail
            Path         /var/log/app.log
            Tag          app.logs
            Parser       json
    
        # Enrichment filters Match the user-tag scheme only (NOT `*`).
        [FILTER]
            Name         modify
            Match        app.*
            Add          cluster ${CLUSTER_NAME}
    
        # Ingest: hand off to the Log10x sidecar.
        [OUTPUT]
            Name         forward
            Match        app.*
            Host         127.0.0.1
            Port         24224
            Retry_Limit  False
    
        # Egress: receive processed events back from Log10x. `Tag_Prefix
        # tenx.` is the bypass, `app.logs` returns as `tenx.app.logs`,
        # which filters and the ingest forward output don't match.
        [INPUT]
            Name         forward
            Listen       0.0.0.0
            Port         24225
            Tag_Prefix   tenx.
    
        # Destinations Match `tenx.*`, replace stdout with your real
        # destination (es, splunk, kafka, s3, …).
        [OUTPUT]
            Name         stdout
            Match        tenx.*
            Format       json_lines
        ```
    
        **Step 3**: Start Log10x first so the Forward port is listening, then Fluent Bit:
    
        ```bash
        tenx run @run/input/forwarder/fluentbit @apps/receiver
        fluent-bit -c /etc/fluent-bit/tenx-sidecar.conf
        ```
    
        Two structurally separate stages prevent loops and double-enrichment: ingest filters/output match `app.*` only, destination outputs match `tenx.*` only. The original tag survives the round trip as the suffix of the prefixed tag (`tenx.app.logs`), so destinations that route on the suffix behave the same as without Log10x in the path.
    
    === ":simple-beats: Filebeat"
    
        **Step 1**: Add the 10x input for receiving filtered events:
    
        ```yaml title="my-filebeat.yml"
        filebeat.config.inputs:
          enabled: true
          # Nix/OSX
          path: ${TENX_MODULES}/pipelines/run/modules/input/forwarder/filebeat/conf/tenxNix.yml
          # Windows
          # path: ${TENX_MODULES}/pipelines/run/modules/input/forwarder/filebeat/conf/tenxWin.yml
        ```
    
        **Step 2**: Add the receiver processor:
    
        ```yaml title="my-filebeat.yml"
        filebeat.inputs:
          - type: filestream
            id: my-filestream-id
            paths:
              - /path/to/log
    
            processors:
              - script:
                  lang: javascript
                  file: ${TENX_MODULES}/pipelines/run/modules/input/forwarder/filebeat/script/tenx-receive.js
        ```
    
    === ":simple-logstash: Logstash"
    
        Set up [multiple pipelines](https://www.elastic.co/guide/en/logstash/current/multiple-pipelines.html) in `pipelines.yml`:
    
        ```yaml title="pipelines.yml"
        - pipeline.id: raw_input
          path.config: "/path/to/conf/upstream.conf"
        - pipeline.id: tenx_pipeline
          path.config: "${TENX_CONFIG}/pipelines/run/input/forwarder/logstash/receive/tenx-pipe-out.conf"
        - pipeline.id: tenx_unix_pipeline
          path.config: "${TENX_CONFIG}/pipelines/run/input/forwarder/logstash/receive/tenx-pipe-in-unix.conf"
        - pipeline.id: processed
          path.config: "/path/to/conf/downstream.conf"
        ```
    
        ```ruby title="upstream.conf"
        input {
          file { path => /path/to/log }
        }
        output {
          pipeline { send_to => tenx_input_pipeline }
        }
        ```
    
        ```ruby title="downstream.conf"
        input {
          pipeline { address => user_output_pipeline }
        }
        output {
          stdout { codec => json }
        }
        ```
    
    === ":simple-opentelemetry: OTel Collector"
    
        !!! note "Distribution"
            Both directions use OTLP/gRPC (Collector → Log10x and Log10x → Collector), so the core `otelcol` distribution is sufficient. No `otelcol-contrib` build is required. Tested against `otelcol` v0.151.0+.
    
        **Step 1**: Copy the Collector sidecar recipe:
    
        ```bash
        cp $TENX_MODULES/pipelines/run/modules/input/forwarder/otel-collector/conf/tenx-sidecar.yaml /etc/otelcol/
        ```
    
        **Step 2**: Update receivers and destination exporters to match your environment. The `logs/to-tenx` pipeline carries your receivers and enrichment processors through the `otlp/tenx` exporter; the `logs/from-tenx` pipeline carries returning events directly to your destination exporters:
    
        ```yaml title="tenx-sidecar.yaml"
        receivers:
          # Replace with your real Collector receivers
          filelog:
            include:
              - /var/log/**/*.log
            start_at: end
    
        exporters:
          # Replace `debug` with your real destinations, elasticsearch, splunk_hec, kafka, awss3, etc.
          debug:
            verbosity: detailed
    
        service:
          pipelines:
            logs/to-tenx:
              receivers: [filelog]
              processors: [batch]
              exporters: [otlp/tenx]
            logs/from-tenx:
              receivers: [otlp/tenx]
              exporters: [debug]
        ```
    
        **Step 3**: Start Log10x first so the OTLP/gRPC port is listening, then the Collector:
    
        ```bash
        tenx run @run/input/forwarder/otel-collector @apps/receiver
        otelcol --config=/etc/otelcol/tenx-sidecar.yaml
        ```
    
        Keep the egress pipeline (`logs/from-tenx`) processor-free, it carries returning events directly to your destination exporters so enrichment runs exactly once.
    
    === ":simple-vector: Vector"
    
        !!! note "Requires Vector v0.34+"
            For the `fluent` source and `socket` sink with `mode: unix`. Vector communicates with the 10x sidecar over Unix domain sockets, newline-delimited text outbound, Fluent Forward inbound.
    
        **Step 1**: Copy the Vector configuration:
    
        ```bash
        cp $TENX_MODULES/pipelines/run/modules/input/forwarder/vector/receive/tenxNix.yaml /etc/vector/
        ```
    
        **Step 2**: Update sources and final sinks to match your environment:
    
        ```yaml title="tenxNix.yaml"
        sources:
          # Replace with your real Vector sources
          app_logs:
            type: file
            include:
              - /var/log/**/*.log
            read_from: end
    
        sinks:
          # Replace `console` with your real destination(s), elasticsearch, splunk_hec, kafka, s3, etc.
          final:
            type: console
            inputs:
              - tenx_out
            encoding:
              codec: json
        ```
    
        **Step 3**: Start Log10x first, then Vector:
    
        ```bash
        tenx run @run/input/forwarder/vector/receive @apps/receiver
        vector --config /etc/vector/tenxNix.yaml
        ```
    
        Two disconnected component chains in Vector's graph prevent loops: `app_logs → tenx_in` (events out to 10x) and `tenx_out → final` (received events in from 10x) never wire together.
    
    === ":simple-splunk: Splunk UF"
    
        !!! note "File Relay Pattern"
            This integration uses a **file relay pattern**: Fluent Bit + 10x reads from Folder A, receives events, and writes to Folder B. Splunk UF monitors Folder B and handles forwarding to Splunk indexers.
    
        **Step 1**: Set up folder paths:
    
        ```bash
        export FOLDER_A=/var/log/app        # App writes here
        export FOLDER_B=/var/log/processed  # UF reads from here
        mkdir -p ${FOLDER_B}
        ```
    
        **Step 2**: Configure Fluent Bit to read from Folder A, hand off to log10x, and write the processed events back out to Folder B. The egress `[INPUT] forward Tag_Prefix tenx.` is the bypass, only events that have round-tripped through log10x (and thus carry the `tenx.` prefix) hit the `file` output.
    
        ```toml title="fluent-bit-splunk.conf"
        [SERVICE]
            Flush        1
            Log_Level    info
    
        [INPUT]
            Name         tail
            Path         ${FOLDER_A}/*.log
            Tag          app.logs
    
        # Ingest: hand off to the Log10x sidecar.
        [OUTPUT]
            Name         forward
            Match        app.*
            Host         127.0.0.1
            Port         24224
            Retry_Limit  False
    
        # Egress: receive processed events back from Log10x with Tag_Prefix
        # bypass. `app.logs` returns as `tenx.app.logs`.
        [INPUT]
            Name         forward
            Listen       0.0.0.0
            Port         24225
            Tag_Prefix   tenx.
    
        # Write processed events (those with the tenx. prefix only) to Folder B.
        [OUTPUT]
            Name         file
            Match        tenx.*
            Path         ${FOLDER_B}
            Format       plain
        ```
    
        Start log10x first, then fluent-bit: `tenx run @run/input/forwarder/fluentbit @apps/receiver && fluent-bit -c fluent-bit-splunk.conf`.
    
        **Step 3**: Configure Splunk UF to monitor Folder B:
    
        ```ini title="inputs.conf"
        [monitor://${FOLDER_B}]
        index = main
        sourcetype = app_logs
        ```
    
        This keeps Splunk UF as the forwarder (handling buffering, retries, timeouts) while 10x receives events inline. See the [Splunk UF module](https://doc.log10x.com/run/input/forwarder/splunkUF/) for details.
    
    === ":simple-datadog: Datadog Agent"
    
        !!! note "File Relay Pattern"
            This integration uses a **file relay pattern**: Fluent Bit + 10x reads from Folder A, receives events, and writes to Folder B. Datadog Agent monitors Folder B and handles forwarding to Datadog.
    
        **Step 1**: Set up folder paths:
    
        ```bash
        export FOLDER_A=/var/log/app        # App writes here
        export FOLDER_B=/var/log/processed  # DD Agent reads from here
        mkdir -p ${FOLDER_B}
        ```
    
        **Step 2**: Configure Fluent Bit to read from Folder A, hand off to log10x, and write the processed events back out to Folder B. The egress `[INPUT] forward Tag_Prefix tenx.` is the bypass, only events that have round-tripped through log10x (and thus carry the `tenx.` prefix) hit the `file` output.
    
        ```toml title="fluent-bit-datadog.conf"
        [SERVICE]
            Flush        1
            Log_Level    info
    
        [INPUT]
            Name         tail
            Path         ${FOLDER_A}/*.log
            Tag          app.logs
    
        # Ingest: hand off to the Log10x sidecar.
        [OUTPUT]
            Name         forward
            Match        app.*
            Host         127.0.0.1
            Port         24224
            Retry_Limit  False
    
        # Egress: receive processed events back from Log10x with Tag_Prefix
        # bypass. `app.logs` returns as `tenx.app.logs`.
        [INPUT]
            Name         forward
            Listen       0.0.0.0
            Port         24225
            Tag_Prefix   tenx.
    
        # Write processed events (those with the tenx. prefix only) to Folder B.
        [OUTPUT]
            Name         file
            Match        tenx.*
            Path         ${FOLDER_B}
            Format       plain
        ```
    
        Start log10x first, then fluent-bit: `tenx run @run/input/forwarder/fluentbit @apps/receiver && fluent-bit -c fluent-bit-datadog.conf`.
    
        **Step 3**: Configure Datadog Agent to monitor Folder B:
    
        ```yaml title="conf.d/tenx.d/conf.yaml"
        logs:
          - type: file
            path: ${FOLDER_B}/*.log
            service: myapp
            source: myapp
        ```
    
        This keeps Datadog Agent as the forwarder (handling buffering, retries, metadata enrichment) while 10x receives events inline. See the [Datadog Agent module](https://doc.log10x.com/run/input/forwarder/datadogAgent/) for details.
    
    === ":material-test-tube: Test (no forwarder)"
    
        Test the receiver without setting up a forwarder using the [Dev CLI](https://doc.log10x.com/apps/dev/).
    
        The dev app uses the [file input module](https://doc.log10x.com/run/input/file/) to read sample log files and writes output to a file, allowing you to verify receiving behavior before integrating with your forwarder.
    
        **No forwarder configuration required** - provide sample log files to the file input module and skip to [Step 9](#__tabbed_6_5) to run the test.

??? tenx-symbols "Step 4: Symbol Library (optional)"

    Load custom [Symbol library](https://doc.log10x.com/compile/) files to transform events into typed TenXObjects.
    
    Place symbol files in the `symbolPaths` folders specified in the [symbol config](#symbols).

<span id="pair-with-retriever"></span>
??? tenx-integration "Step 5: Pair with Retriever (optional)"

    Archive all events to S3 before receiving for full retention alongside cost control. The receiver filters what reaches your SIEM; filtered events remain in S3, queryable via [Retriever](https://doc.log10x.com/apps/retriever/) for incident investigation, compliance, and auditing.
    
    Configure your forwarder to duplicate the event stream, one copy to S3 (all events), one through the receiver (filtered events to SIEM):
    
    === ":simple-fluentbit: Fluent-bit"
    
        Use the `rewrite_tag` filter to duplicate events onto an `s3.*` tag before they hit the ingest `[OUTPUT] forward` to the 10x sidecar:
    
        ```ini
        [FILTER]
            Name         rewrite_tag
            Match        app.*
            Rule         $log .+ s3.$TAG true
    
        # S3 archive: gets every event (`app.*` originals AND their `s3.app.*` copies
        # adjust the rule above if you want only the copies).
        [OUTPUT]
            Name         s3
            Match        s3.*
            bucket       your-archive-bucket
            region       us-east-1
            total_file_size 50M
            upload_timeout 60s
    
        # Ingest: hand off to the Log10x sidecar (processed path).
        [OUTPUT]
            Name         forward
            Match        app.*
            Host         127.0.0.1
            Port         24224
            Retry_Limit  False
        ```
    
        Events tagged `s3.*` go to S3 (every event for full retention); events tagged `app.*` continue through the sidecar (processed). The egress `[INPUT] forward Tag_Prefix tenx.` and destinations matching `tenx.*` are unchanged from the main recipe.
    
    === ":simple-fluentd: Fluentd"
    
        Use the `copy` output plugin to send events to both S3 and the 10x sidecar:
    
        ```xml
        <match app.**>
          @type copy
          <store>
            @type s3
            s3_bucket your-archive-bucket
            s3_region us-east-1
            path logs/
            <buffer time>
              timekey 3600
              timekey_wait 10m
            </buffer>
          </store>
          <store>
            @type forward
            # → 10x sidecar
          </store>
        </match>
        ```
    
    === ":simple-opentelemetry: OTel Collector"
    
        Fan out to the Retriever destination from the **ingest** pipeline (before 10x receives), so the archive sees full-volume events. The destinations that consume the **egress** pipeline (`logs/from-tenx`) get the receiver-processed stream:
    
        ```yaml
        exporters:
          awss3:
            s3uploader:
              region: us-east-1
              s3_bucket: your-archive-bucket
          # → 10x sidecar processes and receives, results land on logs/from-tenx
          otlp/tenx:
            endpoint: 127.0.0.1:4317
            tls:
              insecure: true
    
        service:
          pipelines:
            logs/to-tenx:
              receivers: [filelog]
              processors: [batch]
              # Full-volume fanout: archive + 10x sidecar
              exporters: [awss3, otlp/tenx]
            logs/from-tenx:
              receivers: [otlp/tenx]
              exporters: [otlp/siem]   # receiver-processed stream
        ```
    
    === ":simple-logstash: Logstash"
    
        Use multiple outputs. Logstash natively sends to all configured outputs:
    
        ```ruby
        output {
          s3 {
            bucket => "your-archive-bucket"
            region => "us-east-1"
            size_file => 52428800
            time_file => 60
          }
          pipe {
            command => "/opt/tenx-edge/bin/tenx run ..."
            # → 10x sidecar processes and receives these events
          }
        }
        ```
    
    === ":simple-splunk: Splunk UF"
    
        Splunk UF uses a [file relay pattern](https://doc.log10x.com/run/input/forwarder/splunkUF/). Fluent Bit + 10x reads from Folder A, processes events, and writes to Folder B. Splunk UF monitors Folder B and forwards to indexers.
    
        Add the S3 output to the Fluent Bit configuration alongside the file output:
    
        ```ini
        [FILTER]
            Name         rewrite_tag
            Match        app.*
            Rule         $log .+ s3.$TAG true
    
        [OUTPUT]
            Name         s3
            Match        s3.*
            bucket       your-archive-bucket
            region       us-east-1
            total_file_size 50M
            upload_timeout 60s
    
        # Received events written to Folder B for Splunk UF
        [OUTPUT]
            Name         file
            Match        *
            Path         ${FOLDER_B}
            Format       plain
        ```
    
        Splunk UF continues to monitor Folder B via `inputs.conf`. No changes to the UF configuration.
    
    === ":simple-datadog: Datadog Agent"
    
        Datadog Agent uses a [file relay pattern](https://doc.log10x.com/run/input/forwarder/datadogAgent/). Fluent Bit + 10x reads from Folder A, processes events, and writes to Folder B. The Datadog Agent monitors Folder B and forwards to Datadog.
    
        Add the S3 output to the Fluent Bit configuration alongside the file output:
    
        ```ini
        [FILTER]
            Name         rewrite_tag
            Match        app.*
            Rule         $log .+ s3.$TAG true
    
        [OUTPUT]
            Name         s3
            Match        s3.*
            bucket       your-archive-bucket
            region       us-east-1
            total_file_size 50M
            upload_timeout 60s
    
        # Received events written to Folder B for Datadog Agent
        [OUTPUT]
            Name         file
            Match        *
            Path         ${FOLDER_B}
            Format       plain
        ```
    
        The Datadog Agent continues to monitor Folder B via `conf.d`. No changes to the Agent configuration.

<span id="receivers2"></span>
??? tenx-receivers "Step 6: Configure Receivers (optional)"

    Configure [rate receivers](https://doc.log10x.com/run/receive/rate/) for common scenarios. Edit these settings in your receiver [config.yaml](#receivers).
    
    === ":material-percent: Per-Pattern Cap"
    
        Set a 10 MB budget for any single log pattern per container per window. No cap is set by default, so this block is what turns the regulator on. The [Level Classifier](https://doc.log10x.com/run/initialize/level/) enriches events with severity, so the floor keeps ERROR events flowing even when a pattern is over its cap.
    
        ```yaml
        rateReceiver:
          fieldNames:
            - symbolMessage              # the pattern identity
          containerField: container      # scopes the cap to one service
          absoluteCap: 10485760          # 10 MB per pattern per container per window
          minSharePercent: 0.05          # leave patterns under 5% of their container alone
          severityFloors:
            - INFO=0.1
            - WARN=0.3
            - ERROR=0.5
        ```
    
        The floor beats the cap: a pattern over 10 MB still keeps Error 50%, Warn 30%, Info 10%. At or below the cap every event passes through untouched. Whatever the floor does not keep is dropped, unless an action file gives that container a different action.
    
        The cap is therefore not a hard bound. The floor check runs after the cap check, so above the cap a flood still passes at the floor rate, and the worst case for one pattern in one container per window is the cap plus the floor share of everything above it.
    
    === ":material-kubernetes: Multi-App Kubernetes"
    
        Cap each pattern per app, scoped by container so all of an app's replicas share one cap. The [container name](https://doc.log10x.com/run/initialize/k8s/) stays constant across pods.
    
        ```yaml
        rateReceiver:
          fieldNames:
            - symbolMessage
          containerField: container      # same name across all pod replicas
          absoluteCap: 10485760          # 10 MB per pattern per container per window
        ```
    
        Each (pattern, container) pair gets its own 10 MB cap. Scaling from 1 to 10 pods does not bypass it because the container name is stable across replicas. To give one app a different cap, list it in a cap file, which wins over `absoluteCap` for that container.
    
        The severity floors apply here too, so the cap is where the regulator engages rather than a bound on what a pattern can spend.
    
    === ":material-file-document-edit-outline: Mute File (GitOps)"
    
        Layer a declarative mute file over the rate receiver, pulled from a git repo. Entries are keyed by the same `fieldNames` values the rate receiver uses (e.g. `symbolMessage`), so mutes target the same patterns a Reporter attributes cost to. A listed, active pattern is decided by its entry; every other pattern stays on the cap. Each entry has an explicit sample rate and epoch expiry, so mutes are diff-reviewed, audited, and self-healing.
    
        ```yaml
        rateReceiver:
          fieldNames:
            - symbolMessage
          lookup:
            file: /etc/log10x/config/data/sample/mutes/mutes.csv
            retain: 300000                 # mark stale after 5 minutes
        ```
    
        The first line of `mutes.csv` is a header row (`fieldSet,value`) — the lookup reads line 1 as column names, so a file without it silently loses its first entry. Entries below it look like `Error_syncing_pod,0.10:1744848000:pod error spam OPS-4821`. See [protection list](https://doc.log10x.com/run/receive/rate/#protection-list) for the format and workflow.

??? tenx-initializers "Step 7: Enrichments (optional)"

    Enrichments add context (severity, HTTP codes) for richer aggregation and filtering.
    
    **To enable:**
    
    1. In the [app config](#mainConfig), uncomment the desired enrichment `include` entries
    2. In the [initializers](#initializers) section below, configure each enrichment's settings

??? tenx-metricoutputs "Step 8: Metrics Output (optional)"

    Publish [aggregated](https://doc.log10x.com/run/aggregate/) metrics to time-series databases (Prometheus, Datadog).
    
    **To enable:**
    
    1. In the [app config](#mainConfig), uncomment the desired metric output `include` entry
    2. In the [metric outputs](#metricOutputs) section below, configure connection details

??? tenx-mainconfig "Step 9: Run"

    Start your forwarder with the updated configuration:
    
    === ":simple-fluentd: Fluentd"
    
        ```console
        $ fluentd -c my-fluentd.conf
        ```
    
    === ":simple-fluentbit: Fluent-bit"
    
        Start Log10x first so its Forward port is listening when Fluent Bit starts, then start Fluent Bit:
    
        ```console
        $ tenx run @run/input/forwarder/fluentbit @apps/receiver
        $ fluent-bit -c /etc/fluent-bit/tenx-sidecar.conf
        ```
    
    === ":simple-beats: Filebeat"
    
        ```console title="Nix/OSX"
        $ filebeat -c my-filebeat.yml -e 2>&1 | /opt/tenx-edge/bin/tenx run @run/input/forwarder/filebeat @apps/receiver
        ```
    
        ```console title="Windows"
        $ filebeat -c my-filebeat.yml -e 2>&1 | "c:\program files\tenx-edge\tenx" run @run/input/forwarder/filebeat @apps/receiver
        ```
    
    === ":simple-logstash: Logstash"
    
        ```console
        $ logstash -f my-logstash.conf
        ```
    
    === ":simple-opentelemetry: OTel Collector"
    
        Start Log10x first so its OTLP/gRPC port is listening when the Collector starts, then start the Collector:
    
        ```console
        $ tenx run @run/input/forwarder/otel-collector @apps/receiver
        $ otelcol --config=/etc/otelcol/tenx-sidecar.yaml
        ```
    
    === ":simple-splunk: Splunk UF"
    
        **Step 1**: Start Log10x first, then Fluent Bit:
    
        ```console
        $ tenx run @run/input/forwarder/fluentbit @apps/receiver
        $ fluent-bit -c fluent-bit-splunk.conf
        ```
    
        **Step 2**: Start (or restart) Splunk UF to pick up Folder B:
    
        ```console
        $ splunk restart
        ```
    
        Fluent Bit reads from Folder A, hands off to the Log10x sidecar, and writes processed events back out to Folder B. Splunk UF monitors Folder B and forwards to indexers.
    
    === ":simple-datadog: Datadog Agent"
    
        **Step 1**: Start Log10x first, then Fluent Bit:
    
        ```console
        $ tenx run @run/input/forwarder/fluentbit @apps/receiver
        $ fluent-bit -c fluent-bit-datadog.conf
        ```
    
        **Step 2**: Start (or restart) the Datadog Agent to pick up Folder B:
    
        ```console
        $ sudo systemctl restart datadog-agent
        ```
    
        Fluent Bit reads from Folder A, hands off to the Log10x sidecar, and writes processed events back out to Folder B. Datadog Agent monitors Folder B and forwards to Datadog.
    
    === ":material-test-tube: Test (no forwarder)"
    
        Use the [Dev CLI](https://doc.log10x.com/apps/dev/) to test event processing with sample log files.
    
        **Step 1**: Provide sample log files to the [file input module](https://doc.log10x.com/run/input/file/):
    
        ```console
        $ cp /path/to/sample.log $TENX_CONFIG/data/sample/input/
        ```
    
        **Step 2**: Run the dev app:
    
        ```console
        $ tenx run @apps/dev
        ```
    
        The dev app reads events from `data/sample/input/*.log` via the file input module, processes them through the receiving pipeline, and writes results to the configured [file output](https://doc.log10x.com/run/output/event/file/).
    
        **Verify output:**
    
        ```console
        $ wc -l $TENX_CONFIG/data/sample/output/encoded.log
        ```
    
        Compare input vs output line counts to verify event processing.

??? tenx-checklist "Step 10: Verify"

    Verify no errors appear in the [log file](https://doc.log10x.com/manage/logging/#log-file-location). For debugging techniques including enabling verbose logging, see [Engine Logging](https://doc.log10x.com/manage/logging/).
    
    **View results in the dashboard:**
    
    Once running, view your cost analytics in the [Receiver Dashboard](https://doc.log10x.com/roi-analytics/#edge-receiver).

??? tenx-delete "Step 11: Teardown"

    Nothing runs in the background. Uninstall removes only what was installed.
    
    === ":simple-macos: Homebrew"
    
        ```bash
        brew uninstall log10x
        ```
    
    === ":simple-linux: Linux"
    
        ```bash
        sudo rm -rf /opt/tenx-edge /etc/tenx /etc/profile.d/tenx-edge.sh
        ```
    
        If installed via DEB: `sudo apt-get remove tenx-edge`
        If installed via RPM: `sudo yum remove tenx-edge`
    
    === ":material-microsoft-windows: Windows"
    
        Uninstall from **Settings > Apps > Installed apps**.
    
    === ":simple-docker: Docker"
    
        ```bash
        docker rmi log10x/pipeline-10x:1.1.39
        ```

## :material-wrench-outline: Config Files

To configure the Receiver app, [:material-cog: Edit](https://doc.log10x.com/config/app/#main-config "Learn how to edit app and module configurations") these files:
??? tenx-mainconfig "Main Config"

    <a id="mainconfig"></a>
    ### Main Config {.hidden-heading}

    The main config file loads the Receiver app's required modules.

    Uncomment selected modules at: [receiver/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/apps/receiver/config.yaml "receiver/config.yaml"){target="\_blank"}.  
  
    <div class="edit-options">
        <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/apps/receiver/config.yaml" target="_blank" rel="noopener noreferrer">
            <span class="twemoji" style="margin-right: 0.3rem;">
                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                    <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                </svg>
            </span> Edit Online
        </a>
        <button class="md-button tenx-config.yaml0-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml0-dialog">
            <span style="margin-right: 0.3rem;">
                <span class="twemoji">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                    </svg>
                </span>
            </span>Edit Locally
        </button>
    </div>
    
    <dialog id="config-yaml0-dialog" class="md-dialog md-dialog--editor">
        <div class="editor-dialog-wrapper">
            <div class="editor-dialog-header">
                <span class="editor-dialog-title">Edit Receiver Config Locally</span>
                <div class="editor-header-actions">
                    <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                        <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                        <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                        <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                        <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml0-dialog')" data-tooltip="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                    </button>
                </div>
            </div>
            <div class="editor-dialog-content">
                <div class="yaml-editor-container"></div>
            </div>
            <div class="yaml-editor-statusbar">
                <span class="yaml-editor-status"></span>
            </div>
        </div>
        <!-- Locations Popup -->
        <div class="locations-popup" style="display: none;">
            <div class="locations-popup-content">
                <div class="locations-popup-header">
                    <span class="locations-header-label">Download and save to:</span>
                    <button class="locations-popup-close" aria-label="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                            <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                        </svg>
                    </button>
                </div>
                <ul class="locations-list">
                    <li>
                        <span class="location-label">Linux / Docker / macOS
                            <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="default-path location-path" data-tooltip=""
                                data-copy-osx="/etc/log10x/configiver/config.yaml"
                                data-copy-nix="/etc/log10x/configiver/config.yaml"
                                data-copy-win="C:\log10x\configsiver/config.yaml"></code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Custom directory
                            <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="$TENX_CONFIGiver/config.yaml">$TENX_CONFIGiver/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Within cloned repo
                            <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="./pipelinesiver/config.yaml">./pipelinesiver/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                </ul>
                <div class="locations-popup-footer">
                    <button class="locations-download-btn" title="Download config file">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                            <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                        </svg>
                        <span>Download</span>
                    </button>
                </div>
            </div>
        </div>
    </dialog>
    

    ```yaml
    #
    # 🔟❎  Receiver app main config
    #
    # Loads the required modules for a Receiver app instance.
    # The receiver filters noisy events and optionally encodes them for volume reduction.
    #
    # To enable optimization (encode events for volume reduction where the destination supports it), set:
    #   receiverOptimize: true
    # or pass receiverOptimize true on the command line.
    #
    # To learn more see https://doc.log10x.com/apps/receiver
    
    # ============================ Bootstrap Runtime ==============================
    
    # Initialize the runtime. To learn more see https://doc.log10x.com/run/bootstrap
    
    tenx: run
    
    # Where the engine validates its licence (/api/v1/agent/whoami) and ships
    # its metrics (/api/v1/write). One endpoint drives BOTH: repointing it for
    # licensing also repoints metrics delivery. Unset or empty, the engine has
    # no address to call: metrics stay local and the licence verifies offline.
    backendEndpoint: $=TenXEnv.get("TENX_BACKEND_ENDPOINT", "")
    runtimeName: $=TenXEnv.get("TENX_RUNTIME_NAME", "myReceiver")
    
    # =========================== Load App Modules ================================
    
    # Uncomment and edit selected config.yaml files (e.g., run/input/forwarder/fluentbit)
    
    include:
    
    # ----------------------------- App settings ----------------------------------
    
      # Load app settings:
      - receiver
    
      # Load gitops settings for pulling additional assets from Github.
      # Edit the gitops/config.yaml file with specific config
      #
      # For additional info see - https://doc.log10x.com/config/github
      - gitops
    
    # ---------------------------- Forwarder Input --------------------------------
    
      # Uncomment and edit to read events from a log forwarder process input:
      #
      # NOTE - When deploying via Helm, or using the provided forwarder configuration
      # files, the activation of the correct forwarder input is handled automatically,
      # keep all of the below options commented out.
      #
      # All forwarder configs support both filtering and optimization modes.
      # Set rateReceiver.optimize: true in the rate receiver config to enable optimization.
      #
      # For additional info, see -
      # https://doc.log10x.com/apps/receiver/run
      # https://doc.log10x.com/apps/receiver/deploy
      #
      # - run/input/forwarder/filebeat
      # - run/input/forwarder/fluentbit
      # - run/input/forwarder/fluentd
      # - run/input/forwarder/logstash
      # - run/input/forwarder/otel-collector
      # - run/input/forwarder/vector
      # - run/input/forwarder/datadogAgent
    
    # --------------------------- Enrich TenXObjects ------------------------------
    
      # Uncomment and edit config files to enrich TenXObjects with calculated fields:
    
      - run/initialize/inputField   # https://doc.log10x.com/run/initialize/#inputfield
      - run/initialize/level        # https://doc.log10x.com/run/initialize/level
      - run/initialize/group        # https://doc.log10x.com/run/initialize/group
      - run/initialize/message      # https://doc.log10x.com/run/initialize/message
      - run/initialize/httpCode     # https://doc.log10x.com/run/initialize/httpCode
      - run/initialize/lookup       # https://doc.log10x.com/run/initialize/lookup
      - run/initialize/custom       # https://doc.log10x.com/run/transform/script/object
      - run/initialize/k8s          # https://doc.log10x.com/run/initialize/k8s
      # - run/initialize/geoIP        # https://doc.log10x.com/run/initialize/geoIP
    
    # ---------------------------- Select Receiver ------------------------------
    
      #  Receive TenXObjects via per-node budget sampling or a field-set mute file:
    
      - run/receive/rate           # https://doc.log10x.com/run/receive/rate
      - run/receive/compact        # https://doc.log10x.com/run/receive/compact
    
      #  Watch resource files (e.g. compact lookup CSV) and hot-reload on change.
      #  Required for GitOps flows where an external puller (e.g. @github) rewrites
      #  the lookup file in place. See https://doc.log10x.com/run/reload/
      - run/reload                  # https://doc.log10x.com/run/reload
    
    # -------------------------- Select Metric Outputs ----------------------------
    
      #  Uncomment ONE to publish aggregated TenXSummary instances, or pass it at
      #  launch (e.g. "@run/output/metric/prometheus/remote-write"). Metrics go to a
      #  backend you own; the install wizard asks which one and wires it for you.
    
      # - run/output/metric/prometheus/scrape        # https://doc.log10x.com/run/output/metric/prometheus/scrape
      # - run/output/metric/prometheus/push-gateway  # https://doc.log10x.com/run/output/metric/prometheus/push-gateway
      # - run/output/metric/prometheus/remote-write  # https://doc.log10x.com/run/output/metric/prometheus/remote-write
      # - run/output/metric/cloudwatch               # https://doc.log10x.com/run/output/metric/cloudwatch
      # - run/output/metric/datadog                  # https://doc.log10x.com/run/output/metric/datadog
      # - run/output/metric/elastic                  # https://doc.log10x.com/run/output/metric/elastic
      # - run/output/metric/log                      # https://doc.log10x.com/run/output/metric/log
    ```

??? tenx-initializers "Initializers"

    <a id="initializers"></a>
    ### Initializers {.hidden-heading}

    Activate an [Object initializer](/run/initialize "Enrich TenXObjects with additional context") to enrich TenXObjects with additional context.

    === ":material-origin: Message"

  
        #### message {.hidden-heading}
        Configure  the [Symbol Message Calculator](/run/initialize/message "Enrich TenXObjects with logical message symbol sequence and origin values") to enrich TenXObjects with logical message symbol sequence and origin values.  
  
        Below is the default configuration from: [message/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/initialize/message/config.yaml "message/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/initialize/message/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml1-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml1-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml1-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Symbol Message Calculator Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml1-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/initialize/message/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/initialize/message/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/initialize/message/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/initialize/message/config.yaml">$TENX_CONFIG/run/initialize/message/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/initialize/message/config.yaml">./pipelines/run/initialize/message/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgInN5bWJvbCIgOiB7CiAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAiY29udGV4dHMiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlR5cGVzIG9mIHN5bWJvbHMgdG8gc2VhcmNoXG5cblNwZWNpZmllcyBhIGNvbW1hIGRlbGltaXRlZCBsaXN0IG9mIFtzeW1ib2wgY29udGV4dHNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL3RyYW5zZm9ybS9zeW1ib2wvI2NvbnRleHRzKSB2YWx1ZXMuIFRoaXMgaXMgYXJndW1lbnQgaXMgcGFzc2VkIGFzIHRoZSBgc3ltYm9sQ29udGV4dHNgIGFyZ3VtZW50IHZhbHVlIGZvciB0aGUgW3N5bWJvbFNlcXVlbmNlXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWE9iamVjdCtzeW1ib2xTZXF1ZW5jZSkgZnVuY3Rpb24uICBUaGUgbGlzdGVkIGNvbnRleHRzIGFyZSBldmFsdWF0ZWQgaW4gYSBzaW5nbGUgcGFzcywgc28gbGlzdCBvcmRlciBhY3RzIGFzIGEgZmlsdGVyIHJhdGhlciB0aGFuIGEgcHJlY2VkZW5jZSBjaGFpbi4gKERlZmF1bHQ6IGxvZyxleGVjKSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiAibG9nLGV4ZWMiCiAgICAgICAgfSwKICAgICAgICAibWF4TGVuIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgIm51bWJlciIsCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4IG51bWJlciBvZiBvdXRwdXQgY2hhcnNcblxuU3BlY2lmaWVzIHRoZSBtYXggbnVtYmVyIG9mIGNoYXJzIG9mIHRoZSBbc3ltYm9sTWVzc2FnZUZpZWxkXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9pbml0aWFsaXplL21lc3NhZ2UvI3N5bWJvbG1lc3NhZ2VmaWVsZCkuIFNldCAwIHRvIHVubGltaXRlZC4gKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogMCkiLAogICAgICAgICAgImRlZmF1bHQiIDogMAogICAgICAgIH0sCiAgICAgICAgIm1lc3NhZ2UiIDogewogICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgICAgICJmaWVsZCIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJGaWVsZCBuYW1lIHRvIGFzc2lnbiB3aXRoIHN5bWJvbCBzZXF1ZW5jZSB2YWx1ZVxuXG5TcGVjaWZpZXMgdGhlIG5hbWUgb2YgdGhlIGZpZWxkIHRvIGFzc2lnbiB0aGUgcmV0dXJuIHZhbHVlIG9mIFtzeW1ib2xTZXF1ZW5jZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhPYmplY3Qrc3ltYm9sU2VxdWVuY2UpIGZ1bmN0aW9uIHdoZW4gaW52b2tpbmcgaXQgd2l0aCB0aGUgYSBzeW1ib2xDb250ZXh0IGFyZ3VtZW50IHZhbHVlIG9mIFtzeW1ib2xDb250ZXh0c10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vaW5pdGlhbGl6ZS9tZXNzYWdlLyNzeW1ib2xjb250ZXh0cykuICBGb3IgYW4gZXhhbXBsZSwgc2VlIFtzeW1ib2xJbnB1dEZpZWxkXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9pbml0aWFsaXplL21lc3NhZ2UvI3N5bWJvbGlucHV0ZmllbGQpLiAoRGVmYXVsdDogc3ltYm9sTWVzc2FnZSkiLAogICAgICAgICAgICAgICJkZWZhdWx0IiA6ICJzeW1ib2xNZXNzYWdlIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiaGFzaEZpZWxkIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkZpZWxkIG5hbWUgdG8gYXNzaWduIHdpdGggdGhlIGhhc2ggb2YgdGhlIHN5bWJvbCBzZXF1ZW5jZSB2YWx1ZVxuXG5TcGVjaWZpZXMgdGhlIG5hbWUgb2YgdGhlIGZpZWxkIHRvIGFzc2lnbiBhIHN0YWJsZSwgVVJMLXNhZmUgaGFzaCBvZiB0aGUgW3N5bWJvbE1lc3NhZ2VGaWVsZF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vaW5pdGlhbGl6ZS9tZXNzYWdlLyNzeW1ib2xtZXNzYWdlZmllbGQpIHZhbHVlLCBjb21wdXRlZCB2aWEgW1RlblhTdHJpbmcuaGFzaF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhTdHJpbmcuaGFzaCkuICBUaGUgdmFsdWUgaXMgYW4gMTEtY2hhcmFjdGVyIGJhc2U2NHVybCBpZGVudGlmaWVyICh4eEhhc2g2NCBvZiB0aGUgVVRGLTggYnl0ZXMsIGJpZy1lbmRpYW4sIG5vIHBhZGRpbmcpLiBJdCBpcyBvbmUtd2F5IGFuZCByZXByb2R1Y2VzIGJ5dGUtZm9yLWJ5dGUgb3V0c2lkZSB0aGUgZW5naW5lLCBzbyBpdCBpcyBzYWZlIHRvIHVzZSBkaXJlY3RseSBhcyBhIGRlZHVwbGljYXRpb24ga2V5LCBtZXRyaWMgZGltZW5zaW9uLCBhbmFseXplciBxdWVyeSB0ZXJtLCBvciBmb3J3YXJkZXIgZmlsdGVyIGtleS4gICoqVW5zZXQgYnkgZGVmYXVsdC4qKiBUaGUgZW5yaWNobWVudCBmaWVsZCBpdHNlbGYgaXMgYWx3YXlzIHByZXNlbnQgb24gdGhlIFRlblhPYmplY3QgdW5kZXIgdGhlIGludGVybmFsIG5hbWUgYHRlbnhfaGFzaGAsIHNvIG1ldHJpY3MgZGltZW5zaW9ucywgdGhlIGFnZ3JlZ2F0aW9uIGtleSBhbmQgdGhlIE1DUCBhcnRpZmFjdHMgY2FycnkgdGhlIHBhdHRlcm4gaGFzaCB3aGV0aGVyIG9yIG5vdCB0aGlzIG9wdGlvbiBpcyBzZXQuIFdoYXQgdGhlIG9wdGlvbiBjb250cm9scyBpcyB0aGUgKndpcmUqIG5hbWUsIGFuZCB3aXRoIGl0IHdoZXRoZXIgdGhlIGhhc2ggcmVhY2hlcyBhIGNvdXBsZWQgbG9nIGZvcndhcmRlcjogb24gdGhlIFtmb3J3YXJkZXIgcmVjZWl2ZSBwYXRoXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9pbnB1dC9mb3J3YXJkZXIvKSB0aGUgcmVjb3JkIGdvZXMgYmFjayB0byB0aGUgZm9yd2FyZGVyIGJ5dGUtZm9yLWJ5dGUgYXMgaXQgYXJyaXZlZCB1bmxlc3MgdGhpcyBvcHRpb24gbmFtZXMgYSBmaWVsZCwgYW5kIHRoZW4gdGhhdCBmaWVsZCBpcyBzcGxpY2VkIG9udG8gdGhlIHJldHVybmVkIHJlY29yZC4gIFNldCBpdCB0byBgdGVueF9oYXNoYCB0byBnZXQgdGhlIGhpc3RvcmljYWwgbmFtZSwgb3IgdG8gYW55IG90aGVyIG5hbWUgdG8gYm90aCByZW5hbWUgdGhlIGVucmljaG1lbnQgZmllbGQgYW5kIHNoaXAgaXQsIGZvciBleGFtcGxlIGBzeW1ib2xNZXNzYWdlSGFzaEZpZWxkIG15X2N1c3RvbV9oYXNoYC4iCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJvcmlnaW5GaWVsZCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRmllbGQgbmFtZSB0byBhc3NpZ24gd2l0aCBzeW1ib2wgbWVzc2FnZSBvcmlnaW4gZmlsZVxuXG5TcGVjaWZpZXMgdGhlIG5hbWUgb2YgdGhlIGZpZWxkIHRvIGFzc2lnbiB0aGUgcmV0dXJuIHZhbHVlIG9mIFtzeW1ib2xPcmlnaW5dKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YT2JqZWN0K3N5bWJvbE9yaWdpbikgZnVuY3Rpb24uIChEZWZhdWx0OiApIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICIiCiAgICAgICAgfSwKICAgICAgICAic2tlbGV0b25GaWVsZCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRmllbGQgbmFtZSBmb3IgdGhlIHBhdHRlcm4gcmVuZGVyaW5nIGhpbnQgKHRoZSBtZXNzYWdlIHNoYXBlIHdpdGggb25lIG1hcmtlciBwZXIgaWRlbnRpdHkgdG9rZW4pXG5cbldoZW4gc2V0LCBlYWNoIHRlbXBsYXRlIGFsc28gY2FycmllcyBhIGBza2VsZXRvbmA6IHRoZSBtZXNzYWdlIHJlZ2lvbiBvZiB0aGUgbG9nIGxpbmUgd2l0aCBgfmAgc3RhbmRpbmcgaW4gZm9yIGV2ZXJ5IHRva2VuIHRoYXQgd2VudCBpbnRvIHRoZSBtZXNzYWdlIHBhdHRlcm4gYW5kIGAkYCBmb3IgZXZlcnkgdmFyaWFibGUuIEEgY29uc3VtZXIgaG9sZGluZyB0aGUgcGF0dGVybiBhbmQgdGhlIHNrZWxldG9uIHJlY29uc3RydWN0cyB0aGUgb3JpZ2luYWwgbGluZSBmb3IgZGlzcGxheSDigJQgcHVuY3R1YXRpb24sIHNwYWNpbmcgYW5kIGRyb3BwZWQgc3RvcHdvcmRzIGluY2x1ZGVkIOKAlCBzbyBhIHJlYWRhYmxlIHBhdHRlcm4gbmVlZHMgbm8gYWNjZXNzIHRvIHRoZSBsb2dzIHRoZW1zZWx2ZXMuIFVuc2V0ICh0aGUgZGVmYXVsdCkgY29tcHV0ZXMgYW5kIGVtaXRzIG5vdGhpbmcuIgogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgICJtZXNzYWdlTmVnYXRvcnMiIDogewogICAgICAidHlwZSIgOiBbCiAgICAgICAgImFycmF5IiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2Ygc3RyaW5ncyB0aGF0LCB3aGVuIG1hdGNoZWQgYXQgdGhlIHN0YXJ0IG9mIGEgbG9nIGxpbmUncyB0ZXh0LCBtYXJrIGl0IGFzIGxvdy12YWx1ZSBjb250aW51YXRpb24vYm9pbGVycGxhdGUgdGhhdCBkb2VzIE5PVCByZWNlaXZlIGl0cyBvd24gbWVzc2FnZSBwYXR0ZXJuLlxuXG5BIGxpc3Qgb2Ygc3RyaW5ncyB0aGF0LCB3aGVuIG1hdGNoZWQgYXQgdGhlIHN0YXJ0IG9mIGEgbG9nIGxpbmUncyB0ZXh0LCBtYXJrIGl0IGFzIGEga25vd24gY29udGludWF0aW9uIHBhdHRlcm4gKGUuZy4sIHN0YWNrIHRyYWNlIGZyYW1lLCBpbmRlbnRlZCBkZXRhaWwsIGJhbm5lcikgdGhhdCBzaG91bGQgbm90IHJlY2VpdmUgaXRzIG93biBtZXNzYWdlIHBhdHRlcm4uICBOZWdhdG9ycyBoYXZlIHR3byBjb25zdW1lcnMuIFRoZSBtZXNzYWdlIHRlbXBsYXRlJ3MgZ2F0ZSBldmFsdWF0ZXMgdGhlbSB3aGVuIHRoZSBldmVudCBpcyBuZWl0aGVyIHBhcnQgb2YgYSBtdWx0aS1ldmVudCBncm91cCAoZ3JvdXBTaXplID4gMSkgbm9yIGEgZ3JvdXAgaGVhZDogaW4gdGhhdCBjYXNlLCBhbiBldmVudCBzdGlsbCByZWNlaXZlcyBhIHBhdHRlcm4gdW5sZXNzIGl0IG1hdGNoZXMgYSBuZWdhdG9yLiBUaGlzIGlzIHRoZSBcIkhlbGxvIFdvcmxkIHZzIG9ycGhhbiBzdGFjayBmcmFtZVwiIGRpc2NyaW1pbmF0b3IuIFRoZSBncm91cCB0ZW1wbGF0ZSdzIGhlYWQgZGV0ZWN0aW9uIGFsc28gY29uc3VsdHMgdGhlbSBhcyBhIHZldG8gQkVUV0VFTiB0aGUgdGltZXN0YW1wIGFuZCBzZXZlcml0eSBjaGVja3M6IGEgbmVnYXRvci1wcmVmaXhlZCBsaW5lIGNhbm5vdCBiZSBwcm9tb3RlZCB0byBncm91cCBoZWFkIGJ5IHNldmVyaXR5IGluZmVyZW5jZSBhbG9uZSAoYSB0b2tlbiBsaWtlIGBpbmZvYCBpbnNpZGUgYW4gb2JqZWN0IGR1bXApLCBzbyBjb250aW51YXRpb24gZnJhZ21lbnRzIHdlbGQgaW50byB0aGVpciBwYXJlbnQgaW5zdGVhZCBvZiBtaW50aW5nIG9ycGhhbiBoZWFkcy4gQm90aCBjb25zdW1lcnMgYXJlIGluZXJ0IHVudGlsIHRoaXMgbGlzdCBpcyBjb25maWd1cmVkIOKAlCB0aGVyZSBpcyBubyBkZWZhdWx0LiAgLSBgIGAgLSBhbnkgaW5kZW50ZWQgbGluZSAodW5pdmVyc2FsIGNvbnRpbnVhdGlvbiBzaWduYWwpLiAtIGBcdGAgLSBhbnkgdGFiLXByZWZpeGVkIGxpbmUgKEphdmEvR28gc3RhY2sgZnJhbWVzIGV0Yy4pLiAtIGBDYXVzZWQgYnk6IGAgLSBKYXZhIGNoYWluZWQgZXhjZXB0aW9uIChjb2x1bW4gMCkuIC0gYFN1cHByZXNzZWQ6IGAgLSBKYXZhIHN1cHByZXNzZWQgZXhjZXB0aW9uIChjb2x1bW4gMCkuIC0gYC0tLSBFbmQgb2YgYCAtIC5ORVQgaW5uZXIgZXhjZXB0aW9uIG1hcmtlci4gLSBgY3JlYXRlZCBieSBgIC0gR28gZ29yb3V0aW5lIGNyZWF0b3IuIC0gYCMwIGAuLmAjNSBgIC0gUEhQIHN0YWNrIGZyYW1lcyAoZGVwdGggMC01KS4iLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB0cnVlCn0=</template>

        ```yaml
        # 🔟❎ 'run' symbol lookup configuration
        
        # Configure a symbol origin lookup to enrich TenXObjects
        # To learn more see https://doc.log10x.com/run/initialize/message/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Dependencies ================================
        
        include: run/modules/initialize/message
        
        # ============================== Symbol Options ===============================
        
        symbol:
        
          # 'types' specifies the types of symbols that participate in the origin search. The listed
          #  contexts are evaluated in a single pass, so list order acts as a filter rather than a precedence chain.
          #  Supported values (case insensitive), PACKAGE, CLASS, METHOD, LOG, ENUM, CONST, TEXT, EXEC, ANY
          #  To learn more see https://doc.log10x.com/run/transform/symbol/#contexts
          contexts: log,exec
        
          # 'messageField' specifies the field name to assign the message pattern to target TenXObjects: the symbol
          #  tokens of the origin ranked highest by coverage, meaning the count of distinct library-known tokens it
          #  explains. Span length is the last tiebreak. The origin file name itself goes to 'originField'.
          messageField: message_pattern
        
          # 'messageHashField' specifies the field name to assign a stable, URL-safe pattern hash (xxHash64 of the messageField value, base64url, 11 chars). Safe as a SIEM query term or forwarder filter key.
          #
          #  Left unset on purpose. The hash enrichment is always computed and carried on the TenXObject under
          #  its internal name 'tenx_hash', so metric dimensions, the aggregation key and the MCP artifacts are
          #  unaffected. Setting this key is what names the field on the wire, and on the forwarder receive path
          #  that is also what puts it on the record returned to the forwarder; leave it unset and the forwarder
          #  gets its record back byte-for-byte. Uncomment and name a field to opt in:
          #
          # messageHashField: tenx_hash
        
          # 'maxLen' specifies the max char len of the output messageField
          maxLen: 120
        
        # ============================== Message Options ==============================
        
        # 'negators' specifies patterns that mark a log line as boilerplate/continuation (stack trace frames,
        # indented detail, banners) so the message-template skips its own message-pattern compute for them.
        # The check fires only for templates that don't already pass the (groupSize > 1) || groupHead arms;
        # i.e., for single-event templates with no head signal. A non-negator line in that case (e.g., bare
        # "Hello World", "Heartbeat received from node-7") still gets a pattern; a negator-matching orphan
        # (e.g., a lone "\tat com.foo.Bar(...)") does not.
        message:
          negators:
            - " "                 # any indented line (stack frames, indented app detail, multi-line JSON, banners)
            - "\t"                # real tab byte, for msgpack/forward inputs that preserve raw whitespace
            - "\\t"               # literal backslash+t, for file/JSON inputs that keep escape sequences raw
            - "Caused by: "       # Java chained exception (column 0)
            - "Suppressed: "      # Java suppressed exception (column 0)
            - "--- End of "       # .NET inner exception marker (column 0)
            - "created by "       # Go goroutine creator (column 0)
            - "#0 "               # PHP stack frame depth 0
            - "#1 "               # PHP stack frame depth 1
            - "#2 "               # PHP stack frame depth 2
            - "#3 "               # PHP stack frame depth 3
            - "#4 "               # PHP stack frame depth 4
            - "#5 "               # PHP stack frame depth 5
        ```

    === ":material-information-outline: Level"

  
        #### level {.hidden-heading}
        Configure  the [Level Classifier](/run/initialize/level "Classify TenXObjects with a severity level") to classify TenXObjects with a severity level.  
  
        Below is the default configuration from: [level/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/initialize/level/config.yaml "level/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/initialize/level/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml2-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml2-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml2-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Level Classifier Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml2-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/initialize/level/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/initialize/level/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/initialize/level/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/initialize/level/config.yaml">$TENX_CONFIG/run/initialize/level/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/initialize/level/config.yaml">./pipelines/run/initialize/level/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgImxldmVsIiA6IHsKICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICJmaWVsZCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdHMgbGV2ZWwgc2V2ZXJpdHkgdGVybXNcblxuU3BlY2lmeSB0aGUgZmllbGQgbmFtZSB0byBhc3NpZ24gd2l0aCB0aGUgaW5mZXJyZWQgc2V2ZXJpdHkgbGV2ZWwgKERlZmF1bHQ6IGxldmVsKSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiAibGV2ZWwiCiAgICAgICAgfSwKICAgICAgICAidGVybXMiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3RzIGxldmVsIHNldmVyaXR5IHRlcm1zXG5cblNwZWNpZnkgc2V2ZXJpdHkgbGV2ZWwgY2xhc3NpZmljYXRpb24sIHN0YXJ0LW9mLWxpbmUgbWF0Y2hpbmcuIFVzZWQgdG8gaWRlbnRpZnkgdGhlIHNldmVyaXR5IGxldmVsIChUUkFDRSwgREVCVUcsIElORk8sIFdBUk4sIEVSUk9SLCBDUklUSUNBTCkgb2YgYSBsb2cgbGluZSwgIHR5cGljYWxseSBtYXJraW5nIHRoZSBzdGFydCBvZiBhIGxvZyBldmVudCAoaGVhZCkuIFNvcnRlZCBieSBsaWtlbGlob29kIGFuZCB1bmlxdWVuZXNzLiBVc2VkIGluIGEgVHJpZSBmb3IgTyhtKSBtYXRjaGluZy4gIEZvciBleGFtcGxlOiAgYGBgIHlhbWwgIC0gJ3BhbmljPUNSSVRJQ0FMJyAgICAgICAjIEdvIHBhbmljLCBmaXJzdCBsaW5lOyBlLmcuLCBcInBhbmljOiBydW50aW1lIGVycm9yOiBpbmRleCBvdXQgb2YgcmFuZ2VcIiAgLSAnZmF0YWxfZXJyb3I9Q1JJVElDQUwnICMgR28gZmF0YWwgZXJyb3IsIGZpcnN0IGxpbmU7IGUuZy4sIFwiZmF0YWwgZXJyb3I6IGFsbCBnb3JvdXRpbmVzIGFyZSBhc2xlZXBcIiAgLSAndGhyZWFkXycnbWFpbicnX3Bhbmlja2VkX2F0PUNSSVRJQ0FMJyAjIFJ1c3QgcGFuaWMsIGZpcnN0IGxpbmU7IGUuZy4sIFwidGhyZWFkICdtYWluJyBwYW5pY2tlZCBhdCAnZXhwbGljaXQgcGFuaWMnXCIgIC0gJ1NlZ21lbnRhdGlvbl9mYXVsdD1DUklUSUNBTCcgIyBDL0MrKyBtZW1vcnkgdmlvbGF0aW9uLCBmaXJzdCBsaW5lOyBlLmcuLCBcIlNlZ21lbnRhdGlvbiBmYXVsdCAoY29yZSBkdW1wZWQpXCIgYGBgIiwKICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAidGltZXN0YW1wUGF0dGVybnMiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3RzIHRpbWVzdGFtcCBwYXR0ZXJucyBhc3NvY2lhdGVkIHdpdGggc2V2ZXJpdHkgbGV2ZWxcblxuTGlzdHMgdGhlIHRlcm1zIGFzc2lnbmVkIHRvIGEgdGFyZ2V0IFRlblhPYmplY3QncyBbbGV2ZWxGaWVsZF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vaW5pdGlhbGl6ZS9sZXZlbC8jbGV2ZWxGaWVsZCkgYmFzZWQgb24gd2hldGhlciBpdHMgW2Z1bGxUZXh0XShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEJhc2VPYmplY3QrZnVsbFRleHQpIGNvbnRhaW5zIHNwZWNpZmllZCB0ZXJtcy4gRm9yIGV4YW1wbGU6IGBgYCB5YW1sIC0gXCJJJ01NZGQgSEg6bW06c3MuUz1JTkZPXCIgICAgICAgICAgIyBVc2VkIGluIEt1YmVybmV0ZXMga3ViZS1hcGlzZXJ2ZXIgbG9ncyB3aXRoIElORk8gcHJlZml4LCAxLWRpZ2l0IG1pY3Jvc2Vjb25kIHByZWNpc2lvbiBgYGAiLAogICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB0cnVlCn0=</template>

        ```yaml
        # 🔟❎ 'run' level classifier configuration
        
        # Configuration level classifier to enrich TenXObjects
        # To learn more see https://doc.log10x.com/run/initialize/level/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Dependencies ================================
        
        include: run/modules/initialize/level
        
        # =============================== Level Options ===============================
        
        level:
        
          # 'field' specify the field name to assign with the inferred severity level
          field: severity_level
        
          # 'terms' specify severity level classification, start-of-line matching
          #  Used to identify the severity level (TRACE, DEBUG, INFO, WARN, ERROR, CRITICAL) of a log line, typically marking
          #  the start of a log event (head). Sorted by likelihood and uniqueness. Used in a Trie for O(m) matching.
          terms:
            - 'trace=TRACE'          # Common in JavaScript (Winston) or custom logs; e.g., "trace Variable x = 5"
            - 'Trace=TRACE'          # Mixed case; e.g., "Trace Variable x = 5"
            - 'TRACE=TRACE'          # Uppercase, less common; e.g., "TRACE Message"
            - 'debug=DEBUG'          # Common in JavaScript (Winston) or custom logs; e.g., "debug Entering method foo"
            - 'Debug=DEBUG'          # Mixed case; e.g., "Debug Entering method foo"
            - 'DEBUG=DEBUG'          # Uppercase; e.g., "DEBUG Message"
            - 'DBG=DEBUG'            # Abbreviation, less common; e.g., "DBG Entering method foo"
            - 'info=INFO'            # Common in JavaScript (Winston) or custom logs; e.g., "info Application started"
            - 'Info=INFO'            # Mixed case; e.g., "Info Application started"
            - 'INFO=INFO'            # Uppercase; e.g., "INFO Message"
            - 'notice=INFO'          # Common in custom logs or lowercase syslog; e.g., "notice Configuration updated"
            - 'Notice=INFO'          # Mixed case; e.g., "Notice Configuration updated"
            - 'NOTICE=INFO'          # Uppercase, syslog; e.g., "NOTICE Message"
            - 'warn=WARN'            # Common in JavaScript (Winston) or custom logs; e.g., "warn Low disk space"
            - 'Warn=WARN'            # Mixed case; e.g., "Warn Low disk space"
            - 'WARN=WARN'            # Uppercase; e.g., "WARN Message"
            - 'warning=WARN'         # Common in custom logs or verbose frameworks; e.g., "warning Low disk space"
            - 'Warning=WARN'         # Mixed case; e.g., "Warning Low disk space"
            - 'WARNING=WARN'         # Uppercase; e.g., "WARNING Message"
            - 'error=ERROR'          # Common in JavaScript (Winston) or custom logs; e.g., "error Failed to connect"
            - 'Error=ERROR'          # Mixed case; e.g., "Error Failed to connect"
            - 'ERROR=ERROR'          # Uppercase; e.g., "ERROR Message"
            - 'err=ERROR'            # Lowercase abbreviation; e.g., "err Failed to connect"
            - 'ERR=ERROR'            # Uppercase abbreviation; e.g., "ERR Message"
            - 'TypeError=ERROR'      # JavaScript, stack trace; e.g., "TypeError: undefined is not a function"
            - 'ReferenceError=ERROR' # JavaScript, stack trace; e.g., "ReferenceError: x is not defined"
            - 'ValueError=ERROR'     # Python, stack trace; e.g., "ValueError: invalid literal"
            - 'PHP_Warning=ERROR'    # PHP, warning message; e.g., "PHP Warning: Undefined variable"
            - 'fatal=CRITICAL'       # Common in custom logs; e.g., "fatal System crash"
            - 'Fatal=CRITICAL'       # Mixed case; e.g., "Fatal System crash"
            - 'FATAL=CRITICAL'       # Uppercase; e.g., "FATAL Message"
            - 'critical=CRITICAL'    # Common in custom logs; e.g., "critical System crash"
            - 'Critical=CRITICAL'    # Mixed case; e.g., "Critical System crash"
            - 'CRITICAL=CRITICAL'    # Uppercase; e.g., "CRITICAL Message"
            - 'crit=CRITICAL'        # Lowercase abbreviation, syslog; e.g., "crit System crash"
            - 'CRIT=CRITICAL'        # Uppercase abbreviation, syslog; e.g., "CRIT Message"
            - 'alert=CRITICAL'       # Common in custom logs or syslog; e.g., "alert High CPU usage"
            - 'Alert=CRITICAL'       # Mixed case; e.g., "Alert High CPU usage"
            - 'ALERT=CRITICAL'       # Uppercase, syslog; e.g., "ALERT Message"
            - 'emerg=CRITICAL'       # Common in custom logs or lowercase syslog; e.g., "emerg System unusable"
            - 'Emerg=CRITICAL'       # Mixed case; e.g., "Emerg System unusable"
            - 'EMERG=CRITICAL'       # Uppercase, syslog; e.g., "EMERG Message"
            - 'panic=CRITICAL'       # Go panic, first line; e.g., "panic: runtime error: index out of range"
            - 'fatal_error=CRITICAL' # Go fatal error, first line; e.g., "fatal error: all goroutines are asleep"
            - 'thread_main_panicked_at=CRITICAL' # Rust panic, first line; e.g., "thread 'main' panicked at 'explicit panic'"
            - 'Segmentation_fault=CRITICAL' # C/C++ memory violation, first line; e.g., "Segmentation fault (core dumped)"
            - 'Aborted=CRITICAL'     # C/C++ termination, first line; e.g., "Aborted (core dumped)"
            - 'Assertion_failed=CRITICAL' # C/C++ assertion failure, first line; e.g., "Assertion failed: x > 0"
            - 'PHP_Fatal_error=CRITICAL' # PHP fatal error, first line; e.g., "PHP Fatal error: Out of memory"
            - 'Traceback_most_recent_call_last=CRITICAL' # Python stack trace, first line; e.g., "Traceback (most recent call last)"
            - 'Stack_trace=CRITICAL' # Generic stack trace, first line; e.g., "Stack trace"
            - 'Error=CRITICAL'       # JavaScript, stack trace; e.g., "Error: Something went wrong"
            - 'Fatal_error=CRITICAL' # PHP, stack trace; e.g., "Fatal error: Uncaught Exception"
            - 'Unhandled_exception=CRITICAL' # C#/Dart, stack trace; e.g., "Unhandled exception: System.NullReferenceException"
            - 'Exception_in_thread=CRITICAL' # Java, stack trace; e.g., "Exception in thread 'main' java.lang.RuntimeException"
            - 'goroutine=CRITICAL'   # Go, stack trace; e.g., "goroutine 1 [running]:"
            - 'failed=ERROR'         # ERROR-level entries in application, system, or web server logs
        
          # 'timestampPatterns' patterns for LogEvent head classification, start-of-line matching
          #  Used to identify timestamp formats in log lines and infer their implied severity level based on the first character.
          #  Formats are typical of Kubernetes kube-apiserver logs with varying microsecond precision. The first character
          #  ('I', 'W', 'E', 'F') determines the severity: I=INFO, W=WARN, E=ERROR, F=CRITICAL. Sorted by precision.
          timestampPatterns:
            - "'I'MMdd HH:mm:ss.S=INFO"          # Used in Kubernetes kube-apiserver logs with INFO prefix, 1-digit microsecond precision
            - "'I'MMdd HH:mm:ss.SS=INFO"         # Used in Kubernetes kube-apiserver logs with INFO prefix, 2-digit microsecond precision
            - "'I'MMdd HH:mm:ss.SSS=INFO"        # Used in Kubernetes kube-apiserver logs with INFO prefix, 3-digit microsecond precision
            - "'I'MMdd HH:mm:ss.SSSS=INFO"       # Used in Kubernetes kube-apiserver logs with INFO prefix, 4-digit microsecond precision
            - "'I'MMdd HH:mm:ss.SSSSS=INFO"      # Used in Kubernetes kube-apiserver logs with INFO prefix, 5-digit microsecond precision
            - "'I'MMdd HH:mm:ss.SSSSSS=INFO"     # Used in Kubernetes kube-apiserver logs with INFO prefix, 6-digit microsecond precision
            - "'W'MMdd HH:mm:ss.S=WARN"          # Used in Kubernetes kube-apiserver logs with WARNING prefix, 1-digit microsecond precision
            - "'W'MMdd HH:mm:ss.SS=WARN"         # Used in Kubernetes kube-apiserver logs with WARNING prefix, 2-digit microsecond precision
            - "'W'MMdd HH:mm:ss.SSS=WARN"        # Used in Kubernetes kube-apiserver logs with WARNING prefix, 3-digit microsecond precision
            - "'W'MMdd HH:mm:ss.SSSS=WARN"       # Used in Kubernetes kube-apiserver logs with WARNING prefix, 4-digit microsecond precision
            - "'W'MMdd HH:mm:ss.SSSSS=WARN"      # Used in Kubernetes kube-apiserver logs with WARNING prefix, 5-digit microsecond precision
            - "'W'MMdd HH:mm:ss.SSSSSS=WARN"     # Used in Kubernetes kube-apiserver logs with WARNING prefix, 6-digit microsecond precision
            - "'E'MMdd HH:mm:ss.S=ERROR"         # Used in Kubernetes kube-apiserver logs with ERROR prefix, 1-digit microsecond precision
            - "'E'MMdd HH:mm:ss.SS=ERROR"        # Used in Kubernetes kube-apiserver logs with ERROR prefix, 2-digit microsecond precision
            - "'E'MMdd HH:mm:ss.SSS=ERROR"       # Used in Kubernetes kube-apiserver logs with ERROR prefix, 3-digit microsecond precision
            - "'E'MMdd HH:mm:ss.SSSS=ERROR"      # Used in Kubernetes kube-apiserver logs with ERROR prefix, 4-digit microsecond precision
            - "'E'MMdd HH:mm:ss.SSSSS=ERROR"     # Used in Kubernetes kube-apiserver logs with ERROR prefix, 5-digit microsecond precision
            - "'E'MMdd HH:mm:ss.SSSSSS=ERROR"    # Used in Kubernetes kube-apiserver logs with ERROR prefix, 6-digit microsecond precision
            - "'F'MMdd HH:mm:ss.S=CRITICAL"      # Used in Kubernetes kube-apiserver logs with FATAL prefix, 1-digit microsecond precision
            - "'F'MMdd HH:mm:ss.SS=CRITICAL"     # Used in Kubernetes kube-apiserver logs with FATAL prefix, 2-digit microsecond precision
            - "'F'MMdd HH:mm:ss.SSS=CRITICAL"    # Used in Kubernetes kube-apiserver logs with FATAL prefix, 3-digit microsecond precision
            - "'F'MMdd HH:mm:ss.SSSS=CRITICAL"   # Used in Kubernetes kube-apiserver logs with FATAL prefix, 4-digit microsecond precision
            - "'F'MMdd HH:mm:ss.SSSSS=CRITICAL"  # Used in Kubernetes kube-apiserver logs with FATAL prefix, 5-digit microsecond precision
            - "'F'MMdd HH:mm:ss.SSSSSS=CRITICAL" # Used in Kubernetes kube-apiserver logs with FATAL prefix, 6-digit microsecond precision
        ```

    === ":material-select-group: Group"

  
        #### group {.hidden-heading}
        Configure  the [Group initializer](/run/initialize/group "Combine multi-line events into TenXObject group instances") to combine multi-line events into TenXObject group instances.  
  
        Below is the default configuration from: [group/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/initialize/group/config.yaml "group/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/initialize/group/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml3-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml3-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml3-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Group initializer Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml3-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/initialize/group/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/initialize/group/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/initialize/group/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/initialize/group/config.yaml">$TENX_CONFIG/run/initialize/group/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/initialize/group/config.yaml">./pipelines/run/initialize/group/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgImdyb3VwIiA6IHsKICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICJpbmRpY2F0b3JzIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIHN0cmluZ3MgdGhhdCwgd2hlbiBtYXRjaGVkIGF0IHRoZSBzdGFydCBvZiBhIGxvZyBsaW5lJ3MgdGV4dCwgZGVzaWduYXRlIGl0IGFzIGEgZ3JvdXAgaGVhZC5cblxuQSBsaXN0IG9mIHN0cmluZ3MgdGhhdCwgd2hlbiBtYXRjaGVkIGF0IHRoZSBzdGFydCBvZiBhIGxvZyBsaW5lJ3MgdGV4dCwgZGVzaWduYXRlIGl0IGFzIGEgZ3JvdXAgaGVhZC4gVW5tYXRjaGVkIGxpbmVzIGRlZmF1bHQgdG8gYGZhbHNlYCwgaW5kaWNhdGluZyB0aGV5IGFyZSBncm91cCBjaGlsZHJlbi4gIC0gYDE5Mi5gIC0gSW5kaWNhdGVzIGEgcHJpdmF0ZSBJUCBhZGRyZXNzLCBjb21tb24gaW4gd2ViIHNlcnZlciBsb2dzIChlLmcuLCBcIjE5Mi4xNjguMS4xIC0gLSBbLi4uXVwiKS4gLSBgMTAuYCAtIEluZGljYXRlcyBhIHByaXZhdGUgSVAgcmFuZ2UsIG9mdGVuIGluIEt1YmVybmV0ZXMgb3IgaW50ZXJuYWwgbmV0d29yayBsb2dzIChlLmcuLCBcIjEwLjI0NC4wLjEyNSAtIC0gWy4uLl1cIikuIC0gYEdFVCBgIC0gSW5kaWNhdGVzIGFuIEhUVFAgR0VUIHJlcXVlc3QsIG1hcmtpbmcgdGhlIHN0YXJ0IG9mIGEgd2ViIHRyYW5zYWN0aW9uIGxvZyAoZS5nLiwgXCJHRVQgL2luZGV4Lmh0bWwgSFRUUC8xLjFcIikuIC0gYGF0IGAgLSBJbmRpY2F0ZXMgYSBKYXZhL0MjIHN0YWNrIHRyYWNlIGNvbnRpbnVhdGlvbi4iLAogICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJuZWdhdG9ycyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBvZiBwYXR0ZXJucyB0aGF0IG1hcmsgYSBsaW5lIGFzIGEga25vd24gY29udGludWF0aW9uIChlLmcuLCBzdGFjayB0cmFjZSBsaW5lcyksIG5lZ2F0aW5nIHN0YW5kYWxvbmUgc3RhdHVzLlxuXG5BIGxpc3Qgb2Ygc3RyaW5ncyB0aGF0LCB3aGVuIG1hdGNoZWQgYXQgdGhlIHN0YXJ0IG9mIGEgbG9nIGxpbmUncyB0ZXh0LCBtYXJrIGl0IGFzIGEga25vd24gY29udGludWF0aW9uIGxpbmUuIExpbmVzIG1hdGNoaW5nIHRoZXNlIHBhdHRlcm5zIGFyZSBpZGVudGlmaWVkIGFzIGNvbnRpbnVhdGlvbnMgKGUuZy4sIHN0YWNrIHRyYWNlIGZyYW1lcykgYW5kIHdpbGwgbm90IGhhdmUgbWVzc2FnZSBwYXR0ZXJucyBjYWxjdWxhdGVkIGZvciB0aGVtLCBvcHRpbWl6aW5nIHByb2Nlc3NpbmcgcGVyZm9ybWFuY2UuICAtIGBcdGF0IGAgLSBKYXZhL0tvdGxpbiBzdGFjayB0cmFjZSBmcmFtZSAodGFiLXByZWZpeGVkKS4gLSBgICAgYXQgYCAtIC5ORVQgc3RhY2sgdHJhY2UgZnJhbWUgKHNwYWNlLXByZWZpeGVkKS4gLSBgICBGaWxlIFwiYCAtIFB5dGhvbiBzdGFjayB0cmFjZSBmcmFtZS4gLSBgICAgIGF0IGAgLSBOb2RlLmpzIHN0YWNrIHRyYWNlIGZyYW1lLiAtIGBDYXVzZWQgYnk6YCAtIEphdmEgY2hhaW5lZCBleGNlcHRpb24uIC0gYFx0Li4uIGAgLSBKYXZhIHRydW5jYXRlZCBzdGFjayBmcmFtZXMuIiwKICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogdHJ1ZQp9</template>

        ```yaml
        # 🔟❎ 'run' event grouping configuration
        
        # Group  sequences of TenXObjects to filter, aggregate and output as a single logical unit.
        # To learn more see https://doc.log10x.com/run/transform/group/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Dependencies ================================
        
        include: run/modules/initialize/group
          
        # =============================== Group Options ===============================
        
        
        # 'indicators' specifies a list of `value:state` pairs that determine if a log line's start marks a group head (`true`) or child (`false`).
        group:
        
          # 'indicators' specifies a list of strings that, when matched at the start of a log line's text, designate it as a group head.
          # Unmatched lines default to false, indicating they are group children (continuation-by-default).
          indicators:
            - '{'                 # Indicates a pretty-printed JSON/object log body (e.g., payment '{ resource: {...} }'); the opening brace heads the multi-line object so it groups as one event. Matches the log body only, grouping reads inputField, not the wrapped envelope.
            - '192.'              # Indicates a private IP address, common in web server logs (e.g., "192.168.1.1 - - [...]")
            - '10.'               # Indicates a private IP range, often in Kubernetes or internal network logs (e.g., "10.244.0.125 - - [...]")
            - '172.'              # Indicates a private IP range, typical in enterprise network logs (e.g., "172.16.0.1 - - [...]")
            - '127.'              # Indicates localhost, a common web server log initiator (e.g., "127.0.0.1 - - [...]")
            - 'GET '              # Indicates an HTTP GET request, marking the start of a web transaction log (e.g., "GET /index.html HTTP/1.1")
            - 'POST '             # Indicates an HTTP POST request, marking the start of a web transaction log (e.g., "POST /api HTTP/1.1")
            - 'PUT '              # Indicates an HTTP PUT request, marking the start of a web transaction log (e.g., "PUT /resource HTTP/1.1")
            - 'DELETE '           # Indicates an HTTP DELETE request, marking the start of a web transaction log (e.g., "DELETE /resource HTTP/1.1")
            - 'HEAD '             # Indicates an HTTP HEAD request, marking the start of a web transaction log (e.g., "HEAD /index.html HTTP/1.1")
            - 'OPTIONS '          # Indicates an HTTP OPTIONS request, marking the start of a web transaction log (e.g., "OPTIONS /api HTTP/1.1")
            - 'HTTP/'             # Indicates an HTTP protocol version, marking the start of a web transaction log (e.g., "GET /index.html HTTP/1.1")
            - 'kernel:'           # Indicates a Linux kernel log entry, marking the start of a system event (e.g., "kernel: [0.123456] Device initialized")
            - 'sshd['             # Indicates an SSH daemon log entry, marking the start of a security event (e.g., "sshd[1234]: Accepted password ...")
            - 'systemd['          # Indicates a systemd service log entry, marking the start of a system service event (e.g., "systemd[1]: Started service ...")
            - 'cron['             # Indicates a cron daemon log entry, marking the start of a scheduled task event (e.g., "cron[1234]: Running job ...")
            - 'syslog:'           # Indicates a syslog message, marking the start of a system log event (e.g., "syslog: Message ...")
            - 'rsyslogd:'         # Indicates an rsyslog daemon log entry, marking the start of a logging system event (e.g., "rsyslogd: Log started ...")
            - 'auditd['           # Indicates an audit daemon log entry, marking the start of a security audit event (e.g., "auditd[1234]: Audit event ...")
            - 'daemon:'           # Indicates a syslog daemon facility log, marking the start of a system service event (e.g., "daemon: Service started ...")
            - 'user:'             # Indicates a syslog user facility log, marking the start of a user-related event (e.g., "user: User logged in ...")
            - 'local0:'           # Indicates a syslog local facility log, marking the start of a custom system event (e.g., "local0: Custom message ...")
            - 'local1:'           # Indicates a syslog local facility log, marking the start of a custom system event (e.g., "local1: Custom message ...")
            - 'level='            # Indicates a structured log key, marking the start of a key-value log entry (e.g., "level=info msg=Started")
            - 'msg='              # Indicates a structured log key, marking the start of a message log entry (e.g., "msg=Application started")
            - 'message='          # Indicates a structured log key, marking the start of a message log entry (e.g., "message=Application started")
            - 'event='            # Indicates a structured log key, marking the start of an event log entry (e.g., "event=Service startup")
            - 'thread='           # Indicates a structured log key, marking the start of a thread-specific log entry (e.g., "thread=main Processing ...")
            - 'Starting '         # Indicates the start of a process initiation log (e.g., "Starting server on port 8080")
            - 'Stopping '         # Indicates the start of a process termination log (e.g., "Stopping service ...")
            - 'Running '          # Indicates the start of a process status log (e.g., "Running task ...")
            - 'Listening '        # Indicates the start of a network service log (e.g., "Listening on port 8080 ...")
            - 'Connecting '       # Indicates the start of a connection attempt log (e.g., "Connecting to database ...")
            - 'Connected '        # Indicates the start of a successful connection log (e.g., "Connected to database ...")
            - 'Disconnected '     # Indicates the start of a disconnection log (e.g., "Disconnected from server ...")
            - 'Processing '       # Indicates the start of a task processing log (e.g., "Processing request ...")
            - 'Received '         # Indicates the start of a data reception log (e.g., "Received message ...")
            - 'Sent '             # Indicates the start of a data transmission log (e.g., "Sent response ...")
            - 'User '             # Indicates the start of a user action log (e.g., "User logged in ...")
            - 'Authentication '   # Indicates the start of an authentication log (e.g., "Authentication successful ...")
            - 'Authorized '       # Indicates the start of an authorization log (e.g., "Authorized user access ...")
            - 'Failed '           # Indicates the start of a failure log (e.g., "Failed login attempt ...")
            - 'kubelet:=true'     # Indicates a Kubernetes kubelet log entry, marking the start of a node event (e.g., "kubelet: Starting kubelet")
            - 'pod:=true'         # Indicates a Kubernetes pod log entry, marking the start of a pod event (e.g., "pod: Starting container")
            - 'container:=true'   # Indicates a Kubernetes container log entry, marking the start of a container event (e.g., "container: Started")
            - 'namespace:=true'   # Indicates a Kubernetes namespace log entry, marking the start of a namespace event (e.g., "namespace: Created")
            - 'Traceback '        # Indicates the start of a Python stack trace (e.g., "Traceback (most recent call last):")
            - 'File "'            # Indicates a Python stack trace line (e.g., "File "/script.py", line 10")
            - 'Trace:'            # Indicates a Node.js console trace (e.g., "Trace: Show me")
            - 'Error:'            # Indicates a Node.js error log (e.g., "Error: Something went wrong")
            - 'Warning:'          # Indicates a Node.js warning log (e.g., "Warning: Deprecated method")
            - 'Exception in thread ' # Indicates a Java exception header (e.g., "Exception in thread 'main'")
            - 'goroutine '        # Indicates a Go goroutine stack trace (e.g., "goroutine 1 [running]:")
            - 'panic:'            # Indicates a Go panic (e.g., "panic: runtime error")
            - 'thread '           # Indicates a Rust thread panic (e.g., "thread 'main' panicked at")
            - 'stack backtrace:'  # Indicates a Rust backtrace header (e.g., "stack backtrace:")
            - 'PHP Warning:'      # Indicates a PHP warning (e.g., "PHP Warning: Undefined variable")
            - 'PHP Fatal error:'  # Indicates a PHP fatal error (e.g., "PHP Fatal error: Out of memory")
            - 'in /'              # Indicates a PHP/Ruby file path in stack trace (e.g., "in /path/to/file.php:10")
            - 'Exception:'        # Indicates a C# exception (e.g., "Exception: Invalid operation")
            - 'terminate called'  # Indicates a C++ termination (e.g., "terminate called after throwing an instance of 'std::exception'")
            - 'syslog:'           # Indicates a Linux syslog message (e.g., "syslog: Message ...")
            - 'IN='               # Indicates an iptables firewall input log (e.g., "IN=eth0 OUT=")
            - 'OUT='              # Indicates an iptables firewall output log (e.g., "OUT=eth0 SRC=")
            - 'SRC='              # Indicates an iptables firewall source IP log (e.g., "SRC=192.168.1.1 DST=")
            - 'DST='              # Indicates an iptables firewall destination IP log (e.g., "DST=10.0.0.1 LEN=")
            - 'KafkaServer:'      # Indicates a Kafka server log (e.g., "KafkaServer: Starting Kafka server")
            - 'Redis:'            # Indicates a Redis server log (e.g., "Redis: Server initialized")
        
          
        ```

    === ":material-web: HttpCode"

  
        #### httpCode {.hidden-heading}
        Configure  the [HTTP Status Code Extractor](/run/initialize/httpCode "Enrich TenXObjects with an extracted HTTP status code") to enrich TenXObjects with an extracted HTTP status code.  
  
        Below is the default configuration from: [httpCode/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/initialize/httpCode/config.yaml "httpCode/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/initialize/httpCode/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml4-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml4-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml4-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit HTTP Status Code Extractor Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml4-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/initialize/httpCode/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/initialize/httpCode/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/initialize/httpCode/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/initialize/httpCode/config.yaml">$TENX_CONFIG/run/initialize/httpCode/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/initialize/httpCode/config.yaml">./pipelines/run/initialize/httpCode/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgImh0dHBDb2RlIiA6IHsKICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICJmaWVsZCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiSFRUUCBjb2RlIHRhcmdldCBmaWVsZCBuYW1lXG5cblNwZWNpZnkgdGhlIGZpZWxkIG5hbWUgdG8gYXNzaWduIHdpdGggdGhlIGluZmVycmVkIEhUVFAgY29kZSAoRGVmYXVsdDogaHR0cENvZGUpIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICJodHRwQ29kZSIKICAgICAgICB9LAogICAgICAgICJwcmVjbHVkZXJzQmVmb3JlIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJQcmVjZWRpbmcgY2hhcmFjdGVycyBmb3IgZXhjbHVkaW5nIEhUVFAgY29kZSBjYW5kaWRhdGVzXG5cbkFycmF5IG9mIGNoYXJhY3RlcnMgb3IgcGF0dGVybnMgdGhhdCwgd2hlbiBhcHBlYXJpbmcgaW1tZWRpYXRlbHkgYmVmb3JlIGEgY2FuZGlkYXRlIEhUVFAgc3RhdHVzIGNvZGUgaW4gdG9rZW5pemVkIGxvZ3MsIGluZGljYXRlIGl0IGlzIG5vdCBhIHZhbGlkIEhUVFAgY29kZS4gVXNlZCB0byBwcmVjbHVkZSBmYWxzZSBwb3NpdGl2ZXMgbGlrZSBuZWdhdGl2ZSBudW1iZXJzICgnLTIwMCcpLCBmbG9hdHMgKCcuMjAwJyksIG9yIHZhcmlhYmxlcyAoJ18yMDAnKS4gRW50cmllcyBhcmUgc2luZ2xlIGNoYXJhY3RlcnMgb3Igc2hvcnQgc3RyaW5ncyBmb3IgTygxKSBsb29rdXAgZWZmaWNpZW5jeSBpbiB0aGUgaGV1cmlzdGljLiIsCiAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgInByZWNsdWRlcnNBZnRlciIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiU3Vic2VxdWVudCBjaGFyYWN0ZXJzIGZvciBleGNsdWRpbmcgSFRUUCBjb2RlIGNhbmRpZGF0ZXNcblxuQXJyYXkgb2YgY2hhcmFjdGVycyBvciBwYXR0ZXJucyB0aGF0LCB3aGVuIGFwcGVhcmluZyBpbW1lZGlhdGVseSBhZnRlciBhIGNhbmRpZGF0ZSBIVFRQIHN0YXR1cyBjb2RlIGluIHRva2VuaXplZCBsb2dzLCBpbmRpY2F0ZSBpdCBpcyBub3QgYSB2YWxpZCBIVFRQIGNvZGUuIFVzZWQgdG8gcHJlY2x1ZGUgZmFsc2UgcG9zaXRpdmVzIGxpa2UgcGVyY2VudGFnZXMgKCcyMDAlJyksIGZsb2F0cyAoJzIwMC4nKSwgb3IgZXhwcmVzc2lvbnMgKCcyMDArJykuIEVudHJpZXMgYXJlIHNpbmdsZSBjaGFyYWN0ZXJzIG9yIHNob3J0IHN0cmluZ3MgZm9yIE8oMSkgbG9va3VwIGVmZmljaWVuY3kgaW4gdGhlIGhldXJpc3RpYy4iLAogICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJ2YWxpZFZhbHVlcyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiU3RhbmRhcmQgSFRUUCBzdGF0dXMgY29kZXNcblxuQXJyYXkgb2YgYWxsIHN0YW5kYXJkIEhUVFAgc3RhdHVzIGNvZGVzIGFzIGRlZmluZWQgYnkgdGhlIElBTkEgSFRUUCBTdGF0dXMgQ29kZSBSZWdpc3RyeSBhbmQgcmVsZXZhbnQgUkZDcyAoZS5nLiwgUkZDIDkxMTAsIFJGQyA2NTg1LCBSRkMgNzIzMS03MjM1LCBSRkMgNzUzOCwgUkZDIDc3MjUsIFJGQyA4Mjk3LCBSRkMgOTExMSkuIFRoaXMgYXJyYXlzIHZhbGlkYXRlcyBwb3RlbnRpYWwgSFRUUCBzdGF0dXMgY29kZXMgaW4gbG9nIGV2ZW50cywgZW5zdXJpbmcgb25seSByZWNvZ25pemVkIGNvZGVzIGFyZSBleHRyYWN0ZWQuIEVhY2ggZW50cnkgaW5jbHVkZXMgdGhlIG51bWVyaWMgY29kZSBmb2xsb3dlZCBieSBhIGNvbW1lbnQgZGVzY3JpYmluZyBpdHMgbWVhbmluZyBhbmQgcHVycG9zZS4iLAogICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJrZXl3b3JkcyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiQXJyYXkgb2Yga2V5d29yZHMgaW5kaWNhdGluZyBIVFRQLXJlbGF0ZWQgY29udGV4dCBpbiBsb2cgZXZlbnRzXG5cblRoaXMgbGlzdCBmaWx0ZXJzIGxvZ3MgbGlrZWx5IGNvbnRhaW5pbmcgSFRUUCBzdGF0dXMgY29kZXMsIHJlZHVjaW5nIGZhbHNlIHBvc2l0aXZlcy4gS2V5d29yZHMgY292ZXIgSFRUUCBtZXRob2RzLCBjb21tb24gbG9nIGZpZWxkcywgYW5kIGZvcm1hdC1zcGVjaWZpYyB0ZXJtcyBmcm9tIHNvdXJjZXMgbGlrZSBBcGFjaGUsIE5naW54LCBIQVByb3h5LCBTcXVpZCwgSUlTLCBTcHJpbmcgQm9vdC4iLAogICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJzdHJpY3RLZXl3b3JkcyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiQXJyYXkgb2Ygc3RyaWN0IEhUVFAgbWFya2VycyB0aGF0IG11c3QgYXBwZWFyIG5lYXIgYSBjYW5kaWRhdGUgSFRUUCBjb2RlIHRva2VuXG5cblNob3J0LCBoaWdoLXNpZ25hbCBzdWJzZXQgb2YgSFRUUCBtYXJrZXJzIHVzZWQgYXMgYSBzdHJ1Y3R1cmFsIGd1YXJkIGR1cmluZyB0ZW1wbGF0ZSBpbml0aWFsaXphdGlvbi4gQWZ0ZXIgYSBjYW5kaWRhdGUgSFRUUCBzdGF0dXMgdmFyaWFibGUgdG9rZW4gaXMgZm91bmQgdmlhIFtodHRwQ29kZVZhbGlkVmFsdWVzXSgjaHR0cGNvZGV2YWxpZHZhbHVlcyksIHRoZSB0ZW1wbGF0ZSBpbml0aWFsaXplciByZXF1aXJlcyB0aGF0IGF0IGxlYXN0IG9uZSBvZiB0aGVzZSBzdHJpY3QgbWFya2VycyBhcHBlYXIgd2l0aGluIGEgc21hbGwgdG9rZW4gd2luZG93ICjCsTUgYnkgZGVmYXVsdCkgYXJvdW5kIHRoZSBjYW5kaWRhdGUuIFdpdGhvdXQgdGhpcyBjaGVjaywgYW55IG51bWVyaWMgdmFyaWFibGUgdGhhdCBoYXBwZW5zIHRvIGhvbGQgYSB2YWx1ZSBpbiAxMDAuLjU5OSBvbiBpdHMgZmlyc3Qgb2JzZXJ2ZWQgZXZlbnQgKGUuZy4sIGEga2Fma2EgY29uZmlnIGxpbWl0IGxpa2UgYG1heC5yZXF1ZXN0LnNpemUgPSAyMDBgLCBhIEpWTSBgLURjbGsudGNrPTEwMGApIGdldHMgd3JvbmdseSBib3VuZCBhcyBhbiBIVFRQIGNvZGUgYW5kIHN1YnNlcXVlbnQgZXZlbnRzIGNhcnJ5IHRocm91Z2ggYXJiaXRyYXJ5IG5vbi1IVFRQIHZhbHVlcyBhdCB0aGF0IHBvc2l0aW9uLiAgVGhlIHN0cmljdCBsaXN0IHNob3VsZCBjb250YWluIG9ubHkgdG9rZW5zIHRoYXQgdW5hbWJpZ3VvdXNseSBtYXJrIGFuIEhUVFAgZXhjaGFuZ2U6IEhUVFAgbWV0aG9kIHZlcmJzIChgR0VUYCwgYFBPU1RgLCAuLi4pLCBwcm90b2NvbCB2ZXJzaW9ucyAoYEhUVFAvMS4xYCwgYEhUVFAvMmApLCBzdGF0dXMta2V5ZWQgSlNPTiBmaWVsZHMgKGBzdGF0dXNgLCBgc3RhdHVzQ29kZWAsIGBodHRwX3N0YXR1c2AsIGB1cHN0cmVhbV9zdGF0dXNgKSwgYW5kIGZyYW1ld29yay1zcGVjaWZpYyBwaHJhc2VzIHRoYXQgYWx3YXlzIHByZWNlZGUgYSBzdGF0dXMgY29kZSBpbiByZWFsIHRyYWZmaWMgKGBDb21wbGV0ZWRgLCBgRGlzcGF0Y2hlclNlcnZsZXRgLCBgVENQX01JU1NgKS4gSXQgaXMgaW50ZW50aW9uYWxseSBtdWNoIHNtYWxsZXIgdGhhbiBbaHR0cENvZGVLZXl3b3Jkc10oI2h0dHBjb2Rla2V5d29yZHMpLCB3aGljaCBpcyB1c2VkIGFzIGEgY2hlYXAgcHJlLWZpbHRlciBvdmVyIHRoZSBmdWxsIHRlbXBsYXRlIGJvZHkgYW5kIGNhbiBpbmNsdWRlIGxvb3NlIHRlcm1zLiIsCiAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSwKICAgICAgInJlcXVpcmVkIiA6IFsKICAgICAgICAiZmllbGQiCiAgICAgIF0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB0cnVlCn0=</template>

        ```yaml
        # 🔟❎ 'run' HTTP code classifier configuration
        
        # The HTTP code classifier enriches TenXObjects with an extracted HTTP numeric response code (e.g., 404) field.
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Dependencies ================================
        
        include: run/modules/initialize/httpCode
        
        # =============================== GeoIP Options ===============================
        
        httpCode:
        
          # 'field' specifies the name of the field in which to assign an extracted HTTP status code, if found
          field: http_code
        
          # 'precludersBefore' specifies an array of characters or patterns that, when appearing immediately before a candidate HTTP status code in tokenized logs, indicate it is not a valid HTTP code.
          #  Used to preclude false positives like negative numbers ('-200'), floats ('.200'), or variables ('_200').
          #  Entries are single characters or short strings for O(1) lookup efficiency in the heuristic.
          precludersBefore: ['+', '$', '#', '@', '(', '[', '~', '-', '.', ':']
        
          # 'precludersAfter' specifies an array of characters or patterns that, when appearing immediately after a candidate HTTP status code in tokenized logs, indicate it is not a valid HTTP code.
          #  Used to preclude false positives like percentages ('200%'), floats ('200.'), or expressions ('200+').
          #  Entries are single characters or short strings for O(1) lookup efficiency in the heuristic.
          precludersAfter: ['%', ')', ']', '=', '!', '?', '+', '-', '.']
        
          # 'keywords' specifies an array of keywords indicating HTTP-related context in log events.
          #  Used to filter logs likely containing HTTP status codes, reducing false positives.
          #  Keywords cover HTTP methods, common log fields, and format-specific terms from sources like Apache, Nginx, HAProxy, Squid, IIS, Spring Boot.
          keywords:
            - HTTP/             # Indicates HTTP protocol version in request lines (e.g., "GET / HTTP/1.1").
            - GET               # HTTP method for retrieving resources.
            - POST              # HTTP method for submitting data.
            - PUT               # HTTP method for updating resources.
            - DELETE            # HTTP method for deleting resources.
            - HEAD              # HTTP method for retrieving headers only.
            - OPTIONS           # HTTP method for describing communication options.
            - TRACE             # HTTP method for diagnostic purposes.
            - PATCH             # HTTP method for partial updates.
            - request           # Common in log fields referring to HTTP requests (e.g., "requestMethod").
            - Request           # Title case variant for HTTP requests
            - response          # Common in log fields referring to HTTP responses (e.g., "responseSize").
            - Response          # Title case variant for HTTP responses
            - status            # Common key for HTTP status codes (e.g., "status":200).
            - Status            # Title case variant for HTTP status
            - code              # Shorthand for status code (e.g., "code":404).
            - Code              # Title case variant for status code
            - upstream_status   # Nginx-specific for backend status codes.
            - Upstream_status   # Title case variant for Nginx backend status
            - Upstream_Status   # Title case variant for Nginx backend status
            - http_status       # JSON key for HTTP status (e.g., "http_status":500).
            - Http_status       # Title case variant for JSON key for HTTP status
            - Http_Status       # Title case variant for JSON key for HTTP status
            - status_code       # Alternative key for status codes (e.g., "status_code":429).
            - statusCode        # Camel case variant for status codes (e.g., "statusCode":200)
            - Completed         # Spring Boot DispatcherServlet log indicator (e.g., "Completed 200 OK").
            - access            # Indicates access logs (e.g., Apache access log).
            - Access            # Title case variant for access logs
            - error             # Indicates error logs containing HTTP errors.
            - Error             # Title case variant for error logs
            - method            # Refers to HTTP request method (e.g., "method":"GET").
            - Method            # Title case variant for HTTP method
            - path              # Refers to request path or URI (e.g., "path":"/api").
            - Path              # Title case variant for request path
            - url               # Refers to request URL (e.g., "url":"http://example.com").
            - Url               # Title case variant for request URL
            - URL               # Title case variant for request URL
            - referrer          # HTTP referrer header field.
            - referrer          # Title case variant for referrer header field.
            - Referer           # Alternative spelling for HTTP referrer
            - Referer           # Title case variant for alternative spelling
            - user-agent        # HTTP user-agent header field.
            - User-agent        # Title case variant for user-agent
            - User-Agent        # Title case variant for user-agent
            - latency           # Common in logs for request/response time (e.g., HAProxy, ELB).
            - Latency           # Title case variant for latency
            - frontend          # HAProxy term for incoming connections.
            - Frontend          # Title case variant for HAProxy frontend
            - backend           # HAProxy term for upstream servers.
            - Backend           # Title case variant for HAProxy backend
            - TCP_MISS          # Squid hierarchy code prefix (e.g., "TCP_MISS/200").
            - W3SVC             # IIS log prefix (e.g., "W3SVC1").
            - DispatcherServlet # Spring Boot servlet class for HTTP handling.
        
          # 'strictKeywords' is a short, high-signal subset of keywords used as a
          #  structural guard during template initialization. After a candidate HTTP
          #  status variable token is found in the template via 'validValues', the
          #  initializer requires at least one of these strict markers to appear
          #  within a small token window (±5) around the candidate before the
          #  httpToken position is bound.
          #
          #  Without this check, any numeric variable that happens to hold a value
          #  in 100..599 on the first observed event gets wrongly bound as the HTTP
          #  code position, e.g. a kafka config limit `max.request.size = 200`, a
          #  JVM `-Dclk.tck=100`, or any framework metric that emits counts in the
          #  low hundreds. Subsequent events at the same variable position then
          #  carry arbitrary non-HTTP values (1, 2, 2000, ...) that get emitted as
          #  http_code garbage.
          #
          #  Entries here should be ONLY tokens that unambiguously mark an HTTP
          #  exchange. The loose list in 'keywords' above (which includes terms
          #  like `error`, `path`, `url`) is too broad for adjacency gating.
          strictKeywords:
            - HTTP/             # HTTP protocol version marker in request lines (e.g., "HTTP/1.1 200 OK").
            - status            # JSON/KV key for HTTP status (e.g., "status":200, status=500).
            - Status            # Title case variant.
            - statusCode        # CamelCase variant of status code key.
            - status_code       # Snake case variant.
            - http_status       # HTTP-prefixed status key.
            - Http_Status       # Title case variant.
            - Http_status       # Mixed case variant.
            - upstream_status   # Nginx backend status key.
            - Upstream_Status   # Title case variant.
            - code              # JSON/KV key for response code (e.g., "code":404).
            - Code              # Title case variant (also catches `statusCode`-style splits).
            - Completed         # Spring Boot DispatcherServlet log phrase (e.g., "Completed 200 OK").
            - DispatcherServlet # Spring Boot servlet class that always emits a status next.
            - TCP_MISS          # Squid hierarchy code prefix (always followed by "/<code>").
            - response          # HTTP response marker.
            - Response          # Title case variant.
            - GET               # HTTP method verbs, always appear in request-log entries with codes.
            - POST
            - PUT
            - DELETE
            - PATCH
            - HEAD
            - OPTIONS
            - TRACE
        
          # 'validValues' specifies an array of all standard HTTP status codes as defined by the IANA HTTP Status Code Registry and relevant RFCs (e.g., RFC 9110, RFC 6585, RFC 7231-7235, RFC 7538, RFC 7725, RFC 8297, RFC 9111).
          #  Used to validate potential HTTP status codes in log events, ensuring only recognized codes are extracted.
          #  Each entry includes the numeric code followed by a comment describing its meaning and purpose.
          validValues:
            - '200' # OK: Standard response for successful HTTP requests.
            - '304' # Not Modified: Resource has not been modified since last requested.
            - '404' # Not Found: Server cannot find the requested resource.
            - '301' # Moved Permanently: Resource has been moved permanently to a new URI.
            - '302' # Found: Resource temporarily located at a different URI.
            - '403' # Forbidden: Client does not have access rights to the content.
            - '400' # Bad Request: Server cannot process due to client error.
            - '500' # Internal Server Error: Generic server error.
            - '206' # Partial Content: Server is delivering only part of the resource due to a range header.
            - '503' # Service Unavailable: Server temporarily unable to handle request.
            - '401' # Unauthorized: Authentication required and has failed or not provided.
            - '204' # No Content: Server processed request but no content is returned.
            - '502' # Bad Gateway: Server received an invalid response from upstream.
            - '201' # Created: Request has been fulfilled, resulting in new resource creation.
            - '429' # Too Many Requests: Client has sent too many requests in a given time.
            - '308' # Permanent Redirect: Resource permanently at another URI, method unchanged.
            - '307' # Temporary Redirect: Resource temporarily at another URI, method unchanged.
            - '303' # See Other: Response can be found under a different URI using GET.
            - '405' # Method Not Allowed: Request method is not supported for the resource.
            - '406' # Not Acceptable: Server cannot produce a response matching client’s Accept headers.
            - '408' # Request Timeout: Server timed out waiting for the request.
            - '409' # Conflict: Request conflicts with current state of the resource.
            - '410' # Gone: Resource is permanently unavailable.
            - '413' # Content Too Large: Request entity is larger than server limits.
            - '414' # URI Too Long: Request-URI is longer than the server can handle.
            - '415' # Unsupported Media Type: Media format of the requested data is not supported.
            - '416' # Range Not Satisfiable: Requested range cannot be fulfilled.
            - '422' # Unprocessable Content: Request is well-formed but semantically incorrect.
            - '504' # Gateway Timeout: Server, as gateway, did not get timely upstream response.
            - '505' # HTTP Version Not Supported: Server does not support the HTTP version.
            - '100' # Continue: Client should continue with request.
            - '101' # Switching Protocols: Server is switching protocols as requested.
            - '202' # Accepted: Request accepted for processing, but processing is not complete.
            - '203' # Non-Authoritative Information: Server is a transforming proxy with non-authoritative metadata.
            - '205' # Reset Content: Client should reset the document view.
            - '300' # Multiple Choices: Indicates multiple options for the resource.
            - '411' # Length Required: Content-Length header is required but not provided.
            - '412' # Precondition Failed: Server does not meet one of the preconditions.
            - '417' # Expectation Failed: Server cannot meet Expect header requirements.
            - '421' # Misdirected Request: Request sent to server unable to produce a response.
            - '423' # Locked: Resource is locked (WebDAV).
            - '424' # Failed Dependency: Request failed due to failure of a previous request.
            - '425' # Too Early: Server unwilling to risk processing a request that might be replayed.
            - '426' # Upgrade Required: Client should switch to a different protocol.
            - '428' # Precondition Required: Server requires conditional request headers.
            - '431' # Request Header Fields Too Large: Headers exceed server limits.
            - '451' # Unavailable For Legal Reasons: Resource access blocked for legal reasons.
            - '501' # Not Implemented: Server does not support the requested functionality.
            - '506' # Variant Also Negotiates: Server configuration error in content negotiation.
            - '507' # Insufficient Storage: Server cannot store the representation (WebDAV).
            - '508' # Loop Detected: Server detected an infinite loop in request processing.
            - '510' # Not Extended: Further extensions required for request fulfillment.
            - '511' # Network Authentication Required: Client needs to authenticate for network access.
            - '102' # Processing: Server has received and is processing the request.
            - '103' # Early Hints: Used to return some response headers before final HTTP message.
            - '207' # Multi-Status: Conveys information about multiple resources in WebDAV.
            - '208' # Already Reported: Used inside a DAV binding to avoid enumerating bindings repeatedly.
            - '226' # IM Used: Server has fulfilled a request for the resource using instance-manipulations.
            - '305' # Use Proxy: Resource is available only through a proxy.
            - '306' # (Unused): Previously used for Switch Proxy, now reserved.
            - '402' # Payment Required: Reserved for future use, e.g., digital payments.
            - '407' # Proxy Authentication Required: Client must authenticate with proxy.
            - '418' # (Unused): Previously “I’m a teapot” (RFC 2324, joke).
        ```

    === ":material-table-eye: Lookup"

  
        #### lookup {.hidden-heading}
        Configure  the [File Lookup](/run/initialize/lookup "Enrich TenXObjects with lookup table values") to enrich TenXObjects with lookup table values.  
  
        Below is the default configuration from: [lookup/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/initialize/lookup/config.yaml "lookup/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/initialize/lookup/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml5-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml5-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml5-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit File Lookup Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml5-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/initialize/lookup/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/initialize/lookup/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/initialize/lookup/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/initialize/lookup/config.yaml">$TENX_CONFIG/run/initialize/lookup/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/initialize/lookup/config.yaml">./pipelines/run/initialize/lookup/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgImxvb2t1cCIgOiB7CiAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAiZmlsZSIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiVFNWL0NTViBmaWxlIHRvIGxvYWRcblxuVGhlIHRhcmdldCAudHN2Ly5jc3YgbG9va3VwIGZpbGUgdG8gbG9hZCIKICAgICAgICB9LAogICAgICAgICJrZXlGaWVsZCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiVGVuWE9iamVjdCBmaWVsZCBuYW1lIHRvIHVzZSBhcyBsb29rdXAga2V5XG5cblNwZWNpZmllcyBhIGZpZWxkIG5hbWUgd2hvc2UgdmFsdWUgdG8gZXh0cmFjdCBmcm9tIGEgdGFyZ2V0IFRlblhPYmplY3QgdG8gdXNlIGFzIHRoZSBsb29rdXAga2V5LCB0aGF0IGlzIHRoZSB2YWx1ZSB1c2VkIHRvIHNlYXJjaCBmb3IgYSBtYXRjaGluZyB2YWx1ZSB3aXRoaW4gdGhlIGxvb2t1cCBmaWxlLiIKICAgICAgICB9LAogICAgICAgICJ2YWx1ZUZpZWxkIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJUZW5YT2JqZWN0IGZpZWxkIG5hbWUgdG8gdXNlIGFzIHRoZSBsb29rdXAgdmFsdWVcblxuU3BlY2lmaWVzIHRoZSBmaWVsZCBuYW1lIHdpdGggdGhlIHRhcmdldCBUZW5YT2JqZWN0IHRvIHNldCB3aXRoIHRoZSByZXN1bHQgbG9va3VwIHZhbHVlIGFjcXVpcmVkIGJ5IHNlYXJjaGluZyB0aGUgdGFibGUgZm9yIHRoZSB2YWx1ZSBvZiBbbG9va3VwS2V5RmllbGRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2luaXRpYWxpemUvbG9va3VwLyNsb29rdXBrZXlmaWVsZCkuIgogICAgICAgIH0sCiAgICAgICAgInZhbHVlQ29sdW1uIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJOYW1lIG9mIGxvb2t1cCB2YWx1ZSBjb2x1bW5cblxuU3BlY2lmaWVzIGEgY29sdW1uIGluIHRoZSBbbG9va3VwRmlsZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vaW5pdGlhbGl6ZS9sb29rdXAvI2xvb2t1cGZpbGUpIHdob3NlIHZhbHVlIHRvIGFzc2lnbiBmcm9tIHRoZSBmaXJzdCBjb2x1bW4gaW4gdGhlIHRhYmxlIChpLmUuLCB0aGUga2V5IGNvbHVtbikgaW50byBbbG9va3VwVmFsdWVGaWVsZF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vaW5pdGlhbGl6ZS9sb29rdXAvI2xvb2t1cHZhbHVlZmllbGQpIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiAgdGhlIFtsb29rdXBLZXlGaWVsZF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vaW5pdGlhbGl6ZS9sb29rdXAvI2xvb2t1cGtleWZpZWxkKSBmaWVsZCB2YWx1ZS4gKERlZmF1bHQ6IHNlY29uZCBjb2x1bW4gaW4gdGFibGUgKGZpcnN0IGNvbHVtbiBpcyBhc3N1bWVkIGFzIHRoZSBrZXkpKSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiAic2Vjb25kIGNvbHVtbiBpbiB0YWJsZSAoZmlyc3QgY29sdW1uIGlzIGFzc3VtZWQgYXMgdGhlIGtleSkiCiAgICAgICAgfQogICAgICB9LAogICAgICAicmVxdWlyZWQiIDogWwogICAgICAgICJmaWxlIiwKICAgICAgICAia2V5RmllbGQiLAogICAgICAgICJ2YWx1ZUZpZWxkIgogICAgICBdCiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogdHJ1ZQp9</template>

        ```yaml
        # 🔟❎ 'run' lookup file configuration
        
        # Configuration text lookup to enrich TenXObjects
        # To learn more see https://doc.log10x.com/run/initialize/lookup/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Dependencies ================================
        
        include: run/modules/initialize/lookup
        
        # ============================== Lookup Options ===============================
        
        lookup:
        
          # 'file' specifies the .csv/.tsv lookup table file
          file: $=path("pipelines/run/initialize/lookup/http.csv")
        
          # 'keyField' specifies the field whose value is query lookup key.
          #  The calculated code field below captures the penultimate HTTP code value from a web log event.
          #  For example, 200 for: Mar 10 12:34:56 webserver nginx: 192.168.1.10 - - [10/Mar/2025:12:34:56 +0000] "GET /index.html HTTP/1.1" 200 1024
          keyField: $=yield TenXEnv.get("httpCodeField")
        
          # 'valueField' specifies the name of the result field to assign to the lookup table value
          valueField: http_message
        ```

    === ":material-kubernetes: K8s"

  
        #### k8s {.hidden-heading}
        Configure  the [k8s Context Extractor](/run/initialize/k8s "Enrich TenXObjects with k8s pod and container information") to enrich TenXObjects with k8s pod and container information.  
  
        Below is the default configuration from: [k8s/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/initialize/k8s/config.yaml "k8s/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/initialize/k8s/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml6-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml6-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml6-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit k8s Context Extractor Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml6-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/initialize/k8s/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/initialize/k8s/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/initialize/k8s/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/initialize/k8s/config.yaml">$TENX_CONFIG/run/initialize/k8s/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/initialize/k8s/config.yaml">./pipelines/run/initialize/k8s/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgIms4cyIgOiB7CiAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAiZXh0cmFjdG9yTmFtZSIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiBleHRyYWN0b3IgdG8gdXNlIGZvciBrOHMgY29udGV4dCBleHRyYWN0aW9uXG5cbkRlZmluZXMgdGhlIG5hbWUgb2YgdGhlIFtleHRyYWN0b3JdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2lucHV0L2V4dHJhY3QvKSB0byB1c2UgZm9yIGs4cyBjb250ZXh0IGV4dHJhY3Rpb24uIFRvIGxlYXJuIG1vcmUgc2VlIFtrOHMgZXh0cmFjdG9yc10oaHR0cHM6Ly9naXRodWIuY29tL2xvZy0xMHgvbW9kdWxlcy9ibG9iL21haW4vcGlwZWxpbmVzL3J1bi9tb2R1bGVzL2luaXRpYWxpemUvazhzL3NldHRpbmdzLnlhbWwpIChEZWZhdWx0OiBmbHVlbnRLOHMpIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICJmbHVlbnRLOHMiCiAgICAgICAgfSwKICAgICAgICAibmFtZXNwYWNlTmFtZUZpZWxkIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJLOHMgbmFtZXNwYWNlIHRhcmdldCBmaWVsZCBuYW1lXG5cblNwZWNpZnkgdGhlIGZpZWxkIG5hbWUgdG8gYXNzaWduIHdpdGggdGhlIGV4dHJhY3RlZCBrOHMgW25hbWVzcGFjZV0oaHR0cHM6Ly9rdWJlcm5ldGVzLmlvL2RvY3MvY29uY2VwdHMvb3ZlcnZpZXcvd29ya2luZy13aXRoLW9iamVjdHMvbmFtZXNwYWNlcy8pIChEZWZhdWx0OiBuYW1lc3BhY2UpIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICJuYW1lc3BhY2UiCiAgICAgICAgfSwKICAgICAgICAiY29udGFpbmVyTmFtZUZpZWxkIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJLOHMgY29udGFpbmVyIG5hbWUgdGFyZ2V0IGZpZWxkIG5hbWVcblxuU3BlY2lmeSB0aGUgZmllbGQgbmFtZSB0byBhc3NpZ24gd2l0aCB0aGUgZXh0cmFjdGVkIGs4cyBbY29udGFpbmVyIG5hbWVdKGh0dHBzOi8va3ViZXJuZXRlcy5pby9kb2NzL2NvbmNlcHRzL2NvbnRhaW5lcnMvKSAoRGVmYXVsdDogY29udGFpbmVyKSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiAiY29udGFpbmVyIgogICAgICAgIH0sCiAgICAgICAgInBvZE5hbWVGaWVsZCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiSzhzIHBvZCBuYW1lIHRhcmdldCBmaWVsZCBuYW1lXG5cblNwZWNpZnkgdGhlIGZpZWxkIG5hbWUgdG8gYXNzaWduIHdpdGggdGhlIGV4dHJhY3RlZCBrOHMgW3BvZCBuYW1lXShodHRwczovL2t1YmVybmV0ZXMuaW8vZG9jcy9jb25jZXB0cy93b3JrbG9hZHMvcG9kcy8pIChEZWZhdWx0OiBwb2QpIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICJwb2QiCiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogdHJ1ZQp9</template>

        ```yaml
        # 🔟❎ 'run' k8s lookup configuration
        
        # Configure a k8s field extractors to enrich TenXObjects
        # To learn more see https://doc.log10x.com/run/initialize/k8s/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Dependencies ================================
        
        include: run/modules/initialize/k8s
        
        # ============================== Symbol Options ===============================
        
        k8s:
        
          # 'extractorName' specifies which extractor (e.g., fluentK8s/filebeatK8s) to use for k8s metadata extraction
          extractorName: fluentK8s # extract k8s context using Fluent schema
        
          # 'namespaceNameField' specifies the name of the field in which to assign an extracted k8 namespace name status code, if found
          namespaceNameField: k8s_namespace
        
          # 'containerNameField' specifies the name of the field in which to assign an extracted k8 container name status code, if found
          containerNameField: k8s_container
        
          # 'podNameField' specifies the name of the field in which to assign an extracted k8 pod name.
          # Default empty. Pod names churn on every deploy (each restart mints a new pod ID), so
          # surfacing pod name as a metric-label dimension causes unbounded TSDB active-series growth.
          # The stable 'k8s_namespace' + 'k8s_container' enrichments above cover the common per-app
          # attribution case without the deploy-churn cost. To opt in to per-pod resolution, set this
          # to a concrete field name (e.g. 'k8s_pod'); the 'tenx_user_process' alias activates with it.
          podNameField: ""
        ```

    === ":material-globe-model: GeoIP"

  
        #### geoIP {.hidden-heading}
        Configure  the [GeoIP lookup](/run/initialize/geoIP "Geo-reference TenXObjects via their ipAddress value") to geo-reference TenXObjects via their ipAddress value.  
  
        Below is the default configuration from: [geoIP/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/initialize/geoIP/config.yaml "geoIP/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/initialize/geoIP/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml7-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml7-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml7-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit GeoIP lookup Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml7-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/initialize/geoIP/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/initialize/geoIP/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/initialize/geoIP/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/initialize/geoIP/config.yaml">$TENX_CONFIG/run/initialize/geoIP/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/initialize/geoIP/config.yaml">./pipelines/run/initialize/geoIP/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgImdlb0lQIiA6IHsKICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICJmaWxlIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJNYXhNaW5kIEdlb0lQIGZpbGUgKC5tbWRiKVxuXG5UaGUgW01heE1pbmRdKGh0dHBzOi8vd3d3Lm1heG1pbmQuY29tL2VuL2dlb2lwMi1kYXRhYmFzZXMpIEdlb0lQIERCIGZpbGUgKC5tbWRiKSB0byBsb2FkLiBUbyBsZWFybiBtb3JlLCBzZWUgW2xvYWRHZW9JUERCXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWExvb2t1cC5sb2FkR2VvSVBEQikuIgogICAgICAgIH0sCiAgICAgICAgImNvbnRpbmVudEZpZWxkIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJGaWVsZCBuYW1lIGZvciBjb250aW5lbnQgZ2VvLXJlZmVyZW5jZVxuXG5TcGVjaWZpZXMgdGhlIGZpZWxkIG5hbWUgdG8gc3RvcmUgdGhlIGNvbnRpbmVudCBnZW8tcmVmZXJlbmNlIGRhdGEgKGUuZy4sIFwibXlfY29udGluZW50XCIpLiBEZWZhdWx0cyB0byBcImNvbnRpbmVudFwiLiBTZXQgdG8gXCJcIiB0byBkaXNhYmxlIGNvbnRpbmVudCBlbnJpY2htZW50LiAoRGVmYXVsdDogY29udGluZW50KSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiAiY29udGluZW50IgogICAgICAgIH0sCiAgICAgICAgImNvdW50cnlGaWVsZCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRmllbGQgbmFtZSBmb3IgY291bnRyeSBnZW8tcmVmZXJlbmNlXG5cblNwZWNpZmllcyB0aGUgZmllbGQgbmFtZSB0byBzdG9yZSB0aGUgY291bnRyeSBnZW8tcmVmZXJlbmNlIGRhdGEgKGUuZy4sIFwibXlfY291bnRyeVwiKS4gRGVmYXVsdHMgdG8gXCJjb3VudHJ5XCIuIFNldCB0byBcIlwiIHRvIGRpc2FibGUgY291bnRyeSBlbnJpY2htZW50LiAoRGVmYXVsdDogY291bnRyeSkiLAogICAgICAgICAgImRlZmF1bHQiIDogImNvdW50cnkiCiAgICAgICAgfSwKICAgICAgICAic3ViZGl2aXNpb25GaWVsZCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRmllbGQgbmFtZSBmb3Igc3ViZGl2aXNpb24gZ2VvLXJlZmVyZW5jZVxuXG5TcGVjaWZpZXMgdGhlIGZpZWxkIG5hbWUgdG8gc3RvcmUgdGhlIHN1YmRpdmlzaW9uIChzdGF0ZS9yZWdpb24pIGdlby1yZWZlcmVuY2UgZGF0YSAoZS5nLiwgXCJteV9yZWdpb25cIikuIERlZmF1bHRzIHRvIFwic3ViZGl2aXNpb25cIi4gU2V0IHRvIFwiXCIgdG8gZGlzYWJsZSBzdWJkaXZpc2lvbiBlbnJpY2htZW50LiAoRGVmYXVsdDogc3ViZGl2aXNpb24pIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICJzdWJkaXZpc2lvbiIKICAgICAgICB9LAogICAgICAgICJjaXR5RmllbGQiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkZpZWxkIG5hbWUgZm9yIGNpdHkgZ2VvLXJlZmVyZW5jZVxuXG5TcGVjaWZpZXMgdGhlIGZpZWxkIG5hbWUgdG8gc3RvcmUgdGhlIGNpdHkgZ2VvLXJlZmVyZW5jZSBkYXRhIChlLmcuLCBcIm15X2NpdHlcIikuIERlZmF1bHRzIHRvIFwiY2l0eVwiLiBTZXQgdG8gXCJcIiB0byBkaXNhYmxlIGNpdHkgZW5yaWNobWVudC4gKERlZmF1bHQ6IGNpdHkpIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICJjaXR5IgogICAgICAgIH0sCiAgICAgICAgInBvc3RhbEZpZWxkIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJGaWVsZCBuYW1lIGZvciBwb3N0YWwgY29kZSBnZW8tcmVmZXJlbmNlXG5cblNwZWNpZmllcyB0aGUgZmllbGQgbmFtZSB0byBzdG9yZSB0aGUgcG9zdGFsIGNvZGUgZ2VvLXJlZmVyZW5jZSBkYXRhIChlLmcuLCBcIm15X3Bvc3RhbFwiKS4gRGVmYXVsdHMgdG8gXCJwb3N0YWxcIi4gU2V0IHRvIFwiXCIgdG8gZGlzYWJsZSBwb3N0YWwgY29kZSBlbnJpY2htZW50LiAoRGVmYXVsdDogcG9zdGFsKSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiAicG9zdGFsIgogICAgICAgIH0sCiAgICAgICAgImxhdGl0dWRlRmllbGQiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkZpZWxkIG5hbWUgZm9yIGxhdGl0dWRlIGdlby1yZWZlcmVuY2VcblxuU3BlY2lmaWVzIHRoZSBmaWVsZCBuYW1lIHRvIHN0b3JlIHRoZSBsYXRpdHVkZSBnZW8tcmVmZXJlbmNlIGRhdGEgKGUuZy4sIFwibXlfbGF0aXR1ZGVcIikuIERlZmF1bHRzIHRvIFwibGF0aXR1ZGVcIi4gU2V0IHRvIFwiXCIgdG8gZGlzYWJsZSBsYXRpdHVkZSBlbnJpY2htZW50LiAoRGVmYXVsdDogbGF0aXR1ZGUpIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICJsYXRpdHVkZSIKICAgICAgICB9LAogICAgICAgICJsb25naXR1ZGVGaWVsZCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRmllbGQgbmFtZSBmb3IgbG9uZ2l0dWRlIGdlby1yZWZlcmVuY2VcblxuU3BlY2lmaWVzIHRoZSBmaWVsZCBuYW1lIHRvIHN0b3JlIHRoZSBsb25naXR1ZGUgZ2VvLXJlZmVyZW5jZSBkYXRhIChlLmcuLCBcIm15X2xvbmdpdHVkZVwiKS4gRGVmYXVsdHMgdG8gXCJsb25naXR1ZGVcIi4gU2V0IHRvIFwiXCIgdG8gZGlzYWJsZSBsb25naXR1ZGUgZW5yaWNobWVudC4gKERlZmF1bHQ6IGxvbmdpdHVkZSkiLAogICAgICAgICAgImRlZmF1bHQiIDogImxvbmdpdHVkZSIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJyZXF1aXJlZCIgOiBbCiAgICAgICAgImZpbGUiCiAgICAgIF0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB0cnVlCn0=</template>

        ```yaml
        # 🔟❎ 'run' GeoIP lookup configuration
        
        # The GeoIP lookup geo-references TenXObjects based on their ipAddress field value.
        # To learn more see https://doc.log10x.com/api/js/#TenXObject+ipAddress
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Dependencies ================================
        
        include: run/modules/initialize/geoIP
        
        # =============================== GeoIP Options ===============================
        
        geoIP:
         
          # 'file' specifies the MaxMind GeoIP DB (.mmdb) file to load.
          # To learn more see https://doc.log10x.com/api/js/#TenXLookup.loadGeoIPDB
          file: data/run/lookup/geo.mmdb
        
          # 'countryField' specifies the field name for country geo-reference data.
          # Defaults to "country". Set to "" to disable country enrichment.
          countryField: country
        
          # Uncomment the following fields to enable additional geo-reference data as needed:
          # continentField: continent
          # subdivisionField: subdivision
          # cityField: city
          # postalField: postal
          # latitudeField: latitude
          # longitudeField: longitude
        ```

??? tenx-receivers "Receivers"

    <a id="receivers"></a>
    ### Receivers {.hidden-heading}

    Activate an [Output receiver](/run/output/receive "Filter and sample TenXObjects based on per-node budget sampling or a declarative field-set mute file") to filter and sample TenXObjects based on per-node budget sampling or a declarative field-set mute file.

    === ":material-progress-check: Rate"

  
        #### rate {.hidden-heading}
        Configure  the [rate receiver](/run/receive/rate "Filter TenXObjects from output using either local per-node budget sampling or a declarative field-set keyed mute file.") to filter TenXObjects from output using either local per-node budget sampling or a declarative field-set keyed mute file..  
  
        Below is the default configuration from: [rate/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/receive/rate/config.yaml "rate/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/receive/rate/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml8-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml8-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml8-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit rate receiver Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml8-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/receive/rate/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/receive/rate/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/receive/rate/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/receive/rate/config.yaml">$TENX_CONFIG/run/receive/rate/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/receive/rate/config.yaml">./pipelines/run/receive/rate/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgInJhdGVSZWNlaXZlciIgOiB7CiAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAiZmllbGROYW1lcyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBvZiBUZW5YT2JqZWN0IGZpZWxkcyB0byBpZGVudGlmeSByYXRlIGNvdW50ZXIgYnVja2V0c1xuXG5EZWZpbmVzIHRoZSBsaXN0IG9mIFRlblhPYmplY3QgZmllbGQgbmFtZXMgZXh0cmFjdGVkIHRvIGlkZW50aWZ5IHdoaWNoIHJhdGUgY291bnRlciBidWNrZXQgYW4gZXZlbnQgYmVsb25ncyB0by4gVGhlIGxpc3QgdXN1YWxseSBjb250YWlucyB0aGUgYHN5bWJvbE1lc3NhZ2VgIGZpZWxkIGZyb20gdGhlIFttZXNzYWdlIGVucmljaG1lbnRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2luaXRpYWxpemUvbWVzc2FnZS8pIG1vZHVsZSBidXQgY2FuIGluY2x1ZGUgYWRkaXRpb25hbCBmaWVsZHMgbGlrZSBbR2VvSVBdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2luaXRpYWxpemUvZ2VvSVAvKSwgW0hUVFAgY29kZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vaW5pdGlhbGl6ZS9odHRwQ29kZS8pLCBbazhzIGNvbnRhaW5lciBuYW1lXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9pbml0aWFsaXplL2s4cy8pLCBvciBjdXN0b20gZW5yaWNobWVudHMgZm9yIG11bHRpLWRpbWVuc2lvbmFsIHJhdGUgdHJhY2tpbmcuICAqKkNvbW1vbiBVc2UgQ2FzZXM6KiogICoqU2luZ2xlLWFwcCByZWNlaXZpbmcgKHBlciBldmVudCB0eXBlKToqKiBgYGB5YW1sIHJhdGVSZWNlaXZlckZpZWxkTmFtZXM6ICAgLSBzeW1ib2xNZXNzYWdlIGBgYCAgKipNdWx0aS1kaW1lbnNpb25hbCB0cmFja2luZyAoZXZlbnQgdHlwZSArIGdlb2dyYXBoeSArIEhUVFAgc3RhdHVzKToqKiBgYGB5YW1sIHJhdGVSZWNlaXZlckZpZWxkTmFtZXM6ICAgLSBzeW1ib2xNZXNzYWdlICAgLSBjb3VudHJ5ICAgLSBodHRwQ29kZSBgYGAgICoqTXVsdGktYXBwIHJlY2VpdmluZyBpbiBLdWJlcm5ldGVzOioqICAqT3B0aW9uIEE6IENhcCB0b3RhbCBzcGVuZCBwZXIgYXBwIChhbGwgZXZlbnQgdHlwZXMgY29tYmluZWQpOiogYGBgeWFtbCByYXRlUmVjZWl2ZXJGaWVsZE5hbWVzOiAgIC0gY29udGFpbmVyICAjIEFnZ3JlZ2F0ZXMgYWxsIGV2ZW50IHR5cGVzIGZvciBlYWNoIGFwcCBgYGAgRWFjaCBhcHAncyB0b3RhbCBzcGVuZCAoYWNyb3NzIGFsbCBldmVudCB0eXBlcyBhbmQgcG9kcykgZ2V0cyBvbmUgY2FwLiBTaW1wbGUgYnV0IGxvc2VzIGV2ZW50LXR5cGUgaW50ZWxsaWdlbmNlLiAgKk9wdGlvbiBCOiBDYXAgc3BlbmQgcGVyIGV2ZW50IHR5cGUgcGVyIGFwcDoqIGBgYHlhbWwgcmF0ZVJlY2VpdmVyRmllbGROYW1lczogICAtIHN5bWJvbE1lc3NhZ2UgICMgRXZlbnQgdHlwZSAgIC0gY29udGFpbmVyICAgICAgIyBBcHAgaWRlbnRpZmllciAoc2FtZSBhY3Jvc3MgYWxsIHBvZHMpIGBgYCBFYWNoIChldmVudCB0eXBlIMOXIGFwcCkgY29tYm8gZ2V0cyBpdHMgb3duIGNhcC4gUHJvdmlkZXMgZmFpcm5lc3Mgd2l0aGluIGFwcHMgYnV0IGFsbG93cyBhcHBzIHdpdGggbWFueSBldmVudCB0eXBlcyB0byBwb3RlbnRpYWxseSBleGNlZWQgb25lIHRvdGFsIGNhcC4gIFRoZSBjb250YWluZXIgaXMgY29uZmlndXJlZCBzZXBhcmF0ZWx5IHZpYSBgcmF0ZVJlY2VpdmVyQ29udGFpbmVyRmllbGRgIChpdCBzY29wZXMgdGhlIHNoYXJlIGRlbm9taW5hdG9yKSwgc28gYGZpZWxkTmFtZXNgIGlkZW50aWZpZXMgb25seSB0aGUgbG9nIHBhdHRlcm4gaXRzZWxmLiAoRGVmYXVsdDogW1wic3ltYm9sTWVzc2FnZVwiXSkiLAogICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgIH0sCiAgICAgICAgICAiZGVmYXVsdCIgOiBbCiAgICAgICAgICAgICJzeW1ib2xNZXNzYWdlIgogICAgICAgICAgXQogICAgICAgIH0sCiAgICAgICAgImNvbnRhaW5lckZpZWxkIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJGaWVsZCB3aG9zZSB2YWx1ZSBzY29wZXMgdGhlIHBlci1jb250YWluZXIgc2hhcmUgZGVub21pbmF0b3JcblxuTmFtZXMgdGhlIGZpZWxkIHdob3NlIHZhbHVlIHNjb3BlcyB0aGUgc2hhcmUgZGVub21pbmF0b3IgKHRoZSBwZXItY29udGFpbmVyIHRvdGFsKS4gQSBwYXR0ZXJuJ3Mgc2hhcmUgaXMgbWVhc3VyZWQgYWdhaW5zdCB0aGUgdG90YWwgdm9sdW1lIG9mIHRoZSBjb250YWluZXIgaXQgYmVsb25ncyB0bywgc28gdGhlIGNhcCBpcyBlbmZvcmNlZCBwZXIgYChwYXR0ZXJuLCBjb250YWluZXIpYC4gIERlZmF1bHRzIHRvIHRoZSBbazhzIGNvbnRhaW5lciBuYW1lXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9pbml0aWFsaXplL2s4cy8pLCB3aGljaCBpcyBzdGFibGUgYWNyb3NzIHBvZCByZXBsaWNhcywgc2NhbGluZyBmcm9tIDEgdG8gMTAgcG9kcyBkb2VzIG5vdCBieXBhc3MgdGhlIGNhcCwgYW5kIGEgc2lkZWNhciBuZXZlciBjb25zdW1lcyB0aGUgYXBwbGljYXRpb24gY29udGFpbmVyJ3MgYWxsb3dhbmNlLiBVc2UgYGNvbnRhaW5lcmAsIG5ldmVyIGBwb2RgLiAgV2hlbiB0aGUgZmllbGQgaXMgYWJzZW50IG9uIGFuIGV2ZW50IChub24tazhzIGlucHV0LCBvciBubyBrOHMgZXh0cmFjdG9yIGNvbmZpZ3VyZWQpLCB0aGUgcmVndWxhdG9yIGZhbGxzIGJhY2sgdG8gYSBzaW5nbGUgbm9kZS13aWRlIGJ1Y2tldCBhbmQgZW5mb3JjZXMgdGhlIGNhcCBwZXIgcGF0dGVybiBhY3Jvc3MgdGhlIG5vZGUuIChEZWZhdWx0OiApIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICIiCiAgICAgICAgfSwKICAgICAgICAicmVzZXRJbnRlcnZhbE1zIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgIm51bWJlciIsCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiUmVzZXQgaW50ZXJ2YWwgZm9yIHJhdGUgY291bnRlcnMgaW4gbWlsbGlzZWNvbmRzXG5cbkRlZmluZXMgdGhlIHdpbmRvdyBpbiBtaWxsaXNlY29uZHMgb3ZlciB3aGljaCBhIHBhdHRlcm4ncyByZWNlbnQgc2hhcmUgaXMgbWVhc3VyZWQuIFRoZSBjb3VudGVycyByZXNldCBldmVyeSBpbnRlcnZhbCwgc28gc2hhcmUgcmVmbGVjdHMgcmVjZW50IHZvbHVtZSByYXRoZXIgdGhhbiBhbGwtdGltZSB0b3RhbHMuICBTaG9ydGVyIHdpbmRvd3MgKGUuZy4sIDEgbWludXRlKSBhcmUgbW9yZSByZWFjdGl2ZSBidXQgbm9pc2llcjsgbG9uZ2VyIHdpbmRvd3MgYXJlIHNtb290aGVyIGJ1dCBzbG93ZXIgdG8gYWRhcHQuIFRoZSBkZWZhdWx0IG9mIDQgbWludXRlcyBiYWxhbmNlcyB0aGUgdHdvLiAgKipWYWxpZGF0aW9uOioqIE11c3QgYmUgYXQgbGVhc3QgNjAwMDAgbWlsbGlzZWNvbmRzICgxIG1pbnV0ZSkuIFRoZSBlbmdpbmUgY2FwcyBjb3VudGVyIHJlc2V0IGludGVydmFscyBhdCAyNTUgc2Vjb25kcywgc28gdGhlIGVmZmVjdGl2ZSBtYXhpbXVtIHdpbmRvdyBpcyB+NC4yNSBtaW51dGVzLCB2YWx1ZXMgYWJvdmUgdGhhdCBhcmUgY2xhbXBlZC4gKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogMjQwMDAwKSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiAyNDAwMDAKICAgICAgICB9LAogICAgICAgICJtaW5SZXRlbnRpb25UaHJlc2hvbGQiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJEZWZhdWx0IHJldGVudGlvbiBmbG9vciBmb3Igc2V2ZXJpdHkgbGV2ZWxzIG5vdCBsaXN0ZWQgaW4gc2V2ZXJpdHlGbG9vcnNcblxuRGVmaW5lcyB0aGUgcmV0ZW50aW9uIGZsb29yICgwLjAgdG8gMS4wKSB1c2VkIGZvciBhbnkgc2V2ZXJpdHkgbGV2ZWwgbm90IHByZXNlbnQgaW4gYHJhdGVSZWNlaXZlclNldmVyaXR5Rmxvb3JzYC4gRW5zdXJlcyBhIHBhdHRlcm4gb3ZlciBpdHMgY2FwIHN0aWxsIHJldGFpbnMgYXQgbGVhc3QgdGhpcyBmcmFjdGlvbiBvZiBldmVudHMgd2hvc2UgbGV2ZWwgaGFzIG5vIGV4cGxpY2l0IGZsb29yLCBwcmV2ZW50aW5nIGNvbXBsZXRlIGRhdGEgbG9zcy4gICoqVmFsaWRhdGlvbjoqKiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiAwLjAxLiAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiAwKSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiAwCiAgICAgICAgfSwKICAgICAgICAic2V2ZXJpdHlGbG9vcnMiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk1pbmltdW0gcmV0ZW50aW9uIHBlciBzZXZlcml0eSBsZXZlbCwgYXBwbGllZCBhcyBhbiBhYnNvbHV0ZSBmbG9vclxuXG5EZWZpbmVzIGEgbWFwIG9mIFtzZXZlcml0eSBsZXZlbHNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2luaXRpYWxpemUvbGV2ZWwvKSB0byBhIG1pbmltdW0gcmV0ZW50aW9uIGZyYWN0aW9uLiBUaGUgZmxvb3IgaXMgKiphYnNvbHV0ZSoqIChub3QgYSBtdWx0aXBsaWVyKSBhbmQgKipiZWF0cyB0aGUgc2hhcmUgY2FwKio6IGV2ZW4gYSBwYXR0ZXJuIG92ZXIgaXRzIGNhcCBrZWVwcyBhdCBsZWFzdCB0aGlzIGZyYWN0aW9uIG9mIGVhY2ggbGV2ZWwsIHNvIGhpZ2gtc2V2ZXJpdHkgZXZlbnRzIGFyZSBuZXZlciBmdWxseSBzdXBwcmVzc2VkLiAgVGhlIGZsb29yIGFsc28gYXBwbGllcyB1bmRlciBhIG11dGUtZmlsZSBlbnRyeSwgc28gYSBgMC4wYCBtdXRlIG5ldmVyIHNpbGVuY2VzIEVSUk9SL0ZBVEFMLiAgRmxvb3ItbWFwIGtleXMgbXVzdCBtYXRjaCB0aGUgbGV2ZWwgdm9jYWJ1bGFyeSBlbWl0dGVkIGJ5IHRoZSBsZXZlbCBlbnJpY2htZW50LiBBbnkgbGV2ZWwgbm90IGxpc3RlZCB1c2VzIGByYXRlUmVjZWl2ZXJNaW5SZXRlbnRpb25UaHJlc2hvbGRgLiAgRm9yIGV4YW1wbGU6ICBgYGAgeWFtbCBzZXZlcml0eUZsb29yczogICAtIFRSQUNFPTAuMSAgIC0gREVCVUc9MC4xICAgLSBJTkZPPTAuMSAgIC0gV0FSTj0wLjMgICAtIEVSUk9SPTAuNSAgIC0gRkFUQUw9MC41IGBgYCIsCiAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgImxvb2t1cCIgOiB7CiAgICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAgICAgImZpbGUiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRGVjbGFyYXRpdmUgbXV0ZSBmaWxlIGtleWVkIGJ5IGZpZWxkLXNldFxuXG5EZWZpbmVzIHRoZSBwYXRoIHRvIGEgZGVjbGFyYXRpdmUgKiptdXRlIGZpbGUqKiB0aGF0IGNhcHMgc3BlY2lmaWMgbG9nIHBhdHRlcm5zIGJ5IHRoZSBqb2luZWQgZmllbGQtc2V0IGRlZmluZWQgaW4gYHJhdGVSZWNlaXZlckZpZWxkTmFtZXNgIChlLmcuIGBzeW1ib2xNZXNzYWdlYCwgYGNvbnRhaW5lcmAsIGBodHRwQ29kZWApLiBUaGUga2V5IGZvcm1hdCBpcyB0aGUgc2FtZSBvbmUgdGhlIGxvY2FsIHJlY2VpdmVyIHVzZXMgZm9yIHBlci1ub2RlIGNvdW50ZXJzLiAgV2hlbiB0aGlzIG9wdGlvbiBpcyBzZXQsIHRoZSBtdXRlIGZpbGUgKipjb21wb3NlcyB3aXRoKiogdGhlIHJlZ3VsYXRvciByYXRoZXIgdGhhbiByZXBsYWNpbmcgaXQ6IGEgbGlzdGVkLCBhY3RpdmUgcGF0dGVybiBpcyBkZWNpZGVkIGJ5IGl0cyBmaWxlIGVudHJ5ICh0aGUgaHVtYW4gZGVjbGFyYXRpb24gd2lucywgYW5kIHRoZSByZWd1bGF0b3IgaXMgc2tpcHBlZCBmb3IgdGhhdCBldmVudCksIHdoaWxlIGV2ZXJ5IG90aGVyIHBhdHRlcm4gaXMgaGFuZGxlZCBieSB0aGUgcmVndWxhdG9yJ3MgY2FwLiAgKipGaWxlIGZvcm1hdCoqIChDU1Y7IGhlYWRlciByb3cgKyBvbmUgY29tbWEtc2VwYXJhdGVkIGVudHJ5IHBlciByb3cpOiAgYGBgIGZpZWxkU2V0LHZhbHVlIDxmaWVsZFNldEtleT4sPHNhbXBsZVJhdGU+Ojx1bnRpbEVwb2NoU2VjPls6PHJlYXNvbj5dIGBgYCAgLSBgZmllbGRTZXRLZXlgLCB0aGUgam9pbmVkIHZhbHVlcyBvZiB0aGUgZmllbGRzIG5hbWVkIGluIGByYXRlUmVjZWl2ZXJGaWVsZE5hbWVzYCwgICBzZXBhcmF0ZWQgYnkgYF9gLiBXaXRoIGByYXRlUmVjZWl2ZXJGaWVsZE5hbWVzOiBbc3ltYm9sTWVzc2FnZV1gIHRoZSBrZXkgaXMganVzdCAgIHRoZSBzeW1ib2xNZXNzYWdlIChlLmcuIGBFcnJvcl9zeW5jaW5nX3BvZGApLiBXaXRoIGBbc3ltYm9sTWVzc2FnZSwgY29udGFpbmVyXWAgICB0aGUga2V5IGlzIGBzeW1ib2xNZXNzYWdlX2NvbnRhaW5lcmAgKGUuZy4gYGhlYXJ0YmVhdF9kZWJ1Z19mcm9udGVuZGApLiAtIGBzYW1wbGVSYXRlYCwgcHJvYmFiaWxpdHkgaW4gYFswLCAxLjBdYCB0aGF0IGEgbWF0Y2hpbmcgZXZlbnQgaXMgcmV0YWluZWQuICAgYDBgID0gZnVsbCBtdXRlOyBgMC4xYCA9IGtlZXAgMTAlOyBgMS4wYCA9IG5vLW9wLiAtIGB1bnRpbEVwb2NoU2VjYCwgbXV0ZSBleHBpcmVzIGF0IHRoaXMgVW5peCBlcG9jaCAoc2Vjb25kcykuIFBhc3QgdGhhdCwgdGhlICAgZW50cnkgYmVjb21lcyBhIG5vLW9wIHVudGlsIHNvbWVvbmUgZWRpdHMgb3IgcmVtb3ZlcyBpdC4gU2VsZi1oZWFsaW5nIGJ5IGRlc2lnbi4gLSBgcmVhc29uYCwgb3B0aW9uYWwgZnJlZS10ZXh0IHN0cmluZyBmb3IgYXVkaXQuIE5vdCB1c2VkIGF0IHJ1bnRpbWUuIE11c3Qgbm90ICAgY29udGFpbiBjb21tYXMgKHdvdWxkIGJyZWFrIENTViBwYXJzaW5nKS4gICoqRXhhbXBsZSoqICh3aXRoIGByYXRlUmVjZWl2ZXJGaWVsZE5hbWVzOiBbc3ltYm9sTWVzc2FnZV1gKTogIGBgYCBmaWVsZFNldCx2YWx1ZSBFcnJvcl9zeW5jaW5nX3BvZCwwLjEwOjE3NDQ4NDgwMDA6cG9kIGVycm9yIHNwYW0gT1BTLTQ4MjEgaGVhcnRiZWF0X2RlYnVnLDA6MTc0NDQxNjAwMDprOHMgbGl2ZW5lc3MgMjAwcyBqd3RfdmFsaWRhdGVkLDAuMjU6MTc0NDUwMjQwMDphdXRoIGZsb29kIGFmdGVyIGRlcGxveSBgYGAgIFRoZSBmaWxlIGlzIGhvdC1yZWxvYWRlZCBvbiBpbi1wbGFjZSB3cml0ZXMgKHRoZSBnaXRvcHMgcGF0dGVybik7IGEgS3ViZXJuZXRlcyBgQ29uZmlnTWFwYCBtb3VudCB3b24ndCByZWxvYWQgYmVjYXVzZSB0aGUgQ00gc3dhcCBpcyBhIHN5bWxpbmsgcmVuYW1lLCBub3QgYW4gaW4tcGxhY2Ugd3JpdGUuICAqKldoeSB0aGlzIHNoYXBlOioqICAtICoqRmllbGQtc2V0IGtleWVkKiosIG5vdCByZWdleCBrZXllZCDihpIgbXV0ZSBrZXlzIGFyZSB0aGUgZXhhY3QgaWRlbnRpZmllcnMgdGhlICAgUmVwb3J0ZXIgYXR0cmlidXRlcyBjb3N0IHRvIChzYW1lIGByYXRlUmVjZWl2ZXJGaWVsZE5hbWVzYCBvbiBib3RoIHNpZGVzKSwgc28gYSAgIFwidG9wIHNwZW5kZXJcIiBpbiB0aGUgUmVwb3J0ZXIgbWFwcyAxOjEgdG8gYSBtdXRlIGVudHJ5LiAtICoqR2l0LWZyaWVuZGx5Kio6IHRoZSBmaWxlIGlzIGEgaHVtYW4tcmVhZGFibGUgZGVjbGFyYXRpb24gdGhhdCBjYW4gbGl2ZSBpbiBhICAgY29uZmlnIHJlcG8sIHJldmlld2VkIHZpYSBQUiwgYGdpdCBibGFtZWAtZCBmb3Igd2hvL3doeS4gLSAqKlNlbGYtaGVhbGluZyoqOiBldmVyeSBtdXRlIGhhcyBhbiBleHBsaWNpdCBleHBpcnksIHNvIGZvcmdvdHRlbiBlbnRyaWVzICAgZXZlbnR1YWxseSBzdG9wIGZpbHRlcmluZyBpbnN0ZWFkIG9mIHNpbGVudGx5IGRyb3BwaW5nIHByb2R1Y3Rpb24gZGF0YSBmb3JldmVyLiAtICoqQUktZWRpdGFibGUqKjogYW4gb3BlcmF0b3IgY2FuIGFzayBhbiBhc3Npc3RhbnQgKGUuZy4sIENsYXVkZSBDb2RlIHZpYSB0aGUgICBMb2cxMHggTUNQKSB0byBcIm11dGUgYEVycm9yX3N5bmNpbmdfcG9kYCBmb3IgMjQgaG91cnMgYXQgMTAlXCIsIHRoZSBhc3Npc3RhbnQgICByZWFkcyB0aGUgUmVwb3J0ZXIncyBjb3N0IGF0dHJpYnV0aW9uLCBhcHBlbmRzIHRoZSBlbnRyeSwgYW5kIG9wZW5zIGEgUFIuIFRoZSAgIG11dGUgZmlsZSBpcyB0aGUgaW50ZXJmYWNlLiAgKipTZXZlcml0eSBmbG9vciBzdGlsbCBhcHBsaWVzLioqIEV2ZW4gYSBgMC4wYCBtdXRlIHdpbGwgcmV0YWluIGhpZ2gtc2V2ZXJpdHkgZXZlbnRzIGF0IHRoZWlyIGByYXRlUmVjZWl2ZXJTZXZlcml0eUZsb29yc2AgZnJhY3Rpb24uIFRoaXMgcHJldmVudHMgYSBwb29ybHktc2NvcGVkIG11dGUgZnJvbSBzaWxlbmNpbmcgRVJST1IvRkFUQUwgdHJhZmZpYy4gIFdoZW4gYHJhdGVSZWNlaXZlckxvb2t1cEZpbGVgIGlzICoqdW5zZXQqKiwgdGhlIHJlZ3VsYXRvciBydW5zIGFsb25lIG9uIGV2ZXJ5IHBhdHRlcm4uIChEZWZhdWx0OiApIiwKICAgICAgICAgICAgICAiZGVmYXVsdCIgOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmV0YWluIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiUmV0ZW50aW9uIHBlcmlvZCBmb3IgdGhlIGxvb2t1cCBmaWxlIGNvbnRhaW5pbmcgZ2xvYmFsIGV2ZW50IHR5cGUgcmF0ZXNcblxuRGVmaW5lcyB0aGUgcmV0ZW50aW9uIHBlcmlvZCBmb3IgdGhlIGxvb2t1cCBmaWxlIGNvbnRhaW5pbmcgZ2xvYmFsIGV2ZW50IHR5cGUgZnJlcXVlbmN5IGRhdGEuIElmIHRoZSBmaWxlJ3MgbGFzdCBtb2RpZmllZCB0aW1lIGlzIG9sZGVyIHRoYW4gdGhpcyBwZXJpb2QsIHRoZSBsb29rdXAgaXMgY29uc2lkZXJlZCBzdGFsZSwgYW5kIGxvY2FsIGNvdW50ZXIgcmF0ZXMgYXJlIHVzZWQuIFVzZWQgdG8gbWFrZSBzYW1wbGluZyBkZWNpc2lvbnMgYmFzZWQgb24gY2x1c3Rlci13aWRlIGV2ZW50IHBhdHRlcm5zLiAgKipWYWxpZGF0aW9uOioqIE11c3QgYmUgZ3JlYXRlciB0aGFuIDYwMDAwIG1pbGxpc2Vjb25kcy4gKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogMzAwMDAwKSIsCiAgICAgICAgICAgICAgImRlZmF1bHQiIDogMzAwMDAwCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJhY3Rpb25Mb29rdXBGaWxlIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJEZWNsYXJhdGl2ZSBwZXItc2VydmljZSBhY3Rpb24gZmlsZSwga2V5ZWQgYnkgdGhlIGByYXRlUmVjZWl2ZXJDb250YWluZXJGaWVsZGAgdmFsdWU7IGRlY2lkZXMgdGhlIGRpc3Bvc2l0aW9uIG9mIGVhY2ggc2VydmljZSdzIHJlZ3VsYXRvciBleGNlc3NcblxuRGVmaW5lcyB0aGUgcGF0aCB0byBhIGRlY2xhcmF0aXZlICoqcGVyLXNlcnZpY2UgYWN0aW9uIGZpbGUqKiAoc2libGluZyB0byB0aGUgY2FwIGZpbGUpLiBFYWNoIGVudHJ5IGFzc2lnbnMgdGhlIGRpc3Bvc2l0aW9uIG9mIGEgc2VydmljZSdzIHJlZ3VsYXRvci1pZGVudGlmaWVkIGV4Y2VzczogYGRyb3BgIChkZWZhdWx0KSwgYG9mZmxvYWRgICh0byBjdXN0b21lciBTMyksIGB0aWVyX2Rvd25gIChhbmFseXplciBjaGVhcCB0aWVyKSwgYGNvbXBhY3RgIChsb3NzbGVzcyBlbmNvZGUpLCBgc2FtcGxlYCwgb3IgYHBhc3NgLiBUaGUgYnl0ZSBjYXAgKGByYXRlUmVjZWl2ZXJDYXBMb29rdXBGaWxlYCkgc3RpbGwgZGVjaWRlcyB3aGVyZSB0aGUgZXhjZXNzIHN0YXJ0czsgdGhlIGFjdGlvbiBvbmx5IGRlY2lkZXMgd2hhdCBoYXBwZW5zIHRvIGl0LiBVbmxpc3RlZCBzZXJ2aWNlcyBkZWZhdWx0IHRvIGBkcm9wYCAodGhlIG9yaWdpbmFsIHJlZ3VsYXRvciBiZWhhdmlvcikuIFJlYWQgYnkgdGhlIGNhcC12YXJpYW50IHJlZ3VsYXRvciBjbGFzc2VzLCB3aGljaCBjYWxsIGByb3V0ZShhY3Rpb24pYCBhdCB0aGUgb3Zlci1idWRnZXQgZGVjaXNpb24gcG9pbnQgaW5zdGVhZCBvZiBhIGhhcmRjb2RlZCBkcm9wLiAgKipGaWxlIGZvcm1hdCoqIChDU1Y7IGhlYWRlciByb3cgKyBvbmUgY29tbWEtc2VwYXJhdGVkIGVudHJ5IHBlciByb3cpOiAgYGBgIGNvbnRhaW5lcixhY3Rpb24gPGNvbnRhaW5lcj4sPGFjdGlvbj5bOjx1bnRpbEVwb2NoU2VjPl1bOjxyZWFzb24+XSBgYGAgIC0gYGNvbnRhaW5lcmAsIHZhbHVlIG9mIGByYXRlUmVjZWl2ZXJDb250YWluZXJGaWVsZGAgKHRoZSBrOHMgY29udGFpbmVyID0gdGhlIHNlcnZpY2UpLiAtIGBhY3Rpb25gLCBvbmUgb2YgYGRyb3BgIC8gYG9mZmxvYWRgIC8gYHRpZXJfZG93bmAgLyBgY29tcGFjdGAgLyBgc2FtcGxlYCAvIGBwYXNzYC4gLSBgdW50aWxFcG9jaFNlY2AsIG9wdGlvbmFsIFVuaXgtZXBvY2ggKHNlY29uZHMpIGV4cGlyeTsgcGFzdCBpdCB0aGUgZW50cnkgaXMgYSBuby1vcC4gLSBgcmVhc29uYCwgb3B0aW9uYWwgZnJlZS10ZXh0IGZvciBhdWRpdC4gTXVzdCBub3QgY29udGFpbiBjb21tYXMgKHdvdWxkIGJyZWFrIENTViBwYXJzaW5nKS4gIEludGVuZGVkIHRvIGJlIG1hbmFnZWQgdmlhIEdpdE9wcyArIHRoZSBgbG9nMTB4X2NvbmZpZ3VyZV9lbmdpbmVgIE1DUCB0b29sLCB3aGljaCBkZXJpdmVzIHBlci1zZXJ2aWNlIGFjdGlvbnMgZnJvbSB0aGUgcGVyLXBhdHRlcm4gYWN0aW9uIHBsYW4gaXQgYWxyZWFkeSBjb21wdXRlcy4iCiAgICAgICAgfSwKICAgICAgICAiY2FwTG9va3VwIiA6IHsKICAgICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICAgICAiZmlsZSIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJEZWNsYXJhdGl2ZSBwZXItY29udGFpbmVyIGJ5dGUgY2FwIGZpbGUsIGtleWVkIGJ5IHRoZSBgcmF0ZVJlY2VpdmVyQ29udGFpbmVyRmllbGRgIHZhbHVlXG5cbkRlZmluZXMgdGhlIHBhdGggdG8gYSBkZWNsYXJhdGl2ZSAqKnBlci1jb250YWluZXIgY2FwIGZpbGUqKi4gRWFjaCBlbnRyeSBhc3NpZ25zIGEgYnl0ZSBjYXAgdG8gYSBzcGVjaWZpYyBjb250YWluZXIgKHRoZSB2YWx1ZSBvZiBgcmF0ZVJlY2VpdmVyQ29udGFpbmVyRmllbGRgLCB3aGljaCBkZWZhdWx0cyB0byB0aGUgazhzIGNvbnRhaW5lciBuYW1lKS4gVGhlIGZpbGUncyBjYXAgd2lucyBwZXItZXZlbnQgb3ZlciBgcmF0ZVJlY2VpdmVyQWJzb2x1dGVDYXBgOiBsaXN0ZWQgY29udGFpbmVycyBnZXQgdGhlIGZpbGUncyBjYXAsIHVubGlzdGVkIGNvbnRhaW5lcnMgZmFsbCBiYWNrIHRvIHRoZSBmbGVldC13aWRlIGNhcCAob3IgdG8gbm8gY2FwLCBpZiBgcmF0ZVJlY2VpdmVyQWJzb2x1dGVDYXBgIGlzIGAwYCkuICAqKkZpbGUgZm9ybWF0KiogKENTVjsgaGVhZGVyIHJvdyArIG9uZSBjb21tYS1zZXBhcmF0ZWQgZW50cnkgcGVyIHJvdyk6ICBgYGAgY29udGFpbmVyLGNhcCA8Y29udGFpbmVyPiw8Ynl0ZXM+Wzo8dW50aWxFcG9jaFNlYz5dWzo8cmVhc29uPl0gYGBgICAtIGBjb250YWluZXJgLCB2YWx1ZSBvZiBgcmF0ZVJlY2VpdmVyQ29udGFpbmVyRmllbGRgIGZvciB0aGUgZXZlbnRzIHRvIGNhcC4gSW4gazhzIHRoaXMgaXMgICB0aGUgazhzIGNvbnRhaW5lciBuYW1lLCBzdGFibGUgYWNyb3NzIHBvZCByZXBsaWNhcy4gLSBgYnl0ZXNgLCBpbnRlZ2VyIGJ5dGUgY2FwIHBlciBwYXR0ZXJuIHBlciBjb250YWluZXIgcGVyIHdpbmRvdy4gYDBgIGV4ZW1wdHMgdGhlICAgY29udGFpbmVyIGZyb20gdGhlIGFic29sdXRlIGNhcCBlbnRpcmVseSAodGhlIG92ZXItY2FwIGJyYW5jaCBpcyBza2lwcGVkIGZvciBpdCkuIC0gYHVudGlsRXBvY2hTZWNgLCBvcHRpb25hbCBVbml4LWVwb2NoIChzZWNvbmRzKSBleHBpcnkuIFBhc3QgdGhhdCwgdGhlIGVudHJ5IGJlY29tZXMgYSAgIG5vLW9wIGFuZCB0aGUgZmFsbGJhY2sgY2FwIGFwcGxpZXMuIC0gYHJlYXNvbmAsIG9wdGlvbmFsIGZyZWUtdGV4dCBzdHJpbmcgZm9yIGF1ZGl0LiBOb3QgdXNlZCBhdCBydW50aW1lLiBNdXN0IG5vdCBjb250YWluICAgY29tbWFzICh3b3VsZCBicmVhayBDU1YgcGFyc2luZykuICAqKkV4YW1wbGUqKjogIGBgYCBjb250YWluZXIsY2FwIHBheW1lbnQtc2VydmljZSw0MTk0MzA0OjE3MzU2ODk2MDA6YW5udWFsIGJ1ZGdldCBwcm90ZWN0aW9uIFBBWS0xMDEgYXV0aC1zZXJ2aWNlLDIwOTcxNTIgaXN0aW8tcHJveHksMDoxNzM1Njg5NjAwOmV4ZW1wdCBwbGF0Zm9ybSBzaWRlY2FyIFBMQVQtNDIgYGBgICAqKldoeSB0aGlzIHNoYXBlKio6ICAtICoqQ29udGFpbmVyLWtleWVkKiosIG1hdGNoaW5nIHRoZSByZWd1bGF0b3IncyBjb250YWluZXIgYXhpcy4gVGhlIGZpbGUncyBrZXkgaXMgdGhlIHNhbWUgICB2YWx1ZSB0aGUgcmVndWxhdG9yJ3MgY291bnRlcnMgYXJlIGJ1Y2tldGVkIGJ5LCBzbyBsaXN0ZWQgY2FwcyBtYXAgMToxIHRvIGNvdW50ZXJzIHdpdGhvdXQgICB0cmFuc2xhdGlvbi4gLSAqKkdpdC1mcmllbmRseSoqOiBhIGh1bWFuLXJlYWRhYmxlIGRlY2xhcmF0aW9uIHRoYXQgbGl2ZXMgaW4gYSBjb25maWcgcmVwbywgcmV2aWV3ZWQgdmlhICAgUFIsIGBnaXQgYmxhbWVgLWQgZm9yIHdoby93aHkuIC0gKipTZWxmLWhlYWxpbmcqKjogZXZlcnkgZW50cnkgY2FuIGNhcnJ5IGFuIGV4cGxpY2l0IGV4cGlyeSwgc28gZm9yZ290dGVuIGNhcHMgZXZlbnR1YWxseSAgIHN0b3AgZmlsdGVyaW5nIGluc3RlYWQgb2Ygc2lsZW50bHkgZHJvcHBpbmcgcHJvZHVjdGlvbiBkYXRhIGZvcmV2ZXIuIC0gKipBSS1lZGl0YWJsZSoqOiBhbiBvcGVyYXRvciBjYW4gYXNrIGFuIGFzc2lzdGFudCAoZS5nLiwgQ2xhdWRlIENvZGUgdmlhIHRoZSBMb2cxMHggTUNQICAgYGNvbmZpZ3VyZV9yZWd1bGF0b3JgIHRvb2wpIHRvIGRlcml2ZSBhIGNhcCBmcm9tIGEgbW9udGhseSBkb2xsYXIgYnVkZ2V0LCBhcHBlbmQgdGhlICAgZW50cnksIGFuZCBvcGVuIGEgUFIuIFRoZSBjYXAgZmlsZSBpcyB0aGUgaW50ZXJmYWNlLiAgKipTZXZlcml0eSBmbG9vciBzdGlsbCBhcHBsaWVzLioqIEV2ZW4gYXQgYSB0aWdodCBjYXAgdGhlIHJlZ3VsYXRvcidzIGByYXRlUmVjZWl2ZXJTZXZlcml0eUZsb29yc2AgcmV0YWluIEVSUk9SL0NSSVRJQ0FMIGV2ZW50cyBhdCB0aGVpciBmbG9vciBmcmFjdGlvbiwgc28gYSB0aWdodCBjYXAgbmV2ZXIgZnVsbHkgc2lsZW5jZXMgaGlnaC1zZXZlcml0eSB0cmFmZmljLiAgV2hlbiBgcmF0ZVJlY2VpdmVyQ2FwTG9va3VwRmlsZWAgaXMgKip1bnNldCoqLCBldmVyeSBjb250YWluZXIgZmFsbHMgYmFjayB0byBgcmF0ZVJlY2VpdmVyQWJzb2x1dGVDYXBgICh3aGljaCBpdHNlbGYgZGVmYXVsdHMgdG8gYDBgID0gZGlzYWJsZWQpLiAgVGhlIGZpbGUgaXMgaG90LXJlbG9hZGVkIG9uIGluLXBsYWNlIHdyaXRlcyAodGhlIGdpdG9wcyBwYXR0ZXJuKTsgYSBLdWJlcm5ldGVzIGBDb25maWdNYXBgIG1vdW50IHdvbid0IHJlbG9hZCBiZWNhdXNlIHRoZSBDTSBzd2FwIGlzIGEgc3ltbGluayByZW5hbWUsIG5vdCBhbiBpbi1wbGFjZSB3cml0ZS4gKERlZmF1bHQ6ICkiLAogICAgICAgICAgICAgICJkZWZhdWx0IiA6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXRhaW4iIDogewogICAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJSZXRlbnRpb24gcGVyaW9kIGZvciB0aGUgcGVyLWNvbnRhaW5lciBjYXAgZmlsZSBiZWZvcmUgaXQgaXMgY29uc2lkZXJlZCBzdGFsZVxuXG5EZWZpbmVzIHRoZSByZXRlbnRpb24gcGVyaW9kIChpbiBtaWxsaXNlY29uZHMpIGZvciB0aGUgY2FwIGZpbGUgKGByYXRlUmVjZWl2ZXJDYXBMb29rdXBGaWxlYCkuIElmIHRoZSBmaWxlJ3MgbGFzdCBtb2RpZmllZCB0aW1lIGlzIG9sZGVyIHRoYW4gdGhpcyBwZXJpb2QsIGEgd2FybmluZyBpcyBsb2dnZWQuIFRoZSBjYXAgZW50cmllcyBjb250aW51ZSB0byBhcHBseTsgdGhlIHN0YWxlbmVzcyBjaGVjayBpcyBhZHZpc29yeSBzbyBvcGVyYXRvcnMgbm90aWNlIHdoZW4gYW4gYXV0b21hdGVkIHRvb2xpbmcgcGlwZWxpbmUgaGFzIHN0b3BwZWQgdXBkYXRpbmcgdGhlIGZpbGUuICAqKlZhbGlkYXRpb246KiogTXVzdCBiZSBncmVhdGVyIHRoYW4gNjAwMDAgbWlsbGlzZWNvbmRzLiAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiAzMDAwMDApIiwKICAgICAgICAgICAgICAiZGVmYXVsdCIgOiAzMDAwMDAKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgImNvbmZpZ0dlbmVyYXRpb25GaWxlIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJPcHRpb25hbCBjb25maWctZ2VuZXJhdGlvbiBmaWxlIHdob3NlIGBnZW5lcmF0aW9uYCB2YWx1ZSBpcyBzdGFtcGVkIGFzIHRoZSBgdGVueF9jb25maWdfdmVyc2lvbmAgbWV0cmljIGxhYmVsXG5cbkRlZmluZXMgdGhlIHBhdGggdG8gdGhlICoqY29uZmlnLWdlbmVyYXRpb24gZmlsZSoqIHRoZSBNQ1AgY29udHJvbCBwbGFuZSAoYGxvZzEweF9jb25maWd1cmVfZW5naW5lYCkgd3JpdGVzIGFzIGEgU0lCTElORyBvZiB0aGUgY2FwIGZpbGUgaW4gdGhlIGNhcCBDb25maWdNYXAuIEl0IGlzIGEgdHdvLWNvbHVtbiBDU1YgKGBrZXksdmFsdWVgKSB3aXRoIG9uZSByb3csIGBnZW5lcmF0aW9uLDxoYXNoLW9mLWNhcHM+YCwgd2hlcmUgdGhlIGdlbmVyYXRpb24gaXMgYSBkZXRlcm1pbmlzdGljIGhhc2ggb2YgdGhlIGNhcCBwb2xpY3kuIFRoZSByZWNlaXZlcidzIGNvbmZpZy1nZW5lcmF0aW9uIG9iamVjdCByZWFkcyB0aGF0IHZhbHVlIGFuZCBzdGFtcHMgaXQgb24gZXZlcnkgZXZlbnQgYXMgYHRlbnhfY29uZmlnX3ZlcnNpb25gIChkZWNsYXJlZCBpbiB0aGlzIG1vZHVsZSdzIGBlbnJpY2htZW50RmllbGRzYCksIHNvIHRoZSBydW5uaW5nIGVuZ2luZSBhZHZlcnRpc2VzIHdoaWNoIGNvbmZpZyBnZW5lcmF0aW9uIGl0IGxvYWRlZC4gVGhlIE1DUCB0aGVuIHZlcmlmaWVzIHRoZSBwb2xpY3kgaXQgd3JvdGUgaXMgYWN0dWFsbHkgbGl2ZSBieSBjb21wYXJpbmcgdGhlIGxhYmVsIHRvIGBoYXNoKGN1cnJlbnQgY2FwcylgLCB0aGUgY29uZmlnLWdlbmVyYXRpb24gY2xvc2VkIGxvb3AuICAqKk9wdC1pbiwgYW5kIGRlY291cGxlZCBmcm9tIGNhcHMuKiogVW5zZXQgYnkgZGVmYXVsdCAoYFwiXCJgKTsgdGhlIGB0ZW54X2NvbmZpZ192ZXJzaW9uYCBzdGFtcCBpcyBlbWl0dGVkIG9ubHkgd2hlbiB0aGlzIHBvaW50cyBhdCBhIGZpbGUuIEEgcmVjZWl2ZXIgcnVubmluZyB0aGUgcmF0ZSByZWd1bGF0b3IgV0lUSE9VVCB0aGUgTUNQIGNsb3NlZCBsb29wIChlLmcuIEdpdE9wcy1tYW5hZ2VkIGNhcHMpIGxlYXZlcyBpdCB1bnNldCBhbmQgZW1pdHMgbm8gYHRlbnhfY29uZmlnX3ZlcnNpb25gIGxhYmVsLiBJdCBuZXZlciBkZXBlbmRzIG9uIHRoZSBmaWxlIGV4aXN0aW5nLCBzbyBpdCBjYW4ndCBmYWlsIGluaXQgb24gYSBtaXNzaW5nIGZpbGUuIFNldCBpdCBvbmx5IHdoZXJlIHRoZSBNQ1Agd3JpdGVzIHRoZSBmaWxlICh2aWEgdGhlIGBDT05GSUdfR0VORVJBVElPTl9GSUxFYCBlbnYgb3IgYGNvbmZpZ0dlbmVyYXRpb24uZmlsZWAgaW4gY29uZmlnLnlhbWwpLiAgKipGaWxlIGZvcm1hdCoqIChDU1Y7IGhlYWRlciByb3cgKyBvbmUgcm93KTogIGBgYCBrZXksdmFsdWUgZ2VuZXJhdGlvbiw8MTItY2hhciBoYXNoIG9mIGNhcHMuY3N2PiBgYGAgIEhvdC1yZWxvYWRlZCBsaWtlIHRoZSBjYXAgZmlsZSwgc28gYSBuZXcgZ2VuZXJhdGlvbiB3cml0dGVuIGJ5IGBjb25maWd1cmVfZW5naW5lYCBnb2VzIGxpdmUgd2l0aG91dCBhbiBlbmdpbmUgcmVzdGFydC4gVGhpcyBpcyBleGFjdGx5IHdoYXQgdGhlIHZlcmlmaWVyIG9ic2VydmVzIGFzIHRoZSBzdGFsZSAtPiBsaXZlIHRyYW5zaXRpb24uIChEZWZhdWx0OiApIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICIiCiAgICAgICAgfSwKICAgICAgICAid2FybXVwTXMiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJQZXItY29udGFpbmVyIGdyYWNlIHBlcmlvZCBiZWZvcmUgdGhpcyByZWd1bGF0b3IgaW5zdGFuY2Ugc3RhcnRzIGNhcHBpbmdcblxuRGVmaW5lcyBhIHBlci1jb250YWluZXIgZ3JhY2UgcGVyaW9kIGluIG1pbGxpc2Vjb25kcy4gQSBjb250YWluZXIgaXMgbGVmdCB1bnJlZ3VsYXRlZCBmb3IgdGhpcyBsb25nIGFmdGVyIHRoaXMgcmVndWxhdG9yIGluc3RhbmNlIGZpcnN0IHNlZXMgaXRzIGV2ZW50cy4gVGhlIGRlZmF1bHQgaXMgNSBtaW51dGVzLiAgV2h5IGl0IGV4aXN0czogdGhlIHJlZ3VsYXRvcidzIHBlci1wYXR0ZXJuIHNhbXBsZSBjb3VudHMgc3RhcnQgZW1wdHkuIFdpdGhvdXQgYSBmZXcgbWludXRlcyBvZiBhY2N1bXVsYXRpb24sIGEgbG93LXZvbHVtZSBwYXR0ZXJuIGNhbiBsb29rIGxpa2UgdGhlIGRvbWluYW50IG9uZSBwdXJlbHkgYmVjYXVzZSBvZiBvcmRlcmluZy4gVGhlIHdhcm11cCBkZWZlcnMgY2FwIGRlY2lzaW9ucyB1bnRpbCB0aGVyZSBhcmUgZW5vdWdoIHNhbXBsZXMgdG8gdGVsbCBhIG5vaXN5IHBhdHRlcm4gZnJvbSBhIHF1aWV0IG9uZSB3aXRoIGNvbmZpZGVuY2UuIFRoaXMgaXMgYSAqKmRlbGF5IG9ubHkqKjsgbm8gbGVhcm5lZCBiYXNlbGluZSBpcyBidWlsdCwgYW5kIHRoZSBvbmx5IHN0YXRlIHRoYXQgc3Vydml2ZXMgaXMgdGhlIGNvbnRhaW5lcidzIGZpcnN0LXNlZW4gdGltZXN0YW1wLiAgXCJGaXJzdCBzZWVzXCIgaXMgcGVyIHJlZ3VsYXRvciBpbnN0YW5jZSwgbm90IHBlciBjb250YWluZXIgYmlydGguIEEgY29udGFpbmVyIHRoYXQgaGFzIGJlZW4gcnVubmluZyBmb3IgaG91cnMgYnV0IHdob3NlIGV2ZW50cyBoYXZlIG9ubHkganVzdCBzdGFydGVkIGZsb3dpbmcgdGhyb3VnaCB0aGlzIHJlZ3VsYXRvciAoZS5nLiBhZnRlciBhIHJlZ3VsYXRvciByZXN0YXJ0IG9yIGZvcndhcmRlciByZWNvbm5lY3QpIHJlc3RhcnRzIHRoZSB3YXJtdXAgd2luZG93LiBPbiBhIGRhZW1vbnNldCByb2xsaW5nIHJlc3RhcnQgdGhlIGNhcCBpcyB0aGVyZWZvcmUgZGlzYWJsZWQgZm9yIGB3YXJtdXBNc2AgcGVyIG5vZGUgYXMgaXQgY3ljbGVzLiAgTG93ZXIgdGhlIHZhbHVlIGZvciBmYXN0LXN0YXJ0aW5nIGFwcHMgdGhhdCBzaG91bGQgYmUgY2FwcGVkIHNvb25lciBhZnRlciBhIHJlc3RhcnQuIFJhaXNlIGl0IGZvciBzbG93LXJhbXBpbmcgSlZNcyBvciB3b3JrbG9hZHMgd2l0aCBsb25nIGluaXQgcGhhc2VzLiBQYXR0ZXJucyB0aGF0IGFyZSBsZWdpdGltYXRlbHkgZG9taW5hbnQgaW4gc3RlYWR5IHN0YXRlIGJlbG9uZyBvbiB0aGUgbXV0ZSBmaWxlLCBub3QgaW4gYSBsb25nZXIgd2FybXVwLiAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiAzMDAwMDApIiwKICAgICAgICAgICJkZWZhdWx0IiA6IDMwMDAwMAogICAgICAgIH0sCiAgICAgICAgImJhc2VsaW5lQ291bnQiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJFdmVudHMgcGVyIHBhdHRlcm4ga2VwdCBlYWNoIHdpbmRvdyByZWdhcmRsZXNzIG9mIHNoYXJlXG5cbkRlZmluZXMgaG93IG1hbnkgZXZlbnRzIG9mIGVhY2ggYChwYXR0ZXJuLCBjb250YWluZXIpYCBhcmUgYWx3YXlzIGtlcHQgcGVyIHdpbmRvdywgcmVnYXJkbGVzcyBvZiBzaGFyZSwgc28gZXZlbiBhIGhlYXZpbHktY2FwcGVkIHBhdHRlcm4gbGVhdmVzIGEgc21hbGwgZm9yZW5zaWMgc2FtcGxlIHRvIGluc3BlY3QgZHVyaW5nIGFuIGluY2lkZW50LiAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiA1KSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiA1CiAgICAgICAgfSwKICAgICAgICAiYWJzb2x1dGVDYXAiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJGbGVldC13aWRlIGJ5dGUgY2FwIHBlciBwYXR0ZXJuIHBlciBjb250YWluZXIgcGVyIHdpbmRvdzsgYDBgIChkZWZhdWx0KSBkaXNhYmxlcyB0aGUgY2FwIHVubGVzcyBvdmVycmlkZGVuIHBlci1jb250YWluZXIgdmlhIGByYXRlUmVjZWl2ZXJDYXBMb29rdXBGaWxlYFxuXG5EZWZpbmVzIGEgKipmbGVldC13aWRlKiogYnl0ZSBjYXA6IHRoZSBieXRlIGJ1ZGdldCBmb3IgYSBzaW5nbGUgcGF0dGVybiAoYSB1bmlxdWUgY29tYmluYXRpb24gb2YgYHJhdGVSZWNlaXZlckZpZWxkTmFtZXNgIHZhbHVlcykgcGVyIGNvbnRhaW5lciB3aXRoaW4gdGhlIGN1cnJlbnQgd2luZG93IChgcmF0ZVJlY2VpdmVyUmVzZXRJbnRlcnZhbE1zYCksIHBhc3Qgd2hpY2ggdGhlIHJlZ3VsYXRvciBlbmdhZ2VzLiBBcHBsaWVzIHRvIGV2ZXJ5IGNvbnRhaW5lciB0aGUgcmVndWxhdG9yIHNlZXMsIHVubGVzcyB0aGF0IGNvbnRhaW5lciBoYXMgaXRzIG93biBlbnRyeSBpbiBgcmF0ZVJlY2VpdmVyQ2FwTG9va3VwRmlsZWAsIHdoaWNoIHdpbnMgcGVyLWV2ZW50LiAgQXQgb3IgYmVsb3cgdGhlIHJlc29sdmVkIGNhcCB0aGUgcGF0dGVybiBpcyBrZXB0IHVudG91Y2hlZC4gQWJvdmUgaXQsIHRoZSByZWd1bGF0b3IgZW5nYWdlczogaWYgdGhlIHBhdHRlcm4gaXMgYWxzbyBhYm92ZSBgcmF0ZVJlY2VpdmVyTWluU2hhcmVQZXJjZW50YCAodGhlIHNhbml0eSBndWFyZCksIHRoZSBldmVudCBpcyBzYW1wbGVkIGF0IHRoZSBzZXZlcml0eSBmbG9vciBwcm9iYWJpbGl0eS4gICoqYDBgICh0aGUgZGVmYXVsdCkgZGlzYWJsZXMgdGhlIGZsZWV0LXdpZGUgY2FwLioqIFdpdGggbm8gZmxlZXQtd2lkZSBjYXAgYW5kIG5vIHBlci1jb250YWluZXIgZW50cnkgaW4gYHJhdGVSZWNlaXZlckNhcExvb2t1cEZpbGVgLCB0aGUgcmVndWxhdG9yJ3Mgb3Zlci1jYXAgYnJhbmNoIG5ldmVyIGVuZ2FnZXMgZm9yIHRoYXQgY29udGFpbmVyLiBQcm90ZWN0aW9uIGlzIHN0cmljdGx5IG9wdC1pbi4gVGhyZWUgY29uZmlndXJhdGlvbnMgYXJlIGZpcnN0LWNsYXNzOiAgLSAqKlBlci1jb250YWluZXIgb25seSoqOiBzZXQgYHJhdGVSZWNlaXZlckNhcExvb2t1cEZpbGVgLiBMaXN0ZWQgY29udGFpbmVycyBnZXQgdGhlaXIgY2FwOyAgIHVubGlzdGVkIGNvbnRhaW5lcnMgYXJlIHVucmVndWxhdGVkIGJ5IHRoZSBhYnNvbHV0ZSBjYXAuIE1vc3Qgc2VsZWN0aXZlLiAtICoqRmxlZXQtd2lkZSBvbmx5Kio6IHNldCBgcmF0ZVJlY2VpdmVyQWJzb2x1dGVDYXBgIHRvIGEgcG9zaXRpdmUgaW50ZWdlci4gQXBwbGllcyB0byBldmVyeSAgIGNvbnRhaW5lci4gLSAqKkJvdGgqKjogcGVyLWNvbnRhaW5lciBlbnRyaWVzIG92ZXJyaWRlIHRoZSBmbGVldC13aWRlIGNhcDsgdW5saXN0ZWQgY29udGFpbmVycyBmYWxsIGJhY2sgICB0byB0aGUgZmxlZXQtd2lkZSBjYXAgKHNhZmV0eSBmbG9vcikuICAqKkV4YW1wbGU6KiogMTA0ODU3NjAgKDEwIE1CKSBtZWFucyB0aGUgcmVndWxhdG9yIGVuZ2FnZXMgZm9yIGEgcGF0dGVybiBvbmNlIGl0IGhhcyBzcGVudCAxMCBNQiBpbiBhIGNvbnRhaW5lciB3aXRoaW4gdGhlIDUtbWludXRlIHdpbmRvdy4gICoqVGhlIGNhcCBpcyBub3QgYSBoYXJkIGJvdW5kLioqIFRoZSBzZXZlcml0eSBmbG9vciBjaGVjayBydW5zIGFmdGVyIHRoZSBjYXAgY2hlY2ssIHNvIGFib3ZlIHRoZSBjYXAgYSBmbG9vZCBzdGlsbCBwYXNzZXMgYXQgdGhlIGZsb29yIHJhdGUgKEVSUk9SIGFuZCBDUklUSUNBTCBoYWxmLCBXQVJOIHRocmVlIHRlbnRocywgZXZlcnl0aGluZyBlbHNlIGEgdGVudGgpLiBUaGUgd29yc3QgY2FzZSBmb3Igb25lIHBhdHRlcm4gaW4gb25lIGNvbnRhaW5lciBwZXIgd2luZG93IGlzIHRoZSBjYXAgcGx1cyB0aGUgZmxvb3Igc2hhcmUgb2YgZXZlcnl0aGluZyBhYm92ZSBpdC4gKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogMCkiLAogICAgICAgICAgImRlZmF1bHQiIDogMAogICAgICAgIH0sCiAgICAgICAgIm1pblNoYXJlUGVyY2VudCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk1pbmltdW0gc2hhcmUgb2YgY29udGFpbmVyIHZvbHVtZSBiZWxvdyB3aGljaCBhIHBhdHRlcm4gaXMgZXhlbXB0IGZyb20gc2FtcGxpbmdcblxuRGVmaW5lcyB0aGUgc2hhcmUtb2YtY29udGFpbmVyIHNhbml0eSBndWFyZCAoMC4wIHRvIDEuMCk6IGlmIGEgcGF0dGVybiBpcyBhYm92ZSB0aGUgYWJzb2x1dGUgY2FwIEJVVCBiZWxvdyB0aGlzIHNoYXJlIG9mIGl0cyBjb250YWluZXIncyB0b3RhbCB2b2x1bWUsIHRoZSByZWd1bGF0b3Igc2tpcHMgaXQuIFRoZSBwYXR0ZXJuIGlzIHBhcnQgb2YgYSBsZWdpdGltYXRlbHkgaGlnaC12b2x1bWUgY29udGFpbmVyIChidXN5IEFQSSBnYXRld2F5LCBhY2Nlc3MgbG9nIHdvcmtsb2FkKSwgbm90IGEgbm9pc3kgb3V0bGllci4gIFNoYXJlIGlzIGAocGF0dGVybiBieXRlcyArIGV2ZW50KSAvIChjb250YWluZXIgYnl0ZXMgKyBldmVudClgIG92ZXIgdGhlIGN1cnJlbnQgd2luZG93LiAgKipFeGFtcGxlOioqIDAuMDUgbWVhbnMgYSBwYXR0ZXJuIGFib3ZlIHRoZSBhYnNvbHV0ZSBjYXAgaXMgc3RpbGwgcmV0YWluZWQgaWYgaXQgcmVwcmVzZW50cyBsZXNzIHRoYW4gNSUgb2YgaXRzIGNvbnRhaW5lcidzIHRvdGFsIHZvbHVtZS4gUHJldmVudHMgZmFsc2UgcG9zaXRpdmVzIG9uIG5hdHVyYWxseSBjaGF0dHkgY29udGFpbmVycy4gKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogMCkiLAogICAgICAgICAgImRlZmF1bHQiIDogMAogICAgICAgIH0sCiAgICAgICAgImluZ2VzdGlvbkNvc3RQZXJHQiIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlZlbmRvciBpbmdlc3Rpb24gY29zdCBwZXIgR0IgaW4gVVNELCBmb3IgcmVuZGVyaW5nIHNhdmluZ3MgaW4gZG9sbGFyc1xuXG5EZWZpbmVzIHRoZSBjb3N0IHBlciBHQiBjaGFyZ2VkIGJ5IHlvdXIgb2JzZXJ2YWJpbGl0eSB2ZW5kb3IgZm9yIGxvZyBpbmdlc3Rpb24uIFVzZWQgKipvbmx5KiogdG8gcmVuZGVyIHNhdmluZ3MgbWV0cmljcyBpbiBkb2xsYXJzIChkcm9wcGVkIGJ5dGVzIMOXIGNvc3QgcGVyIEdCKTsgaXQgZG9lcyAqKm5vdCoqIGFmZmVjdCB0aGUga2VlcC9kcm9wIGRlY2lzaW9uLCB3aGljaCBpcyBkcml2ZW4gYnkgdGhlIGJ5dGUgY2FwLiAgKipDb21tb24gdmVuZG9yIHByaWNpbmcgKDIwMjUpOioqIC0gKipTcGx1bmsgQ2xvdWQqKjogfiQxLjUwL0dCICh2YXJpZXMgYnkgY29udHJhY3QsIFNLVSkgLSAqKkRhdGFkb2cgTG9ncyoqOiB+JDAuMTAtJDAuMjUvR0IgKGRlcGVuZHMgb24gdGllcjogc3RhbmRhcmQsIGZsZXgsIG9ubGluZSBhcmNoaXZlcykgLSAqKkVsYXN0aWMgQ2xvdWQqKjogfiQwLjEwOS9HQiAoc3RhbmRhcmQgbG9nZ2luZyB0aWVyKSAtICoqTmV3IFJlbGljKio6IH4kMC4zMC9HQiAoRGF0YSBQbHVzKSAtICoqU3VtbyBMb2dpYyoqOiB+JDEuNTAvR0IgKGRlcGVuZHMgb24gcGxhbikgLSAqKkFXUyBDbG91ZFdhdGNoIExvZ3MqKjogfiQwLjUwL0dCIGluZ2VzdGlvbiArICQwLjAzL0dCIHN0b3JhZ2UgLSAqKkF6dXJlIE1vbml0b3IgTG9ncyoqOiB+JDIuMzAvR0IgQW5hbHl0aWNzLCAkMC41MC9HQiBCYXNpYywgJDAuMDUvR0IgQXV4aWxpYXJ5ICgrIHBlci1HQiBxdWVyeSBmZWUpIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDEpIiwKICAgICAgICAgICJkZWZhdWx0IiA6IDEKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB0cnVlCn0=</template>

        ```yaml
        # 🔟❎ 'run' rate regulator configuration
        
        # The rate regulator prevents any single log pattern from dominating a container's
        # volume. For each event it computes the pattern's share of its container's recent
        # bytes and trims the pattern back once it crosses a fixed cap. Severity floors keep
        # errors/warnings flowing; an optional mute file overrides the regulator for
        # explicitly declared patterns.
        # To learn more see https://doc.log10x.com/run/receive/rate/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Dependencies ================================
        
        include: run/modules/receive/rate
        
        # ============================== Rate Options =================================
        
        rateReceiver:
        
          # 'fieldNames' identifies the log PATTERN (the numerator bucket). Usually the
          #  symbolMessage field from message enrichment. The container is configured
          #  separately via 'containerField' below -- it is the denominator and is keyed
          #  on its own, so a pattern's share is measured per container.
          fieldNames:
            - $=yield TenXEnv.get("symbolMessageField")
        
          # 'containerField' names the field whose value scopes the share denominator
          #  (the per-container total). Defaults to the k8s container name, which is
          #  stable across pod replicas (never the pod). When the field is absent on an
          #  event (non-k8s input), the regulator falls back to a single node-wide bucket.
          containerField: $=yield TenXEnv.get("k8sContainerNameField")
        
          # 'resetIntervalMs' is the window over which recent share is measured. The
          #  engine caps counter reset intervals at 255 seconds, so the effective maximum
          #  window is ~4.25 minutes.
          resetIntervalMs: $=parseDuration("4m")
        
          # 'absoluteCap' is the fleet-wide trigger: the byte budget for a single pattern
          #  per container within the current window, past which the regulator engages.
          #
          #  The cap is NOT a hard bound. The severity floor check below runs after the cap
          #  check, so above the cap a flood still passes at the floor rate (ERROR and
          #  CRITICAL half, WARN three tenths, everything else a tenth). The worst case for
          #  one pattern in one container per window is the cap plus the floor share of
          #  everything above it.
          #
          #  Default 0 = disabled. Three customer configurations are first-class:
          #    - Per-container only: leave 'absoluteCap' unset, set 'capLookupFile' below.
          #      Listed containers get the file's cap; unlisted containers are
          #      unregulated by the absolute cap. Most selective.
          #    - Fleet-wide only: set 'absoluteCap' to a positive integer (e.g., 10485760
          #      for 10 MB). Applies to every container the regulator sees.
          #    - Both: per-container entries in 'capLookupFile' override the fleet-wide
          #      cap; unlisted containers fall back to the fleet-wide cap (safety floor).
          # absoluteCap: 10485760   # 10 MB
        
          # 'minSharePercent' is the sanity guard against false positives on legitimately
          #  high-volume containers. If a pattern is over `absoluteCap` BUT below this
          #  share of its container's volume, it is left alone -- the pattern is a small
          #  fraction of a chatty container, not an outlier.
          minSharePercent: 0.05
        
          # 'severityFloors' is the minimum retention per severity level, applied as an
          #  absolute floor that BEATS the share cap: even a pattern over its cap keeps at
          #  least this fraction of each level. That floor share of the excess is what makes
          #  the cap a trigger rather than a bound. Floor-map keys must match the level
          #  vocabulary emitted by the level enrichment.
          severityFloors:
            - TRACE=0.1
            - DEBUG=0.1
            - INFO=0.1
            - WARN=0.3
            - ERROR=0.5
            - CRITICAL=0.5   # the level enrichment maps fatal/critical -> CRITICAL
            - FATAL=0.5      # kept for forwarders whose level vocabulary emits FATAL
        
          # 'minRetentionThreshold' is the floor used for any level not present in
          #  'severityFloors'.
          minRetentionThreshold: 0.1
        
          # 'warmupMs' is the per-instance grace period before the regulator starts capping a
          #  newly-seen container, giving the per-pattern sample counts time to fill. Scope is
          #  per regulator instance, so a regulator restart restarts the window. See
          #  https://doc.log10x.com/run/receive/rate/#warmup for the operator guide.
          warmupMs: $=parseDuration("5m")
        
          # 'baselineCount' is the number of events of each pattern kept per window
          #  regardless of share, so even a heavily-capped pattern leaves a forensic sample.
          baselineCount: 5
        
          # 'ingestionCostPerGB' is used only to render savings metrics in dollars; it does
          #  not affect the keep/drop decision (the decision is share-based).
          ingestionCostPerGB: 1.5
        
          # ---------------------------- Mute File Options ----------------------------
        
          # Optional declarative mute file keyed by the joined 'fieldNames'. Unlike before,
          # the mute file COMPOSES with the regulator rather than replacing it: a listed,
          # active pattern is decided by its file entry (the human declaration wins), and
          # everything else is handled by the share-based regulator.
          #
          # File format (CSV; header row + one comma-separated entry per row):
          #   fieldSet,value
          #   <fieldSetKey>,<sampleRate>:<untilEpochSec>[:<reason>]
          #
          # sampleRate 1.0 = never sampled; <1.0 = retain at that rate. Entries self-heal
          # past 'untilEpochSec'. The severity floor still applies so a 0.0 mute never
          # silences ERROR/FATAL.
          #
          # Periodically pulling the mute file to keep it fresh is done via the gitops
          # configuration -- see https://doc.log10x.com/config/github/#config
          lookup:
        
            # 'file' specifies the mute file path. Hot-reloaded on in-place writes (the
            #  gitops pattern); Kubernetes ConfigMap mounts won't reload. Comment out to
            #  run the regulator alone (the default).
            # file: $=path("data/sample/mutes") + "/mutes.csv"
        
            # 'retain' specifies the period before the file is marked as stale.
            retain: $=parseDuration("10m")
        
          # ---------------------------- Cap File Options -----------------------------
        
          # Optional declarative per-container cap file keyed by the value of
          # 'containerField' (the k8s container name by default). Each entry assigns a
          # byte cap to a specific container; the file wins per-event over 'absoluteCap'
          # above. Listed containers get the file's cap; unlisted containers fall back
          # to 'absoluteCap' (or to no cap, when 'absoluteCap' is unset/0).
          #
          # File format (CSV; header row + one comma-separated entry per row):
          #   container,cap
          #   <container>,<bytes>[:<untilEpochSec>][:<reason>]
          #
          # Intended to be managed via GitOps + the log10x_configure_regulator MCP tool,
          # which derives per-container caps from a monthly dollar budget and opens a PR
          # against this file.
          capLookup:
        
            # 'file' specifies the per-container cap file path. Hot-reloaded on in-place
            #  writes (the gitops pattern); also hot-reloaded when the file is replaced
            #  via ATOMIC_MOVE (the kubernetes ConfigMap pull driver pattern).
            #
            # Default points at the stable destination written by the engine's
            # kubernetes ConfigMap pull driver:
            #   ${java.io.tmpdir}/tenx/kubernetes/<namespace>/<configMap>/caps.csv
            #
            # CAP_LOOKUP_FILE env var overrides this for non-k8s deployments or for
            # operators who prefer a fixed absolute path (gitops-managed file on disk).
            # Unset unless CAP_LOOKUP_FILE is supplied, mirroring the actions `lookup`
            # block above. A computed default here is always non-empty, so
            # rateReceiverCapInput.shouldLoad always passed and TenXLookup.load always
            # ran -- hard-failing the whole pipeline when the cap CSV was not mounted:
            #
            #   error initializing pipeline unit #3: 'readStream(stream:fluentbit)'
            #     error processing script: .../run/receive/rate/rate-object-cap.js
            #     could not parse function: 'TenXLookup_load'
            #
            # That broke the documented receiver install out of the box, since the CSV
            # arrives later via GitOps/configure_engine. With this unset, the module
            # falls back to the fleet-wide absoluteCap, exactly as module.yaml documents.
            file: $=TenXEnv.get("CAP_LOOKUP_FILE")
        
            # 'retain' specifies the period before the file is marked as stale.
            retain: $=parseDuration("10m")
        
          # =========================== Config-Version Stamp ============================
          #
          # 'configGeneration.file' points at the config-generation.csv the MCP control
          # plane (log10x_configure_engine) writes as a SIBLING of the cap file in the
          # cap ConfigMap. The receiver reads its `generation` value (a hash of the cap
          # policy) and stamps it on every event as the `tenx_config_version` metric
          # label, so the running engine advertises which config generation it loaded and
          # the MCP can verify the policy it wrote is live (the config-generation closed
          # loop). Hot-reloaded like the cap file.
          #
          # OPT-IN, decoupled from caps: unset by default, so the stamp is emitted ONLY
          # when this points at a file. A receiver running the regulator WITHOUT the MCP
          # closed loop (GitOps-managed caps) leaves it unset and never loads the file --
          # no dependency, no init failure on a missing file. Set CONFIG_GENERATION_FILE
          # (or this) to the sibling of caps.csv, e.g.:
          #   ${java.io.tmpdir}/tenx/kubernetes/<namespace>/<configMap>/config-generation.csv
          configGeneration:
            file: $=TenXEnv.get("CONFIG_GENERATION_FILE", "")
        
          # --------------------------- Action File Options ---------------------------
        
          # Optional declarative per-SERVICE action file, keyed by the value of
          # 'containerField' (the k8s container name = the service). Each entry assigns
          # the disposition of that service's regulator-identified excess: 'drop'
          # (default), 'offload' (to customer S3), 'tier_down' (SIEM cheap tier),
          # 'compact' (lossless encode), 'sample', or 'pass'. The byte cap above still
          # decides where the excess starts; the action only decides what happens to it.
          # Unlisted services default to 'drop' (the original regulator behavior).
          #
          # File format (CSV; header row + one comma-separated entry per row):
          #   container,action
          #   <container>,<action>[:<untilEpochSec>][:<reason>]
          #
          # Managed via GitOps + the log10x_configure_engine MCP tool, which derives the
          # per-service action from the per-pattern action plan and opens a PR against
          # this file (a sibling of the cap file in the same ConfigMap).
          # 'actionLookupFile' is the per-service action file path. Declared as a FLAT
          #  key (like 'fieldNames' / 'minSharePercent') so it maps to the
          #  rateReceiverActionLookupFile option -- a new nested sub-group (e.g.
          #  actionLookup.file) is NOT recognized by the config-to-option mapper, even
          #  though capLookup.file is (capLookup is special-cased). Always set (default
          #  below, sibling to the cap file) so the cap-variant regulator can read it.
          #  ACTION_LOOKUP_FILE overrides for non-k8s / fixed-path deployments.
          actionLookupFile: $=TenXEnv.get("ACTION_LOOKUP_FILE", TenXEnv.get("java.io.tmpdir", "/tmp") + "/tenx/kubernetes/" + TenXEnv.get("K8S_NAMESPACE", "demo") + "/" + TenXEnv.get("K8S_CONFIGMAP", "log10x-action-intent") + "/actions.csv")
        ```

    === ":material-tune-variant: Compact"

  
        #### compact {.hidden-heading}
        Configure  the [compact receiver](/run/receive/compact "Per-pattern compaction decision via a declarative cap-file. Decides whether each event is emitted via encode() (compact templateHash+vars form, volume reduction where the destination supports it) or as fullText. GitOps-controlled, the MCP writes per-pattern entries via PR, engine hot-reloads the cap-file without restart.") to per-pattern compaction decision via a declarative cap-file. Decides whether each event is emitted via encode() (compact templateHash+vars form, volume reduction where the destination supports it) or as fullText. GitOps-controlled, the MCP writes per-pattern entries via PR, engine hot-reloads the cap-file without restart..  
  
        Below is the default configuration from: [compact/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/receive/compact/config.yaml "compact/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/receive/compact/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml9-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml9-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml9-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit compact receiver Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml9-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/receive/compact/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/receive/compact/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/receive/compact/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/receive/compact/config.yaml">$TENX_CONFIG/run/receive/compact/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/receive/compact/config.yaml">./pipelines/run/receive/compact/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgImNvbXBhY3RSZWNlaXZlciIgOiB7CiAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAibG9va3VwIiA6IHsKICAgICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICAgICAiZmlsZSIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJQYXRoIG9yIFVSTCB0byBhIHBlci1wYXR0ZXJuIGNvbXBhY3QgZGVjaXNpb25zIGNhcC1maWxlXG5cblBvaW50cyB0aGUgZW5naW5lIGF0IGEgY2FwLWZpbGUgd2hvc2UgZW50cmllcyBkZWNpZGUgd2hldGhlciBlYWNoIHBhdHRlcm4ncyBldmVudHMgYXJlIGNvbXBhY3RlZCB2aWEgYGVuY29kZSgpYCBvciBwcmVzZXJ2ZWQgYXMgYGZ1bGxUZXh0YC4gUGF0dGVybnMgbm90IGxpc3RlZCBmYWxsIGJhY2sgdG8gYGNvbXBhY3RSZWNlaXZlckRlZmF1bHRgLiAgVGhlIGxvb2t1cCBrZXkgaXMgdGhlIGV2ZW50IGZpZWxkcyBuYW1lZCBieSBgY29tcGFjdFJlY2VpdmVyRmllbGROYW1lc2Agam9pbmVkIHdpdGggYF9gIChkZWZhdWx0cyB0byBgW3N5bWJvbE1lc3NhZ2VdYCksIG1hdGNoaW5nIHRoZSBzYW1lIHBhdHRlcm4gaWRlbnRpdHkgdGhlIFJlcG9ydGVyIGF0dHJpYnV0ZXMgY29zdCB0by4gICoqRmlsZSBmb3JtYXQqKiAoQ1NWOyBoZWFkZXIgcm93ICsgb25lIGNvbW1hLXNlcGFyYXRlZCBlbnRyeSBwZXIgcm93KTogIGBgYCBmaWVsZFNldCx2YWx1ZSA8ZmllbGRTZXQ+LDx0cnVlfGZhbHNlPls6PHVudGlsRXBvY2hTZWM+XVs6PHJlYXNvbj5dIGBgYCAgLSBgZmllbGRTZXRgLCB0aGUgZXZlbnQgZmllbGRzIG5hbWVkIGJ5IGBjb21wYWN0UmVjZWl2ZXJGaWVsZE5hbWVzYCAgIGpvaW5lZCB3aXRoIGBfYC4gV2l0aCB0aGUgZGVmYXVsdCBgW3N5bWJvbE1lc3NhZ2VdYCB0aGlzIGlzIHRoZSAgIHN5bWJvbE1lc3NhZ2UgdmFsdWUgZm9yIHRoZSBwYXR0ZXJuLiAtIGB2YWx1ZWAsIGB0cnVlYCAoY29tcGFjdCB2aWEgYGVuY29kZSgpYCkgb3IgYGZhbHNlYCAoZXhwbGljaXRseSAgIHByZXNlcnZlIGBmdWxsVGV4dGAgZm9yIHRoaXMgcGF0dGVybiwgYmVhdGluZyB0aGUgZGVmYXVsdCkuIC0gYHVudGlsRXBvY2hTZWNgLCBvcHRpb25hbCBVbml4LWVwb2NoIChzZWNvbmRzKSBleHBpcnkuIFBhc3QgaXQgdGhlICAgZW50cnkgYmVjb21lcyBhIG5vLW9wIGFuZCB0aGUgcGF0dGVybiBmYWxscyBiYWNrIHRvICAgYGNvbXBhY3RSZWNlaXZlckRlZmF1bHRgLiAtIGByZWFzb25gLCBvcHRpb25hbCBmcmVlLXRleHQgZm9yIGF1ZGl0LiBNdXN0IG5vdCBjb250YWluIGNvbW1hcyAgICh3b3VsZCBicmVhayBDU1YgcGFyc2luZykuICAqKkV4YW1wbGUqKjogIGBgYCBmaWVsZFNldCx2YWx1ZSBwYXltZW50X3JldHJ5X2dhdGV3YXlfdGltZW91dCx0cnVlOjE3NDU4NTYwMDA6T1BTLTUxMjMgc3Bpa2UgYXV0aF9hdWRpdF90cmFpbCxmYWxzZToxNzQ1ODU2MDAwOmNvbXBsaWFuY2Uga2VlcCB2ZXJib3NlIGBgYCAgVGhlIGZpbGUgaXMgaG90LXJlbG9hZGVkIG9uIGluLXBsYWNlIHdyaXRlcyAodGhlIGdpdG9wcyBwYXR0ZXJuKTsgYSBLdWJlcm5ldGVzIGBDb25maWdNYXBgIG1vdW50IHdvbid0IHJlbG9hZCBiZWNhdXNlIHRoZSBDTSBzd2FwIGlzIGEgc3ltbGluayByZW5hbWUsIG5vdCBhbiBpbi1wbGFjZSB3cml0ZS4iCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXRhaW4iIDogewogICAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJSZXRlbnRpb24gcGVyaW9kIGZvciB0aGUgcGVyLXBhdHRlcm4gY2FwLWZpbGUgYmVmb3JlIGl0IGlzIGNvbnNpZGVyZWQgc3RhbGVcblxuRGVmaW5lcyB0aGUgcmV0ZW50aW9uIHBlcmlvZCAoaW4gbWlsbGlzZWNvbmRzKSBmb3IgdGhlIGNhcC1maWxlIChgY29tcGFjdFJlY2VpdmVyTG9va3VwRmlsZWApLiBJZiB0aGUgZmlsZSdzIGxhc3QgbW9kaWZpZWQgdGltZSBpcyBvbGRlciB0aGFuIHRoaXMgcGVyaW9kLCBhIHdhcm5pbmcgaXMgbG9nZ2VkLiBUaGUgY2FwIGVudHJpZXMgY29udGludWUgdG8gYXBwbHk7IHRoZSBzdGFsZW5lc3MgY2hlY2sgaXMgYWR2aXNvcnkgc28gb3BlcmF0b3JzIG5vdGljZSB3aGVuIGFuIGF1dG9tYXRlZCB0b29saW5nIHBpcGVsaW5lIGhhcyBzdG9wcGVkIHVwZGF0aW5nIHRoZSBmaWxlLiAgKipWYWxpZGF0aW9uKio6IG11c3QgYmUgZ3JlYXRlciB0aGFuIDYwMDAwbXMgKDEgbWludXRlKS4gKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogMzAwMDAwKSIsCiAgICAgICAgICAgICAgImRlZmF1bHQiIDogMzAwMDAwCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJmaWVsZE5hbWVzIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJFdmVudCBmaWVsZHMgam9pbmVkIHRvIGZvcm0gZWFjaCBldmVudCdzIGNhcC1maWxlIGxvb2t1cCBrZXlcblxuRGVmaW5lcyB0aGUgbGlzdCBvZiBUZW5YT2JqZWN0IGZpZWxkIG5hbWVzIGpvaW5lZCB3aXRoIGBfYCB0byBmb3JtIGVhY2ggZXZlbnQncyBsb29rdXAga2V5IGludG8gdGhlIGNhcC1maWxlLiBNYXRjaGVzIHRoZSByYXRlIHJlY2VpdmVyJ3MgYHJhdGVSZWNlaXZlckZpZWxkTmFtZXNgLCBzbyBhIGNhcC1maWxlIGVudHJ5IHRhcmdldHMgdGhlIHNhbWUgcGF0dGVybiBpZGVudGl0eSB0aGUgUmVwb3J0ZXIgYXR0cmlidXRlcyBjb3N0IHRvLiAgKipEZWZhdWx0Kio6IGBbc3ltYm9sTWVzc2FnZV1gLCB0aGUgc3ltYm9sTWVzc2FnZSBmaWVsZCwgd2hpY2ggaXMgdGhlIHN0YWJsZSBwYXR0ZXJuIGlkZW50aXR5IHByb2R1Y2VkIGJ5IHRoZSBlbmdpbmUncyBjbGFzc2lmaWVyLiAgTXVsdGktZGltZW5zaW9uYWwgY29tcGFjdGlvbiAoZS5nLiwgY29tcGFjdCBhIHBhdHRlcm4gb25seSBmb3IgYSBzcGVjaWZpYyB0ZW5hbnQpOiAgYGBgeWFtbCBjb21wYWN0UmVjZWl2ZXJGaWVsZE5hbWVzOiAgIC0gc3ltYm9sTWVzc2FnZSAgIC0gdGVuYW50SWQgYGBgICBDaGFuZ2luZyB0aGlzIGZpZWxkIHNldCByZXF1aXJlcyBhbiBlbmdpbmUgcmVzdGFydC4gKERlZmF1bHQ6IFtcInN5bWJvbE1lc3NhZ2VcIl0pIiwKICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICB9LAogICAgICAgICAgImRlZmF1bHQiIDogWwogICAgICAgICAgICAic3ltYm9sTWVzc2FnZSIKICAgICAgICAgIF0KICAgICAgICB9LAogICAgICAgICJkZWZhdWx0IiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgImJvb2xlYW4iLAogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkZhbGxiYWNrIGNvbXBhY3Rpb24gZGVjaXNpb24gd2hlbiBubyBjYXAtZmlsZSBlbnRyeSBhcHBsaWVzXG5cbkNvbnRyb2xzIHRoZSBmYWxsYmFjayBkZWNpc2lvbiB3aGVuIG5vIGNhcC1maWxlIGlzIGxvYWRlZCwgbm8gZW50cnkgbWF0Y2hlcyBhbiBldmVudCdzIHBhdHRlcm4sIG9yIGEgbWF0Y2hpbmcgZW50cnkgaGFzIGV4cGlyZWQuICAtIGBmYWxzZWAgKGRlZmF1bHQpLCBwcmVzZXJ2ZSBgZnVsbFRleHRgLiBDYXAtZmlsZSBlbnRyaWVzIG9wdCAgIHNwZWNpZmljIHBhdHRlcm5zIElOVE8gY29tcGFjdGlvbi4gLSBgdHJ1ZWAsIGNvbXBhY3QgdmlhIGBlbmNvZGUoKWAuIENhcC1maWxlIGVudHJpZXMgb3B0IHNwZWNpZmljICAgcGF0dGVybnMgT1VUIChlLmcuLCBhdWRpdC9jb21wbGlhbmNlIHBhdHRlcm5zIHRoYXQgbXVzdCBzdGF5ICAgdmVyYm9zZSkuICBGbGlwcGluZyB0aGlzIHZhbHVlIGlzIGEgcG9saWN5LWxldmVsIGRlY2lzaW9uIChhZmZlY3RzIGV2ZXJ5IGV2ZW50KSwgbm90IGEgY2FwLWZpbGUgZWRpdC4gQ2hhbmdpbmcgaXQgcmVxdWlyZXMgYSBwb2Qgcm9sbG91dC4gVGhlIGNhcC1maWxlIGhhbmRsZXMgcGVyLXBhdHRlcm4gb3ZlcnJpZGVzIHdpdGhvdXQgcmVzdGFydC4gKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikiCiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogdHJ1ZQp9</template>

        ```yaml
        # 🔟❎ 'run' compact receiver configuration
        
        # Per-pattern compaction decision via a declarative cap-file.
        # The forwarder output stream emits encode() for listed patterns and
        # fullText for everyone else (or vice versa via per-pattern opt-out).
        # To learn more see https://doc.log10x.com/run/receive/compact/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Dependencies ================================
        
        include: run/modules/receive/compact
        
        # ============================ Compact Options ================================
        
        compactReceiver:
        
          # 'fieldNames' defines the TenXObject fields joined with underscores to form
          # each event's lookup key. Defaults to [symbolMessage], matching the rate
          # receiver's rateReceiverFieldNames so MCP-authored entries address the same
          # pattern_hash the Reporter attributes cost to.
          fieldNames:
            - symbolMessage
        
          # 'default' is the fallback when no cap-file entry matches the event's
          # pattern. `false` (default) preserves fullText; `true` compacts via
          # encode(). The cap-file's per-pattern decision overrides this per event.
          default: false
        
          lookup:
        
            # 'file' specifies the per-pattern cap-file path. Hot-reloaded on in-place
            #  writes (the gitops pattern); Kubernetes ConfigMap mounts won't reload.
            #  Comment out to disable the cap-file (every event follows 'default' above).
            # file: $=path("data/sample/compact") + "/compact-cap.csv"
        
            # 'retain' specifies the period before the file is marked as stale.
            retain: $=parseDuration("10m")
        ```

??? tenx-metricoutputs "Metric Outputs"

    <a id="metricOutputs"></a>
    ### Metric Outputs {.hidden-heading}

    Activate a [Metric output](/run/output/metric "Write aggregated TenXSummary instances to metric outputs (e.g., Prometheus, Datadog)") to write aggregated TenXSummary instances to metric outputs (e.g., Prometheus, Datadog).

    === ":material-monitor-dashboard: Log10x"

  
        #### log10x {.hidden-heading}
        Configure [log10x managed Prometheus outputs](/run/output/metric/log10x "Publish TenXSummary metrics to the log10x Prometheus backend") to publish TenXSummary metrics to the log10x Prometheus backend.  
  
        Below is the default configuration from: [log10x/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/output/metric/log10x/config.yaml "log10x/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/output/metric/log10x/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml10-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml10-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml10-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit log10x managed Prometheus output Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml10-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/output/metric/log10x/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/output/metric/log10x/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/output/metric/log10x/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/output/metric/log10x/config.yaml">$TENX_CONFIG/run/output/metric/log10x/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/output/metric/log10x/config.yaml">./pipelines/run/output/metric/log10x/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgImxvZzEweE1ldHJpY3MiIDogewogICAgICAidHlwZSIgOiAiYXJyYXkiLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgICAiZW5hYmxlZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJFbmFibGUgdGhpcyBvdXRwdXRcblxuRW5hYmxlIG9yIGRpc2FibGUgdGhpcyBvdXRwdXQuIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiB0cnVlKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICAibmFtZUZpZWxkIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiB0aGUgVGVuWFN1bW1hcnkgZmllbGQgaWRlbnRpZnlpbmcgdGhlIG1ldHJpY1xuXG5EZWZpbmVzIHRoZSBuYW1lIG9mIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCB3aG9zZSB2YWx1ZSBpZGVudGlmaWVzIGEgbWV0cmljIGNvdW50ZXIuIERlZmF1bHRzIHRvIHRoZSBbc3VtbWFyeVZhbHVlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhTdW1tYXJ5K3N1bW1hcnlWYWx1ZXMpIGZpZWxkIHdoaWNoIGhvbGRzIHRoZSB2YWx1ZShzKSBieSB3aGljaCBUZW5YT2JqZWN0cyBhcmUgIGdyb3VwZWQgaW50byB0aGUgY3VycmVudCBUZW5YU3VtbWFyeSBpbnN0YW5jZS4gVG8gbGVhcm4gbW9yZSBzZWUgW21pY3JvbWV0ZXIgY291bnRlcnNdKGh0dHBzOi8vd3d3LmJhZWxkdW5nLmNvbS9taWNyb21ldGVyIzItY291bnRlcikgKERlZmF1bHQ6IFtzdW1tYXJ5VmFsdWVzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWFN1bW1hcnkrc3VtbWFyeVZhbHVlcykpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogIltzdW1tYXJ5VmFsdWVzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWFN1bW1hcnkrc3VtbWFyeVZhbHVlcykiCiAgICAgICAgICB9LAogICAgICAgICAgImNvdW50ZXJGaWVsZHMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk5hbWVzIG9mIHRoZSBUZW5YU3VtbWFyeSBmaWVsZHMgdXNlZCB0byBpbmNyZW1lbnQgdGhlIG1ldHJpYyBjb3VudGVyIHZhbHVlXG5cbkRlZmluZXMgdGhlIG5hbWUgb2YgdGhlIFRlblhTdW1tYXJ5IGZpZWxkIGJ5IHdob3NlIHZhbHVlIHRvIGluY3JlbWVudCB0aGUgY291bnRlci4iLAogICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAidGFnRmllbGRzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIFRlblhTdW1tYXJ5IGZpZWxkcyB0byB1c2UgYXMgbWV0cmljIHRhZyB2YWx1ZXNcblxuRGVmaW5lcyB0aGUgVGVuWFN1bW1hcnkgZmllbGQgbmFtZXMgdG8gdXNlIGFzIGB0YWdgIHZhbHVlcy4gVGFncyBhcmUgZGltZW5zaW9ucyB0aGF0IGVuYWJsZSBzbGljaW5nIGEgcGFydGljdWxhciBuYW1lZCBtZXRyaWMgdG8gZHJpbGwgZG93biB0byByZWFzb24gYWJvdXQgaXRzIHZhbHVlLiBUbyBsZWFybiBtb3JlIHNlZSBbbWljcm9tZXRlciB0YWdzXShodHRwczovL3d3dy5iYWVsZHVuZy5jb20vbWljcm9tZXRlciMxLXRhZ3MpIiwKICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgInRhZ0ZpZWxkTmFtZXMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2YgY3VzdG9tIG5hbWVzIHRvIHVzZSBmb3IgVGVuWFN1bW1hcnkgZmllbGRzLlxuXG5EZWZpbmVzIHRoZSBhIGxpc3Qgb2YgY3VzdG9tIG5hbWVzIHRvIGdpdmUgZmllbGRzIHdoZW4gcmVwb3J0aW5nIHRoZW0uIEZvcm1hdCBhcyBhIGxpc3Qgb2YgbmFtZTEsIGN1c3RvbTEsIG5hbWUyLCBjdXN0b20yLiAgRm9yIGV4YW1wbGUsIHRvIHNldCBhIGN1c3RvbSBuYW1lIG9mICdNeS1DdXN0b20tRmllbGQnIHRvIGFuIGV4aXN0aW5nICdpbnRyaW5zaWMtZmllbGQnOiBgYGAgeWFtbCBsb2cxMHhNZXRyaWNzOiAgIHRhZ0ZpZWxkTmFtZXM6ICAgICAtIGludHJpbnNpYy1maWVsZCAgICAgLSBNeS1DdXN0b20tRmllbGQiLAogICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAiZmlsdGVyIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiQSBKYXZhU2NyaXB0IGV4cHJlc3Npb24gYW4gVGVuWFN1bW1hcnkgbXVzdCBldmFsdWF0ZSBhcyAndHJ1dGh5JyBhZ2FpbnN0IHRvIGJlIHdyaXR0ZW4gdG8gdGhpcyBvdXRwdXRcblxuU3BlY2lmaWVzIGEgSmF2YVNjcmlwdCBleHByZXNzaW9uIHRoYXQgYW4gVGVuWFN1bW1hcnkgbXVzdCBldmFsdWF0ZSBhcyB0cnV0aHkgdG8gd3JpdGUgaXRzIGluc3RhbmNlL3RlbXBsYXRlIGZpZWxkIHZhbHVlcyB0byB0aGUgdGFyZ2V0IGNvdW50ZXIuICAgRm9yIGV4YW1wbGUsIHRvIG9ubHkgZW1pdCBUZW5YU3VtbWFyaWVzIHByb2R1Y2VkIGJ5IHRoZSAnbXlNZXRyaWMnIGFnZ3JlZ2F0b3IsIHNwZWNpZnk6ICAgICAgIGBgYCB5YW1sICBsb2cxMHhNZXRyaWNzOiAgICBmaWx0ZXI6IHRoaXMuaW5wdXROYW1lID09IFwibXlNZXRyaWNcIiBgYGAgICAgIFRvIGxlYXJuIG1vcmUgc2VlIFtpbnB1dE5hbWVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YQmFzZU9iamVjdCtpbnB1dE5hbWUpLiIKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB0cnVlCn0=</template>

        ```yaml
        # 🔟❎ 'run' 10x-hosted metrics backend output configuration
        
        # Configuration 10x-hosted metrics backend counter outputs.
        # To learn more see https://doc.log10x.com/run/output/metric/log10x/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Dependencies ================================
        
        include: run/modules/output/metric/log10x
        
        # =========================== Log10x Metrics output ===========================
        
        # Define multiple log10x metric outputs below
        log10xMetrics:
        
            # ---------------------------- Counter Options ----------------------------
        
            # 'nameField' sets the TenXSummary field whose value identifies the micrometer counter to increment.
            #  The 'inputName' field returns the name of the aggregator that produced the target TenXSummary instance.
            #  To learn more see https://doc.log10x.com/run/aggregate
          - nameField: inputName
        
            # 'counterFields' specifies the TenXSummary fields whose values are used to increment the counter.
            #  To learn more see https://doc.log10x.com/run/aggregate/#summary-fields
            counterFields:
              - summaryVolume
              - summaryBytes
              - summaryTotals
        
            # 'tagFields' sets the TenXSummary fields used as the counter tag dimension values.
            #  Defaults to https://doc.log10x.com/run/initialize/#enrichmentFields
            tagFields:
              - $=yield TenXEnv.get("enrichmentFields")
        
            # 'tagFieldNames' allows setting custom names to aggregated fields for metrics reporting.
            #  Defaults to https://doc.log10x.com/run/initialize/#metricFieldNames
            tagFieldNames:
              - $=yield TenXEnv.get("metricFieldNames")
        
            # 'filter' sets a JavaScript expression that TenXSummaries must evaluate as truthy to write to the output.
            #  To learn more see https://doc.log10x.com/run/output/receive/#filter-expressions
            filter: isSummary
        ```

    === ":simple-prometheus: Scrape"

  
        #### scrape {.hidden-heading}
        Configure [Prometheus scrape metrics outputs](/run/output/metric/prometheus/scrape "Publish TenXSummary metrics to Prometheus") to publish TenXSummary metrics to Prometheus.  
  
        Below is the default configuration from: [scrape/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/output/metric/prometheus/scrape/config.yaml "scrape/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/output/metric/prometheus/scrape/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml11-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml11-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml11-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Prometheus scrape metrics output Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml11-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/output/metric/prometheus/scrape/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/output/metric/prometheus/scrape/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/output/metric/prometheus/scrape/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/output/metric/prometheus/scrape/config.yaml">$TENX_CONFIG/run/output/metric/prometheus/scrape/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/output/metric/prometheus/scrape/config.yaml">./pipelines/run/output/metric/prometheus/scrape/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgInByb21ldGhldXMiIDogewogICAgICAidHlwZSIgOiAiYXJyYXkiLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgICAiZW5hYmxlZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJFbmFibGUgdGhpcyBvdXRwdXRcblxuRW5hYmxlIG9yIGRpc2FibGUgdGhpcyBvdXRwdXQuIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiB0cnVlKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICAicG9ydCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlNjcmFwZXIgcG9ydCBudW1iZXJcblxuUG9ydCBudW1iZXIgdG8gbGlzdGVuIHRvIHRoZSBQcm9tZXRoZXVzIHNjcmFwZXIgb24gKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSIKICAgICAgICAgIH0sCiAgICAgICAgICAibmFtZUZpZWxkIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiB0aGUgVGVuWFN1bW1hcnkgZmllbGQgaWRlbnRpZnlpbmcgdGhlIG1ldHJpY1xuXG5EZWZpbmVzIHRoZSBuYW1lIG9mIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCB3aG9zZSB2YWx1ZSBpZGVudGlmaWVzIGEgbWV0cmljIGNvdW50ZXIuIERlZmF1bHRzIHRvIHRoZSBbc3VtbWFyeVZhbHVlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhTdW1tYXJ5K3N1bW1hcnlWYWx1ZXMpIGZpZWxkIHdoaWNoIGhvbGRzIHRoZSB2YWx1ZShzKSBieSB3aGljaCBUZW5YT2JqZWN0cyBhcmUgZ3JvdXBlZCBpbnRvIHRoZSBjdXJyZW50IFRlblhTdW1tYXJ5IGluc3RhbmNlLiBUbyBsZWFybiBtb3JlIHNlZSBbbWljcm9tZXRlciBjb3VudGVyc10oaHR0cHM6Ly93d3cuYmFlbGR1bmcuY29tL21pY3JvbWV0ZXIjMi1jb3VudGVyKSAoRGVmYXVsdDogW3N1bW1hcnlWYWx1ZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YU3VtbWFyeStzdW1tYXJ5VmFsdWVzKSkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAiW3N1bW1hcnlWYWx1ZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YU3VtbWFyeStzdW1tYXJ5VmFsdWVzKSIKICAgICAgICAgIH0sCiAgICAgICAgICAiY291bnRlckZpZWxkcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZXMgb2YgdGhlIFRlblhTdW1tYXJ5IGZpZWxkcyB1c2VkIHRvIGluY3JlbWVudCB0aGUgbWV0cmljIGNvdW50ZXIgdmFsdWVcblxuRGVmaW5lcyB0aGUgbmFtZSBvZiB0aGUgVGVuWFN1bW1hcnkgZmllbGQgYnkgd2hvc2UgdmFsdWUgdG8gaW5jcmVtZW50IHRoZSBjb3VudGVyLiIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJ0YWdGaWVsZHMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2YgVGVuWFN1bW1hcnkgZmllbGRzIHRvIHVzZSBhcyBtZXRyaWMgdGFnIHZhbHVlc1xuXG5EZWZpbmVzIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCBuYW1lcyB0byB1c2UgYXMgYHRhZ2AgdmFsdWVzLiBUYWdzIGFyZSBkaW1lbnNpb25zIHRoYXQgZW5hYmxlIHNsaWNpbmcgYSBwYXJ0aWN1bGFyIG5hbWVkIG1ldHJpYyB0byBkcmlsbCBkb3duIHRvIHJlYXNvbiBhYm91dCBpdHMgdmFsdWUuIFRvIGxlYXJuIG1vcmUgc2VlIFttaWNyb21ldGVyIHRhZ3NdKGh0dHBzOi8vd3d3LmJhZWxkdW5nLmNvbS9taWNyb21ldGVyIzEtdGFncykiLAogICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAidGFnRmllbGROYW1lcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBvZiBjdXN0b20gbmFtZXMgdG8gdXNlIGZvciBUZW5YU3VtbWFyeSBmaWVsZHMuXG5cbkRlZmluZXMgdGhlIGEgbGlzdCBvZiBjdXN0b20gbmFtZXMgdG8gZ2l2ZSBmaWVsZHMgd2hlbiByZXBvcnRpbmcgdGhlbS4gRm9ybWF0IGFzIGEgbGlzdCBvZiBuYW1lMSwgY3VzdG9tMSwgbmFtZTIsIGN1c3RvbTIuICBGb3IgZXhhbXBsZSwgdG8gc2V0IGEgY3VzdG9tIG5hbWUgb2YgJ015LUN1c3RvbS1GaWVsZCcgdG8gYW4gZXhpc3RpbmcgJ2ludHJpbnNpYy1maWVsZCc6IGBgYCB5YW1sIHByb21ldGhldXM6ICAgdGFnRmllbGROYW1lczogICAgIC0gaW50cmluc2ljLWZpZWxkICAgICAtIE15LUN1c3RvbS1GaWVsZCIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJmaWx0ZXIiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBIEphdmFTY3JpcHQgZXhwcmVzc2lvbiBhbiBUZW5YU3VtbWFyeSBtdXN0IGV2YWx1YXRlIGFzICd0cnV0aHknIGFnYWluc3QgdG8gYmUgd3JpdHRlbiB0byB0aGlzIG91dHB1dFxuXG5TcGVjaWZpZXMgYSBKYXZhU2NyaXB0IGV4cHJlc3Npb24gdGhhdCBhbiBUZW5YU3VtbWFyeSBtdXN0IGV2YWx1YXRlIGFzIHRydXRoeSB0byB3cml0ZSBpdHMgaW5zdGFuY2UvdGVtcGxhdGUgZmllbGQgdmFsdWVzIHRvIHRoZSB0YXJnZXQgY291bnRlci4gIEZvciBleGFtcGxlLCB0byBvbmx5IGVtaXQgVGVuWFN1bW1hcmllcyBwcm9kdWNlZCBieSB0aGUgJ215TWV0cmljJyBhZ2dyZWdhdG9yLCBzcGVjaWZ5OiBgYGAgeWFtbCBwcm9tZXRoZXVzOiAgIGZpbHRlcjogdGhpcy5pbnB1dE5hbWUgPT0gXCJteU1ldHJpY1wiIGBgYCAgVG8gbGVhcm4gbW9yZSBzZWUgW2lucHV0TmFtZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhCYXNlT2JqZWN0K2lucHV0TmFtZSkiCiAgICAgICAgICB9LAogICAgICAgICAgIm1heENhcmRpbmFsaXR5IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4aW11bSBudW1iZXIgb2YgdW5pcXVlIG1ldHJpYyBjb21iaW5hdGlvbnMgYWxsb3dlZFxuXG5TZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiB1bmlxdWUgbWV0cmljIGNvbWJpbmF0aW9ucyAoY2FyZGluYWxpdHkpIGFsbG93ZWQgZm9yIHRoaXMgb3V0cHV0LiBXaGVuIGV4Y2VlZGVkLCBtZXRyaWNzIHdpbGwgYmUgZHJvcHBlZCB0byBwcmV2ZW50IGV4Y2Vzc2l2ZSBjYXJkaW5hbGl0eS4gKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogNTAwKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IDUwMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmVkIiA6IFsKICAgICAgICAgICJwb3J0IgogICAgICAgIF0KICAgICAgfQogICAgfQogIH0sCiAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IHRydWUKfQ==</template>

        ```yaml
        # 🔟❎ 'run' Prometheus metric output configuration
        
        # Configure Prometheus metric counter outputs.
        # To learn more see https://doc.log10x.com/run/output/metric/prometheus/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Dependencies ================================
        
        include: run/modules/output/metric/prometheus/scrape
        
        # ============================== Prometheus Outputs ===========================
        
        # Define multiple Prometheus metric outputs below
        prometheus:
        
            # --------------------------- Connection Options --------------------------
        
            # 'port' sets the port number to listen to the Prometheus scraper on
            #  Override via 'PROMETHEUS_SCRAPE_PORT' to avoid collisions in sidecar deployments
            #  (default 9100 collides with node_exporter).
          - port: $=TenXEnv.get("PROMETHEUS_SCRAPE_PORT", 9100)
        
            # ---------------------------- Counter Options ----------------------------
        
            # 'nameField' sets the TenXSummary field whose value identifies the micrometer counter to increment. 
            #  The 'inputName' field returns the name of the aggregator that produced the target TenXSummary instance.
            #  To learn more see https://doc.log10x.com/run/aggregate
            nameField: inputName
        
            # 'counterFields' specifies the TenXSummary fields whose values are used to increment the counter.
            #  To learn more see https://doc.log10x.com/run/aggregate/#summary-fields
            counterFields:
              - summaryVolume
              - summaryBytes
              - summaryTotals
        
            # 'tagFields' sets the TenXSummary fields used as the counter tag dimension values.
            #  Defaults to https://doc.log10x.com/run/initialize/#enrichmentFields
            tagFields:
              - $=yield TenXEnv.get("enrichmentFields")
        
            # 'tagFieldNames' allows setting custom names to aggregated fields for metrics reporting.
            #  Defaults to https://doc.log10x.com/run/initialize/#metricFieldNames
            tagFieldNames:
              - $=yield TenXEnv.get("metricFieldNames")
        
            # 'filter' sets a JavaScript expression that TenXSummaries must evaluate as truthy to write to the output.
            #  To learn more see https://doc.log10x.com/run/output/receive/#filter-expressions
            filter: isSummary
        ```

    === ":simple-prometheus: Push-gateway"

  
        #### push-gateway {.hidden-heading}
        Configure [Prometheus Push gateway metrics outputs](/run/output/metric/prometheus/push-gateway "Publish TenXSummary metrics to Prometheus via a Push gateway") to publish TenXSummary metrics to Prometheus via a Push gateway.  
  
        Below is the default configuration from: [push-gateway/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/output/metric/prometheus/push-gateway/config.yaml "push-gateway/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/output/metric/prometheus/push-gateway/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml12-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml12-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml12-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Prometheus Push gateway metrics output Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml12-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/output/metric/prometheus/push-gateway/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/output/metric/prometheus/push-gateway/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/output/metric/prometheus/push-gateway/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/output/metric/prometheus/push-gateway/config.yaml">$TENX_CONFIG/run/output/metric/prometheus/push-gateway/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/output/metric/prometheus/push-gateway/config.yaml">./pipelines/run/output/metric/prometheus/push-gateway/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgInByb21ldGhldXNQRyIgOiB7CiAgICAgICJ0eXBlIiA6ICJhcnJheSIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAgICJlbmFibGVkIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJib29sZWFuIiwKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkVuYWJsZSB0aGlzIG91dHB1dFxuXG5FbmFibGUgb3IgZGlzYWJsZSB0aGlzIG91dHB1dC4gKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IHRydWUpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgICJob3N0IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiSG9zdCBhZGRyZXNzIG9mIFByb21ldGhldXMgcHVzaCBnYXRld2F5IGluc3RhbmNlIHRvIHB1c2ggZGF0YSB0b1xuXG5EZWZpbmVzIHRoZSBob3N0IGFkZHJlc3Mgb2YgdGhlIHB1c2ggZ2F0ZXdheSB1c2VkIGZvciBwdXNoaW5nIHRoZSBtZXRyaWNzLiIKICAgICAgICAgIH0sCiAgICAgICAgICAiam9iIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiBqb2IgYXNzaWduZWQgdG8gcHVzaGVkIG1ldHJpY3NcblxuRGVmaW5lcyB0aGUgbmFtZSBvZiB0aGUgam9iIHRoYXQgdG8gYXNzaWduIHRvIG91dHB1dCBtZXRyaWNzLiIKICAgICAgICAgIH0sCiAgICAgICAgICAic3RlcCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlRoZSBpbnRlcnZhbCBhdCB3aGljaCB0byBwdWJsaXNoIG1ldHJpY3MgdG8gb3V0cHV0XG5cblNldHMgdGhlIGludGVydmFsIGF0IHdoaWNoIHRvIHB1Ymxpc2ggbWV0cmljcyB0byB0aGUgdGltZS1zZXJpZXMgZGVzdGluYXRpb24gKGUuZy4sICcxbScpLiBUbyBsZWFybiBtb3JlIHNlZSBbcmF0ZS1hZ2dyZWdhdGlvbl0oaHR0cHM6Ly9taWNyb21ldGVyLmlvL2RvY3MvY29uY2VwdHMjcmF0ZS1hZ2dyZWdhdGlvbikgKERlZmF1bHQ6IDFtaW4pIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogIjFtaW4iCiAgICAgICAgICB9LAogICAgICAgICAgIm5hbWVGaWVsZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk5hbWUgb2YgdGhlIFRlblhTdW1tYXJ5IGZpZWxkIGlkZW50aWZ5aW5nIHRoZSBtZXRyaWNcblxuRGVmaW5lcyB0aGUgbmFtZSBvZiB0aGUgVGVuWFN1bW1hcnkgZmllbGQgd2hvc2UgdmFsdWUgaWRlbnRpZmllcyBhIG1ldHJpYyBjb3VudGVyLiBEZWZhdWx0cyB0byB0aGUgW3N1bW1hcnlWYWx1ZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YU3VtbWFyeStzdW1tYXJ5VmFsdWVzKSBmaWVsZCB3aGljaCBob2xkcyB0aGUgdmFsdWUocykgYnkgd2hpY2ggVGVuWE9iamVjdHMgYXJlIGdyb3VwZWQgaW50byB0aGUgY3VycmVudCBUZW5YU3VtbWFyeSBpbnN0YW5jZS4gVG8gbGVhcm4gbW9yZSBzZWUgW21pY3JvbWV0ZXIgY291bnRlcnNdKGh0dHBzOi8vd3d3LmJhZWxkdW5nLmNvbS9taWNyb21ldGVyIzItY291bnRlcikgKERlZmF1bHQ6IFtzdW1tYXJ5VmFsdWVzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWFN1bW1hcnkrc3VtbWFyeVZhbHVlcykpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogIltzdW1tYXJ5VmFsdWVzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWFN1bW1hcnkrc3VtbWFyeVZhbHVlcykiCiAgICAgICAgICB9LAogICAgICAgICAgImNvdW50ZXJGaWVsZHMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk5hbWVzIG9mIHRoZSBUZW5YU3VtbWFyeSBmaWVsZHMgdXNlZCB0byBpbmNyZW1lbnQgdGhlIG1ldHJpYyBjb3VudGVyIHZhbHVlXG5cbkRlZmluZXMgdGhlIG5hbWUgb2YgdGhlIFRlblhTdW1tYXJ5IGZpZWxkIGJ5IHdob3NlIHZhbHVlIHRvIGluY3JlbWVudCB0aGUgY291bnRlci4iLAogICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAidGFnRmllbGRzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIFRlblhTdW1tYXJ5IGZpZWxkcyB0byB1c2UgYXMgbWV0cmljIHRhZyB2YWx1ZXNcblxuRGVmaW5lcyB0aGUgVGVuWFN1bW1hcnkgZmllbGQgbmFtZXMgdG8gdXNlIGFzIGB0YWdgIHZhbHVlcy4gVGFncyBhcmUgZGltZW5zaW9ucyB0aGF0IGVuYWJsZSBzbGljaW5nIGEgcGFydGljdWxhciBuYW1lZCBtZXRyaWMgdG8gZHJpbGwgZG93biB0byByZWFzb24gYWJvdXQgaXRzIHZhbHVlLiBUbyBsZWFybiBtb3JlIHNlZSBbbWljcm9tZXRlciB0YWdzXShodHRwczovL3d3dy5iYWVsZHVuZy5jb20vbWljcm9tZXRlciMxLXRhZ3MpIiwKICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgInRhZ0ZpZWxkTmFtZXMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2YgY3VzdG9tIG5hbWVzIHRvIHVzZSBmb3IgVGVuWFN1bW1hcnkgZmllbGRzLlxuXG5EZWZpbmVzIHRoZSBhIGxpc3Qgb2YgY3VzdG9tIG5hbWVzIHRvIGdpdmUgZmllbGRzIHdoZW4gcmVwb3J0aW5nIHRoZW0uIEZvcm1hdCBhcyBhIGxpc3Qgb2YgbmFtZTEsIGN1c3RvbTEsIG5hbWUyLCBjdXN0b20yLiAgRm9yIGV4YW1wbGUsIHRvIHNldCBhIGN1c3RvbSBuYW1lIG9mICdNeS1DdXN0b20tRmllbGQnIHRvIGFuIGV4aXN0aW5nICdpbnRyaW5zaWMtZmllbGQnOiBgYGAgeWFtbCBwcm9tZXRoZXVzUEc6ICAgdGFnRmllbGROYW1lczogICAgIC0gaW50cmluc2ljLWZpZWxkICAgICAtIE15LUN1c3RvbS1GaWVsZCIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJmaWx0ZXIiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBIEphdmFTY3JpcHQgZXhwcmVzc2lvbiBhbiBUZW5YU3VtbWFyeSBtdXN0IGV2YWx1YXRlIGFzICd0cnV0aHknIGFnYWluc3QgdG8gYmUgd3JpdHRlbiB0byB0aGlzIG91dHB1dFxuXG5TcGVjaWZpZXMgYSBKYXZhU2NyaXB0IGV4cHJlc3Npb24gdGhhdCBhbiBUZW5YU3VtbWFyeSBtdXN0IGV2YWx1YXRlIGFzIHRydXRoeSB0byB3cml0ZSBpdHMgaW5zdGFuY2UvdGVtcGxhdGUgZmllbGQgdmFsdWVzIHRvIHRoZSB0YXJnZXQgY291bnRlci4gIEZvciBleGFtcGxlLCB0byBvbmx5IGVtaXQgVGVuWFN1bW1hcmllcyBwcm9kdWNlZCBieSB0aGUgJ215TWV0cmljJyBhZ2dyZWdhdG9yLCBzcGVjaWZ5OiBgYGAgeWFtbCBwcm9tZXRoZXVzUEc6ICAgZmlsdGVyOiB0aGlzLmlucHV0TmFtZSA9PSBcIm15TWV0cmljXCIgYGBgICBUbyBsZWFybiBtb3JlIHNlZSBbaW5wdXROYW1lXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEJhc2VPYmplY3QraW5wdXROYW1lKSIKICAgICAgICAgIH0sCiAgICAgICAgICAibWF4Q2FyZGluYWxpdHkiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgIm51bWJlciIsCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJNYXhpbXVtIG51bWJlciBvZiB1bmlxdWUgbWV0cmljIGNvbWJpbmF0aW9ucyBhbGxvd2VkXG5cblNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHVuaXF1ZSBtZXRyaWMgY29tYmluYXRpb25zIChjYXJkaW5hbGl0eSkgYWxsb3dlZCBmb3IgdGhpcyBvdXRwdXQuIFdoZW4gZXhjZWVkZWQsIG1ldHJpY3Mgd2lsbCBiZSBkcm9wcGVkIHRvIHByZXZlbnQgZXhjZXNzaXZlIGNhcmRpbmFsaXR5LiAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiA1MDApIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogNTAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZWQiIDogWwogICAgICAgICAgImhvc3QiLAogICAgICAgICAgImpvYiIKICAgICAgICBdCiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB0cnVlCn0=</template>

        ```yaml
        # 🔟❎ 'run' Prometheus push gateway metric output configuration
        
        # Configures Prometheus push gateway metric counter outputs.
        # To learn more see https://doc.log10x.com/run/output/metric/prometheus/push-gateway/
        # For the Prometheus push gateway see: https://prometheus.io/docs/practices/pushing/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Dependencies ================================
        
        include: run/modules/output/metric/prometheus/push-gateway
        
        # ========================== Prometheus PG Options ============================
        
        # Define multiple Prometheus push gateway metric outputs below
        prometheusPG:
        
            # --------------------------- Connection Options --------------------------
        
            # 'host' sets the address and port number of the push gateway
          - host: $=TenXEnv.get("PUSHGATEWAY_URL", "localhost:9091")
        
            # 'job' sets the logical job name reported to the push gateway
            job: $=TenXEnv.get("PUSHGATEWAY_JOB", "my-10x-job")
        
            # ---------------------------- Counter Options ----------------------------
        
            # 'nameField' sets the TenXSummary field whose value identifies the micrometer counter to increment. 
            #  The 'inputName' field returns the name of the aggregator that produced the target TenXSummary instance.
            #  To learn more see https://doc.log10x.com/run/aggregate
            nameField: inputName
        
            # 'counterFields' specifies the TenXSummary fields whose values are used to increment the counter.
            #  To learn more see https://doc.log10x.com/run/aggregate/#summary-fields
            counterFields:
              - summaryVolume
              - summaryBytes
              - summaryTotals
        
            # 'tagFields' sets the TenXSummary fields used as the counter tag dimension values.
            #  Defaults to https://doc.log10x.com/run/initialize/#enrichmentFields
            tagFields:
              - $=yield TenXEnv.get("enrichmentFields")
        
            # 'tagFieldNames' allows setting custom names to aggregated fields for metrics reporting.
            #  Defaults to https://doc.log10x.com/run/initialize/#metricFieldNames
            tagFieldNames:
              - $=yield TenXEnv.get("metricFieldNames")
        
            # 'filter' sets a JavaScript expression that TenXSummaries must evaluate as truthy to write to the output.
            #  To learn more see https://doc.log10x.com/run/output/receive/#filter-expressions
            filter: isSummary
        
            # ---------------------------- Publish Options ----------------------------
        
            # 'step' sets the interval to send metrics Prometheus PG (e.g., '1m').
            #  To learn more see https://micrometer.io/docs/concepts#rate-aggregation
            step: 5s
        ```

    === ":simple-prometheus: Remote-write"

  
        #### remote-write {.hidden-heading}
        Configure [Prometheus RW metrics outputs](/run/output/metric/prometheus/remote-write "Publish TenXSummary metrics to Prometheus via the Remote-Write protocol") to publish TenXSummary metrics to Prometheus via the Remote-Write protocol.  
  
        Below is the default configuration from: [remote-write/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/output/metric/prometheus/remote-write/config.yaml "remote-write/config.yaml"){target="\_blank"} (<span class="tenx-tooltip" data-tooltip="The config file below contains required fields to activate this module, marked with &#10071;">** Required Fields*</span>).  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/output/metric/prometheus/remote-write/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml13-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml13-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml13-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Prometheus RW metrics output Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml13-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/output/metric/prometheus/remote-write/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/output/metric/prometheus/remote-write/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/output/metric/prometheus/remote-write/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/output/metric/prometheus/remote-write/config.yaml">$TENX_CONFIG/run/output/metric/prometheus/remote-write/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/output/metric/prometheus/remote-write/config.yaml">./pipelines/run/output/metric/prometheus/remote-write/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgInByb21ldGhldXNSVyIgOiB7CiAgICAgICJ0eXBlIiA6ICJhcnJheSIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAgICJlbmFibGVkIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJib29sZWFuIiwKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkVuYWJsZSB0aGlzIG91dHB1dFxuXG5FbmFibGUgb3IgZGlzYWJsZSB0aGlzIG91dHB1dC4gKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IHRydWUpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgICJob3N0IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiSG9zdCBhZGRyZXNzIG9mIHJlbW90ZSBQcm9tZXRoZXVzIGluc3RhbmNlIHRvIHdyaXRlIGRhdGEgdG9cblxuRGVmaW5lcyB0aGUgdGFyZ2V0IGhvc3QgYWRkcmVzcyBmb3IgcmVtb3RlIHdyaXRlLiBVc2UgZnVsbCBVUkwgcGF0aCwgKGkuZS4gaHR0cDovLzxzZXJ2ZXI+Ojxwb3J0Pi9hcGkvdjEvd3JpdGUpIgogICAgICAgICAgfSwKICAgICAgICAgICJ1c2VyIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiVXNlcm5hbWUgdG8gdXNlIHdoZW4gYXV0aGVudGljYXRpbmcgd2l0aCByZW1vdGUgd3JpdGUgdGFyZ2V0XG5cbkRlZmluZXMgdGhlIHVzZXJuYW1lIHdpdGggd2hpY2ggdG8gcGVyZm9ybSBhIGJhc2ljIGF1dGggd2l0aCB0aGUgcmVtb3RlIHdyaXRlIHRhcmdldC4gSWYgc3BlY2lmaWVkLCBleHBlY3RzICdwcm9tZXRoZXVzUldQYXNzd29yZCcgYWxzbyBiZSBwYXNzZWQuIgogICAgICAgICAgfSwKICAgICAgICAgICJwYXNzd29yZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlBhc3N3b3JkIHRvIHVzZSB3aGVuIGF1dGhlbnRpY2F0aW5nIHdpdGggcmVtb3RlIHdyaXRlIHRhcmdldFxuXG5EZWZpbmVzIHRoZSBwYXNzd29yZCB3aXRoIHdoaWNoIHRvIHBlcmZvcm0gYSBiYXNpYyBhdXRoIHdpdGggdGhlIHJlbW90ZSB3cml0ZSB0YXJnZXQuIE9ubHkgdXNlZCBpZiAncHJvbWV0aGV1c1JXVXNlcicgaXMgYWxzbyBzcGVjaWZpZWQuIgogICAgICAgICAgfSwKICAgICAgICAgICJ0b2tlbiIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlRva2VuIHRvIHVzZSB3aGVuIGF1dGhlbnRpY2F0aW5nIHdpdGggcmVtb3RlIHdyaXRlIHRhcmdldFxuXG5EZWZpbmVzIGEgdG9rZW4gd2l0aCB3aGljaCB0byBwZXJmb3JtIGEgYmVhcmVyIHRva2VuIGF1dGggd2l0aCB0aGUgcmVtb3RlIHdyaXRlIHRhcmdldC4iCiAgICAgICAgICB9LAogICAgICAgICAgInN0ZXAiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJUaGUgaW50ZXJ2YWwgYXQgd2hpY2ggdG8gcHVibGlzaCBtZXRyaWNzIHRvIG91dHB1dFxuXG5TZXRzIHRoZSBpbnRlcnZhbCBhdCB3aGljaCB0byBwdWJsaXNoIG1ldHJpY3MgdG8gdGhlIHRpbWUtc2VyaWVzIGRlc3RpbmF0aW9uIChlLmcuLCAnMW0nKS4gVG8gbGVhcm4gbW9yZSBzZWUgW3JhdGUtYWdncmVnYXRpb25dKGh0dHBzOi8vbWljcm9tZXRlci5pby9kb2NzL2NvbmNlcHRzI3JhdGUtYWdncmVnYXRpb24pIChEZWZhdWx0OiAxbWluKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICIxbWluIgogICAgICAgICAgfSwKICAgICAgICAgICJuYW1lRmllbGQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJOYW1lIG9mIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCBpZGVudGlmeWluZyB0aGUgbWV0cmljXG5cbkRlZmluZXMgdGhlIG5hbWUgb2YgdGhlIFRlblhTdW1tYXJ5IGZpZWxkIHdob3NlIHZhbHVlIGlkZW50aWZpZXMgYSBtZXRyaWMgY291bnRlci4gRGVmYXVsdHMgdG8gdGhlIFtzdW1tYXJ5VmFsdWVzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWFN1bW1hcnkrc3VtbWFyeVZhbHVlcykgZmllbGQgd2hpY2ggaG9sZHMgdGhlIHZhbHVlKHMpIGJ5IHdoaWNoIFRlblhPYmplY3RzIGFyZSBncm91cGVkIGludG8gdGhlIGN1cnJlbnQgVGVuWFN1bW1hcnkgaW5zdGFuY2UuIFRvIGxlYXJuIG1vcmUgc2VlIFttaWNyb21ldGVyIGNvdW50ZXJzXShodHRwczovL3d3dy5iYWVsZHVuZy5jb20vbWljcm9tZXRlciMyLWNvdW50ZXIpIChEZWZhdWx0OiBbc3VtbWFyeVZhbHVlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhTdW1tYXJ5K3N1bW1hcnlWYWx1ZXMpKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICJbc3VtbWFyeVZhbHVlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhTdW1tYXJ5K3N1bW1hcnlWYWx1ZXMpIgogICAgICAgICAgfSwKICAgICAgICAgICJjb3VudGVyRmllbGRzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJOYW1lcyBvZiB0aGUgVGVuWFN1bW1hcnkgZmllbGRzIHVzZWQgdG8gaW5jcmVtZW50IHRoZSBtZXRyaWMgY291bnRlciB2YWx1ZVxuXG5EZWZpbmVzIHRoZSBuYW1lIG9mIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCBieSB3aG9zZSB2YWx1ZSB0byBpbmNyZW1lbnQgdGhlIGNvdW50ZXIuIiwKICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgInRhZ0ZpZWxkcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBvZiBUZW5YU3VtbWFyeSBmaWVsZHMgdG8gdXNlIGFzIG1ldHJpYyB0YWcgdmFsdWVzXG5cbkRlZmluZXMgdGhlIFRlblhTdW1tYXJ5IGZpZWxkIG5hbWVzIHRvIHVzZSBhcyBgdGFnYCB2YWx1ZXMuIFRhZ3MgYXJlIGRpbWVuc2lvbnMgdGhhdCBlbmFibGUgc2xpY2luZyBhIHBhcnRpY3VsYXIgbmFtZWQgbWV0cmljIHRvIGRyaWxsIGRvd24gdG8gcmVhc29uIGFib3V0IGl0cyB2YWx1ZS4gVG8gbGVhcm4gbW9yZSBzZWUgW21pY3JvbWV0ZXIgdGFnc10oaHR0cHM6Ly93d3cuYmFlbGR1bmcuY29tL21pY3JvbWV0ZXIjMS10YWdzKSIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJ0YWdGaWVsZE5hbWVzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIGN1c3RvbSBuYW1lcyB0byB1c2UgZm9yIFRlblhTdW1tYXJ5IGZpZWxkcy5cblxuRGVmaW5lcyB0aGUgYSBsaXN0IG9mIGN1c3RvbSBuYW1lcyB0byBnaXZlIGZpZWxkcyB3aGVuIHJlcG9ydGluZyB0aGVtLiBGb3JtYXQgYXMgYSBsaXN0IG9mIG5hbWUxLCBjdXN0b20xLCBuYW1lMiwgY3VzdG9tMi4gIEZvciBleGFtcGxlLCB0byBzZXQgYSBjdXN0b20gbmFtZSBvZiAnTXktQ3VzdG9tLUZpZWxkJyB0byBhbiBleGlzdGluZyAnaW50cmluc2ljLWZpZWxkJzogYGBgIHlhbWwgcHJvbWV0aGV1c1JXOiAgIHRhZ0ZpZWxkTmFtZXM6ICAgICAtIGludHJpbnNpYy1maWVsZCAgICAgLSBNeS1DdXN0b20tRmllbGQiLAogICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAiZmlsdGVyIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiQSBKYXZhU2NyaXB0IGV4cHJlc3Npb24gYW4gVGVuWFN1bW1hcnkgbXVzdCBldmFsdWF0ZSBhcyAndHJ1dGh5JyBhZ2FpbnN0IHRvIGJlIHdyaXR0ZW4gdG8gdGhpcyBvdXRwdXRcblxuU3BlY2lmaWVzIGEgSmF2YVNjcmlwdCBleHByZXNzaW9uIHRoYXQgYW4gVGVuWFN1bW1hcnkgbXVzdCBldmFsdWF0ZSBhcyB0cnV0aHkgdG8gd3JpdGUgaXRzIGluc3RhbmNlL3RlbXBsYXRlIGZpZWxkIHZhbHVlcyB0byB0aGUgdGFyZ2V0IGNvdW50ZXIuICBGb3IgZXhhbXBsZSwgdG8gb25seSBlbWl0IFRlblhTdW1tYXJpZXMgcHJvZHVjZWQgYnkgdGhlICdteU1ldHJpYycgYWdncmVnYXRvciwgc3BlY2lmeTogYGBgIHlhbWwgcHJvbWV0aGV1c1JXOiAgIGZpbHRlcjogdGhpcy5pbnB1dE5hbWUgPT0gXCJteU1ldHJpY1wiIGBgYCAgVG8gbGVhcm4gbW9yZSBzZWUgW2lucHV0TmFtZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhCYXNlT2JqZWN0K2lucHV0TmFtZSkiCiAgICAgICAgICB9LAogICAgICAgICAgIm1heENhcmRpbmFsaXR5IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4aW11bSBudW1iZXIgb2YgdW5pcXVlIG1ldHJpYyBjb21iaW5hdGlvbnMgYWxsb3dlZFxuXG5TZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiB1bmlxdWUgbWV0cmljIGNvbWJpbmF0aW9ucyAoY2FyZGluYWxpdHkpIGFsbG93ZWQgZm9yIHRoaXMgb3V0cHV0LiBXaGVuIGV4Y2VlZGVkLCBtZXRyaWNzIHdpbGwgYmUgZHJvcHBlZCB0byBwcmV2ZW50IGV4Y2Vzc2l2ZSBjYXJkaW5hbGl0eS4gKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogNTAwKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IDUwMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmVkIiA6IFsKICAgICAgICAgICJob3N0IgogICAgICAgIF0KICAgICAgfQogICAgfQogIH0sCiAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IHRydWUKfQ==</template>

        ```yaml
        # 🔟❎ 'run' Prometheus remote write metric output configuration
        
        # Configure Prometheus remote write metric counter outputs.
        # To learn more see https://doc.log10x.com/run/output/metric/prometheus/remote-write/
        # For Prometheus RW, see https://prometheus.io/docs/concepts/remote_write_spec/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Dependencies ================================
        
        include: run/modules/output/metric/prometheus/remote-write
        
        # ========================== Prometheus RW Options ============================
        
        # Define multiple Prometheus RW metric outputs below
        prometheusRW:
        
            # --------------------------- Connection Options --------------------------
        
            # 'host' sets the Prometheus remote write endpoint
            #  'PROMETHEUS_REMOTE_WRITE_URL' works for any remote-write-compatible backend
            #  (Grafana Cloud, Mimir, Thanos, VictoriaMetrics, Cortex).
          - host: $=TenXEnv.get("PROMETHEUS_REMOTE_WRITE_URL", "http://localhost:9090/api/v1/write")
        
            # 'user' for authentication
            user: $=TenXEnv.get("PROMETHEUS_REMOTE_WRITE_USERNAME") # (❗ EnvVar REQUIRED)
        
            # 'password' for authentication
            password: $=TenXEnv.get("PROMETHEUS_REMOTE_WRITE_PASSWORD") # (❗ EnvVar REQUIRED)
        
            # ---------------------------- Counter Options ----------------------------
        
            # 'nameField' sets the TenXSummary field whose value identifies the micrometer counter to increment. 
            #  The 'inputName' field returns the name of the aggregator that produced the target TenXSummary instance.
            #  To learn more see https://doc.log10x.com/run/aggregate
            nameField: inputName
        
            # 'counterFields' specifies the TenXSummary fields whose values are used to increment the counter.
            #  To learn more see https://doc.log10x.com/run/aggregate/#summary-fields
            counterFields:
              - summaryVolume
              - summaryBytes
              - summaryTotals
        
            # 'tagFields' sets the TenXSummary fields used as the counter tag dimension values.
            #  Defaults to https://doc.log10x.com/run/initialize/#enrichmentFields
            tagFields:
              - $=yield TenXEnv.get("enrichmentFields")
        
            # 'tagFieldNames' allows setting custom names to aggregated fields for metrics reporting.
            #  Defaults to https://doc.log10x.com/run/initialize/#metricFieldNames
            tagFieldNames:
              - $=yield TenXEnv.get("metricFieldNames")
        
            # 'filter' sets a JavaScript expression that TenXSummaries must evaluate as truthy to write to the output.
            #  To learn more see https://doc.log10x.com/run/output/receive/#filter-expressions
            filter: isSummary
        
            # ---------------------------- Publish Options ----------------------------
        
            # 'step' sets the interval to send metrics to Prometheus RW (e.g. '1m').
            #  To learn more see https://micrometer.io/docs/concepts#rate-aggregation
            step: 5s
        ```

    === ":simple-datadog: Datadog"

  
        #### datadog {.hidden-heading}
        Configure [Datadog metrics outputs](/run/output/metric/datadog "Publish TenXSummary metrics to Datadog") to publish TenXSummary metrics to Datadog.  
  
        Below is the default configuration from: [datadog/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/output/metric/datadog/config.yaml "datadog/config.yaml"){target="\_blank"} (<span class="tenx-tooltip" data-tooltip="The config file below contains required fields to activate this module, marked with &#10071;">** Required Fields*</span>).  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/output/metric/datadog/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml14-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml14-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml14-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Datadog metrics output Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml14-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/output/metric/datadog/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/output/metric/datadog/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/output/metric/datadog/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/output/metric/datadog/config.yaml">$TENX_CONFIG/run/output/metric/datadog/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/output/metric/datadog/config.yaml">./pipelines/run/output/metric/datadog/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgImRhdGFkb2ciIDogewogICAgICAidHlwZSIgOiAiYXJyYXkiLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgICAiZW5hYmxlZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJFbmFibGUgdGhpcyBvdXRwdXRcblxuRW5hYmxlIG9yIGRpc2FibGUgdGhpcyBvdXRwdXQuIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiB0cnVlKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICAibmFtZUZpZWxkIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiB0aGUgVGVuWFN1bW1hcnkgZmllbGQgaWRlbnRpZnlpbmcgdGhlIG1ldHJpY1xuXG5EZWZpbmVzIHRoZSBuYW1lIG9mIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCB3aG9zZSB2YWx1ZSBpZGVudGlmaWVzIGEgbWV0cmljIGNvdW50ZXIuIERlZmF1bHRzIHRvIHRoZSBbc3VtbWFyeVZhbHVlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhTdW1tYXJ5K3N1bW1hcnlWYWx1ZXMpIGZpZWxkIHdoaWNoIGhvbGRzIHRoZSB2YWx1ZShzKSBieSB3aGljaCBUZW5YT2JqZWN0cyBhcmUgZ3JvdXBlZCBpbnRvIHRoZSBjdXJyZW50IFRlblhTdW1tYXJ5IGluc3RhbmNlLiBUbyBsZWFybiBtb3JlIHNlZSBbbWljcm9tZXRlciBjb3VudGVyc10oaHR0cHM6Ly93d3cuYmFlbGR1bmcuY29tL21pY3JvbWV0ZXIjMi1jb3VudGVyKSAoRGVmYXVsdDogW3N1bW1hcnlWYWx1ZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YU3VtbWFyeStzdW1tYXJ5VmFsdWVzKSkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAiW3N1bW1hcnlWYWx1ZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YU3VtbWFyeStzdW1tYXJ5VmFsdWVzKSIKICAgICAgICAgIH0sCiAgICAgICAgICAiY291bnRlckZpZWxkcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZXMgb2YgdGhlIFRlblhTdW1tYXJ5IGZpZWxkcyB1c2VkIHRvIGluY3JlbWVudCB0aGUgbWV0cmljIGNvdW50ZXIgdmFsdWVcblxuRGVmaW5lcyB0aGUgbmFtZSBvZiB0aGUgVGVuWFN1bW1hcnkgZmllbGQgYnkgd2hvc2UgdmFsdWUgdG8gaW5jcmVtZW50IHRoZSBjb3VudGVyLiIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJ0YWdGaWVsZHMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2YgVGVuWFN1bW1hcnkgZmllbGRzIHRvIHVzZSBhcyBtZXRyaWMgdGFnIHZhbHVlc1xuXG5EZWZpbmVzIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCBuYW1lcyB0byB1c2UgYXMgYHRhZ2AgdmFsdWVzLiBUYWdzIGFyZSBkaW1lbnNpb25zIHRoYXQgZW5hYmxlIHNsaWNpbmcgYSBwYXJ0aWN1bGFyIG5hbWVkIG1ldHJpYyB0byBkcmlsbCBkb3duIHRvIHJlYXNvbiBhYm91dCBpdHMgdmFsdWUuIFRvIGxlYXJuIG1vcmUgc2VlIFttaWNyb21ldGVyIHRhZ3NdKGh0dHBzOi8vd3d3LmJhZWxkdW5nLmNvbS9taWNyb21ldGVyIzEtdGFncykiLAogICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAidGFnRmllbGROYW1lcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBvZiBjdXN0b20gbmFtZXMgdG8gdXNlIGZvciBUZW5YU3VtbWFyeSBmaWVsZHMuXG5cbkRlZmluZXMgdGhlIGEgbGlzdCBvZiBjdXN0b20gbmFtZXMgdG8gZ2l2ZSBmaWVsZHMgd2hlbiByZXBvcnRpbmcgdGhlbS4gRm9ybWF0IGFzIGEgbGlzdCBvZiBuYW1lMSwgY3VzdG9tMSwgbmFtZTIsIGN1c3RvbTIuICBGb3IgZXhhbXBsZSwgdG8gc2V0IGEgY3VzdG9tIG5hbWUgb2YgJ015LUN1c3RvbS1GaWVsZCcgdG8gYW4gZXhpc3RpbmcgJ2ludHJpbnNpYy1maWVsZCc6IGBgYCB5YW1sIGRhdGFkb2c6ICAgdGFnRmllbGROYW1lczogICAgIC0gaW50cmluc2ljLWZpZWxkICAgICAtIE15LUN1c3RvbS1GaWVsZCIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJmaWx0ZXIiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBIEphdmFTY3JpcHQgZXhwcmVzc2lvbiBhbiBUZW5YU3VtbWFyeSBtdXN0IGV2YWx1YXRlIGFzICd0cnV0aHknIGFnYWluc3QgdG8gYmUgd3JpdHRlbiB0byB0aGlzIG91dHB1dFxuXG5TcGVjaWZpZXMgYSBKYXZhU2NyaXB0IGV4cHJlc3Npb24gdGhhdCBhbiBUZW5YU3VtbWFyeSBtdXN0IGV2YWx1YXRlIGFzIHRydXRoeSB0byB3cml0ZSBpdHMgaW5zdGFuY2UvdGVtcGxhdGUgZmllbGQgdmFsdWVzIHRvIHRoZSB0YXJnZXQgY291bnRlci4gIEZvciBleGFtcGxlLCB0byBvbmx5IGVtaXQgVGVuWFN1bW1hcmllcyBwcm9kdWNlZCBieSB0aGUgJ215TWV0cmljJyBhZ2dyZWdhdG9yLCBzcGVjaWZ5OiBgYGAgeWFtbCBkYXRhZG9nOiAgIGZpbHRlcjogdGhpcy5pbnB1dE5hbWUgPT0gXCJteU1ldHJpY1wiIGBgYCAgVG8gbGVhcm4gbW9yZSBzZWUgW2lucHV0TmFtZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhCYXNlT2JqZWN0K2lucHV0TmFtZSkiCiAgICAgICAgICB9LAogICAgICAgICAgIm1heENhcmRpbmFsaXR5IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4aW11bSBudW1iZXIgb2YgdW5pcXVlIG1ldHJpYyBjb21iaW5hdGlvbnMgYWxsb3dlZFxuXG5TZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiB1bmlxdWUgbWV0cmljIGNvbWJpbmF0aW9ucyAoY2FyZGluYWxpdHkpIGFsbG93ZWQgZm9yIHRoaXMgb3V0cHV0LiBXaGVuIGV4Y2VlZGVkLCBtZXRyaWNzIHdpbGwgYmUgZHJvcHBlZCB0byBwcmV2ZW50IGV4Y2Vzc2l2ZSBjYXJkaW5hbGl0eS4gKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogNTAwKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IDUwMAogICAgICAgICAgfSwKICAgICAgICAgICJkZXNjcmlwdGlvbnMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImJvb2xlYW4iLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiU2V0cyB3aGV0aGVyIHRvIHNlbmQgbWV0ZXIgZGVzY3JpcHRpb25zIHRvIERhdGFkb2cgc2NyYXBlXG5cblNldHMgd2hldGhlciB0byBzZW5kIG1ldGVyIGRlc2NyaXB0aW9ucyB0byBEYXRhZG9nIFR1cm4gdGhpcyBvZmYgdG8gbWluaW1pemUgdGhlIGFtb3VudCBvZiBkYXRhIHNlbnQgb24gZWFjaCB3cml0ZSAoQWNjZXB0cyBib29sZWFuIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSIKICAgICAgICAgIH0sCiAgICAgICAgICAic3RlcCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlRoZSBpbnRlcnZhbCBhdCB3aGljaCB0byBwdWJsaXNoIG1ldHJpY3MgdG8gb3V0cHV0XG5cblNldHMgdGhlIGludGVydmFsIGF0IHdoaWNoIHRvIHB1Ymxpc2ggbWV0cmljcyB0byB0aGUgdGltZS1zZXJpZXMgZGVzdGluYXRpb24gKGUuZy4sICcxbScpLiBUbyBsZWFybiBtb3JlIHNlZSBbcmF0ZS1hZ2dyZWdhdGlvbl0oaHR0cHM6Ly9taWNyb21ldGVyLmlvL2RvY3MvY29uY2VwdHMjcmF0ZS1hZ2dyZWdhdGlvbikgKERlZmF1bHQ6IDEgbWludXRlLikiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAiMSBtaW51dGUuIgogICAgICAgICAgfSwKICAgICAgICAgICJhcGlLZXkiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJEYXRhZG9nIGFwaUtleVxuXG5TZXRzIHRoZSBEYXRhZG9nIFthcGkga2V5XShodHRwczovL2RvY3MuZGF0YWRvZ2hxLmNvbS9hY2NvdW50X21hbmFnZW1lbnQvYXBpLWFwcC1rZXlzLykiCiAgICAgICAgICB9LAogICAgICAgICAgImFwcGxpY2F0aW9uS2V5IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRGF0YWRvZyBhcHBsaWNhdGlvbiBLZXkuXG5cblNldHMgdGhlIERhdGFkb2cgW2FwcCBLZXldKGh0dHBzOi8vZG9jcy5kYXRhZG9naHEuY29tL2FjY291bnRfbWFuYWdlbWVudC9hcGktYXBwLWtleXMvKSIKICAgICAgICAgIH0sCiAgICAgICAgICAiaG9zdFRhZyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlZhbHVlIHRvIG1hcCB0byBcImhvc3RcIiB3aGVuIHNoaXBwaW5nIG1ldHJpY3MgdG8gRGF0YWRvZ1xuXG5WYWx1ZSB0byBtYXAgdG8gXCJob3N0XCIgd2hlbiBzaGlwcGluZyBtZXRyaWNzIHRvIERhdGFkb2ciCiAgICAgICAgICB9LAogICAgICAgICAgInVyaSIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlRoZSBVUkkgb2YgYW4gaW50ZXJuYWwgcHJveHkgZW4gcm91dGUgdG8gRGF0YWRvZy5cblxuU2V0cyB0aGUgRGF0YWRvZyBzaXRlIGFkZHJlc3MgdG8gY29ubmVjdCB0byAoZS5nLiAndXM1LmRhdGFkb2docS5jb20nKS4gVG8gbGVhcm4gbW9yZSBzZWUgW0RhdGFkb2cgc2l0ZXNdKGh0dHBzOi8vZG9jcy5kYXRhZG9naHEuY29tL2dldHRpbmdfc3RhcnRlZC9zaXRlLykgKERlZmF1bHQ6IGh0dHBzOi8vYXBpLmRhdGFkb2docS5jb20pIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogImh0dHBzOi8vYXBpLmRhdGFkb2docS5jb20iCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogdHJ1ZQp9</template>

        ```yaml
        # 🔟❎ 'run' Datadog metric output configuration
        
        # Configure Datadog metric counter outputs.
        # To learn more see https://doc.log10x.com/run/output/metric/datadog/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Dependencies ================================
        
        include: run/modules/output/metric/datadog
        
        # ============================== Datadog Options ==============================
        
        # Define multiple Datadog metric outputs below
        datadog:
          
            # --------------------------- Connection Options --------------------------
        
            # 'apiKey' and 'applicationKey' set the Datadog API and app keys (required).
            #  To learn more see: https://docs.datadoghq.com/account_management/api-app-keys/
          - apiKey: $=TenXEnv.get("DD_API_KEY")         # (❗ EnvVar REQUIRED)
        
            applicationKey: $=TenXEnv.get("DD_APP_KEY") # (❗ EnvVar REQUIRED)
        
            # 'uri' sets the Datadog site address to which to connect.
            #  'DD_SITE' is the bare site domain (e.g. 'us5.datadoghq.com', 'datadoghq.eu'),
            #  matches the Datadog Agent convention so existing cluster secrets work as-is.
            #  To learn more see: https://docs.datadoghq.com/getting_started/site/
            uri: $="https://" + TenXEnv.get("DD_SITE", "us5.datadoghq.com")
        
            # ---------------------------- Publish Options ----------------------------
        
            # 'descriptions' sets whether to send meter descriptions to Datadog
            #  Turn this off to minimize the amount of data sent on each write
            descriptions: false
        
            # 'step' sets the interval to send metrics to CloudWatch (e.g., '1m').
            #  To learn more see: https://micrometer.io/docs/concepts#rate-aggregation
            step: 5s
        
            # ---------------------------- Counter Options ----------------------------
        
            # 'nameField' sets the TenXSummary field whose value identifies the micrometer counter to increment. 
            #  The 'inputName' field returns the name of the aggregator that produced the target TenXSummary instance.
            #  To learn more see https://doc.log10x.com/run/aggregate
            nameField: inputName
        
            # 'counterFields' specifies the TenXSummary fields whose values are used to increment the counter.
            #  To learn more see https://doc.log10x.com/run/aggregate/#summary-fields
            counterFields:
              - summaryVolume
              - summaryBytes
              - summaryTotals
        
            # 'tagFields' sets the TenXSummary fields used as the counter tag dimension values.
            #  Defaults to https://doc.log10x.com/run/initialize/#enrichmentFields
            tagFields:
              - $=yield TenXEnv.get("enrichmentFields")
        
            # 'tagFieldNames' allows setting custom names to aggregated fields for metrics reporting.
            #  Defaults to https://doc.log10x.com/run/initialize/#metricFieldNames
            tagFieldNames:
              - $=yield TenXEnv.get("metricFieldNames")
        
            # 'filter' sets a JavaScript expression that TenXSummaries must evaluate as truthy to write to the output.
            #  To learn more see https://doc.log10x.com/run/output/receive/#filter-expressions
            filter: isSummary
        ```

    === ":fontawesome-brands-aws: Cloudwatch"

  
        #### cloudwatch {.hidden-heading}
        Configure [AWS CloudWatch metrics outputs](/run/output/metric/cloudwatch "Publish TenXSummary metrics to AWS CloudWatch metrics") to publish TenXSummary metrics to AWS CloudWatch metrics.  
  
        Below is the default configuration from: [cloudwatch/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/output/metric/cloudwatch/config.yaml "cloudwatch/config.yaml"){target="\_blank"} (<span class="tenx-tooltip" data-tooltip="The config file below contains required fields to activate this module, marked with &#10071;">** Required Fields*</span>).  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/output/metric/cloudwatch/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml15-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml15-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml15-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit AWS CloudWatch metrics output Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml15-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/output/metric/cloudwatch/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/output/metric/cloudwatch/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/output/metric/cloudwatch/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/output/metric/cloudwatch/config.yaml">$TENX_CONFIG/run/output/metric/cloudwatch/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/output/metric/cloudwatch/config.yaml">./pipelines/run/output/metric/cloudwatch/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgImNsb3Vkd2F0Y2giIDogewogICAgICAidHlwZSIgOiAiYXJyYXkiLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgICAiZW5hYmxlZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJFbmFibGUgdGhpcyBvdXRwdXRcblxuRW5hYmxlIG9yIGRpc2FibGUgdGhpcyBvdXRwdXQuIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiB0cnVlKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICAibmFtZUZpZWxkIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiB0aGUgVGVuWFN1bW1hcnkgZmllbGQgaWRlbnRpZnlpbmcgdGhlIG1ldHJpY1xuXG5EZWZpbmVzIHRoZSBuYW1lIG9mIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCB3aG9zZSB2YWx1ZSBpZGVudGlmaWVzIGEgbWV0cmljIGNvdW50ZXIuIERlZmF1bHRzIHRvIHRoZSBbc3VtbWFyeVZhbHVlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhTdW1tYXJ5K3N1bW1hcnlWYWx1ZXMpIGZpZWxkIHdoaWNoIGhvbGRzIHRoZSB2YWx1ZShzKSBieSB3aGljaCBUZW5YT2JqZWN0cyBhcmUgZ3JvdXBlZCBpbnRvIHRoZSBjdXJyZW50IFRlblhTdW1tYXJ5IGluc3RhbmNlLiBUbyBsZWFybiBtb3JlIHNlZSBbbWljcm9tZXRlciBjb3VudGVyc10oaHR0cHM6Ly93d3cuYmFlbGR1bmcuY29tL21pY3JvbWV0ZXIjMi1jb3VudGVyKSAoRGVmYXVsdDogW3N1bW1hcnlWYWx1ZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YU3VtbWFyeStzdW1tYXJ5VmFsdWVzKSkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAiW3N1bW1hcnlWYWx1ZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YU3VtbWFyeStzdW1tYXJ5VmFsdWVzKSIKICAgICAgICAgIH0sCiAgICAgICAgICAiY291bnRlckZpZWxkcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZXMgb2YgdGhlIFRlblhTdW1tYXJ5IGZpZWxkcyB1c2VkIHRvIGluY3JlbWVudCB0aGUgbWV0cmljIGNvdW50ZXIgdmFsdWVcblxuRGVmaW5lcyB0aGUgbmFtZSBvZiB0aGUgVGVuWFN1bW1hcnkgZmllbGQgYnkgd2hvc2UgdmFsdWUgdG8gaW5jcmVtZW50IHRoZSBjb3VudGVyLiIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJ0YWdGaWVsZHMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2YgVGVuWFN1bW1hcnkgZmllbGRzIHRvIHVzZSBhcyBtZXRyaWMgdGFnIHZhbHVlc1xuXG5EZWZpbmVzIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCBuYW1lcyB0byB1c2UgYXMgYHRhZ2AgdmFsdWVzLiBUYWdzIGFyZSBkaW1lbnNpb25zIHRoYXQgZW5hYmxlIHNsaWNpbmcgYSBwYXJ0aWN1bGFyIG5hbWVkIG1ldHJpYyB0byBkcmlsbCBkb3duIHRvIHJlYXNvbiBhYm91dCBpdHMgdmFsdWUuIFRvIGxlYXJuIG1vcmUgc2VlIFttaWNyb21ldGVyIHRhZ3NdKGh0dHBzOi8vd3d3LmJhZWxkdW5nLmNvbS9taWNyb21ldGVyIzEtdGFncykiLAogICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAidGFnRmllbGROYW1lcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBvZiBjdXN0b20gbmFtZXMgdG8gdXNlIGZvciBUZW5YU3VtbWFyeSBmaWVsZHMuXG5cbkRlZmluZXMgdGhlIGEgbGlzdCBvZiBjdXN0b20gbmFtZXMgdG8gZ2l2ZSBmaWVsZHMgd2hlbiByZXBvcnRpbmcgdGhlbS4gRm9ybWF0IGFzIGEgbGlzdCBvZiBuYW1lMSwgY3VzdG9tMSwgbmFtZTIsIGN1c3RvbTIuICBGb3IgZXhhbXBsZSwgdG8gc2V0IGEgY3VzdG9tIG5hbWUgb2YgJ015LUN1c3RvbS1GaWVsZCcgdG8gYW4gZXhpc3RpbmcgJ2ludHJpbnNpYy1maWVsZCc6IGBgYCB5YW1sIGNsb3Vkd2F0Y2g6ICAgdGFnRmllbGROYW1lczogICAgIC0gaW50cmluc2ljLWZpZWxkICAgICAtIE15LUN1c3RvbS1GaWVsZCIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJmaWx0ZXIiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBIEphdmFTY3JpcHQgZXhwcmVzc2lvbiBhbiBUZW5YU3VtbWFyeSBtdXN0IGV2YWx1YXRlIGFzICd0cnV0aHknIGFnYWluc3QgdG8gd3JpdGUgdG8gdGhpcyBvdXRwdXRcblxuU3BlY2lmaWVzIGEgSmF2YVNjcmlwdCBleHByZXNzaW9uIHRoYXQgYW4gVGVuWFN1bW1hcnkgbXVzdCBldmFsdWF0ZSBhcyB0cnV0aHkgdG8gd3JpdGUgaXRzIGluc3RhbmNlL3RlbXBsYXRlIGZpZWxkIHZhbHVlcyB0byB0aGUgdGFyZ2V0IGNvdW50ZXIuICBGb3IgZXhhbXBsZSwgdG8gb25seSBlbWl0IFRlblhTdW1tYXJpZXMgcHJvZHVjZWQgYnkgdGhlIGBteU1ldHJpY2AgYWdncmVnYXRvciwgc3BlY2lmeTogYGBgIHlhbWwgY2xvdWR3YXRjaDogICBmaWx0ZXI6IHRoaXMuaW5wdXROYW1lID09IFwibXlNZXRyaWNcIiBgYGAgIFRvIGxlYXJuIG1vcmUgc2VlIFtpbnB1dE5hbWVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YQmFzZU9iamVjdCtpbnB1dE5hbWUpIgogICAgICAgICAgfSwKICAgICAgICAgICJtYXhDYXJkaW5hbGl0eSIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk1heGltdW0gbnVtYmVyIG9mIHVuaXF1ZSBtZXRyaWMgY29tYmluYXRpb25zIGFsbG93ZWRcblxuU2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgdW5pcXVlIG1ldHJpYyBjb21iaW5hdGlvbnMgKGNhcmRpbmFsaXR5KSBhbGxvd2VkIGZvciB0aGlzIG91dHB1dC4gV2hlbiBleGNlZWRlZCwgbWV0cmljcyB3aWxsIGJlIGRyb3BwZWQgdG8gcHJldmVudCBleGNlc3NpdmUgY2FyZGluYWxpdHkuIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDUwMCkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiA1MDAKICAgICAgICAgIH0sCiAgICAgICAgICAic3RlcCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlB1Ymxpc2ggbWV0cmljcyBpbnRlcnZhbFxuXG5TZXRzIHRoZSBpbnRlcnZhbCB0byBwdWJsaXNoIG1ldHJpY3MgdG8gdGhlIHRpbWUtc2VyaWVzIGRlc3RpbmF0aW9uIChlLmcuLCAnMW0nKS4gVG8gbGVhcm4gbW9yZSBzZWUgW3JhdGUtYWdncmVnYXRpb25daHR0cHM6Ly9kb2NzLm1pY3JvbWV0ZXIuaW8vbWljcm9tZXRlci9yZWZlcmVuY2UvY29uY2VwdHMvcmF0ZS1hZ2dyZWdhdGlvbi5odG1sKSAoRGVmYXVsdDogMSBtaW4pIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogIjEgbWluIgogICAgICAgICAgfSwKICAgICAgICAgICJhd3NBY2Nlc3NLZXlJZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkFXUyBhY2Nlc3Mga2V5XG5cbkRlZmluZXMgdGhlIEFXUyBhY2Nlc3Mga2V5IHVzZWQgdG8gYXV0aGVudGljYXRlLiBUbyBsZWFybiBtb3JlIHNlZSBbQVdTIGNyZWRlbnRpYWxzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2VuZXJhbC9sYXRlc3QvZ3IvYXdzLXNlYy1jcmVkLXR5cGVzLmh0bWwpIgogICAgICAgICAgfSwKICAgICAgICAgICJhd3NTZWNyZXRLZXkiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBV1Mgc2VjcmV0IGtleVxuXG5EZWZpbmVzIHRoZSB0YXJnZXQgQVdTIHNlY3JldCBrZXkgVG8gbGVhcm4gbW9yZSBzZWUgW0FXUyBjcmVkZW50aWFsc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dlbmVyYWwvbGF0ZXN0L2dyL2F3cy1zZWMtY3JlZC10eXBlcy5odG1sKSIKICAgICAgICAgIH0sCiAgICAgICAgICAibmFtZXNwYWNlIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiQVdTIENsb3VkV2F0Y2ggbmFtZXNwYWNlXG5cbkRlZmluZXMgdGhlIHRhcmdldCBBV1MgQ2xvdWRXYXRjaCBuYW1lc3BhY2UuIFRvIGxlYXJuIG1vcmUgc2VlIFtDbG91ZFdhdGNoIG5hbWVzcGFjZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25DbG91ZFdhdGNoL2xhdGVzdC9tb25pdG9yaW5nL2Nsb3Vkd2F0Y2hfY29uY2VwdHMuaHRtbCNOYW1lc3BhY2UpIgogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQogIH0sCiAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IHRydWUKfQ==</template>

        ```yaml
        # 🔟❎ 'run' AWS CloudWatch metric output configuration
        
        # Configure AWS CloudWatch metric counter outputs.
        # To learn more see https://doc.log10x.com/run/output/metric/cloudwatch/
        
        # ============================== Dependencies =================================
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Dependencies ================================
        
        include: run/modules/output/metric/cloudwatch
        
        # ============================ AWS CloudWatch Options =========================
        
        # Define multiple AWS CloudWatch metric outputs below
        
        cloudwatch:
        
            # -------------------------- Connection Options ---------------------------
        
            # 'awsAccessKeyId' defines the AWS access key (required)
            #  To learn more see https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html
          - awsAccessKeyId: $=TenXEnv.get("AWS_ACCESS_KEY_ID") # (❗ EnvVar REQUIRED)
        
            # 'awsSecretKey' defines the target AWS secret key (required)
            #  To learn more see https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html
            awsSecretKey: $=TenXEnv.get("AWS_SECRET_ACCESS_KEY") # (❗ EnvVar REQUIRED)
        
            # 'namespace' defines the target AWS CloudWatch namespace (required)
            #  To learn more see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Namespace
            namespace: $=TenXEnv.get("CW_NAMESPACE") # (❗ EnvVar REQUIRED)
        
            # ---------------------------- Counter Options ----------------------------
        
            # 'nameField' sets the TenXSummary field whose value identifies the micrometer counter to increment. 
            #  The 'inputName' field returns the name of the aggregator that produced the target TenXSummary instance.
            #  To learn more see https://doc.log10x.com/run/aggregate
            nameField: inputName
        
            # 'counterFields' specifies the TenXSummary fields whose values are used to increment the counter.
            #  To learn more see https://doc.log10x.com/run/aggregate/#summary-fields
            counterFields:
              - summaryVolume
              - summaryBytes
              - summaryTotals
        
            # 'tagFields' sets the TenXSummary fields used as the counter tag dimension values.
            #  Defaults to https://doc.log10x.com/run/initialize/#enrichmentFields
            tagFields:
              - $=yield TenXEnv.get("enrichmentFields")
        
            # 'tagFieldNames' allows setting custom names to aggregated fields for metrics reporting.
            #  Defaults to https://doc.log10x.com/run/initialize/#metricFieldNames
            tagFieldNames:
              - $=yield TenXEnv.get("metricFieldNames")
        
            # 'filter' sets a JavaScript expression that TenXSummaries must evaluate as truthy to write to the output.
            #  To learn more see https://doc.log10x.com/run/output/receive/#filter-expressions
            filter: isSummary
        
            # 'step' sets the interval to send metrics to CloudWatch (e.g., '1m').
            #  To learn more see https://micrometer.io/docs/concepts#rate-aggregation
            step: 5s
        ```

    === ":simple-elastic: Elastic"

  
        #### elastic {.hidden-heading}
        Configure [ElasticSearch metrics outputs](/run/output/metric/elastic "Publish TenXSummary metrics to ElasticSearch") to publish TenXSummary metrics to ElasticSearch.  
  
        Below is the default configuration from: [elastic/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/output/metric/elastic/config.yaml "elastic/config.yaml"){target="\_blank"} (<span class="tenx-tooltip" data-tooltip="The config file below contains required fields to activate this module, marked with &#10071;">** Required Fields*</span>).  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/output/metric/elastic/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml16-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml16-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml16-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit ElasticSearch metrics output Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml16-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/output/metric/elastic/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/output/metric/elastic/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/output/metric/elastic/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/output/metric/elastic/config.yaml">$TENX_CONFIG/run/output/metric/elastic/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/output/metric/elastic/config.yaml">./pipelines/run/output/metric/elastic/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgImVsYXN0aWMiIDogewogICAgICAidHlwZSIgOiAiYXJyYXkiLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgICAiZW5hYmxlZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJFbmFibGUgdGhpcyBvdXRwdXRcblxuRW5hYmxlIG9yIGRpc2FibGUgdGhpcyBvdXRwdXQuIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiB0cnVlKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICAibmFtZUZpZWxkIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiB0aGUgVGVuWFN1bW1hcnkgZmllbGQgaWRlbnRpZnlpbmcgdGhlIG1ldHJpY1xuXG5EZWZpbmVzIHRoZSBuYW1lIG9mIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCB3aG9zZSB2YWx1ZSBpZGVudGlmaWVzIGEgbWV0cmljIGNvdW50ZXIuIERlZmF1bHRzIHRvIHRoZSBbc3VtbWFyeVZhbHVlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhTdW1tYXJ5K3N1bW1hcnlWYWx1ZXMpIGZpZWxkIHdoaWNoIGhvbGRzIHRoZSB2YWx1ZShzKSBieSB3aGljaCBUZW5YT2JqZWN0cyBhcmUgZ3JvdXBlZCBpbnRvIHRoZSBjdXJyZW50IFRlblhTdW1tYXJ5IGluc3RhbmNlLiBUbyBsZWFybiBtb3JlIHNlZSBbbWljcm9tZXRlciBjb3VudGVyc10oaHR0cHM6Ly93d3cuYmFlbGR1bmcuY29tL21pY3JvbWV0ZXIjMi1jb3VudGVyKSAoRGVmYXVsdDogW3N1bW1hcnlWYWx1ZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YU3VtbWFyeStzdW1tYXJ5VmFsdWVzKSkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAiW3N1bW1hcnlWYWx1ZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YU3VtbWFyeStzdW1tYXJ5VmFsdWVzKSIKICAgICAgICAgIH0sCiAgICAgICAgICAiY291bnRlckZpZWxkcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZXMgb2YgdGhlIFRlblhTdW1tYXJ5IGZpZWxkcyB1c2VkIHRvIGluY3JlbWVudCB0aGUgbWV0cmljIGNvdW50ZXIgdmFsdWVcblxuRGVmaW5lcyB0aGUgbmFtZSBvZiB0aGUgVGVuWFN1bW1hcnkgZmllbGQgYnkgd2hvc2UgdmFsdWUgdG8gaW5jcmVtZW50IHRoZSBjb3VudGVyLiIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJ0YWdGaWVsZHMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2YgVGVuWFN1bW1hcnkgZmllbGRzIHRvIHVzZSBhcyBtZXRyaWMgdGFnIHZhbHVlc1xuXG5EZWZpbmVzIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCBuYW1lcyB0byB1c2UgYXMgYHRhZ2AgdmFsdWVzLiBUYWdzIGFyZSBkaW1lbnNpb25zIHRoYXQgZW5hYmxlIHNsaWNpbmcgYSBwYXJ0aWN1bGFyIG5hbWVkIG1ldHJpYyB0byBkcmlsbCBkb3duIHRvIHJlYXNvbiBhYm91dCBpdHMgdmFsdWUuIFRvIGxlYXJuIG1vcmUgc2VlIFttaWNyb21ldGVyIHRhZ3NdKGh0dHBzOi8vd3d3LmJhZWxkdW5nLmNvbS9taWNyb21ldGVyIzEtdGFncykiLAogICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAidGFnRmllbGROYW1lcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBvZiBjdXN0b20gbmFtZXMgdG8gdXNlIGZvciBUZW5YU3VtbWFyeSBmaWVsZHMuXG5cbkRlZmluZXMgdGhlIGEgbGlzdCBvZiBjdXN0b20gbmFtZXMgdG8gZ2l2ZSBmaWVsZHMgd2hlbiByZXBvcnRpbmcgdGhlbS4gRm9ybWF0IGFzIGEgbGlzdCBvZiBuYW1lMSwgY3VzdG9tMSwgbmFtZTIsIGN1c3RvbTIuICBGb3IgZXhhbXBsZSwgdG8gc2V0IGEgY3VzdG9tIG5hbWUgb2YgJ015LUN1c3RvbS1GaWVsZCcgdG8gYW4gZXhpc3RpbmcgJ2ludHJpbnNpYy1maWVsZCc6IGBgYCB5YW1sIGVsYXN0aWM6ICAgdGFnRmllbGROYW1lczogICAgIC0gaW50cmluc2ljLWZpZWxkICAgICAtIE15LUN1c3RvbS1GaWVsZCIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJmaWx0ZXIiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBIEphdmFTY3JpcHQgZXhwcmVzc2lvbiBhbiBUZW5YU3VtbWFyeSBtdXN0IGV2YWx1YXRlIGFzICd0cnV0aHknIGFnYWluc3QgdG8gYmUgd3JpdHRlbiB0byB0aGlzIG91dHB1dFxuXG5TcGVjaWZpZXMgYSBKYXZhU2NyaXB0IGV4cHJlc3Npb24gdGhhdCBhbiBUZW5YU3VtbWFyeSBtdXN0IGV2YWx1YXRlIGFzIHRydXRoeSB0byB3cml0ZSBpdHMgaW5zdGFuY2UvdGVtcGxhdGUgZmllbGQgdmFsdWVzIHRvIHRoZSB0YXJnZXQgY291bnRlci4gIEZvciBleGFtcGxlLCB0byBvbmx5IGVtaXQgVGVuWFN1bW1hcmllcyBwcm9kdWNlZCBieSB0aGUgJ215TWV0cmljJyBhZ2dyZWdhdG9yLCBzcGVjaWZ5OiBgYGAgeWFtbCBlbGFzdGljOiAgIGZpbHRlcjogdGhpcy5pbnB1dE5hbWUgPT0gXCJteU1ldHJpY1wiIGBgYCAgVG8gbGVhcm4gbW9yZSBzZWUgW2lucHV0TmFtZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhCYXNlT2JqZWN0K2lucHV0TmFtZSkiCiAgICAgICAgICB9LAogICAgICAgICAgIm1heENhcmRpbmFsaXR5IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4aW11bSBudW1iZXIgb2YgdW5pcXVlIG1ldHJpYyBjb21iaW5hdGlvbnMgYWxsb3dlZFxuXG5TZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiB1bmlxdWUgbWV0cmljIGNvbWJpbmF0aW9ucyAoY2FyZGluYWxpdHkpIGFsbG93ZWQgZm9yIHRoaXMgb3V0cHV0LiBXaGVuIGV4Y2VlZGVkLCBtZXRyaWNzIHdpbGwgYmUgZHJvcHBlZCB0byBwcmV2ZW50IGV4Y2Vzc2l2ZSBjYXJkaW5hbGl0eS4gKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogNTAwKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IDUwMAogICAgICAgICAgfSwKICAgICAgICAgICJzdGVwIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiVGhlIGludGVydmFsIGF0IHdoaWNoIHRvIHB1Ymxpc2ggbWV0cmljcyB0byBvdXRwdXRcblxuU2V0cyB0aGUgaW50ZXJ2YWwgYXQgd2hpY2ggdG8gcHVibGlzaCBtZXRyaWNzIHRvIHRoZSB0aW1lLXNlcmllcyBkZXN0aW5hdGlvbiAoZS5nLiwgJzFtJykuIFRvIGxlYXJuIG1vcmUgc2VlIFtyYXRlLWFnZ3JlZ2F0aW9uXShodHRwczovL21pY3JvbWV0ZXIuaW8vZG9jcy9jb25jZXB0cyNyYXRlLWFnZ3JlZ2F0aW9uKSAoRGVmYXVsdDogMSBtaW51dGUuKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICIxIG1pbnV0ZS4iCiAgICAgICAgICB9LAogICAgICAgICAgImhvc3QiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJIb3N0IHRvIHNlbmQgbWV0cmljcyB0b1xuXG5TZXRzIHRoZSBob3N0IHRvIHNlbmQgbWV0cmljcyB0by4gKERlZmF1bHQ6IGh0dHA6Ly9sb2NhbGhvc3Q6OTIwMCkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAiaHR0cDovL2xvY2FsaG9zdDo5MjAwIgogICAgICAgICAgfSwKICAgICAgICAgICJhcGlLZXlDcmVkZW50aWFscyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkJhc2U2NC1lbmNvZGVkIGNyZWRlbnRpYWxzIHN0cmluZ1xuXG5TZXRzIGEgYmFzZTY0LWVuY29kZWQgY3JlZGVudGlhbHMgc3RyaW5nIFRvIGxlYXJuIG1vcmUgc2VlOiBbRWxhc3RpYyBjcmVkZW50aWFsc10oaHR0cHM6Ly93d3cuZWxhc3RpYy5jby9ndWlkZS9lbi9lbGFzdGljc2VhcmNoL3JlZmVyZW5jZS9jdXJyZW50L3NlY3VyaXR5LWFwaS1jcmVhdGUtYXBpLWtleS5odG1sKSIKICAgICAgICAgIH0sCiAgICAgICAgICAidXNlck5hbWUiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJCYXNpYyBBdXRoZW50aWNhdGlvbiB1c2VybmFtZVxuXG5TZXRzIHRoZSB0aGUgQmFzaWMgQXV0aGVudGljYXRpb24gdXNlcm5hbWUuIElmICdlbGFzdGljQXBpS2V5Q3JlZGVudGlhbHMnIG5vdCBpcyBzZXQsIGl0IHdpbGwgYmUgdXNlZCBpbnN0ZWFkIgogICAgICAgICAgfSwKICAgICAgICAgICJwYXNzd29yZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkJhc2ljIEF1dGhlbnRpY2F0aW9uIHBhc3N3b3JkXG5cblNldHMgYSBCYXNpYyBBdXRoZW50aWNhdGlvbiBwYXNzd29yZC4gSWYgJ2VsYXN0aWNBcGlLZXlDcmVkZW50aWFscycgaXMgbm90IHNldCBpdCB3aWxsIGJlIHVzZWQgaW5zdGVhZCIKICAgICAgICAgIH0sCiAgICAgICAgICAiaW5kZXgiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJUaGUgaW5kZXggbmFtZSB0byB3cml0ZSBtZXRyaWNzIHRvXG5cblNldHMgdGhlIGluZGV4IG5hbWUgdG8gd3JpdGUgbWV0cmljcyB0by4gKERlZmF1bHQ6IG1pY3JvbWV0ZXItbWV0cmljcykiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAibWljcm9tZXRlci1tZXRyaWNzIgogICAgICAgICAgfSwKICAgICAgICAgICJhdXRvQ3JlYXRlSW5kZXgiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImJvb2xlYW4iLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiV2hldGhlciB0byBjcmVhdGUgdGhlIGluZGV4IGF1dG9tYXRpY2FsbHkgaWYgaXQgZG9lc24ndCBleGlzdFxuXG5TZXRzIHdoZXRoZXIgdG8gY3JlYXRlIHRoZSBpbmRleCBhdXRvbWF0aWNhbGx5IGlmIGl0IGRvZXNuJ3QgZXhpc3QuIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiB0cnVlKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICAicGlwZWxpbmUiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJUaGUgaW5nZXN0IHBpcGVsaW5lIG5hbWVcblxuVGhlIGluZ2VzdCBwaXBlbGluZSBuYW1lIgogICAgICAgICAgfSwKICAgICAgICAgICJpbmRleERhdGVGb3JtYXQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJJbmRleCBkYXRlIGZvcm1hdCB1c2VkIGZvciByb2xsaW5nIGluZGljZXNcblxuU2V0cyB0aGUgaW5kZXggZGF0ZSBmb3JtYXQgdXNlZCBmb3Igcm9sbGluZyBpbmRpY2VzLiBUaGlzIGlzIGFwcGVuZGVkIHRvIHRoZSBpbmRleCBuYW1lLCBzZXBhcmF0ZWQgYnkgJ2VsYXN0aWNJbmRleERhdGVTZXBhcmF0b3InLiAoRGVmYXVsdDogeXl5eS1NTSkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAieXl5eS1NTSIKICAgICAgICAgIH0sCiAgICAgICAgICAidGltZXN0YW1wRmllbGROYW1lIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiB0aGUgZWxhc3RpYyB0aW1lc3RhbXAgZmllbGRcblxuU2V0cyB0aGUgbmFtZSBvZiB0aGUgZWxhc3RpYyB0aW1lc3RhbXAgZmllbGQuIChEZWZhdWx0OiBAdGltZXN0YW1wKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICJAdGltZXN0YW1wIgogICAgICAgICAgfSwKICAgICAgICAgICJpbmRleERhdGVTZXBhcmF0b3IiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJTZXBhcmF0b3IgYmV0d2VlbiB0aGUgaW5kZXggbmFtZSBhbmQgdGhlIGRhdGUgcGFydFxuXG5TZXRzIHRoZSBzZXBhcmF0b3IgYmV0d2VlbiB0aGUgaW5kZXggbmFtZSBhbmQgdGhlIGRhdGUgcGFydCAoRGVmYXVsdDogLSkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAiLSIKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB0cnVlCn0=</template>

        ```yaml
        # 🔟❎ 'run' ElasticSearch metric output configuration
        
        # Configure ElasticSearch metric counter outputs.
        # To learn more see https://doc.log10x.com/run/output/metric/elastic/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Dependencies ================================
        
        include: run/modules/output/metric/elastic
        
        # =============================== Elastic Options =============================
        
        # Define multiple Elastic metric outputs below
        
        elastic:
        
            # --------------------------- Connection Options --------------------------
        
            # 'host' sets the host to send metrics to (e.g., https://<deployment-name>.us-central1.gcp.cloud.es.io).
          - host: $=TenXEnv.get("ELASTICSEARCH_HOST") # (❗ EnvVar REQUIRED)
        
            # 'apiKeyCredentials' sets base64-encoded credentials string
            #  To learn more see: https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-create-api-key.html
            apiKeyCredentials: $=TenXEnv.get("ELASTIC_API_KEY")  # (❗ EnvVar REQUIRED)
        
            # 'userName' sets the the Basic Authentication username if 'apiKeyCredentials' is not set.
            userName: $=TenXEnv.get("ELASTIC_USERNAME")  # (❗ EnvVar REQUIRED)
        
            # 'password' sets a Basic Authentication password.
            password: $=TenXEnv.get("ELASTIC_PASSWORD")  # (❗ EnvVar REQUIRED)
        
            # ---------------------------- Counter Options ----------------------------
        
            # 'nameField' sets the TenXSummary field whose value identifies the micrometer counter to increment. 
            #  The 'inputName' field returns the name of the aggregator that produced the target TenXSummary instance.
            #  To learn more see https://doc.log10x.com/run/aggregate
            nameField: inputName
        
            # 'counterFields' specifies the TenXSummary fields whose values are used to increment the counter.
            #  To learn more see https://doc.log10x.com/run/aggregate/#summary-fields
            counterFields:
              - summaryVolume
              - summaryBytes
              - summaryTotals
        
            # 'tagFields' sets the TenXSummary fields used as the counter tag dimension values.
            #  Defaults to https://doc.log10x.com/run/initialize/#enrichmentFields
            tagFields:
              - $=yield TenXEnv.get("enrichmentFields")
        
            # 'tagFieldNames' allows setting custom names to aggregated fields for metrics reporting.
            #  Defaults to https://doc.log10x.com/run/initialize/#metricFieldNames
            tagFieldNames:
              - $=yield TenXEnv.get("metricFieldNames")
        
            # 'filter' sets a JavaScript expression that TenXSummaries must evaluate as truthy to write to the output.
            #  To learn more see https://doc.log10x.com/run/output/receive/#filter-expressions
            filter: isSummary
        
            # ---------------------------- Publish Options ----------------------------
        
            # 'step' sets the interval for sending metrics to Elastic (e.g., '1m').
            #  To learn more see: https://micrometer.io/docs/concepts#rate-aggregation
            step: 5s
        
            # ----------------------------- Index Options -----------------------------
        
            # 'elasticIndex' sets the index name to which to write metrics.
            index: tenx-metrics
        
            # 'autoCreateIndex' sets whether to create the index automatically if it doesn't exist.
            autoCreateIndex: true
        
            # 'indexDateFormat' sets the index date format used for rolling indices.
            #  This is appended to the index name, separated by 'elasticIndexDateSeparator'.
            indexDateFormat: 'yyyy-MM'
        
            # 'indexDateFormat' sets the separator between the index name and the date part
            indexDateSeparator: '-'
        
            # 'pipeline' sets the ingest pipeline name
            pipeline: null
        
            # 'timestampFieldName' sets the name of the elastic timestamp field.
            timestampFieldName: '@timestamp'
        ```

    === ":material-math-log: Log"

  
        #### log {.hidden-heading}
        Configure [Log4j2 metrics outputs](/run/output/metric/log "Publish TenXSummary metrics to a log4j2 appender in Micrometer 'simple' format") to publish TenXSummary metrics to a log4j2 appender in Micrometer 'simple' format.  
  
        Below is the default configuration from: [log/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/output/metric/log/config.yaml "log/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/output/metric/log/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml17-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml17-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml17-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Log4j2 metrics output Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml17-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/output/metric/log/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/output/metric/log/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/output/metric/log/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/output/metric/log/config.yaml">$TENX_CONFIG/run/output/metric/log/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/output/metric/log/config.yaml">./pipelines/run/output/metric/log/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgInNpbXBsZSIgOiB7CiAgICAgICJ0eXBlIiA6ICJhcnJheSIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAgICJlbmFibGVkIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJib29sZWFuIiwKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkVuYWJsZSB0aGlzIG91dHB1dFxuXG5FbmFibGUgb3IgZGlzYWJsZSB0aGlzIG91dHB1dC4gKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IHRydWUpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgICJuYW1lRmllbGQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJOYW1lIG9mIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCBpZGVudGlmeWluZyB0aGUgbWV0cmljXG5cbkRlZmluZXMgdGhlIG5hbWUgb2YgdGhlIFRlblhTdW1tYXJ5IGZpZWxkIHdob3NlIHZhbHVlIGlkZW50aWZpZXMgYSBtZXRyaWMgY291bnRlci4gRGVmYXVsdHMgdG8gdGhlIFtzdW1tYXJ5VmFsdWVzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWFN1bW1hcnkrc3VtbWFyeVZhbHVlcykgZmllbGQgd2hpY2ggaG9sZHMgdGhlIHZhbHVlKHMpIGJ5IHdoaWNoIFRlblhPYmplY3RzIGFyZSBncm91cGVkIGludG8gdGhlIGN1cnJlbnQgVGVuWFN1bW1hcnkgaW5zdGFuY2UuIFRvIGxlYXJuIG1vcmUgc2VlIFttaWNyb21ldGVyIGNvdW50ZXJzXShodHRwczovL3d3dy5iYWVsZHVuZy5jb20vbWljcm9tZXRlciMyLWNvdW50ZXIpIChEZWZhdWx0OiBbc3VtbWFyeVZhbHVlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhTdW1tYXJ5K3N1bW1hcnlWYWx1ZXMpKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICJbc3VtbWFyeVZhbHVlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhTdW1tYXJ5K3N1bW1hcnlWYWx1ZXMpIgogICAgICAgICAgfSwKICAgICAgICAgICJjb3VudGVyRmllbGRzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJOYW1lcyBvZiB0aGUgVGVuWFN1bW1hcnkgZmllbGRzIHVzZWQgdG8gaW5jcmVtZW50IHRoZSBtZXRyaWMgY291bnRlciB2YWx1ZVxuXG5EZWZpbmVzIHRoZSBuYW1lIG9mIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCBieSB3aG9zZSB2YWx1ZSB0byBpbmNyZW1lbnQgdGhlIGNvdW50ZXIuIiwKICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgInRhZ0ZpZWxkcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBvZiBUZW5YU3VtbWFyeSBmaWVsZHMgdG8gdXNlIGFzIG1ldHJpYyB0YWcgdmFsdWVzXG5cbkRlZmluZXMgdGhlIFRlblhTdW1tYXJ5IGZpZWxkIG5hbWVzIHRvIHVzZSBhcyBgdGFnYCB2YWx1ZXMuIFRhZ3MgYXJlIGRpbWVuc2lvbnMgdGhhdCBlbmFibGUgc2xpY2luZyBhIHBhcnRpY3VsYXIgbmFtZWQgbWV0cmljIHRvIGRyaWxsIGRvd24gdG8gcmVhc29uIGFib3V0IGl0cyB2YWx1ZS4gVG8gbGVhcm4gbW9yZSBzZWUgW21pY3JvbWV0ZXIgdGFnc10oaHR0cHM6Ly93d3cuYmFlbGR1bmcuY29tL21pY3JvbWV0ZXIjMS10YWdzKSIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJ0YWdGaWVsZE5hbWVzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIGN1c3RvbSBuYW1lcyB0byB1c2UgZm9yIFRlblhTdW1tYXJ5IGZpZWxkcy5cblxuRGVmaW5lcyB0aGUgYSBsaXN0IG9mIGN1c3RvbSBuYW1lcyB0byBnaXZlIGZpZWxkcyB3aGVuIHJlcG9ydGluZyB0aGVtLiBGb3JtYXQgYXMgYSBsaXN0IG9mIG5hbWUxLCBjdXN0b20xLCBuYW1lMiwgY3VzdG9tMi4gIEZvciBleGFtcGxlLCB0byBzZXQgYSBjdXN0b20gbmFtZSBvZiAnTXktQ3VzdG9tLUZpZWxkJyB0byBhbiBleGlzdGluZyAnaW50cmluc2ljLWZpZWxkJzogYGBgIHlhbWwgc2ltcGxlOiAgIHRhZ0ZpZWxkTmFtZXM6ICAgICAtIGludHJpbnNpYy1maWVsZCAgICAgLSBNeS1DdXN0b20tRmllbGQiLAogICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAiZmlsdGVyIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiQSBKYXZhU2NyaXB0IGV4cHJlc3Npb24gYW4gVGVuWFN1bW1hcnkgbXVzdCBldmFsdWF0ZSBhcyAndHJ1dGh5JyBhZ2FpbnN0IHRvIGJlIHdyaXR0ZW4gdG8gdGhpcyBvdXRwdXRcblxuU3BlY2lmaWVzIGEgSmF2YVNjcmlwdCBleHByZXNzaW9uIHRoYXQgYW4gVGVuWFN1bW1hcnkgbXVzdCBldmFsdWF0ZSBhcyB0cnV0aHkgdG8gd3JpdGUgaXRzIGluc3RhbmNlL3RlbXBsYXRlIGZpZWxkIHZhbHVlcyB0byB0aGUgdGFyZ2V0IGNvdW50ZXIuICBGb3IgZXhhbXBsZSwgdG8gb25seSBlbWl0IFRlblhTdW1tYXJpZXMgcHJvZHVjZWQgYnkgdGhlICdteU1ldHJpYycgYWdncmVnYXRvciwgc3BlY2lmeTogYGBgIHlhbWwgc2ltcGxlOiAgIGZpbHRlcjogdGhpcy5pbnB1dE5hbWUgPT0gXCJteU1ldHJpY1wiIGBgYCAgVG8gbGVhcm4gbW9yZSBzZWUgW2lucHV0TmFtZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhCYXNlT2JqZWN0K2lucHV0TmFtZSkiCiAgICAgICAgICB9LAogICAgICAgICAgIm1heENhcmRpbmFsaXR5IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4aW11bSBudW1iZXIgb2YgdW5pcXVlIG1ldHJpYyBjb21iaW5hdGlvbnMgYWxsb3dlZFxuXG5TZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiB1bmlxdWUgbWV0cmljIGNvbWJpbmF0aW9ucyAoY2FyZGluYWxpdHkpIGFsbG93ZWQgZm9yIHRoaXMgb3V0cHV0LiBXaGVuIGV4Y2VlZGVkLCBtZXRyaWNzIHdpbGwgYmUgZHJvcHBlZCB0byBwcmV2ZW50IGV4Y2Vzc2l2ZSBjYXJkaW5hbGl0eS4gKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogNTAwKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IDUwMAogICAgICAgICAgfSwKICAgICAgICAgICJzdGVwIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiVGhlIGludGVydmFsIGF0IHdoaWNoIHRvIHB1Ymxpc2ggbWV0cmljcyB0byBvdXRwdXRcblxuU2V0cyB0aGUgaW50ZXJ2YWwgYXQgd2hpY2ggdG8gcHVibGlzaCBtZXRyaWNzIHRvIHRoZSB0aW1lLXNlcmllcyBkZXN0aW5hdGlvbiAoZS5nLiwgJzFtJykuIFRvIGxlYXJuIG1vcmUgc2VlIFtyYXRlLWFnZ3JlZ2F0aW9uXShodHRwczovL21pY3JvbWV0ZXIuaW8vZG9jcy9jb25jZXB0cyNyYXRlLWFnZ3JlZ2F0aW9uKSAoRGVmYXVsdDogMW1pbikiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAiMW1pbiIKICAgICAgICAgIH0sCiAgICAgICAgICAibG9nZ2VyTmFtZSIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk5hbWUgb2YgbG9nNGoyIGxvZ2dlciB0byB3aGljaCByZWdpc3RyeSBtZXRyaWMgZGF0YSBpcyBwZXJpb2RpY2FsbHkgbG9nZ2VkXG5cblNldHMgdGhlIGxvZzRqMiBsb2dnZXIgdG8gd2hpY2ggcmVnaXN0cnkgbWV0cmljIGRhdGEgaXMgcGVyaW9kaWNhbGx5IGxvZ2dlZCBtZXRyaWMgYXJlIGxvZ2dlZCBhcyAnSU5GTycgbWVzc2FnZXMgdXNpbmcgdGhlIE1pY3JvbWV0ZXIgZGVmYXVsdCAnc2ltcGxlJyBmb3JtYXQuIFRvIGxlYXJuIG1vcmUgc2VlOiBbU2ltcGxlTWV0ZXJSZWdpc3RyeV0oaHR0cHM6Ly9naXRodWIuY29tL21pY3JvbWV0ZXItbWV0cmljcy9taWNyb21ldGVyL2Jsb2IvbWFpbi9taWNyb21ldGVyLWNvcmUvc3JjL21haW4vamF2YS9pby9taWNyb21ldGVyL2NvcmUvaW5zdHJ1bWVudC9zaW1wbGUvU2ltcGxlTWV0ZXJSZWdpc3RyeS5qYXZhKSIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJyZXF1aXJlZCIgOiBbCiAgICAgICAgICAibG9nZ2VyTmFtZSIKICAgICAgICBdCiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB0cnVlCn0=</template>

        ```yaml
        # 🔟❎ 'run' Log4j2 metric output configuration
        
        # Configure log4j2 metric counter outputs.
        # To learn more see https://doc.log10x.com/run/output/metric/log/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Dependencies ================================
        
        include: run/modules/output/metric/log
        
        # ============================== Log4j2 Options ===============================
        
        # Define multiple log4j2 metric outputs below
        simple:
        
            # 'loggerName' sets the log4j2 logger to which registry metric data is periodically logged
            #  metric are logged a 'INFO' messages using micrometer's default 'simple' format.
            #  To learn more see: https://github.com/micrometer-metrics/micrometer/blob/main/micrometer-core/src/main/java/io/micrometer/core/instrument/simple/SimpleMeterRegistry.java
          - loggerName: consoleOut
        
            # ---------------------------- Counter Options ----------------------------
        
            # 'nameField' sets the TenXSummary field whose value identifies the micrometer counter to increment. 
            #  The 'inputName' field returns the name of the aggregator that produced the target TenXSummary instance.
            #  To learn more see https://doc.log10x.com/run/aggregate
            nameField: inputName
        
            # 'counterFields' specifies the TenXSummary fields whose values are used to increment the counter.
            #  To learn more see https://doc.log10x.com/run/aggregate/#summary-fields
            counterFields:
              - summaryVolume
              - summaryBytes
              - summaryTotals
        
            # 'tagFields' sets the TenXSummary fields used as the counter tag dimension values.
            #  Defaults to https://doc.log10x.com/run/initialize/#enrichmentFields
            tagFields:
              - $=yield TenXEnv.get("enrichmentFields")
        
            # 'tagFieldNames' allows setting custom names to aggregated fields for metrics reporting.
            #  Defaults to https://doc.log10x.com/run/initialize/#metricFieldNames
            tagFieldNames:
              - $=yield TenXEnv.get("metricFieldNames")
        
            # 'filter' sets a JavaScript expression that TenXSummaries must evaluate as truthy to write to the output.
            #  To learn more see https://doc.log10x.com/run/output/receive/#filter-expressions
            filter: isSummary
        
            # ---------------------------- Publish Options ----------------------------
        
            # 'step' sets the frequency in which metrics are logged to 'loggerName' in
            # ISO-8601 format. To learn more see:
            # https://docs.oracle.com/javase/8/docs/api/java/time/Duration.html#parse-java.lang.CharSequence-
            step: PT1S
        ```

## :material-tune: Advanced Config Files

To configure advanced options (optional) for the Receiver app, [:material-cog: Edit](https://doc.log10x.com/config/app/#module-config "Learn how to edit app and module configurations") these files:
??? tenx-bootstrap "Bootstrap"

    <a id="bootstrap"></a>
    ### Bootstrap {.hidden-heading}

    Configure  the [Pipeline Bootstrapper](/run/bootstrap "Authenticate the log10x account and launch a target pipeline") to authenticate the log10x account and launch a target pipeline.

    Below is the default configuration from: [bootstrap/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/bootstrap/config.yaml "bootstrap/config.yaml"){target="\_blank"}.  
  
    <div class="edit-options">
        <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/bootstrap/config.yaml" target="_blank" rel="noopener noreferrer">
            <span class="twemoji" style="margin-right: 0.3rem;">
                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                    <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                </svg>
            </span> Edit Online
        </a>
        <button class="md-button tenx-config.yaml18-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml18-dialog">
            <span style="margin-right: 0.3rem;">
                <span class="twemoji">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                    </svg>
                </span>
            </span>Edit Locally
        </button>
    </div>
    
    <dialog id="config-yaml18-dialog" class="md-dialog md-dialog--editor">
        <div class="editor-dialog-wrapper">
            <div class="editor-dialog-header">
                <span class="editor-dialog-title">Edit Pipeline Bootstrapper Config Locally</span>
                <div class="editor-header-actions">
                    <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                        <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                        <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                        <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                        <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml18-dialog')" data-tooltip="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                    </button>
                </div>
            </div>
            <div class="editor-dialog-content">
                <div class="yaml-editor-container"></div>
            </div>
            <div class="yaml-editor-statusbar">
                <span class="yaml-editor-status"></span>
            </div>
        </div>
        <!-- Locations Popup -->
        <div class="locations-popup" style="display: none;">
            <div class="locations-popup-content">
                <div class="locations-popup-header">
                    <span class="locations-header-label">Download and save to:</span>
                    <button class="locations-popup-close" aria-label="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                            <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                        </svg>
                    </button>
                </div>
                <ul class="locations-list">
                    <li>
                        <span class="location-label">Linux / Docker / macOS
                            <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="default-path location-path" data-tooltip=""
                                data-copy-osx="/etc/log10x/config/run/bootstrap/config.yaml"
                                data-copy-nix="/etc/log10x/config/run/bootstrap/config.yaml"
                                data-copy-win="C:\log10x\configs/run/bootstrap/config.yaml"></code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Custom directory
                            <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="$TENX_CONFIG/run/bootstrap/config.yaml">$TENX_CONFIG/run/bootstrap/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Within cloned repo
                            <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="./pipelines/run/bootstrap/config.yaml">./pipelines/run/bootstrap/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                </ul>
                <div class="locations-popup-footer">
                    <button class="locations-download-btn" title="Download config file">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                            <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                        </svg>
                        <span>Download</span>
                    </button>
                </div>
            </div>
        </div>
    </dialog>
    
    <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJzdHJpbmciLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiBwaXBlbGluZSB0byBleGVjdXRlXG5cblRhcmdldCBbcGlwZWxpbmVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vZW5naW5lL3BpcGVsaW5lLykgdG8gZXhlY3V0ZS4gRm9yIGV4YW1wbGUsIHRvIHNwZWNpZnkgdGhlIFtydW5dKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuLykgcGlwZWxpbmUgYW5kIGEgW1lBTUxdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29uZmlnL3lhbWwvKSBjb25maWcgZmlsZSBjb250YWluaW5nIGxhdW5jaCBhcmd1bWVudHMsIHVzZTogIGBgYCBjb25zb2xlICQgdGVueCBydW4gQH4vbXkueWFtbCBgYGAgVGhlIFlBTUwgZmlsZSBtYXkgc3BlY2lmeSB0aGUgcGlwZWxpbmUgbmFtZSB2aWEgYSAndGVueCcgZW50cnksIGFsbG93aW5nIHRoZSAncGlwZWxpbmUnIGFyZ3VtZW50IHRvIGJlIG9taXR0ZWQgZnJvbSB0aGUgY29tbWFuZCBsaW5lLiAgRm9yIGV4YW1wbGUgKG15LnlhbWwpOiAgYGBgIHlhbWwgdGVueDogcnVuICMgc2V0IHRoZSBwaXBlbGluZSB0byAncnVuJyBsaWNlbnNlS2V5OiA8bXktbGljZW5zZS1qd3Q+IC4uLiBgYGAgIEFsbG93cyBmb3IgbGF1bmNoaW5nIHRoZSBydW4gcGlwZWxpbmUgdmlhOiBgYGAgY29uc29sZSAkIHRlbnggQH4vbXkueWFtbCBgYGAiCiAgICB9LAogICAgImxpY2Vuc2UiIDogewogICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgImZpbGUiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlBhdGggdG8gYSBmaWxlIGNvbnRhaW5pbmcgdGhlIDEweCBsaWNlbnNlIEpXVFxuXG5QYXRoIHRvIGEgZmlsZSBjb250YWluaW5nIHRoZSBzaWduZWQgMTB4IGxpY2Vuc2UgSldULiBQcmVmZXJyZWQgb3ZlciBgbGljZW5zZUtleWAgZm9yIHByb2R1Y3Rpb246IHRoZSB0b2tlbiBpcyBub3QgdmlzaWJsZSBpbiBgcHNgIG91dHB1dCBhbmQgaXMgZWFzeSB0byByb3RhdGUgYnkgcmVwbGFjaW5nIHRoZSBmaWxlLiAgV2l0aG91dCBhIGxpY2Vuc2UgdGhlIGVuZ2luZSBydW5zIG9uIHRoZSBidWlsdC1pbiAzMC1kYXkgZXZhbHVhdGlvbiBsaWNlbnNlLiBTZWUgW2xpY2Vuc2luZ10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9tYW5hZ2UvbGljZW5zZS8pIGZvciBwcm9kdWN0aW9uIGxpY2Vuc2VzLiAgSWYgYm90aCBgbGljZW5zZUZpbGVgIGFuZCBgbGljZW5zZUtleWAgYXJlIHByb3ZpZGVkLCB0aGUgZmlsZSB3aW5zLiIKICAgICAgICB9LAogICAgICAgICJrZXkiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIjEweCBsaWNlbnNlIEpXVCAoaW5saW5lKVxuXG5UaGUgc2lnbmVkIDEweCBsaWNlbnNlIEpXVCwgcGFzc2VkIGlubGluZS4gRGlzY291cmFnZWQgb24gdGhlIGNvbW1hbmQgbGluZSBiZWNhdXNlIHRoZSB2YWx1ZSBpcyB2aXNpYmxlIGluIGBwc2Agb3V0cHV0OyBwcmVmZXIgYGxpY2Vuc2VGaWxlYCBpbiBwcm9kdWN0aW9uLiAgV2l0aG91dCBhIGxpY2Vuc2UgdGhlIGVuZ2luZSBydW5zIG9uIHRoZSBidWlsdC1pbiAzMC1kYXkgZXZhbHVhdGlvbiBsaWNlbnNlLiBTZWUgW2xpY2Vuc2luZ10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9tYW5hZ2UvbGljZW5zZS8pIGZvciBwcm9kdWN0aW9uIGxpY2Vuc2VzLiIKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAiYWlyZ2FwcGVkIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJib29sZWFuIiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlJ1biB3aXRob3V0IGNvbnRhY3RpbmcgdGhlIDEweCBzZXJ2aWNlXG5cbldoZW4gYHRydWVgLCB0aGUgbGljZW5zZSBpcyB2ZXJpZmllZCBsb2NhbGx5IChzaWduYXR1cmUgKyBjbGFpbXMpIGFuZCBubyBjYWxscyBhcmUgbWFkZSB0byB0aGUgMTB4IHNlcnZpY2U6IG5vIHN0YXJ0dXAgdmFsaWRhdGlvbiwgbm8gbWV0cmljcyByZXBvcnRpbmcsIG5vIHVzZXItYXR0cmlidXRlIGVucmljaG1lbnQuIFN1aXRhYmxlIGZvciBmdWxseSBhaXJnYXBwZWQgZGVwbG95bWVudHMgd2hlcmUgdGhlIGVuZ2luZSBoYXMgbm8gcGF0aCB0byB0aGUgdmVuZG9yIFNhYVMuICBXaGVuIGBmYWxzZWAgKGRlZmF1bHQpLCB0aGUgZW5naW5lIGFkZGl0aW9uYWxseSBjYWxscyB0aGUgMTB4IHNlcnZpY2UgYXQgc3RhcnR1cCwgYW5kIG9ubHkgd2hlbiBhIHNlcnZpY2UgZW5kcG9pbnQgaXMgYWN0dWFsbHkgY29uZmlndXJlZDsgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBuYW1lcyBub25lLCBzbyBhbiB1bmNvbmZpZ3VyZWQgZW5naW5lIG1ha2VzIG5vIGNhbGwgZWl0aGVyIHdheS4gVGhlIGNhbGwgaXMgYmVzdC1lZmZvcnQgZW5yaWNobWVudDogdGhlIGxvY2FsIHZlcmlmaWNhdGlvbiBpcyB0aGUgZ2F0ZSwgYW5kIGEgc2VydmljZSB0aGF0IGNhbm5vdCBiZSByZWFjaGVkLCBvciB0aGF0IGFuc3dlcnMgd2l0aCBhbiBlcnJvciwgcHJvZHVjZXMgYSB3YXJuaW5nIGFuZCB0aGUgZW5naW5lIHJ1bnMuICBBaXJnYXBwZWQgbW9kZSBpcyBob25vcmVkIGZvciBldmVyeSBsaWNlbnNlIHR5cGUuIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiBmYWxzZSkiLAogICAgICAiZGVmYXVsdCIgOiBmYWxzZQogICAgfSwKICAgICJtZXRyaWNFbmRwb2ludCIgOiB7CiAgICAgICJ0eXBlIiA6IFsKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIjEweCBzZXJ2aWNlIFByb21ldGhldXMgbWV0cmljcyBlbmRwb2ludFxuXG5TcGVjaWZpZXMgdGhlIGFkZHJlc3Mgb2YgdGhlIFByb21ldGhldXMgcmVtb3RlIHdyaXRlIGVuZHBvaW50IHRvIHdyaXRlIHBpcGVsaW5lIHVzYWdlIGFuZCBoZWFsdGggbWV0cmljcy4gIFVuc2V0IGJ5IGRlZmF1bHQ6IGFuIGVuZ2luZSB3aXRoIG5vIG1ldHJpYyBlbmRwb2ludCBjb25maWd1cmVkIGNvbGxlY3RzIG1ldHJpY3MgbG9jYWxseSBhbmQgc2VuZHMgdGhlbSBub3doZXJlLiAgISEhIG5vdGUgXCJcIiAgICAgIFRoaXMgYXJndW1lbnQgaXMgb25seSBzZXR0YWJsZSBpbiB0aGUgMTB4ICdvbi1wcmVtaXNlcycgYnVpbGQuIgogICAgfSwKICAgICJydW50aW1lIiA6IHsKICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICJuYW1lIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJOYW1lIHRvIHJlcG9ydCB0byB0aGUgMTB4IHNlcnZpY2UgZW5kcG9pbnQgZm9yIHRoaXMgcnVudGltZSBpbnN0YW5jZVxuXG5TcGVjaWZpZXMgYSBsb2dpY2FsIG5hbWUgdXNlZCBhcyBhIFt0YWcgdmFsdWVdKGh0dHBzOi8vd3d3LmJhZWxkdW5nLmNvbS9taWNyb21ldGVyIzQtbWV0ZXJzKSBmb3IgcGlwZWxpbmUgbWV0cmljcy4gVGhpcyB2YWx1ZSBpZGVudGlmaWVzIGluc3RhbmNlcyBvZiB0aGUgMTB4IHJ1bi9jb21waWxlIHBpcGVsaW5lcyB3aGVuIHJlcG9ydGluZyB0byB0aGUgMTB4IHNlcnZpY2UuIEZvciBleGFtcGxlLCBmb3IgYSAxMHggW1JlY2VpdmVyXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwcHMvcmVjZWl2ZXIvKSB3aXRoIG9wdGltaXphdGlvbiBlbmFibGVkIGZvciBGbHVlbnQgQml0IGZvcndhcmRlcnMgY29sbGVjdGluZyBldmVudHMgZnJvbSBhIGBicm9rZXJgIHVzZXItYXBwLCB0aGlzIHZhbHVlIGNhbiBiZSBzZXQgdG86IGByZWNlaXZlX2ZsdWVudGJpdF9icm9rZXJgIgogICAgICAgIH0sCiAgICAgICAgImF0dHJpYnV0ZXMiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2YgYXR0cmlidXRlcyB0byBhZGQgdG8gYWxsIG1ldHJpY3MgcmVwb3J0aW5nXG5cblNwZWNpZmllcyBhIGxpc3Qgb2Yga2V5LXZhbHVlIHBhaXJzIGluIHRoZSBmb3JtYXQgYGtleTp2YWx1ZWAgdG8gYmUgYWRkZWQgYXMgdGFncyB0byBwaXBlbGluZSBtZXRyaWNzIHJlcG9ydGVkIHRvIHRoZSAxMHggc2VydmljZS4gVGhlc2UgdGFncyBlbmFibGUgZmluZXItZ3JhaW5lZCBmaWx0ZXJpbmcgYW5kIGFuYWx5c2lzIGluIG1vbml0b3Jpbmcgc3lzdGVtcyBsaWtlIFByb21ldGhldXMuIE11bHRpcGxlIGF0dHJpYnV0ZXMgY2FuIGJlIGNvbWJpbmVkIGludG8gYSBzaW5nbGUgc3RyaW5nIHVzaW5nIGEgc2VtaWNvbG9uIChgO2ApLCBlLmcuLCBga2V5MTp2YWwxO2tleTI6dmFsMmAuICBJZiBhIGtleSBkb2VzIG5vdCBzdGFydCB3aXRoIHRlbnhfLCB0aGUgcHJlZml4IHRlbnhfIGlzIGF1dG9tYXRpY2FsbHkgcHJlcGVuZGVkIHRvIGVuc3VyZSBjb25zaXN0ZW5jeSBpbiB0YWcgbmFtaW5nIGNvbnZlbnRpb25zLiBGb3IgZXhhbXBsZSwgYSBwcm92aWRlZCBhdHRyaWJ1dGUgYXBwOm15LWFwcCB3aWxsIGJlIHJlcG9ydGVkIGFzIHRlbnhfYXBwOm15LWFwcCAgYGBgIHlhbWwgICBydW50aW1lQXR0cmlidXRlczogICAgIC0gYXBwOnJlcG9ydGVyICAgICAtIGVudjplZGdlIGBgYCIsCiAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgICJpbmNsdWRlUGF0aHMiIDogewogICAgICAidHlwZSIgOiBbCiAgICAgICAgImFycmF5IiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlBpcGVsaW5lIGluY2x1ZGUgZm9sZGVyc1xuXG5TcGVjaWZpZXMgZm9sZGVycyBvbiBkaXNrIGZvciByZXNvbGluZyByZWxhdGl2ZSByZWZlcmVuY2VzIHdpdGhpbiBbaW5jbHVkZSBkaXJlY3RpdmVzXShodHRwczovL2RvYy5sb2cxMHguY29tL2NvbmZpZy95YW1sLyNpbmNsdWRlLWRpcmVjdGl2ZXMpLiAoRGVmYXVsdDogW1wid29ya2luZyBkaXJlY3Rvcnkgb2YgY3VycmVudCBwcm9jZXNzXCJdKSIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgfSwKICAgICAgImRlZmF1bHQiIDogWwogICAgICAgICJ3b3JraW5nIGRpcmVjdG9yeSBvZiBjdXJyZW50IHByb2Nlc3MiCiAgICAgIF0KICAgIH0sCiAgICAiamFyRmlsZXMiIDogewogICAgICAidHlwZSIgOiBbCiAgICAgICAgImFycmF5IiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkphciBmaWxlcyB0byBsb2FkXG5cblNwZWNpZmllcyBhIGxpc3Qgb2YgLmphciBmaWxlcyB0byBsb2FkIGludG8gdGhlIGhvc3QgSlZNIGZvciB1c2UgYnkgW2NvbXBpbGVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2NvbXBpbGUvKSwgW2lucHV0XShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9pbnB1dC8pIGFuZCBbb3V0cHV0XShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9vdXRwdXQvKSBBUEkgZXh0ZW5zaW9ucy4gICEhISBub3RlIFwiXCIgICAgICBUaGlzIGFyZ3VtZW50IGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhlIFtSdW50aW1lXShodHRwczovL2RvYy5sb2cxMHguY29tL2VuZ2luZS9mbGF2b3JzLyNydW50aW1lKSBmbGF2b3IuIiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICB9CiAgICB9LAogICAgInF1aWV0IiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJib29sZWFuIiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkRpc2FibGUgcHJpbnRpbmcgYmluYXJ5IHZlcnNpb24gaW5mb3JtYXRpb24gdG8gdGhlIGNvbnNvbGVcblxuRGlzYWJsZSBwcmludGluZyBidWlsZC92ZXJzaW9uIGluZm9ybWF0aW9uIHRvIHRoZSBjb25zb2xlIHVwb24gbGF1bmNoIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiBmYWxzZSkiLAogICAgICAiZGVmYXVsdCIgOiBmYWxzZQogICAgfSwKICAgICJkaXNhYmxlZEFyZ3MiIDogewogICAgICAidHlwZSIgOiBbCiAgICAgICAgImFycmF5IiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpbWl0IGFyZ3VtZW50IHZhbHVlcyB0aGF0IGNhbiBiZSBzZXQgYnkgdXNlcnNcblxuU3BlY2lmaWVzIGEgbGlzdCBvZiBsYXVuY2ggYXJndW1lbnRzIHRoYXQgYXJlIGRpc2FsbG93ZWQgZnJvbSBlaXRoZXIgY29tbWFuZCBsaW5lIG9yIHVzZXIgY29uZmlnIGZpbGVzLiBUaGlzIGFyZ3VtZW50IHByb3ZpZGVzIGEgbWV0aG9kIG9mIGxpbWl0aW5nIHRoZSB0YXJnZXQgW3BpcGVsaW5lXShodHRwczovL2RvYy5sb2cxMHguY29tL3NoYXJlZC9ib290c3RyYXAvI3BpcGVsaW5lKSwgW3NvdXJjZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcvI3NvdXJjZXMpIGFuZCBhbmQgW2NvbW1hbmQgbGluZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcvY2xpLykgc2V0dGFibGUgYnkgdGhlIHVzZXIuICBUaGlzIG1lY2hhbmlzbSBlbmFibGVzIHBpcGVsaW5lIGxhdW5jaGVycyBzdWNoIGFzIHRoZSBbUXVhcmt1cyBsYXVuY2hlcl0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvbGF1bmNoLyNxdWFya3VzKSB0byBsaW1pdCB1c2VyIGlucHV0IHJlY2VpdmVkIHZpYSBSRVNUIHJlcXVlc3RzIHRvIGEgdGFyZ2V0IHN1YnNldCBvZiAnc2FmZScgYXJndW1lbnRzLiAgRm9yIGV4YW1wbGUsIGFkZGluZyBbcHJvY091dENvbW1hbmRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL291dHB1dC9ldmVudC9wcm9jZXNzLyNwcm9jb3V0Y29tbWFuZCkgdG8gdGhpcyBsaXN0IGVuc3VyZXMgdGhhdCBubyBleHRlcm5hbCBwcm9jZXNzIG91dHB1dHMgY2FuIGJlIGxhdW5jaGVkIGJ5IHRoZSBydW50aW1lLiAgQW4gb3B0aW9uYWwgcmVnZXggcGF0dGVybiBjYW4gbGltaXQgYXJndW1lbnRzIHRvIGEgY2VydGFpbiBzdWJzZXQgb2YgdmFsdWVzIGluIHRoZSBmb3JtIG9mOiBgPGFyZy1uYW1lPls6cGF0dGVybl1gIChlLmcuLCBzcGVjaWZpYyBwcm9jZXNzIG5hbWVzKS4gTXVsdGlwbGUgcGF0dGVybnMgY2FuIGJlIHNwZWNpZmllZCBwZXIgYXJndW1lbnQuICBNYXRjaGluZyB0aGUgYHNvdXJjZWAgYXJndW1lbnQgZGV0ZXJtaW5lcyB3aGljaCBzb3VyY2UgbG9jYXRpb25zIHRvIGluc3BlY3QgKGUuZy4sIGZvbGRlcnMsIGZpbGVzLCBHaXRIdWIgcmVwb3MpLiBGb3IgZXhhbXBsZSwgYW4gYWRtaW4gbWF5IHBsYWNlIC55YW1sIGNvbmZpZyBmaWxlcyBjb250YWluaW5nIHByZXNldCBGbHVlbnQgQml0IG91dHB1dHMgaW4gYC9ldGMvbG9nMTB4L2AsIGV4Y2x1ZGluZyB0aGVpciBlbmNsb3NlZCBhcmd1bWVudHMgZnJvbSBsaW1pdHMgc2V0IGJ5IHRoaXMgbGlzdCwgd2hpbGUgZGlzYWxsb3dpbmcgdXNlcnMgdG8gZGlyZWN0bHkgc2V0IHRoZW0gdmlhIHRoZSBjb21tYW5kLWxpbmUgb3IgYnkgc291cmNpbmcgdGhlbSBmcm9tIHRoZWlyIGxvY2FsL0dpdEh1YiBjb25maWcgZmlsZXMgKHNlZSBleGFtcGxlIGJlbG93KS4gIFRvIGxpbWl0OiAgVGhlIHRhcmdldCBwaXBlbGluZSAoZS5nLiwgW3J1bl0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vKSwgW2NvbXBpbGVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29tcGlsZS8pKTogIGBgYCB5YW1sICAgZGlzYWJsZWRBcmdzOiAgIC0gXCJwaXBlbGluZTpecnVuXCIgIyBkaXNhbGxvdyBjb21waWxlIGBgYCAgVGFyZ2V0IGFyZ3VtZW50cyAoZS5nLiwgW3Byb2Nlc3Mgb3V0cHV0c10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vb3V0cHV0L2V2ZW50L3Byb2Nlc3MvKSk6ICBgYGAgeWFtbCAgIC0gXCJwcm9jT3V0Q29tbWFuZDpeZmx1ZW50LWJpdCRcIiAgICMgbGltaXQgdG8gRmx1ZW50IEJpdCBvbmx5ICAgIyAtIHByb2NPdXRBcmdzOiA8c3BlY2lmeS1yZWdleD4gICMgZnVydGhlciBsaW1pdCBhcmdzIGZvciBGbHVlbnQgQml0IGBgYCAgQ29udHJvbCB3aGljaCBhcmd1bWVudCBbc291cmNlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcvI3NvdXJjZXMpIHRvIGluc3BlY3Q6ICBgYGAgeWFtbCAgIC0gXCJzb3VyY2U6XmdpdGh1Yi4qXCIgICAgICAgICAgICAgIyBpbnNwZWN0IG9mIGFsbCBhcmd1bWVudHMgc291cmNlZCBmcm9tIEdpdEh1YiBhZ2FpbnN0IHRoaXMgbGlzdCAgIC0gXCJzb3VyY2U6Xig/IS9ldGMvbG9nMTB4LykuKlwiICAgIyBpbnNwZWN0IG9mIGFsbCBhcmd1bWVudHMgc291cmNlZCBmcm9tIGNvbmZpZyBmaWxlcyBOT1QgY29udGFpbmVkIGluOiAvZXRjL2xvZzEweC8gYGBgIiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICB9CiAgICB9LAogICAgImRlYnVnRW52VmFycyIgOiB7CiAgICAgICJ0eXBlIiA6IFsKICAgICAgICAiYXJyYXkiLAogICAgICAgICJzdHJpbmciLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gZGVidWdcblxuU3BlY2lmaWVzIGEgbGlzdCBvZiBlbnYgdmFyIG5hbWVzIGZvciB3aGljaCB0byBsb2cgaW5mb3JtYXRpb24gcmVsYXRpbmcgdG8gaG93IHRoZXkgYXJlIHJlc29sdmVkLiBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjYWxsOiBgTDFFbnYuZ2V0KFwibXlWYXJcIiwgXCJteURlZmF1bHRcIilgIGNhbiBiZSByZXNvbHZlZCBmcm9tIGEgbnVtYmVyIG9mIFtzb3VyY2VzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEVudi5nZXQpIHJhbmdpbmcgZnJvbSBsYXVuY2ggYXJndW1lbnRzLCB0byBPUy9KVk0gcHJvcGVydGllcyBhbmQgYSBkZWZhdWx0IHZhbHVlIChlLmcuLCBteURlZmF1bHQpLiAgU2V0dGluZyB0aGlzIHZhbHVlIHRvIGBteVZhcmAgd2lsbCBsb2cgSU5GTyBsZXZlbCBpbmZvcm1hdGlvbiBkZXRhaWxpbmcgaG93IHRoZSB2YWx1ZSBvZiB0aGUgYG15VmFyYCB3YXMgcmVzb2x2ZWQuIiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICB9CiAgICB9CiAgfSwKICAicmVxdWlyZWQiIDogWwogICAgInRlbngiCiAgXSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==</template>

    ```yaml
    # 🔟❎ run bootstrap configuration
    
    # This config file specifies bootstrap options for the run pipeline.
    # To learn more see https://doc.log10x.com/run/bootstrap
    
    # To learn more see https://doc.log10x.com/config/
    
    tenx: run
    
    # =============================== Launch Settings ==============================
    
    # 'licenseKey' specifies a signed JWT license token used for authenticating against the 10x service
    licenseKey: $=TenXEnv.get("TENX_LICENSE_KEY", "NO-LICENSE")
    
    # 'licenseFile' specifies a path to a file containing the signed JWT license token.
    # Preferred over 'licenseKey' on production hosts: the token does not appear in 'ps' output.
    licenseFile: $=TenXEnv.get("TENX_LICENSE_FILE")
    
    # 'airgapped' suppresses every call to the 10x SaaS gateway: the license is verified locally against the embedded
    # public key, and ALL outbound calls to the 10x SaaS gateway are suppressed (no DNS, no TCP).
    # Use for deployments where security review forbids vendor phone-home.
    airgapped: $=TenXEnv.get("TENX_AIRGAPPED", "false")
    
    # 'includePaths' specifies folders on disk for resolving relative config file/folder references in addition to the working folder
    includePaths: []
    
    # 'quiet' disables printing version information to the console.
    # quiet: true
    
    # 'jarFiles' specifies .jar files to dynamically load for use by compile, input and output API extensions.
    jarFiles: []
    
    # 'metricEndpoint' specifies a Prometheus remote-write endpoint for pipeline usage and health metrics.
    # Unset by default. The endpoint is a self-hosted or vendor Prometheus-compatible store, never a 10x
    # service, and is where the MCP reads engine state back from to tune policy such as regulator rates.
    # metricEndpoint: https://prometheus.example.com/api/v1/write
    
    # 'disabledArgs' specifies a list of launch arguments that are disallowed from either command line or user config files.
    disabledArgs: []
    
    # 'debugEnvVars' list environment variables to debug
    debugEnvVars: []
    ```

??? tenx-githubsync "Github Sync"

    <a id="githubSync"></a>
    ### Github Sync {.hidden-heading}



    Below is the default configuration from: [gitops/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/gitops/config.yaml "gitops/config.yaml"){target="\_blank"}.  
  
    <div class="edit-options">
        <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/gitops/config.yaml" target="_blank" rel="noopener noreferrer">
            <span class="twemoji" style="margin-right: 0.3rem;">
                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                    <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                </svg>
            </span> Edit Online
        </a>
        <button class="md-button tenx-config.yaml19-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml19-dialog">
            <span style="margin-right: 0.3rem;">
                <span class="twemoji">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                    </svg>
                </span>
            </span>Edit Locally
        </button>
    </div>
    
    <dialog id="config-yaml19-dialog" class="md-dialog md-dialog--editor">
        <div class="editor-dialog-wrapper">
            <div class="editor-dialog-header">
                <span class="editor-dialog-title">Edit config.yaml Locally</span>
                <div class="editor-header-actions">
                    <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                        <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                        <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                        <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                        <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml19-dialog')" data-tooltip="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                    </button>
                </div>
            </div>
            <div class="editor-dialog-content">
                <div class="yaml-editor-container"></div>
            </div>
            <div class="yaml-editor-statusbar">
                <span class="yaml-editor-status"></span>
            </div>
        </div>
        <!-- Locations Popup -->
        <div class="locations-popup" style="display: none;">
            <div class="locations-popup-content">
                <div class="locations-popup-header">
                    <span class="locations-header-label">Download and save to:</span>
                    <button class="locations-popup-close" aria-label="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                            <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                        </svg>
                    </button>
                </div>
                <ul class="locations-list">
                    <li>
                        <span class="location-label">Linux / Docker / macOS
                            <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="default-path location-path" data-tooltip=""
                                data-copy-osx="/etc/log10x/config/gitops/config.yaml"
                                data-copy-nix="/etc/log10x/config/gitops/config.yaml"
                                data-copy-win="C:\log10x\configs/gitops/config.yaml"></code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Custom directory
                            <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="$TENX_CONFIG/gitops/config.yaml">$TENX_CONFIG/gitops/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Within cloned repo
                            <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="./pipelines/gitops/config.yaml">./pipelines/gitops/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                </ul>
                <div class="locations-popup-footer">
                    <button class="locations-download-btn" title="Download config file">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                            <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                        </svg>
                        <span>Download</span>
                    </button>
                </div>
            </div>
        </div>
    </dialog>
    
    <template class="tenx-config-schema" data-encoding="base64">ewogICIkc2NoZW1hIjogImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hIyIsCiAgInRpdGxlIjogIkdpdE9wcyBDb25maWd1cmF0aW9uIiwKICAiZGVzY3JpcHRpb24iOiAiQ29uZmlndXJhdGlvbiBmb3IgcHVsbGluZyBzeW1ib2wsIGNvbmZpZyBhbmQgbG9va3VwIGZpbGVzIGZyb20gYSByZW1vdGUgc291cmNlIChHaXRIdWIgcmVwbyBvciBLdWJlcm5ldGVzIENvbmZpZ01hcCkgdG8gZW5hYmxlIGNlbnRyYWxpemVkIGNvbmZpZ3VyYXRpb24gbWFuYWdlbWVudCIsCiAgInR5cGUiOiAib2JqZWN0IiwKICAicHJvcGVydGllcyI6IHsKICAgICJ0ZW54IjogewogICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAiZGVzY3JpcHRpb24iOiAiVGhlIHRhcmdldCAxMHggcGlwZWxpbmUgdG8gcnVuIChlLmcuLCBydW4sIGNvbXBpbGUpIgogICAgfSwKICAgICJpbmNsdWRlIjogewogICAgICAidHlwZSI6ICJhcnJheSIsCiAgICAgICJkZXNjcmlwdGlvbiI6ICJMaXN0IG9mIGluY2x1ZGUgc291cmNlcyIsCiAgICAgICJpdGVtcyI6IHsKICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICJvbmVPZiI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgICAiY29uc3QiOiAiZ2l0aHViIiwKICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGUgc291cmNlIHR5cGUgZm9yIHRoaXMgaW5jbHVkZSIKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICJvcHRpb25zIjogewogICAgICAgICAgICAgICAgIiRyZWYiOiAiIy9kZWZpbml0aW9ucy9QaXBlbGluZUxhdW5jaEdpdEh1Yk9wdGlvbnMiCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZWQiOiBbCiAgICAgICAgICAgICAgInNvdXJjZSIsCiAgICAgICAgICAgICAgIm9wdGlvbnMiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICAgImNvbnN0IjogImt1YmVybmV0ZXMiLAogICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoZSBzb3VyY2UgdHlwZSBmb3IgdGhpcyBpbmNsdWRlIgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgIm9wdGlvbnMiOiB7CiAgICAgICAgICAgICAgICAiJHJlZiI6ICIjL2RlZmluaXRpb25zL1BpcGVsaW5lTGF1bmNoS3ViZXJuZXRlc09wdGlvbnMiCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZWQiOiBbCiAgICAgICAgICAgICAgInNvdXJjZSIsCiAgICAgICAgICAgICAgIm9wdGlvbnMiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdCiAgICAgIH0KICAgIH0KICB9LAogICJkZWZpbml0aW9ucyI6IHsKICAgICJQaXBlbGluZUxhdW5jaEdpdEh1Yk9wdGlvbnMiOiB7CiAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICJkZXNjcmlwdGlvbiI6ICJHaXRIdWIgcHVsbCBjb25maWd1cmF0aW9uIG9wdGlvbnMiLAogICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAiZW5hYmxlZCI6IHsKICAgICAgICAgICJ0eXBlIjogImJvb2xlYW4iLAogICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNvbnRyb2xzIHdoZXRoZXIgdG8gZW5hYmxlIHRoaXMgcHVsbCBjb25maWciLAogICAgICAgICAgImRlZmF1bHQiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgInRva2VuIjogewogICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBY2Nlc3MgdG9rZW4gZm9yIGFjY2Vzc2luZyB0aGUgR2l0SHViIHJlcG8uIFNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9lbi9hdXRoZW50aWNhdGlvbi9rZWVwaW5nLXlvdXItYWNjb3VudC1hbmQtZGF0YS1zZWN1cmUvbWFuYWdpbmcteW91ci1wZXJzb25hbC1hY2Nlc3MtdG9rZW5zIgogICAgICAgIH0sCiAgICAgICAgInJlcG8iOiB7CiAgICAgICAgICAidHlwZSI6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGUgR2l0SHViIHVzZXIvcmVwbyBmcm9tIHdoaWNoIHRvIHB1bGwgKGUuZy4sICdvd25lci9yZXBvJykiCiAgICAgICAgfSwKICAgICAgICAiYnJhbmNoIjogewogICAgICAgICAgInR5cGUiOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQnJhbmNoIG9uIHJlcG8uIElmIG51bGwsIHVzZXMgdGhlIHJlcG8ncyBkZWZhdWx0IGJyYW5jaCIsCiAgICAgICAgICAiZGVmYXVsdCI6IG51bGwKICAgICAgICB9LAogICAgICAgICJwYXRocyI6IHsKICAgICAgICAgICJ0eXBlIjogImFycmF5IiwKICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJHbG9iIHBhdHRlcm5zIHdpdGhpbiAncmVwbycgdG8gcHVsbCBhbmQgZXh0cmFjdCB0byBhIHRlbXAgZm9sZGVyIiwKICAgICAgICAgICJpdGVtcyI6IHsKICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgICAgICAgfSwKICAgICAgICAgICJleGFtcGxlcyI6IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICJjb25maWcvKi55YW1sIiwKICAgICAgICAgICAgICAic3ltYm9scy8qLjEweC50YXIiLAogICAgICAgICAgICAgICJsb29rdXBzLyouY3N2IiwKICAgICAgICAgICAgICAic2NyaXB0cy8qLmpzIgogICAgICAgICAgICBdCiAgICAgICAgICBdCiAgICAgICAgfSwKICAgICAgICAic3luY0ludGVydmFsIjogewogICAgICAgICAgInR5cGUiOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSW50ZXJ2YWwgdG8gY2hlY2sgdGhlIHJlbW90ZSBicmFuY2ggZm9yIHVwZGF0ZXMgKGUuZy4sICc1bWluJykuIFNldCB0byBudWxsIHRvIGRpc2FibGUgc3luYyIsCiAgICAgICAgICAiZGVmYXVsdCI6IG51bGwsCiAgICAgICAgICAiZXhhbXBsZXMiOiBbCiAgICAgICAgICAgICI1bWluIiwKICAgICAgICAgICAgIjFoIiwKICAgICAgICAgICAgIjMwcyIKICAgICAgICAgIF0KICAgICAgICB9LAogICAgICAgICJkZXN0aW5hdGlvbiI6IHsKICAgICAgICAgICJ0eXBlIjogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgImRlc2NyaXB0aW9uIjogIlN0YWJsZSBhYnNvbHV0ZSBmb2xkZXIgdGhlIHB1bGxlZCBjb250ZW50IGlzIG1pcnJvcmVkIGludG8gYWZ0ZXIgdGhlIGluaXRpYWwgcHVsbCBhbmQgYWZ0ZXIgZXZlcnkgc3luYyAoYXRvbWljIHBlci1maWxlIHdyaXRlczsgbXRpbWUgcmVmcmVzaGVkIGV2ZXJ5IHN5bmMpLiBMb29rdXAgb3B0aW9ucyBzdWNoIGFzIHJhdGVSZWNlaXZlckxvb2t1cEZpbGUgbXVzdCB0YXJnZXQgdGhpcyBmb2xkZXIsIG5vdCB0aGUgc2hhLWFkZHJlc3NlZCBwdWxsIGNhY2hlLiBVbnNldCBkaXNhYmxlcyB0aGUgbWlycm9yLiBSZXF1aXJlcyBlbmdpbmUgPj0gMS4xLjY5LiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJyZXF1aXJlZCI6IFsKICAgICAgICAiZW5hYmxlZCIsCiAgICAgICAgInJlcG8iCiAgICAgIF0sCiAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyI6IGZhbHNlCiAgICB9LAogICAgIlBpcGVsaW5lTGF1bmNoS3ViZXJuZXRlc09wdGlvbnMiOiB7CiAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICJkZXNjcmlwdGlvbiI6ICJLdWJlcm5ldGVzIENvbmZpZ01hcCBwdWxsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyIsCiAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICJlbmFibGVkIjogewogICAgICAgICAgInR5cGUiOiBbCiAgICAgICAgICAgICJib29sZWFuIiwKICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgIF0sCiAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29udHJvbHMgd2hldGhlciB0byBlbmFibGUgdGhpcyBwdWxsIGNvbmZpZyAoSzhTX0VOQUJMRUQpIgogICAgICAgIH0sCiAgICAgICAgIm5hbWVzcGFjZSI6IHsKICAgICAgICAgICJ0eXBlIjogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNvbmZpZ01hcCBuYW1lc3BhY2U7IGRlZmF1bHRzIHRvIHRoZSBwb2QncyBvd24gbmFtZXNwYWNlIGZyb20gdGhlIG1vdW50ZWQgc2VydmljZS1hY2NvdW50IHZvbHVtZSAoSzhTX05BTUVTUEFDRSkiCiAgICAgICAgfSwKICAgICAgICAiY29uZmlnTWFwIjogewogICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDb25maWdNYXAgbmFtZSB0byBwdWxsIGZyb20gKEs4U19DT05GSUdNQVA7IGRlZmF1bHQgbG9nMTB4LWFjdGlvbi1pbnRlbnQpIgogICAgICAgIH0sCiAgICAgICAgImtleXMiOiB7CiAgICAgICAgICAidHlwZSI6ICJhcnJheSIsCiAgICAgICAgICAiaXRlbXMiOiB7CiAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIKICAgICAgICAgIH0sCiAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiR2xvYiBwYXR0ZXJucyBvdmVyIENvbmZpZ01hcCBkYXRhICsgYmluYXJ5RGF0YSBrZXlzOyBvbmx5IG1hdGNoaW5nIGtleXMgYXJlIHdyaXR0ZW4gdG8gZGlzayIKICAgICAgICB9LAogICAgICAgICJzeW5jSW50ZXJ2YWwiOiB7CiAgICAgICAgICAidHlwZSI6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJQb2xsIGludGVydmFsLCBmbG9vcmVkIHRvIDYwcyBieSB0aGUgc2NoZWR1bGVyIChLOFNfU1lOQ19JTlRFUlZBTCkiCiAgICAgICAgfSwKICAgICAgICAiYXBpU2VydmVyIjogewogICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJrdWJlLWFwaXNlcnZlciBVUkw7IGRlZmF1bHQgaXMgdGhlIGluLWNsdXN0ZXIgc2VydmljZSBVUkwgKEs4U19BUElfU0VSVkVSKSIKICAgICAgICB9LAogICAgICAgICJ0b2tlblBhdGgiOiB7CiAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgImRlc2NyaXB0aW9uIjogIlBhdGggdG8gdGhlIHByb2plY3RlZCBzZXJ2aWNlLWFjY291bnQgdG9rZW4gKEs4U19UT0tFTl9QQVRIKSIKICAgICAgICB9LAogICAgICAgICJjYVBhdGgiOiB7CiAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgImRlc2NyaXB0aW9uIjogIlBhdGggdG8gdGhlIHNlcnZpY2UtYWNjb3VudCBDQSBjZXJ0IChLOFNfQ0FfUEFUSCkiCiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQp9</template>

    ```yaml
    # 🔟❎ GitOps configuration
    
    # This config file pulls symbol, config and lookup files from a remote repo to
    # enable centralized configuration management via GitHub.
    
    # To learn more see https://doc.log10x.com/config/github
    
    # The target 10x pipeline to run (e.g., run, compile) is specified in the config files pulled from the repo
    tenx: any
    
    include:
    
      - source: github
    
        options:
          # Env-var overrides: GH_ENABLED, GH_REPO, GH_BRANCH, GH_PATH, GH_SYNC_INTERVAL.
          # Defaults below are for the compact-receiver GitOps reload test:
          # they pull test/compact-lookup.csv from talwgx/test every 30s.
          # For a real deployment, set GH_ENABLED=false OR override the repo.
          enabled: $=TenXEnv.get("GH_ENABLED", false)
    
          # 'token' specifies an access token for accessing the Github repo.
          token: $=TenXEnv.get("GH_TOKEN")
    
          # 'repo' specifies the GitHub user/repo from which to pull
          repo: $=TenXEnv.get("GH_REPO", "talwgx/test")
    
          # 'branch' on 'repo' (if null, uses default repo default branch)
          branch: $=TenXEnv.get("GH_BRANCH", "main")
    
          # 'paths' specifies Glob patterns within 'repo' to pull and extract to a temp folder.
          # (List items don't honor $= expressions; hardcoded glob. Override repo+branch
          # to target a different repo layout. Compact lookup must live as test/*.csv.)
          paths:
            - test/*.csv
    
          # 'syncInterval' specifies an interval by which check to check the remote branch for updates (null to disable).
          # This interval works in conjunction with: https://doc.log10x.com/run/reload
          syncInterval: $=TenXEnv.get("GH_SYNC_INTERVAL", "30s")
    
          # 'destination' mirrors pulled content into a stable absolute folder,
          # after the initial pull and after every sync (atomic per-file writes,
          # mtime refreshed every sync). The pull cache itself lives under a
          # sha-addressed temp folder whose path changes per commit -- options
          # like rateReceiverLookupFile must point HERE, not into the cache:
          #   GH_DEST=/tmp/policy  +  rateReceiverLookupFile=/tmp/policy/test/mutes.csv
          # The folder must be writable by the engine user: the shipped container
          # runs as uid 1000, so a root-level path like /policy fails the launch.
          # Unset = no mirror (prior behavior). Requires engine >= 1.1.69.
          destination: $=TenXEnv.get("GH_DEST")
    
    # ---------------------------------------------------------------------------
    # Alternative source: kubernetes ConfigMap
    #
    # Pulls regulator CSV / lookup files from a kube-apiserver ConfigMap. Same
    # polling cadence + atomic write semantics as the github lane, but the
    # source-of-truth lives in the cluster rather than a remote repo. Useful
    # for air-gapped deployments and for tooling that already writes intent
    # (e.g. log10x-mcp configure_engine) directly into kubernetes.
    #
    # DISABLED unless K8S_ENABLED=true on the pod. The MCP install wizard sets
    # it (with a seeded ConfigMap + RBAC read grant), so a wizard-installed
    # receiver picks up caps.csv / actions.csv / config-generation.csv without
    # hand-wiring. The seed matters: the first pull runs on the launch thread
    # and a MISSING ConfigMap aborts startup; the lookup loader also refuses a
    # rows-less CSV, so the seeded files each carry one no-op `tenx-seed` row.
    #
    # Auth uses the pod's mounted service-account token (re-read each poll so
    # BoundServiceAccountTokenVolume rotation is honored). CA cert is re-loaded
    # on mtime change. Atomic file replacement via temp + Files.move.
    
      - source: kubernetes
    
        options:
          # Env-var overrides: K8S_ENABLED, K8S_NAMESPACE, K8S_CONFIGMAP,
          # K8S_SYNC_INTERVAL, K8S_API_SERVER, K8S_TOKEN_PATH, K8S_CA_PATH.
          enabled: $=TenXEnv.get("K8S_ENABLED", false)
    
          # 'namespace' defaults to the pod's namespace (read from the mounted
          # service-account token volume). Override for cross-namespace pulls.
          namespace: $=TenXEnv.get("K8S_NAMESPACE")
    
          # 'configMap' is the ConfigMap name to pull from.
          configMap: $=TenXEnv.get("K8S_CONFIGMAP", "log10x-action-intent")
    
          # 'keys' is a list of glob patterns over the ConfigMap data + binaryData
          # keys. Only keys matching at least one glob are written to disk.
          keys:
            - "*.csv"
            - "*.json"
    
          # 'syncInterval', floored to 60s by the scheduler (mirrors github lane).
          syncInterval: $=TenXEnv.get("K8S_SYNC_INTERVAL", "30s")
    
          # 'apiServer' default is the in-cluster URL. Override for out-of-cluster
          # smoke tests (e.g., https://127.0.0.1:6443 via kubectl proxy).
          apiServer: $=TenXEnv.get("K8S_API_SERVER", "https://kubernetes.default.svc")
    
          # Paths to the projected service-account token + CA cert. Defaults are
          # the standard in-cluster mount points; override only for non-standard
          # service-account volume layouts.
          tokenPath: $=TenXEnv.get("K8S_TOKEN_PATH", "/var/run/secrets/kubernetes.io/serviceaccount/token")
          caPath: $=TenXEnv.get("K8S_CA_PATH", "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt")
    ```

??? tenx-symbols "Symbols"

    <a id="symbols"></a>
    ### Symbols {.hidden-heading}



    Below is the default configuration from: [symbol/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/symbol/config.yaml "symbol/config.yaml"){target="\_blank"}.  
  
    <div class="edit-options">
        <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/symbol/config.yaml" target="_blank" rel="noopener noreferrer">
            <span class="twemoji" style="margin-right: 0.3rem;">
                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                    <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                </svg>
            </span> Edit Online
        </a>
        <button class="md-button tenx-config.yaml20-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml20-dialog">
            <span style="margin-right: 0.3rem;">
                <span class="twemoji">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                    </svg>
                </span>
            </span>Edit Locally
        </button>
    </div>
    
    <dialog id="config-yaml20-dialog" class="md-dialog md-dialog--editor">
        <div class="editor-dialog-wrapper">
            <div class="editor-dialog-header">
                <span class="editor-dialog-title">Edit config.yaml Locally</span>
                <div class="editor-header-actions">
                    <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                        <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                        <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                        <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                        <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml20-dialog')" data-tooltip="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                    </button>
                </div>
            </div>
            <div class="editor-dialog-content">
                <div class="yaml-editor-container"></div>
            </div>
            <div class="yaml-editor-statusbar">
                <span class="yaml-editor-status"></span>
            </div>
        </div>
        <!-- Locations Popup -->
        <div class="locations-popup" style="display: none;">
            <div class="locations-popup-content">
                <div class="locations-popup-header">
                    <span class="locations-header-label">Download and save to:</span>
                    <button class="locations-popup-close" aria-label="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                            <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                        </svg>
                    </button>
                </div>
                <ul class="locations-list">
                    <li>
                        <span class="location-label">Linux / Docker / macOS
                            <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="default-path location-path" data-tooltip=""
                                data-copy-osx="/etc/log10x/config/run/symbol/config.yaml"
                                data-copy-nix="/etc/log10x/config/run/symbol/config.yaml"
                                data-copy-win="C:\log10x\configs/run/symbol/config.yaml"></code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Custom directory
                            <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="$TENX_CONFIG/run/symbol/config.yaml">$TENX_CONFIG/run/symbol/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Within cloned repo
                            <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="./pipelines/run/symbol/config.yaml">./pipelines/run/symbol/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                </ul>
                <div class="locations-popup-footer">
                    <button class="locations-download-btn" title="Download config file">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                            <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                        </svg>
                        <span>Download</span>
                    </button>
                </div>
            </div>
        </div>
    </dialog>
    
    <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAic3ltYm9sIiA6IHsKICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICJwYXRocyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiSW5wdXQgc3ltYm9sIGZpbGVzIGFuZCBmb2xkZXJzXG5cblNwZWNpZmllcyBhIGxpc3Qgb2YgZ2xvYiBwYXR0ZXJucyB1c2VkIHRvIGxvYWQgc3ltYm9scyBmaWxlcyAoLmpzb24sIC5jc3YpIGludG8gdGhlIHBpcGVsaW5lIHVwb24gaW5pdGlhbGl6YXRpb24uIFppcCBhcmNoaXZlcyBhcmUgZXh0cmFjdGVkIHRvIHRoZSB0ZW1wIGZvbGRlciBhbmQgZGVsZXRlZCBvbiBleGl0LiAoRGVmYXVsdDogW1wicGF0aChcXFwic2FtcGxlL3N5bWJvbHNcXFwiKVwiXSkiLAogICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgIH0sCiAgICAgICAgICAiZGVmYXVsdCIgOiBbCiAgICAgICAgICAgICJwYXRoKFwic2FtcGxlL3N5bWJvbHNcIikiCiAgICAgICAgICBdCiAgICAgICAgfSwKICAgICAgICAibGl0ZXJhbHMiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlN5bWJvbCBsaXRlcmFsIHZhbHVlc1xuXG5TcGVjaWZpZXMgYSBsaXN0IG9mIGxpdGVyYWwgc3ltYm9sIHZhbHVlcyB0byBhZGQgdG8gdGhlIGhvc3QgcGlwZWxpbmUncyBzeW1ib2wgY29sbGVjdGlvbi4gVGhpcyBvcHRpb24gZW5hYmxlcyBkZWNsYXJpbmcgc3ltYm9sIHZhbHVlcyBkaXJlY3RseSB0aHJvdWdoIHRoZSBjb21tYW5kIGxpbmUgb3IgdmlhIFlBTUwvSlNPTiBjb25maWd1cmF0aW9uLiIsCiAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgICJtYXhTeW1ib2xVbml0c1BlclRva2VuIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJudW1iZXIiLAogICAgICAgICJzdHJpbmciLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTnVtYmVyIG9mIHN5bWJvbCB1bml0cyB0byByZXRyaWV2ZSB3aGVuIHNlYXJjaGluZyBmb3IgdGhlIG9yaWdpbiBvZiBhbiBUZW5YVGVtcGxhdGUgc3ltYm9sIHNlcXVlbmNlXG5cbkNvbnRyb2xzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBzeW1ib2wgdW5pdHMgdG8gbG9hZCBmcm9tIHRoZSBwaXBlbGluZSdzIHN5bWJvbCBsaWJyYXJ5IHdoZW4gc2VhcmNoaW5nIGZvciB0aGUgW29yaWdpbl0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vdHJhbnNmb3JtL3N5bWJvbC8pIG9mIGEgc3BlY2lmaWMgW1RlblhUZW1wbGF0ZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vdGVtcGxhdGUvKSBzeW1ib2wuICAgVGhlIFtzeW1ib2xTZXF1ZW5jZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhPYmplY3Qrc3ltYm9sU2VxdWVuY2UpIGZ1bmN0aW9uIHF1ZXJpZXMgdGhlIHNvdXJjZSBjb2RlL2JpbmFyeSBvcmlnaW4gb2Ygc3ltYm9sIHNlcXVlbmNlcyBpbiBhIHRhcmdldCBUZW5YVGVtcGxhdGUgdG8gaWRlbnRpZnkgdGhlIGxvZ2ljYWwgXCJtZXNzYWdlXCIgcG9ydGlvbnMgb2YgYXBwL2luZnJhIGV2ZW50cyB2cy4gdmFyaWFibGUgdmFsdWVzIGFuZCBbTURDIGNvbnRleHRdKGh0dHBzOi8vbG9nZ2luZy5hcGFjaGUub3JnL2xvZzRqLzIueC9tYW51YWwvdGhyZWFkLWNvbnRleHQuaHRtbCkuICAgU2luY2Ugc3ltYm9scyBtYXkgYXBwZWFyIGluIGh1bmRyZWRzIG9yIG1vcmUgbG9jYXRpb25zIGFjcm9zcyBhIGNvZGUgYmFzZSwgIGxpbWl0aW5nIHRoZSBudW1iZXIgb2Ygc3ltYm9sIHVuaXRzIHRvIGxvYWQgaXMgbmVjZXNzYXJ5IHRvIHJlZHVjZSBtZW1vcnkgY29uc3VtcHRpb24uICAgICBBIHNlY29uZCBjb25zaWRlcmF0aW9uIGluIHBsYWNpbmcgYW4gdXBwZXIgbGltaXQgb24gdGhlIG51bWJlciBvZiB1bml0cyB0byBsb2FkIGZyb20gdGhlIHN5bWJvbCBsaWJyYXJ5ICBpcyB0aGUgbW9yZSBmcmVxdWVudCBhIHN5bWJvbCBpcywgdGhlIGxvd2VyIHRoZSBwcm9iYWJpbGl0eSBvZiBzZWxlY3RpbmcgaXRzIGNvcnJlY3Qgb3JpZ2luLiAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiAxMjgpIiwKICAgICAgImRlZmF1bHQiIDogMTI4CiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==</template>

    ```yaml
    # 🔟❎ 'run' symbol file configuration
    
    # Loads symbol library files to transform events into well-defined TenXObjects.
    # To learn more see https://doc.log10x.com/run/symbol
      
    # Set the 10x pipeline to 'run'
    tenx: run
    
    # ============================ Symbol Options =================================
    
    symbol:
    
      # 'paths' specifies the file/folder locations to scan for symbol library files.
      #  To learn more see https://doc.log10x.com/run/symbol/#symbolpaths
      paths:
        - $=path("data/shared/symbols", false)
        - $=path("<TENX_SYMBOLS_PATH>",  false)
    
      literals: []
    ```

??? tenx-aggregators "Aggregators"

    <a id="aggregators"></a>
    ### Aggregators {.hidden-heading}

    Configure [Aggregators](/run/aggregate "Aggregate and summarize TenXObjects to publish as metrics") to aggregate and summarize TenXObjects to publish as metrics.

    Below is the default configuration from: [receive/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/aggregate/receive/config.yaml "receive/config.yaml"){target="\_blank"}.  
  
    <div class="edit-options">
        <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/aggregate/receive/config.yaml" target="_blank" rel="noopener noreferrer">
            <span class="twemoji" style="margin-right: 0.3rem;">
                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                    <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                </svg>
            </span> Edit Online
        </a>
        <button class="md-button tenx-config.yaml21-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml21-dialog">
            <span style="margin-right: 0.3rem;">
                <span class="twemoji">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                    </svg>
                </span>
            </span>Edit Locally
        </button>
    </div>
    
    <dialog id="config-yaml21-dialog" class="md-dialog md-dialog--editor">
        <div class="editor-dialog-wrapper">
            <div class="editor-dialog-header">
                <span class="editor-dialog-title">Edit Aggregator Config Locally</span>
                <div class="editor-header-actions">
                    <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                        <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                        <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                        <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                        <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml21-dialog')" data-tooltip="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                    </button>
                </div>
            </div>
            <div class="editor-dialog-content">
                <div class="yaml-editor-container"></div>
            </div>
            <div class="yaml-editor-statusbar">
                <span class="yaml-editor-status"></span>
            </div>
        </div>
        <!-- Locations Popup -->
        <div class="locations-popup" style="display: none;">
            <div class="locations-popup-content">
                <div class="locations-popup-header">
                    <span class="locations-header-label">Download and save to:</span>
                    <button class="locations-popup-close" aria-label="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                            <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                        </svg>
                    </button>
                </div>
                <ul class="locations-list">
                    <li>
                        <span class="location-label">Linux / Docker / macOS
                            <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="default-path location-path" data-tooltip=""
                                data-copy-osx="/etc/log10x/config/run/aggregate/receive/config.yaml"
                                data-copy-nix="/etc/log10x/config/run/aggregate/receive/config.yaml"
                                data-copy-win="C:\log10x\configs/run/aggregate/receive/config.yaml"></code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Custom directory
                            <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="$TENX_CONFIG/run/aggregate/receive/config.yaml">$TENX_CONFIG/run/aggregate/receive/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Within cloned repo
                            <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="./pipelines/run/aggregate/receive/config.yaml">./pipelines/run/aggregate/receive/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                </ul>
                <div class="locations-popup-footer">
                    <button class="locations-download-btn" title="Download config file">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                            <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                        </svg>
                        <span>Download</span>
                    </button>
                </div>
            </div>
        </div>
    </dialog>
    
    <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAiYWdncmVnYXRvciIgOiB7CiAgICAgICJ0eXBlIiA6ICJhcnJheSIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAgICJuYW1lIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTG9naWNhbCBuYW1lIG9mIGFnZ3JlZ2F0b3JcblxuUHJvdmlkZXMgYSBsb2dpY2FsIG5hbWUgZm9yIHRoaXMgYWdncmVnYXRvciAoZS5nLiwgJ2Vycm9ycycpLiBUaGlzIHZhbHVlIGlzIGFjY2Vzc2libGUgYXQgcnVuLXRpbWUgdmlhIHRoZSBpbnRyaW5zaWMgJ2lucHV0TmFtZScgZmllbGQgdG8gaWRlbnRpZnkgVGVuWFN1bW1hcmllcyBvcmlnaW5hdGluZyBmcm9tIHRoaXMgYWdncmVnYXRvci4iCiAgICAgICAgICB9LAogICAgICAgICAgImVuYWJsZWQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgImJvb2xlYW4iLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRW5hYmxlL2Rpc2FibGUgdGhpcyBhZ2dyZWdhdG9yXG5cblNldHMgd2hldGhlciB0byBvcGVuIHRoZSBpbnB1dCBzdHJlYW0uIFRvIGVuYWJsZSB0aGlzIGlucHV0IG9ubHkgd2hlbiBhbiAnYWdncmVnYXRlRXJyb3JzJyBzdGFydHVwIGFyZ3VtZW50IHZhbHVlIGlzIHRydXRoeTogIGBgYCB5YW1sIC4uLiBhZ2dyZWdhdG9yOiAgIGVuYWJsZWQ6ICQ9VGVuWEVudi5nZXQoXCJhZ2dyZWdhdGVFcnJvcnNcIikgYGBgIChEZWZhdWx0OiB0cnVlKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICJ0cnVlIgogICAgICAgICAgfSwKICAgICAgICAgICJmaWVsZHMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2YgZmllbGQgbmFtZXMgYnkgd2hpY2ggdG8gYWdncmVnYXRlIFRlblhPYmplY3RzXG5cblByb3ZpZGVzIGEgbGlzdCBvZiBpbnRyaW5zaWMvZXh0cmFjdGVkL2NhbGN1bGF0ZWQgW1RlblhPYmplY3RdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YT2JqZWN0KSBmaWVsZCBuYW1lcyBieSB3aGljaCB0byBhZ2dyZWdhdGUgaW5zdGFuY2VzLiAgV2hlbiB0aGUgYWdncmVnYXRvciBmbHVzaGVzIHRoZSBpbi1tZW0gdGFibGUgdG8gcHJvZHVjZWQgVGVuWFN1bW1hcmllcywgZWFjaCBnZW5lcmF0ZWQgVGVuWFN1bW1hcnkgaW5zdGFuY2UgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSB0b3RhbCB2YWx1ZXMgdmlhIGl0cyBbc3VtbWFyeVRvdGFsc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhTdW1tYXJ5K3N1bW1hcnlWYWx1ZXMpIGFycmF5IGZpZWxkLiIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJkZWZhdWx0VmFsdWUiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBIGNvbnN0YW50IHZhbHVlIHRvIGRlZmF1bHQgaWYgJ21heENhcmRpbmFsaXR5JyBpcyBleGNlZWRlZFxuXG5EZWZpbmVzIGEgY29uc3RhbnQgdmFsdWUgdG8gdXNlIGluc3RlYWQgb2YgW2ZpZWxkIHZhbHVlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vYWdncmVnYXRlLyNhZ2dyZWdhdG9yZmllbGRzKSB3aGVuIHRoZSBjdXJyZW50IG51bWJlciBvZiByb3dzIHdpdGhpbiB0aGUgYWdncmVnYXRvcidzIGluLW1lbSB0YWJsZSBkdXJpbmcgW2ZsdXNoSW50ZXJ2YWxdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2FnZ3JlZ2F0ZS8jYWdncmVnYXRvcmZsdXNoaW50ZXJ2YWwpIGV4Y2VlZHMgW21heENhcmRpbmFsaXR5XShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9hZ2dyZWdhdGUvI2FnZ3JlZ2F0b3JtYXhjYXJkaW5hbGl0eSkuICBUaGlzIHZhbHVlIHByZXZlbnRzIGFuIG91dC1vZi1tZW0gZXJyb3IgaWYgVGVuWE9iamVjdHMgd2hvc2UgW2ZpZWxkIHZhbHVlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vYWdncmVnYXRlLyNhZ2dyZWdhdG9yZmllbGRzKSBhcmUgb2YgaGlnaCBjYXJkaW5hbGl0eSwgd2hpY2ggY2FuIGNhdXNlIHRoZSBpbi1tZW0gdGFibGUgdG8gZ3JvdyBiZXlvbmQgdGhlIGNvbmZpbmVzIG9mIHRoZSBob3N0IEpWTSBoZWFwLiAgVGhpcyBlcnJvciBpcyBwb3NzaWJsZSBpZiBbZmllbGRzXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9hZ2dyZWdhdGUvI2FnZ3JlZ2F0b3JmaWVsZHMpIGNvbnRhaW5zIGEgY2FsY3VsYXRlZC9leHRyYWN0ZWQgZmllbGQgd2hvc2UgdmFsdWUgaXMgYWxwaGFudW1lcmljIChlLmcuLCAnc3BhbklEJykgYW5kIGlzIHByYWN0aWNhbGx5IHVuaXF1ZSB0byBlYWNoIFRlblhPYmplY3QuIgogICAgICAgICAgfSwKICAgICAgICAgICJ0b3RhbEZpZWxkcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBvZiBmaWVsZHMgd2hvc2UgdmFsdWVzIHRvIHRhbGx5IGludG8gZ2VuZXJhdGVkIFRlblhTdW1tYXJpZXNcblxuU3BlY2lmaWVzIGEgbGlzdCBvZiBpbnRyaW5zaWMgY2FsY3VsYXRlZC9leHRyYWN0ZWQgVGVuWE9iamVjdCBmaWVsZCBuYW1lcyB0byB0YWxseSBhbmQgd3JpdGUgaW50byBhZ2dyZWdhdGVkIFRlblhTdW1tYXJ5IGluc3RhbmNlcyB3aXRoaW4gYSB0YXJnZXQgZmx1c2ggIFt0aHJlc2hvbGRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2FnZ3JlZ2F0ZS8jYWdncmVnYXRvcmZsdXNodGhyZXNob2xkKSBvciBbaW50ZXJ2YWxdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2FnZ3JlZ2F0ZS8jYWdncmVnYXRvcmZsdXNoaW50ZXJ2YWwpLiAgRm9yIGV4YW1wbGUsIHNldHRpbmcgYSB2YWx1ZSBvZjogYHByaWNlYCBpbnRvIHRoaXMgYXJyYXkgd2lsbCB0YWxseSB0aGUgcHJpY2VzIG9mIGFsbCBUZW5YT2JqZWN0cyBhZ2dyZWdhdGVkIGludG8gYSB0YXJnZXQgb3V0cHV0IFRlblhTdW1tYXJ5IGluc3RhbmNlLiAgIEEgbWF0Y2hpbmcgYHByaWNlYCB2YWx1ZSBjb250YWluaW5nIHRoZSBzdW0gb2YgYWdncmVnYXRlZCBwcmljZXMgd2lsbCBiZSBhY2Nlc3NpYmxlIGZvciBlYWNoIFRlblhTdW1tYXJ5IGluc3RhbmNlIHZpYSBpdHMgIFtzdW1tYXJ5VG90YWxzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWFN1bW1hcnkrc3VtbWFyeVRvdGFscykgYXJyYXkuIiwKICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgIm1heENhcmRpbmFsaXR5IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4IG51bWJlciBvZiBjb25jdXJyZW50IHJvd3Mgd2l0aGluIHRoZSBhZ2dyZWdhdG9yIGluLW1lbSB0YWJsZSB3aXRoaW4gdGhlIGZsdXNoIGludGVydmFsXG5cblNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHVuaXF1ZSByb3dzIHdpdGhpbiB0aGUgYWdncmVnYXRvcidzIGluLW1lbSB0YWJsZS4gSWYgdGhlIG51bWJlciBvZiByb3dzIGV4Y2VlZHMgdGhpcyB2YWx1ZSBkdXJpbmcgW2ZsdXNoSW50ZXJ2YWxdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2FnZ3JlZ2F0ZS8jYWdncmVnYXRvcmZsdXNoaW50ZXJ2YWwpICwgdGhlICdhZ2dyZWdhdG9yRGVmYXVsdFZhbHVlJyB2YWx1ZSB3aWxsIGJlIGZvciBhbGwgVGVuWE9iamVjdHMgaW5zdGVhZCBvZiBbZmllbGQgdmFsdWVzXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9hZ2dyZWdhdGUvI2FnZ3JlZ2F0b3JmaWVsZHMpIHVudGlsIHRoZSBhZ2dyZWdhdG9yIGlzIGZsdXNoZWQuICBUaGlzIHZhbHVlIGlzIHVzZWQgYXMgYSBiYWNrc3RvcCB0byBlbnN1cmUgdGhhdCB0aGUgYWdncmVnYXRvcidzIGluLW1lbSB0YWJsZSBkb2VzIG5vdCBvdmVyZmxvdyB3aGVuIGV4dHJhY3RpbmcgYW5kICBhZ2dyZWdhdGluZyB2ZXJ5IGhpZ2ggY2FyZGluYWxpdHkgdmFsdWVzIGZyb20gdGhlIGZpZWxkcyBvZiBUZW5YT2JqZWN0cyBwYXNzZWQgdG8gdGhpcyBhZ2dyZWdhdG9yLiAgSWYgbm8gdmFsdWUgaXMgcHJvdmlkZWQgb3Igc2V0IHRvIDAsIHRoZSBhZ2dyZWdhdG9yIGhhcyBubyBjYXAuIFRoaXMgbWF5IHJlc3VsdCBpbiBhbiBvdXQtb2YtbWVtIGVycm9yIHdoZW4gdmVyeSBoaWdoIGNhcmRpbmFsaXR5IChlLmcuLCAnc3BhbklEJywgJ0dVSUQnKSBbZmllbGRzXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9hZ2dyZWdhdGUvI2FnZ3JlZ2F0b3JmaWVsZHMpIGFyZSBzcGVjaWZpZWQuIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikiCiAgICAgICAgICB9LAogICAgICAgICAgImZpbHRlciIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkEgSmF2YVNjcmlwdCBleHByZXNzaW9uIGFuIFRlblhPYmplY3QgbXVzdCBldmFsdWF0ZSBhcyAndHJ1dGh5JyBhZ2FpbnN0IHRvIGJlIGFnZ3JlZ2F0ZWRcblxuUHJvdmlkZXMgYSB3YXkgdG8gY29udHJvbCB3aGljaCBUZW5YT2JqZWN0cyBhcmUgaW5jb3Jwb3JhdGVkIGludG8gdGhpcyBhZ2dyZWdhdG9yLiBVbmxpa2UgdGhlICdhZ2dyZWdhdG9yRW5hYmxlZCcsIHdoaWNoIGVuYWJsZXMvZGlzYWJsZXMgdGhpcyBhZ2dyZWdhdG9yIGFsdG9nZXRoZXIsIHRoaXMgSmF2YVNjcmlwdCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBwZXIgVGVuWE9iamVjdCB0byBwcm92aWRlIGdyYW51bGFyIGNvbnRyb2wgb3ZlciB3aGF0IGluZm9ybWF0aW9uIHRvIGFnZ3JlZ2F0ZS4gIEZvciBleGFtcGxlLCB0byBvbmx5IGFnZ3JlZ2F0ZSBUZW5YT2JqZWN0cyByZWFkIGZyb20gYSBzcGVjaWZpZWQgaW5wdXQ6ICBgYGAgeWFtbCBhZ2dyZWdhdG9yOiAgIGZpbHRlcjogdGhpcy5pbnB1dE5hbWUgPT0gXCJlbGFzdGljXCIgYGBgICBUbyBhcHBseSBtb3JlIGNvbXBsZXggbG9naWMsIGludm9rZSBhbiAxMHggSmF2YVNjcmlwdCBmdW5jdGlvbiBkZWNsYXJlZCBpbiBhIC5qcyBmaWxlIGJ5IHBhc3NpbmcgaXQgdG8gdGhlIDEweCBFbmdpbmUgYXQgc3RhcnR1cCAoZS5nLiwgJCB0ZW54IHJ1biBAbXkuanMpLiAgYGBgIHlhbWwgYWdncmVnYXRvcjogICAuLi4gICBmaWx0ZXI6IG15QWdncmVnYXRvckZpbHRlcigpIGBgYCAgRm9yIGEgcmVhbC13b3JsZCBhZ2dyZWdhdG9yIGV4YW1wbGUgc2VlIFthZ2dyZWdhdGUvc3RyZWFtLnlhbWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9sb2ctMTB4L21vZHVsZXMvYmxvYi9tYWluL3BpcGVsaW5lcy9ydW4vbW9kdWxlcy9hZ2dyZWdhdGUvc3RyZWFtLnlhbWwpLiIKICAgICAgICAgIH0sCiAgICAgICAgICAiZmx1c2hUaHJlc2hvbGQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgIm51bWJlciIsCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJNYXhpbXVtIHRoZSBudW1iZXIgb2YgVGVuWE9iamVjdHMgdG8gYWdncmVnYXRlIGJlZm9yZSB0aGUgYWdncmVnYXRvciBmbHVzaGVzXG5cbkNvbnRyb2xzIGhvdyBtYW55IFRlblhPYmplY3RzIHRvIHVwc2VydCBpbnRvIHRoaXMgYWdncmVnYXRvciAoZS5nLiwgMTAwMDApIGJlZm9yZSB0aGUgYWdncmVnYXRvciB0cmFuc2Zvcm1zIHRoZSByb3dzIG9mIGl0cyBpbi1tZW0gdGFibGUgaW50byBUZW5YU3VtbWFyaWVzIGluc3RhbmNlcyBhbmQgZmx1c2hlcyB0aGVtIGludG8gdGhlIHBpcGVsaW5lLiAgSWYgbm90IHNldCwgdGhlIFtmbHVzaEludGVydmFsXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9hZ2dyZWdhdGUvI2FnZ3JlZ2F0b3JmbHVzaGludGVydmFsKSBhcmd1bWVudCBkZXRlcm1pbmVzIHdoZW4gdG8gZmx1c2ggdGhlIGFnZ3JlZ2F0b3IuIElmIG5laXRoZXIgYXJndW1lbnQgaXMgcHJlc2VudCwgdGhlIGFnZ3JlZ2F0b3Igb25seSBmbHVzaGVzIHBlbmRpbmcgVGVuWFN1bW1hcmllcyB3aGVuIHRoZSBwaXBlbGluZSB0ZXJtaW5hdGVzLiAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIgogICAgICAgICAgfSwKICAgICAgICAgICJmbHVzaEludGVydmFsIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiSW50ZXJ2YWwgdG8gd2FpdCBiZWZvcmUgdGhlIGFnZ3JlZ2F0b3IgZmx1c2hlc1xuXG5TZXRzIHRoZSBwZXJpb2QgKGUuZy4sICczMHMnKSwgYWZ0ZXIgd2hpY2ggdGhlIGFnZ3JlZ2F0b3IgdHJhbnNmb3JtcyB0aGUgcm93cyBvZiBpdHMgaW4tbWVtIHRhYmxlIGludG8gVGVuWFN1bW1hcmllcyBpbnN0YW5jZXMgYW5kIGZsdXNoZXMgdGhlbSBpbnRvIHRoZSBwaXBlbGluZS4gIElmIHNldCwgdGhlIFtmbHVzaFRocmVzaG9sZF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vYWdncmVnYXRlLyNhZ2dyZWdhdG9yZmx1c2h0aHJlc2hvbGQpICBhcmd1bWVudCBkZXRlcm1pbmVzIHdoZW4gdG8gZmx1c2ggdGhlIGFnZ3JlZ2F0b3IuIElmIG5laXRoZXIgYXJndW1lbnQgaXMgcHJlc2VudCwgdGhlIGFnZ3JlZ2F0b3Igb25seSBmbHVzaGVzIHBlbmRpbmcgVGVuWFN1bW1hcmllcyB3aGVuIHRoZSBwaXBlbGluZSB0ZXJtaW5hdGVzLiIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJyZXF1aXJlZCIgOiBbCiAgICAgICAgICAibmFtZSIsCiAgICAgICAgICAiZmllbGRzIgogICAgICAgIF0KICAgICAgfQogICAgfQogIH0sCiAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlCn0=</template>

    ```yaml
    # 🔟❎ 'run' aggregator config for the receiver app.
    
    # This file configures aggregators for tracking emitted (non-dropped) events with
    # additional metrics for tracking received (dropped) events for cost saving analysis.
    # When 'receiverOptimize' is enabled, the emitted_events aggregator also tracks
    # optimized event sizes to measure optimization effectiveness.
    # To learn more see https://doc.log10x.com/run/aggregate
    
    # Set the 10x pipeline to 'run'
    tenx: run
    
    # ============================== Aggregator Options ===========================
    
    # Multiple aggregators can be defined below
    aggregator:
    
      # Defines an aggregator for tracking emitted (non-dropped) events
      # This enables an output metric to show an accurate (lossless) metric of the
      # data actually emitted to downstream systems.
      - name: emitted_events
    
        # 'filter' sets a JavaScript expression that TenXObjects must evaluate as truthy to be aggregated.
        #  To learn more see https://doc.log10x.com/run/output/receive/#filter-expressions
        #
        # This filter excludes dropped events by checking isRoute("drop"),
        # ensuring only emitted events are tracked.
        #
        # For more info, see https://doc.log10x.com/api/js/#TenXBaseObject+dropped
        filter: "this.isObject && !this.isRoute(\"drop\")"
    
        # 'fields' set the names of intrinsic/extracted/calculated fields whose combined values
        #  identify a unique row within the aggregator's in-mem table for
        #  each object passed to it. This aggregator defaults to enrichment fields.
        #  To learn more see https://doc.log10x.com/run/initialize/#enrichmentFields
        fields:
          - $=yield TenXEnv.get("enrichmentFields")
    
        # 'totalFields' specifies fields to extract and tally into generated TenXSummaries.
        #  When receiverOptimize is enabled, tracks the utf8 byte size of encoded events
        #  to measure optimization effectiveness.
        #  To learn more see https://doc.log10x.com/api/js/#TenXObject+encode
        totalFields:
          - '$=yield TenXEnv.get("receiverOptimize") ? "optimized_size=this.utf8Size(\"encoded=encode()\")" : ""'
    
        # 'flushThreshold' sets the max number of TenXObjects whose values to upsert into
        #  the aggregator's in-mem table. Once exceeded, the aggregator instantiates TenXSummaries
        #  from the table rows to send to output and reset the table.
        flushThreshold: 10000
    
        # 'flushInterval' sets a periodic interval, after which the aggregator
        #  flushes the rows of its in-mem table into the pipeline as TenXSummary instances.
        flushInterval: 2s
    
        # 'maxCardinality' sets the maximum number of rows for the aggregator's
        #  in-mem table. If an TenXObjects whose 'values' are not contained in the table
        #  is passed to the aggregator, 'defaultValue' will be used for it instead
        #  until the aggregator flushes its in-mem table after 'flushInterval' or 'flushThreshold'
        #  are exceeded.
        maxCardinality: 65536
    
        # 'defaultValue' sets a constant value that is used instead of 'values' when
        #  'maxCardinality' is exceeded within 'flushInterval'
        defaultValue: unknown
    
      # Defines an aggregator for all events seen by this pipeline
      # This enables an output metric to show an accurate (lossless) metric of the
      # data processed by this pipeline, even if it was later dropped.
      - name: all_events
    
        # 'filter' sets a JavaScript expression that TenXObjects must evaluate as truthy to be aggregated.
        #  To learn more see https://doc.log10x.com/run/output/receive/#filter-expressions
        filter: isObject
    
        # 'values' set the names of intrinsic/extracted/calculated fields whose combined values
        #  identify a unique row within the aggregator's in-mem table for
        #  each object passed to it.
    
        # By default, this configuration uses the enrichment fields specified below.
        fields:
          - $=yield TenXEnv.get("enrichmentFields")
    
        # 'totalFields' specifies fields to extract and tally into generated TenXSummaries
        totalFields: []
    
        # 'flushThreshold' sets the max number of TenXObjects whose values to upsert into
        #  the aggregator's in-mem table. Once exceeded, the aggregator instantiates TenXSummaries
        #  from the table rows to send to output and reset the table.
        flushThreshold: 10000
    
        # 'flushInterval' sets a periodic interval, after which the aggregator
        #  flushes the rows of its in-mem table into the pipeline as TenXSummary instances.
        flushInterval: 2s
    
        # 'maxCardinality' sets the maximum number of rows for the aggregator's
        #  in-mem table. If an TenXObjects whose 'values' are not contained in the table
        #  is passed to the aggregator, 'defaultValue' will be used for it instead
        #  until the aggregator flushes its in-mem table after 'flushInterval' or 'flushThreshold'
        #  are exceeded.
        maxCardinality: 65536
    
        # 'defaultValue' sets a constant value that is used instead of 'values' when
        #  'maxCardinality' is exceeded within 'flushInterval'
        defaultValue: unknown
    ```

??? tenx-template "Template"

    <a id="template"></a>
    ### Template {.hidden-heading}



    Below is the default configuration from: [template/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/template/config.yaml "template/config.yaml"){target="\_blank"}.  
  
    <div class="edit-options">
        <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/template/config.yaml" target="_blank" rel="noopener noreferrer">
            <span class="twemoji" style="margin-right: 0.3rem;">
                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                    <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                </svg>
            </span> Edit Online
        </a>
        <button class="md-button tenx-config.yaml22-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml22-dialog">
            <span style="margin-right: 0.3rem;">
                <span class="twemoji">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                    </svg>
                </span>
            </span>Edit Locally
        </button>
    </div>
    
    <dialog id="config-yaml22-dialog" class="md-dialog md-dialog--editor">
        <div class="editor-dialog-wrapper">
            <div class="editor-dialog-header">
                <span class="editor-dialog-title">Edit config.yaml Locally</span>
                <div class="editor-header-actions">
                    <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                        <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                        <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                        <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                        <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml22-dialog')" data-tooltip="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                    </button>
                </div>
            </div>
            <div class="editor-dialog-content">
                <div class="yaml-editor-container"></div>
            </div>
            <div class="yaml-editor-statusbar">
                <span class="yaml-editor-status"></span>
            </div>
        </div>
        <!-- Locations Popup -->
        <div class="locations-popup" style="display: none;">
            <div class="locations-popup-content">
                <div class="locations-popup-header">
                    <span class="locations-header-label">Download and save to:</span>
                    <button class="locations-popup-close" aria-label="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                            <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                        </svg>
                    </button>
                </div>
                <ul class="locations-list">
                    <li>
                        <span class="location-label">Linux / Docker / macOS
                            <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="default-path location-path" data-tooltip=""
                                data-copy-osx="/etc/log10x/config/run/template/config.yaml"
                                data-copy-nix="/etc/log10x/config/run/template/config.yaml"
                                data-copy-win="C:\log10x\configs/run/template/config.yaml"></code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Custom directory
                            <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="$TENX_CONFIG/run/template/config.yaml">$TENX_CONFIG/run/template/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Within cloned repo
                            <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="./pipelines/run/template/config.yaml">./pipelines/run/template/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                </ul>
                <div class="locations-popup-footer">
                    <button class="locations-download-btn" title="Download config file">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                            <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                        </svg>
                        <span>Download</span>
                    </button>
                </div>
            </div>
        </div>
    </dialog>
    
    <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVtcGxhdGUiIDogewogICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgImZpbGVzIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJJbnB1dCBmaWxlcyBvciBnbG9iIHBhdHRlcm5zIGNvbnRhaW5pbmcgSlNPTi1lbmNvZGVkIFRlblhUZW1wbGF0ZXNcblxuSW5wdXQgZmlsZXMgb3IgZ2xvYiBwYXR0ZXJucyBmcm9tIHdoaWNoIHRvIGxvYWQgSlNPTi1lbmNvZGVkIFRlblhUZW1wbGF0ZXMuIChEZWZhdWx0OiBbXCJwYXRoKFxcXCJkYXRhL3NhbXBsZS90ZW1wbGF0ZXMvKi5qc29uXFxcIilcIl0pIiwKICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICB9LAogICAgICAgICAgImRlZmF1bHQiIDogWwogICAgICAgICAgICAicGF0aChcImRhdGEvc2FtcGxlL3RlbXBsYXRlcy8qLmpzb25cIikiCiAgICAgICAgICBdCiAgICAgICAgfSwKICAgICAgICAiY2FjaGVTaXplIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgIm51bWJlciIsCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4aW11bSB0b3RhbCBieXRlIHNpemUgb2YgaW4tbWVtb3J5IGNhY2hlZCB0ZW1wbGF0ZXNcblxuQ29udHJvbHMgdGhlIG1heGltdW0gdG90YWwgYnl0ZSBzaXplIG9mIHRlbXBsYXRlcyBoZWxkIGluIHRoZSBpbi1tZW1vcnkgY2FjaGUuIFdoZW4gdGhlIGNhY2hlIGV4Y2VlZHMgdGhpcyBsaW1pdCwgbGVhc3QgcmVjZW50bHkgdXNlZCB0ZW1wbGF0ZXMgYXJlIHBydW5lZCB0byBhIHRlbXBvcmFyeSBmaWxlIG9uIGRpc2suIFBydW5lZCB0ZW1wbGF0ZXMgYXJlIGF1dG9tYXRpY2FsbHkgcmVsb2FkZWQgZnJvbSBkaXNrIHdoZW4gYWNjZXNzZWQgYWdhaW4uICBTZXQgdG8gMCB0byBkaXNhYmxlIHBydW5pbmcgYW5kIGtlZXAgYWxsIHRlbXBsYXRlcyBpbiBtZW1vcnkuIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDIwOTcxNTIwKSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiAyMDk3MTUyMAogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgICJ2YXIiIDogewogICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgInBsYWNlaG9sZGVyIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJQbGFjZWhvbGRlciBjaGFyYWN0ZXIgZm9yIG5vdGF0aW5nIFRlblhPYmplY3QgaW5zdGFuY2UgdmFyaWFibGVzXG5cblNwZWNpZmllcyBhIGNoYXJhY3RlciB0byB1c2Ugd2hlbiBlbmNvZGluZyBhbiBUZW5YVGVtcGxhdGUgdG8gc2lnbmlmeSB0aGUgbG9jYXRpb24gb2YgYSBydW50aW1lIHZhcmlhYmxlIHZhbHVlLiAgRm9yIGV4YW1wbGUsIGZvciBhbiBUZW5YVGVtcGxhdGUgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIHNlZ21lbnQ6ICAnRVJST1I6IGNvdWxkIG5vdCBjb25uZWN0IHRvIGhvc3QgSVA6ICQuJC4kLiQnICBUaGUgJyQnIGVudHJpZXMgZGVzaWduYXRlIHRoYXQgYW55IFRlblhPYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdGVtcGxhdGUgIHdpbGwgc3Vic3RpdHV0ZSB0aGUgJyQnIHNsb3RzIHdpdGggbWF0Y2hpbmcgdmFsdWVzIGZyb20gaXRzIGluZGl2aWR1YWwgW3ZhcnNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YQmFzZU9iamVjdCt2YXJzKSBhcnJheSAoZS5nLiAwLDAsMCwxMjcpLiAoRGVmYXVsdDogJCkiLAogICAgICAgICAgImRlZmF1bHQiIDogIiQiCiAgICAgICAgfSwKICAgICAgICAibWF4UmVjdXJJbmRleGVzIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgIm51bWJlciIsCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4aW11bSBudW1iZXIgb2YgdGVtcGxhdGUgcmV1c2FibGUgdmFyaWFibGUgdmFsdWVcblxuQ29udHJvbHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHZhcmlhYmxlIHZhbHVlcyB0byByZXVzZSB3aGVuIGVuY29kaW5nIGFuIFRlblhPYmplY3QncyBbdmFyc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhCYXNlT2JqZWN0K3ZhcnMpIGFycmF5IHRvIHN0cmVhbS4gV2hlbiBnZW5lcmF0aW5nIGEgbmV3ICBUZW5YVGVtcGxhdGUgZm9yIGFuIFRlblhPYmplY3QgaW5zdGFuY2Ugd2hvc2UgdmFyaWFibGVzIGNvbnRhaW4gcmVwZXRpdGl2ZSB2YWx1ZXMsICB0aGUgdGVtcGxhdGUgbWF5IGluZGljYXRlIHRoYXQgYSB2YWx1ZSBpcyBhIHJlcGV0aXRpb24gb2YgYSBwcmV2aW91cyB2YXJpYWJsZSB2YWx1ZSBhbmQgIGRvZXMgbm90IG5lZWQgdG8gYmUgZW5jb2RlZCBhZ2Fpbi4gIEZvciBleGFtcGxlLCBmb3IgYW4gVGVuWE9iamVjdCB3aG9zZSBbdGV4dF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhCYXNlT2JqZWN0K3RleHQpIGZpZWxkIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgc2VnbWVudDogYHVzZXJJRD00NWRmZ2RmczQscGFyZW50SUQ9NDVkZmdkZnM0YCwgdGhlIHJlc3VsdGluZyBUZW5YVGVtcGxhdGUgY2FuIGJlIGVuY29kZWQgYXM6IGB1c2VySUQ9JCxwYXJlbnRJRD0kMWAgc3BlY2lmeWluZyB0aGF0IHRoZSB2YWx1ZSBvZiB0aGUgYHBhcmVudElEYCB2YXJpYWJsZSBjYW4gYmUgZm91bmQgb25lIHNsb3QgYmVoaW5kIGluIHRoZSBUZW5YT2JqZWN0J3MgW3ZhcnMgYXJyYXldKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YQmFzZU9iamVjdCt2YXJzKSwgc2F2aW5nIHRoZSBuZWVkIHRvIGVuY29kZSB0aGlzIHZhbHVlIG11bHRpcGxlIHRpbWVzLiAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiAxMCkiLAogICAgICAgICAgImRlZmF1bHQiIDogMTAKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAidGltZXN0YW1wIiA6IHsKICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICJwcmVmaXgiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlRlbXBsYXRlIHRpbWVzdGFtcCBwcmVmaXhcblxuU3BlY2lmaWVzIGEgcHJlZml4IGZvciBhbiBUZW5YVGVtcGxhdGUncyBzZXQgb2YgdmFyaWFibGUgYW5kIHN5bWJvbCB0b2tlbnMgZGVzY3JpYmluZyBhIHRpbWVzdGFtcCAoZS5nLiwgJHtERC9NTS9ZWSBISC1tbS1zc30pLiAoRGVmYXVsdDogKCkiLAogICAgICAgICAgImRlZmF1bHQiIDogIigiCiAgICAgICAgfSwKICAgICAgICAicG9zdGZpeCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiVGVtcGxhdGUgdGltZXN0YW1wIHBvc3RmaXhcblxuU3BlY2lmaWVzIGEgdmFsdWUgYXBwZW5kZWQgdG8gYW4gVGVuWFRlbXBsYXRlJ3MgYW5kIHNldCBvZiB2YXJpYWJsZSBhbmQgc3ltYm9sIHRva2VucyBkZXNjcmliaW5nIGEgdGltZXN0YW1wIChlLmcuLCAke0REL01NL1lZIEhILW1tLXNzfSkuIChEZWZhdWx0OiApKSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiAiKSIKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZQp9</template>

    ```yaml
    # 🔟❎ 'run' template file configuration
    
    # Load TenXTemplates .json files that define the structure/schema of TenXObjects.
    # To learn more see https://doc.log10x.com/run/template/
    
    # Set the 10x pipeline to 'run'
    tenx: run
    
    # =============================== Template ===================================
    
    template:
      # 'files' specifies GLOB pattern for finding JSON-encoded TenXTemplates.
      files:
        - $=path("data/templates/*.json")
        - $=path("data/sample/output/*.json")
    
      # 'cacheSize' controls the maximum total byte size of templates held
      #  in the in-memory cache vs. on disk. Set to 0 to disable pruning.
      cacheSize: $=parseBytes("10MB")
    
    # =============================== Variable ===================================
    
    var:
      # 'placeholder' specifies a character to use when encoding a TenXTemplate
      #  to signify the location of a runtime variable value.
      placeholder: "$"
    
      # 'maxRecurIndexes' controls the maximum number of variable values to reuse.
      maxRecurIndexes: 10
    
    # =============================== Timestamp ==================================
    
    timestamp:
      # 'prefix' specifies a prefix for a TenXTemplate's timestamp tokens.
      prefix: (
    
      # 'postfix' specifies a postfix for a TenXTemplate's timestamp tokens.
      postfix: )
    ```

??? tenx-transform "Transform"

    <a id="transform"></a>
    ### Transform {.hidden-heading}

    Configure  the [Transform](/run/transform "Transform log and trace events into well-defined TenXObjects") to transform log and trace events into well-defined TenXObjects.

    === ":material-stamper: Timestamp"

  
        #### timestamp {.hidden-heading}
        Configure  the [Timestamp parser](/run/transform/timestamp "Extract alphanumeric and epoch timestamp values from input events") to extract alphanumeric and epoch timestamp values from input events.  
  
        Below is the default configuration from: [timestamp/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/transform/timestamp/config.yaml "timestamp/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/transform/timestamp/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml23-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml23-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml23-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Timestamp parser Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml23-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/transform/timestamp/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/transform/timestamp/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/transform/timestamp/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/transform/timestamp/config.yaml">$TENX_CONFIG/run/transform/timestamp/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/transform/timestamp/config.yaml">./pipelines/run/transform/timestamp/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGltZXN0YW1wIiA6IHsKICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICJwYXR0ZXJucyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRGF0ZS10aW1lIGZvcm1hdHMgZm9yIHBhcnNpbmcgdGltZXN0YW1wcyBmcm9tIGlucHV0IGV2ZW50c1xuXG5MaXN0cyBkYXRlLXRpbWUgZm9ybWF0cyBpbiBbSmF2YSBzcGVjaWZpY2F0aW9uXShodHRwczovL2RvY3Mub3JhY2xlLmNvbS9qYXZhc2UvOC9kb2NzL2FwaS9qYXZhL3RpbWUvZm9ybWF0L0RhdGVUaW1lRm9ybWF0dGVyLmh0bWwpIGZvciBwYXJzaW5nIHRpbWVzdGFtcCBlcG9jaCB2YWx1ZXMgZnJvbSBpbnB1dCBldmVudHMuIChEZWZhdWx0OiBbXCJbY29uZmlnLnlhbWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9sb2ctMTB4L2NvbmZpZy90cmVlL21haW4vcGlwZWxpbmVzL3J1bi9jb25maWcvdHJhbnNmb3JtL3RpbWVzdGFtcC9jb25maWcueWFtbClcIl0pIiwKICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICB9LAogICAgICAgICAgImRlZmF1bHQiIDogWwogICAgICAgICAgICAiW2NvbmZpZy55YW1sXShodHRwczovL2dpdGh1Yi5jb20vbG9nLTEweC9jb25maWcvdHJlZS9tYWluL3BpcGVsaW5lcy9ydW4vY29uZmlnL3RyYW5zZm9ybS90aW1lc3RhbXAvY29uZmlnLnlhbWwpIgogICAgICAgICAgXQogICAgICAgIH0sCiAgICAgICAgInNlYXJjaERpcmVjdGlvbiIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiQ29udHJvbHMgdGhlIHRleHQgZGlyZWN0aW9uKHMpIGluIHdoaWNoIHRvIHNlYXJjaCBmb3IgdGltZXN0YW1wc1xuXG5Db250cm9scyB0aGUgZGlyZWN0aW9uKHMpIHRvIHNlYXJjaCBmb3IgdGltZXN0YW1wcyB3aXRoaW4gYW4gVGVuWE9iamVjdCdzIFt0ZXh0XShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEJhc2VPYmplY3QrdGV4dCkgZmllbGQuIFBvc3NpYmxlIHZhbHVlczogICAtICoqZnJvbVN0YXJ0Kio6IHNlYXJjaCBmb3IgW3RpbWVzdGFtcE1heFBlck9iamVjdF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vdHJhbnNmb3JtL3RpbWVzdGFtcC8jdGltZXN0YW1wbWF4cGVyb2JqZWN0KSBmcm9tIHRoZSBzdGFydCBvZiBbdGV4dF1odHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEJhc2VPYmplY3QrdGV4dCkgdG8gcmVzdHJpY3QgdGhlIHNlYXJjaCB0byBbc2VhcmNoTGVuZ3RoTGltaXRGcm9tU3RhcnRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL3RyYW5zZm9ybS90aW1lc3RhbXAvI3RpbWVzdGFtcHNlYXJjaGxlbmd0aGxpbWl0ZnJvbXN0YXJ0KSBjaGFyYWN0ZXJzICAgIC0gKipmcm9tRW5kKio6IHNlYXJjaCBiYWNrd2FyZCBmb3IgW3RpbWVzdGFtcE1heFBlck9iamVjdF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vdHJhbnNmb3JtL3RpbWVzdGFtcC8jdGltZXN0YW1wbWF4cGVyb2JqZWN0KSBmcm9tIHRoZSBlbmQgb2YgW3RleHRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YQmFzZU9iamVjdCt0ZXh0KSB0byBsaW1pdCB0aGUgc2VhcmNoIHRvIFtzZWFyY2hMZW5ndGhMaW1pdEZyb21FbmRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL3RyYW5zZm9ybS90aW1lc3RhbXAvI3RpbWVzdGFtcHNlYXJjaGxlbmd0aGxpbWl0ZnJvbWVuZCkgY2hhcmFjdGVycyAgICAtICoqZnJvbVN0YXJ0QW5kRW5kKiogc2VhcmNoIGZvciBbdGltZXN0YW1wTWF4UGVyT2JqZWN0XShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi90cmFuc2Zvcm0vdGltZXN0YW1wLyN0aW1lc3RhbXBtYXhwZXJvYmplY3QpIGZyb20gYm90aCB0aGUgc3RhcnQgYW5kIGVuZCBvZiBbdGV4dF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhCYXNlT2JqZWN0K3RleHQpIHRvIGxpbWl0IHRoZSBzZWFyY2ggdG8gW3NlYXJjaExlbmd0aExpbWl0RnJvbVN0YXJ0XShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi90cmFuc2Zvcm0vdGltZXN0YW1wLyN0aW1lc3RhbXBzZWFyY2hsZW5ndGhsaW1pdGZyb21zdGFydCkgYW5kICBbc2VhcmNoTGVuZ3RoTGltaXRGcm9tRW5kXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi90cmFuc2Zvcm0vdGltZXN0YW1wLyN0aW1lc3RhbXBzZWFyY2hsZW5ndGhsaW1pdGZyb21lbmQpIHJlc3BlY3RpdmVseSAgICAtICoqbm9uZSoqOiBkbyBub3QgcGFyc2UgdGltZXN0YW1wcyAoRGVmYXVsdDogZnJvbVN0YXJ0KSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiAiZnJvbVN0YXJ0IgogICAgICAgIH0sCiAgICAgICAgIm1heFBlck9iamVjdCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk1heGltdW0gbnVtYmVyIG9mIHRpbWVzdGFtcHMgcGVyIFRlblhPYmplY3RcblxuQ29udHJvbHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHRpbWVzdGFtcHMgdG8gYWRkIGludG8gYW4gVGVuWE9iamVjdCdzIFt0aW1lc3RhbXBdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YT2JqZWN0K3RpbWVzdGFtcCkgYXJyYXkuIFNldCB0byAwIGZvciB1bmxpbWl0ZWQuIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDApIiwKICAgICAgICAgICJkZWZhdWx0IiA6IDAKICAgICAgICB9LAogICAgICAgICJzZWFyY2hMZW5ndGhMaW1pdEZyb21TdGFydCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgdG8gc2NhbiBmb3IgdGltZXN0YW1wcyBmcm9tIGV2ZW50IHN0YXJ0XG5cbkxpbWl0cyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgdG8gc2VhcmNoIGZvciB0aW1lc3RhbXBzIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgb2JqZWN0J3MgW3RleHRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YQmFzZU9iamVjdCt0ZXh0KSAgZmllbGQuIFNldCAwIGZvciB1bmxpbWl0ZWQuIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDApIiwKICAgICAgICAgICJkZWZhdWx0IiA6IDAKICAgICAgICB9LAogICAgICAgICJzZWFyY2hMZW5ndGhMaW1pdEZyb21FbmQiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJNYXggbnVtYmVyIG9mIGNoYXJhY3RlcnMgdG8gc2NhbiBmb3IgdGltZXN0YW1wcyBmcm9tIGV2ZW50IGVuZFxuXG5MaW1pdHMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRvIHNlYXJjaCBmb3IgdGltZXN0YW1wcyBmcm9tIHRoZSBlbmQgb2YgdGhlIG9iamVjdCdzIFt0ZXh0XShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEJhc2VPYmplY3QrdGV4dCkgZmllbGQuIFNldCAwIGZvciB1bmxpbWl0ZWQuIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDApIiwKICAgICAgICAgICJkZWZhdWx0IiA6IDAKICAgICAgICB9LAogICAgICAgICJ6b25lIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJUaW1lem9uZSB0byB1c2Ugd2hlbiBmb3JtYXR0aW5nIHRpbWVzdGFtcCBVbml4IGVwb2NoIHZhbHVlc1xuXG5Db250cm9scyB0aGUgdGltZXpvbmUgdXNlZCB3aGVuIGZvcm1hdHRpbmcgdGltZXN0YW1wIGVwb2NoIHN0cmluZyB2YWx1ZXMuIFRoZSBbWm9uZUlkLm9mXShodHRwczovL2RvY3Mub3JhY2xlLmNvbS9qYXZhc2UvOC9kb2NzL2FwaS9qYXZhL3RpbWUvWm9uZUlkLmh0bWwjb2YtamF2YS5sYW5nLlN0cmluZy0pICBvYnRhaW5zIHRoZSB0aW1lem9uZSBmcm9tIHRoZSAnem9uZScgdmFsdWUuIChEZWZhdWx0OiBbaG9zdCBPUyB0aW1lem9uZV0oaHR0cHM6Ly9kb2NzLm9yYWNsZS5jb20vamF2YXNlLzgvZG9jcy9hcGkvamF2YS90aW1lL1pvbmVJZC5odG1sI3N5c3RlbURlZmF1bHQtLSkpIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICJbaG9zdCBPUyB0aW1lem9uZV0oaHR0cHM6Ly9kb2NzLm9yYWNsZS5jb20vamF2YXNlLzgvZG9jcy9hcGkvamF2YS90aW1lL1pvbmVJZC5odG1sI3N5c3RlbURlZmF1bHQtLSkiCiAgICAgICAgfSwKICAgICAgICAibGl0ZXJhbHMiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlRpbWVzdGFtcCBsaXRlcmFsc1xuXG5BbiBhcnJheSBvZiBzdHJpbmdzIGxpdGVyYWwgdmFsdWVzIHRvIHRyZWF0IGFzIHZhbGlkIHBhcnRzIG9mIHRpbWVzdGFtcCAoZS5nLiwgJ1onLCAnVCcsICdHTVQnKS4gKERlZmF1bHQ6IFtcIlRcIixcIlpcIl0pIiwKICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICB9LAogICAgICAgICAgImRlZmF1bHQiIDogWwogICAgICAgICAgICAiVCIsCiAgICAgICAgICAgICJaIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfQogICAgfQogIH0sCiAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlCn0=</template>

        ```yaml
        # 🔟❎ 'run' timestamp parser configuration
        
        # Identify unix/alphanumeric timestamp structures within TenXTemplates.
        # https://doc.log10x.com/run/transform/timestamp/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # ============================= Timestamp Options =============================
        
        timestamp:
         
          # 'maxPerObject' controls the max number of timestamps to add into an TenXObject's
          # 'timestamp' array. Set to 0 for unlimited.
          maxPerObject: 0
        
          # 'searchDirection' controls the direction(s) from with timestamps are searched for
          #  within the object's 'text' field. Possible values: 
        
          #  - fromStart: search for 'maxPerObject' from the start of 'text',  
          #    limiting search to 'searchLengthLimitFromStart' characters  
        
          #  - fromEnd: search backward for 'maxPerObject' from the end of 'text',
          #    limiting search to 'searchLengthLimitFromEnd' characters  
        
          #  - fromStartAndEnd: search for 'maxPerObject' from both the start and end of 'text'
          #    limiting search to 'searchLengthLimitFromStart' and 'searchLengthLimitFromEnd' respectively  
        
          #  - none: do not parse timestamps
        
          searchDirection: fromStartAndEnd
        
          # 'searchLengthLimitFromStart' limits the number of characters to search for
          #  timestamps from the beginning of the object's 'text' field. 0 for unlimited
          searchLengthLimitFromStart: 0
        
          # 'searchLengthLimitFromStart' limits the number of characters to search for
          #  timestamps from the end of the object's 'text' field. 0 for unlimited
          searchLengthLimitFromEnd: 0
        
          # 'zone' controls the timezone for formatting timestamp epoch
          #  values to string. The 'java.time.ZoneId.of(String zoneId)' 
          #  is used to obtain the timezone from the 'zone' value.
          #  If set to null, the host OS timezone is used. 
          zone: null
        
          # 'literals' contains an array of strings to treat as a part 
          #  of any timestamp candidate found when structuring an TenXObject.
          literals:
            - T
            - Z
            - I # Go INFO
            - E # Go ERROR
            - W # Go WARN
          
          # 'patterns' specifies an array of date-time formats to attempt when parsing timestamps from input events.
          #  Timestamp formats that appear frequently within an input stream can be 'bumped' higher within the list below.
        
          patterns:
          # Most common formats
          - "'I'MMdd HH:mm:ss.S"                       # Used in Kubernetes kube-apiserver logs with INFO prefix, 1-digit microsecond precision.
          - "'I'MMdd HH:mm:ss.SS"                      # Used in Kubernetes kube-apiserver logs with INFO prefix, 2-digit microsecond precision.
          - "'I'MMdd HH:mm:ss.SSS"                     # Used in Kubernetes kube-apiserver logs with INFO prefix, 3-digit microsecond precision.
          - "'I'MMdd HH:mm:ss.SSSS"                    # Used in Kubernetes kube-apiserver logs with INFO prefix, 4-digit microsecond precision.
          - "'I'MMdd HH:mm:ss.SSSSS"                   # Used in Kubernetes kube-apiserver logs with INFO prefix, 5-digit microsecond precision.
          - "'I'MMdd HH:mm:ss.SSSSSS"                  # Used in Kubernetes kube-apiserver logs with INFO prefix, 6-digit microsecond precision.
          - "'W'MMdd HH:mm:ss.S"                       # Used in Kubernetes kube-apiserver logs with WARNING prefix, 1-digit microsecond precision.
          - "'W'MMdd HH:mm:ss.SS"                      # Used in Kubernetes kube-apiserver logs with WARNING prefix, 2-digit microsecond precision.
          - "'W'MMdd HH:mm:ss.SSS"                     # Used in Kubernetes kube-apiserver logs with WARNING prefix, 3-digit microsecond precision.
          - "'W'MMdd HH:mm:ss.SSSS"                    # Used in Kubernetes kube-apiserver logs with WARNING prefix, 4-digit microsecond precision.
          - "'W'MMdd HH:mm:ss.SSSSS"                   # Used in Kubernetes kube-apiserver logs with WARNING prefix, 5-digit microsecond precision.
          - "'W'MMdd HH:mm:ss.SSSSSS"                  # Used in Kubernetes kube-apiserver logs with WARNING prefix, 6-digit microsecond precision.
          - "'E'MMdd HH:mm:ss.S"                       # Used in Kubernetes kube-apiserver logs with ERROR prefix, 1-digit microsecond precision.
          - "'E'MMdd HH:mm:ss.SS"                      # Used in Kubernetes kube-apiserver logs with ERROR prefix, 2-digit microsecond precision.
          - "'E'MMdd HH:mm:ss.SSS"                     # Used in Kubernetes kube-apiserver logs with ERROR prefix, 3-digit microsecond precision.
          - "'E'MMdd HH:mm:ss.SSSS"                    # Used in Kubernetes kube-apiserver logs with ERROR prefix, 4-digit microsecond precision.
          - "'E'MMdd HH:mm:ss.SSSSS"                   # Used in Kubernetes kube-apiserver logs with ERROR prefix, 5-digit microsecond precision.
          - "'E'MMdd HH:mm:ss.SSSSSS"                  # Used in Kubernetes kube-apiserver logs with ERROR prefix, 6-digit microsecond precision.
          - "'F'MMdd HH:mm:ss.S"                       # Used in Kubernetes kube-apiserver logs with FATAL prefix, 1-digit microsecond precision.
          - "'F'MMdd HH:mm:ss.SS"                      # Used in Kubernetes kube-apiserver logs with FATAL prefix, 2-digit microsecond precision.
          - "'F'MMdd HH:mm:ss.SSS"                     # Used in Kubernetes kube-apiserver logs with FATAL prefix, 3-digit microsecond precision.
          - "'F'MMdd HH:mm:ss.SSSS"                    # Used in Kubernetes kube-apiserver logs with FATAL prefix, 4-digit microsecond precision.
          - "'F'MMdd HH:mm:ss.SSSSS"                   # Used in Kubernetes kube-apiserver logs with FATAL prefix, 5-digit microsecond precision.
          - "'F'MMdd HH:mm:ss.SSSSSS"                  # Used in Kubernetes kube-apiserver logs with FATAL prefix, 6-digit microsecond precision.
          - "yyyy-MM-dd HH:mm:ss.SSSSSSZ"              # Used in macOS unified logs (log show), with microsecond precision and timezone offset (e.g., -0400).
          - "yyyy-MM-dd HH:mm:ss"                      # Widely used in Java applications, databases (e.g., MySQL, PostgreSQL), and application servers (e.g., Tomcat, JBoss).
          - "yyyy-MM-dd'T'HH:mm:ss.SSSZ"               # Common in web services, APIs, Java (with DateTimeFormatter.ISO_OFFSET_DATE_TIME), Python (with datetime.isoformat()), and systems requiring precise timestamps with timezone information.
          - "MMM dd HH:mm:ss"                          # Frequently seen in syslog, Unix-based systems, network devices (e.g., Cisco routers), and web servers (e.g., Apache, Nginx).
          - "MMM  d HH:mm:ss"                          # Classic syslog (RFC 3164) on days 1-9: the day is space-padded, e.g. "Jan  3 17:38:36".
          - "MMM d HH:mm:ss"                           # Same date without the padding (strftime %b %-d), e.g. "Nov 9 12:01:01" in Thunderbird-style system logs.
          - "dd/MMM/yyyy:HH:mm:ss Z"                   # Standard syslog format, used in firewalls (e.g., Cisco ASA, Palo Alto), network monitoring tools, and Unix-based systems.
          - "yyyy-MM-dd HH:mm:ss,SSS"                  # Common in Java logging frameworks like Log4j and Logback.
          - "yyyy-MM-dd'T'HH:mm:ss,SSS"                # Common in Java logging with ISO 8601 date-time, comma-separated milliseconds.
          - "MM/dd/yyyy HH:mm:ss"                      # Used in Windows event logs, .NET applications, and U.S.-based systems.
          - "EEE MMM dd HH:mm:ss yyyy"                 # Human-readable format used in various logs, including some web servers and application logs.
          - "EEE MMM dd HH:mm:ss zzz yyyy"             # java.util.Date.toString() and the Unix date command, e.g. "Thu Jan 15 10:00:01 UTC 2026". Common in Java application logs and shell-script output.
          - "yyyy-MM-dd'T'HH:mm:ss"                    # Simplified ISO 8601 format, used in many modern applications and frameworks.
          - "HH:mm:ss"                                 # Time-only format, used when the date is implied or provided separately, common in embedded systems and some programming languages.
          - "yyyyMMdd HH:mm:ss"                        # Compact format used in some legacy systems and batch processing logs.
          - "yyyyMMdd-H:m:s:SSS"                       # Compact date, hyphen, unpadded time, colon before the milliseconds, e.g. "20171223-22:15:29:606" or "20171224-0:0:0:234". Android HealthApp and similar mobile logs.
          - "yyyyMMdd-H:m:s:SS"                        # Same with two fraction digits, e.g. "20171223-22:30:24:28".
          - "yyyyMMdd-H:m:s:S"                         # Same with one fraction digit.
          - "MM.dd HH:mm:ss"                           # Month.day without a year, e.g. "10.30 16:49:06". Proxifier and other Windows utility logs.
          - "MMM dd, yyyy h:mm:ss a"                   # Human-readable format with 12-hour clock, used in application logs and some U.S.-based systems.
          - "MMM dd, yyyy hh:mm:ss a"                  # Human-readable format with 12-hour clock (padded hour), used in application logs and some U.S.-based systems.
          # Common formats with slight variations
          - "yyyy-MM-dd HH:mm:ss.SSS"                  # Extended precision format used in Java applications and databases requiring millisecond accuracy.
          - "dd-MMM-yyyy HH:mm:ss.SSS"                 # Common in Java logging frameworks (e.g., Log4j, SLF4J) and application logs requiring human-readable dates with millisecond precision.
          - "yyyy-MM-dd'T'HH:mm:ss.S'Z'"               # Microsecond precision ISO 8601 format, 1-digit precision.
          - "yyyy-MM-dd'T'HH:mm:ss.SS'Z'"              # Microsecond precision ISO 8601 format, 2-digit precision.
          - "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"             # Microsecond precision ISO 8601 format, 3-digit precision.
          - "yyyy-MM-dd'T'HH:mm:ss.SSSS'Z'"            # Microsecond precision ISO 8601 format, 4-digit precision.
          - "yyyy-MM-dd'T'HH:mm:ss.SSSSS'Z'"           # Microsecond precision ISO 8601 format, 5-digit precision.
          - "yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z'"          # Microsecond precision ISO 8601 format, 6-digit precision.
          - "yyyy-MM-dd'T'HH:mm:ss.S'Z'"               # Nanosecond precision ISO 8601 format, 1-digit precision.
          - "yyyy-MM-dd'T'HH:mm:ss.SS'Z'"              # Nanosecond precision ISO 8601 format, 2-digit precision.
          - "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"             # Nanosecond precision ISO 8601 format, 3-digit precision.
          - "yyyy-MM-dd'T'HH:mm:ss.SSSS'Z'"            # Nanosecond precision ISO 8601 format, 4-digit precision.
          - "yyyy-MM-dd'T'HH:mm:ss.SSSSS'Z'"           # Nanosecond precision ISO 8601 format, 5-digit precision.
          - "yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z'"          # Nanosecond precision ISO 8601 format, 6-digit precision.
          - "yyyy-MM-dd'T'HH:mm:ss.SSSSSSS'Z'"         # Nanosecond precision ISO 8601 format, 7-digit precision.
          - "yyyy-MM-dd'T'HH:mm:ss.SSSSSSSS'Z'"        # Nanosecond precision ISO 8601 format, 8-digit precision.
          - "yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS'Z'"       # Nanosecond precision ISO 8601 format, 9-digit precision.
          - "yyyy-MM-dd'T'HH:mm:ssZZZZZ"               # ISO 8601 with timezone offset, used in systems where timezone information is critical.
          - "yyyy-MM-dd HH:mm:ss.SSSZZZZZ"             # Similar to above but without the 'T' separator, used in database logs and application servers.
          - "yyyy-MM-dd HH:mm:ss.S"                    # Microsecond precision format, 1-digit precision.
          - "yyyy-MM-dd HH:mm:ss.SS"                   # Microsecond precision format, 2-digit precision.
          - "yyyy-MM-dd HH:mm:ss.SSS"                  # Microsecond precision format, 3-digit precision.
          - "yyyy-MM-dd HH:mm:ss.SSSS"                 # Microsecond precision format, 4-digit precision.
          - "yyyy-MM-dd HH:mm:ss.SSSSS"                # Microsecond precision format, 5-digit precision.
          - "yyyy-MM-dd HH:mm:ss.SSSSSS"               # Microsecond precision format, 6-digit precision.
          - "MM/dd/yyyy*HH:mm:ss*SSS"                  # Used in some U.S.-based systems, particularly in legacy applications or specific logging frameworks.
          - "M/d/yyyy h:mm:ss a:SSS"                   # Common in systems using 12-hour time format, such as some Windows applications or older logging systems.
          - "M/d/yyyy hh:mm:ss a:SSS"                  # Common in systems using 12-hour time format with milliseconds and padded hour, such as some Windows applications.
          - "M/dd/yyyy hh:mm:ss a"                     # Similar to above, used in systems where millisecond precision is not needed.
          - "yyyy-MM-dd'T'HH:mm:ss.SSSX"               # ISO 8601 with basic timezone offset format, used in systems that require standardized timestamps.
          - "yyyy-MM-dd'T'HH:mm:ss.SSSz"               # ISO 8601 with timezone name, used in applications that need to display timezone information.
          - "yyyy-MM-dd'T'HH:mm:ss'Z'"                 # ISO 8601 format assuming UTC, used in systems where all times are in UTC.
          - "yy/MM/dd HH:mm:ss"                        # Two-digit year format, used in compact logs or older systems.
          - "MMM dd HH:mm:ss ZZZZ"                     # Used in some Unix-based systems and web servers, includes timezone offset.
          - "HH:mm:ss,SSS"                             # Time-only format with milliseconds, used in performance logs or systems where date is provided separately.
          - "yyyy-MM-dd*HH:mm:ss"                      # Used in some application logs where the separator is a space or asterisk.
          - "yyyy MMM dd HH:mm:ss.SSS"                 # Human-readable format with milliseconds, used in some application logs.
          - "dd/MMM/yyyy HH:mm:ss"                     # Used in European systems and some web applications.
          - "yyyy-MM-dd'T'HH:mm:ss.SSS''Z''"           # ISO 8601 with milliseconds and literal 'Z', used in systems where 'Z' is explicitly included.
          - "MMM dd yyyy HH:mm:ss"                     # Human-readable format, used in various logs.
          - "yyyy-MM-dd HH:mm:ss ZZZZ"                 # Format with timezone offset, used in systems requiring timezone information.
          - "yyyy-MM-dd HH:mm:ssZZZZZ"                 # Similar to above, used in application logs.
          - "dd MMM yyyy HH:mm:ss"                     # European format, used in some web applications and databases.
          - "MMdd_HH:mm:ss"                            # Compact format without separators, used in file names or space-constrained logs.
          - "yyyy-MM-dd HH:mm:ss,SSSZZZZZ"             # Java logging format with timezone offset.
          - "yyyyMMdd HH:mm:ss.SSS"                    # Compact format with milliseconds, used in some legacy systems.
          - "yyyy/MM/dd HH:mm:ss"                      # Format used in some Asian systems, particularly in Japan.
          - "dd/MM/yyyy HH:mm:ss"                      # Common in European systems, including some web applications and databases.
          - "MM-dd-yyyy HH:mm:ss"                      # U.S. format variant, used in some older systems.
          - "yyyyMMddHHmmss"                           # Compact format for file names or database timestamps, used in systems where space is a concern.
          - "EEE, dd MMM yyyy HH:mm:ss zzz"            # RFC 1123 format, used in HTTP headers, web servers, and email systems.
        ```

    === ":material-equal: Fields"

  
        #### fields {.hidden-heading}
        Configure  the [Field parser](/run/transform/fields "Scan TenXTemplates for JSON and KV fields") to scan TenXTemplates for JSON and KV fields.  
  
        Below is the default configuration from: [fields/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/transform/fields/config.yaml "fields/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/transform/fields/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml24-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml24-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml24-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Field parser Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml24-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/transform/fields/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/transform/fields/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/transform/fields/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/transform/fields/config.yaml">$TENX_CONFIG/run/transform/fields/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/transform/fields/config.yaml">./pipelines/run/transform/fields/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAiZmllbGQiIDogewogICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgImV4dHJhY3QiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiU2NhbiBUZW5YVGVtcGxhdGUgZm9yIG5lc3RlZCBKU09OIG9iamVjdHMgb3Iga2V5LXZhbHVlIGxpc3RzXG5cbkNvbnRyb2xzIHdoZXRoZXIgdG8gc2NhbiBUZW5YVGVtcGxhdGVzIGZvciBKU09OIG9iamVjdHMgb3Iga2V5LXZhbHVlIGxpc3RzIChlLmcuLCBge1wicHJpY2VcIjogMTB9YCBvciBgcHJpY2U9MTBgKS4gVGVuWE9iamVjdHMgaW5zdGFuY2VzIG9mIHRoaXMgdGVtcGxhdGUgd2lsbCBwcm92aWRlIGFjY2VzcyB0byB0aGVzZSBmaWVsZHMgYXMgbmFtZWQgbWVtYmVycyAoZS5nLiwgYHRoaXMucHJpY2VgKS4gSWYgYSBmaWVsZCBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlIGluIFt0ZXh0XShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEJhc2VPYmplY3QrdGV4dCkgaXQgaXMgYWNjZXNzaWJsZSBhcyBhbiBhcnJheSAoZS5nLiwgYHRoaXMucHJpY2VbMV1gKS4gKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IHRydWUpIiwKICAgICAgICAgICJkZWZhdWx0IiA6IHRydWUKICAgICAgICB9LAogICAgICAgICJuYW1lQnJlYWtzIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJLViBmaWVsZCBuYW1lIHRlcm1pbmF0b3IgY2hhcnNcblxuQ29udHJvbHMgd2hpY2ggJ3RleHQnIGNoYXJhY3RlcnMgbGVmdCBvZiBhIGNhbmRpZGF0ZSB0b2tlbiBmb3IgYmVpbmcgYSAna2V5JyBpbiBhIEtWIGZpZWxkIGZvcm1hdGlvbiBzaG91bGQgc2VydmUgYXMgYSB0ZXJtaW5hdG9yIGZvciB0aGUgc2VhcmNoLiAgIEZvciBleGFtcGxlLCBmb3IgYW4gVGVuWE9iamVjdCB3aG9zZSBbdGV4dF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhCYXNlT2JqZWN0K3RleHQpIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgZW50cnkgJyx0eF9yZXN1bHQ9T0snLCB0aGUgZGVzaXJlZCBrZXkgc2hvdWxkIGJlICd0eF9yZXN1bHQnLCBhbmQgc28gdGhlIG5hbWUgdGVybWluYXRvciBjaGFyYWN0ZXIgc2hvdWxkIGJlICcsJyB2cy4gJ18nIChpbiB3aGljaCBjYXNlIHRoZSBrZXkgd291bGQgaGF2ZSBiZWVuIG5hbWVkICdyZXN1bHQnKS4gKERlZmF1bHQ6ICwgL1xce30uKClbXSkiLAogICAgICAgICAgImRlZmF1bHQiIDogIiwgL1xce30uKClbXSIKICAgICAgICB9LAogICAgICAgICJ2YWx1ZUJyZWFrcyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiS1YgZmllbGQgdmFsdWUgdGVybWluYXRvciBjaGFyc1xuXG5Db250cm9scyB3aGljaCBjaGFyYWN0ZXJzIGZvdW5kIHRvIHRoZSByaWdodCBvZiBhIHRva2VuIHdob3NlIGlzIGEgY2FuZGlkYXRlIGZvciBiZWluZyBhICd2YWx1ZScgaW4gYSBLViBmaWVsZCBmb3JtYXRpb24gc2hvdWxkIHNlcnZlICBhcyBhIHRlcm1pbmF0b3IgZm9yIHRoZSBzZWFyY2guICAgRm9yIGV4YW1wbGUsIGZvciBhbiBvYmplY3Qgd2hvc2UgW3RleHRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YQmFzZU9iamVjdCt0ZXh0KSBmaWVsZCBjb250YWlucyB0aGUgZm9sbG93aW5nIGVudHJ5OiAnc3RhdHVzPVJFU1VMVF9TVUNDRVNTJyB0aGUgZGVzaXJlZCBLViB2YWx1ZSAgc2hvdWxkIGJlICdSRVNVTFRfU1VDQ0VTUycsIGFuZCBhcyBzdWNoIHRoZSB2YWx1ZSB0ZXJtaW5hdG9yIGNoYXJhY3RlciAgc2hvdWxkIGJlICcsJyB2cy4gJ18nIChpbiB3aGljaCBjYXNlIHRoZSB2YWx1ZSB3b3VsZCBiZSAnUkVTVUxUJykuIChEZWZhdWx0OiAvXFx7fSgpW10pIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICIvXFx7fSgpW10iCiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==</template>

        ```yaml
        # 🔟❎ 'run' TenXTemplate field extract configuration
        
        # Configure how to extract JSON objects and KV structures from TenXTemplates.
        # To learn more see https://doc.log10x.com/run/transform/fields/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Extract Options =============================
        
        field:
        
          # 'extract' controls whether to scan TenXTemplate for  JSON
          #  objects or key-value lists (e.g., 'X=Y'). 
          extract: true
        
          # 'nameBreaks' controls which characters found to the left of a token
          #  whose is a candidate for being a 'key' in a KV field formation should serve 
          #  as a terminator for the search. For example, for an object whose 'text' field
          #  contains the following entry ',tx_result=OK' the desired key name should be 'tx_result'
          #  and as such, the name terminator character should be ',' vs. '_' (in which case
          #  the key would have been named 'result').
          nameBreaks: ', /\{}.()[]'
        
          # 'valueBreaks' controls which characters found to the right of a token
          #  whose is a candidate for being a 'value' in a KV field formation should serve 
          #  as a terminator for the search. For example, for an object whose 'text' field
          #  contains the following entry: 'status=RESULT_SUCCESS' the desired KV value 
          #  should be 'RESULT_SUCCESS', and as such, the value terminator character 
          #  should be ',' vs. '_' (in which case the value would be 'RESULT').
          valueBreaks: ', /\{}()[]'
        ```

    === ":material-origin: Symbol"

  
        #### symbol {.hidden-heading}
        Configure  the [Origin selector](/run/transform/symbol "Select the source code/binary executable origin of TenXTemplate symbol values") to select the source code/binary executable origin of TenXTemplate symbol values.  
  
        Below is the default configuration from: [symbol/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/transform/symbol/config.yaml "symbol/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/transform/symbol/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml25-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml25-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml25-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Origin selector Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml25-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/transform/symbol/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/transform/symbol/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/transform/symbol/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/transform/symbol/config.yaml">$TENX_CONFIG/run/transform/symbol/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/transform/symbol/config.yaml">./pipelines/run/transform/symbol/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAic3ltYm9sIiA6IHsKICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICJzZXF1ZW5jZVJlc2VydmVkIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIHRlcm1zIHRvIGlnbm9yZSB3aGVuIHNjYW5uaW5nIHN5bWJvbCB0b2tlbnNcblxuRGVmaW5lcyBhIGxpc3Qgb2YgdGVybXMgdGhhdCB0byBpZ25vcmUgd2hlbiBzZWFyY2hpbmcgZm9yIHRoZSBzeW1ib2wgdG9rZW5zIGNvbnN0aXR1dGluZyBhbiBUZW5YVGVtcGxhdGUncyAnbWVzc2FnZScgcG9ydGlvbiAoaS5lLiwgdGhlIFtzeW1ib2xdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL3RyYW5zZm9ybS9zdHJ1Y3R1cmUvI3N5bWJvbHMpIHRva2VucyBvZiB0aGUgb3JpZ2luIHJhbmtlZCBoaWdoZXN0IGJ5IGNvdmVyYWdlLCBtZWFuaW5nIHRoZSBjb3VudCBvZiBkaXN0aW5jdCBsaWJyYXJ5LWtub3duIHRva2VucyBpdCBleHBsYWluczsgc3BhbiBsZW5ndGggaXMgdGhlIGxhc3QgdGllYnJlYWspLiBGb3IgZXhhbXBsZSwgZm9yIGFuIFRlblhPYmplY3Qgd2hvc2UgdGV4dCBjb250YWluczogJ2Nvbm5lY3Qgc3VjY2VzcyA9IHRydWUnLCB0aGUgdmFsdWUgJ3RydWUnIHdpbGwgbm90IGJlIGNvbnNpZGVyZWQgYSBwYXJ0IG9mIHRoZSBpbnN0YW5jZSdzIG1lc3NhZ2UsIGFzIGl0IGlzIG1vc3RseSBsaWtlbHkgdGhlIHJlc3VsdCBvZiBhIHZhcmlhYmxlIGJvb2xlYW4gc3RhdGUuIFRvIGxlYXJuIG1vcmUgc2VlIFtzeW1ib2xTZXF1ZW5jZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhPYmplY3Qrc3ltYm9sU2VxdWVuY2UpLiAoRGVmYXVsdDogW1wibnVsbFwiLFwibmlsXCIsXCJ0cnVlXCIsXCJmYWxzZVwiXSkiLAogICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgIH0sCiAgICAgICAgICAiZGVmYXVsdCIgOiBbCiAgICAgICAgICAgICJudWxsIiwKICAgICAgICAgICAgIm5pbCIsCiAgICAgICAgICAgICJ0cnVlIiwKICAgICAgICAgICAgImZhbHNlIgogICAgICAgICAgXQogICAgICAgIH0sCiAgICAgICAgIm1heE9yaWdpbnMiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJNYXggbnVtYmVyIG9mIHNvdXJjZS9iaW5hcnkgb3JpZ2lucyB0byBsaXN0IHBlciBzeW1ib2xcblxuQ29udHJvbHMgdGhlIG51bWJlciBvZiBzb3VyY2UgY29kZS9iaW5hcnkgb3JpZ2lucyB0byBsaXN0IHBlciBzeW1ib2wgdG9rZW4gc2VxdWVuY2UuIEFzIGEgc2VyaWVzIG9mIHRva2VucyB3aXRoaW4gIGEgZ2l2ZW4gdGVtcGxhdGUgKGUuZy4sICdFUlJPUicsICdjb3VsZCBub3QgY29ubmVjdCB0byBcInt9JykgbWF5IGFwcGVhciAgaW4gbXVsdGlwbGUgc291cmNlL2JpbmFyeSBmaWxlcyB3aXRoaW4gdGhlIHBpcGVsaW5lJ3Mgc3ltYm9sIGZpbGVzLCB0aGUgc29ydGluZyBhbGdvcml0aG0gc2VsZWN0cyBbbWF4U3ltYm9sT3JpZ2luc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vdHJhbnNmb3JtL3N5bWJvbC8jc3ltYm9sbWF4b3JpZ2lucykgZm9yIGNvbXBhcmlzb24uIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDY0KSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiA2NAogICAgICAgIH0sCiAgICAgICAgImRlYnVnIiA6IHsKICAgICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICAgICAib3JpZ2lucyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBvZiBzb3VyY2Ugc2Nhbm5lZCBmaWxlIG5hbWVzIGZvciB3aGljaCB0byBsb2cgaW5mb3JtYXRpb25cblxuU3BlY2lmaWVzIGEgbGlzdCBvZiBpbnB1dCBmaWxlIG5hbWVzIHdpdGhpbiB0aGUgbG9hZGVkIHN5bWJvbCBsaWJyYXJ5IChlLmcuLCAnbXkuc2NhbGEnLCAnZm9vLmphdmEnKSBmb3Igd2hpY2ggdG8gbG9nIGluZm9ybWF0aW9uIG9uIGlmL2hvdyB0aGV5IHBhcnRpY2lwYXRlIGluIHNlbGVjdGluZyB0aGUgb3JpZ2luIG9mIGEgdGFyZ2V0IFRlblhUZW1wbGF0ZSBzeW1ib2wgc2VxdWVuY2UuIFRoaXMgb3B0aW9uIGhlbHBzIGRlYnVnIGhvdyB0aGUgW3N5bWJvbFNlcXVlbmNlXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWE9iamVjdCtzeW1ib2xTZXF1ZW5jZSkgZnVuY3Rpb24gc2VsZWN0cyAgb3JpZ2luIHZhbHVlcyBmb3IgYSB0YXJnZXQgVGVuWFRlbXBsYXRlIHN5bWJvbCBzZXF1ZW5jZS4gIFNwZWNpZnkgJyonIGZvciBhbGwgaW5wdXQgZmlsZXMuIiwKICAgICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJzeW1ib2xzIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIFRlblhUZW1wbGF0ZSBzeW1ib2wgdmFsdWVzIGZvciB3aGljaCB0byBsb2cgaW5mb3JtYXRpb25cblxuTGlzdCBvZiBzeW1ib2wgdmFsdWVzIHN1Y2ggYXMgY2xhc3MgYW5kIG1ldGhvZCBuYW1lcyhlLmcuLCAnTXlDbGFzcycsICdmb28nKSBmb3Igd2hpY2ggdG8gbG9nIGluZm9ybWF0aW9uIG9uIGhvdyB0aGVpciBvcmlnaW4gaW5mb3JtYXRpb24gaXMgc2VsZWN0ZWQuIFRoaXMgb3B0aW9uIGhlbHBzIGRlYnVnIGhvdyB0aGUgW3N5bWJvbFNlcXVlbmNlXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWE9iamVjdCtzeW1ib2xTZXF1ZW5jZSkgZnVuY3Rpb24gc2VsZWN0cyAgb3JpZ2luIHZhbHVlcyBmb3IgYSB0YXJnZXQgVGVuWFRlbXBsYXRlIHN5bWJvbCBzZXF1ZW5jZS4gIFNwZWNpZnkgJyonIGZvciBhbGwgc3ltYm9scy4iLAogICAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImxvZ2dlck5hbWUiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRGVidWcgbG9nZ2VyIG5hbWVcblxuQ29udHJvbHMgdGhlIG5hbWUgb2YgdGhlIGxvZzRqIGxvZ2dlciB1c2VkIGJ5IFtkZWJ1Z09yaWdpbnNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL3RyYW5zZm9ybS9zeW1ib2wvI3N5bWJvbGRlYnVnb3JpZ2lucykgYW5kIFtkZWJ1Z1N5bWJvbHNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL3RyYW5zZm9ybS9zeW1ib2wvI3N5bWJvbGRlYnVnc3ltYm9scykuIChEZWZhdWx0OiBbY29uc29sZU91dF0oaHR0cHM6Ly9naXRodWIuY29tL2xvZy0xMHgvY29uZmlnL2Jsb2IvbWFpbi9sb2c0ajIueWFtbCNMNjYpKSIsCiAgICAgICAgICAgICAgImRlZmF1bHQiIDogIltjb25zb2xlT3V0XShodHRwczovL2dpdGh1Yi5jb20vbG9nLTEweC9jb25maWcvYmxvYi9tYWluL2xvZzRqMi55YW1sI0w2NikiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZQp9</template>

        ```yaml
        # 🔟❎ 'run' symbol origin configuration
        
        # Identify the origin of symbol values within TenXTemplates.
        # To learn more see https://doc.log10x.com/run/transform/symbol/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Origin Options ==============================
        
        symbol:
        
          # 'maxOrigins' controls the number of source/binary origins to list 
          #  per symbol token sequence. As a series of tokens within 
          #  a target TenXTemplate (e.g., 'ERROR', 'could not connect to "{}') may appear 
          #  in multiple source/binary files within the pipeline's loaded library.
          #  The sorting algorithm configured below is used to select the 'maxSymbolOrigins' 
          #  topmost entries to list.
          maxOrigins: 64
          
          # 'sequenceReserved' defines a list of terms to ignore when searching
          #  for the symbol tokens that constitute an TenXTemplate's 'message' portion.
          #  For example, for an event whose text contains: 'connect success = true',
          #  the value 'true' will not be considered a part of the event's message,
          #  as the 'true' value is mostly likely the result of a variable boolean state.
          #  For more information, see: https://doc.log10x.com/api/js/#TenXObject+symbolSequence
          sequenceReserved:
            # literals
            - "null"
            - "nil"
            - "true"
            - "false"
            # stopwords (articles, conjunctions, prepositions)
            - "a"
            - "an"
            - "the"
            - "to"
            - "of"
            - "in"
            - "on"
            - "at"
            - "by"
            - "for"
            - "from"
            - "with"
            - "and"
            - "or"
            - "as"
            - "is"
            # generic log words
            - "log"
            - "logger"
            - "logs"
            - "http"
            - "https"
            # severity levels, uppercase
            - TRACE
            - DEBUG
            - INFO
            - NOTICE
            - WARN
            - WARNING
            - ERROR
            - ERR
            - CRITICAL
            - CRIT
            - ALERT
            - EMERGENCY
            - EMERG
            - FATAL
            - PANIC
            # severity levels, lowercase (engine matching is case-sensitive).
            # Note. The token "error" is intentionally NOT reserved here.
            # Verification against 3254 demo events (2026-05-20) found 1280
            # signal hits where the "error" key carries the actual message
            # body the pattern groups; reserving it would collapse distinct
            # error patterns into one.
            # Note. The token "emergency" is also intentionally NOT reserved
            #, sample showed only prose hits, no envelope use observed.
            - "trace"
            - "debug"
            - "info"
            - "notice"
            - "warn"
            - "warning"
            - "err"
            - "critical"
            - "crit"
            - "alert"
            - "fatal"
            - "panic"
            # severity-equivalent envelope keys
            - "level"
            - "levelname"
            - "severity"
            # envelope time keys
            - "time"
            - "timestamp"
            - "ts"
            - "msg"
            - "message"
            # OpenTelemetry / collector envelope (these tokens leak from the
            # otelcol's Go-package logging into pattern names)
            - "otel"
            - "otelcol"
            - "opentelemetry"
            - "collector"
            - "contrib"
            - "processor"
            - "processors"
            - "receiver"
            - "receivers"
            - "exporter"
            - "exporters"
            - "pipeline"
            - "pipelines"
            # structured / envelope keys (singular + plural, engine matcher
            # is exact, no stem; both forms appear in real otel logs).
            # Note: "trace" is already reserved above under lowercase severity.
            - "service"
            - "services"
            - "instance"
            - "instances"
            - "component"
            - "components"
            - "signal"
            - "signals"
            - "resource"
            - "resources"
            - "scope"
            - "scopes"
            - "attribute"
            - "attributes"
            - "traces"
            - "span"
            - "spans"
            - "flag"
            - "flags"
            - "context"
            - "contexts"
            - "baggage"
            # K8s audit / Kubernetes API envelope (verified zero signal in
            # the 2026-05-20 sample, every occurrence was a JSON metadata
            # key or audit field)
            - "metadata"
            - "namespace"
            - "verb"
            - "uid"
            - "identity"
            - "protocol"
            - "priority"
            - "encoding"
            - "headers"
            - "duration"
            # HTTP / request envelope (verified safe, appear only as
            # klog field markers or JSON keys, not as message content)
            - "path"
            - "status"
            # generic identity keys (very common envelope tokens in JSON logs)
            - "id"
            - "name"
            - "kind"
            - "version"
            - "type"
            # source-location envelope (Go / Java / Python loggers leak these)
            - "caller"
            - "func"
            - "function"
            - "file"
            - "line"
            - "module"
            - "package"
            - "class"
            - "method"
            - "stack"
            - "stacktrace"
            # process / runtime context.
            # Note. The token "host" is intentionally NOT reserved, 1018 of
            # 1024 occurrences in the verification corpus were the content
            # phrase "no such host" inside DNS-failure messages; reserving
            # it would collapse every "no such host" pattern into one.
            # Note. The token "app" is intentionally NOT reserved, 42 of 44
            # occurrences were the Flask logger-name discriminator in
            # "INFO in app:" lines; reserving it would collapse Python-app
            # logger structure.
            - "pid"
            - "tid"
            - "process"
            - "thread"
            - "hostname"
            - "application"
            # package-qualifier prefixes (Go / Java loggers embed these in
            # source-path tokens like `com.foo.bar.MyLogger`)
            - "com"
            - "org"
            - "io"
            - "net"
            # tokenizer artifacts
            - "t"
        
          # ----------------------------- Debug Options -------------------------------
          
          debug:
         
            # 'symbol' debugging allows for verbose printing of the selection process
            #  for symbol tokens from the pipeline's 10x symbol files used to produce the
            #  results of 10x reflection functions.
            #  For more information, see: https://doc.log10x.com/api/js/#TenXObject+symbol
            
        
           # 'loggerName' controls the name of the log4j logger used by origins and symbols below
            loggerName: "symbolDebugger"
        
            # 'origins' outputs information about the origin selection process for an TenXTemplate symbol.
            #  For example, setting 'units' to 'foo.js' will output information about if/how it 
            #  was selected as the origin of TenXTemplate symbols.
            #  In other words, if a symbol (e.g., 'MyClass') has 'foo.java' as the source file
            #  from which it originated, adding 'foo.js' to 'units' will emit information
            #  about the selection process.
            #  Specifying '*' will emit information for all source /binary files that have
            #  been selected as the origin of any TenXTemplate objects within the pipeline.
            origins: [
            #  '*'
            ]
        
            # 'symbols' logs the origin selection process for symbol tokens within an TenXTemplate.
            #  For example, set 'symbols' to 'Could not connect to' to log how the 10x JavaScript 'symbolSequence' 
            #  determines the origin source code/binary file within the pipeline's symbol library. 
        
            #  Specifying '*' will emit information for all source code /binary files that have
            #  been selected as the origin of any TenXTemplate objects within the pipeline.
            symbols: [
            #  '*'
            ]
        ```

    === ":material-select-group: Group"

  
        #### group {.hidden-heading}
        Configure  the [Group sequencer](/run/transform/group "Group and sequence TenXObjects") to group and sequence TenXObjects.  
  
        Below is the default configuration from: [group/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/transform/group/config.yaml "group/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/transform/group/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml26-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml26-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml26-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Group sequencer Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml26-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/transform/group/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/transform/group/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/transform/group/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/transform/group/config.yaml">$TENX_CONFIG/run/transform/group/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/transform/group/config.yaml">./pipelines/run/transform/group/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAiZ3JvdXAiIDogewogICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgIm1heFNpemUiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJNYXggbnVtYmVyIG9mIG9iamVjdHMgdG8gcGxhY2UgaW4gYSBncm91cFxuXG5TZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBvYmplY3RzIHRvIHBsYWNlIHVuZGVyIG9uZSBncm91cCBiZWZvcmUgc3RhcnRpbmcgYSBuZXcgZ3JvdXAuIFNldCAwIHRvIHVubGltaXRlZC4gKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogMjAwMDApIiwKICAgICAgICAgICJkZWZhdWx0IiA6IDIwMDAwCiAgICAgICAgfSwKICAgICAgICAiZmx1c2hUaW1lb3V0IiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJJbnRlcnZhbCB0byBmbHVzaCBhIHBlbmRpbmcgVGVuWE9iamVjdHMgZ3JvdXBcblxuU2V0cyB0aGUgbWF4IGludGVydmFsIGFmdGVyIHdoaWNoIHRvIGZsdXNoIHBlbmRpbmcgVGVuWE9iamVjdHMgaW50byB0aGUgcGlwZWxpbmUuIFRoaXMgb3B0aW9uIHByb3ZpZGVzIGEgdGltZW91dCBwZXJpb2QgdG8gZmx1c2ggdGhlIGN1cnJlbnQgZ3JvdXAgaGVhZCBhbmQgY29tcG9zZWQgIFRlblhPYmplY3RzIGludG8gdGhlIHBpcGVsaW5lIGZvciBhZ2dyZWdhdGlvbiwgZmlsdGVyaW5nLCBhbmQgZW5jb2RpbmcgdG8gb3V0cHV0LiAoRGVmYXVsdDogNXNlYykiLAogICAgICAgICAgImRlZmF1bHQiIDogIjVzZWMiCiAgICAgICAgfSwKICAgICAgICAiZXhwcmVzc2lvbnMiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkphdmFTY3JpcHQgZXhwcmVzc2lvbnMgVGVuWE9iamVjdCBpbnN0YW5jZS9ncm91cCBtdXN0IGV2YWx1YXRlIGFzIHRydXRoeSBhZ2FpbnN0IHRvIGJlIHNldCBhcyBncm91cCBoZWFkXG5cblNwZWNpZmllcyBhIGxpc3Qgb2YgSmF2YVNjcmlwdCBleHByZXNzaW9ucyB0aGF0IG11c3QgYWxsIGV2YWx1YXRlIGFzIHRydXRoeSBmb3IgdGhlIHRhcmdldCBUZW5YT2JqZWN0IHRvIGJlIGNsYXNzaWZpZWQgYXMgW2dyb3VwIGhlYWRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL3RyYW5zZm9ybS9ncm91cC8jZ3JvdXAtaGVhZHMpLiAgRm9yIGV4YW1wbGUsIHRoZSBbZ3JvdXAgaW5pdGlhbGl6ZXJdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2luaXRpYWxpemUvZ3JvdXAvKSBtb2R1bGUgY2FsY3VsYXRlcyBhIFtUZW54VGVtcGxhdGUgdmFyaWFibGVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YVGVtcGxhdGUuc2V0KSB0byBkZXRlcm1pbmUgd2hldGhlciBpbnN0YW5jZXMgb2YgYSB0YXJnZXQgYFRlblhUZW1wbGF0ZWAgcmVwcmVzZW50IGdyb3VwIGhlYWRzIGJhc2VkIG9uIGEgbnVtYmVyIG9mIGhldXJpc3RpYyBpbmRpY2F0b3JzIGFuZCBzZXRzIHRoZSBjYWxjdWxhdGVkIGZpZWxkIG5hbWUgKGUuZy4sIGBHcm91cFRlbXBsYXRlLmlzR3JvdXBgKSBob2xkaW5nIHRoZSByZXN1bHRpbmcgdmFsdWUgaW50byB0aGlzIGFycmF5LiAgIFVzaW5nIFRlblhUZW1wbGF0ZSB2YXJpYWJsZXMgYWxsb3dzIGZvciBjb21wdXRpbmcgdGhpcyBzdGF0ZSBvbmNlIGZvciBhbGwgaW5zdGFuY2VzIG9mIGEgdGFyZ2V0IGV2ZW50LiIKICAgICAgICB9LAogICAgICAgICJmaWx0ZXJzIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJKYXZhU2NyaXB0IGV4cHJlc3Npb25zIFRlblhPYmplY3QgaW5zdGFuY2UvZ3JvdXAgbXVzdCBldmFsdWF0ZSBhcyB0cnV0aHkgYWdhaW5zdFxuXG5TcGVjaWZpZXMgYSBsaXN0IG9mIEphdmFTY3JpcHQgZXhwcmVzc2lvbnMgdGhhdCBtdXN0IGFsbCBldmFsdWF0ZSBhcyB0cnV0aHkgZm9yIHRoZSB0YXJnZXQgb2JqZWN0L2dyb3VwIHRvIGJlIHBhcnQgb2YgYSBzZXF1ZW5jZSBhZ2dyZWdhdGVkL3dyaXR0ZW4gdG8gb3V0cHV0LiAgVG8gbGVhcm4gbW9yZSBzZWUgW2dyb3VwIGZpbHRlcnNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL3RyYW5zZm9ybS9ncm91cC8jZ3JvdXAtZmlsdGVycykuIiwKICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAiYXN5bmMiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiR3JvdXAgVGVuWE9iamVjdHMgaW4gYSBkZWRpY2F0ZWQgdGhyZWFkXG5cblNwZWNpZmllcyB3aGV0aGVyIHRvIHBlcmZvcm0gVGVuWE9iamVjdCBncm91cGluZyBsb2dpYyBpbiBhIGRlZGljYXRlZCB0aHJlYWQgKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IHRydWUpIiwKICAgICAgICAgICJkZWZhdWx0IiA6IHRydWUKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZQp9</template>

        ```yaml
        # 🔟❎ 'run' event grouping configuration
        
        # Group  sequences of TenXObjects to filter, aggregate and output as a single logical unit.
        # To learn more see https://doc.log10x.com/run/transform/group/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Group Options ===============================
        
        group:
        
          # 'filters' specify JavaScript expressions an TenXObject instance/group must 
          #  evaluate as truthy against to be written to output
          filters: []
        
          # 'maxSize' defines the maximum number of TenXObjects to group
          #  before the group is sealed and forwarded into the pipeline. 
          #  Subsequent TenXObjects can form a new group.
          maxSize: 20000
        
          # 'flushTimeout' defines the max interval (e.g., 10s) to wait for 
          #  new events to be read from an input stream before it flushes any
          #  pending TenXObjects group into the pipeline.
          #  This mechanism is designed to avoid latencies in dispatching pending event
          #  groups to output destinations.
          flushTimeout: $=parseDuration("5s")
        
          # 'async' specifies whether to sequence and group TenXObjects in a dedicated thread
          async: true 
        ```

    === ":octicons-cpu-24: Parallelize"

  
        #### parallelize {.hidden-heading}
        Configure  the [Parallel processor](/run/transform/parallelize "Distribute event parsing and transformation workloads across multiple cores.") to distribute event parsing and transformation workloads across multiple cores..  
  
        Below is the default configuration from: [parallelize/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/transform/parallelize/config.yaml "parallelize/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/transform/parallelize/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml27-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml27-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml27-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Parallel processor Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml27-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/transform/parallelize/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/transform/parallelize/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/transform/parallelize/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/transform/parallelize/config.yaml">$TENX_CONFIG/run/transform/parallelize/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/transform/parallelize/config.yaml">./pipelines/run/transform/parallelize/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAicGFyYWxsZWxFdmVudCIgOiB7CiAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAidGhyZWFkUG9vbFNpemUiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk51bWJlciBvZiB0aHJlYWRzIHRvIGFsbG9jYXRlIHRvIHRyYW5zZm9ybSBldmVudHMgaW50byBUZW5YT2JqZWN0cyBjb25jdXJyZW50bHlcblxuQ29udHJvbHMgdGhlIG51bWJlciBvZiB0aHJlYWRzIHRvIGFsbG9jYXRlIHRvIHRyYW5zZm9ybSBldmVudHMgaW50byBUZW5YT2JqZWN0cyBjb25jdXJyZW50bHkuIElmIHRoZSB2YWx1ZSBpcyAtICB8IFNldHRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQWxsb2NhdGVkIFRocmVhZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8IDptYXRlcmlhbC1lcXVhbDogKiowKiogICAgICAgICAgIHwgVHJhbnNmb3JtIGV2ZW50cyBpbnRvIFRlblhPYmplY3RzIHN5bmNocm9ub3VzbHkgdXNpbmcgdGhlaXIgaW5wdXQgc3RyZWFtIGNhbGxpbmcgdGhyZWFkICAgICAgICAgICAgICAgICAgICAgIHwgfCA6bWF0ZXJpYWwtbGVzcy10aGFuOiAqKjEqKiAgICAgICB8IEludGVycHJldGVkIGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgbnVtYmVyIG9mIGF2YWlsYWJsZSBjb3JlcyAoZS5nLiwgMC41ID0gdXNlIHVwIHRvIDUwJSBvZiBhdmFpbGFibGUgY29yZXMpIHwgfCA6bWF0ZXJpYWwtZXF1YWw6ICoqMSoqICAgICAgICAgICB8IEFsbG9jYXRlIGEgc2luZ2xlIGRlZGljYXRlZCB0byB0cmFuc2Zvcm0gZXZlbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCA6bWF0ZXJpYWwtZ3JlYXRlci10aGFuOiAqKjEqKiAgICB8IEludGVycHJldGVkIGFzIGEgZml4ZWQgbnVtYmVyIG9mIHRocmVhZHMgKGUuZy4sIDEwID0gMTAgdGhyZWFkcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwiCiAgICAgICAgfSwKICAgICAgICAiYmF0Y2hTaXplIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgIm51bWJlciIsCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4aW11bSBudW1iZXIgb2YgZXZlbnRzIHRvIHF1ZXVlIGZvciBjb25jdXJyZW50IHByb2Nlc3NpbmcgYmVmb3JlIGZsdXNoaW5nXG5cblNldHMgdGhlIG51bWJlciBvZiBldmVudHMgdG8gcXVldWUgYmVmb3JlIGZsdXNoaW5nIHRoZW0gdG8gdHJhbnNmb3JtIGludG8gVGVuWE9iamVjdHMuIElmIFt0aHJlYWRQb29sU2l6ZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vdHJhbnNmb3JtL3BhcmFsbGVsaXplLyNwYXJhbGxlbGV2ZW50dGhyZWFkcG9vbHNpemUpIGlzIDEsIHRoaXMgdmFsdWUgaXMgdW51c2VkLCBhbmQgZXZlbnRzIGFyZSB0cmFuc2Zvcm1lZCBpbnRvIFRlblhPYmplY3Qgc3luY2hyb25vdXNseSAgdG8gdGhlaXIgY2FsbGluZyBpbnB1dCdzIHRocmVhZC4gIElmIDAsIGZsdXNoIHBlbmRpbmcgZXZlbnRzIGFmdGVyIFtmbHVzaEludGVydmFsXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi90cmFuc2Zvcm0vcGFyYWxsZWxpemUvI3BhcmFsbGVsZXZlbnRmbHVzaGludGVydmFsKSBleHBpcmVzIG9yIHRoZSBzb3VyY2UgaW5wdXQgcmVhY2hlcyBlbmQtb2YtZmlsZS4gKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogMTAwMCkiLAogICAgICAgICAgImRlZmF1bHQiIDogMTAwMAogICAgICAgIH0sCiAgICAgICAgImZsdXNoSW50ZXJ2YWwiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk1heGltdW0gd2FpdCBkdXJhdGlvbiBiZWZvcmUgZmx1c2hpbmcgcXVldWVkIGV2ZW50c1xuXG5TZXRzIGFuIGludGVydmFsIHBlcmlvZCBmb3IgKGUuZy4gJzJzKSBiZWZvcmUgZmx1c2hpbmcgcGVuZGluZyBldmVudHMgdG8gdHJhbnNmb3JtIGludG8gVGVuWE9iamVjdHMuIElmIFt0aHJlYWRQb29sU2l6ZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vdHJhbnNmb3JtL3BhcmFsbGVsaXplLyNwYXJhbGxlbGV2ZW50dGhyZWFkcG9vbHNpemUpIGlzIDEsIHRoaXMgdmFsdWUgaXMgdW51c2VkLCBhbmQgZXZlbnRzIGFyZSB0cmFuc2Zvcm1lZCBpbnRvIFRlblhPYmplY3Qgc3luY2hyb25vdXNseSAgdG8gdGhlaXIgaW5wdXQgdGhyZWFkLiBJZiAwLCBubyB3YWl0IGZsdXNoIGludGVydmFsIGlzIGFwcGxpZWQuIChEZWZhdWx0OiAycykiLAogICAgICAgICAgImRlZmF1bHQiIDogIjJzIgogICAgICAgIH0sCiAgICAgICAgInByb2Nlc3NpbmdUaW1lb3V0IiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJNYXhpbXVtIHdhaXQgZHVyYXRpb24gYmVmb3JlIGRyb3BwaW5nIHVuLXByb2Nlc3NlZCBxdWV1ZWQgZXZlbnRzXG5cblNldHMgYSB0aW1lb3V0IHBlcmlvZCAoZS5nLiwgJzMwcycpLCBhZnRlciB3aGljaCB0byBkcm9wIHF1ZXVlZCBldmVudHMuIFRoaXMgdmFsdWUgcHJvdmlkZXMgYSBiYWNrc3RvcCBmb3Igb3ZlcmZsb3dpbmcgdGhlIGhlYXAgaWYgdGhlIHBpcGVsaW5lIGNhbm5vdCBkZXF1ZXVlICBwZW5kaW5nIGV2ZW50cyB0byB0cmFuc2Zvcm0gaW50byBUZW5YT2JqZWN0LiBJZiAwLCBubyB0aW1lb3V0IGlzIGFwcGxpZWQuIChEZWZhdWx0OiAzMHMpIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICIzMHMiCiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==</template>

        ```yaml
        # 🔟❎ 'run' event parallel processing configuration
        
        # Transform log/trace events read from inputs into well-defined TenXObjects using multiple cores.
        # To learn more see https://doc.log10x.com/run/transform/parallelize/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Parallel Options ============================
        
        parallelEvent:
          
          # 'threadPoolSize' specifies the number of threads allocated to transform events into TenXObjects concurrently.
          #  If the value is -
          #  - = 0: transform events into TenXObjects synchronously using their input stream calling thread.
          #  - < 1: interpreted as a percentage of the number of available cores (e.g., 0.5 = use up to 50% of available cores)
          #  - = 1: allocate a single dedicated to transform events.
          #  - > 1: interpreted as a fixed number of threads (e.g., 10 = 10 threads)
          threadPoolSize: "0.5"
        
          # 'batchSize' specifies the maximum number of events to queue for concurrent processing before flushing.
          #  If 'threadPoolSize' is 1, this value is unused, and events are transformed into TenXObject synchronously 
          #  to their calling input's thread.  If 0, flush pending events after 'flushInterval' expires or the
          #  source input reaches end-of-file.
          batchSize: 1000
        
          # 'flushInterval'  specifies the maximum wait duration before flushing queued events 
          #  If 'threadPoolSize' is 1, this value is unused, and events are transformed into TenXObject synchronously 
          #  to their input thread. If 0, no wait flush interval is applied. 
          flushInterval: 2s
        
          # 'processingTimeout' specifies the maximum wait duration before dropping un-processed queued events 
          #  This value provides a backstop for overflowing the heap if the pipeline cannot dequeue 
          #  pending events to transform into TenXObjects. If 0, no timeout is applied.
          processingTimeout: 30s
        ```

## :material-menu: Options

Specify the options below to [configure](/config "configure") the Receiver:

|Name|Description|
|---|---|
|[receiverOptimize](#receiveroptimize "enable optimization (compact mode) to encode emitted events for volume reduction")|Enable optimization (compact mode) to encode emitted events for volume reduction|
|[receiverReadOnly](#receiverreadonly "read-only mode, receive events, emit metrics, do not write back to the forwarder")|Read-only mode, receive events, emit metrics, do not write back to the forwarder|

### :material-menu-right-outline:**`receiverOptimize`**

Enable optimization (compact mode) to encode emitted events for volume reduction.

|Type|Default|
|---|---|
|Boolean|false|

enables compact mode on the receiver (read-write only). When true, the
receiver encodes emitted events using the [encode](https://doc.log10x.com/api/js/#TenXObject+encode "Encodes the current object's log event into a compact, template‐based string.")
function, reducing log volume on compaction-capable destinations
(Splunk, self-hosted Elasticsearch; a no-op elsewhere) before
shipping to the destination.

When false (default), the receiver in read-write mode receives events
but emits them in their original plain-text form via the
[fullText](https://doc.log10x.com/api/js/#TenXBaseObject+fullText "A text value extracted from the input stream from") field.

Has no effect when `receiverReadOnly=true` (no events are written back
to the forwarder in read-only mode).

**Effect on forwarder output:**
When optimization is enabled, the forwarder outputs compacted events and the
aggregator tracks `optimized_size` metrics to measure optimization effectiveness.

**Usage (helm chart value):**

```yaml
receiver:
  optimize: true
```


### :material-menu-right-outline:**`receiverReadOnly`**

Read-only mode, receive events, emit metrics, do not write back to the forwarder.

|Type|Default|
|---|---|
|Boolean|false|

enables read-only mode on the receiver. When true, the receiver reads
events from the coupled forwarder, runs aggregators, and publishes
`emitted_events` / `all_events` TenXSummary metrics, but does **not**
write events back to the forwarder.

Read-only mode is for observation deployments where the receiver acts
as a passive metrics emitter. Read-write mode (default) is for
receiving and compact-mode deployments where the receiver shapes the
event stream the forwarder ships to its destination.

For the parallel-DaemonSet observation pattern (separate pod, not in
the forwarder's pipeline), use the dedicated
[Reporter](https://doc.log10x.com/apps/reporter/ "Report on costly log/trace events _before_ they ship to output") app instead.

**Effect:**
The generic event-output stream modules
([forward](https://github.com/log-10x/modules/blob/main/pipelines/run/modules/output/event/forward/stream.yaml){target="\_blank"},
[unix](https://github.com/log-10x/modules/blob/main/pipelines/run/modules/output/event/unix/stream.yaml){target="\_blank"},
[socket](https://github.com/log-10x/modules/blob/main/pipelines/run/modules/output/event/socket/stream.yaml){target="\_blank"},
[stdout](https://github.com/log-10x/modules/blob/main/pipelines/run/modules/output/event/stdout/stream.yaml){target="\_blank"})
AND their `enabled` gate with `!TenXEnv.get("receiverReadOnly", false)`,
so when the flag is true the output stream is not constructed and the
log4j Fluency appender (where applicable) never tries to connect to the
forwarder's return socket.

Mutually compatible with `receiverOptimize` (encoding wouldn't reach the
forwarder anyway, so it is functionally a no-op when read-only is on).

**Usage (helm chart value, mode=readonly translates to this):**

```yaml
receiver:
  mode: readonly
```


<br/>:material-github: This app is defined in [receiver/app.yaml](https://github.com/log-10x/modules/tree/main/pipelines/receiver/app.yaml "receiver/app.yaml"){target="\_blank"}.

