webforai 4.0.0 → 4.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +74 -69
- package/dist/bin.js +1895 -74
- package/dist/cjs/extract-mdast.js +58 -0
- package/dist/cjs/extractors/index.js +5 -0
- package/dist/cjs/extractors/lib/block-features.js +465 -0
- package/dist/cjs/extractors/lib/block-model.generated.js +45 -0
- package/dist/cjs/extractors/lib/block-model.js +72 -0
- package/dist/cjs/extractors/lib/blocks.js +212 -0
- package/dist/cjs/extractors/lib/code-tabs.js +191 -0
- package/dist/cjs/extractors/lib/constants.js +1 -1
- package/dist/cjs/extractors/lib/layout-tables.js +123 -0
- package/dist/cjs/extractors/lib/sanitize.js +144 -28
- package/dist/cjs/extractors/lib/takumi-signal.js +76 -0
- package/dist/cjs/extractors/lib/ui-chrome.js +7 -0
- package/dist/cjs/extractors/presets/auto.js +3 -3
- package/dist/cjs/extractors/presets/kiwame.js +231 -0
- package/dist/cjs/extractors/presets/takumi.js +34 -3
- package/dist/cjs/html-to-markdown.js +58 -4
- package/dist/cjs/html-to-mdast.js +2 -2
- package/dist/cjs/index.js +4 -0
- package/dist/cjs/mdast-handlers/custom-code-handler.js +16 -4
- package/dist/cjs/mdast-handlers/custom-div-handler.js +3 -3
- package/dist/cjs/mdast-handlers/custom-img-handler.js +10 -1
- package/dist/cjs/mdast-handlers/custom-table-handler.js +18 -1
- package/dist/cjs/mdast-handlers/table-cell-flatten.js +195 -0
- package/dist/cjs/mdast-handlers/twoslash.js +71 -0
- package/dist/cjs/metadata/index.js +4 -3
- package/dist/cjs/utils/hast-fast.js +1 -1
- package/dist/cjs/utils/parse-html.js +113 -0
- package/dist/cjs/utils/pre-text.js +104 -0
- package/dist/extract-mdast.js +58 -0
- package/dist/extractors/index.js +3 -0
- package/dist/extractors/lib/block-features.js +437 -0
- package/dist/extractors/lib/block-model.generated.js +21 -0
- package/dist/extractors/lib/block-model.js +48 -0
- package/dist/extractors/lib/blocks.js +185 -0
- package/dist/extractors/lib/code-tabs.js +168 -0
- package/dist/extractors/lib/constants.js +1 -1
- package/dist/extractors/lib/layout-tables.js +99 -0
- package/dist/extractors/lib/sanitize.js +142 -28
- package/dist/extractors/lib/takumi-signal.js +53 -0
- package/dist/extractors/lib/ui-chrome.js +5 -0
- package/dist/extractors/presets/auto.js +3 -3
- package/dist/extractors/presets/kiwame.js +206 -0
- package/dist/extractors/presets/takumi.js +34 -3
- package/dist/html-to-markdown.js +57 -4
- package/dist/html-to-mdast.js +2 -2
- package/dist/index.js +4 -0
- package/dist/mdast-handlers/custom-code-handler.js +15 -4
- package/dist/mdast-handlers/custom-div-handler.js +4 -4
- package/dist/mdast-handlers/custom-img-handler.js +10 -1
- package/dist/mdast-handlers/custom-table-handler.js +19 -2
- package/dist/mdast-handlers/table-cell-flatten.js +170 -0
- package/dist/mdast-handlers/twoslash.js +48 -0
- package/dist/metadata/index.js +4 -3
- package/dist/types/cli/commands/jobs/options.d.ts +2 -2
- package/dist/types/cli/commands/jobs/options.js.map +1 -1
- package/dist/types/cli/commands/webforai/options.js.map +1 -1
- package/dist/types/cli/commands/webforai/run.js.map +1 -1
- package/dist/types/cli/constants.d.ts +3 -1
- package/dist/types/cli/constants.js.map +1 -1
- package/dist/types/extract-mdast.js.map +1 -1
- package/dist/types/extractors/index.d.ts +1 -0
- package/dist/types/extractors/index.js.map +1 -1
- package/dist/types/extractors/lib/block-features.d.ts +43 -0
- package/dist/types/extractors/lib/block-features.js.map +1 -0
- package/dist/types/extractors/lib/block-model.d.ts +28 -0
- package/dist/types/extractors/lib/block-model.generated.d.ts +5 -0
- package/dist/types/extractors/lib/block-model.generated.js.map +1 -0
- package/dist/types/extractors/lib/block-model.js.map +1 -0
- package/dist/types/extractors/lib/blocks.d.ts +53 -0
- package/dist/types/extractors/lib/blocks.js.map +1 -0
- package/dist/types/extractors/lib/code-tabs.d.ts +30 -0
- package/dist/types/extractors/lib/code-tabs.js.map +1 -0
- package/dist/types/extractors/lib/constants.js.map +1 -1
- package/dist/types/extractors/lib/layout-tables.d.ts +17 -0
- package/dist/types/extractors/lib/layout-tables.js.map +1 -0
- package/dist/types/extractors/lib/sanitize.d.ts +33 -3
- package/dist/types/extractors/lib/sanitize.js.map +1 -1
- package/dist/types/extractors/lib/takumi-signal.d.ts +12 -0
- package/dist/types/extractors/lib/takumi-signal.js.map +1 -0
- package/dist/types/extractors/lib/ui-chrome.d.ts +8 -0
- package/dist/types/extractors/lib/ui-chrome.js.map +1 -1
- package/dist/types/extractors/presets/auto.d.ts +6 -1
- package/dist/types/extractors/presets/auto.js.map +1 -1
- package/dist/types/extractors/presets/kiwame.d.ts +31 -0
- package/dist/types/extractors/presets/kiwame.js.map +1 -0
- package/dist/types/extractors/presets/takumi.js.map +1 -1
- package/dist/types/html-to-markdown.d.ts +9 -0
- package/dist/types/html-to-markdown.js.map +1 -1
- package/dist/types/html-to-mdast.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/mdast-handlers/custom-code-handler.d.ts +7 -0
- package/dist/types/mdast-handlers/custom-code-handler.js.map +1 -1
- package/dist/types/mdast-handlers/custom-div-handler.js.map +1 -1
- package/dist/types/mdast-handlers/custom-img-handler.js.map +1 -1
- package/dist/types/mdast-handlers/custom-table-handler.js.map +1 -1
- package/dist/types/mdast-handlers/table-cell-flatten.d.ts +18 -0
- package/dist/types/mdast-handlers/table-cell-flatten.js.map +1 -0
- package/dist/types/mdast-handlers/twoslash.d.ts +14 -0
- package/dist/types/mdast-handlers/twoslash.js.map +1 -0
- package/dist/types/metadata/index.js.map +1 -1
- package/dist/types/utils/hast-fast.d.ts +1 -1
- package/dist/types/utils/hast-fast.js.map +1 -1
- package/dist/types/utils/parse-html.d.ts +33 -0
- package/dist/types/utils/parse-html.js.map +1 -0
- package/dist/types/utils/pre-text.d.ts +12 -0
- package/dist/types/utils/pre-text.js.map +1 -0
- package/dist/utils/hast-fast.js +1 -1
- package/dist/utils/parse-html.js +87 -0
- package/dist/utils/pre-text.js +81 -0
- package/package.json +3 -1
package/dist/bin.js
CHANGED
|
@@ -6,7 +6,7 @@ import { CommanderError, program } from "commander";
|
|
|
6
6
|
// package.json
|
|
7
7
|
var package_default = {
|
|
8
8
|
name: "webforai",
|
|
9
|
-
version: "4.
|
|
9
|
+
version: "4.1.1",
|
|
10
10
|
description: "Convert web pages and local HTML to clean, LLM-ready Markdown: library, CLI (npx webforai) and hosted-API client.",
|
|
11
11
|
author: "inaridiy",
|
|
12
12
|
license: "Apache-2.0",
|
|
@@ -132,6 +132,7 @@ var package_default = {
|
|
|
132
132
|
boxen: "^8.0.1",
|
|
133
133
|
commander: "^12.1.0",
|
|
134
134
|
"hast-util-from-html": "^2.0.3",
|
|
135
|
+
"hast-util-from-parse5": "^8.0.1",
|
|
135
136
|
"hast-util-select": "^6.0.2",
|
|
136
137
|
"hast-util-to-html": "^9.0.3",
|
|
137
138
|
"hast-util-to-mdast": "^10.1.0",
|
|
@@ -141,6 +142,7 @@ var package_default = {
|
|
|
141
142
|
"mdast-util-gfm": "^3.0.0",
|
|
142
143
|
"mdast-util-math": "^3.0.0",
|
|
143
144
|
"mdast-util-to-markdown": "^2.1.0",
|
|
145
|
+
parse5: "^7.1.2",
|
|
144
146
|
picocolors: "^1.0.1",
|
|
145
147
|
"trim-trailing-lines": "^2.1.0",
|
|
146
148
|
"unist-util-filter": "^5.0.1"
|
|
@@ -376,7 +378,8 @@ import fs3 from "node:fs";
|
|
|
376
378
|
var DEFAULT_PATH = "https://example.com";
|
|
377
379
|
var LOADERS = ["fetch", "playwright", "platform"];
|
|
378
380
|
var MODES = ["default", "ai"];
|
|
379
|
-
var EXTRACTORS = ["auto", "takumi", "minimal", "none"];
|
|
381
|
+
var EXTRACTORS = ["auto", "kiwame", "takumi", "minimal", "none"];
|
|
382
|
+
var PLATFORM_EXTRACTORS = ["auto", "takumi", "minimal", "none"];
|
|
380
383
|
var API_KEY_ENV = "WEBFORAI_API_KEY";
|
|
381
384
|
var PLATFORM_URL_ENV = "WEBFORAI_PLATFORM_URL";
|
|
382
385
|
|
|
@@ -527,6 +530,9 @@ var resolveRunOptions = (source, flags, env = process.env) => {
|
|
|
527
530
|
respectRobotsTxt: flags.respectRobots ?? false
|
|
528
531
|
};
|
|
529
532
|
if (resolved.loader === "platform") {
|
|
533
|
+
if (resolved.extractor === "kiwame") {
|
|
534
|
+
throw new UsageError("--extractor kiwame is only available for local conversion");
|
|
535
|
+
}
|
|
530
536
|
applyPlatformFields(resolved, flags, env);
|
|
531
537
|
} else if (flags.screenshot) {
|
|
532
538
|
throw new UsageError("--screenshot is only available with the platform loader (browser engines)");
|
|
@@ -620,7 +626,7 @@ var resolveJobOptions = (kind, sources, flags, env = process.env, readFile = def
|
|
|
620
626
|
outputDir: flags.output,
|
|
621
627
|
engine: flags.engine ? oneOf2("engine", flags.engine, REQUESTED_ENGINES) : void 0,
|
|
622
628
|
region: flags.region ? oneOf2("region", flags.region, REGIONS) : void 0,
|
|
623
|
-
extractor: flags.extractor ? oneOf2("extractor", flags.extractor,
|
|
629
|
+
extractor: flags.extractor ? oneOf2("extractor", flags.extractor, PLATFORM_EXTRACTORS) : "auto",
|
|
624
630
|
frontmatter: flags.frontmatter ?? false,
|
|
625
631
|
respectRobotsTxt: flags.respectRobots,
|
|
626
632
|
apiKey,
|
|
@@ -1031,8 +1037,8 @@ npx webforai https://example.com --json # machine-readable envelope
|
|
|
1031
1037
|
\`npx playwright install chromium\`). \`platform\` uses the hosted API (below).
|
|
1032
1038
|
- \`-m, --mode <default|ai>\` \u2014 \`ai\` strips links/tables/images down to plain text
|
|
1033
1039
|
(local conversion only).
|
|
1034
|
-
- \`--extractor <auto|takumi|minimal|none>\` \u2014 main-content extraction preset
|
|
1035
|
-
(\`none\` converts the whole page).
|
|
1040
|
+
- \`--extractor <auto|kiwame|takumi|minimal|none>\` \u2014 main-content extraction preset
|
|
1041
|
+
(\`kiwame\` is the learned block classifier, \`takumi\` the heuristic; \`none\` converts the whole page).
|
|
1036
1042
|
- \`--frontmatter\` \u2014 prepend YAML front matter (title, author, canonical URL, ...).
|
|
1037
1043
|
- \`--json\` \u2014 print a JSON envelope to stdout instead of raw Markdown.
|
|
1038
1044
|
- \`--engine <auto|fetch|browser|proxy-fetch|proxy-browser>\` \u2014 platform acquisition engine
|
|
@@ -1344,11 +1350,89 @@ var selectLoader = async () => {
|
|
|
1344
1350
|
import fs9 from "node:fs/promises";
|
|
1345
1351
|
import path5 from "node:path";
|
|
1346
1352
|
|
|
1347
|
-
// src/html
|
|
1348
|
-
import {
|
|
1353
|
+
// src/utils/parse-html.ts
|
|
1354
|
+
import { fromParse5 } from "hast-util-from-parse5";
|
|
1355
|
+
import { parse, parseFragment } from "parse5";
|
|
1356
|
+
var MAX_ELEMENT_DEPTH = 256;
|
|
1357
|
+
var isParent = (node) => "childNodes" in node;
|
|
1358
|
+
var LINE_ELEMENTS = /* @__PURE__ */ new Set([
|
|
1359
|
+
"p",
|
|
1360
|
+
"div",
|
|
1361
|
+
"li",
|
|
1362
|
+
"tr",
|
|
1363
|
+
"td",
|
|
1364
|
+
"th",
|
|
1365
|
+
"h1",
|
|
1366
|
+
"h2",
|
|
1367
|
+
"h3",
|
|
1368
|
+
"h4",
|
|
1369
|
+
"h5",
|
|
1370
|
+
"h6",
|
|
1371
|
+
"br",
|
|
1372
|
+
"section",
|
|
1373
|
+
"article",
|
|
1374
|
+
"pre",
|
|
1375
|
+
"blockquote"
|
|
1376
|
+
]);
|
|
1377
|
+
var textNode = (value, parentNode) => ({ nodeName: "#text", value, parentNode });
|
|
1378
|
+
var coalesceText = (parent) => {
|
|
1379
|
+
const merged = [];
|
|
1380
|
+
for (const child of parent.childNodes) {
|
|
1381
|
+
const previous = merged.at(-1);
|
|
1382
|
+
if (child.nodeName === "#text" && previous?.nodeName === "#text") {
|
|
1383
|
+
previous.value += child.value;
|
|
1384
|
+
} else {
|
|
1385
|
+
merged.push(child);
|
|
1386
|
+
}
|
|
1387
|
+
}
|
|
1388
|
+
parent.childNodes = merged;
|
|
1389
|
+
};
|
|
1390
|
+
var flattenDeep = (root, maxDepth) => {
|
|
1391
|
+
const stack = [[root, 0]];
|
|
1392
|
+
while (stack.length > 0) {
|
|
1393
|
+
const [parent, depth] = stack.pop();
|
|
1394
|
+
const children = parent.childNodes;
|
|
1395
|
+
let unwrapped = false;
|
|
1396
|
+
for (let index = 0; index < children.length; index++) {
|
|
1397
|
+
const child = children[index];
|
|
1398
|
+
if (!isParent(child)) {
|
|
1399
|
+
continue;
|
|
1400
|
+
}
|
|
1401
|
+
if (depth + 1 > maxDepth && "tagName" in child) {
|
|
1402
|
+
const replacement = [...child.childNodes];
|
|
1403
|
+
if (LINE_ELEMENTS.has(child.tagName)) {
|
|
1404
|
+
replacement.unshift(textNode("\n", parent));
|
|
1405
|
+
replacement.push(textNode("\n", parent));
|
|
1406
|
+
}
|
|
1407
|
+
for (const node of replacement) {
|
|
1408
|
+
node.parentNode = parent;
|
|
1409
|
+
}
|
|
1410
|
+
children.splice(index, 1, ...replacement);
|
|
1411
|
+
index -= 1;
|
|
1412
|
+
unwrapped = true;
|
|
1413
|
+
continue;
|
|
1414
|
+
}
|
|
1415
|
+
stack.push([child, depth + 1]);
|
|
1416
|
+
}
|
|
1417
|
+
if (unwrapped) {
|
|
1418
|
+
coalesceText(parent);
|
|
1419
|
+
}
|
|
1420
|
+
}
|
|
1421
|
+
};
|
|
1422
|
+
var SCRIPT_OR_STYLE = /<(script|style)\b([^>]*)>[\s\S]*?<\/\1\s*>/gi;
|
|
1423
|
+
var LARGE_DOCUMENT_CHARS = 2e6;
|
|
1424
|
+
var stripScriptBodies = (html) => html.replace(
|
|
1425
|
+
SCRIPT_OR_STYLE,
|
|
1426
|
+
(match, tag, attributes) => /application\/ld\+json/i.test(attributes) ? match : `<${tag}${attributes}></${tag}>`
|
|
1427
|
+
);
|
|
1428
|
+
var parseHtml = (html, options = {}) => {
|
|
1429
|
+
const source = html.length > LARGE_DOCUMENT_CHARS ? stripScriptBodies(html) : html;
|
|
1430
|
+
const document2 = options.fragment ? parseFragment(source, { scriptingEnabled: false }) : parse(source, { scriptingEnabled: false });
|
|
1431
|
+
flattenDeep(document2, MAX_ELEMENT_DEPTH);
|
|
1432
|
+
return fromParse5(document2);
|
|
1433
|
+
};
|
|
1349
1434
|
|
|
1350
1435
|
// src/html-to-mdast.ts
|
|
1351
|
-
import { fromHtml } from "hast-util-from-html";
|
|
1352
1436
|
import { toMdast } from "hast-util-to-mdast";
|
|
1353
1437
|
|
|
1354
1438
|
// src/extract-mdast.ts
|
|
@@ -1363,6 +1447,61 @@ var emptyDeclarationFilter = (node) => {
|
|
|
1363
1447
|
}
|
|
1364
1448
|
return true;
|
|
1365
1449
|
};
|
|
1450
|
+
var trimEdge = (children, edge) => {
|
|
1451
|
+
const index = edge === "start" ? 0 : children.length - 1;
|
|
1452
|
+
const node = children[index];
|
|
1453
|
+
if (node?.type !== "text") {
|
|
1454
|
+
return children;
|
|
1455
|
+
}
|
|
1456
|
+
const value = edge === "start" ? node.value.trimStart() : node.value.trimEnd();
|
|
1457
|
+
const copy = [...children];
|
|
1458
|
+
if (value.length === 0) {
|
|
1459
|
+
copy.splice(index, 1);
|
|
1460
|
+
} else {
|
|
1461
|
+
copy[index] = { ...node, value };
|
|
1462
|
+
}
|
|
1463
|
+
return copy;
|
|
1464
|
+
};
|
|
1465
|
+
var liftDisplayMath = (paragraph2) => {
|
|
1466
|
+
if (!paragraph2.children.some((child) => child.type === "math")) {
|
|
1467
|
+
return void 0;
|
|
1468
|
+
}
|
|
1469
|
+
const out = [];
|
|
1470
|
+
let run = [];
|
|
1471
|
+
const flush = () => {
|
|
1472
|
+
const trimmed = trimEdge(trimEdge(run, "start"), "end");
|
|
1473
|
+
if (trimmed.length > 0) {
|
|
1474
|
+
out.push({ ...paragraph2, children: trimmed });
|
|
1475
|
+
}
|
|
1476
|
+
run = [];
|
|
1477
|
+
};
|
|
1478
|
+
for (const child of paragraph2.children) {
|
|
1479
|
+
if (child.type === "math") {
|
|
1480
|
+
flush();
|
|
1481
|
+
out.push(child);
|
|
1482
|
+
} else {
|
|
1483
|
+
run.push(child);
|
|
1484
|
+
}
|
|
1485
|
+
}
|
|
1486
|
+
flush();
|
|
1487
|
+
return out;
|
|
1488
|
+
};
|
|
1489
|
+
var liftDisplayMathIn = (node) => {
|
|
1490
|
+
if (!("children" in node)) {
|
|
1491
|
+
return;
|
|
1492
|
+
}
|
|
1493
|
+
const parent = node;
|
|
1494
|
+
for (let index = 0; index < parent.children.length; index++) {
|
|
1495
|
+
const child = parent.children[index];
|
|
1496
|
+
const lifted = child.type === "paragraph" ? liftDisplayMath(child) : void 0;
|
|
1497
|
+
if (lifted) {
|
|
1498
|
+
parent.children.splice(index, 1, ...lifted);
|
|
1499
|
+
index += lifted.length - 1;
|
|
1500
|
+
continue;
|
|
1501
|
+
}
|
|
1502
|
+
liftDisplayMathIn(child);
|
|
1503
|
+
}
|
|
1504
|
+
};
|
|
1366
1505
|
var extractMdast = (node) => {
|
|
1367
1506
|
const extracted = filter(node, (node2) => {
|
|
1368
1507
|
if (!emptyDeclarationFilter(node2)) {
|
|
@@ -1370,6 +1509,9 @@ var extractMdast = (node) => {
|
|
|
1370
1509
|
}
|
|
1371
1510
|
return true;
|
|
1372
1511
|
});
|
|
1512
|
+
if (extracted) {
|
|
1513
|
+
liftDisplayMathIn(extracted);
|
|
1514
|
+
}
|
|
1373
1515
|
return extracted;
|
|
1374
1516
|
};
|
|
1375
1517
|
|
|
@@ -1379,7 +1521,7 @@ var COMMA_REGEX = /[,、,،]/g;
|
|
|
1379
1521
|
var PARAGRAPH_LIKE = /* @__PURE__ */ new Set(["p", "pre", "li", "blockquote", "figcaption", "dd", "dt"]);
|
|
1380
1522
|
var NON_PROSE_TAGS = /* @__PURE__ */ new Set(["script", "style", "noscript", "template", "svg", "math", "iframe", "object"]);
|
|
1381
1523
|
var isElement = (node) => typeof node === "object" && node !== null && node.type === "element";
|
|
1382
|
-
var
|
|
1524
|
+
var isParent2 = (node) => typeof node === "object" && node !== null && Array.isArray(node.children);
|
|
1383
1525
|
var classList = (element3) => {
|
|
1384
1526
|
const className = element3.properties?.className;
|
|
1385
1527
|
if (Array.isArray(className)) {
|
|
@@ -1414,7 +1556,7 @@ var MetricsCollector = class {
|
|
|
1414
1556
|
elements: 0
|
|
1415
1557
|
};
|
|
1416
1558
|
}
|
|
1417
|
-
if (!
|
|
1559
|
+
if (!isParent2(node)) {
|
|
1418
1560
|
return EMPTY_METRICS;
|
|
1419
1561
|
}
|
|
1420
1562
|
const cached = this.#cache.get(node);
|
|
@@ -1464,7 +1606,7 @@ var MetricsCollector = class {
|
|
|
1464
1606
|
}
|
|
1465
1607
|
};
|
|
1466
1608
|
var pruneInPlace = (tree, keep) => {
|
|
1467
|
-
if (!
|
|
1609
|
+
if (!isParent2(tree)) {
|
|
1468
1610
|
return tree;
|
|
1469
1611
|
}
|
|
1470
1612
|
const stack = [tree];
|
|
@@ -1474,11 +1616,11 @@ var pruneInPlace = (tree, keep) => {
|
|
|
1474
1616
|
let write = 0;
|
|
1475
1617
|
for (let read = 0; read < children.length; read++) {
|
|
1476
1618
|
const child = children[read];
|
|
1477
|
-
if (!keep(child)) {
|
|
1619
|
+
if (!keep(child, parent)) {
|
|
1478
1620
|
continue;
|
|
1479
1621
|
}
|
|
1480
1622
|
children[write++] = child;
|
|
1481
|
-
if (
|
|
1623
|
+
if (isParent2(child)) {
|
|
1482
1624
|
stack.push(child);
|
|
1483
1625
|
}
|
|
1484
1626
|
}
|
|
@@ -1493,7 +1635,7 @@ var walk = (tree, visit) => {
|
|
|
1493
1635
|
if (visit(node, parent) === false) {
|
|
1494
1636
|
continue;
|
|
1495
1637
|
}
|
|
1496
|
-
if (
|
|
1638
|
+
if (isParent2(node)) {
|
|
1497
1639
|
for (let i = node.children.length - 1; i >= 0; i--) {
|
|
1498
1640
|
stack.push({ node: node.children[i], parent: node });
|
|
1499
1641
|
}
|
|
@@ -1595,6 +1737,171 @@ var isTruthyAttribute = (element3, key) => {
|
|
|
1595
1737
|
return true;
|
|
1596
1738
|
};
|
|
1597
1739
|
|
|
1740
|
+
// src/extractors/lib/code-tabs.ts
|
|
1741
|
+
var MAX_LABEL_LENGTH = 80;
|
|
1742
|
+
var CodeTabCollector = class {
|
|
1743
|
+
#groups = [];
|
|
1744
|
+
/** Groups whose tab list's parent is still being traversed, innermost last. */
|
|
1745
|
+
#open = [];
|
|
1746
|
+
#isHidden;
|
|
1747
|
+
#radioStrips = [];
|
|
1748
|
+
/** @param isHidden - Elements whose text a reader never sees, excluded from labels. */
|
|
1749
|
+
constructor(isHidden2) {
|
|
1750
|
+
this.#isHidden = isHidden2;
|
|
1751
|
+
}
|
|
1752
|
+
#applyRadioStrip(strip, parent) {
|
|
1753
|
+
const labels = strip.children.filter((child) => isElement(child) && child.tagName === "label");
|
|
1754
|
+
const panels = radioStripPanels(strip, parent);
|
|
1755
|
+
if (!panels || panels.length !== labels.length) {
|
|
1756
|
+
return;
|
|
1757
|
+
}
|
|
1758
|
+
panels.forEach((panel, index) => labelCode(panel, tabLabel(labels[index], this.#isHidden)));
|
|
1759
|
+
parent.children.splice(parent.children.indexOf(strip), 1);
|
|
1760
|
+
}
|
|
1761
|
+
/**
|
|
1762
|
+
* Call for every element, in document order, with its depth.
|
|
1763
|
+
*
|
|
1764
|
+
* A group only collects panels inside the tab list's parent: a page-level tab strip must not
|
|
1765
|
+
* lend its labels to an unrelated code switcher further down, and an inner group closes before
|
|
1766
|
+
* the outer group's next panel.
|
|
1767
|
+
*/
|
|
1768
|
+
visit(element3, depth, parent) {
|
|
1769
|
+
if (isRadioTabStrip(element3)) {
|
|
1770
|
+
this.#radioStrips.push({ strip: element3, parent });
|
|
1771
|
+
return;
|
|
1772
|
+
}
|
|
1773
|
+
while (this.#open.length > 0 && depth < (this.#open.at(-1)?.depth ?? 0)) {
|
|
1774
|
+
this.#open.pop();
|
|
1775
|
+
}
|
|
1776
|
+
const role = stringProperty(element3, "role");
|
|
1777
|
+
if (role === "tablist") {
|
|
1778
|
+
const group2 = { tabs: [], panels: [] };
|
|
1779
|
+
this.#groups.push(group2);
|
|
1780
|
+
this.#open.push({ group: group2, depth });
|
|
1781
|
+
return;
|
|
1782
|
+
}
|
|
1783
|
+
const group = this.#open.at(-1)?.group;
|
|
1784
|
+
if (!group) {
|
|
1785
|
+
return;
|
|
1786
|
+
}
|
|
1787
|
+
if (role === "tab") {
|
|
1788
|
+
group.tabs.push(element3);
|
|
1789
|
+
} else if (role === "tabpanel") {
|
|
1790
|
+
group.panels.push(element3);
|
|
1791
|
+
}
|
|
1792
|
+
}
|
|
1793
|
+
/** Labels the code block of every panel whose tab could be identified. */
|
|
1794
|
+
apply() {
|
|
1795
|
+
for (const { strip, parent } of this.#radioStrips) {
|
|
1796
|
+
this.#applyRadioStrip(strip, parent);
|
|
1797
|
+
}
|
|
1798
|
+
for (const group of this.#groups) {
|
|
1799
|
+
if (group.tabs.length < 2 || group.panels.length === 0) {
|
|
1800
|
+
continue;
|
|
1801
|
+
}
|
|
1802
|
+
for (const [panel, tab] of matchTabs(group)) {
|
|
1803
|
+
labelCode(panel, tabLabel(tab, this.#isHidden));
|
|
1804
|
+
}
|
|
1805
|
+
}
|
|
1806
|
+
}
|
|
1807
|
+
};
|
|
1808
|
+
var radioStripPanels = (strip, parent) => {
|
|
1809
|
+
const index = parent.children.indexOf(strip);
|
|
1810
|
+
for (let cursor = index + 1; cursor < parent.children.length; cursor++) {
|
|
1811
|
+
const sibling = parent.children[cursor];
|
|
1812
|
+
if (isElement(sibling)) {
|
|
1813
|
+
return sibling.children.filter(isElement);
|
|
1814
|
+
}
|
|
1815
|
+
}
|
|
1816
|
+
return void 0;
|
|
1817
|
+
};
|
|
1818
|
+
var isRadioTabStrip = (element3) => {
|
|
1819
|
+
const first = element3.children.find(isElement);
|
|
1820
|
+
if (!(first?.tagName === "input" && stringProperty(first, "type") === "radio")) {
|
|
1821
|
+
return false;
|
|
1822
|
+
}
|
|
1823
|
+
let labels = 0;
|
|
1824
|
+
for (const child of element3.children) {
|
|
1825
|
+
if (!isElement(child)) {
|
|
1826
|
+
continue;
|
|
1827
|
+
}
|
|
1828
|
+
if (child.tagName === "label") {
|
|
1829
|
+
labels += 1;
|
|
1830
|
+
} else if (!(child.tagName === "input" && stringProperty(child, "type") === "radio")) {
|
|
1831
|
+
return false;
|
|
1832
|
+
}
|
|
1833
|
+
}
|
|
1834
|
+
return labels >= 2;
|
|
1835
|
+
};
|
|
1836
|
+
var indexById = (elements) => {
|
|
1837
|
+
const byId = /* @__PURE__ */ new Map();
|
|
1838
|
+
for (const element3 of elements) {
|
|
1839
|
+
const id = stringProperty(element3, "id");
|
|
1840
|
+
if (id) {
|
|
1841
|
+
byId.set(id, element3);
|
|
1842
|
+
}
|
|
1843
|
+
}
|
|
1844
|
+
return byId;
|
|
1845
|
+
};
|
|
1846
|
+
var matchTabs = ({ tabs, panels }) => {
|
|
1847
|
+
const tabById = indexById(tabs);
|
|
1848
|
+
const panelById = indexById(panels);
|
|
1849
|
+
const tabOf = /* @__PURE__ */ new Map();
|
|
1850
|
+
for (const panel of panels) {
|
|
1851
|
+
const tab = tabById.get(stringProperty(panel, "ariaLabelledBy") ?? "");
|
|
1852
|
+
if (tab) {
|
|
1853
|
+
tabOf.set(panel, tab);
|
|
1854
|
+
}
|
|
1855
|
+
}
|
|
1856
|
+
for (const tab of tabs) {
|
|
1857
|
+
const panel = panelById.get(stringProperty(tab, "ariaControls") ?? "");
|
|
1858
|
+
if (panel && !tabOf.has(panel)) {
|
|
1859
|
+
tabOf.set(panel, tab);
|
|
1860
|
+
}
|
|
1861
|
+
}
|
|
1862
|
+
if (tabOf.size === 0 && tabs.length === panels.length) {
|
|
1863
|
+
panels.forEach((panel, index) => tabOf.set(panel, tabs[index]));
|
|
1864
|
+
}
|
|
1865
|
+
return tabOf;
|
|
1866
|
+
};
|
|
1867
|
+
var tabLabel = (tab, isHidden2) => {
|
|
1868
|
+
const label = (textOf(tab, isHidden2) || stringProperty(tab, "dataTitle") || "").replace(/\s+/g, " ").trim();
|
|
1869
|
+
return label.length > 0 && label.length <= MAX_LABEL_LENGTH ? label : void 0;
|
|
1870
|
+
};
|
|
1871
|
+
var labelCode = (panel, label) => {
|
|
1872
|
+
if (!label) {
|
|
1873
|
+
return;
|
|
1874
|
+
}
|
|
1875
|
+
const blocks = [];
|
|
1876
|
+
collectPre(panel, blocks);
|
|
1877
|
+
if (blocks.length === 1 && stringProperty(blocks[0], "dataTitle") === void 0) {
|
|
1878
|
+
blocks[0].properties.dataTitle = label;
|
|
1879
|
+
}
|
|
1880
|
+
};
|
|
1881
|
+
var collectPre = (element3, into) => {
|
|
1882
|
+
for (const child of element3.children) {
|
|
1883
|
+
if (!isElement(child) || into.length > 1) {
|
|
1884
|
+
continue;
|
|
1885
|
+
}
|
|
1886
|
+
if (child.tagName === "pre") {
|
|
1887
|
+
into.push(child);
|
|
1888
|
+
continue;
|
|
1889
|
+
}
|
|
1890
|
+
collectPre(child, into);
|
|
1891
|
+
}
|
|
1892
|
+
};
|
|
1893
|
+
var textOf = (element3, isHidden2) => {
|
|
1894
|
+
let text6 = "";
|
|
1895
|
+
for (const child of element3.children) {
|
|
1896
|
+
if (child.type === "text") {
|
|
1897
|
+
text6 += child.value;
|
|
1898
|
+
} else if (isElement(child) && !isHidden2(child)) {
|
|
1899
|
+
text6 += textOf(child, isHidden2);
|
|
1900
|
+
}
|
|
1901
|
+
}
|
|
1902
|
+
return text6;
|
|
1903
|
+
};
|
|
1904
|
+
|
|
1598
1905
|
// src/extractors/lib/constants.ts
|
|
1599
1906
|
var REGEXPS = {
|
|
1600
1907
|
/**
|
|
@@ -1605,7 +1912,7 @@ var REGEXPS = {
|
|
|
1605
1912
|
* `class="post-header"`), so matching them here deletes the page's headings. The landmark
|
|
1606
1913
|
* versions of those elements are handled structurally instead.
|
|
1607
1914
|
*/
|
|
1608
|
-
unlikelyCandidates: /-ad-|ai2html|banner|breadcrumb|combx|comment(?!ary)|community|cover-wrap|disqus|gdpr|legends|menu|related|remark|replies|rss|shoutbox|sidebar|site-index|skyscraper|social|sponsor|supplemental|ad-break|agegate|pagination|pager|popup|yom-remote|speechify-ignore|avatar|subscribe|newsletter|paywall|consent|cookie|toolbar|masthead|promo|share|sharing|widget|tooltip|dropdown|modal|overlay|backdrop|carousel|announcement|notification|toast|skip-link|screen-reader|visually-hidden|sr-only/i,
|
|
1915
|
+
unlikelyCandidates: /-ad-|ai2html|banner|breadcrumb|combx|comment(?!ary)|community|cover-wrap|disqus|gdpr|legends|menu|related|remark|replies|rss|shoutbox|sidebar|site-index|skyscraper|social|sponsor|supplemental|ad-break|agegate|pagination|pager|popup|yom-remote|speechify-ignore|avatar|subscribe|newsletter|paywall|consent|cookie|toolbar|masthead|promo|share|sharing|widget|tooltip|dropdown|modal|overlay|backdrop|carousel|announcement|notification|toast|skip-link|screen-reader|(?<!not-)visually-hidden|(?<!not-)sr-only/i,
|
|
1609
1916
|
/** Rescues containers whose class merely happens to contain an unlikely substring. */
|
|
1610
1917
|
okMaybeItsaCandidate: /and|article|body|column|content|main|shadow|code|post|entry|story|markdown|prose|doc/i,
|
|
1611
1918
|
/** Very high-confidence boilerplate, not rescued by the clause above. */
|
|
@@ -1823,26 +2130,43 @@ var isUiChromeText = (text6) => {
|
|
|
1823
2130
|
}
|
|
1824
2131
|
return UI_PHRASES.has(normalized);
|
|
1825
2132
|
};
|
|
2133
|
+
var CONSENT_PLACEHOLDER = /^(this content (isn['’]?t|is not) (visible|available) (due to|because of) your (cookie|privacy) (preferences|settings)|we need your (consent|permission) to load|to (view|see|load) this (content|embed|video|post)[, ]+(please )?(enable|accept|allow|update)|(please )?(accept|allow|enable) (all |marketing |functional )?cookies to (view|see|load|watch)|このコンテンツを表示するには.{0,30}(cookie|クッキー|同意|許可))/i;
|
|
2134
|
+
var MAX_CONSENT_PLACEHOLDER_LENGTH = 400;
|
|
2135
|
+
var isConsentPlaceholderText = (text6) => text6.length <= MAX_CONSENT_PLACEHOLDER_LENGTH && CONSENT_PLACEHOLDER.test(text6.trimStart());
|
|
1826
2136
|
|
|
1827
2137
|
// src/extractors/lib/sanitize.ts
|
|
1828
2138
|
var INVISIBLE_STYLE = /(^|;)\s*(display\s*:\s*none|visibility\s*:\s*hidden)\s*(;|$)/i;
|
|
1829
2139
|
var hasHiddenClass = (element3) => {
|
|
1830
2140
|
const classes = classList(element3);
|
|
1831
2141
|
if (!classes.some((name) => HIDDEN_CLASS_NAMES.has(name))) {
|
|
1832
|
-
return classes.some((name) => REGEXPS.hidden.test(name));
|
|
2142
|
+
return classes.some((name) => REGEXPS.hidden.test(name) || isScreenReaderOnlyClass(name));
|
|
1833
2143
|
}
|
|
1834
2144
|
return !classes.some((name) => RESPONSIVE_DISPLAY_OVERRIDE.test(name));
|
|
1835
2145
|
};
|
|
2146
|
+
var SCREEN_READER_ONLY = /^(sronly|visuallyhidden|screenreader(only|text))(focusable|styles\w*)?$/;
|
|
2147
|
+
var isScreenReaderOnlyClass = (name) => {
|
|
2148
|
+
const first = name.charCodeAt(0) | 32;
|
|
2149
|
+
if (first !== 115 && first !== 118) {
|
|
2150
|
+
return false;
|
|
2151
|
+
}
|
|
2152
|
+
return SCREEN_READER_ONLY.test(name.toLowerCase().replace(/[-_]/g, ""));
|
|
2153
|
+
};
|
|
1836
2154
|
var isNonContent = (node) => {
|
|
1837
2155
|
if (node.type === "comment" || node.type === "doctype") {
|
|
1838
2156
|
return true;
|
|
1839
2157
|
}
|
|
1840
2158
|
return isElement(node) && NON_CONTENT_TAGS.has(node.tagName);
|
|
1841
2159
|
};
|
|
1842
|
-
var isHidden = (element3) => {
|
|
2160
|
+
var isHidden = (element3, parent, siblingCode) => {
|
|
2161
|
+
if (!looksHidden(element3)) {
|
|
2162
|
+
return false;
|
|
2163
|
+
}
|
|
1843
2164
|
if (containsMath(element3)) {
|
|
1844
2165
|
return false;
|
|
1845
2166
|
}
|
|
2167
|
+
return !isHiddenCodePanel(element3, parent, siblingCode);
|
|
2168
|
+
};
|
|
2169
|
+
var looksHidden = (element3) => {
|
|
1846
2170
|
if (isTruthyAttribute(element3, "hidden")) {
|
|
1847
2171
|
return true;
|
|
1848
2172
|
}
|
|
@@ -1855,10 +2179,57 @@ var isHidden = (element3) => {
|
|
|
1855
2179
|
}
|
|
1856
2180
|
const width = numericProperty(element3, "data-rwidth");
|
|
1857
2181
|
const height = numericProperty(element3, "data-rheight");
|
|
1858
|
-
|
|
2182
|
+
return width === 0 && height === 0;
|
|
2183
|
+
};
|
|
2184
|
+
var MAX_CODE_PANEL_PROSE = 200;
|
|
2185
|
+
var panelCode = (element3) => {
|
|
2186
|
+
let code = "";
|
|
2187
|
+
let prose = 0;
|
|
2188
|
+
const visit = (node, insideCode) => {
|
|
2189
|
+
for (const child of node.children) {
|
|
2190
|
+
if (child.type === "text") {
|
|
2191
|
+
if (insideCode) {
|
|
2192
|
+
code += child.value;
|
|
2193
|
+
} else {
|
|
2194
|
+
prose += child.value.trim().length;
|
|
2195
|
+
if (prose > MAX_CODE_PANEL_PROSE) {
|
|
2196
|
+
return false;
|
|
2197
|
+
}
|
|
2198
|
+
}
|
|
2199
|
+
} else if (isElement(child) && !visit(child, insideCode || child.tagName === "pre")) {
|
|
2200
|
+
return false;
|
|
2201
|
+
}
|
|
2202
|
+
}
|
|
1859
2203
|
return true;
|
|
2204
|
+
};
|
|
2205
|
+
return visit(element3, element3.tagName === "pre") && code.trim().length > 0 ? code : void 0;
|
|
2206
|
+
};
|
|
2207
|
+
var visibleSiblingCode = (parent, cache) => {
|
|
2208
|
+
let codes = cache.get(parent);
|
|
2209
|
+
if (!codes) {
|
|
2210
|
+
codes = /* @__PURE__ */ new Set();
|
|
2211
|
+
for (const child of parent.children) {
|
|
2212
|
+
if (isElement(child) && !looksHidden(child)) {
|
|
2213
|
+
const code = panelCode(child);
|
|
2214
|
+
if (code !== void 0) {
|
|
2215
|
+
codes.add(code);
|
|
2216
|
+
}
|
|
2217
|
+
}
|
|
2218
|
+
}
|
|
2219
|
+
cache.set(parent, codes);
|
|
1860
2220
|
}
|
|
1861
|
-
return
|
|
2221
|
+
return codes;
|
|
2222
|
+
};
|
|
2223
|
+
var isHiddenCodePanel = (element3, parent, cache) => {
|
|
2224
|
+
const code = panelCode(element3);
|
|
2225
|
+
if (code === void 0) {
|
|
2226
|
+
return false;
|
|
2227
|
+
}
|
|
2228
|
+
const siblings = visibleSiblingCode(parent, cache);
|
|
2229
|
+
if (siblings.has(code)) {
|
|
2230
|
+
return false;
|
|
2231
|
+
}
|
|
2232
|
+
return stringProperty(element3, "role") === "tabpanel" || siblings.size > 0;
|
|
1862
2233
|
};
|
|
1863
2234
|
var PLACEHOLDER_IMAGE_SRC = /^data:image\/|^about:blank$|spacer\.gif$|blank\.(gif|png)$/i;
|
|
1864
2235
|
var isPlaceholderImage = (element3) => {
|
|
@@ -1876,15 +2247,16 @@ var isPlaceholderImage = (element3) => {
|
|
|
1876
2247
|
}
|
|
1877
2248
|
return false;
|
|
1878
2249
|
};
|
|
1879
|
-
var hoistNoscriptImages = (tree) => {
|
|
1880
|
-
const visit = (parent) => {
|
|
2250
|
+
var hoistNoscriptImages = (tree, onElement) => {
|
|
2251
|
+
const visit = (parent, depth) => {
|
|
1881
2252
|
for (let index = 0; index < parent.children.length; index++) {
|
|
1882
2253
|
const child = parent.children[index];
|
|
1883
2254
|
if (!isElement(child)) {
|
|
1884
2255
|
continue;
|
|
1885
2256
|
}
|
|
1886
2257
|
if (child.tagName !== "noscript") {
|
|
1887
|
-
|
|
2258
|
+
onElement?.(child, depth, parent);
|
|
2259
|
+
visit(child, depth + 1);
|
|
1888
2260
|
continue;
|
|
1889
2261
|
}
|
|
1890
2262
|
const hasImage = child.children.some(
|
|
@@ -1904,7 +2276,7 @@ var hoistNoscriptImages = (tree) => {
|
|
|
1904
2276
|
}
|
|
1905
2277
|
};
|
|
1906
2278
|
if ("children" in tree) {
|
|
1907
|
-
visit(tree);
|
|
2279
|
+
visit(tree, 0);
|
|
1908
2280
|
}
|
|
1909
2281
|
};
|
|
1910
2282
|
var containsMath = (element3) => {
|
|
@@ -1919,12 +2291,15 @@ var containsMath = (element3) => {
|
|
|
1919
2291
|
return false;
|
|
1920
2292
|
};
|
|
1921
2293
|
var stripNonContent = (tree) => {
|
|
1922
|
-
|
|
1923
|
-
|
|
2294
|
+
const tabs = new CodeTabCollector((element3) => looksHidden(element3) || NON_CONTENT_TAGS.has(element3.tagName));
|
|
2295
|
+
hoistNoscriptImages(tree, (element3, depth, parent) => tabs.visit(element3, depth, parent));
|
|
2296
|
+
tabs.apply();
|
|
2297
|
+
const siblingCode = /* @__PURE__ */ new WeakMap();
|
|
2298
|
+
return pruneInPlace(tree, (node, parent) => {
|
|
1924
2299
|
if (isNonContent(node)) {
|
|
1925
2300
|
return false;
|
|
1926
2301
|
}
|
|
1927
|
-
if (isElement(node) && isHidden(node)) {
|
|
2302
|
+
if (isElement(node) && isHidden(node, parent, siblingCode)) {
|
|
1928
2303
|
return false;
|
|
1929
2304
|
}
|
|
1930
2305
|
return true;
|
|
@@ -1951,32 +2326,32 @@ var findLandmarkChrome = (tree) => {
|
|
|
1951
2326
|
visit(tree, 0, false);
|
|
1952
2327
|
return chrome;
|
|
1953
2328
|
};
|
|
1954
|
-
var
|
|
2329
|
+
var unlikelyTier = (element3) => {
|
|
1955
2330
|
if (element3.tagName === "article" || element3.tagName === "main" || element3.tagName === "body") {
|
|
1956
|
-
return
|
|
2331
|
+
return void 0;
|
|
1957
2332
|
}
|
|
1958
2333
|
const role = stringProperty(element3, "role");
|
|
1959
2334
|
if (role && UNLIKELY_ROLES.has(role)) {
|
|
1960
|
-
return
|
|
2335
|
+
return "strong";
|
|
1961
2336
|
}
|
|
1962
2337
|
if (CHROME_TAGS.has(element3.tagName)) {
|
|
1963
|
-
return
|
|
2338
|
+
return "strong";
|
|
1964
2339
|
}
|
|
1965
2340
|
const match = matchString(element3);
|
|
1966
2341
|
if (REGEXPS.specialUnlikelyCandidates.test(match)) {
|
|
1967
|
-
return
|
|
2342
|
+
return "strong";
|
|
1968
2343
|
}
|
|
1969
2344
|
for (const name of [...classList(element3), stringProperty(element3, "id") ?? ""]) {
|
|
1970
2345
|
if (REGEXPS.stronglyUnlikely.test(name)) {
|
|
1971
|
-
return
|
|
2346
|
+
return "strong";
|
|
1972
2347
|
}
|
|
1973
2348
|
}
|
|
1974
2349
|
if (REGEXPS.unlikelyCandidates.test(match) && !REGEXPS.okMaybeItsaCandidate.test(match)) {
|
|
1975
|
-
return
|
|
2350
|
+
return "weak";
|
|
1976
2351
|
}
|
|
1977
|
-
return
|
|
2352
|
+
return void 0;
|
|
1978
2353
|
};
|
|
1979
|
-
var findUnlikelyElements = (tree) => {
|
|
2354
|
+
var findUnlikelyElements = (tree, spareWeak) => {
|
|
1980
2355
|
const landmarks = findLandmarkChrome(tree);
|
|
1981
2356
|
const doomed = [];
|
|
1982
2357
|
const visit = (node) => {
|
|
@@ -1987,7 +2362,15 @@ var findUnlikelyElements = (tree) => {
|
|
|
1987
2362
|
if (!isElement(child)) {
|
|
1988
2363
|
continue;
|
|
1989
2364
|
}
|
|
1990
|
-
if (landmarks.has(child)
|
|
2365
|
+
if (landmarks.has(child)) {
|
|
2366
|
+
doomed.push(child);
|
|
2367
|
+
continue;
|
|
2368
|
+
}
|
|
2369
|
+
if (PREFORMATTED_TAGS.has(child.tagName)) {
|
|
2370
|
+
continue;
|
|
2371
|
+
}
|
|
2372
|
+
const tier = unlikelyTier(child);
|
|
2373
|
+
if (tier === "strong" || tier === "weak" && !spareWeak?.(child)) {
|
|
1991
2374
|
doomed.push(child);
|
|
1992
2375
|
continue;
|
|
1993
2376
|
}
|
|
@@ -2026,14 +2409,14 @@ var collectPreformattedElements = (tree) => {
|
|
|
2026
2409
|
return protectedElements;
|
|
2027
2410
|
};
|
|
2028
2411
|
var dropEmptyElements = (tree, collector) => {
|
|
2029
|
-
const
|
|
2412
|
+
const preformatted2 = collectPreformattedElements(tree);
|
|
2030
2413
|
const visit = (parent) => {
|
|
2031
2414
|
for (let index = 0; index < parent.children.length; index++) {
|
|
2032
2415
|
const child = parent.children[index];
|
|
2033
2416
|
if (!isElement(child)) {
|
|
2034
2417
|
continue;
|
|
2035
2418
|
}
|
|
2036
|
-
if (
|
|
2419
|
+
if (preformatted2.has(child) || !DROP_WHEN_EMPTY_TAGS.has(child.tagName)) {
|
|
2037
2420
|
visit(child);
|
|
2038
2421
|
continue;
|
|
2039
2422
|
}
|
|
@@ -2128,11 +2511,15 @@ var findCleanupTargets = (tree, collector) => {
|
|
|
2128
2511
|
visit(child);
|
|
2129
2512
|
continue;
|
|
2130
2513
|
}
|
|
2514
|
+
if (LITERAL_TEXT_TAGS.has(child.tagName)) {
|
|
2515
|
+
collectButtons(child, doomed);
|
|
2516
|
+
continue;
|
|
2517
|
+
}
|
|
2131
2518
|
if (isLinkOnlyBlock(child, collector)) {
|
|
2132
2519
|
condemnLinkBlock(child, siblings, index, collector, doomed);
|
|
2133
2520
|
continue;
|
|
2134
2521
|
}
|
|
2135
|
-
if (isMidArticleWidget(child)) {
|
|
2522
|
+
if (isMidArticleWidget(child, collector)) {
|
|
2136
2523
|
doomed.push(child);
|
|
2137
2524
|
continue;
|
|
2138
2525
|
}
|
|
@@ -2174,18 +2561,52 @@ var countAnchors = (element3) => {
|
|
|
2174
2561
|
return count;
|
|
2175
2562
|
};
|
|
2176
2563
|
var LITERAL_TEXT_TAGS = /* @__PURE__ */ new Set(["code", "kbd", "samp", "var", "pre"]);
|
|
2177
|
-
var
|
|
2178
|
-
|
|
2179
|
-
|
|
2564
|
+
var PREFORMATTED_TAGS = /* @__PURE__ */ new Set(["pre", "code"]);
|
|
2565
|
+
var collectButtons = (element3, into) => {
|
|
2566
|
+
for (const child of element3.children) {
|
|
2567
|
+
if (!isElement(child)) {
|
|
2568
|
+
continue;
|
|
2569
|
+
}
|
|
2570
|
+
if (child.tagName === "button") {
|
|
2571
|
+
into.push(child);
|
|
2572
|
+
continue;
|
|
2573
|
+
}
|
|
2574
|
+
collectButtons(child, into);
|
|
2180
2575
|
}
|
|
2576
|
+
};
|
|
2577
|
+
var isMidArticleWidget = (element3, collector) => {
|
|
2181
2578
|
if (element3.tagName === "form" || element3.tagName === "fieldset") {
|
|
2182
2579
|
return true;
|
|
2183
2580
|
}
|
|
2184
2581
|
if (element3.tagName === "button") {
|
|
2185
2582
|
return true;
|
|
2186
2583
|
}
|
|
2187
|
-
|
|
2584
|
+
if (collector.metrics(element3).text > MAX_CONSENT_PLACEHOLDER_LENGTH) {
|
|
2585
|
+
return false;
|
|
2586
|
+
}
|
|
2587
|
+
const text6 = elementText(element3);
|
|
2588
|
+
return isUiChromeText(text6) || isConsentPlaceholderText(text6) && !hasBlockDescendant(element3);
|
|
2188
2589
|
};
|
|
2590
|
+
var BLOCK_TAGS = /* @__PURE__ */ new Set([
|
|
2591
|
+
"p",
|
|
2592
|
+
"div",
|
|
2593
|
+
"section",
|
|
2594
|
+
"article",
|
|
2595
|
+
"figure",
|
|
2596
|
+
"figcaption",
|
|
2597
|
+
"blockquote",
|
|
2598
|
+
"ul",
|
|
2599
|
+
"ol",
|
|
2600
|
+
"table",
|
|
2601
|
+
"pre",
|
|
2602
|
+
"h1",
|
|
2603
|
+
"h2",
|
|
2604
|
+
"h3",
|
|
2605
|
+
"h4",
|
|
2606
|
+
"h5",
|
|
2607
|
+
"h6"
|
|
2608
|
+
]);
|
|
2609
|
+
var hasBlockDescendant = (element3) => element3.children.some((child) => isElement(child) && (BLOCK_TAGS.has(child.tagName) || hasBlockDescendant(child)));
|
|
2189
2610
|
var cleanContent = (tree, collector) => {
|
|
2190
2611
|
const doomed = new Set(findCleanupTargets(tree, collector));
|
|
2191
2612
|
if (doomed.size > 0) {
|
|
@@ -2787,6 +3208,172 @@ var runAdapters = (context, adapters = BUILTIN_ADAPTERS) => {
|
|
|
2787
3208
|
return new MetricsCollector().textLength(extracted) >= MIN_ADAPTER_TEXT ? extracted : void 0;
|
|
2788
3209
|
};
|
|
2789
3210
|
|
|
3211
|
+
// src/extractors/lib/blocks.ts
|
|
3212
|
+
var BLOCK_TAGS2 = /* @__PURE__ */ new Set([
|
|
3213
|
+
"address",
|
|
3214
|
+
"article",
|
|
3215
|
+
"aside",
|
|
3216
|
+
"blockquote",
|
|
3217
|
+
"body",
|
|
3218
|
+
"caption",
|
|
3219
|
+
"center",
|
|
3220
|
+
"dd",
|
|
3221
|
+
"details",
|
|
3222
|
+
"dialog",
|
|
3223
|
+
"div",
|
|
3224
|
+
"dl",
|
|
3225
|
+
"dt",
|
|
3226
|
+
"fieldset",
|
|
3227
|
+
"figcaption",
|
|
3228
|
+
"figure",
|
|
3229
|
+
"footer",
|
|
3230
|
+
"form",
|
|
3231
|
+
"h1",
|
|
3232
|
+
"h2",
|
|
3233
|
+
"h3",
|
|
3234
|
+
"h4",
|
|
3235
|
+
"h5",
|
|
3236
|
+
"h6",
|
|
3237
|
+
"header",
|
|
3238
|
+
"hgroup",
|
|
3239
|
+
"hr",
|
|
3240
|
+
"html",
|
|
3241
|
+
"li",
|
|
3242
|
+
"main",
|
|
3243
|
+
"menu",
|
|
3244
|
+
"nav",
|
|
3245
|
+
"ol",
|
|
3246
|
+
"p",
|
|
3247
|
+
"pre",
|
|
3248
|
+
"section",
|
|
3249
|
+
"summary",
|
|
3250
|
+
"table",
|
|
3251
|
+
"tbody",
|
|
3252
|
+
"td",
|
|
3253
|
+
"tfoot",
|
|
3254
|
+
"th",
|
|
3255
|
+
"thead",
|
|
3256
|
+
"tr",
|
|
3257
|
+
"ul"
|
|
3258
|
+
]);
|
|
3259
|
+
var SKIP_TAGS = /* @__PURE__ */ new Set(["script", "style", "noscript", "template", "svg", "math", "head", "title", "iframe"]);
|
|
3260
|
+
var collapse = (value) => value.replace(/\s+/g, " ");
|
|
3261
|
+
var segmentBlocks = (root, maxBlocks = 2e4) => {
|
|
3262
|
+
const blocks = [];
|
|
3263
|
+
let frame;
|
|
3264
|
+
const enter = (element3) => {
|
|
3265
|
+
frame = { element: element3, parent: frame, depth: (frame?.depth ?? 0) + 1 };
|
|
3266
|
+
};
|
|
3267
|
+
const leave = () => {
|
|
3268
|
+
frame = frame?.parent;
|
|
3269
|
+
};
|
|
3270
|
+
let text6 = "";
|
|
3271
|
+
let linkChars = 0;
|
|
3272
|
+
let links = 0;
|
|
3273
|
+
let images = 0;
|
|
3274
|
+
const flush = () => {
|
|
3275
|
+
const trimmed = text6.trim();
|
|
3276
|
+
if (frame && (trimmed.length > 0 || images > 0) && blocks.length < maxBlocks) {
|
|
3277
|
+
blocks.push({
|
|
3278
|
+
index: blocks.length,
|
|
3279
|
+
owner: frame.element,
|
|
3280
|
+
frame,
|
|
3281
|
+
text: trimmed,
|
|
3282
|
+
linkChars: Math.min(linkChars, trimmed.length),
|
|
3283
|
+
links,
|
|
3284
|
+
images
|
|
3285
|
+
});
|
|
3286
|
+
}
|
|
3287
|
+
text6 = "";
|
|
3288
|
+
linkChars = 0;
|
|
3289
|
+
links = 0;
|
|
3290
|
+
images = 0;
|
|
3291
|
+
};
|
|
3292
|
+
const visitInline = (node, inLink) => {
|
|
3293
|
+
if (node.type === "text") {
|
|
3294
|
+
const value = collapse(node.value);
|
|
3295
|
+
text6 += value;
|
|
3296
|
+
if (inLink) {
|
|
3297
|
+
linkChars += value.trim().length;
|
|
3298
|
+
}
|
|
3299
|
+
return;
|
|
3300
|
+
}
|
|
3301
|
+
if (!isElement(node)) {
|
|
3302
|
+
return;
|
|
3303
|
+
}
|
|
3304
|
+
visit(node, inLink);
|
|
3305
|
+
};
|
|
3306
|
+
const visit = (element3, inLink) => {
|
|
3307
|
+
const tag = element3.tagName;
|
|
3308
|
+
if (SKIP_TAGS.has(tag)) {
|
|
3309
|
+
return;
|
|
3310
|
+
}
|
|
3311
|
+
if (tag === "br") {
|
|
3312
|
+
text6 += " ";
|
|
3313
|
+
return;
|
|
3314
|
+
}
|
|
3315
|
+
if (tag === "img") {
|
|
3316
|
+
images += 1;
|
|
3317
|
+
return;
|
|
3318
|
+
}
|
|
3319
|
+
if (tag === "pre") {
|
|
3320
|
+
flush();
|
|
3321
|
+
enter(element3);
|
|
3322
|
+
text6 = preformatted(element3);
|
|
3323
|
+
flush();
|
|
3324
|
+
leave();
|
|
3325
|
+
return;
|
|
3326
|
+
}
|
|
3327
|
+
if (BLOCK_TAGS2.has(tag)) {
|
|
3328
|
+
flush();
|
|
3329
|
+
enter(element3);
|
|
3330
|
+
for (const child of element3.children) {
|
|
3331
|
+
visitInline(child, inLink);
|
|
3332
|
+
}
|
|
3333
|
+
flush();
|
|
3334
|
+
leave();
|
|
3335
|
+
return;
|
|
3336
|
+
}
|
|
3337
|
+
const isLink = tag === "a" && stringProperty(element3, "href") !== void 0;
|
|
3338
|
+
if (isLink) {
|
|
3339
|
+
links += 1;
|
|
3340
|
+
}
|
|
3341
|
+
for (const child of element3.children) {
|
|
3342
|
+
visitInline(child, inLink || isLink);
|
|
3343
|
+
}
|
|
3344
|
+
};
|
|
3345
|
+
if (isElement(root)) {
|
|
3346
|
+
visit(root, false);
|
|
3347
|
+
} else if ("children" in root) {
|
|
3348
|
+
for (const child of root.children) {
|
|
3349
|
+
visitInline(child, false);
|
|
3350
|
+
}
|
|
3351
|
+
flush();
|
|
3352
|
+
}
|
|
3353
|
+
return blocks;
|
|
3354
|
+
};
|
|
3355
|
+
var preformatted = (element3) => {
|
|
3356
|
+
let value = "";
|
|
3357
|
+
const walk2 = (node) => {
|
|
3358
|
+
if (node.type === "text") {
|
|
3359
|
+
value += node.value;
|
|
3360
|
+
} else if (isElement(node) && !SKIP_TAGS.has(node.tagName)) {
|
|
3361
|
+
for (const child of node.children) {
|
|
3362
|
+
walk2(child);
|
|
3363
|
+
}
|
|
3364
|
+
}
|
|
3365
|
+
};
|
|
3366
|
+
walk2(element3);
|
|
3367
|
+
return value;
|
|
3368
|
+
};
|
|
3369
|
+
var ancestorAt = (block, up) => {
|
|
3370
|
+
let current = block.frame;
|
|
3371
|
+
for (let step = 0; step < up && current; step++) {
|
|
3372
|
+
current = current.parent;
|
|
3373
|
+
}
|
|
3374
|
+
return current?.element;
|
|
3375
|
+
};
|
|
3376
|
+
|
|
2790
3377
|
// src/extractors/lib/score.ts
|
|
2791
3378
|
var TAG_BASE_SCORE = {
|
|
2792
3379
|
div: 5,
|
|
@@ -3012,6 +3599,588 @@ var climbToArticleBoundary = (top, candidates, context) => {
|
|
|
3012
3599
|
return current;
|
|
3013
3600
|
};
|
|
3014
3601
|
|
|
3602
|
+
// src/extractors/lib/block-features.ts
|
|
3603
|
+
var FEATURE_NAMES = [
|
|
3604
|
+
"bias",
|
|
3605
|
+
"logLen",
|
|
3606
|
+
"linkDensity",
|
|
3607
|
+
"logLinks",
|
|
3608
|
+
"hasImage",
|
|
3609
|
+
"textless",
|
|
3610
|
+
"punctDensity",
|
|
3611
|
+
"digitRatio",
|
|
3612
|
+
"sentenceEnds",
|
|
3613
|
+
"tag_p",
|
|
3614
|
+
"tag_li",
|
|
3615
|
+
"tag_cell",
|
|
3616
|
+
"tag_h1",
|
|
3617
|
+
"tag_h2_6",
|
|
3618
|
+
"tag_pre",
|
|
3619
|
+
"tag_div",
|
|
3620
|
+
"tag_dtdd",
|
|
3621
|
+
"tag_blockquote",
|
|
3622
|
+
"tag_figcaption",
|
|
3623
|
+
"in_nav",
|
|
3624
|
+
"in_header",
|
|
3625
|
+
"in_footer",
|
|
3626
|
+
"in_aside",
|
|
3627
|
+
"in_article",
|
|
3628
|
+
"in_main",
|
|
3629
|
+
"in_form",
|
|
3630
|
+
"in_table",
|
|
3631
|
+
"in_list",
|
|
3632
|
+
"role_chrome",
|
|
3633
|
+
"role_content",
|
|
3634
|
+
"cls_unlikely",
|
|
3635
|
+
"cls_positive",
|
|
3636
|
+
"cls_negative",
|
|
3637
|
+
"cls_strong",
|
|
3638
|
+
"cls_special",
|
|
3639
|
+
"cls_byline",
|
|
3640
|
+
"cls_comment",
|
|
3641
|
+
"landmark",
|
|
3642
|
+
"doom_strong",
|
|
3643
|
+
"doom_weak",
|
|
3644
|
+
"depth",
|
|
3645
|
+
"relPos",
|
|
3646
|
+
"relCharPos",
|
|
3647
|
+
"prev_logLen",
|
|
3648
|
+
"prev_linkDensity",
|
|
3649
|
+
"next_logLen",
|
|
3650
|
+
"next_linkDensity",
|
|
3651
|
+
"win_linkDensity",
|
|
3652
|
+
"win_logLen",
|
|
3653
|
+
"parent_linkDensity",
|
|
3654
|
+
"parent_logText",
|
|
3655
|
+
"gparent_linkDensity",
|
|
3656
|
+
"gparent_logText",
|
|
3657
|
+
"inTopCandidate",
|
|
3658
|
+
"candidateScore",
|
|
3659
|
+
"inTopSibling",
|
|
3660
|
+
"takumi_kept"
|
|
3661
|
+
];
|
|
3662
|
+
var FEATURE_COUNT = FEATURE_NAMES.length;
|
|
3663
|
+
var PUNCT = /* @__PURE__ */ new Set([...".,;:!?\u3001\u3002\uFF0C\uFF0E\uFF01\uFF1F\uFF1B\uFF1A"]);
|
|
3664
|
+
var SENTENCE_END = /* @__PURE__ */ new Set([...".!?\u3002\uFF01\uFF1F"]);
|
|
3665
|
+
var textStats = (text6) => {
|
|
3666
|
+
let punct = 0;
|
|
3667
|
+
let digits = 0;
|
|
3668
|
+
let sentences = 0;
|
|
3669
|
+
for (let index = 0; index < text6.length; index++) {
|
|
3670
|
+
const char = text6[index];
|
|
3671
|
+
const code = text6.charCodeAt(index);
|
|
3672
|
+
if (code >= 48 && code <= 57) {
|
|
3673
|
+
digits += 1;
|
|
3674
|
+
} else if (PUNCT.has(char)) {
|
|
3675
|
+
punct += 1;
|
|
3676
|
+
const next = text6.charCodeAt(index + 1);
|
|
3677
|
+
if (SENTENCE_END.has(char) && (Number.isNaN(next) || next === 32 || next === 10 || code > 12288)) {
|
|
3678
|
+
sentences += 1;
|
|
3679
|
+
}
|
|
3680
|
+
}
|
|
3681
|
+
}
|
|
3682
|
+
return { punct, digits, sentences };
|
|
3683
|
+
};
|
|
3684
|
+
var COMMENT = /comment|disqus|reply|respond/i;
|
|
3685
|
+
var log1p = (value) => Math.log(1 + value);
|
|
3686
|
+
var signalsOf = (element3, cache) => {
|
|
3687
|
+
let signals = cache.get(element3);
|
|
3688
|
+
if (signals) {
|
|
3689
|
+
return signals;
|
|
3690
|
+
}
|
|
3691
|
+
const match = matchString(element3);
|
|
3692
|
+
const role = stringProperty(element3, "role") ?? "";
|
|
3693
|
+
const names = [...classList(element3), stringProperty(element3, "id") ?? ""];
|
|
3694
|
+
signals = {
|
|
3695
|
+
unlikely: REGEXPS.unlikelyCandidates.test(match) && !REGEXPS.okMaybeItsaCandidate.test(match),
|
|
3696
|
+
positive: REGEXPS.positive.test(match),
|
|
3697
|
+
negative: REGEXPS.negative.test(match),
|
|
3698
|
+
strong: names.some((name) => REGEXPS.stronglyUnlikely.test(name)),
|
|
3699
|
+
special: REGEXPS.specialUnlikelyCandidates.test(match),
|
|
3700
|
+
byline: REGEXPS.byline.test(match),
|
|
3701
|
+
comment: COMMENT.test(match),
|
|
3702
|
+
roleChrome: UNLIKELY_ROLES.has(role),
|
|
3703
|
+
roleContent: CONTENT_ROLES.has(role)
|
|
3704
|
+
};
|
|
3705
|
+
cache.set(element3, signals);
|
|
3706
|
+
return signals;
|
|
3707
|
+
};
|
|
3708
|
+
var SIGNAL_LEVELS = 6;
|
|
3709
|
+
var SIGNAL_COUNT = 9;
|
|
3710
|
+
var RowWriter = class {
|
|
3711
|
+
constructor(out) {
|
|
3712
|
+
this.out = out;
|
|
3713
|
+
this.offset = 0;
|
|
3714
|
+
}
|
|
3715
|
+
push(value) {
|
|
3716
|
+
this.out[this.offset++] = value;
|
|
3717
|
+
}
|
|
3718
|
+
flag(condition) {
|
|
3719
|
+
this.out[this.offset++] = condition ? 1 : 0;
|
|
3720
|
+
}
|
|
3721
|
+
};
|
|
3722
|
+
var EMPTY_CHAIN = {
|
|
3723
|
+
inNav: 0,
|
|
3724
|
+
inHeader: 0,
|
|
3725
|
+
inFooter: 0,
|
|
3726
|
+
inAside: 0,
|
|
3727
|
+
inArticle: 0,
|
|
3728
|
+
inMain: 0,
|
|
3729
|
+
inForm: 0,
|
|
3730
|
+
inTable: 0,
|
|
3731
|
+
inList: 0,
|
|
3732
|
+
landmark: 0,
|
|
3733
|
+
doomStrong: 0,
|
|
3734
|
+
doomWeak: 0,
|
|
3735
|
+
inTop: 0,
|
|
3736
|
+
inTopSibling: 0,
|
|
3737
|
+
nearestScore: 0,
|
|
3738
|
+
distance: new Array(SIGNAL_COUNT).fill(Number.POSITIVE_INFINITY)
|
|
3739
|
+
};
|
|
3740
|
+
var signalFlags = (signals) => [
|
|
3741
|
+
signals.roleChrome,
|
|
3742
|
+
signals.roleContent,
|
|
3743
|
+
signals.unlikely,
|
|
3744
|
+
signals.positive,
|
|
3745
|
+
signals.negative,
|
|
3746
|
+
signals.strong,
|
|
3747
|
+
signals.special,
|
|
3748
|
+
signals.byline,
|
|
3749
|
+
signals.comment
|
|
3750
|
+
];
|
|
3751
|
+
var any = (parent, condition) => parent || condition ? 1 : 0;
|
|
3752
|
+
var ChainResolver = class {
|
|
3753
|
+
constructor(landmarks, candidateScore, parents, top) {
|
|
3754
|
+
this.landmarks = landmarks;
|
|
3755
|
+
this.candidateScore = candidateScore;
|
|
3756
|
+
this.parents = parents;
|
|
3757
|
+
this.top = top;
|
|
3758
|
+
}
|
|
3759
|
+
#chains = /* @__PURE__ */ new Map();
|
|
3760
|
+
#signals = /* @__PURE__ */ new WeakMap();
|
|
3761
|
+
/** Iterative, so a deeply nested page cannot exhaust the call stack. */
|
|
3762
|
+
resolve(frame) {
|
|
3763
|
+
const pending = [];
|
|
3764
|
+
let current = frame;
|
|
3765
|
+
let chain = EMPTY_CHAIN;
|
|
3766
|
+
while (current) {
|
|
3767
|
+
const memo = this.#chains.get(current.element);
|
|
3768
|
+
if (memo) {
|
|
3769
|
+
chain = memo;
|
|
3770
|
+
break;
|
|
3771
|
+
}
|
|
3772
|
+
pending.push(current);
|
|
3773
|
+
current = current.parent;
|
|
3774
|
+
}
|
|
3775
|
+
for (let index = pending.length - 1; index >= 0; index--) {
|
|
3776
|
+
chain = this.#derive(chain, pending[index].element);
|
|
3777
|
+
this.#chains.set(pending[index].element, chain);
|
|
3778
|
+
}
|
|
3779
|
+
return chain;
|
|
3780
|
+
}
|
|
3781
|
+
#derive(parent, element3) {
|
|
3782
|
+
const tag = element3.tagName;
|
|
3783
|
+
const tier = unlikelyTier(element3);
|
|
3784
|
+
const flags = signalFlags(signalsOf(element3, this.#signals));
|
|
3785
|
+
const top = this.top;
|
|
3786
|
+
const topParent = top ? this.parents.get(top) : void 0;
|
|
3787
|
+
return {
|
|
3788
|
+
inNav: any(parent.inNav, tag === "nav"),
|
|
3789
|
+
inHeader: any(parent.inHeader, tag === "header"),
|
|
3790
|
+
inFooter: any(parent.inFooter, tag === "footer"),
|
|
3791
|
+
inAside: any(parent.inAside, tag === "aside"),
|
|
3792
|
+
inArticle: any(parent.inArticle, tag === "article"),
|
|
3793
|
+
inMain: any(parent.inMain, tag === "main"),
|
|
3794
|
+
inForm: any(parent.inForm, tag === "form"),
|
|
3795
|
+
inTable: any(parent.inTable, tag === "table"),
|
|
3796
|
+
inList: any(parent.inList, tag === "ul" || tag === "ol"),
|
|
3797
|
+
landmark: any(parent.landmark, this.landmarks.has(element3)),
|
|
3798
|
+
doomStrong: any(parent.doomStrong, tier === "strong"),
|
|
3799
|
+
doomWeak: any(parent.doomWeak, tier === "weak"),
|
|
3800
|
+
inTop: any(parent.inTop, element3 === top),
|
|
3801
|
+
inTopSibling: any(
|
|
3802
|
+
parent.inTopSibling,
|
|
3803
|
+
topParent !== void 0 && element3 !== top && this.parents.get(element3) === topParent
|
|
3804
|
+
),
|
|
3805
|
+
nearestScore: this.candidateScore.get(element3) ?? parent.nearestScore,
|
|
3806
|
+
distance: parent.distance.map((distance, signal) => flags[signal] ? 0 : distance + 1)
|
|
3807
|
+
};
|
|
3808
|
+
}
|
|
3809
|
+
};
|
|
3810
|
+
var evidence = (distance) => distance < SIGNAL_LEVELS ? 1 / (1 + distance) : 0;
|
|
3811
|
+
var writeText = (row, block, density) => {
|
|
3812
|
+
const length = block.text.length;
|
|
3813
|
+
const stats = textStats(block.text);
|
|
3814
|
+
row.push(1);
|
|
3815
|
+
row.push(log1p(length));
|
|
3816
|
+
row.push(density);
|
|
3817
|
+
row.push(log1p(block.links));
|
|
3818
|
+
row.flag(block.images > 0);
|
|
3819
|
+
row.flag(length === 0);
|
|
3820
|
+
row.push(length === 0 ? 0 : stats.punct / length);
|
|
3821
|
+
row.push(length === 0 ? 0 : stats.digits / length);
|
|
3822
|
+
row.push(log1p(stats.sentences));
|
|
3823
|
+
};
|
|
3824
|
+
var writeTag = (row, tag) => {
|
|
3825
|
+
row.flag(tag === "p");
|
|
3826
|
+
row.flag(tag === "li");
|
|
3827
|
+
row.flag(tag === "td" || tag === "th");
|
|
3828
|
+
row.flag(tag === "h1");
|
|
3829
|
+
row.flag(/^h[2-6]$/.test(tag));
|
|
3830
|
+
row.flag(tag === "pre");
|
|
3831
|
+
row.flag(tag === "div" || tag === "section");
|
|
3832
|
+
row.flag(tag === "dt" || tag === "dd");
|
|
3833
|
+
row.flag(tag === "blockquote");
|
|
3834
|
+
row.flag(tag === "figcaption");
|
|
3835
|
+
};
|
|
3836
|
+
var writeChain = (row, chain) => {
|
|
3837
|
+
for (const value of [
|
|
3838
|
+
chain.inNav,
|
|
3839
|
+
chain.inHeader,
|
|
3840
|
+
chain.inFooter,
|
|
3841
|
+
chain.inAside,
|
|
3842
|
+
chain.inArticle,
|
|
3843
|
+
chain.inMain,
|
|
3844
|
+
chain.inForm,
|
|
3845
|
+
chain.inTable,
|
|
3846
|
+
chain.inList
|
|
3847
|
+
]) {
|
|
3848
|
+
row.push(value);
|
|
3849
|
+
}
|
|
3850
|
+
for (const distance of chain.distance) {
|
|
3851
|
+
row.push(evidence(distance));
|
|
3852
|
+
}
|
|
3853
|
+
row.push(chain.landmark);
|
|
3854
|
+
row.push(chain.doomStrong);
|
|
3855
|
+
row.push(chain.doomWeak);
|
|
3856
|
+
};
|
|
3857
|
+
var windowMeans = (textLen, density, index, radius) => {
|
|
3858
|
+
let link = 0;
|
|
3859
|
+
let len = 0;
|
|
3860
|
+
let size = 0;
|
|
3861
|
+
for (let near = Math.max(0, index - radius); near <= Math.min(textLen.length - 1, index + radius); near++) {
|
|
3862
|
+
link += density[near];
|
|
3863
|
+
len += log1p(textLen[near]);
|
|
3864
|
+
size += 1;
|
|
3865
|
+
}
|
|
3866
|
+
return [link / size, len / size];
|
|
3867
|
+
};
|
|
3868
|
+
var writeNeighbourhood = (row, index, textLen, density) => {
|
|
3869
|
+
const hasPrevious = index > 0;
|
|
3870
|
+
const hasNext = index < textLen.length - 1;
|
|
3871
|
+
row.push(hasPrevious ? log1p(textLen[index - 1]) : 0);
|
|
3872
|
+
row.push(hasPrevious ? density[index - 1] : 0);
|
|
3873
|
+
row.push(hasNext ? log1p(textLen[index + 1]) : 0);
|
|
3874
|
+
row.push(hasNext ? density[index + 1] : 0);
|
|
3875
|
+
const [windowLink, windowLen] = windowMeans(textLen, density, index, 2);
|
|
3876
|
+
row.push(windowLink);
|
|
3877
|
+
row.push(windowLen);
|
|
3878
|
+
};
|
|
3879
|
+
var writeContainers = (row, block, collector) => {
|
|
3880
|
+
for (const container of [ancestorAt(block, 1), ancestorAt(block, 2)]) {
|
|
3881
|
+
row.push(container ? collector.linkDensity(container) : 0);
|
|
3882
|
+
row.push(container ? log1p(collector.textLength(container)) : 0);
|
|
3883
|
+
}
|
|
3884
|
+
};
|
|
3885
|
+
var blockFeatures = ({ root, blocks, collector, lang, takumiKept }) => {
|
|
3886
|
+
const count = blocks.length;
|
|
3887
|
+
const out = new Float32Array(count * FEATURE_COUNT);
|
|
3888
|
+
const context = buildScoringContext(root, collector, lang);
|
|
3889
|
+
const candidates = scoreCandidates(root, context);
|
|
3890
|
+
const topScore = candidates[0]?.score ?? 1;
|
|
3891
|
+
const candidateScore = /* @__PURE__ */ new WeakMap();
|
|
3892
|
+
for (const candidate of candidates) {
|
|
3893
|
+
candidateScore.set(candidate.element, candidate.score / topScore);
|
|
3894
|
+
}
|
|
3895
|
+
const chains = new ChainResolver(findLandmarkChrome(root), candidateScore, context.parents, candidates[0]?.element);
|
|
3896
|
+
const textLen = blocks.map((block) => block.text.length);
|
|
3897
|
+
const density = blocks.map((block) => block.text.length === 0 ? 0 : block.linkChars / block.text.length);
|
|
3898
|
+
const totalChars = textLen.reduce((sum, length) => sum + length, 0) || 1;
|
|
3899
|
+
let charsBefore = 0;
|
|
3900
|
+
for (let index = 0; index < count; index++) {
|
|
3901
|
+
const block = blocks[index];
|
|
3902
|
+
const row = new RowWriter(out.subarray(index * FEATURE_COUNT, (index + 1) * FEATURE_COUNT));
|
|
3903
|
+
const chain = chains.resolve(block.frame);
|
|
3904
|
+
writeText(row, block, density[index]);
|
|
3905
|
+
writeTag(row, block.owner.tagName);
|
|
3906
|
+
writeChain(row, chain);
|
|
3907
|
+
row.push(Math.min(block.frame.depth, 40) / 40);
|
|
3908
|
+
row.push(count <= 1 ? 0 : index / (count - 1));
|
|
3909
|
+
row.push(charsBefore / totalChars);
|
|
3910
|
+
charsBefore += textLen[index];
|
|
3911
|
+
writeNeighbourhood(row, index, textLen, density);
|
|
3912
|
+
writeContainers(row, block, collector);
|
|
3913
|
+
row.push(chain.inTop);
|
|
3914
|
+
row.push(chain.nearestScore);
|
|
3915
|
+
row.push(chain.inTopSibling);
|
|
3916
|
+
row.flag(takumiKept?.has(block.owner));
|
|
3917
|
+
}
|
|
3918
|
+
return out;
|
|
3919
|
+
};
|
|
3920
|
+
var STACK_FEATURE_NAMES = [
|
|
3921
|
+
"s1_logit",
|
|
3922
|
+
"s1_win1",
|
|
3923
|
+
"s1_win3",
|
|
3924
|
+
"s1_parent",
|
|
3925
|
+
"s1_gparent",
|
|
3926
|
+
"s1_ggparent",
|
|
3927
|
+
"s1_parentShare",
|
|
3928
|
+
"s1_distHigh",
|
|
3929
|
+
"s1_docShare"
|
|
3930
|
+
];
|
|
3931
|
+
var STACKED_FEATURE_COUNT = FEATURE_COUNT + STACK_FEATURE_NAMES.length;
|
|
3932
|
+
var logit = (p) => Math.log(Math.max(1e-6, p) / Math.max(1e-6, 1 - p));
|
|
3933
|
+
var ancestorMass = (blocks, probabilities) => {
|
|
3934
|
+
const mass = /* @__PURE__ */ new Map();
|
|
3935
|
+
const add = (element3, p, weight) => {
|
|
3936
|
+
if (!element3) {
|
|
3937
|
+
return;
|
|
3938
|
+
}
|
|
3939
|
+
const entry = mass.get(element3);
|
|
3940
|
+
if (entry) {
|
|
3941
|
+
entry.p += p * weight;
|
|
3942
|
+
entry.w += weight;
|
|
3943
|
+
} else {
|
|
3944
|
+
mass.set(element3, { p: p * weight, w: weight });
|
|
3945
|
+
}
|
|
3946
|
+
};
|
|
3947
|
+
let docP = 0;
|
|
3948
|
+
let docW = 0;
|
|
3949
|
+
for (const block of blocks) {
|
|
3950
|
+
const weight = block.text.length + 10;
|
|
3951
|
+
const p = probabilities[block.index];
|
|
3952
|
+
add(ancestorAt(block, 1), p, weight);
|
|
3953
|
+
add(ancestorAt(block, 2), p, weight);
|
|
3954
|
+
add(ancestorAt(block, 3), p, weight);
|
|
3955
|
+
docP += p * weight;
|
|
3956
|
+
docW += weight;
|
|
3957
|
+
}
|
|
3958
|
+
const parentWeightShare = (element3) => {
|
|
3959
|
+
const entry = element3 ? mass.get(element3) : void 0;
|
|
3960
|
+
return entry && docW > 0 ? entry.w / docW : 0;
|
|
3961
|
+
};
|
|
3962
|
+
return { mass, docShare: docW === 0 ? 0 : docP / docW, parentWeightShare };
|
|
3963
|
+
};
|
|
3964
|
+
var distanceToHigh = (probabilities) => {
|
|
3965
|
+
const count = probabilities.length;
|
|
3966
|
+
const distance = new Float32Array(count).fill(count);
|
|
3967
|
+
let last = -1;
|
|
3968
|
+
for (let index = 0; index < count; index++) {
|
|
3969
|
+
if (probabilities[index] >= 0.5) {
|
|
3970
|
+
last = index;
|
|
3971
|
+
}
|
|
3972
|
+
if (last >= 0) {
|
|
3973
|
+
distance[index] = index - last;
|
|
3974
|
+
}
|
|
3975
|
+
}
|
|
3976
|
+
last = -1;
|
|
3977
|
+
for (let index = count - 1; index >= 0; index--) {
|
|
3978
|
+
if (probabilities[index] >= 0.5) {
|
|
3979
|
+
last = index;
|
|
3980
|
+
}
|
|
3981
|
+
if (last >= 0) {
|
|
3982
|
+
distance[index] = Math.min(distance[index], last - index);
|
|
3983
|
+
}
|
|
3984
|
+
}
|
|
3985
|
+
return distance;
|
|
3986
|
+
};
|
|
3987
|
+
var stackedFeatures = (blocks, base, probabilities) => {
|
|
3988
|
+
const count = blocks.length;
|
|
3989
|
+
const stride = STACKED_FEATURE_COUNT;
|
|
3990
|
+
const out = new Float32Array(count * stride);
|
|
3991
|
+
const { mass, docShare, parentWeightShare } = ancestorMass(blocks, probabilities);
|
|
3992
|
+
const meanOf = (element3, fallback) => {
|
|
3993
|
+
const entry = element3 ? mass.get(element3) : void 0;
|
|
3994
|
+
return entry ? entry.p / entry.w : fallback;
|
|
3995
|
+
};
|
|
3996
|
+
const distance = distanceToHigh(probabilities);
|
|
3997
|
+
for (let index = 0; index < count; index++) {
|
|
3998
|
+
const row = index * stride;
|
|
3999
|
+
out.set(base.subarray(index * FEATURE_COUNT, (index + 1) * FEATURE_COUNT), row);
|
|
4000
|
+
const p = probabilities[index];
|
|
4001
|
+
const window = (radius) => {
|
|
4002
|
+
let sum = 0;
|
|
4003
|
+
let n = 0;
|
|
4004
|
+
for (let near = Math.max(0, index - radius); near <= Math.min(count - 1, index + radius); near++) {
|
|
4005
|
+
if (near !== index) {
|
|
4006
|
+
sum += probabilities[near];
|
|
4007
|
+
n += 1;
|
|
4008
|
+
}
|
|
4009
|
+
}
|
|
4010
|
+
return n === 0 ? p : sum / n;
|
|
4011
|
+
};
|
|
4012
|
+
const block = blocks[index];
|
|
4013
|
+
let f = row + FEATURE_COUNT;
|
|
4014
|
+
out[f++] = logit(p);
|
|
4015
|
+
out[f++] = window(1);
|
|
4016
|
+
out[f++] = window(3);
|
|
4017
|
+
out[f++] = meanOf(ancestorAt(block, 1), p);
|
|
4018
|
+
out[f++] = meanOf(ancestorAt(block, 2), p);
|
|
4019
|
+
out[f++] = meanOf(ancestorAt(block, 3), p);
|
|
4020
|
+
out[f++] = parentWeightShare(ancestorAt(block, 1));
|
|
4021
|
+
out[f++] = Math.log1p(distance[index]);
|
|
4022
|
+
out[f++] = docShare;
|
|
4023
|
+
}
|
|
4024
|
+
return out;
|
|
4025
|
+
};
|
|
4026
|
+
|
|
4027
|
+
// src/extractors/lib/block-model.ts
|
|
4028
|
+
var isUsableModel = (model, stride = FEATURE_COUNT) => {
|
|
4029
|
+
if (model.kind === "linear") {
|
|
4030
|
+
return model.weights.length === stride;
|
|
4031
|
+
}
|
|
4032
|
+
const internal = 2 ** model.depth - 1;
|
|
4033
|
+
const trees = model.features.length / internal;
|
|
4034
|
+
return Number.isInteger(trees) && trees > 0 && model.thresholds.length === model.features.length && model.leaves.length === trees * (internal + 1) && model.features.every((feature) => feature < stride);
|
|
4035
|
+
};
|
|
4036
|
+
var scoreBlocks = (features, count, model, stride = FEATURE_COUNT) => {
|
|
4037
|
+
const out = new Float32Array(count);
|
|
4038
|
+
if (model.kind === "linear") {
|
|
4039
|
+
const { weights } = model;
|
|
4040
|
+
for (let index = 0; index < count; index++) {
|
|
4041
|
+
const row = index * stride;
|
|
4042
|
+
let sum = 0;
|
|
4043
|
+
for (let feature = 0; feature < stride; feature++) {
|
|
4044
|
+
sum += weights[feature] * features[row + feature];
|
|
4045
|
+
}
|
|
4046
|
+
out[index] = 1 / (1 + Math.exp(-sum));
|
|
4047
|
+
}
|
|
4048
|
+
return out;
|
|
4049
|
+
}
|
|
4050
|
+
const internal = 2 ** model.depth - 1;
|
|
4051
|
+
const leafCount = internal + 1;
|
|
4052
|
+
const trees = model.features.length / internal;
|
|
4053
|
+
const { features: splitFeatures, thresholds, leaves, base } = model;
|
|
4054
|
+
for (let index = 0; index < count; index++) {
|
|
4055
|
+
const row = index * stride;
|
|
4056
|
+
let sum = base;
|
|
4057
|
+
for (let tree = 0; tree < trees; tree++) {
|
|
4058
|
+
const offset = tree * internal;
|
|
4059
|
+
let node = 0;
|
|
4060
|
+
while (node < internal) {
|
|
4061
|
+
const feature = splitFeatures[offset + node];
|
|
4062
|
+
node = feature < 0 || features[row + feature] <= thresholds[offset + node] ? 2 * node + 1 : 2 * node + 2;
|
|
4063
|
+
}
|
|
4064
|
+
sum += leaves[tree * leafCount + node - internal];
|
|
4065
|
+
}
|
|
4066
|
+
out[index] = 1 / (1 + Math.exp(-sum));
|
|
4067
|
+
}
|
|
4068
|
+
return out;
|
|
4069
|
+
};
|
|
4070
|
+
|
|
4071
|
+
// src/extractors/lib/block-model.generated.ts
|
|
4072
|
+
var BLOCK_MODEL = {
|
|
4073
|
+
kind: "trees",
|
|
4074
|
+
depth: 5,
|
|
4075
|
+
base: -0.422449,
|
|
4076
|
+
features: [56, 32, 53, 54, 51, 32, 2, 53, 3, 38, 12, 2, 49, 15, 3, 48, 51, 38, 47, 41, -1, 26, -1, 8, 23, 42, 12, 38, 6, 30, 6, 56, 32, 53, 54, 51, 32, 50, 47, 38, 38, 12, 51, 31, 38, 2, 42, 53, 25, -1, 40, -1, 35, -1, 15, 54, 49, 38, 49, -1, 30, 3, 56, 32, 53, 54, 47, 32, 15, 42, 49, 40, 12, 42, 37, 30, 6, 38, 8, 41, 6, 48, 38, 54, -1, 41, 47, 49, -1, 21, 50, 49, 50, 56, 32, 2, 38, 51, 50, 32, 54, 30, 38, 26, 37, 31, 6, 10, 7, 37, 47, -1, 41, -1, 35, 53, 42, -1, 15, 52, 31, 48, 40, -1, 56, 32, 6, 38, 47, 31, 21, 42, 53, 38, 12, 53, 38, 50, 55, 6, 54, -1, 54, 40, -1, 54, -1, 51, 52, 15, -1, 38, 25, -1, -1, 56, 32, 51, 54, 51, 15, 32, 8, 37, 38, 26, 21, 42, 42, 24, 53, 4, 27, -1, 41, -1, 35, 53, 30, -1, 6, 50, 48, 42, 12, 54, 56, 38, 53, 37, 53, 42, 50, 49, 12, 16, 47, 41, 54, 47, 15, 25, 32, -1, -1, -1, 51, 54, -1, 23, 38, 54, 41, 48, 32, 30, 50, 56, 38, 48, 37, 53, 42, 2, 27, 12, 16, 47, 38, 47, 39, 3, 42, 53, -1, -1, -1, 48, 28, -1, 47, 41, 53, 32, 21, 31, 49, -1, 56, 38, 48, 37, 53, 31, 8, 3, 12, 16, 47, 53, 42, 3, 30, 54, 32, -1, -1, -1, 43, 54, -1, 24, 41, 15, 47, 15, 48, 42, 45, 56, 38, 6, 42, 53, 38, 50, 6, 40, 16, 28, 31, 32, 37, 31, 32, 42, 48, 54, -1, -1, 48, 51, 40, 47, -1, -1, 42, -1, 52, 2, 38, 53, 24, 37, 15, -1, 32, 3, 12, 48, 43, -1, -1, 47, 28, 42, 31, -1, -1, 47, 11, 40, 2, -1, -1, -1, -1, -1, -1, 43, -1, 38, 48, 47, 42, 31, 24, -1, 37, 32, 50, 8, -1, 32, -1, -1, 49, 12, 54, 40, 42, 52, 3, 7, -1, -1, 52, -1, -1, -1, -1, -1, 38, 6, 24, 12, 41, 23, 32, 32, 41, 48, 32, -1, -1, 51, 41, 42, 40, -1, 42, 54, 2, 7, 24, -1, -1, -1, -1, -1, -1, 40, 30, 38, 31, 32, 32, 49, 51, -1, 25, 31, 48, 42, 24, -1, -1, -1, 43, 41, 45, 47, 25, 41, 40, 52, 45, 48, -1, -1, -1, -1, -1, -1, 37, 2, 12, 23, 30, -1, -1, 43, 30, 13, 12, -1, -1, -1, -1, 32, 41, 51, 32, 45, 54, 35, -1, -1, -1, -1, -1, -1, -1, -1, -1, 38, 45, 24, 37, 42, 23, 32, 42, 12, 25, 43, -1, -1, 51, 41, 31, 52, -1, -1, 11, 54, 24, 40, -1, -1, -1, -1, -1, -1, 40, 30, 38, 21, 53, 45, 35, -1, 32, 23, 11, -1, 52, -1, -1, 41, 28, 42, 42, 40, 42, -1, -1, -1, -1, -1, -1, -1, -1, 54, 54, -1, -1, 32, 6, 47, 25, 50, 40, 54, 12, 31, 42, 40, 52, 38, 1, 51, 47, 41, 40, 51, 43, 47, 8, -1, 42, 9, 21, 28, -1, -1, -1, -1, 37, 30, 12, 42, 48, -1, -1, 41, 41, 12, 31, -1, -1, -1, -1, 54, 8, 47, 24, 51, -1, 1, 47, -1, -1, -1, -1, -1, -1, -1, -1, 38, 12, 24, 48, 41, -1, 47, 47, 31, -1, 41, -1, -1, 48, 41, 25, 40, 39, 8, -1, -1, 1, -1, -1, -1, -1, -1, -1, 40, -1, -1, 37, 45, 12, 32, 30, -1, -1, 15, 40, 46, 3, -1, -1, -1, -1, 48, 50, 52, 31, 11, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, 12, 12, 6, 41, -1, -1, 42, 42, -1, 41, -1, -1, -1, -1, 7, 30, 30, 43, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 38, 42, 47, 42, 41, 32, 52, 43, 25, 26, 24, 54, 30, -1, -1, 7, 25, 2, 6, 54, 48, 52, 52, 1, -1, -1, -1, -1, -1, -1, -1, 37, 12, 12, 47, 41, 13, -1, 43, 7, -1, 41, -1, -1, -1, -1, 43, 25, 48, 42, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 38, 30, 53, 21, 31, 51, 41, 23, 55, 7, 43, 39, -1, 28, 54, 52, 30, -1, -1, 50, -1, 1, 52, 42, -1, -1, -1, -1, -1, 40, -1, 42, 42, 40, 54, 12, 52, 53, 45, 2, 38, 1, 55, 47, 54, 45, -1, 40, 31, 7, 30, 47, -1, 49, 40, -1, 43, -1, 51, -1, -1, 43, 37, 45, 12, 15, 42, 47, -1, 44, 40, 1, 40, -1, -1, -1, -1, 48, 40, 31, 4, 46, 40, 1, 50, -1, -1, -1, -1, -1, -1, -1, -1, 31, 50, 40, 53, 40, 52, 54, 54, 47, 49, 52, 41, 3, 54, 52, 32, 4, 42, 40, -1, -1, -1, -1, 4, 42, 31, -1, 50, 51, 42, 3, 21, 12, 55, 43, 41, 50, 54, 30, 1, -1, 40, -1, -1, -1, -1, 40, 40, 26, 40, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, 25, 49, 31, 36, 30, 50, 49, 42, 32, 40, 47, 7, 40, 26, 42, 42, 31, -1, 41, 24, 40, -1, 52, 54, 48, 24, -1, 51, -1, -1, -1, 42, 41, 52, 54, 54, 40, 47, 13, 48, 32, 54, 55, 47, 54, 51, 24, -1, 52, 6, 48, 56, 51, 48, 42, -1, 54, 53, 52, 52, -1, -1, 21, 7, 55, 52, 48, -1, 54, 7, 47, -1, 52, -1, -1, -1, -1, 49, 1, 30, -1, -1, -1, 31, 45, -1, -1, -1, -1, -1, -1, -1, -1, 12, 38, 41, 7, 53, -1, 49, 25, 48, 24, 41, -1, -1, 42, -1, 30, 31, -1, 52, -1, 42, 54, 54, -1, -1, -1, -1, -1, 48, -1, -1, 37, 20, 12, 15, 27, 47, -1, 52, 1, 51, 10, -1, -1, -1, -1, 48, 30, 54, 7, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 42, 21, 40, 40, 35, 52, 53, 42, 52, -1, -1, 8, 47, 54, 54, 7, 54, 52, -1, -1, -1, -1, -1, 42, -1, 6, -1, 24, -1, -1, 48, 45, 3, 40, 26, 26, 50, 40, 25, 1, 8, -1, -1, 52, 50, 50, 42, 39, 40, 47, 51, 54, -1, -1, -1, -1, -1, -1, 46, 10, 46, 9, 23, 41, 30, 8, 41, 2, 32, 13, -1, 38, 24, 48, 53, 24, 56, 24, -1, -1, -1, 51, 28, 42, 32, 42, 31, 1, 7, -1, -1, 49, 41, 12, 47, 1, 51, 40, 54, 49, 52, 54, 50, 54, -1, -1, 41, -1, 40, 54, 40, 1, 7, 51, 54, 29, -1, -1, -1, -1, 41, -1, -1, -1, 37, 20, 51, 7, 27, 54, -1, 52, 52, 51, 47, -1, -1, -1, -1, 52, 47, 48, 40, 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 12, 37, 1, 25, 47, 54, 46, 47, 31, -1, -1, -1, -1, 41, -1, 41, 40, 50, 49, -1, -1, -1, -1, -1, -1, -1, -1, -1, 42, -1, -1, 41, 49, 42, 42, 29, 23, 51, 52, 47, 48, -1, 47, 30, 31, 1, 50, 8, 51, 7, 52, 31, -1, -1, 40, 7, 3, 49, 1, 40, 43, 54, 40, 40, 52, 54, 1, 52, -1, 50, 24, -1, 52, 45, 2, -1, -1, 48, 40, 54, 51, -1, -1, -1, -1, 31, 46, -1, -1, -1, -1, -1, -1, 7, 7, 48, 41, 1, -1, 52, 8, 51, 42, -1, -1, -1, 52, 40, 13, 26, 42, 32, 40, 50, -1, -1, -1, -1, -1, -1, 9, 50, -1, -1, 12, 42, 1, 40, 54, 54, 46, 7, -1, 11, 54, -1, -1, 41, -1, -1, -1, -1, -1, 31, 51, 51, 51, -1, -1, -1, -1, -1, 42, -1, -1, 45, 32, 40, 15, 40, 6, 31, 52, 50, 32, 31, 31, -1, 50, 52, 48, 48, 45, 40, 42, 51, 31, 54, 47, 1, -1, -1, 49, 49, 46, 1, 40, 52, 52, 52, 31, 48, -1, 40, 54, 26, 51, 6, 44, -1, -1, 52, 51, 42, 42, 40, -1, 2, 52, 48, -1, 42, -1, -1, -1, -1, -1, 21, 12, 7, 45, 1, 39, -1, 30, 50, 54, 49, -1, -1, -1, -1, 52, 40, 48, 40, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 54, 41, 54, 48, 51, 51, 48, 15, -1, 42, 56, -1, 55, 10, 51, -1, -1, -1, -1, 48, 31, 43, 43, -1, -1, -1, -1, 8, 54, 2, 54, 30, 47, 31, 54, 7, 40, 43, 50, 51, 41, 50, 51, 50, 47, 31, 30, 40, 52, 1, 40, 24, 6, 42, 54, -1, -1, -1, -1, -1, -1, -1, 21, 7, 55, 19, 56, 50, -1, 52, -1, 54, 9, -1, -1, -1, -1, 52, 30, -1, -1, -1, 48, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, 42, 40, 8, 41, 1, 39, 7, 6, 47, 51, -1, -1, 1, 54, 40, 1, 30, 41, 52, 56, 26, 40, -1, -1, -1, -1, 54, 6, -1, -1, 40, 52, 39, 52, 31, 46, 52, 40, 47, 9, 36, 42, -1, 56, -1, 40, 50, 48, 47, 26, 41, 23, 49, -1, -1, -1, -1, -1, -1, -1, -1, 12, 5, 48, 48, 11, -1, 42, 1, 11, 40, 54, -1, -1, 41, 41, 40, -1, 48, 48, 48, 54, -1, 47, -1, -1, -1, -1, -1, -1, -1, 45, 54, 50, 54, 50, 50, 51, 52, 56, 32, 31, 56, 46, 55, 40, 51, 47, 43, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, 50, 11, 31, 32, 47, 25, 1, 52, 7, 51, 51, 31, 40, 9, 6, 52, 52, 42, 54, 24, 45, 50, 40, 1, -1, 50, -1, 48, 40, 45, 47, 1, 27, 3, 50, 38, 40, 49, 48, 39, 31, -1, 54, 7, 1, 52, 41, 39, -1, -1, 51, 54, 23, 51, -1, 42, 56, -1, 32, -1, 54, -1, -1, -1, -1, -1, 42, 21, 31, 41, 30, 50, 40, 51, 51, 40, -1, 54, 53, 50, 47, 40, 40, 40, 41, -1, -1, -1, -1, 32, 1, 54, 45, -1, 50, -1, -1, 12, 42, 48, 43, 42, -1, 2, 7, 6, 50, 16, -1, -1, 40, -1, 45, -1, 54, -1, 52, 54, 40, 54, -1, -1, -1, -1, 42, -1, -1, -1, 25, 47, 6, 41, 40, 31, 48, 56, 40, 40, 51, 1, 26, 7, 31, 54, 15, 45, 52, 7, 51, 56, 52, 54, 9, 50, -1, -1, -1, -1, 7, 54, 23, 54, 31, 51, 51, 52, 32, 11, -1, -1, 46, 55, 40, 42, 43, -1, 30, 42, -1, -1, -1, -1, -1, -1, -1, -1, 41, 11, 41, 43, 12, 38, 41, 5, 53, 46, 1, 48, 11, 6, 41, 52, -1, -1, -1, 40, 11, 32, 40, 31, -1, 54, 54, -1, -1, -1, -1, -1, -1, -1, -1, 30, 32, 31, 47, 51, 40, 43, 54, 1, 40, 2, 52, 1, 48, 52, 40, 27, 24, 51, 52, 31, -1, -1, -1, 48, -1, -1, -1, -1, -1, -1, 37, 20, 51, 31, 27, 42, -1, 52, 40, 54, -1, -1, -1, -1, -1, 40, 52, 8, 48, 51, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 54, 50, 54, 42, 50, 15, 48, 41, 31, 49, 56, 53, 24, 54, 54, 48, 40, 43, 51, -1, -1, -1, -1, -1, 52, -1, 43, -1, 50, 42, 52, 42, 45, 12, -1, 54, 1, 42, -1, -1, 50, -1, 11, 48, 43, 41, -1, -1, -1, -1, -1, -1, -1, -1, 42, 40, 51, 11, -1, -1, -1, 45, 30, 25, 41, 50, 31, 31, 43, 8, 2, 1, 51, 54, 42, 42, 40, 40, 31, 51, 51, 54, 51, 6, -1, 41, -1, -1, -1, -1, -1, -1, -1, 41, 49, 42, 42, 42, 29, 41, 26, 47, -1, 53, 23, 1, 48, 41, 8, 52, 54, 47, -1, -1, 48, 51, 32, 49, 44, -1, 26, 26, 26, 24, 29, 42, 40, 7, 41, 1, 39, 44, 47, 47, 16, -1, -1, 50, 42, 41, 23, 45, 54, 40, 50, 54, 54, -1, -1, -1, -1, 44, 43, -1, -1, 7, 7, 52, 6, 1, 52, 40, 1, 54, 42, 48, 31, 49, -1, -1, 49, 48, 51, 7, 40, 47, -1, -1, 1, -1, 1, -1, -1, -1, -1, -1, 54, 50, 54, 52, 50, 2, 56, 42, 15, 49, 51, 50, 51, 55, 53, 43, 43, 48, -1, -1, -1, -1, -1, -1, -1, 44, -1, 52, 54, 54, 54, 41, 13, 51, 2, 47, 51, 50, 40, 7, 42, -1, 40, 27, 32, 32, 41, 15, 23, 54, 45, -1, -1, -1, 20, 54, 40, 29, 56, 52, 40, 52, 21, 12, 7, 42, 41, -1, 47, 40, 1, 46, 1, -1, -1, -1, -1, 52, -1, 11, 1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 25, 30, 6, 50, 54, 40, 48, 32, 7, 49, -1, 9, 52, 7, 31, 52, 51, 30, -1, 52, -1, -1, -1, 1, 51, -1, -1, -1, -1, -1, 7, 48, 3, 56, 48, 42, 41, 41, 54, 51, 40, 27, 54, 47, 54, 24, -1, 42, 51, -1, -1, -1, 50, 49, 32, 54, -1, 3, 46, 40, 42, 42, 15, 44, 47, 31, 1, 45, 54, 45, 56, 40, 40, 51, 8, 50, 53, 50, 52, 40, 42, 47, 1, 54, 51, 31, 54, 1, 40, 56, -1, 51, -1, 37, 20, 51, 54, 27, 42, -1, 23, 54, 1, -1, -1, -1, -1, -1, 31, 45, 15, 54, 41, 54, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 38, 51, 52, 54, 42, -1, 31, 47, 24, 43, 31, -1, -1, 47, 40, 8, 40, 53, 6, -1, 7, 40, 3, -1, -1, -1, -1, 41, -1, -1, 45, 21, 12, 7, 33, 41, -1, 54, 41, -1, 46, 1, -1, -1, -1, -1, 40, 40, -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 52, 26, 52, 43, 51, -1, 52, 40, 30, 2, 6, 41, -1, -1, 52, 26, 47, 39, 49, -1, -1, -1, 44, 2, -1, -1, -1, -1, -1, -1, 40, 43, 40, 48, 43, 41, 52, 42, 45, 45, 40, 43, 30, 30, 52, 1, 54, -1, 42, 50, 52, 31, 43, 24, 50, 7, -1, 52, 40, 1, 31, 25, 36, 7, 32, 32, 2, 48, 32, 40, 50, 41, 9, 26, 15, 1, 16, 47, 41, 54, -1, -1, -1, -1, 54, 39, -1, -1, -1, -1, 51, 7, 21, 42, 55, 41, 51, 52, -1, 24, 24, 51, 42, -1, -1, -1, -1, 54, 54, 1, 47, 54, 50, 41, 50, -1, -1, -1, -1, -1, -1, -1, -1, 54, 50, 54, 42, 45, 51, 52, 41, 31, -1, 31, -1, -1, 54, 42, 31, 39, 43, 51, -1, -1, -1, -1, -1, -1, -1, -1, 54, 31, 47, 16, 6, 6, 51, 29, 47, 45, 56, 42, 40, 47, 1, 43, 54, 52, 45, 8, 14, -1, 39, 32, 43, 7, 40, -1, -1, 54, 48, -1, 41, 54, -1, 7, 47, 1, 40, 54, 32, 48, 40, 48, 53, 53, 13, 54, 41, 43, 52, 50, 48, 54, 27, 24, 23, 48, 40, 54, 3, 41, -1, 15, 40, 2, 41, 40, 49, 40, 48, 26, 1, 52, 52, 40, 47, 51, 41, 24, 39, 31, 25, 51, -1, 24, 52, 52, -1, 31, 16, 1, 1, 40, 54, 52, 53, 52, 52, 51, 40, 10, 52, 54, 2, 1, 50, -1, 54, 31, -1, 1, 52, 40, 3, 54, 31, 41, -1, -1, 44, 41, 9, 51, -1, -1, -1, -1, 12, 5, 42, 48, 11, 41, 41, 51, 11, 31, 40, 52, -1, -1, -1, 1, -1, 1, 48, 40, 30, 54, -1, -1, -1, -1, -1, -1, -1, -1, -1, 54, 23, 54, 45, 40, 51, 6, 55, 41, -1, -1, -1, -1, 6, 51, 6, -1, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, 48, 45, 56, 7, 31, 1, 41, 40, 47, 6, 6, 50, 54, 52, 47, 52, -1, 7, 49, 43, 26, 51, 52, 30, -1, -1, 49, 54, 43, 54, -1, -1, 32, -1, 12, 33, 30, 42, -1, 52, -1, 51, 1, -1, -1, 54, 43, -1, -1, 54, -1, 11, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 42, 50, 41, 13, 8, 47, 52, 9, 47, 50, 39, 52, 11, 30, 30, 31, 40, 2, -1, 3, 49, 40, -1, -1, -1, 54, -1, 32, 40, 24, 51, 12, 33, 42, 41, -1, 41, 44, 47, 37, -1, -1, 31, -1, 45, -1, -1, 7, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 54, 50, 54, 52, 50, 2, 30, 48, 48, 52, 51, -1, 51, 48, 41, 42, 41, 42, 56, -1, -1, -1, -1, -1, -1, -1, -1, 10, 48, 1, 50, 7, 55, 1, 50, 54, 49, 48, 40, 30, 24, 52, 24, 1, 41, 43, 41, 54, -1, -1, 52, 51, -1, 43, 45, 54, 40, 8, -1, 45, 45, 54, 42, 41, 29, 52, -1, 41, 31, 50, 32, -1, -1, 6, 8, 24, -1, 54, 47, 43, 54, -1, -1, -1, -1, 45, 51, 52, 43, 54, 45, -1, -1, 54, 54, 24, 52, 26, 52, 8, 52, 51, 52, 45, 8, 40, 51, 41, 50, 39, 25, 52, 42, 40, -1, 42, 31, 45, 47, 25, 44, 48, -1, -1, 50, 43, 40, 8, 39, 43, 2, 40, 43, 23, 6, 51, 49, 42, 40, 1, 1, 2, 1, 47, -1, -1, -1, 9, 3, 44, 47, 7, 32, 51, -1, 19, 42, -1, 41, 40, -1, -1, 40, 49, 51, 47, -1, -1, -1, -1, 40, 26, 1, 45, 49, 53, 50, 52, -1, -1, -1, -1, -1, -1, -1, -1, 51, 52, 52, 51, 54, 42, 2, 31, 40, 52, 47, 7, 3, 47, 48, 52, 54, 50, 50, 40, 7, 51, 50, 31, 45, 49, 40, -1, -1, -1, -1, 12, 33, 42, 42, -1, 41, 41, 51, 5, -1, -1, 52, -1, -1, -1, 41, -1, 48, 11, -1, -1, -1, -1, 51, -1, -1, -1, -1, -1, -1, -1, 1, 8, 7, 3, 40, 45, 50, 45, 32, 50, 48, 26, 48, -1, -1, 51, 43, -1, -1, 27, 52, -1, -1, 49, 43, 7, 31, -1, -1, -1, -1, 12, 37, 6, 41, 47, 43, -1, 52, 7, -1, -1, 51, -1, -1, -1, -1, 52, 15, 1, -1, -1, -1, -1, -1, 51, -1, -1, -1, -1, -1, -1, 50, 48, 40, 50, 41, 24, 40, 52, 27, -1, 52, 44, 42, 1, 31, 40, 54, 40, 54, -1, -1, -1, 31, 43, 40, 23, -1, 31, 6, 41, 41, 21, 12, 55, 47, 6, 52, -1, 24, 40, 31, -1, -1, -1, -1, -1, 15, 54, 40, 51, -1, 51, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 43, 48, 8, 52, 45, 1, 46, 52, 51, 40, 31, 54, 46, 40, -1, 52, 40, 42, -1, -1, -1, 43, 50, 40, 47, -1, -1, 48, 54, -1, -1, 52, 52, 43, 43, 6, 49, 2, 50, 39, 51, 52, 40, -1, -1, -1, 14, 8, 45, 27, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, 25, 45, 31, 31, 41, 1, 3, 56, 42, 41, 31, -1, -1, 48, 53, 26, 52, 55, 41, 7, 40, 1, -1, -1, -1, -1, -1, -1, 45, -1, 19, 42, -1, 35, 29, -1, -1, 13, 41, 40, 49, -1, -1, -1, -1, 29, 30, 15, -1, 32, 53, 54, 47, -1, -1, -1, -1, -1, -1, -1, -1, 54, 23, 54, 11, 40, 48, 54, 31, 50, -1, -1, 24, 53, 10, 35, 32, 30, -1, -1, -1, -1, -1, -1, -1, 31, 3, 52, 26, 52, 47, 1, 42, 45, 42, -1, 52, 51, 41, -1, -1, -1, -1, 7, 52, 40, 51, -1, -1, -1, -1, -1, -1, -1, -1, 10, 51, 24, -1, 52, 54, 49, 27, 52, 52, 11, 32, 43, 51, 50, 32, 47, 48, 23, 47, 39, 49, 8, 52, 40, 48, 40, -1, 48, 6, 40, 54, 51, 48, -1, 42, 48, 53, -1, 51, 27, 40, 20, 1, 46, 52, 42, 1, 1, 9, -1, 42, 53, 52, 52, 7, -1, 40, 52, 50, 6, -1, -1, -1, -1, -1, 24, 50, 47, -1, 41, 43, 42, 43, 52, -1, 42, 13, 48, 49, -1, -1, -1, 29, 41, 1, 45, 50, 2, 54, -1, -1, -1, -1, -1, -1, -1, 1, 1, 51, 14, 50, 50, 40, 16, 54, 31, 40, 48, 53, 7, 1, 31, 42, 54, 24, 8, 41, 31, 43, 45, -1, -1, -1, 40, 31, 54, 24, 42, 1, 9, -1, 6, 6, 51, 47, 47, 45, 27, 40, 23, 47, 1, 43, 54, 50, 43, 6, 6, 40, 31, 50, 48, 7, 41, -1, -1, 54, 48, 53, -1, -1, -1, 21, 12, 7, 38, 41, -1, -1, 7, 24, 47, 42, -1, -1, -1, -1, 7, 45, 32, 54, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, 25, 31, 50, 43, 40, 43, 50, 42, 13, 26, 54, 1, -1, 52, 50, 6, 54, -1, 54, -1, 9, 1, 53, -1, -1, -1, -1, -1, -1, -1, 54, 50, 54, 31, 50, 2, 47, 31, 48, -1, 41, -1, 46, 47, 26, 42, -1, 52, 41, -1, -1, -1, 56, -1, -1, -1, -1, 50, 45, 40, 7, 41, 52, 42, 48, 45, -1, 42, -1, -1, 31, 45, -1, -1, 51, 51, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, 48, 52, 51, 40, 30, 47, 46, 24, 40, 40, -1, 15, 54, 40, 51, 36, 43, -1, -1, 50, 50, 54, 40, 51, 52, 9, 46, 54, -1, -1, -1, -1, -1, -1, -1, 6, 6, 51, 52, 47, 43, 27, 52, 40, 47, 1, 32, 46, 44, 43, 52, 47, 31, -1, 52, 48, 52, 52, 41, -1, -1, -1, 40, -1, -1, -1, 54, 53, 35, 47, 47, 41, 6, 54, 4, 54, 48, 26, 7, -1, -1, 54, 51, 11, 45, 54, 31, -1, -1, 52, 50, 32, 46, -1, -1, -1, -1, 42, 41, 24, 24, 24, 50, 41, 54, 39, 40, 50, 54, 54, 52, 42, 53, 54, 6, 52, 32, 48, 54, 31, 52, 48, 40, 49, 39, 40, 54, 48, 54, 40, 54, 50, -1, 2, 48, 41, 50, -1, -1, -1, 46, 39, 48, 42, -1, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 31, -1, 43, 40, 45, 1, 45, 6, 43, 31, 48, 50, 51, 24, 7, 41, 39, 2, 31, 50, 43, 6, 6, 40, 50, 48, -1, 48, 52, 52, 32, 45, 51, 3, 49, 21, 42, 7, 41, 31, -1, -1, 42, 2, 52, 41, -1, -1, -1, -1, 25, 7, 24, 50, 54, 51, 52, 49, -1, -1, -1, -1, -1, -1, -1, -1, 47, 52, 48, 43, 52, 8, 3, 39, 31, 48, 51, 1, 31, 54, 40, 52, 42, 24, 7, 49, 54, 40, 1, 32, 40, 40, 51, 54, 50, 46, -1, 12, 38, 42, 1, 31, 41, 44, 11, 1, 41, 50, 52, -1, -1, -1, 42, 42, 54, 52, 32, -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, 37, 54, 54, 6, 54, -1, -1, 1, 7, 40, 31, -1, -1, -1, -1, 50, 56, -1, -1, 47, 50, 53, 40, -1, -1, -1, -1, -1, -1, -1, -1, 50, 48, 40, 16, 41, 31, 40, 42, 52, -1, 52, 31, 41, 1, 24, 23, 40, 42, 51, -1, -1, -1, 31, 40, 45, 8, 24, 31, 6, 53, -1, 12, 38, 42, 1, 52, 41, 41, 11, 1, 54, -1, 52, -1, -1, -1, 54, 42, 52, 41, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7, 55, 1, 44, 54, 40, 48, 25, 54, 2, 47, 1, 50, 8, 43, 50, 42, 43, 41, 43, -1, 54, 52, 7, 7, 1, 54, -1, -1, 41, 54],
|
|
4077
|
+
thresholds: [0, 0, 0, 0.1651376, 0.1222076, 0, 0.4375, 0, 0, 0, 0, 0.2533333, 0.04799343, 0, 1.098612, 4.153444, 0.9995694, 0, 0.2428571, 0.7044025, 0, 0, 0, 0.6931472, 0, 0.5077296, 0, 0, 0, 0, 0.02316602, 0, 0, 0, 0.3807987, 0.09414381, 0, 5.57973, 0.3230769, 0, 0, 0, 0.3636364, 0.2, 0, 0.5827814, 0.735, 0, 0, 0, 0.2, 0, 0, 0, 0, 0.2781682, 0, 0, 0.2517483, 0, 0.25, 1.098612, 0, 0, 0, 0.1493049, 0.3230769, 0, 0, 0.7175612, 0.68, 0.275, 0, 0.4674693, 0, 0, 0.01591512, 0, 1.386294, 0.9088849, 0.04255319, 4.559038, 0, 0.6849968, 0, 0.09111514, 0.07707246, 0.04799343, 0, 0, 6.186209, 0.1234112, 10.24495, 0, 0, 0.2533333, 0, 0.1222076, 6.186209, 0, 923186e-8, 0.5, 0, 0, 0, 0, 0.01219512, 0, 0.1875, 0, 0.1655462, 0, 0.7829458, 0, 0, 0, 0.7175612, 0, 0, 0, 0.2, 2.649369, 0.25, 0, 0, 0, 0, 0, 0.3230769, 0.2, 0, 0.7683557, 0, 0, 0, 0, 0, 6.478509, 0, 0.01219512, 0.2781682, 0, 0.7836897, 0.275, 0, 0.6849968, 0, 0.2993237, 7.920083, 0, 0, 0, 0, 0, 0, 0, 0, 0.1966292, 0.06774194, 0.1578185, 0, 0, 1.386294, 0, 0, 0, 0, 0.6257396, 0.4674693, 0, 0, 0, 0, 0, 0.6886503, 0, 0, 0, 0.1666667, 0, 0.01591512, 7.698483, 2.163539, 0.8172206, 0, 0.1935484, 0, 0, 0, 0, 0, 0.4674693, 5.57973, 0.08144234, 0, 0, 0.1655462, 0.09111514, 0.6849968, 0.03896104, 0, 0, 0, 0, 0, 0, 0.6842105, 0.09378118, 0, 0, 0, 4077529e-10, 0.8929385, 1.098612, 0.1666667, 0.5, 10.24495, 0, 0, 3.853134, 0, 0, 0.7175612, 0.75, 0, 0, 0, 0.1655462, 0, 0.1655462, 0, 1.098612, 0.6057872, 0, 0, 0, 0, 2.223656, 0.25, 0, 5405406e-9, 0.8773364, 0, 0.1666667, 0, 0, 0.3408666, 0, 0, 0, 3.38491, 0, 0, 0.2, 0, 0, 0, 0, 0.1655462, 0, 0.566474, 1.098612, 0.2, 0.3807987, 0, 0, 0, 0, 1.791759, 0.7836897, 0, 0, 0.7987013, 0, 0.03896104, 0, 3.711259, 0.5859071, 3.465736, 0, 0, 0, 0.7683557, 0, 0, 6.343881, 0.01219512, 0.225, 0, 0.25, 0, 0.1666667, 0, 0, 0, 0.3702046, 4.559038, 0.07975792, 0, 0, 3.590021, 0.09414381, 0.2, 5405406e-9, 0, 0, 0.8172206, 0, 7.698029, 0.4375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.470899, 2.639057, 0, 0, 0.1655462, 0.25, 0.8010488, 0.25, 0, 0, 0.07707246, 0, 0.225, 0.75, 0, 0, 0, 0, 0, 0, 0.6931472, 0, 0, 4.001706, 0.07707246, 0.6257396, 0.1666667, 0, 0, 0, 0, 5.57973, 0, 0, 0.25, 0, 0, 0.68, 0, 0.5889103, 0.275, 0.7175612, 7.698029, 1.098612, 0.05263158, 0, 0, 5.278115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.9245283, 0, 0, 0, 0.01279318, 4.327618, 0, 0, 0, 0.1578185, 0.7514793, 0.04676814, 0.25, 0, 0.735, 0.2781682, 0.75, 0.05263158, 0, 0, 0, 0, 0, 0, 0, 0.325, 0.2, 0, 0.2, 0, 0, 0.1234112, 0.2429577, 0, 0, 0, 3.853134, 0.7848276, 0, 0, 0, 0, 2.944439, 0.7358209, 4.859812, 0.5458733, 0, 0.8773364, 0.15, 7.920083, 2.995732, 2.589959, 0, 0, 0, 0, 0, 0, 0, 0.2533333, 0, 0, 0, 0, 0, 2.397895, 0, 0, 0, 0, 0, 0, 0, 0.1666667, 0.9245283, 0.4859494, 0.3333333, 4.859812, 0.06774194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.859812, 0, 0, 0.5859071, 0, 0, 0.8896571, 0, 0, 4.110874, 0, 0, 0.0494359, 0.7358209, 0.2, 6.660575, 0, 0, 0, 0.1765268, 0, 0.225, 0, 0, 0, 0, 0, 0, 0.325, 0.2, 0, 0, 0, 4.859812, 0, 0, 0.1666667, 0, 0, 0, 5.278115, 0, 0, 0.6415094, 0.2, 0.01820779, 0.5077296, 0.475, 0.1913043, 0, 0, 0, 0, 0, 0, 0, 0, 0.1146875, 0.7836897, 0, 0, 0.1666667, 0.01219512, 0.7, 0, 6.620073, 0.15, 0.6849968, 0, 0.3333333, 0.7175612, 0.525, 6.349139, 0, 0.6931472, 0, 0.07707246, 0.02836879, 0.325, 0.2429577, 0.6931472, 0.1655462, 0, 0, 0.2786465, 0, 0, 0.2, 0, 0, 0, 0, 0, 0, 0, 0.4674693, 4.327618, 0, 0, 0.09111514, 0.9716312, 0, 0.2, 0, 0, 0, 0, 0.3807987, 1.098612, 0.1655462, 0, 0.1966292, 0, 4.859812, 0.07707246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.001706, 0.01279318, 0, 0.07707246, 0.2, 0.25, 0, 0.8460699, 0, 0, 2.560159, 0.7358209, 0, 0.15, 0, 0, 0, 0, 2.079442, 0, 0, 0, 0, 0, 0, 0.2, 0, 0, 0, 4.110874, 0, 0, 0.5, 0, 0, 0, 0.2, 0.9814815, 0, 0, 0, 0, 0, 1.277376, 0, 6.028278, 0, 0, 0.05263158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01279318, 0, 0, 0.0700191, 0.4674693, 0, 0.8460699, 0, 0, 0, 0, 0.05263158, 0, 0.5, 0.6931472, 0, 0, 2.484907, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5859071, 0.2, 0.01820779, 0.9245283, 0, 2.833213, 1.609438, 0, 0, 0, 0.5889103, 0, 0, 0, 0.05263158, 0, 0.05882353, 0.01591512, 0.6849968, 1.098612, 6.224558, 6.760415, 3.7612, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.03896104, 0.01279318, 0, 0, 1.098612, 0, 0, 0.8616044, 0, 0, 0, 0, 0, 0, 4.153444, 0.4878399, 0, 0, 2.484907, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0, 0.3333333, 0.6842105, 0.6729858, 0, 0, 0.09302326, 2.890372, 0, 0, 0.25, 0.7836897, 7.920083, 0, 0, 0, 0, 0, 2.302585, 7.698029, 0.7520133, 0, 0, 0, 0, 0, 0.25, 0, 0.8896571, 0.01820779, 0.25, 0.3807987, 0, 6.907755, 0, 2.772589, 0, 0, 2.079442, 0, 0.5458733, 0.5889103, 1.098612, 0, 0.2, 0.3333333, 0, 0.5, 0.2, 0, 0.9102251, 0.225, 0, 5.231109, 0, 0.06930693, 0, 0, 4.110874, 0, 4.859812, 0, 0, 0.6057872, 0, 0, 0.2115385, 0.125, 3.258096, 0.225, 0, 0, 0, 0, 1.277376, 0.1, 0.3333333, 0, 0, 0.375, 4.007333, 8.007034, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.251345, 0.075, 0, 0.125, 8.091627, 923186e-8, 0, 0.7, 0.0346841, 7.698029, 0.8460699, 0.6931472, 0, 9.083983, 0, 0, 0.3341523, 0.25, 0, 0, 0, 0, 0, 0.5077296, 0.3333333, 0, 3.78419, 0.8297873, 0.3341523, 0, 0, 0, 0, 2.639057, 0.04424779, 6.343881, 0.2978621, 0, 4.859812, 0, 0.1, 0, 0, 0, 0, 0.15, 0.275, 0, 0.375, 0, 0, 0, 2.302585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.08144234, 0.3333333, 0, 0.25, 5.686975, 0, 0.4095238, 0.3333333, 0.15, 0.03896104, 0, 0.3, 0, 0.260274, 3111111e-9, 0, 0, 0.72, 0, 0.275, 0, 3.526361, 0.07347349, 2.331571, 0, 0, 0, 0, 0, 0, 0.8896571, 0.09111514, 6.660575, 0.3807987, 0, 0.25, 0.5458733, 0, 2.649369, 0.2, 923186e-8, 0, 0.3230769, 0.2781682, 0.9007138, 0, 0, 5.693732, 0.03703704, 1.098612, 0, 0.8297873, 2.252276, 0.9029938, 0, 0.898181, 0, 8.091627, 7.698029, 0, 0, 0, 0.75, 0, 9.083983, 1.098612, 0, 0.3309545, 0.09302326, 0.8, 0, 6.55108, 0, 0, 0, 0, 0.1234112, 4.859812, 0, 0, 0, 0, 0, 2.639057, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.04424779, 0.75, 0, 0, 0.8974359, 0, 1.098612, 0, 0.6415094, 0, 0, 0.5275567, 0, 0.5, 0.3333333, 0, 6.55108, 0, 0.644637, 0.0542577, 0.7836897, 0, 0, 0, 0, 0, 2.792088, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.836282, 0, 0.8297873, 0, 0, 0, 0, 0, 1.579311, 0.5, 0.0600245, 0, 2.302585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.8896571, 0, 0.25, 0.475, 0, 6.907755, 0, 0.02698599, 8.2933, 0, 0, 1.098612, 0.5458733, 0.5889103, 0.1935484, 0, 0, 6.55108, 0, 0, 0, 0, 0, 0.9029938, 0, 0, 0, 0, 0, 0, 2.719441, 4.110874, 1.098612, 0.075, 0, 0, 4.430817, 0.225, 0, 1.098612, 0.6931472, 0, 0, 6.55108, 6.478509, 7.251345, 0.5077296, 0, 0.275, 0.976508, 0.9521739, 0.2781682, 0, 0, 0, 0, 0, 0, 0.04643963, 0, 0.7142857, 0, 0, 0.09111514, 0, 1.386294, 0.9245283, 0.75, 0.2, 0, 0, 0, 0, 2.825013, 0, 0, 0, 0, 0, 0, 0, 0.9698997, 0.25, 0.2428695, 0.1666667, 0.4486312, 0.1666667, 3.7612, 0.01111111, 0, 0, 0.04799343, 0.5785877, 0, 0, 2.484907, 0, 0.15, 0.1355838, 0.9102251, 8.091627, 0.4973886, 6.186209, 0.01857929, 0, 0, 0.8143564, 0, 0.275, 0.4324605, 0.225, 2.772589, 0, 0.9007138, 0, 0, 0, 0, 0, 0, 0.0754717, 0, 0, 0, 0, 0, 0, 0.75, 0, 0.1935484, 0, 9.083983, 6.55108, 0.8297873, 0.5948718, 0, 0, 0, 0, 8.501063, 0.8, 1.098612, 0.2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.484907, 0, 0, 0.1355838, 0.9814815, 0.3230769, 0.3333333, 0, 0, 0, 0, 0.0754717, 0, 0.8301887, 0.275, 5.686975, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5275567, 0, 0, 0.2485207, 0.9102251, 0.3341523, 0.2254693, 0, 0, 0.9995694, 5.521461, 5405406e-9, 1.783998, 0, 0.7846154, 0, 0.2, 2.397895, 5.17615, 1.098612, 0, 0.1875, 6.028278, 0, 0, 0, 0.125, 0.05263158, 0.6931472, 0, 0, 0.275, 2.397895, 5396655e-9, 0.475, 0.45, 8.2933, 0.6849968, 2.995732, 6.55108, 0, 7.251345, 0, 0, 5.857933, 1.098612, 0.05882353, 0, 0, 4.559038, 0.2, 0.898181, 0.9908676, 0, 0, 0, 0, 0.1666667, 0.2093023, 0, 0, 0, 0, 0, 0, 0.75, 0.1875, 1.098612, 0.2485207, 4.859812, 0, 6.55108, 1.098612, 0.9521739, 0.3894129, 0, 0, 0, 4.644391, 0.2, 0, 0, 0.3341523, 0, 0.325, 4.143135, 0, 0, 0, 0, 0, 0, 0, 4.624973, 0, 0, 0, 3111111e-9, 2.484907, 0.2, 0, 0.1355838, 0.9814815, 0.07142857, 0, 0, 5396655e-9, 0, 0, 0.0754717, 0, 0, 0, 0, 0, 0.1666667, 0.2993237, 0.621134, 0.9521739, 0, 0, 0, 0, 0, 0.5275567, 0, 0, 3.465736, 0, 0.075, 0, 0.25, 0.05, 0.25, 4.574711, 0, 0.3333333, 0.5, 0, 0, 8.007034, 6.349139, 1.676732, 3.172406, 0, 0.125, 0.3523154, 0, 0, 0.7836897, 0.1655462, 3.258096, 0, 0, 5307856e-9, 5307856e-9, 0, 2.944439, 0.475, 7.698029, 8.2933, 7.257003, 0.2, 2.923849, 0, 0.15, 0.1355838, 0, 0.7972973, 0.04255319, 0.5555556, 0, 0, 6.224558, 0.7972973, 0.1264647, 0.6819527, 0.125, 0, 0.4375, 10.0538, 1.494614, 0, 0.7520133, 0, 0, 0, 0, 0, 0, 0, 0.07142857, 2.564949, 2.484907, 0, 0, 0, 7.251345, 0.1355838, 0.9102251, 0, 0, 0, 0, 7.553287, 0.275, 4.559038, 0.225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.1856436, 5396655e-9, 2.19474, 0.9007138, 0.621134, 2.252276, 0, 0, 0.4486312, 0, 0, 0, 0, 0.4210526, 0, 0, 0, 0, 1.494614, 0.25, 1.609438, 2.197225, 0, 0, 0, 0, 0, 0.898181, 0, 0.898181, 0.5, 0, 0.3333333, 0.5889103, 0, 0.225, 2.890372, 7.017506, 0, 0.5, 5.252274, 0.1578185, 2.772589, 0.2, 0.5, 0.2, 0.275, 8.091627, 2.833213, 0.15, 0, 0.1111111, 0.260274, 0.5889103, 0, 0, 0, 0, 0, 0, 0, 0, 0.75, 0, 0, 0, 6.186209, 0, 9.083983, 0, 0.1651376, 0, 0, 0, 0, 0, 8.501063, 0, 0, 0, 0, 1.494614, 2.772589, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.3341523, 0.1, 1.098612, 0.3113497, 3.401197, 0, 0.05263158, 0.08333334, 5405406e-9, 0.9698997, 0, 0, 2.484907, 0.07347349, 0.125, 4.859812, 0.5, 0.6886503, 4.836282, 0, 0, 0.225, 0, 0, 0, 0, 0.5889103, 0.03191489, 0, 0, 0.525, 7.553287, 0, 7.257003, 0.2, 0.2093023, 8.2933, 0.375, 0.4, 0, 0, 0.4878399, 0, 0, 0, 0.35, 6.620073, 4.559038, 0.5948718, 0, 0.8301887, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.735862, 1.098612, 0, 0, 0.2428695, 2.639057, 0, 0.075, 0.01857929, 0, 0, 0.0754717, 0.5628141, 0.175, 0, 2.683568, 2.792088, 1.579311, 0.04629841, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.091043, 0, 4.356709, 5396655e-9, 3.258096, 5.686975, 0.7972973, 4.41884, 0, 0.2, 0, 0, 0, 0, 0.175, 0.9698997, 0.03896104, 1.94591, 2.252276, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.639057, 0, 0.25, 0, 0, 0, 2.484907, 5.693732, 0, 0.4210526, 0.4210526, 0.3333333, 0.225, 0, 0.01219512, 6.55108, 7.920083, 0.1264647, 0.04629841, 0, 2.397895, 5.17615, 0.275, 3.401197, 0, 6.052089, 0, 2.560159, 0.25, 2.397895, 0.4, 5.733341, 0, 0, 6.343881, 0, 0.525, 0.814433, 4.559038, 0, 0.2, 0, 0, 0, 1.609438, 8.2933, 0.7358209, 0, 0, 0, 0.9995694, 5396655e-9, 0, 0, 0, 0.4674693, 0, 0, 0, 0, 0.2781682, 0, 0, 0, 0, 0, 0.8896571, 0, 0.3333333, 0.5315315, 0.1666667, 4.007333, 0.3, 0.8297873, 0.9521739, 0.175, 0, 0.3309545, 0, 6.186209, 0.2, 0.1, 0.275, 0.4, 0.6886503, 0, 0, 0, 0, 0, 2.197225, 0.1255986, 1.098612, 0, 7.470224, 0, 0, 0, 0.02698599, 1.735862, 2.484907, 0.735, 0, 0.4375, 0.09302326, 0.03191489, 8.669914, 0, 0, 0, 0.225, 0, 3.367296, 0, 0.1493049, 0, 7.257003, 0.5889103, 0.25, 0.2781682, 0, 0, 0, 0, 0.4878399, 0, 0, 0, 0, 0.3230769, 0.02702703, 0.8301887, 0.275, 0.3333333, 2.331571, 0, 0.25, 0.2, 580011e-8, 3.555348, 0, 0.1875, 0.1666667, 0.898181, 0, 3.871201, 5.361292, 0, 0.9995694, 0, 7.920083, 0.2781682, 0, 5.252274, 0, 0, 0, 0, 0.01111111, 0, 0, 5396655e-9, 0.1666667, 0.1578185, 0.7972973, 4.41884, 0, 0, 0, 0, 0, 0, 0.175, 0.6257396, 1.098612, 0, 0.1666667, 0.1913043, 0, 0, 0, 0, 0, 0, 0, 0, 0.7358209, 0, 0.8301887, 0.6931472, 0, 0, 0.2955975, 0, 0, 0.9814815, 2.639057, 1.277376, 0, 0.02702703, 0.6415094, 4.41884, 0, 0, 0, 0.2, 0, 0.5, 0.2, 0.5, 0, 0.08483563, 0.7836897, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0.5, 0.3333333, 0, 0.6842105, 0.225, 2.890372, 0.5889103, 2.302585, 0.15, 0.5827814, 5.768321, 2.302585, 2.719441, 7.698029, 0.275, 0, 0, 0.4210526, 7.095064, 0.5, 0, 0, 0, 3.112789, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.2428695, 0, 7.257003, 0.425, 0.1012539, 0, 0, 0, 0, 0, 0.375, 7.553287, 0, 2.560159, 0.2993237, 2.302585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.356709, 923186e-8, 0.7175612, 5.686975, 0, 2.252276, 0.5471264, 0.25, 0.04799343, 0, 0, 0, 0.01857929, 0.01183109, 2.19474, 0.275, 2.995732, 0.2993237, 0, 0, 0, 0, 0, 5.129899, 0, 2.397895, 0, 5.252274, 0.2786465, 8.501063, 3111111e-9, 1.791759, 0, 0, 0.3807987, 0, 0.2428695, 0, 0, 4.143135, 0, 0, 1.098612, 2.772589, 0.5315315, 0, 0, 0, 0, 0, 0, 0, 0, 0.4486312, 0.2, 0, 0, 0, 0, 0, 2.890372, 0.5, 0, 0.5471264, 6.478509, 0.3333333, 0.3333333, 2.833213, 0, 0.05882353, 3.663562, 0.2429577, 0.2978621, 0.1913043, 0.566474, 0.2, 0.125, 0.5, 0, 0.4859494, 0.2781682, 0.5546955, 0.01923077, 0, 0.3270142, 0, 0, 0, 0, 0, 0, 0, 0.2485207, 0.9102251, 0.3702046, 0.1913043, 0.08259411, 0.2, 0.5, 0, 5405406e-9, 0, 0, 0, 4.110874, 2.683568, 0.9716312, 1.098612, 5.521461, 0.6849968, 0.425, 0, 0, 1.960601, 0.9521739, 0.1666667, 0.6, 0.5555556, 0, 0, 0, 0, 0, 0, 0.5077296, 0.1, 0, 0.4055944, 3.401197, 0, 0.4375, 0.2428571, 0.07707246, 0, 0, 0, 3.555348, 0.566474, 0.7672956, 0, 2.302585, 0.3807987, 0.275, 3.637586, 0.6849968, 0.2781682, 0, 0, 0, 0, 0.2115385, 4.394449, 0, 0, 0.75, 0.1875, 6.55108, 0.1111111, 4.859812, 4.836282, 0.2, 2.995732, 0.2228809, 0.3894129, 3.711259, 0.5, 0.7526882, 0, 0, 0.3408666, 1.386294, 0.2429577, 0, 0.275, 0.8556951, 0, 0, 2.302585, 0, 1.94591, 0, 0, 0, 0, 0, 0, 4.356709, 5396655e-9, 3.637586, 5.686975, 0.5827814, 0, 0.7175612, 0, 0.04799343, 0.9007138, 4.691348, 0.9844254, 0, 0, 2.079442, 2.890372, 2.252276, 0, 0, 0, 0, 0, 0, 0, 0.9047619, 0, 4.644391, 0.3807987, 0.898181, 0.0600245, 0.2485207, 0, 0.9698997, 0.75, 0.7, 0.6842105, 3.931826, 0.3, 0.1875, 0.2428695, 0, 0.275, 0, 0.3333333, 0, 0.09111514, 0, 0, 0.2228809, 3.555348, 0, 0, 0, 0, 0.1651376, 0.25, 0, 0, 3.526361, 0.275, 4.41884, 0, 0, 0.03149606, 3111111e-9, 0.2955975, 0, 0.38, 0.2, 0, 0.9, 2.639057, 0, 0, 0, 0, 0, 0, 0, 0.6931472, 4.41884, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0.02702703, 8.669914, 0.898181, 0.4, 2.331571, 0.5, 0.03149606, 0.08144234, 0, 0, 5.438079, 0.1875, 0.1666667, 8.501063, 0.6842105, 0.1666667, 0, 5.9428, 0, 0, 0, 4.234107, 0.01565826, 0, 0, 0, 0, 0, 0.01111111, 1.579311, 0, 0, 0.5278115, 0.1745893, 0.9245283, 0.8929385, 0.0600245, 0.4210526, 0.25, 0, 0.04975546, 0.38, 4077529e-10, 0, 0, 0.3160217, 0, 0, 0, 0, 4.691348, 0.3408666, 0, 0.898181, 0, 0, 0, 0.375, 0.566474, 0.9160967, 0, 0.2115385, 0.7846154, 0.5, 5.733341, 3.988984, 0.3807987, 0.6931472, 0, 0.1, 0.225, 0.8793104, 0.6931472, 5.924256, 0, 6.052089, 7.257003, 0.275, 0.3523154, 0.5458733, 1.94591, 0.2228809, 0.2993237, 0.5, 0.01183109, 3.89182, 0.275, 0, 0, 0.9324324, 0, 0, 0, 0, 0, 0, 0.2088739, 0, 0, 923186e-8, 2.833213, 0, 0, 0, 0, 0, 0.1666667, 2.197225, 0, 0.08483563, 0.3113497, 0.1012539, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.9995694, 3.367296, 0.6849968, 0.1745893, 0, 0.2, 0.6141758, 0, 0, 0.5, 0, 0, 0.5458733, 0.15, 1.098612, 0.1, 0, 0, 0, 0.1176471, 0.3, 0, 0, 0, 0, 0, 0.7358209, 0, 0, 4.110874, 0, 0, 0.03149606, 0, 0.2955975, 0, 0.5889103, 0.5315315, 0, 0.9, 2.639057, 0, 0, 0, 0, 0.4, 0.4, 0, 0, 4.41884, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.098612, 9.083983, 0, 8.501063, 3.73767, 0.9324324, 0, 7.698029, 0.225, 0, 0.2533333, 0.01219512, 0.5315315, 0, 0, 7.257003, 0, 0.07707246, 0, 0.0346841, 0, 0, 0, 0.4375, 0.5827814, 0, 0, 0, 0, 0, 0, 0.35, 1.94591, 0.375, 3.590021, 2.079442, 0.5471264, 6.55108, 0.566474, 3.637586, 1.94591, 0.075, 1.098612, 0.1666667, 0, 8.2933, 5.733341, 0.6849968, 0, 0.4486312, 3.367296, 6.660575, 0, 2.302585, 0, 3.433987, 0.25, 0, 5.9428, 0.45, 1.94591, 0.25, 0, 0, 0.01111111, 0.3333333, 0.3333333, 0.5827814, 2.331571, 0.1666667, 0.175, 5.459586, 0.72, 0, 0, 0, 4.859812, 0, 0.5948718, 0.6886503, 0.08483563, 0, 0, 0, 0, 0.07347349, 0, 0, 0, 0, 0, 580011e-8, 0.05263158, 0, 0.8896571, 0, 0.6571429, 0.1222076, 6.224558, 0, 0, 0, 0.01565826, 0.941459, 0, 0, 0, 0, 0.04975546, 0.7836897, 3.465736, 0, 0.3309545, 7.470224, 0.8773364, 6.186209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.356709, 3187076e-9, 0.7175612, 2.564949, 0.5546955, 4.41884, 0.5471264, 0.25, 0, 0, 0, 0, 0.4324605, 0.6257396, 0.5, 0, 2.944439, 0.2993237, 0, 0, 0, 0, 0, 0, 0, 0, 0.02871578, 0.25, 0.4651163, 0, 0.1111111, 0.06896552, 0.1578185, 0, 0.1655462, 2.079442, 0, 0.3341523, 0.1, 0.03896104, 4.61512, 2.397895, 0.2002174, 4.912655, 3.135494, 1.098612, 0, 0, 0, 0.1666667, 2.833213, 0.3333333, 0.225, 0, 0, 0.1146875, 2.923849, 0, 0.5315315, 0.6849968, 0, 0.03149606, 0.3230769, 5.236442, 0.275, 0.3807987, 0.5, 3.302175, 0.225, 4.919404, 0, 0, 0, 0.1765268, 0.4055944, 2.833213, 5.768321, 5.924256, 2.560159, 0.5889103, 0, 0, 0, 1.611032, 0.1, 0.06774194, 0, 0.8143564, 0, 0, 0.25, 0, 0.5315315, 0.4, 0.9495798, 0.3, 2.589959, 0, 2.397895, 3.7612, 8.2933, 0.475, 0.5458733, 0.1578185, 0.7987013, 0, 0, 0, 0, 0.01565826, 0, 0, 3.044523, 4.983607, 0, 0.2, 0, 1.098612, 3.555348, 0.1, 0.07347349, 8.501063, 0, 7.257003, 7.095064, 0.9698997, 0.15, 0, 7.553287, 0.03330147, 0, 5.733341, 6.052089, 0, 0.1255986, 0.2, 0, 1.609438, 4.912655, 0.1, 0, 0.5889103, 0.25, 0.3584906, 0, 0, 0.9047619, 0.8143564, 0, 0.1578185, 0, 0, 0, 0, 0, 0, 0.2428695, 1.098612, 0, 0.1856436, 0.5944056, 0, 0, 0, 0.275, 4.356709, 0, 0, 0, 1.098612, 0, 3.89182, 2.792088, 0.275, 0.1666667, 0.4324605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3187076e-9, 2.564949, 0.2, 0.5546955, 0.1111111, 0, 0.9245283, 0, 0, 0, 0, 0.06896552, 0.1578185, 0.02702703, 0, 0.3333333, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.1, 2.331571, 1.609438, 0, 0.09302326, 0.5, 4.859812, 0.3270142, 0.425, 0.976508, 0.03191489, 0.03191489, 3.637586, 0.3807987, 5.609472, 0.4651163, 4.836282, 0, 0.1875, 0.04799343, 4.234107, 0, 0.9521739, 6.133398, 0, 0, 0, 0.6, 0.2978621, 1.609438, 0.01857929, 0, 0, 0, 0, 0, 0, 0, 3111111e-9, 0, 4.770685, 0, 0.06930693, 0, 0, 0, 0.07975792, 2.772589, 0, 0, 0.3807987, 0, 0, 0.6931472, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.3341523, 6.620073, 0.3113497, 0, 1.098612, 5405406e-9, 5.9428, 0, 0.7846154, 7.017506, 0, 5.521461, 0, 0, 0.2, 0.1666667, 0.15, 0.2533333, 0, 0, 0.1234112, 0.3, 0, 0, 0, 0.1765268, 0, 0.3333333, 0.25, 0, 0.1966292, 0, 0, 0.2428695, 0.02836879, 0, 0.1856436, 0.4375, 0.07707246, 0, 0, 0, 0.25, 0, 2.302585, 0, 0, 0.1551724, 0.1109164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.356709, 5396655e-9, 2.079442, 5.686975, 0.5827814, 0.5, 2.683568, 2.223656, 4.983607, 0.9007138, 0, 0.9844254, 0.5278115, 0.72, 0.1264647, 0.9245283, 0.7848276, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.277376, 2.564949, 5.17615, 0.03149606, 0, 5.236442, 8.669914, 0.5889103, 0.4180328, 3.302175, 0.075, 0.1666667, 0, 4.356709, 0, 3.465736, 0.4055944, 2.833213, 0.5471264, 0.4324605, 0, 0, 7.257003, 0.1222076, 0, 3.988984, 1.791759, 0.7836897, 0.1, 0, 0, 1.609438, 2.302585, 0.1146875, 0.5077296, 0.9088849, 0, 4.836282, 0, 0.5785877, 0.5, 4.691348, 0.25, 0, 0, 0.03191489, 0, 0, 0, 0.4324605, 0, 4.394449, 0.1012539, 0, 0, 0, 0, 3.555348, 0.6842105, 0, 4.110874, 0.6849968, 3.135494, 0, 0, 0.6849968, 0.4324605, 0, 6.133398, 0, 8.091627, 0.6931472, 5.768321, 580011e-8, 4.836282, 0.6931472, 1.098612, 0.15, 0.4210526, 0.2641791, 5.252274, 0, 0, 7.920083, 0.1264647, 0.225, 0, 0.1913043, 0.25, 2.944439, 0.1655462, 0, 0.04545455, 2.683568, 0, 0, 6.343881, 5.231109, 0.175, 0, 0, 3.367296, 0.2533333, 0.125, 3.637586, 0, 0.01591512, 0.03852465, 0.2517483, 0.3341523, 0.35, 3.178054, 2.302585, 0, 4.859812, 0.03896104, 0, 0, 0, 0, 0, 0, 0.2428571, 0.03149606, 0.2, 0.9995694, 0, 0, 0.735, 0, 0.72, 0.275, 0, 0, 0.525, 5307856e-9, 0.9521739, 0.3230769, 0, 0, 0, 0, 0.425, 0, 3.091043, 4.394449, 0.1234112, 0, 1.94591, 4.983607, 0, 0, 0, 0, 0, 0, 0, 0, 0.6842105, 7.257003, 7.920083, 0.3636364, 0.1765268, 0.1420345, 0.9090909, 0.3333333, 0.15, 8.091627, 0.6141758, 0.09302326, 0, 0.5458733, 2.719441, 6.907755, 0.6849968, 5.78996, 3.044523, 0.225, 0.01111111, 0, 7.251345, 0.3333333, 2.302585, 0.9495798, 0.275, 0, 0, 0, 0, 0, 0, 0.2428695, 3111111e-9, 0, 0.2327044, 0.5944056, 0.06930693, 0, 0, 0, 5.361292, 0, 0, 0, 0.01279318, 0, 1.098612, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.110874, 0, 0.25, 1.098612, 0.35, 2.197225, 5.17615, 1.94591, 0.5, 4.691348, 3.061964, 0, 2.560159, 0, 0, 0.1578185, 2.772589, 0, 0, 0, 5.056246, 0, 0, 0, 2.564949, 0.03149606, 0.1666667, 0, 0, 0, 0, 0, 0, 0, 0.02836879, 0.03896104, 2.772589, 0, 0, 0.3333333, 0, 0, 0.03852465, 0, 0, 0, 0, 5.768321, 0, 3.89182, 0, 0, 0, 0, 0, 0.5546955, 0, 0, 0, 0, 0, 0, 7.251345, 4.559038, 0.2, 6.343881, 0.3428572, 0, 0.275, 6.55108, 0, 0, 4.70953, 0.9047619, 0.8010488, 5.733341, 0.25, 0.375, 0.2002174, 0.075, 0.4973886, 0, 0, 0, 0.25, 2.833213, 0.1, 0, 0, 0.25, 0.01219512, 0.7044025, 0.7044025, 0, 0, 0, 0, 0, 6.133398, 0, 0, 0.35, 0.25, 0, 0, 0, 0, 0, 0, 0.7836897, 0.3, 0.1578185, 0, 0.0494359, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.60517, 4.153444, 0, 8.711114, 2.639057, 4.61512, 0.9814815, 7.553287, 0.9698997, 0.15, 0.3333333, 0.1493049, 0.2093023, 0.325, 0, 7.257003, 0.175, 0.0700191, 0, 0, 0, 3.637586, 5.356586, 0.15, 0.1655462, 0, 0, 4.919404, 0.5889103, 0, 0, 9.083983, 8.501063, 3.637586, 4.60517, 0.03703704, 0.1234112, 0.2533333, 7.698483, 0, 0, 8.711114, 0.15, 0, 0, 0, 0, 0, 2.079442, 0, 0, 0.38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 2.772589, 0.3333333, 0.3333333, 0.72, 2.302585, 1.098612, 0, 0.260274, 0.5, 0.2, 0, 0, 4.153444, 0, 0, 4.912655, 0, 0.2641791, 0.09302326, 0.3, 2.639057, 0, 0, 0, 0, 0, 0, 3.367296, 0, 0, 0.3702046, 0, 0, 0, 0, 0, 0, 0.3742331, 0.25, 0.1234112, 0, 0, 0, 0, 0.2, 0.25, 0, 0, 0.1666667, 0, 0.1255986, 0.5458733, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01857929, 0, 0.2, 2.529484, 0.08483563, 0.1666667, 3.637586, 0, 0, 0, 0, 0, 0, 0, 0.1666667, 0, 0, 0, 0, 0, 0, 0, 0, 1.098612, 6.028278, 0, 6.133398, 0.976508, 4.859812, 3111111e-9, 1.791759, 0.1109164, 0, 4.41884, 0.8297873, 0.3270142, 0, 0, 0, 0, 0.5, 6.55108, 0.275, 0.4210526, 0, 0, 0, 0, 0, 0, 0, 0, 0, 580011e-8, 0, 0, 6.907755, 6651744e-9, 0.1234112, 0, 5.609472, 5.361292, 0, 0.3333333, 1.609438, 0.9995694, 5.356586, 0, 0, 1.676732, 0, 0.5948718, 0, 0.8571429, 0.6931472, 5.129899, 0.2, 3.228761, 0.175, 0, 2.883696, 0.02316602, 0.2, 0.1146875, 0.2993237, 3.172406, 0, 0.832981, 1.676732, 0, 0, 0.6842105, 0, 0.1, 0, 5.236442, 0.4375, 7.920083, 0.1109164, 2.302585, 3.332205, 0, 0, 0.1585652, 0, 8.2933, 5.857933, 0.3333333, 0, 0.225, 5.278115, 5.78996, 0.03703704, 0, 0, 0, 0, 0, 0, 4.912655, 0.4651163, 0, 0.2485207, 4.394449, 0.02698599, 3.73767, 7.698029, 0, 0.3702046, 0, 3.061964, 0.3408666, 0, 0, 0, 0.2, 0.3742331, 2.70805, 3.555348, 4.691348, 0.75, 0.1493049, 0, 0, 0, 0, 0, 0, 0, 4.007333, 4.61512, 0.4210526, 0, 7.251345, 7.017506, 0.2, 0, 0.2781682, 0.3333333, 0.275, 4.559038, 0, 0, 4.007333, 0, 0.3523154, 0.5889103, 0, 0, 0.3584906, 0, 3.367296, 3.465736, 0, 0, 0, 0.125, 0.25, 0.4324605, 0, 0.3341523, 5.236442, 0, 0, 0.1111111, 0.06896552, 0.1578185, 0.6141758, 0.1655462, 2.079442, 0, 0.1, 0, 0.03896104, 4.61512, 2.397895, 0.2002174, 5.17615, 2.302585, 0.03191489, 0.04255319, 0.1, 0.5, 4.574711, 2.38506, 0.3333333, 0.3428572, 0, 0, 0.1146875, 2.792088, 0, 0, 0, 0, 0, 0, 0.07142857, 0, 0.2955975, 0, 0, 0.75, 0, 0.4651163, 0.5275567, 0, 0, 0, 0, 0.3333333, 1.098612, 0, 0.09378118, 2.70805, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.3333333, 8.669914, 2.564949, 0.225, 2.890372, 7.251345, 0.7848276, 0, 0, 0.5889103, 2.302585, 0, 7.698029, 6.478509, 0.01219512, 0.7836897, 0, 0.06774194, 0, 0, 2.302585, 0, 0, 0, 0, 0, 0, 0, 0, 4077529e-10, 4.356709, 5396655e-9, 0.25, 4.912655, 0.5827814, 0.4651163, 0.1666667, 2.223656, 0, 0.4843636, 0, 0.9, 0.425, 0, 0.5275567, 0, 2.564949, 0.5944056, 0, 0, 0, 0, 0, 0, 0, 0, 5.57973, 3.091043, 0.175, 0.03149606, 0.04424779, 3.044523, 3111111e-9, 2.683568, 2.890372, 0, 0.1109164, 0, 0, 0.2, 3.465736, 0, 0, 0.8297873, 0.9995694, 0, 0, 0, 0, 0, 3.89182, 0, 0, 0, 0, 0, 0, 1.494614, 6.55108, 0.7972973, 0.2, 0.5, 0, 0.9814815, 0, 0.35, 0.225, 0, 0, 0.7836897, 0.325, 0.1966292, 0, 2.890372, 0, 0, 7.017506, 6.620073, 0.1651376, 0.425, 0.02584493, 5.204007, 0, 0.7142857, 0.4973886, 0, 0, 0, 0, 0, 0, 0, 0.1111111, 0.06896552, 0.1578185, 7.698029, 0.1655462, 2.890372, 0, 7.257003, 0.525, 0.03896104, 4.61512, 0, 0, 0.4375, 2.302585, 7.095064, 0.4, 0.1666667, 0, 4.912655, 2.38506, 7.412764, 6.028278, 0.28, 0, 0, 0, 0.225, 0, 0, 0, 0.4324605, 0, 0, 0.6141758, 0.8556951, 0.8929385, 0.05, 0.3309545, 0, 0.2422871, 2.529484, 0, 0.05263158, 0, 0, 0.2002174, 0.1222076, 0, 2.484907, 0.0600245, 0.3333333, 0, 0, 4.356709, 5.686975, 0.25, 0, 0, 0, 0, 0, 0.735, 0.6571429, 0, 0, 0, 4.574711, 0.8773364, 0.04975546, 0, 0.125, 5.459586, 0.4973886, 0.7836897, 4.41884, 0.9160967, 0, 0.4973886, 0.03703704, 5.278115, 0, 2.848795, 0.1012539, 0.1666667, 6.907755, 1.386294, 0.275, 0.04799343, 0, 0.275, 0.5889103, 3.38491, 4077529e-10, 0.425, 5396655e-9, 4.356709, 0, 0.5827814, 0.5278115, 0.9245283, 4.912655, 0, 0, 0, 0.9, 0, 1.098612, 0.1420345, 0, 0, 0.2088739, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.425, 1.791759, 5.236442, 2.197225, 0.02702703, 2.772589, 0, 1.960601, 4.219508, 0, 0, 0.03149606, 0.5471264, 0, 0.2533333, 0.5, 3.713572, 4.234107, 0.08333334, 0.1111111, 0.1, 5.924256, 3.853134, 0, 2.529484, 4.025352, 6.028278, 0, 3.258096, 0.4210526, 0.6931472, 0.2517483, 0, 0.8896571, 0.07142857, 0.7829458, 0.3333333, 0, 0, 0.8482024, 0.9090909, 5.056246, 0.8929385, 0, 0, 0, 0, 0, 0.01111111, 0, 4.356709, 0.3309545, 0.1222076, 4.70953, 0.04799343, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.768321, 3.853134, 2.397895, 7.095064, 0, 0, 0, 0.3333333, 4.327618, 0.02584493, 2.995732, 0.2, 0.1146875, 0.35, 5.361292, 0.09624537, 0, 0, 0.0346841, 0.2422871, 0.15, 3.7612, 0.2, 0.125, 0.25, 0.1578185, 0.06774194, 5.356586, 0.2093023, 0, 0, 0, 0.2428695, 0, 0.2, 0.2327044, 0.4375, 0, 0.6931472, 0.7358209, 3.367296, 4.356709, 0, 0, 0, 0.5077296, 0.5472561, 0.1146875, 9.083983, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.1255986, 0.02702703, 923186e-8, 0, 0, 1.609438, 0.05263158, 0.25, 0, 0, 0, 0, 0, 3.178054, 0, 0, 0, 0.38, 4.691348, 0, 0.075, 0, 0, 0, 0, 0, 0, 0, 0, 7.251345, 4.559038, 0.2, 0, 0.3270142, 0.3333333, 0.275, 0.735, 4.70953, 0, 5.521461, 0, 0.6571429, 5.733341, 0, 0, 0.225, 0.260274, 580011e-8, 0, 0, 0, 0.25, 0.125, 1.94591, 0, 0, 0.25, 0.01219512, 0, 0, 0, 0, 0.2428695, 0, 6.028278, 0.2327044, 0.5944056, 0, 0.6931472, 0.5889103, 0, 4.356709, 0, 0, 0, 0.04629841, 0.5472561, 6.028278, 0.2485207, 0.2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.03149606, 0, 5.236442, 0.7307692, 0.2781682, 0.25, 3.302175, 0, 0.3309545, 0, 0.1655462, 4.110874, 5.081404, 0.6931472, 2.833213, 6.186209, 0.260274, 1.94591, 0.8460699, 2.302585, 0, 0.4324605, 4.356709, 0.3333333, 0.25, 2.302585, 0.02871578, 0, 0, 0.4371859, 0.1146875],
|
|
4078
|
+
leaves: [-0.23561, 0.023447, -0.13061, 0.14613, 0.12236, -0.21303, -32768e-7, -0.20092, -0.084424, -0.26486, -0.31022, 0, -0.31748, -0.19889, -0.056845, 0, 0.17176, 0.3584, -0.023486, 0.19746, 0.13156, -0.10633, -0.22493, 0.16248, 0.43741, -0.084778, 0.09116, 0.3288, 0.17944, -0.15092, -0.17831, 0.079143, 48886e-7, -0.20068, -0.21915, 55031e-7, 0.11458, -0.17973, -0.21929, 0, -0.2285, -0.038863, -0.27544, 0, -0.28158, -0.14282, -0.048874, 0, 0.24062, 0.048763, -0.071005, 0.21582, -0.1209, -0.25721, 0.049963, -0.25376, 0.2459, 0.089621, -0.23001, 0, 0.35351, 0.1219, 0.17403, -0.12309, -0.080028, -0.23554, -0.23459, 0.027953, 0.074411, -0.19864, -0.18511, 18541e-7, -0.21768, -6757e-6, 0.077287, -0.22157, -0.261, -0.19163, 0.036432, 0, -0.10356, 0.20375, 0.14411, -0.028966, 0.053082, -0.12654, -0.25986, 0, 0.28012, -0.22242, -0.076944, 0.20812, 0.087574, -0.087544, 0.203, -0.19972, -0.21254, 63567e-8, 5394e-6, -0.24324, -0.12629, -0.24969, 0.084259, 0, -0.033203, -0.20835, -0.23734, 0, -0.24275, -0.10501, -0.18429, 0.14892, 0.1766, 0.021734, -0.26587, 0, 0.17567, -0.1707, -0.037455, 0.27335, -0.12374, 0.047843, -98443e-7, 0.17197, -0.11254, 0.058117, -0.23677, 0, -0.055431, 0.097804, -0.18559, -0.052887, -0.23058, 0, 0.11528, -0.13612, -0.13923, 0.080909, -0.22532, 0, -0.23152, -0.15324, 0.051228, 0, -0.067109, -0.22395, 0.050691, -0.13745, 0.13637, -90173e-7, -0.24041, 0, 0.15377, -0.16689, 0.24341, -0.022105, -0.24788, 0, -0.017616, 0, -0.16462, 0.013612, 0.038635, 0.22989, 0.045081, -0.10209, -0.21564, 0, 72906e-7, -0.16289, -0.21373, 0, -0.22081, -0.078086, -0.15316, 0.13243, 0.20276, 0.028648, -0.22413, 0, 0.022891, 0.15134, -0.094822, 0.099655, 71388e-7, 0.14674, 0.014356, -0.12154, -0.19694, 0.15717, -0.099096, 0.12635, 0.057267, -0.14791, -0.059075, -0.17192, -0.22546, 0, -0.032808, 0, -0.22099, 0, -92074e-7, -0.083904, 0.16629, -0.098288, -0.18969, 0, -0.171, -47879e-7, 0.10167, -0.18003, 0.063927, -0.11723, 0.13549, -0.069106, -0.044025, 0.15229, 0.05828, -0.068127, 0.2058, -0.072384, 0.097679, -0.22337, 0.06138, -0.092718, -0.15632, -0.016754, -0.21677, 0, -0.030546, 0, -0.21458, 0, -0.079727, -80882e-7, -0.081047, 0.16639, -0.17949, 0, 0.15047, 0.051409, -0.22976, 0.1185, -0.10147, 0.076186, -0.078185, -0.19178, 0.20854, -0.10599, -0.2048, 0.13967, -0.042093, 0.12159, -0.21578, 0, -0.032261, 0.11931, -0.051799, -0.16103, -0.20943, 0, -0.028452, 0, -0.20929, 0, -0.076386, -62274e-7, 0.10547, -0.11488, -0.16999, 0, -0.15001, -0.021811, 0.025352, -0.12175, 0.13057, 0.025172, 0.074301, -0.057198, 0.12407, -0.027459, -0.047656, -0.21144, 0.20279, 0.12903, -0.13322, 0.14871, -0.018247, -0.13235, 0.14172, -77991e-7, -0.18302, 0.056846, -0.13949, -0.017568, -0.20477, 0, -0.057345, 0, -0.15907, 24572e-8, 0.14063, -0.079145, -0.16216, -0.044827, 0.09244, -61447e-7, -0.03938, 0, -0.21476, 0, 0.084126, -0.058617, -0.21641, 0, 0.15694, -0.15306, 0.18212, -0.013169, 0.053679, -0.092513, -0.14749, 21819e-7, -0.20963, 0, -0.013958, 0, 0.093811, -0.024886, 0.14564, -0.030214, -0.11964, 41722e-7, 0.07505, -0.07905, -0.20442, 0, 0, 0, 0, 0, 0, 0, 0.1758, 0, -0.089306, 0, -0.046911, -0.19303, -0.021063, 0, 0.06359, -0.044415, -0.20234, -0.021942, -0.059815, 0.035376, -0.17578, -39977e-7, 0.17888, 56802e-7, 0.032227, -0.17538, 0.10322, -0.13686, 0.20193, -0.016966, -0.16308, 0, 0, 0, 0.019733, 0.15787, -0.10009, 0, -0.19851, 0, 0, 0, 0, 0, 0, 0, -0.16689, -33277e-7, -0.14714, -0.022562, -0.08232, 0, 0.24257, 0.023297, 0.011179, 0.089414, 0.16925, -0.04224, 0.057977, -0.16024, -0.20261, 0.017276, -0.19734, 0, 0, 0, -0.034978, 0, 0, 0, 0.13841, 0, -0.082451, 0, -0.1816, -0.04037, 0.034321, -0.089539, -0.042515, 0.062484, -0.19902, -0.019479, -0.18087, 0.086361, 0.019014, -0.16028, 0.063493, -0.11741, 0.16351, -22315e-7, -0.072393, 0.039091, -0.13329, 71813e-7, -0.10325, 0.058053, 0.01795, 0.13029, -0.17391, 0, 0, 0, -0.19253, 0, 0, 0, 0, 0, 0, 0, -20847e-8, -0.11977, 0.062216, -0.11356, 0.14928, -0.050463, -0.158, 0.015336, -0.051316, 0.12938, -0.064063, 0.14377, -0.16945, 0.018967, 0.1208, 0, -0.20148, 0, 0, 0, 0, 0, 0, 0, -0.014448, 0, 0, 0, 0, 0, 0, 0, -0.035177, 0.035992, -0.14586, -0.018246, -0.19382, 0, -0.015127, 0, 0.17943, -56409e-7, -0.067703, 0.04488, -0.0701, 0.061599, 0.16, 0.014724, -0.18755, 0, 0, 0, -0.021173, 0, 0, 0, 0.11844, 0, -0.061561, 0, -0.16332, -0.023872, 0.050659, -0.074893, -0.16955, -34366e-7, 0.12213, 59165e-7, 0.14215, -0.041624, 0.056331, -0.12229, -0.19907, 0, 0, 0, 0.030292, 0, -0.077533, 0, -0.18039, 0, 0, 0, 0, 0, 0, 0, 0.018018, -0.090382, 0.17553, 14363e-7, -0.15225, 0, -0.017398, 0, 0.043841, -0.031724, -0.043696, 0.1923, -0.21268, -0.039746, -0.0678, 0.13241, -0.031904, 0.069522, 0.030221, -0.084149, 0.015512, 0.15657, -0.17832, 0, -0.10322, -0.2203, -0.099107, 0.087317, 0.036236, -0.14766, -0.15847, -0.032689, 0.025683, 0, -0.19392, 0, 0.17749, 0, -0.10242, 0, -0.13504, 0.046039, 0.045757, 0.14189, 0.031598, -0.029439, -0.18635, 0.03277, -0.052484, -0.14436, 0.17969, 0, 0.079609, -0.1613, 0.22792, 0.057374, -0.18702, 0, 0, 0, 0, 0, 0, 0, -62027e-7, 0, 0, 0, 0, 0, 0, 0, 0.029274, -0.10804, -0.10166, -0.013495, 0.043026, -0.14524, -68354e-7, 0.15943, -0.065839, 0, 0, 0, 0.04128, 0.21927, 0.028587, 0, -0.16939, 0, 0, 0, 0, 0, 0, 0, -0.034465, 0, 0.020687, 0.11856, -0.12938, 0, 0.015103, 0, -0.13947, 0.042767, 0.098829, -0.047357, -0.14425, -0.041459, -0.12037, 0.015986, 0.097795, -0.072453, -0.083549, 0.079645, -0.18458, 0, -0.010661, 0, -0.18048, 0, 0, 0, 0, 0, 0, 0, -0.012508, 0, 0, 0, 0, 0, 0, 0, -0.13963, 0.015077, -56633e-7, -0.08447, 0.062878, -0.16086, -0.10433, 69148e-7, -0.040194, 0, 0, 0, 0.069782, 0.21114, 0.02415, 0, -0.17492, 0, 0, 0, 0, 0, 0, 0, -0.011535, 0, 0, 0, 0, 0, 0, 0, -0.18509, -0.02891, 0.026986, -0.12263, 0.06225, -56188e-7, -0.14204, 0.039703, -0.046537, 0.029692, -0.17472, 0.070816, -0.17798, -0.059514, -82378e-7, 0.10293, 0.13536, -0.020498, -0.038635, 0, 10336e-7, 0, -0.13372, 0, -47907e-7, 0, 0, 0, -0.17007, 0, 0, 0, 0.010723, -0.17646, 0.070132, -0.10855, -0.046831, 0.083752, 0.069197, -0.030386, -0.027699, 0, 0, 0, 0.059552, 0.18908, 0.026431, 0, -0.17187, 0, 0, 0, -0.033033, 0, 0, 0, -70176e-7, 0, 0, 0, 0, 0, 0, 0, -94916e-7, 0.062978, 0.068851, -0.086152, -0.17573, 0, 0.020377, 0, -0.023508, -0.22803, -0.029807, 0, -0.019627, -0.12365, -12063e-7, 0.17307, 0.04038, -0.079567, -0.12624, 0, -0.1737, 0, 0, 0, -0.11666, 0, 0.027222, 0, 0.020463, 0.14805, -0.032103, 0, -0.17899, 0, -0.090726, 0.01678, -0.12042, 0.02373, -0.02823, 0.13292, 0.012529, -0.10838, -0.013804, -0.15214, 0.022612, 0, 0.17206, 0.036673, -0.16364, -0.04501, -0.030187, 0, -0.078899, 0.041736, 0.089131, 0, -0.033457, -0.14906, 0.093504, 0, -0.065116, 0, 0.13226, 69597e-7, -0.11842, 0.039862, 0.11633, -0.04845, -0.038627, -0.20604, -0.029656, 0.092349, 0.048404, -0.07827, 0.13944, -0.016131, -0.029648, 0.10428, 0.023442, -0.22563, -0.043018, 0, 0, 0, -0.16429, 0, 0, 0, -68783e-7, 0, 0, 0, 0, 0, 0, 0, 0.14964, -0.12357, -0.11181, 0.014126, 0.090086, -0.031282, -89455e-7, 0.31516, 0.06684, 0, -0.090069, 0, -92682e-7, 0, -0.26428, 0, -0.26338, -0.055295, 0.11234, -0.087996, 0.15817, 0.034464, -0.07469, 0, 0.12275, -0.095274, -0.023412, -0.20414, 0.045986, -16579e-7, 0.19152, 60307e-7, -0.052893, 9224e-6, -0.12237, -0.010576, -0.01067, 0.074624, 0.072276, -0.080276, -0.027338, 0, 0, 0, 0.034721, 0, 0.033964, 0.16654, -0.17646, 0, 0, 0, -0.043635, 0, 0, 0, -0.073243, 0, 0, 0, 0.087852, 0, 0, 0, -0.10229, 0.065018, -0.074961, 0.017362, 0.089023, 0, -0.29757, 0.054169, -0.093661, 0.046198, 0.041942, -0.049027, 0.043594, 0, -0.018869, -0.15043, 74506e-8, -0.14663, -0.094872, 0.1193, -0.23405, -0.036313, -58063e-7, 0, 45862e-7, -0.10684, 0.049912, 0, 0.038759, 0, 0.18962, 0, -0.13663, -0.011265, 0.052403, 0, -0.10657, 0.02187, 0.10709, -0.037369, -0.040169, 0.14692, -0.11607, 0.11025, -0.043673, -0.16994, -0.021179, 0.022038, -0.032832, -0.14966, -0.01537, 0, 0.063013, -0.072169, -0.11594, 0.03021, -0.10074, -0.011879, 0.060257, -0.03694, 82852e-7, 0, 0.10109, 0, 87296e-7, -0.032554, 0.061912, -0.14583, 0.16942, -0.035799, -0.10036, 0, -0.25201, 0, 0, 0, -0.06714, 0.070598, -0.21703, -0.020805, -0.15616, 0, 0, 0, 0, 0, 0, 0, -0.067411, 0, 0, 0, 0.077964, 0, 0, 0, 97184e-7, -0.11251, -0.10297, 0.076476, -0.2293, 0, 0.029734, -0.1664, -0.14847, 0, -0.067685, 0.013569, 0.014483, -0.10248, 0.12095, -0.032881, -0.010592, 0, 0, 0, 0, 0, 0, 0, 0.15136, 0, -0.024172, 0.052452, 0.023562, 0, 0, 0, -0.11703, -67568e-7, 0.027969, -0.1303, -0.032499, 0.096898, -0.066292, 23632e-7, 0.016985, 0.20216, -0.045021, 0, -0.094842, 0, -74077e-7, 0, -0.02272, 0, 0, 0, -0.14686, 0, 0, 0, -0.010843, 0, 0, 0, 0, 0, 0, 0, -0.11554, 0.021106, 0.092855, 61127e-7, -0.089733, 0.13877, -0.31614, 0, -0.15266, 0, 0, 0, 95187e-7, 0, 0, 0, -0.036823, -0.12929, 37199e-8, 0, -0.092425, -54843e-7, 0.077607, 0, -0.12118, -6866e-6, 0.079638, 0, 0.11951, 0, -0.063101, 0.042691, 0.013897, -0.029772, -0.055544, -0.16688, -0.024123, -0.16282, 0.083259, -0.16826, -0.11709, 0.14111, -0.04945, 0.12567, -0.22206, 0, 0, 0, 0.075202, 0, 0, 0, -0.19509, 0, -0.01329, 0, 0.066086, -0.056225, 0.14867, -22096e-7, 0.056172, -0.058332, 0.023545, -0.21655, -0.11662, 0.027989, 0.07086, 0, 0.062976, 0, 0, 0, -39226e-7, 0.045231, -0.10971, 0.028016, 0.099821, -0.11154, 0.10035, -80902e-7, 0.083733, -0.057717, -0.037373, 0.1103, 0.18821, -0.13347, -0.14145, 0.038517, -0.20667, 0, -0.012954, 0, -0.097992, -95788e-7, 0.1367, -0.014512, -74928e-7, 0.061214, -0.025965, -0.35652, 0.010248, -0.12233, 0.045179, 0.17395, -0.11337, -0.017159, -0.013082, 0.13763, 0.060315, -0.10206, 47238e-7, 0.096057, 0.027621, 0, 0, 0, -0.022141, 0, 0, 0, 0.029913, 0.1496, 0.017033, 0, 38395e-7, 0, 0, 0, 17018e-7, -0.073631, 0.10472, -0.086849, -0.1612, 0.031844, -0.20719, -0.014377, 0.17109, 20696e-7, -0.04497, 0, -29675e-7, 0, -0.087524, 0, 0.03505, 0, 0, 0, -0.071413, 0, 0, 0, -0.1334, 0, 0, 0, 0, 0, 0, 0, 0.023132, -0.040639, 13964e-7, -0.059039, -0.03272, -0.15992, -0.027861, 0.13672, -93064e-7, 0, 0, 0, -0.12892, 0, 0, 0, 0.026098, 0, 0, 0, -0.021587, 0, 0, 0, 0.017142, 0, 0.14725, 0.034147, 79433e-7, 0, 0, 0, -44645e-7, -0.14211, 0.022738, 0.12232, -0.039126, 0.094491, -0.15503, 0.046449, -0.084334, 0.086456, -0.050584, -0.16035, 0.046691, 0, 0, 0, -0.022616, 0.054251, -0.12761, 0.11536, 0.13399, -4685e-6, -0.081236, 0.074367, 0.051594, -0.062453, -0.017763, 0.032867, -0.076098, 0.078335, -0.033117, 0.15269, -68014e-7, 0.10593, 0.018231, -0.20272, 0.070388, -0.038895, 0.10451, -0.096534, -0.058115, 0, 0, 0, 0.039447, 0, 0.23759, 0, 0.013685, -0.20623, 0.050223, -0.10228, 0.16018, 0, -67171e-7, 0, -0.26708, 0, 0, 0, 0, 0, 0, 0, -0.058168, 0.037662, 0.098829, -0.10525, 0.031284, -0.014658, 0.082819, -0.060853, 0.1563, 0.011533, 0.066928, -0.037838, -0.18387, 0, 0, 0, -0.17228, 0, 0, 0, 0, 0, 0, 0, -0.057021, 0.044363, 0.11007, -0.045433, -0.16052, 0, -64906e-7, 0, -0.14251, 0, -0.0246, 0, 0.019769, 0, 0, 0, 0.076812, -0.058827, 42936e-7, 0.20053, 0.034049, -0.1825, -42978e-7, 0.043507, 0.026149, 0, 0, 0, -0.019686, 0, 0, 0, 0.020124, 0, 0.13645, 0.03404, 69094e-7, 0, 0, 0, -0.087854, -57371e-7, 0.054704, -0.023845, 0.11312, -0.040289, -0.096164, -0.015069, -0.03686, -0.12912, -0.11467, 0.023048, -0.076172, 0.10125, -0.15371, 0.087017, 0.064094, -0.067367, 87943e-7, -0.18935, 0.06857, 0, 0, 0, 0.057758, -0.031592, -0.24321, 0.035847, 0.045729, -0.038507, -0.010069, 0.094229, -0.058471, 0.04788, 0.022197, -0.020475, 10191e-7, -0.25404, -0.10108, 0.05941, 0.051012, -0.1533, 0.10741, 0, 0.084339, -0.11393, 0.22737, -0.085373, -0.15318, -0.048603, 0.046747, 0, 0.14736, 0.014507, -0.053352, 0, -0.23277, 0, 0, 0, 0, 0, 0, 0, -0.012598, 0.057208, -0.091349, 0.023022, 0.011586, 0.11199, 0.019182, -0.12706, 0.026242, 0, -0.01728, 0, 0.1092, 0, 14761e-7, 0, -0.1458, 0, 0, 0, -0.024548, 0, 0, 0, 0.033619, 0, 0, 0, 0, 0, 0, 0, 0.060769, 0, -0.04168, 0, -0.1155, 0, 0, 0, -0.05635, 0.12375, -0.12039, 0.055108, 0.15638, -0.095208, 0.044876, 0.22391, 0.027898, 0, 0, 0, -0.18537, 0, -0.011476, 0, 10771e-7, -0.085038, -0.13102, 0.061915, 0.010993, -0.038246, 0.060992, -0.039904, 88277e-8, 0.11099, -0.17348, 0.049152, 0.034217, -0.17378, 0.04784, 0.16406, -0.092672, -0.023253, -0.016019, 0.03554, 0.055159, -0.054804, 0.045669, -0.051226, 0.086273, -0.054624, -0.092911, 0, -0.022157, 0, -0.17564, 0, -0.092692, 0, -1804e-6, 0, 0.14682, 0, 1217e-6, 0, 43195e-7, -0.060954, 0.10289, -0.04488, -0.1172, 0, 0, 0, -0.064135, 0, -0.027066, 0.11426, -0.13309, -0.011765, 0.053923, 0, -0.13617, 0, 0, 0, -95846e-7, 0, 0, 0, 0.037966, 0, 0, 0, 0, 0, 0, 0, -0.072782, 19586e-8, 0.065306, -0.08246, 0.10742, -0.082033, 0.025722, -0.13675, -0.044876, 0.081243, -0.020144, -0.17855, -0.020185, 0.024922, -0.015335, 0.082642, -0.024638, 0, 0, 0, -0.19208, 0, 0, 0, 0.053235, -0.069716, 0.13402, 0.036234, 0.011639, 0, -0.087599, 0, 25781e-7, 0.098686, -0.065432, 0.12438, -0.19541, 0.04425, 0.086504, -0.074234, -0.13462, 0.078694, 0.11702, -0.073058, 0.09056, -15529e-7, -0.14822, 0.054961, 0.014229, 0, 0.11745, 0, -0.04893, 0, 0, 0, -0.11138, 0, 0.037646, 0, -0.23011, 0, 0, 0, -0.027023, -0.16706, 0.022953, 0, -0.027132, 66989e-7, 0.091168, -0.078126, -0.091205, 0.014818, -37882e-8, 0.081839, 0.027402, 0, -0.032799, -0.18298, -0.010016, 0, 0, 0, 0, 0, 0, 0, 0.019663, 0, 0.1121, 0, -0.038791, 0, 0.086966, -0.012656, 0.051028, -0.086572, -0.03736, 0.13078, 0.21254, 0.010417, -0.034823, 0, 0.014084, 0, -0.16808, 0, -0.080822, 0, 0.14593, 0, -0.028996, 0, 0.063285, 0, -0.17771, 0, -0.01122, 0, -83381e-7, -0.11569, 0.017525, -0.10765, -0.02245, 0.016724, 0.094137, -0.1391, 0.068641, -0.062311, 0.021696, -0.16206, -0.017319, 0.11769, -0.1252, 0.075449, -0.031026, -0.16999, 89412e-7, 0, 44891e-7, -0.067516, 0.095815, 0, 0.040837, -0.041221, -0.10237, 0.032695, -0.10809, -0.01304, -0.082945, 0.16586, 0.014353, 0.12178, -0.033391, 0.038092, -0.13034, 0.016893, 0.072037, -0.036279, 70478e-7, 0.11629, -0.11277, -33893e-9, 0.13587, 98328e-7, -0.11287, 0.043838, -0.060847, 0, 87352e-7, 0.10047, -0.098051, 0.040839, -0.21272, 0, 0.037511, -0.045712, 0.123, 0, 0.084366, -0.031473, -0.13666, 0, -0.12655, 0, 0, 0, 0, 0, 0, 0, -0.064211, 0.011691, -0.014972, -0.14635, 0.010109, -0.059672, 62041e-7, 0.10672, -0.023883, 0, -0.12907, 0, 0.019307, 0, 0, 0, -0.1207, -0.015463, 0.06351, -0.042867, -0.073681, 0.048049, -0.024599, 0.092666, -0.12755, 0, 0.034755, -0.069839, 0.095509, 0, -0.081056, 0, -0.12933, -87413e-7, 0.012868, 0, -0.024262, 0.08939, -0.050111, 0, 87469e-7, -0.026991, -0.035638, 0.1048, -0.041749, 81463e-7, 0.12802, -92768e-7, -82695e-7, 0, 0, 0, 0, 0, 0, 0, 0.10892, 0.013922, -41265e-7, 0, 83668e-7, 0, 0, 0, 0.058892, -0.076451, 0.024721, -0.027744, -0.077197, 0.014084, -0.01787, 0.079272, -0.043127, 0.023074, -66287e-8, 0.14055, -0.038597, 0.13411, -0.098707, 0.065152, 0.038447, -0.10175, -0.16632, -28862e-7, -0.093939, 0.03921, 0.10399, 0, -0.01804, 0, -0.12887, 0, -0.075525, 0, 0.030172, 0.18488, -0.038075, 0.14793, -0.092156, 0, -0.16637, 0.046933, -0.021845, 0.12988, 0.026858, 0, 0, 0, 0.14711, 0, 0, 0, -0.020831, 0, 0.065017, 0, -0.16046, 0, -15394e-7, 0, -0.095489, 81358e-7, 0.011474, -0.092039, 0.018318, -0.058772, -0.08752, -18835e-7, -74007e-7, -0.13859, -43991e-7, 0.037264, 0.036919, 0.12395, -25011e-7, -0.14369, -0.12517, -0.010082, -75648e-7, 0, 0.01777, -0.088467, 0.11354, -0.025452, -94347e-7, 0, 0.068502, 0, -0.046559, 0, 0, 0, 51949e-7, 0, 0, 0, 0.10178, 0, 0, 0, -0.028925, 0.043219, 0.067088, -0.086252, -0.054021, 0.010411, -0.014638, 0.026482, -0.090897, 0.04702, 0.15688, 0.036888, 0.015195, 0, -0.11163, 0, -0.077564, 0, 0.083213, -0.029393, -0.031977, 0, -0.15203, 0, -0.010751, 0, -0.082013, 0, -42429e-7, 0, 0.13797, 0, 0.014728, -0.042233, -0.11558, 90845e-7, -7404e-6, -0.083762, 0.016986, 0.17788, 0.033243, -0.050931, 64581e-7, 0.15697, -0.060633, 0, 0, 0, 0.011266, 0, 0, 0, -0.019896, 0, 0, 0, -0.10036, 0, 0, 0, 0, 0, 0, 0, 0.068942, -0.041067, 0.16084, 0.022912, -0.10507, -0.012065, -0.019251, 0.095677, 0.017085, 0, -0.14537, 0, -0.072424, 0, 0.11794, 0, -0.15807, 0, -0.078506, 0.044617, -0.082513, 0, 0.12083, -0.031406, -0.134, 0, -11686e-7, -0.059066, -90457e-7, 0.14323, 77072e-7, -0.035686, -0.11386, 0, 0, 0, 0, 0, 0, 0, 40124e-7, 0, -0.081835, 0, 0.045325, 0, 0, 0, 0.075585, 0.012067, 19576e-7, -0.13391, -0.1318, 51564e-7, -53664e-7, 0.038303, 0.097674, 0, 0.015099, 0, -0.04527, 0, 0.072404, -0.013285, -0.044525, 0.015425, -78979e-7, -0.098209, -0.014333, 0.089267, -0.089966, 0.045773, 0.056658, -0.09631, -0.11973, 0.054319, -0.065433, 0.060883, 0.12166, 0, -0.052713, 0.010772, -0.14409, 0, 0.045448, 0, -0.041279, 0, 0.025348, 0, -0.083471, 0, -0.023398, 0, 0.10275, 0, 0.013612, 0.099287, -0.11102, 0.039706, -0.028685, 0.061428, -0.11575, 0.018439, -0.12604, 0, 0, 0, 0.036272, -0.092052, -0.031352, 0.073103, 0.030486, -0.023667, 0.048044, 0.1294, 0.049608, -0.032326, -0.19871, 0, -0.085979, 4444e-6, 0.020267, -0.094499, -76792e-8, 0.039979, -0.10038, 0.032002, 0.013407, -0.098613, -0.059474, 0.041004, 0.047522, -0.032072, 0.026178, 0.10754, 0.063095, -0.019133, -0.018855, -0.14983, -0.01822, 0.018971, 0.13636, -0.071734, -0.016905, 0, 0, 0, -0.16396, 0, 0, 0, 0.028277, -0.074484, 0.1087, 73969e-8, -0.075709, 0, 40413e-7, 0, 21871e-7, -0.041341, 0.13722, 49287e-7, 0.056671, -0.088958, -0.043014, -0.18153, 0.11727, 0.011742, 0.024388, -0.08622, -0.16515, 0, -0.02264, 0, -0.10466, 0.018774, 0.049966, 0, 0.10992, -21507e-7, -0.036403, 0, -0.14363, 0, 0, 0, 0.010664, 0, 0, 0, -90518e-7, 0.085894, -0.071778, 34003e-7, 0.16997, 0.010998, -0.046348, 0, 0.020108, 0, -0.13171, 0, -0.041374, 0, 0.099651, 0, -0.031808, 0, 0.075817, 0, 38908e-7, -0.05047, -0.15225, 0, -0.01268, 0.040336, -0.10195, 0.028765, -0.039957, 0.098513, 0.054283, -45809e-7, -0.038714, 0.022956, -0.14743, 0.01803, -0.04678, -0.13838, -0.049028, 0.063874, 0.13524, 0.017221, -0.041853, 0, -0.056841, 0, 0, 0, -93136e-7, 0.096437, 0.061252, 53848e-7, 0.062076, -0.082447, -0.13714, 0.042362, -0.097878, 55276e-7, 0.1106, 83847e-7, 0.14319, -0.038194, 0.024497, -0.13626, -26103e-7, -0.11189, 0.016746, 0, 0.044217, -0.090371, -0.09722, -85953e-8, -62085e-7, 0.061046, -0.040654, 0, 27452e-7, 0, 0.10122, 0, -0.11487, 0, 0, 0, 0, 0, 0, 0, -0.037365, 0, 0, 0, 0.084002, 0, 0, 0, 10589e-7, -0.062693, 0.063548, -0.060634, 0.11474, -0.026823, -0.064678, 0, -0.028063, 0.095617, -0.092126, 0, -0.125, 0, 0, 0, -0.036297, -0.14816, 0.083051, -0.062535, -0.022415, 0, 0.080522, 0, -0.015626, 0, -0.11818, 0, -0.065294, 0, 0.024414, 0.16188, -0.061575, 0, -0.024825, 0.10529, -0.078415, 0.035891, -0.13011, 0, -0.090405, 0, 79793e-7, 0, 0.11606, -0.027934, 0.022427, -0.060072, 20204e-7, -0.099397, 0.039744, -0.041974, -0.12733, 0, 0.050794, -0.054425, 46145e-8, 0.11477, -68312e-7, -0.054964, 0.12721, -0.035087, 0.1341, 0.03404, -0.053982, 0.073716, 0.046027, -0.012968, 0.076601, -0.068069, 56639e-7, -0.11096, -0.035559, 0.15378, -0.10047, -67894e-7, -0.061907, 0.093528, -0.22489, -0.01893, -0.027795, 0.01969, 0.026065, -0.1162, 0.013245, 0.10167, -0.10124, 0.063015, -0.10752, 0.034513, 0.10425, 0, 0.20295, 0.042196, -0.036406, 0, 0.053887, -0.035807, 0.13426, 0.015376, -0.097838, 98482e-7, 0.016337, -45954e-7, -0.037521, 0.031785, 0.016996, 0.13314, -0.057412, 0, 0, 0, 76887e-7, 0, 0, 0, -0.01911, 0, 0, 0, -0.087509, 0, 0, 0, 0, 0, 0, 0, -70105e-7, 0.041433, 0.068467, -0.08355, 0.042291, -0.034208, 0.013814, 0.12966, 3964e-6, 0, -0.14479, 78673e-7, 0.089535, -0.032952, -0.1554, 0.042186, 0.060245, 0, 0, 0, 0, 0, 0, 0, -0.012007, 0.11925, -0.084431, 0, 0.016551, 0, -0.12657, -0.013439, -0.011864, 0.060022, 0.010243, -0.04107, -0.08947, 0, 0, 0, -51752e-7, 0.056231, -0.03771, 0, 35339e-7, 0, 0.092671, 0, -0.10671, 0, 0, 0, 0, 0, 0, 0, -0.030051, 0, 0, 0, 0.071736, 0, 0, 0, 31473e-7, -0.072083, 0.012807, 0.14409, 0.10327, -0.06175, -46157e-7, -0.19152, 0.083344, -0.037406, -0.086446, 0, 0.11693, 0, 0.023197, 0, -0.13106, 42629e-7, 0.10111, -0.034088, 0.024672, 0, 0.14411, 0, -0.17742, 0, 0, 0, 0, 0, 0, 0, -36481e-7, 0.097976, -0.059644, 0.010945, -0.17736, 0, 0.052166, -0.030308, 0.037536, -0.048902, 0.12781, -0.018824, 0.038762, -0.10626, -0.033123, 73543e-7, 0.010478, 0.09011, 0.046406, -0.066241, 0.14083, 0.012084, -0.013579, 0, -0.024051, -0.15048, 0.093206, -0.047767, -0.012898, 0.16289, -0.15402, -94362e-7, 24719e-7, 0.062015, -9113e-6, -0.12535, -0.015601, -0.14511, -0.014026, 0.091893, 65389e-7, 0, 0.097959, 0, -0.16773, 0, 0.055743, 0, -36911e-7, -0.12144, 0.082647, -0.079237, -0.031669, 0, 0.093475, 0, 0.012563, 0, -0.12906, 0, 0.038875, 0.17193, 0.041115, -0.097809, -0.049101, 0.017072, -0.037349, 0.050084, 0.026053, -0.032238, -0.011195, 0.069669, -0.066892, 0.017119, 0.11833, -0.043509, -0.070306, 0.020291, -0.11598, -0.014225, -0.1057, 0, 0, 0, -85173e-7, 0, 0, 0, 0.044826, 0, 0, 0, 0, 0, 0, 0, 0.051261, -0.05756, 0.12748, 0.020223, -0.091474, -0.011746, -0.021651, 0.083333, -0.092935, 0, 0, 0, 0.065673, 0, -0.032527, 0, 0.026538, 0, 0, 0, -0.12219, 0, 0, 0, -0.096123, 0.016753, 49884e-7, -0.090856, 32493e-7, 0.039051, -0.016152, 0.11115, -16681e-7, 0.070326, -0.011068, 0.11573, -0.12686, 0, 0.071647, -0.048114, 0.057974, -0.053051, -0.18256, -40285e-7, -78319e-7, 0.11933, 0.16779, 0.032566, 0.10845, 0, -69227e-7, 0, -0.034497, 0.06832, -0.073056, 0.010276, -0.057565, 0, 0.011249, 0.068987, -0.15754, -0.02366, -78687e-7, 0, -0.027928, 0.03746, -0.011046, -0.14144, 6063e-6, 0.072532, 0.015347, -0.1454, 69539e-7, -0.085862, 0.11657, -0.026427, -0.047607, 0.098571, 0.06469, -0.095536, 0.066227, -19412e-7, -0.026025, 0.11285, -0.07439, 0.063187, 0.13503, 49338e-8, -0.050154, 0, 0.024529, 0.1139, -0.2184, -0.034988, 0.054296, -0.10769, 0.023021, -0.07461, 95677e-7, -0.076644, -0.013989, -0.10659, 0.083938, 0, -47879e-7, 0.097004, 0.01414, -0.092279, 0.010343, 0.15939, -0.025294, 0, -0.039047, 0.027899, -0.041516, 0.12828, -0.022115, 0.09901, 0.031891, -0.093052, 0.045363, -0.088255, 0.097469, -0.016273, 0.10201, -0.066943, -0.075958, 0.040701, -0.037877, 0.046858, -0.017457, -0.12222, -16047e-7, 0.033737, 368e-5, -0.1146, 0.074924, -0.075918, 0.022368, 0.14439, -0.080919, 0, 0, 0, -0.22023, -0.03294, -0.06084, 0.078199, -0.10181, 0.032295, 0.038213, -0.043524, -57997e-7, 0, 0, 0, 0.028167, 0, 0.16664, 0, -0.12004, -0.013787, 97243e-7, 0, -0.014114, 72876e-7, 0.064214, -0.061129, -0.067284, 0.075401, 0.063467, -0.028729, 0.042858, -0.04769, -0.11297, 0, -0.012945, 0, 0.031571, 0, 0.098479, 0, 0, 0, -0.04451, 0, 0, 0, 0.037625, 0, 0, 0, -0.078096, 0.042662, 0.075535, 0, 0.090581, -0.023385, -0.038111, 0, 0.11877, 0, 0, 0, 0.019453, 0, 0, 0, 0.02405, 0, 0, 0, -0.11454, 0, 0, 0, -0.030574, 12378e-7, -0.043249, 0.061374, 0.074681, -0.017251, 97641e-7, -0.11251, 0.026877, -0.037737, -0.046798, -0.16678, -0.036045, 0.030047, 96194e-7, 0.064719, 0.029535, -0.08166, -0.096311, 0.056961, -6353e-6, 0, 0.13762, 0, -50443e-7, 0.08431, 0.017116, 0.14029, 0.098149, -0.014986, 53427e-8, -0.1474, -0.12936, 0, 0, 0, 0.10073, -0.026024, -0.075384, 0, -0.036497, 0.032456, -0.097204, 0, 0.036425, -0.070906, -0.072285, -61076e-8, -0.083872, 0, 0, 0, 0, 0, 0, 0, 0.033468, 0, -0.054226, 0, 0.066526, 0, -56047e-7, 0, 0.081728, 0, 0, 0, 0, 0, 0, 0, 0.028036, -0.037901, -0.025244, 0.051391, 0.012023, 0.14221, -0.053562, 0, 0.10853, 0.011708, -0.067275, 0.05247, 0.14765, 0.016044, 24642e-7, 0, -0.032356, 0, 0.072403, 0, -0.022052, -0.15057, 0.035241, 0, 81425e-7, 0.079268, -0.11247, 0.015622, -0.03752, 39485e-7, 0.11405, -0.07088, 0.019227, 0, -0.090312, 74272e-7, 0.019095, -90648e-8, -0.071071, 0, -0.080112, 0, 0, 0, 0, 0, 0, 0, -0.01033, 0, 0.03032, 0, 0.0927, 0, 0, 0, 0.056884, 0, -0.011741, 0, -0.044238, 0, 0, 0, -49167e-7, -0.084186, 0.080052, -0.022887, 0.1074, -0.011541, -0.071179, 0.041683, 0.023634, 0, -0.12001, 0, -0.03292, 0, 0.073188, 0, 0.035599, 0, 0, 0, -0.014502, 0, -0.12891, 0, 0.066688, -0.027753, -0.046211, 14763e-7, 3725e-6, -0.087824, -0.040941, 0.065301, -0.11843, 0.020655, 94887e-7, -0.015808, 0.099428, 0, -0.05038, 0, -0.046476, -0.20753, -0.067054, 0.061949, -0.076371, 0, 0.10658, -0.045319, -0.023216, 0.040463, -0.05455, 0.075967, 0.13074, -0.021735, 0.1087, -0.028063, -0.037057, 0, 0.020722, 0.10414, -0.026148, -0.18981, -0.11805, 0.044611, 0.013586, -0.04135, -0.18336, -0.030885, 0.028057, -0.041197, -0.11473, 8579e-6, 0.10433, 0, 0, 0, 0, 0, 0, 0, -0.078048, 0.015275, 0.058664, -0.050641, -0.076761, 0.011452, -0.048617, 0.05105, 0.12659, 58411e-7, -0.033245, 0.032304, -0.046681, 0, 0, 0, 90518e-7, -0.057968, 0.084365, -0.032485, 0.073015, -0.083745, -0.059293, 0.0344, 0.024544, -0.13336, 0.026336, -0.088487, -0.063366, 0, 37683e-7, 0.13725, 0.063915, -11878e-7, -0.1234, 0.092455, 0.097509, -0.024547, -0.14816, 0.025725, 82909e-8, 0.12393, 0.012222, -0.13709, 0.02356, 0, 0.15106, 0, 80078e-8, -0.08415, -51807e-7, 0.022182, -0.016149, -0.08785, -0.013216, 0.097938, -0.039217, -0.16418, 14686e-7, 0, 84703e-7, 0, 0.067341, 0, -0.097223, 0.042336, 0.075396, -0.016452, 0.068711, -0.075266, 0.014318, 0.15257, 0.078445, -0.036142, -0.046485, 0.075777, -0.13983, 0.016621, 0.030359, 0, -13904e-7, 0.062646, -0.11038, 0.025236, 0.037315, -0.044186, 0.067745, -0.019436, -75564e-7, -0.069348, -0.017988, 0.13503, -0.064786, 0.062311, 0.032619, -0.093655, -0.066577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60694e-7, 0.08374, -0.030204, 0.02166, -0.069387, 0.085511, -0.049972, 0.091911, -0.054857, -0.21127, 0.065635, -0.077686, -0.058378, 0.028323, -0.011569, -0.14229, -0.15949, -0.022667, -0.034547, 0.066567, -0.093185, -0.017722, 0.03802, -0.044432, -0.059983, 0, 0.059735, 0, 0.15142, 0, 0.024378, 0, 0.029274, -0.028514, -0.087855, 0, -0.060101, -99398e-8, 0.031324, -0.061277, -0.073847, 0, 0, 0, 0, 0, 0, 0, 29692e-7, -0.016547, 0.042697, 0, 0.09233, 0, 0, 0, -0.039958, 0, 0, 0, 0.031085, 0, 0, 0, 75879e-7, -0.03649, 0.025366, -70925e-7, -0.10259, 0, 76021e-7, 0, -0.1205, -32473e-7, 0.087623, -0.03726, 0.06484, 0, -43988e-7, 0, 0.014698, 0.092447, -0.14334, 0.073741, -0.11843, -26277e-7, -0.054267, 0.012724, -0.021242, 0, 0, 0, -0.13438, 0, 0, 0, 0.01993, 0, -0.088753, -8987e-6, 42327e-7, -0.012898, 0.029834, -0.13108, 43117e-7, 0, 0, 0, -0.073312, 0, 0, 0, -0.027995, 0, 0.076603, 0.010733, -0.037047, 0, 0, 0, 0.071709, 0, 0, 0, 0, 0, 0, 0, 55723e-7, -0.032517, -0.07081, 54897e-7, -0.060529, 0.060508, -0.02562, -0.15117, -0.09165, 0, 0, 0, -15626e-7, 0, 0.03115, 0.13288, -0.049509, 0.067512, 88059e-7, -0.14817, 0.11426, 0.020746, -69245e-7, 0, 0.016984, -0.2156, -0.095263, 0.07485, -0.12414, 0.046094, 0.10663, -0.01294, 0.046531, -0.021249, -0.038091, 0.075778, -19268e-7, -0.062984, 0.074832, -0.016121, -0.031363, 0, -0.018621, 0.061026, 0.070515, 0, 0, 0, -0.094531, 0, 0, 0, -0.01164, 0, 0, 0, 0.045352, 0, 0, 0, 0, 0, 0, 0, 22532e-8, -0.054367, -96745e-7, 0.071514, 0.016327, -0.10466, 0.079813, 0, 0.0419, 0, -0.11622, 0, -0.029137, 0.064427, -11356e-7, 0.12526, -0.022636, 0.055335, 41816e-7, -0.089303, -0.16328, 0, 0.037796, 0, -92388e-7, 0.10268, 0.059209, -0.16494, 0.12371, 0, 0, 0, -42472e-8, 0.088959, -0.01807, 0.091526, 0.025205, -0.067488, 0.088899, -0.019906, -0.080428, 0, 0.073976, -0.064864, -0.010102, 0, -0.12425, 0, 0.053192, 0, -72896e-7, 0, -0.073692, 0, 0, 0, 0.095601, 0, 0, 0, 52792e-7, 0, 0, 0, -37165e-7, 0.024189, -0.013629, -0.13166, 0.064315, -0.013175, -0.027892, 0.080533, -0.043592, 0.10371, -0.090396, 0.012085, -0.059576, 17789e-7, -0.012954, 0.11632, -0.020293, 0, -0.096478, 0, -22258e-7, 0, 0, 0, 0.087081, 0, 0, 0, 0.012164, -0.084984, 0.029828, 0, 12298e-7, -0.094334, 0.067368, -0.037647, 0.028061, 0.13586, 83007e-7, 0, -53086e-7, -0.049861, -0.014786, 0.034914, -0.016577, 0.11328, -0.074623, 0.057475, -0.060874, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.072421, -0.067789, -0.14034, 0.048996, 0.095073, 0, -20842e-7, 0, 0.10831, 0, 0, 0, 0.015003, 0, 0, 0, -0.13018, 0, 0.070154, -0.051793, -0.07156, 0.068217, 0.093561, -0.022408, -0.015392, 0.071292, 0.13787, -0.048402, -22329e-7, -0.054159, 0.098085, -0.048759, -0.088504, 0, 0, 0, 0, 0, 0, 0, 0.046487, 0, 0, 0, -0.04283, 0, 0, 0, 0.049892, -0.048272, -0.084313, 0.021002, -0.12778, -0.018955, 0.024201, 0, 0.016427, -0.049224, 0.04356, -0.082732, 51401e-7, -0.029967, 0.041281, -0.02351, -66707e-7, 0.039986, -0.11837, 78793e-7, -0.10802, 0.054786, -0.032356, 0.097517, -25863e-7, 0, -0.15986, -0.014649, -0.020449, 0.071434, 0.029209, -0.12488, -0.034113, 0.014438, -0.13194, -57964e-7, 0.12533, -0.024238, -0.069328, 0, 0.13724, -0.032544, 0.051254, -0.10671, 8457e-6, -0.15378, 0.020007, 0, -94621e-7, 0.069534, -0.011562, 0.039164, -0.017162, 0, 0.098197, 0.014499, 0.032261, -0.051474, 0.11024, -17162e-7, 0.060177, -0.074861, -0.15746, 0, -0.015913, 0, 0, 0, 44952e-7, 0, 0.13828, 0, -0.081701, 0.032823, -0.03152, 0.089107, 0.015357, 0.12929, 37121e-7, 0, 48569e-7, -0.035331, 0.081198, -0.023418, -0.046096, 0.011596, 0.10078, -62143e-7, -0.01174, -0.16655, 0.016809, 0, 0.031727, 0, 0, 0, -0.088292, 0, 0, 0, 0, 0, 0, 0, 34244e-7, 0.046799, 0.017108, -0.16899, -146e-5, -0.11294, -86982e-8, 0.083014, 1379e-6, -0.014092, -0.074625, 0.092358, -0.1252, 0.026724, 0.14448, -12114e-7, -0.01348, 0.051631, -0.096134, 0, 0.027196, 0, 0.14104, 0, 0.018466, -0.07275, 0.12551, 0.038002, -0.074364, 0.06714, -0.12508, 0.021394, -0.013158, -0.2091, -0.090769, 0.063508, 0.043259, -0.11867, 0.10997, 0, -0.061354, 0.054383, 87675e-7, -0.025932, 0.069052, -0.047497, 0.09614, -0.04538, -0.037436, 0.054846, -0.16423, -0.011058, -67032e-7, 0.083432, 0.023966, 0.13873, 0.079415, 0, -0.011765, 0, -0.02855, 0.062349, -0.066807, 67372e-7, -0.028091, -0.14046, 1795e-6, 0, -0.040078, 0, 0.075265, 0, -22216e-8, 0.025852, -0.083628, 47734e-7, -29351e-7, -0.10202, 0.091706, -0.054675, 49582e-8, 0.043259, -0.035803, 0, 0.077701, 0, 56232e-7, 0, -0.082122, 0, 0, 0, 0, 0, 0, 0, 0.040111, 0, 0, 0, 0, 0, 0, 0, -4736e-7, 0.036989, -0.07113, 0.019354, -21085e-8, 0.084813, -0.028817, 0, 0.016399, -0.090104, 0.04557, 0, -0.075399, 0.061857, -0.02894, 0.090185, -0.019948, 0.06452, -0.053624, 0, -0.01932, 0, -0.10565, 0, -0.046083, 0, 0, 0, 56372e-7, 0, 0.095632, 0, 0.072401, -0.056473, -0.095322, 0, -54519e-7, 0.10486, -0.059186, 0.05208, -0.090862, 0, 0, 0, -0.059152, 0, 40407e-7, 0.075818, 0.023541, 0, 0, 0, -0.012171, 0, -0.109, 0, -82365e-7, 0.010551, 0.023798, -0.14501, -0.013234, 0.03534, -0.1121, 0.010917, -0.017687, 0, 0, 0, 0.051828, 0, 0, 0, -0.096246, 0, 0.021185, -0.061406, 0.042289, 0, -0.030129, 0, -0.073371, 0, 0, 0, 0, 0, 0, 0, -0.030231, 0.041888, -0.099148, 0.016334, -84693e-8, -0.031174, -0.029597, 0.042749, 0.057697, -0.038531, -0.045459, 0.084836, 0.01991, -0.089102, 0.098096, -0.068546, -0.024574, 34075e-7, 56476e-7, -0.1519, 0.099905, -0.028271, 0.027696, -0.07069, 0.023926, -0.089018, 0.052613, 0, -0.11073, 0, -17871e-7, 0, 0.034805, 0, 0, 0, 0, 0, 0, 0, -17624e-7, 0.054975, -0.073771, 0.053292, -0.04409, 0.032918, -0.10589, 0, -0.040952, 0.040368, -0.1467, -0.011103, 0.036183, -0.068113, 0.13565, 0.024473, -0.011316, 0.0615, -0.016938, 0, -0.05374, 0, 0.016534, 0, -0.058042, 0.028406, -0.11065, 0, -0.039548, 0, 0.067803, 0, -40078e-7, 0.053614, -0.10499, 0.037209, -0.070159, 0.063901, -0.044992, 0.082937, 0.035033, -0.024661, 0.093549, -0.018313, -0.027553, 0, 0.15641, 0, -0.068142, -8006e-6, 0.046173, -0.087695, 0.084142, -0.029607, -0.072893, 0.029938, 0.097495, 0, 0, 0, -89587e-7, 0, 0, 0, -0.062636, 0.049858, 0.033583, -0.011686, -0.011819, -0.077281, 0.11728, -0.04263, 0.094023, -0.064688, 0.018571, -0.054869, 0.054816, -0.025101, -0.077111, 0.12447, -0.080208, 0.032175, 0.10619, -0.026948, 0.044988, -0.043586, 0.035888, -0.15549, 0.10289, -0.081816, -0.062961, 0.017548, 0.12173, 79593e-7, 0.048087, -0.052038, -48578e-7, 0.07936, -0.028667, 0, -0.084679, 0, -0.055043, 0.056624, -0.058637, 0, 0, 0, 0, 0, 0, 0, 0.017949, 0, 0, 0, -0.010623, 0, -0.10089, 0, -0.024741, 0.09267, -0.037683, 0, 0.017495, -0.08733, -17206e-7, 0.030103, -0.020631, 0.037982, -0.07277, 0.017193, -0.071013, 0.049577, 0.055074, -0.051208, 0.068817, -0.091669, 64682e-7, 0.090505, 0.13803, 0.02049, -53464e-8, 0, -0.059998, 0.066297, -0.018851, -0.11675, 0.096206, -34643e-7, -0.071539, 0.025012, -0.024888, 0.064844, 0.15481, 0.012736, 42901e-7, -0.037584, -0.060621, 0.019117, 24629e-7, -0.030689, -0.091479, -68942e-7, -0.01967, 0.041313, 0.016918, 0.097876, -0.065399, 0.014023, 0.069674, -0.015819, -25726e-7, -0.13065, 0.051227, -0.069298, -0.07594, 0, 0, 0, 0, 0, 0, 0, 0.033386, 0, 0, 0, 0, 0, 0, 0, 0.046566, -0.043066, 0.018075, -0.11143, 0.033705, -0.072396, -0.028093, -0.14962, 0.070676, -0.029298, 0.041516, -0.086733, 0.059211, -0.063577, -0.011734, 0.097562, -0.019105, 0.027536, -0.036594, 0.029791, -0.020464, -0.17061, 0.012298, -0.045872, 0.032919, -0.10686, -0.016498, 0.10019, -0.059879, 84058e-7, 0.077123, 0, 0.050061, -1209e-6, -0.098278, 0.01663, 0.010824, -0.093375, -1494e-6, 0.037135, 72528e-7, -0.062714, 0.078, 0, 0.03689, 0, -0.028829, -0.11571, -0.011079, 0, 0.029034, 0, 0.083556, 0, 0, 0, 0.022749, 0, 0, 0, -0.044617, 0, 0, 0, -37082e-7, 0.098453, -0.067431, 0.01461, 0.10397, 0, -0.017818, 0, 0.029814, -0.10073, -0.041792, 0.075505, -0.047232, 0.033078, -0.042624, 41926e-7, -0.067843, 0, 0, 0, 0, 0, 0, 0, 82708e-8, 0, 0, 0, 0, 0, 0, 0, -15657e-7, 0.017263, -0.028349, 23201e-7, 79103e-7, -0.10576, -0.03311, 0.14053, -0.072866, 0, 0, 0, 42304e-7, 0, 0.02036, 0.11578, 0.017952, -0.063042, 0.018363, 0.096834, -0.050257, 0.073149, -0.11434, 0.021654, 0.025309, -0.14751, -0.068238, 0.0644, 0.052156, -0.074221, 0.10291, 0, -0.020212, 0.035862, -0.089531, 0.014962, -0.083256, 0.010995, -0.013033, 17731e-7, 0.080368, -0.03904, -0.080374, 0, -0.080963, 0, 0, 0, -8666e-6, 0, 0.027735, 0, 0.079129, 0, 0, 0, -0.040607, 0, 0, 0, 0.024221, 0, 0, 0, 25431e-7, 0.024761, 0.027613, -0.054994, -0.044259, 0.023344, -0.074647, 0.058446, 0.0401, -0.058356, -0.1152, 0, 0.019262, -0.11489, -0.063693, 0.072207, -0.010403, 0.042492, 0.075728, -0.063659, -0.047093, 0.031363, 0.05706, -0.089045, -0.011916, 0, 0.082811, 0, -0.015375, -0.14935, -0.092823, 0.038853]
|
|
4079
|
+
};
|
|
4080
|
+
var BLOCK_STACK_MODEL = {
|
|
4081
|
+
kind: "trees",
|
|
4082
|
+
depth: 5,
|
|
4083
|
+
base: -0.422449,
|
|
4084
|
+
features: [57, 57, 57, 60, 61, 62, 57, 48, 65, 64, 3, 51, 6, 50, -1, -1, 31, 6, 54, 51, 48, 59, 63, 52, 62, 40, 61, 40, -1, -1, -1, 57, 57, 57, 62, 62, 62, 57, -1, 63, 63, 48, 59, 58, 50, 61, -1, -1, 28, 51, 54, -1, 57, -1, 52, 54, 48, 50, 30, -1, 2, -1, 57, 57, 57, 62, 62, 61, 57, -1, 63, 64, 41, 58, 6, 30, 25, -1, -1, 54, 49, 65, 54, 59, 54, 7, 54, 3, 59, 52, 51, 60, 49, 60, 57, 57, 61, 58, 62, 57, -1, 28, 54, 63, 41, 2, 50, 40, -1, -1, 63, 32, 63, 24, 50, -1, 30, 40, 30, 52, 52, -1, 60, 48, 57, 57, 57, 62, 64, 62, 57, -1, 63, 62, 48, 59, 6, 30, 53, -1, -1, 54, 49, 65, 54, -1, -1, 7, 30, 3, 63, 62, 45, 40, 61, 61, 57, 57, 62, 64, 57, 57, -1, 63, 59, 60, 3, 58, 50, 40, -1, -1, 28, 49, 63, 52, -1, -1, 58, 63, 30, 15, 60, -1, 61, 48, 61, 61, 57, 62, 51, 57, 25, -1, 32, 62, 65, 3, 43, 57, 51, -1, -1, 60, 60, 52, 53, 64, 53, 8, 63, 32, 63, 65, 40, -1, 1, 57, 61, 57, -1, 56, 62, 57, -1, -1, 59, 54, 54, 59, 65, 40, -1, -1, -1, -1, 65, 65, 51, 47, 52, 47, 45, 8, 31, 62, 62, 48, 60, 62, 57, -1, 54, 57, 57, -1, -1, 65, 63, 51, 7, 25, 40, -1, -1, -1, -1, 65, 31, 59, 32, 62, 65, 63, 65, 40, 46, 61, 48, 60, 62, 57, -1, 54, 60, 31, -1, -1, 65, 51, 63, 15, 39, 53, -1, -1, -1, -1, 65, 56, 28, 48, 41, 49, 30, 43, 65, 50, 65, 61, 57, 62, 57, -1, 32, 58, 57, -1, -1, 60, 64, 54, 8, 31, 40, -1, -1, -1, -1, 62, 63, 40, -1, 56, 54, 58, 54, 43, 53, 61, 50, 57, 62, 57, -1, 32, 59, 57, -1, -1, 60, 64, 54, 6, 65, 40, -1, -1, -1, -1, 42, 63, 61, -1, 63, 59, 25, 63, 53, 62, 61, 50, 57, 62, 57, -1, 32, 58, 31, -1, -1, 60, 64, 30, 8, 40, 53, -1, -1, -1, -1, 63, 45, 61, -1, 38, 40, 56, 65, 48, 23, 65, 61, 62, 62, 57, -1, 40, 57, 40, -1, -1, 51, 40, 59, 63, 61, 42, -1, -1, -1, -1, 58, -1, 28, 59, 40, 61, 62, 30, 54, 41, 53, 62, 61, 7, 57, -1, 54, 56, 40, -1, -1, -1, 64, 65, 15, 61, 42, -1, -1, -1, -1, -1, -1, -1, -1, 65, 54, 58, 45, 12, 41, 53, 62, 62, 62, 57, -1, 40, 45, 40, -1, -1, 51, 56, 61, 11, 61, 31, -1, -1, -1, -1, 41, -1, 65, 40, 52, 15, 1, -1, 54, 41, 63, 53, 61, 60, 57, -1, 54, 63, 40, -1, -1, 7, 59, 59, 32, 2, 50, -1, -1, -1, -1, -1, -1, 51, 49, 65, 52, 6, 58, 54, 65, 41, 41, 62, 62, 62, -1, 48, 63, 2, -1, -1, -1, -1, 65, 2, 25, 7, -1, -1, -1, -1, -1, -1, -1, -1, 12, 63, 44, 48, 40, 49, 62, -1, 60, 59, 57, -1, -1, 59, 40, -1, -1, -1, -1, 40, 45, 57, 48, -1, -1, -1, -1, -1, -1, -1, -1, 65, 28, 12, 11, 54, 41, -1, 54, 60, 59, 63, -1, -1, 61, 2, -1, -1, -1, -1, 65, 65, 30, 60, -1, -1, -1, -1, -1, -1, -1, -1, 32, 64, 31, 40, 44, 51, 56, 6, 60, 59, 59, -1, -1, 12, 53, -1, -1, -1, -1, 63, 41, -1, 31, -1, -1, -1, -1, -1, -1, -1, -1, 40, 50, -1, 41, -1, -1, 60, 2, 62, 24, 63, 57, -1, 33, 2, -1, 64, -1, -1, 25, -1, 30, 61, -1, -1, -1, -1, -1, -1, -1, -1, 49, 31, -1, -1, 44, 51, 62, 6, 60, 59, 57, -1, -1, 40, 40, -1, -1, -1, -1, 65, 54, 41, 24, -1, -1, -1, -1, -1, -1, -1, -1, 65, 54, 53, 51, 42, -1, 41, -1, 62, 59, 63, -1, 40, 65, 2, -1, -1, -1, -1, 51, 40, 30, 65, -1, -1, -1, -1, -1, -1, -1, -1, 32, 63, 31, 49, 44, 51, 56, -1, 60, 59, 58, -1, -1, 12, 54, -1, -1, -1, -1, 33, 41, 25, 40, -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, -1, 41, 6, -1, 27, 61, 60, 65, 45, -1, -1, 58, 1, -1, -1, -1, -1, 24, 31, 13, 30, -1, -1, -1, -1, -1, -1, -1, -1, 54, 65, 52, 52, 3, -1, 42, -1, 57, -1, 63, -1, -1, 7, 25, -1, -1, -1, -1, 50, 48, 65, 56, -1, -1, -1, -1, -1, -1, -1, -1, 65, 52, 59, 40, 32, 59, 9, 65, 62, 59, 65, 7, 38, 47, 65, 8, -1, 45, 41, 50, 24, 65, 6, -1, -1, -1, -1, 51, 31, -1, -1, 63, 59, 40, -1, 42, 40, 40, 42, 57, -1, 12, -1, -1, 33, 58, -1, -1, -1, -1, 52, -1, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 52, 65, -1, -1, -1, -1, 1, -1, 61, 52, 42, -1, -1, 25, 15, -1, -1, -1, -1, 63, 56, 65, 57, -1, -1, -1, -1, -1, -1, -1, -1, 26, 6, 50, 48, 10, 65, 47, 50, 59, 32, 40, 40, -1, 63, 31, 65, 49, -1, -1, 31, 15, 1, 65, -1, 48, 50, 31, -1, -1, -1, -1, 8, 52, -1, 50, 54, 65, 38, 52, 57, -1, 7, -1, -1, 2, 48, -1, -1, -1, -1, 63, 40, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, 65, 41, 13, 65, -1, -1, 65, 40, 59, 32, 12, 40, 64, 33, 41, 41, 49, -1, -1, 52, -1, 41, -1, -1, 42, 40, 31, -1, -1, -1, -1, 52, 52, -1, -1, -1, 61, -1, -1, 57, -1, 65, -1, -1, 65, 6, -1, -1, -1, -1, 65, 40, 54, 42, -1, -1, -1, -1, -1, -1, -1, -1, 25, 27, 54, 52, -1, -1, -1, 61, 59, 32, 12, 63, 52, 42, 51, 65, 50, -1, -1, 40, 50, 65, 43, 64, 47, 1, 40, -1, -1, -1, -1, 62, -1, 65, 48, -1, -1, -1, -1, 21, 48, 39, 15, 50, 65, -1, 48, 4, 52, 2, -1, -1, -1, -1, 52, 50, 7, 65, 56, 41, 51, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, 40, 8, 31, 59, 31, 49, 42, 41, 64, 31, 26, 50, 39, -1, 6, 41, 1, -1, 62, 32, 62, 64, 1, 40, -1, 54, -1, -1, -1, -1, 63, 7, 25, 65, 65, 65, 56, 11, 65, 65, 51, 52, 49, 40, 6, 49, 52, 24, 31, 56, 60, 60, 65, 61, 55, 31, 58, -1, -1, 42, 52, 33, 42, -1, 65, 62, -1, -1, 31, 9, 58, 40, -1, -1, -1, -1, 52, 49, 54, 56, 41, 52, 48, 63, -1, -1, -1, -1, -1, -1, -1, -1, 12, 33, 51, 42, -1, 65, 43, 40, 48, -1, -1, -1, -1, -1, -1, 62, -1, 54, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 60, -1, 7, -1, -1, 2, 48, -1, -1, -1, -1, 7, 40, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, 63, 1, 52, 50, -1, -1, 52, 40, 50, 48, 31, 63, 52, 63, 62, 16, 56, 62, 41, -1, 59, 62, 1, 42, 53, -1, 42, -1, -1, -1, 51, -1, -1, -1, -1, 44, 52, 57, 61, 30, 38, 41, 65, 61, 54, 50, 24, 21, 59, 58, -1, 59, -1, 61, 40, 62, 42, 65, -1, 54, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, 12, 33, 51, 52, -1, 65, 48, 52, 65, -1, -1, -1, -1, -1, 60, 40, 40, -1, 50, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, 7, 60, 65, 47, 26, 24, 8, 65, 40, 1, 25, 1, 52, 1, 6, 43, 24, 54, 50, 63, 54, 40, 49, 60, 56, 6, 60, 60, 65, 31, 2, 64, 61, 57, 44, 40, 13, 41, 59, 54, 52, 63, 40, 35, 48, 63, 62, 54, 47, -1, 32, 58, 65, 52, 47, 50, 47, 31, -1, -1, -1, 42, 13, 26, 58, 30, 51, 47, 61, 2, 59, 63, 49, 50, 51, 65, 62, 52, 23, 47, 65, 24, -1, -1, 31, 16, 65, 32, 60, 43, 11, 54, 50, 48, 31, 63, 41, 63, 52, 8, 32, -1, 40, -1, 59, 31, 23, 43, 58, 26, 8, -1, -1, -1, 65, -1, -1, -1, -1, 61, 40, 62, 8, 65, 56, 65, 65, 51, 53, 57, 32, 48, 59, 10, 23, 52, 52, 15, 63, 64, -1, 64, 31, 3, 42, 65, -1, -1, 7, 6, 40, 65, 59, 42, 12, 50, 41, 65, 48, -1, 42, 65, 3, 43, 52, -1, -1, 46, -1, 42, 54, -1, -1, 56, 40, 58, 30, -1, -1, -1, -1, 1, -1, -1, -1, 12, 33, 51, 65, -1, 65, 43, 65, 54, -1, -1, -1, -1, -1, -1, 45, 23, 55, 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 65, 65, 42, 62, 40, 45, 42, 62, 50, 52, -1, -1, -1, 32, -1, 6, 52, 52, 42, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 12, 55, 64, 51, 65, -1, 65, 24, 65, 41, -1, -1, -1, -1, 55, 65, 52, 51, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, 62, 43, 48, 24, 56, 40, 40, 8, -1, 63, -1, 60, 40, -1, 45, 62, -1, 31, -1, -1, -1, -1, -1, -1, 42, 57, 15, 45, -1, -1, 52, 52, 65, 42, 6, -1, 3, 62, 42, 59, 23, -1, -1, 39, -1, 64, 11, 64, 57, 63, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, 7, 2, 56, 47, 60, 65, 9, 49, 52, 1, 7, 54, -1, 45, -1, 64, 54, 54, 51, 47, 51, 45, 45, -1, -1, -1, -1, 40, 65, -1, -1, 59, 65, 40, 30, 24, 2, 65, 38, 57, 31, 40, 31, -1, 40, -1, 48, 61, 51, 59, 47, 31, 54, 59, -1, 41, -1, -1, -1, 62, -1, -1, 60, -1, 65, -1, -1, 23, 21, -1, -1, -1, -1, 31, -1, 57, 65, -1, -1, -1, -1, -1, -1, -1, -1, -1, 60, -1, -1, 49, 42, -1, -1, 40, 43, 52, 1, 43, 65, 65, 10, 51, 65, 54, 40, 54, -1, 1, 54, 40, 31, 2, -1, 61, 24, 24, 1, 6, 65, 39, -1, -1, -1, 58, 65, 65, 65, 55, 59, 52, 51, 65, 61, 55, 42, 60, 51, 61, 58, 65, 31, 48, 31, 50, -1, 49, 63, 63, 31, 51, 62, 52, 51, 31, 60, 52, 65, 52, 65, 30, 62, 31, 63, 15, 51, -1, 61, 48, 9, 62, 8, 1, 62, 41, 40, -1, -1, -1, -1, 60, 65, -1, 26, 41, 62, 41, 42, 45, 50, 62, 53, 15, 48, -1, -1, -1, -1, 47, 54, 43, 15, -1, -1, -1, -1, -1, -1, -1, -1, 63, 65, 61, 60, 56, 40, 40, 61, 59, 52, 54, 40, 51, 25, 61, 2, 65, 40, -1, 63, -1, 65, 24, 54, 40, 63, 63, 51, 48, -1, -1, 40, 40, -1, -1, 40, 26, -1, -1, 65, 65, 49, 55, 55, 50, 40, 65, 61, 53, 2, 24, 11, 40, 52, 51, 31, 15, 31, 39, 8, 63, -1, 61, 32, 40, 59, 7, 63, 39, -1, 63, 40, 8, 31, 62, 31, 44, 42, 41, 48, 24, 26, 50, 50, -1, 2, -1, 44, -1, 16, 50, -1, 63, 1, -1, 41, 57, -1, -1, -1, -1, 65, 57, 6, 6, 63, 43, 47, 41, 40, 65, 58, -1, -1, 61, -1, 62, 62, 6, 3, 42, 50, 46, 30, -1, -1, -1, -1, -1, -1, -1, -1, 12, 33, 30, 57, -1, 52, -1, 47, 23, -1, -1, 65, 43, -1, -1, 65, 65, 63, 30, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 64, 62, 52, 65, 43, 41, 51, 65, 31, 10, 42, 52, 42, 23, 62, 41, 40, 59, 41, 1, 54, 10, 43, 56, 65, 65, 62, 50, -1, -1, -1, 19, 65, -1, 24, 7, -1, -1, -1, -1, 31, 48, -1, -1, -1, -1, -1, -1, -1, -1, 46, 51, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, 12, 33, 30, 37, -1, 52, -1, 57, 65, -1, -1, 65, 43, -1, -1, 65, 52, -1, -1, -1, -1, -1, -1, 45, -1, -1, -1, -1, -1, -1, -1, 64, 64, 24, 42, 47, 53, 60, 9, 29, 54, 41, 52, 65, 39, 47, 13, 59, 65, 62, 57, 65, 63, 31, 65, 11, 31, 65, 65, 41, -1, -1, 6, 1, 40, 45, 46, 40, 65, 65, 48, 60, -1, 43, 54, 1, 52, 65, 40, 54, 54, -1, -1, -1, -1, 54, 45, 49, -1, -1, -1, 51, 50, 45, 25, 11, 49, 6, 46, 65, 60, 30, 63, 48, 51, 52, -1, -1, 40, 31, 40, 65, 7, 1, 50, 7, 59, 65, 7, -1, -1, -1, -1, -1, 43, 43, 2, 50, 1, 7, 44, 63, 26, 10, 62, 1, 42, 7, 65, 51, 53, 41, 6, 63, 63, -1, 59, 65, 42, 60, -1, 45, -1, -1, -1, 60, 59, 49, 65, 61, 59, -1, 65, 60, 61, 54, 57, 52, -1, -1, 52, 27, 24, 48, -1, 24, -1, 42, -1, -1, 52, 51, -1, -1, -1, -1, 57, 60, 52, 59, 7, 31, 24, 24, 24, 45, -1, 65, 54, 42, 52, 27, 65, 54, 56, 6, -1, -1, -1, 41, 50, 41, 46, 30, 48, 41, 52, 63, 57, 63, 52, 51, 1, 7, 50, 63, 40, 52, 43, 3, 51, 40, 51, 47, 52, 1, 54, 53, 54, 31, -1, -1, 30, -1, 54, 61, 1, 9, 60, 61, 49, 57, 52, 40, -1, 6, 1, 63, 49, -1, 59, -1, -1, 51, 45, 42, 41, -1, 47, 65, 41, -1, -1, 57, 52, -1, -1, -1, -1, 12, 1, 41, 11, 1, -1, 42, 54, 65, 54, 26, -1, -1, 41, 45, 65, 30, -1, 60, -1, -1, 3, 3, -1, -1, -1, -1, -1, -1, -1, -1, 21, 57, 63, 41, 63, -1, 40, 40, 62, 31, 50, -1, -1, -1, -1, 52, 52, 65, 54, 52, 62, 52, 62, -1, -1, -1, -1, -1, -1, -1, -1],
|
|
4085
|
+
thresholds: [-0.3571366, -2.305675, 1.822552, 0.04795042, 0.2888775, 0.4777274, 3.050203, 4.919404, 0.05745253, 5.921578, 0, 0.5546955, 0.01923077, 10.24495, 0, 0, 0.3333333, 0.02316602, 4077529e-10, 0.9844254, 1.783998, 0.3029593, 0.02156334, 6.907755, 0.4310797, 0.075, 0.4741301, 0.075, 0, 0, 0, -0.6342732, -2.573136, 1.293191, 0.02469485, 0.2547487, 0.4310797, 3.050203, 0, 0.3849332, 0.9415143, 4.327618, 0.1943059, 0.2829656, 10.24495, 0.6971402, 0, 0, 0, 0.8793104, 4077529e-10, 0, -1.764177, 0, 3.526361, 0.3807987, 3.013335, 10.24495, 0.5, 0, 0, 0, -0.6342732, -2.870405, 1.56783, 0.02469485, 0.168831, 0.4741301, 2.734421, 0, 0.3849332, 6.452049, 0.5471264, 0.2829656, 0.01219512, 0.5, 0, 0, 0, 0, 0.8571429, 0.07333041, 0, 0.1943059, 0.2781682, 0.5, 0.3807987, 1.098612, 0.3029593, 4.836282, 0, 0.6289944, 0, 0.3867758, -2.573136, 2.107917, 0.02734554, 0.1222605, 0.523972, 3.394045, 0, 0, 4077529e-10, 0.6774194, 0.8773364, 0.5827814, 10.24495, 0.525, 0, 0, 0.3849332, 0.1666667, 0.1653979, 0, 6.759255, 0, 0.1666667, 0.3, 0.5, 8.501063, 3.044523, 0, 0.6289944, 4.327618, -0.9371337, -2.870405, 1.56783, 0.02469485, 6.452049, 0.4310797, 3.050203, 0, 0.3849332, 0.1305989, 1.827123, 0.1943059, 0.01219512, 0, 0, 0, 0, 0, 0.8571429, 0.07333041, 4077529e-10, 0, 0, 0.4166667, 0, 1.098612, 0.1004045, 0.7495036, 2.197225, 0.225, 0.6971402, 0.2888775, -2.870405, 2.107917, 0.02469485, 6.452049, 0.4436583, 3.808074, 0, 0.3849332, 0.1943059, 0.1063413, 1.098612, 0.7306943, 10.24495, 0.525, 0, 0, 0.25, 0.8571429, 0.1360049, 7.257003, 0, 0, 0.2829656, 0.01989664, 0.5, 0, 0.9078827, 0, 0.6971402, 4.327618, 0.2888775, 0.06896514, 2.414095, 0.02469485, 0.9844254, 0.708554, 0, 0, 0, 0.319699, 0.288416, 1.098612, 1.94591, 3.808074, 580011e-8, 0, 0, 0.01315065, 0.1063413, 6.349139, 0, 4.060443, 0, 1.386294, 0.01989664, 0.3333333, 0.01412086, 0.7190987, 0.525, 0, 4.61512, -1.764177, 0.02734554, 2.414095, 0, 0, 0.4310797, 3.808074, 0, 0, 0.08752622, 4077529e-10, 0.6849968, 0.3029593, 0.7190987, 0.525, 0, 0, 0, 0, 0.05745253, 0.1132073, 0.2429577, 0.6, 4.276666, 0.38, 2.302585, 0.6931472, 0.1666667, 0.9522486, 0.523972, 4.327618, 0.1063413, 0.02469485, 2.414095, 0, 4077529e-10, 0.1775001, 3.808074, 0, 0, 0.1423904, 0.1653979, 0.9844254, 0.75, 0, 0.525, 0, 0, 0, 0, 0.1132073, 0.25, 0.08752622, 0.25, 0.2547487, 0.5076258, 0.5579418, 0.623239, 0.075, 0, 0.6971402, 4.327618, 0.1063413, 0.02469485, 2.734421, 0, 4077529e-10, 0.5678395, 0.25, 0, 0, 0.1423904, 0.03852465, 0.6774194, 0, 0, 0, 0, 0, 0, 0, 0.1132073, 0, 0, 4.919404, 0.9245283, 0.01906447, 0.5, 2.397895, 0.4225708, 7.470224, 0.7190987, 0.7527024, -2.870405, 0.02469485, 2.734421, 0, 0, 0.2829656, 3.808074, 0, 0, 0.01315065, 4.828314, 4077529e-10, 0.6931472, 0.2, 0.325, 0, 0, 0, 0, 0.1031566, 0.3849332, 0.275, 0, 0, 0.6849968, 0.8268518, 3187076e-9, 2.890372, 0, 0.6971402, 8.007034, -2.870405, 0.01811626, 2.734421, 0, 0, 0.3029593, 3.808074, 0, 0, 0.01315065, 4.94876, 4077529e-10, 0.01219512, 0.8339582, 0.325, 0, 0, 0, 0, 0.2088739, 0.3849332, 0.4741301, 0, 0.1653979, 0.1349982, 0, 0.1004045, 0, 0.9648098, 0.6971402, 8.007034, -2.870405, 0.01811626, 3.050203, 0, 0, 0.8268518, 0.25, 0, 0, 0.01315065, 4.94876, 0.5, 0, 0.225, 0, 0, 0, 0, 0, 0.04531459, 3.258096, 0.4741301, 0, 0, 0.125, 0, 0.3921823, 2.848795, 0, 0.7190987, 0.6971402, 0.06896514, 0.01811626, 3.394045, 0, 0.1, 0.9928667, 0.225, 0, 0, 0.9521739, 0.35, 0.08752622, 0.02319472, 0.6971402, 0.5859071, 0, 0, 0, 0, 0.3843654, 0, 0, 0.05435247, 0.075, 0.7957155, 0.9206775, 0, 0.6849968, 0.8773364, 0, 0.9648098, 0.02734554, 0.4166667, 3.394045, 0, 9922371e-10, 0, 0.225, 0, 0, 0, 2.833213, 0.4225708, 0, 0.6971402, 0.5859071, 0, 0, 0, 0, 0, 0, 0, 0, 0.3583294, 0.898181, 0.6741498, 4.234107, 0, 0.8773364, 0, 0.9648098, 0.05218401, 0.01811626, 3.394045, 0, 0.1, 4.859812, 0.225, 0, 0, 0.9521739, 0, 0.4741301, 0, 0.6971402, 0.25, 0, 0, 0, 0, 0.2485207, 0, 0.4937787, 0.25, 6.466145, 0, 4.007333, 0, 0.5889103, 0.8773364, 0.5579418, 0, 0.02734554, 5903513e-9, 3.808074, 0, 0, 0.08640844, 0.325, 0, 0, 0.1551724, 0.06987459, 0.1090793, 0.25, 0.05882353, 8.007034, 0, 0, 0, 0, 0, 0, 0, 0.8974359, 0.7652995, 9.083983, 0.01591512, 0.4305397, 0.1012539, 0.7190987, 0.3428572, 0.6415094, 0.02469485, 0.01811626, 0.9206775, 0, 2.19474, 0.5579418, 0.4375, 0, 0, 0, 0, 0.7917553, 0.4375, 0, 0.03149606, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4032821e-9, 0.9047619, 3.38491, 0.075, 5307856e-9, 0.9385887, 0, 5903513e-9, 0.3444971, 3.808074, 0, 0, 0.08752622, 0.325, 0, 0, 0, 0, 0.1, 4.859812, 4.271065, 4.327618, 0, 0, 0, 0, 0, 0, 0, 0, 0.1212097, 0, 0, 0, 0.5889103, 0.8773364, 0, 0.4973886, 5903513e-9, 0.3444971, 0.5579418, 0, 0, 0.9021136, 0.4375, 0, 0, 0, 0, 0.135235, 0.7190987, 0.1666667, 0.1718593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.484907, 0.1666667, 0.225, 0.9047619, 0.03852465, 0, 0.03191489, 5903513e-9, 0.3444971, 0.9408998, 0, 0, 0, 0, 0, 0, 0, 0, 0.08640844, 0.01279318, 0, 0.25, 0, 0, 0, 0, 0, 0, 0, 0, 0.2, 4.624973, 0, 0.8143564, 0, 0, 0.9574098, 0.2533333, 0.01811626, 0, 0.5579418, -4.433688, 0, 0.1666667, 0.4375, 0, 2.833213, 0, 0, 0, 0, 0.1666667, 0.1829779, 0, 0, 0, 0, 0, 0, 0, 0, 0.04799343, 0.3333333, 0, 0, 0.9047619, 0.03852465, 0.06896514, 0.03191489, 5903513e-9, 0.3029593, 4.271065, 0, 0, 0.25, 0.325, 0, 0, 0, 0, 0.5972933, 0.6849968, 0.8616044, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5651671, 0.08483563, 0, 0.6842105, 0.7175612, 0, 0.6100386, 0, 0.01811626, 0.06987459, 0.5579418, 0, 0.175, 0.135235, 0.4375, 0, 0, 0, 0, 0.7480315, 0.075, 0.1666667, 0.666607, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.02156334, 0, 0.68, 0.9047619, 0.03852465, 0, 0, 5903513e-9, 0.3029593, 0.8608962, 0, 0, 0, 0.5889103, 0, 0, 0, 0, 0, 0.02836879, 0, 0.325, 0, 0, 0, 0, 0, 0, 0, 0, 0.2, 0, 0, 0.8143564, 0.02702703, 0, 0, 0.975294, 5903513e-9, 0.6503634, 4.859812, 0, 0, 0.1533769, 2.944439, 0, 0, 0, 0, 0, 0.2, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.3368467, 8.091627, 7.553287, 0, 0, 0.5859071, 0, -5.875155, 0, 0.06097378, 0, 0, 0.03149606, 0, 0, 0, 0, 0, 5.686975, 1.098612, 0.288416, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5076258, 7.553287, 0.5073434, 0.2, 0.1666667, 0.3444971, 0, 0.666607, 0.05218401, 0.04025599, 0.07333041, 0.4166667, 0, 0.4, 0.8675887, 0.6931472, 0, 2.564949, 0.6257669, 4.430817, 0, 0.8163886, 0, 0, 0, 0, 0, 0.9698997, 0.3333333, 0, 0, 5965638e-9, 0.2266646, 0.1, 0, 3111111e-9, 0.275, 0.175, 0.03651913, -5.875155, 0, 0, 0, 0, 0, 0.05888302, 0, 0, 0, 0, 9.083983, 0, 0, 0.7987013, 0, 0, 0, 0, 0, 0, 0, 0, 8.501063, 0.238377, 0, 0, 0, 0, 2.564949, 0, 6141095e-9, 3.367296, 0.5077296, 0, 0, 0, 0, 0, 0, 0, 0, 0.6774194, 0, 0.1726634, 0.9928667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01219512, 4.356709, 2.560159, 0, 0.4225708, 0.7846154, 7.017506, 0.06987459, 0.25, 0.075, 0.1, 0, 0.5579418, 0.2, 0.1212097, 0.08144234, 0, 0, 0, 0, 0, 0.5972933, 0, 4.153444, 4.997212, 0.5, 0, 0, 0, 0, 1.386294, 5.9428, 0, 7.251345, 0.04629841, 0.4561477, 0, 7.553287, -5.875155, 0, 0.75, 0, 0, 0, 1.098612, 0, 0, 0, 0, 0.1168487, 0.35, 0, 6.55108, 0, 0, 0, 0, 0, 0, 0, 0, 0.5076258, 0.6100386, 0, 0.5076258, 0, 0, 0.4446793, 0.2, 0.06987459, 0.25, 0, 0.1, 4.477337, 0, 0.7987013, 0.28, 0.08144234, 0, 0, 9.083983, 0, 0.0754717, 0, 0, 0.5077296, 0.2, 0.5, 0, 0, 0, 0, 8.501063, 10.0538, 0, 0, 0, 0.8804404, 0, 0, -5.875155, 0, 0.8675887, 0, 0, 0.8163886, 0, 0, 0, 0, 0, 0.7652995, 0.25, 0.4973886, 0.03651913, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.4973886, 5.361292, 0, 0, 0, 0.8572058, 0.06987459, 0.25, 0, 0.1004045, 3.526361, 3111111e-9, 0.03852465, 0.5651671, 6.343881, 0, 0, 0.2, 0, 0.279601, 2.772589, 2.302585, 0.38, 2.70805, 0.1, 0, 0, 0, 0, 0.4777274, 0, 0.7190987, 1.098612, 0, 0, 0, 0, 0, 4.559038, 0, 0, 7.251345, 0.4044122, 0, 1.277376, 0, 5.521461, 0.05882353, 0, 0, 0, 0, 5.693732, 5.356586, 0.01111111, 0.4561477, 0, 0.28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5579418, 0.075, 1.098612, 0, 0.06987459, 0.3333333, 0.1794872, 0.6819527, 0.7672956, 2.079442, 0.25, 0, 7.251345, 0, 0, 0, 0.9245283, 3.091043, 0, 0.2106337, 0, 0.7001467, 4.158883, 3.555348, 0.15, 0, 0.7836897, 0, 0, 0, 0, 0.06097378, 0.03149606, 0, 0.5651671, 0.238377, 0.288416, 0, 0, 0.5972933, 0.1726634, 0.06930693, 4.983607, 0.08144234, 0.3, 0.01591512, 0, 4.276666, 0, 0.1666667, 0, 0.6289944, 0.5678395, 0.288416, 0.8286524, 0, 0, 0.7306943, 0, 0, 0.3341523, 7.698029, 0.1666667, 0.5859071, 0, 0.4446793, 0.852177, 0, 0, 0.3333333, 0, 0.7306943, 0.225, 0, 0, 0, 0, 7.257003, 0.4180328, 0.07347349, 0, 0.4684685, 5.768321, 3.590021, 0.1653979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.03852465, 3111111e-9, 0, 0.279601, 2.772589, 0.2, 0.5278115, 0, 0, 0, 0, 0, 0, 0.1031566, 0, 0.04629841, 1.098612, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3075243e-9, 0, 0.75, 0, 0, 0, 1.098612, 0, 0, 0, 0, 0.3333333, 0.15, 0, 6.55108, 0, 0, 0, 0, 0, 0, 0, 0, 0.1168487, 4.61512, 7.095064, 5.924256, 0, 0, 4.644391, 0.2, 7.251345, 4.559038, 0, 0.5579418, 5.521461, 0.4771158, 0.9522486, 0, 0, 0.7495036, 0.28, 0, 0.4685111, 0.5800964, 5.236442, 0.7175612, 0, 0, 0.7175612, 0, 0, 0, 0, 0, 0, 0, 0, 0.2115385, 7.553287, 4.271065, 0.9839365, 0.5, 0, 0.72, 0.07333041, 0.1599989, 0.01440354, 4.276666, 0, 0, 0.04025599, 0.6189346, 0, 0.6474386, 0, 0.1599989, 0.075, 0.319699, 3111111e-9, 0.4044122, 0, 0.2781682, 0, 0, 0, 0, 2.564949, 0, 0, 0, 0, 0, 0, 0, 0.03852465, 9.083983, 0, 0.279601, 2.589959, 8.501063, 0.238377, 0, 0, 0, 0, 0, 0.6289944, 0.15, 0.1, 0, 10.24495, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.06097378, 0.09302326, 0.8291906, 0.5651671, 0.07707246, 0, 0, 0, 0.5972933, 0.375, 2.302585, 0, 4.234107, 6.349139, 4.110874, 0.02316602, 3.135494, 0, 0.1012539, 4.276666, 8847693e-9, 0.1935484, 0.2, 0.04799343, 0.6289944, 0, 0.02702703, 0.9078827, 0.9574098, 0.5265958, 0.1666667, 0.2533333, 3.135494, 0.7957155, -0.3571366, 0.7307692, 0.175, 0, 0.9401993, 0.3444971, 0.3807987, 4.912655, 0.3849332, 0.275, 0, 2.848795, 0.06097378, 0.3717366, 0.3309545, 0.4, 0, 0, 0.09596258, 0.298683, 6.55108, 0.38, 3.465736, 0.3230769, 0.3333333, 0, 0, 0, 0.5077296, 0, 0, 0.8268518, 0.25, 0.9521739, 0.4, 0.6971402, 0.75, 0.6474386, 0.02932735, 0.1234112, 4.691348, 0.2429577, 0.4686952, 0.4310797, 6.466145, 0, 0.425, 0.1258911, 0, 0, 0, 0, 0, 0.135235, 0, 0.3202217, 3.637586, 0, 0.2781682, 7.251345, 4.559038, 0, 0.1168487, 0.3270142, 0.4771158, 7.698029, 0, 0.25, 0, 0.075, 0, 0.4685111, 0.25, 0, 4.394449, 0.5114858, 0, 0.6931472, 0, 0, 0, 0.279601, 0, 0, 0, 0, 0.8572058, 0.275, 0.523972, 0, 0.1726634, 0, 0.2053056, 0.1212097, 0.7480315, 0, -0.3571366, 0, 2.923849, 0.1943059, 0, 0, 4.912655, 6.349139, 0, 0.0131972, 1.098612, 0, 1.791759, 0.1666667, 0, 0.1745893, 0.135235, 0, 0, 0, 0.03191489, 0.15, 0.4044122, 0.4685111, 0.5859071, 0, 0, 0.0754717, 0.7300336, 1.098612, 0, 0.5275567, 0.2642521, 0, 0, 2.079442, 0, 0, 0.9, 0, 0.7175612, 0.08483563, 0, 0, 0, 0.175, 0.4753727, 0.5, 0, 0, 0, 0, 2.639057, 0, 0, 0, 0, 0, 0.03852465, 0.5972933, 0, 0.279601, 2.772589, 0.5808709, 0.3807987, 0, 0, 0, 0, 0, 0, 2.564949, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.8675887, 0.8163886, 0.0700191, 0.9648098, 0.3, 3.178054, 0.941459, 0.9206775, 7.251345, 9.083983, 0, 0, 0, 0, 0, 0.02316602, 5.768321, 6.466145, 0.2254693, 2.772589, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.302585, 0.03852465, 0.4044122, 0, 0.279601, 0, 0.311186, 0.2012987, 0, 0, 0, 0, 0, 0.298683, 5.9428, 0.7972973, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5579418, 0.984237, 3.526361, 4.919404, 0, 0, 0.275, 0.075, 0, 0, 0.06097378, 0, 0.927255, 0.2, 0, 2.397895, 0.9206775, 0, 0.1666667, 0, 0, 0, 0, 0, 0, 0.0700191, 3.394045, 0, 3.367296, 0, 0, 9.083983, 8.823206, 0.238377, 3111111e-9, 0.03191489, 0, 1.098612, 0.523972, 0.3341523, 0.7388909, 0, 0, 0, 0, 0, 2.302585, 0, 1.098612, 1.56783, 0.1168487, 0, 0, 0, 0, 0, 0, 0, 3.135494, 0, 0, 0, 0.75, 0.2533333, 0, 0.5458733, 0.8835651, 0.4446793, 0, 0.5059524, 5.609472, 2.397895, 0.03149606, 0.3807987, 0, 2.772589, 0, 3.135494, 0.09378118, 0.04975546, 0.2993237, 0.2, 0.4859494, 4.61512, 3.178054, 0, 0, 0, 0, 0.15, 0.3921823, 0, 0, 0.9599924, 0.8163886, 0.25, 0.5, 0, 0.05882353, 0.7917553, 0, -3.537076, 0.3333333, 0.25, 0.25, 0, 0.275, 0, 3.853134, 0.1186681, 0.1578185, 0.6474386, 0.2428571, 0.5, 0.4973886, 0.8218814, 0, 0.6729858, 0, 0, 0, 0.984237, 0, 0, 3075243e-9, 0, 0.05745253, 0, 0, 0, 0, 0, 0, 0, 0, 0.2, 0, -0.6342732, 0.4044122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2040628, 0, 0, 0.04799343, 0.4095238, 0, 0, 0.35, 1.94591, 6.660575, 4.859812, 2.079442, 0.5076258, 0.279601, 0, 0.02584493, 0.1889052, 0.898181, 0.475, 0.1146875, 0, 1.609438, 0.09378118, 0.1, 0, 0.2533333, 0, 0.5800964, 0, 0, 2.995732, 0.08333334, 0.6503634, 0, 0, 0, 0, 0.8608962, 0.4225708, 0.3583294, 0.4937787, 0, 0.3444971, 4.644391, 0.1578185, 0.3199397, 0.2337021, 0, 0.4878399, 0.3202217, 0.2429577, 0.8572058, 0.5114858, 0.288416, 0.1666667, 2.965995, 0.3333333, 5.17615, 0, 0.0346841, 0.08640844, 0.01072934, 0.1666667, 0.06930693, 0.2106337, 6.028278, 0.0494359, 0, 0.7460366, 7.257003, 0.7300336, 7.553287, 0.5972933, 0, 0.8236248, 0.2, 0.05501111, 0, 0.8793104, 0, 0.4741301, 4.559038, 0, 0.9522486, 0, 2.564949, 0.5800964, 0.3270142, 0.075, 0, 0, 0, 0, 0.8607724, 0.4865274, 0, 0, 0.8301887, 0.4310797, 0.6100386, 3111111e-9, 2.772589, 0, 0.1031566, 0, 0, 1.098612, 0, 0, 0, 0, 0, 0.0600245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6505576e-9, 0.2642521, 0.7957155, 0.6872104, 0, 0.175, 0.125, 0.8572058, 0.8530882, 8.501063, 0.5889103, 0.15, 0.9698997, 0, 0.9839365, 0, 0.7917553, 0.3, 0, 0.1653979, 0, 0.7652995, 0, 0.1765268, 0.1, 0.06876939, 4443248e-9, 0.3636364, 4.001706, 0, 0, 0.275, 0.2, 0, 0, 0.45, 0, 0, 0, 0.4446793, 0.3583294, 0.68, 0, 0, 5.252274, 0.275, 0.3368467, 0.2337021, 0, 0.5827814, 0, 0, 0.25, 7.920083, 0, 0.2, 0, 0.3333333, 0, 0, 0.01610604, 0, 0.4741301, 0.2, 0.275, 0.6474386, 0, 0.03151318, 0, 0, 0.5579418, 0.075, 1.098612, 0, 0.984237, 0.3333333, 0.2115385, 0.6819527, 0.7672956, 4.559038, 0, 0, 7.698483, 8.858511, 0, 0.2533333, 0, 0.9047619, 0, 0, 7.470224, 0, 0.06097378, 3.555348, 0, 0.5944056, 4.271065, 0, 0, 0, 0, 0.8675887, 0.1775001, 0, 0.05882353, 0.02156334, 3.135494, 0.1655462, 0.9245283, 0.2, 0.3478258, 0.5114858, 0, 0, 0.8804404, 0, 0.7001467, 0.7001467, 0.1111111, 1.098612, 0.6257396, 5.081404, 0.9814815, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.107917, 0, 4.770685, 0, 0, 0, 0, 0, 0.4446793, 2.772589, 0, 0, 0.4044122, 0.3583294, 0.2995246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.079442, 0.1305989, 6.349139, 0.2642521, 1.94591, 0.3113497, 0.9698997, 0.2125267, 0.3333333, 0, 0.08259411, 3.218876, 0.4674693, 0, 0.1031566, 0.7514793, 0.1, 0.4280677, 0.7358209, 3.663562, 0.898181, 0, 2.079442, 0, 0.4865274, 0.3199397, 0.2106337, 7.470224, 0, 0, 0, 0, 0.04402662, 0, 0, 0.75, 0, 0, 0, 0, 0.5, 1.098612, 0, 0, 0, 0, 0, 0, 0, 0, 0.9, 0.9324324, 0, 6.55108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.770685, 0, -0.6342732, 0.2492674, 0, 0, 0.4446793, 2.772589, 0, 0, 0.2125267, 9.083983, 0, 0, 0, 0, 0, 0, 2.197225, 0, 0, 0, 0, 0, 0, 0, 2.079442, 1.386294, 0, 0.3341523, 0.3230769, 0, 0.2618343, 0, 0, 0.2978621, 0.5, 4.276666, 0.3199397, 0, 0.38, 0, 0.3444971, 0.1726634, 0.523972, -1.218948, 0.311186, 0.01072934, 0.25, 0.135235, 0, 0, 0.4686952, 0.4937787, 0.5, 0, 0, 0, 4.859812, 0.425, 1.94591, 0.9, 0.375, 0.2237885, 0.4865274, 2.163539, 0.6872104, 0, 0.6931472, 0.7836897, 4.007333, 5.521461, 0.1212097, 0.475, 9922371e-10, 0.2228809, 0, 0, 0, 0, 0.6849968, 2.302585, 0.04799343, 0, 0, 0, 0.1578185, 8.007034, 4.110874, 0, 0, 0.04799343, 0.01591512, 0.9814815, 0.5808709, 0.0811779, 0.25, 0.03420965, 2.357957, 0.4859494, 7.257003, 0, 0, 0.15, 0, 0.15, 0.1726634, 0.05263158, 4.110874, 4.276666, 0, 0.3869769, 0.4225708, 0.05263158, 0, 0, 0, 0, 0, 4.85203, 3.871201, 0.05882353, 5.252274, 4.859812, 0, 0.4375, 0.08640844, 0, 0, 0.319699, 2.944439, 0.8010488, 0.1551724, 0.288416, 0.6842105, 0, 0.4371859, 0.02702703, 0.2470046, 0.01989664, 0, 0.6916528, 0.5461184, 0.735, 0.9078827, 0, 0.6931472, 0, 0, 0, 0.9703127, 0.9408998, 0.08144234, 0.8163886, 0.9230132, 0.6474386, 0, 0.7652995, 0.927255, 0.8804404, 0.09378118, 2.734421, 8.2933, 0, 0, 8.711114, 0, 0, 4.327618, 0, 0, 0, 0.6997636, 0, 0, 7.412764, 580011e-8, 0, 0, 0, 0, 1.293191, 0.8835651, 5.768321, 0.1943059, 0.03149606, 0.5, 0, 0, 0, 3.988984, 0, 0.7300336, 0.1651376, 0.2428695, 6.660575, 0, 0.4937787, 0.04975546, 0, 0.01591512, 0, 0, 0, 0.5785877, 5.356586, 0.28, 0.04643963, 0, 2.331571, 0.2955975, 7.920083, 0.1168487, 2.107917, 0.1653979, 7.553287, 0.02584493, 2.564949, 0.05263158, 5.252274, 8201202e-9, 0.275, 5.278115, 2.564949, 1.098612, 0.8297873, 0.125, 0.6842105, 0.1655462, 9.400051, 1.386294, 0.04629841, 0, 0.2978621, 0.1666667, 0, 0, 0.3333333, 0, 0.1255986, 0.06896514, 5.236442, 0, 0.9703127, 0.9021136, 0.08144234, 2.107917, 3.871201, 0.125, 0, 0.02316602, 4.234107, 4920635e-9, 0.1794872, 0, 0.6474386, 0, 0, 0.9995694, 2.197225, 0.1420345, 0.6886503, 0, 0, 0.8163886, 0.6729858, 0, 0, 3.050203, 8.711114, 0, 0, 0, 0, 0, 0, 0.0754717, 0, 0.6931472, 0, 0.3341523, 0.0542577, 0.3719538, 0.1146875, 0, 0, 0, 0.2327044, 2.639057, 0.1677098, 0, 0, 0.3202217, 0, 0, 0.6931472, 1.098612, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.6342732, 0.0375892, 0.6571429, 0.01412086, 0, 0.175, 0.15, 0.168831, 0.3333333, 4.143135, 0, 0, 0, 0, 7.698029, 6.349139, 0.3478258, 0.2002174, 0, 0.7909349, 4.41884, 0.523972, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
4086
|
+
leaves: [-0.31878, 0, -0.21386, 0.1032, -0.089037, 0.10096, -0.085583, -0.24982, -0.18222, -0.08767, 0.24808, 0.019812, -0.04525, 0.09739, 0.023051, -0.091186, 0.044292, -0.096174, 0.046064, 0.23168, -0.077142, 0.22043, 0.069539, 0.31783, 0.14139, 0.39324, -0.14273, 0, 0.47118, 0, 0, 0, -0.28689, 0, 0, 0, -0.24892, -0.11804, -0.19761, 0.14581, 30592e-7, -0.17347, 0.23968, 0, -0.13943, -0.022438, 0.20109, 0, -0.03742, -0.185, -0.030942, 0.096525, 0.057479, -0.092131, 0.1768, -0.15418, 0.28761, 54349e-7, -0.13046, 0, 0.217, -0.05387, 0.36207, 0, -0.26348, 0, 0, 0, -0.10938, -0.23412, -0.15009, 0.14125, 0.02478, -0.17439, 0.17603, -12222e-7, -0.16946, -0.062622, -0.051299, 0.049975, -0.10266, 0.11684, -77817e-7, 0.11119, 0.11634, -0.16966, 0.03832, 0.19845, 0.1627, 0.2482, -0.17467, 0.16947, 0.085149, 0.30282, -0.17858, 0.21696, -0.24599, 0, 0, 0, -0.20435, -0.061186, 0.14553, -0.12948, -0.065705, 0.20929, -0.1866, -0.061435, -0.035533, -0.18097, 0.22482, 0, 0.062581, -0.080121, -0.18422, 53663e-7, 0.16514, -0.093846, 0.093815, -0.18092, 0.094754, 0.22653, -0.099107, 0, 0.029711, 0.27539, 0.19323, -0.1516, -0.23504, 0, 0, 0, -0.070733, -0.19887, -0.13254, 0.13092, 0.02965, -0.15185, 0.069063, -0.066137, 0.20636, 0, 0.036359, 0, -0.13798, 0.032521, -0.020725, 0.11942, 0.069623, -0.15504, 0.089312, 0.1892, 0.096944, 0.19231, -0.13135, 0.14131, 0.2084, 0.025408, 0.061255, 0.24878, -0.22577, 0, 0, 0, -0.1863, -0.021576, -0.11015, 0.10831, -0.14984, 95591e-7, -0.028693, -0.15562, 0.030327, 0, 0.18693, 0, -0.047796, 0.046741, 0.019708, -0.17314, 0.084792, -0.16877, 0.17469, 0.071447, 0.1241, 0.19422, -0.070848, 0, 0.053655, 0.2394, 0.1489, -0.16053, -0.2184, 0, 0, 0, 0.10223, -0.12888, -0.19218, -70025e-7, -0.083068, -0.17488, 0.055509, -0.06944, 0.059408, 0.27968, -0.16603, 0.052281, 0.016982, 0.16886, 0.022023, -0.14734, 0.059351, -0.15003, 0.046576, 0.13777, 0.1881, 0.12208, 0.2244, 0.030347, -0.17702, 0, -82749e-7, 0.16174, -0.2106, 0, 0, 0, 0, 0, 0, 0, 0.059566, -0.17656, 0.038923, -0.09071, -15376e-7, 0.25299, -0.1101, 0.039362, 0.017342, -0.075443, -0.018361, 0.13649, 0.050524, -0.089454, 0.057659, 0.13835, 0.044795, 0.18141, 0.010322, 0.1659, 64778e-7, 0.21367, 0.13681, -0.1486, -0.20786, 0, 0, 0, 0, 0, 0, 0, -0.012525, 0.26293, -0.15276, 0.018769, -0.17799, -0.09904, 0.074436, -0.17605, -0.084997, 25315e-7, 0.10665, -0.13919, 0.057783, 0.17698, 0.040143, -0.23457, 21528e-7, 0.14463, -0.14011, 0.14053, 0.020322, 0.20465, 0.12803, -0.13533, -0.20366, 0, 0, 0, 0, 0, 0, 0, -0.011659, 0.21856, -0.13993, 0.032537, -0.083678, 0.18514, -0.14706, 0.10396, -89532e-7, -0.12856, 49842e-7, 0.21948, 0.086086, -0.1287, -0.065416, 0.04875, -0.046568, 0.13847, 0.10505, -0.18916, 0.16218, -0.20886, 0.025395, 0.19321, -0.20024, 0, 0, 0, 0, 0, 0, 0, 0.23341, -0.035271, -0.12481, 0.090957, -0.16916, -0.068392, 0.018748, 0, -0.035821, 0.17994, -0.07059, 0.01659, 96452e-7, 0.074111, -0.13471, 0.10429, -0.15561, 0.13238, -43242e-7, 0.14606, 0.013174, 0.1955, 0.13114, -0.083045, -0.19852, 0, 0, 0, 0, 0, 0, 0, -0.050254, 0.22151, -0.11774, 0.056798, -0.16026, -0.043395, 0.030176, 0, 0.01821, 0.19027, -0.091734, -0.019291, 0.016345, -0.11042, 0.029938, 0.11237, 0.039109, 0.12685, -0.10734, 0.13199, 0.011938, 0.18867, 0.12053, -0.071607, -0.19556, 0, 0, 0, 0, 0, 0, 0, -0.04689, 0.19814, -0.11419, 0.036199, -0.15099, -0.039416, 0.027778, 0, 90897e-7, -0.15388, 0.02634, -0.16408, -0.077332, 0.061169, 0.026983, 0.14605, -0.069073, 0.15655, -0.10121, 0.098306, 0.12525, -0.19903, -0.032052, 0.17635, -0.19275, 0, 0, 0, 0, 0, 0, 0, -0.13487, -78661e-7, 0.24791, 0, -0.14641, 0.011359, -0.068595, 0.12632, 0.080484, -0.12021, 78606e-7, -0.076651, -0.035819, 0.11089, 0.07826, -0.053902, -0.068808, 0.062142, 0.1864, 0.034044, -0.073019, 0.13374, -0.19412, 0.051882, -0.18688, 0, 0, 0, 0, 0, 0, 0, 0.12952, 0, 0, 0, -0.025255, 0, -0.13332, 0, -0.029127, -0.16208, 0.045483, -0.17471, 0.011839, 0.085709, -0.022881, 0.095192, -0.070798, 0.063432, 0.18055, 0.031005, -0.062873, 0.12294, -0.16251, 0.045998, -0.18705, 0, 0, 0, 0, 0, 0, 0, -0.014552, -0.10701, 0.19835, 0, -0.15769, -0.042538, -0.090104, 0.12266, 58218e-8, -0.10159, 0.036248, -0.016371, 0.043897, 0.15435, -0.076118, 0, -0.068146, 0.061155, 0.17454, 0.028234, -0.087178, 0.093422, -0.066383, 0.11974, -0.19046, 0, 0, 0, 0, 0, 0, 0, -0.069484, 0, 0.16113, 0, -0.037742, -0.14975, 0.018831, -0.07785, -0.10386, 0.089735, -36422e-7, 0.1541, 0.015404, 0.09292, -0.13876, 0.036152, 49348e-7, 0.16981, -0.072142, 0.075278, -0.093063, 0.12596, 0.040608, -0.18604, -0.18053, 0, 0, 0, 0, 0, 0, 0, 0.030829, 0, 0, 0, -0.091149, 0, 0, 0, -38172e-7, 0.13528, 0.10873, -0.21881, 0.16513, -0.037891, 0.094282, -0.14205, -0.025758, 0.11648, -0.24113, 0.1303, -0.010495, -0.18121, 0.026166, 0, -0.18736, 0, 0, 0, 0, 0, 0, 0, -0.042049, 0, 0, 0, 0, 0, 0, 0, 0.23084, -0.034776, -0.11564, 0.089227, 14196e-7, 0.13943, 0.096535, -0.071237, -0.045889, 0.10821, 0.1697, -0.011255, 0.091511, 0, 0.08187, -0.15145, -0.18469, 0, 0, 0, 0, 0, 0, 0, -0.039368, 0, 0, 0, 0, 0, 0, 0, 0.11634, -0.042627, -5224e-6, -0.081608, -0.076521, 0.091283, 0.070928, -0.10526, 0.16169, -62322e-7, -0.15914, 0.074429, -0.093142, 0.18604, -0.16911, 0.036157, -0.18176, 0, 0, 0, 0, 0, 0, 0, -0.036879, 0, 0, 0, 0, 0, 0, 0, -0.041254, 65793e-7, 0.13597, 0.01078, -0.038195, 0, 0.14741, -23902e-8, -0.12856, 0, 0, 0, 0.096233, -0.037189, 0.14776, -9574e-6, -0.17698, 0, 0, 0, 14974e-7, 0, -0.069735, 0, -0.033346, 0, 0, 0, 0, 0, 0, 0, 0.023197, -0.012282, -0.12026, 0.096717, -0.17937, 0, 0, 0, 0.1488, -79748e-7, -0.1524, 0.067945, -0.073014, 0.16329, -0.14901, 0.03301, -0.17662, 0, 0, 0, 0, 0, 0, 0, -0.032376, 0, 0, 0, 0, 0, 0, 0, -67804e-7, 0.13135, 0.065422, -0.084352, -0.024266, 0.048637, 0.095737, -0.12801, 0.15843, 0.023992, -0.022788, 0, 0.015057, -0.19599, 0.06161, 0, -0.16738, 0, 0, 0, 0, 0, 0, 0, -0.087328, 0, 0, 0, 0.03884, 0, 0, 0, 0.057769, -0.082373, 0.035103, 0.19533, 0.021393, -0.22495, 90638e-7, -0.043117, 0.13735, -39622e-7, -0.14363, 0.060968, -0.10608, 0.1084, -0.1645, 0, -0.16951, 0, 0, 0, 0, 0, 0, 0, -0.028117, 0, 0, 0, 0, 0, 0, 0, -0.021435, 0.01056, -0.17263, 0, -0.019753, 0, 0.13322, 14524e-7, 0.048026, -0.037267, -0.20085, 0, 0.12172, -0.047456, 0.047647, -0.16217, -0.16595, 0, 0, 0, 0, 0, 0, 0, -0.022132, 0, 0, 0, 0, 0, 0, 0, 0.048739, -0.082585, 0.13999, -0.051229, -71629e-7, -0.17621, 27376e-7, 0.074376, -88393e-7, -0.10143, 0.034214, 0, 0.11076, 0.0273, -0.097527, 0, -0.15934, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.037207, 0.025782, -0.12158, 95648e-7, -0.051308, -0.21738, -50697e-7, 0.063456, 0.12071, -0.023277, -0.071724, 0.029418, -0.23141, -0.01848, 0.0964, -0.11606, -0.15657, 0, -0.024559, 0, 86673e-7, 0, 0, 0, -0.11676, 12122e-7, -0.041715, 0.074709, -0.036049, 0, 0.15983, 0, -0.014469, 0.082783, -0.087967, 0.022561, 0.10962, -0.011297, 0.23271, 0, -0.12793, 39687e-7, -0.197, 0.091983, 0.01793, -0.090029, -0.019215, 0.15215, -0.14988, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19636e-7, -0.088794, -0.12343, 0.11977, -0.15647, 0, 0, 0, -3417e-6, 0, 0, 0, 0.020662, 0.14532, 11218e-7, 0, -0.020797, 0, 0, 0, 0, 0, 0, 0, -0.14717, 0, 0, 0, 0, 0, 0, 0, 0.021813, -0.036106, -0.012852, 0.14634, 0.020725, -0.18151, -0.089111, 0.079667, 0.11189, -0.050054, -0.0495, 0.011981, -0.030569, 0.088854, -0.20207, 0.031451, 0.17985, 0, -0.09726, 0.11445, -0.04192, 0.13707, -0.14124, 0.012741, -0.15477, 0, 0, 0, 0, 0, 0, 0, -0.062733, 0.12858, -0.24566, -0.068646, 0.1419, 0, 0.078618, -0.088579, -0.072796, 0.12067, -0.058804, 0.011681, 0.030978, -0.14253, -0.051765, 0.052692, -0.13293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.01667, 0.025776, 0.080178, 52813e-7, -0.037566, 0.07252, 0.12069, -0.059294, -0.23481, 0, 0, 0, -93202e-7, 0.12583, -0.17263, 79894e-8, -0.043584, 0, 0.18834, -53314e-8, -0.061634, 0.10353, -0.13052, 0.011791, -0.15138, 0, 0, 0, -0.02506, 0, 0, 0, 32844e-7, -0.082135, 0.12356, -0.070309, -0.14119, 0, 0, 0, 0.016167, 0, 0.13083, 0.025533, -40782e-7, 0, 0, 0, -0.12086, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2486e-6, -0.049879, 0.12705, -0.19319, -0.2983, 64434e-7, -0.049097, 0.10149, 0.010483, 0, -0.089464, 0, -0.026978, 0, 0.016435, 0.15167, 0.012469, -0.12631, 0.12619, -0.016202, 39847e-7, 0.18765, 0.044292, -0.097042, -0.023166, 0, 0, 0, -0.14499, 0, 0, 0, -0.027742, -0.21044, 0.049073, 0, 0.019086, 0.16431, -0.15111, 22833e-7, -0.065115, 0, 0.072499, 0, 0.1286, 0, 0.024416, 0, -0.10275, 0.050504, 0.025028, -0.012968, -0.061989, 0.012309, 0.014391, 0.11556, -0.10724, 0.016672, -0.042548, 0.17285, -0.095792, 0.09429, -0.16289, 0, -0.15634, 0, 0, 0, -3802e-6, 0, 0, 0, 0.050798, 0, 0, 0, 0, 0, 0, 0, -0.035466, 0.13462, -80576e-7, -0.12781, -0.031953, -0.21175, 89983e-7, 0, 0.10814, -0.073105, -0.021317, -0.13275, 96803e-7, -0.046822, 90479e-7, 0.13648, 0.16757, -0.023139, -0.12912, 0.083669, 0.063632, 0, -0.18048, -0.041198, 0.16056, 0, -41979e-7, 0, -0.062455, 0, 0, 0, -0.016626, -0.064816, -0.10089, 0.088929, 0.19723, -58523e-7, 0.061453, -0.040545, -0.087547, 0.082232, -0.15654, 84322e-7, 0.062902, -0.045914, 0.21256, 0.041883, 0.16271, -0.05326, 0.051288, -0.13793, -0.047191, 0.047581, -0.07067, 0.046794, -0.20163, 0, -0.024462, 0, 0.044388, -0.14135, 0.14349, -0.010779, -0.015012, -0.10164, -802e-5, 0.090082, 0.059939, -0.012717, -73499e-7, 0.095098, -0.1044, -57894e-7, -0.024778, 0.14077, -0.050495, 0.078804, -0.048483, -0.2338, -0.12074, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86442e-7, -0.18453, 0.035221, 0, -0.070439, 0.10129, -0.085599, 89424e-8, -0.13109, 0, 0, 0, 0, 0, 0, 0, -0.068704, 0, 0, 0, 0.065366, 0, 0, 0, 0.11754, 0, 0, 0, 0.026356, 0, 0, 0, -0.10463, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -39888e-7, 0.03117, 0.089166, -0.12897, -0.10975, 0.055568, 0.019508, -0.052253, -0.1817, 0, 0, 0, -0.022799, 0.099006, -0.14978, 1331e-6, 19305e-7, -0.025683, -0.046425, 0.13922, -0.058442, 0, 0.15993, -0.022243, -0.076591, 0, 14588e-7, 0, -0.037563, 0, 0.05665, 0.17815, -0.21591, 0, 0, 0, -0.090392, 0, 0.06413, 0, -0.15199, 0.040411, -0.040924, 0.12009, -0.24176, -0.024511, 0.10206, -0.13227, 0.10132, -0.033979, 0.21215, 0.021766, -0.090434, 32753e-7, -0.15063, 0.023887, -0.099811, 0, 0.17106, -0.018465, -0.1656, 0, -12131e-7, 0, 0.07163, 0, 0, 0, -0.021185, -0.20431, 0.040932, 0, -0.071599, 0, 0, 0, -0.030878, 0, 0.16172, 0, -0.021637, 71234e-7, 0.067308, -0.09265, -0.095929, 0, 0.11221, -0.043052, -0.11599, 0, 0, 0, 0, 0, 0, 0, -0.06202, 0, 0, 0, 0.063006, 0, 0, 0, 0.11344, 0, 0, 0, -0.01453, 0, 0.053922, 0, -0.018448, 0.050326, -0.13026, 0.012479, 0.1786, -0.015326, 0.036543, -0.041512, 0.039455, -0.074793, -0.1837, 0.011569, -0.092563, 0.043492, 5745e-6, 0.1005, 0.094171, 0.02522, -0.1476, 0.053489, -0.10464, 0.13951, -0.21577, 0.011098, -0.24379, 75209e-7, 0.029567, -0.089303, 0.058063, -0.11782, -0.074588, 0.12355, 0.023978, 0.098672, -0.10251, 0.044428, -77226e-7, -0.10821, 13148e-7, 0.095462, -0.14125, 0, 0.020748, -0.080522, 0.019748, 0.13311, -0.090006, 36275e-7, -0.11125, 0.015808, -0.096964, 0.12053, -0.059508, 0.087144, 0.099509, -0.054598, -0.039608, -0.18053, 0.071329, 0, -0.012073, 0, 0.080146, 0, -0.019494, 0.035802, -0.073574, 0.025506, 0.020866, 0.10818, -0.097737, 0.018335, -0.016396, 0.11853, 0.070601, -0.049897, 0.019012, 0, -0.11662, 0, -0.069868, 0.014318, -0.074871, 0.096384, 0.12244, -0.099517, 0.13133, -0.088917, -0.12746, 0.029197, 0.20303, -0.032195, -0.089661, 0.10987, -0.030009, -0.19362, 65422e-7, -0.055154, -0.068651, 57858e-8, 0.061897, -0.071067, -0.12961, 0.053763, -0.063009, 0, 0, 0, -0.039017, 0, 0.021404, 0.14126, -0.18415, 0, 0, 0, -0.080929, 0, 0.061823, 0, 0.1225, -0.068711, -0.17039, 0.089541, -0.039238, 0.10799, -0.13652, 0.017893, -0.04963, 0.15226, -60545e-7, -0.12925, -0.16093, 0, 0.10531, -0.055054, 0.032125, -0.11366, 0.087259, -0.027556, -0.033357, 0.20738, -0.10095, 0.060347, -0.17856, 0, 0.0359, 0, -0.12644, 0.035611, 0.10579, -0.03658, -0.044933, 0.049539, -0.10375, 0.028788, -0.03659, 0.016655, -94193e-7, -0.1116, 0.10228, -0.059757, -0.12675, 0.017271, 0.15092, 0, 92177e-7, 0, -0.040398, 0.054139, 0.023495, -0.19998, 0.03108, -0.14859, 16413e-7, -0.063401, -41736e-7, 0, 0, 0, 0, 0, 0, 0, 0.017633, 0.12154, 0.014844, 0, 62872e-7, 0, 0, 0, -0.012991, 0.015632, 0.148, -0.17287, 0.027573, -0.10558, -0.028381, -0.1601, -0.10861, 0, 0, 0, 0, 0, 0, 0, -0.050799, 0, 0, 0, 0.058191, 0, 0, 0, 0.098109, 0, 0, 0, 0.017355, 0, 0, 0, -84396e-7, 0.015511, -0.022006, 0.090502, -0.083425, 0.081995, 0.037485, -0.1868, 63518e-7, -0.20898, 0.066795, 0, 0.086635, 0, 0, 0, -0.10052, 0, 0, 0, 0.029183, 0, 0, 0, 0.13954, 0, 24183e-7, 0, -0.013996, 0, 0, 0, 0.03755, -0.063408, -0.095524, -66204e-8, -0.01011, -0.11417, 0.11893, -0.038519, -0.043845, 0, 0.054809, 0, 0.014584, 0, 0.11024, 0, -0.1286, 0, 0, 0, -0.013809, 0, 0, 0, 0.046643, 0, 0, 0, 0, 0, 0, 0, 0.029664, -0.11144, -38707e-7, 0.036957, -0.020296, 0, 0.015165, 0.13016, -0.20004, 0, 0, 0, -0.014898, 0, 0.085852, 0, -0.052389, 0, 0, 0, 75247e-7, 0.14896, -0.075097, 0.088276, 0.07936, -0.077352, -0.025878, -0.17786, 0.088121, 0, 0, 0, 0.044288, -0.049057, -0.022134, -0.17036, 0.021931, -0.033452, 27312e-7, -0.034044, -0.12375, 0.02196, 0.089596, 0, -0.032824, 0, -0.17654, 0, -0.083957, 0, 0, 0, 0, 0, 0, 0, 21928e-7, 0.13961, -63211e-7, 0, -0.035498, 0, 0, 0, 87513e-7, -0.071363, -0.13341, 79083e-7, -9789e-6, 0.14328, -0.098177, 0.084643, 0.097713, -0.072204, -0.032773, 0.036905, -0.15301, -0.012019, 0.062019, -0.080499, -0.086663, 0, 0.062205, 0, 0.11582, 0, 0, 0, -0.027736, -0.13376, 0.028855, -0.043784, 0.058421, 0, 0, 0, -3833e-7, 0.031007, 0.024274, -0.13301, 0.13596, -0.041948, -0.1096, 0.046452, 0.12662, -0.049254, -0.16126, 0.061984, -0.23536, 74889e-7, -0.045049, 0.063305, 0.028035, 0, 0.13608, 0.023262, -0.046559, 0, 0, 0, -0.16926, 0, 0.067809, -0.082247, 0.096429, 0, 0, 0, -0.084006, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.03839, 0, -0.088326, 21105e-7, 0.17277, 0, 0, 0, 0.041922, -71732e-7, 79168e-7, -0.016058, -0.13714, 0, 0.028529, 0, -0.031387, 0.024855, 0.084249, -0.13553, 98604e-7, -0.19609, 0.09914, -0.11453, -0.049297, 0, 0.1629, 0.013718, 0.022975, -0.021355, -0.059963, 0.046499, 10483e-7, 0.13587, -0.094565, 0.094077, -0.097086, 0.10819, -0.17642, 0.049687, -0.075923, 0, 0, 0, -0.042108, 0, 0.18821, 57007e-7, 0.013693, -0.050797, -0.084963, 0.14106, 0.090782, -0.083822, -0.18338, -0.040639, -0.085108, -0.26172, 0.067755, 0, 0.086039, -0.036826, -0.10901, 0.012851, 0.14848, -0.050912, 95496e-7, -0.18808, 0.066332, -0.095817, -0.067671, 0.15728, 0.01908, 0.092292, -0.042226, 0.078525, 0.012025, -0.12747, -0.045771, 0.072186, 44171e-7, -0.056616, -0.027761, 0.040418, -0.079397, 0.024086, 0.023938, -0.14752, -0.032291, 0.11731, -0.14706, 0, -0.16154, 0, 0, 0, -0.16401, 0, 0.11167, -0.073384, 83214e-7, -0.26138, 0.03664, 0, -0.13406, 0.075173, 0.10732, -0.051645, -0.018098, 0.08159, 0.012014, -0.097678, -26073e-7, 0, 0, 0, -0.13623, 0, 0, 0, 0.053201, 0, 0, 0, -0.028917, 0, 0, 0, 0.096481, -0.030247, -80454e-7, -0.12386, -0.0729, 0.085417, 0.13485, -49854e-7, -0.033804, 0.05768, 0.022797, -0.15992, 0.039011, 54903e-8, -17996e-7, -0.072927, -0.052882, 0.040098, 8722e-6, -0.094152, -99553e-8, 0.034386, 0.074581, -0.103, -0.054192, -0.1867, -0.019201, 0.082774, 0.11276, 0, 0, 0, -0.015622, 0.081396, 0.081931, -0.17916, -0.19171, 0, 0, 0, 0.12595, -0.037572, -0.078861, 0.1052, -0.10291, 0, 0.040601, 0, -0.037273, 0.017012, -0.046905, 0.15692, -0.02941, 0.11382, -0.15523, -0.034254, -0.129, -0.014011, 0.063004, -0.10424, 22214e-8, 0.18625, -0.070594, 0, -30289e-7, 0.085572, 0.023822, -0.093746, -0.019635, 0.058169, -0.21594, -0.011842, -0.059955, 0.067115, -0.0272, 0.16808, -0.16449, -0.025853, 41495e-7, 0, 0.10483, -0.035289, -0.082386, 0, -0.14235, -83287e-7, 0.014714, 0, -30812e-7, 0.052884, 0.09577, -0.026076, -0.17278, 0, -0.013967, 0.081389, 0.13011, -90077e-7, -0.029134, 0, 0.075884, -0.034012, -0.10158, 0.026794, 0.1381, 0, 0.031672, 0, -0.049574, 0, 0, 0, 0.012788, -0.069952, -0.092755, 0.072161, 0.038865, -0.063906, 0.10812, -0.040895, -0.11118, 0.035619, 62968e-7, -0.090447, -0.07104, 0.041187, 0.023093, -0.06366, -0.070612, 0, 0, 0, 0.011894, 0, 0, 0, 0.014733, 0, 0.12602, 0, -29376e-7, 0, 0, 0, -0.019266, 0.058113, 87423e-7, -0.018019, -0.074371, 0.037209, 0.059213, -0.15027, -0.094376, 0, 0, 0, 0, 0, 0, 0, -0.060731, 0, 0.037453, 0, 0.078012, 0, 72858e-7, 0, 0.094867, 0, 0, 0, 0, 0, 0, 0, -0.038517, 0.10626, 59984e-7, 0.27093, -0.087623, 0.057645, 0.13399, -0.053092, 99093e-7, -0.03923, -0.10844, 0.033674, 0.065536, -0.073952, 0.064976, -13644e-7, -0.051146, 0.060127, -0.13571, 54371e-7, 0.13184, -0.041253, -0.040928, 0.049498, -0.1608, -29027e-7, 0.039259, 0, -0.049299, 0, 0.08896, 0, -0.020005, 0, 0, 0, 0.11374, 0, 0, 0, -19855e-7, 0.022288, -52636e-8, -0.13676, -0.1283, 0, 0.025403, -0.082463, -0.081695, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.022278, 0.022731, -63264e-7, 0.070327, -0.09998, 0, 59647e-7, 0, -0.089259, 0, 0, 0, 0, 0, 0, 0, -0.010335, -0.064594, 0.034999, 0, 0.071962, 0, 59737e-7, 0, 0.087249, 0, 0, 0, 0, 0, 0, 0, -98713e-7, 0.065154, -0.07178, 0.068719, 0.033719, -0.016312, -0.093596, 0.10353, 0.15098, 0.037582, -0.068176, 0.065281, 0.028411, -0.090022, -0.02, 0.097608, 0.096275, -0.043733, -0.11081, 0.062366, 0.07787, -0.096504, 0.25379, -0.027689, 0.15274, -0.02326, 0.11649, -0.10328, 0.03204, 0, -0.1041, 0, 0.053508, -0.06176, 0.034901, -0.10102, 0.12959, 0.025727, 0.013432, -0.025025, -0.15642, 0, -0.012913, 0, 0.036708, 0, 0, 0, 92922e-7, -0.11008, 0.039353, -11975e-7, -0.1873, 0.05168, 0.14323, 0, -91294e-7, 0, -0.085983, 0, 0.062435, -0.095586, 0.18119, -0.016888, -0.023405, 0.12695, -0.031822, 0.012227, -0.034832, 83948e-7, -69426e-7, -0.12173, -0.064596, 0.099589, -0.042226, -0.1849, -0.018328, -0.12036, -98686e-7, 0.13638, -0.030563, 0.035158, 0.13902, -0.014779, -0.10195, 0.016682, 0.06353, 0, -0.013256, 0, 0, 0, -0.12189, 0, 0, 0, 93204e-7, -0.032384, 0.099758, -24205e-8, 0.027201, -0.027466, -0.1313, 0.023869, -0.037027, 0.063667, -0.055427, 0.12884, -0.03747, 0, 0.13929, 0.030423, -0.079607, 0.016579, 0.09025, -0.011038, -0.12443, -0.02106, 0.063132, 0, -6998e-6, -0.15043, 0.023482, 0, 0.086269, 0, -0.017606, 0, 11017e-7, -0.058056, 0.1128, -0.10181, 0.048584, -0.059057, -0.15894, -0.019696, 0.037927, 0, -0.10543, 0.010529, 10329e-7, 0, 0.11671, 0.021251, -0.013467, 0, 0.11561, 0, 28383e-7, -0.1409, -0.036411, 0.10079, -0.19653, 0, 0, 0, 0, 0, 0, 0, -0.015822, -0.085147, 0.067554, -0.051877, -0.030254, 0.033135, -0.060647, 755e-5, -0.12698, -0.026913, -0.013847, 0, 0.033159, 0, 0, 0, 20011e-7, -0.089529, 0.11052, -0.039774, -0.06078, 0.074167, -0.22869, -0.012486, 0.076502, -0.082171, 0.069945, -0.062, -0.026703, 0.13525, -0.030485, 0.074094, 0.010066, -0.025533, 0.027049, -0.060656, -0.10503, 0.049859, -0.043438, 0.091805, 0.028386, -0.1374, -0.13168, 0.085657, -0.13418, 0.037796, -0.067383, 0.078579, -0.094719, 0, 0.020552, 0, 0.11307, -0.03556, -0.065418, 0, -0.13795, 0.01813, -0.041248, 0.13839, 0.098539, -0.066899, -0.15574, -18212e-7, -0.010075, 0.030592, 0.037935, -25368e-7, 0.024418, -0.11589, -0.023747, 0.12406, 0.046364, 0, -0.14184, -0.02566, 0.066711, -0.038485, -0.086794, 0.037373, 0.098719, 0, 0, 0, -0.013182, 0.10087, -0.076343, 0.057484, -0.17586, 0, 0, 0, 0, 0, 0, 0, 0.051839, -0.049326, 0.069539, -0.031561, 0.016381, 0, -0.023198, -0.17628, 0.017158, 0, -0.12172, 0, -9651e-6, 0.03746, 0.032993, -0.14898, -68498e-7, 0, 0, 0, 0, 0, 0, 0, 0.015975, 0, 0.09992, 0, 0.041884, 0, -0.036147, 0, -0.056622, 0.047856, 0.021116, -0.063706, 0.038158, -0.063383, 76563e-7, 0.098989, 0.068157, -0.015616, -0.023883, -0.13523, -61924e-7, 0.070755, -0.041158, 23702e-7, 0.029427, 0, 0, 0, 0, 0, 0, 0, -74014e-7, 0, 0, 0, -0.12097, 0, 0, 0]
|
|
4087
|
+
};
|
|
4088
|
+
|
|
4089
|
+
// src/extractors/lib/layout-tables.ts
|
|
4090
|
+
var DATA_MARKERS = /* @__PURE__ */ new Set(["caption", "thead", "tfoot", "th", "col", "colgroup"]);
|
|
4091
|
+
var BLOCK_IN_CELL = /* @__PURE__ */ new Set(["h1", "h2", "h3", "h4", "h5", "h6", "table", "form"]);
|
|
4092
|
+
var TABLE_PARTS = /* @__PURE__ */ new Set(["tbody", "thead", "tfoot", "tr", "td", "th"]);
|
|
4093
|
+
var TABLE_CONTEXT = /* @__PURE__ */ new Set(["table", "tbody", "thead", "tfoot", "tr"]);
|
|
4094
|
+
var shapeOf = (table) => {
|
|
4095
|
+
const shape = { rows: 0, columns: 0, dataMarker: false, blockInCell: false };
|
|
4096
|
+
const visit = (node, inCell) => {
|
|
4097
|
+
for (const child of node.children) {
|
|
4098
|
+
if (!isElement(child)) {
|
|
4099
|
+
continue;
|
|
4100
|
+
}
|
|
4101
|
+
const tag = child.tagName;
|
|
4102
|
+
if (tag === "table") {
|
|
4103
|
+
shape.blockInCell = shape.blockInCell || inCell;
|
|
4104
|
+
continue;
|
|
4105
|
+
}
|
|
4106
|
+
if (DATA_MARKERS.has(tag)) {
|
|
4107
|
+
shape.dataMarker = true;
|
|
4108
|
+
}
|
|
4109
|
+
if (tag === "tr") {
|
|
4110
|
+
shape.rows += 1;
|
|
4111
|
+
const cells = child.children.filter(
|
|
4112
|
+
(cell) => isElement(cell) && (cell.tagName === "td" || cell.tagName === "th")
|
|
4113
|
+
).length;
|
|
4114
|
+
shape.columns = Math.max(shape.columns, cells);
|
|
4115
|
+
}
|
|
4116
|
+
if (inCell && BLOCK_IN_CELL.has(tag)) {
|
|
4117
|
+
shape.blockInCell = true;
|
|
4118
|
+
}
|
|
4119
|
+
visit(child, inCell || tag === "td" || tag === "th");
|
|
4120
|
+
}
|
|
4121
|
+
};
|
|
4122
|
+
visit(table, false);
|
|
4123
|
+
return shape;
|
|
4124
|
+
};
|
|
4125
|
+
var isLayoutTable = (table) => {
|
|
4126
|
+
const role = stringProperty(table, "role");
|
|
4127
|
+
if (role === "presentation" || role === "none" || stringProperty(table, "datatable") === "0") {
|
|
4128
|
+
return true;
|
|
4129
|
+
}
|
|
4130
|
+
const shape = shapeOf(table);
|
|
4131
|
+
if (shape.blockInCell) {
|
|
4132
|
+
return true;
|
|
4133
|
+
}
|
|
4134
|
+
if (shape.dataMarker) {
|
|
4135
|
+
return false;
|
|
4136
|
+
}
|
|
4137
|
+
if (shape.rows <= 1 || shape.columns <= 1) {
|
|
4138
|
+
return true;
|
|
4139
|
+
}
|
|
4140
|
+
if (shape.rows >= 10 || shape.columns > 4) {
|
|
4141
|
+
return false;
|
|
4142
|
+
}
|
|
4143
|
+
return shape.rows * shape.columns <= 10;
|
|
4144
|
+
};
|
|
4145
|
+
var unwrap = (table) => {
|
|
4146
|
+
const cells = [];
|
|
4147
|
+
const collect2 = (node) => {
|
|
4148
|
+
for (const child of node.children) {
|
|
4149
|
+
if (!isElement(child)) {
|
|
4150
|
+
continue;
|
|
4151
|
+
}
|
|
4152
|
+
if (child.tagName === "td" || child.tagName === "th") {
|
|
4153
|
+
cells.push({ type: "element", tagName: "div", properties: {}, children: child.children });
|
|
4154
|
+
} else if (child.tagName !== "table") {
|
|
4155
|
+
collect2(child);
|
|
4156
|
+
}
|
|
4157
|
+
}
|
|
4158
|
+
};
|
|
4159
|
+
collect2(table);
|
|
4160
|
+
return { type: "element", tagName: "div", properties: {}, children: cells };
|
|
4161
|
+
};
|
|
4162
|
+
var unwrapLayoutTables = (root) => {
|
|
4163
|
+
const visit = (parent) => {
|
|
4164
|
+
const parentTag = isElement(parent) ? parent.tagName : "";
|
|
4165
|
+
for (let index = 0; index < parent.children.length; index++) {
|
|
4166
|
+
const child = parent.children[index];
|
|
4167
|
+
if (!isElement(child)) {
|
|
4168
|
+
continue;
|
|
4169
|
+
}
|
|
4170
|
+
if (TABLE_PARTS.has(child.tagName) && !TABLE_CONTEXT.has(parentTag)) {
|
|
4171
|
+
child.tagName = "div";
|
|
4172
|
+
}
|
|
4173
|
+
visit(child);
|
|
4174
|
+
if (child.tagName === "table" && isLayoutTable(child)) {
|
|
4175
|
+
parent.children[index] = unwrap(child);
|
|
4176
|
+
}
|
|
4177
|
+
}
|
|
4178
|
+
};
|
|
4179
|
+
if ("children" in root) {
|
|
4180
|
+
visit(root);
|
|
4181
|
+
}
|
|
4182
|
+
};
|
|
4183
|
+
|
|
3015
4184
|
// src/extractors/lib/terminators.ts
|
|
3016
4185
|
var TERMINATOR_PATTERNS = [
|
|
3017
4186
|
/^was this (page|article|document) helpful/i,
|
|
@@ -3030,27 +4199,27 @@ var TERMINATOR_PATTERNS = [
|
|
|
3030
4199
|
];
|
|
3031
4200
|
var TAIL_START_FRACTION = 0.8;
|
|
3032
4201
|
var MAX_TERMINATOR_BLOCK_LENGTH = 500;
|
|
3033
|
-
var
|
|
4202
|
+
var BLOCK_TAGS3 = /* @__PURE__ */ new Set(["p", "div", "section", "footer", "aside", "h1", "h2", "h3", "h4", "h5", "h6", "ul", "ol"]);
|
|
3034
4203
|
var isTerminatorBlock = (element3, start, tailStart) => {
|
|
3035
|
-
if (!
|
|
4204
|
+
if (!BLOCK_TAGS3.has(element3.tagName) || start < tailStart) {
|
|
3036
4205
|
return false;
|
|
3037
4206
|
}
|
|
3038
|
-
const text6 =
|
|
4207
|
+
const text6 = textOf2(element3).replace(/\s+/g, " ").trim();
|
|
3039
4208
|
if (text6.length === 0 || text6.length > MAX_TERMINATOR_BLOCK_LENGTH) {
|
|
3040
4209
|
return false;
|
|
3041
4210
|
}
|
|
3042
4211
|
return TERMINATOR_PATTERNS.some((pattern) => pattern.test(text6));
|
|
3043
4212
|
};
|
|
3044
|
-
var
|
|
4213
|
+
var textOf2 = (node) => {
|
|
3045
4214
|
if (node.type === "text") {
|
|
3046
4215
|
return node.value;
|
|
3047
4216
|
}
|
|
3048
|
-
if (!
|
|
4217
|
+
if (!isParent2(node)) {
|
|
3049
4218
|
return "";
|
|
3050
4219
|
}
|
|
3051
4220
|
let text6 = "";
|
|
3052
4221
|
for (const child of node.children) {
|
|
3053
|
-
text6 +=
|
|
4222
|
+
text6 += textOf2(child);
|
|
3054
4223
|
}
|
|
3055
4224
|
return text6;
|
|
3056
4225
|
};
|
|
@@ -3063,7 +4232,7 @@ var truncateTrailingBoilerplate = (tree) => {
|
|
|
3063
4232
|
total += node.value.trim().length;
|
|
3064
4233
|
return;
|
|
3065
4234
|
}
|
|
3066
|
-
if (
|
|
4235
|
+
if (isParent2(node)) {
|
|
3067
4236
|
for (const child of node.children) {
|
|
3068
4237
|
measure(child);
|
|
3069
4238
|
}
|
|
@@ -3076,7 +4245,7 @@ var truncateTrailingBoilerplate = (tree) => {
|
|
|
3076
4245
|
const tailStart = total * TAIL_START_FRACTION;
|
|
3077
4246
|
let cutoff = -1;
|
|
3078
4247
|
const find = (node) => {
|
|
3079
|
-
if (cutoff !== -1 || !
|
|
4248
|
+
if (cutoff !== -1 || !isParent2(node)) {
|
|
3080
4249
|
return;
|
|
3081
4250
|
}
|
|
3082
4251
|
for (const child of node.children) {
|
|
@@ -3116,6 +4285,7 @@ var truncateTrailingBoilerplate = (tree) => {
|
|
|
3116
4285
|
|
|
3117
4286
|
// src/extractors/presets/takumi.ts
|
|
3118
4287
|
var MIN_RETAINED_FRACTION = 0.25;
|
|
4288
|
+
var FURNITURE_LINK_DENSITY = 0.5;
|
|
3119
4289
|
var SEMANTIC_SELECTORS = [
|
|
3120
4290
|
(element3) => stringProperty(element3, "itemprop")?.includes("articleBody") ?? false,
|
|
3121
4291
|
(element3) => element3.tagName === "article",
|
|
@@ -3153,6 +4323,31 @@ var collectMatching = (tree, matches, into) => {
|
|
|
3153
4323
|
}
|
|
3154
4324
|
}
|
|
3155
4325
|
};
|
|
4326
|
+
var containsTag = (element3, tagName) => element3.children.some((child) => isElement(child) && (child.tagName === tagName || containsTag(child, tagName)));
|
|
4327
|
+
var removesEveryTitle = (root, doomed) => {
|
|
4328
|
+
if (!doomed.some((element3) => containsTag(element3, "h1"))) {
|
|
4329
|
+
return false;
|
|
4330
|
+
}
|
|
4331
|
+
const doomedSet = new Set(doomed);
|
|
4332
|
+
let survivor = false;
|
|
4333
|
+
const visit = (node) => {
|
|
4334
|
+
if (survivor || !("children" in node)) {
|
|
4335
|
+
return;
|
|
4336
|
+
}
|
|
4337
|
+
for (const child of node.children) {
|
|
4338
|
+
if (!isElement(child) || doomedSet.has(child)) {
|
|
4339
|
+
continue;
|
|
4340
|
+
}
|
|
4341
|
+
if (child.tagName === "h1") {
|
|
4342
|
+
survivor = true;
|
|
4343
|
+
return;
|
|
4344
|
+
}
|
|
4345
|
+
visit(child);
|
|
4346
|
+
}
|
|
4347
|
+
};
|
|
4348
|
+
visit(root);
|
|
4349
|
+
return !survivor;
|
|
4350
|
+
};
|
|
3156
4351
|
var asRootOf = (nodes) => ({ type: "root", children: nodes });
|
|
3157
4352
|
var scoredSelection = (tree, collector, lang) => {
|
|
3158
4353
|
const context = buildScoringContext(tree, collector, lang);
|
|
@@ -3179,9 +4374,14 @@ var takumiExtractor = (params) => {
|
|
|
3179
4374
|
const shortcut = semanticShortcut(body, collector, minLength);
|
|
3180
4375
|
const searchRoot = shortcut ?? body;
|
|
3181
4376
|
const searchText = collector.textLength(searchRoot);
|
|
3182
|
-
|
|
3183
|
-
const
|
|
3184
|
-
|
|
4377
|
+
let doomed = findUnlikelyElements(searchRoot);
|
|
4378
|
+
const textOf3 = (elements) => elements.reduce((sum, element3) => sum + collector.metrics(element3).text, 0);
|
|
4379
|
+
let acceptable = searchText - textOf3(doomed) > Math.max(minLength, searchText * MIN_RETAINED_FRACTION);
|
|
4380
|
+
if (!acceptable) {
|
|
4381
|
+
doomed = findUnlikelyElements(searchRoot, (element3) => collector.linkDensity(element3) < FURNITURE_LINK_DENSITY);
|
|
4382
|
+
acceptable = doomed.length > 0 && searchText - textOf3(doomed) >= minLength && !removesEveryTitle(searchRoot, doomed);
|
|
4383
|
+
}
|
|
4384
|
+
if (acceptable) {
|
|
3185
4385
|
const doomedSet = new Set(doomed);
|
|
3186
4386
|
pruneInPlace(searchRoot, (node) => !(isElement(node) && doomedSet.has(node)));
|
|
3187
4387
|
collector = new MetricsCollector();
|
|
@@ -3204,9 +4404,251 @@ var takumiExtractor = (params) => {
|
|
|
3204
4404
|
return cleanContent(chosen, cleanupCollector);
|
|
3205
4405
|
};
|
|
3206
4406
|
|
|
4407
|
+
// src/extractors/lib/takumi-signal.ts
|
|
4408
|
+
var MARK = "dataWebforaiIndex";
|
|
4409
|
+
var cloneElements = (root) => {
|
|
4410
|
+
const copyOf = (node) => "children" in node ? {
|
|
4411
|
+
...node,
|
|
4412
|
+
...isElement(node) ? { properties: { ...node.properties } } : {},
|
|
4413
|
+
children: [...node.children]
|
|
4414
|
+
} : node;
|
|
4415
|
+
const copy = copyOf(root);
|
|
4416
|
+
const stack = [copy];
|
|
4417
|
+
while (stack.length > 0) {
|
|
4418
|
+
const parent = stack.pop();
|
|
4419
|
+
if (!("children" in parent)) {
|
|
4420
|
+
continue;
|
|
4421
|
+
}
|
|
4422
|
+
const children = parent.children;
|
|
4423
|
+
for (let index = 0; index < children.length; index++) {
|
|
4424
|
+
if ("children" in children[index]) {
|
|
4425
|
+
children[index] = copyOf(children[index]);
|
|
4426
|
+
stack.push(children[index]);
|
|
4427
|
+
}
|
|
4428
|
+
}
|
|
4429
|
+
}
|
|
4430
|
+
return copy;
|
|
4431
|
+
};
|
|
4432
|
+
var takumiSelection = (root, lang, url) => {
|
|
4433
|
+
const elements = [];
|
|
4434
|
+
walk(root, (node) => {
|
|
4435
|
+
if (isElement(node)) {
|
|
4436
|
+
node.properties[MARK] = elements.length;
|
|
4437
|
+
elements.push(node);
|
|
4438
|
+
}
|
|
4439
|
+
});
|
|
4440
|
+
const copy = cloneElements(root);
|
|
4441
|
+
for (const element3 of elements) {
|
|
4442
|
+
delete element3.properties[MARK];
|
|
4443
|
+
}
|
|
4444
|
+
const kept = /* @__PURE__ */ new Set();
|
|
4445
|
+
walk(takumiExtractor({ hast: copy, lang, url, owned: true }), (node) => {
|
|
4446
|
+
if (isElement(node)) {
|
|
4447
|
+
const index = node.properties[MARK];
|
|
4448
|
+
if (typeof index === "number" && elements[index]) {
|
|
4449
|
+
kept.add(elements[index]);
|
|
4450
|
+
}
|
|
4451
|
+
}
|
|
4452
|
+
});
|
|
4453
|
+
return kept;
|
|
4454
|
+
};
|
|
4455
|
+
|
|
4456
|
+
// src/extractors/presets/kiwame.ts
|
|
4457
|
+
var DEFAULT_THRESHOLD = 0.47;
|
|
4458
|
+
var findBody2 = (hast) => findElement(hast, (element3) => element3.tagName === "body") ?? hast;
|
|
4459
|
+
var completeTables = (kept, blocks) => {
|
|
4460
|
+
const rows = /* @__PURE__ */ new Set();
|
|
4461
|
+
const tables = /* @__PURE__ */ new Set();
|
|
4462
|
+
for (const block of blocks) {
|
|
4463
|
+
if (!kept.has(block.owner)) {
|
|
4464
|
+
continue;
|
|
4465
|
+
}
|
|
4466
|
+
const { row, table } = enclosingTable(block.frame);
|
|
4467
|
+
if (row) {
|
|
4468
|
+
rows.add(row);
|
|
4469
|
+
}
|
|
4470
|
+
if (table) {
|
|
4471
|
+
tables.add(table);
|
|
4472
|
+
}
|
|
4473
|
+
}
|
|
4474
|
+
for (const table of tables) {
|
|
4475
|
+
const first = findElement(table, (element3) => element3.tagName === "tr");
|
|
4476
|
+
if (first) {
|
|
4477
|
+
rows.add(first);
|
|
4478
|
+
}
|
|
4479
|
+
}
|
|
4480
|
+
for (const block of blocks) {
|
|
4481
|
+
const { row } = enclosingTable(block.frame);
|
|
4482
|
+
if (row && rows.has(row)) {
|
|
4483
|
+
kept.add(block.owner);
|
|
4484
|
+
}
|
|
4485
|
+
}
|
|
4486
|
+
};
|
|
4487
|
+
var enclosingTable = (start) => {
|
|
4488
|
+
let row;
|
|
4489
|
+
for (let frame = start; frame; frame = frame.parent) {
|
|
4490
|
+
const tag = frame.element.tagName;
|
|
4491
|
+
if (tag === "tr" && !row) {
|
|
4492
|
+
row = frame.element;
|
|
4493
|
+
} else if (tag === "table") {
|
|
4494
|
+
return { row, table: frame.element };
|
|
4495
|
+
}
|
|
4496
|
+
}
|
|
4497
|
+
return { row };
|
|
4498
|
+
};
|
|
4499
|
+
var HEADING_LOOKAHEAD = 3;
|
|
4500
|
+
var keepSectionHeadings = (kept, blocks) => {
|
|
4501
|
+
let seenKept = false;
|
|
4502
|
+
for (let index = 0; index < blocks.length; index++) {
|
|
4503
|
+
const block = blocks[index];
|
|
4504
|
+
if (kept.has(block.owner)) {
|
|
4505
|
+
seenKept = true;
|
|
4506
|
+
continue;
|
|
4507
|
+
}
|
|
4508
|
+
if (!(seenKept && /^h[1-6]$/.test(block.owner.tagName))) {
|
|
4509
|
+
continue;
|
|
4510
|
+
}
|
|
4511
|
+
for (let next = index + 1; next < Math.min(blocks.length, index + 1 + HEADING_LOOKAHEAD); next++) {
|
|
4512
|
+
if (/^h[1-6]$/.test(blocks[next].owner.tagName)) {
|
|
4513
|
+
break;
|
|
4514
|
+
}
|
|
4515
|
+
if (kept.has(blocks[next].owner)) {
|
|
4516
|
+
kept.add(block.owner);
|
|
4517
|
+
break;
|
|
4518
|
+
}
|
|
4519
|
+
}
|
|
4520
|
+
}
|
|
4521
|
+
};
|
|
4522
|
+
var CODE_IN_CONTENT_THRESHOLD = 0.2;
|
|
4523
|
+
var CODE_CONTEXT = 6;
|
|
4524
|
+
var keepCodeInContent = (kept, blocks, probabilities) => {
|
|
4525
|
+
const keptIndex = blocks.map((block) => kept.has(block.owner));
|
|
4526
|
+
const near = (from, step) => {
|
|
4527
|
+
for (let distance = 1; distance <= CODE_CONTEXT; distance++) {
|
|
4528
|
+
const index = from + step * distance;
|
|
4529
|
+
if (index < 0 || index >= blocks.length) {
|
|
4530
|
+
return false;
|
|
4531
|
+
}
|
|
4532
|
+
if (keptIndex[index]) {
|
|
4533
|
+
return true;
|
|
4534
|
+
}
|
|
4535
|
+
}
|
|
4536
|
+
return false;
|
|
4537
|
+
};
|
|
4538
|
+
for (const block of blocks) {
|
|
4539
|
+
if (block.owner.tagName === "pre" && !keptIndex[block.index] && probabilities[block.index] >= CODE_IN_CONTENT_THRESHOLD && near(block.index, -1) && near(block.index, 1)) {
|
|
4540
|
+
kept.add(block.owner);
|
|
4541
|
+
}
|
|
4542
|
+
}
|
|
4543
|
+
};
|
|
4544
|
+
var listOf = (block) => {
|
|
4545
|
+
if (block.owner.tagName !== "li") {
|
|
4546
|
+
return void 0;
|
|
4547
|
+
}
|
|
4548
|
+
for (let frame = block.frame.parent; frame; frame = frame.parent) {
|
|
4549
|
+
const tag = frame.element.tagName;
|
|
4550
|
+
if (tag === "ul" || tag === "ol") {
|
|
4551
|
+
return frame.element;
|
|
4552
|
+
}
|
|
4553
|
+
}
|
|
4554
|
+
return void 0;
|
|
4555
|
+
};
|
|
4556
|
+
var keepAuthoredLists = (kept, blocks) => {
|
|
4557
|
+
let seenKept = false;
|
|
4558
|
+
for (let index = 0; index < blocks.length - 1; index++) {
|
|
4559
|
+
const block = blocks[index];
|
|
4560
|
+
const introducesList = kept.has(block.owner) && /[::]\s*$/.test(block.text) || seenKept && /^h[1-6]$/.test(block.owner.tagName) && REFERENCE_HEADING.test(block.text.trim());
|
|
4561
|
+
seenKept ||= kept.has(block.owner);
|
|
4562
|
+
const list = listOf(blocks[index + 1]);
|
|
4563
|
+
if (!(introducesList && list)) {
|
|
4564
|
+
continue;
|
|
4565
|
+
}
|
|
4566
|
+
kept.add(block.owner);
|
|
4567
|
+
for (let next = index + 1; next < blocks.length && listOf(blocks[next]) === list; next++) {
|
|
4568
|
+
kept.add(blocks[next].owner);
|
|
4569
|
+
}
|
|
4570
|
+
}
|
|
4571
|
+
};
|
|
4572
|
+
var pruneToBlocks = (element3, kept, ownerKept) => {
|
|
4573
|
+
const isBlock = element3.type === "element" && (BLOCK_TAGS2.has(element3.tagName) || element3.tagName === "pre");
|
|
4574
|
+
const selfKept = isBlock ? kept.has(element3) : ownerKept;
|
|
4575
|
+
if (element3.type === "element" && element3.tagName === "pre") {
|
|
4576
|
+
return selfKept;
|
|
4577
|
+
}
|
|
4578
|
+
let keepChildren = false;
|
|
4579
|
+
const children = [];
|
|
4580
|
+
for (const child of element3.children) {
|
|
4581
|
+
if (child.type === "element") {
|
|
4582
|
+
if (pruneToBlocks(child, kept, selfKept)) {
|
|
4583
|
+
children.push(child);
|
|
4584
|
+
keepChildren = true;
|
|
4585
|
+
}
|
|
4586
|
+
} else if (child.type === "text") {
|
|
4587
|
+
if (selfKept) {
|
|
4588
|
+
children.push(child);
|
|
4589
|
+
}
|
|
4590
|
+
} else {
|
|
4591
|
+
children.push(child);
|
|
4592
|
+
}
|
|
4593
|
+
}
|
|
4594
|
+
element3.children = children;
|
|
4595
|
+
return selfKept || keepChildren;
|
|
4596
|
+
};
|
|
4597
|
+
var createKiwameExtractor = (options = {}) => {
|
|
4598
|
+
const { threshold = DEFAULT_THRESHOLD, model = BLOCK_MODEL, cleanup = true } = options;
|
|
4599
|
+
const stackModel = options.stackModel === void 0 ? BLOCK_STACK_MODEL : options.stackModel;
|
|
4600
|
+
const usable = isUsableModel(model);
|
|
4601
|
+
const stackUsable = stackModel ? isUsableModel(stackModel, STACKED_FEATURE_COUNT) : false;
|
|
4602
|
+
return (params) => {
|
|
4603
|
+
if (!usable) {
|
|
4604
|
+
return takumiExtractor(params);
|
|
4605
|
+
}
|
|
4606
|
+
const { hast, lang, owned } = params;
|
|
4607
|
+
const body = owned ? findBody2(hast) : cloneHast(findBody2(hast));
|
|
4608
|
+
stripNonContent(body);
|
|
4609
|
+
const blocks = segmentBlocks(body);
|
|
4610
|
+
if (blocks.length === 0 || !(isElement(body) || body.type === "root")) {
|
|
4611
|
+
return body;
|
|
4612
|
+
}
|
|
4613
|
+
const collector = new MetricsCollector();
|
|
4614
|
+
const takumiKept = takumiSelection(body, lang, params.url);
|
|
4615
|
+
const features = blockFeatures({ root: body, blocks, collector, lang, takumiKept });
|
|
4616
|
+
let probabilities = scoreBlocks(features, blocks.length, model, FEATURE_COUNT);
|
|
4617
|
+
if (stackModel && stackUsable) {
|
|
4618
|
+
const stacked = stackedFeatures(blocks, features, probabilities);
|
|
4619
|
+
probabilities = scoreBlocks(stacked, blocks.length, stackModel, STACKED_FEATURE_COUNT);
|
|
4620
|
+
}
|
|
4621
|
+
const kept = /* @__PURE__ */ new Set();
|
|
4622
|
+
for (const block of blocks) {
|
|
4623
|
+
if (probabilities[block.index] >= threshold) {
|
|
4624
|
+
kept.add(block.owner);
|
|
4625
|
+
}
|
|
4626
|
+
}
|
|
4627
|
+
if (kept.size === 0) {
|
|
4628
|
+
return takumiExtractor({ hast: body, lang, url: params.url, owned: true });
|
|
4629
|
+
}
|
|
4630
|
+
keepCodeInContent(kept, blocks, probabilities);
|
|
4631
|
+
keepSectionHeadings(kept, blocks);
|
|
4632
|
+
keepAuthoredLists(kept, blocks);
|
|
4633
|
+
completeTables(kept, blocks);
|
|
4634
|
+
pruneToBlocks(body, kept, false);
|
|
4635
|
+
unwrapLayoutTables(body);
|
|
4636
|
+
if (!cleanup) {
|
|
4637
|
+
return body;
|
|
4638
|
+
}
|
|
4639
|
+
walk(body, (node) => {
|
|
4640
|
+
if (isElement(node) && (node.tagName === "form" || node.tagName === "fieldset")) {
|
|
4641
|
+
node.tagName = "div";
|
|
4642
|
+
}
|
|
4643
|
+
});
|
|
4644
|
+
return cleanContent(body, new MetricsCollector());
|
|
4645
|
+
};
|
|
4646
|
+
};
|
|
4647
|
+
var kiwameExtractor = createKiwameExtractor();
|
|
4648
|
+
|
|
3207
4649
|
// src/extractors/presets/auto.ts
|
|
3208
4650
|
var createAutoExtractor = (options = {}) => {
|
|
3209
|
-
const { adapters } = options;
|
|
4651
|
+
const { adapters, fallback = kiwameExtractor } = options;
|
|
3210
4652
|
return (params) => {
|
|
3211
4653
|
if (adapters !== false) {
|
|
3212
4654
|
const extracted = runAdapters({ hast: params.hast, url: params.url, lang: params.lang }, adapters ?? void 0);
|
|
@@ -3214,7 +4656,7 @@ var createAutoExtractor = (options = {}) => {
|
|
|
3214
4656
|
return extracted;
|
|
3215
4657
|
}
|
|
3216
4658
|
}
|
|
3217
|
-
return
|
|
4659
|
+
return fallback(params);
|
|
3218
4660
|
};
|
|
3219
4661
|
};
|
|
3220
4662
|
var autoExtractor = createAutoExtractor();
|
|
@@ -3315,7 +4757,6 @@ var customAHandler = (options) => (state, node) => {
|
|
|
3315
4757
|
};
|
|
3316
4758
|
|
|
3317
4759
|
// src/mdast-handlers/custom-code-handler.ts
|
|
3318
|
-
import { toText } from "hast-util-to-text";
|
|
3319
4760
|
import { trimTrailingLines } from "trim-trailing-lines";
|
|
3320
4761
|
|
|
3321
4762
|
// src/utils/detect-code-lang.ts
|
|
@@ -3366,6 +4807,129 @@ var detectLanguage = (code) => {
|
|
|
3366
4807
|
).filter(([_, score]) => score > 20).sort((a, b) => b[1] - a[1])[0]?.[0] || "plain";
|
|
3367
4808
|
};
|
|
3368
4809
|
|
|
4810
|
+
// src/utils/pre-text.ts
|
|
4811
|
+
var LINE_BLOCK_TAGS = /* @__PURE__ */ new Set([
|
|
4812
|
+
"address",
|
|
4813
|
+
"article",
|
|
4814
|
+
"aside",
|
|
4815
|
+
"blockquote",
|
|
4816
|
+
"dd",
|
|
4817
|
+
"div",
|
|
4818
|
+
"dl",
|
|
4819
|
+
"dt",
|
|
4820
|
+
"figcaption",
|
|
4821
|
+
"figure",
|
|
4822
|
+
"footer",
|
|
4823
|
+
"form",
|
|
4824
|
+
"h1",
|
|
4825
|
+
"h2",
|
|
4826
|
+
"h3",
|
|
4827
|
+
"h4",
|
|
4828
|
+
"h5",
|
|
4829
|
+
"h6",
|
|
4830
|
+
"header",
|
|
4831
|
+
"hr",
|
|
4832
|
+
"li",
|
|
4833
|
+
"main",
|
|
4834
|
+
"nav",
|
|
4835
|
+
"ol",
|
|
4836
|
+
"p",
|
|
4837
|
+
"pre",
|
|
4838
|
+
"section",
|
|
4839
|
+
"table",
|
|
4840
|
+
"tr",
|
|
4841
|
+
"ul"
|
|
4842
|
+
]);
|
|
4843
|
+
var INLINE_CONTEXT_TAGS = /* @__PURE__ */ new Set(["span", "a", "b", "i", "em", "strong", "mark", "small", "u", "s", "label"]);
|
|
4844
|
+
var preText = (node) => {
|
|
4845
|
+
let out = "";
|
|
4846
|
+
const ensureLineStart = () => {
|
|
4847
|
+
if (out.length > 0 && out.charCodeAt(out.length - 1) !== 10) {
|
|
4848
|
+
out += "\n";
|
|
4849
|
+
}
|
|
4850
|
+
};
|
|
4851
|
+
const visitChildren = (parent, inline) => {
|
|
4852
|
+
let cells = 0;
|
|
4853
|
+
for (const child of parent.children) {
|
|
4854
|
+
const isCell = child.type === "element" && (child.tagName === "td" || child.tagName === "th");
|
|
4855
|
+
visit(child, isCell ? cells++ : 0, inline);
|
|
4856
|
+
}
|
|
4857
|
+
};
|
|
4858
|
+
const visitElement = (element3, cellIndex, inline) => {
|
|
4859
|
+
const tag = element3.tagName;
|
|
4860
|
+
if (tag === "br") {
|
|
4861
|
+
out += "\n";
|
|
4862
|
+
return;
|
|
4863
|
+
}
|
|
4864
|
+
if (cellIndex > 0) {
|
|
4865
|
+
out += " ";
|
|
4866
|
+
}
|
|
4867
|
+
const block = !inline && LINE_BLOCK_TAGS.has(tag);
|
|
4868
|
+
if (block) {
|
|
4869
|
+
ensureLineStart();
|
|
4870
|
+
}
|
|
4871
|
+
visitChildren(element3, inline || INLINE_CONTEXT_TAGS.has(tag));
|
|
4872
|
+
if (block) {
|
|
4873
|
+
ensureLineStart();
|
|
4874
|
+
}
|
|
4875
|
+
};
|
|
4876
|
+
const visit = (current, cellIndex, inline) => {
|
|
4877
|
+
if (current.type === "text") {
|
|
4878
|
+
out += current.value;
|
|
4879
|
+
} else if (current.type === "element") {
|
|
4880
|
+
visitElement(current, cellIndex, inline);
|
|
4881
|
+
} else if (current.type === "root") {
|
|
4882
|
+
visitChildren(current, inline);
|
|
4883
|
+
}
|
|
4884
|
+
};
|
|
4885
|
+
visit(node, 0, false);
|
|
4886
|
+
return out;
|
|
4887
|
+
};
|
|
4888
|
+
|
|
4889
|
+
// src/mdast-handlers/twoslash.ts
|
|
4890
|
+
var cleanTwoslash = (pre) => {
|
|
4891
|
+
if (!classList(pre).includes("twoslash")) {
|
|
4892
|
+
return void 0;
|
|
4893
|
+
}
|
|
4894
|
+
let language;
|
|
4895
|
+
const clean2 = (element3) => {
|
|
4896
|
+
element3.children = element3.children.flatMap((child) => {
|
|
4897
|
+
if (!isElement(child)) {
|
|
4898
|
+
return [child];
|
|
4899
|
+
}
|
|
4900
|
+
const classes = classList(child);
|
|
4901
|
+
if (classes.includes("language-id")) {
|
|
4902
|
+
language ||= preText(child).trim() || void 0;
|
|
4903
|
+
return [];
|
|
4904
|
+
}
|
|
4905
|
+
if (classes.includes("playground-link") || classes.includes("error-behind")) {
|
|
4906
|
+
return [];
|
|
4907
|
+
}
|
|
4908
|
+
if (classes.includes("error")) {
|
|
4909
|
+
return [errorLine(child)];
|
|
4910
|
+
}
|
|
4911
|
+
clean2(child);
|
|
4912
|
+
return [child];
|
|
4913
|
+
});
|
|
4914
|
+
};
|
|
4915
|
+
clean2(pre);
|
|
4916
|
+
return language && /^[\w+#.-]+$/.test(language) ? language : void 0;
|
|
4917
|
+
};
|
|
4918
|
+
var errorLine = (error) => {
|
|
4919
|
+
let code = "";
|
|
4920
|
+
let message = "";
|
|
4921
|
+
for (const child of error.children) {
|
|
4922
|
+
if (isElement(child) && classList(child).includes("code")) {
|
|
4923
|
+
code = preText(child).trim();
|
|
4924
|
+
} else {
|
|
4925
|
+
message += isElement(child) ? preText(child) : child.type === "text" ? child.value : "";
|
|
4926
|
+
}
|
|
4927
|
+
}
|
|
4928
|
+
const prefix = /^\d+$/.test(code) ? `error TS${code}: ` : "error: ";
|
|
4929
|
+
const lines = `${prefix}${message.trim()}`.split("\n").map((line) => `// ${line}`);
|
|
4930
|
+
return { type: "element", tagName: "div", properties: {}, children: [{ type: "text", value: lines.join("\n") }] };
|
|
4931
|
+
};
|
|
4932
|
+
|
|
3369
4933
|
// src/mdast-handlers/custom-code-handler.ts
|
|
3370
4934
|
var LANGUAGE_MATCH_REGEX = [/^language-(\S+)$/, /^highlight-source-(\S+)$/, /^CodeBlock--language-(\S+)$/];
|
|
3371
4935
|
var LANGUAGE_ATTRIBUTES = ["dataLanguage", "dataLang"];
|
|
@@ -3379,12 +4943,21 @@ var attributeLanguage = (element3) => {
|
|
|
3379
4943
|
return void 0;
|
|
3380
4944
|
};
|
|
3381
4945
|
var codeLanguage = (...elements) => elements.flatMap(classList).map((className) => LANGUAGE_MATCH_REGEX.map((regex) => className.match(regex)).find(Boolean)?.[1]).find(Boolean) ?? elements.map(attributeLanguage).find(Boolean);
|
|
4946
|
+
var codeMeta = (pre) => {
|
|
4947
|
+
const title = pre.properties?.dataTitle;
|
|
4948
|
+
if (typeof title !== "string") {
|
|
4949
|
+
return null;
|
|
4950
|
+
}
|
|
4951
|
+
const clean2 = title.replace(/["\r\n]+/g, " ").trim();
|
|
4952
|
+
return clean2 ? `title="${clean2}"` : null;
|
|
4953
|
+
};
|
|
3382
4954
|
var customCodeHandler = (state, node) => {
|
|
4955
|
+
const twoslashLang = cleanTwoslash(node);
|
|
3383
4956
|
const code = node.children.find((child) => isElement(child) && child.tagName === "code");
|
|
3384
|
-
const codeValue = trimTrailingLines(
|
|
3385
|
-
const classLang = codeLanguage(...isElement(code) ? [code, node] : [node]);
|
|
4957
|
+
const codeValue = trimTrailingLines(preText(node));
|
|
4958
|
+
const classLang = twoslashLang || codeLanguage(...isElement(code) ? [code, node] : [node]);
|
|
3386
4959
|
const lang = classLang || detectLanguage(codeValue) || null;
|
|
3387
|
-
const result = { type: "code", lang, meta:
|
|
4960
|
+
const result = { type: "code", lang, meta: codeMeta(node), value: codeValue };
|
|
3388
4961
|
state.patch(node, result);
|
|
3389
4962
|
return result;
|
|
3390
4963
|
};
|
|
@@ -3393,7 +4966,6 @@ var customCodeHandler = (state, node) => {
|
|
|
3393
4966
|
import { select as select5 } from "hast-util-select";
|
|
3394
4967
|
import { defaultHandlers as defaultHandlers2 } from "hast-util-to-mdast";
|
|
3395
4968
|
import { toString as hastToString2 } from "hast-util-to-string";
|
|
3396
|
-
import { toText as toText2 } from "hast-util-to-text";
|
|
3397
4969
|
import { trimTrailingLines as trimTrailingLines2 } from "trim-trailing-lines";
|
|
3398
4970
|
var CODE_BLOCK_REGEX = /highlight-source|language-|codegroup|codeblock|code-block/i;
|
|
3399
4971
|
var CODE_FILENAME_SELECTORS = "[class*='fileName'],[class*='fileName'],[class*='title'],[class*='Title']";
|
|
@@ -3405,13 +4977,13 @@ var customDivHandler = (state, node) => {
|
|
|
3405
4977
|
const codeBlocks = collectElements(node, (element3) => element3.tagName === "pre");
|
|
3406
4978
|
const codeBlock = codeBlocks.length === 1 ? codeBlocks[0] : void 0;
|
|
3407
4979
|
if (codeBlock) {
|
|
3408
|
-
const codeValue = trimTrailingLines2(
|
|
4980
|
+
const codeValue = trimTrailingLines2(preText(codeBlock));
|
|
3409
4981
|
const filenameElement = select5(CODE_FILENAME_SELECTORS, node);
|
|
3410
4982
|
const fileLang = filenameElement ? hastToString2(filenameElement).match(/\.(\w+)$/)?.[1] : null;
|
|
3411
4983
|
const code = codeBlock.children.find((child) => isElement(child) && child.tagName === "code");
|
|
3412
4984
|
const classLang = codeLanguage(...isElement(code) ? [code, codeBlock, node] : [codeBlock, node]);
|
|
3413
4985
|
const lang = fileLang || classLang || detectLanguage(codeValue) || null;
|
|
3414
|
-
const result = { type: "code", lang, meta:
|
|
4986
|
+
const result = { type: "code", lang, meta: codeMeta(codeBlock), value: codeValue };
|
|
3415
4987
|
state.patch(node, result);
|
|
3416
4988
|
return result;
|
|
3417
4989
|
}
|
|
@@ -3431,11 +5003,20 @@ var hasNoUsableSource = (node) => {
|
|
|
3431
5003
|
}
|
|
3432
5004
|
return false;
|
|
3433
5005
|
};
|
|
5006
|
+
var PLACEHOLDER_FILE = /^(?:[\w-]*[-_.])?placeholder[\w-]*\.(?:gif|png|svg|webp|jpe?g)$|^(?:spacer|blank|transparent|pixel)\.(?:gif|png)$/i;
|
|
5007
|
+
var isUndescribedPlaceholder = (node) => {
|
|
5008
|
+
if (stringProperty(node, "alt")?.trim() || stringProperty(node, "title")?.trim()) {
|
|
5009
|
+
return false;
|
|
5010
|
+
}
|
|
5011
|
+
const src = stringProperty(node, "src") ?? "";
|
|
5012
|
+
const file = src.split(/[?#]/)[0].split("/").pop() ?? "";
|
|
5013
|
+
return PLACEHOLDER_FILE.test(file);
|
|
5014
|
+
};
|
|
3434
5015
|
var customImgHandler = (options) => (state, node) => {
|
|
3435
5016
|
if (options?.hideImage) {
|
|
3436
5017
|
return void 0;
|
|
3437
5018
|
}
|
|
3438
|
-
if (hasNoUsableSource(node)) {
|
|
5019
|
+
if (hasNoUsableSource(node) || isUndescribedPlaceholder(node)) {
|
|
3439
5020
|
return void 0;
|
|
3440
5021
|
}
|
|
3441
5022
|
const image = defaultHandlers3.image(state, node);
|
|
@@ -3450,7 +5031,175 @@ var customImgHandler = (options) => (state, node) => {
|
|
|
3450
5031
|
|
|
3451
5032
|
// src/mdast-handlers/custom-table-handler.ts
|
|
3452
5033
|
import { defaultHandlers as defaultHandlers4 } from "hast-util-to-mdast";
|
|
3453
|
-
import { toText
|
|
5034
|
+
import { toText } from "hast-util-to-text";
|
|
5035
|
+
|
|
5036
|
+
// src/mdast-handlers/table-cell-flatten.ts
|
|
5037
|
+
var PHRASING_TYPES = /* @__PURE__ */ new Set([
|
|
5038
|
+
"text",
|
|
5039
|
+
"emphasis",
|
|
5040
|
+
"strong",
|
|
5041
|
+
"delete",
|
|
5042
|
+
"inlineCode",
|
|
5043
|
+
"link",
|
|
5044
|
+
"linkReference",
|
|
5045
|
+
"image",
|
|
5046
|
+
"imageReference",
|
|
5047
|
+
"html",
|
|
5048
|
+
"footnoteReference",
|
|
5049
|
+
"inlineMath"
|
|
5050
|
+
]);
|
|
5051
|
+
var PHRASING_PARENTS = /* @__PURE__ */ new Set(["emphasis", "strong", "delete", "link", "linkReference"]);
|
|
5052
|
+
var lineBreak = () => ({ type: "html", value: "<br>" });
|
|
5053
|
+
var needsFlattening = (nodes) => nodes.some((node) => {
|
|
5054
|
+
if (node.type === "break") {
|
|
5055
|
+
return true;
|
|
5056
|
+
}
|
|
5057
|
+
if (!PHRASING_TYPES.has(node.type)) {
|
|
5058
|
+
return true;
|
|
5059
|
+
}
|
|
5060
|
+
if ((node.type === "text" || node.type === "inlineCode") && node.value.includes("\n")) {
|
|
5061
|
+
return true;
|
|
5062
|
+
}
|
|
5063
|
+
return PHRASING_PARENTS.has(node.type) && "children" in node && needsFlattening(node.children);
|
|
5064
|
+
});
|
|
5065
|
+
var CellBuilder = class _CellBuilder {
|
|
5066
|
+
constructor() {
|
|
5067
|
+
this.out = [];
|
|
5068
|
+
this.#pendingBlock = false;
|
|
5069
|
+
}
|
|
5070
|
+
#pendingBlock;
|
|
5071
|
+
/** Starts a new visual line when the previous block left content on the current one. */
|
|
5072
|
+
block() {
|
|
5073
|
+
const last = this.out.at(-1);
|
|
5074
|
+
if (this.#pendingBlock && last && !(last.type === "html" && last.value === "<br>")) {
|
|
5075
|
+
this.out.push(lineBreak());
|
|
5076
|
+
}
|
|
5077
|
+
this.#pendingBlock = true;
|
|
5078
|
+
}
|
|
5079
|
+
add(nodes) {
|
|
5080
|
+
for (const node of nodes) {
|
|
5081
|
+
this.#addOne(node);
|
|
5082
|
+
}
|
|
5083
|
+
}
|
|
5084
|
+
#addOne(node) {
|
|
5085
|
+
switch (node.type) {
|
|
5086
|
+
case "break":
|
|
5087
|
+
this.out.push(lineBreak());
|
|
5088
|
+
return;
|
|
5089
|
+
case "text":
|
|
5090
|
+
this.out.push({ type: "text", value: node.value.replace(/\s*\n\s*/g, " ") });
|
|
5091
|
+
return;
|
|
5092
|
+
case "inlineCode":
|
|
5093
|
+
this.#codeLines(node.value);
|
|
5094
|
+
return;
|
|
5095
|
+
case "code":
|
|
5096
|
+
this.block();
|
|
5097
|
+
this.#codeLines(node.value);
|
|
5098
|
+
return;
|
|
5099
|
+
case "math":
|
|
5100
|
+
this.block();
|
|
5101
|
+
this.out.push({ type: "inlineMath", value: node.value.replace(/\s*\n\s*/g, " ") });
|
|
5102
|
+
return;
|
|
5103
|
+
case "list":
|
|
5104
|
+
node.children.forEach((item, index) => {
|
|
5105
|
+
this.block();
|
|
5106
|
+
const marker = node.ordered ? `${(node.start ?? 1) + index}. ` : "- ";
|
|
5107
|
+
this.out.push({ type: "text", value: marker });
|
|
5108
|
+
this.#pendingBlock = false;
|
|
5109
|
+
this.add(item.children);
|
|
5110
|
+
});
|
|
5111
|
+
return;
|
|
5112
|
+
case "thematicBreak":
|
|
5113
|
+
return;
|
|
5114
|
+
default:
|
|
5115
|
+
this.#addContainer(node);
|
|
5116
|
+
}
|
|
5117
|
+
}
|
|
5118
|
+
#addContainer(node) {
|
|
5119
|
+
if (PHRASING_PARENTS.has(node.type) && "children" in node) {
|
|
5120
|
+
const inner = new _CellBuilder();
|
|
5121
|
+
inner.add(node.children);
|
|
5122
|
+
this.out.push({ ...node, children: inner.out });
|
|
5123
|
+
return;
|
|
5124
|
+
}
|
|
5125
|
+
if (PHRASING_TYPES.has(node.type)) {
|
|
5126
|
+
this.out.push(node);
|
|
5127
|
+
return;
|
|
5128
|
+
}
|
|
5129
|
+
if ("children" in node) {
|
|
5130
|
+
this.block();
|
|
5131
|
+
this.add(node.children);
|
|
5132
|
+
}
|
|
5133
|
+
}
|
|
5134
|
+
#codeLines(value) {
|
|
5135
|
+
value.split("\n").forEach((line, index) => {
|
|
5136
|
+
if (index > 0) {
|
|
5137
|
+
this.out.push(lineBreak());
|
|
5138
|
+
}
|
|
5139
|
+
if (line.trim().length > 0) {
|
|
5140
|
+
this.out.push({ type: "inlineCode", value: line });
|
|
5141
|
+
}
|
|
5142
|
+
});
|
|
5143
|
+
}
|
|
5144
|
+
};
|
|
5145
|
+
var flattenTableCells = (table) => {
|
|
5146
|
+
for (const row of table.children) {
|
|
5147
|
+
for (const cell of row.children) {
|
|
5148
|
+
if (!needsFlattening(cell.children)) {
|
|
5149
|
+
continue;
|
|
5150
|
+
}
|
|
5151
|
+
const builder = new CellBuilder();
|
|
5152
|
+
builder.add(cell.children);
|
|
5153
|
+
cell.children = builder.out;
|
|
5154
|
+
}
|
|
5155
|
+
}
|
|
5156
|
+
};
|
|
5157
|
+
var hasMultilineCode = (nodes) => nodes.some(
|
|
5158
|
+
(node) => node.type === "code" && node.value.includes("\n") || "children" in node && hasMultilineCode(node.children)
|
|
5159
|
+
);
|
|
5160
|
+
var tableHasCodeSamples = (table) => table.children.some((row) => row.children.some((cell) => hasMultilineCode(cell.children)));
|
|
5161
|
+
var unfoldTable = (table, hasHeader) => {
|
|
5162
|
+
const [first, ...rest] = table.children;
|
|
5163
|
+
const labelled = hasHeader && rest.length > 0;
|
|
5164
|
+
const labels = labelled && first ? first.children.map((cell) => cell.children) : [];
|
|
5165
|
+
const rows = labelled ? rest : table.children;
|
|
5166
|
+
const out = [];
|
|
5167
|
+
rows.forEach((row, rowIndex) => {
|
|
5168
|
+
if (rowIndex > 0) {
|
|
5169
|
+
out.push({ type: "thematicBreak" });
|
|
5170
|
+
}
|
|
5171
|
+
row.children.forEach((cell, cellIndex) => {
|
|
5172
|
+
const label = labels[cellIndex];
|
|
5173
|
+
if (label && label.length > 0) {
|
|
5174
|
+
out.push({ type: "paragraph", children: [{ type: "strong", children: label }] });
|
|
5175
|
+
}
|
|
5176
|
+
out.push(...asBlocks(cell.children));
|
|
5177
|
+
});
|
|
5178
|
+
});
|
|
5179
|
+
return out;
|
|
5180
|
+
};
|
|
5181
|
+
var asBlocks = (nodes) => {
|
|
5182
|
+
const blocks = [];
|
|
5183
|
+
let run = [];
|
|
5184
|
+
const flush = () => {
|
|
5185
|
+
if (run.some((node) => node.type !== "text" || node.value.trim().length > 0)) {
|
|
5186
|
+
blocks.push({ type: "paragraph", children: run });
|
|
5187
|
+
}
|
|
5188
|
+
run = [];
|
|
5189
|
+
};
|
|
5190
|
+
for (const node of nodes) {
|
|
5191
|
+
if (PHRASING_TYPES.has(node.type) || node.type === "break") {
|
|
5192
|
+
run.push(node);
|
|
5193
|
+
} else {
|
|
5194
|
+
flush();
|
|
5195
|
+
blocks.push(node);
|
|
5196
|
+
}
|
|
5197
|
+
}
|
|
5198
|
+
flush();
|
|
5199
|
+
return blocks;
|
|
5200
|
+
};
|
|
5201
|
+
|
|
5202
|
+
// src/mdast-handlers/custom-table-handler.ts
|
|
3454
5203
|
var MAX_SPAN = 1e3;
|
|
3455
5204
|
var clampSpans = (node) => {
|
|
3456
5205
|
walk(node, (candidate) => {
|
|
@@ -3465,14 +5214,30 @@ var clampSpans = (node) => {
|
|
|
3465
5214
|
}
|
|
3466
5215
|
});
|
|
3467
5216
|
};
|
|
5217
|
+
var startsWithHeaderRow = (table) => {
|
|
5218
|
+
const row = findElement(table, (element3) => element3.tagName === "tr");
|
|
5219
|
+
if (!row) {
|
|
5220
|
+
return false;
|
|
5221
|
+
}
|
|
5222
|
+
const cells = row.children.filter(isElement);
|
|
5223
|
+
return cells.length > 0 && cells.every((cell) => cell.tagName === "th");
|
|
5224
|
+
};
|
|
3468
5225
|
var customTableHandler = (options) => (state, node) => {
|
|
3469
5226
|
if (options?.asText) {
|
|
3470
|
-
const paragraph2 = { type: "paragraph", children: [{ type: "text", value:
|
|
5227
|
+
const paragraph2 = { type: "paragraph", children: [{ type: "text", value: toText(node) }] };
|
|
3471
5228
|
state.patch(node, paragraph2);
|
|
3472
5229
|
return paragraph2;
|
|
3473
5230
|
}
|
|
3474
5231
|
clampSpans(node);
|
|
3475
|
-
|
|
5232
|
+
const result = defaultHandlers4.table(state, node);
|
|
5233
|
+
if (!result || Array.isArray(result) || result.type !== "table") {
|
|
5234
|
+
return result;
|
|
5235
|
+
}
|
|
5236
|
+
if (tableHasCodeSamples(result)) {
|
|
5237
|
+
return unfoldTable(result, startsWithHeaderRow(node));
|
|
5238
|
+
}
|
|
5239
|
+
flattenTableCells(result);
|
|
5240
|
+
return result;
|
|
3476
5241
|
};
|
|
3477
5242
|
|
|
3478
5243
|
// src/mdast-handlers/definition-list-handler.ts
|
|
@@ -3781,7 +5546,7 @@ var getUrlFromHast = (node) => {
|
|
|
3781
5546
|
// src/html-to-mdast.ts
|
|
3782
5547
|
var htmlToMdast = (htmlOrHast, options) => {
|
|
3783
5548
|
const { extractors, url: defaultUrl, lang: defaultLang } = options || {};
|
|
3784
|
-
const [lang, hast] = typeof htmlOrHast === "string" ? [defaultLang || getLangFromStr(htmlOrHast),
|
|
5549
|
+
const [lang, hast] = typeof htmlOrHast === "string" ? [defaultLang || getLangFromStr(htmlOrHast), parseHtml(htmlOrHast, { fragment: true })] : [defaultLang || getLangFromHast(htmlOrHast), htmlOrHast];
|
|
3785
5550
|
const isOwned = typeof htmlOrHast === "string" || (options?.owned ?? false);
|
|
3786
5551
|
const url = defaultUrl || getUrlFromHast(hast);
|
|
3787
5552
|
const extractedHast = pipeExtractors({ hast: isOwned ? hast : cloneHast(hast), lang, url, owned: true }, extractors);
|
|
@@ -3942,9 +5707,10 @@ var readName = (value) => {
|
|
|
3942
5707
|
};
|
|
3943
5708
|
var asString = (value) => typeof value === "string" && value.length > 0 ? value : void 0;
|
|
3944
5709
|
var MAX_TITLE_LENGTH = 160;
|
|
3945
|
-
var
|
|
5710
|
+
var MAX_DOCUMENT_TITLE_LENGTH = 300;
|
|
5711
|
+
var asTitle = (value, maxLength = MAX_TITLE_LENGTH) => {
|
|
3946
5712
|
const cleaned = clean(value);
|
|
3947
|
-
return cleaned && cleaned.length <=
|
|
5713
|
+
return cleaned && cleaned.length <= maxLength ? cleaned : void 0;
|
|
3948
5714
|
};
|
|
3949
5715
|
var clean = (value) => {
|
|
3950
5716
|
if (value === void 0) {
|
|
@@ -4010,7 +5776,7 @@ var extractMetadata = (tree) => {
|
|
|
4010
5776
|
}
|
|
4011
5777
|
return void 0;
|
|
4012
5778
|
};
|
|
4013
|
-
const title = asTitle(get("og:title", "twitter:title")) ?? asTitle(asString(article?.headline)) ?? asTitle(asString(article?.name)) ?? asTitle(documentTitle(tree)) ?? asTitle(firstHeading2(tree));
|
|
5779
|
+
const title = asTitle(get("og:title", "twitter:title")) ?? asTitle(asString(article?.headline)) ?? asTitle(asString(article?.name)) ?? asTitle(documentTitle(tree), MAX_DOCUMENT_TITLE_LENGTH) ?? asTitle(firstHeading2(tree));
|
|
4014
5780
|
return {
|
|
4015
5781
|
title,
|
|
4016
5782
|
description: clean(get("og:description", "twitter:description", "description")) ?? clean(asString(article?.description)),
|
|
@@ -4045,7 +5811,7 @@ ${lines.join("\n")}
|
|
|
4045
5811
|
// src/html-to-markdown.ts
|
|
4046
5812
|
var htmlToMarkdownWithMetadata = (htmlOrHast, options) => {
|
|
4047
5813
|
const { baseUrl, frontmatter, title, formatting: toMarkdownOptions, ...toMdastOptions } = options || {};
|
|
4048
|
-
const hast = typeof htmlOrHast === "string" ?
|
|
5814
|
+
const hast = typeof htmlOrHast === "string" ? parseHtml(htmlOrHast, { fragment: true }) : htmlOrHast;
|
|
4049
5815
|
const isOwned = typeof htmlOrHast === "string";
|
|
4050
5816
|
const declaredLang = typeof htmlOrHast === "string" ? getLangFromStr(htmlOrHast) : void 0;
|
|
4051
5817
|
const metadata = extractMetadata(hast);
|
|
@@ -4059,10 +5825,54 @@ var htmlToMarkdownWithMetadata = (htmlOrHast, options) => {
|
|
|
4059
5825
|
url: toMdastOptions.url ?? metadata.canonicalUrl
|
|
4060
5826
|
});
|
|
4061
5827
|
const body = mdastToMarkdown(mdast, { baseUrl, ...toMarkdownOptions });
|
|
4062
|
-
const
|
|
5828
|
+
const pageUrl = toMdastOptions.url ?? metadata.canonicalUrl;
|
|
5829
|
+
const titled = title === false ? body : withTitle(body, headingTitle(metadata.title, metadata.siteName, pageUrl));
|
|
4063
5830
|
const markdown = frontmatter ? `${toFrontmatter(metadata)}${titled}` : titled;
|
|
4064
5831
|
return { markdown, metadata };
|
|
4065
5832
|
};
|
|
5833
|
+
var TITLE_SEPARATOR = /\s+[-|–—·•:]\s+|\s*[||]\s*/;
|
|
5834
|
+
var SITE_SECTION = /^(docs|documentation|blog|news|wiki|developers?|devblog|help|support|reference)$/;
|
|
5835
|
+
var compact = (value) => value.toLowerCase().replace(/[^\p{L}\p{N}]/gu, "");
|
|
5836
|
+
var siteNames = (siteName, url) => {
|
|
5837
|
+
const names = siteName ? siteName.split(TITLE_SEPARATOR).map(compact) : [];
|
|
5838
|
+
try {
|
|
5839
|
+
const labels = url ? new URL(url).hostname.split(".") : [];
|
|
5840
|
+
const meaningful = labels.slice(0, -1).filter((label) => label !== "www");
|
|
5841
|
+
names.push(...meaningful.map(compact), compact(meaningful.join("")), compact(labels.join("").replace(/^www/, "")));
|
|
5842
|
+
} catch {
|
|
5843
|
+
}
|
|
5844
|
+
return names.filter((name) => name.length >= 3);
|
|
5845
|
+
};
|
|
5846
|
+
var headingTitle = (title, siteName, url) => {
|
|
5847
|
+
if (!title) {
|
|
5848
|
+
return title;
|
|
5849
|
+
}
|
|
5850
|
+
const segments = title.split(TITLE_SEPARATOR);
|
|
5851
|
+
if (segments.length < 2) {
|
|
5852
|
+
return title;
|
|
5853
|
+
}
|
|
5854
|
+
const names = siteNames(siteName, url);
|
|
5855
|
+
if (names.length === 0) {
|
|
5856
|
+
return title;
|
|
5857
|
+
}
|
|
5858
|
+
const isSite = (segment) => {
|
|
5859
|
+
const value = compact(segment);
|
|
5860
|
+
return value.length > 0 && names.some((name) => value === name || value.startsWith(name) && SITE_SECTION.test(value.slice(name.length)));
|
|
5861
|
+
};
|
|
5862
|
+
const last = segments[segments.length - 1];
|
|
5863
|
+
if (isSite(last)) {
|
|
5864
|
+
return stripSegment(title, last, "end");
|
|
5865
|
+
}
|
|
5866
|
+
if (siteName && compact(segments[0]) === compact(siteName)) {
|
|
5867
|
+
return stripSegment(title, segments[0], "start");
|
|
5868
|
+
}
|
|
5869
|
+
return title;
|
|
5870
|
+
};
|
|
5871
|
+
var stripSegment = (title, segment, edge) => {
|
|
5872
|
+
const rest = edge === "end" ? title.slice(0, title.lastIndexOf(segment)) : title.slice(segment.length);
|
|
5873
|
+
const trimmed = rest.replace(edge === "end" ? /[\s\-|–—·•:|]+$/ : /^[\s\-|–—·•:|]+/, "");
|
|
5874
|
+
return trimmed.length > 0 ? trimmed : title;
|
|
5875
|
+
};
|
|
4066
5876
|
var TITLE_LOOKAHEAD = 400;
|
|
4067
5877
|
var withTitle = (body, title) => {
|
|
4068
5878
|
if (!title) {
|
|
@@ -4072,13 +5882,21 @@ var withTitle = (body, title) => {
|
|
|
4072
5882
|
if (/^#\s+\S/m.test(opening)) {
|
|
4073
5883
|
return body;
|
|
4074
5884
|
}
|
|
4075
|
-
if (
|
|
5885
|
+
if (mentionsTitle(opening, title)) {
|
|
4076
5886
|
return body;
|
|
4077
5887
|
}
|
|
4078
5888
|
return `# ${title}
|
|
4079
5889
|
|
|
4080
5890
|
${body}`;
|
|
4081
5891
|
};
|
|
5892
|
+
var MIN_EMBEDDED_TITLE_LENGTH = 24;
|
|
5893
|
+
var mentionsTitle = (opening, title) => {
|
|
5894
|
+
const wanted = normalizeForCompare(title);
|
|
5895
|
+
if (wanted.length >= MIN_EMBEDDED_TITLE_LENGTH) {
|
|
5896
|
+
return normalizeForCompare(opening).includes(wanted);
|
|
5897
|
+
}
|
|
5898
|
+
return opening.split("\n").some((line) => normalizeForCompare(line.replace(/[#*_`>]/g, "")) === wanted);
|
|
5899
|
+
};
|
|
4082
5900
|
var normalizeForCompare = (value) => value.replace(/\s+/g, " ").trim().toLowerCase();
|
|
4083
5901
|
|
|
4084
5902
|
// src/detect-client-shell.ts
|
|
@@ -4329,6 +6147,8 @@ var extractorOptions = (name) => {
|
|
|
4329
6147
|
switch (name) {
|
|
4330
6148
|
case "takumi":
|
|
4331
6149
|
return takumiExtractor;
|
|
6150
|
+
case "kiwame":
|
|
6151
|
+
return kiwameExtractor;
|
|
4332
6152
|
case "minimal":
|
|
4333
6153
|
return minimalFilter;
|
|
4334
6154
|
case "none":
|
|
@@ -4349,6 +6169,7 @@ var convertViaPlatform = async (run) => {
|
|
|
4349
6169
|
region: run.region,
|
|
4350
6170
|
screenshot: run.screenshot ? true : void 0,
|
|
4351
6171
|
respectRobotsTxt: run.respectRobotsTxt ? true : void 0,
|
|
6172
|
+
// `kiwame` is rejected for the platform loader during option resolution.
|
|
4352
6173
|
convert: { extractor: run.extractor, frontmatter: run.frontmatter }
|
|
4353
6174
|
});
|
|
4354
6175
|
return {
|