@pipeline-builder/api-core 4.1.16 → 4.1.18

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.
@@ -0,0 +1,90 @@
1
+ // Copyright 2026 Pipeline Builder Contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /**
4
+ * Plugin image scan gates (docs/plugin-publishing.md "Scan gates"): the shared
5
+ * vocabulary of the build-time gate, the nightly rescan's flag, and the
6
+ * resolution warning / block — used by the plugin service (which stores and
7
+ * enforces them), the resolver in pipeline-data (which skips or warns), and the
8
+ * dashboard (which shows them).
9
+ *
10
+ * A finding is FIXABLE when grype reports a fixed version for it
11
+ * (`vulnerability.fix.state == "fixed"` with at least one version): the gates
12
+ * count fixable Critical findings only, because an unfixable one can't be
13
+ * acted on by rebuilding or upgrading.
14
+ */
15
+ import { envBool, envInt } from '../utils/env.js';
16
+ /** Findings a flag / gate message carries. */
17
+ export const SCAN_FLAG_TOP_FINDINGS = 10;
18
+ /** Lookup / resolution warning code for a flagged version. */
19
+ export const VULN_FLAGGED_WARNING = 'VULN_FLAGGED';
20
+ /**
21
+ * `PLUGIN_VULN_MAX_CRITICAL`: the platform floor — a version with MORE fixable
22
+ * Critical findings than this fails its build (`PLUGIN_VULN_GATE`) and is
23
+ * flagged by the rescan. Default `0`; `-1` disables the floor (and the flag).
24
+ */
25
+ export function pluginVulnMaxCritical() {
26
+ return envInt('PLUGIN_VULN_MAX_CRITICAL', 0, { min: -1 });
27
+ }
28
+ /** Whether `fixableCritical` breaks the platform floor (never, when disabled). */
29
+ export function exceedsVulnFloor(fixableCritical, max = pluginVulnMaxCritical()) {
30
+ return max >= 0 && (fixableCritical ?? 0) > max;
31
+ }
32
+ /**
33
+ * `PLUGIN_BLOCK_ON_NEW_CRITICAL` (default false): resolution SKIPS flagged
34
+ * versions for ranges and the default (falling back to the newest unflagged
35
+ * one), and an exact pin to a flagged version is refused 409
36
+ * `PLUGIN_VERSION_VULN_BLOCKED`. Off: flagged versions resolve with a
37
+ * `VULN_FLAGGED` warning.
38
+ */
39
+ export function blockOnNewCritical() {
40
+ return envBool('PLUGIN_BLOCK_ON_NEW_CRITICAL', false);
41
+ }
42
+ /** `pkg@1.2.3 → 1.2.4` / `pkg@1.2.3 (no fix)`. */
43
+ export function describeFix(f) {
44
+ const at = `${f.packageName}${f.packageVersion ? `@${f.packageVersion}` : ''}`;
45
+ return f.fixedIn.length > 0 ? `${at} → ${f.fixedIn.join(', ')}` : `${at} (no fix)`;
46
+ }
47
+ /** `CVE-1 (openssl@3.0.1 → 3.0.2); CVE-2 (…)` for the first `limit` findings. */
48
+ export function describeFindings(findings, limit = 5) {
49
+ const shown = findings.slice(0, limit).map((f) => `${f.id} (${describeFix(f)})`).join('; ');
50
+ const more = findings.length > limit ? `; +${findings.length - limit} more` : '';
51
+ return `${shown}${more}`;
52
+ }
53
+ /** The warning text for a flagged version: `x@v has N fixable Critical findings — rebuild or upgrade`. */
54
+ export function vulnFlaggedMessage(ref, flag) {
55
+ return `${ref} has ${flag.critical} fixable Critical finding${flag.critical === 1 ? '' : 's'} — rebuild or upgrade`;
56
+ }
57
+ /** Build the `VULN_FLAGGED` warning for `plugin@version`. */
58
+ export function vulnFlaggedWarning(plugin, version, flag) {
59
+ return {
60
+ code: VULN_FLAGGED_WARNING,
61
+ plugin,
62
+ version,
63
+ critical: flag.critical,
64
+ high: flag.high,
65
+ message: vulnFlaggedMessage(`${plugin}@${version}`, flag),
66
+ findings: flag.findings.slice(0, SCAN_FLAG_TOP_FINDINGS),
67
+ };
68
+ }
69
+ /** The 409 message for an exact pin to a flagged version while blocking. */
70
+ export function vulnBlockedMessage(plugin, version, flag) {
71
+ const fixes = flag.findings.length > 0 ? ` Fix: ${describeFindings(flag.findings)}.` : '';
72
+ return `${plugin}@${version} is blocked: a rescan found ${flag.critical} fixable Critical finding${flag.critical === 1 ? '' : 's'} `
73
+ + `(PLUGIN_BLOCK_ON_NEW_CRITICAL). Rebuild it on patched packages or move to a newer version.${fixes}`;
74
+ }
75
+ /** Narrow an unknown `scan_flag` jsonb value. */
76
+ export function asScanFlag(value) {
77
+ if (!value || typeof value !== 'object' || Array.isArray(value))
78
+ return null;
79
+ const v = value;
80
+ if (typeof v.critical !== 'number' || typeof v.high !== 'number')
81
+ return null;
82
+ const findings = Array.isArray(v.findings) ? v.findings.filter((f) => f && typeof f.id === 'string') : [];
83
+ return {
84
+ critical: v.critical,
85
+ high: v.high,
86
+ maxCritical: typeof v.maxCritical === 'number' ? v.maxCritical : 0,
87
+ findings: findings.map((f) => ({ ...f, fixedIn: Array.isArray(f.fixedIn) ? f.fixedIn : [] })),
88
+ };
89
+ }
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLXNjYW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvcGx1Z2luLXNjYW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7Ozs7R0FXRztBQUVILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUE4QmxELDhDQUE4QztBQUM5QyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxFQUFFLENBQUM7QUFFekMsOERBQThEO0FBQzlELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLGNBQWMsQ0FBQztBQUVuRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQjtJQUNuQyxPQUFPLE1BQU0sQ0FBQywwQkFBMEIsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzVELENBQUM7QUFFRCxrRkFBa0Y7QUFDbEYsTUFBTSxVQUFVLGdCQUFnQixDQUFDLGVBQTBDLEVBQUUsR0FBRyxHQUFXLHFCQUFxQixFQUFFO0lBQ2hILE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDbEQsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxrQkFBa0I7SUFDaEMsT0FBTyxPQUFPLENBQUMsOEJBQThCLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDeEQsQ0FBQztBQUVELGtEQUFrRDtBQUNsRCxNQUFNLFVBQVUsV0FBVyxDQUFDLENBQXdFO0lBQ2xHLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDL0UsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUM7QUFDckYsQ0FBQztBQUVELGlGQUFpRjtBQUNqRixNQUFNLFVBQVUsZ0JBQWdCLENBQUMsUUFBc0MsRUFBRSxLQUFLLEdBQUcsQ0FBQztJQUNoRixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1RixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxRQUFRLENBQUMsTUFBTSxHQUFHLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDakYsT0FBTyxHQUFHLEtBQUssR0FBRyxJQUFJLEVBQUUsQ0FBQztBQUMzQixDQUFDO0FBRUQsMEdBQTBHO0FBQzFHLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxHQUFXLEVBQUUsSUFBc0M7SUFDcEYsT0FBTyxHQUFHLEdBQUcsUUFBUSxJQUFJLENBQUMsUUFBUSw0QkFBNEIsSUFBSSxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyx1QkFBdUIsQ0FBQztBQUN0SCxDQUFDO0FBY0QsNkRBQTZEO0FBQzdELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxNQUFjLEVBQUUsT0FBZSxFQUFFLElBQW9CO0lBQ3RGLE9BQU87UUFDTCxJQUFJLEVBQUUsb0JBQW9CO1FBQzFCLE1BQU07UUFDTixPQUFPO1FBQ1AsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1FBQ3ZCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtRQUNmLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxHQUFHLE1BQU0sSUFBSSxPQUFPLEVBQUUsRUFBRSxJQUFJLENBQUM7UUFDekQsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxzQkFBc0IsQ0FBQztLQUN6RCxDQUFDO0FBQ0osQ0FBQztBQUVELDRFQUE0RTtBQUM1RSxNQUFNLFVBQVUsa0JBQWtCLENBQUMsTUFBYyxFQUFFLE9BQWUsRUFBRSxJQUFvQjtJQUN0RixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMxRixPQUFPLEdBQUcsTUFBTSxJQUFJLE9BQU8sK0JBQStCLElBQUksQ0FBQyxRQUFRLDRCQUE0QixJQUFJLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUc7VUFDaEksNkZBQTZGLEtBQUssRUFBRSxDQUFDO0FBQzNHLENBQUM7QUFFRCxpREFBaUQ7QUFDakQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxLQUFjO0lBQ3ZDLElBQUksQ0FBQyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDN0UsTUFBTSxDQUFDLEdBQUcsS0FBZ0MsQ0FBQztJQUMzQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLFFBQVEsS0FBSyxRQUFRLElBQUksT0FBTyxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVE7UUFBRSxPQUFPLElBQUksQ0FBQztJQUM5RSxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUUsQ0FBQyxDQUFDLFFBQWdDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDbkksT0FBTztRQUNMLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUTtRQUNwQixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUk7UUFDWixXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsV0FBVyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRSxRQUFRLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztLQUM5RixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFBsdWdpbiBpbWFnZSBzY2FuIGdhdGVzIChkb2NzL3BsdWdpbi1wdWJsaXNoaW5nLm1kIFwiU2NhbiBnYXRlc1wiKTogdGhlIHNoYXJlZFxuICogdm9jYWJ1bGFyeSBvZiB0aGUgYnVpbGQtdGltZSBnYXRlLCB0aGUgbmlnaHRseSByZXNjYW4ncyBmbGFnLCBhbmQgdGhlXG4gKiByZXNvbHV0aW9uIHdhcm5pbmcgLyBibG9jayDigJQgdXNlZCBieSB0aGUgcGx1Z2luIHNlcnZpY2UgKHdoaWNoIHN0b3JlcyBhbmRcbiAqIGVuZm9yY2VzIHRoZW0pLCB0aGUgcmVzb2x2ZXIgaW4gcGlwZWxpbmUtZGF0YSAod2hpY2ggc2tpcHMgb3Igd2FybnMpLCBhbmQgdGhlXG4gKiBkYXNoYm9hcmQgKHdoaWNoIHNob3dzIHRoZW0pLlxuICpcbiAqIEEgZmluZGluZyBpcyBGSVhBQkxFIHdoZW4gZ3J5cGUgcmVwb3J0cyBhIGZpeGVkIHZlcnNpb24gZm9yIGl0XG4gKiAoYHZ1bG5lcmFiaWxpdHkuZml4LnN0YXRlID09IFwiZml4ZWRcImAgd2l0aCBhdCBsZWFzdCBvbmUgdmVyc2lvbik6IHRoZSBnYXRlc1xuICogY291bnQgZml4YWJsZSBDcml0aWNhbCBmaW5kaW5ncyBvbmx5LCBiZWNhdXNlIGFuIHVuZml4YWJsZSBvbmUgY2FuJ3QgYmVcbiAqIGFjdGVkIG9uIGJ5IHJlYnVpbGRpbmcgb3IgdXBncmFkaW5nLlxuICovXG5cbmltcG9ydCB7IGVudkJvb2wsIGVudkludCB9IGZyb20gJy4uL3V0aWxzL2Vudi5qcyc7XG5cbi8qKiBPbmUgQ3JpdGljYWwvSGlnaCBmaW5kaW5nIGFzIHRoZSBmbGFnIGFuZCB0aGUgZ2F0ZSBtZXNzYWdlcyBjYXJyeSBpdC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luU2NhbkZpbmRpbmcge1xuICAvKiogVGhlIHZ1bG5lcmFiaWxpdHkgaWQgKENWRS3igKYsIEdIU0Et4oCmKS4gKi9cbiAgaWQ6IHN0cmluZztcbiAgc2V2ZXJpdHk6ICdjcml0aWNhbCcgfCAnaGlnaCc7XG4gIHBhY2thZ2VOYW1lOiBzdHJpbmc7XG4gIHBhY2thZ2VWZXJzaW9uOiBzdHJpbmc7XG4gIC8qKiBWZXJzaW9ucyB0aGF0IGZpeCBpdDsgZW1wdHkgPSBubyBmaXggYXZhaWxhYmxlIChub3QgZml4YWJsZSkuICovXG4gIGZpeGVkSW46IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIGBzY2FuX2ZsYWdgIG9uIGEgdmVyc2lvbiB0aGUgbmlnaHRseSByZXNjYW4gZmxhZ2dlZDogaXRzIGZpeGFibGVcbiAqIENyaXRpY2FsL0hpZ2ggY291bnRzIGF0IHRoYXQgcmVzY2FuIGFuZCB0aGUgdG9wIGZpeGFibGUgZmluZGluZ3MuIFNldCB3aGlsZVxuICogZml4YWJsZSBDcml0aWNhbHMgZXhjZWVkIGBQTFVHSU5fVlVMTl9NQVhfQ1JJVElDQUxgLCBjbGVhcmVkIHdoZW4gYSByZXNjYW5cbiAqIGZpbmRzIHRoZW0gcmVzb2x2ZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luU2NhbkZsYWcge1xuICAvKiogRml4YWJsZSBDcml0aWNhbCBmaW5kaW5ncy4gKi9cbiAgY3JpdGljYWw6IG51bWJlcjtcbiAgLyoqIEZpeGFibGUgSGlnaCBmaW5kaW5ncy4gKi9cbiAgaGlnaDogbnVtYmVyO1xuICAvKiogVGhlIGZsb29yIGl0IHdhcyBjb21wYXJlZCBhZ2FpbnN0IChgUExVR0lOX1ZVTE5fTUFYX0NSSVRJQ0FMYCkuICovXG4gIG1heENyaXRpY2FsOiBudW1iZXI7XG4gIC8qKiBBdCBtb3N0IHtAbGluayBTQ0FOX0ZMQUdfVE9QX0ZJTkRJTkdTfSBmaXhhYmxlIGZpbmRpbmdzLCBDcml0aWNhbHMgZmlyc3QuICovXG4gIGZpbmRpbmdzOiBQbHVnaW5TY2FuRmluZGluZ1tdO1xufVxuXG4vKiogRmluZGluZ3MgYSBmbGFnIC8gZ2F0ZSBtZXNzYWdlIGNhcnJpZXMuICovXG5leHBvcnQgY29uc3QgU0NBTl9GTEFHX1RPUF9GSU5ESU5HUyA9IDEwO1xuXG4vKiogTG9va3VwIC8gcmVzb2x1dGlvbiB3YXJuaW5nIGNvZGUgZm9yIGEgZmxhZ2dlZCB2ZXJzaW9uLiAqL1xuZXhwb3J0IGNvbnN0IFZVTE5fRkxBR0dFRF9XQVJOSU5HID0gJ1ZVTE5fRkxBR0dFRCc7XG5cbi8qKlxuICogYFBMVUdJTl9WVUxOX01BWF9DUklUSUNBTGA6IHRoZSBwbGF0Zm9ybSBmbG9vciDigJQgYSB2ZXJzaW9uIHdpdGggTU9SRSBmaXhhYmxlXG4gKiBDcml0aWNhbCBmaW5kaW5ncyB0aGFuIHRoaXMgZmFpbHMgaXRzIGJ1aWxkIChgUExVR0lOX1ZVTE5fR0FURWApIGFuZCBpc1xuICogZmxhZ2dlZCBieSB0aGUgcmVzY2FuLiBEZWZhdWx0IGAwYDsgYC0xYCBkaXNhYmxlcyB0aGUgZmxvb3IgKGFuZCB0aGUgZmxhZykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwbHVnaW5WdWxuTWF4Q3JpdGljYWwoKTogbnVtYmVyIHtcbiAgcmV0dXJuIGVudkludCgnUExVR0lOX1ZVTE5fTUFYX0NSSVRJQ0FMJywgMCwgeyBtaW46IC0xIH0pO1xufVxuXG4vKiogV2hldGhlciBgZml4YWJsZUNyaXRpY2FsYCBicmVha3MgdGhlIHBsYXRmb3JtIGZsb29yIChuZXZlciwgd2hlbiBkaXNhYmxlZCkuICovXG5leHBvcnQgZnVuY3Rpb24gZXhjZWVkc1Z1bG5GbG9vcihmaXhhYmxlQ3JpdGljYWw6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQsIG1heDogbnVtYmVyID0gcGx1Z2luVnVsbk1heENyaXRpY2FsKCkpOiBib29sZWFuIHtcbiAgcmV0dXJuIG1heCA+PSAwICYmIChmaXhhYmxlQ3JpdGljYWwgPz8gMCkgPiBtYXg7XG59XG5cbi8qKlxuICogYFBMVUdJTl9CTE9DS19PTl9ORVdfQ1JJVElDQUxgIChkZWZhdWx0IGZhbHNlKTogcmVzb2x1dGlvbiBTS0lQUyBmbGFnZ2VkXG4gKiB2ZXJzaW9ucyBmb3IgcmFuZ2VzIGFuZCB0aGUgZGVmYXVsdCAoZmFsbGluZyBiYWNrIHRvIHRoZSBuZXdlc3QgdW5mbGFnZ2VkXG4gKiBvbmUpLCBhbmQgYW4gZXhhY3QgcGluIHRvIGEgZmxhZ2dlZCB2ZXJzaW9uIGlzIHJlZnVzZWQgNDA5XG4gKiBgUExVR0lOX1ZFUlNJT05fVlVMTl9CTE9DS0VEYC4gT2ZmOiBmbGFnZ2VkIHZlcnNpb25zIHJlc29sdmUgd2l0aCBhXG4gKiBgVlVMTl9GTEFHR0VEYCB3YXJuaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYmxvY2tPbk5ld0NyaXRpY2FsKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZW52Qm9vbCgnUExVR0lOX0JMT0NLX09OX05FV19DUklUSUNBTCcsIGZhbHNlKTtcbn1cblxuLyoqIGBwa2dAMS4yLjMg4oaSIDEuMi40YCAvIGBwa2dAMS4yLjMgKG5vIGZpeClgLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlc2NyaWJlRml4KGY6IFBpY2s8UGx1Z2luU2NhbkZpbmRpbmcsICdwYWNrYWdlTmFtZScgfCAncGFja2FnZVZlcnNpb24nIHwgJ2ZpeGVkSW4nPik6IHN0cmluZyB7XG4gIGNvbnN0IGF0ID0gYCR7Zi5wYWNrYWdlTmFtZX0ke2YucGFja2FnZVZlcnNpb24gPyBgQCR7Zi5wYWNrYWdlVmVyc2lvbn1gIDogJyd9YDtcbiAgcmV0dXJuIGYuZml4ZWRJbi5sZW5ndGggPiAwID8gYCR7YXR9IOKGkiAke2YuZml4ZWRJbi5qb2luKCcsICcpfWAgOiBgJHthdH0gKG5vIGZpeClgO1xufVxuXG4vKiogYENWRS0xIChvcGVuc3NsQDMuMC4xIOKGkiAzLjAuMik7IENWRS0yICjigKYpYCBmb3IgdGhlIGZpcnN0IGBsaW1pdGAgZmluZGluZ3MuICovXG5leHBvcnQgZnVuY3Rpb24gZGVzY3JpYmVGaW5kaW5ncyhmaW5kaW5nczogcmVhZG9ubHkgUGx1Z2luU2NhbkZpbmRpbmdbXSwgbGltaXQgPSA1KTogc3RyaW5nIHtcbiAgY29uc3Qgc2hvd24gPSBmaW5kaW5ncy5zbGljZSgwLCBsaW1pdCkubWFwKChmKSA9PiBgJHtmLmlkfSAoJHtkZXNjcmliZUZpeChmKX0pYCkuam9pbignOyAnKTtcbiAgY29uc3QgbW9yZSA9IGZpbmRpbmdzLmxlbmd0aCA+IGxpbWl0ID8gYDsgKyR7ZmluZGluZ3MubGVuZ3RoIC0gbGltaXR9IG1vcmVgIDogJyc7XG4gIHJldHVybiBgJHtzaG93bn0ke21vcmV9YDtcbn1cblxuLyoqIFRoZSB3YXJuaW5nIHRleHQgZm9yIGEgZmxhZ2dlZCB2ZXJzaW9uOiBgeEB2IGhhcyBOIGZpeGFibGUgQ3JpdGljYWwgZmluZGluZ3Mg4oCUIHJlYnVpbGQgb3IgdXBncmFkZWAuICovXG5leHBvcnQgZnVuY3Rpb24gdnVsbkZsYWdnZWRNZXNzYWdlKHJlZjogc3RyaW5nLCBmbGFnOiBQaWNrPFBsdWdpblNjYW5GbGFnLCAnY3JpdGljYWwnPik6IHN0cmluZyB7XG4gIHJldHVybiBgJHtyZWZ9IGhhcyAke2ZsYWcuY3JpdGljYWx9IGZpeGFibGUgQ3JpdGljYWwgZmluZGluZyR7ZmxhZy5jcml0aWNhbCA9PT0gMSA/ICcnIDogJ3MnfSDigJQgcmVidWlsZCBvciB1cGdyYWRlYDtcbn1cblxuLyoqIEEgYFZVTE5fRkxBR0dFRGAgbG9va3VwIHdhcm5pbmcgKHRoZSBsb29rdXAgZW52ZWxvcGUncyBgd2FybmluZ3NbXWAgZW50cnkpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBWdWxuRmxhZ2dlZFdhcm5pbmcge1xuICBjb2RlOiB0eXBlb2YgVlVMTl9GTEFHR0VEX1dBUk5JTkc7XG4gIHBsdWdpbjogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIGNyaXRpY2FsOiBudW1iZXI7XG4gIGhpZ2g6IG51bWJlcjtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICAvKiogVG9wIGZpeGFibGUgZmluZGluZ3Mgd2l0aCB0aGVpciBmaXhlZCB2ZXJzaW9ucy4gKi9cbiAgZmluZGluZ3M6IFBsdWdpblNjYW5GaW5kaW5nW107XG59XG5cbi8qKiBCdWlsZCB0aGUgYFZVTE5fRkxBR0dFRGAgd2FybmluZyBmb3IgYHBsdWdpbkB2ZXJzaW9uYC4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2dWxuRmxhZ2dlZFdhcm5pbmcocGx1Z2luOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZywgZmxhZzogUGx1Z2luU2NhbkZsYWcpOiBWdWxuRmxhZ2dlZFdhcm5pbmcge1xuICByZXR1cm4ge1xuICAgIGNvZGU6IFZVTE5fRkxBR0dFRF9XQVJOSU5HLFxuICAgIHBsdWdpbixcbiAgICB2ZXJzaW9uLFxuICAgIGNyaXRpY2FsOiBmbGFnLmNyaXRpY2FsLFxuICAgIGhpZ2g6IGZsYWcuaGlnaCxcbiAgICBtZXNzYWdlOiB2dWxuRmxhZ2dlZE1lc3NhZ2UoYCR7cGx1Z2lufUAke3ZlcnNpb259YCwgZmxhZyksXG4gICAgZmluZGluZ3M6IGZsYWcuZmluZGluZ3Muc2xpY2UoMCwgU0NBTl9GTEFHX1RPUF9GSU5ESU5HUyksXG4gIH07XG59XG5cbi8qKiBUaGUgNDA5IG1lc3NhZ2UgZm9yIGFuIGV4YWN0IHBpbiB0byBhIGZsYWdnZWQgdmVyc2lvbiB3aGlsZSBibG9ja2luZy4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2dWxuQmxvY2tlZE1lc3NhZ2UocGx1Z2luOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZywgZmxhZzogUGx1Z2luU2NhbkZsYWcpOiBzdHJpbmcge1xuICBjb25zdCBmaXhlcyA9IGZsYWcuZmluZGluZ3MubGVuZ3RoID4gMCA/IGAgRml4OiAke2Rlc2NyaWJlRmluZGluZ3MoZmxhZy5maW5kaW5ncyl9LmAgOiAnJztcbiAgcmV0dXJuIGAke3BsdWdpbn1AJHt2ZXJzaW9ufSBpcyBibG9ja2VkOiBhIHJlc2NhbiBmb3VuZCAke2ZsYWcuY3JpdGljYWx9IGZpeGFibGUgQ3JpdGljYWwgZmluZGluZyR7ZmxhZy5jcml0aWNhbCA9PT0gMSA/ICcnIDogJ3MnfSBgXG4gICAgKyBgKFBMVUdJTl9CTE9DS19PTl9ORVdfQ1JJVElDQUwpLiBSZWJ1aWxkIGl0IG9uIHBhdGNoZWQgcGFja2FnZXMgb3IgbW92ZSB0byBhIG5ld2VyIHZlcnNpb24uJHtmaXhlc31gO1xufVxuXG4vKiogTmFycm93IGFuIHVua25vd24gYHNjYW5fZmxhZ2AganNvbmIgdmFsdWUuICovXG5leHBvcnQgZnVuY3Rpb24gYXNTY2FuRmxhZyh2YWx1ZTogdW5rbm93bik6IFBsdWdpblNjYW5GbGFnIHwgbnVsbCB7XG4gIGlmICghdmFsdWUgfHwgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHYgPSB2YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgaWYgKHR5cGVvZiB2LmNyaXRpY2FsICE9PSAnbnVtYmVyJyB8fCB0eXBlb2Ygdi5oaWdoICE9PSAnbnVtYmVyJykgcmV0dXJuIG51bGw7XG4gIGNvbnN0IGZpbmRpbmdzID0gQXJyYXkuaXNBcnJheSh2LmZpbmRpbmdzKSA/ICh2LmZpbmRpbmdzIGFzIFBsdWdpblNjYW5GaW5kaW5nW10pLmZpbHRlcigoZikgPT4gZiAmJiB0eXBlb2YgZi5pZCA9PT0gJ3N0cmluZycpIDogW107XG4gIHJldHVybiB7XG4gICAgY3JpdGljYWw6IHYuY3JpdGljYWwsXG4gICAgaGlnaDogdi5oaWdoLFxuICAgIG1heENyaXRpY2FsOiB0eXBlb2Ygdi5tYXhDcml0aWNhbCA9PT0gJ251bWJlcicgPyB2Lm1heENyaXRpY2FsIDogMCxcbiAgICBmaW5kaW5nczogZmluZGluZ3MubWFwKChmKSA9PiAoeyAuLi5mLCBmaXhlZEluOiBBcnJheS5pc0FycmF5KGYuZml4ZWRJbikgPyBmLmZpeGVkSW4gOiBbXSB9KSksXG4gIH07XG59XG4iXX0=
@@ -100,3 +100,10 @@ export type AdvisorySource = (typeof ADVISORY_SOURCES)[number];
100
100
  */
