@savvy-web/silk 3.15.3 → 4.0.1

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.
@@ -1,9 +1,9 @@
1
1
  import { builtinModules, createRequire } from "node:module";
2
- import { CommentStyle, SectionId } from "@effected/templates";
3
2
  import { Context, Data, Effect, FileSystem, Layer, Option, Path, Result, Schema, SchemaIssue, SchemaTransformation } from "effect";
3
+ import { CommentStyle, SectionId } from "@effected/templates";
4
+ import { PublishTarget, PublishabilityDetector, WorkspaceDiscovery, WorkspaceSnapshots, WorkspaceStateSnapshot, Workspaces } from "@effected/workspaces";
4
5
  import * as path$1 from "node:path";
5
6
  import { basename, delimiter, dirname, isAbsolute, join, normalize, relative, resolve, sep } from "node:path";
6
- import { PublishTarget, PublishabilityDetector, WorkspaceDiscovery, WorkspaceSnapshots, WorkspaceStateSnapshot, Workspaces } from "@effected/workspaces";
7
7
  import * as fs$1 from "node:fs/promises";
8
8
  import * as util from "node:util";
9
9
  import { format, inspect, styleText } from "node:util";
@@ -75,7 +75,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
75
75
  var __require$1 = /* #__PURE__ */ (() => createRequire(import.meta.url))();
76
76
 
77
77
  //#endregion
78
- //#region ../silk-effects/dist/dev/pkg/errors/ChangesetConfigError.js
78
+ //#region ../silk-core/dist/dev/pkg/errors/ChangesetConfigError.js
79
79
  /**
80
80
  * Raised when the `.changeset/config.json` file cannot be read or decoded.
81
81
  *
@@ -93,7 +93,451 @@ var ChangesetConfigError = class extends Data.TaggedError("ChangesetConfigError"
93
93
  };
94
94
 
95
95
  //#endregion
96
- //#region ../silk-effects/dist/dev/pkg/schemas/VersioningSchemas.js
96
+ //#region ../silk-core/dist/dev/pkg/errors/PublishTargetBindingError.js
97
+ /**
98
+ * Raised when publishability detection selects a directory that the package's
99
+ * `dist/prod/targets.json` binding does not describe.
100
+ *
101
+ * @remarks
102
+ * The bundler's prod build writes `targets.json` naming every byte-group
103
+ * directory it produced. Once that binding exists it is authoritative: the only
104
+ * directories whose bytes may be published are the ones it lists. A detector
105
+ * that returns anything else — most often `publishConfig.directory` pointing at
106
+ * a **dev** build, because silk mode was misdetected — is about to pack an
107
+ * unresolved workspace manifest and ship it to a registry.
108
+ *
109
+ * That is the `yaml-effect@0.7.1` failure: detection picked `dist/dev/pkg`, the
110
+ * dev manifest still carried `catalog:` specifiers, and the published package
111
+ * was uninstallable (`EUNSUPPORTEDPROTOCOL`).
112
+ *
113
+ * @since 3.1.0
114
+ * @public
115
+ */
116
+ var PublishTargetBindingError = class extends Data.TaggedError("PublishTargetBindingError") {
117
+ get message() {
118
+ return `Package ${this.pkg} resolved publish directory "${this.directory}", which is not one of the directories bound by dist/prod/targets.json (${this.boundDirectories.join(", ")}). This means publishability detection did not select the prod build output — refusing to publish before packing an unresolved manifest.`;
119
+ }
120
+ };
121
+
122
+ //#endregion
123
+ //#region ../../node_modules/.pnpm/@effected+github-references@0.3.0_effect@4.0.0-rc.115/node_modules/@effected/github-references/IssueReferences.js
124
+ /**
125
+ * GitHub's closing-keyword issue-reference grammar, as pure functions.
126
+ *
127
+ * @remarks
128
+ * GitHub links an issue to a pull request when the PR's description carries
129
+ * `<keyword> #<number>` for one of nine documented keywords. Consumers speak
130
+ * that grammar in two distinct dialects, and this module models exactly those
131
+ * two — no service, no layer, nothing but strings in and values out:
132
+ *
133
+ * - **Inline-in-prose** ({@link harvestIssueReferences}): a reference may appear anywhere in
134
+ * running text — `"fixes #12 and closes #13"` — with mandatory whitespace
135
+ * and **no colon**, because that is the spelling GitHub itself scans PR
136
+ * bodies for. This is the dialect a release pipeline harvests from commit
137
+ * subjects and PR descriptions.
138
+ * - **Bare-line** ({@link parseBareLineReference}): the whole line, after trimming, *is*
139
+ * the reference — `"Closes: #12"` — with an **optional colon**, because a
140
+ * generated references region writes one reference per line and a colon
141
+ * reads better there. GitHub does not require the colon; the region format
142
+ * allows it, so the parser must too. The dialects differ because their
143
+ * producers do: prose is written by humans for GitHub's scanner, the region
144
+ * is written by tooling for humans.
145
+ *
146
+ * Deliberately out of scope this round: cross-repo references
147
+ * (`owner/repo#N`) and full-URL references
148
+ * (`https://github.com/owner/repo/issues/N`). Both are real GitHub spellings;
149
+ * neither dialect's consumers emit them yet, and guessing at their shape here
150
+ * would freeze an API nobody has driven.
151
+ */
152
+ /**
153
+ * The nine closing keywords GitHub documents, lowercased.
154
+ *
155
+ * @public
156
+ */
157
+ const CLOSING_KEYWORDS = [
158
+ "close",
159
+ "closes",
160
+ "closed",
161
+ "fix",
162
+ "fixes",
163
+ "fixed",
164
+ "resolve",
165
+ "resolves",
166
+ "resolved"
167
+ ];
168
+ /**
169
+ * Both patterns derive from {@link CLOSING_KEYWORDS} so the constant and the
170
+ * grammar cannot drift. Alternation order is safe: the regex engine backtracks
171
+ * through alternatives, so `close` matching inside `closes` fails at the
172
+ * mandatory `#`-introducer and retries the longer keyword.
173
+ */
174
+ const KEYWORDS = CLOSING_KEYWORDS.join("|");
175
+ /** Inline-in-prose: mandatory whitespace, no colon. */
176
+ const INLINE_PATTERN = new RegExp(`\\b(${KEYWORDS})\\s+#(\\d+)`, "gi");
177
+ /**
178
+ * Bare-line: optional colon, then mandatory same-line whitespace. `[ \t]`
179
+ * rather than `\s`, so an embedded newline cannot smuggle two lines past a
180
+ * parser whose contract is one.
181
+ */
182
+ const BARE_LINE_PATTERN = new RegExp(`^(${KEYWORDS}):?[ \\t]+#(\\d+)$`, "i");
183
+
184
+ //#endregion
185
+ //#region ../../node_modules/.pnpm/@effected+github-references@0.3.0_effect@4.0.0-rc.115/node_modules/@effected/github-references/ClosingList.js
186
+ /**
187
+ * The closing-list dialect: one whole line naming several issues at once.
188
+ *
189
+ * @remarks
190
+ * The third dialect, alongside the two in `IssueReferences`: after trimming,
191
+ * the **entire** line must be `<keyword>[:] <list>` — keyword
192
+ * case-insensitive (lowercased to canonical form in the result), colon
193
+ * optional, and the list one or more `#<digits>` items separated by `,`,
194
+ * `and`, or the Oxford `, and`. Whitespace inside the line is `[ \t]` only,
195
+ * so an embedded newline cannot smuggle two lines past a parser whose
196
+ * contract is one — the same posture as the bare-line pattern. Any trailing
197
+ * content after the list rejects the line; duplicates are preserved in order,
198
+ * because whether `#1, #1` means one issue or two is the caller's business.
199
+ *
200
+ * Two keyword sets play here. {@link parseClosingList} accepts only the nine
201
+ * closing keywords and yields a {@link ClosingList}; {@link parseReferenceList}
202
+ * additionally accepts the non-closing {@link REFERENCE_KEYWORDS} (`ref`,
203
+ * `refs`, `references`) and reports which set matched via
204
+ * {@link ReferenceList}'s `closing` flag.
205
+ *
206
+ * An item whose digits exceed `Number.MAX_SAFE_INTEGER` rejects the **whole
207
+ * line**, where `harvestIssueReferences` merely skips the one match. The
208
+ * asymmetry is deliberate: a harvest drops one reference out of running
209
+ * prose, but a list line is a single claim about a set of issues, and
210
+ * returning the parseable subset would misrepresent the line as claiming
211
+ * less than it does.
212
+ *
213
+ * Complexity posture: parsing is a single left-to-right character scan —
214
+ * this module contains **no regular expressions at all** — so worst-case
215
+ * time is linear in the line length by construction. There is no
216
+ * backtracking engine to feed, no polynomial blow-up for a scanner to flag,
217
+ * and therefore no input truncation.
218
+ *
219
+ * Beyond the whole-line parsers, {@link harvestReferenceLists} generalizes
220
+ * the same list grammar to the inline-in-prose posture — several lists on
221
+ * one line of running text — and {@link parseClosingLists} /
222
+ * {@link parseReferenceLists} apply the whole-line parsers per line of a
223
+ * multi-line text. All of them ride the same character scan; the no-regex
224
+ * promise above covers every export here.
225
+ */
226
+ /**
227
+ * The non-closing reference keywords the list dialect accepts, lowercased.
228
+ *
229
+ * @remarks
230
+ * GitHub does not act on these — they associate without closing — but a
231
+ * references region writes them, so the parser must read them.
232
+ *
233
+ * @public
234
+ */
235
+ const REFERENCE_KEYWORDS = [
236
+ "ref",
237
+ "refs",
238
+ "references"
239
+ ];
240
+ /**
241
+ * Both keyword tables ARE the exported constants — membership sets built from
242
+ * them once — so the constants and the grammar cannot drift.
243
+ */
244
+ const ALL_KEYWORDS = /* @__PURE__ */ new Set([...CLOSING_KEYWORDS, ...REFERENCE_KEYWORDS]);
245
+ /** Membership test for reporting `closing`, widened once so no call casts. */
246
+ const CLOSING_SET = new Set(CLOSING_KEYWORDS);
247
+ const HASH = 35;
248
+ const COLON = 58;
249
+ const COMMA = 44;
250
+ /** `[ \t]` — the only whitespace the dialect admits, per the module remarks. */
251
+ const isSpaceTab = (code) => code === 32 || code === 9;
252
+ const isDigit$2 = (code) => code >= 48 && code <= 57;
253
+ const isAsciiLetter = (code) => code >= 65 && code <= 90 || code >= 97 && code <= 122;
254
+ /** The index after the run of `[ \t]` starting at `from` (possibly `from` itself). */
255
+ const skipSpaceTab = (line, from) => {
256
+ let index = from;
257
+ while (index < line.length && isSpaceTab(line.charCodeAt(index))) index += 1;
258
+ return index;
259
+ };
260
+ /**
261
+ * One list item at exactly `from`: `#<digits>` and the index one past it.
262
+ * Digits exceeding `Number.MAX_SAFE_INTEGER` report `"unsafe"` rather than a
263
+ * silently rounded issue number, still carrying the index one past the digit
264
+ * run so a caller can skip the item's extent; the whole-line parsers reject
265
+ * on it and {@link harvestReferenceLists} abandons the entire candidate —
266
+ * see the module remarks for why a list never yields a partial reading.
267
+ * Anything that is not `#<digits>` at all is `undefined`.
268
+ */
269
+ const readItem = (line, from) => {
270
+ if (line.charCodeAt(from) !== HASH) return void 0;
271
+ const start = from + 1;
272
+ let index = start;
273
+ while (index < line.length && isDigit$2(line.charCodeAt(index))) index += 1;
274
+ if (index === start) return void 0;
275
+ const value = Number(line.slice(start, index));
276
+ return Number.isSafeInteger(value) ? {
277
+ kind: "item",
278
+ value,
279
+ next: index
280
+ } : {
281
+ kind: "unsafe",
282
+ next: index
283
+ };
284
+ };
285
+ /**
286
+ * One separator at exactly `from`: a comma with optional surrounding `[ \t]`
287
+ * and an optional Oxford `and` (consumed only when its own trailing `[ \t]+`
288
+ * is present), or a bare `and` requiring `[ \t]+` on both sides. `and` is
289
+ * lowercase-only — the keyword head is case-insensitive, the separator is
290
+ * not. Returns the index where the next item must start, or `undefined` when
291
+ * no separator is present.
292
+ */
293
+ const scanSeparator = (line, from) => {
294
+ const afterLeading = skipSpaceTab(line, from);
295
+ if (line.charCodeAt(afterLeading) === COMMA) {
296
+ const afterComma = skipSpaceTab(line, afterLeading + 1);
297
+ if (line.startsWith("and", afterComma)) {
298
+ const afterAnd = skipSpaceTab(line, afterComma + 3);
299
+ if (afterAnd > afterComma + 3) return afterAnd;
300
+ }
301
+ return afterComma;
302
+ }
303
+ if (afterLeading > from && line.startsWith("and", afterLeading)) {
304
+ const afterAnd = skipSpaceTab(line, afterLeading + 3);
305
+ if (afterAnd > afterLeading + 3) return afterAnd;
306
+ }
307
+ };
308
+ /**
309
+ * The scan walk: item, then separator, then item, until the cursor stands
310
+ * exactly at the end of the string. Anything else — a malformed item, an
311
+ * unknown separator, trailing content, an unsafe issue number — is
312
+ * `undefined`, and the caller rejects the whole line.
313
+ */
314
+ const parseItems = (line, from) => {
315
+ const issueNumbers = [];
316
+ let cursor = from;
317
+ for (;;) {
318
+ const item = readItem(line, cursor);
319
+ if (item === void 0 || item.kind === "unsafe") return void 0;
320
+ issueNumbers.push(item.value);
321
+ cursor = item.next;
322
+ if (cursor === line.length) return issueNumbers;
323
+ const next = scanSeparator(line, cursor);
324
+ if (next === void 0) return void 0;
325
+ cursor = next;
326
+ }
327
+ };
328
+ /**
329
+ * The list a whole line carries under either keyword set, or `Option.none()`.
330
+ *
331
+ * @remarks
332
+ * Accepts the nine closing keywords plus {@link REFERENCE_KEYWORDS}, and
333
+ * reports which set matched in the result's `closing` flag. Grammar,
334
+ * whole-line posture and the whole-line rejection of unsafe issue numbers
335
+ * are in the module remarks.
336
+ *
337
+ * @public
338
+ */
339
+ const parseReferenceList = (line) => {
340
+ const trimmed = line.trim();
341
+ let letters = 0;
342
+ while (letters < trimmed.length && isAsciiLetter(trimmed.charCodeAt(letters))) letters += 1;
343
+ if (letters === 0) return Option.none();
344
+ const keyword = trimmed.slice(0, letters).toLowerCase();
345
+ if (!ALL_KEYWORDS.has(keyword)) return Option.none();
346
+ let cursor = letters;
347
+ if (trimmed.charCodeAt(cursor) === COLON) cursor += 1;
348
+ const afterWhitespace = skipSpaceTab(trimmed, cursor);
349
+ if (afterWhitespace === cursor) return Option.none();
350
+ const issueNumbers = parseItems(trimmed, afterWhitespace);
351
+ if (issueNumbers === void 0) return Option.none();
352
+ return Option.some({
353
+ keyword,
354
+ closing: CLOSING_SET.has(keyword),
355
+ issueNumbers
356
+ });
357
+ };
358
+ /**
359
+ * Every reference list a text carries, line by line, across both postures.
360
+ *
361
+ * @remarks
362
+ * The trailer/prose interleave consumers otherwise hand-roll: each line is
363
+ * tried as a whole-line reference list first ({@link parseReferenceList} —
364
+ * colon-tolerant, per the line dialect), and only a line that is not one is
365
+ * harvested inline ({@link harvestReferenceLists} — no colon, per the inline
366
+ * dialect). The preference means a colon-less trailer line contributes its
367
+ * list exactly once, never once per posture.
368
+ *
369
+ * Results carry no offsets, deliberately: this is the line-granular
370
+ * composition, and a consumer that needs spans uses
371
+ * {@link harvestReferenceLists} directly. Duplicates are preserved, in
372
+ * document order.
373
+ *
374
+ * @public
375
+ */
376
+ const collectReferenceLists = (text) => {
377
+ const lists = [];
378
+ for (const line of text.split("\n")) {
379
+ const whole = parseReferenceList(line);
380
+ if (Option.isSome(whole)) {
381
+ lists.push(whole.value);
382
+ continue;
383
+ }
384
+ for (const harvested of harvestReferenceLists(line)) lists.push({
385
+ keyword: harvested.keyword,
386
+ closing: harvested.closing,
387
+ issueNumbers: harvested.issueNumbers
388
+ });
389
+ }
390
+ return lists;
391
+ };
392
+ /** `[A-Za-z0-9_]` — the word-boundary alphabet the inline dialects use. */
393
+ const isWordChar = (code) => isAsciiLetter(code) || isDigit$2(code) || code === 95;
394
+ /**
395
+ * The full JavaScript `\s` set, spelled as a predicate so the module keeps
396
+ * its no-regex promise: ASCII whitespace, NEL-adjacent controls, and the
397
+ * Unicode space separators. Only the keyword→first-item gap of
398
+ * {@link harvestReferenceLists} admits this set — everything inside a list
399
+ * stays `[ \t]`, per the module remarks.
400
+ */
401
+ const isAnyWhitespace = (code) => code === 32 || code >= 9 && code <= 13 || code === 160 || code === 5760 || code >= 8192 && code <= 8202 || code === 8232 || code === 8233 || code === 8239 || code === 8287 || code === 12288 || code === 65279;
402
+ /**
403
+ * Every reference list found inline in `text`, in document order.
404
+ *
405
+ * @remarks
406
+ * The inline-in-prose posture generalized to lists:
407
+ * `Closes #123, Fixes #456` in one line of a commit body yields two
408
+ * single-item lists, where
409
+ * `harvestIssueReferences` reads only the first reference of each and the
410
+ * whole-line parsers read neither. The grammar per candidate:
411
+ *
412
+ * - The keyword is case-insensitive, drawn from either keyword set,
413
+ * lowercased to canonical form in the result, with `closing` reported by
414
+ * set membership. Word boundaries hold on both sides: the characters
415
+ * immediately before and after the keyword's letter run must not be
416
+ * `[A-Za-z0-9_]`, so `recloses #1` and `1closes #1` do not match.
417
+ * - **No colon** — exactly like `harvestIssueReferences`, the colon spelling
418
+ * belongs to the line dialects ({@link parseReferenceList} and the
419
+ * bare-line parser), so `closes: #1` inline yields nothing.
420
+ * - The keyword→first-item gap is any run of whitespace **including
421
+ * newlines**, mirroring the inline dialect's `\s+`.
422
+ * - List continuation uses the `,` / `and` / Oxford separators with `[ \t]`
423
+ * whitespace only, so a list cannot continue past a newline — a later
424
+ * line makes its own claims.
425
+ * - Items are `#<digits>`; duplicates are preserved in order.
426
+ *
427
+ * A list ends at its last valid item: in `closes #1 and fixes #2` the
428
+ * ` and ` before `fixes` fails as a separator because what follows is not
429
+ * `#`, so the text yields `closes: [1]` then `fixes: [2]`. An item past
430
+ * `Number.MAX_SAFE_INTEGER` anywhere in a candidate skips the **entire**
431
+ * candidate — never a partial list, for the same reason
432
+ * {@link parseReferenceList} rejects the whole line — and scanning resumes
433
+ * after the candidate's scanned extent.
434
+ *
435
+ * Like everything in this module, the harvest is a single left-to-right
436
+ * character scan with no regular expressions, so time stays linear in the
437
+ * text length and no input is truncated.
438
+ *
439
+ * @public
440
+ */
441
+ const harvestReferenceLists = (text) => {
442
+ const lists = [];
443
+ let index = 0;
444
+ while (index < text.length) {
445
+ if (!isAsciiLetter(text.charCodeAt(index))) {
446
+ index += 1;
447
+ continue;
448
+ }
449
+ const runStart = index;
450
+ let runEnd = index + 1;
451
+ while (runEnd < text.length && isAsciiLetter(text.charCodeAt(runEnd))) runEnd += 1;
452
+ if (runStart > 0 && isWordChar(text.charCodeAt(runStart - 1)) || runEnd < text.length && isWordChar(text.charCodeAt(runEnd))) {
453
+ index = runEnd;
454
+ continue;
455
+ }
456
+ const keyword = text.slice(runStart, runEnd).toLowerCase();
457
+ if (!ALL_KEYWORDS.has(keyword)) {
458
+ index = runEnd;
459
+ continue;
460
+ }
461
+ let cursor = runEnd;
462
+ while (cursor < text.length && isAnyWhitespace(text.charCodeAt(cursor))) cursor += 1;
463
+ const first = cursor === runEnd ? void 0 : readItem(text, cursor);
464
+ if (first === void 0) {
465
+ index = runEnd;
466
+ continue;
467
+ }
468
+ if (first.kind === "unsafe") {
469
+ index = first.next;
470
+ continue;
471
+ }
472
+ const issueNumbers = [first.value];
473
+ let end = first.next;
474
+ let unsafeNext;
475
+ for (;;) {
476
+ const next = scanSeparator(text, end);
477
+ if (next === void 0) break;
478
+ const item = readItem(text, next);
479
+ if (item === void 0) break;
480
+ if (item.kind === "unsafe") {
481
+ unsafeNext = item.next;
482
+ break;
483
+ }
484
+ issueNumbers.push(item.value);
485
+ end = item.next;
486
+ }
487
+ if (unsafeNext !== void 0) {
488
+ index = unsafeNext;
489
+ continue;
490
+ }
491
+ lists.push({
492
+ keyword,
493
+ closing: CLOSING_SET.has(keyword),
494
+ issueNumbers,
495
+ start: runStart,
496
+ end
497
+ });
498
+ index = end;
499
+ }
500
+ return lists;
501
+ };
502
+
503
+ //#endregion
504
+ //#region ../../node_modules/.pnpm/@effected+github-references@0.3.0_effect@4.0.0-rc.115/node_modules/@effected/github-references/KeywordFamily.js
505
+ /**
506
+ * The projection table IS the totality proof: `Record` over the union of
507
+ * both keyword types makes a keyword added to either constant without an
508
+ * entry here fail to compile.
509
+ */
510
+ const FAMILIES = {
511
+ close: "close",
512
+ closes: "close",
513
+ closed: "close",
514
+ fix: "fix",
515
+ fixes: "fix",
516
+ fixed: "fix",
517
+ resolve: "resolve",
518
+ resolves: "resolve",
519
+ resolved: "resolve",
520
+ ref: "ref",
521
+ refs: "ref",
522
+ references: "ref"
523
+ };
524
+ /**
525
+ * The family a keyword belongs to.
526
+ *
527
+ * @remarks
528
+ * Total over both keyword sets by construction — see the module remarks for
529
+ * why an explicit record beats a `startsWith` heuristic. `close`, `closes`
530
+ * and `closed` map to `"close"`; the `fix` and `resolve` conjugations
531
+ * likewise; `ref`, `refs` and `references` map to `"ref"`. The evidence for
532
+ * the projection is downstream: categorized harvesters key maps by family,
533
+ * and each was hand-rolling this collapse.
534
+ *
535
+ * @public
536
+ */
537
+ const keywordFamily = (keyword) => FAMILIES[keyword];
538
+
539
+ //#endregion
540
+ //#region ../silk-core/dist/dev/pkg/schemas/VersioningSchemas.js
97
541
  /**
98
542
  * Configuration for how private packages are handled during versioning.
99
543
  *
@@ -165,7 +609,7 @@ const ChangesetConfigFile = Schema.Struct({
165
609
  *
166
610
  * @remarks
167
611
  * Extends {@link (ChangesetConfigFile:type)} with a `_isSilk` marker flag that is automatically
168
- * set to `true`. Detected by {@link ChangesetConfigReader} when the `changelog` field
612
+ * set to `true`. Detected by `ChangesetConfigReader` when the `changelog` field
169
613
  * references `@savvy-web/changesets`.
170
614
  *
171
615
  * @since 0.1.0
@@ -176,6 +620,26 @@ const SilkChangesetConfigFile = Schema.Struct({
176
620
  _isSilk: Schema.Boolean.pipe(Schema.withDecodingDefaultType(Effect.succeed(true)), Schema.withConstructorDefault(Effect.succeed(true)))
177
621
  });
178
622
 
623
+ //#endregion
624
+ //#region ../silk-core/dist/dev/pkg/utils/TrailingSlash.js
625
+ /**
626
+ * Trim trailing slashes from a string.
627
+ *
628
+ * @remarks
629
+ * Trims trailing slashes with an index scan rather than `/\/+$/`. That regex is
630
+ * unanchored at the start, so the engine retries the match from every position
631
+ * and degrades to O(n²) on a string of many slashes (CodeQL `js/polynomial-redos`).
632
+ * Only a trailing run of slashes is removed; interior slash runs are untouched.
633
+ *
634
+ * @since 0.1.0
635
+ * @public
636
+ */
637
+ const trimTrailingSlashes = (s) => {
638
+ let end = s.length;
639
+ while (end > 0 && s[end - 1] === "/") end -= 1;
640
+ return s.slice(0, end);
641
+ };
642
+
179
643
  //#endregion
180
644
  //#region ../silk-effects/dist/dev/pkg/services/ChangesetConfigReader.js
181
645
  /**
@@ -206,8 +670,8 @@ function isSilkChangelog(changelog) {
206
670
  *
207
671
  * @remarks
208
672
  * Automatically detects whether the config uses the Silk changelog adapter
209
- * (`@savvy-web/changesets`) and decodes as {@link (SilkChangesetConfigFile:type)} or the
210
- * standard {@link (ChangesetConfigFile:type)} accordingly.
673
+ * (`@savvy-web/changesets`) and decodes as `SilkChangesetConfigFile` or the
674
+ * standard `ChangesetConfigFile` accordingly.
211
675
  *
212
676
  * @example
213
677
  * ```typescript
@@ -285,33 +749,6 @@ var ChangesetConfigReader = class extends Context.Service()("@savvy-web/silk-eff
285
749
  }));
286
750
  };
287
751
 
288
- //#endregion
289
- //#region ../silk-effects/dist/dev/pkg/errors/PublishTargetBindingError.js
290
- /**
291
- * Raised when publishability detection selects a directory that the package's
292
- * `dist/prod/targets.json` binding does not describe.
293
- *
294
- * @remarks
295
- * The bundler's prod build writes `targets.json` naming every byte-group
296
- * directory it produced. Once that binding exists it is authoritative: the only
297
- * directories whose bytes may be published are the ones it lists. A detector
298
- * that returns anything else — most often `publishConfig.directory` pointing at
299
- * a **dev** build, because silk mode was misdetected — is about to pack an
300
- * unresolved workspace manifest and ship it to a registry.
301
- *
302
- * That is the `yaml-effect@0.7.1` failure: detection picked `dist/dev/pkg`, the
303
- * dev manifest still carried `catalog:` specifiers, and the published package
304
- * was uninstallable (`EUNSUPPORTEDPROTOCOL`).
305
- *
306
- * @since 3.1.0
307
- * @public
308
- */
309
- var PublishTargetBindingError = class extends Data.TaggedError("PublishTargetBindingError") {
310
- get message() {
311
- return `Package ${this.pkg} resolved publish directory "${this.directory}", which is not one of the directories bound by dist/prod/targets.json (${this.boundDirectories.join(", ")}). This means publishability detection did not select the prod build output — refusing to publish before packing an unresolved manifest.`;
312
- }
313
- };
314
-
315
752
  //#endregion
