@lemoncat7/dsh-partner 1.8.3 → 1.10.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.
- package/README.md +36 -1
- package/docs/architecture.md +101 -1
- package/lib/agent-runtime.d.ts +11 -2
- package/lib/agent-runtime.d.ts.map +1 -1
- package/lib/agent-runtime.js +91 -66
- package/lib/agent-runtime.js.map +1 -1
- package/lib/api/features/workspace-api.d.ts +2 -0
- package/lib/api/features/workspace-api.d.ts.map +1 -1
- package/lib/api/features/workspace-api.js +49 -2
- package/lib/api/features/workspace-api.js.map +1 -1
- package/lib/api.d.ts +2 -0
- package/lib/api.d.ts.map +1 -1
- package/lib/api.js +13 -31
- package/lib/api.js.map +1 -1
- package/lib/channels/delivery-policy.d.ts +14 -0
- package/lib/channels/delivery-policy.d.ts.map +1 -0
- package/lib/channels/delivery-policy.js +82 -0
- package/lib/channels/delivery-policy.js.map +1 -0
- package/lib/channels/manager.d.ts +3 -2
- package/lib/channels/manager.d.ts.map +1 -1
- package/lib/channels/manager.js +40 -17
- package/lib/channels/manager.js.map +1 -1
- package/lib/channels/outbound-media.d.ts +6 -0
- package/lib/channels/outbound-media.d.ts.map +1 -0
- package/lib/channels/outbound-media.js +118 -0
- package/lib/channels/outbound-media.js.map +1 -0
- package/lib/client-api.d.ts +4 -0
- package/lib/client-api.d.ts.map +1 -1
- package/lib/client-api.js.map +1 -1
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +1572 -1109
- package/lib/client.js.map +4 -4
- package/lib/collaboration/composition.d.ts +3 -1
- package/lib/collaboration/composition.d.ts.map +1 -1
- package/lib/collaboration/composition.js +47 -14
- package/lib/collaboration/composition.js.map +1 -1
- package/lib/collaboration/service.d.ts +7 -0
- package/lib/collaboration/service.d.ts.map +1 -1
- package/lib/collaboration/service.js +154 -44
- package/lib/collaboration/service.js.map +1 -1
- package/lib/collaboration/task-dispatch.d.ts +18 -0
- package/lib/collaboration/task-dispatch.d.ts.map +1 -0
- package/lib/collaboration/task-dispatch.js +44 -0
- package/lib/collaboration/task-dispatch.js.map +1 -0
- package/lib/collaboration/task-recovery.d.ts +8 -0
- package/lib/collaboration/task-recovery.d.ts.map +1 -0
- package/lib/collaboration/task-recovery.js +30 -0
- package/lib/collaboration/task-recovery.js.map +1 -0
- package/lib/companions/directory-cleanup.d.ts +4 -0
- package/lib/companions/directory-cleanup.d.ts.map +1 -0
- package/lib/companions/directory-cleanup.js +77 -0
- package/lib/companions/directory-cleanup.js.map +1 -0
- package/lib/companions/removal.d.ts +20 -0
- package/lib/companions/removal.d.ts.map +1 -0
- package/lib/companions/removal.js +84 -0
- package/lib/companions/removal.js.map +1 -0
- package/lib/companions/service.d.ts +3 -0
- package/lib/companions/service.d.ts.map +1 -1
- package/lib/companions/service.js +4 -0
- package/lib/companions/service.js.map +1 -1
- package/lib/companions/session-configuration.js +1 -1
- package/lib/companions/session-configuration.js.map +1 -1
- package/lib/companions/workspace-cleanup.d.ts +4 -0
- package/lib/companions/workspace-cleanup.d.ts.map +1 -0
- package/lib/companions/workspace-cleanup.js +37 -0
- package/lib/companions/workspace-cleanup.js.map +1 -0
- package/lib/daily-review.d.ts +1 -0
- package/lib/daily-review.d.ts.map +1 -1
- package/lib/daily-review.js +3 -0
- package/lib/daily-review.js.map +1 -1
- package/lib/domain.d.ts +2 -0
- package/lib/domain.d.ts.map +1 -1
- package/lib/domain.js.map +1 -1
- package/lib/execution/agent-support.d.ts.map +1 -1
- package/lib/execution/agent-support.js +27 -3
- package/lib/execution/agent-support.js.map +1 -1
- package/lib/execution/service.d.ts +1 -0
- package/lib/execution/service.d.ts.map +1 -1
- package/lib/execution/service.js +10 -0
- package/lib/execution/service.js.map +1 -1
- package/lib/heartbeat.d.ts +1 -0
- package/lib/heartbeat.d.ts.map +1 -1
- package/lib/heartbeat.js +3 -0
- package/lib/heartbeat.js.map +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +22 -11
- package/lib/index.js.map +1 -1
- package/lib/pendant/renderer.d.ts +1 -0
- package/lib/pendant/renderer.d.ts.map +1 -1
- package/lib/pendant/renderer.js +4 -0
- package/lib/pendant/renderer.js.map +1 -1
- package/lib/pendant/widget.js +3 -1
- package/lib/pendant/widget.js.map +1 -1
- package/lib/pendant-renderer.js +6 -6
- package/lib/requirements/archive.d.ts +4 -0
- package/lib/requirements/archive.d.ts.map +1 -0
- package/lib/requirements/archive.js +14 -0
- package/lib/requirements/archive.js.map +1 -0
- package/lib/requirements/consolidation.d.ts +11 -0
- package/lib/requirements/consolidation.d.ts.map +1 -0
- package/lib/requirements/consolidation.js +50 -0
- package/lib/requirements/consolidation.js.map +1 -0
- package/lib/requirements/domain.d.ts +41 -0
- package/lib/requirements/domain.d.ts.map +1 -0
- package/lib/requirements/domain.js +2 -0
- package/lib/requirements/domain.js.map +1 -0
- package/lib/requirements/progress.d.ts +7 -0
- package/lib/requirements/progress.d.ts.map +1 -0
- package/lib/requirements/progress.js +17 -0
- package/lib/requirements/progress.js.map +1 -0
- package/lib/requirements/service.d.ts +23 -0
- package/lib/requirements/service.d.ts.map +1 -0
- package/lib/requirements/service.js +163 -0
- package/lib/requirements/service.js.map +1 -0
- package/lib/requirements/tool.d.ts +5 -0
- package/lib/requirements/tool.d.ts.map +1 -0
- package/lib/requirements/tool.js +49 -0
- package/lib/requirements/tool.js.map +1 -0
- package/lib/requirements/worker.d.ts +30 -0
- package/lib/requirements/worker.d.ts.map +1 -0
- package/lib/requirements/worker.js +164 -0
- package/lib/requirements/worker.js.map +1 -0
- package/lib/skills/builtin.d.ts.map +1 -1
- package/lib/skills/builtin.js +3 -2
- package/lib/skills/builtin.js.map +1 -1
- package/lib/skills/service.js +1 -1
- package/lib/skills/service.js.map +1 -1
- package/lib/skills/task-planning.d.ts +5 -0
- package/lib/skills/task-planning.d.ts.map +1 -0
- package/lib/skills/task-planning.js +47 -0
- package/lib/skills/task-planning.js.map +1 -0
- package/lib/store.d.ts +3 -0
- package/lib/store.d.ts.map +1 -1
- package/lib/store.js +10 -0
- package/lib/store.js.map +1 -1
- package/lib/tasks/context.d.ts +8 -0
- package/lib/tasks/context.d.ts.map +1 -0
- package/lib/tasks/context.js +48 -0
- package/lib/tasks/context.js.map +1 -0
- package/lib/tasks/domain.d.ts +12 -0
- package/lib/tasks/domain.d.ts.map +1 -1
- package/lib/tasks/progress-notifier.d.ts +4 -0
- package/lib/tasks/progress-notifier.d.ts.map +1 -0
- package/lib/tasks/progress-notifier.js +20 -0
- package/lib/tasks/progress-notifier.js.map +1 -0
- package/lib/tasks/removal.d.ts +5 -0
- package/lib/tasks/removal.d.ts.map +1 -0
- package/lib/tasks/removal.js +44 -0
- package/lib/tasks/removal.js.map +1 -0
- package/lib/tasks/requirement-link.d.ts +4 -0
- package/lib/tasks/requirement-link.d.ts.map +1 -0
- package/lib/tasks/requirement-link.js +11 -0
- package/lib/tasks/requirement-link.js.map +1 -0
- package/lib/tasks/service.d.ts +13 -5
- package/lib/tasks/service.d.ts.map +1 -1
- package/lib/tasks/service.js +113 -29
- package/lib/tasks/service.js.map +1 -1
- package/lib/ui/board-refresh.d.ts +3 -0
- package/lib/ui/board-refresh.d.ts.map +1 -0
- package/lib/ui/board-refresh.js +42 -0
- package/lib/ui/board-refresh.js.map +1 -0
- package/lib/ui/identity-editor.d.ts +11 -0
- package/lib/ui/identity-editor.d.ts.map +1 -0
- package/lib/ui/identity-editor.js +78 -0
- package/lib/ui/identity-editor.js.map +1 -0
- package/lib/ui/requirement-board.d.ts +5 -0
- package/lib/ui/requirement-board.d.ts.map +1 -0
- package/lib/ui/requirement-board.js +47 -0
- package/lib/ui/requirement-board.js.map +1 -0
- package/lib/ui/requirement-dialog.d.ts +15 -0
- package/lib/ui/requirement-dialog.d.ts.map +1 -0
- package/lib/ui/requirement-dialog.js +53 -0
- package/lib/ui/requirement-dialog.js.map +1 -0
- package/lib/ui/requirement-tasks-panel.d.ts +8 -0
- package/lib/ui/requirement-tasks-panel.d.ts.map +1 -0
- package/lib/ui/requirement-tasks-panel.js +269 -0
- package/lib/ui/requirement-tasks-panel.js.map +1 -0
- package/lib/ui/task-board-panel.d.ts +2 -4
- package/lib/ui/task-board-panel.d.ts.map +1 -1
- package/lib/ui/task-board-panel.js +2 -283
- package/lib/ui/task-board-panel.js.map +1 -1
- package/lib/ui/task-board-stage.d.ts +12 -0
- package/lib/ui/task-board-stage.d.ts.map +1 -0
- package/lib/ui/task-board-stage.js +13 -0
- package/lib/ui/task-board-stage.js.map +1 -0
- package/lib/ui/workspace-components.js +1 -1
- package/lib/ui/workspace-components.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useDeferredValue, useEffect, useMemo, useState } from 'react';
|
|
3
|
+
import { IconCheckOutline16, IconChevronRightOutline14, IconCloseOutline16, IconPlusOutline16, IconSearchOutline16, IconTrashOutline16 } from '@deepseek-ai/dsh-client-ui-primitives';
|
|
4
|
+
import { api } from '../client-api.js';
|
|
5
|
+
import { CollectionSkeleton, WorkspaceDialog, WorkspaceHero, WorkspaceNotice, errorMessage } from './workspace-components.js';
|
|
6
|
+
import { TaskBoardStage } from './task-board-stage.js';
|
|
7
|
+
import { useBoardRefresh } from './board-refresh.js';
|
|
8
|
+
import { RequirementDetail, requirementStatus } from './requirement-dialog.js';
|
|
9
|
+
const COLUMNS = [
|
|
10
|
+
{ id: 'backlog', label: '收集箱' }, { id: 'ready', label: '待开始' }, { id: 'doing', label: '进行中' },
|
|
11
|
+
{ id: 'review', label: '待验收' }, { id: 'blocked', label: '受阻' }, { id: 'done', label: '已完成' },
|
|
12
|
+
];
|
|
13
|
+
export function RequirementTasksPanel({ initialTaskId, openRequest, requirementId, back, detailOnly = false } = {}) {
|
|
14
|
+
const [board, setBoard] = useState({ tasks: [], activities: [] });
|
|
15
|
+
const [directory, setDirectory] = useState([]);
|
|
16
|
+
const [delegations, setDelegations] = useState([]);
|
|
17
|
+
const [creating, setCreating] = useState(false);
|
|
18
|
+
const [requirementDetail, setRequirementDetail] = useState(false);
|
|
19
|
+
const [selectedTaskId, setSelectedTaskId] = useState(initialTaskId);
|
|
20
|
+
useEffect(() => { if (initialTaskId)
|
|
21
|
+
setSelectedTaskId(initialTaskId); }, [initialTaskId, openRequest]);
|
|
22
|
+
const [busy, setBusy] = useState();
|
|
23
|
+
const [loading, setLoading] = useState(true);
|
|
24
|
+
const [error, setError] = useState();
|
|
25
|
+
const [syncedAt, setSyncedAt] = useState();
|
|
26
|
+
const [query, setQuery] = useState('');
|
|
27
|
+
const [statusFilter, setStatusFilter] = useState('all');
|
|
28
|
+
const [assigneeFilter, setAssigneeFilter] = useState('all');
|
|
29
|
+
const deferredQuery = useDeferredValue(query.trim().toLocaleLowerCase());
|
|
30
|
+
const tasksById = useMemo(() => new Map(board.tasks.map(item => [item.id, item])), [board.tasks]);
|
|
31
|
+
const directoryById = useMemo(() => new Map(directory.map(item => [item.id, item])), [directory]);
|
|
32
|
+
const activeDelegationByTaskId = useMemo(() => {
|
|
33
|
+
const result = new Map();
|
|
34
|
+
for (const delegation of delegations) {
|
|
35
|
+
if ((delegation.status === 'queued' || delegation.status === 'running') && !result.has(delegation.taskId))
|
|
36
|
+
result.set(delegation.taskId, delegation);
|
|
37
|
+
}
|
|
38
|
+
return result;
|
|
39
|
+
}, [delegations]);
|
|
40
|
+
const selectedTask = selectedTaskId ? tasksById.get(selectedTaskId) : undefined;
|
|
41
|
+
const requirement = board.requirements?.find(item => item.id === requirementId);
|
|
42
|
+
const requirementTasks = useMemo(() => board.tasks.filter(task => !requirementId || (requirementId === 'legacy' ? !task.requirementId : task.requirementId === requirementId)), [board.tasks, requirementId]);
|
|
43
|
+
const dependentsById = useMemo(() => {
|
|
44
|
+
const result = new Map();
|
|
45
|
+
for (const task of board.tasks)
|
|
46
|
+
for (const dependencyId of task.dependencyTaskIds)
|
|
47
|
+
result.set(dependencyId, (result.get(dependencyId) ?? 0) + 1);
|
|
48
|
+
return result;
|
|
49
|
+
}, [board.tasks]);
|
|
50
|
+
const scopedTasks = useMemo(() => requirementTasks.filter(task => {
|
|
51
|
+
if (assigneeFilter !== 'all' && (task.assigneeCompanionId ?? 'unassigned') !== assigneeFilter)
|
|
52
|
+
return false;
|
|
53
|
+
if (!deferredQuery)
|
|
54
|
+
return true;
|
|
55
|
+
const dependencies = task.dependencyTaskIds.map(id => tasksById.get(id)?.title ?? '');
|
|
56
|
+
return [task.title, task.description, task.resultAbstract, task.resultSummary, directoryById.get(task.assigneeCompanionId ?? '')?.name, ...dependencies]
|
|
57
|
+
.some(value => value?.toLocaleLowerCase().includes(deferredQuery));
|
|
58
|
+
}), [assigneeFilter, requirementTasks, deferredQuery, directoryById, tasksById]);
|
|
59
|
+
const statusCounts = useMemo(() => {
|
|
60
|
+
const result = new Map(COLUMNS.map(column => [column.id, 0]));
|
|
61
|
+
for (const task of scopedTasks)
|
|
62
|
+
result.set(task.status, (result.get(task.status) ?? 0) + 1);
|
|
63
|
+
return result;
|
|
64
|
+
}, [scopedTasks]);
|
|
65
|
+
const visibleColumns = statusFilter === 'all' ? COLUMNS.filter(column => (statusCounts.get(column.id) ?? 0) > 0) : COLUMNS.filter(column => column.id === statusFilter);
|
|
66
|
+
const tasksByStatus = useMemo(() => {
|
|
67
|
+
const priorityRank = { urgent: 3, high: 2, normal: 1, low: 0 };
|
|
68
|
+
const result = new Map(COLUMNS.map(column => [column.id, []]));
|
|
69
|
+
for (const task of scopedTasks) {
|
|
70
|
+
if (statusFilter !== 'all' && task.status !== statusFilter)
|
|
71
|
+
continue;
|
|
72
|
+
result.get(task.status)?.push(task);
|
|
73
|
+
}
|
|
74
|
+
for (const tasks of result.values())
|
|
75
|
+
tasks.sort((left, right) => priorityRank[right.priority] - priorityRank[left.priority] || right.updatedAt - left.updatedAt);
|
|
76
|
+
return result;
|
|
77
|
+
}, [scopedTasks, statusFilter]);
|
|
78
|
+
const visibleTaskCount = statusFilter === 'all' ? scopedTasks.length : (statusCounts.get(statusFilter) ?? 0);
|
|
79
|
+
const load = useBoardRefresh(async () => {
|
|
80
|
+
const [next, collaboration] = await Promise.all([api('/tasks'), api('/collaboration')]);
|
|
81
|
+
return () => { setBoard(next); setDirectory(collaboration.companions); setDelegations(collaboration.delegations); setSyncedAt(Date.now()); setLoading(false); setSelectedTaskId(id => next.tasks.some(t => t.id === id) ? id : undefined); };
|
|
82
|
+
}, reason => { setError(errorMessage(reason)); setLoading(false); });
|
|
83
|
+
const update = async (task, change) => {
|
|
84
|
+
setBusy(task.id);
|
|
85
|
+
setError(undefined);
|
|
86
|
+
try {
|
|
87
|
+
await api(`/tasks/${task.id}`, { method: 'PUT', body: JSON.stringify({ expectedRevision: task.revision, ...change }) });
|
|
88
|
+
await load();
|
|
89
|
+
}
|
|
90
|
+
catch (reason) {
|
|
91
|
+
await load();
|
|
92
|
+
setError(errorMessage(reason));
|
|
93
|
+
}
|
|
94
|
+
finally {
|
|
95
|
+
setBusy(undefined);
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
const delegate = async (task) => {
|
|
99
|
+
if (!task.assigneeCompanionId)
|
|
100
|
+
return;
|
|
101
|
+
setBusy(task.id);
|
|
102
|
+
setError(undefined);
|
|
103
|
+
try {
|
|
104
|
+
await api(`/tasks/${task.id}/delegate`, { method: 'POST', body: JSON.stringify({ to: task.assigneeCompanionId, request: task.description || `完成任务:${task.title}` }) });
|
|
105
|
+
await load();
|
|
106
|
+
}
|
|
107
|
+
catch (reason) {
|
|
108
|
+
setError(errorMessage(reason));
|
|
109
|
+
}
|
|
110
|
+
finally {
|
|
111
|
+
setBusy(undefined);
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
const review = async (task) => {
|
|
115
|
+
if (!task.reviewerCompanionId)
|
|
116
|
+
return;
|
|
117
|
+
setBusy(task.id);
|
|
118
|
+
setError(undefined);
|
|
119
|
+
try {
|
|
120
|
+
await api(`/tasks/${task.id}/review`, { method: 'POST', body: JSON.stringify({ to: task.reviewerCompanionId }) });
|
|
121
|
+
await load();
|
|
122
|
+
}
|
|
123
|
+
catch (reason) {
|
|
124
|
+
setError(errorMessage(reason));
|
|
125
|
+
}
|
|
126
|
+
finally {
|
|
127
|
+
setBusy(undefined);
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
const accept = async (task) => {
|
|
131
|
+
setBusy(task.id);
|
|
132
|
+
setError(undefined);
|
|
133
|
+
try {
|
|
134
|
+
await api(`/tasks/${task.id}/accept`, { method: 'POST', body: JSON.stringify({ expectedRevision: task.revision }) });
|
|
135
|
+
await load();
|
|
136
|
+
}
|
|
137
|
+
catch (reason) {
|
|
138
|
+
setError(errorMessage(reason));
|
|
139
|
+
}
|
|
140
|
+
finally {
|
|
141
|
+
setBusy(undefined);
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
const reject = async (task, reason) => {
|
|
145
|
+
if (!reason)
|
|
146
|
+
return;
|
|
147
|
+
setBusy(task.id);
|
|
148
|
+
setError(undefined);
|
|
149
|
+
try {
|
|
150
|
+
await api(`/tasks/${task.id}/reject`, { method: 'POST', body: JSON.stringify({ reason, expectedRevision: task.revision }) });
|
|
151
|
+
await load();
|
|
152
|
+
}
|
|
153
|
+
catch (cause) {
|
|
154
|
+
setError(errorMessage(cause));
|
|
155
|
+
}
|
|
156
|
+
finally {
|
|
157
|
+
setBusy(undefined);
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
const remove = async (task) => {
|
|
161
|
+
setBusy(task.id);
|
|
162
|
+
setError(undefined);
|
|
163
|
+
try {
|
|
164
|
+
await api(`/tasks/${task.id}`, { method: 'DELETE' });
|
|
165
|
+
if (selectedTaskId === task.id)
|
|
166
|
+
setSelectedTaskId(undefined);
|
|
167
|
+
await load();
|
|
168
|
+
}
|
|
169
|
+
catch (reason) {
|
|
170
|
+
setError(errorMessage(reason));
|
|
171
|
+
}
|
|
172
|
+
finally {
|
|
173
|
+
setBusy(undefined);
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
return _jsxs("div", { className: "dsh-partner-feature-page is-board", children: [!detailOnly && _jsxs(_Fragment, { children: [back && _jsxs("nav", { className: "dsh-partner-requirement-breadcrumb", children: [_jsx("button", { type: "button", onClick: back, children: "\u9700\u6C42\u770B\u677F" }), _jsx(IconChevronRightOutline14, { size: 14 }), _jsx("span", { children: requirement?.title ?? '未归类旧任务' })] }), _jsx(WorkspaceHero, { eyebrow: requirement ? requirementStatus(requirement) : '旧任务', title: requirement?.title ?? '未归类旧任务', detail: requirement?.description || '任务按阶段展示,点击查看交付、依赖和执行状态。', actions: _jsxs(_Fragment, { children: [_jsxs("span", { className: "dsh-partner-board-live", title: syncedAt ? `最近同步 ${new Date(syncedAt).toLocaleTimeString()}` : '正在连接', children: [_jsx("i", {}), "\u5B9E\u65F6\u540C\u6B65"] }), requirement && _jsx("button", { type: "button", onClick: () => setRequirementDetail(true), children: "\u9700\u6C42\u8BE6\u60C5" }), requirement?.status === 'planning' && _jsxs("button", { type: "button", onClick: () => setCreating(true), children: [_jsx(IconPlusOutline16, { size: 15 }), "\u65B0\u4EFB\u52A1"] })] }) })] }), error && _jsx(WorkspaceNotice, { children: error }), requirementDetail && requirement && _jsx(WorkspaceDialog, { eyebrow: "\u9700\u6C42\u8BE6\u60C5", title: requirement.title, detail: requirementStatus(requirement), close: () => setRequirementDetail(false), width: "wide", children: _jsx(RequirementDetail, { item: requirement, tasks: requirementTasks, directory: directory, changed: load, close: () => setRequirementDetail(false) }, requirement.id) }), creating && requirement && _jsx(WorkspaceDialog, { title: "\u65B0\u5EFA\u5B50\u4EFB\u52A1", detail: `所属需求:${requirement.title}`, close: () => setCreating(false), width: "wide", children: _jsx(TaskForm, { requirementId: requirement.id, companions: directory, tasks: requirementTasks, close: () => setCreating(false), changed: load }) }), selectedTask && _jsxs(WorkspaceDialog, { eyebrow: "TASK DETAIL", title: selectedTask.title, detail: taskDialogSummary(selectedTask, directory), close: () => setSelectedTaskId(undefined), width: "wide", children: [_jsx(TaskDetail, { task: selectedTask, tasks: board.tasks, activities: board.activities.filter(item => item.taskId === selectedTask.id), directory: directory, execution: activeDelegationByTaskId.get(selectedTask.id), busy: busy === selectedTask.id, update: change => { void update(selectedTask, change); }, delegate: () => { void delegate(selectedTask); }, review: () => { void review(selectedTask); }, accept: () => { void accept(selectedTask); }, reject: reason => { void reject(selectedTask, reason); }, remove: () => { void remove(selectedTask); } }, selectedTask.id), error && _jsx(WorkspaceNotice, { children: error })] }), !detailOnly && (loading ? _jsx(CollectionSkeleton, { rows: 6 }) : _jsxs(_Fragment, { children: [_jsxs("div", { className: "dsh-partner-board-tools", children: [_jsxs("label", { className: "dsh-partner-board-search", children: [_jsx("span", { className: "sr-only", children: "\u641C\u7D22\u4EFB\u52A1" }), _jsx("span", { "aria-hidden": "true", children: _jsx(IconSearchOutline16, { size: 16 }) }), _jsx("input", { value: query, onChange: event => setQuery(event.target.value), placeholder: "\u641C\u7D22\u4EFB\u52A1\u3001\u8D1F\u8D23\u4EBA\u6216\u524D\u7F6E\u4EFB\u52A1" }), query && _jsx("button", { type: "button", onClick: () => setQuery(''), "aria-label": "\u6E05\u9664\u4EFB\u52A1\u641C\u7D22", children: _jsx(IconCloseOutline16, { size: 14 }) })] }), _jsxs("label", { className: "dsh-partner-board-assignee", children: [_jsx("span", { className: "sr-only", children: "\u6309\u8D1F\u8D23\u4EBA\u7B5B\u9009" }), _jsxs("select", { value: assigneeFilter, onChange: event => setAssigneeFilter(event.target.value), children: [_jsx("option", { value: "all", children: "\u5168\u90E8\u4F19\u4F34" }), _jsx("option", { value: "unassigned", children: "\u672A\u6307\u6D3E" }), directory.map(item => _jsxs("option", { value: item.id, children: ["@", item.name] }, item.id))] })] }), _jsxs("label", { className: "dsh-partner-board-assignee is-mobile-stage", children: [_jsx("span", { className: "sr-only", children: "\u6309\u4EFB\u52A1\u9636\u6BB5\u7B5B\u9009" }), _jsxs("select", { value: statusFilter, onChange: event => setStatusFilter(event.target.value), children: [_jsxs("option", { value: "all", children: ["\u5168\u90E8\u9636\u6BB5 \u00B7 ", scopedTasks.length] }), COLUMNS.map(column => _jsxs("option", { value: column.id, children: [column.label, " \u00B7 ", statusCounts.get(column.id) ?? 0] }, column.id))] })] }), _jsxs("small", { "aria-live": "polite", children: ["\u663E\u793A ", visibleTaskCount, " / ", board.tasks.length] })] }), _jsxs("nav", { className: "dsh-partner-board-statuses", "aria-label": "\u6309\u4EFB\u52A1\u72B6\u6001\u7B5B\u9009", children: [_jsxs("button", { type: "button", className: statusFilter === 'all' ? 'is-active' : '', "aria-pressed": statusFilter === 'all', onClick: () => setStatusFilter('all'), children: [_jsx("span", { children: "\u5168\u90E8" }), _jsx("b", { children: scopedTasks.length })] }), COLUMNS.map(column => _jsxs("button", { type: "button", className: statusFilter === column.id ? 'is-active' : '', "aria-pressed": statusFilter === column.id, onClick: () => setStatusFilter(column.id), children: [_jsx("span", { children: column.label }), _jsx("b", { children: statusCounts.get(column.id) ?? 0 })] }, column.id))] }), _jsx("div", { className: "dsh-partner-board", "data-focused": statusFilter !== 'all', "aria-label": "\u4EFB\u52A1\u770B\u677F", children: visibleColumns.map(column => {
|
|
177
|
+
const tasks = tasksByStatus.get(column.id) ?? [];
|
|
178
|
+
return _jsx(TaskBoardStage, { id: column.id, label: column.label, tasks: tasks, focused: statusFilter !== 'all', filtered: Boolean(query || assigneeFilter !== 'all'), renderTask: task => _jsx(TaskCard, { task: task, tasksById: tasksById, directoryById: directoryById, dependentCount: dependentsById.get(task.id) ?? 0, execution: activeDelegationByTaskId.get(task.id), open: () => setSelectedTaskId(task.id) }, task.id) }, column.id);
|
|
179
|
+
}) }), !scopedTasks.length && _jsxs("div", { className: "dsh-partner-collection-empty", children: [_jsx("strong", { children: query || assigneeFilter !== 'all' ? '没有匹配的任务' : '还没有子任务' }), _jsx("p", { children: requirement?.status === 'planning' ? '添加子任务并安排负责人,完成分工后在需求详情中提交规划。' : '可返回需求看板查看其他需求。' })] })] }))] });
|
|
180
|
+
}
|
|
181
|
+
function TaskCard({ task, tasksById, directoryById, dependentCount, execution, open }) {
|
|
182
|
+
const dependencies = task.dependencyTaskIds.map(id => tasksById.get(id)).filter((item) => item !== undefined);
|
|
183
|
+
const blockers = dependencies.filter(item => item.status !== 'done');
|
|
184
|
+
const completedDependencies = dependencies.length - blockers.length;
|
|
185
|
+
const assignee = directoryById.get(task.assigneeCompanionId ?? '');
|
|
186
|
+
const executionState = execution ? delegationState(execution, blockers.length) : task.autoRun && task.status === 'ready' ? { label: blockers.length ? '等待前置完成' : '等待调度' } : undefined;
|
|
187
|
+
return _jsx("article", { className: "dsh-partner-task-card", "data-blocked": blockers.length > 0, "data-priority": task.priority, children: _jsxs("button", { type: "button", className: "dsh-partner-task-summary", "aria-haspopup": "dialog", onClick: open, children: [_jsxs("span", { children: [_jsxs("span", { className: "dsh-partner-task-card-title", children: [_jsx("strong", { title: task.title, children: task.title }), _jsx("em", { children: priorityLabel(task.priority) })] }), _jsxs("small", { className: "dsh-partner-task-card-owner", children: [assignee ? `@${assignee.name}` : '未指派', task.resultSummary ? ' · 已有结果' : '', executionState ? ` · ${executionState.label}` : ''] }), (dependencies.length > 0 || dependentCount > 0) && _jsxs("span", { className: "dsh-partner-task-relations", children: [dependencies.length > 0 && _jsxs("small", { "data-blocked": blockers.length > 0, children: ["\u524D\u7F6E ", completedDependencies, "/", dependencies.length] }), dependentCount > 0 && _jsxs("small", { children: ["\u5B8C\u6210\u540E\u89E3\u9501 ", dependentCount] })] })] }), _jsx(IconChevronRightOutline14, { size: 14 })] }) });
|
|
188
|
+
}
|
|
189
|
+
function TaskDetail({ task, tasks, activities, directory, execution, busy, update, delegate, review, accept, reject, remove }) {
|
|
190
|
+
const [rejecting, setRejecting] = useState(false);
|
|
191
|
+
const [rejectReason, setRejectReason] = useState('');
|
|
192
|
+
const [confirmingDelete, setConfirmingDelete] = useState(false);
|
|
193
|
+
const byId = useMemo(() => new Map(tasks.map(item => [item.id, item])), [tasks]);
|
|
194
|
+
const dependencies = task.dependencyTaskIds.map(id => byId.get(id)).filter((item) => item !== undefined);
|
|
195
|
+
const blockers = dependencies.filter(item => item.status !== 'done');
|
|
196
|
+
const assignee = directory.find(item => item.id === task.assigneeCompanionId);
|
|
197
|
+
const reviewer = directory.find(item => item.id === task.reviewerCompanionId);
|
|
198
|
+
const dependencyCandidates = tasks.filter(item => item.id !== task.id && !task.dependencyTaskIds.includes(item.id) && !dependsOn(item.id, task.id, byId));
|
|
199
|
+
const canExecute = Boolean(task.assigneeCompanionId) && !execution && !['doing', 'review', 'done'].includes(task.status);
|
|
200
|
+
const recentActivities = [...activities].sort((left, right) => right.at - left.at).slice(0, 6);
|
|
201
|
+
const executionState = execution ? delegationState(execution, blockers.length) : undefined;
|
|
202
|
+
return _jsxs("div", { className: "dsh-partner-task-detail", children: [_jsxs("section", { className: "dsh-partner-task-description", children: [_jsx("strong", { children: "\u4EFB\u52A1\u8BF4\u660E" }), _jsx("p", { children: task.description || '没有补充说明' })] }), _jsxs("div", { className: "dsh-partner-task-fields", children: [_jsxs("label", { children: [_jsx("span", { children: "\u72B6\u6001" }), _jsx("select", { value: task.status, disabled: busy, onChange: event => update({ status: event.target.value }), children: COLUMNS.map(item => _jsx("option", { value: item.id, disabled: (item.id === 'doing' || item.id === 'review' || item.id === 'done') && blockers.length > 0 || item.id === 'done' && task.status !== 'review' && task.status !== 'done', children: item.label }, item.id)) })] }), _jsxs("label", { children: [_jsx("span", { children: "\u8D1F\u8D23\u4EBA" }), _jsxs("select", { value: task.assigneeCompanionId ?? '', disabled: busy || task.status === 'doing', onChange: event => update({ assigneeCompanionId: event.target.value }), children: [_jsx("option", { value: "", children: "\u672A\u6307\u6D3E" }), directory.map(item => _jsxs("option", { value: item.id, children: ["@", item.name, " \u00B7 ", item.availability === 'busy' ? '忙碌' : '可用'] }, item.id))] })] }), _jsxs("label", { children: [_jsx("span", { children: "\u9A8C\u6536\u4F19\u4F34" }), _jsxs("select", { value: task.reviewerCompanionId ?? '', disabled: busy, onChange: event => update({ reviewerCompanionId: event.target.value }), children: [_jsx("option", { value: "", children: "\u7559\u7A7A \u00B7 \u4EBA\u5DE5\u9A8C\u6536" }), directory.map(item => _jsxs("option", { value: item.id, children: ["@", item.name] }, item.id))] })] })] }), executionState && _jsxs("section", { className: "dsh-partner-task-execution", "data-state": execution?.status, children: [_jsx("i", {}), _jsxs("span", { children: [_jsx("strong", { children: executionState.title }), _jsx("small", { children: executionState.detail })] })] }), _jsxs("section", { className: "dsh-partner-task-dependency", children: [_jsxs("header", { children: [_jsx("strong", { children: "\u524D\u7F6E\u4EFB\u52A1" }), _jsx("small", { children: blockers.length ? `${blockers.length} 项未完成,当前任务不能启动` : dependencies.length ? '已全部完成,可以启动' : '没有前置依赖' })] }), dependencies.length > 0 && _jsx("div", { children: dependencies.map(item => _jsxs("span", { "data-done": item.status === 'done', children: [_jsx("i", { children: item.status === 'done' ? _jsx(IconCheckOutline16, { size: 12 }) : '' }), _jsx("b", { children: item.title }), _jsx("button", { type: "button", disabled: busy || ['doing', 'review', 'done'].includes(task.status), "aria-label": `移除前置任务 ${item.title}`, onClick: () => update({ dependencyTaskIds: task.dependencyTaskIds.filter(id => id !== item.id) }), children: "\u79FB\u9664" })] }, item.id)) }), dependencyCandidates.length > 0 && _jsxs("label", { children: [_jsx("span", { className: "sr-only", children: "\u589E\u52A0\u524D\u7F6E\u4EFB\u52A1" }), _jsxs("select", { defaultValue: "", disabled: busy || ['doing', 'review', 'done'].includes(task.status), onChange: event => { const id = event.currentTarget.value; if (id)
|
|
203
|
+
update({ dependencyTaskIds: [...task.dependencyTaskIds, id] }); event.currentTarget.value = ''; }, children: [_jsx("option", { value: "", children: "\u589E\u52A0\u524D\u7F6E\u4EFB\u52A1\u2026" }), dependencyCandidates.map(item => _jsxs("option", { value: item.id, children: [item.title, " \u00B7 ", statusLabel(item.status)] }, item.id))] })] })] }), task.resultSummary && _jsx(ResultBlock, { label: "\u6267\u884C\u7ED3\u679C", value: task.resultSummary }), task.reviewSummary && _jsx(ResultBlock, { label: `核验意见${reviewer ? ` · @${reviewer.name}` : ''}`, value: task.reviewSummary }), recentActivities.length > 0 && _jsxs("details", { className: "dsh-partner-task-activity dsh-partner-requirement-disclosure", children: [_jsxs("summary", { children: ["\u6700\u8FD1\u6D3B\u52A8 \u00B7 ", recentActivities.length] }), _jsx("ol", { children: recentActivities.map(item => _jsxs("li", { children: [_jsx("span", { children: item.message }), _jsx("time", { children: new Date(item.at).toLocaleString() })] }, item.id)) })] }), rejecting && _jsxs("form", { className: "dsh-partner-task-reject", onSubmit: event => { event.preventDefault(); const reason = rejectReason.trim(); if (!reason)
|
|
204
|
+
return; reject(reason); setRejecting(false); setRejectReason(''); }, children: [_jsxs("label", { children: [_jsx("span", { children: "\u6253\u56DE\u539F\u56E0" }), _jsx("textarea", { autoFocus: true, value: rejectReason, onChange: event => setRejectReason(event.target.value), rows: 3, maxLength: 1200, placeholder: "\u8BF4\u660E\u9700\u8981\u91CD\u505A\u6216\u8865\u5145\u7684\u5185\u5BB9" })] }), _jsxs("div", { children: [_jsx("button", { type: "button", onClick: () => { setRejecting(false); setRejectReason(''); }, children: "\u53D6\u6D88" }), _jsx("button", { type: "submit", className: "is-primary", disabled: busy || !rejectReason.trim(), children: "\u786E\u8BA4\u6253\u56DE" })] })] }), confirmingDelete && _jsxs("div", { className: "dsh-partner-task-delete-confirm", role: "alert", children: [_jsx("span", { children: "\u5220\u9664\u4F1A\u53D6\u6D88\u5173\u8054\u6267\u884C\uFF0C\u4F9D\u8D56\u5B83\u7684\u672A\u5B8C\u6210\u4EFB\u52A1\u5C06\u6682\u505C\u3002\u9700\u6C42\u9700\u91CD\u65B0\u786E\u8BA4\u8303\u56F4\uFF1B\u4E0D\u80FD\u64A4\u9500\u3002" }), _jsxs("div", { children: [_jsx("button", { type: "button", onClick: () => setConfirmingDelete(false), children: "\u4FDD\u7559\u4EFB\u52A1" }), _jsx("button", { type: "button", className: "is-danger", disabled: busy, onClick: remove, children: "\u786E\u8BA4\u5220\u9664" })] })] }), _jsxs("footer", { className: "dsh-partner-task-actions", children: [_jsxs("small", { children: ["r", task.revision, " \u00B7 ", new Date(task.updatedAt).toLocaleString()] }), _jsxs("span", { children: [task.status === 'review' ? _jsxs(_Fragment, { children: [task.reviewerCompanionId && _jsx("button", { type: "button", disabled: busy, onClick: review, children: busy ? '核验中…' : `交给 @${reviewer?.name ?? '伙伴'} 核验` }), _jsx("button", { type: "button", disabled: busy, onClick: () => setRejecting(true), children: "\u6253\u56DE\u91CD\u505A" }), _jsx("button", { type: "button", className: "is-primary", disabled: busy, onClick: accept, children: "\u9A8C\u6536\u901A\u8FC7" })] }) : _jsx("button", { type: "button", disabled: busy || !canExecute, title: blockers.length ? '可提前排队,依赖通过验收后自动执行' : !task.assigneeCompanionId ? '请先选择负责人' : undefined, onClick: delegate, children: busy ? '执行中…' : execution?.status === 'queued' ? '已提交,等待执行' : task.status === 'doing' ? '正在执行' : task.status === 'done' ? '已经完成' : `交给 @${assignee?.name ?? '伙伴'}` }), _jsx("button", { type: "button", className: "is-icon", "aria-label": `删除 ${task.title}`, "aria-expanded": confirmingDelete, disabled: busy, onClick: () => setConfirmingDelete(true), children: _jsx(IconTrashOutline16, { size: 14 }) })] })] })] });
|
|
205
|
+
}
|
|
206
|
+
function ResultBlock({ label, value }) {
|
|
207
|
+
return _jsxs("section", { className: "dsh-partner-task-result", children: [_jsx("strong", { children: label }), _jsx("p", { children: value })] });
|
|
208
|
+
}
|
|
209
|
+
function TaskForm({ requirementId, companions, tasks, close, changed }) {
|
|
210
|
+
const [error, setError] = useState();
|
|
211
|
+
const [busy, setBusy] = useState(false);
|
|
212
|
+
const dependencyOptions = tasks.filter(item => item.status !== 'done');
|
|
213
|
+
const submit = async (event) => {
|
|
214
|
+
event.preventDefault();
|
|
215
|
+
const data = new FormData(event.currentTarget);
|
|
216
|
+
setBusy(true);
|
|
217
|
+
setError(undefined);
|
|
218
|
+
try {
|
|
219
|
+
await api('/tasks', { method: 'POST', body: JSON.stringify({
|
|
220
|
+
requirementId,
|
|
221
|
+
title: data.get('title'), description: data.get('description'), priority: data.get('priority'),
|
|
222
|
+
autoRun: data.get('submission') === 'run' && Boolean(data.get('assignee')),
|
|
223
|
+
assigneeCompanionId: data.get('assignee') || undefined, reviewerCompanionId: data.get('reviewer') || undefined,
|
|
224
|
+
dependencyTaskIds: data.getAll('dependencyTaskId'),
|
|
225
|
+
}) });
|
|
226
|
+
await changed();
|
|
227
|
+
close();
|
|
228
|
+
}
|
|
229
|
+
catch (reason) {
|
|
230
|
+
setError(errorMessage(reason));
|
|
231
|
+
}
|
|
232
|
+
finally {
|
|
233
|
+
setBusy(false);
|
|
234
|
+
}
|
|
235
|
+
};
|
|
236
|
+
return _jsxs("form", { className: "dsh-partner-task-form", "aria-busy": busy, onSubmit: event => { void submit(event); }, children: [_jsxs("label", { children: [_jsx("span", { children: "\u4EFB\u52A1\u540D\u79F0" }), _jsx("input", { name: "title", maxLength: 200, required: true, autoFocus: true, placeholder: "\u4E00\u53E5\u8BDD\u8BF4\u660E\u4EA4\u4ED8\u76EE\u6807" })] }), _jsxs("label", { children: [_jsx("span", { children: "\u8D1F\u8D23\u4EBA" }), _jsxs("select", { name: "assignee", defaultValue: "", children: [_jsx("option", { value: "", children: "\u672A\u6307\u6D3E" }), companions.map(item => _jsxs("option", { value: item.id, children: ["@", item.name] }, item.id))] })] }), _jsxs("label", { className: "is-wide", children: [_jsx("span", { children: "\u4EFB\u52A1\u8BF4\u660E" }), _jsx("textarea", { name: "description", maxLength: 8000, rows: 5, placeholder: "\u8865\u5145\u80CC\u666F\u3001\u4EA4\u4ED8\u7269\u548C\u5B8C\u6210\u6761\u4EF6" })] }), _jsxs("label", { children: [_jsx("span", { children: "\u4F18\u5148\u7EA7" }), _jsxs("select", { name: "priority", defaultValue: "normal", children: [_jsx("option", { value: "low", children: "\u4F4E" }), _jsx("option", { value: "normal", children: "\u666E\u901A" }), _jsx("option", { value: "high", children: "\u9AD8" }), _jsx("option", { value: "urgent", children: "\u7D27\u6025" })] })] }), _jsxs("label", { children: [_jsx("span", { children: "\u9A8C\u6536\u4F19\u4F34" }), _jsxs("select", { name: "reviewer", defaultValue: "", children: [_jsx("option", { value: "", children: "\u7559\u7A7A \u00B7 \u4EBA\u5DE5\u9A8C\u6536" }), companions.map(item => _jsxs("option", { value: item.id, children: ["@", item.name] }, item.id))] })] }), _jsxs("div", { className: "dsh-partner-task-form-dependencies is-wide", children: [_jsxs("span", { children: ["\u4F9D\u8D56\u4EFB\u52A1 ", _jsx("small", { children: "\u53EF\u9009" })] }), dependencyOptions.length > 0 ? _jsx("div", { children: dependencyOptions.map(item => _jsxs("label", { children: [_jsx("input", { type: "checkbox", name: "dependencyTaskId", value: item.id }), _jsx("i", {}), _jsx("span", { children: item.title }), _jsx("small", { children: statusLabel(item.status) })] }, item.id)) }) : _jsx("p", { children: "\u5F53\u524D\u6CA1\u6709\u53EF\u9009\u7684\u672A\u5B8C\u6210\u4EFB\u52A1" }), _jsx("small", { children: "\u53EF\u4EE5\u9009\u62E9\u591A\u4E2A\uFF1B\u7559\u7A7A\u8868\u793A\u8BE5\u4EFB\u52A1\u4E0D\u4F9D\u8D56\u5176\u4ED6\u4EFB\u52A1\u3002" })] }), _jsxs("label", { className: "is-wide", children: [_jsx("span", { children: "\u521B\u5EFA\u540E\u6267\u884C" }), _jsxs("select", { name: "submission", defaultValue: "run", children: [_jsx("option", { value: "run", children: "\u5DF2\u6307\u5B9A\u8D1F\u8D23\u4EBA\u5219\u81EA\u52A8\u6392\u961F\uFF0C\u7B49\u5F85\u4F9D\u8D56\u5B8C\u6210\u540E\u6267\u884C" }), _jsx("option", { value: "plan", children: "\u4EC5\u89C4\u5212\uFF0C\u7A0D\u540E\u624B\u52A8\u63D0\u4EA4" })] })] }), error && _jsx(WorkspaceNotice, { children: error }), _jsxs("footer", { children: [_jsx("button", { type: "button", disabled: busy, onClick: close, children: "\u53D6\u6D88" }), _jsxs("button", { type: "submit", className: "is-primary", disabled: busy, children: [_jsx(IconPlusOutline16, { size: 14 }), busy ? '创建中…' : '创建任务'] })] })] });
|
|
237
|
+
}
|
|
238
|
+
function dependsOn(candidateId, targetId, tasks, visited = new Set()) {
|
|
239
|
+
if (candidateId === targetId)
|
|
240
|
+
return true;
|
|
241
|
+
if (visited.has(candidateId))
|
|
242
|
+
return false;
|
|
243
|
+
visited.add(candidateId);
|
|
244
|
+
return (tasks.get(candidateId)?.dependencyTaskIds ?? []).some(id => dependsOn(id, targetId, tasks, visited));
|
|
245
|
+
}
|
|
246
|
+
function statusLabel(value) { return COLUMNS.find(item => item.id === value)?.label ?? value; }
|
|
247
|
+
function taskDialogSummary(task, directory) {
|
|
248
|
+
const assignee = directory.find(item => item.id === task.assigneeCompanionId);
|
|
249
|
+
return `${statusLabel(task.status)} · ${assignee ? `负责人 @${assignee.name}` : '尚未指派负责人'} · ${priorityLabel(task.priority)}`;
|
|
250
|
+
}
|
|
251
|
+
function priorityLabel(value) { return ({ low: '低优先级', normal: '普通优先级', high: '高优先级', urgent: '紧急' })[value]; }
|
|
252
|
+
function delegationState(value, blockers = 0) {
|
|
253
|
+
const review = value.kind === 'review';
|
|
254
|
+
if (value.status === 'queued') {
|
|
255
|
+
if ((value.attempts ?? 0) === 0)
|
|
256
|
+
return blockers
|
|
257
|
+
? { label: '等待前置完成', title: '任务已提交,等待依赖', detail: `还有 ${blockers} 个前置任务未通过验收;全部完成后自动执行,无需再次指派。` }
|
|
258
|
+
: { label: '排队中', title: '任务已提交', detail: '正在等待可用执行名额,无需再次指派。' };
|
|
259
|
+
const at = value.nextAttemptAt ? new Date(value.nextAttemptAt).toLocaleString() : '稍后';
|
|
260
|
+
return { label: '等待自动恢复', title: review ? '验收将在连接恢复后继续' : '任务将在连接恢复后继续', detail: `${at} 自动重试${value.error ? ` · ${value.error}` : ''}` };
|
|
261
|
+
}
|
|
262
|
+
const recovered = (value.attempts ?? 1) > 1;
|
|
263
|
+
return {
|
|
264
|
+
label: recovered ? `第 ${value.attempts} 次恢复中` : review ? '伙伴验收中' : '伙伴执行中',
|
|
265
|
+
title: recovered ? (review ? '正在恢复伙伴验收' : '正在恢复伙伴任务') : review ? '伙伴正在核验结果' : '伙伴正在执行任务',
|
|
266
|
+
detail: recovered ? '会先检查已有产出,避免重复写入或重复发布。' : '执行状态会自动同步,无需手动刷新。',
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
//# sourceMappingURL=requirement-tasks-panel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requirement-tasks-panel.js","sourceRoot":"","sources":["../../src/ui/requirement-tasks-panel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAA;AACtF,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AACrL,OAAO,EAAE,GAAG,EAAuJ,MAAM,kBAAkB,CAAA;AAC3L,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7H,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAE9E,MAAM,OAAO,GAAsD;IACjE,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;IAC7F,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;CAC7F,CAAA;AAGD,MAAM,UAAU,qBAAqB,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,GAAG,KAAK,KAA4I,EAAE;IACvP,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAA;IAChF,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAA8B,EAAE,CAAC,CAAA;IAC3E,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAA0B,EAAE,CAAC,CAAA;IAC3E,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC/C,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACjE,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAqB,aAAa,CAAC,CAAA;IACvF,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,aAAa;QAAE,iBAAiB,CAAC,aAAa,CAAC,CAAA,CAAC,CAAC,EAAE,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAA;IACtG,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,EAAU,CAAA;IAC1C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC5C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAU,CAAA;IAC5C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,EAAU,CAAA;IAClD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IACtC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAoB,KAAK,CAAC,CAAA;IAC1E,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC3D,MAAM,aAAa,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAA;IACxE,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;IACjG,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;IACjG,MAAM,wBAAwB,GAAG,OAAO,CAAC,GAAG,EAAE;QAC5C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAiC,CAAA;QACvD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,QAAQ,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;gBAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;QACtJ,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;IACjB,MAAM,YAAY,GAAG,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC/E,MAAM,WAAW,GAAG,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,aAAa,CAAC,CAAA;IAC/E,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,aAAa,IAAI,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,KAAK,aAAa,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAA;IAC7M,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE;QAClC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAA;QACxC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK;YAAE,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,iBAAiB;gBAAE,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QAChJ,OAAO,MAAM,CAAA;IACf,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;IACjB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QAC/D,IAAI,cAAc,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,YAAY,CAAC,KAAK,cAAc;YAAE,OAAO,KAAK,CAAA;QAC3G,IAAI,CAAC,aAAa;YAAE,OAAO,IAAI,CAAA;QAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,CAAA;QACrF,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC;aACrJ,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAA;IACtE,CAAC,CAAC,EAAE,CAAC,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,CAAA;IAChF,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE;QAChC,MAAM,MAAM,GAAG,IAAI,GAAG,CAA8B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QAC1F,KAAK,MAAM,IAAI,IAAI,WAAW;YAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QAC3F,OAAO,MAAM,CAAA;IACf,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;IACjB,MAAM,cAAc,GAAG,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,YAAY,CAAC,CAAA;IACvK,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE;QACjC,MAAM,YAAY,GAA8C,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAA;QACzG,MAAM,MAAM,GAAG,IAAI,GAAG,CAAuC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;QACpG,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,IAAI,YAAY,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY;gBAAE,SAAQ;YACpE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QACrC,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAA;QAChK,OAAO,MAAM,CAAA;IACf,CAAC,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAA;IAC/B,MAAM,gBAAgB,GAAG,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAA;IAC5G,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,IAAI,EAAE;QACpC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAgB,QAAQ,CAAC,EAAE,GAAG,CAAoF,gBAAgB,CAAC,CAAC,CAAC,CAAA;QACzL,OAAO,GAAG,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA,CAAC,CAAC,CAAA;IAC/O,CAAC,EAAE,MAAM,CAAC,EAAE,GAAG,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;IACnE,MAAM,MAAM,GAAG,KAAK,EAAE,IAAmB,EAAE,MAA+B,EAAiB,EAAE;QAC3F,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QACrC,IAAI,CAAC;YAAC,MAAM,GAAG,CAAC,UAAU,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;YAAC,MAAM,IAAI,EAAE,CAAA;QAAC,CAAC;QAC7I,OAAO,MAAM,EAAE,CAAC;YAAC,MAAM,IAAI,EAAE,CAAC;YAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAA;QAAC,CAAC;gBAAS,CAAC;YAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAAC,CAAC;IAChG,CAAC,CAAA;IACD,MAAM,QAAQ,GAAG,KAAK,EAAE,IAAmB,EAAiB,EAAE;QAC5D,IAAI,CAAC,IAAI,CAAC,mBAAmB;YAAE,OAAM;QACrC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QACrC,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,UAAU,IAAI,CAAC,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,mBAAmB,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,IAAI,QAAQ,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;YACtK,MAAM,IAAI,EAAE,CAAA;QACd,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAA;QAAC,CAAC;gBAAS,CAAC;YAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAAC,CAAC;IACpF,CAAC,CAAA;IACD,MAAM,MAAM,GAAG,KAAK,EAAE,IAAmB,EAAiB,EAAE;QAC1D,IAAI,CAAC,IAAI,CAAC,mBAAmB;YAAE,OAAM;QACrC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QACrC,IAAI,CAAC;YAAC,MAAM,GAAG,CAAC,UAAU,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC,EAAE,CAAC,CAAC;YAAC,MAAM,IAAI,EAAE,CAAA;QAAC,CAAC;QACvI,OAAO,MAAM,EAAE,CAAC;YAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAA;QAAC,CAAC;gBAAS,CAAC;YAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAAC,CAAC;IAClF,CAAC,CAAA;IACD,MAAM,MAAM,GAAG,KAAK,EAAE,IAAmB,EAAiB,EAAE;QAC1D,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QACrC,IAAI,CAAC;YAAC,MAAM,GAAG,CAAC,UAAU,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;YAAC,MAAM,IAAI,EAAE,CAAA;QAAC,CAAC;QAC1I,OAAO,MAAM,EAAE,CAAC;YAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAA;QAAC,CAAC;gBAAS,CAAC;YAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAAC,CAAC;IAClF,CAAC,CAAA;IACD,MAAM,MAAM,GAAG,KAAK,EAAE,IAAmB,EAAE,MAAc,EAAiB,EAAE;QAC1E,IAAI,CAAC,MAAM;YAAE,OAAM;QACnB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QACrC,IAAI,CAAC;YAAC,MAAM,GAAG,CAAC,UAAU,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;YAAC,MAAM,IAAI,EAAE,CAAA;QAAC,CAAC;QAClJ,OAAO,KAAK,EAAE,CAAC;YAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAA;QAAC,CAAC;gBAAS,CAAC;YAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAAC,CAAC;IAChF,CAAC,CAAA;IACD,MAAM,MAAM,GAAG,KAAK,EAAE,IAAmB,EAAiB,EAAE;QAC1D,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QACrC,IAAI,CAAC;YAAC,MAAM,GAAG,CAAC,UAAU,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;YAAC,IAAI,cAAc,KAAK,IAAI,CAAC,EAAE;gBAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAAC,MAAM,IAAI,EAAE,CAAA;QAAC,CAAC;QACxI,OAAO,MAAM,EAAE,CAAC;YAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAA;QAAC,CAAC;gBAAS,CAAC;YAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAAC,CAAC;IAClF,CAAC,CAAA;IACD,OAAO,eAAK,SAAS,EAAC,mCAAmC,aACtD,CAAC,UAAU,IAAI,8BAAG,IAAI,IAAI,eAAK,SAAS,EAAC,oCAAoC,aAAC,iBAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,IAAI,yCAAe,EAAA,KAAC,yBAAyB,IAAC,IAAI,EAAE,EAAE,GAAI,EAAA,yBAAO,WAAW,EAAE,KAAK,IAAI,QAAQ,GAAQ,IAAM,EAAC,KAAC,aAAa,IAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,IAAI,yBAAyB,EAAE,OAAO,EAAE,8BAAE,gBAAM,SAAS,EAAC,wBAAwB,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,aAAE,aAAK,gCAAW,EAAC,WAAW,IAAI,iBAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,yCAAe,EAAE,WAAW,EAAE,MAAM,KAAK,UAAU,IAAI,kBAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,aAAE,KAAC,iBAAiB,IAAC,IAAI,EAAE,EAAE,GAAI,0BAAY,IAAI,GAAI,IAAG,EACrxB,KAAK,IAAI,KAAC,eAAe,cAAE,KAAK,GAAmB,EACnD,iBAAiB,IAAI,WAAW,IAAI,KAAC,eAAe,IAAC,OAAO,EAAC,0BAAM,EAAC,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,KAAK,EAAC,MAAM,YAAC,KAAC,iBAAiB,IAAsB,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAzI,WAAW,CAAC,EAAE,CAA+H,GAAkB,EACpX,QAAQ,IAAI,WAAW,IAAI,KAAC,eAAe,IAAC,KAAK,EAAC,gCAAO,EAAC,MAAM,EAAE,QAAQ,WAAW,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,KAAK,EAAC,MAAM,YAAC,KAAC,QAAQ,IAAC,aAAa,EAAE,WAAW,CAAC,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,GAAI,GAAkB,EAC1S,YAAY,IAAI,MAAC,eAAe,IAAC,OAAO,EAAC,aAAa,EAAC,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,YAAY,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,KAAK,EAAC,MAAM,aAAC,KAAC,UAAU,IAClL,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,YAAY,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAChK,SAAS,EAAE,wBAAwB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,EACxD,IAAI,EAAE,IAAI,KAAK,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,KAAK,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,KAAK,QAAQ,CAAC,YAAY,CAAC,CAAA,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC,YAAY,CAAC,CAAA,CAAC,CAAC,EACrL,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC,YAAY,CAAC,CAAA,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,KAAK,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC,YAAY,CAAC,CAAA,CAAC,CAAC,IAH5I,YAAY,CAAC,EAAE,CAIpB,EAAC,KAAK,IAAI,KAAC,eAAe,cAAE,KAAK,GAAmB,IAAmB,EACxE,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAC,kBAAkB,IAAC,IAAI,EAAE,CAAC,GAAI,CAAC,CAAC,CAAC,8BAC3D,eAAK,SAAS,EAAC,yBAAyB,aACtC,iBAAO,SAAS,EAAC,0BAA0B,aAAC,eAAM,SAAS,EAAC,SAAS,yCAAY,EAAA,8BAAkB,MAAM,YAAC,KAAC,mBAAmB,IAAC,IAAI,EAAE,EAAE,GAAI,GAAO,EAAA,gBAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,WAAW,EAAC,gFAAe,GAAG,EAAC,KAAK,IAAI,iBAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,gBAAa,sCAAQ,YAAC,KAAC,kBAAkB,IAAC,IAAI,EAAE,EAAE,GAAI,GAAS,IAAS,EACzX,iBAAO,SAAS,EAAC,4BAA4B,aAAC,eAAM,SAAS,EAAC,SAAS,qDAAc,EAAA,kBAAQ,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,aAAE,iBAAQ,KAAK,EAAC,KAAK,yCAAc,EAAA,iBAAQ,KAAK,EAAC,YAAY,mCAAa,EAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAQ,KAAK,EAAE,IAAI,CAAC,EAAE,kBAAkB,IAAI,CAAC,IAAI,KAApB,IAAI,CAAC,EAAE,CAAuB,CAAC,IAAU,IAAQ,EAC3V,iBAAO,SAAS,EAAC,4CAA4C,aAAC,eAAM,SAAS,EAAC,SAAS,2DAAe,EAAA,kBAAQ,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,KAA0B,CAAC,aAAE,kBAAQ,KAAK,EAAC,KAAK,iDAAS,WAAW,CAAC,MAAM,IAAU,EAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,kBAAQ,KAAK,EAAE,MAAM,CAAC,EAAE,aAAmB,MAAM,CAAC,KAAK,cAAK,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,KAA7D,MAAM,CAAC,EAAE,CAA8D,CAAC,IAAU,IAAQ,EACxZ,8BAAiB,QAAQ,8BAAK,gBAAgB,SAAK,KAAK,CAAC,KAAK,CAAC,MAAM,IAAS,IAC1E,EACN,eAAK,SAAS,EAAC,4BAA4B,gBAAY,4CAAS,aAAC,kBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,kBAAgB,YAAY,KAAK,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,aAAE,0CAAe,EAAA,sBAAI,WAAW,CAAC,MAAM,GAAK,IAAS,EAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,kBAAQ,IAAI,EAAC,QAAQ,EAAiB,SAAS,EAAE,YAAY,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,kBAAgB,YAAY,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,aAAE,yBAAO,MAAM,CAAC,KAAK,GAAQ,EAAA,sBAAI,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAK,KAA9N,MAAM,CAAC,EAAE,CAA8N,CAAC,IAAO,EAC9iB,cAAK,SAAS,EAAC,mBAAmB,kBAAe,YAAY,KAAK,KAAK,gBAAa,0BAAM,YAAE,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;4BACxH,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAA;4BAChD,OAAO,KAAC,cAAc,IAAiB,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,KAAK,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,KAAK,IAAI,cAAc,KAAK,KAAK,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,KAAC,QAAQ,IAC7L,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAC9H,SAAS,EAAE,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAChD,IAAI,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,IAFjC,IAAI,CAAC,EAAE,CAGZ,IAJ0B,MAAM,CAAC,EAAE,CAI/B,CAAA;wBACR,CAAC,CAAC,GAAO,EAAC,CAAC,WAAW,CAAC,MAAM,IAAI,eAAK,SAAS,EAAC,8BAA8B,aAAC,2BAAS,KAAK,IAAI,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,GAAU,EAAA,sBAAI,WAAW,EAAE,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,gBAAgB,GAAK,IAAM,IAAI,CAAC,IAChQ,CAAA;AACR,CAAC;AAED,SAAS,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,IAAI,EAElF;IACC,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAyB,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;IACpI,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAA;IACpE,MAAM,qBAAqB,GAAG,YAAY,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA;IACnE,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAA;IAClE,MAAM,cAAc,GAAG,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;IACrL,OAAO,kBAAS,SAAS,EAAC,uBAAuB,kBAAe,QAAQ,CAAC,MAAM,GAAG,CAAC,mBAAiB,IAAI,CAAC,QAAQ,YAC/G,kBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,0BAA0B,mBAAe,QAAQ,EAAC,OAAO,EAAE,IAAI,aAAE,2BAAM,gBAAM,SAAS,EAAC,6BAA6B,aAAC,iBAAQ,KAAK,EAAE,IAAI,CAAC,KAAK,YAAG,IAAI,CAAC,KAAK,GAAU,EAAA,uBAAK,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAM,IAAO,EAAA,iBAAO,SAAS,EAAC,6BAA6B,aAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC,MAAM,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAS,EAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,GAAG,CAAC,CAAC,IAAI,gBAAM,SAAS,EAAC,4BAA4B,aAAE,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,iCAAqB,QAAQ,CAAC,MAAM,GAAG,CAAC,8BAAM,qBAAqB,OAAG,YAAY,CAAC,MAAM,IAAS,EAAE,cAAc,GAAG,CAAC,IAAI,+DAAc,cAAc,IAAS,IAAQ,IAAQ,EAAA,KAAC,yBAAyB,IAAC,IAAI,EAAE,EAAE,GAAI,IAAS,GAC/vB,CAAA;AACZ,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAG1H;IACC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACjD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IACpD,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC/D,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;IAChF,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAyB,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;IAC/H,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAA;IACpE,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,mBAAmB,CAAC,CAAA;IAC7E,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,mBAAmB,CAAC,CAAA;IAC7E,MAAM,oBAAoB,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAA;IACzJ,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACxH,MAAM,gBAAgB,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC9F,MAAM,cAAc,GAAG,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC1F,OAAO,eAAK,SAAS,EAAC,yBAAyB,aAC3C,mBAAS,SAAS,EAAC,8BAA8B,aAAC,wDAAqB,EAAA,sBAAI,IAAI,CAAC,WAAW,IAAI,QAAQ,GAAK,IAAU,EACtH,eAAK,SAAS,EAAC,yBAAyB,aAAC,4BAAO,0CAAe,EAAA,iBAAQ,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,YAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,iBAAsB,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,OAAO,IAAI,IAAI,CAAC,EAAE,KAAK,QAAQ,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,YAAG,IAAI,CAAC,KAAK,IAAtN,IAAI,CAAC,EAAE,CAAyN,CAAC,GAAU,IAAQ,EAAA,4BAAO,gDAAgB,EAAA,kBAAQ,KAAK,EAAE,IAAI,CAAC,mBAAmB,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,mBAAmB,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,aAAE,iBAAQ,KAAK,EAAC,EAAE,mCAAa,EAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAsB,KAAK,EAAE,IAAI,CAAC,EAAE,kBAAI,IAAI,CAAC,IAAI,cAAK,IAAI,CAAC,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAnF,IAAI,CAAC,EAAE,CAAsF,CAAC,IAAU,IAAQ,EAAA,4BAAO,sDAAiB,EAAA,kBAAQ,KAAK,EAAE,IAAI,CAAC,mBAAmB,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,mBAAmB,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,aAAE,iBAAQ,KAAK,EAAC,EAAE,6DAAmB,EAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAsB,KAAK,EAAE,IAAI,CAAC,EAAE,kBAAI,IAAI,CAAC,IAAI,KAApC,IAAI,CAAC,EAAE,CAAuC,CAAC,IAAU,IAAQ,IAAM,EACjlC,cAAc,IAAI,mBAAS,SAAS,EAAC,4BAA4B,gBAAa,SAAS,EAAE,MAAM,aAAE,aAAK,EAAA,2BAAM,2BAAS,cAAc,CAAC,KAAK,GAAU,EAAA,0BAAQ,cAAc,CAAC,MAAM,GAAS,IAAO,IAAU,EAC3M,mBAAS,SAAS,EAAC,6BAA6B,aAAC,6BAAQ,wDAAqB,EAAA,0BAAQ,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,GAAS,IAAS,EAAC,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,wBAAM,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,6BAA+B,IAAI,CAAC,MAAM,KAAK,MAAM,aAAE,sBAAI,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,KAAC,kBAAkB,IAAC,IAAI,EAAE,EAAE,GAAI,CAAC,CAAC,CAAC,EAAE,GAAK,EAAA,sBAAI,IAAI,CAAC,KAAK,GAAK,EAAA,iBAAQ,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAc,UAAU,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,6BAAa,KAAnX,IAAI,CAAC,EAAE,CAAmX,CAAC,GAAO,EAAE,oBAAoB,CAAC,MAAM,GAAG,CAAC,IAAI,4BAAO,eAAM,SAAS,EAAC,SAAS,qDAAc,EAAA,kBAAQ,YAAY,EAAC,EAAE,EAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;oCAAE,MAAM,CAAC,EAAE,iBAAiB,EAAE,CAAC,GAAG,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE,CAAA,CAAC,CAAC,aAAE,iBAAQ,KAAK,EAAC,EAAE,2DAAiB,EAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAQ,KAAK,EAAE,IAAI,CAAC,EAAE,aAAiB,IAAI,CAAC,KAAK,cAAK,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,KAAjD,IAAI,CAAC,EAAE,CAAoD,CAAC,IAAU,IAAQ,IAAW,EACjqC,IAAI,CAAC,aAAa,IAAI,KAAC,WAAW,IAAC,KAAK,EAAC,0BAAM,EAAC,KAAK,EAAE,IAAI,CAAC,aAAa,GAAI,EAC7E,IAAI,CAAC,aAAa,IAAI,KAAC,WAAW,IAAC,KAAK,EAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,GAAI,EACxH,gBAAgB,CAAC,MAAM,GAAG,CAAC,IAAI,mBAAS,SAAS,EAAC,8DAA8D,aAAC,kEAAiB,gBAAgB,CAAC,MAAM,IAAW,EAAA,uBAAK,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,yBAAkB,yBAAO,IAAI,CAAC,OAAO,GAAQ,EAAA,yBAAO,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,cAAc,EAAE,GAAQ,KAArF,IAAI,CAAC,EAAE,CAAmF,CAAC,GAAM,IAAU,EAC1T,SAAS,IAAI,gBAAM,SAAS,EAAC,yBAAyB,EAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM;oBAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA,CAAC,CAAC,aAAE,4BAAO,sDAAiB,EAAA,mBAAU,SAAS,QAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAC,0EAAc,GAAG,IAAQ,EAAA,0BAAK,iBAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA,CAAC,CAAC,6BAAa,EAAA,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,YAAY,EAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,yCAAe,IAAM,IAAO,EACnmB,gBAAgB,IAAI,eAAK,SAAS,EAAC,iCAAiC,EAAC,IAAI,EAAC,OAAO,aAAC,kQAAmD,EAAA,0BAAK,iBAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,yCAAe,EAAA,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,WAAW,EAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,yCAAe,IAAM,IAAM,EAC/T,kBAAQ,SAAS,EAAC,0BAA0B,aAAC,iCAAS,IAAI,CAAC,QAAQ,cAAK,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,IAAS,EAAA,2BAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,8BAAG,IAAI,CAAC,mBAAmB,IAAI,iBAAQ,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,YAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,QAAQ,EAAE,IAAI,IAAI,IAAI,KAAK,GAAU,EAAC,iBAAQ,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,yCAAe,EAAA,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,YAAY,EAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,yCAAe,IAAG,CAAC,CAAC,CAAC,iBAAQ,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,YAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,QAAQ,EAAE,IAAI,IAAI,IAAI,EAAE,GAAU,EAAC,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,SAAS,gBAAa,MAAM,IAAI,CAAC,KAAK,EAAE,mBAAiB,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAE,KAAC,kBAAkB,IAAC,IAAI,EAAE,EAAE,GAAI,GAAS,IAAO,IAAS,IAC3hC,CAAA;AACR,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,KAAK,EAAE,KAAK,EAAoC;IACrE,OAAO,mBAAS,SAAS,EAAC,yBAAyB,aAAC,2BAAS,KAAK,GAAU,EAAA,sBAAI,KAAK,GAAK,IAAU,CAAA;AACtG,CAAC;AAED,SAAS,QAAQ,CAAC,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAuI;IACzM,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAU,CAAA;IAC5C,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACvC,MAAM,iBAAiB,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAA;IACtE,MAAM,MAAM,GAAG,KAAK,EAAE,KAAiC,EAAiB,EAAE;QACxE,KAAK,CAAC,cAAc,EAAE,CAAC;QAAC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC;QAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QAClC,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACzD,aAAa;oBACb,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;oBAC9F,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;oBAC1E,mBAAmB,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,SAAS,EAAE,mBAAmB,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,SAAS;oBAC9G,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;iBACnD,CAAC,EAAE,CAAC,CAAA;YACL,MAAM,OAAO,EAAE,CAAC;YAAC,KAAK,EAAE,CAAA;QAC1B,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAA;QAAC,CAAC;gBAAS,CAAC;YAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAAC,CAAC;IAChF,CAAC,CAAA;IACD,OAAO,gBAAM,SAAS,EAAC,uBAAuB,eAAY,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,MAAM,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC,aAAE,4BAAO,sDAAiB,EAAA,gBAAO,IAAI,EAAC,OAAO,EAAC,SAAS,EAAE,GAAG,EAAE,QAAQ,QAAC,SAAS,QAAC,WAAW,EAAC,wDAAW,GAAG,IAAQ,EAAA,4BAAO,gDAAgB,EAAA,kBAAQ,IAAI,EAAC,UAAU,EAAC,YAAY,EAAC,EAAE,aAAC,iBAAQ,KAAK,EAAC,EAAE,mCAAa,EAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAsB,KAAK,EAAE,IAAI,CAAC,EAAE,kBAAI,IAAI,CAAC,IAAI,KAApC,IAAI,CAAC,EAAE,CAAuC,CAAC,IAAU,IAAQ,EAAA,iBAAO,SAAS,EAAC,SAAS,aAAC,sDAAiB,EAAA,mBAAU,IAAI,EAAC,aAAa,EAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAC,gFAAe,GAAG,IAAQ,EAAA,4BAAO,gDAAgB,EAAA,kBAAQ,IAAI,EAAC,UAAU,EAAC,YAAY,EAAC,QAAQ,aAAC,iBAAQ,KAAK,EAAC,KAAK,uBAAW,EAAA,iBAAQ,KAAK,EAAC,QAAQ,6BAAY,EAAA,iBAAQ,KAAK,EAAC,MAAM,uBAAW,EAAA,iBAAQ,KAAK,EAAC,QAAQ,6BAAY,IAAS,IAAQ,EAAA,4BAAO,sDAAiB,EAAA,kBAAQ,IAAI,EAAC,UAAU,EAAC,YAAY,EAAC,EAAE,aAAC,iBAAQ,KAAK,EAAC,EAAE,6DAAmB,EAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAsB,KAAK,EAAE,IAAI,CAAC,EAAE,kBAAI,IAAI,CAAC,IAAI,KAApC,IAAI,CAAC,EAAE,CAAuC,CAAC,IAAU,IAAQ,EAAA,eAAK,SAAS,EAAC,4CAA4C,aAAC,wDAAW,2CAAiB,IAAO,EAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,wBAAM,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,4BAAqB,gBAAO,IAAI,EAAC,UAAU,EAAC,IAAI,EAAC,kBAAkB,EAAC,KAAK,EAAE,IAAI,CAAC,EAAE,GAAI,EAAA,aAAK,EAAA,yBAAO,IAAI,CAAC,KAAK,GAAQ,EAAA,0BAAQ,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAS,KAAjJ,IAAI,CAAC,EAAE,CAAkJ,CAAC,GAAO,CAAC,CAAC,CAAC,mGAAmB,EAAC,mKAAqC,IAAM,EAAA,iBAAO,SAAS,EAAC,SAAS,aAAC,4DAAkB,EAAA,kBAAQ,IAAI,EAAC,YAAY,EAAC,YAAY,EAAC,KAAK,aAAC,iBAAQ,KAAK,EAAC,KAAK,+IAA+B,EAAA,iBAAQ,KAAK,EAAC,MAAM,6EAAoB,IAAS,IAAQ,EAAC,KAAK,IAAI,KAAC,eAAe,cAAE,KAAK,GAAmB,EAAC,6BAAQ,iBAAQ,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,6BAAa,EAAA,kBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,YAAY,EAAC,QAAQ,EAAE,IAAI,aAAE,KAAC,iBAAiB,IAAC,IAAI,EAAE,EAAE,GAAI,EAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IAAU,IAAS,IAAO,CAAA;AAC3yD,CAAC;AAED,SAAS,SAAS,CAAC,WAAmB,EAAE,QAAgB,EAAE,KAAiC,EAAE,UAAU,IAAI,GAAG,EAAU;IACtH,IAAI,WAAW,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA;IACzC,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;QAAE,OAAO,KAAK,CAAA;IAC1C,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IACxB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,iBAAiB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;AAC9G,CAAC;AACD,SAAS,WAAW,CAAC,KAA0B,IAAY,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,KAAK,IAAI,KAAK,CAAA,CAAC,CAAC;AAC3H,SAAS,iBAAiB,CAAC,IAAmB,EAAE,SAAsC;IACpF,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,mBAAmB,CAAC,CAAA;IAC7E,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,MAAM,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAA;AAC5H,CAAC;AACD,SAAS,aAAa,CAAC,KAAgC,IAAY,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC;AACjJ,SAAS,eAAe,CAAC,KAA4B,EAAE,QAAQ,GAAG,CAAC;IACjE,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAA;IACtC,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC;YAAE,OAAO,QAAQ;gBAC9C,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,QAAQ,+BAA+B,EAAE;gBACjG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAA;QAClE,MAAM,EAAE,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;QACtF,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAA;IAC1I,CAAC;IACD,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;IAC3C,OAAO;QACL,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO;QAC1E,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU;QACxF,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,mBAAmB;KAClE,CAAA;AACH,CAAC"}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
openRequest?: object | undefined;
|
|
4
|
-
}): JSX.Element;
|
|
1
|
+
/** Stable workspace entry; requirement navigation owns the board hierarchy. */
|
|
2
|
+
export { RequirementBoard as TaskBoardPanel } from './requirement-board.js';
|
|
5
3
|
//# sourceMappingURL=task-board-panel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-board-panel.d.ts","sourceRoot":"","sources":["../../src/ui/task-board-panel.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"task-board-panel.d.ts","sourceRoot":"","sources":["../../src/ui/task-board-panel.tsx"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,OAAO,EAAE,gBAAgB,IAAI,cAAc,EAAE,MAAM,wBAAwB,CAAA"}
|