log10x-mcp 1.30.20 → 1.30.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/product-kb/docs/apps/compiler/run.md +4 -2
- package/build/product-kb/docs/apps/receiver/compact/splunk.md +38 -32
- package/build/product-kb/docs/apps/receiver/faq.md +1 -1
- package/build/product-kb/docs/apps/receiver/run.md +12 -3
- package/build/product-kb/docs/apps/reporter/run.md +12 -3
- package/build/product-kb/docs/apps/retriever/run.md +12 -3
- package/build/product-kb/docs/compile/bootstrap/index.md +10 -6
- package/build/product-kb/docs/doc/bootstrap/index.md +16 -8
- package/build/product-kb/docs/engine/launcher/extension.md +20 -20
- package/build/product-kb/docs/faq/apps/receiver.md +1 -1
- package/build/product-kb/docs/faq/stacks/splunk/optimization.md +2 -2
- package/build/product-kb/docs/run/bootstrap/index.md +24 -12
- package/build/product-kb/docs/run/initialize/message/index.md +25 -8
- package/build/product-kb/docs/run/transform/symbol/index.md +1 -1
- package/build/product-kb/docs/run/transform/timestamp/index.md +7 -0
- package/package.json +1 -1
|
@@ -1647,8 +1647,10 @@ To configure advanced options (optional) for the Compiler app, [:material-cog: E
|
|
|
1647
1647
|
# 'jarFiles' specifies .jar files to dynamically load for use by compile, input and output API extensions.
|
|
1648
1648
|
jarFiles: []
|
|
1649
1649
|
|
|
1650
|
-
# 'metricEndpoint' specifies
|
|
1651
|
-
#
|
|
1650
|
+
# 'metricEndpoint' specifies a Prometheus remote-write endpoint for pipeline usage and health metrics.
|
|
1651
|
+
# Unset by default. The endpoint is a self-hosted or vendor Prometheus-compatible store, never a 10x
|
|
1652
|
+
# service, and is where the MCP reads engine state back from to tune policy such as regulator rates.
|
|
1653
|
+
# metricEndpoint: https://prometheus.example.com/api/v1/write
|
|
1652
1654
|
|
|
1653
1655
|
# specifies a list of launch arguments that are disallowed from either command line or user config files.
|
|
1654
1656
|
disabledArgs: []
|
|
@@ -6,7 +6,7 @@ icon: "material/greater-than"
|
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
Search and visualize [compact](https://doc.log10x.com/run/transform/#compact) events in Splunk; the original lines expand back exactly at search time. This [open-source app](https://github.com/log-10x/splunk-app){target="_blank"}
|
|
9
|
+
Search and visualize [compact](https://doc.log10x.com/run/transform/#compact) events in Splunk; the original lines expand back exactly at search time. This [open-source app](https://github.com/log-10x/splunk-app){target="_blank"} expands compact events at search time: classic dashboards keep their panels unchanged, the search bar wraps a query in one command, and scheduled alerts compile once at save time so the scheduler runs them natively.
|
|
10
10
|
|
|
11
11
|
Use the [Reporter](https://doc.log10x.com/apps/reporter/) (DaemonSet, pre-ingestion) or the [MCP server](https://github.com/log-10x/log10x-mcp){target="_blank"}'s SIEM-sample tool (agentless, via Splunk REST API) to identify optimization opportunities in your existing Splunk data.
|
|
12
12
|
|
|
@@ -39,7 +39,9 @@ The app includes a built-in analytics dashboard providing real-time visibility i
|
|
|
39
39
|
|
|
40
40
|
## :material-lightbulb-outline: How It Works
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
A [compact event](https://doc.log10x.com/run/transform/#compact) carries a template hash and the event's variable values. The constant words live in the KV Store, so the app puts them back at search time and re-applies the search to the expanded lines.
|
|
43
|
+
|
|
44
|
+
Classic dashboards are rewritten in the browser and keep their panels unchanged. Splunk's search page loads no app JavaScript, so a query typed there is wrapped in the `tenxsearch` command, which runs the same rewrite server-side. Scheduled alerts compile once at save time and then run as ordinary saved searches.
|
|
43
45
|
|
|
44
46
|
Compact mode encodes the entire event for Splunk, including the Kubernetes metadata, into a single compact line. Splunk bills against uncompressed ingest volume, so compacting everything maximizes license-cost reduction. The Receiver uses a different mode for Elasticsearch from the same forwarder pipeline; there, only the log message is encoded so plugin queries on metadata still work. The [splunk-app README](https://github.com/log-10x/splunk-app#receiver-side-configuration){target="_blank"} covers the Receiver setting.
|
|
45
47
|
|
|
@@ -76,14 +78,15 @@ graph LR
|
|
|
76
78
|
|
|
77
79
|
### :material-magnify: Search Flow
|
|
78
80
|
|
|
79
|
-
|
|
81
|
+
Two paths reach the same rewrite, then [expand](https://doc.log10x.com/run/transform/#expand) the events:
|
|
80
82
|
|
|
81
83
|
<div style="text-align: center;">
|
|
82
84
|
|
|
83
85
|
```mermaid
|
|
84
86
|
graph LR
|
|
85
|
-
E["<div style='font-size: 14px;'
|
|
86
|
-
|
|
87
|
+
E["<div style='font-size: 14px;'>📊 Dashboard</div><div style='font-size: 10px;'>Panel SPL</div>"] --> F["<div style='font-size: 14px;'>🪝 Hook</div><div style='font-size: 10px;'>Intercept</div>"]
|
|
88
|
+
E2["<div style='font-size: 14px;'>👤 Search Bar</div><div style='font-size: 10px;'>tenxsearch</div>"] --> G
|
|
89
|
+
F --> G["<div style='font-size: 14px;'>🔄 Transform</div><div style='font-size: 10px;'>Prefilter + Macro</div>"]
|
|
87
90
|
G --> H["<div style='font-size: 14px;'>📖 Expand</div><div style='font-size: 10px;'>Expand</div>"]
|
|
88
91
|
H --> I["<div style='font-size: 14px;'>📊 Results</div><div style='font-size: 10px;'>Full Data</div>"]
|
|
89
92
|
|
|
@@ -91,22 +94,22 @@ graph LR
|
|
|
91
94
|
classDef hook fill:#f59e0b,stroke:#d97706,color:#ffffff,stroke-width:2px,rx:8,ry:8
|
|
92
95
|
classDef result fill:#ea580c88,stroke:#c2410c,color:#ffffff,stroke-width:2px,rx:8,ry:8
|
|
93
96
|
|
|
94
|
-
class E user
|
|
97
|
+
class E,E2 user
|
|
95
98
|
class F,G hook
|
|
96
99
|
class H,I result
|
|
97
100
|
```
|
|
98
101
|
|
|
99
102
|
</div>
|
|
100
103
|
|
|
101
|
-
|
|
104
|
+
📊 **Dashboard**: `dashboard.js` loads on every classic dashboard in the app carrying it and points the panel's search at the app's REST endpoint, via `$.ajaxSetup`
|
|
102
105
|
|
|
103
|
-
|
|
106
|
+
👤 **Search Bar**: `| tenxsearch searchstring="..."` runs the same rewrite server-side, and works in saved searches and the REST API too
|
|
104
107
|
|
|
105
|
-
🔄 **Transform**:
|
|
108
|
+
🔄 **Transform**: each search word is resolved against the templates, and the SPL becomes a hash prefilter plus the `tenx-inflate` macro
|
|
106
109
|
|
|
107
|
-
📖 **Expand**:
|
|
110
|
+
📖 **Expand**: the macro joins [compact events](https://doc.log10x.com/run/transform/#compact) with templates from the KV Store
|
|
108
111
|
|
|
109
|
-
📊 **Results**:
|
|
112
|
+
📊 **Results**: fully expanded events, with the original search re-applied so only true matches remain
|
|
110
113
|
|
|
111
114
|
**Scheduled alerts** run server-side, where the browser hook never fires. They are instead compiled once at save time into a native saved search (a template-hash prefilter plus the [`tenx-inflate`](https://github.com/log-10x/splunk-app) macro), so the scheduler runs an ordinary search with no per-run proxy. The **10x Compile Alert** view and the `/tenx-alert` endpoint handle this, and a recompile pass migrates legacy alerts to native form and refreshes their prefilters as new templates appear. See [SAVE_TIME_ALERTS.md](https://github.com/log-10x/splunk-app/blob/main/SAVE_TIME_ALERTS.md){target="_blank"}.
|
|
112
115
|
|
|
@@ -329,32 +332,35 @@ Get encoded events flowing to Splunk in under 15 minutes.
|
|
|
329
332
|
|
|
330
333
|
**3. Check compact events expand:**
|
|
331
334
|
```spl
|
|
332
|
-
index=your_logs_index | head 10
|
|
335
|
+
| tenxsearch searchstring="index=your_logs_index" | head 10
|
|
333
336
|
```
|
|
334
337
|
:material-check-circle-outline:{ .success } Expected: Full expanded events, not `~hash,var1,var2...` format
|
|
335
338
|
|
|
336
339
|
!!! tip "First Templates Take Time"
|
|
337
340
|
The "Consume KV" saved search runs every 2 minutes. If KV store is empty, wait 2-3 minutes and check again.
|
|
338
341
|
|
|
339
|
-
??? tenx-step-search "Step 5:
|
|
342
|
+
??? tenx-step-search "Step 5: Search from the Search Bar"
|
|
340
343
|
|
|
341
|
-
|
|
344
|
+
Splunk's search page loads no app JavaScript, so the hook cannot reach the search bar. Wrap the search in the `tenxsearch` command instead:
|
|
342
345
|
|
|
343
|
-
```
|
|
344
|
-
|
|
345
|
-
$SPLUNK_HOME/etc/apps/search/appserver/static/
|
|
346
|
+
```spl
|
|
347
|
+
| tenxsearch searchstring="index=your_logs_index sourcetype=tenx_encoded error"
|
|
346
348
|
```
|
|
349
|
+
:material-check-circle-outline:{ .success } Expected: expanded events on the Events tab
|
|
347
350
|
|
|
348
|
-
|
|
351
|
+
Escape a quoted phrase inside the wrapper:
|
|
349
352
|
|
|
350
|
-
```
|
|
351
|
-
|
|
353
|
+
```spl
|
|
354
|
+
| tenxsearch searchstring="index=your_logs_index \"connection refused\""
|
|
352
355
|
```
|
|
353
356
|
|
|
354
|
-
|
|
357
|
+
`NOT`, `OR`, `AND`, parenthesised groups, wildcards, field conditions, inline `earliest=`/`latest=` and a trailing pipeline all behave as they do on the original data. The command also runs in saved searches, alerts and the REST API.
|
|
358
|
+
|
|
359
|
+
!!! warning "A search without the command returns zero"
|
|
360
|
+
A bare search on a compact sourcetype finds nothing and reports no matches, because the constant words are in the KV Store rather than the event. Keep compact indexes out of users' default index sets and name them so the omission is visible.
|
|
355
361
|
|
|
356
|
-
!!! tip "
|
|
357
|
-
|
|
362
|
+
!!! tip "Dashboards need no command"
|
|
363
|
+
Classic dashboards in an app carrying `dashboard.js` keep their panel SPL unchanged. See [Expansion in Other Splunk Apps](#expansion-in-other-splunk-apps) below.
|
|
358
364
|
|
|
359
365
|
---
|
|
360
366
|
|
|
@@ -459,7 +465,7 @@ Use this checklist to diagnose issues at each stage of the pipeline.
|
|
|
459
465
|
|-------|----------|
|
|
460
466
|
| Template hash not in KV store | Wait 2 min for "Consume KV" to run, or trigger manually |
|
|
461
467
|
| Hash mismatch (different data) | Verify encoded events match templates in `tenx_dml` |
|
|
462
|
-
| Search
|
|
468
|
+
| Search ran without expansion | On a dashboard, ensure `dashboard.js` is in that app; in the search bar, wrap the search in `tenxsearch` |
|
|
463
469
|
|
|
464
470
|
**Debug hash lookup:**
|
|
465
471
|
```spl
|
|
@@ -547,22 +553,21 @@ Use this checklist to diagnose issues at each stage of the pipeline.
|
|
|
547
553
|
|
|
548
554
|
## :material-code-tags: Expansion in Other Splunk Apps
|
|
549
555
|
|
|
550
|
-
The 10x for Splunk app
|
|
551
|
-
|
|
552
|
-
For the default **Search & Reporting** app, see [Step 5](#step-5-enable-expansion-in-search-reporting-optional) in the Quickstart.
|
|
553
|
-
|
|
554
|
-
For custom or third-party apps:
|
|
556
|
+
`dashboard.js` loads on every classic dashboard in the app that carries it. The 10x for Splunk app ships it, so its own dashboards expand. To expand classic dashboards in another app, copy the file there:
|
|
555
557
|
|
|
556
558
|
``` { .console .copy }
|
|
557
559
|
cp $SPLUNK_HOME/etc/apps/tenx-for-splunk/appserver/static/dashboard.js \
|
|
558
560
|
$SPLUNK_HOME/etc/apps/YOUR_APP/appserver/static/
|
|
559
561
|
```
|
|
560
562
|
|
|
561
|
-
Restart Splunk
|
|
563
|
+
Restart Splunk to load it.
|
|
564
|
+
|
|
565
|
+
!!! info "What copying the hook does not cover"
|
|
566
|
+
The search bar and Dashboard Studio load no app JavaScript, so they are unaffected by the copy. Wrap the search in the `tenxsearch` command there, as in the Quickstart.
|
|
562
567
|
|
|
563
568
|
??? info "Programmatic Hook for Custom Views"
|
|
564
569
|
|
|
565
|
-
For custom dashboards,
|
|
570
|
+
For custom classic dashboards, include the hook in JavaScript:
|
|
566
571
|
|
|
567
572
|
``` { .javascript }
|
|
568
573
|
require([
|
|
@@ -578,7 +583,8 @@ Restart Splunk after copying to apply.
|
|
|
578
583
|
|
|
579
584
|
| Component | Description |
|
|
580
585
|
|-----------|-------------|
|
|
581
|
-
| [**Search Hook**](https://github.com/log-10x/splunk-app/blob/main/tenx-for-splunk/appserver/static/dashboard.js){target="\_blank"} | JavaScript module
|
|
586
|
+
| [**Search Hook**](https://github.com/log-10x/splunk-app/blob/main/tenx-for-splunk/appserver/static/dashboard.js){target="\_blank"} | JavaScript module routing classic dashboard searches to the REST endpoint |
|
|
587
|
+
| [**tenxsearch Command**](https://github.com/log-10x/splunk-app/blob/main/tenx-for-splunk/bin/tenxsearch.py){target="\_blank"} | Generating command running the same rewrite from the search bar, saved searches and alerts |
|
|
582
588
|
| [**Search Handler**](https://github.com/log-10x/splunk-app/blob/main/tenx-for-splunk/bin/tenx_search_handler.py){target="\_blank"} | REST endpoint transforming SPL queries |
|
|
583
589
|
| [**KV Store**](https://github.com/log-10x/splunk-app/blob/main/tenx-for-splunk/default/collections.conf){target="\_blank"} | Template patterns for event expansion |
|
|
584
590
|
| [**Inflate Macro**](https://github.com/log-10x/splunk-app/blob/main/tenx-for-splunk/default/macros.conf){target="\_blank"} | SPL macro joining events with templates |
|
|
@@ -22,7 +22,7 @@ The [Receiver](https://doc.log10x.com/apps/receiver/) is the execution arm of th
|
|
|
22
22
|
|
|
23
23
|
- **pass**: forward unchanged.
|
|
24
24
|
- **sample**: forward a rate-limited share against a per-pattern budget. Uses automatic [message enrichment](https://doc.log10x.com/run/initialize/message/){target="_blank"} to identify event types by their symbol identity and calculate ingestion cost per event (bytes × $/GB). When an event type exceeds its share of the budget, the Receiver samples it down, in real time at the source, before expensive data reaches your analyzer. A [severity floor](https://doc.log10x.com/run/receive/rate/){target="_blank"} keeps a minimum share of ERROR and WARN events flowing even when their pattern is over its cap.
|
|
25
|
-
- **compact**: replace repeated lines with an encoded form the destination expands at query time, with no dashboard
|
|
25
|
+
- **compact**: replace repeated lines with an encoded form the destination expands at query time, with no dashboard changes. Lossless only on Splunk and self-hosted Elasticsearch/OpenSearch with the expand plugin installed ([Splunk](compact/splunk.md), [Elasticsearch](compact/elasticsearch.md)). It is a no-op on managed/SaaS destinations (Datadog, CloudWatch, Azure, GCP, Sumo, managed Elasticsearch).
|
|
26
26
|
- **tier_down**: tag the pattern for a cheaper storage tier the destination enforces (Datadog Flex, CloudWatch IA, Azure Monitor Basic/Auxiliary).
|
|
27
27
|
- **offload**: route the pattern to customer-owned object storage (S3 or any S3-compatible bucket) instead of the destination.
|
|
28
28
|
- **drop**: stop forwarding the pattern.
|
|
@@ -4970,8 +4970,10 @@ To configure advanced options (optional) for the Receiver app, [:material-cog: E
|
|
|
4970
4970
|
# 'jarFiles' specifies .jar files to dynamically load for use by compile, input and output API extensions.
|
|
4971
4971
|
jarFiles: []
|
|
4972
4972
|
|
|
4973
|
-
# 'metricEndpoint' specifies
|
|
4974
|
-
#
|
|
4973
|
+
# 'metricEndpoint' specifies a Prometheus remote-write endpoint for pipeline usage and health metrics.
|
|
4974
|
+
# Unset by default. The endpoint is a self-hosted or vendor Prometheus-compatible store, never a 10x
|
|
4975
|
+
# service, and is where the MCP reads engine state back from to tune policy such as regulator rates.
|
|
4976
|
+
# metricEndpoint: https://prometheus.example.com/api/v1/write
|
|
4975
4977
|
|
|
4976
4978
|
# 'disabledArgs' specifies a list of launch arguments that are disallowed from either command line or user config files.
|
|
4977
4979
|
disabledArgs: []
|
|
@@ -6030,14 +6032,21 @@ To configure advanced options (optional) for the Receiver app, [:material-cog: E
|
|
|
6030
6032
|
- "yyyy-MM-dd HH:mm:ss" # Widely used in Java applications, databases (e.g., MySQL, PostgreSQL), and application servers (e.g., Tomcat, JBoss).
|
|
6031
6033
|
- "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.
|
|
6032
6034
|
- "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).
|
|
6035
|
+
- "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".
|
|
6036
|
+
- "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.
|
|
6033
6037
|
- "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.
|
|
6034
6038
|
- "yyyy-MM-dd HH:mm:ss,SSS" # Common in Java logging frameworks like Log4j and Logback.
|
|
6035
6039
|
- "yyyy-MM-dd'T'HH:mm:ss,SSS" # Common in Java logging with ISO 8601 date-time, comma-separated milliseconds.
|
|
6036
6040
|
- "MM/dd/yyyy HH:mm:ss" # Used in Windows event logs, .NET applications, and U.S.-based systems.
|
|
6037
6041
|
- "EEE MMM dd HH:mm:ss yyyy" # Human-readable format used in various logs, including some web servers and application logs.
|
|
6042
|
+
- "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.
|
|
6038
6043
|
- "yyyy-MM-dd'T'HH:mm:ss" # Simplified ISO 8601 format, used in many modern applications and frameworks.
|
|
6039
6044
|
- "HH:mm:ss" # Time-only format, used when the date is implied or provided separately, common in embedded systems and some programming languages.
|
|
6040
6045
|
- "yyyyMMdd HH:mm:ss" # Compact format used in some legacy systems and batch processing logs.
|
|
6046
|
+
- "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.
|
|
6047
|
+
- "yyyyMMdd-H:m:s:SS" # Same with two fraction digits, e.g. "20171223-22:30:24:28".
|
|
6048
|
+
- "yyyyMMdd-H:m:s:S" # Same with one fraction digit.
|
|
6049
|
+
- "MM.dd HH:mm:ss" # Month.day without a year, e.g. "10.30 16:49:06". Proxifier and other Windows utility logs.
|
|
6041
6050
|
- "MMM dd, yyyy h:mm:ss a" # Human-readable format with 12-hour clock, used in application logs and some U.S.-based systems.
|
|
6042
6051
|
- "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.
|
|
6043
6052
|
# Common formats with slight variations
|
|
@@ -6630,7 +6639,7 @@ To configure advanced options (optional) for the Receiver app, [:material-cog: E
|
|
|
6630
6639
|
|
|
6631
6640
|
# Specifying '*' will emit information for all source code /binary files that have
|
|
6632
6641
|
# been selected as the origin of any TenXTemplate objects within the pipeline.
|
|
6633
|
-
symbols: [
|
|
6642
|
+
symbols: [
|
|
6634
6643
|
# '*'
|
|
6635
6644
|
]
|
|
6636
6645
|
```
|
|
@@ -3961,8 +3961,10 @@ To configure advanced options (optional) for the Reporter app, [:material-cog: E
|
|
|
3961
3961
|
# 'jarFiles' specifies .jar files to dynamically load for use by compile, input and output API extensions.
|
|
3962
3962
|
jarFiles: []
|
|
3963
3963
|
|
|
3964
|
-
# 'metricEndpoint' specifies
|
|
3965
|
-
#
|
|
3964
|
+
# 'metricEndpoint' specifies a Prometheus remote-write endpoint for pipeline usage and health metrics.
|
|
3965
|
+
# Unset by default. The endpoint is a self-hosted or vendor Prometheus-compatible store, never a 10x
|
|
3966
|
+
# service, and is where the MCP reads engine state back from to tune policy such as regulator rates.
|
|
3967
|
+
# metricEndpoint: https://prometheus.example.com/api/v1/write
|
|
3966
3968
|
|
|
3967
3969
|
# 'disabledArgs' specifies a list of launch arguments that are disallowed from either command line or user config files.
|
|
3968
3970
|
disabledArgs: []
|
|
@@ -4974,14 +4976,21 @@ To configure advanced options (optional) for the Reporter app, [:material-cog: E
|
|
|
4974
4976
|
- "yyyy-MM-dd HH:mm:ss" # Widely used in Java applications, databases (e.g., MySQL, PostgreSQL), and application servers (e.g., Tomcat, JBoss).
|
|
4975
4977
|
- "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.
|
|
4976
4978
|
- "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).
|
|
4979
|
+
- "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".
|
|
4980
|
+
- "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.
|
|
4977
4981
|
- "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.
|
|
4978
4982
|
- "yyyy-MM-dd HH:mm:ss,SSS" # Common in Java logging frameworks like Log4j and Logback.
|
|
4979
4983
|
- "yyyy-MM-dd'T'HH:mm:ss,SSS" # Common in Java logging with ISO 8601 date-time, comma-separated milliseconds.
|
|
4980
4984
|
- "MM/dd/yyyy HH:mm:ss" # Used in Windows event logs, .NET applications, and U.S.-based systems.
|
|
4981
4985
|
- "EEE MMM dd HH:mm:ss yyyy" # Human-readable format used in various logs, including some web servers and application logs.
|
|
4986
|
+
- "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.
|
|
4982
4987
|
- "yyyy-MM-dd'T'HH:mm:ss" # Simplified ISO 8601 format, used in many modern applications and frameworks.
|
|
4983
4988
|
- "HH:mm:ss" # Time-only format, used when the date is implied or provided separately, common in embedded systems and some programming languages.
|
|
4984
4989
|
- "yyyyMMdd HH:mm:ss" # Compact format used in some legacy systems and batch processing logs.
|
|
4990
|
+
- "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.
|
|
4991
|
+
- "yyyyMMdd-H:m:s:SS" # Same with two fraction digits, e.g. "20171223-22:30:24:28".
|
|
4992
|
+
- "yyyyMMdd-H:m:s:S" # Same with one fraction digit.
|
|
4993
|
+
- "MM.dd HH:mm:ss" # Month.day without a year, e.g. "10.30 16:49:06". Proxifier and other Windows utility logs.
|
|
4985
4994
|
- "MMM dd, yyyy h:mm:ss a" # Human-readable format with 12-hour clock, used in application logs and some U.S.-based systems.
|
|
4986
4995
|
- "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.
|
|
4987
4996
|
# Common formats with slight variations
|
|
@@ -5574,7 +5583,7 @@ To configure advanced options (optional) for the Reporter app, [:material-cog: E
|
|
|
5574
5583
|
|
|
5575
5584
|
# Specifying '*' will emit information for all source code /binary files that have
|
|
5576
5585
|
# been selected as the origin of any TenXTemplate objects within the pipeline.
|
|
5577
|
-
symbols: [
|
|
5586
|
+
symbols: [
|
|
5578
5587
|
# '*'
|
|
5579
5588
|
]
|
|
5580
5589
|
```
|
|
@@ -5042,8 +5042,10 @@ To configure advanced options (optional) for the Retriever app, [:material-cog:
|
|
|
5042
5042
|
# 'jarFiles' specifies .jar files to dynamically load for use by compile, input and output API extensions.
|
|
5043
5043
|
jarFiles: []
|
|
5044
5044
|
|
|
5045
|
-
# 'metricEndpoint' specifies
|
|
5046
|
-
#
|
|
5045
|
+
# 'metricEndpoint' specifies a Prometheus remote-write endpoint for pipeline usage and health metrics.
|
|
5046
|
+
# Unset by default. The endpoint is a self-hosted or vendor Prometheus-compatible store, never a 10x
|
|
5047
|
+
# service, and is where the MCP reads engine state back from to tune policy such as regulator rates.
|
|
5048
|
+
# metricEndpoint: https://prometheus.example.com/api/v1/write
|
|
5047
5049
|
|
|
5048
5050
|
# 'disabledArgs' specifies a list of launch arguments that are disallowed from either command line or user config files.
|
|
5049
5051
|
disabledArgs: []
|
|
@@ -6246,14 +6248,21 @@ To configure advanced options (optional) for the Retriever app, [:material-cog:
|
|
|
6246
6248
|
- "yyyy-MM-dd HH:mm:ss" # Widely used in Java applications, databases (e.g., MySQL, PostgreSQL), and application servers (e.g., Tomcat, JBoss).
|
|
6247
6249
|
- "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.
|
|
6248
6250
|
- "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).
|
|
6251
|
+
- "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".
|
|
6252
|
+
- "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.
|
|
6249
6253
|
- "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.
|
|
6250
6254
|
- "yyyy-MM-dd HH:mm:ss,SSS" # Common in Java logging frameworks like Log4j and Logback.
|
|
6251
6255
|
- "yyyy-MM-dd'T'HH:mm:ss,SSS" # Common in Java logging with ISO 8601 date-time, comma-separated milliseconds.
|
|
6252
6256
|
- "MM/dd/yyyy HH:mm:ss" # Used in Windows event logs, .NET applications, and U.S.-based systems.
|
|
6253
6257
|
- "EEE MMM dd HH:mm:ss yyyy" # Human-readable format used in various logs, including some web servers and application logs.
|
|
6258
|
+
- "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.
|
|
6254
6259
|
- "yyyy-MM-dd'T'HH:mm:ss" # Simplified ISO 8601 format, used in many modern applications and frameworks.
|
|
6255
6260
|
- "HH:mm:ss" # Time-only format, used when the date is implied or provided separately, common in embedded systems and some programming languages.
|
|
6256
6261
|
- "yyyyMMdd HH:mm:ss" # Compact format used in some legacy systems and batch processing logs.
|
|
6262
|
+
- "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.
|
|
6263
|
+
- "yyyyMMdd-H:m:s:SS" # Same with two fraction digits, e.g. "20171223-22:30:24:28".
|
|
6264
|
+
- "yyyyMMdd-H:m:s:S" # Same with one fraction digit.
|
|
6265
|
+
- "MM.dd HH:mm:ss" # Month.day without a year, e.g. "10.30 16:49:06". Proxifier and other Windows utility logs.
|
|
6257
6266
|
- "MMM dd, yyyy h:mm:ss a" # Human-readable format with 12-hour clock, used in application logs and some U.S.-based systems.
|
|
6258
6267
|
- "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.
|
|
6259
6268
|
# Common formats with slight variations
|
|
@@ -6846,7 +6855,7 @@ To configure advanced options (optional) for the Retriever app, [:material-cog:
|
|
|
6846
6855
|
|
|
6847
6856
|
# Specifying '*' will emit information for all source code /binary files that have
|
|
6848
6857
|
# been selected as the origin of any TenXTemplate objects within the pipeline.
|
|
6849
|
-
symbols: [
|
|
6858
|
+
symbols: [
|
|
6850
6859
|
# '*'
|
|
6851
6860
|
]
|
|
6852
6861
|
```
|
|
@@ -144,7 +144,7 @@ To configure the Pipeline Bootstrapper unit, [:material-cog: Edit](https://doc.l
|
|
|
144
144
|
</div>
|
|
145
145
|
</dialog>
|
|
146
146
|
|
|
147
|
-
<template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJzdHJpbmciLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiBwaXBlbGluZSB0byBleGVjdXRlXG5cblRhcmdldCBbcGlwZWxpbmVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vZW5naW5lL3BpcGVsaW5lLykgdG8gZXhlY3V0ZS4gRm9yIGV4YW1wbGUsIHRvIHNwZWNpZnkgdGhlIFtydW5dKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuLykgcGlwZWxpbmUgYW5kIGEgW1lBTUxdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29uZmlnL3lhbWwvKSBjb25maWcgZmlsZSBjb250YWluaW5nIGxhdW5jaCBhcmd1bWVudHMsIHVzZTogIGBgYCBjb25zb2xlICQgdGVueCBydW4gQH4vbXkueWFtbCBgYGAgVGhlIFlBTUwgZmlsZSBtYXkgc3BlY2lmeSB0aGUgcGlwZWxpbmUgbmFtZSB2aWEgYSAndGVueCcgZW50cnksIGFsbG93aW5nIHRoZSAncGlwZWxpbmUnIGFyZ3VtZW50IHRvIGJlIG9taXR0ZWQgZnJvbSB0aGUgY29tbWFuZCBsaW5lLiAgRm9yIGV4YW1wbGUgKG15LnlhbWwpOiAgYGBgIHlhbWwgdGVueDogcnVuICMgc2V0IHRoZSBwaXBlbGluZSB0byAncnVuJyBsaWNlbnNlS2V5OiA8bXktbGljZW5zZS1qd3Q+IC4uLiBgYGAgIEFsbG93cyBmb3IgbGF1bmNoaW5nIHRoZSBydW4gcGlwZWxpbmUgdmlhOiBgYGAgY29uc29sZSAkIHRlbnggQH4vbXkueWFtbCBgYGAiCiAgICB9LAogICAgImxpY2Vuc2UiIDogewogICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgImZpbGUiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlBhdGggdG8gYSBmaWxlIGNvbnRhaW5pbmcgdGhlIDEweCBsaWNlbnNlIEpXVFxuXG5QYXRoIHRvIGEgZmlsZSBjb250YWluaW5nIHRoZSBzaWduZWQgMTB4IGxpY2Vuc2UgSldULiBQcmVmZXJyZWQgb3ZlciBgbGljZW5zZUtleWAgZm9yIHByb2R1Y3Rpb246IHRoZSB0b2tlbiBpcyBub3QgdmlzaWJsZSBpbiBgcHNgIG91dHB1dCBhbmQgaXMgZWFzeSB0byByb3RhdGUgYnkgcmVwbGFjaW5nIHRoZSBmaWxlLiAgRG93bmxvYWQgYSBsaWNlbnNlIGZyb20geW91ciBbYWNjb3VudF0oaHR0cHM6Ly9jb25zb2xlLmxvZzEweC5jb20pLiAgSWYgYm90aCBgbGljZW5zZUZpbGVgIGFuZCBgbGljZW5zZUtleWAgYXJlIHByb3ZpZGVkLCB0aGUgZmlsZSB3aW5zLiIKICAgICAgICB9LAogICAgICAgICJrZXkiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIjEweCBsaWNlbnNlIEpXVCAoaW5saW5lKVxuXG5UaGUgc2lnbmVkIDEweCBsaWNlbnNlIEpXVCwgcGFzc2VkIGlubGluZS4gRGlzY291cmFnZWQgb24gdGhlIGNvbW1hbmQgbGluZSBiZWNhdXNlIHRoZSB2YWx1ZSBpcyB2aXNpYmxlIGluIGBwc2Agb3V0cHV0OyBwcmVmZXIgYGxpY2Vuc2VGaWxlYCBpbiBwcm9kdWN0aW9uLiAgRG93bmxvYWQgYSBsaWNlbnNlIGZyb20geW91ciBbYWNjb3VudF0oaHR0cHM6Ly9jb25zb2xlLmxvZzEweC5jb20pLiIKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAiYWlyZ2FwcGVkIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJib29sZWFuIiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlJ1biB3aXRob3V0IGNvbnRhY3RpbmcgdGhlIDEweCBzZXJ2aWNlXG5cbldoZW4gYHRydWVgLCB0aGUgbGljZW5zZSBpcyB2ZXJpZmllZCBsb2NhbGx5IChzaWduYXR1cmUgKyBjbGFpbXMpIGFuZCBubyBjYWxscyBhcmUgbWFkZSB0byB0aGUgMTB4IHNlcnZpY2U6IG5vIHN0YXJ0dXAgdmFsaWRhdGlvbiwgbm8gbWV0cmljcyByZXBvcnRpbmcsIG5vIHVzZXItYXR0cmlidXRlIGVucmljaG1lbnQuIFN1aXRhYmxlIGZvciBmdWxseSBhaXJnYXBwZWQgZGVwbG95bWVudHMgd2hlcmUgdGhlIGVuZ2luZSBoYXMgbm8gcGF0aCB0byB0aGUgdmVuZG9yIFNhYVMuICBXaGVuIGBmYWxzZWAgKGRlZmF1bHQpLCB0aGUgZW5naW5lIGFkZGl0aW9uYWxseSB2YWxpZGF0ZXMgdGhlIGxpY2Vuc2UgYWdhaW5zdCB0aGUgMTB4IHNlcnZpY2UgYXQgc3RhcnR1cDsgYSBub24tMnh4IHJlc3BvbnNlIHJlZnVzZXMgdG8gc3RhcnQuICBgZGVtb2AgYW5kIGBsaW1pdGVkYCBsaWNlbnNlIHR5cGVzIGNhbm5vdCBydW4gYWlyZ2FwcGVkLCBpZiBgYWlyZ2FwcGVkOiB0cnVlYCBpcyBzZXQgd2l0aCBvbmUgb2YgdGhlc2UgbGljZW5zZSB0eXBlcywgYSB3YXJuaW5nIGlzIGxvZ2dlZCBhbmQgdGhlIGVuZ2luZSBydW5zIGluIG9ubGluZSBtb2RlIGFueXdheS4gKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IGZhbHNlKSIsCiAgICAgICJkZWZhdWx0IiA6IGZhbHNlCiAgICB9LAogICAgIm1ldHJpY0VuZHBvaW50IiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJzdHJpbmciLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiMTB4IHNlcnZpY2UgUHJvbWV0aGV1cyBtZXRyaWNzIGVuZHBvaW50XG5cblNwZWNpZmllcyB0aGUgYWRkcmVzcyBvZiB0aGUgUHJvbWV0aGV1cyByZW1vdGUgd3JpdGUgZW5kcG9pbnQgdG8gd3JpdGUgcGlwZWxpbmUgdXNhZ2UgYW5kIGhlYWx0aCBtZXRyaWNzLiAgISEhIG5vdGUgXCJcIiAgICAgIFRoaXMgYXJndW1lbnQgaXMgb25seSBzZXR0YWJsZSBpbiB0aGUgMTB4ICdvbi1wcmVtaXNlcycgYnVpbGQuIChEZWZhdWx0OiBodHRwczovL3Byb21ldGhldXMubG9nMTB4LmNvbS9hcGkvdjEvd3JpdGUpIiwKICAgICAgImRlZmF1bHQiIDogImh0dHBzOi8vcHJvbWV0aGV1cy5sb2cxMHguY29tL2FwaS92MS93cml0ZSIKICAgIH0sCiAgICAicnVudGltZSIgOiB7CiAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAibmFtZSIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSB0byByZXBvcnQgdG8gdGhlIDEweCBzZXJ2aWNlIGVuZHBvaW50IGZvciB0aGlzIHJ1bnRpbWUgaW5zdGFuY2VcblxuU3BlY2lmaWVzIGEgbG9naWNhbCBuYW1lIHVzZWQgYXMgYSBbdGFnIHZhbHVlXShodHRwczovL3d3dy5iYWVsZHVuZy5jb20vbWljcm9tZXRlciM0LW1ldGVycykgZm9yIHBpcGVsaW5lIG1ldHJpY3MuIFRoaXMgdmFsdWUgaWRlbnRpZmllcyBpbnN0YW5jZXMgb2YgdGhlIDEweCBydW4vY29tcGlsZSBwaXBlbGluZXMgd2hlbiByZXBvcnRpbmcgdG8gdGhlIDEweCBzZXJ2aWNlLiBGb3IgZXhhbXBsZSwgZm9yIGEgMTB4IFtSZWNlaXZlcl0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcHBzL3JlY2VpdmVyLykgd2l0aCBvcHRpbWl6YXRpb24gZW5hYmxlZCBmb3IgRmx1ZW50IEJpdCBmb3J3YXJkZXJzIGNvbGxlY3RpbmcgZXZlbnRzIGZyb20gYSBgYnJva2VyYCB1c2VyLWFwcCwgdGhpcyB2YWx1ZSBjYW4gYmUgc2V0IHRvOiBgcmVjZWl2ZV9mbHVlbnRiaXRfYnJva2VyYCIKICAgICAgICB9LAogICAgICAgICJhdHRyaWJ1dGVzIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIGF0dHJpYnV0ZXMgdG8gYWRkIHRvIGFsbCBtZXRyaWNzIHJlcG9ydGluZ1xuXG5TcGVjaWZpZXMgYSBsaXN0IG9mIGtleS12YWx1ZSBwYWlycyBpbiB0aGUgZm9ybWF0IGBrZXk6dmFsdWVgIHRvIGJlIGFkZGVkIGFzIHRhZ3MgdG8gcGlwZWxpbmUgbWV0cmljcyByZXBvcnRlZCB0byB0aGUgMTB4IHNlcnZpY2UuIFRoZXNlIHRhZ3MgZW5hYmxlIGZpbmVyLWdyYWluZWQgZmlsdGVyaW5nIGFuZCBhbmFseXNpcyBpbiBtb25pdG9yaW5nIHN5c3RlbXMgbGlrZSBQcm9tZXRoZXVzLiBNdWx0aXBsZSBhdHRyaWJ1dGVzIGNhbiBiZSBjb21iaW5lZCBpbnRvIGEgc2luZ2xlIHN0cmluZyB1c2luZyBhIHNlbWljb2xvbiAoYDtgKSwgZS5nLiwgYGtleTE6dmFsMTtrZXkyOnZhbDJgLiAgSWYgYSBrZXkgZG9lcyBub3Qgc3RhcnQgd2l0aCB0ZW54XywgdGhlIHByZWZpeCB0ZW54XyBpcyBhdXRvbWF0aWNhbGx5IHByZXBlbmRlZCB0byBlbnN1cmUgY29uc2lzdGVuY3kgaW4gdGFnIG5hbWluZyBjb252ZW50aW9ucy4gRm9yIGV4YW1wbGUsIGEgcHJvdmlkZWQgYXR0cmlidXRlIGFwcDpteS1hcHAgd2lsbCBiZSByZXBvcnRlZCBhcyB0ZW54X2FwcDpteS1hcHAgIGBgYCB5YW1sICAgcnVudGltZUF0dHJpYnV0ZXM6ICAgICAtIGFwcDpyZXBvcnRlciAgICAgLSBlbnY6ZWRnZSBgYGAiLAogICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAiaW5jbHVkZVBhdGhzIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJhcnJheSIsCiAgICAgICAgInN0cmluZyIsCiAgICAgICAgIm51bGwiCiAgICAgIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJQaXBlbGluZSBpbmNsdWRlIGZvbGRlcnNcblxuU3BlY2lmaWVzIGZvbGRlcnMgb24gZGlzayBmb3IgcmVzb2xpbmcgcmVsYXRpdmUgcmVmZXJlbmNlcyB3aXRoaW4gW2luY2x1ZGUgZGlyZWN0aXZlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcveWFtbC8jaW5jbHVkZS1kaXJlY3RpdmVzKS4gKERlZmF1bHQ6IFtcIndvcmtpbmcgZGlyZWN0b3J5IG9mIGN1cnJlbnQgcHJvY2Vzc1wiXSkiLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgIH0sCiAgICAgICJkZWZhdWx0IiA6IFsKICAgICAgICAid29ya2luZyBkaXJlY3Rvcnkgb2YgY3VycmVudCBwcm9jZXNzIgogICAgICBdCiAgICB9LAogICAgImphckZpbGVzIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJhcnJheSIsCiAgICAgICAgInN0cmluZyIsCiAgICAgICAgIm51bGwiCiAgICAgIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJKYXIgZmlsZXMgdG8gbG9hZFxuXG5TcGVjaWZpZXMgYSBsaXN0IG9mIC5qYXIgZmlsZXMgdG8gbG9hZCBpbnRvIHRoZSBob3N0IEpWTSBmb3IgdXNlIGJ5IFtjb21waWxlXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9jb21waWxlLyksIFtpbnB1dF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvaW5wdXQvKSBhbmQgW291dHB1dF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvb3V0cHV0LykgQVBJIGV4dGVuc2lvbnMuICAhISEgbm90ZSBcIlwiICAgICAgVGhpcyBhcmd1bWVudCBpcyBub3Qgc3VwcG9ydGVkIGluIHRoZSBbUnVudGltZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9lbmdpbmUvZmxhdm9ycy8jcnVudGltZSkgZmxhdm9yLiIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgfQogICAgfSwKICAgICJxdWlldCIgOiB7CiAgICAgICJ0eXBlIiA6IFsKICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgInN0cmluZyIsCiAgICAgICAgIm51bGwiCiAgICAgIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJEaXNhYmxlIHByaW50aW5nIGJpbmFyeSB2ZXJzaW9uIGluZm9ybWF0aW9uIHRvIHRoZSBjb25zb2xlXG5cbkRpc2FibGUgcHJpbnRpbmcgYnVpbGQvdmVyc2lvbiBpbmZvcm1hdGlvbiB0byB0aGUgY29uc29sZSB1cG9uIGxhdW5jaCAoQWNjZXB0cyBib29sZWFuIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogZmFsc2UpIiwKICAgICAgImRlZmF1bHQiIDogZmFsc2UKICAgIH0sCiAgICAiZGlzYWJsZWRBcmdzIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJhcnJheSIsCiAgICAgICAgInN0cmluZyIsCiAgICAgICAgIm51bGwiCiAgICAgIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaW1pdCBhcmd1bWVudCB2YWx1ZXMgdGhhdCBjYW4gYmUgc2V0IGJ5IHVzZXJzXG5cblNwZWNpZmllcyBhIGxpc3Qgb2YgbGF1bmNoIGFyZ3VtZW50cyB0aGF0IGFyZSBkaXNhbGxvd2VkIGZyb20gZWl0aGVyIGNvbW1hbmQgbGluZSBvciB1c2VyIGNvbmZpZyBmaWxlcy4gVGhpcyBhcmd1bWVudCBwcm92aWRlcyBhIG1ldGhvZCBvZiBsaW1pdGluZyB0aGUgdGFyZ2V0IFtwaXBlbGluZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9zaGFyZWQvYm9vdHN0cmFwLyNwaXBlbGluZSksIFtzb3VyY2VdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29uZmlnLyNzb3VyY2VzKSBhbmQgYW5kIFtjb21tYW5kIGxpbmVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29uZmlnL2NsaS8pIHNldHRhYmxlIGJ5IHRoZSB1c2VyLiAgVGhpcyBtZWNoYW5pc20gZW5hYmxlcyBwaXBlbGluZSBsYXVuY2hlcnMgc3VjaCBhcyB0aGUgW1F1YXJrdXMgbGF1bmNoZXJdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2xhdW5jaC8jcXVhcmt1cykgdG8gbGltaXQgdXNlciBpbnB1dCByZWNlaXZlZCB2aWEgUkVTVCByZXF1ZXN0cyB0byBhIHRhcmdldCBzdWJzZXQgb2YgJ3NhZmUnIGFyZ3VtZW50cy4gIEZvciBleGFtcGxlLCBhZGRpbmcgW3Byb2NPdXRDb21tYW5kXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9vdXRwdXQvZXZlbnQvcHJvY2Vzcy8jcHJvY291dGNvbW1hbmQpIHRvIHRoaXMgbGlzdCBlbnN1cmVzIHRoYXQgbm8gZXh0ZXJuYWwgcHJvY2VzcyBvdXRwdXRzIGNhbiBiZSBsYXVuY2hlZCBieSB0aGUgcnVudGltZS4gIEFuIG9wdGlvbmFsIHJlZ2V4IHBhdHRlcm4gY2FuIGxpbWl0IGFyZ3VtZW50cyB0byBhIGNlcnRhaW4gc3Vic2V0IG9mIHZhbHVlcyBpbiB0aGUgZm9ybSBvZjogYDxhcmctbmFtZT5bOnBhdHRlcm5dYCAoZS5nLiwgc3BlY2lmaWMgcHJvY2VzcyBuYW1lcykuIE11bHRpcGxlIHBhdHRlcm5zIGNhbiBiZSBzcGVjaWZpZWQgcGVyIGFyZ3VtZW50LiAgTWF0Y2hpbmcgdGhlIGBzb3VyY2VgIGFyZ3VtZW50IGRldGVybWluZXMgd2hpY2ggc291cmNlIGxvY2F0aW9ucyB0byBpbnNwZWN0IChlLmcuLCBmb2xkZXJzLCBmaWxlcywgR2l0SHViIHJlcG9zKS4gRm9yIGV4YW1wbGUsIGFuIGFkbWluIG1heSBwbGFjZSAueWFtbCBjb25maWcgZmlsZXMgY29udGFpbmluZyBwcmVzZXQgRmx1ZW50IEJpdCBvdXRwdXRzIGluIGAvZXRjL2xvZzEweC9gLCBleGNsdWRpbmcgdGhlaXIgZW5jbG9zZWQgYXJndW1lbnRzIGZyb20gbGltaXRzIHNldCBieSB0aGlzIGxpc3QsIHdoaWxlIGRpc2FsbG93aW5nIHVzZXJzIHRvIGRpcmVjdGx5IHNldCB0aGVtIHZpYSB0aGUgY29tbWFuZC1saW5lIG9yIGJ5IHNvdXJjaW5nIHRoZW0gZnJvbSB0aGVpciBsb2NhbC9HaXRIdWIgY29uZmlnIGZpbGVzIChzZWUgZXhhbXBsZSBiZWxvdykuICBUbyBsaW1pdDogIFRoZSB0YXJnZXQgcGlwZWxpbmUgKGUuZy4sIFtydW5dKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuLyksIFtjb21waWxlXShodHRwczovL2RvYy5sb2cxMHguY29tL2NvbXBpbGUvKSk6ICBgYGAgeWFtbCAgIGRpc2FibGVkQXJnczogICAtIFwicGlwZWxpbmU6XnJ1blwiICMgZGlzYWxsb3cgY29tcGlsZSBgYGAgIFRhcmdldCBhcmd1bWVudHMgKGUuZy4sIFtwcm9jZXNzIG91dHB1dHNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL291dHB1dC9ldmVudC9wcm9jZXNzLykpOiAgYGBgIHlhbWwgICAtIFwicHJvY091dENvbW1hbmQ6XmZsdWVudC1iaXQkXCIgICAjIGxpbWl0IHRvIEZsdWVudCBCaXQgb25seSAgICMgLSBwcm9jT3V0QXJnczogPHNwZWNpZnktcmVnZXg+ICAjIGZ1cnRoZXIgbGltaXQgYXJncyBmb3IgRmx1ZW50IEJpdCBgYGAgIENvbnRyb2wgd2hpY2ggYXJndW1lbnQgW3NvdXJjZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29uZmlnLyNzb3VyY2VzKSB0byBpbnNwZWN0OiAgYGBgIHlhbWwgICAtIFwic291cmNlOl5naXRodWIuKlwiICAgICAgICAgICAgICMgaW5zcGVjdCBvZiBhbGwgYXJndW1lbnRzIHNvdXJjZWQgZnJvbSBHaXRIdWIgYWdhaW5zdCB0aGlzIGxpc3QgICAtIFwic291cmNlOl4oPyEvZXRjL2xvZzEweC8pLipcIiAgICMgaW5zcGVjdCBvZiBhbGwgYXJndW1lbnRzIHNvdXJjZWQgZnJvbSBjb25maWcgZmlsZXMgTk9UIGNvbnRhaW5lZCBpbjogL2V0Yy9sb2cxMHgvIGBgYCIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgfQogICAgfSwKICAgICJkZWJ1Z0VudlZhcnMiIDogewogICAgICAidHlwZSIgOiBbCiAgICAgICAgImFycmF5IiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3QgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIGRlYnVnXG5cblNwZWNpZmllcyBhIGxpc3Qgb2YgZW52IHZhciBuYW1lcyBmb3Igd2hpY2ggdG8gbG9nIGluZm9ybWF0aW9uIHJlbGF0aW5nIHRvIGhvdyB0aGV5IGFyZSByZXNvbHZlZC4gRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY2FsbDogYEwxRW52LmdldChcIm15VmFyXCIsIFwibXlEZWZhdWx0XCIpYCBjYW4gYmUgcmVzb2x2ZWQgZnJvbSBhIG51bWJlciBvZiBbc291cmNlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhFbnYuZ2V0KSByYW5naW5nIGZyb20gbGF1bmNoIGFyZ3VtZW50cywgdG8gT1MvSlZNIHByb3BlcnRpZXMgYW5kIGEgZGVmYXVsdCB2YWx1ZSAoZS5nLiwgbXlEZWZhdWx0KS4gIFNldHRpbmcgdGhpcyB2YWx1ZSB0byBgbXlWYXJgIHdpbGwgbG9nIElORk8gbGV2ZWwgaW5mb3JtYXRpb24gZGV0YWlsaW5nIGhvdyB0aGUgdmFsdWUgb2YgdGhlIGBteVZhcmAgd2FzIHJlc29sdmVkLiIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgfQogICAgfQogIH0sCiAgInJlcXVpcmVkIiA6IFsKICAgICJ0ZW54IgogIF0sCiAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlCn0=</template>
|
|
147
|
+
<template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJzdHJpbmciLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiBwaXBlbGluZSB0byBleGVjdXRlXG5cblRhcmdldCBbcGlwZWxpbmVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vZW5naW5lL3BpcGVsaW5lLykgdG8gZXhlY3V0ZS4gRm9yIGV4YW1wbGUsIHRvIHNwZWNpZnkgdGhlIFtydW5dKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuLykgcGlwZWxpbmUgYW5kIGEgW1lBTUxdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29uZmlnL3lhbWwvKSBjb25maWcgZmlsZSBjb250YWluaW5nIGxhdW5jaCBhcmd1bWVudHMsIHVzZTogIGBgYCBjb25zb2xlICQgdGVueCBydW4gQH4vbXkueWFtbCBgYGAgVGhlIFlBTUwgZmlsZSBtYXkgc3BlY2lmeSB0aGUgcGlwZWxpbmUgbmFtZSB2aWEgYSAndGVueCcgZW50cnksIGFsbG93aW5nIHRoZSAncGlwZWxpbmUnIGFyZ3VtZW50IHRvIGJlIG9taXR0ZWQgZnJvbSB0aGUgY29tbWFuZCBsaW5lLiAgRm9yIGV4YW1wbGUgKG15LnlhbWwpOiAgYGBgIHlhbWwgdGVueDogcnVuICMgc2V0IHRoZSBwaXBlbGluZSB0byAncnVuJyBsaWNlbnNlS2V5OiA8bXktbGljZW5zZS1qd3Q+IC4uLiBgYGAgIEFsbG93cyBmb3IgbGF1bmNoaW5nIHRoZSBydW4gcGlwZWxpbmUgdmlhOiBgYGAgY29uc29sZSAkIHRlbnggQH4vbXkueWFtbCBgYGAiCiAgICB9LAogICAgImxpY2Vuc2UiIDogewogICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgImZpbGUiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlBhdGggdG8gYSBmaWxlIGNvbnRhaW5pbmcgdGhlIDEweCBsaWNlbnNlIEpXVFxuXG5QYXRoIHRvIGEgZmlsZSBjb250YWluaW5nIHRoZSBzaWduZWQgMTB4IGxpY2Vuc2UgSldULiBQcmVmZXJyZWQgb3ZlciBgbGljZW5zZUtleWAgZm9yIHByb2R1Y3Rpb246IHRoZSB0b2tlbiBpcyBub3QgdmlzaWJsZSBpbiBgcHNgIG91dHB1dCBhbmQgaXMgZWFzeSB0byByb3RhdGUgYnkgcmVwbGFjaW5nIHRoZSBmaWxlLiAgV2l0aG91dCBhIGxpY2Vuc2UgdGhlIGVuZ2luZSBydW5zIG9uIHRoZSBidWlsdC1pbiAzMC1kYXkgZXZhbHVhdGlvbiBsaWNlbnNlLiBTZWUgW2xpY2Vuc2luZ10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9tYW5hZ2UvbGljZW5zZS8pIGZvciBwcm9kdWN0aW9uIGxpY2Vuc2VzLiAgSWYgYm90aCBgbGljZW5zZUZpbGVgIGFuZCBgbGljZW5zZUtleWAgYXJlIHByb3ZpZGVkLCB0aGUgZmlsZSB3aW5zLiIKICAgICAgICB9LAogICAgICAgICJrZXkiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIjEweCBsaWNlbnNlIEpXVCAoaW5saW5lKVxuXG5UaGUgc2lnbmVkIDEweCBsaWNlbnNlIEpXVCwgcGFzc2VkIGlubGluZS4gRGlzY291cmFnZWQgb24gdGhlIGNvbW1hbmQgbGluZSBiZWNhdXNlIHRoZSB2YWx1ZSBpcyB2aXNpYmxlIGluIGBwc2Agb3V0cHV0OyBwcmVmZXIgYGxpY2Vuc2VGaWxlYCBpbiBwcm9kdWN0aW9uLiAgV2l0aG91dCBhIGxpY2Vuc2UgdGhlIGVuZ2luZSBydW5zIG9uIHRoZSBidWlsdC1pbiAzMC1kYXkgZXZhbHVhdGlvbiBsaWNlbnNlLiBTZWUgW2xpY2Vuc2luZ10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9tYW5hZ2UvbGljZW5zZS8pIGZvciBwcm9kdWN0aW9uIGxpY2Vuc2VzLiIKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAiYWlyZ2FwcGVkIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJib29sZWFuIiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlJ1biB3aXRob3V0IGNvbnRhY3RpbmcgdGhlIDEweCBzZXJ2aWNlXG5cbldoZW4gYHRydWVgLCB0aGUgbGljZW5zZSBpcyB2ZXJpZmllZCBsb2NhbGx5IChzaWduYXR1cmUgKyBjbGFpbXMpIGFuZCBubyBjYWxscyBhcmUgbWFkZSB0byB0aGUgMTB4IHNlcnZpY2U6IG5vIHN0YXJ0dXAgdmFsaWRhdGlvbiwgbm8gbWV0cmljcyByZXBvcnRpbmcsIG5vIHVzZXItYXR0cmlidXRlIGVucmljaG1lbnQuIFN1aXRhYmxlIGZvciBmdWxseSBhaXJnYXBwZWQgZGVwbG95bWVudHMgd2hlcmUgdGhlIGVuZ2luZSBoYXMgbm8gcGF0aCB0byB0aGUgdmVuZG9yIFNhYVMuICBXaGVuIGBmYWxzZWAgKGRlZmF1bHQpLCB0aGUgZW5naW5lIGFkZGl0aW9uYWxseSBjYWxscyB0aGUgMTB4IHNlcnZpY2UgYXQgc3RhcnR1cCwgYW5kIG9ubHkgd2hlbiBhIHNlcnZpY2UgZW5kcG9pbnQgaXMgYWN0dWFsbHkgY29uZmlndXJlZDsgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBuYW1lcyBub25lLCBzbyBhbiB1bmNvbmZpZ3VyZWQgZW5naW5lIG1ha2VzIG5vIGNhbGwgZWl0aGVyIHdheS4gVGhlIGNhbGwgaXMgYmVzdC1lZmZvcnQgZW5yaWNobWVudDogdGhlIGxvY2FsIHZlcmlmaWNhdGlvbiBpcyB0aGUgZ2F0ZSwgYW5kIGEgc2VydmljZSB0aGF0IGNhbm5vdCBiZSByZWFjaGVkLCBvciB0aGF0IGFuc3dlcnMgd2l0aCBhbiBlcnJvciwgcHJvZHVjZXMgYSB3YXJuaW5nIGFuZCB0aGUgZW5naW5lIHJ1bnMuICBBaXJnYXBwZWQgbW9kZSBpcyBob25vcmVkIGZvciBldmVyeSBsaWNlbnNlIHR5cGUuIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiBmYWxzZSkiLAogICAgICAiZGVmYXVsdCIgOiBmYWxzZQogICAgfSwKICAgICJtZXRyaWNFbmRwb2ludCIgOiB7CiAgICAgICJ0eXBlIiA6IFsKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIjEweCBzZXJ2aWNlIFByb21ldGhldXMgbWV0cmljcyBlbmRwb2ludFxuXG5TcGVjaWZpZXMgdGhlIGFkZHJlc3Mgb2YgdGhlIFByb21ldGhldXMgcmVtb3RlIHdyaXRlIGVuZHBvaW50IHRvIHdyaXRlIHBpcGVsaW5lIHVzYWdlIGFuZCBoZWFsdGggbWV0cmljcy4gIFVuc2V0IGJ5IGRlZmF1bHQ6IGFuIGVuZ2luZSB3aXRoIG5vIG1ldHJpYyBlbmRwb2ludCBjb25maWd1cmVkIGNvbGxlY3RzIG1ldHJpY3MgbG9jYWxseSBhbmQgc2VuZHMgdGhlbSBub3doZXJlLiAgISEhIG5vdGUgXCJcIiAgICAgIFRoaXMgYXJndW1lbnQgaXMgb25seSBzZXR0YWJsZSBpbiB0aGUgMTB4ICdvbi1wcmVtaXNlcycgYnVpbGQuIgogICAgfSwKICAgICJydW50aW1lIiA6IHsKICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICJuYW1lIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJOYW1lIHRvIHJlcG9ydCB0byB0aGUgMTB4IHNlcnZpY2UgZW5kcG9pbnQgZm9yIHRoaXMgcnVudGltZSBpbnN0YW5jZVxuXG5TcGVjaWZpZXMgYSBsb2dpY2FsIG5hbWUgdXNlZCBhcyBhIFt0YWcgdmFsdWVdKGh0dHBzOi8vd3d3LmJhZWxkdW5nLmNvbS9taWNyb21ldGVyIzQtbWV0ZXJzKSBmb3IgcGlwZWxpbmUgbWV0cmljcy4gVGhpcyB2YWx1ZSBpZGVudGlmaWVzIGluc3RhbmNlcyBvZiB0aGUgMTB4IHJ1bi9jb21waWxlIHBpcGVsaW5lcyB3aGVuIHJlcG9ydGluZyB0byB0aGUgMTB4IHNlcnZpY2UuIEZvciBleGFtcGxlLCBmb3IgYSAxMHggW1JlY2VpdmVyXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwcHMvcmVjZWl2ZXIvKSB3aXRoIG9wdGltaXphdGlvbiBlbmFibGVkIGZvciBGbHVlbnQgQml0IGZvcndhcmRlcnMgY29sbGVjdGluZyBldmVudHMgZnJvbSBhIGBicm9rZXJgIHVzZXItYXBwLCB0aGlzIHZhbHVlIGNhbiBiZSBzZXQgdG86IGByZWNlaXZlX2ZsdWVudGJpdF9icm9rZXJgIgogICAgICAgIH0sCiAgICAgICAgImF0dHJpYnV0ZXMiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2YgYXR0cmlidXRlcyB0byBhZGQgdG8gYWxsIG1ldHJpY3MgcmVwb3J0aW5nXG5cblNwZWNpZmllcyBhIGxpc3Qgb2Yga2V5LXZhbHVlIHBhaXJzIGluIHRoZSBmb3JtYXQgYGtleTp2YWx1ZWAgdG8gYmUgYWRkZWQgYXMgdGFncyB0byBwaXBlbGluZSBtZXRyaWNzIHJlcG9ydGVkIHRvIHRoZSAxMHggc2VydmljZS4gVGhlc2UgdGFncyBlbmFibGUgZmluZXItZ3JhaW5lZCBmaWx0ZXJpbmcgYW5kIGFuYWx5c2lzIGluIG1vbml0b3Jpbmcgc3lzdGVtcyBsaWtlIFByb21ldGhldXMuIE11bHRpcGxlIGF0dHJpYnV0ZXMgY2FuIGJlIGNvbWJpbmVkIGludG8gYSBzaW5nbGUgc3RyaW5nIHVzaW5nIGEgc2VtaWNvbG9uIChgO2ApLCBlLmcuLCBga2V5MTp2YWwxO2tleTI6dmFsMmAuICBJZiBhIGtleSBkb2VzIG5vdCBzdGFydCB3aXRoIHRlbnhfLCB0aGUgcHJlZml4IHRlbnhfIGlzIGF1dG9tYXRpY2FsbHkgcHJlcGVuZGVkIHRvIGVuc3VyZSBjb25zaXN0ZW5jeSBpbiB0YWcgbmFtaW5nIGNvbnZlbnRpb25zLiBGb3IgZXhhbXBsZSwgYSBwcm92aWRlZCBhdHRyaWJ1dGUgYXBwOm15LWFwcCB3aWxsIGJlIHJlcG9ydGVkIGFzIHRlbnhfYXBwOm15LWFwcCAgYGBgIHlhbWwgICBydW50aW1lQXR0cmlidXRlczogICAgIC0gYXBwOnJlcG9ydGVyICAgICAtIGVudjplZGdlIGBgYCIsCiAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgICJpbmNsdWRlUGF0aHMiIDogewogICAgICAidHlwZSIgOiBbCiAgICAgICAgImFycmF5IiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlBpcGVsaW5lIGluY2x1ZGUgZm9sZGVyc1xuXG5TcGVjaWZpZXMgZm9sZGVycyBvbiBkaXNrIGZvciByZXNvbGluZyByZWxhdGl2ZSByZWZlcmVuY2VzIHdpdGhpbiBbaW5jbHVkZSBkaXJlY3RpdmVzXShodHRwczovL2RvYy5sb2cxMHguY29tL2NvbmZpZy95YW1sLyNpbmNsdWRlLWRpcmVjdGl2ZXMpLiAoRGVmYXVsdDogW1wid29ya2luZyBkaXJlY3Rvcnkgb2YgY3VycmVudCBwcm9jZXNzXCJdKSIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgfSwKICAgICAgImRlZmF1bHQiIDogWwogICAgICAgICJ3b3JraW5nIGRpcmVjdG9yeSBvZiBjdXJyZW50IHByb2Nlc3MiCiAgICAgIF0KICAgIH0sCiAgICAiamFyRmlsZXMiIDogewogICAgICAidHlwZSIgOiBbCiAgICAgICAgImFycmF5IiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkphciBmaWxlcyB0byBsb2FkXG5cblNwZWNpZmllcyBhIGxpc3Qgb2YgLmphciBmaWxlcyB0byBsb2FkIGludG8gdGhlIGhvc3QgSlZNIGZvciB1c2UgYnkgW2NvbXBpbGVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2NvbXBpbGUvKSwgW2lucHV0XShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9pbnB1dC8pIGFuZCBbb3V0cHV0XShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9vdXRwdXQvKSBBUEkgZXh0ZW5zaW9ucy4gICEhISBub3RlIFwiXCIgICAgICBUaGlzIGFyZ3VtZW50IGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhlIFtSdW50aW1lXShodHRwczovL2RvYy5sb2cxMHguY29tL2VuZ2luZS9mbGF2b3JzLyNydW50aW1lKSBmbGF2b3IuIiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICB9CiAgICB9LAogICAgInF1aWV0IiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJib29sZWFuIiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkRpc2FibGUgcHJpbnRpbmcgYmluYXJ5IHZlcnNpb24gaW5mb3JtYXRpb24gdG8gdGhlIGNvbnNvbGVcblxuRGlzYWJsZSBwcmludGluZyBidWlsZC92ZXJzaW9uIGluZm9ybWF0aW9uIHRvIHRoZSBjb25zb2xlIHVwb24gbGF1bmNoIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiBmYWxzZSkiLAogICAgICAiZGVmYXVsdCIgOiBmYWxzZQogICAgfSwKICAgICJkaXNhYmxlZEFyZ3MiIDogewogICAgICAidHlwZSIgOiBbCiAgICAgICAgImFycmF5IiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpbWl0IGFyZ3VtZW50IHZhbHVlcyB0aGF0IGNhbiBiZSBzZXQgYnkgdXNlcnNcblxuU3BlY2lmaWVzIGEgbGlzdCBvZiBsYXVuY2ggYXJndW1lbnRzIHRoYXQgYXJlIGRpc2FsbG93ZWQgZnJvbSBlaXRoZXIgY29tbWFuZCBsaW5lIG9yIHVzZXIgY29uZmlnIGZpbGVzLiBUaGlzIGFyZ3VtZW50IHByb3ZpZGVzIGEgbWV0aG9kIG9mIGxpbWl0aW5nIHRoZSB0YXJnZXQgW3BpcGVsaW5lXShodHRwczovL2RvYy5sb2cxMHguY29tL3NoYXJlZC9ib290c3RyYXAvI3BpcGVsaW5lKSwgW3NvdXJjZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcvI3NvdXJjZXMpIGFuZCBhbmQgW2NvbW1hbmQgbGluZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcvY2xpLykgc2V0dGFibGUgYnkgdGhlIHVzZXIuICBUaGlzIG1lY2hhbmlzbSBlbmFibGVzIHBpcGVsaW5lIGxhdW5jaGVycyBzdWNoIGFzIHRoZSBbUXVhcmt1cyBsYXVuY2hlcl0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvbGF1bmNoLyNxdWFya3VzKSB0byBsaW1pdCB1c2VyIGlucHV0IHJlY2VpdmVkIHZpYSBSRVNUIHJlcXVlc3RzIHRvIGEgdGFyZ2V0IHN1YnNldCBvZiAnc2FmZScgYXJndW1lbnRzLiAgRm9yIGV4YW1wbGUsIGFkZGluZyBbcHJvY091dENvbW1hbmRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL291dHB1dC9ldmVudC9wcm9jZXNzLyNwcm9jb3V0Y29tbWFuZCkgdG8gdGhpcyBsaXN0IGVuc3VyZXMgdGhhdCBubyBleHRlcm5hbCBwcm9jZXNzIG91dHB1dHMgY2FuIGJlIGxhdW5jaGVkIGJ5IHRoZSBydW50aW1lLiAgQW4gb3B0aW9uYWwgcmVnZXggcGF0dGVybiBjYW4gbGltaXQgYXJndW1lbnRzIHRvIGEgY2VydGFpbiBzdWJzZXQgb2YgdmFsdWVzIGluIHRoZSBmb3JtIG9mOiBgPGFyZy1uYW1lPls6cGF0dGVybl1gIChlLmcuLCBzcGVjaWZpYyBwcm9jZXNzIG5hbWVzKS4gTXVsdGlwbGUgcGF0dGVybnMgY2FuIGJlIHNwZWNpZmllZCBwZXIgYXJndW1lbnQuICBNYXRjaGluZyB0aGUgYHNvdXJjZWAgYXJndW1lbnQgZGV0ZXJtaW5lcyB3aGljaCBzb3VyY2UgbG9jYXRpb25zIHRvIGluc3BlY3QgKGUuZy4sIGZvbGRlcnMsIGZpbGVzLCBHaXRIdWIgcmVwb3MpLiBGb3IgZXhhbXBsZSwgYW4gYWRtaW4gbWF5IHBsYWNlIC55YW1sIGNvbmZpZyBmaWxlcyBjb250YWluaW5nIHByZXNldCBGbHVlbnQgQml0IG91dHB1dHMgaW4gYC9ldGMvbG9nMTB4L2AsIGV4Y2x1ZGluZyB0aGVpciBlbmNsb3NlZCBhcmd1bWVudHMgZnJvbSBsaW1pdHMgc2V0IGJ5IHRoaXMgbGlzdCwgd2hpbGUgZGlzYWxsb3dpbmcgdXNlcnMgdG8gZGlyZWN0bHkgc2V0IHRoZW0gdmlhIHRoZSBjb21tYW5kLWxpbmUgb3IgYnkgc291cmNpbmcgdGhlbSBmcm9tIHRoZWlyIGxvY2FsL0dpdEh1YiBjb25maWcgZmlsZXMgKHNlZSBleGFtcGxlIGJlbG93KS4gIFRvIGxpbWl0OiAgVGhlIHRhcmdldCBwaXBlbGluZSAoZS5nLiwgW3J1bl0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vKSwgW2NvbXBpbGVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29tcGlsZS8pKTogIGBgYCB5YW1sICAgZGlzYWJsZWRBcmdzOiAgIC0gXCJwaXBlbGluZTpecnVuXCIgIyBkaXNhbGxvdyBjb21waWxlIGBgYCAgVGFyZ2V0IGFyZ3VtZW50cyAoZS5nLiwgW3Byb2Nlc3Mgb3V0cHV0c10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vb3V0cHV0L2V2ZW50L3Byb2Nlc3MvKSk6ICBgYGAgeWFtbCAgIC0gXCJwcm9jT3V0Q29tbWFuZDpeZmx1ZW50LWJpdCRcIiAgICMgbGltaXQgdG8gRmx1ZW50IEJpdCBvbmx5ICAgIyAtIHByb2NPdXRBcmdzOiA8c3BlY2lmeS1yZWdleD4gICMgZnVydGhlciBsaW1pdCBhcmdzIGZvciBGbHVlbnQgQml0IGBgYCAgQ29udHJvbCB3aGljaCBhcmd1bWVudCBbc291cmNlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcvI3NvdXJjZXMpIHRvIGluc3BlY3Q6ICBgYGAgeWFtbCAgIC0gXCJzb3VyY2U6XmdpdGh1Yi4qXCIgICAgICAgICAgICAgIyBpbnNwZWN0IG9mIGFsbCBhcmd1bWVudHMgc291cmNlZCBmcm9tIEdpdEh1YiBhZ2FpbnN0IHRoaXMgbGlzdCAgIC0gXCJzb3VyY2U6Xig/IS9ldGMvbG9nMTB4LykuKlwiICAgIyBpbnNwZWN0IG9mIGFsbCBhcmd1bWVudHMgc291cmNlZCBmcm9tIGNvbmZpZyBmaWxlcyBOT1QgY29udGFpbmVkIGluOiAvZXRjL2xvZzEweC8gYGBgIiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICB9CiAgICB9LAogICAgImRlYnVnRW52VmFycyIgOiB7CiAgICAgICJ0eXBlIiA6IFsKICAgICAgICAiYXJyYXkiLAogICAgICAgICJzdHJpbmciLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gZGVidWdcblxuU3BlY2lmaWVzIGEgbGlzdCBvZiBlbnYgdmFyIG5hbWVzIGZvciB3aGljaCB0byBsb2cgaW5mb3JtYXRpb24gcmVsYXRpbmcgdG8gaG93IHRoZXkgYXJlIHJlc29sdmVkLiBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjYWxsOiBgTDFFbnYuZ2V0KFwibXlWYXJcIiwgXCJteURlZmF1bHRcIilgIGNhbiBiZSByZXNvbHZlZCBmcm9tIGEgbnVtYmVyIG9mIFtzb3VyY2VzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEVudi5nZXQpIHJhbmdpbmcgZnJvbSBsYXVuY2ggYXJndW1lbnRzLCB0byBPUy9KVk0gcHJvcGVydGllcyBhbmQgYSBkZWZhdWx0IHZhbHVlIChlLmcuLCBteURlZmF1bHQpLiAgU2V0dGluZyB0aGlzIHZhbHVlIHRvIGBteVZhcmAgd2lsbCBsb2cgSU5GTyBsZXZlbCBpbmZvcm1hdGlvbiBkZXRhaWxpbmcgaG93IHRoZSB2YWx1ZSBvZiB0aGUgYG15VmFyYCB3YXMgcmVzb2x2ZWQuIiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICB9CiAgICB9CiAgfSwKICAicmVxdWlyZWQiIDogWwogICAgInRlbngiCiAgXSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==</template>
|
|
148
148
|
|
|
149
149
|
```yaml
|
|
150
150
|
# 🔟❎ run bootstrap configuration
|
|
@@ -179,8 +179,10 @@ To configure the Pipeline Bootstrapper unit, [:material-cog: Edit](https://doc.l
|
|
|
179
179
|
# 'jarFiles' specifies .jar files to dynamically load for use by compile, input and output API extensions.
|
|
180
180
|
jarFiles: []
|
|
181
181
|
|
|
182
|
-
# 'metricEndpoint' specifies
|
|
183
|
-
#
|
|
182
|
+
# 'metricEndpoint' specifies a Prometheus remote-write endpoint for pipeline usage and health metrics.
|
|
183
|
+
# Unset by default. The endpoint is a self-hosted or vendor Prometheus-compatible store, never a 10x
|
|
184
|
+
# service, and is where the MCP reads engine state back from to tune policy such as regulator rates.
|
|
185
|
+
# metricEndpoint: https://prometheus.example.com/api/v1/write
|
|
184
186
|
|
|
185
187
|
# 'disabledArgs' specifies a list of launch arguments that are disallowed from either command line or user config files.
|
|
186
188
|
disabledArgs: []
|
|
@@ -323,7 +325,7 @@ To configure the Pipeline Bootstrapper unit, [:material-cog: Edit](https://doc.l
|
|
|
323
325
|
</div>
|
|
324
326
|
</dialog>
|
|
325
327
|
|
|
326
|
-
<template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJzdHJpbmciLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiBwaXBlbGluZSB0byBleGVjdXRlXG5cblRhcmdldCBbcGlwZWxpbmVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vZW5naW5lL3BpcGVsaW5lLykgdG8gZXhlY3V0ZS4gRm9yIGV4YW1wbGUsIHRvIHNwZWNpZnkgdGhlIFtydW5dKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuLykgcGlwZWxpbmUgYW5kIGEgW1lBTUxdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29uZmlnL3lhbWwvKSBjb25maWcgZmlsZSBjb250YWluaW5nIGxhdW5jaCBhcmd1bWVudHMsIHVzZTogIGBgYCBjb25zb2xlICQgdGVueCBydW4gQH4vbXkueWFtbCBgYGAgVGhlIFlBTUwgZmlsZSBtYXkgc3BlY2lmeSB0aGUgcGlwZWxpbmUgbmFtZSB2aWEgYSAndGVueCcgZW50cnksIGFsbG93aW5nIHRoZSAncGlwZWxpbmUnIGFyZ3VtZW50IHRvIGJlIG9taXR0ZWQgZnJvbSB0aGUgY29tbWFuZCBsaW5lLiAgRm9yIGV4YW1wbGUgKG15LnlhbWwpOiAgYGBgIHlhbWwgdGVueDogcnVuICMgc2V0IHRoZSBwaXBlbGluZSB0byAncnVuJyBsaWNlbnNlS2V5OiA8bXktbGljZW5zZS1qd3Q+IC4uLiBgYGAgIEFsbG93cyBmb3IgbGF1bmNoaW5nIHRoZSBydW4gcGlwZWxpbmUgdmlhOiBgYGAgY29uc29sZSAkIHRlbnggQH4vbXkueWFtbCBgYGAiCiAgICB9LAogICAgImxpY2Vuc2UiIDogewogICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgImZpbGUiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlBhdGggdG8gYSBmaWxlIGNvbnRhaW5pbmcgdGhlIDEweCBsaWNlbnNlIEpXVFxuXG5QYXRoIHRvIGEgZmlsZSBjb250YWluaW5nIHRoZSBzaWduZWQgMTB4IGxpY2Vuc2UgSldULiBQcmVmZXJyZWQgb3ZlciBgbGljZW5zZUtleWAgZm9yIHByb2R1Y3Rpb246IHRoZSB0b2tlbiBpcyBub3QgdmlzaWJsZSBpbiBgcHNgIG91dHB1dCBhbmQgaXMgZWFzeSB0byByb3RhdGUgYnkgcmVwbGFjaW5nIHRoZSBmaWxlLiAgRG93bmxvYWQgYSBsaWNlbnNlIGZyb20geW91ciBbYWNjb3VudF0oaHR0cHM6Ly9jb25zb2xlLmxvZzEweC5jb20pLiAgSWYgYm90aCBgbGljZW5zZUZpbGVgIGFuZCBgbGljZW5zZUtleWAgYXJlIHByb3ZpZGVkLCB0aGUgZmlsZSB3aW5zLiIKICAgICAgICB9LAogICAgICAgICJrZXkiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIjEweCBsaWNlbnNlIEpXVCAoaW5saW5lKVxuXG5UaGUgc2lnbmVkIDEweCBsaWNlbnNlIEpXVCwgcGFzc2VkIGlubGluZS4gRGlzY291cmFnZWQgb24gdGhlIGNvbW1hbmQgbGluZSBiZWNhdXNlIHRoZSB2YWx1ZSBpcyB2aXNpYmxlIGluIGBwc2Agb3V0cHV0OyBwcmVmZXIgYGxpY2Vuc2VGaWxlYCBpbiBwcm9kdWN0aW9uLiAgRG93bmxvYWQgYSBsaWNlbnNlIGZyb20geW91ciBbYWNjb3VudF0oaHR0cHM6Ly9jb25zb2xlLmxvZzEweC5jb20pLiIKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAiYWlyZ2FwcGVkIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJib29sZWFuIiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlJ1biB3aXRob3V0IGNvbnRhY3RpbmcgdGhlIDEweCBzZXJ2aWNlXG5cbldoZW4gYHRydWVgLCB0aGUgbGljZW5zZSBpcyB2ZXJpZmllZCBsb2NhbGx5IChzaWduYXR1cmUgKyBjbGFpbXMpIGFuZCBubyBjYWxscyBhcmUgbWFkZSB0byB0aGUgMTB4IHNlcnZpY2U6IG5vIHN0YXJ0dXAgdmFsaWRhdGlvbiwgbm8gbWV0cmljcyByZXBvcnRpbmcsIG5vIHVzZXItYXR0cmlidXRlIGVucmljaG1lbnQuIFN1aXRhYmxlIGZvciBmdWxseSBhaXJnYXBwZWQgZGVwbG95bWVudHMgd2hlcmUgdGhlIGVuZ2luZSBoYXMgbm8gcGF0aCB0byB0aGUgdmVuZG9yIFNhYVMuICBXaGVuIGBmYWxzZWAgKGRlZmF1bHQpLCB0aGUgZW5naW5lIGFkZGl0aW9uYWxseSB2YWxpZGF0ZXMgdGhlIGxpY2Vuc2UgYWdhaW5zdCB0aGUgMTB4IHNlcnZpY2UgYXQgc3RhcnR1cDsgYSBub24tMnh4IHJlc3BvbnNlIHJlZnVzZXMgdG8gc3RhcnQuICBgZGVtb2AgYW5kIGBsaW1pdGVkYCBsaWNlbnNlIHR5cGVzIGNhbm5vdCBydW4gYWlyZ2FwcGVkLCBpZiBgYWlyZ2FwcGVkOiB0cnVlYCBpcyBzZXQgd2l0aCBvbmUgb2YgdGhlc2UgbGljZW5zZSB0eXBlcywgYSB3YXJuaW5nIGlzIGxvZ2dlZCBhbmQgdGhlIGVuZ2luZSBydW5zIGluIG9ubGluZSBtb2RlIGFueXdheS4gKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IGZhbHNlKSIsCiAgICAgICJkZWZhdWx0IiA6IGZhbHNlCiAgICB9LAogICAgIm1ldHJpY0VuZHBvaW50IiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJzdHJpbmciLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiMTB4IHNlcnZpY2UgUHJvbWV0aGV1cyBtZXRyaWNzIGVuZHBvaW50XG5cblNwZWNpZmllcyB0aGUgYWRkcmVzcyBvZiB0aGUgUHJvbWV0aGV1cyByZW1vdGUgd3JpdGUgZW5kcG9pbnQgdG8gd3JpdGUgcGlwZWxpbmUgdXNhZ2UgYW5kIGhlYWx0aCBtZXRyaWNzLiAgISEhIG5vdGUgXCJcIiAgICAgIFRoaXMgYXJndW1lbnQgaXMgb25seSBzZXR0YWJsZSBpbiB0aGUgMTB4ICdvbi1wcmVtaXNlcycgYnVpbGQuIChEZWZhdWx0OiBodHRwczovL3Byb21ldGhldXMubG9nMTB4LmNvbS9hcGkvdjEvd3JpdGUpIiwKICAgICAgImRlZmF1bHQiIDogImh0dHBzOi8vcHJvbWV0aGV1cy5sb2cxMHguY29tL2FwaS92MS93cml0ZSIKICAgIH0sCiAgICAicnVudGltZSIgOiB7CiAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAibmFtZSIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSB0byByZXBvcnQgdG8gdGhlIDEweCBzZXJ2aWNlIGVuZHBvaW50IGZvciB0aGlzIHJ1bnRpbWUgaW5zdGFuY2VcblxuU3BlY2lmaWVzIGEgbG9naWNhbCBuYW1lIHVzZWQgYXMgYSBbdGFnIHZhbHVlXShodHRwczovL3d3dy5iYWVsZHVuZy5jb20vbWljcm9tZXRlciM0LW1ldGVycykgZm9yIHBpcGVsaW5lIG1ldHJpY3MuIFRoaXMgdmFsdWUgaWRlbnRpZmllcyBpbnN0YW5jZXMgb2YgdGhlIDEweCBydW4vY29tcGlsZSBwaXBlbGluZXMgd2hlbiByZXBvcnRpbmcgdG8gdGhlIDEweCBzZXJ2aWNlLiBGb3IgZXhhbXBsZSwgZm9yIGEgMTB4IFtSZWNlaXZlcl0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcHBzL3JlY2VpdmVyLykgd2l0aCBvcHRpbWl6YXRpb24gZW5hYmxlZCBmb3IgRmx1ZW50IEJpdCBmb3J3YXJkZXJzIGNvbGxlY3RpbmcgZXZlbnRzIGZyb20gYSBgYnJva2VyYCB1c2VyLWFwcCwgdGhpcyB2YWx1ZSBjYW4gYmUgc2V0IHRvOiBgcmVjZWl2ZV9mbHVlbnRiaXRfYnJva2VyYCIKICAgICAgICB9LAogICAgICAgICJhdHRyaWJ1dGVzIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIGF0dHJpYnV0ZXMgdG8gYWRkIHRvIGFsbCBtZXRyaWNzIHJlcG9ydGluZ1xuXG5TcGVjaWZpZXMgYSBsaXN0IG9mIGtleS12YWx1ZSBwYWlycyBpbiB0aGUgZm9ybWF0IGBrZXk6dmFsdWVgIHRvIGJlIGFkZGVkIGFzIHRhZ3MgdG8gcGlwZWxpbmUgbWV0cmljcyByZXBvcnRlZCB0byB0aGUgMTB4IHNlcnZpY2UuIFRoZXNlIHRhZ3MgZW5hYmxlIGZpbmVyLWdyYWluZWQgZmlsdGVyaW5nIGFuZCBhbmFseXNpcyBpbiBtb25pdG9yaW5nIHN5c3RlbXMgbGlrZSBQcm9tZXRoZXVzLiBNdWx0aXBsZSBhdHRyaWJ1dGVzIGNhbiBiZSBjb21iaW5lZCBpbnRvIGEgc2luZ2xlIHN0cmluZyB1c2luZyBhIHNlbWljb2xvbiAoYDtgKSwgZS5nLiwgYGtleTE6dmFsMTtrZXkyOnZhbDJgLiAgSWYgYSBrZXkgZG9lcyBub3Qgc3RhcnQgd2l0aCB0ZW54XywgdGhlIHByZWZpeCB0ZW54XyBpcyBhdXRvbWF0aWNhbGx5IHByZXBlbmRlZCB0byBlbnN1cmUgY29uc2lzdGVuY3kgaW4gdGFnIG5hbWluZyBjb252ZW50aW9ucy4gRm9yIGV4YW1wbGUsIGEgcHJvdmlkZWQgYXR0cmlidXRlIGFwcDpteS1hcHAgd2lsbCBiZSByZXBvcnRlZCBhcyB0ZW54X2FwcDpteS1hcHAgIGBgYCB5YW1sICAgcnVudGltZUF0dHJpYnV0ZXM6ICAgICAtIGFwcDpyZXBvcnRlciAgICAgLSBlbnY6ZWRnZSBgYGAiLAogICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAiaW5jbHVkZVBhdGhzIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJhcnJheSIsCiAgICAgICAgInN0cmluZyIsCiAgICAgICAgIm51bGwiCiAgICAgIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJQaXBlbGluZSBpbmNsdWRlIGZvbGRlcnNcblxuU3BlY2lmaWVzIGZvbGRlcnMgb24gZGlzayBmb3IgcmVzb2xpbmcgcmVsYXRpdmUgcmVmZXJlbmNlcyB3aXRoaW4gW2luY2x1ZGUgZGlyZWN0aXZlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcveWFtbC8jaW5jbHVkZS1kaXJlY3RpdmVzKS4gKERlZmF1bHQ6IFtcIndvcmtpbmcgZGlyZWN0b3J5IG9mIGN1cnJlbnQgcHJvY2Vzc1wiXSkiLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgIH0sCiAgICAgICJkZWZhdWx0IiA6IFsKICAgICAgICAid29ya2luZyBkaXJlY3Rvcnkgb2YgY3VycmVudCBwcm9jZXNzIgogICAgICBdCiAgICB9LAogICAgImphckZpbGVzIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJhcnJheSIsCiAgICAgICAgInN0cmluZyIsCiAgICAgICAgIm51bGwiCiAgICAgIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJKYXIgZmlsZXMgdG8gbG9hZFxuXG5TcGVjaWZpZXMgYSBsaXN0IG9mIC5qYXIgZmlsZXMgdG8gbG9hZCBpbnRvIHRoZSBob3N0IEpWTSBmb3IgdXNlIGJ5IFtjb21waWxlXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9jb21waWxlLyksIFtpbnB1dF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvaW5wdXQvKSBhbmQgW291dHB1dF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvb3V0cHV0LykgQVBJIGV4dGVuc2lvbnMuICAhISEgbm90ZSBcIlwiICAgICAgVGhpcyBhcmd1bWVudCBpcyBub3Qgc3VwcG9ydGVkIGluIHRoZSBbUnVudGltZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9lbmdpbmUvZmxhdm9ycy8jcnVudGltZSkgZmxhdm9yLiIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgfQogICAgfSwKICAgICJxdWlldCIgOiB7CiAgICAgICJ0eXBlIiA6IFsKICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgInN0cmluZyIsCiAgICAgICAgIm51bGwiCiAgICAgIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJEaXNhYmxlIHByaW50aW5nIGJpbmFyeSB2ZXJzaW9uIGluZm9ybWF0aW9uIHRvIHRoZSBjb25zb2xlXG5cbkRpc2FibGUgcHJpbnRpbmcgYnVpbGQvdmVyc2lvbiBpbmZvcm1hdGlvbiB0byB0aGUgY29uc29sZSB1cG9uIGxhdW5jaCAoQWNjZXB0cyBib29sZWFuIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogZmFsc2UpIiwKICAgICAgImRlZmF1bHQiIDogZmFsc2UKICAgIH0sCiAgICAiZGlzYWJsZWRBcmdzIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJhcnJheSIsCiAgICAgICAgInN0cmluZyIsCiAgICAgICAgIm51bGwiCiAgICAgIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaW1pdCBhcmd1bWVudCB2YWx1ZXMgdGhhdCBjYW4gYmUgc2V0IGJ5IHVzZXJzXG5cblNwZWNpZmllcyBhIGxpc3Qgb2YgbGF1bmNoIGFyZ3VtZW50cyB0aGF0IGFyZSBkaXNhbGxvd2VkIGZyb20gZWl0aGVyIGNvbW1hbmQgbGluZSBvciB1c2VyIGNvbmZpZyBmaWxlcy4gVGhpcyBhcmd1bWVudCBwcm92aWRlcyBhIG1ldGhvZCBvZiBsaW1pdGluZyB0aGUgdGFyZ2V0IFtwaXBlbGluZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9zaGFyZWQvYm9vdHN0cmFwLyNwaXBlbGluZSksIFtzb3VyY2VdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29uZmlnLyNzb3VyY2VzKSBhbmQgYW5kIFtjb21tYW5kIGxpbmVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29uZmlnL2NsaS8pIHNldHRhYmxlIGJ5IHRoZSB1c2VyLiAgVGhpcyBtZWNoYW5pc20gZW5hYmxlcyBwaXBlbGluZSBsYXVuY2hlcnMgc3VjaCBhcyB0aGUgW1F1YXJrdXMgbGF1bmNoZXJdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2xhdW5jaC8jcXVhcmt1cykgdG8gbGltaXQgdXNlciBpbnB1dCByZWNlaXZlZCB2aWEgUkVTVCByZXF1ZXN0cyB0byBhIHRhcmdldCBzdWJzZXQgb2YgJ3NhZmUnIGFyZ3VtZW50cy4gIEZvciBleGFtcGxlLCBhZGRpbmcgW3Byb2NPdXRDb21tYW5kXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9vdXRwdXQvZXZlbnQvcHJvY2Vzcy8jcHJvY291dGNvbW1hbmQpIHRvIHRoaXMgbGlzdCBlbnN1cmVzIHRoYXQgbm8gZXh0ZXJuYWwgcHJvY2VzcyBvdXRwdXRzIGNhbiBiZSBsYXVuY2hlZCBieSB0aGUgcnVudGltZS4gIEFuIG9wdGlvbmFsIHJlZ2V4IHBhdHRlcm4gY2FuIGxpbWl0IGFyZ3VtZW50cyB0byBhIGNlcnRhaW4gc3Vic2V0IG9mIHZhbHVlcyBpbiB0aGUgZm9ybSBvZjogYDxhcmctbmFtZT5bOnBhdHRlcm5dYCAoZS5nLiwgc3BlY2lmaWMgcHJvY2VzcyBuYW1lcykuIE11bHRpcGxlIHBhdHRlcm5zIGNhbiBiZSBzcGVjaWZpZWQgcGVyIGFyZ3VtZW50LiAgTWF0Y2hpbmcgdGhlIGBzb3VyY2VgIGFyZ3VtZW50IGRldGVybWluZXMgd2hpY2ggc291cmNlIGxvY2F0aW9ucyB0byBpbnNwZWN0IChlLmcuLCBmb2xkZXJzLCBmaWxlcywgR2l0SHViIHJlcG9zKS4gRm9yIGV4YW1wbGUsIGFuIGFkbWluIG1heSBwbGFjZSAueWFtbCBjb25maWcgZmlsZXMgY29udGFpbmluZyBwcmVzZXQgRmx1ZW50IEJpdCBvdXRwdXRzIGluIGAvZXRjL2xvZzEweC9gLCBleGNsdWRpbmcgdGhlaXIgZW5jbG9zZWQgYXJndW1lbnRzIGZyb20gbGltaXRzIHNldCBieSB0aGlzIGxpc3QsIHdoaWxlIGRpc2FsbG93aW5nIHVzZXJzIHRvIGRpcmVjdGx5IHNldCB0aGVtIHZpYSB0aGUgY29tbWFuZC1saW5lIG9yIGJ5IHNvdXJjaW5nIHRoZW0gZnJvbSB0aGVpciBsb2NhbC9HaXRIdWIgY29uZmlnIGZpbGVzIChzZWUgZXhhbXBsZSBiZWxvdykuICBUbyBsaW1pdDogIFRoZSB0YXJnZXQgcGlwZWxpbmUgKGUuZy4sIFtydW5dKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuLyksIFtjb21waWxlXShodHRwczovL2RvYy5sb2cxMHguY29tL2NvbXBpbGUvKSk6ICBgYGAgeWFtbCAgIGRpc2FibGVkQXJnczogICAtIFwicGlwZWxpbmU6XnJ1blwiICMgZGlzYWxsb3cgY29tcGlsZSBgYGAgIFRhcmdldCBhcmd1bWVudHMgKGUuZy4sIFtwcm9jZXNzIG91dHB1dHNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL291dHB1dC9ldmVudC9wcm9jZXNzLykpOiAgYGBgIHlhbWwgICAtIFwicHJvY091dENvbW1hbmQ6XmZsdWVudC1iaXQkXCIgICAjIGxpbWl0IHRvIEZsdWVudCBCaXQgb25seSAgICMgLSBwcm9jT3V0QXJnczogPHNwZWNpZnktcmVnZXg+ICAjIGZ1cnRoZXIgbGltaXQgYXJncyBmb3IgRmx1ZW50IEJpdCBgYGAgIENvbnRyb2wgd2hpY2ggYXJndW1lbnQgW3NvdXJjZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29uZmlnLyNzb3VyY2VzKSB0byBpbnNwZWN0OiAgYGBgIHlhbWwgICAtIFwic291cmNlOl5naXRodWIuKlwiICAgICAgICAgICAgICMgaW5zcGVjdCBvZiBhbGwgYXJndW1lbnRzIHNvdXJjZWQgZnJvbSBHaXRIdWIgYWdhaW5zdCB0aGlzIGxpc3QgICAtIFwic291cmNlOl4oPyEvZXRjL2xvZzEweC8pLipcIiAgICMgaW5zcGVjdCBvZiBhbGwgYXJndW1lbnRzIHNvdXJjZWQgZnJvbSBjb25maWcgZmlsZXMgTk9UIGNvbnRhaW5lZCBpbjogL2V0Yy9sb2cxMHgvIGBgYCIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgfQogICAgfSwKICAgICJkZWJ1Z0VudlZhcnMiIDogewogICAgICAidHlwZSIgOiBbCiAgICAgICAgImFycmF5IiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3QgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIGRlYnVnXG5cblNwZWNpZmllcyBhIGxpc3Qgb2YgZW52IHZhciBuYW1lcyBmb3Igd2hpY2ggdG8gbG9nIGluZm9ybWF0aW9uIHJlbGF0aW5nIHRvIGhvdyB0aGV5IGFyZSByZXNvbHZlZC4gRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY2FsbDogYEwxRW52LmdldChcIm15VmFyXCIsIFwibXlEZWZhdWx0XCIpYCBjYW4gYmUgcmVzb2x2ZWQgZnJvbSBhIG51bWJlciBvZiBbc291cmNlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhFbnYuZ2V0KSByYW5naW5nIGZyb20gbGF1bmNoIGFyZ3VtZW50cywgdG8gT1MvSlZNIHByb3BlcnRpZXMgYW5kIGEgZGVmYXVsdCB2YWx1ZSAoZS5nLiwgbXlEZWZhdWx0KS4gIFNldHRpbmcgdGhpcyB2YWx1ZSB0byBgbXlWYXJgIHdpbGwgbG9nIElORk8gbGV2ZWwgaW5mb3JtYXRpb24gZGV0YWlsaW5nIGhvdyB0aGUgdmFsdWUgb2YgdGhlIGBteVZhcmAgd2FzIHJlc29sdmVkLiIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgfQogICAgfQogIH0sCiAgInJlcXVpcmVkIiA6IFsKICAgICJ0ZW54IgogIF0sCiAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlCn0=</template>
|
|
328
|
+
<template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJzdHJpbmciLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiBwaXBlbGluZSB0byBleGVjdXRlXG5cblRhcmdldCBbcGlwZWxpbmVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vZW5naW5lL3BpcGVsaW5lLykgdG8gZXhlY3V0ZS4gRm9yIGV4YW1wbGUsIHRvIHNwZWNpZnkgdGhlIFtydW5dKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuLykgcGlwZWxpbmUgYW5kIGEgW1lBTUxdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29uZmlnL3lhbWwvKSBjb25maWcgZmlsZSBjb250YWluaW5nIGxhdW5jaCBhcmd1bWVudHMsIHVzZTogIGBgYCBjb25zb2xlICQgdGVueCBydW4gQH4vbXkueWFtbCBgYGAgVGhlIFlBTUwgZmlsZSBtYXkgc3BlY2lmeSB0aGUgcGlwZWxpbmUgbmFtZSB2aWEgYSAndGVueCcgZW50cnksIGFsbG93aW5nIHRoZSAncGlwZWxpbmUnIGFyZ3VtZW50IHRvIGJlIG9taXR0ZWQgZnJvbSB0aGUgY29tbWFuZCBsaW5lLiAgRm9yIGV4YW1wbGUgKG15LnlhbWwpOiAgYGBgIHlhbWwgdGVueDogcnVuICMgc2V0IHRoZSBwaXBlbGluZSB0byAncnVuJyBsaWNlbnNlS2V5OiA8bXktbGljZW5zZS1qd3Q+IC4uLiBgYGAgIEFsbG93cyBmb3IgbGF1bmNoaW5nIHRoZSBydW4gcGlwZWxpbmUgdmlhOiBgYGAgY29uc29sZSAkIHRlbnggQH4vbXkueWFtbCBgYGAiCiAgICB9LAogICAgImxpY2Vuc2UiIDogewogICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgImZpbGUiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlBhdGggdG8gYSBmaWxlIGNvbnRhaW5pbmcgdGhlIDEweCBsaWNlbnNlIEpXVFxuXG5QYXRoIHRvIGEgZmlsZSBjb250YWluaW5nIHRoZSBzaWduZWQgMTB4IGxpY2Vuc2UgSldULiBQcmVmZXJyZWQgb3ZlciBgbGljZW5zZUtleWAgZm9yIHByb2R1Y3Rpb246IHRoZSB0b2tlbiBpcyBub3QgdmlzaWJsZSBpbiBgcHNgIG91dHB1dCBhbmQgaXMgZWFzeSB0byByb3RhdGUgYnkgcmVwbGFjaW5nIHRoZSBmaWxlLiAgV2l0aG91dCBhIGxpY2Vuc2UgdGhlIGVuZ2luZSBydW5zIG9uIHRoZSBidWlsdC1pbiAzMC1kYXkgZXZhbHVhdGlvbiBsaWNlbnNlLiBTZWUgW2xpY2Vuc2luZ10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9tYW5hZ2UvbGljZW5zZS8pIGZvciBwcm9kdWN0aW9uIGxpY2Vuc2VzLiAgSWYgYm90aCBgbGljZW5zZUZpbGVgIGFuZCBgbGljZW5zZUtleWAgYXJlIHByb3ZpZGVkLCB0aGUgZmlsZSB3aW5zLiIKICAgICAgICB9LAogICAgICAgICJrZXkiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIjEweCBsaWNlbnNlIEpXVCAoaW5saW5lKVxuXG5UaGUgc2lnbmVkIDEweCBsaWNlbnNlIEpXVCwgcGFzc2VkIGlubGluZS4gRGlzY291cmFnZWQgb24gdGhlIGNvbW1hbmQgbGluZSBiZWNhdXNlIHRoZSB2YWx1ZSBpcyB2aXNpYmxlIGluIGBwc2Agb3V0cHV0OyBwcmVmZXIgYGxpY2Vuc2VGaWxlYCBpbiBwcm9kdWN0aW9uLiAgV2l0aG91dCBhIGxpY2Vuc2UgdGhlIGVuZ2luZSBydW5zIG9uIHRoZSBidWlsdC1pbiAzMC1kYXkgZXZhbHVhdGlvbiBsaWNlbnNlLiBTZWUgW2xpY2Vuc2luZ10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9tYW5hZ2UvbGljZW5zZS8pIGZvciBwcm9kdWN0aW9uIGxpY2Vuc2VzLiIKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAiYWlyZ2FwcGVkIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJib29sZWFuIiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlJ1biB3aXRob3V0IGNvbnRhY3RpbmcgdGhlIDEweCBzZXJ2aWNlXG5cbldoZW4gYHRydWVgLCB0aGUgbGljZW5zZSBpcyB2ZXJpZmllZCBsb2NhbGx5IChzaWduYXR1cmUgKyBjbGFpbXMpIGFuZCBubyBjYWxscyBhcmUgbWFkZSB0byB0aGUgMTB4IHNlcnZpY2U6IG5vIHN0YXJ0dXAgdmFsaWRhdGlvbiwgbm8gbWV0cmljcyByZXBvcnRpbmcsIG5vIHVzZXItYXR0cmlidXRlIGVucmljaG1lbnQuIFN1aXRhYmxlIGZvciBmdWxseSBhaXJnYXBwZWQgZGVwbG95bWVudHMgd2hlcmUgdGhlIGVuZ2luZSBoYXMgbm8gcGF0aCB0byB0aGUgdmVuZG9yIFNhYVMuICBXaGVuIGBmYWxzZWAgKGRlZmF1bHQpLCB0aGUgZW5naW5lIGFkZGl0aW9uYWxseSBjYWxscyB0aGUgMTB4IHNlcnZpY2UgYXQgc3RhcnR1cCwgYW5kIG9ubHkgd2hlbiBhIHNlcnZpY2UgZW5kcG9pbnQgaXMgYWN0dWFsbHkgY29uZmlndXJlZDsgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBuYW1lcyBub25lLCBzbyBhbiB1bmNvbmZpZ3VyZWQgZW5naW5lIG1ha2VzIG5vIGNhbGwgZWl0aGVyIHdheS4gVGhlIGNhbGwgaXMgYmVzdC1lZmZvcnQgZW5yaWNobWVudDogdGhlIGxvY2FsIHZlcmlmaWNhdGlvbiBpcyB0aGUgZ2F0ZSwgYW5kIGEgc2VydmljZSB0aGF0IGNhbm5vdCBiZSByZWFjaGVkLCBvciB0aGF0IGFuc3dlcnMgd2l0aCBhbiBlcnJvciwgcHJvZHVjZXMgYSB3YXJuaW5nIGFuZCB0aGUgZW5naW5lIHJ1bnMuICBBaXJnYXBwZWQgbW9kZSBpcyBob25vcmVkIGZvciBldmVyeSBsaWNlbnNlIHR5cGUuIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiBmYWxzZSkiLAogICAgICAiZGVmYXVsdCIgOiBmYWxzZQogICAgfSwKICAgICJtZXRyaWNFbmRwb2ludCIgOiB7CiAgICAgICJ0eXBlIiA6IFsKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIjEweCBzZXJ2aWNlIFByb21ldGhldXMgbWV0cmljcyBlbmRwb2ludFxuXG5TcGVjaWZpZXMgdGhlIGFkZHJlc3Mgb2YgdGhlIFByb21ldGhldXMgcmVtb3RlIHdyaXRlIGVuZHBvaW50IHRvIHdyaXRlIHBpcGVsaW5lIHVzYWdlIGFuZCBoZWFsdGggbWV0cmljcy4gIFVuc2V0IGJ5IGRlZmF1bHQ6IGFuIGVuZ2luZSB3aXRoIG5vIG1ldHJpYyBlbmRwb2ludCBjb25maWd1cmVkIGNvbGxlY3RzIG1ldHJpY3MgbG9jYWxseSBhbmQgc2VuZHMgdGhlbSBub3doZXJlLiAgISEhIG5vdGUgXCJcIiAgICAgIFRoaXMgYXJndW1lbnQgaXMgb25seSBzZXR0YWJsZSBpbiB0aGUgMTB4ICdvbi1wcmVtaXNlcycgYnVpbGQuIgogICAgfSwKICAgICJydW50aW1lIiA6IHsKICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICJuYW1lIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJOYW1lIHRvIHJlcG9ydCB0byB0aGUgMTB4IHNlcnZpY2UgZW5kcG9pbnQgZm9yIHRoaXMgcnVudGltZSBpbnN0YW5jZVxuXG5TcGVjaWZpZXMgYSBsb2dpY2FsIG5hbWUgdXNlZCBhcyBhIFt0YWcgdmFsdWVdKGh0dHBzOi8vd3d3LmJhZWxkdW5nLmNvbS9taWNyb21ldGVyIzQtbWV0ZXJzKSBmb3IgcGlwZWxpbmUgbWV0cmljcy4gVGhpcyB2YWx1ZSBpZGVudGlmaWVzIGluc3RhbmNlcyBvZiB0aGUgMTB4IHJ1bi9jb21waWxlIHBpcGVsaW5lcyB3aGVuIHJlcG9ydGluZyB0byB0aGUgMTB4IHNlcnZpY2UuIEZvciBleGFtcGxlLCBmb3IgYSAxMHggW1JlY2VpdmVyXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwcHMvcmVjZWl2ZXIvKSB3aXRoIG9wdGltaXphdGlvbiBlbmFibGVkIGZvciBGbHVlbnQgQml0IGZvcndhcmRlcnMgY29sbGVjdGluZyBldmVudHMgZnJvbSBhIGBicm9rZXJgIHVzZXItYXBwLCB0aGlzIHZhbHVlIGNhbiBiZSBzZXQgdG86IGByZWNlaXZlX2ZsdWVudGJpdF9icm9rZXJgIgogICAgICAgIH0sCiAgICAgICAgImF0dHJpYnV0ZXMiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2YgYXR0cmlidXRlcyB0byBhZGQgdG8gYWxsIG1ldHJpY3MgcmVwb3J0aW5nXG5cblNwZWNpZmllcyBhIGxpc3Qgb2Yga2V5LXZhbHVlIHBhaXJzIGluIHRoZSBmb3JtYXQgYGtleTp2YWx1ZWAgdG8gYmUgYWRkZWQgYXMgdGFncyB0byBwaXBlbGluZSBtZXRyaWNzIHJlcG9ydGVkIHRvIHRoZSAxMHggc2VydmljZS4gVGhlc2UgdGFncyBlbmFibGUgZmluZXItZ3JhaW5lZCBmaWx0ZXJpbmcgYW5kIGFuYWx5c2lzIGluIG1vbml0b3Jpbmcgc3lzdGVtcyBsaWtlIFByb21ldGhldXMuIE11bHRpcGxlIGF0dHJpYnV0ZXMgY2FuIGJlIGNvbWJpbmVkIGludG8gYSBzaW5nbGUgc3RyaW5nIHVzaW5nIGEgc2VtaWNvbG9uIChgO2ApLCBlLmcuLCBga2V5MTp2YWwxO2tleTI6dmFsMmAuICBJZiBhIGtleSBkb2VzIG5vdCBzdGFydCB3aXRoIHRlbnhfLCB0aGUgcHJlZml4IHRlbnhfIGlzIGF1dG9tYXRpY2FsbHkgcHJlcGVuZGVkIHRvIGVuc3VyZSBjb25zaXN0ZW5jeSBpbiB0YWcgbmFtaW5nIGNvbnZlbnRpb25zLiBGb3IgZXhhbXBsZSwgYSBwcm92aWRlZCBhdHRyaWJ1dGUgYXBwOm15LWFwcCB3aWxsIGJlIHJlcG9ydGVkIGFzIHRlbnhfYXBwOm15LWFwcCAgYGBgIHlhbWwgICBydW50aW1lQXR0cmlidXRlczogICAgIC0gYXBwOnJlcG9ydGVyICAgICAtIGVudjplZGdlIGBgYCIsCiAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgICJpbmNsdWRlUGF0aHMiIDogewogICAgICAidHlwZSIgOiBbCiAgICAgICAgImFycmF5IiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlBpcGVsaW5lIGluY2x1ZGUgZm9sZGVyc1xuXG5TcGVjaWZpZXMgZm9sZGVycyBvbiBkaXNrIGZvciByZXNvbGluZyByZWxhdGl2ZSByZWZlcmVuY2VzIHdpdGhpbiBbaW5jbHVkZSBkaXJlY3RpdmVzXShodHRwczovL2RvYy5sb2cxMHguY29tL2NvbmZpZy95YW1sLyNpbmNsdWRlLWRpcmVjdGl2ZXMpLiAoRGVmYXVsdDogW1wid29ya2luZyBkaXJlY3Rvcnkgb2YgY3VycmVudCBwcm9jZXNzXCJdKSIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgfSwKICAgICAgImRlZmF1bHQiIDogWwogICAgICAgICJ3b3JraW5nIGRpcmVjdG9yeSBvZiBjdXJyZW50IHByb2Nlc3MiCiAgICAgIF0KICAgIH0sCiAgICAiamFyRmlsZXMiIDogewogICAgICAidHlwZSIgOiBbCiAgICAgICAgImFycmF5IiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkphciBmaWxlcyB0byBsb2FkXG5cblNwZWNpZmllcyBhIGxpc3Qgb2YgLmphciBmaWxlcyB0byBsb2FkIGludG8gdGhlIGhvc3QgSlZNIGZvciB1c2UgYnkgW2NvbXBpbGVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2NvbXBpbGUvKSwgW2lucHV0XShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9pbnB1dC8pIGFuZCBbb3V0cHV0XShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9vdXRwdXQvKSBBUEkgZXh0ZW5zaW9ucy4gICEhISBub3RlIFwiXCIgICAgICBUaGlzIGFyZ3VtZW50IGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhlIFtSdW50aW1lXShodHRwczovL2RvYy5sb2cxMHguY29tL2VuZ2luZS9mbGF2b3JzLyNydW50aW1lKSBmbGF2b3IuIiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICB9CiAgICB9LAogICAgInF1aWV0IiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJib29sZWFuIiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkRpc2FibGUgcHJpbnRpbmcgYmluYXJ5IHZlcnNpb24gaW5mb3JtYXRpb24gdG8gdGhlIGNvbnNvbGVcblxuRGlzYWJsZSBwcmludGluZyBidWlsZC92ZXJzaW9uIGluZm9ybWF0aW9uIHRvIHRoZSBjb25zb2xlIHVwb24gbGF1bmNoIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiBmYWxzZSkiLAogICAgICAiZGVmYXVsdCIgOiBmYWxzZQogICAgfSwKICAgICJkaXNhYmxlZEFyZ3MiIDogewogICAgICAidHlwZSIgOiBbCiAgICAgICAgImFycmF5IiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpbWl0IGFyZ3VtZW50IHZhbHVlcyB0aGF0IGNhbiBiZSBzZXQgYnkgdXNlcnNcblxuU3BlY2lmaWVzIGEgbGlzdCBvZiBsYXVuY2ggYXJndW1lbnRzIHRoYXQgYXJlIGRpc2FsbG93ZWQgZnJvbSBlaXRoZXIgY29tbWFuZCBsaW5lIG9yIHVzZXIgY29uZmlnIGZpbGVzLiBUaGlzIGFyZ3VtZW50IHByb3ZpZGVzIGEgbWV0aG9kIG9mIGxpbWl0aW5nIHRoZSB0YXJnZXQgW3BpcGVsaW5lXShodHRwczovL2RvYy5sb2cxMHguY29tL3NoYXJlZC9ib290c3RyYXAvI3BpcGVsaW5lKSwgW3NvdXJjZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcvI3NvdXJjZXMpIGFuZCBhbmQgW2NvbW1hbmQgbGluZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcvY2xpLykgc2V0dGFibGUgYnkgdGhlIHVzZXIuICBUaGlzIG1lY2hhbmlzbSBlbmFibGVzIHBpcGVsaW5lIGxhdW5jaGVycyBzdWNoIGFzIHRoZSBbUXVhcmt1cyBsYXVuY2hlcl0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvbGF1bmNoLyNxdWFya3VzKSB0byBsaW1pdCB1c2VyIGlucHV0IHJlY2VpdmVkIHZpYSBSRVNUIHJlcXVlc3RzIHRvIGEgdGFyZ2V0IHN1YnNldCBvZiAnc2FmZScgYXJndW1lbnRzLiAgRm9yIGV4YW1wbGUsIGFkZGluZyBbcHJvY091dENvbW1hbmRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL291dHB1dC9ldmVudC9wcm9jZXNzLyNwcm9jb3V0Y29tbWFuZCkgdG8gdGhpcyBsaXN0IGVuc3VyZXMgdGhhdCBubyBleHRlcm5hbCBwcm9jZXNzIG91dHB1dHMgY2FuIGJlIGxhdW5jaGVkIGJ5IHRoZSBydW50aW1lLiAgQW4gb3B0aW9uYWwgcmVnZXggcGF0dGVybiBjYW4gbGltaXQgYXJndW1lbnRzIHRvIGEgY2VydGFpbiBzdWJzZXQgb2YgdmFsdWVzIGluIHRoZSBmb3JtIG9mOiBgPGFyZy1uYW1lPls6cGF0dGVybl1gIChlLmcuLCBzcGVjaWZpYyBwcm9jZXNzIG5hbWVzKS4gTXVsdGlwbGUgcGF0dGVybnMgY2FuIGJlIHNwZWNpZmllZCBwZXIgYXJndW1lbnQuICBNYXRjaGluZyB0aGUgYHNvdXJjZWAgYXJndW1lbnQgZGV0ZXJtaW5lcyB3aGljaCBzb3VyY2UgbG9jYXRpb25zIHRvIGluc3BlY3QgKGUuZy4sIGZvbGRlcnMsIGZpbGVzLCBHaXRIdWIgcmVwb3MpLiBGb3IgZXhhbXBsZSwgYW4gYWRtaW4gbWF5IHBsYWNlIC55YW1sIGNvbmZpZyBmaWxlcyBjb250YWluaW5nIHByZXNldCBGbHVlbnQgQml0IG91dHB1dHMgaW4gYC9ldGMvbG9nMTB4L2AsIGV4Y2x1ZGluZyB0aGVpciBlbmNsb3NlZCBhcmd1bWVudHMgZnJvbSBsaW1pdHMgc2V0IGJ5IHRoaXMgbGlzdCwgd2hpbGUgZGlzYWxsb3dpbmcgdXNlcnMgdG8gZGlyZWN0bHkgc2V0IHRoZW0gdmlhIHRoZSBjb21tYW5kLWxpbmUgb3IgYnkgc291cmNpbmcgdGhlbSBmcm9tIHRoZWlyIGxvY2FsL0dpdEh1YiBjb25maWcgZmlsZXMgKHNlZSBleGFtcGxlIGJlbG93KS4gIFRvIGxpbWl0OiAgVGhlIHRhcmdldCBwaXBlbGluZSAoZS5nLiwgW3J1bl0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vKSwgW2NvbXBpbGVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29tcGlsZS8pKTogIGBgYCB5YW1sICAgZGlzYWJsZWRBcmdzOiAgIC0gXCJwaXBlbGluZTpecnVuXCIgIyBkaXNhbGxvdyBjb21waWxlIGBgYCAgVGFyZ2V0IGFyZ3VtZW50cyAoZS5nLiwgW3Byb2Nlc3Mgb3V0cHV0c10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vb3V0cHV0L2V2ZW50L3Byb2Nlc3MvKSk6ICBgYGAgeWFtbCAgIC0gXCJwcm9jT3V0Q29tbWFuZDpeZmx1ZW50LWJpdCRcIiAgICMgbGltaXQgdG8gRmx1ZW50IEJpdCBvbmx5ICAgIyAtIHByb2NPdXRBcmdzOiA8c3BlY2lmeS1yZWdleD4gICMgZnVydGhlciBsaW1pdCBhcmdzIGZvciBGbHVlbnQgQml0IGBgYCAgQ29udHJvbCB3aGljaCBhcmd1bWVudCBbc291cmNlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcvI3NvdXJjZXMpIHRvIGluc3BlY3Q6ICBgYGAgeWFtbCAgIC0gXCJzb3VyY2U6XmdpdGh1Yi4qXCIgICAgICAgICAgICAgIyBpbnNwZWN0IG9mIGFsbCBhcmd1bWVudHMgc291cmNlZCBmcm9tIEdpdEh1YiBhZ2FpbnN0IHRoaXMgbGlzdCAgIC0gXCJzb3VyY2U6Xig/IS9ldGMvbG9nMTB4LykuKlwiICAgIyBpbnNwZWN0IG9mIGFsbCBhcmd1bWVudHMgc291cmNlZCBmcm9tIGNvbmZpZyBmaWxlcyBOT1QgY29udGFpbmVkIGluOiAvZXRjL2xvZzEweC8gYGBgIiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICB9CiAgICB9LAogICAgImRlYnVnRW52VmFycyIgOiB7CiAgICAgICJ0eXBlIiA6IFsKICAgICAgICAiYXJyYXkiLAogICAgICAgICJzdHJpbmciLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gZGVidWdcblxuU3BlY2lmaWVzIGEgbGlzdCBvZiBlbnYgdmFyIG5hbWVzIGZvciB3aGljaCB0byBsb2cgaW5mb3JtYXRpb24gcmVsYXRpbmcgdG8gaG93IHRoZXkgYXJlIHJlc29sdmVkLiBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjYWxsOiBgTDFFbnYuZ2V0KFwibXlWYXJcIiwgXCJteURlZmF1bHRcIilgIGNhbiBiZSByZXNvbHZlZCBmcm9tIGEgbnVtYmVyIG9mIFtzb3VyY2VzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEVudi5nZXQpIHJhbmdpbmcgZnJvbSBsYXVuY2ggYXJndW1lbnRzLCB0byBPUy9KVk0gcHJvcGVydGllcyBhbmQgYSBkZWZhdWx0IHZhbHVlIChlLmcuLCBteURlZmF1bHQpLiAgU2V0dGluZyB0aGlzIHZhbHVlIHRvIGBteVZhcmAgd2lsbCBsb2cgSU5GTyBsZXZlbCBpbmZvcm1hdGlvbiBkZXRhaWxpbmcgaG93IHRoZSB2YWx1ZSBvZiB0aGUgYG15VmFyYCB3YXMgcmVzb2x2ZWQuIiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICB9CiAgICB9CiAgfSwKICAicmVxdWlyZWQiIDogWwogICAgInRlbngiCiAgXSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==</template>
|
|
327
329
|
|
|
328
330
|
```yaml
|
|
329
331
|
# 🔟❎ compile bootstrap configuration
|
|
@@ -357,8 +359,10 @@ To configure the Pipeline Bootstrapper unit, [:material-cog: Edit](https://doc.l
|
|
|
357
359
|
# 'jarFiles' specifies .jar files to dynamically load for use by compile, input and output API extensions.
|
|
358
360
|
jarFiles: []
|
|
359
361
|
|
|
360
|
-
# 'metricEndpoint' specifies
|
|
361
|
-
#
|
|
362
|
+
# 'metricEndpoint' specifies a Prometheus remote-write endpoint for pipeline usage and health metrics.
|
|
363
|
+
# Unset by default. The endpoint is a self-hosted or vendor Prometheus-compatible store, never a 10x
|
|
364
|
+
# service, and is where the MCP reads engine state back from to tune policy such as regulator rates.
|
|
365
|
+
# metricEndpoint: https://prometheus.example.com/api/v1/write
|
|
362
366
|
|
|
363
367
|
# specifies a list of launch arguments that are disallowed from either command line or user config files.
|
|
364
368
|
disabledArgs: []
|
|
@@ -179,8 +179,10 @@ To configure the Pipeline Bootstrapper unit, [:material-cog: Edit](https://doc.l
|
|
|
179
179
|
# 'jarFiles' specifies .jar files to dynamically load for use by compile, input and output API extensions.
|
|
180
180
|
jarFiles: []
|
|
181
181
|
|
|
182
|
-
# 'metricEndpoint' specifies
|
|
183
|
-
#
|
|
182
|
+
# 'metricEndpoint' specifies a Prometheus remote-write endpoint for pipeline usage and health metrics.
|
|
183
|
+
# Unset by default. The endpoint is a self-hosted or vendor Prometheus-compatible store, never a 10x
|
|
184
|
+
# service, and is where the MCP reads engine state back from to tune policy such as regulator rates.
|
|
185
|
+
# metricEndpoint: https://prometheus.example.com/api/v1/write
|
|
184
186
|
|
|
185
187
|
# 'disabledArgs' specifies a list of launch arguments that are disallowed from either command line or user config files.
|
|
186
188
|
disabledArgs: []
|
|
@@ -357,8 +359,10 @@ To configure the Pipeline Bootstrapper unit, [:material-cog: Edit](https://doc.l
|
|
|
357
359
|
# 'jarFiles' specifies .jar files to dynamically load for use by compile, input and output API extensions.
|
|
358
360
|
jarFiles: []
|
|
359
361
|
|
|
360
|
-
# 'metricEndpoint' specifies
|
|
361
|
-
#
|
|
362
|
+
# 'metricEndpoint' specifies a Prometheus remote-write endpoint for pipeline usage and health metrics.
|
|
363
|
+
# Unset by default. The endpoint is a self-hosted or vendor Prometheus-compatible store, never a 10x
|
|
364
|
+
# service, and is where the MCP reads engine state back from to tune policy such as regulator rates.
|
|
365
|
+
# metricEndpoint: https://prometheus.example.com/api/v1/write
|
|
362
366
|
|
|
363
367
|
# specifies a list of launch arguments that are disallowed from either command line or user config files.
|
|
364
368
|
disabledArgs: []
|
|
@@ -798,8 +802,10 @@ To configure the Pipeline Bootstrapper unit, [:material-cog: Edit](https://doc.l
|
|
|
798
802
|
# 'jarFiles' specifies .jar files to dynamically load for use by compile, input and output API extensions.
|
|
799
803
|
jarFiles: []
|
|
800
804
|
|
|
801
|
-
# 'metricEndpoint' specifies
|
|
802
|
-
#
|
|
805
|
+
# 'metricEndpoint' specifies a Prometheus remote-write endpoint for pipeline usage and health metrics.
|
|
806
|
+
# Unset by default. The endpoint is a self-hosted or vendor Prometheus-compatible store, never a 10x
|
|
807
|
+
# service, and is where the MCP reads engine state back from to tune policy such as regulator rates.
|
|
808
|
+
# metricEndpoint: https://prometheus.example.com/api/v1/write
|
|
803
809
|
|
|
804
810
|
# 'disabledArgs' specifies a list of launch arguments that are disallowed from either command line or user config files.
|
|
805
811
|
disabledArgs: []
|
|
@@ -976,8 +982,10 @@ To configure the Pipeline Bootstrapper unit, [:material-cog: Edit](https://doc.l
|
|
|
976
982
|
# 'jarFiles' specifies .jar files to dynamically load for use by compile, input and output API extensions.
|
|
977
983
|
jarFiles: []
|
|
978
984
|
|
|
979
|
-
# 'metricEndpoint' specifies
|
|
980
|
-
#
|
|
985
|
+
# 'metricEndpoint' specifies a Prometheus remote-write endpoint for pipeline usage and health metrics.
|
|
986
|
+
# Unset by default. The endpoint is a self-hosted or vendor Prometheus-compatible store, never a 10x
|
|
987
|
+
# service, and is where the MCP reads engine state back from to tune policy such as regulator rates.
|
|
988
|
+
# metricEndpoint: https://prometheus.example.com/api/v1/write
|
|
981
989
|
|
|
982
990
|
# specifies a list of launch arguments that are disallowed from either command line or user config files.
|
|
983
991
|
disabledArgs: []
|
|
@@ -93,14 +93,14 @@ The [log10x MCP](https://doc.log10x.com/apps/mcp/) emits this entire plan from a
|
|
|
93
93
|
The layer is published in every region below, for both architectures, and
|
|
94
94
|
is readable by any AWS account. Nothing to build.
|
|
95
95
|
|
|
96
|
-
**Engine 1.1.
|
|
96
|
+
**Engine 1.1.79, republished 2026-09-17.** Every layer below carries the
|
|
97
97
|
same build, so there is one digest per architecture rather than one per
|
|
98
98
|
region:
|
|
99
99
|
|
|
100
100
|
| Architecture | `CodeSha256` |
|
|
101
101
|
|---|---|
|
|
102
|
-
| x86_64 | `
|
|
103
|
-
| arm64 | `
|
|
102
|
+
| x86_64 | `ACkSX/XS5nei+rAm6eiKyyxabq3lwcAqvAeFu437dDo=` |
|
|
103
|
+
| arm64 | `DbhgTftIcnzEi+SenwH+YMotPX11sIavGQb6o17IBkU=` |
|
|
104
104
|
|
|
105
105
|
`aws lambda get-layer-version` returns that digest to any caller, so you can
|
|
106
106
|
check what you are about to attach:
|
|
@@ -108,20 +108,20 @@ The [log10x MCP](https://doc.log10x.com/apps/mcp/) emits this entire plan from a
|
|
|
108
108
|
``` { .console .copy }
|
|
109
109
|
aws lambda get-layer-version --region us-east-1 \
|
|
110
110
|
--layer-name arn:aws:lambda:us-east-1:351939435334:layer:tenx-receive \
|
|
111
|
-
--version-number
|
|
111
|
+
--version-number 8 --query Content.CodeSha256 --output text
|
|
112
112
|
```
|
|
113
113
|
|
|
114
114
|
|
|
115
115
|
| Region | x86_64 | arm64 |
|
|
116
116
|
|---|---|---|
|
|
117
|
-
| `us-east-1` | `arn:aws:lambda:us-east-1:351939435334:layer:tenx-receive:
|
|
118
|
-
| `us-east-2` | `arn:aws:lambda:us-east-2:351939435334:layer:tenx-receive:
|
|
119
|
-
| `us-west-2` | `arn:aws:lambda:us-west-2:351939435334:layer:tenx-receive:
|
|
120
|
-
| `eu-west-1` | `arn:aws:lambda:eu-west-1:351939435334:layer:tenx-receive:
|
|
121
|
-
| `eu-central-1` | `arn:aws:lambda:eu-central-1:351939435334:layer:tenx-receive:
|
|
122
|
-
| `ap-southeast-1` | `arn:aws:lambda:ap-southeast-1:351939435334:layer:tenx-receive:
|
|
123
|
-
| `ap-northeast-1` | `arn:aws:lambda:ap-northeast-1:351939435334:layer:tenx-receive:
|
|
124
|
-
| `ap-south-1` | `arn:aws:lambda:ap-south-1:351939435334:layer:tenx-receive:
|
|
117
|
+
| `us-east-1` | `arn:aws:lambda:us-east-1:351939435334:layer:tenx-receive:8` | `arn:aws:lambda:us-east-1:351939435334:layer:tenx-receive-arm64:4` |
|
|
118
|
+
| `us-east-2` | `arn:aws:lambda:us-east-2:351939435334:layer:tenx-receive:4` | `arn:aws:lambda:us-east-2:351939435334:layer:tenx-receive-arm64:4` |
|
|
119
|
+
| `us-west-2` | `arn:aws:lambda:us-west-2:351939435334:layer:tenx-receive:4` | `arn:aws:lambda:us-west-2:351939435334:layer:tenx-receive-arm64:4` |
|
|
120
|
+
| `eu-west-1` | `arn:aws:lambda:eu-west-1:351939435334:layer:tenx-receive:4` | `arn:aws:lambda:eu-west-1:351939435334:layer:tenx-receive-arm64:4` |
|
|
121
|
+
| `eu-central-1` | `arn:aws:lambda:eu-central-1:351939435334:layer:tenx-receive:4` | `arn:aws:lambda:eu-central-1:351939435334:layer:tenx-receive-arm64:4` |
|
|
122
|
+
| `ap-southeast-1` | `arn:aws:lambda:ap-southeast-1:351939435334:layer:tenx-receive:4` | `arn:aws:lambda:ap-southeast-1:351939435334:layer:tenx-receive-arm64:4` |
|
|
123
|
+
| `ap-northeast-1` | `arn:aws:lambda:ap-northeast-1:351939435334:layer:tenx-receive:4` | `arn:aws:lambda:ap-northeast-1:351939435334:layer:tenx-receive-arm64:4` |
|
|
124
|
+
| `ap-south-1` | `arn:aws:lambda:ap-south-1:351939435334:layer:tenx-receive:4` | `arn:aws:lambda:ap-south-1:351939435334:layer:tenx-receive-arm64:4` |
|
|
125
125
|
|
|
126
126
|
Match the architecture to the function's own: `arm64` for Graviton,
|
|
127
127
|
`x86_64` otherwise. A mismatch fails at INIT rather than silently.
|
|
@@ -245,19 +245,19 @@ The [log10x MCP](https://doc.log10x.com/apps/mcp/) emits this entire plan from a
|
|
|
245
245
|
The published layer suits every case except one: baking a static mute file into the image, which pins the policy to the layer version. Build it from the release artifacts:
|
|
246
246
|
|
|
247
247
|
``` { .console .copy }
|
|
248
|
-
gh release download 1.1.
|
|
249
|
-
-p 'tenx-edge-1.1.
|
|
250
|
-
-p 'tenx-config-1.1.
|
|
248
|
+
gh release download 1.1.79 -R log-10x/pipeline-releases \
|
|
249
|
+
-p 'tenx-edge-1.1.79-amd64-native' -p 'tenx-modules-1.1.79.tar.gz' \
|
|
250
|
+
-p 'tenx-config-1.1.79.tar.gz' -p 'tenx-symbols-1.1.79.10x.tar' \
|
|
251
251
|
-p 'build-receive-layer.sh'
|
|
252
252
|
|
|
253
253
|
mkdir modules config symbols
|
|
254
|
-
tar xzf tenx-modules-1.1.
|
|
255
|
-
tar xzf tenx-config-1.1.
|
|
256
|
-
cp tenx-symbols-1.1.
|
|
254
|
+
tar xzf tenx-modules-1.1.79.tar.gz -C modules
|
|
255
|
+
tar xzf tenx-config-1.1.79.tar.gz -C config
|
|
256
|
+
cp tenx-symbols-1.1.79.10x.tar symbols/
|
|
257
257
|
|
|
258
258
|
chmod +x build-receive-layer.sh
|
|
259
259
|
./build-receive-layer.sh \
|
|
260
|
-
./tenx-edge-1.1.
|
|
260
|
+
./tenx-edge-1.1.79-amd64-native ./modules ./config ./symbols \
|
|
261
261
|
./tenx-receive.zip \
|
|
262
262
|
./mutes.csv # the 6th argument is the policy file
|
|
263
263
|
|
|
@@ -268,4 +268,4 @@ The [log10x MCP](https://doc.log10x.com/apps/mcp/) emits this entire plan from a
|
|
|
268
268
|
--content S3Bucket=<your-bucket>,S3Key=layers/tenx-receive.zip
|
|
269
269
|
```
|
|
270
270
|
|
|
271
|
-
Swap the bootstrap for `tenx-edge-1.1.
|
|
271
|
+
Swap the bootstrap for `tenx-edge-1.1.79-aarch64-native` and the architecture for `arm64` to build the Graviton variant. With a mute file present the build validates every entry and refuses a malformed one, rather than shipping a disposition that would be silently skipped.
|
|
@@ -22,7 +22,7 @@ The [Receiver](https://doc.log10x.com/apps/receiver/) is the execution arm of th
|
|
|
22
22
|
|
|
23
23
|
- **pass**: forward unchanged.
|
|
24
24
|
- **sample**: forward a rate-limited share against a per-pattern budget. Uses automatic [message enrichment](https://doc.log10x.com/run/initialize/message/){target="_blank"} to identify event types by their symbol identity and calculate ingestion cost per event (bytes × $/GB). When an event type exceeds its share of the budget, the Receiver samples it down, in real time at the source, before expensive data reaches your analyzer. A [severity floor](https://doc.log10x.com/run/receive/rate/){target="_blank"} keeps a minimum share of ERROR and WARN events flowing even when their pattern is over its cap.
|
|
25
|
-
- **compact**: replace repeated lines with an encoded form the destination expands at query time, with no dashboard
|
|
25
|
+
- **compact**: replace repeated lines with an encoded form the destination expands at query time, with no dashboard changes. Lossless only on Splunk and self-hosted Elasticsearch/OpenSearch with the expand plugin installed ([Splunk](../../apps/receiver/compact/splunk.md), [Elasticsearch](../../apps/receiver/compact/elasticsearch.md)). It is a no-op on managed/SaaS destinations (Datadog, CloudWatch, Azure, GCP, Sumo, managed Elasticsearch).
|
|
26
26
|
- **tier_down**: tag the pattern for a cheaper storage tier the destination enforces (Datadog Flex, CloudWatch IA, Azure Monitor Basic/Auxiliary).
|
|
27
27
|
- **offload**: route the pattern to customer-owned object storage (S3 or any S3-compatible bucket) instead of the destination.
|
|
28
28
|
- **drop**: stop forwarding the pattern.
|
|
@@ -30,13 +30,13 @@ How the 10x for Splunk app expands compact events at search time, search-time ov
|
|
|
30
30
|
- Top templates by usage
|
|
31
31
|
- Expansion success rate
|
|
32
32
|
|
|
33
|
-
**User experience:**
|
|
33
|
+
**User experience:** Classic dashboards keep their panel SPL unchanged. From the search bar a query is wrapped in the app's `tenxsearch` command, since Splunk's search page loads no app JavaScript. Scheduled alerts are compiled once at save time into a native saved search. All three read the original full-fidelity data.
|
|
34
34
|
|
|
35
35
|
**Open source:** Available on [GitHub](https://github.com/log-10x/splunk-app){target="_blank"}.
|
|
36
36
|
|
|
37
37
|
??? tenx-costopt "What is the search-time overhead in Splunk"
|
|
38
38
|
|
|
39
|
-
A one-time template resolution matches search terms against the templates. Per-event expansion uses a KV Store primary-key lookup and native SPL functions, negligible overhead per event.
|
|
39
|
+
A one-time template resolution matches search terms against the templates. Per-event expansion uses a KV Store primary-key lookup and native SPL functions, negligible overhead per event. Dashboard panels keep their SPL; a search-bar query carries the `tenxsearch` wrapper; scheduled alerts run unchanged after a one-time save-time compile.
|
|
40
40
|
|
|
41
41
|
The 10x Engine processes events at sub-millisecond per event, 100+ GB/day on a single node (512 MB heap, 2 threads). For resource requirements and Kubernetes resource specs, see [Node counting](https://doc.log10x.com/faq/pricing/node-counting/).
|
|
42
42
|
|
|
@@ -179,8 +179,10 @@ To configure the Pipeline Bootstrapper unit, [:material-cog: Edit](https://doc.l
|
|
|
179
179
|
# 'jarFiles' specifies .jar files to dynamically load for use by compile, input and output API extensions.
|
|
180
180
|
jarFiles: []
|
|
181
181
|
|
|
182
|
-
# 'metricEndpoint' specifies
|
|
183
|
-
#
|
|
182
|
+
# 'metricEndpoint' specifies a Prometheus remote-write endpoint for pipeline usage and health metrics.
|
|
183
|
+
# Unset by default. The endpoint is a self-hosted or vendor Prometheus-compatible store, never a 10x
|
|
184
|
+
# service, and is where the MCP reads engine state back from to tune policy such as regulator rates.
|
|
185
|
+
# metricEndpoint: https://prometheus.example.com/api/v1/write
|
|
184
186
|
|
|
185
187
|
# 'disabledArgs' specifies a list of launch arguments that are disallowed from either command line or user config files.
|
|
186
188
|
disabledArgs: []
|
|
@@ -357,8 +359,10 @@ To configure the Pipeline Bootstrapper unit, [:material-cog: Edit](https://doc.l
|
|
|
357
359
|
# 'jarFiles' specifies .jar files to dynamically load for use by compile, input and output API extensions.
|
|
358
360
|
jarFiles: []
|
|
359
361
|
|
|
360
|
-
# 'metricEndpoint' specifies
|
|
361
|
-
#
|
|
362
|
+
# 'metricEndpoint' specifies a Prometheus remote-write endpoint for pipeline usage and health metrics.
|
|
363
|
+
# Unset by default. The endpoint is a self-hosted or vendor Prometheus-compatible store, never a 10x
|
|
364
|
+
# service, and is where the MCP reads engine state back from to tune policy such as regulator rates.
|
|
365
|
+
# metricEndpoint: https://prometheus.example.com/api/v1/write
|
|
362
366
|
|
|
363
367
|
# specifies a list of launch arguments that are disallowed from either command line or user config files.
|
|
364
368
|
disabledArgs: []
|
|
@@ -798,8 +802,10 @@ To configure the Pipeline Bootstrapper unit, [:material-cog: Edit](https://doc.l
|
|
|
798
802
|
# 'jarFiles' specifies .jar files to dynamically load for use by compile, input and output API extensions.
|
|
799
803
|
jarFiles: []
|
|
800
804
|
|
|
801
|
-
# 'metricEndpoint' specifies
|
|
802
|
-
#
|
|
805
|
+
# 'metricEndpoint' specifies a Prometheus remote-write endpoint for pipeline usage and health metrics.
|
|
806
|
+
# Unset by default. The endpoint is a self-hosted or vendor Prometheus-compatible store, never a 10x
|
|
807
|
+
# service, and is where the MCP reads engine state back from to tune policy such as regulator rates.
|
|
808
|
+
# metricEndpoint: https://prometheus.example.com/api/v1/write
|
|
803
809
|
|
|
804
810
|
# 'disabledArgs' specifies a list of launch arguments that are disallowed from either command line or user config files.
|
|
805
811
|
disabledArgs: []
|
|
@@ -976,8 +982,10 @@ To configure the Pipeline Bootstrapper unit, [:material-cog: Edit](https://doc.l
|
|
|
976
982
|
# 'jarFiles' specifies .jar files to dynamically load for use by compile, input and output API extensions.
|
|
977
983
|
jarFiles: []
|
|
978
984
|
|
|
979
|
-
# 'metricEndpoint' specifies
|
|
980
|
-
#
|
|
985
|
+
# 'metricEndpoint' specifies a Prometheus remote-write endpoint for pipeline usage and health metrics.
|
|
986
|
+
# Unset by default. The endpoint is a self-hosted or vendor Prometheus-compatible store, never a 10x
|
|
987
|
+
# service, and is where the MCP reads engine state back from to tune policy such as regulator rates.
|
|
988
|
+
# metricEndpoint: https://prometheus.example.com/api/v1/write
|
|
981
989
|
|
|
982
990
|
# specifies a list of launch arguments that are disallowed from either command line or user config files.
|
|
983
991
|
disabledArgs: []
|
|
@@ -1417,8 +1425,10 @@ To configure the Pipeline Bootstrapper unit, [:material-cog: Edit](https://doc.l
|
|
|
1417
1425
|
# 'jarFiles' specifies .jar files to dynamically load for use by compile, input and output API extensions.
|
|
1418
1426
|
jarFiles: []
|
|
1419
1427
|
|
|
1420
|
-
# 'metricEndpoint' specifies
|
|
1421
|
-
#
|
|
1428
|
+
# 'metricEndpoint' specifies a Prometheus remote-write endpoint for pipeline usage and health metrics.
|
|
1429
|
+
# Unset by default. The endpoint is a self-hosted or vendor Prometheus-compatible store, never a 10x
|
|
1430
|
+
# service, and is where the MCP reads engine state back from to tune policy such as regulator rates.
|
|
1431
|
+
# metricEndpoint: https://prometheus.example.com/api/v1/write
|
|
1422
1432
|
|
|
1423
1433
|
# 'disabledArgs' specifies a list of launch arguments that are disallowed from either command line or user config files.
|
|
1424
1434
|
disabledArgs: []
|
|
@@ -1595,8 +1605,10 @@ To configure the Pipeline Bootstrapper unit, [:material-cog: Edit](https://doc.l
|
|
|
1595
1605
|
# 'jarFiles' specifies .jar files to dynamically load for use by compile, input and output API extensions.
|
|
1596
1606
|
jarFiles: []
|
|
1597
1607
|
|
|
1598
|
-
# 'metricEndpoint' specifies
|
|
1599
|
-
#
|
|
1608
|
+
# 'metricEndpoint' specifies a Prometheus remote-write endpoint for pipeline usage and health metrics.
|
|
1609
|
+
# Unset by default. The endpoint is a self-hosted or vendor Prometheus-compatible store, never a 10x
|
|
1610
|
+
# service, and is where the MCP reads engine state back from to tune policy such as regulator rates.
|
|
1611
|
+
# metricEndpoint: https://prometheus.example.com/api/v1/write
|
|
1600
1612
|
|
|
1601
1613
|
# specifies a list of launch arguments that are disallowed from either command line or user config files.
|
|
1602
1614
|
disabledArgs: []
|
|
@@ -15,16 +15,33 @@ The message initializer uses symbol libraries to isolate stable [message pattern
|
|
|
15
15
|
|
|
16
16
|
Every token the symbol library recognizes carries a set of candidate origins: the source unit, a file or a binary, that can emit the token, together with the enclosing scope the library recorded for it. A token emitted by many units resolves to many candidates, so ambiguity is the normal case and resolving it is the selector's job. Candidates are keyed by originating unit plus enclosing scope, so symbols sharing an origin and a scope coalesce into one candidate.
|
|
17
17
|
|
|
18
|
-
The initializer identifies the core message pattern by ranking those candidates from a [TenXTemplate](https://doc.log10x.com/run/template/ "Import joint JSON schemas files to expand events into well-defined TenXObjects.")
|
|
18
|
+
The initializer identifies the core message pattern by ranking those candidates from a [TenXTemplate](https://doc.log10x.com/run/template/ "Import joint JSON schemas files to expand events into well-defined TenXObjects."), on a five-key comparator, every key descending:
|
|
19
19
|
|
|
20
|
-
1. **
|
|
21
|
-
2. **
|
|
22
|
-
3. **
|
|
23
|
-
4. **
|
|
20
|
+
1. **Prose evidence**: the width of the candidate's widest matched field that is **not inside a container**. Container depth is counted from the opens and closes preceding the field, so a JSON attribute value that quotes another component's message is excluded here even though it is prose-shaped. This key decides first.
|
|
21
|
+
2. **Widest matched phrase**: a per-field maximum, rather than a sum, over library-matched, multi-character tokens that are not [reserved](https://doc.log10x.com/run/transform/symbol/#symbolsequencereserved "list of terms to ignore when scanning symbol tokens"). This is the widest single library-matched phrase the origin accounts for.
|
|
22
|
+
3. **Distinct known tokens**: the count of distinct library-known tokens anywhere on the line that the origin explains. This is the coverage term.
|
|
23
|
+
4. **Character total**: the combined character length of those distinct tokens.
|
|
24
|
+
5. **Span length**: the run length of the selected span. This is the only run-length key, it sits last, and the comparator reaches it only when the first four keys all tie.
|
|
25
|
+
|
|
26
|
+
Prose ranks ahead of bulk because text inside a container is citation, not authorship. A twenty-token error value carried as an attribute does not outrank the two-token statement it is attached to.
|
|
24
27
|
|
|
25
28
|
Coverage ranks ahead of length because the more places a word appears across a code base, the less that word says about where a line came from. A word appearing in one file identifies that file; a word appearing in hundreds identifies nothing. Ranking by how many distinct known words an origin explains picks the origin that best accounts for the line.
|
|
26
29
|
|
|
27
|
-
|
|
30
|
+
One tie-break runs after the ranking rather than as a sixth key. Where the winner ties its nearest rival on all five, the tied group yields to a candidate whose unit the line's own authorship region names.
|
|
31
|
+
|
|
32
|
+
### Evidence gate
|
|
33
|
+
|
|
34
|
+
A typed selection ([`symbolContexts`](#symbolcontexts "types of symbols to search") of `log,exec`) claims an origin: this source statement wrote this line. That claim stands on prose evidence exclusively, and a candidate whose prose score is below two is rejected rather than crowned. **A line with no prose evidence gets no typed origin and keeps its raw fallback identity.** The lone `any` context asserts nothing about provenance and gates at one token instead, so thin fragments still receive an identity.
|
|
35
|
+
|
|
36
|
+
### Emission
|
|
37
|
+
|
|
38
|
+
Selection picks the origin. Emission then builds the value in three stages.
|
|
39
|
+
|
|
40
|
+
- **Anchor**: the winner's widest matched prose field, emitted verbatim. The message region runs forward from the anchor's own start and stops at the first container open, newline, or second timestamp; where that boundary falls inside the anchor field the region collapses back to the field. The anchor is **exempt from reserved filtering**: applying it here renames the statement, turning `no baggage found in context` into `no_found`. Timestamps, variables and repeats are still dropped.
|
|
41
|
+
- **Suffix**: distinct non-reserved tokens from the winner's other matched fields, each token counted once however often it repeats, up to a budget of sixteen.
|
|
42
|
+
- **Padding**: forward and backward from the emitted region while the [`symbolMaxLen`](#symbolmaxlen "max number of output chars") budget allows. Reserved filtering governs here and in the suffix, which is where a generic word is genuinely noise. The backward walk stops where the statement starts: at the nearest preceding timestamp, or at a token that closes a container or ends a line. Everything before that point is preamble, the node ids, request ids, thread and logger names a format prints ahead of the message, and it stays out of the pattern.
|
|
43
|
+
|
|
44
|
+
Every stage, and the `any` fallback below, skips an **identifier fragment**: a library word whose neighbour carries a digit, directly or across a single `-`, `_` or `.`. The `C` in the node id `R21-M0-N4-C:J05-U11` and the `req` in `req-b3e2...` are library words, and skipping them keeps one statement on one identity however its ids are spelled. Detection reads only the line, so the identity stays a function of the line and the library.
|
|
28
45
|
|
|
29
46
|
The [`symbolContexts`](#symbolcontexts "types of symbols to search") list filters which symbol contexts participate. Contexts are evaluated in a single pass, so list order acts as a filter rather than a precedence chain.
|
|
30
47
|
|
|
@@ -34,9 +51,9 @@ The `inputField` parameter limits searches to specific JSON fields. Setting `inp
|
|
|
34
51
|
|
|
35
52
|
The comparator is deterministic: every key is a content-derived integer. Three details bound that behavior.
|
|
36
53
|
|
|
37
|
-
- A full
|
|
54
|
+
- A full five-key tie that the authorship pass also leaves undecided falls back to candidate insertion order, which holds stable for a given engine build and is not a documented ordering.
|
|
38
55
|
- Two truncation caps can hide a true origin: [`symbolMaxOrigins`](https://doc.log10x.com/run/transform/symbol/#symbolmaxorigins "max number of source/binary origins to list per symbol") (default 64, the cap that binds at runtime) and [`maxSymbolUnitsPerToken`](https://doc.log10x.com/run/symbol/#maxsymbolunitspertoken "number of symbol units to retrieve when searching for the origin of an TenXTemplate symbol sequence") (default 128, approximate, stopping in the low 130s).
|
|
39
|
-
- When the selected sequence comes back as a single token, the module re-runs the selection under the `any` context, which concatenates all symbol tokens in range and bypasses the comparator.
|
|
56
|
+
- When the selected sequence comes back as a single token, the module re-runs the selection under the `any` context, which concatenates all symbol tokens in range, minus identifier fragments, and bypasses the comparator.
|
|
40
57
|
|
|
41
58
|
The claim the engine supports is scoped: the same engine version, the same symbol library, the same configuration and the same event yield the same pattern.
|
|
42
59
|
|
|
@@ -246,14 +246,21 @@ timestamp:
|
|
|
246
246
|
- "yyyy-MM-dd HH:mm:ss" # Widely used in Java applications, databases (e.g., MySQL, PostgreSQL), and application servers (e.g., Tomcat, JBoss).
|
|
247
247
|
- "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.
|
|
248
248
|
- "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).
|
|
249
|
+
- "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".
|
|
250
|
+
- "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.
|
|
249
251
|
- "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.
|
|
250
252
|
- "yyyy-MM-dd HH:mm:ss,SSS" # Common in Java logging frameworks like Log4j and Logback.
|
|
251
253
|
- "yyyy-MM-dd'T'HH:mm:ss,SSS" # Common in Java logging with ISO 8601 date-time, comma-separated milliseconds.
|
|
252
254
|
- "MM/dd/yyyy HH:mm:ss" # Used in Windows event logs, .NET applications, and U.S.-based systems.
|
|
253
255
|
- "EEE MMM dd HH:mm:ss yyyy" # Human-readable format used in various logs, including some web servers and application logs.
|
|
256
|
+
- "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.
|
|
254
257
|
- "yyyy-MM-dd'T'HH:mm:ss" # Simplified ISO 8601 format, used in many modern applications and frameworks.
|
|
255
258
|
- "HH:mm:ss" # Time-only format, used when the date is implied or provided separately, common in embedded systems and some programming languages.
|
|
256
259
|
- "yyyyMMdd HH:mm:ss" # Compact format used in some legacy systems and batch processing logs.
|
|
260
|
+
- "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.
|
|
261
|
+
- "yyyyMMdd-H:m:s:SS" # Same with two fraction digits, e.g. "20171223-22:30:24:28".
|
|
262
|
+
- "yyyyMMdd-H:m:s:S" # Same with one fraction digit.
|
|
263
|
+
- "MM.dd HH:mm:ss" # Month.day without a year, e.g. "10.30 16:49:06". Proxifier and other Windows utility logs.
|
|
257
264
|
- "MMM dd, yyyy h:mm:ss a" # Human-readable format with 12-hour clock, used in application logs and some U.S.-based systems.
|
|
258
265
|
- "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.
|
|
259
266
|
# Common formats with slight variations
|
package/package.json
CHANGED