316
753
  //#region ../silk-effects/dist/dev/pkg/services/ChangesetConfig.js
317
754
  const isSilk = (cfg) => "_isSilk" in cfg && cfg._isSilk === true;
@@ -389,23 +826,6 @@ var ChangesetConfig = class ChangesetConfig extends Context.Service()("@savvy-we
389
826
  }));
390
827
  };
391
828
 
392
- //#endregion
393
- //#region ../silk-effects/dist/dev/pkg/utils/TrailingSlash.js
394
- /**
395
- * Trim trailing slashes from a string.
396
- *
397
- * @remarks
398
- * Trims trailing slashes with an index scan rather than `/\/+$/`. That regex is
399
- * unanchored at the start, so the engine retries the match from every position
400
- * and degrades to O(n²) on a string of many slashes (CodeQL `js/polynomial-redos`).
401
- * Only a trailing run of slashes is removed; interior slash runs are untouched.
402
- */
403
- const trimTrailingSlashes = (s) => {
404
- let end = s.length;
405
- while (end > 0 && s[end - 1] === "/") end -= 1;
406
- return s.slice(0, end);
407
- };
408
-
409
829
  //#endregion
410
830
  //#region ../silk-effects/dist/dev/pkg/services/SilkPublishability.js
411
831
  const NPM_DEFAULT = "https://registry.npmjs.org/";
@@ -529,7 +949,7 @@ var SilkPublishability = class SilkPublishability {
529
949
  * directories it names. A directory outside the binding means detection did
530
950
  * not select the prod output — the `yaml-effect@0.7.1` shape, where a dev
531
951
  * manifest carrying `catalog:` specifiers was packed and published. Rather
532
- * than ship those bytes, fail with {@link PublishTargetBindingError}.
952
+ * than ship those bytes, fail with `PublishTargetBindingError`.
533
953
  *
534
954
  * Before the prod build runs there is no binding, and the detector's
535
955
  * placeholder directories are left alone.
@@ -2671,6 +3091,67 @@ function makeGitHubTest(responses) {
2671
3091
  } });
2672
3092
  }
2673
3093
 
3094
+ //#endregion
3095
+ //#region ../silk-effects/dist/dev/pkg/changesets/utils/logger.js
3096
+ /**
3097
+ * Warning output for changelog generation, parameterised by a
3098
+ * {@link ChangesetLogMode} reference instead of an ambient environment read.
3099
+ *
3100
+ * @remarks
3101
+ * This module is engine code shared by every front end, so it must not read
3102
+ * `process` — a `process.env` read here would bake one host's environment
3103
+ * into every other. The mode is a `Context.Reference` with a default of
3104
+ * `"stderr"`; a front end that knows it runs under GitHub Actions or a test
3105
+ * runner provides `"github"` or `"silent"` from its own `process.env` read.
3106
+ *
3107
+ * @packageDocumentation
3108
+ */
3109
+ /**
3110
+ * The reference that selects the {@link ChangesetLogModeValue}.
3111
+ *
3112
+ * @remarks
3113
+ * Defaults to `"stderr"` when no front end provides it, so a program that
3114
+ * never touches the reference still reports. Provide with
3115
+ * `Layer.succeed(ChangesetLogMode, "github")` or
3116
+ * `Effect.provideService(ChangesetLogMode, "silent")`.
3117
+ *
3118
+ * @example
3119
+ * ```typescript
3120
+ * import { Effect } from "effect";
3121
+ * import { Changesets } from "\@savvy-web/silk-effects";
3122
+ *
3123
+ * const mode = process.env.GITHUB_ACTIONS === "true" ? "github" : "stderr";
3124
+ * program.pipe(Effect.provideService(Changesets.ChangesetLogMode, mode));
3125
+ * ```
3126
+ *
3127
+ * @public
3128
+ */
3129
+ const ChangesetLogMode = Context.Reference("@savvy-web/silk-effects/Changesets/ChangesetLogMode", { defaultValue: () => "stderr" });
3130
+ /**
3131
+ * Log a warning message according to the {@link ChangesetLogMode} in context.
3132
+ *
3133
+ * @param message - The warning message
3134
+ * @param args - Additional arguments (concatenated with a space in `"github"` mode)
3135
+ * @returns An `Effect` that never fails
3136
+ *
3137
+ * @internal
3138
+ */
3139
+ function logWarning(message, ...args) {
3140
+ return Effect.gen(function* () {
3141
+ switch (yield* ChangesetLogMode) {
3142
+ case "silent": return;
3143
+ case "github": {
3144
+ const text = args.length > 0 ? `${message} ${args.join(" ")}` : message;
3145
+ console.warn(`::warning::${text}`);
3146
+ return;
3147
+ }
3148
+ case "stderr":
3149
+ console.warn(message, ...args);
3150
+ return;
3151
+ }
3152
+ });
3153
+ }
3154
+
2674
3155
  //#endregion
2675
3156
  //#region ../silk-effects/dist/dev/pkg/changesets/schemas/primitives.js
