@ia-qa/self-healing 1.6.7 → 1.6.8
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 +94 -0
- package/TUTORIAL.md +112 -2
- package/assets/logoKawaiiGreenTiny.png +0 -0
- package/dist/cli/args.js +4 -2
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/diff.d.ts +6 -1
- package/dist/cli/diff.js +114 -4
- package/dist/cli/diff.js.map +1 -1
- package/dist/cli/emit.d.ts +71 -0
- package/dist/cli/emit.js +150 -0
- package/dist/cli/emit.js.map +1 -0
- package/dist/cli/fix.js +36 -0
- package/dist/cli/fix.js.map +1 -1
- package/dist/cli/history.d.ts +12 -0
- package/dist/cli/history.js +95 -0
- package/dist/cli/history.js.map +1 -0
- package/dist/cli/index.js +53 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init.js +32 -0
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/map.js +60 -0
- package/dist/cli/map.js.map +1 -1
- package/dist/cli/run.js +77 -7
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/ui.d.ts +16 -0
- package/dist/cli/ui.js +275 -0
- package/dist/cli/ui.js.map +1 -0
- package/dist/evidence.d.ts +130 -0
- package/dist/evidence.js +232 -0
- package/dist/evidence.js.map +1 -0
- package/dist/history.d.ts +145 -0
- package/dist/history.js +230 -0
- package/dist/history.js.map +1 -0
- package/dist/htmlReport.d.ts +47 -0
- package/dist/htmlReport.js +76 -1
- package/dist/htmlReport.js.map +1 -1
- package/dist/junit.d.ts +53 -0
- package/dist/junit.js +150 -0
- package/dist/junit.js.map +1 -0
- package/dist/mcp/server.js +41 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/ui/icon.d.ts +41 -0
- package/dist/ui/icon.js +115 -0
- package/dist/ui/icon.js.map +1 -0
- package/dist/ui/lock.d.ts +40 -0
- package/dist/ui/lock.js +138 -0
- package/dist/ui/lock.js.map +1 -0
- package/dist/ui/page.d.ts +1 -0
- package/dist/ui/page.js +584 -0
- package/dist/ui/page.js.map +1 -0
- package/dist/ui/registry.d.ts +62 -0
- package/dist/ui/registry.js +139 -0
- package/dist/ui/registry.js.map +1 -0
- package/dist/ui/server.d.ts +67 -0
- package/dist/ui/server.js +604 -0
- package/dist/ui/server.js.map +1 -0
- package/dist/ui/shortcut.d.ts +90 -0
- package/dist/ui/shortcut.js +176 -0
- package/dist/ui/shortcut.js.map +1 -0
- package/package.json +2 -1
- package/skills/ia-qa-heal/SKILL.md +27 -0
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Append-only run history — `.ia-qa/history.jsonl`.
|
|
3
|
+
*
|
|
4
|
+
* Every other verb in this package is *stateless*: `diff` compares two moments
|
|
5
|
+
* and forgets. That is the right shape for a gate, and it is also why the tool
|
|
6
|
+
* can never answer the question a QA lead actually asks — "is this getting
|
|
7
|
+
* better or worse?". A trend is not derivable from any single invocation, so it
|
|
8
|
+
* has to be recorded as it happens; unlike a verdict, it cannot be recomputed
|
|
9
|
+
* after the fact. Every run not written down is a data point that will never
|
|
10
|
+
* exist.
|
|
11
|
+
*
|
|
12
|
+
* Three rules keep this from becoming a dashboard that lies:
|
|
13
|
+
*
|
|
14
|
+
* 1. **It never influences a verdict.** Nothing reads history back into a diff.
|
|
15
|
+
* It is written after the exit code is decided, and a failure to write is
|
|
16
|
+
* swallowed — a full disk must not turn a PASS into a crash.
|
|
17
|
+
* 2. **Every entry carries what makes it comparable** — `source` (`map` vs a
|
|
18
|
+
* live `run` capture) and `coverage` (pages measured / pages mapped). Two
|
|
19
|
+
* entries that disagree on either are not two points on one curve, and
|
|
20
|
+
* `trendable()` below is what refuses to draw them as one.
|
|
21
|
+
* 3. **It is small and deterministic.** Verdicts and counters, no pixels, no
|
|
22
|
+
* element contents. Unlike `_shots/`, committing this file is defensible —
|
|
23
|
+
* it is a few kB of text that changes by one line per run.
|
|
24
|
+
*/
|
|
25
|
+
export declare const HISTORY_FILENAME = "history.jsonl";
|
|
26
|
+
/** Entries kept on disk. Older ones are dropped on write — a trend does not need a year. */
|
|
27
|
+
export declare const HISTORY_LIMIT = 500;
|
|
28
|
+
export interface HistoryCounts {
|
|
29
|
+
total: number;
|
|
30
|
+
ok: number;
|
|
31
|
+
renamed: number;
|
|
32
|
+
healable: number;
|
|
33
|
+
ambiguous: number;
|
|
34
|
+
lost: number;
|
|
35
|
+
rebound: number;
|
|
36
|
+
added: number;
|
|
37
|
+
}
|
|
38
|
+
export interface HistoryEntry {
|
|
39
|
+
/** ISO-8601, stamped at write time. */
|
|
40
|
+
ts: string;
|
|
41
|
+
verb: 'diff' | 'run' | 'fix' | 'audit' | 'check';
|
|
42
|
+
/** The verb's own verdict word — PASS/FIX/BLOCK for the drift verbs, OK/WARN/FAIL for `check`. */
|
|
43
|
+
verdict: string;
|
|
44
|
+
/** Element-level counters. Absent for verbs that do not diff (`audit`, `check`, bare `fix`). */
|
|
45
|
+
counts?: HistoryCounts;
|
|
46
|
+
/**
|
|
47
|
+
* How the *current* side was captured. `mixed` means the pages did not agree —
|
|
48
|
+
* the same source mismatch `run` warns about, recorded rather than inferred.
|
|
49
|
+
*/
|
|
50
|
+
source?: 'map' | 'run' | 'mixed';
|
|
51
|
+
/** Pages that produced a verdict / pages mapped. A green run over 1 of 40 pages is not a green app. */
|
|
52
|
+
coverage?: {
|
|
53
|
+
measured: number;
|
|
54
|
+
total: number;
|
|
55
|
+
};
|
|
56
|
+
nameDrift?: {
|
|
57
|
+
total: number;
|
|
58
|
+
manual: number;
|
|
59
|
+
};
|
|
60
|
+
/** Only pages that actually drifted, so a 200-page app still writes a short line. */
|
|
61
|
+
pages?: Array<{
|
|
62
|
+
name: string;
|
|
63
|
+
drift: number;
|
|
64
|
+
}>;
|
|
65
|
+
baseUrl?: string;
|
|
66
|
+
commit?: string;
|
|
67
|
+
branch?: string;
|
|
68
|
+
/** What `fix`/`run` wrote to the test files. */
|
|
69
|
+
applied?: {
|
|
70
|
+
replacements: number;
|
|
71
|
+
files: number;
|
|
72
|
+
};
|
|
73
|
+
/** The post-fix re-run of the user's suite, when `run` performed one. */
|
|
74
|
+
verify?: 'PASS' | 'FAIL' | 'SKIPPED';
|
|
75
|
+
/** Findings, for the verbs that produce findings rather than diff rows. */
|
|
76
|
+
findings?: number;
|
|
77
|
+
}
|
|
78
|
+
export declare function historyPath(cwd?: string): string;
|
|
79
|
+
/**
|
|
80
|
+
* Append one entry. Best-effort by design: history is an observation of the run,
|
|
81
|
+
* never part of it, so every failure mode here (read-only checkout, missing
|
|
82
|
+
* directory, full disk, concurrent writer) costs the data point and nothing else.
|
|
83
|
+
*/
|
|
84
|
+
export declare function appendHistory(entry: Omit<HistoryEntry, 'ts'> & {
|
|
85
|
+
ts?: string;
|
|
86
|
+
}): void;
|
|
87
|
+
/**
|
|
88
|
+
* Read the history, oldest first. A malformed line is skipped rather than fatal:
|
|
89
|
+
* this file is appended to by every run and may be truncated mid-write by a
|
|
90
|
+
* killed process, and one bad line must not cost the other 499.
|
|
91
|
+
*/
|
|
92
|
+
export declare function readHistory(limit?: number, cwd?: string): HistoryEntry[];
|
|
93
|
+
/**
|
|
94
|
+
* Which entries may be drawn as one curve.
|
|
95
|
+
*
|
|
96
|
+
* This is the whole reason the store carries `source`. A `map` baseline and a
|
|
97
|
+
* live `run` capture read the same page differently — the CLI already warns
|
|
98
|
+
* about diffing one against the other — so plotting both on one axis manufactures
|
|
99
|
+
* a trend out of a capture artifact. The same applies to coverage: a run that
|
|
100
|
+
* measured 1 of 40 pages and one that measured 40 are not comparable magnitudes,
|
|
101
|
+
* so entries below `minCoverage` of the largest observed coverage are held out.
|
|
102
|
+
*
|
|
103
|
+
* The excluded entries are returned, not discarded, so the caller can *say* what
|
|
104
|
+
* it left out. A chart that silently drops half its data is the dashboard-that-
|
|
105
|
+
* lies failure mode this function exists to prevent.
|
|
106
|
+
*/
|
|
107
|
+
export interface Trend {
|
|
108
|
+
series: HistoryEntry[];
|
|
109
|
+
excluded: HistoryEntry[];
|
|
110
|
+
/** Present when anything was held out — render it next to the chart, never swallow it. */
|
|
111
|
+
reason?: string;
|
|
112
|
+
/** The capture source the series is drawn from. */
|
|
113
|
+
source?: 'map' | 'run' | 'mixed';
|
|
114
|
+
}
|
|
115
|
+
export declare function trendable(entries: HistoryEntry[], minCoverage?: number): Trend;
|
|
116
|
+
export interface HistorySummary {
|
|
117
|
+
runs: number;
|
|
118
|
+
first?: string;
|
|
119
|
+
last?: string;
|
|
120
|
+
lastVerdict?: string;
|
|
121
|
+
/** Share of comparable runs that were not PASS. */
|
|
122
|
+
driftRate: number;
|
|
123
|
+
/** Mean measured/total across the comparable series, or 1 when nothing recorded coverage. */
|
|
124
|
+
coverage: number;
|
|
125
|
+
/** Pages ranked by how many runs they drifted in — where the churn actually lives. */
|
|
126
|
+
hotspots: Array<{
|
|
127
|
+
name: string;
|
|
128
|
+
runs: number;
|
|
129
|
+
drift: number;
|
|
130
|
+
}>;
|
|
131
|
+
/** Rewrites the tool applied across the whole history. */
|
|
132
|
+
healed: number;
|
|
133
|
+
trend: Trend;
|
|
134
|
+
}
|
|
135
|
+
export declare function summarize(entries: HistoryEntry[]): HistorySummary;
|
|
136
|
+
/**
|
|
137
|
+
* Best-effort git stamp. A trend of verdicts is far more useful when a spike can
|
|
138
|
+
* be tied to a commit, and every alternative (asking the user to pass it, reading
|
|
139
|
+
* CI env vars per provider) is worse than shelling out once. Never throws, never
|
|
140
|
+
* blocks: no git, no repo, detached HEAD — the entry is written without it.
|
|
141
|
+
*/
|
|
142
|
+
export declare function gitStamp(): {
|
|
143
|
+
commit?: string;
|
|
144
|
+
branch?: string;
|
|
145
|
+
};
|
package/dist/history.js
ADDED
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.HISTORY_LIMIT = exports.HISTORY_FILENAME = void 0;
|
|
37
|
+
exports.historyPath = historyPath;
|
|
38
|
+
exports.appendHistory = appendHistory;
|
|
39
|
+
exports.readHistory = readHistory;
|
|
40
|
+
exports.trendable = trendable;
|
|
41
|
+
exports.summarize = summarize;
|
|
42
|
+
exports.gitStamp = gitStamp;
|
|
43
|
+
const fs = __importStar(require("fs"));
|
|
44
|
+
const path = __importStar(require("path"));
|
|
45
|
+
const config_1 = require("./config");
|
|
46
|
+
/**
|
|
47
|
+
* Append-only run history — `.ia-qa/history.jsonl`.
|
|
48
|
+
*
|
|
49
|
+
* Every other verb in this package is *stateless*: `diff` compares two moments
|
|
50
|
+
* and forgets. That is the right shape for a gate, and it is also why the tool
|
|
51
|
+
* can never answer the question a QA lead actually asks — "is this getting
|
|
52
|
+
* better or worse?". A trend is not derivable from any single invocation, so it
|
|
53
|
+
* has to be recorded as it happens; unlike a verdict, it cannot be recomputed
|
|
54
|
+
* after the fact. Every run not written down is a data point that will never
|
|
55
|
+
* exist.
|
|
56
|
+
*
|
|
57
|
+
* Three rules keep this from becoming a dashboard that lies:
|
|
58
|
+
*
|
|
59
|
+
* 1. **It never influences a verdict.** Nothing reads history back into a diff.
|
|
60
|
+
* It is written after the exit code is decided, and a failure to write is
|
|
61
|
+
* swallowed — a full disk must not turn a PASS into a crash.
|
|
62
|
+
* 2. **Every entry carries what makes it comparable** — `source` (`map` vs a
|
|
63
|
+
* live `run` capture) and `coverage` (pages measured / pages mapped). Two
|
|
64
|
+
* entries that disagree on either are not two points on one curve, and
|
|
65
|
+
* `trendable()` below is what refuses to draw them as one.
|
|
66
|
+
* 3. **It is small and deterministic.** Verdicts and counters, no pixels, no
|
|
67
|
+
* element contents. Unlike `_shots/`, committing this file is defensible —
|
|
68
|
+
* it is a few kB of text that changes by one line per run.
|
|
69
|
+
*/
|
|
70
|
+
exports.HISTORY_FILENAME = 'history.jsonl';
|
|
71
|
+
/** Entries kept on disk. Older ones are dropped on write — a trend does not need a year. */
|
|
72
|
+
exports.HISTORY_LIMIT = 500;
|
|
73
|
+
function historyPath(cwd = (0, config_1.baseDir)()) {
|
|
74
|
+
return path.join(cwd, config_1.CONFIG_DIR, exports.HISTORY_FILENAME);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Append one entry. Best-effort by design: history is an observation of the run,
|
|
78
|
+
* never part of it, so every failure mode here (read-only checkout, missing
|
|
79
|
+
* directory, full disk, concurrent writer) costs the data point and nothing else.
|
|
80
|
+
*/
|
|
81
|
+
function appendHistory(entry) {
|
|
82
|
+
const file = historyPath();
|
|
83
|
+
const full = { ts: entry.ts ?? new Date().toISOString(), ...entry };
|
|
84
|
+
try {
|
|
85
|
+
fs.mkdirSync(path.dirname(file), { recursive: true });
|
|
86
|
+
fs.appendFileSync(file, JSON.stringify(full) + '\n', 'utf8');
|
|
87
|
+
truncate(file);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
/* history is a courtesy, never a gate */
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/** Keep the file bounded without a second config knob nobody would ever tune. */
|
|
94
|
+
function truncate(file) {
|
|
95
|
+
try {
|
|
96
|
+
const lines = fs.readFileSync(file, 'utf8').split('\n').filter(Boolean);
|
|
97
|
+
if (lines.length <= exports.HISTORY_LIMIT + 100)
|
|
98
|
+
return;
|
|
99
|
+
fs.writeFileSync(file, lines.slice(-exports.HISTORY_LIMIT).join('\n') + '\n', 'utf8');
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
/* as above */
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Read the history, oldest first. A malformed line is skipped rather than fatal:
|
|
107
|
+
* this file is appended to by every run and may be truncated mid-write by a
|
|
108
|
+
* killed process, and one bad line must not cost the other 499.
|
|
109
|
+
*/
|
|
110
|
+
function readHistory(limit = exports.HISTORY_LIMIT, cwd) {
|
|
111
|
+
const file = cwd ? path.join(cwd, config_1.CONFIG_DIR, exports.HISTORY_FILENAME) : historyPath();
|
|
112
|
+
let raw;
|
|
113
|
+
try {
|
|
114
|
+
raw = fs.readFileSync(file, 'utf8');
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
return [];
|
|
118
|
+
}
|
|
119
|
+
const out = [];
|
|
120
|
+
for (const line of raw.split('\n')) {
|
|
121
|
+
if (!line.trim())
|
|
122
|
+
continue;
|
|
123
|
+
try {
|
|
124
|
+
const parsed = JSON.parse(line);
|
|
125
|
+
if (parsed && typeof parsed.ts === 'string' && typeof parsed.verb === 'string')
|
|
126
|
+
out.push(parsed);
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
/* skip */
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return out.slice(-limit);
|
|
133
|
+
}
|
|
134
|
+
function trendable(entries, minCoverage = 0.5) {
|
|
135
|
+
const drift = entries.filter((e) => e.counts && (e.verb === 'diff' || e.verb === 'run'));
|
|
136
|
+
if (drift.length === 0)
|
|
137
|
+
return { series: [], excluded: [] };
|
|
138
|
+
// Dominant capture source wins the axis; the minority is held out rather than
|
|
139
|
+
// averaged in. Ties go to the most recent, which is what the user is looking at.
|
|
140
|
+
const bySource = new Map();
|
|
141
|
+
for (const e of drift)
|
|
142
|
+
bySource.set(e.source ?? 'map', (bySource.get(e.source ?? 'map') ?? 0) + 1);
|
|
143
|
+
let source = 'map';
|
|
144
|
+
let best = -1;
|
|
145
|
+
for (const [s, n] of bySource) {
|
|
146
|
+
if (n > best) {
|
|
147
|
+
best = n;
|
|
148
|
+
source = s;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
const sourceKept = drift.filter((e) => (e.source ?? 'map') === source);
|
|
152
|
+
const sourceDropped = drift.filter((e) => (e.source ?? 'map') !== source);
|
|
153
|
+
const maxCov = Math.max(...sourceKept.map((e) => (e.coverage ? e.coverage.measured / Math.max(1, e.coverage.total) : 1)));
|
|
154
|
+
const series = sourceKept.filter((e) => {
|
|
155
|
+
if (!e.coverage)
|
|
156
|
+
return true;
|
|
157
|
+
return e.coverage.measured / Math.max(1, e.coverage.total) >= maxCov * minCoverage;
|
|
158
|
+
});
|
|
159
|
+
const covDropped = sourceKept.filter((e) => !series.includes(e));
|
|
160
|
+
const excluded = [...sourceDropped, ...covDropped];
|
|
161
|
+
const parts = [];
|
|
162
|
+
if (sourceDropped.length > 0) {
|
|
163
|
+
parts.push(`${sourceDropped.length} run${sourceDropped.length === 1 ? '' : 's'} captured a different way ` +
|
|
164
|
+
`(a \`map\` capture and a live suite capture read a page differently)`);
|
|
165
|
+
}
|
|
166
|
+
if (covDropped.length > 0) {
|
|
167
|
+
parts.push(`${covDropped.length} run${covDropped.length === 1 ? '' : 's'} covered too few pages to compare`);
|
|
168
|
+
}
|
|
169
|
+
return {
|
|
170
|
+
series,
|
|
171
|
+
excluded,
|
|
172
|
+
source,
|
|
173
|
+
reason: parts.length > 0 ? `Left out of the trend: ${parts.join('; ')}.` : undefined,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
function summarize(entries) {
|
|
177
|
+
const trend = trendable(entries);
|
|
178
|
+
const s = trend.series;
|
|
179
|
+
const notPass = s.filter((e) => e.verdict !== 'PASS').length;
|
|
180
|
+
const withCov = s.filter((e) => e.coverage);
|
|
181
|
+
const coverage = withCov.length === 0
|
|
182
|
+
? 1
|
|
183
|
+
: withCov.reduce((n, e) => n + e.coverage.measured / Math.max(1, e.coverage.total), 0) / withCov.length;
|
|
184
|
+
const pageStats = new Map();
|
|
185
|
+
for (const e of s) {
|
|
186
|
+
for (const p of e.pages ?? []) {
|
|
187
|
+
const cur = pageStats.get(p.name) ?? { runs: 0, drift: 0 };
|
|
188
|
+
cur.runs += 1;
|
|
189
|
+
cur.drift += p.drift;
|
|
190
|
+
pageStats.set(p.name, cur);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
const hotspots = [...pageStats.entries()]
|
|
194
|
+
.map(([name, v]) => ({ name, ...v }))
|
|
195
|
+
.sort((a, b) => b.drift - a.drift || b.runs - a.runs)
|
|
196
|
+
.slice(0, 5);
|
|
197
|
+
return {
|
|
198
|
+
runs: entries.length,
|
|
199
|
+
first: entries[0]?.ts,
|
|
200
|
+
last: entries[entries.length - 1]?.ts,
|
|
201
|
+
lastVerdict: entries[entries.length - 1]?.verdict,
|
|
202
|
+
driftRate: s.length === 0 ? 0 : notPass / s.length,
|
|
203
|
+
coverage,
|
|
204
|
+
hotspots,
|
|
205
|
+
healed: entries.reduce((n, e) => n + (e.applied?.replacements ?? 0), 0),
|
|
206
|
+
trend,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Best-effort git stamp. A trend of verdicts is far more useful when a spike can
|
|
211
|
+
* be tied to a commit, and every alternative (asking the user to pass it, reading
|
|
212
|
+
* CI env vars per provider) is worse than shelling out once. Never throws, never
|
|
213
|
+
* blocks: no git, no repo, detached HEAD — the entry is written without it.
|
|
214
|
+
*/
|
|
215
|
+
function gitStamp() {
|
|
216
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
217
|
+
const { execFileSync } = require('child_process');
|
|
218
|
+
const run = (args) => {
|
|
219
|
+
try {
|
|
220
|
+
const out = execFileSync('git', args, { encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'], timeout: 2000 });
|
|
221
|
+
const v = out.trim();
|
|
222
|
+
return v === '' ? undefined : v;
|
|
223
|
+
}
|
|
224
|
+
catch {
|
|
225
|
+
return undefined;
|
|
226
|
+
}
|
|
227
|
+
};
|
|
228
|
+
return { commit: run(['rev-parse', '--short', 'HEAD']), branch: run(['rev-parse', '--abbrev-ref', 'HEAD']) };
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":"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"}
|
package/dist/htmlReport.d.ts
CHANGED
|
@@ -26,6 +26,47 @@ export interface FixOutcome {
|
|
|
26
26
|
edits: AppliedEdit[];
|
|
27
27
|
verify?: VerifyResult;
|
|
28
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Highlighted crops for the rows a human must decide, precomputed by the caller.
|
|
31
|
+
*
|
|
32
|
+
* Passed in as *data* rather than looked up here for the same reason everything
|
|
33
|
+
* else is: this module renders, it does not touch the filesystem. `css` carries
|
|
34
|
+
* one `background-image` rule per page, so a page's JPEG is embedded once no
|
|
35
|
+
* matter how many thumbnails point into it.
|
|
36
|
+
*/
|
|
37
|
+
export interface ReportEvidence {
|
|
38
|
+
/** Page-image CSS rules, emitted once into the report's stylesheet. */
|
|
39
|
+
css: string;
|
|
40
|
+
/** page name → (row selector → the crops to show for it). */
|
|
41
|
+
rows: Record<string, Record<string, RowEvidenceView>>;
|
|
42
|
+
}
|
|
43
|
+
export interface CropView {
|
|
44
|
+
cls: string;
|
|
45
|
+
width: number;
|
|
46
|
+
height: number;
|
|
47
|
+
scale: number;
|
|
48
|
+
offsetX: number;
|
|
49
|
+
offsetY: number;
|
|
50
|
+
hi: {
|
|
51
|
+
left: number;
|
|
52
|
+
top: number;
|
|
53
|
+
width: number;
|
|
54
|
+
height: number;
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
export interface RowEvidenceView {
|
|
58
|
+
nowAt?: {
|
|
59
|
+
selector: string;
|
|
60
|
+
label: string;
|
|
61
|
+
crop: CropView;
|
|
62
|
+
};
|
|
63
|
+
candidates: Array<{
|
|
64
|
+
selector: string;
|
|
65
|
+
label: string;
|
|
66
|
+
crop: CropView;
|
|
67
|
+
}>;
|
|
68
|
+
note?: string;
|
|
69
|
+
}
|
|
29
70
|
export interface DriftReportMeta {
|
|
30
71
|
baselineName: string;
|
|
31
72
|
currentName: string;
|
|
@@ -53,6 +94,12 @@ export interface DriftReportMeta {
|
|
|
53
94
|
currentCapturedAt?: string;
|
|
54
95
|
/** Present only for a post-fix report (`run`): the rewrites applied and whether the re-run passed. */
|
|
55
96
|
outcome?: FixOutcome;
|
|
97
|
+
/**
|
|
98
|
+
* Highlighted crops for `ambiguous` / `rebound` rows, when the mapping was
|
|
99
|
+
* captured with `map --screenshots`. Illustration is what the page thumbnails
|
|
100
|
+
* above are; this is the part a decision is actually taken on.
|
|
101
|
+
*/
|
|
102
|
+
evidence?: ReportEvidence;
|
|
56
103
|
}
|
|
57
104
|
export declare function renderDriftReportHtml(agg: DirReport, reports: Array<{
|
|
58
105
|
name: string;
|
package/dist/htmlReport.js
CHANGED
|
@@ -73,6 +73,27 @@ function usageNote(usage, selector) {
|
|
|
73
73
|
const files = new Set(sites.map((s) => s.file)).size;
|
|
74
74
|
return `<span class="use use-hit">used ${sites.length}× · ${files} file${files === 1 ? '' : 's'}</span>`;
|
|
75
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* The call sites that will break, as `file:line`.
|
|
78
|
+
*
|
|
79
|
+
* The badge above says *how many*; a count is one more thing to eyeball, and the
|
|
80
|
+
* inventory has held the exact lines all along — `usage.json` records them and
|
|
81
|
+
* the terminal already prints them for name drift. Not printing them here made
|
|
82
|
+
* the report the one surface that knew where the breakage was and would not say.
|
|
83
|
+
* Capped, because a selector used sixty times is a list nobody reads.
|
|
84
|
+
*/
|
|
85
|
+
const MAX_SITES_SHOWN = 6;
|
|
86
|
+
function usageSites(usage, selector) {
|
|
87
|
+
if (!usage)
|
|
88
|
+
return '';
|
|
89
|
+
const sites = usage.selectors[selector];
|
|
90
|
+
if (!sites || sites.length === 0)
|
|
91
|
+
return '';
|
|
92
|
+
const shown = sites.slice(0, MAX_SITES_SHOWN);
|
|
93
|
+
const more = sites.length - shown.length;
|
|
94
|
+
const list = shown.map((s) => `<code>${esc(s.file)}:${s.line}</code>`).join(' ');
|
|
95
|
+
return `<div class="sites">📇 ${list}${more > 0 ? ` <span>+${more} more</span>` : ''}</div>`;
|
|
96
|
+
}
|
|
76
97
|
const COUNT_FIELDS = [
|
|
77
98
|
{ key: 'ok', label: 'OK', tone: 'pass' },
|
|
78
99
|
{ key: 'renamed', label: 'Renamed', tone: 'info' },
|
|
@@ -82,6 +103,41 @@ const COUNT_FIELDS = [
|
|
|
82
103
|
{ key: 'rebound', label: 'Rebound', tone: 'fail' },
|
|
83
104
|
{ key: 'added', label: 'New', tone: 'info' },
|
|
84
105
|
];
|
|
106
|
+
function cropHtml(c) {
|
|
107
|
+
return (`<div class="crop" style="width:${c.width}px;height:${c.height}px">` +
|
|
108
|
+
`<div class="crop-inner ${esc(c.cls)}" style="width:${Math.round(c.width / c.scale)}px;height:${Math.round(c.height / c.scale)}px;` +
|
|
109
|
+
`transform:scale(${c.scale.toFixed(4)});background-position:-${c.offsetX}px -${c.offsetY}px">` +
|
|
110
|
+
`<div class="crop-hi" style="left:${c.hi.left}px;top:${c.hi.top}px;width:${c.hi.width}px;height:${c.hi.height}px"></div>` +
|
|
111
|
+
`</div></div>`);
|
|
112
|
+
}
|
|
113
|
+
function figure(item) {
|
|
114
|
+
return (`<figure class="evid-fig">${cropHtml(item.crop)}` +
|
|
115
|
+
`<figcaption class="evid-cap"><b>${esc(item.label)}</b><code>${esc(item.selector)}</code></figcaption></figure>`);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* The evidence block under a drifted row. Absent evidence renders nothing at
|
|
119
|
+
* all — no empty frame, no broken-image icon — so a report from a project that
|
|
120
|
+
* never ran `map --screenshots` is identical to one from before this existed.
|
|
121
|
+
*/
|
|
122
|
+
function evidenceHtml(ev) {
|
|
123
|
+
if (!ev)
|
|
124
|
+
return '';
|
|
125
|
+
if (ev.note)
|
|
126
|
+
return `<div class="evid"><div class="evid-note">${esc(ev.note)}</div></div>`;
|
|
127
|
+
const blocks = [];
|
|
128
|
+
if (ev.nowAt) {
|
|
129
|
+
blocks.push(`<div class="evid-title">⚠️ What that selector points at today</div>` +
|
|
130
|
+
`<div class="evid-row">${figure(ev.nowAt)}</div>`);
|
|
131
|
+
}
|
|
132
|
+
if (ev.candidates.length > 0) {
|
|
133
|
+
const n = ev.candidates.length;
|
|
134
|
+
blocks.push(`<div class="evid-title">Which one did the test mean? ${n} candidate${n === 1 ? '' : 's'} on the page now</div>` +
|
|
135
|
+
`<div class="evid-row">${ev.candidates.map(figure).join('')}</div>`);
|
|
136
|
+
}
|
|
137
|
+
if (blocks.length === 0)
|
|
138
|
+
return '';
|
|
139
|
+
return `<div class="evid">${blocks.join('')}</div>`;
|
|
140
|
+
}
|
|
85
141
|
function plural(n, one) {
|
|
86
142
|
return `${n} ${one}${n === 1 ? '' : 's'}`;
|
|
87
143
|
}
|
|
@@ -332,6 +388,22 @@ const REPORT_CSS = `
|
|
|
332
388
|
.use{margin-left:auto;font-size:11px;padding:1px 8px;border-radius:99px;white-space:nowrap}
|
|
333
389
|
.use-hit{background:#8b5cf618;color:#c4b5fd;border:1px solid #8b5cf633}
|
|
334
390
|
.use-none{background:#3f3f4633;color:var(--muted);border:1px solid var(--border)}
|
|
391
|
+
.evid{margin-top:10px;border-top:1px dashed var(--border);padding-top:10px}
|
|
392
|
+
.evid-title{font-size:12px;color:var(--orange2);font-weight:700;margin-bottom:8px}
|
|
393
|
+
.evid-row{display:flex;flex-wrap:wrap;gap:14px}
|
|
394
|
+
.evid-fig{margin:0;max-width:100%}
|
|
395
|
+
.crop{position:relative;overflow:hidden;border:1px solid var(--border);border-radius:8px;background:var(--bg)}
|
|
396
|
+
.crop-inner{position:absolute;top:0;left:0;transform-origin:0 0;background-repeat:no-repeat}
|
|
397
|
+
/* The 9999px shadow is the dimming veil: everything outside the target is
|
|
398
|
+
darkened by the same element that outlines it, so a repeated control can
|
|
399
|
+
never be shown without saying which one is meant. */
|
|
400
|
+
.crop-hi{position:absolute;outline:2px solid var(--orange2);box-shadow:0 0 0 9999px rgba(0,0,0,.55);border-radius:2px}
|
|
401
|
+
.evid-cap{margin-top:6px;font-size:11.5px;color:var(--muted);max-width:360px}
|
|
402
|
+
.evid-cap b{color:var(--text);font-weight:600}
|
|
403
|
+
.evid-cap code{display:block;margin-top:2px;font-size:10.5px;color:var(--orange2);word-break:break-all}
|
|
404
|
+
.evid-note{font-size:12px;color:var(--muted);font-style:italic}
|
|
405
|
+
.sites{margin-top:6px;font-size:11.5px;color:var(--muted)}
|
|
406
|
+
.sites code{background:var(--bg);border:1px solid var(--border);border-radius:5px;padding:0 5px;color:#c4b5fd}
|
|
335
407
|
.hint{color:var(--muted);font-size:12.5px;margin-top:10px}
|
|
336
408
|
.note p{color:var(--muted);font-size:13px}
|
|
337
409
|
.disclaimer{background:#f59e0b14;border:1px solid #f59e0b40;border-radius:10px;padding:11px 14px;color:#fcd34d;font-size:12.5px;line-height:1.55}
|
|
@@ -474,11 +546,14 @@ function renderDriftReportHtml(agg, reports, meta) {
|
|
|
474
546
|
? `<div class="rebound">⚠️ that selector now resolves to ${esc(r.role)} "${esc(r.reboundTo)}" — green today, clicking the wrong element.</div>`
|
|
475
547
|
: '';
|
|
476
548
|
const plain = statusPlain(r.status);
|
|
549
|
+
const ev = evidenceHtml(meta.evidence?.rows[name]?.[r.selector]);
|
|
477
550
|
return `<div class="drift-row">
|
|
478
551
|
<div class="drift-head"><span class="badge badge-${m.tone}">${m.icon} ${esc(m.label)}</span><span class="drift-label">${esc(rowLabel(r))}</span>${usageNote(meta.usage, r.selector)}</div>
|
|
479
552
|
<div class="drift-body">${rowTransition(r)}</div>
|
|
553
|
+
${usageSites(meta.usage, r.selector)}
|
|
480
554
|
${plain ? `<div class="plain">${plain}</div>` : ''}
|
|
481
555
|
${rebound}
|
|
556
|
+
${ev}
|
|
482
557
|
</div>`;
|
|
483
558
|
})
|
|
484
559
|
.join('');
|
|
@@ -500,7 +575,7 @@ function renderDriftReportHtml(agg, reports, meta) {
|
|
|
500
575
|
<meta charset="UTF-8">
|
|
501
576
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
502
577
|
<title>IA-QA — Selector drift report</title>
|
|
503
|
-
<style>${REPORT_CSS}</style>
|
|
578
|
+
<style>${REPORT_CSS}${meta.evidence?.css ?? ''}</style>
|
|
504
579
|
</head>
|
|
505
580
|
<body>
|
|
506
581
|
${reportHeader('Selector drift report', headerMeta(meta, generated))}
|
package/dist/htmlReport.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"htmlReport.js","sourceRoot":"","sources":["../src/htmlReport.ts"],"names":[],"mappings":";;AAsgBA,sDA2GC;AAmCD,0DA0EC;AA3tBD;;;;;;;;;;GAUG;AAEH,MAAM,KAAK,GAAG;IACZ,IAAI,EAAE,uBAAuB;IAC7B,MAAM,EAAE,8BAA8B;IACtC,KAAK,EAAE,iCAAiC;IACxC,OAAO,EAAE,mDAAmD;CAC7D,CAAC;AAEF,SAAS,GAAG,CAAC,CAAU;IACrB,OAAO,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9B,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC;AAID,SAAS,WAAW,CAAC,CAAS;IAC5B,OAAO,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AAC/D,CAAC;AAED,SAAS,UAAU,CAAC,MAAyB;IAC3C,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,UAAU,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;QACxE,KAAK,SAAS,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QACtE,KAAK,WAAW,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;QACzE,KAAK,MAAM,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAC/D,KAAK,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAC/D,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC3D,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,CAAU;IAC1B,IAAI,CAAC,CAAC,IAAI;QAAE,OAAO,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC;IAC3C,IAAI,CAAC,CAAC,IAAI;QAAE,OAAO,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1C,OAAO,GAAG,CAAC,CAAC,IAAI,cAAc,CAAC;AACjC,CAAC;AAED,wEAAwE;AACxE,SAAS,aAAa,CAAC,CAAU;IAC/B,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;QAClG,OAAO,qBAAqB,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,wDAAwD,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,8BAA8B,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC;IAC3K,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,2BAA2B,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,0DAA0D,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,0DAA0D,CAAC;IAClL,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QAC7B,OAAO,qBAAqB,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,wDAAwD,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,gDAAgD,CAAC;IAC3K,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QACxB,OAAO,qBAAqB,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,sEAAsE,CAAC;IACpH,CAAC;IACD,OAAO,qBAAqB,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,SAAS,SAAS,CAAC,KAA+B,EAAE,QAAgB;IAClE,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,qDAAqD,CAAC;IAC/F,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACrD,OAAO,kCAAkC,KAAK,CAAC,MAAM,OAAO,KAAK,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AAC3G,CAAC;AAED,MAAM,YAAY,GAAwE;IACxF,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;IACxC,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE;IAClD,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE;IACpD,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE;IACtD,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;IAC5C,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE;IAClD,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE;CAC7C,CAAC;AAuDF,SAAS,MAAM,CAAC,CAAS,EAAE,GAAW;IACpC,OAAO,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAC5C,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAC,GAAc;IAClC,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IAC3E,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,WAAW,CAAC;AACnF,CAAC;AAED,qFAAqF;AACrF,SAAS,WAAW,CAAC,GAAc;IACjC,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;AACrF,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAC,GAAc;IAClC,IAAI,GAAG,CAAC,OAAO,KAAK,MAAM;QAAE,OAAO,wDAAwD,CAAC;IAC5F,IAAI,GAAG,CAAC,OAAO,KAAK,KAAK;QAAE,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,kBAAkB,CAAC,+BAA+B,CAAC;IACjH,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,4CAA4C,CAAC;AAC1F,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,GAAc;IACrC,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,IAAY,CAAC;IACjB,IAAI,GAAG,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;QAC3B,IAAI,GAAG,oJAAoJ,CAAC;IAC9J,CAAC;SAAM,IAAI,GAAG,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QACjC,IAAI,GAAG,iDAAiD,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,8FAA8F,CAAC;IACpL,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,mDAAmD,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;QACxI,IAAI,GAAG,iIAAiI,IAAI,EAAE,CAAC;IACjJ,CAAC;IACD,OAAO,mEAAmE,IAAI,QAAQ,CAAC;AACzF,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAC,CAAe;IACnC,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,wEAAwE,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,6BAA6B,CAAC,wDAAwD,CAAC;IACxL,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IACpD,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC;IACxE,MAAM,GAAG,GACP,CAAC,CAAC,OAAO,KAAK,MAAM;QAClB,CAAC,CAAC,gFAAgF;QAClF,CAAC,CAAC,iEAAiE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,gFAAgF,CAAC;IACvK,OAAO,6BAA6B,IAAI,kEAAkE,IAAI,KAAK,KAAK,gBAAgB,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,wCAAwC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC;AACjQ,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,OAAmB;IACzC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAElE,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK;SAC5B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY;aACxB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,MAAM,KAAK,GACT,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;gBAC3B,CAAC,CAAC,2BAA2B,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU;gBACjG,CAAC,CAAC,EAAE,CAAC;YACT,OAAO,6CAA6C,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,8BAA8B,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,wDAAwD,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,KAAK,QAAQ,CAAC;QACpM,CAAC,CAAC;aACD,IAAI,CAAC,EAAE,CAAC,CAAC;QACZ,OAAO,0HAA0H,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,IAAI,QAAQ,CAAC;IAC3K,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,MAAM,OAAO,GACX,OAAO,CAAC,iBAAiB,GAAG,CAAC;QAC3B,CAAC,CAAC,WAAW,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,WAAW,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,6FAA6F;QACpN,CAAC,CAAC,sEAAsE,CAAC;IAE7E,OAAO;6BACoB,OAAO;MAC9B,MAAM;MACN,SAAS;aACF,CAAC;AACd,CAAC;AAED,iFAAiF;AACjF,SAAS,WAAW,CAAC,MAAyB;IAC5C,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,UAAU,CAAC,CAAC,OAAO,kFAAkF,CAAC;QAC3G,KAAK,SAAS,CAAC,CAAC,OAAO,oGAAoG,CAAC;QAC5H,KAAK,WAAW,CAAC,CAAC,OAAO,oFAAoF,CAAC;QAC9G,KAAK,MAAM,CAAC,CAAC,OAAO,4FAA4F,CAAC;QACjH,KAAK,OAAO,CAAC,CAAC,OAAO,uEAAuE,CAAC;QAC7F,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,QAAQ,GAA4B;IACxC,CAAC,OAAO,EAAE,6FAA6F,CAAC;IACxG,CAAC,oBAAoB,EAAE,8FAA8F,CAAC;IACtH,CAAC,UAAU,EAAE,sGAAsG,CAAC;IACpH,CAAC,SAAS,EAAE,qEAAqE,CAAC;IAClF,CAAC,WAAW,EAAE,8FAA8F,CAAC;IAC7G,CAAC,MAAM,EAAE,4FAA4F,CAAC;IACtG,CAAC,SAAS,EAAE,wGAAwG,CAAC;IACrH,CAAC,UAAU,EAAE,mHAAmH,CAAC;CAClI,CAAC;AAEF,MAAM,gBAAgB,GAA4B;IAChD,CAAC,YAAY,EAAE,wHAAwH,CAAC;IACxI,CAAC,YAAY,EAAE,uGAAuG,CAAC;CACxH,CAAC;AAEF,uFAAuF;AACvF,SAAS,eAAe,CAAC,QAAiC,EAAE;IAC1D,MAAM,KAAK,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,KAAK,CAAC;SAClC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;SAC5D,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,OAAO,kGAAkG,KAAK,iBAAiB,CAAC;AAClI,CAAC;AAED;;;;;GAKG;AACH,SAAS,gBAAgB,CACvB,GAAc,EACd,OAAmE,EACnE,IAAqB;IAErB,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;IAClC,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;IACrC,MAAM,KAAK,GAAG,WAAW,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,WAAW,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,wBAAwB,CAAC;IAE7G,MAAM,SAAS,GAAc,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAC1D,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAC7C,CAAC;IACF,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC/C,IAAI,KAAK;gBAAE,KAAK,MAAM,CAAC,IAAI,KAAK;oBAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IACD,MAAM,UAAU,GACd,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAE9F,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAEnC,IAAI,IAAY,CAAC;IACjB,IAAI,GAAG,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;QAC3B,IAAI,GAAG,GAAG,KAAK,wBAAwB,CAAC;IAC1C,CAAC;SAAM,IAAI,GAAG,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QACjC,IAAI,GAAG,GAAG,KAAK,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,sCAAsC,UAAU,GAAG,CAAC;IACtG,CAAC;SAAM,CAAC;QACN,MAAM,SAAS,GAAG,GAAG,KAAK,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,4BAA4B,UAAU,GAAG,CAAC;QACrG,MAAM,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC,8CAA8C,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1H,IAAI,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC9B,CAAC;IAED,OAAO,0BAA0B,IAAI,MAAM,CAAC;AAC9C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkGlB,CAAC;AAEF,SAAS,YAAY,CAAC,KAAa,EAAE,QAAgB;IACnD,OAAO;;4BAEmB,KAAK,CAAC,IAAI;2BACX,KAAK,CAAC,KAAK;;;UAG5B,GAAG,CAAC,KAAK,CAAC;wBACI,QAAQ;;gBAEhB,CAAC;AACjB,CAAC;AAED,SAAS,YAAY;IACnB,OAAO;;eAEM,KAAK,CAAC,IAAI;eACV,KAAK,CAAC,KAAK;eACX,KAAK,CAAC,MAAM;eACZ,KAAK,CAAC,OAAO;;2GAE+E,KAAK,CAAC,IAAI;sBAC/F,CAAC;AACvB,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,QAAgC;IACvD,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAClD,MAAM,IAAI,GAAG,QAAQ;SAClB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QACzC,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC;QAC1D,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK;aAClB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,SAAS,CAAC;aACnD,IAAI,CAAC,GAAG,CAAC,CAAC;QACb,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO;YACnB,CAAC,CAAC,oFAAoF;YACtF,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU;gBACvB,CAAC,CAAC,4GAA4G;gBAC9G,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,kBAAkB;oBAC/B,CAAC,CAAC,0DAA0D;oBAC5D,CAAC,CAAC,oDAAoD,CAAC;QAC7D,OAAO;2DAC8C,IAAI,KAAK,KAAK,oCAAoC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;wCACnG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;6BAC1D,GAAG;6BACH,CAAC,CAAC,KAAK,CAAC,MAAM,kBAAkB,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK;aACzF,CAAC;IACV,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,OAAO,6DAA6D,QAAQ,CAAC,MAAM;;8BAEvD,IAAI,kBAAkB,CAAC;AACrD,CAAC;AAED,6EAA6E;AAC7E,SAAS,IAAI,CAAC,GAAY;IACxB,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;AACjH,CAAC;AAED;;;;GAIG;AACH,SAAS,UAAU,CAAC,IAAqB,EAAE,SAAiB;IAC1D,MAAM,GAAG,GAAG,iBAAiB,CAAC;IAC9B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,IAAI,CAAC,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACzE,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACxC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACvC,KAAK,CAAC,IAAI,CACR,SAAS,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,uBAAuB,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE;QACzF,YAAY,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,uBAAuB,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAChG,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,QAAQ,IAAI,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAClF,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC1C,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAC/C,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,SAAgB,qBAAqB,CACnC,GAAc,EACd,OAAmE,EACnE,IAAqB;IAErB,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IAClG,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAEtC,MAAM,SAAS,GAAG,EAAE,GAAG,EAAE,OAAgB,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAChF,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,GAAG,YAAY,CAAC;SAC3C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,GAAG,GAAG,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,OAAO,mBAAmB,GAAG,iCAAiC,CAAC,CAAC,IAAI,KAAK,KAAK,iCAAiC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC;IAC5I,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW;SAC7B,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QACV,MAAM,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAC1C,OAAO;uCAC0B,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC;gCAC5B,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,oBAAoB,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GACpF,IAAI,CAAC,CAAC,CAAC,0BAA0B,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC,EAC/F;2BACmB,EAAE,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,QAAQ,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK;YACzG,CAAC;IACT,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,MAAM,UAAU,GAAG,GAAG,CAAC,aAAa;QAClC,CAAC,CAAC;6CACuC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC;UAC5F,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,sBAAsB,GAAG,CAAC,YAAY,CAAC,EAAE,SAAS,GAAG,CAAC,YAAY,CAAC,QAAQ,eAAe,GAAG,CAAC,YAAY,CAAC,IAAI,WAAW,GAAG,CAAC,YAAY,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,EAAE;;iBAE9K;QACb,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,WAAW,GAAG,OAAO;SACxB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE;QACxB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI;aACf,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAC/B,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO;gBACvB,CAAC,CAAC,yDAAyD,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,oDAAoD;gBAC/I,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACpC,OAAO;+DAC8C,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,oCAAoC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC;sCACzJ,aAAa,CAAC,CAAC,CAAC;cACxC,KAAK,CAAC,CAAC,CAAC,sBAAsB,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE;cAChD,OAAO;iBACJ,CAAC;QACV,CAAC,CAAC;aACD,IAAI,CAAC,EAAE,CAAC,CAAC;QACZ,OAAO,yDAAyD,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC;IAClG,CAAC,CAAC;SACD,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,EAAE,MAAM;QACrC,CAAC,CAAC,8DAA8D,GAAG,CAAC,aAAa,CAAC,MAAM,sFAAsF,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,iEAAiE;QAChR,CAAC,CAAC,EAAE,CAAC;IAEP,4EAA4E;IAC5E,8EAA8E;IAC9E,yDAAyD;IACzD,MAAM,aAAa,GAAG,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAErD,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAExD,OAAO;;;;;;SAMA,UAAU;;;EAGjB,YAAY,CAAC,uBAAuB,EAAE,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;;iCAEnC,IAAI;kCACH,IAAI,uBAAuB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,iCAAiC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;MAC9H,UAAU;MACV,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC;yBACrB,SAAS;;IAE9B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;IAChD,UAAU;;oBAEM,GAAG,CAAC,WAAW,CAAC,MAAM;2FACiD,QAAQ;;IAE/F,WAAW,CAAC,CAAC,CAAC,yCAAyC,WAAW,YAAY,CAAC,CAAC,CAAC,EAAE;IACnF,aAAa;IACb,KAAK;IACL,eAAe,EAAE;;EAEnB,YAAY,EAAE;;QAER,CAAC;AACT,CAAC;AA4BD;;;;;;GAMG;AACH,SAAgB,uBAAuB,CACrC,WAAsC,EACtC,UAA8B,EAC9B,IAAuB;IAEvB,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IAClG,MAAM,KAAK,GAAG,CAAC,CAAmB,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,WAAW,GAAG,CAAC;IAE9E,MAAM,QAAQ,GAAG,WAAW;SACzB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS;YACzB,CAAC,CAAC,qEAAqE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,oDAAoD;YAC3I,CAAC,CAAC,EAAE,CAAC;QACP,OAAO;;8CAEiC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;sCACrB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gDACH,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;2FACgC,GAAG,oBAAoB,GAAG;;oDAEjE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,wDAAwD,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,+DAA+D,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC;iCACrN,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;UACvC,OAAO;aACJ,CAAC;IACV,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,MAAM,eAAe,GAAG,UAAU;SAC/B,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CAAC;oEACuD,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,oCAAoC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,8CAA8C,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;oDACvI,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;aACtD,CACR;SACA,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,MAAM,SAAS,GAAG;QAChB,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE;QAC/D,EAAE,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE;QAC7D,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE;KAC/E;SACE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iDAAiD,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,iCAAiC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC;SAC/I,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,MAAM,QAAQ,GACZ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,SAAS,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,mCAAmC,GAAG,CAAC,SAAS,CAAC,iDAAiD,CAAC;IAElK,OAAO;;;;;;SAMA,UAAU;;;EAGjB,YAAY,CAAC,qBAAqB,EAAE,QAAQ,CAAC;;;;;;yBAMtB,SAAS;;IAE9B,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,mCAAmC,WAAW,CAAC,MAAM,SAAS,QAAQ,YAAY,CAAC,CAAC,CAAC,EAAE;IAC5G,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,qDAAqD,UAAU,CAAC,MAAM,SAAS,eAAe,YAAY,CAAC,CAAC,CAAC,EAAE;IACnI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,sHAAsH,CAAC,CAAC,CAAC,EAAE;IACjL,eAAe,CAAC,gBAAgB,CAAC;;EAEnC,YAAY,EAAE;;QAER,CAAC;AACT,CAAC"}
|
|
1
|
+
{"version":3,"file":"htmlReport.js","sourceRoot":"","sources":["../src/htmlReport.ts"],"names":[],"mappings":"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"}
|