openpond-sdk 0.5.6 → 0.5.7

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 (37) hide show
  1. package/TRAINING_PROTOCOL.md +19 -0
  2. package/dist/chunk-ARUJ3FJT.js +447 -0
  3. package/dist/chunk-ARUJ3FJT.js.map +7 -0
  4. package/dist/chunk-QFT2MCIC.js +1526 -0
  5. package/dist/chunk-QFT2MCIC.js.map +7 -0
  6. package/dist/{chunk-NF63YMOL.js → chunk-QUOW6URQ.js} +7 -9
  7. package/dist/{chunk-NF63YMOL.js.map → chunk-QUOW6URQ.js.map} +3 -3
  8. package/dist/{chunk-25TBEGXB.js → chunk-TKJU3BOW.js} +2 -2
  9. package/dist/chunk-UJZ3XEE3.js +902 -0
  10. package/dist/chunk-UJZ3XEE3.js.map +7 -0
  11. package/dist/{chunk-EV4PKJWN.js → chunk-UKVK7MRJ.js} +320 -208
  12. package/dist/chunk-UKVK7MRJ.js.map +7 -0
  13. package/dist/index.js +3 -3
  14. package/dist/learning.js +3 -3
  15. package/dist/model-taskset-runs.js +2 -2
  16. package/dist/refiner.js +1 -1
  17. package/dist/taskset-drafts.js +35 -33
  18. package/dist/taskset-drafts.js.map +1 -1
  19. package/dist/taskset-packages.js +51 -465
  20. package/dist/taskset-packages.js.map +4 -4
  21. package/dist/training-bundle.js +459 -0
  22. package/dist/training-bundle.js.map +7 -0
  23. package/dist/types/packages/sdk/src/taskset-authored-contracts.d.ts +2 -2
  24. package/dist/types/packages/sdk/src/taskset-authored-files.d.ts +1 -1
  25. package/dist/types/packages/sdk/src/taskset-draft-dataset-artifacts.d.ts +2 -2
  26. package/dist/types/packages/sdk/src/taskset-package-projection.d.ts +1 -1
  27. package/dist/types/packages/sdk/src/training-bundle-contracts.d.ts +287 -0
  28. package/dist/types/packages/sdk/src/training-bundle-contracts.d.ts.map +1 -0
  29. package/dist/types/packages/sdk/src/training-bundle.d.ts +48 -0
  30. package/dist/types/packages/sdk/src/training-bundle.d.ts.map +1 -0
  31. package/dist/types/packages/sdk/src/training-learning-batch.d.ts +719 -0
  32. package/dist/types/packages/sdk/src/training-learning-batch.d.ts.map +1 -0
  33. package/package.json +6 -2
  34. package/dist/chunk-EV4PKJWN.js.map +0 -7
  35. package/dist/chunk-PXB6YY36.js +0 -2395
  36. package/dist/chunk-PXB6YY36.js.map +0 -7
  37. /package/dist/{chunk-25TBEGXB.js.map → chunk-TKJU3BOW.js.map} +0 -0
