@pipeline-builder/api-core 5.2.11 → 5.2.12

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.
Files changed (41) hide show
  1. package/lib/helpers/org-hierarchy-http.d.ts +3 -2
  2. package/lib/helpers/org-hierarchy-http.js +11 -5
  3. package/lib/middleware/index.d.ts +1 -1
  4. package/lib/middleware/index.js +2 -2
  5. package/lib/middleware/step-up.d.ts +4 -3
  6. package/lib/middleware/step-up.js +1 -1
  7. package/lib/services/index.d.ts +2 -2
  8. package/lib/services/index.js +2 -2
  9. package/lib/services/quota.d.ts +1 -2
  10. package/lib/services/quota.js +1 -1
  11. package/lib/services/version-vuln-policy.d.ts +1 -3
  12. package/lib/services/version-vuln-policy.js +2 -3
  13. package/lib/types/common.d.ts +13 -22
  14. package/lib/types/common.js +44 -5
  15. package/lib/types/ecosystem-notifications.d.ts +215 -24
  16. package/lib/types/ecosystem-notifications.js +18 -9
  17. package/lib/types/ecosystem.d.ts +1 -0
  18. package/lib/types/ecosystem.js +33 -23
  19. package/lib/types/feature-flags.d.ts +11 -4
  20. package/lib/types/feature-flags.js +51 -11
  21. package/lib/types/index.d.ts +1 -1
  22. package/lib/types/index.js +2 -2
  23. package/lib/types/permissions.d.ts +353 -22
  24. package/lib/types/permissions.js +257 -128
  25. package/lib/types/plugin-catalog.d.ts +25 -1
  26. package/lib/types/plugin-catalog.js +21 -2
  27. package/lib/types/quota-tiers.d.ts +6 -24
  28. package/lib/types/quota-tiers.js +6 -28
  29. package/lib/types/remote-audit-actions.d.ts +1 -1
  30. package/lib/types/remote-audit-actions.js +10 -1
  31. package/lib/types/tier-limits.d.ts +19 -0
  32. package/lib/types/tier-limits.js +27 -1
  33. package/lib/types/usage-projection.d.ts +0 -16
  34. package/lib/types/usage-projection.js +1 -20
  35. package/lib/types/wire-vocabulary.d.ts +81 -2
  36. package/lib/types/wire-vocabulary.js +89 -3
  37. package/lib/validation/index.d.ts +1 -1
  38. package/lib/validation/index.js +2 -2
  39. package/lib/validation/plugin-spec-schema.d.ts +0 -9
  40. package/lib/validation/plugin-spec-schema.js +2 -11
  41. package/package.json +8 -1
@@ -3,8 +3,10 @@
3
3
  * browser. Each is an `as const` array (the runtime list a Zod enum, a Mongoose
4
4
  * enum or a drizzle `$type` builds from) plus the union type derived from it.
5
5
  *
6
- * Dependency-free on purpose: the frontend imports these types, so a value added
7
- * here reaches the UI's exhaustive label maps as a compile error instead of a
6
+ * Dependency-free on purpose (no imports at all): the browser imports it
7
+ * directly through the `@pipeline-builder/api-core/wire-vocabulary` subpath, so
8
+ * a frontend catalog derives its order and list from these tuples and a value
9
+ * added here reaches every exhaustive label map as a compile error instead of a
8
10
  * silently unhandled string. The Postgres CHECK constraints in each deploy
9
11
  * target's `postgres-init.sql` mirror the ones stored in SQL.
10
12
  */
