digital-tasks 2.1.3 → 2.4.0
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.
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +18 -0
- package/README.md +560 -0
- package/dist/client.d.ts +202 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +85 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +9 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -6
- package/dist/index.js.map +1 -1
- package/dist/markdown.d.ts.map +1 -1
- package/dist/markdown.js +48 -27
- package/dist/markdown.js.map +1 -1
- package/dist/project.d.ts.map +1 -1
- package/dist/project.js +48 -30
- package/dist/project.js.map +1 -1
- package/dist/queue.d.ts.map +1 -1
- package/dist/queue.js +70 -31
- package/dist/queue.js.map +1 -1
- package/dist/task.d.ts +1 -1
- package/dist/task.d.ts.map +1 -1
- package/dist/task.js +122 -60
- package/dist/task.js.map +1 -1
- package/dist/types.d.ts +135 -22
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +10 -2
- package/dist/types.js.map +1 -1
- package/dist/worker.d.ts +264 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +656 -0
- package/dist/worker.js.map +1 -0
- package/package.json +29 -14
- package/src/client.ts +268 -0
- package/src/index.ts +12 -10
- package/src/markdown.ts +63 -48
- package/src/project.ts +57 -42
- package/src/queue.ts +76 -37
- package/src/task.ts +132 -75
- package/src/types.ts +177 -40
- package/src/worker.ts +959 -0
- package/test/project.test.ts +28 -84
- package/test/queue.test.ts +51 -24
- package/test/task.test.ts +80 -27
- package/test/worker.test.ts +1158 -0
- package/tsconfig.json +2 -13
- package/vitest.config.ts +48 -0
- package/wrangler.jsonc +44 -0
- package/LICENSE +0 -21
- package/dist/function-task.d.ts +0 -319
- package/dist/function-task.d.ts.map +0 -1
- package/dist/function-task.js +0 -286
- package/dist/function-task.js.map +0 -1
- package/src/index.js +0 -73
- package/src/markdown.js +0 -509
- package/src/project.js +0 -396
- package/src/queue.js +0 -346
- package/src/task.js +0 -320
- package/src/types.js +0 -14
package/dist/worker.d.ts
ADDED
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task Worker - provides task management via RPC
|
|
3
|
+
*
|
|
4
|
+
* This worker can be deployed to Cloudflare Workers or run locally via Miniflare.
|
|
5
|
+
* It exposes TaskServiceCore via Workers RPC through the TaskService WorkerEntrypoint.
|
|
6
|
+
*
|
|
7
|
+
* Uses Cloudflare Workers RPC (WorkerEntrypoint, RpcTarget) for communication.
|
|
8
|
+
* Uses Durable Objects for task state persistence.
|
|
9
|
+
*
|
|
10
|
+
* @packageDocumentation
|
|
11
|
+
*/
|
|
12
|
+
import { WorkerEntrypoint, RpcTarget, DurableObject } from 'cloudflare:workers';
|
|
13
|
+
declare interface DurableObjectNamespace<T = unknown> {
|
|
14
|
+
idFromName(name: string): DurableObjectId;
|
|
15
|
+
idFromString(id: string): DurableObjectId;
|
|
16
|
+
newUniqueId(): DurableObjectId;
|
|
17
|
+
get(id: DurableObjectId): DurableObjectStub<T>;
|
|
18
|
+
}
|
|
19
|
+
declare interface DurableObjectId {
|
|
20
|
+
toString(): string;
|
|
21
|
+
equals(other: DurableObjectId): boolean;
|
|
22
|
+
}
|
|
23
|
+
type DurableObjectStub<T = unknown> = T & {
|
|
24
|
+
id: DurableObjectId;
|
|
25
|
+
name?: string;
|
|
26
|
+
};
|
|
27
|
+
declare interface DurableObjectState {
|
|
28
|
+
id: DurableObjectId;
|
|
29
|
+
storage: DurableObjectStorage;
|
|
30
|
+
blockConcurrencyWhile<T>(callback: () => Promise<T>): Promise<T>;
|
|
31
|
+
}
|
|
32
|
+
declare interface DurableObjectStorage {
|
|
33
|
+
get<T>(key: string): Promise<T | undefined>;
|
|
34
|
+
get<T>(keys: string[]): Promise<Map<string, T>>;
|
|
35
|
+
put<T>(key: string, value: T): Promise<void>;
|
|
36
|
+
put<T>(entries: Record<string, T>): Promise<void>;
|
|
37
|
+
delete(key: string): Promise<boolean>;
|
|
38
|
+
delete(keys: string[]): Promise<number>;
|
|
39
|
+
list<T>(options?: {
|
|
40
|
+
prefix?: string;
|
|
41
|
+
limit?: number;
|
|
42
|
+
start?: string;
|
|
43
|
+
end?: string;
|
|
44
|
+
}): Promise<Map<string, T>>;
|
|
45
|
+
}
|
|
46
|
+
declare interface Queue<T = unknown> {
|
|
47
|
+
send(message: T, options?: {
|
|
48
|
+
contentType?: string;
|
|
49
|
+
}): Promise<void>;
|
|
50
|
+
sendBatch(messages: {
|
|
51
|
+
body: T;
|
|
52
|
+
contentType?: string;
|
|
53
|
+
}[]): Promise<void>;
|
|
54
|
+
}
|
|
55
|
+
declare interface Ai {
|
|
56
|
+
run(model: string, inputs: unknown): Promise<unknown>;
|
|
57
|
+
}
|
|
58
|
+
export type TaskStatus = 'pending' | 'scheduled' | 'queued' | 'blocked' | 'in_progress' | 'completed' | 'failed' | 'cancelled';
|
|
59
|
+
export type TaskPriority = 'low' | 'normal' | 'high' | 'urgent' | 'critical';
|
|
60
|
+
export interface WorkerRef {
|
|
61
|
+
type: 'agent' | 'human' | 'team' | 'any';
|
|
62
|
+
id: string;
|
|
63
|
+
name?: string;
|
|
64
|
+
}
|
|
65
|
+
export interface TaskDependency {
|
|
66
|
+
type: 'blocked_by';
|
|
67
|
+
taskId: string;
|
|
68
|
+
satisfied: boolean;
|
|
69
|
+
}
|
|
70
|
+
export interface TaskProgress {
|
|
71
|
+
percent: number;
|
|
72
|
+
step?: string;
|
|
73
|
+
updatedAt: Date;
|
|
74
|
+
}
|
|
75
|
+
export interface TaskAssignment {
|
|
76
|
+
worker: WorkerRef;
|
|
77
|
+
assignedAt: Date;
|
|
78
|
+
}
|
|
79
|
+
export interface TaskData<TInput = unknown, TOutput = unknown> {
|
|
80
|
+
id: string;
|
|
81
|
+
name: string;
|
|
82
|
+
description: string;
|
|
83
|
+
status: TaskStatus;
|
|
84
|
+
priority: TaskPriority;
|
|
85
|
+
input?: TInput;
|
|
86
|
+
output?: TOutput;
|
|
87
|
+
error?: string;
|
|
88
|
+
scheduledFor?: Date;
|
|
89
|
+
deadline?: Date;
|
|
90
|
+
createdAt: Date;
|
|
91
|
+
startedAt?: Date;
|
|
92
|
+
completedAt?: Date;
|
|
93
|
+
progress?: TaskProgress;
|
|
94
|
+
dependencies?: TaskDependency[];
|
|
95
|
+
assignment?: TaskAssignment;
|
|
96
|
+
metadata?: Record<string, unknown>;
|
|
97
|
+
}
|
|
98
|
+
export interface CreateTaskOptions<TInput = unknown> {
|
|
99
|
+
id?: string;
|
|
100
|
+
name: string;
|
|
101
|
+
description: string;
|
|
102
|
+
priority?: TaskPriority;
|
|
103
|
+
input?: TInput;
|
|
104
|
+
scheduledFor?: Date;
|
|
105
|
+
deadline?: Date;
|
|
106
|
+
tags?: string[];
|
|
107
|
+
metadata?: Record<string, unknown>;
|
|
108
|
+
dependencies?: string[];
|
|
109
|
+
}
|
|
110
|
+
export interface ScheduleOptions {
|
|
111
|
+
priority?: TaskPriority;
|
|
112
|
+
}
|
|
113
|
+
export interface ExecuteOptions {
|
|
114
|
+
worker?: WorkerRef;
|
|
115
|
+
}
|
|
116
|
+
export interface ListOptions {
|
|
117
|
+
status?: TaskStatus | TaskStatus[];
|
|
118
|
+
priority?: TaskPriority;
|
|
119
|
+
tags?: string[];
|
|
120
|
+
search?: string;
|
|
121
|
+
sortBy?: 'createdAt' | 'priority';
|
|
122
|
+
sortOrder?: 'asc' | 'desc';
|
|
123
|
+
limit?: number;
|
|
124
|
+
offset?: number;
|
|
125
|
+
}
|
|
126
|
+
export interface EnqueueOptions {
|
|
127
|
+
delaySeconds?: number;
|
|
128
|
+
}
|
|
129
|
+
export interface TaskStats {
|
|
130
|
+
total: number;
|
|
131
|
+
byStatus: Record<string, number>;
|
|
132
|
+
byPriority: Record<string, number>;
|
|
133
|
+
}
|
|
134
|
+
export interface Env {
|
|
135
|
+
TASK_STATE: DurableObjectNamespace<TaskStateDO>;
|
|
136
|
+
TASK_QUEUE?: Queue;
|
|
137
|
+
AI?: Ai;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Durable Object for persisting task state
|
|
141
|
+
*
|
|
142
|
+
* Uses a single DO instance to store all tasks for simplicity.
|
|
143
|
+
* In production, you might shard by project or date.
|
|
144
|
+
*/
|
|
145
|
+
export declare class TaskStateDO extends DurableObject {
|
|
146
|
+
ctx: DurableObjectState;
|
|
147
|
+
env: Env;
|
|
148
|
+
private tasks;
|
|
149
|
+
private queue;
|
|
150
|
+
private initialized;
|
|
151
|
+
constructor(state: DurableObjectState, env: Env);
|
|
152
|
+
private ensureInitialized;
|
|
153
|
+
private serializeTask;
|
|
154
|
+
private deserializeTask;
|
|
155
|
+
createTask(options: CreateTaskOptions): Promise<TaskData>;
|
|
156
|
+
getTask(id: string): Promise<TaskData | null>;
|
|
157
|
+
updateTask(id: string, updates: Partial<TaskData>): Promise<TaskData | null>;
|
|
158
|
+
listTasks(options?: ListOptions): Promise<TaskData[]>;
|
|
159
|
+
getStats(): Promise<TaskStats>;
|
|
160
|
+
getReadyTasks(): Promise<TaskData[]>;
|
|
161
|
+
getDependants(taskId: string): Promise<TaskData[]>;
|
|
162
|
+
satisfyDependency(completedTaskId: string): Promise<void>;
|
|
163
|
+
failDependants(failedTaskId: string): Promise<void>;
|
|
164
|
+
enqueue(taskId: string): Promise<void>;
|
|
165
|
+
dequeue(): Promise<TaskData | null>;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Core task service - extends RpcTarget so it can be passed over RPC
|
|
169
|
+
*
|
|
170
|
+
* Contains all task functionality: create, schedule, execute, complete, etc.
|
|
171
|
+
*/
|
|
172
|
+
export declare class TaskServiceCore extends RpcTarget {
|
|
173
|
+
private env;
|
|
174
|
+
private doStub;
|
|
175
|
+
constructor(env: Env);
|
|
176
|
+
/**
|
|
177
|
+
* Create a new task
|
|
178
|
+
*/
|
|
179
|
+
create(options: CreateTaskOptions): Promise<TaskData>;
|
|
180
|
+
/**
|
|
181
|
+
* Schedule a task for future execution
|
|
182
|
+
*/
|
|
183
|
+
schedule(taskId: string, scheduledFor: Date, options?: ScheduleOptions): Promise<TaskData>;
|
|
184
|
+
/**
|
|
185
|
+
* Start task execution
|
|
186
|
+
*/
|
|
187
|
+
execute(taskId: string, options?: ExecuteOptions): Promise<TaskData>;
|
|
188
|
+
/**
|
|
189
|
+
* Complete a task with output
|
|
190
|
+
*/
|
|
191
|
+
complete(taskId: string, output: unknown): Promise<TaskData>;
|
|
192
|
+
/**
|
|
193
|
+
* Fail a task with error
|
|
194
|
+
*/
|
|
195
|
+
fail(taskId: string, error: string | Error): Promise<TaskData>;
|
|
196
|
+
/**
|
|
197
|
+
* Get task status
|
|
198
|
+
*/
|
|
199
|
+
getStatus(taskId: string): Promise<TaskData | null>;
|
|
200
|
+
/**
|
|
201
|
+
* Update task progress
|
|
202
|
+
*/
|
|
203
|
+
updateProgress(taskId: string, percent: number, step?: string): Promise<TaskData>;
|
|
204
|
+
/**
|
|
205
|
+
* Cancel a task
|
|
206
|
+
*/
|
|
207
|
+
cancel(taskId: string, reason?: string): Promise<boolean>;
|
|
208
|
+
/**
|
|
209
|
+
* List tasks with optional filtering
|
|
210
|
+
*/
|
|
211
|
+
list(options?: ListOptions): Promise<TaskData[]>;
|
|
212
|
+
/**
|
|
213
|
+
* Get task statistics
|
|
214
|
+
*/
|
|
215
|
+
getStats(): Promise<TaskStats>;
|
|
216
|
+
/**
|
|
217
|
+
* Retry a failed task
|
|
218
|
+
*/
|
|
219
|
+
retry(taskId: string): Promise<TaskData>;
|
|
220
|
+
/**
|
|
221
|
+
* Get tasks that are ready for execution (not blocked)
|
|
222
|
+
*/
|
|
223
|
+
getReadyTasks(): Promise<TaskData[]>;
|
|
224
|
+
/**
|
|
225
|
+
* Get tasks that depend on a given task
|
|
226
|
+
*/
|
|
227
|
+
getDependants(taskId: string): Promise<TaskData[]>;
|
|
228
|
+
/**
|
|
229
|
+
* Enqueue a task for background processing
|
|
230
|
+
*/
|
|
231
|
+
enqueue(taskId: string, options?: EnqueueOptions): Promise<TaskData>;
|
|
232
|
+
/**
|
|
233
|
+
* Dequeue and start the next task
|
|
234
|
+
*/
|
|
235
|
+
dequeue(): Promise<TaskData | null>;
|
|
236
|
+
/**
|
|
237
|
+
* Execute a task with AI
|
|
238
|
+
*/
|
|
239
|
+
executeWithAI(taskId: string): Promise<TaskData>;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Main task service exposed via RPC as WorkerEntrypoint
|
|
243
|
+
*
|
|
244
|
+
* Usage:
|
|
245
|
+
* const tasks = await env.TASKS.connect()
|
|
246
|
+
* const task = await tasks.create({ name: 'My Task', description: 'Do something' })
|
|
247
|
+
* await tasks.execute(task.id)
|
|
248
|
+
* await tasks.complete(task.id, { result: 'done' })
|
|
249
|
+
*/
|
|
250
|
+
export declare class TaskService extends WorkerEntrypoint<Env> {
|
|
251
|
+
ctx: ExecutionContext;
|
|
252
|
+
env: Env;
|
|
253
|
+
/**
|
|
254
|
+
* Get a task service instance - returns an RpcTarget that can be used directly
|
|
255
|
+
*/
|
|
256
|
+
connect(): TaskServiceCore;
|
|
257
|
+
}
|
|
258
|
+
declare interface ExecutionContext {
|
|
259
|
+
waitUntil(promise: Promise<unknown>): void;
|
|
260
|
+
passThroughOnException(): void;
|
|
261
|
+
}
|
|
262
|
+
export default TaskService;
|
|
263
|
+
export { TaskService as TaskWorker };
|
|
264
|
+
//# sourceMappingURL=worker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAG/E,OAAO,WAAW,sBAAsB,CAAC,CAAC,GAAG,OAAO;IAClD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAAA;IACzC,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,CAAA;IACzC,WAAW,IAAI,eAAe,CAAA;IAC9B,GAAG,CAAC,EAAE,EAAE,eAAe,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAA;CAC/C;AAED,OAAO,WAAW,eAAe;IAC/B,QAAQ,IAAI,MAAM,CAAA;IAClB,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAA;CACxC;AAED,KAAK,iBAAiB,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,GAAG;IACxC,EAAE,EAAE,eAAe,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,OAAO,WAAW,kBAAkB;IAClC,EAAE,EAAE,eAAe,CAAA;IACnB,OAAO,EAAE,oBAAoB,CAAA;IAC7B,qBAAqB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CACjE;AAED,OAAO,WAAW,oBAAoB;IACpC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAA;IAC3C,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAA;IAC/C,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5C,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACjD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACrC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACvC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE;QAChB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,GAAG,CAAC,EAAE,MAAM,CAAA;KACb,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAA;CAC5B;AAED,OAAO,WAAW,KAAK,CAAC,CAAC,GAAG,OAAO;IACjC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACnE,SAAS,CAAC,QAAQ,EAAE;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACxE;AAED,OAAO,WAAW,EAAE;IAClB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CACtD;AAMD,MAAM,MAAM,UAAU,GAClB,SAAS,GACT,WAAW,GACX,QAAQ,GACR,SAAS,GACT,aAAa,GACb,WAAW,GACX,QAAQ,GACR,WAAW,CAAA;AAEf,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAA;AAE5E,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAA;IACxC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,YAAY,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,IAAI,CAAA;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,SAAS,CAAA;IACjB,UAAU,EAAE,IAAI,CAAA;CACjB;AAED,MAAM,WAAW,QAAQ,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO;IAC3D,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,UAAU,CAAA;IAClB,QAAQ,EAAE,YAAY,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,EAAE,IAAI,CAAA;IACf,SAAS,EAAE,IAAI,CAAA;IACf,SAAS,CAAC,EAAE,IAAI,CAAA;IAChB,WAAW,CAAC,EAAE,IAAI,CAAA;IAClB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,YAAY,CAAC,EAAE,cAAc,EAAE,CAAA;IAC/B,UAAU,CAAC,EAAE,cAAc,CAAA;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,iBAAiB,CAAC,MAAM,GAAG,OAAO;IACjD,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,EAAE,IAAI,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,YAAY,CAAA;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,SAAS,CAAA;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,UAAU,GAAG,UAAU,EAAE,CAAA;IAClC,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,WAAW,GAAG,UAAU,CAAA;IACjC,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACnC;AAGD,MAAM,WAAW,GAAG;IAClB,UAAU,EAAE,sBAAsB,CAAC,WAAW,CAAC,CAAA;IAC/C,UAAU,CAAC,EAAE,KAAK,CAAA;IAClB,EAAE,CAAC,EAAE,EAAE,CAAA;CACR;AAeD;;;;;GAKG;AACH,qBAAa,WAAY,SAAQ,aAAa;IACpC,GAAG,EAAE,kBAAkB,CAAA;IACvB,GAAG,EAAE,GAAG,CAAA;IAEhB,OAAO,CAAC,KAAK,CAAmC;IAChD,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,WAAW,CAAQ;gBAEf,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,GAAG;YAIjC,iBAAiB;IAoB/B,OAAO,CAAC,aAAa;IA0CrB,OAAO,CAAC,eAAe;IAIjB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAmDzD,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAM7C,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAY5E,SAAS,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IA+DzD,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC;IAkB9B,aAAa,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAmBpC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAalD,iBAAiB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBzD,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBnD,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQtC,OAAO,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;CAiC1C;AAMD;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,SAAS;IAC5C,OAAO,CAAC,GAAG,CAAK;IAChB,OAAO,CAAC,MAAM,CAAgC;gBAElC,GAAG,EAAE,GAAG;IAUpB;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAI3D;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC;IA2BhG;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC;IAsC1E;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IA0BlE;;OAEG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC;IAwBpE;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAIzD;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAgCvF;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAwB/D;;OAEG;IACG,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAItD;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC;IAIpC;;OAEG;IACG,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAoC9C;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAI1C;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAIxD;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC;IAqB1E;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAIzC;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;CAqDvD;AAMD;;;;;;;;GAQG;AACH,qBAAa,WAAY,SAAQ,gBAAgB,CAAC,GAAG,CAAC;IAC5C,GAAG,EAAE,gBAAgB,CAAA;IACrB,GAAG,EAAE,GAAG,CAAA;IAEhB;;OAEG;IACH,OAAO,IAAI,eAAe;CAM3B;AAGD,OAAO,WAAW,gBAAgB;IAChC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAA;IAC1C,sBAAsB,IAAI,IAAI,CAAA;CAC/B;AAGD,eAAe,WAAW,CAAA;AAG1B,OAAO,EAAE,WAAW,IAAI,UAAU,EAAE,CAAA"}
|