@fides-anima/fpp-protocol-core 1.0.2

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 (101) hide show
  1. package/LICENSE +95 -0
  2. package/README.md +41 -0
  3. package/SKILL.md +348 -0
  4. package/constitution.json +102 -0
  5. package/constitution.yaml +106 -0
  6. package/dist/adoption-disclosure.d.ts +35 -0
  7. package/dist/adoption-disclosure.d.ts.map +1 -0
  8. package/dist/adoption-disclosure.js +67 -0
  9. package/dist/adoption-disclosure.js.map +1 -0
  10. package/dist/adoption.d.ts +56 -0
  11. package/dist/adoption.d.ts.map +1 -0
  12. package/dist/adoption.js +97 -0
  13. package/dist/adoption.js.map +1 -0
  14. package/dist/canonical-json.d.ts +23 -0
  15. package/dist/canonical-json.d.ts.map +1 -0
  16. package/dist/canonical-json.js +60 -0
  17. package/dist/canonical-json.js.map +1 -0
  18. package/dist/capsules.d.ts +63 -0
  19. package/dist/capsules.d.ts.map +1 -0
  20. package/dist/capsules.js +94 -0
  21. package/dist/capsules.js.map +1 -0
  22. package/dist/claims.d.ts +62 -0
  23. package/dist/claims.d.ts.map +1 -0
  24. package/dist/claims.js +99 -0
  25. package/dist/claims.js.map +1 -0
  26. package/dist/digest.d.ts +38 -0
  27. package/dist/digest.d.ts.map +1 -0
  28. package/dist/digest.js +52 -0
  29. package/dist/digest.js.map +1 -0
  30. package/dist/disposition.d.ts +34 -0
  31. package/dist/disposition.d.ts.map +1 -0
  32. package/dist/disposition.js +51 -0
  33. package/dist/disposition.js.map +1 -0
  34. package/dist/emergency-override.d.ts +73 -0
  35. package/dist/emergency-override.d.ts.map +1 -0
  36. package/dist/emergency-override.js +102 -0
  37. package/dist/emergency-override.js.map +1 -0
  38. package/dist/evidence.d.ts +25 -0
  39. package/dist/evidence.d.ts.map +1 -0
  40. package/dist/evidence.js +30 -0
  41. package/dist/evidence.js.map +1 -0
  42. package/dist/freshness.d.ts +41 -0
  43. package/dist/freshness.d.ts.map +1 -0
  44. package/dist/freshness.js +66 -0
  45. package/dist/freshness.js.map +1 -0
  46. package/dist/governance.d.ts +87 -0
  47. package/dist/governance.d.ts.map +1 -0
  48. package/dist/governance.js +94 -0
  49. package/dist/governance.js.map +1 -0
  50. package/dist/identity.d.ts +43 -0
  51. package/dist/identity.d.ts.map +1 -0
  52. package/dist/identity.js +93 -0
  53. package/dist/identity.js.map +1 -0
  54. package/dist/index.d.ts +30 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +30 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/mandates.d.ts +80 -0
  59. package/dist/mandates.d.ts.map +1 -0
  60. package/dist/mandates.js +127 -0
  61. package/dist/mandates.js.map +1 -0
  62. package/dist/merkle.d.ts +31 -0
  63. package/dist/merkle.d.ts.map +1 -0
  64. package/dist/merkle.js +95 -0
  65. package/dist/merkle.js.map +1 -0
  66. package/dist/quorum.d.ts +133 -0
  67. package/dist/quorum.d.ts.map +1 -0
  68. package/dist/quorum.js +128 -0
  69. package/dist/quorum.js.map +1 -0
  70. package/dist/receipts.d.ts +77 -0
  71. package/dist/receipts.d.ts.map +1 -0
  72. package/dist/receipts.js +104 -0
  73. package/dist/receipts.js.map +1 -0
  74. package/dist/steward-authorization.d.ts +200 -0
  75. package/dist/steward-authorization.d.ts.map +1 -0
  76. package/dist/steward-authorization.js +483 -0
  77. package/dist/steward-authorization.js.map +1 -0
  78. package/dist/workspace-profile.d.ts +43 -0
  79. package/dist/workspace-profile.d.ts.map +1 -0
  80. package/dist/workspace-profile.js +91 -0
  81. package/dist/workspace-profile.js.map +1 -0
  82. package/package.json +56 -0
  83. package/src/adoption-disclosure.ts +120 -0
  84. package/src/adoption.ts +152 -0
  85. package/src/canonical-json.ts +70 -0
  86. package/src/capsules.ts +161 -0
  87. package/src/claims.ts +147 -0
  88. package/src/digest.ts +63 -0
  89. package/src/disposition.ts +74 -0
  90. package/src/emergency-override.ts +168 -0
  91. package/src/evidence.ts +48 -0
  92. package/src/freshness.ts +103 -0
  93. package/src/governance.ts +152 -0
  94. package/src/identity.ts +119 -0
  95. package/src/index.ts +270 -0
  96. package/src/mandates.ts +201 -0
  97. package/src/merkle.ts +138 -0
  98. package/src/quorum.ts +193 -0
  99. package/src/receipts.ts +150 -0
  100. package/src/steward-authorization.ts +657 -0
  101. package/src/workspace-profile.ts +134 -0
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Conformance receipt schema (emission deferred to later plans).
3
+ */
4
+ import { Type } from "@sinclair/typebox";
5
+ import { Value } from "@sinclair/typebox/value";
6
+ import { GovernanceEpochSchema, GovernanceModeSchema, } from "./governance.js";
7
+ const DigestHexSchema = Type.String({ pattern: "^[0-9a-f]{64}$" });
8
+ export const ReceiptInclusionEvidenceV1Schema = Type.Object({
9
+ evidenceVersion: Type.Literal(1),
10
+ logKind: Type.Literal("conformance-receipt"),
11
+ entry: Type.Object({
12
+ previousHash: DigestHexSchema,
13
+ timestamp: Type.String({ minLength: 1 }),
14
+ kind: Type.Literal("conformance-receipt"),
15
+ receipt: Type.Unknown(),
16
+ hash: DigestHexSchema,
17
+ }, { additionalProperties: false }),
18
+ proof: Type.Object({
19
+ leaf: DigestHexSchema,
20
+ index: Type.Integer({ minimum: 0 }),
21
+ path: Type.Array(Type.Object({
22
+ hash: DigestHexSchema,
23
+ position: Type.Union([
24
+ Type.Literal("left"),
25
+ Type.Literal("right"),
26
+ ]),
27
+ }, { additionalProperties: false })),
28
+ root: DigestHexSchema,
29
+ }, { additionalProperties: false }),
30
+ }, { additionalProperties: false });
31
+ export function parseReceiptInclusionEvidence(input) {
32
+ if (!Value.Check(ReceiptInclusionEvidenceV1Schema, input)) {
33
+ return { ok: false, error: "invalid ReceiptInclusionEvidenceV1" };
34
+ }
35
+ return { ok: true, evidence: input };
36
+ }
37
+ export const ConformanceReceiptV1Schema = Type.Union([
38
+ Type.Object({
39
+ schemaVersion: Type.Literal(1),
40
+ receiptClass: Type.Literal("conformance"),
41
+ actionDigest: DigestHexSchema,
42
+ policyId: Type.String({ minLength: 1 }),
43
+ policyVersion: Type.String({ minLength: 1 }),
44
+ implementationVersion: Type.String({ minLength: 1 }),
45
+ disposition: Type.Union([
46
+ Type.Literal("allow"),
47
+ Type.Literal("deny"),
48
+ Type.Literal("require_approval"),
49
+ Type.Literal("abstain"),
50
+ Type.Literal("allow_staged"),
51
+ Type.Literal("allow_minimal"),
52
+ ]),
53
+ authorization: Type.String({ minLength: 1 }),
54
+ outcome: Type.String({ minLength: 1 }),
55
+ issuedAt: Type.String({ minLength: 1 }),
56
+ constitutionHash: Type.Optional(DigestHexSchema),
57
+ classifierRulesetHash: Type.Optional(DigestHexSchema),
58
+ effectiveConfigHash: Type.Optional(DigestHexSchema),
59
+ // Forbidden when unpaired — both keys must be absent in this branch.
60
+ governanceEpoch: Type.Optional(Type.Never()),
61
+ governanceMode: Type.Optional(Type.Never()),
62
+ }, { additionalProperties: true }),
63
+ Type.Object({
64
+ schemaVersion: Type.Literal(1),
65
+ receiptClass: Type.Literal("conformance"),
66
+ actionDigest: DigestHexSchema,
67
+ policyId: Type.String({ minLength: 1 }),
68
+ policyVersion: Type.String({ minLength: 1 }),
69
+ implementationVersion: Type.String({ minLength: 1 }),
70
+ disposition: Type.Union([
71
+ Type.Literal("allow"),
72
+ Type.Literal("deny"),
73
+ Type.Literal("require_approval"),
74
+ Type.Literal("abstain"),
75
+ Type.Literal("allow_staged"),
76
+ Type.Literal("allow_minimal"),
77
+ ]),
78
+ authorization: Type.String({ minLength: 1 }),
79
+ outcome: Type.String({ minLength: 1 }),
80
+ issuedAt: Type.String({ minLength: 1 }),
81
+ constitutionHash: Type.Optional(DigestHexSchema),
82
+ classifierRulesetHash: Type.Optional(DigestHexSchema),
83
+ effectiveConfigHash: Type.Optional(DigestHexSchema),
84
+ /** Gateway governance binding — both fields required together. */
85
+ governanceEpoch: GovernanceEpochSchema,
86
+ governanceMode: GovernanceModeSchema,
87
+ }, { additionalProperties: true }),
88
+ ]);
89
+ export function parseConformanceReceipt(input) {
90
+ if (!Value.Check(ConformanceReceiptV1Schema, input)) {
91
+ return { ok: false, error: "invalid ConformanceReceiptV1" };
92
+ }
93
+ const issuedAt = input.issuedAt;
94
+ const issuedAtMs = Date.parse(issuedAt);
95
+ if (!Number.isFinite(issuedAtMs) ||
96
+ new Date(issuedAtMs).toISOString() !== issuedAt) {
97
+ return {
98
+ ok: false,
99
+ error: "invalid ConformanceReceiptV1: issuedAt must be canonical ISO-8601",
100
+ };
101
+ }
102
+ return { ok: true, receipt: input };
103
+ }
104
+ //# sourceMappingURL=receipts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"receipts.js","sourceRoot":"","sources":["../src/receipts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,200 @@
1
+ /**
2
+ * Steward / operator authorization wire contracts.
3
+ *
4
+ * Key-independent human steward identity and OpenPGP-signed authorization
5
+ * payloads. Verification backends live in `@fides-anima/fpp-steward-auth-core`;
6
+ * this module defines schemas, mint/parse helpers, and domain digests only.
7
+ */
8
+ import { type Static } from "@sinclair/typebox";
9
+ /**
10
+ * Domain separators for steward digests (not credentials).
11
+ * Object key is `authz` (not the secret-scanner trigger name) so static
12
+ * analyzers do not treat the domain string as an exposed API token.
13
+ */
14
+ export declare const STEWARD_DIGEST_DOMAINS: {
15
+ readonly evidence: "fpp:v2:steward-evidence";
16
+ readonly replay: "fpp:v2:steward-replay";
17
+ readonly attestation: "fpp:v2:steward-attestation";
18
+ readonly authz: "fpp:v2:steward-authorization";
19
+ readonly revocation: "fpp:v2:steward-authorization-revocation";
20
+ };
21
+ export type StewardIdV1 = `fpp:steward:v1:${string}`;
22
+ export type ParsedStewardIdV1 = {
23
+ kind: "v1";
24
+ raw: StewardIdV1;
25
+ idBody: string;
26
+ };
27
+ export type StewardIdParseResult = {
28
+ ok: true;
29
+ stewardId: ParsedStewardIdV1;
30
+ } | {
31
+ ok: false;
32
+ error: string;
33
+ };
34
+ export type ParsedKeyRef = {
35
+ algorithm: string;
36
+ identifier: string;
37
+ raw: string;
38
+ };
39
+ export type KeyRefParseResult = {
40
+ ok: true;
41
+ keyRef: ParsedKeyRef;
42
+ } | {
43
+ ok: false;
44
+ error: string;
45
+ };
46
+ /** Mint a key-independent steward ID from 128 random bits. */
47
+ export declare function mintStewardIdV1(): StewardIdV1;
48
+ export declare function isStewardIdV1(value: unknown): value is StewardIdV1;
49
+ export declare function parseStewardIdV1(value: unknown): StewardIdParseResult;
50
+ export declare const KeyRefSchema: import("@sinclair/typebox").TString;
51
+ export declare function parseKeyRef(value: unknown): KeyRefParseResult;
52
+ export declare const StewardKeyAttestationV1Schema: import("@sinclair/typebox").TObject<{
53
+ schemaVersion: import("@sinclair/typebox").TLiteral<1>;
54
+ kind: import("@sinclair/typebox").TLiteral<"steward-key-attestation">;
55
+ attestationId: import("@sinclair/typebox").TString;
56
+ operation: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"initial-bind">, import("@sinclair/typebox").TLiteral<"add">, import("@sinclair/typebox").TLiteral<"rotate">, import("@sinclair/typebox").TLiteral<"revoke">]>;
57
+ stewardId: import("@sinclair/typebox").TString;
58
+ audience: import("@sinclair/typebox").TString;
59
+ subjectKey: import("@sinclair/typebox").TObject<{
60
+ algorithm: import("@sinclair/typebox").TString;
61
+ keyRef: import("@sinclair/typebox").TString;
62
+ publicKeyArmored: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
63
+ }>;
64
+ replacesKeyRef: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
65
+ issuedAt: import("@sinclair/typebox").TString;
66
+ nonce: import("@sinclair/typebox").TString;
67
+ reason: import("@sinclair/typebox").TString;
68
+ }>;
69
+ export type StewardKeyAttestationV1 = Static<typeof StewardKeyAttestationV1Schema>;
70
+ export type StewardKeyAttestationParseResult = {
71
+ ok: true;
72
+ attestation: StewardKeyAttestationV1;
73
+ } | {
74
+ ok: false;
75
+ error: string;
76
+ };
77
+ /** Immutable local ledger policy caps bound into a signed genesis bootstrap. */
78
+ export declare const StewardBootstrapPolicyCapsV1Schema: import("@sinclair/typebox").TObject<{
79
+ instanceAudience: import("@sinclair/typebox").TString;
80
+ maxStandingLifetimeMs: import("@sinclair/typebox").TInteger;
81
+ maxStandingUses: import("@sinclair/typebox").TInteger;
82
+ maxOneShotLifetimeMs: import("@sinclair/typebox").TInteger;
83
+ allowedClockSkewMs: import("@sinclair/typebox").TInteger;
84
+ }>;
85
+ export type StewardBootstrapPolicyCapsV1 = Static<typeof StewardBootstrapPolicyCapsV1Schema>;
86
+ /**
87
+ * Signed steward genesis bundle: policy caps + initial key binding.
88
+ * Signed bytes are canonicalizeV2 of the full object (no private keys).
89
+ */
90
+ export declare const StewardBootstrapV1Schema: import("@sinclair/typebox").TObject<{
91
+ schemaVersion: import("@sinclair/typebox").TLiteral<1>;
92
+ kind: import("@sinclair/typebox").TLiteral<"steward-bootstrap">;
93
+ bootstrapId: import("@sinclair/typebox").TString;
94
+ stewardId: import("@sinclair/typebox").TString;
95
+ audience: import("@sinclair/typebox").TString;
96
+ policy: import("@sinclair/typebox").TObject<{
97
+ instanceAudience: import("@sinclair/typebox").TString;
98
+ maxStandingLifetimeMs: import("@sinclair/typebox").TInteger;
99
+ maxStandingUses: import("@sinclair/typebox").TInteger;
100
+ maxOneShotLifetimeMs: import("@sinclair/typebox").TInteger;
101
+ allowedClockSkewMs: import("@sinclair/typebox").TInteger;
102
+ }>;
103
+ initialBinding: import("@sinclair/typebox").TObject<{
104
+ schemaVersion: import("@sinclair/typebox").TLiteral<1>;
105
+ kind: import("@sinclair/typebox").TLiteral<"steward-key-attestation">;
106
+ attestationId: import("@sinclair/typebox").TString;
107
+ operation: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"initial-bind">, import("@sinclair/typebox").TLiteral<"add">, import("@sinclair/typebox").TLiteral<"rotate">, import("@sinclair/typebox").TLiteral<"revoke">]>;
108
+ stewardId: import("@sinclair/typebox").TString;
109
+ audience: import("@sinclair/typebox").TString;
110
+ subjectKey: import("@sinclair/typebox").TObject<{
111
+ algorithm: import("@sinclair/typebox").TString;
112
+ keyRef: import("@sinclair/typebox").TString;
113
+ publicKeyArmored: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
114
+ }>;
115
+ replacesKeyRef: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
116
+ issuedAt: import("@sinclair/typebox").TString;
117
+ nonce: import("@sinclair/typebox").TString;
118
+ reason: import("@sinclair/typebox").TString;
119
+ }>;
120
+ issuedAt: import("@sinclair/typebox").TString;
121
+ nonce: import("@sinclair/typebox").TString;
122
+ }>;
123
+ export type StewardBootstrapV1 = Static<typeof StewardBootstrapV1Schema>;
124
+ export type StewardBootstrapParseResult = {
125
+ ok: true;
126
+ bootstrap: StewardBootstrapV1;
127
+ } | {
128
+ ok: false;
129
+ error: string;
130
+ };
131
+ export declare const OperatorAuthorizationV1Schema: import("@sinclair/typebox").TObject<{
132
+ schemaVersion: import("@sinclair/typebox").TLiteral<1>;
133
+ kind: import("@sinclair/typebox").TLiteral<"operator-authorization">;
134
+ authorizationId: import("@sinclair/typebox").TString;
135
+ stewardId: import("@sinclair/typebox").TString;
136
+ signingKeyRef: import("@sinclair/typebox").TString;
137
+ audience: import("@sinclair/typebox").TString;
138
+ mode: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"one-shot">, import("@sinclair/typebox").TLiteral<"standing">]>;
139
+ scope: import("@sinclair/typebox").TObject<{
140
+ classifications: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
141
+ toolNames: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
142
+ resourcePaths: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
143
+ }>;
144
+ issuedAt: import("@sinclair/typebox").TString;
145
+ expiresAt: import("@sinclair/typebox").TString;
146
+ nonce: import("@sinclair/typebox").TString;
147
+ maxUses: import("@sinclair/typebox").TInteger;
148
+ reason: import("@sinclair/typebox").TString;
149
+ }>;
150
+ export type OperatorAuthorizationV1 = Static<typeof OperatorAuthorizationV1Schema>;
151
+ export type OperatorAuthorizationParseResult = {
152
+ ok: true;
153
+ authorization: OperatorAuthorizationV1;
154
+ } | {
155
+ ok: false;
156
+ error: string;
157
+ };
158
+ export declare const OperatorAuthorizationRevocationV1Schema: import("@sinclair/typebox").TObject<{
159
+ schemaVersion: import("@sinclair/typebox").TLiteral<1>;
160
+ kind: import("@sinclair/typebox").TLiteral<"operator-authorization-revocation">;
161
+ authorizationId: import("@sinclair/typebox").TString;
162
+ stewardId: import("@sinclair/typebox").TString;
163
+ signingKeyRef: import("@sinclair/typebox").TString;
164
+ audience: import("@sinclair/typebox").TString;
165
+ issuedAt: import("@sinclair/typebox").TString;
166
+ nonce: import("@sinclair/typebox").TString;
167
+ reason: import("@sinclair/typebox").TString;
168
+ }>;
169
+ export type OperatorAuthorizationRevocationV1 = Static<typeof OperatorAuthorizationRevocationV1Schema>;
170
+ export type OperatorAuthorizationRevocationParseResult = {
171
+ ok: true;
172
+ revocation: OperatorAuthorizationRevocationV1;
173
+ } | {
174
+ ok: false;
175
+ error: string;
176
+ };
177
+ export type BoundsResult = {
178
+ ok: true;
179
+ } | {
180
+ ok: false;
181
+ error: string;
182
+ };
183
+ export declare function containsOpenPgpSecretKeyArmor(value: string): boolean;
184
+ export declare function parseStewardKeyAttestation(input: unknown): StewardKeyAttestationParseResult;
185
+ export declare function parseStewardBootstrap(input: unknown): StewardBootstrapParseResult;
186
+ export declare function parseOperatorAuthorization(input: unknown): OperatorAuthorizationParseResult;
187
+ export declare function parseOperatorAuthorizationRevocation(input: unknown): OperatorAuthorizationRevocationParseResult;
188
+ /**
189
+ * Temporal / mode bounds for a schema-shaped authorization.
190
+ * Local policy caps (max lifetime / maxUses) are applied by steward-auth-core.
191
+ */
192
+ export declare function validateOperatorAuthorizationBounds(authorization: OperatorAuthorizationV1): BoundsResult;
193
+ /** Signed bytes are exactly canonicalizeV2 of these fields (no trailing newline). */
194
+ export declare function attestationSigningFields(attestation: StewardKeyAttestationV1): Record<string, unknown>;
195
+ export declare function bootstrapSigningFields(bootstrap: StewardBootstrapV1): Record<string, unknown>;
196
+ export declare function authorizationSigningFields(authorization: OperatorAuthorizationV1): Record<string, unknown>;
197
+ export declare function authorizationRevocationSigningFields(revocation: OperatorAuthorizationRevocationV1): Record<string, unknown>;
198
+ export declare function buildStewardEvidenceDigest(payload: unknown): string;
199
+ export declare function buildStewardReplayDigest(payload: unknown): string;
200
+ //# sourceMappingURL=steward-authorization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"steward-authorization.d.ts","sourceRoot":"","sources":["../src/steward-authorization.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAQ,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAsBtD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB;;;;;;CAMzB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,kBAAkB,MAAM,EAAE,CAAC;AAErD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,IAAI,CAAC;IACX,GAAG,EAAE,WAAW,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAC5B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,iBAAiB,CAAA;CAAE,GAC1C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjC,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,iBAAiB,GACzB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GAClC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAoBjC,8DAA8D;AAC9D,wBAAgB,eAAe,IAAI,WAAW,CAG7C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAElE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,CAmBrE;AAED,eAAO,MAAM,YAAY,qCAGvB,CAAC;AAEH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CAgC7D;AAWD,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;EAoBzC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAC1C,OAAO,6BAA6B,CACrC,CAAC;AAEF,MAAM,MAAM,gCAAgC,GACxC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,WAAW,EAAE,uBAAuB,CAAA;CAAE,GAClD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjC,gFAAgF;AAChF,eAAO,MAAM,kCAAkC;;;;;;EAS9C,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,MAAM,CAC/C,OAAO,kCAAkC,CAC1C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAapC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAEzE,MAAM,MAAM,2BAA2B,GACnC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,kBAAkB,CAAA;CAAE,GAC3C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAiBjC,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;EAiBzC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAC1C,OAAO,6BAA6B,CACrC,CAAC;AAEF,MAAM,MAAM,gCAAgC,GACxC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,aAAa,EAAE,uBAAuB,CAAA;CAAE,GACpD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjC,eAAO,MAAM,uCAAuC;;;;;;;;;;EAanD,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG,MAAM,CACpD,OAAO,uCAAuC,CAC/C,CAAC;AAEF,MAAM,MAAM,0CAA0C,GAClD;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,iCAAiC,CAAA;CAAE,GAC3D;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjC,MAAM,MAAM,YAAY,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AA6FvE,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEpE;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,GACb,gCAAgC,CAyDlC;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,OAAO,GACb,2BAA2B,CAgE7B;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,GACb,gCAAgC,CAkClC;AAED,wBAAgB,oCAAoC,CAClD,KAAK,EAAE,OAAO,GACb,0CAA0C,CAuB5C;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CACjD,aAAa,EAAE,uBAAuB,GACrC,YAAY,CAmBd;AAED,qFAAqF;AACrF,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,uBAAuB,GACnC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzB;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,kBAAkB,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzB;AAED,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,uBAAuB,GACrC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzB;AAED,wBAAgB,oCAAoC,CAClD,UAAU,EAAE,iCAAiC,GAC5C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzB;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAMnE;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAMjE"}