101
101
  export declare const SUBMISSION_STATUSES: readonly ['pending_verification', 'pending_review', 'publishing', 'gate_failed', 'approved', 'rejected', 'expired', 'claimed'];
102
102
  export type SubmissionStatus = (typeof SUBMISSION_STATUSES)[number];
103
+ /** Who receives an org's plugin security notices: `writers` = the uploader plus
104
+ * members holding `plugins:write`; `users` = the org's chosen members. */
105
+ export declare const PLUGIN_SECURITY_RECIPIENT_MODES: readonly ['writers', 'users'];
106
+ export type PluginSecurityRecipientMode = (typeof PLUGIN_SECURITY_RECIPIENT_MODES)[number];
107
+ /** How rescan findings (N31) are batched; blocked builds (N30) are always immediate. */
108
+ export declare const PLUGIN_SECURITY_DIGEST_MODES: readonly ['immediate', 'daily', 'weekly'];
109
+ export type PluginSecurityDigestMode = (typeof PLUGIN_SECURITY_DIGEST_MODES)[number];
@@ -91,4 +91,12 @@ export const ADVISORY_SOURCES = ['publisher', 'moderator', 'cve_rescan', 'review
91
91
  export const SUBMISSION_STATUSES = [
92
92
  'pending_verification', 'pending_review', 'publishing', 'gate_failed', 'approved', 'rejected', 'expired', 'claimed',
93
93
  ];
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lyZS12b2NhYnVsYXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL3dpcmUtdm9jYWJ1bGFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7R0FTRztBQUVILGdGQUFnRjtBQUNoRixtQkFBbUI7QUFDbkIsZ0ZBQWdGO0FBRWhGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFVLENBQUM7QUFHekUsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBVSxDQUFDO0FBRzVELHVGQUF1RjtBQUN2RixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsSUFBSSxFQUFFLEtBQUs7SUFDWCxVQUFVLEVBQUUsYUFBYTtJQUN6QixPQUFPO0lBQ1AsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSztJQUN4QixJQUFJLEVBQUUsT0FBTztJQUNiLFFBQVEsRUFBRSxXQUFXLEVBQUUsVUFBVTtJQUNqQyxTQUFTLEVBQUUsU0FBUztJQUNwQixVQUFVLEVBQUUsVUFBVTtDQUNkLENBQUM7QUFHWCxzRUFBc0U7QUFDdEUsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBNEMsQ0FBQztBQUV2SCwwREFBMEQ7QUFDMUQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFVLENBQUM7QUFHNUQsNEVBQTRFO0FBQzVFLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQVUsQ0FBQztBQUd6RCxnRkFBZ0Y7QUFDaEYsV0FBVztBQUNYLGdGQUFnRjtBQUVoRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxjQUFjLEVBQUUs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QUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBVSxDQUFDO0FBRzVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFVLENBQUM7QUFHbEYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQVUsQ0FBQztBQUc1RSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBVSxDQUFDO0FBRzVGOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRztJQUNqQyxzQkFBc0IsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVM7Q0FDM0csQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIENsb3NlZCBzdHJpbmcgdm9jYWJ1bGFyaWVzIHRoYXQgY3Jvc3MgdGhlIHdpcmUgYmV0d2VlbiB0aGUgc2VydmljZXMgYW5kIHRoZVxuICogYnJvd3Nlci4gRWFjaCBpcyBhbiBgYXMgY29uc3RgIGFycmF5ICh0aGUgcnVudGltZSBsaXN0IGEgWm9kIGVudW0sIGEgTW9uZ29vc2VcbiAqIGVudW0gb3IgYSBkcml6emxlIGAkdHlwZWAgYnVpbGRzIGZyb20pIHBsdXMgdGhlIHVuaW9uIHR5cGUgZGVyaXZlZCBmcm9tIGl0LlxuICpcbiAqIERlcGVuZGVuY3ktZnJlZSBvbiBwdXJwb3NlOiB0aGUgZnJvbnRlbmQgaW1wb3J0cyB0aGVzZSB0eXBlcywgc28gYSB2YWx1ZSBhZGRlZFxuICogaGVyZSByZWFjaGVzIHRoZSBVSSdzIGV4aGF1c3RpdmUgbGFiZWwgbWFwcyBhcyBhIGNvbXBpbGUgZXJyb3IgaW5zdGVhZCBvZiBhXG4gKiBzaWxlbnRseSB1bmhhbmRsZWQgc3RyaW5nLiBUaGUgUG9zdGdyZXMgQ0hFQ0sgY29uc3RyYWludHMgaW5cbiAqIGRlcGxveS9zaGFyZWQvcG9zdGdyZXMtaW5pdC5zcWwgbWlycm9yIHRoZSBvbmVzIHN0b3JlZCBpbiBTUUwuXG4gKi9cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENvbXBsaWFuY2UgcnVsZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBjb25zdCBSVUxFX1NFVkVSSVRJRVMgPSBbJ3dhcm5pbmcnLCAnZXJyb3InLCAnY3JpdGljYWwnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFJ1bGVTZXZlcml0eSA9ICh0eXBlb2YgUlVMRV9TRVZFUklUSUVTKVtudW1iZXJdO1xuXG5leHBvcnQgY29uc3QgUlVMRV9UQVJHRVRTID0gWydwbHVnaW4nLCAncGlwZWxpbmUnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFJ1bGVUYXJnZXQgPSAodHlwZW9mIFJVTEVfVEFSR0VUUylbbnVtYmVyXTtcblxuLyoqIEZpZWxkLWV2YWx1YXRpb24gb3BlcmF0b3JzOyB0aGUgZW5naW5lJ3MgaW1wbGVtZW50YXRpb25zIGxpdmUgaW4gYXBpL2NvbXBsaWFuY2UuICovXG5leHBvcnQgY29uc3QgUlVMRV9PUEVSQVRPUlMgPSBbXG4gICdlcScsICduZXEnLFxuICAnY29udGFpbnMnLCAnbm90Q29udGFpbnMnLFxuICAncmVnZXgnLFxuICAnZ3QnLCAnZ3RlJywgJ2x0JywgJ2x0ZScsXG4gICdpbicsICdub3RJbicsXG4gICdleGlzdHMnLCAnbm90RXhpc3RzJywgJ25vdEVtcHR5JyxcbiAgJ2NvdW50R3QnLCAnY291bnRMdCcsXG4gICdsZW5ndGhHdCcsICdsZW5ndGhMdCcsXG5dIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUnVsZU9wZXJhdG9yID0gKHR5cGVvZiBSVUxFX09QRVJBVE9SUylbbnVtYmVyXTtcblxuLyoqIE9wZXJhdG9ycyB0aGF0IHRlc3QgcHJlc2VuY2Ugb25seSBhbmQgdGFrZSBubyBjb21wYXJpc29uIHZhbHVlLiAqL1xuZXhwb3J0IGNvbnN0IFZBTFVFTEVTU19SVUxFX09QRVJBVE9SUyA9IFsnZXhpc3RzJywgJ25vdEV4aXN0cycsICdub3RFbXB0eSddIGFzIGNvbnN0IHNhdGlzZmllcyByZWFkb25seSBSdWxlT3BlcmF0b3JbXTtcblxuLyoqIEhvdyBhIG11bHRpLWNvbmRpdGlvbiBydWxlIGNvbWJpbmVzIGl0cyBjb25kaXRpb25zLiAqL1xuZXhwb3J0IGNvbnN0IFJVTEVfQ09ORElUSU9OX01PREVTID0gWydhbGwnLCAnYW55J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBSdWxlQ29uZGl0aW9uTW9kZSA9ICh0eXBlb2YgUlVMRV9DT05ESVRJT05fTU9ERVMpW251bWJlcl07XG5cbi8qKiBgcHVibGlzaGVkYCBydWxlcyBiZWxvbmcgdG8gdGhlIHN5c3RlbSBvcmcgYW5kIGFwcGx5IGJ5IHN1YnNjcmlwdGlvbi4gKi9cbmV4cG9ydCBjb25zdCBSVUxFX1NDT1BFUyA9IFsnb3JnJywgJ3B1Ymxpc2hlZCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUnVsZVNjb3BlID0gKHR5cGVvZiBSVUxFX1NDT1BFUylbbnVtYmVyXTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIE1lc3NhZ2VzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgY29uc3QgTUVTU0FHRV9UWVBFUyA9IFsnYW5ub3VuY2VtZW50JywgJ2NvbnZlcnNhdGlvbiddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgTWVzc2FnZVR5cGUgPSAodHlwZW9mIE1FU1NBR0VfVFlQRVMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBNRVNTQUdFX1BSSU9SSVRJRVMgPSBbJ25vcm1hbCcsICdoaWdoJywgJ3VyZ2VudCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgTWVzc2FnZVByaW9yaXR5ID0gKHR5cGVvZiBNRVNTQUdFX1BSSU9SSVRJRVMpW251bWJlcl07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBCaWxsaW5nXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgY29uc3QgU1VCU0NSSVBUSU9OX1NUQVRVU0VTID0gWydhY3RpdmUnLCAnY2FuY2VsZWQnLCAncGFzdF9kdWUnLCAndHJpYWxpbmcnLCAnaW5jb21wbGV0ZSddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgU3Vic2NyaXB0aW9uU3RhdHVzID0gKHR5cGVvZiBTVUJTQ1JJUFRJT05fU1RBVFVTRVMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBCSUxMSU5HX0lOVEVSVkFMUyA9IFsnbW9udGhseScsICdhbm51YWwnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEJpbGxpbmdJbnRlcnZhbCA9ICh0eXBlb2YgQklMTElOR19JTlRFUlZBTFMpW251bWJlcl07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBJZGVudGl0eVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIE9JREMgcHJvdmlkZXJzIGFuIG9yZyBJZFAgY29uZmlnIGNhbiBuYW1lIChHaXRIdWIgaXMgT0F1dGgtb25seSBhbmQgcmVmdXNlZCBieSB0aGUgT0lEQyBlbmdpbmUpLiAqL1xuZXhwb3J0IGNvbnN0IElEUF9QUk9WSURFUlMgPSBbJ2dlbmVyaWMtb2lkYycsICdjb2duaXRvJywgJ2dvb2dsZScsICdnaXRodWInXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIElkcFByb3ZpZGVyID0gKHR5cGVvZiBJRFBfUFJPVklERVJTKVtudW1iZXJdO1xuXG4vKiogVGhlIGZlZGVyYXRpb24gcHJvdG9jb2wgYW4gb3JnIHNpZ25zIGluIG92ZXIg4oCUIG9uZSBwZXIgb3JnLiAqL1xuZXhwb3J0IGNvbnN0IElEUF9QUk9UT0NPTFMgPSBbJ29pZGMnLCAnc2FtbCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgSWRwUHJvdG9jb2wgPSAodHlwZW9mIElEUF9QUk9UT0NPTFMpW251bWJlcl07XG5cbi8qKlxuICogV2hpY2ggU0FNTCBhc3NlcnRpb24gYXR0cmlidXRlIGNhcnJpZXMgd2hpY2ggaWRlbnRpdHkgZmllbGQuIEFuIGVtcHR5IG5hbWVcbiAqIG1lYW5zIFwidXNlIHRoZSBjb21tb24gc3BlbGxpbmdzXCIgKHNob3J0IG5hbWVzIHBsdXMgdGhlIEVudHJhL1NoaWJib2xldGggVVJJcykuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2FtbEF0dHJpYnV0ZU1hcHBpbmcge1xuICAvKiogQXR0cmlidXRlIGhvbGRpbmcgdGhlIHVzZXIncyBlbWFpbCBhZGRyZXNzLiAqL1xuICBlbWFpbD86IHN0cmluZztcbiAgLyoqIEF0dHJpYnV0ZSBob2xkaW5nIHRoZSBkaXNwbGF5IG5hbWUuICovXG4gIG5hbWU/OiBzdHJpbmc7XG4gIC8qKiBBdHRyaWJ1dGUgaG9sZGluZyBncm91cCBtZW1iZXJzaGlwcyAoZHJpdmVzIEpJVCByb2xlIG1hcHBpbmcpLiAqL1xuICBncm91cHM/OiBzdHJpbmc7XG59XG5cbi8qKiBUaGUgY29hcnNlIGdyYW50IGEgcGVybWlzc2lvbiByb2xlIGdpdmVzIGl0cyBtZW1iZXJzLiAqL1xuZXhwb3J0IGNvbnN0IFJPTEVfR1JBTlRTID0gWydzdXBlcmFkbWluJywgJ2FkbWluJywgJ21lbWJlciddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUm9sZUdyYW50ID0gKHR5cGVvZiBST0xFX0dSQU5UUylbbnVtYmVyXTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBsdWdpbiBlY29zeXN0ZW0gKGVhY2ggbWlycm9yZWQgYnkgYSBDSEVDSyBpbiBwb3N0Z3Jlcy1pbml0LnNxbClcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBQdWJsaXNoZXIgdHJ1c3QgdGllci4gKi9cbmV4cG9ydCBjb25zdCBQVUJMSVNIRVJfVElFUlMgPSBbJ29mZmljaWFsJywgJ3ZlcmlmaWVkJywgJ2NvbW11bml0eScsICd1bnZlcmlmaWVkJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBQdWJsaXNoZXJUaWVyID0gKHR5cGVvZiBQVUJMSVNIRVJfVElFUlMpW251bWJlcl07XG5cbi8qKiBBIGRpcmVjdG9yeSBsaXN0aW5nJ3MgbGlmZWN5Y2xlIHN0YXRlLiAqL1xuZXhwb3J0IGNvbnN0IExJU1RJTkdfU1RBVEVTID0gWydsaXN0ZWQnLCAndW5tYWludGFpbmVkJywgJ3N1c3BlbmRlZCcsICd0cmFuc2ZlcnJlZCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgTGlzdGluZ1N0YXRlID0gKHR5cGVvZiBMSVNUSU5HX1NUQVRFUylbbnVtYmVyXTtcblxuLyoqIFdoYXQgYSBwdWJsaXNoIHJlcXVlc3QgYXNrcyB0aGUgc3lzdGVtIG9yZyB0byBkby4gKi9cbmV4cG9ydCBjb25zdCBQVUJMSVNIX1JFUVVFU1RfS0lORFMgPSBbXG4gICduZXdfbGlzdGluZycsICduZXdfdmVyc2lvbicsICdsaXN0aW5nX3VwZGF0ZScsICd5YW5rJywgJ3VucGF1c2UnLFxuICAndHJhbnNmZXInLCAnY2xhaW0nLCAncHJvZmlsZV9jaGFuZ2UnLCAnYWR2aXNvcnknLCAndmVyaWZ5JywgJ21vZGVyYXRpb24nLCAnc3VibWlzc2lvbicsXG5dIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUHVibGlzaFJlcXVlc3RLaW5kID0gKHR5cGVvZiBQVUJMSVNIX1JFUVVFU1RfS0lORFMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBQVUJMSVNIX1JFUVVFU1RfU1RBVFVTRVMgPSBbJ3BlbmRpbmcnLCAncGVuZGluZ19zZWNvbmRfYXBwcm92YWwnLCAnYXBwcm92ZWQnLCAncmVqZWN0ZWQnLCAnd2l0aGRyYXduJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBQdWJsaXNoUmVxdWVzdFN0YXR1cyA9ICh0eXBlb2YgUFVCTElTSF9SRVFVRVNUX1NUQVRVU0VTKVtudW1iZXJdO1xuXG4vKiogVGhlIHN0YXR1c2VzIGEgcmVxdWVzdCBpcyBzdGlsbCBcIm9wZW5cIiBpbiAoZHJpdmVzIHRoZSBvbmUtb3Blbi1yZXF1ZXN0IGluZGV4KS4gKi9cbmV4cG9ydCBjb25zdCBPUEVOX1BVQkxJU0hfUkVRVUVTVF9TVEFUVVNFUyA9IFsncGVuZGluZycsICdwZW5kaW5nX3NlY29uZF9hcHByb3ZhbCddIGFzIGNvbnN0IHNhdGlzZmllcyByZWFkb25seSBQdWJsaXNoUmVxdWVzdFN0YXR1c1tdO1xuXG4vKiogYHNlY3VyaXR5YCByZXF1ZXN0cyBqdW1wIHRoZSBtb2RlcmF0aW9uIHF1ZXVlLiAqL1xuZXhwb3J0IGNvbnN0IFBVQkxJU0hfUkVRVUVTVF9MQU5FUyA9IFsnc3RhbmRhcmQnLCAnc2VjdXJpdHknXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFB1Ymxpc2hSZXF1ZXN0TGFuZSA9ICh0eXBlb2YgUFVCTElTSF9SRVFVRVNUX0xBTkVTKVtudW1iZXJdO1xuXG4vKiogSW5zdGFsbCB2ZXJzaW9uIHBvbGljeTogZXhhY3QsIGB+YCwgYF5gLCBvciBhbnl0aGluZyBub24tYnJlYWtpbmcuICovXG5leHBvcnQgY29uc3QgSU5TVEFMTF9WRVJTSU9OX1BPTElDSUVTID0gWydwaW5uZWQnLCAncGF0Y2gnLCAnbWlub3InLCAnbGF0ZXN0J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBJbnN0YWxsVmVyc2lvblBvbGljeSA9ICh0eXBlb2YgSU5TVEFMTF9WRVJTSU9OX1BPTElDSUVTKVtudW1iZXJdO1xuXG5leHBvcnQgY29uc3QgSU5TVEFMTF9TVEFUVVNFUyA9IFsnYWN0aXZlJywgJ3BlbmRpbmdfYXBwcm92YWwnLCAnZGVuaWVkJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBJbnN0YWxsU3RhdHVzID0gKHR5cGVvZiBJTlNUQUxMX1NUQVRVU0VTKVtudW1iZXJdO1xuXG4vKiogVGhlIGFkdmlzb3J5IHNldmVyaXR5IGF0IHdoaWNoIGEgY29uc3VtcHRpb24gcG9saWN5IGJsb2NrcyBpbnN0YWxscy4gKi9cbmV4cG9ydCBjb25zdCBCTE9DS19PTl9BRFZJU09SWV9MRVZFTFMgPSBbJ2NyaXRpY2FsJywgJ2hpZ2gnLCAnbmV2ZXInXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEJsb2NrT25BZHZpc29yeSA9ICh0eXBlb2YgQkxPQ0tfT05fQURWSVNPUllfTEVWRUxTKVtudW1iZXJdO1xuXG4vKiogV2hldGhlciBvZmZpY2lhbCBwbHVnaW5zIG5lZWQgYW4gZXhwbGljaXQgaW5zdGFsbCBiZWZvcmUgYSBwaXBlbGluZSBjYW4gdXNlIHRoZW0uICovXG5leHBvcnQgY29uc3QgT0ZGSUNJQUxfSU5TVEFMTFNfTU9ERVMgPSBbJ2ltcGxpY2l0JywgJ2V4cGxpY2l0J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBPZmZpY2lhbEluc3RhbGxzID0gKHR5cGVvZiBPRkZJQ0lBTF9JTlNUQUxMU19NT0RFUylbbnVtYmVyXTtcblxuZXhwb3J0IGNvbnN0IFJFVklFV19TVEFUVVNFUyA9IFsncHVibGlzaGVkJywgJ2hlbGQnLCAncmVtb3ZlZCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUmV2aWV3U3RhdHVzID0gKHR5cGVvZiBSRVZJRVdfU1RBVFVTRVMpW251bWJlcl07XG5cbi8qKiBXaHkgYSBoZWxkIHJldmlldyBpcyBoZWxkLiAqL1xuZXhwb3J0IGNvbnN0IFJFVklFV19IT0xEX1JFQVNPTlMgPSBbJ3JlcG9ydHMnLCAnYnVyc3QnLCAnZmlsdGVyJywgJ3NlY3VyaXR5JywgJ21vZGVyYXRvciddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUmV2aWV3SG9sZFJlYXNvbiA9ICh0eXBlb2YgUkVWSUVXX0hPTERfUkVBU09OUylbbnVtYmVyXTtcblxuLyoqIEEgcmV2aWV3IHJlcG9ydCdzIGNhdGVnb3J5OyBgc2VjdXJpdHlgIHJvdXRlcyBwcml2YXRlbHkgdG8gdGhlIGFkdmlzb3J5IHBhdGguICovXG5leHBvcnQgY29uc3QgUkVWSUVXX1JFUE9SVF9DQVRFR09SSUVTID0gWydzcGFtJywgJ2FidXNlJywgJ29mZl90b3BpYycsICdzZWN1cml0eSddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUmV2aWV3UmVwb3J0Q2F0ZWdvcnkgPSAodHlwZW9mIFJFVklFV19SRVBPUlRfQ0FURUdPUklFUylbbnVtYmVyXTtcblxuZXhwb3J0IGNvbnN0IEFEVklTT1JZX1NFVkVSSVRJRVMgPSBbJ2NyaXRpY2FsJywgJ2hpZ2gnLCAnbWVkaXVtJywgJ2xvdyddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgQWR2aXNvcnlTZXZlcml0eSA9ICh0eXBlb2YgQURWSVNPUllfU0VWRVJJVElFUylbbnVtYmVyXTtcblxuZXhwb3J0IGNvbnN0IEFEVklTT1JZX1NUQVRFUyA9IFsnZHJhZnQnLCAncHVibGlzaGVkJywgJ3dpdGhkcmF3biddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgQWR2aXNvcnlTdGF0ZSA9ICh0eXBlb2YgQURWSVNPUllfU1RBVEVTKVtudW1iZXJdO1xuXG5leHBvcnQgY29uc3QgQURWSVNPUllfU09VUkNFUyA9IFsncHVibGlzaGVyJywgJ21vZGVyYXRvcicsICdjdmVfcmVzY2FuJywgJ3JldmlldyddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgQWR2aXNvcnlTb3VyY2UgPSAodHlwZW9mIEFEVklTT1JZX1NPVVJDRVMpW251bWJlcl07XG5cbi8qKlxuICogQW4gYW5vbnltb3VzIHN1Ym1pc3Npb24ncyBsaWZlY3ljbGUuIGBwdWJsaXNoaW5nYCBpcyB0aGUgc2hvcnQgY2xhaW0gYW5cbiAqIGFwcHJvdmFsIHRha2VzIGJlZm9yZSBpdCBjb3BpZXMgdGhlIHF1YXJhbnRpbmVkIGltYWdlIG91dCwgc28gYW4gZXhwaXJ5IGNhblxuICogbmV2ZXIgZGVsZXRlIHRoZSBhcnRpZmFjdHMgb2YgYSBzdWJtaXNzaW9uIHRoYXQgaXMgYmVpbmcgcHVibGlzaGVkLlxuICovXG5leHBvcnQgY29uc3QgU1VCTUlTU0lPTl9TVEFUVVNFUyA9IFtcbiAgJ3BlbmRpbmdfdmVyaWZpY2F0aW9uJywgJ3BlbmRpbmdfcmV2aWV3JywgJ3B1Ymxpc2hpbmcnLCAnZ2F0ZV9mYWlsZWQnLCAnYXBwcm92ZWQnLCAncmVqZWN0ZWQnLCAnZXhwaXJlZCcsICdjbGFpbWVkJyxcbl0gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBTdWJtaXNzaW9uU3RhdHVzID0gKHR5cGVvZiBTVUJNSVNTSU9OX1NUQVRVU0VTKVtudW1iZXJdO1xuIl19
94
+ // -----------------------------------------------------------------------------
95
+ // Plugin security notifications (per org)
96
+ // -----------------------------------------------------------------------------
97
+ /** Who receives an org's plugin security notices: `writers` = the uploader plus
98
+ * members holding `plugins:write`; `users` = the org's chosen members. */
99
+ export const PLUGIN_SECURITY_RECIPIENT_MODES = ['writers', 'users'];
100
+ /** How rescan findings (N31) are batched; blocked builds (N30) are always immediate. */
101
+ export const PLUGIN_SECURITY_DIGEST_MODES = ['immediate', 'daily', 'weekly'];
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lyZS12b2NhYnVsYXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL3dpcmUtdm9jYWJ1bGFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7R0FTRztBQUVILGdGQUFnRjtBQUNoRixtQkFBbUI7QUFDbkIsZ0ZBQWdGO0FBRWhGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFVLENBQUM7QUFHekUsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBVSxDQUFDO0FBRzVELHVGQUF1RjtBQUN2RixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsSUFBSSxFQUFFLEtBQUs7SUFDWCxVQUFVLEVBQUUsYUFBYTtJQUN6QixPQUFPO0lBQ1AsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSztJQUN4QixJQUFJLEVBQUUsT0FBTztJQUNiLFFBQVEsRUFBRSxXQUFXLEVBQUUsVUFBVTtJQUNqQyxTQUFTLEVBQUUsU0FBUztJQUNwQixVQUFVLEVBQUUsVUFBVTtDQUNkLENBQUM7QUFHWCxzRUFBc0U7QUFDdEUsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBNEMsQ0FBQztBQUV2SCwwREFBMEQ7QUFDMUQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFVLENBQUM7QUFHNUQsNEVBQTRFO0FBQzVFLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQVUsQ0FBQztBQUd6RCxnRkFBZ0Y7QUFDaEYsV0FBVztBQUNYLGdGQUFnRjtBQUVoRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxjQUFjLEVBQUUs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QUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBVSxDQUFDO0FBRzVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFVLENBQUM7QUFHbEYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQVUsQ0FBQztBQUc1RSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBVSxDQUFDO0FBRzVGOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRztJQUNqQyxzQkFBc0IsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVM7Q0FDM0csQ0FBQztBQUdYLGdGQUFnRjtBQUNoRiwwQ0FBMEM7QUFDMUMsZ0ZBQWdGO0FBRWhGOzJFQUMyRTtBQUMzRSxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQVUsQ0FBQztBQUc3RSx3RkFBd0Y7QUFDeEYsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogQ2xvc2VkIHN0cmluZyB2b2NhYnVsYXJpZXMgdGhhdCBjcm9zcyB0aGUgd2lyZSBiZXR3ZWVuIHRoZSBzZXJ2aWNlcyBhbmQgdGhlXG4gKiBicm93c2VyLiBFYWNoIGlzIGFuIGBhcyBjb25zdGAgYXJyYXkgKHRoZSBydW50aW1lIGxpc3QgYSBab2QgZW51bSwgYSBNb25nb29zZVxuICogZW51bSBvciBhIGRyaXp6bGUgYCR0eXBlYCBidWlsZHMgZnJvbSkgcGx1cyB0aGUgdW5pb24gdHlwZSBkZXJpdmVkIGZyb20gaXQuXG4gKlxuICogRGVwZW5kZW5jeS1mcmVlIG9uIHB1cnBvc2U6IHRoZSBmcm9udGVuZCBpbXBvcnRzIHRoZXNlIHR5cGVzLCBzbyBhIHZhbHVlIGFkZGVkXG4gKiBoZXJlIHJlYWNoZXMgdGhlIFVJJ3MgZXhoYXVzdGl2ZSBsYWJlbCBtYXBzIGFzIGEgY29tcGlsZSBlcnJvciBpbnN0ZWFkIG9mIGFcbiAqIHNpbGVudGx5IHVuaGFuZGxlZCBzdHJpbmcuIFRoZSBQb3N0Z3JlcyBDSEVDSyBjb25zdHJhaW50cyBpblxuICogZGVwbG95L3NoYXJlZC9wb3N0Z3Jlcy1pbml0LnNxbCBtaXJyb3IgdGhlIG9uZXMgc3RvcmVkIGluIFNRTC5cbiAqL1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ29tcGxpYW5jZSBydWxlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGNvbnN0IFJVTEVfU0VWRVJJVElFUyA9IFsnd2FybmluZycsICdlcnJvcicsICdjcml0aWNhbCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUnVsZVNldmVyaXR5ID0gKHR5cGVvZiBSVUxFX1NFVkVSSVRJRVMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBSVUxFX1RBUkdFVFMgPSBbJ3BsdWdpbicsICdwaXBlbGluZSddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUnVsZVRhcmdldCA9ICh0eXBlb2YgUlVMRV9UQVJHRVRTKVtudW1iZXJdO1xuXG4vKiogRmllbGQtZXZhbHVhdGlvbiBvcGVyYXRvcnM7IHRoZSBlbmdpbmUncyBpbXBsZW1lbnRhdGlvbnMgbGl2ZSBpbiBhcGkvY29tcGxpYW5jZS4gKi9cbmV4cG9ydCBjb25zdCBSVUxFX09QRVJBVE9SUyA9IFtcbiAgJ2VxJywgJ25lcScsXG4gICdjb250YWlucycsICdub3RDb250YWlucycsXG4gICdyZWdleCcsXG4gICdndCcsICdndGUnLCAnbHQnLCAnbHRlJyxcbiAgJ2luJywgJ25vdEluJyxcbiAgJ2V4aXN0cycsICdub3RFeGlzdHMnLCAnbm90RW1wdHknLFxuICAnY291bnRHdCcsICdjb3VudEx0JyxcbiAgJ2xlbmd0aEd0JywgJ2xlbmd0aEx0Jyxcbl0gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBSdWxlT3BlcmF0b3IgPSAodHlwZW9mIFJVTEVfT1BFUkFUT1JTKVtudW1iZXJdO1xuXG4vKiogT3BlcmF0b3JzIHRoYXQgdGVzdCBwcmVzZW5jZSBvbmx5IGFuZCB0YWtlIG5vIGNvbXBhcmlzb24gdmFsdWUuICovXG5leHBvcnQgY29uc3QgVkFMVUVMRVNTX1JVTEVfT1BFUkFUT1JTID0gWydleGlzdHMnLCAnbm90RXhpc3RzJywgJ25vdEVtcHR5J10gYXMgY29uc3Qgc2F0aXNmaWVzIHJlYWRvbmx5IFJ1bGVPcGVyYXRvcltdO1xuXG4vKiogSG93IGEgbXVsdGktY29uZGl0aW9uIHJ1bGUgY29tYmluZXMgaXRzIGNvbmRpdGlvbnMuICovXG5leHBvcnQgY29uc3QgUlVMRV9DT05ESVRJT05fTU9ERVMgPSBbJ2FsbCcsICdhbnknXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFJ1bGVDb25kaXRpb25Nb2RlID0gKHR5cGVvZiBSVUxFX0NPTkRJVElPTl9NT0RFUylbbnVtYmVyXTtcblxuLyoqIGBwdWJsaXNoZWRgIHJ1bGVzIGJlbG9uZyB0byB0aGUgc3lzdGVtIG9yZyBhbmQgYXBwbHkgYnkgc3Vic2NyaXB0aW9uLiAqL1xuZXhwb3J0IGNvbnN0IFJVTEVfU0NPUEVTID0gWydvcmcnLCAncHVibGlzaGVkJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBSdWxlU2NvcGUgPSAodHlwZW9mIFJVTEVfU0NPUEVTKVtudW1iZXJdO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gTWVzc2FnZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBjb25zdCBNRVNTQUdFX1RZUEVTID0gWydhbm5vdW5jZW1lbnQnLCAnY29udmVyc2F0aW9uJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBNZXNzYWdlVHlwZSA9ICh0eXBlb2YgTUVTU0FHRV9UWVBFUylbbnVtYmVyXTtcblxuZXhwb3J0IGNvbnN0IE1FU1NBR0VfUFJJT1JJVElFUyA9IFsnbm9ybWFsJywgJ2hpZ2gnLCAndXJnZW50J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBNZXNzYWdlUHJpb3JpdHkgPSAodHlwZW9mIE1FU1NBR0VfUFJJT1JJVElFUylbbnVtYmVyXTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEJpbGxpbmdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBjb25zdCBTVUJTQ1JJUFRJT05fU1RBVFVTRVMgPSBbJ2FjdGl2ZScsICdjYW5jZWxlZCcsICdwYXN0X2R1ZScsICd0cmlhbGluZycsICdpbmNvbXBsZXRlJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBTdWJzY3JpcHRpb25TdGF0dXMgPSAodHlwZW9mIFNVQlNDUklQVElPTl9TVEFUVVNFUylbbnVtYmVyXTtcblxuZXhwb3J0IGNvbnN0IEJJTExJTkdfSU5URVJWQUxTID0gWydtb250aGx5JywgJ2FubnVhbCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgQmlsbGluZ0ludGVydmFsID0gKHR5cGVvZiBCSUxMSU5HX0lOVEVSVkFMUylbbnVtYmVyXTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIElkZW50aXR5XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKiogT0lEQyBwcm92aWRlcnMgYW4gb3JnIElkUCBjb25maWcgY2FuIG5hbWUgKEdpdEh1YiBpcyBPQXV0aC1vbmx5IGFuZCByZWZ1c2VkIGJ5IHRoZSBPSURDIGVuZ2luZSkuICovXG5leHBvcnQgY29uc3QgSURQX1BST1ZJREVSUyA9IFsnZ2VuZXJpYy1vaWRjJywgJ2NvZ25pdG8nLCAnZ29vZ2xlJywgJ2dpdGh1YiddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgSWRwUHJvdmlkZXIgPSAodHlwZW9mIElEUF9QUk9WSURFUlMpW251bWJlcl07XG5cbi8qKiBUaGUgZmVkZXJhdGlvbiBwcm90b2NvbCBhbiBvcmcgc2lnbnMgaW4gb3ZlciDigJQgb25lIHBlciBvcmcuICovXG5leHBvcnQgY29uc3QgSURQX1BST1RPQ09MUyA9IFsnb2lkYycsICdzYW1sJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBJZHBQcm90b2NvbCA9ICh0eXBlb2YgSURQX1BST1RPQ09MUylbbnVtYmVyXTtcblxuLyoqXG4gKiBXaGljaCBTQU1MIGFzc2VydGlvbiBhdHRyaWJ1dGUgY2FycmllcyB3aGljaCBpZGVudGl0eSBmaWVsZC4gQW4gZW1wdHkgbmFtZVxuICogbWVhbnMgXCJ1c2UgdGhlIGNvbW1vbiBzcGVsbGluZ3NcIiAoc2hvcnQgbmFtZXMgcGx1cyB0aGUgRW50cmEvU2hpYmJvbGV0aCBVUklzKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTYW1sQXR0cmlidXRlTWFwcGluZyB7XG4gIC8qKiBBdHRyaWJ1dGUgaG9sZGluZyB0aGUgdXNlcidzIGVtYWlsIGFkZHJlc3MuICovXG4gIGVtYWlsPzogc3RyaW5nO1xuICAvKiogQXR0cmlidXRlIGhvbGRpbmcgdGhlIGRpc3BsYXkgbmFtZS4gKi9cbiAgbmFtZT86IHN0cmluZztcbiAgLyoqIEF0dHJpYnV0ZSBob2xkaW5nIGdyb3VwIG1lbWJlcnNoaXBzIChkcml2ZXMgSklUIHJvbGUgbWFwcGluZykuICovXG4gIGdyb3Vwcz86IHN0cmluZztcbn1cblxuLyoqIFRoZSBjb2Fyc2UgZ3JhbnQgYSBwZXJtaXNzaW9uIHJvbGUgZ2l2ZXMgaXRzIG1lbWJlcnMuICovXG5leHBvcnQgY29uc3QgUk9MRV9HUkFOVFMgPSBbJ3N1cGVyYWRtaW4nLCAnYWRtaW4nLCAnbWVtYmVyJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBSb2xlR3JhbnQgPSAodHlwZW9mIFJPTEVfR1JBTlRTKVtudW1iZXJdO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUGx1Z2luIGVjb3N5c3RlbSAoZWFjaCBtaXJyb3JlZCBieSBhIENIRUNLIGluIHBvc3RncmVzLWluaXQuc3FsKVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIFB1Ymxpc2hlciB0cnVzdCB0aWVyLiAqL1xuZXhwb3J0IGNvbnN0IFBVQkxJU0hFUl9USUVSUyA9IFsnb2ZmaWNpYWwnLCAndmVyaWZpZWQnLCAnY29tbXVuaXR5JywgJ3VudmVyaWZpZWQnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFB1Ymxpc2hlclRpZXIgPSAodHlwZW9mIFBVQkxJU0hFUl9USUVSUylbbnVtYmVyXTtcblxuLyoqIEEgZGlyZWN0b3J5IGxpc3RpbmcncyBsaWZlY3ljbGUgc3RhdGUuICovXG5leHBvcnQgY29uc3QgTElTVElOR19TVEFURVMgPSBbJ2xpc3RlZCcsICd1bm1haW50YWluZWQnLCAnc3VzcGVuZGVkJywgJ3RyYW5zZmVycmVkJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBMaXN0aW5nU3RhdGUgPSAodHlwZW9mIExJU1RJTkdfU1RBVEVTKVtudW1iZXJdO1xuXG4vKiogV2hhdCBhIHB1Ymxpc2ggcmVxdWVzdCBhc2tzIHRoZSBzeXN0ZW0gb3JnIHRvIGRvLiAqL1xuZXhwb3J0IGNvbnN0IFBVQkxJU0hfUkVRVUVTVF9LSU5EUyA9IFtcbiAgJ25ld19saXN0aW5nJywgJ25ld192ZXJzaW9uJywgJ2xpc3RpbmdfdXBkYXRlJywgJ3lhbmsnLCAndW5wYXVzZScsXG4gICd0cmFuc2ZlcicsICdjbGFpbScsICdwcm9maWxlX2NoYW5nZScsICdhZHZpc29yeScsICd2ZXJpZnknLCAnbW9kZXJhdGlvbicsICdzdWJtaXNzaW9uJyxcbl0gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBQdWJsaXNoUmVxdWVzdEtpbmQgPSAodHlwZW9mIFBVQkxJU0hfUkVRVUVTVF9LSU5EUylbbnVtYmVyXTtcblxuZXhwb3J0IGNvbnN0IFBVQkxJU0hfUkVRVUVTVF9TVEFUVVNFUyA9IFsncGVuZGluZycsICdwZW5kaW5nX3NlY29uZF9hcHByb3ZhbCcsICdhcHByb3ZlZCcsICdyZWplY3RlZCcsICd3aXRoZHJhd24nXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFB1Ymxpc2hSZXF1ZXN0U3RhdHVzID0gKHR5cGVvZiBQVUJMSVNIX1JFUVVFU1RfU1RBVFVTRVMpW251bWJlcl07XG5cbi8qKiBUaGUgc3RhdHVzZXMgYSByZXF1ZXN0IGlzIHN0aWxsIFwib3BlblwiIGluIChkcml2ZXMgdGhlIG9uZS1vcGVuLXJlcXVlc3QgaW5kZXgpLiAqL1xuZXhwb3J0IGNvbnN0IE9QRU5fUFVCTElTSF9SRVFVRVNUX1NUQVRVU0VTID0gWydwZW5kaW5nJywgJ3BlbmRpbmdfc2Vjb25kX2FwcHJvdmFsJ10gYXMgY29uc3Qgc2F0aXNmaWVzIHJlYWRvbmx5IFB1Ymxpc2hSZXF1ZXN0U3RhdHVzW107XG5cbi8qKiBgc2VjdXJpdHlgIHJlcXVlc3RzIGp1bXAgdGhlIG1vZGVyYXRpb24gcXVldWUuICovXG5leHBvcnQgY29uc3QgUFVCTElTSF9SRVFVRVNUX0xBTkVTID0gWydzdGFuZGFyZCcsICdzZWN1cml0eSddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUHVibGlzaFJlcXVlc3RMYW5lID0gKHR5cGVvZiBQVUJMSVNIX1JFUVVFU1RfTEFORVMpW251bWJlcl07XG5cbi8qKiBJbnN0YWxsIHZlcnNpb24gcG9saWN5OiBleGFjdCwgYH5gLCBgXmAsIG9yIGFueXRoaW5nIG5vbi1icmVha2luZy4gKi9cbmV4cG9ydCBjb25zdCBJTlNUQUxMX1ZFUlNJT05fUE9MSUNJRVMgPSBbJ3Bpbm5lZCcsICdwYXRjaCcsICdtaW5vcicsICdsYXRlc3QnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEluc3RhbGxWZXJzaW9uUG9saWN5ID0gKHR5cGVvZiBJTlNUQUxMX1ZFUlNJT05fUE9MSUNJRVMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBJTlNUQUxMX1NUQVRVU0VTID0gWydhY3RpdmUnLCAncGVuZGluZ19hcHByb3ZhbCcsICdkZW5pZWQnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEluc3RhbGxTdGF0dXMgPSAodHlwZW9mIElOU1RBTExfU1RBVFVTRVMpW251bWJlcl07XG5cbi8qKiBUaGUgYWR2aXNvcnkgc2V2ZXJpdHkgYXQgd2hpY2ggYSBjb25zdW1wdGlvbiBwb2xpY3kgYmxvY2tzIGluc3RhbGxzLiAqL1xuZXhwb3J0IGNvbnN0IEJMT0NLX09OX0FEVklTT1JZX0xFVkVMUyA9IFsnY3JpdGljYWwnLCAnaGlnaCcsICduZXZlciddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgQmxvY2tPbkFkdmlzb3J5ID0gKHR5cGVvZiBCTE9DS19PTl9BRFZJU09SWV9MRVZFTFMpW251bWJlcl07XG5cbi8qKiBXaGV0aGVyIG9mZmljaWFsIHBsdWdpbnMgbmVlZCBhbiBleHBsaWNpdCBpbnN0YWxsIGJlZm9yZSBhIHBpcGVsaW5lIGNhbiB1c2UgdGhlbS4gKi9cbmV4cG9ydCBjb25zdCBPRkZJQ0lBTF9JTlNUQUxMU19NT0RFUyA9IFsnaW1wbGljaXQnLCAnZXhwbGljaXQnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIE9mZmljaWFsSW5zdGFsbHMgPSAodHlwZW9mIE9GRklDSUFMX0lOU1RBTExTX01PREVTKVtudW1iZXJdO1xuXG5leHBvcnQgY29uc3QgUkVWSUVXX1NUQVRVU0VTID0gWydwdWJsaXNoZWQnLCAnaGVsZCcsICdyZW1vdmVkJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBSZXZpZXdTdGF0dXMgPSAodHlwZW9mIFJFVklFV19TVEFUVVNFUylbbnVtYmVyXTtcblxuLyoqIFdoeSBhIGhlbGQgcmV2aWV3IGlzIGhlbGQuICovXG5leHBvcnQgY29uc3QgUkVWSUVXX0hPTERfUkVBU09OUyA9IFsncmVwb3J0cycsICdidXJzdCcsICdmaWx0ZXInLCAnc2VjdXJpdHknLCAnbW9kZXJhdG9yJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBSZXZpZXdIb2xkUmVhc29uID0gKHR5cGVvZiBSRVZJRVdfSE9MRF9SRUFTT05TKVtudW1iZXJdO1xuXG4vKiogQSByZXZpZXcgcmVwb3J0J3MgY2F0ZWdvcnk7IGBzZWN1cml0eWAgcm91dGVzIHByaXZhdGVseSB0byB0aGUgYWR2aXNvcnkgcGF0aC4gKi9cbmV4cG9ydCBjb25zdCBSRVZJRVdfUkVQT1JUX0NBVEVHT1JJRVMgPSBbJ3NwYW0nLCAnYWJ1c2UnLCAnb2ZmX3RvcGljJywgJ3NlY3VyaXR5J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBSZXZpZXdSZXBvcnRDYXRlZ29yeSA9ICh0eXBlb2YgUkVWSUVXX1JFUE9SVF9DQVRFR09SSUVTKVtudW1iZXJdO1xuXG5leHBvcnQgY29uc3QgQURWSVNPUllfU0VWRVJJVElFUyA9IFsnY3JpdGljYWwnLCAnaGlnaCcsICdtZWRpdW0nLCAnbG93J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBBZHZpc29yeVNldmVyaXR5ID0gKHR5cGVvZiBBRFZJU09SWV9TRVZFUklUSUVTKVtudW1iZXJdO1xuXG5leHBvcnQgY29uc3QgQURWSVNPUllfU1RBVEVTID0gWydkcmFmdCcsICdwdWJsaXNoZWQnLCAnd2l0aGRyYXduJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBBZHZpc29yeVN0YXRlID0gKHR5cGVvZiBBRFZJU09SWV9TVEFURVMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBBRFZJU09SWV9TT1VSQ0VTID0gWydwdWJsaXNoZXInLCAnbW9kZXJhdG9yJywgJ2N2ZV9yZXNjYW4nLCAncmV2aWV3J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBBZHZpc29yeVNvdXJjZSA9ICh0eXBlb2YgQURWSVNPUllfU09VUkNFUylbbnVtYmVyXTtcblxuLyoqXG4gKiBBbiBhbm9ueW1vdXMgc3VibWlzc2lvbidzIGxpZmVjeWNsZS4gYHB1Ymxpc2hpbmdgIGlzIHRoZSBzaG9ydCBjbGFpbSBhblxuICogYXBwcm92YWwgdGFrZXMgYmVmb3JlIGl0IGNvcGllcyB0aGUgcXVhcmFudGluZWQgaW1hZ2Ugb3V0LCBzbyBhbiBleHBpcnkgY2FuXG4gKiBuZXZlciBkZWxldGUgdGhlIGFydGlmYWN0cyBvZiBhIHN1Ym1pc3Npb24gdGhhdCBpcyBiZWluZyBwdWJsaXNoZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBTVUJNSVNTSU9OX1NUQVRVU0VTID0gW1xuICAncGVuZGluZ192ZXJpZmljYXRpb24nLCAncGVuZGluZ19yZXZpZXcnLCAncHVibGlzaGluZycsICdnYXRlX2ZhaWxlZCcsICdhcHByb3ZlZCcsICdyZWplY3RlZCcsICdleHBpcmVkJywgJ2NsYWltZWQnLFxuXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFN1Ym1pc3Npb25TdGF0dXMgPSAodHlwZW9mIFNVQk1JU1NJT05fU1RBVFVTRVMpW251bWJlcl07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQbHVnaW4gc2VjdXJpdHkgbm90aWZpY2F0aW9ucyAocGVyIG9yZylcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBXaG8gcmVjZWl2ZXMgYW4gb3JnJ3MgcGx1Z2luIHNlY3VyaXR5IG5vdGljZXM6IGB3cml0ZXJzYCA9IHRoZSB1cGxvYWRlciBwbHVzXG4gKiAgbWVtYmVycyBob2xkaW5nIGBwbHVnaW5zOndyaXRlYDsgYHVzZXJzYCA9IHRoZSBvcmcncyBjaG9zZW4gbWVtYmVycy4gKi9cbmV4cG9ydCBjb25zdCBQTFVHSU5fU0VDVVJJVFlfUkVDSVBJRU5UX01PREVTID0gWyd3cml0ZXJzJywgJ3VzZXJzJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBQbHVnaW5TZWN1cml0eVJlY2lwaWVudE1vZGUgPSAodHlwZW9mIFBMVUdJTl9TRUNVUklUWV9SRUNJUElFTlRfTU9ERVMpW251bWJlcl07XG5cbi8qKiBIb3cgcmVzY2FuIGZpbmRpbmdzIChOMzEpIGFyZSBiYXRjaGVkOyBibG9ja2VkIGJ1aWxkcyAoTjMwKSBhcmUgYWx3YXlzIGltbWVkaWF0ZS4gKi9cbmV4cG9ydCBjb25zdCBQTFVHSU5fU0VDVVJJVFlfRElHRVNUX01PREVTID0gWydpbW1lZGlhdGUnLCAnZGFpbHknLCAnd2Vla2x5J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBQbHVnaW5TZWN1cml0eURpZ2VzdE1vZGUgPSAodHlwZW9mIFBMVUdJTl9TRUNVUklUWV9ESUdFU1RfTU9ERVMpW251bWJlcl07XG4iXX0=
@@ -13,6 +13,8 @@
13
13
  * - `scanned`: a vulnerability scan completed (`scannedAt` is set); the
14
14
  * `vuln*` counts are present only then — an unscanned image sends no counts,
15
15
  * so a numeric rule like `vulnCritical lt 1` cannot pass on a missing value.
16
+ * `vulnCriticalFixable` / `vulnHighFixable` count only the findings grype
17
+ * reports a fixed version for (what the platform floor gates on).
16
18
  * - `runAsRoot`: the image config's effective USER is root (empty, `0`, `root`).
17
19
  * - `packages`: package names from the signed SBOM.
18
20
  * - `tags`: the plugin's keywords plus `key=value` labels (CIS 2.1 inventory).
@@ -44,12 +46,14 @@ export interface PluginComplianceAttributes {
44
46
  vulnHigh?: number;
45
47
  vulnMedium?: number;
46
48
  vulnLow?: number;
49
+ vulnCriticalFixable?: number;
50
+ vulnHighFixable?: number;
47
51
  runAsRoot?: boolean;
48
52
  packages?: string[];
49
53
  [key: string]: unknown;
50
54
  }
51
55
  /** Plugin attributes only the build worker can establish (see {@link PluginComplianceAttributes}). */
52
- export declare const PLUGIN_IMAGE_COMPLIANCE_FIELDS: readonly ['signed', 'scanned', 'vulnCritical', 'vulnHigh', 'vulnMedium', 'vulnLow', 'runAsRoot', 'packages'];
56
+ export declare const PLUGIN_IMAGE_COMPLIANCE_FIELDS: readonly ['signed', 'scanned', 'vulnCritical', 'vulnHigh', 'vulnMedium', 'vulnLow', 'vulnCriticalFixable', 'vulnHighFixable', 'runAsRoot', 'packages'];
53
57
  export type PluginImageComplianceField = typeof PLUGIN_IMAGE_COMPLIANCE_FIELDS[number];
54
58
  /** The stored plugin-row columns the image facts derive from (any subset). */
55
59
  export interface PluginImageRow {
@@ -61,6 +65,8 @@ export interface PluginImageRow {
61
65
  vulnHigh?: unknown;
62
66
  vulnMedium?: unknown;
63
67
  vulnLow?: unknown;
68
+ vulnCriticalFixable?: unknown;
69
+ vulnHighFixable?: unknown;
64
70
  runAsRoot?: unknown;
65
71
  keywords?: unknown;
66
72
  labels?: unknown;
@@ -2,7 +2,8 @@
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  /** Plugin attributes only the build worker can establish (see {@link PluginComplianceAttributes}). */
4
4
  export const PLUGIN_IMAGE_COMPLIANCE_FIELDS = [
5
- 'signed', 'scanned', 'vulnCritical', 'vulnHigh', 'vulnMedium', 'vulnLow', 'runAsRoot', 'packages',
5
+ 'signed', 'scanned', 'vulnCritical', 'vulnHigh', 'vulnMedium', 'vulnLow',
6
+ 'vulnCriticalFixable', 'vulnHighFixable', 'runAsRoot', 'packages',
6
7
  ];
7
8
  const SIGNED_DIGEST_RE = /^sha256:[0-9a-f]{64}$/;
8
9
  /**
@@ -65,6 +66,8 @@ export function derivePluginImageCompliance(row, packages) {
65
66
  attributes.vulnHigh = finiteCount(row.vulnHigh);
66
67
  attributes.vulnMedium = finiteCount(row.vulnMedium);
67
68
  attributes.vulnLow = finiteCount(row.vulnLow);
69
+ attributes.vulnCriticalFixable = finiteCount(row.vulnCriticalFixable);
70
+ attributes.vulnHighFixable = finiteCount(row.vulnHighFixable);
68
71
  }
69
72
  if (typeof row.runAsRoot === 'boolean')
70
73
  attributes.runAsRoot = row.runAsRoot;
@@ -75,4 +78,4 @@ export function derivePluginImageCompliance(row, packages) {
75
78
  delete attributes[k];
76
79
  return { attributes, deferredFields: packages === undefined ? ['packages'] : [] };
77
80
  }
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWNvbXBsaWFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcGx1Z2luLWNvbXBsaWFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQXNEdEMsc0dBQXNHO0FBQ3RHLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHO0lBQzVDLFFBQVEsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVO0NBQ3pGLENBQUM7QUFrQlgsTUFBTSxnQkFBZ0IsR0FBRyx1QkFBdUIsQ0FBQztBQUVqRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsR0FBcUQ7SUFDdEYsT0FBTyxHQUFHLENBQUMsU0FBUyxLQUFLLGVBQWUsSUFBSSxHQUFHLENBQUMsVUFBVSxLQUFLLG9CQUFvQixDQUFDO0FBQ3RGLENBQUM7QUFFRCxvRkFBb0Y7QUFDcEYsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFFBQWlCLEVBQUUsTUFBZ0I7SUFDdEUsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUMvQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUM1QixLQUFLLE1BQU0sQ0FBQyxJQUFJLFFBQVE7WUFBRSxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFO2dCQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUNELElBQUksTUFBTSxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNuRSxLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFpQyxDQUFDLEVBQUUsQ0FBQztZQUN2RSxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksT0FBTyxDQUFDLEtBQUssU0FBUztnQkFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUcsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUNuQixDQUFDO0FBRUQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFVLEVBQXNCLEVBQUUsQ0FDckQsT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBRTlEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBQ0gsTUFBTSxVQUFVLDJCQUEyQixDQUN6QyxHQUFtQixFQUNuQixRQUEwQjtJQUUxQixNQUFNLElBQUksR0FBRyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1RCxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUM3QixPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsY0FBYyxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25HLENBQUM7SUFDRCxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsU0FBUyxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQztJQUN0RSxNQUFNLFVBQVUsR0FBK0I7UUFDN0MsSUFBSTtRQUNKLE1BQU0sRUFBRSxPQUFPLEdBQUcsQ0FBQyxXQUFXLEtBQUssUUFBUSxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDO1FBQ3JGLE9BQU87S0FDUixDQUFDO0lBQ0YsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNaLFVBQVUsQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN4RCxVQUFVLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEQsVUFBVSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BELFVBQVUsQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsSUFBSSxPQUFPLEdBQUcsQ0FBQyxTQUFTLEtBQUssU0FBUztRQUFFLFVBQVUsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQztJQUM3RSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO1FBQUUsVUFBVSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDNUQsS0FBSyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUFFLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVM7WUFBRSxPQUFPLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRixPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNwRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogUGx1Z2luIGNvbXBsaWFuY2UgYXR0cmlidXRlczogd2hhdCB0aGUgcGx1Z2luIHNlcnZpY2UgdGVsbHMgY29tcGxpYW5jZSBhYm91dFxuICogYW4gdXBsb2FkZWQgcGx1Z2luIGFuZCBpdHMgcHVzaGVkIGltYWdlLCBkZXJpdmVkIGZyb20gdGhlIHN0b3JlZCBwbHVnaW4gcm93LlxuICovXG5cbi8qKlxuICogVGhlIGF0dHJpYnV0ZXMgdGhlIHBsdWdpbiBzZXJ2aWNlIHNlbmRzIHRvIGAvY29tcGxpYW5jZS92YWxpZGF0ZS9wbHVnaW5gLlxuICpcbiAqIFRoZSBzcGVjL2NvbmZpZyBmaWVsZHMgZGVzY3JpYmUgdGhlIHBsdWdpbiBhcyB1cGxvYWRlZC4gVGhlIGltYWdlIGZpZWxkc1xuICogZGVzY3JpYmUgd2hhdCB0aGUgcGxhdGZvcm0gaXRzZWxmIGVzdGFibGlzaGVkIGFib3V0IHRoZSBwdXNoZWQgaW1hZ2Ug4oCUIHRoZVxuICogZmFjdHMgdGhlIGN1cmF0ZWQgU09DMi9QQ0kvQ0lTIHBsdWdpbiBydWxlcyBldmFsdWF0ZTpcbiAqXG4gKiAtIGBzaWduZWRgOiB0aGUgaW1hZ2UgZGlnZXN0IGNhcnJpZXMgdGhlIHBsYXRmb3JtJ3MgY29zaWduIHNpZ25hdHVyZS5cbiAqIC0gYHNjYW5uZWRgOiBhIHZ1bG5lcmFiaWxpdHkgc2NhbiBjb21wbGV0ZWQgKGBzY2FubmVkQXRgIGlzIHNldCk7IHRoZVxuICogICBgdnVsbipgIGNvdW50cyBhcmUgcHJlc2VudCBvbmx5IHRoZW4g4oCUIGFuIHVuc2Nhbm5lZCBpbWFnZSBzZW5kcyBubyBjb3VudHMsXG4gKiAgIHNvIGEgbnVtZXJpYyBydWxlIGxpa2UgYHZ1bG5Dcml0aWNhbCBsdCAxYCBjYW5ub3QgcGFzcyBvbiBhIG1pc3NpbmcgdmFsdWUuXG4gKiAtIGBydW5Bc1Jvb3RgOiB0aGUgaW1hZ2UgY29uZmlnJ3MgZWZmZWN0aXZlIFVTRVIgaXMgcm9vdCAoZW1wdHksIGAwYCwgYHJvb3RgKS5cbiAqIC0gYHBhY2thZ2VzYDogcGFja2FnZSBuYW1lcyBmcm9tIHRoZSBzaWduZWQgU0JPTS5cbiAqIC0gYHRhZ3NgOiB0aGUgcGx1Z2luJ3Mga2V5d29yZHMgcGx1cyBga2V5PXZhbHVlYCBsYWJlbHMgKENJUyAyLjEgaW52ZW50b3J5KS5cbiAqXG4gKiBJbWFnZSBmaWVsZHMgYXJlIHVua25vd24gdW50aWwgdGhlIGJ1aWxkIHdvcmtlciBoYXMgcHVzaGVkLCBzaWduZWQgYW5kXG4gKiBzY2FubmVkIHRoZSBpbWFnZTsgdGhlIHVwbG9hZC10aW1lIGNoZWNrIGxpc3RzIHRoZW0gaW4gYGRlZmVycmVkRmllbGRzYFxuICogYW5kIHRoZSB3b3JrZXIgcmUtdmFsaWRhdGVzIG9uY2UgdGhleSBhcmUgcmVhbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5Db21wbGlhbmNlQXR0cmlidXRlcyB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHZlcnNpb24/OiBzdHJpbmc7XG4gIHBsdWdpblR5cGU/OiBzdHJpbmc7XG4gIGNvbXB1dGVUeXBlPzogc3RyaW5nO1xuICB0aW1lb3V0PzogbnVtYmVyIHwgbnVsbDtcbiAgZmFpbHVyZUJlaGF2aW9yPzogc3RyaW5nO1xuICBlbnY/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBidWlsZEFyZ3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBpbnN0YWxsQ29tbWFuZHM/OiBzdHJpbmdbXTtcbiAgY29tbWFuZHM/OiBzdHJpbmdbXTtcbiAgdmlzaWJpbGl0eT86IHN0cmluZztcbiAgc2VjcmV0cz86IHVua25vd25bXTtcbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAga2V5d29yZHM/OiBzdHJpbmdbXTtcbiAgYnVpbGRUeXBlPzogc3RyaW5nO1xuICB0YWdzPzogc3RyaW5nW107XG4gIHNpZ25lZD86IGJvb2xlYW47XG4gIHNjYW5uZWQ/OiBib29sZWFuO1xuICB2dWxuQ3JpdGljYWw/OiBudW1iZXI7XG4gIHZ1bG5IaWdoPzogbnVtYmVyO1xuICB2dWxuTWVkaXVtPzogbnVtYmVyO1xuICB2dWxuTG93PzogbnVtYmVyO1xuICBydW5Bc1Jvb3Q/OiBib29sZWFuO1xuICBwYWNrYWdlcz86IHN0cmluZ1tdO1xuICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xufVxuXG4vKiogUGx1Z2luIGF0dHJpYnV0ZXMgb25seSB0aGUgYnVpbGQgd29ya2VyIGNhbiBlc3RhYmxpc2ggKHNlZSB7QGxpbmsgUGx1Z2luQ29tcGxpYW5jZUF0dHJpYnV0ZXN9KS4gKi9cbmV4cG9ydCBjb25zdCBQTFVHSU5fSU1BR0VfQ09NUExJQU5DRV9GSUVMRFMgPSBbXG4gICdzaWduZWQnLCAnc2Nhbm5lZCcsICd2dWxuQ3JpdGljYWwnLCAndnVsbkhpZ2gnLCAndnVsbk1lZGl1bScsICd2dWxuTG93JywgJ3J1bkFzUm9vdCcsICdwYWNrYWdlcycsXG5dIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUGx1Z2luSW1hZ2VDb21wbGlhbmNlRmllbGQgPSB0eXBlb2YgUExVR0lOX0lNQUdFX0NPTVBMSUFOQ0VfRklFTERTW251bWJlcl07XG5cbi8qKiBUaGUgc3RvcmVkIHBsdWdpbi1yb3cgY29sdW1ucyB0aGUgaW1hZ2UgZmFjdHMgZGVyaXZlIGZyb20gKGFueSBzdWJzZXQpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5JbWFnZVJvdyB7XG4gIGJ1aWxkVHlwZT86IHVua25vd247XG4gIHBsdWdpblR5cGU/OiB1bmtub3duO1xuICBpbWFnZURpZ2VzdD86IHVua25vd247XG4gIHNjYW5uZWRBdD86IHVua25vd247XG4gIHZ1bG5Dcml0aWNhbD86IHVua25vd247XG4gIHZ1bG5IaWdoPzogdW5rbm93bjtcbiAgdnVsbk1lZGl1bT86IHVua25vd247XG4gIHZ1bG5Mb3c/OiB1bmtub3duO1xuICBydW5Bc1Jvb3Q/OiB1bmtub3duO1xuICBrZXl3b3Jkcz86IHVua25vd247XG4gIGxhYmVscz86IHVua25vd247XG59XG5cbmNvbnN0IFNJR05FRF9ESUdFU1RfUkUgPSAvXnNoYTI1NjpbMC05YS1mXXs2NH0kLztcblxuLyoqXG4gKiBXaGV0aGVyIGEgcGx1Z2luIHJ1bnMgb24gaXRzIG93biBpbWFnZTogYG1ldGFkYXRhX29ubHlgIGJ1aWxkcyBub25lIGFuZCBhXG4gKiBgTWFudWFsQXBwcm92YWxTdGVwYCBuZXZlciBydW5zIG9uZS4gU2FtZSBydWxlIGFzIHRoZSBwbHVnaW4gd29ya2VyJ3Mgc2tpcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBsdWdpblJ1bnNPd25JbWFnZShyb3c6IFBpY2s8UGx1Z2luSW1hZ2VSb3csICdidWlsZFR5cGUnIHwgJ3BsdWdpblR5cGUnPik6IGJvb2xlYW4ge1xuICByZXR1cm4gcm93LmJ1aWxkVHlwZSAhPT0gJ21ldGFkYXRhX29ubHknICYmIHJvdy5wbHVnaW5UeXBlICE9PSAnTWFudWFsQXBwcm92YWxTdGVwJztcbn1cblxuLyoqIENJUyAyLjEgaW52ZW50b3J5IHRhZ3M6IHRoZSBwbHVnaW4ncyBrZXl3b3JkcyBwbHVzIGl0cyBsYWJlbHMgYXMgYGtleT12YWx1ZWAuICovXG5leHBvcnQgZnVuY3Rpb24gcGx1Z2luQ29tcGxpYW5jZVRhZ3Moa2V5d29yZHM6IHVua25vd24sIGxhYmVscz86IHVua25vd24pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHRhZ3MgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgaWYgKEFycmF5LmlzQXJyYXkoa2V5d29yZHMpKSB7XG4gICAgZm9yIChjb25zdCBrIG9mIGtleXdvcmRzKSBpZiAodHlwZW9mIGsgPT09ICdzdHJpbmcnICYmIGsudHJpbSgpKSB0YWdzLmFkZChrLnRyaW0oKSk7XG4gIH1cbiAgaWYgKGxhYmVscyAmJiB0eXBlb2YgbGFiZWxzID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShsYWJlbHMpKSB7XG4gICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMobGFiZWxzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSkge1xuICAgICAgaWYgKHR5cGVvZiB2ID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdiA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHYgPT09ICdib29sZWFuJykgdGFncy5hZGQoYCR7a309JHtTdHJpbmcodil9YCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBbLi4udGFnc107XG59XG5cbmNvbnN0IGZpbml0ZUNvdW50ID0gKHY6IHVua25vd24pOiBudW1iZXIgfCB1bmRlZmluZWQgPT5cbiAgdHlwZW9mIHYgPT09ICdudW1iZXInICYmIE51bWJlci5pc0Zpbml0ZSh2KSA/IHYgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogVGhlIGltYWdlLWRlcml2ZWQgY29tcGxpYW5jZSBhdHRyaWJ1dGVzIG9mIGEgU1RPUkVEIHBsdWdpbiByb3cgKHRoZSBwbHVnaW5cbiAqIHNlcnZpY2UncyB1cGRhdGUgcmUtY2hlY2ssIHRoZSBidWlsZCB3b3JrZXIncyBwb3N0LWJ1aWxkIGNoZWNrLCBhbmQgdGhlXG4gKiBjb21wbGlhbmNlIHNlcnZpY2UncyBzY2FucyBhbmQgZW50aXR5IGV2ZW50cyBhbGwgZGVyaXZlIHRoZW0gaGVyZSwgc28gdGhlXG4gKiBydWxlcyBzZWUgb25lIGRlZmluaXRpb24gb2YgYHNpZ25lZGAvYHNjYW5uZWRgKS5cbiAqXG4gKiAtIGBzaWduZWRgOiB0aGUgcm93IGNhcnJpZXMgYSB3ZWxsLWZvcm1lZCBkaWdlc3QuIFRoZSB3b3JrZXIgc3RvcmVzIGEgZGlnZXN0XG4gKiAgIG9ubHkgYWZ0ZXIgaW1hZ2UtcmVnaXN0cnkgc2lnbmVkIGl0IChhIHNpZ25pbmcgZmFpbHVyZSBmYWlscyB0aGUgYnVpbGQpLCBzb1xuICogICBhIGRpZ2VzdCBvbiB0aGUgcm93IElTIGEgcGxhdGZvcm0gc2lnbmF0dXJlLlxuICogLSBgc2Nhbm5lZGAgKyBgdnVsbipgOiBjb3VudHMgb25seSB3aGVuIGBzY2FubmVkQXRgIGlzIHNldC5cbiAqIC0gYHJ1bkFzUm9vdGA6IG9ubHkgd2hlbiBrbm93bi5cbiAqIC0gYHBhY2thZ2VzYDogbm90IGEgcm93IGNvbHVtbi4gUGFzcyB0aGUgU0JPTSdzIG5hbWVzIHdoZW4geW91IGhhdmUgdGhlbSxcbiAqICAgYG51bGxgIHdoZW4gdGhlIFNCT00gY291bGQgbm90IGJlIHJlYWQgKGF0dHJpYnV0ZSBvbWl0dGVkLCBzbyBhXG4gKiAgIGAkY291bnQocGFja2FnZXMpYCBydWxlIHNlZXMgMCksIG9yIGxlYXZlIGl0IGB1bmRlZmluZWRgIG9uIGEgcGF0aCB0aGF0XG4gKiAgIG5ldmVyIHJlYWRzIFNCT01zIOKAlCBpdCBpcyB0aGVuIHJldHVybmVkIGluIGBkZWZlcnJlZEZpZWxkc2AgKGl0IHdhc1xuICogICBldmFsdWF0ZWQgYnkgdGhlIHBvc3QtYnVpbGQgY2hlY2sgYW5kIGNhbm5vdCBjaGFuZ2Ugd2l0aG91dCBhIHJlYnVpbGQpLlxuICpcbiAqIEEgcGx1Z2luIHRoYXQgcnVucyBubyBpbWFnZSBvZiBpdHMgb3duIGlzIGhvbmVzdGx5IHVuc2lnbmVkIGFuZCB1bnNjYW5uZWRcbiAqIHdpdGggbm8gcGFja2FnZXM7IG5vdGhpbmcgaXMgZGVmZXJyZWQgZm9yIGl0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVyaXZlUGx1Z2luSW1hZ2VDb21wbGlhbmNlKFxuICByb3c6IFBsdWdpbkltYWdlUm93LFxuICBwYWNrYWdlcz86IHN0cmluZ1tdIHwgbnVsbCxcbik6IHsgYXR0cmlidXRlczogUGx1Z2luQ29tcGxpYW5jZUF0dHJpYnV0ZXM7IGRlZmVycmVkRmllbGRzOiBQbHVnaW5JbWFnZUNvbXBsaWFuY2VGaWVsZFtdIH0ge1xuICBjb25zdCB0YWdzID0gcGx1Z2luQ29tcGxpYW5jZVRhZ3Mocm93LmtleXdvcmRzLCByb3cubGFiZWxzKTtcbiAgaWYgKCFwbHVnaW5SdW5zT3duSW1hZ2Uocm93KSkge1xuICAgIHJldHVybiB7IGF0dHJpYnV0ZXM6IHsgdGFncywgc2lnbmVkOiBmYWxzZSwgc2Nhbm5lZDogZmFsc2UsIHBhY2thZ2VzOiBbXSB9LCBkZWZlcnJlZEZpZWxkczogW10gfTtcbiAgfVxuICBjb25zdCBzY2FubmVkID0gcm93LnNjYW5uZWRBdCAhPT0gbnVsbCAmJiByb3cuc2Nhbm5lZEF0ICE9PSB1bmRlZmluZWQ7XG4gIGNvbnN0IGF0dHJpYnV0ZXM6IFBsdWdpbkNvbXBsaWFuY2VBdHRyaWJ1dGVzID0ge1xuICAgIHRhZ3MsXG4gICAgc2lnbmVkOiB0eXBlb2Ygcm93LmltYWdlRGlnZXN0ID09PSAnc3RyaW5nJyAmJiBTSUdORURfRElHRVNUX1JFLnRlc3Qocm93LmltYWdlRGlnZXN0KSxcbiAgICBzY2FubmVkLFxuICB9O1xuICBpZiAoc2Nhbm5lZCkge1xuICAgIGF0dHJpYnV0ZXMudnVsbkNyaXRpY2FsID0gZmluaXRlQ291bnQocm93LnZ1bG5Dcml0aWNhbCk7XG4gICAgYXR0cmlidXRlcy52dWxuSGlnaCA9IGZpbml0ZUNvdW50KHJvdy52dWxuSGlnaCk7XG4gICAgYXR0cmlidXRlcy52dWxuTWVkaXVtID0gZmluaXRlQ291bnQocm93LnZ1bG5NZWRpdW0pO1xuICAgIGF0dHJpYnV0ZXMudnVsbkxvdyA9IGZpbml0ZUNvdW50KHJvdy52dWxuTG93KTtcbiAgfVxuICBpZiAodHlwZW9mIHJvdy5ydW5Bc1Jvb3QgPT09ICdib29sZWFuJykgYXR0cmlidXRlcy5ydW5Bc1Jvb3QgPSByb3cucnVuQXNSb290O1xuICBpZiAoQXJyYXkuaXNBcnJheShwYWNrYWdlcykpIGF0dHJpYnV0ZXMucGFja2FnZXMgPSBwYWNrYWdlcztcbiAgZm9yIChjb25zdCBrIG9mIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpKSBpZiAoYXR0cmlidXRlc1trXSA9PT0gdW5kZWZpbmVkKSBkZWxldGUgYXR0cmlidXRlc1trXTtcbiAgcmV0dXJuIHsgYXR0cmlidXRlcywgZGVmZXJyZWRGaWVsZHM6IHBhY2thZ2VzID09PSB1bmRlZmluZWQgPyBbJ3BhY2thZ2VzJ10gOiBbXSB9O1xufVxuIl19
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWNvbXBsaWFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcGx1Z2luLWNvbXBsaWFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQTBEdEMsc0dBQXNHO0FBQ3RHLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHO0lBQzVDLFFBQVEsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsU0FBUztJQUN4RSxxQkFBcUIsRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsVUFBVTtDQUN6RCxDQUFDO0FBb0JYLE1BQU0sZ0JBQWdCLEdBQUcsdUJBQXVCLENBQUM7QUFFakQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEdBQXFEO0lBQ3RGLE9BQU8sR0FBRyxDQUFDLFNBQVMsS0FBSyxlQUFlLElBQUksR0FBRyxDQUFDLFVBQVUsS0FBSyxvQkFBb0IsQ0FBQztBQUN0RixDQUFDO0FBRUQsb0ZBQW9GO0FBQ3BGLE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxRQUFpQixFQUFFLE1BQWdCO0lBQ3RFLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFDL0IsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDNUIsS0FBSyxNQUFNLENBQUMsSUFBSSxRQUFRO1lBQUUsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRTtnQkFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFDRCxJQUFJLE1BQU0sSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDbkUsS0FBSyxNQUFNLENBQUMs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RUFBRSxFQUFFLENBQUM7QUFDcEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFBsdWdpbiBjb21wbGlhbmNlIGF0dHJpYnV0ZXM6IHdoYXQgdGhlIHBsdWdpbiBzZXJ2aWNlIHRlbGxzIGNvbXBsaWFuY2UgYWJvdXRcbiAqIGFuIHVwbG9hZGVkIHBsdWdpbiBhbmQgaXRzIHB1c2hlZCBpbWFnZSwgZGVyaXZlZCBmcm9tIHRoZSBzdG9yZWQgcGx1Z2luIHJvdy5cbiAqL1xuXG4vKipcbiAqIFRoZSBhdHRyaWJ1dGVzIHRoZSBwbHVnaW4gc2VydmljZSBzZW5kcyB0byBgL2NvbXBsaWFuY2UvdmFsaWRhdGUvcGx1Z2luYC5cbiAqXG4gKiBUaGUgc3BlYy9jb25maWcgZmllbGRzIGRlc2NyaWJlIHRoZSBwbHVnaW4gYXMgdXBsb2FkZWQuIFRoZSBpbWFnZSBmaWVsZHNcbiAqIGRlc2NyaWJlIHdoYXQgdGhlIHBsYXRmb3JtIGl0c2VsZiBlc3RhYmxpc2hlZCBhYm91dCB0aGUgcHVzaGVkIGltYWdlIOKAlCB0aGVcbiAqIGZhY3RzIHRoZSBjdXJhdGVkIFNPQzIvUENJL0NJUyBwbHVnaW4gcnVsZXMgZXZhbHVhdGU6XG4gKlxuICogLSBgc2lnbmVkYDogdGhlIGltYWdlIGRpZ2VzdCBjYXJyaWVzIHRoZSBwbGF0Zm9ybSdzIGNvc2lnbiBzaWduYXR1cmUuXG4gKiAtIGBzY2FubmVkYDogYSB2dWxuZXJhYmlsaXR5IHNjYW4gY29tcGxldGVkIChgc2Nhbm5lZEF0YCBpcyBzZXQpOyB0aGVcbiAqICAgYHZ1bG4qYCBjb3VudHMgYXJlIHByZXNlbnQgb25seSB0aGVuIOKAlCBhbiB1bnNjYW5uZWQgaW1hZ2Ugc2VuZHMgbm8gY291bnRzLFxuICogICBzbyBhIG51bWVyaWMgcnVsZSBsaWtlIGB2dWxuQ3JpdGljYWwgbHQgMWAgY2Fubm90IHBhc3Mgb24gYSBtaXNzaW5nIHZhbHVlLlxuICogICBgdnVsbkNyaXRpY2FsRml4YWJsZWAgLyBgdnVsbkhpZ2hGaXhhYmxlYCBjb3VudCBvbmx5IHRoZSBmaW5kaW5ncyBncnlwZVxuICogICByZXBvcnRzIGEgZml4ZWQgdmVyc2lvbiBmb3IgKHdoYXQgdGhlIHBsYXRmb3JtIGZsb29yIGdhdGVzIG9uKS5cbiAqIC0gYHJ1bkFzUm9vdGA6IHRoZSBpbWFnZSBjb25maWcncyBlZmZlY3RpdmUgVVNFUiBpcyByb290IChlbXB0eSwgYDBgLCBgcm9vdGApLlxuICogLSBgcGFja2FnZXNgOiBwYWNrYWdlIG5hbWVzIGZyb20gdGhlIHNpZ25lZCBTQk9NLlxuICogLSBgdGFnc2A6IHRoZSBwbHVnaW4ncyBrZXl3b3JkcyBwbHVzIGBrZXk9dmFsdWVgIGxhYmVscyAoQ0lTIDIuMSBpbnZlbnRvcnkpLlxuICpcbiAqIEltYWdlIGZpZWxkcyBhcmUgdW5rbm93biB1bnRpbCB0aGUgYnVpbGQgd29ya2VyIGhhcyBwdXNoZWQsIHNpZ25lZCBhbmRcbiAqIHNjYW5uZWQgdGhlIGltYWdlOyB0aGUgdXBsb2FkLXRpbWUgY2hlY2sgbGlzdHMgdGhlbSBpbiBgZGVmZXJyZWRGaWVsZHNgXG4gKiBhbmQgdGhlIHdvcmtlciByZS12YWxpZGF0ZXMgb25jZSB0aGV5IGFyZSByZWFsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbkNvbXBsaWFuY2VBdHRyaWJ1dGVzIHtcbiAgbmFtZT86IHN0cmluZztcbiAgdmVyc2lvbj86IHN0cmluZztcbiAgcGx1Z2luVHlwZT86IHN0cmluZztcbiAgY29tcHV0ZVR5cGU/OiBzdHJpbmc7XG4gIHRpbWVvdXQ/OiBudW1iZXIgfCBudWxsO1xuICBmYWlsdXJlQmVoYXZpb3I/OiBzdHJpbmc7XG4gIGVudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIGJ1aWxkQXJncz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIGluc3RhbGxDb21tYW5kcz86IHN0cmluZ1tdO1xuICBjb21tYW5kcz86IHN0cmluZ1tdO1xuICB2aXNpYmlsaXR5Pzogc3RyaW5nO1xuICBzZWNyZXRzPzogdW5rbm93bltdO1xuICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBrZXl3b3Jkcz86IHN0cmluZ1tdO1xuICBidWlsZFR5cGU/OiBzdHJpbmc7XG4gIHRhZ3M/OiBzdHJpbmdbXTtcbiAgc2lnbmVkPzogYm9vbGVhbjtcbiAgc2Nhbm5lZD86IGJvb2xlYW47XG4gIHZ1bG5Dcml0aWNhbD86IG51bWJlcjtcbiAgdnVsbkhpZ2g/OiBudW1iZXI7XG4gIHZ1bG5NZWRpdW0/OiBudW1iZXI7XG4gIHZ1bG5Mb3c/OiBudW1iZXI7XG4gIHZ1bG5Dcml0aWNhbEZpeGFibGU/OiBudW1iZXI7XG4gIHZ1bG5IaWdoRml4YWJsZT86IG51bWJlcjtcbiAgcnVuQXNSb290PzogYm9vbGVhbjtcbiAgcGFja2FnZXM/OiBzdHJpbmdbXTtcbiAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbn1cblxuLyoqIFBsdWdpbiBhdHRyaWJ1dGVzIG9ubHkgdGhlIGJ1aWxkIHdvcmtlciBjYW4gZXN0YWJsaXNoIChzZWUge0BsaW5rIFBsdWdpbkNvbXBsaWFuY2VBdHRyaWJ1dGVzfSkuICovXG5leHBvcnQgY29uc3QgUExVR0lOX0lNQUdFX0NPTVBMSUFOQ0VfRklFTERTID0gW1xuICAnc2lnbmVkJywgJ3NjYW5uZWQnLCAndnVsbkNyaXRpY2FsJywgJ3Z1bG5IaWdoJywgJ3Z1bG5NZWRpdW0nLCAndnVsbkxvdycsXG4gICd2dWxuQ3JpdGljYWxGaXhhYmxlJywgJ3Z1bG5IaWdoRml4YWJsZScsICdydW5Bc1Jvb3QnLCAncGFja2FnZXMnLFxuXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFBsdWdpbkltYWdlQ29tcGxpYW5jZUZpZWxkID0gdHlwZW9mIFBMVUdJTl9JTUFHRV9DT01QTElBTkNFX0ZJRUxEU1tudW1iZXJdO1xuXG4vKiogVGhlIHN0b3JlZCBwbHVnaW4tcm93IGNvbHVtbnMgdGhlIGltYWdlIGZhY3RzIGRlcml2ZSBmcm9tIChhbnkgc3Vic2V0KS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luSW1hZ2VSb3cge1xuICBidWlsZFR5cGU/OiB1bmtub3duO1xuICBwbHVnaW5UeXBlPzogdW5rbm93bjtcbiAgaW1hZ2VEaWdlc3Q/OiB1bmtub3duO1xuICBzY2FubmVkQXQ/OiB1bmtub3duO1xuICB2dWxuQ3JpdGljYWw/OiB1bmtub3duO1xuICB2dWxuSGlnaD86IHVua25vd247XG4gIHZ1bG5NZWRpdW0/OiB1bmtub3duO1xuICB2dWxuTG93PzogdW5rbm93bjtcbiAgdnVsbkNyaXRpY2FsRml4YWJsZT86IHVua25vd247XG4gIHZ1bG5IaWdoRml4YWJsZT86IHVua25vd247XG4gIHJ1bkFzUm9vdD86IHVua25vd247XG4gIGtleXdvcmRzPzogdW5rbm93bjtcbiAgbGFiZWxzPzogdW5rbm93bjtcbn1cblxuY29uc3QgU0lHTkVEX0RJR0VTVF9SRSA9IC9ec2hhMjU2OlswLTlhLWZdezY0fSQvO1xuXG4vKipcbiAqIFdoZXRoZXIgYSBwbHVnaW4gcnVucyBvbiBpdHMgb3duIGltYWdlOiBgbWV0YWRhdGFfb25seWAgYnVpbGRzIG5vbmUgYW5kIGFcbiAqIGBNYW51YWxBcHByb3ZhbFN0ZXBgIG5ldmVyIHJ1bnMgb25lLiBTYW1lIHJ1bGUgYXMgdGhlIHBsdWdpbiB3b3JrZXIncyBza2lwLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGx1Z2luUnVuc093bkltYWdlKHJvdzogUGljazxQbHVnaW5JbWFnZVJvdywgJ2J1aWxkVHlwZScgfCAncGx1Z2luVHlwZSc+KTogYm9vbGVhbiB7XG4gIHJldHVybiByb3cuYnVpbGRUeXBlICE9PSAnbWV0YWRhdGFfb25seScgJiYgcm93LnBsdWdpblR5cGUgIT09ICdNYW51YWxBcHByb3ZhbFN0ZXAnO1xufVxuXG4vKiogQ0lTIDIuMSBpbnZlbnRvcnkgdGFnczogdGhlIHBsdWdpbidzIGtleXdvcmRzIHBsdXMgaXRzIGxhYmVscyBhcyBga2V5PXZhbHVlYC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwbHVnaW5Db21wbGlhbmNlVGFncyhrZXl3b3JkczogdW5rbm93biwgbGFiZWxzPzogdW5rbm93bik6IHN0cmluZ1tdIHtcbiAgY29uc3QgdGFncyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBpZiAoQXJyYXkuaXNBcnJheShrZXl3b3JkcykpIHtcbiAgICBmb3IgKGNvbnN0IGsgb2Yga2V5d29yZHMpIGlmICh0eXBlb2YgayA9PT0gJ3N0cmluZycgJiYgay50cmltKCkpIHRhZ3MuYWRkKGsudHJpbSgpKTtcbiAgfVxuICBpZiAobGFiZWxzICYmIHR5cGVvZiBsYWJlbHMgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGxhYmVscykpIHtcbiAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhsYWJlbHMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pKSB7XG4gICAgICBpZiAodHlwZW9mIHYgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2ID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgdiA9PT0gJ2Jvb2xlYW4nKSB0YWdzLmFkZChgJHtrfT0ke1N0cmluZyh2KX1gKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFsuLi50YWdzXTtcbn1cblxuY29uc3QgZmluaXRlQ291bnQgPSAodjogdW5rbm93bik6IG51bWJlciB8IHVuZGVmaW5lZCA9PlxuICB0eXBlb2YgdiA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzRmluaXRlKHYpID8gdiA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBUaGUgaW1hZ2UtZGVyaXZlZCBjb21wbGlhbmNlIGF0dHJpYnV0ZXMgb2YgYSBTVE9SRUQgcGx1Z2luIHJvdyAodGhlIHBsdWdpblxuICogc2VydmljZSdzIHVwZGF0ZSByZS1jaGVjaywgdGhlIGJ1aWxkIHdvcmtlcidzIHBvc3QtYnVpbGQgY2hlY2ssIGFuZCB0aGVcbiAqIGNvbXBsaWFuY2Ugc2VydmljZSdzIHNjYW5zIGFuZCBlbnRpdHkgZXZlbnRzIGFsbCBkZXJpdmUgdGhlbSBoZXJlLCBzbyB0aGVcbiAqIHJ1bGVzIHNlZSBvbmUgZGVmaW5pdGlvbiBvZiBgc2lnbmVkYC9gc2Nhbm5lZGApLlxuICpcbiAqIC0gYHNpZ25lZGA6IHRoZSByb3cgY2FycmllcyBhIHdlbGwtZm9ybWVkIGRpZ2VzdC4gVGhlIHdvcmtlciBzdG9yZXMgYSBkaWdlc3RcbiAqICAgb25seSBhZnRlciBpbWFnZS1yZWdpc3RyeSBzaWduZWQgaXQgKGEgc2lnbmluZyBmYWlsdXJlIGZhaWxzIHRoZSBidWlsZCksIHNvXG4gKiAgIGEgZGlnZXN0IG9uIHRoZSByb3cgSVMgYSBwbGF0Zm9ybSBzaWduYXR1cmUuXG4gKiAtIGBzY2FubmVkYCArIGB2dWxuKmA6IGNvdW50cyBvbmx5IHdoZW4gYHNjYW5uZWRBdGAgaXMgc2V0LlxuICogLSBgcnVuQXNSb290YDogb25seSB3aGVuIGtub3duLlxuICogLSBgcGFja2FnZXNgOiBub3QgYSByb3cgY29sdW1uLiBQYXNzIHRoZSBTQk9NJ3MgbmFtZXMgd2hlbiB5b3UgaGF2ZSB0aGVtLFxuICogICBgbnVsbGAgd2hlbiB0aGUgU0JPTSBjb3VsZCBub3QgYmUgcmVhZCAoYXR0cmlidXRlIG9taXR0ZWQsIHNvIGFcbiAqICAgYCRjb3VudChwYWNrYWdlcylgIHJ1bGUgc2VlcyAwKSwgb3IgbGVhdmUgaXQgYHVuZGVmaW5lZGAgb24gYSBwYXRoIHRoYXRcbiAqICAgbmV2ZXIgcmVhZHMgU0JPTXMg4oCUIGl0IGlzIHRoZW4gcmV0dXJuZWQgaW4gYGRlZmVycmVkRmllbGRzYCAoaXQgd2FzXG4gKiAgIGV2YWx1YXRlZCBieSB0aGUgcG9zdC1idWlsZCBjaGVjayBhbmQgY2Fubm90IGNoYW5nZSB3aXRob3V0IGEgcmVidWlsZCkuXG4gKlxuICogQSBwbHVnaW4gdGhhdCBydW5zIG5vIGltYWdlIG9mIGl0cyBvd24gaXMgaG9uZXN0bHkgdW5zaWduZWQgYW5kIHVuc2Nhbm5lZFxuICogd2l0aCBubyBwYWNrYWdlczsgbm90aGluZyBpcyBkZWZlcnJlZCBmb3IgaXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXJpdmVQbHVnaW5JbWFnZUNvbXBsaWFuY2UoXG4gIHJvdzogUGx1Z2luSW1hZ2VSb3csXG4gIHBhY2thZ2VzPzogc3RyaW5nW10gfCBudWxsLFxuKTogeyBhdHRyaWJ1dGVzOiBQbHVnaW5Db21wbGlhbmNlQXR0cmlidXRlczsgZGVmZXJyZWRGaWVsZHM6IFBsdWdpbkltYWdlQ29tcGxpYW5jZUZpZWxkW10gfSB7XG4gIGNvbnN0IHRhZ3MgPSBwbHVnaW5Db21wbGlhbmNlVGFncyhyb3cua2V5d29yZHMsIHJvdy5sYWJlbHMpO1xuICBpZiAoIXBsdWdpblJ1bnNPd25JbWFnZShyb3cpKSB7XG4gICAgcmV0dXJuIHsgYXR0cmlidXRlczogeyB0YWdzLCBzaWduZWQ6IGZhbHNlLCBzY2FubmVkOiBmYWxzZSwgcGFja2FnZXM6IFtdIH0sIGRlZmVycmVkRmllbGRzOiBbXSB9O1xuICB9XG4gIGNvbnN0IHNjYW5uZWQgPSByb3cuc2Nhbm5lZEF0ICE9PSBudWxsICYmIHJvdy5zY2FubmVkQXQgIT09IHVuZGVmaW5lZDtcbiAgY29uc3QgYXR0cmlidXRlczogUGx1Z2luQ29tcGxpYW5jZUF0dHJpYnV0ZXMgPSB7XG4gICAgdGFncyxcbiAgICBzaWduZWQ6IHR5cGVvZiByb3cuaW1hZ2VEaWdlc3QgPT09ICdzdHJpbmcnICYmIFNJR05FRF9ESUdFU1RfUkUudGVzdChyb3cuaW1hZ2VEaWdlc3QpLFxuICAgIHNjYW5uZWQsXG4gIH07XG4gIGlmIChzY2FubmVkKSB7XG4gICAgYXR0cmlidXRlcy52dWxuQ3JpdGljYWwgPSBmaW5pdGVDb3VudChyb3cudnVsbkNyaXRpY2FsKTtcbiAgICBhdHRyaWJ1dGVzLnZ1bG5IaWdoID0gZmluaXRlQ291bnQocm93LnZ1bG5IaWdoKTtcbiAgICBhdHRyaWJ1dGVzLnZ1bG5NZWRpdW0gPSBmaW5pdGVDb3VudChyb3cudnVsbk1lZGl1bSk7XG4gICAgYXR0cmlidXRlcy52dWxuTG93ID0gZmluaXRlQ291bnQocm93LnZ1bG5Mb3cpO1xuICAgIGF0dHJpYnV0ZXMudnVsbkNyaXRpY2FsRml4YWJsZSA9IGZpbml0ZUNvdW50KHJvdy52dWxuQ3JpdGljYWxGaXhhYmxlKTtcbiAgICBhdHRyaWJ1dGVzLnZ1bG5IaWdoRml4YWJsZSA9IGZpbml0ZUNvdW50KHJvdy52dWxuSGlnaEZpeGFibGUpO1xuICB9XG4gIGlmICh0eXBlb2Ygcm93LnJ1bkFzUm9vdCA9PT0gJ2Jvb2xlYW4nKSBhdHRyaWJ1dGVzLnJ1bkFzUm9vdCA9IHJvdy5ydW5Bc1Jvb3Q7XG4gIGlmIChBcnJheS5pc0FycmF5KHBhY2thZ2VzKSkgYXR0cmlidXRlcy5wYWNrYWdlcyA9IHBhY2thZ2VzO1xuICBmb3IgKGNvbnN0IGsgb2YgT2JqZWN0LmtleXMoYXR0cmlidXRlcykpIGlmIChhdHRyaWJ1dGVzW2tdID09PSB1bmRlZmluZWQpIGRlbGV0ZSBhdHRyaWJ1dGVzW2tdO1xuICByZXR1cm4geyBhdHRyaWJ1dGVzLCBkZWZlcnJlZEZpZWxkczogcGFja2FnZXMgPT09IHVuZGVmaW5lZCA/IFsncGFja2FnZXMnXSA6IFtdIH07XG59XG4iXX0=
@@ -49,7 +49,7 @@ export declare const IconKeySchema: z.ZodString;
49
49
  export declare const PluginIconSchema: z.ZodPreprocess<z.ZodObject<{
50
50
  key: z.ZodString;
51
51
  badge: z.ZodOptional<z.ZodString>;
52
- }, z.core.$strict>>;
52
+ }, z.core.$strict>, unknown>;
53
53
  /**
54
54
  * Per-field validators for every DESCRIPTIVE field. A detected value
55
55
  * and a user-typed value both go through these.
@@ -78,7 +78,7 @@ export declare const PLUGIN_CATALOG_FIELD_SCHEMAS: {
78
78
  readonly icon: z.ZodPreprocess<z.ZodObject<{
79
79
  key: z.ZodString;
80
80
  badge: z.ZodOptional<z.ZodString>;
81
- }, z.core.$strict>>;
81
+ }, z.core.$strict>, unknown>;
82
82
  readonly changelog: z.ZodString;
83
83
  readonly readme: z.ZodString;
84
84
  };
@@ -108,7 +108,7 @@ export declare const PluginCatalogEditsSchema: z.ZodObject<{
108
108
  icon: z.ZodOptional<z.ZodNullable<z.ZodPreprocess<z.ZodObject<{
109
109
  key: z.ZodString;
110
110
  badge: z.ZodOptional<z.ZodString>;
111
- }, z.core.$strict>>>>;
111
+ }, z.core.$strict>, unknown>>>;
112
112
  keywords: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
113
113
  license: z.ZodOptional<z.ZodNullable<z.ZodString>>;
114
114
  readme: z.ZodOptional<z.ZodNullable<z.ZodString>>;
@@ -161,7 +161,7 @@ export declare const PluginUpdateSchema: z.ZodObject<{
161
161
  icon: z.ZodOptional<z.ZodNullable<z.ZodPreprocess<z.ZodObject<{
162
162
  key: z.ZodString;
163
163
  badge: z.ZodOptional<z.ZodString>;
164
- }, z.core.$strict>>>>;
164
+ }, z.core.$strict>, unknown>>>;
165
165
  keywords: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
166
166
  license: z.ZodOptional<z.ZodNullable<z.ZodString>>;
167
167
  readme: z.ZodOptional<z.ZodNullable<z.ZodString>>;
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "url": "git+https://github.com/mwashburn160/pipeline-builder.git"
7
7
  },
8
8
  "devDependencies": {
9
- "@jest/globals": "30.4.1",
9
+ "@jest/globals": "30.5.2",
10
10
  "@stylistic/eslint-plugin": "^2",
11
11
  "@types/express": "5.0.6",
12
12
  "@types/jsonwebtoken": "9.0.10",
@@ -15,23 +15,23 @@
15
15
  "@typescript-eslint/parser": "^8",
16
16
  "@typescript/native": "npm:typescript@^7.0.2",
17
17
  "eslint": "^9",
18
- "eslint-import-resolver-typescript": "^4.4.4",
18
+ "eslint-import-resolver-typescript": "^4.4.5",
19
19
  "eslint-plugin-import": "^2.32.0",
20
- "jest": "30.4.2",
20
+ "jest": "30.5.2",
21
21
  "jest-junit": "^17",
22
22
  "ts-jest": "29.4.12",
23
23
  "typescript": "npm:@typescript/typescript6@^6.0.2"
24
24
  },
25
25
  "dependencies": {
26
26
  "@asteasolutions/zod-to-openapi": "9.1.0",
27
- "@aws-sdk/client-kms": "3.1101.0",
28
- "@aws-sdk/client-sts": "3.1101.0",
29
- "@aws-sdk/credential-providers": "3.1101.0",
27
+ "@aws-sdk/client-kms": "3.1136.0",
28
+ "@aws-sdk/client-sts": "3.1136.0",
29
+ "@aws-sdk/credential-providers": "3.1136.0",
30
30
  "express": "5.2.1",
31
31
  "ioredis": "6.0.0",
32
32
  "jsonwebtoken": "9.0.3",
33
33
  "winston": "3.19.0",
34
- "zod": "4.4.3"
34
+ "zod": "4.6.5"
35
35
  },
36
36
  "keywords": [
37
37
  "ci-cd",
@@ -103,7 +103,7 @@
103
103
  ]
104
104
  }
105
105
  },
106
- "version": "4.1.16",
106
+ "version": "4.1.18",
107
107
  "bugs": {
108
108
  "url": "https://github.com/mwashburn160/pipeline-builder/issues"
109
109
  },