@crosshands/contract 0.1.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 (48) hide show
  1. package/LICENSE +21 -0
  2. package/dist/context.d.ts +19 -0
  3. package/dist/context.d.ts.map +1 -0
  4. package/dist/context.js +82 -0
  5. package/dist/context.js.map +1 -0
  6. package/dist/errors.d.ts +164 -0
  7. package/dist/errors.d.ts.map +1 -0
  8. package/dist/errors.js +65 -0
  9. package/dist/errors.js.map +1 -0
  10. package/dist/generate-schemas.d.ts +2 -0
  11. package/dist/generate-schemas.d.ts.map +1 -0
  12. package/dist/generate-schemas.js +8 -0
  13. package/dist/generate-schemas.js.map +1 -0
  14. package/dist/index.d.ts +8 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +8 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/json-schema.d.ts +306 -0
  19. package/dist/json-schema.d.ts.map +1 -0
  20. package/dist/json-schema.js +15 -0
  21. package/dist/json-schema.js.map +1 -0
  22. package/dist/operations.d.ts +2115 -0
  23. package/dist/operations.d.ts.map +1 -0
  24. package/dist/operations.js +205 -0
  25. package/dist/operations.js.map +1 -0
  26. package/dist/provider.d.ts +135 -0
  27. package/dist/provider.d.ts.map +1 -0
  28. package/dist/provider.js +56 -0
  29. package/dist/provider.js.map +1 -0
  30. package/dist/schemas.d.ts +499 -0
  31. package/dist/schemas.d.ts.map +1 -0
  32. package/dist/schemas.js +138 -0
  33. package/dist/schemas.js.map +1 -0
  34. package/dist/versions.d.ts +31 -0
  35. package/dist/versions.d.ts.map +1 -0
  36. package/dist/versions.js +28 -0
  37. package/dist/versions.js.map +1 -0
  38. package/package.json +39 -0
  39. package/schemas/contract.json +7572 -0
  40. package/src/context.ts +107 -0
  41. package/src/errors.ts +82 -0
  42. package/src/generate-schemas.ts +9 -0
  43. package/src/index.ts +7 -0
  44. package/src/json-schema.ts +17 -0
  45. package/src/operations.ts +224 -0
  46. package/src/provider.ts +82 -0
  47. package/src/schemas.ts +161 -0
  48. package/src/versions.ts +46 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../src/operations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,205 @@
