@mark1russell7/ste-lint 0.0.0-bootstrap.0 → 0.1.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.
- package/README.md +224 -1
- package/dist/.tsbuildinfo +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +9 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +103 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +251 -0
- package/dist/config.js.map +1 -0
- package/dist/dictionary.d.ts +74 -0
- package/dist/dictionary.d.ts.map +1 -0
- package/dist/dictionary.js +169 -0
- package/dist/dictionary.js.map +1 -0
- package/dist/files.d.ts +35 -0
- package/dist/files.d.ts.map +1 -0
- package/dist/files.js +181 -0
- package/dist/files.js.map +1 -0
- package/dist/format.d.ts +21 -0
- package/dist/format.d.ts.map +1 -0
- package/dist/format.js +61 -0
- package/dist/format.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/lexicon.d.ts +33 -0
- package/dist/lexicon.d.ts.map +1 -0
- package/dist/lexicon.js +71 -0
- package/dist/lexicon.js.map +1 -0
- package/dist/lint.d.ts +28 -0
- package/dist/lint.d.ts.map +1 -0
- package/dist/lint.js +132 -0
- package/dist/lint.js.map +1 -0
- package/dist/rules/about-quantity.d.ts +3 -0
- package/dist/rules/about-quantity.d.ts.map +1 -0
- package/dist/rules/about-quantity.js +34 -0
- package/dist/rules/about-quantity.js.map +1 -0
- package/dist/rules/index.d.ts +8 -0
- package/dist/rules/index.d.ts.map +1 -0
- package/dist/rules/index.js +35 -0
- package/dist/rules/index.js.map +1 -0
- package/dist/rules/ing-verb.d.ts +9 -0
- package/dist/rules/ing-verb.d.ts.map +1 -0
- package/dist/rules/ing-verb.js +60 -0
- package/dist/rules/ing-verb.js.map +1 -0
- package/dist/rules/latin-abbreviation.d.ts +3 -0
- package/dist/rules/latin-abbreviation.d.ts.map +1 -0
- package/dist/rules/latin-abbreviation.js +48 -0
- package/dist/rules/latin-abbreviation.js.map +1 -0
- package/dist/rules/missing-subject.d.ts +16 -0
- package/dist/rules/missing-subject.d.ts.map +1 -0
- package/dist/rules/missing-subject.js +138 -0
- package/dist/rules/missing-subject.js.map +1 -0
- package/dist/rules/modal-verb.d.ts +3 -0
- package/dist/rules/modal-verb.d.ts.map +1 -0
- package/dist/rules/modal-verb.js +72 -0
- package/dist/rules/modal-verb.js.map +1 -0
- package/dist/rules/noun-cluster.d.ts +17 -0
- package/dist/rules/noun-cluster.d.ts.map +1 -0
- package/dist/rules/noun-cluster.js +83 -0
- package/dist/rules/noun-cluster.js.map +1 -0
- package/dist/rules/paragraph-length.d.ts +3 -0
- package/dist/rules/paragraph-length.d.ts.map +1 -0
- package/dist/rules/paragraph-length.js +19 -0
- package/dist/rules/paragraph-length.js.map +1 -0
- package/dist/rules/passive-instruction.d.ts +15 -0
- package/dist/rules/passive-instruction.d.ts.map +1 -0
- package/dist/rules/passive-instruction.js +38 -0
- package/dist/rules/passive-instruction.js.map +1 -0
- package/dist/rules/pronouns.d.ts +4 -0
- package/dist/rules/pronouns.d.ts.map +1 -0
- package/dist/rules/pronouns.js +57 -0
- package/dist/rules/pronouns.js.map +1 -0
- package/dist/rules/rule.d.ts +46 -0
- package/dist/rules/rule.d.ts.map +1 -0
- package/dist/rules/rule.js +31 -0
- package/dist/rules/rule.js.map +1 -0
- package/dist/rules/semicolon.d.ts +3 -0
- package/dist/rules/semicolon.d.ts.map +1 -0
- package/dist/rules/semicolon.js +20 -0
- package/dist/rules/semicolon.js.map +1 -0
- package/dist/rules/sentence-length.d.ts +3 -0
- package/dist/rules/sentence-length.d.ts.map +1 -0
- package/dist/rules/sentence-length.js +31 -0
- package/dist/rules/sentence-length.js.map +1 -0
- package/dist/rules/unknown-word.d.ts +9 -0
- package/dist/rules/unknown-word.d.ts.map +1 -0
- package/dist/rules/unknown-word.js +49 -0
- package/dist/rules/unknown-word.js.map +1 -0
- package/dist/rules/word-list-matcher.d.ts +25 -0
- package/dist/rules/word-list-matcher.d.ts.map +1 -0
- package/dist/rules/word-list-matcher.js +60 -0
- package/dist/rules/word-list-matcher.js.map +1 -0
- package/dist/rules/word-list.d.ts +3 -0
- package/dist/rules/word-list.d.ts.map +1 -0
- package/dist/rules/word-list.js +26 -0
- package/dist/rules/word-list.js.map +1 -0
- package/dist/run-cli.d.ts +27 -0
- package/dist/run-cli.d.ts.map +1 -0
- package/dist/run-cli.js +176 -0
- package/dist/run-cli.js.map +1 -0
- package/dist/source/blocks.d.ts +55 -0
- package/dist/source/blocks.d.ts.map +1 -0
- package/dist/source/blocks.js +464 -0
- package/dist/source/blocks.js.map +1 -0
- package/dist/source/inline.d.ts +42 -0
- package/dist/source/inline.d.ts.map +1 -0
- package/dist/source/inline.js +396 -0
- package/dist/source/inline.js.map +1 -0
- package/dist/source/jsx.d.ts +18 -0
- package/dist/source/jsx.d.ts.map +1 -0
- package/dist/source/jsx.js +137 -0
- package/dist/source/jsx.js.map +1 -0
- package/dist/source/lines.d.ts +34 -0
- package/dist/source/lines.d.ts.map +1 -0
- package/dist/source/lines.js +83 -0
- package/dist/source/lines.js.map +1 -0
- package/dist/source/markdown.d.ts +23 -0
- package/dist/source/markdown.d.ts.map +1 -0
- package/dist/source/markdown.js +42 -0
- package/dist/source/markdown.js.map +1 -0
- package/dist/source/suppressions.d.ts +38 -0
- package/dist/source/suppressions.d.ts.map +1 -0
- package/dist/source/suppressions.js +69 -0
- package/dist/source/suppressions.js.map +1 -0
- package/dist/source/tsdoc.d.ts +40 -0
- package/dist/source/tsdoc.d.ts.map +1 -0
- package/dist/source/tsdoc.js +176 -0
- package/dist/source/tsdoc.js.map +1 -0
- package/dist/text/grammar.d.ts +91 -0
- package/dist/text/grammar.d.ts.map +1 -0
- package/dist/text/grammar.js +289 -0
- package/dist/text/grammar.js.map +1 -0
- package/dist/text/phrases.d.ts +30 -0
- package/dist/text/phrases.d.ts.map +1 -0
- package/dist/text/phrases.js +65 -0
- package/dist/text/phrases.js.map +1 -0
- package/dist/text/sentences.d.ts +45 -0
- package/dist/text/sentences.d.ts.map +1 -0
- package/dist/text/sentences.js +141 -0
- package/dist/text/sentences.js.map +1 -0
- package/dist/text/tokens.d.ts +35 -0
- package/dist/text/tokens.d.ts.map +1 -0
- package/dist/text/tokens.js +113 -0
- package/dist/text/tokens.js.map +1 -0
- package/dist/text/words.d.ts +58 -0
- package/dist/text/words.d.ts.map +1 -0
- package/dist/text/words.js +159 -0
- package/dist/text/words.js.map +1 -0
- package/dist/types.d.ts +18 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +20 -0
- package/dist/types.js.map +1 -0
- package/dist/units.d.ts +47 -0
- package/dist/units.d.ts.map +1 -0
- package/dist/units.js +42 -0
- package/dist/units.js.map +1 -0
- package/dist/word-list.d.ts +34 -0
- package/dist/word-list.d.ts.map +1 -0
- package/dist/word-list.js +90 -0
- package/dist/word-list.js.map +1 -0
- package/package.json +41 -4
- package/src/cli.ts +9 -0
- package/src/config.test.ts +188 -0
- package/src/config.ts +318 -0
- package/src/dictionary.test.ts +82 -0
- package/src/dictionary.ts +177 -0
- package/src/files.test.ts +107 -0
- package/src/files.ts +191 -0
- package/src/format.ts +78 -0
- package/src/index.test.ts +28 -0
- package/src/index.ts +34 -0
- package/src/lexicon.ts +92 -0
- package/src/lint.test.ts +182 -0
- package/src/lint.ts +135 -0
- package/src/rules/about-quantity.ts +33 -0
- package/src/rules/index.ts +40 -0
- package/src/rules/ing-verb.test.ts +48 -0
- package/src/rules/ing-verb.ts +54 -0
- package/src/rules/latin-abbreviation.ts +46 -0
- package/src/rules/missing-subject.test.ts +53 -0
- package/src/rules/missing-subject.ts +129 -0
- package/src/rules/modal-verb.test.ts +45 -0
- package/src/rules/modal-verb.ts +72 -0
- package/src/rules/noun-cluster.test.ts +49 -0
- package/src/rules/noun-cluster.ts +82 -0
- package/src/rules/paragraph-length.test.ts +30 -0
- package/src/rules/paragraph-length.ts +19 -0
- package/src/rules/passive-instruction.test.ts +38 -0
- package/src/rules/passive-instruction.ts +37 -0
- package/src/rules/pronouns.test.ts +38 -0
- package/src/rules/pronouns.ts +54 -0
- package/src/rules/punctuation.test.ts +59 -0
- package/src/rules/rule.ts +73 -0
- package/src/rules/semicolon.ts +19 -0
- package/src/rules/sentence-length.test.ts +52 -0
- package/src/rules/sentence-length.ts +32 -0
- package/src/rules/unknown-word.test.ts +81 -0
- package/src/rules/unknown-word.ts +43 -0
- package/src/rules/word-list-matcher.ts +68 -0
- package/src/rules/word-list.test.ts +110 -0
- package/src/rules/word-list.ts +25 -0
- package/src/run-cli.test.ts +189 -0
- package/src/run-cli.ts +193 -0
- package/src/source/blocks.ts +534 -0
- package/src/source/inline.test.ts +92 -0
- package/src/source/inline.ts +416 -0
- package/src/source/jsx.test.ts +46 -0
- package/src/source/jsx.ts +147 -0
- package/src/source/lines.test.ts +51 -0
- package/src/source/lines.ts +91 -0
- package/src/source/markdown.test.ts +210 -0
- package/src/source/markdown.ts +49 -0
- package/src/source/suppressions.ts +79 -0
- package/src/source/tsdoc.test.ts +137 -0
- package/src/source/tsdoc.ts +189 -0
- package/src/text/grammar.ts +304 -0
- package/src/text/phrases.ts +72 -0
- package/src/text/sentences.ts +148 -0
- package/src/text/text.test.ts +262 -0
- package/src/text/tokens.ts +135 -0
- package/src/text/words.ts +183 -0
- package/src/types.ts +39 -0
- package/src/units.ts +86 -0
- package/src/word-list.ts +128 -0
- package/ste.config.schema.json +87 -0
package/README.md
CHANGED
|
@@ -1,3 +1,226 @@
|
|
|
1
1
|
# @mark1russell7/ste-lint
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
`ste-lint` examines the English prose of a project. It finds text that does not obey the writing rules of ASD-STE100 Simplified Technical English (STE), Issue 9. The projects that use it have STE as the style of their README files, their documentation and their TSDoc comments.
|
|
4
|
+
|
|
5
|
+
> [!NOTE]
|
|
6
|
+
> This tool is an automated approximation of the STE writing rules. It does not certify that a text obeys the standard. A text with no findings is not "STE compliant", and a person must examine the text too. This project is not affiliated with ASD, and ASD does not endorse this tool. "ASD-STE100" and "Simplified Technical English" are trademarks of ASD.
|
|
7
|
+
|
|
8
|
+
## Text that the tool examines
|
|
9
|
+
|
|
10
|
+
The tool reads these file types:
|
|
11
|
+
|
|
12
|
+
- **Markdown and MDX files.** The tool examines paragraphs, list items, block quotes, headings and table cells. It ignores front matter, fenced code, indented code, HTML blocks, JSX tags, MDX `import` and `export` lines, MDX expressions and link destinations.
|
|
13
|
+
- **TypeScript and JavaScript files.** The tool examines the doc comments (`/** ... */`). The TypeScript compiler parses each file, so comment syntax in a string or in a regular expression is not a comment. The tool ignores the names after `@param` and `@typeParam`, and it ignores `@example` sections. It examines the text of the other tags.
|
|
14
|
+
- **TSX and JSX files.** The tool also examines the text that the JSX shows. This text is the text of the elements, and the string values of some attributes, for example `title`, `aria-label` and `alt`. Inline elements, for example `strong` and `a`, stay in the text of their parent. A `code` element and a `{...}` expression each count as one word. The text of headings (`h1` to `h6`), of some short elements (for example `button` and `td`) and of the attributes is a fragment.
|
|
15
|
+
|
|
16
|
+
Each code span, `{@link ...}` tag, URL and quoted text counts as one word (STE Rule 8.6). The word rules do not examine the text in them. Thus, put code, file names, commands and quoted words in code font.
|
|
17
|
+
|
|
18
|
+
Headings and table cells are fragments. They get only the word rules, not the sentence rules or the paragraph rule.
|
|
19
|
+
|
|
20
|
+
## Rules
|
|
21
|
+
|
|
22
|
+
| ID | Default | STE rule | What the rule finds |
|
|
23
|
+
| --- | --- | --- | --- |
|
|
24
|
+
| `sentence-length` | error | 5.1, 6.3, 8.4 to 8.7 | An instruction with more than 20 words, or a descriptive sentence with more than 25 words. Text in parentheses counts as one word, and the tool examines it as a separate sentence. |
|
|
25
|
+
| `paragraph-length` | warning | 6.6 | A paragraph with more than 6 sentences. |
|
|
26
|
+
| `modal-verb` | error | 3.1, 3.4 | The modal verbs `should`, `may`, `might`, `would`, `shall`, `ought to`, `have to` and `need to`. |
|
|
27
|
+
| `semicolon` | error | 8.1 | A semicolon in prose. A semicolon in code is not prose. |
|
|
28
|
+
| `latin-abbreviation` | error | GR-6 | `e.g.`, `i.e.`, `etc.`, `vs.`, `viz.`, `cf.` and `et al.` |
|
|
29
|
+
| `about-quantity` | error | 1.3, 9.2 | The word `about` before a number or a quantity. Write "approximately". |
|
|
30
|
+
| `word-list` | per entry | 1.1, 9.1 | A word or a phrase of the project word list. The message gives the word to write. |
|
|
31
|
+
| `gendered-pronoun` | error | GR-7 | `he`, `she`, `his`, `her`, `him`, `hers`, `himself` and `herself`. |
|
|
32
|
+
| `first-person` | warning | GR-3 | `I`, `me`, `my`, `our` and `us`. The word "we" is correct for the organization that writes the text. |
|
|
33
|
+
| `passive-instruction` | warning | 3.6, 5.3 | The passive voice in an instruction, or an obligation in the passive voice (`must be set`). |
|
|
34
|
+
| `noun-cluster` | warning | 2.1 | More than 3 known nouns in sequence. |
|
|
35
|
+
| `missing-subject` | error | 4.2 | A doc comment sentence without a subject, for example `Returns the value.` |
|
|
36
|
+
| `ing-verb` | warning | 3.5 | An `-ing` form that the text uses as a verb. |
|
|
37
|
+
| `unknown-word` | warning | 1.1, 1.5, 1.12 | A word that is not in the local dictionary or the project glossary. This rule is active only with a dictionary. |
|
|
38
|
+
|
|
39
|
+
## Installation
|
|
40
|
+
|
|
41
|
+
The package is not on npm. Add it from GitHub as a development dependency of the root of the repository:
|
|
42
|
+
|
|
43
|
+
```sh
|
|
44
|
+
pnpm add -D github:mark1russell7/ste-lint
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
The repository contains the built code in `dist/`, thus the install builds nothing and needs no approval in `pnpm-workspace.yaml`.
|
|
48
|
+
|
|
49
|
+
Add a script to the root `package.json`, and put a `ste.config.json` at the root (refer to [Configuration](#configuration)):
|
|
50
|
+
|
|
51
|
+
```json
|
|
52
|
+
{
|
|
53
|
+
"scripts": {
|
|
54
|
+
"lint:ste": "ste-lint"
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Usage
|
|
60
|
+
|
|
61
|
+
Start the tool from the root of the repository:
|
|
62
|
+
|
|
63
|
+
```sh
|
|
64
|
+
pnpm lint:ste
|
|
65
|
+
pnpm lint:ste --format json
|
|
66
|
+
pnpm lint:ste --max-warnings 0 README.md "docs/**/*.md"
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
The options:
|
|
70
|
+
|
|
71
|
+
| Option | Function |
|
|
72
|
+
| --- | --- |
|
|
73
|
+
| `[patterns...]` | The glob patterns of the files to examine, relative to the working directory or absolute. Without patterns, the tool uses the `include` patterns of the configuration. The `ignore` patterns of the configuration stay relative to its directory. |
|
|
74
|
+
| `--format text` | The default output: one group of findings for each file, a summary and the count of findings for each rule. |
|
|
75
|
+
| `--format json` | The findings and the summary as JSON. |
|
|
76
|
+
| `--max-warnings <n>` | Exit with code 1 when there are more than `n` warnings. |
|
|
77
|
+
| `--config <path>` | Use this configuration file. |
|
|
78
|
+
| `--help` | Show the help. |
|
|
79
|
+
|
|
80
|
+
The exit code is 0 when there are no errors, and not more warnings than the maximum. The exit code is 1 when there are errors or too many warnings. The exit code is 2 for an incorrect command line or configuration, or when no file matches the patterns. It is also 2 when the tool cannot read a file or a directory.
|
|
81
|
+
|
|
82
|
+
The package also has the bin `ste-lint` (`dist/cli.js`) and a programmatic API. The `Linter` class examines text. The `runCli` function does the same work as the command line.
|
|
83
|
+
|
|
84
|
+
## Configuration
|
|
85
|
+
|
|
86
|
+
The tool reads `ste.config.json` in the working directory or in a parent directory. The patterns in the file are relative to the directory of the file. All properties are optional.
|
|
87
|
+
|
|
88
|
+
```json
|
|
89
|
+
{
|
|
90
|
+
"include": ["README.md", "docs/**/*.{md,mdx}", "packages/*/src/**/*.{ts,tsx}"],
|
|
91
|
+
"ignore": ["**/node_modules/**", "**/dist/**", "**/*.test.ts"],
|
|
92
|
+
"technicalNouns": ["monitor", "heartbeat", "main thread"],
|
|
93
|
+
"technicalVerbs": ["install", "flush"],
|
|
94
|
+
"properNouns": ["OpenTelemetry", "Web Worker"],
|
|
95
|
+
"allowedWords": [],
|
|
96
|
+
"rules": { "noun-cluster": "off", "first-person": "error" },
|
|
97
|
+
"wordList": [
|
|
98
|
+
{ "id": "via", "severity": "warning" },
|
|
99
|
+
{ "match": ["blazingly fast"], "suggest": "\"fast\"" },
|
|
100
|
+
{ "match": ["simply"], "severity": "off" }
|
|
101
|
+
],
|
|
102
|
+
"limits": { "instructionWords": 20, "descriptionWords": 25, "paragraphSentences": 6, "nounClusterNouns": 3 },
|
|
103
|
+
"dictionaryPath": null
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
| Property | Function |
|
|
108
|
+
| --- | --- |
|
|
109
|
+
| `include`, `ignore` | Glob patterns. The syntax has `*`, `**`, `?`, `{a,b}` and `[abc]`. A file name in `include` without glob characters is always examined. |
|
|
110
|
+
| `technicalNouns` | The nouns of the project glossary. A term can have more than one word. The noun-cluster rule counts a multi-word term as one noun. |
|
|
111
|
+
| `technicalVerbs` | The verbs of the project glossary, in the base form. The tool accepts all forms of each verb. |
|
|
112
|
+
| `properNouns` | Names of products, organizations and standards. A name with more than one word counts as one word. |
|
|
113
|
+
| `allowedWords` | Other words that the `ing-verb` rule and the `unknown-word` rule accept. |
|
|
114
|
+
| `rules` | The severity of each rule: `error`, `warning` or `off`. The setting of `word-list` replaces the severity of all its entries. |
|
|
115
|
+
| `wordList` | Entries that change the project word list. Refer to the next section. |
|
|
116
|
+
| `limits` | The numeric limits of the rules. |
|
|
117
|
+
| `dictionaryPath` | The path of a local dictionary file. Refer to the dictionary section. |
|
|
118
|
+
|
|
119
|
+
The file `ste.config.schema.json` in this package is a JSON schema for the configuration. To use it, set `"$schema"` in `ste.config.json` to `./node_modules/@mark1russell7/ste-lint/ste.config.schema.json`.
|
|
120
|
+
|
|
121
|
+
## The project word list
|
|
122
|
+
|
|
123
|
+
The word list is the style guide of the project. It has common plain-language substitutions, for example "use" for `utilize`, "start" for `initiate` and "before" for `prior to`. The list is in `src/word-list.ts`, and it is not a copy of the ASD-STE100 dictionary.
|
|
124
|
+
|
|
125
|
+
Each entry has these properties:
|
|
126
|
+
|
|
127
|
+
- `match`: the words or phrases to find. The match ignores case. The longest phrase wins.
|
|
128
|
+
- `suggest`: the words to write instead, as the message shows them. Without `suggest`, the message tells the reader to remove the word.
|
|
129
|
+
- `note`: more help for the message.
|
|
130
|
+
- `severity`: `error`, `warning` or `off`.
|
|
131
|
+
- `verbOnly`: true for a word that can also be a noun, for example `run` and `call`. Then the rule finds the word only where the words near it show a verb.
|
|
132
|
+
|
|
133
|
+
A configuration entry with the `id` of a default entry changes that entry. The ID of a default entry is its first word, for example `utilize` or `via`. A new entry gets the first word of `match` as its ID. An entry with the severity `off` removes the entry with that ID, and it removes its `match` words from all entries. A word of the glossary (`technicalNouns`, `technicalVerbs`, `properNouns` or `allowedWords`) does not get a word list finding.
|
|
134
|
+
|
|
135
|
+
## The local dictionary
|
|
136
|
+
|
|
137
|
+
The ASD-STE100 dictionary is copyrighted. This package does not contain it, and the repository must not contain it. To use the `unknown-word` rule, make a local file from your own copy of the standard. Keep the file outside the repository, or in the folder `.ste/`, which git ignores.
|
|
138
|
+
|
|
139
|
+
Give the path of the file in one of these two ways. The environment variable has priority.
|
|
140
|
+
|
|
141
|
+
- Set the environment variable `STE_DICTIONARY`. A relative path starts at the working directory.
|
|
142
|
+
- Set `dictionaryPath` in `ste.config.json`. A relative path starts at the directory of the configuration file.
|
|
143
|
+
|
|
144
|
+
A path can start with `~/` for the home directory. If the file does not exist, the tool writes a message and continues without the `unknown-word` rule.
|
|
145
|
+
|
|
146
|
+
The file contains JSON. The short form is an array of approved words, with all their forms:
|
|
147
|
+
|
|
148
|
+
```json
|
|
149
|
+
["a", "about", "make", "makes", "made", "valve", "valves"]
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
The full form has entries:
|
|
153
|
+
|
|
154
|
+
```json
|
|
155
|
+
{
|
|
156
|
+
"format": "ste-lint-dictionary",
|
|
157
|
+
"version": 1,
|
|
158
|
+
"entries": [
|
|
159
|
+
{ "word": "make", "pos": "verb", "forms": ["makes", "made"] },
|
|
160
|
+
{ "word": "valve", "pos": "noun" },
|
|
161
|
+
{ "word": "utilize", "pos": "verb", "approved": false, "alternatives": ["use"] }
|
|
162
|
+
]
|
|
163
|
+
}
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
- `word` is necessary. A phrase approves each of its words.
|
|
167
|
+
- `pos` is the part of speech. A noun also permits its regular plural. Each verb form must be in `forms`.
|
|
168
|
+
- `approved` is `false` for a word that is not approved. The message then gives the `alternatives`.
|
|
169
|
+
- The nouns of the dictionary help the noun-cluster rule. The verbs of the dictionary help the instruction heuristic and the missing-subject heuristic.
|
|
170
|
+
|
|
171
|
+
## Suppression comments
|
|
172
|
+
|
|
173
|
+
A comment can stop the findings for some text. Give the rule IDs, or no IDs for all rules. Text after ` -- ` is a reason, and the tool ignores it.
|
|
174
|
+
|
|
175
|
+
- In Markdown, write `<!-- ste-disable-next modal-verb -- quoted text -->`. This comment stops the findings in the next block: a paragraph, a heading, a list item or a table row.
|
|
176
|
+
- `<!-- ste-disable -->` and `<!-- ste-enable -->` stop the findings in the text between them. In MDX, write `{/* ste-disable */}`.
|
|
177
|
+
- In TypeScript, write `// ste-disable-next` on the line before a doc comment. `// ste-disable` and `// ste-enable` make a range.
|
|
178
|
+
|
|
179
|
+
## How the heuristics operate
|
|
180
|
+
|
|
181
|
+
The tool has no part-of-speech tagger. Each heuristic looks at the words near a word. When a heuristic is not sure, it does not report a finding.
|
|
182
|
+
|
|
183
|
+
- **Instructions.** A sentence is an instruction when its first word is the base form of a known verb. "Do not", "Never" and "Make sure" also start an instruction. The tool first skips adverbs at the start, for example "then" and "please". It also skips a condition clause up to its comma ("If the tests fail, ..."). The next words must not show a noun subject ("Test runs take 5 s").
|
|
184
|
+
|
|
185
|
+
The known verbs are a built-in list, the technical verbs and the verbs of the dictionary.
|
|
186
|
+
- **Passive voice.** A passive is a form of "be" or "get" and a past participle. In an instruction or in an ordered list, the rule reports each passive. In a condition ("if the file is deleted", "make sure that the server is started"), the participle shows a state, and the rule ignores it.
|
|
187
|
+
- **Missing subject.** The rule examines the summary and the `@remarks` text of doc comments. It finds a sentence that starts with one of these words:
|
|
188
|
+
- A verb that ends in `-s`, for example "Returns" or "Creates"
|
|
189
|
+
- An auxiliary verb, for example "Can" in "Can be null."
|
|
190
|
+
- A participle, for example "Called" in "Called when ...".
|
|
191
|
+
|
|
192
|
+
A plural noun at the start ("Samples at this value wait ...") is not a verb.
|
|
193
|
+
- **Noun clusters.** The rule counts only known nouns: glossary terms, dictionary nouns, a built-in list of common software nouns, abbreviations and code. A word that is frequently a verb does not count.
|
|
194
|
+
- **`-ing` verbs.** The rule finds an `-ing` word in these positions:
|
|
195
|
+
- After a form of "be" ("is running")
|
|
196
|
+
- After a preposition, with an object ("by closing the tab")
|
|
197
|
+
- At the start of a clause, with an object
|
|
198
|
+
- After a noun, with an object.
|
|
199
|
+
|
|
200
|
+
A noun ("the timing") or an adjective ("existing code") is not a verb.
|
|
201
|
+
|
|
202
|
+
## Known limits
|
|
203
|
+
|
|
204
|
+
- The tool cannot know the meaning of a word. It does not find most errors of STE Rules 1.3 and 9.2, for example "release" for a new version, or "listen" for a server port. Only these words have context tests: "about" with a number, "see" for a reference, and some verbs of the word list.
|
|
205
|
+
- The heuristics miss some problems and report some false problems. For example, the noun-cluster rule does not count a word that is not on its lists. The `-ing` rule cannot always tell a gerund from a noun.
|
|
206
|
+
- A sentence can have a capital letter after an abbreviation or an initial. Then the sentence division can be incorrect.
|
|
207
|
+
- The Markdown parser knows only the structure that the rules need. It is not a full CommonMark parser.
|
|
208
|
+
- The tool examines only the rules in the table. It does not examine all 53 rules of the standard.
|
|
209
|
+
|
|
210
|
+
## Development
|
|
211
|
+
|
|
212
|
+
```sh
|
|
213
|
+
pnpm install
|
|
214
|
+
pnpm typecheck
|
|
215
|
+
pnpm test
|
|
216
|
+
pnpm build # dist/
|
|
217
|
+
pnpm lint:ste # this README and the doc comments of src/
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
After a change to `src/`, start `pnpm build` and commit `dist/` too. CI fails when `dist/` does not agree with `src/`.
|
|
221
|
+
|
|
222
|
+
The package started as `@lag/ste-lint` in the [lag](https://github.com/mark1russell7/lag) repository. Its history came with it.
|
|
223
|
+
|
|
224
|
+
## Disclosure
|
|
225
|
+
|
|
226
|
+
An AI model (Claude, from Anthropic) wrote most of the text and the code of this repository, under the direction of the author. The tests and the STE linter examine them. The STEMG of ASD-STE100 asks for this disclosure in its white paper on STE and artificial intelligence (June 2026).
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"fileNames":["../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2023.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2023.array.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2023.collection.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2023.intl.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.collection.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.object.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.promise.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.regexp.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.string.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.collection.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.float16.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.intl.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.iterator.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.promise.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.regexp.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.array.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.collection.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.date.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.decorators.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.disposable.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.error.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.intl.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.temporal.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.typedarrays.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../src/types.ts","../src/word-list.ts","../src/config.ts","../src/dictionary.ts","../src/files.ts","../src/format.ts","../src/source/lines.ts","../src/source/blocks.ts","../src/source/inline.ts","../src/text/words.ts","../src/text/tokens.ts","../src/text/grammar.ts","../src/text/phrases.ts","../src/lexicon.ts","../src/text/sentences.ts","../src/units.ts","../src/rules/word-list-matcher.ts","../src/rules/rule.ts","../src/rules/about-quantity.ts","../src/rules/ing-verb.ts","../src/rules/latin-abbreviation.ts","../src/rules/missing-subject.ts","../src/rules/modal-verb.ts","../src/rules/noun-cluster.ts","../src/rules/paragraph-length.ts","../src/rules/passive-instruction.ts","../src/rules/pronouns.ts","../src/rules/semicolon.ts","../src/rules/sentence-length.ts","../src/rules/unknown-word.ts","../src/rules/word-list.ts","../src/rules/index.ts","../src/source/suppressions.ts","../src/source/markdown.ts","../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/typescript.d.ts","../src/source/tsdoc.ts","../src/source/jsx.ts","../src/lint.ts","../src/run-cli.ts","../src/cli.ts","../src/index.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/globals.typedarray.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/buffer.buffer.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/globals.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/web-globals/abortcontroller.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/web-globals/blob.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/web-globals/console.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/web-globals/crypto.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/web-globals/domexception.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/web-globals/encoding.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/web-globals/events.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/utility.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/header.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/readable.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/fetch.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/formdata.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/connector.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/client-stats.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/client.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/errors.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/dispatcher.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/global-dispatcher.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/global-origin.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/pool-stats.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/pool.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/handlers.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/balanced-pool.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/round-robin-pool.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/h2c-client.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/agent.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/dispatcher1-wrapper.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/mock-interceptor.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/mock-call-history.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/mock-agent.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/mock-client.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/mock-pool.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/snapshot-agent.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/mock-errors.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/proxy-agent.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/socks5-proxy-agent.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/retry-handler.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/retry-agent.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/api.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/cache-interceptor.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/interceptors.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/util.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/cookies.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/patch.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/websocket.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/eventsource.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/diagnostics-channel.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/content-type.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/cache.d.ts","../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/index.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/web-globals/fetch.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/web-globals/importmeta.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/web-globals/messaging.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/web-globals/navigator.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/web-globals/performance.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/web-globals/storage.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/web-globals/streams.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/web-globals/timers.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/web-globals/url.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/assert.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/assert/strict.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/async_hooks.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/buffer.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/child_process.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/cluster.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/console.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/constants.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/crypto.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/dgram.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/dns.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/dns/promises.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/domain.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/events.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/ffi.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/fs.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/fs/promises.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/http.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/http2.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/https.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/inspector.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/inspector.generated.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/inspector/promises.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/module.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/net.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/os.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/path.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/path/posix.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/path/win32.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/perf_hooks.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/process.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/punycode.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/querystring.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/quic.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/readline.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/readline/promises.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/repl.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/sea.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/sqlite.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/stream.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/stream/consumers.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/stream/iter.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/stream/promises.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/stream/web.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/string_decoder.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/test.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/test/reporters.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/timers.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/timers/promises.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/tls.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/trace_events.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/tty.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/url.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/util.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/util/types.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/v8.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/vfs.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/vm.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/wasi.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/worker_threads.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/zlib.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/zlib/iter.d.ts","../node_modules/.pnpm/@types+node@26.6.4/node_modules/@types/node/index.d.ts"],"fileIdsList":[[130,192,193,195,203,208,211,213,214,215,227],[130,194,195,203,208,211,213,214,215,227],[195,203,208,211,213,214,215,227],[130,195,203,208,211,213,214,215,227,236],[130,195,196,201,203,206,208,211,213,214,215,217,227,232,245],[130,195,196,197,203,206,208,211,213,214,215,227],[130,195,198,203,208,211,213,214,215,227,246],[130,195,199,200,203,208,211,213,214,215,218,227],[130,195,200,203,208,211,213,214,215,227,232,242],[130,195,201,203,206,208,211,213,214,215,217,227],[130,194,195,202,203,208,211,213,214,215,227],[130,195,203,204,208,211,213,214,215,227],[130,195,203,205,206,208,211,213,214,215,227],[130,194,195,203,206,208,211,213,214,215,227],[130,195,203,208,211,213,214,215,227],[130,195,203,206,208,209,211,213,214,215,227,232,245],[130,195,203,206,208,209,211,213,214,215,227,234,236],[130,182,195,203,206,208,210,211,213,214,215,217,227,232,245],[130,195,203,206,208,210,211,213,214,215,217,227,232,242,245],[130,195,203,208,210,211,212,213,214,215,227,232,242,245],[129,130,131,132,133,134,135,136,137,138,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254],[130,195,203,206,208,211,213,214,215,227],[130,195,203,208,211,213,215,227],[130,195,203,208,211,213,214,215,216,227,245],[130,195,203,206,208,211,213,214,215,217,227,232],[130,195,203,208,211,213,214,215,218,227],[130,195,203,208,211,213,214,215,219,227],[130,195,203,206,208,211,213,214,215,222,227],[130,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253],[130,195,203,208,211,213,214,215,224,227],[130,195,203,208,211,213,214,215,225,227],[130,195,200,203,208,209,211,213,214,215,217,227,234,242],[130,195,203,206,208,211,213,214,215,227,228],[130,195,203,208,211,213,214,215,227,229,246,250],[130,195,203,206,208,211,213,214,215,227,232,234,235,236],[130,195,203,208,211,213,214,215,227,233,236],[130,195,203,206,208,211,213,214,215,227,232,234],[130,195,203,206,208,211,213,214,215,227,232,235,236],[130,195,203,208,211,213,214,215,227,236,246],[130,195,203,208,211,213,214,215,227,237],[130,192,195,203,208,211,213,214,215,227,232,239,245],[130,195,203,208,211,213,214,215,227,232,238],[130,195,203,206,208,211,213,214,215,227,240,241],[130,195,203,208,211,213,214,215,227,240,241],[130,195,200,203,208,211,213,214,215,217,227,232,242],[130,195,203,208,211,213,214,215,227,243],[130,195,203,208,211,213,214,215,217,227,244],[130,195,203,208,210,211,213,214,215,225,227,245],[130,195,203,208,211,213,214,215,227,246,247],[130,195,200,203,208,211,213,214,215,227,247],[130,195,203,208,211,213,214,215,227,232,248],[130,195,203,208,209,211,213,214,215,227],[130,195,203,208,211,213,214,215,216,227,250],[130,195,203,208,211,213,214,215,227,251],[130,195,198,203,208,211,213,214,215,227],[130,195,200,203,208,211,213,214,215,227],[130,195,203,208,211,213,214,215,227,246],[130,182,195,203,208,211,213,214,215,227],[130,195,203,208,211,213,214,215,227,245],[130,195,203,208,211,213,214,215,227,252],[130,195,203,208,211,213,214,215,222,227],[130,195,203,208,211,213,214,215,227,241],[130,182,195,203,206,208,209,211,213,214,215,217,222,227,232,236,245,248,250,252],[130,195,203,208,211,213,214,215,227,232,253],[130,195,203,208,211,213,214,215,227,234,254],[130,145,148,151,152,195,203,208,211,213,214,215,227,245],[130,148,195,203,208,211,213,214,215,227,232,245],[130,148,152,195,203,208,211,213,214,215,227,245],[130,195,203,208,211,213,214,215,227,232],[130,142,195,203,208,211,213,214,215,227],[130,146,195,203,208,211,213,214,215,227],[130,144,145,148,195,203,208,211,213,214,215,227,245],[130,195,203,208,211,213,214,215,217,227,242],[130,195,203,208,211,213,214,215,227,255],[130,142,195,203,208,211,213,214,215,227,255],[130,144,148,195,203,208,211,213,214,215,217,227,245],[130,139,140,141,143,147,195,203,206,208,211,213,214,215,227,232,245],[130,148,195,203,208,211,213,214,215,227],[130,148,157,166,195,203,208,211,213,214,215,227],[130,140,146,195,203,208,211,213,214,215,227],[130,148,176,177,195,203,208,211,213,214,215,227],[130,140,143,148,195,203,208,211,213,214,215,227,236,245,255],[130,144,148,195,203,208,211,213,214,215,227,245],[130,139,195,203,208,211,213,214,215,227],[130,142,143,144,146,147,148,149,150,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,177,178,179,180,181,195,203,208,211,213,214,215,227],[130,148,169,172,195,203,208,211,213,214,215,227],[130,148,157,159,160,195,203,208,211,213,214,215,227],[130,146,148,159,161,195,203,208,211,213,214,215,227],[130,147,195,203,208,211,213,214,215,227],[130,140,142,148,195,203,208,211,213,214,215,227],[130,148,152,159,161,195,203,208,211,213,214,215,227],[130,152,195,203,208,211,213,214,215,227],[130,146,148,151,195,203,208,211,213,214,215,227,245],[130,140,144,148,157,195,203,208,211,213,214,215,227],[130,148,169,195,203,208,211,213,214,215,227],[130,161,195,203,208,211,213,214,215,227],[130,140,144,148,152,195,203,208,211,213,214,215,227],[130,142,148,176,195,203,208,211,213,214,215,227,236,252,255],[126,130,195,203,208,211,213,214,215,227],[88,89,130,195,203,208,211,213,214,215,218,219,227],[88,130,195,203,208,211,213,214,215,227],[88,89,90,91,92,93,101,119,125,126,130,195,203,208,211,213,214,215,227],[90,91,97,99,100,130,195,203,208,211,213,214,215,227],[88,90,94,101,103,104,119,120,121,123,124,130,195,203,208,211,213,214,215,227],[97,98,105,130,195,203,208,211,213,214,215,227],[88,105,106,107,108,109,110,111,112,113,114,115,116,117,118,130,195,203,208,211,213,214,215,227],[97,98,99,100,105,130,195,203,208,211,213,214,215,227],[98,105,130,195,203,208,211,213,214,215,227],[97,98,99,101,105,130,195,203,208,211,213,214,215,227],[97,98,99,105,130,195,203,208,211,213,214,215,227],[98,101,105,130,195,203,208,211,213,214,215,227],[105,130,195,203,208,211,213,214,215,227],[99,105,130,195,203,208,211,213,214,215,227],[88,90,98,101,103,104,130,195,203,208,211,213,214,215,227],[102,105,130,195,203,208,211,213,214,215,227],[98,99,101,105,107,130,195,203,208,211,213,214,215,227],[89,98,99,100,130,195,203,208,211,213,214,215,227],[101,105,130,195,203,208,211,213,214,215,227],[88,90,91,92,93,101,125,130,195,203,208,211,213,214,215,219,227],[94,130,195,203,208,211,213,214,215,227],[94,95,130,195,203,208,211,213,214,215,227],[94,95,103,121,122,130,195,203,208,211,213,214,215,227],[94,95,103,120,130,195,203,208,211,213,214,215,227],[95,130,195,203,208,211,213,214,215,227],[94,95,103,120,121,122,130,195,203,208,211,213,214,215,227],[97,98,130,195,203,208,211,213,214,215,227],[98,130,195,203,208,211,213,214,215,227],[97,98,100,130,195,203,208,211,213,214,215,227],[96,97,130,195,203,208,211,213,214,215,227],[95,96,98,99,101,102,130,195,203,208,211,213,214,215,227]],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":1},{"version":"1e9332c23e9a907175e0ffc6a49e236f97b48838cc8aec9ce7e4cec21e544b65","impliedFormat":1},{"version":"3753fbc1113dc511214802a2342280a8b284ab9094f6420e7aa171e868679f91","impliedFormat":1},{"version":"999ca32883495a866aa5737fe1babc764a469e4cde6ee6b136a4b9ae68853e4b","impliedFormat":1},{"version":"17f13ecb98cbc39243f2eee1f16d45cd8ec4706b03ee314f1915f1a8b42f6984","impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":1},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":1},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":1},{"version":"0bd714129fca875f7d4c477a1a392200b0bcd13fb2e80928cd334b63830ea047","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2c9037ae6cd2c52d80ceef0b3c5ffdb488627d71529cf4f63776daf11161c9a","affectsGlobalScope":true,"impliedFormat":1},{"version":"135d5cf4d345f59f1a9caadfafcd858d3d9cc68290db616cc85797224448cccc","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc238c3f81c2984751932b6aab223cd5b830e0ac6cad76389e5e9d2ffc03287d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4a07f9b76d361f572620927e5735b77d6d2101c23cdd94383eb5b706e7b36357","affectsGlobalScope":true,"impliedFormat":1},{"version":"7c4e8dc6ab834cc6baa0227e030606d29e3e8449a9f67cdf5605ea5493c4db29","affectsGlobalScope":true,"impliedFormat":1},{"version":"de7ba0fd02e06cd9a5bd4ab441ed0e122735786e67dde1e849cced1cd8b46b78","affectsGlobalScope":true,"impliedFormat":1},{"version":"6148e4e88d720a06855071c3db02069434142a8332cf9c182cda551adedf3156","affectsGlobalScope":true,"impliedFormat":1},{"version":"d63dba625b108316a40c95a4425f8d4294e0deeccfd6c7e59d819efa19e23409","affectsGlobalScope":true,"impliedFormat":1},{"version":"0568d6befee03dd435bed4fc25c4e46865b24bdcb8c563fdc21f580a2c301904","affectsGlobalScope":true,"impliedFormat":1},{"version":"30d62269b05b584741f19a5369852d5d34895aa2ac4fd948956f886d15f9cc0d","affectsGlobalScope":true,"impliedFormat":1},{"version":"f128dae7c44d8f35ee42e0a437000a57c9f06cc04f8b4fb42eebf44954d53dc8","affectsGlobalScope":true,"impliedFormat":1},{"version":"ffbe6d7b295306b2ba88030f65b74c107d8d99bdcf596ea99c62a02f606108b0","affectsGlobalScope":true,"impliedFormat":1},{"version":"996fb27b15277369c68a4ba46ed138b4e9e839a02fb4ec756f7997629242fd9f","affectsGlobalScope":true,"impliedFormat":1},{"version":"79b712591b270d4778c89706ca2cfc56ddb8c3f895840e477388f1710dc5eda9","affectsGlobalScope":true,"impliedFormat":1},{"version":"20884846cef428b992b9bd032e70a4ef88e349263f63aeddf04dda837a7dba26","affectsGlobalScope":true,"impliedFormat":1},{"version":"5fcab789c73a97cd43828ee3cc94a61264cf24d4c44472ce64ced0e0f148bdb2","affectsGlobalScope":true,"impliedFormat":1},{"version":"db59a81f070c1880ad645b2c0275022baa6a0c4f0acdc58d29d349c6efcf0903","affectsGlobalScope":true,"impliedFormat":1},{"version":"673294292640f5722b700e7d814e17aaf7d93f83a48a2c9b38f33cbc940ad8b0","affectsGlobalScope":true,"impliedFormat":1},{"version":"d786b48f934cbca483b3c6d0a798cb43bbb4ada283e76fb22c28e53ae05b9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ecb8e347cb6b2a8927c09b86263663289418df375f5e68e11a0ae683776978f","affectsGlobalScope":true,"impliedFormat":1},{"version":"142efd4ce210576f777dc34df121777be89eda476942d6d6663b03dcb53be3ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"379bc41580c2d774f82e828c70308f24a005b490c25ba34d679d84bcf05c3d9d","affectsGlobalScope":true,"impliedFormat":1},{"version":"ed484fb2aa8a1a23d0277056ec3336e0a0b52f9b8d6a961f338a642faf43235d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ffedae1d1c2d53fdbca1c96d3c7dda544281f7d262f99b6880634f8fd8d9820","affectsGlobalScope":true,"impliedFormat":1},{"version":"83a730b125d477dd264df8ba479afab27a3dae7152b005c214ab94dc7ee44fd3","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},{"version":"6b41ed323bbf2ba2985ca21b601ac5967f6898eb5a5b944a093c6540b2c48f7e","signature":"d5aa26d1bfbe68abc150af58478a4b437186476fa8e1395e303c011a61f7cb00","impliedFormat":99},{"version":"387cd0ce19ab54f630561a85b45a9a7cf5186d3c6b50be034d19c6fd630c739a","signature":"a0a3732cdb45954fbe8689af137e9ba4e7bebfd081b76b742c40c4b9e05bf297","impliedFormat":99},{"version":"4921553bf4b0571debfa4cd0ecb22c43333b910f1dc2a4793a47412af51f2ffb","signature":"435a025c72122359102a59a351077f235b59d805cf26f252b4143f8a12c9c7a0","impliedFormat":99},{"version":"05706cbc965f3ad8f8e76087953a9dd32341e959791a7cd1fdf5978d273efaa9","signature":"64d8afdd7369d5f3d1c55db3d1dfe3bd3c4e655b7fa82c1cf0618efa3acfbea3","impliedFormat":99},{"version":"1317f5e723b4bf4ed17fa08fdafab178b7bc3cc8219ccc2abadc1f171ab66208","signature":"a2216dafde40f9d9efb9f14aac3c6f9deb06fe4e114a4e0bab3a9ab86d4bd4f3","impliedFormat":99},{"version":"63b116cb71ff7ea1e14b74b6185c9d1c0161e987ca7ba5501baac35ae7afe397","signature":"e3a2c13df16a55547c8a41a7d8f821fdaffe65abe3b3e4d6613a81e68966b437","impliedFormat":99},{"version":"93a74af3211a3231750233c1ebdbcbcfb948312f84788416f8424e69023de46f","signature":"9c938d93be267009c277376bd86c65886645d97970b20cd6937d71c930f18f42","impliedFormat":99},{"version":"0751a6f6b0c8855fcff9f5a8ac9b76135e137af4494e94281afc2c58fba7c8a5","signature":"26ea3f5e4d8138d29229f0ebd167db0806e6505a635f07e44a188e840802fe40","impliedFormat":99},{"version":"92361407765c2bfba8082c9e7c13873e6d20dca610848b8f615cde35ea5c5fec","signature":"26757fe56ce8a588b9e5eab8169ad7769c08c8f5c074ffdc3a57edb69db2be74","impliedFormat":99},{"version":"aadd24dbd5c5686664b5e1d1d3550531571ddfae15ab5c0b09bbaaa770110386","signature":"edb77ab0b11c15bf0a0643e418811454f1064ce0b113fc6c61c7bb51fd5d3f7d","impliedFormat":99},{"version":"274fe37e0809bba5242b2649c28700f27097a4fef5fb52f7c6d3cebc36596039","signature":"f53d148fa7f3efc551ef9a4e7666d420807da83089e6e5b2ffe5056c2e99e296","impliedFormat":99},{"version":"a7cf84ad8702ea10d30ccc30d15a17a4fc17de6f02e6082cf067b2ba24c94bbf","signature":"b68978243daa717570c074ed822857267df804c326e04d91384a6878f738fd71","impliedFormat":99},{"version":"c831e8abce96353d80c6d75f0b553c21389520021d6b8b43be6b4055691af6e5","signature":"d886a34c75b80f10c7a28b1cbc4d48d5cc8e315cd2711e774da66f77fe6d2704","impliedFormat":99},{"version":"63875fbba27309f27ef8e5c4326917dc04a464100a325f03256475f1598d0b54","signature":"6709fc0b974f1ee06d253db49160bf71c034b2c35013e3e44afecd43dc87c212","impliedFormat":99},{"version":"8932ff0b620cb729ee66534320bc2e5b1de492364c2eae9b25dad6256722e727","signature":"220af5f3996bc36665d33f031e075703a34c1c8187fa231f15ec5db35c7d3484","impliedFormat":99},{"version":"97f204ae826cdfe3c31f52210af4ca4feb3626ee8428fe971406ea37d4e88719","signature":"3fcc88bd4e4fb54e7d11ff970c860e31400a96686309f27833340eeac178b001","impliedFormat":99},{"version":"62f6ed2c4af00f002067318a2ea89f1030358fdcfe85a27b8bffb0ff6d9fcc8d","signature":"bdc07286d23d5bff525b17e41dc07a46db0b728f5f156028c262abdbfd8b6255","impliedFormat":99},{"version":"56866e16e1ac620580fed8e1e6064cfb6a632cd193f2aedeb96c2e8c9768b01a","signature":"5f08b397c16db3ee9c2387bc180727a33fc4d03fc9cf6694e63bf4892a61e5c1","impliedFormat":99},{"version":"76f36694fa58c846a9436d95de1292a5789bb3a4c23434329e6c08ca84e6e9d9","signature":"386ecb06f2282d447fff7cbea52c5d780891be66b553b599122bac599901273d","impliedFormat":99},{"version":"e6ef012190367e39893278cdfaf95163d8dccb79a3d7483f5dcc2a2a5c59c676","signature":"7d33c6334657b5b9da46f45f184c2e5935170bd67ab866d3fb6fe794c90bfaa1","impliedFormat":99},{"version":"cd3f29930600214ed16b075d96f41c7596d313fee50aab5483f168c1d259867c","signature":"479a601ced979a3da832cca3e9dd4ac28c9f80c567e23fa20aadfb24e01f1ff8","impliedFormat":99},{"version":"e8a6b6021b8a132715ad446e36d0a424e390f7088d2e476cc2dc81d79807e97e","signature":"a74f704b33f58a0d004eb019a5652be473867cb6a18a5f5032ac64d56dbfd085","impliedFormat":99},{"version":"f9920b8e054b7c7a23664eca376c20d1f21afae59ea35736d69cebdc18717dd0","signature":"2a3fc1f00a51d72d997adca45c484368c48b9514f829dac88a6ae3bb12dc44ad","impliedFormat":99},{"version":"ce52ff1e8eb7947d60c28b2fb07dda93cac2cde44ab8d48b47646f271322861a","signature":"b620a48e83073a1fe2390ec81b810ed9aa5a9bfef03ef10267c862b74dbc42f9","impliedFormat":99},{"version":"3b63bf62c963f451cbf5b91d9618828b50f04c3bd708242cfb3725ad866e5a2f","signature":"94e56c5a7282674b03914234103dfc55bd51721beaeaba49b96185f4515b5968","impliedFormat":99},{"version":"cb3c93c5fbe8c051b64ccb6ec36905275919a4e162c498d5a28cb9718f80cc17","signature":"11b1a626afcf5003b8fd81addf60d23e4f0ec0300f7c02e0c8ffbc5b3666ce17","impliedFormat":99},{"version":"10e12b7db85aeee85658e5c08ea57715f771fa211e7b7324cdacefbdd2e84155","signature":"172185758d2b0db8e86e9b13398b8ce5cb6dbbe96ff9329f662170ef466d2f7a","impliedFormat":99},{"version":"37e664777e9043e26497c8e66496a0648b341b6ee6e58a68e104c15a2a69148a","signature":"deb3e3ffba7c0e72abcad3ac971c102591147966da43dd9777b7d53c21429bd3","impliedFormat":99},{"version":"28e20ea296a3dc682ee2ca339526b6f969bde211e15ae358470387d712379427","signature":"e83243ff67da40c965c318f5b70e71991afc7f054d2b723e30bf6ec92123895d","impliedFormat":99},{"version":"6d411f43a5a857c321af2ddbbccbee958bd48918e8a2de4470098127cb583a03","signature":"4a21d678d520e03400999fc0dbce871314a05f3a0d399fabd4ab57d56750ff43","impliedFormat":99},{"version":"5d5e5a50a4f70416cc5b1ba107478c46bad32297ee6d59b618bb7a08c499c43c","signature":"338b25ad3228a9c98b8724868bf8eeef2efd4698c905a091041240172827a782","impliedFormat":99},{"version":"0246a290825db3d2a7365ebf2134c82d0ef98d7eaa80499c9d115d3d14919a70","signature":"5167352aa59cf7da3a0adaeeec8e6de2759edc13c9c3ab07f1b7eb42aacf28a3","impliedFormat":99},{"version":"c7d3031369975cad4be202c5a50f49b052cfcfaf5c72de01aea0b50a7e9ed984","signature":"d0a32f6d65164779b5e341a2e85e9e827fe3c9a9277b05003bd31ba18abe24bc","impliedFormat":99},{"version":"24c3434df1d7bd2c635faade4a1e19d77d164aae87514dc480235937282a86c1","signature":"d2a65161ef272d0e8a8040c5c4f27fa2b9acfee32fb6405f5ffb26b3516a8685","impliedFormat":99},{"version":"c967e03c8dbb4770f7e2f0b71b5d13593de679a41cc2b60266c4b69f1342a263","impliedFormat":1},{"version":"578c34ed2074c33473f3fee4d88487c8238c7bf3639a1e02020a4e1ba6c61f92","signature":"689d7a5adf11f343fbc3caad8944bd0284b57d2b2ae46cbee964977b2b3ecb1f","impliedFormat":99},{"version":"d43b5d3bbac7c62a21f249b6b7a5ed85440d3c621f9b8159d4140ee8c725b751","signature":"d0b389ee7717b2d9599347d4522fe567ea78d414ed6b68a84be3a88b7498bb31","impliedFormat":99},{"version":"d6886c0376e2fcd0e6544971fdb4e945c835613df0e517bbf9ea051fa44000a1","signature":"e388b484bbe59ffa6bddccee069cda3fc4ed2d9489e6308318c1f97f3b991147","impliedFormat":99},{"version":"cd229c89c14d71648b5d5de5fd1ceea59b5b52e3d05e30b7a90f731406a8e6a5","signature":"82bcb740b42a3c0006b6aaa9334d8db8755ec1042dc390c31dc8c8df8ca6e518","impliedFormat":99},{"version":"621738dbb58c0a5d6934f6ab48d28c635add0300fbca775a1d010db7dd125ced","signature":"43e818adf60173644896298637f47b01d5819b17eda46eaa32d0c7d64724d012","impliedFormat":99},{"version":"8d471bcbf2a9f84682bce16be97a6362e60a90dcb31c62e3a85dbe3a92bcffd7","signature":"a003f7eca0334d9f77a2b5e7e2e2c11c5c91b2f2ad4cde3c760428d8f4974482","impliedFormat":99},{"version":"0ccdaa19852d25ecd84eec365c3bfa16e7859cadecf6e9ca6d0dbbbee439743f","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9b68a1c3f8f45b4c199fa5b3ac09497230cb8f2f0cdcfebe5817b30b836a64a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f53a7652392cf26ebbe4e29fd0672aa87c93bd6d0241289c13fab87b9ac35c8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5e01375c9e124a83b52ee4b3244ed1a4d214a6cfb54ac73e164a823a4a7860a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f90ae2bbce1505e67f2f6502392e318f5714bae82d2d969185c4a6cecc8af2fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b58e207b93a8f1c88bbf2a95ddc686ac83962b13830fe8ad3f404ffc7051fb4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1fefabcb2b06736a66d2904074d56268753654805e829989a46a0161cd8412c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"b00a630557d1622ad312633bdbfbdb9c6b7220d948dca9f899db30679f160074","affectsGlobalScope":true,"impliedFormat":1},{"version":"c18a99f01eb788d849ad032b31cafd49de0b19e083fe775370834c5675d7df8e","affectsGlobalScope":true,"impliedFormat":1},{"version":"5247874c2a23b9a62d178ae84f2db6a1d54e6c9a2e7e057e178cc5eea13757fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"88809d6c1b9c78d04a133646a6feb926def05a8774c308c7c93bc32ee163d271","impliedFormat":1},{"version":"156a859e21ef3244d13afeeba4e49760a6afa035c149dda52f0c45ea8903b338","impliedFormat":1},{"version":"21d7fab00c101ddf754b392e11534e6b20c6bda269b2ccbcdf3453cbe21d8a39","impliedFormat":1},{"version":"615754924717c0b1e293e083b83503c0a872717ad5aa60ed7f1a699eb1b4ea5c","impliedFormat":1},{"version":"d3c85d4dde1a4918009e37426ee4a940cbbd4100e2e74d03e2de0d50a77bb488","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"60e3ba4b2d24548107060e5d13bffafbbbaa53d001c07bbe40386deda569b5e8","impliedFormat":1},{"version":"a712be2c8cbe0154bd17d1d7bff503d7c04331e0745eb9eea3d303e0e5d9401e","impliedFormat":1},{"version":"25bd6ae1b97ea991433337310fc406cc7c9f271b67b7c79dd24eee384759f3d4","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"38004e6801340cb890afb8cb5a9fc8972297e7f88ab94026e4b0b3c61fb32f8a","impliedFormat":1},{"version":"4ca7fb8f6018ea836b1ad24f67d5e7c2cf7410af7462e0ccc90b012944f5d7ae","impliedFormat":1},{"version":"4d327f7d72ad0918275cea3eee49a6a8dc8114ae1d5b7f3f5d0774de75f7439a","impliedFormat":1},{"version":"149f9a9e7f04e67afa0e2a49fc0ff421035c01d6b793cfcae7d2e9f6819431e2","impliedFormat":1},{"version":"e8a9dfa4c75ef6d25df8b40eaa9c31e0a69452aaf2ced4a3f4215dbdbaa876f4","impliedFormat":1},{"version":"a70af845a2eb9dd6e2723e319e14ea7fb28b129ec1361c21509b49305448c323","impliedFormat":1},{"version":"b53dc572d4f187904207ae1166652de47aab8eeb00c254d009cb226863076b56","impliedFormat":1},{"version":"57354d2f022ed64ede57b2e052306dd076a138b551abc7d30ef5e6718ce2f76a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"f501234c5aeeeb5d7659412335227466aaacf30b952372d60afeb21c02c96348","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"358f74dc35927dc88ea86dd201a2b98e701c281615e6b30a4c153eb0bb90ef71","impliedFormat":1},{"version":"8b91ff5bb912be3ea213cbcf0075aace1f5d4ff249a0d227ed673868cb7bfabc","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"8aee8b6d4f9f62cf3776cda1305fb18763e2aade7e13cea5bbe699112df85214","impliedFormat":1},{"version":"98498b101803bb3dde9f76a56e65c14b75db1cc8bec5f4db72be541570f74fc5","impliedFormat":1},{"version":"706abfbafe0ed5f685357375e89bbf48879549ea1772185d77d15f587c5c9400","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"013ff793053d33a15be4614efdd6c50247bbf0b26d6bc58ba338622a7441b543","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"436d7b4543b340b0f3eef4310d524242e41369b9652aa9c70428767c4dcac455","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"12950411eeab8563b349cb7959543d92d8d02c289ed893d78499a19becb5a8cc","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"e99963ae1e3a48ca7a7958c02f3e88bb963eb7978c28b68ae6b8c9f03309d83c","impliedFormat":1},{"version":"c3f5289820990ab66b70c7fb5b63cb674001009ff84b13de40619619a9c8175f","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3275d55fac10b799c9546804126239baf020d220136163f763b55a74e50e750","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa68a0a3b7cb32c00e39ee3cd31f8f15b80cac97dce51b6ee7fc14a1e8deb30b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c36e755bced82df7fb6ce8169265d0a7bb046ab4e2cb6d0da0cb72b22033e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"279d0cc1a72879918854265c3405369aa2d4d23509b8694ea102995b298cc5e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"90e85f9bc549dfe2b5749b45fe734144e96cd5d04b38eae244028794e142a77e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0a5deeb610b2a50a6350bd23df6490036a1773a8a71d70f2f9549ab009e67ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"594ae90cacd813fa392ff80d2e0a8eff4e41f4a136329a940e321399dd8895b4","impliedFormat":1},{"version":"d1f333ade8ff35a409b4984e1f11956fe11c61855b0c7e9b59f0313e48b40c4a","impliedFormat":1},{"version":"0224aa4b3464895d69c413a640a19ac2166778a74eb5eb3b36b021c72d42b274","impliedFormat":1},{"version":"575aa163c4c32e5b82e0e99b1f9f80806e1d78bfa259706e05139251c022277b","affectsGlobalScope":true,"impliedFormat":1},{"version":"7fb21326854faaa31ef02c9d51629fb6acedacb9396e74bf22ff8409441ea9ae","impliedFormat":1},{"version":"2fbf504c4791f9d32cd766cfe6b605bcda63289b925401953a7900db9af85348","impliedFormat":1},{"version":"ed0fb633cae35948d9e144004299a4bdf1ab912667c787b7fbffcd6d8c7b92a2","impliedFormat":1},{"version":"1678b04557dca52feab73cc67610918a7f5e25bfdba3e7fa081acd625d93106d","impliedFormat":1},{"version":"9019e48ace02a7f39315d84261f4a3dd23b7a3b1f6584e694001ac93971791b7","impliedFormat":1},{"version":"2f78692a85ada51c8f0988184d34d28436c1040e8ccf0758ba70d4b32b9776ad","impliedFormat":1},{"version":"97581dc7099ef3d844c83706d53a7ecf895c0e867fbf6b9dc035bb3080f677bd","impliedFormat":1},{"version":"e494b286c8e27c52f8c7f945aa80ff223f2a3cd4f7a2619fa8991f1459e26f07","impliedFormat":1},{"version":"f54f5f9e10bbceba7515dfad0ffc89dffdb8d749d0604594c57a725cf6d79c20","impliedFormat":1},{"version":"41d17e1ad9a002feb11c8cdd2777e5bbc0cdb1e3f595d237e4dded0b6949983b","impliedFormat":1},{"version":"8c7e618c2a91ea7f6b5cca272a295864e92c16413be8fc56a943e8c7d5320011","affectsGlobalScope":true,"impliedFormat":1},{"version":"13f487e411f9657df0e76572e500c1209b8fe95ee3b4cc6e6e7913c15f56207d","impliedFormat":1},{"version":"9d37b8a9678efbcdf38238b59ce8e6f7db70aba1a516f3a4a671a301dbacfb3d","impliedFormat":1},{"version":"a47a792b8cff71443be8dfb199f2b77e102a7bf9d4f90c18059f05d9af2d7413","impliedFormat":1},{"version":"ad50512520720d10294c629cb4e2df23891c3fcbeaca00fbfb9e6bbea65f3dd6","impliedFormat":1},{"version":"189769511b45c93b23ba76069f7701d3b631cfbedc1eb94c7753486c78736f78","impliedFormat":1},{"version":"2c2bdaa1d8ead9f68628d6d9d250e46ee8e81aa4898b4769a36956ae15e060fe","impliedFormat":1},{"version":"ba389fd3d7fba6670e97bc82eb12469dcb371d22f24e63859c1df5a083c823ed","impliedFormat":1},{"version":"5ff4433a2deae4f85ab1377e90a7554ce6b47ae51c69a84ca30a6e22fae85834","impliedFormat":1},{"version":"82b91e4e42e6c41bc7fc1b6c2dc5eba6a2ba98375eb1f210e6ff6bba2d54177e","impliedFormat":1},{"version":"97234c5303866576f913d0ccae7d58d6322d9e803c7bf1228a3fda46ab8087b2","affectsGlobalScope":true,"impliedFormat":1},{"version":"961dec547748827cb6b45f6fdc66273f7bacd9c73103c6779f070f2fd07f23f9","impliedFormat":1},{"version":"73eeb740dacc45adc607a4f59f90fa9dbe2717d93d82f115f45f34e18f8d644a","impliedFormat":1},{"version":"ec501101c2a96133a6c695f934c8f6642149cc728571b29cbb7b770984c1088e","impliedFormat":1},{"version":"b214ebcf76c51b115453f69729ee8aa7b7f8eccdae2a922b568a45c2d7ff52f7","impliedFormat":1},{"version":"429c9cdfa7d126255779efd7e6d9057ced2d69c81859bbab32073bad52e9ba76","impliedFormat":1},{"version":"d251cda16f3f6a3e07f07c9e6e823ef6c583c63f653eb8777dafa749a78298e3","impliedFormat":1},{"version":"361939136b496a38b3e6b7be750bbb6998ef289bb8dd304c673138542ca16137","affectsGlobalScope":true,"impliedFormat":1},{"version":"230763250f20449fa7b3c9273e1967adb0023dc890d4be1553faca658ee65971","impliedFormat":1},{"version":"c3e9078b60cb329d1221f5878e88cecfa3e74460550e605a58fcfb41a66029ff","impliedFormat":1},{"version":"89e2568ebc2ec1e4149384b105e80e8bbf41eb4d711547f1121f4f628028de96","impliedFormat":1},{"version":"441b9bb09013654aa3d050e68b06464d8959b473e85868249d9d18f692acd35b","impliedFormat":1},{"version":"bc18a1991ba681f03e13285fa1d7b99b03b67ee671b7bc936254467177543890","impliedFormat":1},{"version":"55246f15e33ff1e2e9e679b25fa9790a48db55dc63d567fe25fac8b6a0efe911","impliedFormat":1},{"version":"fa94bbf532b7af8f394b95fa310980d6e20bd2d4c871c6a6cb9f70f03750a44b","impliedFormat":1},{"version":"925734f303b7f0cc111d42aeb21781d38a79e6d5ac05b2b1400cd1861a75d27b","impliedFormat":1},{"version":"5b26c4dd672d88336bb929787c9bfb55119e80ba89ec6dc923da1c063892843e","affectsGlobalScope":true,"impliedFormat":1},{"version":"7fa2214bb0d64701bc6f9ce8cde2fd2ff8c571e0b23065fa04a8a5a6beb91511","impliedFormat":1},{"version":"7286e4e5f80c0b1ab16addbdbbc9dd47fbae1c42034189261177b84d745cde3b","impliedFormat":1},{"version":"f12624a4a8d042b68914eac1b0a16571fc1c523173fcdf2517c65d191bd5a86c","impliedFormat":1},{"version":"cd2a656ba1d250c2002190b683e3826bf4362b6919450bc0f9bbf5612ebad837","impliedFormat":1},{"version":"841983e39bd4cbb463be385e92fda11057cab368bf27100a801c492f1d86cbaa","impliedFormat":1},{"version":"3e221ff0522e6ff95aa74a5211126aaf4d7e85ed8c8ff19290d591ad4bef988f","impliedFormat":1},{"version":"7da83f6429c6298ebf2be43d296b56ecfc94c9c28f5471b2f23b87545b914cea","impliedFormat":1},{"version":"e4156ddb25aa0e3b5303d372f26957b36778f0f6bbd4326359269873295e3058","affectsGlobalScope":true,"impliedFormat":1},{"version":"cc1b433a84cae05ddc5672d4823170af78606ad21ecef60dbc4570190cbf1357","impliedFormat":1},{"version":"751048d4aa67e20e5ecd2692340ea0d19bae42a20cc651d6f56d095e411ce3ac","impliedFormat":1},{"version":"7f78cfb2b343838612c192cb251746e3a7c62ac7675726a47e130d9b213f6580","impliedFormat":1},{"version":"aed8f3e5c7e53462565eedf34a9bcb700393cb2c1ab0c768602b929c3ed3145d","impliedFormat":1},{"version":"8e2577e7262051fd3c5bd6ca2b2056d358ff8853565720f92455860824c25188","impliedFormat":1},{"version":"7ec8d7d483f7394f9da611b10d3a0e402f76ff5c991261e6ce43a15f81ca4258","impliedFormat":1},{"version":"bb9dbb4b2ad81e3e71ec5ba4314973718555b9d04ba2a17dfbf875efecb8e2c0","impliedFormat":1},{"version":"9021dc5be8f3a87af5cede29221188a6497e2092b6889e0be212ef6b6b7153e9","impliedFormat":1},{"version":"4a8c8fd951d9fd9e0775f0aae8ed1f8b528204e24a2600bea3a1228ea83de52c","impliedFormat":1},{"version":"5b9cc0c724a8ebc7a873ab8e73c20b2416cef04b9e9d7f95ef1fa0fdcd4e0ec8","impliedFormat":1},{"version":"99ab6d0d660ce4d21efb52288a39fd35bb3f556980ec5463b1ae8f304a3bbc85","impliedFormat":1},{"version":"80a4b7023a2cc9f14d3f2e4635d6615ab3eff4b5b3630f62a8e73992fdd8cdb9","impliedFormat":1},{"version":"7414ec88dbb6d1b4d07a6ffbb3592e56359343ddfd5b0b825721d736b04ab2b6","impliedFormat":1},{"version":"afa1c49f8e559e413d57343339db857d2a8159435cf9cf7d4deb41718fff1b88","impliedFormat":1},{"version":"c46f111af647c4134ae869653130610d62da321f90ebf19e186a3ea4bed79350","impliedFormat":1}],"root":[[88,121],[123,128]],"options":{"allowSyntheticDefaultImports":true,"allowUnreachableCode":false,"allowUnusedLabels":false,"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"exactOptionalPropertyTypes":true,"importHelpers":true,"isolatedDeclarations":true,"module":199,"newLine":1,"noEmitOnError":true,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noImplicitReturns":true,"noPropertyAccessFromIndexSignature":true,"noUncheckedIndexedAccess":true,"noUncheckedSideEffectImports":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","removeComments":false,"rootDir":"../src","skipDefaultLibCheck":false,"skipLibCheck":true,"sourceMap":true,"strict":true,"stripInternal":true,"target":99,"tsBuildInfoFile":"./.tsbuildinfo","verbatimModuleSyntax":true},"referencedMap":[[192,1],[193,1],[194,2],[130,3],[195,4],[196,5],[197,6],[198,7],[199,8],[200,9],[201,10],[202,11],[203,12],[204,12],[205,13],[206,14],[207,15],[208,16],[209,17],[131,15],[129,15],[210,18],[211,19],[212,20],[255,21],[213,22],[214,23],[215,22],[216,24],[217,25],[218,26],[219,27],[220,27],[221,27],[222,28],[223,29],[224,30],[225,31],[226,32],[227,33],[228,33],[229,34],[230,15],[231,15],[232,35],[233,36],[234,37],[235,38],[236,39],[237,40],[238,41],[239,42],[240,43],[241,44],[242,45],[243,46],[244,47],[245,48],[246,49],[247,50],[248,51],[249,52],[250,53],[251,54],[132,22],[133,15],[134,55],[135,56],[136,15],[137,57],[138,15],[183,58],[184,59],[185,60],[186,60],[187,61],[188,15],[189,4],[190,62],[191,59],[252,63],[253,64],[254,65],[86,15],[87,15],[15,15],[14,15],[2,15],[16,15],[17,15],[18,15],[19,15],[20,15],[21,15],[22,15],[23,15],[3,15],[24,15],[25,15],[4,15],[26,15],[30,15],[27,15],[28,15],[29,15],[31,15],[32,15],[33,15],[5,15],[34,15],[35,15],[36,15],[37,15],[6,15],[41,15],[38,15],[39,15],[40,15],[42,15],[7,15],[43,15],[48,15],[49,15],[44,15],[45,15],[46,15],[47,15],[8,15],[53,15],[50,15],[51,15],[52,15],[54,15],[9,15],[55,15],[56,15],[57,15],[59,15],[58,15],[60,15],[61,15],[10,15],[62,15],[63,15],[64,15],[11,15],[65,15],[66,15],[67,15],[68,15],[69,15],[70,15],[12,15],[71,15],[72,15],[73,15],[74,15],[75,15],[1,15],[76,15],[77,15],[13,15],[78,15],[79,15],[80,15],[81,15],[82,15],[83,15],[84,15],[85,15],[122,15],[157,66],[171,67],[154,68],[172,69],[181,70],[145,71],[146,72],[144,73],[180,74],[175,75],[179,76],[148,77],[158,78],[168,79],[147,80],[178,81],[142,82],[143,75],[149,78],[150,15],[156,83],[153,78],[140,84],[182,85],[173,86],[161,87],[160,78],[162,88],[165,89],[159,90],[163,91],[176,74],[151,92],[152,93],[166,94],[141,69],[170,95],[169,78],[155,93],[164,96],[167,97],[174,15],[139,15],[177,98],[127,99],[90,100],[91,15],[92,27],[93,101],[128,102],[101,103],[125,104],[106,105],[119,106],[107,107],[108,108],[109,109],[110,110],[111,111],[112,112],[113,113],[114,108],[105,114],[115,112],[116,115],[117,116],[104,117],[118,118],[126,119],[95,120],[96,121],[124,122],[94,15],[121,123],[120,124],[123,125],[99,126],[100,127],[102,128],[98,129],[97,15],[88,15],[103,130],[89,101]],"latestChangedDtsFile":"./index.d.ts","version":"6.0.3"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { runCli } from "./run-cli.js";
|
|
3
|
+
process.exitCode = runCli(process.argv.slice(2), {
|
|
4
|
+
cwd: process.cwd(),
|
|
5
|
+
env: process.env,
|
|
6
|
+
stdout: (text) => process.stdout.write(text),
|
|
7
|
+
stderr: (text) => process.stderr.write(text),
|
|
8
|
+
});
|
|
9
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IAC7C,GAAG,EAAG,OAAO,CAAC,GAAG,EAAE;IACnB,GAAG,EAAG,OAAO,CAAC,GAAG;IACjB,MAAM,EAAG,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;IAC7C,MAAM,EAAG,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;CAChD,CAAC,CAAC"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The configuration file `ste.config.json`, and the configuration that the
|
|
3
|
+
* linter uses after it reads the file, the environment and the defaults.
|
|
4
|
+
*/
|
|
5
|
+
import { type RuleId, type RuleSetting } from "./types.js";
|
|
6
|
+
import { type WordListEntry } from "./word-list.js";
|
|
7
|
+
export declare const CONFIG_FILE_NAME = "ste.config.json";
|
|
8
|
+
/** The environment variable that gives the path of the local dictionary. It has priority over `dictionaryPath`. */
|
|
9
|
+
export declare const DICTIONARY_ENV = "STE_DICTIONARY";
|
|
10
|
+
/** An entry of `wordList` in the configuration file. */
|
|
11
|
+
export type WordListEntryConfig = {
|
|
12
|
+
/** The ID of a default entry to change. A new entry gets the first word of `match` as its ID. */
|
|
13
|
+
readonly id?: string;
|
|
14
|
+
readonly match?: string | readonly string[];
|
|
15
|
+
readonly suggest?: string | null;
|
|
16
|
+
readonly note?: string | null;
|
|
17
|
+
readonly severity?: RuleSetting;
|
|
18
|
+
readonly verbOnly?: boolean;
|
|
19
|
+
};
|
|
20
|
+
export type LimitsConfig = {
|
|
21
|
+
/** The maximum number of words in an instruction. Default: 20 (STE Rule 5.1). */
|
|
22
|
+
readonly instructionWords?: number;
|
|
23
|
+
/** The maximum number of words in a description. Default: 25 (STE Rule 6.3). */
|
|
24
|
+
readonly descriptionWords?: number;
|
|
25
|
+
/** The maximum number of sentences in a paragraph. Default: 6 (STE Rule 6.6). */
|
|
26
|
+
readonly paragraphSentences?: number;
|
|
27
|
+
/** The maximum number of nouns in a noun cluster. Default: 3 (STE Rule 2.1). */
|
|
28
|
+
readonly nounClusterNouns?: number;
|
|
29
|
+
};
|
|
30
|
+
/** The contents of `ste.config.json`. All properties are optional. */
|
|
31
|
+
export type SteConfigFile = {
|
|
32
|
+
readonly $schema?: string;
|
|
33
|
+
readonly include?: readonly string[];
|
|
34
|
+
readonly ignore?: readonly string[];
|
|
35
|
+
readonly technicalNouns?: readonly string[];
|
|
36
|
+
readonly technicalVerbs?: readonly string[];
|
|
37
|
+
readonly properNouns?: readonly string[];
|
|
38
|
+
readonly allowedWords?: readonly string[];
|
|
39
|
+
readonly rules?: Readonly<Record<string, RuleSetting>>;
|
|
40
|
+
readonly wordList?: readonly WordListEntryConfig[];
|
|
41
|
+
readonly limits?: LimitsConfig;
|
|
42
|
+
readonly dictionaryPath?: string | null;
|
|
43
|
+
};
|
|
44
|
+
export type Limits = Required<LimitsConfig>;
|
|
45
|
+
export type ResolvedConfig = {
|
|
46
|
+
/** The directory that `include` and `ignore` are relative to. */
|
|
47
|
+
readonly root: string;
|
|
48
|
+
/** The configuration file, or null when the linter uses the defaults. */
|
|
49
|
+
readonly configFile: string | null;
|
|
50
|
+
readonly include: readonly string[];
|
|
51
|
+
readonly ignore: readonly string[];
|
|
52
|
+
readonly technicalNouns: readonly string[];
|
|
53
|
+
readonly technicalVerbs: readonly string[];
|
|
54
|
+
readonly properNouns: readonly string[];
|
|
55
|
+
readonly allowedWords: readonly string[];
|
|
56
|
+
/** The rule settings from the configuration. A rule without a setting uses its default severity. */
|
|
57
|
+
readonly rules: Readonly<Partial<Record<RuleId, RuleSetting>>>;
|
|
58
|
+
readonly wordList: readonly WordListEntry[];
|
|
59
|
+
readonly limits: Limits;
|
|
60
|
+
/** The absolute path of the local dictionary, or null. */
|
|
61
|
+
readonly dictionaryPath: string | null;
|
|
62
|
+
/** Where the dictionary path came from. */
|
|
63
|
+
readonly dictionarySource: "env" | "config" | null;
|
|
64
|
+
};
|
|
65
|
+
export declare const DEFAULT_INCLUDE: readonly string[];
|
|
66
|
+
export declare const DEFAULT_IGNORE: readonly string[];
|
|
67
|
+
export declare const DEFAULT_LIMITS: Limits;
|
|
68
|
+
/** An error in the configuration. */
|
|
69
|
+
export declare class ConfigError extends Error {
|
|
70
|
+
readonly name: string;
|
|
71
|
+
}
|
|
72
|
+
/** This function makes sure that `value` is a valid configuration. It throws a `ConfigError` that lists all problems. */
|
|
73
|
+
export declare function validateConfig(value: unknown, source: string): SteConfigFile;
|
|
74
|
+
/**
|
|
75
|
+
* This function merges the default word list and the entries of the
|
|
76
|
+
* configuration. An entry with the ID (or the first `match` word) of a
|
|
77
|
+
* default entry changes that entry. The severity "off" removes the entry
|
|
78
|
+
* with that ID, and it removes the `match` words from all entries.
|
|
79
|
+
*/
|
|
80
|
+
export declare function mergeWordList(defaults: readonly WordListEntry[], overrides: readonly WordListEntryConfig[]): WordListEntry[];
|
|
81
|
+
/** This function expands a leading `~/` to the home directory, and makes the path absolute. */
|
|
82
|
+
export declare function resolvePath(path: string, base: string): string;
|
|
83
|
+
export type ResolveOptions = {
|
|
84
|
+
/** The directory of the configuration file, or the working directory. */
|
|
85
|
+
readonly root: string;
|
|
86
|
+
readonly configFile?: string | null;
|
|
87
|
+
/** The working directory. `STE_DICTIONARY` is relative to it. */
|
|
88
|
+
readonly cwd?: string;
|
|
89
|
+
readonly env?: Readonly<Record<string, string | undefined>>;
|
|
90
|
+
};
|
|
91
|
+
/** This function applies the defaults and the environment to a configuration file. */
|
|
92
|
+
export declare function resolveConfig(file: SteConfigFile, options: ResolveOptions): ResolvedConfig;
|
|
93
|
+
/** The first `ste.config.json` in `cwd` or one of its parent directories, or null. */
|
|
94
|
+
export declare function findConfigFile(cwd: string): string | null;
|
|
95
|
+
export type LoadOptions = {
|
|
96
|
+
readonly cwd: string;
|
|
97
|
+
/** An explicit configuration file. Without it, the linter looks for `ste.config.json`. */
|
|
98
|
+
readonly configPath?: string;
|
|
99
|
+
readonly env?: Readonly<Record<string, string | undefined>>;
|
|
100
|
+
};
|
|
101
|
+
/** This function reads the configuration file, if there is one, and resolves it. */
|
|
102
|
+
export declare function loadConfig(options: LoadOptions): ResolvedConfig;
|
|
103
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAsB,KAAK,MAAM,EAAE,KAAK,WAAW,EAAiB,MAAM,YAAY,CAAC;AAC9F,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEvE,eAAO,MAAM,gBAAgB,oBAAoB,CAAC;AAElD,mHAAmH;AACnH,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAE/C,wDAAwD;AACxD,MAAM,MAAM,mBAAmB,GAAG;IAC9B,iGAAiG;IACjG,QAAQ,CAAC,EAAE,CAAC,EAAG,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAG,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,OAAO,CAAC,EAAG,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAG,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAG,WAAW,CAAC;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAG,OAAO,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACvB,iFAAiF;IACjF,QAAQ,CAAC,gBAAgB,CAAC,EAAG,MAAM,CAAC;IACpC,gFAAgF;IAChF,QAAQ,CAAC,gBAAgB,CAAC,EAAG,MAAM,CAAC;IACpC,iFAAiF;IACjF,QAAQ,CAAC,kBAAkB,CAAC,EAAG,MAAM,CAAC;IACtC,gFAAgF;IAChF,QAAQ,CAAC,gBAAgB,CAAC,EAAG,MAAM,CAAC;CACvC,CAAC;AAEF,sEAAsE;AACtE,MAAM,MAAM,aAAa,GAAG;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAG,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAG,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAG,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,cAAc,CAAC,EAAG,SAAS,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,cAAc,CAAC,EAAG,SAAS,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,WAAW,CAAC,EAAG,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,YAAY,CAAC,EAAG,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,KAAK,CAAC,EAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IACxD,QAAQ,CAAC,QAAQ,CAAC,EAAG,SAAS,mBAAmB,EAAE,CAAC;IACpD,QAAQ,CAAC,MAAM,CAAC,EAAG,YAAY,CAAC;IAChC,QAAQ,CAAC,cAAc,CAAC,EAAG,MAAM,GAAG,IAAI,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;AAE5C,MAAM,MAAM,cAAc,GAAG;IACzB,iEAAiE;IACjE,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAC;IACvB,yEAAyE;IACzE,QAAQ,CAAC,UAAU,EAAG,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAG,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAG,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,cAAc,EAAG,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,cAAc,EAAG,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,WAAW,EAAG,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,YAAY,EAAG,SAAS,MAAM,EAAE,CAAC;IAC1C,oGAAoG;IACpG,QAAQ,CAAC,KAAK,EAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAChE,QAAQ,CAAC,QAAQ,EAAG,SAAS,aAAa,EAAE,CAAC;IAC7C,QAAQ,CAAC,MAAM,EAAG,MAAM,CAAC;IACzB,0DAA0D;IAC1D,QAAQ,CAAC,cAAc,EAAG,MAAM,GAAG,IAAI,CAAC;IACxC,2CAA2C;IAC3C,QAAQ,CAAC,gBAAgB,EAAG,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAC;CACvD,CAAC;AAEF,eAAO,MAAM,eAAe,EAAG,SAAS,MAAM,EAQ7C,CAAC;AAEF,eAAO,MAAM,cAAc,EAAG,SAAS,MAAM,EAQ5C,CAAC;AAEF,eAAO,MAAM,cAAc,EAAG,MAK7B,CAAC;AAEF,qCAAqC;AACrC,qBAAa,WAAY,SAAQ,KAAK;IAClC,SAAkB,IAAI,EAAG,MAAM,CAAiB;CACnD;AAWD,yHAAyH;AACzH,wBAAgB,cAAc,CAAC,KAAK,EAAG,OAAO,EAAE,MAAM,EAAG,MAAM,GAAI,aAAa,CAmD/E;AAwBD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAG,SAAS,aAAa,EAAE,EAAE,SAAS,EAAG,SAAS,mBAAmB,EAAE,GAAI,aAAa,EAAE,CA4B/H;AAED,+FAA+F;AAC/F,wBAAgB,WAAW,CAAC,IAAI,EAAG,MAAM,EAAE,IAAI,EAAG,MAAM,GAAI,MAAM,CAGjE;AAED,MAAM,MAAM,cAAc,GAAG;IACzB,yEAAyE;IACzE,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAG,MAAM,GAAG,IAAI,CAAC;IACrC,iEAAiE;IACjE,QAAQ,CAAC,GAAG,CAAC,EAAG,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,CAAC,EAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;CAChE,CAAC;AAEF,sFAAsF;AACtF,wBAAgB,aAAa,CAAC,IAAI,EAAG,aAAa,EAAE,OAAO,EAAG,cAAc,GAAI,cAAc,CAgC7F;AAED,sFAAsF;AACtF,wBAAgB,cAAc,CAAC,GAAG,EAAG,MAAM,GAAI,MAAM,GAAG,IAAI,CAS3D;AAED,MAAM,MAAM,WAAW,GAAG;IACtB,QAAQ,CAAC,GAAG,EAAG,MAAM,CAAC;IACtB,0FAA0F;IAC1F,QAAQ,CAAC,UAAU,CAAC,EAAG,MAAM,CAAC;IAC9B,QAAQ,CAAC,GAAG,CAAC,EAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;CAChE,CAAC;AAEF,oFAAoF;AACpF,wBAAgB,UAAU,CAAC,OAAO,EAAG,WAAW,GAAI,cAAc,CAkBjE"}
|