difftab 0.5.4 → 0.6.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/dist/server/main.js +260 -21
- package/dist/web/app.css +1 -1
- package/dist/web/app.js +17 -17
- package/package.json +21 -19
package/dist/server/main.js
CHANGED
|
@@ -100,15 +100,36 @@ const GIT_ENV = {
|
|
|
100
100
|
* 断言 `diff` 的 argv 里两者都在。
|
|
101
101
|
*/
|
|
102
102
|
const DIFF_GUARDS = ["--no-ext-diff", "--no-textconv"];
|
|
103
|
+
/**
|
|
104
|
+
* **每一条 `git grep` 都在子命令之前多带这两条 `-c`**,同样由这里注入:
|
|
105
|
+
* - `grep.column=false`:用户配了 `grep.column` 时 `-z` 记录多出一段列号,解析整体错位、不报错;
|
|
106
|
+
* - `submodule.recurse=false`:配了它时 `grep --untracked` 直接 fatal(`--untracked not supported
|
|
107
|
+
* with --recurse-submodules`),这台机器上的搜索于是永远报错。
|
|
108
|
+
*
|
|
109
|
+
* 写成 `-c` 而不是 `--no-column` / `--no-recurse-submodules`:后两者分别要 git 2.19 / 2.12,而
|
|
110
|
+
* 老 git 对不认识的配置键是静默忽略——下限 2.11 上也成立。
|
|
111
|
+
*/
|
|
112
|
+
const GREP_CONFIG = [
|
|
113
|
+
"-c",
|
|
114
|
+
"grep.column=false",
|
|
115
|
+
"-c",
|
|
116
|
+
"submodule.recurse=false"
|
|
117
|
+
];
|
|
103
118
|
/** `-c` 全局选项排在子命令之前,`diff` 的两道外部程序开关紧跟在子命令之后。 */
|
|
104
119
|
function argvOf(args) {
|
|
105
120
|
const [subcommand, ...rest] = args;
|
|
106
|
-
|
|
121
|
+
if (subcommand === "diff") return [
|
|
107
122
|
...GLOBAL_CONFIG,
|
|
108
123
|
subcommand,
|
|
109
124
|
...DIFF_GUARDS,
|
|
110
125
|
...rest
|
|
111
|
-
]
|
|
126
|
+
];
|
|
127
|
+
if (subcommand === "grep") return [
|
|
128
|
+
...GLOBAL_CONFIG,
|
|
129
|
+
...GREP_CONFIG,
|
|
130
|
+
...args
|
|
131
|
+
];
|
|
132
|
+
return [...GLOBAL_CONFIG, ...args];
|
|
112
133
|
}
|
|
113
134
|
/**
|
|
114
135
|
* 缺对象的那几种报法(`GIT_NO_LAZY_FETCH` 之下的 partial clone):实测 `could not fetch … from
|
|
@@ -184,7 +205,18 @@ function runGitRaw(args, cwd, options = {}) {
|
|
|
184
205
|
* 之后,任何错误都是我们自己动手的结果,一律以 `overflow` 收尾。流上的 `'error'` 同样
|
|
185
206
|
* 咽掉——一个没人监听的流错误会以未捕获异常掀掉整个服务。
|
|
186
207
|
*/
|
|
187
|
-
const settleOverflow = (
|
|
208
|
+
const settleOverflow = (stderr = "", code = null) => {
|
|
209
|
+
if (options.truncate) {
|
|
210
|
+
resolvePromise({
|
|
211
|
+
stdout: Buffer.concat(out),
|
|
212
|
+
stderr,
|
|
213
|
+
code,
|
|
214
|
+
truncated: true
|
|
215
|
+
});
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
rejectPromise(new GitError("overflow", argv, stderr, code));
|
|
219
|
+
};
|
|
188
220
|
for (const stream of [child.stdout, child.stderr]) stream.on("error", () => {
|
|
189
221
|
if (overflowed) settleOverflow();
|
|
190
222
|
});
|
|
@@ -198,7 +230,7 @@ function runGitRaw(args, cwd, options = {}) {
|
|
|
198
230
|
child.on("close", (code) => {
|
|
199
231
|
const stderr = Buffer.concat(err).toString("utf8");
|
|
200
232
|
if (overflowed) {
|
|
201
|
-
|
|
233
|
+
settleOverflow(stderr, code);
|
|
202
234
|
return;
|
|
203
235
|
}
|
|
204
236
|
if (code !== 0 && MISSING_OBJECT.test(stderr)) {
|
|
@@ -217,9 +249,8 @@ function runGitRaw(args, cwd, options = {}) {
|
|
|
217
249
|
async function runGit(args, cwd, options = {}) {
|
|
218
250
|
const result = await runGitRaw(args, cwd, options);
|
|
219
251
|
return {
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
code: result.code
|
|
252
|
+
...result,
|
|
253
|
+
stdout: result.stdout.toString("utf8")
|
|
223
254
|
};
|
|
224
255
|
}
|
|
225
256
|
/** 同上,但非零退出即抛。用于「失败没有第二种解释」的调用点。 */
|
|
@@ -1279,6 +1310,168 @@ async function listRefs(root) {
|
|
|
1279
1310
|
return { refs: parseRefs(await runGitStrict(REF_ARGS, root)) };
|
|
1280
1311
|
}
|
|
1281
1312
|
|
|
1313
|
+
//#endregion
|
|
1314
|
+
//#region src/server/shared/protocol.ts
|
|
1315
|
+
/**
|
|
1316
|
+
* 服务端 SSE 心跳周期(约 15s)。**它是协议的一部分,所以定在这里而不是 http/sse.ts**:
|
|
1317
|
+
* 后端拿它当发送周期,前端拿它当「对端还在」的判据。两边各写一个 15000,改周期时只改一边
|
|
1318
|
+
* 不会报错、也没有任何用例会红——前端的死连接判定就此静默失准,症状只是「有时候刷不出来」。
|
|
1319
|
+
*/
|
|
1320
|
+
const HEARTBEAT_MS = 15e3;
|
|
1321
|
+
/**
|
|
1322
|
+
* 一次搜索最多回多少行命中,到了即 `truncated`。**放在协议里**:前端的截断提示要说出这个数,各写
|
|
1323
|
+
* 一份时改了一边,页面上说的就不是真的。
|
|
1324
|
+
*/
|
|
1325
|
+
const MAX_SEARCH_LINES = 2e3;
|
|
1326
|
+
|
|
1327
|
+
//#endregion
|
|
1328
|
+
//#region src/server/git/search.ts
|
|
1329
|
+
/** 查询的长度上限(UTF-16 码元)。再长就不是「搜一个东西」了,而它整条进 argv。 */
|
|
1330
|
+
const MAX_QUERY_LENGTH = 1e3;
|
|
1331
|
+
/**
|
|
1332
|
+
* stdout 的上限,到了即掐断 git、**收下已到的部分**(`truncate` 档)。不靠它时,一个字母的查询在
|
|
1333
|
+
* 大仓库里要等 git 把整仓读完才回得来,而前 2,000 行早就到了。
|
|
1334
|
+
*/
|
|
1335
|
+
const MAX_SEARCH_BYTES = 8388608;
|
|
1336
|
+
/**
|
|
1337
|
+
* 预览文本的长度上限。超过时裁成首个命中前 `PREVIEW_LEAD` 个字符起的一截:一份压缩过的 JS 一行
|
|
1338
|
+
* 就是整个文件,原样回传时一次搜索的 payload 就是几 MB。
|
|
1339
|
+
*/
|
|
1340
|
+
const MAX_PREVIEW = 300;
|
|
1341
|
+
const PREVIEW_LEAD = 40;
|
|
1342
|
+
const ELLIPSIS = "…";
|
|
1343
|
+
/**
|
|
1344
|
+
* `grep` 的 argv,**除 `-i` / `-w` 两个可选位与 `-e` 后那个值外整条是字面量**,冒烟逐段钉着。两条
|
|
1345
|
+
* `-c`(`grep.column` 与 `submodule.recurse`)由 `run.ts` 注入,不写在这里。
|
|
1346
|
+
*
|
|
1347
|
+
* - `-I` **不能省**:不带时二进制文件吐的是一行 `Binary file <路径> matches`,没有 NUL 段,解析器会
|
|
1348
|
+
* 把它与下一条粘成一条;
|
|
1349
|
+
* - `--no-textconv`:与 `diff` 同一道外部程序闸。**禁 `-O`(起 pager)、`-f`(读文件当模式)、
|
|
1350
|
+
* `--no-index`(搜仓库外)、`--textconv`**——白名单只看子命令;
|
|
1351
|
+
* - `-F -e <查询>`:字面量(`grep.patternType` 被命令行的 `-F` 盖过),`-e` 让以 `-` 开头的查询
|
|
1352
|
+
* 不被当成选项;
|
|
1353
|
+
* - `--untracked`:agent 新建、还没 add 的文件也搜得到,仍尊重 `.gitignore`。
|
|
1354
|
+
*/
|
|
1355
|
+
function grepArgs({ query, matchCase, wholeWord }) {
|
|
1356
|
+
return [
|
|
1357
|
+
"grep",
|
|
1358
|
+
"--no-color",
|
|
1359
|
+
"--no-textconv",
|
|
1360
|
+
"-I",
|
|
1361
|
+
"-z",
|
|
1362
|
+
"-n",
|
|
1363
|
+
"-F",
|
|
1364
|
+
"--untracked",
|
|
1365
|
+
...matchCase ? [] : ["-i"],
|
|
1366
|
+
...wholeWord ? ["-w"] : [],
|
|
1367
|
+
"-e",
|
|
1368
|
+
query,
|
|
1369
|
+
"--"
|
|
1370
|
+
];
|
|
1371
|
+
}
|
|
1372
|
+
/** 退出码 1 是「没有命中」,不是错误;其余非零照常是错误。 */
|
|
1373
|
+
async function searchRepo(root, options) {
|
|
1374
|
+
const args = grepArgs(options);
|
|
1375
|
+
const result = await runGit(args, root, {
|
|
1376
|
+
maxStdoutBytes: MAX_SEARCH_BYTES,
|
|
1377
|
+
truncate: true
|
|
1378
|
+
});
|
|
1379
|
+
if (!result.truncated) {
|
|
1380
|
+
if (result.code === 1) return {
|
|
1381
|
+
files: [],
|
|
1382
|
+
truncated: false
|
|
1383
|
+
};
|
|
1384
|
+
if (result.code !== 0) throw new GitError("exit", args, result.stderr, result.code);
|
|
1385
|
+
}
|
|
1386
|
+
return parseGrep(result.stdout, options, result.truncated === true);
|
|
1387
|
+
}
|
|
1388
|
+
/**
|
|
1389
|
+
* `-z -n` 的记录是 `<路径>\0<行号>\0<内容>\n`,**按「读到 NUL → 读到 NUL → 读到换行」顺序解析**,
|
|
1390
|
+
* 不先按换行切:路径可以含换行;`-I` 只看前 8000 字节,之后的内容里可能有 NUL。
|
|
1391
|
+
*
|
|
1392
|
+
* `truncated` 时最后一条多半是半截(也可能正好是整条),找不齐三个分隔符就丢掉——半截的那条连
|
|
1393
|
+
* 路径都可能是 utf8 解码到一半的。同一个文件的记录是连续的(git 按文件逐个输出)。
|
|
1394
|
+
*/
|
|
1395
|
+
function parseGrep(output, options, truncated) {
|
|
1396
|
+
const pattern = patternOf(options);
|
|
1397
|
+
const files = [];
|
|
1398
|
+
let current;
|
|
1399
|
+
let lines = 0;
|
|
1400
|
+
let cut = truncated;
|
|
1401
|
+
let at = 0;
|
|
1402
|
+
while (at < output.length) {
|
|
1403
|
+
const afterPath = output.indexOf("\0", at);
|
|
1404
|
+
const afterLine = afterPath === -1 ? -1 : output.indexOf("\0", afterPath + 1);
|
|
1405
|
+
const end = afterLine === -1 ? -1 : output.indexOf("\n", afterLine + 1);
|
|
1406
|
+
if (end === -1) break;
|
|
1407
|
+
if (lines === 2e3) {
|
|
1408
|
+
cut = true;
|
|
1409
|
+
break;
|
|
1410
|
+
}
|
|
1411
|
+
lines += 1;
|
|
1412
|
+
const path = output.slice(at, afterPath);
|
|
1413
|
+
if (current?.path !== path) {
|
|
1414
|
+
current = {
|
|
1415
|
+
path,
|
|
1416
|
+
matches: []
|
|
1417
|
+
};
|
|
1418
|
+
files.push(current);
|
|
1419
|
+
}
|
|
1420
|
+
current.matches.push(previewOf(Number(output.slice(afterPath + 1, afterLine)), output.slice(afterLine + 1, end), pattern));
|
|
1421
|
+
at = end + 1;
|
|
1422
|
+
}
|
|
1423
|
+
return {
|
|
1424
|
+
files,
|
|
1425
|
+
truncated: cut
|
|
1426
|
+
};
|
|
1427
|
+
}
|
|
1428
|
+
/**
|
|
1429
|
+
* 命中区间在 JS 里**拿同一个字面量重找一次**:`--column` 要 git 2.19、且只给每行第一个命中。`-i` 对
|
|
1430
|
+
* `i` 标志;`-w` 对 git 的字词集 `[A-Za-z0-9_]`——不用 `\b`:带 `iu` 标志时它把 `ſ`、`K`(开尔文
|
|
1431
|
+
* 符号)也算进单词字符。找不出区间的行照常返回、只是不高亮。
|
|
1432
|
+
*/
|
|
1433
|
+
function patternOf({ query, matchCase, wholeWord }) {
|
|
1434
|
+
const literal = query.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
1435
|
+
const body = wholeWord ? `(?<![A-Za-z0-9_])${literal}(?![A-Za-z0-9_])` : literal;
|
|
1436
|
+
return new RegExp(body, matchCase ? "gu" : "giu");
|
|
1437
|
+
}
|
|
1438
|
+
/**
|
|
1439
|
+
* 一行的预览:剥掉行尾 `\r` 与行首空白(缩进深的代码在 320px 里否则只剩一截空白),过长时裁成
|
|
1440
|
+
* 首个命中附近的一截、两端补 `…`;`ranges` 全程跟着平移。
|
|
1441
|
+
*/
|
|
1442
|
+
function previewOf(line, raw, pattern) {
|
|
1443
|
+
const text = (raw.endsWith("\r") ? raw.slice(0, -1) : raw).trimStart();
|
|
1444
|
+
const long = text.length > MAX_PREVIEW;
|
|
1445
|
+
let start = 0;
|
|
1446
|
+
let end = long ? clampToCodePoint(text, MAX_PREVIEW) : text.length;
|
|
1447
|
+
const ranges = [];
|
|
1448
|
+
for (const match of text.matchAll(pattern)) {
|
|
1449
|
+
if (long && ranges.length === 0) {
|
|
1450
|
+
start = clampToCodePoint(text, Math.max(0, match.index - PREVIEW_LEAD));
|
|
1451
|
+
end = clampToCodePoint(text, Math.min(text.length, start + MAX_PREVIEW));
|
|
1452
|
+
}
|
|
1453
|
+
if (match.index + match[0].length > end) break;
|
|
1454
|
+
ranges.push([match.index, match.index + match[0].length]);
|
|
1455
|
+
}
|
|
1456
|
+
if (!long) return {
|
|
1457
|
+
line,
|
|
1458
|
+
text,
|
|
1459
|
+
ranges
|
|
1460
|
+
};
|
|
1461
|
+
const head = start > 0 ? ELLIPSIS : "";
|
|
1462
|
+
const shift = head.length - start;
|
|
1463
|
+
return {
|
|
1464
|
+
line,
|
|
1465
|
+
text: `${head}${text.slice(start, end)}${end < text.length ? ELLIPSIS : ""}`,
|
|
1466
|
+
ranges: ranges.map(([from, to]) => [from + shift, to + shift])
|
|
1467
|
+
};
|
|
1468
|
+
}
|
|
1469
|
+
/** 落在代理对中间的下标往前挪一格:切开的半个代理对在页面上是一个替换字符。 */
|
|
1470
|
+
function clampToCodePoint(text, index) {
|
|
1471
|
+
const code = text.charCodeAt(index);
|
|
1472
|
+
return index > 0 && code >= 56320 && code <= 57343 ? index - 1 : index;
|
|
1473
|
+
}
|
|
1474
|
+
|
|
1282
1475
|
//#endregion
|
|
1283
1476
|
//#region src/server/git/operation.ts
|
|
1284
1477
|
/**
|
|
@@ -1556,6 +1749,18 @@ const CACHED_ARGS = [
|
|
|
1556
1749
|
* 各跑一次,而要的只是「\t 后面那截」与「开头六个字符」。
|
|
1557
1750
|
*/
|
|
1558
1751
|
const GITLINK_MODE = "160000";
|
|
1752
|
+
/** `CACHED_ARGS` 的输出逐条拆成路径与「是不是 gitlink」。目录树与全量文件列表共用这一份。 */
|
|
1753
|
+
function parseStaged(output) {
|
|
1754
|
+
const entries = [];
|
|
1755
|
+
for (const segment of output.split("\0")) {
|
|
1756
|
+
const tab = segment.indexOf(" ");
|
|
1757
|
+
if (tab !== -1) entries.push({
|
|
1758
|
+
path: segment.slice(tab + 1),
|
|
1759
|
+
gitlink: segment.startsWith(GITLINK_MODE)
|
|
1760
|
+
});
|
|
1761
|
+
}
|
|
1762
|
+
return entries;
|
|
1763
|
+
}
|
|
1559
1764
|
/**
|
|
1560
1765
|
* 一层的直接子项。
|
|
1561
1766
|
*
|
|
@@ -1664,11 +1869,7 @@ async function readTree(root, dir) {
|
|
|
1664
1869
|
* 展开,那是坏请求,不是一个空目录。
|
|
1665
1870
|
*/
|
|
1666
1871
|
let selfKind = null;
|
|
1667
|
-
for (const
|
|
1668
|
-
const tab = segment.indexOf(" ");
|
|
1669
|
-
if (tab === -1) continue;
|
|
1670
|
-
const entryPath = segment.slice(tab + 1);
|
|
1671
|
-
const gitlink = segment.startsWith(GITLINK_MODE);
|
|
1872
|
+
for (const { path: entryPath, gitlink } of parseStaged(cached)) {
|
|
1672
1873
|
if (entryPath === path) {
|
|
1673
1874
|
selfKind = gitlink ? "gitlink" : "file";
|
|
1674
1875
|
continue;
|
|
@@ -1734,6 +1935,28 @@ async function readTree(root, dir) {
|
|
|
1734
1935
|
})
|
|
1735
1936
|
};
|
|
1736
1937
|
}
|
|
1938
|
+
/**
|
|
1939
|
+
* Quick Open 用的全仓文件列表:**两条 `ls-files`、不扩白名单**。
|
|
1940
|
+
*
|
|
1941
|
+
* - 已跟踪那条与目录树共用 `CACHED_ARGS`(带 `--stage`),经同一份 `parseStaged` 滤掉
|
|
1942
|
+
* submodule——它打不开,列出来只会以「不是普通文件」告终;
|
|
1943
|
+
* - 未跟踪那条**不带 `--directory`**:这里要的是文件,折叠成 `dir/` 就打不开了。被忽略的不列,
|
|
1944
|
+
* `node_modules` 因此进不来;未跟踪又未忽略的大目录会整片展开,与 `status -uall` 同一量级。
|
|
1945
|
+
*
|
|
1946
|
+
* 工作区已删但仍在 index 里的文件照列,与目录树同一个已知偏差(点开得到「文件已不在」)。
|
|
1947
|
+
*/
|
|
1948
|
+
async function listFiles(root) {
|
|
1949
|
+
const [cached, others] = await Promise.all([runGitStrict(CACHED_ARGS, root), runGitStrict([
|
|
1950
|
+
"ls-files",
|
|
1951
|
+
"-z",
|
|
1952
|
+
"--others",
|
|
1953
|
+
"--exclude-standard"
|
|
1954
|
+
], root)]);
|
|
1955
|
+
const paths = /* @__PURE__ */ new Set();
|
|
1956
|
+
for (const { path, gitlink } of parseStaged(cached)) if (!gitlink) paths.add(path);
|
|
1957
|
+
for (const path of others.split("\0")) if (path !== "" && !path.endsWith("/")) paths.add(path);
|
|
1958
|
+
return { paths: [...paths].sort() };
|
|
1959
|
+
}
|
|
1737
1960
|
|
|
1738
1961
|
//#endregion
|
|
1739
1962
|
//#region src/server/watch/tier.ts
|
|
@@ -2284,15 +2507,6 @@ function tokenCookie(port, token) {
|
|
|
2284
2507
|
return `${cookieName(port)}=${token}; Path=/; HttpOnly; SameSite=Strict`;
|
|
2285
2508
|
}
|
|
2286
2509
|
|
|
2287
|
-
//#endregion
|
|
2288
|
-
//#region src/server/shared/protocol.ts
|
|
2289
|
-
/**
|
|
2290
|
-
* 服务端 SSE 心跳周期(约 15s)。**它是协议的一部分,所以定在这里而不是 http/sse.ts**:
|
|
2291
|
-
* 后端拿它当发送周期,前端拿它当「对端还在」的判据。两边各写一个 15000,改周期时只改一边
|
|
2292
|
-
* 不会报错、也没有任何用例会红——前端的死连接判定就此静默失准,症状只是「有时候刷不出来」。
|
|
2293
|
-
*/
|
|
2294
|
-
const HEARTBEAT_MS = 15e3;
|
|
2295
|
-
|
|
2296
2510
|
//#endregion
|
|
2297
2511
|
//#region src/server/http/sse.ts
|
|
2298
2512
|
/**
|
|
@@ -2626,6 +2840,31 @@ async function startServer(repo, options = {}) {
|
|
|
2626
2840
|
case "/api/refs":
|
|
2627
2841
|
sendJson(res, 200, await listRefs(repo.root));
|
|
2628
2842
|
return;
|
|
2843
|
+
/** Quick Open 的全仓文件列表。无参数,前端每次打开 Quick Open 时取一次。 */
|
|
2844
|
+
case "/api/files":
|
|
2845
|
+
sendJson(res, 200, await listFiles(repo.root));
|
|
2846
|
+
return;
|
|
2847
|
+
/**
|
|
2848
|
+
* 全仓字面量搜索。**查询整条进 argv(`-e` 之后)**,所以这里先卡住两件事:长度,以及换行与
|
|
2849
|
+
* NUL——git 会把含换行的模式拆成几个模式各自去搜,页面上的高亮与命中就对不上了。
|
|
2850
|
+
*/
|
|
2851
|
+
case "/api/search": {
|
|
2852
|
+
const query = url.searchParams.get("q") ?? "";
|
|
2853
|
+
if (query === "") {
|
|
2854
|
+
sendError(res, 400, "bad-request", "q is required");
|
|
2855
|
+
return;
|
|
2856
|
+
}
|
|
2857
|
+
if (query.length > 1e3 || /[\n\r\0]/.test(query)) {
|
|
2858
|
+
sendError(res, 400, "bad-request", `q must be a single line of at most ${MAX_QUERY_LENGTH} characters`);
|
|
2859
|
+
return;
|
|
2860
|
+
}
|
|
2861
|
+
sendJson(res, 200, await searchRepo(repo.root, {
|
|
2862
|
+
query,
|
|
2863
|
+
matchCase: url.searchParams.get("case") === "1",
|
|
2864
|
+
wholeWord: url.searchParams.get("word") === "1"
|
|
2865
|
+
}));
|
|
2866
|
+
return;
|
|
2867
|
+
}
|
|
2629
2868
|
/** SSE。**三道校验在上面已经统一走过**,这里没有例外分支。 */
|
|
2630
2869
|
case "/api/events": {
|
|
2631
2870
|
const headers = {
|
package/dist/web/app.css
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
|
|
2
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-outline-style:solid}::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-outline-style:solid}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, -apple-system, "Segoe UI", "Noto Sans", "PingFang SC", "Microsoft YaHei", sans-serif;--font-mono:ui-monospace, "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-medium:500;--radius-sm:.25rem;--radius-md:.375rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-editor-background:var(--lightningcss-light,#fff)var(--lightningcss-dark,#1f1f1f);--color-editor-foreground:var(--lightningcss-light,#3b3b3b)var(--lightningcss-dark,#ccc);--color-side-bar-background:var(--lightningcss-light,#f8f8f8)var(--lightningcss-dark,#181818);--color-side-bar-section-header-background:var(--lightningcss-light,#f0f0f0)var(--lightningcss-dark,#202020);--color-title-bar-background:var(--lightningcss-light,#f8f8f8)var(--lightningcss-dark,#181818);--color-panel-border:var(--lightningcss-light,#e5e5e5)var(--lightningcss-dark,#2b2b2b);--color-description-foreground:var(--lightningcss-light,#6f6f6f)var(--lightningcss-dark,#9d9d9d);--color-focus-border:var(--lightningcss-light,#005fb8)var(--lightningcss-dark,#0078d4);--color-text-link-foreground:var(--lightningcss-light,#005fb8)var(--lightningcss-dark,#4daafc);--color-toolbar-hover-background:var(--lightningcss-light,#b8b8b84f)var(--lightningcss-dark,#5a5d5e4f);--color-list-hover-background:var(--lightningcss-light,#e8e8e8)var(--lightningcss-dark,#2a2d2e);--color-list-active-selection-background:var(--lightningcss-light,#e4e6f1)var(--lightningcss-dark,#04395e);--color-list-active-selection-foreground:var(--lightningcss-light,#000)var(--lightningcss-dark,#fff);--color-warning-background:var(--lightningcss-light,#fdf6d3)var(--lightningcss-dark,#352a05);--color-warning-border:#b89500;--color-git-modified:var(--lightningcss-light,#895503)var(--lightningcss-dark,#e2c08d);--color-git-deleted:var(--lightningcss-light,#ad0707)var(--lightningcss-dark,#c74e39);--color-git-added:var(--lightningcss-light,#587c0c)var(--lightningcss-dark,#81b88b);--color-git-untracked:var(--lightningcss-light,#007100)var(--lightningcss-dark,#73c991);--color-git-conflicting:var(--lightningcss-light,#ad0707)var(--lightningcss-dark,#e4676b);--color-scm-graph-history-item-ref:#59a4f9;--color-scm-graph-history-item-remote-ref:#b180d7;--color-diff-inserted-background:#9bb95533;--color-diff-inserted-text-background:#9bb95573;--color-diff-inserted-border:#9bb95580;--color-diff-removed-background:#ff000029;--color-diff-removed-text-background:#ff000052;--color-diff-removed-border:#ff000059;--color-diff-diagonal-fill:var(--lightningcss-light,#0000000f)var(--lightningcss-dark,#ffffff0f)}}@layer base{*,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}button:not(:disabled){cursor:pointer}*{scrollbar-width:thin}}@layer components;@layer utilities{.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-y-0{inset-block:0}.top-0{top:0}.top-2{top:calc(var(--spacing) * 2)}.right-9\.5{right:calc(var(--spacing) * 9.5)}.left-0{left:0}.left-1\/2{left:50%}.z-10{z-index:10}.z-50{z-index:50}.mt-1{margin-top:var(--spacing)}.mb-1{margin-bottom:var(--spacing)}.ml-1{margin-left:var(--spacing)}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-auto{margin-left:auto}.scrollbar-none::-webkit-scrollbar{display:none}.block{display:block}.contents{display:contents}.flex{display:flex}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.table{display:table}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.h-9{height:calc(var(--spacing) * 9)}.h-auto{height:auto}.h-full{height:100%}.h-screen{height:100vh}.max-h-110{max-height:calc(var(--spacing) * 110)}.min-h-0{min-height:0}.w-3{width:calc(var(--spacing) * 3)}.w-5{width:calc(var(--spacing) * 5)}.w-10{width:calc(var(--spacing) * 10)}.w-150{width:calc(var(--spacing) * 150)}.w-full{width:100%}.w-max{width:max-content}.max-w-32{max-width:calc(var(--spacing) * 32)}.max-w-60{max-width:calc(var(--spacing) * 60)}.max-w-64{max-width:calc(var(--spacing) * 64)}.max-w-\[calc\(100vw-2rem\)\]{max-width:calc(100vw - 2rem)}.max-w-full{max-width:100%}.min-w-0{min-width:0}.min-w-full{min-width:100%}.flex-1{flex:1}.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.resize{resize:both}.scrollbar-none{scrollbar-width:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.self-center{align-self:center}.self-end{align-self:flex-end}.self-stretch{align-self:stretch}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-x-auto{overflow-x:auto}.rounded-full{border-radius:2147483647px}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-editor-foreground{border-color:var(--color-editor-foreground)}.border-focus-border{border-color:var(--color-focus-border)}.border-panel-border{border-color:var(--color-panel-border)}.border-transparent{border-color:#0000}.border-warning-border{border-color:var(--color-warning-border)}.bg-current{background-color:currentColor}.bg-editor-background{background-color:var(--color-editor-background)}.bg-list-active-selection-background{background-color:var(--color-list-active-selection-background)}.bg-scm-graph-history-item-ref\/20{background-color:#59a4f933}@supports (color:color-mix(in lab, red, red)){.bg-scm-graph-history-item-ref\/20{background-color:color-mix(in oklab, var(--color-scm-graph-history-item-ref) 20%, transparent)}}.bg-scm-graph-history-item-remote-ref\/20{background-color:#b180d733}@supports (color:color-mix(in lab, red, red)){.bg-scm-graph-history-item-remote-ref\/20{background-color:color-mix(in oklab, var(--color-scm-graph-history-item-remote-ref) 20%, transparent)}}.bg-side-bar-background{background-color:var(--color-side-bar-background)}.bg-side-bar-section-header-background{background-color:var(--color-side-bar-section-header-background)}.bg-title-bar-background{background-color:var(--color-title-bar-background)}.bg-warning-background{background-color:var(--color-warning-background)}.checkerboard{background-image:repeating-conic-gradient(var(--color-diff-diagonal-fill) 0 25%, transparent 0 50%);background-size:16px 16px}.stroke-1{stroke-width:1px}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-4{padding:calc(var(--spacing) * 4)}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-5{padding-left:calc(var(--spacing) * 5)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-sm\/6{font-size:var(--text-sm);line-height:calc(var(--spacing) * 6)}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-xs\/4{font-size:var(--text-xs);line-height:calc(var(--spacing) * 4)}.text-xs\/6{font-size:var(--text-xs);line-height:calc(var(--spacing) * 6)}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.text-description-foreground{color:var(--color-description-foreground)}.text-editor-foreground{color:var(--color-editor-foreground)}.text-git-added{color:var(--color-git-added)}.text-git-conflicting{color:var(--color-git-conflicting)}.text-git-deleted{color:var(--color-git-deleted)}.text-git-modified{color:var(--color-git-modified)}.text-git-untracked{color:var(--color-git-untracked)}.text-list-active-selection-foreground{color:var(--color-list-active-selection-foreground)}.text-scm-graph-history-item-ref{color:var(--color-scm-graph-history-item-ref)}.text-scm-graph-history-item-remote-ref{color:var(--color-scm-graph-history-item-remote-ref)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.opacity-0{opacity:0}.opacity-60{opacity:.6}.opacity-75{opacity:.75}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.divider-b{box-shadow:inset 0 -1px var(--color-panel-border)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.group-focus-within\:opacity-100:is(:where(.group):focus-within *){opacity:1}@media (hover:hover){.group-hover\:flex:is(:where(.group):hover *){display:flex}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.group-has-focus-visible\:flex:is(:where(.group):has(:focus-visible) *){display:flex}@media (hover:hover){.hover\:bg-list-hover-background:hover{background-color:var(--color-list-hover-background)}.hover\:bg-toolbar-hover-background:hover{background-color:var(--color-toolbar-hover-background)}.hover\:text-editor-foreground:hover{color:var(--color-editor-foreground)}}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\:-outline-offset-2:focus-visible{outline-offset:calc(2px * -1)}.focus-visible\:outline-focus-border:focus-visible{outline-color:var(--color-focus-border)}.disabled\:cursor-default:disabled{cursor:default}@media (pointer:coarse){.pointer-coarse\:flex{display:flex}}.\[\&\>\*\]\:opacity-75>*{opacity:.75}.\[\&\>\*\:focus-visible\]\:opacity-100>:focus-visible,.\[\&\>\*\:hover\]\:opacity-100>:hover{opacity:1}}:root{--hljs-fg:var(--lightningcss-light,#24292e)var(--lightningcss-dark,#c9d1d9);--hljs-bg:var(--lightningcss-light,#fff)var(--lightningcss-dark,#0d1117);--hljs-keyword:var(--lightningcss-light,#d73a49)var(--lightningcss-dark,#ff7b72);--hljs-entity:var(--lightningcss-light,#6f42c1)var(--lightningcss-dark,#d2a8ff);--hljs-constant:var(--lightningcss-light,#005cc5)var(--lightningcss-dark,#79c0ff);--hljs-string:var(--lightningcss-light,#032f62)var(--lightningcss-dark,#a5d6ff);--hljs-variable:var(--lightningcss-light,#e36209)var(--lightningcss-dark,#ffa657);--hljs-comment:var(--lightningcss-light,#6a737d)var(--lightningcss-dark,#8b949e);--hljs-entity-tag:var(--lightningcss-light,#22863a)var(--lightningcss-dark,#7ee787);--hljs-heading:var(--lightningcss-light,#005cc5)var(--lightningcss-dark,#1f6feb);--hljs-list:var(--lightningcss-light,#735c0f)var(--lightningcss-dark,#f2cc60);--hljs-inserted:var(--lightningcss-light,#22863a)var(--lightningcss-dark,#aff5b4);--hljs-inserted-bg:var(--lightningcss-light,#f0fff4)var(--lightningcss-dark,#033a16);--hljs-deleted:var(--lightningcss-light,#b31d28)var(--lightningcss-dark,#ffdcd7);--hljs-deleted-bg:var(--lightningcss-light,#ffeef0)var(--lightningcss-dark,#67060c)}.hljs{color:var(--hljs-fg);background:var(--hljs-bg)}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:var(--hljs-keyword)}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:var(--hljs-entity)}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:var(--hljs-constant)}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:var(--hljs-string)}.hljs-built_in,.hljs-symbol{color:var(--hljs-variable)}.hljs-comment,.hljs-code,.hljs-formula{color:var(--hljs-comment)}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:var(--hljs-entity-tag)}.hljs-subst{color:var(--hljs-fg)}.hljs-section{color:var(--hljs-heading);font-weight:700}.hljs-bullet{color:var(--hljs-list)}.hljs-emphasis{color:var(--hljs-fg);font-style:italic}.hljs-strong{color:var(--hljs-fg);font-weight:700}.hljs-addition{color:var(--hljs-inserted);background-color:var(--hljs-inserted-bg)}.hljs-deletion{color:var(--hljs-deleted);background-color:var(--hljs-deleted-bg)}:host,:root{--d2h-bg-color:#fff;--d2h-border-color:#ddd;--d2h-dim-color:#0000004d;--d2h-line-border-color:#eee;--d2h-file-header-bg-color:#f7f7f7;--d2h-file-header-border-color:#d8d8d8;--d2h-empty-placeholder-bg-color:#f1f1f1;--d2h-empty-placeholder-border-color:#e1e1e1;--d2h-selected-color:#c8e1ff;--d2h-ins-bg-color:#dfd;--d2h-ins-border-color:#b4e2b4;--d2h-ins-highlight-bg-color:#97f295;--d2h-ins-label-color:#399839;--d2h-del-bg-color:#fee8e9;--d2h-del-border-color:#e9aeae;--d2h-del-highlight-bg-color:#ffb6ba;--d2h-del-label-color:#c33;--d2h-change-del-color:#fdf2d0;--d2h-change-ins-color:#ded;--d2h-info-bg-color:#f8fafd;--d2h-info-border-color:#d5e4f2;--d2h-change-label-color:#d0b44c;--d2h-moved-label-color:#3572b0;--d2h-dark-color:#e6edf3;--d2h-dark-bg-color:#0d1117;--d2h-dark-border-color:#30363d;--d2h-dark-dim-color:#6e7681;--d2h-dark-line-border-color:#21262d;--d2h-dark-file-header-bg-color:#161b22;--d2h-dark-file-header-border-color:#30363d;--d2h-dark-empty-placeholder-bg-color:#6e76811a;--d2h-dark-empty-placeholder-border-color:#30363d;--d2h-dark-selected-color:#388bfd1a;--d2h-dark-ins-bg-color:#2ea04326;--d2h-dark-ins-border-color:#2ea04366;--d2h-dark-ins-highlight-bg-color:#2ea04366;--d2h-dark-ins-label-color:#3fb950;--d2h-dark-del-bg-color:#f851491a;--d2h-dark-del-border-color:#f8514966;--d2h-dark-del-highlight-bg-color:#f8514966;--d2h-dark-del-label-color:#f85149;--d2h-dark-change-del-color:#d2992233;--d2h-dark-change-ins-color:#2ea04340;--d2h-dark-info-bg-color:#388bfd1a;--d2h-dark-info-border-color:#388bfd66;--d2h-dark-change-label-color:#d29922;--d2h-dark-moved-label-color:#3572b0}.d2h-wrapper{text-align:left}.d2h-file-header{background-color:#f7f7f7;background-color:var(--d2h-file-header-bg-color);border-bottom:1px solid #d8d8d8;border-bottom:1px solid var(--d2h-file-header-border-color);height:35px;padding:5px 10px;font-family:Source Sans Pro,Helvetica Neue,Helvetica,Arial,sans-serif;display:flex}.d2h-file-header.d2h-sticky-header{z-index:1;position:sticky;top:0}.d2h-file-stats{margin-left:auto;font-size:14px;display:flex}.d2h-lines-added{border:1px solid #b4e2b4;border:1px solid var(--d2h-ins-border-color);color:var(--d2h-ins-label-color);text-align:right;vertical-align:middle;border-radius:5px 0 0 5px;padding:2px}.d2h-lines-deleted{border:1px solid #e9aeae;border:1px solid var(--d2h-del-border-color);color:var(--d2h-del-label-color);text-align:left;vertical-align:middle;border-radius:0 5px 5px 0;margin-left:1px;padding:2px}.d2h-file-name-wrapper{align-items:center;width:100%;font-size:15px;display:flex}.d2h-file-name{text-overflow:ellipsis;white-space:nowrap;overflow-x:hidden}.d2h-file-wrapper{border:1px solid #ddd;border:1px solid var(--d2h-border-color);border-radius:3px;margin-bottom:1em}.d2h-file-collapse{cursor:pointer;border:1px solid #ddd;border:1px solid var(--d2h-border-color);border-radius:3px;justify-content:flex-end;align-items:center;padding:4px 8px;font-size:12px;display:none}.d2h-file-collapse.d2h-selected{background-color:#c8e1ff;background-color:var(--d2h-selected-color)}.d2h-file-collapse-input{margin:0 4px 0 0}.d2h-diff-table{border-collapse:collapse;width:100%;font-family:Menlo,Consolas,monospace;font-size:13px}.d2h-files-diff{width:100%;display:flex}.d2h-file-diff{overflow-y:hidden}.d2h-file-diff.d2h-d-none,.d2h-files-diff.d2h-d-none{display:none}.d2h-file-side-diff{width:50%;display:inline-block;overflow:scroll hidden}.d2h-code-line{width:calc(100% - 16em);padding:0 8em}.d2h-code-line,.d2h-code-side-line{-webkit-user-select:none;user-select:none;white-space:nowrap;display:inline-block}.d2h-code-side-line{width:calc(100% - 9em);padding:0 4.5em}.d2h-code-line-ctn{word-wrap:normal;-webkit-user-select:text;user-select:text;vertical-align:middle;white-space:pre;background:0 0;width:100%;padding:0;display:inline-block}.d2h-code-line del,.d2h-code-side-line del{background-color:#ffb6ba;background-color:var(--d2h-del-highlight-bg-color)}.d2h-code-line del,.d2h-code-line ins,.d2h-code-side-line del,.d2h-code-side-line ins{border-radius:.2em;margin-top:-1px;-webkit-text-decoration:none;text-decoration:none;display:inline-block}.d2h-code-line ins,.d2h-code-side-line ins{background-color:#97f295;background-color:var(--d2h-ins-highlight-bg-color);text-align:left}.d2h-code-line-prefix{word-wrap:normal;white-space:pre;background:0 0;padding:0;display:inline}.line-num1{float:left}.line-num1,.line-num2{box-sizing:border-box;text-overflow:ellipsis;width:3.5em;padding:0 .5em;overflow:hidden}.line-num2{float:right}.d2h-code-linenumber{background-color:#fff;background-color:var(--d2h-bg-color);border:solid #eee;border:solid var(--d2h-line-border-color);box-sizing:border-box;color:var(--d2h-dim-color);cursor:pointer;text-align:right;border-width:0 1px;width:7.5em;display:inline-block;position:absolute}.d2h-code-linenumber:after{content:""}.d2h-code-side-linenumber{background-color:#fff;background-color:var(--d2h-bg-color);border:solid #eee;border:solid var(--d2h-line-border-color);box-sizing:border-box;color:var(--d2h-dim-color);cursor:pointer;text-align:right;text-overflow:ellipsis;border-width:0 1px;width:4em;padding:0 .5em;display:inline-block;position:absolute;overflow:hidden}.d2h-code-side-linenumber:after{content:""}.d2h-code-side-emptyplaceholder,.d2h-emptyplaceholder{background-color:#f1f1f1;background-color:var(--d2h-empty-placeholder-bg-color);border-color:#e1e1e1;border-color:var(--d2h-empty-placeholder-border-color)}.d2h-code-line-prefix,.d2h-code-linenumber,.d2h-code-side-linenumber,.d2h-emptyplaceholder{-webkit-user-select:none;user-select:none}.d2h-code-linenumber,.d2h-code-side-linenumber{direction:rtl}.d2h-del{background-color:#fee8e9;background-color:var(--d2h-del-bg-color);border-color:#e9aeae;border-color:var(--d2h-del-border-color)}.d2h-ins{background-color:#dfd;background-color:var(--d2h-ins-bg-color);border-color:#b4e2b4;border-color:var(--d2h-ins-border-color)}.d2h-info{background-color:#f8fafd;background-color:var(--d2h-info-bg-color);border-color:#d5e4f2;border-color:var(--d2h-info-border-color);color:var(--d2h-dim-color)}.d2h-file-diff .d2h-del.d2h-change{background-color:#fdf2d0;background-color:var(--d2h-change-del-color)}.d2h-file-diff .d2h-ins.d2h-change{background-color:#ded;background-color:var(--d2h-change-ins-color)}.d2h-file-list-wrapper{margin-bottom:10px}.d2h-file-list-wrapper a{-webkit-text-decoration:none;text-decoration:none}.d2h-file-list-wrapper a,.d2h-file-list-wrapper a:visited{color:var(--d2h-moved-label-color)}.d2h-file-list-header{text-align:left}.d2h-file-list-title{font-weight:700}.d2h-file-list-line{text-align:left;display:flex}.d2h-file-list{margin:0;padding:0;list-style:none;display:block}.d2h-file-list>li{border-bottom:1px solid #ddd;border-bottom:1px solid var(--d2h-border-color);margin:0;padding:5px 10px}.d2h-file-list>li:last-child{border-bottom:none}.d2h-file-switch{cursor:pointer;font-size:10px;display:none}.d2h-icon{fill:currentColor;vertical-align:middle;margin-right:10px}.d2h-deleted{color:var(--d2h-del-label-color)}.d2h-added{color:var(--d2h-ins-label-color)}.d2h-changed{color:var(--d2h-change-label-color)}.d2h-moved{color:var(--d2h-moved-label-color)}.d2h-tag{background-color:#fff;background-color:var(--d2h-bg-color);margin-left:5px;padding:0 2px;font-size:10px;display:flex}.d2h-deleted-tag{border:1px solid #c33;border:1px solid var(--d2h-del-label-color)}.d2h-added-tag{border:1px solid #399839;border:1px solid var(--d2h-ins-label-color)}.d2h-changed-tag{border:1px solid #d0b44c;border:1px solid var(--d2h-change-label-color)}.d2h-moved-tag{border:1px solid #3572b0;border:1px solid var(--d2h-moved-label-color)}.d2h-dark-color-scheme{background-color:#0d1117;background-color:var(--d2h-dark-bg-color);color:var(--d2h-dark-color)}.d2h-dark-color-scheme .d2h-file-header{background-color:#161b22;background-color:var(--d2h-dark-file-header-bg-color);border-bottom:#30363d;border-bottom:var(--d2h-dark-file-header-border-color)}.d2h-dark-color-scheme .d2h-lines-added{border:1px solid #2ea04366;border:1px solid var(--d2h-dark-ins-border-color);color:var(--d2h-dark-ins-label-color)}.d2h-dark-color-scheme .d2h-lines-deleted{border:1px solid #f8514966;border:1px solid var(--d2h-dark-del-border-color);color:var(--d2h-dark-del-label-color)}.d2h-dark-color-scheme .d2h-code-line del,.d2h-dark-color-scheme .d2h-code-side-line del{background-color:#f8514966;background-color:var(--d2h-dark-del-highlight-bg-color)}.d2h-dark-color-scheme .d2h-code-line ins,.d2h-dark-color-scheme .d2h-code-side-line ins{background-color:#2ea04366;background-color:var(--d2h-dark-ins-highlight-bg-color)}.d2h-dark-color-scheme .d2h-diff-tbody{border-color:#30363d;border-color:var(--d2h-dark-border-color)}.d2h-dark-color-scheme .d2h-code-side-linenumber{background-color:#0d1117;background-color:var(--d2h-dark-bg-color);border-color:#21262d;border-color:var(--d2h-dark-line-border-color);color:var(--d2h-dark-dim-color)}.d2h-dark-color-scheme .d2h-files-diff .d2h-code-side-emptyplaceholder,.d2h-dark-color-scheme .d2h-files-diff .d2h-emptyplaceholder{background-color:#6e76811a;background-color:var(--d2h-dark-empty-placeholder-bg-color);border-color:#30363d;border-color:var(--d2h-dark-empty-placeholder-border-color)}.d2h-dark-color-scheme .d2h-code-linenumber{background-color:#0d1117;background-color:var(--d2h-dark-bg-color);border-color:#21262d;border-color:var(--d2h-dark-line-border-color);color:var(--d2h-dark-dim-color)}.d2h-dark-color-scheme .d2h-del{background-color:#f851491a;background-color:var(--d2h-dark-del-bg-color);border-color:#f8514966;border-color:var(--d2h-dark-del-border-color)}.d2h-dark-color-scheme .d2h-ins{background-color:#2ea04326;background-color:var(--d2h-dark-ins-bg-color);border-color:#2ea04366;border-color:var(--d2h-dark-ins-border-color)}.d2h-dark-color-scheme .d2h-info{background-color:#388bfd1a;background-color:var(--d2h-dark-info-bg-color);border-color:#388bfd66;border-color:var(--d2h-dark-info-border-color);color:var(--d2h-dark-dim-color)}.d2h-dark-color-scheme .d2h-file-diff .d2h-del.d2h-change{background-color:#d2992233;background-color:var(--d2h-dark-change-del-color)}.d2h-dark-color-scheme .d2h-file-diff .d2h-ins.d2h-change{background-color:#2ea04340;background-color:var(--d2h-dark-change-ins-color)}.d2h-dark-color-scheme .d2h-file-wrapper{border:1px solid #30363d;border:1px solid var(--d2h-dark-border-color)}.d2h-dark-color-scheme .d2h-file-collapse{border:1px solid #0d1117;border:1px solid var(--d2h-dark-bg-color)}.d2h-dark-color-scheme .d2h-file-collapse.d2h-selected{background-color:#388bfd1a;background-color:var(--d2h-dark-selected-color)}.d2h-dark-color-scheme .d2h-file-list-wrapper a,.d2h-dark-color-scheme .d2h-file-list-wrapper a:visited{color:var(--d2h-dark-moved-label-color)}.d2h-dark-color-scheme .d2h-file-list>li{border-bottom:1px solid #0d1117;border-bottom:1px solid var(--d2h-dark-bg-color)}.d2h-dark-color-scheme .d2h-deleted{color:var(--d2h-dark-del-label-color)}.d2h-dark-color-scheme .d2h-added{color:var(--d2h-dark-ins-label-color)}.d2h-dark-color-scheme .d2h-changed{color:var(--d2h-dark-change-label-color)}.d2h-dark-color-scheme .d2h-moved{color:var(--d2h-dark-moved-label-color)}.d2h-dark-color-scheme .d2h-tag{background-color:#0d1117;background-color:var(--d2h-dark-bg-color)}.d2h-dark-color-scheme .d2h-deleted-tag{border:1px solid #f85149;border:1px solid var(--d2h-dark-del-label-color)}.d2h-dark-color-scheme .d2h-added-tag{border:1px solid #3fb950;border:1px solid var(--d2h-dark-ins-label-color)}.d2h-dark-color-scheme .d2h-changed-tag{border:1px solid #d29922;border:1px solid var(--d2h-dark-change-label-color)}.d2h-dark-color-scheme .d2h-moved-tag{border:1px solid #3572b0;border:1px solid var(--d2h-dark-moved-label-color)}@media (prefers-color-scheme:dark){.d2h-auto-color-scheme{background-color:#0d1117;background-color:var(--d2h-dark-bg-color);color:var(--d2h-dark-color)}.d2h-auto-color-scheme .d2h-file-header{background-color:#161b22;background-color:var(--d2h-dark-file-header-bg-color);border-bottom:#30363d;border-bottom:var(--d2h-dark-file-header-border-color)}.d2h-auto-color-scheme .d2h-lines-added{border:1px solid #2ea04366;border:1px solid var(--d2h-dark-ins-border-color);color:var(--d2h-dark-ins-label-color)}.d2h-auto-color-scheme .d2h-lines-deleted{border:1px solid #f8514966;border:1px solid var(--d2h-dark-del-border-color);color:var(--d2h-dark-del-label-color)}.d2h-auto-color-scheme .d2h-code-line del,.d2h-auto-color-scheme .d2h-code-side-line del{background-color:#f8514966;background-color:var(--d2h-dark-del-highlight-bg-color)}.d2h-auto-color-scheme .d2h-code-line ins,.d2h-auto-color-scheme .d2h-code-side-line ins{background-color:#2ea04366;background-color:var(--d2h-dark-ins-highlight-bg-color)}.d2h-auto-color-scheme .d2h-diff-tbody{border-color:#30363d;border-color:var(--d2h-dark-border-color)}.d2h-auto-color-scheme .d2h-code-side-linenumber{background-color:#0d1117;background-color:var(--d2h-dark-bg-color);border-color:#21262d;border-color:var(--d2h-dark-line-border-color);color:var(--d2h-dark-dim-color)}.d2h-auto-color-scheme .d2h-files-diff .d2h-code-side-emptyplaceholder,.d2h-auto-color-scheme .d2h-files-diff .d2h-emptyplaceholder{background-color:#6e76811a;background-color:var(--d2h-dark-empty-placeholder-bg-color);border-color:#30363d;border-color:var(--d2h-dark-empty-placeholder-border-color)}.d2h-auto-color-scheme .d2h-code-linenumber{background-color:#0d1117;background-color:var(--d2h-dark-bg-color);border-color:#21262d;border-color:var(--d2h-dark-line-border-color);color:var(--d2h-dark-dim-color)}.d2h-auto-color-scheme .d2h-del{background-color:#f851491a;background-color:var(--d2h-dark-del-bg-color);border-color:#f8514966;border-color:var(--d2h-dark-del-border-color)}.d2h-auto-color-scheme .d2h-ins{background-color:#2ea04326;background-color:var(--d2h-dark-ins-bg-color);border-color:#2ea04366;border-color:var(--d2h-dark-ins-border-color)}.d2h-auto-color-scheme .d2h-info{background-color:#388bfd1a;background-color:var(--d2h-dark-info-bg-color);border-color:#388bfd66;border-color:var(--d2h-dark-info-border-color);color:var(--d2h-dark-dim-color)}.d2h-auto-color-scheme .d2h-file-diff .d2h-del.d2h-change{background-color:#d2992233;background-color:var(--d2h-dark-change-del-color)}.d2h-auto-color-scheme .d2h-file-diff .d2h-ins.d2h-change{background-color:#2ea04340;background-color:var(--d2h-dark-change-ins-color)}.d2h-auto-color-scheme .d2h-file-wrapper{border:1px solid #30363d;border:1px solid var(--d2h-dark-border-color)}.d2h-auto-color-scheme .d2h-file-collapse{border:1px solid #0d1117;border:1px solid var(--d2h-dark-bg-color)}.d2h-auto-color-scheme .d2h-file-collapse.d2h-selected{background-color:#388bfd1a;background-color:var(--d2h-dark-selected-color)}.d2h-auto-color-scheme .d2h-file-list-wrapper a,.d2h-auto-color-scheme .d2h-file-list-wrapper a:visited{color:var(--d2h-dark-moved-label-color)}.d2h-auto-color-scheme .d2h-file-list>li{border-bottom:1px solid #0d1117;border-bottom:1px solid var(--d2h-dark-bg-color)}.d2h-dark-color-scheme .d2h-deleted{color:var(--d2h-dark-del-label-color)}.d2h-auto-color-scheme .d2h-added{color:var(--d2h-dark-ins-label-color)}.d2h-auto-color-scheme .d2h-changed{color:var(--d2h-dark-change-label-color)}.d2h-auto-color-scheme .d2h-moved{color:var(--d2h-dark-moved-label-color)}.d2h-auto-color-scheme .d2h-tag{background-color:#0d1117;background-color:var(--d2h-dark-bg-color)}.d2h-auto-color-scheme .d2h-deleted-tag{border:1px solid #f85149;border:1px solid var(--d2h-dark-del-label-color)}.d2h-auto-color-scheme .d2h-added-tag{border:1px solid #3fb950;border:1px solid var(--d2h-dark-ins-label-color)}.d2h-auto-color-scheme .d2h-changed-tag{border:1px solid #d29922;border:1px solid var(--d2h-dark-change-label-color)}.d2h-auto-color-scheme .d2h-moved-tag{border:1px solid #3572b0;border:1px solid var(--d2h-dark-moved-label-color)}}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root{--gg-d2h-map:1;--d2h-bg-color:var(--color-editor-background);--d2h-border-color:var(--color-panel-border);--d2h-dim-color:var(--color-description-foreground);--d2h-line-border-color:var(--color-panel-border);--d2h-file-header-bg-color:var(--color-side-bar-section-header-background);--d2h-file-header-border-color:var(--color-panel-border);--d2h-info-bg-color:var(--color-side-bar-background);--d2h-info-border-color:var(--color-panel-border);--d2h-empty-placeholder-bg-color:var(--color-diff-diagonal-fill);--d2h-empty-placeholder-border-color:var(--color-panel-border);--d2h-selected-color:var(--color-list-active-selection-background);--d2h-ins-bg-color:var(--color-diff-inserted-background);--d2h-ins-highlight-bg-color:var(--color-diff-inserted-text-background);--d2h-ins-border-color:var(--color-diff-inserted-border);--d2h-ins-label-color:var(--color-git-added);--d2h-del-bg-color:var(--color-diff-removed-background);--d2h-del-highlight-bg-color:var(--color-diff-removed-text-background);--d2h-del-border-color:var(--color-diff-removed-border);--d2h-del-label-color:var(--color-git-deleted);--d2h-change-del-color:var(--color-diff-removed-background);--d2h-change-ins-color:var(--color-diff-inserted-background);--d2h-change-label-color:var(--color-git-modified);--d2h-moved-label-color:var(--color-text-link-foreground)}body{background-color:var(--color-editor-background);color:var(--color-editor-foreground)}.d2h-diff-table{font-family:var(--font-mono)}.d2h-file-header{display:none}.d2h-file-wrapper{border:none;margin-bottom:0}.d2h-code-linenumber,.d2h-files-diff .d2h-file-side-diff:first-child .d2h-code-side-linenumber{border-left:none}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-outline-style:solid}::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-outline-style:solid}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, -apple-system, "Segoe UI", "Noto Sans", "PingFang SC", "Microsoft YaHei", sans-serif;--font-mono:ui-monospace, "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-medium:500;--font-weight-semibold:600;--radius-xs:.125rem;--radius-sm:.25rem;--radius-md:.375rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-editor-background:var(--lightningcss-light,#fff)var(--lightningcss-dark,#1f1f1f);--color-editor-foreground:var(--lightningcss-light,#3b3b3b)var(--lightningcss-dark,#ccc);--color-side-bar-background:var(--lightningcss-light,#f8f8f8)var(--lightningcss-dark,#181818);--color-side-bar-section-header-background:var(--lightningcss-light,#f0f0f0)var(--lightningcss-dark,#202020);--color-title-bar-background:var(--lightningcss-light,#f8f8f8)var(--lightningcss-dark,#181818);--color-panel-border:var(--lightningcss-light,#e5e5e5)var(--lightningcss-dark,#2b2b2b);--color-description-foreground:var(--lightningcss-light,#6f6f6f)var(--lightningcss-dark,#9d9d9d);--color-focus-border:var(--lightningcss-light,#005fb8)var(--lightningcss-dark,#0078d4);--color-text-link-foreground:var(--lightningcss-light,#005fb8)var(--lightningcss-dark,#4daafc);--color-toolbar-hover-background:var(--lightningcss-light,#b8b8b84f)var(--lightningcss-dark,#5a5d5e4f);--color-list-hover-background:var(--lightningcss-light,#e8e8e8)var(--lightningcss-dark,#2a2d2e);--color-list-active-selection-background:var(--lightningcss-light,#e4e6f1)var(--lightningcss-dark,#04395e);--color-list-active-selection-foreground:var(--lightningcss-light,#000)var(--lightningcss-dark,#fff);--color-editor-find-match-highlight-background:#ea5c0054;--color-editor-range-highlight-background:var(--lightningcss-light,#fdff0033)var(--lightningcss-dark,#ffffff0d);--color-warning-background:var(--lightningcss-light,#fdf6d3)var(--lightningcss-dark,#352a05);--color-warning-border:#b89500;--color-git-modified:var(--lightningcss-light,#895503)var(--lightningcss-dark,#e2c08d);--color-git-deleted:var(--lightningcss-light,#ad0707)var(--lightningcss-dark,#c74e39);--color-git-added:var(--lightningcss-light,#587c0c)var(--lightningcss-dark,#81b88b);--color-git-untracked:var(--lightningcss-light,#007100)var(--lightningcss-dark,#73c991);--color-git-conflicting:var(--lightningcss-light,#ad0707)var(--lightningcss-dark,#e4676b);--color-scm-graph-history-item-ref:#59a4f9;--color-scm-graph-history-item-remote-ref:#b180d7;--color-diff-inserted-background:#9bb95533;--color-diff-inserted-text-background:#9bb95573;--color-diff-inserted-border:#9bb95580;--color-diff-removed-background:#ff000029;--color-diff-removed-text-background:#ff000052;--color-diff-removed-border:#ff000059;--color-diff-diagonal-fill:var(--lightningcss-light,#0000000f)var(--lightningcss-dark,#ffffff0f)}}@layer base{*,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}button:not(:disabled){cursor:pointer}*{scrollbar-width:thin}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-x-0{inset-inline:0}.inset-y-0{inset-block:0}.top-0{top:0}.top-2{top:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-9\.5{right:calc(var(--spacing) * 9.5)}.left-0{left:0}.left-1\/2{left:50%}.isolate{isolation:isolate}.-z-10{z-index:calc(10 * -1)}.z-10{z-index:10}.z-50{z-index:50}.mt-1{margin-top:var(--spacing)}.mr-0\.5{margin-right:calc(var(--spacing) * .5)}.mb-1{margin-bottom:var(--spacing)}.ml-1{margin-left:var(--spacing)}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-auto{margin-left:auto}.scrollbar-none::-webkit-scrollbar{display:none}.block{display:block}.contents{display:contents}.flex{display:flex}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.table{display:table}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.h-4{height:calc(var(--spacing) * 4)}.h-9{height:calc(var(--spacing) * 9)}.h-auto{height:auto}.h-full{height:100%}.h-screen{height:100vh}.max-h-110{max-height:calc(var(--spacing) * 110)}.min-h-0{min-height:0}.w-3{width:calc(var(--spacing) * 3)}.w-5{width:calc(var(--spacing) * 5)}.w-10{width:calc(var(--spacing) * 10)}.w-150{width:calc(var(--spacing) * 150)}.w-full{width:100%}.w-max{width:max-content}.max-w-32{max-width:calc(var(--spacing) * 32)}.max-w-60{max-width:calc(var(--spacing) * 60)}.max-w-64{max-width:calc(var(--spacing) * 64)}.max-w-\[calc\(100vw-2rem\)\]{max-width:calc(100vw - 2rem)}.max-w-full{max-width:100%}.min-w-0{min-width:0}.min-w-full{min-width:100%}.flex-1{flex:1}.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.resize{resize:both}.scrollbar-none{scrollbar-width:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.self-center{align-self:center}.self-end{align-self:flex-end}.self-stretch{align-self:stretch}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-x-auto{overflow-x:auto}.rounded-full{border-radius:2147483647px}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xs{border-radius:var(--radius-xs)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-editor-foreground{border-color:var(--color-editor-foreground)}.border-focus-border{border-color:var(--color-focus-border)}.border-panel-border{border-color:var(--color-panel-border)}.border-transparent{border-color:#0000}.border-warning-border{border-color:var(--color-warning-border)}.bg-current{background-color:currentColor}.bg-editor-background{background-color:var(--color-editor-background)}.bg-editor-find-match-highlight-background{background-color:var(--color-editor-find-match-highlight-background)}.bg-editor-range-highlight-background{background-color:var(--color-editor-range-highlight-background)}.bg-list-active-selection-background{background-color:var(--color-list-active-selection-background)}.bg-scm-graph-history-item-ref\/20{background-color:#59a4f933}@supports (color:color-mix(in lab, red, red)){.bg-scm-graph-history-item-ref\/20{background-color:color-mix(in oklab, var(--color-scm-graph-history-item-ref) 20%, transparent)}}.bg-scm-graph-history-item-remote-ref\/20{background-color:#b180d733}@supports (color:color-mix(in lab, red, red)){.bg-scm-graph-history-item-remote-ref\/20{background-color:color-mix(in oklab, var(--color-scm-graph-history-item-remote-ref) 20%, transparent)}}.bg-side-bar-background{background-color:var(--color-side-bar-background)}.bg-side-bar-section-header-background{background-color:var(--color-side-bar-section-header-background)}.bg-title-bar-background{background-color:var(--color-title-bar-background)}.bg-transparent{background-color:#0000}.bg-warning-background{background-color:var(--color-warning-background)}.checkerboard{background-image:repeating-conic-gradient(var(--color-diff-diagonal-fill) 0 25%, transparent 0 50%);background-size:16px 16px}.stroke-1{stroke-width:1px}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-4{padding:calc(var(--spacing) * 4)}.p-px{padding:1px}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pb-1{padding-bottom:var(--spacing)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-5{padding-left:calc(var(--spacing) * 5)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-sm\/6{font-size:var(--text-sm);line-height:calc(var(--spacing) * 6)}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-xs\/6{font-size:var(--text-xs);line-height:calc(var(--spacing) * 6)}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.text-description-foreground{color:var(--color-description-foreground)}.text-editor-foreground{color:var(--color-editor-foreground)}.text-git-added{color:var(--color-git-added)}.text-git-conflicting{color:var(--color-git-conflicting)}.text-git-deleted{color:var(--color-git-deleted)}.text-git-modified{color:var(--color-git-modified)}.text-git-untracked{color:var(--color-git-untracked)}.text-inherit{color:inherit}.text-list-active-selection-foreground{color:var(--color-list-active-selection-foreground)}.text-scm-graph-history-item-ref{color:var(--color-scm-graph-history-item-ref)}.text-scm-graph-history-item-remote-ref{color:var(--color-scm-graph-history-item-remote-ref)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.opacity-0{opacity:0}.opacity-60{opacity:.6}.opacity-75{opacity:.75}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.divider-b{box-shadow:inset 0 -1px var(--color-panel-border)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.group-focus-within\:opacity-100:is(:where(.group):focus-within *){opacity:1}@media (hover:hover){.group-hover\:flex:is(:where(.group):hover *){display:flex}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.group-has-focus-visible\:flex:is(:where(.group):has(:focus-visible) *){display:flex}.focus-within\:border-focus-border:focus-within{border-color:var(--color-focus-border)}@media (hover:hover){.hover\:bg-list-hover-background:hover{background-color:var(--color-list-hover-background)}.hover\:bg-toolbar-hover-background:hover{background-color:var(--color-toolbar-hover-background)}.hover\:text-editor-foreground:hover{color:var(--color-editor-foreground)}}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\:-outline-offset-2:focus-visible{outline-offset:calc(2px * -1)}.focus-visible\:outline-focus-border:focus-visible{outline-color:var(--color-focus-border)}.disabled\:cursor-default:disabled{cursor:default}@media (pointer:coarse){.pointer-coarse\:flex{display:flex}}.\[\&\>\*\]\:opacity-75>*{opacity:.75}.\[\&\>\*\:focus-visible\]\:opacity-100>:focus-visible,.\[\&\>\*\:hover\]\:opacity-100>:hover{opacity:1}}:root{--hljs-fg:var(--lightningcss-light,#24292e)var(--lightningcss-dark,#c9d1d9);--hljs-bg:var(--lightningcss-light,#fff)var(--lightningcss-dark,#0d1117);--hljs-keyword:var(--lightningcss-light,#d73a49)var(--lightningcss-dark,#ff7b72);--hljs-entity:var(--lightningcss-light,#6f42c1)var(--lightningcss-dark,#d2a8ff);--hljs-constant:var(--lightningcss-light,#005cc5)var(--lightningcss-dark,#79c0ff);--hljs-string:var(--lightningcss-light,#032f62)var(--lightningcss-dark,#a5d6ff);--hljs-variable:var(--lightningcss-light,#e36209)var(--lightningcss-dark,#ffa657);--hljs-comment:var(--lightningcss-light,#6a737d)var(--lightningcss-dark,#8b949e);--hljs-entity-tag:var(--lightningcss-light,#22863a)var(--lightningcss-dark,#7ee787);--hljs-heading:var(--lightningcss-light,#005cc5)var(--lightningcss-dark,#1f6feb);--hljs-list:var(--lightningcss-light,#735c0f)var(--lightningcss-dark,#f2cc60);--hljs-inserted:var(--lightningcss-light,#22863a)var(--lightningcss-dark,#aff5b4);--hljs-inserted-bg:var(--lightningcss-light,#f0fff4)var(--lightningcss-dark,#033a16);--hljs-deleted:var(--lightningcss-light,#b31d28)var(--lightningcss-dark,#ffdcd7);--hljs-deleted-bg:var(--lightningcss-light,#ffeef0)var(--lightningcss-dark,#67060c)}.hljs{color:var(--hljs-fg);background:var(--hljs-bg)}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:var(--hljs-keyword)}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:var(--hljs-entity)}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:var(--hljs-constant)}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:var(--hljs-string)}.hljs-built_in,.hljs-symbol{color:var(--hljs-variable)}.hljs-comment,.hljs-code,.hljs-formula{color:var(--hljs-comment)}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:var(--hljs-entity-tag)}.hljs-subst{color:var(--hljs-fg)}.hljs-section{color:var(--hljs-heading);font-weight:700}.hljs-bullet{color:var(--hljs-list)}.hljs-emphasis{color:var(--hljs-fg);font-style:italic}.hljs-strong{color:var(--hljs-fg);font-weight:700}.hljs-addition{color:var(--hljs-inserted);background-color:var(--hljs-inserted-bg)}.hljs-deletion{color:var(--hljs-deleted);background-color:var(--hljs-deleted-bg)}:host,:root{--d2h-bg-color:#fff;--d2h-border-color:#ddd;--d2h-dim-color:#0000004d;--d2h-line-border-color:#eee;--d2h-file-header-bg-color:#f7f7f7;--d2h-file-header-border-color:#d8d8d8;--d2h-empty-placeholder-bg-color:#f1f1f1;--d2h-empty-placeholder-border-color:#e1e1e1;--d2h-selected-color:#c8e1ff;--d2h-ins-bg-color:#dfd;--d2h-ins-border-color:#b4e2b4;--d2h-ins-highlight-bg-color:#97f295;--d2h-ins-label-color:#399839;--d2h-del-bg-color:#fee8e9;--d2h-del-border-color:#e9aeae;--d2h-del-highlight-bg-color:#ffb6ba;--d2h-del-label-color:#c33;--d2h-change-del-color:#fdf2d0;--d2h-change-ins-color:#ded;--d2h-info-bg-color:#f8fafd;--d2h-info-border-color:#d5e4f2;--d2h-change-label-color:#d0b44c;--d2h-moved-label-color:#3572b0;--d2h-dark-color:#e6edf3;--d2h-dark-bg-color:#0d1117;--d2h-dark-border-color:#30363d;--d2h-dark-dim-color:#6e7681;--d2h-dark-line-border-color:#21262d;--d2h-dark-file-header-bg-color:#161b22;--d2h-dark-file-header-border-color:#30363d;--d2h-dark-empty-placeholder-bg-color:#6e76811a;--d2h-dark-empty-placeholder-border-color:#30363d;--d2h-dark-selected-color:#388bfd1a;--d2h-dark-ins-bg-color:#2ea04326;--d2h-dark-ins-border-color:#2ea04366;--d2h-dark-ins-highlight-bg-color:#2ea04366;--d2h-dark-ins-label-color:#3fb950;--d2h-dark-del-bg-color:#f851491a;--d2h-dark-del-border-color:#f8514966;--d2h-dark-del-highlight-bg-color:#f8514966;--d2h-dark-del-label-color:#f85149;--d2h-dark-change-del-color:#d2992233;--d2h-dark-change-ins-color:#2ea04340;--d2h-dark-info-bg-color:#388bfd1a;--d2h-dark-info-border-color:#388bfd66;--d2h-dark-change-label-color:#d29922;--d2h-dark-moved-label-color:#3572b0}.d2h-wrapper{text-align:left}.d2h-file-header{background-color:#f7f7f7;background-color:var(--d2h-file-header-bg-color);border-bottom:1px solid #d8d8d8;border-bottom:1px solid var(--d2h-file-header-border-color);height:35px;padding:5px 10px;font-family:Source Sans Pro,Helvetica Neue,Helvetica,Arial,sans-serif;display:flex}.d2h-file-header.d2h-sticky-header{z-index:1;position:sticky;top:0}.d2h-file-stats{margin-left:auto;font-size:14px;display:flex}.d2h-lines-added{border:1px solid #b4e2b4;border:1px solid var(--d2h-ins-border-color);color:var(--d2h-ins-label-color);text-align:right;vertical-align:middle;border-radius:5px 0 0 5px;padding:2px}.d2h-lines-deleted{border:1px solid #e9aeae;border:1px solid var(--d2h-del-border-color);color:var(--d2h-del-label-color);text-align:left;vertical-align:middle;border-radius:0 5px 5px 0;margin-left:1px;padding:2px}.d2h-file-name-wrapper{align-items:center;width:100%;font-size:15px;display:flex}.d2h-file-name{text-overflow:ellipsis;white-space:nowrap;overflow-x:hidden}.d2h-file-wrapper{border:1px solid #ddd;border:1px solid var(--d2h-border-color);border-radius:3px;margin-bottom:1em}.d2h-file-collapse{cursor:pointer;border:1px solid #ddd;border:1px solid var(--d2h-border-color);border-radius:3px;justify-content:flex-end;align-items:center;padding:4px 8px;font-size:12px;display:none}.d2h-file-collapse.d2h-selected{background-color:#c8e1ff;background-color:var(--d2h-selected-color)}.d2h-file-collapse-input{margin:0 4px 0 0}.d2h-diff-table{border-collapse:collapse;width:100%;font-family:Menlo,Consolas,monospace;font-size:13px}.d2h-files-diff{width:100%;display:flex}.d2h-file-diff{overflow-y:hidden}.d2h-file-diff.d2h-d-none,.d2h-files-diff.d2h-d-none{display:none}.d2h-file-side-diff{width:50%;display:inline-block;overflow:scroll hidden}.d2h-code-line{width:calc(100% - 16em);padding:0 8em}.d2h-code-line,.d2h-code-side-line{-webkit-user-select:none;user-select:none;white-space:nowrap;display:inline-block}.d2h-code-side-line{width:calc(100% - 9em);padding:0 4.5em}.d2h-code-line-ctn{word-wrap:normal;-webkit-user-select:text;user-select:text;vertical-align:middle;white-space:pre;background:0 0;width:100%;padding:0;display:inline-block}.d2h-code-line del,.d2h-code-side-line del{background-color:#ffb6ba;background-color:var(--d2h-del-highlight-bg-color)}.d2h-code-line del,.d2h-code-line ins,.d2h-code-side-line del,.d2h-code-side-line ins{border-radius:.2em;margin-top:-1px;-webkit-text-decoration:none;text-decoration:none;display:inline-block}.d2h-code-line ins,.d2h-code-side-line ins{background-color:#97f295;background-color:var(--d2h-ins-highlight-bg-color);text-align:left}.d2h-code-line-prefix{word-wrap:normal;white-space:pre;background:0 0;padding:0;display:inline}.line-num1{float:left}.line-num1,.line-num2{box-sizing:border-box;text-overflow:ellipsis;width:3.5em;padding:0 .5em;overflow:hidden}.line-num2{float:right}.d2h-code-linenumber{background-color:#fff;background-color:var(--d2h-bg-color);border:solid #eee;border:solid var(--d2h-line-border-color);box-sizing:border-box;color:var(--d2h-dim-color);cursor:pointer;text-align:right;border-width:0 1px;width:7.5em;display:inline-block;position:absolute}.d2h-code-linenumber:after{content:""}.d2h-code-side-linenumber{background-color:#fff;background-color:var(--d2h-bg-color);border:solid #eee;border:solid var(--d2h-line-border-color);box-sizing:border-box;color:var(--d2h-dim-color);cursor:pointer;text-align:right;text-overflow:ellipsis;border-width:0 1px;width:4em;padding:0 .5em;display:inline-block;position:absolute;overflow:hidden}.d2h-code-side-linenumber:after{content:""}.d2h-code-side-emptyplaceholder,.d2h-emptyplaceholder{background-color:#f1f1f1;background-color:var(--d2h-empty-placeholder-bg-color);border-color:#e1e1e1;border-color:var(--d2h-empty-placeholder-border-color)}.d2h-code-line-prefix,.d2h-code-linenumber,.d2h-code-side-linenumber,.d2h-emptyplaceholder{-webkit-user-select:none;user-select:none}.d2h-code-linenumber,.d2h-code-side-linenumber{direction:rtl}.d2h-del{background-color:#fee8e9;background-color:var(--d2h-del-bg-color);border-color:#e9aeae;border-color:var(--d2h-del-border-color)}.d2h-ins{background-color:#dfd;background-color:var(--d2h-ins-bg-color);border-color:#b4e2b4;border-color:var(--d2h-ins-border-color)}.d2h-info{background-color:#f8fafd;background-color:var(--d2h-info-bg-color);border-color:#d5e4f2;border-color:var(--d2h-info-border-color);color:var(--d2h-dim-color)}.d2h-file-diff .d2h-del.d2h-change{background-color:#fdf2d0;background-color:var(--d2h-change-del-color)}.d2h-file-diff .d2h-ins.d2h-change{background-color:#ded;background-color:var(--d2h-change-ins-color)}.d2h-file-list-wrapper{margin-bottom:10px}.d2h-file-list-wrapper a{-webkit-text-decoration:none;text-decoration:none}.d2h-file-list-wrapper a,.d2h-file-list-wrapper a:visited{color:var(--d2h-moved-label-color)}.d2h-file-list-header{text-align:left}.d2h-file-list-title{font-weight:700}.d2h-file-list-line{text-align:left;display:flex}.d2h-file-list{margin:0;padding:0;list-style:none;display:block}.d2h-file-list>li{border-bottom:1px solid #ddd;border-bottom:1px solid var(--d2h-border-color);margin:0;padding:5px 10px}.d2h-file-list>li:last-child{border-bottom:none}.d2h-file-switch{cursor:pointer;font-size:10px;display:none}.d2h-icon{fill:currentColor;vertical-align:middle;margin-right:10px}.d2h-deleted{color:var(--d2h-del-label-color)}.d2h-added{color:var(--d2h-ins-label-color)}.d2h-changed{color:var(--d2h-change-label-color)}.d2h-moved{color:var(--d2h-moved-label-color)}.d2h-tag{background-color:#fff;background-color:var(--d2h-bg-color);margin-left:5px;padding:0 2px;font-size:10px;display:flex}.d2h-deleted-tag{border:1px solid #c33;border:1px solid var(--d2h-del-label-color)}.d2h-added-tag{border:1px solid #399839;border:1px solid var(--d2h-ins-label-color)}.d2h-changed-tag{border:1px solid #d0b44c;border:1px solid var(--d2h-change-label-color)}.d2h-moved-tag{border:1px solid #3572b0;border:1px solid var(--d2h-moved-label-color)}.d2h-dark-color-scheme{background-color:#0d1117;background-color:var(--d2h-dark-bg-color);color:var(--d2h-dark-color)}.d2h-dark-color-scheme .d2h-file-header{background-color:#161b22;background-color:var(--d2h-dark-file-header-bg-color);border-bottom:#30363d;border-bottom:var(--d2h-dark-file-header-border-color)}.d2h-dark-color-scheme .d2h-lines-added{border:1px solid #2ea04366;border:1px solid var(--d2h-dark-ins-border-color);color:var(--d2h-dark-ins-label-color)}.d2h-dark-color-scheme .d2h-lines-deleted{border:1px solid #f8514966;border:1px solid var(--d2h-dark-del-border-color);color:var(--d2h-dark-del-label-color)}.d2h-dark-color-scheme .d2h-code-line del,.d2h-dark-color-scheme .d2h-code-side-line del{background-color:#f8514966;background-color:var(--d2h-dark-del-highlight-bg-color)}.d2h-dark-color-scheme .d2h-code-line ins,.d2h-dark-color-scheme .d2h-code-side-line ins{background-color:#2ea04366;background-color:var(--d2h-dark-ins-highlight-bg-color)}.d2h-dark-color-scheme .d2h-diff-tbody{border-color:#30363d;border-color:var(--d2h-dark-border-color)}.d2h-dark-color-scheme .d2h-code-side-linenumber{background-color:#0d1117;background-color:var(--d2h-dark-bg-color);border-color:#21262d;border-color:var(--d2h-dark-line-border-color);color:var(--d2h-dark-dim-color)}.d2h-dark-color-scheme .d2h-files-diff .d2h-code-side-emptyplaceholder,.d2h-dark-color-scheme .d2h-files-diff .d2h-emptyplaceholder{background-color:#6e76811a;background-color:var(--d2h-dark-empty-placeholder-bg-color);border-color:#30363d;border-color:var(--d2h-dark-empty-placeholder-border-color)}.d2h-dark-color-scheme .d2h-code-linenumber{background-color:#0d1117;background-color:var(--d2h-dark-bg-color);border-color:#21262d;border-color:var(--d2h-dark-line-border-color);color:var(--d2h-dark-dim-color)}.d2h-dark-color-scheme .d2h-del{background-color:#f851491a;background-color:var(--d2h-dark-del-bg-color);border-color:#f8514966;border-color:var(--d2h-dark-del-border-color)}.d2h-dark-color-scheme .d2h-ins{background-color:#2ea04326;background-color:var(--d2h-dark-ins-bg-color);border-color:#2ea04366;border-color:var(--d2h-dark-ins-border-color)}.d2h-dark-color-scheme .d2h-info{background-color:#388bfd1a;background-color:var(--d2h-dark-info-bg-color);border-color:#388bfd66;border-color:var(--d2h-dark-info-border-color);color:var(--d2h-dark-dim-color)}.d2h-dark-color-scheme .d2h-file-diff .d2h-del.d2h-change{background-color:#d2992233;background-color:var(--d2h-dark-change-del-color)}.d2h-dark-color-scheme .d2h-file-diff .d2h-ins.d2h-change{background-color:#2ea04340;background-color:var(--d2h-dark-change-ins-color)}.d2h-dark-color-scheme .d2h-file-wrapper{border:1px solid #30363d;border:1px solid var(--d2h-dark-border-color)}.d2h-dark-color-scheme .d2h-file-collapse{border:1px solid #0d1117;border:1px solid var(--d2h-dark-bg-color)}.d2h-dark-color-scheme .d2h-file-collapse.d2h-selected{background-color:#388bfd1a;background-color:var(--d2h-dark-selected-color)}.d2h-dark-color-scheme .d2h-file-list-wrapper a,.d2h-dark-color-scheme .d2h-file-list-wrapper a:visited{color:var(--d2h-dark-moved-label-color)}.d2h-dark-color-scheme .d2h-file-list>li{border-bottom:1px solid #0d1117;border-bottom:1px solid var(--d2h-dark-bg-color)}.d2h-dark-color-scheme .d2h-deleted{color:var(--d2h-dark-del-label-color)}.d2h-dark-color-scheme .d2h-added{color:var(--d2h-dark-ins-label-color)}.d2h-dark-color-scheme .d2h-changed{color:var(--d2h-dark-change-label-color)}.d2h-dark-color-scheme .d2h-moved{color:var(--d2h-dark-moved-label-color)}.d2h-dark-color-scheme .d2h-tag{background-color:#0d1117;background-color:var(--d2h-dark-bg-color)}.d2h-dark-color-scheme .d2h-deleted-tag{border:1px solid #f85149;border:1px solid var(--d2h-dark-del-label-color)}.d2h-dark-color-scheme .d2h-added-tag{border:1px solid #3fb950;border:1px solid var(--d2h-dark-ins-label-color)}.d2h-dark-color-scheme .d2h-changed-tag{border:1px solid #d29922;border:1px solid var(--d2h-dark-change-label-color)}.d2h-dark-color-scheme .d2h-moved-tag{border:1px solid #3572b0;border:1px solid var(--d2h-dark-moved-label-color)}@media (prefers-color-scheme:dark){.d2h-auto-color-scheme{background-color:#0d1117;background-color:var(--d2h-dark-bg-color);color:var(--d2h-dark-color)}.d2h-auto-color-scheme .d2h-file-header{background-color:#161b22;background-color:var(--d2h-dark-file-header-bg-color);border-bottom:#30363d;border-bottom:var(--d2h-dark-file-header-border-color)}.d2h-auto-color-scheme .d2h-lines-added{border:1px solid #2ea04366;border:1px solid var(--d2h-dark-ins-border-color);color:var(--d2h-dark-ins-label-color)}.d2h-auto-color-scheme .d2h-lines-deleted{border:1px solid #f8514966;border:1px solid var(--d2h-dark-del-border-color);color:var(--d2h-dark-del-label-color)}.d2h-auto-color-scheme .d2h-code-line del,.d2h-auto-color-scheme .d2h-code-side-line del{background-color:#f8514966;background-color:var(--d2h-dark-del-highlight-bg-color)}.d2h-auto-color-scheme .d2h-code-line ins,.d2h-auto-color-scheme .d2h-code-side-line ins{background-color:#2ea04366;background-color:var(--d2h-dark-ins-highlight-bg-color)}.d2h-auto-color-scheme .d2h-diff-tbody{border-color:#30363d;border-color:var(--d2h-dark-border-color)}.d2h-auto-color-scheme .d2h-code-side-linenumber{background-color:#0d1117;background-color:var(--d2h-dark-bg-color);border-color:#21262d;border-color:var(--d2h-dark-line-border-color);color:var(--d2h-dark-dim-color)}.d2h-auto-color-scheme .d2h-files-diff .d2h-code-side-emptyplaceholder,.d2h-auto-color-scheme .d2h-files-diff .d2h-emptyplaceholder{background-color:#6e76811a;background-color:var(--d2h-dark-empty-placeholder-bg-color);border-color:#30363d;border-color:var(--d2h-dark-empty-placeholder-border-color)}.d2h-auto-color-scheme .d2h-code-linenumber{background-color:#0d1117;background-color:var(--d2h-dark-bg-color);border-color:#21262d;border-color:var(--d2h-dark-line-border-color);color:var(--d2h-dark-dim-color)}.d2h-auto-color-scheme .d2h-del{background-color:#f851491a;background-color:var(--d2h-dark-del-bg-color);border-color:#f8514966;border-color:var(--d2h-dark-del-border-color)}.d2h-auto-color-scheme .d2h-ins{background-color:#2ea04326;background-color:var(--d2h-dark-ins-bg-color);border-color:#2ea04366;border-color:var(--d2h-dark-ins-border-color)}.d2h-auto-color-scheme .d2h-info{background-color:#388bfd1a;background-color:var(--d2h-dark-info-bg-color);border-color:#388bfd66;border-color:var(--d2h-dark-info-border-color);color:var(--d2h-dark-dim-color)}.d2h-auto-color-scheme .d2h-file-diff .d2h-del.d2h-change{background-color:#d2992233;background-color:var(--d2h-dark-change-del-color)}.d2h-auto-color-scheme .d2h-file-diff .d2h-ins.d2h-change{background-color:#2ea04340;background-color:var(--d2h-dark-change-ins-color)}.d2h-auto-color-scheme .d2h-file-wrapper{border:1px solid #30363d;border:1px solid var(--d2h-dark-border-color)}.d2h-auto-color-scheme .d2h-file-collapse{border:1px solid #0d1117;border:1px solid var(--d2h-dark-bg-color)}.d2h-auto-color-scheme .d2h-file-collapse.d2h-selected{background-color:#388bfd1a;background-color:var(--d2h-dark-selected-color)}.d2h-auto-color-scheme .d2h-file-list-wrapper a,.d2h-auto-color-scheme .d2h-file-list-wrapper a:visited{color:var(--d2h-dark-moved-label-color)}.d2h-auto-color-scheme .d2h-file-list>li{border-bottom:1px solid #0d1117;border-bottom:1px solid var(--d2h-dark-bg-color)}.d2h-dark-color-scheme .d2h-deleted{color:var(--d2h-dark-del-label-color)}.d2h-auto-color-scheme .d2h-added{color:var(--d2h-dark-ins-label-color)}.d2h-auto-color-scheme .d2h-changed{color:var(--d2h-dark-change-label-color)}.d2h-auto-color-scheme .d2h-moved{color:var(--d2h-dark-moved-label-color)}.d2h-auto-color-scheme .d2h-tag{background-color:#0d1117;background-color:var(--d2h-dark-bg-color)}.d2h-auto-color-scheme .d2h-deleted-tag{border:1px solid #f85149;border:1px solid var(--d2h-dark-del-label-color)}.d2h-auto-color-scheme .d2h-added-tag{border:1px solid #3fb950;border:1px solid var(--d2h-dark-ins-label-color)}.d2h-auto-color-scheme .d2h-changed-tag{border:1px solid #d29922;border:1px solid var(--d2h-dark-change-label-color)}.d2h-auto-color-scheme .d2h-moved-tag{border:1px solid #3572b0;border:1px solid var(--d2h-dark-moved-label-color)}}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root{--gg-d2h-map:1;--d2h-bg-color:var(--color-editor-background);--d2h-border-color:var(--color-panel-border);--d2h-dim-color:var(--color-description-foreground);--d2h-line-border-color:var(--color-panel-border);--d2h-file-header-bg-color:var(--color-side-bar-section-header-background);--d2h-file-header-border-color:var(--color-panel-border);--d2h-info-bg-color:var(--color-side-bar-background);--d2h-info-border-color:var(--color-panel-border);--d2h-empty-placeholder-bg-color:var(--color-diff-diagonal-fill);--d2h-empty-placeholder-border-color:var(--color-panel-border);--d2h-selected-color:var(--color-list-active-selection-background);--d2h-ins-bg-color:var(--color-diff-inserted-background);--d2h-ins-highlight-bg-color:var(--color-diff-inserted-text-background);--d2h-ins-border-color:var(--color-diff-inserted-border);--d2h-ins-label-color:var(--color-git-added);--d2h-del-bg-color:var(--color-diff-removed-background);--d2h-del-highlight-bg-color:var(--color-diff-removed-text-background);--d2h-del-border-color:var(--color-diff-removed-border);--d2h-del-label-color:var(--color-git-deleted);--d2h-change-del-color:var(--color-diff-removed-background);--d2h-change-ins-color:var(--color-diff-inserted-background);--d2h-change-label-color:var(--color-git-modified);--d2h-moved-label-color:var(--color-text-link-foreground)}body{background-color:var(--color-editor-background);color:var(--color-editor-foreground)}.d2h-diff-table{font-family:var(--font-mono)}.d2h-file-header{display:none}.d2h-file-wrapper{border:none;margin-bottom:0}.d2h-code-linenumber,.d2h-files-diff .d2h-file-side-diff:first-child .d2h-code-side-linenumber{border-left:none}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}
|
|
3
3
|
/*$vite$:1*/
|