@telora/daemon 0.21.196 → 0.22.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/build-info.json +5 -3
- package/dist/completion/team-lifecycle.d.ts.map +1 -1
- package/dist/completion/team-lifecycle.js +3 -0
- package/dist/completion/team-lifecycle.js.map +1 -1
- package/dist/focus/focus-team-state.d.ts +15 -0
- package/dist/focus/focus-team-state.d.ts.map +1 -1
- package/dist/focus/focus-team-state.js +22 -0
- package/dist/focus/focus-team-state.js.map +1 -1
- package/dist/queries/linear-linked.d.ts +53 -0
- package/dist/queries/linear-linked.d.ts.map +1 -0
- package/dist/queries/linear-linked.js +120 -0
- package/dist/queries/linear-linked.js.map +1 -0
- package/dist/resolvers/assembly-engine.d.ts.map +1 -1
- package/dist/resolvers/assembly-engine.js +1 -0
- package/dist/resolvers/assembly-engine.js.map +1 -1
- package/dist/resolvers/index.d.ts.map +1 -1
- package/dist/resolvers/index.js +2 -0
- package/dist/resolvers/index.js.map +1 -1
- package/dist/resolvers/linear-linked-issues.d.ts +40 -0
- package/dist/resolvers/linear-linked-issues.d.ts.map +1 -0
- package/dist/resolvers/linear-linked-issues.js +164 -0
- package/dist/resolvers/linear-linked-issues.js.map +1 -0
- package/dist/shell/activity-clock-registry.d.ts +71 -0
- package/dist/shell/activity-clock-registry.d.ts.map +1 -0
- package/dist/shell/activity-clock-registry.js +171 -0
- package/dist/shell/activity-clock-registry.js.map +1 -0
- package/dist/shell/activity-tracker.d.ts +9 -1
- package/dist/shell/activity-tracker.d.ts.map +1 -1
- package/dist/shell/activity-tracker.js +18 -2
- package/dist/shell/activity-tracker.js.map +1 -1
- package/dist/shell/heartbeat.d.ts.map +1 -1
- package/dist/shell/heartbeat.js +20 -6
- package/dist/shell/heartbeat.js.map +1 -1
- package/dist/spawn/helpers.js +1 -1
- package/dist/spawn/helpers.js.map +1 -1
- package/dist/templates/claude-md.d.ts +1 -1
- package/dist/templates/claude-md.d.ts.map +1 -1
- package/dist/templates/claude-md.js +20 -0
- package/dist/templates/claude-md.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
|
+
// Pinned by: none -- no test imports this module directly (baselined; see lint:pinned-by)
|
|
3
|
+
// PINNED-BY-END
|
|
4
|
+
import { registerSourceResolver } from './assembly-engine.js';
|
|
5
|
+
import { getFocusDeliveries } from '../queries/focuses.js';
|
|
6
|
+
import { resolveLinearSourceId, listInformedByReferences, fetchLinkedLinearIssues, } from '../queries/linear-linked.js';
|
|
7
|
+
import { createLogger } from '../shell/log.js';
|
|
8
|
+
const log = createLogger({ module: 'assembly-engine' });
|
|
9
|
+
/**
|
|
10
|
+
* linear.linked_issues
|
|
11
|
+
*
|
|
12
|
+
* Composes into an executing team's prompt ONLY the Linear issues a
|
|
13
|
+
* human-and-agent session already linked (relation `informed_by`) to the focus
|
|
14
|
+
* being executed OR its deliveries -- fetched VERBATIM through the Server-Side
|
|
15
|
+
* Linear Read Model over product-api. This is the source material the agreed
|
|
16
|
+
* intent was distilled from (e.g. TIN-5's full description), so nuance lost in
|
|
17
|
+
* distillation is available to the work.
|
|
18
|
+
*
|
|
19
|
+
* It is deliberately NOT a general Linear source. Linear is a source for
|
|
20
|
+
* DETERMINING intent, not intent itself; the daemon never reads the backlog on
|
|
21
|
+
* its own initiative. The resolver fetches EXACTLY the referenced identifiers
|
|
22
|
+
* and nothing else, so no code path can surface an issue that was not chosen by
|
|
23
|
+
* a human-and-agent session.
|
|
24
|
+
*
|
|
25
|
+
* The daemon never holds the Linear API key: every fetch is a product-api call
|
|
26
|
+
* that resolves the unit-scoped connection and dereferences the key
|
|
27
|
+
* server-side. The daemon passes only ids/identifiers.
|
|
28
|
+
*
|
|
29
|
+
* SCOPING TO LINEAR (decision): external_references is a generic table, open to
|
|
30
|
+
* future adapter types. This resolver resolves the product's Linear
|
|
31
|
+
* external_data_source id once and keeps only references whose
|
|
32
|
+
* external_data_source_id matches it -- a reference to any non-Linear source is
|
|
33
|
+
* dropped rather than mis-fetched through the Linear read model.
|
|
34
|
+
*
|
|
35
|
+
* Degrades to an explicit empty-state section when the product has no resolved
|
|
36
|
+
* Linear connection or the focus/deliveries carry no informed_by Linear
|
|
37
|
+
* references. On any error it contributes nothing (returns '') -- a resolver
|
|
38
|
+
* never throws into assembly.
|
|
39
|
+
*/
|
|
40
|
+
/** Explicit empty-state section: no linked Linear issues to surface. */
|
|
41
|
+
export const LINKED_LINEAR_EMPTY_STATE = '## Linked Linear Issues\n\n_No Linear issues are linked (informed_by) to this focus or its deliveries._';
|
|
42
|
+
/** Max issues rendered -- prompt-assembly size bound (issue count). */
|
|
43
|
+
export const MAX_LINKED_LINEAR_ISSUES = 20;
|
|
44
|
+
/** Char budget for the rendered section -- prompt-assembly size bound. */
|
|
45
|
+
export const LINKED_LINEAR_BUDGET_CHARS = 12000;
|
|
46
|
+
/**
|
|
47
|
+
* Collect informed_by references from the focus and each of its deliveries,
|
|
48
|
+
* keep only Linear-sourced ones, and dedupe by identifier (aggregating the
|
|
49
|
+
* human-authored notes that cite each issue). Order is stable: focus-level
|
|
50
|
+
* references first, then deliveries in rank order.
|
|
51
|
+
*/
|
|
52
|
+
function collectLinkedRefs(refGroups, linearSourceId) {
|
|
53
|
+
const byIdentifier = new Map();
|
|
54
|
+
const order = [];
|
|
55
|
+
for (const group of refGroups) {
|
|
56
|
+
for (const ref of group) {
|
|
57
|
+
if (ref.externalDataSourceId !== linearSourceId)
|
|
58
|
+
continue; // non-Linear -> drop
|
|
59
|
+
const id = ref.externalIdentifier;
|
|
60
|
+
let entry = byIdentifier.get(id);
|
|
61
|
+
if (!entry) {
|
|
62
|
+
entry = { identifier: id, url: ref.externalUrl, notes: [] };
|
|
63
|
+
byIdentifier.set(id, entry);
|
|
64
|
+
order.push(id);
|
|
65
|
+
}
|
|
66
|
+
if (!entry.url && ref.externalUrl)
|
|
67
|
+
entry.url = ref.externalUrl;
|
|
68
|
+
const note = (ref.note ?? '').trim();
|
|
69
|
+
if (note && !entry.notes.includes(note))
|
|
70
|
+
entry.notes.push(note);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return order.map((id) => byIdentifier.get(id));
|
|
74
|
+
}
|
|
75
|
+
/** Render one issue as markdown, given the notes that cited it. */
|
|
76
|
+
function renderIssue(issue, notes) {
|
|
77
|
+
const lines = [];
|
|
78
|
+
lines.push(`### ${issue.identifier}: ${issue.title}`);
|
|
79
|
+
const meta = [];
|
|
80
|
+
if (issue.state)
|
|
81
|
+
meta.push(`State: ${issue.state.name} (${issue.state.type})`);
|
|
82
|
+
if (issue.teamName)
|
|
83
|
+
meta.push(`Team: ${issue.teamName}`);
|
|
84
|
+
if (issue.projectName)
|
|
85
|
+
meta.push(`Project: ${issue.projectName}`);
|
|
86
|
+
if (issue.url)
|
|
87
|
+
meta.push(`URL: ${issue.url}`);
|
|
88
|
+
if (meta.length > 0)
|
|
89
|
+
lines.push(meta.join(' | '));
|
|
90
|
+
if (issue.projectDescription)
|
|
91
|
+
lines.push(`Project description: ${issue.projectDescription}`);
|
|
92
|
+
if (issue.labels.length > 0)
|
|
93
|
+
lines.push(`Labels: ${issue.labels.join(', ')}`);
|
|
94
|
+
if (notes.length > 0) {
|
|
95
|
+
lines.push('');
|
|
96
|
+
lines.push('Why it was linked:');
|
|
97
|
+
for (const note of notes)
|
|
98
|
+
lines.push(`- ${note}`);
|
|
99
|
+
}
|
|
100
|
+
lines.push('');
|
|
101
|
+
lines.push('Description (verbatim):');
|
|
102
|
+
lines.push(issue.description.length > 0 ? issue.description : '_(no description)_');
|
|
103
|
+
if (issue.comments.length > 0) {
|
|
104
|
+
lines.push('');
|
|
105
|
+
lines.push(`Comments (${issue.comments.length}):`);
|
|
106
|
+
for (const c of issue.comments) {
|
|
107
|
+
const who = c.author ?? 'unknown';
|
|
108
|
+
lines.push(`- ${who} (${c.createdAt}): ${c.body}`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return lines.join('\n');
|
|
112
|
+
}
|
|
113
|
+
/** Register this module's resolver(s). Called from initResolvers() -- not an import side effect. */
|
|
114
|
+
export function registerLinearLinkedIssuesResolver() {
|
|
115
|
+
registerSourceResolver('linear.linked_issues', async (context) => {
|
|
116
|
+
try {
|
|
117
|
+
const linearSourceId = await resolveLinearSourceId(context.productId);
|
|
118
|
+
if (!linearSourceId)
|
|
119
|
+
return LINKED_LINEAR_EMPTY_STATE;
|
|
120
|
+
const deliveries = await getFocusDeliveries(context.focusId);
|
|
121
|
+
const orderedDeliveries = [...deliveries].sort((a, b) => a.priorityRank - b.priorityRank);
|
|
122
|
+
const refGroups = await Promise.all([
|
|
123
|
+
listInformedByReferences('focus', context.focusId),
|
|
124
|
+
...orderedDeliveries.map((d) => listInformedByReferences('delivery', d.id)),
|
|
125
|
+
]);
|
|
126
|
+
const linkedRefs = collectLinkedRefs(refGroups, linearSourceId);
|
|
127
|
+
if (linkedRefs.length === 0)
|
|
128
|
+
return LINKED_LINEAR_EMPTY_STATE;
|
|
129
|
+
const capped = linkedRefs.slice(0, MAX_LINKED_LINEAR_ISSUES);
|
|
130
|
+
const identifiers = capped.map((r) => r.identifier);
|
|
131
|
+
const notesByIdentifier = new Map(capped.map((r) => [r.identifier, r.notes]));
|
|
132
|
+
const issues = await fetchLinkedLinearIssues(context.productId, identifiers);
|
|
133
|
+
if (issues.length === 0)
|
|
134
|
+
return LINKED_LINEAR_EMPTY_STATE;
|
|
135
|
+
const sections = [];
|
|
136
|
+
let used = 0;
|
|
137
|
+
let truncated = false;
|
|
138
|
+
for (const issue of issues) {
|
|
139
|
+
const rendered = renderIssue(issue, notesByIdentifier.get(issue.identifier) ?? []);
|
|
140
|
+
if (used + rendered.length > LINKED_LINEAR_BUDGET_CHARS && sections.length > 0) {
|
|
141
|
+
truncated = true;
|
|
142
|
+
break;
|
|
143
|
+
}
|
|
144
|
+
sections.push(rendered);
|
|
145
|
+
used += rendered.length;
|
|
146
|
+
}
|
|
147
|
+
const omitted = linkedRefs.length - sections.length;
|
|
148
|
+
const header = '## Linked Linear Issues';
|
|
149
|
+
const preamble = 'Source material the agreed intent was distilled from. Linear is a SOURCE ' +
|
|
150
|
+
'for determining intent, not intent itself -- read-only, and only issues a ' +
|
|
151
|
+
'human-and-agent session chose are shown.';
|
|
152
|
+
const parts = [header, preamble, sections.join('\n\n')];
|
|
153
|
+
if (truncated || omitted > 0) {
|
|
154
|
+
parts.push(`_(${omitted > 0 ? omitted : 0} further linked issue(s) omitted for prompt size.)_`);
|
|
155
|
+
}
|
|
156
|
+
return parts.join('\n\n');
|
|
157
|
+
}
|
|
158
|
+
catch (err) {
|
|
159
|
+
log.warn(`linear.linked_issues: failed: ${err.message}`);
|
|
160
|
+
return '';
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=linear-linked-issues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linear-linked-issues.js","sourceRoot":"","sources":["../../src/resolvers/linear-linked-issues.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Activity-clock observability registry.
|
|
3
|
+
*
|
|
4
|
+
* The daemon acts on an in-memory per-team activity clock (focus-team-state's
|
|
5
|
+
* `lastActivityAt`, advanced on every agent event) while the product surface
|
|
6
|
+
* reads a SEPARATELY flushed clock (`agent_sessions.activity_summary.updatedAt`,
|
|
7
|
+
* written by ActivityTracker.flush). When those two clocks disagree an operator
|
|
8
|
+
* cannot tell WHICH one stalled, because every daemon-API projection strips
|
|
9
|
+
* activity_summary. This module makes the write chain state a fact the daemon
|
|
10
|
+
* states in its OWN output (the heartbeat healthEvents channel), distinguishable
|
|
11
|
+
* from a healthy advancing clock:
|
|
12
|
+
*
|
|
13
|
+
* - activity.write_failed a flush write errored or timed out
|
|
14
|
+
* - activity.write_skipped a flush short-circuited (re-entry / dirty-check)
|
|
15
|
+
* persistently past a bounded window
|
|
16
|
+
* - activity.clock_divergence the in-memory clock advanced while the last
|
|
17
|
+
* successfully-published clock stayed frozen
|
|
18
|
+
* (i.e. the write chain stalled)
|
|
19
|
+
*
|
|
20
|
+
* daemon-core stays env-free and behaviorless: ActivityTracker only REPORTS what
|
|
21
|
+
* its flush loop did (onFlushError / onFlushSkip / getLastPublishedClockMs); all
|
|
22
|
+
* logging, thresholding, and health-event emission live here. The thresholds are
|
|
23
|
+
* module constants (they govern only WHEN an already-observable fact surfaces,
|
|
24
|
+
* never correctness), so no new env knob is introduced.
|
|
25
|
+
*
|
|
26
|
+
* A single successful/quiet flush emits nothing; only a failure, a persistent
|
|
27
|
+
* skip, or a sustained divergence surfaces -- never per-tick noise.
|
|
28
|
+
*/
|
|
29
|
+
import { type FlushErrorContext, type FlushSkipContext } from '@telora/daemon-core';
|
|
30
|
+
export declare const ACTIVITY_WRITE_FAILED_CODE = "activity.write_failed";
|
|
31
|
+
export declare const ACTIVITY_WRITE_SKIPPED_CODE = "activity.write_skipped";
|
|
32
|
+
export declare const ACTIVITY_CLOCK_DIVERGENCE_CODE = "activity.clock_divergence";
|
|
33
|
+
/**
|
|
34
|
+
* Record a SUCCESSFUL publish of the focus's activity clock. Advances the last
|
|
35
|
+
* published value and resets the skip streak (a real write ends any skip run).
|
|
36
|
+
*/
|
|
37
|
+
export declare function recordPublishedClock(focusId: string, sessionId: string, clockMs: number): void;
|
|
38
|
+
/**
|
|
39
|
+
* A flush write FAILED or TIMED OUT. Surfaces the failure as a log line + a
|
|
40
|
+
* healthEvents entry naming the session, whether it timed out, and the error.
|
|
41
|
+
* Quiet on success by construction -- only the failure path calls this.
|
|
42
|
+
*/
|
|
43
|
+
export declare function recordFlushFailure(focusId: string, ctx: FlushErrorContext): void;
|
|
44
|
+
/**
|
|
45
|
+
* A flush was SKIPPED (re-entry guard or dirty-check). Tracks the streak and
|
|
46
|
+
* surfaces a persistent-skip health fact only when the streak outlasts the
|
|
47
|
+
* bounded window -- a one-off skip or a healthy quiet chain stays quiet.
|
|
48
|
+
*/
|
|
49
|
+
export declare function recordFlushSkip(focusId: string, ctx: FlushSkipContext, now?: number): void;
|
|
50
|
+
/**
|
|
51
|
+
* Compare the daemon's in-memory activity clock (per focus) against the last
|
|
52
|
+
* successfully-published clock and surface a divergence health fact when the
|
|
53
|
+
* in-memory clock leads the published one past the threshold -- i.e. the team is
|
|
54
|
+
* producing events but the write chain has stalled. Called at the heartbeat,
|
|
55
|
+
* where the in-memory clocks are assembled.
|
|
56
|
+
*
|
|
57
|
+
* Edge-triggered: emits once when a focus crosses into divergence and clears
|
|
58
|
+
* (silently) when it reconciles, so a sustained stall is not re-emitted per beat
|
|
59
|
+
* and a healthy chain within the threshold stays quiet.
|
|
60
|
+
*
|
|
61
|
+
* @param inMemoryByFocus focusId -> epoch ms of the in-memory activity clock.
|
|
62
|
+
*/
|
|
63
|
+
export declare function checkClockDivergence(inMemoryByFocus: Record<string, number>): void;
|
|
64
|
+
/**
|
|
65
|
+
* Drop a focus's clock state on team reap (called beside clearTeamActivity), so
|
|
66
|
+
* a respawn of the same focus starts clean and no stale published clock lingers.
|
|
67
|
+
*/
|
|
68
|
+
export declare function clearFocusClock(focusId: string): void;
|
|
69
|
+
/** Test hatch: clear all registry state. */
|
|
70
|
+
export declare function __resetActivityClockRegistryForTesting(): void;
|
|
71
|
+
//# sourceMappingURL=activity-clock-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity-clock-registry.d.ts","sourceRoot":"","sources":["../../src/shell/activity-clock-registry.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAgB,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAOlG,eAAO,MAAM,0BAA0B,0BAA0B,CAAC;AAClE,eAAO,MAAM,2BAA2B,2BAA2B,CAAC;AACpE,eAAO,MAAM,8BAA8B,8BAA8B,CAAC;AA2C1E;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAK9F;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAUhF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,gBAAgB,EACrB,GAAG,GAAE,MAAmB,GACvB,IAAI,CAoBN;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CA4BlF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAErD;AAED,4CAA4C;AAC5C,wBAAgB,sCAAsC,IAAI,IAAI,CAE7D"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
|
+
// Pinned by: packages/daemon/src/shell/activity-clock-registry.test.ts,
|
|
3
|
+
// packages/daemon/src/shell/heartbeat-team-phases.test.ts
|
|
4
|
+
// PINNED-BY-END
|
|
5
|
+
/**
|
|
6
|
+
* Activity-clock observability registry.
|
|
7
|
+
*
|
|
8
|
+
* The daemon acts on an in-memory per-team activity clock (focus-team-state's
|
|
9
|
+
* `lastActivityAt`, advanced on every agent event) while the product surface
|
|
10
|
+
* reads a SEPARATELY flushed clock (`agent_sessions.activity_summary.updatedAt`,
|
|
11
|
+
* written by ActivityTracker.flush). When those two clocks disagree an operator
|
|
12
|
+
* cannot tell WHICH one stalled, because every daemon-API projection strips
|
|
13
|
+
* activity_summary. This module makes the write chain state a fact the daemon
|
|
14
|
+
* states in its OWN output (the heartbeat healthEvents channel), distinguishable
|
|
15
|
+
* from a healthy advancing clock:
|
|
16
|
+
*
|
|
17
|
+
* - activity.write_failed a flush write errored or timed out
|
|
18
|
+
* - activity.write_skipped a flush short-circuited (re-entry / dirty-check)
|
|
19
|
+
* persistently past a bounded window
|
|
20
|
+
* - activity.clock_divergence the in-memory clock advanced while the last
|
|
21
|
+
* successfully-published clock stayed frozen
|
|
22
|
+
* (i.e. the write chain stalled)
|
|
23
|
+
*
|
|
24
|
+
* daemon-core stays env-free and behaviorless: ActivityTracker only REPORTS what
|
|
25
|
+
* its flush loop did (onFlushError / onFlushSkip / getLastPublishedClockMs); all
|
|
26
|
+
* logging, thresholding, and health-event emission live here. The thresholds are
|
|
27
|
+
* module constants (they govern only WHEN an already-observable fact surfaces,
|
|
28
|
+
* never correctness), so no new env knob is introduced.
|
|
29
|
+
*
|
|
30
|
+
* A single successful/quiet flush emits nothing; only a failure, a persistent
|
|
31
|
+
* skip, or a sustained divergence surfaces -- never per-tick noise.
|
|
32
|
+
*/
|
|
33
|
+
import { healthEvents } from '@telora/daemon-core';
|
|
34
|
+
import { createLogger } from './log.js';
|
|
35
|
+
const log = createLogger({ module: 'activity-clock' });
|
|
36
|
+
const SOURCE = 'activity-clock';
|
|
37
|
+
export const ACTIVITY_WRITE_FAILED_CODE = 'activity.write_failed';
|
|
38
|
+
export const ACTIVITY_WRITE_SKIPPED_CODE = 'activity.write_skipped';
|
|
39
|
+
export const ACTIVITY_CLOCK_DIVERGENCE_CODE = 'activity.clock_divergence';
|
|
40
|
+
/**
|
|
41
|
+
* A skip streak (consecutive flushes that short-circuited without writing)
|
|
42
|
+
* lasting longer than this surfaces as a persistent-skip health fact. Below it,
|
|
43
|
+
* a one-off skip / healthy quiet chain stays quiet. A successful publish resets
|
|
44
|
+
* the streak.
|
|
45
|
+
*/
|
|
46
|
+
const SKIP_PERSIST_THRESHOLD_MS = 90_000;
|
|
47
|
+
/**
|
|
48
|
+
* The in-memory clock leading the last-published clock by more than this is a
|
|
49
|
+
* stalled write chain and surfaces as a divergence health fact. Within it the
|
|
50
|
+
* two clocks are considered reconciled (normal flush lag) and stay quiet.
|
|
51
|
+
*/
|
|
52
|
+
const CLOCK_DIVERGENCE_THRESHOLD_MS = 90_000;
|
|
53
|
+
const byFocus = new Map();
|
|
54
|
+
function ensure(focusId, sessionId) {
|
|
55
|
+
const existing = byFocus.get(focusId);
|
|
56
|
+
if (existing) {
|
|
57
|
+
existing.sessionId = sessionId;
|
|
58
|
+
return existing;
|
|
59
|
+
}
|
|
60
|
+
const created = { sessionId, skipEmitted: false, divergenceActive: false };
|
|
61
|
+
byFocus.set(focusId, created);
|
|
62
|
+
return created;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Record a SUCCESSFUL publish of the focus's activity clock. Advances the last
|
|
66
|
+
* published value and resets the skip streak (a real write ends any skip run).
|
|
67
|
+
*/
|
|
68
|
+
export function recordPublishedClock(focusId, sessionId, clockMs) {
|
|
69
|
+
const state = ensure(focusId, sessionId);
|
|
70
|
+
state.lastPublishedClockMs = clockMs;
|
|
71
|
+
state.skipStreakStartMs = undefined;
|
|
72
|
+
state.skipEmitted = false;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* A flush write FAILED or TIMED OUT. Surfaces the failure as a log line + a
|
|
76
|
+
* healthEvents entry naming the session, whether it timed out, and the error.
|
|
77
|
+
* Quiet on success by construction -- only the failure path calls this.
|
|
78
|
+
*/
|
|
79
|
+
export function recordFlushFailure(focusId, ctx) {
|
|
80
|
+
const kind = ctx.timedOut ? 'timed out' : 'failed';
|
|
81
|
+
const message = `activity-clock write ${kind} for session ${ctx.sessionId}: ${ctx.error.message}`;
|
|
82
|
+
log.warn(`[activity-clock] ${message} (focus ${focusId})`);
|
|
83
|
+
healthEvents.emit({
|
|
84
|
+
severity: 'warn',
|
|
85
|
+
source: SOURCE,
|
|
86
|
+
code: ACTIVITY_WRITE_FAILED_CODE,
|
|
87
|
+
message,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* A flush was SKIPPED (re-entry guard or dirty-check). Tracks the streak and
|
|
92
|
+
* surfaces a persistent-skip health fact only when the streak outlasts the
|
|
93
|
+
* bounded window -- a one-off skip or a healthy quiet chain stays quiet.
|
|
94
|
+
*/
|
|
95
|
+
export function recordFlushSkip(focusId, ctx, now = Date.now()) {
|
|
96
|
+
const state = ensure(focusId, ctx.sessionId);
|
|
97
|
+
if (state.skipStreakStartMs === undefined) {
|
|
98
|
+
state.skipStreakStartMs = now;
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const streakMs = now - state.skipStreakStartMs;
|
|
102
|
+
if (streakMs <= SKIP_PERSIST_THRESHOLD_MS || state.skipEmitted)
|
|
103
|
+
return;
|
|
104
|
+
state.skipEmitted = true;
|
|
105
|
+
const message = `activity-clock write persistently skipped (${ctx.reason}) for ` +
|
|
106
|
+
`session ${ctx.sessionId} for ${streakMs}ms -- the published liveness clock ` +
|
|
107
|
+
`is not advancing though the session has not failed`;
|
|
108
|
+
log.warn(`[activity-clock] ${message} (focus ${focusId})`);
|
|
109
|
+
healthEvents.emit({
|
|
110
|
+
severity: 'warn',
|
|
111
|
+
source: SOURCE,
|
|
112
|
+
code: ACTIVITY_WRITE_SKIPPED_CODE,
|
|
113
|
+
message,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Compare the daemon's in-memory activity clock (per focus) against the last
|
|
118
|
+
* successfully-published clock and surface a divergence health fact when the
|
|
119
|
+
* in-memory clock leads the published one past the threshold -- i.e. the team is
|
|
120
|
+
* producing events but the write chain has stalled. Called at the heartbeat,
|
|
121
|
+
* where the in-memory clocks are assembled.
|
|
122
|
+
*
|
|
123
|
+
* Edge-triggered: emits once when a focus crosses into divergence and clears
|
|
124
|
+
* (silently) when it reconciles, so a sustained stall is not re-emitted per beat
|
|
125
|
+
* and a healthy chain within the threshold stays quiet.
|
|
126
|
+
*
|
|
127
|
+
* @param inMemoryByFocus focusId -> epoch ms of the in-memory activity clock.
|
|
128
|
+
*/
|
|
129
|
+
export function checkClockDivergence(inMemoryByFocus) {
|
|
130
|
+
for (const [focusId, state] of byFocus) {
|
|
131
|
+
const inMemory = inMemoryByFocus[focusId];
|
|
132
|
+
const published = state.lastPublishedClockMs;
|
|
133
|
+
if (inMemory === undefined || published === undefined)
|
|
134
|
+
continue;
|
|
135
|
+
const gapMs = inMemory - published;
|
|
136
|
+
if (gapMs > CLOCK_DIVERGENCE_THRESHOLD_MS) {
|
|
137
|
+
if (state.divergenceActive)
|
|
138
|
+
continue;
|
|
139
|
+
state.divergenceActive = true;
|
|
140
|
+
const message = `activity-clock divergence for session ${state.sessionId}: the in-memory ` +
|
|
141
|
+
`clock leads the last published clock by ${gapMs}ms -- the write chain has ` +
|
|
142
|
+
`stalled (the team is active but its published liveness clock is frozen)`;
|
|
143
|
+
log.warn(`[activity-clock] ${message} (focus ${focusId})`);
|
|
144
|
+
healthEvents.emit({
|
|
145
|
+
// 'warn', not 'error': the daemon is still functioning -- only the
|
|
146
|
+
// liveness surface has gone stale -- so this surfaces the stall without
|
|
147
|
+
// falsely flipping the whole daemon health badge to red.
|
|
148
|
+
severity: 'warn',
|
|
149
|
+
source: SOURCE,
|
|
150
|
+
code: ACTIVITY_CLOCK_DIVERGENCE_CODE,
|
|
151
|
+
message,
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
else if (state.divergenceActive) {
|
|
155
|
+
// Reconciled: clear the episode so a later divergence surfaces afresh.
|
|
156
|
+
state.divergenceActive = false;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Drop a focus's clock state on team reap (called beside clearTeamActivity), so
|
|
162
|
+
* a respawn of the same focus starts clean and no stale published clock lingers.
|
|
163
|
+
*/
|
|
164
|
+
export function clearFocusClock(focusId) {
|
|
165
|
+
byFocus.delete(focusId);
|
|
166
|
+
}
|
|
167
|
+
/** Test hatch: clear all registry state. */
|
|
168
|
+
export function __resetActivityClockRegistryForTesting() {
|
|
169
|
+
byFocus.clear();
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=activity-clock-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity-clock-registry.js","sourceRoot":"","sources":["../../src/shell/activity-clock-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,10 +4,18 @@
|
|
|
4
4
|
* Re-exports the shared ActivitySnapshot type and provides a daemon-specific
|
|
5
5
|
* ActivityTracker subclass that flushes snapshots to agent_sessions via
|
|
6
6
|
* updateSession().
|
|
7
|
+
*
|
|
8
|
+
* It also wires the daemon-core reporting seam (onFlushError / onFlushSkip) plus
|
|
9
|
+
* the successful-publish signal into the activity-clock registry, so a failed,
|
|
10
|
+
* timed-out, or persistently-skipped write -- and any divergence between the
|
|
11
|
+
* daemon's in-memory clock and the last published clock -- becomes a health fact
|
|
12
|
+
* the daemon states in its own output rather than a silently swallowed error.
|
|
13
|
+
* daemon-core stays env-free: the emit/threshold logic lives in the registry,
|
|
14
|
+
* reached only through the injected callbacks.
|
|
7
15
|
*/
|
|
8
16
|
import { ActivityTracker as CoreActivityTracker, type ActivitySnapshot } from '@telora/daemon-core';
|
|
9
17
|
export type { ActivitySnapshot };
|
|
10
18
|
export declare class ActivityTracker extends CoreActivityTracker {
|
|
11
|
-
constructor(sessionId: string);
|
|
19
|
+
constructor(sessionId: string, focusId: string);
|
|
12
20
|
}
|
|
13
21
|
//# sourceMappingURL=activity-tracker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity-tracker.d.ts","sourceRoot":"","sources":["../../src/shell/activity-tracker.ts"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"activity-tracker.d.ts","sourceRoot":"","sources":["../../src/shell/activity-tracker.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,eAAe,IAAI,mBAAmB,EAAiB,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAInH,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAEjC,qBAAa,eAAgB,SAAQ,mBAAmB;gBAC1C,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAqB/C"}
|
|
@@ -7,19 +7,35 @@
|
|
|
7
7
|
* Re-exports the shared ActivitySnapshot type and provides a daemon-specific
|
|
8
8
|
* ActivityTracker subclass that flushes snapshots to agent_sessions via
|
|
9
9
|
* updateSession().
|
|
10
|
+
*
|
|
11
|
+
* It also wires the daemon-core reporting seam (onFlushError / onFlushSkip) plus
|
|
12
|
+
* the successful-publish signal into the activity-clock registry, so a failed,
|
|
13
|
+
* timed-out, or persistently-skipped write -- and any divergence between the
|
|
14
|
+
* daemon's in-memory clock and the last published clock -- becomes a health fact
|
|
15
|
+
* the daemon states in its own output rather than a silently swallowed error.
|
|
16
|
+
* daemon-core stays env-free: the emit/threshold logic lives in the registry,
|
|
17
|
+
* reached only through the injected callbacks.
|
|
10
18
|
*/
|
|
11
19
|
import { ActivityTracker as CoreActivityTracker, loadEnvConfig } from '@telora/daemon-core';
|
|
12
20
|
import { updateSession } from '../queries/sessions.js';
|
|
21
|
+
import { recordPublishedClock, recordFlushFailure, recordFlushSkip } from './activity-clock-registry.js';
|
|
13
22
|
export class ActivityTracker extends CoreActivityTracker {
|
|
14
|
-
constructor(sessionId) {
|
|
23
|
+
constructor(sessionId, focusId) {
|
|
15
24
|
super(sessionId, async (snapshot) => {
|
|
16
25
|
await updateSession(sessionId, {
|
|
17
26
|
activity_summary: snapshot,
|
|
18
27
|
});
|
|
28
|
+
// The write resolved -> record the published clock so the heartbeat can
|
|
29
|
+
// detect an in-memory-vs-published divergence. A rejected/timed-out write
|
|
30
|
+
// never reaches here; it lands on onFlushError below instead.
|
|
31
|
+
recordPublishedClock(focusId, sessionId, Date.parse(snapshot.updatedAt));
|
|
19
32
|
},
|
|
20
33
|
// Bound the session-activity write so a stalled updateSession can neither
|
|
21
34
|
// hang the flush nor latch its re-entry guard (validated env knob).
|
|
22
|
-
loadEnvConfig().TELORA_ACTIVITY_WRITE_TIMEOUT_MS
|
|
35
|
+
loadEnvConfig().TELORA_ACTIVITY_WRITE_TIMEOUT_MS, {
|
|
36
|
+
onFlushError: (ctx) => recordFlushFailure(focusId, ctx),
|
|
37
|
+
onFlushSkip: (ctx) => recordFlushSkip(focusId, ctx),
|
|
38
|
+
});
|
|
23
39
|
}
|
|
24
40
|
}
|
|
25
41
|
//# sourceMappingURL=activity-tracker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity-tracker.js","sourceRoot":"","sources":["../../src/shell/activity-tracker.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,uEAAuE;AACvE,gBAAgB;AAEhB
|
|
1
|
+
{"version":3,"file":"activity-tracker.js","sourceRoot":"","sources":["../../src/shell/activity-tracker.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,uEAAuE;AACvE,gBAAgB;AAEhB;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,eAAe,IAAI,mBAAmB,EAAE,aAAa,EAAyB,MAAM,qBAAqB,CAAC;AACnH,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAIzG,MAAM,OAAO,eAAgB,SAAQ,mBAAmB;IACtD,YAAY,SAAiB,EAAE,OAAe;QAC5C,KAAK,CACH,SAAS,EACT,KAAK,EAAE,QAA0B,EAAE,EAAE;YACnC,MAAM,aAAa,CAAC,SAAS,EAAE;gBAC7B,gBAAgB,EAAE,QAA8C;aACjE,CAAC,CAAC;YACH,wEAAwE;YACxE,0EAA0E;YAC1E,8DAA8D;YAC9D,oBAAoB,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QAC3E,CAAC;QACD,0EAA0E;QAC1E,oEAAoE;QACpE,aAAa,EAAE,CAAC,gCAAgC,EAChD;YACE,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC;YACvD,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC;SACpD,CACF,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../../src/shell/heartbeat.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEhF,OAAO,EAIL,KAAK,wBAAwB,EAC7B,KAAK,6BAA6B,EACnC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAA0C,sBAAsB,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../../src/shell/heartbeat.ts"],"names":[],"mappings":"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"}
|
package/dist/shell/heartbeat.js
CHANGED
|
@@ -31,7 +31,8 @@ import { sendHeartbeat, sendDisconnect } from '../queries/daemon-connection.js';
|
|
|
31
31
|
import { getCompletedSessionAggregates } from '../queries/sessions.js';
|
|
32
32
|
import { observeRetentionBeat, recordRetentionObservation, evaluateRetirementPrecondition, } from '../drift/retention-observation.js';
|
|
33
33
|
import { getSessionCounters, setSessionCounters, recordSessionCompleted, recordActivity, getLastActivityAt } from './agent-state.js';
|
|
34
|
-
import { getActiveTeamCount } from '../focus/focus-team-state.js';
|
|
34
|
+
import { getActiveTeamCount, buildTeamClockMap } from '../focus/focus-team-state.js';
|
|
35
|
+
import { checkClockDivergence } from './activity-clock-registry.js';
|
|
35
36
|
import { buildTeamPhaseMap } from '../completion/team-phase.js';
|
|
36
37
|
import { safeInterval, healthEvents, getReadOnlyModeState } from '@telora/daemon-core';
|
|
37
38
|
import { isIntakeDraining } from './intake-control.js';
|
|
@@ -300,13 +301,15 @@ export function readOnlyMetadataField() {
|
|
|
300
301
|
}
|
|
301
302
|
/**
|
|
302
303
|
* Apply the focusId-SCOPED metadata fields (see the classification block
|
|
303
|
-
* below): `narrations` (latest team-lead text)
|
|
304
|
+
* below): `narrations` (latest team-lead text), `teamPhases` (each active
|
|
304
305
|
* team's lifecycle phase -- executing / idle_complete / directive_pending /
|
|
305
306
|
* cooldown -- so the dashboard's liveness badge can tell a parked team from a
|
|
306
|
-
* wedged one)
|
|
307
|
-
*
|
|
308
|
-
*
|
|
309
|
-
*
|
|
307
|
+
* wedged one), and `teamClocks` (the per-team last-activity clock the daemon
|
|
308
|
+
* itself acts on, so every liveness surface classifies from the one clock the
|
|
309
|
+
* daemon trusts rather than the separately-flushed activity_summary). All three
|
|
310
|
+
* are pull-model: recomputed from live in-memory state each beat, so a change
|
|
311
|
+
* surfaces within one interval and a torn-down focus drops out on its own. Each
|
|
312
|
+
* key is set only when non-empty, so an idle daemon publishes none.
|
|
310
313
|
*/
|
|
311
314
|
function applyFocusScopedMetadata(metadata) {
|
|
312
315
|
if (narrations.size > 0) {
|
|
@@ -316,6 +319,17 @@ function applyFocusScopedMetadata(metadata) {
|
|
|
316
319
|
if (Object.keys(teamPhases).length > 0) {
|
|
317
320
|
metadata.teamPhases = teamPhases;
|
|
318
321
|
}
|
|
322
|
+
const teamClocks = buildTeamClockMap();
|
|
323
|
+
if (Object.keys(teamClocks).length > 0) {
|
|
324
|
+
metadata.teamClocks = teamClocks;
|
|
325
|
+
}
|
|
326
|
+
// Compare the in-memory activity clock (teamClocks, the clock the daemon acts
|
|
327
|
+
// on) against the last SUCCESSFULLY-published clock per focus; a focus whose
|
|
328
|
+
// in-memory clock has led the published one past the threshold surfaces an
|
|
329
|
+
// activity.clock_divergence health fact (the write chain stalled). Emits into
|
|
330
|
+
// healthEvents -- already published as metadata.healthEvents below -- so no new
|
|
331
|
+
// metadata key is added here. Edge-triggered + quiet within threshold.
|
|
332
|
+
checkClockDivergence(teamClocks);
|
|
319
333
|
}
|
|
320
334
|
/**
|
|
321
335
|
* Publish branch status per product ({ [productId]: BranchStatusPayload }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../src/shell/heartbeat.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../src/shell/heartbeat.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,kEAAkE;AAClE,iEAAiE;AACjE,qDAAqD;AACrD,2EAA2E;AAC3E,2DAA2D;AAC3D,gEAAgE;AAChE,iEAAiE;AACjE,6DAA6D;AAC7D,uEAAuE;AACvE,0DAA0D;AAC1D,gBAAgB;AAEhB;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAGxD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,8BAA8B,GAG/B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrI,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAE1E,OAAO,EAAE,mBAAmB,EAAsD,MAAM,oBAAoB,CAAC;AAC7G,OAAO,EAAE,sBAAsB,EAA4B,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;AAGjD,MAAM,qBAAqB,GAAG,MAAM,CAAC,CAAC,aAAa;AACnD,MAAM,uBAAuB,GAAG,OAAO,CAAC,CAAC,aAAa;AACtD,MAAM,yBAAyB,GAAG,MAAM,CAAC,CAAC,aAAa;AAEvD,gFAAgF;AAChF,6EAA6E;AAC7E,4DAA4D;AAC5D,+EAA+E;AAC/E,kFAAkF;AAClF,+EAA+E;AAC/E,0EAA0E;AAC1E,2EAA2E;AAC3E,MAAM,0BAA0B,GAAG,OAAO,CAAC,CAAC,aAAa;AAEzD,IAAI,MAAM,GAAwB,IAAI,CAAC;AACvC,IAAI,iBAAiB,GAA0C,IAAI,CAAC;AACpE,IAAI,mBAAmB,GAAG,CAAC,CAAC;AAC5B,6EAA6E;AAC7E,+EAA+E;AAC/E,oDAAoD;AACpD,IAAI,2BAA2B,GAAkB,IAAI,CAAC;AACtD,+EAA+E;AAC/E,4EAA4E;AAC5E,+EAA+E;AAC/E,IAAI,YAAY,GAAG,KAAK,CAAC;AACzB,gFAAgF;AAChF,6EAA6E;AAC7E,gFAAgF;AAChF,wEAAwE;AACxE,qCAAqC;AACrC,IAAI,YAAY,GAAyB,IAAI,CAAC;AAC9C,+EAA+E;AAC/E,kFAAkF;AAClF,iFAAiF;AACjF,mEAAmE;AACnE,wEAAwE;AACxE,0CAA0C;AAC1C,IAAI,0BAA0B,GAA+B,EAAE,CAAC;AAChE,IAAI,aAAa,GAAG,SAAS,CAAC;AAC9B,IAAI,eAAe,GAAG,SAAS,CAAC;AAChC,IAAI,sBAAsB,GAAkB,IAAI,CAAC;AACjD,MAAM,eAAe,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAEjD,wEAAwE;AACxE,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAA8D,CAAC;AAChG,MAAM,wBAAwB,GAAG,OAAO,CAAC,CAAC,YAAY;AAEtD,qEAAqE;AACrE,KAAK,UAAU,qBAAqB,CAAC,SAAiB;IACpD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAChD,IAAI,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,SAAS,IAAI,wBAAwB,EAAE,CAAC;QACjE,OAAO,MAAM,CAAC,MAAM,CAAC;IACvB,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,sBAAsB,CAAC,SAAS,CAAC,CAAC;IACtD,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IACpE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,wEAAwE;AACxE,EAAE;AACF,wEAAwE;AACxE,yEAAyE;AACzE,8EAA8E;AAC9E,kEAAkE;AAClE,EAAE;AACF,8EAA8E;AAC9E,6EAA6E;AAC7E,iFAAiF;AACjF,gFAAgF;AAChF,2EAA2E;AAC3E,gFAAgF;AAChF,+EAA+E;AAC/E,yEAAyE;AACzE,mBAAmB;AAEnB,IAAI,kBAAkB,GAAkB,IAAI,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,QAA6C;IAE7C,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,kBAAkB,GAAG,KAAK,IAAI,IAAI,CAAC;AACrC,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,qBAAqB;IACnC,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED,wEAAwE;AAExE,wDAAwD;AACxD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;AAE7C;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,IAAY;IACxD,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC;AAED,0EAA0E;AAC1E,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,CAAC;AAE7C,wEAAwE;AAExE,IAAI,kBAAkB,GAA6B,IAAI,CAAC;AAExD;;;GAGG;AACH,SAAS,oBAAoB;IAC3B,IAAI,CAAC;QACH,kBAAkB,GAAG,qBAAqB,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/D,kBAAkB,CAAC,MAAM,EAAE,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;IACxE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC,kBAAkB;QAAE,OAAO,CAAC,CAAC;IAClC,sCAAsC;IACtC,MAAM,KAAK,GAAG,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAChD,kBAAkB,CAAC,KAAK,EAAE,CAAC;IAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,mBAAmB;AAC3D,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,KAAa;IACtC,IAAI,KAAK,GAAG,yBAAyB,EAAE,CAAC;QACtC,GAAG,CAAC,KAAK,CACP,uCAAuC,KAAK,cAAc,yBAAyB,gBAAgB;YACnG,4CAA4C,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,CAChE,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,OAAO,GAAG,SAAS,CAAC;IACxB,IAAI,GAAG,GAAG,SAAS,CAAC;IACpB,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAExD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAyB,CAAC;QAC/E,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,SAAS,CAAC;IACrC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,GAAG,CAAC,KAAK,CAAC,8DAA8D,EAAG,CAAW,CAAC,OAAO,CAAC,CAAC;IAClG,CAAC;IAED,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC;QACnE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAA2B,CAAC;QAC7F,GAAG,GAAG,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC;IACzC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACjB,oEAAoE;QAChE,GAAG,CAAC,KAAK,CAAC,mEAAmE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAE,GAAa,EAAE,OAAO,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;IACpI,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;AACrC,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,uBAAuB,CAAC,YAA0B;IAC/D,IAAI,CAAC;QACH,2CAA2C;QAC3C,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,KAAK,MAAM,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;YAC5C,MAAM,UAAU,GAAG,MAAM,6BAA6B,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACnE,cAAc,IAAI,UAAU,CAAC,cAAc,CAAC;YAC5C,WAAW,IAAI,UAAU,CAAC,WAAW,CAAC;YACtC,YAAY,IAAI,UAAU,CAAC,SAAS,CAAC;QACvC,CAAC;QAED,kBAAkB,CAAC;YACjB,qBAAqB,EAAE,cAAc;YACrC,eAAe,EAAE,WAAW;YAC5B,SAAS,EAAE,YAAY;SACxB,CAAC,CAAC;QACH,GAAG,CAAC,IAAI,CACN,4CAA4C,YAAY,CAAC,QAAQ,CAAC,MAAM,cAAc;YACtF,GAAG,cAAc,aAAa;YAC9B,GAAG,WAAW,WAAW;YACzB,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CACnC,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CACN,qEAAqE;YACrE,GAAI,GAAa,CAAC,OAAO,EAAE,CAC5B,CAAC;QACF,mDAAmD;IACrD,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,YAA0B;IAC5D,MAAM,GAAG,YAAY,CAAC;IACtB,6EAA6E;IAC7E,YAAY,GAAG,KAAK,CAAC;IACrB,YAAY,GAAG,IAAI,CAAC;IACpB,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;IAC/B,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC;IAC7B,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC;IACjC,MAAM,uBAAuB,CAAC,YAAY,CAAC,CAAC;IAC5C,oBAAoB,EAAE,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;AACnC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAAe;IACvD,sBAAsB,GAAG,OAAO,CAAC;AACnC,CAAC;AAED,+EAA+E;AAC/E,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAElC;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,mBAAmB,EAAE,CAAC;AACxB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,KAAK,GAAG,oBAAoB,EAAE,CAAC;IACrC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACvD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,wBAAwB,CAAC,QAAiC;IACjE,IAAI,UAAU,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACxB,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;IACnC,CAAC;IACD,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;IACnC,CAAC;IACD,8EAA8E;IAC9E,6EAA6E;IAC7E,2EAA2E;IAC3E,8EAA8E;IAC9E,gFAAgF;IAChF,uEAAuE;IACvE,oBAAoB,CAAC,UAAU,CAAC,CAAC;AACnC,CAAC;AAsED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,MAAoB,EACpB,OAAiC;IAC/B,mBAAmB;IACnB,eAAe,EAAE,qBAAqB;CACvC;IAED,MAAM,qBAAqB,GAAwC,EAAE,CAAC;IACtE,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACxD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC5D,MAAM,UAAU,GAAwB;gBACtC,UAAU,EAAE,YAAY,CAAC,UAAU;gBACnC,cAAc,EAAE,YAAY,CAAC,cAAc;aAC5C,CAAC;YACF,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;QAC1F,CAAC;QAAC,MAAM,CAAC,CAAC,2CAA2C,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,qBAAqB,CAAC;AAC/B,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAa,EACb,aAA4B,EAC5B,UAAkB;IAElB,IAAI,aAAa,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACxC,MAAM,KAAK,GAAG,KAAK,GAAG,aAAa,CAAC;IACpC,OAAO,KAAK,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACnD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,6BAA6B;IAC3C,OAAO,0BAA0B,CAAC;AACpC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gCAAgC;IAC9C,OAAO,8BAA8B,CAAC,0BAA0B,CAAC,CAAC;AACpE,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,+BAA+B;IAC7C,0BAA0B,GAAG,EAAE,CAAC;AAClC,CAAC;AAcD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CACzB,OAAwB;IACtB,aAAa;IACb,aAAa,EAAE,gBAAgB;IAC/B,iBAAiB,EAAE,0BAA0B;CAC9C;IAED,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;QAC/C,IAAI,YAAY,KAAK,IAAI;YAAE,YAAY,GAAG,IAAI,CAAC;IACjD,CAAC,CAAC,CAAC;IACH,YAAY,GAAG,IAAI,CAAC;IACpB,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,gBAAgB,CAC7B,IAAqB;IAErB,IAAI,CAAC,MAAM;QAAE,OAAO;IAEpB,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;IAE7C,6CAA6C;IAC7C,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAC3C,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAElC,4DAA4D;IAC5D,MAAM,YAAY,GAAG,iBAAiB,EAAE,CAAC;IACzC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC;IACzD,IAAI,YAAY,GAAG,uBAAuB,EAAE,CAAC;QAC3C,GAAG,CAAC,IAAI,CACN,kCAAkC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK;YACtE,iBAAiB,eAAe,IAAI;YACpC,kBAAkB,YAAY,CAAC,WAAW,EAAE,EAAE,CAC/C,CAAC;IACJ,CAAC;IAED,mDAAmD;IACnD,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAC7C,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAClC,QAAQ,CAAC,SAAS,GAAG,eAAe,CAAC;IACvC,CAAC;IACD,IAAI,sBAAsB,EAAE,CAAC;QAC3B,QAAQ,CAAC,sBAAsB,GAAG,sBAAsB,CAAC;IAC3D,CAAC;IACD,QAAQ,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAEpD,mFAAmF;IACnF,8EAA8E;IAC9E,iFAAiF;IACjF,gEAAgE;IAChE,QAAQ,CAAC,oBAAoB,GAAG,sBAAsB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAEpG,0EAA0E;IAC1E,uEAAuE;IACvE,IAAI,CAAC;QACH,QAAQ,CAAC,iBAAiB,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC,CAAC,mEAAmE,CAAC,CAAC;IAE/E,MAAM,qBAAqB,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACnE,IAAI,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,QAAQ,CAAC,YAAY,GAAG,qBAAqB,CAAC;IAChD,CAAC;IAED,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAEnC,6DAA6D;IAC7D,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,EAAE,CAAC;IACxC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,QAAQ,CAAC,YAAY,GAAG,MAAM,CAAC;IACjC,CAAC;IAED,2EAA2E;IAC3E,2EAA2E;IAC3E,0EAA0E;IAC1E,wDAAwD;IACxD,MAAM,aAAa,GAAG,qBAAqB,EAAE,CAAC;IAC9C,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACzC,CAAC;IAED,kDAAkD;IAClD,MAAM,YAAY,GAAG,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC;QAC/D,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,YAAY,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC;YAC3C,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IAEtC,2EAA2E;IAC3E,+EAA+E;IAC/E,+EAA+E;IAC/E,gFAAgF;IAChF,iFAAiF;IACjF,IAAI,YAAY,EAAE,CAAC;QACjB,GAAG,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;QACxE,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,sEAAsE;QACtE,wEAAwE;QACxE,0EAA0E;QAC1E,2EAA2E;QAC3E,sEAAsE;QACtE,MAAM,SAAS,GAAG,qBAAqB,EAAE;eACpC,yBAAyB,CAAC,MAAM,CAAC,QAAQ,CAAC;eAC1C,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CACvC,OAAO,CAAC,GAAG,EACX,UAAU,EAAE,EACZ,SAAS,EACT,aAAa,EACb;YACE,cAAc,EAAE,eAAe;YAC/B,iBAAiB,EAAE,QAAQ,CAAC,qBAAqB;YACjD,aAAa,EAAE,CAAC,EAAE,uDAAuD;YACzE,gBAAgB,EAAE,eAAe;YACjC,eAAe,EAAE,mBAAmB;YACpC,eAAe,EAAE,QAAQ,CAAC,eAAe;YACzC,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,eAAe;YACf,cAAc,EAAE,iBAAiB,EAAE,CAAC,WAAW,EAAE;YACjD,cAAc;YACd,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1C,YAAY;YACZ,qEAAqE;YACrE,kEAAkE;YAClE,QAAQ,EAAE,gBAAgB,EAAE;YAC5B,oEAAoE;YACpE,yEAAyE;YACzE,2EAA2E;YAC3E,eAAe,EAAE,0BAA0B;SAC5C,EACD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CACxD,CAAC;QAEF,uEAAuE;QACvE,kEAAkE;QAClE,mEAAmE;QACnE,2EAA2E;QAC3E,2EAA2E;QAC3E,yEAAyE;QACzE,qEAAqE;QACrE,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YAC/D,0BAA0B,GAAG,0BAA0B,CAAC,0BAA0B,EAAE,WAAW,CAAC,CAAC;QACnG,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YAChB,GAAG,CAAC,KAAK,CACP,uDAAuD,EACvD,MAAM,CAAE,MAAgB,EAAE,OAAO,IAAI,MAAM,CAAC,CAC7C,CAAC;QACJ,CAAC;QAED,wEAAwE;QACxE,4EAA4E;QAC5E,sEAAsE;QACtE,2EAA2E;QAC3E,2EAA2E;QAC3E,uEAAuE;QACvE,yBAAyB;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,kBAAkB,CAAC,KAAK,EAAE,2BAA2B,EAAE,qBAAqB,CAAC,CAAC;QAC1F,IAAI,GAAG,EAAE,CAAC;YACR,GAAG,CAAC,IAAI,CACN,6DAA6D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI;gBAC7F,MAAM,CAAC,qBAAqB,GAAG,CAAC,CAAC,GAAG,IAAI,mCAAmC,CAC5E,CAAC;QACJ,CAAC;QACD,2BAA2B,GAAG,KAAK,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,KAAK,CAAC,mBAAmB,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IAED,wEAAwE;IACxE,YAAY,GAAG,KAAK,CAAC;IAErB,qCAAqC;IACrC,MAAM,WAAW,EAAE,CAAC;IAEpB,gDAAgD;IAChD,iBAAiB,GAAG,YAAY,CAAC,GAAG,EAAE;QACpC,OAAO,WAAW,EAAE,CAAC;IACvB,CAAC,EAAE,qBAAqB,EAAE,WAAW,CAAC,CAAC;IAEvC,GAAG,CAAC,IAAI,CAAC,4BAA4B,qBAAqB,GAAG,IAAI,IAAI,CAAC,CAAC;AACzE,CAAC;AAOD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAA0B,EAAE,cAAc,EAAE;IAE5C,YAAY,GAAG,IAAI,CAAC;IAEpB,IAAI,iBAAiB,EAAE,CAAC;QACtB,aAAa,CAAC,iBAAiB,CAAC,CAAC;QACjC,iBAAiB,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,iFAAiF;IACjF,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,YAAY,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,8DAA8D;QAChE,CAAC;IACH,CAAC;IAED,kFAAkF;IAClF,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACvC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,KAAK,CAAC,wCAAwC,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;IAChF,CAAC;AACH,CAAC"}
|