diff --git a/web_modules/.nojekyll b/.nojekyll similarity index 100% rename from web_modules/.nojekyll rename to .nojekyll diff --git a/examples/unindexed.js b/examples/unindexed.js index 6b8e4e3b..4d5890fa 100644 --- a/examples/unindexed.js +++ b/examples/unindexed.js @@ -5,8 +5,8 @@ import random from "pex-random"; import createGUI from "pex-gui"; import { cube } from "primitive-geometry"; - -import { computeNormals, splitVertices } from "./utils.js"; +import splitVertices from "geom-split-vertices"; +import computeNormals from "geom-normals"; import basicVert from "./shaders/basic.vert.js"; import basicFrag from "./shaders/basic.frag.js"; diff --git a/examples/utils.js b/examples/utils.js index 95dfac7e..7b0aa15c 100644 --- a/examples/utils.js +++ b/examples/utils.js @@ -1,5 +1,3 @@ -import { vec3 } from "pex-math"; - export const es300Vertex = (shader) => /* glsl */ `#version 300 es #define attribute in #define varying out @@ -14,61 +12,3 @@ precision highp float; #define gl_FragColor gl_FragData[0] out vec4 FragData[${size}]; ${shader}`; - -export function splitVertices(positions, cells) { - const splitPositions = new Float32Array((positions.length / 2) * 3); - - for (let i = 0; i < cells.length; i += 3) { - const face = [cells[i], cells[i + 1], cells[i + 2]]; - - for (let j = 0; j < face.length; j++) { - splitPositions[(i + j) * 3] = positions[face[j] * 3]; - splitPositions[(i + j) * 3 + 1] = positions[face[j] * 3 + 1]; - splitPositions[(i + j) * 3 + 2] = positions[face[j] * 3 + 2]; - } - } - - return { - positions: splitPositions, - cells: new cells.constructor(cells.map((_, i) => i)), - }; -} - -export function computeNormals(positions, cells) { - const normals = []; - - const count = []; - const ab = [0, 0, 0]; - const ac = [0, 0, 0]; - const n = [0, 0, 0]; - - for (let fi = 0; fi < cells.length / 3; fi++) { - const f = cells.slice(fi * 3, fi * 3 + 3); - const a = positions.slice(f[0] * 3, f[0] * 3 + 3); - const b = positions.slice(f[1] * 3, f[1] * 3 + 3); - const c = positions.slice(f[2] * 3, f[2] * 3 + 3); - - vec3.normalize(vec3.sub(vec3.set(ab, b), a)); - vec3.normalize(vec3.sub(vec3.set(ac, c), a)); - vec3.normalize(vec3.cross(vec3.set(n, ab), ac)); - - for (let i = 0; i < f.length; i++) { - if (!normals[f[i]]) { - normals[f[i]] = [0, 0, 0]; - } - - vec3.add(normals[f[i]], n); - count[f[i]] = count[f[i]] ? 1 : count[f[i]] + 1; - } - } - - for (let i = 0; i < normals.length; i++) { - if (normals[i]) { - vec3.normalize(normals[i]); - } else { - normals[i] = [0, 1, 0]; - } - } - - return Float32Array.from(normals.flat()); -} diff --git a/package-lock.json b/package-lock.json index a2f235cd..288ec46a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,19 +9,21 @@ "version": "3.0.0-alpha.8", "license": "MIT", "dependencies": { - "pex-gl": "^3.0.0-alpha.0" + "pex-gl": "^3.0.1" }, "devDependencies": { "baboon-image-uri": "^1.0.1", "bunny": "^1.0.1", - "es-module-shims": "^1.6.3", - "geom-center-and-normalize": "^1.0.3", + "es-module-shims": "^1.8.0", + "geom-center-and-normalize": "^2.0.0", "geom-merge": "^2.0.0", + "geom-normals": "^2.0.1", + "geom-split-vertices": "^2.0.1", "normals": "^1.1.0", "pex-cam": "^3.0.0-alpha.1", - "pex-color": "^2.0.0-alpha.2", + "pex-color": "^2.0.4", "pex-gui": "^3.0.0-alpha.2", - "pex-io": "^3.0.0-alpha.0", + "pex-io": "^3.0.1", "pex-math": "^4.0.0-alpha.2", "pex-random": "^2.0.0-alpha.1", "primitive-geometry": "^2.9.1", @@ -44,38 +46,26 @@ "integrity": "sha1-hjg9pFq3qZVxpaVyt74ONWSBX54=", "dev": true }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, "node_modules/es-module-shims": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/es-module-shims/-/es-module-shims-1.6.3.tgz", - "integrity": "sha512-+BQyPRZczeV9JH/17X1nu1GbD+SZvdPKD4Nrt2S61J94A2yc8DpWBlzv9KgF9cOXUZKifEShy8/qLelSVNo/rA==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/es-module-shims/-/es-module-shims-1.8.0.tgz", + "integrity": "sha512-5l/AqgnWvYFF38qkK8VNoQ8BL3LkJ8bAJuxhOKA/JqoLC4bcaeJeLwMkhEcrDsf5IUCDdwZ6eEG40+Xuh/APcQ==", "dev": true }, "node_modules/geom-center-and-normalize": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/geom-center-and-normalize/-/geom-center-and-normalize-1.0.3.tgz", - "integrity": "sha512-1wEbvW8yk/+mhrQkUOtCnlNnQYqPBik1scJ8qN09dnS+WvsW6gHSzyFTmrHRj90KenL8RZSiMSS/tYwjhxG9TA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/geom-center-and-normalize/-/geom-center-and-normalize-2.0.0.tgz", + "integrity": "sha512-Ck6+QXiia5VWFWzsNV8h3IDPpgOkNNCXTYekIhBJDIDuyWt5p3yYQ5rFTMo3gpk5mDAtHxA4D0C77Voo+65s1g==", "dev": true, "dependencies": { - "clone": "^1.0.2", - "pex-geom": "^2.0.2", - "pex-math": "^2.1.1" + "pex-geom": "^3.0.0-alpha.3", + "pex-math": "^4.0.0-alpha.3" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" } }, - "node_modules/geom-center-and-normalize/node_modules/pex-math": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pex-math/-/pex-math-2.1.1.tgz", - "integrity": "sha512-ieBwiAavIo2kf13DRZfzR3aQ03bE62bvoO165Gw54f/TGCkVcORf9+urMckLZi3GreZVAZIaHSbVnF6zc6gAdA==", - "dev": true - }, "node_modules/geom-merge": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/geom-merge/-/geom-merge-2.0.0.tgz", @@ -90,6 +80,33 @@ "npm": ">=8.0.0" } }, + "node_modules/geom-normals": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/geom-normals/-/geom-normals-2.0.1.tgz", + "integrity": "sha512-04os33+w7cTqhBbqJH6kDPgXZIclnNDD0aWZpmmYW2IF3V1Pify1bT8yahJlhJB6wCCWMq283z8xnakLgT6Bbw==", + "dev": true, + "dependencies": { + "pex-math": "^4.0.0-alpha.3", + "pex-random": "^2.0.0-alpha.1" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + } + }, + "node_modules/geom-split-vertices": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/geom-split-vertices/-/geom-split-vertices-2.0.1.tgz", + "integrity": "sha512-RqsfdwcUmpYJz/TDf9RuT2h1FoPWVSU+T7ekmiG/lzIZcmAOHoVbaDMJF36nI0p8kUd7WqwtZmaKe2XAqx/GZw==", + "dev": true, + "dependencies": { + "pex-math": "^4.0.0-alpha.3" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + } + }, "node_modules/interpolate-angle": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/interpolate-angle/-/interpolate-angle-1.0.2.tgz", @@ -141,36 +158,23 @@ "npm": ">=7.0.0" } }, - "node_modules/pex-cam/node_modules/pex-geom": { - "version": "3.0.0-alpha.3", - "resolved": "https://registry.npmjs.org/pex-geom/-/pex-geom-3.0.0-alpha.3.tgz", - "integrity": "sha512-VxwL3JgaH34gWY/ft1//TftiigrER9WWC4p2Q3sfjOJH9FyHRqgYACkT8j/XlR2140PP7sBRUQoZSA4jKSY5bA==", - "dev": true, - "dependencies": { - "pex-math": "^4.0.0-alpha.2" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } - }, "node_modules/pex-color": { - "version": "2.0.0-alpha.2", - "resolved": "git+ssh://git@github.com/pex-gl/pex-color.git#2cc548cf7fd2a212494c373f05cbaea502e05e1e", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pex-color/-/pex-color-2.0.4.tgz", + "integrity": "sha512-wox2WuuU/p+ldNCFG4pzA9sTyO1QsBLFT0mlKh1B8P1lE4PQsNK8hLuUDBSlnzOVfgbSu9ckaLJnoChxyPBuHQ==", "dev": true, - "license": "MIT", "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "node": ">=18.0.0", + "npm": ">=8.6.0" } }, "node_modules/pex-geom": { - "version": "2.0.2", - "resolved": "git+ssh://git@github.com/pex-gl/pex-geom.git#43897e4a84e11db7831a548e4841937b3a84d570", + "version": "3.0.0-alpha.4", + "resolved": "https://registry.npmjs.org/pex-geom/-/pex-geom-3.0.0-alpha.4.tgz", + "integrity": "sha512-eqfP69aNwF7HURLb85P7jZf1S23oo5Hf6pW9bUKnEASaCAEyAlH/EmJSc925Yc58Ax3yv12+wAAoFBqFov8znA==", "dev": true, - "license": "MIT", "dependencies": { - "pex-math": "github:pex-gl/pex-math#v4" + "pex-math": "^4.0.0-alpha.2" }, "engines": { "node": ">=16.0.0", @@ -178,12 +182,12 @@ } }, "node_modules/pex-gl": { - "version": "3.0.0-alpha.0", - "resolved": "https://registry.npmjs.org/pex-gl/-/pex-gl-3.0.0-alpha.0.tgz", - "integrity": "sha512-F5xRhI2A3iVhcSmBIIsjEoAeLBa8tqTUzQy2cwZ9X5i1yKRXH8mfQd21JegAuY2aIgzHylquQmWXKzskR8reIA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pex-gl/-/pex-gl-3.0.1.tgz", + "integrity": "sha512-RSbWPhWSjBLc+9tkfMeTR+G9rg9ESXHRyK7t2Qa3Nuupo4SDPiVw0RuZkgDfTpu4RiDZV6nBdGof7J/XIqTP2Q==", "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "node": ">=18.0.0", + "npm": ">=8.6.0" } }, "node_modules/pex-gui": { @@ -201,34 +205,21 @@ "npm": ">=7.0.0" } }, - "node_modules/pex-gui/node_modules/pex-geom": { - "version": "3.0.0-alpha.3", - "resolved": "https://registry.npmjs.org/pex-geom/-/pex-geom-3.0.0-alpha.3.tgz", - "integrity": "sha512-VxwL3JgaH34gWY/ft1//TftiigrER9WWC4p2Q3sfjOJH9FyHRqgYACkT8j/XlR2140PP7sBRUQoZSA4jKSY5bA==", - "dev": true, - "dependencies": { - "pex-math": "^4.0.0-alpha.2" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } - }, "node_modules/pex-io": { - "version": "3.0.0-alpha.0", - "resolved": "https://registry.npmjs.org/pex-io/-/pex-io-3.0.0-alpha.0.tgz", - "integrity": "sha512-BkMDBdvVR4DRcqzD0woGjL1RBT15OFY9NTwMhBmIC2bsxm/I2KN5OqxGIkwb4YQY8exbeFoF4E339jjmRzXjQg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pex-io/-/pex-io-3.0.1.tgz", + "integrity": "sha512-clGldY+pY41OlBdUmOEHZScvqjeIRZ/bawDxULO/OyiBkPNwy7WVDpx720TH5aPlSVNFOEb4ewUbxq+Y8vM8lw==", "dev": true, "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "node": ">=18.0.0", + "npm": ">=8.6.0" } }, "node_modules/pex-math": { - "version": "4.0.0-alpha.2", - "resolved": "git+ssh://git@github.com/pex-gl/pex-math.git#6274003093f3d085a61e306e6b1e103f3bf61dea", + "version": "4.0.0-alpha.5", + "resolved": "https://registry.npmjs.org/pex-math/-/pex-math-4.0.0-alpha.5.tgz", + "integrity": "sha512-MXh6dVrl0CHvHvgFujrcPbkgmjUi4Y+UCPEGlKds7Eo0P0C+p2uLqG+5oPrOrq6Lph3RSoEv9M8ZNNBP046iJA==", "dev": true, - "license": "MIT", "engines": { "node": ">=16.0.0", "npm": ">=7.0.0" @@ -340,35 +331,20 @@ "integrity": "sha1-hjg9pFq3qZVxpaVyt74ONWSBX54=", "dev": true }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true - }, "es-module-shims": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/es-module-shims/-/es-module-shims-1.6.3.tgz", - "integrity": "sha512-+BQyPRZczeV9JH/17X1nu1GbD+SZvdPKD4Nrt2S61J94A2yc8DpWBlzv9KgF9cOXUZKifEShy8/qLelSVNo/rA==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/es-module-shims/-/es-module-shims-1.8.0.tgz", + "integrity": "sha512-5l/AqgnWvYFF38qkK8VNoQ8BL3LkJ8bAJuxhOKA/JqoLC4bcaeJeLwMkhEcrDsf5IUCDdwZ6eEG40+Xuh/APcQ==", "dev": true }, "geom-center-and-normalize": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/geom-center-and-normalize/-/geom-center-and-normalize-1.0.3.tgz", - "integrity": "sha512-1wEbvW8yk/+mhrQkUOtCnlNnQYqPBik1scJ8qN09dnS+WvsW6gHSzyFTmrHRj90KenL8RZSiMSS/tYwjhxG9TA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/geom-center-and-normalize/-/geom-center-and-normalize-2.0.0.tgz", + "integrity": "sha512-Ck6+QXiia5VWFWzsNV8h3IDPpgOkNNCXTYekIhBJDIDuyWt5p3yYQ5rFTMo3gpk5mDAtHxA4D0C77Voo+65s1g==", "dev": true, "requires": { - "clone": "^1.0.2", - "pex-geom": "^2.0.2", - "pex-math": "^2.1.1" - }, - "dependencies": { - "pex-math": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pex-math/-/pex-math-2.1.1.tgz", - "integrity": "sha512-ieBwiAavIo2kf13DRZfzR3aQ03bE62bvoO165Gw54f/TGCkVcORf9+urMckLZi3GreZVAZIaHSbVnF6zc6gAdA==", - "dev": true - } + "pex-geom": "^3.0.0-alpha.3", + "pex-math": "^4.0.0-alpha.3" } }, "geom-merge": { @@ -381,6 +357,25 @@ "typed-array-constructor": "^1.0.1" } }, + "geom-normals": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/geom-normals/-/geom-normals-2.0.1.tgz", + "integrity": "sha512-04os33+w7cTqhBbqJH6kDPgXZIclnNDD0aWZpmmYW2IF3V1Pify1bT8yahJlhJB6wCCWMq283z8xnakLgT6Bbw==", + "dev": true, + "requires": { + "pex-math": "^4.0.0-alpha.3", + "pex-random": "^2.0.0-alpha.1" + } + }, + "geom-split-vertices": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/geom-split-vertices/-/geom-split-vertices-2.0.1.tgz", + "integrity": "sha512-RqsfdwcUmpYJz/TDf9RuT2h1FoPWVSU+T7ekmiG/lzIZcmAOHoVbaDMJF36nI0p8kUd7WqwtZmaKe2XAqx/GZw==", + "dev": true, + "requires": { + "pex-math": "^4.0.0-alpha.3" + } + }, "interpolate-angle": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/interpolate-angle/-/interpolate-angle-1.0.2.tgz", @@ -426,36 +421,27 @@ "pex-geom": "^3.0.0-alpha.0", "pex-math": "^4.0.0-alpha.1", "xyz-to-latlon": "^1.0.2" - }, - "dependencies": { - "pex-geom": { - "version": "3.0.0-alpha.3", - "resolved": "https://registry.npmjs.org/pex-geom/-/pex-geom-3.0.0-alpha.3.tgz", - "integrity": "sha512-VxwL3JgaH34gWY/ft1//TftiigrER9WWC4p2Q3sfjOJH9FyHRqgYACkT8j/XlR2140PP7sBRUQoZSA4jKSY5bA==", - "dev": true, - "requires": { - "pex-math": "^4.0.0-alpha.2" - } - } } }, "pex-color": { - "version": "git+ssh://git@github.com/pex-gl/pex-color.git#2cc548cf7fd2a212494c373f05cbaea502e05e1e", - "dev": true, - "from": "pex-color@^2.0.0-alpha.2" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pex-color/-/pex-color-2.0.4.tgz", + "integrity": "sha512-wox2WuuU/p+ldNCFG4pzA9sTyO1QsBLFT0mlKh1B8P1lE4PQsNK8hLuUDBSlnzOVfgbSu9ckaLJnoChxyPBuHQ==", + "dev": true }, "pex-geom": { - "version": "git+ssh://git@github.com/pex-gl/pex-geom.git#43897e4a84e11db7831a548e4841937b3a84d570", + "version": "3.0.0-alpha.4", + "resolved": "https://registry.npmjs.org/pex-geom/-/pex-geom-3.0.0-alpha.4.tgz", + "integrity": "sha512-eqfP69aNwF7HURLb85P7jZf1S23oo5Hf6pW9bUKnEASaCAEyAlH/EmJSc925Yc58Ax3yv12+wAAoFBqFov8znA==", "dev": true, - "from": "pex-geom@^2.0.2", "requires": { - "pex-math": "github:pex-gl/pex-math#v4" + "pex-math": "^4.0.0-alpha.2" } }, "pex-gl": { - "version": "3.0.0-alpha.0", - "resolved": "https://registry.npmjs.org/pex-gl/-/pex-gl-3.0.0-alpha.0.tgz", - "integrity": "sha512-F5xRhI2A3iVhcSmBIIsjEoAeLBa8tqTUzQy2cwZ9X5i1yKRXH8mfQd21JegAuY2aIgzHylquQmWXKzskR8reIA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pex-gl/-/pex-gl-3.0.1.tgz", + "integrity": "sha512-RSbWPhWSjBLc+9tkfMeTR+G9rg9ESXHRyK7t2Qa3Nuupo4SDPiVw0RuZkgDfTpu4RiDZV6nBdGof7J/XIqTP2Q==" }, "pex-gui": { "version": "3.0.0-alpha.2", @@ -466,29 +452,19 @@ "pex-color": "^2.0.0-alpha.2", "pex-geom": "^3.0.0-alpha.3", "pex-math": "^4.0.0-alpha.2" - }, - "dependencies": { - "pex-geom": { - "version": "3.0.0-alpha.3", - "resolved": "https://registry.npmjs.org/pex-geom/-/pex-geom-3.0.0-alpha.3.tgz", - "integrity": "sha512-VxwL3JgaH34gWY/ft1//TftiigrER9WWC4p2Q3sfjOJH9FyHRqgYACkT8j/XlR2140PP7sBRUQoZSA4jKSY5bA==", - "dev": true, - "requires": { - "pex-math": "^4.0.0-alpha.2" - } - } } }, "pex-io": { - "version": "3.0.0-alpha.0", - "resolved": "https://registry.npmjs.org/pex-io/-/pex-io-3.0.0-alpha.0.tgz", - "integrity": "sha512-BkMDBdvVR4DRcqzD0woGjL1RBT15OFY9NTwMhBmIC2bsxm/I2KN5OqxGIkwb4YQY8exbeFoF4E339jjmRzXjQg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pex-io/-/pex-io-3.0.1.tgz", + "integrity": "sha512-clGldY+pY41OlBdUmOEHZScvqjeIRZ/bawDxULO/OyiBkPNwy7WVDpx720TH5aPlSVNFOEb4ewUbxq+Y8vM8lw==", "dev": true }, "pex-math": { - "version": "git+ssh://git@github.com/pex-gl/pex-math.git#6274003093f3d085a61e306e6b1e103f3bf61dea", - "dev": true, - "from": "pex-math@^4.0.0-alpha.2" + "version": "4.0.0-alpha.5", + "resolved": "https://registry.npmjs.org/pex-math/-/pex-math-4.0.0-alpha.5.tgz", + "integrity": "sha512-MXh6dVrl0CHvHvgFujrcPbkgmjUi4Y+UCPEGlKds7Eo0P0C+p2uLqG+5oPrOrq6Lph3RSoEv9M8ZNNBP046iJA==", + "dev": true }, "pex-random": { "version": "2.0.0-alpha.1", diff --git a/package.json b/package.json index 9892c7ff..773fd421 100644 --- a/package.json +++ b/package.json @@ -36,26 +36,28 @@ "release:alpha": "snowdev release --prerelease alpha" }, "dependencies": { - "pex-gl": "^3.0.0-alpha.0" + "pex-gl": "^3.0.1" }, "devDependencies": { "baboon-image-uri": "^1.0.1", "bunny": "^1.0.1", - "es-module-shims": "^1.6.3", - "geom-center-and-normalize": "^1.0.3", + "es-module-shims": "^1.8.0", + "geom-center-and-normalize": "^2.0.0", "geom-merge": "^2.0.0", + "geom-normals": "^2.0.1", + "geom-split-vertices": "^2.0.1", "normals": "^1.1.0", "pex-cam": "^3.0.0-alpha.1", - "pex-color": "^2.0.0-alpha.2", + "pex-color": "^2.0.4", "pex-gui": "^3.0.0-alpha.2", - "pex-io": "^3.0.0-alpha.0", + "pex-io": "^3.0.1", "pex-math": "^4.0.0-alpha.2", "pex-random": "^2.0.0-alpha.1", "primitive-geometry": "^2.9.1", "typed-array-concat": "^3.0.0" }, "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "node": ">=18.0.0", + "npm": ">=8.6.0" } } diff --git a/web_modules/_chunks/avec3-d7dfe38e.js b/web_modules/_chunks/avec3-d7dfe38e.js new file mode 100644 index 00000000..366b9d1b --- /dev/null +++ b/web_modules/_chunks/avec3-d7dfe38e.js @@ -0,0 +1,310 @@ +import { d as create } from './vec3-81d013fb.js'; + +const TEMP_VEC3 = create(); +/** + * Sets a vector components. + * @param {import("./types.js").avec3} a + * @param {number} i + * @param {number} x + * @param {number} y + * @param {number} z + */ function set3(a, i, x, y, z) { + a[i * 3] = x; + a[i * 3 + 1] = y; + a[i * 3 + 2] = z; +} +/** + * Sets a vector to another vector. + * @param {import("./types.js").avec3} a + * @param {number} i + * @param {import("./types.js").avec3} b + * @param {number} j + */ function set(a, i, b, j) { + a[i * 3] = b[j * 3]; + a[i * 3 + 1] = b[j * 3 + 1]; + a[i * 3 + 2] = b[j * 3 + 2]; +} +/** + * Compares two vectors. + * @param {import("./types.js").avec3} a + * @param {number} i + * @param {import("./types.js").avec3} b + * @param {number} j + * @returns {boolean} + */ function equals(a, i, b, j) { + return a[i * 3] === b[j * 3] && a[i * 3 + 1] === b[j * 3 + 1] && a[i * 3 + 2] === b[j * 3 + 2]; +} +/** + * Adds a vector to another. + * @param {import("./types.js").avec3} a + * @param {number} i + * @param {import("./types.js").avec3} b + * @param {number} j + */ function add(a, i, b, j) { + a[i * 3] += b[j * 3]; + a[i * 3 + 1] += b[j * 3 + 1]; + a[i * 3 + 2] += b[j * 3 + 2]; +} +/** + * Subtracts a vector from another. + * @param {import("./types.js").avec3} a + * @param {number} i + * @param {import("./types.js").avec3} b + * @param {number} j + */ function sub(a, i, b, j) { + a[i * 3] -= b[j * 3]; + a[i * 3 + 1] -= b[j * 3 + 1]; + a[i * 3 + 2] -= b[j * 3 + 2]; +} +/** + * Scales a vector by a number. + * @param {import("./types.js").avec3} a + * @param {number} i + * @param {number} s + */ function scale(a, i, s) { + a[i * 3] *= s; + a[i * 3 + 1] *= s; + a[i * 3 + 2] *= s; +} +/** + * Adds two vectors after scaling the second one. + * @param {import("./types.js").avec3} a + * @param {number} i + * @param {import("./types.js").avec3} b + * @param {number} j + * @param {number} s + */ function addScaled(a, i, b, j, s) { + a[i * 3] += b[j * 3] * s; + a[i * 3 + 1] += b[j * 3 + 1] * s; + a[i * 3 + 2] += b[j * 3 + 2] * s; +} +/** + * Multiplies a vector by a matrix. + * @param {import("./types.js").avec3} a + * @param {number} i + * @param {import("./types.js").amat4} m + * @param {number} j + */ function multMat4(a, i, m, j) { + const x = a[i * 3]; + const y = a[i * 3 + 1]; + const z = a[i * 3 + 2]; + a[i * 3] = m[j * 16] * x + m[j * 16 + 4] * y + m[j * 16 + 8] * z + m[j * 16 + 12]; + a[i * 3 + 1] = m[j * 16 + 1] * x + m[j * 16 + 5] * y + m[j * 16 + 9] * z + m[j * 16 + 13]; + a[i * 3 + 2] = m[j * 16 + 2] * x + m[j * 16 + 6] * y + m[j * 16 + 10] * z + m[j * 16 + 14]; +} +/** + * Multiplies a vector by a quaternion. + * @param {import("./types.js").avec3} a + * @param {number} i + * @param {import("./types.js").aquat} q + * @param {number} j + */ function multQuat(a, i, q, j) { + const x = a[i * 3]; + const y = a[i * 3 + 1]; + const z = a[i * 3 + 2]; + const qx = q[j * 4]; + const qy = q[j * 4 + 1]; + const qz = q[j * 4 + 2]; + const qw = q[j * 4 + 3]; + const ix = qw * x + qy * z - qz * y; + const iy = qw * y + qz * x - qx * z; + const iz = qw * z + qx * y - qy * x; + const iw = -qx * x - qy * y - qz * z; + a[i * 3] = ix * qw + iw * -qx + iy * -qz - iz * -qy; + a[i * 3 + 1] = iy * qw + iw * -qy + iz * -qx - ix * -qz; + a[i * 3 + 2] = iz * qw + iw * -qz + ix * -qy - iy * -qx; +} +/** + * Calculates the dot product of two vectors. + * @param {import("./types.js").avec3} a + * @param {number} i + * @param {import("./types.js").avec3} b + * @param {number} j + * @returns {number} + */ function dot(a, i, b, j) { + return a[i * 3] * b[j * 3] + a[i * 3 + 1] * b[j * 3 + 1] + a[i * 3 + 2] * b[j * 3 + 2]; +} +/** + * Calculates the cross product of two vectors. + * @param {import("./types.js").avec3} a + * @param {number} i + * @param {import("./types.js").avec3} b + * @param {number} j + */ function cross(a, i, b, j) { + const x = a[i * 3]; + const y = a[i * 3 + 1]; + const z = a[i * 3 + 2]; + const vx = b[j * 3]; + const vy = b[j * 3 + 1]; + const vz = b[j * 3 + 2]; + a[i * 3] = y * vz - vy * z; + a[i * 3 + 1] = z * vx - vz * x; + a[i * 3 + 2] = x * vy - vx * y; +} +/** + * Calculates the length of a vector. + * @param {import("./types.js").avec3} a + * @param {number} i + * @returns {number} + */ function length(a, i) { + const x = a[i * 3]; + const y = a[i * 3 + 1]; + const z = a[i * 3 + 2]; + return Math.sqrt(x * x + y * y + z * z); +} +/** + * Calculates the squared length of a vector. + * @param {import("./types.js").avec3} a + * @param {number} i + * @returns {number} + */ function lengthSq(a, i) { + const x = a[i * 3]; + const y = a[i * 3 + 1]; + const z = a[i * 3 + 2]; + return x * x + y * y + z * z; +} +/** + * Normalises a vector. + * @param {import("./types.js").avec3} a + * @param {number} i + */ function normalize(a, i) { + const lenSq = a[i * 3] * a[i * 3] + a[i * 3 + 1] * a[i * 3 + 1] + a[i * 3 + 2] * a[i * 3 + 2]; + if (lenSq > 0) { + const len = Math.sqrt(lenSq); + a[i * 3] /= len; + a[i * 3 + 1] /= len; + a[i * 3 + 2] /= len; + } +} +/** + * Calculates the distance between two vectors. + * @param {import("./types.js").avec3} a + * @param {number} i + * @param {import("./types.js").avec3} b + * @param {number} j + * @returns {number} + */ function distance(a, i, b, j) { + const dx = b[j * 3] - a[i * 3]; + const dy = b[j * 3 + 1] - a[i * 3 + 1]; + const dz = b[j * 3 + 2] - a[i * 3 + 2]; + return Math.sqrt(dx * dx + dy * dy + dz * dz); +} +/** + * Calculates the squared distance between two vectors. + * @param {import("./types.js").avec3} a + * @param {number} i + * @param {import("./types.js").avec3} b + * @param {number} j + * @returns {number} + */ function distanceSq(a, i, b, j) { + const dx = b[j * 3] - a[i * 3]; + const dy = b[j * 3 + 1] - a[i * 3 + 1]; + const dz = b[j * 3 + 2] - a[i * 3 + 2]; + return dx * dx + dy * dy + dz * dz; +} +/** + * Limits a vector to a length. + * @param {import("./types.js").avec3} a + * @param {number} i + * @param {number} len + */ function limit(a, i, len) { + const x = a[i * 3]; + const y = a[i * 3 + 1]; + const z = a[i * 3 + 2]; + const dsq = x * x + y * y + z * z; + const lsq = len * len; + if (lsq > 0 && dsq > lsq) { + const nd = len / Math.sqrt(dsq); + a[i * 3] *= nd; + a[i * 3 + 1] *= nd; + a[i * 3 + 2] *= nd; + } +} +/** + * Linearly interpolates between two vectors. + * @param {import("./types.js").avec3} a + * @param {number} i + * @param {import("./types.js").avec3} b + * @param {number} j + * @param {number} t + */ function lerp(a, i, b, j, t) { + const x = a[i * 3]; + const y = a[i * 3 + 1]; + const z = a[i * 3 + 2]; + a[i * 3] = x + (b[j * 3] - x) * t; + a[i * 3 + 1] = y + (b[j * 3 + 1] - y) * t; + a[i * 3 + 2] = z + (b[j * 3 + 2] - z) * t; +} +/** + * Executes a function once for each array element. + * @param {import("./types.js").avec3} a + * @param {import("./types.js").iterativeCallback} callbackFn + */ function forEach(a, callbackFn) { + for(let i = 0; i < a.length / 3; i++){ + TEMP_VEC3[0] = a[i * 3]; + TEMP_VEC3[1] = a[i * 3 + 1]; + TEMP_VEC3[2] = a[i * 3 + 2]; + callbackFn(TEMP_VEC3, i, a); + a[i * 3] = TEMP_VEC3[0]; + a[i * 3 + 1] = TEMP_VEC3[1]; + a[i * 3 + 2] = TEMP_VEC3[2]; + } +} +/** + * Creates a new array populated with the results of calling a provided function on every element in the calling array. + * @param {import("./types.js").avec3} a + * @param {import("./types.js").iterativeCallback} callbackFn + * @returns {import("./types.js").avec3} + */ function map(a, callbackFn) { + const b = new a.constructor(a.length); + const element = new a.constructor(3); + for(let i = 0; i < a.length / 3; i++){ + element[0] = a[i * 3]; + element[1] = a[i * 3 + 1]; + element[2] = a[i * 3 + 2]; + const returnValue = callbackFn(element, i, a); + b[i * 3] = returnValue[0]; + b[i * 3 + 1] = returnValue[1]; + b[i * 3 + 2] = returnValue[2]; + } + return b; +} +/** + * Prints a vector to a string. + * @param {import("./types.js").avec3} a + * @param {number} i + * @param {number} [precision=4] + * @returns {string} + */ function toString(a, i, precision) { + if (precision === void 0) precision = 4; + const scale = 10 ** precision; + // prettier-ignore + return `[${Math.floor(a[i * 3] * scale) / scale}, ${Math.floor(a[i * 3 + 1] * scale) / scale}, ${Math.floor(a[i * 3 + 2] * scale) / scale}]`; +} + +var avec3 = /*#__PURE__*/Object.freeze({ + __proto__: null, + add: add, + addScaled: addScaled, + cross: cross, + distance: distance, + distanceSq: distanceSq, + dot: dot, + equals: equals, + forEach: forEach, + length: length, + lengthSq: lengthSq, + lerp: lerp, + limit: limit, + map: map, + multMat4: multMat4, + multQuat: multQuat, + normalize: normalize, + scale: scale, + set: set, + set3: set3, + sub: sub, + toString: toString +}); + +export { sub as a, add as b, cross as c, set3 as d, scale as e, avec3 as f, normalize as n, set as s }; diff --git a/web_modules/_chunks/hsl-5efaa82c.js b/web_modules/_chunks/hsl-5efaa82c.js new file mode 100644 index 00000000..7501acdc --- /dev/null +++ b/web_modules/_chunks/hsl-5efaa82c.js @@ -0,0 +1,377 @@ +/** + * @module utils + */ const setAlpha = (color, a)=>{ + if (a !== undefined) color[3] = a; + return color; +}; +/** + * Convert component from linear value + * @param {number} c + * @returns {number} + */ const linearToSrgb = (c)=>c <= 0.0031308 ? 12.92 * c : 1.055 * c ** (1 / 2.4) - 0.055; +/** + * Convert component to linear value + * @param {number} c + * @returns {number} + */ const srgbToLinear = (c)=>c > 0.04045 ? ((c + 0.055) / 1.055) ** 2.4 : c / 12.92; +const floorArray = (color, precision)=>{ + if (precision === void 0) precision = 5; + const p = 10 ** precision; + color.forEach((n, i)=>color[i] = Math.floor((n + Number.EPSILON) * p) / p); + return color; +}; +const TMP = [ + 0, + 0, + 0 +]; +// HSLuv +// https://github.com/hsluv/hsluv/tree/master/haxe/src/hsluv +const L_EPSILON = 1e-10; +const m = [ + [ + 3.240969941904521, + -1.537383177570093, + -0.498610760293 + ], + [ + -0.96924363628087, + 1.87596750150772, + 0.041555057407175 + ], + [ + 0.055630079696993, + -0.20397695888897, + 1.056971514242878 + ] +]; +const minv = [ + [ + 0.41239079926595, + 0.35758433938387, + 0.18048078840183 + ], + [ + 0.21263900587151, + 0.71516867876775, + 0.072192315360733 + ], + [ + 0.019330818715591, + 0.11919477979462, + 0.95053215224966 + ] +]; +const REF_U = 0.19783000664283; +const REF_V = 0.46831999493879; +const KAPPA = 9.032962962; +const EPSILON = 0.000088564516; +const yToL = (Y)=>Y <= EPSILON ? Y * KAPPA : 1.16 * Y ** (1 / 3) - 0.16; +const lToY = (L)=>L <= 0.08 ? L / KAPPA : ((L + 0.16) / 1.16) ** 3; +const xyzToLuv = (param)=>{ + let [X, Y, Z] = param; + const divider = X + 15 * Y + 3 * Z; + let varU = 4 * X; + let varV = 9 * Y; + if (divider !== 0) { + varU /= divider; + varV /= divider; + } else { + varU = NaN; + varV = NaN; + } + const L = yToL(Y); + if (L === 0) return [ + 0, + 0, + 0 + ]; + return [ + L, + 13 * L * (varU - REF_U), + 13 * L * (varV - REF_V) + ]; +}; +const luvToXyz = (param)=>{ + let [L, U, V] = param; + if (L === 0) return [ + 0, + 0, + 0 + ]; + const varU = U / (13 * L) + REF_U; + const varV = V / (13 * L) + REF_V; + const Y = lToY(L); + const X = 0 - 9 * Y * varU / ((varU - 4) * varV - varU * varV); + return [ + X, + Y, + (9 * Y - 15 * varV * Y - varV * X) / (3 * varV) + ]; +}; +const luvToLch = (param)=>{ + let [L, U, V] = param; + const C = Math.sqrt(U * U + V * V); + let H; + if (C < L_EPSILON) { + H = 0; + } else { + H = Math.atan2(V, U) / (2 * Math.PI); + if (H < 0) H = 1 + H; + } + return [ + L, + C, + H + ]; +}; +const lchToLuv = (param)=>{ + let [L, C, H] = param; + const Hrad = H * 2 * Math.PI; + return [ + L, + Math.cos(Hrad) * C, + Math.sin(Hrad) * C + ]; +}; +// TODO: normalize +const getBounds = (L)=>{ + const result = []; + const sub1 = (L + 16) ** 3 / 1560896; + const sub2 = sub1 > EPSILON ? sub1 : L / KAPPA; + let _g = 0; + while(_g < 3){ + const c = _g++; + const m1 = m[c][0]; + const m2 = m[c][1]; + const m3 = m[c][2]; + let _g1 = 0; + while(_g1 < 2){ + const t = _g1++; + const top1 = (284517 * m1 - 94839 * m3) * sub2; + const top2 = (838422 * m3 + 769860 * m2 + 731718 * m1) * L * sub2 - 769860 * t * L; + const bottom = (632260 * m3 - 126452 * m2) * sub2 + 126452 * t; + result.push({ + slope: top1 / bottom, + intercept: top2 / bottom + }); + } + } + return result; +}; +// Okhsl/Okhsv +// https://github.com/bottosson/bottosson.github.io/blob/master/misc/colorpicker/colorconversion.js +function oklabToLinearSrgb(color, L, a, b) { + const l = (L + 0.3963377774 * a + 0.2158037573 * b) ** 3; + const m = (L - 0.1055613458 * a - 0.0638541728 * b) ** 3; + const s = (L - 0.0894841775 * a - 1.291485548 * b) ** 3; + color[0] = 4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s; + color[1] = -1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s; + color[2] = -0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s; + return color; +} +const k1 = 0.206; +const k2 = 0.03; +const k3 = (1 + k1) / (1 + k2); +function toe(x) { + return 0.5 * (k3 * x - k1 + Math.sqrt((k3 * x - k1) * (k3 * x - k1) + 4 * k2 * k3 * x)); +} +function toeInv(x) { + return (x * x + k1 * x) / (k3 * (x + k2)); +} +function computeMaxSaturation(a, b) { + let k0, k1, k2, k3, k4, wl, wm, ws; + if (-1.88170328 * a - 0.80936493 * b > 1) { + k0 = 1.19086277; + k1 = 1.76576728; + k2 = 0.59662641; + k3 = 0.75515197; + k4 = 0.56771245; + wl = 4.0767416621; + wm = -3.3077115913; + ws = 0.2309699292; + } else if (1.81444104 * a - 1.19445276 * b > 1) { + k0 = 0.73956515; + k1 = -0.45954404; + k2 = 0.08285427; + k3 = 0.1254107; + k4 = 0.14503204; + wl = -1.2684380046; + wm = 2.6097574011; + ws = -0.3413193965; + } else { + k0 = 1.35733652; + k1 = -0.00915799; + k2 = -1.1513021; + k3 = -0.50559606; + k4 = 0.00692167; + wl = -0.0041960863; + wm = -0.7034186147; + ws = 1.707614701; + } + let S = k0 + k1 * a + k2 * b + k3 * a * a + k4 * a * b; + const kl = 0.3963377774 * a + 0.2158037573 * b; + const km = -0.1055613458 * a - 0.0638541728 * b; + const ks = -0.0894841775 * a - 1.291485548 * b; + const l_ = 1 + S * kl; + const m_ = 1 + S * km; + const s_ = 1 + S * ks; + const l = l_ * l_ * l_; + const m = m_ * m_ * m_; + const s = s_ * s_ * s_; + const ldS = 3 * kl * l_ * l_; + const mdS = 3 * km * m_ * m_; + const sdS = 3 * ks * s_ * s_; + const ldS2 = 6 * kl * kl * l_; + const mdS2 = 6 * km * km * m_; + const sdS2 = 6 * ks * ks * s_; + const f = wl * l + wm * m + ws * s; + const f1 = wl * ldS + wm * mdS + ws * sdS; + const f2 = wl * ldS2 + wm * mdS2 + ws * sdS2; + S = S - f * f1 / (f1 * f1 - 0.5 * f * f2); + return S; +} +function findCusp(a, b) { + const sCusp = computeMaxSaturation(a, b); + oklabToLinearSrgb(TMP, 1, sCusp * a, sCusp * b); + const lCusp = Math.cbrt(1 / Math.max(TMP[0], TMP[1], TMP[2])); + return [ + lCusp, + lCusp * sCusp + ]; +} +function getStMax(a_, b_, cusp) { + if (cusp === void 0) cusp = null; + if (!cusp) cusp = findCusp(a_, b_); + return [ + cusp[1] / cusp[0], + cusp[1] / (1 - cusp[0]) + ]; +} + +var utils = /*#__PURE__*/Object.freeze({ + __proto__: null, + L_EPSILON: L_EPSILON, + TMP: TMP, + findCusp: findCusp, + floorArray: floorArray, + getBounds: getBounds, + getStMax: getStMax, + lchToLuv: lchToLuv, + linearToSrgb: linearToSrgb, + luvToLch: luvToLch, + luvToXyz: luvToXyz, + m: m, + minv: minv, + oklabToLinearSrgb: oklabToLinearSrgb, + setAlpha: setAlpha, + srgbToLinear: srgbToLinear, + toe: toe, + toeInv: toeInv, + xyzToLuv: xyzToLuv +}); + +/** + * @typedef {string} hex hexadecimal string (RGB[A] or RRGGBB[AA]). + */ /** + * Updates a color based on a hexadecimal string. + * @param {import("./color.js").color} color + * @param {hex} hex Leading '#' is optional. + * @returns {import("./color.js").color} + */ function fromHex(color, hex) { + hex = hex.replace(/^#/, ""); + let a = 1; + if (hex.length === 8) { + a = parseInt(hex.slice(6, 8), 16) / 255; + hex = hex.slice(0, 6); + } else if (hex.length === 4) { + a = parseInt(hex.slice(3, 4).repeat(2), 16) / 255; + hex = hex.slice(0, 3); + } + if (hex.length === 3) { + hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]; + } + const num = parseInt(hex, 16); + color[0] = (num >> 16 & 255) / 255; + color[1] = (num >> 8 & 255) / 255; + color[2] = (num & 255) / 255; + if (color[3] !== undefined) color[3] = a; + return color; +} +/** + * Returns a hexadecimal string representation of a given color. + * @param {import("./color.js").color} color + * @param {boolean} alpha Handle alpha + * @returns {hex} + */ function toHex(color, alpha) { + if (alpha === void 0) alpha = true; + const c = color.map((val)=>Math.round(val * 255)); + return `#${(c[2] | c[1] << 8 | c[0] << 16 | 1 << 24).toString(16).slice(1).toUpperCase()}${alpha && color[3] !== undefined && color[3] !== 1 ? (c[3] | 1 << 8).toString(16).slice(1) : ""}`; +} + +/** + * @typedef {number[]} hsl hue, saturation, lightness. + * + * All components in the range 0 <= x <= 1 + * @see {@link https://en.wikipedia.org/wiki/HSL_and_HSV} + */ function hue2rgb(p, q, t) { + if (t < 0) t += 1; + if (t > 1) t -= 1; + if (t < 1 / 6) return p + (q - p) * 6 * t; + if (t < 1 / 2) return q; + if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6; + return p; +} +/** + * Updates a color based on HSL values and alpha. + * @param {import("./color.js").color} color + * @param {number} h + * @param {number} s + * @param {number} l + * @param {number} [a] + * @returns {import("./color.js").color} + */ function fromHSL(color, h, s, l, a) { + if (s === 0) { + color[0] = color[1] = color[2] = l; // achromatic + } else { + const q = l < 0.5 ? l * (1 + s) : l + s - l * s; + const p = 2 * l - q; + color[0] = hue2rgb(p, q, h + 1 / 3); + color[1] = hue2rgb(p, q, h); + color[2] = hue2rgb(p, q, h - 1 / 3); + } + return setAlpha(color, a); +} +/** + * Returns a HSL representation of a given color. + * @param {import("./color.js").color} color + * @param {Array} out + * @returns {hsl} + */ function toHSL(param, out) { + let [r, g, b, a] = param; + if (out === void 0) out = []; + const max = Math.max(r, g, b); + const min = Math.min(r, g, b); + out[2] = (max + min) / 2; + if (max === min) { + out[0] = out[1] = 0; // achromatic + } else { + const d = max - min; + out[1] = out[2] > 0.5 ? d / (2 - max - min) : d / (max + min); + switch(max){ + case r: + out[0] = (g - b) / d + (g < b ? 6 : 0); + break; + case g: + out[0] = (b - r) / d + 2; + break; + case b: + out[0] = (r - g) / d + 4; + break; + } + out[0] /= 6; + } + return setAlpha(out, a); +} + +export { L_EPSILON as L, TMP as T, toHSL as a, srgbToLinear as b, minv as c, toe as d, toeInv as e, fromHSL as f, getStMax as g, findCusp as h, luvToXyz as i, luvToLch as j, lchToLuv as k, linearToSrgb as l, m, getBounds as n, oklabToLinearSrgb as o, floorArray as p, fromHex as q, setAlpha as s, toHex as t, utils as u, xyzToLuv as x }; diff --git a/web_modules/_chunks/polyfills-3030d3af.js b/web_modules/_chunks/polyfills-3030d3af.js new file mode 100644 index 00000000..abd7134b --- /dev/null +++ b/web_modules/_chunks/polyfills-3030d3af.js @@ -0,0 +1,2020 @@ +var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function getDefaultExportFromCjs (x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; +} + +function getAugmentedNamespace(n) { + if (n.__esModule) return n; + var f = n.default; + if (typeof f == "function") { + var a = function a () { + if (this instanceof a) { + return Reflect.construct(f, arguments, this.constructor); + } + return f.apply(this, arguments); + }; + a.prototype = f.prototype; + } else a = {}; + Object.defineProperty(a, '__esModule', {value: true}); + Object.keys(n).forEach(function (k) { + var d = Object.getOwnPropertyDescriptor(n, k); + Object.defineProperty(a, k, d.get ? d : { + enumerable: true, + get: function () { + return n[k]; + } + }); + }); + return a; +} + +var global$1 = (typeof global !== "undefined" ? global : + typeof self !== "undefined" ? self : + typeof window !== "undefined" ? window : {}); + +var lookup = []; +var revLookup = []; +var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array; +var inited = false; +function init () { + inited = true; + var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + for (var i = 0, len = code.length; i < len; ++i) { + lookup[i] = code[i]; + revLookup[code.charCodeAt(i)] = i; + } + + revLookup['-'.charCodeAt(0)] = 62; + revLookup['_'.charCodeAt(0)] = 63; +} + +function toByteArray (b64) { + if (!inited) { + init(); + } + var i, j, l, tmp, placeHolders, arr; + var len = b64.length; + + if (len % 4 > 0) { + throw new Error('Invalid string. Length must be a multiple of 4') + } + + // the number of equal signs (place holders) + // if there are two placeholders, than the two characters before it + // represent one byte + // if there is only one, then the three characters before it represent 2 bytes + // this is just a cheap hack to not do indexOf twice + placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0; + + // base64 is 4/3 + up to two characters of the original data + arr = new Arr(len * 3 / 4 - placeHolders); + + // if there are placeholders, only get up to the last complete 4 chars + l = placeHolders > 0 ? len - 4 : len; + + var L = 0; + + for (i = 0, j = 0; i < l; i += 4, j += 3) { + tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]; + arr[L++] = (tmp >> 16) & 0xFF; + arr[L++] = (tmp >> 8) & 0xFF; + arr[L++] = tmp & 0xFF; + } + + if (placeHolders === 2) { + tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4); + arr[L++] = tmp & 0xFF; + } else if (placeHolders === 1) { + tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2); + arr[L++] = (tmp >> 8) & 0xFF; + arr[L++] = tmp & 0xFF; + } + + return arr +} + +function tripletToBase64 (num) { + return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F] +} + +function encodeChunk (uint8, start, end) { + var tmp; + var output = []; + for (var i = start; i < end; i += 3) { + tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]); + output.push(tripletToBase64(tmp)); + } + return output.join('') +} + +function fromByteArray (uint8) { + if (!inited) { + init(); + } + var tmp; + var len = uint8.length; + var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes + var output = ''; + var parts = []; + var maxChunkLength = 16383; // must be multiple of 3 + + // go through the array every three bytes, we'll deal with trailing stuff later + for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { + parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))); + } + + // pad the end with zeros, but make sure to not forget the extra bytes + if (extraBytes === 1) { + tmp = uint8[len - 1]; + output += lookup[tmp >> 2]; + output += lookup[(tmp << 4) & 0x3F]; + output += '=='; + } else if (extraBytes === 2) { + tmp = (uint8[len - 2] << 8) + (uint8[len - 1]); + output += lookup[tmp >> 10]; + output += lookup[(tmp >> 4) & 0x3F]; + output += lookup[(tmp << 2) & 0x3F]; + output += '='; + } + + parts.push(output); + + return parts.join('') +} + +function read (buffer, offset, isLE, mLen, nBytes) { + var e, m; + var eLen = nBytes * 8 - mLen - 1; + var eMax = (1 << eLen) - 1; + var eBias = eMax >> 1; + var nBits = -7; + var i = isLE ? (nBytes - 1) : 0; + var d = isLE ? -1 : 1; + var s = buffer[offset + i]; + + i += d; + + e = s & ((1 << (-nBits)) - 1); + s >>= (-nBits); + nBits += eLen; + for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} + + m = e & ((1 << (-nBits)) - 1); + e >>= (-nBits); + nBits += mLen; + for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} + + if (e === 0) { + e = 1 - eBias; + } else if (e === eMax) { + return m ? NaN : ((s ? -1 : 1) * Infinity) + } else { + m = m + Math.pow(2, mLen); + e = e - eBias; + } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen) +} + +function write (buffer, value, offset, isLE, mLen, nBytes) { + var e, m, c; + var eLen = nBytes * 8 - mLen - 1; + var eMax = (1 << eLen) - 1; + var eBias = eMax >> 1; + var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0); + var i = isLE ? 0 : (nBytes - 1); + var d = isLE ? 1 : -1; + var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0; + + value = Math.abs(value); + + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0; + e = eMax; + } else { + e = Math.floor(Math.log(value) / Math.LN2); + if (value * (c = Math.pow(2, -e)) < 1) { + e--; + c *= 2; + } + if (e + eBias >= 1) { + value += rt / c; + } else { + value += rt * Math.pow(2, 1 - eBias); + } + if (value * c >= 2) { + e++; + c /= 2; + } + + if (e + eBias >= eMax) { + m = 0; + e = eMax; + } else if (e + eBias >= 1) { + m = (value * c - 1) * Math.pow(2, mLen); + e = e + eBias; + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); + e = 0; + } + } + + for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} + + e = (e << mLen) | m; + eLen += mLen; + for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} + + buffer[offset + i - d] |= s * 128; +} + +var toString = {}.toString; + +var isArray = Array.isArray || function (arr) { + return toString.call(arr) == '[object Array]'; +}; + +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ + +var INSPECT_MAX_BYTES = 50; + +/** + * If `Buffer.TYPED_ARRAY_SUPPORT`: + * === true Use Uint8Array implementation (fastest) + * === false Use Object implementation (most compatible, even IE6) + * + * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, + * Opera 11.6+, iOS 4.2+. + * + * Due to various browser bugs, sometimes the Object implementation will be used even + * when the browser supports typed arrays. + * + * Note: + * + * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances, + * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. + * + * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. + * + * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of + * incorrect length in some situations. + + * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they + * get the Object implementation, which is slower but behaves correctly. + */ +Buffer.TYPED_ARRAY_SUPPORT = global$1.TYPED_ARRAY_SUPPORT !== undefined + ? global$1.TYPED_ARRAY_SUPPORT + : true; + +/* + * Export kMaxLength after typed array support is determined. + */ +kMaxLength(); + +function kMaxLength () { + return Buffer.TYPED_ARRAY_SUPPORT + ? 0x7fffffff + : 0x3fffffff +} + +function createBuffer (that, length) { + if (kMaxLength() < length) { + throw new RangeError('Invalid typed array length') + } + if (Buffer.TYPED_ARRAY_SUPPORT) { + // Return an augmented `Uint8Array` instance, for best performance + that = new Uint8Array(length); + that.__proto__ = Buffer.prototype; + } else { + // Fallback: Return an object instance of the Buffer class + if (that === null) { + that = new Buffer(length); + } + that.length = length; + } + + return that +} + +/** + * The Buffer constructor returns instances of `Uint8Array` that have their + * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of + * `Uint8Array`, so the returned instances will have all the node `Buffer` methods + * and the `Uint8Array` methods. Square bracket notation works as expected -- it + * returns a single octet. + * + * The `Uint8Array` prototype remains unmodified. + */ + +function Buffer (arg, encodingOrOffset, length) { + if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) { + return new Buffer(arg, encodingOrOffset, length) + } + + // Common case. + if (typeof arg === 'number') { + if (typeof encodingOrOffset === 'string') { + throw new Error( + 'If encoding is specified then the first argument must be a string' + ) + } + return allocUnsafe(this, arg) + } + return from(this, arg, encodingOrOffset, length) +} + +Buffer.poolSize = 8192; // not used by this implementation + +// TODO: Legacy, not needed anymore. Remove in next major version. +Buffer._augment = function (arr) { + arr.__proto__ = Buffer.prototype; + return arr +}; + +function from (that, value, encodingOrOffset, length) { + if (typeof value === 'number') { + throw new TypeError('"value" argument must not be a number') + } + + if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { + return fromArrayBuffer(that, value, encodingOrOffset, length) + } + + if (typeof value === 'string') { + return fromString(that, value, encodingOrOffset) + } + + return fromObject(that, value) +} + +/** + * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError + * if value is a number. + * Buffer.from(str[, encoding]) + * Buffer.from(array) + * Buffer.from(buffer) + * Buffer.from(arrayBuffer[, byteOffset[, length]]) + **/ +Buffer.from = function (value, encodingOrOffset, length) { + return from(null, value, encodingOrOffset, length) +}; + +if (Buffer.TYPED_ARRAY_SUPPORT) { + Buffer.prototype.__proto__ = Uint8Array.prototype; + Buffer.__proto__ = Uint8Array; + if (typeof Symbol !== 'undefined' && Symbol.species && + Buffer[Symbol.species] === Buffer) ; +} + +function assertSize (size) { + if (typeof size !== 'number') { + throw new TypeError('"size" argument must be a number') + } else if (size < 0) { + throw new RangeError('"size" argument must not be negative') + } +} + +function alloc (that, size, fill, encoding) { + assertSize(size); + if (size <= 0) { + return createBuffer(that, size) + } + if (fill !== undefined) { + // Only pay attention to encoding if it's a string. This + // prevents accidentally sending in a number that would + // be interpretted as a start offset. + return typeof encoding === 'string' + ? createBuffer(that, size).fill(fill, encoding) + : createBuffer(that, size).fill(fill) + } + return createBuffer(that, size) +} + +/** + * Creates a new filled Buffer instance. + * alloc(size[, fill[, encoding]]) + **/ +Buffer.alloc = function (size, fill, encoding) { + return alloc(null, size, fill, encoding) +}; + +function allocUnsafe (that, size) { + assertSize(size); + that = createBuffer(that, size < 0 ? 0 : checked(size) | 0); + if (!Buffer.TYPED_ARRAY_SUPPORT) { + for (var i = 0; i < size; ++i) { + that[i] = 0; + } + } + return that +} + +/** + * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. + * */ +Buffer.allocUnsafe = function (size) { + return allocUnsafe(null, size) +}; +/** + * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. + */ +Buffer.allocUnsafeSlow = function (size) { + return allocUnsafe(null, size) +}; + +function fromString (that, string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8'; + } + + if (!Buffer.isEncoding(encoding)) { + throw new TypeError('"encoding" must be a valid string encoding') + } + + var length = byteLength(string, encoding) | 0; + that = createBuffer(that, length); + + var actual = that.write(string, encoding); + + if (actual !== length) { + // Writing a hex string, for example, that contains invalid characters will + // cause everything after the first invalid character to be ignored. (e.g. + // 'abxxcd' will be treated as 'ab') + that = that.slice(0, actual); + } + + return that +} + +function fromArrayLike (that, array) { + var length = array.length < 0 ? 0 : checked(array.length) | 0; + that = createBuffer(that, length); + for (var i = 0; i < length; i += 1) { + that[i] = array[i] & 255; + } + return that +} + +function fromArrayBuffer (that, array, byteOffset, length) { + array.byteLength; // this throws if `array` is not a valid ArrayBuffer + + if (byteOffset < 0 || array.byteLength < byteOffset) { + throw new RangeError('\'offset\' is out of bounds') + } + + if (array.byteLength < byteOffset + (length || 0)) { + throw new RangeError('\'length\' is out of bounds') + } + + if (byteOffset === undefined && length === undefined) { + array = new Uint8Array(array); + } else if (length === undefined) { + array = new Uint8Array(array, byteOffset); + } else { + array = new Uint8Array(array, byteOffset, length); + } + + if (Buffer.TYPED_ARRAY_SUPPORT) { + // Return an augmented `Uint8Array` instance, for best performance + that = array; + that.__proto__ = Buffer.prototype; + } else { + // Fallback: Return an object instance of the Buffer class + that = fromArrayLike(that, array); + } + return that +} + +function fromObject (that, obj) { + if (internalIsBuffer(obj)) { + var len = checked(obj.length) | 0; + that = createBuffer(that, len); + + if (that.length === 0) { + return that + } + + obj.copy(that, 0, 0, len); + return that + } + + if (obj) { + if ((typeof ArrayBuffer !== 'undefined' && + obj.buffer instanceof ArrayBuffer) || 'length' in obj) { + if (typeof obj.length !== 'number' || isnan(obj.length)) { + return createBuffer(that, 0) + } + return fromArrayLike(that, obj) + } + + if (obj.type === 'Buffer' && isArray(obj.data)) { + return fromArrayLike(that, obj.data) + } + } + + throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.') +} + +function checked (length) { + // Note: cannot use `length < kMaxLength()` here because that fails when + // length is NaN (which is otherwise coerced to zero.) + if (length >= kMaxLength()) { + throw new RangeError('Attempt to allocate Buffer larger than maximum ' + + 'size: 0x' + kMaxLength().toString(16) + ' bytes') + } + return length | 0 +} +Buffer.isBuffer = isBuffer; +function internalIsBuffer (b) { + return !!(b != null && b._isBuffer) +} + +Buffer.compare = function compare (a, b) { + if (!internalIsBuffer(a) || !internalIsBuffer(b)) { + throw new TypeError('Arguments must be Buffers') + } + + if (a === b) return 0 + + var x = a.length; + var y = b.length; + + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i]; + y = b[i]; + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +}; + +Buffer.isEncoding = function isEncoding (encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'latin1': + case 'binary': + case 'base64': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true + default: + return false + } +}; + +Buffer.concat = function concat (list, length) { + if (!isArray(list)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + + if (list.length === 0) { + return Buffer.alloc(0) + } + + var i; + if (length === undefined) { + length = 0; + for (i = 0; i < list.length; ++i) { + length += list[i].length; + } + } + + var buffer = Buffer.allocUnsafe(length); + var pos = 0; + for (i = 0; i < list.length; ++i) { + var buf = list[i]; + if (!internalIsBuffer(buf)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + buf.copy(buffer, pos); + pos += buf.length; + } + return buffer +}; + +function byteLength (string, encoding) { + if (internalIsBuffer(string)) { + return string.length + } + if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && + (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) { + return string.byteLength + } + if (typeof string !== 'string') { + string = '' + string; + } + + var len = string.length; + if (len === 0) return 0 + + // Use a for loop to avoid recursion + var loweredCase = false; + for (;;) { + switch (encoding) { + case 'ascii': + case 'latin1': + case 'binary': + return len + case 'utf8': + case 'utf-8': + case undefined: + return utf8ToBytes(string).length + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return len * 2 + case 'hex': + return len >>> 1 + case 'base64': + return base64ToBytes(string).length + default: + if (loweredCase) return utf8ToBytes(string).length // assume utf8 + encoding = ('' + encoding).toLowerCase(); + loweredCase = true; + } + } +} +Buffer.byteLength = byteLength; + +function slowToString (encoding, start, end) { + var loweredCase = false; + + // No need to verify that "this.length <= MAX_UINT32" since it's a read-only + // property of a typed array. + + // This behaves neither like String nor Uint8Array in that we set start/end + // to their upper/lower bounds if the value passed is out of range. + // undefined is handled specially as per ECMA-262 6th Edition, + // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. + if (start === undefined || start < 0) { + start = 0; + } + // Return early if start > this.length. Done here to prevent potential uint32 + // coercion fail below. + if (start > this.length) { + return '' + } + + if (end === undefined || end > this.length) { + end = this.length; + } + + if (end <= 0) { + return '' + } + + // Force coersion to uint32. This will also coerce falsey/NaN values to 0. + end >>>= 0; + start >>>= 0; + + if (end <= start) { + return '' + } + + if (!encoding) encoding = 'utf8'; + + while (true) { + switch (encoding) { + case 'hex': + return hexSlice(this, start, end) + + case 'utf8': + case 'utf-8': + return utf8Slice(this, start, end) + + case 'ascii': + return asciiSlice(this, start, end) + + case 'latin1': + case 'binary': + return latin1Slice(this, start, end) + + case 'base64': + return base64Slice(this, start, end) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return utf16leSlice(this, start, end) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = (encoding + '').toLowerCase(); + loweredCase = true; + } + } +} + +// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect +// Buffer instances. +Buffer.prototype._isBuffer = true; + +function swap (b, n, m) { + var i = b[n]; + b[n] = b[m]; + b[m] = i; +} + +Buffer.prototype.swap16 = function swap16 () { + var len = this.length; + if (len % 2 !== 0) { + throw new RangeError('Buffer size must be a multiple of 16-bits') + } + for (var i = 0; i < len; i += 2) { + swap(this, i, i + 1); + } + return this +}; + +Buffer.prototype.swap32 = function swap32 () { + var len = this.length; + if (len % 4 !== 0) { + throw new RangeError('Buffer size must be a multiple of 32-bits') + } + for (var i = 0; i < len; i += 4) { + swap(this, i, i + 3); + swap(this, i + 1, i + 2); + } + return this +}; + +Buffer.prototype.swap64 = function swap64 () { + var len = this.length; + if (len % 8 !== 0) { + throw new RangeError('Buffer size must be a multiple of 64-bits') + } + for (var i = 0; i < len; i += 8) { + swap(this, i, i + 7); + swap(this, i + 1, i + 6); + swap(this, i + 2, i + 5); + swap(this, i + 3, i + 4); + } + return this +}; + +Buffer.prototype.toString = function toString () { + var length = this.length | 0; + if (length === 0) return '' + if (arguments.length === 0) return utf8Slice(this, 0, length) + return slowToString.apply(this, arguments) +}; + +Buffer.prototype.equals = function equals (b) { + if (!internalIsBuffer(b)) throw new TypeError('Argument must be a Buffer') + if (this === b) return true + return Buffer.compare(this, b) === 0 +}; + +Buffer.prototype.inspect = function inspect () { + var str = ''; + var max = INSPECT_MAX_BYTES; + if (this.length > 0) { + str = this.toString('hex', 0, max).match(/.{2}/g).join(' '); + if (this.length > max) str += ' ... '; + } + return '' +}; + +Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { + if (!internalIsBuffer(target)) { + throw new TypeError('Argument must be a Buffer') + } + + if (start === undefined) { + start = 0; + } + if (end === undefined) { + end = target ? target.length : 0; + } + if (thisStart === undefined) { + thisStart = 0; + } + if (thisEnd === undefined) { + thisEnd = this.length; + } + + if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { + throw new RangeError('out of range index') + } + + if (thisStart >= thisEnd && start >= end) { + return 0 + } + if (thisStart >= thisEnd) { + return -1 + } + if (start >= end) { + return 1 + } + + start >>>= 0; + end >>>= 0; + thisStart >>>= 0; + thisEnd >>>= 0; + + if (this === target) return 0 + + var x = thisEnd - thisStart; + var y = end - start; + var len = Math.min(x, y); + + var thisCopy = this.slice(thisStart, thisEnd); + var targetCopy = target.slice(start, end); + + for (var i = 0; i < len; ++i) { + if (thisCopy[i] !== targetCopy[i]) { + x = thisCopy[i]; + y = targetCopy[i]; + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +}; + +// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, +// OR the last index of `val` in `buffer` at offset <= `byteOffset`. +// +// Arguments: +// - buffer - a Buffer to search +// - val - a string, Buffer, or number +// - byteOffset - an index into `buffer`; will be clamped to an int32 +// - encoding - an optional encoding, relevant is val is a string +// - dir - true for indexOf, false for lastIndexOf +function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { + // Empty buffer means no match + if (buffer.length === 0) return -1 + + // Normalize byteOffset + if (typeof byteOffset === 'string') { + encoding = byteOffset; + byteOffset = 0; + } else if (byteOffset > 0x7fffffff) { + byteOffset = 0x7fffffff; + } else if (byteOffset < -0x80000000) { + byteOffset = -0x80000000; + } + byteOffset = +byteOffset; // Coerce to Number. + if (isNaN(byteOffset)) { + // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer + byteOffset = dir ? 0 : (buffer.length - 1); + } + + // Normalize byteOffset: negative offsets start from the end of the buffer + if (byteOffset < 0) byteOffset = buffer.length + byteOffset; + if (byteOffset >= buffer.length) { + if (dir) return -1 + else byteOffset = buffer.length - 1; + } else if (byteOffset < 0) { + if (dir) byteOffset = 0; + else return -1 + } + + // Normalize val + if (typeof val === 'string') { + val = Buffer.from(val, encoding); + } + + // Finally, search either indexOf (if dir is true) or lastIndexOf + if (internalIsBuffer(val)) { + // Special case: looking for empty string/buffer always fails + if (val.length === 0) { + return -1 + } + return arrayIndexOf(buffer, val, byteOffset, encoding, dir) + } else if (typeof val === 'number') { + val = val & 0xFF; // Search for a byte value [0-255] + if (Buffer.TYPED_ARRAY_SUPPORT && + typeof Uint8Array.prototype.indexOf === 'function') { + if (dir) { + return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) + } else { + return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) + } + } + return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) + } + + throw new TypeError('val must be string, number or Buffer') +} + +function arrayIndexOf (arr, val, byteOffset, encoding, dir) { + var indexSize = 1; + var arrLength = arr.length; + var valLength = val.length; + + if (encoding !== undefined) { + encoding = String(encoding).toLowerCase(); + if (encoding === 'ucs2' || encoding === 'ucs-2' || + encoding === 'utf16le' || encoding === 'utf-16le') { + if (arr.length < 2 || val.length < 2) { + return -1 + } + indexSize = 2; + arrLength /= 2; + valLength /= 2; + byteOffset /= 2; + } + } + + function read (buf, i) { + if (indexSize === 1) { + return buf[i] + } else { + return buf.readUInt16BE(i * indexSize) + } + } + + var i; + if (dir) { + var foundIndex = -1; + for (i = byteOffset; i < arrLength; i++) { + if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { + if (foundIndex === -1) foundIndex = i; + if (i - foundIndex + 1 === valLength) return foundIndex * indexSize + } else { + if (foundIndex !== -1) i -= i - foundIndex; + foundIndex = -1; + } + } + } else { + if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength; + for (i = byteOffset; i >= 0; i--) { + var found = true; + for (var j = 0; j < valLength; j++) { + if (read(arr, i + j) !== read(val, j)) { + found = false; + break + } + } + if (found) return i + } + } + + return -1 +} + +Buffer.prototype.includes = function includes (val, byteOffset, encoding) { + return this.indexOf(val, byteOffset, encoding) !== -1 +}; + +Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, true) +}; + +Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, false) +}; + +function hexWrite (buf, string, offset, length) { + offset = Number(offset) || 0; + var remaining = buf.length - offset; + if (!length) { + length = remaining; + } else { + length = Number(length); + if (length > remaining) { + length = remaining; + } + } + + // must be an even number of digits + var strLen = string.length; + if (strLen % 2 !== 0) throw new TypeError('Invalid hex string') + + if (length > strLen / 2) { + length = strLen / 2; + } + for (var i = 0; i < length; ++i) { + var parsed = parseInt(string.substr(i * 2, 2), 16); + if (isNaN(parsed)) return i + buf[offset + i] = parsed; + } + return i +} + +function utf8Write (buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) +} + +function asciiWrite (buf, string, offset, length) { + return blitBuffer(asciiToBytes(string), buf, offset, length) +} + +function latin1Write (buf, string, offset, length) { + return asciiWrite(buf, string, offset, length) +} + +function base64Write (buf, string, offset, length) { + return blitBuffer(base64ToBytes(string), buf, offset, length) +} + +function ucs2Write (buf, string, offset, length) { + return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) +} + +Buffer.prototype.write = function write (string, offset, length, encoding) { + // Buffer#write(string) + if (offset === undefined) { + encoding = 'utf8'; + length = this.length; + offset = 0; + // Buffer#write(string, encoding) + } else if (length === undefined && typeof offset === 'string') { + encoding = offset; + length = this.length; + offset = 0; + // Buffer#write(string, offset[, length][, encoding]) + } else if (isFinite(offset)) { + offset = offset | 0; + if (isFinite(length)) { + length = length | 0; + if (encoding === undefined) encoding = 'utf8'; + } else { + encoding = length; + length = undefined; + } + // legacy write(string, encoding, offset, length) - remove in v0.13 + } else { + throw new Error( + 'Buffer.write(string, encoding, offset[, length]) is no longer supported' + ) + } + + var remaining = this.length - offset; + if (length === undefined || length > remaining) length = remaining; + + if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { + throw new RangeError('Attempt to write outside buffer bounds') + } + + if (!encoding) encoding = 'utf8'; + + var loweredCase = false; + for (;;) { + switch (encoding) { + case 'hex': + return hexWrite(this, string, offset, length) + + case 'utf8': + case 'utf-8': + return utf8Write(this, string, offset, length) + + case 'ascii': + return asciiWrite(this, string, offset, length) + + case 'latin1': + case 'binary': + return latin1Write(this, string, offset, length) + + case 'base64': + // Warning: maxLength not taken into account in base64Write + return base64Write(this, string, offset, length) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return ucs2Write(this, string, offset, length) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = ('' + encoding).toLowerCase(); + loweredCase = true; + } + } +}; + +Buffer.prototype.toJSON = function toJSON () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) + } +}; + +function base64Slice (buf, start, end) { + if (start === 0 && end === buf.length) { + return fromByteArray(buf) + } else { + return fromByteArray(buf.slice(start, end)) + } +} + +function utf8Slice (buf, start, end) { + end = Math.min(buf.length, end); + var res = []; + + var i = start; + while (i < end) { + var firstByte = buf[i]; + var codePoint = null; + var bytesPerSequence = (firstByte > 0xEF) ? 4 + : (firstByte > 0xDF) ? 3 + : (firstByte > 0xBF) ? 2 + : 1; + + if (i + bytesPerSequence <= end) { + var secondByte, thirdByte, fourthByte, tempCodePoint; + + switch (bytesPerSequence) { + case 1: + if (firstByte < 0x80) { + codePoint = firstByte; + } + break + case 2: + secondByte = buf[i + 1]; + if ((secondByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F); + if (tempCodePoint > 0x7F) { + codePoint = tempCodePoint; + } + } + break + case 3: + secondByte = buf[i + 1]; + thirdByte = buf[i + 2]; + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F); + if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { + codePoint = tempCodePoint; + } + } + break + case 4: + secondByte = buf[i + 1]; + thirdByte = buf[i + 2]; + fourthByte = buf[i + 3]; + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F); + if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { + codePoint = tempCodePoint; + } + } + } + } + + if (codePoint === null) { + // we did not generate a valid codePoint so insert a + // replacement char (U+FFFD) and advance only 1 byte + codePoint = 0xFFFD; + bytesPerSequence = 1; + } else if (codePoint > 0xFFFF) { + // encode to utf16 (surrogate pair dance) + codePoint -= 0x10000; + res.push(codePoint >>> 10 & 0x3FF | 0xD800); + codePoint = 0xDC00 | codePoint & 0x3FF; + } + + res.push(codePoint); + i += bytesPerSequence; + } + + return decodeCodePointsArray(res) +} + +// Based on http://stackoverflow.com/a/22747272/680742, the browser with +// the lowest limit is Chrome, with 0x10000 args. +// We go 1 magnitude less, for safety +var MAX_ARGUMENTS_LENGTH = 0x1000; + +function decodeCodePointsArray (codePoints) { + var len = codePoints.length; + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints) // avoid extra slice() + } + + // Decode in chunks to avoid "call stack size exceeded". + var res = ''; + var i = 0; + while (i < len) { + res += String.fromCharCode.apply( + String, + codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) + ); + } + return res +} + +function asciiSlice (buf, start, end) { + var ret = ''; + end = Math.min(buf.length, end); + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i] & 0x7F); + } + return ret +} + +function latin1Slice (buf, start, end) { + var ret = ''; + end = Math.min(buf.length, end); + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i]); + } + return ret +} + +function hexSlice (buf, start, end) { + var len = buf.length; + + if (!start || start < 0) start = 0; + if (!end || end < 0 || end > len) end = len; + + var out = ''; + for (var i = start; i < end; ++i) { + out += toHex(buf[i]); + } + return out +} + +function utf16leSlice (buf, start, end) { + var bytes = buf.slice(start, end); + var res = ''; + for (var i = 0; i < bytes.length; i += 2) { + res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256); + } + return res +} + +Buffer.prototype.slice = function slice (start, end) { + var len = this.length; + start = ~~start; + end = end === undefined ? len : ~~end; + + if (start < 0) { + start += len; + if (start < 0) start = 0; + } else if (start > len) { + start = len; + } + + if (end < 0) { + end += len; + if (end < 0) end = 0; + } else if (end > len) { + end = len; + } + + if (end < start) end = start; + + var newBuf; + if (Buffer.TYPED_ARRAY_SUPPORT) { + newBuf = this.subarray(start, end); + newBuf.__proto__ = Buffer.prototype; + } else { + var sliceLen = end - start; + newBuf = new Buffer(sliceLen, undefined); + for (var i = 0; i < sliceLen; ++i) { + newBuf[i] = this[i + start]; + } + } + + return newBuf +}; + +/* + * Need to make sure that buffer isn't trying to write out of bounds. + */ +function checkOffset (offset, ext, length) { + if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') + if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') +} + +Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) checkOffset(offset, byteLength, this.length); + + var val = this[offset]; + var mul = 1; + var i = 0; + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul; + } + + return val +}; + +Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) { + checkOffset(offset, byteLength, this.length); + } + + var val = this[offset + --byteLength]; + var mul = 1; + while (byteLength > 0 && (mul *= 0x100)) { + val += this[offset + --byteLength] * mul; + } + + return val +}; + +Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length); + return this[offset] +}; + +Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length); + return this[offset] | (this[offset + 1] << 8) +}; + +Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length); + return (this[offset] << 8) | this[offset + 1] +}; + +Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + + return ((this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16)) + + (this[offset + 3] * 0x1000000) +}; + +Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + + return (this[offset] * 0x1000000) + + ((this[offset + 1] << 16) | + (this[offset + 2] << 8) | + this[offset + 3]) +}; + +Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) checkOffset(offset, byteLength, this.length); + + var val = this[offset]; + var mul = 1; + var i = 0; + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul; + } + mul *= 0x80; + + if (val >= mul) val -= Math.pow(2, 8 * byteLength); + + return val +}; + +Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) checkOffset(offset, byteLength, this.length); + + var i = byteLength; + var mul = 1; + var val = this[offset + --i]; + while (i > 0 && (mul *= 0x100)) { + val += this[offset + --i] * mul; + } + mul *= 0x80; + + if (val >= mul) val -= Math.pow(2, 8 * byteLength); + + return val +}; + +Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length); + if (!(this[offset] & 0x80)) return (this[offset]) + return ((0xff - this[offset] + 1) * -1) +}; + +Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length); + var val = this[offset] | (this[offset + 1] << 8); + return (val & 0x8000) ? val | 0xFFFF0000 : val +}; + +Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length); + var val = this[offset + 1] | (this[offset] << 8); + return (val & 0x8000) ? val | 0xFFFF0000 : val +}; + +Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + + return (this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16) | + (this[offset + 3] << 24) +}; + +Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + + return (this[offset] << 24) | + (this[offset + 1] << 16) | + (this[offset + 2] << 8) | + (this[offset + 3]) +}; + +Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + return read(this, offset, true, 23, 4) +}; + +Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + return read(this, offset, false, 23, 4) +}; + +Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length); + return read(this, offset, true, 52, 8) +}; + +Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length); + return read(this, offset, false, 52, 8) +}; + +function checkInt (buf, value, offset, ext, max, min) { + if (!internalIsBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') + if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') + if (offset + ext > buf.length) throw new RangeError('Index out of range') +} + +Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1; + checkInt(this, value, offset, byteLength, maxBytes, 0); + } + + var mul = 1; + var i = 0; + this[offset] = value & 0xFF; + while (++i < byteLength && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF; + } + + return offset + byteLength +}; + +Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1; + checkInt(this, value, offset, byteLength, maxBytes, 0); + } + + var i = byteLength - 1; + var mul = 1; + this[offset + i] = value & 0xFF; + while (--i >= 0 && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF; + } + + return offset + byteLength +}; + +Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0); + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value); + this[offset] = (value & 0xff); + return offset + 1 +}; + +function objectWriteUInt16 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffff + value + 1; + for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) { + buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> + (littleEndian ? i : 1 - i) * 8; + } +} + +Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff); + this[offset + 1] = (value >>> 8); + } else { + objectWriteUInt16(this, value, offset, true); + } + return offset + 2 +}; + +Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8); + this[offset + 1] = (value & 0xff); + } else { + objectWriteUInt16(this, value, offset, false); + } + return offset + 2 +}; + +function objectWriteUInt32 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffffffff + value + 1; + for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) { + buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff; + } +} + +Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset + 3] = (value >>> 24); + this[offset + 2] = (value >>> 16); + this[offset + 1] = (value >>> 8); + this[offset] = (value & 0xff); + } else { + objectWriteUInt32(this, value, offset, true); + } + return offset + 4 +}; + +Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24); + this[offset + 1] = (value >>> 16); + this[offset + 2] = (value >>> 8); + this[offset + 3] = (value & 0xff); + } else { + objectWriteUInt32(this, value, offset, false); + } + return offset + 4 +}; + +Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1); + + checkInt(this, value, offset, byteLength, limit - 1, -limit); + } + + var i = 0; + var mul = 1; + var sub = 0; + this[offset] = value & 0xFF; + while (++i < byteLength && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { + sub = 1; + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF; + } + + return offset + byteLength +}; + +Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1); + + checkInt(this, value, offset, byteLength, limit - 1, -limit); + } + + var i = byteLength - 1; + var mul = 1; + var sub = 0; + this[offset + i] = value & 0xFF; + while (--i >= 0 && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { + sub = 1; + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF; + } + + return offset + byteLength +}; + +Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80); + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value); + if (value < 0) value = 0xff + value + 1; + this[offset] = (value & 0xff); + return offset + 1 +}; + +Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff); + this[offset + 1] = (value >>> 8); + } else { + objectWriteUInt16(this, value, offset, true); + } + return offset + 2 +}; + +Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8); + this[offset + 1] = (value & 0xff); + } else { + objectWriteUInt16(this, value, offset, false); + } + return offset + 2 +}; + +Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff); + this[offset + 1] = (value >>> 8); + this[offset + 2] = (value >>> 16); + this[offset + 3] = (value >>> 24); + } else { + objectWriteUInt32(this, value, offset, true); + } + return offset + 4 +}; + +Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); + if (value < 0) value = 0xffffffff + value + 1; + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24); + this[offset + 1] = (value >>> 16); + this[offset + 2] = (value >>> 8); + this[offset + 3] = (value & 0xff); + } else { + objectWriteUInt32(this, value, offset, false); + } + return offset + 4 +}; + +function checkIEEE754 (buf, value, offset, ext, max, min) { + if (offset + ext > buf.length) throw new RangeError('Index out of range') + if (offset < 0) throw new RangeError('Index out of range') +} + +function writeFloat (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 4); + } + write(buf, value, offset, littleEndian, 23, 4); + return offset + 4 +} + +Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { + return writeFloat(this, value, offset, true, noAssert) +}; + +Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { + return writeFloat(this, value, offset, false, noAssert) +}; + +function writeDouble (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 8); + } + write(buf, value, offset, littleEndian, 52, 8); + return offset + 8 +} + +Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { + return writeDouble(this, value, offset, true, noAssert) +}; + +Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { + return writeDouble(this, value, offset, false, noAssert) +}; + +// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) +Buffer.prototype.copy = function copy (target, targetStart, start, end) { + if (!start) start = 0; + if (!end && end !== 0) end = this.length; + if (targetStart >= target.length) targetStart = target.length; + if (!targetStart) targetStart = 0; + if (end > 0 && end < start) end = start; + + // Copy 0 bytes; we're done + if (end === start) return 0 + if (target.length === 0 || this.length === 0) return 0 + + // Fatal error conditions + if (targetStart < 0) { + throw new RangeError('targetStart out of bounds') + } + if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') + if (end < 0) throw new RangeError('sourceEnd out of bounds') + + // Are we oob? + if (end > this.length) end = this.length; + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start; + } + + var len = end - start; + var i; + + if (this === target && start < targetStart && targetStart < end) { + // descending copy from end + for (i = len - 1; i >= 0; --i) { + target[i + targetStart] = this[i + start]; + } + } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { + // ascending copy from start + for (i = 0; i < len; ++i) { + target[i + targetStart] = this[i + start]; + } + } else { + Uint8Array.prototype.set.call( + target, + this.subarray(start, start + len), + targetStart + ); + } + + return len +}; + +// Usage: +// buffer.fill(number[, offset[, end]]) +// buffer.fill(buffer[, offset[, end]]) +// buffer.fill(string[, offset[, end]][, encoding]) +Buffer.prototype.fill = function fill (val, start, end, encoding) { + // Handle string cases: + if (typeof val === 'string') { + if (typeof start === 'string') { + encoding = start; + start = 0; + end = this.length; + } else if (typeof end === 'string') { + encoding = end; + end = this.length; + } + if (val.length === 1) { + var code = val.charCodeAt(0); + if (code < 256) { + val = code; + } + } + if (encoding !== undefined && typeof encoding !== 'string') { + throw new TypeError('encoding must be a string') + } + if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + } else if (typeof val === 'number') { + val = val & 255; + } + + // Invalid ranges are not set to a default, so can range check early. + if (start < 0 || this.length < start || this.length < end) { + throw new RangeError('Out of range index') + } + + if (end <= start) { + return this + } + + start = start >>> 0; + end = end === undefined ? this.length : end >>> 0; + + if (!val) val = 0; + + var i; + if (typeof val === 'number') { + for (i = start; i < end; ++i) { + this[i] = val; + } + } else { + var bytes = internalIsBuffer(val) + ? val + : utf8ToBytes(new Buffer(val, encoding).toString()); + var len = bytes.length; + for (i = 0; i < end - start; ++i) { + this[i + start] = bytes[i % len]; + } + } + + return this +}; + +// HELPER FUNCTIONS +// ================ + +var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g; + +function base64clean (str) { + // Node strips out invalid characters like \n and \t from the string, base64-js does not + str = stringtrim(str).replace(INVALID_BASE64_RE, ''); + // Node converts strings with length < 2 to '' + if (str.length < 2) return '' + // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not + while (str.length % 4 !== 0) { + str = str + '='; + } + return str +} + +function stringtrim (str) { + if (str.trim) return str.trim() + return str.replace(/^\s+|\s+$/g, '') +} + +function toHex (n) { + if (n < 16) return '0' + n.toString(16) + return n.toString(16) +} + +function utf8ToBytes (string, units) { + units = units || Infinity; + var codePoint; + var length = string.length; + var leadSurrogate = null; + var bytes = []; + + for (var i = 0; i < length; ++i) { + codePoint = string.charCodeAt(i); + + // is surrogate component + if (codePoint > 0xD7FF && codePoint < 0xE000) { + // last char was a lead + if (!leadSurrogate) { + // no lead yet + if (codePoint > 0xDBFF) { + // unexpected trail + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + continue + } else if (i + 1 === length) { + // unpaired lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + continue + } + + // valid lead + leadSurrogate = codePoint; + + continue + } + + // 2 leads in a row + if (codePoint < 0xDC00) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + leadSurrogate = codePoint; + continue + } + + // valid surrogate pair + codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000; + } else if (leadSurrogate) { + // valid bmp char, but last char was a lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + } + + leadSurrogate = null; + + // encode utf8 + if (codePoint < 0x80) { + if ((units -= 1) < 0) break + bytes.push(codePoint); + } else if (codePoint < 0x800) { + if ((units -= 2) < 0) break + bytes.push( + codePoint >> 0x6 | 0xC0, + codePoint & 0x3F | 0x80 + ); + } else if (codePoint < 0x10000) { + if ((units -= 3) < 0) break + bytes.push( + codePoint >> 0xC | 0xE0, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ); + } else if (codePoint < 0x110000) { + if ((units -= 4) < 0) break + bytes.push( + codePoint >> 0x12 | 0xF0, + codePoint >> 0xC & 0x3F | 0x80, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ); + } else { + throw new Error('Invalid code point') + } + } + + return bytes +} + +function asciiToBytes (str) { + var byteArray = []; + for (var i = 0; i < str.length; ++i) { + // Node's code seems to be doing this and not & 0x7F.. + byteArray.push(str.charCodeAt(i) & 0xFF); + } + return byteArray +} + +function utf16leToBytes (str, units) { + var c, hi, lo; + var byteArray = []; + for (var i = 0; i < str.length; ++i) { + if ((units -= 2) < 0) break + + c = str.charCodeAt(i); + hi = c >> 8; + lo = c % 256; + byteArray.push(lo); + byteArray.push(hi); + } + + return byteArray +} + + +function base64ToBytes (str) { + return toByteArray(base64clean(str)) +} + +function blitBuffer (src, dst, offset, length) { + for (var i = 0; i < length; ++i) { + if ((i + offset >= dst.length) || (i >= src.length)) break + dst[i + offset] = src[i]; + } + return i +} + +function isnan (val) { + return val !== val // eslint-disable-line no-self-compare +} + + +// the following is from is-buffer, also by Feross Aboukhadijeh and with same lisence +// The _isBuffer check is for Safari 5-7 support, because it's missing +// Object.prototype.constructor. Remove this eventually +function isBuffer(obj) { + return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj)) +} + +function isFastBuffer (obj) { + return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) +} + +// For Node v0.10 support. Remove this eventually. +function isSlowBuffer (obj) { + return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isFastBuffer(obj.slice(0, 0)) +} + +var _polyfillNode_crypto = {}; + +var _polyfillNode_crypto$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + default: _polyfillNode_crypto +}); + +var require$$0 = /*@__PURE__*/getAugmentedNamespace(_polyfillNode_crypto$1); + +export { Buffer as B, commonjsGlobal as c, getDefaultExportFromCjs as g, require$$0 as r }; diff --git a/web_modules/common/utils-7e499548.js b/web_modules/_chunks/utils-1d861a03.js similarity index 51% rename from web_modules/common/utils-7e499548.js rename to web_modules/_chunks/utils-1d861a03.js index 157f282c..e3a9a9ce 100644 --- a/web_modules/common/utils-7e499548.js +++ b/web_modules/_chunks/utils-1d861a03.js @@ -1,44 +1,41 @@ -/** @module utils */ - -/** +/** @module utils */ /** * @constant {number} - */ -const EPSILON = 0.000001; - + */ const EPSILON = 0.000001; +/** + * @constant {import("./types.js").vec3} + */ const Y_UP = Object.freeze([ + 0, + 1, + 0 +]); /** * Linear interpolation between two numbers. * @param {number} a * @param {number} b * @param {number} t * @returns {number} - */ -function lerp(a, b, t) { - return a + (b - a) * t; + */ function lerp(a, b, t) { + return a + (b - a) * t; } - /** * Clamps a number between two numbers. * @param {number} n * @param {number} min * @param {number} max * @returns {number} - */ -function clamp(n, min, max) { - return Math.max(min, Math.min(n, max)); + */ function clamp(n, min, max) { + return Math.max(min, Math.min(n, max)); } - /** * Smooth Hermite interpolation between 0 and 1 * @param {number} n * @param {number} min * @param {number} max * @returns {number} - */ -function smoothstep(n, min, max) { - n = clamp((n - min) / (max - min), 0, 1); - return n * n * (3 - 2 * n); + */ function smoothstep(n, min, max) { + n = clamp((n - min) / (max - min), 0, 1); + return n * n * (3 - 2 * n); } - /** * Maps a number from one range to another. * @param {number} n @@ -47,75 +44,66 @@ function smoothstep(n, min, max) { * @param {number} outStart * @param {number} outEnd * @returns {number} - */ -function map(n, inStart, inEnd, outStart, outEnd) { - return outStart + (outEnd - outStart) * (n - inStart) / (inEnd - inStart); + */ function map(n, inStart, inEnd, outStart, outEnd) { + return outStart + (outEnd - outStart) * (n - inStart) / (inEnd - inStart); } - /** * Transforms degrees into radians. * @param {import("./types.js").Degrees} degrees * @returns {import("./types.js").Radians} - */ -function toRadians(degrees) { - return degrees * Math.PI / 180; + */ function toRadians(degrees) { + return degrees * Math.PI / 180; } - /** * Transforms radians into degrees. * @param {import("./types.js").Radians} radians * @returns {import("./types.js").Degrees} - */ -function toDegrees(radians) { - return radians * 180 / Math.PI; -} - -/** - * Returns the sign of a number. - * @param {number} n - * @returns {number} - */ -function sign(n) { - return n / Math.abs(n); + */ function toDegrees(radians) { + return radians * 180 / Math.PI; } - /** * Check if a number is a power of two * @param {number} a * @returns {boolean} - */ -function isPowerOfTwo(a) { - return (a & a - 1) === 0; + */ function isPowerOfTwo(a) { + return (a & a - 1) === 0; } - /** * Returns the next highest power of two. * @param {number} n * @returns {number} - */ -function nextPowerOfTwo(n) { - if (n === 0) return 1; - n--; - n |= n >> 1; - n |= n >> 2; - n |= n >> 4; - n |= n >> 8; - n |= n >> 16; - return n + 1; + */ function nextPowerOfTwo(n) { + if (n === 0) return 1; + n--; + n |= n >> 1; + n |= n >> 2; + n |= n >> 4; + n |= n >> 8; + n |= n >> 16; + return n + 1; +} +/** + * Returns the previous power of two. + * @param {number} n + * @returns {number} + */ function prevPowerOfTwo(n) { + if (n <= 1) return 0; + return nextPowerOfTwo(n) / 2; } var utils = /*#__PURE__*/Object.freeze({ __proto__: null, EPSILON: EPSILON, - lerp: lerp, + Y_UP: Y_UP, clamp: clamp, - smoothstep: smoothstep, + isPowerOfTwo: isPowerOfTwo, + lerp: lerp, map: map, - toRadians: toRadians, + nextPowerOfTwo: nextPowerOfTwo, + prevPowerOfTwo: prevPowerOfTwo, + smoothstep: smoothstep, toDegrees: toDegrees, - sign: sign, - isPowerOfTwo: isPowerOfTwo, - nextPowerOfTwo: nextPowerOfTwo + toRadians: toRadians }); -export { EPSILON as E, toRadians as a, clamp as c, lerp as l, map as m, toDegrees as t, utils as u }; +export { EPSILON as E, Y_UP as Y, toRadians as a, clamp as c, lerp as l, map as m, toDegrees as t, utils as u }; diff --git a/web_modules/_chunks/vec2-e9025687.js b/web_modules/_chunks/vec2-e9025687.js new file mode 100644 index 00000000..85454367 --- /dev/null +++ b/web_modules/_chunks/vec2-e9025687.js @@ -0,0 +1,868 @@ +import { E as EPSILON, Y as Y_UP } from './utils-1d861a03.js'; + +/** + * Returns a 4x4 identity matrix. + * + * Row major memory layout: + * + * ``` + * 0 1 2 3 + * 4 5 6 7 + * 8 9 10 11 + * 12 13 14 15 + * ``` + * + * Equivalent to the column major OpenGL spec: + * + * ``` + * 0 4 8 12 + * 1 5 9 13 + * 2 6 10 14 + * 3 7 11 15 + * + * m00 m10 m20 m30 + * m01 m11 m21 m31 + * m02 m12 m22 m32 + * m03 m13 m23 m33 + * ``` + * @returns {import("./types.js").mat4} + */ function create$1() { + // prettier-ignore + return [ + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1 + ]; +} +/** + * Sets a matrix to the identity matrix. + * @param {import("./types.js").mat4} a + * @returns {import("./types.js").mat4} + */ function identity(a) { + a[0] = a[5] = a[10] = a[15] = 1; + a[1] = a[2] = a[3] = a[4] = a[6] = a[7] = a[8] = a[9] = a[11] = a[12] = a[13] = a[14] = 0; + return a; +} +/** + * Returns a copy of a matrix. + * @param {import("./types.js").mat4} a + * @returns {import("./types.js").mat4} + */ function copy$1(a) { + return a.slice(); +} +/** + * Sets a matrix from another matrix. + * @param {import("./types.js").mat4} a + * @param {import("./types.js").mat4} b + * @returns {import("./types.js").mat4} + */ function set$1(a, b) { + a[0] = b[0]; + a[1] = b[1]; + a[2] = b[2]; + a[3] = b[3]; + a[4] = b[4]; + a[5] = b[5]; + a[6] = b[6]; + a[7] = b[7]; + a[8] = b[8]; + a[9] = b[9]; + a[10] = b[10]; + a[11] = b[11]; + a[12] = b[12]; + a[13] = b[13]; + a[14] = b[14]; + a[15] = b[15]; + return a; +} +/** + * Compares two matrices. + * @param {import("./types.js").mat4} a + * @param {import("./types.js").mat4} b + * @returns {boolean} + */ function equals$1(a, b) { + return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15]; +} +/** + * Multiplies two matrices. + * @param {import("./types.js").mat4} a + * @param {import("./types.js").mat4} b + * @returns {import("./types.js").mat4} + */ function mult(a, b) { + const a00 = a[0]; + const a01 = a[1]; + const a02 = a[2]; + const a03 = a[3]; + const a10 = a[4]; + const a11 = a[5]; + const a12 = a[6]; + const a13 = a[7]; + const a20 = a[8]; + const a21 = a[9]; + const a22 = a[10]; + const a23 = a[11]; + const a30 = a[12]; + const a31 = a[13]; + const a32 = a[14]; + const a33 = a[15]; + let b0 = b[0]; + let b1 = b[1]; + let b2 = b[2]; + let b3 = b[3]; + a[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; + a[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; + a[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; + a[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; + b0 = b[4]; + b1 = b[5]; + b2 = b[6]; + b3 = b[7]; + a[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; + a[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; + a[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; + a[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; + b0 = b[8]; + b1 = b[9]; + b2 = b[10]; + b3 = b[11]; + a[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; + a[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; + a[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; + a[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; + b0 = b[12]; + b1 = b[13]; + b2 = b[14]; + b3 = b[15]; + a[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; + a[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; + a[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; + a[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; + return a; +} +/** + * Inverts a matrix. + * @param {import("./types.js").mat4} a + * @returns {import("./types.js").mat4} + */ function invert(a) { + const a00 = a[0]; + const a10 = a[1]; + const a20 = a[2]; + const a30 = a[3]; + const a01 = a[4]; + const a11 = a[5]; + const a21 = a[6]; + const a31 = a[7]; + const a02 = a[8]; + const a12 = a[9]; + const a22 = a[10]; + const a32 = a[11]; + const a03 = a[12]; + const a13 = a[13]; + const a23 = a[14]; + const a33 = a[15]; + const a22a33 = a22 * a33; + const a32a23 = a32 * a23; + const a21a33 = a21 * a33; + const a31a23 = a31 * a23; + const a21a32 = a21 * a32; + const a31a22 = a31 * a22; + const a20a33 = a20 * a33; + const a30a23 = a30 * a23; + const a20a32 = a20 * a32; + const a30a22 = a30 * a22; + const a20a31 = a20 * a31; + const a30a21 = a30 * a21; + const a00a11 = a00 * a11; + const a01a10 = a01 * a10; + const a02a10 = a02 * a10; + const a03a10 = a03 * a10; + const a12a33 = a12 * a33; + const a32a13 = a32 * a13; + const a00a31 = a00 * a31; + const a03a11 = a03 * a11; + const a12a23 = a12 * a23; + const a22a13 = a22 * a13; + const a02a11 = a02 * a11; + const a21a13 = a21 * a13; + const a21a12 = a21 * a12; + const a02a30 = a02 * a30; + const a03a30 = a03 * a30; + const a02a20 = a02 * a20; + const a03a20 = a03 * a20; + const a01a30 = a01 * a30; + const a01a20 = a01 * a20; + a[0] = a11 * a22a33 - a11 * a32a23 - a12 * a21a33 + a12 * a31a23 + a13 * a21a32 - a13 * a31a22; + a[4] = -a01 * a22a33 + a01 * a32a23 + a02 * a21a33 - a02 * a31a23 - a03 * a21a32 + a03 * a31a22; + a[8] = a01 * a12a33 - a01 * a32a13 - a02a11 * a33 + a02 * a31 * a13 + a03a11 * a32 - a03 * a31 * a12; + a[12] = -a01 * a12a23 + a01 * a22a13 + a02a11 * a23 - a02 * a21a13 - a03a11 * a22 + a03 * a21a12; + a[1] = -a10 * a22a33 + a10 * a32a23 + a12 * a20a33 - a12 * a30a23 - a13 * a20a32 + a13 * a30a22; + a[5] = a00 * a22a33 - a00 * a32a23 - a02 * a20a33 + a02 * a30a23 + a03 * a20a32 - a03 * a30a22; + a[9] = -a00 * a12a33 + a00 * a32a13 + a02a10 * a33 - a02a30 * a13 - a03a10 * a32 + a03a30 * a12; + a[13] = a00 * a12a23 - a00 * a22a13 - a02a10 * a23 + a02a20 * a13 + a03a10 * a22 - a03a20 * a12; + a[2] = a10 * a21a33 - a10 * a31a23 - a11 * a20a33 + a11 * a30a23 + a13 * a20a31 - a13 * a30a21; + a[6] = -a00 * a21a33 + a00 * a31a23 + a01 * a20a33 - a01 * a30a23 - a03 * a20a31 + a03 * a30a21; + a[10] = a00a11 * a33 - a00a31 * a13 - a01a10 * a33 + a01a30 * a13 + a03a10 * a31 - a03a30 * a11; + a[14] = -a00a11 * a23 + a00 * a21a13 + a01a10 * a23 - a01a20 * a13 - a03a10 * a21 + a03a20 * a11; + a[3] = -a10 * a21a32 + a10 * a31a22 + a11 * a20a32 - a11 * a30a22 - a12 * a20a31 + a12 * a30a21; + a[7] = a00 * a21a32 - a00 * a31a22 - a01 * a20a32 + a01 * a30a22 + a02 * a20a31 - a02 * a30a21; + a[11] = -a00a11 * a32 + a00a31 * a12 + a01a10 * a32 - a01a30 * a12 - a02a10 * a31 + a02a30 * a11; + a[15] = a00a11 * a22 - a00 * a21a12 - a01a10 * a22 + a01a20 * a12 + a02a10 * a21 - a02a20 * a11; + let det = a00 * a[0] + a10 * a[4] + a20 * a[8] + a30 * a[12]; + if (!det) return null; + det = 1 / det; + a[0] *= det; + a[1] *= det; + a[2] *= det; + a[3] *= det; + a[4] *= det; + a[5] *= det; + a[6] *= det; + a[7] *= det; + a[8] *= det; + a[9] *= det; + a[10] *= det; + a[11] *= det; + a[12] *= det; + a[13] *= det; + a[14] *= det; + a[15] *= det; + return a; +} +/** + * Transposes a matrix. + * @param {import("./types.js").mat4} a + * @returns {import("./types.js").mat4} + */ function transpose(a) { + const a01 = a[1]; + const a02 = a[2]; + const a03 = a[3]; + const a12 = a[6]; + const a13 = a[7]; + const a20 = a[8]; + const a21 = a[9]; + const a23 = a[11]; + const a30 = a[12]; + const a31 = a[13]; + const a32 = a[14]; + // 1st row - keeping a00 + a[1] = a[4]; + a[2] = a20; + a[3] = a30; + // 2nd row - keeping a11 + a[4] = a01; + a[6] = a21; + a[7] = a31; + // 3rd row - keeping a22 + a[8] = a02; + a[9] = a12; + a[11] = a32; + // 4th row - keeping a33 + a[12] = a03; + a[13] = a13; + a[14] = a23; + return a; +} +/** + * Translates a matrix by a vector. + * @param {import("./types.js").mat4} a + * @param {import("./types.js").vec3} v + * @returns {import("./types.js").mat4} + */ function translate(a, param) { + let [x, y, z] = param; + a[12] += a[0] * x + a[4] * y + a[8] * z; + a[13] += a[1] * x + a[5] * y + a[9] * z; + a[14] += a[2] * x + a[6] * y + a[10] * z; + a[15] += a[3] * x + a[7] * y + a[11] * z; + return a; +} +/** + * Rotates a matrix by an angle at an axis. + * @param {import("./types.js").mat4} a + * @param {import("./types.js").Radians} r + * @param {import("./types.js").vec3} v + * @returns {import("./types.js").mat4} + */ function rotate(a, r, param) { + let [x, y, z] = param; + let len = Math.sqrt(x * x + y * y + z * z); + if (len < EPSILON) { + return null; + } + len = 1 / len; + x *= len; + y *= len; + z *= len; + const s = Math.sin(r); + const c = Math.cos(r); + const t = 1 - c; + const a00 = a[0]; + const a01 = a[1]; + const a02 = a[2]; + const a03 = a[3]; + const a10 = a[4]; + const a11 = a[5]; + const a12 = a[6]; + const a13 = a[7]; + const a20 = a[8]; + const a21 = a[9]; + const a22 = a[10]; + const a23 = a[11]; + const b00 = x * x * t + c; + const b01 = y * x * t + z * s; + const b02 = z * x * t - y * s; + const b10 = x * y * t - z * s; + const b11 = y * y * t + c; + const b12 = z * y * t + x * s; + const b20 = x * z * t + y * s; + const b21 = y * z * t - x * s; + const b22 = z * z * t + c; + a[0] = a00 * b00 + a10 * b01 + a20 * b02; + a[1] = a01 * b00 + a11 * b01 + a21 * b02; + a[2] = a02 * b00 + a12 * b01 + a22 * b02; + a[3] = a03 * b00 + a13 * b01 + a23 * b02; + a[4] = a00 * b10 + a10 * b11 + a20 * b12; + a[5] = a01 * b10 + a11 * b11 + a21 * b12; + a[6] = a02 * b10 + a12 * b11 + a22 * b12; + a[7] = a03 * b10 + a13 * b11 + a23 * b12; + a[8] = a00 * b20 + a10 * b21 + a20 * b22; + a[9] = a01 * b20 + a11 * b21 + a21 * b22; + a[10] = a02 * b20 + a12 * b21 + a22 * b22; + a[11] = a03 * b20 + a13 * b21 + a23 * b22; + return a; +} +/** + * Scales a matrix by a vector. + * @param {import("./types.js").mat4} a + * @param {import("./types.js").vec3} v + * @returns {import("./types.js").mat4} + */ function scale$1(a, param) { + let [x, y, z] = param; + a[0] *= x; + a[1] *= x; + a[2] *= x; + a[3] *= x; + a[4] *= y; + a[5] *= y; + a[6] *= y; + a[7] *= y; + a[8] *= z; + a[9] *= z; + a[10] *= z; + a[11] *= z; + return a; +} +/** + * Sets a matrix to a quaternion. + * @param {import("./types.js").mat4} a + * @param {import("./types.js").quat} q + * @returns {import("./types.js").mat4} + */ function fromQuat(a, q) { + const x = q[0]; + const y = q[1]; + const z = q[2]; + const w = q[3]; + const x2 = x + x; + const y2 = y + y; + const z2 = z + z; + const xx = x * x2; + const xy = x * y2; + const xz = x * z2; + const yy = y * y2; + const yz = y * z2; + const zz = z * z2; + const wx = w * x2; + const wy = w * y2; + const wz = w * z2; + a[0] = 1 - (yy + zz); + a[4] = xy - wz; + a[8] = xz + wy; + a[1] = xy + wz; + a[5] = 1 - (xx + zz); + a[9] = yz - wx; + a[2] = xz - wy; + a[6] = yz + wx; + a[10] = 1 - (xx + yy); + a[3] = a[7] = a[11] = a[12] = a[13] = a[14] = 0; + a[15] = 1; + return a; +} +/** + * Sets a matrix to the TRS matrix. + * @param {import("./types.js").mat4} a + * @param {import("./types.js").vec3} v + * @param {import("./types.js").quat} q + * @param {import("./types.js").vec3} s + * @returns {import("./types.js").mat4} + */ function fromTranslationRotationScale(a, v, q, s) { + // const TEMP_0 = create(); + // identity(a); + // translate(a, translation); + // mult(a, fromQuat(TEMP_0, rotation)); + // scale(a, scaling); + const x = q[0]; + const y = q[1]; + const z = q[2]; + const w = q[3]; + const x2 = x + x; + const y2 = y + y; + const z2 = z + z; + const xx = x * x2; + const xy = x * y2; + const xz = x * z2; + const yy = y * y2; + const yz = y * z2; + const zz = z * z2; + const wx = w * x2; + const wy = w * y2; + const wz = w * z2; + a[3] = a[7] = a[11] = 0; + a[15] = 1; + a[0] = (1 - (yy + zz)) * s[0]; + a[1] = (xy + wz) * s[0]; + a[2] = (xz - wy) * s[0]; + a[4] = (xy - wz) * s[1]; + a[5] = (1 - (xx + zz)) * s[1]; + a[6] = (yz + wx) * s[1]; + a[8] = (xz + wy) * s[2]; + a[9] = (yz - wx) * s[2]; + a[10] = (1 - (xx + yy)) * s[2]; + a[12] = v[0]; + a[13] = v[1]; + a[14] = v[2]; + return a; +} +/** + * Sets a 4x4 matrix to a 3x3 matrix. + * @param {import("./types.js").mat4} a + * @param {import("./types.js").mat3} b + * @returns {import("./types.js").mat4} + */ function fromMat3(a, b) { + a[0] = b[0]; + a[1] = b[1]; + a[2] = b[2]; + a[4] = b[3]; + a[5] = b[4]; + a[6] = b[5]; + a[8] = b[6]; + a[9] = b[7]; + a[10] = b[8]; + a[3] = a[7] = a[11] = a[12] = a[13] = a[14] = 0; + a[15] = 1; + return a; +} +/** + * Creates a frustum matrix. + * @param {import("./types.js").mat4} a + * @param {number} left + * @param {number} right + * @param {number} bottom + * @param {number} top + * @param {number} near + * @param {number} far + * @returns {import("./types.js").mat4} + */ function frustum(a, left, right, bottom, top, near, far) { + const rl = 1 / (right - left); + const tb = 1 / (top - bottom); + const nf = 1 / (near - far); + const near2 = near * 2; + a[0] = near2 * rl; + a[1] = a[2] = 0; + a[3] = 0; + a[4] = 0; + a[5] = near2 * tb; + a[6] = 0; + a[7] = 0; + a[8] = (right + left) * rl; + a[9] = (top + bottom) * tb; + a[10] = (far + near) * nf; + a[11] = -1; + a[12] = 0; + a[13] = 0; + a[14] = far * near2 * nf; + a[15] = 0; + return a; +} +/** + * Creates a perspective matrix. + * @param {import("./types.js").mat4} a + * @param {import("./types.js").Radians} fovy + * @param {number} aspectRatio + * @param {number} near + * @param {number} far + * @returns {import("./types.js").mat4} + */ function perspective(a, fovy, aspectRatio, near, far) { + const f = 1 / Math.tan(fovy / 2); + const nf = 1 / (near - far); + a[1] = a[2] = a[3] = a[4] = a[6] = a[7] = a[8] = a[9] = a[12] = a[13] = a[15] = 0; + a[0] = f / aspectRatio; + a[5] = f; + a[10] = (far + near) * nf; + a[11] = -1; + a[14] = 2 * far * near * nf; + return a; +} +/** + * Creates an orthographic matrix. + * @param {import("./types.js").mat4} a + * @param {number} left + * @param {number} right + * @param {number} bottom + * @param {number} top + * @param {number} near + * @param {number} far + * @returns {import("./types.js").mat4} + */ function ortho(a, left, right, bottom, top, near, far) { + const lr = left - right; + const bt = bottom - top; + const nf = near - far; + a[1] = a[2] = a[3] = a[4] = a[6] = a[7] = a[8] = a[9] = a[11] = 0; + a[0] = -2 / lr; + a[5] = -2 / bt; + a[10] = 2 / nf; + a[12] = (left + right) / lr; + a[13] = (top + bottom) / bt; + a[14] = (far + near) / nf; + a[15] = 1; + return a; +} +/** + * Calculates a lookAt matrix from position, target and up vectors. + * @param {import("./types.js").mat4} a + * @param {import("./types.js").vec3} from + * @param {import("./types.js").vec3} to + * @param {import("./types.js").vec3} [up=Y_UP] + * @returns {import("./types.js").mat4} + */ function lookAt(a, param, param1, param2) { + let [eyex, eyey, eyez] = param; + let [targetx, targety, targetz] = param1; + let [upx, upy, upz] = param2 === void 0 ? Y_UP : param2; + if (Math.abs(eyex - targetx) < EPSILON && Math.abs(eyey - targety) < EPSILON && Math.abs(eyez - targetz) < EPSILON) { + return identity(a); + } + let z0 = eyex - targetx; + let z1 = eyey - targety; + let z2 = eyez - targetz; + let len = 1 / Math.sqrt(z0 * z0 + z1 * z1 + z2 * z2); + z0 *= len; + z1 *= len; + z2 *= len; + let x0 = upy * z2 - upz * z1; + let x1 = upz * z0 - upx * z2; + let x2 = upx * z1 - upy * z0; + len = Math.sqrt(x0 * x0 + x1 * x1 + x2 * x2); + if (len) { + len = 1 / len; + x0 *= len; + x1 *= len; + x2 *= len; + } + let y0 = z1 * x2 - z2 * x1; + let y1 = z2 * x0 - z0 * x2; + let y2 = z0 * x1 - z1 * x0; + len = Math.sqrt(y0 * y0 + y1 * y1 + y2 * y2); + if (len) { + len = 1 / len; + x0 *= len; + x1 *= len; + x2 *= len; + } + a[0] = x0; + a[1] = y0; + a[2] = z0; + a[3] = 0; + a[4] = x1; + a[5] = y1; + a[6] = z1; + a[7] = 0; + a[8] = x2; + a[9] = y2; + a[10] = z2; + a[11] = 0; + a[12] = -(x0 * eyex + x1 * eyey + x2 * eyez); + a[13] = -(y0 * eyex + y1 * eyey + y2 * eyez); + a[14] = -(z0 * eyex + z1 * eyey + z2 * eyez); + a[15] = 1; + return a; +} +/** + * Sets a matrix from a vector to another. + * @param {import("./types.js").mat4} a + * @param {import("./types.js").vec3} from + * @param {import("./types.js").vec3} to + * @param {import("./types.js").vec3} [up=Y_UP] + * @returns {import("./types.js").mat4} + */ function targetTo(a, param, param1, param2) { + let [eyex, eyey, eyez] = param; + let [targetx, targety, targetz] = param1; + let [upx, upy, upz] = param2 === void 0 ? Y_UP : param2; + let z0 = eyex - targetx; + let z1 = eyey - targety; + let z2 = eyez - targetz; + let len = z0 * z0 + z1 * z1 + z2 * z2; + if (len > 0) { + len = 1 / Math.sqrt(len); + z0 *= len; + z1 *= len; + z2 *= len; + } + let x0 = upy * z2 - upz * z1; + let x1 = upz * z0 - upx * z2; + let x2 = upx * z1 - upy * z0; + len = x0 * x0 + x1 * x1 + x2 * x2; + if (len > 0) { + len = 1 / Math.sqrt(len); + x0 *= len; + x1 *= len; + x2 *= len; + } + a[0] = x0; + a[1] = x1; + a[2] = x2; + a[3] = 0; + a[4] = z1 * x2 - z2 * x1; + a[5] = z2 * x0 - z0 * x2; + a[6] = z0 * x1 - z1 * x0; + a[7] = 0; + a[8] = z0; + a[9] = z1; + a[10] = z2; + a[11] = 0; + a[12] = eyex; + a[13] = eyey; + a[14] = eyez; + a[15] = 1; + return a; +} + +var mat4 = /*#__PURE__*/Object.freeze({ + __proto__: null, + copy: copy$1, + create: create$1, + equals: equals$1, + fromMat3: fromMat3, + fromQuat: fromQuat, + fromTranslationRotationScale: fromTranslationRotationScale, + frustum: frustum, + identity: identity, + invert: invert, + lookAt: lookAt, + mult: mult, + ortho: ortho, + perspective: perspective, + rotate: rotate, + scale: scale$1, + set: set$1, + targetTo: targetTo, + translate: translate, + transpose: transpose +}); + +/** @module vec2 */ /** + * Returns a new vec2 at 0, 0, 0. + * @returns {import("./types.js").vec2} + */ function create() { + return [ + 0, + 0 + ]; +} +/** + * Returns a copy of a vector. + * @param {import("./types.js").vec2} a + * @returns {import("./types.js").vec2} + */ function copy(a) { + return a.slice(); +} +/** + * Sets a vector to another vector. + * @param {import("./types.js").vec2} a + * @param {import("./types.js").vec2} b + * @returns {import("./types.js").vec2} + */ function set(a, b) { + a[0] = b[0]; + a[1] = b[1]; + return a; +} +/** + * Compares two vectors. + * @param {import("./types.js").vec2} a + * @param {import("./types.js").vec2} b + * @returns {boolean} + */ function equals(a, b) { + return a[0] === b[0] && a[1] === b[1]; +} +/** + * Add a vector to another. + * @param {import("./types.js").vec2} a + * @param {import("./types.js").vec2} b + * @returns {import("./types.js").vec2} + */ function add(a, b) { + a[0] += b[0]; + a[1] += b[1]; + return a; +} +/** + * Subtracts a vector from another. + * @param {import("./types.js").vec2} a + * @param {import("./types.js").vec2} b + * @returns {import("./types.js").vec2} + */ function sub(a, b) { + a[0] -= b[0]; + a[1] -= b[1]; + return a; +} +/** + * Scales a vector by a number. + * @param {import("./types.js").vec2} a + * @param {number} s + * @returns {import("./types.js").vec2} + */ function scale(a, s) { + a[0] *= s; + a[1] *= s; + return a; +} +/** + * Adds two vectors after scaling the second one. + * @param {import("./types.js").vec2} a + * @param {import("./types.js").vec2} b + * @param {number} s + * @returns {import("./types.js").vec2} + */ function addScaled(a, b, s) { + a[0] += b[0] * s; + a[1] += b[1] * s; + return a; +} +/** + * Calculates the dot product of two vectors. + * @param {import("./types.js").vec2} a + * @param {import("./types.js").vec2} b + * @returns {number} + */ function dot(a, b) { + return a[0] * b[0] + a[1] * b[1]; +} +/** + * Calculates the length of a vector. + * @param {import("./types.js").vec2} a + * @returns {number} + */ function length(a) { + const x = a[0]; + const y = a[1]; + return Math.sqrt(x * x + y * y); +} +/** + * Calculates the squared length of a vector. + * @param {import("./types.js").vec2} a + * @returns {number} + */ function lengthSq(a) { + const x = a[0]; + const y = a[1]; + return x * x + y * y; +} +/** + * Normalises a vector. + * @param {import("./types.js").vec2} a + * @returns {import("./types.js").vec2} + */ function normalize(a) { + const x = a[0]; + const y = a[1]; + let l = Math.sqrt(x * x + y * y); + l = 1 / (l || 1); + a[0] *= l; + a[1] *= l; + return a; +} +/** + * Calculates the distance between two vectors. + * @param {import("./types.js").vec2} a + * @param {import("./types.js").vec2} b + * @returns {number} + */ function distance(a, b) { + const dx = b[0] - a[0]; + const dy = b[1] - a[1]; + return Math.sqrt(dx * dx + dy * dy); +} +/** + * Calculates the squared distance between two vectors. + * @param {import("./types.js").vec2} a + * @param {import("./types.js").vec2} b + * @returns {number} + */ function distanceSq(a, b) { + const dx = b[0] - a[0]; + const dy = b[1] - a[1]; + return dx * dx + dy * dy; +} +/** + * Limits a vector to a length. + * @param {import("./types.js").vec2} a + * @param {number} len + * @returns {import("./types.js").vec2} + */ function limit(a, len) { + const x = a[0]; + const y = a[1]; + const dsq = x * x + y * y; + const lsq = len * len; + if (lsq > 0 && dsq > lsq) { + const nd = len / Math.sqrt(dsq); + a[0] *= nd; + a[1] *= nd; + } + return a; +} +/** + * Linearly interpolates between two vectors. + * @param {import("./types.js").vec2} a + * @param {import("./types.js").vec2} b + * @param {number} t + * @returns {import("./types.js").vec2} + */ function lerp(a, b, t) { + const x = a[0]; + const y = a[1]; + a[0] = x + (b[0] - x) * t; + a[1] = y + (b[1] - y) * t; + return a; +} +/** + * Prints a vector to a string. + * @param {import("./types.js").vec2} a + * @param {number} [precision=4] + * @returns {string} + */ function toString(a, precision) { + if (precision === void 0) precision = 4; + const scale = 10 ** precision; + // prettier-ignore + return `[${Math.floor(a[0] * scale) / scale}, ${Math.floor(a[1] * scale) / scale}]`; +} + +var vec2 = /*#__PURE__*/Object.freeze({ + __proto__: null, + add: add, + addScaled: addScaled, + copy: copy, + create: create, + distance: distance, + distanceSq: distanceSq, + dot: dot, + equals: equals, + length: length, + lengthSq: lengthSq, + lerp: lerp, + limit: limit, + normalize: normalize, + scale: scale, + set: set, + sub: sub, + toString: toString +}); + +export { create$1 as a, create as c, distance as d, frustum as f, invert as i, lookAt as l, mat4 as m, ortho as o, perspective as p, set$1 as s, targetTo as t, vec2 as v }; diff --git a/web_modules/_chunks/vec3-81d013fb.js b/web_modules/_chunks/vec3-81d013fb.js new file mode 100644 index 00000000..87350c34 --- /dev/null +++ b/web_modules/_chunks/vec3-81d013fb.js @@ -0,0 +1,270 @@ +/** @module vec3 */ /** + * Returns a new vec3 at 0, 0, 0. + * @returns {import("./types.js").vec3} + */ function create() { + return [ + 0, + 0, + 0 + ]; +} +/** + * Returns a copy of a vector. + * @param {import("./types.js").vec3} a + * @returns {import("./types.js").vec3} + */ function copy(a) { + return a.slice(); +} +/** + * Sets a vector to another vector. + * @param {import("./types.js").vec3} a + * @param {import("./types.js").vec3} b + * @returns {import("./types.js").vec3} + */ function set(a, b) { + a[0] = b[0]; + a[1] = b[1]; + a[2] = b[2]; + return a; +} +/** + * Compares two vectors. + * @param {import("./types.js").vec3} a + * @param {import("./types.js").vec3} b + * @returns {boolean} + */ function equals(a, b) { + return a[0] === b[0] && a[1] === b[1] && a[2] === b[2]; +} +/** + * Adds a vector to another. + * @param {import("./types.js").vec3} a + * @param {import("./types.js").vec3} b + * @returns {import("./types.js").vec3} + */ function add(a, b) { + a[0] += b[0]; + a[1] += b[1]; + a[2] += b[2]; + return a; +} +/** + * Subtracts a vector from another. + * @param {import("./types.js").vec3} a + * @param {import("./types.js").vec3} b + * @returns {import("./types.js").vec3} + */ function sub(a, b) { + a[0] -= b[0]; + a[1] -= b[1]; + a[2] -= b[2]; + return a; +} +/** + * Scales a vector by a number. + * @param {import("./types.js").vec3} a + * @param {number} s + * @returns {import("./types.js").vec3} + */ function scale(a, s) { + a[0] *= s; + a[1] *= s; + a[2] *= s; + return a; +} +/** + * Adds two vectors after scaling the second one. + * @param {import("./types.js").vec3} a + * @param {import("./types.js").vec3} b + * @param {number} s + * @returns {import("./types.js").vec3} + */ function addScaled(a, b, s) { + a[0] += b[0] * s; + a[1] += b[1] * s; + a[2] += b[2] * s; + return a; +} +/** + * Multiplies a vector by a matrix. + * @param {import("./types.js").vec3} a + * @param {import("./types.js").mat4} m + * @returns {import("./types.js").vec3} + */ function multMat4(a, m) { + const x = a[0]; + const y = a[1]; + const z = a[2]; + a[0] = m[0] * x + m[4] * y + m[8] * z + m[12]; + a[1] = m[1] * x + m[5] * y + m[9] * z + m[13]; + a[2] = m[2] * x + m[6] * y + m[10] * z + m[14]; + return a; +} +/** + * Multiplies a vector by a quaternion. + * @param {import("./types.js").vec3} a + * @param {import("./types.js").quat} q + * @returns {import("./types.js").vec3} + */ function multQuat(a, q) { + const x = a[0]; + const y = a[1]; + const z = a[2]; + const qx = q[0]; + const qy = q[1]; + const qz = q[2]; + const qw = q[3]; + const ix = qw * x + qy * z - qz * y; + const iy = qw * y + qz * x - qx * z; + const iz = qw * z + qx * y - qy * x; + const iw = -qx * x - qy * y - qz * z; + a[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy; + a[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz; + a[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx; + return a; +} +/** + * Calculates the dot product of two vectors. + * @param {import("./types.js").vec3} a + * @param {import("./types.js").vec3} b + * @returns {number} + */ function dot(a, b) { + return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; +} +/** + * Calculates the cross product of two vectors. + * @param {import("./types.js").vec3} a + * @param {import("./types.js").vec3} b + * @returns {import("./types.js").vec3} + */ function cross(a, b) { + const x = a[0]; + const y = a[1]; + const z = a[2]; + const vx = b[0]; + const vy = b[1]; + const vz = b[2]; + a[0] = y * vz - vy * z; + a[1] = z * vx - vz * x; + a[2] = x * vy - vx * y; + return a; +} +/** + * Calculates the length of a vector. + * @param {import("./types.js").vec3} a + * @returns {number} + */ function length(a) { + const x = a[0]; + const y = a[1]; + const z = a[2]; + return Math.sqrt(x * x + y * y + z * z); +} +/** + * Calculates the squared length of a vector. + * @param {import("./types.js").vec3} a + * @returns {number} + */ function lengthSq(a) { + const x = a[0]; + const y = a[1]; + const z = a[2]; + return x * x + y * y + z * z; +} +/** + * Normalises a vector. + * @param {import("./types.js").vec3} a + * @returns {import("./types.js").vec3} + */ function normalize(a) { + const x = a[0]; + const y = a[1]; + const z = a[2]; + let l = Math.sqrt(x * x + y * y + z * z); + l = 1 / (l || 1); + a[0] *= l; + a[1] *= l; + a[2] *= l; + return a; +} +/** + * Calculates the distance between two vectors. + * @param {import("./types.js").vec3} a + * @param {import("./types.js").vec3} b + * @returns {number} + */ function distance(a, b) { + const dx = b[0] - a[0]; + const dy = b[1] - a[1]; + const dz = b[2] - a[2]; + return Math.sqrt(dx * dx + dy * dy + dz * dz); +} +/** + * Calculates the squared distance between two vectors. + * @param {import("./types.js").vec3} a + * @param {import("./types.js").vec3} b + * @returns {number} + */ function distanceSq(a, b) { + const dx = b[0] - a[0]; + const dy = b[1] - a[1]; + const dz = b[2] - a[2]; + return dx * dx + dy * dy + dz * dz; +} +/** + * Limits a vector to a length. + * @param {import("./types.js").vec3} a + * @param {number} len + * @returns {import("./types.js").vec3} + */ function limit(a, len) { + const x = a[0]; + const y = a[1]; + const z = a[2]; + const dsq = x * x + y * y + z * z; + const lsq = len * len; + if (lsq > 0 && dsq > lsq) { + const nd = len / Math.sqrt(dsq); + a[0] *= nd; + a[1] *= nd; + a[2] *= nd; + } + return a; +} +/** + * Linearly interpolates between two vectors. + * @param {import("./types.js").vec3} a + * @param {import("./types.js").vec3} b + * @param {number} t + * @returns {import("./types.js").vec3} + */ function lerp(a, b, t) { + const x = a[0]; + const y = a[1]; + const z = a[2]; + a[0] = x + (b[0] - x) * t; + a[1] = y + (b[1] - y) * t; + a[2] = z + (b[2] - z) * t; + return a; +} +/** + * Prints a vector to a string. + * @param {import("./types.js").vec3} a + * @param {number} [precision=4] + * @returns {string} + */ function toString(a, precision) { + if (precision === void 0) precision = 4; + const scale = 10 ** precision; + // prettier-ignore + return `[${Math.floor(a[0] * scale) / scale}, ${Math.floor(a[1] * scale) / scale}, ${Math.floor(a[2] * scale) / scale}]`; +} + +var vec3 = /*#__PURE__*/Object.freeze({ + __proto__: null, + add: add, + addScaled: addScaled, + copy: copy, + create: create, + cross: cross, + distance: distance, + distanceSq: distanceSq, + dot: dot, + equals: equals, + length: length, + lengthSq: lengthSq, + lerp: lerp, + limit: limit, + multMat4: multMat4, + multQuat: multQuat, + normalize: normalize, + scale: scale, + set: set, + sub: sub, + toString: toString +}); + +export { set as a, add as b, cross as c, create as d, copy as e, scale as f, dot as g, distance as h, length as l, multMat4 as m, normalize as n, sub as s, vec3 as v }; diff --git a/web_modules/baboon-image-uri.js b/web_modules/baboon-image-uri.js index d3e074f7..9f9fec38 100644 --- a/web_modules/baboon-image-uri.js +++ b/web_modules/baboon-image-uri.js @@ -1,3 +1,6 @@ +import { g as getDefaultExportFromCjs } from './_chunks/polyfills-3030d3af.js'; + var baboon = "data:image/png;base64,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"; +var baboon$1 = /*@__PURE__*/ getDefaultExportFromCjs(baboon); -export default baboon; +export { baboon$1 as default }; diff --git a/web_modules/bunny.js b/web_modules/bunny.js index 7f697125..c10a71d4 100644 --- a/web_modules/bunny.js +++ b/web_modules/bunny.js @@ -1,9 +1,27573 @@ -var positions = [[1.301895, 0.122622, 2.550061], [1.045326, 0.139058, 2.835156], [0.569251, 0.155925, 2.805125], [0.251886, 0.144145, 2.82928], [0.063033, 0.131726, 3.01408], [-0.277753, 0.135892, 3.10716], [-0.441048, 0.277064, 2.594331], [-1.010956, 0.095285, 2.668983], [-1.317639, 0.069897, 2.325448], [-0.751691, 0.264681, 2.381496], [0.684137, 0.31134, 2.364574], [1.347931, 0.302882, 2.201434], [-1.736903, 0.029894, 1.724111], [-1.319986, 0.11998, 0.912925], [1.538077, 0.157372, 0.481711], [1.951975, 0.081742, 1.1641], [1.834768, 0.095832, 1.602682], [2.446122, 0.091817, 1.37558], [2.617615, 0.078644, 0.742801], [-1.609748, 0.04973, -0.238721], [-1.281973, 0.230984, -0.180916], [-1.074501, 0.248204, 0.034007], [-1.201734, 0.058499, 0.402234], [-1.444454, 0.054783, 0.149579], [-4.694605, 5.075882, 1.043427], [-3.95963, 7.767394, 0.758447], [-4.753339, 5.339817, 0.665061], [-1.150325, 9.133327, -0.368552], [-4.316107, 2.893611, 0.44399], [-0.809202, 9.312575, -0.466061], [0.085626, 5.963693, 1.685666], [-1.314853, 9.00142, -0.1339], [-4.364182, 3.072556, 1.436712], [-2.022074, 7.323396, 0.678657], [1.990887, 6.13023, 0.479643], [-3.295525, 7.878917, 1.409353], [0.571308, 6.197569, 0.670657], [0.89661, 6.20018, 0.337056], [0.331851, 6.162372, 1.186371], [-4.840066, 5.599874, 2.296069], [2.138989, 6.031291, 0.228335], [0.678923, 6.026173, 1.894052], [-0.781682, 5.601573, 1.836738], [1.181315, 6.239007, 0.393293], [-3.606308, 7.376476, 2.661452], [-0.579059, 4.042511, -1.540883], [-3.064069, 8.630253, -2.597539], [-2.157271, 6.837012, 0.300191], [-2.966013, 7.821581, -1.13697], [-2.34426, 8.122965, 0.409043], [-0.951684, 5.874251, 1.415119], [-2.834853, 7.748319, 0.182406], [-3.242493, 7.820096, 0.373674], [-0.208532, 5.992846, 1.252084], [-3.048085, 8.431527, -2.129795], [1.413245, 5.806324, 2.243906], [-0.051222, 6.064901, 0.696093], [-4.204306, 2.700062, 0.713875], [-4.610997, 6.343405, 0.344272], [-3.291336, 9.30531, -3.340445], [-3.27211, 7.559239, -2.324016], [-4.23882, 6.498344, 3.18452], [-3.945317, 6.377804, 3.38625], [-4.906378, 5.472265, 1.315193], [-3.580131, 7.846717, 0.709666], [-1.995504, 6.645459, 0.688487], [-2.595651, 7.86054, 0.793351], [-0.008849, 0.305871, 0.184484], [-0.029011, 0.314116, -0.257312], [-2.522424, 7.565392, 1.804212], [-1.022993, 8.650826, -0.855609], [-3.831265, 6.595426, 3.266783], [-4.042525, 6.855724, 3.060663], [-4.17126, 7.404742, 2.391387], [3.904526, 3.767693, 0.092179], [0.268076, 6.086802, 1.469223], [-3.320456, 8.753222, -2.08969], [1.203048, 6.26925, 0.612407], [-4.406479, 2.985974, 0.853691], [-3.226889, 6.615215, -0.404243], [0.346326, 1.60211, 3.509858], [-3.955476, 7.253323, 2.722392], [-1.23204, 0.068935, 1.68794], [0.625436, 6.196455, 1.333156], [4.469132, 2.165298, 1.70525], [0.950053, 6.262899, 0.922441], [-2.980404, 5.25474, -0.663155], [-4.859043, 6.28741, 1.537081], [-3.077453, 4.641475, -0.892167], [-0.44002, 8.222503, -0.771454], [-4.034112, 7.639786, 0.389935], [-3.696045, 6.242042, 3.394679], [-1.221806, 7.783617, 0.196451], [0.71461, 6.149895, 1.656636], [-4.713539, 6.163154, 0.495369], [-1.509869, 0.913044, -0.832413], [-1.547249, 2.066753, -0.852669], [-3.757734, 5.793742, 3.455794], [-0.831911, 0.199296, 1.718536], [-3.062763, 7.52718, -1.550559], [0.938688, 6.103354, 1.820958], [-4.037033, 2.412311, 0.988026], [-4.130746, 2.571806, 1.101689], [-0.693664, 9.174283, -0.952323], [-1.286742, 1.079679, -0.751219], [1.543185, 1.408925, 3.483132], [1.535973, 2.047979, 3.655029], [0.93844, 5.84101, 2.195219], [-0.684401, 5.918492, 1.20109], [1.28844, 2.008676, 3.710781], [-3.586722, 7.435506, -1.454737], [-0.129975, 4.384192, 2.930593], [-1.030531, 0.281374, 3.214273], [-3.058751, 8.137238, -3.227714], [3.649524, 4.592226, 1.340021], [-3.354828, 7.322425, -1.412086], [0.936449, 6.209237, 1.512693], [-1.001832, 3.590411, -1.545892], [-3.770486, 4.593242, 2.477056], [-0.971925, 0.067797, 0.921384], [-4.639832, 6.865407, 2.311791], [-0.441014, 8.093595, -0.595999], [-2.004852, 6.37142, 1.635383], [4.759591, 1.92818, 0.328328], [3.748064, 1.224074, 2.140484], [-0.703601, 5.285476, 2.251988], [0.59532, 6.21893, 0.981004], [0.980799, 6.257026, 1.24223], [1.574697, 6.204981, 0.381628], [1.149594, 6.173608, 1.660763], [-3.501963, 5.895989, 3.456576], [1.071122, 5.424198, 2.588717], [-0.774693, 8.473335, -0.276957], [3.849959, 4.15542, 0.396742], [-0.801715, 4.973149, -1.068582], [-2.927676, 0.625112, 2.326393], [2.669682, 4.045542, 2.971184], [-4.391324, 4.74086, 0.343463], [1.520129, 6.270031, 0.775471], [1.837586, 6.084731, 0.109188], [1.271475, 5.975024, 2.032355], [-3.487968, 4.513249, 2.605871], [-1.32234, 1.517264, -0.691879], [-1.080301, 1.648226, -0.805526], [-3.365703, 6.910166, -0.454902], [1.36034, 0.432238, 3.075004], [-3.305013, 5.774685, 3.39142], [3.88432, 0.654141, 0.12574], [3.57254, 0.377934, 0.302501], [4.196136, 0.807999, 0.212229], [3.932997, 0.543123, 0.380579], [4.023704, 3.286125, 0.537597], [1.864455, 4.916544, 2.691677], [-4.775427, 6.499498, 1.440153], [-3.464928, 3.68234, 2.766356], [3.648972, 1.751262, 2.157485], [1.179111, 3.238846, 3.774796], [-0.171164, 0.299126, -0.592669], [-4.502912, 3.316656, 0.875188], [-0.948454, 9.214025, -0.679508], [1.237665, 6.288593, 1.046], [1.523423, 6.268963, 1.139544], [1.436519, 6.140608, 1.739316], [3.723607, 1.504355, 2.136762], [2.009495, 4.045514, 3.22053], [-1.921944, 7.249905, 0.213973], [1.254068, 1.205518, 3.474709], [-0.317087, 5.996269, 0.525872], [-2.996914, 3.934607, 2.900178], [-3.316873, 4.028154, 2.785696], [-3.400267, 4.280157, 2.689268], [-3.134842, 4.564875, 2.697192], [1.480563, 4.692567, 2.834068], [0.873682, 1.315452, 3.541585], [1.599355, 0.91622, 3.246769], [-3.292102, 7.125914, 2.768515], [3.74296, 4.511299, 0.616539], [4.698935, 1.55336, 0.26921], [-3.274387, 3.299421, 2.823946], [-2.88809, 3.410699, 2.955248], [1.171407, 1.76905, 3.688472], [1.430276, 3.92483, 3.473666], [3.916941, 2.553308, 0.018941], [0.701632, 2.442372, 3.778639], [1.562657, 2.302778, 3.660957], [4.476622, 1.152407, 0.182131], [-0.61136, 5.761367, 1.598838], [-3.102154, 3.691687, 2.903738], [1.816012, 5.546167, 2.380308], [3.853928, 4.25066, 0.750017], [1.234681, 3.581665, 3.673723], [1.862271, 1.361863, 3.355209], [1.346844, 4.146995, 3.327877], [1.70672, 4.080043, 3.274307], [0.897242, 1.908983, 3.6969], [-0.587022, 9.191132, -0.565301], [-0.217426, 5.674606, 2.019968], [0.278925, 6.120777, 0.485403], [1.463328, 3.578742, -2.001464], [-3.072985, 4.264581, 2.789502], [3.62353, 4.673843, 0.383452], [-3.053491, 8.752377, -2.908434], [-2.628687, 4.505072, 2.755601], [0.891047, 5.113781, 2.748272], [-2.923732, 3.06515, 2.866368], [0.848008, 4.754252, 2.896972], [-3.319184, 8.811641, -2.327412], [0.12864, 8.814781, -1.334456], [1.549501, 4.549331, -1.28243], [1.647161, 3.738973, 3.507719], [1.250888, 0.945599, 3.348739], [3.809662, 4.038822, 0.053142], [1.483166, 0.673327, 3.09156], [0.829726, 3.635921, 3.713103], [1.352914, 5.226651, 2.668113], [2.237352, 4.37414, 3.016386], [4.507929, 0.889447, 0.744249], [4.57304, 1.010981, 0.496588], [3.931422, 1.720989, 2.088175], [-0.463177, 5.989835, 0.834346], [-2.811236, 3.745023, 2.969587], [-2.805135, 4.219721, 2.841108], [-2.836842, 4.802543, 2.60826], [1.776716, 2.084611, 3.568638], [4.046881, 1.463478, 2.106273], [0.316265, 5.944313, 1.892785], [-2.86347, 2.776049, 2.77242], [-2.673644, 3.116508, 2.907104], [-2.621149, 4.018502, 2.903409], [-2.573447, 5.198013, 2.477481], [1.104039, 2.278985, 3.722469], [-4.602743, 4.306413, 0.902296], [-2.684878, 1.510731, 0.535039], [0.092036, 8.473269, -0.99413], [-1.280472, 5.602393, 1.928105], [-1.0279, 4.121582, -1.403103], [-2.461081, 3.304477, 2.957317], [-2.375929, 3.659383, 2.953233], [1.417579, 2.715389, 3.718767], [0.819727, 2.948823, 3.810639], [1.329962, 0.761779, 3.203724], [1.73952, 5.295229, 2.537725], [0.952523, 3.945016, 3.548229], [-2.569498, 0.633669, 2.84818], [-2.276676, 0.757013, 2.780717], [-2.013147, 7.354429, -0.003202], [0.93143, 1.565913, 3.600325], [1.249014, 1.550556, 3.585842], [2.287252, 4.072353, 3.124544], [-4.7349, 7.006244, 1.690653], [-3.500602, 8.80386, -2.009196], [-0.582629, 5.549138, 2.000923], [-1.865297, 6.356066, 1.313593], [-3.212154, 2.376143, -0.565593], [2.092889, 3.493536, -1.727931], [-2.528501, 2.784531, 2.833758], [-2.565697, 4.893154, 2.559605], [-2.153366, 5.04584, 2.465215], [1.631311, 2.568241, 3.681445], [2.150193, 4.699227, 2.807505], [0.507599, 5.01813, 2.775892], [4.129862, 1.863698, 2.015101], [3.578279, 4.50766, -0.009598], [3.491023, 4.806749, 1.549265], [0.619485, 1.625336, 3.605125], [1.107499, 2.932557, 3.790061], [-2.082292, 6.99321, 0.742601], [4.839909, 1.379279, 0.945274], [3.591328, 4.322645, -0.259497], [1.055245, 0.710686, 3.16553], [-3.026494, 7.842227, 1.624553], [0.146569, 6.119214, 0.981673], [-2.043687, 2.614509, 2.785526], [-2.302242, 3.047775, 2.936355], [-2.245686, 4.100424, 2.87794], [2.116148, 5.063507, 2.572204], [-1.448406, 7.64559, 0.251692], [2.550717, 4.9268, 2.517526], [-2.955456, 7.80293, -1.782407], [1.882995, 4.637167, 2.895436], [-2.014924, 3.398262, 2.954896], [-2.273654, 4.771227, 2.611418], [-2.162723, 7.876761, 0.702473], [-0.198659, 5.823062, 1.739272], [-1.280908, 2.133189, -0.921241], [2.039932, 4.251568, 3.136579], [1.477815, 4.354333, 3.108325], [0.560504, 3.744128, 3.6913], [-2.234018, 1.054373, 2.352782], [-3.189156, 7.686661, -2.514955], [-3.744736, 7.69963, 2.116973], [-2.283366, 2.878365, 2.87882], [-2.153786, 4.457481, 2.743529], [4.933978, 1.677287, 0.713773], [3.502146, 0.535336, 1.752511], [1.825169, 4.419253, 3.081198], [3.072331, 0.280979, 0.106534], [-0.508381, 1.220392, 2.878049], [-3.138824, 8.445394, -1.659711], [-2.056425, 2.954815, 2.897241], [-2.035343, 5.398477, 2.215842], [-3.239915, 7.126798, -0.712547], [-1.867923, 7.989805, 0.526518], [1.23405, 6.248973, 1.387189], [-0.216492, 8.320933, -0.862495], [-2.079659, 3.755709, 2.928563], [-1.78595, 4.300374, 2.805295], [-1.856589, 5.10678, 2.386572], [-1.714362, 5.544778, 2.004623], [1.722403, 4.200291, -1.408161], [0.195386, 0.086928, -1.318006], [1.393693, 3.013404, 3.710686], [-0.415307, 8.508471, -0.996883], [-1.853777, 0.755635, 2.757275], [-1.724057, 3.64533, 2.884251], [-1.884511, 4.927802, 2.530885], [-1.017174, 7.783908, -0.227078], [-1.7798, 2.342513, 2.741749], [-1.841329, 3.943996, 2.88436], [1.430388, 5.468067, 2.503467], [-2.030296, 0.940028, 2.611088], [-1.677028, 1.215666, 2.607771], [-1.74092, 2.832564, 2.827295], [4.144673, 0.631374, 0.503358], [4.238811, 0.653992, 0.762436], [-1.847016, 2.082815, 2.642674], [4.045764, 3.194073, 0.852117], [-1.563989, 8.112739, 0.303102], [-1.781627, 1.794836, 2.602338], [-1.493749, 2.533799, 2.797251], [-1.934496, 4.690689, 2.658999], [-1.499174, 5.777946, 1.747498], [-2.387409, 0.851291, 1.500524], [-1.872211, 8.269987, 0.392533], [-4.647726, 6.765771, 0.833653], [-3.157482, 0.341958, -0.20671], [-1.725766, 3.24703, 2.883579], [-1.458199, 4.079031, 2.836325], [-1.621548, 4.515869, 2.719266], [-1.607292, 4.918914, 2.505881], [-1.494661, 5.556239, 1.991599], [-1.727269, 7.423769, 0.012337], [-1.382497, 1.161322, 2.640222], [-1.52129, 4.681714, 2.615467], [-4.247127, 2.792812, 1.250843], [-1.576338, 0.742947, 2.769799], [-1.499257, 2.172763, 2.743142], [-1.480392, 3.103261, 2.862262], [1.049137, 2.625836, 3.775384], [-1.368063, 1.791587, 2.695516], [-1.307839, 2.344534, 2.767575], [-1.336758, 5.092221, 2.355225], [-1.5617, 5.301749, 2.21625], [-1.483362, 8.537704, 0.196752], [-1.517348, 8.773614, 0.074053], [-1.474302, 1.492731, 2.641433], [2.48718, 0.644247, -0.920226], [0.818091, 0.422682, 3.171218], [-3.623398, 6.930094, 3.033045], [1.676333, 3.531039, 3.591591], [1.199939, 5.683873, 2.365623], [-1.223851, 8.841201, 0.025414], [-1.286307, 3.847643, 2.918044], [-1.25857, 4.810831, 2.543605], [2.603662, 5.572146, 1.991854], [0.138984, 5.779724, 2.077834], [-1.267039, 3.175169, 2.890889], [-1.293616, 3.454612, 2.911774], [-2.60112, 1.277184, 0.07724], [2.552779, 3.649877, 3.163643], [-1.038983, 1.248011, 2.605933], [-1.288709, 4.390967, 2.761214], [-1.034218, 5.485963, 2.011467], [-1.185576, 1.464842, 2.624335], [-1.045682, 2.54896, 2.761102], [4.259176, 1.660627, 2.018096], [-0.961707, 1.717183, 2.598342], [-1.044603, 3.147464, 2.855335], [-0.891998, 4.685429, 2.669696], [-1.027561, 5.081672, 2.377939], [4.386506, 0.832434, 0.510074], [-1.014225, 9.064991, -0.175352], [-1.218752, 2.895443, 2.823785], [-0.972075, 4.432669, 2.788005], [-2.714986, 0.52425, 1.509798], [-0.699248, 1.517219, 2.645738], [-1.161581, 2.078852, 2.722795], [-0.845249, 3.286247, 2.996471], [1.068329, 4.443444, 2.993863], [3.98132, 3.715557, 1.027775], [1.658097, 3.982428, -1.651688], [-4.053701, 2.449888, 0.734746], [-0.910935, 2.214149, 2.702393], [0.087824, 3.96165, 3.439344], [-0.779714, 3.724134, 2.993429], [-1.051093, 3.810797, 2.941957], [-0.644941, 4.3859, 2.870863], [-2.98403, 8.666895, -3.691888], [-0.754304, 2.508325, 2.812999], [-4.635524, 3.662891, 0.913005], [-0.983299, 4.125978, 2.915378], [4.916497, 1.905209, 0.621315], [4.874983, 1.728429, 0.468521], [2.33127, 5.181957, 2.441697], [-0.653711, 2.253387, 2.7949], [-3.623744, 8.978795, -2.46192], [-4.555927, 6.160279, 0.215755], [-4.940628, 5.806712, 1.18383], [3.308506, 2.40326, -0.910776], [0.58835, 5.251928, -0.992886], [2.152215, 5.449733, 2.331679], [-0.712755, 0.766765, 3.280375], [-0.741771, 1.9716, 2.657235], [-4.828957, 5.566946, 2.635623], [-3.474788, 8.696771, -1.776121], [1.770417, 6.205561, 1.331627], [-0.620626, 4.064721, 2.968972], [-1.499187, 2.307735, -0.978901], [4.098793, 2.330245, 1.667951], [1.940444, 6.167057, 0.935904], [-2.314436, 1.104995, 1.681277], [-2.733629, 7.742793, 1.7705], [-0.452248, 4.719868, 2.740834], [-0.649143, 4.951713, 2.541296], [-0.479417, 9.43959, -0.676324], [-2.251853, 6.559275, 0.046819], [0.033531, 8.316907, -0.789939], [-0.513125, 0.995673, 3.125462], [-2.637602, 1.039747, 0.602434], [1.527513, 6.230089, 1.430903], [4.036124, 2.609846, 1.506498], [-3.559828, 7.877892, 1.228076], [-4.570736, 4.960193, 0.838201], [-0.432121, 5.157731, 2.467518], [-1.206735, 4.562511, -1.237054], [-0.823768, 3.788746, -1.567481], [-3.095544, 7.353613, -1.024577], [-4.056088, 7.631119, 2.062001], [-0.289385, 5.382261, 2.329421], [1.69752, 6.136483, 1.667037], [-0.168758, 5.061138, 2.617453], [2.853576, 1.605528, -1.229958], [-4.514319, 6.586675, 0.352756], [-2.558081, 7.741151, 1.29295], [1.61116, 5.92358, 2.071534], [3.936921, 3.354857, 0.091755], [-0.1633, 1.119272, 3.147975], [0.067551, 1.593475, 3.38212], [-1.303239, 2.328184, -1.011672], [-0.438093, 0.73423, 3.398384], [-4.62767, 3.898187, 0.849573], [0.286853, 4.165281, 3.284834], [-2.968052, 8.492812, -3.493693], [-0.111896, 3.696111, 3.53791], [-3.808245, 8.451731, -1.574742], [0.053416, 5.558764, 2.31107], [3.956269, 3.012071, 0.11121], [-0.710956, 8.106561, -0.665154], [0.234725, 2.717326, 3.722379], [-0.031594, 2.76411, 3.657347], [-0.017371, 4.700633, 2.81911], [0.215064, 5.034859, 2.721426], [-0.111151, 8.480333, -0.649399], [3.97942, 3.575478, 0.362219], [0.392962, 4.735392, 2.874321], [4.17015, 2.085087, 1.865999], [0.169054, 1.244786, 3.337709], [0.020049, 3.165818, 3.721736], [0.248212, 3.595518, 3.698376], [0.130706, 5.295541, 2.540034], [-4.541357, 4.798332, 1.026866], [-1.277485, 1.289518, -0.667272], [3.892133, 3.54263, -0.078056], [4.057379, 3.03669, 0.997913], [0.287719, 0.884758, 3.251787], [0.535771, 1.144701, 3.400096], [0.585303, 1.399362, 3.505353], [0.191551, 2.076246, 3.549355], [0.328656, 2.394576, 3.649623], [0.413124, 3.240728, 3.771515], [0.630361, 4.501549, 2.963623], [0.529441, 5.854392, 2.120225], [3.805796, 3.769958, -0.162079], [3.447279, 4.344846, -0.467276], [0.377618, 5.551116, 2.426017], [0.409355, 1.821269, 3.606333], [0.719959, 2.194726, 3.703851], [0.495922, 3.501519, 3.755661], [0.603408, 5.354097, 2.603088], [-4.605056, 7.531978, 1.19579], [0.907972, 0.973128, 3.356513], [0.750134, 3.356137, 3.765847], [0.4496, 3.993244, 3.504544], [-3.030738, 7.48947, -1.259169], [0.707505, 5.602005, 2.43476], [0.668944, 0.654891, 3.213797], [0.593244, 2.700978, 3.791427], [1.467759, 3.30327, 3.71035], [3.316249, 2.436388, 2.581175], [3.26138, 1.724425, 2.539028], [-1.231292, 7.968263, 0.281414], [-0.108773, 8.712307, -0.790607], [4.445684, 1.819442, 1.896988], [1.998959, 2.281499, 3.49447], [2.162269, 2.113817, 3.365449], [4.363397, 1.406731, 1.922714], [4.808, 2.225842, 0.611127], [2.735919, 0.771812, -0.701142], [1.897735, 2.878428, 3.583482], [-3.31616, 5.331985, 3.212394], [-3.3314, 6.018137, 3.313018], [-3.503183, 6.480103, 3.222216], [-1.904453, 5.750392, 1.913324], [-1.339735, 3.559592, -1.421817], [-1.044242, 8.22539, 0.037414], [1.643492, 3.110676, 3.647424], [3.992832, 3.686244, 0.710946], [1.774207, 1.71842, 3.475768], [-3.438842, 5.5713, 3.427818], [4.602447, 1.2583, 1.619528], [-0.925516, 7.930042, 0.072336], [-1.252093, 3.846565, -1.420761], [-3.426857, 5.072419, 2.97806], [-3.160408, 6.152629, 3.061869], [3.739931, 3.367082, 2.041273], [1.027419, 4.235891, 3.251253], [4.777703, 1.887452, 1.560409], [-3.318528, 6.733796, 2.982968], [2.929265, 4.962579, 2.271079], [3.449761, 2.838629, 2.474576], [-3.280159, 5.029875, 2.787514], [4.068939, 2.993629, 0.741567], [0.303312, 8.70927, -1.121972], [0.229852, 8.981322, -1.186075], [-0.011045, 9.148156, -1.047057], [-2.942683, 5.579613, 2.929297], [-3.145409, 5.698727, 3.205778], [-3.019089, 6.30887, 2.794323], [-3.217135, 6.468191, 2.970032], [-3.048298, 6.993641, 2.623378], [-3.07429, 6.660982, 2.702434], [3.612011, 2.5574, 2.25349], [2.54516, 4.553967, 2.75884], [-1.683759, 7.400787, 0.250868], [-1.756066, 7.463557, 0.448031], [-3.023761, 5.149697, 2.673539], [3.112376, 2.677218, 2.782378], [2.835327, 4.581196, 2.567146], [-2.973799, 7.225458, 2.506988], [-0.591645, 8.740662, -0.505845], [3.782861, 2.04337, 2.03066], [3.331604, 3.36343, 2.605047], [2.966866, 1.205497, 2.537432], [0.002669, 9.654748, -1.355559], [2.632801, 0.58497, 2.540311], [-2.819398, 5.087372, 2.521098], [2.616193, 5.332961, 2.194288], [-3.193973, 4.925634, 2.607924], [-3.12618, 5.27524, 2.944544], [-0.426003, 8.516354, -0.501528], [2.802717, 1.387643, 2.751649], [-3.120597, 7.889111, -2.75431], [2.636648, 1.71702, 2.991302], [-2.853151, 6.711792, 2.430276], [-2.843836, 6.962865, 2.400842], [1.9696, 3.199023, 3.504514], [-2.461751, 0.386352, 3.008994], [1.64127, 0.495758, 3.02958], [-4.330472, 5.409831, 0.025287], [-2.912387, 5.980416, 2.844261], [-2.490069, 0.211078, 2.985391], [3.581816, 4.809118, 0.733728], [2.693199, 2.647213, 3.126709], [-0.182964, 8.184108, -0.638459], [-2.226855, 0.444711, 2.946552], [-0.720175, 8.115055, 0.017689], [2.645302, 4.316212, 2.850139], [-0.232764, 9.329503, -0.918639], [4.852365, 1.471901, 0.65275], [2.76229, 2.014994, 2.957755], [-2.808374, 5.354301, 2.644695], [-2.790967, 6.406963, 2.547985], [-1.342684, 0.418488, -1.669183], [2.690675, 5.593587, -0.041236], [4.660146, 1.6318, 1.713314], [2.775667, 3.007229, 3.111332], [-0.396696, 8.963432, -0.706202], [2.446707, 2.740617, 3.321433], [-4.803209, 5.884634, 2.603672], [-2.652003, 1.6541, 1.5078], [3.932327, 3.972874, 0.831924], [2.135906, 0.955587, 2.986608], [2.486131, 2.053802, 3.124115], [-0.386706, 8.115753, -0.37565], [-2.720727, 7.325044, 2.224878], [-1.396946, 7.638016, -0.16486], [-0.62083, 7.989771, -0.144413], [-2.653272, 5.729684, 2.667679], [3.038188, 4.65835, 2.364142], [2.381721, 0.739472, 2.788992], [-2.345829, 5.474929, 2.380633], [-2.518983, 6.080562, 2.479383], [-2.615793, 6.839622, 2.186116], [-2.286566, 0.143752, 2.766848], [-4.771219, 6.508766, 1.070797], [3.717308, 2.905019, 2.097994], [2.50521, 3.016743, 3.295898], [2.208448, 1.56029, 3.216806], [3.346783, 1.01254, 2.119951], [2.653503, 3.26122, 3.175738], [-2.359636, 5.827519, 2.402297], [-1.952693, 0.558102, 2.853307], [-0.321562, 9.414885, -1.187501], [3.138923, 1.405072, 2.520765], [1.493728, 1.780051, 3.621969], [3.01817, 0.907291, 2.336909], [3.183548, 1.185297, 2.352175], [1.608619, 5.006753, 2.695131], [-4.723919, 6.836107, 1.095288], [-1.017586, 8.865429, -0.149328], [4.730762, 1.214014, 0.64008], [-2.135182, 6.647907, 1.495471], [-2.420382, 6.546114, 2.108209], [-2.458053, 7.186346, 1.896623], [3.437124, 0.275798, 1.138203], [0.095925, 8.725832, -0.926481], [2.417376, 2.429869, 3.287659], [2.279951, 1.200317, 3.049994], [2.674753, 2.326926, 3.044059], [-2.328123, 6.849164, 1.75751], [-3.418616, 7.853407, 0.126248], [-3.151587, 7.77543, -0.110889], [2.349144, 5.653242, 2.05869], [-2.273236, 6.085631, 2.242888], [-4.560601, 4.525342, 1.261241], [2.866334, 3.796067, 2.934717], [-2.17493, 6.505518, 1.791367], [3.12059, 3.283157, 2.818869], [3.037703, 3.562356, 2.866653], [0.066233, 9.488418, -1.248237], [2.749941, 0.975018, 2.573371], [-2.155749, 5.801033, 2.204009], [-2.162778, 6.261889, 2.028596], [1.936874, 0.459142, 2.956718], [3.176249, 4.335541, 2.440447], [4.356599, 1.029423, 1.700589], [3.873502, 3.082678, 1.80431], [2.895489, 4.243034, 2.735259], [-0.095774, 9.468195, -1.07451], [-1.124982, 7.886808, -0.480851], [3.032304, 3.065454, 2.897927], [3.692687, 4.5961, 0.957858], [-3.013045, 3.807235, -1.098381], [-0.790012, 8.92912, -0.367572], [1.905793, 0.73179, 2.996728], [3.530396, 3.426233, 2.356583], [2.12299, 0.624933, 2.929167], [-2.069196, 6.039284, 2.01251], [-3.565623, 7.182525, 2.850039], [2.959264, 2.376337, 2.829242], [2.949071, 1.822483, 2.793933], [4.036142, 0.763803, 1.703744], [-1.993527, 6.180318, 1.804936], [-0.030987, 0.766389, 3.344766], [-0.549683, 8.225193, -0.189341], [-0.765469, 8.272246, -0.127174], [-2.947047, 7.541648, -0.414113], [-3.050327, 9.10114, -3.435619], [3.488566, 2.231807, 2.399836], [3.352283, 4.727851, 1.946438], [4.741011, 2.162773, 1.499574], [-1.815093, 6.072079, 1.580722], [-3.720969, 8.267927, -0.984713], [1.932826, 3.714052, 3.427488], [3.323617, 4.438961, 2.20732], [0.254111, 9.26364, -1.373244], [-1.493384, 7.868585, -0.450051], [-0.841901, 0.776135, -1.619467], [0.243537, 6.027668, 0.091687], [0.303057, 0.313022, -0.531105], [-0.435273, 0.474098, 3.481552], [2.121507, 2.622389, 3.486293], [1.96194, 1.101753, 3.159584], [3.937991, 3.407551, 1.551392], [0.070906, 0.295753, 1.377185], [-1.93588, 7.631764, 0.651674], [-2.523531, 0.744818, -0.30985], [2.891496, 3.319875, 2.983079], [4.781765, 1.547061, 1.523129], [-2.256064, 7.571251, 0.973716], [3.244861, 3.058249, 2.724392], [-0.145855, 0.437775, 3.433662], [1.586296, 5.658538, 2.358487], [3.658336, 3.774921, 2.071837], [2.840463, 4.817098, 2.46376], [-1.219464, 8.122542, -0.672808], [-2.520906, 2.664486, -1.034346], [-1.315417, 8.471365, -0.709557], [3.429165, 3.74686, 2.446169], [3.074579, 3.840758, 2.767409], [3.569443, 3.166337, 2.333647], [2.294337, 3.280051, 3.359346], [2.21816, 3.66578, 3.269222], [2.158662, 4.151444, -1.357919], [1.13862, 4.380986, -1.404565], [3.388382, 2.749931, -0.840949], [3.059892, 5.084848, 2.026066], [3.204739, 2.075145, 2.640706], [3.387065, 1.42617, 2.305275], [3.910398, 2.670742, 1.750179], [3.471512, 1.945821, 2.395881], [4.08082, 1.070654, 1.960171], [-1.057861, 0.133036, 2.146707], [-0.151749, 5.53551, -0.624323], [3.233099, 4.003778, 2.571172], [2.611726, 5.319199, -0.499388], [2.682909, 1.094499, -1.206247], [-1.22823, 7.656887, 0.041409], [-2.293247, 7.259189, 0.013844], [0.081315, 0.202174, 3.286381], [-1.002038, 5.794454, -0.187194], [3.448856, 4.08091, 2.258325], [0.287883, 9.006888, -1.550641], [-3.851019, 4.059839, -0.646922], [3.610966, 4.205438, 1.913129], [2.239042, 2.950872, 3.449959], [0.216305, 0.442843, 3.328052], [1.87141, 2.470745, 3.574559], [3.811378, 2.768718, -0.228364], [2.511081, 1.362724, 2.969349], [-1.59813, 7.866506, 0.440184], [-3.307975, 2.851072, -0.894978], [-0.107011, 8.90573, -0.884399], [-3.855315, 2.842597, -0.434541], [2.517853, 1.090768, 2.799687], [3.791709, 2.36685, 2.002703], [4.06294, 2.773922, 0.452723], [-2.973289, 7.61703, -0.623653], [-2.95509, 8.924462, -3.446319], [2.861402, 0.562592, 2.184397], [-1.109725, 8.594206, -0.076812], [-0.725722, 7.924485, -0.381133], [-1.485587, 1.329994, -0.654405], [-4.342113, 3.233735, 1.752922], [-2.968049, 7.955519, -2.09405], [-3.130948, 0.446196, 0.85287], [-4.958475, 5.757329, 1.447055], [-3.086547, 7.615193, -1.953168], [-3.751923, 5.412821, 3.373373], [-4.599645, 7.480953, 1.677134], [1.133992, 0.274871, 0.032249], [-2.956512, 8.126905, -1.785461], [-0.960645, 4.73065, -1.191786], [-2.871064, 0.875559, 0.424881], [-4.932114, 5.99614, 1.483845], [-2.981761, 8.124612, -1.387276], [0.362298, 8.978545, -1.368024], [-4.408375, 3.046271, 0.602373], [2.865841, 2.322263, -1.344625], [-4.7848, 5.620895, 0.594432], [-2.88322, 0.338931, 1.67231], [-4.688101, 6.772931, 1.872318], [-4.903948, 6.164698, 1.27135], [2.85663, 1.005647, -0.906843], [2.691286, 0.209811, 0.050512], [-4.693636, 6.477556, 0.665796], [-4.472331, 6.861067, 0.477318], [0.883065, 0.204907, 3.073933], [-0.995867, 8.048729, -0.653897], [-0.794663, 5.670397, -0.390119], [3.313153, 1.638006, -0.722289], [-4.856459, 5.394758, 1.032591], [-3.005448, 7.783023, -0.819641], [3.11891, 2.036974, -1.08689], [-2.364319, 2.408419, 2.63419], [-2.927132, 8.75435, -3.537159], [-3.296222, 7.964629, -3.134625], [-1.642041, 4.13417, -1.301665], [2.030759, 0.176372, -1.030923], [-4.559069, 3.751053, 0.548453], [3.438385, 4.59454, -0.243215], [-2.561769, 7.93935, 0.177696], [2.990593, 1.335314, -0.943177], [1.2808, 0.276396, -0.49072], [-0.318889, 0.290684, 0.211143], [3.54614, 3.342635, -0.767878], [-3.073372, 7.780018, -2.357807], [-4.455388, 4.387245, 0.361038], [-4.659393, 6.276064, 2.767014], [0.636799, 4.482223, -1.426284], [-2.987681, 8.072969, -2.45245], [-2.610445, 0.763554, 1.792054], [3.358241, 2.006707, -0.802973], [-0.498347, 0.251594, 0.962885], [3.1322, 0.683312, 2.038777], [-4.389801, 7.493776, 0.690247], [0.431467, 4.22119, -1.614215], [-4.376181, 3.213141, 0.273255], [-4.872319, 5.715645, 0.829714], [-4.826893, 6.195334, 0.849912], [3.516562, 2.23732, -0.677597], [3.131656, 1.698841, -0.975761], [-4.754925, 5.411666, 1.989303], [-2.987299, 7.320765, -0.629479], [-3.757635, 3.274862, -0.744022], [3.487044, 2.541999, -0.699933], [-4.53274, 4.649505, 0.77093], [-1.424192, 0.099423, 2.633327], [3.090867, 2.476975, -1.146957], [-2.713256, 0.815622, 2.17311], [3.348121, 3.254167, -0.984896], [-3.031379, 0.16453, -0.309937], [-0.949757, 4.518137, -1.309172], [-0.889509, 0.095256, 1.288803], [3.539594, 1.966105, -0.553965], [-4.60612, 7.127749, 0.811958], [-2.332953, 1.444713, 1.624548], [3.136293, 2.95805, -1.138272], [3.540808, 3.069058, -0.735285], [3.678852, 2.362375, -0.452543], [-4.648898, 7.37438, 0.954791], [-0.646871, 0.19037, 3.344746], [2.2825, 0.29343, -0.826273], [-4.422291, 7.183959, 0.557517], [-4.694668, 5.246103, 2.541768], [-4.583691, 4.145486, 0.600207], [-2.934854, 7.912513, -1.539269], [-3.067861, 7.817472, -0.546501], [3.825095, 3.229512, -0.237547], [2.532494, 0.323059, 2.387105], [-2.514583, 0.692857, 1.23597], [-4.736805, 7.214384, 1.259421], [-2.98071, 8.409903, -2.468199], [2.621468, 1.385844, -1.406355], [3.811447, 3.560855, 1.847828], [3.432925, 1.497205, -0.489784], [3.746609, 3.631538, -0.39067], [3.594909, 2.832257, -0.576012], [-0.404192, 5.300188, -0.856561], [-4.762996, 6.483774, 1.702648], [-4.756612, 6.786223, 1.43682], [-2.965309, 8.437217, -2.785495], [2.863867, 0.74087, -0.429684], [4.02503, 2.968753, 1.392419], [3.669036, 1.833858, -0.304971], [-2.888864, 0.720537, 0.778057], [-2.36982, 0.979443, 1.054447], [-2.959259, 8.222303, -2.659724], [-3.467825, 7.545739, -2.333445], [2.153426, 0.446256, -1.20523], [-3.229807, 9.189699, -3.596609], [-3.72486, 8.773707, -2.046671], [3.687218, 3.297751, -0.523746], [1.381025, 0.08815, -1.185668], [-2.796828, 7.205622, -0.208783], [3.647194, 4.066232, -0.291507], [-4.578376, 3.885556, 1.52546], [-2.840262, 0.63094, 1.89499], [-2.429514, 0.922118, 1.820781], [-4.675079, 6.573925, 2.423363], [2.806207, 4.320188, -1.027372], [-1.289608, 0.097241, 1.321661], [-3.010731, 8.141334, -2.866148], [3.202291, 1.235617, -0.549025], [4.094792, 2.477519, 0.304581], [2.948403, 0.966873, -0.664857], [-4.83297, 5.920587, 2.095461], [-2.169693, 7.257277, 0.946184], [-1.335807, 3.057597, -1.303166], [-1.037877, 0.64151, -1.685271], [2.627919, 0.089814, 0.439074], [3.815794, 3.808102, 1.730493], [-2.973455, 8.433141, -3.08872], [-2.391558, 7.331428, 1.658264], [-4.333107, 4.529978, 1.850516], [-4.640293, 3.767107, 1.168841], [3.600716, 4.46931, 1.734024], [3.880803, 1.730158, -0.172736], [3.814183, 4.262372, 1.167042], [4.37325, 0.829542, 1.413729], [2.490447, 5.75111, 0.011492], [3.460003, 4.962436, 1.188971], [3.918419, 3.814234, 1.358271], [-0.807595, 8.840504, -0.953711], [3.752855, 4.20577, 1.57177], [-2.991085, 8.816501, -3.244595], [-2.333196, 7.128889, 1.551985], [3.977718, 3.570941, 1.25937], [4.360071, 0.755579, 1.079916], [4.637579, 1.027973, 1.032567], [-2.317, 7.421066, 1.329589], [-1.013404, 8.293662, -0.7823], [4.548023, 1.020644, 1.420462], [4.763258, 1.266798, 1.296203], [4.896, 2.073084, 1.255213], [4.015005, 3.325226, 1.093879], [4.94885, 1.860936, 0.894463], [-2.189645, 6.954634, 1.270077], [4.887442, 1.720992, 1.288526], [-3.184068, 7.871802, 0.956189], [-1.274318, 0.839887, -1.224389], [-2.919521, 7.84432, 0.541629], [-2.994586, 7.766102, 1.96867], [-3.417504, 9.241714, -3.093201], [-3.174563, 7.466456, 2.473617], [-3.263067, 9.069412, -3.003459], [-2.841592, 0.529833, 2.693434], [-3.611069, 9.158804, -2.829871], [-4.642828, 5.927526, 0.320549], [-3.809308, 9.051035, -2.692749], [-2.837582, 7.487987, -0.106206], [4.773025, 2.330442, 1.213899], [4.897435, 2.209906, 0.966657], [-3.067637, 8.164062, -1.12661], [-3.122129, 8.08074, -0.899194], [4.571019, 2.358113, 1.462054], [4.584884, 2.454418, 0.709466], [-3.661093, 7.146581, -0.475948], [4.735131, 2.415859, 0.933939], [4.207556, 2.540018, 1.218293], [-3.607595, 7.89161, -0.121172], [-1.527952, 0.775564, -1.061903], [4.53874, 2.503273, 1.099583], [-3.938837, 7.587988, 0.082449], [-4.853582, 6.152409, 1.787943], [-4.752214, 6.247234, 2.296873], [4.602935, 2.363955, 0.488901], [-1.81638, 6.365879, 0.868272], [0.595467, 4.744074, -1.32483], [1.87635, 3.511986, -1.842924], [4.330947, 2.534326, 0.720503], [4.108736, 2.750805, 0.904552], [-1.890939, 8.492628, -0.290768], [-3.504309, 6.173058, -0.422804], [-1.611992, 6.196732, 0.648736], [-3.899149, 7.826123, 1.088845], [-3.078303, 3.008813, -1.035784], [-2.798999, 7.844899, 1.340061], [-1.248839, 5.959105, 0.041761], [0.767779, 4.337318, 3.090817], [-3.831177, 7.515605, 2.432261], [-1.667528, 6.156208, 0.365267], [-1.726078, 6.237384, 1.100059], [-3.972037, 4.520832, -0.370756], [-4.40449, 7.636357, 1.520425], [-1.34506, 6.004054, 1.293159], [-1.233556, 6.049933, 0.500651], [-3.696869, 7.79732, 0.37979], [-3.307798, 8.949964, -2.698113], [-1.997295, 6.615056, 1.103691], [-3.219222, 8.336394, -1.150614], [-3.452623, 8.31866, -0.9417], [-3.94641, 2.990494, 2.212592], [-3.250025, 8.030414, -0.596097], [-2.02375, 1.571333, 2.397939], [-3.190358, 7.665013, 2.268183], [-2.811918, 7.618526, 2.145587], [-1.005265, 5.892303, 0.072158], [-0.93721, 5.974148, 0.906669], [-4.646072, 7.492193, 1.45312], [-0.252931, 1.797654, 3.140638], [-1.076064, 5.738433, 1.695953], [-3.980534, 7.744391, 1.735791], [-0.721187, 5.939396, 0.526032], [-0.42818, 5.919755, 0.229001], [-1.43429, 6.11622, 0.93863], [-0.985638, 5.939683, 0.290636], [-4.433836, 7.461372, 1.966437], [-3.696398, 7.844859, 1.547325], [-3.390772, 7.820186, 1.812204], [-2.916787, 7.864019, 0.804341], [-3.715952, 8.037269, -0.591341], [-4.204634, 7.72919, 1.119866], [-4.592233, 5.592883, 0.246264], [3.307299, 5.061701, 1.622917], [-3.515159, 7.601467, 2.368914], [-3.435742, 8.533457, -1.37916], [-0.269421, 4.545635, -1.366445], [-2.542124, 3.768736, -1.258512], [-3.034003, 7.873773, 1.256854], [-2.801399, 7.856028, 1.080137], [3.29354, 5.220894, 1.081767], [-2.35109, 1.299486, 1.01206], [-3.232213, 7.768136, 2.047563], [3.290415, 5.217525, 0.68019], [-3.415109, 7.731034, 2.144326], [3.440357, 4.962463, 0.373387], [3.147346, 5.352121, 1.386923], [2.847252, 5.469051, 1.831981], [3.137682, 5.410222, 1.050188], [3.102694, 5.310456, 1.676434], [-3.044601, 0.39515, 1.994084], [2.903647, 5.561338, 1.518598], [-3.810148, 8.093598, -0.889131], [4.234835, 0.803054, 1.593271], [3.240165, 5.228747, 0.325955], [3.037452, 5.509825, 0.817137], [2.635031, 5.795187, 1.439724], [3.071607, 5.318303, 0.080142], [2.909167, 5.611751, 1.155874], [3.044889, 5.465928, 0.486566], [2.502256, 5.770673, 1.740054], [-0.067497, 0.086416, -1.190239], [2.33326, 5.906051, 0.138295], [0.65096, 4.205423, 3.308767], [-2.671137, 7.936535, 0.432731], [2.14463, 5.879214, 1.866047], [-4.776469, 5.890689, 0.561986], [2.72432, 5.655145, 0.211951], [2.730488, 5.751455, 0.695894], [2.572682, 5.869295, 1.152663], [1.906776, 5.739123, 2.196551], [2.344414, 5.999961, 0.772922], [-3.377905, 7.448708, -1.863251], [2.285149, 5.968156, 1.459258], [2.385989, 5.928974, 0.3689], [2.192111, 6.087516, 0.959901], [2.36372, 6.001101, 1.074346], [1.972022, 6.079603, 1.591175], [1.87615, 5.976698, 1.91554], [-3.824761, 9.05372, -2.928615], [2.044704, 6.129704, 1.263111], [-2.583046, 0.849537, 2.497344], [-0.078825, 2.342205, 3.520322], [-0.704686, 0.537165, 3.397194], [-0.257449, 3.235334, 3.647545], [-0.332064, 1.448284, 3.022583], [-2.200146, 0.898284, -0.447212], [-2.497508, 1.745446, 1.829167], [0.30702, 4.416315, 2.978956], [-3.205197, 3.479307, -1.040582], [0.110069, 9.347725, -1.563686], [-0.82754, 0.883886, 3.065838], [-2.017103, 1.244785, 2.42512], [-0.421091, 2.309929, 3.153898], [-0.491604, 3.796072, 3.16245], [2.786955, 3.501241, -1.340214], [-3.229055, 4.380713, -0.899241], [3.730768, 0.76845, 1.90312], [-0.561079, 2.652382, 3.152463], [-3.461471, 3.086496, 2.662505], [-0.661405, 3.446009, 3.179939], [-0.915351, 0.636755, 3.243708], [-2.992964, 8.915628, -3.729833], [-0.439627, 3.502104, 3.42665], [-1.154217, 0.883181, 2.800835], [-1.736193, 1.465474, 2.595489], [-0.423928, 3.24435, 3.548277], [-0.511153, 2.871046, 3.379749], [-0.675722, 2.991756, 3.143262], [-1.092602, 0.599103, 3.090639], [-0.89821, 2.836952, 2.840023], [-2.658412, 0.781376, 0.960575], [-2.271455, 1.222857, 1.330478], [-0.877861, 1.111222, 2.72263], [-0.306959, 2.876987, 3.556044], [-3.839274, 7.84138, -0.918404], [-0.172094, 4.083799, 3.141708], [-1.548332, 0.2529, 2.864655], [-0.217353, 4.873911, -1.223104], [-3.384242, 3.181056, -0.95579], [-2.731704, 0.382421, 2.895502], [-1.285037, 0.551267, 2.947675], [0.077224, 4.246579, 3.066738], [-0.479979, 1.77955, 2.860011], [-0.716375, 1.224694, 2.666751], [-0.54622, 3.138255, 3.393457], [-2.33413, 1.821222, 2.124883], [-0.50653, 2.037147, 2.897465], [2.451291, 1.211389, -1.466589], [-3.160047, 2.894081, 2.724286], [-4.137258, 5.433431, 3.21201], [0.462896, 0.320456, -0.174837], [-0.37458, 2.609447, 3.379253], [-3.095244, 0.256205, 2.196446], [-4.197985, 5.732991, 3.262924], [-0.729747, 0.246036, 0.497036], [-2.356189, 5.062, -0.965619], [-1.609036, 0.25962, -1.487367], [-4.074381, 6.074061, 3.409459], [-3.619304, 4.0022, 2.65705], [-0.543393, 8.742896, -1.056622], [-4.30356, 6.858934, 2.879642], [-0.716688, 2.901831, -2.11202], [1.547362, 0.083189, 1.138764], [-0.250916, 0.275268, 1.201344], [-3.778035, 3.13624, 2.466177], [-4.594316, 5.771342, 3.01694], [-3.717706, 3.442887, 2.603344], [-4.311163, 5.224669, 3.019373], [-0.610389, 2.095161, -1.923515], [-3.040086, 6.196918, -0.429149], [-3.802695, 3.768247, 2.545523], [-0.159541, 2.043362, 3.328549], [-3.744329, 4.31785, 2.491889], [-3.047939, 0.214155, 1.873639], [-4.41685, 6.113058, 3.166774], [-1.165133, 0.460692, -1.742134], [-1.371289, 4.249996, -1.317935], [-3.447883, 0.3521, 0.466205], [-4.495555, 6.465548, 2.944147], [-3.455335, 0.171653, 0.390816], [-3.964028, 4.017196, 2.376009], [-1.323595, 1.763126, -0.750772], [-3.971142, 5.277524, -0.19496], [-3.222052, 0.237723, 0.872229], [-4.403784, 3.89107, 1.872077], [-3.333311, 0.342997, 0.661016], [-4.495871, 4.29606, 1.63608], [-3.636081, 2.760711, 2.361949], [-4.487235, 3.559608, 1.66737], [-4.719787, 7.26888, 1.658722], [-1.086143, 9.035741, -0.707144], [-2.339693, 1.600485, -0.404817], [-4.642011, 7.123829, 1.990987], [-1.498077, 3.854035, -1.369787], [-4.188372, 4.729363, 2.02983], [-3.116344, 5.882284, -0.468884], [-4.305236, 4.246417, 1.976991], [-3.022509, 0.22819, 1.065688], [-2.799916, 0.52022, 1.128319], [-4.262823, 3.534409, 2.020383], [-4.221533, 3.947676, 2.11735], [-3.744353, 4.391712, -0.6193], [-1.272905, 0.156694, -1.741753], [-3.62491, 2.669825, -0.549664], [-4.180756, 3.096179, 1.987215], [-4.059276, 4.305313, 2.232924], [-2.812753, 0.183226, 1.370267], [-4.032437, 3.512234, 2.309985], [-0.03787, 0.28188, 0.530391], [-4.711562, 5.468653, 2.822838], [-4.500636, 6.953314, 2.564445], [-4.479433, 7.216991, 2.270682], [3.990562, 0.50522, 0.716309], [-2.512229, 6.863447, -0.100658], [-2.968058, 6.956639, -0.37061], [2.550375, 3.142683, -1.54068], [-2.320059, 3.521605, -1.279397], [-4.556319, 6.64662, 2.745363], [-4.281091, 7.108116, 2.667598], [-2.050095, 8.411689, 0.121353], [-2.44854, 1.135487, 0.851875], [3.121815, 0.699943, -0.277167], [-4.69877, 6.00376, 2.843035], [-1.360599, 8.824742, -0.595597], [1.128437, 0.171611, 0.301691], [-4.360146, 6.289423, 0.042233], [1.400795, 4.088829, -1.620409], [-3.193462, 8.460137, -3.559446], [-3.168771, 8.878431, -3.635795], [-3.434275, 9.304302, -3.460878], [-3.349993, 8.808093, -3.38179], [-3.304823, 8.323865, -3.325905], [-3.572607, 9.308843, -3.207672], [-3.166393, 8.201215, -3.43014], [-3.451638, 9.05331, -3.351345], [-3.309591, 8.549758, -3.375055], [-3.527992, 8.793926, -3.100376], [-3.6287, 8.981677, -3.076319], [-3.445505, 8.001887, -2.8273], [-3.408011, 8.221014, -3.039237], [-3.65928, 8.740382, -2.808856], [-3.878019, 8.797295, -2.462866], [-3.515132, 8.232341, -2.747739], [-3.460331, 8.51524, -3.06818], [-3.403703, 7.658628, -2.648789], [-3.507113, 8.00159, -2.582275], [-3.607373, 8.174737, -2.401723], [-3.749043, 8.378084, -2.226959], [-3.648514, 8.502213, -2.6138], [-2.534199, 0.904753, 2.021148], [1.4083, 5.744252, -0.571402], [-3.852536, 8.571009, -2.352358], [2.868255, 5.373126, -0.163705], [2.224363, 4.669891, -1.061586], [-4.528281, 4.885838, 1.340274], [1.30817, 4.609629, -1.28762], [-4.519698, 3.422501, 1.354826], [-3.549955, 7.783228, -2.332859], [1.12313, 6.120856, 0.045115], [-3.620324, 7.57716, -2.033423], [-0.798833, 2.624133, -1.992682], [-3.617587, 7.783148, -2.051383], [-3.669293, 8.103776, -2.10227], [-3.892417, 8.667436, -2.167288], [-0.537435, 0.285345, -0.176267], [-0.841522, 3.299866, -1.887861], [-0.761547, 3.647082, -1.798953], [-3.661544, 7.85708, -1.867924], [-3.886763, 8.551783, -1.889171], [-0.591244, 1.549749, -1.714784], [-0.775276, 1.908218, -1.597609], [-0.961458, 2.573273, -1.695549], [-2.215672, 1.335009, 2.143031], [-4.622674, 4.130242, 1.220683], [1.07344, 0.290099, 1.584734], [-0.976906, 2.92171, -1.76667], [-1.13696, 3.194401, -1.513455], [-3.743262, 7.99949, -1.629286], [-2.876359, 4.900986, -0.879556], [0.550835, 3.905557, -2.031372], [0.777647, 4.992314, -1.215703], [1.445881, 4.266201, -1.414663], [1.274222, 5.510543, -0.824495], [-0.864685, 2.318581, -1.702389], [-0.627458, 3.820722, -1.743153], [-3.867699, 8.30866, -1.850066], [1.635287, 5.45587, -0.83844], [-1.037876, 2.538589, -1.513504], [-4.38993, 4.73926, 1.699639], [0.048709, 4.765232, -1.279506], [-0.626548, 1.339887, -1.595114], [-3.682827, 7.643453, -1.723398], [-3.868783, 8.180191, -1.511743], [-0.76988, 1.508373, -1.419599], [-1.138374, 2.766765, -1.448163], [1.699883, 5.780752, -0.475361], [1.214305, 0.308517, 1.866405], [-1.713642, 0.373461, -1.265204], [-1.582388, 0.58294, -1.267977], [-0.879549, 1.821581, -1.313787], [0.519057, 5.858757, -0.381397], [-3.770989, 2.449208, -0.132655], [0.087576, 0.156713, -1.53616], [-0.942622, 2.146534, -1.421494], [-1.026192, 1.022164, -1.145423], [-0.964079, 1.645473, -1.067631], [-1.109128, 2.458789, -1.29106], [-1.037478, 0.209489, -1.805424], [-3.724391, 7.599686, -1.273458], [-3.787898, 7.951792, -1.304794], [3.821677, 2.165581, -0.181535], [-2.39467, 0.304606, -0.570375], [-2.352928, 1.0439, 2.079369], [-0.288899, 9.640684, -1.006079], [-3.472118, 7.263001, -1.080326], [-1.240769, 0.972352, -0.976446], [-1.845253, 0.356801, -0.995574], [-2.32279, 7.915361, -0.057477], [-1.08092, 2.179315, -1.168821], [4.598833, 2.156768, 0.280264], [-4.725417, 6.442373, 2.056809], [-0.490347, 9.46429, -0.981092], [-1.99652, 0.09737, -0.765828], [-1.137793, 1.888846, -0.894165], [-0.37247, 4.29661, -1.465199], [-0.184631, 5.692946, -0.421398], [-3.751694, 7.742231, -1.086908], [-1.001416, 1.298225, -0.904674], [-3.536884, 7.190777, -0.788609], [-3.737597, 7.511281, -0.940052], [-1.766651, 0.669388, -0.873054], [3.112245, 3.474345, -1.129672], [-0.175504, 3.81298, -2.0479], [-3.766762, 7.412514, -0.681569], [-0.63375, 9.439424, -0.785128], [-0.518199, 4.768982, -1.258625], [0.790619, 4.212759, -1.610218], [-3.761951, 3.742528, -0.756283], [0.897483, 5.679808, -0.612423], [2.221126, 4.427468, -1.252155], [-0.728577, 5.846457, 0.062702], [0.194451, 9.503908, -1.482461], [-0.099243, 9.385459, -1.39564], [0.643185, 3.636855, -2.180247], [0.894522, 5.900601, -0.356935], [2.595516, 4.75731, -0.893245], [1.108497, 3.936893, -1.905098], [1.989894, 5.789726, -0.343268], [-3.802345, 7.655508, -0.613817], [2.339353, 4.96257, -0.90308], [0.12564, 4.013324, -1.879236], [-4.078965, 3.683254, -0.445439], [2.092899, 5.256128, -0.831607], [0.427571, 0.291769, 1.272964], [2.335549, 3.480056, -1.581949], [-0.15687, 0.324827, -1.648922], [-0.536522, 5.760786, -0.203535], [1.507082, 0.078251, -0.923109], [-1.854742, 0.134826, 2.698774], [-3.939827, 3.168498, -0.526144], [-3.98461, 3.39869, -0.533212], [-3.961738, 4.217132, -0.489147], [4.273789, 2.181164, 0.153786], [-0.470498, 5.645664, -0.439079], [-0.414539, 5.488017, -0.673379], [-0.097462, 5.062739, -1.114863], [1.198092, 5.882232, -0.391699], [2.855834, 5.085022, -0.498678], [1.037998, 4.129757, -1.701811], [1.728091, 5.068444, -1.063761], [-3.832258, 2.625141, -0.311384], [-4.078526, 3.070256, -0.284362], [-4.080365, 3.954243, -0.440471], [-0.152578, 5.276267, -0.929815], [-1.489635, 8.928082, -0.295891], [0.759294, 5.15585, -1.087374], [-4.000338, 2.801647, -0.235135], [-4.290801, 3.823209, -0.19374], [-4.221493, 4.25618, -0.189894], [-4.066195, 4.71916, -0.201724], [-0.155386, 4.076396, -1.662865], [3.054571, 4.414305, -0.825985], [-1.652919, 8.726499, -0.388504], [-3.042753, 0.560068, -0.126425], [-2.434456, 1.118088, -0.213563], [-2.623502, 1.845062, -0.283697], [-4.233371, 3.43941, -0.202918], [2.726702, 3.82071, -1.280097], [0.184199, 4.14639, -1.673653], [-1.289203, 0.624562, -1.560929], [-3.823676, 7.382458, -0.407223], [0.476667, 5.064419, -1.143742], [-3.873651, 4.955112, -0.269389], [1.349666, 5.312227, -1.000274], [-2.043776, 8.434488, -0.108891], [-2.763964, 0.733395, -0.129294], [-4.380505, 3.664409, -0.024546], [-0.71211, 5.341811, -0.803281], [-3.960858, 7.183112, -0.118407], [-3.822277, 7.712853, -0.263221], [-2.346808, 8.108588, 0.063244], [-1.841731, 8.642999, -0.142496], [-2.600055, 0.985604, -0.043595], [-3.513057, 2.213243, -0.044151], [-3.963492, 2.603055, -0.080898], [-4.258066, 3.14537, -0.027046], [-4.261572, 5.00334, 0.13004], [0.795464, 3.99873, -1.905688], [-3.300873, 0.384761, 0.013271], [-2.770244, 0.881942, 0.077313], [-3.456227, 1.993871, 0.301054], [-4.441987, 3.914144, 0.177867], [-4.367075, 6.611414, 0.165312], [-3.201767, 0.576292, 0.105769], [-3.174354, 0.645009, 0.440373], [-2.996576, 0.74262, 0.161325], [-2.724979, 1.656497, 0.092983], [-3.261757, 2.017742, -0.070763], [-4.280173, 4.518235, -0.002999], [-4.471073, 5.945358, 0.05202], [-3.877137, 2.40743, 0.274928], [-4.371219, 4.252758, 0.078039], [-3.400914, 0.40983, 0.238599], [-4.44293, 3.523242, 0.146339], [-4.574528, 5.279761, 0.353923], [-4.226643, 7.191282, 0.269256], [-4.16361, 2.843204, 0.097727], [-4.528506, 5.011661, 0.536625], [0.35514, 5.664802, -0.572814], [2.508711, 5.580976, -0.266636], [2.556226, 3.633779, -1.426362], [1.878456, 4.533714, -1.223744], [2.460709, 4.440241, -1.1395], [2.218589, 5.514603, -0.560066], [2.263712, 5.737023, -0.250694], [2.964981, 3.814858, -1.139927], [0.991384, 5.304131, -0.999867], [2.81187, 4.547292, -0.916025], [2.918089, 4.768382, -0.702808], [3.262403, 4.414286, -0.657935], [0.652136, 6.089113, 0.069089], [3.361389, 3.5052, -0.946123], [2.613042, 5.037192, -0.697153], [0.094339, 4.36858, -1.451238], [3.290862, 4.155716, -0.732318], [2.658063, 4.073614, -1.217455], [3.260349, 3.753257, -0.946819], [1.124268, 4.862463, -1.207855], [3.35158, 4.899247, -0.027586], [3.194057, 4.691257, -0.524566], [3.090119, 5.116085, -0.23255], [2.418965, 3.811753, -1.419399], [2.191789, 3.877038, -1.47023], [4.043166, 2.034188, 0.015477], [-1.026966, 0.86766, -1.410912], [1.937563, 3.860005, -1.617465], [2.98904, 4.101806, -0.998132], [-0.142611, 5.865305, -0.100872], [3.972673, 2.292069, 0.089463], [3.23349, 3.959925, -0.849829], [0.16304, 5.857276, -0.216704], [4.122964, 1.770061, -0.114906], [2.099057, 4.978374, -0.98449], [3.502411, 3.76181, -0.667502], [2.079484, 5.939614, -0.036205], [-0.084568, 3.525193, -2.253506], [0.423859, 4.06095, -1.845327], [1.6013, 6.006466, -0.153429], [0.271701, 3.844964, -2.078748], [0.273577, 5.218904, -0.994711], [-0.410578, 3.92165, -1.773635], [1.941954, 5.60041, -0.621569], [0.100825, 5.462131, -0.774256], [-0.53016, 3.619892, -2.027451], [-0.822371, 5.517453, -0.605747], [-2.474925, 7.670892, -0.020174], [4.01571, 0.830194, -0.013793], [-0.400092, 5.094112, -1.041992], [-2.887284, 5.581246, -0.525324], [-1.559841, 6.050972, 0.079301], [-0.469317, 3.291673, -2.235211], [0.337397, 3.467926, -2.295458], [-2.632074, 5.573701, -0.582717], [-0.030318, 6.011395, 0.276616], [-0.934373, 0.388987, -1.780523], [-2.661263, 5.844838, -0.425966], [0.549353, 5.489646, -0.807268], [-2.194355, 6.197491, -0.109322], [-2.289618, 5.664813, -0.581098], [1.583583, 3.796366, -1.844498], [0.855295, 0.215979, -1.425557], [-2.627569, 5.300236, -0.767174], [4.333347, 2.384332, 0.399129], [-1.880401, 5.583843, -0.696561], [-2.172346, 5.324859, -0.846246], [-2.27058, 5.906265, -0.388373], [-1.960049, 5.889346, -0.397593], [0.965756, 3.67547, -2.105671], [-2.014066, 6.431125, 0.287254], [-1.776173, 5.287097, -0.89091], [-2.025852, 5.089562, -0.980218], [-1.886418, 6.108358, -0.000667], [-1.600803, 5.785347, -0.491069], [-1.66188, 4.968053, -1.042535], [-1.600621, 5.962818, -0.188044], [-1.588831, 5.615418, -0.665456], [4.46901, 1.880138, 0.057248], [-1.978845, 0.927399, -0.554856], [-1.408074, 5.325266, -0.83967], [1.923123, 4.843955, -1.101389], [-2.87378, 0.117106, -0.412735], [-1.222193, 5.62638, -0.539981], [-2.632537, 0.166349, -0.489218], [-1.370865, 5.838832, -0.341026], [-1.067742, 5.448874, -0.692701], [-1.073798, 5.220878, -0.908779], [-1.147562, 4.950417, -1.079727], [-2.789115, 4.531047, -1.042713], [-3.550826, 4.170487, -0.806058], [-3.331694, 4.798177, -0.69568], [-3.689404, 4.688543, -0.534317], [-3.511509, 5.106246, -0.483632], [1.796344, 0.076137, 0.080455], [-3.306354, 5.473605, -0.478764], [-2.692503, 3.346604, -1.20959], [-3.963056, 5.187462, 3.113156], [-3.901231, 6.391477, -0.246984], [4.484234, 1.518638, -0.001617], [4.308829, 1.657716, -0.119275], [4.290045, 1.339528, -0.110626], [-3.514938, 3.524974, -0.909109], [-2.1943, 2.12163, -0.71966], [4.108206, 1.091087, -0.11416], [3.785312, 1.392435, -0.28588], [4.092886, 1.480476, -0.210655], [-2.965937, 6.469006, -0.379085], [-3.708581, 2.962974, -0.63979], [-3.297971, 2.218917, -0.299872], [3.806949, 0.804703, -0.11438], [3.747957, 1.059258, -0.273069], [-3.101827, 4.111444, -1.006255], [-1.536445, 4.658913, -1.195049], [-3.549826, 2.450555, -0.375694], [-3.676495, 2.108366, 0.534323], [-3.674738, 5.925075, -0.400011], [-2.250115, 2.848335, -1.121174], [-3.698062, 5.667567, -0.381396], [3.468966, 0.734643, -0.190624], [-3.97972, 5.670078, -0.26874], [-3.002087, 4.337837, -1.033421], [-3.356392, 2.608308, -0.713323], [-1.833016, 3.359983, -1.28775], [-1.989069, 3.632416, -1.305607], [3.591254, 0.542371, 0.026146], [3.364927, 1.082572, -0.342613], [-3.393759, 3.866801, -0.937266], [-4.124865, 5.549529, -0.161729], [-4.423423, 5.687223, 0.000103], [-1.496881, 2.601785, -1.114328], [-2.642297, 6.496932, -0.264175], [-3.684236, 6.819423, -0.320233], [-2.286996, 3.167067, -1.246651], [-1.624896, 8.44848, -0.530014], [-3.666787, 2.159266, 0.268149], [-2.402625, 2.011243, -0.56446], [-2.736166, 2.259839, -0.6943], [-2.168611, 3.89078, -1.292206], [-2.065956, 3.345708, -1.281346], [-2.778147, 2.675605, -0.995706], [-3.507431, 4.513272, -0.71829], [-2.301184, 4.293911, -1.238182], [3.205808, 0.211078, 0.394349], [-2.129936, 4.870577, -1.080781], [-2.287977, 2.496593, -0.934069], [-2.701833, 2.931814, -1.114509], [3.294795, 0.50631, -0.081062], [-2.552829, 7.468771, -0.021541], [3.06721, 0.944066, -0.43074], [-2.86086, 1.973622, -0.303132], [-3.598818, 5.419613, -0.401645], [-1.524381, 0.080156, -1.61662], [-1.907291, 2.646274, -1.039438], [2.950783, 0.407562, -0.105407], [-1.663048, 1.655038, -0.689787], [-1.728102, 1.110064, -0.635963], [-2.085823, 7.686296, -0.159745], [2.883518, 3.157009, -1.30858], [-2.724116, 0.417169, -0.389719], [-1.788636, 7.862672, -0.346413], [-2.186418, 1.249609, -0.434583], [-3.092434, 2.606657, -0.860002], [-1.737314, 3.874201, -1.330986], [2.564522, 0.422967, -0.390903], [1.670782, 3.538432, -1.924753], [-2.338131, 4.02578, -1.286673], [-1.916516, 4.054121, -1.301788], [2.87159, 2.034949, -1.267139], [-1.931518, 3.062883, -1.197227], [-0.816602, 0.135682, 3.104104], [0.469392, 0.213916, -1.489608], [2.574055, 1.950091, -1.514427], [2.733595, 2.682546, -1.461213], [-1.915407, 4.693647, -1.151721], [-3.412883, 5.867094, -0.450528], [2.28822, 0.120432, -0.04102], [2.244477, 0.14424, -0.376933], [-1.676198, 3.570698, -1.328031], [-1.821193, 4.366982, -1.266271], [-1.552208, 8.099221, -0.53262], [-1.727419, 2.39097, -0.989456], [-2.468226, 4.711663, -1.069766], [-2.451669, 6.113319, -0.273788], [2.635447, 2.295842, -1.518361], [-2.020809, 8.150253, -0.246714], [2.292455, 0.805596, -1.3042], [2.641556, 1.65665, -1.466962], [2.409062, 2.842538, -1.635025], [2.456682, 1.459484, -1.57543], [-1.691047, 3.173582, -1.247082], [-1.865642, 1.957608, -0.768683], [-3.401579, 0.20407, 0.100932], [2.301981, 1.7102, -1.650461], [2.342929, 2.611944, -1.690713], [-1.676111, 2.923894, -1.17835], [-2.992039, 3.547631, -1.118945], [-3.571677, 6.504634, -0.375455], [2.141764, 1.460869, -1.702464], [-3.221958, 5.146049, -0.615632], [2.19238, 2.949367, -1.747242], [2.320791, 2.232971, -1.706842], [2.088678, 2.585235, -1.813159], [-2.196404, 0.592218, -0.569709], [-2.120811, 1.836483, -0.62338], [-1.949935, 2.271249, -0.874128], [2.235901, 1.110183, -1.510719], [2.020157, 3.241128, -1.803917], [2.054336, 1.949394, -1.792332], [-3.094117, 4.996595, -0.740238], [2.038063, 0.635949, -1.402041], [1.980644, 1.684408, -1.76778], [1.587432, 3.306542, -1.991131], [1.935322, 0.976267, -1.602208], [1.922621, 1.235522, -1.698813], [1.712495, 1.911874, -1.903234], [1.912802, 2.259273, -1.888698], [1.884367, 0.355453, -1.312633], [1.676427, 0.76283, -1.539455], [1.78453, 2.83662, -1.943035], [1.697312, 0.120281, -1.150324], [1.648318, 2.484973, -1.999505], [-4.051804, 5.958472, -0.231731], [-1.964823, 1.464607, -0.58115], [1.55996, 2.183486, -1.971378], [1.628125, 1.045912, -1.707832], [1.701684, 1.540428, -1.827156], [1.567475, 4.869481, -1.184665], [1.432492, 0.843779, -1.648083], [1.173837, 2.978983, -2.156687], [1.235287, 3.37975, -2.09515], [1.252589, 1.525293, -1.949205], [1.159334, 2.336379, -2.105361], [1.49061, 2.695263, -2.083216], [-4.122486, 6.782604, -0.02545], [1.173388, 0.279193, -1.423418], [1.505684, 0.380815, -1.414395], [1.391423, 1.343031, -1.843557], [1.263449, 2.73225, -2.144961], [1.295858, 0.597122, -1.515628], [1.245851, 3.729126, -1.993015], [-2.761439, 6.23717, -0.365856], [0.978887, 1.664888, -2.046633], [1.219542, 0.982729, -1.785486], [1.315915, 1.91748, -2.02788], [-3.052746, 2.127222, -0.369082], [0.977656, 1.36223, -1.944119], [0.936122, 3.39447, -2.203007], [-2.740036, 4.184702, -1.122849], [0.853581, 2.864694, -2.260847], [0.719569, 0.818762, -1.763618], [0.839115, 1.159359, -1.907943], [0.932069, 1.94559, -2.117962], [0.579321, 3.326747, -2.299369], [0.86324, 0.597822, -1.565106], [0.574567, 1.158452, -1.943123], [0.525138, 2.137252, -2.213867], [0.779941, 2.342019, -2.206157], [0.915255, 2.618102, -2.209041], [0.526426, 3.02241, -2.321826], [0.495431, 2.521396, -2.295905], [0.80799, 3.156817, -2.286432], [0.273556, 1.304936, -2.012509], [0.664326, 1.530024, -2.048722], [0.219173, 2.32907, -2.323212], [0.405324, 0.695359, -1.704884], [0.398827, 0.946649, -1.843899], [0.345109, 1.608829, -2.100174], [-2.356743, 0.062032, -0.4947], [-3.001084, 0.27146, 2.560034], [-2.064663, 0.303055, -0.697324], [0.221271, 3.174023, -2.374399], [0.195842, 0.437865, -1.621473], [-0.385613, 0.297763, 1.960096], [1.999609, 0.108928, -0.79125], [0.351698, 9.227494, -1.57565], [0.021477, 2.191913, -2.309353], [0.246381, 2.836575, -2.356365], [1.543281, 0.237539, 1.901906], [0.031881, 9.147022, -1.454203], [-0.001881, 1.648503, -2.108044], [0.333423, 1.907088, -2.204533], [0.044063, 2.634032, -2.368412], [-0.028148, 3.053684, -2.390082], [0.02413, 3.34297, -2.36544], [-0.272645, 9.02879, -1.238685], [-0.006348, 0.832044, -1.758222], [-0.321105, 1.458754, -1.886313], [-0.153948, 8.618809, -1.105353], [-0.409303, 1.137783, -1.720556], [-0.410054, 1.742789, -1.957989], [-0.287905, 2.380404, -2.294509], [-0.261375, 2.646629, -2.356322], [-0.221986, 3.215303, -2.345844], [-0.31608, 0.687581, -1.71901], [-0.537705, 0.855802, -1.648585], [-0.142834, 1.193053, -1.87371], [-0.24371, 2.044435, -2.176958], [-0.437999, 2.959748, -2.299698], [-0.78895, 0.176226, -1.729046], [-0.608509, 0.546932, -1.734032], [-0.693698, 4.478782, -1.369372], [-0.669153, 8.469645, -0.911149], [-0.741857, 1.082705, -1.458474], [-0.554059, 2.440325, -2.141785], [2.09261, 0.153182, 2.57581], [1.792547, 0.111794, 2.563777], [1.855787, 0.189541, 2.835089], [1.492601, 0.232246, 2.987681], [-0.284918, 0.236687, 3.429738], [2.604841, 0.11997, 1.01506], [0.331271, 0.168113, 3.124031], [0.280606, 0.308368, 2.495937], [0.544591, 0.325711, 2.081274], [0.193145, 0.19154, -0.977556], [3.810099, 0.42324, 1.032202], [3.54622, 0.379245, 1.392814], [0.61402, 0.276328, 0.849356], [-1.198628, 0.144953, 2.911457], [4.17199, 0.68037, 1.391526], [0.88279, 0.321339, 2.059129], [1.93035, 0.109992, 2.054154], [1.620331, 0.121986, 2.37203], [2.374812, 0.10921, 1.734876], [-0.031227, 0.294412, 2.593687], [4.075018, 0.561914, 1.038065], [-0.570366, 0.126583, 2.975558], [0.950052, 0.318463, 1.804012], [1.130034, 0.117125, 0.98385], [2.123049, 0.08946, 1.665911], [2.087572, 0.068621, 0.335013], [2.927337, 0.167117, 0.289611], [0.528876, 0.313434, 3.205969], [1.174911, 0.162744, 1.328262], [-4.88844, 5.59535, 1.661134], [-4.709607, 5.165338, 1.324082], [0.871199, 0.277021, 1.263831], [-3.910877, 2.349318, 1.272269], [1.56824, 0.118605, 2.768112], [1.179176, 0.152617, -0.858003], [1.634629, 0.247872, 2.128625], [-4.627425, 5.126935, 1.617836], [3.845542, 0.54907, 1.45601], [2.654006, 0.165508, 1.637169], [-0.678324, 0.26488, 1.974741], [2.451139, 0.100377, 0.213768], [0.633199, 0.286719, 0.403357], [-0.533042, 0.2524, 1.373267], [0.99317, 0.171106, 0.624966], [-0.100063, 0.306466, 2.170225], [1.245943, 0.092351, 0.661031], [1.390414, 0.198996, -0.0864], [-4.457265, 5.030531, 2.138242], [2.89776, 0.146575, 1.297468], [1.802703, 0.088824, -0.490405], [1.055447, 0.309261, 2.392437], [2.300436, 0.142429, 2.104254], [2.33399, 0.187756, 2.416935], [2.325183, 0.134349, 0.574063], [2.410924, 0.370971, 2.637115], [1.132924, 0.290511, 3.061], [1.764028, 0.070212, -0.80535], [2.156994, 0.397657, 2.844061], [0.920711, 0.225527, -0.882456], [-4.552135, 5.24096, 2.85514], [0.210016, 0.309396, 2.064296], [0.612067, 0.136815, -1.086002], [3.150236, 0.426757, 1.802703], [-0.24824, 0.282258, 1.470997], [0.974269, 0.301311, -0.640898], [-4.401413, 5.03966, 2.535553], [0.644319, 0.274006, -0.817806], [0.332922, 0.309077, 0.108474], [3.610001, 0.317447, 0.689353], [3.335681, 0.358195, 0.118477], [0.623544, 0.318983, -0.4193], [-0.11012, 0.307747, 1.831331], [-0.407528, 0.291044, 2.282935], [0.069783, 0.285095, 0.950289], [0.970135, 0.310392, -0.283742], [0.840564, 0.306898, 0.098854], [-0.541827, 0.267753, 1.683795], [-3.956082, 4.55713, 2.297164], [-4.161036, 2.834481, 1.64183], [-4.093952, 4.977551, 2.747747], [2.661819, 0.261867, 1.926145], [-3.749926, 2.161875, 0.895238], [-2.497776, 1.3629, 0.791855], [0.691482, 0.304968, 1.582939], [-4.013193, 4.830963, 2.4769], [-3.639585, 2.091265, 1.304415], [-3.9767, 2.563053, 1.6284], [-3.979915, 2.788616, 1.977977], [0.388782, 0.312656, 1.709168], [-3.40873, 1.877324, 0.851652], [-3.671637, 5.136974, 3.170734], [-3.12964, 1.852012, 0.157682], [-3.629687, 4.852698, 2.686837], [-3.196164, 1.793459, 0.452804], [-3.746338, 2.31357, 1.648551], [2.992192, 0.125251, 0.575976], [-3.254051, 0.054431, 0.314152], [-3.474644, 1.925288, 1.134116], [-3.418372, 2.022882, 1.578901], [-2.920955, 1.705403, 0.29842], [-3.57229, 2.152022, 1.607572], [-3.251259, 0.09013, -0.106174], [-3.299952, 1.877781, 1.348623], [-3.666819, 2.441459, 2.004838], [-2.912646, 1.824748, -0.045348], [-3.399511, 2.479484, 2.340393], [-3.009754, 0.015286, 0.075567], [-3.381443, 2.316937, 2.156923], [-3.352801, 2.133341, 1.857366], [-3.01788, 1.687685, 0.645867], [-2.931857, 1.678712, 1.158472], [-3.301008, 0.08836, 0.591001], [1.358025, 0.19795, 1.599144], [-2.999565, 1.845016, 1.618396], [-2.767957, 0.028397, -0.196436], [-2.93962, 2.078779, 2.140593], [-3.346648, 2.674056, 2.518097], [3.324322, 0.20822, 0.628605], [3.091677, 0.137202, 0.9345], [-2.881807, 0.009952, 0.318439], [-2.764946, 1.786619, 1.693439], [-2.905542, 1.932343, 1.900002], [-3.140854, 2.271384, 2.274946], [-2.88995, 2.487856, 2.574759], [-2.367194, -0.000943, -0.15576], [-3.050738, 0.068703, 0.742988], [-2.759525, 1.55679, 0.877782], [-3.151775, 2.48054, 2.482749], [-2.578618, -0.002885, 0.165716], [-2.651618, 1.877246, 1.981189], [-2.933973, 0.133731, 1.631023], [1.047628, 0.100284, -1.085248], [-1.585123, 0.062083, -1.394896], [-2.287917, -0.002671, 0.214434], [-2.524899, 0.007481, 0.471788], [-2.815492, 2.188198, 2.343294], [-2.095142, -0.003149, -0.094574], [-2.172686, -0.000133, 0.47963], [-2.732704, 0.074306, 1.742079], [-2.49653, 2.145668, 2.42691], [-1.343683, 0.047721, -1.506391], [-2.581185, 0.048703, 0.975528], [-2.905101, 0.083158, 2.010052], [-2.601514, 2.007801, 2.223089], [-2.339464, 0.02634, 1.484304], [-2.907873, 0.10367, 2.378149], [-1.368796, 0.062516, -1.049125], [-1.93244, 0.02443, -0.427603], [-2.705081, 0.060513, 2.303802], [3.372155, 0.206274, 0.892293], [-1.761827, 0.093202, -1.037404], [-1.700667, 0.0397, -0.614221], [-1.872291, 0.011979, -0.135753], [-1.929257, 0.074005, 0.728999], [-2.520128, 0.049665, 1.99054], [-2.699411, 0.10092, 2.603116], [3.211701, 0.27302, 1.423357], [-1.445362, 0.1371, -0.626491], [2.921332, 0.259112, 1.645525], [-0.993242, 0.058686, -1.408916], [-0.944986, 0.157541, -1.097665], [-2.154301, 0.032749, 1.882001], [-2.108789, 1.988557, 2.442673], [-1.015659, 0.25497, -0.416665], [-1.898411, 0.015872, 0.16715], [-1.585517, 0.027121, 0.453445], [-2.311105, 0.061264, 2.327061], [-2.637042, 0.152224, 2.832201], [-2.087515, 2.292972, 2.617585], [-0.750611, 0.056697, -1.504516], [-0.472029, 0.075654, -1.360203], [-0.710798, 0.139244, -1.183863], [-0.97755, 0.26052, -0.831167], [-0.655814, 0.260843, -0.880068], [-0.897513, 0.275537, -0.133042], [-2.049194, 0.084947, 2.455422], [-0.177837, 0.076362, -1.449009], [-0.553393, 0.279083, -0.59573], [-1.788636, 0.06163, 2.231198], [-0.34761, 0.255578, -0.999614], [-1.398589, 0.036482, 0.65871], [-1.133918, 0.05617, 0.69473], [-1.43369, 0.058226, 1.977865], [-2.505459, 1.492266, 1.19295]]; -var cells = [[2, 1661, 3], [1676, 7, 6], [712, 1694, 9], [3, 1674, 1662], [11, 1672, 0], [1705, 0, 1], [5, 6, 1674], [4, 5, 1674], [7, 8, 712], [2, 1662, 10], [1, 10, 1705], [11, 1690, 1672], [1705, 11, 0], [5, 1676, 6], [7, 9, 6], [7, 712, 9], [2, 3, 1662], [3, 4, 1674], [1, 2, 10], [12, 82, 1837], [1808, 12, 1799], [1808, 1799, 1796], [12, 861, 82], [861, 1808, 13], [1808, 861, 12], [1799, 12, 1816], [1680, 14, 1444], [15, 17, 16], [14, 1678, 1700], [16, 17, 1679], [15, 1660, 17], [14, 1084, 1678], [15, 1708, 18], [15, 18, 1660], [1680, 1084, 14], [1680, 15, 1084], [15, 1680, 1708], [793, 813, 119], [1076, 793, 119], [1076, 1836, 22], [23, 19, 20], [21, 1076, 22], [21, 22, 23], [23, 20, 21], [1076, 119, 1836], [806, 634, 470], [432, 1349, 806], [251, 42, 125], [809, 1171, 791], [953, 631, 827], [634, 1210, 1176], [157, 1832, 1834], [56, 219, 53], [126, 38, 83], [37, 85, 43], [59, 1151, 1154], [83, 75, 41], [77, 85, 138], [201, 948, 46], [1362, 36, 37], [452, 775, 885], [1237, 95, 104], [966, 963, 1262], [85, 77, 43], [36, 85, 37], [1018, 439, 1019], [41, 225, 481], [85, 83, 127], [93, 83, 41], [935, 972, 962], [116, 93, 100], [98, 82, 813], [41, 75, 225], [298, 751, 54], [1021, 415, 1018], [77, 138, 128], [766, 823, 1347], [593, 121, 573], [905, 885, 667], [786, 744, 747], [100, 41, 107], [604, 334, 765], [779, 450, 825], [968, 962, 969], [225, 365, 481], [365, 283, 196], [161, 160, 303], [875, 399, 158], [328, 1817, 954], [62, 61, 1079], [358, 81, 72], [74, 211, 133], [160, 161, 138], [91, 62, 1079], [167, 56, 1405], [56, 167, 219], [913, 914, 48], [344, 57, 102], [43, 77, 128], [1075, 97, 1079], [389, 882, 887], [219, 108, 53], [1242, 859, 120], [604, 840, 618], [754, 87, 762], [197, 36, 1362], [1439, 88, 1200], [1652, 304, 89], [81, 44, 940], [445, 463, 151], [717, 520, 92], [129, 116, 100], [1666, 1811, 624], [1079, 97, 91], [62, 91, 71], [688, 898, 526], [463, 74, 133], [278, 826, 99], [961, 372, 42], [799, 94, 1007], [100, 93, 41], [1314, 943, 1301], [184, 230, 109], [875, 1195, 231], [133, 176, 189], [751, 755, 826], [101, 102, 57], [1198, 513, 117], [748, 518, 97], [1145, 1484, 1304], [358, 658, 81], [971, 672, 993], [445, 151, 456], [252, 621, 122], [36, 271, 126], [85, 36, 126], [116, 83, 93], [141, 171, 1747], [1081, 883, 103], [1398, 1454, 149], [457, 121, 593], [127, 116, 303], [697, 70, 891], [457, 891, 1652], [1058, 1668, 112], [518, 130, 97], [214, 319, 131], [185, 1451, 1449], [463, 133, 516], [1428, 123, 177], [113, 862, 561], [215, 248, 136], [186, 42, 251], [127, 83, 116], [160, 85, 127], [162, 129, 140], [154, 169, 1080], [169, 170, 1080], [210, 174, 166], [1529, 1492, 1524], [450, 875, 231], [399, 875, 450], [171, 141, 170], [113, 1155, 452], [131, 319, 360], [44, 175, 904], [452, 872, 113], [746, 754, 407], [147, 149, 150], [309, 390, 1148], [53, 186, 283], [757, 158, 797], [303, 129, 162], [429, 303, 162], [154, 168, 169], [673, 164, 193], [38, 271, 75], [320, 288, 1022], [246, 476, 173], [175, 548, 904], [182, 728, 456], [199, 170, 169], [168, 199, 169], [199, 171, 170], [184, 238, 230], [246, 247, 180], [1496, 1483, 1467], [147, 150, 148], [828, 472, 445], [53, 108, 186], [56, 53, 271], [186, 961, 42], [1342, 391, 57], [1664, 157, 1834], [1070, 204, 178], [178, 204, 179], [285, 215, 295], [692, 55, 360], [192, 193, 286], [359, 673, 209], [586, 195, 653], [121, 89, 573], [202, 171, 199], [238, 515, 311], [174, 210, 240], [174, 105, 166], [717, 276, 595], [1155, 1149, 452], [1405, 56, 197], [53, 283, 30], [75, 53, 30], [45, 235, 1651], [210, 166, 490], [181, 193, 192], [185, 620, 217], [26, 798, 759], [1070, 226, 204], [220, 187, 179], [220, 168, 187], [202, 222, 171], [359, 209, 181], [182, 456, 736], [964, 167, 1405], [76, 250, 414], [807, 1280, 1833], [70, 883, 1652], [227, 179, 204], [221, 199, 168], [221, 202, 199], [360, 494, 131], [214, 241, 319], [105, 247, 166], [205, 203, 260], [388, 480, 939], [482, 855, 211], [8, 807, 1833], [226, 255, 204], [228, 221, 168], [166, 173, 490], [701, 369, 702], [211, 855, 262], [631, 920, 630], [1448, 1147, 1584], [255, 227, 204], [237, 220, 179], [228, 168, 220], [222, 256, 555], [215, 259, 279], [126, 271, 38], [108, 50, 186], [227, 236, 179], [236, 237, 179], [220, 237, 228], [228, 202, 221], [256, 222, 202], [555, 256, 229], [259, 152, 279], [27, 1296, 31], [186, 50, 961], [961, 234, 372], [1651, 235, 812], [1572, 1147, 1448], [255, 226, 1778], [255, 236, 227], [256, 257, 229], [106, 184, 109], [241, 410, 188], [177, 578, 620], [209, 673, 181], [1136, 1457, 79], [1507, 245, 718], [255, 273, 236], [275, 410, 241], [206, 851, 250], [1459, 253, 1595], [1406, 677, 1650], [228, 274, 202], [202, 281, 256], [348, 239, 496], [205, 172, 203], [369, 248, 702], [261, 550, 218], [261, 465, 550], [574, 243, 566], [921, 900, 1220], [291, 273, 255], [348, 238, 265], [109, 230, 194], [149, 380, 323], [443, 270, 421], [272, 291, 255], [274, 228, 237], [274, 292, 202], [281, 257, 256], [276, 543, 341], [152, 259, 275], [1111, 831, 249], [632, 556, 364], [299, 273, 291], [299, 236, 273], [280, 237, 236], [202, 292, 281], [247, 246, 173], [282, 49, 66], [1620, 1233, 1553], [299, 280, 236], [280, 305, 237], [237, 305, 274], [306, 292, 274], [330, 257, 281], [246, 194, 264], [166, 247, 173], [912, 894, 896], [611, 320, 244], [1154, 1020, 907], [969, 962, 290], [272, 299, 291], [305, 318, 274], [145, 212, 240], [164, 248, 285], [259, 277, 275], [193, 164, 295], [269, 240, 210], [1033, 288, 320], [46, 948, 206], [336, 280, 299], [330, 281, 292], [257, 307, 300], [369, 136, 248], [145, 240, 269], [502, 84, 465], [193, 295, 286], [164, 285, 295], [282, 302, 49], [161, 303, 429], [318, 306, 274], [306, 330, 292], [315, 257, 330], [315, 307, 257], [307, 352, 300], [300, 352, 308], [275, 277, 403], [353, 1141, 333], [1420, 425, 47], [611, 313, 320], [85, 126, 83], [128, 1180, 43], [303, 116, 129], [280, 314, 305], [314, 318, 305], [190, 181, 242], [203, 214, 131], [820, 795, 815], [322, 299, 272], [322, 336, 299], [315, 339, 307], [172, 152, 617], [172, 214, 203], [321, 1033, 320], [1401, 941, 946], [85, 160, 138], [976, 454, 951], [747, 60, 786], [317, 322, 272], [339, 352, 307], [266, 33, 867], [163, 224, 218], [247, 614, 180], [648, 639, 553], [388, 172, 205], [611, 345, 313], [313, 345, 320], [160, 127, 303], [454, 672, 951], [317, 329, 322], [314, 280, 336], [306, 338, 330], [330, 339, 315], [1236, 115, 436], [342, 321, 320], [1046, 355, 328], [328, 346, 325], [325, 346, 317], [367, 314, 336], [314, 337, 318], [337, 306, 318], [338, 343, 330], [342, 320, 345], [355, 349, 328], [346, 329, 317], [347, 336, 322], [314, 362, 337], [330, 343, 339], [340, 308, 352], [135, 906, 1022], [239, 156, 491], [194, 230, 486], [40, 1015, 1003], [321, 355, 1046], [329, 382, 322], [382, 347, 322], [347, 367, 336], [337, 371, 306], [306, 371, 338], [1681, 296, 1493], [286, 172, 388], [230, 348, 486], [348, 183, 486], [384, 332, 830], [328, 349, 346], [367, 362, 314], [371, 343, 338], [339, 351, 352], [57, 344, 78], [342, 355, 321], [386, 346, 349], [386, 350, 346], [346, 350, 329], [347, 366, 367], [343, 363, 339], [323, 380, 324], [152, 275, 241], [345, 1045, 342], [350, 374, 329], [339, 363, 351], [234, 340, 352], [353, 361, 354], [40, 34, 1015], [373, 355, 342], [373, 349, 355], [374, 382, 329], [366, 347, 382], [371, 363, 343], [351, 379, 352], [379, 372, 352], [372, 234, 352], [156, 190, 491], [319, 241, 692], [354, 361, 31], [366, 377, 367], [363, 379, 351], [133, 590, 516], [197, 56, 271], [1045, 370, 342], [370, 373, 342], [374, 350, 386], [377, 366, 382], [367, 395, 362], [400, 337, 362], [400, 371, 337], [378, 363, 371], [106, 109, 614], [181, 673, 193], [953, 920, 631], [376, 349, 373], [376, 386, 349], [378, 379, 363], [224, 375, 218], [279, 152, 172], [361, 619, 381], [1347, 823, 795], [760, 857, 384], [392, 374, 386], [394, 395, 367], [383, 371, 400], [383, 378, 371], [218, 375, 261], [197, 271, 36], [414, 454, 976], [385, 376, 373], [1051, 382, 374], [387, 394, 367], [377, 387, 367], [395, 400, 362], [279, 172, 295], [30, 365, 225], [450, 231, 825], [385, 373, 370], [398, 374, 392], [1051, 377, 382], [396, 378, 383], [348, 496, 183], [295, 172, 286], [357, 269, 495], [1148, 390, 1411], [75, 30, 225], [206, 76, 54], [412, 386, 376], [412, 392, 386], [396, 383, 400], [651, 114, 878], [123, 1241, 506], [238, 311, 265], [381, 653, 29], [618, 815, 334], [427, 1032, 411], [298, 414, 976], [791, 332, 384], [129, 100, 140], [412, 404, 392], [392, 404, 398], [140, 107, 360], [395, 394, 400], [423, 379, 378], [385, 412, 376], [406, 94, 58], [419, 415, 1021], [422, 423, 378], [423, 125, 379], [258, 508, 238], [311, 156, 265], [213, 287, 491], [449, 411, 1024], [412, 1068, 404], [55, 140, 360], [76, 414, 54], [394, 416, 400], [400, 416, 396], [422, 378, 396], [1258, 796, 789], [427, 411, 449], [427, 297, 1032], [1385, 1366, 483], [417, 448, 284], [1507, 341, 245], [162, 140, 444], [658, 44, 81], [433, 125, 423], [438, 251, 125], [429, 162, 439], [1342, 57, 1348], [765, 766, 442], [697, 891, 695], [1057, 396, 416], [440, 423, 422], [440, 433, 423], [433, 438, 125], [438, 196, 251], [74, 482, 211], [1136, 79, 144], [29, 195, 424], [242, 1004, 492], [57, 757, 28], [414, 298, 54], [238, 348, 230], [224, 163, 124], [295, 215, 279], [495, 269, 490], [449, 446, 427], [446, 297, 427], [1020, 1163, 909], [128, 138, 419], [66, 980, 443], [415, 439, 1018], [111, 396, 1057], [111, 422, 396], [840, 249, 831], [593, 664, 596], [218, 550, 155], [109, 194, 180], [483, 268, 855], [161, 415, 419], [1737, 232, 428], [360, 107, 494], [1006, 1011, 410], [444, 140, 55], [919, 843, 430], [190, 242, 213], [275, 403, 410], [131, 494, 488], [449, 663, 446], [138, 161, 419], [128, 419, 34], [439, 162, 444], [460, 440, 422], [440, 438, 433], [472, 74, 445], [491, 190, 213], [238, 508, 515], [46, 206, 54], [972, 944, 962], [1241, 1428, 1284], [111, 460, 422], [470, 432, 806], [248, 164, 702], [1025, 467, 453], [553, 1235, 648], [263, 114, 881], [267, 293, 896], [469, 438, 440], [455, 196, 438], [287, 242, 492], [239, 265, 156], [213, 242, 287], [1684, 746, 63], [663, 474, 446], [415, 161, 429], [140, 100, 107], [1055, 459, 467], [469, 455, 438], [259, 542, 277], [446, 474, 466], [446, 466, 447], [439, 444, 1019], [614, 109, 180], [190, 359, 181], [156, 497, 190], [726, 474, 663], [1023, 458, 459], [461, 440, 460], [269, 210, 490], [246, 180, 194], [590, 133, 189], [163, 218, 155], [467, 468, 453], [1063, 1029, 111], [111, 1029, 460], [1029, 464, 460], [461, 469, 440], [150, 149, 323], [828, 445, 456], [375, 502, 261], [474, 475, 466], [573, 426, 462], [478, 1023, 477], [478, 458, 1023], [458, 479, 467], [459, 458, 467], [468, 393, 453], [464, 461, 460], [484, 365, 455], [1232, 182, 1380], [172, 617, 214], [547, 694, 277], [542, 547, 277], [184, 258, 238], [261, 502, 465], [467, 479, 468], [484, 455, 469], [1380, 182, 864], [475, 476, 466], [80, 447, 476], [466, 476, 447], [415, 429, 439], [479, 487, 468], [487, 287, 468], [492, 393, 468], [260, 469, 461], [481, 365, 484], [531, 473, 931], [692, 360, 319], [726, 495, 474], [468, 287, 492], [480, 464, 1029], [260, 461, 464], [494, 481, 484], [74, 472, 482], [174, 240, 212], [223, 106, 614], [486, 477, 485], [478, 496, 458], [491, 487, 479], [123, 402, 177], [488, 469, 260], [488, 484, 469], [265, 239, 348], [248, 215, 285], [474, 490, 475], [477, 486, 478], [458, 496, 479], [239, 491, 479], [1584, 1147, 1334], [488, 494, 484], [401, 123, 506], [495, 490, 474], [490, 173, 475], [80, 476, 264], [491, 287, 487], [480, 1029, 1004], [480, 205, 464], [173, 476, 475], [485, 194, 486], [486, 183, 478], [478, 183, 496], [496, 239, 479], [848, 1166, 60], [268, 262, 855], [205, 260, 464], [260, 203, 488], [203, 131, 488], [246, 264, 476], [194, 485, 264], [1002, 310, 1664], [311, 515, 497], [515, 359, 497], [565, 359, 515], [1250, 1236, 301], [736, 456, 151], [654, 174, 567], [577, 534, 648], [519, 505, 645], [725, 565, 508], [150, 1723, 148], [584, 502, 505], [584, 526, 502], [502, 526, 84], [607, 191, 682], [560, 499, 660], [607, 517, 191], [1038, 711, 124], [951, 672, 971], [716, 507, 356], [868, 513, 1198], [615, 794, 608], [682, 191, 174], [1313, 928, 1211], [617, 241, 214], [511, 71, 91], [408, 800, 792], [192, 286, 525], [80, 485, 447], [91, 97, 130], [1675, 324, 888], [207, 756, 532], [582, 1097, 1124], [311, 497, 156], [510, 130, 146], [523, 511, 510], [608, 708, 616], [546, 690, 650], [511, 527, 358], [536, 146, 518], [465, 418, 550], [418, 709, 735], [520, 514, 500], [584, 505, 519], [536, 518, 509], [146, 536, 510], [538, 527, 511], [876, 263, 669], [646, 524, 605], [510, 536, 523], [527, 175, 358], [724, 876, 669], [721, 724, 674], [524, 683, 834], [558, 509, 522], [558, 536, 509], [523, 538, 511], [611, 243, 574], [528, 706, 556], [668, 541, 498], [523, 537, 538], [527, 540, 175], [532, 756, 533], [1013, 60, 747], [551, 698, 699], [92, 520, 500], [535, 536, 558], [536, 569, 523], [538, 540, 527], [539, 548, 175], [567, 212, 145], [401, 896, 293], [534, 675, 639], [1510, 595, 1507], [557, 545, 530], [569, 536, 535], [537, 540, 538], [540, 539, 175], [569, 537, 523], [1135, 718, 47], [587, 681, 626], [580, 535, 558], [99, 747, 278], [701, 565, 725], [665, 132, 514], [665, 514, 575], [132, 549, 653], [176, 651, 189], [65, 47, 266], [597, 569, 535], [569, 581, 537], [537, 581, 540], [563, 539, 540], [539, 564, 548], [1509, 1233, 1434], [132, 653, 740], [550, 710, 155], [714, 721, 644], [410, 1011, 188], [732, 534, 586], [560, 562, 729], [555, 557, 222], [580, 558, 545], [597, 535, 580], [581, 563, 540], [5, 821, 1676], [576, 215, 136], [649, 457, 741], [564, 539, 563], [124, 711, 224], [550, 668, 710], [550, 541, 668], [565, 701, 673], [560, 613, 499], [233, 532, 625], [545, 555, 580], [601, 581, 569], [594, 904, 548], [1463, 1425, 434], [185, 149, 1454], [721, 674, 644], [185, 380, 149], [577, 424, 586], [462, 586, 559], [597, 601, 569], [594, 548, 564], [566, 603, 574], [165, 543, 544], [457, 89, 121], [586, 424, 195], [725, 587, 606], [1078, 582, 1124], [588, 925, 866], [462, 559, 593], [189, 878, 590], [555, 229, 580], [602, 563, 581], [904, 594, 956], [434, 1425, 1438], [1024, 112, 821], [572, 587, 626], [600, 597, 580], [599, 591, 656], [600, 580, 229], [601, 622, 581], [581, 622, 602], [602, 564, 563], [602, 594, 564], [603, 611, 574], [498, 529, 546], [697, 1145, 70], [592, 628, 626], [610, 597, 600], [597, 610, 601], [222, 557, 171], [604, 765, 799], [573, 462, 593], [133, 200, 176], [729, 607, 627], [1011, 692, 188], [518, 146, 130], [585, 687, 609], [682, 627, 607], [1712, 599, 656], [562, 592, 607], [643, 656, 654], [257, 600, 229], [601, 633, 622], [623, 594, 602], [174, 212, 567], [725, 606, 701], [609, 701, 606], [610, 633, 601], [633, 642, 622], [380, 216, 324], [142, 143, 1249], [501, 732, 586], [534, 577, 586], [648, 1235, 577], [610, 641, 633], [310, 1002, 1831], [618, 334, 604], [1710, 145, 269], [707, 498, 659], [501, 586, 462], [625, 501, 462], [726, 663, 691], [300, 600, 257], [641, 610, 600], [622, 629, 602], [602, 629, 623], [55, 692, 444], [518, 748, 509], [929, 1515, 1411], [620, 578, 267], [71, 511, 358], [707, 668, 498], [650, 687, 585], [600, 300, 641], [641, 657, 633], [1675, 888, 1669], [622, 636, 629], [505, 502, 375], [541, 529, 498], [332, 420, 1053], [637, 551, 638], [534, 639, 648], [69, 623, 873], [300, 512, 641], [633, 657, 642], [562, 660, 579], [687, 637, 638], [709, 646, 605], [775, 738, 885], [559, 549, 132], [646, 683, 524], [641, 512, 657], [266, 897, 949], [1712, 643, 1657], [184, 727, 258], [674, 724, 669], [699, 714, 647], [628, 659, 572], [657, 662, 642], [571, 881, 651], [517, 607, 504], [598, 706, 528], [598, 694, 547], [640, 552, 560], [655, 693, 698], [698, 693, 721], [91, 510, 511], [144, 301, 1136], [324, 216, 888], [870, 764, 1681], [575, 514, 520], [276, 544, 543], [658, 175, 44], [645, 505, 711], [659, 546, 572], [700, 524, 655], [605, 700, 529], [266, 867, 897], [1695, 1526, 764], [579, 659, 628], [654, 591, 682], [586, 549, 559], [698, 721, 714], [896, 401, 506], [640, 734, 599], [664, 665, 575], [621, 629, 636], [1712, 656, 643], [547, 644, 598], [710, 668, 707], [640, 560, 734], [655, 698, 551], [694, 528, 277], [512, 662, 657], [504, 592, 626], [688, 584, 519], [152, 241, 617], [587, 725, 681], [598, 669, 706], [526, 670, 84], [598, 528, 694], [710, 707, 499], [579, 592, 562], [660, 659, 579], [323, 324, 1134], [326, 895, 473], [195, 29, 653], [84, 670, 915], [560, 660, 562], [504, 626, 681], [711, 505, 224], [651, 881, 114], [216, 620, 889], [1362, 678, 197], [493, 99, 48], [1659, 691, 680], [529, 690, 546], [430, 843, 709], [655, 524, 693], [174, 191, 105], [674, 669, 598], [98, 712, 82], [572, 546, 585], [72, 61, 71], [912, 911, 894], [106, 223, 184], [664, 132, 665], [843, 646, 709], [635, 699, 136], [699, 698, 714], [593, 132, 664], [688, 526, 584], [185, 177, 620], [533, 675, 534], [687, 638, 635], [1652, 89, 457], [896, 506, 912], [132, 740, 514], [689, 685, 282], [691, 449, 680], [48, 436, 493], [136, 699, 647], [739, 640, 554], [549, 586, 653], [532, 533, 625], [1530, 695, 649], [653, 381, 619], [736, 151, 531], [188, 692, 241], [177, 402, 578], [33, 689, 867], [689, 33, 685], [593, 559, 132], [949, 65, 266], [711, 1038, 661], [939, 480, 1004], [609, 369, 701], [616, 552, 615], [619, 361, 740], [151, 463, 516], [513, 521, 117], [691, 663, 449], [186, 251, 196], [333, 302, 327], [613, 560, 552], [616, 613, 552], [690, 551, 637], [660, 707, 659], [704, 208, 1203], [418, 735, 550], [163, 708, 124], [524, 834, 693], [554, 640, 599], [245, 341, 165], [565, 673, 359], [155, 710, 708], [105, 191, 517], [1515, 198, 1411], [1709, 554, 599], [60, 289, 786], [838, 1295, 1399], [533, 534, 625], [710, 499, 708], [556, 632, 410], [217, 620, 216], [591, 627, 682], [504, 503, 223], [643, 654, 567], [690, 637, 650], [545, 557, 555], [174, 654, 682], [719, 691, 1659], [727, 681, 508], [645, 711, 661], [794, 615, 739], [565, 515, 508], [282, 685, 302], [1150, 397, 1149], [638, 699, 635], [544, 685, 33], [719, 726, 691], [1742, 1126, 1733], [1724, 1475, 148], [556, 410, 403], [185, 217, 380], [503, 504, 681], [277, 556, 403], [32, 1178, 158], [1712, 1709, 599], [605, 529, 541], [635, 136, 369], [687, 635, 369], [529, 700, 690], [700, 551, 690], [89, 304, 573], [625, 534, 732], [730, 302, 685], [503, 681, 727], [702, 673, 701], [730, 327, 302], [327, 353, 333], [596, 664, 575], [660, 499, 707], [585, 546, 650], [560, 729, 734], [700, 655, 551], [176, 571, 651], [517, 504, 223], [730, 685, 544], [1661, 1682, 726], [1682, 495, 726], [1250, 301, 917], [605, 524, 700], [609, 687, 369], [516, 389, 895], [1553, 686, 1027], [673, 702, 164], [656, 591, 654], [520, 596, 575], [402, 123, 401], [828, 456, 728], [1645, 677, 1653], [528, 556, 277], [638, 551, 699], [190, 497, 359], [276, 730, 544], [1117, 1525, 933], [1027, 686, 1306], [155, 708, 163], [709, 605, 541], [647, 644, 547], [650, 637, 687], [599, 734, 591], [578, 293, 267], [1682, 357, 495], [510, 91, 130], [734, 729, 627], [576, 542, 215], [709, 541, 735], [735, 541, 550], [276, 500, 730], [500, 327, 730], [653, 619, 740], [414, 851, 454], [734, 627, 591], [729, 562, 607], [615, 552, 640], [525, 181, 192], [308, 512, 300], [223, 503, 727], [266, 165, 33], [92, 500, 276], [321, 1046, 1033], [585, 609, 606], [1200, 1559, 86], [628, 572, 626], [301, 436, 803], [714, 644, 647], [708, 499, 613], [721, 693, 724], [514, 353, 327], [353, 740, 361], [344, 158, 78], [708, 613, 616], [615, 640, 739], [500, 514, 327], [514, 740, 353], [1449, 177, 185], [462, 233, 625], [851, 405, 1163], [608, 616, 615], [647, 542, 576], [625, 732, 501], [1097, 582, 1311], [1235, 424, 577], [579, 628, 592], [607, 592, 504], [24, 432, 470], [105, 614, 247], [104, 742, 471], [542, 259, 215], [365, 196, 455], [1420, 47, 65], [223, 727, 184], [547, 542, 647], [572, 585, 606], [587, 572, 606], [262, 780, 1370], [647, 576, 136], [644, 674, 598], [271, 53, 75], [727, 508, 258], [471, 742, 142], [505, 375, 224], [357, 1710, 269], [725, 508, 681], [659, 498, 546], [743, 1178, 32], [1195, 634, 231], [1176, 24, 470], [743, 1110, 1178], [135, 809, 857], [63, 746, 407], [634, 1176, 470], [159, 1112, 27], [1176, 1685, 24], [399, 450, 779], [1178, 856, 875], [751, 744, 54], [436, 48, 772], [634, 1108, 1210], [769, 1285, 1286], [751, 298, 755], [746, 1684, 754], [754, 924, 87], [722, 1625, 756], [87, 839, 153], [489, 795, 820], [758, 808, 1518], [839, 840, 153], [831, 1111, 959], [1111, 749, 959], [810, 1253, 1363], [1247, 1394, 713], [1388, 1329, 1201], [1242, 120, 761], [857, 791, 384], [758, 1523, 808], [296, 764, 1504], [70, 1652, 891], [207, 233, 1638], [1348, 57, 28], [858, 420, 332], [964, 1379, 1278], [420, 1194, 816], [784, 1076, 1186], [1076, 21, 1186], [1710, 767, 1], [849, 822, 778], [806, 137, 787], [786, 790, 744], [790, 54, 744], [771, 63, 407], [785, 852, 818], [774, 1823, 272], [895, 151, 516], [135, 1022, 809], [99, 826, 48], [48, 826, 755], [808, 705, 408], [833, 441, 716], [1733, 743, 32], [1385, 836, 852], [772, 827, 737], [1005, 49, 781], [793, 1697, 813], [1518, 441, 1537], [1139, 1132, 859], [782, 801, 770], [1510, 1530, 676], [770, 814, 835], [231, 787, 825], [207, 722, 756], [26, 771, 798], [782, 863, 865], [832, 54, 790], [865, 842, 507], [799, 765, 94], [1175, 1261, 1353], [800, 408, 805], [262, 986, 200], [792, 800, 814], [801, 792, 770], [704, 1203, 1148], [356, 1514, 822], [165, 544, 33], [561, 776, 113], [1043, 738, 775], [815, 831, 820], [773, 792, 801], [772, 48, 914], [772, 737, 803], [436, 772, 803], [808, 817, 705], [1624, 822, 1527], [588, 1144, 788], [799, 762, 604], [821, 1520, 1676], [854, 803, 666], [828, 482, 472], [445, 74, 463], [831, 489, 820], [828, 836, 482], [716, 782, 763], [334, 815, 766], [815, 823, 766], [334, 766, 765], [819, 805, 837], [1716, 1521, 1412], [1684, 924, 754], [800, 805, 819], [1709, 829, 554], [806, 1349, 137], [99, 1013, 747], [341, 595, 276], [817, 810, 818], [1176, 1691, 1685], [763, 782, 865], [830, 846, 1052], [865, 1499, 842], [982, 846, 1053], [847, 832, 790], [1178, 875, 158], [817, 818, 705], [1302, 1392, 45], [96, 417, 284], [223, 614, 517], [356, 507, 1514], [1166, 848, 1179], [1349, 432, 26], [717, 92, 276], [770, 835, 863], [522, 509, 1745], [847, 841, 832], [832, 841, 46], [829, 739, 554], [802, 824, 39], [397, 1043, 775], [1567, 849, 778], [1385, 483, 855], [1349, 26, 1346], [441, 801, 782], [402, 401, 293], [1043, 667, 738], [759, 798, 1007], [819, 837, 728], [728, 837, 828], [837, 852, 828], [1537, 441, 833], [148, 1475, 147], [805, 705, 837], [716, 441, 782], [483, 1371, 780], [814, 819, 844], [845, 753, 1336], [1661, 719, 4], [862, 847, 790], [737, 827, 666], [201, 46, 841], [810, 785, 818], [408, 705, 805], [1560, 1536, 849], [1585, 853, 1786], [7, 1668, 807], [7, 807, 8], [822, 1514, 1527], [800, 819, 814], [847, 862, 841], [991, 857, 760], [705, 818, 837], [808, 408, 773], [402, 293, 578], [791, 858, 332], [1480, 1228, 1240], [814, 844, 835], [785, 1385, 852], [1132, 120, 859], [1743, 1726, 684], [1704, 783, 1279], [1623, 1694, 1731], [959, 489, 831], [1518, 808, 773], [862, 872, 841], [441, 773, 801], [331, 512, 308], [380, 217, 216], [841, 872, 201], [818, 852, 837], [448, 1480, 1240], [856, 1108, 1195], [1527, 1514, 1526], [819, 182, 1232], [871, 724, 693], [852, 836, 828], [770, 792, 814], [803, 737, 666], [751, 826, 278], [1674, 1727, 1699], [849, 356, 822], [871, 693, 834], [507, 842, 1514], [1406, 1097, 869], [1328, 1349, 1346], [823, 815, 795], [744, 751, 278], [1110, 856, 1178], [520, 717, 316], [871, 834, 683], [884, 876, 724], [165, 266, 47], [716, 763, 507], [216, 889, 888], [853, 1585, 1570], [1536, 716, 356], [886, 873, 623], [782, 770, 863], [432, 24, 26], [683, 882, 871], [884, 724, 871], [114, 876, 884], [516, 590, 389], [11, 1218, 1628], [862, 113, 872], [886, 623, 629], [830, 1052, 1120], [762, 153, 604], [773, 408, 792], [763, 865, 507], [153, 840, 604], [882, 884, 871], [531, 151, 326], [886, 890, 873], [133, 262, 200], [819, 1232, 844], [621, 636, 122], [645, 892, 519], [1130, 1076, 784], [114, 263, 876], [1670, 10, 1663], [911, 670, 894], [452, 885, 872], [872, 885, 201], [887, 882, 683], [878, 884, 882], [590, 878, 882], [890, 867, 689], [897, 629, 621], [897, 886, 629], [819, 728, 182], [519, 893, 688], [894, 670, 526], [898, 894, 526], [1536, 356, 849], [810, 1363, 785], [878, 114, 884], [879, 888, 892], [892, 889, 893], [893, 898, 688], [895, 683, 843], [895, 887, 683], [889, 620, 267], [590, 882, 389], [418, 465, 84], [949, 897, 621], [897, 890, 886], [889, 267, 893], [898, 267, 896], [531, 326, 473], [189, 651, 878], [843, 683, 646], [897, 867, 890], [888, 889, 892], [893, 267, 898], [896, 894, 898], [473, 895, 843], [895, 389, 887], [974, 706, 669], [513, 1115, 521], [326, 151, 895], [809, 791, 857], [211, 262, 133], [920, 923, 947], [923, 90, 947], [90, 25, 947], [25, 972, 935], [64, 431, 899], [52, 899, 901], [903, 905, 59], [437, 967, 73], [839, 1242, 761], [904, 975, 44], [917, 301, 144], [915, 670, 911], [905, 201, 885], [1684, 63, 1685], [1033, 1194, 288], [950, 913, 755], [912, 918, 911], [950, 914, 913], [506, 918, 912], [922, 919, 915], [911, 922, 915], [1004, 451, 492], [1263, 553, 639], [922, 911, 918], [630, 920, 947], [916, 506, 926], [916, 918, 506], [521, 1115, 1098], [916, 922, 918], [919, 418, 915], [83, 38, 75], [24, 1685, 771], [110, 1230, 1213], [712, 8, 1837], [922, 930, 919], [919, 430, 418], [1395, 1402, 1187], [930, 922, 916], [594, 623, 69], [35, 431, 968], [35, 968, 969], [866, 924, 1684], [1625, 1263, 675], [631, 630, 52], [930, 931, 919], [430, 709, 418], [302, 333, 49], [1446, 978, 1138], [799, 1007, 798], [931, 843, 919], [947, 25, 64], [885, 738, 667], [1262, 963, 964], [899, 970, 901], [1401, 946, 938], [1117, 933, 1091], [1685, 63, 771], [905, 948, 201], [979, 937, 980], [951, 953, 950], [937, 270, 443], [1154, 903, 59], [1194, 954, 1067], [909, 405, 907], [850, 1151, 59], [1769, 811, 1432], [76, 206, 250], [938, 946, 966], [965, 927, 942], [938, 966, 957], [955, 975, 904], [927, 965, 934], [52, 51, 631], [59, 905, 667], [431, 935, 968], [786, 289, 561], [252, 122, 671], [481, 494, 107], [954, 1817, 1067], [795, 25, 90], [958, 965, 945], [795, 972, 25], [902, 983, 955], [972, 489, 944], [1256, 29, 424], [671, 331, 945], [946, 958, 963], [956, 955, 904], [902, 955, 956], [671, 512, 331], [945, 331, 961], [662, 671, 122], [671, 662, 512], [934, 65, 927], [630, 947, 52], [666, 631, 910], [850, 59, 667], [961, 331, 234], [1024, 411, 1042], [890, 69, 873], [252, 671, 945], [975, 290, 940], [283, 186, 196], [30, 283, 365], [950, 755, 298], [946, 965, 958], [985, 290, 975], [969, 290, 985], [405, 851, 206], [935, 431, 64], [941, 1423, 1420], [964, 963, 167], [942, 252, 945], [78, 757, 57], [49, 1005, 66], [937, 979, 270], [631, 666, 827], [980, 937, 443], [66, 689, 282], [421, 902, 956], [947, 64, 52], [35, 979, 899], [951, 971, 953], [762, 87, 153], [27, 31, 381], [924, 839, 87], [946, 963, 966], [331, 308, 340], [957, 966, 1262], [473, 843, 931], [953, 971, 920], [270, 969, 902], [935, 962, 968], [51, 1005, 781], [969, 983, 902], [437, 73, 940], [69, 421, 956], [761, 249, 840], [263, 974, 669], [962, 944, 967], [962, 437, 290], [985, 975, 955], [907, 405, 948], [720, 957, 1262], [25, 935, 64], [176, 200, 571], [108, 945, 50], [250, 851, 414], [200, 986, 571], [881, 974, 263], [827, 772, 953], [970, 899, 980], [29, 159, 27], [234, 331, 340], [948, 405, 206], [980, 899, 979], [986, 984, 571], [571, 984, 881], [990, 706, 974], [946, 934, 965], [970, 980, 66], [1113, 1486, 1554], [984, 981, 881], [881, 987, 974], [689, 66, 443], [1005, 901, 66], [983, 985, 955], [165, 47, 718], [987, 990, 974], [1370, 986, 262], [901, 970, 66], [51, 901, 1005], [981, 987, 881], [988, 706, 990], [942, 945, 965], [290, 437, 940], [64, 899, 52], [988, 556, 706], [941, 934, 946], [431, 35, 899], [996, 989, 984], [984, 989, 981], [981, 989, 987], [35, 969, 270], [1370, 995, 986], [986, 995, 984], [989, 999, 987], [987, 992, 990], [992, 988, 990], [962, 967, 437], [951, 950, 976], [979, 35, 270], [421, 270, 902], [998, 995, 1370], [987, 999, 992], [988, 364, 556], [969, 985, 983], [689, 443, 890], [995, 1000, 984], [219, 958, 108], [998, 1000, 995], [999, 997, 992], [914, 953, 772], [845, 1336, 745], [806, 787, 231], [1000, 996, 984], [989, 996, 999], [50, 945, 961], [443, 421, 69], [797, 158, 779], [1098, 1463, 434], [996, 1009, 999], [1001, 988, 992], [1001, 364, 988], [903, 907, 905], [26, 759, 973], [997, 1001, 992], [632, 364, 1001], [1346, 26, 973], [998, 1008, 1000], [1000, 1009, 996], [531, 931, 736], [252, 949, 621], [286, 388, 525], [1174, 1008, 998], [1009, 1010, 999], [999, 1010, 997], [1014, 1001, 997], [614, 105, 517], [958, 945, 108], [525, 1004, 242], [963, 958, 219], [233, 426, 304], [1000, 1008, 1009], [1010, 1014, 997], [1001, 1006, 632], [824, 413, 39], [642, 636, 622], [480, 388, 205], [28, 757, 797], [1014, 1006, 1001], [1006, 410, 632], [975, 940, 44], [1234, 420, 858], [54, 832, 46], [1009, 1012, 1010], [167, 963, 219], [41, 481, 107], [1017, 1010, 1012], [122, 636, 662], [939, 525, 388], [525, 939, 1004], [950, 953, 914], [829, 1735, 739], [1008, 880, 1015], [1008, 1015, 1009], [1263, 639, 675], [956, 594, 69], [795, 90, 1347], [1179, 848, 1013], [759, 1007, 973], [1009, 1015, 1012], [1012, 1016, 1017], [1017, 1014, 1010], [1019, 1011, 1006], [927, 65, 949], [649, 316, 595], [913, 48, 755], [976, 950, 298], [1003, 1015, 880], [1018, 1006, 1014], [1021, 1018, 1014], [444, 692, 1011], [451, 1029, 1063], [1185, 851, 1163], [29, 27, 381], [181, 525, 242], [1021, 1014, 1017], [1016, 1021, 1017], [1018, 1019, 1006], [1019, 444, 1011], [927, 949, 942], [451, 393, 492], [903, 1154, 907], [391, 101, 57], [94, 765, 58], [419, 1016, 1012], [949, 252, 942], [907, 1020, 909], [765, 442, 58], [94, 406, 908], [1007, 94, 908], [34, 1012, 1015], [34, 419, 1012], [419, 1021, 1016], [451, 1057, 393], [907, 948, 905], [1034, 1073, 1039], [1061, 906, 1619], [1068, 960, 1034], [471, 1249, 104], [112, 1024, 1042], [372, 379, 125], [341, 543, 165], [141, 1094, 170], [566, 243, 1061], [398, 1034, 1039], [325, 317, 1823], [1493, 296, 1724], [850, 667, 1043], [1054, 297, 1065], [1619, 135, 1074], [1061, 243, 906], [680, 1024, 821], [1103, 96, 1245], [1440, 1123, 1491], [1047, 1025, 1044], [672, 454, 1231], [1484, 697, 1530], [993, 672, 1231], [178, 154, 1088], [1044, 1041, 1066], [112, 1062, 1058], [1530, 649, 676], [178, 1088, 1040], [1046, 328, 954], [243, 244, 1022], [954, 1194, 1033], [1042, 411, 1032], [971, 993, 1056], [960, 1093, 1034], [1754, 1338, 232], [385, 1064, 412], [1057, 1063, 111], [748, 1071, 1447], [1530, 697, 695], [971, 1056, 1270], [977, 1059, 1211], [649, 741, 316], [1060, 1452, 1030], [353, 354, 1323], [695, 768, 649], [398, 404, 1034], [596, 316, 741], [1836, 119, 13], [1513, 1115, 1528], [883, 1081, 1652], [1039, 1073, 1048], [462, 426, 233], [31, 1296, 354], [1055, 1047, 1066], [1032, 1054, 1045], [1521, 310, 1224], [119, 861, 13], [1194, 1234, 288], [1109, 1771, 1070], [1166, 1160, 776], [1044, 1035, 1041], [1026, 960, 1064], [1050, 1032, 1045], [1049, 1041, 387], [115, 1013, 99], [1046, 954, 1033], [1321, 920, 971], [611, 1058, 345], [1048, 1066, 1049], [1023, 1055, 1073], [1029, 451, 1004], [118, 1094, 141], [1094, 1080, 170], [1042, 1032, 1050], [1026, 1064, 385], [15, 16, 1084], [1096, 1079, 61], [1075, 1071, 748], [325, 1817, 328], [909, 1163, 405], [1022, 1234, 809], [374, 398, 1051], [1082, 72, 81], [1023, 1034, 1093], [1817, 1794, 1067], [86, 1445, 1400], [1507, 1535, 1510], [1079, 1096, 1075], [568, 1478, 1104], [1070, 178, 1040], [1034, 1023, 1073], [776, 1155, 113], [1103, 143, 142], [1140, 81, 73], [1082, 81, 1140], [1060, 1030, 936], [1040, 1086, 1109], [370, 1065, 385], [61, 72, 1082], [1087, 1096, 1144], [1040, 1088, 1086], [1651, 812, 752], [1062, 1050, 1045], [187, 154, 178], [179, 187, 178], [1099, 1344, 1101], [1668, 1058, 807], [1073, 1055, 1048], [1099, 1336, 1344], [1283, 943, 1123], [1049, 387, 1051], [1024, 680, 449], [61, 1082, 1100], [967, 749, 1111], [1439, 1037, 88], [742, 1505, 142], [398, 1039, 1051], [1107, 1336, 1099], [1344, 1542, 1101], [142, 1505, 1103], [477, 1093, 447], [477, 1023, 1093], [471, 142, 1249], [1041, 1035, 394], [1328, 568, 1104], [61, 1100, 1096], [154, 1092, 1088], [112, 1042, 1050], [154, 187, 168], [435, 235, 45], [1075, 1096, 1087], [97, 1075, 748], [1049, 1066, 1041], [816, 1067, 1028], [846, 982, 1142], [1245, 96, 284], [1092, 154, 1080], [1057, 451, 1063], [387, 377, 1051], [1055, 1025, 1047], [1075, 1087, 1089], [1106, 1108, 856], [1068, 1034, 404], [1480, 1545, 868], [906, 135, 1619], [1074, 991, 1095], [570, 566, 1061], [1025, 453, 1044], [745, 1336, 1107], [1035, 1057, 416], [1092, 1102, 1129], [1074, 135, 991], [1105, 745, 1107], [447, 1026, 446], [394, 387, 1041], [73, 81, 940], [1118, 1108, 1106], [1210, 1108, 874], [243, 1022, 906], [412, 1064, 1068], [1280, 611, 603], [960, 447, 1093], [1051, 1039, 1049], [1040, 1109, 1070], [1471, 1037, 1439], [69, 890, 443], [1377, 703, 1374], [1092, 1080, 1102], [1096, 1100, 788], [1096, 788, 1144], [1114, 967, 1111], [446, 1026, 297], [70, 1112, 883], [453, 393, 1057], [1118, 874, 1108], [1054, 370, 1045], [1080, 1094, 1102], [1039, 1048, 1049], [428, 753, 845], [1047, 1044, 1066], [1044, 453, 1035], [1472, 731, 1512], [1126, 1121, 743], [743, 1121, 1110], [1032, 297, 1054], [1480, 868, 1216], [71, 358, 72], [1133, 967, 1114], [1105, 1119, 745], [1035, 453, 1057], [1026, 447, 960], [454, 851, 1190], [1030, 1477, 652], [589, 816, 1028], [1110, 1121, 1106], [1122, 1118, 1106], [1116, 874, 1118], [1048, 1055, 1066], [1194, 1067, 816], [744, 278, 747], [745, 1120, 845], [845, 1052, 428], [1105, 1780, 1119], [1065, 297, 385], [1098, 1529, 1463], [731, 1060, 936], [235, 434, 812], [1445, 1525, 1117], [1106, 1121, 1122], [1122, 1127, 1118], [1127, 1116, 1118], [1094, 118, 1732], [1119, 1120, 745], [1406, 1124, 1097], [435, 117, 235], [1462, 1440, 1037], [1126, 1129, 1121], [1088, 1092, 1129], [1133, 73, 967], [1120, 1052, 845], [812, 434, 752], [1441, 1559, 1200], [1131, 588, 413], [1054, 1065, 370], [235, 1098, 434], [1052, 1142, 428], [1737, 428, 1142], [1496, 1446, 1483], [1182, 1083, 1654], [1121, 1129, 1122], [1732, 1116, 1127], [768, 457, 649], [761, 1114, 249], [1064, 960, 1068], [1135, 1481, 1136], [1126, 952, 1129], [1087, 588, 1131], [1087, 1144, 588], [859, 788, 1139], [1140, 1133, 1132], [1133, 1140, 73], [1822, 570, 1061], [394, 1035, 416], [1055, 1023, 459], [80, 264, 485], [1119, 1128, 1120], [145, 1658, 567], [695, 891, 768], [1129, 1102, 1122], [1122, 1102, 1127], [1416, 1077, 1413], [297, 1026, 385], [1052, 846, 1142], [1445, 1117, 1400], [952, 1086, 1129], [1714, 1089, 1131], [1131, 1089, 1087], [1100, 1139, 788], [112, 1050, 1062], [1323, 354, 1296], [49, 333, 1141], [1142, 982, 1737], [79, 1457, 1091], [1088, 1129, 1086], [1102, 1094, 1127], [1127, 1094, 1732], [1100, 1082, 1139], [1082, 1132, 1139], [1082, 1140, 1132], [1150, 1043, 397], [60, 1166, 289], [1696, 1146, 1698], [1297, 1202, 1313], [409, 1297, 1313], [1234, 1194, 420], [1408, 1391, 1394], [424, 1235, 1243], [1203, 309, 1148], [485, 477, 447], [1152, 1156, 850], [1153, 1149, 1155], [1153, 1157, 1149], [1149, 1152, 1150], [1156, 1154, 1151], [776, 1153, 1155], [1157, 1152, 1149], [1217, 1393, 1208], [1156, 1159, 1154], [1153, 1165, 1157], [1165, 1152, 1157], [1159, 1020, 1154], [1161, 1153, 776], [1161, 1165, 1153], [1165, 1158, 1152], [1152, 1158, 1156], [1158, 1159, 1156], [1166, 776, 561], [1160, 1161, 776], [1161, 1164, 1165], [1161, 1160, 1164], [1158, 1162, 1159], [1159, 1162, 1020], [1270, 1321, 971], [1164, 1170, 1165], [1165, 1162, 1158], [1162, 1163, 1020], [588, 788, 925], [1166, 1167, 1160], [1165, 1170, 1162], [1160, 1167, 1164], [1162, 1170, 1163], [1179, 1167, 1166], [1167, 1168, 1164], [1164, 1168, 1170], [1168, 1169, 1170], [1234, 1022, 288], [802, 39, 866], [1179, 1168, 1167], [1169, 1173, 1170], [1170, 1173, 1163], [1173, 1185, 1163], [1360, 1267, 1364], [1169, 1185, 1173], [611, 244, 243], [900, 1226, 1376], [1260, 1408, 1350], [618, 840, 831], [1181, 1183, 1179], [1179, 1184, 1168], [1208, 1274, 1291], [1183, 1184, 1179], [1168, 1184, 1169], [1387, 1395, 1254], [1208, 1204, 1172], [1182, 1197, 1083], [1187, 1083, 1197], [1213, 1183, 1181], [1169, 1207, 1185], [135, 857, 991], [1013, 1213, 1181], [1189, 1183, 1213], [1183, 1189, 1184], [1169, 1184, 1207], [1207, 1190, 1185], [1180, 1389, 1288], [1191, 1192, 1640], [1640, 1192, 1090], [1090, 1205, 1654], [1654, 1205, 1182], [1188, 1395, 1187], [1126, 743, 1733], [788, 859, 925], [809, 1234, 1171], [1193, 1197, 1182], [1189, 1199, 1184], [1639, 1191, 1637], [1639, 1212, 1191], [1205, 1193, 1182], [1198, 1187, 1197], [1199, 1207, 1184], [332, 1053, 846], [1090, 1192, 1205], [117, 1188, 1187], [435, 1188, 117], [435, 1206, 1188], [1199, 1189, 1213], [420, 816, 1053], [1212, 1215, 1191], [117, 1187, 1198], [45, 1206, 435], [120, 1132, 1133], [874, 1116, 1210], [1191, 1215, 1192], [1193, 1216, 1197], [1216, 1198, 1197], [1199, 1214, 1207], [117, 521, 235], [1220, 1311, 1078], [1220, 900, 1311], [1653, 1215, 1212], [1192, 1225, 1205], [1205, 1209, 1193], [1209, 1216, 1193], [1389, 1217, 1172], [1207, 1214, 454], [171, 557, 1747], [1805, 1078, 1787], [1805, 1219, 1078], [1198, 1216, 868], [666, 910, 854], [1230, 1231, 1213], [1213, 1231, 1199], [1199, 1231, 1214], [1219, 1220, 1078], [1215, 1221, 1192], [1192, 1221, 1225], [1225, 1228, 1205], [1205, 1228, 1209], [1209, 1228, 1216], [1464, 1325, 1223], [1215, 1227, 1221], [1228, 1480, 1216], [1226, 1653, 1376], [1653, 1249, 1215], [1221, 1240, 1225], [1225, 1240, 1228], [839, 761, 840], [1238, 1219, 1805], [1238, 1220, 1219], [1232, 1380, 1375], [1226, 1249, 1653], [1221, 1227, 1240], [233, 207, 532], [110, 1236, 1230], [1248, 1231, 1230], [1231, 454, 1214], [1249, 1227, 1215], [1248, 1056, 1231], [489, 959, 944], [448, 1240, 284], [925, 859, 1242], [1805, 1244, 1238], [1252, 1220, 1238], [1252, 921, 1220], [1236, 1251, 1230], [1230, 1251, 1248], [1056, 993, 1231], [1031, 1264, 1263], [68, 1186, 157], [1227, 1245, 1240], [1103, 1245, 143], [1243, 1235, 612], [1252, 95, 921], [1249, 1226, 1237], [1390, 1387, 1254], [1120, 384, 830], [830, 332, 846], [1227, 143, 1245], [1315, 1369, 1358], [1356, 1269, 1386], [972, 795, 489], [1831, 1224, 310], [1250, 1255, 1251], [1251, 1056, 1248], [1256, 1243, 103], [658, 358, 175], [1620, 1238, 1244], [1620, 1252, 1238], [1506, 95, 1252], [104, 1249, 1237], [1249, 143, 1227], [1268, 1419, 1329], [634, 806, 231], [618, 831, 815], [924, 1242, 839], [1255, 1270, 1251], [1251, 1270, 1056], [866, 925, 1242], [103, 29, 1256], [424, 1243, 1256], [134, 1651, 752], [1250, 917, 1255], [1172, 1204, 1260], [1352, 1036, 1276], [1265, 1201, 1329], [804, 1282, 1259], [1259, 1294, 723], [335, 1330, 1305], [407, 762, 799], [875, 856, 1195], [32, 158, 344], [967, 944, 749], [372, 125, 42], [1175, 1354, 1261], [553, 612, 1235], [1259, 1273, 1294], [1294, 1283, 723], [757, 78, 158], [407, 799, 798], [901, 51, 52], [139, 1386, 1389], [1386, 1269, 1389], [1389, 1269, 1217], [1148, 1590, 1268], [1428, 1449, 1450], [804, 1281, 1282], [1273, 1259, 1282], [158, 399, 779], [771, 407, 798], [521, 1098, 235], [917, 1312, 1255], [1312, 1270, 1255], [1217, 1269, 1393], [1195, 1108, 634], [1110, 1106, 856], [1210, 1691, 1176], [27, 1112, 1145], [1296, 27, 1145], [1171, 858, 791], [704, 1148, 1290], [1430, 1436, 1437], [1282, 1308, 1273], [1300, 943, 1283], [1393, 1355, 1274], [720, 1278, 769], [1287, 1059, 1399], [1310, 1388, 1272], [1312, 1321, 1270], [851, 1185, 1190], [1296, 1145, 1304], [26, 24, 771], [51, 910, 631], [1329, 1290, 1268], [1290, 1148, 1268], [1298, 1293, 733], [1281, 1293, 1282], [1282, 1293, 1308], [1308, 1299, 1273], [1300, 1283, 1294], [1340, 943, 1300], [1340, 1301, 943], [407, 754, 762], [1287, 1399, 1295], [34, 139, 128], [1288, 1172, 1260], [120, 1133, 1114], [1306, 1113, 1511], [1464, 1223, 1292], [1299, 1294, 1273], [1299, 1300, 1294], [1286, 1295, 838], [1285, 1247, 1286], [1247, 713, 1286], [1201, 1265, 1390], [1378, 1368, 1357], [1482, 1320, 917], [917, 1320, 1312], [850, 1156, 1151], [588, 39, 413], [1324, 1306, 686], [789, 1365, 928], [1223, 1326, 1292], [1292, 1326, 1298], [869, 1097, 1311], [790, 786, 561], [1323, 1304, 932], [1323, 1296, 1304], [1317, 1324, 686], [1306, 368, 1113], [1325, 1342, 1223], [1326, 1348, 1298], [1293, 1327, 1308], [1308, 1318, 1299], [704, 1290, 1258], [1320, 1321, 1312], [761, 120, 1114], [1684, 802, 866], [1674, 6, 1727], [1316, 1323, 932], [1335, 1337, 1305], [1348, 1327, 1293], [1298, 1348, 1293], [1333, 1300, 1299], [1333, 1343, 1300], [1328, 1301, 1340], [1328, 1314, 1301], [838, 1399, 1319], [921, 1237, 900], [409, 1391, 1408], [1376, 1653, 677], [1281, 804, 1458], [1331, 1324, 1317], [1324, 368, 1306], [368, 1338, 1307], [1327, 797, 1308], [797, 1345, 1308], [1308, 1345, 1318], [1318, 1333, 1299], [1341, 1147, 1572], [923, 1321, 1320], [923, 920, 1321], [39, 588, 866], [1141, 1323, 1316], [1330, 1335, 1305], [1337, 1335, 1336], [1339, 1332, 1325], [1223, 1342, 1326], [1342, 1348, 1326], [1348, 797, 1327], [1345, 1333, 1318], [1343, 1340, 1300], [1419, 1265, 1329], [1347, 1320, 1584], [1535, 1141, 1316], [1078, 1311, 582], [1344, 1335, 1330], [753, 1331, 1337], [368, 1324, 1331], [753, 368, 1331], [1332, 1485, 1325], [1325, 1485, 1342], [787, 1343, 1333], [137, 1328, 1340], [973, 1341, 1479], [406, 1147, 1341], [1171, 1234, 858], [1141, 1535, 1322], [49, 1141, 1322], [1344, 1336, 1335], [973, 908, 1341], [766, 1347, 1584], [1347, 923, 1320], [781, 49, 1322], [368, 232, 1338], [787, 1340, 1343], [787, 137, 1340], [568, 1346, 973], [58, 1147, 406], [442, 1334, 1147], [58, 442, 1147], [442, 766, 1334], [90, 923, 1347], [428, 368, 753], [779, 1333, 1345], [825, 787, 1333], [137, 1349, 1328], [1328, 1346, 568], [908, 406, 1341], [924, 866, 1242], [1336, 753, 1337], [428, 232, 368], [1115, 777, 1098], [1348, 28, 797], [797, 779, 1345], [779, 825, 1333], [1007, 908, 973], [583, 1351, 880], [1365, 1246, 977], [1658, 145, 1710], [1310, 796, 1388], [718, 245, 165], [1302, 1272, 1254], [1174, 1351, 583], [1174, 715, 1351], [1358, 1260, 1204], [1374, 1373, 1276], [1377, 1374, 1276], [678, 1362, 1382], [1377, 1276, 254], [139, 34, 40], [1008, 1174, 583], [1396, 1286, 1319], [768, 891, 457], [1316, 932, 1535], [1289, 1371, 1360], [182, 736, 864], [1355, 1364, 1274], [860, 1367, 1354], [1362, 1222, 1382], [1376, 869, 1311], [1590, 1411, 198], [1232, 1375, 877], [1394, 1295, 1286], [880, 1356, 1386], [880, 1351, 1356], [1211, 1059, 1287], [197, 678, 1405], [880, 1386, 1003], [1368, 1253, 1357], [1357, 1253, 1036], [715, 1289, 1364], [1354, 1367, 703], [1383, 877, 1375], [1266, 1288, 1260], [1373, 1374, 703], [1372, 1289, 1174], [1303, 1366, 1378], [1351, 715, 1355], [1665, 1666, 624], [1309, 1357, 1036], [900, 1237, 1226], [1174, 1289, 715], [1337, 1331, 1317], [1360, 1303, 1359], [1267, 1354, 1175], [1241, 1284, 1414], [1377, 254, 929], [1385, 855, 836], [1396, 1319, 1436], [1361, 1366, 1303], [1381, 1368, 1378], [1313, 1211, 1391], [1368, 1385, 1363], [813, 82, 861], [1058, 1280, 807], [893, 519, 892], [1359, 1303, 860], [1382, 1350, 1247], [1371, 1303, 1360], [1267, 1175, 1271], [769, 1286, 1396], [712, 1837, 82], [1366, 1385, 1381], [1365, 796, 1310], [1003, 1386, 40], [780, 1371, 1370], [561, 862, 790], [1284, 1380, 864], [1449, 1428, 177], [611, 1280, 1058], [1284, 1375, 1380], [926, 506, 1241], [1305, 1337, 1317], [309, 1203, 208], [1388, 1201, 1390], [1309, 1036, 1352], [1377, 929, 1411], [1399, 1059, 1257], [1112, 70, 1145], [289, 1166, 561], [1288, 1389, 1172], [1362, 37, 1180], [713, 1394, 1286], [1355, 1393, 1269], [1401, 1423, 941], [1274, 1271, 1384], [860, 1378, 1367], [715, 1364, 1355], [677, 1406, 869], [1297, 1358, 1202], [1388, 1258, 1329], [1180, 1288, 1266], [1008, 583, 880], [1524, 1425, 1463], [1390, 1403, 1387], [1278, 1379, 1247], [1278, 1247, 1285], [964, 1278, 1262], [1358, 1369, 1202], [1715, 1699, 1726], [926, 1241, 1414], [1341, 1572, 1479], [926, 930, 916], [1397, 51, 781], [409, 1358, 1297], [1236, 436, 301], [1376, 677, 869], [1351, 1355, 1356], [758, 1534, 1523], [1378, 1357, 1367], [977, 1211, 1365], [1135, 1136, 854], [1394, 1391, 1295], [1266, 1260, 1222], [1365, 1302, 1246], [1232, 877, 844], [736, 930, 864], [1408, 1358, 409], [1508, 817, 1523], [1381, 1385, 1368], [718, 854, 910], [854, 718, 1135], [1382, 1222, 1350], [1391, 1211, 1287], [1391, 1287, 1295], [1257, 1651, 134], [1414, 1284, 864], [1291, 1369, 1315], [1202, 928, 1313], [86, 1400, 1413], [1413, 1200, 86], [1263, 1625, 1031], [1413, 1400, 1404], [1002, 1664, 1834], [930, 926, 1414], [1399, 1257, 134], [520, 316, 596], [1393, 1274, 1208], [1657, 1655, 1712], [1407, 1404, 1400], [1404, 1410, 1413], [1649, 1229, 1406], [1362, 1266, 1222], [1384, 1271, 1175], [900, 1376, 1311], [1274, 1384, 1291], [1291, 1384, 1431], [1433, 1396, 1436], [1267, 1359, 1354], [309, 1353, 703], [838, 1319, 1286], [1407, 1410, 1404], [441, 1518, 773], [1241, 123, 1428], [1622, 1521, 1224], [1217, 1208, 1172], [1130, 793, 1076], [425, 1409, 1481], [1481, 1409, 1533], [1303, 1378, 860], [1350, 1408, 1394], [1246, 1651, 977], [1289, 1360, 1364], [1727, 1694, 1623], [1417, 1407, 1533], [1417, 1410, 1407], [1406, 1650, 1649], [1319, 134, 1437], [1414, 864, 930], [1406, 1229, 1124], [1354, 1359, 860], [1433, 769, 1396], [1417, 1533, 1409], [1416, 1413, 1410], [1415, 1416, 1410], [95, 1237, 921], [1392, 1254, 1395], [1360, 1359, 1267], [1258, 1290, 1329], [1180, 128, 1389], [1420, 1409, 425], [1417, 1418, 1410], [1418, 1415, 1410], [1422, 1077, 1416], [1247, 1350, 1394], [37, 43, 1180], [1204, 1315, 1358], [1428, 1383, 1375], [1356, 1355, 1269], [1409, 1418, 1417], [1302, 45, 1246], [1421, 1416, 1415], [1421, 1422, 1416], [1422, 1494, 1077], [957, 720, 938], [1423, 1409, 1420], [1423, 1418, 1409], [752, 434, 1438], [1260, 1358, 1408], [1363, 1385, 785], [1423, 1426, 1418], [1426, 1424, 1418], [1229, 1649, 1124], [1222, 1260, 1350], [1508, 1523, 1137], [1278, 1285, 769], [1482, 917, 144], [1418, 1424, 1415], [1425, 1422, 1421], [1425, 1524, 1422], [1272, 1388, 1390], [1391, 409, 1313], [1378, 1366, 1381], [1371, 483, 1361], [720, 1262, 1278], [29, 103, 159], [1271, 1364, 1267], [1424, 1427, 1415], [1537, 1522, 1518], [134, 752, 1438], [1420, 934, 941], [1428, 1375, 1284], [1277, 1224, 1831], [1362, 1180, 1266], [1401, 1426, 1423], [1577, 1369, 1291], [268, 483, 262], [1383, 1450, 1456], [1384, 1175, 1431], [1430, 1415, 1427], [1430, 1421, 1415], [1430, 1425, 1421], [1379, 1382, 1247], [1252, 1553, 1429], [1206, 1392, 1395], [1433, 1430, 1427], [309, 208, 1353], [1272, 1390, 1254], [1361, 483, 1366], [1523, 817, 808], [1302, 1254, 1392], [1371, 1361, 1303], [1426, 1435, 1424], [1435, 1433, 1424], [1433, 1427, 1424], [720, 769, 1433], [796, 1258, 1388], [1590, 1419, 1268], [1289, 1372, 1371], [1305, 1317, 1509], [998, 1372, 1174], [40, 1386, 139], [1261, 1354, 703], [1364, 1271, 1274], [134, 1438, 1437], [1436, 1319, 1437], [1317, 686, 1509], [1484, 932, 1304], [1434, 1432, 1509], [1420, 65, 934], [931, 930, 736], [1367, 1357, 1309], [1372, 1370, 1371], [1204, 1208, 1315], [1426, 938, 1435], [1368, 1363, 1253], [1207, 454, 1190], [1302, 1310, 1272], [309, 1377, 390], [390, 1377, 1411], [1370, 1372, 998], [1411, 1590, 1148], [720, 1433, 1435], [1450, 1383, 1428], [1379, 678, 1382], [1405, 678, 1379], [1208, 1291, 1315], [1399, 134, 1319], [1367, 1309, 1373], [1373, 1352, 1276], [596, 741, 593], [553, 1264, 612], [1433, 1436, 1430], [1437, 1438, 1430], [964, 1405, 1379], [1373, 1309, 1352], [1265, 1403, 1390], [1233, 1618, 1434], [1365, 1310, 1302], [789, 796, 1365], [720, 1435, 938], [128, 139, 1389], [1466, 933, 1525], [1191, 1640, 1637], [1314, 1442, 943], [1141, 353, 1323], [1489, 1138, 1474], [1462, 1477, 1440], [1474, 1138, 1488], [1442, 1314, 1443], [1446, 1030, 1546], [1484, 1145, 697], [1549, 1443, 1445], [1470, 1572, 1468], [1397, 1239, 1507], [1649, 1825, 1824], [1259, 1440, 1477], [1451, 1450, 1449], [978, 1446, 652], [1454, 1456, 1451], [1451, 1456, 1450], [341, 1507, 595], [933, 1547, 79], [804, 1452, 1060], [1454, 1455, 1456], [1398, 1460, 1454], [1455, 877, 1456], [1277, 1831, 1825], [804, 1060, 1458], [1339, 1459, 1595], [1314, 1104, 1443], [933, 1448, 1547], [147, 1460, 1398], [1460, 1461, 1454], [1454, 1461, 1455], [1292, 1125, 1464], [417, 1531, 1480], [1459, 1339, 1325], [811, 1756, 335], [1512, 936, 1490], [777, 1529, 1098], [147, 1475, 1460], [1464, 253, 1459], [836, 855, 482], [1487, 1486, 1307], [1104, 1501, 1443], [1439, 1200, 1532], [1475, 1469, 1460], [1460, 1469, 1461], [1325, 1464, 1459], [1277, 1825, 1649], [1532, 1200, 1077], [844, 877, 1455], [1572, 933, 1466], [1479, 568, 973], [1509, 335, 1305], [1339, 1595, 1759], [1469, 1476, 1461], [1461, 1476, 1455], [1104, 1470, 1468], [1464, 1472, 253], [1117, 1091, 1407], [1756, 1542, 335], [1206, 1395, 1188], [335, 1542, 1330], [835, 844, 1455], [1471, 1598, 1462], [1491, 1442, 1441], [835, 1455, 1476], [1441, 1442, 1443], [1489, 1474, 1473], [1251, 1236, 1250], [1030, 1452, 1477], [1598, 1439, 1532], [978, 1598, 1492], [1426, 1401, 938], [1448, 1584, 1482], [1724, 1497, 1475], [1475, 1497, 1469], [1484, 1535, 932], [1307, 1486, 1113], [1487, 696, 1495], [1037, 1491, 1441], [1030, 1446, 936], [1453, 1487, 1495], [696, 1467, 1495], [1138, 1489, 1483], [1497, 1143, 1469], [1469, 1143, 1476], [652, 1598, 978], [850, 1043, 1150], [1482, 1584, 1320], [1731, 98, 1697], [1113, 1554, 1573], [1524, 1532, 1494], [1496, 1467, 696], [1452, 1259, 1477], [296, 1504, 1497], [1504, 1143, 1497], [1143, 1499, 1476], [718, 910, 1498], [868, 1540, 1528], [817, 1253, 810], [1490, 696, 1487], [1440, 1491, 1037], [1510, 676, 595], [1488, 1492, 1517], [781, 1239, 1397], [1467, 1519, 1503], [1500, 1307, 1759], [1149, 397, 452], [1504, 1514, 1143], [1514, 842, 1143], [1125, 733, 1458], [1503, 1531, 1555], [1276, 1036, 1137], [1440, 723, 1123], [1036, 1508, 1137], [817, 1508, 1253], [103, 883, 1112], [1458, 731, 1472], [1512, 1490, 1487], [1487, 1453, 1486], [1138, 978, 1488], [1036, 1253, 1508], [1398, 149, 147], [1474, 1517, 1513], [1125, 1458, 1472], [1486, 1453, 1554], [1518, 1534, 758], [345, 1058, 1062], [928, 1202, 1369], [1554, 1541, 1505], [1464, 1125, 1472], [1504, 764, 1514], [304, 426, 573], [1505, 742, 1506], [1479, 1572, 1478], [1519, 1483, 1489], [833, 716, 1069], [1522, 1534, 1518], [1115, 1513, 777], [811, 335, 1432], [1591, 1533, 1407], [777, 1517, 1529], [1513, 1517, 777], [1498, 910, 1397], [1069, 1539, 833], [833, 1539, 1537], [1522, 1551, 1534], [1534, 1551, 1523], [1538, 1137, 1523], [910, 51, 1397], [1367, 1373, 703], [1466, 1525, 1468], [157, 1186, 1832], [1429, 1511, 1506], [1573, 1505, 1506], [1259, 1452, 804], [1503, 1495, 1467], [262, 483, 780], [1572, 1466, 1468], [1536, 1556, 716], [716, 1556, 1069], [1544, 1523, 1551], [1544, 1538, 1523], [1511, 1573, 1506], [933, 1572, 1448], [1543, 1537, 1539], [1537, 1543, 1522], [1091, 933, 79], [1519, 1540, 1545], [1549, 1445, 86], [1069, 1548, 1539], [1548, 1543, 1539], [1543, 1551, 1522], [1500, 1487, 1307], [68, 784, 1186], [1552, 1544, 1551], [1550, 1538, 1544], [1538, 1550, 1137], [1519, 1473, 1540], [1547, 1448, 1482], [1560, 1563, 1536], [1536, 1563, 1556], [1556, 1548, 1069], [1543, 1558, 1551], [1137, 1550, 1276], [1453, 1495, 1555], [1561, 1543, 1548], [1543, 1561, 1558], [1558, 1566, 1551], [1552, 1550, 1544], [1569, 1557, 1550], [1557, 1276, 1550], [1276, 1557, 254], [1531, 1503, 1480], [1535, 1530, 1510], [1545, 1503, 1519], [1547, 1482, 79], [1566, 1552, 1551], [1552, 1569, 1550], [1503, 1545, 1480], [703, 1377, 309], [1625, 675, 756], [1037, 1441, 88], [929, 254, 1557], [849, 1567, 1560], [1556, 1564, 1548], [1492, 1529, 1517], [1252, 1429, 1506], [1553, 1027, 1429], [1453, 1555, 1541], [1554, 1453, 1541], [1233, 686, 1553], [1328, 1104, 1314], [1564, 1576, 1548], [1548, 1576, 1561], [1557, 1562, 929], [1520, 112, 1668], [1483, 1446, 1138], [778, 1570, 1567], [1563, 1564, 1556], [1561, 1565, 1558], [1565, 1566, 1558], [1569, 1552, 1566], [1562, 1557, 1569], [1530, 1535, 1484], [1387, 1402, 1395], [1621, 1634, 1387], [1567, 1568, 1560], [1560, 1568, 1563], [1571, 1569, 1566], [1344, 1330, 1542], [1577, 1431, 1353], [1638, 233, 304], [1524, 1463, 1529], [1353, 1431, 1175], [1077, 1200, 1413], [1478, 1470, 1104], [1568, 1575, 1563], [1563, 1575, 1564], [1575, 1576, 1564], [1561, 1576, 1565], [1565, 1574, 1566], [1562, 1515, 929], [1555, 96, 1541], [1531, 417, 96], [1555, 1531, 96], [1246, 45, 1651], [208, 1577, 1353], [1586, 1568, 1567], [1574, 1571, 1566], [1571, 1583, 1569], [1474, 1513, 1528], [1239, 1322, 1535], [1478, 1572, 1470], [1570, 1586, 1567], [1488, 1517, 1474], [8, 1833, 1837], [1123, 1442, 1491], [1589, 1568, 1586], [1576, 1594, 1565], [1565, 1594, 1574], [1562, 198, 1515], [1559, 1441, 1549], [1441, 1443, 1549], [1135, 425, 1481], [1239, 1535, 1507], [1595, 1487, 1500], [1570, 1585, 1586], [1589, 1578, 1568], [1568, 1578, 1575], [1579, 1569, 1583], [1177, 1577, 208], [115, 1236, 110], [1578, 1593, 1575], [1587, 1576, 1575], [1576, 1581, 1594], [1571, 1582, 1583], [1588, 1579, 1583], [1579, 1580, 1562], [1569, 1579, 1562], [1562, 1580, 198], [1027, 1511, 1429], [1589, 1593, 1578], [1587, 1581, 1576], [1582, 1574, 1594], [1574, 1582, 1571], [1575, 1593, 1587], [1583, 1582, 1588], [1580, 1590, 198], [1587, 1593, 1581], [1505, 1541, 96], [1369, 1577, 1177], [1573, 1554, 1505], [1479, 1478, 568], [1585, 1589, 1586], [1369, 1177, 704], [766, 1584, 1334], [977, 1257, 1059], [1091, 1591, 1407], [1591, 1091, 1457], [1585, 1604, 1589], [1581, 1592, 1594], [1602, 1582, 1594], [1582, 1608, 1588], [1608, 1579, 1588], [1579, 1597, 1580], [1419, 1590, 1580], [1597, 1419, 1580], [1431, 1577, 1291], [1589, 1604, 1593], [1601, 1596, 1593], [1593, 1596, 1581], [1306, 1511, 1027], [1511, 1113, 1573], [1786, 1412, 1585], [1412, 1604, 1585], [1581, 1596, 1592], [1592, 1602, 1594], [1608, 1599, 1579], [1599, 1611, 1579], [1579, 1611, 1597], [1512, 1487, 253], [1519, 1489, 1473], [1545, 1540, 868], [1083, 1187, 1402], [1117, 1407, 1400], [1292, 733, 1125], [284, 1240, 1245], [1604, 1600, 1593], [1600, 1601, 1593], [1582, 1607, 1608], [789, 1369, 704], [1467, 1483, 1519], [1601, 1613, 1596], [1596, 1613, 1592], [1602, 1607, 1582], [1620, 1553, 1252], [1601, 1605, 1613], [1592, 1613, 1602], [1602, 1606, 1607], [1608, 1609, 1599], [1599, 1609, 1611], [1603, 1597, 1611], [1265, 1419, 1597], [1603, 1265, 1597], [1392, 1206, 45], [928, 1369, 789], [1474, 1528, 1473], [1104, 1468, 1501], [1412, 1521, 1604], [1613, 1631, 1602], [1607, 1610, 1608], [1608, 1610, 1609], [1476, 863, 835], [1495, 1503, 1555], [1498, 1397, 718], [1520, 1668, 7], [1604, 1615, 1600], [1605, 1601, 1600], [1602, 1631, 1606], [1606, 1610, 1607], [1759, 1595, 1500], [1292, 1298, 733], [1615, 1604, 1521], [1609, 1603, 1611], [652, 1462, 1598], [1468, 1525, 1445], [1443, 1501, 1445], [1134, 1723, 150], [1521, 1622, 1615], [1615, 1616, 1600], [1616, 1605, 1600], [1605, 1616, 1612], [1605, 1612, 1613], [1612, 1617, 1613], [1613, 1617, 1631], [1606, 1614, 1610], [1265, 1603, 1403], [448, 417, 1480], [1595, 253, 1487], [1501, 1468, 1445], [1383, 1456, 877], [1490, 1496, 696], [1610, 1627, 1609], [1627, 1621, 1609], [1591, 1481, 1533], [1598, 1471, 1439], [1353, 1261, 703], [1606, 1631, 1614], [1609, 1621, 1403], [1532, 1077, 1494], [1528, 1115, 513], [1546, 652, 1446], [1211, 928, 1365], [1540, 1473, 1528], [1078, 1502, 1787], [1425, 1430, 1438], [1617, 1630, 1631], [959, 749, 944], [566, 570, 603], [1716, 310, 1521], [775, 452, 397], [1615, 1636, 1616], [1616, 1636, 1612], [1610, 1632, 1627], [789, 704, 1258], [1457, 1481, 1591], [1769, 1756, 811], [207, 1629, 722], [1629, 1625, 722], [1224, 1277, 1622], [1622, 1636, 1615], [1636, 1646, 1612], [1612, 1630, 1617], [1631, 1626, 1614], [1614, 1632, 1610], [1506, 104, 95], [1481, 1457, 1136], [1123, 943, 1442], [936, 1446, 1496], [1499, 863, 1476], [1629, 1031, 1625], [1233, 1509, 686], [1633, 1634, 1621], [1621, 1387, 1403], [1472, 1512, 253], [1177, 208, 704], [1277, 1636, 1622], [1626, 1632, 1614], [1627, 1633, 1621], [936, 1496, 1490], [185, 1454, 1451], [731, 936, 1512], [1638, 1635, 207], [553, 1263, 1264], [1653, 1212, 1639], [1633, 1627, 1632], [1633, 1387, 1634], [1458, 1060, 731], [368, 1307, 1113], [1264, 1031, 1629], [1152, 850, 1150], [1277, 1644, 1636], [1646, 1637, 1612], [1637, 1630, 1612], [1647, 1631, 1630], [1647, 1626, 1631], [1422, 1524, 1494], [1030, 652, 1546], [1635, 1629, 207], [1635, 1264, 1629], [1639, 1646, 1636], [1637, 1640, 1630], [1641, 1632, 1626], [1632, 1642, 1633], [1633, 1643, 1387], [842, 1499, 1143], [865, 863, 1499], [1516, 978, 1492], [67, 1130, 784], [1103, 1505, 96], [88, 1441, 1200], [1644, 1639, 1636], [1640, 1647, 1630], [1647, 1641, 1626], [1633, 1648, 1643], [1492, 1532, 1524], [1488, 1516, 1492], [1037, 1471, 1462], [612, 1264, 1635], [1502, 1078, 1124], [1641, 1642, 1632], [1648, 1633, 1642], [1528, 513, 868], [1492, 1598, 1532], [1095, 991, 760], [679, 157, 1664], [760, 1128, 1785], [1277, 1650, 1644], [320, 1022, 244], [1559, 1549, 86], [1676, 1520, 7], [1488, 978, 1516], [1095, 760, 1785], [1128, 384, 1120], [304, 312, 1638], [1081, 1638, 312], [1081, 1635, 1638], [103, 612, 1635], [652, 1477, 1462], [1650, 1645, 1644], [1645, 1639, 1644], [1639, 1637, 1646], [1640, 1090, 1647], [1654, 1641, 1647], [1654, 1642, 1641], [1654, 1648, 1642], [1643, 1402, 1387], [1432, 335, 1509], [384, 1128, 760], [1652, 312, 304], [103, 1243, 612], [1277, 1649, 1650], [1090, 1654, 1647], [1643, 1648, 1402], [1134, 324, 1675], [679, 68, 157], [1652, 1081, 312], [1136, 301, 803], [1653, 1639, 1645], [723, 1440, 1259], [803, 854, 1136], [104, 1506, 742], [1112, 159, 103], [1654, 1083, 1648], [977, 1651, 1257], [1397, 1507, 718], [1081, 103, 1635], [1650, 677, 1645], [1083, 1402, 1648], [1706, 1655, 1671], [1624, 1704, 1711], [767, 2, 1], [608, 794, 294], [1678, 1683, 1686], [767, 1682, 2], [1669, 1692, 1675], [296, 1681, 764], [1671, 1656, 1672], [17, 1673, 1679], [1706, 1671, 1673], [1662, 1674, 1699], [1655, 1657, 1656], [418, 84, 915], [1526, 1514, 764], [1658, 1657, 567], [870, 1695, 764], [813, 1697, 98], [1659, 821, 5], [60, 1013, 848], [1013, 110, 1213], [661, 1038, 1692], [1660, 1703, 17], [1693, 1673, 17], [1663, 1715, 1743], [1013, 115, 110], [344, 1733, 32], [1670, 1663, 1743], [1670, 1743, 1738], [1677, 1670, 1738], [1661, 4, 3], [1084, 1683, 1678], [1728, 793, 1130], [1683, 1767, 1196], [1677, 1738, 1196], [1279, 1786, 853], [294, 1038, 608], [1279, 1689, 1786], [870, 18, 1708], [870, 1680, 1695], [1705, 10, 1670], [1084, 1767, 1683], [1196, 1738, 1686], [1750, 870, 1681], [1750, 18, 870], [1773, 1703, 1660], [1135, 47, 425], [150, 323, 1134], [1707, 1655, 1706], [1741, 344, 1687], [1685, 1691, 1684], [1684, 1691, 802], [1672, 1656, 0], [1038, 124, 608], [1671, 1672, 1690], [1628, 1218, 1767], [1686, 1275, 1667], [1493, 1750, 1681], [1773, 18, 1750], [1773, 1660, 18], [1679, 1671, 16], [1735, 1706, 1673], [1667, 1678, 1686], [1688, 1658, 1], [1656, 1688, 0], [1293, 1281, 1458], [1698, 1678, 1667], [1696, 1130, 1722], [1698, 1667, 1696], [1715, 1662, 1699], [1692, 1038, 294], [1682, 767, 357], [1669, 661, 1692], [802, 1702, 824], [1028, 1067, 1784], [822, 1624, 778], [119, 813, 861], [1218, 1670, 1677], [1703, 1693, 17], [1658, 1710, 1], [750, 1730, 1729], [1701, 750, 1729], [1693, 1735, 1673], [1731, 1694, 98], [1691, 1702, 802], [783, 1729, 1719], [1680, 870, 1708], [1707, 1709, 1655], [533, 756, 675], [1691, 1210, 1702], [11, 1705, 1670], [1767, 1218, 1196], [1218, 1677, 1196], [1664, 1716, 1721], [1729, 1725, 1719], [1729, 1072, 1725], [1210, 1116, 1702], [1702, 1720, 824], [1682, 1661, 2], [1713, 1719, 1721], [1716, 1786, 1713], [1730, 1722, 1072], [294, 1717, 1811], [1692, 294, 1666], [1659, 680, 821], [824, 1720, 1714], [1726, 1731, 1718], [345, 1062, 1045], [1738, 1743, 1275], [1075, 1089, 1071], [783, 1719, 1689], [1275, 684, 1728], [1692, 1666, 1665], [1675, 1692, 1665], [294, 1811, 1666], [1716, 1664, 310], [1678, 1698, 1700], [6, 9, 1727], [676, 649, 595], [381, 31, 361], [1723, 1804, 1772], [1727, 9, 1694], [1720, 1089, 1714], [1786, 1716, 1412], [1683, 1196, 1686], [1718, 1697, 1085], [1116, 1739, 1702], [1739, 1734, 1720], [1702, 1739, 1720], [1089, 1720, 1734], [509, 748, 1745], [1743, 1715, 1726], [1717, 294, 794], [1116, 1732, 1739], [1718, 1731, 1697], [1696, 1667, 1130], [1134, 1665, 1723], [1694, 712, 98], [101, 1687, 102], [391, 1736, 101], [662, 636, 642], [1734, 1447, 1089], [1089, 1447, 1071], [436, 99, 493], [1689, 1279, 783], [1485, 1465, 1342], [1736, 1687, 101], [344, 1741, 1733], [1741, 1742, 1733], [1735, 829, 1706], [829, 1707, 1706], [1485, 1332, 1465], [952, 1126, 1742], [1747, 1447, 1734], [879, 892, 645], [1730, 1146, 1696], [829, 1709, 1707], [1709, 1712, 1655], [118, 1739, 1732], [1332, 1744, 1465], [1687, 1749, 1741], [1741, 1758, 1742], [679, 1072, 68], [1072, 1722, 68], [118, 1747, 1739], [1747, 1734, 1739], [1465, 1744, 1736], [1736, 1740, 1687], [1704, 1701, 783], [1665, 624, 1723], [1722, 1130, 67], [1025, 1055, 467], [1444, 14, 1701], [558, 522, 530], [1657, 1658, 1688], [1339, 1746, 1332], [1332, 1748, 1744], [1687, 1740, 1749], [1741, 1749, 1758], [1109, 952, 1742], [1747, 118, 141], [1671, 1690, 1628], [1671, 1628, 16], [1657, 1688, 1656], [1745, 748, 1447], [357, 767, 1710], [1746, 1748, 1332], [1146, 1700, 1698], [1759, 1307, 1338], [1239, 781, 1322], [1745, 1447, 1747], [522, 1745, 1747], [316, 717, 595], [148, 1493, 1724], [1758, 1109, 1742], [1725, 1072, 679], [726, 719, 1661], [1695, 1680, 1526], [1772, 1750, 1493], [148, 1772, 1493], [1542, 1751, 1101], [952, 1109, 1086], [1744, 1752, 1736], [1736, 1752, 1740], [1753, 1755, 1740], [391, 1342, 1736], [821, 112, 1520], [557, 530, 1747], [530, 522, 1747], [994, 879, 645], [1542, 1756, 1751], [1813, 1693, 1703], [1746, 1754, 1748], [1748, 1764, 1744], [1752, 1757, 1740], [1740, 1757, 1753], [1749, 1740, 1755], [1755, 1763, 1749], [1763, 1758, 1749], [1275, 1743, 684], [1813, 1735, 1693], [1107, 1099, 1101], [1723, 624, 1804], [1403, 1603, 1609], [1748, 1754, 1764], [1744, 1757, 1752], [1760, 1109, 1758], [1465, 1736, 1342], [436, 115, 99], [1686, 1738, 1275], [1751, 1766, 1101], [1759, 1754, 1746], [1755, 1753, 1763], [1570, 1279, 853], [1701, 1146, 750], [1655, 1656, 1671], [11, 1670, 1218], [1761, 1751, 1756], [1766, 1107, 1101], [1726, 1623, 1731], [1711, 1704, 1279], [67, 784, 68], [558, 530, 545], [1620, 1618, 1233], [1769, 1761, 1756], [102, 1687, 344], [1338, 1754, 1759], [1754, 232, 1764], [1744, 1765, 1757], [1757, 1763, 1753], [1762, 1760, 1758], [1760, 1771, 1109], [1339, 1759, 1746], [1675, 1665, 1134], [1730, 1696, 1722], [1774, 1751, 1761], [1766, 1780, 1107], [1780, 1105, 1107], [1764, 1765, 1744], [1763, 1762, 1758], [1772, 1773, 1750], [1811, 1813, 1703], [1434, 1769, 1432], [1780, 1766, 1751], [232, 1781, 1764], [1711, 1279, 1570], [1688, 1, 0], [1774, 1780, 1751], [1764, 1781, 1765], [1765, 1768, 1757], [1757, 1768, 1763], [1777, 1782, 1760], [1762, 1777, 1760], [1769, 1774, 1761], [1763, 1777, 1762], [1760, 1782, 1771], [232, 1737, 1781], [1768, 1776, 1763], [272, 255, 774], [1669, 994, 661], [1618, 1769, 1434], [1765, 589, 1768], [1770, 1777, 1763], [1701, 1729, 783], [1783, 1774, 1769], [1789, 1780, 1774], [589, 1775, 1768], [1776, 1770, 1763], [1782, 1778, 1771], [1771, 1778, 1070], [624, 1703, 1773], [624, 1811, 1703], [1620, 1244, 1618], [1779, 1769, 1618], [1779, 1783, 1769], [739, 1735, 1813], [1775, 1776, 1768], [1790, 1777, 1770], [1777, 1778, 1782], [1725, 679, 1721], [733, 1293, 1458], [1802, 1618, 1244], [1802, 1779, 1618], [1788, 1783, 1779], [1789, 1774, 1783], [1796, 1780, 1789], [1796, 1119, 1780], [1823, 1817, 325], [1699, 1727, 1623], [750, 1146, 1730], [1497, 1724, 296], [1128, 1119, 1796], [61, 62, 71], [1131, 413, 824], [1114, 1111, 249], [1784, 1776, 1775], [1123, 723, 1283], [1791, 1788, 1779], [1788, 1789, 1783], [1095, 1797, 1074], [1028, 1784, 1775], [1784, 1770, 1776], [1777, 1790, 1778], [1793, 1797, 1095], [1797, 1800, 1074], [1798, 1790, 1770], [1805, 1802, 1244], [1802, 1791, 1779], [1792, 1789, 1788], [1793, 1785, 1128], [1793, 1095, 1785], [1074, 1800, 1619], [741, 457, 593], [1798, 1770, 1784], [1798, 1794, 1790], [1786, 1689, 1713], [684, 1726, 1718], [1728, 1085, 793], [1795, 1787, 1502], [1806, 1802, 1805], [1819, 1788, 1791], [1067, 1798, 1784], [1790, 1794, 1778], [1795, 1502, 1124], [1801, 1805, 1787], [1807, 1791, 1802], [1807, 1819, 1791], [1819, 1792, 1788], [1799, 1128, 1796], [994, 645, 661], [684, 1085, 1728], [684, 1718, 1085], [1699, 1623, 1726], [1801, 1787, 1795], [1808, 1789, 1792], [1808, 1796, 1789], [1799, 1793, 1128], [1809, 1797, 1793], [1809, 1803, 1797], [1803, 1800, 1797], [1067, 1794, 1798], [774, 255, 1778], [1673, 1671, 1679], [879, 1669, 888], [19, 1807, 1802], [1810, 1619, 1800], [879, 994, 1669], [1794, 774, 1778], [1723, 1772, 148], [1804, 1773, 1772], [1814, 1795, 1124], [1649, 1814, 1124], [1814, 1801, 1795], [1812, 1806, 1805], [19, 1802, 1806], [19, 1819, 1807], [1810, 1800, 1803], [1804, 624, 1773], [1714, 1131, 824], [1801, 1812, 1805], [1812, 19, 1806], [1808, 1792, 1819], [1799, 1809, 1793], [1821, 1810, 1803], [1717, 739, 1813], [1061, 1619, 1822], [1794, 1817, 774], [79, 1482, 144], [1815, 1801, 1814], [23, 1819, 19], [589, 1028, 1775], [1817, 1823, 774], [1689, 1719, 1713], [1824, 1814, 1649], [1827, 1818, 1801], [1818, 1812, 1801], [1818, 19, 1812], [1818, 20, 19], [1816, 1809, 1799], [1821, 1803, 1809], [1822, 1619, 1810], [124, 708, 608], [1663, 10, 1715], [1815, 1827, 1801], [1820, 1808, 1819], [23, 1820, 1819], [603, 1810, 1821], [603, 1822, 1810], [1085, 1697, 793], [1628, 1690, 11], [1527, 1704, 1624], [1730, 1072, 1729], [1526, 1444, 1704], [1526, 1680, 1444], [1704, 1444, 1701], [1816, 1821, 1809], [1722, 67, 68], [317, 272, 1823], [1716, 1713, 1721], [16, 1628, 1767], [1527, 1526, 1704], [1824, 1826, 1814], [1814, 1826, 1815], [1818, 21, 20], [1835, 1808, 1820], [603, 570, 1822], [226, 1070, 1778], [1013, 1181, 1179], [1721, 679, 1664], [1717, 1813, 1811], [1828, 1827, 1815], [22, 1820, 23], [22, 1835, 1820], [1830, 603, 1821], [719, 1659, 5], [643, 567, 1657], [1717, 794, 739], [1825, 1826, 1824], [1828, 1815, 1826], [1829, 21, 1818], [1808, 1835, 13], [4, 719, 5], [10, 1662, 1715], [1828, 1832, 1827], [1832, 1818, 1827], [12, 1833, 1816], [1833, 1821, 1816], [1833, 1830, 1821], [14, 1146, 1701], [1186, 1829, 1818], [1280, 603, 1830], [14, 1700, 1146], [1667, 1728, 1130], [1825, 1834, 1826], [1834, 1828, 1826], [1832, 1186, 1818], [1836, 13, 1835], [1624, 1711, 1570], [778, 1624, 1570], [1719, 1725, 1721], [1002, 1825, 1831], [1002, 1834, 1825], [1834, 1832, 1828], [1186, 21, 1829], [1836, 1835, 22], [1837, 1833, 12], [1280, 1830, 1833], [1667, 1275, 1728], [16, 1767, 1084], [589, 1765, 1838], [1765, 1781, 1838], [1781, 1737, 1838], [1737, 982, 1838], [982, 1053, 1838], [1053, 816, 1838], [816, 589, 1838]]; -var bunny = { - positions: positions, - cells: cells -}; +var bunny = {}; -export default bunny; -export { bunny as __moduleExports, cells, positions }; +var positions = bunny.positions = [ + [ + 1.301895, + 0.122622, + 2.550061 + ], + [ + 1.045326, + 0.139058, + 2.835156 + ], + [ + 0.569251, + 0.155925, + 2.805125 + ], + [ + 0.251886, + 0.144145, + 2.82928 + ], + [ + 0.063033, + 0.131726, + 3.01408 + ], + [ + -0.277753, + 0.135892, + 3.10716 + ], + [ + -0.441048, + 0.277064, + 2.594331 + ], + [ + -1.010956, + 0.095285, + 2.668983 + ], + [ + -1.317639, + 0.069897, + 2.325448 + ], + [ + -0.751691, + 0.264681, + 2.381496 + ], + [ + 0.684137, + 0.31134, + 2.364574 + ], + [ + 1.347931, + 0.302882, + 2.201434 + ], + [ + -1.736903, + 0.029894, + 1.724111 + ], + [ + -1.319986, + 0.11998, + 0.912925 + ], + [ + 1.538077, + 0.157372, + 0.481711 + ], + [ + 1.951975, + 0.081742, + 1.1641 + ], + [ + 1.834768, + 0.095832, + 1.602682 + ], + [ + 2.446122, + 0.091817, + 1.37558 + ], + [ + 2.617615, + 0.078644, + 0.742801 + ], + [ + -1.609748, + 0.04973, + -0.238721 + ], + [ + -1.281973, + 0.230984, + -0.180916 + ], + [ + -1.074501, + 0.248204, + 0.034007 + ], + [ + -1.201734, + 0.058499, + 0.402234 + ], + [ + -1.444454, + 0.054783, + 0.149579 + ], + [ + -4.694605, + 5.075882, + 1.043427 + ], + [ + -3.95963, + 7.767394, + 0.758447 + ], + [ + -4.753339, + 5.339817, + 0.665061 + ], + [ + -1.150325, + 9.133327, + -0.368552 + ], + [ + -4.316107, + 2.893611, + 0.44399 + ], + [ + -0.809202, + 9.312575, + -0.466061 + ], + [ + 0.085626, + 5.963693, + 1.685666 + ], + [ + -1.314853, + 9.00142, + -0.1339 + ], + [ + -4.364182, + 3.072556, + 1.436712 + ], + [ + -2.022074, + 7.323396, + 0.678657 + ], + [ + 1.990887, + 6.13023, + 0.479643 + ], + [ + -3.295525, + 7.878917, + 1.409353 + ], + [ + 0.571308, + 6.197569, + 0.670657 + ], + [ + 0.89661, + 6.20018, + 0.337056 + ], + [ + 0.331851, + 6.162372, + 1.186371 + ], + [ + -4.840066, + 5.599874, + 2.296069 + ], + [ + 2.138989, + 6.031291, + 0.228335 + ], + [ + 0.678923, + 6.026173, + 1.894052 + ], + [ + -0.781682, + 5.601573, + 1.836738 + ], + [ + 1.181315, + 6.239007, + 0.393293 + ], + [ + -3.606308, + 7.376476, + 2.661452 + ], + [ + -0.579059, + 4.042511, + -1.540883 + ], + [ + -3.064069, + 8.630253, + -2.597539 + ], + [ + -2.157271, + 6.837012, + 0.300191 + ], + [ + -2.966013, + 7.821581, + -1.13697 + ], + [ + -2.34426, + 8.122965, + 0.409043 + ], + [ + -0.951684, + 5.874251, + 1.415119 + ], + [ + -2.834853, + 7.748319, + 0.182406 + ], + [ + -3.242493, + 7.820096, + 0.373674 + ], + [ + -0.208532, + 5.992846, + 1.252084 + ], + [ + -3.048085, + 8.431527, + -2.129795 + ], + [ + 1.413245, + 5.806324, + 2.243906 + ], + [ + -0.051222, + 6.064901, + 0.696093 + ], + [ + -4.204306, + 2.700062, + 0.713875 + ], + [ + -4.610997, + 6.343405, + 0.344272 + ], + [ + -3.291336, + 9.30531, + -3.340445 + ], + [ + -3.27211, + 7.559239, + -2.324016 + ], + [ + -4.23882, + 6.498344, + 3.18452 + ], + [ + -3.945317, + 6.377804, + 3.38625 + ], + [ + -4.906378, + 5.472265, + 1.315193 + ], + [ + -3.580131, + 7.846717, + 0.709666 + ], + [ + -1.995504, + 6.645459, + 0.688487 + ], + [ + -2.595651, + 7.86054, + 0.793351 + ], + [ + -0.008849, + 0.305871, + 0.184484 + ], + [ + -0.029011, + 0.314116, + -0.257312 + ], + [ + -2.522424, + 7.565392, + 1.804212 + ], + [ + -1.022993, + 8.650826, + -0.855609 + ], + [ + -3.831265, + 6.595426, + 3.266783 + ], + [ + -4.042525, + 6.855724, + 3.060663 + ], + [ + -4.17126, + 7.404742, + 2.391387 + ], + [ + 3.904526, + 3.767693, + 0.092179 + ], + [ + 0.268076, + 6.086802, + 1.469223 + ], + [ + -3.320456, + 8.753222, + -2.08969 + ], + [ + 1.203048, + 6.26925, + 0.612407 + ], + [ + -4.406479, + 2.985974, + 0.853691 + ], + [ + -3.226889, + 6.615215, + -0.404243 + ], + [ + 0.346326, + 1.60211, + 3.509858 + ], + [ + -3.955476, + 7.253323, + 2.722392 + ], + [ + -1.23204, + 0.068935, + 1.68794 + ], + [ + 0.625436, + 6.196455, + 1.333156 + ], + [ + 4.469132, + 2.165298, + 1.70525 + ], + [ + 0.950053, + 6.262899, + 0.922441 + ], + [ + -2.980404, + 5.25474, + -0.663155 + ], + [ + -4.859043, + 6.28741, + 1.537081 + ], + [ + -3.077453, + 4.641475, + -0.892167 + ], + [ + -0.44002, + 8.222503, + -0.771454 + ], + [ + -4.034112, + 7.639786, + 0.389935 + ], + [ + -3.696045, + 6.242042, + 3.394679 + ], + [ + -1.221806, + 7.783617, + 0.196451 + ], + [ + 0.71461, + 6.149895, + 1.656636 + ], + [ + -4.713539, + 6.163154, + 0.495369 + ], + [ + -1.509869, + 0.913044, + -0.832413 + ], + [ + -1.547249, + 2.066753, + -0.852669 + ], + [ + -3.757734, + 5.793742, + 3.455794 + ], + [ + -0.831911, + 0.199296, + 1.718536 + ], + [ + -3.062763, + 7.52718, + -1.550559 + ], + [ + 0.938688, + 6.103354, + 1.820958 + ], + [ + -4.037033, + 2.412311, + 0.988026 + ], + [ + -4.130746, + 2.571806, + 1.101689 + ], + [ + -0.693664, + 9.174283, + -0.952323 + ], + [ + -1.286742, + 1.079679, + -0.751219 + ], + [ + 1.543185, + 1.408925, + 3.483132 + ], + [ + 1.535973, + 2.047979, + 3.655029 + ], + [ + 0.93844, + 5.84101, + 2.195219 + ], + [ + -0.684401, + 5.918492, + 1.20109 + ], + [ + 1.28844, + 2.008676, + 3.710781 + ], + [ + -3.586722, + 7.435506, + -1.454737 + ], + [ + -0.129975, + 4.384192, + 2.930593 + ], + [ + -1.030531, + 0.281374, + 3.214273 + ], + [ + -3.058751, + 8.137238, + -3.227714 + ], + [ + 3.649524, + 4.592226, + 1.340021 + ], + [ + -3.354828, + 7.322425, + -1.412086 + ], + [ + 0.936449, + 6.209237, + 1.512693 + ], + [ + -1.001832, + 3.590411, + -1.545892 + ], + [ + -3.770486, + 4.593242, + 2.477056 + ], + [ + -0.971925, + 0.067797, + 0.921384 + ], + [ + -4.639832, + 6.865407, + 2.311791 + ], + [ + -0.441014, + 8.093595, + -0.595999 + ], + [ + -2.004852, + 6.37142, + 1.635383 + ], + [ + 4.759591, + 1.92818, + 0.328328 + ], + [ + 3.748064, + 1.224074, + 2.140484 + ], + [ + -0.703601, + 5.285476, + 2.251988 + ], + [ + 0.59532, + 6.21893, + 0.981004 + ], + [ + 0.980799, + 6.257026, + 1.24223 + ], + [ + 1.574697, + 6.204981, + 0.381628 + ], + [ + 1.149594, + 6.173608, + 1.660763 + ], + [ + -3.501963, + 5.895989, + 3.456576 + ], + [ + 1.071122, + 5.424198, + 2.588717 + ], + [ + -0.774693, + 8.473335, + -0.276957 + ], + [ + 3.849959, + 4.15542, + 0.396742 + ], + [ + -0.801715, + 4.973149, + -1.068582 + ], + [ + -2.927676, + 0.625112, + 2.326393 + ], + [ + 2.669682, + 4.045542, + 2.971184 + ], + [ + -4.391324, + 4.74086, + 0.343463 + ], + [ + 1.520129, + 6.270031, + 0.775471 + ], + [ + 1.837586, + 6.084731, + 0.109188 + ], + [ + 1.271475, + 5.975024, + 2.032355 + ], + [ + -3.487968, + 4.513249, + 2.605871 + ], + [ + -1.32234, + 1.517264, + -0.691879 + ], + [ + -1.080301, + 1.648226, + -0.805526 + ], + [ + -3.365703, + 6.910166, + -0.454902 + ], + [ + 1.36034, + 0.432238, + 3.075004 + ], + [ + -3.305013, + 5.774685, + 3.39142 + ], + [ + 3.88432, + 0.654141, + 0.12574 + ], + [ + 3.57254, + 0.377934, + 0.302501 + ], + [ + 4.196136, + 0.807999, + 0.212229 + ], + [ + 3.932997, + 0.543123, + 0.380579 + ], + [ + 4.023704, + 3.286125, + 0.537597 + ], + [ + 1.864455, + 4.916544, + 2.691677 + ], + [ + -4.775427, + 6.499498, + 1.440153 + ], + [ + -3.464928, + 3.68234, + 2.766356 + ], + [ + 3.648972, + 1.751262, + 2.157485 + ], + [ + 1.179111, + 3.238846, + 3.774796 + ], + [ + -0.171164, + 0.299126, + -0.592669 + ], + [ + -4.502912, + 3.316656, + 0.875188 + ], + [ + -0.948454, + 9.214025, + -0.679508 + ], + [ + 1.237665, + 6.288593, + 1.046 + ], + [ + 1.523423, + 6.268963, + 1.139544 + ], + [ + 1.436519, + 6.140608, + 1.739316 + ], + [ + 3.723607, + 1.504355, + 2.136762 + ], + [ + 2.009495, + 4.045514, + 3.22053 + ], + [ + -1.921944, + 7.249905, + 0.213973 + ], + [ + 1.254068, + 1.205518, + 3.474709 + ], + [ + -0.317087, + 5.996269, + 0.525872 + ], + [ + -2.996914, + 3.934607, + 2.900178 + ], + [ + -3.316873, + 4.028154, + 2.785696 + ], + [ + -3.400267, + 4.280157, + 2.689268 + ], + [ + -3.134842, + 4.564875, + 2.697192 + ], + [ + 1.480563, + 4.692567, + 2.834068 + ], + [ + 0.873682, + 1.315452, + 3.541585 + ], + [ + 1.599355, + 0.91622, + 3.246769 + ], + [ + -3.292102, + 7.125914, + 2.768515 + ], + [ + 3.74296, + 4.511299, + 0.616539 + ], + [ + 4.698935, + 1.55336, + 0.26921 + ], + [ + -3.274387, + 3.299421, + 2.823946 + ], + [ + -2.88809, + 3.410699, + 2.955248 + ], + [ + 1.171407, + 1.76905, + 3.688472 + ], + [ + 1.430276, + 3.92483, + 3.473666 + ], + [ + 3.916941, + 2.553308, + 0.018941 + ], + [ + 0.701632, + 2.442372, + 3.778639 + ], + [ + 1.562657, + 2.302778, + 3.660957 + ], + [ + 4.476622, + 1.152407, + 0.182131 + ], + [ + -0.61136, + 5.761367, + 1.598838 + ], + [ + -3.102154, + 3.691687, + 2.903738 + ], + [ + 1.816012, + 5.546167, + 2.380308 + ], + [ + 3.853928, + 4.25066, + 0.750017 + ], + [ + 1.234681, + 3.581665, + 3.673723 + ], + [ + 1.862271, + 1.361863, + 3.355209 + ], + [ + 1.346844, + 4.146995, + 3.327877 + ], + [ + 1.70672, + 4.080043, + 3.274307 + ], + [ + 0.897242, + 1.908983, + 3.6969 + ], + [ + -0.587022, + 9.191132, + -0.565301 + ], + [ + -0.217426, + 5.674606, + 2.019968 + ], + [ + 0.278925, + 6.120777, + 0.485403 + ], + [ + 1.463328, + 3.578742, + -2.001464 + ], + [ + -3.072985, + 4.264581, + 2.789502 + ], + [ + 3.62353, + 4.673843, + 0.383452 + ], + [ + -3.053491, + 8.752377, + -2.908434 + ], + [ + -2.628687, + 4.505072, + 2.755601 + ], + [ + 0.891047, + 5.113781, + 2.748272 + ], + [ + -2.923732, + 3.06515, + 2.866368 + ], + [ + 0.848008, + 4.754252, + 2.896972 + ], + [ + -3.319184, + 8.811641, + -2.327412 + ], + [ + 0.12864, + 8.814781, + -1.334456 + ], + [ + 1.549501, + 4.549331, + -1.28243 + ], + [ + 1.647161, + 3.738973, + 3.507719 + ], + [ + 1.250888, + 0.945599, + 3.348739 + ], + [ + 3.809662, + 4.038822, + 0.053142 + ], + [ + 1.483166, + 0.673327, + 3.09156 + ], + [ + 0.829726, + 3.635921, + 3.713103 + ], + [ + 1.352914, + 5.226651, + 2.668113 + ], + [ + 2.237352, + 4.37414, + 3.016386 + ], + [ + 4.507929, + 0.889447, + 0.744249 + ], + [ + 4.57304, + 1.010981, + 0.496588 + ], + [ + 3.931422, + 1.720989, + 2.088175 + ], + [ + -0.463177, + 5.989835, + 0.834346 + ], + [ + -2.811236, + 3.745023, + 2.969587 + ], + [ + -2.805135, + 4.219721, + 2.841108 + ], + [ + -2.836842, + 4.802543, + 2.60826 + ], + [ + 1.776716, + 2.084611, + 3.568638 + ], + [ + 4.046881, + 1.463478, + 2.106273 + ], + [ + 0.316265, + 5.944313, + 1.892785 + ], + [ + -2.86347, + 2.776049, + 2.77242 + ], + [ + -2.673644, + 3.116508, + 2.907104 + ], + [ + -2.621149, + 4.018502, + 2.903409 + ], + [ + -2.573447, + 5.198013, + 2.477481 + ], + [ + 1.104039, + 2.278985, + 3.722469 + ], + [ + -4.602743, + 4.306413, + 0.902296 + ], + [ + -2.684878, + 1.510731, + 0.535039 + ], + [ + 0.092036, + 8.473269, + -0.99413 + ], + [ + -1.280472, + 5.602393, + 1.928105 + ], + [ + -1.0279, + 4.121582, + -1.403103 + ], + [ + -2.461081, + 3.304477, + 2.957317 + ], + [ + -2.375929, + 3.659383, + 2.953233 + ], + [ + 1.417579, + 2.715389, + 3.718767 + ], + [ + 0.819727, + 2.948823, + 3.810639 + ], + [ + 1.329962, + 0.761779, + 3.203724 + ], + [ + 1.73952, + 5.295229, + 2.537725 + ], + [ + 0.952523, + 3.945016, + 3.548229 + ], + [ + -2.569498, + 0.633669, + 2.84818 + ], + [ + -2.276676, + 0.757013, + 2.780717 + ], + [ + -2.013147, + 7.354429, + -0.003202 + ], + [ + 0.93143, + 1.565913, + 3.600325 + ], + [ + 1.249014, + 1.550556, + 3.585842 + ], + [ + 2.287252, + 4.072353, + 3.124544 + ], + [ + -4.7349, + 7.006244, + 1.690653 + ], + [ + -3.500602, + 8.80386, + -2.009196 + ], + [ + -0.582629, + 5.549138, + 2.000923 + ], + [ + -1.865297, + 6.356066, + 1.313593 + ], + [ + -3.212154, + 2.376143, + -0.565593 + ], + [ + 2.092889, + 3.493536, + -1.727931 + ], + [ + -2.528501, + 2.784531, + 2.833758 + ], + [ + -2.565697, + 4.893154, + 2.559605 + ], + [ + -2.153366, + 5.04584, + 2.465215 + ], + [ + 1.631311, + 2.568241, + 3.681445 + ], + [ + 2.150193, + 4.699227, + 2.807505 + ], + [ + 0.507599, + 5.01813, + 2.775892 + ], + [ + 4.129862, + 1.863698, + 2.015101 + ], + [ + 3.578279, + 4.50766, + -0.009598 + ], + [ + 3.491023, + 4.806749, + 1.549265 + ], + [ + 0.619485, + 1.625336, + 3.605125 + ], + [ + 1.107499, + 2.932557, + 3.790061 + ], + [ + -2.082292, + 6.99321, + 0.742601 + ], + [ + 4.839909, + 1.379279, + 0.945274 + ], + [ + 3.591328, + 4.322645, + -0.259497 + ], + [ + 1.055245, + 0.710686, + 3.16553 + ], + [ + -3.026494, + 7.842227, + 1.624553 + ], + [ + 0.146569, + 6.119214, + 0.981673 + ], + [ + -2.043687, + 2.614509, + 2.785526 + ], + [ + -2.302242, + 3.047775, + 2.936355 + ], + [ + -2.245686, + 4.100424, + 2.87794 + ], + [ + 2.116148, + 5.063507, + 2.572204 + ], + [ + -1.448406, + 7.64559, + 0.251692 + ], + [ + 2.550717, + 4.9268, + 2.517526 + ], + [ + -2.955456, + 7.80293, + -1.782407 + ], + [ + 1.882995, + 4.637167, + 2.895436 + ], + [ + -2.014924, + 3.398262, + 2.954896 + ], + [ + -2.273654, + 4.771227, + 2.611418 + ], + [ + -2.162723, + 7.876761, + 0.702473 + ], + [ + -0.198659, + 5.823062, + 1.739272 + ], + [ + -1.280908, + 2.133189, + -0.921241 + ], + [ + 2.039932, + 4.251568, + 3.136579 + ], + [ + 1.477815, + 4.354333, + 3.108325 + ], + [ + 0.560504, + 3.744128, + 3.6913 + ], + [ + -2.234018, + 1.054373, + 2.352782 + ], + [ + -3.189156, + 7.686661, + -2.514955 + ], + [ + -3.744736, + 7.69963, + 2.116973 + ], + [ + -2.283366, + 2.878365, + 2.87882 + ], + [ + -2.153786, + 4.457481, + 2.743529 + ], + [ + 4.933978, + 1.677287, + 0.713773 + ], + [ + 3.502146, + 0.535336, + 1.752511 + ], + [ + 1.825169, + 4.419253, + 3.081198 + ], + [ + 3.072331, + 0.280979, + 0.106534 + ], + [ + -0.508381, + 1.220392, + 2.878049 + ], + [ + -3.138824, + 8.445394, + -1.659711 + ], + [ + -2.056425, + 2.954815, + 2.897241 + ], + [ + -2.035343, + 5.398477, + 2.215842 + ], + [ + -3.239915, + 7.126798, + -0.712547 + ], + [ + -1.867923, + 7.989805, + 0.526518 + ], + [ + 1.23405, + 6.248973, + 1.387189 + ], + [ + -0.216492, + 8.320933, + -0.862495 + ], + [ + -2.079659, + 3.755709, + 2.928563 + ], + [ + -1.78595, + 4.300374, + 2.805295 + ], + [ + -1.856589, + 5.10678, + 2.386572 + ], + [ + -1.714362, + 5.544778, + 2.004623 + ], + [ + 1.722403, + 4.200291, + -1.408161 + ], + [ + 0.195386, + 0.086928, + -1.318006 + ], + [ + 1.393693, + 3.013404, + 3.710686 + ], + [ + -0.415307, + 8.508471, + -0.996883 + ], + [ + -1.853777, + 0.755635, + 2.757275 + ], + [ + -1.724057, + 3.64533, + 2.884251 + ], + [ + -1.884511, + 4.927802, + 2.530885 + ], + [ + -1.017174, + 7.783908, + -0.227078 + ], + [ + -1.7798, + 2.342513, + 2.741749 + ], + [ + -1.841329, + 3.943996, + 2.88436 + ], + [ + 1.430388, + 5.468067, + 2.503467 + ], + [ + -2.030296, + 0.940028, + 2.611088 + ], + [ + -1.677028, + 1.215666, + 2.607771 + ], + [ + -1.74092, + 2.832564, + 2.827295 + ], + [ + 4.144673, + 0.631374, + 0.503358 + ], + [ + 4.238811, + 0.653992, + 0.762436 + ], + [ + -1.847016, + 2.082815, + 2.642674 + ], + [ + 4.045764, + 3.194073, + 0.852117 + ], + [ + -1.563989, + 8.112739, + 0.303102 + ], + [ + -1.781627, + 1.794836, + 2.602338 + ], + [ + -1.493749, + 2.533799, + 2.797251 + ], + [ + -1.934496, + 4.690689, + 2.658999 + ], + [ + -1.499174, + 5.777946, + 1.747498 + ], + [ + -2.387409, + 0.851291, + 1.500524 + ], + [ + -1.872211, + 8.269987, + 0.392533 + ], + [ + -4.647726, + 6.765771, + 0.833653 + ], + [ + -3.157482, + 0.341958, + -0.20671 + ], + [ + -1.725766, + 3.24703, + 2.883579 + ], + [ + -1.458199, + 4.079031, + 2.836325 + ], + [ + -1.621548, + 4.515869, + 2.719266 + ], + [ + -1.607292, + 4.918914, + 2.505881 + ], + [ + -1.494661, + 5.556239, + 1.991599 + ], + [ + -1.727269, + 7.423769, + 0.012337 + ], + [ + -1.382497, + 1.161322, + 2.640222 + ], + [ + -1.52129, + 4.681714, + 2.615467 + ], + [ + -4.247127, + 2.792812, + 1.250843 + ], + [ + -1.576338, + 0.742947, + 2.769799 + ], + [ + -1.499257, + 2.172763, + 2.743142 + ], + [ + -1.480392, + 3.103261, + 2.862262 + ], + [ + 1.049137, + 2.625836, + 3.775384 + ], + [ + -1.368063, + 1.791587, + 2.695516 + ], + [ + -1.307839, + 2.344534, + 2.767575 + ], + [ + -1.336758, + 5.092221, + 2.355225 + ], + [ + -1.5617, + 5.301749, + 2.21625 + ], + [ + -1.483362, + 8.537704, + 0.196752 + ], + [ + -1.517348, + 8.773614, + 0.074053 + ], + [ + -1.474302, + 1.492731, + 2.641433 + ], + [ + 2.48718, + 0.644247, + -0.920226 + ], + [ + 0.818091, + 0.422682, + 3.171218 + ], + [ + -3.623398, + 6.930094, + 3.033045 + ], + [ + 1.676333, + 3.531039, + 3.591591 + ], + [ + 1.199939, + 5.683873, + 2.365623 + ], + [ + -1.223851, + 8.841201, + 0.025414 + ], + [ + -1.286307, + 3.847643, + 2.918044 + ], + [ + -1.25857, + 4.810831, + 2.543605 + ], + [ + 2.603662, + 5.572146, + 1.991854 + ], + [ + 0.138984, + 5.779724, + 2.077834 + ], + [ + -1.267039, + 3.175169, + 2.890889 + ], + [ + -1.293616, + 3.454612, + 2.911774 + ], + [ + -2.60112, + 1.277184, + 0.07724 + ], + [ + 2.552779, + 3.649877, + 3.163643 + ], + [ + -1.038983, + 1.248011, + 2.605933 + ], + [ + -1.288709, + 4.390967, + 2.761214 + ], + [ + -1.034218, + 5.485963, + 2.011467 + ], + [ + -1.185576, + 1.464842, + 2.624335 + ], + [ + -1.045682, + 2.54896, + 2.761102 + ], + [ + 4.259176, + 1.660627, + 2.018096 + ], + [ + -0.961707, + 1.717183, + 2.598342 + ], + [ + -1.044603, + 3.147464, + 2.855335 + ], + [ + -0.891998, + 4.685429, + 2.669696 + ], + [ + -1.027561, + 5.081672, + 2.377939 + ], + [ + 4.386506, + 0.832434, + 0.510074 + ], + [ + -1.014225, + 9.064991, + -0.175352 + ], + [ + -1.218752, + 2.895443, + 2.823785 + ], + [ + -0.972075, + 4.432669, + 2.788005 + ], + [ + -2.714986, + 0.52425, + 1.509798 + ], + [ + -0.699248, + 1.517219, + 2.645738 + ], + [ + -1.161581, + 2.078852, + 2.722795 + ], + [ + -0.845249, + 3.286247, + 2.996471 + ], + [ + 1.068329, + 4.443444, + 2.993863 + ], + [ + 3.98132, + 3.715557, + 1.027775 + ], + [ + 1.658097, + 3.982428, + -1.651688 + ], + [ + -4.053701, + 2.449888, + 0.734746 + ], + [ + -0.910935, + 2.214149, + 2.702393 + ], + [ + 0.087824, + 3.96165, + 3.439344 + ], + [ + -0.779714, + 3.724134, + 2.993429 + ], + [ + -1.051093, + 3.810797, + 2.941957 + ], + [ + -0.644941, + 4.3859, + 2.870863 + ], + [ + -2.98403, + 8.666895, + -3.691888 + ], + [ + -0.754304, + 2.508325, + 2.812999 + ], + [ + -4.635524, + 3.662891, + 0.913005 + ], + [ + -0.983299, + 4.125978, + 2.915378 + ], + [ + 4.916497, + 1.905209, + 0.621315 + ], + [ + 4.874983, + 1.728429, + 0.468521 + ], + [ + 2.33127, + 5.181957, + 2.441697 + ], + [ + -0.653711, + 2.253387, + 2.7949 + ], + [ + -3.623744, + 8.978795, + -2.46192 + ], + [ + -4.555927, + 6.160279, + 0.215755 + ], + [ + -4.940628, + 5.806712, + 1.18383 + ], + [ + 3.308506, + 2.40326, + -0.910776 + ], + [ + 0.58835, + 5.251928, + -0.992886 + ], + [ + 2.152215, + 5.449733, + 2.331679 + ], + [ + -0.712755, + 0.766765, + 3.280375 + ], + [ + -0.741771, + 1.9716, + 2.657235 + ], + [ + -4.828957, + 5.566946, + 2.635623 + ], + [ + -3.474788, + 8.696771, + -1.776121 + ], + [ + 1.770417, + 6.205561, + 1.331627 + ], + [ + -0.620626, + 4.064721, + 2.968972 + ], + [ + -1.499187, + 2.307735, + -0.978901 + ], + [ + 4.098793, + 2.330245, + 1.667951 + ], + [ + 1.940444, + 6.167057, + 0.935904 + ], + [ + -2.314436, + 1.104995, + 1.681277 + ], + [ + -2.733629, + 7.742793, + 1.7705 + ], + [ + -0.452248, + 4.719868, + 2.740834 + ], + [ + -0.649143, + 4.951713, + 2.541296 + ], + [ + -0.479417, + 9.43959, + -0.676324 + ], + [ + -2.251853, + 6.559275, + 0.046819 + ], + [ + 0.033531, + 8.316907, + -0.789939 + ], + [ + -0.513125, + 0.995673, + 3.125462 + ], + [ + -2.637602, + 1.039747, + 0.602434 + ], + [ + 1.527513, + 6.230089, + 1.430903 + ], + [ + 4.036124, + 2.609846, + 1.506498 + ], + [ + -3.559828, + 7.877892, + 1.228076 + ], + [ + -4.570736, + 4.960193, + 0.838201 + ], + [ + -0.432121, + 5.157731, + 2.467518 + ], + [ + -1.206735, + 4.562511, + -1.237054 + ], + [ + -0.823768, + 3.788746, + -1.567481 + ], + [ + -3.095544, + 7.353613, + -1.024577 + ], + [ + -4.056088, + 7.631119, + 2.062001 + ], + [ + -0.289385, + 5.382261, + 2.329421 + ], + [ + 1.69752, + 6.136483, + 1.667037 + ], + [ + -0.168758, + 5.061138, + 2.617453 + ], + [ + 2.853576, + 1.605528, + -1.229958 + ], + [ + -4.514319, + 6.586675, + 0.352756 + ], + [ + -2.558081, + 7.741151, + 1.29295 + ], + [ + 1.61116, + 5.92358, + 2.071534 + ], + [ + 3.936921, + 3.354857, + 0.091755 + ], + [ + -0.1633, + 1.119272, + 3.147975 + ], + [ + 0.067551, + 1.593475, + 3.38212 + ], + [ + -1.303239, + 2.328184, + -1.011672 + ], + [ + -0.438093, + 0.73423, + 3.398384 + ], + [ + -4.62767, + 3.898187, + 0.849573 + ], + [ + 0.286853, + 4.165281, + 3.284834 + ], + [ + -2.968052, + 8.492812, + -3.493693 + ], + [ + -0.111896, + 3.696111, + 3.53791 + ], + [ + -3.808245, + 8.451731, + -1.574742 + ], + [ + 0.053416, + 5.558764, + 2.31107 + ], + [ + 3.956269, + 3.012071, + 0.11121 + ], + [ + -0.710956, + 8.106561, + -0.665154 + ], + [ + 0.234725, + 2.717326, + 3.722379 + ], + [ + -0.031594, + 2.76411, + 3.657347 + ], + [ + -0.017371, + 4.700633, + 2.81911 + ], + [ + 0.215064, + 5.034859, + 2.721426 + ], + [ + -0.111151, + 8.480333, + -0.649399 + ], + [ + 3.97942, + 3.575478, + 0.362219 + ], + [ + 0.392962, + 4.735392, + 2.874321 + ], + [ + 4.17015, + 2.085087, + 1.865999 + ], + [ + 0.169054, + 1.244786, + 3.337709 + ], + [ + 0.020049, + 3.165818, + 3.721736 + ], + [ + 0.248212, + 3.595518, + 3.698376 + ], + [ + 0.130706, + 5.295541, + 2.540034 + ], + [ + -4.541357, + 4.798332, + 1.026866 + ], + [ + -1.277485, + 1.289518, + -0.667272 + ], + [ + 3.892133, + 3.54263, + -0.078056 + ], + [ + 4.057379, + 3.03669, + 0.997913 + ], + [ + 0.287719, + 0.884758, + 3.251787 + ], + [ + 0.535771, + 1.144701, + 3.400096 + ], + [ + 0.585303, + 1.399362, + 3.505353 + ], + [ + 0.191551, + 2.076246, + 3.549355 + ], + [ + 0.328656, + 2.394576, + 3.649623 + ], + [ + 0.413124, + 3.240728, + 3.771515 + ], + [ + 0.630361, + 4.501549, + 2.963623 + ], + [ + 0.529441, + 5.854392, + 2.120225 + ], + [ + 3.805796, + 3.769958, + -0.162079 + ], + [ + 3.447279, + 4.344846, + -0.467276 + ], + [ + 0.377618, + 5.551116, + 2.426017 + ], + [ + 0.409355, + 1.821269, + 3.606333 + ], + [ + 0.719959, + 2.194726, + 3.703851 + ], + [ + 0.495922, + 3.501519, + 3.755661 + ], + [ + 0.603408, + 5.354097, + 2.603088 + ], + [ + -4.605056, + 7.531978, + 1.19579 + ], + [ + 0.907972, + 0.973128, + 3.356513 + ], + [ + 0.750134, + 3.356137, + 3.765847 + ], + [ + 0.4496, + 3.993244, + 3.504544 + ], + [ + -3.030738, + 7.48947, + -1.259169 + ], + [ + 0.707505, + 5.602005, + 2.43476 + ], + [ + 0.668944, + 0.654891, + 3.213797 + ], + [ + 0.593244, + 2.700978, + 3.791427 + ], + [ + 1.467759, + 3.30327, + 3.71035 + ], + [ + 3.316249, + 2.436388, + 2.581175 + ], + [ + 3.26138, + 1.724425, + 2.539028 + ], + [ + -1.231292, + 7.968263, + 0.281414 + ], + [ + -0.108773, + 8.712307, + -0.790607 + ], + [ + 4.445684, + 1.819442, + 1.896988 + ], + [ + 1.998959, + 2.281499, + 3.49447 + ], + [ + 2.162269, + 2.113817, + 3.365449 + ], + [ + 4.363397, + 1.406731, + 1.922714 + ], + [ + 4.808, + 2.225842, + 0.611127 + ], + [ + 2.735919, + 0.771812, + -0.701142 + ], + [ + 1.897735, + 2.878428, + 3.583482 + ], + [ + -3.31616, + 5.331985, + 3.212394 + ], + [ + -3.3314, + 6.018137, + 3.313018 + ], + [ + -3.503183, + 6.480103, + 3.222216 + ], + [ + -1.904453, + 5.750392, + 1.913324 + ], + [ + -1.339735, + 3.559592, + -1.421817 + ], + [ + -1.044242, + 8.22539, + 0.037414 + ], + [ + 1.643492, + 3.110676, + 3.647424 + ], + [ + 3.992832, + 3.686244, + 0.710946 + ], + [ + 1.774207, + 1.71842, + 3.475768 + ], + [ + -3.438842, + 5.5713, + 3.427818 + ], + [ + 4.602447, + 1.2583, + 1.619528 + ], + [ + -0.925516, + 7.930042, + 0.072336 + ], + [ + -1.252093, + 3.846565, + -1.420761 + ], + [ + -3.426857, + 5.072419, + 2.97806 + ], + [ + -3.160408, + 6.152629, + 3.061869 + ], + [ + 3.739931, + 3.367082, + 2.041273 + ], + [ + 1.027419, + 4.235891, + 3.251253 + ], + [ + 4.777703, + 1.887452, + 1.560409 + ], + [ + -3.318528, + 6.733796, + 2.982968 + ], + [ + 2.929265, + 4.962579, + 2.271079 + ], + [ + 3.449761, + 2.838629, + 2.474576 + ], + [ + -3.280159, + 5.029875, + 2.787514 + ], + [ + 4.068939, + 2.993629, + 0.741567 + ], + [ + 0.303312, + 8.70927, + -1.121972 + ], + [ + 0.229852, + 8.981322, + -1.186075 + ], + [ + -0.011045, + 9.148156, + -1.047057 + ], + [ + -2.942683, + 5.579613, + 2.929297 + ], + [ + -3.145409, + 5.698727, + 3.205778 + ], + [ + -3.019089, + 6.30887, + 2.794323 + ], + [ + -3.217135, + 6.468191, + 2.970032 + ], + [ + -3.048298, + 6.993641, + 2.623378 + ], + [ + -3.07429, + 6.660982, + 2.702434 + ], + [ + 3.612011, + 2.5574, + 2.25349 + ], + [ + 2.54516, + 4.553967, + 2.75884 + ], + [ + -1.683759, + 7.400787, + 0.250868 + ], + [ + -1.756066, + 7.463557, + 0.448031 + ], + [ + -3.023761, + 5.149697, + 2.673539 + ], + [ + 3.112376, + 2.677218, + 2.782378 + ], + [ + 2.835327, + 4.581196, + 2.567146 + ], + [ + -2.973799, + 7.225458, + 2.506988 + ], + [ + -0.591645, + 8.740662, + -0.505845 + ], + [ + 3.782861, + 2.04337, + 2.03066 + ], + [ + 3.331604, + 3.36343, + 2.605047 + ], + [ + 2.966866, + 1.205497, + 2.537432 + ], + [ + 0.002669, + 9.654748, + -1.355559 + ], + [ + 2.632801, + 0.58497, + 2.540311 + ], + [ + -2.819398, + 5.087372, + 2.521098 + ], + [ + 2.616193, + 5.332961, + 2.194288 + ], + [ + -3.193973, + 4.925634, + 2.607924 + ], + [ + -3.12618, + 5.27524, + 2.944544 + ], + [ + -0.426003, + 8.516354, + -0.501528 + ], + [ + 2.802717, + 1.387643, + 2.751649 + ], + [ + -3.120597, + 7.889111, + -2.75431 + ], + [ + 2.636648, + 1.71702, + 2.991302 + ], + [ + -2.853151, + 6.711792, + 2.430276 + ], + [ + -2.843836, + 6.962865, + 2.400842 + ], + [ + 1.9696, + 3.199023, + 3.504514 + ], + [ + -2.461751, + 0.386352, + 3.008994 + ], + [ + 1.64127, + 0.495758, + 3.02958 + ], + [ + -4.330472, + 5.409831, + 0.025287 + ], + [ + -2.912387, + 5.980416, + 2.844261 + ], + [ + -2.490069, + 0.211078, + 2.985391 + ], + [ + 3.581816, + 4.809118, + 0.733728 + ], + [ + 2.693199, + 2.647213, + 3.126709 + ], + [ + -0.182964, + 8.184108, + -0.638459 + ], + [ + -2.226855, + 0.444711, + 2.946552 + ], + [ + -0.720175, + 8.115055, + 0.017689 + ], + [ + 2.645302, + 4.316212, + 2.850139 + ], + [ + -0.232764, + 9.329503, + -0.918639 + ], + [ + 4.852365, + 1.471901, + 0.65275 + ], + [ + 2.76229, + 2.014994, + 2.957755 + ], + [ + -2.808374, + 5.354301, + 2.644695 + ], + [ + -2.790967, + 6.406963, + 2.547985 + ], + [ + -1.342684, + 0.418488, + -1.669183 + ], + [ + 2.690675, + 5.593587, + -0.041236 + ], + [ + 4.660146, + 1.6318, + 1.713314 + ], + [ + 2.775667, + 3.007229, + 3.111332 + ], + [ + -0.396696, + 8.963432, + -0.706202 + ], + [ + 2.446707, + 2.740617, + 3.321433 + ], + [ + -4.803209, + 5.884634, + 2.603672 + ], + [ + -2.652003, + 1.6541, + 1.5078 + ], + [ + 3.932327, + 3.972874, + 0.831924 + ], + [ + 2.135906, + 0.955587, + 2.986608 + ], + [ + 2.486131, + 2.053802, + 3.124115 + ], + [ + -0.386706, + 8.115753, + -0.37565 + ], + [ + -2.720727, + 7.325044, + 2.224878 + ], + [ + -1.396946, + 7.638016, + -0.16486 + ], + [ + -0.62083, + 7.989771, + -0.144413 + ], + [ + -2.653272, + 5.729684, + 2.667679 + ], + [ + 3.038188, + 4.65835, + 2.364142 + ], + [ + 2.381721, + 0.739472, + 2.788992 + ], + [ + -2.345829, + 5.474929, + 2.380633 + ], + [ + -2.518983, + 6.080562, + 2.479383 + ], + [ + -2.615793, + 6.839622, + 2.186116 + ], + [ + -2.286566, + 0.143752, + 2.766848 + ], + [ + -4.771219, + 6.508766, + 1.070797 + ], + [ + 3.717308, + 2.905019, + 2.097994 + ], + [ + 2.50521, + 3.016743, + 3.295898 + ], + [ + 2.208448, + 1.56029, + 3.216806 + ], + [ + 3.346783, + 1.01254, + 2.119951 + ], + [ + 2.653503, + 3.26122, + 3.175738 + ], + [ + -2.359636, + 5.827519, + 2.402297 + ], + [ + -1.952693, + 0.558102, + 2.853307 + ], + [ + -0.321562, + 9.414885, + -1.187501 + ], + [ + 3.138923, + 1.405072, + 2.520765 + ], + [ + 1.493728, + 1.780051, + 3.621969 + ], + [ + 3.01817, + 0.907291, + 2.336909 + ], + [ + 3.183548, + 1.185297, + 2.352175 + ], + [ + 1.608619, + 5.006753, + 2.695131 + ], + [ + -4.723919, + 6.836107, + 1.095288 + ], + [ + -1.017586, + 8.865429, + -0.149328 + ], + [ + 4.730762, + 1.214014, + 0.64008 + ], + [ + -2.135182, + 6.647907, + 1.495471 + ], + [ + -2.420382, + 6.546114, + 2.108209 + ], + [ + -2.458053, + 7.186346, + 1.896623 + ], + [ + 3.437124, + 0.275798, + 1.138203 + ], + [ + 0.095925, + 8.725832, + -0.926481 + ], + [ + 2.417376, + 2.429869, + 3.287659 + ], + [ + 2.279951, + 1.200317, + 3.049994 + ], + [ + 2.674753, + 2.326926, + 3.044059 + ], + [ + -2.328123, + 6.849164, + 1.75751 + ], + [ + -3.418616, + 7.853407, + 0.126248 + ], + [ + -3.151587, + 7.77543, + -0.110889 + ], + [ + 2.349144, + 5.653242, + 2.05869 + ], + [ + -2.273236, + 6.085631, + 2.242888 + ], + [ + -4.560601, + 4.525342, + 1.261241 + ], + [ + 2.866334, + 3.796067, + 2.934717 + ], + [ + -2.17493, + 6.505518, + 1.791367 + ], + [ + 3.12059, + 3.283157, + 2.818869 + ], + [ + 3.037703, + 3.562356, + 2.866653 + ], + [ + 0.066233, + 9.488418, + -1.248237 + ], + [ + 2.749941, + 0.975018, + 2.573371 + ], + [ + -2.155749, + 5.801033, + 2.204009 + ], + [ + -2.162778, + 6.261889, + 2.028596 + ], + [ + 1.936874, + 0.459142, + 2.956718 + ], + [ + 3.176249, + 4.335541, + 2.440447 + ], + [ + 4.356599, + 1.029423, + 1.700589 + ], + [ + 3.873502, + 3.082678, + 1.80431 + ], + [ + 2.895489, + 4.243034, + 2.735259 + ], + [ + -0.095774, + 9.468195, + -1.07451 + ], + [ + -1.124982, + 7.886808, + -0.480851 + ], + [ + 3.032304, + 3.065454, + 2.897927 + ], + [ + 3.692687, + 4.5961, + 0.957858 + ], + [ + -3.013045, + 3.807235, + -1.098381 + ], + [ + -0.790012, + 8.92912, + -0.367572 + ], + [ + 1.905793, + 0.73179, + 2.996728 + ], + [ + 3.530396, + 3.426233, + 2.356583 + ], + [ + 2.12299, + 0.624933, + 2.929167 + ], + [ + -2.069196, + 6.039284, + 2.01251 + ], + [ + -3.565623, + 7.182525, + 2.850039 + ], + [ + 2.959264, + 2.376337, + 2.829242 + ], + [ + 2.949071, + 1.822483, + 2.793933 + ], + [ + 4.036142, + 0.763803, + 1.703744 + ], + [ + -1.993527, + 6.180318, + 1.804936 + ], + [ + -0.030987, + 0.766389, + 3.344766 + ], + [ + -0.549683, + 8.225193, + -0.189341 + ], + [ + -0.765469, + 8.272246, + -0.127174 + ], + [ + -2.947047, + 7.541648, + -0.414113 + ], + [ + -3.050327, + 9.10114, + -3.435619 + ], + [ + 3.488566, + 2.231807, + 2.399836 + ], + [ + 3.352283, + 4.727851, + 1.946438 + ], + [ + 4.741011, + 2.162773, + 1.499574 + ], + [ + -1.815093, + 6.072079, + 1.580722 + ], + [ + -3.720969, + 8.267927, + -0.984713 + ], + [ + 1.932826, + 3.714052, + 3.427488 + ], + [ + 3.323617, + 4.438961, + 2.20732 + ], + [ + 0.254111, + 9.26364, + -1.373244 + ], + [ + -1.493384, + 7.868585, + -0.450051 + ], + [ + -0.841901, + 0.776135, + -1.619467 + ], + [ + 0.243537, + 6.027668, + 0.091687 + ], + [ + 0.303057, + 0.313022, + -0.531105 + ], + [ + -0.435273, + 0.474098, + 3.481552 + ], + [ + 2.121507, + 2.622389, + 3.486293 + ], + [ + 1.96194, + 1.101753, + 3.159584 + ], + [ + 3.937991, + 3.407551, + 1.551392 + ], + [ + 0.070906, + 0.295753, + 1.377185 + ], + [ + -1.93588, + 7.631764, + 0.651674 + ], + [ + -2.523531, + 0.744818, + -0.30985 + ], + [ + 2.891496, + 3.319875, + 2.983079 + ], + [ + 4.781765, + 1.547061, + 1.523129 + ], + [ + -2.256064, + 7.571251, + 0.973716 + ], + [ + 3.244861, + 3.058249, + 2.724392 + ], + [ + -0.145855, + 0.437775, + 3.433662 + ], + [ + 1.586296, + 5.658538, + 2.358487 + ], + [ + 3.658336, + 3.774921, + 2.071837 + ], + [ + 2.840463, + 4.817098, + 2.46376 + ], + [ + -1.219464, + 8.122542, + -0.672808 + ], + [ + -2.520906, + 2.664486, + -1.034346 + ], + [ + -1.315417, + 8.471365, + -0.709557 + ], + [ + 3.429165, + 3.74686, + 2.446169 + ], + [ + 3.074579, + 3.840758, + 2.767409 + ], + [ + 3.569443, + 3.166337, + 2.333647 + ], + [ + 2.294337, + 3.280051, + 3.359346 + ], + [ + 2.21816, + 3.66578, + 3.269222 + ], + [ + 2.158662, + 4.151444, + -1.357919 + ], + [ + 1.13862, + 4.380986, + -1.404565 + ], + [ + 3.388382, + 2.749931, + -0.840949 + ], + [ + 3.059892, + 5.084848, + 2.026066 + ], + [ + 3.204739, + 2.075145, + 2.640706 + ], + [ + 3.387065, + 1.42617, + 2.305275 + ], + [ + 3.910398, + 2.670742, + 1.750179 + ], + [ + 3.471512, + 1.945821, + 2.395881 + ], + [ + 4.08082, + 1.070654, + 1.960171 + ], + [ + -1.057861, + 0.133036, + 2.146707 + ], + [ + -0.151749, + 5.53551, + -0.624323 + ], + [ + 3.233099, + 4.003778, + 2.571172 + ], + [ + 2.611726, + 5.319199, + -0.499388 + ], + [ + 2.682909, + 1.094499, + -1.206247 + ], + [ + -1.22823, + 7.656887, + 0.041409 + ], + [ + -2.293247, + 7.259189, + 0.013844 + ], + [ + 0.081315, + 0.202174, + 3.286381 + ], + [ + -1.002038, + 5.794454, + -0.187194 + ], + [ + 3.448856, + 4.08091, + 2.258325 + ], + [ + 0.287883, + 9.006888, + -1.550641 + ], + [ + -3.851019, + 4.059839, + -0.646922 + ], + [ + 3.610966, + 4.205438, + 1.913129 + ], + [ + 2.239042, + 2.950872, + 3.449959 + ], + [ + 0.216305, + 0.442843, + 3.328052 + ], + [ + 1.87141, + 2.470745, + 3.574559 + ], + [ + 3.811378, + 2.768718, + -0.228364 + ], + [ + 2.511081, + 1.362724, + 2.969349 + ], + [ + -1.59813, + 7.866506, + 0.440184 + ], + [ + -3.307975, + 2.851072, + -0.894978 + ], + [ + -0.107011, + 8.90573, + -0.884399 + ], + [ + -3.855315, + 2.842597, + -0.434541 + ], + [ + 2.517853, + 1.090768, + 2.799687 + ], + [ + 3.791709, + 2.36685, + 2.002703 + ], + [ + 4.06294, + 2.773922, + 0.452723 + ], + [ + -2.973289, + 7.61703, + -0.623653 + ], + [ + -2.95509, + 8.924462, + -3.446319 + ], + [ + 2.861402, + 0.562592, + 2.184397 + ], + [ + -1.109725, + 8.594206, + -0.076812 + ], + [ + -0.725722, + 7.924485, + -0.381133 + ], + [ + -1.485587, + 1.329994, + -0.654405 + ], + [ + -4.342113, + 3.233735, + 1.752922 + ], + [ + -2.968049, + 7.955519, + -2.09405 + ], + [ + -3.130948, + 0.446196, + 0.85287 + ], + [ + -4.958475, + 5.757329, + 1.447055 + ], + [ + -3.086547, + 7.615193, + -1.953168 + ], + [ + -3.751923, + 5.412821, + 3.373373 + ], + [ + -4.599645, + 7.480953, + 1.677134 + ], + [ + 1.133992, + 0.274871, + 0.032249 + ], + [ + -2.956512, + 8.126905, + -1.785461 + ], + [ + -0.960645, + 4.73065, + -1.191786 + ], + [ + -2.871064, + 0.875559, + 0.424881 + ], + [ + -4.932114, + 5.99614, + 1.483845 + ], + [ + -2.981761, + 8.124612, + -1.387276 + ], + [ + 0.362298, + 8.978545, + -1.368024 + ], + [ + -4.408375, + 3.046271, + 0.602373 + ], + [ + 2.865841, + 2.322263, + -1.344625 + ], + [ + -4.7848, + 5.620895, + 0.594432 + ], + [ + -2.88322, + 0.338931, + 1.67231 + ], + [ + -4.688101, + 6.772931, + 1.872318 + ], + [ + -4.903948, + 6.164698, + 1.27135 + ], + [ + 2.85663, + 1.005647, + -0.906843 + ], + [ + 2.691286, + 0.209811, + 0.050512 + ], + [ + -4.693636, + 6.477556, + 0.665796 + ], + [ + -4.472331, + 6.861067, + 0.477318 + ], + [ + 0.883065, + 0.204907, + 3.073933 + ], + [ + -0.995867, + 8.048729, + -0.653897 + ], + [ + -0.794663, + 5.670397, + -0.390119 + ], + [ + 3.313153, + 1.638006, + -0.722289 + ], + [ + -4.856459, + 5.394758, + 1.032591 + ], + [ + -3.005448, + 7.783023, + -0.819641 + ], + [ + 3.11891, + 2.036974, + -1.08689 + ], + [ + -2.364319, + 2.408419, + 2.63419 + ], + [ + -2.927132, + 8.75435, + -3.537159 + ], + [ + -3.296222, + 7.964629, + -3.134625 + ], + [ + -1.642041, + 4.13417, + -1.301665 + ], + [ + 2.030759, + 0.176372, + -1.030923 + ], + [ + -4.559069, + 3.751053, + 0.548453 + ], + [ + 3.438385, + 4.59454, + -0.243215 + ], + [ + -2.561769, + 7.93935, + 0.177696 + ], + [ + 2.990593, + 1.335314, + -0.943177 + ], + [ + 1.2808, + 0.276396, + -0.49072 + ], + [ + -0.318889, + 0.290684, + 0.211143 + ], + [ + 3.54614, + 3.342635, + -0.767878 + ], + [ + -3.073372, + 7.780018, + -2.357807 + ], + [ + -4.455388, + 4.387245, + 0.361038 + ], + [ + -4.659393, + 6.276064, + 2.767014 + ], + [ + 0.636799, + 4.482223, + -1.426284 + ], + [ + -2.987681, + 8.072969, + -2.45245 + ], + [ + -2.610445, + 0.763554, + 1.792054 + ], + [ + 3.358241, + 2.006707, + -0.802973 + ], + [ + -0.498347, + 0.251594, + 0.962885 + ], + [ + 3.1322, + 0.683312, + 2.038777 + ], + [ + -4.389801, + 7.493776, + 0.690247 + ], + [ + 0.431467, + 4.22119, + -1.614215 + ], + [ + -4.376181, + 3.213141, + 0.273255 + ], + [ + -4.872319, + 5.715645, + 0.829714 + ], + [ + -4.826893, + 6.195334, + 0.849912 + ], + [ + 3.516562, + 2.23732, + -0.677597 + ], + [ + 3.131656, + 1.698841, + -0.975761 + ], + [ + -4.754925, + 5.411666, + 1.989303 + ], + [ + -2.987299, + 7.320765, + -0.629479 + ], + [ + -3.757635, + 3.274862, + -0.744022 + ], + [ + 3.487044, + 2.541999, + -0.699933 + ], + [ + -4.53274, + 4.649505, + 0.77093 + ], + [ + -1.424192, + 0.099423, + 2.633327 + ], + [ + 3.090867, + 2.476975, + -1.146957 + ], + [ + -2.713256, + 0.815622, + 2.17311 + ], + [ + 3.348121, + 3.254167, + -0.984896 + ], + [ + -3.031379, + 0.16453, + -0.309937 + ], + [ + -0.949757, + 4.518137, + -1.309172 + ], + [ + -0.889509, + 0.095256, + 1.288803 + ], + [ + 3.539594, + 1.966105, + -0.553965 + ], + [ + -4.60612, + 7.127749, + 0.811958 + ], + [ + -2.332953, + 1.444713, + 1.624548 + ], + [ + 3.136293, + 2.95805, + -1.138272 + ], + [ + 3.540808, + 3.069058, + -0.735285 + ], + [ + 3.678852, + 2.362375, + -0.452543 + ], + [ + -4.648898, + 7.37438, + 0.954791 + ], + [ + -0.646871, + 0.19037, + 3.344746 + ], + [ + 2.2825, + 0.29343, + -0.826273 + ], + [ + -4.422291, + 7.183959, + 0.557517 + ], + [ + -4.694668, + 5.246103, + 2.541768 + ], + [ + -4.583691, + 4.145486, + 0.600207 + ], + [ + -2.934854, + 7.912513, + -1.539269 + ], + [ + -3.067861, + 7.817472, + -0.546501 + ], + [ + 3.825095, + 3.229512, + -0.237547 + ], + [ + 2.532494, + 0.323059, + 2.387105 + ], + [ + -2.514583, + 0.692857, + 1.23597 + ], + [ + -4.736805, + 7.214384, + 1.259421 + ], + [ + -2.98071, + 8.409903, + -2.468199 + ], + [ + 2.621468, + 1.385844, + -1.406355 + ], + [ + 3.811447, + 3.560855, + 1.847828 + ], + [ + 3.432925, + 1.497205, + -0.489784 + ], + [ + 3.746609, + 3.631538, + -0.39067 + ], + [ + 3.594909, + 2.832257, + -0.576012 + ], + [ + -0.404192, + 5.300188, + -0.856561 + ], + [ + -4.762996, + 6.483774, + 1.702648 + ], + [ + -4.756612, + 6.786223, + 1.43682 + ], + [ + -2.965309, + 8.437217, + -2.785495 + ], + [ + 2.863867, + 0.74087, + -0.429684 + ], + [ + 4.02503, + 2.968753, + 1.392419 + ], + [ + 3.669036, + 1.833858, + -0.304971 + ], + [ + -2.888864, + 0.720537, + 0.778057 + ], + [ + -2.36982, + 0.979443, + 1.054447 + ], + [ + -2.959259, + 8.222303, + -2.659724 + ], + [ + -3.467825, + 7.545739, + -2.333445 + ], + [ + 2.153426, + 0.446256, + -1.20523 + ], + [ + -3.229807, + 9.189699, + -3.596609 + ], + [ + -3.72486, + 8.773707, + -2.046671 + ], + [ + 3.687218, + 3.297751, + -0.523746 + ], + [ + 1.381025, + 0.08815, + -1.185668 + ], + [ + -2.796828, + 7.205622, + -0.208783 + ], + [ + 3.647194, + 4.066232, + -0.291507 + ], + [ + -4.578376, + 3.885556, + 1.52546 + ], + [ + -2.840262, + 0.63094, + 1.89499 + ], + [ + -2.429514, + 0.922118, + 1.820781 + ], + [ + -4.675079, + 6.573925, + 2.423363 + ], + [ + 2.806207, + 4.320188, + -1.027372 + ], + [ + -1.289608, + 0.097241, + 1.321661 + ], + [ + -3.010731, + 8.141334, + -2.866148 + ], + [ + 3.202291, + 1.235617, + -0.549025 + ], + [ + 4.094792, + 2.477519, + 0.304581 + ], + [ + 2.948403, + 0.966873, + -0.664857 + ], + [ + -4.83297, + 5.920587, + 2.095461 + ], + [ + -2.169693, + 7.257277, + 0.946184 + ], + [ + -1.335807, + 3.057597, + -1.303166 + ], + [ + -1.037877, + 0.64151, + -1.685271 + ], + [ + 2.627919, + 0.089814, + 0.439074 + ], + [ + 3.815794, + 3.808102, + 1.730493 + ], + [ + -2.973455, + 8.433141, + -3.08872 + ], + [ + -2.391558, + 7.331428, + 1.658264 + ], + [ + -4.333107, + 4.529978, + 1.850516 + ], + [ + -4.640293, + 3.767107, + 1.168841 + ], + [ + 3.600716, + 4.46931, + 1.734024 + ], + [ + 3.880803, + 1.730158, + -0.172736 + ], + [ + 3.814183, + 4.262372, + 1.167042 + ], + [ + 4.37325, + 0.829542, + 1.413729 + ], + [ + 2.490447, + 5.75111, + 0.011492 + ], + [ + 3.460003, + 4.962436, + 1.188971 + ], + [ + 3.918419, + 3.814234, + 1.358271 + ], + [ + -0.807595, + 8.840504, + -0.953711 + ], + [ + 3.752855, + 4.20577, + 1.57177 + ], + [ + -2.991085, + 8.816501, + -3.244595 + ], + [ + -2.333196, + 7.128889, + 1.551985 + ], + [ + 3.977718, + 3.570941, + 1.25937 + ], + [ + 4.360071, + 0.755579, + 1.079916 + ], + [ + 4.637579, + 1.027973, + 1.032567 + ], + [ + -2.317, + 7.421066, + 1.329589 + ], + [ + -1.013404, + 8.293662, + -0.7823 + ], + [ + 4.548023, + 1.020644, + 1.420462 + ], + [ + 4.763258, + 1.266798, + 1.296203 + ], + [ + 4.896, + 2.073084, + 1.255213 + ], + [ + 4.015005, + 3.325226, + 1.093879 + ], + [ + 4.94885, + 1.860936, + 0.894463 + ], + [ + -2.189645, + 6.954634, + 1.270077 + ], + [ + 4.887442, + 1.720992, + 1.288526 + ], + [ + -3.184068, + 7.871802, + 0.956189 + ], + [ + -1.274318, + 0.839887, + -1.224389 + ], + [ + -2.919521, + 7.84432, + 0.541629 + ], + [ + -2.994586, + 7.766102, + 1.96867 + ], + [ + -3.417504, + 9.241714, + -3.093201 + ], + [ + -3.174563, + 7.466456, + 2.473617 + ], + [ + -3.263067, + 9.069412, + -3.003459 + ], + [ + -2.841592, + 0.529833, + 2.693434 + ], + [ + -3.611069, + 9.158804, + -2.829871 + ], + [ + -4.642828, + 5.927526, + 0.320549 + ], + [ + -3.809308, + 9.051035, + -2.692749 + ], + [ + -2.837582, + 7.487987, + -0.106206 + ], + [ + 4.773025, + 2.330442, + 1.213899 + ], + [ + 4.897435, + 2.209906, + 0.966657 + ], + [ + -3.067637, + 8.164062, + -1.12661 + ], + [ + -3.122129, + 8.08074, + -0.899194 + ], + [ + 4.571019, + 2.358113, + 1.462054 + ], + [ + 4.584884, + 2.454418, + 0.709466 + ], + [ + -3.661093, + 7.146581, + -0.475948 + ], + [ + 4.735131, + 2.415859, + 0.933939 + ], + [ + 4.207556, + 2.540018, + 1.218293 + ], + [ + -3.607595, + 7.89161, + -0.121172 + ], + [ + -1.527952, + 0.775564, + -1.061903 + ], + [ + 4.53874, + 2.503273, + 1.099583 + ], + [ + -3.938837, + 7.587988, + 0.082449 + ], + [ + -4.853582, + 6.152409, + 1.787943 + ], + [ + -4.752214, + 6.247234, + 2.296873 + ], + [ + 4.602935, + 2.363955, + 0.488901 + ], + [ + -1.81638, + 6.365879, + 0.868272 + ], + [ + 0.595467, + 4.744074, + -1.32483 + ], + [ + 1.87635, + 3.511986, + -1.842924 + ], + [ + 4.330947, + 2.534326, + 0.720503 + ], + [ + 4.108736, + 2.750805, + 0.904552 + ], + [ + -1.890939, + 8.492628, + -0.290768 + ], + [ + -3.504309, + 6.173058, + -0.422804 + ], + [ + -1.611992, + 6.196732, + 0.648736 + ], + [ + -3.899149, + 7.826123, + 1.088845 + ], + [ + -3.078303, + 3.008813, + -1.035784 + ], + [ + -2.798999, + 7.844899, + 1.340061 + ], + [ + -1.248839, + 5.959105, + 0.041761 + ], + [ + 0.767779, + 4.337318, + 3.090817 + ], + [ + -3.831177, + 7.515605, + 2.432261 + ], + [ + -1.667528, + 6.156208, + 0.365267 + ], + [ + -1.726078, + 6.237384, + 1.100059 + ], + [ + -3.972037, + 4.520832, + -0.370756 + ], + [ + -4.40449, + 7.636357, + 1.520425 + ], + [ + -1.34506, + 6.004054, + 1.293159 + ], + [ + -1.233556, + 6.049933, + 0.500651 + ], + [ + -3.696869, + 7.79732, + 0.37979 + ], + [ + -3.307798, + 8.949964, + -2.698113 + ], + [ + -1.997295, + 6.615056, + 1.103691 + ], + [ + -3.219222, + 8.336394, + -1.150614 + ], + [ + -3.452623, + 8.31866, + -0.9417 + ], + [ + -3.94641, + 2.990494, + 2.212592 + ], + [ + -3.250025, + 8.030414, + -0.596097 + ], + [ + -2.02375, + 1.571333, + 2.397939 + ], + [ + -3.190358, + 7.665013, + 2.268183 + ], + [ + -2.811918, + 7.618526, + 2.145587 + ], + [ + -1.005265, + 5.892303, + 0.072158 + ], + [ + -0.93721, + 5.974148, + 0.906669 + ], + [ + -4.646072, + 7.492193, + 1.45312 + ], + [ + -0.252931, + 1.797654, + 3.140638 + ], + [ + -1.076064, + 5.738433, + 1.695953 + ], + [ + -3.980534, + 7.744391, + 1.735791 + ], + [ + -0.721187, + 5.939396, + 0.526032 + ], + [ + -0.42818, + 5.919755, + 0.229001 + ], + [ + -1.43429, + 6.11622, + 0.93863 + ], + [ + -0.985638, + 5.939683, + 0.290636 + ], + [ + -4.433836, + 7.461372, + 1.966437 + ], + [ + -3.696398, + 7.844859, + 1.547325 + ], + [ + -3.390772, + 7.820186, + 1.812204 + ], + [ + -2.916787, + 7.864019, + 0.804341 + ], + [ + -3.715952, + 8.037269, + -0.591341 + ], + [ + -4.204634, + 7.72919, + 1.119866 + ], + [ + -4.592233, + 5.592883, + 0.246264 + ], + [ + 3.307299, + 5.061701, + 1.622917 + ], + [ + -3.515159, + 7.601467, + 2.368914 + ], + [ + -3.435742, + 8.533457, + -1.37916 + ], + [ + -0.269421, + 4.545635, + -1.366445 + ], + [ + -2.542124, + 3.768736, + -1.258512 + ], + [ + -3.034003, + 7.873773, + 1.256854 + ], + [ + -2.801399, + 7.856028, + 1.080137 + ], + [ + 3.29354, + 5.220894, + 1.081767 + ], + [ + -2.35109, + 1.299486, + 1.01206 + ], + [ + -3.232213, + 7.768136, + 2.047563 + ], + [ + 3.290415, + 5.217525, + 0.68019 + ], + [ + -3.415109, + 7.731034, + 2.144326 + ], + [ + 3.440357, + 4.962463, + 0.373387 + ], + [ + 3.147346, + 5.352121, + 1.386923 + ], + [ + 2.847252, + 5.469051, + 1.831981 + ], + [ + 3.137682, + 5.410222, + 1.050188 + ], + [ + 3.102694, + 5.310456, + 1.676434 + ], + [ + -3.044601, + 0.39515, + 1.994084 + ], + [ + 2.903647, + 5.561338, + 1.518598 + ], + [ + -3.810148, + 8.093598, + -0.889131 + ], + [ + 4.234835, + 0.803054, + 1.593271 + ], + [ + 3.240165, + 5.228747, + 0.325955 + ], + [ + 3.037452, + 5.509825, + 0.817137 + ], + [ + 2.635031, + 5.795187, + 1.439724 + ], + [ + 3.071607, + 5.318303, + 0.080142 + ], + [ + 2.909167, + 5.611751, + 1.155874 + ], + [ + 3.044889, + 5.465928, + 0.486566 + ], + [ + 2.502256, + 5.770673, + 1.740054 + ], + [ + -0.067497, + 0.086416, + -1.190239 + ], + [ + 2.33326, + 5.906051, + 0.138295 + ], + [ + 0.65096, + 4.205423, + 3.308767 + ], + [ + -2.671137, + 7.936535, + 0.432731 + ], + [ + 2.14463, + 5.879214, + 1.866047 + ], + [ + -4.776469, + 5.890689, + 0.561986 + ], + [ + 2.72432, + 5.655145, + 0.211951 + ], + [ + 2.730488, + 5.751455, + 0.695894 + ], + [ + 2.572682, + 5.869295, + 1.152663 + ], + [ + 1.906776, + 5.739123, + 2.196551 + ], + [ + 2.344414, + 5.999961, + 0.772922 + ], + [ + -3.377905, + 7.448708, + -1.863251 + ], + [ + 2.285149, + 5.968156, + 1.459258 + ], + [ + 2.385989, + 5.928974, + 0.3689 + ], + [ + 2.192111, + 6.087516, + 0.959901 + ], + [ + 2.36372, + 6.001101, + 1.074346 + ], + [ + 1.972022, + 6.079603, + 1.591175 + ], + [ + 1.87615, + 5.976698, + 1.91554 + ], + [ + -3.824761, + 9.05372, + -2.928615 + ], + [ + 2.044704, + 6.129704, + 1.263111 + ], + [ + -2.583046, + 0.849537, + 2.497344 + ], + [ + -0.078825, + 2.342205, + 3.520322 + ], + [ + -0.704686, + 0.537165, + 3.397194 + ], + [ + -0.257449, + 3.235334, + 3.647545 + ], + [ + -0.332064, + 1.448284, + 3.022583 + ], + [ + -2.200146, + 0.898284, + -0.447212 + ], + [ + -2.497508, + 1.745446, + 1.829167 + ], + [ + 0.30702, + 4.416315, + 2.978956 + ], + [ + -3.205197, + 3.479307, + -1.040582 + ], + [ + 0.110069, + 9.347725, + -1.563686 + ], + [ + -0.82754, + 0.883886, + 3.065838 + ], + [ + -2.017103, + 1.244785, + 2.42512 + ], + [ + -0.421091, + 2.309929, + 3.153898 + ], + [ + -0.491604, + 3.796072, + 3.16245 + ], + [ + 2.786955, + 3.501241, + -1.340214 + ], + [ + -3.229055, + 4.380713, + -0.899241 + ], + [ + 3.730768, + 0.76845, + 1.90312 + ], + [ + -0.561079, + 2.652382, + 3.152463 + ], + [ + -3.461471, + 3.086496, + 2.662505 + ], + [ + -0.661405, + 3.446009, + 3.179939 + ], + [ + -0.915351, + 0.636755, + 3.243708 + ], + [ + -2.992964, + 8.915628, + -3.729833 + ], + [ + -0.439627, + 3.502104, + 3.42665 + ], + [ + -1.154217, + 0.883181, + 2.800835 + ], + [ + -1.736193, + 1.465474, + 2.595489 + ], + [ + -0.423928, + 3.24435, + 3.548277 + ], + [ + -0.511153, + 2.871046, + 3.379749 + ], + [ + -0.675722, + 2.991756, + 3.143262 + ], + [ + -1.092602, + 0.599103, + 3.090639 + ], + [ + -0.89821, + 2.836952, + 2.840023 + ], + [ + -2.658412, + 0.781376, + 0.960575 + ], + [ + -2.271455, + 1.222857, + 1.330478 + ], + [ + -0.877861, + 1.111222, + 2.72263 + ], + [ + -0.306959, + 2.876987, + 3.556044 + ], + [ + -3.839274, + 7.84138, + -0.918404 + ], + [ + -0.172094, + 4.083799, + 3.141708 + ], + [ + -1.548332, + 0.2529, + 2.864655 + ], + [ + -0.217353, + 4.873911, + -1.223104 + ], + [ + -3.384242, + 3.181056, + -0.95579 + ], + [ + -2.731704, + 0.382421, + 2.895502 + ], + [ + -1.285037, + 0.551267, + 2.947675 + ], + [ + 0.077224, + 4.246579, + 3.066738 + ], + [ + -0.479979, + 1.77955, + 2.860011 + ], + [ + -0.716375, + 1.224694, + 2.666751 + ], + [ + -0.54622, + 3.138255, + 3.393457 + ], + [ + -2.33413, + 1.821222, + 2.124883 + ], + [ + -0.50653, + 2.037147, + 2.897465 + ], + [ + 2.451291, + 1.211389, + -1.466589 + ], + [ + -3.160047, + 2.894081, + 2.724286 + ], + [ + -4.137258, + 5.433431, + 3.21201 + ], + [ + 0.462896, + 0.320456, + -0.174837 + ], + [ + -0.37458, + 2.609447, + 3.379253 + ], + [ + -3.095244, + 0.256205, + 2.196446 + ], + [ + -4.197985, + 5.732991, + 3.262924 + ], + [ + -0.729747, + 0.246036, + 0.497036 + ], + [ + -2.356189, + 5.062, + -0.965619 + ], + [ + -1.609036, + 0.25962, + -1.487367 + ], + [ + -4.074381, + 6.074061, + 3.409459 + ], + [ + -3.619304, + 4.0022, + 2.65705 + ], + [ + -0.543393, + 8.742896, + -1.056622 + ], + [ + -4.30356, + 6.858934, + 2.879642 + ], + [ + -0.716688, + 2.901831, + -2.11202 + ], + [ + 1.547362, + 0.083189, + 1.138764 + ], + [ + -0.250916, + 0.275268, + 1.201344 + ], + [ + -3.778035, + 3.13624, + 2.466177 + ], + [ + -4.594316, + 5.771342, + 3.01694 + ], + [ + -3.717706, + 3.442887, + 2.603344 + ], + [ + -4.311163, + 5.224669, + 3.019373 + ], + [ + -0.610389, + 2.095161, + -1.923515 + ], + [ + -3.040086, + 6.196918, + -0.429149 + ], + [ + -3.802695, + 3.768247, + 2.545523 + ], + [ + -0.159541, + 2.043362, + 3.328549 + ], + [ + -3.744329, + 4.31785, + 2.491889 + ], + [ + -3.047939, + 0.214155, + 1.873639 + ], + [ + -4.41685, + 6.113058, + 3.166774 + ], + [ + -1.165133, + 0.460692, + -1.742134 + ], + [ + -1.371289, + 4.249996, + -1.317935 + ], + [ + -3.447883, + 0.3521, + 0.466205 + ], + [ + -4.495555, + 6.465548, + 2.944147 + ], + [ + -3.455335, + 0.171653, + 0.390816 + ], + [ + -3.964028, + 4.017196, + 2.376009 + ], + [ + -1.323595, + 1.763126, + -0.750772 + ], + [ + -3.971142, + 5.277524, + -0.19496 + ], + [ + -3.222052, + 0.237723, + 0.872229 + ], + [ + -4.403784, + 3.89107, + 1.872077 + ], + [ + -3.333311, + 0.342997, + 0.661016 + ], + [ + -4.495871, + 4.29606, + 1.63608 + ], + [ + -3.636081, + 2.760711, + 2.361949 + ], + [ + -4.487235, + 3.559608, + 1.66737 + ], + [ + -4.719787, + 7.26888, + 1.658722 + ], + [ + -1.086143, + 9.035741, + -0.707144 + ], + [ + -2.339693, + 1.600485, + -0.404817 + ], + [ + -4.642011, + 7.123829, + 1.990987 + ], + [ + -1.498077, + 3.854035, + -1.369787 + ], + [ + -4.188372, + 4.729363, + 2.02983 + ], + [ + -3.116344, + 5.882284, + -0.468884 + ], + [ + -4.305236, + 4.246417, + 1.976991 + ], + [ + -3.022509, + 0.22819, + 1.065688 + ], + [ + -2.799916, + 0.52022, + 1.128319 + ], + [ + -4.262823, + 3.534409, + 2.020383 + ], + [ + -4.221533, + 3.947676, + 2.11735 + ], + [ + -3.744353, + 4.391712, + -0.6193 + ], + [ + -1.272905, + 0.156694, + -1.741753 + ], + [ + -3.62491, + 2.669825, + -0.549664 + ], + [ + -4.180756, + 3.096179, + 1.987215 + ], + [ + -4.059276, + 4.305313, + 2.232924 + ], + [ + -2.812753, + 0.183226, + 1.370267 + ], + [ + -4.032437, + 3.512234, + 2.309985 + ], + [ + -0.03787, + 0.28188, + 0.530391 + ], + [ + -4.711562, + 5.468653, + 2.822838 + ], + [ + -4.500636, + 6.953314, + 2.564445 + ], + [ + -4.479433, + 7.216991, + 2.270682 + ], + [ + 3.990562, + 0.50522, + 0.716309 + ], + [ + -2.512229, + 6.863447, + -0.100658 + ], + [ + -2.968058, + 6.956639, + -0.37061 + ], + [ + 2.550375, + 3.142683, + -1.54068 + ], + [ + -2.320059, + 3.521605, + -1.279397 + ], + [ + -4.556319, + 6.64662, + 2.745363 + ], + [ + -4.281091, + 7.108116, + 2.667598 + ], + [ + -2.050095, + 8.411689, + 0.121353 + ], + [ + -2.44854, + 1.135487, + 0.851875 + ], + [ + 3.121815, + 0.699943, + -0.277167 + ], + [ + -4.69877, + 6.00376, + 2.843035 + ], + [ + -1.360599, + 8.824742, + -0.595597 + ], + [ + 1.128437, + 0.171611, + 0.301691 + ], + [ + -4.360146, + 6.289423, + 0.042233 + ], + [ + 1.400795, + 4.088829, + -1.620409 + ], + [ + -3.193462, + 8.460137, + -3.559446 + ], + [ + -3.168771, + 8.878431, + -3.635795 + ], + [ + -3.434275, + 9.304302, + -3.460878 + ], + [ + -3.349993, + 8.808093, + -3.38179 + ], + [ + -3.304823, + 8.323865, + -3.325905 + ], + [ + -3.572607, + 9.308843, + -3.207672 + ], + [ + -3.166393, + 8.201215, + -3.43014 + ], + [ + -3.451638, + 9.05331, + -3.351345 + ], + [ + -3.309591, + 8.549758, + -3.375055 + ], + [ + -3.527992, + 8.793926, + -3.100376 + ], + [ + -3.6287, + 8.981677, + -3.076319 + ], + [ + -3.445505, + 8.001887, + -2.8273 + ], + [ + -3.408011, + 8.221014, + -3.039237 + ], + [ + -3.65928, + 8.740382, + -2.808856 + ], + [ + -3.878019, + 8.797295, + -2.462866 + ], + [ + -3.515132, + 8.232341, + -2.747739 + ], + [ + -3.460331, + 8.51524, + -3.06818 + ], + [ + -3.403703, + 7.658628, + -2.648789 + ], + [ + -3.507113, + 8.00159, + -2.582275 + ], + [ + -3.607373, + 8.174737, + -2.401723 + ], + [ + -3.749043, + 8.378084, + -2.226959 + ], + [ + -3.648514, + 8.502213, + -2.6138 + ], + [ + -2.534199, + 0.904753, + 2.021148 + ], + [ + 1.4083, + 5.744252, + -0.571402 + ], + [ + -3.852536, + 8.571009, + -2.352358 + ], + [ + 2.868255, + 5.373126, + -0.163705 + ], + [ + 2.224363, + 4.669891, + -1.061586 + ], + [ + -4.528281, + 4.885838, + 1.340274 + ], + [ + 1.30817, + 4.609629, + -1.28762 + ], + [ + -4.519698, + 3.422501, + 1.354826 + ], + [ + -3.549955, + 7.783228, + -2.332859 + ], + [ + 1.12313, + 6.120856, + 0.045115 + ], + [ + -3.620324, + 7.57716, + -2.033423 + ], + [ + -0.798833, + 2.624133, + -1.992682 + ], + [ + -3.617587, + 7.783148, + -2.051383 + ], + [ + -3.669293, + 8.103776, + -2.10227 + ], + [ + -3.892417, + 8.667436, + -2.167288 + ], + [ + -0.537435, + 0.285345, + -0.176267 + ], + [ + -0.841522, + 3.299866, + -1.887861 + ], + [ + -0.761547, + 3.647082, + -1.798953 + ], + [ + -3.661544, + 7.85708, + -1.867924 + ], + [ + -3.886763, + 8.551783, + -1.889171 + ], + [ + -0.591244, + 1.549749, + -1.714784 + ], + [ + -0.775276, + 1.908218, + -1.597609 + ], + [ + -0.961458, + 2.573273, + -1.695549 + ], + [ + -2.215672, + 1.335009, + 2.143031 + ], + [ + -4.622674, + 4.130242, + 1.220683 + ], + [ + 1.07344, + 0.290099, + 1.584734 + ], + [ + -0.976906, + 2.92171, + -1.76667 + ], + [ + -1.13696, + 3.194401, + -1.513455 + ], + [ + -3.743262, + 7.99949, + -1.629286 + ], + [ + -2.876359, + 4.900986, + -0.879556 + ], + [ + 0.550835, + 3.905557, + -2.031372 + ], + [ + 0.777647, + 4.992314, + -1.215703 + ], + [ + 1.445881, + 4.266201, + -1.414663 + ], + [ + 1.274222, + 5.510543, + -0.824495 + ], + [ + -0.864685, + 2.318581, + -1.702389 + ], + [ + -0.627458, + 3.820722, + -1.743153 + ], + [ + -3.867699, + 8.30866, + -1.850066 + ], + [ + 1.635287, + 5.45587, + -0.83844 + ], + [ + -1.037876, + 2.538589, + -1.513504 + ], + [ + -4.38993, + 4.73926, + 1.699639 + ], + [ + 0.048709, + 4.765232, + -1.279506 + ], + [ + -0.626548, + 1.339887, + -1.595114 + ], + [ + -3.682827, + 7.643453, + -1.723398 + ], + [ + -3.868783, + 8.180191, + -1.511743 + ], + [ + -0.76988, + 1.508373, + -1.419599 + ], + [ + -1.138374, + 2.766765, + -1.448163 + ], + [ + 1.699883, + 5.780752, + -0.475361 + ], + [ + 1.214305, + 0.308517, + 1.866405 + ], + [ + -1.713642, + 0.373461, + -1.265204 + ], + [ + -1.582388, + 0.58294, + -1.267977 + ], + [ + -0.879549, + 1.821581, + -1.313787 + ], + [ + 0.519057, + 5.858757, + -0.381397 + ], + [ + -3.770989, + 2.449208, + -0.132655 + ], + [ + 0.087576, + 0.156713, + -1.53616 + ], + [ + -0.942622, + 2.146534, + -1.421494 + ], + [ + -1.026192, + 1.022164, + -1.145423 + ], + [ + -0.964079, + 1.645473, + -1.067631 + ], + [ + -1.109128, + 2.458789, + -1.29106 + ], + [ + -1.037478, + 0.209489, + -1.805424 + ], + [ + -3.724391, + 7.599686, + -1.273458 + ], + [ + -3.787898, + 7.951792, + -1.304794 + ], + [ + 3.821677, + 2.165581, + -0.181535 + ], + [ + -2.39467, + 0.304606, + -0.570375 + ], + [ + -2.352928, + 1.0439, + 2.079369 + ], + [ + -0.288899, + 9.640684, + -1.006079 + ], + [ + -3.472118, + 7.263001, + -1.080326 + ], + [ + -1.240769, + 0.972352, + -0.976446 + ], + [ + -1.845253, + 0.356801, + -0.995574 + ], + [ + -2.32279, + 7.915361, + -0.057477 + ], + [ + -1.08092, + 2.179315, + -1.168821 + ], + [ + 4.598833, + 2.156768, + 0.280264 + ], + [ + -4.725417, + 6.442373, + 2.056809 + ], + [ + -0.490347, + 9.46429, + -0.981092 + ], + [ + -1.99652, + 0.09737, + -0.765828 + ], + [ + -1.137793, + 1.888846, + -0.894165 + ], + [ + -0.37247, + 4.29661, + -1.465199 + ], + [ + -0.184631, + 5.692946, + -0.421398 + ], + [ + -3.751694, + 7.742231, + -1.086908 + ], + [ + -1.001416, + 1.298225, + -0.904674 + ], + [ + -3.536884, + 7.190777, + -0.788609 + ], + [ + -3.737597, + 7.511281, + -0.940052 + ], + [ + -1.766651, + 0.669388, + -0.873054 + ], + [ + 3.112245, + 3.474345, + -1.129672 + ], + [ + -0.175504, + 3.81298, + -2.0479 + ], + [ + -3.766762, + 7.412514, + -0.681569 + ], + [ + -0.63375, + 9.439424, + -0.785128 + ], + [ + -0.518199, + 4.768982, + -1.258625 + ], + [ + 0.790619, + 4.212759, + -1.610218 + ], + [ + -3.761951, + 3.742528, + -0.756283 + ], + [ + 0.897483, + 5.679808, + -0.612423 + ], + [ + 2.221126, + 4.427468, + -1.252155 + ], + [ + -0.728577, + 5.846457, + 0.062702 + ], + [ + 0.194451, + 9.503908, + -1.482461 + ], + [ + -0.099243, + 9.385459, + -1.39564 + ], + [ + 0.643185, + 3.636855, + -2.180247 + ], + [ + 0.894522, + 5.900601, + -0.356935 + ], + [ + 2.595516, + 4.75731, + -0.893245 + ], + [ + 1.108497, + 3.936893, + -1.905098 + ], + [ + 1.989894, + 5.789726, + -0.343268 + ], + [ + -3.802345, + 7.655508, + -0.613817 + ], + [ + 2.339353, + 4.96257, + -0.90308 + ], + [ + 0.12564, + 4.013324, + -1.879236 + ], + [ + -4.078965, + 3.683254, + -0.445439 + ], + [ + 2.092899, + 5.256128, + -0.831607 + ], + [ + 0.427571, + 0.291769, + 1.272964 + ], + [ + 2.335549, + 3.480056, + -1.581949 + ], + [ + -0.15687, + 0.324827, + -1.648922 + ], + [ + -0.536522, + 5.760786, + -0.203535 + ], + [ + 1.507082, + 0.078251, + -0.923109 + ], + [ + -1.854742, + 0.134826, + 2.698774 + ], + [ + -3.939827, + 3.168498, + -0.526144 + ], + [ + -3.98461, + 3.39869, + -0.533212 + ], + [ + -3.961738, + 4.217132, + -0.489147 + ], + [ + 4.273789, + 2.181164, + 0.153786 + ], + [ + -0.470498, + 5.645664, + -0.439079 + ], + [ + -0.414539, + 5.488017, + -0.673379 + ], + [ + -0.097462, + 5.062739, + -1.114863 + ], + [ + 1.198092, + 5.882232, + -0.391699 + ], + [ + 2.855834, + 5.085022, + -0.498678 + ], + [ + 1.037998, + 4.129757, + -1.701811 + ], + [ + 1.728091, + 5.068444, + -1.063761 + ], + [ + -3.832258, + 2.625141, + -0.311384 + ], + [ + -4.078526, + 3.070256, + -0.284362 + ], + [ + -4.080365, + 3.954243, + -0.440471 + ], + [ + -0.152578, + 5.276267, + -0.929815 + ], + [ + -1.489635, + 8.928082, + -0.295891 + ], + [ + 0.759294, + 5.15585, + -1.087374 + ], + [ + -4.000338, + 2.801647, + -0.235135 + ], + [ + -4.290801, + 3.823209, + -0.19374 + ], + [ + -4.221493, + 4.25618, + -0.189894 + ], + [ + -4.066195, + 4.71916, + -0.201724 + ], + [ + -0.155386, + 4.076396, + -1.662865 + ], + [ + 3.054571, + 4.414305, + -0.825985 + ], + [ + -1.652919, + 8.726499, + -0.388504 + ], + [ + -3.042753, + 0.560068, + -0.126425 + ], + [ + -2.434456, + 1.118088, + -0.213563 + ], + [ + -2.623502, + 1.845062, + -0.283697 + ], + [ + -4.233371, + 3.43941, + -0.202918 + ], + [ + 2.726702, + 3.82071, + -1.280097 + ], + [ + 0.184199, + 4.14639, + -1.673653 + ], + [ + -1.289203, + 0.624562, + -1.560929 + ], + [ + -3.823676, + 7.382458, + -0.407223 + ], + [ + 0.476667, + 5.064419, + -1.143742 + ], + [ + -3.873651, + 4.955112, + -0.269389 + ], + [ + 1.349666, + 5.312227, + -1.000274 + ], + [ + -2.043776, + 8.434488, + -0.108891 + ], + [ + -2.763964, + 0.733395, + -0.129294 + ], + [ + -4.380505, + 3.664409, + -0.024546 + ], + [ + -0.71211, + 5.341811, + -0.803281 + ], + [ + -3.960858, + 7.183112, + -0.118407 + ], + [ + -3.822277, + 7.712853, + -0.263221 + ], + [ + -2.346808, + 8.108588, + 0.063244 + ], + [ + -1.841731, + 8.642999, + -0.142496 + ], + [ + -2.600055, + 0.985604, + -0.043595 + ], + [ + -3.513057, + 2.213243, + -0.044151 + ], + [ + -3.963492, + 2.603055, + -0.080898 + ], + [ + -4.258066, + 3.14537, + -0.027046 + ], + [ + -4.261572, + 5.00334, + 0.13004 + ], + [ + 0.795464, + 3.99873, + -1.905688 + ], + [ + -3.300873, + 0.384761, + 0.013271 + ], + [ + -2.770244, + 0.881942, + 0.077313 + ], + [ + -3.456227, + 1.993871, + 0.301054 + ], + [ + -4.441987, + 3.914144, + 0.177867 + ], + [ + -4.367075, + 6.611414, + 0.165312 + ], + [ + -3.201767, + 0.576292, + 0.105769 + ], + [ + -3.174354, + 0.645009, + 0.440373 + ], + [ + -2.996576, + 0.74262, + 0.161325 + ], + [ + -2.724979, + 1.656497, + 0.092983 + ], + [ + -3.261757, + 2.017742, + -0.070763 + ], + [ + -4.280173, + 4.518235, + -0.002999 + ], + [ + -4.471073, + 5.945358, + 0.05202 + ], + [ + -3.877137, + 2.40743, + 0.274928 + ], + [ + -4.371219, + 4.252758, + 0.078039 + ], + [ + -3.400914, + 0.40983, + 0.238599 + ], + [ + -4.44293, + 3.523242, + 0.146339 + ], + [ + -4.574528, + 5.279761, + 0.353923 + ], + [ + -4.226643, + 7.191282, + 0.269256 + ], + [ + -4.16361, + 2.843204, + 0.097727 + ], + [ + -4.528506, + 5.011661, + 0.536625 + ], + [ + 0.35514, + 5.664802, + -0.572814 + ], + [ + 2.508711, + 5.580976, + -0.266636 + ], + [ + 2.556226, + 3.633779, + -1.426362 + ], + [ + 1.878456, + 4.533714, + -1.223744 + ], + [ + 2.460709, + 4.440241, + -1.1395 + ], + [ + 2.218589, + 5.514603, + -0.560066 + ], + [ + 2.263712, + 5.737023, + -0.250694 + ], + [ + 2.964981, + 3.814858, + -1.139927 + ], + [ + 0.991384, + 5.304131, + -0.999867 + ], + [ + 2.81187, + 4.547292, + -0.916025 + ], + [ + 2.918089, + 4.768382, + -0.702808 + ], + [ + 3.262403, + 4.414286, + -0.657935 + ], + [ + 0.652136, + 6.089113, + 0.069089 + ], + [ + 3.361389, + 3.5052, + -0.946123 + ], + [ + 2.613042, + 5.037192, + -0.697153 + ], + [ + 0.094339, + 4.36858, + -1.451238 + ], + [ + 3.290862, + 4.155716, + -0.732318 + ], + [ + 2.658063, + 4.073614, + -1.217455 + ], + [ + 3.260349, + 3.753257, + -0.946819 + ], + [ + 1.124268, + 4.862463, + -1.207855 + ], + [ + 3.35158, + 4.899247, + -0.027586 + ], + [ + 3.194057, + 4.691257, + -0.524566 + ], + [ + 3.090119, + 5.116085, + -0.23255 + ], + [ + 2.418965, + 3.811753, + -1.419399 + ], + [ + 2.191789, + 3.877038, + -1.47023 + ], + [ + 4.043166, + 2.034188, + 0.015477 + ], + [ + -1.026966, + 0.86766, + -1.410912 + ], + [ + 1.937563, + 3.860005, + -1.617465 + ], + [ + 2.98904, + 4.101806, + -0.998132 + ], + [ + -0.142611, + 5.865305, + -0.100872 + ], + [ + 3.972673, + 2.292069, + 0.089463 + ], + [ + 3.23349, + 3.959925, + -0.849829 + ], + [ + 0.16304, + 5.857276, + -0.216704 + ], + [ + 4.122964, + 1.770061, + -0.114906 + ], + [ + 2.099057, + 4.978374, + -0.98449 + ], + [ + 3.502411, + 3.76181, + -0.667502 + ], + [ + 2.079484, + 5.939614, + -0.036205 + ], + [ + -0.084568, + 3.525193, + -2.253506 + ], + [ + 0.423859, + 4.06095, + -1.845327 + ], + [ + 1.6013, + 6.006466, + -0.153429 + ], + [ + 0.271701, + 3.844964, + -2.078748 + ], + [ + 0.273577, + 5.218904, + -0.994711 + ], + [ + -0.410578, + 3.92165, + -1.773635 + ], + [ + 1.941954, + 5.60041, + -0.621569 + ], + [ + 0.100825, + 5.462131, + -0.774256 + ], + [ + -0.53016, + 3.619892, + -2.027451 + ], + [ + -0.822371, + 5.517453, + -0.605747 + ], + [ + -2.474925, + 7.670892, + -0.020174 + ], + [ + 4.01571, + 0.830194, + -0.013793 + ], + [ + -0.400092, + 5.094112, + -1.041992 + ], + [ + -2.887284, + 5.581246, + -0.525324 + ], + [ + -1.559841, + 6.050972, + 0.079301 + ], + [ + -0.469317, + 3.291673, + -2.235211 + ], + [ + 0.337397, + 3.467926, + -2.295458 + ], + [ + -2.632074, + 5.573701, + -0.582717 + ], + [ + -0.030318, + 6.011395, + 0.276616 + ], + [ + -0.934373, + 0.388987, + -1.780523 + ], + [ + -2.661263, + 5.844838, + -0.425966 + ], + [ + 0.549353, + 5.489646, + -0.807268 + ], + [ + -2.194355, + 6.197491, + -0.109322 + ], + [ + -2.289618, + 5.664813, + -0.581098 + ], + [ + 1.583583, + 3.796366, + -1.844498 + ], + [ + 0.855295, + 0.215979, + -1.425557 + ], + [ + -2.627569, + 5.300236, + -0.767174 + ], + [ + 4.333347, + 2.384332, + 0.399129 + ], + [ + -1.880401, + 5.583843, + -0.696561 + ], + [ + -2.172346, + 5.324859, + -0.846246 + ], + [ + -2.27058, + 5.906265, + -0.388373 + ], + [ + -1.960049, + 5.889346, + -0.397593 + ], + [ + 0.965756, + 3.67547, + -2.105671 + ], + [ + -2.014066, + 6.431125, + 0.287254 + ], + [ + -1.776173, + 5.287097, + -0.89091 + ], + [ + -2.025852, + 5.089562, + -0.980218 + ], + [ + -1.886418, + 6.108358, + -0.000667 + ], + [ + -1.600803, + 5.785347, + -0.491069 + ], + [ + -1.66188, + 4.968053, + -1.042535 + ], + [ + -1.600621, + 5.962818, + -0.188044 + ], + [ + -1.588831, + 5.615418, + -0.665456 + ], + [ + 4.46901, + 1.880138, + 0.057248 + ], + [ + -1.978845, + 0.927399, + -0.554856 + ], + [ + -1.408074, + 5.325266, + -0.83967 + ], + [ + 1.923123, + 4.843955, + -1.101389 + ], + [ + -2.87378, + 0.117106, + -0.412735 + ], + [ + -1.222193, + 5.62638, + -0.539981 + ], + [ + -2.632537, + 0.166349, + -0.489218 + ], + [ + -1.370865, + 5.838832, + -0.341026 + ], + [ + -1.067742, + 5.448874, + -0.692701 + ], + [ + -1.073798, + 5.220878, + -0.908779 + ], + [ + -1.147562, + 4.950417, + -1.079727 + ], + [ + -2.789115, + 4.531047, + -1.042713 + ], + [ + -3.550826, + 4.170487, + -0.806058 + ], + [ + -3.331694, + 4.798177, + -0.69568 + ], + [ + -3.689404, + 4.688543, + -0.534317 + ], + [ + -3.511509, + 5.106246, + -0.483632 + ], + [ + 1.796344, + 0.076137, + 0.080455 + ], + [ + -3.306354, + 5.473605, + -0.478764 + ], + [ + -2.692503, + 3.346604, + -1.20959 + ], + [ + -3.963056, + 5.187462, + 3.113156 + ], + [ + -3.901231, + 6.391477, + -0.246984 + ], + [ + 4.484234, + 1.518638, + -0.001617 + ], + [ + 4.308829, + 1.657716, + -0.119275 + ], + [ + 4.290045, + 1.339528, + -0.110626 + ], + [ + -3.514938, + 3.524974, + -0.909109 + ], + [ + -2.1943, + 2.12163, + -0.71966 + ], + [ + 4.108206, + 1.091087, + -0.11416 + ], + [ + 3.785312, + 1.392435, + -0.28588 + ], + [ + 4.092886, + 1.480476, + -0.210655 + ], + [ + -2.965937, + 6.469006, + -0.379085 + ], + [ + -3.708581, + 2.962974, + -0.63979 + ], + [ + -3.297971, + 2.218917, + -0.299872 + ], + [ + 3.806949, + 0.804703, + -0.11438 + ], + [ + 3.747957, + 1.059258, + -0.273069 + ], + [ + -3.101827, + 4.111444, + -1.006255 + ], + [ + -1.536445, + 4.658913, + -1.195049 + ], + [ + -3.549826, + 2.450555, + -0.375694 + ], + [ + -3.676495, + 2.108366, + 0.534323 + ], + [ + -3.674738, + 5.925075, + -0.400011 + ], + [ + -2.250115, + 2.848335, + -1.121174 + ], + [ + -3.698062, + 5.667567, + -0.381396 + ], + [ + 3.468966, + 0.734643, + -0.190624 + ], + [ + -3.97972, + 5.670078, + -0.26874 + ], + [ + -3.002087, + 4.337837, + -1.033421 + ], + [ + -3.356392, + 2.608308, + -0.713323 + ], + [ + -1.833016, + 3.359983, + -1.28775 + ], + [ + -1.989069, + 3.632416, + -1.305607 + ], + [ + 3.591254, + 0.542371, + 0.026146 + ], + [ + 3.364927, + 1.082572, + -0.342613 + ], + [ + -3.393759, + 3.866801, + -0.937266 + ], + [ + -4.124865, + 5.549529, + -0.161729 + ], + [ + -4.423423, + 5.687223, + 0.000103 + ], + [ + -1.496881, + 2.601785, + -1.114328 + ], + [ + -2.642297, + 6.496932, + -0.264175 + ], + [ + -3.684236, + 6.819423, + -0.320233 + ], + [ + -2.286996, + 3.167067, + -1.246651 + ], + [ + -1.624896, + 8.44848, + -0.530014 + ], + [ + -3.666787, + 2.159266, + 0.268149 + ], + [ + -2.402625, + 2.011243, + -0.56446 + ], + [ + -2.736166, + 2.259839, + -0.6943 + ], + [ + -2.168611, + 3.89078, + -1.292206 + ], + [ + -2.065956, + 3.345708, + -1.281346 + ], + [ + -2.778147, + 2.675605, + -0.995706 + ], + [ + -3.507431, + 4.513272, + -0.71829 + ], + [ + -2.301184, + 4.293911, + -1.238182 + ], + [ + 3.205808, + 0.211078, + 0.394349 + ], + [ + -2.129936, + 4.870577, + -1.080781 + ], + [ + -2.287977, + 2.496593, + -0.934069 + ], + [ + -2.701833, + 2.931814, + -1.114509 + ], + [ + 3.294795, + 0.50631, + -0.081062 + ], + [ + -2.552829, + 7.468771, + -0.021541 + ], + [ + 3.06721, + 0.944066, + -0.43074 + ], + [ + -2.86086, + 1.973622, + -0.303132 + ], + [ + -3.598818, + 5.419613, + -0.401645 + ], + [ + -1.524381, + 0.080156, + -1.61662 + ], + [ + -1.907291, + 2.646274, + -1.039438 + ], + [ + 2.950783, + 0.407562, + -0.105407 + ], + [ + -1.663048, + 1.655038, + -0.689787 + ], + [ + -1.728102, + 1.110064, + -0.635963 + ], + [ + -2.085823, + 7.686296, + -0.159745 + ], + [ + 2.883518, + 3.157009, + -1.30858 + ], + [ + -2.724116, + 0.417169, + -0.389719 + ], + [ + -1.788636, + 7.862672, + -0.346413 + ], + [ + -2.186418, + 1.249609, + -0.434583 + ], + [ + -3.092434, + 2.606657, + -0.860002 + ], + [ + -1.737314, + 3.874201, + -1.330986 + ], + [ + 2.564522, + 0.422967, + -0.390903 + ], + [ + 1.670782, + 3.538432, + -1.924753 + ], + [ + -2.338131, + 4.02578, + -1.286673 + ], + [ + -1.916516, + 4.054121, + -1.301788 + ], + [ + 2.87159, + 2.034949, + -1.267139 + ], + [ + -1.931518, + 3.062883, + -1.197227 + ], + [ + -0.816602, + 0.135682, + 3.104104 + ], + [ + 0.469392, + 0.213916, + -1.489608 + ], + [ + 2.574055, + 1.950091, + -1.514427 + ], + [ + 2.733595, + 2.682546, + -1.461213 + ], + [ + -1.915407, + 4.693647, + -1.151721 + ], + [ + -3.412883, + 5.867094, + -0.450528 + ], + [ + 2.28822, + 0.120432, + -0.04102 + ], + [ + 2.244477, + 0.14424, + -0.376933 + ], + [ + -1.676198, + 3.570698, + -1.328031 + ], + [ + -1.821193, + 4.366982, + -1.266271 + ], + [ + -1.552208, + 8.099221, + -0.53262 + ], + [ + -1.727419, + 2.39097, + -0.989456 + ], + [ + -2.468226, + 4.711663, + -1.069766 + ], + [ + -2.451669, + 6.113319, + -0.273788 + ], + [ + 2.635447, + 2.295842, + -1.518361 + ], + [ + -2.020809, + 8.150253, + -0.246714 + ], + [ + 2.292455, + 0.805596, + -1.3042 + ], + [ + 2.641556, + 1.65665, + -1.466962 + ], + [ + 2.409062, + 2.842538, + -1.635025 + ], + [ + 2.456682, + 1.459484, + -1.57543 + ], + [ + -1.691047, + 3.173582, + -1.247082 + ], + [ + -1.865642, + 1.957608, + -0.768683 + ], + [ + -3.401579, + 0.20407, + 0.100932 + ], + [ + 2.301981, + 1.7102, + -1.650461 + ], + [ + 2.342929, + 2.611944, + -1.690713 + ], + [ + -1.676111, + 2.923894, + -1.17835 + ], + [ + -2.992039, + 3.547631, + -1.118945 + ], + [ + -3.571677, + 6.504634, + -0.375455 + ], + [ + 2.141764, + 1.460869, + -1.702464 + ], + [ + -3.221958, + 5.146049, + -0.615632 + ], + [ + 2.19238, + 2.949367, + -1.747242 + ], + [ + 2.320791, + 2.232971, + -1.706842 + ], + [ + 2.088678, + 2.585235, + -1.813159 + ], + [ + -2.196404, + 0.592218, + -0.569709 + ], + [ + -2.120811, + 1.836483, + -0.62338 + ], + [ + -1.949935, + 2.271249, + -0.874128 + ], + [ + 2.235901, + 1.110183, + -1.510719 + ], + [ + 2.020157, + 3.241128, + -1.803917 + ], + [ + 2.054336, + 1.949394, + -1.792332 + ], + [ + -3.094117, + 4.996595, + -0.740238 + ], + [ + 2.038063, + 0.635949, + -1.402041 + ], + [ + 1.980644, + 1.684408, + -1.76778 + ], + [ + 1.587432, + 3.306542, + -1.991131 + ], + [ + 1.935322, + 0.976267, + -1.602208 + ], + [ + 1.922621, + 1.235522, + -1.698813 + ], + [ + 1.712495, + 1.911874, + -1.903234 + ], + [ + 1.912802, + 2.259273, + -1.888698 + ], + [ + 1.884367, + 0.355453, + -1.312633 + ], + [ + 1.676427, + 0.76283, + -1.539455 + ], + [ + 1.78453, + 2.83662, + -1.943035 + ], + [ + 1.697312, + 0.120281, + -1.150324 + ], + [ + 1.648318, + 2.484973, + -1.999505 + ], + [ + -4.051804, + 5.958472, + -0.231731 + ], + [ + -1.964823, + 1.464607, + -0.58115 + ], + [ + 1.55996, + 2.183486, + -1.971378 + ], + [ + 1.628125, + 1.045912, + -1.707832 + ], + [ + 1.701684, + 1.540428, + -1.827156 + ], + [ + 1.567475, + 4.869481, + -1.184665 + ], + [ + 1.432492, + 0.843779, + -1.648083 + ], + [ + 1.173837, + 2.978983, + -2.156687 + ], + [ + 1.235287, + 3.37975, + -2.09515 + ], + [ + 1.252589, + 1.525293, + -1.949205 + ], + [ + 1.159334, + 2.336379, + -2.105361 + ], + [ + 1.49061, + 2.695263, + -2.083216 + ], + [ + -4.122486, + 6.782604, + -0.02545 + ], + [ + 1.173388, + 0.279193, + -1.423418 + ], + [ + 1.505684, + 0.380815, + -1.414395 + ], + [ + 1.391423, + 1.343031, + -1.843557 + ], + [ + 1.263449, + 2.73225, + -2.144961 + ], + [ + 1.295858, + 0.597122, + -1.515628 + ], + [ + 1.245851, + 3.729126, + -1.993015 + ], + [ + -2.761439, + 6.23717, + -0.365856 + ], + [ + 0.978887, + 1.664888, + -2.046633 + ], + [ + 1.219542, + 0.982729, + -1.785486 + ], + [ + 1.315915, + 1.91748, + -2.02788 + ], + [ + -3.052746, + 2.127222, + -0.369082 + ], + [ + 0.977656, + 1.36223, + -1.944119 + ], + [ + 0.936122, + 3.39447, + -2.203007 + ], + [ + -2.740036, + 4.184702, + -1.122849 + ], + [ + 0.853581, + 2.864694, + -2.260847 + ], + [ + 0.719569, + 0.818762, + -1.763618 + ], + [ + 0.839115, + 1.159359, + -1.907943 + ], + [ + 0.932069, + 1.94559, + -2.117962 + ], + [ + 0.579321, + 3.326747, + -2.299369 + ], + [ + 0.86324, + 0.597822, + -1.565106 + ], + [ + 0.574567, + 1.158452, + -1.943123 + ], + [ + 0.525138, + 2.137252, + -2.213867 + ], + [ + 0.779941, + 2.342019, + -2.206157 + ], + [ + 0.915255, + 2.618102, + -2.209041 + ], + [ + 0.526426, + 3.02241, + -2.321826 + ], + [ + 0.495431, + 2.521396, + -2.295905 + ], + [ + 0.80799, + 3.156817, + -2.286432 + ], + [ + 0.273556, + 1.304936, + -2.012509 + ], + [ + 0.664326, + 1.530024, + -2.048722 + ], + [ + 0.219173, + 2.32907, + -2.323212 + ], + [ + 0.405324, + 0.695359, + -1.704884 + ], + [ + 0.398827, + 0.946649, + -1.843899 + ], + [ + 0.345109, + 1.608829, + -2.100174 + ], + [ + -2.356743, + 0.062032, + -0.4947 + ], + [ + -3.001084, + 0.27146, + 2.560034 + ], + [ + -2.064663, + 0.303055, + -0.697324 + ], + [ + 0.221271, + 3.174023, + -2.374399 + ], + [ + 0.195842, + 0.437865, + -1.621473 + ], + [ + -0.385613, + 0.297763, + 1.960096 + ], + [ + 1.999609, + 0.108928, + -0.79125 + ], + [ + 0.351698, + 9.227494, + -1.57565 + ], + [ + 0.021477, + 2.191913, + -2.309353 + ], + [ + 0.246381, + 2.836575, + -2.356365 + ], + [ + 1.543281, + 0.237539, + 1.901906 + ], + [ + 0.031881, + 9.147022, + -1.454203 + ], + [ + -0.001881, + 1.648503, + -2.108044 + ], + [ + 0.333423, + 1.907088, + -2.204533 + ], + [ + 0.044063, + 2.634032, + -2.368412 + ], + [ + -0.028148, + 3.053684, + -2.390082 + ], + [ + 0.02413, + 3.34297, + -2.36544 + ], + [ + -0.272645, + 9.02879, + -1.238685 + ], + [ + -0.006348, + 0.832044, + -1.758222 + ], + [ + -0.321105, + 1.458754, + -1.886313 + ], + [ + -0.153948, + 8.618809, + -1.105353 + ], + [ + -0.409303, + 1.137783, + -1.720556 + ], + [ + -0.410054, + 1.742789, + -1.957989 + ], + [ + -0.287905, + 2.380404, + -2.294509 + ], + [ + -0.261375, + 2.646629, + -2.356322 + ], + [ + -0.221986, + 3.215303, + -2.345844 + ], + [ + -0.31608, + 0.687581, + -1.71901 + ], + [ + -0.537705, + 0.855802, + -1.648585 + ], + [ + -0.142834, + 1.193053, + -1.87371 + ], + [ + -0.24371, + 2.044435, + -2.176958 + ], + [ + -0.437999, + 2.959748, + -2.299698 + ], + [ + -0.78895, + 0.176226, + -1.729046 + ], + [ + -0.608509, + 0.546932, + -1.734032 + ], + [ + -0.693698, + 4.478782, + -1.369372 + ], + [ + -0.669153, + 8.469645, + -0.911149 + ], + [ + -0.741857, + 1.082705, + -1.458474 + ], + [ + -0.554059, + 2.440325, + -2.141785 + ], + [ + 2.09261, + 0.153182, + 2.57581 + ], + [ + 1.792547, + 0.111794, + 2.563777 + ], + [ + 1.855787, + 0.189541, + 2.835089 + ], + [ + 1.492601, + 0.232246, + 2.987681 + ], + [ + -0.284918, + 0.236687, + 3.429738 + ], + [ + 2.604841, + 0.11997, + 1.01506 + ], + [ + 0.331271, + 0.168113, + 3.124031 + ], + [ + 0.280606, + 0.308368, + 2.495937 + ], + [ + 0.544591, + 0.325711, + 2.081274 + ], + [ + 0.193145, + 0.19154, + -0.977556 + ], + [ + 3.810099, + 0.42324, + 1.032202 + ], + [ + 3.54622, + 0.379245, + 1.392814 + ], + [ + 0.61402, + 0.276328, + 0.849356 + ], + [ + -1.198628, + 0.144953, + 2.911457 + ], + [ + 4.17199, + 0.68037, + 1.391526 + ], + [ + 0.88279, + 0.321339, + 2.059129 + ], + [ + 1.93035, + 0.109992, + 2.054154 + ], + [ + 1.620331, + 0.121986, + 2.37203 + ], + [ + 2.374812, + 0.10921, + 1.734876 + ], + [ + -0.031227, + 0.294412, + 2.593687 + ], + [ + 4.075018, + 0.561914, + 1.038065 + ], + [ + -0.570366, + 0.126583, + 2.975558 + ], + [ + 0.950052, + 0.318463, + 1.804012 + ], + [ + 1.130034, + 0.117125, + 0.98385 + ], + [ + 2.123049, + 0.08946, + 1.665911 + ], + [ + 2.087572, + 0.068621, + 0.335013 + ], + [ + 2.927337, + 0.167117, + 0.289611 + ], + [ + 0.528876, + 0.313434, + 3.205969 + ], + [ + 1.174911, + 0.162744, + 1.328262 + ], + [ + -4.88844, + 5.59535, + 1.661134 + ], + [ + -4.709607, + 5.165338, + 1.324082 + ], + [ + 0.871199, + 0.277021, + 1.263831 + ], + [ + -3.910877, + 2.349318, + 1.272269 + ], + [ + 1.56824, + 0.118605, + 2.768112 + ], + [ + 1.179176, + 0.152617, + -0.858003 + ], + [ + 1.634629, + 0.247872, + 2.128625 + ], + [ + -4.627425, + 5.126935, + 1.617836 + ], + [ + 3.845542, + 0.54907, + 1.45601 + ], + [ + 2.654006, + 0.165508, + 1.637169 + ], + [ + -0.678324, + 0.26488, + 1.974741 + ], + [ + 2.451139, + 0.100377, + 0.213768 + ], + [ + 0.633199, + 0.286719, + 0.403357 + ], + [ + -0.533042, + 0.2524, + 1.373267 + ], + [ + 0.99317, + 0.171106, + 0.624966 + ], + [ + -0.100063, + 0.306466, + 2.170225 + ], + [ + 1.245943, + 0.092351, + 0.661031 + ], + [ + 1.390414, + 0.198996, + -0.0864 + ], + [ + -4.457265, + 5.030531, + 2.138242 + ], + [ + 2.89776, + 0.146575, + 1.297468 + ], + [ + 1.802703, + 0.088824, + -0.490405 + ], + [ + 1.055447, + 0.309261, + 2.392437 + ], + [ + 2.300436, + 0.142429, + 2.104254 + ], + [ + 2.33399, + 0.187756, + 2.416935 + ], + [ + 2.325183, + 0.134349, + 0.574063 + ], + [ + 2.410924, + 0.370971, + 2.637115 + ], + [ + 1.132924, + 0.290511, + 3.061 + ], + [ + 1.764028, + 0.070212, + -0.80535 + ], + [ + 2.156994, + 0.397657, + 2.844061 + ], + [ + 0.920711, + 0.225527, + -0.882456 + ], + [ + -4.552135, + 5.24096, + 2.85514 + ], + [ + 0.210016, + 0.309396, + 2.064296 + ], + [ + 0.612067, + 0.136815, + -1.086002 + ], + [ + 3.150236, + 0.426757, + 1.802703 + ], + [ + -0.24824, + 0.282258, + 1.470997 + ], + [ + 0.974269, + 0.301311, + -0.640898 + ], + [ + -4.401413, + 5.03966, + 2.535553 + ], + [ + 0.644319, + 0.274006, + -0.817806 + ], + [ + 0.332922, + 0.309077, + 0.108474 + ], + [ + 3.610001, + 0.317447, + 0.689353 + ], + [ + 3.335681, + 0.358195, + 0.118477 + ], + [ + 0.623544, + 0.318983, + -0.4193 + ], + [ + -0.11012, + 0.307747, + 1.831331 + ], + [ + -0.407528, + 0.291044, + 2.282935 + ], + [ + 0.069783, + 0.285095, + 0.950289 + ], + [ + 0.970135, + 0.310392, + -0.283742 + ], + [ + 0.840564, + 0.306898, + 0.098854 + ], + [ + -0.541827, + 0.267753, + 1.683795 + ], + [ + -3.956082, + 4.55713, + 2.297164 + ], + [ + -4.161036, + 2.834481, + 1.64183 + ], + [ + -4.093952, + 4.977551, + 2.747747 + ], + [ + 2.661819, + 0.261867, + 1.926145 + ], + [ + -3.749926, + 2.161875, + 0.895238 + ], + [ + -2.497776, + 1.3629, + 0.791855 + ], + [ + 0.691482, + 0.304968, + 1.582939 + ], + [ + -4.013193, + 4.830963, + 2.4769 + ], + [ + -3.639585, + 2.091265, + 1.304415 + ], + [ + -3.9767, + 2.563053, + 1.6284 + ], + [ + -3.979915, + 2.788616, + 1.977977 + ], + [ + 0.388782, + 0.312656, + 1.709168 + ], + [ + -3.40873, + 1.877324, + 0.851652 + ], + [ + -3.671637, + 5.136974, + 3.170734 + ], + [ + -3.12964, + 1.852012, + 0.157682 + ], + [ + -3.629687, + 4.852698, + 2.686837 + ], + [ + -3.196164, + 1.793459, + 0.452804 + ], + [ + -3.746338, + 2.31357, + 1.648551 + ], + [ + 2.992192, + 0.125251, + 0.575976 + ], + [ + -3.254051, + 0.054431, + 0.314152 + ], + [ + -3.474644, + 1.925288, + 1.134116 + ], + [ + -3.418372, + 2.022882, + 1.578901 + ], + [ + -2.920955, + 1.705403, + 0.29842 + ], + [ + -3.57229, + 2.152022, + 1.607572 + ], + [ + -3.251259, + 0.09013, + -0.106174 + ], + [ + -3.299952, + 1.877781, + 1.348623 + ], + [ + -3.666819, + 2.441459, + 2.004838 + ], + [ + -2.912646, + 1.824748, + -0.045348 + ], + [ + -3.399511, + 2.479484, + 2.340393 + ], + [ + -3.009754, + 0.015286, + 0.075567 + ], + [ + -3.381443, + 2.316937, + 2.156923 + ], + [ + -3.352801, + 2.133341, + 1.857366 + ], + [ + -3.01788, + 1.687685, + 0.645867 + ], + [ + -2.931857, + 1.678712, + 1.158472 + ], + [ + -3.301008, + 0.08836, + 0.591001 + ], + [ + 1.358025, + 0.19795, + 1.599144 + ], + [ + -2.999565, + 1.845016, + 1.618396 + ], + [ + -2.767957, + 0.028397, + -0.196436 + ], + [ + -2.93962, + 2.078779, + 2.140593 + ], + [ + -3.346648, + 2.674056, + 2.518097 + ], + [ + 3.324322, + 0.20822, + 0.628605 + ], + [ + 3.091677, + 0.137202, + 0.9345 + ], + [ + -2.881807, + 0.009952, + 0.318439 + ], + [ + -2.764946, + 1.786619, + 1.693439 + ], + [ + -2.905542, + 1.932343, + 1.900002 + ], + [ + -3.140854, + 2.271384, + 2.274946 + ], + [ + -2.88995, + 2.487856, + 2.574759 + ], + [ + -2.367194, + -0.000943, + -0.15576 + ], + [ + -3.050738, + 0.068703, + 0.742988 + ], + [ + -2.759525, + 1.55679, + 0.877782 + ], + [ + -3.151775, + 2.48054, + 2.482749 + ], + [ + -2.578618, + -0.002885, + 0.165716 + ], + [ + -2.651618, + 1.877246, + 1.981189 + ], + [ + -2.933973, + 0.133731, + 1.631023 + ], + [ + 1.047628, + 0.100284, + -1.085248 + ], + [ + -1.585123, + 0.062083, + -1.394896 + ], + [ + -2.287917, + -0.002671, + 0.214434 + ], + [ + -2.524899, + 0.007481, + 0.471788 + ], + [ + -2.815492, + 2.188198, + 2.343294 + ], + [ + -2.095142, + -0.003149, + -0.094574 + ], + [ + -2.172686, + -0.000133, + 0.47963 + ], + [ + -2.732704, + 0.074306, + 1.742079 + ], + [ + -2.49653, + 2.145668, + 2.42691 + ], + [ + -1.343683, + 0.047721, + -1.506391 + ], + [ + -2.581185, + 0.048703, + 0.975528 + ], + [ + -2.905101, + 0.083158, + 2.010052 + ], + [ + -2.601514, + 2.007801, + 2.223089 + ], + [ + -2.339464, + 0.02634, + 1.484304 + ], + [ + -2.907873, + 0.10367, + 2.378149 + ], + [ + -1.368796, + 0.062516, + -1.049125 + ], + [ + -1.93244, + 0.02443, + -0.427603 + ], + [ + -2.705081, + 0.060513, + 2.303802 + ], + [ + 3.372155, + 0.206274, + 0.892293 + ], + [ + -1.761827, + 0.093202, + -1.037404 + ], + [ + -1.700667, + 0.0397, + -0.614221 + ], + [ + -1.872291, + 0.011979, + -0.135753 + ], + [ + -1.929257, + 0.074005, + 0.728999 + ], + [ + -2.520128, + 0.049665, + 1.99054 + ], + [ + -2.699411, + 0.10092, + 2.603116 + ], + [ + 3.211701, + 0.27302, + 1.423357 + ], + [ + -1.445362, + 0.1371, + -0.626491 + ], + [ + 2.921332, + 0.259112, + 1.645525 + ], + [ + -0.993242, + 0.058686, + -1.408916 + ], + [ + -0.944986, + 0.157541, + -1.097665 + ], + [ + -2.154301, + 0.032749, + 1.882001 + ], + [ + -2.108789, + 1.988557, + 2.442673 + ], + [ + -1.015659, + 0.25497, + -0.416665 + ], + [ + -1.898411, + 0.015872, + 0.16715 + ], + [ + -1.585517, + 0.027121, + 0.453445 + ], + [ + -2.311105, + 0.061264, + 2.327061 + ], + [ + -2.637042, + 0.152224, + 2.832201 + ], + [ + -2.087515, + 2.292972, + 2.617585 + ], + [ + -0.750611, + 0.056697, + -1.504516 + ], + [ + -0.472029, + 0.075654, + -1.360203 + ], + [ + -0.710798, + 0.139244, + -1.183863 + ], + [ + -0.97755, + 0.26052, + -0.831167 + ], + [ + -0.655814, + 0.260843, + -0.880068 + ], + [ + -0.897513, + 0.275537, + -0.133042 + ], + [ + -2.049194, + 0.084947, + 2.455422 + ], + [ + -0.177837, + 0.076362, + -1.449009 + ], + [ + -0.553393, + 0.279083, + -0.59573 + ], + [ + -1.788636, + 0.06163, + 2.231198 + ], + [ + -0.34761, + 0.255578, + -0.999614 + ], + [ + -1.398589, + 0.036482, + 0.65871 + ], + [ + -1.133918, + 0.05617, + 0.69473 + ], + [ + -1.43369, + 0.058226, + 1.977865 + ], + [ + -2.505459, + 1.492266, + 1.19295 + ] +]; +var cells = bunny.cells = [ + [ + 2, + 1661, + 3 + ], + [ + 1676, + 7, + 6 + ], + [ + 712, + 1694, + 9 + ], + [ + 3, + 1674, + 1662 + ], + [ + 11, + 1672, + 0 + ], + [ + 1705, + 0, + 1 + ], + [ + 5, + 6, + 1674 + ], + [ + 4, + 5, + 1674 + ], + [ + 7, + 8, + 712 + ], + [ + 2, + 1662, + 10 + ], + [ + 1, + 10, + 1705 + ], + [ + 11, + 1690, + 1672 + ], + [ + 1705, + 11, + 0 + ], + [ + 5, + 1676, + 6 + ], + [ + 7, + 9, + 6 + ], + [ + 7, + 712, + 9 + ], + [ + 2, + 3, + 1662 + ], + [ + 3, + 4, + 1674 + ], + [ + 1, + 2, + 10 + ], + [ + 12, + 82, + 1837 + ], + [ + 1808, + 12, + 1799 + ], + [ + 1808, + 1799, + 1796 + ], + [ + 12, + 861, + 82 + ], + [ + 861, + 1808, + 13 + ], + [ + 1808, + 861, + 12 + ], + [ + 1799, + 12, + 1816 + ], + [ + 1680, + 14, + 1444 + ], + [ + 15, + 17, + 16 + ], + [ + 14, + 1678, + 1700 + ], + [ + 16, + 17, + 1679 + ], + [ + 15, + 1660, + 17 + ], + [ + 14, + 1084, + 1678 + ], + [ + 15, + 1708, + 18 + ], + [ + 15, + 18, + 1660 + ], + [ + 1680, + 1084, + 14 + ], + [ + 1680, + 15, + 1084 + ], + [ + 15, + 1680, + 1708 + ], + [ + 793, + 813, + 119 + ], + [ + 1076, + 793, + 119 + ], + [ + 1076, + 1836, + 22 + ], + [ + 23, + 19, + 20 + ], + [ + 21, + 1076, + 22 + ], + [ + 21, + 22, + 23 + ], + [ + 23, + 20, + 21 + ], + [ + 1076, + 119, + 1836 + ], + [ + 806, + 634, + 470 + ], + [ + 432, + 1349, + 806 + ], + [ + 251, + 42, + 125 + ], + [ + 809, + 1171, + 791 + ], + [ + 953, + 631, + 827 + ], + [ + 634, + 1210, + 1176 + ], + [ + 157, + 1832, + 1834 + ], + [ + 56, + 219, + 53 + ], + [ + 126, + 38, + 83 + ], + [ + 37, + 85, + 43 + ], + [ + 59, + 1151, + 1154 + ], + [ + 83, + 75, + 41 + ], + [ + 77, + 85, + 138 + ], + [ + 201, + 948, + 46 + ], + [ + 1362, + 36, + 37 + ], + [ + 452, + 775, + 885 + ], + [ + 1237, + 95, + 104 + ], + [ + 966, + 963, + 1262 + ], + [ + 85, + 77, + 43 + ], + [ + 36, + 85, + 37 + ], + [ + 1018, + 439, + 1019 + ], + [ + 41, + 225, + 481 + ], + [ + 85, + 83, + 127 + ], + [ + 93, + 83, + 41 + ], + [ + 935, + 972, + 962 + ], + [ + 116, + 93, + 100 + ], + [ + 98, + 82, + 813 + ], + [ + 41, + 75, + 225 + ], + [ + 298, + 751, + 54 + ], + [ + 1021, + 415, + 1018 + ], + [ + 77, + 138, + 128 + ], + [ + 766, + 823, + 1347 + ], + [ + 593, + 121, + 573 + ], + [ + 905, + 885, + 667 + ], + [ + 786, + 744, + 747 + ], + [ + 100, + 41, + 107 + ], + [ + 604, + 334, + 765 + ], + [ + 779, + 450, + 825 + ], + [ + 968, + 962, + 969 + ], + [ + 225, + 365, + 481 + ], + [ + 365, + 283, + 196 + ], + [ + 161, + 160, + 303 + ], + [ + 875, + 399, + 158 + ], + [ + 328, + 1817, + 954 + ], + [ + 62, + 61, + 1079 + ], + [ + 358, + 81, + 72 + ], + [ + 74, + 211, + 133 + ], + [ + 160, + 161, + 138 + ], + [ + 91, + 62, + 1079 + ], + [ + 167, + 56, + 1405 + ], + [ + 56, + 167, + 219 + ], + [ + 913, + 914, + 48 + ], + [ + 344, + 57, + 102 + ], + [ + 43, + 77, + 128 + ], + [ + 1075, + 97, + 1079 + ], + [ + 389, + 882, + 887 + ], + [ + 219, + 108, + 53 + ], + [ + 1242, + 859, + 120 + ], + [ + 604, + 840, + 618 + ], + [ + 754, + 87, + 762 + ], + [ + 197, + 36, + 1362 + ], + [ + 1439, + 88, + 1200 + ], + [ + 1652, + 304, + 89 + ], + [ + 81, + 44, + 940 + ], + [ + 445, + 463, + 151 + ], + [ + 717, + 520, + 92 + ], + [ + 129, + 116, + 100 + ], + [ + 1666, + 1811, + 624 + ], + [ + 1079, + 97, + 91 + ], + [ + 62, + 91, + 71 + ], + [ + 688, + 898, + 526 + ], + [ + 463, + 74, + 133 + ], + [ + 278, + 826, + 99 + ], + [ + 961, + 372, + 42 + ], + [ + 799, + 94, + 1007 + ], + [ + 100, + 93, + 41 + ], + [ + 1314, + 943, + 1301 + ], + [ + 184, + 230, + 109 + ], + [ + 875, + 1195, + 231 + ], + [ + 133, + 176, + 189 + ], + [ + 751, + 755, + 826 + ], + [ + 101, + 102, + 57 + ], + [ + 1198, + 513, + 117 + ], + [ + 748, + 518, + 97 + ], + [ + 1145, + 1484, + 1304 + ], + [ + 358, + 658, + 81 + ], + [ + 971, + 672, + 993 + ], + [ + 445, + 151, + 456 + ], + [ + 252, + 621, + 122 + ], + [ + 36, + 271, + 126 + ], + [ + 85, + 36, + 126 + ], + [ + 116, + 83, + 93 + ], + [ + 141, + 171, + 1747 + ], + [ + 1081, + 883, + 103 + ], + [ + 1398, + 1454, + 149 + ], + [ + 457, + 121, + 593 + ], + [ + 127, + 116, + 303 + ], + [ + 697, + 70, + 891 + ], + [ + 457, + 891, + 1652 + ], + [ + 1058, + 1668, + 112 + ], + [ + 518, + 130, + 97 + ], + [ + 214, + 319, + 131 + ], + [ + 185, + 1451, + 1449 + ], + [ + 463, + 133, + 516 + ], + [ + 1428, + 123, + 177 + ], + [ + 113, + 862, + 561 + ], + [ + 215, + 248, + 136 + ], + [ + 186, + 42, + 251 + ], + [ + 127, + 83, + 116 + ], + [ + 160, + 85, + 127 + ], + [ + 162, + 129, + 140 + ], + [ + 154, + 169, + 1080 + ], + [ + 169, + 170, + 1080 + ], + [ + 210, + 174, + 166 + ], + [ + 1529, + 1492, + 1524 + ], + [ + 450, + 875, + 231 + ], + [ + 399, + 875, + 450 + ], + [ + 171, + 141, + 170 + ], + [ + 113, + 1155, + 452 + ], + [ + 131, + 319, + 360 + ], + [ + 44, + 175, + 904 + ], + [ + 452, + 872, + 113 + ], + [ + 746, + 754, + 407 + ], + [ + 147, + 149, + 150 + ], + [ + 309, + 390, + 1148 + ], + [ + 53, + 186, + 283 + ], + [ + 757, + 158, + 797 + ], + [ + 303, + 129, + 162 + ], + [ + 429, + 303, + 162 + ], + [ + 154, + 168, + 169 + ], + [ + 673, + 164, + 193 + ], + [ + 38, + 271, + 75 + ], + [ + 320, + 288, + 1022 + ], + [ + 246, + 476, + 173 + ], + [ + 175, + 548, + 904 + ], + [ + 182, + 728, + 456 + ], + [ + 199, + 170, + 169 + ], + [ + 168, + 199, + 169 + ], + [ + 199, + 171, + 170 + ], + [ + 184, + 238, + 230 + ], + [ + 246, + 247, + 180 + ], + [ + 1496, + 1483, + 1467 + ], + [ + 147, + 150, + 148 + ], + [ + 828, + 472, + 445 + ], + [ + 53, + 108, + 186 + ], + [ + 56, + 53, + 271 + ], + [ + 186, + 961, + 42 + ], + [ + 1342, + 391, + 57 + ], + [ + 1664, + 157, + 1834 + ], + [ + 1070, + 204, + 178 + ], + [ + 178, + 204, + 179 + ], + [ + 285, + 215, + 295 + ], + [ + 692, + 55, + 360 + ], + [ + 192, + 193, + 286 + ], + [ + 359, + 673, + 209 + ], + [ + 586, + 195, + 653 + ], + [ + 121, + 89, + 573 + ], + [ + 202, + 171, + 199 + ], + [ + 238, + 515, + 311 + ], + [ + 174, + 210, + 240 + ], + [ + 174, + 105, + 166 + ], + [ + 717, + 276, + 595 + ], + [ + 1155, + 1149, + 452 + ], + [ + 1405, + 56, + 197 + ], + [ + 53, + 283, + 30 + ], + [ + 75, + 53, + 30 + ], + [ + 45, + 235, + 1651 + ], + [ + 210, + 166, + 490 + ], + [ + 181, + 193, + 192 + ], + [ + 185, + 620, + 217 + ], + [ + 26, + 798, + 759 + ], + [ + 1070, + 226, + 204 + ], + [ + 220, + 187, + 179 + ], + [ + 220, + 168, + 187 + ], + [ + 202, + 222, + 171 + ], + [ + 359, + 209, + 181 + ], + [ + 182, + 456, + 736 + ], + [ + 964, + 167, + 1405 + ], + [ + 76, + 250, + 414 + ], + [ + 807, + 1280, + 1833 + ], + [ + 70, + 883, + 1652 + ], + [ + 227, + 179, + 204 + ], + [ + 221, + 199, + 168 + ], + [ + 221, + 202, + 199 + ], + [ + 360, + 494, + 131 + ], + [ + 214, + 241, + 319 + ], + [ + 105, + 247, + 166 + ], + [ + 205, + 203, + 260 + ], + [ + 388, + 480, + 939 + ], + [ + 482, + 855, + 211 + ], + [ + 8, + 807, + 1833 + ], + [ + 226, + 255, + 204 + ], + [ + 228, + 221, + 168 + ], + [ + 166, + 173, + 490 + ], + [ + 701, + 369, + 702 + ], + [ + 211, + 855, + 262 + ], + [ + 631, + 920, + 630 + ], + [ + 1448, + 1147, + 1584 + ], + [ + 255, + 227, + 204 + ], + [ + 237, + 220, + 179 + ], + [ + 228, + 168, + 220 + ], + [ + 222, + 256, + 555 + ], + [ + 215, + 259, + 279 + ], + [ + 126, + 271, + 38 + ], + [ + 108, + 50, + 186 + ], + [ + 227, + 236, + 179 + ], + [ + 236, + 237, + 179 + ], + [ + 220, + 237, + 228 + ], + [ + 228, + 202, + 221 + ], + [ + 256, + 222, + 202 + ], + [ + 555, + 256, + 229 + ], + [ + 259, + 152, + 279 + ], + [ + 27, + 1296, + 31 + ], + [ + 186, + 50, + 961 + ], + [ + 961, + 234, + 372 + ], + [ + 1651, + 235, + 812 + ], + [ + 1572, + 1147, + 1448 + ], + [ + 255, + 226, + 1778 + ], + [ + 255, + 236, + 227 + ], + [ + 256, + 257, + 229 + ], + [ + 106, + 184, + 109 + ], + [ + 241, + 410, + 188 + ], + [ + 177, + 578, + 620 + ], + [ + 209, + 673, + 181 + ], + [ + 1136, + 1457, + 79 + ], + [ + 1507, + 245, + 718 + ], + [ + 255, + 273, + 236 + ], + [ + 275, + 410, + 241 + ], + [ + 206, + 851, + 250 + ], + [ + 1459, + 253, + 1595 + ], + [ + 1406, + 677, + 1650 + ], + [ + 228, + 274, + 202 + ], + [ + 202, + 281, + 256 + ], + [ + 348, + 239, + 496 + ], + [ + 205, + 172, + 203 + ], + [ + 369, + 248, + 702 + ], + [ + 261, + 550, + 218 + ], + [ + 261, + 465, + 550 + ], + [ + 574, + 243, + 566 + ], + [ + 921, + 900, + 1220 + ], + [ + 291, + 273, + 255 + ], + [ + 348, + 238, + 265 + ], + [ + 109, + 230, + 194 + ], + [ + 149, + 380, + 323 + ], + [ + 443, + 270, + 421 + ], + [ + 272, + 291, + 255 + ], + [ + 274, + 228, + 237 + ], + [ + 274, + 292, + 202 + ], + [ + 281, + 257, + 256 + ], + [ + 276, + 543, + 341 + ], + [ + 152, + 259, + 275 + ], + [ + 1111, + 831, + 249 + ], + [ + 632, + 556, + 364 + ], + [ + 299, + 273, + 291 + ], + [ + 299, + 236, + 273 + ], + [ + 280, + 237, + 236 + ], + [ + 202, + 292, + 281 + ], + [ + 247, + 246, + 173 + ], + [ + 282, + 49, + 66 + ], + [ + 1620, + 1233, + 1553 + ], + [ + 299, + 280, + 236 + ], + [ + 280, + 305, + 237 + ], + [ + 237, + 305, + 274 + ], + [ + 306, + 292, + 274 + ], + [ + 330, + 257, + 281 + ], + [ + 246, + 194, + 264 + ], + [ + 166, + 247, + 173 + ], + [ + 912, + 894, + 896 + ], + [ + 611, + 320, + 244 + ], + [ + 1154, + 1020, + 907 + ], + [ + 969, + 962, + 290 + ], + [ + 272, + 299, + 291 + ], + [ + 305, + 318, + 274 + ], + [ + 145, + 212, + 240 + ], + [ + 164, + 248, + 285 + ], + [ + 259, + 277, + 275 + ], + [ + 193, + 164, + 295 + ], + [ + 269, + 240, + 210 + ], + [ + 1033, + 288, + 320 + ], + [ + 46, + 948, + 206 + ], + [ + 336, + 280, + 299 + ], + [ + 330, + 281, + 292 + ], + [ + 257, + 307, + 300 + ], + [ + 369, + 136, + 248 + ], + [ + 145, + 240, + 269 + ], + [ + 502, + 84, + 465 + ], + [ + 193, + 295, + 286 + ], + [ + 164, + 285, + 295 + ], + [ + 282, + 302, + 49 + ], + [ + 161, + 303, + 429 + ], + [ + 318, + 306, + 274 + ], + [ + 306, + 330, + 292 + ], + [ + 315, + 257, + 330 + ], + [ + 315, + 307, + 257 + ], + [ + 307, + 352, + 300 + ], + [ + 300, + 352, + 308 + ], + [ + 275, + 277, + 403 + ], + [ + 353, + 1141, + 333 + ], + [ + 1420, + 425, + 47 + ], + [ + 611, + 313, + 320 + ], + [ + 85, + 126, + 83 + ], + [ + 128, + 1180, + 43 + ], + [ + 303, + 116, + 129 + ], + [ + 280, + 314, + 305 + ], + [ + 314, + 318, + 305 + ], + [ + 190, + 181, + 242 + ], + [ + 203, + 214, + 131 + ], + [ + 820, + 795, + 815 + ], + [ + 322, + 299, + 272 + ], + [ + 322, + 336, + 299 + ], + [ + 315, + 339, + 307 + ], + [ + 172, + 152, + 617 + ], + [ + 172, + 214, + 203 + ], + [ + 321, + 1033, + 320 + ], + [ + 1401, + 941, + 946 + ], + [ + 85, + 160, + 138 + ], + [ + 976, + 454, + 951 + ], + [ + 747, + 60, + 786 + ], + [ + 317, + 322, + 272 + ], + [ + 339, + 352, + 307 + ], + [ + 266, + 33, + 867 + ], + [ + 163, + 224, + 218 + ], + [ + 247, + 614, + 180 + ], + [ + 648, + 639, + 553 + ], + [ + 388, + 172, + 205 + ], + [ + 611, + 345, + 313 + ], + [ + 313, + 345, + 320 + ], + [ + 160, + 127, + 303 + ], + [ + 454, + 672, + 951 + ], + [ + 317, + 329, + 322 + ], + [ + 314, + 280, + 336 + ], + [ + 306, + 338, + 330 + ], + [ + 330, + 339, + 315 + ], + [ + 1236, + 115, + 436 + ], + [ + 342, + 321, + 320 + ], + [ + 1046, + 355, + 328 + ], + [ + 328, + 346, + 325 + ], + [ + 325, + 346, + 317 + ], + [ + 367, + 314, + 336 + ], + [ + 314, + 337, + 318 + ], + [ + 337, + 306, + 318 + ], + [ + 338, + 343, + 330 + ], + [ + 342, + 320, + 345 + ], + [ + 355, + 349, + 328 + ], + [ + 346, + 329, + 317 + ], + [ + 347, + 336, + 322 + ], + [ + 314, + 362, + 337 + ], + [ + 330, + 343, + 339 + ], + [ + 340, + 308, + 352 + ], + [ + 135, + 906, + 1022 + ], + [ + 239, + 156, + 491 + ], + [ + 194, + 230, + 486 + ], + [ + 40, + 1015, + 1003 + ], + [ + 321, + 355, + 1046 + ], + [ + 329, + 382, + 322 + ], + [ + 382, + 347, + 322 + ], + [ + 347, + 367, + 336 + ], + [ + 337, + 371, + 306 + ], + [ + 306, + 371, + 338 + ], + [ + 1681, + 296, + 1493 + ], + [ + 286, + 172, + 388 + ], + [ + 230, + 348, + 486 + ], + [ + 348, + 183, + 486 + ], + [ + 384, + 332, + 830 + ], + [ + 328, + 349, + 346 + ], + [ + 367, + 362, + 314 + ], + [ + 371, + 343, + 338 + ], + [ + 339, + 351, + 352 + ], + [ + 57, + 344, + 78 + ], + [ + 342, + 355, + 321 + ], + [ + 386, + 346, + 349 + ], + [ + 386, + 350, + 346 + ], + [ + 346, + 350, + 329 + ], + [ + 347, + 366, + 367 + ], + [ + 343, + 363, + 339 + ], + [ + 323, + 380, + 324 + ], + [ + 152, + 275, + 241 + ], + [ + 345, + 1045, + 342 + ], + [ + 350, + 374, + 329 + ], + [ + 339, + 363, + 351 + ], + [ + 234, + 340, + 352 + ], + [ + 353, + 361, + 354 + ], + [ + 40, + 34, + 1015 + ], + [ + 373, + 355, + 342 + ], + [ + 373, + 349, + 355 + ], + [ + 374, + 382, + 329 + ], + [ + 366, + 347, + 382 + ], + [ + 371, + 363, + 343 + ], + [ + 351, + 379, + 352 + ], + [ + 379, + 372, + 352 + ], + [ + 372, + 234, + 352 + ], + [ + 156, + 190, + 491 + ], + [ + 319, + 241, + 692 + ], + [ + 354, + 361, + 31 + ], + [ + 366, + 377, + 367 + ], + [ + 363, + 379, + 351 + ], + [ + 133, + 590, + 516 + ], + [ + 197, + 56, + 271 + ], + [ + 1045, + 370, + 342 + ], + [ + 370, + 373, + 342 + ], + [ + 374, + 350, + 386 + ], + [ + 377, + 366, + 382 + ], + [ + 367, + 395, + 362 + ], + [ + 400, + 337, + 362 + ], + [ + 400, + 371, + 337 + ], + [ + 378, + 363, + 371 + ], + [ + 106, + 109, + 614 + ], + [ + 181, + 673, + 193 + ], + [ + 953, + 920, + 631 + ], + [ + 376, + 349, + 373 + ], + [ + 376, + 386, + 349 + ], + [ + 378, + 379, + 363 + ], + [ + 224, + 375, + 218 + ], + [ + 279, + 152, + 172 + ], + [ + 361, + 619, + 381 + ], + [ + 1347, + 823, + 795 + ], + [ + 760, + 857, + 384 + ], + [ + 392, + 374, + 386 + ], + [ + 394, + 395, + 367 + ], + [ + 383, + 371, + 400 + ], + [ + 383, + 378, + 371 + ], + [ + 218, + 375, + 261 + ], + [ + 197, + 271, + 36 + ], + [ + 414, + 454, + 976 + ], + [ + 385, + 376, + 373 + ], + [ + 1051, + 382, + 374 + ], + [ + 387, + 394, + 367 + ], + [ + 377, + 387, + 367 + ], + [ + 395, + 400, + 362 + ], + [ + 279, + 172, + 295 + ], + [ + 30, + 365, + 225 + ], + [ + 450, + 231, + 825 + ], + [ + 385, + 373, + 370 + ], + [ + 398, + 374, + 392 + ], + [ + 1051, + 377, + 382 + ], + [ + 396, + 378, + 383 + ], + [ + 348, + 496, + 183 + ], + [ + 295, + 172, + 286 + ], + [ + 357, + 269, + 495 + ], + [ + 1148, + 390, + 1411 + ], + [ + 75, + 30, + 225 + ], + [ + 206, + 76, + 54 + ], + [ + 412, + 386, + 376 + ], + [ + 412, + 392, + 386 + ], + [ + 396, + 383, + 400 + ], + [ + 651, + 114, + 878 + ], + [ + 123, + 1241, + 506 + ], + [ + 238, + 311, + 265 + ], + [ + 381, + 653, + 29 + ], + [ + 618, + 815, + 334 + ], + [ + 427, + 1032, + 411 + ], + [ + 298, + 414, + 976 + ], + [ + 791, + 332, + 384 + ], + [ + 129, + 100, + 140 + ], + [ + 412, + 404, + 392 + ], + [ + 392, + 404, + 398 + ], + [ + 140, + 107, + 360 + ], + [ + 395, + 394, + 400 + ], + [ + 423, + 379, + 378 + ], + [ + 385, + 412, + 376 + ], + [ + 406, + 94, + 58 + ], + [ + 419, + 415, + 1021 + ], + [ + 422, + 423, + 378 + ], + [ + 423, + 125, + 379 + ], + [ + 258, + 508, + 238 + ], + [ + 311, + 156, + 265 + ], + [ + 213, + 287, + 491 + ], + [ + 449, + 411, + 1024 + ], + [ + 412, + 1068, + 404 + ], + [ + 55, + 140, + 360 + ], + [ + 76, + 414, + 54 + ], + [ + 394, + 416, + 400 + ], + [ + 400, + 416, + 396 + ], + [ + 422, + 378, + 396 + ], + [ + 1258, + 796, + 789 + ], + [ + 427, + 411, + 449 + ], + [ + 427, + 297, + 1032 + ], + [ + 1385, + 1366, + 483 + ], + [ + 417, + 448, + 284 + ], + [ + 1507, + 341, + 245 + ], + [ + 162, + 140, + 444 + ], + [ + 658, + 44, + 81 + ], + [ + 433, + 125, + 423 + ], + [ + 438, + 251, + 125 + ], + [ + 429, + 162, + 439 + ], + [ + 1342, + 57, + 1348 + ], + [ + 765, + 766, + 442 + ], + [ + 697, + 891, + 695 + ], + [ + 1057, + 396, + 416 + ], + [ + 440, + 423, + 422 + ], + [ + 440, + 433, + 423 + ], + [ + 433, + 438, + 125 + ], + [ + 438, + 196, + 251 + ], + [ + 74, + 482, + 211 + ], + [ + 1136, + 79, + 144 + ], + [ + 29, + 195, + 424 + ], + [ + 242, + 1004, + 492 + ], + [ + 57, + 757, + 28 + ], + [ + 414, + 298, + 54 + ], + [ + 238, + 348, + 230 + ], + [ + 224, + 163, + 124 + ], + [ + 295, + 215, + 279 + ], + [ + 495, + 269, + 490 + ], + [ + 449, + 446, + 427 + ], + [ + 446, + 297, + 427 + ], + [ + 1020, + 1163, + 909 + ], + [ + 128, + 138, + 419 + ], + [ + 66, + 980, + 443 + ], + [ + 415, + 439, + 1018 + ], + [ + 111, + 396, + 1057 + ], + [ + 111, + 422, + 396 + ], + [ + 840, + 249, + 831 + ], + [ + 593, + 664, + 596 + ], + [ + 218, + 550, + 155 + ], + [ + 109, + 194, + 180 + ], + [ + 483, + 268, + 855 + ], + [ + 161, + 415, + 419 + ], + [ + 1737, + 232, + 428 + ], + [ + 360, + 107, + 494 + ], + [ + 1006, + 1011, + 410 + ], + [ + 444, + 140, + 55 + ], + [ + 919, + 843, + 430 + ], + [ + 190, + 242, + 213 + ], + [ + 275, + 403, + 410 + ], + [ + 131, + 494, + 488 + ], + [ + 449, + 663, + 446 + ], + [ + 138, + 161, + 419 + ], + [ + 128, + 419, + 34 + ], + [ + 439, + 162, + 444 + ], + [ + 460, + 440, + 422 + ], + [ + 440, + 438, + 433 + ], + [ + 472, + 74, + 445 + ], + [ + 491, + 190, + 213 + ], + [ + 238, + 508, + 515 + ], + [ + 46, + 206, + 54 + ], + [ + 972, + 944, + 962 + ], + [ + 1241, + 1428, + 1284 + ], + [ + 111, + 460, + 422 + ], + [ + 470, + 432, + 806 + ], + [ + 248, + 164, + 702 + ], + [ + 1025, + 467, + 453 + ], + [ + 553, + 1235, + 648 + ], + [ + 263, + 114, + 881 + ], + [ + 267, + 293, + 896 + ], + [ + 469, + 438, + 440 + ], + [ + 455, + 196, + 438 + ], + [ + 287, + 242, + 492 + ], + [ + 239, + 265, + 156 + ], + [ + 213, + 242, + 287 + ], + [ + 1684, + 746, + 63 + ], + [ + 663, + 474, + 446 + ], + [ + 415, + 161, + 429 + ], + [ + 140, + 100, + 107 + ], + [ + 1055, + 459, + 467 + ], + [ + 469, + 455, + 438 + ], + [ + 259, + 542, + 277 + ], + [ + 446, + 474, + 466 + ], + [ + 446, + 466, + 447 + ], + [ + 439, + 444, + 1019 + ], + [ + 614, + 109, + 180 + ], + [ + 190, + 359, + 181 + ], + [ + 156, + 497, + 190 + ], + [ + 726, + 474, + 663 + ], + [ + 1023, + 458, + 459 + ], + [ + 461, + 440, + 460 + ], + [ + 269, + 210, + 490 + ], + [ + 246, + 180, + 194 + ], + [ + 590, + 133, + 189 + ], + [ + 163, + 218, + 155 + ], + [ + 467, + 468, + 453 + ], + [ + 1063, + 1029, + 111 + ], + [ + 111, + 1029, + 460 + ], + [ + 1029, + 464, + 460 + ], + [ + 461, + 469, + 440 + ], + [ + 150, + 149, + 323 + ], + [ + 828, + 445, + 456 + ], + [ + 375, + 502, + 261 + ], + [ + 474, + 475, + 466 + ], + [ + 573, + 426, + 462 + ], + [ + 478, + 1023, + 477 + ], + [ + 478, + 458, + 1023 + ], + [ + 458, + 479, + 467 + ], + [ + 459, + 458, + 467 + ], + [ + 468, + 393, + 453 + ], + [ + 464, + 461, + 460 + ], + [ + 484, + 365, + 455 + ], + [ + 1232, + 182, + 1380 + ], + [ + 172, + 617, + 214 + ], + [ + 547, + 694, + 277 + ], + [ + 542, + 547, + 277 + ], + [ + 184, + 258, + 238 + ], + [ + 261, + 502, + 465 + ], + [ + 467, + 479, + 468 + ], + [ + 484, + 455, + 469 + ], + [ + 1380, + 182, + 864 + ], + [ + 475, + 476, + 466 + ], + [ + 80, + 447, + 476 + ], + [ + 466, + 476, + 447 + ], + [ + 415, + 429, + 439 + ], + [ + 479, + 487, + 468 + ], + [ + 487, + 287, + 468 + ], + [ + 492, + 393, + 468 + ], + [ + 260, + 469, + 461 + ], + [ + 481, + 365, + 484 + ], + [ + 531, + 473, + 931 + ], + [ + 692, + 360, + 319 + ], + [ + 726, + 495, + 474 + ], + [ + 468, + 287, + 492 + ], + [ + 480, + 464, + 1029 + ], + [ + 260, + 461, + 464 + ], + [ + 494, + 481, + 484 + ], + [ + 74, + 472, + 482 + ], + [ + 174, + 240, + 212 + ], + [ + 223, + 106, + 614 + ], + [ + 486, + 477, + 485 + ], + [ + 478, + 496, + 458 + ], + [ + 491, + 487, + 479 + ], + [ + 123, + 402, + 177 + ], + [ + 488, + 469, + 260 + ], + [ + 488, + 484, + 469 + ], + [ + 265, + 239, + 348 + ], + [ + 248, + 215, + 285 + ], + [ + 474, + 490, + 475 + ], + [ + 477, + 486, + 478 + ], + [ + 458, + 496, + 479 + ], + [ + 239, + 491, + 479 + ], + [ + 1584, + 1147, + 1334 + ], + [ + 488, + 494, + 484 + ], + [ + 401, + 123, + 506 + ], + [ + 495, + 490, + 474 + ], + [ + 490, + 173, + 475 + ], + [ + 80, + 476, + 264 + ], + [ + 491, + 287, + 487 + ], + [ + 480, + 1029, + 1004 + ], + [ + 480, + 205, + 464 + ], + [ + 173, + 476, + 475 + ], + [ + 485, + 194, + 486 + ], + [ + 486, + 183, + 478 + ], + [ + 478, + 183, + 496 + ], + [ + 496, + 239, + 479 + ], + [ + 848, + 1166, + 60 + ], + [ + 268, + 262, + 855 + ], + [ + 205, + 260, + 464 + ], + [ + 260, + 203, + 488 + ], + [ + 203, + 131, + 488 + ], + [ + 246, + 264, + 476 + ], + [ + 194, + 485, + 264 + ], + [ + 1002, + 310, + 1664 + ], + [ + 311, + 515, + 497 + ], + [ + 515, + 359, + 497 + ], + [ + 565, + 359, + 515 + ], + [ + 1250, + 1236, + 301 + ], + [ + 736, + 456, + 151 + ], + [ + 654, + 174, + 567 + ], + [ + 577, + 534, + 648 + ], + [ + 519, + 505, + 645 + ], + [ + 725, + 565, + 508 + ], + [ + 150, + 1723, + 148 + ], + [ + 584, + 502, + 505 + ], + [ + 584, + 526, + 502 + ], + [ + 502, + 526, + 84 + ], + [ + 607, + 191, + 682 + ], + [ + 560, + 499, + 660 + ], + [ + 607, + 517, + 191 + ], + [ + 1038, + 711, + 124 + ], + [ + 951, + 672, + 971 + ], + [ + 716, + 507, + 356 + ], + [ + 868, + 513, + 1198 + ], + [ + 615, + 794, + 608 + ], + [ + 682, + 191, + 174 + ], + [ + 1313, + 928, + 1211 + ], + [ + 617, + 241, + 214 + ], + [ + 511, + 71, + 91 + ], + [ + 408, + 800, + 792 + ], + [ + 192, + 286, + 525 + ], + [ + 80, + 485, + 447 + ], + [ + 91, + 97, + 130 + ], + [ + 1675, + 324, + 888 + ], + [ + 207, + 756, + 532 + ], + [ + 582, + 1097, + 1124 + ], + [ + 311, + 497, + 156 + ], + [ + 510, + 130, + 146 + ], + [ + 523, + 511, + 510 + ], + [ + 608, + 708, + 616 + ], + [ + 546, + 690, + 650 + ], + [ + 511, + 527, + 358 + ], + [ + 536, + 146, + 518 + ], + [ + 465, + 418, + 550 + ], + [ + 418, + 709, + 735 + ], + [ + 520, + 514, + 500 + ], + [ + 584, + 505, + 519 + ], + [ + 536, + 518, + 509 + ], + [ + 146, + 536, + 510 + ], + [ + 538, + 527, + 511 + ], + [ + 876, + 263, + 669 + ], + [ + 646, + 524, + 605 + ], + [ + 510, + 536, + 523 + ], + [ + 527, + 175, + 358 + ], + [ + 724, + 876, + 669 + ], + [ + 721, + 724, + 674 + ], + [ + 524, + 683, + 834 + ], + [ + 558, + 509, + 522 + ], + [ + 558, + 536, + 509 + ], + [ + 523, + 538, + 511 + ], + [ + 611, + 243, + 574 + ], + [ + 528, + 706, + 556 + ], + [ + 668, + 541, + 498 + ], + [ + 523, + 537, + 538 + ], + [ + 527, + 540, + 175 + ], + [ + 532, + 756, + 533 + ], + [ + 1013, + 60, + 747 + ], + [ + 551, + 698, + 699 + ], + [ + 92, + 520, + 500 + ], + [ + 535, + 536, + 558 + ], + [ + 536, + 569, + 523 + ], + [ + 538, + 540, + 527 + ], + [ + 539, + 548, + 175 + ], + [ + 567, + 212, + 145 + ], + [ + 401, + 896, + 293 + ], + [ + 534, + 675, + 639 + ], + [ + 1510, + 595, + 1507 + ], + [ + 557, + 545, + 530 + ], + [ + 569, + 536, + 535 + ], + [ + 537, + 540, + 538 + ], + [ + 540, + 539, + 175 + ], + [ + 569, + 537, + 523 + ], + [ + 1135, + 718, + 47 + ], + [ + 587, + 681, + 626 + ], + [ + 580, + 535, + 558 + ], + [ + 99, + 747, + 278 + ], + [ + 701, + 565, + 725 + ], + [ + 665, + 132, + 514 + ], + [ + 665, + 514, + 575 + ], + [ + 132, + 549, + 653 + ], + [ + 176, + 651, + 189 + ], + [ + 65, + 47, + 266 + ], + [ + 597, + 569, + 535 + ], + [ + 569, + 581, + 537 + ], + [ + 537, + 581, + 540 + ], + [ + 563, + 539, + 540 + ], + [ + 539, + 564, + 548 + ], + [ + 1509, + 1233, + 1434 + ], + [ + 132, + 653, + 740 + ], + [ + 550, + 710, + 155 + ], + [ + 714, + 721, + 644 + ], + [ + 410, + 1011, + 188 + ], + [ + 732, + 534, + 586 + ], + [ + 560, + 562, + 729 + ], + [ + 555, + 557, + 222 + ], + [ + 580, + 558, + 545 + ], + [ + 597, + 535, + 580 + ], + [ + 581, + 563, + 540 + ], + [ + 5, + 821, + 1676 + ], + [ + 576, + 215, + 136 + ], + [ + 649, + 457, + 741 + ], + [ + 564, + 539, + 563 + ], + [ + 124, + 711, + 224 + ], + [ + 550, + 668, + 710 + ], + [ + 550, + 541, + 668 + ], + [ + 565, + 701, + 673 + ], + [ + 560, + 613, + 499 + ], + [ + 233, + 532, + 625 + ], + [ + 545, + 555, + 580 + ], + [ + 601, + 581, + 569 + ], + [ + 594, + 904, + 548 + ], + [ + 1463, + 1425, + 434 + ], + [ + 185, + 149, + 1454 + ], + [ + 721, + 674, + 644 + ], + [ + 185, + 380, + 149 + ], + [ + 577, + 424, + 586 + ], + [ + 462, + 586, + 559 + ], + [ + 597, + 601, + 569 + ], + [ + 594, + 548, + 564 + ], + [ + 566, + 603, + 574 + ], + [ + 165, + 543, + 544 + ], + [ + 457, + 89, + 121 + ], + [ + 586, + 424, + 195 + ], + [ + 725, + 587, + 606 + ], + [ + 1078, + 582, + 1124 + ], + [ + 588, + 925, + 866 + ], + [ + 462, + 559, + 593 + ], + [ + 189, + 878, + 590 + ], + [ + 555, + 229, + 580 + ], + [ + 602, + 563, + 581 + ], + [ + 904, + 594, + 956 + ], + [ + 434, + 1425, + 1438 + ], + [ + 1024, + 112, + 821 + ], + [ + 572, + 587, + 626 + ], + [ + 600, + 597, + 580 + ], + [ + 599, + 591, + 656 + ], + [ + 600, + 580, + 229 + ], + [ + 601, + 622, + 581 + ], + [ + 581, + 622, + 602 + ], + [ + 602, + 564, + 563 + ], + [ + 602, + 594, + 564 + ], + [ + 603, + 611, + 574 + ], + [ + 498, + 529, + 546 + ], + [ + 697, + 1145, + 70 + ], + [ + 592, + 628, + 626 + ], + [ + 610, + 597, + 600 + ], + [ + 597, + 610, + 601 + ], + [ + 222, + 557, + 171 + ], + [ + 604, + 765, + 799 + ], + [ + 573, + 462, + 593 + ], + [ + 133, + 200, + 176 + ], + [ + 729, + 607, + 627 + ], + [ + 1011, + 692, + 188 + ], + [ + 518, + 146, + 130 + ], + [ + 585, + 687, + 609 + ], + [ + 682, + 627, + 607 + ], + [ + 1712, + 599, + 656 + ], + [ + 562, + 592, + 607 + ], + [ + 643, + 656, + 654 + ], + [ + 257, + 600, + 229 + ], + [ + 601, + 633, + 622 + ], + [ + 623, + 594, + 602 + ], + [ + 174, + 212, + 567 + ], + [ + 725, + 606, + 701 + ], + [ + 609, + 701, + 606 + ], + [ + 610, + 633, + 601 + ], + [ + 633, + 642, + 622 + ], + [ + 380, + 216, + 324 + ], + [ + 142, + 143, + 1249 + ], + [ + 501, + 732, + 586 + ], + [ + 534, + 577, + 586 + ], + [ + 648, + 1235, + 577 + ], + [ + 610, + 641, + 633 + ], + [ + 310, + 1002, + 1831 + ], + [ + 618, + 334, + 604 + ], + [ + 1710, + 145, + 269 + ], + [ + 707, + 498, + 659 + ], + [ + 501, + 586, + 462 + ], + [ + 625, + 501, + 462 + ], + [ + 726, + 663, + 691 + ], + [ + 300, + 600, + 257 + ], + [ + 641, + 610, + 600 + ], + [ + 622, + 629, + 602 + ], + [ + 602, + 629, + 623 + ], + [ + 55, + 692, + 444 + ], + [ + 518, + 748, + 509 + ], + [ + 929, + 1515, + 1411 + ], + [ + 620, + 578, + 267 + ], + [ + 71, + 511, + 358 + ], + [ + 707, + 668, + 498 + ], + [ + 650, + 687, + 585 + ], + [ + 600, + 300, + 641 + ], + [ + 641, + 657, + 633 + ], + [ + 1675, + 888, + 1669 + ], + [ + 622, + 636, + 629 + ], + [ + 505, + 502, + 375 + ], + [ + 541, + 529, + 498 + ], + [ + 332, + 420, + 1053 + ], + [ + 637, + 551, + 638 + ], + [ + 534, + 639, + 648 + ], + [ + 69, + 623, + 873 + ], + [ + 300, + 512, + 641 + ], + [ + 633, + 657, + 642 + ], + [ + 562, + 660, + 579 + ], + [ + 687, + 637, + 638 + ], + [ + 709, + 646, + 605 + ], + [ + 775, + 738, + 885 + ], + [ + 559, + 549, + 132 + ], + [ + 646, + 683, + 524 + ], + [ + 641, + 512, + 657 + ], + [ + 266, + 897, + 949 + ], + [ + 1712, + 643, + 1657 + ], + [ + 184, + 727, + 258 + ], + [ + 674, + 724, + 669 + ], + [ + 699, + 714, + 647 + ], + [ + 628, + 659, + 572 + ], + [ + 657, + 662, + 642 + ], + [ + 571, + 881, + 651 + ], + [ + 517, + 607, + 504 + ], + [ + 598, + 706, + 528 + ], + [ + 598, + 694, + 547 + ], + [ + 640, + 552, + 560 + ], + [ + 655, + 693, + 698 + ], + [ + 698, + 693, + 721 + ], + [ + 91, + 510, + 511 + ], + [ + 144, + 301, + 1136 + ], + [ + 324, + 216, + 888 + ], + [ + 870, + 764, + 1681 + ], + [ + 575, + 514, + 520 + ], + [ + 276, + 544, + 543 + ], + [ + 658, + 175, + 44 + ], + [ + 645, + 505, + 711 + ], + [ + 659, + 546, + 572 + ], + [ + 700, + 524, + 655 + ], + [ + 605, + 700, + 529 + ], + [ + 266, + 867, + 897 + ], + [ + 1695, + 1526, + 764 + ], + [ + 579, + 659, + 628 + ], + [ + 654, + 591, + 682 + ], + [ + 586, + 549, + 559 + ], + [ + 698, + 721, + 714 + ], + [ + 896, + 401, + 506 + ], + [ + 640, + 734, + 599 + ], + [ + 664, + 665, + 575 + ], + [ + 621, + 629, + 636 + ], + [ + 1712, + 656, + 643 + ], + [ + 547, + 644, + 598 + ], + [ + 710, + 668, + 707 + ], + [ + 640, + 560, + 734 + ], + [ + 655, + 698, + 551 + ], + [ + 694, + 528, + 277 + ], + [ + 512, + 662, + 657 + ], + [ + 504, + 592, + 626 + ], + [ + 688, + 584, + 519 + ], + [ + 152, + 241, + 617 + ], + [ + 587, + 725, + 681 + ], + [ + 598, + 669, + 706 + ], + [ + 526, + 670, + 84 + ], + [ + 598, + 528, + 694 + ], + [ + 710, + 707, + 499 + ], + [ + 579, + 592, + 562 + ], + [ + 660, + 659, + 579 + ], + [ + 323, + 324, + 1134 + ], + [ + 326, + 895, + 473 + ], + [ + 195, + 29, + 653 + ], + [ + 84, + 670, + 915 + ], + [ + 560, + 660, + 562 + ], + [ + 504, + 626, + 681 + ], + [ + 711, + 505, + 224 + ], + [ + 651, + 881, + 114 + ], + [ + 216, + 620, + 889 + ], + [ + 1362, + 678, + 197 + ], + [ + 493, + 99, + 48 + ], + [ + 1659, + 691, + 680 + ], + [ + 529, + 690, + 546 + ], + [ + 430, + 843, + 709 + ], + [ + 655, + 524, + 693 + ], + [ + 174, + 191, + 105 + ], + [ + 674, + 669, + 598 + ], + [ + 98, + 712, + 82 + ], + [ + 572, + 546, + 585 + ], + [ + 72, + 61, + 71 + ], + [ + 912, + 911, + 894 + ], + [ + 106, + 223, + 184 + ], + [ + 664, + 132, + 665 + ], + [ + 843, + 646, + 709 + ], + [ + 635, + 699, + 136 + ], + [ + 699, + 698, + 714 + ], + [ + 593, + 132, + 664 + ], + [ + 688, + 526, + 584 + ], + [ + 185, + 177, + 620 + ], + [ + 533, + 675, + 534 + ], + [ + 687, + 638, + 635 + ], + [ + 1652, + 89, + 457 + ], + [ + 896, + 506, + 912 + ], + [ + 132, + 740, + 514 + ], + [ + 689, + 685, + 282 + ], + [ + 691, + 449, + 680 + ], + [ + 48, + 436, + 493 + ], + [ + 136, + 699, + 647 + ], + [ + 739, + 640, + 554 + ], + [ + 549, + 586, + 653 + ], + [ + 532, + 533, + 625 + ], + [ + 1530, + 695, + 649 + ], + [ + 653, + 381, + 619 + ], + [ + 736, + 151, + 531 + ], + [ + 188, + 692, + 241 + ], + [ + 177, + 402, + 578 + ], + [ + 33, + 689, + 867 + ], + [ + 689, + 33, + 685 + ], + [ + 593, + 559, + 132 + ], + [ + 949, + 65, + 266 + ], + [ + 711, + 1038, + 661 + ], + [ + 939, + 480, + 1004 + ], + [ + 609, + 369, + 701 + ], + [ + 616, + 552, + 615 + ], + [ + 619, + 361, + 740 + ], + [ + 151, + 463, + 516 + ], + [ + 513, + 521, + 117 + ], + [ + 691, + 663, + 449 + ], + [ + 186, + 251, + 196 + ], + [ + 333, + 302, + 327 + ], + [ + 613, + 560, + 552 + ], + [ + 616, + 613, + 552 + ], + [ + 690, + 551, + 637 + ], + [ + 660, + 707, + 659 + ], + [ + 704, + 208, + 1203 + ], + [ + 418, + 735, + 550 + ], + [ + 163, + 708, + 124 + ], + [ + 524, + 834, + 693 + ], + [ + 554, + 640, + 599 + ], + [ + 245, + 341, + 165 + ], + [ + 565, + 673, + 359 + ], + [ + 155, + 710, + 708 + ], + [ + 105, + 191, + 517 + ], + [ + 1515, + 198, + 1411 + ], + [ + 1709, + 554, + 599 + ], + [ + 60, + 289, + 786 + ], + [ + 838, + 1295, + 1399 + ], + [ + 533, + 534, + 625 + ], + [ + 710, + 499, + 708 + ], + [ + 556, + 632, + 410 + ], + [ + 217, + 620, + 216 + ], + [ + 591, + 627, + 682 + ], + [ + 504, + 503, + 223 + ], + [ + 643, + 654, + 567 + ], + [ + 690, + 637, + 650 + ], + [ + 545, + 557, + 555 + ], + [ + 174, + 654, + 682 + ], + [ + 719, + 691, + 1659 + ], + [ + 727, + 681, + 508 + ], + [ + 645, + 711, + 661 + ], + [ + 794, + 615, + 739 + ], + [ + 565, + 515, + 508 + ], + [ + 282, + 685, + 302 + ], + [ + 1150, + 397, + 1149 + ], + [ + 638, + 699, + 635 + ], + [ + 544, + 685, + 33 + ], + [ + 719, + 726, + 691 + ], + [ + 1742, + 1126, + 1733 + ], + [ + 1724, + 1475, + 148 + ], + [ + 556, + 410, + 403 + ], + [ + 185, + 217, + 380 + ], + [ + 503, + 504, + 681 + ], + [ + 277, + 556, + 403 + ], + [ + 32, + 1178, + 158 + ], + [ + 1712, + 1709, + 599 + ], + [ + 605, + 529, + 541 + ], + [ + 635, + 136, + 369 + ], + [ + 687, + 635, + 369 + ], + [ + 529, + 700, + 690 + ], + [ + 700, + 551, + 690 + ], + [ + 89, + 304, + 573 + ], + [ + 625, + 534, + 732 + ], + [ + 730, + 302, + 685 + ], + [ + 503, + 681, + 727 + ], + [ + 702, + 673, + 701 + ], + [ + 730, + 327, + 302 + ], + [ + 327, + 353, + 333 + ], + [ + 596, + 664, + 575 + ], + [ + 660, + 499, + 707 + ], + [ + 585, + 546, + 650 + ], + [ + 560, + 729, + 734 + ], + [ + 700, + 655, + 551 + ], + [ + 176, + 571, + 651 + ], + [ + 517, + 504, + 223 + ], + [ + 730, + 685, + 544 + ], + [ + 1661, + 1682, + 726 + ], + [ + 1682, + 495, + 726 + ], + [ + 1250, + 301, + 917 + ], + [ + 605, + 524, + 700 + ], + [ + 609, + 687, + 369 + ], + [ + 516, + 389, + 895 + ], + [ + 1553, + 686, + 1027 + ], + [ + 673, + 702, + 164 + ], + [ + 656, + 591, + 654 + ], + [ + 520, + 596, + 575 + ], + [ + 402, + 123, + 401 + ], + [ + 828, + 456, + 728 + ], + [ + 1645, + 677, + 1653 + ], + [ + 528, + 556, + 277 + ], + [ + 638, + 551, + 699 + ], + [ + 190, + 497, + 359 + ], + [ + 276, + 730, + 544 + ], + [ + 1117, + 1525, + 933 + ], + [ + 1027, + 686, + 1306 + ], + [ + 155, + 708, + 163 + ], + [ + 709, + 605, + 541 + ], + [ + 647, + 644, + 547 + ], + [ + 650, + 637, + 687 + ], + [ + 599, + 734, + 591 + ], + [ + 578, + 293, + 267 + ], + [ + 1682, + 357, + 495 + ], + [ + 510, + 91, + 130 + ], + [ + 734, + 729, + 627 + ], + [ + 576, + 542, + 215 + ], + [ + 709, + 541, + 735 + ], + [ + 735, + 541, + 550 + ], + [ + 276, + 500, + 730 + ], + [ + 500, + 327, + 730 + ], + [ + 653, + 619, + 740 + ], + [ + 414, + 851, + 454 + ], + [ + 734, + 627, + 591 + ], + [ + 729, + 562, + 607 + ], + [ + 615, + 552, + 640 + ], + [ + 525, + 181, + 192 + ], + [ + 308, + 512, + 300 + ], + [ + 223, + 503, + 727 + ], + [ + 266, + 165, + 33 + ], + [ + 92, + 500, + 276 + ], + [ + 321, + 1046, + 1033 + ], + [ + 585, + 609, + 606 + ], + [ + 1200, + 1559, + 86 + ], + [ + 628, + 572, + 626 + ], + [ + 301, + 436, + 803 + ], + [ + 714, + 644, + 647 + ], + [ + 708, + 499, + 613 + ], + [ + 721, + 693, + 724 + ], + [ + 514, + 353, + 327 + ], + [ + 353, + 740, + 361 + ], + [ + 344, + 158, + 78 + ], + [ + 708, + 613, + 616 + ], + [ + 615, + 640, + 739 + ], + [ + 500, + 514, + 327 + ], + [ + 514, + 740, + 353 + ], + [ + 1449, + 177, + 185 + ], + [ + 462, + 233, + 625 + ], + [ + 851, + 405, + 1163 + ], + [ + 608, + 616, + 615 + ], + [ + 647, + 542, + 576 + ], + [ + 625, + 732, + 501 + ], + [ + 1097, + 582, + 1311 + ], + [ + 1235, + 424, + 577 + ], + [ + 579, + 628, + 592 + ], + [ + 607, + 592, + 504 + ], + [ + 24, + 432, + 470 + ], + [ + 105, + 614, + 247 + ], + [ + 104, + 742, + 471 + ], + [ + 542, + 259, + 215 + ], + [ + 365, + 196, + 455 + ], + [ + 1420, + 47, + 65 + ], + [ + 223, + 727, + 184 + ], + [ + 547, + 542, + 647 + ], + [ + 572, + 585, + 606 + ], + [ + 587, + 572, + 606 + ], + [ + 262, + 780, + 1370 + ], + [ + 647, + 576, + 136 + ], + [ + 644, + 674, + 598 + ], + [ + 271, + 53, + 75 + ], + [ + 727, + 508, + 258 + ], + [ + 471, + 742, + 142 + ], + [ + 505, + 375, + 224 + ], + [ + 357, + 1710, + 269 + ], + [ + 725, + 508, + 681 + ], + [ + 659, + 498, + 546 + ], + [ + 743, + 1178, + 32 + ], + [ + 1195, + 634, + 231 + ], + [ + 1176, + 24, + 470 + ], + [ + 743, + 1110, + 1178 + ], + [ + 135, + 809, + 857 + ], + [ + 63, + 746, + 407 + ], + [ + 634, + 1176, + 470 + ], + [ + 159, + 1112, + 27 + ], + [ + 1176, + 1685, + 24 + ], + [ + 399, + 450, + 779 + ], + [ + 1178, + 856, + 875 + ], + [ + 751, + 744, + 54 + ], + [ + 436, + 48, + 772 + ], + [ + 634, + 1108, + 1210 + ], + [ + 769, + 1285, + 1286 + ], + [ + 751, + 298, + 755 + ], + [ + 746, + 1684, + 754 + ], + [ + 754, + 924, + 87 + ], + [ + 722, + 1625, + 756 + ], + [ + 87, + 839, + 153 + ], + [ + 489, + 795, + 820 + ], + [ + 758, + 808, + 1518 + ], + [ + 839, + 840, + 153 + ], + [ + 831, + 1111, + 959 + ], + [ + 1111, + 749, + 959 + ], + [ + 810, + 1253, + 1363 + ], + [ + 1247, + 1394, + 713 + ], + [ + 1388, + 1329, + 1201 + ], + [ + 1242, + 120, + 761 + ], + [ + 857, + 791, + 384 + ], + [ + 758, + 1523, + 808 + ], + [ + 296, + 764, + 1504 + ], + [ + 70, + 1652, + 891 + ], + [ + 207, + 233, + 1638 + ], + [ + 1348, + 57, + 28 + ], + [ + 858, + 420, + 332 + ], + [ + 964, + 1379, + 1278 + ], + [ + 420, + 1194, + 816 + ], + [ + 784, + 1076, + 1186 + ], + [ + 1076, + 21, + 1186 + ], + [ + 1710, + 767, + 1 + ], + [ + 849, + 822, + 778 + ], + [ + 806, + 137, + 787 + ], + [ + 786, + 790, + 744 + ], + [ + 790, + 54, + 744 + ], + [ + 771, + 63, + 407 + ], + [ + 785, + 852, + 818 + ], + [ + 774, + 1823, + 272 + ], + [ + 895, + 151, + 516 + ], + [ + 135, + 1022, + 809 + ], + [ + 99, + 826, + 48 + ], + [ + 48, + 826, + 755 + ], + [ + 808, + 705, + 408 + ], + [ + 833, + 441, + 716 + ], + [ + 1733, + 743, + 32 + ], + [ + 1385, + 836, + 852 + ], + [ + 772, + 827, + 737 + ], + [ + 1005, + 49, + 781 + ], + [ + 793, + 1697, + 813 + ], + [ + 1518, + 441, + 1537 + ], + [ + 1139, + 1132, + 859 + ], + [ + 782, + 801, + 770 + ], + [ + 1510, + 1530, + 676 + ], + [ + 770, + 814, + 835 + ], + [ + 231, + 787, + 825 + ], + [ + 207, + 722, + 756 + ], + [ + 26, + 771, + 798 + ], + [ + 782, + 863, + 865 + ], + [ + 832, + 54, + 790 + ], + [ + 865, + 842, + 507 + ], + [ + 799, + 765, + 94 + ], + [ + 1175, + 1261, + 1353 + ], + [ + 800, + 408, + 805 + ], + [ + 262, + 986, + 200 + ], + [ + 792, + 800, + 814 + ], + [ + 801, + 792, + 770 + ], + [ + 704, + 1203, + 1148 + ], + [ + 356, + 1514, + 822 + ], + [ + 165, + 544, + 33 + ], + [ + 561, + 776, + 113 + ], + [ + 1043, + 738, + 775 + ], + [ + 815, + 831, + 820 + ], + [ + 773, + 792, + 801 + ], + [ + 772, + 48, + 914 + ], + [ + 772, + 737, + 803 + ], + [ + 436, + 772, + 803 + ], + [ + 808, + 817, + 705 + ], + [ + 1624, + 822, + 1527 + ], + [ + 588, + 1144, + 788 + ], + [ + 799, + 762, + 604 + ], + [ + 821, + 1520, + 1676 + ], + [ + 854, + 803, + 666 + ], + [ + 828, + 482, + 472 + ], + [ + 445, + 74, + 463 + ], + [ + 831, + 489, + 820 + ], + [ + 828, + 836, + 482 + ], + [ + 716, + 782, + 763 + ], + [ + 334, + 815, + 766 + ], + [ + 815, + 823, + 766 + ], + [ + 334, + 766, + 765 + ], + [ + 819, + 805, + 837 + ], + [ + 1716, + 1521, + 1412 + ], + [ + 1684, + 924, + 754 + ], + [ + 800, + 805, + 819 + ], + [ + 1709, + 829, + 554 + ], + [ + 806, + 1349, + 137 + ], + [ + 99, + 1013, + 747 + ], + [ + 341, + 595, + 276 + ], + [ + 817, + 810, + 818 + ], + [ + 1176, + 1691, + 1685 + ], + [ + 763, + 782, + 865 + ], + [ + 830, + 846, + 1052 + ], + [ + 865, + 1499, + 842 + ], + [ + 982, + 846, + 1053 + ], + [ + 847, + 832, + 790 + ], + [ + 1178, + 875, + 158 + ], + [ + 817, + 818, + 705 + ], + [ + 1302, + 1392, + 45 + ], + [ + 96, + 417, + 284 + ], + [ + 223, + 614, + 517 + ], + [ + 356, + 507, + 1514 + ], + [ + 1166, + 848, + 1179 + ], + [ + 1349, + 432, + 26 + ], + [ + 717, + 92, + 276 + ], + [ + 770, + 835, + 863 + ], + [ + 522, + 509, + 1745 + ], + [ + 847, + 841, + 832 + ], + [ + 832, + 841, + 46 + ], + [ + 829, + 739, + 554 + ], + [ + 802, + 824, + 39 + ], + [ + 397, + 1043, + 775 + ], + [ + 1567, + 849, + 778 + ], + [ + 1385, + 483, + 855 + ], + [ + 1349, + 26, + 1346 + ], + [ + 441, + 801, + 782 + ], + [ + 402, + 401, + 293 + ], + [ + 1043, + 667, + 738 + ], + [ + 759, + 798, + 1007 + ], + [ + 819, + 837, + 728 + ], + [ + 728, + 837, + 828 + ], + [ + 837, + 852, + 828 + ], + [ + 1537, + 441, + 833 + ], + [ + 148, + 1475, + 147 + ], + [ + 805, + 705, + 837 + ], + [ + 716, + 441, + 782 + ], + [ + 483, + 1371, + 780 + ], + [ + 814, + 819, + 844 + ], + [ + 845, + 753, + 1336 + ], + [ + 1661, + 719, + 4 + ], + [ + 862, + 847, + 790 + ], + [ + 737, + 827, + 666 + ], + [ + 201, + 46, + 841 + ], + [ + 810, + 785, + 818 + ], + [ + 408, + 705, + 805 + ], + [ + 1560, + 1536, + 849 + ], + [ + 1585, + 853, + 1786 + ], + [ + 7, + 1668, + 807 + ], + [ + 7, + 807, + 8 + ], + [ + 822, + 1514, + 1527 + ], + [ + 800, + 819, + 814 + ], + [ + 847, + 862, + 841 + ], + [ + 991, + 857, + 760 + ], + [ + 705, + 818, + 837 + ], + [ + 808, + 408, + 773 + ], + [ + 402, + 293, + 578 + ], + [ + 791, + 858, + 332 + ], + [ + 1480, + 1228, + 1240 + ], + [ + 814, + 844, + 835 + ], + [ + 785, + 1385, + 852 + ], + [ + 1132, + 120, + 859 + ], + [ + 1743, + 1726, + 684 + ], + [ + 1704, + 783, + 1279 + ], + [ + 1623, + 1694, + 1731 + ], + [ + 959, + 489, + 831 + ], + [ + 1518, + 808, + 773 + ], + [ + 862, + 872, + 841 + ], + [ + 441, + 773, + 801 + ], + [ + 331, + 512, + 308 + ], + [ + 380, + 217, + 216 + ], + [ + 841, + 872, + 201 + ], + [ + 818, + 852, + 837 + ], + [ + 448, + 1480, + 1240 + ], + [ + 856, + 1108, + 1195 + ], + [ + 1527, + 1514, + 1526 + ], + [ + 819, + 182, + 1232 + ], + [ + 871, + 724, + 693 + ], + [ + 852, + 836, + 828 + ], + [ + 770, + 792, + 814 + ], + [ + 803, + 737, + 666 + ], + [ + 751, + 826, + 278 + ], + [ + 1674, + 1727, + 1699 + ], + [ + 849, + 356, + 822 + ], + [ + 871, + 693, + 834 + ], + [ + 507, + 842, + 1514 + ], + [ + 1406, + 1097, + 869 + ], + [ + 1328, + 1349, + 1346 + ], + [ + 823, + 815, + 795 + ], + [ + 744, + 751, + 278 + ], + [ + 1110, + 856, + 1178 + ], + [ + 520, + 717, + 316 + ], + [ + 871, + 834, + 683 + ], + [ + 884, + 876, + 724 + ], + [ + 165, + 266, + 47 + ], + [ + 716, + 763, + 507 + ], + [ + 216, + 889, + 888 + ], + [ + 853, + 1585, + 1570 + ], + [ + 1536, + 716, + 356 + ], + [ + 886, + 873, + 623 + ], + [ + 782, + 770, + 863 + ], + [ + 432, + 24, + 26 + ], + [ + 683, + 882, + 871 + ], + [ + 884, + 724, + 871 + ], + [ + 114, + 876, + 884 + ], + [ + 516, + 590, + 389 + ], + [ + 11, + 1218, + 1628 + ], + [ + 862, + 113, + 872 + ], + [ + 886, + 623, + 629 + ], + [ + 830, + 1052, + 1120 + ], + [ + 762, + 153, + 604 + ], + [ + 773, + 408, + 792 + ], + [ + 763, + 865, + 507 + ], + [ + 153, + 840, + 604 + ], + [ + 882, + 884, + 871 + ], + [ + 531, + 151, + 326 + ], + [ + 886, + 890, + 873 + ], + [ + 133, + 262, + 200 + ], + [ + 819, + 1232, + 844 + ], + [ + 621, + 636, + 122 + ], + [ + 645, + 892, + 519 + ], + [ + 1130, + 1076, + 784 + ], + [ + 114, + 263, + 876 + ], + [ + 1670, + 10, + 1663 + ], + [ + 911, + 670, + 894 + ], + [ + 452, + 885, + 872 + ], + [ + 872, + 885, + 201 + ], + [ + 887, + 882, + 683 + ], + [ + 878, + 884, + 882 + ], + [ + 590, + 878, + 882 + ], + [ + 890, + 867, + 689 + ], + [ + 897, + 629, + 621 + ], + [ + 897, + 886, + 629 + ], + [ + 819, + 728, + 182 + ], + [ + 519, + 893, + 688 + ], + [ + 894, + 670, + 526 + ], + [ + 898, + 894, + 526 + ], + [ + 1536, + 356, + 849 + ], + [ + 810, + 1363, + 785 + ], + [ + 878, + 114, + 884 + ], + [ + 879, + 888, + 892 + ], + [ + 892, + 889, + 893 + ], + [ + 893, + 898, + 688 + ], + [ + 895, + 683, + 843 + ], + [ + 895, + 887, + 683 + ], + [ + 889, + 620, + 267 + ], + [ + 590, + 882, + 389 + ], + [ + 418, + 465, + 84 + ], + [ + 949, + 897, + 621 + ], + [ + 897, + 890, + 886 + ], + [ + 889, + 267, + 893 + ], + [ + 898, + 267, + 896 + ], + [ + 531, + 326, + 473 + ], + [ + 189, + 651, + 878 + ], + [ + 843, + 683, + 646 + ], + [ + 897, + 867, + 890 + ], + [ + 888, + 889, + 892 + ], + [ + 893, + 267, + 898 + ], + [ + 896, + 894, + 898 + ], + [ + 473, + 895, + 843 + ], + [ + 895, + 389, + 887 + ], + [ + 974, + 706, + 669 + ], + [ + 513, + 1115, + 521 + ], + [ + 326, + 151, + 895 + ], + [ + 809, + 791, + 857 + ], + [ + 211, + 262, + 133 + ], + [ + 920, + 923, + 947 + ], + [ + 923, + 90, + 947 + ], + [ + 90, + 25, + 947 + ], + [ + 25, + 972, + 935 + ], + [ + 64, + 431, + 899 + ], + [ + 52, + 899, + 901 + ], + [ + 903, + 905, + 59 + ], + [ + 437, + 967, + 73 + ], + [ + 839, + 1242, + 761 + ], + [ + 904, + 975, + 44 + ], + [ + 917, + 301, + 144 + ], + [ + 915, + 670, + 911 + ], + [ + 905, + 201, + 885 + ], + [ + 1684, + 63, + 1685 + ], + [ + 1033, + 1194, + 288 + ], + [ + 950, + 913, + 755 + ], + [ + 912, + 918, + 911 + ], + [ + 950, + 914, + 913 + ], + [ + 506, + 918, + 912 + ], + [ + 922, + 919, + 915 + ], + [ + 911, + 922, + 915 + ], + [ + 1004, + 451, + 492 + ], + [ + 1263, + 553, + 639 + ], + [ + 922, + 911, + 918 + ], + [ + 630, + 920, + 947 + ], + [ + 916, + 506, + 926 + ], + [ + 916, + 918, + 506 + ], + [ + 521, + 1115, + 1098 + ], + [ + 916, + 922, + 918 + ], + [ + 919, + 418, + 915 + ], + [ + 83, + 38, + 75 + ], + [ + 24, + 1685, + 771 + ], + [ + 110, + 1230, + 1213 + ], + [ + 712, + 8, + 1837 + ], + [ + 922, + 930, + 919 + ], + [ + 919, + 430, + 418 + ], + [ + 1395, + 1402, + 1187 + ], + [ + 930, + 922, + 916 + ], + [ + 594, + 623, + 69 + ], + [ + 35, + 431, + 968 + ], + [ + 35, + 968, + 969 + ], + [ + 866, + 924, + 1684 + ], + [ + 1625, + 1263, + 675 + ], + [ + 631, + 630, + 52 + ], + [ + 930, + 931, + 919 + ], + [ + 430, + 709, + 418 + ], + [ + 302, + 333, + 49 + ], + [ + 1446, + 978, + 1138 + ], + [ + 799, + 1007, + 798 + ], + [ + 931, + 843, + 919 + ], + [ + 947, + 25, + 64 + ], + [ + 885, + 738, + 667 + ], + [ + 1262, + 963, + 964 + ], + [ + 899, + 970, + 901 + ], + [ + 1401, + 946, + 938 + ], + [ + 1117, + 933, + 1091 + ], + [ + 1685, + 63, + 771 + ], + [ + 905, + 948, + 201 + ], + [ + 979, + 937, + 980 + ], + [ + 951, + 953, + 950 + ], + [ + 937, + 270, + 443 + ], + [ + 1154, + 903, + 59 + ], + [ + 1194, + 954, + 1067 + ], + [ + 909, + 405, + 907 + ], + [ + 850, + 1151, + 59 + ], + [ + 1769, + 811, + 1432 + ], + [ + 76, + 206, + 250 + ], + [ + 938, + 946, + 966 + ], + [ + 965, + 927, + 942 + ], + [ + 938, + 966, + 957 + ], + [ + 955, + 975, + 904 + ], + [ + 927, + 965, + 934 + ], + [ + 52, + 51, + 631 + ], + [ + 59, + 905, + 667 + ], + [ + 431, + 935, + 968 + ], + [ + 786, + 289, + 561 + ], + [ + 252, + 122, + 671 + ], + [ + 481, + 494, + 107 + ], + [ + 954, + 1817, + 1067 + ], + [ + 795, + 25, + 90 + ], + [ + 958, + 965, + 945 + ], + [ + 795, + 972, + 25 + ], + [ + 902, + 983, + 955 + ], + [ + 972, + 489, + 944 + ], + [ + 1256, + 29, + 424 + ], + [ + 671, + 331, + 945 + ], + [ + 946, + 958, + 963 + ], + [ + 956, + 955, + 904 + ], + [ + 902, + 955, + 956 + ], + [ + 671, + 512, + 331 + ], + [ + 945, + 331, + 961 + ], + [ + 662, + 671, + 122 + ], + [ + 671, + 662, + 512 + ], + [ + 934, + 65, + 927 + ], + [ + 630, + 947, + 52 + ], + [ + 666, + 631, + 910 + ], + [ + 850, + 59, + 667 + ], + [ + 961, + 331, + 234 + ], + [ + 1024, + 411, + 1042 + ], + [ + 890, + 69, + 873 + ], + [ + 252, + 671, + 945 + ], + [ + 975, + 290, + 940 + ], + [ + 283, + 186, + 196 + ], + [ + 30, + 283, + 365 + ], + [ + 950, + 755, + 298 + ], + [ + 946, + 965, + 958 + ], + [ + 985, + 290, + 975 + ], + [ + 969, + 290, + 985 + ], + [ + 405, + 851, + 206 + ], + [ + 935, + 431, + 64 + ], + [ + 941, + 1423, + 1420 + ], + [ + 964, + 963, + 167 + ], + [ + 942, + 252, + 945 + ], + [ + 78, + 757, + 57 + ], + [ + 49, + 1005, + 66 + ], + [ + 937, + 979, + 270 + ], + [ + 631, + 666, + 827 + ], + [ + 980, + 937, + 443 + ], + [ + 66, + 689, + 282 + ], + [ + 421, + 902, + 956 + ], + [ + 947, + 64, + 52 + ], + [ + 35, + 979, + 899 + ], + [ + 951, + 971, + 953 + ], + [ + 762, + 87, + 153 + ], + [ + 27, + 31, + 381 + ], + [ + 924, + 839, + 87 + ], + [ + 946, + 963, + 966 + ], + [ + 331, + 308, + 340 + ], + [ + 957, + 966, + 1262 + ], + [ + 473, + 843, + 931 + ], + [ + 953, + 971, + 920 + ], + [ + 270, + 969, + 902 + ], + [ + 935, + 962, + 968 + ], + [ + 51, + 1005, + 781 + ], + [ + 969, + 983, + 902 + ], + [ + 437, + 73, + 940 + ], + [ + 69, + 421, + 956 + ], + [ + 761, + 249, + 840 + ], + [ + 263, + 974, + 669 + ], + [ + 962, + 944, + 967 + ], + [ + 962, + 437, + 290 + ], + [ + 985, + 975, + 955 + ], + [ + 907, + 405, + 948 + ], + [ + 720, + 957, + 1262 + ], + [ + 25, + 935, + 64 + ], + [ + 176, + 200, + 571 + ], + [ + 108, + 945, + 50 + ], + [ + 250, + 851, + 414 + ], + [ + 200, + 986, + 571 + ], + [ + 881, + 974, + 263 + ], + [ + 827, + 772, + 953 + ], + [ + 970, + 899, + 980 + ], + [ + 29, + 159, + 27 + ], + [ + 234, + 331, + 340 + ], + [ + 948, + 405, + 206 + ], + [ + 980, + 899, + 979 + ], + [ + 986, + 984, + 571 + ], + [ + 571, + 984, + 881 + ], + [ + 990, + 706, + 974 + ], + [ + 946, + 934, + 965 + ], + [ + 970, + 980, + 66 + ], + [ + 1113, + 1486, + 1554 + ], + [ + 984, + 981, + 881 + ], + [ + 881, + 987, + 974 + ], + [ + 689, + 66, + 443 + ], + [ + 1005, + 901, + 66 + ], + [ + 983, + 985, + 955 + ], + [ + 165, + 47, + 718 + ], + [ + 987, + 990, + 974 + ], + [ + 1370, + 986, + 262 + ], + [ + 901, + 970, + 66 + ], + [ + 51, + 901, + 1005 + ], + [ + 981, + 987, + 881 + ], + [ + 988, + 706, + 990 + ], + [ + 942, + 945, + 965 + ], + [ + 290, + 437, + 940 + ], + [ + 64, + 899, + 52 + ], + [ + 988, + 556, + 706 + ], + [ + 941, + 934, + 946 + ], + [ + 431, + 35, + 899 + ], + [ + 996, + 989, + 984 + ], + [ + 984, + 989, + 981 + ], + [ + 981, + 989, + 987 + ], + [ + 35, + 969, + 270 + ], + [ + 1370, + 995, + 986 + ], + [ + 986, + 995, + 984 + ], + [ + 989, + 999, + 987 + ], + [ + 987, + 992, + 990 + ], + [ + 992, + 988, + 990 + ], + [ + 962, + 967, + 437 + ], + [ + 951, + 950, + 976 + ], + [ + 979, + 35, + 270 + ], + [ + 421, + 270, + 902 + ], + [ + 998, + 995, + 1370 + ], + [ + 987, + 999, + 992 + ], + [ + 988, + 364, + 556 + ], + [ + 969, + 985, + 983 + ], + [ + 689, + 443, + 890 + ], + [ + 995, + 1000, + 984 + ], + [ + 219, + 958, + 108 + ], + [ + 998, + 1000, + 995 + ], + [ + 999, + 997, + 992 + ], + [ + 914, + 953, + 772 + ], + [ + 845, + 1336, + 745 + ], + [ + 806, + 787, + 231 + ], + [ + 1000, + 996, + 984 + ], + [ + 989, + 996, + 999 + ], + [ + 50, + 945, + 961 + ], + [ + 443, + 421, + 69 + ], + [ + 797, + 158, + 779 + ], + [ + 1098, + 1463, + 434 + ], + [ + 996, + 1009, + 999 + ], + [ + 1001, + 988, + 992 + ], + [ + 1001, + 364, + 988 + ], + [ + 903, + 907, + 905 + ], + [ + 26, + 759, + 973 + ], + [ + 997, + 1001, + 992 + ], + [ + 632, + 364, + 1001 + ], + [ + 1346, + 26, + 973 + ], + [ + 998, + 1008, + 1000 + ], + [ + 1000, + 1009, + 996 + ], + [ + 531, + 931, + 736 + ], + [ + 252, + 949, + 621 + ], + [ + 286, + 388, + 525 + ], + [ + 1174, + 1008, + 998 + ], + [ + 1009, + 1010, + 999 + ], + [ + 999, + 1010, + 997 + ], + [ + 1014, + 1001, + 997 + ], + [ + 614, + 105, + 517 + ], + [ + 958, + 945, + 108 + ], + [ + 525, + 1004, + 242 + ], + [ + 963, + 958, + 219 + ], + [ + 233, + 426, + 304 + ], + [ + 1000, + 1008, + 1009 + ], + [ + 1010, + 1014, + 997 + ], + [ + 1001, + 1006, + 632 + ], + [ + 824, + 413, + 39 + ], + [ + 642, + 636, + 622 + ], + [ + 480, + 388, + 205 + ], + [ + 28, + 757, + 797 + ], + [ + 1014, + 1006, + 1001 + ], + [ + 1006, + 410, + 632 + ], + [ + 975, + 940, + 44 + ], + [ + 1234, + 420, + 858 + ], + [ + 54, + 832, + 46 + ], + [ + 1009, + 1012, + 1010 + ], + [ + 167, + 963, + 219 + ], + [ + 41, + 481, + 107 + ], + [ + 1017, + 1010, + 1012 + ], + [ + 122, + 636, + 662 + ], + [ + 939, + 525, + 388 + ], + [ + 525, + 939, + 1004 + ], + [ + 950, + 953, + 914 + ], + [ + 829, + 1735, + 739 + ], + [ + 1008, + 880, + 1015 + ], + [ + 1008, + 1015, + 1009 + ], + [ + 1263, + 639, + 675 + ], + [ + 956, + 594, + 69 + ], + [ + 795, + 90, + 1347 + ], + [ + 1179, + 848, + 1013 + ], + [ + 759, + 1007, + 973 + ], + [ + 1009, + 1015, + 1012 + ], + [ + 1012, + 1016, + 1017 + ], + [ + 1017, + 1014, + 1010 + ], + [ + 1019, + 1011, + 1006 + ], + [ + 927, + 65, + 949 + ], + [ + 649, + 316, + 595 + ], + [ + 913, + 48, + 755 + ], + [ + 976, + 950, + 298 + ], + [ + 1003, + 1015, + 880 + ], + [ + 1018, + 1006, + 1014 + ], + [ + 1021, + 1018, + 1014 + ], + [ + 444, + 692, + 1011 + ], + [ + 451, + 1029, + 1063 + ], + [ + 1185, + 851, + 1163 + ], + [ + 29, + 27, + 381 + ], + [ + 181, + 525, + 242 + ], + [ + 1021, + 1014, + 1017 + ], + [ + 1016, + 1021, + 1017 + ], + [ + 1018, + 1019, + 1006 + ], + [ + 1019, + 444, + 1011 + ], + [ + 927, + 949, + 942 + ], + [ + 451, + 393, + 492 + ], + [ + 903, + 1154, + 907 + ], + [ + 391, + 101, + 57 + ], + [ + 94, + 765, + 58 + ], + [ + 419, + 1016, + 1012 + ], + [ + 949, + 252, + 942 + ], + [ + 907, + 1020, + 909 + ], + [ + 765, + 442, + 58 + ], + [ + 94, + 406, + 908 + ], + [ + 1007, + 94, + 908 + ], + [ + 34, + 1012, + 1015 + ], + [ + 34, + 419, + 1012 + ], + [ + 419, + 1021, + 1016 + ], + [ + 451, + 1057, + 393 + ], + [ + 907, + 948, + 905 + ], + [ + 1034, + 1073, + 1039 + ], + [ + 1061, + 906, + 1619 + ], + [ + 1068, + 960, + 1034 + ], + [ + 471, + 1249, + 104 + ], + [ + 112, + 1024, + 1042 + ], + [ + 372, + 379, + 125 + ], + [ + 341, + 543, + 165 + ], + [ + 141, + 1094, + 170 + ], + [ + 566, + 243, + 1061 + ], + [ + 398, + 1034, + 1039 + ], + [ + 325, + 317, + 1823 + ], + [ + 1493, + 296, + 1724 + ], + [ + 850, + 667, + 1043 + ], + [ + 1054, + 297, + 1065 + ], + [ + 1619, + 135, + 1074 + ], + [ + 1061, + 243, + 906 + ], + [ + 680, + 1024, + 821 + ], + [ + 1103, + 96, + 1245 + ], + [ + 1440, + 1123, + 1491 + ], + [ + 1047, + 1025, + 1044 + ], + [ + 672, + 454, + 1231 + ], + [ + 1484, + 697, + 1530 + ], + [ + 993, + 672, + 1231 + ], + [ + 178, + 154, + 1088 + ], + [ + 1044, + 1041, + 1066 + ], + [ + 112, + 1062, + 1058 + ], + [ + 1530, + 649, + 676 + ], + [ + 178, + 1088, + 1040 + ], + [ + 1046, + 328, + 954 + ], + [ + 243, + 244, + 1022 + ], + [ + 954, + 1194, + 1033 + ], + [ + 1042, + 411, + 1032 + ], + [ + 971, + 993, + 1056 + ], + [ + 960, + 1093, + 1034 + ], + [ + 1754, + 1338, + 232 + ], + [ + 385, + 1064, + 412 + ], + [ + 1057, + 1063, + 111 + ], + [ + 748, + 1071, + 1447 + ], + [ + 1530, + 697, + 695 + ], + [ + 971, + 1056, + 1270 + ], + [ + 977, + 1059, + 1211 + ], + [ + 649, + 741, + 316 + ], + [ + 1060, + 1452, + 1030 + ], + [ + 353, + 354, + 1323 + ], + [ + 695, + 768, + 649 + ], + [ + 398, + 404, + 1034 + ], + [ + 596, + 316, + 741 + ], + [ + 1836, + 119, + 13 + ], + [ + 1513, + 1115, + 1528 + ], + [ + 883, + 1081, + 1652 + ], + [ + 1039, + 1073, + 1048 + ], + [ + 462, + 426, + 233 + ], + [ + 31, + 1296, + 354 + ], + [ + 1055, + 1047, + 1066 + ], + [ + 1032, + 1054, + 1045 + ], + [ + 1521, + 310, + 1224 + ], + [ + 119, + 861, + 13 + ], + [ + 1194, + 1234, + 288 + ], + [ + 1109, + 1771, + 1070 + ], + [ + 1166, + 1160, + 776 + ], + [ + 1044, + 1035, + 1041 + ], + [ + 1026, + 960, + 1064 + ], + [ + 1050, + 1032, + 1045 + ], + [ + 1049, + 1041, + 387 + ], + [ + 115, + 1013, + 99 + ], + [ + 1046, + 954, + 1033 + ], + [ + 1321, + 920, + 971 + ], + [ + 611, + 1058, + 345 + ], + [ + 1048, + 1066, + 1049 + ], + [ + 1023, + 1055, + 1073 + ], + [ + 1029, + 451, + 1004 + ], + [ + 118, + 1094, + 141 + ], + [ + 1094, + 1080, + 170 + ], + [ + 1042, + 1032, + 1050 + ], + [ + 1026, + 1064, + 385 + ], + [ + 15, + 16, + 1084 + ], + [ + 1096, + 1079, + 61 + ], + [ + 1075, + 1071, + 748 + ], + [ + 325, + 1817, + 328 + ], + [ + 909, + 1163, + 405 + ], + [ + 1022, + 1234, + 809 + ], + [ + 374, + 398, + 1051 + ], + [ + 1082, + 72, + 81 + ], + [ + 1023, + 1034, + 1093 + ], + [ + 1817, + 1794, + 1067 + ], + [ + 86, + 1445, + 1400 + ], + [ + 1507, + 1535, + 1510 + ], + [ + 1079, + 1096, + 1075 + ], + [ + 568, + 1478, + 1104 + ], + [ + 1070, + 178, + 1040 + ], + [ + 1034, + 1023, + 1073 + ], + [ + 776, + 1155, + 113 + ], + [ + 1103, + 143, + 142 + ], + [ + 1140, + 81, + 73 + ], + [ + 1082, + 81, + 1140 + ], + [ + 1060, + 1030, + 936 + ], + [ + 1040, + 1086, + 1109 + ], + [ + 370, + 1065, + 385 + ], + [ + 61, + 72, + 1082 + ], + [ + 1087, + 1096, + 1144 + ], + [ + 1040, + 1088, + 1086 + ], + [ + 1651, + 812, + 752 + ], + [ + 1062, + 1050, + 1045 + ], + [ + 187, + 154, + 178 + ], + [ + 179, + 187, + 178 + ], + [ + 1099, + 1344, + 1101 + ], + [ + 1668, + 1058, + 807 + ], + [ + 1073, + 1055, + 1048 + ], + [ + 1099, + 1336, + 1344 + ], + [ + 1283, + 943, + 1123 + ], + [ + 1049, + 387, + 1051 + ], + [ + 1024, + 680, + 449 + ], + [ + 61, + 1082, + 1100 + ], + [ + 967, + 749, + 1111 + ], + [ + 1439, + 1037, + 88 + ], + [ + 742, + 1505, + 142 + ], + [ + 398, + 1039, + 1051 + ], + [ + 1107, + 1336, + 1099 + ], + [ + 1344, + 1542, + 1101 + ], + [ + 142, + 1505, + 1103 + ], + [ + 477, + 1093, + 447 + ], + [ + 477, + 1023, + 1093 + ], + [ + 471, + 142, + 1249 + ], + [ + 1041, + 1035, + 394 + ], + [ + 1328, + 568, + 1104 + ], + [ + 61, + 1100, + 1096 + ], + [ + 154, + 1092, + 1088 + ], + [ + 112, + 1042, + 1050 + ], + [ + 154, + 187, + 168 + ], + [ + 435, + 235, + 45 + ], + [ + 1075, + 1096, + 1087 + ], + [ + 97, + 1075, + 748 + ], + [ + 1049, + 1066, + 1041 + ], + [ + 816, + 1067, + 1028 + ], + [ + 846, + 982, + 1142 + ], + [ + 1245, + 96, + 284 + ], + [ + 1092, + 154, + 1080 + ], + [ + 1057, + 451, + 1063 + ], + [ + 387, + 377, + 1051 + ], + [ + 1055, + 1025, + 1047 + ], + [ + 1075, + 1087, + 1089 + ], + [ + 1106, + 1108, + 856 + ], + [ + 1068, + 1034, + 404 + ], + [ + 1480, + 1545, + 868 + ], + [ + 906, + 135, + 1619 + ], + [ + 1074, + 991, + 1095 + ], + [ + 570, + 566, + 1061 + ], + [ + 1025, + 453, + 1044 + ], + [ + 745, + 1336, + 1107 + ], + [ + 1035, + 1057, + 416 + ], + [ + 1092, + 1102, + 1129 + ], + [ + 1074, + 135, + 991 + ], + [ + 1105, + 745, + 1107 + ], + [ + 447, + 1026, + 446 + ], + [ + 394, + 387, + 1041 + ], + [ + 73, + 81, + 940 + ], + [ + 1118, + 1108, + 1106 + ], + [ + 1210, + 1108, + 874 + ], + [ + 243, + 1022, + 906 + ], + [ + 412, + 1064, + 1068 + ], + [ + 1280, + 611, + 603 + ], + [ + 960, + 447, + 1093 + ], + [ + 1051, + 1039, + 1049 + ], + [ + 1040, + 1109, + 1070 + ], + [ + 1471, + 1037, + 1439 + ], + [ + 69, + 890, + 443 + ], + [ + 1377, + 703, + 1374 + ], + [ + 1092, + 1080, + 1102 + ], + [ + 1096, + 1100, + 788 + ], + [ + 1096, + 788, + 1144 + ], + [ + 1114, + 967, + 1111 + ], + [ + 446, + 1026, + 297 + ], + [ + 70, + 1112, + 883 + ], + [ + 453, + 393, + 1057 + ], + [ + 1118, + 874, + 1108 + ], + [ + 1054, + 370, + 1045 + ], + [ + 1080, + 1094, + 1102 + ], + [ + 1039, + 1048, + 1049 + ], + [ + 428, + 753, + 845 + ], + [ + 1047, + 1044, + 1066 + ], + [ + 1044, + 453, + 1035 + ], + [ + 1472, + 731, + 1512 + ], + [ + 1126, + 1121, + 743 + ], + [ + 743, + 1121, + 1110 + ], + [ + 1032, + 297, + 1054 + ], + [ + 1480, + 868, + 1216 + ], + [ + 71, + 358, + 72 + ], + [ + 1133, + 967, + 1114 + ], + [ + 1105, + 1119, + 745 + ], + [ + 1035, + 453, + 1057 + ], + [ + 1026, + 447, + 960 + ], + [ + 454, + 851, + 1190 + ], + [ + 1030, + 1477, + 652 + ], + [ + 589, + 816, + 1028 + ], + [ + 1110, + 1121, + 1106 + ], + [ + 1122, + 1118, + 1106 + ], + [ + 1116, + 874, + 1118 + ], + [ + 1048, + 1055, + 1066 + ], + [ + 1194, + 1067, + 816 + ], + [ + 744, + 278, + 747 + ], + [ + 745, + 1120, + 845 + ], + [ + 845, + 1052, + 428 + ], + [ + 1105, + 1780, + 1119 + ], + [ + 1065, + 297, + 385 + ], + [ + 1098, + 1529, + 1463 + ], + [ + 731, + 1060, + 936 + ], + [ + 235, + 434, + 812 + ], + [ + 1445, + 1525, + 1117 + ], + [ + 1106, + 1121, + 1122 + ], + [ + 1122, + 1127, + 1118 + ], + [ + 1127, + 1116, + 1118 + ], + [ + 1094, + 118, + 1732 + ], + [ + 1119, + 1120, + 745 + ], + [ + 1406, + 1124, + 1097 + ], + [ + 435, + 117, + 235 + ], + [ + 1462, + 1440, + 1037 + ], + [ + 1126, + 1129, + 1121 + ], + [ + 1088, + 1092, + 1129 + ], + [ + 1133, + 73, + 967 + ], + [ + 1120, + 1052, + 845 + ], + [ + 812, + 434, + 752 + ], + [ + 1441, + 1559, + 1200 + ], + [ + 1131, + 588, + 413 + ], + [ + 1054, + 1065, + 370 + ], + [ + 235, + 1098, + 434 + ], + [ + 1052, + 1142, + 428 + ], + [ + 1737, + 428, + 1142 + ], + [ + 1496, + 1446, + 1483 + ], + [ + 1182, + 1083, + 1654 + ], + [ + 1121, + 1129, + 1122 + ], + [ + 1732, + 1116, + 1127 + ], + [ + 768, + 457, + 649 + ], + [ + 761, + 1114, + 249 + ], + [ + 1064, + 960, + 1068 + ], + [ + 1135, + 1481, + 1136 + ], + [ + 1126, + 952, + 1129 + ], + [ + 1087, + 588, + 1131 + ], + [ + 1087, + 1144, + 588 + ], + [ + 859, + 788, + 1139 + ], + [ + 1140, + 1133, + 1132 + ], + [ + 1133, + 1140, + 73 + ], + [ + 1822, + 570, + 1061 + ], + [ + 394, + 1035, + 416 + ], + [ + 1055, + 1023, + 459 + ], + [ + 80, + 264, + 485 + ], + [ + 1119, + 1128, + 1120 + ], + [ + 145, + 1658, + 567 + ], + [ + 695, + 891, + 768 + ], + [ + 1129, + 1102, + 1122 + ], + [ + 1122, + 1102, + 1127 + ], + [ + 1416, + 1077, + 1413 + ], + [ + 297, + 1026, + 385 + ], + [ + 1052, + 846, + 1142 + ], + [ + 1445, + 1117, + 1400 + ], + [ + 952, + 1086, + 1129 + ], + [ + 1714, + 1089, + 1131 + ], + [ + 1131, + 1089, + 1087 + ], + [ + 1100, + 1139, + 788 + ], + [ + 112, + 1050, + 1062 + ], + [ + 1323, + 354, + 1296 + ], + [ + 49, + 333, + 1141 + ], + [ + 1142, + 982, + 1737 + ], + [ + 79, + 1457, + 1091 + ], + [ + 1088, + 1129, + 1086 + ], + [ + 1102, + 1094, + 1127 + ], + [ + 1127, + 1094, + 1732 + ], + [ + 1100, + 1082, + 1139 + ], + [ + 1082, + 1132, + 1139 + ], + [ + 1082, + 1140, + 1132 + ], + [ + 1150, + 1043, + 397 + ], + [ + 60, + 1166, + 289 + ], + [ + 1696, + 1146, + 1698 + ], + [ + 1297, + 1202, + 1313 + ], + [ + 409, + 1297, + 1313 + ], + [ + 1234, + 1194, + 420 + ], + [ + 1408, + 1391, + 1394 + ], + [ + 424, + 1235, + 1243 + ], + [ + 1203, + 309, + 1148 + ], + [ + 485, + 477, + 447 + ], + [ + 1152, + 1156, + 850 + ], + [ + 1153, + 1149, + 1155 + ], + [ + 1153, + 1157, + 1149 + ], + [ + 1149, + 1152, + 1150 + ], + [ + 1156, + 1154, + 1151 + ], + [ + 776, + 1153, + 1155 + ], + [ + 1157, + 1152, + 1149 + ], + [ + 1217, + 1393, + 1208 + ], + [ + 1156, + 1159, + 1154 + ], + [ + 1153, + 1165, + 1157 + ], + [ + 1165, + 1152, + 1157 + ], + [ + 1159, + 1020, + 1154 + ], + [ + 1161, + 1153, + 776 + ], + [ + 1161, + 1165, + 1153 + ], + [ + 1165, + 1158, + 1152 + ], + [ + 1152, + 1158, + 1156 + ], + [ + 1158, + 1159, + 1156 + ], + [ + 1166, + 776, + 561 + ], + [ + 1160, + 1161, + 776 + ], + [ + 1161, + 1164, + 1165 + ], + [ + 1161, + 1160, + 1164 + ], + [ + 1158, + 1162, + 1159 + ], + [ + 1159, + 1162, + 1020 + ], + [ + 1270, + 1321, + 971 + ], + [ + 1164, + 1170, + 1165 + ], + [ + 1165, + 1162, + 1158 + ], + [ + 1162, + 1163, + 1020 + ], + [ + 588, + 788, + 925 + ], + [ + 1166, + 1167, + 1160 + ], + [ + 1165, + 1170, + 1162 + ], + [ + 1160, + 1167, + 1164 + ], + [ + 1162, + 1170, + 1163 + ], + [ + 1179, + 1167, + 1166 + ], + [ + 1167, + 1168, + 1164 + ], + [ + 1164, + 1168, + 1170 + ], + [ + 1168, + 1169, + 1170 + ], + [ + 1234, + 1022, + 288 + ], + [ + 802, + 39, + 866 + ], + [ + 1179, + 1168, + 1167 + ], + [ + 1169, + 1173, + 1170 + ], + [ + 1170, + 1173, + 1163 + ], + [ + 1173, + 1185, + 1163 + ], + [ + 1360, + 1267, + 1364 + ], + [ + 1169, + 1185, + 1173 + ], + [ + 611, + 244, + 243 + ], + [ + 900, + 1226, + 1376 + ], + [ + 1260, + 1408, + 1350 + ], + [ + 618, + 840, + 831 + ], + [ + 1181, + 1183, + 1179 + ], + [ + 1179, + 1184, + 1168 + ], + [ + 1208, + 1274, + 1291 + ], + [ + 1183, + 1184, + 1179 + ], + [ + 1168, + 1184, + 1169 + ], + [ + 1387, + 1395, + 1254 + ], + [ + 1208, + 1204, + 1172 + ], + [ + 1182, + 1197, + 1083 + ], + [ + 1187, + 1083, + 1197 + ], + [ + 1213, + 1183, + 1181 + ], + [ + 1169, + 1207, + 1185 + ], + [ + 135, + 857, + 991 + ], + [ + 1013, + 1213, + 1181 + ], + [ + 1189, + 1183, + 1213 + ], + [ + 1183, + 1189, + 1184 + ], + [ + 1169, + 1184, + 1207 + ], + [ + 1207, + 1190, + 1185 + ], + [ + 1180, + 1389, + 1288 + ], + [ + 1191, + 1192, + 1640 + ], + [ + 1640, + 1192, + 1090 + ], + [ + 1090, + 1205, + 1654 + ], + [ + 1654, + 1205, + 1182 + ], + [ + 1188, + 1395, + 1187 + ], + [ + 1126, + 743, + 1733 + ], + [ + 788, + 859, + 925 + ], + [ + 809, + 1234, + 1171 + ], + [ + 1193, + 1197, + 1182 + ], + [ + 1189, + 1199, + 1184 + ], + [ + 1639, + 1191, + 1637 + ], + [ + 1639, + 1212, + 1191 + ], + [ + 1205, + 1193, + 1182 + ], + [ + 1198, + 1187, + 1197 + ], + [ + 1199, + 1207, + 1184 + ], + [ + 332, + 1053, + 846 + ], + [ + 1090, + 1192, + 1205 + ], + [ + 117, + 1188, + 1187 + ], + [ + 435, + 1188, + 117 + ], + [ + 435, + 1206, + 1188 + ], + [ + 1199, + 1189, + 1213 + ], + [ + 420, + 816, + 1053 + ], + [ + 1212, + 1215, + 1191 + ], + [ + 117, + 1187, + 1198 + ], + [ + 45, + 1206, + 435 + ], + [ + 120, + 1132, + 1133 + ], + [ + 874, + 1116, + 1210 + ], + [ + 1191, + 1215, + 1192 + ], + [ + 1193, + 1216, + 1197 + ], + [ + 1216, + 1198, + 1197 + ], + [ + 1199, + 1214, + 1207 + ], + [ + 117, + 521, + 235 + ], + [ + 1220, + 1311, + 1078 + ], + [ + 1220, + 900, + 1311 + ], + [ + 1653, + 1215, + 1212 + ], + [ + 1192, + 1225, + 1205 + ], + [ + 1205, + 1209, + 1193 + ], + [ + 1209, + 1216, + 1193 + ], + [ + 1389, + 1217, + 1172 + ], + [ + 1207, + 1214, + 454 + ], + [ + 171, + 557, + 1747 + ], + [ + 1805, + 1078, + 1787 + ], + [ + 1805, + 1219, + 1078 + ], + [ + 1198, + 1216, + 868 + ], + [ + 666, + 910, + 854 + ], + [ + 1230, + 1231, + 1213 + ], + [ + 1213, + 1231, + 1199 + ], + [ + 1199, + 1231, + 1214 + ], + [ + 1219, + 1220, + 1078 + ], + [ + 1215, + 1221, + 1192 + ], + [ + 1192, + 1221, + 1225 + ], + [ + 1225, + 1228, + 1205 + ], + [ + 1205, + 1228, + 1209 + ], + [ + 1209, + 1228, + 1216 + ], + [ + 1464, + 1325, + 1223 + ], + [ + 1215, + 1227, + 1221 + ], + [ + 1228, + 1480, + 1216 + ], + [ + 1226, + 1653, + 1376 + ], + [ + 1653, + 1249, + 1215 + ], + [ + 1221, + 1240, + 1225 + ], + [ + 1225, + 1240, + 1228 + ], + [ + 839, + 761, + 840 + ], + [ + 1238, + 1219, + 1805 + ], + [ + 1238, + 1220, + 1219 + ], + [ + 1232, + 1380, + 1375 + ], + [ + 1226, + 1249, + 1653 + ], + [ + 1221, + 1227, + 1240 + ], + [ + 233, + 207, + 532 + ], + [ + 110, + 1236, + 1230 + ], + [ + 1248, + 1231, + 1230 + ], + [ + 1231, + 454, + 1214 + ], + [ + 1249, + 1227, + 1215 + ], + [ + 1248, + 1056, + 1231 + ], + [ + 489, + 959, + 944 + ], + [ + 448, + 1240, + 284 + ], + [ + 925, + 859, + 1242 + ], + [ + 1805, + 1244, + 1238 + ], + [ + 1252, + 1220, + 1238 + ], + [ + 1252, + 921, + 1220 + ], + [ + 1236, + 1251, + 1230 + ], + [ + 1230, + 1251, + 1248 + ], + [ + 1056, + 993, + 1231 + ], + [ + 1031, + 1264, + 1263 + ], + [ + 68, + 1186, + 157 + ], + [ + 1227, + 1245, + 1240 + ], + [ + 1103, + 1245, + 143 + ], + [ + 1243, + 1235, + 612 + ], + [ + 1252, + 95, + 921 + ], + [ + 1249, + 1226, + 1237 + ], + [ + 1390, + 1387, + 1254 + ], + [ + 1120, + 384, + 830 + ], + [ + 830, + 332, + 846 + ], + [ + 1227, + 143, + 1245 + ], + [ + 1315, + 1369, + 1358 + ], + [ + 1356, + 1269, + 1386 + ], + [ + 972, + 795, + 489 + ], + [ + 1831, + 1224, + 310 + ], + [ + 1250, + 1255, + 1251 + ], + [ + 1251, + 1056, + 1248 + ], + [ + 1256, + 1243, + 103 + ], + [ + 658, + 358, + 175 + ], + [ + 1620, + 1238, + 1244 + ], + [ + 1620, + 1252, + 1238 + ], + [ + 1506, + 95, + 1252 + ], + [ + 104, + 1249, + 1237 + ], + [ + 1249, + 143, + 1227 + ], + [ + 1268, + 1419, + 1329 + ], + [ + 634, + 806, + 231 + ], + [ + 618, + 831, + 815 + ], + [ + 924, + 1242, + 839 + ], + [ + 1255, + 1270, + 1251 + ], + [ + 1251, + 1270, + 1056 + ], + [ + 866, + 925, + 1242 + ], + [ + 103, + 29, + 1256 + ], + [ + 424, + 1243, + 1256 + ], + [ + 134, + 1651, + 752 + ], + [ + 1250, + 917, + 1255 + ], + [ + 1172, + 1204, + 1260 + ], + [ + 1352, + 1036, + 1276 + ], + [ + 1265, + 1201, + 1329 + ], + [ + 804, + 1282, + 1259 + ], + [ + 1259, + 1294, + 723 + ], + [ + 335, + 1330, + 1305 + ], + [ + 407, + 762, + 799 + ], + [ + 875, + 856, + 1195 + ], + [ + 32, + 158, + 344 + ], + [ + 967, + 944, + 749 + ], + [ + 372, + 125, + 42 + ], + [ + 1175, + 1354, + 1261 + ], + [ + 553, + 612, + 1235 + ], + [ + 1259, + 1273, + 1294 + ], + [ + 1294, + 1283, + 723 + ], + [ + 757, + 78, + 158 + ], + [ + 407, + 799, + 798 + ], + [ + 901, + 51, + 52 + ], + [ + 139, + 1386, + 1389 + ], + [ + 1386, + 1269, + 1389 + ], + [ + 1389, + 1269, + 1217 + ], + [ + 1148, + 1590, + 1268 + ], + [ + 1428, + 1449, + 1450 + ], + [ + 804, + 1281, + 1282 + ], + [ + 1273, + 1259, + 1282 + ], + [ + 158, + 399, + 779 + ], + [ + 771, + 407, + 798 + ], + [ + 521, + 1098, + 235 + ], + [ + 917, + 1312, + 1255 + ], + [ + 1312, + 1270, + 1255 + ], + [ + 1217, + 1269, + 1393 + ], + [ + 1195, + 1108, + 634 + ], + [ + 1110, + 1106, + 856 + ], + [ + 1210, + 1691, + 1176 + ], + [ + 27, + 1112, + 1145 + ], + [ + 1296, + 27, + 1145 + ], + [ + 1171, + 858, + 791 + ], + [ + 704, + 1148, + 1290 + ], + [ + 1430, + 1436, + 1437 + ], + [ + 1282, + 1308, + 1273 + ], + [ + 1300, + 943, + 1283 + ], + [ + 1393, + 1355, + 1274 + ], + [ + 720, + 1278, + 769 + ], + [ + 1287, + 1059, + 1399 + ], + [ + 1310, + 1388, + 1272 + ], + [ + 1312, + 1321, + 1270 + ], + [ + 851, + 1185, + 1190 + ], + [ + 1296, + 1145, + 1304 + ], + [ + 26, + 24, + 771 + ], + [ + 51, + 910, + 631 + ], + [ + 1329, + 1290, + 1268 + ], + [ + 1290, + 1148, + 1268 + ], + [ + 1298, + 1293, + 733 + ], + [ + 1281, + 1293, + 1282 + ], + [ + 1282, + 1293, + 1308 + ], + [ + 1308, + 1299, + 1273 + ], + [ + 1300, + 1283, + 1294 + ], + [ + 1340, + 943, + 1300 + ], + [ + 1340, + 1301, + 943 + ], + [ + 407, + 754, + 762 + ], + [ + 1287, + 1399, + 1295 + ], + [ + 34, + 139, + 128 + ], + [ + 1288, + 1172, + 1260 + ], + [ + 120, + 1133, + 1114 + ], + [ + 1306, + 1113, + 1511 + ], + [ + 1464, + 1223, + 1292 + ], + [ + 1299, + 1294, + 1273 + ], + [ + 1299, + 1300, + 1294 + ], + [ + 1286, + 1295, + 838 + ], + [ + 1285, + 1247, + 1286 + ], + [ + 1247, + 713, + 1286 + ], + [ + 1201, + 1265, + 1390 + ], + [ + 1378, + 1368, + 1357 + ], + [ + 1482, + 1320, + 917 + ], + [ + 917, + 1320, + 1312 + ], + [ + 850, + 1156, + 1151 + ], + [ + 588, + 39, + 413 + ], + [ + 1324, + 1306, + 686 + ], + [ + 789, + 1365, + 928 + ], + [ + 1223, + 1326, + 1292 + ], + [ + 1292, + 1326, + 1298 + ], + [ + 869, + 1097, + 1311 + ], + [ + 790, + 786, + 561 + ], + [ + 1323, + 1304, + 932 + ], + [ + 1323, + 1296, + 1304 + ], + [ + 1317, + 1324, + 686 + ], + [ + 1306, + 368, + 1113 + ], + [ + 1325, + 1342, + 1223 + ], + [ + 1326, + 1348, + 1298 + ], + [ + 1293, + 1327, + 1308 + ], + [ + 1308, + 1318, + 1299 + ], + [ + 704, + 1290, + 1258 + ], + [ + 1320, + 1321, + 1312 + ], + [ + 761, + 120, + 1114 + ], + [ + 1684, + 802, + 866 + ], + [ + 1674, + 6, + 1727 + ], + [ + 1316, + 1323, + 932 + ], + [ + 1335, + 1337, + 1305 + ], + [ + 1348, + 1327, + 1293 + ], + [ + 1298, + 1348, + 1293 + ], + [ + 1333, + 1300, + 1299 + ], + [ + 1333, + 1343, + 1300 + ], + [ + 1328, + 1301, + 1340 + ], + [ + 1328, + 1314, + 1301 + ], + [ + 838, + 1399, + 1319 + ], + [ + 921, + 1237, + 900 + ], + [ + 409, + 1391, + 1408 + ], + [ + 1376, + 1653, + 677 + ], + [ + 1281, + 804, + 1458 + ], + [ + 1331, + 1324, + 1317 + ], + [ + 1324, + 368, + 1306 + ], + [ + 368, + 1338, + 1307 + ], + [ + 1327, + 797, + 1308 + ], + [ + 797, + 1345, + 1308 + ], + [ + 1308, + 1345, + 1318 + ], + [ + 1318, + 1333, + 1299 + ], + [ + 1341, + 1147, + 1572 + ], + [ + 923, + 1321, + 1320 + ], + [ + 923, + 920, + 1321 + ], + [ + 39, + 588, + 866 + ], + [ + 1141, + 1323, + 1316 + ], + [ + 1330, + 1335, + 1305 + ], + [ + 1337, + 1335, + 1336 + ], + [ + 1339, + 1332, + 1325 + ], + [ + 1223, + 1342, + 1326 + ], + [ + 1342, + 1348, + 1326 + ], + [ + 1348, + 797, + 1327 + ], + [ + 1345, + 1333, + 1318 + ], + [ + 1343, + 1340, + 1300 + ], + [ + 1419, + 1265, + 1329 + ], + [ + 1347, + 1320, + 1584 + ], + [ + 1535, + 1141, + 1316 + ], + [ + 1078, + 1311, + 582 + ], + [ + 1344, + 1335, + 1330 + ], + [ + 753, + 1331, + 1337 + ], + [ + 368, + 1324, + 1331 + ], + [ + 753, + 368, + 1331 + ], + [ + 1332, + 1485, + 1325 + ], + [ + 1325, + 1485, + 1342 + ], + [ + 787, + 1343, + 1333 + ], + [ + 137, + 1328, + 1340 + ], + [ + 973, + 1341, + 1479 + ], + [ + 406, + 1147, + 1341 + ], + [ + 1171, + 1234, + 858 + ], + [ + 1141, + 1535, + 1322 + ], + [ + 49, + 1141, + 1322 + ], + [ + 1344, + 1336, + 1335 + ], + [ + 973, + 908, + 1341 + ], + [ + 766, + 1347, + 1584 + ], + [ + 1347, + 923, + 1320 + ], + [ + 781, + 49, + 1322 + ], + [ + 368, + 232, + 1338 + ], + [ + 787, + 1340, + 1343 + ], + [ + 787, + 137, + 1340 + ], + [ + 568, + 1346, + 973 + ], + [ + 58, + 1147, + 406 + ], + [ + 442, + 1334, + 1147 + ], + [ + 58, + 442, + 1147 + ], + [ + 442, + 766, + 1334 + ], + [ + 90, + 923, + 1347 + ], + [ + 428, + 368, + 753 + ], + [ + 779, + 1333, + 1345 + ], + [ + 825, + 787, + 1333 + ], + [ + 137, + 1349, + 1328 + ], + [ + 1328, + 1346, + 568 + ], + [ + 908, + 406, + 1341 + ], + [ + 924, + 866, + 1242 + ], + [ + 1336, + 753, + 1337 + ], + [ + 428, + 232, + 368 + ], + [ + 1115, + 777, + 1098 + ], + [ + 1348, + 28, + 797 + ], + [ + 797, + 779, + 1345 + ], + [ + 779, + 825, + 1333 + ], + [ + 1007, + 908, + 973 + ], + [ + 583, + 1351, + 880 + ], + [ + 1365, + 1246, + 977 + ], + [ + 1658, + 145, + 1710 + ], + [ + 1310, + 796, + 1388 + ], + [ + 718, + 245, + 165 + ], + [ + 1302, + 1272, + 1254 + ], + [ + 1174, + 1351, + 583 + ], + [ + 1174, + 715, + 1351 + ], + [ + 1358, + 1260, + 1204 + ], + [ + 1374, + 1373, + 1276 + ], + [ + 1377, + 1374, + 1276 + ], + [ + 678, + 1362, + 1382 + ], + [ + 1377, + 1276, + 254 + ], + [ + 139, + 34, + 40 + ], + [ + 1008, + 1174, + 583 + ], + [ + 1396, + 1286, + 1319 + ], + [ + 768, + 891, + 457 + ], + [ + 1316, + 932, + 1535 + ], + [ + 1289, + 1371, + 1360 + ], + [ + 182, + 736, + 864 + ], + [ + 1355, + 1364, + 1274 + ], + [ + 860, + 1367, + 1354 + ], + [ + 1362, + 1222, + 1382 + ], + [ + 1376, + 869, + 1311 + ], + [ + 1590, + 1411, + 198 + ], + [ + 1232, + 1375, + 877 + ], + [ + 1394, + 1295, + 1286 + ], + [ + 880, + 1356, + 1386 + ], + [ + 880, + 1351, + 1356 + ], + [ + 1211, + 1059, + 1287 + ], + [ + 197, + 678, + 1405 + ], + [ + 880, + 1386, + 1003 + ], + [ + 1368, + 1253, + 1357 + ], + [ + 1357, + 1253, + 1036 + ], + [ + 715, + 1289, + 1364 + ], + [ + 1354, + 1367, + 703 + ], + [ + 1383, + 877, + 1375 + ], + [ + 1266, + 1288, + 1260 + ], + [ + 1373, + 1374, + 703 + ], + [ + 1372, + 1289, + 1174 + ], + [ + 1303, + 1366, + 1378 + ], + [ + 1351, + 715, + 1355 + ], + [ + 1665, + 1666, + 624 + ], + [ + 1309, + 1357, + 1036 + ], + [ + 900, + 1237, + 1226 + ], + [ + 1174, + 1289, + 715 + ], + [ + 1337, + 1331, + 1317 + ], + [ + 1360, + 1303, + 1359 + ], + [ + 1267, + 1354, + 1175 + ], + [ + 1241, + 1284, + 1414 + ], + [ + 1377, + 254, + 929 + ], + [ + 1385, + 855, + 836 + ], + [ + 1396, + 1319, + 1436 + ], + [ + 1361, + 1366, + 1303 + ], + [ + 1381, + 1368, + 1378 + ], + [ + 1313, + 1211, + 1391 + ], + [ + 1368, + 1385, + 1363 + ], + [ + 813, + 82, + 861 + ], + [ + 1058, + 1280, + 807 + ], + [ + 893, + 519, + 892 + ], + [ + 1359, + 1303, + 860 + ], + [ + 1382, + 1350, + 1247 + ], + [ + 1371, + 1303, + 1360 + ], + [ + 1267, + 1175, + 1271 + ], + [ + 769, + 1286, + 1396 + ], + [ + 712, + 1837, + 82 + ], + [ + 1366, + 1385, + 1381 + ], + [ + 1365, + 796, + 1310 + ], + [ + 1003, + 1386, + 40 + ], + [ + 780, + 1371, + 1370 + ], + [ + 561, + 862, + 790 + ], + [ + 1284, + 1380, + 864 + ], + [ + 1449, + 1428, + 177 + ], + [ + 611, + 1280, + 1058 + ], + [ + 1284, + 1375, + 1380 + ], + [ + 926, + 506, + 1241 + ], + [ + 1305, + 1337, + 1317 + ], + [ + 309, + 1203, + 208 + ], + [ + 1388, + 1201, + 1390 + ], + [ + 1309, + 1036, + 1352 + ], + [ + 1377, + 929, + 1411 + ], + [ + 1399, + 1059, + 1257 + ], + [ + 1112, + 70, + 1145 + ], + [ + 289, + 1166, + 561 + ], + [ + 1288, + 1389, + 1172 + ], + [ + 1362, + 37, + 1180 + ], + [ + 713, + 1394, + 1286 + ], + [ + 1355, + 1393, + 1269 + ], + [ + 1401, + 1423, + 941 + ], + [ + 1274, + 1271, + 1384 + ], + [ + 860, + 1378, + 1367 + ], + [ + 715, + 1364, + 1355 + ], + [ + 677, + 1406, + 869 + ], + [ + 1297, + 1358, + 1202 + ], + [ + 1388, + 1258, + 1329 + ], + [ + 1180, + 1288, + 1266 + ], + [ + 1008, + 583, + 880 + ], + [ + 1524, + 1425, + 1463 + ], + [ + 1390, + 1403, + 1387 + ], + [ + 1278, + 1379, + 1247 + ], + [ + 1278, + 1247, + 1285 + ], + [ + 964, + 1278, + 1262 + ], + [ + 1358, + 1369, + 1202 + ], + [ + 1715, + 1699, + 1726 + ], + [ + 926, + 1241, + 1414 + ], + [ + 1341, + 1572, + 1479 + ], + [ + 926, + 930, + 916 + ], + [ + 1397, + 51, + 781 + ], + [ + 409, + 1358, + 1297 + ], + [ + 1236, + 436, + 301 + ], + [ + 1376, + 677, + 869 + ], + [ + 1351, + 1355, + 1356 + ], + [ + 758, + 1534, + 1523 + ], + [ + 1378, + 1357, + 1367 + ], + [ + 977, + 1211, + 1365 + ], + [ + 1135, + 1136, + 854 + ], + [ + 1394, + 1391, + 1295 + ], + [ + 1266, + 1260, + 1222 + ], + [ + 1365, + 1302, + 1246 + ], + [ + 1232, + 877, + 844 + ], + [ + 736, + 930, + 864 + ], + [ + 1408, + 1358, + 409 + ], + [ + 1508, + 817, + 1523 + ], + [ + 1381, + 1385, + 1368 + ], + [ + 718, + 854, + 910 + ], + [ + 854, + 718, + 1135 + ], + [ + 1382, + 1222, + 1350 + ], + [ + 1391, + 1211, + 1287 + ], + [ + 1391, + 1287, + 1295 + ], + [ + 1257, + 1651, + 134 + ], + [ + 1414, + 1284, + 864 + ], + [ + 1291, + 1369, + 1315 + ], + [ + 1202, + 928, + 1313 + ], + [ + 86, + 1400, + 1413 + ], + [ + 1413, + 1200, + 86 + ], + [ + 1263, + 1625, + 1031 + ], + [ + 1413, + 1400, + 1404 + ], + [ + 1002, + 1664, + 1834 + ], + [ + 930, + 926, + 1414 + ], + [ + 1399, + 1257, + 134 + ], + [ + 520, + 316, + 596 + ], + [ + 1393, + 1274, + 1208 + ], + [ + 1657, + 1655, + 1712 + ], + [ + 1407, + 1404, + 1400 + ], + [ + 1404, + 1410, + 1413 + ], + [ + 1649, + 1229, + 1406 + ], + [ + 1362, + 1266, + 1222 + ], + [ + 1384, + 1271, + 1175 + ], + [ + 900, + 1376, + 1311 + ], + [ + 1274, + 1384, + 1291 + ], + [ + 1291, + 1384, + 1431 + ], + [ + 1433, + 1396, + 1436 + ], + [ + 1267, + 1359, + 1354 + ], + [ + 309, + 1353, + 703 + ], + [ + 838, + 1319, + 1286 + ], + [ + 1407, + 1410, + 1404 + ], + [ + 441, + 1518, + 773 + ], + [ + 1241, + 123, + 1428 + ], + [ + 1622, + 1521, + 1224 + ], + [ + 1217, + 1208, + 1172 + ], + [ + 1130, + 793, + 1076 + ], + [ + 425, + 1409, + 1481 + ], + [ + 1481, + 1409, + 1533 + ], + [ + 1303, + 1378, + 860 + ], + [ + 1350, + 1408, + 1394 + ], + [ + 1246, + 1651, + 977 + ], + [ + 1289, + 1360, + 1364 + ], + [ + 1727, + 1694, + 1623 + ], + [ + 1417, + 1407, + 1533 + ], + [ + 1417, + 1410, + 1407 + ], + [ + 1406, + 1650, + 1649 + ], + [ + 1319, + 134, + 1437 + ], + [ + 1414, + 864, + 930 + ], + [ + 1406, + 1229, + 1124 + ], + [ + 1354, + 1359, + 860 + ], + [ + 1433, + 769, + 1396 + ], + [ + 1417, + 1533, + 1409 + ], + [ + 1416, + 1413, + 1410 + ], + [ + 1415, + 1416, + 1410 + ], + [ + 95, + 1237, + 921 + ], + [ + 1392, + 1254, + 1395 + ], + [ + 1360, + 1359, + 1267 + ], + [ + 1258, + 1290, + 1329 + ], + [ + 1180, + 128, + 1389 + ], + [ + 1420, + 1409, + 425 + ], + [ + 1417, + 1418, + 1410 + ], + [ + 1418, + 1415, + 1410 + ], + [ + 1422, + 1077, + 1416 + ], + [ + 1247, + 1350, + 1394 + ], + [ + 37, + 43, + 1180 + ], + [ + 1204, + 1315, + 1358 + ], + [ + 1428, + 1383, + 1375 + ], + [ + 1356, + 1355, + 1269 + ], + [ + 1409, + 1418, + 1417 + ], + [ + 1302, + 45, + 1246 + ], + [ + 1421, + 1416, + 1415 + ], + [ + 1421, + 1422, + 1416 + ], + [ + 1422, + 1494, + 1077 + ], + [ + 957, + 720, + 938 + ], + [ + 1423, + 1409, + 1420 + ], + [ + 1423, + 1418, + 1409 + ], + [ + 752, + 434, + 1438 + ], + [ + 1260, + 1358, + 1408 + ], + [ + 1363, + 1385, + 785 + ], + [ + 1423, + 1426, + 1418 + ], + [ + 1426, + 1424, + 1418 + ], + [ + 1229, + 1649, + 1124 + ], + [ + 1222, + 1260, + 1350 + ], + [ + 1508, + 1523, + 1137 + ], + [ + 1278, + 1285, + 769 + ], + [ + 1482, + 917, + 144 + ], + [ + 1418, + 1424, + 1415 + ], + [ + 1425, + 1422, + 1421 + ], + [ + 1425, + 1524, + 1422 + ], + [ + 1272, + 1388, + 1390 + ], + [ + 1391, + 409, + 1313 + ], + [ + 1378, + 1366, + 1381 + ], + [ + 1371, + 483, + 1361 + ], + [ + 720, + 1262, + 1278 + ], + [ + 29, + 103, + 159 + ], + [ + 1271, + 1364, + 1267 + ], + [ + 1424, + 1427, + 1415 + ], + [ + 1537, + 1522, + 1518 + ], + [ + 134, + 752, + 1438 + ], + [ + 1420, + 934, + 941 + ], + [ + 1428, + 1375, + 1284 + ], + [ + 1277, + 1224, + 1831 + ], + [ + 1362, + 1180, + 1266 + ], + [ + 1401, + 1426, + 1423 + ], + [ + 1577, + 1369, + 1291 + ], + [ + 268, + 483, + 262 + ], + [ + 1383, + 1450, + 1456 + ], + [ + 1384, + 1175, + 1431 + ], + [ + 1430, + 1415, + 1427 + ], + [ + 1430, + 1421, + 1415 + ], + [ + 1430, + 1425, + 1421 + ], + [ + 1379, + 1382, + 1247 + ], + [ + 1252, + 1553, + 1429 + ], + [ + 1206, + 1392, + 1395 + ], + [ + 1433, + 1430, + 1427 + ], + [ + 309, + 208, + 1353 + ], + [ + 1272, + 1390, + 1254 + ], + [ + 1361, + 483, + 1366 + ], + [ + 1523, + 817, + 808 + ], + [ + 1302, + 1254, + 1392 + ], + [ + 1371, + 1361, + 1303 + ], + [ + 1426, + 1435, + 1424 + ], + [ + 1435, + 1433, + 1424 + ], + [ + 1433, + 1427, + 1424 + ], + [ + 720, + 769, + 1433 + ], + [ + 796, + 1258, + 1388 + ], + [ + 1590, + 1419, + 1268 + ], + [ + 1289, + 1372, + 1371 + ], + [ + 1305, + 1317, + 1509 + ], + [ + 998, + 1372, + 1174 + ], + [ + 40, + 1386, + 139 + ], + [ + 1261, + 1354, + 703 + ], + [ + 1364, + 1271, + 1274 + ], + [ + 134, + 1438, + 1437 + ], + [ + 1436, + 1319, + 1437 + ], + [ + 1317, + 686, + 1509 + ], + [ + 1484, + 932, + 1304 + ], + [ + 1434, + 1432, + 1509 + ], + [ + 1420, + 65, + 934 + ], + [ + 931, + 930, + 736 + ], + [ + 1367, + 1357, + 1309 + ], + [ + 1372, + 1370, + 1371 + ], + [ + 1204, + 1208, + 1315 + ], + [ + 1426, + 938, + 1435 + ], + [ + 1368, + 1363, + 1253 + ], + [ + 1207, + 454, + 1190 + ], + [ + 1302, + 1310, + 1272 + ], + [ + 309, + 1377, + 390 + ], + [ + 390, + 1377, + 1411 + ], + [ + 1370, + 1372, + 998 + ], + [ + 1411, + 1590, + 1148 + ], + [ + 720, + 1433, + 1435 + ], + [ + 1450, + 1383, + 1428 + ], + [ + 1379, + 678, + 1382 + ], + [ + 1405, + 678, + 1379 + ], + [ + 1208, + 1291, + 1315 + ], + [ + 1399, + 134, + 1319 + ], + [ + 1367, + 1309, + 1373 + ], + [ + 1373, + 1352, + 1276 + ], + [ + 596, + 741, + 593 + ], + [ + 553, + 1264, + 612 + ], + [ + 1433, + 1436, + 1430 + ], + [ + 1437, + 1438, + 1430 + ], + [ + 964, + 1405, + 1379 + ], + [ + 1373, + 1309, + 1352 + ], + [ + 1265, + 1403, + 1390 + ], + [ + 1233, + 1618, + 1434 + ], + [ + 1365, + 1310, + 1302 + ], + [ + 789, + 796, + 1365 + ], + [ + 720, + 1435, + 938 + ], + [ + 128, + 139, + 1389 + ], + [ + 1466, + 933, + 1525 + ], + [ + 1191, + 1640, + 1637 + ], + [ + 1314, + 1442, + 943 + ], + [ + 1141, + 353, + 1323 + ], + [ + 1489, + 1138, + 1474 + ], + [ + 1462, + 1477, + 1440 + ], + [ + 1474, + 1138, + 1488 + ], + [ + 1442, + 1314, + 1443 + ], + [ + 1446, + 1030, + 1546 + ], + [ + 1484, + 1145, + 697 + ], + [ + 1549, + 1443, + 1445 + ], + [ + 1470, + 1572, + 1468 + ], + [ + 1397, + 1239, + 1507 + ], + [ + 1649, + 1825, + 1824 + ], + [ + 1259, + 1440, + 1477 + ], + [ + 1451, + 1450, + 1449 + ], + [ + 978, + 1446, + 652 + ], + [ + 1454, + 1456, + 1451 + ], + [ + 1451, + 1456, + 1450 + ], + [ + 341, + 1507, + 595 + ], + [ + 933, + 1547, + 79 + ], + [ + 804, + 1452, + 1060 + ], + [ + 1454, + 1455, + 1456 + ], + [ + 1398, + 1460, + 1454 + ], + [ + 1455, + 877, + 1456 + ], + [ + 1277, + 1831, + 1825 + ], + [ + 804, + 1060, + 1458 + ], + [ + 1339, + 1459, + 1595 + ], + [ + 1314, + 1104, + 1443 + ], + [ + 933, + 1448, + 1547 + ], + [ + 147, + 1460, + 1398 + ], + [ + 1460, + 1461, + 1454 + ], + [ + 1454, + 1461, + 1455 + ], + [ + 1292, + 1125, + 1464 + ], + [ + 417, + 1531, + 1480 + ], + [ + 1459, + 1339, + 1325 + ], + [ + 811, + 1756, + 335 + ], + [ + 1512, + 936, + 1490 + ], + [ + 777, + 1529, + 1098 + ], + [ + 147, + 1475, + 1460 + ], + [ + 1464, + 253, + 1459 + ], + [ + 836, + 855, + 482 + ], + [ + 1487, + 1486, + 1307 + ], + [ + 1104, + 1501, + 1443 + ], + [ + 1439, + 1200, + 1532 + ], + [ + 1475, + 1469, + 1460 + ], + [ + 1460, + 1469, + 1461 + ], + [ + 1325, + 1464, + 1459 + ], + [ + 1277, + 1825, + 1649 + ], + [ + 1532, + 1200, + 1077 + ], + [ + 844, + 877, + 1455 + ], + [ + 1572, + 933, + 1466 + ], + [ + 1479, + 568, + 973 + ], + [ + 1509, + 335, + 1305 + ], + [ + 1339, + 1595, + 1759 + ], + [ + 1469, + 1476, + 1461 + ], + [ + 1461, + 1476, + 1455 + ], + [ + 1104, + 1470, + 1468 + ], + [ + 1464, + 1472, + 253 + ], + [ + 1117, + 1091, + 1407 + ], + [ + 1756, + 1542, + 335 + ], + [ + 1206, + 1395, + 1188 + ], + [ + 335, + 1542, + 1330 + ], + [ + 835, + 844, + 1455 + ], + [ + 1471, + 1598, + 1462 + ], + [ + 1491, + 1442, + 1441 + ], + [ + 835, + 1455, + 1476 + ], + [ + 1441, + 1442, + 1443 + ], + [ + 1489, + 1474, + 1473 + ], + [ + 1251, + 1236, + 1250 + ], + [ + 1030, + 1452, + 1477 + ], + [ + 1598, + 1439, + 1532 + ], + [ + 978, + 1598, + 1492 + ], + [ + 1426, + 1401, + 938 + ], + [ + 1448, + 1584, + 1482 + ], + [ + 1724, + 1497, + 1475 + ], + [ + 1475, + 1497, + 1469 + ], + [ + 1484, + 1535, + 932 + ], + [ + 1307, + 1486, + 1113 + ], + [ + 1487, + 696, + 1495 + ], + [ + 1037, + 1491, + 1441 + ], + [ + 1030, + 1446, + 936 + ], + [ + 1453, + 1487, + 1495 + ], + [ + 696, + 1467, + 1495 + ], + [ + 1138, + 1489, + 1483 + ], + [ + 1497, + 1143, + 1469 + ], + [ + 1469, + 1143, + 1476 + ], + [ + 652, + 1598, + 978 + ], + [ + 850, + 1043, + 1150 + ], + [ + 1482, + 1584, + 1320 + ], + [ + 1731, + 98, + 1697 + ], + [ + 1113, + 1554, + 1573 + ], + [ + 1524, + 1532, + 1494 + ], + [ + 1496, + 1467, + 696 + ], + [ + 1452, + 1259, + 1477 + ], + [ + 296, + 1504, + 1497 + ], + [ + 1504, + 1143, + 1497 + ], + [ + 1143, + 1499, + 1476 + ], + [ + 718, + 910, + 1498 + ], + [ + 868, + 1540, + 1528 + ], + [ + 817, + 1253, + 810 + ], + [ + 1490, + 696, + 1487 + ], + [ + 1440, + 1491, + 1037 + ], + [ + 1510, + 676, + 595 + ], + [ + 1488, + 1492, + 1517 + ], + [ + 781, + 1239, + 1397 + ], + [ + 1467, + 1519, + 1503 + ], + [ + 1500, + 1307, + 1759 + ], + [ + 1149, + 397, + 452 + ], + [ + 1504, + 1514, + 1143 + ], + [ + 1514, + 842, + 1143 + ], + [ + 1125, + 733, + 1458 + ], + [ + 1503, + 1531, + 1555 + ], + [ + 1276, + 1036, + 1137 + ], + [ + 1440, + 723, + 1123 + ], + [ + 1036, + 1508, + 1137 + ], + [ + 817, + 1508, + 1253 + ], + [ + 103, + 883, + 1112 + ], + [ + 1458, + 731, + 1472 + ], + [ + 1512, + 1490, + 1487 + ], + [ + 1487, + 1453, + 1486 + ], + [ + 1138, + 978, + 1488 + ], + [ + 1036, + 1253, + 1508 + ], + [ + 1398, + 149, + 147 + ], + [ + 1474, + 1517, + 1513 + ], + [ + 1125, + 1458, + 1472 + ], + [ + 1486, + 1453, + 1554 + ], + [ + 1518, + 1534, + 758 + ], + [ + 345, + 1058, + 1062 + ], + [ + 928, + 1202, + 1369 + ], + [ + 1554, + 1541, + 1505 + ], + [ + 1464, + 1125, + 1472 + ], + [ + 1504, + 764, + 1514 + ], + [ + 304, + 426, + 573 + ], + [ + 1505, + 742, + 1506 + ], + [ + 1479, + 1572, + 1478 + ], + [ + 1519, + 1483, + 1489 + ], + [ + 833, + 716, + 1069 + ], + [ + 1522, + 1534, + 1518 + ], + [ + 1115, + 1513, + 777 + ], + [ + 811, + 335, + 1432 + ], + [ + 1591, + 1533, + 1407 + ], + [ + 777, + 1517, + 1529 + ], + [ + 1513, + 1517, + 777 + ], + [ + 1498, + 910, + 1397 + ], + [ + 1069, + 1539, + 833 + ], + [ + 833, + 1539, + 1537 + ], + [ + 1522, + 1551, + 1534 + ], + [ + 1534, + 1551, + 1523 + ], + [ + 1538, + 1137, + 1523 + ], + [ + 910, + 51, + 1397 + ], + [ + 1367, + 1373, + 703 + ], + [ + 1466, + 1525, + 1468 + ], + [ + 157, + 1186, + 1832 + ], + [ + 1429, + 1511, + 1506 + ], + [ + 1573, + 1505, + 1506 + ], + [ + 1259, + 1452, + 804 + ], + [ + 1503, + 1495, + 1467 + ], + [ + 262, + 483, + 780 + ], + [ + 1572, + 1466, + 1468 + ], + [ + 1536, + 1556, + 716 + ], + [ + 716, + 1556, + 1069 + ], + [ + 1544, + 1523, + 1551 + ], + [ + 1544, + 1538, + 1523 + ], + [ + 1511, + 1573, + 1506 + ], + [ + 933, + 1572, + 1448 + ], + [ + 1543, + 1537, + 1539 + ], + [ + 1537, + 1543, + 1522 + ], + [ + 1091, + 933, + 79 + ], + [ + 1519, + 1540, + 1545 + ], + [ + 1549, + 1445, + 86 + ], + [ + 1069, + 1548, + 1539 + ], + [ + 1548, + 1543, + 1539 + ], + [ + 1543, + 1551, + 1522 + ], + [ + 1500, + 1487, + 1307 + ], + [ + 68, + 784, + 1186 + ], + [ + 1552, + 1544, + 1551 + ], + [ + 1550, + 1538, + 1544 + ], + [ + 1538, + 1550, + 1137 + ], + [ + 1519, + 1473, + 1540 + ], + [ + 1547, + 1448, + 1482 + ], + [ + 1560, + 1563, + 1536 + ], + [ + 1536, + 1563, + 1556 + ], + [ + 1556, + 1548, + 1069 + ], + [ + 1543, + 1558, + 1551 + ], + [ + 1137, + 1550, + 1276 + ], + [ + 1453, + 1495, + 1555 + ], + [ + 1561, + 1543, + 1548 + ], + [ + 1543, + 1561, + 1558 + ], + [ + 1558, + 1566, + 1551 + ], + [ + 1552, + 1550, + 1544 + ], + [ + 1569, + 1557, + 1550 + ], + [ + 1557, + 1276, + 1550 + ], + [ + 1276, + 1557, + 254 + ], + [ + 1531, + 1503, + 1480 + ], + [ + 1535, + 1530, + 1510 + ], + [ + 1545, + 1503, + 1519 + ], + [ + 1547, + 1482, + 79 + ], + [ + 1566, + 1552, + 1551 + ], + [ + 1552, + 1569, + 1550 + ], + [ + 1503, + 1545, + 1480 + ], + [ + 703, + 1377, + 309 + ], + [ + 1625, + 675, + 756 + ], + [ + 1037, + 1441, + 88 + ], + [ + 929, + 254, + 1557 + ], + [ + 849, + 1567, + 1560 + ], + [ + 1556, + 1564, + 1548 + ], + [ + 1492, + 1529, + 1517 + ], + [ + 1252, + 1429, + 1506 + ], + [ + 1553, + 1027, + 1429 + ], + [ + 1453, + 1555, + 1541 + ], + [ + 1554, + 1453, + 1541 + ], + [ + 1233, + 686, + 1553 + ], + [ + 1328, + 1104, + 1314 + ], + [ + 1564, + 1576, + 1548 + ], + [ + 1548, + 1576, + 1561 + ], + [ + 1557, + 1562, + 929 + ], + [ + 1520, + 112, + 1668 + ], + [ + 1483, + 1446, + 1138 + ], + [ + 778, + 1570, + 1567 + ], + [ + 1563, + 1564, + 1556 + ], + [ + 1561, + 1565, + 1558 + ], + [ + 1565, + 1566, + 1558 + ], + [ + 1569, + 1552, + 1566 + ], + [ + 1562, + 1557, + 1569 + ], + [ + 1530, + 1535, + 1484 + ], + [ + 1387, + 1402, + 1395 + ], + [ + 1621, + 1634, + 1387 + ], + [ + 1567, + 1568, + 1560 + ], + [ + 1560, + 1568, + 1563 + ], + [ + 1571, + 1569, + 1566 + ], + [ + 1344, + 1330, + 1542 + ], + [ + 1577, + 1431, + 1353 + ], + [ + 1638, + 233, + 304 + ], + [ + 1524, + 1463, + 1529 + ], + [ + 1353, + 1431, + 1175 + ], + [ + 1077, + 1200, + 1413 + ], + [ + 1478, + 1470, + 1104 + ], + [ + 1568, + 1575, + 1563 + ], + [ + 1563, + 1575, + 1564 + ], + [ + 1575, + 1576, + 1564 + ], + [ + 1561, + 1576, + 1565 + ], + [ + 1565, + 1574, + 1566 + ], + [ + 1562, + 1515, + 929 + ], + [ + 1555, + 96, + 1541 + ], + [ + 1531, + 417, + 96 + ], + [ + 1555, + 1531, + 96 + ], + [ + 1246, + 45, + 1651 + ], + [ + 208, + 1577, + 1353 + ], + [ + 1586, + 1568, + 1567 + ], + [ + 1574, + 1571, + 1566 + ], + [ + 1571, + 1583, + 1569 + ], + [ + 1474, + 1513, + 1528 + ], + [ + 1239, + 1322, + 1535 + ], + [ + 1478, + 1572, + 1470 + ], + [ + 1570, + 1586, + 1567 + ], + [ + 1488, + 1517, + 1474 + ], + [ + 8, + 1833, + 1837 + ], + [ + 1123, + 1442, + 1491 + ], + [ + 1589, + 1568, + 1586 + ], + [ + 1576, + 1594, + 1565 + ], + [ + 1565, + 1594, + 1574 + ], + [ + 1562, + 198, + 1515 + ], + [ + 1559, + 1441, + 1549 + ], + [ + 1441, + 1443, + 1549 + ], + [ + 1135, + 425, + 1481 + ], + [ + 1239, + 1535, + 1507 + ], + [ + 1595, + 1487, + 1500 + ], + [ + 1570, + 1585, + 1586 + ], + [ + 1589, + 1578, + 1568 + ], + [ + 1568, + 1578, + 1575 + ], + [ + 1579, + 1569, + 1583 + ], + [ + 1177, + 1577, + 208 + ], + [ + 115, + 1236, + 110 + ], + [ + 1578, + 1593, + 1575 + ], + [ + 1587, + 1576, + 1575 + ], + [ + 1576, + 1581, + 1594 + ], + [ + 1571, + 1582, + 1583 + ], + [ + 1588, + 1579, + 1583 + ], + [ + 1579, + 1580, + 1562 + ], + [ + 1569, + 1579, + 1562 + ], + [ + 1562, + 1580, + 198 + ], + [ + 1027, + 1511, + 1429 + ], + [ + 1589, + 1593, + 1578 + ], + [ + 1587, + 1581, + 1576 + ], + [ + 1582, + 1574, + 1594 + ], + [ + 1574, + 1582, + 1571 + ], + [ + 1575, + 1593, + 1587 + ], + [ + 1583, + 1582, + 1588 + ], + [ + 1580, + 1590, + 198 + ], + [ + 1587, + 1593, + 1581 + ], + [ + 1505, + 1541, + 96 + ], + [ + 1369, + 1577, + 1177 + ], + [ + 1573, + 1554, + 1505 + ], + [ + 1479, + 1478, + 568 + ], + [ + 1585, + 1589, + 1586 + ], + [ + 1369, + 1177, + 704 + ], + [ + 766, + 1584, + 1334 + ], + [ + 977, + 1257, + 1059 + ], + [ + 1091, + 1591, + 1407 + ], + [ + 1591, + 1091, + 1457 + ], + [ + 1585, + 1604, + 1589 + ], + [ + 1581, + 1592, + 1594 + ], + [ + 1602, + 1582, + 1594 + ], + [ + 1582, + 1608, + 1588 + ], + [ + 1608, + 1579, + 1588 + ], + [ + 1579, + 1597, + 1580 + ], + [ + 1419, + 1590, + 1580 + ], + [ + 1597, + 1419, + 1580 + ], + [ + 1431, + 1577, + 1291 + ], + [ + 1589, + 1604, + 1593 + ], + [ + 1601, + 1596, + 1593 + ], + [ + 1593, + 1596, + 1581 + ], + [ + 1306, + 1511, + 1027 + ], + [ + 1511, + 1113, + 1573 + ], + [ + 1786, + 1412, + 1585 + ], + [ + 1412, + 1604, + 1585 + ], + [ + 1581, + 1596, + 1592 + ], + [ + 1592, + 1602, + 1594 + ], + [ + 1608, + 1599, + 1579 + ], + [ + 1599, + 1611, + 1579 + ], + [ + 1579, + 1611, + 1597 + ], + [ + 1512, + 1487, + 253 + ], + [ + 1519, + 1489, + 1473 + ], + [ + 1545, + 1540, + 868 + ], + [ + 1083, + 1187, + 1402 + ], + [ + 1117, + 1407, + 1400 + ], + [ + 1292, + 733, + 1125 + ], + [ + 284, + 1240, + 1245 + ], + [ + 1604, + 1600, + 1593 + ], + [ + 1600, + 1601, + 1593 + ], + [ + 1582, + 1607, + 1608 + ], + [ + 789, + 1369, + 704 + ], + [ + 1467, + 1483, + 1519 + ], + [ + 1601, + 1613, + 1596 + ], + [ + 1596, + 1613, + 1592 + ], + [ + 1602, + 1607, + 1582 + ], + [ + 1620, + 1553, + 1252 + ], + [ + 1601, + 1605, + 1613 + ], + [ + 1592, + 1613, + 1602 + ], + [ + 1602, + 1606, + 1607 + ], + [ + 1608, + 1609, + 1599 + ], + [ + 1599, + 1609, + 1611 + ], + [ + 1603, + 1597, + 1611 + ], + [ + 1265, + 1419, + 1597 + ], + [ + 1603, + 1265, + 1597 + ], + [ + 1392, + 1206, + 45 + ], + [ + 928, + 1369, + 789 + ], + [ + 1474, + 1528, + 1473 + ], + [ + 1104, + 1468, + 1501 + ], + [ + 1412, + 1521, + 1604 + ], + [ + 1613, + 1631, + 1602 + ], + [ + 1607, + 1610, + 1608 + ], + [ + 1608, + 1610, + 1609 + ], + [ + 1476, + 863, + 835 + ], + [ + 1495, + 1503, + 1555 + ], + [ + 1498, + 1397, + 718 + ], + [ + 1520, + 1668, + 7 + ], + [ + 1604, + 1615, + 1600 + ], + [ + 1605, + 1601, + 1600 + ], + [ + 1602, + 1631, + 1606 + ], + [ + 1606, + 1610, + 1607 + ], + [ + 1759, + 1595, + 1500 + ], + [ + 1292, + 1298, + 733 + ], + [ + 1615, + 1604, + 1521 + ], + [ + 1609, + 1603, + 1611 + ], + [ + 652, + 1462, + 1598 + ], + [ + 1468, + 1525, + 1445 + ], + [ + 1443, + 1501, + 1445 + ], + [ + 1134, + 1723, + 150 + ], + [ + 1521, + 1622, + 1615 + ], + [ + 1615, + 1616, + 1600 + ], + [ + 1616, + 1605, + 1600 + ], + [ + 1605, + 1616, + 1612 + ], + [ + 1605, + 1612, + 1613 + ], + [ + 1612, + 1617, + 1613 + ], + [ + 1613, + 1617, + 1631 + ], + [ + 1606, + 1614, + 1610 + ], + [ + 1265, + 1603, + 1403 + ], + [ + 448, + 417, + 1480 + ], + [ + 1595, + 253, + 1487 + ], + [ + 1501, + 1468, + 1445 + ], + [ + 1383, + 1456, + 877 + ], + [ + 1490, + 1496, + 696 + ], + [ + 1610, + 1627, + 1609 + ], + [ + 1627, + 1621, + 1609 + ], + [ + 1591, + 1481, + 1533 + ], + [ + 1598, + 1471, + 1439 + ], + [ + 1353, + 1261, + 703 + ], + [ + 1606, + 1631, + 1614 + ], + [ + 1609, + 1621, + 1403 + ], + [ + 1532, + 1077, + 1494 + ], + [ + 1528, + 1115, + 513 + ], + [ + 1546, + 652, + 1446 + ], + [ + 1211, + 928, + 1365 + ], + [ + 1540, + 1473, + 1528 + ], + [ + 1078, + 1502, + 1787 + ], + [ + 1425, + 1430, + 1438 + ], + [ + 1617, + 1630, + 1631 + ], + [ + 959, + 749, + 944 + ], + [ + 566, + 570, + 603 + ], + [ + 1716, + 310, + 1521 + ], + [ + 775, + 452, + 397 + ], + [ + 1615, + 1636, + 1616 + ], + [ + 1616, + 1636, + 1612 + ], + [ + 1610, + 1632, + 1627 + ], + [ + 789, + 704, + 1258 + ], + [ + 1457, + 1481, + 1591 + ], + [ + 1769, + 1756, + 811 + ], + [ + 207, + 1629, + 722 + ], + [ + 1629, + 1625, + 722 + ], + [ + 1224, + 1277, + 1622 + ], + [ + 1622, + 1636, + 1615 + ], + [ + 1636, + 1646, + 1612 + ], + [ + 1612, + 1630, + 1617 + ], + [ + 1631, + 1626, + 1614 + ], + [ + 1614, + 1632, + 1610 + ], + [ + 1506, + 104, + 95 + ], + [ + 1481, + 1457, + 1136 + ], + [ + 1123, + 943, + 1442 + ], + [ + 936, + 1446, + 1496 + ], + [ + 1499, + 863, + 1476 + ], + [ + 1629, + 1031, + 1625 + ], + [ + 1233, + 1509, + 686 + ], + [ + 1633, + 1634, + 1621 + ], + [ + 1621, + 1387, + 1403 + ], + [ + 1472, + 1512, + 253 + ], + [ + 1177, + 208, + 704 + ], + [ + 1277, + 1636, + 1622 + ], + [ + 1626, + 1632, + 1614 + ], + [ + 1627, + 1633, + 1621 + ], + [ + 936, + 1496, + 1490 + ], + [ + 185, + 1454, + 1451 + ], + [ + 731, + 936, + 1512 + ], + [ + 1638, + 1635, + 207 + ], + [ + 553, + 1263, + 1264 + ], + [ + 1653, + 1212, + 1639 + ], + [ + 1633, + 1627, + 1632 + ], + [ + 1633, + 1387, + 1634 + ], + [ + 1458, + 1060, + 731 + ], + [ + 368, + 1307, + 1113 + ], + [ + 1264, + 1031, + 1629 + ], + [ + 1152, + 850, + 1150 + ], + [ + 1277, + 1644, + 1636 + ], + [ + 1646, + 1637, + 1612 + ], + [ + 1637, + 1630, + 1612 + ], + [ + 1647, + 1631, + 1630 + ], + [ + 1647, + 1626, + 1631 + ], + [ + 1422, + 1524, + 1494 + ], + [ + 1030, + 652, + 1546 + ], + [ + 1635, + 1629, + 207 + ], + [ + 1635, + 1264, + 1629 + ], + [ + 1639, + 1646, + 1636 + ], + [ + 1637, + 1640, + 1630 + ], + [ + 1641, + 1632, + 1626 + ], + [ + 1632, + 1642, + 1633 + ], + [ + 1633, + 1643, + 1387 + ], + [ + 842, + 1499, + 1143 + ], + [ + 865, + 863, + 1499 + ], + [ + 1516, + 978, + 1492 + ], + [ + 67, + 1130, + 784 + ], + [ + 1103, + 1505, + 96 + ], + [ + 88, + 1441, + 1200 + ], + [ + 1644, + 1639, + 1636 + ], + [ + 1640, + 1647, + 1630 + ], + [ + 1647, + 1641, + 1626 + ], + [ + 1633, + 1648, + 1643 + ], + [ + 1492, + 1532, + 1524 + ], + [ + 1488, + 1516, + 1492 + ], + [ + 1037, + 1471, + 1462 + ], + [ + 612, + 1264, + 1635 + ], + [ + 1502, + 1078, + 1124 + ], + [ + 1641, + 1642, + 1632 + ], + [ + 1648, + 1633, + 1642 + ], + [ + 1528, + 513, + 868 + ], + [ + 1492, + 1598, + 1532 + ], + [ + 1095, + 991, + 760 + ], + [ + 679, + 157, + 1664 + ], + [ + 760, + 1128, + 1785 + ], + [ + 1277, + 1650, + 1644 + ], + [ + 320, + 1022, + 244 + ], + [ + 1559, + 1549, + 86 + ], + [ + 1676, + 1520, + 7 + ], + [ + 1488, + 978, + 1516 + ], + [ + 1095, + 760, + 1785 + ], + [ + 1128, + 384, + 1120 + ], + [ + 304, + 312, + 1638 + ], + [ + 1081, + 1638, + 312 + ], + [ + 1081, + 1635, + 1638 + ], + [ + 103, + 612, + 1635 + ], + [ + 652, + 1477, + 1462 + ], + [ + 1650, + 1645, + 1644 + ], + [ + 1645, + 1639, + 1644 + ], + [ + 1639, + 1637, + 1646 + ], + [ + 1640, + 1090, + 1647 + ], + [ + 1654, + 1641, + 1647 + ], + [ + 1654, + 1642, + 1641 + ], + [ + 1654, + 1648, + 1642 + ], + [ + 1643, + 1402, + 1387 + ], + [ + 1432, + 335, + 1509 + ], + [ + 384, + 1128, + 760 + ], + [ + 1652, + 312, + 304 + ], + [ + 103, + 1243, + 612 + ], + [ + 1277, + 1649, + 1650 + ], + [ + 1090, + 1654, + 1647 + ], + [ + 1643, + 1648, + 1402 + ], + [ + 1134, + 324, + 1675 + ], + [ + 679, + 68, + 157 + ], + [ + 1652, + 1081, + 312 + ], + [ + 1136, + 301, + 803 + ], + [ + 1653, + 1639, + 1645 + ], + [ + 723, + 1440, + 1259 + ], + [ + 803, + 854, + 1136 + ], + [ + 104, + 1506, + 742 + ], + [ + 1112, + 159, + 103 + ], + [ + 1654, + 1083, + 1648 + ], + [ + 977, + 1651, + 1257 + ], + [ + 1397, + 1507, + 718 + ], + [ + 1081, + 103, + 1635 + ], + [ + 1650, + 677, + 1645 + ], + [ + 1083, + 1402, + 1648 + ], + [ + 1706, + 1655, + 1671 + ], + [ + 1624, + 1704, + 1711 + ], + [ + 767, + 2, + 1 + ], + [ + 608, + 794, + 294 + ], + [ + 1678, + 1683, + 1686 + ], + [ + 767, + 1682, + 2 + ], + [ + 1669, + 1692, + 1675 + ], + [ + 296, + 1681, + 764 + ], + [ + 1671, + 1656, + 1672 + ], + [ + 17, + 1673, + 1679 + ], + [ + 1706, + 1671, + 1673 + ], + [ + 1662, + 1674, + 1699 + ], + [ + 1655, + 1657, + 1656 + ], + [ + 418, + 84, + 915 + ], + [ + 1526, + 1514, + 764 + ], + [ + 1658, + 1657, + 567 + ], + [ + 870, + 1695, + 764 + ], + [ + 813, + 1697, + 98 + ], + [ + 1659, + 821, + 5 + ], + [ + 60, + 1013, + 848 + ], + [ + 1013, + 110, + 1213 + ], + [ + 661, + 1038, + 1692 + ], + [ + 1660, + 1703, + 17 + ], + [ + 1693, + 1673, + 17 + ], + [ + 1663, + 1715, + 1743 + ], + [ + 1013, + 115, + 110 + ], + [ + 344, + 1733, + 32 + ], + [ + 1670, + 1663, + 1743 + ], + [ + 1670, + 1743, + 1738 + ], + [ + 1677, + 1670, + 1738 + ], + [ + 1661, + 4, + 3 + ], + [ + 1084, + 1683, + 1678 + ], + [ + 1728, + 793, + 1130 + ], + [ + 1683, + 1767, + 1196 + ], + [ + 1677, + 1738, + 1196 + ], + [ + 1279, + 1786, + 853 + ], + [ + 294, + 1038, + 608 + ], + [ + 1279, + 1689, + 1786 + ], + [ + 870, + 18, + 1708 + ], + [ + 870, + 1680, + 1695 + ], + [ + 1705, + 10, + 1670 + ], + [ + 1084, + 1767, + 1683 + ], + [ + 1196, + 1738, + 1686 + ], + [ + 1750, + 870, + 1681 + ], + [ + 1750, + 18, + 870 + ], + [ + 1773, + 1703, + 1660 + ], + [ + 1135, + 47, + 425 + ], + [ + 150, + 323, + 1134 + ], + [ + 1707, + 1655, + 1706 + ], + [ + 1741, + 344, + 1687 + ], + [ + 1685, + 1691, + 1684 + ], + [ + 1684, + 1691, + 802 + ], + [ + 1672, + 1656, + 0 + ], + [ + 1038, + 124, + 608 + ], + [ + 1671, + 1672, + 1690 + ], + [ + 1628, + 1218, + 1767 + ], + [ + 1686, + 1275, + 1667 + ], + [ + 1493, + 1750, + 1681 + ], + [ + 1773, + 18, + 1750 + ], + [ + 1773, + 1660, + 18 + ], + [ + 1679, + 1671, + 16 + ], + [ + 1735, + 1706, + 1673 + ], + [ + 1667, + 1678, + 1686 + ], + [ + 1688, + 1658, + 1 + ], + [ + 1656, + 1688, + 0 + ], + [ + 1293, + 1281, + 1458 + ], + [ + 1698, + 1678, + 1667 + ], + [ + 1696, + 1130, + 1722 + ], + [ + 1698, + 1667, + 1696 + ], + [ + 1715, + 1662, + 1699 + ], + [ + 1692, + 1038, + 294 + ], + [ + 1682, + 767, + 357 + ], + [ + 1669, + 661, + 1692 + ], + [ + 802, + 1702, + 824 + ], + [ + 1028, + 1067, + 1784 + ], + [ + 822, + 1624, + 778 + ], + [ + 119, + 813, + 861 + ], + [ + 1218, + 1670, + 1677 + ], + [ + 1703, + 1693, + 17 + ], + [ + 1658, + 1710, + 1 + ], + [ + 750, + 1730, + 1729 + ], + [ + 1701, + 750, + 1729 + ], + [ + 1693, + 1735, + 1673 + ], + [ + 1731, + 1694, + 98 + ], + [ + 1691, + 1702, + 802 + ], + [ + 783, + 1729, + 1719 + ], + [ + 1680, + 870, + 1708 + ], + [ + 1707, + 1709, + 1655 + ], + [ + 533, + 756, + 675 + ], + [ + 1691, + 1210, + 1702 + ], + [ + 11, + 1705, + 1670 + ], + [ + 1767, + 1218, + 1196 + ], + [ + 1218, + 1677, + 1196 + ], + [ + 1664, + 1716, + 1721 + ], + [ + 1729, + 1725, + 1719 + ], + [ + 1729, + 1072, + 1725 + ], + [ + 1210, + 1116, + 1702 + ], + [ + 1702, + 1720, + 824 + ], + [ + 1682, + 1661, + 2 + ], + [ + 1713, + 1719, + 1721 + ], + [ + 1716, + 1786, + 1713 + ], + [ + 1730, + 1722, + 1072 + ], + [ + 294, + 1717, + 1811 + ], + [ + 1692, + 294, + 1666 + ], + [ + 1659, + 680, + 821 + ], + [ + 824, + 1720, + 1714 + ], + [ + 1726, + 1731, + 1718 + ], + [ + 345, + 1062, + 1045 + ], + [ + 1738, + 1743, + 1275 + ], + [ + 1075, + 1089, + 1071 + ], + [ + 783, + 1719, + 1689 + ], + [ + 1275, + 684, + 1728 + ], + [ + 1692, + 1666, + 1665 + ], + [ + 1675, + 1692, + 1665 + ], + [ + 294, + 1811, + 1666 + ], + [ + 1716, + 1664, + 310 + ], + [ + 1678, + 1698, + 1700 + ], + [ + 6, + 9, + 1727 + ], + [ + 676, + 649, + 595 + ], + [ + 381, + 31, + 361 + ], + [ + 1723, + 1804, + 1772 + ], + [ + 1727, + 9, + 1694 + ], + [ + 1720, + 1089, + 1714 + ], + [ + 1786, + 1716, + 1412 + ], + [ + 1683, + 1196, + 1686 + ], + [ + 1718, + 1697, + 1085 + ], + [ + 1116, + 1739, + 1702 + ], + [ + 1739, + 1734, + 1720 + ], + [ + 1702, + 1739, + 1720 + ], + [ + 1089, + 1720, + 1734 + ], + [ + 509, + 748, + 1745 + ], + [ + 1743, + 1715, + 1726 + ], + [ + 1717, + 294, + 794 + ], + [ + 1116, + 1732, + 1739 + ], + [ + 1718, + 1731, + 1697 + ], + [ + 1696, + 1667, + 1130 + ], + [ + 1134, + 1665, + 1723 + ], + [ + 1694, + 712, + 98 + ], + [ + 101, + 1687, + 102 + ], + [ + 391, + 1736, + 101 + ], + [ + 662, + 636, + 642 + ], + [ + 1734, + 1447, + 1089 + ], + [ + 1089, + 1447, + 1071 + ], + [ + 436, + 99, + 493 + ], + [ + 1689, + 1279, + 783 + ], + [ + 1485, + 1465, + 1342 + ], + [ + 1736, + 1687, + 101 + ], + [ + 344, + 1741, + 1733 + ], + [ + 1741, + 1742, + 1733 + ], + [ + 1735, + 829, + 1706 + ], + [ + 829, + 1707, + 1706 + ], + [ + 1485, + 1332, + 1465 + ], + [ + 952, + 1126, + 1742 + ], + [ + 1747, + 1447, + 1734 + ], + [ + 879, + 892, + 645 + ], + [ + 1730, + 1146, + 1696 + ], + [ + 829, + 1709, + 1707 + ], + [ + 1709, + 1712, + 1655 + ], + [ + 118, + 1739, + 1732 + ], + [ + 1332, + 1744, + 1465 + ], + [ + 1687, + 1749, + 1741 + ], + [ + 1741, + 1758, + 1742 + ], + [ + 679, + 1072, + 68 + ], + [ + 1072, + 1722, + 68 + ], + [ + 118, + 1747, + 1739 + ], + [ + 1747, + 1734, + 1739 + ], + [ + 1465, + 1744, + 1736 + ], + [ + 1736, + 1740, + 1687 + ], + [ + 1704, + 1701, + 783 + ], + [ + 1665, + 624, + 1723 + ], + [ + 1722, + 1130, + 67 + ], + [ + 1025, + 1055, + 467 + ], + [ + 1444, + 14, + 1701 + ], + [ + 558, + 522, + 530 + ], + [ + 1657, + 1658, + 1688 + ], + [ + 1339, + 1746, + 1332 + ], + [ + 1332, + 1748, + 1744 + ], + [ + 1687, + 1740, + 1749 + ], + [ + 1741, + 1749, + 1758 + ], + [ + 1109, + 952, + 1742 + ], + [ + 1747, + 118, + 141 + ], + [ + 1671, + 1690, + 1628 + ], + [ + 1671, + 1628, + 16 + ], + [ + 1657, + 1688, + 1656 + ], + [ + 1745, + 748, + 1447 + ], + [ + 357, + 767, + 1710 + ], + [ + 1746, + 1748, + 1332 + ], + [ + 1146, + 1700, + 1698 + ], + [ + 1759, + 1307, + 1338 + ], + [ + 1239, + 781, + 1322 + ], + [ + 1745, + 1447, + 1747 + ], + [ + 522, + 1745, + 1747 + ], + [ + 316, + 717, + 595 + ], + [ + 148, + 1493, + 1724 + ], + [ + 1758, + 1109, + 1742 + ], + [ + 1725, + 1072, + 679 + ], + [ + 726, + 719, + 1661 + ], + [ + 1695, + 1680, + 1526 + ], + [ + 1772, + 1750, + 1493 + ], + [ + 148, + 1772, + 1493 + ], + [ + 1542, + 1751, + 1101 + ], + [ + 952, + 1109, + 1086 + ], + [ + 1744, + 1752, + 1736 + ], + [ + 1736, + 1752, + 1740 + ], + [ + 1753, + 1755, + 1740 + ], + [ + 391, + 1342, + 1736 + ], + [ + 821, + 112, + 1520 + ], + [ + 557, + 530, + 1747 + ], + [ + 530, + 522, + 1747 + ], + [ + 994, + 879, + 645 + ], + [ + 1542, + 1756, + 1751 + ], + [ + 1813, + 1693, + 1703 + ], + [ + 1746, + 1754, + 1748 + ], + [ + 1748, + 1764, + 1744 + ], + [ + 1752, + 1757, + 1740 + ], + [ + 1740, + 1757, + 1753 + ], + [ + 1749, + 1740, + 1755 + ], + [ + 1755, + 1763, + 1749 + ], + [ + 1763, + 1758, + 1749 + ], + [ + 1275, + 1743, + 684 + ], + [ + 1813, + 1735, + 1693 + ], + [ + 1107, + 1099, + 1101 + ], + [ + 1723, + 624, + 1804 + ], + [ + 1403, + 1603, + 1609 + ], + [ + 1748, + 1754, + 1764 + ], + [ + 1744, + 1757, + 1752 + ], + [ + 1760, + 1109, + 1758 + ], + [ + 1465, + 1736, + 1342 + ], + [ + 436, + 115, + 99 + ], + [ + 1686, + 1738, + 1275 + ], + [ + 1751, + 1766, + 1101 + ], + [ + 1759, + 1754, + 1746 + ], + [ + 1755, + 1753, + 1763 + ], + [ + 1570, + 1279, + 853 + ], + [ + 1701, + 1146, + 750 + ], + [ + 1655, + 1656, + 1671 + ], + [ + 11, + 1670, + 1218 + ], + [ + 1761, + 1751, + 1756 + ], + [ + 1766, + 1107, + 1101 + ], + [ + 1726, + 1623, + 1731 + ], + [ + 1711, + 1704, + 1279 + ], + [ + 67, + 784, + 68 + ], + [ + 558, + 530, + 545 + ], + [ + 1620, + 1618, + 1233 + ], + [ + 1769, + 1761, + 1756 + ], + [ + 102, + 1687, + 344 + ], + [ + 1338, + 1754, + 1759 + ], + [ + 1754, + 232, + 1764 + ], + [ + 1744, + 1765, + 1757 + ], + [ + 1757, + 1763, + 1753 + ], + [ + 1762, + 1760, + 1758 + ], + [ + 1760, + 1771, + 1109 + ], + [ + 1339, + 1759, + 1746 + ], + [ + 1675, + 1665, + 1134 + ], + [ + 1730, + 1696, + 1722 + ], + [ + 1774, + 1751, + 1761 + ], + [ + 1766, + 1780, + 1107 + ], + [ + 1780, + 1105, + 1107 + ], + [ + 1764, + 1765, + 1744 + ], + [ + 1763, + 1762, + 1758 + ], + [ + 1772, + 1773, + 1750 + ], + [ + 1811, + 1813, + 1703 + ], + [ + 1434, + 1769, + 1432 + ], + [ + 1780, + 1766, + 1751 + ], + [ + 232, + 1781, + 1764 + ], + [ + 1711, + 1279, + 1570 + ], + [ + 1688, + 1, + 0 + ], + [ + 1774, + 1780, + 1751 + ], + [ + 1764, + 1781, + 1765 + ], + [ + 1765, + 1768, + 1757 + ], + [ + 1757, + 1768, + 1763 + ], + [ + 1777, + 1782, + 1760 + ], + [ + 1762, + 1777, + 1760 + ], + [ + 1769, + 1774, + 1761 + ], + [ + 1763, + 1777, + 1762 + ], + [ + 1760, + 1782, + 1771 + ], + [ + 232, + 1737, + 1781 + ], + [ + 1768, + 1776, + 1763 + ], + [ + 272, + 255, + 774 + ], + [ + 1669, + 994, + 661 + ], + [ + 1618, + 1769, + 1434 + ], + [ + 1765, + 589, + 1768 + ], + [ + 1770, + 1777, + 1763 + ], + [ + 1701, + 1729, + 783 + ], + [ + 1783, + 1774, + 1769 + ], + [ + 1789, + 1780, + 1774 + ], + [ + 589, + 1775, + 1768 + ], + [ + 1776, + 1770, + 1763 + ], + [ + 1782, + 1778, + 1771 + ], + [ + 1771, + 1778, + 1070 + ], + [ + 624, + 1703, + 1773 + ], + [ + 624, + 1811, + 1703 + ], + [ + 1620, + 1244, + 1618 + ], + [ + 1779, + 1769, + 1618 + ], + [ + 1779, + 1783, + 1769 + ], + [ + 739, + 1735, + 1813 + ], + [ + 1775, + 1776, + 1768 + ], + [ + 1790, + 1777, + 1770 + ], + [ + 1777, + 1778, + 1782 + ], + [ + 1725, + 679, + 1721 + ], + [ + 733, + 1293, + 1458 + ], + [ + 1802, + 1618, + 1244 + ], + [ + 1802, + 1779, + 1618 + ], + [ + 1788, + 1783, + 1779 + ], + [ + 1789, + 1774, + 1783 + ], + [ + 1796, + 1780, + 1789 + ], + [ + 1796, + 1119, + 1780 + ], + [ + 1823, + 1817, + 325 + ], + [ + 1699, + 1727, + 1623 + ], + [ + 750, + 1146, + 1730 + ], + [ + 1497, + 1724, + 296 + ], + [ + 1128, + 1119, + 1796 + ], + [ + 61, + 62, + 71 + ], + [ + 1131, + 413, + 824 + ], + [ + 1114, + 1111, + 249 + ], + [ + 1784, + 1776, + 1775 + ], + [ + 1123, + 723, + 1283 + ], + [ + 1791, + 1788, + 1779 + ], + [ + 1788, + 1789, + 1783 + ], + [ + 1095, + 1797, + 1074 + ], + [ + 1028, + 1784, + 1775 + ], + [ + 1784, + 1770, + 1776 + ], + [ + 1777, + 1790, + 1778 + ], + [ + 1793, + 1797, + 1095 + ], + [ + 1797, + 1800, + 1074 + ], + [ + 1798, + 1790, + 1770 + ], + [ + 1805, + 1802, + 1244 + ], + [ + 1802, + 1791, + 1779 + ], + [ + 1792, + 1789, + 1788 + ], + [ + 1793, + 1785, + 1128 + ], + [ + 1793, + 1095, + 1785 + ], + [ + 1074, + 1800, + 1619 + ], + [ + 741, + 457, + 593 + ], + [ + 1798, + 1770, + 1784 + ], + [ + 1798, + 1794, + 1790 + ], + [ + 1786, + 1689, + 1713 + ], + [ + 684, + 1726, + 1718 + ], + [ + 1728, + 1085, + 793 + ], + [ + 1795, + 1787, + 1502 + ], + [ + 1806, + 1802, + 1805 + ], + [ + 1819, + 1788, + 1791 + ], + [ + 1067, + 1798, + 1784 + ], + [ + 1790, + 1794, + 1778 + ], + [ + 1795, + 1502, + 1124 + ], + [ + 1801, + 1805, + 1787 + ], + [ + 1807, + 1791, + 1802 + ], + [ + 1807, + 1819, + 1791 + ], + [ + 1819, + 1792, + 1788 + ], + [ + 1799, + 1128, + 1796 + ], + [ + 994, + 645, + 661 + ], + [ + 684, + 1085, + 1728 + ], + [ + 684, + 1718, + 1085 + ], + [ + 1699, + 1623, + 1726 + ], + [ + 1801, + 1787, + 1795 + ], + [ + 1808, + 1789, + 1792 + ], + [ + 1808, + 1796, + 1789 + ], + [ + 1799, + 1793, + 1128 + ], + [ + 1809, + 1797, + 1793 + ], + [ + 1809, + 1803, + 1797 + ], + [ + 1803, + 1800, + 1797 + ], + [ + 1067, + 1794, + 1798 + ], + [ + 774, + 255, + 1778 + ], + [ + 1673, + 1671, + 1679 + ], + [ + 879, + 1669, + 888 + ], + [ + 19, + 1807, + 1802 + ], + [ + 1810, + 1619, + 1800 + ], + [ + 879, + 994, + 1669 + ], + [ + 1794, + 774, + 1778 + ], + [ + 1723, + 1772, + 148 + ], + [ + 1804, + 1773, + 1772 + ], + [ + 1814, + 1795, + 1124 + ], + [ + 1649, + 1814, + 1124 + ], + [ + 1814, + 1801, + 1795 + ], + [ + 1812, + 1806, + 1805 + ], + [ + 19, + 1802, + 1806 + ], + [ + 19, + 1819, + 1807 + ], + [ + 1810, + 1800, + 1803 + ], + [ + 1804, + 624, + 1773 + ], + [ + 1714, + 1131, + 824 + ], + [ + 1801, + 1812, + 1805 + ], + [ + 1812, + 19, + 1806 + ], + [ + 1808, + 1792, + 1819 + ], + [ + 1799, + 1809, + 1793 + ], + [ + 1821, + 1810, + 1803 + ], + [ + 1717, + 739, + 1813 + ], + [ + 1061, + 1619, + 1822 + ], + [ + 1794, + 1817, + 774 + ], + [ + 79, + 1482, + 144 + ], + [ + 1815, + 1801, + 1814 + ], + [ + 23, + 1819, + 19 + ], + [ + 589, + 1028, + 1775 + ], + [ + 1817, + 1823, + 774 + ], + [ + 1689, + 1719, + 1713 + ], + [ + 1824, + 1814, + 1649 + ], + [ + 1827, + 1818, + 1801 + ], + [ + 1818, + 1812, + 1801 + ], + [ + 1818, + 19, + 1812 + ], + [ + 1818, + 20, + 19 + ], + [ + 1816, + 1809, + 1799 + ], + [ + 1821, + 1803, + 1809 + ], + [ + 1822, + 1619, + 1810 + ], + [ + 124, + 708, + 608 + ], + [ + 1663, + 10, + 1715 + ], + [ + 1815, + 1827, + 1801 + ], + [ + 1820, + 1808, + 1819 + ], + [ + 23, + 1820, + 1819 + ], + [ + 603, + 1810, + 1821 + ], + [ + 603, + 1822, + 1810 + ], + [ + 1085, + 1697, + 793 + ], + [ + 1628, + 1690, + 11 + ], + [ + 1527, + 1704, + 1624 + ], + [ + 1730, + 1072, + 1729 + ], + [ + 1526, + 1444, + 1704 + ], + [ + 1526, + 1680, + 1444 + ], + [ + 1704, + 1444, + 1701 + ], + [ + 1816, + 1821, + 1809 + ], + [ + 1722, + 67, + 68 + ], + [ + 317, + 272, + 1823 + ], + [ + 1716, + 1713, + 1721 + ], + [ + 16, + 1628, + 1767 + ], + [ + 1527, + 1526, + 1704 + ], + [ + 1824, + 1826, + 1814 + ], + [ + 1814, + 1826, + 1815 + ], + [ + 1818, + 21, + 20 + ], + [ + 1835, + 1808, + 1820 + ], + [ + 603, + 570, + 1822 + ], + [ + 226, + 1070, + 1778 + ], + [ + 1013, + 1181, + 1179 + ], + [ + 1721, + 679, + 1664 + ], + [ + 1717, + 1813, + 1811 + ], + [ + 1828, + 1827, + 1815 + ], + [ + 22, + 1820, + 23 + ], + [ + 22, + 1835, + 1820 + ], + [ + 1830, + 603, + 1821 + ], + [ + 719, + 1659, + 5 + ], + [ + 643, + 567, + 1657 + ], + [ + 1717, + 794, + 739 + ], + [ + 1825, + 1826, + 1824 + ], + [ + 1828, + 1815, + 1826 + ], + [ + 1829, + 21, + 1818 + ], + [ + 1808, + 1835, + 13 + ], + [ + 4, + 719, + 5 + ], + [ + 10, + 1662, + 1715 + ], + [ + 1828, + 1832, + 1827 + ], + [ + 1832, + 1818, + 1827 + ], + [ + 12, + 1833, + 1816 + ], + [ + 1833, + 1821, + 1816 + ], + [ + 1833, + 1830, + 1821 + ], + [ + 14, + 1146, + 1701 + ], + [ + 1186, + 1829, + 1818 + ], + [ + 1280, + 603, + 1830 + ], + [ + 14, + 1700, + 1146 + ], + [ + 1667, + 1728, + 1130 + ], + [ + 1825, + 1834, + 1826 + ], + [ + 1834, + 1828, + 1826 + ], + [ + 1832, + 1186, + 1818 + ], + [ + 1836, + 13, + 1835 + ], + [ + 1624, + 1711, + 1570 + ], + [ + 778, + 1624, + 1570 + ], + [ + 1719, + 1725, + 1721 + ], + [ + 1002, + 1825, + 1831 + ], + [ + 1002, + 1834, + 1825 + ], + [ + 1834, + 1832, + 1828 + ], + [ + 1186, + 21, + 1829 + ], + [ + 1836, + 1835, + 22 + ], + [ + 1837, + 1833, + 12 + ], + [ + 1280, + 1830, + 1833 + ], + [ + 1667, + 1275, + 1728 + ], + [ + 16, + 1767, + 1084 + ], + [ + 589, + 1765, + 1838 + ], + [ + 1765, + 1781, + 1838 + ], + [ + 1781, + 1737, + 1838 + ], + [ + 1737, + 982, + 1838 + ], + [ + 982, + 1053, + 1838 + ], + [ + 1053, + 816, + 1838 + ], + [ + 816, + 589, + 1838 + ] +]; + +export { cells, bunny as default, positions }; diff --git a/web_modules/common/async-iterator-iteration-3872d331.js b/web_modules/common/async-iterator-iteration-3872d331.js deleted file mode 100644 index e63efb81..00000000 --- a/web_modules/common/async-iterator-iteration-3872d331.js +++ /dev/null @@ -1,100 +0,0 @@ -import { g as getIteratorDirect, z as getBuiltIn, a as aCallable, m as anObject, n as functionCall, S as asyncIteratorClose, v as isObject } from './classof-f879816f.js'; - -var $TypeError = TypeError; -var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991 - -var doesNotExceedSafeInteger = function (it) { - if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded'); - return it; -}; - -// https://github.com/tc39/proposal-iterator-helpers -// https://github.com/tc39/proposal-array-from-async - - - - - - - - - -var createMethod = function (TYPE) { - var IS_TO_ARRAY = TYPE == 0; - var IS_FOR_EACH = TYPE == 1; - var IS_EVERY = TYPE == 2; - var IS_SOME = TYPE == 3; - return function (object, fn, target) { - var record = getIteratorDirect(object); - var Promise = getBuiltIn('Promise'); - var iterator = record.iterator; - var next = record.next; - var counter = 0; - var MAPPING = fn !== undefined; - if (MAPPING || !IS_TO_ARRAY) aCallable(fn); - - return new Promise(function (resolve, reject) { - var ifAbruptCloseAsyncIterator = function (error) { - asyncIteratorClose(iterator, reject, error, reject); - }; - - var loop = function () { - try { - if (MAPPING) try { - doesNotExceedSafeInteger(counter); - } catch (error5) { ifAbruptCloseAsyncIterator(error5); } - Promise.resolve(anObject(functionCall(next, iterator))).then(function (step) { - try { - if (anObject(step).done) { - if (IS_TO_ARRAY) { - target.length = counter; - resolve(target); - } else resolve(IS_SOME ? false : IS_EVERY || undefined); - } else { - var value = step.value; - try { - if (MAPPING) { - var result = fn(value, counter); - - var handler = function ($result) { - if (IS_FOR_EACH) { - loop(); - } else if (IS_EVERY) { - $result ? loop() : asyncIteratorClose(iterator, resolve, false, reject); - } else if (IS_TO_ARRAY) { - try { - target[counter++] = $result; - loop(); - } catch (error4) { ifAbruptCloseAsyncIterator(error4); } - } else { - $result ? asyncIteratorClose(iterator, resolve, IS_SOME || value, reject) : loop(); - } - }; - - if (isObject(result)) Promise.resolve(result).then(handler, ifAbruptCloseAsyncIterator); - else handler(result); - } else { - target[counter++] = value; - loop(); - } - } catch (error3) { ifAbruptCloseAsyncIterator(error3); } - } - } catch (error2) { reject(error2); } - }, reject); - } catch (error) { reject(error); } - }; - - loop(); - }); - }; -}; - -var asyncIteratorIteration = { - toArray: createMethod(0), - forEach: createMethod(1), - every: createMethod(2), - some: createMethod(3), - find: createMethod(4) -}; - -export { asyncIteratorIteration as a }; diff --git a/web_modules/common/classof-f879816f.js b/web_modules/common/classof-f879816f.js deleted file mode 100644 index c57a083b..00000000 --- a/web_modules/common/classof-f879816f.js +++ /dev/null @@ -1,1413 +0,0 @@ -var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - -function createCommonjsModule(fn, basedir, module) { - return module = { - path: basedir, - exports: {}, - require: function (path, base) { - return commonjsRequire(path, (base === undefined || base === null) ? module.path : base); - } - }, fn(module, module.exports), module.exports; -} - -function getDefaultExportFromNamespaceIfNotNamed (n) { - return n && Object.prototype.hasOwnProperty.call(n, 'default') && Object.keys(n).length === 1 ? n['default'] : n; -} - -function commonjsRequire () { - throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs'); -} - -var check = function (it) { - return it && it.Math == Math && it; -}; - -// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 -var global_1 = - // eslint-disable-next-line es/no-global-this -- safe - check(typeof globalThis == 'object' && globalThis) || - check(typeof window == 'object' && window) || - // eslint-disable-next-line no-restricted-globals -- safe - check(typeof self == 'object' && self) || - check(typeof commonjsGlobal == 'object' && commonjsGlobal) || - // eslint-disable-next-line no-new-func -- fallback - (function () { return this; })() || Function('return this')(); - -var fails = function (exec) { - try { - return !!exec(); - } catch (error) { - return true; - } -}; - -// Detect IE8's incomplete defineProperty implementation -var descriptors = !fails(function () { - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7; -}); - -var functionBindNative = !fails(function () { - // eslint-disable-next-line es/no-function-prototype-bind -- safe - var test = (function () { /* empty */ }).bind(); - // eslint-disable-next-line no-prototype-builtins -- safe - return typeof test != 'function' || test.hasOwnProperty('prototype'); -}); - -var call = Function.prototype.call; - -var functionCall = functionBindNative ? call.bind(call) : function () { - return call.apply(call, arguments); -}; - -var $propertyIsEnumerable = {}.propertyIsEnumerable; -// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe -var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - -// Nashorn ~ JDK8 bug -var NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1); - -// `Object.prototype.propertyIsEnumerable` method implementation -// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable -var f = NASHORN_BUG ? function propertyIsEnumerable(V) { - var descriptor = getOwnPropertyDescriptor(this, V); - return !!descriptor && descriptor.enumerable; -} : $propertyIsEnumerable; - -var objectPropertyIsEnumerable = { - f: f -}; - -var createPropertyDescriptor = function (bitmap, value) { - return { - enumerable: !(bitmap & 1), - configurable: !(bitmap & 2), - writable: !(bitmap & 4), - value: value - }; -}; - -var FunctionPrototype = Function.prototype; -var call$1 = FunctionPrototype.call; -var uncurryThisWithBind = functionBindNative && FunctionPrototype.bind.bind(call$1, call$1); - -var functionUncurryThis = functionBindNative ? uncurryThisWithBind : function (fn) { - return function () { - return call$1.apply(fn, arguments); - }; -}; - -var toString = functionUncurryThis({}.toString); -var stringSlice = functionUncurryThis(''.slice); - -var classofRaw = function (it) { - return stringSlice(toString(it), 8, -1); -}; - -var $Object = Object; -var split = functionUncurryThis(''.split); - -// fallback for non-array-like ES3 and non-enumerable old V8 strings -var indexedObject = fails(function () { - // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 - // eslint-disable-next-line no-prototype-builtins -- safe - return !$Object('z').propertyIsEnumerable(0); -}) ? function (it) { - return classofRaw(it) == 'String' ? split(it, '') : $Object(it); -} : $Object; - -// we can't use just `it == null` since of `document.all` special case -// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec -var isNullOrUndefined = function (it) { - return it === null || it === undefined; -}; - -var $TypeError = TypeError; - -// `RequireObjectCoercible` abstract operation -// https://tc39.es/ecma262/#sec-requireobjectcoercible -var requireObjectCoercible = function (it) { - if (isNullOrUndefined(it)) throw $TypeError("Can't call method on " + it); - return it; -}; - -// toObject with fallback for non-array-like ES3 strings - - - -var toIndexedObject = function (it) { - return indexedObject(requireObjectCoercible(it)); -}; - -var documentAll = typeof document == 'object' && document.all; - -// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot -// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing -var IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined; - -var documentAll_1 = { - all: documentAll, - IS_HTMLDDA: IS_HTMLDDA -}; - -var documentAll$1 = documentAll_1.all; - -// `IsCallable` abstract operation -// https://tc39.es/ecma262/#sec-iscallable -var isCallable = documentAll_1.IS_HTMLDDA ? function (argument) { - return typeof argument == 'function' || argument === documentAll$1; -} : function (argument) { - return typeof argument == 'function'; -}; - -var documentAll$2 = documentAll_1.all; - -var isObject = documentAll_1.IS_HTMLDDA ? function (it) { - return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll$2; -} : function (it) { - return typeof it == 'object' ? it !== null : isCallable(it); -}; - -var aFunction = function (argument) { - return isCallable(argument) ? argument : undefined; -}; - -var getBuiltIn = function (namespace, method) { - return arguments.length < 2 ? aFunction(global_1[namespace]) : global_1[namespace] && global_1[namespace][method]; -}; - -var objectIsPrototypeOf = functionUncurryThis({}.isPrototypeOf); - -var engineUserAgent = typeof navigator != 'undefined' && String(navigator.userAgent) || ''; - -var process = global_1.process; -var Deno = global_1.Deno; -var versions = process && process.versions || Deno && Deno.version; -var v8 = versions && versions.v8; -var match, version; - -if (v8) { - match = v8.split('.'); - // in old Chrome, versions of V8 isn't V8 = Chrome / 10 - // but their correct versions are not interesting for us - version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]); -} - -// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0` -// so check `userAgent` even if `.v8` exists, but 0 -if (!version && engineUserAgent) { - match = engineUserAgent.match(/Edge\/(\d+)/); - if (!match || match[1] >= 74) { - match = engineUserAgent.match(/Chrome\/(\d+)/); - if (match) version = +match[1]; - } -} - -var engineV8Version = version; - -/* eslint-disable es/no-symbol -- required for testing */ - - - -// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing -var symbolConstructorDetection = !!Object.getOwnPropertySymbols && !fails(function () { - var symbol = Symbol(); - // Chrome 38 Symbol has incorrect toString conversion - // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances - return !String(symbol) || !(Object(symbol) instanceof Symbol) || - // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances - !Symbol.sham && engineV8Version && engineV8Version < 41; -}); - -/* eslint-disable es/no-symbol -- required for testing */ - - -var useSymbolAsUid = symbolConstructorDetection - && !Symbol.sham - && typeof Symbol.iterator == 'symbol'; - -var $Object$1 = Object; - -var isSymbol = useSymbolAsUid ? function (it) { - return typeof it == 'symbol'; -} : function (it) { - var $Symbol = getBuiltIn('Symbol'); - return isCallable($Symbol) && objectIsPrototypeOf($Symbol.prototype, $Object$1(it)); -}; - -var $String = String; - -var tryToString = function (argument) { - try { - return $String(argument); - } catch (error) { - return 'Object'; - } -}; - -var $TypeError$1 = TypeError; - -// `Assert: IsCallable(argument) is true` -var aCallable = function (argument) { - if (isCallable(argument)) return argument; - throw $TypeError$1(tryToString(argument) + ' is not a function'); -}; - -// `GetMethod` abstract operation -// https://tc39.es/ecma262/#sec-getmethod -var getMethod = function (V, P) { - var func = V[P]; - return isNullOrUndefined(func) ? undefined : aCallable(func); -}; - -var $TypeError$2 = TypeError; - -// `OrdinaryToPrimitive` abstract operation -// https://tc39.es/ecma262/#sec-ordinarytoprimitive -var ordinaryToPrimitive = function (input, pref) { - var fn, val; - if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = functionCall(fn, input))) return val; - if (isCallable(fn = input.valueOf) && !isObject(val = functionCall(fn, input))) return val; - if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = functionCall(fn, input))) return val; - throw $TypeError$2("Can't convert object to primitive value"); -}; - -// eslint-disable-next-line es/no-object-defineproperty -- safe -var defineProperty = Object.defineProperty; - -var defineGlobalProperty = function (key, value) { - try { - defineProperty(global_1, key, { value: value, configurable: true, writable: true }); - } catch (error) { - global_1[key] = value; - } return value; -}; - -var SHARED = '__core-js_shared__'; -var store = global_1[SHARED] || defineGlobalProperty(SHARED, {}); - -var sharedStore = store; - -var shared = createCommonjsModule(function (module) { -(module.exports = function (key, value) { - return sharedStore[key] || (sharedStore[key] = value !== undefined ? value : {}); -})('versions', []).push({ - version: '3.28.0', - mode: 'global', - copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)', - license: 'https://github.com/zloirock/core-js/blob/v3.28.0/LICENSE', - source: 'https://github.com/zloirock/core-js' -}); -}); - -var $Object$2 = Object; - -// `ToObject` abstract operation -// https://tc39.es/ecma262/#sec-toobject -var toObject = function (argument) { - return $Object$2(requireObjectCoercible(argument)); -}; - -var hasOwnProperty = functionUncurryThis({}.hasOwnProperty); - -// `HasOwnProperty` abstract operation -// https://tc39.es/ecma262/#sec-hasownproperty -// eslint-disable-next-line es/no-object-hasown -- safe -var hasOwnProperty_1 = Object.hasOwn || function hasOwn(it, key) { - return hasOwnProperty(toObject(it), key); -}; - -var id = 0; -var postfix = Math.random(); -var toString$1 = functionUncurryThis(1.0.toString); - -var uid = function (key) { - return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString$1(++id + postfix, 36); -}; - -var Symbol$1 = global_1.Symbol; -var WellKnownSymbolsStore = shared('wks'); -var createWellKnownSymbol = useSymbolAsUid ? Symbol$1['for'] || Symbol$1 : Symbol$1 && Symbol$1.withoutSetter || uid; - -var wellKnownSymbol = function (name) { - if (!hasOwnProperty_1(WellKnownSymbolsStore, name)) { - WellKnownSymbolsStore[name] = symbolConstructorDetection && hasOwnProperty_1(Symbol$1, name) - ? Symbol$1[name] - : createWellKnownSymbol('Symbol.' + name); - } return WellKnownSymbolsStore[name]; -}; - -var $TypeError$3 = TypeError; -var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); - -// `ToPrimitive` abstract operation -// https://tc39.es/ecma262/#sec-toprimitive -var toPrimitive = function (input, pref) { - if (!isObject(input) || isSymbol(input)) return input; - var exoticToPrim = getMethod(input, TO_PRIMITIVE); - var result; - if (exoticToPrim) { - if (pref === undefined) pref = 'default'; - result = functionCall(exoticToPrim, input, pref); - if (!isObject(result) || isSymbol(result)) return result; - throw $TypeError$3("Can't convert object to primitive value"); - } - if (pref === undefined) pref = 'number'; - return ordinaryToPrimitive(input, pref); -}; - -// `ToPropertyKey` abstract operation -// https://tc39.es/ecma262/#sec-topropertykey -var toPropertyKey = function (argument) { - var key = toPrimitive(argument, 'string'); - return isSymbol(key) ? key : key + ''; -}; - -var document$1 = global_1.document; -// typeof document.createElement is 'object' in old IE -var EXISTS = isObject(document$1) && isObject(document$1.createElement); - -var documentCreateElement = function (it) { - return EXISTS ? document$1.createElement(it) : {}; -}; - -// Thanks to IE8 for its funny defineProperty -var ie8DomDefine = !descriptors && !fails(function () { - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - return Object.defineProperty(documentCreateElement('div'), 'a', { - get: function () { return 7; } - }).a != 7; -}); - -// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe -var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - -// `Object.getOwnPropertyDescriptor` method -// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor -var f$1 = descriptors ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { - O = toIndexedObject(O); - P = toPropertyKey(P); - if (ie8DomDefine) try { - return $getOwnPropertyDescriptor(O, P); - } catch (error) { /* empty */ } - if (hasOwnProperty_1(O, P)) return createPropertyDescriptor(!functionCall(objectPropertyIsEnumerable.f, O, P), O[P]); -}; - -var objectGetOwnPropertyDescriptor = { - f: f$1 -}; - -// V8 ~ Chrome 36- -// https://bugs.chromium.org/p/v8/issues/detail?id=3334 -var v8PrototypeDefineBug = descriptors && fails(function () { - // eslint-disable-next-line es/no-object-defineproperty -- required for testing - return Object.defineProperty(function () { /* empty */ }, 'prototype', { - value: 42, - writable: false - }).prototype != 42; -}); - -var $String$1 = String; -var $TypeError$4 = TypeError; - -// `Assert: Type(argument) is Object` -var anObject = function (argument) { - if (isObject(argument)) return argument; - throw $TypeError$4($String$1(argument) + ' is not an object'); -}; - -var $TypeError$5 = TypeError; -// eslint-disable-next-line es/no-object-defineproperty -- safe -var $defineProperty = Object.defineProperty; -// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe -var $getOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor; -var ENUMERABLE = 'enumerable'; -var CONFIGURABLE = 'configurable'; -var WRITABLE = 'writable'; - -// `Object.defineProperty` method -// https://tc39.es/ecma262/#sec-object.defineproperty -var f$2 = descriptors ? v8PrototypeDefineBug ? function defineProperty(O, P, Attributes) { - anObject(O); - P = toPropertyKey(P); - anObject(Attributes); - if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) { - var current = $getOwnPropertyDescriptor$1(O, P); - if (current && current[WRITABLE]) { - O[P] = Attributes.value; - Attributes = { - configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE], - enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE], - writable: false - }; - } - } return $defineProperty(O, P, Attributes); -} : $defineProperty : function defineProperty(O, P, Attributes) { - anObject(O); - P = toPropertyKey(P); - anObject(Attributes); - if (ie8DomDefine) try { - return $defineProperty(O, P, Attributes); - } catch (error) { /* empty */ } - if ('get' in Attributes || 'set' in Attributes) throw $TypeError$5('Accessors not supported'); - if ('value' in Attributes) O[P] = Attributes.value; - return O; -}; - -var objectDefineProperty = { - f: f$2 -}; - -var createNonEnumerableProperty = descriptors ? function (object, key, value) { - return objectDefineProperty.f(object, key, createPropertyDescriptor(1, value)); -} : function (object, key, value) { - object[key] = value; - return object; -}; - -var FunctionPrototype$1 = Function.prototype; -// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe -var getDescriptor = descriptors && Object.getOwnPropertyDescriptor; - -var EXISTS$1 = hasOwnProperty_1(FunctionPrototype$1, 'name'); -// additional protection from minified / mangled / dropped function names -var PROPER = EXISTS$1 && (function something() { /* empty */ }).name === 'something'; -var CONFIGURABLE$1 = EXISTS$1 && (!descriptors || (descriptors && getDescriptor(FunctionPrototype$1, 'name').configurable)); - -var functionName = { - EXISTS: EXISTS$1, - PROPER: PROPER, - CONFIGURABLE: CONFIGURABLE$1 -}; - -var functionToString = functionUncurryThis(Function.toString); - -// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper -if (!isCallable(sharedStore.inspectSource)) { - sharedStore.inspectSource = function (it) { - return functionToString(it); - }; -} - -var inspectSource = sharedStore.inspectSource; - -var WeakMap = global_1.WeakMap; - -var weakMapBasicDetection = isCallable(WeakMap) && /native code/.test(String(WeakMap)); - -var keys = shared('keys'); - -var sharedKey = function (key) { - return keys[key] || (keys[key] = uid(key)); -}; - -var hiddenKeys = {}; - -var OBJECT_ALREADY_INITIALIZED = 'Object already initialized'; -var TypeError$1 = global_1.TypeError; -var WeakMap$1 = global_1.WeakMap; -var set, get, has; - -var enforce = function (it) { - return has(it) ? get(it) : set(it, {}); -}; - -var getterFor = function (TYPE) { - return function (it) { - var state; - if (!isObject(it) || (state = get(it)).type !== TYPE) { - throw TypeError$1('Incompatible receiver, ' + TYPE + ' required'); - } return state; - }; -}; - -if (weakMapBasicDetection || sharedStore.state) { - var store$1 = sharedStore.state || (sharedStore.state = new WeakMap$1()); - /* eslint-disable no-self-assign -- prototype methods protection */ - store$1.get = store$1.get; - store$1.has = store$1.has; - store$1.set = store$1.set; - /* eslint-enable no-self-assign -- prototype methods protection */ - set = function (it, metadata) { - if (store$1.has(it)) throw TypeError$1(OBJECT_ALREADY_INITIALIZED); - metadata.facade = it; - store$1.set(it, metadata); - return metadata; - }; - get = function (it) { - return store$1.get(it) || {}; - }; - has = function (it) { - return store$1.has(it); - }; -} else { - var STATE = sharedKey('state'); - hiddenKeys[STATE] = true; - set = function (it, metadata) { - if (hasOwnProperty_1(it, STATE)) throw TypeError$1(OBJECT_ALREADY_INITIALIZED); - metadata.facade = it; - createNonEnumerableProperty(it, STATE, metadata); - return metadata; - }; - get = function (it) { - return hasOwnProperty_1(it, STATE) ? it[STATE] : {}; - }; - has = function (it) { - return hasOwnProperty_1(it, STATE); - }; -} - -var internalState = { - set: set, - get: get, - has: has, - enforce: enforce, - getterFor: getterFor -}; - -var makeBuiltIn_1 = createCommonjsModule(function (module) { -var CONFIGURABLE_FUNCTION_NAME = functionName.CONFIGURABLE; - - - -var enforceInternalState = internalState.enforce; -var getInternalState = internalState.get; -var $String = String; -// eslint-disable-next-line es/no-object-defineproperty -- safe -var defineProperty = Object.defineProperty; -var stringSlice = functionUncurryThis(''.slice); -var replace = functionUncurryThis(''.replace); -var join = functionUncurryThis([].join); - -var CONFIGURABLE_LENGTH = descriptors && !fails(function () { - return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8; -}); - -var TEMPLATE = String(String).split('String'); - -var makeBuiltIn = module.exports = function (value, name, options) { - if (stringSlice($String(name), 0, 7) === 'Symbol(') { - name = '[' + replace($String(name), /^Symbol\(([^)]*)\)/, '$1') + ']'; - } - if (options && options.getter) name = 'get ' + name; - if (options && options.setter) name = 'set ' + name; - if (!hasOwnProperty_1(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) { - if (descriptors) defineProperty(value, 'name', { value: name, configurable: true }); - else value.name = name; - } - if (CONFIGURABLE_LENGTH && options && hasOwnProperty_1(options, 'arity') && value.length !== options.arity) { - defineProperty(value, 'length', { value: options.arity }); - } - try { - if (options && hasOwnProperty_1(options, 'constructor') && options.constructor) { - if (descriptors) defineProperty(value, 'prototype', { writable: false }); - // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable - } else if (value.prototype) value.prototype = undefined; - } catch (error) { /* empty */ } - var state = enforceInternalState(value); - if (!hasOwnProperty_1(state, 'source')) { - state.source = join(TEMPLATE, typeof name == 'string' ? name : ''); - } return value; -}; - -// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative -// eslint-disable-next-line no-extend-native -- required -Function.prototype.toString = makeBuiltIn(function toString() { - return isCallable(this) && getInternalState(this).source || inspectSource(this); -}, 'toString'); -}); - -var defineBuiltIn = function (O, key, value, options) { - if (!options) options = {}; - var simple = options.enumerable; - var name = options.name !== undefined ? options.name : key; - if (isCallable(value)) makeBuiltIn_1(value, name, options); - if (options.global) { - if (simple) O[key] = value; - else defineGlobalProperty(key, value); - } else { - try { - if (!options.unsafe) delete O[key]; - else if (O[key]) simple = true; - } catch (error) { /* empty */ } - if (simple) O[key] = value; - else objectDefineProperty.f(O, key, { - value: value, - enumerable: false, - configurable: !options.nonConfigurable, - writable: !options.nonWritable - }); - } return O; -}; - -var ceil = Math.ceil; -var floor = Math.floor; - -// `Math.trunc` method -// https://tc39.es/ecma262/#sec-math.trunc -// eslint-disable-next-line es/no-math-trunc -- safe -var mathTrunc = Math.trunc || function trunc(x) { - var n = +x; - return (n > 0 ? floor : ceil)(n); -}; - -// `ToIntegerOrInfinity` abstract operation -// https://tc39.es/ecma262/#sec-tointegerorinfinity -var toIntegerOrInfinity = function (argument) { - var number = +argument; - // eslint-disable-next-line no-self-compare -- NaN check - return number !== number || number === 0 ? 0 : mathTrunc(number); -}; - -var max = Math.max; -var min = Math.min; - -// Helper for a popular repeating case of the spec: -// Let integer be ? ToInteger(index). -// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length). -var toAbsoluteIndex = function (index, length) { - var integer = toIntegerOrInfinity(index); - return integer < 0 ? max(integer + length, 0) : min(integer, length); -}; - -var min$1 = Math.min; - -// `ToLength` abstract operation -// https://tc39.es/ecma262/#sec-tolength -var toLength = function (argument) { - return argument > 0 ? min$1(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 -}; - -// `LengthOfArrayLike` abstract operation -// https://tc39.es/ecma262/#sec-lengthofarraylike -var lengthOfArrayLike = function (obj) { - return toLength(obj.length); -}; - -// `Array.prototype.{ indexOf, includes }` methods implementation -var createMethod = function (IS_INCLUDES) { - return function ($this, el, fromIndex) { - var O = toIndexedObject($this); - var length = lengthOfArrayLike(O); - var index = toAbsoluteIndex(fromIndex, length); - var value; - // Array#includes uses SameValueZero equality algorithm - // eslint-disable-next-line no-self-compare -- NaN check - if (IS_INCLUDES && el != el) while (length > index) { - value = O[index++]; - // eslint-disable-next-line no-self-compare -- NaN check - if (value != value) return true; - // Array#indexOf ignores holes, Array#includes - not - } else for (;length > index; index++) { - if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; - } return !IS_INCLUDES && -1; - }; -}; - -var arrayIncludes = { - // `Array.prototype.includes` method - // https://tc39.es/ecma262/#sec-array.prototype.includes - includes: createMethod(true), - // `Array.prototype.indexOf` method - // https://tc39.es/ecma262/#sec-array.prototype.indexof - indexOf: createMethod(false) -}; - -var indexOf = arrayIncludes.indexOf; - - -var push = functionUncurryThis([].push); - -var objectKeysInternal = function (object, names) { - var O = toIndexedObject(object); - var i = 0; - var result = []; - var key; - for (key in O) !hasOwnProperty_1(hiddenKeys, key) && hasOwnProperty_1(O, key) && push(result, key); - // Don't enum bug & hidden keys - while (names.length > i) if (hasOwnProperty_1(O, key = names[i++])) { - ~indexOf(result, key) || push(result, key); - } - return result; -}; - -// IE8- don't enum bug keys -var enumBugKeys = [ - 'constructor', - 'hasOwnProperty', - 'isPrototypeOf', - 'propertyIsEnumerable', - 'toLocaleString', - 'toString', - 'valueOf' -]; - -var hiddenKeys$1 = enumBugKeys.concat('length', 'prototype'); - -// `Object.getOwnPropertyNames` method -// https://tc39.es/ecma262/#sec-object.getownpropertynames -// eslint-disable-next-line es/no-object-getownpropertynames -- safe -var f$3 = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return objectKeysInternal(O, hiddenKeys$1); -}; - -var objectGetOwnPropertyNames = { - f: f$3 -}; - -// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe -var f$4 = Object.getOwnPropertySymbols; - -var objectGetOwnPropertySymbols = { - f: f$4 -}; - -var concat = functionUncurryThis([].concat); - -// all object keys, includes non-enumerable and symbols -var ownKeys = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) { - var keys = objectGetOwnPropertyNames.f(anObject(it)); - var getOwnPropertySymbols = objectGetOwnPropertySymbols.f; - return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys; -}; - -var copyConstructorProperties = function (target, source, exceptions) { - var keys = ownKeys(source); - var defineProperty = objectDefineProperty.f; - var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f; - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (!hasOwnProperty_1(target, key) && !(exceptions && hasOwnProperty_1(exceptions, key))) { - defineProperty(target, key, getOwnPropertyDescriptor(source, key)); - } - } -}; - -var replacement = /#|\.prototype\./; - -var isForced = function (feature, detection) { - var value = data[normalize(feature)]; - return value == POLYFILL ? true - : value == NATIVE ? false - : isCallable(detection) ? fails(detection) - : !!detection; -}; - -var normalize = isForced.normalize = function (string) { - return String(string).replace(replacement, '.').toLowerCase(); -}; - -var data = isForced.data = {}; -var NATIVE = isForced.NATIVE = 'N'; -var POLYFILL = isForced.POLYFILL = 'P'; - -var isForced_1 = isForced; - -var getOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f; - - - - - - -/* - options.target - name of the target object - options.global - target is the global object - options.stat - export as static methods of target - options.proto - export as prototype methods of target - options.real - real prototype method for the `pure` version - options.forced - export even if the native feature is available - options.bind - bind methods to the target, required for the `pure` version - options.wrap - wrap constructors to preventing global pollution, required for the `pure` version - options.unsafe - use the simple assignment of property instead of delete + defineProperty - options.sham - add a flag to not completely full polyfills - options.enumerable - export as enumerable property - options.dontCallGetSet - prevent calling a getter on target - options.name - the .name of the function if it does not match the key -*/ -var _export = function (options, source) { - var TARGET = options.target; - var GLOBAL = options.global; - var STATIC = options.stat; - var FORCED, target, key, targetProperty, sourceProperty, descriptor; - if (GLOBAL) { - target = global_1; - } else if (STATIC) { - target = global_1[TARGET] || defineGlobalProperty(TARGET, {}); - } else { - target = (global_1[TARGET] || {}).prototype; - } - if (target) for (key in source) { - sourceProperty = source[key]; - if (options.dontCallGetSet) { - descriptor = getOwnPropertyDescriptor$1(target, key); - targetProperty = descriptor && descriptor.value; - } else targetProperty = target[key]; - FORCED = isForced_1(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); - // contained in target - if (!FORCED && targetProperty !== undefined) { - if (typeof sourceProperty == typeof targetProperty) continue; - copyConstructorProperties(sourceProperty, targetProperty); - } - // add a flag to not completely full polyfills - if (options.sham || (targetProperty && targetProperty.sham)) { - createNonEnumerableProperty(sourceProperty, 'sham', true); - } - defineBuiltIn(target, key, sourceProperty, options); - } -}; - -var getIteratorDirect = function (obj) { - return { - iterator: obj, - next: aCallable(anObject(obj).next) - }; -}; - -var perform = function (exec) { - try { - return { error: false, value: exec() }; - } catch (error) { - return { error: true, value: error }; - } -}; - -// `Object.keys` method -// https://tc39.es/ecma262/#sec-object.keys -// eslint-disable-next-line es/no-object-keys -- safe -var objectKeys = Object.keys || function keys(O) { - return objectKeysInternal(O, enumBugKeys); -}; - -// `Object.defineProperties` method -// https://tc39.es/ecma262/#sec-object.defineproperties -// eslint-disable-next-line es/no-object-defineproperties -- safe -var f$5 = descriptors && !v8PrototypeDefineBug ? Object.defineProperties : function defineProperties(O, Properties) { - anObject(O); - var props = toIndexedObject(Properties); - var keys = objectKeys(Properties); - var length = keys.length; - var index = 0; - var key; - while (length > index) objectDefineProperty.f(O, key = keys[index++], props[key]); - return O; -}; - -var objectDefineProperties = { - f: f$5 -}; - -var html = getBuiltIn('document', 'documentElement'); - -/* global ActiveXObject -- old IE, WSH */ - - - - - - - - -var GT = '>'; -var LT = '<'; -var PROTOTYPE = 'prototype'; -var SCRIPT = 'script'; -var IE_PROTO = sharedKey('IE_PROTO'); - -var EmptyConstructor = function () { /* empty */ }; - -var scriptTag = function (content) { - return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT; -}; - -// Create object with fake `null` prototype: use ActiveX Object with cleared prototype -var NullProtoObjectViaActiveX = function (activeXDocument) { - activeXDocument.write(scriptTag('')); - activeXDocument.close(); - var temp = activeXDocument.parentWindow.Object; - activeXDocument = null; // avoid memory leak - return temp; -}; - -// Create object with fake `null` prototype: use iframe Object with cleared prototype -var NullProtoObjectViaIFrame = function () { - // Thrash, waste and sodomy: IE GC bug - var iframe = documentCreateElement('iframe'); - var JS = 'java' + SCRIPT + ':'; - var iframeDocument; - iframe.style.display = 'none'; - html.appendChild(iframe); - // https://github.com/zloirock/core-js/issues/475 - iframe.src = String(JS); - iframeDocument = iframe.contentWindow.document; - iframeDocument.open(); - iframeDocument.write(scriptTag('document.F=Object')); - iframeDocument.close(); - return iframeDocument.F; -}; - -// Check for document.domain and active x support -// No need to use active x approach when document.domain is not set -// see https://github.com/es-shims/es5-shim/issues/150 -// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346 -// avoid IE GC bug -var activeXDocument; -var NullProtoObject = function () { - try { - activeXDocument = new ActiveXObject('htmlfile'); - } catch (error) { /* ignore */ } - NullProtoObject = typeof document != 'undefined' - ? document.domain && activeXDocument - ? NullProtoObjectViaActiveX(activeXDocument) // old IE - : NullProtoObjectViaIFrame() - : NullProtoObjectViaActiveX(activeXDocument); // WSH - var length = enumBugKeys.length; - while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]]; - return NullProtoObject(); -}; - -hiddenKeys[IE_PROTO] = true; - -// `Object.create` method -// https://tc39.es/ecma262/#sec-object.create -// eslint-disable-next-line es/no-object-create -- safe -var objectCreate = Object.create || function create(O, Properties) { - var result; - if (O !== null) { - EmptyConstructor[PROTOTYPE] = anObject(O); - result = new EmptyConstructor(); - EmptyConstructor[PROTOTYPE] = null; - // add "__proto__" for Object.getPrototypeOf polyfill - result[IE_PROTO] = O; - } else result = NullProtoObject(); - return Properties === undefined ? result : objectDefineProperties.f(result, Properties); -}; - -var defineBuiltIns = function (target, src, options) { - for (var key in src) defineBuiltIn(target, key, src[key], options); - return target; -}; - -var correctPrototypeGetter = !fails(function () { - function F() { /* empty */ } - F.prototype.constructor = null; - // eslint-disable-next-line es/no-object-getprototypeof -- required for testing - return Object.getPrototypeOf(new F()) !== F.prototype; -}); - -var IE_PROTO$1 = sharedKey('IE_PROTO'); -var $Object$3 = Object; -var ObjectPrototype = $Object$3.prototype; - -// `Object.getPrototypeOf` method -// https://tc39.es/ecma262/#sec-object.getprototypeof -// eslint-disable-next-line es/no-object-getprototypeof -- safe -var objectGetPrototypeOf = correctPrototypeGetter ? $Object$3.getPrototypeOf : function (O) { - var object = toObject(O); - if (hasOwnProperty_1(object, IE_PROTO$1)) return object[IE_PROTO$1]; - var constructor = object.constructor; - if (isCallable(constructor) && object instanceof constructor) { - return constructor.prototype; - } return object instanceof $Object$3 ? ObjectPrototype : null; -}; - -var USE_FUNCTION_CONSTRUCTOR = 'USE_FUNCTION_CONSTRUCTOR'; -var ASYNC_ITERATOR = wellKnownSymbol('asyncIterator'); -var AsyncIterator = global_1.AsyncIterator; -var PassedAsyncIteratorPrototype = sharedStore.AsyncIteratorPrototype; -var AsyncIteratorPrototype, prototype; - -if (PassedAsyncIteratorPrototype) { - AsyncIteratorPrototype = PassedAsyncIteratorPrototype; -} else if (isCallable(AsyncIterator)) { - AsyncIteratorPrototype = AsyncIterator.prototype; -} else if (sharedStore[USE_FUNCTION_CONSTRUCTOR] || global_1[USE_FUNCTION_CONSTRUCTOR]) { - try { - // eslint-disable-next-line no-new-func -- we have no alternatives without usage of modern syntax - prototype = objectGetPrototypeOf(objectGetPrototypeOf(objectGetPrototypeOf(Function('return async function*(){}()')()))); - if (objectGetPrototypeOf(prototype) === Object.prototype) AsyncIteratorPrototype = prototype; - } catch (error) { /* empty */ } -} - -if (!AsyncIteratorPrototype) AsyncIteratorPrototype = {}; - -if (!isCallable(AsyncIteratorPrototype[ASYNC_ITERATOR])) { - defineBuiltIn(AsyncIteratorPrototype, ASYNC_ITERATOR, function () { - return this; - }); -} - -var asyncIteratorPrototype = AsyncIteratorPrototype; - -// `CreateIterResultObject` abstract operation -// https://tc39.es/ecma262/#sec-createiterresultobject -var createIterResultObject = function (value, done) { - return { value: value, done: done }; -}; - -var iteratorClose = function (iterator, kind, value) { - var innerResult, innerError; - anObject(iterator); - try { - innerResult = getMethod(iterator, 'return'); - if (!innerResult) { - if (kind === 'throw') throw value; - return value; - } - innerResult = functionCall(innerResult, iterator); - } catch (error) { - innerError = true; - innerResult = error; - } - if (kind === 'throw') throw value; - if (innerError) throw innerResult; - anObject(innerResult); - return value; -}; - -var Promise = getBuiltIn('Promise'); - -var TO_STRING_TAG = wellKnownSymbol('toStringTag'); -var ASYNC_ITERATOR_HELPER = 'AsyncIteratorHelper'; -var WRAP_FOR_VALID_ASYNC_ITERATOR = 'WrapForValidAsyncIterator'; -var setInternalState = internalState.set; - -var createAsyncIteratorProxyPrototype = function (IS_ITERATOR) { - var IS_GENERATOR = !IS_ITERATOR; - var getInternalState = internalState.getterFor(IS_ITERATOR ? WRAP_FOR_VALID_ASYNC_ITERATOR : ASYNC_ITERATOR_HELPER); - - var getStateOrEarlyExit = function (that) { - var stateCompletion = perform(function () { - return getInternalState(that); - }); - - var stateError = stateCompletion.error; - var state = stateCompletion.value; - - if (stateError || (IS_GENERATOR && state.done)) { - return { exit: true, value: stateError ? Promise.reject(state) : Promise.resolve(createIterResultObject(undefined, true)) }; - } return { exit: false, value: state }; - }; - - return defineBuiltIns(objectCreate(asyncIteratorPrototype), { - next: function next() { - var stateCompletion = getStateOrEarlyExit(this); - var state = stateCompletion.value; - if (stateCompletion.exit) return state; - var handlerCompletion = perform(function () { - return anObject(state.nextHandler(Promise)); - }); - var handlerError = handlerCompletion.error; - var value = handlerCompletion.value; - if (handlerError) state.done = true; - return handlerError ? Promise.reject(value) : Promise.resolve(value); - }, - 'return': function () { - var stateCompletion = getStateOrEarlyExit(this); - var state = stateCompletion.value; - if (stateCompletion.exit) return state; - state.done = true; - var iterator = state.iterator; - var returnMethod, result; - var completion = perform(function () { - if (state.inner) try { - iteratorClose(state.inner.iterator, 'normal'); - } catch (error) { - return iteratorClose(iterator, 'throw', error); - } - return getMethod(iterator, 'return'); - }); - returnMethod = result = completion.value; - if (completion.error) return Promise.reject(result); - if (returnMethod === undefined) return Promise.resolve(createIterResultObject(undefined, true)); - completion = perform(function () { - return functionCall(returnMethod, iterator); - }); - result = completion.value; - if (completion.error) return Promise.reject(result); - return IS_ITERATOR ? Promise.resolve(result) : Promise.resolve(result).then(function (resolved) { - anObject(resolved); - return createIterResultObject(undefined, true); - }); - } - }); -}; - -var WrapForValidAsyncIteratorPrototype = createAsyncIteratorProxyPrototype(true); -var AsyncIteratorHelperPrototype = createAsyncIteratorProxyPrototype(false); - -createNonEnumerableProperty(AsyncIteratorHelperPrototype, TO_STRING_TAG, 'Async Iterator Helper'); - -var asyncIteratorCreateProxy = function (nextHandler, IS_ITERATOR) { - var AsyncIteratorProxy = function AsyncIterator(record, state) { - if (state) { - state.iterator = record.iterator; - state.next = record.next; - } else state = record; - state.type = IS_ITERATOR ? WRAP_FOR_VALID_ASYNC_ITERATOR : ASYNC_ITERATOR_HELPER; - state.nextHandler = nextHandler; - state.counter = 0; - state.done = false; - setInternalState(this, state); - }; - - AsyncIteratorProxy.prototype = IS_ITERATOR ? WrapForValidAsyncIteratorPrototype : AsyncIteratorHelperPrototype; - - return AsyncIteratorProxy; -}; - -var asyncIteratorClose = function (iterator, method, argument, reject) { - try { - var returnMethod = getMethod(iterator, 'return'); - if (returnMethod) { - return getBuiltIn('Promise').resolve(functionCall(returnMethod, iterator)).then(function () { - method(argument); - }, function (error) { - reject(error); - }); - } - } catch (error2) { - return reject(error2); - } method(argument); -}; - -var AsyncIteratorProxy = asyncIteratorCreateProxy(function (Promise) { - var state = this; - var iterator = state.iterator; - var mapper = state.mapper; - - return new Promise(function (resolve, reject) { - var doneAndReject = function (error) { - state.done = true; - reject(error); - }; - - var ifAbruptCloseAsyncIterator = function (error) { - asyncIteratorClose(iterator, doneAndReject, error, doneAndReject); - }; - - Promise.resolve(anObject(functionCall(state.next, iterator))).then(function (step) { - try { - if (anObject(step).done) { - state.done = true; - resolve(createIterResultObject(undefined, true)); - } else { - var value = step.value; - try { - var result = mapper(value, state.counter++); - - var handler = function (mapped) { - resolve(createIterResultObject(mapped, false)); - }; - - if (isObject(result)) Promise.resolve(result).then(handler, ifAbruptCloseAsyncIterator); - else handler(result); - } catch (error2) { ifAbruptCloseAsyncIterator(error2); } - } - } catch (error) { doneAndReject(error); } - }, doneAndReject); - }); -}); - -// `AsyncIterator.prototype.map` method -// https://github.com/tc39/proposal-iterator-helpers -var asyncIteratorMap = function map(mapper) { - return new AsyncIteratorProxy(getIteratorDirect(this), { - mapper: aCallable(mapper) - }); -}; - -// `AsyncIterator.prototype.map` method -// https://github.com/tc39/proposal-async-iterator-helpers -_export({ target: 'AsyncIterator', proto: true, real: true }, { - map: asyncIteratorMap -}); - -var ITERATOR = wellKnownSymbol('iterator'); -var BUGGY_SAFARI_ITERATORS = false; - -// `%IteratorPrototype%` object -// https://tc39.es/ecma262/#sec-%iteratorprototype%-object -var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator; - -/* eslint-disable es/no-array-prototype-keys -- safe */ -if ([].keys) { - arrayIterator = [].keys(); - // Safari 8 has buggy iterators w/o `next` - if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true; - else { - PrototypeOfArrayIteratorPrototype = objectGetPrototypeOf(objectGetPrototypeOf(arrayIterator)); - if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype; - } -} - -var NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () { - var test = {}; - // FF44- legacy iterators case - return IteratorPrototype[ITERATOR].call(test) !== test; -}); - -if (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {}; - -// `%IteratorPrototype%[@@iterator]()` method -// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator -if (!isCallable(IteratorPrototype[ITERATOR])) { - defineBuiltIn(IteratorPrototype, ITERATOR, function () { - return this; - }); -} - -var iteratorsCore = { - IteratorPrototype: IteratorPrototype, - BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS -}; - -var IteratorPrototype$1 = iteratorsCore.IteratorPrototype; - - - -var TO_STRING_TAG$1 = wellKnownSymbol('toStringTag'); -var ITERATOR_HELPER = 'IteratorHelper'; -var WRAP_FOR_VALID_ITERATOR = 'WrapForValidIterator'; -var setInternalState$1 = internalState.set; - -var createIteratorProxyPrototype = function (IS_ITERATOR) { - var getInternalState = internalState.getterFor(IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER); - - return defineBuiltIns(objectCreate(IteratorPrototype$1), { - next: function next() { - var state = getInternalState(this); - // for simplification: - // for `%WrapForValidIteratorPrototype%.next` our `nextHandler` returns `IterResultObject` - // for `%IteratorHelperPrototype%.next` - just a value - if (IS_ITERATOR) return state.nextHandler(); - try { - var result = state.done ? undefined : state.nextHandler(); - return createIterResultObject(result, state.done); - } catch (error) { - state.done = true; - throw error; - } - }, - 'return': function () { - var state = getInternalState(this); - var iterator = state.iterator; - state.done = true; - if (IS_ITERATOR) { - var returnMethod = getMethod(iterator, 'return'); - return returnMethod ? functionCall(returnMethod, iterator) : createIterResultObject(undefined, true); - } - if (state.inner) try { - iteratorClose(state.inner.iterator, 'normal'); - } catch (error) { - return iteratorClose(iterator, 'throw', error); - } - iteratorClose(iterator, 'normal'); - return createIterResultObject(undefined, true); - } - }); -}; - -var WrapForValidIteratorPrototype = createIteratorProxyPrototype(true); -var IteratorHelperPrototype = createIteratorProxyPrototype(false); - -createNonEnumerableProperty(IteratorHelperPrototype, TO_STRING_TAG$1, 'Iterator Helper'); - -var iteratorCreateProxy = function (nextHandler, IS_ITERATOR) { - var IteratorProxy = function Iterator(record, state) { - if (state) { - state.iterator = record.iterator; - state.next = record.next; - } else state = record; - state.type = IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER; - state.nextHandler = nextHandler; - state.counter = 0; - state.done = false; - setInternalState$1(this, state); - }; - - IteratorProxy.prototype = IS_ITERATOR ? WrapForValidIteratorPrototype : IteratorHelperPrototype; - - return IteratorProxy; -}; - -// call something on iterator step with safe closing on error -var callWithSafeIterationClosing = function (iterator, fn, value, ENTRIES) { - try { - return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value); - } catch (error) { - iteratorClose(iterator, 'throw', error); - } -}; - -var IteratorProxy = iteratorCreateProxy(function () { - var iterator = this.iterator; - var result = anObject(functionCall(this.next, iterator)); - var done = this.done = !!result.done; - if (!done) return callWithSafeIterationClosing(iterator, this.mapper, [result.value, this.counter++], true); -}); - -// `Iterator.prototype.map` method -// https://github.com/tc39/proposal-iterator-helpers -var iteratorMap = function map(mapper) { - return new IteratorProxy(getIteratorDirect(this), { - mapper: aCallable(mapper) - }); -}; - -// `Iterator.prototype.map` method -// https://github.com/tc39/proposal-iterator-helpers -_export({ target: 'Iterator', proto: true, real: true }, { - map: iteratorMap -}); - -var functionUncurryThisClause = function (fn) { - // Nashorn bug: - // https://github.com/zloirock/core-js/issues/1128 - // https://github.com/zloirock/core-js/issues/1130 - if (classofRaw(fn) === 'Function') return functionUncurryThis(fn); -}; - -var bind = functionUncurryThisClause(functionUncurryThisClause.bind); - -// optional / simple context binding -var functionBindContext = function (fn, that) { - aCallable(fn); - return that === undefined ? fn : functionBindNative ? bind(fn, that) : function (/* ...args */) { - return fn.apply(that, arguments); - }; -}; - -var TO_STRING_TAG$2 = wellKnownSymbol('toStringTag'); -var test = {}; - -test[TO_STRING_TAG$2] = 'z'; - -var toStringTagSupport = String(test) === '[object z]'; - -var TO_STRING_TAG$3 = wellKnownSymbol('toStringTag'); -var $Object$4 = Object; - -// ES3 wrong here -var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments'; - -// fallback for IE11 Script Access Denied error -var tryGet = function (it, key) { - try { - return it[key]; - } catch (error) { /* empty */ } -}; - -// getting tag from ES6+ `Object.prototype.toString` -var classof = toStringTagSupport ? classofRaw : function (it) { - var O, tag, result; - return it === undefined ? 'Undefined' : it === null ? 'Null' - // @@toStringTag case - : typeof (tag = tryGet(O = $Object$4(it), TO_STRING_TAG$3)) == 'string' ? tag - // builtinTag case - : CORRECT_ARGUMENTS ? classofRaw(O) - // ES3 arguments fallback - : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result; -}; - -export { copyConstructorProperties as A, descriptors as B, makeBuiltIn_1 as C, objectGetPrototypeOf as D, uid as E, internalState as F, defineBuiltIn as G, toIntegerOrInfinity as H, toObject as I, indexedObject as J, classofRaw as K, inspectSource as L, objectCreate as M, toPropertyKey as N, toPrimitive as O, toAbsoluteIndex as P, asyncIteratorCreateProxy as Q, createIterResultObject as R, asyncIteratorClose as S, iteratorCreateProxy as T, callWithSafeIterationClosing as U, createCommonjsModule as V, getDefaultExportFromNamespaceIfNotNamed as W, _export as _, aCallable as a, global_1 as b, commonjsGlobal as c, createNonEnumerableProperty as d, iteratorsCore as e, fails as f, getIteratorDirect as g, hasOwnProperty_1 as h, isCallable as i, isNullOrUndefined as j, getMethod as k, classof as l, anObject as m, functionCall as n, objectIsPrototypeOf as o, functionBindContext as p, lengthOfArrayLike as q, iteratorClose as r, functionBindNative as s, tryToString as t, objectDefineProperty as u, isObject as v, wellKnownSymbol as w, functionUncurryThis as x, createPropertyDescriptor as y, getBuiltIn as z }; diff --git a/web_modules/common/es.error.cause-d475e2dc.js b/web_modules/common/es.error.cause-d475e2dc.js deleted file mode 100644 index 9a5ca0be..00000000 --- a/web_modules/common/es.error.cause-d475e2dc.js +++ /dev/null @@ -1,196 +0,0 @@ -import { s as functionBindNative, u as objectDefineProperty, i as isCallable, v as isObject, l as classof, d as createNonEnumerableProperty, x as functionUncurryThis, f as fails, y as createPropertyDescriptor, z as getBuiltIn, h as hasOwnProperty_1, o as objectIsPrototypeOf, A as copyConstructorProperties, B as descriptors, b as global_1, _ as _export } from './classof-f879816f.js'; -import { o as objectSetPrototypeOf } from './object-set-prototype-of-4460a095.js'; - -var FunctionPrototype = Function.prototype; -var apply = FunctionPrototype.apply; -var call = FunctionPrototype.call; - -// eslint-disable-next-line es/no-reflect -- safe -var functionApply = typeof Reflect == 'object' && Reflect.apply || (functionBindNative ? call.bind(apply) : function () { - return call.apply(apply, arguments); -}); - -var defineProperty = objectDefineProperty.f; - -var proxyAccessor = function (Target, Source, key) { - key in Target || defineProperty(Target, key, { - configurable: true, - get: function () { return Source[key]; }, - set: function (it) { Source[key] = it; } - }); -}; - -// makes subclassing work correct for wrapped built-ins -var inheritIfRequired = function ($this, dummy, Wrapper) { - var NewTarget, NewTargetPrototype; - if ( - // it can work only with native `setPrototypeOf` - objectSetPrototypeOf && - // we haven't completely correct pre-ES6 way for getting `new.target`, so use this - isCallable(NewTarget = dummy.constructor) && - NewTarget !== Wrapper && - isObject(NewTargetPrototype = NewTarget.prototype) && - NewTargetPrototype !== Wrapper.prototype - ) objectSetPrototypeOf($this, NewTargetPrototype); - return $this; -}; - -var $String = String; - -var toString_1 = function (argument) { - if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string'); - return $String(argument); -}; - -var normalizeStringArgument = function (argument, $default) { - return argument === undefined ? arguments.length < 2 ? '' : $default : toString_1(argument); -}; - -// `InstallErrorCause` abstract operation -// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause -var installErrorCause = function (O, options) { - if (isObject(options) && 'cause' in options) { - createNonEnumerableProperty(O, 'cause', options.cause); - } -}; - -var $Error = Error; -var replace = functionUncurryThis(''.replace); - -var TEST = (function (arg) { return String($Error(arg).stack); })('zxcasd'); -// eslint-disable-next-line redos/no-vulnerable -- safe -var V8_OR_CHAKRA_STACK_ENTRY = /\n\s*at [^:]*:[^\n]*/; -var IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST); - -var errorStackClear = function (stack, dropEntries) { - if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) { - while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, ''); - } return stack; -}; - -var errorStackInstallable = !fails(function () { - var error = Error('a'); - if (!('stack' in error)) return true; - // eslint-disable-next-line es/no-object-defineproperty -- safe - Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7)); - return error.stack !== 7; -}); - -// non-standard V8 -var captureStackTrace = Error.captureStackTrace; - -var errorStackInstall = function (error, C, stack, dropEntries) { - if (errorStackInstallable) { - if (captureStackTrace) captureStackTrace(error, C); - else createNonEnumerableProperty(error, 'stack', errorStackClear(stack, dropEntries)); - } -}; - -var wrapErrorConstructorWithCause = function (FULL_NAME, wrapper, FORCED, IS_AGGREGATE_ERROR) { - var STACK_TRACE_LIMIT = 'stackTraceLimit'; - var OPTIONS_POSITION = IS_AGGREGATE_ERROR ? 2 : 1; - var path = FULL_NAME.split('.'); - var ERROR_NAME = path[path.length - 1]; - var OriginalError = getBuiltIn.apply(null, path); - - if (!OriginalError) return; - - var OriginalErrorPrototype = OriginalError.prototype; - - // V8 9.3- bug https://bugs.chromium.org/p/v8/issues/detail?id=12006 - if ( hasOwnProperty_1(OriginalErrorPrototype, 'cause')) delete OriginalErrorPrototype.cause; - - if (!FORCED) return OriginalError; - - var BaseError = getBuiltIn('Error'); - - var WrappedError = wrapper(function (a, b) { - var message = normalizeStringArgument(IS_AGGREGATE_ERROR ? b : a, undefined); - var result = IS_AGGREGATE_ERROR ? new OriginalError(a) : new OriginalError(); - if (message !== undefined) createNonEnumerableProperty(result, 'message', message); - errorStackInstall(result, WrappedError, result.stack, 2); - if (this && objectIsPrototypeOf(OriginalErrorPrototype, this)) inheritIfRequired(result, this, WrappedError); - if (arguments.length > OPTIONS_POSITION) installErrorCause(result, arguments[OPTIONS_POSITION]); - return result; - }); - - WrappedError.prototype = OriginalErrorPrototype; - - if (ERROR_NAME !== 'Error') { - if (objectSetPrototypeOf) objectSetPrototypeOf(WrappedError, BaseError); - else copyConstructorProperties(WrappedError, BaseError, { name: true }); - } else if (descriptors && STACK_TRACE_LIMIT in OriginalError) { - proxyAccessor(WrappedError, OriginalError, STACK_TRACE_LIMIT); - proxyAccessor(WrappedError, OriginalError, 'prepareStackTrace'); - } - - copyConstructorProperties(WrappedError, OriginalError); - - try { - // Safari 13- bug: WebAssembly errors does not have a proper `.name` - if (OriginalErrorPrototype.name !== ERROR_NAME) { - createNonEnumerableProperty(OriginalErrorPrototype, 'name', ERROR_NAME); - } - OriginalErrorPrototype.constructor = WrappedError; - } catch (error) { /* empty */ } - - return WrappedError; -}; - -/* eslint-disable no-unused-vars -- required for functions `.length` */ - - - - - -var WEB_ASSEMBLY = 'WebAssembly'; -var WebAssembly = global_1[WEB_ASSEMBLY]; - -var FORCED = Error('e', { cause: 7 }).cause !== 7; - -var exportGlobalErrorCauseWrapper = function (ERROR_NAME, wrapper) { - var O = {}; - O[ERROR_NAME] = wrapErrorConstructorWithCause(ERROR_NAME, wrapper, FORCED); - _export({ global: true, constructor: true, arity: 1, forced: FORCED }, O); -}; - -var exportWebAssemblyErrorCauseWrapper = function (ERROR_NAME, wrapper) { - if (WebAssembly && WebAssembly[ERROR_NAME]) { - var O = {}; - O[ERROR_NAME] = wrapErrorConstructorWithCause(WEB_ASSEMBLY + '.' + ERROR_NAME, wrapper, FORCED); - _export({ target: WEB_ASSEMBLY, stat: true, constructor: true, arity: 1, forced: FORCED }, O); - } -}; - -// https://tc39.es/ecma262/#sec-nativeerror -// https://github.com/tc39/proposal-error-cause -exportGlobalErrorCauseWrapper('Error', function (init) { - return function Error(message) { return functionApply(init, this, arguments); }; -}); -exportGlobalErrorCauseWrapper('EvalError', function (init) { - return function EvalError(message) { return functionApply(init, this, arguments); }; -}); -exportGlobalErrorCauseWrapper('RangeError', function (init) { - return function RangeError(message) { return functionApply(init, this, arguments); }; -}); -exportGlobalErrorCauseWrapper('ReferenceError', function (init) { - return function ReferenceError(message) { return functionApply(init, this, arguments); }; -}); -exportGlobalErrorCauseWrapper('SyntaxError', function (init) { - return function SyntaxError(message) { return functionApply(init, this, arguments); }; -}); -exportGlobalErrorCauseWrapper('TypeError', function (init) { - return function TypeError(message) { return functionApply(init, this, arguments); }; -}); -exportGlobalErrorCauseWrapper('URIError', function (init) { - return function URIError(message) { return functionApply(init, this, arguments); }; -}); -exportWebAssemblyErrorCauseWrapper('CompileError', function (init) { - return function CompileError(message) { return functionApply(init, this, arguments); }; -}); -exportWebAssemblyErrorCauseWrapper('LinkError', function (init) { - return function LinkError(message) { return functionApply(init, this, arguments); }; -}); -exportWebAssemblyErrorCauseWrapper('RuntimeError', function (init) { - return function RuntimeError(message) { return functionApply(init, this, arguments); }; -}); diff --git a/web_modules/common/es.typed-array.with-e94c18e3.js b/web_modules/common/es.typed-array.with-e94c18e3.js deleted file mode 100644 index c54d2911..00000000 --- a/web_modules/common/es.typed-array.with-e94c18e3.js +++ /dev/null @@ -1,722 +0,0 @@ -import { u as objectDefineProperty, C as makeBuiltIn_1, b as global_1, D as objectGetPrototypeOf, w as wellKnownSymbol, E as uid, l as classof, i as isCallable, B as descriptors, h as hasOwnProperty_1, d as createNonEnumerableProperty, F as internalState, v as isObject, o as objectIsPrototypeOf, t as tryToString, G as defineBuiltIn, q as lengthOfArrayLike, H as toIntegerOrInfinity, I as toObject, J as indexedObject, p as functionBindContext, K as classofRaw, z as getBuiltIn, x as functionUncurryThis, f as fails, L as inspectSource, j as isNullOrUndefined, m as anObject, M as objectCreate, N as toPropertyKey, a as aCallable, O as toPrimitive, P as toAbsoluteIndex, n as functionCall } from './classof-f879816f.js'; -import { o as objectSetPrototypeOf } from './object-set-prototype-of-4460a095.js'; - -// eslint-disable-next-line es/no-typed-arrays -- safe -var arrayBufferBasicDetection = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined'; - -var defineBuiltInAccessor = function (target, name, descriptor) { - if (descriptor.get) makeBuiltIn_1(descriptor.get, name, { getter: true }); - if (descriptor.set) makeBuiltIn_1(descriptor.set, name, { setter: true }); - return objectDefineProperty.f(target, name, descriptor); -}; - -var enforceInternalState = internalState.enforce; -var getInternalState = internalState.get; -var Int8Array$1 = global_1.Int8Array; -var Int8ArrayPrototype = Int8Array$1 && Int8Array$1.prototype; -var Uint8ClampedArray = global_1.Uint8ClampedArray; -var Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype; -var TypedArray = Int8Array$1 && objectGetPrototypeOf(Int8Array$1); -var TypedArrayPrototype = Int8ArrayPrototype && objectGetPrototypeOf(Int8ArrayPrototype); -var ObjectPrototype = Object.prototype; -var TypeError$1 = global_1.TypeError; - -var TO_STRING_TAG = wellKnownSymbol('toStringTag'); -var TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG'); -var TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor'; -// Fixing native typed arrays in Opera Presto crashes the browser, see #595 -var NATIVE_ARRAY_BUFFER_VIEWS = arrayBufferBasicDetection && !!objectSetPrototypeOf && classof(global_1.opera) !== 'Opera'; -var TYPED_ARRAY_TAG_REQUIRED = false; -var NAME, Constructor, Prototype; - -var TypedArrayConstructorsList = { - Int8Array: 1, - Uint8Array: 1, - Uint8ClampedArray: 1, - Int16Array: 2, - Uint16Array: 2, - Int32Array: 4, - Uint32Array: 4, - Float32Array: 4, - Float64Array: 8 -}; - -var BigIntArrayConstructorsList = { - BigInt64Array: 8, - BigUint64Array: 8 -}; - -var isView = function isView(it) { - if (!isObject(it)) return false; - var klass = classof(it); - return klass === 'DataView' - || hasOwnProperty_1(TypedArrayConstructorsList, klass) - || hasOwnProperty_1(BigIntArrayConstructorsList, klass); -}; - -var getTypedArrayConstructor = function (it) { - var proto = objectGetPrototypeOf(it); - if (!isObject(proto)) return; - var state = getInternalState(proto); - return (state && hasOwnProperty_1(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto); -}; - -var isTypedArray = function (it) { - if (!isObject(it)) return false; - var klass = classof(it); - return hasOwnProperty_1(TypedArrayConstructorsList, klass) - || hasOwnProperty_1(BigIntArrayConstructorsList, klass); -}; - -var aTypedArray = function (it) { - if (isTypedArray(it)) return it; - throw TypeError$1('Target is not a typed array'); -}; - -var aTypedArrayConstructor = function (C) { - if (isCallable(C) && (!objectSetPrototypeOf || objectIsPrototypeOf(TypedArray, C))) return C; - throw TypeError$1(tryToString(C) + ' is not a typed array constructor'); -}; - -var exportTypedArrayMethod = function (KEY, property, forced, options) { - if (!descriptors) return; - if (forced) for (var ARRAY in TypedArrayConstructorsList) { - var TypedArrayConstructor = global_1[ARRAY]; - if (TypedArrayConstructor && hasOwnProperty_1(TypedArrayConstructor.prototype, KEY)) try { - delete TypedArrayConstructor.prototype[KEY]; - } catch (error) { - // old WebKit bug - some methods are non-configurable - try { - TypedArrayConstructor.prototype[KEY] = property; - } catch (error2) { /* empty */ } - } - } - if (!TypedArrayPrototype[KEY] || forced) { - defineBuiltIn(TypedArrayPrototype, KEY, forced ? property - : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options); - } -}; - -var exportTypedArrayStaticMethod = function (KEY, property, forced) { - var ARRAY, TypedArrayConstructor; - if (!descriptors) return; - if (objectSetPrototypeOf) { - if (forced) for (ARRAY in TypedArrayConstructorsList) { - TypedArrayConstructor = global_1[ARRAY]; - if (TypedArrayConstructor && hasOwnProperty_1(TypedArrayConstructor, KEY)) try { - delete TypedArrayConstructor[KEY]; - } catch (error) { /* empty */ } - } - if (!TypedArray[KEY] || forced) { - // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable - try { - return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property); - } catch (error) { /* empty */ } - } else return; - } - for (ARRAY in TypedArrayConstructorsList) { - TypedArrayConstructor = global_1[ARRAY]; - if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) { - defineBuiltIn(TypedArrayConstructor, KEY, property); - } - } -}; - -for (NAME in TypedArrayConstructorsList) { - Constructor = global_1[NAME]; - Prototype = Constructor && Constructor.prototype; - if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor; - else NATIVE_ARRAY_BUFFER_VIEWS = false; -} - -for (NAME in BigIntArrayConstructorsList) { - Constructor = global_1[NAME]; - Prototype = Constructor && Constructor.prototype; - if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor; -} - -// WebKit bug - typed arrays constructors prototype is Object.prototype -if (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) { - // eslint-disable-next-line no-shadow -- safe - TypedArray = function TypedArray() { - throw TypeError$1('Incorrect invocation'); - }; - if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) { - if (global_1[NAME]) objectSetPrototypeOf(global_1[NAME], TypedArray); - } -} - -if (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) { - TypedArrayPrototype = TypedArray.prototype; - if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) { - if (global_1[NAME]) objectSetPrototypeOf(global_1[NAME].prototype, TypedArrayPrototype); - } -} - -// WebKit bug - one more object in Uint8ClampedArray prototype chain -if (NATIVE_ARRAY_BUFFER_VIEWS && objectGetPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) { - objectSetPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype); -} - -if (descriptors && !hasOwnProperty_1(TypedArrayPrototype, TO_STRING_TAG)) { - TYPED_ARRAY_TAG_REQUIRED = true; - defineBuiltInAccessor(TypedArrayPrototype, TO_STRING_TAG, { - configurable: true, - get: function () { - return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined; - } - }); - for (NAME in TypedArrayConstructorsList) if (global_1[NAME]) { - createNonEnumerableProperty(global_1[NAME], TYPED_ARRAY_TAG, NAME); - } -} - -var arrayBufferViewCore = { - NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS, - TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG, - aTypedArray: aTypedArray, - aTypedArrayConstructor: aTypedArrayConstructor, - exportTypedArrayMethod: exportTypedArrayMethod, - exportTypedArrayStaticMethod: exportTypedArrayStaticMethod, - getTypedArrayConstructor: getTypedArrayConstructor, - isView: isView, - isTypedArray: isTypedArray, - TypedArray: TypedArray, - TypedArrayPrototype: TypedArrayPrototype -}; - -var aTypedArray$1 = arrayBufferViewCore.aTypedArray; -var exportTypedArrayMethod$1 = arrayBufferViewCore.exportTypedArrayMethod; - -// `%TypedArray%.prototype.at` method -// https://github.com/tc39/proposal-relative-indexing-method -exportTypedArrayMethod$1('at', function at(index) { - var O = aTypedArray$1(this); - var len = lengthOfArrayLike(O); - var relativeIndex = toIntegerOrInfinity(index); - var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex; - return (k < 0 || k >= len) ? undefined : O[k]; -}); - -// `Array.prototype.{ findLast, findLastIndex }` methods implementation -var createMethod = function (TYPE) { - var IS_FIND_LAST_INDEX = TYPE == 1; - return function ($this, callbackfn, that) { - var O = toObject($this); - var self = indexedObject(O); - var boundFunction = functionBindContext(callbackfn, that); - var index = lengthOfArrayLike(self); - var value, result; - while (index-- > 0) { - value = self[index]; - result = boundFunction(value, index, O); - if (result) switch (TYPE) { - case 0: return value; // findLast - case 1: return index; // findLastIndex - } - } - return IS_FIND_LAST_INDEX ? -1 : undefined; - }; -}; - -var arrayIterationFromLast = { - // `Array.prototype.findLast` method - // https://github.com/tc39/proposal-array-find-from-last - findLast: createMethod(0), - // `Array.prototype.findLastIndex` method - // https://github.com/tc39/proposal-array-find-from-last - findLastIndex: createMethod(1) -}; - -var $findLast = arrayIterationFromLast.findLast; - -var aTypedArray$2 = arrayBufferViewCore.aTypedArray; -var exportTypedArrayMethod$2 = arrayBufferViewCore.exportTypedArrayMethod; - -// `%TypedArray%.prototype.findLast` method -// https://github.com/tc39/proposal-array-find-from-last -exportTypedArrayMethod$2('findLast', function findLast(predicate /* , thisArg */) { - return $findLast(aTypedArray$2(this), predicate, arguments.length > 1 ? arguments[1] : undefined); -}); - -var $findLastIndex = arrayIterationFromLast.findLastIndex; - -var aTypedArray$3 = arrayBufferViewCore.aTypedArray; -var exportTypedArrayMethod$3 = arrayBufferViewCore.exportTypedArrayMethod; - -// `%TypedArray%.prototype.findLastIndex` method -// https://github.com/tc39/proposal-array-find-from-last -exportTypedArrayMethod$3('findLastIndex', function findLastIndex(predicate /* , thisArg */) { - return $findLastIndex(aTypedArray$3(this), predicate, arguments.length > 1 ? arguments[1] : undefined); -}); - -// `IsArray` abstract operation -// https://tc39.es/ecma262/#sec-isarray -// eslint-disable-next-line es/no-array-isarray -- safe -var isArray = Array.isArray || function isArray(argument) { - return classofRaw(argument) == 'Array'; -}; - -var noop = function () { /* empty */ }; -var empty = []; -var construct = getBuiltIn('Reflect', 'construct'); -var constructorRegExp = /^\s*(?:class|function)\b/; -var exec = functionUncurryThis(constructorRegExp.exec); -var INCORRECT_TO_STRING = !constructorRegExp.exec(noop); - -var isConstructorModern = function isConstructor(argument) { - if (!isCallable(argument)) return false; - try { - construct(noop, empty, argument); - return true; - } catch (error) { - return false; - } -}; - -var isConstructorLegacy = function isConstructor(argument) { - if (!isCallable(argument)) return false; - switch (classof(argument)) { - case 'AsyncFunction': - case 'GeneratorFunction': - case 'AsyncGeneratorFunction': return false; - } - try { - // we can't check .prototype since constructors produced by .bind haven't it - // `Function#toString` throws on some built-it function in some legacy engines - // (for example, `DOMQuad` and similar in FF41-) - return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument)); - } catch (error) { - return true; - } -}; - -isConstructorLegacy.sham = true; - -// `IsConstructor` abstract operation -// https://tc39.es/ecma262/#sec-isconstructor -var isConstructor = !construct || fails(function () { - var called; - return isConstructorModern(isConstructorModern.call) - || !isConstructorModern(Object) - || !isConstructorModern(function () { called = true; }) - || called; -}) ? isConstructorLegacy : isConstructorModern; - -var SPECIES = wellKnownSymbol('species'); -var $Array = Array; - -// a part of `ArraySpeciesCreate` abstract operation -// https://tc39.es/ecma262/#sec-arrayspeciescreate -var arraySpeciesConstructor = function (originalArray) { - var C; - if (isArray(originalArray)) { - C = originalArray.constructor; - // cross-realm fallback - if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined; - else if (isObject(C)) { - C = C[SPECIES]; - if (C === null) C = undefined; - } - } return C === undefined ? $Array : C; -}; - -// `ArraySpeciesCreate` abstract operation -// https://tc39.es/ecma262/#sec-arrayspeciescreate -var arraySpeciesCreate = function (originalArray, length) { - return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length); -}; - -var push = functionUncurryThis([].push); - -// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation -var createMethod$1 = function (TYPE) { - var IS_MAP = TYPE == 1; - var IS_FILTER = TYPE == 2; - var IS_SOME = TYPE == 3; - var IS_EVERY = TYPE == 4; - var IS_FIND_INDEX = TYPE == 6; - var IS_FILTER_REJECT = TYPE == 7; - var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; - return function ($this, callbackfn, that, specificCreate) { - var O = toObject($this); - var self = indexedObject(O); - var boundFunction = functionBindContext(callbackfn, that); - var length = lengthOfArrayLike(self); - var index = 0; - var create = specificCreate || arraySpeciesCreate; - var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined; - var value, result; - for (;length > index; index++) if (NO_HOLES || index in self) { - value = self[index]; - result = boundFunction(value, index, O); - if (TYPE) { - if (IS_MAP) target[index] = result; // map - else if (result) switch (TYPE) { - case 3: return true; // some - case 5: return value; // find - case 6: return index; // findIndex - case 2: push(target, value); // filter - } else switch (TYPE) { - case 4: return false; // every - case 7: push(target, value); // filterReject - } - } - } - return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target; - }; -}; - -var arrayIteration = { - // `Array.prototype.forEach` method - // https://tc39.es/ecma262/#sec-array.prototype.foreach - forEach: createMethod$1(0), - // `Array.prototype.map` method - // https://tc39.es/ecma262/#sec-array.prototype.map - map: createMethod$1(1), - // `Array.prototype.filter` method - // https://tc39.es/ecma262/#sec-array.prototype.filter - filter: createMethod$1(2), - // `Array.prototype.some` method - // https://tc39.es/ecma262/#sec-array.prototype.some - some: createMethod$1(3), - // `Array.prototype.every` method - // https://tc39.es/ecma262/#sec-array.prototype.every - every: createMethod$1(4), - // `Array.prototype.find` method - // https://tc39.es/ecma262/#sec-array.prototype.find - find: createMethod$1(5), - // `Array.prototype.findIndex` method - // https://tc39.es/ecma262/#sec-array.prototype.findIndex - findIndex: createMethod$1(6), - // `Array.prototype.filterReject` method - // https://github.com/tc39/proposal-array-filtering - filterReject: createMethod$1(7) -}; - -var arrayFromConstructorAndList = function (Constructor, list) { - var index = 0; - var length = lengthOfArrayLike(list); - var result = new Constructor(length); - while (length > index) result[index] = list[index++]; - return result; -}; - -var $TypeError = TypeError; - -// `Assert: IsConstructor(argument) is true` -var aConstructor = function (argument) { - if (isConstructor(argument)) return argument; - throw $TypeError(tryToString(argument) + ' is not a constructor'); -}; - -var SPECIES$1 = wellKnownSymbol('species'); - -// `SpeciesConstructor` abstract operation -// https://tc39.es/ecma262/#sec-speciesconstructor -var speciesConstructor = function (O, defaultConstructor) { - var C = anObject(O).constructor; - var S; - return C === undefined || isNullOrUndefined(S = anObject(C)[SPECIES$1]) ? defaultConstructor : aConstructor(S); -}; - -var aTypedArrayConstructor$1 = arrayBufferViewCore.aTypedArrayConstructor; -var getTypedArrayConstructor$1 = arrayBufferViewCore.getTypedArrayConstructor; - -// a part of `TypedArraySpeciesCreate` abstract operation -// https://tc39.es/ecma262/#typedarray-species-create -var typedArraySpeciesConstructor = function (originalArray) { - return aTypedArrayConstructor$1(speciesConstructor(originalArray, getTypedArrayConstructor$1(originalArray))); -}; - -var typedArrayFromSpeciesAndList = function (instance, list) { - return arrayFromConstructorAndList(typedArraySpeciesConstructor(instance), list); -}; - -var $filterReject = arrayIteration.filterReject; - - -var aTypedArray$4 = arrayBufferViewCore.aTypedArray; -var exportTypedArrayMethod$4 = arrayBufferViewCore.exportTypedArrayMethod; - -// `%TypedArray%.prototype.filterReject` method -// https://github.com/tc39/proposal-array-filtering -exportTypedArrayMethod$4('filterReject', function filterReject(callbackfn /* , thisArg */) { - var list = $filterReject(aTypedArray$4(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); - return typedArrayFromSpeciesAndList(this, list); -}, true); - -var $Array$1 = Array; -var push$1 = functionUncurryThis([].push); - -var arrayGroup = function ($this, callbackfn, that, specificConstructor) { - var O = toObject($this); - var self = indexedObject(O); - var boundFunction = functionBindContext(callbackfn, that); - var target = objectCreate(null); - var length = lengthOfArrayLike(self); - var index = 0; - var Constructor, key, value; - for (;length > index; index++) { - value = self[index]; - key = toPropertyKey(boundFunction(value, index, O)); - // in some IE10 builds, `hasOwnProperty` returns incorrect result on integer keys - // but since it's a `null` prototype object, we can safely use `in` - if (key in target) push$1(target[key], value); - else target[key] = [value]; - } - // TODO: Remove this block from `core-js@4` - if (specificConstructor) { - Constructor = specificConstructor(O); - if (Constructor !== $Array$1) { - for (key in target) target[key] = arrayFromConstructorAndList(Constructor, target[key]); - } - } return target; -}; - -// TODO: Remove from `core-js@4` - - - - -var aTypedArray$5 = arrayBufferViewCore.aTypedArray; -var exportTypedArrayMethod$5 = arrayBufferViewCore.exportTypedArrayMethod; - -// `%TypedArray%.prototype.groupBy` method -// https://github.com/tc39/proposal-array-grouping -exportTypedArrayMethod$5('groupBy', function groupBy(callbackfn /* , thisArg */) { - var thisArg = arguments.length > 1 ? arguments[1] : undefined; - return arrayGroup(aTypedArray$5(this), callbackfn, thisArg, typedArraySpeciesConstructor); -}, true); - -// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.toReversed -// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.toReversed -var arrayToReversed = function (O, C) { - var len = lengthOfArrayLike(O); - var A = new C(len); - var k = 0; - for (; k < len; k++) A[k] = O[len - k - 1]; - return A; -}; - -var aTypedArray$6 = arrayBufferViewCore.aTypedArray; -var exportTypedArrayMethod$6 = arrayBufferViewCore.exportTypedArrayMethod; -var getTypedArrayConstructor$2 = arrayBufferViewCore.getTypedArrayConstructor; - -// `%TypedArray%.prototype.toReversed` method -// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.toReversed -exportTypedArrayMethod$6('toReversed', function toReversed() { - return arrayToReversed(aTypedArray$6(this), getTypedArrayConstructor$2(this)); -}); - -var aTypedArray$7 = arrayBufferViewCore.aTypedArray; -var getTypedArrayConstructor$3 = arrayBufferViewCore.getTypedArrayConstructor; -var exportTypedArrayMethod$7 = arrayBufferViewCore.exportTypedArrayMethod; -var sort = functionUncurryThis(arrayBufferViewCore.TypedArrayPrototype.sort); - -// `%TypedArray%.prototype.toSorted` method -// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.toSorted -exportTypedArrayMethod$7('toSorted', function toSorted(compareFn) { - if (compareFn !== undefined) aCallable(compareFn); - var O = aTypedArray$7(this); - var A = arrayFromConstructorAndList(getTypedArrayConstructor$3(O), O); - return sort(A, compareFn); -}); - -var isBigIntArray = function (it) { - var klass = classof(it); - return klass == 'BigInt64Array' || klass == 'BigUint64Array'; -}; - -var $TypeError$1 = TypeError; - -// `ToBigInt` abstract operation -// https://tc39.es/ecma262/#sec-tobigint -var toBigInt = function (argument) { - var prim = toPrimitive(argument, 'number'); - if (typeof prim == 'number') throw $TypeError$1("Can't convert number to bigint"); - // eslint-disable-next-line es/no-bigint -- safe - return BigInt(prim); -}; - -// TODO: Remove from `core-js@4` - - - - - - - - -var aTypedArray$8 = arrayBufferViewCore.aTypedArray; -var getTypedArrayConstructor$4 = arrayBufferViewCore.getTypedArrayConstructor; -var exportTypedArrayMethod$8 = arrayBufferViewCore.exportTypedArrayMethod; -var max = Math.max; -var min = Math.min; - -// some early implementations, like WebKit, does not follow the final semantic -var PROPER_ORDER = !fails(function () { - // eslint-disable-next-line es/no-typed-arrays -- required for testing - var array = new Int8Array([1]); - - var spliced = array.toSpliced(1, 0, { - valueOf: function () { - array[0] = 2; - return 3; - } - }); - - return spliced[0] !== 2 || spliced[1] !== 3; -}); - -// `%TypedArray%.prototype.toSpliced` method -// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.toSpliced -exportTypedArrayMethod$8('toSpliced', function toSpliced(start, deleteCount /* , ...items */) { - var O = aTypedArray$8(this); - var C = getTypedArrayConstructor$4(O); - var len = lengthOfArrayLike(O); - var actualStart = toAbsoluteIndex(start, len); - var argumentsLength = arguments.length; - var k = 0; - var insertCount, actualDeleteCount, thisIsBigIntArray, convertedItems, value, newLen, A; - if (argumentsLength === 0) { - insertCount = actualDeleteCount = 0; - } else if (argumentsLength === 1) { - insertCount = 0; - actualDeleteCount = len - actualStart; - } else { - actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart); - insertCount = argumentsLength - 2; - if (insertCount) { - convertedItems = new C(insertCount); - thisIsBigIntArray = isBigIntArray(convertedItems); - for (var i = 2; i < argumentsLength; i++) { - value = arguments[i]; - // FF30- typed arrays doesn't properly convert objects to typed array values - convertedItems[i - 2] = thisIsBigIntArray ? toBigInt(value) : +value; - } - } - } - newLen = len + insertCount - actualDeleteCount; - A = new C(newLen); - - for (; k < actualStart; k++) A[k] = O[k]; - for (; k < actualStart + insertCount; k++) A[k] = convertedItems[k - actualStart]; - for (; k < newLen; k++) A[k] = O[k + actualDeleteCount - insertCount]; - - return A; -}, !PROPER_ORDER); - -// eslint-disable-next-line es/no-map -- safe -var MapPrototype = Map.prototype; - -var mapHelpers = { - // eslint-disable-next-line es/no-map -- safe - Map: Map, - set: functionUncurryThis(MapPrototype.set), - get: functionUncurryThis(MapPrototype.get), - has: functionUncurryThis(MapPrototype.has), - remove: functionUncurryThis(MapPrototype['delete']), - proto: MapPrototype -}; - -var iterateSimple = function (iterator, fn, $next) { - var next = $next || iterator.next; - var step, result; - while (!(step = functionCall(next, iterator)).done) { - result = fn(step.value); - if (result !== undefined) return result; - } -}; - -var Map$1 = mapHelpers.Map; -var MapPrototype$1 = mapHelpers.proto; -var forEach = functionUncurryThis(MapPrototype$1.forEach); -var entries = functionUncurryThis(MapPrototype$1.entries); -var next = entries(new Map$1()).next; - -var mapIterate = function (map, fn, interruptible) { - return interruptible ? iterateSimple(entries(map), function (entry) { - return fn(entry[1], entry[0]); - }, next) : forEach(map, fn); -}; - -var Map$2 = mapHelpers.Map; -var mapHas = mapHelpers.has; -var mapSet = mapHelpers.set; -var push$2 = functionUncurryThis([].push); - -// `Array.prototype.uniqueBy` method -// https://github.com/tc39/proposal-array-unique -var arrayUniqueBy = function uniqueBy(resolver) { - var that = toObject(this); - var length = lengthOfArrayLike(that); - var result = []; - var map = new Map$2(); - var resolverFunction = !isNullOrUndefined(resolver) ? aCallable(resolver) : function (value) { - return value; - }; - var index, item, key; - for (index = 0; index < length; index++) { - item = that[index]; - key = resolverFunction(item); - if (!mapHas(map, key)) mapSet(map, key, item); - } - mapIterate(map, function (value) { - push$2(result, value); - }); - return result; -}; - -var aTypedArray$9 = arrayBufferViewCore.aTypedArray; -var getTypedArrayConstructor$5 = arrayBufferViewCore.getTypedArrayConstructor; -var exportTypedArrayMethod$9 = arrayBufferViewCore.exportTypedArrayMethod; -var arrayUniqueBy$1 = functionUncurryThis(arrayUniqueBy); - -// `%TypedArray%.prototype.uniqueBy` method -// https://github.com/tc39/proposal-array-unique -exportTypedArrayMethod$9('uniqueBy', function uniqueBy(resolver) { - aTypedArray$9(this); - return arrayFromConstructorAndList(getTypedArrayConstructor$5(this), arrayUniqueBy$1(this, resolver)); -}, true); - -var $RangeError = RangeError; - -// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.with -// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.with -var arrayWith = function (O, C, index, value) { - var len = lengthOfArrayLike(O); - var relativeIndex = toIntegerOrInfinity(index); - var actualIndex = relativeIndex < 0 ? len + relativeIndex : relativeIndex; - if (actualIndex >= len || actualIndex < 0) throw $RangeError('Incorrect index'); - var A = new C(len); - var k = 0; - for (; k < len; k++) A[k] = k === actualIndex ? value : O[k]; - return A; -}; - -var aTypedArray$a = arrayBufferViewCore.aTypedArray; -var getTypedArrayConstructor$6 = arrayBufferViewCore.getTypedArrayConstructor; -var exportTypedArrayMethod$a = arrayBufferViewCore.exportTypedArrayMethod; - -var PROPER_ORDER$1 = !!function () { - try { - // eslint-disable-next-line no-throw-literal, es/no-typed-arrays, es/no-array-prototype-with -- required for testing - new Int8Array(1)['with'](2, { valueOf: function () { throw 8; } }); - } catch (error) { - // some early implementations, like WebKit, does not follow the final semantic - // https://github.com/tc39/proposal-change-array-by-copy/pull/86 - return error === 8; - } -}(); - -// `%TypedArray%.prototype.with` method -// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.with -exportTypedArrayMethod$a('with', { 'with': function (index, value) { - var O = aTypedArray$a(this); - var relativeIndex = toIntegerOrInfinity(index); - var actualValue = isBigIntArray(O) ? toBigInt(value) : +value; - return arrayWith(O, getTypedArrayConstructor$6(O), relativeIndex, actualValue); -} }['with'], !PROPER_ORDER$1); - -export { mapIterate as a, arrayIterationFromLast as b, mapHelpers as m }; diff --git a/web_modules/common/esnext.iterator.filter-767449bc.js b/web_modules/common/esnext.iterator.filter-767449bc.js deleted file mode 100644 index 5e7a2c7d..00000000 --- a/web_modules/common/esnext.iterator.filter-767449bc.js +++ /dev/null @@ -1,79 +0,0 @@ -import { _ as _export, g as getIteratorDirect, a as aCallable, Q as asyncIteratorCreateProxy, m as anObject, n as functionCall, R as createIterResultObject, v as isObject, S as asyncIteratorClose, T as iteratorCreateProxy, U as callWithSafeIterationClosing } from './classof-f879816f.js'; - -var AsyncIteratorProxy = asyncIteratorCreateProxy(function (Promise) { - var state = this; - var iterator = state.iterator; - var predicate = state.predicate; - - return new Promise(function (resolve, reject) { - var doneAndReject = function (error) { - state.done = true; - reject(error); - }; - - var ifAbruptCloseAsyncIterator = function (error) { - asyncIteratorClose(iterator, doneAndReject, error, doneAndReject); - }; - - var loop = function () { - try { - Promise.resolve(anObject(functionCall(state.next, iterator))).then(function (step) { - try { - if (anObject(step).done) { - state.done = true; - resolve(createIterResultObject(undefined, true)); - } else { - var value = step.value; - try { - var result = predicate(value, state.counter++); - - var handler = function (selected) { - selected ? resolve(createIterResultObject(value, false)) : loop(); - }; - - if (isObject(result)) Promise.resolve(result).then(handler, ifAbruptCloseAsyncIterator); - else handler(result); - } catch (error3) { ifAbruptCloseAsyncIterator(error3); } - } - } catch (error2) { doneAndReject(error2); } - }, doneAndReject); - } catch (error) { doneAndReject(error); } - }; - - loop(); - }); -}); - -// `AsyncIterator.prototype.filter` method -// https://github.com/tc39/proposal-async-iterator-helpers -_export({ target: 'AsyncIterator', proto: true, real: true }, { - filter: function filter(predicate) { - return new AsyncIteratorProxy(getIteratorDirect(this), { - predicate: aCallable(predicate) - }); - } -}); - -var IteratorProxy = iteratorCreateProxy(function () { - var iterator = this.iterator; - var predicate = this.predicate; - var next = this.next; - var result, done, value; - while (true) { - result = anObject(functionCall(next, iterator)); - done = this.done = !!result.done; - if (done) return; - value = result.value; - if (callWithSafeIterationClosing(iterator, predicate, [value, this.counter++], true)) return value; - } -}); - -// `Iterator.prototype.filter` method -// https://github.com/tc39/proposal-iterator-helpers -_export({ target: 'Iterator', proto: true, real: true }, { - filter: function filter(predicate) { - return new IteratorProxy(getIteratorDirect(this), { - predicate: aCallable(predicate) - }); - } -}); diff --git a/web_modules/common/hsl-4880539e.js b/web_modules/common/hsl-4880539e.js deleted file mode 100644 index 98647cf8..00000000 --- a/web_modules/common/hsl-4880539e.js +++ /dev/null @@ -1,396 +0,0 @@ -import { _ as _export, g as getIteratorDirect, a as aCallable } from './classof-f879816f.js'; -import { a as asyncIteratorIteration } from './async-iterator-iteration-3872d331.js'; -import { i as iterate } from './iterate-9e24f8ec.js'; - -var $forEach = asyncIteratorIteration.forEach; - -// `AsyncIterator.prototype.forEach` method -// https://github.com/tc39/proposal-async-iterator-helpers -_export({ target: 'AsyncIterator', proto: true, real: true }, { - forEach: function forEach(fn) { - return $forEach(this, fn); - } -}); - -// `Iterator.prototype.forEach` method -// https://github.com/tc39/proposal-iterator-helpers -_export({ target: 'Iterator', proto: true, real: true }, { - forEach: function forEach(fn) { - var record = getIteratorDirect(this); - var counter = 0; - aCallable(fn); - iterate(record, function (value) { - fn(value, counter++); - }, { IS_RECORD: true }); - } -}); - -/** - * @typedef {number[]} oklab Cartesian form using D65 standard illuminant. - * - * Components range: 0 <= l <= 1; -0.233 <= a <= 0.276; -0.311 <= b <= 0.198; - * @see {@link https://bottosson.github.io/posts/oklab/#converting-from-linear-srgb-to-oklab} - */ - -/** - * @private - */ -function oklabToLinearSrgb(color, L, a, b) { - const l = (L + 0.3963377774 * a + 0.2158037573 * b) ** 3; - const m = (L - 0.1055613458 * a - 0.0638541728 * b) ** 3; - const s = (L - 0.0894841775 * a - 1.291485548 * b) ** 3; - color[0] = +4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s; - color[1] = -1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s; - color[2] = -0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s; - return color; -} - -/** - * @private - */ -function linearSrgbToOklab(color, lr, lg, lb) { - const l = Math.cbrt(0.4122214708 * lr + 0.5363325363 * lg + 0.0514459929 * lb); - const m = Math.cbrt(0.2119034982 * lr + 0.6806995451 * lg + 0.1073969566 * lb); - const s = Math.cbrt(0.0883024619 * lr + 0.2817188376 * lg + 0.6299787005 * lb); - color[0] = 0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s; - color[1] = 1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s; - color[2] = 0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s; - return color; -} - -/** - * Updates a color based on Oklab values and alpha. - * @param {import("./color.js").color} color - * @param {number} l - * @param {number} a - * @param {number} b - * @param {number} [α] - * @return {import("./color.js").color} - */ -function fromOklab(color, L, a, b, α) { - oklabToLinearSrgb(color, L, a, b); - color[0] = fromLinear(color[0]); - color[1] = fromLinear(color[1]); - color[2] = fromLinear(color[2]); - return setAlpha(color, α); -} - -/** - * Returns an Oklab representation of a given color. - * @param {import("./color.js").color} color - * @param {Array} out - * @return {oklab} - */ -function toOklab([r, g, b, a], out = []) { - linearSrgbToOklab(out, toLinear(r), toLinear(g), toLinear(b)); - return setAlpha(out, a); -} - -const setAlpha = (color, a) => { - if (a !== undefined) color[3] = a; - return color; -}; - -/** - * Convert component from linear value - * @param {number} c - * @returns {number} - */ -const fromLinear = c => c <= 0.0031308 ? 12.92 * c : 1.055 * c ** (1 / 2.4) - 0.055; - -/** - * Convert component to linear value - * @param {number} c - * @returns {number} - */ -const toLinear = c => c > 0.04045 ? ((c + 0.055) / 1.055) ** 2.4 : c / 12.92; -const floorArray = (color, precision = 5) => { - const p = 10 ** precision; - color.forEach((n, i) => color[i] = Math.floor((n + Number.EPSILON) * p) / p); - return color; -}; -const TMP = [0, 0, 0]; - -// HSLuv -// https://github.com/hsluv/hsluv/tree/master/haxe/src/hsluv -const L_EPSILON = 1e-10; -const m = [[3.240969941904521, -1.537383177570093, -0.498610760293], [-0.96924363628087, 1.87596750150772, 0.041555057407175], [0.055630079696993, -0.20397695888897, 1.056971514242878]]; -const minv = [[0.41239079926595, 0.35758433938387, 0.18048078840183], [0.21263900587151, 0.71516867876775, 0.072192315360733], [0.019330818715591, 0.11919477979462, 0.95053215224966]]; -const REF_U = 0.19783000664283; -const REF_V = 0.46831999493879; -const KAPPA = 9.032962962; -const EPSILON = 0.000088564516; -const yToL = Y => Y <= EPSILON ? Y * KAPPA : 1.16 * Y ** (1 / 3) - 0.16; -const lToY = L => L <= 0.08 ? L / KAPPA : ((L + 0.16) / 1.16) ** 3; -const xyzToLuv = ([X, Y, Z]) => { - const divider = X + 15 * Y + 3 * Z; - let varU = 4 * X; - let varV = 9 * Y; - if (divider !== 0) { - varU /= divider; - varV /= divider; - } else { - varU = NaN; - varV = NaN; - } - const L = yToL(Y); - if (L === 0) return [0, 0, 0]; - return [L, 13 * L * (varU - REF_U), 13 * L * (varV - REF_V)]; -}; -const luvToXyz = ([L, U, V]) => { - if (L === 0) return [0, 0, 0]; - const varU = U / (13 * L) + REF_U; - const varV = V / (13 * L) + REF_V; - const Y = lToY(L); - const X = 0 - 9 * Y * varU / ((varU - 4) * varV - varU * varV); - return [X, Y, (9 * Y - 15 * varV * Y - varV * X) / (3 * varV)]; -}; -const luvToLch = ([L, U, V]) => { - const C = Math.sqrt(U * U + V * V); - let H; - if (C < L_EPSILON) { - H = 0; - } else { - H = Math.atan2(V, U) / (2 * Math.PI); - if (H < 0) H = 1 + H; - } - return [L, C, H]; -}; -const lchToLuv = ([L, C, H]) => { - const Hrad = H * 2 * Math.PI; - return [L, Math.cos(Hrad) * C, Math.sin(Hrad) * C]; -}; - -// TODO: normalize -const getBounds = L => { - const result = []; - const sub1 = (L + 16) ** 3 / 1560896; - const sub2 = sub1 > EPSILON ? sub1 : L / KAPPA; - let _g = 0; - while (_g < 3) { - const c = _g++; - const m1 = m[c][0]; - const m2 = m[c][1]; - const m3 = m[c][2]; - let _g1 = 0; - while (_g1 < 2) { - const t = _g1++; - const top1 = (284517 * m1 - 94839 * m3) * sub2; - const top2 = (838422 * m3 + 769860 * m2 + 731718 * m1) * L * sub2 - 769860 * t * L; - const bottom = (632260 * m3 - 126452 * m2) * sub2 + 126452 * t; - result.push({ - slope: top1 / bottom, - intercept: top2 / bottom - }); - } - } - return result; -}; - -// Okhsl/Okhsv -// https://github.com/bottosson/bottosson.github.io/blob/master/misc/colorpicker/colorconversion.js -const k1 = 0.206; -const k2 = 0.03; -const k3 = (1 + k1) / (1 + k2); -function toe(x) { - return 0.5 * (k3 * x - k1 + Math.sqrt((k3 * x - k1) * (k3 * x - k1) + 4 * k2 * k3 * x)); -} -function toeInv(x) { - return (x * x + k1 * x) / (k3 * (x + k2)); -} -function computeMaxSaturation(a, b) { - let k0, k1, k2, k3, k4, wl, wm, ws; - if (-1.88170328 * a - 0.80936493 * b > 1) { - k0 = 1.19086277; - k1 = 1.76576728; - k2 = 0.59662641; - k3 = 0.75515197; - k4 = 0.56771245; - wl = 4.0767416621; - wm = -3.3077115913; - ws = 0.2309699292; - } else if (1.81444104 * a - 1.19445276 * b > 1) { - k0 = 0.73956515; - k1 = -0.45954404; - k2 = 0.08285427; - k3 = 0.1254107; - k4 = 0.14503204; - wl = -1.2684380046; - wm = 2.6097574011; - ws = -0.3413193965; - } else { - k0 = 1.35733652; - k1 = -0.00915799; - k2 = -1.1513021; - k3 = -0.50559606; - k4 = 0.00692167; - wl = -0.0041960863; - wm = -0.7034186147; - ws = 1.707614701; - } - let S = k0 + k1 * a + k2 * b + k3 * a * a + k4 * a * b; - const kl = 0.3963377774 * a + 0.2158037573 * b; - const km = -0.1055613458 * a - 0.0638541728 * b; - const ks = -0.0894841775 * a - 1.291485548 * b; - const l_ = 1 + S * kl; - const m_ = 1 + S * km; - const s_ = 1 + S * ks; - const l = l_ * l_ * l_; - const m = m_ * m_ * m_; - const s = s_ * s_ * s_; - const ldS = 3 * kl * l_ * l_; - const mdS = 3 * km * m_ * m_; - const sdS = 3 * ks * s_ * s_; - const ldS2 = 6 * kl * kl * l_; - const mdS2 = 6 * km * km * m_; - const sdS2 = 6 * ks * ks * s_; - const f = wl * l + wm * m + ws * s; - const f1 = wl * ldS + wm * mdS + ws * sdS; - const f2 = wl * ldS2 + wm * mdS2 + ws * sdS2; - S = S - f * f1 / (f1 * f1 - 0.5 * f * f2); - return S; -} -function findCusp(a, b) { - const sCusp = computeMaxSaturation(a, b); - oklabToLinearSrgb(TMP, 1, sCusp * a, sCusp * b); - const lCusp = Math.cbrt(1 / Math.max(TMP[0], TMP[1], TMP[2])); - return [lCusp, lCusp * sCusp]; -} -function getStMax(a_, b_, cusp = null) { - if (!cusp) cusp = findCusp(a_, b_); - return [cusp[1] / cusp[0], cusp[1] / (1 - cusp[0])]; -} - -var utils = /*#__PURE__*/Object.freeze({ - __proto__: null, - setAlpha: setAlpha, - fromLinear: fromLinear, - toLinear: toLinear, - floorArray: floorArray, - TMP: TMP, - L_EPSILON: L_EPSILON, - m: m, - minv: minv, - xyzToLuv: xyzToLuv, - luvToXyz: luvToXyz, - luvToLch: luvToLch, - lchToLuv: lchToLuv, - getBounds: getBounds, - toe: toe, - toeInv: toeInv, - findCusp: findCusp, - getStMax: getStMax -}); - -/** - * @typedef {string} hex hexadecimal string (RGB[A] or RRGGBB[AA]). - */ - -/** - * Updates a color based on a hexadecimal string. - * @param {import("./color.js").color} color - * @param {hex} hex Leading '#' is optional. - * @return {import("./color.js").color} - */ -function fromHex(color, hex) { - hex = hex.replace(/^#/, ""); - let a = 1; - if (hex.length === 8) { - a = parseInt(hex.slice(6, 8), 16) / 255; - hex = hex.slice(0, 6); - } else if (hex.length === 4) { - a = parseInt(hex.slice(3, 4).repeat(2), 16) / 255; - hex = hex.slice(0, 3); - } - if (hex.length === 3) { - hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]; - } - const num = parseInt(hex, 16); - color[0] = (num >> 16 & 255) / 255; - color[1] = (num >> 8 & 255) / 255; - color[2] = (num & 255) / 255; - if (color[3] !== undefined) color[3] = a; - return color; -} - -/** - * Returns a hexadecimal string representation of a given color. - * @param {import("./color.js").color} color - * @param {boolean} alpha Handle alpha - * @return {hex} - */ -function toHex(color, alpha = true) { - const c = color.map(val => Math.round(val * 255)); - return `#${(c[2] | c[1] << 8 | c[0] << 16 | 1 << 24).toString(16).slice(1).toUpperCase()}${alpha && color[3] !== undefined && color[3] !== 1 ? (c[3] | 1 << 8).toString(16).slice(1) : ""}`; -} - -/** - * @typedef {number[]} hsl hue, saturation, lightness. - * - * All components in the range 0 <= x <= 1 - * @see {@link https://en.wikipedia.org/wiki/HSL_and_HSV} - */ - -function hue2rgb(p, q, t) { - if (t < 0) t += 1; - if (t > 1) t -= 1; - if (t < 1 / 6) return p + (q - p) * 6 * t; - if (t < 1 / 2) return q; - if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6; - return p; -} - -/** - * Updates a color based on HSL values and alpha. - * @param {import("./color.js").color} color - * @param {number} h - * @param {number} s - * @param {number} l - * @param {number} [a] - * @return {import("./color.js").color} - */ -function fromHSL(color, h, s, l, a) { - if (s === 0) { - color[0] = color[1] = color[2] = l; // achromatic - } else { - const q = l < 0.5 ? l * (1 + s) : l + s - l * s; - const p = 2 * l - q; - color[0] = hue2rgb(p, q, h + 1 / 3); - color[1] = hue2rgb(p, q, h); - color[2] = hue2rgb(p, q, h - 1 / 3); - } - return setAlpha(color, a); -} - -/** - * Returns a HSL representation of a given color. - * @param {import("./color.js").color} color - * @param {Array} out - * @return {hsl} - */ -function toHSL([r, g, b, a], out = []) { - const max = Math.max(r, g, b); - const min = Math.min(r, g, b); - out[2] = (max + min) / 2; - if (max === min) { - out[0] = out[1] = 0; // achromatic - } else { - const d = max - min; - out[1] = out[2] > 0.5 ? d / (2 - max - min) : d / (max + min); - switch (max) { - case r: - out[0] = (g - b) / d + (g < b ? 6 : 0); - break; - case g: - out[0] = (b - r) / d + 2; - break; - case b: - out[0] = (r - g) / d + 4; - break; - } - out[0] /= 6; - } - return setAlpha(out, a); -} - -export { L_EPSILON as L, TMP as T, fromHSL as a, toHSL as b, minv as c, fromOklab as d, toe as e, fromLinear as f, getStMax as g, toeInv as h, findCusp as i, luvToXyz as j, lchToLuv as k, linearSrgbToOklab as l, m, luvToLch as n, oklabToLinearSrgb as o, getBounds as p, floorArray as q, fromHex as r, setAlpha as s, toLinear as t, utils as u, toHex as v, toOklab as w, xyzToLuv as x }; diff --git a/web_modules/common/iterate-9e24f8ec.js b/web_modules/common/iterate-9e24f8ec.js deleted file mode 100644 index cd7c267a..00000000 --- a/web_modules/common/iterate-9e24f8ec.js +++ /dev/null @@ -1,127 +0,0 @@ -import { o as objectIsPrototypeOf, w as wellKnownSymbol, b as global_1, i as isCallable, f as fails, h as hasOwnProperty_1, d as createNonEnumerableProperty, _ as _export, e as iteratorsCore, j as isNullOrUndefined, k as getMethod, l as classof, a as aCallable, m as anObject, n as functionCall, t as tryToString, p as functionBindContext, q as lengthOfArrayLike, r as iteratorClose } from './classof-f879816f.js'; - -var $TypeError = TypeError; - -var anInstance = function (it, Prototype) { - if (objectIsPrototypeOf(Prototype, it)) return it; - throw $TypeError('Incorrect invocation'); -}; - -var IteratorPrototype = iteratorsCore.IteratorPrototype; - - -var TO_STRING_TAG = wellKnownSymbol('toStringTag'); - -var NativeIterator = global_1.Iterator; - -// FF56- have non-standard global helper `Iterator` -var FORCED = !isCallable(NativeIterator) - || NativeIterator.prototype !== IteratorPrototype - // FF44- non-standard `Iterator` passes previous tests - || !fails(function () { NativeIterator({}); }); - -var IteratorConstructor = function Iterator() { - anInstance(this, IteratorPrototype); -}; - -if (!hasOwnProperty_1(IteratorPrototype, TO_STRING_TAG)) { - createNonEnumerableProperty(IteratorPrototype, TO_STRING_TAG, 'Iterator'); -} - -if (FORCED || !hasOwnProperty_1(IteratorPrototype, 'constructor') || IteratorPrototype.constructor === Object) { - createNonEnumerableProperty(IteratorPrototype, 'constructor', IteratorConstructor); -} - -IteratorConstructor.prototype = IteratorPrototype; - -// `Iterator` constructor -// https://github.com/tc39/proposal-iterator-helpers -_export({ global: true, constructor: true, forced: FORCED }, { - Iterator: IteratorConstructor -}); - -var iterators = {}; - -var ITERATOR = wellKnownSymbol('iterator'); -var ArrayPrototype = Array.prototype; - -// check on default Array iterator -var isArrayIteratorMethod = function (it) { - return it !== undefined && (iterators.Array === it || ArrayPrototype[ITERATOR] === it); -}; - -var ITERATOR$1 = wellKnownSymbol('iterator'); - -var getIteratorMethod = function (it) { - if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR$1) - || getMethod(it, '@@iterator') - || iterators[classof(it)]; -}; - -var $TypeError$1 = TypeError; - -var getIterator = function (argument, usingIterator) { - var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator; - if (aCallable(iteratorMethod)) return anObject(functionCall(iteratorMethod, argument)); - throw $TypeError$1(tryToString(argument) + ' is not iterable'); -}; - -var $TypeError$2 = TypeError; - -var Result = function (stopped, result) { - this.stopped = stopped; - this.result = result; -}; - -var ResultPrototype = Result.prototype; - -var iterate = function (iterable, unboundFunction, options) { - var that = options && options.that; - var AS_ENTRIES = !!(options && options.AS_ENTRIES); - var IS_RECORD = !!(options && options.IS_RECORD); - var IS_ITERATOR = !!(options && options.IS_ITERATOR); - var INTERRUPTED = !!(options && options.INTERRUPTED); - var fn = functionBindContext(unboundFunction, that); - var iterator, iterFn, index, length, result, next, step; - - var stop = function (condition) { - if (iterator) iteratorClose(iterator, 'normal', condition); - return new Result(true, condition); - }; - - var callFn = function (value) { - if (AS_ENTRIES) { - anObject(value); - return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]); - } return INTERRUPTED ? fn(value, stop) : fn(value); - }; - - if (IS_RECORD) { - iterator = iterable.iterator; - } else if (IS_ITERATOR) { - iterator = iterable; - } else { - iterFn = getIteratorMethod(iterable); - if (!iterFn) throw $TypeError$2(tryToString(iterable) + ' is not iterable'); - // optimisation for array iterators - if (isArrayIteratorMethod(iterFn)) { - for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) { - result = callFn(iterable[index]); - if (result && objectIsPrototypeOf(ResultPrototype, result)) return result; - } return new Result(false); - } - iterator = getIterator(iterable, iterFn); - } - - next = IS_RECORD ? iterable.next : iterator.next; - while (!(step = functionCall(next, iterator)).done) { - try { - result = callFn(step.value); - } catch (error) { - iteratorClose(iterator, 'throw', error); - } - if (typeof result == 'object' && result && objectIsPrototypeOf(ResultPrototype, result)) return result; - } return new Result(false); -}; - -export { iterate as i }; diff --git a/web_modules/common/object-set-prototype-of-4460a095.js b/web_modules/common/object-set-prototype-of-4460a095.js deleted file mode 100644 index 2a324595..00000000 --- a/web_modules/common/object-set-prototype-of-4460a095.js +++ /dev/null @@ -1,45 +0,0 @@ -import { x as functionUncurryThis, a as aCallable, i as isCallable, m as anObject } from './classof-f879816f.js'; - -var functionUncurryThisAccessor = function (object, key, method) { - try { - // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe - return functionUncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method])); - } catch (error) { /* empty */ } -}; - -var $String = String; -var $TypeError = TypeError; - -var aPossiblePrototype = function (argument) { - if (typeof argument == 'object' || isCallable(argument)) return argument; - throw $TypeError("Can't set " + $String(argument) + ' as a prototype'); -}; - -/* eslint-disable no-proto -- safe */ - - - - -// `Object.setPrototypeOf` method -// https://tc39.es/ecma262/#sec-object.setprototypeof -// Works with __proto__ only. Old v8 can't work with null proto objects. -// eslint-disable-next-line es/no-object-setprototypeof -- safe -var objectSetPrototypeOf = Object.setPrototypeOf || ('__proto__' in {} ? function () { - var CORRECT_SETTER = false; - var test = {}; - var setter; - try { - setter = functionUncurryThisAccessor(Object.prototype, '__proto__', 'set'); - setter(test, []); - CORRECT_SETTER = test instanceof Array; - } catch (error) { /* empty */ } - return function setPrototypeOf(O, proto) { - anObject(O); - aPossiblePrototype(proto); - if (CORRECT_SETTER) setter(O, proto); - else O.__proto__ = proto; - return O; - }; -}() : undefined); - -export { objectSetPrototypeOf as o }; diff --git a/web_modules/common/vec3-197fb173.js b/web_modules/common/vec3-197fb173.js deleted file mode 100644 index ff996605..00000000 --- a/web_modules/common/vec3-197fb173.js +++ /dev/null @@ -1,1170 +0,0 @@ -import { E as EPSILON } from './utils-7e499548.js'; - -/** @module mat4 */ - -/** - * Returns a 4x4 identity matrix. - * - * Row major memory layout: - * - * ``` - * 0 1 2 3 - * 4 5 6 7 - * 8 9 10 11 - * 12 13 14 15 - * ``` - * - * Equivalent to the column major OpenGL spec: - * - * ``` - * 0 4 8 12 - * 1 5 9 13 - * 2 6 10 14 - * 3 7 11 15 - * - * m00 m10 m20 m30 - * m01 m11 m21 m31 - * m02 m12 m22 m32 - * m03 m13 m23 m33 - * ``` - * @returns {import("./types.js").mat4} - */ -function create() { - // prettier-ignore - return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]; -} - -/** - * Sets a matrix to the identity matrix. - * @param {import("./types.js").mat4} a - * @returns {import("./types.js").mat4} - */ -function identity(a) { - a[0] = a[5] = a[10] = a[15] = 1; - a[1] = a[2] = a[3] = a[4] = a[6] = a[7] = a[8] = a[9] = a[11] = a[12] = a[13] = a[14] = 0; - return a; -} - -/** - * Returns a copy of a matrix. - * @param {import("./types.js").mat4} a - * @returns {import("./types.js").mat4} - */ -function copy(a) { - return a.slice(); -} - -/** - * Sets a matrix from another matrix. - * @param {import("./types.js").mat4} a - * @param {import("./types.js").mat4} b - * @returns {import("./types.js").mat4} - */ -function set(a, b) { - a[0] = b[0]; - a[1] = b[1]; - a[2] = b[2]; - a[3] = b[3]; - a[4] = b[4]; - a[5] = b[5]; - a[6] = b[6]; - a[7] = b[7]; - a[8] = b[8]; - a[9] = b[9]; - a[10] = b[10]; - a[11] = b[11]; - a[12] = b[12]; - a[13] = b[13]; - a[14] = b[14]; - a[15] = b[15]; - return a; -} - -/** - * Compares two matrices. - * @param {import("./types.js").mat4} a - * @param {import("./types.js").mat4} b - * @returns {boolean} - */ -function equals(a, b) { - return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15]; -} - -/** - * Multiplies two matrices. - * @param {import("./types.js").mat4} a - * @param {import("./types.js").mat4} b - * @returns {import("./types.js").mat4} - */ -function mult(a, b) { - const a00 = a[0]; - const a01 = a[1]; - const a02 = a[2]; - const a03 = a[3]; - const a10 = a[4]; - const a11 = a[5]; - const a12 = a[6]; - const a13 = a[7]; - const a20 = a[8]; - const a21 = a[9]; - const a22 = a[10]; - const a23 = a[11]; - const a30 = a[12]; - const a31 = a[13]; - const a32 = a[14]; - const a33 = a[15]; - let b0 = b[0]; - let b1 = b[1]; - let b2 = b[2]; - let b3 = b[3]; - a[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; - a[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; - a[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; - a[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; - b0 = b[4]; - b1 = b[5]; - b2 = b[6]; - b3 = b[7]; - a[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; - a[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; - a[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; - a[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; - b0 = b[8]; - b1 = b[9]; - b2 = b[10]; - b3 = b[11]; - a[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; - a[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; - a[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; - a[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; - b0 = b[12]; - b1 = b[13]; - b2 = b[14]; - b3 = b[15]; - a[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; - a[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; - a[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; - a[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; - return a; -} - -/** - * Inverts a matrix. - * @param {import("./types.js").mat4} a - * @returns {import("./types.js").mat4} - */ -function invert(a) { - const a00 = a[0]; - const a10 = a[1]; - const a20 = a[2]; - const a30 = a[3]; - const a01 = a[4]; - const a11 = a[5]; - const a21 = a[6]; - const a31 = a[7]; - const a02 = a[8]; - const a12 = a[9]; - const a22 = a[10]; - const a32 = a[11]; - const a03 = a[12]; - const a13 = a[13]; - const a23 = a[14]; - const a33 = a[15]; - const a22a33 = a22 * a33; - const a32a23 = a32 * a23; - const a21a33 = a21 * a33; - const a31a23 = a31 * a23; - const a21a32 = a21 * a32; - const a31a22 = a31 * a22; - const a20a33 = a20 * a33; - const a30a23 = a30 * a23; - const a20a32 = a20 * a32; - const a30a22 = a30 * a22; - const a20a31 = a20 * a31; - const a30a21 = a30 * a21; - const a00a11 = a00 * a11; - const a01a10 = a01 * a10; - const a02a10 = a02 * a10; - const a03a10 = a03 * a10; - const a12a33 = a12 * a33; - const a32a13 = a32 * a13; - const a00a31 = a00 * a31; - const a03a11 = a03 * a11; - const a12a23 = a12 * a23; - const a22a13 = a22 * a13; - const a02a11 = a02 * a11; - const a21a13 = a21 * a13; - const a21a12 = a21 * a12; - const a02a30 = a02 * a30; - const a03a30 = a03 * a30; - const a02a20 = a02 * a20; - const a03a20 = a03 * a20; - const a01a30 = a01 * a30; - const a01a20 = a01 * a20; - a[0] = a11 * a22a33 - a11 * a32a23 - a12 * a21a33 + a12 * a31a23 + a13 * a21a32 - a13 * a31a22; - a[4] = -a01 * a22a33 + a01 * a32a23 + a02 * a21a33 - a02 * a31a23 - a03 * a21a32 + a03 * a31a22; - a[8] = a01 * a12a33 - a01 * a32a13 - a02a11 * a33 + a02 * a31 * a13 + a03a11 * a32 - a03 * a31 * a12; - a[12] = -a01 * a12a23 + a01 * a22a13 + a02a11 * a23 - a02 * a21a13 - a03a11 * a22 + a03 * a21a12; - a[1] = -a10 * a22a33 + a10 * a32a23 + a12 * a20a33 - a12 * a30a23 - a13 * a20a32 + a13 * a30a22; - a[5] = a00 * a22a33 - a00 * a32a23 - a02 * a20a33 + a02 * a30a23 + a03 * a20a32 - a03 * a30a22; - a[9] = -a00 * a12a33 + a00 * a32a13 + a02a10 * a33 - a02a30 * a13 - a03a10 * a32 + a03a30 * a12; - a[13] = a00 * a12a23 - a00 * a22a13 - a02a10 * a23 + a02a20 * a13 + a03a10 * a22 - a03a20 * a12; - a[2] = a10 * a21a33 - a10 * a31a23 - a11 * a20a33 + a11 * a30a23 + a13 * a20a31 - a13 * a30a21; - a[6] = -a00 * a21a33 + a00 * a31a23 + a01 * a20a33 - a01 * a30a23 - a03 * a20a31 + a03 * a30a21; - a[10] = a00a11 * a33 - a00a31 * a13 - a01a10 * a33 + a01a30 * a13 + a03a10 * a31 - a03a30 * a11; - a[14] = -a00a11 * a23 + a00 * a21a13 + a01a10 * a23 - a01a20 * a13 - a03a10 * a21 + a03a20 * a11; - a[3] = -a10 * a21a32 + a10 * a31a22 + a11 * a20a32 - a11 * a30a22 - a12 * a20a31 + a12 * a30a21; - a[7] = a00 * a21a32 - a00 * a31a22 - a01 * a20a32 + a01 * a30a22 + a02 * a20a31 - a02 * a30a21; - a[11] = -a00a11 * a32 + a00a31 * a12 + a01a10 * a32 - a01a30 * a12 - a02a10 * a31 + a02a30 * a11; - a[15] = a00a11 * a22 - a00 * a21a12 - a01a10 * a22 + a01a20 * a12 + a02a10 * a21 - a02a20 * a11; - let det = a00 * a[0] + a10 * a[4] + a20 * a[8] + a30 * a[12]; - if (!det) return null; - det = 1 / det; - a[0] *= det; - a[1] *= det; - a[2] *= det; - a[3] *= det; - a[4] *= det; - a[5] *= det; - a[6] *= det; - a[7] *= det; - a[8] *= det; - a[9] *= det; - a[10] *= det; - a[11] *= det; - a[12] *= det; - a[13] *= det; - a[14] *= det; - a[15] *= det; - return a; -} - -/** - * Transposes a matrix. - * @param {import("./types.js").mat4} a - * @returns {import("./types.js").mat4} - */ -function transpose(a) { - const a01 = a[1]; - const a02 = a[2]; - const a03 = a[3]; - const a12 = a[6]; - const a13 = a[7]; - const a20 = a[8]; - const a21 = a[9]; - const a23 = a[11]; - const a30 = a[12]; - const a31 = a[13]; - const a32 = a[14]; - - // 1st row - keeping a00 - a[1] = a[4]; - a[2] = a20; - a[3] = a30; - // 2nd row - keeping a11 - a[4] = a01; - a[6] = a21; - a[7] = a31; - // 3rd row - keeping a22 - a[8] = a02; - a[9] = a12; - a[11] = a32; - // 4th row - keeping a33 - a[12] = a03; - a[13] = a13; - a[14] = a23; - return a; -} - -/** - * Translates a matrix by a vector. - * @param {import("./types.js").mat4} a - * @param {import("./types.js").vec3} v - * @returns {import("./types.js").mat4} - */ -function translate(a, [x, y, z]) { - a[12] += a[0] * x + a[4] * y + a[8] * z; - a[13] += a[1] * x + a[5] * y + a[9] * z; - a[14] += a[2] * x + a[6] * y + a[10] * z; - a[15] += a[3] * x + a[7] * y + a[11] * z; - return a; -} - -/** - * Rotates a matrix by an angle at an axis. - * @param {import("./types.js").mat4} a - * @param {import("./types.js").Radians} r - * @param {import("./types.js").vec3} v - * @returns {import("./types.js").mat4} - */ -function rotate(a, r, [x, y, z]) { - let len = Math.sqrt(x * x + y * y + z * z); - if (len < EPSILON) { - return null; - } - len = 1 / len; - x *= len; - y *= len; - z *= len; - const s = Math.sin(r); - const c = Math.cos(r); - const t = 1 - c; - const a00 = a[0]; - const a01 = a[1]; - const a02 = a[2]; - const a03 = a[3]; - const a10 = a[4]; - const a11 = a[5]; - const a12 = a[6]; - const a13 = a[7]; - const a20 = a[8]; - const a21 = a[9]; - const a22 = a[10]; - const a23 = a[11]; - const b00 = x * x * t + c; - const b01 = y * x * t + z * s; - const b02 = z * x * t - y * s; - const b10 = x * y * t - z * s; - const b11 = y * y * t + c; - const b12 = z * y * t + x * s; - const b20 = x * z * t + y * s; - const b21 = y * z * t - x * s; - const b22 = z * z * t + c; - a[0] = a00 * b00 + a10 * b01 + a20 * b02; - a[1] = a01 * b00 + a11 * b01 + a21 * b02; - a[2] = a02 * b00 + a12 * b01 + a22 * b02; - a[3] = a03 * b00 + a13 * b01 + a23 * b02; - a[4] = a00 * b10 + a10 * b11 + a20 * b12; - a[5] = a01 * b10 + a11 * b11 + a21 * b12; - a[6] = a02 * b10 + a12 * b11 + a22 * b12; - a[7] = a03 * b10 + a13 * b11 + a23 * b12; - a[8] = a00 * b20 + a10 * b21 + a20 * b22; - a[9] = a01 * b20 + a11 * b21 + a21 * b22; - a[10] = a02 * b20 + a12 * b21 + a22 * b22; - a[11] = a03 * b20 + a13 * b21 + a23 * b22; - return a; -} - -/** - * Scales a matrix by a vector. - * @param {import("./types.js").mat4} a - * @param {import("./types.js").vec3} v - * @returns {import("./types.js").mat4} - */ -function scale(a, [x, y, z]) { - a[0] *= x; - a[1] *= x; - a[2] *= x; - a[3] *= x; - a[4] *= y; - a[5] *= y; - a[6] *= y; - a[7] *= y; - a[8] *= z; - a[9] *= z; - a[10] *= z; - a[11] *= z; - return a; -} - -/** - * Sets a matrix to a quaternion. - * @param {import("./types.js").mat4} a - * @param {import("./types.js").quat} q - * @returns {import("./types.js").mat4} - */ -function fromQuat(a, q) { - const x = q[0]; - const y = q[1]; - const z = q[2]; - const w = q[3]; - const x2 = x + x; - const y2 = y + y; - const z2 = z + z; - const xx = x * x2; - const xy = x * y2; - const xz = x * z2; - const yy = y * y2; - const yz = y * z2; - const zz = z * z2; - const wx = w * x2; - const wy = w * y2; - const wz = w * z2; - a[0] = 1 - (yy + zz); - a[4] = xy - wz; - a[8] = xz + wy; - a[1] = xy + wz; - a[5] = 1 - (xx + zz); - a[9] = yz - wx; - a[2] = xz - wy; - a[6] = yz + wx; - a[10] = 1 - (xx + yy); - a[3] = a[7] = a[11] = a[12] = a[13] = a[14] = 0; - a[15] = 1; - return a; -} - -/** - * Sets a matrix to the TRS matrix. - * @param {import("./types.js").mat4} a - * @param {import("./types.js").vec3} v - * @param {import("./types.js").quat} q - * @param {import("./types.js").vec3} s - * @returns {import("./types.js").mat4} - */ -function fromTranslationRotationScale(a, v, q, s) { - // const TEMP_0 = create(); - // identity(a); - // translate(a, translation); - // mult(a, fromQuat(TEMP_0, rotation)); - // scale(a, scaling); - - const x = q[0]; - const y = q[1]; - const z = q[2]; - const w = q[3]; - const x2 = x + x; - const y2 = y + y; - const z2 = z + z; - const xx = x * x2; - const xy = x * y2; - const xz = x * z2; - const yy = y * y2; - const yz = y * z2; - const zz = z * z2; - const wx = w * x2; - const wy = w * y2; - const wz = w * z2; - a[3] = a[7] = a[11] = 0; - a[15] = 1; - a[0] = (1 - (yy + zz)) * s[0]; - a[1] = (xy + wz) * s[0]; - a[2] = (xz - wy) * s[0]; - a[4] = (xy - wz) * s[1]; - a[5] = (1 - (xx + zz)) * s[1]; - a[6] = (yz + wx) * s[1]; - a[8] = (xz + wy) * s[2]; - a[9] = (yz - wx) * s[2]; - a[10] = (1 - (xx + yy)) * s[2]; - a[12] = v[0]; - a[13] = v[1]; - a[14] = v[2]; - return a; -} - -/** - * Sets a 4x4 matrix to a 3x3 matrix. - * @param {import("./types.js").mat4} a - * @param {import("./types.js").mat3} b - * @returns {import("./types.js").mat4} - */ -function fromMat3(a, b) { - a[0] = b[0]; - a[1] = b[1]; - a[2] = b[2]; - a[4] = b[3]; - a[5] = b[4]; - a[6] = b[5]; - a[8] = b[6]; - a[9] = b[7]; - a[10] = b[8]; - a[3] = a[7] = a[11] = a[12] = a[13] = a[14] = 0; - a[15] = 1; - return a; -} - -/** - * Creates a frustum matrix. - * @param {import("./types.js").mat4} a - * @param {number} left - * @param {number} right - * @param {number} bottom - * @param {number} top - * @param {number} near - * @param {number} far - * @returns {import("./types.js").mat4} - */ -function frustum(a, left, right, bottom, top, near, far) { - const rl = 1 / (right - left); - const tb = 1 / (top - bottom); - const nf = 1 / (near - far); - const near2 = near * 2; - a[0] = near2 * rl; - a[1] = a[2] = 0; - a[3] = 0; - a[4] = 0; - a[5] = near2 * tb; - a[6] = 0; - a[7] = 0; - a[8] = (right + left) * rl; - a[9] = (top + bottom) * tb; - a[10] = (far + near) * nf; - a[11] = -1; - a[12] = 0; - a[13] = 0; - a[14] = far * near2 * nf; - a[15] = 0; - return a; -} - -/** - * Creates a perspective matrix. - * @param {import("./types.js").mat4} a - * @param {import("./types.js").Radians} fovy - * @param {number} aspectRatio - * @param {number} near - * @param {number} far - * @returns {import("./types.js").mat4} - */ -function perspective(a, fovy, aspectRatio, near, far) { - const f = 1 / Math.tan(fovy / 2); - const nf = 1 / (near - far); - a[1] = a[2] = a[3] = a[4] = a[6] = a[7] = a[8] = a[9] = a[12] = a[13] = a[15] = 0; - a[0] = f / aspectRatio; - a[5] = f; - a[10] = (far + near) * nf; - a[11] = -1; - a[14] = 2 * far * near * nf; - return a; -} - -/** - * Creates an orthographic matrix. - * @param {import("./types.js").mat4} a - * @param {number} left - * @param {number} right - * @param {number} bottom - * @param {number} top - * @param {number} near - * @param {number} far - * @returns {import("./types.js").mat4} - */ -function ortho(a, left, right, bottom, top, near, far) { - const lr = left - right; - const bt = bottom - top; - const nf = near - far; - a[1] = a[2] = a[3] = a[4] = a[6] = a[7] = a[8] = a[9] = a[11] = 0; - a[0] = -2 / lr; - a[5] = -2 / bt; - a[10] = 2 / nf; - a[12] = (left + right) / lr; - a[13] = (top + bottom) / bt; - a[14] = (far + near) / nf; - a[15] = 1; - return a; -} - -/** - * Calculates a lookAt matrix from position, target and up vectors. - * @param {import("./types.js").mat4} a - * @param {import("./types.js").vec3} from - * @param {import("./types.js").vec3} to - * @param {import("./types.js").vec3} up - * @returns {import("./types.js").mat4} - */ -function lookAt(a, [eyex, eyey, eyez], [targetx, targety, targetz], [upx, upy, upz]) { - if (Math.abs(eyex - targetx) < EPSILON && Math.abs(eyey - targety) < EPSILON && Math.abs(eyez - targetz) < EPSILON) { - return identity(a); - } - let z0 = eyex - targetx; - let z1 = eyey - targety; - let z2 = eyez - targetz; - let len = 1 / Math.sqrt(z0 * z0 + z1 * z1 + z2 * z2); - z0 *= len; - z1 *= len; - z2 *= len; - let x0 = upy * z2 - upz * z1; - let x1 = upz * z0 - upx * z2; - let x2 = upx * z1 - upy * z0; - len = Math.sqrt(x0 * x0 + x1 * x1 + x2 * x2); - if (len) { - len = 1 / len; - x0 *= len; - x1 *= len; - x2 *= len; - } - let y0 = z1 * x2 - z2 * x1; - let y1 = z2 * x0 - z0 * x2; - let y2 = z0 * x1 - z1 * x0; - len = Math.sqrt(y0 * y0 + y1 * y1 + y2 * y2); - if (len) { - len = 1 / len; - x0 *= len; - x1 *= len; - x2 *= len; - } - a[0] = x0; - a[1] = y0; - a[2] = z0; - a[3] = 0; - a[4] = x1; - a[5] = y1; - a[6] = z1; - a[7] = 0; - a[8] = x2; - a[9] = y2; - a[10] = z2; - a[11] = 0; - a[12] = -(x0 * eyex + x1 * eyey + x2 * eyez); - a[13] = -(y0 * eyex + y1 * eyey + y2 * eyez); - a[14] = -(z0 * eyex + z1 * eyey + z2 * eyez); - a[15] = 1; - return a; -} - -var mat4 = /*#__PURE__*/Object.freeze({ - __proto__: null, - create: create, - identity: identity, - copy: copy, - set: set, - equals: equals, - mult: mult, - invert: invert, - transpose: transpose, - translate: translate, - rotate: rotate, - scale: scale, - fromQuat: fromQuat, - fromTranslationRotationScale: fromTranslationRotationScale, - fromMat3: fromMat3, - frustum: frustum, - perspective: perspective, - ortho: ortho, - lookAt: lookAt -}); - -/** @module vec2 */ - -/** - * Returns a new vec2 at 0, 0, 0. - * @returns {import("./types.js").vec2} - */ -function create$1() { - return [0, 0]; -} - -/** - * Returns a copy of a vector. - * @param {import("./types.js").vec2} a - * @returns {import("./types.js").vec2} - */ -function copy$1(a) { - return a.slice(); -} - -/** - * Sets a vector to another vector. - * @param {import("./types.js").vec2} a - * @param {import("./types.js").vec2} b - * @returns {import("./types.js").vec2} - */ -function set$1(a, b) { - a[0] = b[0]; - a[1] = b[1]; - return a; -} - -/** - * Compares two vectors. - * @param {import("./types.js").vec2} a - * @param {import("./types.js").vec2} b - * @returns {boolean} - */ -function equals$1(a, b) { - return a[0] === b[0] && a[1] === b[1]; -} - -/** - * Add a vector to another. - * @param {import("./types.js").vec2} a - * @param {import("./types.js").vec2} b - * @returns {import("./types.js").vec2} - */ -function add(a, b) { - a[0] += b[0]; - a[1] += b[1]; - return a; -} - -/** - * Subtracts a vector from another. - * @param {import("./types.js").vec2} a - * @param {import("./types.js").vec2} b - * @returns {import("./types.js").vec2} - */ -function sub(a, b) { - a[0] -= b[0]; - a[1] -= b[1]; - return a; -} - -/** - * Scales a vector by a number. - * @param {import("./types.js").vec2} a - * @param {number} s - * @returns {import("./types.js").vec2} - */ -function scale$1(a, s) { - a[0] *= s; - a[1] *= s; - return a; -} - -/** - * Adds two vectors after scaling the second one. - * @param {import("./types.js").vec2} a - * @param {import("./types.js").vec2} b - * @param {number} s - * @returns {import("./types.js").vec2} - */ -function addScaled(a, b, s) { - a[0] += b[0] * s; - a[1] += b[1] * s; - return a; -} - -/** - * Calculates the dot product of two vectors. - * @param {import("./types.js").vec2} a - * @param {import("./types.js").vec2} b - * @returns {number} - */ -function dot(a, b) { - return a[0] * b[0] + a[1] * b[1]; -} - -/** - * Calculates the length of a vector. - * @param {import("./types.js").vec2} a - * @returns {number} - */ -function length(a) { - const x = a[0]; - const y = a[1]; - return Math.sqrt(x * x + y * y); -} - -/** - * Calculates the squared length of a vector. - * @param {import("./types.js").vec2} a - * @returns {number} - */ -function lengthSq(a) { - const x = a[0]; - const y = a[1]; - return x * x + y * y; -} - -/** - * Normalises a vector. - * @param {import("./types.js").vec2} a - * @returns {import("./types.js").vec2} - */ -function normalize(a) { - const x = a[0]; - const y = a[1]; - let l = Math.sqrt(x * x + y * y); - l = 1 / (l || 1); - a[0] *= l; - a[1] *= l; - return a; -} - -/** - * Calculates the distance between two vectors. - * @param {import("./types.js").vec2} a - * @param {import("./types.js").vec2} b - * @returns {number} - */ -function distance(a, b) { - const dx = b[0] - a[0]; - const dy = b[1] - a[1]; - return Math.sqrt(dx * dx + dy * dy); -} - -/** - * Calculates the squared distance between two vectors. - * @param {import("./types.js").vec2} a - * @param {import("./types.js").vec2} b - * @returns {number} - */ -function distanceSq(a, b) { - const dx = b[0] - a[0]; - const dy = b[1] - a[1]; - return dx * dx + dy * dy; -} - -/** - * Limits a vector to a length. - * @param {import("./types.js").vec2} a - * @param {number} len - * @returns {import("./types.js").vec2} - */ -function limit(a, len) { - const x = a[0]; - const y = a[1]; - const dsq = x * x + y * y; - const lsq = len * len; - if (lsq > 0 && dsq > lsq) { - const nd = len / Math.sqrt(dsq); - a[0] *= nd; - a[1] *= nd; - } - return a; -} - -/** - * Linearly interpolates between two vectors. - * @param {import("./types.js").vec2} a - * @param {import("./types.js").vec2} b - * @param {number} t - * @returns {import("./types.js").vec2} - */ -function lerp(a, b, t) { - const x = a[0]; - const y = a[1]; - a[0] = x + (b[0] - x) * t; - a[1] = y + (b[1] - y) * t; - return a; -} - -/** - * Prints a vector to a string. - * @param {import("./types.js").vec2} a - * @param {number} [precision=4] - * @returns {string} - */ -function toString(a, precision = 4) { - const scale = 10 ** precision; - // prettier-ignore - return `[${Math.floor(a[0] * scale) / scale}, ${Math.floor(a[1] * scale) / scale}]`; -} - -var vec2 = /*#__PURE__*/Object.freeze({ - __proto__: null, - create: create$1, - copy: copy$1, - set: set$1, - equals: equals$1, - add: add, - sub: sub, - scale: scale$1, - addScaled: addScaled, - dot: dot, - length: length, - lengthSq: lengthSq, - normalize: normalize, - distance: distance, - distanceSq: distanceSq, - limit: limit, - lerp: lerp, - toString: toString -}); - -/** @module vec3 */ - -/** - * Returns a new vec3 at 0, 0, 0. - * @returns {import("./types.js").vec3} - */ -function create$2() { - return [0, 0, 0]; -} - -/** - * Returns a copy of a vector. - * @param {import("./types.js").vec3} a - * @returns {import("./types.js").vec3} - */ -function copy$2(a) { - return a.slice(); -} - -/** - * Sets a vector to another vector. - * @param {import("./types.js").vec3} a - * @param {import("./types.js").vec3} b - * @returns {import("./types.js").vec3} - */ -function set$2(a, b) { - a[0] = b[0]; - a[1] = b[1]; - a[2] = b[2]; - return a; -} - -/** - * Compares two vectors. - * @param {import("./types.js").vec3} a - * @param {import("./types.js").vec3} b - * @returns {boolean} - */ -function equals$2(a, b) { - return a[0] === b[0] && a[1] === b[1] && a[2] === b[2]; -} - -/** - * Adds a vector to another. - * @param {import("./types.js").vec3} a - * @param {import("./types.js").vec3} b - * @returns {import("./types.js").vec3} - */ -function add$1(a, b) { - a[0] += b[0]; - a[1] += b[1]; - a[2] += b[2]; - return a; -} - -/** - * Subtracts a vector from another. - * @param {import("./types.js").vec3} a - * @param {import("./types.js").vec3} b - * @returns {import("./types.js").vec3} - */ -function sub$1(a, b) { - a[0] -= b[0]; - a[1] -= b[1]; - a[2] -= b[2]; - return a; -} - -/** - * Scales a vector by a number. - * @param {import("./types.js").vec3} a - * @param {number} s - * @returns {import("./types.js").vec3} - */ -function scale$2(a, s) { - a[0] *= s; - a[1] *= s; - a[2] *= s; - return a; -} - -/** - * Adds two vectors after scaling the second one. - * @param {import("./types.js").vec3} a - * @param {import("./types.js").vec3} b - * @param {number} s - * @returns {import("./types.js").vec3} - */ -function addScaled$1(a, b, s) { - a[0] += b[0] * s; - a[1] += b[1] * s; - a[2] += b[2] * s; - return a; -} - -/** - * Multiplies a vector by a matrix. - * @param {import("./types.js").vec3} a - * @param {import("./types.js").mat4} m - * @returns {import("./types.js").vec3} - */ -function multMat4(a, m) { - const x = a[0]; - const y = a[1]; - const z = a[2]; - a[0] = m[0] * x + m[4] * y + m[8] * z + m[12]; - a[1] = m[1] * x + m[5] * y + m[9] * z + m[13]; - a[2] = m[2] * x + m[6] * y + m[10] * z + m[14]; - return a; -} - -/** - * Multiplies a vector by a quaternion. - * @param {import("./types.js").vec3} a - * @param {import("./types.js").quat} q - * @returns {import("./types.js").vec3} - */ -function multQuat(a, q) { - const x = a[0]; - const y = a[1]; - const z = a[2]; - const qx = q[0]; - const qy = q[1]; - const qz = q[2]; - const qw = q[3]; - const ix = qw * x + qy * z - qz * y; - const iy = qw * y + qz * x - qx * z; - const iz = qw * z + qx * y - qy * x; - const iw = -qx * x - qy * y - qz * z; - a[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy; - a[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz; - a[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx; - return a; -} - -/** - * Calculates the dot product of two vectors. - * @param {import("./types.js").vec3} a - * @param {import("./types.js").vec3} b - * @returns {number} - */ -function dot$1(a, b) { - return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; -} - -/** - * Calculates the cross product of two vectors. - * @param {import("./types.js").vec3} a - * @param {import("./types.js").vec3} b - * @returns {import("./types.js").vec3} - */ -function cross(a, b) { - const x = a[0]; - const y = a[1]; - const z = a[2]; - const vx = b[0]; - const vy = b[1]; - const vz = b[2]; - a[0] = y * vz - vy * z; - a[1] = z * vx - vz * x; - a[2] = x * vy - vx * y; - return a; -} - -/** - * Calculates the length of a vector. - * @param {import("./types.js").vec3} a - * @returns {number} - */ -function length$1(a) { - const x = a[0]; - const y = a[1]; - const z = a[2]; - return Math.sqrt(x * x + y * y + z * z); -} - -/** - * Calculates the squared length of a vector. - * @param {import("./types.js").vec3} a - * @returns {number} - */ -function lengthSq$1(a) { - const x = a[0]; - const y = a[1]; - const z = a[2]; - return x * x + y * y + z * z; -} - -/** - * Normalises a vector. - * @param {import("./types.js").vec3} a - * @returns {import("./types.js").vec3} - */ -function normalize$1(a) { - const x = a[0]; - const y = a[1]; - const z = a[2]; - let l = Math.sqrt(x * x + y * y + z * z); - l = 1 / (l || 1); - a[0] *= l; - a[1] *= l; - a[2] *= l; - return a; -} - -/** - * Calculates the distance between two vectors. - * @param {import("./types.js").vec3} a - * @param {import("./types.js").vec3} b - * @returns {number} - */ -function distance$1(a, b) { - const dx = b[0] - a[0]; - const dy = b[1] - a[1]; - const dz = b[2] - a[2]; - return Math.sqrt(dx * dx + dy * dy + dz * dz); -} - -/** - * Calculates the squared distance between two vectors. - * @param {import("./types.js").vec3} a - * @param {import("./types.js").vec3} b - * @returns {number} - */ -function distanceSq$1(a, b) { - const dx = b[0] - a[0]; - const dy = b[1] - a[1]; - const dz = b[2] - a[2]; - return dx * dx + dy * dy + dz * dz; -} - -/** - * Limits a vector to a length. - * @param {import("./types.js").vec3} a - * @param {number} len - * @returns {import("./types.js").vec3} - */ -function limit$1(a, len) { - const x = a[0]; - const y = a[1]; - const z = a[2]; - const dsq = x * x + y * y + z * z; - const lsq = len * len; - if (lsq > 0 && dsq > lsq) { - const nd = len / Math.sqrt(dsq); - a[0] *= nd; - a[1] *= nd; - a[2] *= nd; - } - return a; -} - -/** - * Linearly interpolates between two vectors. - * @param {import("./types.js").vec3} a - * @param {import("./types.js").vec3} b - * @param {number} t - * @returns {import("./types.js").vec3} - */ -function lerp$1(a, b, t) { - const x = a[0]; - const y = a[1]; - const z = a[2]; - a[0] = x + (b[0] - x) * t; - a[1] = y + (b[1] - y) * t; - a[2] = z + (b[2] - z) * t; - return a; -} - -/** - * Prints a vector to a string. - * @param {import("./types.js").vec3} a - * @param {number} [precision=4] - * @returns {string} - */ -function toString$1(a, precision = 4) { - const scale = 10 ** precision; - // prettier-ignore - return `[${Math.floor(a[0] * scale) / scale}, ${Math.floor(a[1] * scale) / scale}, ${Math.floor(a[2] * scale) / scale}]`; -} - -var vec3 = /*#__PURE__*/Object.freeze({ - __proto__: null, - create: create$2, - copy: copy$2, - set: set$2, - equals: equals$2, - add: add$1, - sub: sub$1, - scale: scale$2, - addScaled: addScaled$1, - multMat4: multMat4, - multQuat: multQuat, - dot: dot$1, - cross: cross, - length: length$1, - lengthSq: lengthSq$1, - normalize: normalize$1, - distance: distance$1, - distanceSq: distanceSq$1, - limit: limit$1, - lerp: lerp$1, - toString: toString$1 -}); - -export { sub$1 as a, create$2 as b, create as c, set$2 as d, dot$1 as e, frustum as f, add$1 as g, scale$2 as h, invert as i, copy$2 as j, distance$1 as k, lookAt as l, multMat4 as m, normalize$1 as n, ortho as o, perspective as p, length$1 as q, distance as r, set as s, cross as t, mat4 as u, vec2 as v, vec3 as w }; diff --git a/web_modules/es-module-shims.js b/web_modules/es-module-shims.js index 44978e3f..a0fc90a3 100644 --- a/web_modules/es-module-shims.js +++ b/web_modules/es-module-shims.js @@ -1,2771 +1,2738 @@ -import { _ as _export, g as getIteratorDirect, a as aCallable, c as commonjsGlobal } from './common/classof-f879816f.js'; -import { a as asyncIteratorIteration } from './common/async-iterator-iteration-3872d331.js'; -import { i as iterate } from './common/iterate-9e24f8ec.js'; -import './common/es.error.cause-d475e2dc.js'; -import './common/es.typed-array.with-e94c18e3.js'; -import './common/esnext.iterator.filter-767449bc.js'; -import './common/object-set-prototype-of-4460a095.js'; +import { c as commonjsGlobal } from './_chunks/polyfills-3030d3af.js'; -var $some = asyncIteratorIteration.some; - -// `AsyncIterator.prototype.some` method -// https://github.com/tc39/proposal-async-iterator-helpers -_export({ target: 'AsyncIterator', proto: true, real: true }, { - some: function some(predicate) { - return $some(this, predicate); - } -}); - -// `Iterator.prototype.some` method -// https://github.com/tc39/proposal-iterator-helpers -_export({ target: 'Iterator', proto: true, real: true }, { - some: function some(predicate) { - var record = getIteratorDirect(this); - var counter = 0; - aCallable(predicate); - return iterate(record, function (value, stop) { - if (predicate(value, counter++)) return stop(); - }, { IS_RECORD: true, INTERRUPTED: true }).stopped; - } -}); - -/* ES Module Shims 1.6.3 */ -(function () { - const hasWindow = typeof window !== 'undefined'; - const hasDocument = typeof document !== 'undefined'; - const noop = () => {}; - const optionsScript = hasDocument ? document.querySelector('script[type=esms-options]') : undefined; - const esmsInitOptions = optionsScript ? JSON.parse(optionsScript.innerHTML) : {}; - Object.assign(esmsInitOptions, self.esmsInitOptions || {}); - let shimMode = hasDocument ? !!esmsInitOptions.shimMode : true; - const importHook = globalHook(shimMode && esmsInitOptions.onimport); - const resolveHook = globalHook(shimMode && esmsInitOptions.resolve); - let fetchHook = esmsInitOptions.fetch ? globalHook(esmsInitOptions.fetch) : fetch; - const metaHook = esmsInitOptions.meta ? globalHook(shimMode && esmsInitOptions.meta) : noop; - const mapOverrides = esmsInitOptions.mapOverrides; - let nonce = esmsInitOptions.nonce; - if (!nonce && hasDocument) { - const nonceElement = document.querySelector('script[nonce]'); - if (nonceElement) nonce = nonceElement.nonce || nonceElement.getAttribute('nonce'); - } - const onerror = globalHook(esmsInitOptions.onerror || noop); - const onpolyfill = esmsInitOptions.onpolyfill ? globalHook(esmsInitOptions.onpolyfill) : () => { - console.log('%c^^ Module TypeError above is polyfilled and can be ignored ^^', 'font-weight:900;color:#391'); - }; - const { - revokeBlobURLs, - noLoadEventRetriggers, - enforceIntegrity - } = esmsInitOptions; - function globalHook(name) { - return typeof name === 'string' ? self[name] : name; - } - const enable = Array.isArray(esmsInitOptions.polyfillEnable) ? esmsInitOptions.polyfillEnable : []; - const cssModulesEnabled = enable.includes('css-modules'); - const jsonModulesEnabled = enable.includes('json-modules'); - const edge = !navigator.userAgentData && !!navigator.userAgent.match(/Edge\/\d+\.\d+/); - const baseUrl = hasDocument ? document.baseURI : `${location.protocol}//${location.host}${location.pathname.includes('/') ? location.pathname.slice(0, location.pathname.lastIndexOf('/') + 1) : location.pathname}`; - const createBlob = (source, type = 'text/javascript') => URL.createObjectURL(new Blob([source], { - type - })); - let { - skip - } = esmsInitOptions; - if (Array.isArray(skip)) { - const l = skip.map(s => new URL(s, baseUrl).href); - skip = s => l.some(i => i[i.length - 1] === '/' && s.startsWith(i) || s === i); - } else if (typeof skip === 'string') { - const r = new RegExp(skip); - skip = s => r.test(s); - } - const eoop = err => setTimeout(() => { - throw err; - }); - const throwError = err => { - (self.reportError || hasWindow && window.safari && console.error || eoop)(err), void onerror(err); - }; - function fromParent(parent) { - return parent ? ` imported from ${parent}` : ''; - } - let importMapSrcOrLazy = false; - function setImportMapSrcOrLazy() { - importMapSrcOrLazy = true; - } +var esModuleShims = {}; - // shim mode is determined on initialization, no late shim mode - if (!shimMode) { - if (document.querySelectorAll('script[type=module-shim],script[type=importmap-shim],link[rel=modulepreload-shim]').length) { - shimMode = true; - } else { - let seenScript = false; - for (const script of document.querySelectorAll('script[type=module],script[type=importmap]')) { - if (!seenScript) { - if (script.type === 'module' && !script.ep) seenScript = true; - } else if (script.type === 'importmap' && seenScript) { - importMapSrcOrLazy = true; - break; - } - } +(function() { + const hasWindow = typeof window !== 'undefined'; + const hasDocument = typeof document !== 'undefined'; + const noop = ()=>{}; + const optionsScript = hasDocument ? document.querySelector('script[type=esms-options]') : undefined; + const esmsInitOptions = optionsScript ? JSON.parse(optionsScript.innerHTML) : {}; + Object.assign(esmsInitOptions, self.esmsInitOptions || {}); + let shimMode = hasDocument ? !!esmsInitOptions.shimMode : true; + const importHook = globalHook(shimMode && esmsInitOptions.onimport); + const resolveHook = globalHook(shimMode && esmsInitOptions.resolve); + let fetchHook = esmsInitOptions.fetch ? globalHook(esmsInitOptions.fetch) : fetch; + const metaHook = esmsInitOptions.meta ? globalHook(shimMode && esmsInitOptions.meta) : noop; + const mapOverrides = esmsInitOptions.mapOverrides; + let nonce = esmsInitOptions.nonce; + if (!nonce && hasDocument) { + const nonceElement = document.querySelector('script[nonce]'); + if (nonceElement) nonce = nonceElement.nonce || nonceElement.getAttribute('nonce'); } - } - const backslashRegEx = /\\/g; - function isURL(url) { - if (url.indexOf(':') === -1) return false; - try { - new URL(url); - return true; - } catch (_) { - return false; + const onerror = globalHook(esmsInitOptions.onerror || noop); + const onpolyfill = esmsInitOptions.onpolyfill ? globalHook(esmsInitOptions.onpolyfill) : ()=>{ + console.log('%c^^ Module TypeError above is polyfilled and can be ignored ^^', 'font-weight:900;color:#391'); + }; + const { revokeBlobURLs , noLoadEventRetriggers , enforceIntegrity } = esmsInitOptions; + function globalHook(name) { + return typeof name === 'string' ? self[name] : name; } - } - function resolveUrl(relUrl, parentUrl) { - return resolveIfNotPlainOrUrl(relUrl, parentUrl) || (isURL(relUrl) ? relUrl : resolveIfNotPlainOrUrl('./' + relUrl, parentUrl)); - } - function resolveIfNotPlainOrUrl(relUrl, parentUrl) { - const hIdx = parentUrl.indexOf('#'), - qIdx = parentUrl.indexOf('?'); - if (hIdx + qIdx > -2) parentUrl = parentUrl.slice(0, hIdx === -1 ? qIdx : qIdx === -1 || qIdx > hIdx ? hIdx : qIdx); - if (relUrl.indexOf('\\') !== -1) relUrl = relUrl.replace(backslashRegEx, '/'); - // protocol-relative - if (relUrl[0] === '/' && relUrl[1] === '/') { - return parentUrl.slice(0, parentUrl.indexOf(':') + 1) + relUrl; + const enable = Array.isArray(esmsInitOptions.polyfillEnable) ? esmsInitOptions.polyfillEnable : []; + const cssModulesEnabled = enable.includes('css-modules'); + const jsonModulesEnabled = enable.includes('json-modules'); + const edge = !navigator.userAgentData && !!navigator.userAgent.match(/Edge\/\d+\.\d+/); + const baseUrl = hasDocument ? document.baseURI : `${location.protocol}//${location.host}${location.pathname.includes('/') ? location.pathname.slice(0, location.pathname.lastIndexOf('/') + 1) : location.pathname}`; + const createBlob = (source, type)=>{ + if (type === void 0) type = 'text/javascript'; + return URL.createObjectURL(new Blob([ + source + ], { + type + })); + }; + let { skip } = esmsInitOptions; + if (Array.isArray(skip)) { + const l = skip.map((s)=>new URL(s, baseUrl).href); + skip = (s)=>l.some((i)=>i[i.length - 1] === '/' && s.startsWith(i) || s === i); + } else if (typeof skip === 'string') { + const r = new RegExp(skip); + skip = (s)=>r.test(s); } - // relative-url - else if (relUrl[0] === '.' && (relUrl[1] === '/' || relUrl[1] === '.' && (relUrl[2] === '/' || relUrl.length === 2 && (relUrl += '/')) || relUrl.length === 1 && (relUrl += '/')) || relUrl[0] === '/') { - const parentProtocol = parentUrl.slice(0, parentUrl.indexOf(':') + 1); - // Disabled, but these cases will give inconsistent results for deep backtracking - //if (parentUrl[parentProtocol.length] !== '/') - // throw new Error('Cannot resolve'); - // read pathname from parent URL - // pathname taken to be part after leading "/" - let pathname; - if (parentUrl[parentProtocol.length + 1] === '/') { - // resolving to a :// so we need to read out the auth and host - if (parentProtocol !== 'file:') { - pathname = parentUrl.slice(parentProtocol.length + 2); - pathname = pathname.slice(pathname.indexOf('/') + 1); + const eoop = (err)=>setTimeout(()=>{ + throw err; + }); + const throwError = (err)=>{ + (self.reportError || hasWindow && window.safari && console.error || eoop)(err), void onerror(err); + }; + function fromParent(parent) { + return parent ? ` imported from ${parent}` : ''; + } + let importMapSrcOrLazy = false; + function setImportMapSrcOrLazy() { + importMapSrcOrLazy = true; + } + // shim mode is determined on initialization, no late shim mode + if (!shimMode) { + if (document.querySelectorAll('script[type=module-shim],script[type=importmap-shim],link[rel=modulepreload-shim]').length) { + shimMode = true; } else { - pathname = parentUrl.slice(8); + let seenScript = false; + for (const script of document.querySelectorAll('script[type=module],script[type=importmap]')){ + if (!seenScript) { + if (script.type === 'module' && !script.ep) seenScript = true; + } else if (script.type === 'importmap' && seenScript) { + importMapSrcOrLazy = true; + break; + } + } } - } else { - // resolving to :/ so pathname is the /... part - pathname = parentUrl.slice(parentProtocol.length + (parentUrl[parentProtocol.length] === '/')); - } - if (relUrl[0] === '/') return parentUrl.slice(0, parentUrl.length - pathname.length - 1) + relUrl; - - // join together and split for removal of .. and . segments - // looping the string instead of anything fancy for perf reasons - // '../../../../../z' resolved to 'x/y' is just 'z' - const segmented = pathname.slice(0, pathname.lastIndexOf('/') + 1) + relUrl; - const output = []; - let segmentIndex = -1; - for (let i = 0; i < segmented.length; i++) { - // busy reading a segment - only terminate on '/' - if (segmentIndex !== -1) { - if (segmented[i] === '/') { - output.push(segmented.slice(segmentIndex, i + 1)); - segmentIndex = -1; - } - continue; + } + const backslashRegEx = /\\/g; + function isURL(url) { + if (url.indexOf(':') === -1) return false; + try { + new URL(url); + return true; + } catch (_) { + return false; } - // new segment - check if it is relative - else if (segmented[i] === '.') { - // ../ segment - if (segmented[i + 1] === '.' && (segmented[i + 2] === '/' || i + 2 === segmented.length)) { - output.pop(); - i += 2; - continue; - } - // ./ segment - else if (segmented[i + 1] === '/' || i + 1 === segmented.length) { - i += 1; - continue; - } + } + function resolveUrl(relUrl, parentUrl) { + return resolveIfNotPlainOrUrl(relUrl, parentUrl) || (isURL(relUrl) ? relUrl : resolveIfNotPlainOrUrl('./' + relUrl, parentUrl)); + } + function resolveIfNotPlainOrUrl(relUrl, parentUrl) { + const hIdx = parentUrl.indexOf('#'), qIdx = parentUrl.indexOf('?'); + if (hIdx + qIdx > -2) parentUrl = parentUrl.slice(0, hIdx === -1 ? qIdx : qIdx === -1 || qIdx > hIdx ? hIdx : qIdx); + if (relUrl.indexOf('\\') !== -1) relUrl = relUrl.replace(backslashRegEx, '/'); + // protocol-relative + if (relUrl[0] === '/' && relUrl[1] === '/') { + return parentUrl.slice(0, parentUrl.indexOf(':') + 1) + relUrl; + } else if (relUrl[0] === '.' && (relUrl[1] === '/' || relUrl[1] === '.' && (relUrl[2] === '/' || relUrl.length === 2 && (relUrl += '/')) || relUrl.length === 1 && (relUrl += '/')) || relUrl[0] === '/') { + const parentProtocol = parentUrl.slice(0, parentUrl.indexOf(':') + 1); + // Disabled, but these cases will give inconsistent results for deep backtracking + //if (parentUrl[parentProtocol.length] !== '/') + // throw new Error('Cannot resolve'); + // read pathname from parent URL + // pathname taken to be part after leading "/" + let pathname; + if (parentUrl[parentProtocol.length + 1] === '/') { + // resolving to a :// so we need to read out the auth and host + if (parentProtocol !== 'file:') { + pathname = parentUrl.slice(parentProtocol.length + 2); + pathname = pathname.slice(pathname.indexOf('/') + 1); + } else { + pathname = parentUrl.slice(8); + } + } else { + // resolving to :/ so pathname is the /... part + pathname = parentUrl.slice(parentProtocol.length + (parentUrl[parentProtocol.length] === '/')); + } + if (relUrl[0] === '/') return parentUrl.slice(0, parentUrl.length - pathname.length - 1) + relUrl; + // join together and split for removal of .. and . segments + // looping the string instead of anything fancy for perf reasons + // '../../../../../z' resolved to 'x/y' is just 'z' + const segmented = pathname.slice(0, pathname.lastIndexOf('/') + 1) + relUrl; + const output = []; + let segmentIndex = -1; + for(let i = 0; i < segmented.length; i++){ + // busy reading a segment - only terminate on '/' + if (segmentIndex !== -1) { + if (segmented[i] === '/') { + output.push(segmented.slice(segmentIndex, i + 1)); + segmentIndex = -1; + } + continue; + } else if (segmented[i] === '.') { + // ../ segment + if (segmented[i + 1] === '.' && (segmented[i + 2] === '/' || i + 2 === segmented.length)) { + output.pop(); + i += 2; + continue; + } else if (segmented[i + 1] === '/' || i + 1 === segmented.length) { + i += 1; + continue; + } + } + // it is the start of a new segment + while(segmented[i] === '/')i++; + segmentIndex = i; + } + // finish reading out the last segment + if (segmentIndex !== -1) output.push(segmented.slice(segmentIndex)); + return parentUrl.slice(0, parentUrl.length - pathname.length) + output.join(''); } - // it is the start of a new segment - while (segmented[i] === '/') i++; - segmentIndex = i; - } - // finish reading out the last segment - if (segmentIndex !== -1) output.push(segmented.slice(segmentIndex)); - return parentUrl.slice(0, parentUrl.length - pathname.length) + output.join(''); } - } - function resolveAndComposeImportMap(json, baseUrl, parentMap) { - const outMap = { - imports: Object.assign({}, parentMap.imports), - scopes: Object.assign({}, parentMap.scopes) - }; - if (json.imports) resolveAndComposePackages(json.imports, outMap.imports, baseUrl, parentMap); - if (json.scopes) for (let s in json.scopes) { - const resolvedScope = resolveUrl(s, baseUrl); - resolveAndComposePackages(json.scopes[s], outMap.scopes[resolvedScope] || (outMap.scopes[resolvedScope] = {}), baseUrl, parentMap); + function resolveAndComposeImportMap(json, baseUrl, parentMap) { + const outMap = { + imports: Object.assign({}, parentMap.imports), + scopes: Object.assign({}, parentMap.scopes) + }; + if (json.imports) resolveAndComposePackages(json.imports, outMap.imports, baseUrl, parentMap); + if (json.scopes) for(let s in json.scopes){ + const resolvedScope = resolveUrl(s, baseUrl); + resolveAndComposePackages(json.scopes[s], outMap.scopes[resolvedScope] || (outMap.scopes[resolvedScope] = {}), baseUrl, parentMap); + } + return outMap; } - return outMap; - } - function getMatch(path, matchObj) { - if (matchObj[path]) return path; - let sepIndex = path.length; - do { - const segment = path.slice(0, sepIndex + 1); - if (segment in matchObj) return segment; - } while ((sepIndex = path.lastIndexOf('/', sepIndex - 1)) !== -1); - } - function applyPackages(id, packages) { - const pkgName = getMatch(id, packages); - if (pkgName) { - const pkg = packages[pkgName]; - if (pkg === null) return; - return pkg + id.slice(pkgName.length); + function getMatch(path, matchObj) { + if (matchObj[path]) return path; + let sepIndex = path.length; + do { + const segment = path.slice(0, sepIndex + 1); + if (segment in matchObj) return segment; + }while ((sepIndex = path.lastIndexOf('/', sepIndex - 1)) !== -1) } - } - function resolveImportMap(importMap, resolvedOrPlain, parentUrl) { - let scopeUrl = parentUrl && getMatch(parentUrl, importMap.scopes); - while (scopeUrl) { - const packageResolution = applyPackages(resolvedOrPlain, importMap.scopes[scopeUrl]); - if (packageResolution) return packageResolution; - scopeUrl = getMatch(scopeUrl.slice(0, scopeUrl.lastIndexOf('/')), importMap.scopes); + function applyPackages(id, packages) { + const pkgName = getMatch(id, packages); + if (pkgName) { + const pkg = packages[pkgName]; + if (pkg === null) return; + return pkg + id.slice(pkgName.length); + } } - return applyPackages(resolvedOrPlain, importMap.imports) || resolvedOrPlain.indexOf(':') !== -1 && resolvedOrPlain; - } - function resolveAndComposePackages(packages, outPackages, baseUrl, parentMap) { - for (let p in packages) { - const resolvedLhs = resolveIfNotPlainOrUrl(p, baseUrl) || p; - if ((!shimMode || !mapOverrides) && outPackages[resolvedLhs] && outPackages[resolvedLhs] !== packages[resolvedLhs]) { - throw Error(`Rejected map override "${resolvedLhs}" from ${outPackages[resolvedLhs]} to ${packages[resolvedLhs]}.`); - } - let target = packages[p]; - if (typeof target !== 'string') continue; - const mapped = resolveImportMap(parentMap, resolveIfNotPlainOrUrl(target, baseUrl) || target, baseUrl); - if (mapped) { - outPackages[resolvedLhs] = mapped; - continue; - } - console.warn(`Mapping "${p}" -> "${packages[p]}" does not resolve`); + function resolveImportMap(importMap, resolvedOrPlain, parentUrl) { + let scopeUrl = parentUrl && getMatch(parentUrl, importMap.scopes); + while(scopeUrl){ + const packageResolution = applyPackages(resolvedOrPlain, importMap.scopes[scopeUrl]); + if (packageResolution) return packageResolution; + scopeUrl = getMatch(scopeUrl.slice(0, scopeUrl.lastIndexOf('/')), importMap.scopes); + } + return applyPackages(resolvedOrPlain, importMap.imports) || resolvedOrPlain.indexOf(':') !== -1 && resolvedOrPlain; } - } - let dynamicImport = !hasDocument && (0, eval)('u=>import(u)'); - let supportsDynamicImport; - const dynamicImportCheck = hasDocument && new Promise(resolve => { - const s = Object.assign(document.createElement('script'), { - src: createBlob('self._d=u=>import(u)'), - ep: true - }); - s.setAttribute('nonce', nonce); - s.addEventListener('load', () => { - if (!(supportsDynamicImport = !!(dynamicImport = self._d))) { - let err; - window.addEventListener('error', _err => err = _err); - dynamicImport = (url, opts) => new Promise((resolve, reject) => { - const s = Object.assign(document.createElement('script'), { - type: 'module', - src: createBlob(`import*as m from'${url}';self._esmsi=m`) - }); - err = undefined; - s.ep = true; - if (nonce) s.setAttribute('nonce', nonce); - // Safari is unique in supporting module script error events - s.addEventListener('error', cb); - s.addEventListener('load', cb); - function cb(_err) { - document.head.removeChild(s); - if (self._esmsi) { - resolve(self._esmsi, baseUrl); - self._esmsi = undefined; - } else { - reject(!(_err instanceof Event) && _err || err && err.error || new Error(`Error loading ${opts && opts.errUrl || url} (${s.src}).`)); - err = undefined; + function resolveAndComposePackages(packages, outPackages, baseUrl, parentMap) { + for(let p in packages){ + const resolvedLhs = resolveIfNotPlainOrUrl(p, baseUrl) || p; + if ((!shimMode || !mapOverrides) && outPackages[resolvedLhs] && outPackages[resolvedLhs] !== packages[resolvedLhs]) { + throw Error(`Rejected map override "${resolvedLhs}" from ${outPackages[resolvedLhs]} to ${packages[resolvedLhs]}.`); } - } - document.head.appendChild(s); - }); - } - document.head.removeChild(s); - delete self._d; - resolve(); - }); - document.head.appendChild(s); - }); - - // support browsers without dynamic import support (eg Firefox 6x) - let supportsJsonAssertions = false; - let supportsCssAssertions = false; - let supportsImportMaps = hasDocument && HTMLScriptElement.supports ? HTMLScriptElement.supports('importmap') : false; - let supportsImportMeta = supportsImportMaps; - const importMetaCheck = 'import.meta'; - const cssModulesCheck = `import"x"assert{type:"css"}`; - const jsonModulesCheck = `import"x"assert{type:"json"}`; - const featureDetectionPromise = Promise.resolve(dynamicImportCheck).then(() => { - if (!supportsDynamicImport || supportsImportMaps && !cssModulesEnabled && !jsonModulesEnabled) return; - if (!hasDocument) return Promise.all([supportsImportMaps || dynamicImport(createBlob(importMetaCheck)).then(() => supportsImportMeta = true, noop), cssModulesEnabled && dynamicImport(createBlob(cssModulesCheck.replace('x', createBlob('', 'text/css')))).then(() => supportsCssAssertions = true, noop), jsonModulesEnabled && dynamicImport(createBlob(jsonModulescheck.replace('x', createBlob('{}', 'text/json')))).then(() => supportsJsonAssertions = true, noop)]); - return new Promise(resolve => { - const iframe = document.createElement('iframe'); - iframe.style.display = 'none'; - iframe.setAttribute('nonce', nonce); - function cb({ - data: [a, b, c, d] - }) { - supportsImportMaps = a; - supportsImportMeta = b; - supportsCssAssertions = c; - supportsJsonAssertions = d; - resolve(); - document.head.removeChild(iframe); - window.removeEventListener('message', cb, false); - } - window.addEventListener('message', cb, false); - const importMapTest = `