2676
3157
  /**
@@ -2953,7 +3434,7 @@ const DependencyTableRowSchema = Schema.Struct({
2953
3434
  const DependencyTableSchema = Schema.Array(DependencyTableRowSchema).check(Schema.isMinLength(1));
2954
3435
 
2955
3436
  //#endregion
2956
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/MarkdownNode.js
3437
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/MarkdownNode.js
2957
3438
  /**
2958
3439
  * A single point in a source document: 1-based `line` and `column`, 0-based
2959
3440
  * `offset`.
@@ -3760,7 +4241,7 @@ const MarkdownNode = Schema.suspend(() => Schema.Union([
3760
4241
  ]));
3761
4242
 
3762
4243
  //#endregion
3763
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/blocks/frontmatter.js
4244
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/blocks/frontmatter.js
3764
4245
  const FENCES = /* @__PURE__ */ new Map([
3765
4246
  ["---", {
3766
4247
  format: "yaml",
@@ -3994,7 +4475,7 @@ function evaluateNode(node, depth) {
3994
4475
  //#region ../../node_modules/.pnpm/@effected+jsonc@0.11.0_effect@4.0.0-rc.115/node_modules/@effected/jsonc/internal/scanner.js
3995
4476
  const isWhitespace = (ch) => ch === 32 || ch === 9 || ch === 11 || ch === 12 || ch === 160 || ch === 65279;
3996
4477
  const isLineBreak$1 = (ch) => ch === 10 || ch === 13 || ch === 8232 || ch === 8233;
3997
- const isDigit$2 = (ch) => ch >= 48 && ch <= 57;
4478
+ const isDigit$1 = (ch) => ch >= 48 && ch <= 57;
3998
4479
  /**
3999
4480
  * Create a stateful {@link Scanner} for the given JSONC string.
4000
4481
  *
@@ -4099,31 +4580,31 @@ const createScanner$1 = (text, ignoreTrivia = false) => {
4099
4580
  if (text.charCodeAt(pos) === 45) pos++;
4100
4581
  if (text.charCodeAt(pos) === 48) pos++;
4101
4582
  else {
4102
- if (!isDigit$2(text.charCodeAt(pos))) {
4583
+ if (!isDigit$1(text.charCodeAt(pos))) {
4103
4584
  tokenError = "UnexpectedEndOfNumber";
4104
4585
  return text.substring(start, pos);
4105
4586
  }
4106
4587
  pos++;
4107
- while (pos < len && isDigit$2(text.charCodeAt(pos))) pos++;
4588
+ while (pos < len && isDigit$1(text.charCodeAt(pos))) pos++;
4108
4589
  }
4109
4590
  if (pos < len && text.charCodeAt(pos) === 46) {
4110
4591
  pos++;
4111
- if (!isDigit$2(text.charCodeAt(pos))) {
4592
+ if (!isDigit$1(text.charCodeAt(pos))) {
4112
4593
  tokenError = "UnexpectedEndOfNumber";
4113
4594
  return text.substring(start, pos);
4114
4595
  }
4115
4596
  pos++;
4116
- while (pos < len && isDigit$2(text.charCodeAt(pos))) pos++;
4597
+ while (pos < len && isDigit$1(text.charCodeAt(pos))) pos++;
4117
4598
  }
4118
4599
  if (pos < len && (text.charCodeAt(pos) === 69 || text.charCodeAt(pos) === 101)) {
4119
4600
  pos++;
4120
4601
  if (pos < len && (text.charCodeAt(pos) === 43 || text.charCodeAt(pos) === 45)) pos++;
4121
- if (!isDigit$2(text.charCodeAt(pos))) {
4602
+ if (!isDigit$1(text.charCodeAt(pos))) {
4122
4603
  tokenError = "UnexpectedEndOfNumber";
4123
4604
  return text.substring(start, pos);
4124
4605
  }
4125
4606
  pos++;
4126
- while (pos < len && isDigit$2(text.charCodeAt(pos))) pos++;
4607
+ while (pos < len && isDigit$1(text.charCodeAt(pos))) pos++;
4127
4608
  }
4128
4609
  return text.substring(start, pos);
4129
4610
  };
@@ -4229,7 +4710,7 @@ const createScanner$1 = (text, ignoreTrivia = false) => {
4229
4710
  return token;
4230
4711
  }
4231
4712
  case 45:
4232
- if (pos + 1 < len && isDigit$2(text.charCodeAt(pos + 1))) {
4713
+ if (pos + 1 < len && isDigit$1(text.charCodeAt(pos + 1))) {
4233
4714
  tokenValue = scanNumber();
4234
4715
  token = "Number";
4235
4716
  return token;
@@ -4240,7 +4721,7 @@ const createScanner$1 = (text, ignoreTrivia = false) => {
4240
4721
  tokenError = "InvalidSymbol";
4241
4722
  return token;
4242
4723
  default:
4243
- if (isDigit$2(ch)) {
4724
+ if (isDigit$1(ch)) {
4244
4725
  tokenValue = scanNumber();
4245
4726
  token = "Number";
4246
4727
  return token;
@@ -5635,7 +6116,7 @@ var JsoncModifier = class {
5635
6116
  };
5636
6117
 
5637
6118
  //#endregion
5638
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/carriers.js
6119
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/carriers.js
5639
6120
  /**
5640
6121
  * P1's error-code vocabulary. Widens as later phases add parse-error kinds;
5641
6122
  * P1 registers exactly one, the hardening-guard trip.
@@ -5676,7 +6157,7 @@ var GuardExceeded$1 = class extends Error {
5676
6157
  const isGuardExceeded$1 = (u) => u instanceof GuardExceeded$1;
5677
6158
 
5678
6159
  //#endregion
5679
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/MarkdownDiagnostic.js
6160
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/MarkdownDiagnostic.js
5680
6161
  /**
5681
6162
  * Error codes `Markdown.parse`/`MarkdownDocument.parse` can fail with. P1
5682
6163
  * registers exactly the hardening-guard trip; later phases widen the union
@@ -5757,7 +6238,7 @@ function lineChar(text, offset) {
5757
6238
  }
5758
6239
 
5759
6240
  //#endregion
5760
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/blockTypes.js
6241
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/blockTypes.js
5761
6242
  /** Narrow materialized children to the flow content most constructs contain. */
5762
6243
  const flowChildren = (children) => children.filter((child) => child.type !== "root" && child.type !== "listItem" && child.type !== "tableRow" && child.type !== "tableCell");
5763
6244
  /** Narrow materialized children to the list items a list contains. */
@@ -5783,7 +6264,7 @@ const makeBlockNode = (type, startOffset, startLine, depth = 0) => ({
5783
6264
  });
5784
6265
 
5785
6266
  //#endregion
5786
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/preprocess.js
6267
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/preprocess.js
5787
6268
  /**
5788
6269
  * Split `text` into lines, preserving each line's absolute start offset.
5789
6270
  *
@@ -5838,7 +6319,7 @@ const peekCode = (line, position) => position >= 0 && position < line.length ? l
5838
6319
  const columnsToNextTabStop = (column) => 4 - column % 4;
5839
6320
 
5840
6321
  //#endregion
5841
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/htmlTags.js
6322
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/htmlTags.js
5842
6323
  const TAGNAME = "[A-Za-z][A-Za-z0-9-]*";
5843
6324
  /** An opening tag, with any attributes and an optional self-closing slash. */
5844
6325
  const OPENTAG = `<${TAGNAME}(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*(?:[^"'=<>\`\\x00-\\x20]+|'[^']*'|"[^"]*"))?)*\\s*/?>`;
@@ -5850,7 +6331,7 @@ const HTMLTAG = `(?:${OPENTAG}|${CLOSETAG}|<!-->|<!--->|<!--[\\s\\S]*?-->|[<][?]
5850
6331
  const reHtmlTag = new RegExp(`^${HTMLTAG}`);
5851
6332
 
5852
6333
  //#endregion
5853
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/blocks/htmlBlock.js
6334
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/blocks/htmlBlock.js
5854
6335
  const C_LESSTHAN$3 = 60;
5855
6336
  const reHtmlBlockOpen = [
5856
6337
  /./,
@@ -5917,7 +6398,7 @@ const htmlBlockStart = {
5917
6398
  };
5918
6399
 
5919
6400
  //#endregion
5920
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/blocks/atxHeading.js
6401
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/blocks/atxHeading.js
5921
6402
  const reATXHeadingMarker = /^#{1,6}(?:[ \t]+|$)/;
5922
6403
  const reOnlyTrailingHashes = /^[ \t]*#+[ \t]*$/;
5923
6404
  const reClosingHashes = /[ \t]+#+[ \t]*$/;
@@ -5968,7 +6449,7 @@ const atxHeadingStart = {
5968
6449
  };
5969
6450
 
5970
6451
  //#endregion
5971
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/blocks/blockquote.js
6452
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/blocks/blockquote.js
5972
6453
  const C_GREATERTHAN = 62;
5973
6454
  /** Blockquote: continues while each line carries its `>` marker. */
5974
6455
  const blockquoteConstruct = {
@@ -6003,12 +6484,12 @@ const blockquoteStart = {
6003
6484
  };
6004
6485
 
6005
6486
  //#endregion
6006
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/entityMap.js
6487
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/entityMap.js
6007
6488
  /** The HTML5 named character references, keyed without `&` or `;`. */
6008
6489
  const ENTITY_MAP = new Map(JSON.parse("[[\"AElig\",\"Æ\"],[\"AMP\",\"&\"],[\"Aacute\",\"Á\"],[\"Abreve\",\"Ă\"],[\"Acirc\",\"Â\"],[\"Acy\",\"А\"],[\"Afr\",\"𝔄\"],[\"Agrave\",\"À\"],[\"Alpha\",\"Α\"],[\"Amacr\",\"Ā\"],[\"And\",\"⩓\"],[\"Aogon\",\"Ą\"],[\"Aopf\",\"𝔸\"],[\"ApplyFunction\",\"⁡\"],[\"Aring\",\"Å\"],[\"Ascr\",\"𝒜\"],[\"Assign\",\"≔\"],[\"Atilde\",\"Ã\"],[\"Auml\",\"Ä\"],[\"Backslash\",\"∖\"],[\"Barv\",\"⫧\"],[\"Barwed\",\"⌆\"],[\"Bcy\",\"Б\"],[\"Because\",\"∵\"],[\"Bernoullis\",\"ℬ\"],[\"Beta\",\"Β\"],[\"Bfr\",\"𝔅\"],[\"Bopf\",\"𝔹\"],[\"Breve\",\"˘\"],[\"Bscr\",\"ℬ\"],[\"Bumpeq\",\"≎\"],[\"CHcy\",\"Ч\"],[\"COPY\",\"©\"],[\"Cacute\",\"Ć\"],[\"Cap\",\"⋒\"],[\"CapitalDifferentialD\",\"ⅅ\"],[\"Cayleys\",\"ℭ\"],[\"Ccaron\",\"Č\"],[\"Ccedil\",\"Ç\"],[\"Ccirc\",\"Ĉ\"],[\"Cconint\",\"∰\"],[\"Cdot\",\"Ċ\"],[\"Cedilla\",\"¸\"],[\"CenterDot\",\"·\"],[\"Cfr\",\"ℭ\"],[\"Chi\",\"Χ\"],[\"CircleDot\",\"⊙\"],[\"CircleMinus\",\"⊖\"],[\"CirclePlus\",\"⊕\"],[\"CircleTimes\",\"⊗\"],[\"ClockwiseContourIntegral\",\"∲\"],[\"CloseCurlyDoubleQuote\",\"”\"],[\"CloseCurlyQuote\",\"’\"],[\"Colon\",\"∷\"],[\"Colone\",\"⩴\"],[\"Congruent\",\"≡\"],[\"Conint\",\"∯\"],[\"ContourIntegral\",\"∮\"],[\"Copf\",\"ℂ\"],[\"Coproduct\",\"∐\"],[\"CounterClockwiseContourIntegral\",\"∳\"],[\"Cross\",\"⨯\"],[\"Cscr\",\"𝒞\"],[\"Cup\",\"⋓\"],[\"CupCap\",\"≍\"],[\"DD\",\"ⅅ\"],[\"DDotrahd\",\"⤑\"],[\"DJcy\",\"Ђ\"],[\"DScy\",\"Ѕ\"],[\"DZcy\",\"Џ\"],[\"Dagger\",\"‡\"],[\"Darr\",\"↡\"],[\"Dashv\",\"⫤\"],[\"Dcaron\",\"Ď\"],[\"Dcy\",\"Д\"],[\"Del\",\"∇\"],[\"Delta\",\"Δ\"],[\"Dfr\",\"𝔇\"],[\"DiacriticalAcute\",\"´\"],[\"DiacriticalDot\",\"˙\"],[\"DiacriticalDoubleAcute\",\"˝\"],[\"DiacriticalGrave\",\"`\"],[\"DiacriticalTilde\",\"˜\"],[\"Diamond\",\"⋄\"],[\"DifferentialD\",\"ⅆ\"],[\"Dopf\",\"𝔻\"],[\"Dot\",\"¨\"],[\"DotDot\",\"⃜\"],[\"DotEqual\",\"≐\"],[\"DoubleContourIntegral\",\"∯\"],[\"DoubleDot\",\"¨\"],[\"DoubleDownArrow\",\"⇓\"],[\"DoubleLeftArrow\",\"⇐\"],[\"DoubleLeftRightArrow\",\"⇔\"],[\"DoubleLeftTee\",\"⫤\"],[\"DoubleLongLeftArrow\",\"⟸\"],[\"DoubleLongLeftRightArrow\",\"⟺\"],[\"DoubleLongRightArrow\",\"⟹\"],[\"DoubleRightArrow\",\"⇒\"],[\"DoubleRightTee\",\"⊨\"],[\"DoubleUpArrow\",\"⇑\"],[\"DoubleUpDownArrow\",\"⇕\"],[\"DoubleVerticalBar\",\"∥\"],[\"DownArrow\",\"↓\"],[\"DownArrowBar\",\"⤓\"],[\"DownArrowUpArrow\",\"⇵\"],[\"DownBreve\",\"̑\"],[\"DownLeftRightVector\",\"⥐\"],[\"DownLeftTeeVector\",\"⥞\"],[\"DownLeftVector\",\"↽\"],[\"DownLeftVectorBar\",\"⥖\"],[\"DownRightTeeVector\",\"⥟\"],[\"DownRightVector\",\"⇁\"],[\"DownRightVectorBar\",\"⥗\"],[\"DownTee\",\"⊤\"],[\"DownTeeArrow\",\"↧\"],[\"Downarrow\",\"⇓\"],[\"Dscr\",\"𝒟\"],[\"Dstrok\",\"Đ\"],[\"ENG\",\"Ŋ\"],[\"ETH\",\"Ð\"],[\"Eacute\",\"É\"],[\"Ecaron\",\"Ě\"],[\"Ecirc\",\"Ê\"],[\"Ecy\",\"Э\"],[\"Edot\",\"Ė\"],[\"Efr\",\"𝔈\"],[\"Egrave\",\"È\"],[\"Element\",\"∈\"],[\"Emacr\",\"Ē\"],[\"EmptySmallSquare\",\"◻\"],[\"EmptyVerySmallSquare\",\"▫\"],[\"Eogon\",\"Ę\"],[\"Eopf\",\"𝔼\"],[\"Epsilon\",\"Ε\"],[\"Equal\",\"⩵\"],[\"EqualTilde\",\"≂\"],[\"Equilibrium\",\"⇌\"],[\"Escr\",\"ℰ\"],[\"Esim\",\"⩳\"],[\"Eta\",\"Η\"],[\"Euml\",\"Ë\"],[\"Exists\",\"∃\"],[\"ExponentialE\",\"ⅇ\"],[\"Fcy\",\"Ф\"],[\"Ffr\",\"𝔉\"],[\"FilledSmallSquare\",\"◼\"],[\"FilledVerySmallSquare\",\"▪\"],[\"Fopf\",\"𝔽\"],[\"ForAll\",\"∀\"],[\"Fouriertrf\",\"ℱ\"],[\"Fscr\",\"ℱ\"],[\"GJcy\",\"Ѓ\"],[\"GT\",\">\"],[\"Gamma\",\"Γ\"],[\"Gammad\",\"Ϝ\"],[\"Gbreve\",\"Ğ\"],[\"Gcedil\",\"Ģ\"],[\"Gcirc\",\"Ĝ\"],[\"Gcy\",\"Г\"],[\"Gdot\",\"Ġ\"],[\"Gfr\",\"𝔊\"],[\"Gg\",\"⋙\"],[\"Gopf\",\"𝔾\"],[\"GreaterEqual\",\"≥\"],[\"GreaterEqualLess\",\"⋛\"],[\"GreaterFullEqual\",\"≧\"],[\"GreaterGreater\",\"⪢\"],[\"GreaterLess\",\"≷\"],[\"GreaterSlantEqual\",\"⩾\"],[\"GreaterTilde\",\"≳\"],[\"Gscr\",\"𝒢\"],[\"Gt\",\"≫\"],[\"HARDcy\",\"Ъ\"],[\"Hacek\",\"ˇ\"],[\"Hat\",\"^\"],[\"Hcirc\",\"Ĥ\"],[\"Hfr\",\"ℌ\"],[\"HilbertSpace\",\"ℋ\"],[\"Hopf\",\"ℍ\"],[\"HorizontalLine\",\"─\"],[\"Hscr\",\"ℋ\"],[\"Hstrok\",\"Ħ\"],[\"HumpDownHump\",\"≎\"],[\"HumpEqual\",\"≏\"],[\"IEcy\",\"Е\"],[\"IJlig\",\"IJ\"],[\"IOcy\",\"Ё\"],[\"Iacute\",\"Í\"],[\"Icirc\",\"Î\"],[\"Icy\",\"И\"],[\"Idot\",\"İ\"],[\"Ifr\",\"ℑ\"],[\"Igrave\",\"Ì\"],[\"Im\",\"ℑ\"],[\"Imacr\",\"Ī\"],[\"ImaginaryI\",\"ⅈ\"],[\"Implies\",\"⇒\"],[\"Int\",\"∬\"],[\"Integral\",\"∫\"],[\"Intersection\",\"⋂\"],[\"InvisibleComma\",\"⁣\"],[\"InvisibleTimes\",\"⁢\"],[\"Iogon\",\"Į\"],[\"Iopf\",\"𝕀\"],[\"Iota\",\"Ι\"],[\"Iscr\",\"ℐ\"],[\"Itilde\",\"Ĩ\"],[\"Iukcy\",\"І\"],[\"Iuml\",\"Ï\"],[\"Jcirc\",\"Ĵ\"],[\"Jcy\",\"Й\"],[\"Jfr\",\"𝔍\"],[\"Jopf\",\"𝕁\"],[\"Jscr\",\"𝒥\"],[\"Jsercy\",\"Ј\"],[\"Jukcy\",\"Є\"],[\"KHcy\",\"Х\"],[\"KJcy\",\"Ќ\"],[\"Kappa\",\"Κ\"],[\"Kcedil\",\"Ķ\"],[\"Kcy\",\"К\"],[\"Kfr\",\"𝔎\"],[\"Kopf\",\"𝕂\"],[\"Kscr\",\"𝒦\"],[\"LJcy\",\"Љ\"],[\"LT\",\"<\"],[\"Lacute\",\"Ĺ\"],[\"Lambda\",\"Λ\"],[\"Lang\",\"⟪\"],[\"Laplacetrf\",\"ℒ\"],[\"Larr\",\"↞\"],[\"Lcaron\",\"Ľ\"],[\"Lcedil\",\"Ļ\"],[\"Lcy\",\"Л\"],[\"LeftAngleBracket\",\"⟨\"],[\"LeftArrow\",\"←\"],[\"LeftArrowBar\",\"⇤\"],[\"LeftArrowRightArrow\",\"⇆\"],[\"LeftCeiling\",\"⌈\"],[\"LeftDoubleBracket\",\"⟦\"],[\"LeftDownTeeVector\",\"⥡\"],[\"LeftDownVector\",\"⇃\"],[\"LeftDownVectorBar\",\"⥙\"],[\"LeftFloor\",\"⌊\"],[\"LeftRightArrow\",\"↔\"],[\"LeftRightVector\",\"⥎\"],[\"LeftTee\",\"⊣\"],[\"LeftTeeArrow\",\"↤\"],[\"LeftTeeVector\",\"⥚\"],[\"LeftTriangle\",\"⊲\"],[\"LeftTriangleBar\",\"⧏\"],[\"LeftTriangleEqual\",\"⊴\"],[\"LeftUpDownVector\",\"⥑\"],[\"LeftUpTeeVector\",\"⥠\"],[\"LeftUpVector\",\"↿\"],[\"LeftUpVectorBar\",\"⥘\"],[\"LeftVector\",\"↼\"],[\"LeftVectorBar\",\"⥒\"],[\"Leftarrow\",\"⇐\"],[\"Leftrightarrow\",\"⇔\"],[\"LessEqualGreater\",\"⋚\"],[\"LessFullEqual\",\"≦\"],[\"LessGreater\",\"≶\"],[\"LessLess\",\"⪡\"],[\"LessSlantEqual\",\"⩽\"],[\"LessTilde\",\"≲\"],[\"Lfr\",\"𝔏\"],[\"Ll\",\"⋘\"],[\"Lleftarrow\",\"⇚\"],[\"Lmidot\",\"Ŀ\"],[\"LongLeftArrow\",\"⟵\"],[\"LongLeftRightArrow\",\"⟷\"],[\"LongRightArrow\",\"⟶\"],[\"Longleftarrow\",\"⟸\"],[\"Longleftrightarrow\",\"⟺\"],[\"Longrightarrow\",\"⟹\"],[\"Lopf\",\"𝕃\"],[\"LowerLeftArrow\",\"↙\"],[\"LowerRightArrow\",\"↘\"],[\"Lscr\",\"ℒ\"],[\"Lsh\",\"↰\"],[\"Lstrok\",\"Ł\"],[\"Lt\",\"≪\"],[\"Map\",\"⤅\"],[\"Mcy\",\"М\"],[\"MediumSpace\",\" \"],[\"Mellintrf\",\"ℳ\"],[\"Mfr\",\"𝔐\"],[\"MinusPlus\",\"∓\"],[\"Mopf\",\"𝕄\"],[\"Mscr\",\"ℳ\"],[\"Mu\",\"Μ\"],[\"NJcy\",\"Њ\"],[\"Nacute\",\"Ń\"],[\"Ncaron\",\"Ň\"],[\"Ncedil\",\"Ņ\"],[\"Ncy\",\"Н\"],[\"NegativeMediumSpace\",\"​\"],[\"NegativeThickSpace\",\"​\"],[\"NegativeThinSpace\",\"​\"],[\"NegativeVeryThinSpace\",\"​\"],[\"NestedGreaterGreater\",\"≫\"],[\"NestedLessLess\",\"≪\"],[\"NewLine\",\"\\n\"],[\"Nfr\",\"𝔑\"],[\"NoBreak\",\"⁠\"],[\"NonBreakingSpace\",\"\xA0\"],[\"Nopf\",\"ℕ\"],[\"Not\",\"⫬\"],[\"NotCongruent\",\"≢\"],[\"NotCupCap\",\"≭\"],[\"NotDoubleVerticalBar\",\"∦\"],[\"NotElement\",\"∉\"],[\"NotEqual\",\"≠\"],[\"NotEqualTilde\",\"≂̸\"],[\"NotExists\",\"∄\"],[\"NotGreater\",\"≯\"],[\"NotGreaterEqual\",\"≱\"],[\"NotGreaterFullEqual\",\"≧̸\"],[\"NotGreaterGreater\",\"≫̸\"],[\"NotGreaterLess\",\"≹\"],[\"NotGreaterSlantEqual\",\"⩾̸\"],[\"NotGreaterTilde\",\"≵\"],[\"NotHumpDownHump\",\"≎̸\"],[\"NotHumpEqual\",\"≏̸\"],[\"NotLeftTriangle\",\"⋪\"],[\"NotLeftTriangleBar\",\"⧏̸\"],[\"NotLeftTriangleEqual\",\"⋬\"],[\"NotLess\",\"≮\"],[\"NotLessEqual\",\"≰\"],[\"NotLessGreater\",\"≸\"],[\"NotLessLess\",\"≪̸\"],[\"NotLessSlantEqual\",\"⩽̸\"],[\"NotLessTilde\",\"≴\"],[\"NotNestedGreaterGreater\",\"⪢̸\"],[\"NotNestedLessLess\",\"⪡̸\"],[\"NotPrecedes\",\"⊀\"],[\"NotPrecedesEqual\",\"⪯̸\"],[\"NotPrecedesSlantEqual\",\"⋠\"],[\"NotReverseElement\",\"∌\"],[\"NotRightTriangle\",\"⋫\"],[\"NotRightTriangleBar\",\"⧐̸\"],[\"NotRightTriangleEqual\",\"⋭\"],[\"NotSquareSubset\",\"⊏̸\"],[\"NotSquareSubsetEqual\",\"⋢\"],[\"NotSquareSuperset\",\"⊐̸\"],[\"NotSquareSupersetEqual\",\"⋣\"],[\"NotSubset\",\"⊂⃒\"],[\"NotSubsetEqual\",\"⊈\"],[\"NotSucceeds\",\"⊁\"],[\"NotSucceedsEqual\",\"⪰̸\"],[\"NotSucceedsSlantEqual\",\"⋡\"],[\"NotSucceedsTilde\",\"≿̸\"],[\"NotSuperset\",\"⊃⃒\"],[\"NotSupersetEqual\",\"⊉\"],[\"NotTilde\",\"≁\"],[\"NotTildeEqual\",\"≄\"],[\"NotTildeFullEqual\",\"≇\"],[\"NotTildeTilde\",\"≉\"],[\"NotVerticalBar\",\"∤\"],[\"Nscr\",\"𝒩\"],[\"Ntilde\",\"Ñ\"],[\"Nu\",\"Ν\"],[\"OElig\",\"Œ\"],[\"Oacute\",\"Ó\"],[\"Ocirc\",\"Ô\"],[\"Ocy\",\"О\"],[\"Odblac\",\"Ő\"],[\"Ofr\",\"𝔒\"],[\"Ograve\",\"Ò\"],[\"Omacr\",\"Ō\"],[\"Omega\",\"Ω\"],[\"Omicron\",\"Ο\"],[\"Oopf\",\"𝕆\"],[\"OpenCurlyDoubleQuote\",\"“\"],[\"OpenCurlyQuote\",\"‘\"],[\"Or\",\"⩔\"],[\"Oscr\",\"𝒪\"],[\"Oslash\",\"Ø\"],[\"Otilde\",\"Õ\"],[\"Otimes\",\"⨷\"],[\"Ouml\",\"Ö\"],[\"OverBar\",\"‾\"],[\"OverBrace\",\"⏞\"],[\"OverBracket\",\"⎴\"],[\"OverParenthesis\",\"⏜\"],[\"PartialD\",\"∂\"],[\"Pcy\",\"П\"],[\"Pfr\",\"𝔓\"],[\"Phi\",\"Φ\"],[\"Pi\",\"Π\"],[\"PlusMinus\",\"±\"],[\"Poincareplane\",\"ℌ\"],[\"Popf\",\"ℙ\"],[\"Pr\",\"⪻\"],[\"Precedes\",\"≺\"],[\"PrecedesEqual\",\"⪯\"],[\"PrecedesSlantEqual\",\"≼\"],[\"PrecedesTilde\",\"≾\"],[\"Prime\",\"″\"],[\"Product\",\"∏\"],[\"Proportion\",\"∷\"],[\"Proportional\",\"∝\"],[\"Pscr\",\"𝒫\"],[\"Psi\",\"Ψ\"],[\"QUOT\",\"\\\"\"],[\"Qfr\",\"𝔔\"],[\"Qopf\",\"ℚ\"],[\"Qscr\",\"𝒬\"],[\"RBarr\",\"⤐\"],[\"REG\",\"®\"],[\"Racute\",\"Ŕ\"],[\"Rang\",\"⟫\"],[\"Rarr\",\"↠\"],[\"Rarrtl\",\"⤖\"],[\"Rcaron\",\"Ř\"],[\"Rcedil\",\"Ŗ\"],[\"Rcy\",\"Р\"],[\"Re\",\"ℜ\"],[\"ReverseElement\",\"∋\"],[\"ReverseEquilibrium\",\"⇋\"],[\"ReverseUpEquilibrium\",\"⥯\"],[\"Rfr\",\"ℜ\"],[\"Rho\",\"Ρ\"],[\"RightAngleBracket\",\"⟩\"],[\"RightArrow\",\"→\"],[\"RightArrowBar\",\"⇥\"],[\"RightArrowLeftArrow\",\"⇄\"],[\"RightCeiling\",\"⌉\"],[\"RightDoubleBracket\",\"⟧\"],[\"RightDownTeeVector\",\"⥝\"],[\"RightDownVector\",\"⇂\"],[\"RightDownVectorBar\",\"⥕\"],[\"RightFloor\",\"⌋\"],[\"RightTee\",\"⊢\"],[\"RightTeeArrow\",\"↦\"],[\"RightTeeVector\",\"⥛\"],[\"RightTriangle\",\"⊳\"],[\"RightTriangleBar\",\"⧐\"],[\"RightTriangleEqual\",\"⊵\"],[\"RightUpDownVector\",\"⥏\"],[\"RightUpTeeVector\",\"⥜\"],[\"RightUpVector\",\"↾\"],[\"RightUpVectorBar\",\"⥔\"],[\"RightVector\",\"⇀\"],[\"RightVectorBar\",\"⥓\"],[\"Rightarrow\",\"⇒\"],[\"Ropf\",\"ℝ\"],[\"RoundImplies\",\"⥰\"],[\"Rrightarrow\",\"⇛\"],[\"Rscr\",\"ℛ\"],[\"Rsh\",\"↱\"],[\"RuleDelayed\",\"⧴\"],[\"SHCHcy\",\"Щ\"],[\"SHcy\",\"Ш\"],[\"SOFTcy\",\"Ь\"],[\"Sacute\",\"Ś\"],[\"Sc\",\"⪼\"],[\"Scaron\",\"Š\"],[\"Scedil\",\"Ş\"],[\"Scirc\",\"Ŝ\"],[\"Scy\",\"С\"],[\"Sfr\",\"𝔖\"],[\"ShortDownArrow\",\"↓\"],[\"ShortLeftArrow\",\"←\"],[\"ShortRightArrow\",\"→\"],[\"ShortUpArrow\",\"↑\"],[\"Sigma\",\"Σ\"],[\"SmallCircle\",\"∘\"],[\"Sopf\",\"𝕊\"],[\"Sqrt\",\"√\"],[\"Square\",\"□\"],[\"SquareIntersection\",\"⊓\"],[\"SquareSubset\",\"⊏\"],[\"SquareSubsetEqual\",\"⊑\"],[\"SquareSuperset\",\"⊐\"],[\"SquareSupersetEqual\",\"⊒\"],[\"SquareUnion\",\"⊔\"],[\"Sscr\",\"𝒮\"],[\"Star\",\"⋆\"],[\"Sub\",\"⋐\"],[\"Subset\",\"⋐\"],[\"SubsetEqual\",\"⊆\"],[\"Succeeds\",\"≻\"],[\"SucceedsEqual\",\"⪰\"],[\"SucceedsSlantEqual\",\"≽\"],[\"SucceedsTilde\",\"≿\"],[\"SuchThat\",\"∋\"],[\"Sum\",\"∑\"],[\"Sup\",\"⋑\"],[\"Superset\",\"⊃\"],[\"SupersetEqual\",\"⊇\"],[\"Supset\",\"⋑\"],[\"THORN\",\"Þ\"],[\"TRADE\",\"™\"],[\"TSHcy\",\"Ћ\"],[\"TScy\",\"Ц\"],[\"Tab\",\"\\t\"],[\"Tau\",\"Τ\"],[\"Tcaron\",\"Ť\"],[\"Tcedil\",\"Ţ\"],[\"Tcy\",\"Т\"],[\"Tfr\",\"𝔗\"],[\"Therefore\",\"∴\"],[\"Theta\",\"Θ\"],[\"ThickSpace\",\"  \"],[\"ThinSpace\",\" \"],[\"Tilde\",\"∼\"],[\"TildeEqual\",\"≃\"],[\"TildeFullEqual\",\"≅\"],[\"TildeTilde\",\"≈\"],[\"Topf\",\"𝕋\"],[\"TripleDot\",\"⃛\"],[\"Tscr\",\"𝒯\"],[\"Tstrok\",\"Ŧ\"],[\"Uacute\",\"Ú\"],[\"Uarr\",\"↟\"],[\"Uarrocir\",\"⥉\"],[\"Ubrcy\",\"Ў\"],[\"Ubreve\",\"Ŭ\"],[\"Ucirc\",\"Û\"],[\"Ucy\",\"У\"],[\"Udblac\",\"Ű\"],[\"Ufr\",\"𝔘\"],[\"Ugrave\",\"Ù\"],[\"Umacr\",\"Ū\"],[\"UnderBar\",\"_\"],[\"UnderBrace\",\"⏟\"],[\"UnderBracket\",\"⎵\"],[\"UnderParenthesis\",\"⏝\"],[\"Union\",\"⋃\"],[\"UnionPlus\",\"⊎\"],[\"Uogon\",\"Ų\"],[\"Uopf\",\"𝕌\"],[\"UpArrow\",\"↑\"],[\"UpArrowBar\",\"⤒\"],[\"UpArrowDownArrow\",\"⇅\"],[\"UpDownArrow\",\"↕\"],[\"UpEquilibrium\",\"⥮\"],[\"UpTee\",\"⊥\"],[\"UpTeeArrow\",\"↥\"],[\"Uparrow\",\"⇑\"],[\"Updownarrow\",\"⇕\"],[\"UpperLeftArrow\",\"↖\"],[\"UpperRightArrow\",\"↗\"],[\"Upsi\",\"ϒ\"],[\"Upsilon\",\"Υ\"],[\"Uring\",\"Ů\"],[\"Uscr\",\"𝒰\"],[\"Utilde\",\"Ũ\"],[\"Uuml\",\"Ü\"],[\"VDash\",\"⊫\"],[\"Vbar\",\"⫫\"],[\"Vcy\",\"В\"],[\"Vdash\",\"⊩\"],[\"Vdashl\",\"⫦\"],[\"Vee\",\"⋁\"],[\"Verbar\",\"‖\"],[\"Vert\",\"‖\"],[\"VerticalBar\",\"∣\"],[\"VerticalLine\",\"|\"],[\"VerticalSeparator\",\"❘\"],[\"VerticalTilde\",\"≀\"],[\"VeryThinSpace\",\" \"],[\"Vfr\",\"𝔙\"],[\"Vopf\",\"𝕍\"],[\"Vscr\",\"𝒱\"],[\"Vvdash\",\"⊪\"],[\"Wcirc\",\"Ŵ\"],[\"Wedge\",\"⋀\"],[\"Wfr\",\"𝔚\"],[\"Wopf\",\"𝕎\"],[\"Wscr\",\"𝒲\"],[\"Xfr\",\"𝔛\"],[\"Xi\",\"Ξ\"],[\"Xopf\",\"𝕏\"],[\"Xscr\",\"𝒳\"],[\"YAcy\",\"Я\"],[\"YIcy\",\"Ї\"],[\"YUcy\",\"Ю\"],[\"Yacute\",\"Ý\"],[\"Ycirc\",\"Ŷ\"],[\"Ycy\",\"Ы\"],[\"Yfr\",\"𝔜\"],[\"Yopf\",\"𝕐\"],[\"Yscr\",\"𝒴\"],[\"Yuml\",\"Ÿ\"],[\"ZHcy\",\"Ж\"],[\"Zacute\",\"Ź\"],[\"Zcaron\",\"Ž\"],[\"Zcy\",\"З\"],[\"Zdot\",\"Ż\"],[\"ZeroWidthSpace\",\"​\"],[\"Zeta\",\"Ζ\"],[\"Zfr\",\"ℨ\"],[\"Zopf\",\"ℤ\"],[\"Zscr\",\"𝒵\"],[\"aacute\",\"á\"],[\"abreve\",\"ă\"],[\"ac\",\"∾\"],[\"acE\",\"∾̳\"],[\"acd\",\"∿\"],[\"acirc\",\"â\"],[\"acute\",\"´\"],[\"acy\",\"а\"],[\"aelig\",\"æ\"],[\"af\",\"⁡\"],[\"afr\",\"𝔞\"],[\"agrave\",\"à\"],[\"alefsym\",\"ℵ\"],[\"aleph\",\"ℵ\"],[\"alpha\",\"α\"],[\"amacr\",\"ā\"],[\"amalg\",\"⨿\"],[\"amp\",\"&\"],[\"and\",\"∧\"],[\"andand\",\"⩕\"],[\"andd\",\"⩜\"],[\"andslope\",\"⩘\"],[\"andv\",\"⩚\"],[\"ang\",\"∠\"],[\"ange\",\"⦤\"],[\"angle\",\"∠\"],[\"angmsd\",\"∡\"],[\"angmsdaa\",\"⦨\"],[\"angmsdab\",\"⦩\"],[\"angmsdac\",\"⦪\"],[\"angmsdad\",\"⦫\"],[\"angmsdae\",\"⦬\"],[\"angmsdaf\",\"⦭\"],[\"angmsdag\",\"⦮\"],[\"angmsdah\",\"⦯\"],[\"angrt\",\"∟\"],[\"angrtvb\",\"⊾\"],[\"angrtvbd\",\"⦝\"],[\"angsph\",\"∢\"],[\"angst\",\"Å\"],[\"angzarr\",\"⍼\"],[\"aogon\",\"ą\"],[\"aopf\",\"𝕒\"],[\"ap\",\"≈\"],[\"apE\",\"⩰\"],[\"apacir\",\"⩯\"],[\"ape\",\"≊\"],[\"apid\",\"≋\"],[\"apos\",\"'\"],[\"approx\",\"≈\"],[\"approxeq\",\"≊\"],[\"aring\",\"å\"],[\"ascr\",\"𝒶\"],[\"ast\",\"*\"],[\"asymp\",\"≈\"],[\"asympeq\",\"≍\"],[\"atilde\",\"ã\"],[\"auml\",\"ä\"],[\"awconint\",\"∳\"],[\"awint\",\"⨑\"],[\"bNot\",\"⫭\"],[\"backcong\",\"≌\"],[\"backepsilon\",\"϶\"],[\"backprime\",\"‵\"],[\"backsim\",\"∽\"],[\"backsimeq\",\"⋍\"],[\"barvee\",\"⊽\"],[\"barwed\",\"⌅\"],[\"barwedge\",\"⌅\"],[\"bbrk\",\"⎵\"],[\"bbrktbrk\",\"⎶\"],[\"bcong\",\"≌\"],[\"bcy\",\"б\"],[\"bdquo\",\"„\"],[\"becaus\",\"∵\"],[\"because\",\"∵\"],[\"bemptyv\",\"⦰\"],[\"bepsi\",\"϶\"],[\"bernou\",\"ℬ\"],[\"beta\",\"β\"],[\"beth\",\"ℶ\"],[\"between\",\"≬\"],[\"bfr\",\"𝔟\"],[\"bigcap\",\"⋂\"],[\"bigcirc\",\"◯\"],[\"bigcup\",\"⋃\"],[\"bigodot\",\"⨀\"],[\"bigoplus\",\"⨁\"],[\"bigotimes\",\"⨂\"],[\"bigsqcup\",\"⨆\"],[\"bigstar\",\"★\"],[\"bigtriangledown\",\"▽\"],[\"bigtriangleup\",\"△\"],[\"biguplus\",\"⨄\"],[\"bigvee\",\"⋁\"],[\"bigwedge\",\"⋀\"],[\"bkarow\",\"⤍\"],[\"blacklozenge\",\"⧫\"],[\"blacksquare\",\"▪\"],[\"blacktriangle\",\"▴\"],[\"blacktriangledown\",\"▾\"],[\"blacktriangleleft\",\"◂\"],[\"blacktriangleright\",\"▸\"],[\"blank\",\"␣\"],[\"blk12\",\"▒\"],[\"blk14\",\"░\"],[\"blk34\",\"▓\"],[\"block\",\"█\"],[\"bne\",\"=⃥\"],[\"bnequiv\",\"≡⃥\"],[\"bnot\",\"⌐\"],[\"bopf\",\"𝕓\"],[\"bot\",\"⊥\"],[\"bottom\",\"⊥\"],[\"bowtie\",\"⋈\"],[\"boxDL\",\"╗\"],[\"boxDR\",\"╔\"],[\"boxDl\",\"╖\"],[\"boxDr\",\"╓\"],[\"boxH\",\"═\"],[\"boxHD\",\"╦\"],[\"boxHU\",\"╩\"],[\"boxHd\",\"╤\"],[\"boxHu\",\"╧\"],[\"boxUL\",\"╝\"],[\"boxUR\",\"╚\"],[\"boxUl\",\"╜\"],[\"boxUr\",\"╙\"],[\"boxV\",\"║\"],[\"boxVH\",\"╬\"],[\"boxVL\",\"╣\"],[\"boxVR\",\"╠\"],[\"boxVh\",\"╫\"],[\"boxVl\",\"╢\"],[\"boxVr\",\"╟\"],[\"boxbox\",\"⧉\"],[\"boxdL\",\"╕\"],[\"boxdR\",\"╒\"],[\"boxdl\",\"┐\"],[\"boxdr\",\"┌\"],[\"boxh\",\"─\"],[\"boxhD\",\"╥\"],[\"boxhU\",\"╨\"],[\"boxhd\",\"┬\"],[\"boxhu\",\"┴\"],[\"boxminus\",\"⊟\"],[\"boxplus\",\"⊞\"],[\"boxtimes\",\"⊠\"],[\"boxuL\",\"╛\"],[\"boxuR\",\"╘\"],[\"boxul\",\"┘\"],[\"boxur\",\"└\"],[\"boxv\",\"│\"],[\"boxvH\",\"╪\"],[\"boxvL\",\"╡\"],[\"boxvR\",\"╞\"],[\"boxvh\",\"┼\"],[\"boxvl\",\"┤\"],[\"boxvr\",\"├\"],[\"bprime\",\"‵\"],[\"breve\",\"˘\"],[\"brvbar\",\"¦\"],[\"bscr\",\"𝒷\"],[\"bsemi\",\"⁏\"],[\"bsim\",\"∽\"],[\"bsime\",\"⋍\"],[\"bsol\",\"\\\\\"],[\"bsolb\",\"⧅\"],[\"bsolhsub\",\"⟈\"],[\"bull\",\"•\"],[\"bullet\",\"•\"],[\"bump\",\"≎\"],[\"bumpE\",\"⪮\"],[\"bumpe\",\"≏\"],[\"bumpeq\",\"≏\"],[\"cacute\",\"ć\"],[\"cap\",\"∩\"],[\"capand\",\"⩄\"],[\"capbrcup\",\"⩉\"],[\"capcap\",\"⩋\"],[\"capcup\",\"⩇\"],[\"capdot\",\"⩀\"],[\"caps\",\"∩︀\"],[\"caret\",\"⁁\"],[\"caron\",\"ˇ\"],[\"ccaps\",\"⩍\"],[\"ccaron\",\"č\"],[\"ccedil\",\"ç\"],[\"ccirc\",\"ĉ\"],[\"ccups\",\"⩌\"],[\"ccupssm\",\"⩐\"],[\"cdot\",\"ċ\"],[\"cedil\",\"¸\"],[\"cemptyv\",\"⦲\"],[\"cent\",\"¢\"],[\"centerdot\",\"·\"],[\"cfr\",\"𝔠\"],[\"chcy\",\"ч\"],[\"check\",\"✓\"],[\"checkmark\",\"✓\"],[\"chi\",\"χ\"],[\"cir\",\"○\"],[\"cirE\",\"⧃\"],[\"circ\",\"ˆ\"],[\"circeq\",\"≗\"],[\"circlearrowleft\",\"↺\"],[\"circlearrowright\",\"↻\"],[\"circledR\",\"®\"],[\"circledS\",\"Ⓢ\"],[\"circledast\",\"⊛\"],[\"circledcirc\",\"⊚\"],[\"circleddash\",\"⊝\"],[\"cire\",\"≗\"],[\"cirfnint\",\"⨐\"],[\"cirmid\",\"⫯\"],[\"cirscir\",\"⧂\"],[\"clubs\",\"♣\"],[\"clubsuit\",\"♣\"],[\"colon\",\":\"],[\"colone\",\"≔\"],[\"coloneq\",\"≔\"],[\"comma\",\",\"],[\"commat\",\"@\"],[\"comp\",\"∁\"],[\"compfn\",\"∘\"],[\"complement\",\"∁\"],[\"complexes\",\"ℂ\"],[\"cong\",\"≅\"],[\"congdot\",\"⩭\"],[\"conint\",\"∮\"],[\"copf\",\"𝕔\"],[\"coprod\",\"∐\"],[\"copy\",\"©\"],[\"copysr\",\"℗\"],[\"crarr\",\"↵\"],[\"cross\",\"✗\"],[\"cscr\",\"𝒸\"],[\"csub\",\"⫏\"],[\"csube\",\"⫑\"],[\"csup\",\"⫐\"],[\"csupe\",\"⫒\"],[\"ctdot\",\"⋯\"],[\"cudarrl\",\"⤸\"],[\"cudarrr\",\"⤵\"],[\"cuepr\",\"⋞\"],[\"cuesc\",\"⋟\"],[\"cularr\",\"↶\"],[\"cularrp\",\"⤽\"],[\"cup\",\"∪\"],[\"cupbrcap\",\"⩈\"],[\"cupcap\",\"⩆\"],[\"cupcup\",\"⩊\"],[\"cupdot\",\"⊍\"],[\"cupor\",\"⩅\"],[\"cups\",\"∪︀\"],[\"curarr\",\"↷\"],[\"curarrm\",\"⤼\"],[\"curlyeqprec\",\"⋞\"],[\"curlyeqsucc\",\"⋟\"],[\"curlyvee\",\"⋎\"],[\"curlywedge\",\"⋏\"],[\"curren\",\"¤\"],[\"curvearrowleft\",\"↶\"],[\"curvearrowright\",\"↷\"],[\"cuvee\",\"⋎\"],[\"cuwed\",\"⋏\"],[\"cwconint\",\"∲\"],[\"cwint\",\"∱\"],[\"cylcty\",\"⌭\"],[\"dArr\",\"⇓\"],[\"dHar\",\"⥥\"],[\"dagger\",\"†\"],[\"daleth\",\"ℸ\"],[\"darr\",\"↓\"],[\"dash\",\"‐\"],[\"dashv\",\"⊣\"],[\"dbkarow\",\"⤏\"],[\"dblac\",\"˝\"],[\"dcaron\",\"ď\"],[\"dcy\",\"д\"],[\"dd\",\"ⅆ\"],[\"ddagger\",\"‡\"],[\"ddarr\",\"⇊\"],[\"ddotseq\",\"⩷\"],[\"deg\",\"°\"],[\"delta\",\"δ\"],[\"demptyv\",\"⦱\"],[\"dfisht\",\"⥿\"],[\"dfr\",\"𝔡\"],[\"dharl\",\"⇃\"],[\"dharr\",\"⇂\"],[\"diam\",\"⋄\"],[\"diamond\",\"⋄\"],[\"diamondsuit\",\"♦\"],[\"diams\",\"♦\"],[\"die\",\"¨\"],[\"digamma\",\"ϝ\"],[\"disin\",\"⋲\"],[\"div\",\"÷\"],[\"divide\",\"÷\"],[\"divideontimes\",\"⋇\"],[\"divonx\",\"⋇\"],[\"djcy\",\"ђ\"],[\"dlcorn\",\"⌞\"],[\"dlcrop\",\"⌍\"],[\"dollar\",\"$\"],[\"dopf\",\"𝕕\"],[\"dot\",\"˙\"],[\"doteq\",\"≐\"],[\"doteqdot\",\"≑\"],[\"dotminus\",\"∸\"],[\"dotplus\",\"∔\"],[\"dotsquare\",\"⊡\"],[\"doublebarwedge\",\"⌆\"],[\"downarrow\",\"↓\"],[\"downdownarrows\",\"⇊\"],[\"downharpoonleft\",\"⇃\"],[\"downharpoonright\",\"⇂\"],[\"drbkarow\",\"⤐\"],[\"drcorn\",\"⌟\"],[\"drcrop\",\"⌌\"],[\"dscr\",\"𝒹\"],[\"dscy\",\"ѕ\"],[\"dsol\",\"⧶\"],[\"dstrok\",\"đ\"],[\"dtdot\",\"⋱\"],[\"dtri\",\"▿\"],[\"dtrif\",\"▾\"],[\"duarr\",\"⇵\"],[\"duhar\",\"⥯\"],[\"dwangle\",\"⦦\"],[\"dzcy\",\"џ\"],[\"dzigrarr\",\"⟿\"],[\"eDDot\",\"⩷\"],[\"eDot\",\"≑\"],[\"eacute\",\"é\"],[\"easter\",\"⩮\"],[\"ecaron\",\"ě\"],[\"ecir\",\"≖\"],[\"ecirc\",\"ê\"],[\"ecolon\",\"≕\"],[\"ecy\",\"э\"],[\"edot\",\"ė\"],[\"ee\",\"ⅇ\"],[\"efDot\",\"≒\"],[\"efr\",\"𝔢\"],[\"eg\",\"⪚\"],[\"egrave\",\"è\"],[\"egs\",\"⪖\"],[\"egsdot\",\"⪘\"],[\"el\",\"⪙\"],[\"elinters\",\"⏧\"],[\"ell\",\"ℓ\"],[\"els\",\"⪕\"],[\"elsdot\",\"⪗\"],[\"emacr\",\"ē\"],[\"empty\",\"∅\"],[\"emptyset\",\"∅\"],[\"emptyv\",\"∅\"],[\"emsp\",\" \"],[\"emsp13\",\" \"],[\"emsp14\",\" \"],[\"eng\",\"ŋ\"],[\"ensp\",\" \"],[\"eogon\",\"ę\"],[\"eopf\",\"𝕖\"],[\"epar\",\"⋕\"],[\"eparsl\",\"⧣\"],[\"eplus\",\"⩱\"],[\"epsi\",\"ε\"],[\"epsilon\",\"ε\"],[\"epsiv\",\"ϵ\"],[\"eqcirc\",\"≖\"],[\"eqcolon\",\"≕\"],[\"eqsim\",\"≂\"],[\"eqslantgtr\",\"⪖\"],[\"eqslantless\",\"⪕\"],[\"equals\",\"=\"],[\"equest\",\"≟\"],[\"equiv\",\"≡\"],[\"equivDD\",\"⩸\"],[\"eqvparsl\",\"⧥\"],[\"erDot\",\"≓\"],[\"erarr\",\"⥱\"],[\"escr\",\"ℯ\"],[\"esdot\",\"≐\"],[\"esim\",\"≂\"],[\"eta\",\"η\"],[\"eth\",\"ð\"],[\"euml\",\"ë\"],[\"euro\",\"€\"],[\"excl\",\"!\"],[\"exist\",\"∃\"],[\"expectation\",\"ℰ\"],[\"exponentiale\",\"ⅇ\"],[\"fallingdotseq\",\"≒\"],[\"fcy\",\"ф\"],[\"female\",\"♀\"],[\"ffilig\",\"ffi\"],[\"fflig\",\"ff\"],[\"ffllig\",\"ffl\"],[\"ffr\",\"𝔣\"],[\"filig\",\"fi\"],[\"fjlig\",\"fj\"],[\"flat\",\"♭\"],[\"fllig\",\"fl\"],[\"fltns\",\"▱\"],[\"fnof\",\"ƒ\"],[\"fopf\",\"𝕗\"],[\"forall\",\"∀\"],[\"fork\",\"⋔\"],[\"forkv\",\"⫙\"],[\"fpartint\",\"⨍\"],[\"frac12\",\"½\"],[\"frac13\",\"⅓\"],[\"frac14\",\"¼\"],[\"frac15\",\"⅕\"],[\"frac16\",\"⅙\"],[\"frac18\",\"⅛\"],[\"frac23\",\"⅔\"],[\"frac25\",\"⅖\"],[\"frac34\",\"¾\"],[\"frac35\",\"⅗\"],[\"frac38\",\"⅜\"],[\"frac45\",\"⅘\"],[\"frac56\",\"⅚\"],[\"frac58\",\"⅝\"],[\"frac78\",\"⅞\"],[\"frasl\",\"⁄\"],[\"frown\",\"⌢\"],[\"fscr\",\"𝒻\"],[\"gE\",\"≧\"],[\"gEl\",\"⪌\"],[\"gacute\",\"ǵ\"],[\"gamma\",\"γ\"],[\"gammad\",\"ϝ\"],[\"gap\",\"⪆\"],[\"gbreve\",\"ğ\"],[\"gcirc\",\"ĝ\"],[\"gcy\",\"г\"],[\"gdot\",\"ġ\"],[\"ge\",\"≥\"],[\"gel\",\"⋛\"],[\"geq\",\"≥\"],[\"geqq\",\"≧\"],[\"geqslant\",\"⩾\"],[\"ges\",\"⩾\"],[\"gescc\",\"⪩\"],[\"gesdot\",\"⪀\"],[\"gesdoto\",\"⪂\"],[\"gesdotol\",\"⪄\"],[\"gesl\",\"⋛︀\"],[\"gesles\",\"⪔\"],[\"gfr\",\"𝔤\"],[\"gg\",\"≫\"],[\"ggg\",\"⋙\"],[\"gimel\",\"ℷ\"],[\"gjcy\",\"ѓ\"],[\"gl\",\"≷\"],[\"glE\",\"⪒\"],[\"gla\",\"⪥\"],[\"glj\",\"⪤\"],[\"gnE\",\"≩\"],[\"gnap\",\"⪊\"],[\"gnapprox\",\"⪊\"],[\"gne\",\"⪈\"],[\"gneq\",\"⪈\"],[\"gneqq\",\"≩\"],[\"gnsim\",\"⋧\"],[\"gopf\",\"𝕘\"],[\"grave\",\"`\"],[\"gscr\",\"ℊ\"],[\"gsim\",\"≳\"],[\"gsime\",\"⪎\"],[\"gsiml\",\"⪐\"],[\"gt\",\">\"],[\"gtcc\",\"⪧\"],[\"gtcir\",\"⩺\"],[\"gtdot\",\"⋗\"],[\"gtlPar\",\"⦕\"],[\"gtquest\",\"⩼\"],[\"gtrapprox\",\"⪆\"],[\"gtrarr\",\"⥸\"],[\"gtrdot\",\"⋗\"],[\"gtreqless\",\"⋛\"],[\"gtreqqless\",\"⪌\"],[\"gtrless\",\"≷\"],[\"gtrsim\",\"≳\"],[\"gvertneqq\",\"≩︀\"],[\"gvnE\",\"≩︀\"],[\"hArr\",\"⇔\"],[\"hairsp\",\" \"],[\"half\",\"½\"],[\"hamilt\",\"ℋ\"],[\"hardcy\",\"ъ\"],[\"harr\",\"↔\"],[\"harrcir\",\"⥈\"],[\"harrw\",\"↭\"],[\"hbar\",\"ℏ\"],[\"hcirc\",\"ĥ\"],[\"hearts\",\"♥\"],[\"heartsuit\",\"♥\"],[\"hellip\",\"…\"],[\"hercon\",\"⊹\"],[\"hfr\",\"𝔥\"],[\"hksearow\",\"⤥\"],[\"hkswarow\",\"⤦\"],[\"hoarr\",\"⇿\"],[\"homtht\",\"∻\"],[\"hookleftarrow\",\"↩\"],[\"hookrightarrow\",\"↪\"],[\"hopf\",\"𝕙\"],[\"horbar\",\"―\"],[\"hscr\",\"𝒽\"],[\"hslash\",\"ℏ\"],[\"hstrok\",\"ħ\"],[\"hybull\",\"⁃\"],[\"hyphen\",\"‐\"],[\"iacute\",\"í\"],[\"ic\",\"⁣\"],[\"icirc\",\"î\"],[\"icy\",\"и\"],[\"iecy\",\"е\"],[\"iexcl\",\"¡\"],[\"iff\",\"⇔\"],[\"ifr\",\"𝔦\"],[\"igrave\",\"ì\"],[\"ii\",\"ⅈ\"],[\"iiiint\",\"⨌\"],[\"iiint\",\"∭\"],[\"iinfin\",\"⧜\"],[\"iiota\",\"℩\"],[\"ijlig\",\"ij\"],[\"imacr\",\"ī\"],[\"image\",\"ℑ\"],[\"imagline\",\"ℐ\"],[\"imagpart\",\"ℑ\"],[\"imath\",\"ı\"],[\"imof\",\"⊷\"],[\"imped\",\"Ƶ\"],[\"in\",\"∈\"],[\"incare\",\"℅\"],[\"infin\",\"∞\"],[\"infintie\",\"⧝\"],[\"inodot\",\"ı\"],[\"int\",\"∫\"],[\"intcal\",\"⊺\"],[\"integers\",\"ℤ\"],[\"intercal\",\"⊺\"],[\"intlarhk\",\"⨗\"],[\"intprod\",\"⨼\"],[\"iocy\",\"ё\"],[\"iogon\",\"į\"],[\"iopf\",\"𝕚\"],[\"iota\",\"ι\"],[\"iprod\",\"⨼\"],[\"iquest\",\"¿\"],[\"iscr\",\"𝒾\"],[\"isin\",\"∈\"],[\"isinE\",\"⋹\"],[\"isindot\",\"⋵\"],[\"isins\",\"⋴\"],[\"isinsv\",\"⋳\"],[\"isinv\",\"∈\"],[\"it\",\"⁢\"],[\"itilde\",\"ĩ\"],[\"iukcy\",\"і\"],[\"iuml\",\"ï\"],[\"jcirc\",\"ĵ\"],[\"jcy\",\"й\"],[\"jfr\",\"𝔧\"],[\"jmath\",\"ȷ\"],[\"jopf\",\"𝕛\"],[\"jscr\",\"𝒿\"],[\"jsercy\",\"ј\"],[\"jukcy\",\"є\"],[\"kappa\",\"κ\"],[\"kappav\",\"ϰ\"],[\"kcedil\",\"ķ\"],[\"kcy\",\"к\"],[\"kfr\",\"𝔨\"],[\"kgreen\",\"ĸ\"],[\"khcy\",\"х\"],[\"kjcy\",\"ќ\"],[\"kopf\",\"𝕜\"],[\"kscr\",\"𝓀\"],[\"lAarr\",\"⇚\"],[\"lArr\",\"⇐\"],[\"lAtail\",\"⤛\"],[\"lBarr\",\"⤎\"],[\"lE\",\"≦\"],[\"lEg\",\"⪋\"],[\"lHar\",\"⥢\"],[\"lacute\",\"ĺ\"],[\"laemptyv\",\"⦴\"],[\"lagran\",\"ℒ\"],[\"lambda\",\"λ\"],[\"lang\",\"⟨\"],[\"langd\",\"⦑\"],[\"langle\",\"⟨\"],[\"lap\",\"⪅\"],[\"laquo\",\"«\"],[\"larr\",\"←\"],[\"larrb\",\"⇤\"],[\"larrbfs\",\"⤟\"],[\"larrfs\",\"⤝\"],[\"larrhk\",\"↩\"],[\"larrlp\",\"↫\"],[\"larrpl\",\"⤹\"],[\"larrsim\",\"⥳\"],[\"larrtl\",\"↢\"],[\"lat\",\"⪫\"],[\"latail\",\"⤙\"],[\"late\",\"⪭\"],[\"lates\",\"⪭︀\"],[\"lbarr\",\"⤌\"],[\"lbbrk\",\"❲\"],[\"lbrace\",\"{\"],[\"lbrack\",\"[\"],[\"lbrke\",\"⦋\"],[\"lbrksld\",\"⦏\"],[\"lbrkslu\",\"⦍\"],[\"lcaron\",\"ľ\"],[\"lcedil\",\"ļ\"],[\"lceil\",\"⌈\"],[\"lcub\",\"{\"],[\"lcy\",\"л\"],[\"ldca\",\"⤶\"],[\"ldquo\",\"“\"],[\"ldquor\",\"„\"],[\"ldrdhar\",\"⥧\"],[\"ldrushar\",\"⥋\"],[\"ldsh\",\"↲\"],[\"le\",\"≤\"],[\"leftarrow\",\"←\"],[\"leftarrowtail\",\"↢\"],[\"leftharpoondown\",\"↽\"],[\"leftharpoonup\",\"↼\"],[\"leftleftarrows\",\"⇇\"],[\"leftrightarrow\",\"↔\"],[\"leftrightarrows\",\"⇆\"],[\"leftrightharpoons\",\"⇋\"],[\"leftrightsquigarrow\",\"↭\"],[\"leftthreetimes\",\"⋋\"],[\"leg\",\"⋚\"],[\"leq\",\"≤\"],[\"leqq\",\"≦\"],[\"leqslant\",\"⩽\"],[\"les\",\"⩽\"],[\"lescc\",\"⪨\"],[\"lesdot\",\"⩿\"],[\"lesdoto\",\"⪁\"],[\"lesdotor\",\"⪃\"],[\"lesg\",\"⋚︀\"],[\"lesges\",\"⪓\"],[\"lessapprox\",\"⪅\"],[\"lessdot\",\"⋖\"],[\"lesseqgtr\",\"⋚\"],[\"lesseqqgtr\",\"⪋\"],[\"lessgtr\",\"≶\"],[\"lesssim\",\"≲\"],[\"lfisht\",\"⥼\"],[\"lfloor\",\"⌊\"],[\"lfr\",\"𝔩\"],[\"lg\",\"≶\"],[\"lgE\",\"⪑\"],[\"lhard\",\"↽\"],[\"lharu\",\"↼\"],[\"lharul\",\"⥪\"],[\"lhblk\",\"▄\"],[\"ljcy\",\"љ\"],[\"ll\",\"≪\"],[\"llarr\",\"⇇\"],[\"llcorner\",\"⌞\"],[\"llhard\",\"⥫\"],[\"lltri\",\"◺\"],[\"lmidot\",\"ŀ\"],[\"lmoust\",\"⎰\"],[\"lmoustache\",\"⎰\"],[\"lnE\",\"≨\"],[\"lnap\",\"⪉\"],[\"lnapprox\",\"⪉\"],[\"lne\",\"⪇\"],[\"lneq\",\"⪇\"],[\"lneqq\",\"≨\"],[\"lnsim\",\"⋦\"],[\"loang\",\"⟬\"],[\"loarr\",\"⇽\"],[\"lobrk\",\"⟦\"],[\"longleftarrow\",\"⟵\"],[\"longleftrightarrow\",\"⟷\"],[\"longmapsto\",\"⟼\"],[\"longrightarrow\",\"⟶\"],[\"looparrowleft\",\"↫\"],[\"looparrowright\",\"↬\"],[\"lopar\",\"⦅\"],[\"lopf\",\"𝕝\"],[\"loplus\",\"⨭\"],[\"lotimes\",\"⨴\"],[\"lowast\",\"∗\"],[\"lowbar\",\"_\"],[\"loz\",\"◊\"],[\"lozenge\",\"◊\"],[\"lozf\",\"⧫\"],[\"lpar\",\"(\"],[\"lparlt\",\"⦓\"],[\"lrarr\",\"⇆\"],[\"lrcorner\",\"⌟\"],[\"lrhar\",\"⇋\"],[\"lrhard\",\"⥭\"],[\"lrm\",\"‎\"],[\"lrtri\",\"⊿\"],[\"lsaquo\",\"‹\"],[\"lscr\",\"𝓁\"],[\"lsh\",\"↰\"],[\"lsim\",\"≲\"],[\"lsime\",\"⪍\"],[\"lsimg\",\"⪏\"],[\"lsqb\",\"[\"],[\"lsquo\",\"‘\"],[\"lsquor\",\"‚\"],[\"lstrok\",\"ł\"],[\"lt\",\"<\"],[\"ltcc\",\"⪦\"],[\"ltcir\",\"⩹\"],[\"ltdot\",\"⋖\"],[\"lthree\",\"⋋\"],[\"ltimes\",\"⋉\"],[\"ltlarr\",\"⥶\"],[\"ltquest\",\"⩻\"],[\"ltrPar\",\"⦖\"],[\"ltri\",\"◃\"],[\"ltrie\",\"⊴\"],[\"ltrif\",\"◂\"],[\"lurdshar\",\"⥊\"],[\"luruhar\",\"⥦\"],[\"lvertneqq\",\"≨︀\"],[\"lvnE\",\"≨︀\"],[\"mDDot\",\"∺\"],[\"macr\",\"¯\"],[\"male\",\"♂\"],[\"malt\",\"✠\"],[\"maltese\",\"✠\"],[\"map\",\"↦\"],[\"mapsto\",\"↦\"],[\"mapstodown\",\"↧\"],[\"mapstoleft\",\"↤\"],[\"mapstoup\",\"↥\"],[\"marker\",\"▮\"],[\"mcomma\",\"⨩\"],[\"mcy\",\"м\"],[\"mdash\",\"—\"],[\"measuredangle\",\"∡\"],[\"mfr\",\"𝔪\"],[\"mho\",\"℧\"],[\"micro\",\"µ\"],[\"mid\",\"∣\"],[\"midast\",\"*\"],[\"midcir\",\"⫰\"],[\"middot\",\"·\"],[\"minus\",\"−\"],[\"minusb\",\"⊟\"],[\"minusd\",\"∸\"],[\"minusdu\",\"⨪\"],[\"mlcp\",\"⫛\"],[\"mldr\",\"…\"],[\"mnplus\",\"∓\"],[\"models\",\"⊧\"],[\"mopf\",\"𝕞\"],[\"mp\",\"∓\"],[\"mscr\",\"𝓂\"],[\"mstpos\",\"∾\"],[\"mu\",\"μ\"],[\"multimap\",\"⊸\"],[\"mumap\",\"⊸\"],[\"nGg\",\"⋙̸\"],[\"nGt\",\"≫⃒\"],[\"nGtv\",\"≫̸\"],[\"nLeftarrow\",\"⇍\"],[\"nLeftrightarrow\",\"⇎\"],[\"nLl\",\"⋘̸\"],[\"nLt\",\"≪⃒\"],[\"nLtv\",\"≪̸\"],[\"nRightarrow\",\"⇏\"],[\"nVDash\",\"⊯\"],[\"nVdash\",\"⊮\"],[\"nabla\",\"∇\"],[\"nacute\",\"ń\"],[\"nang\",\"∠⃒\"],[\"nap\",\"≉\"],[\"napE\",\"⩰̸\"],[\"napid\",\"≋̸\"],[\"napos\",\"ʼn\"],[\"napprox\",\"≉\"],[\"natur\",\"♮\"],[\"natural\",\"♮\"],[\"naturals\",\"ℕ\"],[\"nbsp\",\"\xA0\"],[\"nbump\",\"≎̸\"],[\"nbumpe\",\"≏̸\"],[\"ncap\",\"⩃\"],[\"ncaron\",\"ň\"],[\"ncedil\",\"ņ\"],[\"ncong\",\"≇\"],[\"ncongdot\",\"⩭̸\"],[\"ncup\",\"⩂\"],[\"ncy\",\"н\"],[\"ndash\",\"–\"],[\"ne\",\"≠\"],[\"neArr\",\"⇗\"],[\"nearhk\",\"⤤\"],[\"nearr\",\"↗\"],[\"nearrow\",\"↗\"],[\"nedot\",\"≐̸\"],[\"nequiv\",\"≢\"],[\"nesear\",\"⤨\"],[\"nesim\",\"≂̸\"],[\"nexist\",\"∄\"],[\"nexists\",\"∄\"],[\"nfr\",\"𝔫\"],[\"ngE\",\"≧̸\"],[\"nge\",\"≱\"],[\"ngeq\",\"≱\"],[\"ngeqq\",\"≧̸\"],[\"ngeqslant\",\"⩾̸\"],[\"nges\",\"⩾̸\"],[\"ngsim\",\"≵\"],[\"ngt\",\"≯\"],[\"ngtr\",\"≯\"],[\"nhArr\",\"⇎\"],[\"nharr\",\"↮\"],[\"nhpar\",\"⫲\"],[\"ni\",\"∋\"],[\"nis\",\"⋼\"],[\"nisd\",\"⋺\"],[\"niv\",\"∋\"],[\"njcy\",\"њ\"],[\"nlArr\",\"⇍\"],[\"nlE\",\"≦̸\"],[\"nlarr\",\"↚\"],[\"nldr\",\"‥\"],[\"nle\",\"≰\"],[\"nleftarrow\",\"↚\"],[\"nleftrightarrow\",\"↮\"],[\"nleq\",\"≰\"],[\"nleqq\",\"≦̸\"],[\"nleqslant\",\"⩽̸\"],[\"nles\",\"⩽̸\"],[\"nless\",\"≮\"],[\"nlsim\",\"≴\"],[\"nlt\",\"≮\"],[\"nltri\",\"⋪\"],[\"nltrie\",\"⋬\"],[\"nmid\",\"∤\"],[\"nopf\",\"𝕟\"],[\"not\",\"¬\"],[\"notin\",\"∉\"],[\"notinE\",\"⋹̸\"],[\"notindot\",\"⋵̸\"],[\"notinva\",\"∉\"],[\"notinvb\",\"⋷\"],[\"notinvc\",\"⋶\"],[\"notni\",\"∌\"],[\"notniva\",\"∌\"],[\"notnivb\",\"⋾\"],[\"notnivc\",\"⋽\"],[\"npar\",\"∦\"],[\"nparallel\",\"∦\"],[\"nparsl\",\"⫽⃥\"],[\"npart\",\"∂̸\"],[\"npolint\",\"⨔\"],[\"npr\",\"⊀\"],[\"nprcue\",\"⋠\"],[\"npre\",\"⪯̸\"],[\"nprec\",\"⊀\"],[\"npreceq\",\"⪯̸\"],[\"nrArr\",\"⇏\"],[\"nrarr\",\"↛\"],[\"nrarrc\",\"⤳̸\"],[\"nrarrw\",\"↝̸\"],[\"nrightarrow\",\"↛\"],[\"nrtri\",\"⋫\"],[\"nrtrie\",\"⋭\"],[\"nsc\",\"⊁\"],[\"nsccue\",\"⋡\"],[\"nsce\",\"⪰̸\"],[\"nscr\",\"𝓃\"],[\"nshortmid\",\"∤\"],[\"nshortparallel\",\"∦\"],[\"nsim\",\"≁\"],[\"nsime\",\"≄\"],[\"nsimeq\",\"≄\"],[\"nsmid\",\"∤\"],[\"nspar\",\"∦\"],[\"nsqsube\",\"⋢\"],[\"nsqsupe\",\"⋣\"],[\"nsub\",\"⊄\"],[\"nsubE\",\"⫅̸\"],[\"nsube\",\"⊈\"],[\"nsubset\",\"⊂⃒\"],[\"nsubseteq\",\"⊈\"],[\"nsubseteqq\",\"⫅̸\"],[\"nsucc\",\"⊁\"],[\"nsucceq\",\"⪰̸\"],[\"nsup\",\"⊅\"],[\"nsupE\",\"⫆̸\"],[\"nsupe\",\"⊉\"],[\"nsupset\",\"⊃⃒\"],[\"nsupseteq\",\"⊉\"],[\"nsupseteqq\",\"⫆̸\"],[\"ntgl\",\"≹\"],[\"ntilde\",\"ñ\"],[\"ntlg\",\"≸\"],[\"ntriangleleft\",\"⋪\"],[\"ntrianglelefteq\",\"⋬\"],[\"ntriangleright\",\"⋫\"],[\"ntrianglerighteq\",\"⋭\"],[\"nu\",\"ν\"],[\"num\",\"#\"],[\"numero\",\"№\"],[\"numsp\",\" \"],[\"nvDash\",\"⊭\"],[\"nvHarr\",\"⤄\"],[\"nvap\",\"≍⃒\"],[\"nvdash\",\"⊬\"],[\"nvge\",\"≥⃒\"],[\"nvgt\",\">⃒\"],[\"nvinfin\",\"⧞\"],[\"nvlArr\",\"⤂\"],[\"nvle\",\"≤⃒\"],[\"nvlt\",\"<⃒\"],[\"nvltrie\",\"⊴⃒\"],[\"nvrArr\",\"⤃\"],[\"nvrtrie\",\"⊵⃒\"],[\"nvsim\",\"∼⃒\"],[\"nwArr\",\"⇖\"],[\"nwarhk\",\"⤣\"],[\"nwarr\",\"↖\"],[\"nwarrow\",\"↖\"],[\"nwnear\",\"⤧\"],[\"oS\",\"Ⓢ\"],[\"oacute\",\"ó\"],[\"oast\",\"⊛\"],[\"ocir\",\"⊚\"],[\"ocirc\",\"ô\"],[\"ocy\",\"о\"],[\"odash\",\"⊝\"],[\"odblac\",\"ő\"],[\"odiv\",\"⨸\"],[\"odot\",\"⊙\"],[\"odsold\",\"⦼\"],[\"oelig\",\"œ\"],[\"ofcir\",\"⦿\"],[\"ofr\",\"𝔬\"],[\"ogon\",\"˛\"],[\"ograve\",\"ò\"],[\"ogt\",\"⧁\"],[\"ohbar\",\"⦵\"],[\"ohm\",\"Ω\"],[\"oint\",\"∮\"],[\"olarr\",\"↺\"],[\"olcir\",\"⦾\"],[\"olcross\",\"⦻\"],[\"oline\",\"‾\"],[\"olt\",\"⧀\"],[\"omacr\",\"ō\"],[\"omega\",\"ω\"],[\"omicron\",\"ο\"],[\"omid\",\"⦶\"],[\"ominus\",\"⊖\"],[\"oopf\",\"𝕠\"],[\"opar\",\"⦷\"],[\"operp\",\"⦹\"],[\"oplus\",\"⊕\"],[\"or\",\"∨\"],[\"orarr\",\"↻\"],[\"ord\",\"⩝\"],[\"order\",\"ℴ\"],[\"orderof\",\"ℴ\"],[\"ordf\",\"ª\"],[\"ordm\",\"º\"],[\"origof\",\"⊶\"],[\"oror\",\"⩖\"],[\"orslope\",\"⩗\"],[\"orv\",\"⩛\"],[\"oscr\",\"ℴ\"],[\"oslash\",\"ø\"],[\"osol\",\"⊘\"],[\"otilde\",\"õ\"],[\"otimes\",\"⊗\"],[\"otimesas\",\"⨶\"],[\"ouml\",\"ö\"],[\"ovbar\",\"⌽\"],[\"par\",\"∥\"],[\"para\",\"¶\"],[\"parallel\",\"∥\"],[\"parsim\",\"⫳\"],[\"parsl\",\"⫽\"],[\"part\",\"∂\"],[\"pcy\",\"п\"],[\"percnt\",\"%\"],[\"period\",\".\"],[\"permil\",\"‰\"],[\"perp\",\"⊥\"],[\"pertenk\",\"‱\"],[\"pfr\",\"𝔭\"],[\"phi\",\"φ\"],[\"phiv\",\"ϕ\"],[\"phmmat\",\"ℳ\"],[\"phone\",\"☎\"],[\"pi\",\"π\"],[\"pitchfork\",\"⋔\"],[\"piv\",\"ϖ\"],[\"planck\",\"ℏ\"],[\"planckh\",\"ℎ\"],[\"plankv\",\"ℏ\"],[\"plus\",\"+\"],[\"plusacir\",\"⨣\"],[\"plusb\",\"⊞\"],[\"pluscir\",\"⨢\"],[\"plusdo\",\"∔\"],[\"plusdu\",\"⨥\"],[\"pluse\",\"⩲\"],[\"plusmn\",\"±\"],[\"plussim\",\"⨦\"],[\"plustwo\",\"⨧\"],[\"pm\",\"±\"],[\"pointint\",\"⨕\"],[\"popf\",\"𝕡\"],[\"pound\",\"£\"],[\"pr\",\"≺\"],[\"prE\",\"⪳\"],[\"prap\",\"⪷\"],[\"prcue\",\"≼\"],[\"pre\",\"⪯\"],[\"prec\",\"≺\"],[\"precapprox\",\"⪷\"],[\"preccurlyeq\",\"≼\"],[\"preceq\",\"⪯\"],[\"precnapprox\",\"⪹\"],[\"precneqq\",\"⪵\"],[\"precnsim\",\"⋨\"],[\"precsim\",\"≾\"],[\"prime\",\"′\"],[\"primes\",\"ℙ\"],[\"prnE\",\"⪵\"],[\"prnap\",\"⪹\"],[\"prnsim\",\"⋨\"],[\"prod\",\"∏\"],[\"profalar\",\"⌮\"],[\"profline\",\"⌒\"],[\"profsurf\",\"⌓\"],[\"prop\",\"∝\"],[\"propto\",\"∝\"],[\"prsim\",\"≾\"],[\"prurel\",\"⊰\"],[\"pscr\",\"𝓅\"],[\"psi\",\"ψ\"],[\"puncsp\",\" \"],[\"qfr\",\"𝔮\"],[\"qint\",\"⨌\"],[\"qopf\",\"𝕢\"],[\"qprime\",\"⁗\"],[\"qscr\",\"𝓆\"],[\"quaternions\",\"ℍ\"],[\"quatint\",\"⨖\"],[\"quest\",\"?\"],[\"questeq\",\"≟\"],[\"quot\",\"\\\"\"],[\"rAarr\",\"⇛\"],[\"rArr\",\"⇒\"],[\"rAtail\",\"⤜\"],[\"rBarr\",\"⤏\"],[\"rHar\",\"⥤\"],[\"race\",\"∽̱\"],[\"racute\",\"ŕ\"],[\"radic\",\"√\"],[\"raemptyv\",\"⦳\"],[\"rang\",\"⟩\"],[\"rangd\",\"⦒\"],[\"range\",\"⦥\"],[\"rangle\",\"⟩\"],[\"raquo\",\"»\"],[\"rarr\",\"→\"],[\"rarrap\",\"⥵\"],[\"rarrb\",\"⇥\"],[\"rarrbfs\",\"⤠\"],[\"rarrc\",\"⤳\"],[\"rarrfs\",\"⤞\"],[\"rarrhk\",\"↪\"],[\"rarrlp\",\"↬\"],[\"rarrpl\",\"⥅\"],[\"rarrsim\",\"⥴\"],[\"rarrtl\",\"↣\"],[\"rarrw\",\"↝\"],[\"ratail\",\"⤚\"],[\"ratio\",\"∶\"],[\"rationals\",\"ℚ\"],[\"rbarr\",\"⤍\"],[\"rbbrk\",\"❳\"],[\"rbrace\",\"}\"],[\"rbrack\",\"]\"],[\"rbrke\",\"⦌\"],[\"rbrksld\",\"⦎\"],[\"rbrkslu\",\"⦐\"],[\"rcaron\",\"ř\"],[\"rcedil\",\"ŗ\"],[\"rceil\",\"⌉\"],[\"rcub\",\"}\"],[\"rcy\",\"р\"],[\"rdca\",\"⤷\"],[\"rdldhar\",\"⥩\"],[\"rdquo\",\"”\"],[\"rdquor\",\"”\"],[\"rdsh\",\"↳\"],[\"real\",\"ℜ\"],[\"realine\",\"ℛ\"],[\"realpart\",\"ℜ\"],[\"reals\",\"ℝ\"],[\"rect\",\"▭\"],[\"reg\",\"®\"],[\"rfisht\",\"⥽\"],[\"rfloor\",\"⌋\"],[\"rfr\",\"𝔯\"],[\"rhard\",\"⇁\"],[\"rharu\",\"⇀\"],[\"rharul\",\"⥬\"],[\"rho\",\"ρ\"],[\"rhov\",\"ϱ\"],[\"rightarrow\",\"→\"],[\"rightarrowtail\",\"↣\"],[\"rightharpoondown\",\"⇁\"],[\"rightharpoonup\",\"⇀\"],[\"rightleftarrows\",\"⇄\"],[\"rightleftharpoons\",\"⇌\"],[\"rightrightarrows\",\"⇉\"],[\"rightsquigarrow\",\"↝\"],[\"rightthreetimes\",\"⋌\"],[\"ring\",\"˚\"],[\"risingdotseq\",\"≓\"],[\"rlarr\",\"⇄\"],[\"rlhar\",\"⇌\"],[\"rlm\",\"‏\"],[\"rmoust\",\"⎱\"],[\"rmoustache\",\"⎱\"],[\"rnmid\",\"⫮\"],[\"roang\",\"⟭\"],[\"roarr\",\"⇾\"],[\"robrk\",\"⟧\"],[\"ropar\",\"⦆\"],[\"ropf\",\"𝕣\"],[\"roplus\",\"⨮\"],[\"rotimes\",\"⨵\"],[\"rpar\",\")\"],[\"rpargt\",\"⦔\"],[\"rppolint\",\"⨒\"],[\"rrarr\",\"⇉\"],[\"rsaquo\",\"›\"],[\"rscr\",\"𝓇\"],[\"rsh\",\"↱\"],[\"rsqb\",\"]\"],[\"rsquo\",\"’\"],[\"rsquor\",\"’\"],[\"rthree\",\"⋌\"],[\"rtimes\",\"⋊\"],[\"rtri\",\"▹\"],[\"rtrie\",\"⊵\"],[\"rtrif\",\"▸\"],[\"rtriltri\",\"⧎\"],[\"ruluhar\",\"⥨\"],[\"rx\",\"℞\"],[\"sacute\",\"ś\"],[\"sbquo\",\"‚\"],[\"sc\",\"≻\"],[\"scE\",\"⪴\"],[\"scap\",\"⪸\"],[\"scaron\",\"š\"],[\"sccue\",\"≽\"],[\"sce\",\"⪰\"],[\"scedil\",\"ş\"],[\"scirc\",\"ŝ\"],[\"scnE\",\"⪶\"],[\"scnap\",\"⪺\"],[\"scnsim\",\"⋩\"],[\"scpolint\",\"⨓\"],[\"scsim\",\"≿\"],[\"scy\",\"с\"],[\"sdot\",\"⋅\"],[\"sdotb\",\"⊡\"],[\"sdote\",\"⩦\"],[\"seArr\",\"⇘\"],[\"searhk\",\"⤥\"],[\"searr\",\"↘\"],[\"searrow\",\"↘\"],[\"sect\",\"§\"],[\"semi\",\";\"],[\"seswar\",\"⤩\"],[\"setminus\",\"∖\"],[\"setmn\",\"∖\"],[\"sext\",\"✶\"],[\"sfr\",\"𝔰\"],[\"sfrown\",\"⌢\"],[\"sharp\",\"♯\"],[\"shchcy\",\"щ\"],[\"shcy\",\"ш\"],[\"shortmid\",\"∣\"],[\"shortparallel\",\"∥\"],[\"shy\",\"­\"],[\"sigma\",\"σ\"],[\"sigmaf\",\"ς\"],[\"sigmav\",\"ς\"],[\"sim\",\"∼\"],[\"simdot\",\"⩪\"],[\"sime\",\"≃\"],[\"simeq\",\"≃\"],[\"simg\",\"⪞\"],[\"simgE\",\"⪠\"],[\"siml\",\"⪝\"],[\"simlE\",\"⪟\"],[\"simne\",\"≆\"],[\"simplus\",\"⨤\"],[\"simrarr\",\"⥲\"],[\"slarr\",\"←\"],[\"smallsetminus\",\"∖\"],[\"smashp\",\"⨳\"],[\"smeparsl\",\"⧤\"],[\"smid\",\"∣\"],[\"smile\",\"⌣\"],[\"smt\",\"⪪\"],[\"smte\",\"⪬\"],[\"smtes\",\"⪬︀\"],[\"softcy\",\"ь\"],[\"sol\",\"/\"],[\"solb\",\"⧄\"],[\"solbar\",\"⌿\"],[\"sopf\",\"𝕤\"],[\"spades\",\"♠\"],[\"spadesuit\",\"♠\"],[\"spar\",\"∥\"],[\"sqcap\",\"⊓\"],[\"sqcaps\",\"⊓︀\"],[\"sqcup\",\"⊔\"],[\"sqcups\",\"⊔︀\"],[\"sqsub\",\"⊏\"],[\"sqsube\",\"⊑\"],[\"sqsubset\",\"⊏\"],[\"sqsubseteq\",\"⊑\"],[\"sqsup\",\"⊐\"],[\"sqsupe\",\"⊒\"],[\"sqsupset\",\"⊐\"],[\"sqsupseteq\",\"⊒\"],[\"squ\",\"□\"],[\"square\",\"□\"],[\"squarf\",\"▪\"],[\"squf\",\"▪\"],[\"srarr\",\"→\"],[\"sscr\",\"𝓈\"],[\"ssetmn\",\"∖\"],[\"ssmile\",\"⌣\"],[\"sstarf\",\"⋆\"],[\"star\",\"☆\"],[\"starf\",\"★\"],[\"straightepsilon\",\"ϵ\"],[\"straightphi\",\"ϕ\"],[\"strns\",\"¯\"],[\"sub\",\"⊂\"],[\"subE\",\"⫅\"],[\"subdot\",\"⪽\"],[\"sube\",\"⊆\"],[\"subedot\",\"⫃\"],[\"submult\",\"⫁\"],[\"subnE\",\"⫋\"],[\"subne\",\"⊊\"],[\"subplus\",\"⪿\"],[\"subrarr\",\"⥹\"],[\"subset\",\"⊂\"],[\"subseteq\",\"⊆\"],[\"subseteqq\",\"⫅\"],[\"subsetneq\",\"⊊\"],[\"subsetneqq\",\"⫋\"],[\"subsim\",\"⫇\"],[\"subsub\",\"⫕\"],[\"subsup\",\"⫓\"],[\"succ\",\"≻\"],[\"succapprox\",\"⪸\"],[\"succcurlyeq\",\"≽\"],[\"succeq\",\"⪰\"],[\"succnapprox\",\"⪺\"],[\"succneqq\",\"⪶\"],[\"succnsim\",\"⋩\"],[\"succsim\",\"≿\"],[\"sum\",\"∑\"],[\"sung\",\"♪\"],[\"sup\",\"⊃\"],[\"sup1\",\"¹\"],[\"sup2\",\"²\"],[\"sup3\",\"³\"],[\"supE\",\"⫆\"],[\"supdot\",\"⪾\"],[\"supdsub\",\"⫘\"],[\"supe\",\"⊇\"],[\"supedot\",\"⫄\"],[\"suphsol\",\"⟉\"],[\"suphsub\",\"⫗\"],[\"suplarr\",\"⥻\"],[\"supmult\",\"⫂\"],[\"supnE\",\"⫌\"],[\"supne\",\"⊋\"],[\"supplus\",\"⫀\"],[\"supset\",\"⊃\"],[\"supseteq\",\"⊇\"],[\"supseteqq\",\"⫆\"],[\"supsetneq\",\"⊋\"],[\"supsetneqq\",\"⫌\"],[\"supsim\",\"⫈\"],[\"supsub\",\"⫔\"],[\"supsup\",\"⫖\"],[\"swArr\",\"⇙\"],[\"swarhk\",\"⤦\"],[\"swarr\",\"↙\"],[\"swarrow\",\"↙\"],[\"swnwar\",\"⤪\"],[\"szlig\",\"ß\"],[\"target\",\"⌖\"],[\"tau\",\"τ\"],[\"tbrk\",\"⎴\"],[\"tcaron\",\"ť\"],[\"tcedil\",\"ţ\"],[\"tcy\",\"т\"],[\"tdot\",\"⃛\"],[\"telrec\",\"⌕\"],[\"tfr\",\"𝔱\"],[\"there4\",\"∴\"],[\"therefore\",\"∴\"],[\"theta\",\"θ\"],[\"thetasym\",\"ϑ\"],[\"thetav\",\"ϑ\"],[\"thickapprox\",\"≈\"],[\"thicksim\",\"∼\"],[\"thinsp\",\" \"],[\"thkap\",\"≈\"],[\"thksim\",\"∼\"],[\"thorn\",\"þ\"],[\"tilde\",\"˜\"],[\"times\",\"×\"],[\"timesb\",\"⊠\"],[\"timesbar\",\"⨱\"],[\"timesd\",\"⨰\"],[\"tint\",\"∭\"],[\"toea\",\"⤨\"],[\"top\",\"⊤\"],[\"topbot\",\"⌶\"],[\"topcir\",\"⫱\"],[\"topf\",\"𝕥\"],[\"topfork\",\"⫚\"],[\"tosa\",\"⤩\"],[\"tprime\",\"‴\"],[\"trade\",\"™\"],[\"triangle\",\"▵\"],[\"triangledown\",\"▿\"],[\"triangleleft\",\"◃\"],[\"trianglelefteq\",\"⊴\"],[\"triangleq\",\"≜\"],[\"triangleright\",\"▹\"],[\"trianglerighteq\",\"⊵\"],[\"tridot\",\"◬\"],[\"trie\",\"≜\"],[\"triminus\",\"⨺\"],[\"triplus\",\"⨹\"],[\"trisb\",\"⧍\"],[\"tritime\",\"⨻\"],[\"trpezium\",\"⏢\"],[\"tscr\",\"𝓉\"],[\"tscy\",\"ц\"],[\"tshcy\",\"ћ\"],[\"tstrok\",\"ŧ\"],[\"twixt\",\"≬\"],[\"twoheadleftarrow\",\"↞\"],[\"twoheadrightarrow\",\"↠\"],[\"uArr\",\"⇑\"],[\"uHar\",\"⥣\"],[\"uacute\",\"ú\"],[\"uarr\",\"↑\"],[\"ubrcy\",\"ў\"],[\"ubreve\",\"ŭ\"],[\"ucirc\",\"û\"],[\"ucy\",\"у\"],[\"udarr\",\"⇅\"],[\"udblac\",\"ű\"],[\"udhar\",\"⥮\"],[\"ufisht\",\"⥾\"],[\"ufr\",\"𝔲\"],[\"ugrave\",\"ù\"],[\"uharl\",\"↿\"],[\"uharr\",\"↾\"],[\"uhblk\",\"▀\"],[\"ulcorn\",\"⌜\"],[\"ulcorner\",\"⌜\"],[\"ulcrop\",\"⌏\"],[\"ultri\",\"◸\"],[\"umacr\",\"ū\"],[\"uml\",\"¨\"],[\"uogon\",\"ų\"],[\"uopf\",\"𝕦\"],[\"uparrow\",\"↑\"],[\"updownarrow\",\"↕\"],[\"upharpoonleft\",\"↿\"],[\"upharpoonright\",\"↾\"],[\"uplus\",\"⊎\"],[\"upsi\",\"υ\"],[\"upsih\",\"ϒ\"],[\"upsilon\",\"υ\"],[\"upuparrows\",\"⇈\"],[\"urcorn\",\"⌝\"],[\"urcorner\",\"⌝\"],[\"urcrop\",\"⌎\"],[\"uring\",\"ů\"],[\"urtri\",\"◹\"],[\"uscr\",\"𝓊\"],[\"utdot\",\"⋰\"],[\"utilde\",\"ũ\"],[\"utri\",\"▵\"],[\"utrif\",\"▴\"],[\"uuarr\",\"⇈\"],[\"uuml\",\"ü\"],[\"uwangle\",\"⦧\"],[\"vArr\",\"⇕\"],[\"vBar\",\"⫨\"],[\"vBarv\",\"⫩\"],[\"vDash\",\"⊨\"],[\"vangrt\",\"⦜\"],[\"varepsilon\",\"ϵ\"],[\"varkappa\",\"ϰ\"],[\"varnothing\",\"∅\"],[\"varphi\",\"ϕ\"],[\"varpi\",\"ϖ\"],[\"varpropto\",\"∝\"],[\"varr\",\"↕\"],[\"varrho\",\"ϱ\"],[\"varsigma\",\"ς\"],[\"varsubsetneq\",\"⊊︀\"],[\"varsubsetneqq\",\"⫋︀\"],[\"varsupsetneq\",\"⊋︀\"],[\"varsupsetneqq\",\"⫌︀\"],[\"vartheta\",\"ϑ\"],[\"vartriangleleft\",\"⊲\"],[\"vartriangleright\",\"⊳\"],[\"vcy\",\"в\"],[\"vdash\",\"⊢\"],[\"vee\",\"∨\"],[\"veebar\",\"⊻\"],[\"veeeq\",\"≚\"],[\"vellip\",\"⋮\"],[\"verbar\",\"|\"],[\"vert\",\"|\"],[\"vfr\",\"𝔳\"],[\"vltri\",\"⊲\"],[\"vnsub\",\"⊂⃒\"],[\"vnsup\",\"⊃⃒\"],[\"vopf\",\"𝕧\"],[\"vprop\",\"∝\"],[\"vrtri\",\"⊳\"],[\"vscr\",\"𝓋\"],[\"vsubnE\",\"⫋︀\"],[\"vsubne\",\"⊊︀\"],[\"vsupnE\",\"⫌︀\"],[\"vsupne\",\"⊋︀\"],[\"vzigzag\",\"⦚\"],[\"wcirc\",\"ŵ\"],[\"wedbar\",\"⩟\"],[\"wedge\",\"∧\"],[\"wedgeq\",\"≙\"],[\"weierp\",\"℘\"],[\"wfr\",\"𝔴\"],[\"wopf\",\"𝕨\"],[\"wp\",\"℘\"],[\"wr\",\"≀\"],[\"wreath\",\"≀\"],[\"wscr\",\"𝓌\"],[\"xcap\",\"⋂\"],[\"xcirc\",\"◯\"],[\"xcup\",\"⋃\"],[\"xdtri\",\"▽\"],[\"xfr\",\"𝔵\"],[\"xhArr\",\"⟺\"],[\"xharr\",\"⟷\"],[\"xi\",\"ξ\"],[\"xlArr\",\"⟸\"],[\"xlarr\",\"⟵\"],[\"xmap\",\"⟼\"],[\"xnis\",\"⋻\"],[\"xodot\",\"⨀\"],[\"xopf\",\"𝕩\"],[\"xoplus\",\"⨁\"],[\"xotime\",\"⨂\"],[\"xrArr\",\"⟹\"],[\"xrarr\",\"⟶\"],[\"xscr\",\"𝓍\"],[\"xsqcup\",\"⨆\"],[\"xuplus\",\"⨄\"],[\"xutri\",\"△\"],[\"xvee\",\"⋁\"],[\"xwedge\",\"⋀\"],[\"yacute\",\"ý\"],[\"yacy\",\"я\"],[\"ycirc\",\"ŷ\"],[\"ycy\",\"ы\"],[\"yen\",\"¥\"],[\"yfr\",\"𝔶\"],[\"yicy\",\"ї\"],[\"yopf\",\"𝕪\"],[\"yscr\",\"𝓎\"],[\"yucy\",\"ю\"],[\"yuml\",\"ÿ\"],[\"zacute\",\"ź\"],[\"zcaron\",\"ž\"],[\"zcy\",\"з\"],[\"zdot\",\"ż\"],[\"zeetrf\",\"ℨ\"],[\"zeta\",\"ζ\"],[\"zfr\",\"𝔷\"],[\"zhcy\",\"ж\"],[\"zigrarr\",\"⇝\"],[\"zopf\",\"𝕫\"],[\"zscr\",\"𝓏\"],[\"zwj\",\"‍\"],[\"zwnj\",\"‌\"]]"));
6009
6490
 
6010
6491
  //#endregion
6011
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/entities.js
6492
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/entities.js
6012
6493
  /** The largest code point Unicode defines. */
6013
6494
  const MAX_CODE_POINT = 1114111;
6014
6495
  /**
@@ -6031,7 +6512,7 @@ const decodeEntity = (entity) => {
6031
6512
  };
6032
6513
 
6033
6514
  //#endregion
6034
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/unescape.js
6515
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/unescape.js
6035
6516
  /** The punctuation set a backslash may escape, per the spec. */
6036
6517
  const ESCAPABLE$1 = "[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^_`{|}~-]";
6037
6518
  /** One entity, in any of the three spec forms. */
@@ -6046,7 +6527,7 @@ const unescapeChar = (source) => {
6046
6527
  const unescapeString = (source) => reBackslashOrAmp.test(source) ? source.replace(reEntityOrEscapedChar, unescapeChar) : source;
6047
6528
 
6048
6529
  //#endregion
6049
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/blocks/code.js
6530
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/blocks/code.js
6050
6531
  const reBlankLine = /^[ \t]*$/;
6051
6532
  const reClosingCodeFence = /^(?:`{3,}|~{3,})(?=[ \t]*$)/;
6052
6533
  /**
@@ -6131,7 +6612,7 @@ const codeConstruct = {
6131
6612
  };
6132
6613
 
6133
6614
  //#endregion
6134
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/blocks/document.js
6615
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/blocks/document.js
6135
6616
  /** The document root: contains everything except a bare list item. */
6136
6617
  const documentConstruct = {
6137
6618
  type: "document",
@@ -6145,7 +6626,7 @@ const documentConstruct = {
6145
6626
  };
6146
6627
 
6147
6628
  //#endregion
6148
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/blocks/fencedCode.js
6629
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/blocks/fencedCode.js
6149
6630
  const reCodeFence = /^`{3,}(?!.*`)|^~{3,}/;
6150
6631
  const fenceCharOf = (char) => char === "`" || char === "~" ? char : void 0;
6151
6632
  /** The fenced-code block start: three or more backticks or tildes. */
@@ -6170,7 +6651,7 @@ const fencedCodeStart = {
6170
6651
  };
6171
6652
 
6172
6653
  //#endregion
6173
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/patterns.js
6654
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/patterns.js
6174
6655
  const stickyCache = /* @__PURE__ */ new WeakMap();
6175
6656
  const globalCache = /* @__PURE__ */ new WeakMap();
6176
6657
  const clone = (pattern, flag, dropCaret) => {
@@ -6195,7 +6676,7 @@ const globalOf = (pattern) => {
6195
6676
  };
6196
6677
 
6197
6678
  //#endregion
6198
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/references.js
6679
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/references.js
6199
6680
  const ESCAPABLE = "[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^_`{|}~-]";
6200
6681
  const ESCAPED_CHAR = `\\\\${ESCAPABLE}`;
6201
6682
  const reLinkTitle = new RegExp(`^(?:"(${ESCAPED_CHAR}|\\\\[^\\\\]|[^\\\\"\\x00])*"|'(${ESCAPED_CHAR}|\\\\[^\\\\]|[^\\\\'\\x00])*'|\\((${ESCAPED_CHAR}|\\\\[^\\\\]|[^\\\\()\\x00])*\\))`);
@@ -6370,7 +6851,7 @@ const parseReference = (text) => {
6370
6851
  };
6371
6852
 
6372
6853
  //#endregion
6373
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/blocks/footnoteDefinition.js
6854
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/blocks/footnoteDefinition.js
6374
6855
  /**
6375
6856
  * `_scan_footnote_definition` from `src/scanners.re`:
6376
6857
  *
@@ -6448,7 +6929,7 @@ const footnoteDefinitionStart = {
6448
6929
  };
6449
6930
 
6450
6931
  //#endregion
6451
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/blocks/indentedCode.js
6932
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/blocks/indentedCode.js
6452
6933
  /** The indented-code block start: four columns of indentation. */
6453
6934
  const indentedCodeStart = {
6454
6935
  name: "indentedCode",
@@ -6463,7 +6944,7 @@ const indentedCodeStart = {
6463
6944
  };
6464
6945
 
6465
6946
  //#endregion
6466
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/segments.js
6947
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/segments.js
6467
6948
  /**
6468
6949
  * The absolute source offset of `textIndex` within a segmented content run.
6469
6950
  *
@@ -6498,7 +6979,7 @@ const sliceWithSegments = (segments, from, to) => {
6498
6979
  };
6499
6980
 
6500
6981
  //#endregion
6501
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/blocks/linkReferenceDefinition.js
6982
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/blocks/linkReferenceDefinition.js
6502
6983
  const C_OPEN_BRACKET$1 = 91;
6503
6984
  /**
6504
6985
  * Split every leading link reference definition out of `block`, inserting one
@@ -6564,7 +7045,7 @@ const definitionConstruct = {
6564
7045
  };
6565
7046
 
6566
7047
  //#endregion
6567
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/blocks/list.js
7048
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/blocks/list.js
6568
7049
  const reBulletListMarker = /^[*+-]/;
6569
7050
  const reOrderedListMarker = /^(\d{1,9})([.)])/;
6570
7051
  const reNonSpace$1 = /[^ \t\f\v\r\n]/;
@@ -6718,7 +7199,7 @@ const listItemStart = {
6718
7199
  };
6719
7200
 
6720
7201
  //#endregion
6721
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/blocks/paragraph.js
7202
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/blocks/paragraph.js
6722
7203
  /** Paragraph: absorbs lines until a blank one, and contains nothing. */
6723
7204
  const paragraphConstruct = {
6724
7205
  type: "paragraph",
@@ -6741,7 +7222,7 @@ const paragraphConstruct = {
6741
7222
  };
6742
7223
 
6743
7224
  //#endregion
6744
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/blocks/setextHeading.js
7225
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/blocks/setextHeading.js
6745
7226
  const reSetextHeadingLine = /^(?:=+|-+)[ \t]*$/;
6746
7227
  /** The setext heading block start: a run of `=` or `-` under a paragraph. */
6747
7228
  const setextHeadingStart = {
@@ -6762,7 +7243,7 @@ const setextHeadingStart = {
6762
7243
  };
6763
7244
 
6764
7245
  //#endregion
6765
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/blocks/table.js
7246
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/blocks/table.js
6766
7247
  /**
6767
7248
  * Upstream's `MAX_AUTOCOMPLETED_CELLS`: the ceiling on cells the parser
6768
7249
  * invents to pad short rows, which is what stops a wide header followed by a
@@ -7134,7 +7615,7 @@ const tableCellConstruct = {
7134
7615
  };
7135
7616
 
7136
7617
  //#endregion
7137
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/blocks/taskListItem.js
7618
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/blocks/taskListItem.js
7138
7619
  /**
7139
7620
  * `_scan_tasklist`, as the generated scanner accepts it.
7140
7621
  *
@@ -7169,7 +7650,7 @@ const taskListItemStart = {
7169
7650
  };
7170
7651
 
7171
7652
  //#endregion
7172
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/blocks/thematicBreak.js
7653
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/blocks/thematicBreak.js
7173
7654
  const reThematicBreak = /^(?:\*[ \t]*){3,}$|^(?:_[ \t]*){3,}$|^(?:-[ \t]*){3,}$/;
7174
7655
  const markerCharOf$1 = (char) => char === "-" || char === "_" || char === "*" ? char : void 0;
7175
7656
  /** Thematic break: one line, no children. */
@@ -7201,7 +7682,7 @@ const thematicBreakStart = {
7201
7682
  };
7202
7683
 
7203
7684
  //#endregion
7204
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/blockRegistry.js
7685
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/blockRegistry.js
7205
7686
  const constructTable = (constructs) => new Map(constructs.map((construct) => [construct.type, construct]));
7206
7687
  const commonmarkDialect$1 = {
7207
7688
  constructs: constructTable([
@@ -7274,7 +7755,7 @@ const blockDialect = (dialect) => {
7274
7755
  };
7275
7756
 
7276
7757
  //#endregion
7277
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/lineIndex.js
7758
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/lineIndex.js
7278
7759
  /**
7279
7760
  * A precomputed index of line-start offsets over a fixed source text,
7280
7761
  * answering `positionAt(offset)` in `O(log n)` via binary search rather than
@@ -7349,7 +7830,7 @@ var LineIndex = class LineIndex {
7349
7830
  };
7350
7831
 
7351
7832
  //#endregion
7352
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/inlineNode.js
7833
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/inlineNode.js
7353
7834
  /** Open a node with no links. */
7354
7835
  const makeInlineNode = (type, start, end, value = "") => ({
7355
7836
  type,
@@ -7402,7 +7883,7 @@ const childrenOf = (node) => {
7402
7883
  };
7403
7884
 
7404
7885
  //#endregion
7405
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/inlines/emphasis.js
7886
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/inlines/emphasis.js
7406
7887
  const C_ASTERISK$1 = 42;
7407
7888
  const C_UNDERSCORE$1 = 95;
7408
7889
  const rePunctuation = /^[!"#$%&'()*+,\-./:;<=>?@[\]\\^_`{|}~\p{P}\p{S}]/u;
@@ -7480,7 +7961,7 @@ const emphasisConstruct = {
7480
7961
  };
7481
7962
 
7482
7963
  //#endregion
7483
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/inlines/strikethrough.js
7964
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/inlines/strikethrough.js
7484
7965
  /**
7485
7966
  * Consume a `~` run as literal text and, when it is a viable one- or
7486
7967
  * two-tilde run, push it onto the shared delimiter stack.
@@ -7555,7 +8036,7 @@ const strikethroughConstruct = {
7555
8036
  };
7556
8037
 
7557
8038
  //#endregion
7558
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/inlines/autolink.js
8039
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/inlines/autolink.js
7559
8040
  const C_LESSTHAN$1 = 60;
7560
8041
  const reEmailAutolink = /^<([a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/;
7561
8042
  const reAutolink = /^<[A-Za-z][A-Za-z0-9.+-]{1,31}:[^<>\0- ]*>/i;
@@ -7588,7 +8069,7 @@ const autolinkConstruct = {
7588
8069
  };
7589
8070
 
7590
8071
  //#endregion
7591
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/inlines/autolinkLiteral.js
8072
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/inlines/autolinkLiteral.js
7592
8073
  const C_LOWER_W = 119;
7593
8074
  const C_COLON = 58;
7594
8075
  /** `cmark_isspace`: ASCII only, deliberately — upstream's URL scan uses it. */
@@ -7959,7 +8440,7 @@ const linkifyEmails = (root) => {
7959
8440
  };
7960
8441
 
7961
8442
  //#endregion
7962
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/inlines/codeSpan.js
8443
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/inlines/codeSpan.js
7963
8444
  const C_BACKTICK$1 = 96;
7964
8445
  const reTicksHere = /^`+/;
7965
8446
  const reNewline = /\n/gm;
@@ -7988,7 +8469,7 @@ const codeSpanConstruct = {
7988
8469
  };
7989
8470
 
7990
8471
  //#endregion
7991
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/inlines/entity.js
8472
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/inlines/entity.js
7992
8473
  const C_AMPERSAND = 38;
7993
8474
  const reEntityHere = new RegExp(`^${ENTITY}`, "i");
7994
8475
  /** A named, decimal or hexadecimal character reference. */
@@ -8005,7 +8486,7 @@ const entityConstruct = {
8005
8486
  };
8006
8487
 
8007
8488
  //#endregion
8008
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/inlines/escape.js
8489
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/inlines/escape.js
8009
8490
  const C_BACKSLASH = 92;
8010
8491
  const C_NEWLINE$1 = 10;
8011
8492
  const reEscapable = new RegExp(`^${ESCAPABLE$1}`);
@@ -8035,7 +8516,7 @@ const escapeConstruct = {
8035
8516
  };
8036
8517
 
8037
8518
  //#endregion
8038
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/inlines/link.js
8519
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/inlines/link.js
8039
8520
  const C_BANG = 33;
8040
8521
  const C_CARET$1 = 94;
8041
8522
  const C_OPEN_BRACKET = 91;
@@ -8243,7 +8724,7 @@ const makeLinkCloseConstruct = (onNoMatch) => ({
8243
8724
  const linkCloseConstruct = makeLinkCloseConstruct();
8244
8725
 
8245
8726
  //#endregion
8246
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/inlines/footnoteReference.js
8727
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/inlines/footnoteReference.js
8247
8728
  const C_CARET = 94;
8248
8729
  /**
8249
8730
  * Whether the bracket that just closed looks like `[^...]` with something
@@ -8301,7 +8782,7 @@ const gfmLinkCloseConstruct = makeLinkCloseConstruct(footnoteReferenceFallback);
8301
8782
  const gfmImageOpenConstruct = makeImageOpenConstruct(false);
8302
8783
 
8303
8784
  //#endregion
8304
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/inlines/lineBreak.js
8785
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/inlines/lineBreak.js
8305
8786
  const C_NEWLINE = 10;
8306
8787
  const reInitialSpace = /^ */;
8307
8788
  /** A soft or hard line break. */
@@ -8323,7 +8804,7 @@ const lineBreakConstruct = {
8323
8804
  };
8324
8805
 
8325
8806
  //#endregion
8326
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/inlines/rawHtml.js
8807
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/inlines/rawHtml.js
8327
8808
  const C_LESSTHAN = 60;
8328
8809
  /** The raw-HTML forms that scan forward for a fixed closing sequence. */
8329
8810
  const UNTERMINATED_FORMS = [
@@ -8346,7 +8827,7 @@ const rawHtmlConstruct = {
8346
8827
  };
8347
8828
 
8348
8829
  //#endregion
8349
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/inlines/text.js
8830
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/inlines/text.js
8350
8831
  const reMain = /^[^\n`[\]\\!<&*_'"]+/;
8351
8832
  const reMainGfm = /^[^\n`[\]\\!<&*_'"~w:]+/;
8352
8833
  /** Consume a run of ordinary characters, stopping before any construct's. */
@@ -8367,7 +8848,7 @@ const textConstruct = runConstruct("text", reMain);
8367
8848
  const gfmTextConstruct = runConstruct("text", reMainGfm);
8368
8849
 
8369
8850
  //#endregion
8370
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/inlineRegistry.js
8851
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/inlineRegistry.js
8371
8852
  const triggerTable = (constructs) => {
8372
8853
  const table = /* @__PURE__ */ new Map();
8373
8854
  for (const construct of constructs) for (const trigger of construct.triggers) {
@@ -8421,7 +8902,7 @@ const inlineDialect = (dialect) => {
8421
8902
  };
8422
8903
 
8423
8904
  //#endregion
8424
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/inlineParser.js
8905
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/inlineParser.js
8425
8906
  const C_UNDERSCORE = 95;
8426
8907
  const C_ASTERISK = 42;
8427
8908
  const reTrailingSpaces = / +$/;
@@ -8816,7 +9297,7 @@ var InlineParser = class {
8816
9297
  const parseInlines = (source, refmap, position, dialect = "commonmark", footnoteLabels = /* @__PURE__ */ new Set()) => new InlineParser(source, inlineDialect(dialect), position, refmap, footnoteLabels).parse();
8817
9298
 
8818
9299
  //#endregion
8819
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/rawInline.js
9300
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/rawInline.js
8820
9301
  const reWhitespace = /\s/;
8821
9302
  const reCmarkSpace = /[ \t\n\r]/;
8822
9303
  /**
@@ -8872,7 +9353,7 @@ const prepareInline = (block, position, refmap, dialect = "commonmark", footnote
8872
9353
  };
8873
9354
 
8874
9355
  //#endregion
8875
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/blockParser.js
9356
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/blockParser.js
8876
9357
  /** Upstream's cheap pre-filter: a line that cannot start any block. */
8877
9358
  const reMaybeSpecial = /^[#`~*+_=<>0-9-]/;
8878
9359
  var BlockParser = class {
@@ -9280,7 +9761,7 @@ var BlockParser = class {
9280
9761
  const parseBlocks = (text, dialect = "commonmark", frontmatter = false) => new BlockParser(text, blockDialect(dialect), dialect, frontmatter).parse();
9281
9762
 
9282
9763
  //#endregion
9283
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/phrasing.js
9764
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/phrasing.js
9284
9765
  const EMPTY_REFMAP = /* @__PURE__ */ new Map();
9285
9766
  const EMPTY_FOOTNOTE_LABELS = /* @__PURE__ */ new Set();
9286
9767
  /**
@@ -9330,7 +9811,7 @@ const parsePhrasingText = (text, dialect) => {
9330
9811
  };
9331
9812
 
9332
9813
  //#endregion
9333
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/internal/stringify.js
9814
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/internal/stringify.js
9334
9815
  const FLOW_CONTEXT = {
9335
9816
  singleLine: false,
9336
9817
  inTable: false,
@@ -10027,7 +10508,7 @@ const stringifyTree = (root) => {
10027
10508
  };
10028
10509
 
10029
10510
  //#endregion
10030
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/Markdown.js
10511
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/Markdown.js
10031
10512
  /**
10032
10513
  * The markdown dialects the parser can be pointed at. `"gfm"` — CommonMark
10033
10514
  * 0.31.2 plus the GitHub extensions (tables, strikethrough, autolink
@@ -10421,7 +10902,7 @@ var Markdown = class Markdown {
10421
10902
  };
10422
10903
 
10423
10904
  //#endregion
10424
- //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._fef2d84f4989873ee8536485b8b3c1ec/node_modules/@effected/markdown/Mdast.js
10905
+ //#region ../../node_modules/.pnpm/@effected+markdown@0.10.0_@effected+jsonc@0.11.0_effect@4.0.0-rc.115__@effected+toml@0._4ffc6d74fdaa440b34a57ec5985e76d9/node_modules/@effected/markdown/Mdast.js
10425
10906
  /**
10426
10907
  * The remark-ecosystem interop boundary: projection between this package's
10427
10908
  * node classes and plain mdast JSON.
@@ -31296,423 +31777,6 @@ function parseCommitMessage(message) {
31296
31777
  return { description: message };
31297
31778
  }
31298
31779
 
31299
- //#endregion
31300
- //#region ../../node_modules/.pnpm/@effected+github-references@0.3.0_effect@4.0.0-rc.115/node_modules/@effected/github-references/IssueReferences.js
31301
- /**
31302
- * GitHub's closing-keyword issue-reference grammar, as pure functions.
31303
- *
31304
- * @remarks
31305
- * GitHub links an issue to a pull request when the PR's description carries
31306
- * `<keyword> #<number>` for one of nine documented keywords. Consumers speak
31307
- * that grammar in two distinct dialects, and this module models exactly those
31308
- * two — no service, no layer, nothing but strings in and values out:
31309
- *
31310
- * - **Inline-in-prose** ({@link harvestIssueReferences}): a reference may appear anywhere in
31311
- * running text — `"fixes #12 and closes #13"` — with mandatory whitespace
31312
- * and **no colon**, because that is the spelling GitHub itself scans PR
31313
- * bodies for. This is the dialect a release pipeline harvests from commit
31314
- * subjects and PR descriptions.
31315
- * - **Bare-line** ({@link parseBareLineReference}): the whole line, after trimming, *is*
31316
- * the reference — `"Closes: #12"` — with an **optional colon**, because a
31317
- * generated references region writes one reference per line and a colon
31318
- * reads better there. GitHub does not require the colon; the region format
31319
- * allows it, so the parser must too. The dialects differ because their
31320
- * producers do: prose is written by humans for GitHub's scanner, the region
31321
- * is written by tooling for humans.
31322
- *
31323
- * Deliberately out of scope this round: cross-repo references
31324
- * (`owner/repo#N`) and full-URL references
31325
- * (`https://github.com/owner/repo/issues/N`). Both are real GitHub spellings;
31326
- * neither dialect's consumers emit them yet, and guessing at their shape here
31327
- * would freeze an API nobody has driven.
31328
- */
31329
- /**
31330
- * The nine closing keywords GitHub documents, lowercased.
31331
- *
31332
- * @public
31333
- */
31334
- const CLOSING_KEYWORDS = [
31335
- "close",
31336
- "closes",
31337
- "closed",
31338
- "fix",
31339
- "fixes",
31340
- "fixed",
31341
- "resolve",
31342
- "resolves",
31343
- "resolved"
31344
- ];
31345
- /**
31346
- * Both patterns derive from {@link CLOSING_KEYWORDS} so the constant and the
31347
- * grammar cannot drift. Alternation order is safe: the regex engine backtracks
31348
- * through alternatives, so `close` matching inside `closes` fails at the
31349
- * mandatory `#`-introducer and retries the longer keyword.
31350
- */
31351
- const KEYWORDS = CLOSING_KEYWORDS.join("|");
31352
- /** Inline-in-prose: mandatory whitespace, no colon. */
31353
- const INLINE_PATTERN = new RegExp(`\\b(${KEYWORDS})\\s+#(\\d+)`, "gi");
31354
- /**
31355
- * Bare-line: optional colon, then mandatory same-line whitespace. `[ \t]`
31356
- * rather than `\s`, so an embedded newline cannot smuggle two lines past a
31357
- * parser whose contract is one.
31358
- */
31359
- const BARE_LINE_PATTERN = new RegExp(`^(${KEYWORDS}):?[ \\t]+#(\\d+)$`, "i");
31360
-
31361
- //#endregion
31362
- //#region ../../node_modules/.pnpm/@effected+github-references@0.3.0_effect@4.0.0-rc.115/node_modules/@effected/github-references/ClosingList.js
31363
- /**
31364
- * The closing-list dialect: one whole line naming several issues at once.
31365
- *
31366
- * @remarks
31367
- * The third dialect, alongside the two in `IssueReferences`: after trimming,
31368
- * the **entire** line must be `<keyword>[:] <list>` — keyword
31369
- * case-insensitive (lowercased to canonical form in the result), colon
31370
- * optional, and the list one or more `#<digits>` items separated by `,`,
31371
- * `and`, or the Oxford `, and`. Whitespace inside the line is `[ \t]` only,
31372
- * so an embedded newline cannot smuggle two lines past a parser whose
31373
- * contract is one — the same posture as the bare-line pattern. Any trailing
31374
- * content after the list rejects the line; duplicates are preserved in order,
31375
- * because whether `#1, #1` means one issue or two is the caller's business.
31376
- *
31377
- * Two keyword sets play here. {@link parseClosingList} accepts only the nine
31378
- * closing keywords and yields a {@link ClosingList}; {@link parseReferenceList}
31379
- * additionally accepts the non-closing {@link REFERENCE_KEYWORDS} (`ref`,
31380
- * `refs`, `references`) and reports which set matched via
31381
- * {@link ReferenceList}'s `closing` flag.
31382
- *
31383
- * An item whose digits exceed `Number.MAX_SAFE_INTEGER` rejects the **whole
31384
- * line**, where `harvestIssueReferences` merely skips the one match. The
31385
- * asymmetry is deliberate: a harvest drops one reference out of running
31386
- * prose, but a list line is a single claim about a set of issues, and
31387
- * returning the parseable subset would misrepresent the line as claiming
31388
- * less than it does.
31389
- *
31390
- * Complexity posture: parsing is a single left-to-right character scan —
31391
- * this module contains **no regular expressions at all** — so worst-case
31392
- * time is linear in the line length by construction. There is no
31393
- * backtracking engine to feed, no polynomial blow-up for a scanner to flag,
31394
- * and therefore no input truncation.
31395
- *
31396
- * Beyond the whole-line parsers, {@link harvestReferenceLists} generalizes
31397
- * the same list grammar to the inline-in-prose posture — several lists on
31398
- * one line of running text — and {@link parseClosingLists} /
31399
- * {@link parseReferenceLists} apply the whole-line parsers per line of a
31400
- * multi-line text. All of them ride the same character scan; the no-regex
31401
- * promise above covers every export here.
31402
- */
31403
- /**
31404
- * The non-closing reference keywords the list dialect accepts, lowercased.
31405
- *
31406
- * @remarks
31407
- * GitHub does not act on these — they associate without closing — but a
31408
- * references region writes them, so the parser must read them.
31409
- *
31410
- * @public
31411
- */
31412
- const REFERENCE_KEYWORDS = [
31413
- "ref",
31414
- "refs",
31415
- "references"
31416
- ];
31417
- /**
31418
- * Both keyword tables ARE the exported constants — membership sets built from
31419
- * them once — so the constants and the grammar cannot drift.
31420
- */
31421
- const ALL_KEYWORDS = /* @__PURE__ */ new Set([...CLOSING_KEYWORDS, ...REFERENCE_KEYWORDS]);
31422
- /** Membership test for reporting `closing`, widened once so no call casts. */
31423
- const CLOSING_SET = new Set(CLOSING_KEYWORDS);
31424
- const HASH = 35;
31425
- const COLON = 58;
31426
- const COMMA = 44;
31427
- /** `[ \t]` — the only whitespace the dialect admits, per the module remarks. */
31428
- const isSpaceTab = (code) => code === 32 || code === 9;
31429
- const isDigit$1 = (code) => code >= 48 && code <= 57;
31430
- const isAsciiLetter = (code) => code >= 65 && code <= 90 || code >= 97 && code <= 122;
31431
- /** The index after the run of `[ \t]` starting at `from` (possibly `from` itself). */
31432
- const skipSpaceTab = (line, from) => {
31433
- let index = from;
31434
- while (index < line.length && isSpaceTab(line.charCodeAt(index))) index += 1;
31435
- return index;
31436
- };
31437
- /**
31438
- * One list item at exactly `from`: `#<digits>` and the index one past it.
31439
- * Digits exceeding `Number.MAX_SAFE_INTEGER` report `"unsafe"` rather than a
31440
- * silently rounded issue number, still carrying the index one past the digit
31441
- * run so a caller can skip the item's extent; the whole-line parsers reject
31442
- * on it and {@link harvestReferenceLists} abandons the entire candidate —
31443
- * see the module remarks for why a list never yields a partial reading.
31444
- * Anything that is not `#<digits>` at all is `undefined`.
31445
- */
31446
- const readItem = (line, from) => {
31447
- if (line.charCodeAt(from) !== HASH) return void 0;
31448
- const start = from + 1;
31449
- let index = start;
31450
- while (index < line.length && isDigit$1(line.charCodeAt(index))) index += 1;
31451
- if (index === start) return void 0;
31452
- const value = Number(line.slice(start, index));
31453
- return Number.isSafeInteger(value) ? {
31454
- kind: "item",
31455
- value,
31456
- next: index
31457
- } : {
31458
- kind: "unsafe",
31459
- next: index
31460
- };
31461
- };
31462
- /**
31463
- * One separator at exactly `from`: a comma with optional surrounding `[ \t]`
31464
- * and an optional Oxford `and` (consumed only when its own trailing `[ \t]+`
31465
- * is present), or a bare `and` requiring `[ \t]+` on both sides. `and` is
31466
- * lowercase-only — the keyword head is case-insensitive, the separator is
31467
- * not. Returns the index where the next item must start, or `undefined` when
31468
- * no separator is present.
31469
- */
31470
- const scanSeparator = (line, from) => {
31471
- const afterLeading = skipSpaceTab(line, from);
31472
- if (line.charCodeAt(afterLeading) === COMMA) {
31473
- const afterComma = skipSpaceTab(line, afterLeading + 1);
31474
- if (line.startsWith("and", afterComma)) {
31475
- const afterAnd = skipSpaceTab(line, afterComma + 3);
31476
- if (afterAnd > afterComma + 3) return afterAnd;
31477
- }
31478
- return afterComma;
31479
- }
31480
- if (afterLeading > from && line.startsWith("and", afterLeading)) {
31481
- const afterAnd = skipSpaceTab(line, afterLeading + 3);
31482
- if (afterAnd > afterLeading + 3) return afterAnd;
31483
- }
31484
- };
31485
- /**
31486
- * The scan walk: item, then separator, then item, until the cursor stands
31487
- * exactly at the end of the string. Anything else — a malformed item, an
31488
- * unknown separator, trailing content, an unsafe issue number — is
31489
- * `undefined`, and the caller rejects the whole line.
31490
- */
31491
- const parseItems = (line, from) => {
31492
- const issueNumbers = [];
31493
- let cursor = from;
31494
- for (;;) {
31495
- const item = readItem(line, cursor);
31496
- if (item === void 0 || item.kind === "unsafe") return void 0;
31497
- issueNumbers.push(item.value);
31498
- cursor = item.next;
31499
- if (cursor === line.length) return issueNumbers;
31500
- const next = scanSeparator(line, cursor);
31501
- if (next === void 0) return void 0;
31502
- cursor = next;
31503
- }
31504
- };
31505
- /**
31506
- * The list a whole line carries under either keyword set, or `Option.none()`.
31507
- *
31508
- * @remarks
31509
- * Accepts the nine closing keywords plus {@link REFERENCE_KEYWORDS}, and
31510
- * reports which set matched in the result's `closing` flag. Grammar,
31511
- * whole-line posture and the whole-line rejection of unsafe issue numbers
31512
- * are in the module remarks.
31513
- *
31514
- * @public
31515
- */
31516
- const parseReferenceList = (line) => {
31517
- const trimmed = line.trim();
31518
- let letters = 0;
31519
- while (letters < trimmed.length && isAsciiLetter(trimmed.charCodeAt(letters))) letters += 1;
31520
- if (letters === 0) return Option.none();
31521
- const keyword = trimmed.slice(0, letters).toLowerCase();
31522
- if (!ALL_KEYWORDS.has(keyword)) return Option.none();
31523
- let cursor = letters;
31524
- if (trimmed.charCodeAt(cursor) === COLON) cursor += 1;
31525
- const afterWhitespace = skipSpaceTab(trimmed, cursor);
31526
- if (afterWhitespace === cursor) return Option.none();
31527
- const issueNumbers = parseItems(trimmed, afterWhitespace);
31528
- if (issueNumbers === void 0) return Option.none();
31529
- return Option.some({
31530
- keyword,
31531
- closing: CLOSING_SET.has(keyword),
31532
- issueNumbers
31533
- });
31534
- };
31535
- /**
31536
- * Every reference list a text carries, line by line, across both postures.
31537
- *
31538
- * @remarks
31539
- * The trailer/prose interleave consumers otherwise hand-roll: each line is
31540
- * tried as a whole-line reference list first ({@link parseReferenceList} —
31541
- * colon-tolerant, per the line dialect), and only a line that is not one is
31542
- * harvested inline ({@link harvestReferenceLists} — no colon, per the inline
31543
- * dialect). The preference means a colon-less trailer line contributes its
31544
- * list exactly once, never once per posture.
31545
- *
31546
- * Results carry no offsets, deliberately: this is the line-granular
31547
- * composition, and a consumer that needs spans uses
31548
- * {@link harvestReferenceLists} directly. Duplicates are preserved, in
31549
- * document order.
31550
- *
31551
- * @public
31552
- */
31553
- const collectReferenceLists = (text) => {
31554
- const lists = [];
31555
- for (const line of text.split("\n")) {
31556
- const whole = parseReferenceList(line);
31557
- if (Option.isSome(whole)) {
31558
- lists.push(whole.value);
31559
- continue;
31560
- }
31561
- for (const harvested of harvestReferenceLists(line)) lists.push({
31562
- keyword: harvested.keyword,
31563
- closing: harvested.closing,
31564
- issueNumbers: harvested.issueNumbers
31565
- });
31566
- }
31567
- return lists;
31568
- };
31569
- /** `[A-Za-z0-9_]` — the word-boundary alphabet the inline dialects use. */
31570
- const isWordChar = (code) => isAsciiLetter(code) || isDigit$1(code) || code === 95;
31571
- /**
31572
- * The full JavaScript `\s` set, spelled as a predicate so the module keeps
31573
- * its no-regex promise: ASCII whitespace, NEL-adjacent controls, and the
31574
- * Unicode space separators. Only the keyword→first-item gap of
31575
- * {@link harvestReferenceLists} admits this set — everything inside a list
31576
- * stays `[ \t]`, per the module remarks.
31577
- */
31578
- const isAnyWhitespace = (code) => code === 32 || code >= 9 && code <= 13 || code === 160 || code === 5760 || code >= 8192 && code <= 8202 || code === 8232 || code === 8233 || code === 8239 || code === 8287 || code === 12288 || code === 65279;
31579
- /**
31580
- * Every reference list found inline in `text`, in document order.
31581
- *
31582
- * @remarks
31583
- * The inline-in-prose posture generalized to lists:
31584
- * `Closes #123, Fixes #456` in one line of a commit body yields two
31585
- * single-item lists, where
31586
- * `harvestIssueReferences` reads only the first reference of each and the
31587
- * whole-line parsers read neither. The grammar per candidate:
31588
- *
31589
- * - The keyword is case-insensitive, drawn from either keyword set,
31590
- * lowercased to canonical form in the result, with `closing` reported by
31591
- * set membership. Word boundaries hold on both sides: the characters
31592
- * immediately before and after the keyword's letter run must not be
31593
- * `[A-Za-z0-9_]`, so `recloses #1` and `1closes #1` do not match.
31594
- * - **No colon** — exactly like `harvestIssueReferences`, the colon spelling
31595
- * belongs to the line dialects ({@link parseReferenceList} and the
31596
- * bare-line parser), so `closes: #1` inline yields nothing.
31597
- * - The keyword→first-item gap is any run of whitespace **including
31598
- * newlines**, mirroring the inline dialect's `\s+`.
31599
- * - List continuation uses the `,` / `and` / Oxford separators with `[ \t]`
31600
- * whitespace only, so a list cannot continue past a newline — a later
31601
- * line makes its own claims.
31602
- * - Items are `#<digits>`; duplicates are preserved in order.
31603
- *
31604
- * A list ends at its last valid item: in `closes #1 and fixes #2` the
31605
- * ` and ` before `fixes` fails as a separator because what follows is not
31606
- * `#`, so the text yields `closes: [1]` then `fixes: [2]`. An item past
31607
- * `Number.MAX_SAFE_INTEGER` anywhere in a candidate skips the **entire**
31608
- * candidate — never a partial list, for the same reason
31609
- * {@link parseReferenceList} rejects the whole line — and scanning resumes
31610
- * after the candidate's scanned extent.
31611
- *
31612
- * Like everything in this module, the harvest is a single left-to-right
31613
- * character scan with no regular expressions, so time stays linear in the
31614
- * text length and no input is truncated.
31615
- *
31616
- * @public
31617
- */
31618
- const harvestReferenceLists = (text) => {
31619
- const lists = [];
31620
- let index = 0;
31621
- while (index < text.length) {
31622
- if (!isAsciiLetter(text.charCodeAt(index))) {
31623
- index += 1;
31624
- continue;
31625
- }
31626
- const runStart = index;
31627
- let runEnd = index + 1;
31628
- while (runEnd < text.length && isAsciiLetter(text.charCodeAt(runEnd))) runEnd += 1;
31629
- if (runStart > 0 && isWordChar(text.charCodeAt(runStart - 1)) || runEnd < text.length && isWordChar(text.charCodeAt(runEnd))) {
31630
- index = runEnd;
31631
- continue;
31632
- }
31633
- const keyword = text.slice(runStart, runEnd).toLowerCase();
31634
- if (!ALL_KEYWORDS.has(keyword)) {
31635
- index = runEnd;
31636
- continue;
31637
- }
31638
- let cursor = runEnd;
31639
- while (cursor < text.length && isAnyWhitespace(text.charCodeAt(cursor))) cursor += 1;
31640
- const first = cursor === runEnd ? void 0 : readItem(text, cursor);
31641
- if (first === void 0) {
31642
- index = runEnd;
31643
- continue;
31644
- }
31645
- if (first.kind === "unsafe") {
31646
- index = first.next;
31647
- continue;
31648
- }
31649
- const issueNumbers = [first.value];
31650
- let end = first.next;
31651
- let unsafeNext;
31652
- for (;;) {
31653
- const next = scanSeparator(text, end);
31654
- if (next === void 0) break;
31655
- const item = readItem(text, next);
31656
- if (item === void 0) break;
31657
- if (item.kind === "unsafe") {
31658
- unsafeNext = item.next;
31659
- break;
31660
- }
31661
- issueNumbers.push(item.value);
31662
- end = item.next;
31663
- }
31664
- if (unsafeNext !== void 0) {
31665
- index = unsafeNext;
31666
- continue;
31667
- }
31668
- lists.push({
31669
- keyword,
31670
- closing: CLOSING_SET.has(keyword),
31671
- issueNumbers,
31672
- start: runStart,
31673
- end
31674
- });
31675
- index = end;
31676
- }
31677
- return lists;
31678
- };
31679
-
31680
- //#endregion
31681
- //#region ../../node_modules/.pnpm/@effected+github-references@0.3.0_effect@4.0.0-rc.115/node_modules/@effected/github-references/KeywordFamily.js
31682
- /**
31683
- * The projection table IS the totality proof: `Record` over the union of
31684
- * both keyword types makes a keyword added to either constant without an
31685
- * entry here fail to compile.
31686
- */
31687
- const FAMILIES = {
31688
- close: "close",
31689
- closes: "close",
31690
- closed: "close",
31691
- fix: "fix",
31692
- fixes: "fix",
31693
- fixed: "fix",
31694
- resolve: "resolve",
31695
- resolves: "resolve",
31696
- resolved: "resolve",
31697
- ref: "ref",
31698
- refs: "ref",
31699
- references: "ref"
31700
- };
31701
- /**
31702
- * The family a keyword belongs to.
31703
- *
31704
- * @remarks
31705
- * Total over both keyword sets by construction — see the module remarks for
31706
- * why an explicit record beats a `startsWith` heuristic. `close`, `closes`
31707
- * and `closed` map to `"close"`; the `fix` and `resolve` conjugations
31708
- * likewise; `ref`, `refs` and `references` map to `"ref"`. The evidence for
31709
- * the projection is downstream: categorized harvesters key maps by family,
31710
- * and each was hand-rolling this collapse.
31711
- *
31712
- * @public
31713
- */
31714
- const keywordFamily = (keyword) => FAMILIES[keyword];
31715
-
31716
31780
  //#endregion
31717
31781
  //#region ../silk-effects/dist/dev/pkg/changesets/utils/issue-refs.js
31718
31782
  /**
@@ -31780,42 +31844,6 @@ function parseIssueReferences(commitMessage) {
31780
31844
  return references;
31781
31845
  }
31782
31846
 
31783
- //#endregion
31784
- //#region ../silk-effects/dist/dev/pkg/changesets/utils/logger.js
31785
- /**
31786
- * Log a warning message.
31787
- *
31788
- * @remarks
31789
- * Detection order:
31790
- * 1. If `process.env.VITEST` is set, the message is silently discarded.
31791
- * 2. If `process.env.GITHUB_ACTIONS === "true"`, the message is emitted
31792
- * as a `::warning::` annotation.
31793
- * 3. Otherwise, `console.warn` is used.
31794
- *
31795
- * @param message - The warning message
31796
- * @param args - Additional arguments (concatenated with a space in CI mode)
31797
- *
31798
- * @example
31799
- * ```typescript
31800
- * import { logWarning } from "../utils/logger.js";
31801
- *
31802
- * logWarning("Duplicate dependency entry", "effect@3.19.0");
31803
- * // In CI: "::warning::Duplicate dependency entry effect@3.19.0"
31804
- * // Locally: console.warn("Duplicate dependency entry", "effect@3.19.0")
31805
- * ```
31806
- *
31807
- * @internal
31808
- */
31809
- function logWarning(message, ...args) {
31810
- /* v8 ignore start — environment-specific */
31811
- if (typeof process !== "undefined" && process.env.VITEST) return;
31812
- if (typeof process !== "undefined" && process.env.GITHUB_ACTIONS === "true") {
31813
- const text = args.length > 0 ? `${message} ${args.join(" ")}` : message;
31814
- console.warn(`::warning::${text}`);
31815
- } else console.warn(message, ...args);
31816
- /* v8 ignore stop */
31817
- }
31818
-
31819
31847
  //#endregion
31820
31848
  //#region ../silk-effects/dist/dev/pkg/changesets/utils/section-parser.js
31821
31849
  /**
@@ -32188,10 +32216,7 @@ function getReleaseLine(changeset, versionType, options) {
32188
32216
  if (changeset.commit) commitInfo = yield* (yield* GitHubService).getInfo({
32189
32217
  commit: changeset.commit,
32190
32218
  repo: options.repo
32191
- }).pipe(Effect.flatMap((raw) => Schema.decodeUnknownEffect(GitHubInfoSchema)(raw).pipe(Effect.map(() => raw), Effect.catch(() => Effect.succeed(raw)))), Effect.catch((error) => {
32192
- logWarning("Could not fetch GitHub info for commit:", changeset.commit ?? "", String(error));
32193
- return Effect.succeed(null);
32194
- }));
32219
+ }).pipe(Effect.flatMap((raw) => Schema.decodeUnknownEffect(GitHubInfoSchema)(raw).pipe(Effect.map(() => raw), Effect.catch(() => Effect.succeed(raw)))), Effect.catch((error) => logWarning("Could not fetch GitHub info for commit:", changeset.commit ?? "", String(error)).pipe(Effect.as(null))));
32195
32220
  const parsed = parseChangesetSections(changeset.summary);
32196
32221
  const firstLine = changeset.summary.split("\n")[0];
32197
32222
  const commitMsg = parseCommitMessage(firstLine);
@@ -32290,31 +32315,50 @@ function getReleaseLine(changeset, versionType, options) {
32290
32315
  */
32291
32316
  const MainLayer = GitHubService.layer;
32292
32317
  /**
32293
- * Changesets API `ChangelogFunctions` implementation.
32318
+ * Build a Changesets `ChangelogFunctions` implementation bound to a warning
32319
+ * mode.
32294
32320
  *
32295
- * This object satisfies the `ChangelogFunctions` contract from
32296
- * `\@changesets/types`. Each method validates options, runs the
32297
- * corresponding Effect program with the merged service layer, and
32298
- * returns a `Promise<string>`.
32321
+ * @remarks
32322
+ * This module is engine code and reads no environment; the host that installs
32323
+ * the functions (the `\@savvy-web/changelog` package under the changesets CLI)
32324
+ * decides the mode from its own `process.env` and passes it here. Each method
32325
+ * validates options, runs the corresponding Effect program with the merged
32326
+ * service layer and the chosen {@link ChangesetLogMode}, and returns a
32327
+ * `Promise<string>`.
32299
32328
  *
32300
- * @internal
32329
+ * @param options - The warning mode to provide
32330
+ * @returns A `ChangelogFunctions` object for `.changeset/config.json`
32331
+ *
32332
+ * @public
32301
32333
  */
32302
- const changelogFunctions$2 = {
32303
- getReleaseLine: async (changeset, versionType, options) => {
32304
- const program = Effect.gen(function* () {
32334
+ function makeChangelogFunctions(options = {}) {
32335
+ const run = (program) => {
32336
+ const provided = program.pipe(Effect.provide(MainLayer));
32337
+ return Effect.runPromise(options.logMode === void 0 ? provided : provided.pipe(Effect.provideService(ChangesetLogMode, options.logMode)));
32338
+ };
32339
+ return {
32340
+ getReleaseLine: async (changeset, versionType, options) => run(Effect.gen(function* () {
32305
32341
  const opts = yield* validateChangesetOptions(options);
32306
32342
  return yield* getReleaseLine(changeset, versionType, opts);
32307
- });
32308
- return Effect.runPromise(program.pipe(Effect.provide(MainLayer)));
32309
- },
32310
- getDependencyReleaseLine: async (changesets, dependenciesUpdated, options) => {
32311
- const program = Effect.gen(function* () {
32343
+ })),
32344
+ getDependencyReleaseLine: async (changesets, dependenciesUpdated, options) => run(Effect.gen(function* () {
32312
32345
  const opts = yield* validateChangesetOptions(options);
32313
32346
  return yield* getDependencyReleaseLine(changesets, dependenciesUpdated, opts);
32314
- });
32315
- return Effect.runPromise(program.pipe(Effect.provide(MainLayer)));
32316
- }
32317
- };
32347
+ }))
32348
+ };
32349
+ }
32350
+ /**
32351
+ * Changesets API `ChangelogFunctions` implementation with the default warning
32352
+ * mode (`"stderr"`).
32353
+ *
32354
+ * @remarks
32355
+ * Equivalent to `makeChangelogFunctions()`. A host that runs under GitHub
32356
+ * Actions or a test runner should call {@link makeChangelogFunctions} with the
32357
+ * mode it detects instead.
32358
+ *
32359
+ * @internal
32360
+ */
32361
+ const changelogFunctions$2 = makeChangelogFunctions();
32318
32362
 
32319
32363
  //#endregion
32320
32364
  //#region ../silk-effects/dist/dev/pkg/changesets/api/changelog.js
@@ -32420,10 +32464,13 @@ var Changelog = class {
32420
32464
  * @param versionType - The semantic version bump type (`"major"`, `"minor"`, or `"patch"`)
32421
32465
  * @param options - Configuration object; must include `repo` in `"owner/repo"` format.
32422
32466
  * Pass `null` to use defaults (no GitHub link resolution).
32467
+ * @param logMode - How a failed GitHub lookup is reported (`"stderr"` when omitted);
32468
+ * the host reads its own environment and passes `"github"` / `"silent"` — this
32469
+ * engine never does. See `ChangesetLogMode`.
32423
32470
  * @returns A promise resolving to the formatted markdown string
32424
32471
  */
32425
- static async formatReleaseLine(changeset, versionType, options) {
32426
- return changelogFunctions$2.getReleaseLine(changeset, versionType, options);
32472
+ static async formatReleaseLine(changeset, versionType, options, logMode) {
32473
+ return makeChangelogFunctions(logMode === void 0 ? {} : { logMode }).getReleaseLine(changeset, versionType, options);
32427
32474
  }
32428
32475
  /**
32429
32476
  * Format dependency update release lines into a markdown table.
@@ -32438,11 +32485,13 @@ var Changelog = class {
32438
32485
  * old/new versions and package metadata
32439
32486
  * @param options - Configuration object; must include `repo` in `"owner/repo"` format.
32440
32487
  * Pass `null` to use defaults.
32488
+ * @param logMode - How a failed GitHub lookup is reported (`"stderr"` when omitted);
32489
+ * see {@link Changelog.formatReleaseLine}.
32441
32490
  * @returns A promise resolving to the formatted markdown string containing
32442
32491
  * the dependency update table
32443
32492
  */
32444
- static async formatDependencyReleaseLine(changesets, dependenciesUpdated, options) {
32445
- return changelogFunctions$2.getDependencyReleaseLine(changesets, dependenciesUpdated, options);
32493
+ static async formatDependencyReleaseLine(changesets, dependenciesUpdated, options, logMode) {
32494
+ return makeChangelogFunctions(logMode === void 0 ? {} : { logMode }).getDependencyReleaseLine(changesets, dependenciesUpdated, options);
32446
32495
  }
32447
32496
  };
32448
32497
 
@@ -36024,7 +36073,7 @@ var GlobPattern = class GlobPattern extends Schema.Class("GlobPattern")(Schema.S
36024
36073
  };
36025
36074
 
36026
36075
  //#endregion
36027
- //#region ../../node_modules/.pnpm/@effected+walker@0.8.0_@effected+glob@0.6.0_effect@4.0.0-rc.115__effect@4.0.0-rc.115/node_modules/@effected/walker/Descend.js
36076
+ //#region ../../node_modules/.pnpm/@effected+walker@0.9.0_@effected+glob@0.6.0_effect@4.0.0-rc.115__effect@4.0.0-rc.115/node_modules/@effected/walker/Descend.js
36028
36077
  /**
36029
36078
  * Typed failure raised by `descend`: a directory mid-walk was unreadable
36030
36079
  * (under `onUnreadable: "fail"`), or the walk descended past `maxDepth`. Depth
@@ -36108,7 +36157,10 @@ const descendImpl = Effect.fn("Walker.descend")(function* (pattern, options) {
36108
36157
  reason: "unreadableDirectory",
36109
36158
  path: frame.relative
36110
36159
  }));
36111
- if (onUnreadable === "record") unreadable.push(frame.relative);
36160
+ if (onUnreadable === "record") unreadable.push({
36161
+ path: frame.relative,
36162
+ cause: error
36163
+ });
36112
36164
  return Effect.succeed([]);
36113
36165
  }));
36114
36166
  for (const entry of entries) {
@@ -36143,7 +36195,7 @@ function descend(pattern, options) {
36143
36195
  }
36144
36196
 
36145
36197
  //#endregion
36146
- //#region ../../node_modules/.pnpm/@effected+walker@0.8.0_@effected+glob@0.6.0_effect@4.0.0-rc.115__effect@4.0.0-rc.115/node_modules/@effected/walker/Expand.js
36198
+ //#region ../../node_modules/.pnpm/@effected+walker@0.9.0_@effected+glob@0.6.0_effect@4.0.0-rc.115__effect@4.0.0-rc.115/node_modules/@effected/walker/Expand.js
36147
36199
  /**
36148
36200
  * Typed failure raised by {@link compileAndExpand}: the single error the
36149
36201
  * compile+expand recipe fails with, so a caller catches one tag rather than
@@ -41171,7 +41223,7 @@ function globSync(globInput, options) {
41171
41223
  }
41172
41224
 
41173
41225
  //#endregion
41174
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/identity.js
41226
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/nodes/identity.js
41175
41227
  var require_identity = /* @__PURE__ */ __commonJSMin(((exports) => {
41176
41228
  const ALIAS = Symbol.for("yaml.alias");
41177
41229
  const DOC = Symbol.for("yaml.document");
@@ -41222,7 +41274,7 @@ var require_identity = /* @__PURE__ */ __commonJSMin(((exports) => {
41222
41274
  }));
41223
41275
 
41224
41276
  //#endregion
41225
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/visit.js
41277
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/visit.js
41226
41278
  var require_visit = /* @__PURE__ */ __commonJSMin(((exports) => {
41227
41279
  var identity = require_identity();
41228
41280
  const BREAK = Symbol("break visit");
@@ -41414,7 +41466,7 @@ var require_visit = /* @__PURE__ */ __commonJSMin(((exports) => {
41414
41466
  }));
41415
41467
 
41416
41468
  //#endregion
41417
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/doc/directives.js
41469
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/doc/directives.js
41418
41470
  var require_directives = /* @__PURE__ */ __commonJSMin(((exports) => {
41419
41471
  var identity = require_identity();
41420
41472
  var visit = require_visit();
@@ -41579,7 +41631,7 @@ var require_directives = /* @__PURE__ */ __commonJSMin(((exports) => {
41579
41631
  }));
41580
41632
 
41581
41633
  //#endregion
41582
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/doc/anchors.js
41634
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/doc/anchors.js
41583
41635
  var require_anchors = /* @__PURE__ */ __commonJSMin(((exports) => {
41584
41636
  var identity = require_identity();
41585
41637
  var visit = require_visit();
@@ -41647,7 +41699,7 @@ var require_anchors = /* @__PURE__ */ __commonJSMin(((exports) => {
41647
41699
  }));
41648
41700
 
41649
41701
  //#endregion
41650
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/doc/applyReviver.js
41702
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/doc/applyReviver.js
41651
41703
  var require_applyReviver = /* @__PURE__ */ __commonJSMin(((exports) => {
41652
41704
  /**
41653
41705
  * Applies the JSON.parse reviver algorithm as defined in the ECMA-262 spec,
@@ -41690,7 +41742,7 @@ var require_applyReviver = /* @__PURE__ */ __commonJSMin(((exports) => {
41690
41742
  }));
41691
41743
 
41692
41744
  //#endregion
41693
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/toJS.js
41745
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/nodes/toJS.js
41694
41746
  var require_toJS = /* @__PURE__ */ __commonJSMin(((exports) => {
41695
41747
  var identity = require_identity();
41696
41748
  /**
@@ -41728,7 +41780,7 @@ var require_toJS = /* @__PURE__ */ __commonJSMin(((exports) => {
41728
41780
  }));
41729
41781
 
41730
41782
  //#endregion
41731
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/Node.js
41783
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/nodes/Node.js
41732
41784
  var require_Node = /* @__PURE__ */ __commonJSMin(((exports) => {
41733
41785
  var applyReviver = require_applyReviver();
41734
41786
  var identity = require_identity();
@@ -41763,7 +41815,7 @@ var require_Node = /* @__PURE__ */ __commonJSMin(((exports) => {
41763
41815
  }));
41764
41816
 
41765
41817
  //#endregion
41766
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/Alias.js
41818
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/nodes/Alias.js
41767
41819
  var require_Alias = /* @__PURE__ */ __commonJSMin(((exports) => {
41768
41820
  var anchors = require_anchors();
41769
41821
  var visit = require_visit();
@@ -41798,29 +41850,31 @@ var require_Alias = /* @__PURE__ */ __commonJSMin(((exports) => {
41798
41850
  if (node === this) break;
41799
41851
  if (node.anchor === this.source) found = node;
41800
41852
  }
41853
+ if (found && ctx) {
41854
+ const { anchors, doc, maxAliasCount } = ctx;
41855
+ let data = anchors.get(found);
41856
+ if (!data) {
41857
+ toJS.toJS(found, null, ctx);
41858
+ data = anchors.get(found);
41859
+ }
41860
+ /* istanbul ignore if */
41861
+ if (data?.res === void 0) throw new ReferenceError("This should not happen: Alias anchor was not resolved?");
41862
+ if (maxAliasCount >= 0) {
41863
+ data.count += 1;
41864
+ if (data.aliasCount === 0) data.aliasCount = getAliasCount(doc, found, anchors);
41865
+ if (data.count * data.aliasCount > maxAliasCount) throw new ReferenceError("Excessive alias count indicates a resource exhaustion attack");
41866
+ }
41867
+ }
41801
41868
  return found;
41802
41869
  }
41803
41870
  toJSON(_arg, ctx) {
41804
41871
  if (!ctx) return { source: this.source };
41805
- const { anchors, doc, maxAliasCount } = ctx;
41806
- const source = this.resolve(doc, ctx);
41872
+ const source = this.resolve(ctx.doc, ctx);
41807
41873
  if (!source) {
41808
41874
  const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;
41809
41875
  throw new ReferenceError(msg);
41810
41876
  }
41811
- let data = anchors.get(source);
41812
- if (!data) {
41813
- toJS.toJS(source, null, ctx);
41814
- data = anchors.get(source);
41815
- }
41816
- /* istanbul ignore if */
41817
- if (data?.res === void 0) throw new ReferenceError("This should not happen: Alias anchor was not resolved?");
41818
- if (maxAliasCount >= 0) {
41819
- data.count += 1;
41820
- if (data.aliasCount === 0) data.aliasCount = getAliasCount(doc, source, anchors);
41821
- if (data.count * data.aliasCount > maxAliasCount) throw new ReferenceError("Excessive alias count indicates a resource exhaustion attack");
41822
- }
41823
- return data.res;
41877
+ return ctx.anchors.get(source).res;
41824
41878
  }
41825
41879
  toString(ctx, _onComment, _onChompKeep) {
41826
41880
  const src = `*${this.source}`;
@@ -41858,7 +41912,7 @@ var require_Alias = /* @__PURE__ */ __commonJSMin(((exports) => {
41858
41912
  }));
41859
41913
 
41860
41914
  //#endregion
41861
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/Scalar.js
41915
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/nodes/Scalar.js
41862
41916
  var require_Scalar = /* @__PURE__ */ __commonJSMin(((exports) => {
41863
41917
  var identity = require_identity();
41864
41918
  var Node = require_Node();
@@ -41886,7 +41940,7 @@ var require_Scalar = /* @__PURE__ */ __commonJSMin(((exports) => {
41886
41940
  }));
41887
41941
 
41888
41942
  //#endregion
41889
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/doc/createNode.js
41943
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/doc/createNode.js
41890
41944
  var require_createNode = /* @__PURE__ */ __commonJSMin(((exports) => {
41891
41945
  var Alias = require_Alias();
41892
41946
  var identity = require_identity();
@@ -41950,7 +42004,7 @@ var require_createNode = /* @__PURE__ */ __commonJSMin(((exports) => {
41950
42004
  }));
41951
42005
 
41952
42006
  //#endregion
41953
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/Collection.js
42007
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/nodes/Collection.js
41954
42008
  var require_Collection = /* @__PURE__ */ __commonJSMin(((exports) => {
41955
42009
  var createNode = require_createNode();
41956
42010
  var identity = require_identity();
@@ -42072,7 +42126,7 @@ var require_Collection = /* @__PURE__ */ __commonJSMin(((exports) => {
42072
42126
  }));
42073
42127
 
42074
42128
  //#endregion
42075
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/stringify/stringifyComment.js
42129
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/stringify/stringifyComment.js
42076
42130
  var require_stringifyComment = /* @__PURE__ */ __commonJSMin(((exports) => {
42077
42131
  /**
42078
42132
  * Stringifies a comment.
@@ -42093,7 +42147,7 @@ var require_stringifyComment = /* @__PURE__ */ __commonJSMin(((exports) => {
42093
42147
  }));
42094
42148
 
42095
42149
  //#endregion
42096
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/stringify/foldFlowLines.js
42150
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/stringify/foldFlowLines.js
42097
42151
  var require_foldFlowLines = /* @__PURE__ */ __commonJSMin(((exports) => {
42098
42152
  const FOLD_FLOW = "flow";
42099
42153
  const FOLD_BLOCK = "block";
@@ -42214,7 +42268,7 @@ var require_foldFlowLines = /* @__PURE__ */ __commonJSMin(((exports) => {
42214
42268
  }));
42215
42269
 
42216
42270
  //#endregion
42217
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/stringify/stringifyString.js
42271
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/stringify/stringifyString.js
42218
42272
  var require_stringifyString = /* @__PURE__ */ __commonJSMin(((exports) => {
42219
42273
  var Scalar = require_Scalar();
42220
42274
  var foldFlowLines = require_foldFlowLines();
@@ -42439,7 +42493,7 @@ var require_stringifyString = /* @__PURE__ */ __commonJSMin(((exports) => {
42439
42493
  }));
42440
42494
 
42441
42495
  //#endregion
42442
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/stringify/stringify.js
42496
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/stringify/stringify.js
42443
42497
  var require_stringify$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
42444
42498
  var anchors = require_anchors();
42445
42499
  var identity = require_identity();
@@ -42548,7 +42602,7 @@ var require_stringify$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
42548
42602
  }));
42549
42603
 
42550
42604
  //#endregion
42551
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/stringify/stringifyPair.js
42605
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/stringify/stringifyPair.js
42552
42606
  var require_stringifyPair = /* @__PURE__ */ __commonJSMin(((exports) => {
42553
42607
  var identity = require_identity();
42554
42608
  var Scalar = require_Scalar();
@@ -42646,7 +42700,7 @@ var require_stringifyPair = /* @__PURE__ */ __commonJSMin(((exports) => {
42646
42700
  }));
42647
42701
 
42648
42702
  //#endregion
42649
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/log.js
42703
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/log.js
42650
42704
  var require_log = /* @__PURE__ */ __commonJSMin(((exports) => {
42651
42705
  var node_process$2 = __require$1("process");
42652
42706
  function debug(logLevel, ...messages) {
@@ -42663,7 +42717,7 @@ var require_log = /* @__PURE__ */ __commonJSMin(((exports) => {
42663
42717
  }));
42664
42718
 
42665
42719
  //#endregion
42666
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/merge.js
42720
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/yaml-1.1/merge.js
42667
42721
  var require_merge = /* @__PURE__ */ __commonJSMin(((exports) => {
42668
42722
  var identity = require_identity();
42669
42723
  var Scalar = require_Scalar();
@@ -42707,7 +42761,7 @@ var require_merge = /* @__PURE__ */ __commonJSMin(((exports) => {
42707
42761
  }));
42708
42762
 
42709
42763
  //#endregion
42710
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/addPairToJSMap.js
42764
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/nodes/addPairToJSMap.js
42711
42765
  var require_addPairToJSMap = /* @__PURE__ */ __commonJSMin(((exports) => {
42712
42766
  var log = require_log();
42713
42767
  var merge = require_merge();
@@ -42759,7 +42813,7 @@ var require_addPairToJSMap = /* @__PURE__ */ __commonJSMin(((exports) => {
42759
42813
  }));
42760
42814
 
42761
42815
  //#endregion
42762
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/Pair.js
42816
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/nodes/Pair.js
42763
42817
  var require_Pair = /* @__PURE__ */ __commonJSMin(((exports) => {
42764
42818
  var createNode = require_createNode();
42765
42819
  var stringifyPair = require_stringifyPair();
@@ -42795,7 +42849,7 @@ var require_Pair = /* @__PURE__ */ __commonJSMin(((exports) => {
42795
42849
  }));
42796
42850
 
42797
42851
  //#endregion
42798
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/stringify/stringifyCollection.js
42852
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/stringify/stringifyCollection.js
42799
42853
  var require_stringifyCollection = /* @__PURE__ */ __commonJSMin(((exports) => {
42800
42854
  var identity = require_identity();
42801
42855
  var stringify = require_stringify$1();
@@ -42914,7 +42968,7 @@ var require_stringifyCollection = /* @__PURE__ */ __commonJSMin(((exports) => {
42914
42968
  }));
42915
42969
 
42916
42970
  //#endregion
42917
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/YAMLMap.js
42971
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/nodes/YAMLMap.js
42918
42972
  var require_YAMLMap = /* @__PURE__ */ __commonJSMin(((exports) => {
42919
42973
  var stringifyCollection = require_stringifyCollection();
42920
42974
  var addPairToJSMap = require_addPairToJSMap();
@@ -43024,7 +43078,7 @@ var require_YAMLMap = /* @__PURE__ */ __commonJSMin(((exports) => {
43024
43078
  }));
43025
43079
 
43026
43080
  //#endregion
43027
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/common/map.js
43081
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/common/map.js
43028
43082
  var require_map = /* @__PURE__ */ __commonJSMin(((exports) => {
43029
43083
  var identity = require_identity();
43030
43084
  var YAMLMap = require_YAMLMap();
@@ -43043,7 +43097,7 @@ var require_map = /* @__PURE__ */ __commonJSMin(((exports) => {
43043
43097
  }));
43044
43098
 
43045
43099
  //#endregion
43046
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/YAMLSeq.js
43100
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/nodes/YAMLSeq.js
43047
43101
  var require_YAMLSeq = /* @__PURE__ */ __commonJSMin(((exports) => {
43048
43102
  var createNode = require_createNode();
43049
43103
  var stringifyCollection = require_stringifyCollection();
@@ -43150,7 +43204,7 @@ var require_YAMLSeq = /* @__PURE__ */ __commonJSMin(((exports) => {
43150
43204
  }));
43151
43205
 
43152
43206
  //#endregion
43153
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/common/seq.js
43207
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/common/seq.js
43154
43208
  var require_seq = /* @__PURE__ */ __commonJSMin(((exports) => {
43155
43209
  var identity = require_identity();
43156
43210
  var YAMLSeq = require_YAMLSeq();
@@ -43169,7 +43223,7 @@ var require_seq = /* @__PURE__ */ __commonJSMin(((exports) => {
43169
43223
  }));
43170
43224
 
43171
43225
  //#endregion
43172
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/common/string.js
43226
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/common/string.js
43173
43227
  var require_string = /* @__PURE__ */ __commonJSMin(((exports) => {
43174
43228
  var stringifyString = require_stringifyString();
43175
43229
  const string = {
@@ -43186,7 +43240,7 @@ var require_string = /* @__PURE__ */ __commonJSMin(((exports) => {
43186
43240
  }));
43187
43241
 
43188
43242
  //#endregion
43189
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/common/null.js
43243
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/common/null.js
43190
43244
  var require_null = /* @__PURE__ */ __commonJSMin(((exports) => {
43191
43245
  var Scalar = require_Scalar();
43192
43246
  const nullTag = {
@@ -43202,7 +43256,7 @@ var require_null = /* @__PURE__ */ __commonJSMin(((exports) => {
43202
43256
  }));
43203
43257
 
43204
43258
  //#endregion
43205
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/core/bool.js
43259
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/core/bool.js
43206
43260
  var require_bool$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
43207
43261
  var Scalar = require_Scalar();
43208
43262
  const boolTag = {
@@ -43222,7 +43276,7 @@ var require_bool$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
43222
43276
  }));
43223
43277
 
43224
43278
  //#endregion
43225
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/stringify/stringifyNumber.js
43279
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/stringify/stringifyNumber.js
43226
43280
  var require_stringifyNumber = /* @__PURE__ */ __commonJSMin(((exports) => {
43227
43281
  function stringifyNumber({ format, minFractionDigits, tag, value }) {
43228
43282
  if (typeof value === "bigint") return String(value);
@@ -43244,7 +43298,7 @@ var require_stringifyNumber = /* @__PURE__ */ __commonJSMin(((exports) => {
43244
43298
  }));
43245
43299
 
43246
43300
  //#endregion
43247
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/core/float.js
43301
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/core/float.js
43248
43302
  var require_float$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
43249
43303
  var Scalar = require_Scalar();
43250
43304
  var stringifyNumber = require_stringifyNumber();
@@ -43287,7 +43341,7 @@ var require_float$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
43287
43341
  }));
43288
43342
 
43289
43343
  //#endregion
43290
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/core/int.js
43344
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/core/int.js
43291
43345
  var require_int$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
43292
43346
  var stringifyNumber = require_stringifyNumber();
43293
43347
  const intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value);
@@ -43329,7 +43383,7 @@ var require_int$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
43329
43383
  }));
43330
43384
 
43331
43385
  //#endregion
43332
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/core/schema.js
43386
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/core/schema.js
43333
43387
  var require_schema$2 = /* @__PURE__ */ __commonJSMin(((exports) => {
43334
43388
  var map = require_map();
43335
43389
  var _null = require_null();
@@ -43355,7 +43409,7 @@ var require_schema$2 = /* @__PURE__ */ __commonJSMin(((exports) => {
43355
43409
  }));
43356
43410
 
43357
43411
  //#endregion
43358
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/json/schema.js
43412
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/json/schema.js
43359
43413
  var require_schema$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
43360
43414
  var Scalar = require_Scalar();
43361
43415
  var map = require_map();
@@ -43419,7 +43473,7 @@ var require_schema$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
43419
43473
  }));
43420
43474
 
43421
43475
  //#endregion
43422
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/binary.js
43476
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/yaml-1.1/binary.js
43423
43477
  var require_binary = /* @__PURE__ */ __commonJSMin(((exports) => {
43424
43478
  var node_buffer = __require$1("buffer");
43425
43479
  var Scalar = require_Scalar();
@@ -43477,7 +43531,7 @@ var require_binary = /* @__PURE__ */ __commonJSMin(((exports) => {
43477
43531
  }));
43478
43532
 
43479
43533
  //#endregion
43480
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/pairs.js
43534
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/yaml-1.1/pairs.js
43481
43535
  var require_pairs = /* @__PURE__ */ __commonJSMin(((exports) => {
43482
43536
  var identity = require_identity();
43483
43537
  var Pair = require_Pair();
@@ -43539,7 +43593,7 @@ var require_pairs = /* @__PURE__ */ __commonJSMin(((exports) => {
43539
43593
  }));
43540
43594
 
43541
43595
  //#endregion
43542
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/omap.js
43596
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/yaml-1.1/omap.js
43543
43597
  var require_omap = /* @__PURE__ */ __commonJSMin(((exports) => {
43544
43598
  var identity = require_identity();
43545
43599
  var toJS = require_toJS();
@@ -43605,7 +43659,7 @@ var require_omap = /* @__PURE__ */ __commonJSMin(((exports) => {
43605
43659
  }));
43606
43660
 
43607
43661
  //#endregion
43608
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/bool.js
43662
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/yaml-1.1/bool.js
43609
43663
  var require_bool = /* @__PURE__ */ __commonJSMin(((exports) => {
43610
43664
  var Scalar = require_Scalar();
43611
43665
  function boolStringify({ value, source }, ctx) {
@@ -43633,7 +43687,7 @@ var require_bool = /* @__PURE__ */ __commonJSMin(((exports) => {
43633
43687
  }));
43634
43688
 
43635
43689
  //#endregion
43636
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/float.js
43690
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/yaml-1.1/float.js
43637
43691
  var require_float = /* @__PURE__ */ __commonJSMin(((exports) => {
43638
43692
  var Scalar = require_Scalar();
43639
43693
  var stringifyNumber = require_stringifyNumber();
@@ -43679,7 +43733,7 @@ var require_float = /* @__PURE__ */ __commonJSMin(((exports) => {
43679
43733
  }));
43680
43734
 
43681
43735
  //#endregion
43682
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/int.js
43736
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/yaml-1.1/int.js
43683
43737
  var require_int = /* @__PURE__ */ __commonJSMin(((exports) => {
43684
43738
  var stringifyNumber = require_stringifyNumber();
43685
43739
  const intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value);
@@ -43753,7 +43807,7 @@ var require_int = /* @__PURE__ */ __commonJSMin(((exports) => {
43753
43807
  }));
43754
43808
 
43755
43809
  //#endregion
43756
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/set.js
43810
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/yaml-1.1/set.js
43757
43811
  var require_set = /* @__PURE__ */ __commonJSMin(((exports) => {
43758
43812
  var identity = require_identity();
43759
43813
  var Pair = require_Pair();
@@ -43823,7 +43877,7 @@ var require_set = /* @__PURE__ */ __commonJSMin(((exports) => {
43823
43877
  }));
43824
43878
 
43825
43879
  //#endregion
43826
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js
43880
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js
43827
43881
  var require_timestamp = /* @__PURE__ */ __commonJSMin(((exports) => {
43828
43882
  var stringifyNumber = require_stringifyNumber();
43829
43883
  /** Internal types handle bigint as number, because TS can't figure it out. */
@@ -43907,7 +43961,7 @@ var require_timestamp = /* @__PURE__ */ __commonJSMin(((exports) => {
43907
43961
  }));
43908
43962
 
43909
43963
  //#endregion
43910
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/schema.js
43964
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/yaml-1.1/schema.js
43911
43965
  var require_schema = /* @__PURE__ */ __commonJSMin(((exports) => {
43912
43966
  var map = require_map();
43913
43967
  var _null = require_null();
@@ -43949,7 +44003,7 @@ var require_schema = /* @__PURE__ */ __commonJSMin(((exports) => {
43949
44003
  }));
43950
44004
 
43951
44005
  //#endregion
43952
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/tags.js
44006
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/tags.js
43953
44007
  var require_tags = /* @__PURE__ */ __commonJSMin(((exports) => {
43954
44008
  var map = require_map();
43955
44009
  var _null = require_null();
@@ -44036,7 +44090,7 @@ var require_tags = /* @__PURE__ */ __commonJSMin(((exports) => {
44036
44090
  }));
44037
44091
 
44038
44092
  //#endregion
44039
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/Schema.js
44093
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/schema/Schema.js
44040
44094
  var require_Schema = /* @__PURE__ */ __commonJSMin(((exports) => {
44041
44095
  var identity = require_identity();
44042
44096
  var map = require_map();
@@ -44066,7 +44120,7 @@ var require_Schema = /* @__PURE__ */ __commonJSMin(((exports) => {
44066
44120
  }));
44067
44121
 
44068
44122
  //#endregion
44069
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/stringify/stringifyDocument.js
44123
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/stringify/stringifyDocument.js
44070
44124
  var require_stringifyDocument = /* @__PURE__ */ __commonJSMin(((exports) => {
44071
44125
  var identity = require_identity();
44072
44126
  var stringify = require_stringify$1();
@@ -44129,7 +44183,7 @@ var require_stringifyDocument = /* @__PURE__ */ __commonJSMin(((exports) => {
44129
44183
  }));
44130
44184
 
44131
44185
  //#endregion
44132
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/doc/Document.js
44186
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/doc/Document.js
44133
44187
  var require_Document = /* @__PURE__ */ __commonJSMin(((exports) => {
44134
44188
  var Alias = require_Alias();
44135
44189
  var Collection = require_Collection();
@@ -44411,7 +44465,7 @@ var require_Document = /* @__PURE__ */ __commonJSMin(((exports) => {
44411
44465
  }));
44412
44466
 
44413
44467
  //#endregion
44414
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/errors.js
44468
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/errors.js
44415
44469
  var require_errors = /* @__PURE__ */ __commonJSMin(((exports) => {
44416
44470
  var YAMLError = class extends Error {
44417
44471
  constructor(name, pos, code, message) {
@@ -44465,7 +44519,7 @@ var require_errors = /* @__PURE__ */ __commonJSMin(((exports) => {
44465
44519
  }));
44466
44520
 
44467
44521
  //#endregion
44468
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/resolve-props.js
44522
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/compose/resolve-props.js
44469
44523
  var require_resolve_props = /* @__PURE__ */ __commonJSMin(((exports) => {
44470
44524
  function resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) {
44471
44525
  let spaceBefore = false;
@@ -44573,7 +44627,7 @@ var require_resolve_props = /* @__PURE__ */ __commonJSMin(((exports) => {
44573
44627
  }));
44574
44628
 
44575
44629
  //#endregion
44576
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/util-contains-newline.js
44630
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/compose/util-contains-newline.js
44577
44631
  var require_util_contains_newline = /* @__PURE__ */ __commonJSMin(((exports) => {
44578
44632
  function containsNewline(key) {
44579
44633
  if (!key) return null;
@@ -44603,7 +44657,7 @@ var require_util_contains_newline = /* @__PURE__ */ __commonJSMin(((exports) =>
44603
44657
  }));
44604
44658
 
44605
44659
  //#endregion
44606
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/util-flow-indent-check.js
44660
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/compose/util-flow-indent-check.js
44607
44661
  var require_util_flow_indent_check = /* @__PURE__ */ __commonJSMin(((exports) => {
44608
44662
  var utilContainsNewline = require_util_contains_newline();
44609
44663
  function flowIndentCheck(indent, fc, onError) {
@@ -44616,7 +44670,7 @@ var require_util_flow_indent_check = /* @__PURE__ */ __commonJSMin(((exports) =>
44616
44670
  }));
44617
44671
 
44618
44672
  //#endregion
44619
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/util-map-includes.js
44673
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/compose/util-map-includes.js
44620
44674
  var require_util_map_includes = /* @__PURE__ */ __commonJSMin(((exports) => {
44621
44675
  var identity = require_identity();
44622
44676
  function mapIncludes(ctx, items, search) {
@@ -44629,7 +44683,7 @@ var require_util_map_includes = /* @__PURE__ */ __commonJSMin(((exports) => {
44629
44683
  }));
44630
44684
 
44631
44685
  //#endregion
44632
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/resolve-block-map.js
44686
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/compose/resolve-block-map.js
44633
44687
  var require_resolve_block_map = /* @__PURE__ */ __commonJSMin(((exports) => {
44634
44688
  var Pair = require_Pair();
44635
44689
  var YAMLMap = require_YAMLMap();
@@ -44718,7 +44772,7 @@ var require_resolve_block_map = /* @__PURE__ */ __commonJSMin(((exports) => {
44718
44772
  }));
44719
44773
 
44720
44774
  //#endregion
44721
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/resolve-block-seq.js
44775
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/compose/resolve-block-seq.js
44722
44776
  var require_resolve_block_seq = /* @__PURE__ */ __commonJSMin(((exports) => {
44723
44777
  var YAMLSeq = require_YAMLSeq();
44724
44778
  var resolveProps = require_resolve_props();
@@ -44764,7 +44818,7 @@ var require_resolve_block_seq = /* @__PURE__ */ __commonJSMin(((exports) => {
44764
44818
  }));
44765
44819
 
44766
44820
  //#endregion
44767
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/resolve-end.js
44821
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/compose/resolve-end.js
44768
44822
  var require_resolve_end = /* @__PURE__ */ __commonJSMin(((exports) => {
44769
44823
  function resolveEnd(end, offset, reqSpace, onError) {
44770
44824
  let comment = "";
@@ -44803,7 +44857,7 @@ var require_resolve_end = /* @__PURE__ */ __commonJSMin(((exports) => {
44803
44857
  }));
44804
44858
 
44805
44859
  //#endregion
44806
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/resolve-flow-collection.js
44860
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/compose/resolve-flow-collection.js
44807
44861
  var require_resolve_flow_collection = /* @__PURE__ */ __commonJSMin(((exports) => {
44808
44862
  var identity = require_identity();
44809
44863
  var Pair = require_Pair();
@@ -44967,7 +45021,7 @@ var require_resolve_flow_collection = /* @__PURE__ */ __commonJSMin(((exports) =
44967
45021
  }));
44968
45022
 
44969
45023
  //#endregion
44970
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/compose-collection.js
45024
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/compose/compose-collection.js
44971
45025
  var require_compose_collection = /* @__PURE__ */ __commonJSMin(((exports) => {
44972
45026
  var identity = require_identity();
44973
45027
  var Scalar = require_Scalar();
@@ -45020,7 +45074,7 @@ var require_compose_collection = /* @__PURE__ */ __commonJSMin(((exports) => {
45020
45074
  }));
45021
45075
 
45022
45076
  //#endregion
45023
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/resolve-block-scalar.js
45077
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/compose/resolve-block-scalar.js
45024
45078
  var require_resolve_block_scalar = /* @__PURE__ */ __commonJSMin(((exports) => {
45025
45079
  var Scalar = require_Scalar();
45026
45080
  function resolveBlockScalar(ctx, scalar, onError) {
@@ -45198,7 +45252,7 @@ var require_resolve_block_scalar = /* @__PURE__ */ __commonJSMin(((exports) => {
45198
45252
  }));
45199
45253
 
45200
45254
  //#endregion
45201
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/resolve-flow-scalar.js
45255
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/compose/resolve-flow-scalar.js
45202
45256
  var require_resolve_flow_scalar = /* @__PURE__ */ __commonJSMin(((exports) => {
45203
45257
  var Scalar = require_Scalar();
45204
45258
  var resolveEnd = require_resolve_end();
@@ -45268,40 +45322,41 @@ var require_resolve_flow_scalar = /* @__PURE__ */ __commonJSMin(((exports) => {
45268
45322
  case "`": badChar = `reserved character ${source[0]}`;
45269
45323
  }
45270
45324
  if (badChar) onError(0, "BAD_SCALAR_START", `Plain value cannot start with ${badChar}`);
45271
- return foldLines(source);
45325
+ return unfoldLines(source);
45272
45326
  }
45273
45327
  function singleQuotedValue(source, onError) {
45274
45328
  if (source[source.length - 1] !== "'" || source.length === 1) onError(source.length, "MISSING_CHAR", "Missing closing 'quote");
45275
- return foldLines(source.slice(1, -1)).replace(/''/g, "'");
45329
+ return unfoldLines(source.slice(1, -1)).replace(/''/g, "'");
45276
45330
  }
45277
- function foldLines(source) {
45331
+ function unfoldLines(source) {
45332
+ const line = /(.*?)\r?\n/sy;
45333
+ let match = line.exec(source);
45334
+ if (!match) return source;
45278
45335
  /**
45279
- * The negative lookbehind here and in the `re` RegExp is to
45336
+ * The negative lookbehinds in these RegExps are to
45280
45337
  * prevent causing a polynomial search time in certain cases.
45281
45338
  *
45282
- * The try-catch is for Safari, which doesn't support this yet:
45339
+ * The try-catch is for Safari < 16.4 and other old browsers:
45283
45340
  * https://caniuse.com/js-regexp-lookbehind
45284
45341
  */
45285
- let first, line;
45342
+ let trimEnd, trimBoth;
45286
45343
  try {
45287
- first = new RegExp("(.*?)(?<![ ])[ ]*\r?\n", "sy");
45288
- line = new RegExp("[ ]*(.*?)(?:(?<![ ])[ ]*)?\r?\n", "sy");
45344
+ trimEnd = new RegExp("(?<![ ])[ ]+$");
45345
+ trimBoth = new RegExp("^[ ]+|(?<![ ])[ ]+$", "g");
45289
45346
  } catch {
45290
- first = /(.*?)[ \t]*\r?\n/sy;
45291
- line = /[ \t]*(.*?)[ \t]*\r?\n/sy;
45347
+ trimEnd = /[ \t]+$/;
45348
+ trimBoth = /^[ \t]+|[ \t]+$/g;
45292
45349
  }
45293
- let match = first.exec(source);
45294
- if (!match) return source;
45295
- let res = match[1];
45350
+ let res = match[1].replace(trimEnd, "");
45296
45351
  let sep = " ";
45297
- let pos = first.lastIndex;
45298
- line.lastIndex = pos;
45352
+ let pos = line.lastIndex;
45299
45353
  while (match = line.exec(source)) {
45300
- if (match[1] === "") {
45354
+ const lm = match[1].replace(trimBoth, "");
45355
+ if (lm === "") {
45301
45356
  if (sep === "\n") res += sep;
45302
45357
  else sep = "\n";
45303
45358
  } else {
45304
- res += sep + match[1];
45359
+ res += sep + lm;
45305
45360
  sep = " ";
45306
45361
  }
45307
45362
  pos = line.lastIndex;
@@ -45403,7 +45458,7 @@ var require_resolve_flow_scalar = /* @__PURE__ */ __commonJSMin(((exports) => {
45403
45458
  }));
45404
45459
 
45405
45460
  //#endregion
45406
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/compose-scalar.js
45461
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/compose/compose-scalar.js
45407
45462
  var require_compose_scalar = /* @__PURE__ */ __commonJSMin(((exports) => {
45408
45463
  var identity = require_identity();
45409
45464
  var Scalar = require_Scalar();
@@ -45465,7 +45520,7 @@ var require_compose_scalar = /* @__PURE__ */ __commonJSMin(((exports) => {
45465
45520
  }));
45466
45521
 
45467
45522
  //#endregion
45468
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/util-empty-scalar-position.js
45523
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/compose/util-empty-scalar-position.js
45469
45524
  var require_util_empty_scalar_position = /* @__PURE__ */ __commonJSMin(((exports) => {
45470
45525
  function emptyScalarPosition(offset, before, pos) {
45471
45526
  if (before) {
@@ -45493,7 +45548,7 @@ var require_util_empty_scalar_position = /* @__PURE__ */ __commonJSMin(((exports
45493
45548
  }));
45494
45549
 
45495
45550
  //#endregion
45496
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/compose-node.js
45551
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/compose/compose-node.js
45497
45552
  var require_compose_node = /* @__PURE__ */ __commonJSMin(((exports) => {
45498
45553
  var Alias = require_Alias();
45499
45554
  var identity = require_identity();
@@ -45585,7 +45640,7 @@ var require_compose_node = /* @__PURE__ */ __commonJSMin(((exports) => {
45585
45640
  }));
45586
45641
 
45587
45642
  //#endregion
45588
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/compose-doc.js
45643
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/compose/compose-doc.js
45589
45644
  var require_compose_doc = /* @__PURE__ */ __commonJSMin(((exports) => {
45590
45645
  var Document = require_Document();
45591
45646
  var composeNode = require_compose_node();
@@ -45628,7 +45683,7 @@ var require_compose_doc = /* @__PURE__ */ __commonJSMin(((exports) => {
45628
45683
  }));
45629
45684
 
45630
45685
  //#endregion
45631
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/composer.js
45686
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/compose/composer.js
45632
45687
  var require_composer = /* @__PURE__ */ __commonJSMin(((exports) => {
45633
45688
  var node_process$1 = __require$1("process");
45634
45689
  var directives = require_directives();
@@ -45827,7 +45882,7 @@ var require_composer = /* @__PURE__ */ __commonJSMin(((exports) => {
45827
45882
  }));
45828
45883
 
45829
45884
  //#endregion
45830
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/parse/cst-scalar.js
45885
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/parse/cst-scalar.js
45831
45886
  var require_cst_scalar = /* @__PURE__ */ __commonJSMin(((exports) => {
45832
45887
  var resolveBlockScalar = require_resolve_block_scalar();
45833
45888
  var resolveFlowScalar = require_resolve_flow_scalar();
@@ -46095,7 +46150,7 @@ var require_cst_scalar = /* @__PURE__ */ __commonJSMin(((exports) => {
46095
46150
  }));
46096
46151
 
46097
46152
  //#endregion
46098
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/parse/cst-stringify.js
46153
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/parse/cst-stringify.js
46099
46154
  var require_cst_stringify = /* @__PURE__ */ __commonJSMin(((exports) => {
46100
46155
  /**
46101
46156
  * Stringify a CST document, token, or collection item
@@ -46147,7 +46202,7 @@ var require_cst_stringify = /* @__PURE__ */ __commonJSMin(((exports) => {
46147
46202
  }));
46148
46203
 
46149
46204
  //#endregion
46150
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/parse/cst-visit.js
46205
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/parse/cst-visit.js
46151
46206
  var require_cst_visit = /* @__PURE__ */ __commonJSMin(((exports) => {
46152
46207
  const BREAK = Symbol("break visit");
46153
46208
  const SKIP = Symbol("skip children");
@@ -46239,7 +46294,7 @@ var require_cst_visit = /* @__PURE__ */ __commonJSMin(((exports) => {
46239
46294
  }));
46240
46295
 
46241
46296
  //#endregion
46242
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/parse/cst.js
46297
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/parse/cst.js
46243
46298
  var require_cst = /* @__PURE__ */ __commonJSMin(((exports) => {
46244
46299
  var cstScalar = require_cst_scalar();
46245
46300
  var cstStringify = require_cst_stringify();
@@ -46319,7 +46374,7 @@ var require_cst = /* @__PURE__ */ __commonJSMin(((exports) => {
46319
46374
  }));
46320
46375
 
46321
46376
  //#endregion
46322
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/parse/lexer.js
46377
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/parse/lexer.js
46323
46378
  var require_lexer = /* @__PURE__ */ __commonJSMin(((exports) => {
46324
46379
  var cst = require_cst();
46325
46380
  function isEmpty(ch) {
@@ -46853,7 +46908,7 @@ var require_lexer = /* @__PURE__ */ __commonJSMin(((exports) => {
46853
46908
  }));
46854
46909
 
46855
46910
  //#endregion
46856
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/parse/line-counter.js
46911
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/parse/line-counter.js
46857
46912
  var require_line_counter = /* @__PURE__ */ __commonJSMin(((exports) => {
46858
46913
  /**
46859
46914
  * Tracks newlines during parsing in order to provide an efficient API for
@@ -46901,7 +46956,7 @@ var require_line_counter = /* @__PURE__ */ __commonJSMin(((exports) => {
46901
46956
  }));
46902
46957
 
46903
46958
  //#endregion
46904
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/parse/parser.js
46959
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/parse/parser.js
46905
46960
  var require_parser = /* @__PURE__ */ __commonJSMin(((exports) => {
46906
46961
  var node_process = __require$1("process");
46907
46962
  var cst = require_cst();
@@ -47768,7 +47823,7 @@ var require_parser = /* @__PURE__ */ __commonJSMin(((exports) => {
47768
47823
  }));
47769
47824
 
47770
47825
  //#endregion
47771
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/public-api.js
47826
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/public-api.js
47772
47827
  var require_public_api = /* @__PURE__ */ __commonJSMin(((exports) => {
47773
47828
  var composer = require_composer();
47774
47829
  var Document = require_Document();
@@ -47858,7 +47913,7 @@ var require_public_api = /* @__PURE__ */ __commonJSMin(((exports) => {
47858
47913
  }));
47859
47914
 
47860
47915
  //#endregion
47861
- //#region ../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/index.js
47916
+ //#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/index.js
47862
47917
  var require_dist = /* @__PURE__ */ __commonJSMin(((exports) => {
47863
47918
  var composer = require_composer();
47864
47919
  var Document = require_Document();
@@ -56317,6 +56372,7 @@ var changesets_exports = /* @__PURE__ */ __exportAll({
56317
56372
  ChangelogTransformer: () => ChangelogTransformer,
56318
56373
  ChangesetIOError: () => ChangesetIOError,
56319
56374
  ChangesetLinter: () => ChangesetLinter,
56375
+ ChangesetLogMode: () => ChangesetLogMode,
56320
56376
  ChangesetOptionsSchema: () => ChangesetOptionsSchema,
56321
56377
  ChangesetPreviewSchema: () => ChangesetPreviewSchema,
56322
56378
  ChangesetSchema: () => ChangesetSchema,
@@ -56403,6 +56459,7 @@ var changesets_exports = /* @__PURE__ */ __exportAll({
56403
56459
  isPureDependencyChangeset: () => isPureDependencyChangeset,
56404
56460
  listPublishablePackageNames: () => listPublishablePackageNames,
56405
56461
  makeBranchAnalyzerTest: () => makeBranchAnalyzerTest,
56462
+ makeChangelogFunctions: () => makeChangelogFunctions,
56406
56463
  makeConfigInspectorTest: () => makeConfigInspectorTest,
56407
56464
  makeDepsRegenDefault: () => makeDepsRegenDefault,
56408
56465
  makeGitHubTest: () => makeGitHubTest,
@@ -56417,13 +56474,23 @@ var changesets_exports = /* @__PURE__ */ __exportAll({
56417
56474
  /**
56418
56475
  * Changesets API changelog formatter shim for \@savvy-web/silk.
56419
56476
  *
56420
- * Drop-in replacement for \@savvy-web/changesets/changelog.
56421
- * The default export is the ChangelogFunctions object consumed by the
56422
- * Changesets CLI via the changelog field in .changeset/config.json.
56477
+ * Drop-in replacement for \@savvy-web/changesets/changelog (superseded by
56478
+ * \@savvy-web/changelog, which this mirrors exactly). The default export is
56479
+ * the ChangelogFunctions object consumed by the Changesets CLI via the
56480
+ * changelog field in .changeset/config.json.
56481
+ *
56482
+ * This shim is the host adapter for the changesets CLI, a foreign process
56483
+ * that supplies no context of its own, so the warning mode is read from
56484
+ * `process.env` HERE and handed to the engine, which never reads it.
56423
56485
  *
56424
56486
  * @packageDocumentation
56425
56487
  */
56426
- const changelogFunctions = changesets_exports.changelogFunctions;
56488
+ const logMode = () => {
56489
+ if (process.env.VITEST) return "silent";
56490
+ if (process.env.GITHUB_ACTIONS === "true") return "github";
56491
+ return "stderr";
56492
+ };
56493
+ const changelogFunctions = changesets_exports.makeChangelogFunctions({ logMode: logMode() });
56427
56494
 
56428
56495
  //#endregion
56429
56496
  export { changelogFunctions as default };