@svelte-vitals/core 0.55.2 → 0.55.4
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 +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -2
- package/dist/internal.d.ts +485 -259
- package/dist/internal.js +422 -138
- package/dist/{json-BQf9Qb2D.d.ts → json-CWGGrAda.d.ts} +88 -43
- package/dist/{markdown-DgHBAvYl.js → markdown-YuU0EwLR.js} +1040 -449
- package/package.json +6 -6
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { aria, roles } from "aria-query";
|
|
2
2
|
import { parse } from "svelte/compiler";
|
|
3
|
-
|
|
3
|
+
// src/types.ts
|
|
4
4
|
const defaultProject = {
|
|
5
5
|
hasRobotsTxt: false,
|
|
6
6
|
hasSitemap: false,
|
|
@@ -36,8 +36,7 @@ function defineConfig(config = {}) {
|
|
|
36
36
|
...config
|
|
37
37
|
};
|
|
38
38
|
}
|
|
39
|
-
|
|
40
|
-
//#region src/rule.ts
|
|
39
|
+
// src/rule.ts
|
|
41
40
|
/** Documentation URL for a rule id. Single source so no per-rule URL can drift (issue #24). */
|
|
42
41
|
function docsUrlFor(id) {
|
|
43
42
|
return `https://oekazuma.github.io/svelte-vitals/rules/${id.toLowerCase()}`;
|
|
@@ -57,8 +56,7 @@ function isPenalized(detection, treatDynamicAs) {
|
|
|
57
56
|
if (detection.value === "dynamic") return treatDynamicAs !== "pass";
|
|
58
57
|
return false;
|
|
59
58
|
}
|
|
60
|
-
|
|
61
|
-
//#region src/summary.ts
|
|
59
|
+
// src/summary.ts
|
|
62
60
|
function classify(result, config) {
|
|
63
61
|
if (isPenalized(result.detection, config.treatDynamicAs)) return "fail";
|
|
64
62
|
if (result.detection.value === "dynamic") return "dynamic";
|
|
@@ -97,8 +95,7 @@ function hasFailureAtOrAbove(summary, min) {
|
|
|
97
95
|
const threshold = order.indexOf(min);
|
|
98
96
|
return order.some((sev, idx) => idx >= threshold && summary[sev] > 0);
|
|
99
97
|
}
|
|
100
|
-
|
|
101
|
-
//#region src/rules/seo/title-presence.ts
|
|
98
|
+
// src/rules/seo/title-presence.ts
|
|
102
99
|
const FIX$8 = {
|
|
103
100
|
description: "Add a <title> inside <svelte:head> (a dynamic title is fine).",
|
|
104
101
|
snippet: "<svelte:head>\n <title>{data.title}</title>\n</svelte:head>",
|
|
@@ -151,8 +148,168 @@ const seoTitlePresence = {
|
|
|
151
148
|
});
|
|
152
149
|
}
|
|
153
150
|
};
|
|
154
|
-
|
|
155
|
-
|
|
151
|
+
// src/kit-module.ts
|
|
152
|
+
/** The root layout — its page options cover the whole app. */
|
|
153
|
+
const ROOT_LAYOUT_RE = /^src\/routes\/\+layout(\.server)?\.(ts|js)$/;
|
|
154
|
+
/** Files whose `ssr` export is a page option — it has no effect in `+server` endpoints or hooks files. */
|
|
155
|
+
const PAGE_OPTION_FILE_RE = /\+(page|layout)(\.server)?\.(ts|js)$/;
|
|
156
|
+
const appSsrCache = /* @__PURE__ */ new WeakMap();
|
|
157
|
+
/**
|
|
158
|
+
* Whether no page is ever server-rendered: the hash router, or a root layout exporting `ssr = false`
|
|
159
|
+
* that no page-option file might turn back on. Universal loads and components then run only in the
|
|
160
|
+
* browser; server files (`+page.server`, `+server`, hooks) still run on the server.
|
|
161
|
+
*/
|
|
162
|
+
function appSsrDisabled(scope) {
|
|
163
|
+
if (scope.project?.kitHashRouter) return true;
|
|
164
|
+
const kitModules = scope.kitModules;
|
|
165
|
+
if (!kitModules) return false;
|
|
166
|
+
let hit = appSsrCache.get(kitModules);
|
|
167
|
+
if (hit === void 0) {
|
|
168
|
+
hit = kitModules.some((m) => m.ssrDisabled && ROOT_LAYOUT_RE.test(m.file)) && !kitModules.some((m) => PAGE_OPTION_FILE_RE.test(m.file) && (m.ssrEnabled || m.parseFailed));
|
|
169
|
+
appSsrCache.set(kitModules, hit);
|
|
170
|
+
}
|
|
171
|
+
return hit;
|
|
172
|
+
}
|
|
173
|
+
const ROUTES_DIR$1 = "src/routes";
|
|
174
|
+
/** A `+page`/`+layout` file: its directory, kind, and the `@segment` layout reset (on `.svelte` names). */
|
|
175
|
+
const ROUTE_FILE_RE = /^(src\/routes(?:\/.+)?)\/\+(page|layout)(?:@([^/]*))?(?:\.server)?\.(?:svelte|ts|js)$/;
|
|
176
|
+
const parentDir = (dir) => dir === ROUTES_DIR$1 ? void 0 : dir.slice(0, dir.lastIndexOf("/"));
|
|
177
|
+
/** The nearest ancestor-or-self directory a `@segment` reset names (`''` is the root). */
|
|
178
|
+
function resetTarget(dir, segment) {
|
|
179
|
+
for (let d = dir; d !== void 0; d = parentDir(d)) if (segment === "" ? d === ROUTES_DIR$1 : d.slice(d.lastIndexOf("/") + 1) === segment) return d;
|
|
180
|
+
}
|
|
181
|
+
const routeOptionCache = {
|
|
182
|
+
ssr: /* @__PURE__ */ new WeakMap(),
|
|
183
|
+
csr: /* @__PURE__ */ new WeakMap()
|
|
184
|
+
};
|
|
185
|
+
const optionOn = (m, option) => m.parseFailed || (option === "ssr" ? m.ssrEnabled : m.csrEnabled);
|
|
186
|
+
const optionOff = (m, option) => (option === "ssr" ? m.ssrDisabled : m.csrDisabled) !== void 0;
|
|
187
|
+
/**
|
|
188
|
+
* Per route directory, whether `ssr` or `csr` is off for its page (`page:<dir>`) or layout
|
|
189
|
+
* (`layout:<dir>`). A page takes the nearest export of the option along its own files and then its
|
|
190
|
+
* layout chain, following `+page@x`/`+layout@x` resets as SvelteKit does; an export other than
|
|
191
|
+
* `false` (or `dev`), or an unparsed option file, counts as on. A layout is off only when every page
|
|
192
|
+
* using it is — and the root layout also needs its own opt-out, since it wraps the 404 page.
|
|
193
|
+
*/
|
|
194
|
+
function routeOptionOff(scope, which) {
|
|
195
|
+
const kitModules = scope.kitModules ?? [];
|
|
196
|
+
let hit = routeOptionCache[which].get(scope);
|
|
197
|
+
if (hit) return hit;
|
|
198
|
+
const own = {
|
|
199
|
+
universal: /* @__PURE__ */ new Map(),
|
|
200
|
+
server: /* @__PURE__ */ new Map()
|
|
201
|
+
};
|
|
202
|
+
for (const m of kitModules) {
|
|
203
|
+
const match = ROUTE_FILE_RE.exec(m.file);
|
|
204
|
+
if (!match) continue;
|
|
205
|
+
const key = `${match[2]}:${match[1]}`;
|
|
206
|
+
if (optionOn(m, which)) own[m.kind].set(key, "on");
|
|
207
|
+
else if (optionOff(m, which)) own[m.kind].set(key, "off");
|
|
208
|
+
}
|
|
209
|
+
const option = new Map([...own.server, ...own.universal]);
|
|
210
|
+
hit = /* @__PURE__ */ new Map();
|
|
211
|
+
for (const [dir, chain] of pageChains(scope)) {
|
|
212
|
+
const off = [`page:${dir}`, ...chain.map((l) => `layout:${l}`)].map((k) => option.get(k)).find(Boolean) === "off";
|
|
213
|
+
hit.set(`page:${dir}`, off);
|
|
214
|
+
for (const l of chain) hit.set(`layout:${l}`, (hit.get(`layout:${l}`) ?? true) && off);
|
|
215
|
+
}
|
|
216
|
+
if (option.get(`layout:${ROUTES_DIR$1}`) !== "off") hit.delete(`layout:${ROUTES_DIR$1}`);
|
|
217
|
+
routeOptionCache[which].set(scope, hit);
|
|
218
|
+
return hit;
|
|
219
|
+
}
|
|
220
|
+
const chainCache = /* @__PURE__ */ new WeakMap();
|
|
221
|
+
/** Per page directory, the layout directories that wrap it, nearest first, following `+page@x`/`+layout@x` resets as SvelteKit does. */
|
|
222
|
+
function pageChains(scope) {
|
|
223
|
+
let hit = chainCache.get(scope);
|
|
224
|
+
if (hit) return hit;
|
|
225
|
+
const pages = /* @__PURE__ */ new Map();
|
|
226
|
+
const layouts = /* @__PURE__ */ new Map();
|
|
227
|
+
const files = [
|
|
228
|
+
...scope.sourceFiles ?? [],
|
|
229
|
+
...(scope.components ?? []).map((c) => c.file),
|
|
230
|
+
...(scope.kitModules ?? []).map((m) => m.file)
|
|
231
|
+
];
|
|
232
|
+
for (const file of files) {
|
|
233
|
+
const match = ROUTE_FILE_RE.exec(file);
|
|
234
|
+
if (!match) continue;
|
|
235
|
+
const map = match[2] === "page" ? pages : layouts;
|
|
236
|
+
if (match[3] !== void 0 || !map.has(match[1])) map.set(match[1], match[3]);
|
|
237
|
+
}
|
|
238
|
+
hit = /* @__PURE__ */ new Map();
|
|
239
|
+
for (const [dir, reset] of pages) {
|
|
240
|
+
const chain = [];
|
|
241
|
+
for (let d = reset === void 0 ? dir : resetTarget(dir, reset); d !== void 0;) {
|
|
242
|
+
const layoutReset = layouts.get(d);
|
|
243
|
+
if (layouts.has(d)) chain.push(d);
|
|
244
|
+
d = layoutReset === void 0 ? parentDir(d) : resetTarget(parentDir(d), layoutReset);
|
|
245
|
+
}
|
|
246
|
+
hit.set(dir, chain);
|
|
247
|
+
}
|
|
248
|
+
chainCache.set(scope, hit);
|
|
249
|
+
return hit;
|
|
250
|
+
}
|
|
251
|
+
/** Whether a `+page` file's route sends requests without a session away: its own load or a wrapping layout's does (`loadGated`). */
|
|
252
|
+
function routeGated(file, scope) {
|
|
253
|
+
const match = ROUTE_FILE_RE.exec(file);
|
|
254
|
+
if (!match || match[2] !== "page") return false;
|
|
255
|
+
const gated = /* @__PURE__ */ new Set();
|
|
256
|
+
for (const m of scope.kitModules ?? []) {
|
|
257
|
+
const g = m.loadGated && m.kind === "server" ? ROUTE_FILE_RE.exec(m.file) : null;
|
|
258
|
+
if (g) gated.add(`${g[2]}:${g[1]}`);
|
|
259
|
+
}
|
|
260
|
+
if (gated.size === 0) return false;
|
|
261
|
+
const chain = pageChains(scope).get(match[1]) ?? [];
|
|
262
|
+
return gated.has(`page:${match[1]}`) || chain.some((l) => gated.has(`layout:${l}`));
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Whether a `+page` file's route never renders because a layout above it redirects or errors in its
|
|
266
|
+
* `load` on every call (`loadNeverRenders`). Not the root layout: one that sent every request away
|
|
267
|
+
* would leave the app nothing to serve, so that reading is more likely wrong than the app, and acting
|
|
268
|
+
* on it would silence every route.
|
|
269
|
+
*/
|
|
270
|
+
function layoutNeverRenders(file, scope) {
|
|
271
|
+
const match = ROUTE_FILE_RE.exec(file);
|
|
272
|
+
if (!match || match[2] !== "page") return false;
|
|
273
|
+
const dead = /* @__PURE__ */ new Set();
|
|
274
|
+
for (const m of scope.kitModules ?? []) {
|
|
275
|
+
const layout = m.loadNeverRenders ? ROUTE_FILE_RE.exec(m.file) : null;
|
|
276
|
+
if (layout?.[2] === "layout" && layout[1] !== ROUTES_DIR$1) dead.add(layout[1]);
|
|
277
|
+
}
|
|
278
|
+
return dead.size > 0 && (pageChains(scope).get(match[1]) ?? []).some((dir) => dead.has(dir));
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Whether a `+page` file's route never renders because its own `load` redirects or errors on every
|
|
282
|
+
* request, a build-time `if (building)` aside (`loadNeverRendersOutsideBuild`), and nothing on its chain
|
|
283
|
+
* exports `prerender`, so the build never renders it either.
|
|
284
|
+
*/
|
|
285
|
+
function pageRendersOnlyWhenBuilding(file, scope) {
|
|
286
|
+
const match = ROUTE_FILE_RE.exec(file);
|
|
287
|
+
if (!match || match[2] !== "page") return false;
|
|
288
|
+
const at = (m) => ROUTE_FILE_RE.exec(m.file);
|
|
289
|
+
const modules = scope.kitModules ?? [];
|
|
290
|
+
if (!modules.some((m) => m.loadNeverRendersOutsideBuild && at(m)?.[2] === "page" && at(m)?.[1] === match[1])) return false;
|
|
291
|
+
const layouts = /* @__PURE__ */ new Set([match[1], ...pageChains(scope).get(match[1]) ?? []]);
|
|
292
|
+
return !modules.some((m) => {
|
|
293
|
+
const where = m.prerenderExported ? at(m) : null;
|
|
294
|
+
return !!where && (where[2] === "page" ? where[1] === match[1] : layouts.has(where[1]));
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
/** Whether a `+page`/`+layout` file (module or component) belongs to a route that is never server-rendered. */
|
|
298
|
+
function routeNeverSsr(file, scope) {
|
|
299
|
+
const match = ROUTE_FILE_RE.exec(file);
|
|
300
|
+
return !!match && (appSsrDisabled(scope) || routeOptionOff(scope, "ssr").get(`${match[2]}:${match[1]}`) === true);
|
|
301
|
+
}
|
|
302
|
+
/** Whether a universal `+page`/`+layout` module never runs in the browser: every page it serves has `csr` off, its own or inherited. */
|
|
303
|
+
function universalNeverCsr(m, scope) {
|
|
304
|
+
if (m.kind !== "universal") return false;
|
|
305
|
+
const match = ROUTE_FILE_RE.exec(m.file);
|
|
306
|
+
return !!match && routeOptionOff(scope, "csr").get(`${match[2]}:${match[1]}`) === true;
|
|
307
|
+
}
|
|
308
|
+
/** Whether a universal `+page`/`+layout` module never runs on the server — its own `ssr = false`, an app-wide one, or one its route inherits. */
|
|
309
|
+
function universalNeverSsr(m, scope) {
|
|
310
|
+
return m.kind === "universal" && (m.ssrDisabled !== void 0 || appSsrDisabled(scope) || routeNeverSsr(m.file, scope));
|
|
311
|
+
}
|
|
312
|
+
// src/rules/seo/head-tag-rule.ts
|
|
156
313
|
/** Open Graph keys are read from `property=`; `name="og:*"` is the common slip. */
|
|
157
314
|
function ogMisspelled(key) {
|
|
158
315
|
return {
|
|
@@ -179,6 +336,7 @@ function detect(head, match) {
|
|
|
179
336
|
value: "absent"
|
|
180
337
|
};
|
|
181
338
|
}
|
|
339
|
+
const GATED_NOTE = "Reported as info: this route's load turns away visitors without a session (a redirect or a 401/403), so search engines never index it.";
|
|
182
340
|
/** Build a route-scope rule asserting the presence of a single head tag (design §11). */
|
|
183
341
|
function headTagRule(opts) {
|
|
184
342
|
const docsUrl = docsUrlFor(opts.id);
|
|
@@ -195,15 +353,16 @@ function headTagRule(opts) {
|
|
|
195
353
|
const detection = detect(head, opts.match);
|
|
196
354
|
const misspelled = detection.presence === "none" && opts.misspelled && head.tags.some(opts.misspelled.match) ? opts.misspelled : void 0;
|
|
197
355
|
const message = misspelled ? misspelled.label : detection.presence === "none" ? `Missing ${opts.label}` : detection.value === "absent" ? `Empty ${opts.label}` : opts.label;
|
|
356
|
+
const gated = opts.infoWhenGated && routeGated(head.file, ctx);
|
|
198
357
|
return {
|
|
199
358
|
id: opts.id,
|
|
200
359
|
category: "seo",
|
|
201
|
-
severity: opts.severity,
|
|
360
|
+
severity: gated ? "info" : opts.severity,
|
|
202
361
|
detection,
|
|
203
362
|
route: head.route,
|
|
204
363
|
location: head.file,
|
|
205
364
|
message,
|
|
206
|
-
recommendation: misspelled?.recommendation ?? opts.recommendation,
|
|
365
|
+
recommendation: misspelled?.recommendation ?? (gated ? `${opts.recommendation} ${GATED_NOTE}` : opts.recommendation),
|
|
207
366
|
docsUrl,
|
|
208
367
|
...misspelled ? { fix: { ...misspelled.fix } } : opts.fix ? { fix: { ...opts.fix } } : {}
|
|
209
368
|
};
|
|
@@ -211,12 +370,12 @@ function headTagRule(opts) {
|
|
|
211
370
|
}
|
|
212
371
|
};
|
|
213
372
|
}
|
|
214
|
-
|
|
215
|
-
//#region src/rules/seo/description-presence.ts
|
|
373
|
+
// src/rules/seo/description-presence.ts
|
|
216
374
|
const seoDescriptionPresence = headTagRule({
|
|
217
375
|
id: "seo/description-presence",
|
|
218
376
|
title: "Description presence",
|
|
219
377
|
severity: "warning",
|
|
378
|
+
infoWhenGated: true,
|
|
220
379
|
match: (t) => t.kind === "meta" && t.name === "description",
|
|
221
380
|
label: "<meta name=\"description\">",
|
|
222
381
|
recommendation: "Add a <meta name=\"description\"> in <svelte:head>, or set the description on your meta component.",
|
|
@@ -227,13 +386,49 @@ const seoDescriptionPresence = headTagRule({
|
|
|
227
386
|
lang: "svelte"
|
|
228
387
|
}
|
|
229
388
|
});
|
|
230
|
-
|
|
231
|
-
|
|
389
|
+
// src/head.ts
|
|
390
|
+
/** Whether a `<link>`'s `rel` holds `token`: `rel` is a set of space-separated keywords (`dns-prefetch preconnect`). */
|
|
391
|
+
function hasRel(tag, token) {
|
|
392
|
+
return tag.rel?.split(/\s+/).includes(token) ?? false;
|
|
393
|
+
}
|
|
394
|
+
const JS_MIME_TYPES = /* @__PURE__ */ new Set([
|
|
395
|
+
"application/ecmascript",
|
|
396
|
+
"application/javascript",
|
|
397
|
+
"application/x-ecmascript",
|
|
398
|
+
"application/x-javascript",
|
|
399
|
+
"text/ecmascript",
|
|
400
|
+
"text/javascript",
|
|
401
|
+
"text/javascript1.0",
|
|
402
|
+
"text/javascript1.1",
|
|
403
|
+
"text/javascript1.2",
|
|
404
|
+
"text/javascript1.3",
|
|
405
|
+
"text/javascript1.4",
|
|
406
|
+
"text/javascript1.5",
|
|
407
|
+
"text/jscript",
|
|
408
|
+
"text/livescript",
|
|
409
|
+
"text/x-ecmascript",
|
|
410
|
+
"text/x-javascript"
|
|
411
|
+
]);
|
|
412
|
+
/** HTML strips only ASCII whitespace from a `type` before matching — `trim()` would also strip
|
|
413
|
+
* U+00A0 etc. and misread a data block as a classic script. */
|
|
414
|
+
const ASCII_WHITESPACE_EDGES = /^[\t\n\f\r ]+|[\t\n\f\r ]+$/g;
|
|
415
|
+
/**
|
|
416
|
+
* Whether a `type` attribute (undefined = absent) makes a `<script>` a classic,
|
|
417
|
+
* render-blocking-capable script. Per the HTML spec, absent and the literal empty string are
|
|
418
|
+
* classic; any other value is ASCII-whitespace-stripped and must match a JavaScript MIME type —
|
|
419
|
+
* so a whitespace-only `type` is a data block, not a classic script.
|
|
420
|
+
*/
|
|
421
|
+
function isClassicScriptType(type) {
|
|
422
|
+
if (type === void 0 || type === "") return true;
|
|
423
|
+
return JS_MIME_TYPES.has(type.replace(ASCII_WHITESPACE_EDGES, "").toLowerCase());
|
|
424
|
+
}
|
|
425
|
+
// src/rules/seo/canonical-url.ts
|
|
232
426
|
const seoCanonicalUrl = headTagRule({
|
|
233
427
|
id: "seo/canonical-url",
|
|
234
428
|
title: "Canonical URL",
|
|
235
429
|
severity: "warning",
|
|
236
|
-
|
|
430
|
+
infoWhenGated: true,
|
|
431
|
+
match: (t) => t.kind === "link" && hasRel(t, "canonical"),
|
|
237
432
|
label: "<link rel=\"canonical\">",
|
|
238
433
|
recommendation: "Add <link rel=\"canonical\"> in <svelte:head>, or set the canonical prop on your meta component.",
|
|
239
434
|
rationale: "A canonical URL tells search engines which URL is authoritative, preventing duplicate-content dilution across query-string variants of the same page.",
|
|
@@ -243,8 +438,7 @@ const seoCanonicalUrl = headTagRule({
|
|
|
243
438
|
lang: "svelte"
|
|
244
439
|
}
|
|
245
440
|
});
|
|
246
|
-
|
|
247
|
-
//#region src/rules/seo/og-image.ts
|
|
441
|
+
// src/rules/seo/og-image.ts
|
|
248
442
|
const seoOgImage = headTagRule({
|
|
249
443
|
id: "seo/og-image",
|
|
250
444
|
title: "Open Graph image",
|
|
@@ -260,8 +454,7 @@ const seoOgImage = headTagRule({
|
|
|
260
454
|
lang: "svelte"
|
|
261
455
|
}
|
|
262
456
|
});
|
|
263
|
-
|
|
264
|
-
//#region src/rules/seo/og-title.ts
|
|
457
|
+
// src/rules/seo/og-title.ts
|
|
265
458
|
const seoOgTitle = headTagRule({
|
|
266
459
|
id: "seo/og-title",
|
|
267
460
|
title: "Open Graph title",
|
|
@@ -277,8 +470,7 @@ const seoOgTitle = headTagRule({
|
|
|
277
470
|
lang: "svelte"
|
|
278
471
|
}
|
|
279
472
|
});
|
|
280
|
-
|
|
281
|
-
//#region src/rules/seo/json-ld.ts
|
|
473
|
+
// src/rules/seo/json-ld.ts
|
|
282
474
|
const seoJsonLd = headTagRule({
|
|
283
475
|
id: "seo/json-ld",
|
|
284
476
|
title: "JSON-LD structured data",
|
|
@@ -293,8 +485,7 @@ const seoJsonLd = headTagRule({
|
|
|
293
485
|
lang: "svelte"
|
|
294
486
|
}
|
|
295
487
|
});
|
|
296
|
-
|
|
297
|
-
//#region src/rules/seo/robots-txt.ts
|
|
488
|
+
// src/rules/seo/robots-txt.ts
|
|
298
489
|
const present$2 = {
|
|
299
490
|
presence: "own",
|
|
300
491
|
value: "static"
|
|
@@ -329,8 +520,7 @@ const seoRobotsTxt = {
|
|
|
329
520
|
}];
|
|
330
521
|
}
|
|
331
522
|
};
|
|
332
|
-
|
|
333
|
-
//#region src/rules/seo/sitemap-xml.ts
|
|
523
|
+
// src/rules/seo/sitemap-xml.ts
|
|
334
524
|
const present$1 = {
|
|
335
525
|
presence: "own",
|
|
336
526
|
value: "static"
|
|
@@ -365,8 +555,7 @@ const seoSitemapXml = {
|
|
|
365
555
|
}];
|
|
366
556
|
}
|
|
367
557
|
};
|
|
368
|
-
|
|
369
|
-
//#region src/rules/seo/html-lang.ts
|
|
558
|
+
// src/rules/seo/html-lang.ts
|
|
370
559
|
const FIX$5 = {
|
|
371
560
|
description: "Set the lang attribute on <html> in src/app.html.",
|
|
372
561
|
snippet: "<html lang=\"en\">",
|
|
@@ -394,8 +583,7 @@ const seoHtmlLang = {
|
|
|
394
583
|
}];
|
|
395
584
|
}
|
|
396
585
|
};
|
|
397
|
-
|
|
398
|
-
//#region src/rules/detection.ts
|
|
586
|
+
// src/rules/detection.ts
|
|
399
587
|
const PENALIZED$1 = {
|
|
400
588
|
presence: "none",
|
|
401
589
|
value: "absent"
|
|
@@ -404,8 +592,7 @@ const PASS = {
|
|
|
404
592
|
presence: "own",
|
|
405
593
|
value: "static"
|
|
406
594
|
};
|
|
407
|
-
|
|
408
|
-
//#region src/rules/perf/image-rule.ts
|
|
595
|
+
// src/rules/perf/image-rule.ts
|
|
409
596
|
/**
|
|
410
597
|
* Shared engine behind `imageRule` and `linkRule`: per route, check each relevant item
|
|
411
598
|
* against `ok`. A route with no relevant item has no signal: emit nothing so it is
|
|
@@ -480,8 +667,7 @@ function imageRule(opts) {
|
|
|
480
667
|
line: (img) => img.line
|
|
481
668
|
});
|
|
482
669
|
}
|
|
483
|
-
|
|
484
|
-
//#region src/rules/perf/image-dimensions.ts
|
|
670
|
+
// src/rules/perf/image-dimensions.ts
|
|
485
671
|
const performanceImageDimensions = imageRule({
|
|
486
672
|
id: "performance/image-dimensions",
|
|
487
673
|
title: "Image dimensions",
|
|
@@ -496,8 +682,7 @@ const performanceImageDimensions = imageRule({
|
|
|
496
682
|
},
|
|
497
683
|
ok: (img) => img.hasWidth && img.hasHeight
|
|
498
684
|
});
|
|
499
|
-
|
|
500
|
-
//#region src/rules/perf/image-loading-hint.ts
|
|
685
|
+
// src/rules/perf/image-loading-hint.ts
|
|
501
686
|
const performanceImageLoadingHint = imageRule({
|
|
502
687
|
id: "performance/image-loading-hint",
|
|
503
688
|
title: "Image loading hint",
|
|
@@ -512,8 +697,7 @@ const performanceImageLoadingHint = imageRule({
|
|
|
512
697
|
},
|
|
513
698
|
ok: (img) => img.hasLoading
|
|
514
699
|
});
|
|
515
|
-
|
|
516
|
-
//#region src/rules/perf/responsive-image.ts
|
|
700
|
+
// src/rules/perf/responsive-image.ts
|
|
517
701
|
const performanceResponsiveImage = imageRule({
|
|
518
702
|
id: "performance/responsive-image",
|
|
519
703
|
title: "Responsive image",
|
|
@@ -526,10 +710,9 @@ const performanceResponsiveImage = imageRule({
|
|
|
526
710
|
snippet: "<img src=\"/hero.jpg\" srcset=\"/hero-800.jpg 800w, /hero-1600.jpg 1600w\" sizes=\"100vw\" width=\"1600\" height=\"900\" alt=\"…\" />",
|
|
527
711
|
lang: "svelte"
|
|
528
712
|
},
|
|
529
|
-
ok: (img) => img.hasSrcset || img.svg === true
|
|
713
|
+
ok: (img) => img.hasSrcset || img.svg === true || img.qr === true
|
|
530
714
|
});
|
|
531
|
-
|
|
532
|
-
//#region src/rules/perf/link-rule.ts
|
|
715
|
+
// src/rules/perf/link-rule.ts
|
|
533
716
|
/** Build a route-scoped Performance rule that checks each relevant <link> in the effective head. */
|
|
534
717
|
function linkRule(opts) {
|
|
535
718
|
return routeItemRule({
|
|
@@ -543,8 +726,7 @@ function linkRule(opts) {
|
|
|
543
726
|
location: (tag, passLocation) => tag.file ?? passLocation
|
|
544
727
|
});
|
|
545
728
|
}
|
|
546
|
-
|
|
547
|
-
//#region src/rules/perf/preload-missing-as.ts
|
|
729
|
+
// src/rules/perf/preload-missing-as.ts
|
|
548
730
|
const performancePreloadMissingAs = linkRule({
|
|
549
731
|
id: "performance/preload-missing-as",
|
|
550
732
|
title: "Preload missing as",
|
|
@@ -557,11 +739,10 @@ const performancePreloadMissingAs = linkRule({
|
|
|
557
739
|
snippet: "<link rel=\"preload\" href=\"/app.css\" as=\"style\" />",
|
|
558
740
|
lang: "html"
|
|
559
741
|
},
|
|
560
|
-
relevant: (t) => t
|
|
742
|
+
relevant: (t) => hasRel(t, "preload"),
|
|
561
743
|
ok: (t) => t.hasAs === true
|
|
562
744
|
});
|
|
563
|
-
|
|
564
|
-
//#region src/rules/perf/font-preload-crossorigin.ts
|
|
745
|
+
// src/rules/perf/font-preload-crossorigin.ts
|
|
565
746
|
const performanceFontPreloadCrossorigin = linkRule({
|
|
566
747
|
id: "performance/font-preload-crossorigin",
|
|
567
748
|
title: "Font preload missing crossorigin",
|
|
@@ -574,11 +755,10 @@ const performanceFontPreloadCrossorigin = linkRule({
|
|
|
574
755
|
snippet: "<link rel=\"preload\" href=\"/inter.woff2\" as=\"font\" type=\"font/woff2\" crossorigin />",
|
|
575
756
|
lang: "html"
|
|
576
757
|
},
|
|
577
|
-
relevant: (t) => t
|
|
758
|
+
relevant: (t) => hasRel(t, "preload") && t.as === "font",
|
|
578
759
|
ok: (t) => t.hasCrossorigin === true
|
|
579
760
|
});
|
|
580
|
-
|
|
581
|
-
//#region src/rules/perf/lcp-image.ts
|
|
761
|
+
// src/rules/perf/lcp-image.ts
|
|
582
762
|
const docsUrl$10 = docsUrlFor("performance/lcp-image");
|
|
583
763
|
const recommendation$8 = "Remove loading=\"lazy\" from the LCP/first image and consider fetchpriority=\"high\" so it loads as early as possible.";
|
|
584
764
|
/**
|
|
@@ -637,8 +817,7 @@ const performanceLcpImage = {
|
|
|
637
817
|
return out;
|
|
638
818
|
}
|
|
639
819
|
};
|
|
640
|
-
|
|
641
|
-
//#region src/rules/perf/render-blocking-script.ts
|
|
820
|
+
// src/rules/perf/render-blocking-script.ts
|
|
642
821
|
const docsUrl$9 = docsUrlFor("performance/render-blocking-script");
|
|
643
822
|
const recommendation$7 = "Add defer (or type=\"module\"), or async, to the <script> so it does not block HTML parsing.";
|
|
644
823
|
/**
|
|
@@ -663,7 +842,8 @@ const performanceRenderBlockingScript = {
|
|
|
663
842
|
async check(ctx) {
|
|
664
843
|
const out = [];
|
|
665
844
|
for (const head of ctx.heads) {
|
|
666
|
-
const
|
|
845
|
+
const clientHead = routeNeverSsr(head.file, ctx);
|
|
846
|
+
const scripts = head.tags.filter((t) => t.kind === "script" && !(clientHead && t.file !== "src/app.html"));
|
|
667
847
|
if (scripts.length === 0) continue;
|
|
668
848
|
const blocking = scripts.filter((t) => t.blocking);
|
|
669
849
|
if (blocking.length > 0) for (const tag of blocking) out.push({
|
|
@@ -699,8 +879,7 @@ const performanceRenderBlockingScript = {
|
|
|
699
879
|
return out;
|
|
700
880
|
}
|
|
701
881
|
};
|
|
702
|
-
|
|
703
|
-
//#region src/config-apply.ts
|
|
882
|
+
// src/config-apply.ts
|
|
704
883
|
/** The severity a setting selects: `'off'`, an explicit severity, or undefined (leave the built-in). */
|
|
705
884
|
function settingSeverity(setting) {
|
|
706
885
|
if (setting === void 0) return void 0;
|
|
@@ -876,8 +1055,7 @@ function applyOverrides(results, config) {
|
|
|
876
1055
|
}
|
|
877
1056
|
return out;
|
|
878
1057
|
}
|
|
879
|
-
|
|
880
|
-
//#region src/rule-options.ts
|
|
1058
|
+
// src/rule-options.ts
|
|
881
1059
|
/**
|
|
882
1060
|
* Severity strings a rule setting accepts, plus `'off'` — the bare string form.
|
|
883
1061
|
* Module-private: `validateRuleSetting` is the only thing that needs it, and every
|
|
@@ -1129,8 +1307,7 @@ function validateRuleSetting(label, ruleId, setting, spec, opts) {
|
|
|
1129
1307
|
if (optionErrors.length > 0) errors.push(`${label}: ${optionErrors.join(" ")}`);
|
|
1130
1308
|
return errors;
|
|
1131
1309
|
}
|
|
1132
|
-
|
|
1133
|
-
//#region src/rules/perf/preconnect.ts
|
|
1310
|
+
// src/rules/perf/preconnect.ts
|
|
1134
1311
|
const docsUrl$8 = docsUrlFor("performance/preconnect");
|
|
1135
1312
|
const recommendation$6 = "Add <link rel=\"preconnect\"> (or dns-prefetch) for the third-party origin so the connection is set up early.";
|
|
1136
1313
|
const OPTIONS$6 = { origins: {
|
|
@@ -1175,7 +1352,7 @@ const performancePreconnect = {
|
|
|
1175
1352
|
if (tag.kind !== "link" && tag.kind !== "script" || typeof tag.href !== "string") continue;
|
|
1176
1353
|
const host = hostOf(tag.href);
|
|
1177
1354
|
if (!host) continue;
|
|
1178
|
-
if (tag.kind === "link" && (tag
|
|
1355
|
+
if (tag.kind === "link" && (hasRel(tag, "preconnect") || hasRel(tag, "dns-prefetch"))) {
|
|
1179
1356
|
covered.add(host);
|
|
1180
1357
|
continue;
|
|
1181
1358
|
}
|
|
@@ -1223,8 +1400,7 @@ const performancePreconnect = {
|
|
|
1223
1400
|
return out;
|
|
1224
1401
|
}
|
|
1225
1402
|
};
|
|
1226
|
-
|
|
1227
|
-
//#region src/rules/seo/indexability.ts
|
|
1403
|
+
// src/rules/seo/indexability.ts
|
|
1228
1404
|
const FIX$4 = {
|
|
1229
1405
|
description: "If this route should be indexed, drop noindex from its <meta name=\"robots\">.",
|
|
1230
1406
|
snippet: "<svelte:head>\n <meta name=\"robots\" content=\"index, follow\" />\n</svelte:head>",
|
|
@@ -1262,8 +1438,7 @@ const seoIndexability = {
|
|
|
1262
1438
|
return out;
|
|
1263
1439
|
}
|
|
1264
1440
|
};
|
|
1265
|
-
|
|
1266
|
-
//#region src/rules/seo/twitter-card.ts
|
|
1441
|
+
// src/rules/seo/twitter-card.ts
|
|
1267
1442
|
const seoTwitterCard = headTagRule({
|
|
1268
1443
|
id: "seo/twitter-card",
|
|
1269
1444
|
title: "Twitter Card",
|
|
@@ -1278,8 +1453,7 @@ const seoTwitterCard = headTagRule({
|
|
|
1278
1453
|
lang: "svelte"
|
|
1279
1454
|
}
|
|
1280
1455
|
});
|
|
1281
|
-
|
|
1282
|
-
//#region src/rules/seo/og-description.ts
|
|
1456
|
+
// src/rules/seo/og-description.ts
|
|
1283
1457
|
const seoOgDescription = headTagRule({
|
|
1284
1458
|
id: "seo/og-description",
|
|
1285
1459
|
title: "Open Graph description",
|
|
@@ -1295,8 +1469,7 @@ const seoOgDescription = headTagRule({
|
|
|
1295
1469
|
lang: "svelte"
|
|
1296
1470
|
}
|
|
1297
1471
|
});
|
|
1298
|
-
|
|
1299
|
-
//#region src/rules/seo/og-url.ts
|
|
1472
|
+
// src/rules/seo/og-url.ts
|
|
1300
1473
|
const seoOgUrl = headTagRule({
|
|
1301
1474
|
id: "seo/og-url",
|
|
1302
1475
|
title: "Open Graph URL",
|
|
@@ -1312,8 +1485,7 @@ const seoOgUrl = headTagRule({
|
|
|
1312
1485
|
lang: "svelte"
|
|
1313
1486
|
}
|
|
1314
1487
|
});
|
|
1315
|
-
|
|
1316
|
-
//#region src/rules/seo/viewport.ts
|
|
1488
|
+
// src/rules/seo/viewport.ts
|
|
1317
1489
|
const seoViewport = headTagRule({
|
|
1318
1490
|
id: "seo/viewport",
|
|
1319
1491
|
title: "Viewport",
|
|
@@ -1329,8 +1501,7 @@ const seoViewport = headTagRule({
|
|
|
1329
1501
|
lang: "html"
|
|
1330
1502
|
}
|
|
1331
1503
|
});
|
|
1332
|
-
|
|
1333
|
-
//#region src/rules/seo/sitemap-in-robots.ts
|
|
1504
|
+
// src/rules/seo/sitemap-in-robots.ts
|
|
1334
1505
|
const FIX$3 = {
|
|
1335
1506
|
description: "Add a Sitemap: line to static/robots.txt.",
|
|
1336
1507
|
snippet: "User-agent: *\nAllow: /\n\nSitemap: https://example.com/sitemap.xml",
|
|
@@ -1362,8 +1533,7 @@ const seoSitemapInRobots = {
|
|
|
1362
1533
|
}];
|
|
1363
1534
|
}
|
|
1364
1535
|
};
|
|
1365
|
-
|
|
1366
|
-
//#region src/rules/seo/jsonld-engine.ts
|
|
1536
|
+
// src/rules/seo/jsonld-engine.ts
|
|
1367
1537
|
/** Parse JSON-LD and flatten to structured-data objects: root, top-level array members, and @graph members. */
|
|
1368
1538
|
function parseJsonLd(raw) {
|
|
1369
1539
|
let data;
|
|
@@ -1631,12 +1801,10 @@ function jsonldRule(opts) {
|
|
|
1631
1801
|
}
|
|
1632
1802
|
};
|
|
1633
1803
|
}
|
|
1634
|
-
|
|
1635
|
-
//#region src/rules/seo/schema-vocabulary.generated.ts
|
|
1804
|
+
// src/rules/seo/schema-vocabulary.generated.ts
|
|
1636
1805
|
/** Every schema.org type name schema-dts exports, for validating JSON-LD `@type` values. */
|
|
1637
|
-
const SCHEMA_ORG_TYPES = new Set("3DModel AMRadioChannel APIReference AboutPage AcceptAction Accommodation AccountingService AchieveAction Action ActionAccessSpecification ActionStatusType ActivateAction AddAction AdministrativeArea AdultEntertainment AdultOrientedEnumeration AdvertiserContentArticle AggregateOffer AggregateRating AgreeAction Airline Airport AlignmentObject AllocateAction AmpStory AmusementPark AnalysisNewsArticle AnatomicalStructure AnatomicalSystem AnimalShelter Answer Apartment ApartmentComplex AppendAction ApplyAction ApprovedIndication Aquarium ArchiveComponent ArchiveOrganization ArriveAction ArtGallery Artery Article AskAction AskPublicNewsArticle AssessAction AssignAction Atlas Attorney Audience AudioObject AudioObjectSnapshot Audiobook AuthenticateAction AuthorizeAction AutoBodyShop AutoDealer AutoPartsStore AutoRental AutoRepair AutoWash AutomatedTeller AutomotiveBusiness BackgroundNewsArticle Bakery BankAccount BankOrCreditUnion BarOrPub Barcode Beach BeautySalon BedAndBreakfast BedDetails BedType BefriendAction BikeStore BioChemEntity Blog BlogPosting BloodTest BoardingPolicyType BoatReservation BoatTerminal BoatTrip BodyMeasurementTypeEnumeration BodyOfWater Bone Book BookFormatType BookSeries BookStore BookmarkAction Boolean BorrowAction BowlingAlley BrainStructure Brand BreadcrumbList Brewery Bridge BroadcastChannel BroadcastEvent BroadcastFrequencySpecification BroadcastService BrokerageAccount BuddhistTemple BusOrCoach BusReservation BusStation BusStop BusTrip BusinessAudience BusinessEntityType BusinessEvent BusinessFunction BuyAction CDCPMDRecord CableOrSatelliteService CafeOrCoffeeShop Campground CampingPitch Canal CancelAction Car CarUsageType Casino CategoryCode CategoryCodeSet CatholicChurch Cemetery Certification CertificationStatusEnumeration Chapter CheckAction CheckInAction CheckOutAction CheckoutPage ChemicalSubstance ChildCare ChildrensEvent ChooseAction Church City CityHall CivicStructure Claim ClaimReview Class Clip ClothingStore Code Collection CollectionPage CollegeOrUniversity ComedyClub ComedyEvent ComicCoverArt ComicIssue ComicSeries ComicStory Comment CommentAction CommunicateAction CommunityHealth CompleteDataFeed CompoundPriceSpecification ComputerLanguage ComputerStore ConferenceEvent ConfirmAction Consortium ConstraintNode ConsumeAction ContactPage ContactPoint ContactPointOption Continent ControlAction ConvenienceStore Conversation CookAction Cooperative Corporation CorrectionComment Country Course CourseInstance Courthouse CoverArt CovidTestingFacility CreateAction CreativeWork CreativeWorkSeason CreativeWorkSeries Credential CreditCard Crematorium CriticReview CssSelectorType CurrencyConversionService DDxElement DENonprofitType DanceEvent DanceGroup DataCatalog DataDownload DataFeed DataFeedItem DataType Dataset Date DateTime DatedMoneySpecification DayOfWeek DaySpa DeactivateAction DefenceEstablishment DefinedRegion DefinedTerm DefinedTermSet DeleteAction DeliveryChargeSpecification DeliveryEvent DeliveryMethod DeliveryTimeSettings Demand Dentist DepartAction DepartmentStore DepositAccount Dermatology DiagnosticLab DiagnosticProcedure Diet DietNutrition DietarySupplement DigitalDocument DigitalDocumentPermission DigitalDocumentPermissionType DigitalPlatformEnumeration DisagreeAction DiscoverAction DiscussionForumPosting DislikeAction Distance Distillery DonateAction DoseSchedule DownloadAction DrawAction Drawing DrinkAction DriveWheelConfigurationValue Drug DrugClass DrugCost DrugCostCategory DrugLegalStatus DrugPregnancyCategory DrugPrescriptionStatus DrugStrength DryCleaningOrLaundry Duration EUEnergyEfficiencyEnumeration EatAction EducationEvent EducationalAudience EducationalOccupationalCredential EducationalOccupationalProgram EducationalOrganization Electrician ElectronicsStore ElementarySchool EmailMessage Embassy Emergency EmergencyService EmployeeRole EmployerAggregateRating EmployerReview EmploymentAgency EndorseAction EndorsementRating Energy EnergyConsumptionDetails EnergyEfficiencyEnumeration EnergyStarEnergyEfficiencyEnumeration EngineSpecification EntertainmentBusiness EntryPoint Enumeration Episode Error Event EventAttendanceModeEnumeration EventReservation EventSeries EventStatusType EventVenue ExchangeRateSpecification ExerciseAction ExerciseGym ExercisePlan ExhibitionEvent FAQPage FMRadioChannel FastFoodRestaurant Festival FilmAction FinancialIncentive FinancialProduct FinancialService FindAction FireStation Flight FlightReservation Float FloorPlan Florist FollowAction FoodEstablishment FoodEstablishmentReservation FoodEvent FoodService FulfillmentTypeEnumeration FundingAgency FundingScheme FurnitureStore Game GameAvailabilityEnumeration GamePlayMode GameServer GameServerStatus GardenStore GasStation GatedResidenceCommunity GenderType Gene GeneralContractor GeoCircle GeoCoordinates GeoShape GeospatialGeometry Geriatric GiveAction GolfCourse GovernmentBenefitsType GovernmentBuilding GovernmentOffice GovernmentOrganization GovernmentPermit GovernmentService Grant GroceryStore Guide Gynecologic HVACBusiness Hackathon HairSalon HardwareStore HealthAndBeautyBusiness HealthAspectEnumeration HealthClub HealthInsurancePlan HealthPlanCostSharingSpecification HealthPlanFormulary HealthPlanNetwork HealthTopicContent HighSchool HinduTemple HobbyShop HomeAndConstructionBusiness HomeGoodsStore Hospital Hostel Hotel HotelRoom House HousePainter HowTo HowToDirection HowToItem HowToSection HowToStep HowToSupply HowToTip HowToTool HyperToc HyperTocEntry IPTCDigitalSourceEnumeration ITNonprofitType IceCreamShop IgnoreAction ImageGallery ImageObject ImageObjectSnapshot ImagingTest IncentiveQualifiedExpenseType IncentiveStatus IncentiveType IndividualPhysician IndividualProduct InfectiousAgentClass InfectiousDisease InformAction InsertAction InstallAction InstantaneousEvent InsuranceAgency Intangible Integer InteractAction InteractionCounter InternetCafe InvestmentFund InvestmentOrDeposit InviteAction Invoice ItemAvailability ItemList ItemListOrderType ItemPage JewelryStore JobPosting JoinAction Joint LakeBodyOfWater Landform LandmarksOrHistoricalBuildings Language LearningResource LeaveAction LegalForceStatus LegalService LegalValueLevel Legislation LegislationObject LegislativeBuilding LendAction Library LibrarySystem LifestyleModification Ligament LikeAction LinkRole LiquorStore ListItem ListenAction LiteraryEvent LiveBlogPosting LoanOrCredit LocalBusiness LocationFeatureSpecification Locksmith LodgingBusiness LodgingReservation LoginAction LoseAction LymphaticVessel Manuscript Map MapCategoryType MarryAction Mass MathSolver MaximumDoseSchedule MeasurementMethodEnum MeasurementTypeEnumeration MediaEnumeration MediaGallery MediaManipulationRatingEnumeration MediaObject MediaReview MediaReviewItem MediaSubscription MedicalAudience MedicalAudienceType MedicalBusiness MedicalCause MedicalClinic MedicalCode MedicalCondition MedicalConditionStage MedicalContraindication MedicalDevice MedicalDevicePurpose MedicalEntity MedicalEnumeration MedicalEvidenceLevel MedicalGuideline MedicalGuidelineContraindication MedicalGuidelineRecommendation MedicalImagingTechnique MedicalIndication MedicalIntangible MedicalObservationalStudy MedicalObservationalStudyDesign MedicalOrganization MedicalProcedure MedicalProcedureType MedicalRiskCalculator MedicalRiskEstimator MedicalRiskFactor MedicalRiskScore MedicalScholarlyArticle MedicalSign MedicalSignOrSymptom MedicalSpecialty MedicalStudy MedicalStudyStatus MedicalSymptom MedicalTest MedicalTestPanel MedicalTherapy MedicalTrial MedicalTrialDesign MedicalWebPage MedicineSystem MeetingRoom MemberProgram MemberProgramTier MensClothingStore Menu MenuItem MenuSection MerchantReturnEnumeration MerchantReturnPolicy MerchantReturnPolicySeasonalOverride Message MiddleSchool Midwifery MobileApplication MobilePhoneStore MolecularEntity MonetaryAmount MonetaryAmountDistribution MonetaryGrant MoneyTransfer MortgageLoan Mosque Motel Motorcycle MotorcycleDealer MotorcycleRepair MotorizedBicycle Mountain MoveAction Movie MovieClip MovieRentalStore MovieSeries MovieTheater MovingCompany Muscle Museum MusicAlbum MusicAlbumProductionType MusicAlbumReleaseType MusicComposition MusicEvent MusicGroup MusicPlaylist MusicRecording MusicRelease MusicReleaseFormatType MusicStore MusicVenue MusicVideoObject NGO NLNonprofitType NailSalon Nerve NewsArticle NewsMediaOrganization Newspaper NightClub NonprofitType Notary NoteDigitalDocument Number Nursing NutritionInformation Observation Obstetric Occupation OccupationalExperienceRequirements OccupationalTherapy OceanBodyOfWater Offer OfferCatalog OfferForLease OfferForPurchase OfferItemCondition OfferShippingDetails OfficeEquipmentStore OnDemandEvent Oncologic OnlineBusiness OnlineMarketplace OnlineStore OpeningHoursSpecification OperatingSystem OpinionNewsArticle Optician Optometric Order OrderAction OrderItem OrderStatus Organization OrganizationRole OrganizeAction Otolaryngologic OutletStore OwnershipInfo PaintAction Painting PalliativeProcedure ParcelDelivery ParentAudience Park ParkingFacility PathologyTest Patient PawnShop PayAction PaymentCard PaymentChargeSpecification PaymentMethod PaymentMethodType PaymentService PaymentStatusType Pediatric PeopleAudience PerformAction PerformanceRole PerformingArtsEvent PerformingArtsTheater PerformingGroup Periodical Permit Person PetStore Pharmacy Photograph PhotographAction PhysicalActivity PhysicalActivityCategory PhysicalExam PhysicalTherapy Physician PhysiciansOffice Physiotherapy Place PlaceOfWorship PlanAction PlasticSurgery Play PlayAction PlayGameAction Playground Plumber PodcastEpisode PodcastSeason PodcastSeries Podiatric PoliceStation PoliticalParty Pond PostOffice PostalAddress PostalCodeRangeSpecification Poster PreOrderAction PrependAction Preschool PresentationDigitalDocument PreventionIndication PriceComponentTypeEnumeration PriceSpecification PriceTypeEnumeration PrimaryCare Product ProductCollection ProductGroup ProductModel ProductReturnEnumeration ProductReturnPolicy ProfessionalService ProfilePage ProgramMembership Project PronounceableText Property PropertyValue PropertyValueSpecification Protein Psychiatric PsychologicalTreatment PublicHealth PublicSwimmingPool PublicToilet PublicationEvent PublicationIssue PublicationVolume PurchaseType QAPage QualitativeValue QuantitativeValue QuantitativeValueDistribution Quantity Question Quiz Quotation QuoteAction RVPark RadiationTherapy RadioBroadcastService RadioChannel RadioClip RadioEpisode RadioSeason RadioSeries RadioStation Rating ReactAction ReadAction RealEstateAgent RealEstateListing ReceiveAction Recipe Recommendation RecommendedDoseSchedule RecyclingCenter RefundTypeEnumeration RegisterAction RejectAction RentAction RentalCarReservation RepaymentSpecification ReplaceAction ReplyAction Report ReportageNewsArticle ReportedDoseSchedule ResearchOrganization ResearchProject Researcher Reservation ReservationPackage ReservationStatusType ReserveAction Reservoir ResetPasswordAction Residence Resort RespiratoryTherapy Restaurant RestrictedDiet ResumeAction ReturnAction ReturnFeesEnumeration ReturnLabelSourceEnumeration ReturnMethodEnumeration Review ReviewAction ReviewNewsArticle RiverBodyOfWater Role RoofingContractor Room RsvpAction RsvpResponseType RuntimePlatform SaleEvent SatiricalArticle Schedule ScheduleAction ScholarlyArticle School SchoolDistrict ScreeningEvent Sculpture SeaBodyOfWater SearchAction SearchRescueOrganization SearchResultsPage Season Seat SeekToAction SelfStorage SellAction SendAction SequentialArt Series Service ServiceChannel ServicePeriod ShareAction SheetMusic ShippingConditions ShippingDeliveryTime ShippingRateSettings ShippingService ShoeStore ShoppingCenter ShortStory SingleFamilyResidence SiteNavigationElement SizeGroupEnumeration SizeSpecification SizeSystemEnumeration SkiResort SocialEvent SocialMediaPosting SoftwareApplication SoftwareSourceCode SolveMathAction SomeProducts SpeakableSpecification SpecialAnnouncement Specialty SportingGoodsStore SportsActivityLocation SportsClub SportsEvent SportsOrganization SportsTeam SpreadsheetDigitalDocument StadiumOrArena State Statement StatisticalPopulation StatisticalVariable StatusEnumeration SteeringPositionValue Store StructuredValue StupidType SubscribeAction Substance SubwayStation Suite SuperficialAnatomy SurgicalProcedure SuspendAction Syllabus Synagogue TVClip TVEpisode TVSeason TVSeries Table TakeAction TattooParlor Taxi TaxiReservation TaxiService TaxiStand Taxon TechArticle TelevisionChannel TelevisionStation TennisComplex Text TextDigitalDocument TextObject TheaterEvent TheaterGroup TherapeuticProcedure Thesis Thing Ticket TieAction TierBenefitEnumeration Time TipAction TireShop TouristAttraction TouristDestination TouristInformationCenter TouristTrip ToyStore TrackAction TradeAction TrainReservation TrainStation TrainTrip TransferAction TravelAction TravelAgency TreatmentIndication Trip TypeAndQuantityNode UKNonprofitType URL USNonprofitType UnRegisterAction UnitPriceSpecification UpdateAction UseAction UserBlocks UserCheckins UserComments UserDownloads UserInteraction UserLikes UserPageVisits UserPlays UserPlusOnes UserReview UserTweets VacationRental Vehicle Vein Vessel VeterinaryCare VideoGallery VideoGame VideoGameClip VideoGameSeries VideoObject VideoObjectSnapshot ViewAction VirtualLocation VisualArtsEvent VisualArtwork VitalSign Volcano VoteAction WPAdBlock WPFooter WPHeader WPSideBar WantAction WarrantyPromise WarrantyScope WatchAction Waterfall WearAction WearableMeasurementTypeEnumeration WearableSizeGroupEnumeration WearableSizeSystemEnumeration WebAPI WebApplication WebContent WebPage WebPageElement WebSite WholesaleStore WinAction Winery WorkBasedProgram WorkersUnion WriteAction XPathType Zoo iflastandards_info_ns_lrm_lrmoo_F31_Performance purl_bioontology_org_ontology_SNOMEDCT_105590001 purl_bioontology_org_ontology_SNOMEDCT_116154003 purl_bioontology_org_ontology_SNOMEDCT_277132007 purl_bioontology_org_ontology_SNOMEDCT_387713003 purl_bioontology_org_ontology_SNOMEDCT_410942007 purl_bioontology_org_ontology_SNOMEDCT_50731006 purl_bioontology_org_ontology_SNOMEDCT_51114001 purl_bioontology_org_ontology_SNOMEDCT_63653004 purl_org_dc_dcmitype_Dataset purl_org_dc_dcmitype_Event purl_org_dc_dcmitype_Image purl_org_dc_dcmitype_Text purl_org_ontology_bibo_Issue purl_org_ontology_bibo_Periodical rdfs_org_ns_void_Dataset ref_gs1_org_voc_CertificationDetails ref_gs1_org_voc_ContactPoint ref_gs1_org_voc_Country ref_gs1_org_voc_Organization ref_gs1_org_voc_PostalAddress sarif_info_Result spec_edmcouncil_org_fibo_ontology_BE_Corporations_Corporations_Corporation spec_edmcouncil_org_fibo_ontology_BE_LegalEntities_CorporateBodies_CooperativeSociety spec_edmcouncil_org_fibo_ontology_BE_NotForProfitOrganizations_NotForProfitOrganizations_NonGovernmentalOrganization spec_edmcouncil_org_fibo_ontology_FBC_ProductsAndServices_FinancialProductsAndServices_BankAccount spec_edmcouncil_org_fibo_ontology_FBC_ProductsAndServices_FinancialProductsAndServices_PaymentMechanism spec_edmcouncil_org_fibo_ontology_FND_Agreements_Contracts_MutualContractualAgreement spec_edmcouncil_org_fibo_ontology_FND_Arrangements_Documents_Certificate spec_edmcouncil_org_fibo_ontology_FND_Arrangements_Documents_Document spec_edmcouncil_org_fibo_ontology_FND_Arrangements_Documents_LegalDocument spec_edmcouncil_org_fibo_ontology_FND_DatesAndTimes_Occurrences_Occurrence spec_edmcouncil_org_fibo_ontology_FND_Organizations_Organizations_ContactPoint spec_edmcouncil_org_fibo_ontology_FND_Organizations_Organizations_Organization spec_edmcouncil_org_fibo_ontology_FND_Places_Addresses_PostalAddress spec_edmcouncil_org_fibo_ontology_FND_Places_Locations_Municipality spec_edmcouncil_org_fibo_ontology_FND_ProductsAndServices_ProductsAndServices_Offer spec_edmcouncil_org_fibo_ontology_FND_ProductsAndServices_ProductsAndServices_Price spec_edmcouncil_org_fibo_ontology_FND_ProductsAndServices_ProductsAndServices_Product spec_edmcouncil_org_fibo_ontology_PAY_PaymentServices_PaymentServices_PaymentService unece_org_vocab_AmountType unece_org_vocab_BrandName unece_org_vocab_Country unece_org_vocab_ElectronicDocument unece_org_vocab_FinancialCard unece_org_vocab_GeographicalCoordinate unece_org_vocab_Invoice unece_org_vocab_LineTradeAgreement unece_org_vocab_Offer unece_org_vocab_Order unece_org_vocab_PaymentMeans unece_org_vocab_RequestForQuotation unece_org_vocab_SpecifiedCertificate unece_org_vocab_SpecifiedTradeProduct unece_org_vocab_TradeAddress unece_org_vocab_TradeProduct unece_org_vocab_TransportMethod www_omg_org_spec_Commons_Classifiers_Classifier www_omg_org_spec_Commons_Collections_Collection www_omg_org_spec_Commons_DatesAndTimes_Date www_omg_org_spec_Commons_DatesAndTimes_DateTime www_omg_org_spec_Commons_DatesAndTimes_Duration www_omg_org_spec_Commons_GeopoliticalEntities_GeopoliticalEntity www_omg_org_spec_Commons_GeopoliticalEntities_Subdivision www_omg_org_spec_Commons_Locations_Address www_omg_org_spec_Commons_Locations_GeographicCoordinate www_omg_org_spec_Commons_Locations_Location www_omg_org_spec_LCC_Countries_CountryRepresentation_Continent www_omg_org_spec_LCC_Countries_CountryRepresentation_Country www_w3_org_2006_vcard_ns_VCard www_w3_org_ns_dcat_Catalog www_w3_org_ns_dcat_Dataset www_w3_org_ns_dcat_Distribution www_w3_org_ns_hydra_core_Error www_w3_org_ns_prov_InstantaneousEvent www_w3_org_ns_prov_atTime xmlns_com_foaf_0_1_Person".split(" "));
|
|
1638
|
-
|
|
1639
|
-
//#region src/rules/seo/json-ld-validity.ts
|
|
1806
|
+
const SCHEMA_ORG_TYPES = new Set("3DModel AMRadioChannel APIReference AboutPage AcceptAction Accommodation AccountingService AchieveAction Action ActionAccessSpecification ActionStatusType ActivateAction AddAction AdministrativeArea AdultEntertainment AdultOrientedEnumeration AdvertiserContentArticle AggregateOffer AggregateRating AgreeAction Airline Airport AlignmentObject AllocateAction AmpStory AmusementPark AnalysisNewsArticle AnatomicalStructure AnatomicalSystem AnimalShelter Answer Apartment ApartmentComplex AppendAction ApplyAction ApprovedIndication Aquarium ArchiveComponent ArchiveOrganization ArriveAction ArtGallery Artery Article AskAction AskPublicNewsArticle AssessAction AssignAction Atlas Attorney Audience AudioObject AudioObjectSnapshot Audiobook Audiology AuthenticateAction AuthorizeAction AutoBodyShop AutoDealer AutoPartsStore AutoRental AutoRepair AutoWash AutomatedTeller AutomotiveBusiness BackgroundNewsArticle Bakery BankAccount BankOrCreditUnion BarOrPub Barcode Beach BeautySalon BedAndBreakfast BedDetails BedType BefriendAction BikeStore BioChemEntity Blog BlogPosting BloodTest BoardingPolicyType BoatReservation BoatTerminal BoatTrip BodyMeasurementTypeEnumeration BodyOfWater Bone Book BookFormatType BookSeries BookStore BookmarkAction Boolean BorrowAction BowlingAlley BrainStructure Brand BreadcrumbList Brewery Bridge BroadcastChannel BroadcastEvent BroadcastFrequencySpecification BroadcastService BrokerageAccount BuddhistTemple BusOrCoach BusReservation BusStation BusStop BusTrip BusinessAudience BusinessEntityType BusinessEvent BusinessFunction BuyAction CDCPMDRecord CableOrSatelliteService CafeOrCoffeeShop Campground CampingPitch Canal CancelAction Car CarUsageType Casino CategoryCode CategoryCodeSet CatholicChurch Cemetery Certification CertificationStatusEnumeration Chapter CheckAction CheckInAction CheckOutAction CheckoutPage ChemicalSubstance ChildCare ChildrensEvent ChooseAction Church City CityHall CivicStructure Claim ClaimReview Class Clip ClothingStore Code Collection CollectionPage CollegeOrUniversity ComedyClub ComedyEvent ComicCoverArt ComicIssue ComicSeries ComicStory Comment CommentAction CommunicateAction CommunityHealth CompleteDataFeed CompoundPriceSpecification ComputerLanguage ComputerStore ConferenceEvent ConfirmAction Consortium ConstraintNode ConsumeAction ContactPage ContactPoint ContactPointOption Continent ControlAction ConvenienceStore Conversation CookAction Cooperative Corporation CorrectionComment Country Course CourseInstance Courthouse CoverArt CovidTestingFacility CreateAction CreativeWork CreativeWorkSeason CreativeWorkSeries Credential CreditCard Crematorium CriticReview CssSelectorType CurrencyConversionService DDxElement DENonprofitType DanceEvent DanceGroup DataCatalog DataDownload DataFeed DataFeedItem DataType Dataset Date DateTime DatedMoneySpecification DayOfWeek DaySpa DeactivateAction DeclarationOfConformity DefenceEstablishment DefinedRegion DefinedTerm DefinedTermSet DeleteAction DeliveryChargeSpecification DeliveryEvent DeliveryMethod DeliveryTimeSettings Demand Dentist DepartAction DepartmentStore DepositAccount Dermatology DiagnosticLab DiagnosticProcedure Diet DietNutrition DietarySupplement DigitalDocument DigitalDocumentPermission DigitalDocumentPermissionType DigitalPlatformEnumeration DigitalProductPassport DisagreeAction DiscoverAction DiscussionForumPosting DislikeAction Distance Distillery DonateAction DoseSchedule DownloadAction DrawAction Drawing DrinkAction DriveWheelConfigurationValue Drug DrugClass DrugCost DrugCostCategory DrugLegalStatus DrugPregnancyCategory DrugPrescriptionStatus DrugStrength DryCleaningOrLaundry Duration EUEnergyEfficiencyEnumeration EatAction EducationEvent EducationalAudience EducationalOccupationalCredential EducationalOccupationalProgram EducationalOrganization Electrician ElectronicsStore ElementarySchool EmailMessage Embassy Emergency EmergencyService EmployeeRole EmployerAggregateRating EmployerReview EmploymentAgency EndorseAction EndorsementRating Energy EnergyConsumptionDetails EnergyEfficiencyEnumeration EnergyStarEnergyEfficiencyEnumeration EngineSpecification EntertainmentBusiness EntryPoint Enumeration EnvironmentalProductDeclaration Episode Error Event EventAttendanceModeEnumeration EventReservation EventSeries EventStatusType EventVenue ExchangeRateSpecification ExerciseAction ExerciseGym ExercisePlan ExhibitionEvent FAQPage FMRadioChannel FastFoodRestaurant Festival FilmAction FinancialIncentive FinancialProduct FinancialService FindAction FireStation Flight FlightReservation Float FloorPlan Florist FollowAction FoodEstablishment FoodEstablishmentReservation FoodEvent FoodService FulfillmentTypeEnumeration FundingAgency FundingScheme FurnitureStore Game GameAvailabilityEnumeration GamePlayMode GameServer GameServerStatus GardenStore GasStation GatedResidenceCommunity GenderType Gene GeneralContractor GeoCircle GeoCoordinates GeoShape GeospatialGeometry Geriatric GiveAction GolfCourse GovernmentBenefitsType GovernmentBuilding GovernmentOffice GovernmentOrganization GovernmentPermit GovernmentService Grant GroceryStore Guide Gynecologic HVACBusiness Hackathon HairSalon HardwareStore HealthAndBeautyBusiness HealthAspectEnumeration HealthClub HealthInsurancePlan HealthPlanCostSharingSpecification HealthPlanFormulary HealthPlanNetwork HealthTopicContent HighSchool HinduTemple HobbyShop HomeAndConstructionBusiness HomeGoodsStore Hospital Hostel Hotel HotelRoom House HousePainter HowTo HowToDirection HowToItem HowToSection HowToStep HowToSupply HowToTip HowToTool HyperToc HyperTocEntry IPTCDigitalSourceEnumeration ITNonprofitType IceCreamShop IgnoreAction ImageGallery ImageObject ImageObjectSnapshot ImagingTest IncentiveQualifiedExpenseType IncentiveStatus IncentiveType IndividualPhysician IndividualProduct InfectiousAgentClass InfectiousDisease InformAction InsertAction InstallAction InstantaneousEvent InsuranceAgency Intangible Integer InteractAction InteractionCounter InternetCafe InvestmentFund InvestmentOrDeposit InviteAction Invoice ItemAvailability ItemList ItemListOrderType ItemPage JewelryStore JobPosting JoinAction Joint LakeBodyOfWater Landform LandmarksOrHistoricalBuildings Language LearningResource LeaveAction LegalForceStatus LegalService LegalValueLevel Legislation LegislationObject LegislativeBuilding LendAction Library LibrarySystem LifestyleModification Ligament LikeAction LinkRole LiquorStore ListItem ListenAction LiteraryEvent LiveBlogPosting LoanOrCredit LocalBusiness LocationFeatureSpecification Locksmith LodgingBusiness LodgingReservation LoginAction LoseAction LymphaticVessel Manuscript Map MapCategoryType MarryAction Mass MathSolver MaximumDoseSchedule MeasurementMethodEnum MeasurementTypeEnumeration MediaEnumeration MediaGallery MediaManipulationRatingEnumeration MediaObject MediaReview MediaReviewItem MediaSubscription MedicalAudience MedicalAudienceType MedicalBusiness MedicalCause MedicalClinic MedicalCode MedicalCondition MedicalConditionStage MedicalContraindication MedicalDevice MedicalDevicePurpose MedicalEntity MedicalEnumeration MedicalEvidenceLevel MedicalGuideline MedicalGuidelineContraindication MedicalGuidelineRecommendation MedicalImagingTechnique MedicalIndication MedicalIntangible MedicalObservationalStudy MedicalObservationalStudyDesign MedicalOrganization MedicalProcedure MedicalProcedureType MedicalRiskCalculator MedicalRiskEstimator MedicalRiskFactor MedicalRiskScore MedicalScholarlyArticle MedicalSign MedicalSignOrSymptom MedicalSpecialty MedicalStudy MedicalStudyStatus MedicalSymptom MedicalTest MedicalTestPanel MedicalTherapy MedicalTrial MedicalTrialDesign MedicalWebPage MedicineSystem MeetingRoom MemberProgram MemberProgramTier MensClothingStore Menu MenuItem MenuSection MerchantReturnEnumeration MerchantReturnPolicy MerchantReturnPolicySeasonalOverride Message MiddleSchool Midwifery MobileApplication MobilePhoneStore MolecularEntity MonetaryAmount MonetaryAmountDistribution MonetaryGrant MoneyTransfer MortgageLoan Mosque Motel Motorcycle MotorcycleDealer MotorcycleRepair MotorizedBicycle Mountain MoveAction Movie MovieClip MovieRentalStore MovieSeries MovieTheater MovingCompany Muscle Museum MusicAlbum MusicAlbumProductionType MusicAlbumReleaseType MusicComposition MusicEvent MusicGroup MusicPlaylist MusicRecording MusicRelease MusicReleaseFormatType MusicStore MusicVenue MusicVideoObject NGO NLNonprofitType NailSalon Nerve NewsArticle NewsMediaOrganization Newspaper NightClub NonprofitType Notary NoteDigitalDocument Number Nursing NutritionInformation Observation Obstetric Occupation OccupationalExperienceRequirements OccupationalTherapy OceanBodyOfWater Offer OfferCatalog OfferForLease OfferForPurchase OfferItemCondition OfferShippingDetails OfficeEquipmentStore OnDemandEvent Oncologic OnlineBusiness OnlineMarketplace OnlineStore OpeningHoursSpecification OperatingSystem Ophthalmology OpinionNewsArticle Optician Optometric Order OrderAction OrderItem OrderStatus Organization OrganizationRole OrganizeAction Otolaryngologic OutletStore OwnershipInfo PaintAction Painting PalliativeProcedure ParcelDelivery ParentAudience Park ParkingFacility PathologyTest Patient PawnShop PayAction PaymentCard PaymentChargeSpecification PaymentMethod PaymentMethodType PaymentService PaymentStatusType Pediatric PeopleAudience PerformAction PerformanceRole PerformingArtsEvent PerformingArtsTheater PerformingGroup Periodical Permit Person PetStore Pharmacy Photograph PhotographAction PhysicalActivity PhysicalActivityCategory PhysicalExam PhysicalTherapy Physician PhysiciansOffice Physiotherapy Place PlaceOfWorship PlanAction PlasticSurgery Play PlayAction PlayGameAction Playground Plumber PodcastEpisode PodcastSeason PodcastSeries Podiatric PoliceStation PoliticalParty Pond PostOffice PostalAddress PostalCodeRangeSpecification Poster PreOrderAction PrependAction Preschool PresentationDigitalDocument PreventionIndication PriceComponentTypeEnumeration PriceSpecification PriceTypeEnumeration PrimaryCare Product ProductCollection ProductGroup ProductModel ProductReturnEnumeration ProductReturnPolicy ProfessionalService ProfilePage ProgramMembership Project PronounceableText Property PropertyValue PropertyValueSpecification Protein Psychiatric PsychologicalTreatment PublicHealth PublicSwimmingPool PublicToilet PublicationEvent PublicationIssue PublicationVolume PurchaseType QAPage QualitativeValue QuantitativeValue QuantitativeValueDistribution Quantity Question Quiz Quotation QuoteAction RVPark RadiationTherapy RadioBroadcastService RadioChannel RadioClip RadioEpisode RadioSeason RadioSeries RadioStation Rating ReactAction ReadAction RealEstateAgent RealEstateListing ReceiveAction Recipe Recommendation RecommendedDoseSchedule RecyclingCenter RefundTypeEnumeration RegisterAction RejectAction RentAction RentalCarReservation RepaymentSpecification ReplaceAction ReplyAction Report ReportageNewsArticle ReportedDoseSchedule ResearchOrganization ResearchProject Researcher Reservation ReservationPackage ReservationStatusType ReserveAction Reservoir ResetPasswordAction Residence Resort RespiratoryTherapy Restaurant RestrictedDiet ResumeAction ReturnAction ReturnFeesEnumeration ReturnLabelSourceEnumeration ReturnMethodEnumeration Review ReviewAction ReviewNewsArticle RiverBodyOfWater Role RoofingContractor Room RsvpAction RsvpResponseType RuntimePlatform SaleEvent SatiricalArticle Schedule ScheduleAction ScholarlyArticle School SchoolDistrict ScreeningEvent Sculpture SeaBodyOfWater SearchAction SearchRescueOrganization SearchResultsPage Season Seat SeekToAction SelfStorage SellAction SendAction SequentialArt Series Service ServiceChannel ServicePeriod ShareAction SheetMusic ShippingConditions ShippingDeliveryTime ShippingRateSettings ShippingService ShoeStore ShoppingCenter ShortStory SingleFamilyResidence SiteNavigationElement SizeGroupEnumeration SizeSpecification SizeSystemEnumeration SkiResort SocialEvent SocialMediaPosting SoftwareApplication SoftwareSourceCode SolveMathAction SomeProducts SpeakableSpecification SpecialAnnouncement Specialty SportingGoodsStore SportsActivityLocation SportsClub SportsEvent SportsOrganization SportsTeam SpreadsheetDigitalDocument StadiumOrArena State Statement StatisticalPopulation StatisticalVariable StatusEnumeration SteeringPositionValue Store StructuredValue StupidType SubscribeAction Substance SubwayStation Suite SuperficialAnatomy SurgicalProcedure SuspendAction Syllabus Synagogue TVClip TVEpisode TVSeason TVSeries Table TakeAction TattooParlor Taxi TaxiReservation TaxiService TaxiStand Taxon TechArticle TelevisionChannel TelevisionStation TennisComplex Text TextDigitalDocument TextObject TheaterEvent TheaterGroup TherapeuticProcedure Thesis Thing Ticket TieAction TierBenefitEnumeration Time TipAction TireShop TouristAttraction TouristDestination TouristInformationCenter TouristTrip ToyStore TrackAction TradeAction TrainReservation TrainStation TrainTrip TransferAction TravelAction TravelAgency TreatmentIndication Trip TypeAndQuantityNode UKNonprofitType URL USNonprofitType UnRegisterAction UnitPriceSpecification UpdateAction UseAction UserBlocks UserCheckins UserComments UserDownloads UserInteraction UserLikes UserPageVisits UserPlays UserPlusOnes UserReview UserTweets VacationRental Vehicle Vein Vessel VeterinaryCare VideoGallery VideoGame VideoGameClip VideoGameSeries VideoObject VideoObjectSnapshot ViewAction VirtualLocation VisualArtsEvent VisualArtwork VitalSign Volcano VoteAction WPAdBlock WPFooter WPHeader WPSideBar WantAction WarrantyPromise WarrantyScope WatchAction Waterfall WearAction WearableMeasurementTypeEnumeration WearableSizeGroupEnumeration WearableSizeSystemEnumeration WebAPI WebApplication WebContent WebPage WebPageElement WebSite WholesaleStore WinAction Winery WorkBasedProgram WorkersUnion WriteAction XPathType Zoo iflastandards_info_ns_lrm_lrmoo_F31_Performance purl_bioontology_org_ontology_SNOMEDCT_105590001 purl_bioontology_org_ontology_SNOMEDCT_116154003 purl_bioontology_org_ontology_SNOMEDCT_277132007 purl_bioontology_org_ontology_SNOMEDCT_387713003 purl_bioontology_org_ontology_SNOMEDCT_410942007 purl_bioontology_org_ontology_SNOMEDCT_50731006 purl_bioontology_org_ontology_SNOMEDCT_51114001 purl_bioontology_org_ontology_SNOMEDCT_63653004 purl_org_dc_dcmitype_Dataset purl_org_dc_dcmitype_Event purl_org_dc_dcmitype_Image purl_org_dc_dcmitype_Text purl_org_ontology_bibo_Issue purl_org_ontology_bibo_Periodical rdfs_org_ns_void_Dataset ref_gs1_org_voc_CertificationDetails ref_gs1_org_voc_ContactPoint ref_gs1_org_voc_Country ref_gs1_org_voc_Organization ref_gs1_org_voc_PostalAddress sarif_info_Result spec_edmcouncil_org_fibo_ontology_BE_Corporations_Corporations_Corporation spec_edmcouncil_org_fibo_ontology_BE_LegalEntities_CorporateBodies_CooperativeSociety spec_edmcouncil_org_fibo_ontology_BE_NotForProfitOrganizations_NotForProfitOrganizations_NonGovernmentalOrganization spec_edmcouncil_org_fibo_ontology_FBC_ProductsAndServices_FinancialProductsAndServices_BankAccount spec_edmcouncil_org_fibo_ontology_FBC_ProductsAndServices_FinancialProductsAndServices_PaymentMechanism spec_edmcouncil_org_fibo_ontology_FND_Agreements_Contracts_MutualContractualAgreement spec_edmcouncil_org_fibo_ontology_FND_Arrangements_Documents_Certificate spec_edmcouncil_org_fibo_ontology_FND_Arrangements_Documents_Document spec_edmcouncil_org_fibo_ontology_FND_Arrangements_Documents_LegalDocument spec_edmcouncil_org_fibo_ontology_FND_DatesAndTimes_Occurrences_Occurrence spec_edmcouncil_org_fibo_ontology_FND_Organizations_Organizations_ContactPoint spec_edmcouncil_org_fibo_ontology_FND_Organizations_Organizations_Organization spec_edmcouncil_org_fibo_ontology_FND_Places_Addresses_PostalAddress spec_edmcouncil_org_fibo_ontology_FND_Places_Locations_Municipality spec_edmcouncil_org_fibo_ontology_FND_ProductsAndServices_ProductsAndServices_Offer spec_edmcouncil_org_fibo_ontology_FND_ProductsAndServices_ProductsAndServices_Price spec_edmcouncil_org_fibo_ontology_FND_ProductsAndServices_ProductsAndServices_Product spec_edmcouncil_org_fibo_ontology_PAY_PaymentServices_PaymentServices_PaymentService unece_org_vocab_AmountType unece_org_vocab_BrandName unece_org_vocab_Country unece_org_vocab_ElectronicDocument unece_org_vocab_FinancialCard unece_org_vocab_GeographicalCoordinate unece_org_vocab_Invoice unece_org_vocab_LineTradeAgreement unece_org_vocab_Offer unece_org_vocab_Order unece_org_vocab_PaymentMeans unece_org_vocab_RequestForQuotation unece_org_vocab_SpecifiedCertificate unece_org_vocab_SpecifiedTradeProduct unece_org_vocab_TradeAddress unece_org_vocab_TradeProduct unece_org_vocab_TransportMethod www_omg_org_spec_Commons_Classifiers_Classifier www_omg_org_spec_Commons_Collections_Collection www_omg_org_spec_Commons_DatesAndTimes_Date www_omg_org_spec_Commons_DatesAndTimes_DateTime www_omg_org_spec_Commons_DatesAndTimes_Duration www_omg_org_spec_Commons_GeopoliticalEntities_GeopoliticalEntity www_omg_org_spec_Commons_GeopoliticalEntities_Subdivision www_omg_org_spec_Commons_Locations_Address www_omg_org_spec_Commons_Locations_GeographicCoordinate www_omg_org_spec_Commons_Locations_Location www_omg_org_spec_LCC_Countries_CountryRepresentation_Continent www_omg_org_spec_LCC_Countries_CountryRepresentation_Country www_w3_org_2006_vcard_ns_VCard www_w3_org_ns_dcat_Catalog www_w3_org_ns_dcat_Dataset www_w3_org_ns_dcat_Distribution www_w3_org_ns_hydra_core_Error www_w3_org_ns_prov_InstantaneousEvent www_w3_org_ns_prov_atTime xmlns_com_foaf_0_1_Person".split(" "));
|
|
1807
|
+
// src/rules/seo/json-ld-validity.ts
|
|
1640
1808
|
const SCHEMA_ORG_CONTEXT_RE = /^https?:\/\/schema\.org\/?$/;
|
|
1641
1809
|
/** Lowercase name -> canonical catalog name, for the case-insensitive "did you mean" hint. */
|
|
1642
1810
|
const LOWERCASE_TO_CANONICAL = new Map([...SCHEMA_ORG_TYPES].map((name) => [name.toLowerCase(), name]));
|
|
@@ -1784,8 +1952,7 @@ const seoJsonLdValidity = {
|
|
|
1784
1952
|
return out;
|
|
1785
1953
|
}
|
|
1786
1954
|
};
|
|
1787
|
-
|
|
1788
|
-
//#region src/rules/seo/json-ld-deprecated-type.ts
|
|
1955
|
+
// src/rules/seo/json-ld-deprecated-type.ts
|
|
1789
1956
|
const seoJsonLdDeprecatedType = jsonldRule({
|
|
1790
1957
|
id: "seo/json-ld-deprecated-type",
|
|
1791
1958
|
title: "Deprecated structured-data type",
|
|
@@ -1798,8 +1965,7 @@ const seoJsonLdDeprecatedType = jsonldRule({
|
|
|
1798
1965
|
return dep ? `@type "${dep}" no longer reliably produces a Google rich result` : void 0;
|
|
1799
1966
|
}
|
|
1800
1967
|
});
|
|
1801
|
-
|
|
1802
|
-
//#region src/rules/seo/json-ld-relative-url.ts
|
|
1968
|
+
// src/rules/seo/json-ld-relative-url.ts
|
|
1803
1969
|
const seoJsonLdRelativeUrl = jsonldRule({
|
|
1804
1970
|
id: "seo/json-ld-relative-url",
|
|
1805
1971
|
title: "JSON-LD relative URL",
|
|
@@ -1817,8 +1983,7 @@ const seoJsonLdRelativeUrl = jsonldRule({
|
|
|
1817
1983
|
return bad ? `Relative URL in JSON-LD: "${bad}" — use an absolute URL` : void 0;
|
|
1818
1984
|
}
|
|
1819
1985
|
});
|
|
1820
|
-
|
|
1821
|
-
//#region src/rules/seo/json-ld-date-format.ts
|
|
1986
|
+
// src/rules/seo/json-ld-date-format.ts
|
|
1822
1987
|
const seoJsonLdDateFormat = jsonldRule({
|
|
1823
1988
|
id: "seo/json-ld-date-format",
|
|
1824
1989
|
title: "JSON-LD date format",
|
|
@@ -1836,8 +2001,7 @@ const seoJsonLdDateFormat = jsonldRule({
|
|
|
1836
2001
|
return bad ? `Non-ISO-8601 date in JSON-LD: "${bad}"` : void 0;
|
|
1837
2002
|
}
|
|
1838
2003
|
});
|
|
1839
|
-
|
|
1840
|
-
//#region src/rules/seo/json-ld-placeholder.ts
|
|
2004
|
+
// src/rules/seo/json-ld-placeholder.ts
|
|
1841
2005
|
const seoJsonLdPlaceholder = jsonldRule({
|
|
1842
2006
|
id: "seo/json-ld-placeholder",
|
|
1843
2007
|
title: "JSON-LD placeholder text",
|
|
@@ -1850,8 +2014,7 @@ const seoJsonLdPlaceholder = jsonldRule({
|
|
|
1850
2014
|
return bad ? `Placeholder text in JSON-LD: "${bad}"` : void 0;
|
|
1851
2015
|
}
|
|
1852
2016
|
});
|
|
1853
|
-
|
|
1854
|
-
//#region src/rules/seo/json-ld-required-props.ts
|
|
2017
|
+
// src/rules/seo/json-ld-required-props.ts
|
|
1855
2018
|
const seoJsonLdRequiredProps = jsonldRule({
|
|
1856
2019
|
id: "seo/json-ld-required-props",
|
|
1857
2020
|
title: "JSON-LD required properties",
|
|
@@ -1871,8 +2034,7 @@ const seoJsonLdRequiredProps = jsonldRule({
|
|
|
1871
2034
|
return hasKnownType ? void 0 : false;
|
|
1872
2035
|
}
|
|
1873
2036
|
});
|
|
1874
|
-
|
|
1875
|
-
//#region src/rules/seo/text-metrics.ts
|
|
2037
|
+
// src/rules/seo/text-metrics.ts
|
|
1876
2038
|
const segmenter = new Intl.Segmenter();
|
|
1877
2039
|
/**
|
|
1878
2040
|
* Trim and collapse internal whitespace runs to a single space — the canonical
|
|
@@ -1890,8 +2052,7 @@ function collapseWhitespace(s) {
|
|
|
1890
2052
|
function visibleLength(s) {
|
|
1891
2053
|
return [...segmenter.segment(collapseWhitespace(s))].length;
|
|
1892
2054
|
}
|
|
1893
|
-
|
|
1894
|
-
//#region src/rules/seo/length-rule.ts
|
|
2055
|
+
// src/rules/seo/length-rule.ts
|
|
1895
2056
|
/** Build a route-scoped length rule that runs only on a static (captured) title/description text. */
|
|
1896
2057
|
function lengthRule(opts) {
|
|
1897
2058
|
const docsUrl = docsUrlFor(opts.id);
|
|
@@ -1959,8 +2120,7 @@ function lengthRule(opts) {
|
|
|
1959
2120
|
}
|
|
1960
2121
|
};
|
|
1961
2122
|
}
|
|
1962
|
-
|
|
1963
|
-
//#region src/rules/seo/title-length.ts
|
|
2123
|
+
// src/rules/seo/title-length.ts
|
|
1964
2124
|
const MIN$1 = 30;
|
|
1965
2125
|
const MAX$1 = 60;
|
|
1966
2126
|
const seoTitleLength = lengthRule({
|
|
@@ -1974,8 +2134,7 @@ const seoTitleLength = lengthRule({
|
|
|
1974
2134
|
recommendation: (o) => `Aim for a title of ${intOption(o, "min", MIN$1)}–${intOption(o, "max", MAX$1)} characters so it is not truncated in search results.`,
|
|
1975
2135
|
rationale: "A title that is too short wastes the strongest on-page signal; one that is too long is truncated in the SERP."
|
|
1976
2136
|
});
|
|
1977
|
-
|
|
1978
|
-
//#region src/rules/seo/description-length.ts
|
|
2137
|
+
// src/rules/seo/description-length.ts
|
|
1979
2138
|
const MIN = 70;
|
|
1980
2139
|
const MAX = 160;
|
|
1981
2140
|
const seoDescriptionLength = lengthRule({
|
|
@@ -1989,8 +2148,7 @@ const seoDescriptionLength = lengthRule({
|
|
|
1989
2148
|
recommendation: (o) => `Aim for a meta description of ${intOption(o, "min", MIN)}–${intOption(o, "max", MAX)} characters so it is not truncated in search results.`,
|
|
1990
2149
|
rationale: "A description that is too short under-uses the SERP snippet; one that is too long is truncated by search engines."
|
|
1991
2150
|
});
|
|
1992
|
-
|
|
1993
|
-
//#region src/rules/seo/charset.ts
|
|
2151
|
+
// src/rules/seo/charset.ts
|
|
1994
2152
|
/**
|
|
1995
2153
|
* seo/charset — Character encoding. The charset meta lives in `src/app.html`, so it is
|
|
1996
2154
|
* only visible to rendered analysis (`appliesTo: rendered`), exactly like seo/viewport
|
|
@@ -2011,8 +2169,7 @@ const seoCharset = headTagRule({
|
|
|
2011
2169
|
lang: "html"
|
|
2012
2170
|
}
|
|
2013
2171
|
});
|
|
2014
|
-
|
|
2015
|
-
//#region src/rules/seo/image-alt.ts
|
|
2172
|
+
// src/rules/seo/image-alt.ts
|
|
2016
2173
|
/**
|
|
2017
2174
|
* seo/image-alt — Image alt text. Reuses the <img> collection from both providers — the
|
|
2018
2175
|
* static (CLI) source parser and the rendered (vite) HTML parser — like performance/image-dimensions, performance/image-loading-hint.
|
|
@@ -2034,8 +2191,7 @@ const seoImageAlt = imageRule({
|
|
|
2034
2191
|
},
|
|
2035
2192
|
ok: (img) => img.hasAlt
|
|
2036
2193
|
});
|
|
2037
|
-
|
|
2038
|
-
//#region src/rules/seo/hreflang.ts
|
|
2194
|
+
// src/rules/seo/hreflang.ts
|
|
2039
2195
|
const docsUrl$7 = docsUrlFor("seo/hreflang");
|
|
2040
2196
|
const malformedRecommendation = "Use valid hreflang codes, e.g. \"en\", \"en-US\", or the literal \"x-default\".";
|
|
2041
2197
|
const noDefaultRecommendation = "x-default is a Google recommendation, not a requirement — most useful for a language-selector or auto-redirecting page. Add one if this page behaves that way; otherwise search engines fall back to matching the individual alternates.";
|
|
@@ -2060,7 +2216,7 @@ const seoHreflang = {
|
|
|
2060
2216
|
async check(ctx) {
|
|
2061
2217
|
const out = [];
|
|
2062
2218
|
for (const head of ctx.heads) {
|
|
2063
|
-
const alternates = head.tags.filter((t) => t.kind === "link" && t
|
|
2219
|
+
const alternates = head.tags.filter((t) => t.kind === "link" && hasRel(t, "alternate") && typeof t.hreflang === "string");
|
|
2064
2220
|
if (alternates.length === 0) continue;
|
|
2065
2221
|
const values = alternates.map((t) => t.hreflang);
|
|
2066
2222
|
const badTag = alternates.find((t) => !isValidHreflang(t.hreflang));
|
|
@@ -2101,8 +2257,7 @@ const seoHreflang = {
|
|
|
2101
2257
|
return out;
|
|
2102
2258
|
}
|
|
2103
2259
|
};
|
|
2104
|
-
|
|
2105
|
-
//#region src/rules/a11y/aria-data.ts
|
|
2260
|
+
// src/rules/a11y/aria-data.ts
|
|
2106
2261
|
/**
|
|
2107
2262
|
* ARIA names `aria-query@5.3.2` does not carry. It is not the clean ARIA 1.2 snapshot it looks
|
|
2108
2263
|
* like — it holds 1.2's 48 attributes plus three 1.3 additions — so the gap is patched by name
|
|
@@ -2160,8 +2315,7 @@ function ariaValueKind(name) {
|
|
|
2160
2315
|
...def.values ? { values: def.values.map(String) } : {}
|
|
2161
2316
|
};
|
|
2162
2317
|
}
|
|
2163
|
-
|
|
2164
|
-
//#region src/a11y.ts
|
|
2318
|
+
// src/a11y.ts
|
|
2165
2319
|
/**
|
|
2166
2320
|
* Branch-aware occurrence fold (design "Control-flow semantics"): within a branch
|
|
2167
2321
|
* occurrences sum, across the arms of one exclusive block the arm with the most
|
|
@@ -2318,8 +2472,7 @@ function stripTextDirective(fragment) {
|
|
|
2318
2472
|
const i = fragment.indexOf(":~:");
|
|
2319
2473
|
return i === -1 ? fragment : fragment.slice(0, i);
|
|
2320
2474
|
}
|
|
2321
|
-
|
|
2322
|
-
//#region src/rules/seo/single-h1.ts
|
|
2475
|
+
// src/rules/seo/single-h1.ts
|
|
2323
2476
|
const docsUrl$6 = docsUrlFor("seo/single-h1");
|
|
2324
2477
|
const passRecommendation = "Use exactly one <h1> per page for its main topic; demote extra top-level headings to <h2>+.";
|
|
2325
2478
|
const missingRecommendation = "Add a single, descriptive <h1> naming the page's main topic.";
|
|
@@ -2342,7 +2495,7 @@ const multipleRecommendation = "A single, clear <h1> is the conventional signal
|
|
|
2342
2495
|
* `<svelte:boundary>` contribute only their largest arm. Separate blocks still sum, since both may be true.
|
|
2343
2496
|
*/
|
|
2344
2497
|
function renderableH1s(headings) {
|
|
2345
|
-
const nodes = headings.filter((h) => h.level === 1).map((heading) => ({
|
|
2498
|
+
const nodes = headings.filter((h) => h.level === 1 && !h.aria).map((heading) => ({
|
|
2346
2499
|
key: "h1",
|
|
2347
2500
|
path: heading.path ?? [],
|
|
2348
2501
|
repeatable: false,
|
|
@@ -2371,7 +2524,7 @@ const seoSingleH1 = {
|
|
|
2371
2524
|
severity: "warning",
|
|
2372
2525
|
recommendation: missingRecommendation
|
|
2373
2526
|
};
|
|
2374
|
-
const first = route.headings
|
|
2527
|
+
const first = route.headings.find((h) => !h.aria);
|
|
2375
2528
|
if (first) where = {
|
|
2376
2529
|
location: first.file,
|
|
2377
2530
|
...first.line > 0 ? { line: first.line } : {}
|
|
@@ -2413,8 +2566,7 @@ const seoSingleH1 = {
|
|
|
2413
2566
|
return out;
|
|
2414
2567
|
}
|
|
2415
2568
|
};
|
|
2416
|
-
|
|
2417
|
-
//#region src/rules/seo/uniqueness-rule.ts
|
|
2569
|
+
// src/rules/seo/uniqueness-rule.ts
|
|
2418
2570
|
/**
|
|
2419
2571
|
* Build a route-scoped rule that flags a static title/description duplicated across
|
|
2420
2572
|
* routes. A route-scoped rule still sees every route in `ctx.heads`, so it can
|
|
@@ -2472,8 +2624,7 @@ function uniquenessRule(opts) {
|
|
|
2472
2624
|
}
|
|
2473
2625
|
};
|
|
2474
2626
|
}
|
|
2475
|
-
|
|
2476
|
-
//#region src/rules/seo/duplicate-title.ts
|
|
2627
|
+
// src/rules/seo/duplicate-title.ts
|
|
2477
2628
|
const seoDuplicateTitle = uniquenessRule({
|
|
2478
2629
|
id: "seo/duplicate-title",
|
|
2479
2630
|
title: "Duplicate title",
|
|
@@ -2483,8 +2634,7 @@ const seoDuplicateTitle = uniquenessRule({
|
|
|
2483
2634
|
recommendation: "Give each route a unique <title> that describes that page specifically.",
|
|
2484
2635
|
rationale: "Duplicate titles across pages make them compete in search results and weaken each page’s relevance signal."
|
|
2485
2636
|
});
|
|
2486
|
-
|
|
2487
|
-
//#region src/rules/seo/duplicate-description.ts
|
|
2637
|
+
// src/rules/seo/duplicate-description.ts
|
|
2488
2638
|
const seoDuplicateDescription = uniquenessRule({
|
|
2489
2639
|
id: "seo/duplicate-description",
|
|
2490
2640
|
title: "Duplicate description",
|
|
@@ -2494,16 +2644,22 @@ const seoDuplicateDescription = uniquenessRule({
|
|
|
2494
2644
|
recommendation: "Write a unique meta description per route so each search snippet is page-specific.",
|
|
2495
2645
|
rationale: "Duplicate meta descriptions give search engines no per-page summary, so they are often ignored or rewritten."
|
|
2496
2646
|
});
|
|
2497
|
-
|
|
2498
|
-
|
|
2647
|
+
// src/headings.ts
|
|
2648
|
+
/** Sort comparator for `order`: element by element, a prefix first; headings without one keep their place. */
|
|
2649
|
+
function documentOrder(a, b) {
|
|
2650
|
+
if (!a.order || !b.order) return 0;
|
|
2651
|
+
for (let i = 0; i < Math.min(a.order.length, b.order.length); i++) if (a.order[i] !== b.order[i]) return a.order[i] - b.order[i];
|
|
2652
|
+
return a.order.length - b.order.length;
|
|
2653
|
+
}
|
|
2499
2654
|
/** Two headings can never render together: different arms of one block. */
|
|
2500
2655
|
function exclusiveHeadings(a, b) {
|
|
2501
2656
|
if (!a.path || !b.path) return false;
|
|
2502
2657
|
return a.path.some((s) => b.path.some((t) => s.group === t.group && s.branch !== t.branch));
|
|
2503
2658
|
}
|
|
2504
|
-
|
|
2505
|
-
//#region src/rules/seo/heading-level-skip.ts
|
|
2659
|
+
// src/rules/seo/heading-level-skip.ts
|
|
2506
2660
|
const docsUrl$5 = docsUrlFor("seo/heading-level-skip");
|
|
2661
|
+
/** Every arm `p` sits in that can be skipped, `h` sits in too: whenever `h` renders, so does `p` (or one like it). */
|
|
2662
|
+
const rendersWith = (p, h) => (p.path ?? []).every((s) => s.always || (h.path ?? []).some((t) => t.group === s.group && t.branch === s.branch));
|
|
2507
2663
|
const recommendation$5 = "Increase heading levels one step at a time (do not jump, e.g. from <h2> straight to <h4>).";
|
|
2508
2664
|
/**
|
|
2509
2665
|
* seo/heading-level-skip — Skipped heading level. Walking a route's body headings in
|
|
@@ -2522,13 +2678,33 @@ const seoHeadingLevelSkip = {
|
|
|
2522
2678
|
const out = [];
|
|
2523
2679
|
for (const route of ctx.headings ?? []) {
|
|
2524
2680
|
if (route.headings.length === 0) continue;
|
|
2681
|
+
const placed = (route.componentHeadings ?? []).filter((h) => h.order);
|
|
2682
|
+
const own = new Set(route.headings);
|
|
2683
|
+
const headings = [...route.headings, ...placed].sort(documentOrder);
|
|
2525
2684
|
let skip;
|
|
2526
|
-
for (let i = 1; i <
|
|
2527
|
-
const h =
|
|
2528
|
-
|
|
2529
|
-
|
|
2685
|
+
for (let i = 1; i < headings.length && !skip; i++) {
|
|
2686
|
+
const h = headings[i];
|
|
2687
|
+
if (!own.has(h)) continue;
|
|
2688
|
+
const before = headings.slice(0, i).filter((p) => !exclusiveHeadings(p, h) && (own.has(p) || rendersWith(p, h)));
|
|
2689
|
+
const prev = before.at(-1);
|
|
2690
|
+
if (!prev) continue;
|
|
2691
|
+
const levels = [prev.level];
|
|
2692
|
+
const arms = /* @__PURE__ */ new Set();
|
|
2693
|
+
const looped = prev.path?.some((s) => s.repeat && !h.path?.some((t) => t.group === s.group));
|
|
2694
|
+
for (let j = looped ? -1 : before.length - 2; j >= 0; j--) {
|
|
2695
|
+
const q = before[j];
|
|
2696
|
+
const step = q.path?.find((s) => prev.path?.some((t) => t.group === s.group && t.branch !== s.branch));
|
|
2697
|
+
const arm = step && `${step.group}:${step.branch}`;
|
|
2698
|
+
if (arm && !arms.has(arm)) {
|
|
2699
|
+
arms.add(arm);
|
|
2700
|
+
levels.push(q.level);
|
|
2701
|
+
}
|
|
2702
|
+
}
|
|
2703
|
+
const known = levels.filter((level) => level > 0);
|
|
2704
|
+
const lowest = Math.min(...known);
|
|
2705
|
+
if (known.length === levels.length && h.level > lowest + 1) skip = {
|
|
2530
2706
|
level: h.level,
|
|
2531
|
-
prev:
|
|
2707
|
+
prev: lowest,
|
|
2532
2708
|
line: h.line,
|
|
2533
2709
|
file: h.file
|
|
2534
2710
|
};
|
|
@@ -2559,8 +2735,7 @@ const seoHeadingLevelSkip = {
|
|
|
2559
2735
|
return out;
|
|
2560
2736
|
}
|
|
2561
2737
|
};
|
|
2562
|
-
|
|
2563
|
-
//#region src/rules/component-rule.ts
|
|
2738
|
+
// src/rules/component-rule.ts
|
|
2564
2739
|
/**
|
|
2565
2740
|
* Whether `ruleId`'s finding on `line` is silenced by an inline directive in this file.
|
|
2566
2741
|
* Exported so hand-written rules that also operate on per-file facts
|
|
@@ -2643,8 +2818,7 @@ function componentRule(opts) {
|
|
|
2643
2818
|
facts: (ctx) => ctx.components
|
|
2644
2819
|
});
|
|
2645
2820
|
}
|
|
2646
|
-
|
|
2647
|
-
//#region src/rules/kit-module-rule.ts
|
|
2821
|
+
// src/rules/kit-module-rule.ts
|
|
2648
2822
|
/**
|
|
2649
2823
|
* Build a Kit-module-scoped rule (the security kit-module rules, seo/ssr-disabled) over
|
|
2650
2824
|
* `ctx.kitModules` — `componentRule`'s engine over a different fact source, minus rule
|
|
@@ -2660,95 +2834,7 @@ function kitModuleRule(opts) {
|
|
|
2660
2834
|
bad: (m, _o, ctx) => opts.bad(m, ctx)
|
|
2661
2835
|
});
|
|
2662
2836
|
}
|
|
2663
|
-
|
|
2664
|
-
//#region src/kit-module.ts
|
|
2665
|
-
/** The root layout — its page options cover the whole app. */
|
|
2666
|
-
const ROOT_LAYOUT_RE = /^src\/routes\/\+layout(\.server)?\.(ts|js)$/;
|
|
2667
|
-
/** Files whose `ssr` export is a page option — it has no effect in `+server` endpoints or hooks files. */
|
|
2668
|
-
const PAGE_OPTION_FILE_RE = /\+(page|layout)(\.server)?\.(ts|js)$/;
|
|
2669
|
-
const appSsrCache = /* @__PURE__ */ new WeakMap();
|
|
2670
|
-
/**
|
|
2671
|
-
* Whether no page is ever server-rendered: the root layout exports `ssr = false` and no page-option
|
|
2672
|
-
* file might turn it back on. Universal loads and components then run only in the browser; server
|
|
2673
|
-
* files (`+page.server`, `+server`, hooks) still run on the server.
|
|
2674
|
-
*/
|
|
2675
|
-
function appSsrDisabled(kitModules) {
|
|
2676
|
-
if (!kitModules) return false;
|
|
2677
|
-
let hit = appSsrCache.get(kitModules);
|
|
2678
|
-
if (hit === void 0) {
|
|
2679
|
-
hit = kitModules.some((m) => m.ssrDisabled && ROOT_LAYOUT_RE.test(m.file)) && !kitModules.some((m) => PAGE_OPTION_FILE_RE.test(m.file) && (m.ssrEnabled || m.parseFailed));
|
|
2680
|
-
appSsrCache.set(kitModules, hit);
|
|
2681
|
-
}
|
|
2682
|
-
return hit;
|
|
2683
|
-
}
|
|
2684
|
-
const ROUTES_DIR$1 = "src/routes";
|
|
2685
|
-
/** A `+page`/`+layout` file: its directory, kind, and the `@segment` layout reset (on `.svelte` names). */
|
|
2686
|
-
const ROUTE_FILE_RE = /^(src\/routes(?:\/.+)?)\/\+(page|layout)(?:@([^/]*))?(?:\.server)?\.(?:svelte|ts|js)$/;
|
|
2687
|
-
const parentDir = (dir) => dir === ROUTES_DIR$1 ? void 0 : dir.slice(0, dir.lastIndexOf("/"));
|
|
2688
|
-
/** The nearest ancestor-or-self directory a `@segment` reset names (`''` is the root). */
|
|
2689
|
-
function resetTarget(dir, segment) {
|
|
2690
|
-
for (let d = dir; d !== void 0; d = parentDir(d)) if (segment === "" ? d === ROUTES_DIR$1 : d.slice(d.lastIndexOf("/") + 1) === segment) return d;
|
|
2691
|
-
}
|
|
2692
|
-
const routeSsrCache = /* @__PURE__ */ new WeakMap();
|
|
2693
|
-
/**
|
|
2694
|
-
* Per route directory, whether its page (`page:<dir>`) or layout (`layout:<dir>`) is never
|
|
2695
|
-
* server-rendered. A page takes the nearest `ssr` export along its own files and then its layout
|
|
2696
|
-
* chain, following `+page@x`/`+layout@x` resets as SvelteKit does; an export other than a literal
|
|
2697
|
-
* `false`, or an unparsed option file, counts as SSR on. A layout is off only when every page using
|
|
2698
|
-
* it is — and the root layout also needs its own `ssr = false`, since it wraps the 404 page.
|
|
2699
|
-
*/
|
|
2700
|
-
function routeSsrOff(scope) {
|
|
2701
|
-
const kitModules = scope.kitModules ?? [];
|
|
2702
|
-
let hit = routeSsrCache.get(scope);
|
|
2703
|
-
if (hit) return hit;
|
|
2704
|
-
const pages = /* @__PURE__ */ new Map();
|
|
2705
|
-
const layouts = /* @__PURE__ */ new Map();
|
|
2706
|
-
const files = [
|
|
2707
|
-
...scope.sourceFiles ?? [],
|
|
2708
|
-
...(scope.components ?? []).map((c) => c.file),
|
|
2709
|
-
...kitModules.map((m) => m.file)
|
|
2710
|
-
];
|
|
2711
|
-
for (const file of files) {
|
|
2712
|
-
const match = ROUTE_FILE_RE.exec(file);
|
|
2713
|
-
if (!match) continue;
|
|
2714
|
-
const map = match[2] === "page" ? pages : layouts;
|
|
2715
|
-
if (match[3] !== void 0 || !map.has(match[1])) map.set(match[1], match[3]);
|
|
2716
|
-
}
|
|
2717
|
-
const option = /* @__PURE__ */ new Map();
|
|
2718
|
-
for (const m of kitModules) {
|
|
2719
|
-
const match = ROUTE_FILE_RE.exec(m.file);
|
|
2720
|
-
if (!match) continue;
|
|
2721
|
-
const key = `${match[2]}:${match[1]}`;
|
|
2722
|
-
if (m.ssrEnabled || m.parseFailed) option.set(key, "on");
|
|
2723
|
-
else if (m.ssrDisabled && !option.has(key)) option.set(key, "off");
|
|
2724
|
-
}
|
|
2725
|
-
hit = /* @__PURE__ */ new Map();
|
|
2726
|
-
for (const [dir, reset] of pages) {
|
|
2727
|
-
const chain = [];
|
|
2728
|
-
for (let d = reset === void 0 ? dir : resetTarget(dir, reset); d !== void 0;) {
|
|
2729
|
-
const layoutReset = layouts.get(d);
|
|
2730
|
-
if (layouts.has(d)) chain.push(d);
|
|
2731
|
-
d = layoutReset === void 0 ? parentDir(d) : resetTarget(parentDir(d), layoutReset);
|
|
2732
|
-
}
|
|
2733
|
-
const off = [`page:${dir}`, ...chain.map((l) => `layout:${l}`)].map((k) => option.get(k)).find(Boolean) === "off";
|
|
2734
|
-
hit.set(`page:${dir}`, off);
|
|
2735
|
-
for (const l of chain) hit.set(`layout:${l}`, (hit.get(`layout:${l}`) ?? true) && off);
|
|
2736
|
-
}
|
|
2737
|
-
if (option.get(`layout:${ROUTES_DIR$1}`) !== "off") hit.delete(`layout:${ROUTES_DIR$1}`);
|
|
2738
|
-
routeSsrCache.set(scope, hit);
|
|
2739
|
-
return hit;
|
|
2740
|
-
}
|
|
2741
|
-
/** Whether a `+page`/`+layout` file (module or component) belongs to a route that is never server-rendered. */
|
|
2742
|
-
function routeNeverSsr(file, scope) {
|
|
2743
|
-
const match = ROUTE_FILE_RE.exec(file);
|
|
2744
|
-
return !!match && routeSsrOff(scope).get(`${match[2]}:${match[1]}`) === true;
|
|
2745
|
-
}
|
|
2746
|
-
/** Whether a universal `+page`/`+layout` module never runs on the server — its own `ssr = false`, an app-wide one, or one its route inherits. */
|
|
2747
|
-
function universalNeverSsr(m, scope) {
|
|
2748
|
-
return m.kind === "universal" && (m.ssrDisabled !== void 0 || appSsrDisabled(scope.kitModules) || routeNeverSsr(m.file, scope));
|
|
2749
|
-
}
|
|
2750
|
-
//#endregion
|
|
2751
|
-
//#region src/rules/seo/ssr-disabled.ts
|
|
2837
|
+
// src/rules/seo/ssr-disabled.ts
|
|
2752
2838
|
const seoSsrDisabled = kitModuleRule({
|
|
2753
2839
|
id: "seo/ssr-disabled",
|
|
2754
2840
|
title: "SSR disabled",
|
|
@@ -2762,8 +2848,7 @@ const seoSsrDisabled = kitModuleRule({
|
|
|
2762
2848
|
message: ROOT_LAYOUT_RE.test(m.file) ? "SSR is disabled for the whole app — search engines index server-rendered content more reliably, and SPA mode adds a network round trip before first paint" : "SSR is disabled for this route — its content is invisible to crawlers that don't execute JavaScript and indexes less reliably"
|
|
2763
2849
|
}]
|
|
2764
2850
|
});
|
|
2765
|
-
|
|
2766
|
-
//#region src/rules/correctness/each-key.ts
|
|
2851
|
+
// src/rules/correctness/each-key.ts
|
|
2767
2852
|
const correctnessEachKey = componentRule({
|
|
2768
2853
|
id: "correctness/each-key",
|
|
2769
2854
|
title: "Keyed each block",
|
|
@@ -2777,8 +2862,7 @@ const correctnessEachKey = componentRule({
|
|
|
2777
2862
|
message: "{#each} block has no key"
|
|
2778
2863
|
}))
|
|
2779
2864
|
});
|
|
2780
|
-
|
|
2781
|
-
//#region src/rules/correctness/each-index-key.ts
|
|
2865
|
+
// src/rules/correctness/each-index-key.ts
|
|
2782
2866
|
const correctnessEachIndexKey = componentRule({
|
|
2783
2867
|
id: "correctness/each-index-key",
|
|
2784
2868
|
title: "Index used as each key",
|
|
@@ -2792,8 +2876,7 @@ const correctnessEachIndexKey = componentRule({
|
|
|
2792
2876
|
message: "{#each} is keyed by its index — identity follows position, exactly like an unkeyed block, but the key makes it look safe."
|
|
2793
2877
|
}))
|
|
2794
2878
|
});
|
|
2795
|
-
|
|
2796
|
-
//#region src/rules/correctness/effect-as-derived.ts
|
|
2879
|
+
// src/rules/correctness/effect-as-derived.ts
|
|
2797
2880
|
const correctnessEffectAsDerived = componentRule({
|
|
2798
2881
|
id: "correctness/effect-as-derived",
|
|
2799
2882
|
title: "Effect used to derive state",
|
|
@@ -2807,8 +2890,7 @@ const correctnessEffectAsDerived = componentRule({
|
|
|
2807
2890
|
message: "$effect only assigns state — use $derived instead"
|
|
2808
2891
|
}))
|
|
2809
2892
|
});
|
|
2810
|
-
|
|
2811
|
-
//#region src/rules/correctness/effect-as-onmount.ts
|
|
2893
|
+
// src/rules/correctness/effect-as-onmount.ts
|
|
2812
2894
|
const correctnessEffectAsOnMount = componentRule({
|
|
2813
2895
|
id: "correctness/effect-as-onmount",
|
|
2814
2896
|
title: "Effect used as onMount",
|
|
@@ -2822,8 +2904,7 @@ const correctnessEffectAsOnMount = componentRule({
|
|
|
2822
2904
|
message: "$effect reads no reactive value this analysis can see — consider an event handler, {@attach}, or onMount instead"
|
|
2823
2905
|
}))
|
|
2824
2906
|
});
|
|
2825
|
-
|
|
2826
|
-
//#region src/rules/correctness/unmutated-state.ts
|
|
2907
|
+
// src/rules/correctness/unmutated-state.ts
|
|
2827
2908
|
const correctnessUnmutatedState = componentRule({
|
|
2828
2909
|
id: "correctness/unmutated-state",
|
|
2829
2910
|
title: "Unmutated $state",
|
|
@@ -2838,8 +2919,7 @@ const correctnessUnmutatedState = componentRule({
|
|
|
2838
2919
|
message: `$state "${s.name}" is never mutated — use const (or $state.raw if you only reassign it)`
|
|
2839
2920
|
}))
|
|
2840
2921
|
});
|
|
2841
|
-
|
|
2842
|
-
//#region src/rules/correctness/prop-mutation.ts
|
|
2922
|
+
// src/rules/correctness/prop-mutation.ts
|
|
2843
2923
|
/**
|
|
2844
2924
|
* correctness/prop-mutation — mutating a prop directly is a silent bug in both Svelte modes,
|
|
2845
2925
|
* for different reasons: in runes mode, a non-$bindable prop mutation doesn't propagate to the
|
|
@@ -2861,8 +2941,7 @@ const correctnessPropMutation = componentRule({
|
|
|
2861
2941
|
message: m.legacy ? `Prop "${m.name}" is mutated directly — Svelte's legacy-mode reactivity is assignment-based, so this alone will not update the UI. Reassign it after mutating (e.g. "${m.name} = ${m.name}").` : `Prop "${m.name}" is mutated, but it is not declared $bindable`
|
|
2862
2942
|
}))
|
|
2863
2943
|
});
|
|
2864
|
-
|
|
2865
|
-
//#region src/rules/correctness/stale-prop-derivation.ts
|
|
2944
|
+
// src/rules/correctness/stale-prop-derivation.ts
|
|
2866
2945
|
/**
|
|
2867
2946
|
* correctness/stale-prop-derivation — a value computed from a prop without $derived (runes
|
|
2868
2947
|
* mode) or $: (legacy mode) is evaluated once, at init, and silently stops tracking the
|
|
@@ -2885,8 +2964,7 @@ const correctnessStalePropDerivation = componentRule({
|
|
|
2885
2964
|
message: s.legacy ? `"${s.name}" is computed from a prop once, at initialization — it will not update when the prop changes. Prefix the assignment with $: to make it a reactive statement.` : `"${s.name}" is computed from a prop once, at initialization — it will not update when the prop changes. Wrap it in $derived.`
|
|
2886
2965
|
}))
|
|
2887
2966
|
});
|
|
2888
|
-
|
|
2889
|
-
//#region src/rules/correctness/nonreactive-builtin-state.ts
|
|
2967
|
+
// src/rules/correctness/nonreactive-builtin-state.ts
|
|
2890
2968
|
/**
|
|
2891
2969
|
* correctness/nonreactive-builtin-state — $state's deep proxy covers plain
|
|
2892
2970
|
* objects and arrays only. A plain Map/Set/Date/URL/URLSearchParams in $state
|
|
@@ -2909,8 +2987,7 @@ const correctnessNonreactiveBuiltinState = componentRule({
|
|
|
2909
2987
|
message: `"${s.name}" is a plain ${s.type} in $state — its mutations are not tracked, so the UI silently stops updating when it changes. Use Svelte${s.type} from 'svelte/reactivity'.`
|
|
2910
2988
|
}))
|
|
2911
2989
|
});
|
|
2912
|
-
|
|
2913
|
-
//#region src/rules/correctness/checkable-bind-value.ts
|
|
2990
|
+
// src/rules/correctness/checkable-bind-value.ts
|
|
2914
2991
|
/**
|
|
2915
2992
|
* correctness/checkable-bind-value — bind:value binds the DOM value property. A
|
|
2916
2993
|
* checkbox/radio's user interaction toggles checkedness, which bind:value never observes. A
|
|
@@ -2934,8 +3011,7 @@ const correctnessCheckableBindValue = componentRule({
|
|
|
2934
3011
|
message: v.kind === "checkbox" ? "bind:value on a checkbox does not track its checked state — it throws bind_invalid_checkbox_value in development; in a production build it silently tracks the value attribute instead of checkedness. Use bind:checked (single checkbox) or bind:group (checkbox list) instead." : "bind:value on a radio input does not track which option is selected — the bound value silently never updates when the user picks one. Use bind:group with a shared group variable across the radio inputs instead."
|
|
2935
3012
|
}))
|
|
2936
3013
|
});
|
|
2937
|
-
|
|
2938
|
-
//#region src/rules/correctness/autoplay-muted.ts
|
|
3014
|
+
// src/rules/correctness/autoplay-muted.ts
|
|
2939
3015
|
/**
|
|
2940
3016
|
* correctness/autoplay-muted — Chrome and Safari block autoplay with audio, and a blocked
|
|
2941
3017
|
* `<video autoplay>` does not error: it silently never starts. The author sees it work in dev
|
|
@@ -2963,8 +3039,7 @@ const correctnessAutoplayMuted = componentRule({
|
|
|
2963
3039
|
message: "<video autoplay> without muted — browsers block audible autoplay, so the video silently never starts playing"
|
|
2964
3040
|
}))
|
|
2965
3041
|
});
|
|
2966
|
-
|
|
2967
|
-
//#region src/rules/correctness/orphan-effect.ts
|
|
3042
|
+
// src/rules/correctness/orphan-effect.ts
|
|
2968
3043
|
const correctnessOrphanEffect = componentRule({
|
|
2969
3044
|
id: "correctness/orphan-effect",
|
|
2970
3045
|
title: "Orphan $effect",
|
|
@@ -2979,8 +3054,7 @@ const correctnessOrphanEffect = componentRule({
|
|
|
2979
3054
|
message: o.kind === "top-level" ? "$effect at module scope runs outside component initialisation — it throws effect_orphan at runtime" : `class "${o.className}" runs $effect in its constructor and is instantiated at module scope — it throws effect_orphan at runtime`
|
|
2980
3055
|
}))
|
|
2981
3056
|
});
|
|
2982
|
-
|
|
2983
|
-
//#region src/rules/correctness/orphan-lifecycle.ts
|
|
3057
|
+
// src/rules/correctness/orphan-lifecycle.ts
|
|
2984
3058
|
const ID$9 = "correctness/orphan-lifecycle";
|
|
2985
3059
|
const DOCS_URL$2 = docsUrlFor(ID$9);
|
|
2986
3060
|
const LABEL$2 = "Lifecycle-call context";
|
|
@@ -3078,8 +3152,7 @@ const correctnessOrphanLifecycle = {
|
|
|
3078
3152
|
return out;
|
|
3079
3153
|
}
|
|
3080
3154
|
};
|
|
3081
|
-
|
|
3082
|
-
//#region src/rules/correctness/base-path-navigation.ts
|
|
3155
|
+
// src/rules/correctness/base-path-navigation.ts
|
|
3083
3156
|
const ID$8 = "correctness/base-path-navigation";
|
|
3084
3157
|
const DOCS_URL$1 = docsUrlFor(ID$8);
|
|
3085
3158
|
const LABEL$1 = "Base-path-aware navigation";
|
|
@@ -3162,8 +3235,7 @@ const correctnessBasePathNavigation = {
|
|
|
3162
3235
|
return out;
|
|
3163
3236
|
}
|
|
3164
3237
|
};
|
|
3165
|
-
|
|
3166
|
-
//#region src/rules/correctness/server-browser-global.ts
|
|
3238
|
+
// src/rules/correctness/server-browser-global.ts
|
|
3167
3239
|
const ID$7 = "correctness/server-browser-global";
|
|
3168
3240
|
const DOCS_URL = docsUrlFor(ID$7);
|
|
3169
3241
|
const LABEL = "Server-safe module code";
|
|
@@ -3235,8 +3307,7 @@ const correctnessServerBrowserGlobal = {
|
|
|
3235
3307
|
return out;
|
|
3236
3308
|
}
|
|
3237
3309
|
};
|
|
3238
|
-
|
|
3239
|
-
//#region src/rules/correctness/instance-browser-global.ts
|
|
3310
|
+
// src/rules/correctness/instance-browser-global.ts
|
|
3240
3311
|
const correctnessInstanceBrowserGlobal = componentRule({
|
|
3241
3312
|
id: "correctness/instance-browser-global",
|
|
3242
3313
|
title: "Browser global during component initialisation",
|
|
@@ -3244,14 +3315,13 @@ const correctnessInstanceBrowserGlobal = componentRule({
|
|
|
3244
3315
|
label: "Server-safe component init",
|
|
3245
3316
|
recommendation: "Move browser-only code into onMount or $effect (they never run on the server), or guard it with browser from $app/environment (or a typeof check).",
|
|
3246
3317
|
rationale: "A component instance script runs on the server on every SSR render, where window/document/localStorage do not exist. Warning, not critical: a component rendered only behind a parent {#if browser} (or a client-only dynamic import) is a legitimate pattern that static analysis cannot prove cross-file.",
|
|
3247
|
-
applies: (c, _o, ctx) => (c.browserGlobalRefs ?? []).some((r) => r.context === "instance") && !appSsrDisabled(ctx
|
|
3318
|
+
applies: (c, _o, ctx) => (c.browserGlobalRefs ?? []).some((r) => r.context === "instance") && !appSsrDisabled(ctx) && !routeNeverSsr(c.file, ctx),
|
|
3248
3319
|
bad: (c) => (c.browserGlobalRefs ?? []).filter((r) => r.context === "instance").map((r) => ({
|
|
3249
3320
|
line: r.line,
|
|
3250
3321
|
message: `${r.name} is accessed during component initialisation — during SSR this runs on the server, where ${r.name} is not defined`
|
|
3251
3322
|
}))
|
|
3252
3323
|
});
|
|
3253
|
-
|
|
3254
|
-
//#region src/rules/security/raw-html.ts
|
|
3324
|
+
// src/rules/security/raw-html.ts
|
|
3255
3325
|
const securityRawHtml = componentRule({
|
|
3256
3326
|
id: "security/raw-html",
|
|
3257
3327
|
title: "Raw HTML render",
|
|
@@ -3265,8 +3335,7 @@ const securityRawHtml = componentRule({
|
|
|
3265
3335
|
message: "{@html} renders unescaped HTML — ensure it is sanitized"
|
|
3266
3336
|
}))
|
|
3267
3337
|
});
|
|
3268
|
-
|
|
3269
|
-
//#region src/rules/security/javascript-url.ts
|
|
3338
|
+
// src/rules/security/javascript-url.ts
|
|
3270
3339
|
const securityJavascriptUrl = componentRule({
|
|
3271
3340
|
id: "security/javascript-url",
|
|
3272
3341
|
title: "javascript: URL",
|
|
@@ -3280,8 +3349,7 @@ const securityJavascriptUrl = componentRule({
|
|
|
3280
3349
|
message: "javascript: URL in an attribute"
|
|
3281
3350
|
}))
|
|
3282
3351
|
});
|
|
3283
|
-
|
|
3284
|
-
//#region src/rules/security/handler-state-write.ts
|
|
3352
|
+
// src/rules/security/handler-state-write.ts
|
|
3285
3353
|
const securityHandlerStateWrite = kitModuleRule({
|
|
3286
3354
|
id: "security/handler-state-write",
|
|
3287
3355
|
title: "Handler writes imported state",
|
|
@@ -3296,8 +3364,7 @@ const securityHandlerStateWrite = kitModuleRule({
|
|
|
3296
3364
|
message: `a server-executed handler writes imported module state "${w.name}" — module state is shared across all requests on the server; if this holds per-request or per-user data, one user's data can leak to another. Caches and rate limiters keyed by non-personal data are the benign shape — verify which this is`
|
|
3297
3365
|
}))
|
|
3298
3366
|
});
|
|
3299
|
-
|
|
3300
|
-
//#region src/rules/security/server-module-state.ts
|
|
3367
|
+
// src/rules/security/server-module-state.ts
|
|
3301
3368
|
const securityServerModuleState = kitModuleRule({
|
|
3302
3369
|
id: "security/server-module-state",
|
|
3303
3370
|
title: "Server module-scope state",
|
|
@@ -3311,8 +3378,7 @@ const securityServerModuleState = kitModuleRule({
|
|
|
3311
3378
|
message: r.inHandler ? `module-scope variable "${r.name}" is reassigned from a request handler — its value is shared across all requests on the server` : `module-scope variable "${r.name}" is reassigned from a function — if it runs during a request, the value is shared across all requests on the server`
|
|
3312
3379
|
}))
|
|
3313
3380
|
});
|
|
3314
|
-
|
|
3315
|
-
//#region src/rules/security/shared-state-import.ts
|
|
3381
|
+
// src/rules/security/shared-state-import.ts
|
|
3316
3382
|
/** The `.svelte.ts` ↔ `.svelte.js` sibling of a resolved runes-module path. */
|
|
3317
3383
|
function extSibling(path) {
|
|
3318
3384
|
return path.endsWith(".svelte.ts") ? path.replace(/\.svelte\.ts$/, ".svelte.js") : path.replace(/\.svelte\.js$/, ".svelte.ts");
|
|
@@ -3343,8 +3409,7 @@ const securitySharedStateImport = kitModuleRule({
|
|
|
3343
3409
|
return out;
|
|
3344
3410
|
}
|
|
3345
3411
|
});
|
|
3346
|
-
|
|
3347
|
-
//#region src/rules/architecture/component-size.ts
|
|
3412
|
+
// src/rules/architecture/component-size.ts
|
|
3348
3413
|
/**
|
|
3349
3414
|
* A component longer than this many lines is a "god component" smell.
|
|
3350
3415
|
*
|
|
@@ -3377,8 +3442,7 @@ const architectureComponentSize = componentRule({
|
|
|
3377
3442
|
}] : [];
|
|
3378
3443
|
}
|
|
3379
3444
|
});
|
|
3380
|
-
|
|
3381
|
-
//#region src/rules/architecture/prop-count.ts
|
|
3445
|
+
// src/rules/architecture/prop-count.ts
|
|
3382
3446
|
/**
|
|
3383
3447
|
* More destructured props than this suggests the component is doing too much.
|
|
3384
3448
|
*
|
|
@@ -3412,8 +3476,7 @@ const architecturePropCount = componentRule({
|
|
|
3412
3476
|
}] : [];
|
|
3413
3477
|
}
|
|
3414
3478
|
});
|
|
3415
|
-
|
|
3416
|
-
//#region src/svelte-ast.ts
|
|
3479
|
+
// src/svelte-ast.ts
|
|
3417
3480
|
/**
|
|
3418
3481
|
* `<style lang="scss">` and friends. The leading `\s` before `lang` is what keeps `data-lang` out.
|
|
3419
3482
|
* This is a text scan, not a parse, so it can also match style-like text inside a script string or
|
|
@@ -3432,7 +3495,8 @@ const PREPROCESSED_STYLE_RE = /(<style\b[^>]*\slang\s*=\s*['"]?[^'"\s>]+['"]?[^>
|
|
|
3432
3495
|
* the text scan's imprecision cannot reach it. A file that does not parse is already a hard failure,
|
|
3433
3496
|
* which the retry can only improve on.
|
|
3434
3497
|
*/
|
|
3435
|
-
function parseSvelte(
|
|
3498
|
+
function parseSvelte(raw, filename) {
|
|
3499
|
+
const source = raw.charCodeAt(0) === 65279 ? ` ${raw.slice(1)}` : raw;
|
|
3436
3500
|
try {
|
|
3437
3501
|
return parse(source, {
|
|
3438
3502
|
modern: true,
|
|
@@ -3498,12 +3562,25 @@ function attrValue(attributes, name) {
|
|
|
3498
3562
|
const attr = findAttr(attributes, name);
|
|
3499
3563
|
return attr ? attrValueOf(attr) : "absent";
|
|
3500
3564
|
}
|
|
3565
|
+
const lineStarts = /* @__PURE__ */ new Map();
|
|
3501
3566
|
function lineOf(source, offset) {
|
|
3502
3567
|
if (typeof offset !== "number" || offset < 0) return 0;
|
|
3503
|
-
let
|
|
3568
|
+
let starts = lineStarts.get(source);
|
|
3569
|
+
if (!starts) {
|
|
3570
|
+
starts = [0];
|
|
3571
|
+
for (let i = source.indexOf("\n"); i !== -1; i = source.indexOf("\n", i + 1)) starts.push(i + 1);
|
|
3572
|
+
if (lineStarts.size >= 8) lineStarts.delete(lineStarts.keys().next().value);
|
|
3573
|
+
lineStarts.set(source, starts);
|
|
3574
|
+
}
|
|
3504
3575
|
const end = Math.min(offset, source.length);
|
|
3505
|
-
|
|
3506
|
-
|
|
3576
|
+
let lo = 0;
|
|
3577
|
+
let hi = starts.length;
|
|
3578
|
+
while (lo < hi) {
|
|
3579
|
+
const mid = lo + hi >> 1;
|
|
3580
|
+
if (starts[mid] <= end) lo = mid + 1;
|
|
3581
|
+
else hi = mid;
|
|
3582
|
+
}
|
|
3583
|
+
return lo;
|
|
3507
3584
|
}
|
|
3508
3585
|
/**
|
|
3509
3586
|
* An element's attribute by name, matched **case-insensitively**: HTML attribute names are, so
|
|
@@ -3532,11 +3609,10 @@ function attrTextOf(attr) {
|
|
|
3532
3609
|
const v = attr?.value;
|
|
3533
3610
|
return Array.isArray(v) ? textFromNodes(v) : void 0;
|
|
3534
3611
|
}
|
|
3535
|
-
|
|
3536
|
-
//#region src/module-ast.ts
|
|
3612
|
+
// src/module-ast.ts
|
|
3537
3613
|
function unwrapTs(expr) {
|
|
3538
3614
|
let cur = expr;
|
|
3539
|
-
while (cur
|
|
3615
|
+
while (cur != null && (cur.type === "TSSatisfiesExpression" || cur.type === "TSAsExpression" || cur.type === "TSNonNullExpression")) cur = cur.expression;
|
|
3540
3616
|
return cur;
|
|
3541
3617
|
}
|
|
3542
3618
|
/** AST metadata keys every walker skips — never traversed as child nodes. Shared with the Kit-module parser (the security kit-module rules). */
|
|
@@ -3589,8 +3665,8 @@ function addBoundNames(id, acc) {
|
|
|
3589
3665
|
}
|
|
3590
3666
|
/** The base identifier name of a (possibly nested) member expression or identifier, else undefined. Shared with the Kit-module parser (the security kit-module rules). */
|
|
3591
3667
|
function rootObjectName(node) {
|
|
3592
|
-
let cur = node;
|
|
3593
|
-
while (cur?.type === "MemberExpression") cur = cur.object;
|
|
3668
|
+
let cur = unwrapTs(node);
|
|
3669
|
+
while (cur?.type === "MemberExpression") cur = unwrapTs(cur.object);
|
|
3594
3670
|
return cur?.type === "Identifier" ? cur.name : void 0;
|
|
3595
3671
|
}
|
|
3596
3672
|
/**
|
|
@@ -3842,6 +3918,11 @@ function collectProgramBindings(program) {
|
|
|
3842
3918
|
for (const s of stmt.specifiers ?? []) if (s?.local?.type === "Identifier") bound.add(s.local.name);
|
|
3843
3919
|
continue;
|
|
3844
3920
|
}
|
|
3921
|
+
if (stmt?.type === "LabeledStatement" && stmt.label?.name === "$") {
|
|
3922
|
+
const e = stmt.body?.type === "ExpressionStatement" ? stmt.body.expression : void 0;
|
|
3923
|
+
if (e?.type === "AssignmentExpression" && e.operator === "=") addBoundNames(e.left, bound);
|
|
3924
|
+
continue;
|
|
3925
|
+
}
|
|
3845
3926
|
const decl = unwrapExport(stmt);
|
|
3846
3927
|
if (decl?.type === "VariableDeclaration") for (const d of decl.declarations ?? []) addBoundNames(d?.id, bound);
|
|
3847
3928
|
else if ((decl?.type === "FunctionDeclaration" || decl?.type === "ClassDeclaration") && decl.id?.type === "Identifier") bound.add(decl.id.name);
|
|
@@ -3886,6 +3967,13 @@ function isBrowserGuardTest(test, guardBindings) {
|
|
|
3886
3967
|
});
|
|
3887
3968
|
return guarded;
|
|
3888
3969
|
}
|
|
3970
|
+
/** The tracked global `G` of a `typeof G === 'undefined'` test: the test is false only where `G` is defined. */
|
|
3971
|
+
function missingGlobalOf(n) {
|
|
3972
|
+
if (n?.type !== "BinaryExpression" || n.operator !== "===" && n.operator !== "==") return void 0;
|
|
3973
|
+
const sides = [n.left, n.right];
|
|
3974
|
+
if (!sides.some((s) => s?.type === "Literal" && s.value === "undefined")) return void 0;
|
|
3975
|
+
return sides.find((s) => s?.type === "UnaryExpression" && s.operator === "typeof" && s.argument?.type === "Identifier" && BROWSER_GLOBALS.has(s.argument.name))?.argument.name;
|
|
3976
|
+
}
|
|
3889
3977
|
/**
|
|
3890
3978
|
* Names of derived guard bindings (one level, no fixpoint chasing): a top-level
|
|
3891
3979
|
* (export-unwrapped) `const`/`let` declarator whose init passes `isBrowserGuardTest` —
|
|
@@ -3905,6 +3993,95 @@ function collectDerivedGuardBindings(program, guards) {
|
|
|
3905
3993
|
}
|
|
3906
3994
|
return derived;
|
|
3907
3995
|
}
|
|
3996
|
+
const DOM_ONLY_GLOBALS = /* @__PURE__ */ new Set(["window", "document"]);
|
|
3997
|
+
/**
|
|
3998
|
+
* Unlike `isBrowserGuardTest` this keeps the polarity and each outcome apart, because a write the
|
|
3999
|
+
* guard leaves reachable on the server must still be reported: `!browser && url.search` being falsy
|
|
4000
|
+
* proves nothing.
|
|
4001
|
+
*/
|
|
4002
|
+
function guardImplies(test, guards, shadowed) {
|
|
4003
|
+
if (test?.type === "Identifier") return !shadowed.has(test.name) && guards.get(test.name) || {};
|
|
4004
|
+
if (test?.type === "UnaryExpression" && test.operator === "!") {
|
|
4005
|
+
const inner = guardImplies(test.argument, guards, shadowed);
|
|
4006
|
+
return {
|
|
4007
|
+
truthy: inner.falsy,
|
|
4008
|
+
falsy: inner.truthy
|
|
4009
|
+
};
|
|
4010
|
+
}
|
|
4011
|
+
if (test?.type === "LogicalExpression" && (test.operator === "&&" || test.operator === "||")) {
|
|
4012
|
+
const a = guardImplies(test.left, guards, shadowed);
|
|
4013
|
+
const b = guardImplies(test.right, guards, shadowed);
|
|
4014
|
+
const agree = (x, y) => x === y ? x : void 0;
|
|
4015
|
+
return test.operator === "&&" ? {
|
|
4016
|
+
truthy: a.truthy ?? b.truthy,
|
|
4017
|
+
falsy: agree(a.falsy, b.falsy)
|
|
4018
|
+
} : {
|
|
4019
|
+
truthy: agree(a.truthy, b.truthy),
|
|
4020
|
+
falsy: a.falsy ?? b.falsy
|
|
4021
|
+
};
|
|
4022
|
+
}
|
|
4023
|
+
if (test?.type === "BinaryExpression" && [
|
|
4024
|
+
"===",
|
|
4025
|
+
"!==",
|
|
4026
|
+
"==",
|
|
4027
|
+
"!="
|
|
4028
|
+
].includes(test.operator)) {
|
|
4029
|
+
const sides = [test.left, test.right];
|
|
4030
|
+
const hasTypeofGlobal = sides.some((s) => s?.type === "UnaryExpression" && s.operator === "typeof" && s.argument?.type === "Identifier" && DOM_ONLY_GLOBALS.has(s.argument.name) && !shadowed.has(s.argument.name));
|
|
4031
|
+
const type = sides.find((s) => s?.type === "Literal" && typeof s.value === "string")?.value;
|
|
4032
|
+
if (!hasTypeofGlobal || type === void 0) return {};
|
|
4033
|
+
const equal = test.operator === "===" || test.operator === "==";
|
|
4034
|
+
if (type === "undefined") return equal ? {
|
|
4035
|
+
truthy: "server",
|
|
4036
|
+
falsy: "browser"
|
|
4037
|
+
} : {
|
|
4038
|
+
truthy: "browser",
|
|
4039
|
+
falsy: "server"
|
|
4040
|
+
};
|
|
4041
|
+
return equal ? { truthy: "browser" } : { falsy: "browser" };
|
|
4042
|
+
}
|
|
4043
|
+
return {};
|
|
4044
|
+
}
|
|
4045
|
+
/**
|
|
4046
|
+
* Source ranges only the browser reaches: the arm of an `if`/ternary its browser guard selects, the
|
|
4047
|
+
* right side of `browser && x` or `!browser || x`, and the statements after a terminating early return
|
|
4048
|
+
* the server always takes (`if (!browser) return;`) in their block. A top-level `const` derived from a
|
|
4049
|
+
* guard (`const serverOnly = !browser`) carries its own polarity.
|
|
4050
|
+
*/
|
|
4051
|
+
function browserOnlyRanges(program, envGuards) {
|
|
4052
|
+
const guards = new Map([...envGuards].map((name) => [name, {
|
|
4053
|
+
truthy: "browser",
|
|
4054
|
+
falsy: "server"
|
|
4055
|
+
}]));
|
|
4056
|
+
const bound = collectProgramBindings(program);
|
|
4057
|
+
for (const name of envGuards) bound.delete(name);
|
|
4058
|
+
for (const stmt of program.body ?? []) {
|
|
4059
|
+
const decl = unwrapExport(stmt);
|
|
4060
|
+
if (decl?.type !== "VariableDeclaration" || decl.kind !== "const") continue;
|
|
4061
|
+
for (const d of decl.declarations ?? []) {
|
|
4062
|
+
const implied = d?.id?.type === "Identifier" && d.init ? guardImplies(d.init, guards, bound) : {};
|
|
4063
|
+
if (implied.truthy || implied.falsy) guards.set(d.id.name, implied);
|
|
4064
|
+
}
|
|
4065
|
+
}
|
|
4066
|
+
for (const name of guards.keys()) bound.delete(name);
|
|
4067
|
+
const out = [];
|
|
4068
|
+
const push = (n) => n && out.push([n.start, n.end]);
|
|
4069
|
+
walkScoped(program, (n, shadowed) => {
|
|
4070
|
+
const implies = (test) => guardImplies(test, guards, shadowed);
|
|
4071
|
+
if (n.type === "IfStatement" || n.type === "ConditionalExpression") {
|
|
4072
|
+
const implied = implies(n.test);
|
|
4073
|
+
if (implied.truthy === "browser") push(n.consequent);
|
|
4074
|
+
if (implied.falsy === "browser") push(n.alternate);
|
|
4075
|
+
} else if (n.type === "LogicalExpression" && (n.operator === "&&" || n.operator === "||")) {
|
|
4076
|
+
if (implies(n.left)[n.operator === "&&" ? "truthy" : "falsy"] === "browser") push(n.right);
|
|
4077
|
+
} else if (n.type === "BlockStatement" || n.type === "Program") {
|
|
4078
|
+
const body = n.body ?? [];
|
|
4079
|
+
const at = body.findIndex((stmt) => stmt?.type === "IfStatement" && implies(stmt.test).falsy === "browser" && guardTerminates(stmt.consequent));
|
|
4080
|
+
if (at >= 0 && at < body.length - 1) out.push([body[at + 1].start, body[body.length - 1].end]);
|
|
4081
|
+
}
|
|
4082
|
+
}, bound);
|
|
4083
|
+
return out;
|
|
4084
|
+
}
|
|
3908
4085
|
/**
|
|
3909
4086
|
* Browser-global reads in code that executes when `program` (or a passed function body)
|
|
3910
4087
|
* is evaluated (correctness/server-browser-global, correctness/instance-browser-global). Position-aware — only read positions match: never a
|
|
@@ -3940,6 +4117,12 @@ function collectBrowserGlobalRefs(program, source, extra) {
|
|
|
3940
4117
|
if (EVAL_SCOPE_BOUNDARIES.has(n.type)) return;
|
|
3941
4118
|
if ((n.type === "IfStatement" || n.type === "ConditionalExpression") && isBrowserGuardTest(n.test, guards)) return;
|
|
3942
4119
|
if (n.type === "LogicalExpression" && (n.operator === "&&" ? isBrowserGuardTest(n.left, guards) : n.left?.type === "UnaryExpression" && n.left.operator === "!" && isBrowserGuardTest(n.left.argument, guards))) return;
|
|
4120
|
+
const missing = n.type === "LogicalExpression" && n.operator === "||" ? missingGlobalOf(n.left) : void 0;
|
|
4121
|
+
if (missing && !bound.has(missing) && !shadowed.has(missing)) {
|
|
4122
|
+
visit(n.left, shadowed);
|
|
4123
|
+
if (!DOM_ONLY_GLOBALS.has(missing)) visit(n.right, /* @__PURE__ */ new Set([...shadowed, missing]));
|
|
4124
|
+
return;
|
|
4125
|
+
}
|
|
3943
4126
|
const introduced = scopeIntroducedNames(n);
|
|
3944
4127
|
const scope = introduced.size > 0 ? /* @__PURE__ */ new Set([...shadowed, ...introduced]) : shadowed;
|
|
3945
4128
|
switch (n.type) {
|
|
@@ -4003,8 +4186,7 @@ function parseModuleProgram(source, filename) {
|
|
|
4003
4186
|
wrapped
|
|
4004
4187
|
};
|
|
4005
4188
|
}
|
|
4006
|
-
|
|
4007
|
-
//#region src/base-path.ts
|
|
4189
|
+
// src/base-path.ts
|
|
4008
4190
|
/**
|
|
4009
4191
|
* The path shape broken by `kit.paths.base` (correctness/base-path-navigation). Pure data
|
|
4010
4192
|
* predicate — no imports, so both the component and Kit-module parsers can use it freely.
|
|
@@ -4017,8 +4199,7 @@ function parseModuleProgram(source, filename) {
|
|
|
4017
4199
|
function isRootRelativePath(value) {
|
|
4018
4200
|
return value.startsWith("/") && !value.startsWith("//");
|
|
4019
4201
|
}
|
|
4020
|
-
|
|
4021
|
-
//#region src/kit-module-parse.ts
|
|
4202
|
+
// src/kit-module-parse.ts
|
|
4022
4203
|
/** Exported names whose function bodies run on the server per request (SvelteKit's contract). */
|
|
4023
4204
|
const HANDLER_NAMES = /* @__PURE__ */ new Set([
|
|
4024
4205
|
"load",
|
|
@@ -4034,6 +4215,11 @@ const HANDLER_NAMES = /* @__PURE__ */ new Set([
|
|
|
4034
4215
|
"OPTIONS",
|
|
4035
4216
|
"fallback"
|
|
4036
4217
|
]);
|
|
4218
|
+
/** Whether `arg` can be a store updater: a function literal, or a function this module declares. */
|
|
4219
|
+
function isUpdaterArgument(arg, localFunctions) {
|
|
4220
|
+
const e = arg ? unwrapTs(arg) : void 0;
|
|
4221
|
+
return isFunctionNode(e) || e?.type === "Identifier" && localFunctions.has(e.name);
|
|
4222
|
+
}
|
|
4037
4223
|
function isFunctionNode(n) {
|
|
4038
4224
|
return n?.type === "FunctionDeclaration" || n?.type === "FunctionExpression" || n?.type === "ArrowFunctionExpression";
|
|
4039
4225
|
}
|
|
@@ -4135,7 +4321,7 @@ function collectStartupFunctions(program) {
|
|
|
4135
4321
|
}
|
|
4136
4322
|
/**
|
|
4137
4323
|
* The `export const ssr = false` / `export const csr = false` opt-out, when
|
|
4138
|
-
* present: inline form (`satisfies`/`as` unwrapped) or same-file alias export
|
|
4324
|
+
* present (`= dev` too): inline form (`satisfies`/`as` unwrapped) or same-file alias export
|
|
4139
4325
|
* (`const ssr = false; export { ssr };`). Returns the declaration's line in the
|
|
4140
4326
|
* WRAPPED source (the caller applies the −1 shift). An `ssr = false` file never
|
|
4141
4327
|
* runs on the server — correctness/server-browser-global skips its browser-global scan, and seo/ssr-disabled
|
|
@@ -4143,10 +4329,27 @@ function collectStartupFunctions(program) {
|
|
|
4143
4329
|
* performance/load-waterfall exempts it (see `csrDisabled` on `KitModuleFacts`).
|
|
4144
4330
|
*/
|
|
4145
4331
|
function findFalseOptOut(program, source, name) {
|
|
4332
|
+
const dev = collectNamedImportAliases(program, "$app/environment", DEV_NAMES);
|
|
4146
4333
|
let hit;
|
|
4147
4334
|
forEachNamedExport(program, (exported, value, anchor) => {
|
|
4148
|
-
|
|
4149
|
-
|
|
4335
|
+
const literal = value?.type === "Literal" && value.value === false;
|
|
4336
|
+
if (exported !== name || !(literal || value?.type === "Identifier" && dev.has(value.name))) return void 0;
|
|
4337
|
+
hit = {
|
|
4338
|
+
line: lineOf(source, anchor.start),
|
|
4339
|
+
literal
|
|
4340
|
+
};
|
|
4341
|
+
return true;
|
|
4342
|
+
});
|
|
4343
|
+
return hit;
|
|
4344
|
+
}
|
|
4345
|
+
const DEV_NAMES = /* @__PURE__ */ new Set(["dev"]);
|
|
4346
|
+
const BUILDING_NAMES = /* @__PURE__ */ new Set(["building"]);
|
|
4347
|
+
/** Whether the module exports `name` as the literal `true` (inline or same-file alias export). */
|
|
4348
|
+
function exportsTrue(program, name) {
|
|
4349
|
+
let hit = false;
|
|
4350
|
+
forEachNamedExport(program, (exported, value) => {
|
|
4351
|
+
if (exported !== name) return void 0;
|
|
4352
|
+
hit = value?.type === "Literal" && value.value === true;
|
|
4150
4353
|
return true;
|
|
4151
4354
|
});
|
|
4152
4355
|
return hit;
|
|
@@ -4197,8 +4400,18 @@ const MUTATING_METHODS = /* @__PURE__ */ new Set([
|
|
|
4197
4400
|
"add",
|
|
4198
4401
|
"set"
|
|
4199
4402
|
]);
|
|
4403
|
+
const ITERATING_METHODS = /* @__PURE__ */ new Set([
|
|
4404
|
+
"forEach",
|
|
4405
|
+
"map",
|
|
4406
|
+
"flatMap",
|
|
4407
|
+
"filter",
|
|
4408
|
+
"some",
|
|
4409
|
+
"every",
|
|
4410
|
+
"reduce"
|
|
4411
|
+
]);
|
|
4200
4412
|
const REDIRECT_NAMES = /* @__PURE__ */ new Set(["redirect"]);
|
|
4201
4413
|
const EXIT_NAMES = /* @__PURE__ */ new Set(["redirect", "error"]);
|
|
4414
|
+
const ERROR_NAMES = /* @__PURE__ */ new Set(["error"]);
|
|
4202
4415
|
/**
|
|
4203
4416
|
* Root-relative `redirect(status, '/…')` targets (correctness/base-path-navigation). Argument 1
|
|
4204
4417
|
* is the location (argument 0 is the status). Only a plain string literal counts, which
|
|
@@ -4218,6 +4431,116 @@ function collectRedirectCalls(node, locals, out = []) {
|
|
|
4218
4431
|
}
|
|
4219
4432
|
return out;
|
|
4220
4433
|
}
|
|
4434
|
+
/**
|
|
4435
|
+
* The string literals a `transformPageChunk` option replaces in the page HTML (`html.replace(TOKEN, …)`,
|
|
4436
|
+
* `.replaceAll`), wherever the file passes one to `resolve`, a same-file `const` holding the string
|
|
4437
|
+
* included. A token the hook builds at run time is not read.
|
|
4438
|
+
*/
|
|
4439
|
+
function pageChunkTokens(program) {
|
|
4440
|
+
const consts = /* @__PURE__ */ new Map();
|
|
4441
|
+
for (const stmt of program.body ?? []) {
|
|
4442
|
+
const decl = stmt?.type === "ExportNamedDeclaration" ? stmt.declaration : stmt;
|
|
4443
|
+
if (decl?.type !== "VariableDeclaration" || decl.kind !== "const") continue;
|
|
4444
|
+
for (const d of decl.declarations ?? []) {
|
|
4445
|
+
const init = unwrapTs(d.init);
|
|
4446
|
+
if (d.id?.type === "Identifier" && init?.type === "Literal" && typeof init.value === "string") consts.set(d.id.name, init.value);
|
|
4447
|
+
}
|
|
4448
|
+
}
|
|
4449
|
+
const out = /* @__PURE__ */ new Set();
|
|
4450
|
+
const visit = (n, inChunk) => {
|
|
4451
|
+
if (Array.isArray(n)) return n.forEach((c) => visit(c, inChunk));
|
|
4452
|
+
if (!n || typeof n !== "object" || typeof n.type !== "string") return;
|
|
4453
|
+
const chunk = inChunk || n.type === "Property" && !n.computed && n.key?.type === "Identifier" && n.key.name === "transformPageChunk";
|
|
4454
|
+
if (chunk && n.type === "CallExpression" && n.callee?.type === "MemberExpression" && !n.callee.computed) {
|
|
4455
|
+
const method = n.callee.property?.name;
|
|
4456
|
+
const arg = unwrapTs(n.arguments?.[0]);
|
|
4457
|
+
const token = arg?.type === "Literal" && typeof arg.value === "string" ? arg.value : arg?.type === "Identifier" ? consts.get(arg.name) : void 0;
|
|
4458
|
+
if ((method === "replace" || method === "replaceAll") && token) out.add(token);
|
|
4459
|
+
}
|
|
4460
|
+
for (const key of Object.keys(n)) if (!WALK_IGNORED_KEYS.has(key)) visit(n[key], chunk);
|
|
4461
|
+
};
|
|
4462
|
+
visit(program, false);
|
|
4463
|
+
return [...out];
|
|
4464
|
+
}
|
|
4465
|
+
/** Whether `node` calls `name` outside nested functions. */
|
|
4466
|
+
function callsOutsideFunctions(node, name) {
|
|
4467
|
+
if (Array.isArray(node)) return node.some((n) => callsOutsideFunctions(n, name));
|
|
4468
|
+
if (!node || typeof node !== "object" || typeof node.type !== "string") return false;
|
|
4469
|
+
if (node.type === "CallExpression" && node.callee?.type === "Identifier" && node.callee.name === name) return true;
|
|
4470
|
+
return Object.keys(node).some((key) => !WALK_IGNORED_KEYS.has(key) && callsOutsideFunctions(node[key], name));
|
|
4471
|
+
}
|
|
4472
|
+
/**
|
|
4473
|
+
* The request paths the exported `handle` answers on every request, before calling `resolve`: an `if` on
|
|
4474
|
+
* the path alone (`pathname === '/x'`, `pathname.startsWith('/x')`, or an `||` of those, with `pathname`
|
|
4475
|
+
* read from the `event` parameter, directly or through a `const`) whose body returns or throws, among the
|
|
4476
|
+
* statements before the first one that calls `resolve`. A test that also reads anything else, a `sequence(…)`
|
|
4477
|
+
* handle and a guard in another function are not read.
|
|
4478
|
+
*/
|
|
4479
|
+
function handleAnsweredPaths(program, exits) {
|
|
4480
|
+
let handle;
|
|
4481
|
+
forEachNamedExport(program, (name, value) => {
|
|
4482
|
+
if (name === "handle" && isFunctionNode(value)) handle = value;
|
|
4483
|
+
return handle !== void 0;
|
|
4484
|
+
});
|
|
4485
|
+
const param = handle?.params?.[0];
|
|
4486
|
+
if (handle?.body?.type !== "BlockStatement" || param?.type !== "ObjectPattern") return [];
|
|
4487
|
+
const local = (key) => {
|
|
4488
|
+
const p = param.properties?.find((q) => q.type === "Property" && q.key?.type === "Identifier" && q.key.name === key);
|
|
4489
|
+
return p?.value?.type === "Identifier" ? p.value.name : void 0;
|
|
4490
|
+
};
|
|
4491
|
+
const event = local("event");
|
|
4492
|
+
const resolve = local("resolve");
|
|
4493
|
+
if (!event || !resolve) return [];
|
|
4494
|
+
const isUrl = (n) => n?.type === "MemberExpression" && !n.computed && n.property?.name === "url" && n.object?.type === "Identifier" && n.object.name === event;
|
|
4495
|
+
const aliases = /* @__PURE__ */ new Set();
|
|
4496
|
+
const isPath = (n) => {
|
|
4497
|
+
const e = unwrapTs(n);
|
|
4498
|
+
if (e?.type === "Identifier") return aliases.has(e.name);
|
|
4499
|
+
return e?.type === "MemberExpression" && !e.computed && e.property?.name === "pathname" && isUrl(e.object);
|
|
4500
|
+
};
|
|
4501
|
+
const literal = (n) => n?.type === "Literal" && typeof n.value === "string" ? n.value : void 0;
|
|
4502
|
+
const conds = (t) => {
|
|
4503
|
+
if (t?.type === "LogicalExpression" && t.operator === "||") {
|
|
4504
|
+
const l = conds(t.left);
|
|
4505
|
+
const r = conds(t.right);
|
|
4506
|
+
return l && r ? [...l, ...r] : void 0;
|
|
4507
|
+
}
|
|
4508
|
+
if (t?.type === "BinaryExpression" && (t.operator === "===" || t.operator === "==")) {
|
|
4509
|
+
const v = isPath(t.left) ? literal(t.right) : isPath(t.right) ? literal(t.left) : void 0;
|
|
4510
|
+
return v === void 0 ? void 0 : [{
|
|
4511
|
+
op: "eq",
|
|
4512
|
+
v
|
|
4513
|
+
}];
|
|
4514
|
+
}
|
|
4515
|
+
const callee = t?.type === "CallExpression" ? t.callee : void 0;
|
|
4516
|
+
const v = literal(t?.arguments?.[0]);
|
|
4517
|
+
return callee?.type === "MemberExpression" && callee.property?.name === "startsWith" && isPath(callee.object) && v !== void 0 ? [{
|
|
4518
|
+
op: "starts",
|
|
4519
|
+
v
|
|
4520
|
+
}] : void 0;
|
|
4521
|
+
};
|
|
4522
|
+
const exitsAlways = (s) => {
|
|
4523
|
+
if (s?.type === "BlockStatement") return s.body.length > 0 && exitsAlways(s.body[s.body.length - 1]);
|
|
4524
|
+
if (s?.type === "ReturnStatement" || s?.type === "ThrowStatement") return true;
|
|
4525
|
+
const call = s?.type === "ExpressionStatement" ? unwrapTs(s.expression) : void 0;
|
|
4526
|
+
return call?.type === "CallExpression" && call.callee?.type === "Identifier" && exits.has(call.callee.name);
|
|
4527
|
+
};
|
|
4528
|
+
const out = [];
|
|
4529
|
+
for (const stmt of handle.body.body) {
|
|
4530
|
+
if (callsOutsideFunctions(stmt, resolve)) break;
|
|
4531
|
+
if (stmt.type === "VariableDeclaration" && stmt.kind === "const") for (const d of stmt.declarations ?? []) {
|
|
4532
|
+
if (d.id?.type === "Identifier" && isPath(d.init)) aliases.add(d.id.name);
|
|
4533
|
+
if (d.id?.type === "ObjectPattern" && isUrl(unwrapTs(d.init))) {
|
|
4534
|
+
const p = d.id.properties?.find((q) => q.type === "Property" && q.key?.name === "pathname");
|
|
4535
|
+
if (p?.value?.type === "Identifier") aliases.add(p.value.name);
|
|
4536
|
+
}
|
|
4537
|
+
}
|
|
4538
|
+
if (stmt.type !== "IfStatement" || !exitsAlways(stmt.consequent)) continue;
|
|
4539
|
+
const c = conds(stmt.test);
|
|
4540
|
+
if (c) out.push(...c);
|
|
4541
|
+
}
|
|
4542
|
+
return out;
|
|
4543
|
+
}
|
|
4221
4544
|
/** Whether `node` holds a `return` outside nested functions. */
|
|
4222
4545
|
function containsReturn(node) {
|
|
4223
4546
|
if (Array.isArray(node)) return node.some(containsReturn);
|
|
@@ -4232,9 +4555,16 @@ function containsReturn(node) {
|
|
|
4232
4555
|
* of the same file that itself always redirects. A redirect under an `if` without an `else`, in a
|
|
4233
4556
|
* loop, or in a function declared inside `load` does not count.
|
|
4234
4557
|
*/
|
|
4235
|
-
function loadNeverRenders(program, locals) {
|
|
4558
|
+
function loadNeverRenders(program, locals, building = /* @__PURE__ */ new Set()) {
|
|
4236
4559
|
const load = locals.size > 0 ? findLoadFunction(program) : void 0;
|
|
4237
|
-
|
|
4560
|
+
return !!load?.body && alwaysExits(program, load, locals, building);
|
|
4561
|
+
}
|
|
4562
|
+
/**
|
|
4563
|
+
* Whether `fn`, a function of `program`, redirects or errors on every call (see `loadNeverRenders`).
|
|
4564
|
+
* `building` holds the names `building` from `$app/environment` is imported as: an `if` on one of them
|
|
4565
|
+
* is read with the test false, as it is on every request.
|
|
4566
|
+
*/
|
|
4567
|
+
function alwaysExits(program, fn, locals, building = /* @__PURE__ */ new Set()) {
|
|
4238
4568
|
const topLevel = collectTopLevelBindings(program);
|
|
4239
4569
|
const fnRedirects = (fn, seen, observed) => {
|
|
4240
4570
|
const shadow = /* @__PURE__ */ new Set();
|
|
@@ -4276,15 +4606,183 @@ function loadNeverRenders(program, locals) {
|
|
|
4276
4606
|
}
|
|
4277
4607
|
return false;
|
|
4278
4608
|
};
|
|
4609
|
+
const plainReturn = (node, shadow, frame) => {
|
|
4610
|
+
if (Array.isArray(node)) return node.some((n) => plainReturn(n, shadow, frame));
|
|
4611
|
+
if (!node || typeof node !== "object" || typeof node.type !== "string" || isFunctionNode(node)) return false;
|
|
4612
|
+
if (node.type === "ReturnStatement") return !isRedirect(node.argument, shadow, frame, frame.observed);
|
|
4613
|
+
const scope = node.type === "BlockStatement" ? within(node.body, shadow) : shadow;
|
|
4614
|
+
return Object.keys(node).some((key) => !WALK_IGNORED_KEYS.has(key) && plainReturn(node[key], scope, frame));
|
|
4615
|
+
};
|
|
4279
4616
|
const always = (body, outer, rethrow, frame) => {
|
|
4280
4617
|
const shadow = within(body, outer);
|
|
4281
|
-
for (
|
|
4618
|
+
for (let stmt of body ?? []) {
|
|
4619
|
+
const test = stmt?.type === "IfStatement" ? unwrapTs(stmt.test) : void 0;
|
|
4620
|
+
if (test?.type === "Identifier" && building.has(test.name) && !shadow.has(test.name)) {
|
|
4621
|
+
if (!stmt.alternate) continue;
|
|
4622
|
+
stmt = stmt.alternate;
|
|
4623
|
+
}
|
|
4282
4624
|
if (redirects(stmt, shadow, rethrow, frame)) return true;
|
|
4283
|
-
if (
|
|
4625
|
+
if (plainReturn(stmt, shadow, frame)) return false;
|
|
4626
|
+
}
|
|
4627
|
+
return false;
|
|
4628
|
+
};
|
|
4629
|
+
return fnRedirects(fn, /* @__PURE__ */ new Set(), true);
|
|
4630
|
+
}
|
|
4631
|
+
/**
|
|
4632
|
+
* The binding a load's leading flag guard reads: a top-level `if (!FLAG) <exit>` (or `!NS.FLAG`) before
|
|
4633
|
+
* any `return`, where `FLAG` is imported from a repo-local module. When that export is the literal
|
|
4634
|
+
* `false`, every request takes the exit; `collectKitModuleFacts` reads the module to decide.
|
|
4635
|
+
*/
|
|
4636
|
+
function leadingFlagGuard(program, exits, imported) {
|
|
4637
|
+
const load = exits.size > 0 ? findLoadFunction(program) : void 0;
|
|
4638
|
+
if (load?.body?.type !== "BlockStatement") return void 0;
|
|
4639
|
+
const local = /* @__PURE__ */ new Set();
|
|
4640
|
+
for (const param of load.params ?? []) addBoundNames(param, local);
|
|
4641
|
+
for (const stmt of load.body.body) if (stmt?.type === "VariableDeclaration") for (const d of stmt.declarations ?? []) addBoundNames(d?.id, local);
|
|
4642
|
+
else if ((stmt?.type === "FunctionDeclaration" || stmt?.type === "ClassDeclaration") && stmt.id) local.add(stmt.id.name);
|
|
4643
|
+
const exitCall = (e) => {
|
|
4644
|
+
const x = unwrapTs(e);
|
|
4645
|
+
return x?.type === "CallExpression" && x.callee?.type === "Identifier" && exits.has(x.callee.name) && !local.has(x.callee.name);
|
|
4646
|
+
};
|
|
4647
|
+
const exitsFirst = (stmt) => {
|
|
4648
|
+
if (stmt?.type === "BlockStatement") {
|
|
4649
|
+
for (const inner of stmt.body) {
|
|
4650
|
+
if (exitsFirst(inner)) return true;
|
|
4651
|
+
if (containsReturn(inner)) return false;
|
|
4652
|
+
}
|
|
4653
|
+
return false;
|
|
4654
|
+
}
|
|
4655
|
+
return stmt?.type === "ExpressionStatement" && exitCall(stmt.expression) || (stmt?.type === "ThrowStatement" || stmt?.type === "ReturnStatement") && exitCall(stmt.argument);
|
|
4656
|
+
};
|
|
4657
|
+
for (const stmt of load.body.body) {
|
|
4658
|
+
const test = stmt?.type === "IfStatement" && exitsFirst(stmt.consequent) ? unwrapTs(stmt.test) : void 0;
|
|
4659
|
+
if (test?.type === "UnaryExpression" && test.operator === "!") {
|
|
4660
|
+
const arg = unwrapTs(test.argument);
|
|
4661
|
+
const root = arg?.type === "MemberExpression" && !arg.computed ? unwrapTs(arg.object) : arg;
|
|
4662
|
+
const member = arg !== root && arg.property?.type === "Identifier" ? arg.property.name : void 0;
|
|
4663
|
+
const from = root?.type === "Identifier" && !local.has(root.name) && (arg === root || member) ? imported(root.name) : void 0;
|
|
4664
|
+
if (from) return {
|
|
4665
|
+
...from,
|
|
4666
|
+
...member ? { member } : {}
|
|
4667
|
+
};
|
|
4668
|
+
}
|
|
4669
|
+
if (containsReturn(stmt)) return void 0;
|
|
4670
|
+
}
|
|
4671
|
+
}
|
|
4672
|
+
/** The imported function `export const load = factory(…)` calls, for `collectKitModuleFacts` to read. */
|
|
4673
|
+
function loadFactory(program, imported) {
|
|
4674
|
+
let call;
|
|
4675
|
+
forEachNamedExport(program, (name, value) => {
|
|
4676
|
+
if (name !== "load") return void 0;
|
|
4677
|
+
call = unwrapTs(value);
|
|
4678
|
+
return true;
|
|
4679
|
+
});
|
|
4680
|
+
return call?.type === "CallExpression" && call.callee?.type === "Identifier" ? imported(call.callee.name) : void 0;
|
|
4681
|
+
}
|
|
4682
|
+
/**
|
|
4683
|
+
* The exported functions of a module that return a function which redirects or errors on every call
|
|
4684
|
+
* (`createRedirect = (to) => () => redirect(307, to)`), read like a `load` that does.
|
|
4685
|
+
*/
|
|
4686
|
+
function parseExitFactoryExports(source, filename) {
|
|
4687
|
+
const { program } = parseModuleProgram(source, filename);
|
|
4688
|
+
const exits = collectNamedImportAliases(program, "@sveltejs/kit", EXIT_NAMES);
|
|
4689
|
+
const names = /* @__PURE__ */ new Set();
|
|
4690
|
+
if (exits.size === 0) return names;
|
|
4691
|
+
forEachNamedExport(program, (name, value) => {
|
|
4692
|
+
if (!isFunctionNode(value)) return void 0;
|
|
4693
|
+
const first = (value.body?.type === "BlockStatement" ? value.body.body : [{
|
|
4694
|
+
type: "ReturnStatement",
|
|
4695
|
+
argument: value.body
|
|
4696
|
+
}]).find((stmt) => containsReturn(stmt));
|
|
4697
|
+
const returned = first?.type === "ReturnStatement" ? first.argument : void 0;
|
|
4698
|
+
if (isFunctionNode(returned) && alwaysExits(program, returned, exits)) names.add(name);
|
|
4699
|
+
});
|
|
4700
|
+
return names;
|
|
4701
|
+
}
|
|
4702
|
+
/** The exports of a module that are the literal `false`, as `NAME` or `NAME.member` (an object literal's own property). */
|
|
4703
|
+
function parseFalseExports(source, filename) {
|
|
4704
|
+
return collectFalseExports(parseModuleProgram(source, filename).program);
|
|
4705
|
+
}
|
|
4706
|
+
/** `parseFalseExports` over a parsed module. */
|
|
4707
|
+
function collectFalseExports(program) {
|
|
4708
|
+
const names = /* @__PURE__ */ new Set();
|
|
4709
|
+
for (const stmt of program?.body ?? []) {
|
|
4710
|
+
if (stmt?.type !== "ExportNamedDeclaration" || stmt.declaration?.type !== "VariableDeclaration") continue;
|
|
4711
|
+
if (stmt.declaration.kind !== "const") continue;
|
|
4712
|
+
for (const d of stmt.declaration.declarations ?? []) {
|
|
4713
|
+
const init = unwrapTs(d?.init);
|
|
4714
|
+
if (d?.id?.type !== "Identifier") continue;
|
|
4715
|
+
if (init?.type === "Literal" && init.value === false) names.add(d.id.name);
|
|
4716
|
+
if (init?.type === "ObjectExpression") {
|
|
4717
|
+
const members = /* @__PURE__ */ new Map();
|
|
4718
|
+
for (const p of init.properties ?? []) {
|
|
4719
|
+
const v = unwrapTs(p?.value);
|
|
4720
|
+
if (p?.type !== "Property" || p.computed || p.key?.type !== "Identifier") members.clear();
|
|
4721
|
+
else members.set(p.key.name, v?.type === "Literal" && v.value === false);
|
|
4722
|
+
}
|
|
4723
|
+
for (const [key, isFalse] of members) if (isFalse) names.add(`${d.id.name}.${key}`);
|
|
4724
|
+
}
|
|
4725
|
+
}
|
|
4726
|
+
}
|
|
4727
|
+
return names;
|
|
4728
|
+
}
|
|
4729
|
+
/**
|
|
4730
|
+
* Whether the exported `load` sends a request without a session away before rendering: a top-level
|
|
4731
|
+
* `if` whose test is only negated reads of the request's `locals` (`!locals.user`,
|
|
4732
|
+
* `!(await locals.auth())`, or a `const` taken from one earlier in the body) and whose branch
|
|
4733
|
+
* redirects or errors 401/403. A test that also reads anything else — the URL, params — gates only
|
|
4734
|
+
* some requests and does not count; neither does a gate after a `return`.
|
|
4735
|
+
*/
|
|
4736
|
+
function loadGatesOnLocals(program) {
|
|
4737
|
+
const redirects = collectNamedImportAliases(program, "@sveltejs/kit", REDIRECT_NAMES);
|
|
4738
|
+
const errors = collectNamedImportAliases(program, "@sveltejs/kit", ERROR_NAMES);
|
|
4739
|
+
const load = redirects.size + errors.size > 0 ? findLoadFunction(program) : void 0;
|
|
4740
|
+
if (load?.body?.type !== "BlockStatement") return false;
|
|
4741
|
+
const param = load.params?.[0];
|
|
4742
|
+
const event = param?.type === "Identifier" ? param.name : void 0;
|
|
4743
|
+
const derived = /* @__PURE__ */ new Set();
|
|
4744
|
+
if (param?.type === "ObjectPattern") {
|
|
4745
|
+
for (const p of param.properties ?? []) if (p?.type === "Property" && (p.key?.name ?? p.key?.value) === "locals") addBoundNames(p.value, derived);
|
|
4746
|
+
}
|
|
4747
|
+
const fromLocals = (expr) => {
|
|
4748
|
+
let cur = unwrapTs(expr);
|
|
4749
|
+
let prev;
|
|
4750
|
+
for (;;) if (cur?.type === "AwaitExpression" || cur?.type === "ChainExpression") cur = unwrapTs(cur.argument ?? cur.expression);
|
|
4751
|
+
else if (cur?.type === "CallExpression" && (cur.arguments ?? []).length === 0) cur = unwrapTs(cur.callee);
|
|
4752
|
+
else if (cur?.type === "MemberExpression" && !cur.computed) [prev, cur] = [cur, unwrapTs(cur.object)];
|
|
4753
|
+
else break;
|
|
4754
|
+
if (cur?.type !== "Identifier") return false;
|
|
4755
|
+
return derived.has(cur.name) || cur.name === event && prev?.computed === false && prev.property?.name === "locals";
|
|
4756
|
+
};
|
|
4757
|
+
const negated = (test) => {
|
|
4758
|
+
const t = unwrapTs(test);
|
|
4759
|
+
if (t?.type === "LogicalExpression") return t.operator === "||" && negated(t.left) && negated(t.right);
|
|
4760
|
+
return t?.type === "UnaryExpression" && t.operator === "!" && fromLocals(t.argument);
|
|
4761
|
+
};
|
|
4762
|
+
const exitCall = (expr) => {
|
|
4763
|
+
const e = unwrapTs(expr);
|
|
4764
|
+
if (e?.type !== "CallExpression" || e.callee?.type !== "Identifier") return false;
|
|
4765
|
+
if (redirects.has(e.callee.name)) return true;
|
|
4766
|
+
if (!errors.has(e.callee.name)) return false;
|
|
4767
|
+
const status = e.arguments?.[0];
|
|
4768
|
+
return status?.type === "Literal" && (status.value === 401 || status.value === 403);
|
|
4769
|
+
};
|
|
4770
|
+
const exitsNow = (stmt) => {
|
|
4771
|
+
if (stmt?.type !== "BlockStatement") return stmt?.type === "ExpressionStatement" && exitCall(stmt.expression) || (stmt?.type === "ThrowStatement" || stmt?.type === "ReturnStatement") && exitCall(stmt.argument);
|
|
4772
|
+
for (const inner of stmt.body) {
|
|
4773
|
+
if (exitsNow(inner)) return true;
|
|
4774
|
+
if (containsReturn(inner)) return false;
|
|
4284
4775
|
}
|
|
4285
4776
|
return false;
|
|
4286
4777
|
};
|
|
4287
|
-
|
|
4778
|
+
for (const stmt of load.body.body) {
|
|
4779
|
+
if (stmt?.type === "IfStatement" && negated(stmt.test) && exitsNow(stmt.consequent)) return true;
|
|
4780
|
+
if (containsReturn(stmt)) return false;
|
|
4781
|
+
if (stmt?.type === "VariableDeclaration" && stmt.kind === "const") {
|
|
4782
|
+
for (const d of stmt.declarations ?? []) if (d?.init && fromLocals(d.init)) addBoundNames(d.id, derived);
|
|
4783
|
+
}
|
|
4784
|
+
}
|
|
4785
|
+
return false;
|
|
4288
4786
|
}
|
|
4289
4787
|
/**
|
|
4290
4788
|
* Whether `await`'s argument is a `parent()` / `<x>.parent()` call (Kit's parent-load
|
|
@@ -4306,6 +4804,7 @@ const BODY_METHODS = /* @__PURE__ */ new Set([
|
|
|
4306
4804
|
"formData",
|
|
4307
4805
|
"bytes"
|
|
4308
4806
|
]);
|
|
4807
|
+
const PROMISE_COMBINATORS = /* @__PURE__ */ new Set(["all", "allSettled"]);
|
|
4309
4808
|
/**
|
|
4310
4809
|
* Whether `await`'s argument is a response-body read (`res.json()`, `res.text()`, …):
|
|
4311
4810
|
* parsing an already-received body costs no extra round trip, so it is not a
|
|
@@ -4314,9 +4813,12 @@ const BODY_METHODS = /* @__PURE__ */ new Set([
|
|
|
4314
4813
|
*/
|
|
4315
4814
|
function isBodyParseCall(arg) {
|
|
4316
4815
|
const e = unwrapTs(arg);
|
|
4317
|
-
if (e?.type !== "CallExpression"
|
|
4816
|
+
if (e?.type !== "CallExpression") return false;
|
|
4318
4817
|
const callee = e.callee;
|
|
4319
|
-
|
|
4818
|
+
if (callee?.type !== "MemberExpression" || callee.computed || callee.property.type !== "Identifier") return false;
|
|
4819
|
+
if (BODY_METHODS.has(callee.property.name)) return !e.arguments?.length;
|
|
4820
|
+
const list = e.arguments?.length === 1 ? unwrapTs(e.arguments[0]) : void 0;
|
|
4821
|
+
return callee.object.type === "Identifier" && callee.object.name === "Promise" && PROMISE_COMBINATORS.has(callee.property.name) && list?.type === "ArrayExpression" && list.elements.length > 0 && list.elements.every((el) => el && isBodyParseCall(el));
|
|
4320
4822
|
}
|
|
4321
4823
|
const WORK_STARTING = /* @__PURE__ */ new Set([
|
|
4322
4824
|
"CallExpression",
|
|
@@ -4413,6 +4915,19 @@ function collectLoadWaterfalls(program, wrapped) {
|
|
|
4413
4915
|
};
|
|
4414
4916
|
const line = (start) => Math.max(0, lineOf(wrapped, start) - 1);
|
|
4415
4917
|
const tainted = /* @__PURE__ */ new Set();
|
|
4918
|
+
const ownBindings = /* @__PURE__ */ new Set();
|
|
4919
|
+
const collectOwn = (body) => {
|
|
4920
|
+
for (const stmt of body ?? []) {
|
|
4921
|
+
if (stmt?.type === "TryStatement") collectOwn(stmt.block?.body);
|
|
4922
|
+
if (stmt?.type !== "VariableDeclaration") continue;
|
|
4923
|
+
for (const d of stmt.declarations ?? []) {
|
|
4924
|
+
let init = unwrapTs(d?.init);
|
|
4925
|
+
if (init?.type === "AwaitExpression") init = unwrapTs(init.argument);
|
|
4926
|
+
if (init?.type === "CallExpression" || init?.type === "NewExpression") addBoundNames(d?.id, ownBindings);
|
|
4927
|
+
}
|
|
4928
|
+
}
|
|
4929
|
+
};
|
|
4930
|
+
collectOwn(load.body.body);
|
|
4416
4931
|
const syncTainted = /* @__PURE__ */ new Set();
|
|
4417
4932
|
let sawAwaitSite = false;
|
|
4418
4933
|
const taintTarget = (target, rhs) => {
|
|
@@ -4435,6 +4950,26 @@ function collectLoadWaterfalls(program, wrapped) {
|
|
|
4435
4950
|
const root = rootObjectName(callee);
|
|
4436
4951
|
if (root) tainted.add(root);
|
|
4437
4952
|
};
|
|
4953
|
+
const taintLoopFill = (call) => {
|
|
4954
|
+
const callee = unwrapTs(call?.callee);
|
|
4955
|
+
if (call?.type !== "CallExpression" || callee?.type !== "MemberExpression" || callee.computed) return;
|
|
4956
|
+
if (!ITERATING_METHODS.has(callee.property?.name) || !refsTainted(callee.object, tainted)) return;
|
|
4957
|
+
const fill = (node) => {
|
|
4958
|
+
if (Array.isArray(node)) return node.forEach(fill);
|
|
4959
|
+
if (!node || typeof node !== "object" || typeof node.type !== "string") return;
|
|
4960
|
+
if (isFunctionNode(node)) return;
|
|
4961
|
+
const c = node.type === "CallExpression" ? unwrapTs(node.callee) : void 0;
|
|
4962
|
+
if (c?.type === "MemberExpression" && !c.computed && MUTATING_METHODS.has(c.property?.name)) {
|
|
4963
|
+
const root = rootObjectName(c);
|
|
4964
|
+
if (root) tainted.add(root);
|
|
4965
|
+
}
|
|
4966
|
+
if (c?.type === "MemberExpression" && !c.computed && ITERATING_METHODS.has(c.property?.name)) {
|
|
4967
|
+
for (const arg of node.arguments ?? []) if (isFunctionNode(arg)) fill(arg.body);
|
|
4968
|
+
}
|
|
4969
|
+
for (const key of Object.keys(node)) if (!WALK_IGNORED_KEYS.has(key)) fill(node[key]);
|
|
4970
|
+
};
|
|
4971
|
+
for (const arg of call.arguments ?? []) if (isFunctionNode(arg)) fill(arg.body);
|
|
4972
|
+
};
|
|
4438
4973
|
const taintOnly = (node) => {
|
|
4439
4974
|
if (Array.isArray(node)) {
|
|
4440
4975
|
for (const child of node) taintOnly(child);
|
|
@@ -4443,13 +4978,18 @@ function collectLoadWaterfalls(program, wrapped) {
|
|
|
4443
4978
|
if (!node || typeof node !== "object" || typeof node.type !== "string") return;
|
|
4444
4979
|
if (isFunctionNode(node)) return;
|
|
4445
4980
|
if (node.type === "AssignmentExpression") taintTarget(node.left, node.right);
|
|
4446
|
-
else if (node.type === "CallExpression")
|
|
4447
|
-
|
|
4981
|
+
else if (node.type === "CallExpression") {
|
|
4982
|
+
taintMutation(node);
|
|
4983
|
+
taintLoopFill(node);
|
|
4984
|
+
} else if ((node.type === "ForOfStatement" || node.type === "ForInStatement") && refsTainted(node.right, tainted)) {
|
|
4448
4985
|
const names = /* @__PURE__ */ new Set();
|
|
4449
4986
|
addBoundNames(node.left?.type === "VariableDeclaration" ? node.left.declarations?.[0]?.id : node.left, names);
|
|
4450
4987
|
for (const name of names) tainted.add(name);
|
|
4451
4988
|
} else if (node.type === "VariableDeclaration") {
|
|
4452
|
-
for (const d of node.declarations ?? []) if (d?.id && d.init)
|
|
4989
|
+
for (const d of node.declarations ?? []) if (d?.id && d.init) {
|
|
4990
|
+
taintTarget(d.id, d.init);
|
|
4991
|
+
taintLoopFill(unwrapTs(d.init));
|
|
4992
|
+
}
|
|
4453
4993
|
}
|
|
4454
4994
|
for (const key of Object.keys(node)) {
|
|
4455
4995
|
if (WALK_IGNORED_KEYS.has(key)) continue;
|
|
@@ -4483,11 +5023,21 @@ function collectLoadWaterfalls(program, wrapped) {
|
|
|
4483
5023
|
sawAwaitSite = true;
|
|
4484
5024
|
}
|
|
4485
5025
|
if (stmt.type === "VariableDeclaration") {
|
|
4486
|
-
for (const d of stmt.declarations ?? []) if (d?.id && d.init)
|
|
5026
|
+
for (const d of stmt.declarations ?? []) if (d?.id && d.init) {
|
|
5027
|
+
taintTarget(d.id, d.init);
|
|
5028
|
+
taintLoopFill(unwrapTs(d.init));
|
|
5029
|
+
}
|
|
4487
5030
|
} else if (stmt.type === "ExpressionStatement") {
|
|
4488
5031
|
const expr = unwrapTs(stmt.expression);
|
|
4489
5032
|
if (expr?.type === "AssignmentExpression") taintTarget(expr.left, expr.right);
|
|
4490
|
-
else
|
|
5033
|
+
else {
|
|
5034
|
+
taintMutation(expr);
|
|
5035
|
+
taintLoopFill(expr);
|
|
5036
|
+
}
|
|
5037
|
+
const call = expr?.type === "AwaitExpression" ? unwrapTs(expr.argument) : void 0;
|
|
5038
|
+
const callee = call?.type === "CallExpression" ? unwrapTs(call.callee) : void 0;
|
|
5039
|
+
const owner = callee?.type === "MemberExpression" && !callee.computed ? unwrapTs(callee.object) : void 0;
|
|
5040
|
+
if (owner?.type === "Identifier" && ownBindings.has(owner.name)) tainted.add(owner.name);
|
|
4491
5041
|
}
|
|
4492
5042
|
} else taintOnly(stmt);
|
|
4493
5043
|
}
|
|
@@ -4584,7 +5134,7 @@ function aliasMatches(entry, spec) {
|
|
|
4584
5134
|
*/
|
|
4585
5135
|
function resolveRepoLocalPath(spec, importerFile, aliases = DEFAULT_KIT_ALIASES) {
|
|
4586
5136
|
let path;
|
|
4587
|
-
if (spec.startsWith("./") || spec.startsWith("../")) path = `${importerFile.split("/").slice(0, -1).join("/")}/${spec}`;
|
|
5137
|
+
if (spec === "." || spec === ".." || spec.startsWith("./") || spec.startsWith("../")) path = `${importerFile.split("/").slice(0, -1).join("/")}/${spec}`;
|
|
4588
5138
|
else {
|
|
4589
5139
|
const entry = aliases.find((a) => aliasMatches(a, spec));
|
|
4590
5140
|
if (entry?.replacement == null) return void 0;
|
|
@@ -4650,13 +5200,9 @@ function libServerRoot(aliases) {
|
|
|
4650
5200
|
* risks a false positive in this default-on security rule, and staying silent only costs a
|
|
4651
5201
|
* missed finding.
|
|
4652
5202
|
*/
|
|
4653
|
-
/** The resolved repo path
|
|
4654
|
-
function
|
|
4655
|
-
|
|
4656
|
-
if (serverRoot === void 0) return void 0;
|
|
4657
|
-
const path = resolveRepoLocalPath(spec, importerFile, aliases);
|
|
4658
|
-
if (path === void 0) return void 0;
|
|
4659
|
-
return path === serverRoot || path.startsWith(`${serverRoot}/`) ? path : void 0;
|
|
5203
|
+
/** The resolved repo path of a repo-local `spec`, or undefined when it is a package or the `$lib` root is opaque. */
|
|
5204
|
+
function localModulePath(spec, importerFile, aliases) {
|
|
5205
|
+
return libServerRoot(aliases) === void 0 ? void 0 : resolveRepoLocalPath(spec, importerFile, aliases);
|
|
4660
5206
|
}
|
|
4661
5207
|
function isLocalStateSpecifier(spec, importerFile, aliases) {
|
|
4662
5208
|
const serverRoot = libServerRoot(aliases);
|
|
@@ -4672,23 +5218,60 @@ const IN_MEMORY_CTORS = /* @__PURE__ */ new Set([
|
|
|
4672
5218
|
"WeakMap",
|
|
4673
5219
|
"WeakSet"
|
|
4674
5220
|
]);
|
|
5221
|
+
const isContainerCtor = (n) => n?.type === "NewExpression" && n.callee?.type === "Identifier" && IN_MEMORY_CTORS.has(n.callee.name);
|
|
4675
5222
|
/**
|
|
4676
5223
|
* Whether an initializer positively identifies an in-memory container. An object literal with a
|
|
4677
5224
|
* spread is a composite of values this parse cannot see — typically a facade over clients and
|
|
4678
5225
|
* imported modules (`{ ...prismaModels, ...handlers }`) — so it counts only when one of its own
|
|
4679
|
-
* properties is itself a container.
|
|
5226
|
+
* properties is itself a container. One whose properties are all functions (`{ get, set }` of the
|
|
5227
|
+
* module's own functions) holds no data: `.set()` on it calls its own method.
|
|
4680
5228
|
*/
|
|
4681
|
-
function isInMemoryInit(init) {
|
|
5229
|
+
function isInMemoryInit(init, fns = /* @__PURE__ */ new Set()) {
|
|
4682
5230
|
if (!init) return false;
|
|
4683
5231
|
if (init.type === "ArrayExpression") return true;
|
|
4684
5232
|
if (init.type === "ObjectExpression") {
|
|
4685
5233
|
const props = init.properties ?? [];
|
|
5234
|
+
const isFn = (p) => p?.type === "Property" && (p.method || p.value?.type === "FunctionExpression" || p.value?.type === "ArrowFunctionExpression" || p.value?.type === "Identifier" && fns.has(p.value.name));
|
|
5235
|
+
if (props.length > 0 && props.every(isFn)) return false;
|
|
4686
5236
|
if (!props.some((p) => p?.type === "SpreadElement")) return true;
|
|
4687
|
-
return props.some((p) => p?.type === "Property" && isInMemoryInit(p.value));
|
|
5237
|
+
return props.some((p) => p?.type === "Property" && isInMemoryInit(p.value, fns));
|
|
4688
5238
|
}
|
|
4689
5239
|
return init.type === "NewExpression" && init.callee?.type === "Identifier" && IN_MEMORY_CTORS.has(init.callee.name);
|
|
4690
5240
|
}
|
|
4691
5241
|
/**
|
|
5242
|
+
* The exported bindings of a module that are a persistence or API client: `new C()` of a class imported
|
|
5243
|
+
* from an installed package, or of a class this module declares that neither extends another class nor
|
|
5244
|
+
* keeps a `Map`/`Set`/`WeakMap`/`WeakSet` field; or a call into an installed package (`drizzle(…)`,
|
|
5245
|
+
* `createClient(…)`). A write through one of them reaches a database or service, not module state.
|
|
5246
|
+
*/
|
|
5247
|
+
function parseClientExports(source, filename, aliases) {
|
|
5248
|
+
const names = /* @__PURE__ */ new Set();
|
|
5249
|
+
const { program } = parseModuleProgram(source, filename);
|
|
5250
|
+
const fromPackage = /* @__PURE__ */ new Set();
|
|
5251
|
+
for (const stmt of program?.body ?? []) {
|
|
5252
|
+
const src = stmt?.type === "ImportDeclaration" ? String(stmt.source?.value ?? "") : "";
|
|
5253
|
+
if (!(!src || /^[./$~#]|^@\//.test(src) || resolveRepoLocalPath(src, filename, aliases) !== void 0) && !/^svelte|store/i.test(src)) for (const sp of stmt.specifiers ?? []) fromPackage.add(sp.local.name);
|
|
5254
|
+
}
|
|
5255
|
+
const plainClasses = /* @__PURE__ */ new Set();
|
|
5256
|
+
for (const stmt of program?.body ?? []) {
|
|
5257
|
+
const decl = unwrapExport(stmt);
|
|
5258
|
+
if (decl?.type !== "ClassDeclaration" || !decl.id || decl.superClass) continue;
|
|
5259
|
+
if (!(decl.body?.body ?? []).some((m) => isContainerCtor(m?.value) || m?.kind === "constructor" && m.value?.body?.body?.some((st) => st?.type === "ExpressionStatement" && isContainerCtor(st.expression?.right)))) plainClasses.add(decl.id.name);
|
|
5260
|
+
}
|
|
5261
|
+
for (const stmt of program?.body ?? []) {
|
|
5262
|
+
if (stmt?.type !== "ExportNamedDeclaration" || stmt.declaration?.type !== "VariableDeclaration") continue;
|
|
5263
|
+
for (const d of stmt.declaration.declarations ?? []) {
|
|
5264
|
+
let init = unwrapTs(d?.init);
|
|
5265
|
+
if (init?.type === "AwaitExpression") init = unwrapTs(init.argument);
|
|
5266
|
+
if (d?.id?.type !== "Identifier") continue;
|
|
5267
|
+
const ctor = init?.type === "NewExpression" && init.callee?.type === "Identifier" ? init.callee.name : void 0;
|
|
5268
|
+
if (ctor !== void 0 && (fromPackage.has(ctor) || plainClasses.has(ctor))) names.add(d.id.name);
|
|
5269
|
+
if (init?.type === "CallExpression" && fromPackage.has(rootObjectName(init.callee) ?? "")) names.add(d.id.name);
|
|
5270
|
+
}
|
|
5271
|
+
}
|
|
5272
|
+
return names;
|
|
5273
|
+
}
|
|
5274
|
+
/**
|
|
4692
5275
|
* The exported bindings of a module that are initialized to an in-memory container — an object
|
|
4693
5276
|
* or array literal (a spread literal only as `isInMemoryInit` allows), or `new Map`/`Set`/`WeakMap`/`WeakSet`. Used to arbitrate a `.set()` call on
|
|
4694
5277
|
* an import from under the `$lib` server root, where the call shape alone cannot separate a
|
|
@@ -4702,11 +5285,16 @@ function isInMemoryInit(init) {
|
|
|
4702
5285
|
function parseInMemoryExports(source, filename) {
|
|
4703
5286
|
const names = /* @__PURE__ */ new Set();
|
|
4704
5287
|
const { program } = parseModuleProgram(source, filename);
|
|
5288
|
+
const fns = /* @__PURE__ */ new Set();
|
|
5289
|
+
for (const stmt of program?.body ?? []) {
|
|
5290
|
+
const decl = unwrapExport(stmt);
|
|
5291
|
+
if (decl?.type === "FunctionDeclaration" && decl.id) fns.add(decl.id.name);
|
|
5292
|
+
}
|
|
4705
5293
|
for (const stmt of program?.body ?? []) {
|
|
4706
5294
|
if (stmt?.type !== "ExportNamedDeclaration" || !stmt.declaration) continue;
|
|
4707
5295
|
const decl = stmt.declaration;
|
|
4708
5296
|
if (decl.type !== "VariableDeclaration") continue;
|
|
4709
|
-
for (const d of decl.declarations ?? []) if (d?.id?.type === "Identifier" && isInMemoryInit(d.init)) names.add(d.id.name);
|
|
5297
|
+
for (const d of decl.declarations ?? []) if (d?.id?.type === "Identifier" && isInMemoryInit(d.init, fns)) names.add(d.id.name);
|
|
4710
5298
|
}
|
|
4711
5299
|
return names;
|
|
4712
5300
|
}
|
|
@@ -4722,6 +5310,7 @@ function parseKitModuleFacts(source, filename, aliases) {
|
|
|
4722
5310
|
const importedStateWrites = [];
|
|
4723
5311
|
const importedStateWritesOutsideHandlers = [];
|
|
4724
5312
|
const pendingServerStoreWrites = [];
|
|
5313
|
+
const storeWriteTargets = [];
|
|
4725
5314
|
const runesModuleImports = [];
|
|
4726
5315
|
const lifecycleCalls = [];
|
|
4727
5316
|
const browserGlobalRefs = [];
|
|
@@ -4740,6 +5329,11 @@ function parseKitModuleFacts(source, filename, aliases) {
|
|
|
4740
5329
|
const importedSpecifiers = /* @__PURE__ */ new Map();
|
|
4741
5330
|
const importedNames = /* @__PURE__ */ new Map();
|
|
4742
5331
|
const namespaceImports = /* @__PURE__ */ new Set();
|
|
5332
|
+
const localFunctions = /* @__PURE__ */ new Set();
|
|
5333
|
+
walkEstree(program, (n) => {
|
|
5334
|
+
if (n.type === "FunctionDeclaration" && n.id?.name) localFunctions.add(n.id.name);
|
|
5335
|
+
if (n.type === "VariableDeclarator" && n.id?.type === "Identifier" && n.init && isFunctionNode(unwrapTs(n.init))) localFunctions.add(n.id.name);
|
|
5336
|
+
});
|
|
4743
5337
|
for (const stmt of program.body ?? []) {
|
|
4744
5338
|
if (stmt?.type !== "ImportDeclaration" || stmt.importKind === "type") continue;
|
|
4745
5339
|
const spec = typeof stmt.source?.value === "string" ? stmt.source.value : "";
|
|
@@ -4771,7 +5365,7 @@ function parseKitModuleFacts(source, filename, aliases) {
|
|
|
4771
5365
|
const ssrOptOut = findFalseOptOut(program, wrapped, "ssr");
|
|
4772
5366
|
const csrOptOut = findFalseOptOut(program, wrapped, "csr");
|
|
4773
5367
|
const waterfalls = collectLoadWaterfalls(program, wrapped);
|
|
4774
|
-
if (!ssrOptOut) {
|
|
5368
|
+
if (!ssrOptOut?.literal) {
|
|
4775
5369
|
const shiftLine = (l) => Math.max(0, l - 1);
|
|
4776
5370
|
const browserImports = collectBrowserGuardImports(program);
|
|
4777
5371
|
const guards = /* @__PURE__ */ new Set([...browserImports, ...collectDerivedGuardBindings(program, browserImports)]);
|
|
@@ -4803,10 +5397,12 @@ function parseKitModuleFacts(source, filename, aliases) {
|
|
|
4803
5397
|
scanFn(fn, false);
|
|
4804
5398
|
}
|
|
4805
5399
|
}
|
|
5400
|
+
const browserOnly = browserOnlyRanges(program, collectBrowserGuardImports(program));
|
|
5401
|
+
const reachedOnlyByBrowser = (at) => browserOnly.some(([from, to]) => at >= from && at < to);
|
|
4806
5402
|
walkKit(program, handlerFns, startupFns, (n, shadowed, inFunction, inHandler, inStartup) => {
|
|
4807
5403
|
if (inFunction && !inStartup) {
|
|
4808
5404
|
const flagLet = (name) => {
|
|
4809
|
-
if (name && !shadowed.has(name) && moduleLets.has(name)) moduleStateReassignments.push({
|
|
5405
|
+
if (name && !shadowed.has(name) && moduleLets.has(name) && !reachedOnlyByBrowser(n.start)) moduleStateReassignments.push({
|
|
4810
5406
|
name,
|
|
4811
5407
|
line: line(n.start),
|
|
4812
5408
|
inHandler
|
|
@@ -4847,23 +5443,25 @@ function parseKitModuleFacts(source, filename, aliases) {
|
|
|
4847
5443
|
} else if (n.type === "CallExpression" && n.callee?.type === "MemberExpression") {
|
|
4848
5444
|
const method = n.callee.property?.type === "Identifier" ? n.callee.property.name : void 0;
|
|
4849
5445
|
const nsFunction = n.callee.object?.type === "Identifier" && namespaceImports.has(n.callee.object.name);
|
|
4850
|
-
|
|
5446
|
+
const updater = method !== "update" || isUpdaterArgument(n.arguments?.[0], localFunctions);
|
|
5447
|
+
if ((method === "set" || method === "update") && !nsFunction && updater) {
|
|
4851
5448
|
const r = importedRoot(n.callee.object);
|
|
4852
5449
|
const spec = r ? importedSpecifiers.get(r) : void 0;
|
|
4853
5450
|
if (r && spec !== void 0) {
|
|
4854
|
-
|
|
5451
|
+
const resolved = localModulePath(spec, filename, aliases);
|
|
5452
|
+
const target = {
|
|
4855
5453
|
name: r,
|
|
4856
|
-
|
|
5454
|
+
imported: importedNames.get(r) ?? r,
|
|
5455
|
+
resolved,
|
|
5456
|
+
line: line(n.start)
|
|
4857
5457
|
};
|
|
4858
|
-
|
|
4859
|
-
|
|
4860
|
-
if (resolved !== void 0 && inHandler) pendingServerStoreWrites.push({
|
|
5458
|
+
if (isLocalStateSpecifier(spec, filename, aliases)) {
|
|
5459
|
+
write = {
|
|
4861
5460
|
name: r,
|
|
4862
|
-
|
|
4863
|
-
|
|
4864
|
-
|
|
4865
|
-
|
|
4866
|
-
}
|
|
5461
|
+
via: "set-call"
|
|
5462
|
+
};
|
|
5463
|
+
if (inHandler) storeWriteTargets.push(target);
|
|
5464
|
+
} else if (resolved !== void 0 && inHandler) pendingServerStoreWrites.push(target);
|
|
4867
5465
|
}
|
|
4868
5466
|
}
|
|
4869
5467
|
} else if (n.type === "AssignmentExpression" && (n.left?.type === "ObjectPattern" || n.left?.type === "ArrayPattern")) {
|
|
@@ -4884,6 +5482,7 @@ function parseKitModuleFacts(source, filename, aliases) {
|
|
|
4884
5482
|
};
|
|
4885
5483
|
scanPatternTargets(n.left);
|
|
4886
5484
|
}
|
|
5485
|
+
if (write && reachedOnlyByBrowser(n.start)) write = void 0;
|
|
4887
5486
|
if (write) {
|
|
4888
5487
|
if (inHandler) importedStateWrites.push({
|
|
4889
5488
|
...write,
|
|
@@ -4915,25 +5514,56 @@ function parseKitModuleFacts(source, filename, aliases) {
|
|
|
4915
5514
|
line: line(call.start)
|
|
4916
5515
|
});
|
|
4917
5516
|
}
|
|
5517
|
+
const exitLocals = collectNamedImportAliases(program, "@sveltejs/kit", EXIT_NAMES);
|
|
5518
|
+
const neverRenders = loadNeverRenders(program, exitLocals);
|
|
5519
|
+
const building = collectNamedImportAliases(program, "$app/environment", BUILDING_NAMES);
|
|
5520
|
+
const hooks = /(^|\/)hooks\.server\.(ts|js)$/.test(filename);
|
|
5521
|
+
const answered = hooks ? handleAnsweredPaths(program, exitLocals) : [];
|
|
5522
|
+
const chunkTokens = hooks ? pageChunkTokens(program) : [];
|
|
5523
|
+
const flagGuard = leadingFlagGuard(program, exitLocals, (local) => {
|
|
5524
|
+
const spec = namespaceImports.has(local) ? void 0 : importedSpecifiers.get(local);
|
|
5525
|
+
const resolved = spec === void 0 ? void 0 : localModulePath(spec, filename, aliases);
|
|
5526
|
+
return resolved === void 0 ? void 0 : {
|
|
5527
|
+
resolved,
|
|
5528
|
+
name: importedNames.get(local) ?? local
|
|
5529
|
+
};
|
|
5530
|
+
});
|
|
5531
|
+
const factory = loadFactory(program, (local) => {
|
|
5532
|
+
const spec = namespaceImports.has(local) ? void 0 : importedSpecifiers.get(local);
|
|
5533
|
+
const resolved = spec === void 0 ? void 0 : localModulePath(spec, filename, aliases);
|
|
5534
|
+
return resolved === void 0 ? void 0 : {
|
|
5535
|
+
resolved,
|
|
5536
|
+
name: importedNames.get(local) ?? local
|
|
5537
|
+
};
|
|
5538
|
+
});
|
|
4918
5539
|
return {
|
|
4919
5540
|
moduleStateReassignments: byLine(moduleStateReassignments),
|
|
4920
5541
|
importedStateWrites: byLine(importedStateWrites),
|
|
4921
5542
|
importedStateWritesOutsideHandlers: byLine(importedStateWritesOutsideHandlers),
|
|
4922
5543
|
pendingServerStoreWrites: byLine(pendingServerStoreWrites),
|
|
5544
|
+
...storeWriteTargets.length > 0 ? { storeWriteTargets } : {},
|
|
4923
5545
|
runesModuleImports: byLine(runesModuleImports),
|
|
4924
5546
|
lifecycleCalls: byLine(lifecycleCalls),
|
|
4925
5547
|
browserGlobalRefs: byLine(browserGlobalRefs),
|
|
4926
5548
|
basePathLinks: byLine(basePathLinks),
|
|
4927
5549
|
...ssrOptOut ? { ssrDisabled: { line: Math.max(0, ssrOptOut.line - 1) } } : {},
|
|
4928
5550
|
...!ssrOptOut && exportsName(program, "ssr") ? { ssrEnabled: true } : {},
|
|
5551
|
+
...!ssrOptOut && exportsTrue(program, "ssr") ? { ssrTrue: true } : {},
|
|
4929
5552
|
...csrOptOut ? { csrDisabled: { line: Math.max(0, csrOptOut.line - 1) } } : {},
|
|
4930
|
-
|
|
5553
|
+
...!csrOptOut && exportsName(program, "csr") ? { csrEnabled: true } : {},
|
|
5554
|
+
...neverRenders ? { loadNeverRenders: true } : {},
|
|
5555
|
+
...!neverRenders && building.size > 0 && loadNeverRenders(program, exitLocals, building) ? { loadNeverRendersOutsideBuild: true } : {},
|
|
5556
|
+
...exportsName(program, "prerender") ? { prerenderExported: true } : {},
|
|
5557
|
+
...answered.length > 0 ? { answeredPaths: answered } : {},
|
|
5558
|
+
...chunkTokens.length > 0 ? { pageChunkTokens: chunkTokens } : {},
|
|
5559
|
+
...flagGuard ? { pendingFlagGuard: flagGuard } : {},
|
|
5560
|
+
...factory ? { pendingLoadFactory: factory } : {},
|
|
5561
|
+
...loadGatesOnLocals(program) ? { loadGated: true } : {},
|
|
4931
5562
|
...waterfalls.dependentLines.length > 0 || waterfalls.independentLines.length > 0 ? { loadWaterfalls: waterfalls } : {},
|
|
4932
5563
|
suppressions
|
|
4933
5564
|
};
|
|
4934
5565
|
}
|
|
4935
|
-
|
|
4936
|
-
//#region src/rules/architecture/private-scope-import.ts
|
|
5566
|
+
// src/rules/architecture/private-scope-import.ts
|
|
4937
5567
|
const docsUrl$4 = docsUrlFor("architecture/private-scope-import");
|
|
4938
5568
|
const recommendation$4 = "Move the unit to the directory shared by all of its importers, or import it only from inside its own scope.";
|
|
4939
5569
|
const OPTIONS$5 = { scopes: {
|
|
@@ -5060,8 +5690,7 @@ const architecturePrivateScopeImport = {
|
|
|
5060
5690
|
return out;
|
|
5061
5691
|
}
|
|
5062
5692
|
};
|
|
5063
|
-
|
|
5064
|
-
//#region src/rules/architecture/declarations.ts
|
|
5693
|
+
// src/rules/architecture/declarations.ts
|
|
5065
5694
|
/**
|
|
5066
5695
|
* Glob-declaration machinery shared by the Architecture rules that let a project declare a
|
|
5067
5696
|
* convention over directory globs — `architecture/unit-entry-file` (design 2026-07-28),
|
|
@@ -5311,8 +5940,7 @@ function classifyUnusedKeys(unused, excludedDirs, compile) {
|
|
|
5311
5940
|
for (const key of unused) out.set(key, shadowed.has(key) ? "only-excluded" : "no-match");
|
|
5312
5941
|
return out;
|
|
5313
5942
|
}
|
|
5314
|
-
|
|
5315
|
-
//#region src/rules/architecture/unit-entry-file.ts
|
|
5943
|
+
// src/rules/architecture/unit-entry-file.ts
|
|
5316
5944
|
const ID$6 = "architecture/unit-entry-file";
|
|
5317
5945
|
const docsUrl$3 = docsUrlFor(ID$6);
|
|
5318
5946
|
const recommendation$3 = "Give every declared unit directory a file named after it, or stop declaring that directory a unit.";
|
|
@@ -5454,8 +6082,7 @@ const architectureUnitEntryFile = {
|
|
|
5454
6082
|
return out;
|
|
5455
6083
|
}
|
|
5456
6084
|
};
|
|
5457
|
-
|
|
5458
|
-
//#region src/rules/architecture/casing.ts
|
|
6085
|
+
// src/rules/architecture/casing.ts
|
|
5459
6086
|
/**
|
|
5460
6087
|
* The casing vocabulary and the SvelteKit route-segment decoder used by
|
|
5461
6088
|
* `architecture/directory-naming` (design 2026-07-29).
|
|
@@ -5533,8 +6160,7 @@ function satisfiesCasing(name, allowed) {
|
|
|
5533
6160
|
if (!/[a-zA-Z]/.test(name)) return true;
|
|
5534
6161
|
return allowed.some((c) => Object.hasOwn(CASINGS, c) && CASINGS[c].test(name));
|
|
5535
6162
|
}
|
|
5536
|
-
|
|
5537
|
-
//#region src/rules/architecture/directory-naming.ts
|
|
6163
|
+
// src/rules/architecture/directory-naming.ts
|
|
5538
6164
|
const ID$5 = "architecture/directory-naming";
|
|
5539
6165
|
const docsUrl$2 = docsUrlFor(ID$5);
|
|
5540
6166
|
const recommendation$2 = "Name each directory in the casing its location declares, or narrow the declaration.";
|
|
@@ -5659,8 +6285,7 @@ const architectureDirectoryNaming = {
|
|
|
5659
6285
|
return out;
|
|
5660
6286
|
}
|
|
5661
6287
|
};
|
|
5662
|
-
|
|
5663
|
-
//#region src/rules/architecture/reserved-directory-names.ts
|
|
6288
|
+
// src/rules/architecture/reserved-directory-names.ts
|
|
5664
6289
|
const ID$4 = "architecture/reserved-directory-names";
|
|
5665
6290
|
const docsUrl$1 = docsUrlFor(ID$4);
|
|
5666
6291
|
const recommendation$1 = "Use one of the names this location declares, or add the new name to the declaration.";
|
|
@@ -5912,8 +6537,7 @@ const architectureReservedDirectoryNames = {
|
|
|
5912
6537
|
return out;
|
|
5913
6538
|
}
|
|
5914
6539
|
};
|
|
5915
|
-
|
|
5916
|
-
//#region src/rules/architecture/reserved-name-placement.ts
|
|
6540
|
+
// src/rules/architecture/reserved-name-placement.ts
|
|
5917
6541
|
const ID$3 = "architecture/reserved-name-placement";
|
|
5918
6542
|
const docsUrl = docsUrlFor(ID$3);
|
|
5919
6543
|
const recommendation = "Move it to one of the places declared for this name, or declare this place for it.";
|
|
@@ -6113,8 +6737,7 @@ const architectureReservedNamePlacement = {
|
|
|
6113
6737
|
return out;
|
|
6114
6738
|
}
|
|
6115
6739
|
};
|
|
6116
|
-
|
|
6117
|
-
//#region src/rules/architecture/route-component-import.ts
|
|
6740
|
+
// src/rules/architecture/route-component-import.ts
|
|
6118
6741
|
const ID$2 = "architecture/route-component-import";
|
|
6119
6742
|
/**
|
|
6120
6743
|
* Satellite files that legitimately render a route entry by hand: a story renders it to look at,
|
|
@@ -6207,8 +6830,7 @@ const architectureRouteComponentImport = componentRule({
|
|
|
6207
6830
|
}));
|
|
6208
6831
|
}
|
|
6209
6832
|
});
|
|
6210
|
-
|
|
6211
|
-
//#region src/rules/architecture/doc-link-target.ts
|
|
6833
|
+
// src/rules/architecture/doc-link-target.ts
|
|
6212
6834
|
const ID$1 = "architecture/doc-link-target";
|
|
6213
6835
|
/** A `#fragment` or `?query` addresses a location within the target, not the target's own path. */
|
|
6214
6836
|
function stripFragment(url) {
|
|
@@ -6326,8 +6948,7 @@ const performanceHeavyImport = componentRule({
|
|
|
6326
6948
|
return out;
|
|
6327
6949
|
}
|
|
6328
6950
|
});
|
|
6329
|
-
|
|
6330
|
-
//#region src/rules/perf/namespace-import.ts
|
|
6951
|
+
// src/rules/perf/namespace-import.ts
|
|
6331
6952
|
const performanceNamespaceImport = componentRule({
|
|
6332
6953
|
id: "performance/namespace-import",
|
|
6333
6954
|
title: "Namespace import",
|
|
@@ -6349,8 +6970,7 @@ const performanceNamespaceImport = componentRule({
|
|
|
6349
6970
|
}));
|
|
6350
6971
|
}
|
|
6351
6972
|
});
|
|
6352
|
-
|
|
6353
|
-
//#region src/rules/perf/minify-disabled.ts
|
|
6973
|
+
// src/rules/perf/minify-disabled.ts
|
|
6354
6974
|
const PENALIZED = {
|
|
6355
6975
|
presence: "none",
|
|
6356
6976
|
value: "absent"
|
|
@@ -6393,14 +7013,13 @@ const performanceMinifyDisabled = {
|
|
|
6393
7013
|
}];
|
|
6394
7014
|
}
|
|
6395
7015
|
};
|
|
6396
|
-
|
|
6397
|
-
//#region src/rules/perf/load-waterfall.ts
|
|
7016
|
+
// src/rules/perf/load-waterfall.ts
|
|
6398
7017
|
const MESSAGE$1 = "Sequential dependent awaits in a universal load create a client-side request waterfall — each hop is a network round trip from the browser. Move this chain to a server load (+page.server.ts / +layout.server.ts), where the hops run server-side.";
|
|
6399
7018
|
/**
|
|
6400
7019
|
* performance/load-waterfall — dependent await chains in universal loads. Server loads are exempt:
|
|
6401
7020
|
* a dependent chain cannot be parallelized, and on the server there is no better
|
|
6402
|
-
* placement to suggest. csr = false
|
|
6403
|
-
* runtime the universal load only runs during SSR.
|
|
7021
|
+
* placement to suggest. Loads on a route with `csr = false` (its own or a layout's) are exempt
|
|
7022
|
+
* too — without a client runtime the universal load only runs during SSR.
|
|
6404
7023
|
*/
|
|
6405
7024
|
const performanceLoadWaterfall = kitModuleRule({
|
|
6406
7025
|
id: "performance/load-waterfall",
|
|
@@ -6415,14 +7034,13 @@ const performanceLoadWaterfall = kitModuleRule({
|
|
|
6415
7034
|
snippet: "// +page.server.ts — same chain, server-side hops\nexport async function load({ fetch }) {\n const user = await fetch(`/api/user`).then((r) => r.json());\n const posts = await fetch(`/api/posts/${user.id}`).then((r) => r.json());\n return { user, posts };\n}",
|
|
6416
7035
|
lang: "ts"
|
|
6417
7036
|
},
|
|
6418
|
-
applies: (m) => m.kind === "universal" &&
|
|
7037
|
+
applies: (m, ctx) => m.kind === "universal" && (m.loadWaterfalls?.dependentLines.length ?? 0) > 0 && !universalNeverCsr(m, ctx),
|
|
6419
7038
|
bad: (m) => m.loadWaterfalls.dependentLines.map((line) => ({
|
|
6420
7039
|
line,
|
|
6421
7040
|
message: MESSAGE$1
|
|
6422
7041
|
}))
|
|
6423
7042
|
});
|
|
6424
|
-
|
|
6425
|
-
//#region src/rules/perf/sequential-awaits.ts
|
|
7043
|
+
// src/rules/perf/sequential-awaits.ts
|
|
6426
7044
|
const MESSAGE = "This await does not use the results of the awaits before it — the requests run sequentially for no reason. Start them together and await them with Promise.all.";
|
|
6427
7045
|
/**
|
|
6428
7046
|
* performance/sequential-awaits — independent sequential awaits in any load. Info severity: static
|
|
@@ -6448,8 +7066,7 @@ const performanceSequentialAwaits = kitModuleRule({
|
|
|
6448
7066
|
message: MESSAGE
|
|
6449
7067
|
}))
|
|
6450
7068
|
});
|
|
6451
|
-
|
|
6452
|
-
//#region src/rules/perf/state-raw.ts
|
|
7069
|
+
// src/rules/perf/state-raw.ts
|
|
6453
7070
|
/**
|
|
6454
7071
|
* performance/state-raw — deep $state proxies every property access; a binding
|
|
6455
7072
|
* that is only ever reassigned never uses that machinery. Svelte's guidance:
|
|
@@ -6472,8 +7089,7 @@ const performanceStateRaw = componentRule({
|
|
|
6472
7089
|
message: `"${s.name}" is an object/array $state that is only ever reassigned, never mutated — $state.raw skips the deep-proxy overhead (reassignment stays reactive).`
|
|
6473
7090
|
}))
|
|
6474
7091
|
});
|
|
6475
|
-
|
|
6476
|
-
//#region src/rules/perf/iframe-loading.ts
|
|
7092
|
+
// src/rules/perf/iframe-loading.ts
|
|
6477
7093
|
/** Any literal `loading` value passes (the author made a choice); an expression value is
|
|
6478
7094
|
* unknowable and passes; a spread could supply `loading` and passes. */
|
|
6479
7095
|
const performanceIframeLoading = componentRule({
|
|
@@ -6495,8 +7111,7 @@ const performanceIframeLoading = componentRule({
|
|
|
6495
7111
|
message: "<iframe> without a loading attribute loads eagerly even when offscreen"
|
|
6496
7112
|
}))
|
|
6497
7113
|
});
|
|
6498
|
-
|
|
6499
|
-
//#region src/rules/a11y/invalid-role.ts
|
|
7114
|
+
// src/rules/a11y/invalid-role.ts
|
|
6500
7115
|
const a11yInvalidRole = componentRule({
|
|
6501
7116
|
id: "a11y/invalid-role",
|
|
6502
7117
|
title: "Invalid ARIA role",
|
|
@@ -6517,8 +7132,7 @@ const a11yInvalidRole = componentRule({
|
|
|
6517
7132
|
}];
|
|
6518
7133
|
})
|
|
6519
7134
|
});
|
|
6520
|
-
|
|
6521
|
-
//#region src/rules/a11y/unknown-aria-attribute.ts
|
|
7135
|
+
// src/rules/a11y/unknown-aria-attribute.ts
|
|
6522
7136
|
const a11yUnknownAriaAttribute = componentRule({
|
|
6523
7137
|
id: "a11y/unknown-aria-attribute",
|
|
6524
7138
|
title: "Unknown ARIA attribute",
|
|
@@ -6532,8 +7146,7 @@ const a11yUnknownAriaAttribute = componentRule({
|
|
|
6532
7146
|
message: `\`${a.name}\` is not a WAI-ARIA attribute`
|
|
6533
7147
|
})))
|
|
6534
7148
|
});
|
|
6535
|
-
|
|
6536
|
-
//#region src/rules/a11y/required-aria-props.ts
|
|
7149
|
+
// src/rules/a11y/required-aria-props.ts
|
|
6537
7150
|
/** ARIA-in-HTML host elements that supply a required prop's semantics natively, so the
|
|
6538
7151
|
* explicit `aria-*` attribute is redundant. Spec-fixed, not derived from aria-query. */
|
|
6539
7152
|
const HOST_SUPPLIED = {
|
|
@@ -6582,8 +7195,7 @@ const a11yRequiredAriaProps = componentRule({
|
|
|
6582
7195
|
}];
|
|
6583
7196
|
})
|
|
6584
7197
|
});
|
|
6585
|
-
|
|
6586
|
-
//#region src/rules/a11y/invalid-aria-value.ts
|
|
7198
|
+
// src/rules/a11y/invalid-aria-value.ts
|
|
6587
7199
|
function isValid(type, values, literal) {
|
|
6588
7200
|
switch (type) {
|
|
6589
7201
|
case "boolean": return literal === "true" || literal === "false";
|
|
@@ -6617,8 +7229,7 @@ const a11yInvalidAriaValue = componentRule({
|
|
|
6617
7229
|
}];
|
|
6618
7230
|
}))
|
|
6619
7231
|
});
|
|
6620
|
-
|
|
6621
|
-
//#region src/rules/a11y/interactive-nesting.ts
|
|
7232
|
+
// src/rules/a11y/interactive-nesting.ts
|
|
6622
7233
|
const a11yInteractiveNesting = componentRule({
|
|
6623
7234
|
id: "a11y/interactive-nesting",
|
|
6624
7235
|
title: "Interactive element nested in an interactive element",
|
|
@@ -6632,8 +7243,7 @@ const a11yInteractiveNesting = componentRule({
|
|
|
6632
7243
|
message: `<${f.descendantTag}> is nested inside interactive <${f.containerTag}${f.containerRole ? ` role="${f.containerRole}"` : ""}>`
|
|
6633
7244
|
}))
|
|
6634
7245
|
});
|
|
6635
|
-
|
|
6636
|
-
//#region src/rules/a11y/aria-hidden-focus.ts
|
|
7246
|
+
// src/rules/a11y/aria-hidden-focus.ts
|
|
6637
7247
|
const a11yAriaHiddenFocus = componentRule({
|
|
6638
7248
|
id: "a11y/aria-hidden-focus",
|
|
6639
7249
|
title: "Focusable element hidden by aria-hidden",
|
|
@@ -6647,8 +7257,7 @@ const a11yAriaHiddenFocus = componentRule({
|
|
|
6647
7257
|
message: f.containerTag ? `<${f.tag}> inside <${f.containerTag} aria-hidden="true"> is still keyboard-focusable` : `<${f.tag} aria-hidden="true"> is still keyboard-focusable`
|
|
6648
7258
|
}))
|
|
6649
7259
|
});
|
|
6650
|
-
|
|
6651
|
-
//#region src/rules/a11y/accessible-name.ts
|
|
7260
|
+
// src/rules/a11y/accessible-name.ts
|
|
6652
7261
|
const NAMING_ATTRS = /* @__PURE__ */ new Set([
|
|
6653
7262
|
"title",
|
|
6654
7263
|
"aria-label",
|
|
@@ -6698,8 +7307,7 @@ const a11yAccessibleName = componentRule({
|
|
|
6698
7307
|
message: "<iframe> has no accessible name"
|
|
6699
7308
|
}))]
|
|
6700
7309
|
});
|
|
6701
|
-
|
|
6702
|
-
//#region src/rules/a11y/label-has-control.ts
|
|
7310
|
+
// src/rules/a11y/label-has-control.ts
|
|
6703
7311
|
const a11yLabelHasControl = componentRule({
|
|
6704
7312
|
id: "a11y/label-has-control",
|
|
6705
7313
|
title: "<label> has no associated control",
|
|
@@ -6713,8 +7321,7 @@ const a11yLabelHasControl = componentRule({
|
|
|
6713
7321
|
message: "<label> has no associated control"
|
|
6714
7322
|
}))
|
|
6715
7323
|
});
|
|
6716
|
-
|
|
6717
|
-
//#region src/rules/a11y/use-list.ts
|
|
7324
|
+
// src/rules/a11y/use-list.ts
|
|
6718
7325
|
const a11yUseList = componentRule({
|
|
6719
7326
|
id: "a11y/use-list",
|
|
6720
7327
|
title: "Bullet text should be a list",
|
|
@@ -6729,8 +7336,7 @@ const a11yUseList = componentRule({
|
|
|
6729
7336
|
message: `Text starts with a bullet character ('${b.char}') — use a list element`
|
|
6730
7337
|
}))
|
|
6731
7338
|
});
|
|
6732
|
-
|
|
6733
|
-
//#region src/rules/a11y/placeholder-label-option.ts
|
|
7339
|
+
// src/rules/a11y/placeholder-label-option.ts
|
|
6734
7340
|
const a11yPlaceholderLabelOption = componentRule({
|
|
6735
7341
|
id: "a11y/placeholder-label-option",
|
|
6736
7342
|
title: "Missing placeholder label option",
|
|
@@ -6744,8 +7350,7 @@ const a11yPlaceholderLabelOption = componentRule({
|
|
|
6744
7350
|
message: "<select required> is missing a placeholder label option"
|
|
6745
7351
|
}))
|
|
6746
7352
|
});
|
|
6747
|
-
|
|
6748
|
-
//#region src/rules/a11y/require-datetime.ts
|
|
7353
|
+
// src/rules/a11y/require-datetime.ts
|
|
6749
7354
|
const a11yRequireDatetime = componentRule({
|
|
6750
7355
|
id: "a11y/require-datetime",
|
|
6751
7356
|
title: "Missing datetime attribute",
|
|
@@ -6760,8 +7365,7 @@ const a11yRequireDatetime = componentRule({
|
|
|
6760
7365
|
message: `<time> content "${f.text}" is not machine-readable and has no datetime attribute`
|
|
6761
7366
|
}))
|
|
6762
7367
|
});
|
|
6763
|
-
|
|
6764
|
-
//#region src/rules/a11y/interactive.ts
|
|
7368
|
+
// src/rules/a11y/interactive.ts
|
|
6765
7369
|
/** Tags that are always interactive, regardless of attributes. */
|
|
6766
7370
|
const ALWAYS_INTERACTIVE_TAGS = /* @__PURE__ */ new Set([
|
|
6767
7371
|
"button",
|
|
@@ -6874,8 +7478,7 @@ function isInteractiveContainer(tag, attrs) {
|
|
|
6874
7478
|
if (tag === "a") return literalOf(attrs, "href") !== void 0;
|
|
6875
7479
|
return hasRoleIn(attrs, CONTAINER_ROLES);
|
|
6876
7480
|
}
|
|
6877
|
-
|
|
6878
|
-
//#region src/rules/a11y/positive-tabindex.ts
|
|
7481
|
+
// src/rules/a11y/positive-tabindex.ts
|
|
6879
7482
|
/**
|
|
6880
7483
|
* Literal values only — an expression-valued `tabindex` is unknowable and passes. The
|
|
6881
7484
|
* Number()-based parse deliberately follows the Svelte compiler's a11y_positive_tabindex
|
|
@@ -6906,8 +7509,7 @@ const a11yPositiveTabindex = componentRule({
|
|
|
6906
7509
|
}];
|
|
6907
7510
|
})
|
|
6908
7511
|
});
|
|
6909
|
-
|
|
6910
|
-
//#region src/rules/a11y/no-accesskey.ts
|
|
7512
|
+
// src/rules/a11y/no-accesskey.ts
|
|
6911
7513
|
/**
|
|
6912
7514
|
* a11y/no-accesskey — unlike most attribute rules, an expression-valued `accesskey` is reported
|
|
6913
7515
|
* too: the attribute's presence is the problem and its value never matters, so there is nothing
|
|
@@ -6930,8 +7532,7 @@ const a11yNoAccesskey = componentRule({
|
|
|
6930
7532
|
message: `accesskey on <${e.tag}> — the shortcut key varies by browser and OS, is undiscoverable, and conflicts with assistive-technology bindings`
|
|
6931
7533
|
}))
|
|
6932
7534
|
});
|
|
6933
|
-
|
|
6934
|
-
//#region src/rules/a11y/no-autofocus.ts
|
|
7535
|
+
// src/rules/a11y/no-autofocus.ts
|
|
6935
7536
|
/**
|
|
6936
7537
|
* `<dialog>` and popover containers run their focusing steps on show, not on page load, and both
|
|
6937
7538
|
* honour an `autofocus` descendant — so autofocus there is the correct tool, not focus theft.
|
|
@@ -6981,8 +7582,7 @@ const a11yNoAutofocus = componentRule({
|
|
|
6981
7582
|
function literalAutofocusElements(c) {
|
|
6982
7583
|
return (c.elements ?? []).filter((e) => e.attrs.some((a) => a.name === "autofocus" && a.value !== void 0));
|
|
6983
7584
|
}
|
|
6984
|
-
|
|
6985
|
-
//#region src/rules/a11y/no-duplicate-dt.ts
|
|
7585
|
+
// src/rules/a11y/no-duplicate-dt.ts
|
|
6986
7586
|
/**
|
|
6987
7587
|
* a11y/no-duplicate-dt — the candidate gathering (direct and div-wrapped `<dt>` children of a
|
|
6988
7588
|
* `<dl>`, fully-static names only, whitespace-normalized, case-sensitive) lives in the
|
|
@@ -7003,8 +7603,7 @@ const a11yNoDuplicateDt = componentRule({
|
|
|
7003
7603
|
message: `Duplicate <dt> "${d.text}" in the same <dl>`
|
|
7004
7604
|
}))
|
|
7005
7605
|
});
|
|
7006
|
-
|
|
7007
|
-
//#region src/rules/a11y/abbr-title.ts
|
|
7606
|
+
// src/rules/a11y/abbr-title.ts
|
|
7008
7607
|
/**
|
|
7009
7608
|
* a11y/abbr-title — a best-practice nudge, not a conformance check: the spec makes `title` on
|
|
7010
7609
|
* `<abbr>` optional, and an expansion given in the surrounding prose is correct markup this
|
|
@@ -7035,8 +7634,7 @@ const a11yAbbrTitle = componentRule({
|
|
|
7035
7634
|
message: "<abbr> without a title gives readers no expansion of the abbreviation"
|
|
7036
7635
|
}))
|
|
7037
7636
|
});
|
|
7038
|
-
|
|
7039
|
-
//#region src/rules/a11y/pattern-title.ts
|
|
7637
|
+
// src/rules/a11y/pattern-title.ts
|
|
7040
7638
|
/** The input types the `pattern` attribute applies to, per the spec's applies-to table. */
|
|
7041
7639
|
const PATTERN_TYPES = /* @__PURE__ */ new Set([
|
|
7042
7640
|
"text",
|
|
@@ -7085,10 +7683,9 @@ const a11yPatternTitle = componentRule({
|
|
|
7085
7683
|
message: "<input pattern> without a title — a failed match tells the user nothing about the expected format"
|
|
7086
7684
|
}))
|
|
7087
7685
|
});
|
|
7088
|
-
|
|
7089
|
-
//#region src/html-spec/generated.ts
|
|
7686
|
+
// src/html-spec/generated.ts
|
|
7090
7687
|
/*!
|
|
7091
|
-
* HTML spec data projected from @markuplint/html-spec@5.
|
|
7688
|
+
* HTML spec data projected from @markuplint/html-spec@5.4.0 — https://github.com/markuplint/markuplint
|
|
7092
7689
|
*
|
|
7093
7690
|
* MIT License
|
|
7094
7691
|
*
|
|
@@ -7112,9 +7709,8 @@ const a11yPatternTitle = componentRule({
|
|
|
7112
7709
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
7113
7710
|
* SOFTWARE.
|
|
7114
7711
|
*/
|
|
7115
|
-
const HTML_SPEC = JSON.parse("{\"elements\":{\"a\":{\"categories\":[\"#flow\",\"#phrasing\",\"#interactive\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"transparent\":\":not(:model(interactive), a, [tabindex], :has(:model(interactive), a, [tabindex]))\"}]},\"aria\":{\"implicitRole\":\"link\",\"permittedRoles\":[\"button\",\"checkbox\",\"menuitem\",\"menuitemcheckbox\",\"menuitemradio\",\"option\",\"radio\",\"switch\",\"tab\",\"treeitem\"],\"conditions\":{\":not([href])\":{\"implicitRole\":\"generic\",\"namingProhibited\":true}}},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#HTMLLinkAndFetchingAttrs\"],\"attributes\":{\"attributionsrc\":{\"deprecated\":true,\"nonStandard\":true},\"charset\":{\"deprecated\":true},\"coords\":{\"deprecated\":true},\"download\":{},\"href\":{},\"hreflang\":{},\"interestfor\":{\"type\":\"DOMID\",\"nonStandard\":true,\"experimental\":true},\"name\":{\"deprecated\":true},\"ping\":{},\"referrerpolicy\":{},\"rel\":{},\"rev\":{\"deprecated\":true},\"shape\":{\"deprecated\":true},\"target\":{},\"type\":{}}},\"abbr\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"acronym\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"address\":{\"categories\":[\"#flow\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow):not(address, :model(heading), :model(sectioning), header, foooter, :has(address, :model(heading), :model(sectioning), header, foooter))\"}],\"forbiddenAncestors\":[\"address\"]},\"aria\":{\"implicitRole\":\"group\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"applet\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"area\":{\"categories\":[\"#flow\",\"#phrasing\"],\"contentModel\":{\"contents\":false,\"descendantOf\":\"map\"},\"aria\":{\"implicitRole\":\"link\",\"permittedRoles\":[],\"conditions\":{\":not([href])\":{\"implicitRole\":\"generic\",\"namingProhibited\":true}}},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#HTMLLinkAndFetchingAttrs\"],\"attributes\":{\"alt\":{\"type\":\"Any\",\"required\":true,\"condition\":\"[href]\"},\"coords\":{\"type\":{\"token\":\"Number\",\"disallowToSurroundBySpaces\":true,\"separator\":\"comma\"}},\"download\":{},\"href\":{},\"interestfor\":{\"type\":\"DOMID\",\"nonStandard\":true,\"experimental\":true},\"ping\":{},\"referrerpolicy\":{},\"rel\":{},\"shape\":{\"type\":{\"enum\":[\"rect\",\"circle\",\"poly\",\"default\"],\"missingValueDefault\":\"rect\",\"invalidValueDefault\":\"rect\"}},\"target\":{}}},\"article\":{\"categories\":[\"#flow\",\"#sectioning\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow)\"}]},\"aria\":{\"implicitRole\":\"article\",\"permittedRoles\":[\"application\",\"document\",\"feed\",\"main\",\"none\",\"presentation\",\"region\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"aside\":{\"categories\":[\"#flow\",\"#sectioning\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow)\"}]},\"aria\":{\"implicitRole\":\"complementary\",\"permittedRoles\":[\"feed\",\"none\",\"note\",\"presentation\",\"region\",\"search\"],\"conditions\":{\":is(article, aside, nav, section, blockquote, details, dialog, fieldset, figure, td) *\":{\"implicitRole\":\"generic\",\"namingProhibited\":true},\":is(article, aside, nav, section, blockquote, details, dialog, fieldset, figure, td) *:aria(has name)\":{\"implicitRole\":\"complementary\"}}},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"audio\":{\"categories\":[\"#flow\",\"#phrasing\",\"#embedded\",\"#interactive\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"zeroOrMore\":\"source\"},{\"zeroOrMore\":\"track\"},{\"transparent\":\":not(audio, video, :has(audio, video))\"}],\"conditional\":[{\"condition\":\"[src]\",\"contents\":[{\"zeroOrMore\":\"track\"},{\"transparent\":\":not(audio, video, :has(audio, video))\"}]}]},\"aria\":{\"permittedRoles\":[\"application\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLEmbededAndMediaContentAttrs\",\"#HTMLGlobalAttrs\",\"#HTMLLinkAndFetchingAttrs\"],\"attributes\":{\"autoplay\":{},\"controls\":{},\"controlslist\":{},\"crossorigin\":{},\"disableremoteplayback\":{},\"loading\":{\"experimental\":false},\"loop\":{},\"muted\":{},\"preload\":{},\"src\":{}}},\"b\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"generic\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"base\":{\"categories\":[\"#metadata\"],\"contentModel\":{\"contents\":false},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#HTMLLinkAndFetchingAttrs\"],\"attributes\":{\"href\":{\"type\":\"BaseURL\",\"requiredEither\":[\"target\"]},\"target\":{\"requiredEither\":[\"href\"]}}},\"basefont\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"bdi\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"generic\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"bdo\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"generic\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"dir\":{\"type\":{\"enum\":[\"ltr\",\"rtl\"]},\"required\":true}}},\"bgsound\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"big\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"blink\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"blockquote\":{\"categories\":[\"#flow\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow)\"}]},\"aria\":{\"implicitRole\":\"blockquote\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"cite\":{\"type\":\"URL\"}}},\"body\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow)\"}]},\"aria\":{\"implicitRole\":\"generic\",\"permittedRoles\":[],\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"alink\":{\"deprecated\":true},\"background\":{\"deprecated\":true},\"bgcolor\":{\"deprecated\":true},\"bottommargin\":{\"deprecated\":true},\"leftmargin\":{\"deprecated\":true},\"link\":{\"deprecated\":true},\"onafterprint\":{\"type\":\"FunctionBody\"},\"onbeforeprint\":{\"type\":\"FunctionBody\"},\"onbeforeunload\":{\"type\":\"FunctionBody\"},\"onhashchange\":{\"type\":\"FunctionBody\"},\"onlanguagechange\":{\"type\":\"FunctionBody\"},\"onmessage\":{\"type\":\"FunctionBody\"},\"onmessageerror\":{\"type\":\"FunctionBody\"},\"onoffline\":{\"type\":\"FunctionBody\"},\"ononline\":{\"type\":\"FunctionBody\"},\"onpagehide\":{\"type\":\"FunctionBody\"},\"onpagereveal\":{\"type\":\"FunctionBody\"},\"onpageshow\":{\"type\":\"FunctionBody\"},\"onpageswap\":{\"type\":\"FunctionBody\"},\"onpopstate\":{\"type\":\"FunctionBody\"},\"onrejectionhandled\":{\"type\":\"FunctionBody\"},\"onstorage\":{\"type\":\"FunctionBody\"},\"onunhandledrejection\":{\"type\":\"FunctionBody\"},\"onunload\":{\"type\":\"FunctionBody\"},\"rightmargin\":{\"deprecated\":true},\"text\":{\"deprecated\":true},\"topmargin\":{\"deprecated\":true},\"vlink\":{\"deprecated\":true}}},\"br\":{\"categories\":[\"#flow\",\"#phrasing\"],\"contentModel\":{\"contents\":false},\"aria\":{\"permittedRoles\":[\"none\",\"presentation\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"clear\":{\"deprecated\":true}}},\"button\":{\"categories\":[\"#flow\",\"#phrasing\",\"#interactive\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing):not(:model(interactive), :has(:model(interactive)))\"}]},\"aria\":{\"implicitRole\":\"button\",\"permittedRoles\":[\"checkbox\",\"combobox\",\"gridcell\",\"link\",\"menuitem\",\"menuitemcheckbox\",\"menuitemradio\",\"option\",\"radio\",\"separator\",\"slider\",\"switch\",\"tab\",\"treeitem\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLFormControlElementAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"autofocus\":{},\"command\":{\"type\":[{\"enum\":[\"toggle-popover\",\"show-popover\",\"hide-popover\",\"close\",\"request-close\",\"show-modal\"],\"invalidValueDefault\":\"unknown\",\"missingValueDefault\":\"unknown\"},\"ValidCustomCommand\"]},\"commandfor\":{\"type\":\"DOMID\"},\"disabled\":{},\"form\":{},\"formaction\":{},\"formenctype\":{},\"formmethod\":{},\"formnovalidate\":{},\"formtarget\":{},\"interestfor\":{\"type\":\"DOMID\",\"nonStandard\":true,\"experimental\":true},\"name\":{},\"popovertarget\":{\"type\":\"DOMID\"},\"popovertargetaction\":{\"type\":{\"enum\":[\"toggle\",\"show\",\"hide\"],\"disallowToSurroundBySpaces\":true,\"invalidValueDefault\":\"toggle\",\"missingValueDefault\":\"toggle\"}},\"type\":{\"type\":{\"enum\":[\"submit\",\"reset\",\"button\"],\"invalidValueDefault\":\"submit\",\"missingValueDefault\":\"submit\"}},\"value\":{\"type\":\"Any\"}}},\"canvas\":{\"categories\":[\"#flow\",\"#phrasing\",\"#embedded\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"transparent\":\":not(:model(interactive), :has(:model(interactive)))\"}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLEmbededAndMediaContentAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"height\":{},\"moz-opaque\":{\"deprecated\":true,\"nonStandard\":true},\"width\":{}}},\"caption\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow)\"}]},\"aria\":{\"implicitRole\":\"caption\",\"permittedRoles\":[],\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"align\":{\"deprecated\":true}}},\"center\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"cite\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"code\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"code\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"col\":{\"categories\":[],\"contentModel\":{\"contents\":false},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"align\":{\"deprecated\":true},\"bgcolor\":{\"deprecated\":true},\"char\":{\"deprecated\":true},\"charoff\":{\"deprecated\":true},\"span\":{\"type\":{\"type\":\"integer\",\"gt\":0,\"lte\":1000,\"clampable\":true}},\"valign\":{\"deprecated\":true},\"width\":{\"deprecated\":true}}},\"colgroup\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":\"col\"}],\"conditional\":[{\"condition\":\"[span]\",\"contents\":false}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"align\":{\"deprecated\":true},\"bgcolor\":{\"deprecated\":true},\"char\":{\"deprecated\":true},\"charoff\":{\"deprecated\":true},\"span\":{\"type\":{\"type\":\"integer\",\"gt\":0,\"lte\":1000,\"clampable\":true}},\"valign\":{\"deprecated\":true},\"width\":{\"deprecated\":true}}},\"data\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"generic\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"value\":{\"type\":\"Any\",\"required\":true}}},\"datalist\":{\"categories\":[\"#flow\",\"#phrasing\"],\"contentModel\":{\"contents\":[{\"choice\":[[{\"oneOrMore\":\":model(phrasing)\"}],[{\"zeroOrMore\":[\"option\",\":model(script-supporting)\"]}]]}]},\"aria\":{\"implicitRole\":\"listbox\",\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"dd\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow)\"}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"del\":{\"categories\":[\"#flow\",\"#phrasing\"],\"contentModel\":{\"contents\":[{\"transparent\":\"*\"}]},\"aria\":{\"implicitRole\":\"deletion\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"cite\":{\"type\":\"URL\"},\"datetime\":{\"type\":\"DateStringWithOptionalTime\"}}},\"details\":{\"categories\":[\"#flow\",\"#interactive\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"require\":\"summary\"},{\"oneOrMore\":\":model(flow)\"}]},\"aria\":{\"implicitRole\":\"group\",\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"name\":{\"type\":\"NoEmptyAny\"},\"open\":{\"type\":\"Boolean\"}}},\"dfn\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing):not(dfn, :has(dfn))\"}]},\"aria\":{\"implicitRole\":\"term\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"dialog\":{\"categories\":[\"#flow\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow)\"}]},\"aria\":{\"implicitRole\":\"dialog\",\"permittedRoles\":[\"alertdialog\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"closedby\":{\"type\":{\"enum\":[\"any\",\"closerequest\",\"none\"],\"invalidValueDefault\":\"auto\",\"missingValueDefault\":\"auto\"}},\"open\":{\"type\":\"Boolean\"},\"tabindex\":{\"noUse\":true}}},\"dir\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{\"compact\":{\"deprecated\":true,\"nonStandard\":true}}},\"div\":{\"categories\":[\"#flow\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow)\"}],\"conditional\":[{\"condition\":\"dl > div\",\"contents\":[{\"zeroOrMore\":\":model(script-supporting)\"},{\"oneOrMore\":\"dt\"},{\"zeroOrMore\":\":model(script-supporting)\"},{\"oneOrMore\":\"dd\"},{\"zeroOrMore\":\":model(script-supporting)\"}]}]},\"aria\":{\"implicitRole\":\"generic\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"dl\":{\"categories\":[\"#flow\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"choice\":[[{\"zeroOrMore\":[{\"zeroOrMore\":\":model(script-supporting)\"},{\"oneOrMore\":\"dt\"},{\"zeroOrMore\":\":model(script-supporting)\"},{\"oneOrMore\":\"dd\"},{\"zeroOrMore\":\":model(script-supporting)\"}]}],[{\"zeroOrMore\":\":model(script-supporting)\"},{\"oneOrMore\":\"div\"},{\"zeroOrMore\":\":model(script-supporting)\"}]]}]},\"aria\":{\"permittedRoles\":[\"group\",\"list\",\"none\",\"presentation\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"compact\":{\"deprecated\":true}}},\"dt\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow):not(header, footer, :model(sectioning), :model(heading), :has(header, footer, :model(sectioning), :model(heading)))\"}]},\"aria\":{\"permittedRoles\":[\"listitem\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"em\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"emphasis\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"embed\":{\"categories\":[\"#flow\",\"#phrasing\",\"#embedded\",\"#interactive\",\"#palpable\"],\"contentModel\":{\"contents\":false},\"aria\":{\"permittedRoles\":[\"application\",\"document\",\"img\",\"none\",\"presentation\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLEmbededAndMediaContentAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"height\":{},\"src\":{\"type\":\"NonEmptyURL\",\"required\":\"[itemprop]\"},\"type\":{\"type\":\"MIMEType\"},\"width\":{}}},\"fieldset\":{\"categories\":[\"#flow\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"optional\":\"legend\"},{\"oneOrMore\":\":model(flow)\"}]},\"aria\":{\"implicitRole\":\"group\",\"permittedRoles\":[\"radiogroup\",\"presentation\",\"none\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLFormControlElementAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"disabled\":{},\"form\":{},\"name\":{}}},\"figcaption\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow)\"}]},\"aria\":{\"permittedRoles\":[\"group\",\"none\",\"presentation\"],\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"figure\":{\"categories\":[\"#flow\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"choice\":[[{\"require\":\"figcaption\"},{\"oneOrMore\":\":model(flow)\"}],[{\"oneOrMore\":\":model(flow)\"},{\"require\":\"figcaption\"}],[{\"oneOrMore\":\":model(flow)\"}]]}]},\"aria\":{\"implicitRole\":\"figure\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"font\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"color\":{\"deprecated\":true,\"nonStandard\":true},\"face\":{\"deprecated\":true,\"nonStandard\":true},\"size\":{\"deprecated\":true,\"nonStandard\":true}}},\"footer\":{\"categories\":[\"#flow\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow):not(header, footer, :has(header, footer))\"}],\"forbiddenAncestors\":[\"header\",\"footer\"]},\"aria\":{\"implicitRole\":\"contentinfo\",\"permittedRoles\":[\"group\",\"presentation\",\"none\"],\"conditions\":{\":has(article, aside, main, nav, section, [role=article], [role=complementary], [role=main], [role=navigation], [role=region])\":{\"implicitRole\":\"generic\",\"namingProhibited\":true}}},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"form\":{\"categories\":[\"#flow\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow):not(form, :has(form))\"}]},\"aria\":{\"permittedRoles\":[\"search\",\"none\",\"presentation\"],\"conditions\":{\":aria(has name)\":{\"implicitRole\":\"form\"}}},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"accept\":{\"deprecated\":true},\"accept-charset\":{\"type\":{\"enum\":[\"utf-8\"],\"caseInsensitive\":true}},\"action\":{\"type\":\"NonEmptyURL\"},\"autocapitalize\":{},\"autocomplete\":{\"type\":{\"enum\":[\"on\",\"off\"],\"invalidValueDefault\":\"on\",\"missingValueDefault\":\"on\"}},\"enctype\":{\"type\":{\"enum\":[\"application/x-www-form-urlencoded\",\"multipart/form-data\",\"text/plain\"],\"invalidValueDefault\":\"application/x-www-form-urlencoded\",\"missingValueDefault\":\"application/x-www-form-urlencoded\"}},\"method\":{\"type\":{\"enum\":[\"post\",\"get\",\"dialog\"],\"invalidValueDefault\":\"get\",\"missingValueDefault\":\"get\"}},\"name\":{\"type\":\"NoEmptyAny\"},\"novalidate\":{\"type\":\"Boolean\"},\"rel\":{\"type\":\"LinkTypeForFormElement\"},\"target\":{\"type\":\"NavigableTargetNameOrKeyword\"}}},\"frame\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{\"frameborder\":{\"deprecated\":true,\"nonStandard\":true},\"marginheight\":{\"deprecated\":true,\"nonStandard\":true},\"marginwidth\":{\"deprecated\":true,\"nonStandard\":true},\"name\":{\"deprecated\":true,\"nonStandard\":true},\"noresize\":{\"deprecated\":true,\"nonStandard\":true},\"scrolling\":{\"deprecated\":true,\"nonStandard\":true},\"src\":{\"deprecated\":true,\"nonStandard\":true}}},\"frameset\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{\"cols\":{\"deprecated\":true,\"nonStandard\":true},\"rows\":{\"deprecated\":true,\"nonStandard\":true}}},\"h1\":{\"categories\":[\"#flow\",\"#heading\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"heading\",\"permittedRoles\":[\"tab\",\"presentation\",\"none\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"h2\":{\"categories\":[\"#flow\",\"#heading\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"heading\",\"permittedRoles\":[\"tab\",\"presentation\",\"none\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"h3\":{\"categories\":[\"#flow\",\"#heading\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"heading\",\"permittedRoles\":[\"tab\",\"presentation\",\"none\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"h4\":{\"categories\":[\"#flow\",\"#heading\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"heading\",\"permittedRoles\":[\"tab\",\"presentation\",\"none\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"h5\":{\"categories\":[\"#flow\",\"#heading\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"heading\",\"permittedRoles\":[\"tab\",\"presentation\",\"none\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"h6\":{\"categories\":[\"#flow\",\"#heading\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"heading\",\"permittedRoles\":[\"tab\",\"presentation\",\"none\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"head\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":\":model(metadata):not(title)\"},{\"require\":\"title\"},{\"zeroOrMore\":\":model(metadata):not(title)\"}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"profile\":{\"deprecated\":true}}},\"header\":{\"categories\":[\"#flow\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow):not(header, footer, :has(header, footer))\"}],\"forbiddenAncestors\":[\"header\",\"footer\"]},\"aria\":{\"implicitRole\":\"banner\",\"permittedRoles\":[\"group\",\"presentation\",\"none\"],\"conditions\":{\":has(article, aside, main, nav, section, [role=article], [role=complementary], [role=main], [role=navigation], [role=region])\":{\"implicitRole\":\"generic\",\"namingProhibited\":true}}},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"hgroup\":{\"categories\":[\"#flow\",\"#heading\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"zeroOrMore\":\":model(script-supporting)\"},{\"zeroOrMore\":\"p\"},{\"zeroOrMore\":\":model(script-supporting)\"},{\"require\":[\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\"]},{\"zeroOrMore\":\":model(script-supporting)\"},{\"zeroOrMore\":\"p\"},{\"zeroOrMore\":\":model(script-supporting)\"}]},\"aria\":{\"implicitRole\":\"generic\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"hr\":{\"categories\":[\"#flow\"],\"contentModel\":{\"contents\":false},\"aria\":{\"implicitRole\":\"separator\",\"permittedRoles\":[\"presentation\",\"none\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"align\":{\"deprecated\":true,\"nonStandard\":true},\"color\":{\"deprecated\":true,\"nonStandard\":true},\"noshade\":{\"deprecated\":true,\"nonStandard\":true},\"size\":{\"deprecated\":true,\"nonStandard\":true},\"width\":{\"deprecated\":true,\"nonStandard\":true}}},\"html\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"require\":\"head\"},{\"require\":\"body\"}]},\"aria\":{\"implicitRole\":\"generic\",\"permittedRoles\":[\"document\",\"generic\"],\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"version\":{\"deprecated\":true},\"xmlns\":{\"nonStandard\":true}}},\"i\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"generic\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"iframe\":{\"categories\":[\"#flow\",\"#phrasing\",\"#embedded\",\"#interactive\",\"#palpable\"],\"contentModel\":{\"contents\":false},\"aria\":{\"permittedRoles\":[\"application\",\"document\",\"img\",\"none\",\"presentation\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLEmbededAndMediaContentAttrs\",\"#HTMLGlobalAttrs\",\"#HTMLLinkAndFetchingAttrs\"],\"attributes\":{\"align\":{\"deprecated\":true},\"allow\":{\"type\":\"SerializedPermissionsPolicy\"},\"allowfullscreen\":{\"type\":\"Boolean\"},\"allowpaymentrequest\":{\"deprecated\":true,\"nonStandard\":true},\"browsingtopics\":{\"deprecated\":true,\"nonStandard\":true},\"credentialless\":{\"experimental\":true},\"csp\":{\"experimental\":true},\"frameborder\":{\"deprecated\":true},\"height\":{},\"loading\":{},\"longdesc\":{\"deprecated\":true},\"marginheight\":{\"deprecated\":true},\"marginwidth\":{\"deprecated\":true},\"name\":{\"type\":\"NavigableTargetName\"},\"privateToken\":{\"type\":\"Any\",\"experimental\":true},\"referrerpolicy\":{},\"sandbox\":{\"type\":{\"token\":{\"enum\":[\"allow-forms\",\"allow-modals\",\"allow-orientation-lock\",\"allow-pointer-lock\",\"allow-popups\",\"allow-popups-to-escape-sandbox\",\"allow-presentation\",\"allow-same-origin\",\"allow-scripts\",\"allow-top-navigation\",\"allow-top-navigation-by-user-activation\",\"allow-downloads\",\"allow-custom-protocols-navigation\"]},\"caseInsensitive\":true,\"ordered\":true,\"unique\":true,\"separator\":\"space\"}},\"scrolling\":{\"deprecated\":true},\"src\":{\"required\":\"[itemprop]\",\"ineffective\":\"[srcdoc]\"},\"srcdoc\":{\"type\":\"Any\"},\"width\":{}}},\"img\":{\"categories\":[\"#flow\",\"#phrasing\",\"#embedded\",\"#interactive\",\"#palpable\"],\"contentModel\":{\"contents\":false},\"aria\":{\"implicitRole\":\"img\",\"permittedRoles\":[\"button\",\"checkbox\",\"link\",\"math\",\"menuitem\",\"menuitemcheckbox\",\"menuitemradio\",\"meter\",\"option\",\"progressbar\",\"radio\",\"scrollbar\",\"separator\",\"slider\",\"switch\",\"tab\",\"treeitem\"],\"conditions\":{\"[alt=\\\"\\\"]\":{\"implicitRole\":\"presentation\"},\":not([alt]):aria(has no name)\":{\"implicitRole\":\"img\"}}},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLEmbededAndMediaContentAttrs\",\"#HTMLGlobalAttrs\",\"#HTMLLinkAndFetchingAttrs\"],\"attributes\":{\"align\":{\"deprecated\":true},\"alt\":{\"type\":\"Any\"},\"attributionsrc\":{\"deprecated\":true,\"nonStandard\":true},\"border\":{\"deprecated\":true},\"crossorigin\":{},\"decoding\":{\"type\":{\"enum\":[\"sync\",\"async\",\"auto\"],\"invalidValueDefault\":\"auto\",\"missingValueDefault\":\"auto\"}},\"elementtiming\":{},\"fetchpriority\":{},\"height\":{},\"hspace\":{\"deprecated\":true},\"ismap\":{\"type\":\"Boolean\",\"condition\":\"a[href] img\"},\"loading\":{},\"longdesc\":{\"deprecated\":true},\"name\":{\"deprecated\":true},\"referrerpolicy\":{},\"sizes\":{\"type\":\"SourceSizeList\",\"condition\":\"[srcset]\"},\"src\":{\"type\":\"NonEmptyURL\",\"requiredEither\":[\"srcset\"]},\"srcset\":{\"type\":\"Srcset\",\"requiredEither\":[\"src\"]},\"usemap\":{\"type\":\"HashName\",\"condition\":\":is(:not(a):not(button)) img\"},\"vspace\":{\"deprecated\":true},\"width\":{}}},\"input\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":false},\"aria\":{\"implicitRole\":\"textbox\",\"permittedRoles\":[\"combobox\",\"searchbox\",\"spinbutton\"],\"conditions\":{\"[type='button' i]\":{\"implicitRole\":\"button\"},\"[type='checkbox' i]\":{\"implicitRole\":\"checkbox\"},\"[type='checkbox' i][aria-pressed]\":{\"implicitRole\":\"checkbox\"},\"[type='color' i]\":{\"implicitRole\":false},\"[type='date' i]\":{\"implicitRole\":false},\"[type='email' i]:not([list])\":{\"implicitRole\":\"textbox\"},\"[type='file' i]\":{\"implicitRole\":false},\"[type='hidden' i]\":{\"implicitRole\":false},\"[type='image' i]\":{\"implicitRole\":\"button\"},\"[type='month' i]\":{\"implicitRole\":false},\"[type='number' i]\":{\"implicitRole\":\"spinbutton\"},\"[type='password' i]\":{\"implicitRole\":false},\"[type='radio' i]\":{\"implicitRole\":\"radio\"},\"[type='range' i]\":{\"implicitRole\":\"slider\"},\"[type='reset' i]\":{\"implicitRole\":\"button\"},\"[type='search' i]:not([list])\":{\"implicitRole\":\"searchbox\"},\"[type='submit' i]\":{\"implicitRole\":\"button\"},\"[type='tel' i]:not([list])\":{\"implicitRole\":\"textbox\"},\":is(:not([type]), [type='text' i], [type='search' i], [type='tel' i], [type='url' i], [type='email' i])[list]\":{\"implicitRole\":\"combobox\"},\"[type='time' i]\":{\"implicitRole\":false},\"[type='url' i]:not([list])\":{\"implicitRole\":\"textbox\"},\"[type='week' i]\":{\"implicitRole\":false}}},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLEmbededAndMediaContentAttrs\",\"#HTMLFormControlElementAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"accept\":{\"type\":{\"token\":\"Accept\",\"caseInsensitive\":true,\"unique\":true,\"separator\":\"comma\"},\"condition\":\"[type='file' i]\"},\"alpha\":{\"type\":\"Boolean\",\"experimental\":true,\"condition\":\"[type='color' i]\"},\"alt\":{\"type\":\"Any\",\"required\":true,\"condition\":\"[type='image' i]\"},\"autocapitalize\":{},\"autocomplete\":{\"type\":[{\"condition\":\"[type='hidden' i]\",\"type\":\"AutoCompleteAnchorMantle\"},{\"condition\":\":not([type='hidden' i])\",\"type\":\"AutoComplete\"}],\"condition\":[\":not([type])\",\"[type='hidden' i]\",\"[type='text' i]\",\"[type='search' i]\",\"[type='url' i]\",\"[type='tel' i]\",\"[type='email' i]\",\"[type='password' i]\",\"[type='date' i]\",\"[type='month' i]\",\"[type='week' i]\",\"[type='time' i]\",\"[type='datetime-local' i]\",\"[type='number' i]\",\"[type='range' i]\",\"[type='color' i]\"]},\"autofocus\":{},\"capture\":{},\"checked\":{\"type\":\"Boolean\",\"condition\":[\"[type='checkbox' i]\",\"[type='radio' i]\"]},\"colorspace\":{\"type\":{\"enum\":[\"limited-srgb\",\"display-p3\"],\"invalidValueDefault\":\"limited-srgb\",\"missingValueDefault\":\"limited-srgb\"},\"experimental\":true,\"condition\":\"[type='color' i]\"},\"dirname\":{\"condition\":[\":not([type])\",\"[type='hidden' i]\",\"[type='text' i]\",\"[type='search' i]\",\"[type='tel' i]\",\"[type='url' i]\",\"[type='email' i]\",\"[type='password' i]\",\"[type='submit' i]\"]},\"disabled\":{},\"form\":{},\"formaction\":{},\"formenctype\":{},\"formmethod\":{},\"formnovalidate\":{},\"formtarget\":{},\"height\":{\"condition\":\"[type='image' i]\"},\"id\":{},\"incremental\":{\"nonStandard\":true},\"inputmode\":{},\"list\":{\"type\":\"DOMID\",\"condition\":[\":not([type])\",\"[type='text' i]\",\"[type='search' i]\",\"[type='url' i]\",\"[type='tel' i]\",\"[type='email' i]\",\"[type='date' i]\",\"[type='month' i]\",\"[type='week' i]\",\"[type='time' i]\",\"[type='datetime-local' i]\",\"[type='number' i]\",\"[type='range' i]\",\"[type='color' i]\"]},\"max\":{\"type\":[{\"condition\":\"[type='date' i]\",\"type\":\"DateString\"},{\"condition\":\"[type='month' i]\",\"type\":\"MonthString\"},{\"condition\":\"[type='week' i]\",\"type\":\"WeekString\"},{\"condition\":\"[type='time' i]\",\"type\":\"TimeString\"},{\"condition\":\"[type='datetime-local' i]\",\"type\":\"LocalDateTimeString\"},{\"condition\":[\"[type='number' i]\",\"[type='range' i]\"],\"type\":{\"type\":\"float\"}}],\"condition\":[\"[type='date' i]\",\"[type='month' i]\",\"[type='week' i]\",\"[type='time' i]\",\"[type='datetime-local' i]\",\"[type='number' i]\",\"[type='range' i]\"]},\"maxlength\":{\"condition\":[\":not([type])\",\"[type='text' i]\",\"[type='search' i]\",\"[type='url' i]\",\"[type='tel' i]\",\"[type='email' i]\",\"[type='password' i]\"]},\"min\":{\"type\":[{\"condition\":\"[type='date' i]\",\"type\":\"DateString\"},{\"condition\":\"[type='month' i]\",\"type\":\"MonthString\"},{\"condition\":\"[type='week' i]\",\"type\":\"WeekString\"},{\"condition\":\"[type='time' i]\",\"type\":\"TimeString\"},{\"condition\":\"[type='datetime-local' i]\",\"type\":\"LocalDateTimeString\"},{\"condition\":[\"[type='number' i]\",\"[type='range' i]\"],\"type\":{\"type\":\"float\"}}],\"condition\":[\"[type='date' i]\",\"[type='month' i]\",\"[type='week' i]\",\"[type='time' i]\",\"[type='datetime-local' i]\",\"[type='number' i]\",\"[type='range' i]\"]},\"minlength\":{\"condition\":[\":not([type])\",\"[type='text' i]\",\"[type='search' i]\",\"[type='url' i]\",\"[type='tel' i]\",\"[type='email' i]\",\"[type='password' i]\"]},\"multiple\":{\"type\":\"Boolean\",\"condition\":[\"[type='email' i]\",\"[type='file' i]\"]},\"name\":{\"type\":{\"pattern\":\"/^(?!isindex$).+/\"}},\"orient\":{\"nonStandard\":true},\"pattern\":{\"type\":\"Pattern\",\"condition\":[\":not([type])\",\"[type='text' i]\",\"[type='search' i]\",\"[type='url' i]\",\"[type='tel' i]\",\"[type='email' i]\",\"[type='password' i]\"]},\"placeholder\":{\"type\":\"OneLineAny\",\"condition\":[\":not([type])\",\"[type='text' i]\",\"[type='search' i]\",\"[type='url' i]\",\"[type='tel' i]\",\"[type='email' i]\",\"[type='password' i]\",\"[type='number' i]\"]},\"popovertarget\":{\"type\":\"DOMID\",\"condition\":[\"[type='button' i]\",\"[type='image' i]\",\"[type='reset' i]\",\"[type='submit' i]\"]},\"popovertargetaction\":{\"type\":{\"enum\":[\"toggle\",\"show\",\"hide\"],\"disallowToSurroundBySpaces\":true,\"invalidValueDefault\":\"toggle\",\"missingValueDefault\":\"toggle\"},\"condition\":[\"[type='button' i]\",\"[type='image' i]\",\"[type='reset' i]\",\"[type='submit' i]\"]},\"readonly\":{\"condition\":[\":not([type])\",\"[type='text' i]\",\"[type='search' i]\",\"[type='url' i]\",\"[type='tel' i]\",\"[type='email' i]\",\"[type='password' i]\",\"[type='date' i]\",\"[type='month' i]\",\"[type='week' i]\",\"[type='time' i]\",\"[type='datetime-local' i]\",\"[type='number' i]\"]},\"required\":{\"condition\":[\":not([type])\",\"[type='text' i]\",\"[type='search' i]\",\"[type='url' i]\",\"[type='tel' i]\",\"[type='email' i]\",\"[type='password' i]\",\"[type='date' i]\",\"[type='month' i]\",\"[type='week' i]\",\"[type='time' i]\",\"[type='datetime-local' i]\",\"[type='number' i]\",\"[type='checkbox' i]\",\"[type='radio' i]\",\"[type='file' i]\"]},\"results\":{\"nonStandard\":true},\"size\":{\"type\":{\"type\":\"integer\",\"gt\":0},\"condition\":[\":not([type])\",\"[type='text' i]\",\"[type='search' i]\",\"[type='url' i]\",\"[type='tel' i]\",\"[type='email' i]\",\"[type='password' i]\"]},\"src\":{\"condition\":\"[type='image' i]\"},\"step\":{\"type\":[\"Number\",{\"enum\":[\"any\"],\"caseInsensitive\":true}],\"condition\":[\"[type='date' i]\",\"[type='month' i]\",\"[type='week' i]\",\"[type='time' i]\",\"[type='datetime-local' i]\",\"[type='number' i]\",\"[type='range' i]\"]},\"switch\":{\"type\":\"Boolean\",\"nonStandard\":true,\"experimental\":true,\"condition\":[\"[type='checkbox' i]\"]},\"tabindex\":{},\"title\":{},\"type\":{\"type\":{\"enum\":[\"hidden\",\"text\",\"search\",\"tel\",\"url\",\"email\",\"password\",\"date\",\"month\",\"week\",\"time\",\"datetime-local\",\"number\",\"range\",\"color\",\"checkbox\",\"radio\",\"file\",\"submit\",\"image\",\"reset\",\"button\"],\"invalidValueDefault\":\"text\",\"missingValueDefault\":\"text\"}},\"value\":{\"type\":[{\"condition\":\"[type='color' i]\",\"type\":\"SimpleColor\"},{\"condition\":\"[type='url' i]\",\"type\":\"AbsoluteURLOrEmpty\"},{\"condition\":\"[type='email' i]\",\"type\":\"Email\"},{\"condition\":[\"[type='number' i]\",\"[type='range' i]\"],\"type\":{\"type\":\"float\"}},{\"condition\":\"[type='date' i]\",\"type\":\"DateString\"},{\"condition\":\"[type='month' i]\",\"type\":\"MonthString\"},{\"condition\":\"[type='week' i]\",\"type\":\"WeekString\"},{\"condition\":\"[type='time' i]\",\"type\":\"TimeString\"},{\"condition\":\"[type='datetime-local' i]\",\"type\":\"LocalDateTimeString\"}]},\"webkitdirectory\":{\"nonStandard\":true},\"width\":{\"condition\":\"[type='image' i]\"}}},\"ins\":{\"categories\":[\"#flow\",\"#phrasing\"],\"contentModel\":{\"contents\":[{\"transparent\":\"*\"}]},\"aria\":{\"implicitRole\":\"insertion\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"cite\":{\"type\":\"URL\"},\"datetime\":{\"type\":\"DateStringWithOptionalTime\"}}},\"isindex\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"kbd\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"keygen\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"label\":{\"categories\":[\"#flow\",\"#phrasing\",\"#interactive\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing):not(label, :has(label))\"}]},\"aria\":{\"permittedRoles\":[],\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"for\":{\"type\":\"DOMID\"}}},\"legend\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(phrasing)\",\":model(heading)\"]}]},\"aria\":{\"permittedRoles\":[],\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"li\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow)\"}]},\"aria\":{\"implicitRole\":\"listitem\",\"permittedRoles\":[\"menuitem\",\"menuitemcheckbox\",\"menuitemradio\",\"option\",\"none\",\"presentation\",\"radio\",\"separator\",\"tab\",\"treeitem\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"type\":{\"deprecated\":true},\"value\":{\"type\":\"Int\",\"condition\":\"ol > li\"}}},\"link\":{\"categories\":[\"#metadata\",\"#flow\",\"#phrasing\"],\"contentModel\":{\"contents\":false},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#HTMLLinkAndFetchingAttrs\"],\"attributes\":{\"as\":{\"type\":[{\"condition\":\"[rel~='preload' i]\",\"type\":{\"enum\":[\"fetch\",\"font\",\"image\",\"script\",\"style\",\"track\"]}},{\"condition\":\"[rel~='modulepreload' i]\",\"type\":{\"enum\":[\"audioworklet\",\"json\",\"paintworklet\",\"script\",\"serviceworker\",\"sharedworker\",\"style\",\"worker\"]}}],\"required\":\"[rel~='preload' i]\",\"condition\":[\"[rel~='preload' i]\",\"[rel~='modulepreload' i]\"]},\"blocking\":{\"type\":{\"token\":{\"enum\":[\"render\"]},\"separator\":\"space\",\"unique\":true},\"condition\":\"[rel~='stylesheet' i]\"},\"charset\":{\"deprecated\":true,\"obsolete\":true},\"color\":{\"type\":\"<color>\",\"condition\":\"[rel~='mask-icon' i]\"},\"crossorigin\":{},\"disabled\":{\"type\":\"Boolean\",\"condition\":\"[rel~='stylesheet' i]\"},\"fetchpriority\":{},\"href\":{\"type\":\"NonEmptyURL\",\"requiredEither\":[\"imagesrcset\"]},\"hreflang\":{},\"imagesizes\":{\"type\":\"SourceSizeList\",\"required\":\"[imagesrcset]\",\"condition\":\"[imagesrcset][rel~='preload' i][as='image' i]\"},\"imagesrcset\":{\"type\":\"Srcset\",\"required\":\"[imagesizes]\",\"condition\":\"[imagesizes][rel~='preload' i][as='image' i]\"},\"integrity\":{\"condition\":[\"[rel~='stylesheet' i]\",\"[rel~='preload' i]\",\"[rel~='modulepreload' i]\"]},\"itemprop\":{\"requiredEither\":[\"rel\"]},\"media\":{},\"referrerpolicy\":{},\"rel\":{\"type\":\"LinkTypeForLinkElement\",\"requiredEither\":[\"itemprop\"]},\"rev\":{\"deprecated\":true,\"obsolete\":true},\"sizes\":{\"type\":{\"token\":\"IconSize\",\"caseInsensitive\":true,\"ordered\":false,\"unique\":true,\"separator\":\"space\"},\"condition\":[\"[rel~='icon' i]\",\"[rel~='apple-touch-icon' i]\"]},\"target\":{\"deprecated\":true},\"title\":{\"type\":[{\"condition\":\"[rel~='alternate' i][rel~='stylesheet' i]\",\"type\":\"NoEmptyAny\"}],\"required\":\"[rel~='alternate' i][rel~='stylesheet' i]\"},\"type\":{}}},\"listing\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"main\":{\"categories\":[\"#flow\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow)\"}],\"forbiddenAncestors\":[\"article\",\"aside\",\"footer\",\"header\",\"nav\"]},\"aria\":{\"implicitRole\":\"main\",\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"map\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"transparent\":\"*\"}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"name\":{\"type\":\"NoEmptyAny\"}}},\"mark\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"marquee\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{\"behavior\":{\"deprecated\":true},\"bgcolor\":{\"deprecated\":true},\"direction\":{\"deprecated\":true},\"height\":{\"deprecated\":true,\"nonStandard\":true},\"hspace\":{\"deprecated\":true,\"nonStandard\":true},\"loop\":{\"deprecated\":true},\"scrollamount\":{\"deprecated\":true,\"nonStandard\":true},\"scrolldelay\":{\"deprecated\":true,\"nonStandard\":true},\"truespeed\":{\"deprecated\":true},\"vspace\":{\"deprecated\":true,\"nonStandard\":true},\"width\":{\"deprecated\":true,\"nonStandard\":true}}},\"menu\":{\"categories\":[\"#flow\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\"li\",\":model(script-supporting)\"]}]},\"aria\":{\"implicitRole\":\"list\",\"permittedRoles\":[\"group\",\"listbox\",\"menu\",\"menubar\",\"none\",\"presentation\",\"radiogroup\",\"tablist\",\"toolbar\",\"tree\",\"directory\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"compact\":{\"deprecated\":true}}},\"menuitem\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"meta\":{\"categories\":[\"#metadata\",\"#flow\",\"#phrasing\"],\"contentModel\":{\"contents\":false},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#HTMLLinkAndFetchingAttrs\"],\"attributes\":{\"charset\":{\"type\":{\"enum\":[\"utf-8\"],\"caseInsensitive\":true},\"condition\":[\":not([itemprop])\",\":not([name])\",\":not([http-equiv])\"]},\"content\":{\"type\":[{\"condition\":\"[http-equiv='refresh' i]\",\"type\":\"HTTPEquivRefresh\"},{\"condition\":\"[http-equiv='content-type' i]\",\"type\":\"HTTPEquivContentType\"},{\"condition\":\"[http-equiv='x-ua-compatible' i]\",\"type\":{\"enum\":[\"IE=edge\"],\"caseInsensitive\":true}},{\"condition\":\"[http-equiv='content-security-policy' i]\",\"type\":\"ContentSecurityPolicy\"}],\"required\":[\"[name]\",\"[http-equiv]\",\"[itemprop]\"],\"condition\":[\"[name]\",\"[http-equiv]\",\"[itemprop]\"]},\"http-equiv\":{\"type\":{\"enum\":[\"content-type\",\"default-style\",\"refresh\",\"x-ua-compatible\",\"content-security-policy\"]},\"requiredEither\":[\"itemprop\",\"name\",\"charset\"],\"condition\":[\":not([itemprop])\",\":not([name])\",\":not([charset])\"]},\"itemprop\":{\"requiredEither\":[\"name\",\"http-equiv\",\"charset\"],\"condition\":[\":not([name])\",\":not([http-equiv])\",\":not([charset])\"]},\"media\":{\"condition\":\"[name='theme-color']\"},\"name\":{\"type\":\"Any\",\"requiredEither\":[\"itemprop\",\"http-equiv\",\"charset\"],\"condition\":[\":not([itemprop])\",\":not([http-equiv])\",\":not([charset])\"]}}},\"meter\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing):not(meter, :has(meter))\"}]},\"aria\":{\"implicitRole\":\"meter\",\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"high\":{\"type\":\"Number\"},\"low\":{\"type\":\"Number\"},\"max\":{\"type\":\"Number\"},\"min\":{\"type\":\"Number\"},\"optimum\":{\"type\":\"Number\"},\"value\":{\"type\":\"Number\"}}},\"multicol\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"nav\":{\"categories\":[\"#flow\",\"#sectioning\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow)\"}]},\"aria\":{\"implicitRole\":\"navigation\",\"permittedRoles\":[\"menu\",\"menubar\",\"none\",\"presentation\",\"tablist\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"nextid\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"nobr\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"noembed\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"noframes\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"noscript\":{\"categories\":[\"#metadata\",\"#flow\",\"#phrasing\"],\"contentModel\":{\"contents\":[{\"transparent\":\":not(noscript)\"}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"object\":{\"categories\":[\"#flow\",\"#phrasing\",\"#embedded\",\"#interactive\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow)\"}]},\"aria\":{\"permittedRoles\":[\"application\",\"document\",\"img\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLEmbededAndMediaContentAttrs\",\"#HTMLFormControlElementAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"archive\":{\"deprecated\":true},\"border\":{\"deprecated\":true},\"classid\":{\"deprecated\":true},\"codebase\":{\"deprecated\":true},\"codetype\":{\"deprecated\":true},\"data\":{\"type\":\"NonEmptyURL\",\"requiredEither\":[\"type\"]},\"declare\":{\"deprecated\":true},\"form\":{},\"height\":{},\"name\":{\"type\":\"NavigableTargetName\"},\"standby\":{\"deprecated\":true},\"type\":{\"type\":\"MIMEType\",\"requiredEither\":[\"data\"]},\"usemap\":{\"deprecated\":true},\"width\":{}}},\"ol\":{\"categories\":[\"#flow\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\"li\",\":model(script-supporting)\"]}]},\"aria\":{\"implicitRole\":\"list\",\"permittedRoles\":[\"group\",\"listbox\",\"menu\",\"menubar\",\"none\",\"presentation\",\"radiogroup\",\"tablist\",\"toolbar\",\"tree\",\"directory\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"compact\":{\"deprecated\":true,\"nonStandard\":true},\"reversed\":{\"type\":\"Boolean\"},\"start\":{\"type\":\"Int\"},\"type\":{\"type\":{\"enum\":[\"1\",\"a\",\"A\",\"i\",\"I\"],\"caseInsensitive\":false,\"invalidValueDefault\":\"decimal\",\"missingValueDefault\":\"decimal\"}}}},\"optgroup\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":\"option\"}]},\"aria\":{\"implicitRole\":\"group\",\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLFormControlElementAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"disabled\":{},\"label\":{\"type\":\"NoEmptyAny\",\"required\":true}}},\"option\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"require\":\"#nonEmptyText\"}],\"conditional\":[{\"condition\":\"[label][value]\",\"contents\":false},{\"condition\":\"label\",\"contents\":[{\"optional\":\"#text\"}]},{\"condition\":\"datalist > :scope\",\"contents\":[{\"optional\":\"#text\"}]},{\"condition\":\"datalist > [label]\",\"contents\":[{\"optional\":\"#text\"}]}]},\"aria\":{\"permittedRoles\":[],\"conditions\":{\":is(select, select > optgroup, datalist) > option\":{\"implicitRole\":\"option\"}}},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLFormControlElementAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"disabled\":{},\"label\":{\"type\":\"Any\"},\"selected\":{\"type\":\"Boolean\"},\"value\":{\"type\":\"Any\"}}},\"output\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"status\",\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLFormControlElementAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"for\":{\"type\":{\"token\":\"DOMID\",\"separator\":\"space\",\"unique\":true,\"caseInsensitive\":true}},\"form\":{},\"name\":{}}},\"p\":{\"categories\":[\"#flow\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"paragraph\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"param\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{\"name\":{\"deprecated\":true,\"nonStandard\":true},\"type\":{\"deprecated\":true,\"nonStandard\":true},\"value\":{\"deprecated\":true,\"nonStandard\":true},\"valuetype\":{\"deprecated\":true,\"nonStandard\":true}}},\"picture\":{\"categories\":[\"#flow\",\"#phrasing\",\"#embedded\"],\"contentModel\":{\"contents\":[{\"zeroOrMore\":\":model(script-supporting)\"},{\"zeroOrMore\":\"source\"},{\"zeroOrMore\":\":model(script-supporting)\"},{\"require\":\"img\"},{\"zeroOrMore\":\":model(script-supporting)\"}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"plaintext\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"pre\":{\"categories\":[\"#flow\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"generic\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"width\":{\"deprecated\":true,\"nonStandard\":true},\"wrap\":{\"deprecated\":true,\"nonStandard\":true}}},\"progress\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing):not(progress, :has(progress))\"}]},\"aria\":{\"implicitRole\":\"progressbar\",\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"max\":{\"type\":{\"type\":\"float\",\"gt\":0}},\"value\":{\"type\":{\"type\":\"float\",\"gte\":0}}}},\"q\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"generic\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"cite\":{\"type\":\"URL\"}}},\"rb\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"rp\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"oneOrMore\":\"#text\"}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"rt\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"rtc\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"ruby\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":[{\"oneOrMore\":[\":model(phrasing):not(ruby, :has(ruby))\",\"ruby:not(:has(ruby))\"]},{\"choice\":[[{\"oneOrMore\":\"rt\"}],[{\"require\":\"rp\"},{\"oneOrMore\":[{\"require\":\"rt\"},{\"require\":\"rp\"}]}]]}]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"s\":{\"categories\":[\"#flow\",\"#phrasing\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"deletion\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"samp\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"generic\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"script\":{\"categories\":[\"#metadata\",\"#flow\",\"#phrasing\"],\"contentModel\":{\"contents\":[{\"zeroOrMore\":\"#text\"}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#HTMLLinkAndFetchingAttrs\"],\"attributes\":{\"async\":{\"type\":\"Boolean\",\"ineffective\":\":not([src]):not([type='module' i])\",\"condition\":[\":is(:not([type]), [type=''], [type='application/ecmascript' i], [type='application/javascript' i], [type='application/x-ecmascript' i], [type='application/x-javascript' i], [type='text/ecmascript' i], [type='text/javascript' i], [type='text/javascript1.0' i], [type='text/javascript1.1' i], [type='text/javascript1.2' i], [type='text/javascript1.3' i], [type='text/javascript1.4' i], [type='text/javascript1.5' i], [type='text/jscript' i], [type='text/livescript' i], [type='text/x-ecmascript' i], [type='text/x-javascript' i])[src]\",\"[type='module' i]\"]},\"attributionsrc\":{\"deprecated\":true,\"nonStandard\":true},\"blocking\":{\"type\":{\"token\":{\"enum\":[\"render\"]},\"separator\":\"space\",\"unique\":true},\"condition\":\":is(:not([type]), [type=''], [type='module' i], [type='application/ecmascript' i], [type='application/javascript' i], [type='application/x-ecmascript' i], [type='application/x-javascript' i], [type='text/ecmascript' i], [type='text/javascript' i], [type='text/javascript1.0' i], [type='text/javascript1.1' i], [type='text/javascript1.2' i], [type='text/javascript1.3' i], [type='text/javascript1.4' i], [type='text/javascript1.5' i], [type='text/jscript' i], [type='text/livescript' i], [type='text/x-ecmascript' i], [type='text/x-javascript' i])[src]\"},\"charset\":{\"deprecated\":true,\"condition\":\"[src]\"},\"crossorigin\":{\"condition\":\":is(:not([type]), [type=''], [type='module' i], [type='application/ecmascript' i], [type='application/javascript' i], [type='application/x-ecmascript' i], [type='application/x-javascript' i], [type='text/ecmascript' i], [type='text/javascript' i], [type='text/javascript1.0' i], [type='text/javascript1.1' i], [type='text/javascript1.2' i], [type='text/javascript1.3' i], [type='text/javascript1.4' i], [type='text/javascript1.5' i], [type='text/jscript' i], [type='text/livescript' i], [type='text/x-ecmascript' i], [type='text/x-javascript' i])\"},\"defer\":{\"type\":\"Boolean\",\"ineffective\":[\":not([src])\",\"[async]\"],\"condition\":\":is(:not([type]), [type=''], [type='application/ecmascript' i], [type='application/javascript' i], [type='application/x-ecmascript' i], [type='application/x-javascript' i], [type='text/ecmascript' i], [type='text/javascript' i], [type='text/javascript1.0' i], [type='text/javascript1.1' i], [type='text/javascript1.2' i], [type='text/javascript1.3' i], [type='text/javascript1.4' i], [type='text/javascript1.5' i], [type='text/jscript' i], [type='text/livescript' i], [type='text/x-ecmascript' i], [type='text/x-javascript' i])[src]\"},\"fetchpriority\":{\"condition\":\":is(:not([type]), [type=''], [type='module' i], [type='application/ecmascript' i], [type='application/javascript' i], [type='application/x-ecmascript' i], [type='application/x-javascript' i], [type='text/ecmascript' i], [type='text/javascript' i], [type='text/javascript1.0' i], [type='text/javascript1.1' i], [type='text/javascript1.2' i], [type='text/javascript1.3' i], [type='text/javascript1.4' i], [type='text/javascript1.5' i], [type='text/jscript' i], [type='text/livescript' i], [type='text/x-ecmascript' i], [type='text/x-javascript' i])[src]\"},\"integrity\":{\"condition\":\":is(:not([type]), [type=''], [type='module' i], [type='application/ecmascript' i], [type='application/javascript' i], [type='application/x-ecmascript' i], [type='application/x-javascript' i], [type='text/ecmascript' i], [type='text/javascript' i], [type='text/javascript1.0' i], [type='text/javascript1.1' i], [type='text/javascript1.2' i], [type='text/javascript1.3' i], [type='text/javascript1.4' i], [type='text/javascript1.5' i], [type='text/jscript' i], [type='text/livescript' i], [type='text/x-ecmascript' i], [type='text/x-javascript' i])[src]\"},\"language\":{\"deprecated\":true,\"nonStandard\":true},\"nomodule\":{\"type\":\"Boolean\",\"condition\":\":is(:not([type]), [type=''], [type='application/ecmascript' i], [type='application/javascript' i], [type='application/x-ecmascript' i], [type='application/x-javascript' i], [type='text/ecmascript' i], [type='text/javascript' i], [type='text/javascript1.0' i], [type='text/javascript1.1' i], [type='text/javascript1.2' i], [type='text/javascript1.3' i], [type='text/javascript1.4' i], [type='text/javascript1.5' i], [type='text/jscript' i], [type='text/livescript' i], [type='text/x-ecmascript' i], [type='text/x-javascript' i])\"},\"nonce\":{},\"referrerpolicy\":{\"condition\":\":is(:not([type]), [type=''], [type='module' i], [type='application/ecmascript' i], [type='application/javascript' i], [type='application/x-ecmascript' i], [type='application/x-javascript' i], [type='text/ecmascript' i], [type='text/javascript' i], [type='text/javascript1.0' i], [type='text/javascript1.1' i], [type='text/javascript1.2' i], [type='text/javascript1.3' i], [type='text/javascript1.4' i], [type='text/javascript1.5' i], [type='text/jscript' i], [type='text/livescript' i], [type='text/x-ecmascript' i], [type='text/x-javascript' i])\"},\"src\":{\"type\":\"NonEmptyURL\",\"condition\":\":is(:not([type]), [type=''], [type='module' i], [type='application/ecmascript' i], [type='application/javascript' i], [type='application/x-ecmascript' i], [type='application/x-javascript' i], [type='text/ecmascript' i], [type='text/javascript' i], [type='text/javascript1.0' i], [type='text/javascript1.1' i], [type='text/javascript1.2' i], [type='text/javascript1.3' i], [type='text/javascript1.4' i], [type='text/javascript1.5' i], [type='text/jscript' i], [type='text/livescript' i], [type='text/x-ecmascript' i], [type='text/x-javascript' i])\"},\"type\":{\"type\":[\"MIMEType\",{\"enum\":[\"module\",\"importmap\",\"speculationrules\"],\"caseInsensitive\":true}]}}},\"search\":{\"categories\":[\"#flow\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow)\"}]},\"aria\":{\"implicitRole\":\"search\",\"permittedRoles\":[\"form\",\"group\",\"none\",\"presentation\",\"region\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"section\":{\"categories\":[\"#flow\",\"#sectioning\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow)\"}]},\"aria\":{\"permittedRoles\":[\"alert\",\"alertdialog\",\"application\",\"banner\",\"complementary\",\"contentinfo\",\"dialog\",\"document\",\"feed\",\"group\",\"log\",\"main\",\"marquee\",\"navigation\",\"none\",\"note\",\"presentation\",\"search\",\"status\",\"tabpanel\"],\"conditions\":{\":aria(has name)\":{\"implicitRole\":\"region\"}}},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"select\":{\"categories\":[\"#flow\",\"#phrasing\",\"#interactive\"],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\"option\",\"optgroup\",\"hr\",\"#script-supporting\"]}]},\"aria\":{\"implicitRole\":\"combobox\",\"permittedRoles\":[\"menu\"],\"conditions\":{\"[multiple], [size]:not([size=1])\":{\"implicitRole\":\"listbox\"}}},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLFormControlElementAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"autocomplete\":{\"type\":\"AutoCompleteNoWebauthn\"},\"autofocus\":{},\"disabled\":{},\"form\":{},\"multiple\":{\"type\":\"Boolean\"},\"name\":{},\"required\":{},\"size\":{\"type\":{\"type\":\"integer\",\"gt\":0}}}},\"slot\":{\"categories\":[\"#flow\",\"#phrasing\"],\"contentModel\":{\"contents\":[{\"transparent\":\"*\"}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"name\":{\"type\":\"NoEmptyAny\"}}},\"small\":{\"categories\":[\"#flow\",\"#phrasing\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"generic\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"source\":{\"categories\":[],\"contentModel\":{\"contents\":false},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLEmbededAndMediaContentAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"height\":{\"condition\":\"picture > source\"},\"media\":{\"type\":\"MediaQueryList\"},\"sizes\":{\"condition\":\"picture > source[srcset]\"},\"src\":{\"type\":\"NonEmptyURL\",\"required\":\":is(video, audio) > source\",\"condition\":\":is(video, audio) > source\"},\"srcset\":{\"required\":\"picture > source\",\"condition\":\"picture > source\"},\"type\":{\"type\":\"MIMEType\"},\"width\":{\"condition\":\"picture > source\"}}},\"spacer\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"span\":{\"categories\":[\"#flow\",\"#phrasing\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"generic\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"strike\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"strong\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"strong\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"style\":{\"categories\":[\"#metadata\"],\"contentModel\":{\"contents\":[{\"zeroOrMore\":\"#text\"}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"blocking\":{\"type\":{\"token\":{\"enum\":[\"render\"]},\"separator\":\"space\",\"unique\":true}},\"media\":{\"type\":\"MediaQueryList\"},\"nonce\":{},\"title\":{},\"type\":{\"deprecated\":true}}},\"sub\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"subscript\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"summary\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"choice\":[[{\"oneOrMore\":\":model(phrasing)\"}],[{\"require\":\":model(heading)\"}]]}]},\"aria\":{\"implicitRole\":\"button\",\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"sup\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"superscript\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"table\":{\"categories\":[\"#flow\"],\"contentModel\":{\"contents\":[{\"zeroOrMore\":\":model(script-supporting)\"},{\"optional\":\"caption\"},{\"zeroOrMore\":\":model(script-supporting)\"},{\"zeroOrMore\":\"colgroup\"},{\"zeroOrMore\":\":model(script-supporting)\"},{\"optional\":\"thead\"},{\"zeroOrMore\":\":model(script-supporting)\"},{\"choice\":[[{\"zeroOrMore\":\"tbody\"}],[{\"oneOrMore\":\"tr\"}]]},{\"zeroOrMore\":\":model(script-supporting)\"},{\"optional\":\"tfoot\"},{\"zeroOrMore\":\":model(script-supporting)\"}]},\"aria\":{\"implicitRole\":\"table\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"align\":{\"deprecated\":true},\"bgcolor\":{\"deprecated\":true},\"border\":{\"deprecated\":true},\"cellpadding\":{\"deprecated\":true},\"cellspacing\":{\"deprecated\":true},\"frame\":{\"deprecated\":true},\"rules\":{\"deprecated\":true},\"summary\":{\"deprecated\":true},\"width\":{\"deprecated\":true}}},\"tbody\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":\"tr\"}]},\"aria\":{\"implicitRole\":\"rowgroup\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"align\":{\"deprecated\":true},\"bgcolor\":{\"deprecated\":true,\"nonStandard\":true},\"char\":{\"deprecated\":true},\"charoff\":{\"deprecated\":true},\"valign\":{\"deprecated\":true}}},\"td\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow)\"}]},\"aria\":{\"permittedRoles\":\"any\",\"conditions\":{\"table:is(:not([role]), [role=table]) > :is(thead, tfoot, tbody) > tr > td, table:is(:not([role]), [role=table]) > tr > td\":{\"implicitRole\":\"cell\"},\"table:is([role=grid], [role=treegrid]) > :is(thead, tfoot, tbody) > tr > td, table:is([role=grid], [role=treegrid]) > tr > td\":{\"implicitRole\":\"gridcell\"}}},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#HTMLTableCellElementAttrs\"],\"attributes\":{\"abbr\":{\"deprecated\":true},\"align\":{\"deprecated\":true},\"axis\":{\"deprecated\":true},\"bgcolor\":{\"deprecated\":true},\"char\":{\"deprecated\":true},\"charoff\":{\"deprecated\":true},\"colspan\":{},\"headers\":{},\"height\":{\"deprecated\":true},\"rowspan\":{},\"scope\":{\"deprecated\":true},\"valign\":{\"deprecated\":true},\"width\":{\"deprecated\":true}}},\"template\":{\"categories\":[\"#metadata\",\"#flow\",\"#phrasing\",\"#script-supporting\"],\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"for\":{\"experimental\":true},\"shadowrootclonable\":{\"type\":\"Boolean\"},\"shadowrootcustomelementregistry\":{\"type\":\"Boolean\"},\"shadowrootdelegatesfocus\":{\"type\":\"Boolean\"},\"shadowrootmode\":{\"type\":{\"enum\":[\"open\",\"closed\"],\"missingValueDefault\":\"none\",\"invalidValueDefault\":\"none\"}},\"shadowrootreferencetarget\":{\"type\":\"DOMID\",\"nonStandard\":true,\"experimental\":true},\"shadowrootserializable\":{\"type\":\"Boolean\"},\"shadowrootslotassignment\":{\"type\":{\"enum\":[\"named\",\"manual\"],\"missingValueDefault\":\"named\",\"invalidValueDefault\":\"named\"},\"experimental\":true}}},\"textarea\":{\"categories\":[\"#flow\",\"#phrasing\",\"#interactive\"],\"contentModel\":{\"contents\":[{\"optional\":\"#text\"}]},\"aria\":{\"implicitRole\":\"textbox\",\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLFormControlElementAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"autocapitalize\":{},\"autocomplete\":{},\"autocorrect\":{},\"autofocus\":{},\"cols\":{\"type\":{\"type\":\"integer\",\"gt\":0}},\"dirname\":{},\"disabled\":{},\"form\":{},\"maxlength\":{},\"minlength\":{},\"name\":{},\"placeholder\":{\"type\":\"Any\"},\"readonly\":{},\"required\":{},\"rows\":{\"type\":{\"type\":\"integer\",\"gt\":0}},\"spellcheck\":{},\"wrap\":{\"type\":{\"enum\":[\"soft\",\"hard\"],\"missingValueDefault\":\"soft\",\"invalidValueDefault\":\"soft\"}}}},\"tfoot\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":\"tr\"}]},\"aria\":{\"implicitRole\":\"rowgroup\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"align\":{\"deprecated\":true},\"bgcolor\":{\"deprecated\":true,\"nonStandard\":true},\"char\":{\"deprecated\":true},\"charoff\":{\"deprecated\":true},\"valign\":{\"deprecated\":true}}},\"th\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow):not(header, footer, :model(sectioning), :model(heading), :has(header, footer, :model(sectioning), :model(heading)))\"}]},\"aria\":{\"permittedRoles\":\"any\",\"conditions\":{\"table:is(:not([role]), [role=table]) > :is(thead, tfoot, tbody) > tr > th, table:is(:not([role]), [role=table]) > tr > th\":{\"implicitRole\":\"cell\"},\"table:is([role=grid], [role=treegrid]) > :is(thead, tfoot, tbody) > tr > th, table:is([role=grid], [role=treegrid]) > tr > th\":{\"implicitRole\":\"gridcell\"},\"table:is(:not([role]), [role=table], [role=grid], [role=treegrid]) > thead > tr > th:not([scope])\":{\"implicitRole\":\"columnheader\"},\"table:is(:not([role]), [role=table], [role=grid], [role=treegrid]) > :is(tfoot, tbody) > tr > th:not([scope]), table:is(:not([role]), [role=table], [role=grid], [role=treegrid]) > tr > th:not([scope])\":{\"implicitRole\":\"rowheader\"},\"table:is(:not([role]), [role=table], [role=grid], [role=treegrid]) > :is(thead, tfoot, tbody) > tr > th[scope=col], table:is(:not([role]), [role=table], [role=grid], [role=treegrid]) > tr > th[scope=col]\":{\"implicitRole\":\"columnheader\"},\"table:is(:not([role]), [role=table], [role=grid], [role=treegrid]) > :is(thead, tfoot, tbody) > tr > th[scope=row], table:is(:not([role]), [role=table], [role=grid], [role=treegrid]) > tr > th[scope=row]\":{\"implicitRole\":\"rowheader\"}}},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#HTMLTableCellElementAttrs\"],\"attributes\":{\"abbr\":{\"type\":\"Any\"},\"align\":{\"deprecated\":true},\"axis\":{\"deprecated\":true},\"bgcolor\":{\"deprecated\":true},\"char\":{\"deprecated\":true},\"charoff\":{\"deprecated\":true},\"colspan\":{},\"headers\":{},\"height\":{\"deprecated\":true},\"rowspan\":{},\"scope\":{\"type\":{\"enum\":[\"row\",\"col\",\"rowgroup\",\"colgroup\"],\"missingValueDefault\":\"auto\",\"invalidValueDefault\":\"auto\"}},\"valign\":{\"deprecated\":true},\"width\":{\"deprecated\":true}}},\"thead\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":\"tr\"}]},\"aria\":{\"implicitRole\":\"rowgroup\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"align\":{\"deprecated\":true},\"bgcolor\":{\"deprecated\":true,\"nonStandard\":true},\"char\":{\"deprecated\":true},\"charoff\":{\"deprecated\":true},\"valign\":{\"deprecated\":true}}},\"time\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"time\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"datetime\":{\"type\":\"DateTime\"}}},\"title\":{\"categories\":[\"#metadata\"],\"contentModel\":{\"contents\":[{\"require\":\"#nonEmptyText\"}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"tr\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\"th\",\"td\",\":model(script-supporting)\"]}]},\"aria\":{\"implicitRole\":\"row\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"align\":{\"deprecated\":true},\"bgcolor\":{\"deprecated\":true},\"char\":{\"deprecated\":true},\"charoff\":{\"deprecated\":true},\"valign\":{\"deprecated\":true}}},\"track\":{\"categories\":[],\"contentModel\":{\"contents\":false,\"uniqueAttrs\":[\"default\"]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"default\":{\"type\":\"Boolean\"},\"kind\":{\"type\":{\"enum\":[\"subtitles\",\"captions\",\"descriptions\",\"chapters\",\"metadata\"],\"missingValueDefault\":\"metadata\",\"invalidValueDefault\":\"metadata\"}},\"label\":{\"type\":\"NoEmptyAny\"},\"src\":{\"type\":\"NonEmptyURL\",\"required\":true},\"srclang\":{\"type\":\"BCP47\"}}},\"tt\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"u\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"generic\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"ul\":{\"categories\":[\"#flow\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\"li\",\":model(script-supporting)\"]}]},\"aria\":{\"implicitRole\":\"list\",\"permittedRoles\":[\"group\",\"listbox\",\"menu\",\"menubar\",\"none\",\"presentation\",\"radiogroup\",\"tablist\",\"toolbar\",\"tree\",\"directory\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"compact\":{\"deprecated\":true},\"type\":{\"deprecated\":true}}},\"var\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"video\":{\"categories\":[\"#flow\",\"#phrasing\",\"#embedded\",\"#interactive\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"zeroOrMore\":\"source\"},{\"zeroOrMore\":\"track\"},{\"transparent\":\":not(audio, video, :has(audio, video))\"}],\"conditional\":[{\"condition\":\"[src]\",\"contents\":[{\"zeroOrMore\":\"track\"},{\"transparent\":\":not(audio, video, :has(audio, video))\"}]}]},\"aria\":{\"permittedRoles\":[\"application\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLEmbededAndMediaContentAttrs\",\"#HTMLGlobalAttrs\",\"#HTMLLinkAndFetchingAttrs\"],\"attributes\":{\"autoplay\":{},\"controls\":{},\"controlslist\":{\"type\":{\"token\":{\"enum\":[\"nodownload\",\"nofullscreen\",\"noremoteplayback\"]},\"ordered\":false,\"caseInsensitive\":true,\"unique\":true,\"separator\":\"space\"}},\"crossorigin\":{},\"disablepictureinpicture\":{},\"disableremoteplayback\":{},\"height\":{},\"loading\":{\"experimental\":false},\"loop\":{},\"muted\":{},\"playsinline\":{\"type\":\"Boolean\"},\"poster\":{\"type\":\"NonEmptyURL\"},\"preload\":{},\"src\":{},\"width\":{}}},\"wbr\":{\"categories\":[\"#flow\",\"#phrasing\"],\"contentModel\":{\"contents\":false},\"aria\":{\"permittedRoles\":[\"none\",\"presentation\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"xmp\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"mml:annotation\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"encoding\":{\"type\":\"MIMEType\"},\"src\":{\"type\":\"URL\",\"deprecated\":true}}},\"mml:annotation-xml\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"encoding\":{\"type\":\"MIMEType\"},\"src\":{\"type\":\"URL\",\"deprecated\":true}}},\"mml:maction\":{\"categories\":[],\"deprecated\":true,\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"actiontype\":{\"type\":\"Any\",\"deprecated\":true,\"nonStandard\":true},\"selection\":{\"type\":\"Any\",\"deprecated\":true,\"nonStandard\":true}}},\"math\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"#text\"]}]},\"aria\":{\"implicitRole\":\"math\",\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"alttext\":{\"type\":\"Any\"},\"display\":{\"type\":{\"enum\":[\"block\",\"inline\"],\"disallowToSurroundBySpaces\":false}},\"xmlns\":{\"type\":\"URL\"}}},\"mml:menclose\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"notation\":{\"type\":\"Any\",\"nonStandard\":true}}},\"mml:merror\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{}},\"mml:mfenced\":{\"categories\":[],\"deprecated\":true,\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"close\":{\"type\":\"Any\"},\"open\":{\"type\":\"Any\"},\"separators\":{\"type\":\"Any\"}}},\"mml:mfrac\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"require\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"#text\"],\"min\":2,\"max\":2}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"denomalign\":{\"deprecated\":true,\"nonStandard\":true},\"linethickness\":{\"type\":\"<length-percentage>\"},\"numalign\":{\"deprecated\":true,\"nonStandard\":true}}},\"mml:mi\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"mathvariant\":{\"type\":{\"enum\":[\"normal\"],\"disallowToSurroundBySpaces\":false}}}},\"mml:mmultiscripts\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|mprescripts\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"subscriptshift\":{\"deprecated\":true,\"nonStandard\":true},\"superscriptshift\":{\"deprecated\":true,\"nonStandard\":true}}},\"mml:mn\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{}},\"mml:mo\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"accent\":{\"type\":{\"enum\":[\"true\",\"false\"],\"disallowToSurroundBySpaces\":false},\"nonStandard\":true},\"fence\":{\"type\":{\"enum\":[\"true\",\"false\"],\"disallowToSurroundBySpaces\":false}},\"form\":{\"type\":{\"enum\":[\"prefix\",\"infix\",\"postfix\"],\"disallowToSurroundBySpaces\":false}},\"largeop\":{\"type\":{\"enum\":[\"true\",\"false\"],\"disallowToSurroundBySpaces\":false}},\"lspace\":{\"type\":\"<length-percentage>\"},\"maxsize\":{\"type\":\"<length-percentage>\"},\"minsize\":{\"type\":\"<length-percentage>\"},\"movablelimits\":{\"type\":{\"enum\":[\"true\",\"false\"],\"disallowToSurroundBySpaces\":false}},\"rspace\":{\"type\":\"<length-percentage>\"},\"separator\":{\"type\":{\"enum\":[\"true\",\"false\"],\"disallowToSurroundBySpaces\":false}},\"stretchy\":{\"type\":{\"enum\":[\"true\",\"false\"],\"disallowToSurroundBySpaces\":false}},\"symmetric\":{\"type\":{\"enum\":[\"true\",\"false\"],\"disallowToSurroundBySpaces\":false}}}},\"mml:mover\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"require\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"],\"min\":2,\"max\":2}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"accent\":{\"type\":{\"enum\":[\"true\",\"false\"],\"disallowToSurroundBySpaces\":false}}}},\"mml:mpadded\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"depth\":{\"type\":\"<length-percentage>\"},\"height\":{\"type\":\"<length-percentage>\"},\"lspace\":{\"type\":\"<length-percentage>\"},\"voffset\":{\"type\":\"<length-percentage>\"},\"width\":{\"type\":\"<length-percentage>\"}}},\"mml:mphantom\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{}},\"mml:mprescripts\":{\"categories\":[],\"contentModel\":{\"contents\":false},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{}},\"mml:mroot\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"require\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"#text\"],\"min\":2,\"max\":2}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{}},\"mml:mrow\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"mml|mtr\",\"mml|mtd\",\"mml|mprescripts\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{}},\"mml:ms\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{}},\"mml:mspace\":{\"categories\":[],\"contentModel\":{\"contents\":false},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"depth\":{\"type\":\"<length-percentage>\"},\"height\":{\"type\":\"<length-percentage>\"},\"width\":{\"type\":\"<length-percentage>\"}}},\"mml:msqrt\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{}},\"mml:mstyle\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"background\":{\"deprecated\":true,\"nonStandard\":true},\"color\":{\"deprecated\":true,\"nonStandard\":true},\"fontsize\":{\"deprecated\":true,\"nonStandard\":true},\"fontstyle\":{\"deprecated\":true,\"nonStandard\":true},\"fontweight\":{\"deprecated\":true,\"nonStandard\":true}}},\"mml:msub\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"require\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"],\"min\":2,\"max\":2}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"subscriptshift\":{\"deprecated\":true,\"nonStandard\":true}}},\"mml:msubsup\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"require\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"],\"min\":3,\"max\":3}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"subscriptshift\":{\"deprecated\":true,\"nonStandard\":true},\"superscriptshift\":{\"deprecated\":true,\"nonStandard\":true}}},\"mml:msup\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"require\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"],\"min\":2,\"max\":2}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"superscriptshift\":{\"deprecated\":true,\"nonStandard\":true}}},\"mml:mtable\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\"mml|mtr\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"align\":{\"nonStandard\":true},\"columnalign\":{\"nonStandard\":true},\"columnlines\":{\"nonStandard\":true},\"columnspacing\":{\"nonStandard\":true},\"frame\":{\"nonStandard\":true},\"framespacing\":{\"nonStandard\":true},\"rowalign\":{\"nonStandard\":true},\"rowlines\":{\"nonStandard\":true},\"rowspacing\":{\"nonStandard\":true},\"width\":{\"nonStandard\":true}}},\"mml:mtd\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"columnalign\":{\"nonStandard\":true},\"columnspan\":{\"type\":{\"type\":\"integer\",\"gt\":0}},\"rowalign\":{\"nonStandard\":true},\"rowspan\":{\"type\":{\"type\":\"integer\",\"gt\":0}}}},\"mml:mtext\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{}},\"mml:mtr\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\"mml|mtd\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"columnalign\":{\"nonStandard\":true},\"rowalign\":{\"nonStandard\":true}}},\"mml:munder\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"require\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"],\"min\":2,\"max\":2}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"accentunder\":{\"type\":{\"enum\":[\"true\",\"false\"],\"disallowToSurroundBySpaces\":false}}}},\"mml:munderover\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"require\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"],\"min\":3,\"max\":3}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"accent\":{\"type\":{\"enum\":[\"true\",\"false\"],\"disallowToSurroundBySpaces\":false}},\"accentunder\":{\"type\":{\"enum\":[\"true\",\"false\"],\"disallowToSurroundBySpaces\":false}}}},\"mml:semantics\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{}},\"svg:a\":{\"categories\":[],\"contentModel\":{\"conditional\":[{\"condition\":\"svg|switch > svg|a\",\"contents\":[{\"transparent\":\":not(svg|a, :has(svg|a))\"}]}],\"contents\":[{\"transparent\":\":not(svg|a, :has(svg|a))\"}]},\"aria\":{\"implicitRole\":\"group\",\"permittedRoles\":\"any\",\"conditions\":{\"[href], [xlink|href]\":{\"implicitRole\":\"link\"}}},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#HTMLLinkAndFetchingAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\",\"#XLinkAttrs\"],\"attributes\":{\"download\":{},\"href\":{},\"hreflang\":{},\"interestfor\":{\"type\":\"DOMID\",\"nonStandard\":true,\"experimental\":true},\"ping\":{\"experimental\":true},\"referrerpolicy\":{},\"rel\":{},\"target\":{},\"type\":{},\"xlink:href\":{\"deprecated\":true}}},\"svg:animate\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|script\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#GlobalEventAttrs\",\"#SVGAnimationAdditionAttrs\",\"#SVGAnimationAttributeTargetAttrs\",\"#SVGAnimationEventAttrs\",\"#SVGAnimationTargetElementAttrs\",\"#SVGAnimationTimingAttrs\",\"#SVGAnimationValueAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{}},\"svg:animateMotion\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"choice\":[[{\"oneOrMore\":[\":model(SVGDescriptive)\",\"svg|script\"]},{\"optional\":\"svg|mpath\"}],[{\"optional\":\"svg|mpath\"},{\"oneOrMore\":[\":model(SVGDescriptive)\",\"svg|script\"]}]]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#GlobalEventAttrs\",\"#SVGAnimationAdditionAttrs\",\"#SVGAnimationEventAttrs\",\"#SVGAnimationTargetElementAttrs\",\"#SVGAnimationTimingAttrs\",\"#SVGAnimationValueAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\"],\"attributes\":{\"keyPoints\":{\"type\":\"<key-points>\"},\"origin\":{\"type\":\"<origin>\"},\"path\":{\"type\":\"<svg-path>\"},\"rotate\":{\"type\":\"<rotate>\"}}},\"svg:animateTransform\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|script\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#GlobalEventAttrs\",\"#SVGAnimationAdditionAttrs\",\"#SVGAnimationAttributeTargetAttrs\",\"#SVGAnimationEventAttrs\",\"#SVGAnimationTargetElementAttrs\",\"#SVGAnimationTimingAttrs\",\"#SVGAnimationValueAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\"],\"attributes\":{\"type\":{\"type\":{\"enum\":[\"translate\",\"scale\",\"rotate\",\"skewX\",\"skewY\"]}}}},\"svg:circle\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\":model(SVGPaintServer)\",\"svg|clipPath\",\"svg|marker\",\"svg|mask\",\"svg|script\",\"svg|style\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"cx\":{},\"cy\":{},\"pathLength\":{\"type\":\"<number>\"},\"r\":{}}},\"svg:clipPath\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\":model(SVGShape)\",\"svg|text\",\"svg|use\",\"svg|script\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"clipPathUnits\":{\"type\":{\"enum\":[\"userSpaceOnUse\",\"objectBoundingBox\"],\"disallowToSurroundBySpaces\":false}},\"externalResourcesRequired\":{\"type\":{\"enum\":[\"true\",\"false\"]}}}},\"svg:defs\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\":model(SVGPaintServer)\",\":model(SVGShape)\",\":model(SVGStructural)\",\"svg|a\",\"svg|clipPath\",\"svg|filter\",\"svg|foreignObject\",\"svg|image\",\"svg|marker\",\"svg|mask\",\"svg|script\",\"svg|style\",\"svg|switch\",\"svg|text\",\"svg|view\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#GlobalEventAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{}},\"svg:desc\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"require\":[\":model(SVGDescriptive)\",\":model(SVGNeverRendered)\",\"#text\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#GlobalEventAttrs\",\"#SVGCoreAttrs\"],\"attributes\":{}},\"svg:discard\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"require\":[\":model(SVGDescriptive)\",\"svg|script\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\"],\"attributes\":{\"begin\":{\"type\":\"<begin-value-list>\"},\"href\":{\"type\":\"URL\"}}},\"svg:ellipse\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\":model(SVGPaintServer)\",\"svg|clipPath\",\"svg|marker\",\"svg|mask\",\"svg|script\",\"svg|style\"]}]},\"aria\":{\"implicitRole\":\"graphics-symbol\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"cx\":{},\"cy\":{},\"pathLength\":{\"type\":\"<number>\"},\"rx\":{},\"ry\":{}}},\"svg:feBlend\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"in2\":{\"type\":[{\"enum\":[\"SourceGraphic\",\"SourceAlpha\",\"BackgroundImage\",\"BackgroundAlpha\",\"FillPaint\",\"StrokePaint\"],\"disallowToSurroundBySpaces\":false},\"<custom-ident>\"]},\"mode\":{\"type\":\"<blend-mode>\"}}},\"svg:feColorMatrix\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"type\":{\"type\":{\"enum\":[\"matrix\",\"saturate\",\"hueRotate\",\"luminanceToAlpha\"],\"disallowToSurroundBySpaces\":false}},\"values\":{\"type\":\"<color-matrix>\"}}},\"svg:feComponentTransfer\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|feFuncA\",\"svg|feFuncR\",\"svg|feFuncB\",\"svg|feFuncG\",\"svg|script\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{}},\"svg:feComposite\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"in2\":{\"type\":[{\"enum\":[\"SourceGraphic\",\"SourceAlpha\",\"BackgroundImage\",\"BackgroundAlpha\",\"FillPaint\",\"StrokePaint\"],\"disallowToSurroundBySpaces\":false},\"<custom-ident>\"]},\"k1\":{\"type\":\"<number>\",\"ineffective\":\":not([operator='arithmetic' i])\"},\"k2\":{\"type\":\"<number>\",\"ineffective\":\":not([operator='arithmetic' i])\"},\"k3\":{\"type\":\"<number>\",\"ineffective\":\":not([operator='arithmetic' i])\"},\"k4\":{\"type\":\"<number>\",\"ineffective\":\":not([operator='arithmetic' i])\"},\"operator\":{\"type\":{\"enum\":[\"over\",\"in\",\"out\",\"atop\",\"xor\",\"lighter\",\"arithmetic\"],\"disallowToSurroundBySpaces\":false}}}},\"svg:feConvolveMatrix\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"bias\":{\"type\":\"<number>\"},\"divisor\":{\"type\":\"<number>\"},\"edgeMode\":{\"type\":{\"enum\":[\"duplicate\",\"wrap\",\"none\"],\"disallowToSurroundBySpaces\":false}},\"kernelMatrix\":{\"type\":\"<list-of-numbers>\"},\"kernelUnitLength\":{\"type\":\"<number-optional-number>\",\"deprecated\":true},\"order\":{\"type\":\"<number-optional-number>\"},\"preserveAlpha\":{\"type\":{\"enum\":[\"true\",\"false\"],\"disallowToSurroundBySpaces\":false}},\"targetX\":{\"type\":\"<integer>\"},\"targetY\":{\"type\":\"<integer>\"}}},\"svg:feDiffuseLighting\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"choice\":[[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|script\"]},{\"require\":\":model(SVGLightSource)\"}],[{\"require\":\":model(SVGLightSource)\"},{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|script\"]}]]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"diffuseConstant\":{\"type\":\"<number>\"},\"kernelUnitLength\":{\"type\":\"<number-optional-number>\",\"deprecated\":true},\"surfaceScale\":{\"type\":\"<number>\"}}},\"svg:feDisplacementMap\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"in2\":{\"type\":[{\"enum\":[\"SourceGraphic\",\"SourceAlpha\",\"BackgroundImage\",\"BackgroundAlpha\",\"FillPaint\",\"StrokePaint\"],\"disallowToSurroundBySpaces\":false},\"<custom-ident>\"]},\"scale\":{\"type\":\"<number>\"},\"xChannelSelector\":{\"type\":{\"enum\":[\"R\",\"G\",\"B\",\"A\"],\"disallowToSurroundBySpaces\":false}},\"yChannelSelector\":{\"type\":{\"enum\":[\"R\",\"G\",\"B\",\"A\"],\"disallowToSurroundBySpaces\":false}}}},\"svg:feDistantLight\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\"],\"attributes\":{\"azimuth\":{\"type\":\"<number>\"},\"elevation\":{\"type\":\"<number>\"}}},\"svg:feDropShadow\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"dx\":{\"type\":\"<number>\"},\"dy\":{\"type\":\"<number>\"},\"stdDeviation\":{\"type\":\"<number-optional-number>\"}}},\"svg:feFlood\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"flood-color\":{\"type\":\"<color>\"},\"flood-opacity\":{\"type\":\"<alpha-value>\"}}},\"svg:feFuncA\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGTransferFunctionAttrs\"],\"attributes\":{}},\"svg:feFuncB\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGTransferFunctionAttrs\"],\"attributes\":{}},\"svg:feFuncG\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGTransferFunctionAttrs\"],\"attributes\":{}},\"svg:feFuncR\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGTransferFunctionAttrs\"],\"attributes\":{}},\"svg:feGaussianBlur\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"edgeMode\":{\"type\":{\"enum\":[\"duplicate\",\"wrap\",\"none\"],\"disallowToSurroundBySpaces\":false}},\"stdDeviation\":{\"type\":\"<number-optional-number>\"}}},\"svg:feImage\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|animateTransform\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"crossorigin\":{\"type\":{\"enum\":[\"anonymous\",\"use-credentials\"],\"disallowToSurroundBySpaces\":false}},\"externalResourcesRequired\":{\"type\":{\"enum\":[\"true\",\"false\"],\"disallowToSurroundBySpaces\":false}},\"href\":{\"type\":\"URL\"},\"preserveAspectRatio\":{\"type\":\"<preserve-aspect-ratio>\"},\"xlink:href\":{\"type\":\"URL\",\"deprecated\":true}}},\"svg:feMerge\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|feMergeNode\",\"svg|script\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{}},\"svg:feMergeNode\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\"],\"attributes\":{}},\"svg:feMorphology\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"operator\":{\"type\":{\"enum\":[\"erode\",\"dilate\"],\"disallowToSurroundBySpaces\":false}},\"radius\":{\"type\":\"<number-optional-number>\"}}},\"svg:feOffset\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"dx\":{\"type\":\"<number>\"},\"dy\":{\"type\":\"<number>\"}}},\"svg:fePointLight\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\"],\"attributes\":{\"x\":{\"type\":\"<number>\"},\"y\":{\"type\":\"<number>\"},\"z\":{\"type\":\"<number>\"}}},\"svg:feSpecularLighting\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"choice\":[[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|script\"]},{\"require\":\":model(SVGLightSource)\"}],[{\"require\":\":model(SVGLightSource)\"},{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|script\"]}]]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"kernelUnitLength\":{\"type\":\"<number-optional-number>\"},\"specularConstant\":{\"type\":\"<number>\"},\"specularExponent\":{\"type\":\"<number>\"},\"surfaceScale\":{\"type\":\"<number>\"}}},\"svg:feSpotLight\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\"],\"attributes\":{\"limitingConeAngle\":{\"type\":\"<number>\"},\"pointsAtX\":{\"type\":\"<number>\"},\"pointsAtY\":{\"type\":\"<number>\"},\"pointsAtZ\":{\"type\":\"<number>\"},\"specularExponent\":{\"type\":\"<number>\"},\"x\":{\"type\":\"<number>\"},\"y\":{\"type\":\"<number>\"},\"z\":{\"type\":\"<number>\"}}},\"svg:feTile\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{}},\"svg:feTurbulence\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"baseFrequency\":{\"type\":\"<number-optional-number>\"},\"numOctaves\":{\"type\":\"<integer>\"},\"seed\":{\"type\":\"<number>\"},\"stitchTiles\":{\"type\":{\"enum\":[\"noStitch\",\"stitch\"]}},\"type\":{\"type\":{\"enum\":[\"fractalNoise\",\"turbulence\"]}}}},\"svg:filter\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\":model(SVGFilterPrimitive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"externalResourcesRequired\":{\"type\":{\"enum\":[\"true\",\"false\"],\"disallowToSurroundBySpaces\":false}},\"filterRes\":{\"type\":\"<number-optional-number>\",\"deprecated\":true},\"filterUnits\":{\"type\":{\"enum\":[\"userSpaceOnUse\",\"objectBoundingBox\"],\"disallowToSurroundBySpaces\":false}},\"height\":{},\"primitiveUnits\":{\"type\":{\"enum\":[\"userSpaceOnUse\",\"objectBoundingBox\"]}},\"width\":{},\"x\":{},\"y\":{}}},\"svg:foreignObject\":{\"categories\":[],\"contentModel\":{\"contents\":true},\"aria\":{\"implicitRole\":\"group\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"height\":{},\"width\":{},\"x\":{},\"y\":{}}},\"svg:g\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\":model(SVGPaintServer)\",\":model(SVGShape)\",\":model(SVGStructural)\",\"svg|a\",\"svg|clipPath\",\"svg|filter\",\"svg|foreignObject\",\"svg|image\",\"svg|marker\",\"svg|mask\",\"svg|script\",\"svg|style\",\"svg|switch\",\"svg|text\",\"svg|view\"]}]},\"aria\":{\"implicitRole\":\"group\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{}},\"svg:image\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\"svg|clipPath\",\"svg|mask\",\"svg|script\",\"svg|style\"]}]},\"aria\":{\"implicitRole\":\"img\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\",\"#XLinkAttrs\"],\"attributes\":{\"crossorigin\":{\"type\":{\"enum\":[\"\",\"anonymous\",\"use-credentials\"],\"sameStates\":{\"anonymous\":[\"\"]}}},\"decoding\":{},\"fetchpriority\":{\"nonStandard\":true,\"experimental\":true},\"height\":{},\"href\":{\"type\":\"URL\"},\"preserveAspectRatio\":{\"type\":\"<preserve-aspect-ratio>\"},\"width\":{},\"x\":{},\"xlink:href\":{\"deprecated\":true},\"y\":{}}},\"svg:line\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\":model(SVGPaintServer)\",\"svg|clipPath\",\"svg|marker\",\"svg|mask\",\"svg|script\",\"svg|style\"]}]},\"aria\":{\"implicitRole\":\"graphics-symbol\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"pathLength\":{\"type\":\"<number>\"},\"x1\":{\"type\":[\"<svg-length>\",\"<percentage>\",\"<number>\"]},\"x2\":{\"type\":[\"<svg-length>\",\"<percentage>\",\"<number>\"]},\"y1\":{\"type\":[\"<svg-length>\",\"<percentage>\",\"<number>\"]},\"y2\":{\"type\":[\"<svg-length>\",\"<percentage>\",\"<number>\"]}}},\"svg:linearGradient\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|animateTransform\",\"svg|script\",\"svg|set\",\"svg|stop\",\"svg|style\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#GlobalEventAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\",\"#XLinkAttrs\"],\"attributes\":{\"gradientTransform\":{\"type\":\"<transform-list>\"},\"gradientUnits\":{\"type\":{\"enum\":[\"userSpaceOnUse\",\"objectBoundingBox\"],\"disallowToSurroundBySpaces\":false}},\"href\":{\"type\":\"URL\"},\"spreadMethod\":{\"type\":{\"enum\":[\"pad\",\"reflect\",\"repeat\"],\"disallowToSurroundBySpaces\":false}},\"x1\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"x2\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"xlink:href\":{\"deprecated\":true},\"y1\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"y2\":{\"type\":[\"<svg-length>\",\"<percentage>\"]}}},\"svg:marker\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\":model(SVGPaintServer)\",\":model(SVGShape)\",\":model(SVGStructural)\",\"svg|a\",\"svg|clipPath\",\"svg|filter\",\"svg|foreignObject\",\"svg|image\",\"svg|marker\",\"svg|mask\",\"svg|script\",\"svg|style\",\"svg|switch\",\"svg|text\",\"svg|view\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#GlobalEventAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"markerHeight\":{\"type\":[\"<svg-length>\",\"<percentage>\",\"<number>\"]},\"markerUnits\":{\"type\":{\"enum\":[\"userSpaceOnUse\",\"strokeWidth\"],\"disallowToSurroundBySpaces\":false}},\"markerWidth\":{\"type\":[\"<svg-length>\",\"<percentage>\",\"<number>\"]},\"orient\":{\"type\":[{\"enum\":[\"auto\",\"auto-start-reverse\"],\"disallowToSurroundBySpaces\":false},\"<angle>\",\"<number>\"]},\"preserveAspectRatio\":{\"type\":\"<preserve-aspect-ratio>\"},\"refX\":{\"type\":[\"<percentage>\",\"<number>\",{\"enum\":[\"left\",\"center\",\"right\"],\"disallowToSurroundBySpaces\":false}]},\"refY\":{\"type\":[\"<percentage>\",\"<number>\",{\"enum\":[\"left\",\"center\",\"right\"],\"disallowToSurroundBySpaces\":false}]},\"viewBox\":{\"type\":\"<view-box>\"}}},\"svg:mask\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\":model(SVGShape)\",\":model(SVGStructural)\",\":model(SVGGradient)\",\"svg|a\",\"svg|altGlyphDef\",\"svg|clipPath\",\"svg|color-profile\",\"svg|cursor\",\"svg|filter\",\"svg|font\",\"svg|font-face\",\"svg|foreignObject\",\"svg|image\",\"svg|marker\",\"svg|mask\",\"svg|pattern\",\"svg|script\",\"svg|style\",\"svg|switch\",\"svg|text\",\"svg|view\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"height\":{},\"mask-type\":{},\"maskContentUnits\":{\"type\":{\"enum\":[\"userSpaceOnUse\",\"objectBoundingBox\"]}},\"maskUnits\":{\"type\":{\"enum\":[\"userSpaceOnUse\",\"objectBoundingBox\"],\"disallowToSurroundBySpaces\":false}},\"width\":{},\"x\":{},\"y\":{}}},\"svg:metadata\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\":model(SVGNeverRendered)\",\"#text\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#GlobalEventAttrs\",\"#SVGCoreAttrs\"],\"attributes\":{}},\"svg:mpath\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|script\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#GlobalEventAttrs\",\"#SVGCoreAttrs\"],\"attributes\":{\"href\":{\"type\":\"URL\"}}},\"svg:path\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\":model(SVGPaintServer)\",\"svg|clipPath\",\"svg|marker\",\"svg|mask\",\"svg|script\",\"svg|style\"]}]},\"aria\":{\"implicitRole\":\"graphics-symbol\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\",\"#XLinkAttrs\"],\"attributes\":{\"d\":{},\"pathLength\":{\"type\":\"<number>\"}}},\"svg:pattern\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\":model(SVGPaintServer)\",\":model(SVGShape)\",\":model(SVGStructural)\",\"svg|a\",\"svg|clipPath\",\"svg|filter\",\"svg|foreignObject\",\"svg|image\",\"svg|marker\",\"svg|mask\",\"svg|script\",\"svg|style\",\"svg|switch\",\"svg|text\",\"svg|view\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#GlobalEventAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\",\"#XLinkAttrs\"],\"attributes\":{\"height\":{},\"href\":{\"type\":\"URL\"},\"patternContentUnits\":{\"type\":{\"enum\":[\"userSpaceOnUse\",\"objectBoundingBox\"],\"disallowToSurroundBySpaces\":false}},\"patternTransform\":{\"type\":\"<transform-list>\"},\"patternUnits\":{\"type\":{\"enum\":[\"userSpaceOnUse\",\"objectBoundingBox\"],\"disallowToSurroundBySpaces\":false}},\"preserveAspectRatio\":{\"type\":\"<preserve-aspect-ratio>\"},\"viewBox\":{\"type\":\"<view-box>\"},\"width\":{},\"x\":{},\"xlink:href\":{\"deprecated\":true},\"y\":{}}},\"svg:polygon\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\":model(SVGPaintServer)\",\"svg|clipPath\",\"svg|marker\",\"svg|mask\",\"svg|script\",\"svg|style\"]}]},\"aria\":{\"implicitRole\":\"graphics-symbol\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"pathLength\":{\"type\":\"<number>\"},\"points\":{\"type\":\"<points>\"}}},\"svg:polyline\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\":model(SVGPaintServer)\",\"svg|clipPath\",\"svg|marker\",\"svg|mask\",\"svg|script\",\"svg|style\"]}]},\"aria\":{\"implicitRole\":\"graphics-symbol\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"pathLength\":{\"type\":\"<number>\"},\"points\":{\"type\":\"<points>\"}}},\"svg:radialGradient\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|animateTransform\",\"svg|script\",\"svg|set\",\"svg|stop\",\"svg|style\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#GlobalEventAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\",\"#XLinkAttrs\"],\"attributes\":{\"cx\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"cy\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"fr\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"fx\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"fy\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"gradientTransform\":{\"type\":\"<transform-list>\"},\"gradientUnits\":{\"type\":{\"enum\":[\"userSpaceOnUse\",\"objectBoundingBox\"],\"disallowToSurroundBySpaces\":false}},\"href\":{\"type\":\"URL\"},\"r\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"spreadMethod\":{\"type\":{\"enum\":[\"pad\",\"reflect\",\"repeat\"],\"disallowToSurroundBySpaces\":false}},\"xlink:href\":{\"deprecated\":true}}},\"svg:rect\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\":model(SVGPaintServer)\",\"svg|clipPath\",\"svg|marker\",\"svg|mask\",\"svg|script\",\"svg|style\"]}]},\"aria\":{\"implicitRole\":\"graphics-symbol\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"height\":{},\"pathLength\":{\"type\":\"<number>\"},\"rx\":{},\"ry\":{},\"width\":{},\"x\":{},\"y\":{}}},\"svg:script\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGNeverRendered)\",\":model(SVGStructurallyExternal)\",\"#text\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#GlobalEventAttrs\",\"#SVGCoreAttrs\",\"#XLinkAttrs\"],\"attributes\":{\"async\":{\"type\":\"Boolean\",\"experimental\":true},\"crossorigin\":{\"type\":{\"enum\":[\"anonymous\",\"use-credentials\",\"\"],\"disallowToSurroundBySpaces\":false}},\"defer\":{\"type\":\"Boolean\",\"experimental\":true},\"fetchpriority\":{\"nonStandard\":true,\"experimental\":true},\"href\":{\"type\":\"URL\"},\"type\":{\"type\":\"MIMEType\"},\"xlink:href\":{\"deprecated\":true}}},\"svg:set\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|script\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#GlobalEventAttrs\",\"#SVGAnimationAttributeTargetAttrs\",\"#SVGAnimationEventAttrs\",\"#SVGAnimationTargetElementAttrs\",\"#SVGAnimationTimingAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\"],\"attributes\":{\"to\":{\"type\":\"NoEmptyAny\"}}},\"svg:stop\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\"svg:animate\",\"svg|animateColor\",\"svg|script\",\"svg|set\",\"svg|style\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#GlobalEventAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"offset\":{\"type\":[\"<number>\",\"<percentage>\"]},\"stop-color\":{\"type\":\"<color>\"},\"stop-opacity\":{\"type\":\"<'opacity'>\"}}},\"svg:style\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":\"#text\"}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#GlobalEventAttrs\",\"#SVGCoreAttrs\"],\"attributes\":{\"media\":{\"type\":\"MediaQueryList\"},\"title\":{\"type\":\"Any\"},\"type\":{\"type\":\"MIMEType\"}}},\"svg:svg\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\":model(SVGPaintServer)\",\":model(SVGShape)\",\":model(SVGStructural)\",\"svg|a\",\"svg|clipPath\",\"svg|filter\",\"svg|foreignObject\",\"svg|image\",\"svg|marker\",\"svg|mask\",\"svg|script\",\"svg|style\",\"svg|switch\",\"svg|text\",\"svg|view\"]}]},\"aria\":{\"implicitRole\":\"graphics-document\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"baseProfile\":{\"type\":\"Any\",\"deprecated\":true},\"contentScriptType\":{\"type\":\"Any\",\"deprecated\":true},\"contentStyleType\":{\"type\":\"Any\",\"deprecated\":true},\"height\":{},\"onunload\":{\"type\":\"FunctionBody\"},\"preserveAspectRatio\":{\"type\":\"<preserve-aspect-ratio>\"},\"version\":{\"type\":\"Any\",\"deprecated\":true},\"viewBox\":{\"type\":\"<view-box>\"},\"width\":{},\"x\":{},\"y\":{}}},\"svg:switch\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGShape)\",\"svg|a\",\"svg|foreignObject\",\"svg|g\",\"svg|image\",\"svg|svg\",\"svg|switch\",\"svg|text\",\"svg|use\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"requiredExtensions\":{},\"systemLanguage\":{}}},\"svg:symbol\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\":model(SVGPaintServer)\",\":model(SVGShape)\",\":model(SVGStructural)\",\"svg|a\",\"svg|clipPath\",\"svg|filter\",\"svg|foreignObject\",\"svg|image\",\"svg|marker\",\"svg|mask\",\"svg|script\",\"svg|style\",\"svg|switch\",\"svg|text\",\"svg|view\"]}]},\"aria\":{\"implicitRole\":\"graphics-object\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"height\":{},\"preserveAspectRatio\":{\"type\":\"<preserve-aspect-ratio>\"},\"refX\":{\"type\":[\"<svg-length>\",\"<percentage>\",\"<number>\",{\"enum\":[\"left\",\"center\",\"right\"]}]},\"refY\":{\"type\":[\"<svg-length>\",\"<percentage>\",\"<number>\",{\"enum\":[\"top\",\"center\",\"bottom\"]}]},\"viewBox\":{\"type\":\"<view-box>\"},\"width\":{},\"x\":{},\"y\":{}}},\"svg:text\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\"#text\",\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\":model(SVGPaintServer)\",\":model(SVGTextContentChild)\",\"svg|a\",\"svg|clipPath\",\"svg|marker\",\"svg|mask\",\"svg|script\",\"svg|style\"]}]},\"aria\":{\"implicitRole\":\"group\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"dx\":{\"type\":\"<text-coordinate>\"},\"dy\":{\"type\":\"<text-coordinate>\"},\"lengthAdjust\":{\"type\":{\"enum\":[\"spacing\",\"spacingAndGlyphs\"],\"disallowToSurroundBySpaces\":false}},\"rotate\":{\"type\":\"<list-of-numbers>\"},\"textLength\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"x\":{\"type\":\"<text-coordinate>\"},\"y\":{\"type\":\"<text-coordinate>\"}}},\"svg:textPath\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\"#text\",\":model(SVGDescriptive)\",\":model(SVGPaintServer)\",\"svg|a\",\"svg|animate\",\"svg|clipPath\",\"svg|marker\",\"svg|mask\",\"svg|script\",\"svg|set\",\"svg|style\",\"svg|tspan\"]}]},\"aria\":{\"implicitRole\":\"group\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\",\"#XLinkAttrs\"],\"attributes\":{\"href\":{\"type\":\"URL\"},\"lengthAdjust\":{\"type\":{\"enum\":[\"spacing\",\"spacingAndGlyphs\"],\"disallowToSurroundBySpaces\":false}},\"method\":{\"type\":{\"enum\":[\"align\",\"stretch\"],\"disallowToSurroundBySpaces\":false}},\"path\":{\"type\":\"<svg-path>\",\"experimental\":true},\"side\":{\"type\":{\"enum\":[\"left\",\"right\"],\"disallowToSurroundBySpaces\":false},\"experimental\":true},\"spacing\":{\"type\":{\"enum\":[\"auto\",\"exact\"],\"disallowToSurroundBySpaces\":false}},\"startOffset\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"textLength\":{\"type\":[\"<svg-length>\",\"<percentage>\"]}}},\"svg:title\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\":model(SVGNeverRendered)\",\"#text\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#GlobalEventAttrs\",\"#SVGCoreAttrs\"],\"attributes\":{}},\"svg:tspan\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\"#text\",\":model(SVGDescriptive)\",\":model(SVGPaintServer)\",\"svg|a\",\"svg|animate\",\"svg|script\",\"svg|set\",\"svg|style\",\"svg|tspan\"]}]},\"aria\":{\"implicitRole\":\"group\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"dx\":{\"type\":\"<text-coordinate>\"},\"dy\":{\"type\":\"<text-coordinate>\"},\"lengthAdjust\":{\"type\":{\"enum\":[\"spacing\",\"spacingAndGlyphs\"],\"disallowToSurroundBySpaces\":false}},\"rotate\":{\"type\":\"<list-of-numbers>\"},\"textLength\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"x\":{\"type\":\"<text-coordinate>\"},\"y\":{\"type\":\"<text-coordinate>\"}}},\"svg:use\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\"svg|clipPath\",\"svg|mask\",\"svg|script\",\"svg|style\"]}]},\"aria\":{\"implicitRole\":\"graphics-object\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\",\"#XLinkAttrs\"],\"attributes\":{\"height\":{},\"href\":{\"type\":\"URL\"},\"width\":{},\"x\":{},\"xlink:href\":{\"deprecated\":true},\"y\":{}}},\"svg:view\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\"svg|script\",\"svg|style\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGCoreAttrs\"],\"attributes\":{\"preserveAspectRatio\":{\"type\":\"<preserve-aspect-ratio>\"},\"viewBox\":{\"type\":\"<view-box>\"},\"viewTarget\":{\"type\":\"Any\",\"deprecated\":true},\"zoomAndPan\":{\"type\":{\"enum\":[\"disable\",\"magnify\"]},\"deprecated\":true}}}},\"contentModels\":{\"#metadata\":[\"base\",\"link\",\"meta\",\"noscript\",\"script\",\"style\",\"template\",\"title\"],\"#flow\":[\"a\",\"abbr\",\"address\",\"area\",\"article\",\"aside\",\"audio\",\"b\",\"bdi\",\"bdo\",\"blockquote\",\"br\",\"button\",\"canvas\",\"cite\",\"code\",\"data\",\"datalist\",\"del\",\"details\",\"dfn\",\"dialog\",\"div\",\"dl\",\"em\",\"embed\",\"fieldset\",\"figure\",\"footer\",\"form\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"header\",\"hgroup\",\"hr\",\"i\",\"iframe\",\"img\",\"input\",\"ins\",\"kbd\",\"label\",\"link[itemprop]\",\"link[rel=dns-prefetch]\",\"link[rel=modulepreload]\",\"link[rel=pingback]\",\"link[rel=preconnect]\",\"link[rel=prefetch]\",\"link[rel=preload]\",\"link[rel=prerender]\",\"link[rel=stylesheet]\",\"main\",\"map\",\"mark\",\"math\",\"menu\",\"meta[itemprop]\",\"meter\",\"nav\",\"noscript\",\"object\",\"ol\",\"output\",\"p\",\"picture\",\"pre\",\"progress\",\"q\",\"ruby\",\"s\",\"samp\",\"script\",\"search\",\"section\",\"select\",\"slot\",\"small\",\"span\",\"strong\",\"sub\",\"sup\",\"svg|svg\",\"table\",\"template\",\"textarea\",\"time\",\"u\",\"ul\",\"var\",\"video\",\"wbr\",\"#custom\",\"#text\"],\"#sectioning\":[\"article\",\"aside\",\"nav\",\"section\"],\"#heading\":[\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"hgroup:has(h1,h2,h3,h4,h5,h6)\"],\"#phrasing\":[\"a\",\"abbr\",\"area\",\"audio\",\"b\",\"bdi\",\"bdo\",\"br\",\"button\",\"canvas\",\"cite\",\"code\",\"data\",\"datalist\",\"del\",\"dfn\",\"em\",\"embed\",\"i\",\"iframe\",\"img\",\"input\",\"ins\",\"kbd\",\"label\",\"link[itemprop]\",\"link[rel=dns-prefetch]\",\"link[rel=modulepreload]\",\"link[rel=pingback]\",\"link[rel=preconnect]\",\"link[rel=prefetch]\",\"link[rel=preload]\",\"link[rel=prerender]\",\"link[rel=stylesheet]\",\"map\",\"mark\",\"math\",\"meta[itemprop]\",\"meter\",\"noscript\",\"object\",\"output\",\"picture\",\"progress\",\"q\",\"ruby\",\"s\",\"samp\",\"script\",\"select\",\"slot\",\"small\",\"span\",\"strong\",\"sub\",\"sup\",\"svg|svg\",\"template\",\"textarea\",\"time\",\"u\",\"var\",\"video\",\"wbr\",\"#custom\",\"#text\"],\"#embedded\":[\"audio\",\"canvas\",\"embed\",\"iframe\",\"img\",\"math\",\"object\",\"picture\",\"svg|svg\",\"video\"],\"#interactive\":[\"a[href]\",\"audio[controls]\",\"button\",\"details\",\"embed\",\"iframe\",\"img[usemap]\",\"input:not([type='hidden' i])\",\"label\",\"select\",\"textarea\",\"video[controls]\"],\"#palpable\":[\"a\",\"abbr\",\"address\",\"article\",\"aside\",\"audio[controls]\",\"b\",\"bdi\",\"bdo\",\"blockquote\",\"button\",\"canvas\",\"cite\",\"code\",\"data\",\"del\",\"details\",\"dfn\",\"div\",\"dl:has(>:is(dt+dd))\",\"em\",\"embed\",\"fieldset\",\"figure\",\"footer\",\"form\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"header\",\"hgroup\",\"i\",\"iframe\",\"img\",\"input:not([type='hidden' i])\",\"ins\",\"kbd\",\"label\",\"main\",\"map\",\"mark\",\"math\",\"menu:has(>li)\",\"meter\",\"nav\",\"object\",\"ol:has(>li)\",\"output\",\"p\",\"picture\",\"pre\",\"progress\",\"q\",\"ruby\",\"s\",\"samp\",\"search\",\"section\",\"select\",\"small\",\"span\",\"strong\",\"sub\",\"sup \",\"svg\",\"table\",\"textarea\",\"time\",\"u\",\"ul:has(>li)\",\"var\",\"video\",\"#custom\",\"#text\"],\"#script-supporting\":[\"script\",\"template\"],\"#SVGAnimation\":[\"svg|animate\",\"svg|animateColor\",\"svg|animateMotion\",\"svg|animateTransform\",\"svg|discard\",\"svg|mpath\",\"svg|set\"],\"#SVGBasicShapes\":[\"svg|circle\",\"svg|ellipse\",\"svg|line\",\"svg|polygon\",\"svg|polyline\",\"svg|rect\"],\"#SVGContainer\":[\"svg|a\",\"svg|defs\",\"svg|g\",\"svg|marker\",\"svg|mask\",\"svg|missing-glyph\",\"svg|pattern\",\"svg|svg\",\"svg|switch\",\"svg|symbol\"],\"#SVGDescriptive\":[\"svg|desc\",\"svg|metadata\",\"svg|title\"],\"#SVGFilterPrimitive\":[\"svg|feBlend\",\"svg|feColorMatrix\",\"svg|feComponentTransfer\",\"svg|feComposite\",\"svg|feConvolveMatrix\",\"svg|feDiffuseLighting\",\"svg|feDisplacementMap\",\"svg|feDropShadow\",\"svg|feFlood\",\"svg|feFuncA\",\"svg|feFuncB\",\"svg|feFuncG\",\"svg|feFuncR\",\"svg|feGaussianBlur\",\"svg|feImage\",\"svg|feMerge\",\"svg|feMergeNode\",\"svg|feMorphology\",\"svg|feOffset\",\"svg|feSpecularLighting\",\"svg|feTile\",\"svg|feTurbulence\"],\"#SVGFont\":[\"svg|font\",\"svg|font-face\",\"svg|font-face-format\",\"svg|font-face-name\",\"svg|font-face-src\",\"svg|font-face-uri\",\"svg|hkern\",\"svg|vkern\"],\"#SVGGradient\":[\"svg|linearGradient\",\"svg|radialGradient\",\"svg|stop\"],\"#SVGGraphics\":[\"svg|circle\",\"svg|ellipse\",\"svg|image\",\"svg|line\",\"svg|path\",\"svg|polygon\",\"svg|polyline\",\"svg|rect\",\"svg|text\",\"svg|use\"],\"#SVGGraphicsReferencing\":[\"svg|use\"],\"#SVGLightSource\":[\"svg|feDistantLight\",\"svg|fePointLight\",\"svg|feSpotLight\"],\"#SVGNeverRendered\":[\"svg|clipPath\",\"svg|defs\",\"svg|linearGradient\",\"svg|marker\",\"svg|mask\",\"svg|metadata\",\"svg|pattern\",\"svg|radialGradient\",\"svg|script\",\"svg|style\",\"svg|symbol\",\"svg|title\"],\"#SVGPaintServer\":[\"svg|linearGradient\",\"svg|pattern\",\"svg|radialGradient\",\"svg|solidcolor\"],\"#SVGRenderable\":[\"svg|a\",\"svg|circle\",\"svg|ellipse\",\"svg|foreignObject\",\"svg|g\",\"svg|image\",\"svg|line\",\"svg|path\",\"svg|polygon\",\"svg|polyline\",\"svg|rect\",\"svg|svg\",\"svg|switch\",\"svg|symbol\",\"svg|text\",\"svg|textPath\",\"svg|tspan\",\"svg|unknown\",\"svg|use\"],\"#SVGShape\":[\"svg|circle\",\"svg|ellipse\",\"svg|line\",\"svg|path\",\"svg|polygon\",\"svg|polyline\",\"svg|rect\"],\"#SVGStructural\":[\"svg|defs\",\"svg|g\",\"svg|svg\",\"svg|symbol\",\"svg|use\"],\"#SVGStructurallyExternal\":[],\"#SVGTextContent\":[\"svg|altGlyph\",\"svg|altGlyphDef\",\"svg|altGlyphItem\",\"svg|glyph\",\"svg|glyphRef\",\"svg|textPath\",\"svg|text\",\"svg|tref\",\"svg|tspan\"],\"#SVGTextContentChild\":[\"svg|altGlyph\",\"svg|textPath\",\"svg|tref\",\"svg|tspan\"],\"#MathMLPresentation\":[\"mml|merror\",\"mml|mfrac\",\"mml|mi\",\"mml|mmultiscripts\",\"mml|mn\",\"mml|mo\",\"mml|mover\",\"mml|mpadded\",\"mml|mphantom\",\"mml|mroot\",\"mml|mrow\",\"mml|ms\",\"mml|mspace\",\"mml|msqrt\",\"mml|mstyle\",\"mml|msub\",\"mml|msup\",\"mml|msubsup\",\"mml|mtable\",\"mml|mtext\",\"mml|munder\",\"mml|munderover\",\"mml|maction\",\"mml|menclose\",\"mml|mfenced\"],\"#MathMLScript\":[\"mml|msub\",\"mml|msup\",\"mml|msubsup\",\"mml|mmultiscripts\"],\"#MathMLTabular\":[\"mml|mtable\",\"mml|mtr\",\"mml|mtd\"]},\"globalAttrs\":{\"#HTMLGlobalAttrs\":{\"accesskey\":{\"type\":{\"token\":\"OneCodePointChar\",\"ordered\":true,\"unique\":true,\"number\":\"zeroOrMore\",\"separator\":\"space\"}},\"autocapitalize\":{\"type\":{\"enum\":[\"off\",\"on\",\"none\",\"sentences\",\"words\",\"characters\"],\"disallowToSurroundBySpaces\":true,\"invalidValueDefault\":\"sentences\",\"missingValueDefault\":\"default\",\"sameStates\":{\"none\":[\"off\"],\"sentences\":[\"on\"]}}},\"autocorrect\":{\"type\":{\"enum\":[\"\",\"on\",\"off\"],\"disallowToSurroundBySpaces\":true,\"invalidValueDefault\":\"on\",\"missingValueDefault\":\"on\",\"sameStates\":{\"on\":[\"\"]}}},\"autofocus\":{\"type\":\"Boolean\"},\"contenteditable\":{\"type\":{\"enum\":[\"\",\"true\",\"false\",\"plaintext-only\"],\"disallowToSurroundBySpaces\":true,\"invalidValueDefault\":\"inherit\",\"missingValueDefault\":\"inherit\",\"sameStates\":{\"true\":[\"\"]}}},\"dir\":{\"type\":{\"enum\":[\"ltr\",\"rtl\",\"auto\"]}},\"draggable\":{\"type\":{\"enum\":[\"true\",\"false\"],\"invalidValueDefault\":\"auto\",\"missingValueDefault\":\"auto\"}},\"enterkeyhint\":{\"type\":{\"enum\":[\"enter\",\"done\",\"go\",\"next\",\"previous\",\"search\",\"send\"]}},\"focusgroup\":{\"type\":{\"token\":{\"enum\":[\"toolbar\",\"tablist\",\"radiogroup\",\"listbox\",\"menu\",\"menubar\",\"none\",\"inline\",\"block\",\"wrap\",\"nowrap\",\"nomemory\"]},\"separator\":\"space\",\"unique\":true,\"caseInsensitive\":true},\"experimental\":true},\"focusgroupstart\":{\"type\":\"Boolean\",\"experimental\":true},\"headingoffset\":{\"type\":{\"type\":\"integer\",\"gte\":0,\"lte\":8}},\"headingreset\":{\"type\":\"Boolean\"},\"hidden\":{\"type\":{\"enum\":[\"\",\"hidden\",\"until-found\"]}},\"inert\":{\"type\":\"Boolean\"},\"inputmode\":{\"type\":{\"enum\":[\"none\",\"text\",\"tel\",\"url\",\"email\",\"numeric\",\"decimal\",\"search\"]}},\"is\":{\"type\":\"CustomElementName\"},\"itemid\":{\"type\":\"URL\",\"condition\":\"[itemscope][itemtype]\"},\"itemprop\":{\"type\":{\"token\":\"ItemProp\",\"ordered\":false,\"unique\":true,\"separator\":\"space\"}},\"itemref\":{\"type\":{\"token\":\"DOMID\",\"unique\":true,\"separator\":\"space\"},\"condition\":\"[itemscope]\"},\"itemscope\":{\"type\":\"Boolean\"},\"itemtype\":{\"type\":{\"token\":\"AbsoluteURL\",\"ordered\":false,\"unique\":true,\"allowEmpty\":false,\"separator\":\"space\"},\"condition\":\"[itemscope]\"},\"lang\":{\"type\":\"BCP47\"},\"nonce\":{\"type\":\"Any\"},\"popover\":{\"type\":{\"enum\":[\"\",\"auto\",\"manual\",\"hint\"],\"disallowToSurroundBySpaces\":true,\"invalidValueDefault\":\"manual\",\"missingValueDefault\":\"no popover\",\"sameStates\":{\"auto\":[\"\"]}}},\"spellcheck\":{\"type\":{\"enum\":[\"\",\"true\",\"false\"],\"disallowToSurroundBySpaces\":true,\"invalidValueDefault\":\"default\",\"missingValueDefault\":\"default\",\"sameStates\":{\"true\":[\"\"]}}},\"style\":{\"type\":\"<css-declaration-list>\"},\"tabindex\":{\"type\":\"TabIndex\"},\"title\":{\"type\":\"Any\"},\"translate\":{\"type\":{\"enum\":[\"\",\"yes\",\"no\"],\"disallowToSurroundBySpaces\":true,\"invalidValueDefault\":\"inherit\",\"missingValueDefault\":\"inherit\",\"sameStates\":{\"yes\":[\"\"]}}},\"writingsuggestions\":{\"type\":{\"enum\":[\"\",\"true\",\"false\"],\"disallowToSurroundBySpaces\":true,\"invalidValueDefault\":\"default\",\"missingValueDefault\":\"default\",\"sameStates\":{\"true\":[\"\"]}}},\"class\":{\"type\":\"Any\"},\"id\":{\"type\":\"DOMID\"},\"slot\":{\"type\":\"NoEmptyAny\"},\"xmlns\":{\"type\":\"URL\",\"ineffective\":\"*\"},\"xml:lang\":{\"type\":\"BCP47\",\"deprecated\":true},\"xml:space\":{\"type\":{\"enum\":[\"default\",\"preserve\"]},\"deprecated\":true},\"elementtiming\":{\"type\":\"NoEmptyAny\",\"experimental\":true}},\"#GlobalEventAttrs\":{\"onabort\":{\"type\":\"FunctionBody\"},\"onauxclick\":{\"type\":\"FunctionBody\"},\"onbeforeinput\":{\"type\":\"FunctionBody\"},\"onbeforematch\":{\"type\":\"FunctionBody\"},\"onbeforetoggle\":{\"type\":\"FunctionBody\"},\"onblur\":{\"type\":\"FunctionBody\"},\"oncancel\":{\"type\":\"FunctionBody\"},\"oncanplay\":{\"type\":\"FunctionBody\"},\"oncanplaythrough\":{\"type\":\"FunctionBody\"},\"onchange\":{\"type\":\"FunctionBody\"},\"onclick\":{\"type\":\"FunctionBody\"},\"onclose\":{\"type\":\"FunctionBody\"},\"oncommand\":{\"type\":\"FunctionBody\"},\"oncontextlost\":{\"type\":\"FunctionBody\"},\"oncompositionstart\":{\"type\":\"FunctionBody\"},\"oncompositionupdate\":{\"type\":\"FunctionBody\"},\"oncompositionend\":{\"type\":\"FunctionBody\"},\"oncontextmenu\":{\"type\":\"FunctionBody\"},\"oncontextrestored\":{\"type\":\"FunctionBody\"},\"oncopy\":{\"type\":\"FunctionBody\"},\"oncuechange\":{\"type\":\"FunctionBody\"},\"oncut\":{\"type\":\"FunctionBody\"},\"ondblclick\":{\"type\":\"FunctionBody\"},\"ondrag\":{\"type\":\"FunctionBody\"},\"ondragend\":{\"type\":\"FunctionBody\"},\"ondragenter\":{\"type\":\"FunctionBody\"},\"ondragleave\":{\"type\":\"FunctionBody\"},\"ondragover\":{\"type\":\"FunctionBody\"},\"ondragstart\":{\"type\":\"FunctionBody\"},\"ondrop\":{\"type\":\"FunctionBody\"},\"ondurationchange\":{\"type\":\"FunctionBody\"},\"onemptied\":{\"type\":\"FunctionBody\"},\"onended\":{\"type\":\"FunctionBody\"},\"onerror\":{\"type\":\"FunctionBody\"},\"onfocus\":{\"type\":\"FunctionBody\"},\"onformdata\":{\"type\":\"FunctionBody\"},\"onfocusin\":{\"type\":\"FunctionBody\"},\"onfocusout\":{\"type\":\"FunctionBody\"},\"oninput\":{\"type\":\"FunctionBody\"},\"oninvalid\":{\"type\":\"FunctionBody\"},\"onkeydown\":{\"type\":\"FunctionBody\"},\"onkeypress\":{\"type\":\"FunctionBody\"},\"onkeyup\":{\"type\":\"FunctionBody\"},\"onload\":{\"type\":\"FunctionBody\"},\"onloadeddata\":{\"type\":\"FunctionBody\"},\"onloadedmetadata\":{\"type\":\"FunctionBody\"},\"onloadstart\":{\"type\":\"FunctionBody\"},\"onmousedown\":{\"type\":\"FunctionBody\"},\"onmouseenter\":{\"type\":\"FunctionBody\"},\"onmouseleave\":{\"type\":\"FunctionBody\"},\"onmousemove\":{\"type\":\"FunctionBody\"},\"onmouseout\":{\"type\":\"FunctionBody\"},\"onmouseover\":{\"type\":\"FunctionBody\"},\"onmouseup\":{\"type\":\"FunctionBody\"},\"onpaste\":{\"type\":\"FunctionBody\"},\"onpause\":{\"type\":\"FunctionBody\"},\"onplay\":{\"type\":\"FunctionBody\"},\"onplaying\":{\"type\":\"FunctionBody\"},\"onprogress\":{\"type\":\"FunctionBody\"},\"onratechange\":{\"type\":\"FunctionBody\"},\"onreset\":{\"type\":\"FunctionBody\"},\"onresize\":{\"type\":\"FunctionBody\"},\"onscroll\":{\"type\":\"FunctionBody\"},\"onscrollend\":{\"type\":\"FunctionBody\"},\"onsecuritypolicyviolation\":{\"type\":\"FunctionBody\"},\"onseeked\":{\"type\":\"FunctionBody\"},\"onseeking\":{\"type\":\"FunctionBody\"},\"onselect\":{\"type\":\"FunctionBody\"},\"onslotchange\":{\"type\":\"FunctionBody\"},\"onstalled\":{\"type\":\"FunctionBody\"},\"onsubmit\":{\"type\":\"FunctionBody\"},\"onsuspend\":{\"type\":\"FunctionBody\"},\"ontimeupdate\":{\"type\":\"FunctionBody\"},\"ontoggle\":{\"type\":\"FunctionBody\"},\"onvolumechange\":{\"type\":\"FunctionBody\"},\"onwaiting\":{\"type\":\"FunctionBody\"},\"onunload\":{\"type\":\"FunctionBody\"},\"onwheel\":{\"type\":\"FunctionBody\"},\"onanimationstart\":{\"type\":\"FunctionBody\"},\"onanimationiteration\":{\"type\":\"FunctionBody\"},\"onanimationend\":{\"type\":\"FunctionBody\"},\"onanimationcancel\":{\"type\":\"FunctionBody\"},\"ontransitionrun\":{\"type\":\"FunctionBody\"},\"ontransitionstart\":{\"type\":\"FunctionBody\"},\"ontransitionend\":{\"type\":\"FunctionBody\"},\"ontransitioncancel\":{\"type\":\"FunctionBody\"},\"onwebkitanimationend\":{\"type\":\"FunctionBody\",\"deprecated\":true},\"onwebkitanimationiteration\":{\"type\":\"FunctionBody\",\"deprecated\":true},\"onwebkitanimationstart\":{\"type\":\"FunctionBody\",\"deprecated\":true},\"onwebkittransitionend\":{\"type\":\"FunctionBody\",\"deprecated\":true},\"ontouchstart\":{\"type\":\"FunctionBody\"},\"ontouchend\":{\"type\":\"FunctionBody\"},\"ontouchmove\":{\"type\":\"FunctionBody\"},\"ontouchcancel\":{\"type\":\"FunctionBody\"}},\"#HTMLLinkAndFetchingAttrs\":{\"href\":{\"type\":\"URL\"},\"target\":{\"type\":\"NavigableTargetNameOrKeyword\",\"condition\":\"[href]\"},\"download\":{\"type\":\"Any\",\"condition\":\"[href]\"},\"ping\":{\"type\":{\"token\":\"HTTPSchemaURL\",\"separator\":\"space\"},\"condition\":\"[href]\"},\"rel\":{\"type\":\"LinkTypeForAnchorAndAreaElement\",\"condition\":\"[href]\"},\"hreflang\":{\"type\":\"BCP47\",\"condition\":\"[href]\"},\"type\":{\"type\":\"MIMEType\",\"condition\":\"[href]\"},\"referrerpolicy\":{\"type\":{\"enum\":[\"\",\"no-referrer\",\"no-referrer-when-downgrade\",\"same-origin\",\"origin\",\"strict-origin\",\"origin-when-cross-origin\",\"strict-origin-when-cross-origin\",\"unsafe-url\"]},\"condition\":\"[href], [src]\"},\"loading\":{\"type\":{\"enum\":[\"lazy\",\"eager\"],\"invalidValueDefault\":\"eager\",\"missingValueDefault\":\"eager\"}},\"integrity\":{\"type\":\"SRIHash\"},\"media\":{\"type\":\"MediaQueryList\"},\"crossorigin\":{\"type\":{\"enum\":[\"\",\"anonymous\",\"use-credentials\"],\"invalidValueDefault\":\"anonymous\",\"missingValueDefault\":\"No CORS\",\"sameStates\":{\"anonymous\":[\"\"]}}},\"fetchpriority\":{\"type\":{\"enum\":[\"high\",\"low\",\"auto\"],\"invalidValueDefault\":\"auto\",\"missingValueDefault\":\"auto\"}}},\"#HTMLEmbededAndMediaContentAttrs\":{\"src\":{\"type\":\"NonEmptyURL\"},\"preload\":{\"type\":{\"enum\":[\"none\",\"metadata\",\"auto\"],\"invalidValueDefault\":\"implementation-defined\",\"missingValueDefault\":\"implementation-defined\"}},\"autoplay\":{\"type\":\"Boolean\"},\"loop\":{\"type\":\"Boolean\"},\"muted\":{\"type\":\"Boolean\"},\"controls\":{\"type\":\"Boolean\"},\"height\":{\"type\":\"Uint\"},\"srcset\":{\"type\":\"Srcset\"},\"sizes\":{\"type\":\"SourceSizeList\"},\"width\":{\"type\":\"Uint\"}},\"#HTMLFormControlElementAttrs\":{\"autocomplete\":{\"type\":\"AutoComplete\"},\"dirname\":{\"type\":\"NoEmptyAny\"},\"disabled\":{\"type\":\"Boolean\"},\"form\":{\"type\":\"DOMID\"},\"formaction\":{\"type\":\"NonEmptyURL\"},\"formenctype\":{\"type\":{\"enum\":[\"application/x-www-form-urlencoded\",\"multipart/form-data\",\"text/plain\"],\"invalidValueDefault\":\"application/x-www-form-urlencoded\"}},\"formmethod\":{\"type\":{\"enum\":[\"post\",\"get\",\"dialog\"],\"invalidValueDefault\":\"get\"}},\"formnovalidate\":{\"type\":\"Boolean\"},\"formtarget\":{\"type\":\"NavigableTargetNameOrKeyword\"},\"name\":{\"type\":\"NoEmptyAny\"},\"maxlength\":{\"type\":\"Uint\"},\"minlength\":{\"type\":\"Uint\"},\"readonly\":{\"type\":\"Boolean\"},\"required\":{\"type\":\"Boolean\"}},\"#HTMLTableCellElementAttrs\":{\"colspan\":{\"type\":{\"type\":\"integer\",\"gt\":0,\"lte\":1000}},\"rowspan\":{\"type\":{\"type\":\"integer\",\"gt\":0,\"lte\":65534}},\"headers\":{\"type\":{\"token\":\"DOMID\",\"ordered\":false,\"unique\":true,\"separator\":\"space\"}}},\"#ARIAAttrs\":{\"role\":{\"type\":{\"token\":\"NoEmptyAny\",\"separator\":\"space\"}}},\"#SVGAnimationAdditionAttrs\":{\"additive\":{\"type\":{\"enum\":[\"replace\",\"sum\"]}},\"accumulate\":{\"type\":{\"enum\":[\"none\",\"sum\"]}}},\"#SVGAnimationAttributeTargetAttrs\":{\"attributeName\":{\"type\":\"XMLName\"},\"attributeType\":{\"type\":{\"enum\":[\"CSS\",\"XML\",\"auto\"]},\"noUse\":true}},\"#SVGAnimationEventAttrs\":{\"onbegin\":{\"type\":\"FunctionBody\"},\"onend\":{\"type\":\"FunctionBody\"},\"onrepeat\":{\"type\":\"FunctionBody\"}},\"#SVGAnimationTargetElementAttrs\":{\"href\":{\"type\":\"URL\"},\"xlink:href\":{\"type\":\"URL\",\"deprecated\":true}},\"#SVGAnimationTimingAttrs\":{\"begin\":{\"type\":\"<begin-value-list>\"},\"dur\":{\"type\":[\"<clock-value>\",{\"enum\":[\"media\",\"indefinite\"]}]},\"end\":{\"type\":\"<end-value-list>\"},\"min\":{\"type\":\"<clock-value>\"},\"max\":{\"type\":\"<clock-value>\"},\"restart\":{\"type\":{\"enum\":[\"always\",\"whenNotActive\",\"never\"]}},\"repeatCount\":{\"type\":[\"<number>\",{\"enum\":[\"indefinite\"]}]},\"repeatDur\":{\"type\":[\"<clock-value>\",{\"enum\":[\"indefinite\"]}]},\"fill\":{\"type\":{\"enum\":[\"freeze\",\"remove\"]}}},\"#SVGAnimationValueAttrs\":{\"calcMode\":{\"type\":{\"enum\":[\"discrete\",\"linear\",\"paced\",\"spline\"]}},\"values\":{\"type\":\"<list-of-value>\"},\"keyTimes\":{\"type\":\"<key-times>\"},\"keySplines\":{\"type\":\"<key-splines>\"},\"from\":{\"type\":\"<animatable-value>\"},\"to\":{\"type\":\"<animatable-value>\"},\"by\":{\"type\":\"<animatable-value>\"},\"accelerate\":{\"type\":\"<number-zero-one>\"},\"decelerate\":{\"type\":\"<number-zero-one>\"},\"autoReverse\":{\"type\":{\"enum\":[\"true\",\"false\"]}},\"speed\":{\"type\":\"<number>\"}},\"#SVGConditionalProcessingAttrs\":{\"requiredExtensions\":{\"type\":{\"token\":\"URL\",\"unique\":true,\"separator\":\"space\"}},\"systemLanguage\":{\"type\":{\"token\":\"BCP47\",\"unique\":true,\"separator\":\"comma\"}},\"requiredFeatures\":{\"type\":\"<list-of-svg-feature-string>\",\"deprecated\":true}},\"#SVGCoreAttrs\":{\"id\":{\"type\":\"DOMID\"},\"tabindex\":{\"type\":\"TabIndex\"},\"autofocus\":{\"type\":\"Boolean\"},\"lang\":{\"type\":\"BCP47\"},\"class\":{\"type\":\"Any\"},\"style\":{\"type\":\"<css-declaration-list>\"},\"xmlns\":{\"type\":\"URL\",\"ineffective\":\":not(:root)\"},\"xml:space\":{\"type\":{\"enum\":[\"default\",\"preserve\"]},\"deprecated\":true},\"xml:lang\":{\"type\":\"BCP47\",\"deprecated\":true},\"xml:base\":{\"type\":\"URL\",\"deprecated\":true}},\"#SVGFilterPrimitiveAttrs\":{\"x\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"y\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"width\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"height\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"result\":{\"type\":\"<custom-ident>\"},\"in\":{\"type\":[{\"enum\":[\"SourceGraphic\",\"SourceAlpha\",\"BackgroundImage\",\"BackgroundAlpha\",\"FillPaint\",\"StrokePaint\"],\"disallowToSurroundBySpaces\":false},\"<custom-ident>\"]}},\"#SVGPresentationAttrs\":{\"cx\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"cy\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"height\":{\"type\":[\"<svg-length>\",\"<'height'>\"]},\"width\":{\"type\":[\"<svg-length>\",\"<'width'>\"]},\"x\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"y\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"r\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"rx\":{\"type\":[\"<svg-length>\",\"<percentage>\",{\"enum\":[\"auto\"]}]},\"ry\":{\"type\":[\"<svg-length>\",\"<percentage>\",{\"enum\":[\"auto\"]}]},\"d\":{\"type\":\"<svg-path>\"},\"transform\":{\"type\":\"<'transform'>\"},\"transform-origin\":{\"type\":\"<'transform-origin'>\"},\"patternTransform\":{\"type\":\"<transform-list>\"},\"gradientTransform\":{\"type\":\"<transform-list>\"},\"alignment-baseline\":{\"type\":\"<'alignment-baseline'>\"},\"baseline-shift\":{\"type\":\"<'baseline-shift'>\"},\"clip-path\":{\"type\":\"<'clip-path'>\"},\"clip-rule\":{\"type\":\"<'clip-rule'>\"},\"color\":{\"type\":\"<color>\"},\"color-interpolation\":{\"type\":{\"enum\":[\"auto\",\"sRGB\",\"linearRGB\"],\"disallowToSurroundBySpaces\":false}},\"color-interpolation-filters\":{\"type\":{\"enum\":[\"auto\",\"sRGB\",\"linearRGB\"],\"disallowToSurroundBySpaces\":false}},\"cursor\":{\"type\":\"<'cursor'>\"},\"direction\":{\"type\":\"<'direction'>\"},\"display\":{\"type\":\"<'display'>\"},\"dominant-baseline\":{\"type\":\"<'dominant-baseline'>\"},\"fill\":{\"type\":\"<'fill'>\"},\"fill-opacity\":{\"type\":\"<'fill-opacity'>\"},\"fill-rule\":{\"type\":\"<'fill-rule'>\"},\"filter\":{\"type\":\"<'filter'>\"},\"flood-color\":{\"type\":\"<color>\"},\"flood-opacity\":{\"type\":\"<alpha-value>\"},\"font\":{\"type\":\"<'font'>\"},\"font-family\":{\"type\":\"<'font-family'>\"},\"font-size\":{\"type\":\"<svg-font-size>\"},\"font-size-adjust\":{\"type\":\"<svg-font-size-adjust>\"},\"font-stretch\":{\"type\":\"<'font-stretch'>\"},\"font-style\":{\"type\":\"<'font-style'>\"},\"font-variant\":{\"type\":\"<'font-variant'>\"},\"font-weight\":{\"type\":\"<'font-weight'>\"},\"glyph-orientation-horizontal\":{\"type\":\"<'glyph-orientation-horizontal'>\",\"deprecated\":true},\"glyph-orientation-vertical\":{\"type\":\"<'glyph-orientation-vertical'>\",\"deprecated\":true},\"image-rendering\":{\"type\":\"<'image-rendering'>\"},\"isolation\":{\"type\":\"<'isolation'>\"},\"letter-spacing\":{\"type\":\"<'letter-spacing'>\"},\"lighting-color\":{\"type\":\"<color>\"},\"marker\":{\"type\":\"<'marker'>\"},\"marker-end\":{\"type\":\"<'marker-end'>\"},\"marker-mid\":{\"type\":\"<'marker-mid'>\"},\"marker-start\":{\"type\":\"<'marker-start'>\"},\"mask\":{\"type\":\"<'mask'>\"},\"mask-type\":{\"type\":\"<'mask-type'>\"},\"opacity\":{\"type\":\"<alpha-value>\"},\"overflow\":{\"type\":\"<'overflow'>\"},\"paint-order\":{\"type\":\"<'paint-order'>\"},\"pointer-events\":{\"type\":\"<'pointer-events'>\"},\"shape-rendering\":{\"type\":\"<'shape-rendering'>\"},\"stop-color\":{\"type\":\"<'color'>\"},\"stop-opacity\":{\"type\":\"<'opacity'>\"},\"stroke\":{\"type\":\"<'stroke'>\"},\"stroke-dasharray\":{\"type\":\"<'stroke-dasharray'>\"},\"stroke-dashoffset\":{\"type\":\"<'stroke-dashoffset'>\"},\"stroke-linecap\":{\"type\":\"<'stroke-linecap'>\"},\"stroke-linejoin\":{\"type\":\"<'stroke-linejoin'>\"},\"stroke-miterlimit\":{\"type\":\"<'stroke-miterlimit'>\"},\"stroke-opacity\":{\"type\":\"<'stroke-opacity'>\"},\"stroke-width\":{\"type\":\"<'stroke-width'>\"},\"text-anchor\":{\"type\":\"<'text-anchor'>\"},\"text-decoration\":{\"type\":\"<'text-decoration'>\"},\"text-overflow\":{\"type\":\"<'text-overflow'>\"},\"text-rendering\":{\"type\":\"<'text-rendering'>\"},\"unicode-bidi\":{\"type\":\"<'unicode-bidi'>\"},\"vector-effect\":{\"type\":{\"enum\":[\"none\",\"non-scaling-stroke\",\"non-scaling-size\",\"non-rotation\",\"fixed-position\"]}},\"visibility\":{\"type\":\"<'visibility'>\"},\"white-space\":{\"type\":\"<'white-space'>\"},\"word-spacing\":{\"type\":\"<'word-spacing'>\"},\"writing-mode\":{\"type\":\"<'writing-mode'>\"},\"clip\":{\"type\":\"<'clip'>\",\"deprecated\":true},\"color-profile\":{\"type\":\"<'color-profile'>\",\"deprecated\":true},\"color-rendering\":{\"type\":\"<'color-rendering'>\",\"deprecated\":true},\"enable-background\":{\"type\":\"<'enable-background'>\",\"deprecated\":true},\"kerning\":{\"type\":\"<'kerning'>\",\"deprecated\":true}},\"#SVGTransferFunctionAttrs\":{\"type\":{\"type\":{\"enum\":[\"identity\",\"table\",\"discrete\",\"linear\",\"gamma\"]}},\"tableValues\":{\"type\":\"<list-of-numbers>\"},\"slope\":{\"type\":\"<number>\"},\"intercept\":{\"type\":\"<number>\"},\"amplitude\":{\"type\":\"<number>\"},\"exponent\":{\"type\":\"<number>\"},\"offset\":{\"type\":\"<number>\"}},\"#MathMLGlobalAttrs\":{\"autofocus\":{\"type\":\"Boolean\"},\"class\":{\"type\":\"Any\"},\"data-*\":{\"type\":\"Any\"},\"dir\":{\"type\":{\"enum\":[\"ltr\",\"rtl\"]}},\"displaystyle\":{\"type\":{\"enum\":[\"true\",\"false\"]}},\"id\":{\"type\":\"DOMID\"},\"mathbackground\":{\"type\":\"<color>\",\"deprecated\":true},\"mathcolor\":{\"type\":\"<color>\",\"deprecated\":true},\"mathsize\":{\"type\":\"<length-percentage>\",\"deprecated\":true},\"nonce\":{\"type\":\"Any\"},\"scriptlevel\":{\"type\":\"Any\"},\"style\":{\"type\":\"<css-declaration-list>\"},\"tabindex\":{\"type\":\"TabIndex\"}},\"#XLinkAttrs\":{\"xlink:href\":{\"type\":\"URL\",\"deprecated\":true},\"xlink:title\":{\"type\":\"Any\",\"deprecated\":true},\"xlink:type\":{\"type\":{\"enum\":[\"simple\"]},\"deprecated\":true},\"xlink:role\":{\"type\":\"Any\",\"deprecated\":true},\"xlink:arcrole\":{\"type\":\"URL\",\"deprecated\":true},\"xlink:show\":{\"type\":{\"enum\":[\"new\",\"replace\",\"embed\",\"other\",\"none\"]},\"deprecated\":true},\"xlink:actuate\":{\"type\":\"Any\",\"deprecated\":true}}},\"aria\":{\"roles\":{\"alert\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"alertdialog\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-modal\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"application\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\"},{\"name\":\"aria-expanded\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\"},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\"},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"article\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-posinset\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-setsize\"}],\"prohibitedProperties\":[]},\"banner\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"blockquote\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"button\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-expanded\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\"},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-pressed\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"caption\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-label\",\"aria-labelledby\"]},\"cell\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-colindex\"},{\"name\":\"aria-colindextext\"},{\"name\":\"aria-colspan\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-rowindex\"},{\"name\":\"aria-rowindextext\"},{\"name\":\"aria-rowspan\"}],\"prohibitedProperties\":[]},\"checkbox\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-checked\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\"},{\"name\":\"aria-expanded\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\"},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-readonly\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-required\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"code\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-label\",\"aria-labelledby\"]},\"columnheader\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-colindex\"},{\"name\":\"aria-colindextext\"},{\"name\":\"aria-colspan\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\"},{\"name\":\"aria-expanded\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\"},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\"},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-readonly\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-required\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-rowindex\"},{\"name\":\"aria-rowindextext\"},{\"name\":\"aria-rowspan\"},{\"name\":\"aria-selected\"},{\"name\":\"aria-sort\"}],\"prohibitedProperties\":[]},\"combobox\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-autocomplete\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\"},{\"name\":\"aria-expanded\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\"},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\"},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-readonly\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-required\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"command\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"comment\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-level\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-posinset\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-setsize\"}],\"prohibitedProperties\":[]},\"complementary\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"composite\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"contentinfo\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"definition\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-label\",\"aria-labelledby\"]},\"deletion\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-label\",\"aria-labelledby\"]},\"dialog\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-modal\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"directory\":{\"deprecated\":true,\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"document\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"emphasis\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-label\",\"aria-labelledby\"]},\"feed\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"figure\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"form\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"generic\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-brailleroledescription\",\"aria-label\",\"aria-labelledby\",\"aria-roledescription\"]},\"grid\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-colcount\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-multiselectable\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-readonly\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-rowcount\"}],\"prohibitedProperties\":[]},\"gridcell\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-colindex\"},{\"name\":\"aria-colindextext\"},{\"name\":\"aria-colspan\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\"},{\"name\":\"aria-expanded\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\"},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\"},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-readonly\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-required\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-rowindex\"},{\"name\":\"aria-rowindextext\"},{\"name\":\"aria-rowspan\"},{\"name\":\"aria-selected\"}],\"prohibitedProperties\":[]},\"group\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"heading\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-level\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"image\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"img\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"input\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"insertion\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-label\",\"aria-labelledby\"]},\"landmark\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"link\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-expanded\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\"},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"list\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"listbox\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\"},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-multiselectable\"},{\"name\":\"aria-orientation\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-readonly\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-required\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"listitem\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-posinset\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-setsize\"}],\"prohibitedProperties\":[]},\"log\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"main\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"mark\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-label\",\"aria-labelledby\"]},\"marquee\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"math\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"menu\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-orientation\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"menubar\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-orientation\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"menuitem\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-expanded\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\"},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-posinset\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-setsize\"}],\"prohibitedProperties\":[]},\"menuitemcheckbox\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-checked\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-expanded\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\"},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-posinset\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-setsize\"}],\"prohibitedProperties\":[]},\"menuitemradio\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-checked\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-expanded\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\"},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-posinset\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-setsize\"}],\"prohibitedProperties\":[]},\"meter\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-valuemax\"},{\"name\":\"aria-valuemin\"},{\"name\":\"aria-valuenow\"},{\"name\":\"aria-valuetext\"}],\"prohibitedProperties\":[]},\"navigation\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"none\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-label\",\"aria-labelledby\"]},\"note\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"option\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-checked\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-posinset\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-selected\"},{\"name\":\"aria-setsize\"}],\"prohibitedProperties\":[]},\"paragraph\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-label\",\"aria-labelledby\"]},\"presentation\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-label\",\"aria-labelledby\"]},\"progressbar\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-valuemax\"},{\"name\":\"aria-valuemin\"},{\"name\":\"aria-valuenow\"},{\"name\":\"aria-valuetext\"}],\"prohibitedProperties\":[]},\"radio\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-checked\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-posinset\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-setsize\"}],\"prohibitedProperties\":[]},\"radiogroup\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\"},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-orientation\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-readonly\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-required\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"range\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-valuemax\"},{\"name\":\"aria-valuemin\"},{\"name\":\"aria-valuenow\"},{\"name\":\"aria-valuetext\"}],\"prohibitedProperties\":[]},\"region\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"roletype\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"row\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-colindex\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-expanded\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-level\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-posinset\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-rowindex\"},{\"name\":\"aria-rowindextext\"},{\"name\":\"aria-selected\"},{\"name\":\"aria-setsize\"}],\"prohibitedProperties\":[]},\"rowgroup\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"rowheader\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-colindex\"},{\"name\":\"aria-colindextext\"},{\"name\":\"aria-colspan\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\"},{\"name\":\"aria-expanded\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\"},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\"},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-readonly\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-required\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-rowindex\"},{\"name\":\"aria-rowindextext\"},{\"name\":\"aria-rowspan\"},{\"name\":\"aria-selected\"},{\"name\":\"aria-sort\"}],\"prohibitedProperties\":[]},\"scrollbar\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-orientation\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-valuemax\"},{\"name\":\"aria-valuemin\"},{\"name\":\"aria-valuenow\"},{\"name\":\"aria-valuetext\"}],\"prohibitedProperties\":[]},\"search\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"searchbox\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-autocomplete\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\"},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\"},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-multiline\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-placeholder\"},{\"name\":\"aria-readonly\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-required\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"section\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"sectionfooter\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"sectionhead\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"sectionheader\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"select\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-orientation\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"separator\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-orientation\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-valuemax\"},{\"name\":\"aria-valuemin\"},{\"name\":\"aria-valuenow\"},{\"name\":\"aria-valuetext\"}],\"prohibitedProperties\":[]},\"slider\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\"},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\"},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-orientation\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-readonly\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-valuemax\"},{\"name\":\"aria-valuemin\"},{\"name\":\"aria-valuenow\"},{\"name\":\"aria-valuetext\"}],\"prohibitedProperties\":[]},\"spinbutton\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\"},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-readonly\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-required\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-valuemax\"},{\"name\":\"aria-valuemin\"},{\"name\":\"aria-valuenow\"},{\"name\":\"aria-valuetext\"}],\"prohibitedProperties\":[]},\"status\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"strong\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-label\",\"aria-labelledby\"]},\"structure\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"subscript\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-label\",\"aria-labelledby\"]},\"suggestion\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-label\",\"aria-labelledby\"]},\"superscript\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-label\",\"aria-labelledby\"]},\"switch\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-checked\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\"},{\"name\":\"aria-expanded\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\"},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-readonly\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-required\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"tab\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-expanded\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\"},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-posinset\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-selected\"},{\"name\":\"aria-setsize\"}],\"prohibitedProperties\":[]},\"table\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-colcount\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-rowcount\"}],\"prohibitedProperties\":[]},\"tablist\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-multiselectable\"},{\"name\":\"aria-orientation\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"tabpanel\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"term\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-label\",\"aria-labelledby\"]},\"textbox\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-autocomplete\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\"},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\"},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-multiline\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-placeholder\"},{\"name\":\"aria-readonly\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-required\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"time\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-label\",\"aria-labelledby\"]},\"timer\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"toolbar\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-orientation\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"tooltip\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-label\",\"aria-labelledby\"]},\"tree\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\"},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-multiselectable\"},{\"name\":\"aria-orientation\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-required\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"treegrid\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-colcount\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\"},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-multiselectable\"},{\"name\":\"aria-orientation\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-readonly\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-required\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-rowcount\"}],\"prohibitedProperties\":[]},\"treeitem\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-checked\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-expanded\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\"},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-level\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-posinset\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-selected\"},{\"name\":\"aria-setsize\"}],\"prohibitedProperties\":[]},\"widget\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"window\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-modal\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"graphics-document\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"graphics-object\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"graphics-symbol\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]}},\"deprecatedProps\":[\"aria-dropeffect\",\"aria-grabbed\"]}}");
|
|
7116
|
-
|
|
7117
|
-
//#region src/html-spec/index.ts
|
|
7712
|
+
const HTML_SPEC = JSON.parse("{\"elements\":{\"a\":{\"categories\":[\"#flow\",\"#phrasing\",\"#interactive\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"transparent\":\":not(:model(interactive), a, [tabindex], :has(:model(interactive), a, [tabindex]))\"}]},\"aria\":{\"implicitRole\":\"link\",\"permittedRoles\":[\"button\",\"checkbox\",\"menuitem\",\"menuitemcheckbox\",\"menuitemradio\",\"option\",\"radio\",\"switch\",\"tab\",\"treeitem\"],\"conditions\":{\":not([href])\":{\"implicitRole\":\"generic\",\"namingProhibited\":true}}},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#HTMLLinkAndFetchingAttrs\"],\"attributes\":{\"attributionsrc\":{\"deprecated\":true,\"nonStandard\":true},\"charset\":{\"deprecated\":true},\"coords\":{\"deprecated\":true},\"download\":{},\"href\":{},\"hreflang\":{},\"interestfor\":{\"type\":\"DOMID\",\"nonStandard\":true,\"experimental\":true},\"name\":{\"deprecated\":true},\"ping\":{},\"referrerpolicy\":{},\"rel\":{},\"rev\":{\"deprecated\":true},\"shape\":{\"deprecated\":true},\"target\":{},\"type\":{}}},\"abbr\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"acronym\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"address\":{\"categories\":[\"#flow\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow):not(address, :model(heading), :model(sectioning), header, foooter, :has(address, :model(heading), :model(sectioning), header, foooter))\"}],\"forbiddenAncestors\":[\"address\"]},\"aria\":{\"implicitRole\":\"group\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"applet\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"area\":{\"categories\":[\"#flow\",\"#phrasing\"],\"contentModel\":{\"contents\":false,\"descendantOf\":\"map\"},\"aria\":{\"implicitRole\":\"link\",\"permittedRoles\":[],\"conditions\":{\":not([href])\":{\"implicitRole\":\"generic\",\"namingProhibited\":true}}},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#HTMLLinkAndFetchingAttrs\"],\"attributes\":{\"alt\":{\"type\":\"Any\",\"required\":true,\"condition\":\"[href]\"},\"coords\":{\"type\":{\"token\":\"Number\",\"disallowToSurroundBySpaces\":true,\"separator\":\"comma\"}},\"download\":{},\"href\":{},\"interestfor\":{\"type\":\"DOMID\",\"nonStandard\":true,\"experimental\":true},\"ping\":{},\"referrerpolicy\":{},\"rel\":{},\"shape\":{\"type\":{\"enum\":[\"rect\",\"circle\",\"poly\",\"default\"],\"missingValueDefault\":\"rect\",\"invalidValueDefault\":\"rect\"}},\"target\":{}}},\"article\":{\"categories\":[\"#flow\",\"#sectioning\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow)\"}]},\"aria\":{\"implicitRole\":\"article\",\"permittedRoles\":[\"application\",\"document\",\"feed\",\"main\",\"none\",\"presentation\",\"region\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"aside\":{\"categories\":[\"#flow\",\"#sectioning\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow)\"}]},\"aria\":{\"implicitRole\":\"complementary\",\"permittedRoles\":[\"feed\",\"none\",\"note\",\"presentation\",\"region\",\"search\"],\"conditions\":{\":is(article, aside, nav, section, blockquote, details, dialog, fieldset, figure, td) *\":{\"implicitRole\":\"generic\",\"namingProhibited\":true},\":is(article, aside, nav, section, blockquote, details, dialog, fieldset, figure, td) *:aria(has name)\":{\"implicitRole\":\"complementary\"}}},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"audio\":{\"categories\":[\"#flow\",\"#phrasing\",\"#embedded\",\"#interactive\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"zeroOrMore\":\"source\"},{\"zeroOrMore\":\"track\"},{\"transparent\":\":not(audio, video, :has(audio, video))\"}],\"conditional\":[{\"condition\":\"[src]\",\"contents\":[{\"zeroOrMore\":\"track\"},{\"transparent\":\":not(audio, video, :has(audio, video))\"}]}]},\"aria\":{\"permittedRoles\":[\"application\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLEmbededAndMediaContentAttrs\",\"#HTMLGlobalAttrs\",\"#HTMLLinkAndFetchingAttrs\"],\"attributes\":{\"autoplay\":{},\"controls\":{},\"controlslist\":{},\"crossorigin\":{},\"disableremoteplayback\":{},\"loading\":{\"experimental\":false},\"loop\":{},\"muted\":{},\"preload\":{},\"src\":{}}},\"b\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"generic\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"base\":{\"categories\":[\"#metadata\"],\"contentModel\":{\"contents\":false},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#HTMLLinkAndFetchingAttrs\"],\"attributes\":{\"href\":{\"type\":\"BaseURL\",\"requiredEither\":[\"target\"]},\"target\":{\"requiredEither\":[\"href\"]}}},\"basefont\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"bdi\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"generic\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"bdo\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"generic\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"dir\":{\"type\":{\"enum\":[\"ltr\",\"rtl\"]},\"required\":true}}},\"bgsound\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"big\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"blink\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"blockquote\":{\"categories\":[\"#flow\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow)\"}]},\"aria\":{\"implicitRole\":\"blockquote\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"cite\":{\"type\":\"URL\"}}},\"body\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow)\"}]},\"aria\":{\"implicitRole\":\"generic\",\"permittedRoles\":[],\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"alink\":{\"deprecated\":true},\"background\":{\"deprecated\":true},\"bgcolor\":{\"deprecated\":true},\"bottommargin\":{\"deprecated\":true},\"leftmargin\":{\"deprecated\":true},\"link\":{\"deprecated\":true},\"onafterprint\":{\"type\":\"FunctionBody\"},\"onbeforeprint\":{\"type\":\"FunctionBody\"},\"onbeforeunload\":{\"type\":\"FunctionBody\"},\"onhashchange\":{\"type\":\"FunctionBody\"},\"onlanguagechange\":{\"type\":\"FunctionBody\"},\"onmessage\":{\"type\":\"FunctionBody\"},\"onmessageerror\":{\"type\":\"FunctionBody\"},\"onoffline\":{\"type\":\"FunctionBody\"},\"ononline\":{\"type\":\"FunctionBody\"},\"onpagehide\":{\"type\":\"FunctionBody\"},\"onpagereveal\":{\"type\":\"FunctionBody\"},\"onpageshow\":{\"type\":\"FunctionBody\"},\"onpageswap\":{\"type\":\"FunctionBody\"},\"onpopstate\":{\"type\":\"FunctionBody\"},\"onrejectionhandled\":{\"type\":\"FunctionBody\"},\"onstorage\":{\"type\":\"FunctionBody\"},\"onunhandledrejection\":{\"type\":\"FunctionBody\"},\"onunload\":{\"type\":\"FunctionBody\"},\"rightmargin\":{\"deprecated\":true},\"text\":{\"deprecated\":true},\"topmargin\":{\"deprecated\":true},\"vlink\":{\"deprecated\":true}}},\"br\":{\"categories\":[\"#flow\",\"#phrasing\"],\"contentModel\":{\"contents\":false},\"aria\":{\"permittedRoles\":[\"none\",\"presentation\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"clear\":{\"deprecated\":true}}},\"button\":{\"categories\":[\"#flow\",\"#phrasing\",\"#interactive\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing):not(:model(interactive), :has(:model(interactive)))\"}]},\"aria\":{\"implicitRole\":\"button\",\"permittedRoles\":[\"checkbox\",\"combobox\",\"gridcell\",\"link\",\"menuitem\",\"menuitemcheckbox\",\"menuitemradio\",\"option\",\"radio\",\"separator\",\"slider\",\"switch\",\"tab\",\"treeitem\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLFormControlElementAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"autofocus\":{},\"command\":{\"type\":[{\"enum\":[\"toggle-popover\",\"show-popover\",\"hide-popover\",\"close\",\"request-close\",\"show-modal\"],\"invalidValueDefault\":\"unknown\",\"missingValueDefault\":\"unknown\"},\"ValidCustomCommand\"]},\"commandfor\":{\"type\":\"DOMID\"},\"disabled\":{},\"form\":{},\"formaction\":{},\"formenctype\":{},\"formmethod\":{},\"formnovalidate\":{},\"formtarget\":{},\"interestfor\":{\"type\":\"DOMID\",\"nonStandard\":true,\"experimental\":true},\"name\":{},\"popovertarget\":{\"type\":\"DOMID\"},\"popovertargetaction\":{\"type\":{\"enum\":[\"toggle\",\"show\",\"hide\"],\"disallowToSurroundBySpaces\":true,\"invalidValueDefault\":\"toggle\",\"missingValueDefault\":\"toggle\"}},\"type\":{\"type\":{\"enum\":[\"submit\",\"reset\",\"button\"],\"invalidValueDefault\":\"submit\",\"missingValueDefault\":\"submit\"}},\"value\":{\"type\":\"Any\"}}},\"canvas\":{\"categories\":[\"#flow\",\"#phrasing\",\"#embedded\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"transparent\":\":not(:model(interactive), :has(:model(interactive)))\"}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLEmbededAndMediaContentAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"height\":{},\"moz-opaque\":{\"deprecated\":true,\"nonStandard\":true},\"width\":{}}},\"caption\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow)\"}]},\"aria\":{\"implicitRole\":\"caption\",\"permittedRoles\":[],\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"align\":{\"deprecated\":true}}},\"center\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"cite\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"code\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"code\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"col\":{\"categories\":[],\"contentModel\":{\"contents\":false},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"align\":{\"deprecated\":true},\"bgcolor\":{\"deprecated\":true},\"char\":{\"deprecated\":true},\"charoff\":{\"deprecated\":true},\"span\":{\"type\":{\"type\":\"integer\",\"gt\":0,\"lte\":1000,\"clampable\":true}},\"valign\":{\"deprecated\":true},\"width\":{\"deprecated\":true}}},\"colgroup\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":\"col\"}],\"conditional\":[{\"condition\":\"[span]\",\"contents\":false}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"align\":{\"deprecated\":true},\"bgcolor\":{\"deprecated\":true},\"char\":{\"deprecated\":true},\"charoff\":{\"deprecated\":true},\"span\":{\"type\":{\"type\":\"integer\",\"gt\":0,\"lte\":1000,\"clampable\":true}},\"valign\":{\"deprecated\":true},\"width\":{\"deprecated\":true}}},\"data\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"generic\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"value\":{\"type\":\"Any\",\"required\":true}}},\"datalist\":{\"categories\":[\"#flow\",\"#phrasing\"],\"contentModel\":{\"contents\":[{\"choice\":[[{\"oneOrMore\":\":model(phrasing)\"}],[{\"zeroOrMore\":[\"option\",\":model(script-supporting)\"]}]]}]},\"aria\":{\"implicitRole\":\"listbox\",\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"dd\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow)\"}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"del\":{\"categories\":[\"#flow\",\"#phrasing\"],\"contentModel\":{\"contents\":[{\"transparent\":\"*\"}]},\"aria\":{\"implicitRole\":\"deletion\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"cite\":{\"type\":\"URL\"},\"datetime\":{\"type\":\"DateStringWithOptionalTime\"}}},\"details\":{\"categories\":[\"#flow\",\"#interactive\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"require\":\"summary\"},{\"oneOrMore\":\":model(flow)\"}]},\"aria\":{\"implicitRole\":\"group\",\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"name\":{\"type\":\"NoEmptyAny\"},\"open\":{\"type\":\"Boolean\"}}},\"dfn\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing):not(dfn, :has(dfn))\"}]},\"aria\":{\"implicitRole\":\"term\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"dialog\":{\"categories\":[\"#flow\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow)\"}]},\"aria\":{\"implicitRole\":\"dialog\",\"permittedRoles\":[\"alertdialog\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"closedby\":{\"type\":{\"enum\":[\"any\",\"closerequest\",\"none\"],\"invalidValueDefault\":\"auto\",\"missingValueDefault\":\"auto\"}},\"open\":{\"type\":\"Boolean\"},\"tabindex\":{\"noUse\":true}}},\"dir\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{\"compact\":{\"deprecated\":true,\"nonStandard\":true}}},\"div\":{\"categories\":[\"#flow\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow)\"}],\"conditional\":[{\"condition\":\"dl > div\",\"contents\":[{\"zeroOrMore\":\":model(script-supporting)\"},{\"oneOrMore\":\"dt\"},{\"zeroOrMore\":\":model(script-supporting)\"},{\"oneOrMore\":\"dd\"},{\"zeroOrMore\":\":model(script-supporting)\"}]}]},\"aria\":{\"implicitRole\":\"generic\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"dl\":{\"categories\":[\"#flow\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"choice\":[[{\"zeroOrMore\":[{\"zeroOrMore\":\":model(script-supporting)\"},{\"oneOrMore\":\"dt\"},{\"zeroOrMore\":\":model(script-supporting)\"},{\"oneOrMore\":\"dd\"},{\"zeroOrMore\":\":model(script-supporting)\"}]}],[{\"zeroOrMore\":\":model(script-supporting)\"},{\"oneOrMore\":\"div\"},{\"zeroOrMore\":\":model(script-supporting)\"}]]}]},\"aria\":{\"permittedRoles\":[\"group\",\"list\",\"none\",\"presentation\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"compact\":{\"deprecated\":true}}},\"dt\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow):not(header, footer, :model(sectioning), :model(heading), :has(header, footer, :model(sectioning), :model(heading)))\"}]},\"aria\":{\"permittedRoles\":[\"listitem\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"em\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"emphasis\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"embed\":{\"categories\":[\"#flow\",\"#phrasing\",\"#embedded\",\"#interactive\",\"#palpable\"],\"contentModel\":{\"contents\":false},\"aria\":{\"permittedRoles\":[\"application\",\"document\",\"img\",\"none\",\"presentation\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLEmbededAndMediaContentAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"height\":{},\"src\":{\"type\":\"NonEmptyURL\",\"required\":\"[itemprop]\"},\"type\":{\"type\":\"MIMEType\"},\"width\":{}}},\"fieldset\":{\"categories\":[\"#flow\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"optional\":\"legend\"},{\"oneOrMore\":\":model(flow)\"}]},\"aria\":{\"implicitRole\":\"group\",\"permittedRoles\":[\"radiogroup\",\"presentation\",\"none\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLFormControlElementAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"disabled\":{},\"form\":{},\"name\":{}}},\"figcaption\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow)\"}]},\"aria\":{\"permittedRoles\":[\"group\",\"none\",\"presentation\"],\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"figure\":{\"categories\":[\"#flow\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"choice\":[[{\"require\":\"figcaption\"},{\"oneOrMore\":\":model(flow)\"}],[{\"oneOrMore\":\":model(flow)\"},{\"require\":\"figcaption\"}],[{\"oneOrMore\":\":model(flow)\"}]]}]},\"aria\":{\"implicitRole\":\"figure\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"font\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"color\":{\"deprecated\":true,\"nonStandard\":true},\"face\":{\"deprecated\":true,\"nonStandard\":true},\"size\":{\"deprecated\":true,\"nonStandard\":true}}},\"footer\":{\"categories\":[\"#flow\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow):not(header, footer, :has(header, footer))\"}],\"forbiddenAncestors\":[\"header\",\"footer\"]},\"aria\":{\"implicitRole\":\"contentinfo\",\"permittedRoles\":[\"group\",\"presentation\",\"none\"],\"conditions\":{\":has(article, aside, main, nav, section, [role=article], [role=complementary], [role=main], [role=navigation], [role=region])\":{\"implicitRole\":\"generic\",\"namingProhibited\":true}}},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"form\":{\"categories\":[\"#flow\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow):not(form, :has(form))\"}]},\"aria\":{\"permittedRoles\":[\"search\",\"none\",\"presentation\"],\"conditions\":{\":aria(has name)\":{\"implicitRole\":\"form\"}}},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"accept\":{\"deprecated\":true},\"accept-charset\":{\"type\":{\"enum\":[\"utf-8\"],\"caseInsensitive\":true}},\"action\":{\"type\":\"NonEmptyURL\"},\"autocapitalize\":{},\"autocomplete\":{\"type\":{\"enum\":[\"on\",\"off\"],\"invalidValueDefault\":\"on\",\"missingValueDefault\":\"on\"}},\"enctype\":{\"type\":{\"enum\":[\"application/x-www-form-urlencoded\",\"multipart/form-data\",\"text/plain\"],\"invalidValueDefault\":\"application/x-www-form-urlencoded\",\"missingValueDefault\":\"application/x-www-form-urlencoded\"}},\"method\":{\"type\":{\"enum\":[\"post\",\"get\",\"dialog\"],\"invalidValueDefault\":\"get\",\"missingValueDefault\":\"get\"}},\"name\":{\"type\":\"NoEmptyAny\"},\"novalidate\":{\"type\":\"Boolean\"},\"rel\":{\"type\":\"LinkTypeForFormElement\"},\"target\":{\"type\":\"NavigableTargetNameOrKeyword\"}}},\"frame\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{\"frameborder\":{\"deprecated\":true,\"nonStandard\":true},\"marginheight\":{\"deprecated\":true,\"nonStandard\":true},\"marginwidth\":{\"deprecated\":true,\"nonStandard\":true},\"name\":{\"deprecated\":true,\"nonStandard\":true},\"noresize\":{\"deprecated\":true,\"nonStandard\":true},\"scrolling\":{\"deprecated\":true,\"nonStandard\":true},\"src\":{\"deprecated\":true,\"nonStandard\":true}}},\"frameset\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{\"cols\":{\"deprecated\":true,\"nonStandard\":true},\"rows\":{\"deprecated\":true,\"nonStandard\":true}}},\"h1\":{\"categories\":[\"#flow\",\"#heading\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"heading\",\"permittedRoles\":[\"tab\",\"presentation\",\"none\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"h2\":{\"categories\":[\"#flow\",\"#heading\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"heading\",\"permittedRoles\":[\"tab\",\"presentation\",\"none\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"h3\":{\"categories\":[\"#flow\",\"#heading\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"heading\",\"permittedRoles\":[\"tab\",\"presentation\",\"none\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"h4\":{\"categories\":[\"#flow\",\"#heading\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"heading\",\"permittedRoles\":[\"tab\",\"presentation\",\"none\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"h5\":{\"categories\":[\"#flow\",\"#heading\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"heading\",\"permittedRoles\":[\"tab\",\"presentation\",\"none\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"h6\":{\"categories\":[\"#flow\",\"#heading\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"heading\",\"permittedRoles\":[\"tab\",\"presentation\",\"none\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"head\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":\":model(metadata):not(title)\"},{\"require\":\"title\"},{\"zeroOrMore\":\":model(metadata):not(title)\"}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"profile\":{\"deprecated\":true}}},\"header\":{\"categories\":[\"#flow\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow):not(header, footer, :has(header, footer))\"}],\"forbiddenAncestors\":[\"header\",\"footer\"]},\"aria\":{\"implicitRole\":\"banner\",\"permittedRoles\":[\"group\",\"presentation\",\"none\"],\"conditions\":{\":has(article, aside, main, nav, section, [role=article], [role=complementary], [role=main], [role=navigation], [role=region])\":{\"implicitRole\":\"generic\",\"namingProhibited\":true}}},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"hgroup\":{\"categories\":[\"#flow\",\"#heading\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"zeroOrMore\":\":model(script-supporting)\"},{\"zeroOrMore\":\"p\"},{\"zeroOrMore\":\":model(script-supporting)\"},{\"require\":[\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\"]},{\"zeroOrMore\":\":model(script-supporting)\"},{\"zeroOrMore\":\"p\"},{\"zeroOrMore\":\":model(script-supporting)\"}]},\"aria\":{\"implicitRole\":\"generic\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"hr\":{\"categories\":[\"#flow\"],\"contentModel\":{\"contents\":false},\"aria\":{\"implicitRole\":\"separator\",\"permittedRoles\":[\"presentation\",\"none\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"align\":{\"deprecated\":true,\"nonStandard\":true},\"color\":{\"deprecated\":true,\"nonStandard\":true},\"noshade\":{\"deprecated\":true,\"nonStandard\":true},\"size\":{\"deprecated\":true,\"nonStandard\":true},\"width\":{\"deprecated\":true,\"nonStandard\":true}}},\"html\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"require\":\"head\"},{\"require\":\"body\"}]},\"aria\":{\"implicitRole\":\"generic\",\"permittedRoles\":[\"document\",\"generic\"],\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"version\":{\"deprecated\":true},\"xmlns\":{\"nonStandard\":true}}},\"i\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"generic\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"iframe\":{\"categories\":[\"#flow\",\"#phrasing\",\"#embedded\",\"#interactive\",\"#palpable\"],\"contentModel\":{\"contents\":false},\"aria\":{\"permittedRoles\":[\"application\",\"document\",\"img\",\"none\",\"presentation\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLEmbededAndMediaContentAttrs\",\"#HTMLGlobalAttrs\",\"#HTMLLinkAndFetchingAttrs\"],\"attributes\":{\"align\":{\"deprecated\":true},\"allow\":{\"type\":\"SerializedPermissionsPolicy\"},\"allowfullscreen\":{\"type\":\"Boolean\"},\"allowpaymentrequest\":{\"deprecated\":true,\"nonStandard\":true},\"browsingtopics\":{\"deprecated\":true,\"nonStandard\":true},\"credentialless\":{\"experimental\":true},\"csp\":{\"experimental\":true},\"frameborder\":{\"deprecated\":true},\"height\":{},\"loading\":{},\"longdesc\":{\"deprecated\":true},\"marginheight\":{\"deprecated\":true},\"marginwidth\":{\"deprecated\":true},\"name\":{\"type\":\"NavigableTargetName\"},\"privateToken\":{\"type\":\"Any\",\"experimental\":true},\"referrerpolicy\":{},\"sandbox\":{\"type\":{\"token\":{\"enum\":[\"allow-forms\",\"allow-modals\",\"allow-orientation-lock\",\"allow-pointer-lock\",\"allow-popups\",\"allow-popups-to-escape-sandbox\",\"allow-presentation\",\"allow-same-origin\",\"allow-scripts\",\"allow-top-navigation\",\"allow-top-navigation-by-user-activation\",\"allow-downloads\",\"allow-custom-protocols-navigation\"]},\"caseInsensitive\":true,\"ordered\":true,\"unique\":true,\"separator\":\"space\"}},\"scrolling\":{\"deprecated\":true},\"src\":{\"required\":\"[itemprop]\",\"ineffective\":\"[srcdoc]\"},\"srcdoc\":{\"type\":\"Any\"},\"width\":{}}},\"img\":{\"categories\":[\"#flow\",\"#phrasing\",\"#embedded\",\"#interactive\",\"#palpable\"],\"contentModel\":{\"contents\":false},\"aria\":{\"implicitRole\":\"img\",\"permittedRoles\":[\"button\",\"checkbox\",\"link\",\"math\",\"menuitem\",\"menuitemcheckbox\",\"menuitemradio\",\"meter\",\"option\",\"progressbar\",\"radio\",\"scrollbar\",\"separator\",\"slider\",\"switch\",\"tab\",\"treeitem\"],\"conditions\":{\"[alt=\\\"\\\"]\":{\"implicitRole\":\"presentation\"},\":not([alt]):aria(has no name)\":{\"implicitRole\":\"img\"}}},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLEmbededAndMediaContentAttrs\",\"#HTMLGlobalAttrs\",\"#HTMLLinkAndFetchingAttrs\"],\"attributes\":{\"align\":{\"deprecated\":true},\"alt\":{\"type\":\"Any\"},\"attributionsrc\":{\"deprecated\":true,\"nonStandard\":true},\"border\":{\"deprecated\":true},\"crossorigin\":{},\"decoding\":{\"type\":{\"enum\":[\"sync\",\"async\",\"auto\"],\"invalidValueDefault\":\"auto\",\"missingValueDefault\":\"auto\"}},\"elementtiming\":{},\"fetchpriority\":{},\"height\":{},\"hspace\":{\"deprecated\":true},\"ismap\":{\"type\":\"Boolean\",\"condition\":\"a[href] img\"},\"loading\":{},\"longdesc\":{\"deprecated\":true},\"name\":{\"deprecated\":true},\"referrerpolicy\":{},\"sizes\":{\"type\":\"SourceSizeList\",\"condition\":\"[srcset]\"},\"src\":{\"type\":\"NonEmptyURL\",\"requiredEither\":[\"srcset\"]},\"srcset\":{\"type\":\"Srcset\",\"requiredEither\":[\"src\"]},\"usemap\":{\"type\":\"HashName\",\"condition\":\":is(:not(a):not(button)) img\"},\"vspace\":{\"deprecated\":true},\"width\":{}}},\"input\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":false},\"aria\":{\"implicitRole\":\"textbox\",\"permittedRoles\":[\"combobox\",\"searchbox\",\"spinbutton\"],\"conditions\":{\"[type='button' i]\":{\"implicitRole\":\"button\"},\"[type='checkbox' i]\":{\"implicitRole\":\"checkbox\"},\"[type='checkbox' i][aria-pressed]\":{\"implicitRole\":\"checkbox\"},\"[type='color' i]\":{\"implicitRole\":false},\"[type='date' i]\":{\"implicitRole\":false},\"[type='email' i]:not([list])\":{\"implicitRole\":\"textbox\"},\"[type='file' i]\":{\"implicitRole\":false},\"[type='hidden' i]\":{\"implicitRole\":false},\"[type='image' i]\":{\"implicitRole\":\"button\"},\"[type='month' i]\":{\"implicitRole\":false},\"[type='number' i]\":{\"implicitRole\":\"spinbutton\"},\"[type='password' i]\":{\"implicitRole\":false},\"[type='radio' i]\":{\"implicitRole\":\"radio\"},\"[type='range' i]\":{\"implicitRole\":\"slider\"},\"[type='reset' i]\":{\"implicitRole\":\"button\"},\"[type='search' i]:not([list])\":{\"implicitRole\":\"searchbox\"},\"[type='submit' i]\":{\"implicitRole\":\"button\"},\"[type='tel' i]:not([list])\":{\"implicitRole\":\"textbox\"},\":is(:not([type]), [type='text' i], [type='search' i], [type='tel' i], [type='url' i], [type='email' i])[list]\":{\"implicitRole\":\"combobox\"},\"[type='time' i]\":{\"implicitRole\":false},\"[type='url' i]:not([list])\":{\"implicitRole\":\"textbox\"},\"[type='week' i]\":{\"implicitRole\":false}}},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLEmbededAndMediaContentAttrs\",\"#HTMLFormControlElementAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"accept\":{\"type\":{\"token\":\"Accept\",\"caseInsensitive\":true,\"unique\":true,\"separator\":\"comma\"},\"condition\":\"[type='file' i]\"},\"alpha\":{\"type\":\"Boolean\",\"experimental\":true,\"condition\":\"[type='color' i]\"},\"alt\":{\"type\":\"Any\",\"required\":true,\"condition\":\"[type='image' i]\"},\"autocapitalize\":{},\"autocomplete\":{\"type\":[{\"condition\":\"[type='hidden' i]\",\"type\":\"AutoCompleteAnchorMantle\"},{\"condition\":\":not([type='hidden' i])\",\"type\":\"AutoComplete\"}],\"condition\":[\":not([type])\",\"[type='hidden' i]\",\"[type='text' i]\",\"[type='search' i]\",\"[type='url' i]\",\"[type='tel' i]\",\"[type='email' i]\",\"[type='password' i]\",\"[type='date' i]\",\"[type='month' i]\",\"[type='week' i]\",\"[type='time' i]\",\"[type='datetime-local' i]\",\"[type='number' i]\",\"[type='range' i]\",\"[type='color' i]\"]},\"autofocus\":{},\"capture\":{},\"checked\":{\"type\":\"Boolean\",\"condition\":[\"[type='checkbox' i]\",\"[type='radio' i]\"]},\"colorspace\":{\"type\":{\"enum\":[\"limited-srgb\",\"display-p3\"],\"invalidValueDefault\":\"limited-srgb\",\"missingValueDefault\":\"limited-srgb\"},\"experimental\":true,\"condition\":\"[type='color' i]\"},\"dirname\":{\"condition\":[\":not([type])\",\"[type='hidden' i]\",\"[type='text' i]\",\"[type='search' i]\",\"[type='tel' i]\",\"[type='url' i]\",\"[type='email' i]\",\"[type='password' i]\",\"[type='submit' i]\"]},\"disabled\":{},\"form\":{},\"formaction\":{},\"formenctype\":{},\"formmethod\":{},\"formnovalidate\":{},\"formtarget\":{},\"height\":{\"condition\":\"[type='image' i]\"},\"id\":{},\"incremental\":{\"nonStandard\":true},\"inputmode\":{},\"list\":{\"type\":\"DOMID\",\"condition\":[\":not([type])\",\"[type='text' i]\",\"[type='search' i]\",\"[type='url' i]\",\"[type='tel' i]\",\"[type='email' i]\",\"[type='date' i]\",\"[type='month' i]\",\"[type='week' i]\",\"[type='time' i]\",\"[type='datetime-local' i]\",\"[type='number' i]\",\"[type='range' i]\",\"[type='color' i]\"]},\"max\":{\"type\":[{\"condition\":\"[type='date' i]\",\"type\":\"DateString\"},{\"condition\":\"[type='month' i]\",\"type\":\"MonthString\"},{\"condition\":\"[type='week' i]\",\"type\":\"WeekString\"},{\"condition\":\"[type='time' i]\",\"type\":\"TimeString\"},{\"condition\":\"[type='datetime-local' i]\",\"type\":\"LocalDateTimeString\"},{\"condition\":[\"[type='number' i]\",\"[type='range' i]\"],\"type\":{\"type\":\"float\"}}],\"condition\":[\"[type='date' i]\",\"[type='month' i]\",\"[type='week' i]\",\"[type='time' i]\",\"[type='datetime-local' i]\",\"[type='number' i]\",\"[type='range' i]\"]},\"maxlength\":{\"condition\":[\":not([type])\",\"[type='text' i]\",\"[type='search' i]\",\"[type='url' i]\",\"[type='tel' i]\",\"[type='email' i]\",\"[type='password' i]\"]},\"min\":{\"type\":[{\"condition\":\"[type='date' i]\",\"type\":\"DateString\"},{\"condition\":\"[type='month' i]\",\"type\":\"MonthString\"},{\"condition\":\"[type='week' i]\",\"type\":\"WeekString\"},{\"condition\":\"[type='time' i]\",\"type\":\"TimeString\"},{\"condition\":\"[type='datetime-local' i]\",\"type\":\"LocalDateTimeString\"},{\"condition\":[\"[type='number' i]\",\"[type='range' i]\"],\"type\":{\"type\":\"float\"}}],\"condition\":[\"[type='date' i]\",\"[type='month' i]\",\"[type='week' i]\",\"[type='time' i]\",\"[type='datetime-local' i]\",\"[type='number' i]\",\"[type='range' i]\"]},\"minlength\":{\"condition\":[\":not([type])\",\"[type='text' i]\",\"[type='search' i]\",\"[type='url' i]\",\"[type='tel' i]\",\"[type='email' i]\",\"[type='password' i]\"]},\"multiple\":{\"type\":\"Boolean\",\"condition\":[\"[type='email' i]\",\"[type='file' i]\"]},\"name\":{\"type\":{\"pattern\":\"/^(?!isindex$).+/\"}},\"orient\":{\"nonStandard\":true},\"pattern\":{\"type\":\"Pattern\",\"condition\":[\":not([type])\",\"[type='text' i]\",\"[type='search' i]\",\"[type='url' i]\",\"[type='tel' i]\",\"[type='email' i]\",\"[type='password' i]\"]},\"placeholder\":{\"type\":\"OneLineAny\",\"condition\":[\":not([type])\",\"[type='text' i]\",\"[type='search' i]\",\"[type='url' i]\",\"[type='tel' i]\",\"[type='email' i]\",\"[type='password' i]\",\"[type='number' i]\"]},\"popovertarget\":{\"type\":\"DOMID\",\"condition\":[\"[type='button' i]\",\"[type='image' i]\",\"[type='reset' i]\",\"[type='submit' i]\"]},\"popovertargetaction\":{\"type\":{\"enum\":[\"toggle\",\"show\",\"hide\"],\"disallowToSurroundBySpaces\":true,\"invalidValueDefault\":\"toggle\",\"missingValueDefault\":\"toggle\"},\"condition\":[\"[type='button' i]\",\"[type='image' i]\",\"[type='reset' i]\",\"[type='submit' i]\"]},\"readonly\":{\"condition\":[\":not([type])\",\"[type='text' i]\",\"[type='search' i]\",\"[type='url' i]\",\"[type='tel' i]\",\"[type='email' i]\",\"[type='password' i]\",\"[type='date' i]\",\"[type='month' i]\",\"[type='week' i]\",\"[type='time' i]\",\"[type='datetime-local' i]\",\"[type='number' i]\"]},\"required\":{\"condition\":[\":not([type])\",\"[type='text' i]\",\"[type='search' i]\",\"[type='url' i]\",\"[type='tel' i]\",\"[type='email' i]\",\"[type='password' i]\",\"[type='date' i]\",\"[type='month' i]\",\"[type='week' i]\",\"[type='time' i]\",\"[type='datetime-local' i]\",\"[type='number' i]\",\"[type='checkbox' i]\",\"[type='radio' i]\",\"[type='file' i]\"]},\"results\":{\"nonStandard\":true},\"size\":{\"type\":{\"type\":\"integer\",\"gt\":0},\"condition\":[\":not([type])\",\"[type='text' i]\",\"[type='search' i]\",\"[type='url' i]\",\"[type='tel' i]\",\"[type='email' i]\",\"[type='password' i]\"]},\"src\":{\"condition\":\"[type='image' i]\"},\"step\":{\"type\":[\"Number\",{\"enum\":[\"any\"],\"caseInsensitive\":true}],\"condition\":[\"[type='date' i]\",\"[type='month' i]\",\"[type='week' i]\",\"[type='time' i]\",\"[type='datetime-local' i]\",\"[type='number' i]\",\"[type='range' i]\"]},\"switch\":{\"type\":\"Boolean\",\"nonStandard\":true,\"experimental\":true,\"condition\":[\"[type='checkbox' i]\"]},\"tabindex\":{},\"title\":{},\"type\":{\"type\":{\"enum\":[\"hidden\",\"text\",\"search\",\"tel\",\"url\",\"email\",\"password\",\"date\",\"month\",\"week\",\"time\",\"datetime-local\",\"number\",\"range\",\"color\",\"checkbox\",\"radio\",\"file\",\"submit\",\"image\",\"reset\",\"button\"],\"invalidValueDefault\":\"text\",\"missingValueDefault\":\"text\"}},\"value\":{\"type\":[{\"condition\":\"[type='color' i]\",\"type\":\"SimpleColor\"},{\"condition\":\"[type='url' i]\",\"type\":\"AbsoluteURLOrEmpty\"},{\"condition\":\"[type='email' i]\",\"type\":\"Email\"},{\"condition\":[\"[type='number' i]\",\"[type='range' i]\"],\"type\":{\"type\":\"float\"}},{\"condition\":\"[type='date' i]\",\"type\":\"DateString\"},{\"condition\":\"[type='month' i]\",\"type\":\"MonthString\"},{\"condition\":\"[type='week' i]\",\"type\":\"WeekString\"},{\"condition\":\"[type='time' i]\",\"type\":\"TimeString\"},{\"condition\":\"[type='datetime-local' i]\",\"type\":\"LocalDateTimeString\"}],\"condition\":\":not([type='file' i]):not([type='image' i]):not([type='hidden' i][name='_charset_' i])\"},\"webkitdirectory\":{},\"width\":{\"condition\":\"[type='image' i]\"}}},\"ins\":{\"categories\":[\"#flow\",\"#phrasing\"],\"contentModel\":{\"contents\":[{\"transparent\":\"*\"}]},\"aria\":{\"implicitRole\":\"insertion\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"cite\":{\"type\":\"URL\"},\"datetime\":{\"type\":\"DateStringWithOptionalTime\"}}},\"isindex\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"kbd\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"keygen\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"label\":{\"categories\":[\"#flow\",\"#phrasing\",\"#interactive\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing):not(label, :has(label))\"}]},\"aria\":{\"permittedRoles\":[],\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"for\":{\"type\":\"DOMID\"}}},\"legend\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(phrasing)\",\":model(heading)\"]}]},\"aria\":{\"permittedRoles\":[],\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"li\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow)\"}]},\"aria\":{\"implicitRole\":\"listitem\",\"permittedRoles\":[\"menuitem\",\"menuitemcheckbox\",\"menuitemradio\",\"option\",\"none\",\"presentation\",\"radio\",\"separator\",\"tab\",\"treeitem\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"type\":{\"deprecated\":true},\"value\":{\"type\":\"Int\",\"condition\":\"ol > li\"}}},\"link\":{\"categories\":[\"#metadata\",\"#flow\",\"#phrasing\"],\"contentModel\":{\"contents\":false},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#HTMLLinkAndFetchingAttrs\"],\"attributes\":{\"as\":{\"type\":[{\"condition\":\"[rel~='preload' i]\",\"type\":{\"enum\":[\"fetch\",\"font\",\"image\",\"script\",\"style\",\"track\"]}},{\"condition\":\"[rel~='modulepreload' i]\",\"type\":{\"enum\":[\"audioworklet\",\"json\",\"paintworklet\",\"script\",\"serviceworker\",\"sharedworker\",\"style\",\"worker\"]}}],\"required\":\"[rel~='preload' i]\",\"condition\":[\"[rel~='preload' i]\",\"[rel~='modulepreload' i]\"]},\"blocking\":{\"type\":{\"token\":{\"enum\":[\"render\"]},\"separator\":\"space\",\"unique\":true},\"condition\":\"[rel~='stylesheet' i]\"},\"charset\":{\"deprecated\":true,\"obsolete\":true},\"color\":{\"type\":\"<color>\",\"condition\":\"[rel~='mask-icon' i]\"},\"crossorigin\":{},\"disabled\":{\"type\":\"Boolean\",\"condition\":\"[rel~='stylesheet' i]\"},\"fetchpriority\":{},\"href\":{\"type\":\"NonEmptyURL\",\"requiredEither\":[\"imagesrcset\"]},\"hreflang\":{},\"imagesizes\":{\"type\":\"SourceSizeList\",\"required\":\"[imagesrcset]\",\"condition\":\"[imagesrcset][rel~='preload' i][as='image' i]\"},\"imagesrcset\":{\"type\":\"Srcset\",\"required\":\"[imagesizes]\",\"condition\":\"[imagesizes][rel~='preload' i][as='image' i]\"},\"integrity\":{\"condition\":[\"[rel~='stylesheet' i]\",\"[rel~='preload' i]\",\"[rel~='modulepreload' i]\"]},\"itemprop\":{\"requiredEither\":[\"rel\"]},\"media\":{},\"referrerpolicy\":{},\"rel\":{\"type\":\"LinkTypeForLinkElement\",\"requiredEither\":[\"itemprop\"]},\"rev\":{\"deprecated\":true,\"obsolete\":true},\"sizes\":{\"type\":{\"token\":\"IconSize\",\"caseInsensitive\":true,\"ordered\":false,\"unique\":true,\"separator\":\"space\"},\"condition\":[\"[rel~='icon' i]\",\"[rel~='apple-touch-icon' i]\"]},\"target\":{\"deprecated\":true},\"title\":{\"type\":[{\"condition\":\"[rel~='alternate' i][rel~='stylesheet' i]\",\"type\":\"NoEmptyAny\"}],\"required\":\"[rel~='alternate' i][rel~='stylesheet' i]\"},\"type\":{}}},\"listing\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"main\":{\"categories\":[\"#flow\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow)\"}],\"forbiddenAncestors\":[\"article\",\"aside\",\"footer\",\"header\",\"nav\"]},\"aria\":{\"implicitRole\":\"main\",\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"map\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"transparent\":\"*\"}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"name\":{\"type\":\"NoEmptyAny\"}}},\"mark\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"marquee\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{\"behavior\":{\"deprecated\":true},\"bgcolor\":{\"deprecated\":true},\"direction\":{\"deprecated\":true},\"height\":{\"deprecated\":true,\"nonStandard\":true},\"hspace\":{\"deprecated\":true,\"nonStandard\":true},\"loop\":{\"deprecated\":true},\"scrollamount\":{\"deprecated\":true,\"nonStandard\":true},\"scrolldelay\":{\"deprecated\":true,\"nonStandard\":true},\"truespeed\":{\"deprecated\":true},\"vspace\":{\"deprecated\":true,\"nonStandard\":true},\"width\":{\"deprecated\":true,\"nonStandard\":true}}},\"menu\":{\"categories\":[\"#flow\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\"li\",\":model(script-supporting)\"]}]},\"aria\":{\"implicitRole\":\"list\",\"permittedRoles\":[\"group\",\"listbox\",\"menu\",\"menubar\",\"none\",\"presentation\",\"radiogroup\",\"tablist\",\"toolbar\",\"tree\",\"directory\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"compact\":{\"deprecated\":true}}},\"menuitem\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"meta\":{\"categories\":[\"#metadata\",\"#flow\",\"#phrasing\"],\"contentModel\":{\"contents\":false},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#HTMLLinkAndFetchingAttrs\"],\"attributes\":{\"charset\":{\"type\":{\"enum\":[\"utf-8\"],\"caseInsensitive\":true},\"condition\":[\":not([itemprop])\",\":not([name])\",\":not([http-equiv])\"]},\"content\":{\"type\":[{\"condition\":\"[http-equiv='refresh' i]\",\"type\":\"HTTPEquivRefresh\"},{\"condition\":\"[http-equiv='content-type' i]\",\"type\":\"HTTPEquivContentType\"},{\"condition\":\"[http-equiv='x-ua-compatible' i]\",\"type\":{\"enum\":[\"IE=edge\"],\"caseInsensitive\":true}},{\"condition\":\"[http-equiv='content-security-policy' i]\",\"type\":\"ContentSecurityPolicy\"}],\"required\":[\"[name]\",\"[http-equiv]\",\"[itemprop]\"],\"condition\":[\"[name]\",\"[http-equiv]\",\"[itemprop]\"]},\"http-equiv\":{\"type\":{\"enum\":[\"content-type\",\"default-style\",\"refresh\",\"x-ua-compatible\",\"content-security-policy\"]},\"requiredEither\":[\"itemprop\",\"name\",\"charset\"],\"condition\":[\":not([itemprop])\",\":not([name])\",\":not([charset])\"]},\"itemprop\":{\"requiredEither\":[\"name\",\"http-equiv\",\"charset\"],\"condition\":[\":not([name])\",\":not([http-equiv])\",\":not([charset])\"]},\"media\":{\"condition\":\"[name='theme-color']\"},\"name\":{\"type\":\"Any\",\"requiredEither\":[\"itemprop\",\"http-equiv\",\"charset\"],\"condition\":[\":not([itemprop])\",\":not([http-equiv])\",\":not([charset])\"]}}},\"meter\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing):not(meter, :has(meter))\"}]},\"aria\":{\"implicitRole\":\"meter\",\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"high\":{\"type\":\"Number\"},\"low\":{\"type\":\"Number\"},\"max\":{\"type\":\"Number\"},\"min\":{\"type\":\"Number\"},\"optimum\":{\"type\":\"Number\"},\"value\":{\"type\":\"Number\"}}},\"multicol\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"nav\":{\"categories\":[\"#flow\",\"#sectioning\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow)\"}]},\"aria\":{\"implicitRole\":\"navigation\",\"permittedRoles\":[\"menu\",\"menubar\",\"none\",\"presentation\",\"tablist\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"nextid\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"nobr\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"noembed\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"noframes\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"noscript\":{\"categories\":[\"#metadata\",\"#flow\",\"#phrasing\"],\"contentModel\":{\"contents\":[{\"transparent\":\":not(noscript)\"}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"object\":{\"categories\":[\"#flow\",\"#phrasing\",\"#embedded\",\"#interactive\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow)\"}]},\"aria\":{\"permittedRoles\":[\"application\",\"document\",\"img\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLEmbededAndMediaContentAttrs\",\"#HTMLFormControlElementAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"archive\":{\"deprecated\":true},\"border\":{\"deprecated\":true},\"classid\":{\"deprecated\":true},\"codebase\":{\"deprecated\":true},\"codetype\":{\"deprecated\":true},\"data\":{\"type\":\"NonEmptyURL\",\"requiredEither\":[\"type\"]},\"declare\":{\"deprecated\":true},\"form\":{},\"height\":{},\"name\":{\"type\":\"NavigableTargetName\"},\"standby\":{\"deprecated\":true},\"type\":{\"type\":\"MIMEType\",\"requiredEither\":[\"data\"]},\"usemap\":{\"deprecated\":true},\"width\":{}}},\"ol\":{\"categories\":[\"#flow\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\"li\",\":model(script-supporting)\"]}]},\"aria\":{\"implicitRole\":\"list\",\"permittedRoles\":[\"group\",\"listbox\",\"menu\",\"menubar\",\"none\",\"presentation\",\"radiogroup\",\"tablist\",\"toolbar\",\"tree\",\"directory\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"compact\":{\"deprecated\":true,\"nonStandard\":true},\"reversed\":{\"type\":\"Boolean\"},\"start\":{\"type\":\"Int\"},\"type\":{\"type\":{\"enum\":[\"1\",\"a\",\"A\",\"i\",\"I\"],\"caseInsensitive\":false,\"invalidValueDefault\":\"decimal\",\"missingValueDefault\":\"decimal\"}}}},\"optgroup\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":\"option\"}]},\"aria\":{\"implicitRole\":\"group\",\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLFormControlElementAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"disabled\":{},\"label\":{\"type\":\"NoEmptyAny\",\"required\":true}}},\"option\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"require\":\"#nonEmptyText\"}],\"conditional\":[{\"condition\":\"[label][value]\",\"contents\":false},{\"condition\":\"label\",\"contents\":[{\"optional\":\"#text\"}]},{\"condition\":\"datalist > :scope\",\"contents\":[{\"optional\":\"#text\"}]},{\"condition\":\"datalist > [label]\",\"contents\":[{\"optional\":\"#text\"}]}]},\"aria\":{\"permittedRoles\":[],\"conditions\":{\":is(select, select > optgroup, datalist) > option\":{\"implicitRole\":\"option\"}}},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLFormControlElementAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"disabled\":{},\"label\":{\"type\":\"Any\"},\"selected\":{\"type\":\"Boolean\"},\"value\":{\"type\":\"Any\"}}},\"output\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"status\",\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLFormControlElementAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"for\":{\"type\":{\"token\":\"DOMID\",\"separator\":\"space\",\"unique\":true,\"caseInsensitive\":true}},\"form\":{},\"name\":{}}},\"p\":{\"categories\":[\"#flow\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"paragraph\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"param\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{\"name\":{\"deprecated\":true,\"nonStandard\":true},\"type\":{\"deprecated\":true,\"nonStandard\":true},\"value\":{\"deprecated\":true,\"nonStandard\":true},\"valuetype\":{\"deprecated\":true,\"nonStandard\":true}}},\"picture\":{\"categories\":[\"#flow\",\"#phrasing\",\"#embedded\"],\"contentModel\":{\"contents\":[{\"zeroOrMore\":\":model(script-supporting)\"},{\"zeroOrMore\":\"source\"},{\"zeroOrMore\":\":model(script-supporting)\"},{\"require\":\"img\"},{\"zeroOrMore\":\":model(script-supporting)\"}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"plaintext\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"pre\":{\"categories\":[\"#flow\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"generic\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"width\":{\"deprecated\":true,\"nonStandard\":true},\"wrap\":{\"deprecated\":true,\"nonStandard\":true}}},\"progress\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing):not(progress, :has(progress))\"}]},\"aria\":{\"implicitRole\":\"progressbar\",\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"max\":{\"type\":{\"type\":\"float\",\"gt\":0}},\"value\":{\"type\":{\"type\":\"float\",\"gte\":0}}}},\"q\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"generic\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"cite\":{\"type\":\"URL\"}}},\"rb\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"rp\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"oneOrMore\":\"#text\"}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"rt\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"rtc\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"ruby\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":[{\"oneOrMore\":[\":model(phrasing):not(ruby, :has(ruby))\",\"ruby:not(:has(ruby))\"]},{\"choice\":[[{\"oneOrMore\":\"rt\"}],[{\"require\":\"rp\"},{\"oneOrMore\":[{\"require\":\"rt\"},{\"require\":\"rp\"}]}]]}]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"s\":{\"categories\":[\"#flow\",\"#phrasing\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"deletion\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"samp\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"generic\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"script\":{\"categories\":[\"#metadata\",\"#flow\",\"#phrasing\"],\"contentModel\":{\"contents\":[{\"zeroOrMore\":\"#text\"}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#HTMLLinkAndFetchingAttrs\"],\"attributes\":{\"async\":{\"type\":\"Boolean\",\"ineffective\":\":not([src]):not([type='module' i])\",\"condition\":[\":is(:not([type]), [type=''], [type='application/ecmascript' i], [type='application/javascript' i], [type='application/x-ecmascript' i], [type='application/x-javascript' i], [type='text/ecmascript' i], [type='text/javascript' i], [type='text/javascript1.0' i], [type='text/javascript1.1' i], [type='text/javascript1.2' i], [type='text/javascript1.3' i], [type='text/javascript1.4' i], [type='text/javascript1.5' i], [type='text/jscript' i], [type='text/livescript' i], [type='text/x-ecmascript' i], [type='text/x-javascript' i])[src]\",\"[type='module' i]\"]},\"attributionsrc\":{\"deprecated\":true,\"nonStandard\":true},\"blocking\":{\"type\":{\"token\":{\"enum\":[\"render\"]},\"separator\":\"space\",\"unique\":true},\"condition\":\":is(:not([type]), [type=''], [type='module' i], [type='application/ecmascript' i], [type='application/javascript' i], [type='application/x-ecmascript' i], [type='application/x-javascript' i], [type='text/ecmascript' i], [type='text/javascript' i], [type='text/javascript1.0' i], [type='text/javascript1.1' i], [type='text/javascript1.2' i], [type='text/javascript1.3' i], [type='text/javascript1.4' i], [type='text/javascript1.5' i], [type='text/jscript' i], [type='text/livescript' i], [type='text/x-ecmascript' i], [type='text/x-javascript' i])[src]\"},\"charset\":{\"deprecated\":true,\"condition\":\"[src]\"},\"crossorigin\":{\"condition\":\":is(:not([type]), [type=''], [type='module' i], [type='application/ecmascript' i], [type='application/javascript' i], [type='application/x-ecmascript' i], [type='application/x-javascript' i], [type='text/ecmascript' i], [type='text/javascript' i], [type='text/javascript1.0' i], [type='text/javascript1.1' i], [type='text/javascript1.2' i], [type='text/javascript1.3' i], [type='text/javascript1.4' i], [type='text/javascript1.5' i], [type='text/jscript' i], [type='text/livescript' i], [type='text/x-ecmascript' i], [type='text/x-javascript' i])\"},\"defer\":{\"type\":\"Boolean\",\"ineffective\":[\":not([src])\",\"[async]\"],\"condition\":\":is(:not([type]), [type=''], [type='application/ecmascript' i], [type='application/javascript' i], [type='application/x-ecmascript' i], [type='application/x-javascript' i], [type='text/ecmascript' i], [type='text/javascript' i], [type='text/javascript1.0' i], [type='text/javascript1.1' i], [type='text/javascript1.2' i], [type='text/javascript1.3' i], [type='text/javascript1.4' i], [type='text/javascript1.5' i], [type='text/jscript' i], [type='text/livescript' i], [type='text/x-ecmascript' i], [type='text/x-javascript' i])[src]\"},\"fetchpriority\":{\"condition\":\":is(:not([type]), [type=''], [type='module' i], [type='application/ecmascript' i], [type='application/javascript' i], [type='application/x-ecmascript' i], [type='application/x-javascript' i], [type='text/ecmascript' i], [type='text/javascript' i], [type='text/javascript1.0' i], [type='text/javascript1.1' i], [type='text/javascript1.2' i], [type='text/javascript1.3' i], [type='text/javascript1.4' i], [type='text/javascript1.5' i], [type='text/jscript' i], [type='text/livescript' i], [type='text/x-ecmascript' i], [type='text/x-javascript' i])[src]\"},\"integrity\":{\"condition\":\":is(:not([type]), [type=''], [type='module' i], [type='application/ecmascript' i], [type='application/javascript' i], [type='application/x-ecmascript' i], [type='application/x-javascript' i], [type='text/ecmascript' i], [type='text/javascript' i], [type='text/javascript1.0' i], [type='text/javascript1.1' i], [type='text/javascript1.2' i], [type='text/javascript1.3' i], [type='text/javascript1.4' i], [type='text/javascript1.5' i], [type='text/jscript' i], [type='text/livescript' i], [type='text/x-ecmascript' i], [type='text/x-javascript' i])[src]\"},\"language\":{\"deprecated\":true,\"nonStandard\":true},\"nomodule\":{\"type\":\"Boolean\",\"condition\":\":is(:not([type]), [type=''], [type='application/ecmascript' i], [type='application/javascript' i], [type='application/x-ecmascript' i], [type='application/x-javascript' i], [type='text/ecmascript' i], [type='text/javascript' i], [type='text/javascript1.0' i], [type='text/javascript1.1' i], [type='text/javascript1.2' i], [type='text/javascript1.3' i], [type='text/javascript1.4' i], [type='text/javascript1.5' i], [type='text/jscript' i], [type='text/livescript' i], [type='text/x-ecmascript' i], [type='text/x-javascript' i])\"},\"nonce\":{},\"referrerpolicy\":{\"condition\":\":is(:not([type]), [type=''], [type='module' i], [type='application/ecmascript' i], [type='application/javascript' i], [type='application/x-ecmascript' i], [type='application/x-javascript' i], [type='text/ecmascript' i], [type='text/javascript' i], [type='text/javascript1.0' i], [type='text/javascript1.1' i], [type='text/javascript1.2' i], [type='text/javascript1.3' i], [type='text/javascript1.4' i], [type='text/javascript1.5' i], [type='text/jscript' i], [type='text/livescript' i], [type='text/x-ecmascript' i], [type='text/x-javascript' i])\"},\"src\":{\"type\":\"NonEmptyURL\",\"condition\":\":is(:not([type]), [type=''], [type='module' i], [type='application/ecmascript' i], [type='application/javascript' i], [type='application/x-ecmascript' i], [type='application/x-javascript' i], [type='text/ecmascript' i], [type='text/javascript' i], [type='text/javascript1.0' i], [type='text/javascript1.1' i], [type='text/javascript1.2' i], [type='text/javascript1.3' i], [type='text/javascript1.4' i], [type='text/javascript1.5' i], [type='text/jscript' i], [type='text/livescript' i], [type='text/x-ecmascript' i], [type='text/x-javascript' i])\"},\"type\":{\"type\":[\"MIMEType\",{\"enum\":[\"module\",\"importmap\",\"speculationrules\"],\"caseInsensitive\":true}]}}},\"search\":{\"categories\":[\"#flow\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow)\"}]},\"aria\":{\"implicitRole\":\"search\",\"permittedRoles\":[\"form\",\"group\",\"none\",\"presentation\",\"region\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"section\":{\"categories\":[\"#flow\",\"#sectioning\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow)\"}]},\"aria\":{\"permittedRoles\":[\"alert\",\"alertdialog\",\"application\",\"banner\",\"complementary\",\"contentinfo\",\"dialog\",\"document\",\"feed\",\"group\",\"log\",\"main\",\"marquee\",\"navigation\",\"none\",\"note\",\"presentation\",\"search\",\"status\",\"tabpanel\"],\"conditions\":{\":aria(has name)\":{\"implicitRole\":\"region\"}}},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"select\":{\"categories\":[\"#flow\",\"#phrasing\",\"#interactive\"],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\"option\",\"optgroup\",\"hr\",\"#script-supporting\"]}]},\"aria\":{\"implicitRole\":\"combobox\",\"permittedRoles\":[\"menu\"],\"conditions\":{\"[multiple], [size]:not([size=1])\":{\"implicitRole\":\"listbox\"}}},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLFormControlElementAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"autocomplete\":{\"type\":\"AutoCompleteNoWebauthn\"},\"autofocus\":{},\"disabled\":{},\"form\":{},\"multiple\":{\"type\":\"Boolean\"},\"name\":{},\"required\":{},\"size\":{\"type\":{\"type\":\"integer\",\"gt\":0}}}},\"slot\":{\"categories\":[\"#flow\",\"#phrasing\"],\"contentModel\":{\"contents\":[{\"transparent\":\"*\"}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"name\":{\"type\":\"NoEmptyAny\"}}},\"small\":{\"categories\":[\"#flow\",\"#phrasing\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"generic\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"source\":{\"categories\":[],\"contentModel\":{\"contents\":false},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLEmbededAndMediaContentAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"height\":{\"condition\":\"picture > source\"},\"media\":{\"type\":\"MediaQueryList\"},\"sizes\":{\"condition\":\"picture > source[srcset]\"},\"src\":{\"type\":\"NonEmptyURL\",\"required\":\":is(video, audio) > source\",\"condition\":\":is(video, audio) > source\"},\"srcset\":{\"required\":\"picture > source\",\"condition\":\"picture > source\"},\"type\":{\"type\":\"MIMEType\"},\"width\":{\"condition\":\"picture > source\"}}},\"spacer\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"span\":{\"categories\":[\"#flow\",\"#phrasing\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"generic\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"strike\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"strong\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"strong\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"style\":{\"categories\":[\"#metadata\"],\"contentModel\":{\"contents\":[{\"zeroOrMore\":\"#text\"}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"blocking\":{\"type\":{\"token\":{\"enum\":[\"render\"]},\"separator\":\"space\",\"unique\":true}},\"media\":{\"type\":\"MediaQueryList\"},\"nonce\":{},\"title\":{},\"type\":{\"deprecated\":true}}},\"sub\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"subscript\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"summary\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"choice\":[[{\"oneOrMore\":\":model(phrasing)\"}],[{\"require\":\":model(heading)\"}]]}]},\"aria\":{\"implicitRole\":\"button\",\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"sup\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"superscript\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"table\":{\"categories\":[\"#flow\"],\"contentModel\":{\"contents\":[{\"zeroOrMore\":\":model(script-supporting)\"},{\"optional\":\"caption\"},{\"zeroOrMore\":\":model(script-supporting)\"},{\"zeroOrMore\":\"colgroup\"},{\"zeroOrMore\":\":model(script-supporting)\"},{\"optional\":\"thead\"},{\"zeroOrMore\":\":model(script-supporting)\"},{\"choice\":[[{\"zeroOrMore\":\"tbody\"}],[{\"oneOrMore\":\"tr\"}]]},{\"zeroOrMore\":\":model(script-supporting)\"},{\"optional\":\"tfoot\"},{\"zeroOrMore\":\":model(script-supporting)\"}]},\"aria\":{\"implicitRole\":\"table\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"align\":{\"deprecated\":true},\"bgcolor\":{\"deprecated\":true},\"border\":{\"deprecated\":true},\"cellpadding\":{\"deprecated\":true},\"cellspacing\":{\"deprecated\":true},\"frame\":{\"deprecated\":true},\"rules\":{\"deprecated\":true},\"summary\":{\"deprecated\":true},\"width\":{\"deprecated\":true}}},\"tbody\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":\"tr\"}]},\"aria\":{\"implicitRole\":\"rowgroup\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"align\":{\"deprecated\":true},\"bgcolor\":{\"deprecated\":true,\"nonStandard\":true},\"char\":{\"deprecated\":true},\"charoff\":{\"deprecated\":true},\"valign\":{\"deprecated\":true}}},\"td\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow)\"}]},\"aria\":{\"permittedRoles\":\"any\",\"conditions\":{\"table:is(:not([role]), [role=table]) > :is(thead, tfoot, tbody) > tr > td, table:is(:not([role]), [role=table]) > tr > td\":{\"implicitRole\":\"cell\"},\"table:is([role=grid], [role=treegrid]) > :is(thead, tfoot, tbody) > tr > td, table:is([role=grid], [role=treegrid]) > tr > td\":{\"implicitRole\":\"gridcell\"}}},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#HTMLTableCellElementAttrs\"],\"attributes\":{\"abbr\":{\"deprecated\":true},\"align\":{\"deprecated\":true},\"axis\":{\"deprecated\":true},\"bgcolor\":{\"deprecated\":true},\"char\":{\"deprecated\":true},\"charoff\":{\"deprecated\":true},\"colspan\":{},\"headers\":{},\"height\":{\"deprecated\":true},\"rowspan\":{},\"scope\":{\"deprecated\":true},\"valign\":{\"deprecated\":true},\"width\":{\"deprecated\":true}}},\"template\":{\"categories\":[\"#metadata\",\"#flow\",\"#phrasing\",\"#script-supporting\"],\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"for\":{\"experimental\":true},\"shadowrootclonable\":{\"type\":\"Boolean\"},\"shadowrootcustomelementregistry\":{\"type\":\"Boolean\"},\"shadowrootdelegatesfocus\":{\"type\":\"Boolean\"},\"shadowrootmode\":{\"type\":{\"enum\":[\"open\",\"closed\"],\"missingValueDefault\":\"none\",\"invalidValueDefault\":\"none\"}},\"shadowrootreferencetarget\":{\"type\":\"DOMID\",\"nonStandard\":true,\"experimental\":true},\"shadowrootserializable\":{\"type\":\"Boolean\"},\"shadowrootslotassignment\":{\"type\":{\"enum\":[\"named\",\"manual\"],\"missingValueDefault\":\"named\",\"invalidValueDefault\":\"named\"},\"experimental\":true}}},\"textarea\":{\"categories\":[\"#flow\",\"#phrasing\",\"#interactive\"],\"contentModel\":{\"contents\":[{\"optional\":\"#text\"}]},\"aria\":{\"implicitRole\":\"textbox\",\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLFormControlElementAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"autocapitalize\":{},\"autocomplete\":{},\"autocorrect\":{},\"autofocus\":{},\"cols\":{\"type\":{\"type\":\"integer\",\"gt\":0}},\"dirname\":{},\"disabled\":{},\"form\":{},\"maxlength\":{},\"minlength\":{},\"name\":{},\"placeholder\":{\"type\":\"Any\"},\"readonly\":{},\"required\":{},\"rows\":{\"type\":{\"type\":\"integer\",\"gt\":0}},\"spellcheck\":{},\"wrap\":{\"type\":{\"enum\":[\"soft\",\"hard\"],\"missingValueDefault\":\"soft\",\"invalidValueDefault\":\"soft\"}}}},\"tfoot\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":\"tr\"}]},\"aria\":{\"implicitRole\":\"rowgroup\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"align\":{\"deprecated\":true},\"bgcolor\":{\"deprecated\":true,\"nonStandard\":true},\"char\":{\"deprecated\":true},\"charoff\":{\"deprecated\":true},\"valign\":{\"deprecated\":true}}},\"th\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(flow):not(header, footer, :model(sectioning), :model(heading), :has(header, footer, :model(sectioning), :model(heading)))\"}]},\"aria\":{\"permittedRoles\":\"any\",\"conditions\":{\"table:is(:not([role]), [role=table]) > :is(thead, tfoot, tbody) > tr > th, table:is(:not([role]), [role=table]) > tr > th\":{\"implicitRole\":\"cell\"},\"table:is([role=grid], [role=treegrid]) > :is(thead, tfoot, tbody) > tr > th, table:is([role=grid], [role=treegrid]) > tr > th\":{\"implicitRole\":\"gridcell\"},\"table:is(:not([role]), [role=table], [role=grid], [role=treegrid]) > thead > tr > th:not([scope])\":{\"implicitRole\":\"columnheader\"},\"table:is(:not([role]), [role=table], [role=grid], [role=treegrid]) > :is(tfoot, tbody) > tr > th:not([scope]), table:is(:not([role]), [role=table], [role=grid], [role=treegrid]) > tr > th:not([scope])\":{\"implicitRole\":\"rowheader\"},\"table:is(:not([role]), [role=table], [role=grid], [role=treegrid]) > :is(thead, tfoot, tbody) > tr > th[scope=col], table:is(:not([role]), [role=table], [role=grid], [role=treegrid]) > tr > th[scope=col]\":{\"implicitRole\":\"columnheader\"},\"table:is(:not([role]), [role=table], [role=grid], [role=treegrid]) > :is(thead, tfoot, tbody) > tr > th[scope=row], table:is(:not([role]), [role=table], [role=grid], [role=treegrid]) > tr > th[scope=row]\":{\"implicitRole\":\"rowheader\"}}},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#HTMLTableCellElementAttrs\"],\"attributes\":{\"abbr\":{\"type\":\"Any\"},\"align\":{\"deprecated\":true},\"axis\":{\"deprecated\":true},\"bgcolor\":{\"deprecated\":true},\"char\":{\"deprecated\":true},\"charoff\":{\"deprecated\":true},\"colspan\":{},\"headers\":{},\"height\":{\"deprecated\":true},\"rowspan\":{},\"scope\":{\"type\":{\"enum\":[\"row\",\"col\",\"rowgroup\",\"colgroup\"],\"missingValueDefault\":\"auto\",\"invalidValueDefault\":\"auto\"}},\"valign\":{\"deprecated\":true},\"width\":{\"deprecated\":true}}},\"thead\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":\"tr\"}]},\"aria\":{\"implicitRole\":\"rowgroup\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"align\":{\"deprecated\":true},\"bgcolor\":{\"deprecated\":true,\"nonStandard\":true},\"char\":{\"deprecated\":true},\"charoff\":{\"deprecated\":true},\"valign\":{\"deprecated\":true}}},\"time\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"time\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"datetime\":{\"type\":\"DateTime\"}}},\"title\":{\"categories\":[\"#metadata\"],\"contentModel\":{\"contents\":[{\"require\":\"#nonEmptyText\"}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"tr\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\"th\",\"td\",\":model(script-supporting)\"]}]},\"aria\":{\"implicitRole\":\"row\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"align\":{\"deprecated\":true},\"bgcolor\":{\"deprecated\":true},\"char\":{\"deprecated\":true},\"charoff\":{\"deprecated\":true},\"valign\":{\"deprecated\":true}}},\"track\":{\"categories\":[],\"contentModel\":{\"contents\":false,\"uniqueAttrs\":[\"default\"]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"default\":{\"type\":\"Boolean\"},\"kind\":{\"type\":{\"enum\":[\"subtitles\",\"captions\",\"descriptions\",\"chapters\",\"metadata\"],\"missingValueDefault\":\"metadata\",\"invalidValueDefault\":\"metadata\"}},\"label\":{\"type\":\"NoEmptyAny\"},\"src\":{\"type\":\"NonEmptyURL\",\"required\":true},\"srclang\":{\"type\":\"BCP47\"}}},\"tt\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"u\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"implicitRole\":\"generic\",\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"ul\":{\"categories\":[\"#flow\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\"li\",\":model(script-supporting)\"]}]},\"aria\":{\"implicitRole\":\"list\",\"permittedRoles\":[\"group\",\"listbox\",\"menu\",\"menubar\",\"none\",\"presentation\",\"radiogroup\",\"tablist\",\"toolbar\",\"tree\",\"directory\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{\"compact\":{\"deprecated\":true},\"type\":{\"deprecated\":true}}},\"var\":{\"categories\":[\"#flow\",\"#phrasing\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"oneOrMore\":\":model(phrasing)\"}]},\"aria\":{\"permittedRoles\":\"any\",\"namingProhibited\":true},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"video\":{\"categories\":[\"#flow\",\"#phrasing\",\"#embedded\",\"#interactive\",\"#palpable\"],\"contentModel\":{\"contents\":[{\"zeroOrMore\":\"source\"},{\"zeroOrMore\":\"track\"},{\"transparent\":\":not(audio, video, :has(audio, video))\"}],\"conditional\":[{\"condition\":\"[src]\",\"contents\":[{\"zeroOrMore\":\"track\"},{\"transparent\":\":not(audio, video, :has(audio, video))\"}]}]},\"aria\":{\"permittedRoles\":[\"application\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLEmbededAndMediaContentAttrs\",\"#HTMLGlobalAttrs\",\"#HTMLLinkAndFetchingAttrs\"],\"attributes\":{\"autoplay\":{},\"controls\":{},\"controlslist\":{\"type\":{\"token\":{\"enum\":[\"nodownload\",\"nofullscreen\",\"noremoteplayback\"]},\"ordered\":false,\"caseInsensitive\":true,\"unique\":true,\"separator\":\"space\"}},\"crossorigin\":{},\"disablepictureinpicture\":{},\"disableremoteplayback\":{},\"height\":{},\"loading\":{\"experimental\":false},\"loop\":{},\"muted\":{},\"playsinline\":{\"type\":\"Boolean\"},\"poster\":{\"type\":\"NonEmptyURL\"},\"preload\":{},\"src\":{},\"width\":{}}},\"wbr\":{\"categories\":[\"#flow\",\"#phrasing\"],\"contentModel\":{\"contents\":false},\"aria\":{\"permittedRoles\":[\"none\",\"presentation\"]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\"],\"attributes\":{}},\"xmp\":{\"categories\":[],\"obsolete\":true,\"contentModel\":{\"contents\":true},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[],\"attributes\":{}},\"mml:annotation\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"encoding\":{\"type\":\"MIMEType\"},\"src\":{\"type\":\"URL\",\"deprecated\":true}}},\"mml:annotation-xml\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"encoding\":{\"type\":\"MIMEType\"},\"src\":{\"type\":\"URL\",\"deprecated\":true}}},\"mml:maction\":{\"categories\":[],\"deprecated\":true,\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"actiontype\":{\"type\":\"Any\",\"deprecated\":true,\"nonStandard\":true},\"selection\":{\"type\":\"Any\",\"deprecated\":true,\"nonStandard\":true}}},\"math\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"#text\"]}]},\"aria\":{\"implicitRole\":\"math\",\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"alttext\":{\"type\":\"Any\"},\"display\":{\"type\":{\"enum\":[\"block\",\"inline\"],\"disallowToSurroundBySpaces\":false}},\"xmlns\":{\"type\":\"URL\"}}},\"mml:menclose\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"notation\":{\"type\":\"Any\",\"nonStandard\":true}}},\"mml:merror\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{}},\"mml:mfenced\":{\"categories\":[],\"deprecated\":true,\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"close\":{\"type\":\"Any\"},\"open\":{\"type\":\"Any\"},\"separators\":{\"type\":\"Any\"}}},\"mml:mfrac\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"require\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"#text\"],\"min\":2,\"max\":2}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"denomalign\":{\"deprecated\":true,\"nonStandard\":true},\"linethickness\":{\"type\":\"<length-percentage>\"},\"numalign\":{\"deprecated\":true,\"nonStandard\":true}}},\"mml:mi\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"mathvariant\":{\"type\":{\"enum\":[\"normal\"],\"disallowToSurroundBySpaces\":false}}}},\"mml:mmultiscripts\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|mprescripts\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"subscriptshift\":{\"deprecated\":true,\"nonStandard\":true},\"superscriptshift\":{\"deprecated\":true,\"nonStandard\":true}}},\"mml:mn\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{}},\"mml:mo\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"accent\":{\"type\":{\"enum\":[\"true\",\"false\"],\"disallowToSurroundBySpaces\":false},\"nonStandard\":true},\"fence\":{\"type\":{\"enum\":[\"true\",\"false\"],\"disallowToSurroundBySpaces\":false}},\"form\":{\"type\":{\"enum\":[\"prefix\",\"infix\",\"postfix\"],\"disallowToSurroundBySpaces\":false}},\"largeop\":{\"type\":{\"enum\":[\"true\",\"false\"],\"disallowToSurroundBySpaces\":false}},\"lspace\":{\"type\":\"<length-percentage>\"},\"maxsize\":{\"type\":\"<length-percentage>\"},\"minsize\":{\"type\":\"<length-percentage>\"},\"movablelimits\":{\"type\":{\"enum\":[\"true\",\"false\"],\"disallowToSurroundBySpaces\":false}},\"rspace\":{\"type\":\"<length-percentage>\"},\"separator\":{\"type\":{\"enum\":[\"true\",\"false\"],\"disallowToSurroundBySpaces\":false}},\"stretchy\":{\"type\":{\"enum\":[\"true\",\"false\"],\"disallowToSurroundBySpaces\":false}},\"symmetric\":{\"type\":{\"enum\":[\"true\",\"false\"],\"disallowToSurroundBySpaces\":false}}}},\"mml:mover\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"require\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"],\"min\":2,\"max\":2}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"accent\":{\"type\":{\"enum\":[\"true\",\"false\"],\"disallowToSurroundBySpaces\":false}}}},\"mml:mpadded\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"depth\":{\"type\":\"<length-percentage>\"},\"height\":{\"type\":\"<length-percentage>\"},\"lspace\":{\"type\":\"<length-percentage>\"},\"voffset\":{\"type\":\"<length-percentage>\"},\"width\":{\"type\":\"<length-percentage>\"}}},\"mml:mphantom\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{}},\"mml:mprescripts\":{\"categories\":[],\"contentModel\":{\"contents\":false},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{}},\"mml:mroot\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"require\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"#text\"],\"min\":2,\"max\":2}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{}},\"mml:mrow\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"mml|mtr\",\"mml|mtd\",\"mml|mprescripts\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{}},\"mml:ms\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{}},\"mml:mspace\":{\"categories\":[],\"contentModel\":{\"contents\":false},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"depth\":{\"type\":\"<length-percentage>\"},\"height\":{\"type\":\"<length-percentage>\"},\"width\":{\"type\":\"<length-percentage>\"}}},\"mml:msqrt\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{}},\"mml:mstyle\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"background\":{\"deprecated\":true,\"nonStandard\":true},\"color\":{\"deprecated\":true,\"nonStandard\":true},\"fontsize\":{\"deprecated\":true,\"nonStandard\":true},\"fontstyle\":{\"deprecated\":true,\"nonStandard\":true},\"fontweight\":{\"deprecated\":true,\"nonStandard\":true}}},\"mml:msub\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"require\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"],\"min\":2,\"max\":2}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"subscriptshift\":{\"deprecated\":true,\"nonStandard\":true}}},\"mml:msubsup\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"require\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"],\"min\":3,\"max\":3}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"subscriptshift\":{\"deprecated\":true,\"nonStandard\":true},\"superscriptshift\":{\"deprecated\":true,\"nonStandard\":true}}},\"mml:msup\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"require\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"],\"min\":2,\"max\":2}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"superscriptshift\":{\"deprecated\":true,\"nonStandard\":true}}},\"mml:mtable\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\"mml|mtr\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"align\":{\"nonStandard\":true},\"columnalign\":{\"nonStandard\":true},\"columnlines\":{\"nonStandard\":true},\"columnspacing\":{\"nonStandard\":true},\"frame\":{\"nonStandard\":true},\"framespacing\":{\"nonStandard\":true},\"rowalign\":{\"nonStandard\":true},\"rowlines\":{\"nonStandard\":true},\"rowspacing\":{\"nonStandard\":true},\"width\":{\"nonStandard\":true}}},\"mml:mtd\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"columnalign\":{\"nonStandard\":true},\"columnspan\":{\"type\":{\"type\":\"integer\",\"gt\":0}},\"rowalign\":{\"nonStandard\":true},\"rowspan\":{\"type\":{\"type\":\"integer\",\"gt\":0}}}},\"mml:mtext\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{}},\"mml:mtr\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\"mml|mtd\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"columnalign\":{\"nonStandard\":true},\"rowalign\":{\"nonStandard\":true}}},\"mml:munder\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"require\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"],\"min\":2,\"max\":2}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"accentunder\":{\"type\":{\"enum\":[\"true\",\"false\"],\"disallowToSurroundBySpaces\":false}}}},\"mml:munderover\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"require\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"],\"min\":3,\"max\":3}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{\"accent\":{\"type\":{\"enum\":[\"true\",\"false\"],\"disallowToSurroundBySpaces\":false}},\"accentunder\":{\"type\":{\"enum\":[\"true\",\"false\"],\"disallowToSurroundBySpaces\":false}}}},\"mml:semantics\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(MathMLPresentation)\",\"mml|semantics\",\"mml|annotation\",\"mml|annotation-xml\",\"#text\"]}]},\"aria\":{\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#MathMLGlobalAttrs\"],\"attributes\":{}},\"svg:a\":{\"categories\":[],\"contentModel\":{\"conditional\":[{\"condition\":\"svg|switch > svg|a\",\"contents\":[{\"transparent\":\":not(svg|a, :has(svg|a))\"}]}],\"contents\":[{\"transparent\":\":not(svg|a, :has(svg|a))\"}]},\"aria\":{\"implicitRole\":\"group\",\"permittedRoles\":\"any\",\"conditions\":{\"[href], [xlink|href]\":{\"implicitRole\":\"link\"}}},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#HTMLLinkAndFetchingAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\",\"#XLinkAttrs\"],\"attributes\":{\"download\":{},\"href\":{},\"hreflang\":{},\"interestfor\":{\"type\":\"DOMID\",\"nonStandard\":true,\"experimental\":true},\"ping\":{\"experimental\":true},\"referrerpolicy\":{},\"rel\":{},\"target\":{},\"type\":{},\"xlink:href\":{\"deprecated\":true}}},\"svg:animate\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|script\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#GlobalEventAttrs\",\"#SVGAnimationAdditionAttrs\",\"#SVGAnimationAttributeTargetAttrs\",\"#SVGAnimationEventAttrs\",\"#SVGAnimationTargetElementAttrs\",\"#SVGAnimationTimingAttrs\",\"#SVGAnimationValueAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{}},\"svg:animateMotion\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"choice\":[[{\"oneOrMore\":[\":model(SVGDescriptive)\",\"svg|script\"]},{\"optional\":\"svg|mpath\"}],[{\"optional\":\"svg|mpath\"},{\"oneOrMore\":[\":model(SVGDescriptive)\",\"svg|script\"]}]]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#GlobalEventAttrs\",\"#SVGAnimationAdditionAttrs\",\"#SVGAnimationEventAttrs\",\"#SVGAnimationTargetElementAttrs\",\"#SVGAnimationTimingAttrs\",\"#SVGAnimationValueAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\"],\"attributes\":{\"keyPoints\":{\"type\":\"<key-points>\"},\"origin\":{\"type\":\"<origin>\"},\"path\":{\"type\":\"<svg-path>\"},\"rotate\":{\"type\":\"<rotate>\"}}},\"svg:animateTransform\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|script\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#GlobalEventAttrs\",\"#SVGAnimationAdditionAttrs\",\"#SVGAnimationAttributeTargetAttrs\",\"#SVGAnimationEventAttrs\",\"#SVGAnimationTargetElementAttrs\",\"#SVGAnimationTimingAttrs\",\"#SVGAnimationValueAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\"],\"attributes\":{\"type\":{\"type\":{\"enum\":[\"translate\",\"scale\",\"rotate\",\"skewX\",\"skewY\"]}}}},\"svg:circle\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\":model(SVGPaintServer)\",\"svg|clipPath\",\"svg|marker\",\"svg|mask\",\"svg|script\",\"svg|style\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"cx\":{},\"cy\":{},\"pathLength\":{\"type\":\"<number>\"},\"r\":{}}},\"svg:clipPath\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\":model(SVGShape)\",\"svg|text\",\"svg|use\",\"svg|script\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"clipPathUnits\":{\"type\":{\"enum\":[\"userSpaceOnUse\",\"objectBoundingBox\"],\"disallowToSurroundBySpaces\":false}},\"externalResourcesRequired\":{\"type\":{\"enum\":[\"true\",\"false\"]}}}},\"svg:defs\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\":model(SVGPaintServer)\",\":model(SVGShape)\",\":model(SVGStructural)\",\"svg|a\",\"svg|clipPath\",\"svg|filter\",\"svg|foreignObject\",\"svg|image\",\"svg|marker\",\"svg|mask\",\"svg|script\",\"svg|style\",\"svg|switch\",\"svg|text\",\"svg|view\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#GlobalEventAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{}},\"svg:desc\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"require\":[\":model(SVGDescriptive)\",\":model(SVGNeverRendered)\",\"#text\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#GlobalEventAttrs\",\"#SVGCoreAttrs\"],\"attributes\":{}},\"svg:discard\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"require\":[\":model(SVGDescriptive)\",\"svg|script\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\"],\"attributes\":{\"begin\":{\"type\":\"<begin-value-list>\"},\"href\":{\"type\":\"URL\"}}},\"svg:ellipse\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\":model(SVGPaintServer)\",\"svg|clipPath\",\"svg|marker\",\"svg|mask\",\"svg|script\",\"svg|style\"]}]},\"aria\":{\"implicitRole\":\"graphics-symbol\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"cx\":{},\"cy\":{},\"pathLength\":{\"type\":\"<number>\"},\"rx\":{},\"ry\":{}}},\"svg:feBlend\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"in2\":{\"type\":[{\"enum\":[\"SourceGraphic\",\"SourceAlpha\",\"BackgroundImage\",\"BackgroundAlpha\",\"FillPaint\",\"StrokePaint\"],\"disallowToSurroundBySpaces\":false},\"<custom-ident>\"]},\"mode\":{\"type\":\"<blend-mode>\"}}},\"svg:feColorMatrix\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"type\":{\"type\":{\"enum\":[\"matrix\",\"saturate\",\"hueRotate\",\"luminanceToAlpha\"],\"disallowToSurroundBySpaces\":false}},\"values\":{\"type\":\"<color-matrix>\"}}},\"svg:feComponentTransfer\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|feFuncA\",\"svg|feFuncR\",\"svg|feFuncB\",\"svg|feFuncG\",\"svg|script\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{}},\"svg:feComposite\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"in2\":{\"type\":[{\"enum\":[\"SourceGraphic\",\"SourceAlpha\",\"BackgroundImage\",\"BackgroundAlpha\",\"FillPaint\",\"StrokePaint\"],\"disallowToSurroundBySpaces\":false},\"<custom-ident>\"]},\"k1\":{\"type\":\"<number>\",\"ineffective\":\":not([operator='arithmetic' i])\"},\"k2\":{\"type\":\"<number>\",\"ineffective\":\":not([operator='arithmetic' i])\"},\"k3\":{\"type\":\"<number>\",\"ineffective\":\":not([operator='arithmetic' i])\"},\"k4\":{\"type\":\"<number>\",\"ineffective\":\":not([operator='arithmetic' i])\"},\"operator\":{\"type\":{\"enum\":[\"over\",\"in\",\"out\",\"atop\",\"xor\",\"lighter\",\"arithmetic\"],\"disallowToSurroundBySpaces\":false}}}},\"svg:feConvolveMatrix\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"bias\":{\"type\":\"<number>\"},\"divisor\":{\"type\":\"<number>\"},\"edgeMode\":{\"type\":{\"enum\":[\"duplicate\",\"wrap\",\"none\"],\"disallowToSurroundBySpaces\":false}},\"kernelMatrix\":{\"type\":\"<list-of-numbers>\"},\"kernelUnitLength\":{\"type\":\"<number-optional-number>\",\"deprecated\":true},\"order\":{\"type\":\"<number-optional-number>\"},\"preserveAlpha\":{\"type\":{\"enum\":[\"true\",\"false\"],\"disallowToSurroundBySpaces\":false}},\"targetX\":{\"type\":\"<integer>\"},\"targetY\":{\"type\":\"<integer>\"}}},\"svg:feDiffuseLighting\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"choice\":[[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|script\"]},{\"require\":\":model(SVGLightSource)\"}],[{\"require\":\":model(SVGLightSource)\"},{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|script\"]}]]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"diffuseConstant\":{\"type\":\"<number>\"},\"kernelUnitLength\":{\"type\":\"<number-optional-number>\",\"deprecated\":true},\"surfaceScale\":{\"type\":\"<number>\"}}},\"svg:feDisplacementMap\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"in2\":{\"type\":[{\"enum\":[\"SourceGraphic\",\"SourceAlpha\",\"BackgroundImage\",\"BackgroundAlpha\",\"FillPaint\",\"StrokePaint\"],\"disallowToSurroundBySpaces\":false},\"<custom-ident>\"]},\"scale\":{\"type\":\"<number>\"},\"xChannelSelector\":{\"type\":{\"enum\":[\"R\",\"G\",\"B\",\"A\"],\"disallowToSurroundBySpaces\":false}},\"yChannelSelector\":{\"type\":{\"enum\":[\"R\",\"G\",\"B\",\"A\"],\"disallowToSurroundBySpaces\":false}}}},\"svg:feDistantLight\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\"],\"attributes\":{\"azimuth\":{\"type\":\"<number>\"},\"elevation\":{\"type\":\"<number>\"}}},\"svg:feDropShadow\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"dx\":{\"type\":\"<number>\"},\"dy\":{\"type\":\"<number>\"},\"stdDeviation\":{\"type\":\"<number-optional-number>\"}}},\"svg:feFlood\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"flood-color\":{\"type\":\"<color>\"},\"flood-opacity\":{\"type\":\"<alpha-value>\"}}},\"svg:feFuncA\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGTransferFunctionAttrs\"],\"attributes\":{}},\"svg:feFuncB\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGTransferFunctionAttrs\"],\"attributes\":{}},\"svg:feFuncG\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGTransferFunctionAttrs\"],\"attributes\":{}},\"svg:feFuncR\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGTransferFunctionAttrs\"],\"attributes\":{}},\"svg:feGaussianBlur\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"edgeMode\":{\"type\":{\"enum\":[\"duplicate\",\"wrap\",\"none\"],\"disallowToSurroundBySpaces\":false}},\"stdDeviation\":{\"type\":\"<number-optional-number>\"}}},\"svg:feImage\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|animateTransform\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"crossorigin\":{\"type\":{\"enum\":[\"anonymous\",\"use-credentials\"],\"disallowToSurroundBySpaces\":false}},\"externalResourcesRequired\":{\"type\":{\"enum\":[\"true\",\"false\"],\"disallowToSurroundBySpaces\":false}},\"href\":{\"type\":\"URL\"},\"preserveAspectRatio\":{\"type\":\"<preserve-aspect-ratio>\"},\"xlink:href\":{\"type\":\"URL\",\"deprecated\":true}}},\"svg:feMerge\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|feMergeNode\",\"svg|script\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{}},\"svg:feMergeNode\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\"],\"attributes\":{}},\"svg:feMorphology\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"operator\":{\"type\":{\"enum\":[\"erode\",\"dilate\"],\"disallowToSurroundBySpaces\":false}},\"radius\":{\"type\":\"<number-optional-number>\"}}},\"svg:feOffset\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"dx\":{\"type\":\"<number>\"},\"dy\":{\"type\":\"<number>\"}}},\"svg:fePointLight\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\"],\"attributes\":{\"x\":{\"type\":\"<number>\"},\"y\":{\"type\":\"<number>\"},\"z\":{\"type\":\"<number>\"}}},\"svg:feSpecularLighting\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"choice\":[[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|script\"]},{\"require\":\":model(SVGLightSource)\"}],[{\"require\":\":model(SVGLightSource)\"},{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|script\"]}]]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"kernelUnitLength\":{\"type\":\"<number-optional-number>\"},\"specularConstant\":{\"type\":\"<number>\"},\"specularExponent\":{\"type\":\"<number>\"},\"surfaceScale\":{\"type\":\"<number>\"}}},\"svg:feSpotLight\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\"],\"attributes\":{\"limitingConeAngle\":{\"type\":\"<number>\"},\"pointsAtX\":{\"type\":\"<number>\"},\"pointsAtY\":{\"type\":\"<number>\"},\"pointsAtZ\":{\"type\":\"<number>\"},\"specularExponent\":{\"type\":\"<number>\"},\"x\":{\"type\":\"<number>\"},\"y\":{\"type\":\"<number>\"},\"z\":{\"type\":\"<number>\"}}},\"svg:feTile\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{}},\"svg:feTurbulence\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"baseFrequency\":{\"type\":\"<number-optional-number>\"},\"numOctaves\":{\"type\":\"<integer>\"},\"seed\":{\"type\":\"<number>\"},\"stitchTiles\":{\"type\":{\"enum\":[\"noStitch\",\"stitch\"]}},\"type\":{\"type\":{\"enum\":[\"fractalNoise\",\"turbulence\"]}}}},\"svg:filter\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\":model(SVGFilterPrimitive)\",\"svg|animate\",\"svg|script\",\"svg|set\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"externalResourcesRequired\":{\"type\":{\"enum\":[\"true\",\"false\"],\"disallowToSurroundBySpaces\":false}},\"filterRes\":{\"type\":\"<number-optional-number>\",\"deprecated\":true},\"filterUnits\":{\"type\":{\"enum\":[\"userSpaceOnUse\",\"objectBoundingBox\"],\"disallowToSurroundBySpaces\":false}},\"height\":{},\"primitiveUnits\":{\"type\":{\"enum\":[\"userSpaceOnUse\",\"objectBoundingBox\"]}},\"width\":{},\"x\":{},\"y\":{}}},\"svg:foreignObject\":{\"categories\":[],\"contentModel\":{\"contents\":true},\"aria\":{\"implicitRole\":\"group\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"height\":{},\"width\":{},\"x\":{},\"y\":{}}},\"svg:g\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\":model(SVGPaintServer)\",\":model(SVGShape)\",\":model(SVGStructural)\",\"svg|a\",\"svg|clipPath\",\"svg|filter\",\"svg|foreignObject\",\"svg|image\",\"svg|marker\",\"svg|mask\",\"svg|script\",\"svg|style\",\"svg|switch\",\"svg|text\",\"svg|view\"]}]},\"aria\":{\"implicitRole\":\"group\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{}},\"svg:image\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\"svg|clipPath\",\"svg|mask\",\"svg|script\",\"svg|style\"]}]},\"aria\":{\"implicitRole\":\"img\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\",\"#XLinkAttrs\"],\"attributes\":{\"crossorigin\":{\"type\":{\"enum\":[\"\",\"anonymous\",\"use-credentials\"],\"sameStates\":{\"anonymous\":[\"\"]}}},\"decoding\":{},\"fetchpriority\":{\"nonStandard\":true,\"experimental\":true},\"height\":{},\"href\":{\"type\":\"URL\"},\"preserveAspectRatio\":{\"type\":\"<preserve-aspect-ratio>\"},\"width\":{},\"x\":{},\"xlink:href\":{\"deprecated\":true},\"y\":{}}},\"svg:line\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\":model(SVGPaintServer)\",\"svg|clipPath\",\"svg|marker\",\"svg|mask\",\"svg|script\",\"svg|style\"]}]},\"aria\":{\"implicitRole\":\"graphics-symbol\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"pathLength\":{\"type\":\"<number>\"},\"x1\":{\"type\":[\"<svg-length>\",\"<percentage>\",\"<number>\"]},\"x2\":{\"type\":[\"<svg-length>\",\"<percentage>\",\"<number>\"]},\"y1\":{\"type\":[\"<svg-length>\",\"<percentage>\",\"<number>\"]},\"y2\":{\"type\":[\"<svg-length>\",\"<percentage>\",\"<number>\"]}}},\"svg:linearGradient\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|animateTransform\",\"svg|script\",\"svg|set\",\"svg|stop\",\"svg|style\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#GlobalEventAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\",\"#XLinkAttrs\"],\"attributes\":{\"gradientTransform\":{\"type\":\"<transform-list>\"},\"gradientUnits\":{\"type\":{\"enum\":[\"userSpaceOnUse\",\"objectBoundingBox\"],\"disallowToSurroundBySpaces\":false}},\"href\":{\"type\":\"URL\"},\"spreadMethod\":{\"type\":{\"enum\":[\"pad\",\"reflect\",\"repeat\"],\"disallowToSurroundBySpaces\":false}},\"x1\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"x2\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"xlink:href\":{\"deprecated\":true},\"y1\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"y2\":{\"type\":[\"<svg-length>\",\"<percentage>\"]}}},\"svg:marker\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\":model(SVGPaintServer)\",\":model(SVGShape)\",\":model(SVGStructural)\",\"svg|a\",\"svg|clipPath\",\"svg|filter\",\"svg|foreignObject\",\"svg|image\",\"svg|marker\",\"svg|mask\",\"svg|script\",\"svg|style\",\"svg|switch\",\"svg|text\",\"svg|view\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#GlobalEventAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"markerHeight\":{\"type\":[\"<svg-length>\",\"<percentage>\",\"<number>\"]},\"markerUnits\":{\"type\":{\"enum\":[\"userSpaceOnUse\",\"strokeWidth\"],\"disallowToSurroundBySpaces\":false}},\"markerWidth\":{\"type\":[\"<svg-length>\",\"<percentage>\",\"<number>\"]},\"orient\":{\"type\":[{\"enum\":[\"auto\",\"auto-start-reverse\"],\"disallowToSurroundBySpaces\":false},\"<angle>\",\"<number>\"]},\"preserveAspectRatio\":{\"type\":\"<preserve-aspect-ratio>\"},\"refX\":{\"type\":[\"<percentage>\",\"<number>\",{\"enum\":[\"left\",\"center\",\"right\"],\"disallowToSurroundBySpaces\":false}]},\"refY\":{\"type\":[\"<percentage>\",\"<number>\",{\"enum\":[\"left\",\"center\",\"right\"],\"disallowToSurroundBySpaces\":false}]},\"viewBox\":{\"type\":\"<view-box>\"}}},\"svg:mask\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\":model(SVGShape)\",\":model(SVGStructural)\",\":model(SVGGradient)\",\"svg|a\",\"svg|altGlyphDef\",\"svg|clipPath\",\"svg|color-profile\",\"svg|cursor\",\"svg|filter\",\"svg|font\",\"svg|font-face\",\"svg|foreignObject\",\"svg|image\",\"svg|marker\",\"svg|mask\",\"svg|pattern\",\"svg|script\",\"svg|style\",\"svg|switch\",\"svg|text\",\"svg|view\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGFilterPrimitiveAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"height\":{},\"mask-type\":{},\"maskContentUnits\":{\"type\":{\"enum\":[\"userSpaceOnUse\",\"objectBoundingBox\"]}},\"maskUnits\":{\"type\":{\"enum\":[\"userSpaceOnUse\",\"objectBoundingBox\"],\"disallowToSurroundBySpaces\":false}},\"width\":{},\"x\":{},\"y\":{}}},\"svg:metadata\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\":model(SVGNeverRendered)\",\"#text\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#GlobalEventAttrs\",\"#SVGCoreAttrs\"],\"attributes\":{}},\"svg:mpath\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|script\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#GlobalEventAttrs\",\"#SVGCoreAttrs\"],\"attributes\":{\"href\":{\"type\":\"URL\"}}},\"svg:path\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\":model(SVGPaintServer)\",\"svg|clipPath\",\"svg|marker\",\"svg|mask\",\"svg|script\",\"svg|style\"]}]},\"aria\":{\"implicitRole\":\"graphics-symbol\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\",\"#XLinkAttrs\"],\"attributes\":{\"d\":{},\"pathLength\":{\"type\":\"<number>\"}}},\"svg:pattern\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\":model(SVGPaintServer)\",\":model(SVGShape)\",\":model(SVGStructural)\",\"svg|a\",\"svg|clipPath\",\"svg|filter\",\"svg|foreignObject\",\"svg|image\",\"svg|marker\",\"svg|mask\",\"svg|script\",\"svg|style\",\"svg|switch\",\"svg|text\",\"svg|view\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#GlobalEventAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\",\"#XLinkAttrs\"],\"attributes\":{\"height\":{},\"href\":{\"type\":\"URL\"},\"patternContentUnits\":{\"type\":{\"enum\":[\"userSpaceOnUse\",\"objectBoundingBox\"],\"disallowToSurroundBySpaces\":false}},\"patternTransform\":{\"type\":\"<transform-list>\"},\"patternUnits\":{\"type\":{\"enum\":[\"userSpaceOnUse\",\"objectBoundingBox\"],\"disallowToSurroundBySpaces\":false}},\"preserveAspectRatio\":{\"type\":\"<preserve-aspect-ratio>\"},\"viewBox\":{\"type\":\"<view-box>\"},\"width\":{},\"x\":{},\"xlink:href\":{\"deprecated\":true},\"y\":{}}},\"svg:polygon\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\":model(SVGPaintServer)\",\"svg|clipPath\",\"svg|marker\",\"svg|mask\",\"svg|script\",\"svg|style\"]}]},\"aria\":{\"implicitRole\":\"graphics-symbol\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"pathLength\":{\"type\":\"<number>\"},\"points\":{\"type\":\"<points>\"}}},\"svg:polyline\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\":model(SVGPaintServer)\",\"svg|clipPath\",\"svg|marker\",\"svg|mask\",\"svg|script\",\"svg|style\"]}]},\"aria\":{\"implicitRole\":\"graphics-symbol\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"pathLength\":{\"type\":\"<number>\"},\"points\":{\"type\":\"<points>\"}}},\"svg:radialGradient\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|animate\",\"svg|animateTransform\",\"svg|script\",\"svg|set\",\"svg|stop\",\"svg|style\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#GlobalEventAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\",\"#XLinkAttrs\"],\"attributes\":{\"cx\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"cy\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"fr\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"fx\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"fy\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"gradientTransform\":{\"type\":\"<transform-list>\"},\"gradientUnits\":{\"type\":{\"enum\":[\"userSpaceOnUse\",\"objectBoundingBox\"],\"disallowToSurroundBySpaces\":false}},\"href\":{\"type\":\"URL\"},\"r\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"spreadMethod\":{\"type\":{\"enum\":[\"pad\",\"reflect\",\"repeat\"],\"disallowToSurroundBySpaces\":false}},\"xlink:href\":{\"deprecated\":true}}},\"svg:rect\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\":model(SVGPaintServer)\",\"svg|clipPath\",\"svg|marker\",\"svg|mask\",\"svg|script\",\"svg|style\"]}]},\"aria\":{\"implicitRole\":\"graphics-symbol\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"height\":{},\"pathLength\":{\"type\":\"<number>\"},\"rx\":{},\"ry\":{},\"width\":{},\"x\":{},\"y\":{}}},\"svg:script\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGNeverRendered)\",\":model(SVGStructurallyExternal)\",\"#text\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#GlobalEventAttrs\",\"#SVGCoreAttrs\",\"#XLinkAttrs\"],\"attributes\":{\"async\":{\"type\":\"Boolean\",\"experimental\":true},\"crossorigin\":{\"type\":{\"enum\":[\"anonymous\",\"use-credentials\",\"\"],\"disallowToSurroundBySpaces\":false}},\"defer\":{\"type\":\"Boolean\",\"experimental\":true},\"fetchpriority\":{\"nonStandard\":true,\"experimental\":true},\"href\":{\"type\":\"URL\"},\"type\":{\"type\":\"MIMEType\"},\"xlink:href\":{\"deprecated\":true}}},\"svg:set\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\"svg|script\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#GlobalEventAttrs\",\"#SVGAnimationAttributeTargetAttrs\",\"#SVGAnimationEventAttrs\",\"#SVGAnimationTargetElementAttrs\",\"#SVGAnimationTimingAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\"],\"attributes\":{\"to\":{\"type\":\"NoEmptyAny\"}}},\"svg:stop\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\"svg:animate\",\"svg|animateColor\",\"svg|script\",\"svg|set\",\"svg|style\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#GlobalEventAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"offset\":{\"type\":[\"<number>\",\"<percentage>\"]},\"stop-color\":{\"type\":\"<color>\"},\"stop-opacity\":{\"type\":\"<'opacity'>\"}}},\"svg:style\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":\"#text\"}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#GlobalEventAttrs\",\"#SVGCoreAttrs\"],\"attributes\":{\"media\":{\"type\":\"MediaQueryList\"},\"title\":{\"type\":\"Any\"},\"type\":{\"type\":\"MIMEType\"}}},\"svg:svg\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\":model(SVGPaintServer)\",\":model(SVGShape)\",\":model(SVGStructural)\",\"svg|a\",\"svg|clipPath\",\"svg|filter\",\"svg|foreignObject\",\"svg|image\",\"svg|marker\",\"svg|mask\",\"svg|script\",\"svg|style\",\"svg|switch\",\"svg|text\",\"svg|view\"]}]},\"aria\":{\"implicitRole\":\"graphics-document\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"baseProfile\":{\"type\":\"Any\",\"deprecated\":true},\"contentScriptType\":{\"type\":\"Any\",\"deprecated\":true},\"contentStyleType\":{\"type\":\"Any\",\"deprecated\":true},\"height\":{},\"onunload\":{\"type\":\"FunctionBody\"},\"preserveAspectRatio\":{\"type\":\"<preserve-aspect-ratio>\"},\"version\":{\"type\":\"Any\",\"deprecated\":true},\"viewBox\":{\"type\":\"<view-box>\"},\"width\":{},\"x\":{},\"y\":{}}},\"svg:switch\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGShape)\",\"svg|a\",\"svg|foreignObject\",\"svg|g\",\"svg|image\",\"svg|svg\",\"svg|switch\",\"svg|text\",\"svg|use\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"requiredExtensions\":{},\"systemLanguage\":{}}},\"svg:symbol\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\":model(SVGPaintServer)\",\":model(SVGShape)\",\":model(SVGStructural)\",\"svg|a\",\"svg|clipPath\",\"svg|filter\",\"svg|foreignObject\",\"svg|image\",\"svg|marker\",\"svg|mask\",\"svg|script\",\"svg|style\",\"svg|switch\",\"svg|text\",\"svg|view\"]}]},\"aria\":{\"implicitRole\":\"graphics-object\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"height\":{},\"preserveAspectRatio\":{\"type\":\"<preserve-aspect-ratio>\"},\"refX\":{\"type\":[\"<svg-length>\",\"<percentage>\",\"<number>\",{\"enum\":[\"left\",\"center\",\"right\"]}]},\"refY\":{\"type\":[\"<svg-length>\",\"<percentage>\",\"<number>\",{\"enum\":[\"top\",\"center\",\"bottom\"]}]},\"viewBox\":{\"type\":\"<view-box>\"},\"width\":{},\"x\":{},\"y\":{}}},\"svg:text\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\"#text\",\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\":model(SVGPaintServer)\",\":model(SVGTextContentChild)\",\"svg|a\",\"svg|clipPath\",\"svg|marker\",\"svg|mask\",\"svg|script\",\"svg|style\"]}]},\"aria\":{\"implicitRole\":\"group\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"dx\":{\"type\":\"<text-coordinate>\"},\"dy\":{\"type\":\"<text-coordinate>\"},\"lengthAdjust\":{\"type\":{\"enum\":[\"spacing\",\"spacingAndGlyphs\"],\"disallowToSurroundBySpaces\":false}},\"rotate\":{\"type\":\"<list-of-numbers>\"},\"textLength\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"x\":{\"type\":\"<text-coordinate>\"},\"y\":{\"type\":\"<text-coordinate>\"}}},\"svg:textPath\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\"#text\",\":model(SVGDescriptive)\",\":model(SVGPaintServer)\",\"svg|a\",\"svg|animate\",\"svg|clipPath\",\"svg|marker\",\"svg|mask\",\"svg|script\",\"svg|set\",\"svg|style\",\"svg|tspan\"]}]},\"aria\":{\"implicitRole\":\"group\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\",\"#XLinkAttrs\"],\"attributes\":{\"href\":{\"type\":\"URL\"},\"lengthAdjust\":{\"type\":{\"enum\":[\"spacing\",\"spacingAndGlyphs\"],\"disallowToSurroundBySpaces\":false}},\"method\":{\"type\":{\"enum\":[\"align\",\"stretch\"],\"disallowToSurroundBySpaces\":false}},\"path\":{\"type\":\"<svg-path>\",\"experimental\":true},\"side\":{\"type\":{\"enum\":[\"left\",\"right\"],\"disallowToSurroundBySpaces\":false},\"experimental\":true},\"spacing\":{\"type\":{\"enum\":[\"auto\",\"exact\"],\"disallowToSurroundBySpaces\":false}},\"startOffset\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"textLength\":{\"type\":[\"<svg-length>\",\"<percentage>\"]}}},\"svg:title\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGDescriptive)\",\":model(SVGNeverRendered)\",\"#text\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#GlobalEventAttrs\",\"#SVGCoreAttrs\"],\"attributes\":{}},\"svg:tspan\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\"#text\",\":model(SVGDescriptive)\",\":model(SVGPaintServer)\",\"svg|a\",\"svg|animate\",\"svg|script\",\"svg|set\",\"svg|style\",\"svg|tspan\"]}]},\"aria\":{\"implicitRole\":\"group\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\"],\"attributes\":{\"dx\":{\"type\":\"<text-coordinate>\"},\"dy\":{\"type\":\"<text-coordinate>\"},\"lengthAdjust\":{\"type\":{\"enum\":[\"spacing\",\"spacingAndGlyphs\"],\"disallowToSurroundBySpaces\":false}},\"rotate\":{\"type\":\"<list-of-numbers>\"},\"textLength\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"x\":{\"type\":\"<text-coordinate>\"},\"y\":{\"type\":\"<text-coordinate>\"}}},\"svg:use\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\"svg|clipPath\",\"svg|mask\",\"svg|script\",\"svg|style\"]}]},\"aria\":{\"implicitRole\":\"graphics-object\",\"permittedRoles\":\"any\"},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGConditionalProcessingAttrs\",\"#SVGCoreAttrs\",\"#SVGPresentationAttrs\",\"#XLinkAttrs\"],\"attributes\":{\"height\":{},\"href\":{\"type\":\"URL\"},\"width\":{},\"x\":{},\"xlink:href\":{\"deprecated\":true},\"y\":{}}},\"svg:view\":{\"categories\":[],\"contentModel\":{\"contents\":[{\"zeroOrMore\":[\":model(SVGAnimation)\",\":model(SVGDescriptive)\",\"svg|script\",\"svg|style\"]}]},\"aria\":{\"permittedRoles\":[]},\"globalAttrs\":[\"#ARIAAttrs\",\"#GlobalEventAttrs\",\"#HTMLGlobalAttrs\",\"#SVGCoreAttrs\"],\"attributes\":{\"preserveAspectRatio\":{\"type\":\"<preserve-aspect-ratio>\"},\"viewBox\":{\"type\":\"<view-box>\"},\"viewTarget\":{\"type\":\"Any\",\"deprecated\":true},\"zoomAndPan\":{\"type\":{\"enum\":[\"disable\",\"magnify\"]},\"deprecated\":true}}}},\"contentModels\":{\"#metadata\":[\"base\",\"link\",\"meta\",\"noscript\",\"script\",\"style\",\"template\",\"title\"],\"#flow\":[\"a\",\"abbr\",\"address\",\"area\",\"article\",\"aside\",\"audio\",\"b\",\"bdi\",\"bdo\",\"blockquote\",\"br\",\"button\",\"canvas\",\"cite\",\"code\",\"data\",\"datalist\",\"del\",\"details\",\"dfn\",\"dialog\",\"div\",\"dl\",\"em\",\"embed\",\"fieldset\",\"figure\",\"footer\",\"form\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"header\",\"hgroup\",\"hr\",\"i\",\"iframe\",\"img\",\"input\",\"ins\",\"kbd\",\"label\",\"link[itemprop]\",\"link[rel=dns-prefetch]\",\"link[rel=modulepreload]\",\"link[rel=pingback]\",\"link[rel=preconnect]\",\"link[rel=prefetch]\",\"link[rel=preload]\",\"link[rel=prerender]\",\"link[rel=stylesheet]\",\"main\",\"map\",\"mark\",\"math\",\"menu\",\"meta[itemprop]\",\"meter\",\"nav\",\"noscript\",\"object\",\"ol\",\"output\",\"p\",\"picture\",\"pre\",\"progress\",\"q\",\"ruby\",\"s\",\"samp\",\"script\",\"search\",\"section\",\"select\",\"slot\",\"small\",\"span\",\"strong\",\"sub\",\"sup\",\"svg|svg\",\"table\",\"template\",\"textarea\",\"time\",\"u\",\"ul\",\"var\",\"video\",\"wbr\",\"#custom\",\"#text\"],\"#sectioning\":[\"article\",\"aside\",\"nav\",\"section\"],\"#heading\":[\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"hgroup:has(h1,h2,h3,h4,h5,h6)\"],\"#phrasing\":[\"a\",\"abbr\",\"area\",\"audio\",\"b\",\"bdi\",\"bdo\",\"br\",\"button\",\"canvas\",\"cite\",\"code\",\"data\",\"datalist\",\"del\",\"dfn\",\"em\",\"embed\",\"i\",\"iframe\",\"img\",\"input\",\"ins\",\"kbd\",\"label\",\"link[itemprop]\",\"link[rel=dns-prefetch]\",\"link[rel=modulepreload]\",\"link[rel=pingback]\",\"link[rel=preconnect]\",\"link[rel=prefetch]\",\"link[rel=preload]\",\"link[rel=prerender]\",\"link[rel=stylesheet]\",\"map\",\"mark\",\"math\",\"meta[itemprop]\",\"meter\",\"noscript\",\"object\",\"output\",\"picture\",\"progress\",\"q\",\"ruby\",\"s\",\"samp\",\"script\",\"select\",\"slot\",\"small\",\"span\",\"strong\",\"sub\",\"sup\",\"svg|svg\",\"template\",\"textarea\",\"time\",\"u\",\"var\",\"video\",\"wbr\",\"#custom\",\"#text\"],\"#embedded\":[\"audio\",\"canvas\",\"embed\",\"iframe\",\"img\",\"math\",\"object\",\"picture\",\"svg|svg\",\"video\"],\"#interactive\":[\"a[href]\",\"audio[controls]\",\"button\",\"details\",\"embed\",\"iframe\",\"img[usemap]\",\"input:not([type='hidden' i])\",\"label\",\"select\",\"textarea\",\"video[controls]\"],\"#palpable\":[\"a\",\"abbr\",\"address\",\"article\",\"aside\",\"audio[controls]\",\"b\",\"bdi\",\"bdo\",\"blockquote\",\"button\",\"canvas\",\"cite\",\"code\",\"data\",\"del\",\"details\",\"dfn\",\"div\",\"dl:has(>:is(dt+dd))\",\"em\",\"embed\",\"fieldset\",\"figure\",\"footer\",\"form\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"header\",\"hgroup\",\"i\",\"iframe\",\"img\",\"input:not([type='hidden' i])\",\"ins\",\"kbd\",\"label\",\"main\",\"map\",\"mark\",\"math\",\"menu:has(>li)\",\"meter\",\"nav\",\"object\",\"ol:has(>li)\",\"output\",\"p\",\"picture\",\"pre\",\"progress\",\"q\",\"ruby\",\"s\",\"samp\",\"search\",\"section\",\"select\",\"small\",\"span\",\"strong\",\"sub\",\"sup \",\"svg\",\"table\",\"textarea\",\"time\",\"u\",\"ul:has(>li)\",\"var\",\"video\",\"#custom\",\"#text\"],\"#script-supporting\":[\"script\",\"template\"],\"#SVGAnimation\":[\"svg|animate\",\"svg|animateColor\",\"svg|animateMotion\",\"svg|animateTransform\",\"svg|discard\",\"svg|mpath\",\"svg|set\"],\"#SVGBasicShapes\":[\"svg|circle\",\"svg|ellipse\",\"svg|line\",\"svg|polygon\",\"svg|polyline\",\"svg|rect\"],\"#SVGContainer\":[\"svg|a\",\"svg|defs\",\"svg|g\",\"svg|marker\",\"svg|mask\",\"svg|missing-glyph\",\"svg|pattern\",\"svg|svg\",\"svg|switch\",\"svg|symbol\"],\"#SVGDescriptive\":[\"svg|desc\",\"svg|metadata\",\"svg|title\"],\"#SVGFilterPrimitive\":[\"svg|feBlend\",\"svg|feColorMatrix\",\"svg|feComponentTransfer\",\"svg|feComposite\",\"svg|feConvolveMatrix\",\"svg|feDiffuseLighting\",\"svg|feDisplacementMap\",\"svg|feDropShadow\",\"svg|feFlood\",\"svg|feFuncA\",\"svg|feFuncB\",\"svg|feFuncG\",\"svg|feFuncR\",\"svg|feGaussianBlur\",\"svg|feImage\",\"svg|feMerge\",\"svg|feMergeNode\",\"svg|feMorphology\",\"svg|feOffset\",\"svg|feSpecularLighting\",\"svg|feTile\",\"svg|feTurbulence\"],\"#SVGFont\":[\"svg|font\",\"svg|font-face\",\"svg|font-face-format\",\"svg|font-face-name\",\"svg|font-face-src\",\"svg|font-face-uri\",\"svg|hkern\",\"svg|vkern\"],\"#SVGGradient\":[\"svg|linearGradient\",\"svg|radialGradient\",\"svg|stop\"],\"#SVGGraphics\":[\"svg|circle\",\"svg|ellipse\",\"svg|image\",\"svg|line\",\"svg|path\",\"svg|polygon\",\"svg|polyline\",\"svg|rect\",\"svg|text\",\"svg|use\"],\"#SVGGraphicsReferencing\":[\"svg|use\"],\"#SVGLightSource\":[\"svg|feDistantLight\",\"svg|fePointLight\",\"svg|feSpotLight\"],\"#SVGNeverRendered\":[\"svg|clipPath\",\"svg|defs\",\"svg|linearGradient\",\"svg|marker\",\"svg|mask\",\"svg|metadata\",\"svg|pattern\",\"svg|radialGradient\",\"svg|script\",\"svg|style\",\"svg|symbol\",\"svg|title\"],\"#SVGPaintServer\":[\"svg|linearGradient\",\"svg|pattern\",\"svg|radialGradient\",\"svg|solidcolor\"],\"#SVGRenderable\":[\"svg|a\",\"svg|circle\",\"svg|ellipse\",\"svg|foreignObject\",\"svg|g\",\"svg|image\",\"svg|line\",\"svg|path\",\"svg|polygon\",\"svg|polyline\",\"svg|rect\",\"svg|svg\",\"svg|switch\",\"svg|symbol\",\"svg|text\",\"svg|textPath\",\"svg|tspan\",\"svg|unknown\",\"svg|use\"],\"#SVGShape\":[\"svg|circle\",\"svg|ellipse\",\"svg|line\",\"svg|path\",\"svg|polygon\",\"svg|polyline\",\"svg|rect\"],\"#SVGStructural\":[\"svg|defs\",\"svg|g\",\"svg|svg\",\"svg|symbol\",\"svg|use\"],\"#SVGStructurallyExternal\":[],\"#SVGTextContent\":[\"svg|altGlyph\",\"svg|altGlyphDef\",\"svg|altGlyphItem\",\"svg|glyph\",\"svg|glyphRef\",\"svg|textPath\",\"svg|text\",\"svg|tref\",\"svg|tspan\"],\"#SVGTextContentChild\":[\"svg|altGlyph\",\"svg|textPath\",\"svg|tref\",\"svg|tspan\"],\"#MathMLPresentation\":[\"mml|merror\",\"mml|mfrac\",\"mml|mi\",\"mml|mmultiscripts\",\"mml|mn\",\"mml|mo\",\"mml|mover\",\"mml|mpadded\",\"mml|mphantom\",\"mml|mroot\",\"mml|mrow\",\"mml|ms\",\"mml|mspace\",\"mml|msqrt\",\"mml|mstyle\",\"mml|msub\",\"mml|msup\",\"mml|msubsup\",\"mml|mtable\",\"mml|mtext\",\"mml|munder\",\"mml|munderover\",\"mml|maction\",\"mml|menclose\",\"mml|mfenced\"],\"#MathMLScript\":[\"mml|msub\",\"mml|msup\",\"mml|msubsup\",\"mml|mmultiscripts\"],\"#MathMLTabular\":[\"mml|mtable\",\"mml|mtr\",\"mml|mtd\"]},\"globalAttrs\":{\"#HTMLGlobalAttrs\":{\"accesskey\":{\"type\":{\"token\":\"OneCodePointChar\",\"ordered\":true,\"unique\":true,\"number\":\"zeroOrMore\",\"separator\":\"space\"}},\"autocapitalize\":{\"type\":{\"enum\":[\"off\",\"on\",\"none\",\"sentences\",\"words\",\"characters\"],\"disallowToSurroundBySpaces\":true,\"invalidValueDefault\":\"sentences\",\"missingValueDefault\":\"default\",\"sameStates\":{\"none\":[\"off\"],\"sentences\":[\"on\"]}}},\"autocorrect\":{\"type\":{\"enum\":[\"\",\"on\",\"off\"],\"disallowToSurroundBySpaces\":true,\"invalidValueDefault\":\"on\",\"missingValueDefault\":\"on\",\"sameStates\":{\"on\":[\"\"]}}},\"autofocus\":{\"type\":\"Boolean\"},\"contenteditable\":{\"type\":{\"enum\":[\"\",\"true\",\"false\",\"plaintext-only\"],\"disallowToSurroundBySpaces\":true,\"invalidValueDefault\":\"inherit\",\"missingValueDefault\":\"inherit\",\"sameStates\":{\"true\":[\"\"]}}},\"dir\":{\"type\":{\"enum\":[\"ltr\",\"rtl\",\"auto\"]}},\"draggable\":{\"type\":{\"enum\":[\"true\",\"false\"],\"invalidValueDefault\":\"auto\",\"missingValueDefault\":\"auto\"}},\"enterkeyhint\":{\"type\":{\"enum\":[\"enter\",\"done\",\"go\",\"next\",\"previous\",\"search\",\"send\"]}},\"focusgroup\":{\"type\":{\"token\":{\"enum\":[\"toolbar\",\"tablist\",\"radiogroup\",\"listbox\",\"menu\",\"menubar\",\"none\",\"inline\",\"block\",\"wrap\",\"nowrap\",\"nomemory\"]},\"separator\":\"space\",\"unique\":true,\"caseInsensitive\":true},\"experimental\":true},\"focusgroupstart\":{\"type\":\"Boolean\",\"experimental\":true},\"headingoffset\":{\"type\":{\"type\":\"integer\",\"gte\":0,\"lte\":8}},\"headingreset\":{\"type\":\"Boolean\"},\"hidden\":{\"type\":{\"enum\":[\"\",\"hidden\",\"until-found\"]}},\"inert\":{\"type\":\"Boolean\"},\"inputmode\":{\"type\":{\"enum\":[\"none\",\"text\",\"tel\",\"url\",\"email\",\"numeric\",\"decimal\",\"search\"]}},\"is\":{\"type\":\"CustomElementName\"},\"itemid\":{\"type\":\"URL\",\"condition\":\"[itemscope][itemtype]\"},\"itemprop\":{\"type\":{\"token\":\"ItemProp\",\"ordered\":false,\"unique\":true,\"separator\":\"space\"}},\"itemref\":{\"type\":{\"token\":\"DOMID\",\"unique\":true,\"separator\":\"space\"},\"condition\":\"[itemscope]\"},\"itemscope\":{\"type\":\"Boolean\"},\"itemtype\":{\"type\":{\"token\":\"AbsoluteURL\",\"ordered\":false,\"unique\":true,\"allowEmpty\":false,\"separator\":\"space\"},\"condition\":\"[itemscope]\"},\"lang\":{\"type\":\"BCP47\"},\"nonce\":{\"type\":\"Any\"},\"popover\":{\"type\":{\"enum\":[\"\",\"auto\",\"manual\",\"hint\"],\"disallowToSurroundBySpaces\":true,\"invalidValueDefault\":\"manual\",\"missingValueDefault\":\"no popover\",\"sameStates\":{\"auto\":[\"\"]}}},\"spellcheck\":{\"type\":{\"enum\":[\"\",\"true\",\"false\"],\"disallowToSurroundBySpaces\":true,\"invalidValueDefault\":\"default\",\"missingValueDefault\":\"default\",\"sameStates\":{\"true\":[\"\"]}}},\"style\":{\"type\":\"<css-declaration-list>\"},\"tabindex\":{\"type\":\"TabIndex\"},\"title\":{\"type\":\"Any\"},\"translate\":{\"type\":{\"enum\":[\"\",\"yes\",\"no\"],\"disallowToSurroundBySpaces\":true,\"invalidValueDefault\":\"inherit\",\"missingValueDefault\":\"inherit\",\"sameStates\":{\"yes\":[\"\"]}}},\"writingsuggestions\":{\"type\":{\"enum\":[\"\",\"true\",\"false\"],\"disallowToSurroundBySpaces\":true,\"invalidValueDefault\":\"default\",\"missingValueDefault\":\"default\",\"sameStates\":{\"true\":[\"\"]}}},\"class\":{\"type\":\"Any\"},\"id\":{\"type\":\"DOMID\"},\"slot\":{\"type\":\"NoEmptyAny\"},\"xmlns\":{\"type\":\"URL\",\"ineffective\":\"*\"},\"xml:lang\":{\"type\":\"BCP47\",\"deprecated\":true},\"xml:space\":{\"type\":{\"enum\":[\"default\",\"preserve\"]},\"deprecated\":true},\"elementtiming\":{\"type\":\"NoEmptyAny\",\"experimental\":true}},\"#GlobalEventAttrs\":{\"onabort\":{\"type\":\"FunctionBody\"},\"onauxclick\":{\"type\":\"FunctionBody\"},\"onbeforeinput\":{\"type\":\"FunctionBody\"},\"onbeforematch\":{\"type\":\"FunctionBody\"},\"onbeforetoggle\":{\"type\":\"FunctionBody\"},\"onblur\":{\"type\":\"FunctionBody\"},\"oncancel\":{\"type\":\"FunctionBody\"},\"oncanplay\":{\"type\":\"FunctionBody\"},\"oncanplaythrough\":{\"type\":\"FunctionBody\"},\"onchange\":{\"type\":\"FunctionBody\"},\"onclick\":{\"type\":\"FunctionBody\"},\"onclose\":{\"type\":\"FunctionBody\"},\"oncommand\":{\"type\":\"FunctionBody\"},\"oncontextlost\":{\"type\":\"FunctionBody\"},\"oncompositionstart\":{\"type\":\"FunctionBody\"},\"oncompositionupdate\":{\"type\":\"FunctionBody\"},\"oncompositionend\":{\"type\":\"FunctionBody\"},\"oncontextmenu\":{\"type\":\"FunctionBody\"},\"oncontextrestored\":{\"type\":\"FunctionBody\"},\"oncopy\":{\"type\":\"FunctionBody\"},\"oncuechange\":{\"type\":\"FunctionBody\"},\"oncut\":{\"type\":\"FunctionBody\"},\"ondblclick\":{\"type\":\"FunctionBody\"},\"ondrag\":{\"type\":\"FunctionBody\"},\"ondragend\":{\"type\":\"FunctionBody\"},\"ondragenter\":{\"type\":\"FunctionBody\"},\"ondragleave\":{\"type\":\"FunctionBody\"},\"ondragover\":{\"type\":\"FunctionBody\"},\"ondragstart\":{\"type\":\"FunctionBody\"},\"ondrop\":{\"type\":\"FunctionBody\"},\"ondurationchange\":{\"type\":\"FunctionBody\"},\"onemptied\":{\"type\":\"FunctionBody\"},\"onended\":{\"type\":\"FunctionBody\"},\"onerror\":{\"type\":\"FunctionBody\"},\"onfocus\":{\"type\":\"FunctionBody\"},\"onformdata\":{\"type\":\"FunctionBody\"},\"onfocusin\":{\"type\":\"FunctionBody\"},\"onfocusout\":{\"type\":\"FunctionBody\"},\"oninput\":{\"type\":\"FunctionBody\"},\"oninvalid\":{\"type\":\"FunctionBody\"},\"onkeydown\":{\"type\":\"FunctionBody\"},\"onkeypress\":{\"type\":\"FunctionBody\"},\"onkeyup\":{\"type\":\"FunctionBody\"},\"onload\":{\"type\":\"FunctionBody\"},\"onloadeddata\":{\"type\":\"FunctionBody\"},\"onloadedmetadata\":{\"type\":\"FunctionBody\"},\"onloadstart\":{\"type\":\"FunctionBody\"},\"onmousedown\":{\"type\":\"FunctionBody\"},\"onmouseenter\":{\"type\":\"FunctionBody\"},\"onmouseleave\":{\"type\":\"FunctionBody\"},\"onmousemove\":{\"type\":\"FunctionBody\"},\"onmouseout\":{\"type\":\"FunctionBody\"},\"onmouseover\":{\"type\":\"FunctionBody\"},\"onmouseup\":{\"type\":\"FunctionBody\"},\"onpaste\":{\"type\":\"FunctionBody\"},\"onpause\":{\"type\":\"FunctionBody\"},\"onplay\":{\"type\":\"FunctionBody\"},\"onplaying\":{\"type\":\"FunctionBody\"},\"onprogress\":{\"type\":\"FunctionBody\"},\"onratechange\":{\"type\":\"FunctionBody\"},\"onreset\":{\"type\":\"FunctionBody\"},\"onresize\":{\"type\":\"FunctionBody\"},\"onscroll\":{\"type\":\"FunctionBody\"},\"onscrollend\":{\"type\":\"FunctionBody\"},\"onsecuritypolicyviolation\":{\"type\":\"FunctionBody\"},\"onseeked\":{\"type\":\"FunctionBody\"},\"onseeking\":{\"type\":\"FunctionBody\"},\"onselect\":{\"type\":\"FunctionBody\"},\"onslotchange\":{\"type\":\"FunctionBody\"},\"onstalled\":{\"type\":\"FunctionBody\"},\"onsubmit\":{\"type\":\"FunctionBody\"},\"onsuspend\":{\"type\":\"FunctionBody\"},\"ontimeupdate\":{\"type\":\"FunctionBody\"},\"ontoggle\":{\"type\":\"FunctionBody\"},\"onvolumechange\":{\"type\":\"FunctionBody\"},\"onwaiting\":{\"type\":\"FunctionBody\"},\"onunload\":{\"type\":\"FunctionBody\"},\"onwheel\":{\"type\":\"FunctionBody\"},\"onanimationstart\":{\"type\":\"FunctionBody\"},\"onanimationiteration\":{\"type\":\"FunctionBody\"},\"onanimationend\":{\"type\":\"FunctionBody\"},\"onanimationcancel\":{\"type\":\"FunctionBody\"},\"ontransitionrun\":{\"type\":\"FunctionBody\"},\"ontransitionstart\":{\"type\":\"FunctionBody\"},\"ontransitionend\":{\"type\":\"FunctionBody\"},\"ontransitioncancel\":{\"type\":\"FunctionBody\"},\"onwebkitanimationend\":{\"type\":\"FunctionBody\",\"deprecated\":true},\"onwebkitanimationiteration\":{\"type\":\"FunctionBody\",\"deprecated\":true},\"onwebkitanimationstart\":{\"type\":\"FunctionBody\",\"deprecated\":true},\"onwebkittransitionend\":{\"type\":\"FunctionBody\",\"deprecated\":true},\"ontouchstart\":{\"type\":\"FunctionBody\"},\"ontouchend\":{\"type\":\"FunctionBody\"},\"ontouchmove\":{\"type\":\"FunctionBody\"},\"ontouchcancel\":{\"type\":\"FunctionBody\"}},\"#HTMLLinkAndFetchingAttrs\":{\"href\":{\"type\":\"URL\"},\"target\":{\"type\":\"NavigableTargetNameOrKeyword\",\"condition\":\"[href]\"},\"download\":{\"type\":\"Any\",\"condition\":\"[href]\"},\"ping\":{\"type\":{\"token\":\"HTTPSchemaURL\",\"separator\":\"space\"},\"condition\":\"[href]\"},\"rel\":{\"type\":\"LinkTypeForAnchorAndAreaElement\",\"condition\":\"[href]\"},\"hreflang\":{\"type\":\"BCP47\",\"condition\":\"[href]\"},\"type\":{\"type\":\"MIMEType\",\"condition\":\"[href]\"},\"referrerpolicy\":{\"type\":{\"enum\":[\"\",\"no-referrer\",\"no-referrer-when-downgrade\",\"same-origin\",\"origin\",\"strict-origin\",\"origin-when-cross-origin\",\"strict-origin-when-cross-origin\",\"unsafe-url\"]},\"condition\":\"[href], [src]\"},\"loading\":{\"type\":{\"enum\":[\"lazy\",\"eager\"],\"invalidValueDefault\":\"eager\",\"missingValueDefault\":\"eager\"}},\"integrity\":{\"type\":\"SRIHash\"},\"media\":{\"type\":\"MediaQueryList\"},\"crossorigin\":{\"type\":{\"enum\":[\"\",\"anonymous\",\"use-credentials\"],\"invalidValueDefault\":\"anonymous\",\"missingValueDefault\":\"No CORS\",\"sameStates\":{\"anonymous\":[\"\"]}}},\"fetchpriority\":{\"type\":{\"enum\":[\"high\",\"low\",\"auto\"],\"invalidValueDefault\":\"auto\",\"missingValueDefault\":\"auto\"}}},\"#HTMLEmbededAndMediaContentAttrs\":{\"src\":{\"type\":\"NonEmptyURL\"},\"preload\":{\"type\":{\"enum\":[\"none\",\"metadata\",\"auto\"],\"invalidValueDefault\":\"implementation-defined\",\"missingValueDefault\":\"implementation-defined\"}},\"autoplay\":{\"type\":\"Boolean\"},\"loop\":{\"type\":\"Boolean\"},\"muted\":{\"type\":\"Boolean\"},\"controls\":{\"type\":\"Boolean\"},\"height\":{\"type\":\"Uint\"},\"srcset\":{\"type\":\"Srcset\"},\"sizes\":{\"type\":\"SourceSizeList\"},\"width\":{\"type\":\"Uint\"}},\"#HTMLFormControlElementAttrs\":{\"autocomplete\":{\"type\":\"AutoComplete\"},\"dirname\":{\"type\":\"NoEmptyAny\"},\"disabled\":{\"type\":\"Boolean\"},\"form\":{\"type\":\"DOMID\"},\"formaction\":{\"type\":\"NonEmptyURL\"},\"formenctype\":{\"type\":{\"enum\":[\"application/x-www-form-urlencoded\",\"multipart/form-data\",\"text/plain\"],\"invalidValueDefault\":\"application/x-www-form-urlencoded\"}},\"formmethod\":{\"type\":{\"enum\":[\"post\",\"get\",\"dialog\"],\"invalidValueDefault\":\"get\"}},\"formnovalidate\":{\"type\":\"Boolean\"},\"formtarget\":{\"type\":\"NavigableTargetNameOrKeyword\"},\"name\":{\"type\":\"NoEmptyAny\"},\"maxlength\":{\"type\":\"Uint\"},\"minlength\":{\"type\":\"Uint\"},\"readonly\":{\"type\":\"Boolean\"},\"required\":{\"type\":\"Boolean\"}},\"#HTMLTableCellElementAttrs\":{\"colspan\":{\"type\":{\"type\":\"integer\",\"gt\":0,\"lte\":1000}},\"rowspan\":{\"type\":{\"type\":\"integer\",\"gt\":0,\"lte\":65534}},\"headers\":{\"type\":{\"token\":\"DOMID\",\"ordered\":false,\"unique\":true,\"separator\":\"space\"}}},\"#ARIAAttrs\":{\"role\":{\"type\":{\"token\":\"NoEmptyAny\",\"separator\":\"space\"}}},\"#SVGAnimationAdditionAttrs\":{\"additive\":{\"type\":{\"enum\":[\"replace\",\"sum\"]}},\"accumulate\":{\"type\":{\"enum\":[\"none\",\"sum\"]}}},\"#SVGAnimationAttributeTargetAttrs\":{\"attributeName\":{\"type\":\"XMLName\"},\"attributeType\":{\"type\":{\"enum\":[\"CSS\",\"XML\",\"auto\"]},\"noUse\":true}},\"#SVGAnimationEventAttrs\":{\"onbegin\":{\"type\":\"FunctionBody\"},\"onend\":{\"type\":\"FunctionBody\"},\"onrepeat\":{\"type\":\"FunctionBody\"}},\"#SVGAnimationTargetElementAttrs\":{\"href\":{\"type\":\"URL\"},\"xlink:href\":{\"type\":\"URL\",\"deprecated\":true}},\"#SVGAnimationTimingAttrs\":{\"begin\":{\"type\":\"<begin-value-list>\"},\"dur\":{\"type\":[\"<clock-value>\",{\"enum\":[\"media\",\"indefinite\"]}]},\"end\":{\"type\":\"<end-value-list>\"},\"min\":{\"type\":\"<clock-value>\"},\"max\":{\"type\":\"<clock-value>\"},\"restart\":{\"type\":{\"enum\":[\"always\",\"whenNotActive\",\"never\"]}},\"repeatCount\":{\"type\":[\"<number>\",{\"enum\":[\"indefinite\"]}]},\"repeatDur\":{\"type\":[\"<clock-value>\",{\"enum\":[\"indefinite\"]}]},\"fill\":{\"type\":{\"enum\":[\"freeze\",\"remove\"]}}},\"#SVGAnimationValueAttrs\":{\"calcMode\":{\"type\":{\"enum\":[\"discrete\",\"linear\",\"paced\",\"spline\"]}},\"values\":{\"type\":\"<list-of-value>\"},\"keyTimes\":{\"type\":\"<key-times>\"},\"keySplines\":{\"type\":\"<key-splines>\"},\"from\":{\"type\":\"<animatable-value>\"},\"to\":{\"type\":\"<animatable-value>\"},\"by\":{\"type\":\"<animatable-value>\"},\"accelerate\":{\"type\":\"<number-zero-one>\"},\"decelerate\":{\"type\":\"<number-zero-one>\"},\"autoReverse\":{\"type\":{\"enum\":[\"true\",\"false\"]}},\"speed\":{\"type\":\"<number>\"}},\"#SVGConditionalProcessingAttrs\":{\"requiredExtensions\":{\"type\":{\"token\":\"URL\",\"unique\":true,\"separator\":\"space\"}},\"systemLanguage\":{\"type\":{\"token\":\"BCP47\",\"unique\":true,\"separator\":\"comma\"}},\"requiredFeatures\":{\"type\":\"<list-of-svg-feature-string>\",\"deprecated\":true}},\"#SVGCoreAttrs\":{\"id\":{\"type\":\"DOMID\"},\"tabindex\":{\"type\":\"TabIndex\"},\"autofocus\":{\"type\":\"Boolean\"},\"lang\":{\"type\":\"BCP47\"},\"class\":{\"type\":\"Any\"},\"style\":{\"type\":\"<css-declaration-list>\"},\"xmlns\":{\"type\":\"URL\",\"ineffective\":\":not(:root)\"},\"xml:space\":{\"type\":{\"enum\":[\"default\",\"preserve\"]},\"deprecated\":true},\"xml:lang\":{\"type\":\"BCP47\",\"deprecated\":true},\"xml:base\":{\"type\":\"URL\",\"deprecated\":true}},\"#SVGFilterPrimitiveAttrs\":{\"x\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"y\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"width\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"height\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"result\":{\"type\":\"<custom-ident>\"},\"in\":{\"type\":[{\"enum\":[\"SourceGraphic\",\"SourceAlpha\",\"BackgroundImage\",\"BackgroundAlpha\",\"FillPaint\",\"StrokePaint\"],\"disallowToSurroundBySpaces\":false},\"<custom-ident>\"]}},\"#SVGPresentationAttrs\":{\"cx\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"cy\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"height\":{\"type\":[\"<svg-length>\",\"<'height'>\"]},\"width\":{\"type\":[\"<svg-length>\",\"<'width'>\"]},\"x\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"y\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"r\":{\"type\":[\"<svg-length>\",\"<percentage>\"]},\"rx\":{\"type\":[\"<svg-length>\",\"<percentage>\",{\"enum\":[\"auto\"]}]},\"ry\":{\"type\":[\"<svg-length>\",\"<percentage>\",{\"enum\":[\"auto\"]}]},\"d\":{\"type\":\"<svg-path>\"},\"transform\":{\"type\":\"<'transform'>\"},\"transform-origin\":{\"type\":\"<'transform-origin'>\"},\"patternTransform\":{\"type\":\"<transform-list>\"},\"gradientTransform\":{\"type\":\"<transform-list>\"},\"alignment-baseline\":{\"type\":\"<'alignment-baseline'>\"},\"baseline-shift\":{\"type\":\"<'baseline-shift'>\"},\"clip-path\":{\"type\":\"<'clip-path'>\"},\"clip-rule\":{\"type\":\"<'clip-rule'>\"},\"color\":{\"type\":\"<color>\"},\"color-interpolation\":{\"type\":{\"enum\":[\"auto\",\"sRGB\",\"linearRGB\"],\"disallowToSurroundBySpaces\":false}},\"color-interpolation-filters\":{\"type\":{\"enum\":[\"auto\",\"sRGB\",\"linearRGB\"],\"disallowToSurroundBySpaces\":false}},\"cursor\":{\"type\":\"<'cursor'>\"},\"direction\":{\"type\":\"<'direction'>\"},\"display\":{\"type\":\"<'display'>\"},\"dominant-baseline\":{\"type\":\"<'dominant-baseline'>\"},\"fill\":{\"type\":\"<'fill'>\"},\"fill-opacity\":{\"type\":\"<'fill-opacity'>\"},\"fill-rule\":{\"type\":\"<'fill-rule'>\"},\"filter\":{\"type\":\"<'filter'>\"},\"flood-color\":{\"type\":\"<color>\"},\"flood-opacity\":{\"type\":\"<alpha-value>\"},\"font\":{\"type\":\"<'font'>\"},\"font-family\":{\"type\":\"<'font-family'>\"},\"font-size\":{\"type\":\"<svg-font-size>\"},\"font-size-adjust\":{\"type\":\"<svg-font-size-adjust>\"},\"font-stretch\":{\"type\":\"<'font-stretch'>\"},\"font-style\":{\"type\":\"<'font-style'>\"},\"font-variant\":{\"type\":\"<'font-variant'>\"},\"font-weight\":{\"type\":\"<'font-weight'>\"},\"glyph-orientation-horizontal\":{\"type\":\"<'glyph-orientation-horizontal'>\",\"deprecated\":true},\"glyph-orientation-vertical\":{\"type\":\"<'glyph-orientation-vertical'>\",\"deprecated\":true},\"image-rendering\":{\"type\":\"<'image-rendering'>\"},\"isolation\":{\"type\":\"<'isolation'>\"},\"letter-spacing\":{\"type\":\"<'letter-spacing'>\"},\"lighting-color\":{\"type\":\"<color>\"},\"marker\":{\"type\":\"<'marker'>\"},\"marker-end\":{\"type\":\"<'marker-end'>\"},\"marker-mid\":{\"type\":\"<'marker-mid'>\"},\"marker-start\":{\"type\":\"<'marker-start'>\"},\"mask\":{\"type\":\"<'mask'>\"},\"mask-type\":{\"type\":\"<'mask-type'>\"},\"opacity\":{\"type\":\"<alpha-value>\"},\"overflow\":{\"type\":\"<'overflow'>\"},\"paint-order\":{\"type\":\"<'paint-order'>\"},\"pointer-events\":{\"type\":\"<'pointer-events'>\"},\"shape-rendering\":{\"type\":\"<'shape-rendering'>\"},\"stop-color\":{\"type\":\"<'color'>\"},\"stop-opacity\":{\"type\":\"<'opacity'>\"},\"stroke\":{\"type\":\"<'stroke'>\"},\"stroke-dasharray\":{\"type\":\"<'stroke-dasharray'>\"},\"stroke-dashoffset\":{\"type\":\"<'stroke-dashoffset'>\"},\"stroke-linecap\":{\"type\":\"<'stroke-linecap'>\"},\"stroke-linejoin\":{\"type\":\"<'stroke-linejoin'>\"},\"stroke-miterlimit\":{\"type\":\"<'stroke-miterlimit'>\"},\"stroke-opacity\":{\"type\":\"<'stroke-opacity'>\"},\"stroke-width\":{\"type\":\"<'stroke-width'>\"},\"text-anchor\":{\"type\":\"<'text-anchor'>\"},\"text-decoration\":{\"type\":\"<'text-decoration'>\"},\"text-overflow\":{\"type\":\"<'text-overflow'>\"},\"text-rendering\":{\"type\":\"<'text-rendering'>\"},\"unicode-bidi\":{\"type\":\"<'unicode-bidi'>\"},\"vector-effect\":{\"type\":{\"enum\":[\"none\",\"non-scaling-stroke\",\"non-scaling-size\",\"non-rotation\",\"fixed-position\"]}},\"visibility\":{\"type\":\"<'visibility'>\"},\"white-space\":{\"type\":\"<'white-space'>\"},\"word-spacing\":{\"type\":\"<'word-spacing'>\"},\"writing-mode\":{\"type\":\"<'writing-mode'>\"},\"clip\":{\"type\":\"<'clip'>\",\"deprecated\":true},\"color-profile\":{\"type\":\"<'color-profile'>\",\"deprecated\":true},\"color-rendering\":{\"type\":\"<'color-rendering'>\",\"deprecated\":true},\"enable-background\":{\"type\":\"<'enable-background'>\",\"deprecated\":true},\"kerning\":{\"type\":\"<'kerning'>\",\"deprecated\":true}},\"#SVGTransferFunctionAttrs\":{\"type\":{\"type\":{\"enum\":[\"identity\",\"table\",\"discrete\",\"linear\",\"gamma\"]}},\"tableValues\":{\"type\":\"<list-of-numbers>\"},\"slope\":{\"type\":\"<number>\"},\"intercept\":{\"type\":\"<number>\"},\"amplitude\":{\"type\":\"<number>\"},\"exponent\":{\"type\":\"<number>\"},\"offset\":{\"type\":\"<number>\"}},\"#MathMLGlobalAttrs\":{\"autofocus\":{\"type\":\"Boolean\"},\"class\":{\"type\":\"Any\"},\"data-*\":{\"type\":\"Any\"},\"dir\":{\"type\":{\"enum\":[\"ltr\",\"rtl\"]}},\"displaystyle\":{\"type\":{\"enum\":[\"true\",\"false\"]}},\"id\":{\"type\":\"DOMID\"},\"mathbackground\":{\"type\":\"<color>\",\"deprecated\":true},\"mathcolor\":{\"type\":\"<color>\",\"deprecated\":true},\"mathsize\":{\"type\":\"<length-percentage>\",\"deprecated\":true},\"nonce\":{\"type\":\"Any\"},\"scriptlevel\":{\"type\":\"Any\"},\"style\":{\"type\":\"<css-declaration-list>\"},\"tabindex\":{\"type\":\"TabIndex\"}},\"#XLinkAttrs\":{\"xlink:href\":{\"type\":\"URL\",\"deprecated\":true},\"xlink:title\":{\"type\":\"Any\",\"deprecated\":true},\"xlink:type\":{\"type\":{\"enum\":[\"simple\"]},\"deprecated\":true},\"xlink:role\":{\"type\":\"Any\",\"deprecated\":true},\"xlink:arcrole\":{\"type\":\"URL\",\"deprecated\":true},\"xlink:show\":{\"type\":{\"enum\":[\"new\",\"replace\",\"embed\",\"other\",\"none\"]},\"deprecated\":true},\"xlink:actuate\":{\"type\":\"Any\",\"deprecated\":true}}},\"aria\":{\"roles\":{\"alert\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"alertdialog\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-modal\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"application\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\"},{\"name\":\"aria-expanded\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\"},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\"},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"article\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-posinset\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-setsize\"}],\"prohibitedProperties\":[]},\"banner\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"blockquote\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"button\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-expanded\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\"},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-pressed\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"caption\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-label\",\"aria-labelledby\"]},\"cell\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-colindex\"},{\"name\":\"aria-colindextext\"},{\"name\":\"aria-colspan\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-rowindex\"},{\"name\":\"aria-rowindextext\"},{\"name\":\"aria-rowspan\"}],\"prohibitedProperties\":[]},\"checkbox\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-checked\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\"},{\"name\":\"aria-expanded\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\"},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-readonly\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-required\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"code\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-label\",\"aria-labelledby\"]},\"columnheader\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-colindex\"},{\"name\":\"aria-colindextext\"},{\"name\":\"aria-colspan\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\"},{\"name\":\"aria-expanded\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\"},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\"},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-readonly\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-required\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-rowindex\"},{\"name\":\"aria-rowindextext\"},{\"name\":\"aria-rowspan\"},{\"name\":\"aria-selected\"},{\"name\":\"aria-sort\"}],\"prohibitedProperties\":[]},\"combobox\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-autocomplete\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\"},{\"name\":\"aria-expanded\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\"},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\"},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-readonly\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-required\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"command\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"comment\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-level\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-posinset\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-setsize\"}],\"prohibitedProperties\":[]},\"complementary\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"composite\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"contentinfo\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"definition\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-label\",\"aria-labelledby\"]},\"deletion\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-label\",\"aria-labelledby\"]},\"dialog\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-modal\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"directory\":{\"deprecated\":true,\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"document\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"emphasis\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-label\",\"aria-labelledby\"]},\"feed\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"figure\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"form\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"generic\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-brailleroledescription\",\"aria-label\",\"aria-labelledby\",\"aria-roledescription\"]},\"grid\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-colcount\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-multiselectable\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-readonly\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-rowcount\"}],\"prohibitedProperties\":[]},\"gridcell\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-colindex\"},{\"name\":\"aria-colindextext\"},{\"name\":\"aria-colspan\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\"},{\"name\":\"aria-expanded\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\"},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\"},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-readonly\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-required\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-rowindex\"},{\"name\":\"aria-rowindextext\"},{\"name\":\"aria-rowspan\"},{\"name\":\"aria-selected\"}],\"prohibitedProperties\":[]},\"group\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"heading\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-level\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"image\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"img\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"input\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"insertion\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-label\",\"aria-labelledby\"]},\"landmark\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"link\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-expanded\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\"},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"list\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"listbox\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\"},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-multiselectable\"},{\"name\":\"aria-orientation\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-readonly\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-required\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"listitem\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-posinset\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-setsize\"}],\"prohibitedProperties\":[]},\"log\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"main\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"mark\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-label\",\"aria-labelledby\"]},\"marquee\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"math\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"menu\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-orientation\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"menubar\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-orientation\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"menuitem\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-expanded\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\"},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-posinset\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-setsize\"}],\"prohibitedProperties\":[]},\"menuitemcheckbox\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-checked\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-expanded\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\"},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-posinset\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-setsize\"}],\"prohibitedProperties\":[]},\"menuitemradio\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-checked\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-expanded\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\"},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-posinset\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-setsize\"}],\"prohibitedProperties\":[]},\"meter\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-valuemax\"},{\"name\":\"aria-valuemin\"},{\"name\":\"aria-valuenow\"},{\"name\":\"aria-valuetext\"}],\"prohibitedProperties\":[]},\"navigation\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"none\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-label\",\"aria-labelledby\"]},\"note\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"option\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-checked\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-posinset\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-selected\"},{\"name\":\"aria-setsize\"}],\"prohibitedProperties\":[]},\"paragraph\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-label\",\"aria-labelledby\"]},\"presentation\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-label\",\"aria-labelledby\"]},\"progressbar\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-valuemax\"},{\"name\":\"aria-valuemin\"},{\"name\":\"aria-valuenow\"},{\"name\":\"aria-valuetext\"}],\"prohibitedProperties\":[]},\"radio\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-checked\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-posinset\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-setsize\"}],\"prohibitedProperties\":[]},\"radiogroup\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\"},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-orientation\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-readonly\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-required\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"range\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-valuemax\"},{\"name\":\"aria-valuemin\"},{\"name\":\"aria-valuenow\"},{\"name\":\"aria-valuetext\"}],\"prohibitedProperties\":[]},\"region\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"roletype\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"row\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-colindex\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-expanded\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-level\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-posinset\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-rowindex\"},{\"name\":\"aria-rowindextext\"},{\"name\":\"aria-selected\"},{\"name\":\"aria-setsize\"}],\"prohibitedProperties\":[]},\"rowgroup\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"rowheader\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-colindex\"},{\"name\":\"aria-colindextext\"},{\"name\":\"aria-colspan\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\"},{\"name\":\"aria-expanded\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\"},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\"},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-readonly\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-required\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-rowindex\"},{\"name\":\"aria-rowindextext\"},{\"name\":\"aria-rowspan\"},{\"name\":\"aria-selected\"},{\"name\":\"aria-sort\"}],\"prohibitedProperties\":[]},\"scrollbar\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-orientation\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-valuemax\"},{\"name\":\"aria-valuemin\"},{\"name\":\"aria-valuenow\"},{\"name\":\"aria-valuetext\"}],\"prohibitedProperties\":[]},\"search\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"searchbox\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-autocomplete\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\"},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\"},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-multiline\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-placeholder\"},{\"name\":\"aria-readonly\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-required\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"section\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"sectionfooter\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"sectionhead\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"sectionheader\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"select\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-orientation\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"separator\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-orientation\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-valuemax\"},{\"name\":\"aria-valuemin\"},{\"name\":\"aria-valuenow\"},{\"name\":\"aria-valuetext\"}],\"prohibitedProperties\":[]},\"slider\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\"},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\"},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-orientation\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-readonly\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-valuemax\"},{\"name\":\"aria-valuemin\"},{\"name\":\"aria-valuenow\"},{\"name\":\"aria-valuetext\"}],\"prohibitedProperties\":[]},\"spinbutton\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\"},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-readonly\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-required\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-valuemax\"},{\"name\":\"aria-valuemin\"},{\"name\":\"aria-valuenow\"},{\"name\":\"aria-valuetext\"}],\"prohibitedProperties\":[]},\"status\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"strong\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-label\",\"aria-labelledby\"]},\"structure\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"subscript\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-label\",\"aria-labelledby\"]},\"suggestion\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-label\",\"aria-labelledby\"]},\"superscript\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-label\",\"aria-labelledby\"]},\"switch\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-checked\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\"},{\"name\":\"aria-expanded\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\"},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-readonly\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-required\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"tab\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-expanded\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\"},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-posinset\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-selected\"},{\"name\":\"aria-setsize\"}],\"prohibitedProperties\":[]},\"table\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-colcount\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-rowcount\"}],\"prohibitedProperties\":[]},\"tablist\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-multiselectable\"},{\"name\":\"aria-orientation\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"tabpanel\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"term\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-label\",\"aria-labelledby\"]},\"textbox\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-autocomplete\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\"},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\"},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-multiline\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-placeholder\"},{\"name\":\"aria-readonly\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-required\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"time\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-label\",\"aria-labelledby\"]},\"timer\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"toolbar\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-orientation\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"tooltip\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[\"aria-braillelabel\",\"aria-label\",\"aria-labelledby\"]},\"tree\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\"},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-multiselectable\"},{\"name\":\"aria-orientation\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-required\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"treegrid\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-colcount\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\"},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-multiselectable\"},{\"name\":\"aria-orientation\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-readonly\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-required\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-rowcount\"}],\"prohibitedProperties\":[]},\"treeitem\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-checked\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-expanded\"},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\"},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-level\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-posinset\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"},{\"name\":\"aria-selected\"},{\"name\":\"aria-setsize\"}],\"prohibitedProperties\":[]},\"widget\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"window\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-modal\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"graphics-document\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"graphics-object\":{\"ownedProperties\":[{\"name\":\"aria-activedescendant\"},{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\"},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]},\"graphics-symbol\":{\"ownedProperties\":[{\"name\":\"aria-atomic\"},{\"name\":\"aria-braillelabel\"},{\"name\":\"aria-brailleroledescription\"},{\"name\":\"aria-busy\"},{\"name\":\"aria-controls\"},{\"name\":\"aria-current\"},{\"name\":\"aria-describedby\"},{\"name\":\"aria-description\"},{\"name\":\"aria-details\"},{\"name\":\"aria-disabled\",\"deprecated\":true},{\"name\":\"aria-dropeffect\"},{\"name\":\"aria-errormessage\",\"deprecated\":true},{\"name\":\"aria-flowto\"},{\"name\":\"aria-grabbed\"},{\"name\":\"aria-haspopup\",\"deprecated\":true},{\"name\":\"aria-hidden\"},{\"name\":\"aria-invalid\",\"deprecated\":true},{\"name\":\"aria-keyshortcuts\"},{\"name\":\"aria-label\"},{\"name\":\"aria-labelledby\"},{\"name\":\"aria-live\"},{\"name\":\"aria-owns\"},{\"name\":\"aria-relevant\"},{\"name\":\"aria-roledescription\"}],\"prohibitedProperties\":[]}},\"deprecatedProps\":[\"aria-dropeffect\",\"aria-grabbed\"]}}");
|
|
7713
|
+
// src/html-spec/index.ts
|
|
7118
7714
|
/** The HTML element's spec row; `undefined` for SVG (`svg:*`), MathML below `<math>` (`mml:*`) and unknown names. */
|
|
7119
7715
|
function htmlElement(tag) {
|
|
7120
7716
|
const key = tag.toLowerCase();
|
|
@@ -7150,8 +7746,7 @@ function isDeprecatedAttr(tag, name) {
|
|
|
7150
7746
|
const a = elementAttr(tag, name);
|
|
7151
7747
|
return a?.deprecated === true || a?.obsolete === true;
|
|
7152
7748
|
}
|
|
7153
|
-
|
|
7154
|
-
//#region src/rules/a11y/deprecated-element.ts
|
|
7749
|
+
// src/rules/a11y/deprecated-element.ts
|
|
7155
7750
|
const a11yDeprecatedElement = componentRule({
|
|
7156
7751
|
id: "a11y/deprecated-element",
|
|
7157
7752
|
title: "Obsolete HTML element",
|
|
@@ -7166,8 +7761,7 @@ const a11yDeprecatedElement = componentRule({
|
|
|
7166
7761
|
message: `<${e.tag}> is an obsolete element`
|
|
7167
7762
|
}))
|
|
7168
7763
|
});
|
|
7169
|
-
|
|
7170
|
-
//#region src/rules/a11y/deprecated-attr.ts
|
|
7764
|
+
// src/rules/a11y/deprecated-attr.ts
|
|
7171
7765
|
const a11yDeprecatedAttr = componentRule({
|
|
7172
7766
|
id: "a11y/deprecated-attr",
|
|
7173
7767
|
title: "Deprecated HTML attribute",
|
|
@@ -7187,8 +7781,7 @@ const a11yDeprecatedAttr = componentRule({
|
|
|
7187
7781
|
}];
|
|
7188
7782
|
})
|
|
7189
7783
|
});
|
|
7190
|
-
|
|
7191
|
-
//#region src/rules/a11y/role-candidates.ts
|
|
7784
|
+
// src/rules/a11y/role-candidates.ts
|
|
7192
7785
|
const ELEMENT_FACT_OVERRIDES = {
|
|
7193
7786
|
hgroup: { implicitRole: "group" },
|
|
7194
7787
|
address: { implicitRole: "group" }
|
|
@@ -7226,8 +7819,7 @@ function roleCandidates(e) {
|
|
|
7226
7819
|
function roleRow(role) {
|
|
7227
7820
|
return role === false ? void 0 : HTML_SPEC.aria.roles[role];
|
|
7228
7821
|
}
|
|
7229
|
-
|
|
7230
|
-
//#region src/rules/a11y/disallowed-aria-props.ts
|
|
7822
|
+
// src/rules/a11y/disallowed-aria-props.ts
|
|
7231
7823
|
const NAMING = /* @__PURE__ */ new Set([
|
|
7232
7824
|
"aria-label",
|
|
7233
7825
|
"aria-labelledby",
|
|
@@ -7292,8 +7884,7 @@ const a11yDisallowedAriaProps = componentRule({
|
|
|
7292
7884
|
});
|
|
7293
7885
|
})
|
|
7294
7886
|
});
|
|
7295
|
-
|
|
7296
|
-
//#region src/rules/a11y/deprecated-aria.ts
|
|
7887
|
+
// src/rules/a11y/deprecated-aria.ts
|
|
7297
7888
|
const a11yDeprecatedAria = componentRule({
|
|
7298
7889
|
id: "a11y/deprecated-aria",
|
|
7299
7890
|
title: "Deprecated ARIA role or attribute",
|
|
@@ -7333,8 +7924,7 @@ const a11yDeprecatedAria = componentRule({
|
|
|
7333
7924
|
return out;
|
|
7334
7925
|
})
|
|
7335
7926
|
});
|
|
7336
|
-
|
|
7337
|
-
//#region src/rules/a11y/element-declarations.ts
|
|
7927
|
+
// src/rules/a11y/element-declarations.ts
|
|
7338
7928
|
/**
|
|
7339
7929
|
* The declaration grammar the two config-driven element rules share: a bare tag name, lowercased at
|
|
7340
7930
|
* read. Reserved at config load rather than left open — a `string-list` would otherwise accept
|
|
@@ -7350,8 +7940,7 @@ const ELEMENTS_OPTION = {
|
|
|
7350
7940
|
describe: "a bare tag name (letters, digits and hyphens; no selector syntax)"
|
|
7351
7941
|
}
|
|
7352
7942
|
};
|
|
7353
|
-
|
|
7354
|
-
//#region src/rules/a11y/disallowed-element.ts
|
|
7943
|
+
// src/rules/a11y/disallowed-element.ts
|
|
7355
7944
|
const declared = (o) => new Set(listOption(o, "elements").map((t) => t.toLowerCase()));
|
|
7356
7945
|
const a11yDisallowedElement = componentRule({
|
|
7357
7946
|
id: "a11y/disallowed-element",
|
|
@@ -7371,8 +7960,7 @@ const a11yDisallowedElement = componentRule({
|
|
|
7371
7960
|
}));
|
|
7372
7961
|
}
|
|
7373
7962
|
});
|
|
7374
|
-
|
|
7375
|
-
//#region src/html-spec/content-model.ts
|
|
7963
|
+
// src/html-spec/content-model.ts
|
|
7376
7964
|
/** Split a selector list on top-level commas (brackets and parens nest). */
|
|
7377
7965
|
function splitTop(s) {
|
|
7378
7966
|
const out = [];
|
|
@@ -7674,8 +8262,7 @@ function conditionApplies(ev, condition, holderIdx, holder, grandparentTag) {
|
|
|
7674
8262
|
if (/^[a-z]+\[/.test(condition)) return ev.matchSelector(condition, holderIdx);
|
|
7675
8263
|
return "unknown";
|
|
7676
8264
|
}
|
|
7677
|
-
|
|
7678
|
-
//#region src/rules/a11y/permitted-contents.ts
|
|
8265
|
+
// src/rules/a11y/permitted-contents.ts
|
|
7679
8266
|
const KNOWN_TAGS = new Set(Object.keys(HTML_SPEC.elements).map((k) => k.replace(/^svg:/, "").toLowerCase()));
|
|
7680
8267
|
const FIX$1 = { description: "Move the child to an element its parent permits (e.g. wrap list content in <li>), or change the container to one that admits it (a <div> instead of a misused <ul>, a <span> instead of a block child inside a <button>)." };
|
|
7681
8268
|
/** The compiler deliberately allows rich content in <option>/<optgroup>; the dataset does not. Compiler wins. */
|
|
@@ -7728,8 +8315,7 @@ const a11yPermittedContents = componentRule({
|
|
|
7728
8315
|
return out;
|
|
7729
8316
|
}
|
|
7730
8317
|
});
|
|
7731
|
-
|
|
7732
|
-
//#region src/rules/a11y/route-rule.ts
|
|
8318
|
+
// src/rules/a11y/route-rule.ts
|
|
7733
8319
|
/**
|
|
7734
8320
|
* Per-rule Result builder for the route-scoped a11y rules — the one place their shared
|
|
7735
8321
|
* shape lives. `line` is emitted only when positive: PASS results deliberately carry no
|
|
@@ -7794,8 +8380,7 @@ function surplusRule(spec) {
|
|
|
7794
8380
|
}
|
|
7795
8381
|
};
|
|
7796
8382
|
}
|
|
7797
|
-
|
|
7798
|
-
//#region src/rules/a11y/required-element.ts
|
|
8383
|
+
// src/rules/a11y/required-element.ts
|
|
7799
8384
|
const ID = "a11y/required-element";
|
|
7800
8385
|
const OPTIONS = { elements: ELEMENTS_OPTION };
|
|
7801
8386
|
const result$3 = resultFactory(ID, "Add the element to the route — usually in the layout the route composes — or narrow the declaration with an `overrides` entry for the routes it does not apply to.", "warning");
|
|
@@ -7847,8 +8432,7 @@ const a11yRequiredElement = {
|
|
|
7847
8432
|
return out;
|
|
7848
8433
|
}
|
|
7849
8434
|
};
|
|
7850
|
-
|
|
7851
|
-
//#region src/rules/a11y/doctype.ts
|
|
8435
|
+
// src/rules/a11y/doctype.ts
|
|
7852
8436
|
const present = {
|
|
7853
8437
|
presence: "own",
|
|
7854
8438
|
value: "static"
|
|
@@ -7886,8 +8470,7 @@ const a11yDoctype = {
|
|
|
7886
8470
|
}];
|
|
7887
8471
|
}
|
|
7888
8472
|
};
|
|
7889
|
-
|
|
7890
|
-
//#region src/rules/a11y/duplicate-landmark.ts
|
|
8473
|
+
// src/rules/a11y/duplicate-landmark.ts
|
|
7891
8474
|
const KINDS$1 = [
|
|
7892
8475
|
"main",
|
|
7893
8476
|
"banner",
|
|
@@ -7911,8 +8494,7 @@ const a11yDuplicateLandmark = surplusRule({
|
|
|
7911
8494
|
message: (kind, i, n) => `Duplicate ${kind} landmark (${i + 1} of ${n})`,
|
|
7912
8495
|
passMessage: "No duplicate landmarks"
|
|
7913
8496
|
});
|
|
7914
|
-
|
|
7915
|
-
//#region src/rules/a11y/top-level-landmark.ts
|
|
8497
|
+
// src/rules/a11y/top-level-landmark.ts
|
|
7916
8498
|
const result$2 = resultFactory("a11y/top-level-landmark", "A banner, main, complementary, or contentinfo landmark should not be nested inside another landmark.", "warning");
|
|
7917
8499
|
const KINDS = [
|
|
7918
8500
|
"main",
|
|
@@ -7947,8 +8529,7 @@ const a11yTopLevelLandmark = {
|
|
|
7947
8529
|
return out;
|
|
7948
8530
|
}
|
|
7949
8531
|
};
|
|
7950
|
-
|
|
7951
|
-
//#region src/rules/a11y/id-duplication.ts
|
|
8532
|
+
// src/rules/a11y/id-duplication.ts
|
|
7952
8533
|
/**
|
|
7953
8534
|
* a11y/id-duplication — a literal id repeated within a composed route. `ctx.a11y[].ids`
|
|
7954
8535
|
* already holds the branch-aware-folded representatives per id, so this rule only counts them.
|
|
@@ -7963,8 +8544,7 @@ const a11yIdDuplication = surplusRule({
|
|
|
7963
8544
|
recommendationFor: (rep, first) => first.file === "src/app.html" || first.line === 0 ? void 0 : rep.file === first.file && rep.line === first.line ? "This id is hardcoded in a component rendered more than once on this route. Generate it per instance with $props.id() (Svelte 5.20+): `const uid = $props.id();`, then `id=\"{uid}-name\"`." : "Rename one of them. Separate {#if} blocks are treated as able to render together; if these never render at the same time, make them branches of one {#if}…{:else}.",
|
|
7964
8545
|
passMessage: "No duplicate ids"
|
|
7965
8546
|
});
|
|
7966
|
-
|
|
7967
|
-
//#region src/rules/a11y/no-missing-id-ref.ts
|
|
8547
|
+
// src/rules/a11y/no-missing-id-ref.ts
|
|
7968
8548
|
const result$1 = resultFactory("a11y/no-missing-id-ref", "An id reference should point to an id that exists somewhere in the composed route.", "warning");
|
|
7969
8549
|
/**
|
|
7970
8550
|
* a11y/no-missing-id-ref — an id-reference attribute (`IDREF_ATTRS`: HTML's `for`/`list`/`headers`/
|
|
@@ -8001,8 +8581,7 @@ const a11yNoMissingIdRef = {
|
|
|
8001
8581
|
return out;
|
|
8002
8582
|
}
|
|
8003
8583
|
};
|
|
8004
|
-
|
|
8005
|
-
//#region src/rules/a11y/unverified-id-ref.ts
|
|
8584
|
+
// src/rules/a11y/unverified-id-ref.ts
|
|
8006
8585
|
const result = resultFactory("a11y/unverified-id-ref", "The reference could not be verified against the composed route. Confirm the id exists in the rendered page, or resolve the causes so a11y/no-missing-id-ref can verify it.", "info");
|
|
8007
8586
|
const CAUSE_LABEL = {
|
|
8008
8587
|
component: "unresolved component",
|
|
@@ -8056,8 +8635,7 @@ const a11yUnverifiedIdRef = {
|
|
|
8056
8635
|
return out;
|
|
8057
8636
|
}
|
|
8058
8637
|
};
|
|
8059
|
-
|
|
8060
|
-
//#region src/rules/index.ts
|
|
8638
|
+
// src/rules/index.ts
|
|
8061
8639
|
const allRules = [
|
|
8062
8640
|
seoTitlePresence,
|
|
8063
8641
|
seoDescriptionPresence,
|
|
@@ -8190,8 +8768,7 @@ function explainRule(id) {
|
|
|
8190
8768
|
...rule.options ? { options: optionInfos(rule.options) } : {}
|
|
8191
8769
|
};
|
|
8192
8770
|
}
|
|
8193
|
-
|
|
8194
|
-
//#region src/reporter/shared.ts
|
|
8771
|
+
// src/reporter/shared.ts
|
|
8195
8772
|
/** Sort key: critical first. */
|
|
8196
8773
|
const SEVERITY_RANK = {
|
|
8197
8774
|
critical: 0,
|
|
@@ -8218,8 +8795,7 @@ const RULE_META = new Map(allRules.map((r) => [r.id, {
|
|
|
8218
8795
|
function ruleMetaById(id) {
|
|
8219
8796
|
return RULE_META.get(id);
|
|
8220
8797
|
}
|
|
8221
|
-
|
|
8222
|
-
//#region src/reporter/github.ts
|
|
8798
|
+
// src/reporter/github.ts
|
|
8223
8799
|
/** Escape workflow-command message data (the text after `::`). */
|
|
8224
8800
|
function escapeData(s) {
|
|
8225
8801
|
return s.replace(/%/g, "%25").replace(/\r/g, "%0D").replace(/\n/g, "%0A");
|
|
@@ -8246,8 +8822,7 @@ function formatGithubReport(results, config) {
|
|
|
8246
8822
|
return `::${level} ${props.join(",")}::${escapeData(messageText(r))}`;
|
|
8247
8823
|
}).join("\n");
|
|
8248
8824
|
}
|
|
8249
|
-
|
|
8250
|
-
//#region src/scoring/inventory.ts
|
|
8825
|
+
// src/scoring/inventory.ts
|
|
8251
8826
|
const DEDUCTION = {
|
|
8252
8827
|
critical: 15,
|
|
8253
8828
|
warning: 5,
|
|
@@ -8279,8 +8854,7 @@ function buildInventory(config, rules = selectRules(allRules, config)) {
|
|
|
8279
8854
|
function ruleScopes(rules) {
|
|
8280
8855
|
return new Map(rules.map((r) => [r.id, pairKey(r.category, r.scope)]));
|
|
8281
8856
|
}
|
|
8282
|
-
|
|
8283
|
-
//#region src/scoring/score.ts
|
|
8857
|
+
// src/scoring/score.ts
|
|
8284
8858
|
const CRITICAL_CAP = 79;
|
|
8285
8859
|
function clamp(n) {
|
|
8286
8860
|
return Math.max(0, Math.min(100, n));
|
|
@@ -8401,8 +8975,7 @@ function computeHealth(results, config) {
|
|
|
8401
8975
|
weights
|
|
8402
8976
|
};
|
|
8403
8977
|
}
|
|
8404
|
-
|
|
8405
|
-
//#region src/reporter/json.ts
|
|
8978
|
+
// src/reporter/json.ts
|
|
8406
8979
|
function issueOf(result) {
|
|
8407
8980
|
return {
|
|
8408
8981
|
id: result.id,
|
|
@@ -8481,11 +9054,31 @@ function buildJsonReport(results, config, meta, ruleIds, examined, skipped) {
|
|
|
8481
9054
|
};
|
|
8482
9055
|
}
|
|
8483
9056
|
/** Render results as the documented JSON report string (design §7). */
|
|
8484
|
-
function formatJsonReport(
|
|
8485
|
-
return
|
|
9057
|
+
function formatJsonReport(...args) {
|
|
9058
|
+
return [...formatJsonReportChunks(...args)].join("");
|
|
9059
|
+
}
|
|
9060
|
+
/**
|
|
9061
|
+
* `formatJsonReport`'s text in pieces, one route at a time: a large prerendered site's report is
|
|
9062
|
+
* longer than the longest string V8 can hold.
|
|
9063
|
+
*/
|
|
9064
|
+
function* formatJsonReportChunks(results, config, meta, ruleIds, examined, skipped) {
|
|
9065
|
+
const report = buildJsonReport(results, config, meta, ruleIds, examined, skipped);
|
|
9066
|
+
const marker = JSON.stringify("\0routes");
|
|
9067
|
+
const text = JSON.stringify({
|
|
9068
|
+
...report,
|
|
9069
|
+
routes: "\0routes"
|
|
9070
|
+
}, null, 2);
|
|
9071
|
+
const at = text.indexOf(marker);
|
|
9072
|
+
yield text.slice(0, at);
|
|
9073
|
+
if (report.routes.length === 0) yield "[]";
|
|
9074
|
+
else {
|
|
9075
|
+
yield "[\n";
|
|
9076
|
+
for (const [i, route] of report.routes.entries()) yield `${i > 0 ? ",\n" : ""} ${JSON.stringify(route, null, 2).replaceAll("\n", "\n ")}`;
|
|
9077
|
+
yield "\n ]";
|
|
9078
|
+
}
|
|
9079
|
+
yield text.slice(at + marker.length);
|
|
8486
9080
|
}
|
|
8487
|
-
|
|
8488
|
-
//#region src/reporter/sanitize.ts
|
|
9081
|
+
// src/reporter/sanitize.ts
|
|
8489
9082
|
/**
|
|
8490
9083
|
* Escapers for strings that originate from the analyzed project (file paths, route ids,
|
|
8491
9084
|
* rule messages that quote page content such as `<title>` or JSON-LD values) rather than
|
|
@@ -8533,8 +9126,7 @@ function mdEscape(text) {
|
|
|
8533
9126
|
function terminalSafe(text) {
|
|
8534
9127
|
return text.replace(/(?:\x1b\]|\x9d)[^\x07\x9c\x1b]*(?:\x07|\x9c|\x1b\\)?/g, "").replace(/(?:\x1b\[|\x9b)[0-?]*[ -/]*[@-~]/g, "").replace(/[\x00-\x08\x0b-\x1f\x7f-\x9f]/g, "");
|
|
8535
9128
|
}
|
|
8536
|
-
|
|
8537
|
-
//#region src/reporter/markdown.ts
|
|
9129
|
+
// src/reporter/markdown.ts
|
|
8538
9130
|
/** Cap on rendered finding rows — keeps PR comments/job summaries within GitHub's size limits. */
|
|
8539
9131
|
const MAX_FINDINGS = 50;
|
|
8540
9132
|
const SEVERITY_EMOJI = {
|
|
@@ -8627,5 +9219,4 @@ function formatMarkdownReport(results, config, meta) {
|
|
|
8627
9219
|
}
|
|
8628
9220
|
return lines.join("\n");
|
|
8629
9221
|
}
|
|
8630
|
-
|
|
8631
|
-
export { performanceMinifyDisabled as $, applyRuleSeverities as $n, correctnessOrphanLifecycle as $t, a11yAbbrTitle as A, seoImageAlt as An, defaultProject as Ar, walkEstree as At, a11yUseList as B, seoSitemapInRobots as Bn, parseSvelte as Bt, a11yDisallowedElement as C, foldOccurrences as Cn, effectiveSeverity as Cr, collectSvelteLifecycleImports as Ct, a11yDeprecatedElement as D, stripTextDirective as Dn, isPenalized as Dr, scopeIntroducedNames as Dt, a11yDeprecatedAttr as E, splitTokens as En, docsUrlFor as Er, rootObjectName as Et, isInteractiveContainer as F, seoJsonLdPlaceholder as Fn, attrTextOf as Ft, a11yInvalidAriaValue as G, seoIndexability as Gn, securitySharedStateImport as Gt, a11yAccessibleName as H, seoOgUrl as Hn, valueFromNodes as Ht, isInteractiveElement as I, seoJsonLdDateFormat as In, attrValue as It, a11yInvalidRole as J, resolveRuleOptions as Jn, securityJavascriptUrl as Jt, a11yRequiredAriaProps as K, performancePreconnect as Kn, securityServerModuleState as Kt, literalTabindexValue as L, seoJsonLdRelativeUrl as Ln, attrValueOf as Lt, a11yNoAutofocus as M, seoDescriptionLength as Mn, walkScoped as Mt, a11yNoAccesskey as N, seoTitleLength as Nn, CHILD_NODE_KEYS as Nt, HTML_SPEC as O, resolveRole as On, CATEGORIES as Or, unwrapExport as Ot, a11yPositiveTabindex as P, seoJsonLdRequiredProps as Pn, attrText as Pt, performanceLoadWaterfall as Q, applyOverrides as Qn, correctnessBasePathNavigation as Qt, a11yRequireDatetime as R, seoJsonLdDeprecatedType as Rn, findAttr as Rt, a11yPermittedContents as S, decodeFragmentId as Sn, classify as Sr, collectSuppressions as St, a11yDisallowedAriaProps as T, resolveLandmark as Tn, summarize as Tr, parseModuleProgram as Tt, a11yAriaHiddenFocus as U, seoOgDescription as Un, architecturePropCount as Ut, a11yLabelHasControl as V, seoViewport as Vn, textFromNodes as Vt, a11yInteractiveNesting as W, seoTwitterCard as Wn, architectureComponentSize as Wt, performanceStateRaw as X, validateRuleSetting as Xn, correctnessInstanceBrowserGlobal as Xt, performanceIframeLoading as Y, shouldSkipRangeCheck as Yn, securityRawHtml as Yt, performanceSequentialAwaits as Z, SEARCH_RESULT_RULES as Zn, correctnessServerBrowserGlobal as Zt, a11yIdDuplication as _, ANCESTRY_DEPENDENT_TAGS as _n, seoOgTitle as _r, collectBrowserGlobalRefs as _t, formatJsonReport as a, correctnessPropMutation as an, withIndexableOff as ar, architectureReservedDirectoryNames as at, a11yDoctype as b, NAMING_ATTRS$1 as bn, seoDescriptionPresence as br, collectNamedImportAliases as bt, formatGithubReport as c, correctnessEffectAsDerived as cn, performanceFontPreloadCrossorigin as cr, architecturePrivateScopeImport as ct, ruleMetaById as d, seoSsrDisabled as dn, performanceImageLoadingHint as dr, parseInMemoryExports as dt, correctnessOrphanEffect as en, compileOverrides as er, performanceNamespaceImport as et, severityToSarifLevel as f, routeNeverSsr as fn, performanceImageDimensions as fr, parseKitModuleFacts as ft, a11yNoMissingIdRef as g, seoSingleH1 as gn, seoJsonLd as gr, addBoundNames as gt, a11yUnverifiedIdRef as h, seoDuplicateTitle as hn, seoRobotsTxt as hr, WALK_IGNORED_KEYS as ht, buildJsonReport as i, correctnessStalePropDerivation as in, withFailedRulesOff as ir, architectureReservedNamePlacement as it, a11yNoDuplicateDt as j, seoCharset as jn, defineConfig as jr, walkEvalScope as jt, a11yPatternTitle as k, seoHreflang as kn, defaultConfig as kr, unwrapTs as kt, SEVERITY_RANK as l, correctnessEachIndexKey as ln, performancePreloadMissingAs as lr, DEFAULT_KIT_ALIASES as lt, explainRule as m, seoDuplicateDescription as mn, seoSitemapXml as mr, isRootRelativePath as mt, mdEscape as n, correctnessCheckableBindValue as nn, selectRules as nr, architectureDocLinkTarget as nt, computeHealth as o, correctnessUnmutatedState as on, performanceRenderBlockingScript as or, architectureDirectoryNaming as ot, allRules as p, seoHeadingLevelSkip as pn, seoHtmlLang as pr, resolveRepoLocalPath as pt, a11yUnknownAriaAttribute as q, isPlainObject as qn, securityHandlerStateWrite as qt, terminalSafe as r, correctnessNonreactiveBuiltinState as rn, settingSeverity as rr, architectureRouteComponentImport as rt, computeScore as s, correctnessEffectAsOnMount as sn, performanceLcpImage as sr, architectureUnitEntryFile as st, formatMarkdownReport as t, correctnessAutoplayMuted as tn, formatFailedRuleWarning as tr, performanceHeavyImport as tt, messageText as u, correctnessEachKey as un, performanceResponsiveImage as ur, collectTopLevelBindings as ut, a11yTopLevelLandmark as v, ASIDE_DEMOTING_TAGS as vn, seoOgImage as vr, collectBrowserGuardImports as vt, a11yDeprecatedAria as w, isTopFragment as wn, hasFailureAtOrAbove as wr, matchLifecycleCall as wt, a11yRequiredElement as x, SECTIONING_TAGS as xn, seoTitlePresence as xr, collectProgramBindings as xt, a11yDuplicateLandmark as y, IDREF_ATTRS as yn, seoCanonicalUrl as yr, collectDerivedGuardBindings as yt, a11yPlaceholderLabelOption as z, seoJsonLdValidity as zn, lineOf as zt };
|
|
9222
|
+
export { performanceLoadWaterfall as $, shouldSkipRangeCheck as $n, securityJavascriptUrl as $t, a11yPatternTitle as A, splitTokens as An, seoTitlePresence as Ar, parseModuleProgram as At, a11yPlaceholderLabelOption as B, seoJsonLdDateFormat as Bn, defineConfig as Br, attrTextOf as Bt, a11yPermittedContents as C, IDREF_ATTRS as Cn, seoCanonicalUrl as Cr, collectBrowserGuardImports as Ct, a11yDeprecatedAttr as D, foldOccurrences as Dn, layoutNeverRenders as Dr, collectSuppressions as Dt, a11yDisallowedAriaProps as E, decodeFragmentId as En, seoDescriptionPresence as Er, collectProgramBindings as Et, a11yPositiveTabindex as F, seoCharset as Fn, docsUrlFor as Fr, walkEstree as Ft, a11yInteractiveNesting as G, seoViewport as Gn, parseSvelte as Gt, a11yLabelHasControl as H, seoJsonLdDeprecatedType as Hn, attrValueOf as Ht, isInteractiveContainer as I, seoDescriptionLength as In, isPenalized as Ir, walkEvalScope as It, a11yUnknownAriaAttribute as J, seoTwitterCard as Jn, architecturePropCount as Jt, a11yInvalidAriaValue as K, seoOgUrl as Kn, textFromNodes as Kt, isInteractiveElement as L, seoTitleLength as Ln, CATEGORIES as Lr, walkScoped as Lt, a11yNoDuplicateDt as M, resolveRole as Mn, effectiveSeverity as Mr, scopeIntroducedNames as Mt, a11yNoAutofocus as N, seoHreflang as Nn, hasFailureAtOrAbove as Nr, unwrapExport as Nt, a11yDeprecatedElement as O, isTopFragment as On, pageRendersOnlyWhenBuilding as Or, collectSvelteLifecycleImports as Ot, a11yNoAccesskey as P, seoImageAlt as Pn, summarize as Pr, unwrapTs as Pt, performanceSequentialAwaits as Q, resolveRuleOptions as Qn, securityHandlerStateWrite as Qt, literalTabindexValue as R, seoJsonLdRequiredProps as Rn, defaultConfig as Rr, CHILD_NODE_KEYS as Rt, a11yRequiredElement as S, ASIDE_DEMOTING_TAGS as Sn, seoOgImage as Sr, collectBrowserGlobalRefs as St, a11yDeprecatedAria as T, SECTIONING_TAGS as Tn, isClassicScriptType as Tr, collectNamedImportAliases as Tt, a11yAccessibleName as U, seoJsonLdValidity as Un, findAttr as Ut, a11yUseList as V, seoJsonLdRelativeUrl as Vn, attrValue as Vt, a11yAriaHiddenFocus as W, seoSitemapInRobots as Wn, lineOf as Wt, performanceIframeLoading as X, performancePreconnect as Xn, securitySharedStateImport as Xt, a11yInvalidRole as Y, seoIndexability as Yn, architectureComponentSize as Yt, performanceStateRaw as Z, isPlainObject as Zn, securityServerModuleState as Zt, a11yNoMissingIdRef as _, seoHeadingLevelSkip as _n, seoHtmlLang as _r, parseKitModuleFacts as _t, formatJsonReport as a, correctnessOrphanEffect as an, formatFailedRuleWarning as ar, architectureReservedNamePlacement as at, a11yDuplicateLandmark as b, seoSingleH1 as bn, seoJsonLd as br, WALK_IGNORED_KEYS as bt, computeScore as c, correctnessNonreactiveBuiltinState as cn, withFailedRulesOff as cr, architectureUnitEntryFile as ct, messageText as d, correctnessUnmutatedState as dn, performanceLcpImage as dr, collectFalseExports as dt, securityRawHtml as en, validateRuleSetting as er, performanceMinifyDisabled as et, ruleMetaById as f, correctnessEffectAsOnMount as fn, performanceFontPreloadCrossorigin as fr, collectTopLevelBindings as ft, a11yUnverifiedIdRef as g, seoSsrDisabled as gn, performanceImageDimensions as gr, parseInMemoryExports as gt, explainRule as h, correctnessEachKey as hn, performanceImageLoadingHint as hr, parseFalseExports as ht, buildJsonReport as i, correctnessOrphanLifecycle as in, compileOverrides as ir, architectureRouteComponentImport as it, a11yAbbrTitle as j, stripTextDirective as jn, classify as jr, rootObjectName as jt, HTML_SPEC as k, resolveLandmark as kn, routeNeverSsr as kr, matchLifecycleCall as kt, formatGithubReport as l, correctnessStalePropDerivation as ln, withIndexableOff as lr, architecturePrivateScopeImport as lt, allRules as m, correctnessEachIndexKey as mn, performanceResponsiveImage as mr, parseExitFactoryExports as mt, mdEscape as n, correctnessServerBrowserGlobal as nn, applyOverrides as nr, performanceHeavyImport as nt, formatJsonReportChunks as o, correctnessAutoplayMuted as on, selectRules as or, architectureReservedDirectoryNames as ot, severityToSarifLevel as p, correctnessEffectAsDerived as pn, performancePreloadMissingAs as pr, parseClientExports as pt, a11yRequiredAriaProps as q, seoOgDescription as qn, valueFromNodes as qt, terminalSafe as r, correctnessBasePathNavigation as rn, applyRuleSeverities as rr, architectureDocLinkTarget as rt, computeHealth as s, correctnessCheckableBindValue as sn, settingSeverity as sr, architectureDirectoryNaming as st, formatMarkdownReport as t, correctnessInstanceBrowserGlobal as tn, SEARCH_RESULT_RULES as tr, performanceNamespaceImport as tt, SEVERITY_RANK as u, correctnessPropMutation as un, performanceRenderBlockingScript as ur, DEFAULT_KIT_ALIASES as ut, a11yIdDuplication as v, seoDuplicateDescription as vn, seoSitemapXml as vr, resolveRepoLocalPath as vt, a11yDisallowedElement as w, NAMING_ATTRS$1 as wn, hasRel as wr, collectDerivedGuardBindings as wt, a11yDoctype as x, ANCESTRY_DEPENDENT_TAGS as xn, seoOgTitle as xr, addBoundNames as xt, a11yTopLevelLandmark as y, seoDuplicateTitle as yn, seoRobotsTxt as yr, isRootRelativePath as yt, a11yRequireDatetime as z, seoJsonLdPlaceholder as zn, defaultProject as zr, attrText as zt };
|