1
+ import { z } from 'zod';
2
+ import { AppInfoSchema, InteractionContextTokenSchema, MutationResultSchema, ProviderCapabilitiesSchema, ScreenshotSchema, SnapshotResultSchema, TargetReferenceSchema, WindowInfoSchema } from './schemas.js';
3
+ const EmptyInputSchema = z.object({}).strict();
4
+ const AppQuerySchema = z.string().min(1).max(512);
5
+ const WindowSelectorSchema = z.union([
6
+ z.object({ id: z.string().min(1) }).strict(),
7
+ z.object({ index: z.number().int().nonnegative() }).strict()
8
+ ]);
9
+ const CaptureOptionsShape = {
10
+ captureScreenshot: z.boolean().optional(),
11
+ restoreWindow: z.boolean().optional()
12
+ };
13
+ const ContextWindowTargetSchema = z.object({ kind: z.literal('context-window') }).strict();
14
+ const ElementIndexTargetSchema = z
15
+ .object({ kind: z.literal('element'), elementIndex: z.number().int().nonnegative() })
16
+ .strict();
17
+ const CoordinateTargetSchema = z
18
+ .object({
19
+ kind: z.literal('coordinate'),
20
+ window: TargetReferenceSchema.optional(),
21
+ x: z.number().finite(),
22
+ y: z.number().finite()
23
+ })
24
+ .strict();
25
+ const ElementTargetSchema = z
26
+ .object({ kind: z.literal('element'), ref: TargetReferenceSchema })
27
+ .strict();
28
+ const ElementActionTargetSchema = z.union([ElementTargetSchema, ElementIndexTargetSchema]);
29
+ const ContextWindowMutationBaseShape = {
30
+ contextToken: InteractionContextTokenSchema,
31
+ app: AppQuerySchema.optional(),
32
+ target: ContextWindowTargetSchema,
33
+ ...CaptureOptionsShape
34
+ };
35
+ const ElementMutationBaseShape = {
36
+ contextToken: InteractionContextTokenSchema,
37
+ app: AppQuerySchema.optional(),
38
+ target: ElementActionTargetSchema,
39
+ ...CaptureOptionsShape
40
+ };
41
+ const ActionTargetSchema = z.union([
42
+ ElementTargetSchema,
43
+ ElementIndexTargetSchema,
44
+ CoordinateTargetSchema,
45
+ ContextWindowTargetSchema
46
+ ]);
47
+ export const CLICK_MODIFIER_TOKENS = [
48
+ 'Shift',
49
+ 'Ctrl',
50
+ 'Control',
51
+ 'Alt',
52
+ 'Option',
53
+ 'Meta',
54
+ 'Cmd',
55
+ 'Command',
56
+ 'Super',
57
+ 'Win',
58
+ 'CmdOrCtrl',
59
+ 'CommandOrControl',
60
+ 'shift',
61
+ 'ctrl',
62
+ 'control',
63
+ 'alt',
64
+ 'option',
65
+ 'meta',
66
+ 'cmd',
67
+ 'command',
68
+ 'super',
69
+ 'win',
70
+ 'cmdorctrl',
71
+ 'commandorcontrol'
72
+ ];
73
+ const ClickModifierTokenSchema = z.enum(CLICK_MODIFIER_TOKENS);
74
+ const PermissionsResultSchema = z
75
+ .object({
76
+ permissions: z.record(z.string(), z.enum(['granted', 'denied', 'unknown', 'not_required']))
77
+ })
78
+ .strict();
79
+ const AppListResultSchema = z.object({ apps: z.array(AppInfoSchema) }).strict();
80
+ const WindowListResultSchema = z.object({ windows: z.array(WindowInfoSchema) }).strict();
81
+ export const COMPUTER_OPERATIONS = {
82
+ capabilities: {
83
+ mutation: false,
84
+ input: EmptyInputSchema,
85
+ output: ProviderCapabilitiesSchema
86
+ },
87
+ permissions: {
88
+ mutation: false,
89
+ input: z.object({ id: z.enum(['accessibility', 'screenshots']).optional() }).strict(),
90
+ output: PermissionsResultSchema
91
+ },
92
+ listApps: {
93
+ mutation: false,
94
+ input: EmptyInputSchema,
95
+ output: AppListResultSchema
96
+ },
97
+ listWindows: {
98
+ mutation: false,
99
+ input: z.object({ app: AppQuerySchema }).strict(),
100
+ output: WindowListResultSchema
101
+ },
102
+ getAppState: {
103
+ mutation: false,
104
+ input: z
105
+ .object({
106
+ app: AppQuerySchema,
107
+ window: WindowSelectorSchema.optional(),
108
+ ...CaptureOptionsShape
109
+ })
110
+ .strict(),
111
+ output: SnapshotResultSchema
112
+ },
113
+ click: {
114
+ mutation: true,
115
+ input: z
116
+ .object({
117
+ contextToken: InteractionContextTokenSchema,
118
+ app: AppQuerySchema.optional(),
119
+ target: ActionTargetSchema,
120
+ clickCount: z.number().int().min(1).max(3).optional(),
121
+ button: z.enum(['left', 'right', 'middle']).optional(),
122
+ modifiers: z.array(ClickModifierTokenSchema).min(1).max(4).optional(),
123
+ ...CaptureOptionsShape
124
+ })
125
+ .strict(),
126
+ output: MutationResultSchema
127
+ },
128
+ performSecondaryAction: {
129
+ mutation: true,
130
+ input: z.object({ ...ElementMutationBaseShape, action: z.string().min(1).max(256) }).strict(),
131
+ output: MutationResultSchema
132
+ },
133
+ scroll: {
134
+ mutation: true,
135
+ input: z
136
+ .object({
137
+ contextToken: InteractionContextTokenSchema,
138
+ app: AppQuerySchema.optional(),
139
+ target: ActionTargetSchema,
140
+ direction: z.enum(['up', 'down', 'left', 'right']),
141
+ pages: z.number().int().min(1).max(100).optional(),
142
+ ...CaptureOptionsShape
143
+ })
144
+ .strict(),
145
+ output: MutationResultSchema
146
+ },
147
+ drag: {
148
+ mutation: true,
149
+ input: z
150
+ .object({
151
+ contextToken: InteractionContextTokenSchema,
152
+ app: AppQuerySchema.optional(),
153
+ from: ActionTargetSchema,
154
+ to: ActionTargetSchema,
155
+ durationMs: z.number().int().min(50).max(30_000).optional(),
156
+ ...CaptureOptionsShape
157
+ })
158
+ .strict(),
159
+ output: MutationResultSchema
160
+ },
161
+ typeText: {
162
+ mutation: true,
163
+ input: z
164
+ .object({ ...ContextWindowMutationBaseShape, text: z.string().max(1_000_000) })
165
+ .strict(),
166
+ output: MutationResultSchema
167
+ },
168
+ pressKey: {
169
+ mutation: true,
170
+ input: z
171
+ .object({ ...ContextWindowMutationBaseShape, key: z.string().min(1).max(128) })
172
+ .strict(),
173
+ output: MutationResultSchema
174
+ },
175
+ hotkey: {
176
+ mutation: true,
177
+ input: z
178
+ .object({
179
+ ...ContextWindowMutationBaseShape,
180
+ keys: z.array(z.string().min(1).max(128)).min(2).max(5)
181
+ })
182
+ .strict(),
183
+ output: MutationResultSchema
184
+ },
185
+ pasteText: {
186
+ mutation: true,
187
+ input: z
188
+ .object({ ...ContextWindowMutationBaseShape, text: z.string().max(1_000_000) })
189
+ .strict(),
190
+ output: MutationResultSchema
191
+ },
192
+ setValue: {
193
+ mutation: true,
194
+ input: z.object({ ...ElementMutationBaseShape, value: z.string().max(1_000_000) }).strict(),
195
+ output: MutationResultSchema
196
+ }
197
+ };
198
+ export function parseOperationInput(operation, input) {
199
+ return COMPUTER_OPERATIONS[operation].input.parse(input);
200
+ }
201
+ export function parseOperationOutput(operation, output) {
202
+ return COMPUTER_OPERATIONS[operation].output.parse(output);
203
+ }
204
+ export const ScreenshotOutputSchema = ScreenshotSchema;
205
+ //# sourceMappingURL=operations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations.js","sourceRoot":"","sources":["../src/operations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,135 @@
1
+ import { z } from 'zod';
2
+ import type { SerializedComputerError } from './errors.js';
3
+ import type { ComputerOperationName } from './operations.js';
4
+ import { ProviderHandshakeSchema } from './schemas.js';
5
+ export declare const ProviderRequestSchema: z.ZodObject<{
6
+ requestId: z.ZodString;
7
+ operation: z.ZodEnum<{
8
+ permissions: "permissions";
9
+ capabilities: "capabilities";
10
+ listApps: "listApps";
11
+ listWindows: "listWindows";
12
+ getAppState: "getAppState";
13
+ click: "click";
14
+ performSecondaryAction: "performSecondaryAction";
15
+ scroll: "scroll";
16
+ drag: "drag";
17
+ typeText: "typeText";
18
+ pressKey: "pressKey";
19
+ hotkey: "hotkey";
20
+ pasteText: "pasteText";
21
+ setValue: "setValue";
22
+ }>;
23
+ input: z.ZodUnknown;
24
+ deadlineAt: z.ZodNumber;
25
+ }, z.core.$strict>;
26
+ export declare const ProviderResponseSchema: z.ZodUnion<readonly [z.ZodObject<{
27
+ requestId: z.ZodString;
28
+ dispatched: z.ZodBoolean;
29
+ result: z.ZodUnknown;
30
+ }, z.core.$strict>, z.ZodObject<{
31
+ requestId: z.ZodString;
32
+ dispatched: z.ZodBoolean;
33
+ error: z.ZodObject<{
34
+ code: z.ZodString;
35
+ message: z.ZodString;
36
+ retry: z.ZodBoolean;
37
+ remediation: z.ZodString;
38
+ details: z.ZodOptional<z.ZodUnknown>;
39
+ }, z.core.$strict>;
40
+ }, z.core.$strict>]>;
41
+ export declare const ProviderProtocolFrameSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
42
+ type: z.ZodLiteral<"handshake">;
43
+ payload: z.ZodObject<{
44
+ provider: z.ZodString;
45
+ generation: z.ZodString;
46
+ graphicalSessionId: z.ZodString;
47
+ providerProtocol: z.ZodNumber;
48
+ publicContract: z.ZodString;
49
+ capabilities: z.ZodObject<{
50
+ platform: z.ZodEnum<{
51
+ darwin: "darwin";
52
+ win32: "win32";
53
+ linux: "linux";
54
+ }>;
55
+ provider: z.ZodString;
56
+ providerVersion: z.ZodString;
57
+ operations: z.ZodRecord<z.ZodString, z.ZodBoolean>;
58
+ permissions: z.ZodRecord<z.ZodString, z.ZodEnum<{
59
+ unknown: "unknown";
60
+ granted: "granted";
61
+ denied: "denied";
62
+ not_required: "not_required";
63
+ }>>;
64
+ }, z.core.$strict>;
65
+ }, z.core.$strict>;
66
+ }, z.core.$strict>, z.ZodObject<{
67
+ type: z.ZodLiteral<"request">;
68
+ payload: z.ZodObject<{
69
+ requestId: z.ZodString;
70
+ operation: z.ZodEnum<{
71
+ permissions: "permissions";
72
+ capabilities: "capabilities";
73
+ listApps: "listApps";
74
+ listWindows: "listWindows";
75
+ getAppState: "getAppState";
76
+ click: "click";
77
+ performSecondaryAction: "performSecondaryAction";
78
+ scroll: "scroll";
79
+ drag: "drag";
80
+ typeText: "typeText";
81
+ pressKey: "pressKey";
82
+ hotkey: "hotkey";
83
+ pasteText: "pasteText";
84
+ setValue: "setValue";
85
+ }>;
86
+ input: z.ZodUnknown;
87
+ deadlineAt: z.ZodNumber;
88
+ }, z.core.$strict>;
89
+ }, z.core.$strict>, z.ZodObject<{
90
+ type: z.ZodLiteral<"response">;
91
+ payload: z.ZodUnion<readonly [z.ZodObject<{
92
+ requestId: z.ZodString;
93
+ dispatched: z.ZodBoolean;
94
+ result: z.ZodUnknown;
95
+ }, z.core.$strict>, z.ZodObject<{
96
+ requestId: z.ZodString;
97
+ dispatched: z.ZodBoolean;
98
+ error: z.ZodObject<{
99
+ code: z.ZodString;
100
+ message: z.ZodString;
101
+ retry: z.ZodBoolean;
102
+ remediation: z.ZodString;
103
+ details: z.ZodOptional<z.ZodUnknown>;
104
+ }, z.core.$strict>;
105
+ }, z.core.$strict>]>;
106
+ }, z.core.$strict>, z.ZodObject<{
107
+ type: z.ZodLiteral<"cancel">;
108
+ requestId: z.ZodString;
109
+ }, z.core.$strict>], "type">;
110
+ export type ProviderRequest = {
111
+ requestId: string;
112
+ operation: ComputerOperationName;
113
+ input: unknown;
114
+ deadlineAt: number;
115
+ };
116
+ export type ProviderResponse = {
117
+ requestId: string;
118
+ dispatched: boolean;
119
+ result: unknown;
120
+ error?: never;
121
+ } | {
122
+ requestId: string;
123
+ dispatched: boolean;
124
+ result?: never;
125
+ error: SerializedComputerError;
126
+ };
127
+ export type ProviderHandshake = z.infer<typeof ProviderHandshakeSchema>;
128
+ export interface ComputerProvider {
129
+ readonly generation: string;
130
+ start(): Promise<ProviderHandshake>;
131
+ dispatch(request: ProviderRequest): Promise<ProviderResponse>;
132
+ cancel(requestId: string): Promise<void>;
133
+ close(): Promise<void>;
134
+ }
135
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;AAEtD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;kBAsBvB,CAAA;AAEX,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;oBAuBjC,CAAA;AAEF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAKtC,CAAA;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,qBAAqB,CAAA;IAChC,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,gBAAgB,GACxB;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,GAC1E;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,uBAAuB,CAAA;CAAE,CAAA;AAE9F,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAEvE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,KAAK,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAA;IACnC,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAC7D,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB"}
@@ -0,0 +1,56 @@
1
+ import { z } from 'zod';
2
+ import { ProviderHandshakeSchema } from './schemas.js';
3
+ export const ProviderRequestSchema = z
4
+ .object({
5
+ requestId: z.string().min(1),
6
+ operation: z.enum([
7
+ 'capabilities',
8
+ 'permissions',
9
+ 'listApps',
10
+ 'listWindows',
11
+ 'getAppState',
12
+ 'click',
13
+ 'performSecondaryAction',
14
+ 'scroll',
15
+ 'drag',
16
+ 'typeText',
17
+ 'pressKey',
18
+ 'hotkey',
19
+ 'pasteText',
20
+ 'setValue'
21
+ ]),
22
+ input: z.unknown(),
23
+ deadlineAt: z.number()
24
+ })
25
+ .strict();
26
+ export const ProviderResponseSchema = z.union([
27
+ z
28
+ .object({
29
+ requestId: z.string().min(1),
30
+ dispatched: z.boolean(),
31
+ result: z.unknown()
32
+ })
33
+ .strict(),
34
+ z
35
+ .object({
36
+ requestId: z.string().min(1),
37
+ dispatched: z.boolean(),
38
+ error: z
39
+ .object({
40
+ code: z.string().min(1),
41
+ message: z.string().min(1),
42
+ retry: z.boolean(),
43
+ remediation: z.string().min(1),
44
+ details: z.unknown().optional()
45
+ })
46
+ .strict()
47
+ })
48
+ .strict()
49
+ ]);
50
+ export const ProviderProtocolFrameSchema = z.discriminatedUnion('type', [
51
+ z.object({ type: z.literal('handshake'), payload: ProviderHandshakeSchema }).strict(),
52
+ z.object({ type: z.literal('request'), payload: ProviderRequestSchema }).strict(),
53
+ z.object({ type: z.literal('response'), payload: ProviderResponseSchema }).strict(),
54
+ z.object({ type: z.literal('cancel'), requestId: z.string().min(1) }).strict()
55
+ ]);
56
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;AAEtD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,MAAM,CAAC;IACN,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC;QAChB,cAAc;QACd,aAAa;QACb,UAAU;QACV,aAAa;QACb,aAAa;QACb,OAAO;QACP,wBAAwB;QACxB,QAAQ;QACR,MAAM;QACN,UAAU;QACV,UAAU;QACV,QAAQ;QACR,WAAW;QACX,UAAU;KACX,CAAC;IACF,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE;IAClB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;CACvB,CAAC;KACD,MAAM,EAAE,CAAA;AAEX,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC;IAC5C,CAAC;SACE,MAAM,CAAC;QACN,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5B,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE;QACvB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;KACpB,CAAC;SACD,MAAM,EAAE;IACX,CAAC;SACE,MAAM,CAAC;QACN,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5B,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE;QACvB,KAAK,EAAE,CAAC;aACL,MAAM,CAAC;YACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACvB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1B,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE;YAClB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9B,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;SAChC,CAAC;aACD,MAAM,EAAE;KACZ,CAAC;SACD,MAAM,EAAE;CACZ,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IACtE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC,CAAC,MAAM,EAAE;IACrF,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE;IACjF,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAC,MAAM,EAAE;IACnF,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;CAC/E,CAAC,CAAA"}