@@ -125,3 +127,80 @@ export type PluginSecurityRecipientMode = (typeof PLUGIN_SECURITY_RECIPIENT_MODE
125
127
  /** How rescan findings (N31) are batched; blocked builds (N30) are always immediate. */
126
128
  export declare const PLUGIN_SECURITY_DIGEST_MODES: readonly ['immediate', 'daily', 'weekly'];
127
129
  export type PluginSecurityDigestMode = (typeof PLUGIN_SECURITY_DIGEST_MODES)[number];
130
+ /**
131
+ * The coarse per-org membership label (`UserOrganization.role`,
132
+ * `Invitation.role`, the access token's `role`), highest authority first:
133
+ * `owner` created the org or received an ownership transfer, `admin` manages
134
+ * members and settings, `member` has standard access. DERIVED from the Roles a
135
+ * user is assigned (the highest `grantsRole` among them; `owner` only by
136
+ * transfer) — a display/authority label driving `isAdmin`, ownership and seat
137
+ * accounting, NOT a permission source (see `resolveUserPermissions`).
138
+ */
139
+ export declare const ORG_ROLES: readonly ['owner', 'admin', 'member'];
140
+ export type OrgRole = (typeof ORG_ROLES)[number];
141
+ /**
142
+ * The membership roles that ADMINISTER an org: the token's `isAdmin`, the
143
+ * "notify this org's admins" lookups and the invite/approval authority checks
144
+ * all read this one list.
145
+ */
146
+ export declare const ADMIN_ORG_ROLES: readonly ["owner", "admin"];
147
+ export type AdminOrgRole = (typeof ADMIN_ORG_ROLES)[number];
148
+ /** Whether `value` is a membership role, narrowing it. */
149
+ export declare function isOrgRole(value: unknown): value is OrgRole;
150
+ /** Whether `role` administers its org (`owner` or `admin`). */
151
+ export declare function isAdminOrgRole(role: unknown): role is AdminOrgRole;
152
+ /** Where an org's alert destination delivers (`alert_destinations.channel`). */
153
+ export declare const ALERT_CHANNELS: readonly ['slack', 'webhook', 'in-app', 'email'];
154
+ export type AlertChannel = (typeof ALERT_CHANNELS)[number];
155
+ /**
156
+ * The severity ladder an org sets on its alert rules and uses as a
157
+ * destination's `minSeverity` floor, least severe first (`warning` =
158
+ * warning+critical, `critical` = critical only). Mirrors Alertmanager severity
159
+ * ordering. An inbound alert may also carry `info`, which no rule can emit and
160
+ * no destination can subscribe to.
161
+ */
162
+ export declare const ALERT_RULE_SEVERITIES: readonly ['warning', 'critical'];
163
+ export type AlertRuleSeverity = (typeof ALERT_RULE_SEVERITIES)[number];
164
+ /** A support case's lifecycle state (`support_cases.status`). */
165
+ export declare const SUPPORT_CASE_STATUSES: readonly ['open', 'awaiting_support', 'awaiting_customer', 'resolved', 'closed'];
166
+ export type SupportCaseStatus = (typeof SUPPORT_CASE_STATUSES)[number];
167
+ /**
168
+ * The statuses a TENANT may set on its own case. `awaiting_support` and
169
+ * `resolved` are the support desk's to set; `closed` is the tenant's way out
170
+ * (and, once there, a tenant cannot move the case back).
171
+ */
172
+ export declare const TENANT_SUPPORT_CASE_STATUSES: readonly ["open", "awaiting_customer", "closed"];
173
+ export type TenantSupportCaseStatus = (typeof TENANT_SUPPORT_CASE_STATUSES)[number];
174
+ /** Statuses a tenant cannot move OUT of. */
175
+ export declare const TENANT_TERMINAL_SUPPORT_CASE_STATUSES: readonly ["closed"];
176
+ /** Statuses a case is still LIVE in (not resolved or closed). */
177
+ export declare const LIVE_SUPPORT_CASE_STATUSES: readonly ["open", "awaiting_support", "awaiting_customer"];
178
+ /** What a compliance scan (or a scan schedule) covers: one rule target, or every one. */
179
+ export declare const COMPLIANCE_SCAN_TARGETS: readonly ["plugin", "pipeline", "all"];
180
+ export type ComplianceScanTarget = (typeof COMPLIANCE_SCAN_TARGETS)[number];
181
+ export declare const COMPLIANCE_SCAN_STATUSES: readonly ['pending', 'running', 'completed', 'failed', 'cancelled'];
182
+ export type ComplianceScanStatus = (typeof COMPLIANCE_SCAN_STATUSES)[number];
183
+ /** Why a scan row exists. `rule-dry-run` scans evaluate without writing the check log or notifying. */
184
+ export declare const COMPLIANCE_SCAN_TRIGGERS: readonly ['manual', 'scheduled', 'rule-change', 'rule-dry-run'];
185
+ export type ComplianceScanTrigger = (typeof COMPLIANCE_SCAN_TRIGGERS)[number];
186
+ export declare const COMPLIANCE_EXEMPTION_STATUSES: readonly ['pending', 'approved', 'rejected', 'expired'];
187
+ export type ComplianceExemptionStatus = (typeof COMPLIANCE_EXEMPTION_STATUSES)[number];
188
+ /** The two decisions a reviewer can make on a pending exemption. */
189
+ export declare const COMPLIANCE_EXEMPTION_DECISIONS: readonly ["approved", "rejected"];
190
+ export type ComplianceExemptionDecision = (typeof COMPLIANCE_EXEMPTION_DECISIONS)[number];
191
+ /** A compliance check-log row's verdict (`compliance_check_log.result`). */
192
+ export declare const COMPLIANCE_CHECK_RESULTS: readonly ['pass', 'warn', 'block'];
193
+ export type ComplianceCheckVerdict = (typeof COMPLIANCE_CHECK_RESULTS)[number];
194
+ /** Whose key serves an AI call: the caller's own (`request`, BYOK), the org's, or the platform's. Only `platform` spends `aiCalls`. */
195
+ export declare const AI_KEY_SOURCES: readonly ['platform', 'org', 'request'];
196
+ export type AiKeySource = (typeof AI_KEY_SOURCES)[number];
197
+ /**
198
+ * How an AI call's `aiCalls` quota slot settled: `kept` (the call reached a
199
+ * provider), `refunded` (it never did), or `waived` (no unit was reserved — a
200
+ * BYOK key, an impersonated call or a weight-0 model).
201
+ */
202
+ export declare const AI_QUOTA_SETTLEMENTS: readonly ['kept', 'refunded', 'waived'];
203
+ export type AiQuotaSettlement = (typeof AI_QUOTA_SETTLEMENTS)[number];
204
+ /** How loud a plugin-version vulnerability warning is, quietest first (see `services/version-vuln-policy.ts`). */
205
+ export declare const VULN_SEVERITIES: readonly ['info', 'warning', 'error', 'critical'];
206
+ export type VulnSeverity = (typeof VULN_SEVERITIES)[number];
@@ -5,8 +5,10 @@
5
5
  * browser. Each is an `as const` array (the runtime list a Zod enum, a Mongoose
6
6
  * enum or a drizzle `$type` builds from) plus the union type derived from it.
7
7
  *
8
- * Dependency-free on purpose: the frontend imports these types, so a value added
9
- * here reaches the UI's exhaustive label maps as a compile error instead of a
8
+ * Dependency-free on purpose (no imports at all): the browser imports it
9
+ * directly through the `@pipeline-builder/api-core/wire-vocabulary` subpath, so
10
+ * a frontend catalog derives its order and list from these tuples and a value
11
+ * added here reaches every exhaustive label map as a compile error instead of a
10
12
  * silently unhandled string. The Postgres CHECK constraints in each deploy
11
13
  * target's `postgres-init.sql` mirror the ones stored in SQL.
12
14
  */
@@ -122,4 +124,88 @@ export const PLUGIN_SECURITY_DIGEST_MODES = ['immediate', 'daily', 'weekly'];
122
124
  // the labels were in a frontend mirror of both. One keyed catalog is importable
123
125
  // by the browser, so the mirror and the test that parsed this package's source
124
126
  // to detect drift are both gone.
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lyZS12b2NhYnVsYXJ5LmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvd2lyZS12b2NhYnVsYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7OztHQVNHO0FBRUgsZ0ZBQWdGO0FBQ2hGLG1CQUFtQjtBQUNuQixnRkFBZ0Y7QUFFaEYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQVUsQ0FBQztBQUd6RSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFVLENBQUM7QUFHNUQsdUZBQXVGO0FBQ3ZGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUM1QixJQUFJLEVBQUUsS0FBSztJQUNYLFVBQVUsRUFBRSxhQUFhO0lBQ3pCLE9BQU87SUFDUCxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLO0lBQ3hCLElBQUksRUFBRSxPQUFPO0lBQ2IsUUFBUSxFQUFFLFdBQVcsRUFBRSxVQUFVO0lBQ2pDLFNBQVMsRUFBRSxTQUFTO0lBQ3BCLFVBQVUsRUFBRSxVQUFVO0NBQ2QsQ0FBQztBQUdYLHNFQUFzRTtBQUN0RSxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUE0QyxDQUFDO0FBRXZILDBEQUEwRDtBQUMxRCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQVUsQ0FBQztBQUc1RCw0RUFBNEU7QUFDNUUsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBVSxDQUFDO0FBR3pELGdGQUFnRjtBQUNoRixXQUFXO0FBQ1gsZ0ZBQWdGO0FBRWhGLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLGNBQWMsRUFBRSxjQUFjLENBQVUsQ0FBQztB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cGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIENsb3NlZCBzdHJpbmcgdm9jYWJ1bGFyaWVzIHRoYXQgY3Jvc3MgdGhlIHdpcmUgYmV0d2VlbiB0aGUgc2VydmljZXMgYW5kIHRoZVxuICogYnJvd3Nlci4gRWFjaCBpcyBhbiBgYXMgY29uc3RgIGFycmF5ICh0aGUgcnVudGltZSBsaXN0IGEgWm9kIGVudW0sIGEgTW9uZ29vc2VcbiAqIGVudW0gb3IgYSBkcml6emxlIGAkdHlwZWAgYnVpbGRzIGZyb20pIHBsdXMgdGhlIHVuaW9uIHR5cGUgZGVyaXZlZCBmcm9tIGl0LlxuICpcbiAqIERlcGVuZGVuY3ktZnJlZSBvbiBwdXJwb3NlOiB0aGUgZnJvbnRlbmQgaW1wb3J0cyB0aGVzZSB0eXBlcywgc28gYSB2YWx1ZSBhZGRlZFxuICogaGVyZSByZWFjaGVzIHRoZSBVSSdzIGV4aGF1c3RpdmUgbGFiZWwgbWFwcyBhcyBhIGNvbXBpbGUgZXJyb3IgaW5zdGVhZCBvZiBhXG4gKiBzaWxlbnRseSB1bmhhbmRsZWQgc3RyaW5nLiBUaGUgUG9zdGdyZXMgQ0hFQ0sgY29uc3RyYWludHMgaW4gZWFjaCBkZXBsb3lcbiAqIHRhcmdldCdzIGBwb3N0Z3Jlcy1pbml0LnNxbGAgbWlycm9yIHRoZSBvbmVzIHN0b3JlZCBpbiBTUUwuXG4gKi9cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENvbXBsaWFuY2UgcnVsZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBjb25zdCBSVUxFX1NFVkVSSVRJRVMgPSBbJ3dhcm5pbmcnLCAnZXJyb3InLCAnY3JpdGljYWwnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFJ1bGVTZXZlcml0eSA9ICh0eXBlb2YgUlVMRV9TRVZFUklUSUVTKVtudW1iZXJdO1xuXG5leHBvcnQgY29uc3QgUlVMRV9UQVJHRVRTID0gWydwbHVnaW4nLCAncGlwZWxpbmUnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFJ1bGVUYXJnZXQgPSAodHlwZW9mIFJVTEVfVEFSR0VUUylbbnVtYmVyXTtcblxuLyoqIEZpZWxkLWV2YWx1YXRpb24gb3BlcmF0b3JzOyB0aGUgZW5naW5lJ3MgaW1wbGVtZW50YXRpb25zIGxpdmUgaW4gYXBpL2NvbXBsaWFuY2UuICovXG5leHBvcnQgY29uc3QgUlVMRV9PUEVSQVRPUlMgPSBbXG4gICdlcScsICduZXEnLFxuICAnY29udGFpbnMnLCAnbm90Q29udGFpbnMnLFxuICAncmVnZXgnLFxuICAnZ3QnLCAnZ3RlJywgJ2x0JywgJ2x0ZScsXG4gICdpbicsICdub3RJbicsXG4gICdleGlzdHMnLCAnbm90RXhpc3RzJywgJ25vdEVtcHR5JyxcbiAgJ2NvdW50R3QnLCAnY291bnRMdCcsXG4gICdsZW5ndGhHdCcsICdsZW5ndGhMdCcsXG5dIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUnVsZU9wZXJhdG9yID0gKHR5cGVvZiBSVUxFX09QRVJBVE9SUylbbnVtYmVyXTtcblxuLyoqIE9wZXJhdG9ycyB0aGF0IHRlc3QgcHJlc2VuY2Ugb25seSBhbmQgdGFrZSBubyBjb21wYXJpc29uIHZhbHVlLiAqL1xuZXhwb3J0IGNvbnN0IFZBTFVFTEVTU19SVUxFX09QRVJBVE9SUyA9IFsnZXhpc3RzJywgJ25vdEV4aXN0cycsICdub3RFbXB0eSddIGFzIGNvbnN0IHNhdGlzZmllcyByZWFkb25seSBSdWxlT3BlcmF0b3JbXTtcblxuLyoqIEhvdyBhIG11bHRpLWNvbmRpdGlvbiBydWxlIGNvbWJpbmVzIGl0cyBjb25kaXRpb25zLiAqL1xuZXhwb3J0IGNvbnN0IFJVTEVfQ09ORElUSU9OX01PREVTID0gWydhbGwnLCAnYW55J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBSdWxlQ29uZGl0aW9uTW9kZSA9ICh0eXBlb2YgUlVMRV9DT05ESVRJT05fTU9ERVMpW251bWJlcl07XG5cbi8qKiBgcHVibGlzaGVkYCBydWxlcyBiZWxvbmcgdG8gdGhlIHN5c3RlbSBvcmcgYW5kIGFwcGx5IGJ5IHN1YnNjcmlwdGlvbi4gKi9cbmV4cG9ydCBjb25zdCBSVUxFX1NDT1BFUyA9IFsnb3JnJywgJ3B1Ymxpc2hlZCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUnVsZVNjb3BlID0gKHR5cGVvZiBSVUxFX1NDT1BFUylbbnVtYmVyXTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIE1lc3NhZ2VzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgY29uc3QgTUVTU0FHRV9UWVBFUyA9IFsnYW5ub3VuY2VtZW50JywgJ2NvbnZlcnNhdGlvbiddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgTWVzc2FnZVR5cGUgPSAodHlwZW9mIE1FU1NBR0VfVFlQRVMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBNRVNTQUdFX1BSSU9SSVRJRVMgPSBbJ25vcm1hbCcsICdoaWdoJywgJ3VyZ2VudCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgTWVzc2FnZVByaW9yaXR5ID0gKHR5cGVvZiBNRVNTQUdFX1BSSU9SSVRJRVMpW251bWJlcl07XG5cbi8qKlxuICogV2hvIFNFTlQgYSByb290IG1lc3NhZ2UsIHJlbGF0aXZlIHRvIHRoZSB2aWV3ZXI6IGBtZWAgKHRoZSB2aWV3aW5nIHVzZXJcbiAqIGF1dGhvcmVkIGl0KSwgYG9yZ2AgKHRoZSB2aWV3aW5nIG9yZyBzZW50IGl0IOKAlCBhbnkgbWVtYmVyKSwgYG90aGVyc2AgKGl0XG4gKiBhcnJpdmVkIGZyb20gYW5vdGhlciBvcmcsIGFubm91bmNlbWVudHMgaW5jbHVkZWQpLlxuICovXG5leHBvcnQgY29uc3QgTUVTU0FHRV9TRU5UX0JZID0gWydtZScsICdvcmcnLCAnb3RoZXJzJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBNZXNzYWdlU2VudEJ5ID0gKHR5cGVvZiBNRVNTQUdFX1NFTlRfQlkpW251bWJlcl07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBCaWxsaW5nXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgY29uc3QgU1VCU0NSSVBUSU9OX1NUQVRVU0VTID0gWydhY3RpdmUnLCAnY2FuY2VsZWQnLCAncGFzdF9kdWUnLCAndHJpYWxpbmcnLCAnaW5jb21wbGV0ZSddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgU3Vic2NyaXB0aW9uU3RhdHVzID0gKHR5cGVvZiBTVUJTQ1JJUFRJT05fU1RBVFVTRVMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBCSUxMSU5HX0lOVEVSVkFMUyA9IFsnbW9udGhseScsICdhbm51YWwnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEJpbGxpbmdJbnRlcnZhbCA9ICh0eXBlb2YgQklMTElOR19JTlRFUlZBTFMpW251bWJlcl07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBJZGVudGl0eVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIE9JREMgcHJvdmlkZXJzIGFuIG9yZyBJZFAgY29uZmlnIGNhbiBuYW1lIChHaXRIdWIgaXMgT0F1dGgtb25seSBhbmQgcmVmdXNlZCBieSB0aGUgT0lEQyBlbmdpbmUpLiAqL1xuZXhwb3J0IGNvbnN0IElEUF9QUk9WSURFUlMgPSBbJ2dlbmVyaWMtb2lkYycsICdjb2duaXRvJywgJ2dvb2dsZScsICdnaXRodWInXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIElkcFByb3ZpZGVyID0gKHR5cGVvZiBJRFBfUFJPVklERVJTKVtudW1iZXJdO1xuXG4vKiogVGhlIGZlZGVyYXRpb24gcHJvdG9jb2wgYW4gb3JnIHNpZ25zIGluIG92ZXIg4oCUIG9uZSBwZXIgb3JnLiAqL1xuZXhwb3J0IGNvbnN0IElEUF9QUk9UT0NPTFMgPSBbJ29pZGMnLCAnc2FtbCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgSWRwUHJvdG9jb2wgPSAodHlwZW9mIElEUF9QUk9UT0NPTFMpW251bWJlcl07XG5cbi8qKlxuICogV2hpY2ggU0FNTCBhc3NlcnRpb24gYXR0cmlidXRlIGNhcnJpZXMgd2hpY2ggaWRlbnRpdHkgZmllbGQuIEFuIGVtcHR5IG5hbWVcbiAqIG1lYW5zIFwidXNlIHRoZSBjb21tb24gc3BlbGxpbmdzXCIgKHNob3J0IG5hbWVzIHBsdXMgdGhlIEVudHJhL1NoaWJib2xldGggVVJJcykuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2FtbEF0dHJpYnV0ZU1hcHBpbmcge1xuICAvKiogQXR0cmlidXRlIGhvbGRpbmcgdGhlIHVzZXIncyBlbWFpbCBhZGRyZXNzLiAqL1xuICBlbWFpbD86IHN0cmluZztcbiAgLyoqIEF0dHJpYnV0ZSBob2xkaW5nIHRoZSBkaXNwbGF5IG5hbWUuICovXG4gIG5hbWU/OiBzdHJpbmc7XG4gIC8qKiBBdHRyaWJ1dGUgaG9sZGluZyBncm91cCBtZW1iZXJzaGlwcyAoZHJpdmVzIEpJVCByb2xlIG1hcHBpbmcpLiAqL1xuICBncm91cHM/OiBzdHJpbmc7XG59XG5cbi8qKiBUaGUgY29hcnNlIGdyYW50IGEgcGVybWlzc2lvbiByb2xlIGdpdmVzIGl0cyBtZW1iZXJzLiAqL1xuZXhwb3J0IGNvbnN0IFJPTEVfR1JBTlRTID0gWydzdXBlcmFkbWluJywgJ2FkbWluJywgJ21lbWJlciddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUm9sZUdyYW50ID0gKHR5cGVvZiBST0xFX0dSQU5UUylbbnVtYmVyXTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBsdWdpbiBlY29zeXN0ZW0gKGVhY2ggbWlycm9yZWQgYnkgYSBDSEVDSyBpbiBwb3N0Z3Jlcy1pbml0LnNxbClcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBQdWJsaXNoZXIgdHJ1c3QgdGllci4gKi9cbmV4cG9ydCBjb25zdCBQVUJMSVNIRVJfVElFUlMgPSBbJ29mZmljaWFsJywgJ3ZlcmlmaWVkJywgJ2NvbW11bml0eScsICd1bnZlcmlmaWVkJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBQdWJsaXNoZXJUaWVyID0gKHR5cGVvZiBQVUJMSVNIRVJfVElFUlMpW251bWJlcl07XG5cbi8qKiBBIGRpcmVjdG9yeSBsaXN0aW5nJ3MgbGlmZWN5Y2xlIHN0YXRlLiAqL1xuZXhwb3J0IGNvbnN0IExJU1RJTkdfU1RBVEVTID0gWydsaXN0ZWQnLCAndW5tYWludGFpbmVkJywgJ3N1c3BlbmRlZCcsICd0cmFuc2ZlcnJlZCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgTGlzdGluZ1N0YXRlID0gKHR5cGVvZiBMSVNUSU5HX1NUQVRFUylbbnVtYmVyXTtcblxuLyoqIFdoYXQgYSBwdWJsaXNoIHJlcXVlc3QgYXNrcyB0aGUgc3lzdGVtIG9yZyB0byBkby4gKi9cbmV4cG9ydCBjb25zdCBQVUJMSVNIX1JFUVVFU1RfS0lORFMgPSBbXG4gICduZXdfbGlzdGluZycsICduZXdfdmVyc2lvbicsICdsaXN0aW5nX3VwZGF0ZScsICd5YW5rJywgJ3VucGF1c2UnLFxuICAndHJhbnNmZXInLCAnY2xhaW0nLCAncHJvZmlsZV9jaGFuZ2UnLCAnYWR2aXNvcnknLCAndmVyaWZ5JywgJ21vZGVyYXRpb24nLCAnc3VibWlzc2lvbicsXG5dIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUHVibGlzaFJlcXVlc3RLaW5kID0gKHR5cGVvZiBQVUJMSVNIX1JFUVVFU1RfS0lORFMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBQVUJMSVNIX1JFUVVFU1RfU1RBVFVTRVMgPSBbJ3BlbmRpbmcnLCAncGVuZGluZ19zZWNvbmRfYXBwcm92YWwnLCAnYXBwcm92ZWQnLCAncmVqZWN0ZWQnLCAnd2l0aGRyYXduJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBQdWJsaXNoUmVxdWVzdFN0YXR1cyA9ICh0eXBlb2YgUFVCTElTSF9SRVFVRVNUX1NUQVRVU0VTKVtudW1iZXJdO1xuXG4vKiogVGhlIHN0YXR1c2VzIGEgcmVxdWVzdCBpcyBzdGlsbCBcIm9wZW5cIiBpbiAoZHJpdmVzIHRoZSBvbmUtb3Blbi1yZXF1ZXN0IGluZGV4KS4gKi9cbmV4cG9ydCBjb25zdCBPUEVOX1BVQkxJU0hfUkVRVUVTVF9TVEFUVVNFUyA9IFsncGVuZGluZycsICdwZW5kaW5nX3NlY29uZF9hcHByb3ZhbCddIGFzIGNvbnN0IHNhdGlzZmllcyByZWFkb25seSBQdWJsaXNoUmVxdWVzdFN0YXR1c1tdO1xuXG4vKiogYHNlY3VyaXR5YCByZXF1ZXN0cyBqdW1wIHRoZSBtb2RlcmF0aW9uIHF1ZXVlLiAqL1xuZXhwb3J0IGNvbnN0IFBVQkxJU0hfUkVRVUVTVF9MQU5FUyA9IFsnc3RhbmRhcmQnLCAnc2VjdXJpdHknXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFB1Ymxpc2hSZXF1ZXN0TGFuZSA9ICh0eXBlb2YgUFVCTElTSF9SRVFVRVNUX0xBTkVTKVtudW1iZXJdO1xuXG4vKiogSW5zdGFsbCB2ZXJzaW9uIHBvbGljeTogZXhhY3QsIGB+YCwgYF5gLCBvciBhbnl0aGluZyBub24tYnJlYWtpbmcuICovXG5leHBvcnQgY29uc3QgSU5TVEFMTF9WRVJTSU9OX1BPTElDSUVTID0gWydwaW5uZWQnLCAncGF0Y2gnLCAnbWlub3InLCAnbGF0ZXN0J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBJbnN0YWxsVmVyc2lvblBvbGljeSA9ICh0eXBlb2YgSU5TVEFMTF9WRVJTSU9OX1BPTElDSUVTKVtudW1iZXJdO1xuXG5leHBvcnQgY29uc3QgSU5TVEFMTF9TVEFUVVNFUyA9IFsnYWN0aXZlJywgJ3BlbmRpbmdfYXBwcm92YWwnLCAnZGVuaWVkJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBJbnN0YWxsU3RhdHVzID0gKHR5cGVvZiBJTlNUQUxMX1NUQVRVU0VTKVtudW1iZXJdO1xuXG4vKiogVGhlIGFkdmlzb3J5IHNldmVyaXR5IGF0IHdoaWNoIGEgY29uc3VtcHRpb24gcG9saWN5IGJsb2NrcyBpbnN0YWxscy4gKi9cbmV4cG9ydCBjb25zdCBCTE9DS19PTl9BRFZJU09SWV9MRVZFTFMgPSBbJ2NyaXRpY2FsJywgJ2hpZ2gnLCAnbmV2ZXInXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEJsb2NrT25BZHZpc29yeSA9ICh0eXBlb2YgQkxPQ0tfT05fQURWSVNPUllfTEVWRUxTKVtudW1iZXJdO1xuXG4vKiogV2hldGhlciBvZmZpY2lhbCBwbHVnaW5zIG5lZWQgYW4gZXhwbGljaXQgaW5zdGFsbCBiZWZvcmUgYSBwaXBlbGluZSBjYW4gdXNlIHRoZW0uICovXG5leHBvcnQgY29uc3QgT0ZGSUNJQUxfSU5TVEFMTFNfTU9ERVMgPSBbJ2ltcGxpY2l0JywgJ2V4cGxpY2l0J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBPZmZpY2lhbEluc3RhbGxzID0gKHR5cGVvZiBPRkZJQ0lBTF9JTlNUQUxMU19NT0RFUylbbnVtYmVyXTtcblxuLyoqXG4gKiBXaGF0IGhhcHBlbnMgd2hlbiBhbiBvcmcgZGVmaW5lcyBhIHBsdWdpbiBOQU1FIHRoYXQgb3ZlcnJpZGVzIHNvbWV0aGluZyBpdFxuICogd291bGQgb3RoZXJ3aXNlIHJlc29sdmUg4oCUIGEgbGlzdGluZywgb3IgKGZvciBhIHRlYW0pIGl0cyBwYXJlbnQgb3JnJ3MgcGx1Z2luLlxuICpcbiAqIGBhbGxvd2Aga2VlcHMgdG9kYXkncyBiZWhhdmlvdXI6IHRoZSBvdmVycmlkZSBpcyBzaWxlbnQgYmV5b25kIHRoZSBkYXNoYm9hcmRcbiAqIGJhbm5lci4gYHdhcm5gIGlzIHRoZSBzYW1lIHJlc29sdXRpb24gd2l0aCB0aGUgZmFjdCByZWNvcmRlZCBwcm9taW5lbnRseS5cbiAqIGBkZW55YCByZWZ1c2VzIHRoZSB1cGxvYWQsIHdoaWNoIGlzIHRoZSBvbmx5IHNldHRpbmcgdGhhdCBhY3R1YWxseSBzdG9wcyBhXG4gKiB0ZWFtIHJlcGxhY2luZyB0aGUgT2ZmaWNpYWwgYHRyaXZ5YCBmb3IgZXZlcnkgcGlwZWxpbmUgdGhhdCBuYW1lcyBpdC5cbiAqL1xuZXhwb3J0IGNvbnN0IFNIQURPV0lOR19NT0RFUyA9IFsnYWxsb3cnLCAnd2FybicsICdkZW55J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBTaGFkb3dpbmdNb2RlID0gKHR5cGVvZiBTSEFET1dJTkdfTU9ERVMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBSRVZJRVdfU1RBVFVTRVMgPSBbJ3B1Ymxpc2hlZCcsICdoZWxkJywgJ3JlbW92ZWQnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFJldmlld1N0YXR1cyA9ICh0eXBlb2YgUkVWSUVXX1NUQVRVU0VTKVtudW1iZXJdO1xuXG4vKiogV2h5IGEgaGVsZCByZXZpZXcgaXMgaGVsZC4gKi9cbmV4cG9ydCBjb25zdCBSRVZJRVdfSE9MRF9SRUFTT05TID0gWydyZXBvcnRzJywgJ2J1cnN0JywgJ2ZpbHRlcicsICdzZWN1cml0eScsICdtb2RlcmF0b3InXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFJldmlld0hvbGRSZWFzb24gPSAodHlwZW9mIFJFVklFV19IT0xEX1JFQVNPTlMpW251bWJlcl07XG5cbi8qKiBBIHJldmlldyByZXBvcnQncyBjYXRlZ29yeTsgYHNlY3VyaXR5YCByb3V0ZXMgcHJpdmF0ZWx5IHRvIHRoZSBhZHZpc29yeSBwYXRoLiAqL1xuZXhwb3J0IGNvbnN0IFJFVklFV19SRVBPUlRfQ0FURUdPUklFUyA9IFsnc3BhbScsICdhYnVzZScsICdvZmZfdG9waWMnLCAnc2VjdXJpdHknXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFJldmlld1JlcG9ydENhdGVnb3J5ID0gKHR5cGVvZiBSRVZJRVdfUkVQT1JUX0NBVEVHT1JJRVMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBBRFZJU09SWV9TRVZFUklUSUVTID0gWydjcml0aWNhbCcsICdoaWdoJywgJ21lZGl1bScsICdsb3cnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEFkdmlzb3J5U2V2ZXJpdHkgPSAodHlwZW9mIEFEVklTT1JZX1NFVkVSSVRJRVMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBBRFZJU09SWV9TVEFURVMgPSBbJ2RyYWZ0JywgJ3B1Ymxpc2hlZCcsICd3aXRoZHJhd24nXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEFkdmlzb3J5U3RhdGUgPSAodHlwZW9mIEFEVklTT1JZX1NUQVRFUylbbnVtYmVyXTtcblxuZXhwb3J0IGNvbnN0IEFEVklTT1JZX1NPVVJDRVMgPSBbJ3B1Ymxpc2hlcicsICdtb2RlcmF0b3InLCAnY3ZlX3Jlc2NhbicsICdyZXZpZXcnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEFkdmlzb3J5U291cmNlID0gKHR5cGVvZiBBRFZJU09SWV9TT1VSQ0VTKVtudW1iZXJdO1xuXG4vKipcbiAqIEFuIGFub255bW91cyBzdWJtaXNzaW9uJ3MgbGlmZWN5Y2xlLiBgcHVibGlzaGluZ2AgaXMgdGhlIHNob3J0IGNsYWltIGFuXG4gKiBhcHByb3ZhbCB0YWtlcyBiZWZvcmUgaXQgY29waWVzIHRoZSBxdWFyYW50aW5lZCBpbWFnZSBvdXQsIHNvIGFuIGV4cGlyeSBjYW5cbiAqIG5ldmVyIGRlbGV0ZSB0aGUgYXJ0aWZhY3RzIG9mIGEgc3VibWlzc2lvbiB0aGF0IGlzIGJlaW5nIHB1Ymxpc2hlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IFNVQk1JU1NJT05fU1RBVFVTRVMgPSBbXG4gICdwZW5kaW5nX3ZlcmlmaWNhdGlvbicsICdwZW5kaW5nX3JldmlldycsICdwdWJsaXNoaW5nJywgJ2dhdGVfZmFpbGVkJywgJ2FwcHJvdmVkJywgJ3JlamVjdGVkJywgJ2V4cGlyZWQnLCAnY2xhaW1lZCcsXG5dIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgU3VibWlzc2lvblN0YXR1cyA9ICh0eXBlb2YgU1VCTUlTU0lPTl9TVEFUVVNFUylbbnVtYmVyXTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBsdWdpbiBzZWN1cml0eSBub3RpZmljYXRpb25zIChwZXIgb3JnKVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIFdobyByZWNlaXZlcyBhbiBvcmcncyBwbHVnaW4gc2VjdXJpdHkgbm90aWNlczogYHdyaXRlcnNgID0gdGhlIHVwbG9hZGVyIHBsdXNcbiAqICBtZW1iZXJzIGhvbGRpbmcgYHBsdWdpbnM6d3JpdGVgOyBgdXNlcnNgID0gdGhlIG9yZydzIGNob3NlbiBtZW1iZXJzLiAqL1xuZXhwb3J0IGNvbnN0IFBMVUdJTl9TRUNVUklUWV9SRUNJUElFTlRfTU9ERVMgPSBbJ3dyaXRlcnMnLCAndXNlcnMnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFBsdWdpblNlY3VyaXR5UmVjaXBpZW50TW9kZSA9ICh0eXBlb2YgUExVR0lOX1NFQ1VSSVRZX1JFQ0lQSUVOVF9NT0RFUylbbnVtYmVyXTtcblxuLyoqIEhvdyByZXNjYW4gZmluZGluZ3MgKE4zMSkgYXJlIGJhdGNoZWQ7IGJsb2NrZWQgYnVpbGRzIChOMzApIGFyZSBhbHdheXMgaW1tZWRpYXRlLiAqL1xuZXhwb3J0IGNvbnN0IFBMVUdJTl9TRUNVUklUWV9ESUdFU1RfTU9ERVMgPSBbJ2ltbWVkaWF0ZScsICdkYWlseScsICd3ZWVrbHknXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFBsdWdpblNlY3VyaXR5RGlnZXN0TW9kZSA9ICh0eXBlb2YgUExVR0lOX1NFQ1VSSVRZX0RJR0VTVF9NT0RFUylbbnVtYmVyXTtcblxuLy8gVGhlIGJ1aWxkIENMQVNTIGFuZCBTSVpFIHZvY2FidWxhcmllcyBsaXZlIGluIGBidWlsZC1jYXRhbG9nLnRzYCwgdG9nZXRoZXJcbi8vIHdpdGggdGhlaXIgbGFiZWxzLCBjcmVkaXQgbXVsdGlwbGllcnMsIHRpZXIgZmxvb3JzIGFuZCBwZXItY2xhc3Mgc2xvdFxuLy8gZGVmYXVsdHMuIFRoZXkgYXJlIG5vdCBoZXJlIGJlY2F1c2UgdGhlIGlkcyBhbG9uZSB3ZXJlIG5ldmVyIHRoZSB3aG9sZSBmYWN0OlxuLy8gdGhlIG11bHRpcGxpZXIgd2FzIGluIHRoaXMgZmlsZSwgdGhlIHRpZXIgZ2F0ZSB3YXMgaW4gYHF1b3RhLXRpZXJzLnRzYCwgYW5kXG4vLyB0aGUgbGFiZWxzIHdlcmUgaW4gYSBmcm9udGVuZCBtaXJyb3Igb2YgYm90aC4gT25lIGtleWVkIGNhdGFsb2cgaXMgaW1wb3J0YWJsZVxuLy8gYnkgdGhlIGJyb3dzZXIsIHNvIHRoZSBtaXJyb3IgYW5kIHRoZSB0ZXN0IHRoYXQgcGFyc2VkIHRoaXMgcGFja2FnZSdzIHNvdXJjZVxuLy8gdG8gZGV0ZWN0IGRyaWZ0IGFyZSBib3RoIGdvbmUuXG4iXX0=
127
+ // -----------------------------------------------------------------------------
128
+ // Org membership
129
+ // -----------------------------------------------------------------------------
130
+ /**
131
+ * The coarse per-org membership label (`UserOrganization.role`,
132
+ * `Invitation.role`, the access token's `role`), highest authority first:
133
+ * `owner` created the org or received an ownership transfer, `admin` manages
134
+ * members and settings, `member` has standard access. DERIVED from the Roles a
135
+ * user is assigned (the highest `grantsRole` among them; `owner` only by
136
+ * transfer) — a display/authority label driving `isAdmin`, ownership and seat
137
+ * accounting, NOT a permission source (see `resolveUserPermissions`).
138
+ */
139
+ export const ORG_ROLES = ['owner', 'admin', 'member'];
140
+ /**
141
+ * The membership roles that ADMINISTER an org: the token's `isAdmin`, the
142
+ * "notify this org's admins" lookups and the invite/approval authority checks
143
+ * all read this one list.
144
+ */
145
+ export const ADMIN_ORG_ROLES = ['owner', 'admin'];
146
+ /** Whether `value` is a membership role, narrowing it. */
147
+ export function isOrgRole(value) {
148
+ return ORG_ROLES.includes(value);
149
+ }
150
+ /** Whether `role` administers its org (`owner` or `admin`). */
151
+ export function isAdminOrgRole(role) {
152
+ return ADMIN_ORG_ROLES.includes(role);
153
+ }
154
+ // -----------------------------------------------------------------------------
155
+ // Alerting
156
+ // -----------------------------------------------------------------------------
157
+ /** Where an org's alert destination delivers (`alert_destinations.channel`). */
158
+ export const ALERT_CHANNELS = ['slack', 'webhook', 'in-app', 'email'];
159
+ /**
160
+ * The severity ladder an org sets on its alert rules and uses as a
161
+ * destination's `minSeverity` floor, least severe first (`warning` =
162
+ * warning+critical, `critical` = critical only). Mirrors Alertmanager severity
163
+ * ordering. An inbound alert may also carry `info`, which no rule can emit and
164
+ * no destination can subscribe to.
165
+ */
166
+ export const ALERT_RULE_SEVERITIES = ['warning', 'critical'];
167
+ // -----------------------------------------------------------------------------
168
+ // Support cases
169
+ // -----------------------------------------------------------------------------
170
+ /** A support case's lifecycle state (`support_cases.status`). */
171
+ export const SUPPORT_CASE_STATUSES = ['open', 'awaiting_support', 'awaiting_customer', 'resolved', 'closed'];
172
+ /**
173
+ * The statuses a TENANT may set on its own case. `awaiting_support` and
174
+ * `resolved` are the support desk's to set; `closed` is the tenant's way out
175
+ * (and, once there, a tenant cannot move the case back).
176
+ */
177
+ export const TENANT_SUPPORT_CASE_STATUSES = ['open', 'awaiting_customer', 'closed'];
178
+ /** Statuses a tenant cannot move OUT of. */
179
+ export const TENANT_TERMINAL_SUPPORT_CASE_STATUSES = ['closed'];
180
+ /** Statuses a case is still LIVE in (not resolved or closed). */
181
+ export const LIVE_SUPPORT_CASE_STATUSES = ['open', 'awaiting_support', 'awaiting_customer'];
182
+ // -----------------------------------------------------------------------------
183
+ // Compliance scans, exemptions and checks
184
+ // -----------------------------------------------------------------------------
185
+ /** What a compliance scan (or a scan schedule) covers: one rule target, or every one. */
186
+ export const COMPLIANCE_SCAN_TARGETS = [...RULE_TARGETS, 'all'];
187
+ export const COMPLIANCE_SCAN_STATUSES = ['pending', 'running', 'completed', 'failed', 'cancelled'];
188
+ /** Why a scan row exists. `rule-dry-run` scans evaluate without writing the check log or notifying. */
189
+ export const COMPLIANCE_SCAN_TRIGGERS = ['manual', 'scheduled', 'rule-change', 'rule-dry-run'];
190
+ export const COMPLIANCE_EXEMPTION_STATUSES = ['pending', 'approved', 'rejected', 'expired'];
191
+ /** The two decisions a reviewer can make on a pending exemption. */
192
+ export const COMPLIANCE_EXEMPTION_DECISIONS = ['approved', 'rejected'];
193
+ /** A compliance check-log row's verdict (`compliance_check_log.result`). */
194
+ export const COMPLIANCE_CHECK_RESULTS = ['pass', 'warn', 'block'];
195
+ // -----------------------------------------------------------------------------
196
+ // AI calls
197
+ // -----------------------------------------------------------------------------
198
+ /** Whose key serves an AI call: the caller's own (`request`, BYOK), the org's, or the platform's. Only `platform` spends `aiCalls`. */
199
+ export const AI_KEY_SOURCES = ['platform', 'org', 'request'];
200
+ /**
201
+ * How an AI call's `aiCalls` quota slot settled: `kept` (the call reached a
202
+ * provider), `refunded` (it never did), or `waived` (no unit was reserved — a
203
+ * BYOK key, an impersonated call or a weight-0 model).
204
+ */
205
+ export const AI_QUOTA_SETTLEMENTS = ['kept', 'refunded', 'waived'];
206
+ // -----------------------------------------------------------------------------
207
+ // Plugin-version vulnerability grades
208
+ // -----------------------------------------------------------------------------
209
+ /** How loud a plugin-version vulnerability warning is, quietest first (see `services/version-vuln-policy.ts`). */
210
+ export const VULN_SEVERITIES = ['info', 'warning', 'error', 'critical'];
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lyZS12b2NhYnVsYXJ5LmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvd2lyZS12b2NhYnVsYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7O0dBV0c7QUFFSCxnRkFBZ0Y7QUFDaEYsbUJBQW1CO0FBQ25CLGdGQUFnRjtBQUVoRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBVSxDQUFDO0FBR3pFLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQVUsQ0FBQztBQUc1RCx1RkFBdUY7QUFDdkYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHO0lBQzVCLElBQUksRUFBRSxLQUFLO0lBQ1gsVUFBVSxFQUFFLGFBQWE7SUFDekIsT0FBTztJQUNQLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUs7SUFDeEIsSUFBSSxFQUFFLE9BQU87SUFDYixRQUFRLEVBQUUsV0FBVyxFQUFFLFVBQVU7SUFDakMsU0FBUyxFQUFFLFNBQVM7SUFDcEIsVUFBVSxFQUFFLFVBQVU7Q0FDZCxDQUFDO0FBR1gsc0VBQXNFO0FBQ3RFLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQTRDLENBQUM7QUFFdkgsMERBQTBEO0FBQzFELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBVSxDQUFDO0FBRzVELDRFQUE0RTtBQUM1RSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFVLENBQUM7QUFHekQsZ0ZBQWdGO0FBQ2hGLFdBQVc7QUFDWCxnRkFBZ0Y7QUFFaEYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBVSxDQUFD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QUFNLGVBQWUsR0FBRyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogQ2xvc2VkIHN0cmluZyB2b2NhYnVsYXJpZXMgdGhhdCBjcm9zcyB0aGUgd2lyZSBiZXR3ZWVuIHRoZSBzZXJ2aWNlcyBhbmQgdGhlXG4gKiBicm93c2VyLiBFYWNoIGlzIGFuIGBhcyBjb25zdGAgYXJyYXkgKHRoZSBydW50aW1lIGxpc3QgYSBab2QgZW51bSwgYSBNb25nb29zZVxuICogZW51bSBvciBhIGRyaXp6bGUgYCR0eXBlYCBidWlsZHMgZnJvbSkgcGx1cyB0aGUgdW5pb24gdHlwZSBkZXJpdmVkIGZyb20gaXQuXG4gKlxuICogRGVwZW5kZW5jeS1mcmVlIG9uIHB1cnBvc2UgKG5vIGltcG9ydHMgYXQgYWxsKTogdGhlIGJyb3dzZXIgaW1wb3J0cyBpdFxuICogZGlyZWN0bHkgdGhyb3VnaCB0aGUgYEBwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlL3dpcmUtdm9jYWJ1bGFyeWAgc3VicGF0aCwgc29cbiAqIGEgZnJvbnRlbmQgY2F0YWxvZyBkZXJpdmVzIGl0cyBvcmRlciBhbmQgbGlzdCBmcm9tIHRoZXNlIHR1cGxlcyBhbmQgYSB2YWx1ZVxuICogYWRkZWQgaGVyZSByZWFjaGVzIGV2ZXJ5IGV4aGF1c3RpdmUgbGFiZWwgbWFwIGFzIGEgY29tcGlsZSBlcnJvciBpbnN0ZWFkIG9mIGFcbiAqIHNpbGVudGx5IHVuaGFuZGxlZCBzdHJpbmcuIFRoZSBQb3N0Z3JlcyBDSEVDSyBjb25zdHJhaW50cyBpbiBlYWNoIGRlcGxveVxuICogdGFyZ2V0J3MgYHBvc3RncmVzLWluaXQuc3FsYCBtaXJyb3IgdGhlIG9uZXMgc3RvcmVkIGluIFNRTC5cbiAqL1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ29tcGxpYW5jZSBydWxlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGNvbnN0IFJVTEVfU0VWRVJJVElFUyA9IFsnd2FybmluZycsICdlcnJvcicsICdjcml0aWNhbCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUnVsZVNldmVyaXR5ID0gKHR5cGVvZiBSVUxFX1NFVkVSSVRJRVMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBSVUxFX1RBUkdFVFMgPSBbJ3BsdWdpbicsICdwaXBlbGluZSddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUnVsZVRhcmdldCA9ICh0eXBlb2YgUlVMRV9UQVJHRVRTKVtudW1iZXJdO1xuXG4vKiogRmllbGQtZXZhbHVhdGlvbiBvcGVyYXRvcnM7IHRoZSBlbmdpbmUncyBpbXBsZW1lbnRhdGlvbnMgbGl2ZSBpbiBhcGkvY29tcGxpYW5jZS4gKi9cbmV4cG9ydCBjb25zdCBSVUxFX09QRVJBVE9SUyA9IFtcbiAgJ2VxJywgJ25lcScsXG4gICdjb250YWlucycsICdub3RDb250YWlucycsXG4gICdyZWdleCcsXG4gICdndCcsICdndGUnLCAnbHQnLCAnbHRlJyxcbiAgJ2luJywgJ25vdEluJyxcbiAgJ2V4aXN0cycsICdub3RFeGlzdHMnLCAnbm90RW1wdHknLFxuICAnY291bnRHdCcsICdjb3VudEx0JyxcbiAgJ2xlbmd0aEd0JywgJ2xlbmd0aEx0Jyxcbl0gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBSdWxlT3BlcmF0b3IgPSAodHlwZW9mIFJVTEVfT1BFUkFUT1JTKVtudW1iZXJdO1xuXG4vKiogT3BlcmF0b3JzIHRoYXQgdGVzdCBwcmVzZW5jZSBvbmx5IGFuZCB0YWtlIG5vIGNvbXBhcmlzb24gdmFsdWUuICovXG5leHBvcnQgY29uc3QgVkFMVUVMRVNTX1JVTEVfT1BFUkFUT1JTID0gWydleGlzdHMnLCAnbm90RXhpc3RzJywgJ25vdEVtcHR5J10gYXMgY29uc3Qgc2F0aXNmaWVzIHJlYWRvbmx5IFJ1bGVPcGVyYXRvcltdO1xuXG4vKiogSG93IGEgbXVsdGktY29uZGl0aW9uIHJ1bGUgY29tYmluZXMgaXRzIGNvbmRpdGlvbnMuICovXG5leHBvcnQgY29uc3QgUlVMRV9DT05ESVRJT05fTU9ERVMgPSBbJ2FsbCcsICdhbnknXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFJ1bGVDb25kaXRpb25Nb2RlID0gKHR5cGVvZiBSVUxFX0NPTkRJVElPTl9NT0RFUylbbnVtYmVyXTtcblxuLyoqIGBwdWJsaXNoZWRgIHJ1bGVzIGJlbG9uZyB0byB0aGUgc3lzdGVtIG9yZyBhbmQgYXBwbHkgYnkgc3Vic2NyaXB0aW9uLiAqL1xuZXhwb3J0IGNvbnN0IFJVTEVfU0NPUEVTID0gWydvcmcnLCAncHVibGlzaGVkJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBSdWxlU2NvcGUgPSAodHlwZW9mIFJVTEVfU0NPUEVTKVtudW1iZXJdO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gTWVzc2FnZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBjb25zdCBNRVNTQUdFX1RZUEVTID0gWydhbm5vdW5jZW1lbnQnLCAnY29udmVyc2F0aW9uJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBNZXNzYWdlVHlwZSA9ICh0eXBlb2YgTUVTU0FHRV9UWVBFUylbbnVtYmVyXTtcblxuZXhwb3J0IGNvbnN0IE1FU1NBR0VfUFJJT1JJVElFUyA9IFsnbm9ybWFsJywgJ2hpZ2gnLCAndXJnZW50J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBNZXNzYWdlUHJpb3JpdHkgPSAodHlwZW9mIE1FU1NBR0VfUFJJT1JJVElFUylbbnVtYmVyXTtcblxuLyoqXG4gKiBXaG8gU0VOVCBhIHJvb3QgbWVzc2FnZSwgcmVsYXRpdmUgdG8gdGhlIHZpZXdlcjogYG1lYCAodGhlIHZpZXdpbmcgdXNlclxuICogYXV0aG9yZWQgaXQpLCBgb3JnYCAodGhlIHZpZXdpbmcgb3JnIHNlbnQgaXQg4oCUIGFueSBtZW1iZXIpLCBgb3RoZXJzYCAoaXRcbiAqIGFycml2ZWQgZnJvbSBhbm90aGVyIG9yZywgYW5ub3VuY2VtZW50cyBpbmNsdWRlZCkuXG4gKi9cbmV4cG9ydCBjb25zdCBNRVNTQUdFX1NFTlRfQlkgPSBbJ21lJywgJ29yZycsICdvdGhlcnMnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIE1lc3NhZ2VTZW50QnkgPSAodHlwZW9mIE1FU1NBR0VfU0VOVF9CWSlbbnVtYmVyXTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEJpbGxpbmdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBjb25zdCBTVUJTQ1JJUFRJT05fU1RBVFVTRVMgPSBbJ2FjdGl2ZScsICdjYW5jZWxlZCcsICdwYXN0X2R1ZScsICd0cmlhbGluZycsICdpbmNvbXBsZXRlJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBTdWJzY3JpcHRpb25TdGF0dXMgPSAodHlwZW9mIFNVQlNDUklQVElPTl9TVEFUVVNFUylbbnVtYmVyXTtcblxuZXhwb3J0IGNvbnN0IEJJTExJTkdfSU5URVJWQUxTID0gWydtb250aGx5JywgJ2FubnVhbCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgQmlsbGluZ0ludGVydmFsID0gKHR5cGVvZiBCSUxMSU5HX0lOVEVSVkFMUylbbnVtYmVyXTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIElkZW50aXR5XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKiogT0lEQyBwcm92aWRlcnMgYW4gb3JnIElkUCBjb25maWcgY2FuIG5hbWUgKEdpdEh1YiBpcyBPQXV0aC1vbmx5IGFuZCByZWZ1c2VkIGJ5IHRoZSBPSURDIGVuZ2luZSkuICovXG5leHBvcnQgY29uc3QgSURQX1BST1ZJREVSUyA9IFsnZ2VuZXJpYy1vaWRjJywgJ2NvZ25pdG8nLCAnZ29vZ2xlJywgJ2dpdGh1YiddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgSWRwUHJvdmlkZXIgPSAodHlwZW9mIElEUF9QUk9WSURFUlMpW251bWJlcl07XG5cbi8qKiBUaGUgZmVkZXJhdGlvbiBwcm90b2NvbCBhbiBvcmcgc2lnbnMgaW4gb3ZlciDigJQgb25lIHBlciBvcmcuICovXG5leHBvcnQgY29uc3QgSURQX1BST1RPQ09MUyA9IFsnb2lkYycsICdzYW1sJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBJZHBQcm90b2NvbCA9ICh0eXBlb2YgSURQX1BST1RPQ09MUylbbnVtYmVyXTtcblxuLyoqXG4gKiBXaGljaCBTQU1MIGFzc2VydGlvbiBhdHRyaWJ1dGUgY2FycmllcyB3aGljaCBpZGVudGl0eSBmaWVsZC4gQW4gZW1wdHkgbmFtZVxuICogbWVhbnMgXCJ1c2UgdGhlIGNvbW1vbiBzcGVsbGluZ3NcIiAoc2hvcnQgbmFtZXMgcGx1cyB0aGUgRW50cmEvU2hpYmJvbGV0aCBVUklzKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTYW1sQXR0cmlidXRlTWFwcGluZyB7XG4gIC8qKiBBdHRyaWJ1dGUgaG9sZGluZyB0aGUgdXNlcidzIGVtYWlsIGFkZHJlc3MuICovXG4gIGVtYWlsPzogc3RyaW5nO1xuICAvKiogQXR0cmlidXRlIGhvbGRpbmcgdGhlIGRpc3BsYXkgbmFtZS4gKi9cbiAgbmFtZT86IHN0cmluZztcbiAgLyoqIEF0dHJpYnV0ZSBob2xkaW5nIGdyb3VwIG1lbWJlcnNoaXBzIChkcml2ZXMgSklUIHJvbGUgbWFwcGluZykuICovXG4gIGdyb3Vwcz86IHN0cmluZztcbn1cblxuLyoqIFRoZSBjb2Fyc2UgZ3JhbnQgYSBwZXJtaXNzaW9uIHJvbGUgZ2l2ZXMgaXRzIG1lbWJlcnMuICovXG5leHBvcnQgY29uc3QgUk9MRV9HUkFOVFMgPSBbJ3N1cGVyYWRtaW4nLCAnYWRtaW4nLCAnbWVtYmVyJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBSb2xlR3JhbnQgPSAodHlwZW9mIFJPTEVfR1JBTlRTKVtudW1iZXJdO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUGx1Z2luIGVjb3N5c3RlbSAoZWFjaCBtaXJyb3JlZCBieSBhIENIRUNLIGluIHBvc3RncmVzLWluaXQuc3FsKVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIFB1Ymxpc2hlciB0cnVzdCB0aWVyLiAqL1xuZXhwb3J0IGNvbnN0IFBVQkxJU0hFUl9USUVSUyA9IFsnb2ZmaWNpYWwnLCAndmVyaWZpZWQnLCAnY29tbXVuaXR5JywgJ3VudmVyaWZpZWQnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFB1Ymxpc2hlclRpZXIgPSAodHlwZW9mIFBVQkxJU0hFUl9USUVSUylbbnVtYmVyXTtcblxuLyoqIEEgZGlyZWN0b3J5IGxpc3RpbmcncyBsaWZlY3ljbGUgc3RhdGUuICovXG5leHBvcnQgY29uc3QgTElTVElOR19TVEFURVMgPSBbJ2xpc3RlZCcsICd1bm1haW50YWluZWQnLCAnc3VzcGVuZGVkJywgJ3RyYW5zZmVycmVkJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBMaXN0aW5nU3RhdGUgPSAodHlwZW9mIExJU1RJTkdfU1RBVEVTKVtudW1iZXJdO1xuXG4vKiogV2hhdCBhIHB1Ymxpc2ggcmVxdWVzdCBhc2tzIHRoZSBzeXN0ZW0gb3JnIHRvIGRvLiAqL1xuZXhwb3J0IGNvbnN0IFBVQkxJU0hfUkVRVUVTVF9LSU5EUyA9IFtcbiAgJ25ld19saXN0aW5nJywgJ25ld192ZXJzaW9uJywgJ2xpc3RpbmdfdXBkYXRlJywgJ3lhbmsnLCAndW5wYXVzZScsXG4gICd0cmFuc2ZlcicsICdjbGFpbScsICdwcm9maWxlX2NoYW5nZScsICdhZHZpc29yeScsICd2ZXJpZnknLCAnbW9kZXJhdGlvbicsICdzdWJtaXNzaW9uJyxcbl0gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBQdWJsaXNoUmVxdWVzdEtpbmQgPSAodHlwZW9mIFBVQkxJU0hfUkVRVUVTVF9LSU5EUylbbnVtYmVyXTtcblxuZXhwb3J0IGNvbnN0IFBVQkxJU0hfUkVRVUVTVF9TVEFUVVNFUyA9IFsncGVuZGluZycsICdwZW5kaW5nX3NlY29uZF9hcHByb3ZhbCcsICdhcHByb3ZlZCcsICdyZWplY3RlZCcsICd3aXRoZHJhd24nXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFB1Ymxpc2hSZXF1ZXN0U3RhdHVzID0gKHR5cGVvZiBQVUJMSVNIX1JFUVVFU1RfU1RBVFVTRVMpW251bWJlcl07XG5cbi8qKiBUaGUgc3RhdHVzZXMgYSByZXF1ZXN0IGlzIHN0aWxsIFwib3BlblwiIGluIChkcml2ZXMgdGhlIG9uZS1vcGVuLXJlcXVlc3QgaW5kZXgpLiAqL1xuZXhwb3J0IGNvbnN0IE9QRU5fUFVCTElTSF9SRVFVRVNUX1NUQVRVU0VTID0gWydwZW5kaW5nJywgJ3BlbmRpbmdfc2Vjb25kX2FwcHJvdmFsJ10gYXMgY29uc3Qgc2F0aXNmaWVzIHJlYWRvbmx5IFB1Ymxpc2hSZXF1ZXN0U3RhdHVzW107XG5cbi8qKiBgc2VjdXJpdHlgIHJlcXVlc3RzIGp1bXAgdGhlIG1vZGVyYXRpb24gcXVldWUuICovXG5leHBvcnQgY29uc3QgUFVCTElTSF9SRVFVRVNUX0xBTkVTID0gWydzdGFuZGFyZCcsICdzZWN1cml0eSddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUHVibGlzaFJlcXVlc3RMYW5lID0gKHR5cGVvZiBQVUJMSVNIX1JFUVVFU1RfTEFORVMpW251bWJlcl07XG5cbi8qKiBJbnN0YWxsIHZlcnNpb24gcG9saWN5OiBleGFjdCwgYH5gLCBgXmAsIG9yIGFueXRoaW5nIG5vbi1icmVha2luZy4gKi9cbmV4cG9ydCBjb25zdCBJTlNUQUxMX1ZFUlNJT05fUE9MSUNJRVMgPSBbJ3Bpbm5lZCcsICdwYXRjaCcsICdtaW5vcicsICdsYXRlc3QnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEluc3RhbGxWZXJzaW9uUG9saWN5ID0gKHR5cGVvZiBJTlNUQUxMX1ZFUlNJT05fUE9MSUNJRVMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBJTlNUQUxMX1NUQVRVU0VTID0gWydhY3RpdmUnLCAncGVuZGluZ19hcHByb3ZhbCcsICdkZW5pZWQnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEluc3RhbGxTdGF0dXMgPSAodHlwZW9mIElOU1RBTExfU1RBVFVTRVMpW251bWJlcl07XG5cbi8qKiBUaGUgYWR2aXNvcnkgc2V2ZXJpdHkgYXQgd2hpY2ggYSBjb25zdW1wdGlvbiBwb2xpY3kgYmxvY2tzIGluc3RhbGxzLiAqL1xuZXhwb3J0IGNvbnN0IEJMT0NLX09OX0FEVklTT1JZX0xFVkVMUyA9IFsnY3JpdGljYWwnLCAnaGlnaCcsICduZXZlciddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgQmxvY2tPbkFkdmlzb3J5ID0gKHR5cGVvZiBCTE9DS19PTl9BRFZJU09SWV9MRVZFTFMpW251bWJlcl07XG5cbi8qKiBXaGV0aGVyIG9mZmljaWFsIHBsdWdpbnMgbmVlZCBhbiBleHBsaWNpdCBpbnN0YWxsIGJlZm9yZSBhIHBpcGVsaW5lIGNhbiB1c2UgdGhlbS4gKi9cbmV4cG9ydCBjb25zdCBPRkZJQ0lBTF9JTlNUQUxMU19NT0RFUyA9IFsnaW1wbGljaXQnLCAnZXhwbGljaXQnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIE9mZmljaWFsSW5zdGFsbHMgPSAodHlwZW9mIE9GRklDSUFMX0lOU1RBTExTX01PREVTKVtudW1iZXJdO1xuXG4vKipcbiAqIFdoYXQgaGFwcGVucyB3aGVuIGFuIG9yZyBkZWZpbmVzIGEgcGx1Z2luIE5BTUUgdGhhdCBvdmVycmlkZXMgc29tZXRoaW5nIGl0XG4gKiB3b3VsZCBvdGhlcndpc2UgcmVzb2x2ZSDigJQgYSBsaXN0aW5nLCBvciAoZm9yIGEgdGVhbSkgaXRzIHBhcmVudCBvcmcncyBwbHVnaW4uXG4gKlxuICogYGFsbG93YCBrZWVwcyB0b2RheSdzIGJlaGF2aW91cjogdGhlIG92ZXJyaWRlIGlzIHNpbGVudCBiZXlvbmQgdGhlIGRhc2hib2FyZFxuICogYmFubmVyLiBgd2FybmAgaXMgdGhlIHNhbWUgcmVzb2x1dGlvbiB3aXRoIHRoZSBmYWN0IHJlY29yZGVkIHByb21pbmVudGx5LlxuICogYGRlbnlgIHJlZnVzZXMgdGhlIHVwbG9hZCwgd2hpY2ggaXMgdGhlIG9ubHkgc2V0dGluZyB0aGF0IGFjdHVhbGx5IHN0b3BzIGFcbiAqIHRlYW0gcmVwbGFjaW5nIHRoZSBPZmZpY2lhbCBgdHJpdnlgIGZvciBldmVyeSBwaXBlbGluZSB0aGF0IG5hbWVzIGl0LlxuICovXG5leHBvcnQgY29uc3QgU0hBRE9XSU5HX01PREVTID0gWydhbGxvdycsICd3YXJuJywgJ2RlbnknXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFNoYWRvd2luZ01vZGUgPSAodHlwZW9mIFNIQURPV0lOR19NT0RFUylbbnVtYmVyXTtcblxuZXhwb3J0IGNvbnN0IFJFVklFV19TVEFUVVNFUyA9IFsncHVibGlzaGVkJywgJ2hlbGQnLCAncmVtb3ZlZCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUmV2aWV3U3RhdHVzID0gKHR5cGVvZiBSRVZJRVdfU1RBVFVTRVMpW251bWJlcl07XG5cbi8qKiBXaHkgYSBoZWxkIHJldmlldyBpcyBoZWxkLiAqL1xuZXhwb3J0IGNvbnN0IFJFVklFV19IT0xEX1JFQVNPTlMgPSBbJ3JlcG9ydHMnLCAnYnVyc3QnLCAnZmlsdGVyJywgJ3NlY3VyaXR5JywgJ21vZGVyYXRvciddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUmV2aWV3SG9sZFJlYXNvbiA9ICh0eXBlb2YgUkVWSUVXX0hPTERfUkVBU09OUylbbnVtYmVyXTtcblxuLyoqIEEgcmV2aWV3IHJlcG9ydCdzIGNhdGVnb3J5OyBgc2VjdXJpdHlgIHJvdXRlcyBwcml2YXRlbHkgdG8gdGhlIGFkdmlzb3J5IHBhdGguICovXG5leHBvcnQgY29uc3QgUkVWSUVXX1JFUE9SVF9DQVRFR09SSUVTID0gWydzcGFtJywgJ2FidXNlJywgJ29mZl90b3BpYycsICdzZWN1cml0eSddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUmV2aWV3UmVwb3J0Q2F0ZWdvcnkgPSAodHlwZW9mIFJFVklFV19SRVBPUlRfQ0FURUdPUklFUylbbnVtYmVyXTtcblxuZXhwb3J0IGNvbnN0IEFEVklTT1JZX1NFVkVSSVRJRVMgPSBbJ2NyaXRpY2FsJywgJ2hpZ2gnLCAnbWVkaXVtJywgJ2xvdyddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgQWR2aXNvcnlTZXZlcml0eSA9ICh0eXBlb2YgQURWSVNPUllfU0VWRVJJVElFUylbbnVtYmVyXTtcblxuZXhwb3J0IGNvbnN0IEFEVklTT1JZX1NUQVRFUyA9IFsnZHJhZnQnLCAncHVibGlzaGVkJywgJ3dpdGhkcmF3biddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgQWR2aXNvcnlTdGF0ZSA9ICh0eXBlb2YgQURWSVNPUllfU1RBVEVTKVtudW1iZXJdO1xuXG5leHBvcnQgY29uc3QgQURWSVNPUllfU09VUkNFUyA9IFsncHVibGlzaGVyJywgJ21vZGVyYXRvcicsICdjdmVfcmVzY2FuJywgJ3JldmlldyddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgQWR2aXNvcnlTb3VyY2UgPSAodHlwZW9mIEFEVklTT1JZX1NPVVJDRVMpW251bWJlcl07XG5cbi8qKlxuICogQW4gYW5vbnltb3VzIHN1Ym1pc3Npb24ncyBsaWZlY3ljbGUuIGBwdWJsaXNoaW5nYCBpcyB0aGUgc2hvcnQgY2xhaW0gYW5cbiAqIGFwcHJvdmFsIHRha2VzIGJlZm9yZSBpdCBjb3BpZXMgdGhlIHF1YXJhbnRpbmVkIGltYWdlIG91dCwgc28gYW4gZXhwaXJ5IGNhblxuICogbmV2ZXIgZGVsZXRlIHRoZSBhcnRpZmFjdHMgb2YgYSBzdWJtaXNzaW9uIHRoYXQgaXMgYmVpbmcgcHVibGlzaGVkLlxuICovXG5leHBvcnQgY29uc3QgU1VCTUlTU0lPTl9TVEFUVVNFUyA9IFtcbiAgJ3BlbmRpbmdfdmVyaWZpY2F0aW9uJywgJ3BlbmRpbmdfcmV2aWV3JywgJ3B1Ymxpc2hpbmcnLCAnZ2F0ZV9mYWlsZWQnLCAnYXBwcm92ZWQnLCAncmVqZWN0ZWQnLCAnZXhwaXJlZCcsICdjbGFpbWVkJyxcbl0gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBTdWJtaXNzaW9uU3RhdHVzID0gKHR5cGVvZiBTVUJNSVNTSU9OX1NUQVRVU0VTKVtudW1iZXJdO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUGx1Z2luIHNlY3VyaXR5IG5vdGlmaWNhdGlvbnMgKHBlciBvcmcpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKiogV2hvIHJlY2VpdmVzIGFuIG9yZydzIHBsdWdpbiBzZWN1cml0eSBub3RpY2VzOiBgd3JpdGVyc2AgPSB0aGUgdXBsb2FkZXIgcGx1c1xuICogIG1lbWJlcnMgaG9sZGluZyBgcGx1Z2luczp3cml0ZWA7IGB1c2Vyc2AgPSB0aGUgb3JnJ3MgY2hvc2VuIG1lbWJlcnMuICovXG5leHBvcnQgY29uc3QgUExVR0lOX1NFQ1VSSVRZX1JFQ0lQSUVOVF9NT0RFUyA9IFsnd3JpdGVycycsICd1c2VycyddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUGx1Z2luU2VjdXJpdHlSZWNpcGllbnRNb2RlID0gKHR5cGVvZiBQTFVHSU5fU0VDVVJJVFlfUkVDSVBJRU5UX01PREVTKVtudW1iZXJdO1xuXG4vKiogSG93IHJlc2NhbiBmaW5kaW5ncyAoTjMxKSBhcmUgYmF0Y2hlZDsgYmxvY2tlZCBidWlsZHMgKE4zMCkgYXJlIGFsd2F5cyBpbW1lZGlhdGUuICovXG5leHBvcnQgY29uc3QgUExVR0lOX1NFQ1VSSVRZX0RJR0VTVF9NT0RFUyA9IFsnaW1tZWRpYXRlJywgJ2RhaWx5JywgJ3dlZWtseSddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUGx1Z2luU2VjdXJpdHlEaWdlc3RNb2RlID0gKHR5cGVvZiBQTFVHSU5fU0VDVVJJVFlfRElHRVNUX01PREVTKVtudW1iZXJdO1xuXG4vLyBUaGUgYnVpbGQgQ0xBU1MgYW5kIFNJWkUgdm9jYWJ1bGFyaWVzIGxpdmUgaW4gYGJ1aWxkLWNhdGFsb2cudHNgLCB0b2dldGhlclxuLy8gd2l0aCB0aGVpciBsYWJlbHMsIGNyZWRpdCBtdWx0aXBsaWVycywgdGllciBmbG9vcnMgYW5kIHBlci1jbGFzcyBzbG90XG4vLyBkZWZhdWx0cy4gVGhleSBhcmUgbm90IGhlcmUgYmVjYXVzZSB0aGUgaWRzIGFsb25lIHdlcmUgbmV2ZXIgdGhlIHdob2xlIGZhY3Q6XG4vLyB0aGUgbXVsdGlwbGllciB3YXMgaW4gdGhpcyBmaWxlLCB0aGUgdGllciBnYXRlIHdhcyBpbiBgcXVvdGEtdGllcnMudHNgLCBhbmRcbi8vIHRoZSBsYWJlbHMgd2VyZSBpbiBhIGZyb250ZW5kIG1pcnJvciBvZiBib3RoLiBPbmUga2V5ZWQgY2F0YWxvZyBpcyBpbXBvcnRhYmxlXG4vLyBieSB0aGUgYnJvd3Nlciwgc28gdGhlIG1pcnJvciBhbmQgdGhlIHRlc3QgdGhhdCBwYXJzZWQgdGhpcyBwYWNrYWdlJ3Mgc291cmNlXG4vLyB0byBkZXRlY3QgZHJpZnQgYXJlIGJvdGggZ29uZS5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIE9yZyBtZW1iZXJzaGlwXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIFRoZSBjb2Fyc2UgcGVyLW9yZyBtZW1iZXJzaGlwIGxhYmVsIChgVXNlck9yZ2FuaXphdGlvbi5yb2xlYCxcbiAqIGBJbnZpdGF0aW9uLnJvbGVgLCB0aGUgYWNjZXNzIHRva2VuJ3MgYHJvbGVgKSwgaGlnaGVzdCBhdXRob3JpdHkgZmlyc3Q6XG4gKiBgb3duZXJgIGNyZWF0ZWQgdGhlIG9yZyBvciByZWNlaXZlZCBhbiBvd25lcnNoaXAgdHJhbnNmZXIsIGBhZG1pbmAgbWFuYWdlc1xuICogbWVtYmVycyBhbmQgc2V0dGluZ3MsIGBtZW1iZXJgIGhhcyBzdGFuZGFyZCBhY2Nlc3MuIERFUklWRUQgZnJvbSB0aGUgUm9sZXMgYVxuICogdXNlciBpcyBhc3NpZ25lZCAodGhlIGhpZ2hlc3QgYGdyYW50c1JvbGVgIGFtb25nIHRoZW07IGBvd25lcmAgb25seSBieVxuICogdHJhbnNmZXIpIOKAlCBhIGRpc3BsYXkvYXV0aG9yaXR5IGxhYmVsIGRyaXZpbmcgYGlzQWRtaW5gLCBvd25lcnNoaXAgYW5kIHNlYXRcbiAqIGFjY291bnRpbmcsIE5PVCBhIHBlcm1pc3Npb24gc291cmNlIChzZWUgYHJlc29sdmVVc2VyUGVybWlzc2lvbnNgKS5cbiAqL1xuZXhwb3J0IGNvbnN0IE9SR19ST0xFUyA9IFsnb3duZXInLCAnYWRtaW4nLCAnbWVtYmVyJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBPcmdSb2xlID0gKHR5cGVvZiBPUkdfUk9MRVMpW251bWJlcl07XG5cbi8qKlxuICogVGhlIG1lbWJlcnNoaXAgcm9sZXMgdGhhdCBBRE1JTklTVEVSIGFuIG9yZzogdGhlIHRva2VuJ3MgYGlzQWRtaW5gLCB0aGVcbiAqIFwibm90aWZ5IHRoaXMgb3JnJ3MgYWRtaW5zXCIgbG9va3VwcyBhbmQgdGhlIGludml0ZS9hcHByb3ZhbCBhdXRob3JpdHkgY2hlY2tzXG4gKiBhbGwgcmVhZCB0aGlzIG9uZSBsaXN0LlxuICovXG5leHBvcnQgY29uc3QgQURNSU5fT1JHX1JPTEVTID0gWydvd25lcicsICdhZG1pbiddIGFzIGNvbnN0IHNhdGlzZmllcyByZWFkb25seSBPcmdSb2xlW107XG5leHBvcnQgdHlwZSBBZG1pbk9yZ1JvbGUgPSAodHlwZW9mIEFETUlOX09SR19ST0xFUylbbnVtYmVyXTtcblxuLyoqIFdoZXRoZXIgYHZhbHVlYCBpcyBhIG1lbWJlcnNoaXAgcm9sZSwgbmFycm93aW5nIGl0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzT3JnUm9sZSh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIE9yZ1JvbGUge1xuICByZXR1cm4gKE9SR19ST0xFUyBhcyByZWFkb25seSB1bmtub3duW10pLmluY2x1ZGVzKHZhbHVlKTtcbn1cblxuLyoqIFdoZXRoZXIgYHJvbGVgIGFkbWluaXN0ZXJzIGl0cyBvcmcgKGBvd25lcmAgb3IgYGFkbWluYCkuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBZG1pbk9yZ1JvbGUocm9sZTogdW5rbm93bik6IHJvbGUgaXMgQWRtaW5PcmdSb2xlIHtcbiAgcmV0dXJuIChBRE1JTl9PUkdfUk9MRVMgYXMgcmVhZG9ubHkgdW5rbm93bltdKS5pbmNsdWRlcyhyb2xlKTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEFsZXJ0aW5nXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKiogV2hlcmUgYW4gb3JnJ3MgYWxlcnQgZGVzdGluYXRpb24gZGVsaXZlcnMgKGBhbGVydF9kZXN0aW5hdGlvbnMuY2hhbm5lbGApLiAqL1xuZXhwb3J0IGNvbnN0IEFMRVJUX0NIQU5ORUxTID0gWydzbGFjaycsICd3ZWJob29rJywgJ2luLWFwcCcsICdlbWFpbCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgQWxlcnRDaGFubmVsID0gKHR5cGVvZiBBTEVSVF9DSEFOTkVMUylbbnVtYmVyXTtcblxuLyoqXG4gKiBUaGUgc2V2ZXJpdHkgbGFkZGVyIGFuIG9yZyBzZXRzIG9uIGl0cyBhbGVydCBydWxlcyBhbmQgdXNlcyBhcyBhXG4gKiBkZXN0aW5hdGlvbidzIGBtaW5TZXZlcml0eWAgZmxvb3IsIGxlYXN0IHNldmVyZSBmaXJzdCAoYHdhcm5pbmdgID1cbiAqIHdhcm5pbmcrY3JpdGljYWwsIGBjcml0aWNhbGAgPSBjcml0aWNhbCBvbmx5KS4gTWlycm9ycyBBbGVydG1hbmFnZXIgc2V2ZXJpdHlcbiAqIG9yZGVyaW5nLiBBbiBpbmJvdW5kIGFsZXJ0IG1heSBhbHNvIGNhcnJ5IGBpbmZvYCwgd2hpY2ggbm8gcnVsZSBjYW4gZW1pdCBhbmRcbiAqIG5vIGRlc3RpbmF0aW9uIGNhbiBzdWJzY3JpYmUgdG8uXG4gKi9cbmV4cG9ydCBjb25zdCBBTEVSVF9SVUxFX1NFVkVSSVRJRVMgPSBbJ3dhcm5pbmcnLCAnY3JpdGljYWwnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEFsZXJ0UnVsZVNldmVyaXR5ID0gKHR5cGVvZiBBTEVSVF9SVUxFX1NFVkVSSVRJRVMpW251bWJlcl07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTdXBwb3J0IGNhc2VzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKiogQSBzdXBwb3J0IGNhc2UncyBsaWZlY3ljbGUgc3RhdGUgKGBzdXBwb3J0X2Nhc2VzLnN0YXR1c2ApLiAqL1xuZXhwb3J0IGNvbnN0IFNVUFBPUlRfQ0FTRV9TVEFUVVNFUyA9IFsnb3BlbicsICdhd2FpdGluZ19zdXBwb3J0JywgJ2F3YWl0aW5nX2N1c3RvbWVyJywgJ3Jlc29sdmVkJywgJ2Nsb3NlZCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgU3VwcG9ydENhc2VTdGF0dXMgPSAodHlwZW9mIFNVUFBPUlRfQ0FTRV9TVEFUVVNFUylbbnVtYmVyXTtcblxuLyoqXG4gKiBUaGUgc3RhdHVzZXMgYSBURU5BTlQgbWF5IHNldCBvbiBpdHMgb3duIGNhc2UuIGBhd2FpdGluZ19zdXBwb3J0YCBhbmRcbiAqIGByZXNvbHZlZGAgYXJlIHRoZSBzdXBwb3J0IGRlc2sncyB0byBzZXQ7IGBjbG9zZWRgIGlzIHRoZSB0ZW5hbnQncyB3YXkgb3V0XG4gKiAoYW5kLCBvbmNlIHRoZXJlLCBhIHRlbmFudCBjYW5ub3QgbW92ZSB0aGUgY2FzZSBiYWNrKS5cbiAqL1xuZXhwb3J0IGNvbnN0IFRFTkFOVF9TVVBQT1JUX0NBU0VfU1RBVFVTRVMgPSBbJ29wZW4nLCAnYXdhaXRpbmdfY3VzdG9tZXInLCAnY2xvc2VkJ10gYXMgY29uc3Qgc2F0aXNmaWVzIHJlYWRvbmx5IFN1cHBvcnRDYXNlU3RhdHVzW107XG5leHBvcnQgdHlwZSBUZW5hbnRTdXBwb3J0Q2FzZVN0YXR1cyA9ICh0eXBlb2YgVEVOQU5UX1NVUFBPUlRfQ0FTRV9TVEFUVVNFUylbbnVtYmVyXTtcblxuLyoqIFN0YXR1c2VzIGEgdGVuYW50IGNhbm5vdCBtb3ZlIE9VVCBvZi4gKi9cbmV4cG9ydCBjb25zdCBURU5BTlRfVEVSTUlOQUxfU1VQUE9SVF9DQVNFX1NUQVRVU0VTID0gWydjbG9zZWQnXSBhcyBjb25zdCBzYXRpc2ZpZXMgcmVhZG9ubHkgVGVuYW50U3VwcG9ydENhc2VTdGF0dXNbXTtcblxuLyoqIFN0YXR1c2VzIGEgY2FzZSBpcyBzdGlsbCBMSVZFIGluIChub3QgcmVzb2x2ZWQgb3IgY2xvc2VkKS4gKi9cbmV4cG9ydCBjb25zdCBMSVZFX1NVUFBPUlRfQ0FTRV9TVEFUVVNFUyA9IFsnb3BlbicsICdhd2FpdGluZ19zdXBwb3J0JywgJ2F3YWl0aW5nX2N1c3RvbWVyJ10gYXMgY29uc3Qgc2F0aXNmaWVzIHJlYWRvbmx5IFN1cHBvcnRDYXNlU3RhdHVzW107XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDb21wbGlhbmNlIHNjYW5zLCBleGVtcHRpb25zIGFuZCBjaGVja3Ncbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBXaGF0IGEgY29tcGxpYW5jZSBzY2FuIChvciBhIHNjYW4gc2NoZWR1bGUpIGNvdmVyczogb25lIHJ1bGUgdGFyZ2V0LCBvciBldmVyeSBvbmUuICovXG5leHBvcnQgY29uc3QgQ09NUExJQU5DRV9TQ0FOX1RBUkdFVFMgPSBbLi4uUlVMRV9UQVJHRVRTLCAnYWxsJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBDb21wbGlhbmNlU2NhblRhcmdldCA9ICh0eXBlb2YgQ09NUExJQU5DRV9TQ0FOX1RBUkdFVFMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBDT01QTElBTkNFX1NDQU5fU1RBVFVTRVMgPSBbJ3BlbmRpbmcnLCAncnVubmluZycsICdjb21wbGV0ZWQnLCAnZmFpbGVkJywgJ2NhbmNlbGxlZCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZVNjYW5TdGF0dXMgPSAodHlwZW9mIENPTVBMSUFOQ0VfU0NBTl9TVEFUVVNFUylbbnVtYmVyXTtcblxuLyoqIFdoeSBhIHNjYW4gcm93IGV4aXN0cy4gYHJ1bGUtZHJ5LXJ1bmAgc2NhbnMgZXZhbHVhdGUgd2l0aG91dCB3cml0aW5nIHRoZSBjaGVjayBsb2cgb3Igbm90aWZ5aW5nLiAqL1xuZXhwb3J0IGNvbnN0IENPTVBMSUFOQ0VfU0NBTl9UUklHR0VSUyA9IFsnbWFudWFsJywgJ3NjaGVkdWxlZCcsICdydWxlLWNoYW5nZScsICdydWxlLWRyeS1ydW4nXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIENvbXBsaWFuY2VTY2FuVHJpZ2dlciA9ICh0eXBlb2YgQ09NUExJQU5DRV9TQ0FOX1RSSUdHRVJTKVtudW1iZXJdO1xuXG5leHBvcnQgY29uc3QgQ09NUExJQU5DRV9FWEVNUFRJT05fU1RBVFVTRVMgPSBbJ3BlbmRpbmcnLCAnYXBwcm92ZWQnLCAncmVqZWN0ZWQnLCAnZXhwaXJlZCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZUV4ZW1wdGlvblN0YXR1cyA9ICh0eXBlb2YgQ09NUExJQU5DRV9FWEVNUFRJT05fU1RBVFVTRVMpW251bWJlcl07XG5cbi8qKiBUaGUgdHdvIGRlY2lzaW9ucyBhIHJldmlld2VyIGNhbiBtYWtlIG9uIGEgcGVuZGluZyBleGVtcHRpb24uICovXG5leHBvcnQgY29uc3QgQ09NUExJQU5DRV9FWEVNUFRJT05fREVDSVNJT05TID0gWydhcHByb3ZlZCcsICdyZWplY3RlZCddIGFzIGNvbnN0IHNhdGlzZmllcyByZWFkb25seSBDb21wbGlhbmNlRXhlbXB0aW9uU3RhdHVzW107XG5leHBvcnQgdHlwZSBDb21wbGlhbmNlRXhlbXB0aW9uRGVjaXNpb24gPSAodHlwZW9mIENPTVBMSUFOQ0VfRVhFTVBUSU9OX0RFQ0lTSU9OUylbbnVtYmVyXTtcblxuLyoqIEEgY29tcGxpYW5jZSBjaGVjay1sb2cgcm93J3MgdmVyZGljdCAoYGNvbXBsaWFuY2VfY2hlY2tfbG9nLnJlc3VsdGApLiAqL1xuZXhwb3J0IGNvbnN0IENPTVBMSUFOQ0VfQ0hFQ0tfUkVTVUxUUyA9IFsncGFzcycsICd3YXJuJywgJ2Jsb2NrJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBDb21wbGlhbmNlQ2hlY2tWZXJkaWN0ID0gKHR5cGVvZiBDT01QTElBTkNFX0NIRUNLX1JFU1VMVFMpW251bWJlcl07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBBSSBjYWxsc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIFdob3NlIGtleSBzZXJ2ZXMgYW4gQUkgY2FsbDogdGhlIGNhbGxlcidzIG93biAoYHJlcXVlc3RgLCBCWU9LKSwgdGhlIG9yZydzLCBvciB0aGUgcGxhdGZvcm0ncy4gT25seSBgcGxhdGZvcm1gIHNwZW5kcyBgYWlDYWxsc2AuICovXG5leHBvcnQgY29uc3QgQUlfS0VZX1NPVVJDRVMgPSBbJ3BsYXRmb3JtJywgJ29yZycsICdyZXF1ZXN0J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBBaUtleVNvdXJjZSA9ICh0eXBlb2YgQUlfS0VZX1NPVVJDRVMpW251bWJlcl07XG5cbi8qKlxuICogSG93IGFuIEFJIGNhbGwncyBgYWlDYWxsc2AgcXVvdGEgc2xvdCBzZXR0bGVkOiBga2VwdGAgKHRoZSBjYWxsIHJlYWNoZWQgYVxuICogcHJvdmlkZXIpLCBgcmVmdW5kZWRgIChpdCBuZXZlciBkaWQpLCBvciBgd2FpdmVkYCAobm8gdW5pdCB3YXMgcmVzZXJ2ZWQg4oCUIGFcbiAqIEJZT0sga2V5LCBhbiBpbXBlcnNvbmF0ZWQgY2FsbCBvciBhIHdlaWdodC0wIG1vZGVsKS5cbiAqL1xuZXhwb3J0IGNvbnN0IEFJX1FVT1RBX1NFVFRMRU1FTlRTID0gWydrZXB0JywgJ3JlZnVuZGVkJywgJ3dhaXZlZCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgQWlRdW90YVNldHRsZW1lbnQgPSAodHlwZW9mIEFJX1FVT1RBX1NFVFRMRU1FTlRTKVtudW1iZXJdO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUGx1Z2luLXZlcnNpb24gdnVsbmVyYWJpbGl0eSBncmFkZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBIb3cgbG91ZCBhIHBsdWdpbi12ZXJzaW9uIHZ1bG5lcmFiaWxpdHkgd2FybmluZyBpcywgcXVpZXRlc3QgZmlyc3QgKHNlZSBgc2VydmljZXMvdmVyc2lvbi12dWxuLXBvbGljeS50c2ApLiAqL1xuZXhwb3J0IGNvbnN0IFZVTE5fU0VWRVJJVElFUyA9IFsnaW5mbycsICd3YXJuaW5nJywgJ2Vycm9yJywgJ2NyaXRpY2FsJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBWdWxuU2V2ZXJpdHkgPSAodHlwZW9mIFZVTE5fU0VWRVJJVElFUylbbnVtYmVyXTtcbiJdfQ==
@@ -6,7 +6,7 @@ export { isAllowedSpdxId, projectUrlProblem, validateCatalogField, findContractK
6
6
  export { isAllowedAttachmentType, MessageTypeSchema, MessagePrioritySchema, MessageSentBySchema, MessageFilterSchema, MESSAGE_ATTACHMENT_MAX_BYTES, MESSAGE_ATTACHMENT_ALLOWED_MIME, MessageCreateSchema, MessageReplySchema, MessageEditSchema, MessageHideSchema, MessageBulkIdsSchema, MessageBulkReadSchema, MESSAGE_BULK_MAX_IDS, } from './message-schemas.js';
7
7
  export * from './ai-schemas.js';
8
8
  export { validate, validateQuery, validateBody, } from './middleware.js';
9
- export { isValidEgressHost, checkPluginSpec, checkPluginConfig, pluginSpecRequiredFieldsProblem, PLUGIN_TYPES, STEP_PLUGIN_TYPES, PluginToolchainSchema, type PluginToolchain, TOOLCHAIN_METADATA_PREFIX, toolchainMetadata, toolchainFromMetadata, PLUGIN_SOURCE_DIGEST_PATTERN, PLUGIN_COMPUTE_TYPES, type PluginBuildType, PLUGIN_NAME_PATTERN, PLUGIN_VERSION_PATTERN, type PluginSpecInput, type PackageCheck, } from './plugin-spec-schema.js';
9
+ export { isValidEgressHost, checkPluginSpec, checkPluginConfig, pluginSpecRequiredFieldsProblem, PLUGIN_TYPES, STEP_PLUGIN_TYPES, PluginToolchainSchema, type PluginToolchain, toolchainMetadata, toolchainFromMetadata, PLUGIN_SOURCE_DIGEST_PATTERN, PLUGIN_COMPUTE_TYPES, type PluginBuildType, PLUGIN_NAME_PATTERN, PLUGIN_VERSION_PATTERN, type PluginSpecInput, type PackageCheck, } from './plugin-spec-schema.js';
10
10
  export { stripInlineMarkdown, readmeTitle, readmeFirstParagraph, firstSentence, detectCatalogMetadata, resolveCatalogMetadata, acceptAllCatalogMetadata, parseCatalogEdits, parseCatalogEditsPart, type DetectedField, type CatalogSpecFields, type ResolvedCatalog, } from './plugin-catalog-detect.js';
11
11
  export { parseLabelArgs, parseDockerfile, OCI_LABELS, } from './dockerfile-static.js';
12
12
  export { isPluginTemplatableField, checkPluginTemplates, formatPluginTemplateIssue, PLUGIN_TEMPLATE_SCOPE_ROOTS, type PluginTemplateEngine, type PluginTemplateIssue, } from './plugin-template-contract.js';
@@ -8,7 +8,7 @@ export { isAllowedSpdxId, projectUrlProblem, validateCatalogField, findContractK
8
8
  export { isAllowedAttachmentType, MessageTypeSchema, MessagePrioritySchema, MessageSentBySchema, MessageFilterSchema, MESSAGE_ATTACHMENT_MAX_BYTES, MESSAGE_ATTACHMENT_ALLOWED_MIME, MessageCreateSchema, MessageReplySchema, MessageEditSchema, MessageHideSchema, MessageBulkIdsSchema, MessageBulkReadSchema, MESSAGE_BULK_MAX_IDS, } from './message-schemas.js';
9
9
  export * from './ai-schemas.js';
10
10
  export { validate, validateQuery, validateBody, } from './middleware.js';
11
- export { isValidEgressHost, checkPluginSpec, checkPluginConfig, pluginSpecRequiredFieldsProblem, PLUGIN_TYPES, STEP_PLUGIN_TYPES, PluginToolchainSchema, TOOLCHAIN_METADATA_PREFIX, toolchainMetadata, toolchainFromMetadata, PLUGIN_SOURCE_DIGEST_PATTERN, PLUGIN_COMPUTE_TYPES, PLUGIN_NAME_PATTERN, PLUGIN_VERSION_PATTERN, } from './plugin-spec-schema.js';
11
+ export { isValidEgressHost, checkPluginSpec, checkPluginConfig, pluginSpecRequiredFieldsProblem, PLUGIN_TYPES, STEP_PLUGIN_TYPES, PluginToolchainSchema, toolchainMetadata, toolchainFromMetadata, PLUGIN_SOURCE_DIGEST_PATTERN, PLUGIN_COMPUTE_TYPES, PLUGIN_NAME_PATTERN, PLUGIN_VERSION_PATTERN, } from './plugin-spec-schema.js';
12
12
  export { stripInlineMarkdown, readmeTitle, readmeFirstParagraph, firstSentence, detectCatalogMetadata, resolveCatalogMetadata, acceptAllCatalogMetadata, parseCatalogEdits, parseCatalogEditsPart, } from './plugin-catalog-detect.js';
13
13
  export { parseLabelArgs, parseDockerfile, OCI_LABELS, } from './dockerfile-static.js';
14
14
  export { isPluginTemplatableField, checkPluginTemplates, formatPluginTemplateIssue, PLUGIN_TEMPLATE_SCOPE_ROOTS, } from './plugin-template-contract.js';
@@ -16,4 +16,4 @@ export { lintPluginDockerfile, lintPluginSpec } from './plugin-lint.js';
16
16
  export * from './plugin-base-images.js';
17
17
  export { shannonEntropy, scanPluginSourceHeuristics, blockingHeuristics, HEURISTICS_MAX_FILE_BYTES, HEURISTICS_MAX_FINDINGS, } from './plugin-heuristics.js';
18
18
  export { findConfusableName } from './plugin-name-confusable.js';
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92YWxpZGF0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLGdCQUFnQixHQUNqQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsT0FBTyxFQUNMLDRCQUE0QixFQUM1Qiw0QkFBNEIsRUFDNUIsNEJBQTRCLEVBQzVCLHlCQUF5QixHQUMxQixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsT0FBTyxFQUNMLGVBQWUsRUFDZixpQkFBaUIsRUFDakIsb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2hCLHdCQUF3QixFQUV4QixzQkFBc0IsR0FDdkIsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQiw0QkFBNEIsRUFDNUIsK0JBQStCLEVBQy9CLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQixvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLG9CQUFvQixHQUNyQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsT0FBTyxFQUNMLFFBQVEsRUFDUixhQUFhLEVBQ2IsWUFBWSxHQUNiLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsaUJBQWlCLEVBQ2pCLCtCQUErQixFQUMvQixZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUVyQix5QkFBeUIsRUFDekIsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQiw0QkFBNEIsRUFDNUIsb0JBQW9CLEVBRXBCLG1CQUFtQixFQUNuQixzQkFBc0IsR0FHdkIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLFdBQVcsRUFDWCxvQkFBb0IsRUFDcEIsYUFBYSxFQUNiLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIsd0JBQXdCLEVBQ3hCLGlCQUFpQixFQUNqQixxQkFBcUIsR0FJdEIsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQ0wsY0FBYyxFQUNkLGVBQWUsRUFDZixVQUFVLEdBQ1gsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLG9CQUFvQixFQUNwQix5QkFBeUIsRUFDekIsMkJBQTJCLEdBRzVCLE1BQU0sK0JBQStCLENBQUM7QUFDdkMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGNBQWMsRUFBMEIsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLE9BQU8sRUFDTCxjQUFjLEVBQ2QsMEJBQTBCLEVBQzFCLGtCQUFrQixFQUtsQix5QkFBeUIsRUFDekIsdUJBQXVCLEdBQ3hCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuZXhwb3J0IHtcbiAgVmlzaWJpbGl0eVNjaGVtYSxcbiAgTUFYX1BBR0VfTElNSVQsXG4gIERFRkFVTFRfUEFHRV9MSU1JVCxcbiAgVVVJRFByZWZpeFNjaGVtYSxcbn0gZnJvbSAnLi9jb21tb24tc2NoZW1hcy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVsaW5lLXNjaGVtYXMuanMnO1xuZXhwb3J0IHtcbiAgUGlwZWxpbmVUZW1wbGF0ZUZpbHRlclNjaGVtYSxcbiAgUGlwZWxpbmVUZW1wbGF0ZUNyZWF0ZVNjaGVtYSxcbiAgUGlwZWxpbmVUZW1wbGF0ZVVwZGF0ZVNjaGVtYSxcbiAgSW5zdGFudGlhdGVUZW1wbGF0ZVNjaGVtYSxcbn0gZnJvbSAnLi9waXBlbGluZS10ZW1wbGF0ZS1zY2hlbWFzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vcGx1Z2luLXNjaGVtYXMuanMnO1xuZXhwb3J0IHtcbiAgaXNBbGxvd2VkU3BkeElkLFxuICBwcm9qZWN0VXJsUHJvYmxlbSxcbiAgdmFsaWRhdGVDYXRhbG9nRmllbGQsXG4gIGZpbmRDb250cmFjdEtleXMsXG4gIGNvbnRyYWN0S2V5c01lc3NhZ2UsXG4gIElDT05fS0VZX1BBVFRFUk4sXG4gIFBsdWdpbkNhdGFsb2dFZGl0c1NjaGVtYSxcbiAgdHlwZSBQbHVnaW5DYXRhbG9nRWRpdHMsXG4gIFBMVUdJTl9DT05UUkFDVF9GSUVMRFMsXG59IGZyb20gJy4vcGx1Z2luLWNhdGFsb2ctbWV0YWRhdGEuanMnO1xuZXhwb3J0IHtcbiAgaXNBbGxvd2VkQXR0YWNobWVudFR5cGUsXG4gIE1lc3NhZ2VUeXBlU2NoZW1hLFxuICBNZXNzYWdlUHJpb3JpdHlTY2hlbWEsXG4gIE1lc3NhZ2VTZW50QnlTY2hlbWEsXG4gIE1lc3NhZ2VGaWx0ZXJTY2hlbWEsXG4gIE1FU1NBR0VfQVRUQUNITUVOVF9NQVhfQllURVMsXG4gIE1FU1NBR0VfQVRUQUNITUVOVF9BTExPV0VEX01JTUUsXG4gIE1lc3NhZ2VDcmVhdGVTY2hlbWEsXG4gIE1lc3NhZ2VSZXBseVNjaGVtYSxcbiAgTWVzc2FnZUVkaXRTY2hlbWEsXG4gIE1lc3NhZ2VIaWRlU2NoZW1hLFxuICBNZXNzYWdlQnVsa0lkc1NjaGVtYSxcbiAgTWVzc2FnZUJ1bGtSZWFkU2NoZW1hLFxuICBNRVNTQUdFX0JVTEtfTUFYX0lEUyxcbn0gZnJvbSAnLi9tZXNzYWdlLXNjaGVtYXMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9haS1zY2hlbWFzLmpzJztcbmV4cG9ydCB7XG4gIHZhbGlkYXRlLFxuICB2YWxpZGF0ZVF1ZXJ5LFxuICB2YWxpZGF0ZUJvZHksXG59IGZyb20gJy4vbWlkZGxld2FyZS5qcyc7XG5leHBvcnQge1xuICBpc1ZhbGlkRWdyZXNzSG9zdCxcbiAgY2hlY2tQbHVnaW5TcGVjLFxuICBjaGVja1BsdWdpbkNvbmZpZyxcbiAgcGx1Z2luU3BlY1JlcXVpcmVkRmllbGRzUHJvYmxlbSxcbiAgUExVR0lOX1RZUEVTLFxuICBTVEVQX1BMVUdJTl9UWVBFUyxcbiAgUGx1Z2luVG9vbGNoYWluU2NoZW1hLFxuICB0eXBlIFBsdWdpblRvb2xjaGFpbixcbiAgVE9PTENIQUlOX01FVEFEQVRBX1BSRUZJWCxcbiAgdG9vbGNoYWluTWV0YWRhdGEsXG4gIHRvb2xjaGFpbkZyb21NZXRhZGF0YSxcbiAgUExVR0lOX1NPVVJDRV9ESUdFU1RfUEFUVEVSTixcbiAgUExVR0lOX0NPTVBVVEVfVFlQRVMsXG4gIHR5cGUgUGx1Z2luQnVpbGRUeXBlLFxuICBQTFVHSU5fTkFNRV9QQVRURVJOLFxuICBQTFVHSU5fVkVSU0lPTl9QQVRURVJOLFxuICB0eXBlIFBsdWdpblNwZWNJbnB1dCxcbiAgdHlwZSBQYWNrYWdlQ2hlY2ssXG59IGZyb20gJy4vcGx1Z2luLXNwZWMtc2NoZW1hLmpzJztcbmV4cG9ydCB7XG4gIHN0cmlwSW5saW5lTWFya2Rvd24sXG4gIHJlYWRtZVRpdGxlLFxuICByZWFkbWVGaXJzdFBhcmFncmFwaCxcbiAgZmlyc3RTZW50ZW5jZSxcbiAgZGV0ZWN0Q2F0YWxvZ01ldGFkYXRhLFxuICByZXNvbHZlQ2F0YWxvZ01ldGFkYXRhLFxuICBhY2NlcHRBbGxDYXRhbG9nTWV0YWRhdGEsXG4gIHBhcnNlQ2F0YWxvZ0VkaXRzLFxuICBwYXJzZUNhdGFsb2dFZGl0c1BhcnQsXG4gIHR5cGUgRGV0ZWN0ZWRGaWVsZCxcbiAgdHlwZSBDYXRhbG9nU3BlY0ZpZWxkcyxcbiAgdHlwZSBSZXNvbHZlZENhdGFsb2csXG59IGZyb20gJy4vcGx1Z2luLWNhdGFsb2ctZGV0ZWN0LmpzJztcbmV4cG9ydCB7XG4gIHBhcnNlTGFiZWxBcmdzLFxuICBwYXJzZURvY2tlcmZpbGUsXG4gIE9DSV9MQUJFTFMsXG59IGZyb20gJy4vZG9ja2VyZmlsZS1zdGF0aWMuanMnO1xuZXhwb3J0IHtcbiAgaXNQbHVnaW5UZW1wbGF0YWJsZUZpZWxkLFxuICBjaGVja1BsdWdpblRlbXBsYXRlcyxcbiAgZm9ybWF0UGx1Z2luVGVtcGxhdGVJc3N1ZSxcbiAgUExVR0lOX1RFTVBMQVRFX1NDT1BFX1JPT1RTLFxuICB0eXBlIFBsdWdpblRlbXBsYXRlRW5naW5lLFxuICB0eXBlIFBsdWdpblRlbXBsYXRlSXNzdWUsXG59IGZyb20gJy4vcGx1Z2luLXRlbXBsYXRlLWNvbnRyYWN0LmpzJztcbmV4cG9ydCB7IGxpbnRQbHVnaW5Eb2NrZXJmaWxlLCBsaW50UGx1Z2luU3BlYywgdHlwZSBQbHVnaW5MaW50RmluZGluZyB9IGZyb20gJy4vcGx1Z2luLWxpbnQuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9wbHVnaW4tYmFzZS1pbWFnZXMuanMnO1xuZXhwb3J0IHtcbiAgc2hhbm5vbkVudHJvcHksXG4gIHNjYW5QbHVnaW5Tb3VyY2VIZXVyaXN0aWNzLFxuICBibG9ja2luZ0hldXJpc3RpY3MsXG4gIHR5cGUgSGV1cmlzdGljU2V2ZXJpdHksXG4gIHR5cGUgSGV1cmlzdGljRmluZGluZyxcbiAgdHlwZSBIZXVyaXN0aWNzUmVwb3J0LFxuICB0eXBlIEhldXJpc3RpY3NJbnB1dEZpbGUsXG4gIEhFVVJJU1RJQ1NfTUFYX0ZJTEVfQllURVMsXG4gIEhFVVJJU1RJQ1NfTUFYX0ZJTkRJTkdTLFxufSBmcm9tICcuL3BsdWdpbi1oZXVyaXN0aWNzLmpzJztcbmV4cG9ydCB7IGZpbmRDb25mdXNhYmxlTmFtZSB9IGZyb20gJy4vcGx1Z2luLW5hbWUtY29uZnVzYWJsZS5qcyc7XG4iXX0=
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92YWxpZGF0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLGdCQUFnQixHQUNqQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsT0FBTyxFQUNMLDRCQUE0QixFQUM1Qiw0QkFBNEIsRUFDNUIsNEJBQTRCLEVBQzVCLHlCQUF5QixHQUMxQixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsT0FBTyxFQUNMLGVBQWUsRUFDZixpQkFBaUIsRUFDakIsb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2hCLHdCQUF3QixFQUV4QixzQkFBc0IsR0FDdkIsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQiw0QkFBNEIsRUFDNUIsK0JBQStCLEVBQy9CLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQixvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLG9CQUFvQixHQUNyQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsT0FBTyxFQUNMLFFBQVEsRUFDUixhQUFhLEVBQ2IsWUFBWSxHQUNiLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsaUJBQWlCLEVBQ2pCLCtCQUErQixFQUMvQixZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUVyQixpQkFBaUIsRUFDakIscUJBQXFCLEVBQ3JCLDRCQUE0QixFQUM1QixvQkFBb0IsRUFFcEIsbUJBQW1CLEVBQ25CLHNCQUFzQixHQUd2QixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsV0FBVyxFQUNYLG9CQUFvQixFQUNwQixhQUFhLEVBQ2IscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0Qix3QkFBd0IsRUFDeEIsaUJBQWlCLEVBQ2pCLHFCQUFxQixHQUl0QixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFDTCxjQUFjLEVBQ2QsZUFBZSxFQUNmLFVBQVUsR0FDWCxNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsb0JBQW9CLEVBQ3BCLHlCQUF5QixFQUN6QiwyQkFBMkIsR0FHNUIsTUFBTSwrQkFBK0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsY0FBYyxFQUEwQixNQUFNLGtCQUFrQixDQUFDO0FBQ2hHLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsT0FBTyxFQUNMLGNBQWMsRUFDZCwwQkFBMEIsRUFDMUIsa0JBQWtCLEVBS2xCLHlCQUF5QixFQUN6Qix1QkFBdUIsR0FDeEIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5leHBvcnQge1xuICBWaXNpYmlsaXR5U2NoZW1hLFxuICBNQVhfUEFHRV9MSU1JVCxcbiAgREVGQVVMVF9QQUdFX0xJTUlULFxuICBVVUlEUHJlZml4U2NoZW1hLFxufSBmcm9tICcuL2NvbW1vbi1zY2hlbWFzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZWxpbmUtc2NoZW1hcy5qcyc7XG5leHBvcnQge1xuICBQaXBlbGluZVRlbXBsYXRlRmlsdGVyU2NoZW1hLFxuICBQaXBlbGluZVRlbXBsYXRlQ3JlYXRlU2NoZW1hLFxuICBQaXBlbGluZVRlbXBsYXRlVXBkYXRlU2NoZW1hLFxuICBJbnN0YW50aWF0ZVRlbXBsYXRlU2NoZW1hLFxufSBmcm9tICcuL3BpcGVsaW5lLXRlbXBsYXRlLXNjaGVtYXMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9wbHVnaW4tc2NoZW1hcy5qcyc7XG5leHBvcnQge1xuICBpc0FsbG93ZWRTcGR4SWQsXG4gIHByb2plY3RVcmxQcm9ibGVtLFxuICB2YWxpZGF0ZUNhdGFsb2dGaWVsZCxcbiAgZmluZENvbnRyYWN0S2V5cyxcbiAgY29udHJhY3RLZXlzTWVzc2FnZSxcbiAgSUNPTl9LRVlfUEFUVEVSTixcbiAgUGx1Z2luQ2F0YWxvZ0VkaXRzU2NoZW1hLFxuICB0eXBlIFBsdWdpbkNhdGFsb2dFZGl0cyxcbiAgUExVR0lOX0NPTlRSQUNUX0ZJRUxEUyxcbn0gZnJvbSAnLi9wbHVnaW4tY2F0YWxvZy1tZXRhZGF0YS5qcyc7XG5leHBvcnQge1xuICBpc0FsbG93ZWRBdHRhY2htZW50VHlwZSxcbiAgTWVzc2FnZVR5cGVTY2hlbWEsXG4gIE1lc3NhZ2VQcmlvcml0eVNjaGVtYSxcbiAgTWVzc2FnZVNlbnRCeVNjaGVtYSxcbiAgTWVzc2FnZUZpbHRlclNjaGVtYSxcbiAgTUVTU0FHRV9BVFRBQ0hNRU5UX01BWF9CWVRFUyxcbiAgTUVTU0FHRV9BVFRBQ0hNRU5UX0FMTE9XRURfTUlNRSxcbiAgTWVzc2FnZUNyZWF0ZVNjaGVtYSxcbiAgTWVzc2FnZVJlcGx5U2NoZW1hLFxuICBNZXNzYWdlRWRpdFNjaGVtYSxcbiAgTWVzc2FnZUhpZGVTY2hlbWEsXG4gIE1lc3NhZ2VCdWxrSWRzU2NoZW1hLFxuICBNZXNzYWdlQnVsa1JlYWRTY2hlbWEsXG4gIE1FU1NBR0VfQlVMS19NQVhfSURTLFxufSBmcm9tICcuL21lc3NhZ2Utc2NoZW1hcy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2FpLXNjaGVtYXMuanMnO1xuZXhwb3J0IHtcbiAgdmFsaWRhdGUsXG4gIHZhbGlkYXRlUXVlcnksXG4gIHZhbGlkYXRlQm9keSxcbn0gZnJvbSAnLi9taWRkbGV3YXJlLmpzJztcbmV4cG9ydCB7XG4gIGlzVmFsaWRFZ3Jlc3NIb3N0LFxuICBjaGVja1BsdWdpblNwZWMsXG4gIGNoZWNrUGx1Z2luQ29uZmlnLFxuICBwbHVnaW5TcGVjUmVxdWlyZWRGaWVsZHNQcm9ibGVtLFxuICBQTFVHSU5fVFlQRVMsXG4gIFNURVBfUExVR0lOX1RZUEVTLFxuICBQbHVnaW5Ub29sY2hhaW5TY2hlbWEsXG4gIHR5cGUgUGx1Z2luVG9vbGNoYWluLFxuICB0b29sY2hhaW5NZXRhZGF0YSxcbiAgdG9vbGNoYWluRnJvbU1ldGFkYXRhLFxuICBQTFVHSU5fU09VUkNFX0RJR0VTVF9QQVRURVJOLFxuICBQTFVHSU5fQ09NUFVURV9UWVBFUyxcbiAgdHlwZSBQbHVnaW5CdWlsZFR5cGUsXG4gIFBMVUdJTl9OQU1FX1BBVFRFUk4sXG4gIFBMVUdJTl9WRVJTSU9OX1BBVFRFUk4sXG4gIHR5cGUgUGx1Z2luU3BlY0lucHV0LFxuICB0eXBlIFBhY2thZ2VDaGVjayxcbn0gZnJvbSAnLi9wbHVnaW4tc3BlYy1zY2hlbWEuanMnO1xuZXhwb3J0IHtcbiAgc3RyaXBJbmxpbmVNYXJrZG93bixcbiAgcmVhZG1lVGl0bGUsXG4gIHJlYWRtZUZpcnN0UGFyYWdyYXBoLFxuICBmaXJzdFNlbnRlbmNlLFxuICBkZXRlY3RDYXRhbG9nTWV0YWRhdGEsXG4gIHJlc29sdmVDYXRhbG9nTWV0YWRhdGEsXG4gIGFjY2VwdEFsbENhdGFsb2dNZXRhZGF0YSxcbiAgcGFyc2VDYXRhbG9nRWRpdHMsXG4gIHBhcnNlQ2F0YWxvZ0VkaXRzUGFydCxcbiAgdHlwZSBEZXRlY3RlZEZpZWxkLFxuICB0eXBlIENhdGFsb2dTcGVjRmllbGRzLFxuICB0eXBlIFJlc29sdmVkQ2F0YWxvZyxcbn0gZnJvbSAnLi9wbHVnaW4tY2F0YWxvZy1kZXRlY3QuanMnO1xuZXhwb3J0IHtcbiAgcGFyc2VMYWJlbEFyZ3MsXG4gIHBhcnNlRG9ja2VyZmlsZSxcbiAgT0NJX0xBQkVMUyxcbn0gZnJvbSAnLi9kb2NrZXJmaWxlLXN0YXRpYy5qcyc7XG5leHBvcnQge1xuICBpc1BsdWdpblRlbXBsYXRhYmxlRmllbGQsXG4gIGNoZWNrUGx1Z2luVGVtcGxhdGVzLFxuICBmb3JtYXRQbHVnaW5UZW1wbGF0ZUlzc3VlLFxuICBQTFVHSU5fVEVNUExBVEVfU0NPUEVfUk9PVFMsXG4gIHR5cGUgUGx1Z2luVGVtcGxhdGVFbmdpbmUsXG4gIHR5cGUgUGx1Z2luVGVtcGxhdGVJc3N1ZSxcbn0gZnJvbSAnLi9wbHVnaW4tdGVtcGxhdGUtY29udHJhY3QuanMnO1xuZXhwb3J0IHsgbGludFBsdWdpbkRvY2tlcmZpbGUsIGxpbnRQbHVnaW5TcGVjLCB0eXBlIFBsdWdpbkxpbnRGaW5kaW5nIH0gZnJvbSAnLi9wbHVnaW4tbGludC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3BsdWdpbi1iYXNlLWltYWdlcy5qcyc7XG5leHBvcnQge1xuICBzaGFubm9uRW50cm9weSxcbiAgc2NhblBsdWdpblNvdXJjZUhldXJpc3RpY3MsXG4gIGJsb2NraW5nSGV1cmlzdGljcyxcbiAgdHlwZSBIZXVyaXN0aWNTZXZlcml0eSxcbiAgdHlwZSBIZXVyaXN0aWNGaW5kaW5nLFxuICB0eXBlIEhldXJpc3RpY3NSZXBvcnQsXG4gIHR5cGUgSGV1cmlzdGljc0lucHV0RmlsZSxcbiAgSEVVUklTVElDU19NQVhfRklMRV9CWVRFUyxcbiAgSEVVUklTVElDU19NQVhfRklORElOR1MsXG59IGZyb20gJy4vcGx1Z2luLWhldXJpc3RpY3MuanMnO1xuZXhwb3J0IHsgZmluZENvbmZ1c2FibGVOYW1lIH0gZnJvbSAnLi9wbHVnaW4tbmFtZS1jb25mdXNhYmxlLmpzJztcbiJdfQ==
@@ -44,15 +44,6 @@ export declare const PluginToolchainSchema: z.ZodObject<{
44
44
  node: z.ZodString;
45
45
  }, z.core.$strict>;
46
46
  export type PluginToolchain = z.infer<typeof PluginToolchainSchema>;
47
- /**
48
- * Where a managed build image's `toolchain` is persisted: its plugin row's
49
- * `metadata`, one flat `toolchain.<field>` key per tool (the column is a flat
50
- * string map, and a `BuildImage` spec may carry no step `metadata` of its own,
51
- * so the keys never collide). Written at upload by {@link toolchainMetadata},
52
- * read by {@link toolchainFromMetadata} — the platform-default metadata guard
53
- * and the resolver both go through it.
54
- */
55
- export declare const TOOLCHAIN_METADATA_PREFIX = "toolchain.";
56
47
  /** The flat `metadata` entries that persist `toolchain` on a build image's row. */
57
48
  export declare function toolchainMetadata(toolchain: PluginToolchain): Record<string, string>;
58
49
  /**
@@ -12,7 +12,7 @@
12
12
  */
13
13
  import { z } from 'zod';
14
14
  import { IconKeySchema, PLUGIN_CATALOG_FIELD_SCHEMAS, ProjectUrlSchema, isAllowedSpdxId, } from './plugin-catalog-metadata.js';
15
- import { PLUGIN_CHANGELOG_MAX_BYTES, isManagedToolchainPlugin } from '../types/plugin-catalog.js';
15
+ import { PLUGIN_CHANGELOG_MAX_BYTES, TOOLCHAIN_METADATA_PREFIX, isManagedToolchainPlugin } from '../types/plugin-catalog.js';
16
16
  // -----------------------------------------------------------------------------
17
17
  // Vocabularies
18
18
  // -----------------------------------------------------------------------------
@@ -66,15 +66,6 @@ export const PluginToolchainSchema = z.object({
66
66
  pnpm: exactSemver,
67
67
  node: exactSemver,
68
68
  }).strict();
69
- /**
70
- * Where a managed build image's `toolchain` is persisted: its plugin row's
71
- * `metadata`, one flat `toolchain.<field>` key per tool (the column is a flat
72
- * string map, and a `BuildImage` spec may carry no step `metadata` of its own,
73
- * so the keys never collide). Written at upload by {@link toolchainMetadata},
74
- * read by {@link toolchainFromMetadata} — the platform-default metadata guard
75
- * and the resolver both go through it.
76
- */
77
- export const TOOLCHAIN_METADATA_PREFIX = 'toolchain.';
78
69
  /** The flat `metadata` entries that persist `toolchain` on a build image's row. */
79
70
  export function toolchainMetadata(toolchain) {
80
71
  return Object.fromEntries(Object.entries(toolchain).map(([k, v]) => [`${TOOLCHAIN_METADATA_PREFIX}${k}`, v]));
@@ -247,4 +238,4 @@ export function pluginSpecRequiredFieldsProblem(spec) {
247
238
  }
248
239
  return null;
249
240
  }
250
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLXNwZWMtc2NoZW1hLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmFsaWRhdGlvbi9wbHVnaW4tc3BlYy1zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7O0dBU0c7QUFFSCxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRXhCLE9BQU8sRUFDTCxhQUFhLEVBQUUsNEJBQTRCLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxHQUMvRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWxHLGdGQUFnRjtBQUNoRixlQUFlO0FBQ2YsZ0ZBQWdGO0FBRWhGOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsZUFBZSxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxZQUFZLENBQVUsQ0FBQztBQUN4RyxpRkFBaUY7QUFDakYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxlQUFlLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixDQUFVLENBQUM7QUFDL0YsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQVUsQ0FBQztBQUN0RixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFVLENBQUM7QUFDNUUsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLGVBQWUsQ0FBVSxDQUFDO0FBR3hGLDBEQUEwRDtBQUMxRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxjQUFjLENBQUM7QUFDbEQsaUZBQWlGO0FBQ2pGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLHNEQUFz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QUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ3ZFLE9BQU8sd0RBQXdELENBQUM7SUFDbEUsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFRoZSBwbHVnaW4gUEFDS0FHRSBzY2hlbWFzOiBgcGx1Z2luLXNwZWMueWFtbGAgYW5kIGBjb25maWcueWFtbGAsIGV4YWN0bHkgYXNcbiAqIHRoZSBwbHVnaW4gc2VydmljZSB2YWxpZGF0ZXMgYW4gdXBsb2FkLiBTaGFyZWQgZnJvbSBhcGktY29yZSBzbyB0aGUgdXBsb2FkXG4gKiBwYXRoIChhcGkvcGx1Z2luKSBhbmQgdGhlIENMSSAoYHBpcGVsaW5lLW1hbmFnZXIgcGx1Z2luIHZhbGlkYXRlYCAvXG4gKiBgcGx1Z2luIHB1Ymxpc2hgKSBhcHBseSBPTkUgc2NoZW1hIGFuZCBjYW4ndCBkcmlmdC5cbiAqXG4gKiBQdXJlOiBubyBZQU1MIHBhcnNpbmcsIG5vIGZpbGVzeXN0ZW0uIENhbGxlcnMgcGFyc2UgKHdpdGggdGhlaXIgb3duIHNpemUgYW5kXG4gKiBhbGlhcyBib3VuZHMpIGFuZCBoYW5kIHRoZSByZXN1bHRpbmcgb2JqZWN0IHRvIHtAbGluayBjaGVja1BsdWdpblNwZWN9IC9cbiAqIHtAbGluayBjaGVja1BsdWdpbkNvbmZpZ30uXG4gKi9cblxuaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5cbmltcG9ydCB7XG4gIEljb25LZXlTY2hlbWEsIFBMVUdJTl9DQVRBTE9HX0ZJRUxEX1NDSEVNQVMsIFByb2plY3RVcmxTY2hlbWEsIGlzQWxsb3dlZFNwZHhJZCxcbn0gZnJvbSAnLi9wbHVnaW4tY2F0YWxvZy1tZXRhZGF0YS5qcyc7XG5pbXBvcnQgeyBQTFVHSU5fQ0hBTkdFTE9HX01BWF9CWVRFUywgaXNNYW5hZ2VkVG9vbGNoYWluUGx1Z2luIH0gZnJvbSAnLi4vdHlwZXMvcGx1Z2luLWNhdGFsb2cuanMnO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVm9jYWJ1bGFyaWVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIGBCdWlsZEltYWdlYCBpcyB0aGUgbWFuYWdlZCB0b29sY2hhaW4ncyBidWlsZCBpbWFnZSAoYHBpcGVsaW5lLWJvb3RzdHJhcGAsXG4gKiBkb2NzL3BsYW5zL2Jvb3RzdHJhcC1pbWFnZS12ZXJzaW9uaW5nLm1kIMKnMSk6IGEgcHJlYnVpbHQgaW1hZ2Ugd2l0aCBub1xuICogY29tbWFuZHMsIG5ldmVyIGEgcGlwZWxpbmUgc3RlcC4ge0BsaW5rIFNURVBfUExVR0lOX1RZUEVTfSBpcyB0aGUgc3Vic2V0IGFcbiAqIHN0ZXAgKG9yIGEgZ2VuZXJhdG9yKSBtYXkgdXNlLlxuICovXG5leHBvcnQgY29uc3QgUExVR0lOX1RZUEVTID0gWydDb2RlQnVpbGRTdGVwJywgJ1NoZWxsU3RlcCcsICdNYW51YWxBcHByb3ZhbFN0ZXAnLCAnQnVpbGRJbWFnZSddIGFzIGNvbnN0O1xuLyoqIFRoZSBwbHVnaW4gdHlwZXMgYSBwaXBlbGluZSBzdGVwIGNhbiB1c2Ug4oCUIGV2ZXJ5IHR5cGUgZXhjZXB0IGBCdWlsZEltYWdlYC4gKi9cbmV4cG9ydCBjb25zdCBTVEVQX1BMVUdJTl9UWVBFUyA9IFsnQ29kZUJ1aWxkU3RlcCcsICdTaGVsbFN0ZXAnLCAnTWFudWFsQXBwcm92YWxTdGVwJ10gYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgUExVR0lOX0NPTVBVVEVfVFlQRVMgPSBbJ1NNQUxMJywgJ01FRElVTScsICdMQVJHRScsICdYMl9MQVJHRSddIGFzIGNvbnN0O1xuZXhwb3J0IGNvbnN0IFBMVUdJTl9GQUlMVVJFX0JFSEFWSU9SUyA9IFsnZmFpbCcsICd3YXJuJywgJ2lnbm9yZSddIGFzIGNvbnN0O1xuZXhwb3J0IGNvbnN0IFBMVUdJTl9CVUlMRF9UWVBFUyA9IFsnYnVpbGRfaW1hZ2UnLCAncHJlYnVpbHQnLCAnbWV0YWRhdGFfb25seSddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUGx1Z2luQnVpbGRUeXBlID0gdHlwZW9mIFBMVUdJTl9CVUlMRF9UWVBFU1tudW1iZXJdO1xuXG4vKiogUGx1Z2luIG5hbWU6IGxvd2VyY2FzZSBsZXR0ZXJzLCBkaWdpdHMgYW5kIGh5cGhlbnMuICovXG5leHBvcnQgY29uc3QgUExVR0lOX05BTUVfUEFUVEVSTiA9IC9eW2EtejAtOS1dKyQvO1xuLyoqIFBsdWdpbiB2ZXJzaW9uOiBzZW12ZXIsIHdpdGggb3B0aW9uYWwgYC1wcmVyZWxlYXNlYCBhbmQgYCtidWlsZGAgbWV0YWRhdGEuICovXG5leHBvcnQgY29uc3QgUExVR0lOX1ZFUlNJT05fUEFUVEVSTiA9IC9eXFxkK1xcLlxcZCtcXC5cXGQrKC1bYS16QS1aMC05Li1dKyk/KFxcK1thLXpBLVowLTkuLV0rKT8kLztcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIG5ldHdvcmsuZWdyZXNzIChzcGVjLW9ubHkgdHJ1c3QgbWV0YWRhdGEpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKiogTWF4IGRlY2xhcmVkIGBuZXR3b3JrLmVncmVzc2AgaG9zdG5hbWVzLiAqL1xuZXhwb3J0IGNvbnN0IEVHUkVTU19NQVhfSE9TVFMgPSA1MDtcblxuLyoqXG4gKiBBIGJhcmUgRE5TIGhvc3RuYW1lLCBvcHRpb25hbGx5IHdpdGggT05FIGxlYWRpbmcgYCouYCB3aWxkY2FyZCBsYWJlbC4gTm9cbiAqIHNjaGVtZSwgcG9ydCwgcGF0aCwgdXNlcmluZm8gb3IgSVAgbGl0ZXJhbCDigJQgYSBkZWNsYXJlZCBlZ3Jlc3MgdGFyZ2V0IGlzIGFcbiAqIG5hbWUgdGhlIHJldmlld2VyIGNhbiByZWFkLlxuICovXG5jb25zdCBFR1JFU1NfSE9TVF9QQVRURVJOID0gL14oPzpcXCpcXC4pPyg/OlthLXowLTldKD86W2EtejAtOS1dezAsNjF9W2EtejAtOV0pP1xcLikrW2Etel1bYS16MC05LV17MCw2MX1bYS16MC05XSQvO1xuXG4vKiogVHJ1ZSB3aGVuIGBob3N0YCBpcyBhbiBhY2NlcHRhYmxlIGBuZXR3b3JrLmVncmVzc2AgZW50cnkuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEVncmVzc0hvc3QoaG9zdDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBob3N0Lmxlbmd0aCA8PSAyNTMgJiYgRUdSRVNTX0hPU1RfUEFUVEVSTi50ZXN0KGhvc3QpO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gTWFuYWdlZCB0b29sY2hhaW4gbWV0YWRhdGEgKEJ1aWxkSW1hZ2Ugc3BlY3MpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKiogQW4gRVhBQ1Qgc2VtdmVyIChubyByYW5nZSk6IGAxLjIuM2AsIG9wdGlvbmFsbHkgYC1wcmVgIC8gYCtidWlsZGAuICovXG5jb25zdCBFWEFDVF9TRU1WRVJfUEFUVEVSTiA9IC9eXFxkK1xcLlxcZCtcXC5cXGQrKC1bMC05QS1aYS16Li1dKyk/KFxcK1swLTlBLVphLXouLV0rKT8kLztcbmNvbnN0IGV4YWN0U2VtdmVyID0gei5zdHJpbmcoKS5yZWdleChFWEFDVF9TRU1WRVJfUEFUVEVSTiwgeyBtZXNzYWdlOiAnbXVzdCBiZSBhbiBleGFjdCBzZW12ZXIgdmVyc2lvbiAoZS5nLiAxLjIuMyknIH0pO1xuXG4vKipcbiAqIFRoZSB0b29sIHZlcnNpb25zIGEgbWFuYWdlZCBidWlsZCBpbWFnZSBjYXJyaWVzLCB3cml0dGVuIGJ5XG4gKiBgc3luYy1pbWFnZS10YWdzLnNoYCBmcm9tIHRoZSBEb2NrZXJmaWxlIGBBUkdgcy4gRXZlcnkgZmllbGQgaXMgcmVxdWlyZWQgYW5kXG4gKiBleGFjdDogdGhpcyBpcyB3aGF0IHRoZSByZWxlYXNlIElTLCBub3Qgd2hhdCBpdCBhY2NlcHRzLlxuICovXG5leHBvcnQgY29uc3QgUGx1Z2luVG9vbGNoYWluU2NoZW1hID0gei5vYmplY3Qoe1xuICBwaXBlbGluZU1hbmFnZXI6IGV4YWN0U2VtdmVyLFxuICBhd3NDZGs6IGV4YWN0U2VtdmVyLFxuICBjZGtBc3NldHM6IGV4YWN0U2VtdmVyLFxuICBlc2J1aWxkOiBleGFjdFNlbXZlcixcbiAgcG5wbTogZXhhY3RTZW12ZXIsXG4gIG5vZGU6IGV4YWN0U2VtdmVyLFxufSkuc3RyaWN0KCk7XG5leHBvcnQgdHlwZSBQbHVnaW5Ub29sY2hhaW4gPSB6LmluZmVyPHR5cGVvZiBQbHVnaW5Ub29sY2hhaW5TY2hlbWE+O1xuXG4vKipcbiAqIFdoZXJlIGEgbWFuYWdlZCBidWlsZCBpbWFnZSdzIGB0b29sY2hhaW5gIGlzIHBlcnNpc3RlZDogaXRzIHBsdWdpbiByb3cnc1xuICogYG1ldGFkYXRhYCwgb25lIGZsYXQgYHRvb2xjaGFpbi48ZmllbGQ+YCBrZXkgcGVyIHRvb2wgKHRoZSBjb2x1bW4gaXMgYSBmbGF0XG4gKiBzdHJpbmcgbWFwLCBhbmQgYSBgQnVpbGRJbWFnZWAgc3BlYyBtYXkgY2Fycnkgbm8gc3RlcCBgbWV0YWRhdGFgIG9mIGl0cyBvd24sXG4gKiBzbyB0aGUga2V5cyBuZXZlciBjb2xsaWRlKS4gV3JpdHRlbiBhdCB1cGxvYWQgYnkge0BsaW5rIHRvb2xjaGFpbk1ldGFkYXRhfSxcbiAqIHJlYWQgYnkge0BsaW5rIHRvb2xjaGFpbkZyb21NZXRhZGF0YX0g4oCUIHRoZSBwbGF0Zm9ybS1kZWZhdWx0IG1ldGFkYXRhIGd1YXJkXG4gKiBhbmQgdGhlIHJlc29sdmVyIGJvdGggZ28gdGhyb3VnaCBpdC5cbiAqL1xuZXhwb3J0IGNvbnN0IFRPT0xDSEFJTl9NRVRBREFUQV9QUkVGSVggPSAndG9vbGNoYWluLic7XG5cbi8qKiBUaGUgZmxhdCBgbWV0YWRhdGFgIGVudHJpZXMgdGhhdCBwZXJzaXN0IGB0b29sY2hhaW5gIG9uIGEgYnVpbGQgaW1hZ2UncyByb3cuICovXG5leHBvcnQgZnVuY3Rpb24gdG9vbGNoYWluTWV0YWRhdGEodG9vbGNoYWluOiBQbHVnaW5Ub29sY2hhaW4pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyh0b29sY2hhaW4pLm1hcCgoW2ssIHZdKSA9PiBbYCR7VE9PTENIQUlOX01FVEFEQVRBX1BSRUZJWH0ke2t9YCwgdl0pKTtcbn1cblxuLyoqXG4gKiBUaGUgYHRvb2xjaGFpbmAgYSBidWlsZCBpbWFnZSdzIHJvdyBjYXJyaWVzLCBvciBgbnVsbGAgd2hlbiBpdHMgYG1ldGFkYXRhYFxuICogaG9sZHMgbm8gY29tcGxldGUsIHZhbGlkIG9uZSAoZXZlcnkgZmllbGQgcmVxdWlyZWQgYW5kIGV4YWN0IOKAlCB0aGUgc2FtZVxuICogc2NoZW1hIHRoZSB1cGxvYWQgdmFsaWRhdGVkKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvb2xjaGFpbkZyb21NZXRhZGF0YShtZXRhZGF0YTogdW5rbm93bik6IFBsdWdpblRvb2xjaGFpbiB8IG51bGwge1xuICBpZiAoIW1ldGFkYXRhIHx8IHR5cGVvZiBtZXRhZGF0YSAhPT0gJ29iamVjdCcpIHJldHVybiBudWxsO1xuICBjb25zdCBmaWVsZHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKG1ldGFkYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSkge1xuICAgIGlmIChrLnN0YXJ0c1dpdGgoVE9PTENIQUlOX01FVEFEQVRBX1BSRUZJWCkpIGZpZWxkc1trLnNsaWNlKFRPT0xDSEFJTl9NRVRBREFUQV9QUkVGSVgubGVuZ3RoKV0gPSB2O1xuICB9XG4gIGNvbnN0IHBhcnNlZCA9IFBsdWdpblRvb2xjaGFpblNjaGVtYS5zYWZlUGFyc2UoZmllbGRzKTtcbiAgcmV0dXJuIHBhcnNlZC5zdWNjZXNzID8gcGFyc2VkLmRhdGEgOiBudWxsO1xufVxuXG4vKiogQSBidWlsZC1pbnB1dCBoYXNoOiA2NCBsb3dlcmNhc2UgaGV4IGNoYXJhY3RlcnMgKHNoYTI1NiksIG9wdGlvbmFsbHkgYHNoYTI1NjpgLXByZWZpeGVkLiAqL1xuZXhwb3J0IGNvbnN0IFBMVUdJTl9TT1VSQ0VfRElHRVNUX1BBVFRFUk4gPSAvXihzaGEyNTY6KT9bYS1mMC05XXs2NH0kLztcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIGNvbmZpZy55YW1sXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgY29uc3QgUGx1Z2luQ29uZmlnU2NoZW1hID0gei5vYmplY3Qoe1xuICBwbHVnaW5TcGVjOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGRvY2tlcmZpbGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgYnVpbGRUeXBlOiB6LmVudW0oUExVR0lOX0JVSUxEX1RZUEVTKS5vcHRpb25hbCgpLFxuICAvLyBEZXRlcm1pbmlzdGljIGJ1aWxkIHRhZyB3cml0dGVuIGJ5IGJ1aWxkLXBsdWdpbi1pbWFnZXMuc2hcbiAgLy8gKGBwLTxuYW1lPi08c2hhMjU2OjEyPmApLiBJbmZvcm1hdGlvbmFsIG9ubHkgb24gdGhlIHVwbG9hZCBwYXRoIOKAlFxuICAvLyB0aGUgcGxhdGZvcm0gZG9lc24ndCBhY3Qgb24gaXQsIGJ1dCBpdCBsaXZlcyBpbiB0aGUgc2FtZSBjb25maWdcbiAgLy8gZmlsZSBhcyB0aGUgcmVzdCBvZiB0aGUgYnVpbGQgbWV0YWRhdGEgc28gcmUtcnVucyBjYW4gc2hvcnQtY2lyY3VpdFxuICAvLyB1bmNoYW5nZWQgcGx1Z2lucyB3aXRob3V0IG5lZWRpbmcgYSBzZXBhcmF0ZSAuaW1hZ2UtaGFzaCBzaWRlY2FyLlxuICBpbWFnZVRhZzogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxufSkuc3RyaWN0KClcbiAgLnJlZmluZShkID0+ICEoZC5idWlsZFR5cGUgPT09ICdwcmVidWlsdCcgJiYgZC5kb2NrZXJmaWxlKSwge1xuICAgIG1lc3NhZ2U6ICdkb2NrZXJmaWxlIGlzIG5vdCBhbGxvd2VkIHdoZW4gYnVpbGRUeXBlIGlzIHByZWJ1aWx0JyxcbiAgfSlcbiAgLnJlZmluZShkID0+ICEoZC5idWlsZFR5cGUgPT09ICdtZXRhZGF0YV9vbmx5JyAmJiBkLmRvY2tlcmZpbGUpLCB7XG4gICAgbWVzc2FnZTogJ2RvY2tlcmZpbGUgaXMgbm90IGFsbG93ZWQgd2hlbiBidWlsZFR5cGUgaXMgbWV0YWRhdGFfb25seScsXG4gIH0pO1xuZXhwb3J0IHR5cGUgUGx1Z2luQ29uZmlnSW5wdXQgPSB6LmluZmVyPHR5cGVvZiBQbHVnaW5Db25maWdTY2hlbWE+O1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gcGx1Z2luLXNwZWMueWFtbFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8gbmFtZS92ZXJzaW9uL2NvbW1hbmRzIGFyZSB0aGUgcmVxdWlyZWQtZmllbGQgY29udHJhY3QsIGJ1dCB0aGV5J3JlIGNoZWNrZWQgYnlcbi8vIHtAbGluayBwbHVnaW5TcGVjUmVxdWlyZWRGaWVsZHNQcm9ibGVtfSAodGhlIHN0YWJsZSBcIm5hbWUsIHZlcnNpb24sIGFuZFxuLy8gY29tbWFuZHMgYXJlIHJlcXVpcmVkXCIgbWVzc2FnZSBhbmQgdGhlIE1hbnVhbEFwcHJvdmFsU3RlcCBjYXJ2ZS1vdXQpLiBIZXJlXG4vLyB0aGV5J3JlIG9wdGlvbmFsIHN0cmluZ3M7IHRoZSBzY2hlbWEncyBqb2IgaXMgdG8gcmVqZWN0IG1hbGZvcm1lZCAqdHlwZXMqIG9uXG4vLyB0aGUgZmllbGRzIHRoYXQgZmxvdyBkb3duc3RyZWFtIHVuY2hlY2tlZC5cbmV4cG9ydCBjb25zdCBQbHVnaW5TcGVjU2NoZW1hID0gei5vYmplY3Qoe1xuICBuYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGtleXdvcmRzOiB6LmFycmF5KHouc3RyaW5nKCkpLm9wdGlvbmFsKCksXG4gIGNhdGVnb3J5OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHZlcnNpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgcGx1Z2luVHlwZTogei5lbnVtKFBMVUdJTl9UWVBFUykub3B0aW9uYWwoKSxcbiAgY29tcHV0ZVR5cGU6IHouZW51bShQTFVHSU5fQ09NUFVURV9UWVBFUykub3B0aW9uYWwoKSxcbiAgLy8gPj0gMCBtaW51dGVzOiBNYW51YWxBcHByb3ZhbFN0ZXAgc3BlY3MgbGVnaXRpbWF0ZWx5IGRlY2xhcmUgYHRpbWVvdXQ6IDBgLlxuICB0aW1lb3V0OiB6Lm51bWJlcigpLmludCgpLm5vbm5lZ2F0aXZlKCkub3B0aW9uYWwoKSxcbiAgZmFpbHVyZUJlaGF2aW9yOiB6LmVudW0oUExVR0lOX0ZBSUxVUkVfQkVIQVZJT1JTKS5vcHRpb25hbCgpLFxuICBzZWNyZXRzOiB6LmFycmF5KHoub2JqZWN0KHtcbiAgICBuYW1lOiB6LnN0cmluZygpLm1pbigxKSxcbiAgICByZXF1aXJlZDogei5ib29sZWFuKCksXG4gICAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSkpLm9wdGlvbmFsKCksXG4gIC8vIEFjY2VwdCBhbiBleHBsaWNpdCBgcHJpbWFyeU91dHB1dERpcmVjdG9yeTogbnVsbGAgKGEgTWFudWFsQXBwcm92YWxTdGVwIC9cbiAgLy8gb3V0cHV0LWxlc3Mgc3RlcCBsZWdpdGltYXRlbHkgZGVjbGFyZXMgaXQpIGFuZCBub3JtYWxpemUgaXQgdG8gYHVuZGVmaW5lZGAuXG4gIC8vIFdpdGhvdXQgYC5udWxsaXNoKClgIGEgcHJlc2VudCBZQU1MIGBudWxsYCBmYWlscyB0aGUgYmFyZSBzdHJpbmcgY2hlY2sgYW5kXG4gIC8vIDQwMHMgdGhlIHdob2xlIHVwbG9hZC5cbiAgcHJpbWFyeU91dHB1dERpcmVjdG9yeTogei5zdHJpbmcoKS5udWxsaXNoKCkudHJhbnNmb3JtKCh2KSA9PiB2ID8/IHVuZGVmaW5lZCksXG4gIG1ldGFkYXRhOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnVuaW9uKFt6LnN0cmluZygpLCB6Lm51bWJlcigpLCB6LmJvb2xlYW4oKV0pKS5vcHRpb25hbCgpLFxuICBkb2NrZXJmaWxlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGluc3RhbGxDb21tYW5kczogei5hcnJheSh6LnN0cmluZygpKS5vcHRpb25hbCgpLFxuICBjb21tYW5kczogei5hcnJheSh6LnN0cmluZygpKS5vcHRpb25hbCgpLFxuICBlbnY6IHoucmVjb3JkKHouc3RyaW5nKCksIHouc3RyaW5nKCkpLm9wdGlvbmFsKCksXG4gIGJ1aWxkQXJnczogei5yZWNvcmQoei5zdHJpbmcoKSwgei5zdHJpbmcoKSkub3B0aW9uYWwoKSxcbiAgcmVxdWlyZWRNZXRhZGF0YTogei5hcnJheSh6LnN0cmluZygpKS5vcHRpb25hbCgpLFxuICByZXF1aXJlZFZhcnM6IHouYXJyYXkoei5zdHJpbmcoKSkub3B0aW9uYWwoKSxcbiAgLy8gS2VwdCBhcyBmcmVlLXN0cmluZyBtYXBzIHJhdGhlciB0aGFuIGEgdmFsdWUgZW51bTogc2hpcHBlZCBzcGVjcyB1c2UgYm90aFxuICAvLyBgYm9vbGAgYW5kIGBib29sZWFuYCwgYW5kIHRoZSBjb2VyY2lvbi12cy1kZWNsYXJlZC10eXBlIGNvbnNpc3RlbmN5IGlzXG4gIC8vIGVuZm9yY2VkIHNlcGFyYXRlbHkgYnkgdGhlIHRlbXBsYXRlIGNvbnRyYWN0IGNoZWNrLiBUaGUgc2NoZW1hIG9ubHlcbiAgLy8gZ3VhcmFudGVlcyB0aGV5J3JlIHN0cmluZy12YWx1ZWQgcmVjb3JkcyBoZXJlLlxuICBtZXRhZGF0YVR5cGVzOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnN0cmluZygpKS5vcHRpb25hbCgpLFxuICB2YXJzVHlwZXM6IHoucmVjb3JkKHouc3RyaW5nKCksIHouc3RyaW5nKCkpLm9wdGlvbmFsKCksXG4gIC8vIEEgY29tbWFuZCB0aGUgYnVpbGQgdG9vbGluZyBydW5zIGFnYWluc3QgdGhlIGJ1aWx0IGltYWdlXG4gIC8vIChidWlsZC1wbHVnaW4taW1hZ2VzLnNoLCB0ZXN0LXBsdWdpbnMuc2ggLS1idWlsZCwgYHBsdWdpbiB0ZXN0YCkuXG4gIHNtb2tlVGVzdDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAvLyBEb2N1bWVudGF0aW9uICsgdHJ1c3QgbWV0YWRhdGEuIFRoZSBSRUFETUUgaXMgTk9UIGEgc3BlYyBmaWVsZCDigJQgaXRcbiAgLy8gaXMgUkVBRE1FLm1kIGF0IHRoZSB6aXAgcm9vdC5cbiAgbGljZW5zZTogei5zdHJpbmcoKS5yZWZpbmUoaXNBbGxvd2VkU3BkeElkLCB7XG4gICAgbWVzc2FnZTogJ211c3QgYmUgYSBzdXBwb3J0ZWQgU1BEWCBsaWNlbnNlIGlkZW50aWZpZXIgKGUuZy4gQXBhY2hlLTIuMCwgTUlUKScsXG4gIH0pLm9wdGlvbmFsKCksXG4gIGNoYW5nZWxvZzogei5zdHJpbmcoKS5yZWZpbmUoKHYpID0+IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZSh2KS5sZW5ndGggPD0gUExVR0lOX0NIQU5HRUxPR19NQVhfQllURVMsIHtcbiAgICBtZXNzYWdlOiBgbXVzdCBiZSBhdCBtb3N0ICR7UExVR0lOX0NIQU5HRUxPR19NQVhfQllURVN9IGJ5dGVzYCxcbiAgfSkub3B0aW9uYWwoKSxcbiAgaG9tZXBhZ2VVcmw6IFByb2plY3RVcmxTY2hlbWEub3B0aW9uYWwoKSxcbiAgc291cmNlVXJsOiBQcm9qZWN0VXJsU2NoZW1hLm9wdGlvbmFsKCksXG4gIC8vIENhdGFsb2cgbWV0YWRhdGE6IHRoZSBjYXJkIG9uZS1saW5lciBhbmQgdGhlIGRvY3MgbGluay4gU2FtZVxuICAvLyB2YWxpZGF0b3JzIGFzIGEgdmFsdWUgdHlwZWQgaW50byB0aGUgdXBsb2FkIGZvcm0uXG4gIHN1bW1hcnk6IFBMVUdJTl9DQVRBTE9HX0ZJRUxEX1NDSEVNQVMuc3VtbWFyeS5vcHRpb25hbCgpLFxuICBkb2N1bWVudGF0aW9uVXJsOiBQcm9qZWN0VXJsU2NoZW1hLm9wdGlvbmFsKCksXG4gIGljb246IHoudW5pb24oW1xuICAgIEljb25LZXlTY2hlbWEsXG4gICAgei5vYmplY3QoeyBrZXk6IEljb25LZXlTY2hlbWEsIGJhZGdlOiBJY29uS2V5U2NoZW1hLm9wdGlvbmFsKCkgfSkuc3RyaWN0KCksXG4gIF0pLm9wdGlvbmFsKCksXG4gIG5ldHdvcms6IHoub2JqZWN0KHtcbiAgICBlZ3Jlc3M6IHouYXJyYXkoei5zdHJpbmcoKS5yZWZpbmUoaXNWYWxpZEVncmVzc0hvc3QsIHtcbiAgICAgIG1lc3NhZ2U6ICdtdXN0IGJlIGEgYmFyZSBob3N0bmFtZSAobm8gc2NoZW1lLCBwb3J0IG9yIHBhdGg7IG9uZSBsZWFkaW5nICouIGFsbG93ZWQpJyxcbiAgICB9KSkubWF4KEVHUkVTU19NQVhfSE9TVFMpLm9wdGlvbmFsKCksXG4gIH0pLnN0cmljdCgpLm9wdGlvbmFsKCksXG4gIC8vIE1hbmFnZWQgdG9vbGNoYWluIG1ldGFkYXRhIOKAlCBgQnVpbGRJbWFnZWAgc3BlY3Mgb25seSAoc2VlIHRoZSBjaGVjayBiZWxvdykuXG4gIHRvb2xjaGFpbjogUGx1Z2luVG9vbGNoYWluU2NoZW1hLm9wdGlvbmFsKCksXG4gIHNvdXJjZURpZ2VzdDogei5zdHJpbmcoKS5yZWdleChQTFVHSU5fU09VUkNFX0RJR0VTVF9QQVRURVJOLCB7IG1lc3NhZ2U6ICdtdXN0IGJlIGEgc2hhMjU2IGhleCBkaWdlc3QnIH0pLm9wdGlvbmFsKCksXG59KS5zdHJpY3QoKS5zdXBlclJlZmluZSgoc3BlYywgY3R4KSA9PiB7XG4gIGZvciAoY29uc3QgaXNzdWUgb2YgYnVpbGRJbWFnZVNwZWNQcm9ibGVtcyhzcGVjKSkgY3R4LmFkZElzc3VlKHsgY29kZTogJ2N1c3RvbScsIHBhdGg6IFtpc3N1ZS5wYXRoXSwgbWVzc2FnZTogaXNzdWUubWVzc2FnZSB9KTtcbn0pO1xuZXhwb3J0IHR5cGUgUGx1Z2luU3BlY0lucHV0ID0gei5pbmZlcjx0eXBlb2YgUGx1Z2luU3BlY1NjaGVtYT47XG5cbi8qKlxuICogVGhlIGBCdWlsZEltYWdlYCBydWxlcyAoZG9jcy9wbGFucy9ib290c3RyYXAtaW1hZ2UtdmVyc2lvbmluZy5tZCDCpzEpOiBhXG4gKiBtYW5hZ2VkIGJ1aWxkIGltYWdlIHVzZXMgYSBtYW5hZ2VkIHRvb2xjaGFpbiBuYW1lLCBjYXJyaWVzIGB0b29sY2hhaW5gIGFuZFxuICogYHNvdXJjZURpZ2VzdGAsIGFuZCBkZWNsYXJlcyBub3RoaW5nIGEgc3RlcCB3b3VsZCBydW4gKGBjb21tYW5kc2AsXG4gKiBgaW5zdGFsbENvbW1hbmRzYCwgYG1ldGFkYXRhYCkuIENvbnZlcnNlbHkgYHRvb2xjaGFpbmAgLyBgc291cmNlRGlnZXN0YCBhcmVcbiAqIHJlZnVzZWQgb24gZXZlcnkgb3RoZXIgdHlwZS4gVGhhdCBpdCBpcyBgcHJlYnVpbHRgIGlzIHRoZSB1cGxvYWQgcGF0aCdzXG4gKiBjaGVjazogdGhlIGNoZWNrZWQtaW4gYGNvbmZpZy55YW1sYCBzYXlzIGBidWlsZF9pbWFnZWAgdW50aWwgdGhlIGJ1aWxkXG4gKiBzY3JpcHQgZmxpcHMgaXQuXG4gKi9cbmludGVyZmFjZSBCdWlsZEltYWdlQ2hlY2tJbnB1dCB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHBsdWdpblR5cGU/OiBzdHJpbmc7XG4gIHRvb2xjaGFpbj86IHVua25vd247XG4gIHNvdXJjZURpZ2VzdD86IHVua25vd247XG4gIGNvbW1hbmRzPzogdW5rbm93bjtcbiAgaW5zdGFsbENvbW1hbmRzPzogdW5rbm93bjtcbiAgbWV0YWRhdGE/OiB1bmtub3duO1xufVxuXG5mdW5jdGlvbiBidWlsZEltYWdlU3BlY1Byb2JsZW1zKHNwZWM6IEJ1aWxkSW1hZ2VDaGVja0lucHV0KTogQXJyYXk8eyBwYXRoOiBzdHJpbmc7IG1lc3NhZ2U6IHN0cmluZyB9PiB7XG4gIGNvbnN0IG91dDogQXJyYXk8eyBwYXRoOiBzdHJpbmc7IG1lc3NhZ2U6IHN0cmluZyB9PiA9IFtdO1xuICBpZiAoc3BlYy5wbHVnaW5UeXBlICE9PSAnQnVpbGRJbWFnZScpIHtcbiAgICBpZiAoc3BlYy50b29sY2hhaW4gIT09IHVuZGVmaW5lZCkgb3V0LnB1c2goeyBwYXRoOiAndG9vbGNoYWluJywgbWVzc2FnZTogJ2lzIG9ubHkgYWxsb3dlZCBvbiBhIEJ1aWxkSW1hZ2UgcGx1Z2luJyB9KTtcbiAgICBpZiAoc3BlYy5zb3VyY2VEaWdlc3QgIT09IHVuZGVmaW5lZCkgb3V0LnB1c2goeyBwYXRoOiAnc291cmNlRGlnZXN0JywgbWVzc2FnZTogJ2lzIG9ubHkgYWxsb3dlZCBvbiBhIEJ1aWxkSW1hZ2UgcGx1Z2luJyB9KTtcbiAgICByZXR1cm4gb3V0O1xuICB9XG4gIGlmIChzcGVjLm5hbWUgIT09IHVuZGVmaW5lZCAmJiAhaXNNYW5hZ2VkVG9vbGNoYWluUGx1Z2luKHNwZWMubmFtZSkpIHtcbiAgICBvdXQucHVzaCh7IHBhdGg6ICdwbHVnaW5UeXBlJywgbWVzc2FnZTogJ0J1aWxkSW1hZ2UgaXMgcmVzZXJ2ZWQgZm9yIHRoZSBtYW5hZ2VkIHRvb2xjaGFpbiBwbHVnaW5zJyB9KTtcbiAgfVxuICBpZiAoc3BlYy50b29sY2hhaW4gPT09IHVuZGVmaW5lZCkgb3V0LnB1c2goeyBwYXRoOiAndG9vbGNoYWluJywgbWVzc2FnZTogJ2lzIHJlcXVpcmVkIG9uIGEgQnVpbGRJbWFnZSBwbHVnaW4nIH0pO1xuICBpZiAoc3BlYy5zb3VyY2VEaWdlc3QgPT09IHVuZGVmaW5lZCkgb3V0LnB1c2goeyBwYXRoOiAnc291cmNlRGlnZXN0JywgbWVzc2FnZTogJ2lzIHJlcXVpcmVkIG9uIGEgQnVpbGRJbWFnZSBwbHVnaW4nIH0pO1xuICBmb3IgKGNvbnN0IGZpZWxkIG9mIFsnY29tbWFuZHMnLCAnaW5zdGFsbENvbW1hbmRzJywgJ21ldGFkYXRhJ10gYXMgY29uc3QpIHtcbiAgICBpZiAoc3BlY1tmaWVsZF0gIT09IHVuZGVmaW5lZCkgb3V0LnB1c2goeyBwYXRoOiBmaWVsZCwgbWVzc2FnZTogJ2lzIG5vdCBhbGxvd2VkIG9uIGEgQnVpbGRJbWFnZSBwbHVnaW4nIH0pO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG5cbi8qKlxuICogUmVzdWx0IG9mIGNoZWNraW5nIGEgcGFyc2VkIFlBTUwgZG9jdW1lbnQgYWdhaW5zdCBhIHBhY2thZ2Ugc2NoZW1hOlxuICogYGlzc3Vlc2AgYXJlIHRoZSBpbmRpdmlkdWFsIHByb2JsZW1zLCBgbWVzc2FnZWAgdGhlIG9uZS1saW5lIGZvcm0gdGhlIHVwbG9hZFxuICogQVBJIHJlcG9ydHMgKGBwbHVnaW4tc3BlYy55YW1sOiA8cGF0aD46IDxwcm9ibGVtPjsg4oCmYCkuXG4gKi9cbmV4cG9ydCB0eXBlIFBhY2thZ2VDaGVjazxUPiA9IHsgb2s6IHRydWU7IHZhbHVlOiBUIH0gfCB7IG9rOiBmYWxzZTsgaXNzdWVzOiBzdHJpbmdbXTsgbWVzc2FnZTogc3RyaW5nIH07XG5cbmNvbnN0IGlzTWFwcGluZyA9IChyYXc6IHVua25vd24pOiByYXcgaXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT5cbiAgdHlwZW9mIHJhdyA9PT0gJ29iamVjdCcgJiYgcmF3ICE9PSBudWxsICYmICFBcnJheS5pc0FycmF5KHJhdyk7XG5cbmZ1bmN0aW9uIGNoZWNrQWdhaW5zdDxUPihmaWxlOiBzdHJpbmcsIHJhdzogdW5rbm93biwgc2NoZW1hOiB6LlpvZFR5cGU8VD4sIHdpdGhQYXRoOiBib29sZWFuKTogUGFja2FnZUNoZWNrPFQ+IHtcbiAgaWYgKCFpc01hcHBpbmcocmF3KSkge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBgJHtmaWxlfSBtdXN0IGJlIGEgWUFNTCBtYXBwaW5nYDtcbiAgICByZXR1cm4geyBvazogZmFsc2UsIGlzc3VlczogW21lc3NhZ2VdLCBtZXNzYWdlIH07XG4gIH1cbiAgY29uc3QgcmVzdWx0ID0gc2NoZW1hLnNhZmVQYXJzZShyYXcpO1xuICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZTogcmVzdWx0LmRhdGEgfTtcbiAgY29uc3QgaXNzdWVzID0gcmVzdWx0LmVycm9yLmlzc3Vlcy5tYXAoaSA9PiAod2l0aFBhdGggPyBgJHtpLnBhdGguam9pbignLicpIHx8ICcocm9vdCknfTogJHtpLm1lc3NhZ2V9YCA6IGkubWVzc2FnZSkpO1xuICByZXR1cm4geyBvazogZmFsc2UsIGlzc3VlcywgbWVzc2FnZTogYCR7ZmlsZX06ICR7aXNzdWVzLmpvaW4oJzsgJyl9YCB9O1xufVxuXG4vKiogQ2hlY2sgYSBwYXJzZWQgYHBsdWdpbi1zcGVjLnlhbWxgIGRvY3VtZW50IGFnYWluc3Qge0BsaW5rIFBsdWdpblNwZWNTY2hlbWF9LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrUGx1Z2luU3BlYyhyYXc6IHVua25vd24pOiBQYWNrYWdlQ2hlY2s8UGx1Z2luU3BlY0lucHV0PiB7XG4gIHJldHVybiBjaGVja0FnYWluc3QoJ3BsdWdpbi1zcGVjLnlhbWwnLCByYXcsIFBsdWdpblNwZWNTY2hlbWEsIHRydWUpO1xufVxuXG4vKiogQ2hlY2sgYSBwYXJzZWQgYGNvbmZpZy55YW1sYCBkb2N1bWVudCBhZ2FpbnN0IHtAbGluayBQbHVnaW5Db25maWdTY2hlbWF9LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrUGx1Z2luQ29uZmlnKHJhdzogdW5rbm93bik6IFBhY2thZ2VDaGVjazxQbHVnaW5Db25maWdJbnB1dD4ge1xuICByZXR1cm4gY2hlY2tBZ2FpbnN0KCdjb25maWcueWFtbCcsIHJhdywgUGx1Z2luQ29uZmlnU2NoZW1hLCBmYWxzZSk7XG59XG5cbi8qKlxuICogVGhlIHJlcXVpcmVkLWZpZWxkIGNvbnRyYWN0OiBgbmFtZWAgYW5kIGB2ZXJzaW9uYCBhbHdheXMsIGBjb21tYW5kc2AgZm9yXG4gKiBldmVyeSB0eXBlIGV4Y2VwdCBgTWFudWFsQXBwcm92YWxTdGVwYCBhbmQgYEJ1aWxkSW1hZ2VgIChuZWl0aGVyIHJ1bnNcbiAqIGNvbW1hbmRzKS4gUmV0dXJucyB0aGUgdXBsb2FkJ3MgbWVzc2FnZSwgb3IgbnVsbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBsdWdpblNwZWNSZXF1aXJlZEZpZWxkc1Byb2JsZW0oc3BlYzogUGljazxQbHVnaW5TcGVjSW5wdXQsICduYW1lJyB8ICd2ZXJzaW9uJyB8ICdjb21tYW5kcycgfCAncGx1Z2luVHlwZSc+KTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IHJ1bnNOb0NvbW1hbmRzID0gc3BlYy5wbHVnaW5UeXBlID09PSAnTWFudWFsQXBwcm92YWxTdGVwJyB8fCBzcGVjLnBsdWdpblR5cGUgPT09ICdCdWlsZEltYWdlJztcbiAgaWYgKCFzcGVjLm5hbWUgfHwgIXNwZWMudmVyc2lvbiB8fCAoIXJ1bnNOb0NvbW1hbmRzICYmICFzcGVjLmNvbW1hbmRzKSkge1xuICAgIHJldHVybiAnSW52YWxpZCBzcGVjOiBuYW1lLCB2ZXJzaW9uLCBhbmQgY29tbWFuZHMgYXJlIHJlcXVpcmVkJztcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cbiJdfQ==
241
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLXNwZWMtc2NoZW1hLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmFsaWRhdGlvbi9wbHVnaW4tc3BlYy1zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7O0dBU0c7QUFFSCxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRXhCLE9BQU8sRUFDTCxhQUFhLEVBQUUsNEJBQTRCLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxHQUMvRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSx5QkFBeUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTdILGdGQUFnRjtBQUNoRixlQUFlO0FBQ2YsZ0ZBQWdGO0FBRWhGOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsZUFBZSxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxZQUFZLENBQVUsQ0FBQztBQUN4RyxpRkFBaUY7QUFDakYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxlQUFlLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixDQUFVLENBQUM7QUFDL0YsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQVUsQ0FBQztBQUN0RixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFVLENBQUM7QUFDNUUsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLGVBQWUsQ0FBVSxDQUFDO0FBR3hGLDBEQUEwRDtBQUMxRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxjQUFjLENBQUM7QUFDbEQsaUZBQWlGO0FBQ2pGLE1BQU0sQ0FBQyxNQUFNLHNCQUFz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LENBQUMsQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUN2RSxPQUFPLHdEQUF3RCxDQUFDO0lBQ2xFLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBUaGUgcGx1Z2luIFBBQ0tBR0Ugc2NoZW1hczogYHBsdWdpbi1zcGVjLnlhbWxgIGFuZCBgY29uZmlnLnlhbWxgLCBleGFjdGx5IGFzXG4gKiB0aGUgcGx1Z2luIHNlcnZpY2UgdmFsaWRhdGVzIGFuIHVwbG9hZC4gU2hhcmVkIGZyb20gYXBpLWNvcmUgc28gdGhlIHVwbG9hZFxuICogcGF0aCAoYXBpL3BsdWdpbikgYW5kIHRoZSBDTEkgKGBwaXBlbGluZS1tYW5hZ2VyIHBsdWdpbiB2YWxpZGF0ZWAgL1xuICogYHBsdWdpbiBwdWJsaXNoYCkgYXBwbHkgT05FIHNjaGVtYSBhbmQgY2FuJ3QgZHJpZnQuXG4gKlxuICogUHVyZTogbm8gWUFNTCBwYXJzaW5nLCBubyBmaWxlc3lzdGVtLiBDYWxsZXJzIHBhcnNlICh3aXRoIHRoZWlyIG93biBzaXplIGFuZFxuICogYWxpYXMgYm91bmRzKSBhbmQgaGFuZCB0aGUgcmVzdWx0aW5nIG9iamVjdCB0byB7QGxpbmsgY2hlY2tQbHVnaW5TcGVjfSAvXG4gKiB7QGxpbmsgY2hlY2tQbHVnaW5Db25maWd9LlxuICovXG5cbmltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuXG5pbXBvcnQge1xuICBJY29uS2V5U2NoZW1hLCBQTFVHSU5fQ0FUQUxPR19GSUVMRF9TQ0hFTUFTLCBQcm9qZWN0VXJsU2NoZW1hLCBpc0FsbG93ZWRTcGR4SWQsXG59IGZyb20gJy4vcGx1Z2luLWNhdGFsb2ctbWV0YWRhdGEuanMnO1xuaW1wb3J0IHsgUExVR0lOX0NIQU5HRUxPR19NQVhfQllURVMsIFRPT0xDSEFJTl9NRVRBREFUQV9QUkVGSVgsIGlzTWFuYWdlZFRvb2xjaGFpblBsdWdpbiB9IGZyb20gJy4uL3R5cGVzL3BsdWdpbi1jYXRhbG9nLmpzJztcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFZvY2FidWxhcmllc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBgQnVpbGRJbWFnZWAgaXMgdGhlIG1hbmFnZWQgdG9vbGNoYWluJ3MgYnVpbGQgaW1hZ2UgKGBwaXBlbGluZS1ib290c3RyYXBgLFxuICogZG9jcy9wbGFucy9ib290c3RyYXAtaW1hZ2UtdmVyc2lvbmluZy5tZCDCpzEpOiBhIHByZWJ1aWx0IGltYWdlIHdpdGggbm9cbiAqIGNvbW1hbmRzLCBuZXZlciBhIHBpcGVsaW5lIHN0ZXAuIHtAbGluayBTVEVQX1BMVUdJTl9UWVBFU30gaXMgdGhlIHN1YnNldCBhXG4gKiBzdGVwIChvciBhIGdlbmVyYXRvcikgbWF5IHVzZS5cbiAqL1xuZXhwb3J0IGNvbnN0IFBMVUdJTl9UWVBFUyA9IFsnQ29kZUJ1aWxkU3RlcCcsICdTaGVsbFN0ZXAnLCAnTWFudWFsQXBwcm92YWxTdGVwJywgJ0J1aWxkSW1hZ2UnXSBhcyBjb25zdDtcbi8qKiBUaGUgcGx1Z2luIHR5cGVzIGEgcGlwZWxpbmUgc3RlcCBjYW4gdXNlIOKAlCBldmVyeSB0eXBlIGV4Y2VwdCBgQnVpbGRJbWFnZWAuICovXG5leHBvcnQgY29uc3QgU1RFUF9QTFVHSU5fVFlQRVMgPSBbJ0NvZGVCdWlsZFN0ZXAnLCAnU2hlbGxTdGVwJywgJ01hbnVhbEFwcHJvdmFsU3RlcCddIGFzIGNvbnN0O1xuZXhwb3J0IGNvbnN0IFBMVUdJTl9DT01QVVRFX1RZUEVTID0gWydTTUFMTCcsICdNRURJVU0nLCAnTEFSR0UnLCAnWDJfTEFSR0UnXSBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBQTFVHSU5fRkFJTFVSRV9CRUhBVklPUlMgPSBbJ2ZhaWwnLCAnd2FybicsICdpZ25vcmUnXSBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBQTFVHSU5fQlVJTERfVFlQRVMgPSBbJ2J1aWxkX2ltYWdlJywgJ3ByZWJ1aWx0JywgJ21ldGFkYXRhX29ubHknXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFBsdWdpbkJ1aWxkVHlwZSA9IHR5cGVvZiBQTFVHSU5fQlVJTERfVFlQRVNbbnVtYmVyXTtcblxuLyoqIFBsdWdpbiBuYW1lOiBsb3dlcmNhc2UgbGV0dGVycywgZGlnaXRzIGFuZCBoeXBoZW5zLiAqL1xuZXhwb3J0IGNvbnN0IFBMVUdJTl9OQU1FX1BBVFRFUk4gPSAvXlthLXowLTktXSskLztcbi8qKiBQbHVnaW4gdmVyc2lvbjogc2VtdmVyLCB3aXRoIG9wdGlvbmFsIGAtcHJlcmVsZWFzZWAgYW5kIGArYnVpbGRgIG1ldGFkYXRhLiAqL1xuZXhwb3J0IGNvbnN0IFBMVUdJTl9WRVJTSU9OX1BBVFRFUk4gPSAvXlxcZCtcXC5cXGQrXFwuXFxkKygtW2EtekEtWjAtOS4tXSspPyhcXCtbYS16QS1aMC05Li1dKyk/JC87XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBuZXR3b3JrLmVncmVzcyAoc3BlYy1vbmx5IHRydXN0IG1ldGFkYXRhKVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIE1heCBkZWNsYXJlZCBgbmV0d29yay5lZ3Jlc3NgIGhvc3RuYW1lcy4gKi9cbmV4cG9ydCBjb25zdCBFR1JFU1NfTUFYX0hPU1RTID0gNTA7XG5cbi8qKlxuICogQSBiYXJlIEROUyBob3N0bmFtZSwgb3B0aW9uYWxseSB3aXRoIE9ORSBsZWFkaW5nIGAqLmAgd2lsZGNhcmQgbGFiZWwuIE5vXG4gKiBzY2hlbWUsIHBvcnQsIHBhdGgsIHVzZXJpbmZvIG9yIElQIGxpdGVyYWwg4oCUIGEgZGVjbGFyZWQgZWdyZXNzIHRhcmdldCBpcyBhXG4gKiBuYW1lIHRoZSByZXZpZXdlciBjYW4gcmVhZC5cbiAqL1xuY29uc3QgRUdSRVNTX0hPU1RfUEFUVEVSTiA9IC9eKD86XFwqXFwuKT8oPzpbYS16MC05XSg/OlthLXowLTktXXswLDYxfVthLXowLTldKT9cXC4pK1thLXpdW2EtejAtOS1dezAsNjF9W2EtejAtOV0kLztcblxuLyoqIFRydWUgd2hlbiBgaG9zdGAgaXMgYW4gYWNjZXB0YWJsZSBgbmV0d29yay5lZ3Jlc3NgIGVudHJ5LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRFZ3Jlc3NIb3N0KGhvc3Q6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gaG9zdC5sZW5ndGggPD0gMjUzICYmIEVHUkVTU19IT1NUX1BBVFRFUk4udGVzdChob3N0KTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIE1hbmFnZWQgdG9vbGNoYWluIG1ldGFkYXRhIChCdWlsZEltYWdlIHNwZWNzKVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIEFuIEVYQUNUIHNlbXZlciAobm8gcmFuZ2UpOiBgMS4yLjNgLCBvcHRpb25hbGx5IGAtcHJlYCAvIGArYnVpbGRgLiAqL1xuY29uc3QgRVhBQ1RfU0VNVkVSX1BBVFRFUk4gPSAvXlxcZCtcXC5cXGQrXFwuXFxkKygtWzAtOUEtWmEtei4tXSspPyhcXCtbMC05QS1aYS16Li1dKyk/JC87XG5jb25zdCBleGFjdFNlbXZlciA9IHouc3RyaW5nKCkucmVnZXgoRVhBQ1RfU0VNVkVSX1BBVFRFUk4sIHsgbWVzc2FnZTogJ211c3QgYmUgYW4gZXhhY3Qgc2VtdmVyIHZlcnNpb24gKGUuZy4gMS4yLjMpJyB9KTtcblxuLyoqXG4gKiBUaGUgdG9vbCB2ZXJzaW9ucyBhIG1hbmFnZWQgYnVpbGQgaW1hZ2UgY2Fycmllcywgd3JpdHRlbiBieVxuICogYHN5bmMtaW1hZ2UtdGFncy5zaGAgZnJvbSB0aGUgRG9ja2VyZmlsZSBgQVJHYHMuIEV2ZXJ5IGZpZWxkIGlzIHJlcXVpcmVkIGFuZFxuICogZXhhY3Q6IHRoaXMgaXMgd2hhdCB0aGUgcmVsZWFzZSBJUywgbm90IHdoYXQgaXQgYWNjZXB0cy5cbiAqL1xuZXhwb3J0IGNvbnN0IFBsdWdpblRvb2xjaGFpblNjaGVtYSA9IHoub2JqZWN0KHtcbiAgcGlwZWxpbmVNYW5hZ2VyOiBleGFjdFNlbXZlcixcbiAgYXdzQ2RrOiBleGFjdFNlbXZlcixcbiAgY2RrQXNzZXRzOiBleGFjdFNlbXZlcixcbiAgZXNidWlsZDogZXhhY3RTZW12ZXIsXG4gIHBucG06IGV4YWN0U2VtdmVyLFxuICBub2RlOiBleGFjdFNlbXZlcixcbn0pLnN0cmljdCgpO1xuZXhwb3J0IHR5cGUgUGx1Z2luVG9vbGNoYWluID0gei5pbmZlcjx0eXBlb2YgUGx1Z2luVG9vbGNoYWluU2NoZW1hPjtcblxuLyoqIFRoZSBmbGF0IGBtZXRhZGF0YWAgZW50cmllcyB0aGF0IHBlcnNpc3QgYHRvb2xjaGFpbmAgb24gYSBidWlsZCBpbWFnZSdzIHJvdy4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b29sY2hhaW5NZXRhZGF0YSh0b29sY2hhaW46IFBsdWdpblRvb2xjaGFpbik6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHRvb2xjaGFpbikubWFwKChbaywgdl0pID0+IFtgJHtUT09MQ0hBSU5fTUVUQURBVEFfUFJFRklYfSR7a31gLCB2XSkpO1xufVxuXG4vKipcbiAqIFRoZSBgdG9vbGNoYWluYCBhIGJ1aWxkIGltYWdlJ3Mgcm93IGNhcnJpZXMsIG9yIGBudWxsYCB3aGVuIGl0cyBgbWV0YWRhdGFgXG4gKiBob2xkcyBubyBjb21wbGV0ZSwgdmFsaWQgb25lIChldmVyeSBmaWVsZCByZXF1aXJlZCBhbmQgZXhhY3Qg4oCUIHRoZSBzYW1lXG4gKiBzY2hlbWEgdGhlIHVwbG9hZCB2YWxpZGF0ZWQpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9vbGNoYWluRnJvbU1ldGFkYXRhKG1ldGFkYXRhOiB1bmtub3duKTogUGx1Z2luVG9vbGNoYWluIHwgbnVsbCB7XG4gIGlmICghbWV0YWRhdGEgfHwgdHlwZW9mIG1ldGFkYXRhICE9PSAnb2JqZWN0JykgcmV0dXJuIG51bGw7XG4gIGNvbnN0IGZpZWxkczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMobWV0YWRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pKSB7XG4gICAgaWYgKGsuc3RhcnRzV2l0aChUT09MQ0hBSU5fTUVUQURBVEFfUFJFRklYKSkgZmllbGRzW2suc2xpY2UoVE9PTENIQUlOX01FVEFEQVRBX1BSRUZJWC5sZW5ndGgpXSA9IHY7XG4gIH1cbiAgY29uc3QgcGFyc2VkID0gUGx1Z2luVG9vbGNoYWluU2NoZW1hLnNhZmVQYXJzZShmaWVsZHMpO1xuICByZXR1cm4gcGFyc2VkLnN1Y2Nlc3MgPyBwYXJzZWQuZGF0YSA6IG51bGw7XG59XG5cbi8qKiBBIGJ1aWxkLWlucHV0IGhhc2g6IDY0IGxvd2VyY2FzZSBoZXggY2hhcmFjdGVycyAoc2hhMjU2KSwgb3B0aW9uYWxseSBgc2hhMjU2OmAtcHJlZml4ZWQuICovXG5leHBvcnQgY29uc3QgUExVR0lOX1NPVVJDRV9ESUdFU1RfUEFUVEVSTiA9IC9eKHNoYTI1NjopP1thLWYwLTldezY0fSQvO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gY29uZmlnLnlhbWxcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBjb25zdCBQbHVnaW5Db25maWdTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHBsdWdpblNwZWM6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZG9ja2VyZmlsZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBidWlsZFR5cGU6IHouZW51bShQTFVHSU5fQlVJTERfVFlQRVMpLm9wdGlvbmFsKCksXG4gIC8vIERldGVybWluaXN0aWMgYnVpbGQgdGFnIHdyaXR0ZW4gYnkgYnVpbGQtcGx1Z2luLWltYWdlcy5zaFxuICAvLyAoYHAtPG5hbWU+LTxzaGEyNTY6MTI+YCkuIEluZm9ybWF0aW9uYWwgb25seSBvbiB0aGUgdXBsb2FkIHBhdGgg4oCUXG4gIC8vIHRoZSBwbGF0Zm9ybSBkb2Vzbid0IGFjdCBvbiBpdCwgYnV0IGl0IGxpdmVzIGluIHRoZSBzYW1lIGNvbmZpZ1xuICAvLyBmaWxlIGFzIHRoZSByZXN0IG9mIHRoZSBidWlsZCBtZXRhZGF0YSBzbyByZS1ydW5zIGNhbiBzaG9ydC1jaXJjdWl0XG4gIC8vIHVuY2hhbmdlZCBwbHVnaW5zIHdpdGhvdXQgbmVlZGluZyBhIHNlcGFyYXRlIC5pbWFnZS1oYXNoIHNpZGVjYXIuXG4gIGltYWdlVGFnOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG59KS5zdHJpY3QoKVxuICAucmVmaW5lKGQgPT4gIShkLmJ1aWxkVHlwZSA9PT0gJ3ByZWJ1aWx0JyAmJiBkLmRvY2tlcmZpbGUpLCB7XG4gICAgbWVzc2FnZTogJ2RvY2tlcmZpbGUgaXMgbm90IGFsbG93ZWQgd2hlbiBidWlsZFR5cGUgaXMgcHJlYnVpbHQnLFxuICB9KVxuICAucmVmaW5lKGQgPT4gIShkLmJ1aWxkVHlwZSA9PT0gJ21ldGFkYXRhX29ubHknICYmIGQuZG9ja2VyZmlsZSksIHtcbiAgICBtZXNzYWdlOiAnZG9ja2VyZmlsZSBpcyBub3QgYWxsb3dlZCB3aGVuIGJ1aWxkVHlwZSBpcyBtZXRhZGF0YV9vbmx5JyxcbiAgfSk7XG5leHBvcnQgdHlwZSBQbHVnaW5Db25maWdJbnB1dCA9IHouaW5mZXI8dHlwZW9mIFBsdWdpbkNvbmZpZ1NjaGVtYT47XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBwbHVnaW4tc3BlYy55YW1sXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBuYW1lL3ZlcnNpb24vY29tbWFuZHMgYXJlIHRoZSByZXF1aXJlZC1maWVsZCBjb250cmFjdCwgYnV0IHRoZXkncmUgY2hlY2tlZCBieVxuLy8ge0BsaW5rIHBsdWdpblNwZWNSZXF1aXJlZEZpZWxkc1Byb2JsZW19ICh0aGUgc3RhYmxlIFwibmFtZSwgdmVyc2lvbiwgYW5kXG4vLyBjb21tYW5kcyBhcmUgcmVxdWlyZWRcIiBtZXNzYWdlIGFuZCB0aGUgTWFudWFsQXBwcm92YWxTdGVwIGNhcnZlLW91dCkuIEhlcmVcbi8vIHRoZXkncmUgb3B0aW9uYWwgc3RyaW5nczsgdGhlIHNjaGVtYSdzIGpvYiBpcyB0byByZWplY3QgbWFsZm9ybWVkICp0eXBlcyogb25cbi8vIHRoZSBmaWVsZHMgdGhhdCBmbG93IGRvd25zdHJlYW0gdW5jaGVja2VkLlxuZXhwb3J0IGNvbnN0IFBsdWdpblNwZWNTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIG5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAga2V5d29yZHM6IHouYXJyYXkoei5zdHJpbmcoKSkub3B0aW9uYWwoKSxcbiAgY2F0ZWdvcnk6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgdmVyc2lvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBwbHVnaW5UeXBlOiB6LmVudW0oUExVR0lOX1RZUEVTKS5vcHRpb25hbCgpLFxuICBjb21wdXRlVHlwZTogei5lbnVtKFBMVUdJTl9DT01QVVRFX1RZUEVTKS5vcHRpb25hbCgpLFxuICAvLyA+PSAwIG1pbnV0ZXM6IE1hbnVhbEFwcHJvdmFsU3RlcCBzcGVjcyBsZWdpdGltYXRlbHkgZGVjbGFyZSBgdGltZW91dDogMGAuXG4gIHRpbWVvdXQ6IHoubnVtYmVyKCkuaW50KCkubm9ubmVnYXRpdmUoKS5vcHRpb25hbCgpLFxuICBmYWlsdXJlQmVoYXZpb3I6IHouZW51bShQTFVHSU5fRkFJTFVSRV9CRUhBVklPUlMpLm9wdGlvbmFsKCksXG4gIHNlY3JldHM6IHouYXJyYXkoei5vYmplY3Qoe1xuICAgIG5hbWU6IHouc3RyaW5nKCkubWluKDEpLFxuICAgIHJlcXVpcmVkOiB6LmJvb2xlYW4oKSxcbiAgICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB9KSkub3B0aW9uYWwoKSxcbiAgLy8gQWNjZXB0IGFuIGV4cGxpY2l0IGBwcmltYXJ5T3V0cHV0RGlyZWN0b3J5OiBudWxsYCAoYSBNYW51YWxBcHByb3ZhbFN0ZXAgL1xuICAvLyBvdXRwdXQtbGVzcyBzdGVwIGxlZ2l0aW1hdGVseSBkZWNsYXJlcyBpdCkgYW5kIG5vcm1hbGl6ZSBpdCB0byBgdW5kZWZpbmVkYC5cbiAgLy8gV2l0aG91dCBgLm51bGxpc2goKWAgYSBwcmVzZW50IFlBTUwgYG51bGxgIGZhaWxzIHRoZSBiYXJlIHN0cmluZyBjaGVjayBhbmRcbiAgLy8gNDAwcyB0aGUgd2hvbGUgdXBsb2FkLlxuICBwcmltYXJ5T3V0cHV0RGlyZWN0b3J5OiB6LnN0cmluZygpLm51bGxpc2goKS50cmFuc2Zvcm0oKHYpID0+IHYgPz8gdW5kZWZpbmVkKSxcbiAgbWV0YWRhdGE6IHoucmVjb3JkKHouc3RyaW5nKCksIHoudW5pb24oW3ouc3RyaW5nKCksIHoubnVtYmVyKCksIHouYm9vbGVhbigpXSkpLm9wdGlvbmFsKCksXG4gIGRvY2tlcmZpbGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgaW5zdGFsbENvbW1hbmRzOiB6LmFycmF5KHouc3RyaW5nKCkpLm9wdGlvbmFsKCksXG4gIGNvbW1hbmRzOiB6LmFycmF5KHouc3RyaW5nKCkpLm9wdGlvbmFsKCksXG4gIGVudjogei5yZWNvcmQoei5zdHJpbmcoKSwgei5zdHJpbmcoKSkub3B0aW9uYWwoKSxcbiAgYnVpbGRBcmdzOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnN0cmluZygpKS5vcHRpb25hbCgpLFxuICByZXF1aXJlZE1ldGFkYXRhOiB6LmFycmF5KHouc3RyaW5nKCkpLm9wdGlvbmFsKCksXG4gIHJlcXVpcmVkVmFyczogei5hcnJheSh6LnN0cmluZygpKS5vcHRpb25hbCgpLFxuICAvLyBLZXB0IGFzIGZyZWUtc3RyaW5nIG1hcHMgcmF0aGVyIHRoYW4gYSB2YWx1ZSBlbnVtOiBzaGlwcGVkIHNwZWNzIHVzZSBib3RoXG4gIC8vIGBib29sYCBhbmQgYGJvb2xlYW5gLCBhbmQgdGhlIGNvZXJjaW9uLXZzLWRlY2xhcmVkLXR5cGUgY29uc2lzdGVuY3kgaXNcbiAgLy8gZW5mb3JjZWQgc2VwYXJhdGVseSBieSB0aGUgdGVtcGxhdGUgY29udHJhY3QgY2hlY2suIFRoZSBzY2hlbWEgb25seVxuICAvLyBndWFyYW50ZWVzIHRoZXkncmUgc3RyaW5nLXZhbHVlZCByZWNvcmRzIGhlcmUuXG4gIG1ldGFkYXRhVHlwZXM6IHoucmVjb3JkKHouc3RyaW5nKCksIHouc3RyaW5nKCkpLm9wdGlvbmFsKCksXG4gIHZhcnNUeXBlczogei5yZWNvcmQoei5zdHJpbmcoKSwgei5zdHJpbmcoKSkub3B0aW9uYWwoKSxcbiAgLy8gQSBjb21tYW5kIHRoZSBidWlsZCB0b29saW5nIHJ1bnMgYWdhaW5zdCB0aGUgYnVpbHQgaW1hZ2VcbiAgLy8gKGJ1aWxkLXBsdWdpbi1pbWFnZXMuc2gsIHRlc3QtcGx1Z2lucy5zaCAtLWJ1aWxkLCBgcGx1Z2luIHRlc3RgKS5cbiAgc21va2VUZXN0OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIC8vIERvY3VtZW50YXRpb24gKyB0cnVzdCBtZXRhZGF0YS4gVGhlIFJFQURNRSBpcyBOT1QgYSBzcGVjIGZpZWxkIOKAlCBpdFxuICAvLyBpcyBSRUFETUUubWQgYXQgdGhlIHppcCByb290LlxuICBsaWNlbnNlOiB6LnN0cmluZygpLnJlZmluZShpc0FsbG93ZWRTcGR4SWQsIHtcbiAgICBtZXNzYWdlOiAnbXVzdCBiZSBhIHN1cHBvcnRlZCBTUERYIGxpY2Vuc2UgaWRlbnRpZmllciAoZS5nLiBBcGFjaGUtMi4wLCBNSVQpJyxcbiAgfSkub3B0aW9uYWwoKSxcbiAgY2hhbmdlbG9nOiB6LnN0cmluZygpLnJlZmluZSgodikgPT4gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHYpLmxlbmd0aCA8PSBQTFVHSU5fQ0hBTkdFTE9HX01BWF9CWVRFUywge1xuICAgIG1lc3NhZ2U6IGBtdXN0IGJlIGF0IG1vc3QgJHtQTFVHSU5fQ0hBTkdFTE9HX01BWF9CWVRFU30gYnl0ZXNgLFxuICB9KS5vcHRpb25hbCgpLFxuICBob21lcGFnZVVybDogUHJvamVjdFVybFNjaGVtYS5vcHRpb25hbCgpLFxuICBzb3VyY2VVcmw6IFByb2plY3RVcmxTY2hlbWEub3B0aW9uYWwoKSxcbiAgLy8gQ2F0YWxvZyBtZXRhZGF0YTogdGhlIGNhcmQgb25lLWxpbmVyIGFuZCB0aGUgZG9jcyBsaW5rLiBTYW1lXG4gIC8vIHZhbGlkYXRvcnMgYXMgYSB2YWx1ZSB0eXBlZCBpbnRvIHRoZSB1cGxvYWQgZm9ybS5cbiAgc3VtbWFyeTogUExVR0lOX0NBVEFMT0dfRklFTERfU0NIRU1BUy5zdW1tYXJ5Lm9wdGlvbmFsKCksXG4gIGRvY3VtZW50YXRpb25Vcmw6IFByb2plY3RVcmxTY2hlbWEub3B0aW9uYWwoKSxcbiAgaWNvbjogei51bmlvbihbXG4gICAgSWNvbktleVNjaGVtYSxcbiAgICB6Lm9iamVjdCh7IGtleTogSWNvbktleVNjaGVtYSwgYmFkZ2U6IEljb25LZXlTY2hlbWEub3B0aW9uYWwoKSB9KS5zdHJpY3QoKSxcbiAgXSkub3B0aW9uYWwoKSxcbiAgbmV0d29yazogei5vYmplY3Qoe1xuICAgIGVncmVzczogei5hcnJheSh6LnN0cmluZygpLnJlZmluZShpc1ZhbGlkRWdyZXNzSG9zdCwge1xuICAgICAgbWVzc2FnZTogJ211c3QgYmUgYSBiYXJlIGhvc3RuYW1lIChubyBzY2hlbWUsIHBvcnQgb3IgcGF0aDsgb25lIGxlYWRpbmcgKi4gYWxsb3dlZCknLFxuICAgIH0pKS5tYXgoRUdSRVNTX01BWF9IT1NUUykub3B0aW9uYWwoKSxcbiAgfSkuc3RyaWN0KCkub3B0aW9uYWwoKSxcbiAgLy8gTWFuYWdlZCB0b29sY2hhaW4gbWV0YWRhdGEg4oCUIGBCdWlsZEltYWdlYCBzcGVjcyBvbmx5IChzZWUgdGhlIGNoZWNrIGJlbG93KS5cbiAgdG9vbGNoYWluOiBQbHVnaW5Ub29sY2hhaW5TY2hlbWEub3B0aW9uYWwoKSxcbiAgc291cmNlRGlnZXN0OiB6LnN0cmluZygpLnJlZ2V4KFBMVUdJTl9TT1VSQ0VfRElHRVNUX1BBVFRFUk4sIHsgbWVzc2FnZTogJ211c3QgYmUgYSBzaGEyNTYgaGV4IGRpZ2VzdCcgfSkub3B0aW9uYWwoKSxcbn0pLnN0cmljdCgpLnN1cGVyUmVmaW5lKChzcGVjLCBjdHgpID0+IHtcbiAgZm9yIChjb25zdCBpc3N1ZSBvZiBidWlsZEltYWdlU3BlY1Byb2JsZW1zKHNwZWMpKSBjdHguYWRkSXNzdWUoeyBjb2RlOiAnY3VzdG9tJywgcGF0aDogW2lzc3VlLnBhdGhdLCBtZXNzYWdlOiBpc3N1ZS5tZXNzYWdlIH0pO1xufSk7XG5leHBvcnQgdHlwZSBQbHVnaW5TcGVjSW5wdXQgPSB6LmluZmVyPHR5cGVvZiBQbHVnaW5TcGVjU2NoZW1hPjtcblxuLyoqXG4gKiBUaGUgYEJ1aWxkSW1hZ2VgIHJ1bGVzIChkb2NzL3BsYW5zL2Jvb3RzdHJhcC1pbWFnZS12ZXJzaW9uaW5nLm1kIMKnMSk6IGFcbiAqIG1hbmFnZWQgYnVpbGQgaW1hZ2UgdXNlcyBhIG1hbmFnZWQgdG9vbGNoYWluIG5hbWUsIGNhcnJpZXMgYHRvb2xjaGFpbmAgYW5kXG4gKiBgc291cmNlRGlnZXN0YCwgYW5kIGRlY2xhcmVzIG5vdGhpbmcgYSBzdGVwIHdvdWxkIHJ1biAoYGNvbW1hbmRzYCxcbiAqIGBpbnN0YWxsQ29tbWFuZHNgLCBgbWV0YWRhdGFgKS4gQ29udmVyc2VseSBgdG9vbGNoYWluYCAvIGBzb3VyY2VEaWdlc3RgIGFyZVxuICogcmVmdXNlZCBvbiBldmVyeSBvdGhlciB0eXBlLiBUaGF0IGl0IGlzIGBwcmVidWlsdGAgaXMgdGhlIHVwbG9hZCBwYXRoJ3NcbiAqIGNoZWNrOiB0aGUgY2hlY2tlZC1pbiBgY29uZmlnLnlhbWxgIHNheXMgYGJ1aWxkX2ltYWdlYCB1bnRpbCB0aGUgYnVpbGRcbiAqIHNjcmlwdCBmbGlwcyBpdC5cbiAqL1xuaW50ZXJmYWNlIEJ1aWxkSW1hZ2VDaGVja0lucHV0IHtcbiAgbmFtZT86IHN0cmluZztcbiAgcGx1Z2luVHlwZT86IHN0cmluZztcbiAgdG9vbGNoYWluPzogdW5rbm93bjtcbiAgc291cmNlRGlnZXN0PzogdW5rbm93bjtcbiAgY29tbWFuZHM/OiB1bmtub3duO1xuICBpbnN0YWxsQ29tbWFuZHM/OiB1bmtub3duO1xuICBtZXRhZGF0YT86IHVua25vd247XG59XG5cbmZ1bmN0aW9uIGJ1aWxkSW1hZ2VTcGVjUHJvYmxlbXMoc3BlYzogQnVpbGRJbWFnZUNoZWNrSW5wdXQpOiBBcnJheTx7IHBhdGg6IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nIH0+IHtcbiAgY29uc3Qgb3V0OiBBcnJheTx7IHBhdGg6IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nIH0+ID0gW107XG4gIGlmIChzcGVjLnBsdWdpblR5cGUgIT09ICdCdWlsZEltYWdlJykge1xuICAgIGlmIChzcGVjLnRvb2xjaGFpbiAhPT0gdW5kZWZpbmVkKSBvdXQucHVzaCh7IHBhdGg6ICd0b29sY2hhaW4nLCBtZXNzYWdlOiAnaXMgb25seSBhbGxvd2VkIG9uIGEgQnVpbGRJbWFnZSBwbHVnaW4nIH0pO1xuICAgIGlmIChzcGVjLnNvdXJjZURpZ2VzdCAhPT0gdW5kZWZpbmVkKSBvdXQucHVzaCh7IHBhdGg6ICdzb3VyY2VEaWdlc3QnLCBtZXNzYWdlOiAnaXMgb25seSBhbGxvd2VkIG9uIGEgQnVpbGRJbWFnZSBwbHVnaW4nIH0pO1xuICAgIHJldHVybiBvdXQ7XG4gIH1cbiAgaWYgKHNwZWMubmFtZSAhPT0gdW5kZWZpbmVkICYmICFpc01hbmFnZWRUb29sY2hhaW5QbHVnaW4oc3BlYy5uYW1lKSkge1xuICAgIG91dC5wdXNoKHsgcGF0aDogJ3BsdWdpblR5cGUnLCBtZXNzYWdlOiAnQnVpbGRJbWFnZSBpcyByZXNlcnZlZCBmb3IgdGhlIG1hbmFnZWQgdG9vbGNoYWluIHBsdWdpbnMnIH0pO1xuICB9XG4gIGlmIChzcGVjLnRvb2xjaGFpbiA9PT0gdW5kZWZpbmVkKSBvdXQucHVzaCh7IHBhdGg6ICd0b29sY2hhaW4nLCBtZXNzYWdlOiAnaXMgcmVxdWlyZWQgb24gYSBCdWlsZEltYWdlIHBsdWdpbicgfSk7XG4gIGlmIChzcGVjLnNvdXJjZURpZ2VzdCA9PT0gdW5kZWZpbmVkKSBvdXQucHVzaCh7IHBhdGg6ICdzb3VyY2VEaWdlc3QnLCBtZXNzYWdlOiAnaXMgcmVxdWlyZWQgb24gYSBCdWlsZEltYWdlIHBsdWdpbicgfSk7XG4gIGZvciAoY29uc3QgZmllbGQgb2YgWydjb21tYW5kcycsICdpbnN0YWxsQ29tbWFuZHMnLCAnbWV0YWRhdGEnXSBhcyBjb25zdCkge1xuICAgIGlmIChzcGVjW2ZpZWxkXSAhPT0gdW5kZWZpbmVkKSBvdXQucHVzaCh7IHBhdGg6IGZpZWxkLCBtZXNzYWdlOiAnaXMgbm90IGFsbG93ZWQgb24gYSBCdWlsZEltYWdlIHBsdWdpbicgfSk7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cblxuLyoqXG4gKiBSZXN1bHQgb2YgY2hlY2tpbmcgYSBwYXJzZWQgWUFNTCBkb2N1bWVudCBhZ2FpbnN0IGEgcGFja2FnZSBzY2hlbWE6XG4gKiBgaXNzdWVzYCBhcmUgdGhlIGluZGl2aWR1YWwgcHJvYmxlbXMsIGBtZXNzYWdlYCB0aGUgb25lLWxpbmUgZm9ybSB0aGUgdXBsb2FkXG4gKiBBUEkgcmVwb3J0cyAoYHBsdWdpbi1zcGVjLnlhbWw6IDxwYXRoPjogPHByb2JsZW0+OyDigKZgKS5cbiAqL1xuZXhwb3J0IHR5cGUgUGFja2FnZUNoZWNrPFQ+ID0geyBvazogdHJ1ZTsgdmFsdWU6IFQgfSB8IHsgb2s6IGZhbHNlOyBpc3N1ZXM6IHN0cmluZ1tdOyBtZXNzYWdlOiBzdHJpbmcgfTtcblxuY29uc3QgaXNNYXBwaW5nID0gKHJhdzogdW5rbm93bik6IHJhdyBpcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PlxuICB0eXBlb2YgcmF3ID09PSAnb2JqZWN0JyAmJiByYXcgIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkocmF3KTtcblxuZnVuY3Rpb24gY2hlY2tBZ2FpbnN0PFQ+KGZpbGU6IHN0cmluZywgcmF3OiB1bmtub3duLCBzY2hlbWE6IHouWm9kVHlwZTxUPiwgd2l0aFBhdGg6IGJvb2xlYW4pOiBQYWNrYWdlQ2hlY2s8VD4ge1xuICBpZiAoIWlzTWFwcGluZyhyYXcpKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGAke2ZpbGV9IG11c3QgYmUgYSBZQU1MIG1hcHBpbmdgO1xuICAgIHJldHVybiB7IG9rOiBmYWxzZSwgaXNzdWVzOiBbbWVzc2FnZV0sIG1lc3NhZ2UgfTtcbiAgfVxuICBjb25zdCByZXN1bHQgPSBzY2hlbWEuc2FmZVBhcnNlKHJhdyk7XG4gIGlmIChyZXN1bHQuc3VjY2VzcykgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlOiByZXN1bHQuZGF0YSB9O1xuICBjb25zdCBpc3N1ZXMgPSByZXN1bHQuZXJyb3IuaXNzdWVzLm1hcChpID0+ICh3aXRoUGF0aCA/IGAke2kucGF0aC5qb2luKCcuJykgfHwgJyhyb290KSd9OiAke2kubWVzc2FnZX1gIDogaS5tZXNzYWdlKSk7XG4gIHJldHVybiB7IG9rOiBmYWxzZSwgaXNzdWVzLCBtZXNzYWdlOiBgJHtmaWxlfTogJHtpc3N1ZXMuam9pbignOyAnKX1gIH07XG59XG5cbi8qKiBDaGVjayBhIHBhcnNlZCBgcGx1Z2luLXNwZWMueWFtbGAgZG9jdW1lbnQgYWdhaW5zdCB7QGxpbmsgUGx1Z2luU3BlY1NjaGVtYX0uICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tQbHVnaW5TcGVjKHJhdzogdW5rbm93bik6IFBhY2thZ2VDaGVjazxQbHVnaW5TcGVjSW5wdXQ+IHtcbiAgcmV0dXJuIGNoZWNrQWdhaW5zdCgncGx1Z2luLXNwZWMueWFtbCcsIHJhdywgUGx1Z2luU3BlY1NjaGVtYSwgdHJ1ZSk7XG59XG5cbi8qKiBDaGVjayBhIHBhcnNlZCBgY29uZmlnLnlhbWxgIGRvY3VtZW50IGFnYWluc3Qge0BsaW5rIFBsdWdpbkNvbmZpZ1NjaGVtYX0uICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tQbHVnaW5Db25maWcocmF3OiB1bmtub3duKTogUGFja2FnZUNoZWNrPFBsdWdpbkNvbmZpZ0lucHV0PiB7XG4gIHJldHVybiBjaGVja0FnYWluc3QoJ2NvbmZpZy55YW1sJywgcmF3LCBQbHVnaW5Db25maWdTY2hlbWEsIGZhbHNlKTtcbn1cblxuLyoqXG4gKiBUaGUgcmVxdWlyZWQtZmllbGQgY29udHJhY3Q6IGBuYW1lYCBhbmQgYHZlcnNpb25gIGFsd2F5cywgYGNvbW1hbmRzYCBmb3JcbiAqIGV2ZXJ5IHR5cGUgZXhjZXB0IGBNYW51YWxBcHByb3ZhbFN0ZXBgIGFuZCBgQnVpbGRJbWFnZWAgKG5laXRoZXIgcnVuc1xuICogY29tbWFuZHMpLiBSZXR1cm5zIHRoZSB1cGxvYWQncyBtZXNzYWdlLCBvciBudWxsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGx1Z2luU3BlY1JlcXVpcmVkRmllbGRzUHJvYmxlbShzcGVjOiBQaWNrPFBsdWdpblNwZWNJbnB1dCwgJ25hbWUnIHwgJ3ZlcnNpb24nIHwgJ2NvbW1hbmRzJyB8ICdwbHVnaW5UeXBlJz4pOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgcnVuc05vQ29tbWFuZHMgPSBzcGVjLnBsdWdpblR5cGUgPT09ICdNYW51YWxBcHByb3ZhbFN0ZXAnIHx8IHNwZWMucGx1Z2luVHlwZSA9PT0gJ0J1aWxkSW1hZ2UnO1xuICBpZiAoIXNwZWMubmFtZSB8fCAhc3BlYy52ZXJzaW9uIHx8ICghcnVuc05vQ29tbWFuZHMgJiYgIXNwZWMuY29tbWFuZHMpKSB7XG4gICAgcmV0dXJuICdJbnZhbGlkIHNwZWM6IG5hbWUsIHZlcnNpb24sIGFuZCBjb21tYW5kcyBhcmUgcmVxdWlyZWQnO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuIl19
package/package.json CHANGED
@@ -124,10 +124,13 @@
124
124
  ],
125
125
  "tier-limits": [
126
126
  "lib/types/tier-limits.d.ts"
127
+ ],
128
+ "wire-vocabulary": [
129
+ "lib/types/wire-vocabulary.d.ts"
127
130
  ]
128
131
  }
129
132
  },
130
- "version": "5.2.11",
133
+ "version": "5.2.12",
131
134
  "bugs": {
132
135
  "url": "https://github.com/mwashburn160/pipeline-builder/issues"
133
136
  },
@@ -278,6 +281,10 @@
278
281
  "types": "./lib/types/tier-limits.d.ts",
279
282
  "default": "./lib/types/tier-limits.js"
280
283
  },
284
+ "./wire-vocabulary": {
285
+ "types": "./lib/types/wire-vocabulary.d.ts",
286
+ "default": "./lib/types/wire-vocabulary.js"
287
+ },
281
288
  "./testing": {
282
289
  "types": "./lib/testing/index.d.ts",
283
290
  "default": "./lib/testing/index.js"