@@ -0,0 +1,287 @@
1
+ import { z } from "zod";
2
+ export declare const ScopedSecretDeclarationSchema: z.ZodObject<{
3
+ id: z.ZodString;
4
+ purpose: z.ZodString;
5
+ audience: z.ZodEnum<{
6
+ environment: "environment";
7
+ orchestrator: "orchestrator";
8
+ privileged_scorer: "privileged_scorer";
9
+ trainer: "trainer";
10
+ infrastructure: "infrastructure";
11
+ }>;
12
+ required: z.ZodBoolean;
13
+ ttlSeconds: z.ZodNumber;
14
+ scopes: z.ZodDefault<z.ZodArray<z.ZodString>>;
15
+ }, z.core.$strict>;
16
+ export declare const OpaqueSecretLeaseRefSchema: z.ZodObject<{
17
+ declarationId: z.ZodString;
18
+ leaseRef: z.ZodString;
19
+ audience: z.ZodEnum<{
20
+ environment: "environment";
21
+ orchestrator: "orchestrator";
22
+ privileged_scorer: "privileged_scorer";
23
+ trainer: "trainer";
24
+ infrastructure: "infrastructure";
25
+ }>;
26
+ expiresAt: z.ZodString;
27
+ }, z.core.$strict>;
28
+ export type ScopedSecretDeclaration = z.infer<typeof ScopedSecretDeclarationSchema>;
29
+ export type OpaqueSecretLeaseRef = z.infer<typeof OpaqueSecretLeaseRefSchema>;
30
+ export declare const HarnessRuntimeTargetBindingSchema: z.ZodObject<{
31
+ adapterId: z.ZodString;
32
+ placement: z.ZodEnum<{
33
+ local: "local";
34
+ remote: "remote";
35
+ colocated: "colocated";
36
+ provider_native: "provider_native";
37
+ }>;
38
+ capabilityReceipt: z.ZodString;
39
+ runtimeVersion: z.ZodString;
40
+ dataPlane: z.ZodNullable<z.ZodObject<{
41
+ provider: z.ZodString;
42
+ dataPlaneId: z.ZodString;
43
+ cellId: z.ZodString;
44
+ runnerPoolId: z.ZodString;
45
+ runtimeImageDigest: z.ZodString;
46
+ capabilityReceipt: z.ZodString;
47
+ }, z.core.$strict>>;
48
+ }, z.core.$strict>;
49
+ export declare const ComputeTargetBindingSchema: z.ZodObject<{
50
+ adapterId: z.ZodString;
51
+ kind: z.ZodEnum<{
52
+ custom: "custom";
53
+ local: "local";
54
+ managed: "managed";
55
+ ssh: "ssh";
56
+ }>;
57
+ deviceOrPool: z.ZodString;
58
+ capabilityReceipt: z.ZodString;
59
+ provider: z.ZodNullable<z.ZodString>;
60
+ }, z.core.$strict>;
61
+ export declare const TrainingEngineBindingSchema: z.ZodObject<{
62
+ adapterId: z.ZodString;
63
+ workerVersion: z.ZodString;
64
+ workerImageDigest: z.ZodNullable<z.ZodString>;
65
+ upstreamRevision: z.ZodString;
66
+ capabilityReceipt: z.ZodString;
67
+ }, z.core.$strict>;
68
+ export declare const HarnessRunManifestContentSchema: z.ZodObject<{
69
+ schemaVersion: z.ZodLiteral<"openpond.harnessRunManifest.v1">;
70
+ id: z.ZodString;
71
+ harnessRelease: z.ZodObject<{
72
+ id: z.ZodString;
73
+ contentHash: z.ZodString;
74
+ }, z.core.$strict>;
75
+ datasetRelease: z.ZodObject<{
76
+ id: z.ZodString;
77
+ contentHash: z.ZodString;
78
+ }, z.core.$strict>;
79
+ evidenceSets: z.ZodArray<z.ZodObject<{
80
+ id: z.ZodString;
81
+ contentHash: z.ZodString;
82
+ }, z.core.$strict>>;
83
+ model: z.ZodObject<{
84
+ source: z.ZodString;
85
+ revision: z.ZodString;
86
+ artifactHash: z.ZodNullable<z.ZodString>;
87
+ tokenizerRevision: z.ZodString;
88
+ chatTemplateHash: z.ZodString;
89
+ }, z.core.$strict>;
90
+ recipe: z.ZodObject<{
91
+ method: z.ZodString;
92
+ version: z.ZodString;
93
+ configHash: z.ZodString;
94
+ }, z.core.$strict>;
95
+ runtimeTarget: z.ZodObject<{
96
+ adapterId: z.ZodString;
97
+ placement: z.ZodEnum<{
98
+ local: "local";
99
+ remote: "remote";
100
+ colocated: "colocated";
101
+ provider_native: "provider_native";
102
+ }>;
103
+ capabilityReceipt: z.ZodString;
104
+ runtimeVersion: z.ZodString;
105
+ dataPlane: z.ZodNullable<z.ZodObject<{
106
+ provider: z.ZodString;
107
+ dataPlaneId: z.ZodString;
108
+ cellId: z.ZodString;
109
+ runnerPoolId: z.ZodString;
110
+ runtimeImageDigest: z.ZodString;
111
+ capabilityReceipt: z.ZodString;
112
+ }, z.core.$strict>>;
113
+ }, z.core.$strict>;
114
+ computeTarget: z.ZodObject<{
115
+ adapterId: z.ZodString;
116
+ kind: z.ZodEnum<{
117
+ custom: "custom";
118
+ local: "local";
119
+ managed: "managed";
120
+ ssh: "ssh";
121
+ }>;
122
+ deviceOrPool: z.ZodString;
123
+ capabilityReceipt: z.ZodString;
124
+ provider: z.ZodNullable<z.ZodString>;
125
+ }, z.core.$strict>;
126
+ engine: z.ZodObject<{
127
+ adapterId: z.ZodString;
128
+ workerVersion: z.ZodString;
129
+ workerImageDigest: z.ZodNullable<z.ZodString>;
130
+ upstreamRevision: z.ZodString;
131
+ capabilityReceipt: z.ZodString;
132
+ }, z.core.$strict>;
133
+ resolvedBundleHash: z.ZodString;
134
+ secretLeaseRefs: z.ZodArray<z.ZodObject<{
135
+ declarationId: z.ZodString;
136
+ leaseRef: z.ZodString;
137
+ audience: z.ZodEnum<{
138
+ environment: "environment";
139
+ orchestrator: "orchestrator";
140
+ privileged_scorer: "privileged_scorer";
141
+ trainer: "trainer";
142
+ infrastructure: "infrastructure";
143
+ }>;
144
+ expiresAt: z.ZodString;
145
+ }, z.core.$strict>>;
146
+ approval: z.ZodObject<{
147
+ approvalHash: z.ZodString;
148
+ approvedAt: z.ZodString;
149
+ maximumSpendUsd: z.ZodNullable<z.ZodNumber>;
150
+ }, z.core.$strict>;
151
+ createdAt: z.ZodString;
152
+ }, z.core.$strict>;
153
+ export declare const HarnessRunManifestSchema: z.ZodObject<{
154
+ schemaVersion: z.ZodLiteral<"openpond.harnessRunManifest.v1">;
155
+ id: z.ZodString;
156
+ harnessRelease: z.ZodObject<{
157
+ id: z.ZodString;
158
+ contentHash: z.ZodString;
159
+ }, z.core.$strict>;
160
+ datasetRelease: z.ZodObject<{
161
+ id: z.ZodString;
162
+ contentHash: z.ZodString;
163
+ }, z.core.$strict>;
164
+ evidenceSets: z.ZodArray<z.ZodObject<{
165
+ id: z.ZodString;
166
+ contentHash: z.ZodString;
167
+ }, z.core.$strict>>;
168
+ model: z.ZodObject<{
169
+ source: z.ZodString;
170
+ revision: z.ZodString;
171
+ artifactHash: z.ZodNullable<z.ZodString>;
172
+ tokenizerRevision: z.ZodString;
173
+ chatTemplateHash: z.ZodString;
174
+ }, z.core.$strict>;
175
+ recipe: z.ZodObject<{
176
+ method: z.ZodString;
177
+ version: z.ZodString;
178
+ configHash: z.ZodString;
179
+ }, z.core.$strict>;
180
+ runtimeTarget: z.ZodObject<{
181
+ adapterId: z.ZodString;
182
+ placement: z.ZodEnum<{
183
+ local: "local";
184
+ remote: "remote";
185
+ colocated: "colocated";
186
+ provider_native: "provider_native";
187
+ }>;
188
+ capabilityReceipt: z.ZodString;
189
+ runtimeVersion: z.ZodString;
190
+ dataPlane: z.ZodNullable<z.ZodObject<{
191
+ provider: z.ZodString;
192
+ dataPlaneId: z.ZodString;
193
+ cellId: z.ZodString;
194
+ runnerPoolId: z.ZodString;
195
+ runtimeImageDigest: z.ZodString;
196
+ capabilityReceipt: z.ZodString;
197
+ }, z.core.$strict>>;
198
+ }, z.core.$strict>;
199
+ computeTarget: z.ZodObject<{
200
+ adapterId: z.ZodString;
201
+ kind: z.ZodEnum<{
202
+ custom: "custom";
203
+ local: "local";
204
+ managed: "managed";
205
+ ssh: "ssh";
206
+ }>;
207
+ deviceOrPool: z.ZodString;
208
+ capabilityReceipt: z.ZodString;
209
+ provider: z.ZodNullable<z.ZodString>;
210
+ }, z.core.$strict>;
211
+ engine: z.ZodObject<{
212
+ adapterId: z.ZodString;
213
+ workerVersion: z.ZodString;
214
+ workerImageDigest: z.ZodNullable<z.ZodString>;
215
+ upstreamRevision: z.ZodString;
216
+ capabilityReceipt: z.ZodString;
217
+ }, z.core.$strict>;
218
+ resolvedBundleHash: z.ZodString;
219
+ secretLeaseRefs: z.ZodArray<z.ZodObject<{
220
+ declarationId: z.ZodString;
221
+ leaseRef: z.ZodString;
222
+ audience: z.ZodEnum<{
223
+ environment: "environment";
224
+ orchestrator: "orchestrator";
225
+ privileged_scorer: "privileged_scorer";
226
+ trainer: "trainer";
227
+ infrastructure: "infrastructure";
228
+ }>;
229
+ expiresAt: z.ZodString;
230
+ }, z.core.$strict>>;
231
+ approval: z.ZodObject<{
232
+ approvalHash: z.ZodString;
233
+ approvedAt: z.ZodString;
234
+ maximumSpendUsd: z.ZodNullable<z.ZodNumber>;
235
+ }, z.core.$strict>;
236
+ createdAt: z.ZodString;
237
+ contentHash: z.ZodString;
238
+ }, z.core.$strict>;
239
+ export declare const ResolvedTrainingBundleContentSchema: z.ZodObject<{
240
+ schemaVersion: z.ZodLiteral<"openpond.resolvedTrainingBundle.v1">;
241
+ projection: z.ZodLiteral<"trainer">;
242
+ harnessRelease: z.ZodObject<{
243
+ id: z.ZodString;
244
+ contentHash: z.ZodString;
245
+ }, z.core.$strict>;
246
+ datasetRelease: z.ZodObject<{
247
+ id: z.ZodString;
248
+ contentHash: z.ZodString;
249
+ }, z.core.$strict>;
250
+ evidenceSetRelease: z.ZodNullable<z.ZodObject<{
251
+ id: z.ZodString;
252
+ contentHash: z.ZodString;
253
+ }, z.core.$strict>>;
254
+ files: z.ZodArray<z.ZodObject<{
255
+ path: z.ZodString;
256
+ sha256: z.ZodString;
257
+ sizeBytes: z.ZodNumber;
258
+ }, z.core.$strict>>;
259
+ }, z.core.$strict>;
260
+ export declare const ResolvedTrainingBundleManifestSchema: z.ZodObject<{
261
+ schemaVersion: z.ZodLiteral<"openpond.resolvedTrainingBundle.v1">;
262
+ projection: z.ZodLiteral<"trainer">;
263
+ harnessRelease: z.ZodObject<{
264
+ id: z.ZodString;
265
+ contentHash: z.ZodString;
266
+ }, z.core.$strict>;
267
+ datasetRelease: z.ZodObject<{
268
+ id: z.ZodString;
269
+ contentHash: z.ZodString;
270
+ }, z.core.$strict>;
271
+ evidenceSetRelease: z.ZodNullable<z.ZodObject<{
272
+ id: z.ZodString;
273
+ contentHash: z.ZodString;
274
+ }, z.core.$strict>>;
275
+ files: z.ZodArray<z.ZodObject<{
276
+ path: z.ZodString;
277
+ sha256: z.ZodString;
278
+ sizeBytes: z.ZodNumber;
279
+ }, z.core.$strict>>;
280
+ contentHash: z.ZodString;
281
+ }, z.core.$strict>;
282
+ export type HarnessRuntimeTargetBinding = z.infer<typeof HarnessRuntimeTargetBindingSchema>;
283
+ export type ComputeTargetBinding = z.infer<typeof ComputeTargetBindingSchema>;
284
+ export type TrainingEngineBinding = z.infer<typeof TrainingEngineBindingSchema>;
285
+ export type HarnessRunManifest = z.infer<typeof HarnessRunManifestSchema>;
286
+ export type ResolvedTrainingBundleManifest = z.infer<typeof ResolvedTrainingBundleManifestSchema>;
287
+ //# sourceMappingURL=training-bundle-contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"training-bundle-contracts.d.ts","sourceRoot":"","sources":["../../../../../src/training-bundle-contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;kBAe/B,CAAC;AAEZ,eAAO,MAAM,0BAA0B;;;;;;;;;;;kBAO5B,CAAC;AAEZ,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAC3C,OAAO,6BAA6B,CACrC,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;kBAkBnC,CAAC;AAEZ,eAAO,MAAM,0BAA0B;;;;;;;;;;;kBAQ5B,CAAC;AAEZ,eAAO,MAAM,2BAA2B;;;;;;kBAW7B,CAAC;AAEZ,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAqCjC,CAAC;AAEZ,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAE1B,CAAC;AAEZ,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;;;;;;;kBAmBrC,CAAC;AAEZ,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;;;;;;;kBAGpC,CAAC;AAEd,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAC/C,OAAO,iCAAiC,CACzC,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CACzC,OAAO,2BAA2B,CACnC,CAAC;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAClD,OAAO,oCAAoC,CAC5C,CAAC"}
@@ -0,0 +1,48 @@
1
+ import { type HarnessSourcePackage, type ImmutableReleaseRef, type VersionedReleaseRef } from "@openpond/harness";
2
+ import { type LearningTextAsset } from "@openpond/evals/learning";
3
+ import { type ComputeTargetBinding, type HarnessRunManifest, type HarnessRuntimeTargetBinding, type OpaqueSecretLeaseRef, type ResolvedTrainingBundleManifest, type TrainingEngineBinding } from "./training-bundle-contracts.js";
4
+ import type { ModelProject } from "./model-projects.js";
5
+ import type { Taskset } from "./taskset-authored-contracts.js";
6
+ import { type TasksetRewardExecution } from "./taskset-authored-portable-release.js";
7
+ import { type TrainingEvaluationSource } from "./training-evaluation-source.js";
8
+ export * from "./training-bundle-contracts.js";
9
+ export { materializeLearningBatchTaskset } from "./training-learning-batch.js";
10
+ export type TasksetTrainingBundle = {
11
+ manifest: HarnessRunManifest;
12
+ resolvedBundleManifest: ResolvedTrainingBundleManifest;
13
+ assets: ReadonlyMap<string, Uint8Array>;
14
+ profileRelease: VersionedReleaseRef;
15
+ harnessRelease: ImmutableReleaseRef;
16
+ tasksetRelease: ImmutableReleaseRef;
17
+ datasetRelease: ImmutableReleaseRef;
18
+ evidenceSetRelease: ImmutableReleaseRef | null;
19
+ };
20
+ /**
21
+ * Produces the one artifact the training worker consumes. The release refs in
22
+ * the manifest are immutable lineage identifiers, not separately materialized
23
+ * release objects.
24
+ */
25
+ export declare function buildTasksetTrainingBundle(input: {
26
+ taskset: Taskset;
27
+ modelProject: ModelProject;
28
+ modelRunId: string;
29
+ runtime: HarnessRuntimeTargetBinding;
30
+ compute: ComputeTargetBinding;
31
+ engine: TrainingEngineBinding;
32
+ approval: {
33
+ approvalHash: string;
34
+ approvedAt: string;
35
+ maximumSpendUsd: number | null;
36
+ };
37
+ secretLeaseRefs?: OpaqueSecretLeaseRef[];
38
+ openpondRelease: string;
39
+ workerProtocol: string;
40
+ harnessRelease: ImmutableReleaseRef;
41
+ tasksetRelease: ImmutableReleaseRef;
42
+ harnessSource?: HarnessSourcePackage | null;
43
+ tasksetAssetBytes?: ReadonlyMap<string, Uint8Array>;
44
+ rewardExecution?: TasksetRewardExecution;
45
+ verifierAssets?: LearningTextAsset[];
46
+ evaluationSource?: TrainingEvaluationSource;
47
+ }): TasksetTrainingBundle;
48
+ //# sourceMappingURL=training-bundle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"training-bundle.d.ts","sourceRoot":"","sources":["../../../../../src/training-bundle.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6H,KAAK,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7O,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC3F,OAAO,EAAwI,KAAK,oBAAoB,EAAE,KAAK,kBAAkB,EAAE,KAAK,2BAA2B,EAAE,KAAK,oBAAoB,EAAE,KAAK,8BAA8B,EAAE,KAAK,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACxW,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAE/D,OAAO,EAAyC,KAAK,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAC5H,OAAO,EAAsG,KAAK,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAEpL,cAAc,gCAAgC,CAAC;AAC/C,OAAO,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AAE/E,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,sBAAsB,EAAE,8BAA8B,CAAC;IACvD,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,cAAc,EAAE,mBAAmB,CAAC;IACpC,cAAc,EAAE,mBAAmB,CAAC;IACpC,cAAc,EAAE,mBAAmB,CAAC;IACpC,cAAc,EAAE,mBAAmB,CAAC;IACpC,kBAAkB,EAAE,mBAAmB,GAAG,IAAI,CAAC;CAChD,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,2BAA2B,CAAC;IACrC,OAAO,EAAE,oBAAoB,CAAC;IAC9B,MAAM,EAAE,qBAAqB,CAAC;IAC9B,QAAQ,EAAE;QACR,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;KAChC,CAAC;IACF,eAAe,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACzC,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,mBAAmB,CAAC;IACpC,cAAc,EAAE,mBAAmB,CAAC;IACpC,aAAa,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC5C,iBAAiB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACpD,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC,cAAc,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACrC,gBAAgB,CAAC,EAAE,wBAAwB,CAAC;CAC7C,GAAG,qBAAqB,CA8NxB"}