summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorRich Trott <rtrott@gmail.com>2017-07-21 11:38:06 -0700
committerRich Trott <rtrott@gmail.com>2017-07-25 12:21:32 -0700
commitc49adbff6395654634d5c89661419696ce14352b (patch)
tree59029a2961e844d78cf1c0b198328530c2c4a142 /tools
parent50f45fffc1951c90bc87a0e22ca5a9990b653a8d (diff)
downloadandroid-node-v8-c49adbff6395654634d5c89661419696ce14352b.tar.gz
android-node-v8-c49adbff6395654634d5c89661419696ce14352b.tar.bz2
android-node-v8-c49adbff6395654634d5c89661419696ce14352b.zip
tools: update to ESLint 4.3.0
PR-URL: https://github.com/nodejs/node/pull/14417 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Teddy Katz <teddy.katz@gmail.com> Reviewed-By: Roman Reiss <me@silverwind.io> Reviewed-By: Refael Ackermann <refack@gmail.com>
Diffstat (limited to 'tools')
-rwxr-xr-xtools/eslint/bin/eslint.js7
-rw-r--r--tools/eslint/lib/config/config-initializer.js137
-rw-r--r--tools/eslint/lib/config/plugins.js12
-rw-r--r--tools/eslint/lib/rules/indent.js632
-rw-r--r--tools/eslint/lib/rules/no-constant-condition.js68
-rw-r--r--tools/eslint/lib/rules/no-restricted-globals.js59
-rw-r--r--tools/eslint/lib/rules/no-underscore-dangle.js29
-rw-r--r--tools/eslint/lib/rules/object-curly-newline.js18
-rw-r--r--tools/eslint/lib/rules/prefer-destructuring.js102
-rw-r--r--tools/eslint/lib/rules/prefer-numeric-literals.js43
-rw-r--r--tools/eslint/lib/util/npm-util.js17
-rw-r--r--tools/eslint/node_modules/ajv/dist/ajv.bundle.js8
-rw-r--r--tools/eslint/node_modules/ajv/dist/ajv.min.js4
-rw-r--r--tools/eslint/node_modules/ajv/dist/ajv.min.js.map2
-rw-r--r--tools/eslint/node_modules/ajv/lib/compile/index.js8
-rw-r--r--tools/eslint/node_modules/ajv/package.json10
-rw-r--r--tools/eslint/node_modules/character-entities-legacy/package.json32
-rw-r--r--tools/eslint/node_modules/character-entities-legacy/readme.md27
-rw-r--r--tools/eslint/node_modules/character-entities/package.json32
-rw-r--r--tools/eslint/node_modules/character-entities/readme.md29
-rw-r--r--tools/eslint/node_modules/character-reference-invalid/package.json40
-rw-r--r--tools/eslint/node_modules/character-reference-invalid/readme.md29
-rw-r--r--tools/eslint/node_modules/color-name/.eslintrc.json43
-rw-r--r--tools/eslint/node_modules/color-name/index.js4
-rw-r--r--tools/eslint/node_modules/color-name/package.json13
-rw-r--r--tools/eslint/node_modules/cross-spawn/LICENSE19
-rw-r--r--tools/eslint/node_modules/cross-spawn/README.md85
-rw-r--r--tools/eslint/node_modules/cross-spawn/index.js59
-rw-r--r--tools/eslint/node_modules/cross-spawn/lib/enoent.js73
-rw-r--r--tools/eslint/node_modules/cross-spawn/lib/parse.js113
-rw-r--r--tools/eslint/node_modules/cross-spawn/lib/util/escapeArgument.js30
-rw-r--r--tools/eslint/node_modules/cross-spawn/lib/util/escapeCommand.js12
-rw-r--r--tools/eslint/node_modules/cross-spawn/lib/util/hasEmptyArgumentBug.js18
-rw-r--r--tools/eslint/node_modules/cross-spawn/lib/util/readShebang.js37
-rw-r--r--tools/eslint/node_modules/cross-spawn/lib/util/resolveCommand.js31
-rw-r--r--tools/eslint/node_modules/cross-spawn/package.json83
-rw-r--r--tools/eslint/node_modules/functional-red-black-tree/LICENSE22
-rw-r--r--tools/eslint/node_modules/functional-red-black-tree/README.md237
-rw-r--r--tools/eslint/node_modules/functional-red-black-tree/bench/test.js11
-rw-r--r--tools/eslint/node_modules/functional-red-black-tree/package.json68
-rw-r--r--tools/eslint/node_modules/functional-red-black-tree/rbtree.js996
-rw-r--r--tools/eslint/node_modules/is-alphabetical/history.md6
-rw-r--r--tools/eslint/node_modules/is-alphabetical/index.js20
-rw-r--r--tools/eslint/node_modules/is-alphabetical/package.json43
-rw-r--r--tools/eslint/node_modules/is-alphabetical/readme.md13
-rw-r--r--tools/eslint/node_modules/is-alphanumerical/history.md6
-rw-r--r--tools/eslint/node_modules/is-alphanumerical/index.js21
-rw-r--r--tools/eslint/node_modules/is-alphanumerical/package.json40
-rw-r--r--tools/eslint/node_modules/is-alphanumerical/readme.md16
-rw-r--r--tools/eslint/node_modules/is-decimal/history.md6
-rw-r--r--tools/eslint/node_modules/is-decimal/index.js20
-rw-r--r--tools/eslint/node_modules/is-decimal/package.json40
-rw-r--r--tools/eslint/node_modules/is-decimal/readme.md20
-rw-r--r--tools/eslint/node_modules/is-hexadecimal/history.md6
-rw-r--r--tools/eslint/node_modules/is-hexadecimal/index.js20
-rw-r--r--tools/eslint/node_modules/is-hexadecimal/package.json40
-rw-r--r--tools/eslint/node_modules/is-hexadecimal/readme.md21
-rw-r--r--tools/eslint/node_modules/is-whitespace-character/history.md6
-rw-r--r--tools/eslint/node_modules/is-whitespace-character/index.js23
-rw-r--r--tools/eslint/node_modules/is-whitespace-character/package.json40
-rw-r--r--tools/eslint/node_modules/is-whitespace-character/readme.md8
-rw-r--r--tools/eslint/node_modules/is-word-character/history.md6
-rw-r--r--tools/eslint/node_modules/is-word-character/index.js23
-rw-r--r--tools/eslint/node_modules/is-word-character/package.json40
-rw-r--r--tools/eslint/node_modules/is-word-character/readme.md20
-rw-r--r--tools/eslint/node_modules/isexe/LICENSE15
-rw-r--r--tools/eslint/node_modules/isexe/README.md51
-rw-r--r--tools/eslint/node_modules/isexe/index.js57
-rw-r--r--tools/eslint/node_modules/isexe/mode.js41
-rw-r--r--tools/eslint/node_modules/isexe/package.json60
-rw-r--r--tools/eslint/node_modules/isexe/windows.js42
-rwxr-xr-xtools/eslint/node_modules/jschardet/LICENSE504
-rwxr-xr-xtools/eslint/node_modules/jschardet/dist/jschardet.js101
-rwxr-xr-xtools/eslint/node_modules/jschardet/dist/jschardet.min.js1344
-rwxr-xr-xtools/eslint/node_modules/jschardet/package.json10
-rwxr-xr-xtools/eslint/node_modules/jschardet/src/chardistribution.js10
-rwxr-xr-xtools/eslint/node_modules/jschardet/src/mbcssm.js4
-rw-r--r--tools/eslint/node_modules/lru-cache/LICENSE15
-rw-r--r--tools/eslint/node_modules/lru-cache/README.md152
-rw-r--r--tools/eslint/node_modules/lru-cache/index.js467
-rw-r--r--tools/eslint/node_modules/lru-cache/package.json68
-rw-r--r--tools/eslint/node_modules/markdown-escapes/history.md6
-rw-r--r--tools/eslint/node_modules/markdown-escapes/index.js20
-rw-r--r--tools/eslint/node_modules/markdown-escapes/package.json40
-rw-r--r--tools/eslint/node_modules/markdown-escapes/readme.md12
-rw-r--r--tools/eslint/node_modules/pseudomap/LICENSE15
-rw-r--r--tools/eslint/node_modules/pseudomap/README.md60
-rw-r--r--tools/eslint/node_modules/pseudomap/map.js9
-rw-r--r--tools/eslint/node_modules/pseudomap/package.json54
-rw-r--r--tools/eslint/node_modules/pseudomap/pseudomap.js113
-rw-r--r--tools/eslint/node_modules/semver/LICENSE15
-rw-r--r--tools/eslint/node_modules/semver/README.md350
-rwxr-xr-xtools/eslint/node_modules/semver/bin/semver133
-rw-r--r--tools/eslint/node_modules/semver/package.json54
-rw-r--r--tools/eslint/node_modules/semver/range.bnf16
-rw-r--r--tools/eslint/node_modules/semver/semver.js1203
-rw-r--r--tools/eslint/node_modules/shebang-command/index.js19
-rw-r--r--tools/eslint/node_modules/shebang-command/license21
-rw-r--r--tools/eslint/node_modules/shebang-command/package.json71
-rw-r--r--tools/eslint/node_modules/shebang-command/readme.md39
-rw-r--r--tools/eslint/node_modules/shebang-regex/index.js2
-rw-r--r--tools/eslint/node_modules/shebang-regex/license21
-rw-r--r--tools/eslint/node_modules/shebang-regex/package.json64
-rw-r--r--tools/eslint/node_modules/shebang-regex/readme.md29
-rw-r--r--tools/eslint/node_modules/string-width/index.js17
-rw-r--r--tools/eslint/node_modules/string-width/package.json10
-rw-r--r--tools/eslint/node_modules/vfile-location/index.js66
-rw-r--r--tools/eslint/node_modules/vfile-location/package.json45
-rw-r--r--tools/eslint/node_modules/vfile-location/readme.md31
-rw-r--r--tools/eslint/node_modules/vfile/index.js14
-rw-r--r--tools/eslint/node_modules/vfile/package.json16
-rw-r--r--tools/eslint/node_modules/vfile/readme.md15
-rw-r--r--tools/eslint/node_modules/which/LICENSE15
-rw-r--r--tools/eslint/node_modules/which/README.md48
-rwxr-xr-xtools/eslint/node_modules/which/bin/which52
-rw-r--r--tools/eslint/node_modules/which/package.json65
-rw-r--r--tools/eslint/node_modules/which/which.js132
-rw-r--r--tools/eslint/node_modules/yallist/LICENSE15
-rw-r--r--tools/eslint/node_modules/yallist/README.md204
-rw-r--r--tools/eslint/node_modules/yallist/iterator.js7
-rw-r--r--tools/eslint/node_modules/yallist/package.json62
-rw-r--r--tools/eslint/node_modules/yallist/yallist.js370
-rw-r--r--tools/eslint/package-lock.json201
-rw-r--r--tools/eslint/package.json16
124 files changed, 8670 insertions, 1841 deletions
diff --git a/tools/eslint/bin/eslint.js b/tools/eslint/bin/eslint.js
index 2b5d4e7fe8..7c05ad3b6e 100755
--- a/tools/eslint/bin/eslint.js
+++ b/tools/eslint/bin/eslint.js
@@ -44,11 +44,10 @@ process.once("uncaughtException", err => {
if (typeof err.messageTemplate === "string" && err.messageTemplate.length > 0) {
const template = lodash.template(fs.readFileSync(path.resolve(__dirname, `../messages/${err.messageTemplate}.txt`), "utf-8"));
- console.log("\nOops! Something went wrong! :(");
- console.log(`\n${template(err.messageData || {})}`);
+ console.error("\nOops! Something went wrong! :(");
+ console.error(`\n${template(err.messageData || {})}`);
} else {
- console.log(err.message);
- console.log(err.stack);
+ console.error(err.stack);
}
process.exitCode = 1;
diff --git a/tools/eslint/lib/config/config-initializer.js b/tools/eslint/lib/config/config-initializer.js
index e87cb79b6d..d344fa0ac7 100644
--- a/tools/eslint/lib/config/config-initializer.js
+++ b/tools/eslint/lib/config/config-initializer.js
@@ -12,10 +12,12 @@
const util = require("util"),
inquirer = require("inquirer"),
ProgressBar = require("progress"),
+ semver = require("semver"),
autoconfig = require("./autoconfig.js"),
ConfigFile = require("./config-file"),
ConfigOps = require("./config-ops"),
getSourceCodeOfFiles = require("../util/source-code-util").getSourceCodeOfFiles,
+ ModuleResolver = require("../util/module-resolver"),
npmUtil = require("../util/npm-util"),
recConfig = require("../../conf/eslint-recommended"),
log = require("../logging");
@@ -57,11 +59,34 @@ function writeFile(config, format) {
}
/**
+ * Get the peer dependencies of the given module.
+ * This adds the gotten value to cache at the first time, then reuses it.
+ * In a process, this function is called twice, but `npmUtil.fetchPeerDependencies` needs to access network which is relatively slow.
+ * @param {string} moduleName The module name to get.
+ * @returns {Object} The peer dependencies of the given module.
+ * This object is the object of `peerDependencies` field of `package.json`.
+ */
+function getPeerDependencies(moduleName) {
+ let result = getPeerDependencies.cache.get(moduleName);
+
+ if (!result) {
+ log.info(`Checking peerDependencies of ${moduleName}`);
+
+ result = npmUtil.fetchPeerDependencies(moduleName);
+ getPeerDependencies.cache.set(moduleName, result);
+ }
+
+ return result;
+}
+getPeerDependencies.cache = new Map();
+
+/**
* Synchronously install necessary plugins, configs, parsers, etc. based on the config
* @param {Object} config config object
+ * @param {boolean} [installESLint=true] If `false` is given, it does not install eslint.
* @returns {void}
*/
-function installModules(config) {
+function installModules(config, installESLint) {
const modules = {};
// Create a list of modules which should be installed based on config
@@ -73,11 +98,10 @@ function installModules(config) {
if (config.extends && config.extends.indexOf("eslint:") === -1) {
const moduleName = `eslint-config-${config.extends}`;
- log.info(`Checking peerDependencies of ${moduleName}`);
modules[moduleName] = "latest";
Object.assign(
modules,
- npmUtil.fetchPeerDependencies(`${moduleName}@latest`)
+ getPeerDependencies(`${moduleName}@latest`)
);
}
@@ -86,15 +110,17 @@ function installModules(config) {
return;
}
- // Add eslint to list in case user does not have it installed locally
- modules.eslint = modules.eslint || "latest";
-
- // Mark to show messages if it's new installation of eslint.
- const installStatus = npmUtil.checkDevDeps(["eslint"]);
+ if (installESLint === false) {
+ delete modules.eslint;
+ } else {
+ const installStatus = npmUtil.checkDevDeps(["eslint"]);
- if (installStatus.eslint === false) {
- log.info("Local ESLint installation not found.");
- config.installedESLint = true;
+ // Mark to show messages if it's new installation of eslint.
+ if (installStatus.eslint === false) {
+ log.info("Local ESLint installation not found.");
+ modules.eslint = modules.eslint || "latest";
+ config.installedESLint = true;
+ }
}
// Install packages
@@ -265,9 +291,10 @@ function processAnswers(answers) {
/**
* process user's style guide of choice and return an appropriate config object.
* @param {string} guide name of the chosen style guide
+ * @param {boolean} [installESLint=true] If `false` is given, it does not install eslint.
* @returns {Object} config object
*/
-function getConfigForStyleGuide(guide) {
+function getConfigForStyleGuide(guide, installESLint) {
const guides = {
google: { extends: "google" },
airbnb: { extends: "airbnb" },
@@ -279,11 +306,74 @@ function getConfigForStyleGuide(guide) {
throw new Error("You referenced an unsupported guide.");
}
- installModules(guides[guide]);
+ installModules(guides[guide], installESLint);
return guides[guide];
}
+/**
+ * Get the version of the local ESLint.
+ * @returns {string|null} The version. If the local ESLint was not found, returns null.
+ */
+function getLocalESLintVersion() {
+ try {
+ const resolver = new ModuleResolver();
+ const eslintPath = resolver.resolve("eslint", process.cwd());
+ const eslint = require(eslintPath);
+
+ return eslint.linter.version || null;
+ } catch (_err) {
+ return null;
+ }
+}
+
+/**
+ * Get the shareable config name of the chosen style guide.
+ * @param {Object} answers The answers object.
+ * @returns {string} The shareable config name.
+ */
+function getStyleGuideName(answers) {
+ if (answers.styleguide === "airbnb" && !answers.airbnbReact) {
+ return "airbnb-base";
+ }
+ return answers.styleguide;
+}
+
+/**
+ * Check whether the local ESLint version conflicts with the required version of the chosen shareable config.
+ * @param {Object} answers The answers object.
+ * @returns {boolean} `true` if the local ESLint is found then it conflicts with the required version of the chosen shareable config.
+ */
+function hasESLintVersionConflict(answers) {
+
+ // Get the local ESLint version.
+ const localESLintVersion = getLocalESLintVersion();
+
+ if (!localESLintVersion) {
+ return false;
+ }
+
+ // Get the required range of ESLint version.
+ const configName = getStyleGuideName(answers);
+ const moduleName = `eslint-config-${configName}@latest`;
+ const requiredESLintVersionRange = getPeerDependencies(moduleName).eslint;
+
+ if (!requiredESLintVersionRange) {
+ return false;
+ }
+
+ answers.localESLintVersion = localESLintVersion;
+ answers.requiredESLintVersionRange = requiredESLintVersionRange;
+
+ // Check the version.
+ if (semver.satisfies(localESLintVersion, requiredESLintVersionRange)) {
+ answers.installESLint = false;
+ return false;
+ }
+
+ return true;
+}
+
/* istanbul ignore next: no need to test inquirer*/
/**
* Ask use a few questions on command prompt
@@ -346,6 +436,21 @@ function promptUser() {
when(answers) {
return ((answers.source === "guide" && answers.packageJsonExists) || answers.source === "auto");
}
+ },
+ {
+ type: "confirm",
+ name: "installESLint",
+ message(answers) {
+ const verb = semver.ltr(answers.localESLintVersion, answers.requiredESLintVersionRange)
+ ? "upgrade"
+ : "downgrade";
+
+ return `The style guide "${answers.styleguide}" requires eslint@${answers.requiredESLintVersionRange}. You are currently using eslint@${answers.localESLintVersion}.\n Do you want to ${verb}?`;
+ },
+ default: true,
+ when(answers) {
+ return answers.source === "guide" && answers.packageJsonExists && hasESLintVersionConflict(answers);
+ }
}
]).then(earlyAnswers => {
@@ -355,11 +460,14 @@ function promptUser() {
log.info("A package.json is necessary to install plugins such as style guides. Run `npm init` to create a package.json file and try again.");
return void 0;
}
+ if (earlyAnswers.installESLint === false && !semver.satisfies(earlyAnswers.localESLintVersion, earlyAnswers.requiredESLintVersionRange)) {
+ log.info(`Note: it might not work since ESLint's version is mismatched with the ${earlyAnswers.styleguide} config.`);
+ }
if (earlyAnswers.styleguide === "airbnb" && !earlyAnswers.airbnbReact) {
earlyAnswers.styleguide = "airbnb-base";
}
- config = getConfigForStyleGuide(earlyAnswers.styleguide);
+ config = getConfigForStyleGuide(earlyAnswers.styleguide, earlyAnswers.installESLint);
writeFile(config, earlyAnswers.format);
return void 0;
@@ -479,6 +587,7 @@ function promptUser() {
const init = {
getConfigForStyleGuide,
+ hasESLintVersionConflict,
processAnswers,
/* istanbul ignore next */initializeConfig() {
return promptUser();
diff --git a/tools/eslint/lib/config/plugins.js b/tools/eslint/lib/config/plugins.js
index 11852df5c9..adfd8a1bbe 100644
--- a/tools/eslint/lib/config/plugins.js
+++ b/tools/eslint/lib/config/plugins.js
@@ -156,8 +156,20 @@ class Plugins {
* @param {string[]} pluginNames An array of plugins names.
* @returns {void}
* @throws {Error} If a plugin cannot be loaded.
+ * @throws {Error} If "plugins" in config is not an array
*/
loadAll(pluginNames) {
+
+ // if "plugins" in config is not an array, throw an error so user can fix their config.
+ if (!Array.isArray(pluginNames)) {
+ const pluginNotArrayMessage = "ESLint configuration error: \"plugins\" value must be an array";
+
+ debug(`${pluginNotArrayMessage}: ${JSON.stringify(pluginNames)}`);
+
+ throw new Error(pluginNotArrayMessage);
+ }
+
+ // load each plugin by name
pluginNames.forEach(this.load, this);
}
}
diff --git a/tools/eslint/lib/rules/indent.js b/tools/eslint/lib/rules/indent.js
index 727ecfaaed..ec3f79170c 100644
--- a/tools/eslint/lib/rules/indent.js
+++ b/tools/eslint/lib/rules/indent.js
@@ -1,7 +1,7 @@
/**
* @fileoverview This option sets a specific tab width for your code
*
- * This rule has been ported and modified from nodeca.
+ * @author Teddy Katz
* @author Vitaly Puzrin
* @author Gyandeep Singh
*/
@@ -14,6 +14,7 @@
const lodash = require("lodash");
const astUtils = require("../ast-utils");
+const createTree = require("functional-red-black-tree");
//------------------------------------------------------------------------------
// Rule Definition
@@ -114,6 +115,69 @@ const KNOWN_NODES = new Set([
* and report the token if the two values are not equal.
*/
+
+/**
+ * A mutable balanced binary search tree that stores (key, value) pairs. The keys are numeric, and must be unique.
+ * This is intended to be a generic wrapper around a balanced binary search tree library, so that the underlying implementation
+ * can easily be swapped out.
+ */
+class BinarySearchTree {
+
+ /**
+ * Creates an empty tree
+ */
+ constructor() {
+ this._rbTree = createTree();
+ }
+
+ /**
+ * Inserts an entry into the tree.
+ * @param {number} key The entry's key
+ * @param {*} value The entry's value
+ * @returns {void}
+ */
+ insert(key, value) {
+ const iterator = this._rbTree.find(key);
+
+ if (iterator.valid) {
+ this._rbTree = iterator.update(value);
+ } else {
+ this._rbTree = this._rbTree.insert(key, value);
+ }
+ }
+
+ /**
+ * Finds the entry with the largest key less than or equal to the provided key
+ * @param {number} key The provided key
+ * @returns {{key: number, value: *}|null} The found entry, or null if no such entry exists.
+ */
+ findLe(key) {
+ const iterator = this._rbTree.le(key);
+
+ return iterator && { key: iterator.key, value: iterator.value };
+ }
+
+ /**
+ * Deletes all of the keys in the interval [start, end)
+ * @param {number} start The start of the range
+ * @param {number} end The end of the range
+ * @returns {void}
+ */
+ deleteRange(start, end) {
+
+ // Exit without traversing the tree if the range has zero size.
+ if (start === end) {
+ return;
+ }
+ const iterator = this._rbTree.ge(start);
+
+ while (iterator.valid && iterator.key < end) {
+ this._rbTree = this._rbTree.remove(iterator.key);
+ iterator.next();
+ }
+ }
+}
+
/**
* A helper class to get token-based info related to indentation
*/
@@ -136,14 +200,6 @@ class TokenInfo {
}
/**
- * Gets all tokens and comments
- * @returns {Token[]} A list of all tokens and comments
- */
- getAllTokens() {
- return this.sourceCode.tokensAndComments;
- }
-
- /**
* Gets the first token on a given token's line
* @param {Token|ASTNode} token a node or token
* @returns {Token} The first token on the given line
@@ -178,50 +234,28 @@ class OffsetStorage {
/**
* @param {TokenInfo} tokenInfo a TokenInfo instance
- * @param {string} indentType The desired type of indentation (either "space" or "tab")
* @param {number} indentSize The desired size of each indentation level
*/
- constructor(tokenInfo, indentType, indentSize) {
- this.tokenInfo = tokenInfo;
- this.indentType = indentType;
- this.indentSize = indentSize;
-
- /*
- * desiredOffsets, lockedFirstTokens, and desiredIndentCache conceptually map tokens to something else.
- * However, they're implemented as objects with range indices as keys because this improves performance as of Node 7.
- * This uses the assumption that no two tokens start at the same index in the program.
- *
- * The values of the desiredOffsets map are objects with the schema { offset: number, from: Token|null }.
- * These objects should not be mutated or exposed outside of OffsetStorage.
- */
- const NO_OFFSET = { offset: 0, from: null };
+ constructor(tokenInfo, indentSize) {
+ this._tokenInfo = tokenInfo;
+ this._indentSize = indentSize;
- this.desiredOffsets = tokenInfo.getAllTokens().reduce((desiredOffsets, token) => {
- desiredOffsets[token.range[0]] = NO_OFFSET;
+ this._tree = new BinarySearchTree();
+ this._tree.insert(0, { offset: 0, from: null, force: false });
- return desiredOffsets;
- }, Object.create(null));
- this.lockedFirstTokens = Object.create(null);
- this.desiredIndentCache = Object.create(null);
- this.ignoredTokens = new WeakSet();
+ this._lockedFirstTokens = new WeakMap();
+ this._desiredIndentCache = new WeakMap();
+ this._ignoredTokens = new WeakSet();
}
- /**
- * Sets the indent of one token to match the indent of another.
- * @param {Token} baseToken The first token
- * @param {Token} offsetToken The second token, whose indent should be matched to the first token
- * @returns {void}
- */
- matchIndentOf(baseToken, offsetToken) {
- if (baseToken !== offsetToken) {
- this.desiredOffsets[offsetToken.range[0]] = { offset: 0, from: baseToken };
- }
+ _getOffsetDescriptor(token) {
+ return this._tree.findLe(token.range[0]).value;
}
/**
* Sets the offset column of token B to match the offset column of token A.
- * **WARNING**: This is different from matchIndentOf because it matches a *column*, even if baseToken is not
- * the first token on its line. In most cases, `matchIndentOf` should be used instead.
+ * **WARNING**: This matches a *column*, even if baseToken is not the first token on its line. In
+ * most cases, `setDesiredOffset` should be used instead.
* @param {Token} baseToken The first token
* @param {Token} offsetToken The second token, whose offset should be matched to the first token
* @returns {void}
@@ -235,7 +269,7 @@ class OffsetStorage {
* element. The desired indentation of each of these tokens is computed based on the desired indentation
* of the "first" element, rather than through the normal offset mechanism.
*/
- this.lockedFirstTokens[offsetToken.range[0]] = baseToken;
+ this._lockedFirstTokens.set(offsetToken, baseToken);
}
/**
@@ -291,48 +325,84 @@ class OffsetStorage {
* in the second case.
*
* @param {Token} token The token
- * @param {Token} offsetFrom The token that `token` should be offset from
+ * @param {Token} fromToken The token that `token` should be offset from
* @param {number} offset The desired indent level
* @returns {void}
*/
- setDesiredOffset(token, offsetFrom, offset) {
- if (offsetFrom && token.loc.start.line === offsetFrom.loc.start.line) {
- this.matchIndentOf(offsetFrom, token);
- } else {
- this.desiredOffsets[token.range[0]] = { offset, from: offsetFrom };
- }
+ setDesiredOffset(token, fromToken, offset) {
+ return this.setDesiredOffsets(token.range, fromToken, offset);
}
/**
- * Sets the desired offset of a token, ignoring the usual collapsing behavior.
- * **WARNING**: This is usually not what you want to use. See `setDesiredOffset` instead.
- * @param {Token} token The token
- * @param {Token} offsetFrom The token that `token` should be offset from
- * @param {number} offset The desired indent level
- * @returns {void}
- */
- forceSetDesiredOffset(token, offsetFrom, offset) {
- this.desiredOffsets[token.range[0]] = { offset, from: offsetFrom };
- }
-
- /**
- * Sets the desired offset of multiple tokens
- * @param {Token[]} tokens A list of tokens. These tokens should be consecutive.
- * @param {Token} offsetFrom The token that this is offset from
+ * Sets the desired offset of all tokens in a range
+ * It's common for node listeners in this file to need to apply the same offset to a large, contiguous range of tokens.
+ * Moreover, the offset of any given token is usually updated multiple times (roughly once for each node that contains
+ * it). This means that the offset of each token is updated O(AST depth) times.
+ * It would not be performant to store and update the offsets for each token independently, because the rule would end
+ * up having a time complexity of O(number of tokens * AST depth), which is quite slow for large files.
+ *
+ * Instead, the offset tree is represented as a collection of contiguous offset ranges in a file. For example, the following
+ * list could represent the state of the offset tree at a given point:
+ *
+ * * Tokens starting in the interval [0, 15) are aligned with the beginning of the file
+ * * Tokens starting in the interval [15, 30) are offset by 1 indent level from the `bar` token
+ * * Tokens starting in the interval [30, 43) are offset by 1 indent level from the `foo` token
+ * * Tokens starting in the interval [43, 820) are offset by 2 indent levels from the `bar` token
+ * * Tokens starting in the interval [820, ∞) are offset by 1 indent level from the `baz` token
+ *
+ * The `setDesiredOffsets` methods inserts ranges like the ones above. The third line above would be inserted by using:
+ * `setDesiredOffsets([30, 43], fooToken, 1);`
+ *
+ * @param {[number, number]} range A [start, end] pair. All tokens with range[0] <= token.start < range[1] will have the offset applied.
+ * @param {Token} fromToken The token that this is offset from
* @param {number} offset The desired indent level
+ * @param {boolean} force `true` if this offset should not use the normal collapsing behavior. This should almost always be false.
* @returns {void}
*/
- setDesiredOffsets(tokens, offsetFrom, offset) {
+ setDesiredOffsets(range, fromToken, offset, force) {
/*
- * TODO: (not-an-aardvark) This function is the main performance holdup for this rule. It works
- * by setting the desired offset of each token to the given amount relative to the parent, but it's
- * frequently called with a large list of tokens, and it takes time to set the offset for each token
- * individually. Since the tokens are always consecutive, it might be possible to improve performance
- * here by changing the data structure used to store offsets (e.g. allowing a *range* of tokens to
- * be offset rather than offsetting each token individually).
+ * Offset ranges are stored as a collection of nodes, where each node maps a numeric key to an offset
+ * descriptor. The tree for the example above would have the following nodes:
+ *
+ * * key: 0, value: { offset: 0, from: null }
+ * * key: 15, value: { offset: 1, from: barToken }
+ * * key: 30, value: { offset: 1, from: fooToken }
+ * * key: 43, value: { offset: 2, from: barToken }
+ * * key: 820, value: { offset: 1, from: bazToken }
+ *
+ * To find the offset descriptor for any given token, one needs to find the node with the largest key
+ * which is <= token.start. To make this operation fast, the nodes are stored in a balanced binary
+ * search tree indexed by key.
+ */
+
+ const descriptorToInsert = { offset, from: fromToken, force };
+
+ const descriptorAfterRange = this._tree.findLe(range[1]).value;
+
+ const fromTokenIsInRange = fromToken && fromToken.range[0] >= range[0] && fromToken.range[1] <= range[1];
+ const fromTokenDescriptor = fromTokenIsInRange && this._getOffsetDescriptor(fromToken);
+
+ // First, remove any existing nodes in the range from the tree.
+ this._tree.deleteRange(range[0] + 1, range[1]);
+
+ // Insert a new node into the tree for this range
+ this._tree.insert(range[0], descriptorToInsert);
+
+ /*
+ * To avoid circular offset dependencies, keep the `fromToken` token mapped to whatever it was mapped to previously,
+ * even if it's in the current range.
*/
- tokens.forEach(token => this.setDesiredOffset(token, offsetFrom, offset));
+ if (fromTokenIsInRange) {
+ this._tree.insert(fromToken.range[0], fromTokenDescriptor);
+ this._tree.insert(fromToken.range[1], descriptorToInsert);
+ }
+
+ /*
+ * To avoid modifying the offset of tokens after the range, insert another node to keep the offset of the following
+ * tokens the same as it was before.
+ */
+ this._tree.insert(range[1], descriptorAfterRange);
}
/**
@@ -341,30 +411,37 @@ class OffsetStorage {
* @returns {number} The desired indent of the token
*/
getDesiredIndent(token) {
- if (!(token.range[0] in this.desiredIndentCache)) {
+ if (!this._desiredIndentCache.has(token)) {
- if (this.ignoredTokens.has(token)) {
+ if (this._ignoredTokens.has(token)) {
// If the token is ignored, use the actual indent of the token as the desired indent.
// This ensures that no errors are reported for this token.
- this.desiredIndentCache[token.range[0]] = this.tokenInfo.getTokenIndent(token).length / this.indentSize;
- } else if (token.range[0] in this.lockedFirstTokens) {
- const firstToken = this.lockedFirstTokens[token.range[0]];
+ this._desiredIndentCache.set(token, this._tokenInfo.getTokenIndent(token).length / this._indentSize);
+ } else if (this._lockedFirstTokens.has(token)) {
+ const firstToken = this._lockedFirstTokens.get(token);
- this.desiredIndentCache[token.range[0]] =
+ this._desiredIndentCache.set(
+ token,
// (indentation for the first element's line)
- this.getDesiredIndent(this.tokenInfo.getFirstTokenOfLine(firstToken)) +
+ this.getDesiredIndent(this._tokenInfo.getFirstTokenOfLine(firstToken)) +
// (space between the start of the first element's line and the first element)
- (firstToken.loc.start.column - this.tokenInfo.getFirstTokenOfLine(firstToken).loc.start.column) / this.indentSize;
+ (firstToken.loc.start.column - this._tokenInfo.getFirstTokenOfLine(firstToken).loc.start.column) / this._indentSize
+ );
} else {
- const offsetInfo = this.desiredOffsets[token.range[0]];
-
- this.desiredIndentCache[token.range[0]] = offsetInfo.offset + (offsetInfo.from ? this.getDesiredIndent(offsetInfo.from) : 0);
+ const offsetInfo = this._getOffsetDescriptor(token);
+ const offset = (
+ offsetInfo.from &&
+ offsetInfo.from.loc.start.line === token.loc.start.line &&
+ !offsetInfo.force
+ ) ? 0 : offsetInfo.offset;
+
+ this._desiredIndentCache.set(token, offset + (offsetInfo.from ? this.getDesiredIndent(offsetInfo.from) : 0));
}
}
- return this.desiredIndentCache[token.range[0]];
+ return this._desiredIndentCache.get(token);
}
/**
@@ -373,8 +450,8 @@ class OffsetStorage {
* @returns {void}
*/
ignoreToken(token) {
- if (this.tokenInfo.isFirstTokenOfLine(token)) {
- this.ignoredTokens.add(token);
+ if (this._tokenInfo.isFirstTokenOfLine(token)) {
+ this._ignoredTokens.add(token);
}
}
@@ -384,7 +461,7 @@ class OffsetStorage {
* @returns {Token} The token that the given token depends on, or `null` if the given token is at the top level
*/
getFirstDependency(token) {
- return this.desiredOffsets[token.range[0]].from;
+ return this._getOffsetDescriptor(token).from;
}
}
@@ -539,8 +616,6 @@ module.exports = {
MemberExpression: 1,
ArrayExpression: 1,
ObjectExpression: 1,
- ArrayPattern: 1,
- ObjectPattern: 1,
flatTernaryExpressions: false
};
@@ -548,7 +623,7 @@ module.exports = {
if (context.options[0] === "tab") {
indentSize = 1;
indentType = "tab";
- } else if (typeof context.options[0] === "number") {
+ } else {
indentSize = context.options[0];
indentType = "space";
}
@@ -568,7 +643,7 @@ module.exports = {
const sourceCode = context.getSourceCode();
const tokenInfo = new TokenInfo(sourceCode);
- const offsets = new OffsetStorage(tokenInfo, indentType, indentSize);
+ const offsets = new OffsetStorage(tokenInfo, indentSize);
const parameterParens = new WeakSet();
/**
@@ -600,10 +675,10 @@ module.exports = {
/**
* Reports a given indent violation
- * @param {Token} token Node violating the indent rule
+ * @param {Token} token Token violating the indent rule
* @param {int} neededIndentLevel Expected indentation level
- * @param {int} gottenSpaces Indentation space count in the actual node/code
- * @param {int} gottenTabs Indentation tab count in the actual node/code
+ * @param {int} gottenSpaces Actual number of indentation spaces for the token
+ * @param {int} gottenTabs Actual number of indentation tabs for the token
* @returns {void}
*/
function report(token, neededIndentLevel) {
@@ -679,15 +754,6 @@ module.exports = {
}
/**
- * Gets all tokens and comments for a node
- * @param {ASTNode} node The node
- * @returns {Token[]} A list of tokens and comments
- */
- function getTokensAndComments(node) {
- return sourceCode.getTokens(node, { includeComments: true });
- }
-
- /**
* Check indentation for lists of elements (arrays, objects, function params)
* @param {ASTNode[]} elements List of elements that should be offset
* @param {Token} startToken The start token of the list that element should be aligned against, e.g. '['
@@ -712,13 +778,12 @@ module.exports = {
}
// Run through all the tokens in the list, and offset them by one indent level (mainly for comments, other things will end up overridden)
- // FIXME: (not-an-aardvark) This isn't performant at all.
offsets.setDesiredOffsets(
- sourceCode.getTokensBetween(startToken, endToken, { includeComments: true }),
+ [startToken.range[1], endToken.range[0]],
startToken,
offset === "first" ? 1 : offset
);
- offsets.matchIndentOf(startToken, endToken);
+ offsets.setDesiredOffset(endToken, startToken, 0);
// If the preference is "first" but there is no first element (e.g. sparse arrays w/ empty first slot), fall back to 1 level.
if (offset === "first" && elements.length && !elements[0]) {
@@ -738,53 +803,13 @@ module.exports = {
const firstTokenOfPreviousElement = previousElement && getFirstToken(previousElement);
if (previousElement && sourceCode.getLastToken(previousElement).loc.start.line > startToken.loc.end.line) {
- offsets.setDesiredOffsets(getTokensAndComments(element), firstTokenOfPreviousElement, 0);
+ offsets.setDesiredOffsets(element.range, firstTokenOfPreviousElement, 0);
}
}
});
}
/**
- * Check indentation for blocks and class bodies
- * @param {ASTNode} node The BlockStatement or ClassBody node to indent
- * @returns {void}
- */
- function addBlockIndent(node) {
-
- let blockIndentLevel;
-
- if (node.parent && isOuterIIFE(node.parent)) {
- blockIndentLevel = options.outerIIFEBody;
- } else if (node.parent && (node.parent.type === "FunctionExpression" || node.parent.type === "ArrowFunctionExpression")) {
- blockIndentLevel = options.FunctionExpression.body;
- } else if (node.parent && node.parent.type === "FunctionDeclaration") {
- blockIndentLevel = options.FunctionDeclaration.body;
- } else {
- blockIndentLevel = 1;
- }
-
- /*
- * For blocks that aren't lone statements, ensure that the opening curly brace
- * is aligned with the parent.
- */
- if (!astUtils.STATEMENT_LIST_PARENTS.has(node.parent.type)) {
- offsets.matchIndentOf(sourceCode.getFirstToken(node.parent), sourceCode.getFirstToken(node));
- }
- addElementListIndent(node.body, sourceCode.getFirstToken(node), sourceCode.getLastToken(node), blockIndentLevel);
- }
-
- /**
- * Check indent for array block content or object block content
- * @param {ASTNode} node node to examine
- * @returns {void}
- */
- function addArrayOrObjectIndent(node) {
- const tokens = getTokensAndComments(node);
-
- addElementListIndent(node.elements || node.properties, tokens[0], tokens[tokens.length - 1], options[node.type]);
- }
-
- /**
* Check and decide whether to check for indentation for blockless nodes
* Scenarios are for or while statements without braces around them
* @param {ASTNode} node node to examine
@@ -794,16 +819,18 @@ module.exports = {
if (node.type !== "BlockStatement") {
const lastParentToken = sourceCode.getTokenBefore(node, astUtils.isNotOpeningParenToken);
- let bodyTokens = getTokensAndComments(node);
+ let firstBodyToken = sourceCode.getFirstToken(node);
+ let lastBodyToken = sourceCode.getLastToken(node);
while (
- astUtils.isOpeningParenToken(sourceCode.getTokenBefore(bodyTokens[0])) &&
- astUtils.isClosingParenToken(sourceCode.getTokenAfter(bodyTokens[bodyTokens.length - 1]))
+ astUtils.isOpeningParenToken(sourceCode.getTokenBefore(firstBodyToken)) &&
+ astUtils.isClosingParenToken(sourceCode.getTokenAfter(lastBodyToken))
) {
- bodyTokens = [sourceCode.getTokenBefore(bodyTokens[0])].concat(bodyTokens).concat(sourceCode.getTokenAfter(bodyTokens[bodyTokens.length - 1]));
+ firstBodyToken = sourceCode.getTokenBefore(firstBodyToken);
+ lastBodyToken = sourceCode.getTokenAfter(lastBodyToken);
}
- offsets.setDesiredOffsets(bodyTokens, lastParentToken, 1);
+ offsets.setDesiredOffsets([firstBodyToken.range[0], lastBodyToken.range[1]], lastParentToken, 1);
/*
* For blockless nodes with semicolon-first style, don't indent the semicolon.
@@ -814,60 +841,12 @@ module.exports = {
const lastToken = sourceCode.getLastToken(node);
if (node.type !== "EmptyStatement" && astUtils.isSemicolonToken(lastToken)) {
- offsets.matchIndentOf(lastParentToken, lastToken);
+ offsets.setDesiredOffset(lastToken, lastParentToken, 0);
}
}
}
/**
- * Checks the indentation of a function's parameters
- * @param {ASTNode} node The node
- * @param {number} paramsIndent The indentation level option for the parameters
- * @returns {void}
- */
- function addFunctionParamsIndent(node, paramsIndent) {
- const openingParen = node.params.length ? sourceCode.getTokenBefore(node.params[0]) : sourceCode.getTokenBefore(node.body, 1);
-
- if (!openingParen) {
-
- // If there is no opening paren (e.g. for an arrow function with a single parameter), don't indent anything.
- return;
- }
-
- const closingParen = sourceCode.getTokenBefore(node.body);
- const nodeTokens = getTokensAndComments(node);
- const openingParenIndex = lodash.sortedIndexBy(nodeTokens, openingParen, token => token.range[0]);
- const closingParenIndex = lodash.sortedIndexBy(nodeTokens, closingParen, token => token.range[0]);
-
- parameterParens.add(nodeTokens[openingParenIndex]);
- parameterParens.add(nodeTokens[closingParenIndex]);
-
- addElementListIndent(node.params, nodeTokens[openingParenIndex], nodeTokens[closingParenIndex], paramsIndent);
- }
-
- /**
- * Adds indentation for the right-hand side of binary/logical expressions.
- * @param {ASTNode} node A BinaryExpression or LogicalExpression node
- * @returns {void}
- */
- function addBinaryOrLogicalExpressionIndent(node) {
- const tokens = getTokensAndComments(node);
- const operator = sourceCode.getFirstTokenBetween(node.left, node.right, token => token.value === node.operator);
- const firstTokenAfterOperator = sourceCode.getTokenAfter(operator);
- const tokensAfterOperator = tokens.slice(lodash.sortedIndexBy(tokens, firstTokenAfterOperator, token => token.range[0]));
-
- /*
- * For backwards compatibility, don't check BinaryExpression indents, e.g.
- * var foo = bar &&
- * baz;
- */
-
- offsets.ignoreToken(operator);
- offsets.ignoreToken(tokensAfterOperator[0]);
- offsets.setDesiredOffsets(tokensAfterOperator, tokensAfterOperator[0], 1);
- }
-
- /**
* Checks the indentation for nodes that are like function calls (`CallExpression` and `NewExpression`)
* @param {ASTNode} node A CallExpression or NewExpression node
* @returns {void}
@@ -884,27 +863,12 @@ module.exports = {
parameterParens.add(openingParen);
parameterParens.add(closingParen);
- offsets.matchIndentOf(sourceCode.getTokenBefore(openingParen), openingParen);
+ offsets.setDesiredOffset(openingParen, sourceCode.getTokenBefore(openingParen), 0);
addElementListIndent(node.arguments, openingParen, closingParen, options.CallExpression.arguments);
}
/**
- * Checks the indentation of ClassDeclarations and ClassExpressions
- * @param {ASTNode} node A ClassDeclaration or ClassExpression node
- * @returns {void}
- */
- function addClassIndent(node) {
- if (node.superClass) {
- const classToken = sourceCode.getFirstToken(node);
- const extendsToken = sourceCode.getTokenBefore(node.superClass, astUtils.isNotOpeningParenToken);
-
- offsets.setDesiredOffset(extendsToken, classToken, 1);
- offsets.setDesiredOffsets(sourceCode.getTokensBetween(extendsToken, node.body, { includeComments: true }), classToken, 1);
- }
- }
-
- /**
* Checks the indentation of parenthesized values, given a list of tokens in a program
* @param {Token[]} tokens A list of tokens
* @returns {void}
@@ -936,10 +900,9 @@ module.exports = {
offsets.setDesiredOffset(token, leftParen, 1);
}
});
- offsets.setDesiredOffset(sourceCode.getTokenAfter(leftParen), leftParen, 1);
}
- offsets.matchIndentOf(leftParen, rightParen);
+ offsets.setDesiredOffset(rightParen, leftParen, 0);
});
}
@@ -950,7 +913,7 @@ module.exports = {
* @returns {void}
*/
function ignoreUnknownNode(node) {
- const unknownNodeTokens = new Set(getTokensAndComments(node));
+ const unknownNodeTokens = new Set(sourceCode.getTokens(node, { includeComments: true }));
unknownNodeTokens.forEach(token => {
if (!unknownNodeTokens.has(offsets.getFirstDependency(token))) {
@@ -959,7 +922,7 @@ module.exports = {
if (token === firstTokenOfLine) {
offsets.ignoreToken(token);
} else {
- offsets.matchIndentOf(firstTokenOfLine, token);
+ offsets.setDesiredOffset(token, firstTokenOfLine, 0);
}
}
});
@@ -996,11 +959,25 @@ module.exports = {
}
return {
- ArrayExpression: addArrayOrObjectIndent,
- ArrayPattern: addArrayOrObjectIndent,
+ "ArrayExpression, ArrayPattern"(node) {
+ addElementListIndent(node.elements, sourceCode.getFirstToken(node), sourceCode.getLastToken(node), options.ArrayExpression);
+ },
+
+ "ObjectExpression, ObjectPattern"(node) {
+ addElementListIndent(node.properties, sourceCode.getFirstToken(node), sourceCode.getLastToken(node), options.ObjectExpression);
+ },
ArrowFunctionExpression(node) {
- addFunctionParamsIndent(node, options.FunctionExpression.parameters);
+ const firstToken = sourceCode.getFirstToken(node);
+
+ if (astUtils.isOpeningParenToken(firstToken)) {
+ const openingParen = firstToken;
+ const closingParen = sourceCode.getTokenBefore(node.body, astUtils.isClosingParenToken);
+
+ parameterParens.add(openingParen);
+ parameterParens.add(closingParen);
+ addElementListIndent(node.params, openingParen, closingParen, options.FunctionExpression.parameters);
+ }
addBlocklessNodeIndent(node.body);
let arrowToken;
@@ -1010,30 +987,67 @@ module.exports = {
} else {
arrowToken = sourceCode.getFirstToken(node, astUtils.isArrowToken);
}
- offsets.matchIndentOf(sourceCode.getFirstToken(node), arrowToken);
+ offsets.setDesiredOffset(arrowToken, sourceCode.getFirstToken(node), 0);
},
AssignmentExpression(node) {
const operator = sourceCode.getFirstTokenBetween(node.left, node.right, token => token.value === node.operator);
- const nodeTokens = getTokensAndComments(node);
- const tokensFromOperator = nodeTokens.slice(lodash.sortedIndexBy(nodeTokens, operator, token => token.range[0]));
- offsets.setDesiredOffsets(tokensFromOperator, sourceCode.getLastToken(node.left), 1);
- offsets.ignoreToken(tokensFromOperator[0]);
- offsets.ignoreToken(tokensFromOperator[1]);
+ offsets.setDesiredOffsets([operator.range[0], node.range[1]], sourceCode.getLastToken(node.left), 1);
+ offsets.ignoreToken(operator);
+ offsets.ignoreToken(sourceCode.getTokenAfter(operator));
},
- BinaryExpression: addBinaryOrLogicalExpressionIndent,
+ "BinaryExpression, LogicalExpression"(node) {
+ const operator = sourceCode.getFirstTokenBetween(node.left, node.right, token => token.value === node.operator);
+
+ /*
+ * For backwards compatibility, don't check BinaryExpression indents, e.g.
+ * var foo = bar &&
+ * baz;
+ */
- BlockStatement: addBlockIndent,
+ const tokenAfterOperator = sourceCode.getTokenAfter(operator);
+
+ offsets.ignoreToken(operator);
+ offsets.ignoreToken(tokenAfterOperator);
+ offsets.setDesiredOffset(tokenAfterOperator, operator, 0);
+ offsets.setDesiredOffsets([tokenAfterOperator.range[1], node.range[1]], tokenAfterOperator, 1);
+ },
+
+ "BlockStatement, ClassBody"(node) {
+
+ let blockIndentLevel;
+
+ if (node.parent && isOuterIIFE(node.parent)) {
+ blockIndentLevel = options.outerIIFEBody;
+ } else if (node.parent && (node.parent.type === "FunctionExpression" || node.parent.type === "ArrowFunctionExpression")) {
+ blockIndentLevel = options.FunctionExpression.body;
+ } else if (node.parent && node.parent.type === "FunctionDeclaration") {
+ blockIndentLevel = options.FunctionDeclaration.body;
+ } else {
+ blockIndentLevel = 1;
+ }
+
+ /*
+ * For blocks that aren't lone statements, ensure that the opening curly brace
+ * is aligned with the parent.
+ */
+ if (!astUtils.STATEMENT_LIST_PARENTS.has(node.parent.type)) {
+ offsets.setDesiredOffset(sourceCode.getFirstToken(node), sourceCode.getFirstToken(node.parent), 0);
+ }
+ addElementListIndent(node.body, sourceCode.getFirstToken(node), sourceCode.getLastToken(node), blockIndentLevel);
+ },
CallExpression: addFunctionCallIndent,
- ClassBody: addBlockIndent,
- ClassDeclaration: addClassIndent,
+ "ClassDeclaration[superClass], ClassExpression[superClass]"(node) {
+ const classToken = sourceCode.getFirstToken(node);
+ const extendsToken = sourceCode.getTokenBefore(node.superClass, astUtils.isNotOpeningParenToken);
- ClassExpression: addClassIndent,
+ offsets.setDesiredOffsets([extendsToken.range[0], node.body.range[0]], classToken, 1);
+ },
ConditionalExpression(node) {
const firstToken = sourceCode.getFirstToken(node);
@@ -1050,13 +1064,14 @@ module.exports = {
const questionMarkToken = sourceCode.getFirstTokenBetween(node.test, node.consequent, token => token.type === "Punctuator" && token.value === "?");
const colonToken = sourceCode.getFirstTokenBetween(node.consequent, node.alternate, token => token.type === "Punctuator" && token.value === ":");
- const consequentTokens = sourceCode.getTokensBetween(questionMarkToken, colonToken, { includeComments: true });
- const alternateTokens = sourceCode.getTokensAfter(colonToken, token => token.range[1] <= node.range[1]);
+ const firstConsequentToken = sourceCode.getTokenAfter(questionMarkToken, { includeComments: true });
+ const lastConsequentToken = sourceCode.getTokenBefore(colonToken, { includeComments: true });
+ const firstAlternateToken = sourceCode.getTokenAfter(colonToken);
offsets.setDesiredOffset(questionMarkToken, firstToken, 1);
offsets.setDesiredOffset(colonToken, firstToken, 1);
- offsets.setDesiredOffset(consequentTokens[0], firstToken, 1);
+ offsets.setDesiredOffset(firstConsequentToken, firstToken, 1);
/*
* The alternate and the consequent should usually have the same indentation.
@@ -1068,8 +1083,8 @@ module.exports = {
* baz // as a result, `baz` is offset by 1 rather than 2
* )
*/
- if (consequentTokens[consequentTokens.length - 1].loc.end.line === alternateTokens[0].loc.start.line) {
- offsets.matchIndentOf(consequentTokens[0], alternateTokens[0]);
+ if (lastConsequentToken.loc.end.line === firstAlternateToken.loc.start.line) {
+ offsets.setDesiredOffset(firstAlternateToken, firstConsequentToken, 0);
} else {
/**
@@ -1081,21 +1096,19 @@ module.exports = {
* If `baz` were aligned with `bar` rather than being offset by 1 from `foo`, `baz` would end up
* having no expected indentation.
*/
- offsets.setDesiredOffset(alternateTokens[0], firstToken, 1);
+ offsets.setDesiredOffset(firstAlternateToken, firstToken, 1);
}
- offsets.setDesiredOffsets(consequentTokens, consequentTokens[0], 0);
- offsets.setDesiredOffsets(alternateTokens, alternateTokens[0], 0);
+ offsets.setDesiredOffsets([questionMarkToken.range[1], colonToken.range[0]], firstConsequentToken, 0);
+ offsets.setDesiredOffsets([colonToken.range[1], node.range[1]], firstAlternateToken, 0);
}
},
- DoWhileStatement: node => addBlocklessNodeIndent(node.body),
+ "DoWhileStatement, WhileStatement, ForInStatement, ForOfStatement": node => addBlocklessNodeIndent(node.body),
ExportNamedDeclaration(node) {
if (node.declaration === null) {
- const tokensInNode = getTokensAndComments(node);
const closingCurly = sourceCode.getLastToken(node, astUtils.isClosingBraceToken);
- const closingCurlyIndex = lodash.sortedIndexBy(tokensInNode, closingCurly, token => token.range[0]);
// Indent the specifiers in `export {foo, bar, baz}`
addElementListIndent(node.specifiers, sourceCode.getFirstToken(node, { skip: 1 }), closingCurly, 1);
@@ -1103,36 +1116,33 @@ module.exports = {
if (node.source) {
// Indent everything after and including the `from` token in `export {foo, bar, baz} from 'qux'`
- offsets.setDesiredOffsets(tokensInNode.slice(closingCurlyIndex + 1), sourceCode.getFirstToken(node), 1);
+ offsets.setDesiredOffsets([closingCurly.range[1], node.range[1]], sourceCode.getFirstToken(node), 1);
}
}
},
- ForInStatement: node => addBlocklessNodeIndent(node.body),
-
- ForOfStatement: node => addBlocklessNodeIndent(node.body),
-
ForStatement(node) {
const forOpeningParen = sourceCode.getFirstToken(node, 1);
if (node.init) {
- offsets.setDesiredOffsets(getTokensAndComments(node.init), forOpeningParen, 1);
+ offsets.setDesiredOffsets(node.init.range, forOpeningParen, 1);
}
if (node.test) {
- offsets.setDesiredOffsets(getTokensAndComments(node.test), forOpeningParen, 1);
+ offsets.setDesiredOffsets(node.test.range, forOpeningParen, 1);
}
if (node.update) {
- offsets.setDesiredOffsets(getTokensAndComments(node.update), forOpeningParen, 1);
+ offsets.setDesiredOffsets(node.update.range, forOpeningParen, 1);
}
addBlocklessNodeIndent(node.body);
},
- FunctionDeclaration(node) {
- addFunctionParamsIndent(node, options.FunctionDeclaration.parameters);
- },
+ "FunctionDeclaration, FunctionExpression"(node) {
+ const closingParen = sourceCode.getTokenBefore(node.body);
+ const openingParen = sourceCode.getTokenBefore(node.params.length ? node.params[0] : closingParen);
- FunctionExpression(node) {
- addFunctionParamsIndent(node, options.FunctionExpression.parameters);
+ parameterParens.add(openingParen);
+ parameterParens.add(closingParen);
+ addElementListIndent(node.params, openingParen, closingParen, options[node.type].parameters);
},
IfStatement(node) {
@@ -1153,28 +1163,26 @@ module.exports = {
const fromToken = sourceCode.getLastToken(node, token => token.type === "Identifier" && token.value === "from");
if (fromToken) {
- const tokensToOffset = sourceCode.getTokensBetween(fromToken, sourceCode.getLastToken(node), 1);
-
- offsets.setDesiredOffsets(tokensToOffset, sourceCode.getFirstToken(node), 1);
+ offsets.setDesiredOffsets([fromToken.range[0], node.range[1]], sourceCode.getFirstToken(node), 1);
}
},
- LogicalExpression: addBinaryOrLogicalExpressionIndent,
-
"MemberExpression, JSXMemberExpression"(node) {
const firstNonObjectToken = sourceCode.getFirstTokenBetween(node.object, node.property, astUtils.isNotClosingParenToken);
const secondNonObjectToken = sourceCode.getTokenAfter(firstNonObjectToken);
- const tokenBeforeObject = sourceCode.getTokenBefore(node.object, token => astUtils.isNotOpeningParenToken(token) || parameterParens.has(token));
- const firstObjectToken = tokenBeforeObject ? sourceCode.getTokenAfter(tokenBeforeObject) : sourceCode.ast.tokens[0];
+ const objectParenCount = sourceCode.getTokensBetween(node.object, node.property, { filter: astUtils.isClosingParenToken }).length;
+ const firstObjectToken = objectParenCount
+ ? sourceCode.getTokenBefore(node.object, { skip: objectParenCount - 1 })
+ : sourceCode.getFirstToken(node.object);
const lastObjectToken = sourceCode.getTokenBefore(firstNonObjectToken);
const firstPropertyToken = node.computed ? firstNonObjectToken : secondNonObjectToken;
if (node.computed) {
// For computed MemberExpressions, match the closing bracket with the opening bracket.
- offsets.matchIndentOf(firstNonObjectToken, sourceCode.getLastToken(node));
- offsets.setDesiredOffsets(getTokensAndComments(node.property), firstNonObjectToken, 1);
+ offsets.setDesiredOffset(sourceCode.getLastToken(node), firstNonObjectToken, 0);
+ offsets.setDesiredOffsets(node.property.range, firstNonObjectToken, 1);
}
/*
@@ -1207,8 +1215,8 @@ module.exports = {
offsets.ignoreToken(secondNonObjectToken);
// To ignore the property indentation, ensure that the property tokens depend on the ignored tokens.
- offsets.matchIndentOf(offsetBase, firstNonObjectToken);
- offsets.matchIndentOf(firstNonObjectToken, secondNonObjectToken);
+ offsets.setDesiredOffset(firstNonObjectToken, offsetBase, 0);
+ offsets.setDesiredOffset(secondNonObjectToken, firstNonObjectToken, 0);
}
},
@@ -1220,9 +1228,6 @@ module.exports = {
}
},
- ObjectExpression: addArrayOrObjectIndent,
- ObjectPattern: addArrayOrObjectIndent,
-
Property(node) {
if (!node.computed && !node.shorthand && !node.method && node.kind === "init") {
const colon = sourceCode.getFirstTokenBetween(node.key, node.value, astUtils.isColonToken);
@@ -1232,41 +1237,38 @@ module.exports = {
},
SwitchStatement(node) {
- const tokens = getTokensAndComments(node);
- const openingCurlyIndex = tokens.findIndex(token => token.range[0] >= node.discriminant.range[1] && astUtils.isOpeningBraceToken(token));
+ const openingCurly = sourceCode.getTokenAfter(node.discriminant, astUtils.isOpeningBraceToken);
+ const closingCurly = sourceCode.getLastToken(node);
+ const caseKeywords = node.cases.map(switchCase => sourceCode.getFirstToken(switchCase));
- offsets.setDesiredOffsets(tokens.slice(openingCurlyIndex + 1, -1), tokens[openingCurlyIndex], options.SwitchCase);
+ offsets.setDesiredOffsets([openingCurly.range[1], closingCurly.range[0]], openingCurly, options.SwitchCase);
- const caseKeywords = new WeakSet(node.cases.map(switchCase => sourceCode.getFirstToken(switchCase)));
- const lastCaseKeyword = node.cases.length && sourceCode.getFirstToken(node.cases[node.cases.length - 1]);
- const casesWithBlocks = new WeakSet(
- node.cases
- .filter(switchCase => switchCase.consequent.length === 1 && switchCase.consequent[0].type === "BlockStatement")
- .map(switchCase => sourceCode.getFirstToken(switchCase))
- );
- let lastAnchor = tokens[openingCurlyIndex];
+ node.cases.forEach((switchCase, index) => {
+ const caseKeyword = caseKeywords[index];
- tokens.slice(openingCurlyIndex + 1, -1).forEach(token => {
- if (caseKeywords.has(token)) {
- lastAnchor = token;
- } else if (lastAnchor === lastCaseKeyword && (token.type === "Line" || token.type === "Block")) {
- offsets.ignoreToken(token);
- } else if (!casesWithBlocks.has(lastAnchor)) {
- offsets.setDesiredOffset(token, lastAnchor, 1);
+ if (!(switchCase.consequent.length === 1 && switchCase.consequent[0].type === "BlockStatement")) {
+ const tokenAfterCurrentCase = index === node.cases.length - 1 ? closingCurly : caseKeywords[index + 1];
+
+ offsets.setDesiredOffsets([caseKeyword.range[1], tokenAfterCurrentCase.range[0]], caseKeyword, 1);
}
});
+
+ if (node.cases.length) {
+ sourceCode.getTokensBetween(
+ node.cases[node.cases.length - 1],
+ closingCurly,
+ { includeComments: true, filter: astUtils.isCommentToken }
+ ).forEach(token => offsets.ignoreToken(token));
+ }
},
TemplateLiteral(node) {
- const tokens = getTokensAndComments(node);
-
- offsets.setDesiredOffsets(getTokensAndComments(node.quasis[0]), tokens[0], 0);
node.expressions.forEach((expression, index) => {
const previousQuasi = node.quasis[index];
const nextQuasi = node.quasis[index + 1];
const tokenToAlignFrom = previousQuasi.loc.start.line === previousQuasi.loc.end.line ? sourceCode.getFirstToken(previousQuasi) : null;
- offsets.setDesiredOffsets(sourceCode.getTokensBetween(previousQuasi, nextQuasi), tokenToAlignFrom, 1);
+ offsets.setDesiredOffsets([previousQuasi.range[1], nextQuasi.range[0]], tokenToAlignFrom, 1);
offsets.setDesiredOffset(sourceCode.getFirstToken(nextQuasi), tokenToAlignFrom, 0);
});
},
@@ -1295,13 +1297,11 @@ module.exports = {
* on the same line as the start of the declaration, provided that there are declarators that
* follow this one.
*/
- getTokensAndComments(node).forEach((token, index, tokens) => {
- if (index !== 0) {
- offsets.forceSetDesiredOffset(token, tokens[0], variableIndent);
- }
- });
+ const firstToken = sourceCode.getFirstToken(node);
+
+ offsets.setDesiredOffsets(node.range, firstToken, variableIndent, true);
} else {
- offsets.setDesiredOffsets(getTokensAndComments(node), sourceCode.getFirstToken(node), variableIndent);
+ offsets.setDesiredOffsets(node.range, sourceCode.getFirstToken(node), variableIndent);
}
const lastToken = sourceCode.getLastToken(node);
@@ -1313,25 +1313,21 @@ module.exports = {
VariableDeclarator(node) {
if (node.init) {
const equalOperator = sourceCode.getTokenBefore(node.init, astUtils.isNotOpeningParenToken);
- const tokensAfterOperator = sourceCode.getTokensAfter(equalOperator, token => token.range[1] <= node.range[1]);
+ const tokenAfterOperator = sourceCode.getTokenAfter(equalOperator);
offsets.ignoreToken(equalOperator);
- offsets.ignoreToken(tokensAfterOperator[0]);
- offsets.setDesiredOffsets(tokensAfterOperator, equalOperator, 1);
- offsets.matchIndentOf(sourceCode.getLastToken(node.id), equalOperator);
+ offsets.ignoreToken(tokenAfterOperator);
+ offsets.setDesiredOffsets([tokenAfterOperator.range[0], node.range[1]], equalOperator, 1);
+ offsets.setDesiredOffset(equalOperator, sourceCode.getLastToken(node.id), 0);
}
},
- WhileStatement: node => addBlocklessNodeIndent(node.body),
-
"*:exit": checkForUnknownNode,
"JSXAttribute[value]"(node) {
const equalsToken = sourceCode.getFirstTokenBetween(node.name, node.value, token => token.type === "Punctuator" && token.value === "=");
- const firstNameToken = sourceCode.getFirstToken(node.name);
- offsets.setDesiredOffset(equalsToken, firstNameToken, 1);
- offsets.setDesiredOffset(sourceCode.getFirstToken(node.value), firstNameToken, 1);
+ offsets.setDesiredOffsets([equalsToken.range[0], node.value.range[1]], sourceCode.getFirstToken(node.name), 1);
},
JSXElement(node) {
@@ -1346,19 +1342,19 @@ module.exports = {
if (node.selfClosing) {
closingToken = sourceCode.getLastToken(node, { skip: 1 });
- offsets.matchIndentOf(closingToken, sourceCode.getLastToken(node));
+ offsets.setDesiredOffset(sourceCode.getLastToken(node), closingToken, 0);
} else {
closingToken = sourceCode.getLastToken(node);
}
- offsets.setDesiredOffsets(getTokensAndComments(node.name), sourceCode.getFirstToken(node));
+ offsets.setDesiredOffsets(node.name.range, sourceCode.getFirstToken(node));
addElementListIndent(node.attributes, firstToken, closingToken, 1);
},
JSXClosingElement(node) {
const firstToken = sourceCode.getFirstToken(node);
- offsets.setDesiredOffsets(getTokensAndComments(node.name), firstToken, 1);
- offsets.matchIndentOf(firstToken, sourceCode.getLastToken(node));
+ offsets.setDesiredOffsets(node.name.range, firstToken, 1);
+ offsets.setDesiredOffset(sourceCode.getLastToken(node), firstToken, 0);
},
JSXExpressionContainer(node) {
@@ -1366,11 +1362,11 @@ module.exports = {
const closingCurly = sourceCode.getLastToken(node);
offsets.setDesiredOffsets(
- sourceCode.getTokensBetween(openingCurly, closingCurly, { includeComments: true }),
+ [openingCurly.range[1], closingCurly.range[0]],
openingCurly,
1
);
- offsets.matchIndentOf(openingCurly, closingCurly);
+ offsets.setDesiredOffset(closingCurly, openingCurly, 0);
},
"Program:exit"() {
diff --git a/tools/eslint/lib/rules/no-constant-condition.js b/tools/eslint/lib/rules/no-constant-condition.js
index 7178d5dbec..31e5b372c4 100644
--- a/tools/eslint/lib/rules/no-constant-condition.js
+++ b/tools/eslint/lib/rules/no-constant-condition.js
@@ -33,7 +33,10 @@ module.exports = {
create(context) {
const options = context.options[0] || {},
- checkLoops = options.checkLoops !== false;
+ checkLoops = options.checkLoops !== false,
+ loopSetStack = [];
+
+ let loopsInCurrentScope = new Set();
//--------------------------------------------------------------------------
// Helpers
@@ -115,18 +118,64 @@ module.exports = {
}
/**
+ * Tracks when the given node contains a constant condition.
+ * @param {ASTNode} node The AST node to check.
+ * @returns {void}
+ * @private
+ */
+ function trackConstantConditionLoop(node) {
+ if (node.test && isConstant(node.test, true)) {
+ loopsInCurrentScope.add(node);
+ }
+ }
+
+ /**
+ * Reports when the set contains the given constant condition node
+ * @param {ASTNode} node The AST node to check.
+ * @returns {void}
+ * @private
+ */
+ function checkConstantConditionLoopInSet(node) {
+ if (loopsInCurrentScope.has(node)) {
+ loopsInCurrentScope.delete(node);
+ context.report({ node, message: "Unexpected constant condition." });
+ }
+ }
+
+ /**
* Reports when the given node contains a constant condition.
* @param {ASTNode} node The AST node to check.
* @returns {void}
* @private
*/
- function checkConstantCondition(node) {
+ function reportIfConstant(node) {
if (node.test && isConstant(node.test, true)) {
context.report({ node, message: "Unexpected constant condition." });
}
}
/**
+ * Stores current set of constant loops in loopSetStack temporarily
+ * and uses a new set to track constant loops
+ * @returns {void}
+ * @private
+ */
+ function enterFunction() {
+ loopSetStack.push(loopsInCurrentScope);
+ loopsInCurrentScope = new Set();
+ }
+
+ /**
+ * Reports when the set still contains stored constant conditions
+ * @param {ASTNode} node The AST node to check.
+ * @returns {void}
+ * @private
+ */
+ function exitFunction() {
+ loopsInCurrentScope = loopSetStack.pop();
+ }
+
+ /**
* Checks node when checkLoops option is enabled
* @param {ASTNode} node The AST node to check.
* @returns {void}
@@ -134,7 +183,7 @@ module.exports = {
*/
function checkLoop(node) {
if (checkLoops) {
- checkConstantCondition(node);
+ trackConstantConditionLoop(node);
}
}
@@ -143,11 +192,18 @@ module.exports = {
//--------------------------------------------------------------------------
return {
- ConditionalExpression: checkConstantCondition,
- IfStatement: checkConstantCondition,
+ ConditionalExpression: reportIfConstant,
+ IfStatement: reportIfConstant,
WhileStatement: checkLoop,
+ "WhileStatement:exit": checkConstantConditionLoopInSet,
DoWhileStatement: checkLoop,
- ForStatement: checkLoop
+ "DoWhileStatement:exit": checkConstantConditionLoopInSet,
+ ForStatement: checkLoop,
+ "ForStatement > .test": node => checkLoop(node.parent),
+ "ForStatement:exit": checkConstantConditionLoopInSet,
+ FunctionDeclaration: enterFunction,
+ "FunctionDeclaration:exit": exitFunction,
+ YieldExpression: () => loopsInCurrentScope.clear()
};
}
diff --git a/tools/eslint/lib/rules/no-restricted-globals.js b/tools/eslint/lib/rules/no-restricted-globals.js
index 603a6b2d37..75428fc174 100644
--- a/tools/eslint/lib/rules/no-restricted-globals.js
+++ b/tools/eslint/lib/rules/no-restricted-globals.js
@@ -5,6 +5,13 @@
"use strict";
//------------------------------------------------------------------------------
+// Helpers
+//------------------------------------------------------------------------------
+
+const DEFAULT_MESSAGE_TEMPLATE = "Unexpected use of '{{name}}'.",
+ CUSTOM_MESSAGE_TEMPLATE = "Unexpected use of '{{name}}'. {{customMessage}}";
+
+//------------------------------------------------------------------------------
// Rule Definition
//------------------------------------------------------------------------------
@@ -19,20 +26,43 @@ module.exports = {
schema: {
type: "array",
items: {
- type: "string"
+ oneOf: [
+ {
+ type: "string"
+ },
+ {
+ type: "object",
+ properties: {
+ name: { type: "string" },
+ message: { type: "string" }
+ },
+ required: ["name"],
+ additionalProperties: false
+ }
+ ]
},
- uniqueItems: true
+ uniqueItems: true,
+ minItems: 0
}
},
create(context) {
- const restrictedGlobals = context.options;
- // if no globals are restricted we don't need to check
- if (restrictedGlobals.length === 0) {
+ // If no globals are restricted, we don't need to do anything
+ if (context.options.length === 0) {
return {};
}
+ const restrictedGlobalMessages = context.options.reduce((memo, option) => {
+ if (typeof option === "string") {
+ memo[option] = null;
+ } else {
+ memo[option.name] = option.message;
+ }
+
+ return memo;
+ }, {});
+
/**
* Report a variable to be used as a restricted global.
* @param {Reference} reference the variable reference
@@ -40,9 +70,20 @@ module.exports = {
* @private
*/
function reportReference(reference) {
- context.report({ node: reference.identifier, message: "Unexpected use of '{{name}}'.", data: {
- name: reference.identifier.name
- } });
+ const name = reference.identifier.name,
+ customMessage = restrictedGlobalMessages[name],
+ message = customMessage
+ ? CUSTOM_MESSAGE_TEMPLATE
+ : DEFAULT_MESSAGE_TEMPLATE;
+
+ context.report({
+ node: reference.identifier,
+ message,
+ data: {
+ name,
+ customMessage
+ }
+ });
}
/**
@@ -52,7 +93,7 @@ module.exports = {
* @private
*/
function isRestricted(name) {
- return restrictedGlobals.indexOf(name) >= 0;
+ return restrictedGlobalMessages.hasOwnProperty(name);
}
return {
diff --git a/tools/eslint/lib/rules/no-underscore-dangle.js b/tools/eslint/lib/rules/no-underscore-dangle.js
index 6803cc68fc..5964da41cd 100644
--- a/tools/eslint/lib/rules/no-underscore-dangle.js
+++ b/tools/eslint/lib/rules/no-underscore-dangle.js
@@ -32,6 +32,9 @@ module.exports = {
},
allowAfterSuper: {
type: "boolean"
+ },
+ enforceInMethodNames: {
+ type: "boolean"
}
},
additionalProperties: false
@@ -45,6 +48,7 @@ module.exports = {
const ALLOWED_VARIABLES = options.allow ? options.allow : [];
const allowAfterThis = typeof options.allowAfterThis !== "undefined" ? options.allowAfterThis : false;
const allowAfterSuper = typeof options.allowAfterSuper !== "undefined" ? options.allowAfterSuper : false;
+ const enforceInMethodNames = typeof options.enforceInMethodNames !== "undefined" ? options.enforceInMethodNames : false;
//-------------------------------------------------------------------------
// Helpers
@@ -162,6 +166,27 @@ module.exports = {
}
}
+ /**
+ * Check if method declaration or method property has a underscore at the end
+ * @param {ASTNode} node node to evaluate
+ * @returns {void}
+ * @private
+ */
+ function checkForTrailingUnderscoreInMethod(node) {
+ const identifier = node.key.name;
+ const isMethod = node.type === "MethodDefinition" || node.type === "Property" && node.method;
+
+ if (typeof identifier !== "undefined" && enforceInMethodNames && isMethod && hasTrailingUnderscore(identifier)) {
+ context.report({
+ node,
+ message: "Unexpected dangling '_' in '{{identifier}}'.",
+ data: {
+ identifier
+ }
+ });
+ }
+ }
+
//--------------------------------------------------------------------------
// Public API
//--------------------------------------------------------------------------
@@ -169,7 +194,9 @@ module.exports = {
return {
FunctionDeclaration: checkForTrailingUnderscoreInFunctionDeclaration,
VariableDeclarator: checkForTrailingUnderscoreInVariableExpression,
- MemberExpression: checkForTrailingUnderscoreInMemberExpression
+ MemberExpression: checkForTrailingUnderscoreInMemberExpression,
+ MethodDefinition: checkForTrailingUnderscoreInMethod,
+ Property: checkForTrailingUnderscoreInMethod
};
}
diff --git a/tools/eslint/lib/rules/object-curly-newline.js b/tools/eslint/lib/rules/object-curly-newline.js
index b78cb9cfce..42f2778739 100644
--- a/tools/eslint/lib/rules/object-curly-newline.js
+++ b/tools/eslint/lib/rules/object-curly-newline.js
@@ -143,6 +143,8 @@ module.exports = {
first.loc.start.line !== last.loc.end.line
)
);
+ const hasCommentsFirstToken = astUtils.isCommentToken(first);
+ const hasCommentsLastToken = astUtils.isCommentToken(last);
/*
* Use tokens or comments to check multiline or not.
@@ -162,6 +164,10 @@ module.exports = {
node,
loc: openBrace.loc.start,
fix(fixer) {
+ if (hasCommentsFirstToken) {
+ return null;
+ }
+
return fixer.insertTextAfter(openBrace, "\n");
}
});
@@ -172,6 +178,10 @@ module.exports = {
node,
loc: closeBrace.loc.start,
fix(fixer) {
+ if (hasCommentsLastToken) {
+ return null;
+ }
+
return fixer.insertTextBefore(closeBrace, "\n");
}
});
@@ -190,6 +200,10 @@ module.exports = {
node,
loc: openBrace.loc.start,
fix(fixer) {
+ if (hasCommentsFirstToken) {
+ return null;
+ }
+
return fixer.removeRange([
openBrace.range[1],
first.range[0]
@@ -206,6 +220,10 @@ module.exports = {
node,
loc: closeBrace.loc.start,
fix(fixer) {
+ if (hasCommentsLastToken) {
+ return null;
+ }
+
return fixer.removeRange([
last.range[1],
closeBrace.range[0]
diff --git a/tools/eslint/lib/rules/prefer-destructuring.js b/tools/eslint/lib/rules/prefer-destructuring.js
index 7f472b423b..ebf4e713b3 100644
--- a/tools/eslint/lib/rules/prefer-destructuring.js
+++ b/tools/eslint/lib/rules/prefer-destructuring.js
@@ -15,19 +15,55 @@ module.exports = {
category: "ECMAScript 6",
recommended: false
},
-
schema: [
{
- type: "object",
- properties: {
- array: {
- type: "boolean"
+
+ // old support {array: Boolean, object: Boolean}
+ // new support {VariableDeclarator: {}, AssignmentExpression: {}}
+ oneOf: [
+ {
+ type: "object",
+ properties: {
+ VariableDeclarator: {
+ type: "object",
+ properties: {
+ array: {
+ type: "boolean"
+ },
+ object: {
+ type: "boolean"
+ }
+ },
+ additionalProperties: false
+ },
+ AssignmentExpression: {
+ type: "object",
+ properties: {
+ array: {
+ type: "boolean"
+ },
+ object: {
+ type: "boolean"
+ }
+ },
+ additionalProperties: false
+ }
+ },
+ additionalProperties: false
},
- object: {
- type: "boolean"
+ {
+ type: "object",
+ properties: {
+ array: {
+ type: "boolean"
+ },
+ object: {
+ type: "boolean"
+ }
+ },
+ additionalProperties: false
}
- },
- additionalProperties: false
+ ]
},
{
type: "object",
@@ -42,26 +78,17 @@ module.exports = {
},
create(context) {
- let checkArrays = true;
- let checkObjects = true;
- let enforceForRenamedProperties = false;
const enabledTypes = context.options[0];
- const additionalOptions = context.options[1];
+ const enforceForRenamedProperties = context.options[1] && context.options[1].enforceForRenamedProperties;
+ let normalizedOptions = {
+ VariableDeclarator: { array: true, object: true },
+ AssignmentExpression: { array: true, object: true }
+ };
if (enabledTypes) {
- if (typeof enabledTypes.array !== "undefined") {
- checkArrays = enabledTypes.array;
- }
-
- if (typeof enabledTypes.object !== "undefined") {
- checkObjects = enabledTypes.object;
- }
- }
-
- if (additionalOptions) {
- if (typeof additionalOptions.enforceForRenamedProperties !== "undefined") {
- enforceForRenamedProperties = additionalOptions.enforceForRenamedProperties;
- }
+ normalizedOptions = typeof enabledTypes.array !== "undefined" || typeof enabledTypes.object !== "undefined"
+ ? { VariableDeclarator: enabledTypes, AssignmentExpression: enabledTypes }
+ : enabledTypes;
}
//--------------------------------------------------------------------------
@@ -69,7 +96,18 @@ module.exports = {
//--------------------------------------------------------------------------
/**
- * Determines if the given node node is accessing an array index
+ * @param {string} nodeType "AssignmentExpression" or "VariableDeclarator"
+ * @param {string} destructuringType "array" or "object"
+ * @returns {boolean} `true` if the destructuring type should be checked for the given node
+ */
+ function shouldCheck(nodeType, destructuringType) {
+ return normalizedOptions &&
+ normalizedOptions[nodeType] &&
+ normalizedOptions[nodeType][destructuringType];
+ }
+
+ /**
+ * Determines if the given node is accessing an array index
*
* This is used to differentiate array index access from object property
* access.
@@ -110,22 +148,22 @@ module.exports = {
}
if (isArrayIndexAccess(rightNode)) {
- if (checkArrays) {
+ if (shouldCheck(reportNode.type, "array")) {
report(reportNode, "array");
}
return;
}
- if (checkObjects && enforceForRenamedProperties) {
+ if (shouldCheck(reportNode.type, "object") && enforceForRenamedProperties) {
report(reportNode, "object");
return;
}
- if (checkObjects) {
+ if (shouldCheck(reportNode.type, "object")) {
const property = rightNode.property;
- if ((property.type === "Literal" && leftNode.name === property.value) ||
- (property.type === "Identifier" && leftNode.name === property.name)) {
+ if ((property.type === "Literal" && leftNode.name === property.value) || (property.type === "Identifier" &&
+ leftNode.name === property.name)) {
report(reportNode, "object");
}
}
diff --git a/tools/eslint/lib/rules/prefer-numeric-literals.js b/tools/eslint/lib/rules/prefer-numeric-literals.js
index ed84ce6a9f..08deedd624 100644
--- a/tools/eslint/lib/rules/prefer-numeric-literals.js
+++ b/tools/eslint/lib/rules/prefer-numeric-literals.js
@@ -6,13 +6,40 @@
"use strict";
//------------------------------------------------------------------------------
+// Helpers
+//------------------------------------------------------------------------------
+
+/**
+ * Checks to see if a CallExpression's callee node is `parseInt` or
+ * `Number.parseInt`.
+ * @param {ASTNode} calleeNode The callee node to evaluate.
+ * @returns {boolean} True if the callee is `parseInt` or `Number.parseInt`,
+ * false otherwise.
+ */
+function isParseInt(calleeNode) {
+ switch (calleeNode.type) {
+ case "Identifier":
+ return calleeNode.name === "parseInt";
+ case "MemberExpression":
+ return calleeNode.object.type === "Identifier" &&
+ calleeNode.object.name === "Number" &&
+ calleeNode.property.type === "Identifier" &&
+ calleeNode.property.name === "parseInt";
+
+ // no default
+ }
+
+ return false;
+}
+
+//------------------------------------------------------------------------------
// Rule Definition
//------------------------------------------------------------------------------
module.exports = {
meta: {
docs: {
- description: "disallow `parseInt()` in favor of binary, octal, and hexadecimal literals",
+ description: "disallow `parseInt()` and `Number.parseInt()` in favor of binary, octal, and hexadecimal literals",
category: "ECMAScript 6",
recommended: false
},
@@ -23,6 +50,8 @@ module.exports = {
},
create(context) {
+ const sourceCode = context.getSourceCode();
+
const radixMap = {
2: "binary",
8: "octal",
@@ -35,9 +64,9 @@ module.exports = {
16: "0x"
};
- //--------------------------------------------------------------------------
+ //----------------------------------------------------------------------
// Public
- //--------------------------------------------------------------------------
+ //----------------------------------------------------------------------
return {
@@ -51,16 +80,16 @@ module.exports = {
// only error if the radix is 2, 8, or 16
const radixName = radixMap[node.arguments[1].value];
- if (node.callee.type === "Identifier" &&
- node.callee.name === "parseInt" &&
+ if (isParseInt(node.callee) &&
radixName &&
node.arguments[0].type === "Literal"
) {
context.report({
node,
- message: "Use {{radixName}} literals instead of parseInt().",
+ message: "Use {{radixName}} literals instead of {{functionName}}().",
data: {
- radixName
+ radixName,
+ functionName: sourceCode.getText(node.callee)
},
fix(fixer) {
const newPrefix = prefixMap[node.arguments[1].value];
diff --git a/tools/eslint/lib/util/npm-util.js b/tools/eslint/lib/util/npm-util.js
index 057dbfea4d..4f488c0121 100644
--- a/tools/eslint/lib/util/npm-util.js
+++ b/tools/eslint/lib/util/npm-util.js
@@ -10,7 +10,7 @@
//------------------------------------------------------------------------------
const fs = require("fs"),
- childProcess = require("child_process"),
+ spawn = require("cross-spawn"),
path = require("path"),
log = require("../logging");
@@ -50,22 +50,23 @@ function findPackageJson(startDir) {
* @returns {void}
*/
function installSyncSaveDev(packages) {
- if (Array.isArray(packages)) {
- packages = packages.join(" ");
+ if (!Array.isArray(packages)) {
+ packages = [packages];
}
- childProcess.execSync(`npm i --save-dev ${packages}`, { stdio: "inherit", encoding: "utf8" });
+ spawn.sync("npm", ["i", "--save-dev"].concat(packages), { stdio: "inherit" });
}
/**
* Fetch `peerDependencies` of the given package by `npm show` command.
* @param {string} packageName The package name to fetch peerDependencies.
- * @returns {string[]} Gotten peerDependencies.
+ * @returns {Object} Gotten peerDependencies.
*/
function fetchPeerDependencies(packageName) {
- const fetchedText = childProcess.execSync(
- `npm show --json ${packageName} peerDependencies`,
+ const fetchedText = spawn.sync(
+ "npm",
+ ["show", "--json", packageName, "peerDependencies"],
{ encoding: "utf8" }
- ).trim();
+ ).stdout.trim();
return JSON.parse(fetchedText || "{}");
}
diff --git a/tools/eslint/node_modules/ajv/dist/ajv.bundle.js b/tools/eslint/node_modules/ajv/dist/ajv.bundle.js
index ea98dbc601..ea6a78f162 100644
--- a/tools/eslint/node_modules/ajv/dist/ajv.bundle.js
+++ b/tools/eslint/node_modules/ajv/dist/ajv.bundle.js
@@ -574,7 +574,9 @@ function compile(schema, root, localRefs, baseId) {
}
}
- if (v !== undefined) {
+ if (v === undefined) {
+ removeLocalRef(ref);
+ } else {
replaceLocalRef(ref, v);
return resolvedRef(v, refCode);
}
@@ -587,6 +589,10 @@ function compile(schema, root, localRefs, baseId) {
return 'refVal' + refId;
}
+ function removeLocalRef(ref) {
+ delete refs[ref];
+ }
+
function replaceLocalRef(ref, v) {
var refId = refs[ref];
refVal[refId] = v;
diff --git a/tools/eslint/node_modules/ajv/dist/ajv.min.js b/tools/eslint/node_modules/ajv/dist/ajv.min.js
index bf4541fb27..73980da002 100644
--- a/tools/eslint/node_modules/ajv/dist/ajv.min.js
+++ b/tools/eslint/node_modules/ajv/dist/ajv.min.js
@@ -1,3 +1,3 @@
-/* ajv 5.2.1: Another JSON Schema Validator */
-!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Ajv=e()}}(function(){return function e(r,t,a){function s(i,n){if(!t[i]){if(!r[i]){var l="function"==typeof require&&require;if(!n&&l)return l(i,!0);if(o)return o(i,!0);var h=new Error("Cannot find module '"+i+"'");throw h.code="MODULE_NOT_FOUND",h}var u=t[i]={exports:{}};r[i][0].call(u.exports,function(e){var t=r[i][1][e];return s(t||e)},u,u.exports,e,r,t,a)}return t[i].exports}for(var o="function"==typeof require&&require,i=0;i<a.length;i++)s(a[i]);return s}({1:[function(e,r,t){"use strict";var a=["multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","additionalItems","maxItems","minItems","uniqueItems","maxProperties","minProperties","required","additionalProperties","enum","format","const"];r.exports=function(e,r){for(var t=0;t<r.length;t++){e=JSON.parse(JSON.stringify(e));var s,o=r[t].split("/"),i=e;for(s=1;s<o.length;s++)i=i[o[s]];for(s=0;s<a.length;s++){var n=a[s],l=i[n];l&&(i[n]={anyOf:[l,{$ref:"https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/$data.json#"}]})}}return e}},{}],2:[function(e,r,t){"use strict";var a=r.exports=function(){this._cache={}};a.prototype.put=function(e,r){this._cache[e]=r},a.prototype.get=function(e){return this._cache[e]},a.prototype.del=function(e){delete this._cache[e]},a.prototype.clear=function(){this._cache={}}},{}],3:[function(e,r,t){"use strict";r.exports={$ref:e("../dotjs/ref"),allOf:e("../dotjs/allOf"),anyOf:e("../dotjs/anyOf"),const:e("../dotjs/const"),contains:e("../dotjs/contains"),dependencies:e("../dotjs/dependencies"),enum:e("../dotjs/enum"),format:e("../dotjs/format"),items:e("../dotjs/items"),maximum:e("../dotjs/_limit"),minimum:e("../dotjs/_limit"),maxItems:e("../dotjs/_limitItems"),minItems:e("../dotjs/_limitItems"),maxLength:e("../dotjs/_limitLength"),minLength:e("../dotjs/_limitLength"),maxProperties:e("../dotjs/_limitProperties"),minProperties:e("../dotjs/_limitProperties"),multipleOf:e("../dotjs/multipleOf"),not:e("../dotjs/not"),oneOf:e("../dotjs/oneOf"),pattern:e("../dotjs/pattern"),properties:e("../dotjs/properties"),propertyNames:e("../dotjs/propertyNames"),required:e("../dotjs/required"),uniqueItems:e("../dotjs/uniqueItems"),validate:e("../dotjs/validate")}},{"../dotjs/_limit":13,"../dotjs/_limitItems":14,"../dotjs/_limitLength":15,"../dotjs/_limitProperties":16,"../dotjs/allOf":17,"../dotjs/anyOf":18,"../dotjs/const":19,"../dotjs/contains":20,"../dotjs/dependencies":22,"../dotjs/enum":23,"../dotjs/format":24,"../dotjs/items":25,"../dotjs/multipleOf":26,"../dotjs/not":27,"../dotjs/oneOf":28,"../dotjs/pattern":29,"../dotjs/properties":30,"../dotjs/propertyNames":31,"../dotjs/ref":32,"../dotjs/required":33,"../dotjs/uniqueItems":34,"../dotjs/validate":35}],4:[function(e,r,t){"use strict";function a(e,r,t){function o(e){var r=e.$schema;return r&&!n.getSchema(r)?a.call(n,{$ref:r},!0):Promise.resolve()}function i(e){try{return n._compile(e)}catch(t){if(t instanceof s)return function(t){function a(){delete n._loadingSchemas[l]}function s(e){return n._refs[e]||n._schemas[e]}var l=t.missingSchema;if(s(l))throw new Error("Schema "+l+" is loaded but "+t.missingRef+" cannot be resolved");var h=n._loadingSchemas[l];return h||(h=n._loadingSchemas[l]=n._opts.loadSchema(l)).then(a,a),h.then(function(e){if(!s(l))return o(e).then(function(){s(l)||n.addSchema(e,l,void 0,r)})}).then(function(){return i(e)})}(t);throw t}}var n=this;if("function"!=typeof this._opts.loadSchema)throw new Error("options.loadSchema should be a function");"function"==typeof r&&(t=r,r=void 0);var l=o(e).then(function(){var t=n._addSchema(e,void 0,r);return t.validate||i(t)});return t&&l.then(function(e){t(null,e)},t),l}var s=e("./error_classes").MissingRef;r.exports=a},{"./error_classes":5}],5:[function(e,r,t){"use strict";function a(e){this.message="validation failed",this.errors=e,this.ajv=this.validation=!0}function s(e,r,t){this.message=t||s.message(e,r),this.missingRef=i.url(e,r),this.missingSchema=i.normalizeId(i.fullPath(this.missingRef))}function o(e){return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e}var i=e("./resolve");r.exports={Validation:o(a),MissingRef:o(s)},s.message=function(e,r){return"can't resolve reference "+r+" from id "+e}},{"./resolve":8}],6:[function(e,r,t){"use strict";function a(e){return e="full"==e?"full":"fast",u.copy(a[e])}function s(e){var r=e.match(c);if(!r)return!1;var t=+r[1],a=+r[2];return t>=1&&t<=12&&a>=1&&a<=f[t]}function o(e,r){var t=e.match(d);if(!t)return!1;var a=t[1],s=t[2],o=t[3],i=t[5];return a<=23&&s<=59&&o<=59&&(!r||i)}function i(e){var r=e.split(w);return 2==r.length&&s(r[0])&&o(r[1],!0)}function n(e){return e.length<=255&&p.test(e)}function l(e){return j.test(e)&&m.test(e)}function h(e){if(S.test(e))return!1;try{return new RegExp(e),!0}catch(e){return!1}}var u=e("./util"),c=/^\d\d\d\d-(\d\d)-(\d\d)$/,f=[0,31,29,31,30,31,30,31,31,30,31,30,31],d=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d:\d\d)?$/i,p=/^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*$/i,m=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,v=/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,y=/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,g=/^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i,P=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,E=/^(?:\/(?:[^~/]|~0|~1)*)*$|^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,b=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;r.exports=a,a.fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^[0-2]\d:[0-5]\d:[0-5]\d(?:\.\d+)?(?:z|[+-]\d\d:\d\d)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s][0-2]\d:[0-5]\d:[0-5]\d(?:\.\d+)?(?:z|[+-]\d\d:\d\d)$/i,uri:/^(?:[a-z][a-z0-9+-.]*)(?::|\/)\/?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+-.]*:)?\/\/)?[^\s]*$/i,"uri-template":y,url:g,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:p,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:h,uuid:P,"json-pointer":E,"relative-json-pointer":b},a.full={date:s,time:o,"date-time":i,uri:l,"uri-reference":v,"uri-template":y,url:g,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&''*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:n,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:h,uuid:P,"json-pointer":E,"relative-json-pointer":b};var w=/t|\s/i,j=/\/|:/,S=/[^\\]\\Z/},{"./util":12}],7:[function(e,r,t){"use strict";function a(e,r,t,i){function b(){var e=U.validate,r=e.apply(null,arguments);return b.errors=e.errors,r}function w(e,t,s,o){var i=!t||t&&t.schema==e;if(t.schema!=r.schema)return a.call(O,e,t,s,o);var m=!0===e.$async,b=v({isTop:!0,schema:e,isRoot:i,baseId:o,root:t,schemaPath:"",errSchemaPath:"#",errorPath:'""',MissingRefError:p.MissingRef,RULES:N,validate:v,util:d,resolve:f,resolveRef:j,usePattern:F,useDefault:$,useCustomRule:R,opts:D,formats:V,self:O});b=c(I,h)+c(k,n)+c(C,l)+c(z,u)+b,D.processCode&&(b=D.processCode(b));var w;try{w=new Function("self","RULES","formats","root","refVal","defaults","customRules","co","equal","ucs2length","ValidationError",b)(O,N,V,r,I,C,z,y,P,g,E),I[0]=w}catch(e){throw console.error("Error compiling schema, function code:",b),e}return w.schema=e,w.errors=null,w.refs=A,w.refVal=I,w.root=i?w:t,m&&(w.$async=!0),!0===D.sourceCode&&(w.source={code:b,patterns:k,defaults:C}),w}function j(e,s,o){s=f.url(e,s);var i,n,l=A[s];if(void 0!==l)return i=I[l],n="refVal["+l+"]",x(i,n);if(!o&&r.refs){var h=r.refs[s];if(void 0!==h)return i=r.refVal[h],n=S(s,i),x(i,n)}n=S(s);var u=f.call(O,w,r,s);if(void 0===u){var c=t&&t[s];c&&(u=f.inlineRef(c,D.inlineRefs)?c:a.call(O,c,r,t,e))}return void 0!==u?(_(s,u),x(u,n)):void 0}function S(e,r){var t=I.length;return I[t]=r,A[e]=t,"refVal"+t}function _(e,r){I[A[e]]=r}function x(e,r){return"object"==typeof e||"boolean"==typeof e?{code:r,schema:e,inline:!0}:{code:r,$async:e&&e.$async}}function F(e){var r=q[e];return void 0===r&&(r=q[e]=k.length,k[r]=e),"pattern"+r}function $(e){switch(typeof e){case"boolean":case"number":return""+e;case"string":return d.toQuotedString(e);case"object":if(null===e)return"null";var r=m(e),t=L[r];return void 0===t&&(t=L[r]=C.length,C[t]=e),"default"+t}}function R(e,r,t,a){var s=e.definition.validateSchema;if(s&&!1!==O._opts.validateSchema&&!s(r)){var o="keyword schema is invalid: "+O.errorsText(s.errors);if("log"!=O._opts.validateSchema)throw new Error(o);console.error(o)}var i,n=e.definition.compile,l=e.definition.inline,h=e.definition.macro;if(n)i=n.call(O,r,t,a);else if(h)i=h.call(O,r,t,a),!1!==D.validateSchema&&O.validateSchema(i,!0);else if(l)i=l.call(O,a,e.keyword,r,t);else if(!(i=e.definition.validate))return;if(void 0===i)throw new Error('custom keyword "'+e.keyword+'"failed to compile');var u=z.length;return z[u]=i,{code:"customRule"+u,validate:i}}var O=this,D=this._opts,I=[void 0],A={},k=[],q={},C=[],L={},z=[];r=r||{schema:e,refVal:I,refs:A};var Q=s.call(this,e,r,i),U=this._compilations[Q.index];if(Q.compiling)return U.callValidate=b;var V=this._formats,N=this.RULES;try{var T=w(e,r,t,i);U.validate=T;var M=U.callValidate;return M&&(M.schema=T.schema,M.errors=null,M.refs=T.refs,M.refVal=T.refVal,M.root=T.root,M.$async=T.$async,D.sourceCode&&(M.source=T.source)),T}finally{o.call(this,e,r,i)}}function s(e,r,t){var a=i.call(this,e,r,t);return a>=0?{index:a,compiling:!0}:(a=this._compilations.length,this._compilations[a]={schema:e,root:r,baseId:t},{index:a,compiling:!1})}function o(e,r,t){var a=i.call(this,e,r,t);a>=0&&this._compilations.splice(a,1)}function i(e,r,t){for(var a=0;a<this._compilations.length;a++){var s=this._compilations[a];if(s.schema==e&&s.root==r&&s.baseId==t)return a}return-1}function n(e,r){return"var pattern"+e+" = new RegExp("+d.toQuotedString(r[e])+");"}function l(e){return"var default"+e+" = defaults["+e+"];"}function h(e,r){return void 0===r[e]?"":"var refVal"+e+" = refVal["+e+"];"}function u(e){return"var customRule"+e+" = customRules["+e+"];"}function c(e,r){if(!e.length)return"";for(var t="",a=0;a<e.length;a++)t+=r(a,e);return t}var f=e("./resolve"),d=e("./util"),p=e("./error_classes"),m=e("json-stable-stringify"),v=e("../dotjs/validate"),y=e("co"),g=d.ucs2length,P=e("fast-deep-equal"),E=p.Validation;r.exports=a},{"../dotjs/validate":35,"./error_classes":5,"./resolve":8,"./util":12,co:40,"fast-deep-equal":41,"json-stable-stringify":43}],8:[function(e,r,t){"use strict";function a(e,r,t){var o=this._refs[t];if("string"==typeof o){if(!this._refs[o])return a.call(this,e,r,o);o=this._refs[o]}if((o=o||this._schemas[t])instanceof g)return n(o.schema,this._opts.inlineRefs)?o.schema:o.validate||this._compile(o);var i,l,h,u=s.call(this,r,t);return u&&(i=u.schema,r=u.root,h=u.baseId),i instanceof g?l=i.validate||e.call(this,i.schema,r,void 0,h):void 0!==i&&(l=n(i,this._opts.inlineRefs)?i:e.call(this,i,r,void 0,h)),l}function s(e,r){var t=m.parse(r,!1,!0),a=c(t),s=u(this._getId(e.schema));if(a!==s){var n=f(a),l=this._refs[n];if("string"==typeof l)return o.call(this,e,l,t);if(l instanceof g)l.validate||this._compile(l),e=l;else{if(!((l=this._schemas[n])instanceof g))return;if(l.validate||this._compile(l),n==f(r))return{schema:l,root:e,baseId:s};e=l}if(!e.schema)return;s=u(this._getId(e.schema))}return i.call(this,t,s,e.schema,e)}function o(e,r,t){var a=s.call(this,e,r);if(a){var o=a.schema,n=a.baseId;e=a.root;var l=this._getId(o);return l&&(n=d(n,l)),i.call(this,t,n,o,e)}}function i(e,r,t,a){if("#/"==(e.hash=e.hash||"").slice(0,2)){for(var o=e.hash.split("/"),i=1;i<o.length;i++){var n=o[i];if(n){if(n=y.unescapeFragment(n),void 0===(t=t[n]))break;var l;if(!E[n]&&((l=this._getId(t))&&(r=d(r,l)),t.$ref)){var h=d(r,t.$ref),u=s.call(this,a,h);u&&(t=u.schema,a=u.root,r=u.baseId)}}}return void 0!==t&&t!==a.schema?{schema:t,root:a,baseId:r}:void 0}}function n(e,r){return!1!==r&&(void 0===r||!0===r?l(e):r?h(e)<=r:void 0)}function l(e){var r;if(Array.isArray(e)){for(var t=0;t<e.length;t++)if("object"==typeof(r=e[t])&&!l(r))return!1}else for(var a in e){if("$ref"==a)return!1;if("object"==typeof(r=e[a])&&!l(r))return!1}return!0}function h(e){var r,t=0;if(Array.isArray(e)){for(var a=0;a<e.length;a++)if("object"==typeof(r=e[a])&&(t+=h(r)),t==1/0)return 1/0}else for(var s in e){if("$ref"==s)return 1/0;if(b[s])t++;else if("object"==typeof(r=e[s])&&(t+=h(r)+1),t==1/0)return 1/0}return t}function u(e,r){return!1!==r&&(e=f(e)),c(m.parse(e,!1,!0))}function c(e){var r=e.protocol||"//"==e.href.slice(0,2)?"//":"";return(e.protocol||"")+r+(e.host||"")+(e.path||"")+"#"}function f(e){return e?e.replace(w,""):""}function d(e,r){return r=f(r),m.resolve(e,r)}function p(e){var r=f(this._getId(e)),t={"":r},a={"":u(r,!1)},s={},o=this;return P(e,{allKeys:!0},function(e,r,i,n,l,h,u){if(""!==r){var c=o._getId(e),d=t[n],p=a[n]+"/"+l;if(void 0!==u&&(p+="/"+("number"==typeof u?u:y.escapeFragment(u))),"string"==typeof c){c=d=f(d?m.resolve(d,c):c);var g=o._refs[c];if("string"==typeof g&&(g=o._refs[g]),g&&g.schema){if(!v(e,g.schema))throw new Error('id "'+c+'" resolves to more than one schema')}else if(c!=f(p))if("#"==c[0]){if(s[c]&&!v(e,s[c]))throw new Error('id "'+c+'" resolves to more than one schema');s[c]=e}else o._refs[c]=p}t[r]=d,a[r]=p}}),s}var m=e("url"),v=e("fast-deep-equal"),y=e("./util"),g=e("./schema_obj"),P=e("json-schema-traverse");r.exports=a,a.normalizeId=f,a.fullPath=u,a.url=d,a.ids=p,a.inlineRef=n,a.schema=s;var E=y.toHash(["properties","patternProperties","enum","dependencies","definitions"]),b=y.toHash(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum"]),w=/#\/?$/},{"./schema_obj":10,"./util":12,"fast-deep-equal":41,"json-schema-traverse":42,url:51}],9:[function(e,r,t){"use strict";var a=e("./_rules"),s=e("./util").toHash;r.exports=function(){var e=[{type:"number",rules:[{maximum:["exclusiveMaximum"]},{minimum:["exclusiveMinimum"]},"multipleOf","format"]},{type:"string",rules:["maxLength","minLength","pattern","format"]},{type:"array",rules:["maxItems","minItems","uniqueItems","contains","items"]},{type:"object",rules:["maxProperties","minProperties","required","dependencies","propertyNames",{properties:["additionalProperties","patternProperties"]}]},{rules:["$ref","const","enum","not","anyOf","oneOf","allOf"]}],r=["type"],t=["additionalItems","$schema","id","title","description","default","definitions"],o=["number","integer","string","array","object","boolean","null"];return e.all=s(r),e.types=s(o),e.forEach(function(t){t.rules=t.rules.map(function(t){var s;if("object"==typeof t){var o=Object.keys(t)[0];s=t[o],t=o,s.forEach(function(t){r.push(t),e.all[t]=!0})}return r.push(t),e.all[t]={keyword:t,code:a[t],implements:s}}),t.type&&(e.types[t.type]=t)}),e.keywords=s(r.concat(t)),e.custom={},e}},{"./_rules":3,"./util":12}],10:[function(e,r,t){"use strict";function a(e){s.copy(e,this)}var s=e("./util");r.exports=a},{"./util":12}],11:[function(e,r,t){"use strict";r.exports=function(e){for(var r,t=0,a=e.length,s=0;s<a;)t++,(r=e.charCodeAt(s++))>=55296&&r<=56319&&s<a&&56320==(64512&(r=e.charCodeAt(s)))&&s++;return t}},{}],12:[function(e,r,t){"use strict";function a(e,r){r=r||{};for(var t in e)r[t]=e[t];return r}function s(e,r,t){var a=t?" !== ":" === ",s=t?" || ":" && ",o=t?"!":"",i=t?"":"!";switch(e){case"null":return r+a+"null";case"array":return o+"Array.isArray("+r+")";case"object":return"("+o+r+s+"typeof "+r+a+'"object"'+s+i+"Array.isArray("+r+"))";case"integer":return"(typeof "+r+a+'"number"'+s+i+"("+r+" % 1)"+s+r+a+r+")";default:return"typeof "+r+a+'"'+e+'"'}}function o(e,r){switch(e.length){case 1:return s(e[0],r,!0);default:var t="",a=n(e);a.array&&a.object&&(t=a.null?"(":"(!"+r+" || ",t+="typeof "+r+' !== "object")',delete a.null,delete a.array,delete a.object),a.number&&delete a.integer;for(var o in a)t+=(t?" && ":"")+s(o,r,!0);return t}}function i(e,r){if(Array.isArray(r)){for(var t=[],a=0;a<r.length;a++){var s=r[a];_[s]?t[t.length]=s:"array"===e&&"array"===s&&(t[t.length]=s)}if(t.length)return t}else{if(_[r])return[r];if("array"===e&&"array"===r)return["array"]}}function n(e){for(var r={},t=0;t<e.length;t++)r[e[t]]=!0;return r}function l(e){return"number"==typeof e?"["+e+"]":x.test(e)?"."+e:"['"+h(e)+"']"}function h(e){return e.replace(F,"\\$&").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\f/g,"\\f").replace(/\t/g,"\\t")}function u(e,r){r+="[^0-9]";var t=e.match(new RegExp(r,"g"));return t?t.length:0}function c(e,r,t){return r+="([^0-9])",t=t.replace(/\$/g,"$$$$"),e.replace(new RegExp(r,"g"),t+"$1")}function f(e){return e.replace($,"").replace(R,"").replace(O,"if (!($1))")}function d(e,r){var t=e.match(D);return t&&2==t.length&&(e=r?e.replace(A,"").replace(C,L):e.replace(I,"").replace(k,q)),t=e.match(z),t&&3===t.length?e.replace(Q,""):e}function p(e,r){if("boolean"==typeof e)return!e;for(var t in e)if(r[t])return!0}function m(e,r,t){if("boolean"==typeof e)return!e&&"not"!=t;for(var a in e)if(a!=t&&r[a])return!0}function v(e){return"'"+h(e)+"'"}function y(e,r,t,a){return E(e,t?"'/' + "+r+(a?"":".replace(/~/g, '~0').replace(/\\//g, '~1')"):a?"'[' + "+r+" + ']'":"'[\\'' + "+r+" + '\\']'")}function g(e,r,t){return E(e,v(t?"/"+j(r):l(r)))}function P(e,r,t){var a,s,o,i;if(""===e)return"rootData";if("/"==e[0]){if(!U.test(e))throw new Error("Invalid JSON-pointer: "+e);s=e,o="rootData"}else{if(!(i=e.match(V)))throw new Error("Invalid JSON-pointer: "+e);if(a=+i[1],"#"==(s=i[2])){if(a>=r)throw new Error("Cannot access property/index "+a+" levels up, current level is "+r);return t[r-a]}if(a>r)throw new Error("Cannot access data "+a+" levels up, current level is "+r);if(o="data"+(r-a||""),!s)return o}for(var n=o,h=s.split("/"),u=0;u<h.length;u++){var c=h[u];c&&(n+=" && "+(o+=l(S(c))))}return n}function E(e,r){return'""'==e?r:(e+" + "+r).replace(/' \+ '/g,"")}function b(e){return S(decodeURIComponent(e))}function w(e){return encodeURIComponent(j(e))}function j(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function S(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}r.exports={copy:a,checkDataType:s,checkDataTypes:o,coerceToTypes:i,toHash:n,getProperty:l,escapeQuotes:h,equal:e("fast-deep-equal"),ucs2length:e("./ucs2length"),varOccurences:u,varReplace:c,cleanUpCode:f,finalCleanUpCode:d,schemaHasRules:p,schemaHasRulesExcept:m,toQuotedString:v,getPathExpr:y,getPath:g,getData:P,unescapeFragment:b,unescapeJsonPointer:S,escapeFragment:w,escapeJsonPointer:j};var _=n(["string","number","integer","boolean","null"]),x=/^[a-z$_][a-z$_0-9]*$/i,F=/'|\\/g,$=/else\s*{\s*}/g,R=/if\s*\([^)]+\)\s*\{\s*\}(?!\s*else)/g,O=/if\s*\(([^)]+)\)\s*\{\s*\}\s*else(?!\s*if)/g,D=/[^v.]errors/g,I=/var errors = 0;|var vErrors = null;|validate.errors = vErrors;/g,A=/var errors = 0;|var vErrors = null;/g,k="return errors === 0;",q="validate.errors = null; return true;",C=/if \(errors === 0\) return data;\s*else throw new ValidationError\(vErrors\);/,L="return data;",z=/[^A-Za-z_$]rootData[^A-Za-z0-9_$]/g,Q=/if \(rootData === undefined\) rootData = data;/,U=/^\/(?:[^~]|~0|~1)*$/,V=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/},{"./ucs2length":11,"fast-deep-equal":41}],13:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),h=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(i||""),f=e.opts.$data&&n&&n.$data;f?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ",a="schema"+o):a=n;var d="maximum"==r,p=d?"exclusiveMaximum":"exclusiveMinimum",m=e.schema[p],v=e.opts.$data&&m&&m.$data,y=d?"<":">",g=d?">":"<",P=void 0;if(v){var E=e.util.getData(m.$data,i,e.dataPathArr),b="exclusive"+o,w="exclType"+o,j="exclIsNumber"+o,S="' + "+(_="op"+o)+" + '";s+=" var schemaExcl"+o+" = "+E+"; ",s+=" var "+b+"; var "+w+" = typeof "+(E="schemaExcl"+o)+"; if ("+w+" != 'boolean' && "+w+" != 'undefined' && "+w+" != 'number') { ";P=p;(x=x||[]).push(s),s="",!1!==e.createErrors?(s+=" { keyword: '"+(P||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(h)+" , params: {} ",!1!==e.opts.messages&&(s+=" , message: '"+p+" should be boolean' "),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";F=s;s=x.pop(),s+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+F+"]); ":" validate.errors = ["+F+"]; return false; ":" var err = "+F+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } else if ( ",f&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=" "+w+" == 'number' ? ( ("+b+" = "+a+" === undefined || "+E+" "+y+"= "+a+") ? "+c+" "+g+"= "+E+" : "+c+" "+g+" "+a+" ) : ( ("+b+" = "+E+" === true) ? "+c+" "+g+"= "+a+" : "+c+" "+g+" "+a+" ) || "+c+" !== "+c+") { var op"+o+" = "+b+" ? '"+y+"' : '"+y+"=';"}else{S=y;if((j="number"==typeof m)&&f){_="'"+S+"'";s+=" if ( ",f&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=" ( "+a+" === undefined || "+m+" "+y+"= "+a+" ? "+c+" "+g+"= "+m+" : "+c+" "+g+" "+a+" ) || "+c+" !== "+c+") { "}else{j&&void 0===n?(b=!0,P=p,h=e.errSchemaPath+"/"+p,a=m,g+="="):(j&&(a=Math[d?"min":"max"](m,n)),m===(!j||a)?(b=!0,P=p,h=e.errSchemaPath+"/"+p,g+="="):(b=!1,S+="="));var _="'"+S+"'";s+=" if ( ",f&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=" "+c+" "+g+" "+a+" || "+c+" !== "+c+") { "}}P=P||r;var x=x||[];x.push(s),s="",!1!==e.createErrors?(s+=" { keyword: '"+(P||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(h)+" , params: { comparison: "+_+", limit: "+a+", exclusive: "+b+" } ",!1!==e.opts.messages&&(s+=" , message: 'should be "+S+" ",s+=f?"' + "+a:a+"'"),e.opts.verbose&&(s+=" , schema: ",s+=f?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";var F=s;return s=x.pop(),s+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+F+"]); ":" validate.errors = ["+F+"]; return false; ":" var err = "+F+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } ",u&&(s+=" else { "),s}},{}],14:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),h=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(i||""),f=e.opts.$data&&n&&n.$data;f?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ",a="schema"+o):a=n;var d="maxItems"==r?">":"<";s+="if ( ",f&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=" "+c+".length "+d+" "+a+") { ";var p=r,m=m||[];m.push(s),s="",!1!==e.createErrors?(s+=" { keyword: '"+(p||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(h)+" , params: { limit: "+a+" } ",!1!==e.opts.messages&&(s+=" , message: 'should NOT have ",s+="maxItems"==r?"more":"less",s+=" than ",s+=f?"' + "+a+" + '":""+n,s+=" items' "),e.opts.verbose&&(s+=" , schema: ",s+=f?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";var v=s;return s=m.pop(),s+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+v+"]); ":" validate.errors = ["+v+"]; return false; ":" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",u&&(s+=" else { "),s}},{}],15:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),h=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(i||""),f=e.opts.$data&&n&&n.$data;f?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ",a="schema"+o):a=n;var d="maxLength"==r?">":"<";s+="if ( ",f&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=!1===e.opts.unicode?" "+c+".length ":" ucs2length("+c+") ",s+=" "+d+" "+a+") { ";var p=r,m=m||[];m.push(s),s="",!1!==e.createErrors?(s+=" { keyword: '"+(p||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(h)+" , params: { limit: "+a+" } ",!1!==e.opts.messages&&(s+=" , message: 'should NOT be ",s+="maxLength"==r?"longer":"shorter",s+=" than ",s+=f?"' + "+a+" + '":""+n,s+=" characters' "),e.opts.verbose&&(s+=" , schema: ",s+=f?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";var v=s;return s=m.pop(),s+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+v+"]); ":" validate.errors = ["+v+"]; return false; ":" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",u&&(s+=" else { "),s}},{}],16:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),h=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(i||""),f=e.opts.$data&&n&&n.$data;f?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ",a="schema"+o):a=n;var d="maxProperties"==r?">":"<";s+="if ( ",f&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=" Object.keys("+c+").length "+d+" "+a+") { ";var p=r,m=m||[];m.push(s),s="",!1!==e.createErrors?(s+=" { keyword: '"+(p||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(h)+" , params: { limit: "+a+" } ",!1!==e.opts.messages&&(s+=" , message: 'should NOT have ",s+="maxProperties"==r?"more":"less",s+=" than ",s+=f?"' + "+a+" + '":""+n,s+=" properties' "),e.opts.verbose&&(s+=" , schema: ",s+=f?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";var v=s;return s=m.pop(),s+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+v+"]); ":" validate.errors = ["+v+"]; return false; ":" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",u&&(s+=" else { "),s}},{}],17:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.schema[r],o=e.schemaPath+e.util.getProperty(r),i=e.errSchemaPath+"/"+r,n=!e.opts.allErrors,l=e.util.copy(e),h="",u="valid"+ ++l.level,c=l.baseId,f=!0,d=s;if(d)for(var p,m=-1,v=d.length-1;m<v;)p=d[m+=1],e.util.schemaHasRules(p,e.RULES.all)&&(f=!1,l.schema=p,l.schemaPath=o+"["+m+"]",l.errSchemaPath=i+"/"+m,a+=" "+e.validate(l)+" ",l.baseId=c,n&&(a+=" if ("+u+") { ",h+="}"));return n&&(a+=f?" if (true) { ":" "+h.slice(0,-1)+" "),a=e.util.cleanUpCode(a)}},{}],18:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(o||""),c="valid"+s,f="errs__"+s,d=e.util.copy(e),p="",m="valid"+ ++d.level;if(i.every(function(r){return e.util.schemaHasRules(r,e.RULES.all)})){var v=d.baseId;a+=" var "+f+" = errors; var "+c+" = false; ";var y=e.compositeRule;e.compositeRule=d.compositeRule=!0;var g=i;if(g)for(var P,E=-1,b=g.length-1;E<b;)P=g[E+=1],d.schema=P,d.schemaPath=n+"["+E+"]",d.errSchemaPath=l+"/"+E,a+=" "+e.validate(d)+" ",d.baseId=v,a+=" "+c+" = "+c+" || "+m+"; if (!"+c+") { ",p+="}";e.compositeRule=d.compositeRule=y,a+=" "+p+" if (!"+c+") { var err = ",!1!==e.createErrors?(a+=" { keyword: 'anyOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(a+=" , message: 'should match some schema in anyOf' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&h&&(a+=e.async?" throw new ValidationError(vErrors); ":" validate.errors = vErrors; return false; "),a+=" } else { errors = "+f+"; if (vErrors !== null) { if ("+f+") vErrors.length = "+f+"; else vErrors = null; } ",e.opts.allErrors&&(a+=" } "),a=e.util.cleanUpCode(a)}else h&&(a+=" if (true) { ");return a}},{}],19:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(o||""),c="valid"+s,f=e.opts.$data&&i&&i.$data;f&&(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; "),f||(a+=" var schema"+s+" = validate.schema"+n+";"),a+="var "+c+" = equal("+u+", schema"+s+"); if (!"+c+") { ";var d=d||[];d.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'const' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(a+=" , message: 'should be equal to constant' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var p=a;return a=d.pop(),a+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+p+"]); ":" validate.errors = ["+p+"]; return false; ":" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" }",h&&(a+=" else { "),a}},{}],20:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(o||""),c="valid"+s,f="errs__"+s,d=e.util.copy(e),p="valid"+ ++d.level,m="i"+s,v=d.dataLevel=e.dataLevel+1,y="data"+v,g=e.baseId,P=e.util.schemaHasRules(i,e.RULES.all);if(a+="var "+f+" = errors;var "+c+";",P){var E=e.compositeRule;e.compositeRule=d.compositeRule=!0,d.schema=i,d.schemaPath=n,d.errSchemaPath=l,a+=" var "+p+" = false; for (var "+m+" = 0; "+m+" < "+u+".length; "+m+"++) { ",d.errorPath=e.util.getPathExpr(e.errorPath,m,e.opts.jsonPointers,!0);var b=u+"["+m+"]";d.dataPathArr[v]=m;var w=e.validate(d);d.baseId=g,e.util.varOccurences(w,y)<2?a+=" "+e.util.varReplace(w,y,b)+" ":a+=" var "+y+" = "+b+"; "+w+" ",a+=" if ("+p+") break; } ",e.compositeRule=d.compositeRule=E,a+=" if (!"+p+") {"}else a+=" if ("+u+".length == 0) {";var j=j||[];j.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'contains' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(a+=" , message: 'should contain a valid item' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var S=a;return a=j.pop(),a+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+S+"]); ":" validate.errors = ["+S+"]; return false; ":" var err = "+S+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else { ",P&&(a+=" errors = "+f+"; if (vErrors !== null) { if ("+f+") vErrors.length = "+f+"; else vErrors = null; } "),e.opts.allErrors&&(a+=" } "),a=e.util.cleanUpCode(a)}},{}],21:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s,o=" ",i=e.level,n=e.dataLevel,l=e.schema[r],h=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,f="data"+(n||""),d="valid"+i,p="errs__"+i,m=e.opts.$data&&l&&l.$data;m?(o+=" var schema"+i+" = "+e.util.getData(l.$data,n,e.dataPathArr)+"; ",s="schema"+i):s=l;var v,y,g,P,E,b=this,w="definition"+i,j=b.definition,S="";if(m&&j.$data){E="keywordValidate"+i;var _=j.validateSchema;o+=" var "+w+" = RULES.custom['"+r+"'].definition; var "+E+" = "+w+".validate;"}else{if(!(P=e.useCustomRule(b,l,e.schema,e)))return;s="validate.schema"+h,E=P.code,v=j.compile,y=j.inline,g=j.macro}var x=E+".errors",F="i"+i,$="ruleErr"+i,R=j.async;if(R&&!e.async)throw new Error("async keyword in sync schema");if(y||g||(o+=x+" = null;"),o+="var "+p+" = errors;var "+d+";",m&&j.$data&&(S+="}",o+=" if ("+s+" === undefined) { "+d+" = true; } else { ",_&&(S+="}",o+=" "+d+" = "+w+".validateSchema("+s+"); if ("+d+") { ")),y)o+=j.statements?" "+P.validate+" ":" "+d+" = "+P.validate+"; ";else if(g){var O=e.util.copy(e),S="",D="valid"+ ++O.level;O.schema=P.validate,O.schemaPath="";var I=e.compositeRule;e.compositeRule=O.compositeRule=!0;var A=e.validate(O).replace(/validate\.schema/g,E);e.compositeRule=O.compositeRule=I,o+=" "+A}else{(L=L||[]).push(o),o="",o+=" "+E+".call( ",o+=e.opts.passContext?"this":"self",o+=v||!1===j.schema?" , "+f+" ":" , "+s+" , "+f+" , validate.schema"+e.schemaPath+" ",o+=" , (dataPath || '')",'""'!=e.errorPath&&(o+=" + "+e.errorPath);var k=n?"data"+(n-1||""):"parentData",q=n?e.dataPathArr[n]:"parentDataProperty",C=o+=" , "+k+" , "+q+" , rootData ) ";o=L.pop(),!1===j.errors?(o+=" "+d+" = ",R&&(o+=""+e.yieldAwait),o+=C+"; "):o+=R?" var "+(x="customErrors"+i)+" = null; try { "+d+" = "+e.yieldAwait+C+"; } catch (e) { "+d+" = false; if (e instanceof ValidationError) "+x+" = e.errors; else throw e; } ":" "+x+" = null; "+d+" = "+C+"; "}if(j.modifying&&(o+=" if ("+k+") "+f+" = "+k+"["+q+"];"),o+=""+S,j.valid)c&&(o+=" if (true) { ");else{o+=" if ( ",void 0===j.valid?(o+=" !",o+=g?""+D:""+d):o+=" "+!j.valid+" ",o+=") { ",a=b.keyword;var L=L||[];L.push(o),o="",(L=L||[]).push(o),o="",!1!==e.createErrors?(o+=" { keyword: '"+(a||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { keyword: '"+b.keyword+"' } ",!1!==e.opts.messages&&(o+=" , message: 'should pass \""+b.keyword+"\" keyword validation' "),e.opts.verbose&&(o+=" , schema: validate.schema"+h+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),o+=" } "):o+=" {} ";var z=o;o=L.pop();var Q=o+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+z+"]); ":" validate.errors = ["+z+"]; return false; ":" var err = "+z+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ";o=L.pop(),y?j.errors?"full"!=j.errors&&(o+=" for (var "+F+"="+p+"; "+F+"<errors; "+F+"++) { var "+$+" = vErrors["+F+"]; if ("+$+".dataPath === undefined) "+$+".dataPath = (dataPath || '') + "+e.errorPath+"; if ("+$+".schemaPath === undefined) { "+$+'.schemaPath = "'+u+'"; } ',e.opts.verbose&&(o+=" "+$+".schema = "+s+"; "+$+".data = "+f+"; "),o+=" } "):!1===j.errors?o+=" "+Q+" ":(o+=" if ("+p+" == errors) { "+Q+" } else { for (var "+F+"="+p+"; "+F+"<errors; "+F+"++) { var "+$+" = vErrors["+F+"]; if ("+$+".dataPath === undefined) "+$+".dataPath = (dataPath || '') + "+e.errorPath+"; if ("+$+".schemaPath === undefined) { "+$+'.schemaPath = "'+u+'"; } ',e.opts.verbose&&(o+=" "+$+".schema = "+s+"; "+$+".data = "+f+"; "),o+=" } } "):g?(o+=" var err = ",!1!==e.createErrors?(o+=" { keyword: '"+(a||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { keyword: '"+b.keyword+"' } ",!1!==e.opts.messages&&(o+=" , message: 'should pass \""+b.keyword+"\" keyword validation' "),e.opts.verbose&&(o+=" , schema: validate.schema"+h+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),o+=" } "):o+=" {} ",o+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&c&&(o+=e.async?" throw new ValidationError(vErrors); ":" validate.errors = vErrors; return false; ")):!1===j.errors?o+=" "+Q+" ":(o+=" if (Array.isArray("+x+")) { if (vErrors === null) vErrors = "+x+"; else vErrors = vErrors.concat("+x+"); errors = vErrors.length; for (var "+F+"="+p+"; "+F+"<errors; "+F+"++) { var "+$+" = vErrors["+F+"]; if ("+$+".dataPath === undefined) "+$+".dataPath = (dataPath || '') + "+e.errorPath+"; "+$+'.schemaPath = "'+u+'"; ',e.opts.verbose&&(o+=" "+$+".schema = "+s+"; "+$+".data = "+f+"; "),o+=" } } else { "+Q+" } "),o+=" } ",c&&(o+=" else { ")}return o}},{}],22:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(o||""),c="errs__"+s,f=e.util.copy(e),d="",p="valid"+ ++f.level,m={},v={},y=e.opts.ownProperties;for(b in i){var g=i[b],P=Array.isArray(g)?v:m;P[b]=g}a+="var "+c+" = errors;";var E=e.errorPath;a+="var missing"+s+";";for(var b in v)if((P=v[b]).length){if(a+=" if ( "+u+e.util.getProperty(b)+" !== undefined ",y&&(a+=" && Object.prototype.hasOwnProperty.call("+u+", '"+e.util.escapeQuotes(b)+"') "),h){a+=" && ( ";var w=P;if(w)for(var j=-1,S=w.length-1;j<S;)O=w[j+=1],j&&(a+=" || "),a+=" ( ( "+(k=u+(A=e.util.getProperty(O)))+" === undefined ",y&&(a+=" || ! Object.prototype.hasOwnProperty.call("+u+", '"+e.util.escapeQuotes(O)+"') "),a+=") && (missing"+s+" = "+e.util.toQuotedString(e.opts.jsonPointers?O:A)+") ) ";a+=")) { ";var _="missing"+s,x="' + "+_+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.opts.jsonPointers?e.util.getPathExpr(E,_,!0):E+" + "+_);var F=F||[];F.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'dependencies' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { property: '"+e.util.escapeQuotes(b)+"', missingProperty: '"+x+"', depsCount: "+P.length+", deps: '"+e.util.escapeQuotes(1==P.length?P[0]:P.join(", "))+"' } ",!1!==e.opts.messages&&(a+=" , message: 'should have ",a+=1==P.length?"property "+e.util.escapeQuotes(P[0]):"properties "+e.util.escapeQuotes(P.join(", ")),a+=" when property "+e.util.escapeQuotes(b)+" is present' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var $=a;a=F.pop(),a+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+$+"]); ":" validate.errors = ["+$+"]; return false; ":" var err = "+$+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}else{a+=" ) { ";var R=P;if(R)for(var O,D=-1,I=R.length-1;D<I;){O=R[D+=1];var A=e.util.getProperty(O),x=e.util.escapeQuotes(O),k=u+A;e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(E,O,e.opts.jsonPointers)),a+=" if ( "+k+" === undefined ",y&&(a+=" || ! Object.prototype.hasOwnProperty.call("+u+", '"+e.util.escapeQuotes(O)+"') "),a+=") { var err = ",!1!==e.createErrors?(a+=" { keyword: 'dependencies' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { property: '"+e.util.escapeQuotes(b)+"', missingProperty: '"+x+"', depsCount: "+P.length+", deps: '"+e.util.escapeQuotes(1==P.length?P[0]:P.join(", "))+"' } ",!1!==e.opts.messages&&(a+=" , message: 'should have ",a+=1==P.length?"property "+e.util.escapeQuotes(P[0]):"properties "+e.util.escapeQuotes(P.join(", ")),a+=" when property "+e.util.escapeQuotes(b)+" is present' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } "}}a+=" } ",h&&(d+="}",a+=" else { ")}e.errorPath=E;var q=f.baseId;for(var b in m){g=m[b];e.util.schemaHasRules(g,e.RULES.all)&&(a+=" "+p+" = true; if ( "+u+e.util.getProperty(b)+" !== undefined ",y&&(a+=" && Object.prototype.hasOwnProperty.call("+u+", '"+e.util.escapeQuotes(b)+"') "),a+=") { ",f.schema=g,f.schemaPath=n+e.util.getProperty(b),f.errSchemaPath=l+"/"+e.util.escapeFragment(b),a+=" "+e.validate(f)+" ",f.baseId=q,a+=" } ",h&&(a+=" if ("+p+") { ",d+="}"))}return h&&(a+=" "+d+" if ("+c+" == errors) {"),a=e.util.cleanUpCode(a)}},{}],23:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(o||""),c="valid"+s,f=e.opts.$data&&i&&i.$data;f&&(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ");var d="i"+s,p="schema"+s;f||(a+=" var "+p+" = validate.schema"+n+";"),a+="var "+c+";",f&&(a+=" if (schema"+s+" === undefined) "+c+" = true; else if (!Array.isArray(schema"+s+")) "+c+" = false; else {"),a+=c+" = false;for (var "+d+"=0; "+d+"<"+p+".length; "+d+"++) if (equal("+u+", "+p+"["+d+"])) { "+c+" = true; break; }",f&&(a+=" } "),a+=" if (!"+c+") { ";var m=m||[];m.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'enum' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { allowedValues: schema"+s+" } ",!1!==e.opts.messages&&(a+=" , message: 'should be equal to one of the allowed values' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var v=a;return a=m.pop(),a+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+v+"]); ":" validate.errors = ["+v+"]; return false; ":" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" }",h&&(a+=" else { "),a}},{}],24:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(o||"");if(!1===e.opts.format)return h&&(a+=" if (true) { "),a;var c,f=e.opts.$data&&i&&i.$data;f?(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ",c="schema"+s):c=i;var d=e.opts.unknownFormats,p=Array.isArray(d);if(f)a+=" var "+(m="format"+s)+" = formats["+c+"]; var "+(v="isObject"+s)+" = typeof "+m+" == 'object' && !("+m+" instanceof RegExp) && "+m+".validate; var "+(y="formatType"+s)+" = "+v+" && "+m+".type || 'string'; if ("+v+") { ",e.async&&(a+=" var async"+s+" = "+m+".async; "),a+=" "+m+" = "+m+".validate; } if ( ",f&&(a+=" ("+c+" !== undefined && typeof "+c+" != 'string') || "),a+=" (","ignore"!=d&&(a+=" ("+c+" && !"+m+" ",p&&(a+=" && self._opts.unknownFormats.indexOf("+c+") == -1 "),a+=") || "),a+=" ("+m+" && "+y+" == '"+t+"' && !(typeof "+m+" == 'function' ? ",a+=e.async?" (async"+s+" ? "+e.yieldAwait+" "+m+"("+u+") : "+m+"("+u+")) ":" "+m+"("+u+") ",a+=" : "+m+".test("+u+"))))) {";else{var m=e.formats[i];if(!m){if("ignore"==d)return console.warn('unknown format "'+i+'" ignored in schema at path "'+e.errSchemaPath+'"'),h&&(a+=" if (true) { "),a;if(p&&d.indexOf(i)>=0)return h&&(a+=" if (true) { "),a;throw new Error('unknown format "'+i+'" is used in schema at path "'+e.errSchemaPath+'"')}var v="object"==typeof m&&!(m instanceof RegExp)&&m.validate,y=v&&m.type||"string";if(v){var g=!0===m.async;m=m.validate}if(y!=t)return h&&(a+=" if (true) { "),a;if(g){if(!e.async)throw new Error("async format in sync schema");P="formats"+e.util.getProperty(i)+".validate";a+=" if (!("+e.yieldAwait+" "+P+"("+u+"))) { "}else{a+=" if (! ";var P="formats"+e.util.getProperty(i);v&&(P+=".validate"),a+="function"==typeof m?" "+P+"("+u+") ":" "+P+".test("+u+") ",a+=") { "}}var E=E||[];E.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'format' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { format: ",a+=f?""+c:""+e.util.toQuotedString(i),a+=" } ",!1!==e.opts.messages&&(a+=" , message: 'should match format \"",a+=f?"' + "+c+" + '":""+e.util.escapeQuotes(i),a+="\"' "),e.opts.verbose&&(a+=" , schema: ",a+=f?"validate.schema"+n:""+e.util.toQuotedString(i),a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var b=a;return a=E.pop(),a+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+b+"]); ":" validate.errors = ["+b+"]; return false; ":" var err = "+b+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",h&&(a+=" else { "),a}},{}],25:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(o||""),c="valid"+s,f="errs__"+s,d=e.util.copy(e),p="",m="valid"+ ++d.level,v="i"+s,y=d.dataLevel=e.dataLevel+1,g="data"+y,P=e.baseId;if(a+="var "+f+" = errors;var "+c+";",Array.isArray(i)){var E=e.schema.additionalItems;if(!1===E){a+=" "+c+" = "+u+".length <= "+i.length+"; ";var b=l;l=e.errSchemaPath+"/additionalItems",a+=" if (!"+c+") { ";var w=w||[];w.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'additionalItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { limit: "+i.length+" } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT have more than "+i.length+" items' "),e.opts.verbose&&(a+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var j=a;a=w.pop(),a+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+j+"]); ":" validate.errors = ["+j+"]; return false; ":" var err = "+j+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",l=b,h&&(p+="}",a+=" else { ")}var S=i;if(S)for(var _,x=-1,F=S.length-1;x<F;)if(_=S[x+=1],e.util.schemaHasRules(_,e.RULES.all)){a+=" "+m+" = true; if ("+u+".length > "+x+") { ";$=u+"["+x+"]";d.schema=_,d.schemaPath=n+"["+x+"]",d.errSchemaPath=l+"/"+x,d.errorPath=e.util.getPathExpr(e.errorPath,x,e.opts.jsonPointers,!0),d.dataPathArr[y]=x;R=e.validate(d);d.baseId=P,e.util.varOccurences(R,g)<2?a+=" "+e.util.varReplace(R,g,$)+" ":a+=" var "+g+" = "+$+"; "+R+" ",a+=" } ",h&&(a+=" if ("+m+") { ",p+="}")}if("object"==typeof E&&e.util.schemaHasRules(E,e.RULES.all)){d.schema=E,d.schemaPath=e.schemaPath+".additionalItems",d.errSchemaPath=e.errSchemaPath+"/additionalItems",a+=" "+m+" = true; if ("+u+".length > "+i.length+") { for (var "+v+" = "+i.length+"; "+v+" < "+u+".length; "+v+"++) { ",d.errorPath=e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers,!0);$=u+"["+v+"]";d.dataPathArr[y]=v;R=e.validate(d);d.baseId=P,e.util.varOccurences(R,g)<2?a+=" "+e.util.varReplace(R,g,$)+" ":a+=" var "+g+" = "+$+"; "+R+" ",h&&(a+=" if (!"+m+") break; "),a+=" } } ",h&&(a+=" if ("+m+") { ",p+="}")}}else if(e.util.schemaHasRules(i,e.RULES.all)){d.schema=i,d.schemaPath=n,d.errSchemaPath=l,a+=" for (var "+v+" = 0; "+v+" < "+u+".length; "+v+"++) { ",d.errorPath=e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers,!0);var $=u+"["+v+"]";d.dataPathArr[y]=v;var R=e.validate(d);d.baseId=P,e.util.varOccurences(R,g)<2?a+=" "+e.util.varReplace(R,g,$)+" ":a+=" var "+g+" = "+$+"; "+R+" ",h&&(a+=" if (!"+m+") break; "),a+=" }"}return h&&(a+=" "+p+" if ("+f+" == errors) {"),a=e.util.cleanUpCode(a)}},{}],26:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),h=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(i||""),f=e.opts.$data&&n&&n.$data;f?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ",a="schema"+o):a=n,s+="var division"+o+";if (",f&&(s+=" "+a+" !== undefined && ( typeof "+a+" != 'number' || "),s+=" (division"+o+" = "+c+" / "+a+", ",s+=e.opts.multipleOfPrecision?" Math.abs(Math.round(division"+o+") - division"+o+") > 1e-"+e.opts.multipleOfPrecision+" ":" division"+o+" !== parseInt(division"+o+") ",s+=" ) ",f&&(s+=" ) "),s+=" ) { ";var d=d||[];d.push(s),s="",!1!==e.createErrors?(s+=" { keyword: 'multipleOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(h)+" , params: { multipleOf: "+a+" } ",!1!==e.opts.messages&&(s+=" , message: 'should be multiple of ",s+=f?"' + "+a:a+"'"),e.opts.verbose&&(s+=" , schema: ",s+=f?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";var p=s;return s=d.pop(),s+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+p+"]); ":" validate.errors = ["+p+"]; return false; ":" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",u&&(s+=" else { "),s}},{}],27:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(o||""),c="errs__"+s,f=e.util.copy(e),d="valid"+ ++f.level;if(e.util.schemaHasRules(i,e.RULES.all)){f.schema=i,f.schemaPath=n,f.errSchemaPath=l,a+=" var "+c+" = errors; ";var p=e.compositeRule;e.compositeRule=f.compositeRule=!0,f.createErrors=!1;var m;f.opts.allErrors&&(m=f.opts.allErrors,f.opts.allErrors=!1),a+=" "+e.validate(f)+" ",f.createErrors=!0,m&&(f.opts.allErrors=m),e.compositeRule=f.compositeRule=p,a+=" if ("+d+") { ";var v=v||[];v.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(a+=" , message: 'should NOT be valid' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var y=a;a=v.pop(),a+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+y+"]); ":" validate.errors = ["+y+"]; return false; ":" var err = "+y+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else { errors = "+c+"; if (vErrors !== null) { if ("+c+") vErrors.length = "+c+"; else vErrors = null; } ",e.opts.allErrors&&(a+=" } ")}else a+=" var err = ",!1!==e.createErrors?(a+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(a+=" , message: 'should NOT be valid' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",h&&(a+=" if (false) { ");return a}},{}],28:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(o||""),c="valid"+s,f="errs__"+s,d=e.util.copy(e),p="",m="valid"+ ++d.level;a+="var "+f+" = errors;var prevValid"+s+" = false;var "+c+" = false;";var v=d.baseId,y=e.compositeRule;e.compositeRule=d.compositeRule=!0;var g=i;if(g)for(var P,E=-1,b=g.length-1;E<b;)P=g[E+=1],e.util.schemaHasRules(P,e.RULES.all)?(d.schema=P,d.schemaPath=n+"["+E+"]",d.errSchemaPath=l+"/"+E,a+=" "+e.validate(d)+" ",d.baseId=v):a+=" var "+m+" = true; ",E&&(a+=" if ("+m+" && prevValid"+s+") "+c+" = false; else { ",p+="}"),a+=" if ("+m+") "+c+" = prevValid"+s+" = true;";return e.compositeRule=d.compositeRule=y,a+=p+"if (!"+c+") { var err = ",!1!==e.createErrors?(a+=" { keyword: 'oneOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(a+=" , message: 'should match exactly one schema in oneOf' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&h&&(a+=e.async?" throw new ValidationError(vErrors); ":" validate.errors = vErrors; return false; "),a+="} else { errors = "+f+"; if (vErrors !== null) { if ("+f+") vErrors.length = "+f+"; else vErrors = null; }",e.opts.allErrors&&(a+=" } "),a}},{}],29:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),h=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(i||""),f=e.opts.$data&&n&&n.$data;f?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ",a="schema"+o):a=n;var d=f?"(new RegExp("+a+"))":e.usePattern(n);s+="if ( ",f&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'string') || "),s+=" !"+d+".test("+c+") ) { ";var p=p||[];p.push(s),s="",!1!==e.createErrors?(s+=" { keyword: 'pattern' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(h)+" , params: { pattern: ",s+=f?""+a:""+e.util.toQuotedString(n),s+=" } ",!1!==e.opts.messages&&(s+=" , message: 'should match pattern \"",s+=f?"' + "+a+" + '":""+e.util.escapeQuotes(n),s+="\"' "),e.opts.verbose&&(s+=" , schema: ",s+=f?"validate.schema"+l:""+e.util.toQuotedString(n),s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";var m=s;return s=p.pop(),s+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",u&&(s+=" else { "),s}},{}],30:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(o||""),c="valid"+s,f="errs__"+s,d=e.util.copy(e),p="",m="valid"+ ++d.level,v="key"+s,y="idx"+s,g=d.dataLevel=e.dataLevel+1,P="data"+g,E="dataProperties"+s,b=Object.keys(i||{}),w=e.schema.patternProperties||{},j=Object.keys(w),S=e.schema.additionalProperties,_=b.length||j.length,x=!1===S,F="object"==typeof S&&Object.keys(S).length,$=e.opts.removeAdditional,R=x||F||$,O=e.opts.ownProperties,D=e.baseId,I=e.schema.required;if(I&&(!e.opts.v5||!I.$data)&&I.length<e.opts.loopRequired)var A=e.util.toHash(I);if(e.opts.patternGroups)var k=e.schema.patternGroups||{},q=Object.keys(k);if(a+="var "+f+" = errors;var "+m+" = true;",O&&(a+=" var "+E+" = undefined;"),R){if(a+=O?" "+E+" = "+E+" || Object.keys("+u+"); for (var "+y+"=0; "+y+"<"+E+".length; "+y+"++) { var "+v+" = "+E+"["+y+"]; ":" for (var "+v+" in "+u+") { ",_){if(a+=" var isAdditional"+s+" = !(false ",b.length)if(b.length>5)a+=" || validate.schema"+n+"["+v+"] ";else{var C=b;if(C)for(var L=-1,z=C.length-1;L<z;)J=C[L+=1],a+=" || "+v+" == "+e.util.toQuotedString(J)+" "}if(j.length){var Q=j;if(Q)for(var U=-1,V=Q.length-1;U<V;)oe=Q[U+=1],a+=" || "+e.usePattern(oe)+".test("+v+") "}if(e.opts.patternGroups&&q.length){var N=q;if(N)for(var U=-1,T=N.length-1;U<T;)he=N[U+=1],a+=" || "+e.usePattern(he)+".test("+v+") "}a+=" ); if (isAdditional"+s+") { "}if("all"==$)a+=" delete "+u+"["+v+"]; ";else{var M=e.errorPath,B="' + "+v+" + '";if(e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers)),x)if($)a+=" delete "+u+"["+v+"]; ";else{a+=" "+m+" = false; ";te=l;l=e.errSchemaPath+"/additionalProperties",(Ee=Ee||[]).push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'additionalProperties' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { additionalProperty: '"+B+"' } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT have additional properties' "),e.opts.verbose&&(a+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";be=a;a=Ee.pop(),a+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+be+"]); ":" validate.errors = ["+be+"]; return false; ":" var err = "+be+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l=te,h&&(a+=" break; ")}else if(F)if("failing"==$){a+=" var "+f+" = errors; ";var H=e.compositeRule;e.compositeRule=d.compositeRule=!0,d.schema=S,d.schemaPath=e.schemaPath+".additionalProperties",d.errSchemaPath=e.errSchemaPath+"/additionalProperties",d.errorPath=e.opts._errorDataPathProperty?e.errorPath:e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers);X=u+"["+v+"]";d.dataPathArr[g]=v;pe=e.validate(d);d.baseId=D,e.util.varOccurences(pe,P)<2?a+=" "+e.util.varReplace(pe,P,X)+" ":a+=" var "+P+" = "+X+"; "+pe+" ",a+=" if (!"+m+") { errors = "+f+"; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete "+u+"["+v+"]; } ",e.compositeRule=d.compositeRule=H}else{d.schema=S,d.schemaPath=e.schemaPath+".additionalProperties",d.errSchemaPath=e.errSchemaPath+"/additionalProperties",d.errorPath=e.opts._errorDataPathProperty?e.errorPath:e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers);X=u+"["+v+"]";d.dataPathArr[g]=v;pe=e.validate(d);d.baseId=D,e.util.varOccurences(pe,P)<2?a+=" "+e.util.varReplace(pe,P,X)+" ":a+=" var "+P+" = "+X+"; "+pe+" ",h&&(a+=" if (!"+m+") break; ")}e.errorPath=M}_&&(a+=" } "),a+=" } ",h&&(a+=" if ("+m+") { ",p+="}")}var K=e.opts.useDefaults&&!e.compositeRule;if(b.length){var G=b;if(G)for(var J,Z=-1,Y=G.length-1;Z<Y;){de=i[J=G[Z+=1]];if(e.util.schemaHasRules(de,e.RULES.all)){var W=e.util.getProperty(J),X=u+W,ee=K&&void 0!==de.default;d.schema=de,d.schemaPath=n+W,d.errSchemaPath=l+"/"+e.util.escapeFragment(J),d.errorPath=e.util.getPath(e.errorPath,J,e.opts.jsonPointers),d.dataPathArr[g]=e.util.toQuotedString(J);pe=e.validate(d);if(d.baseId=D,e.util.varOccurences(pe,P)<2){pe=e.util.varReplace(pe,P,X);re=X}else{var re=P;a+=" var "+P+" = "+X+"; "}if(ee)a+=" "+pe+" ";else{if(A&&A[J]){a+=" if ( "+re+" === undefined ",O&&(a+=" || ! Object.prototype.hasOwnProperty.call("+u+", '"+e.util.escapeQuotes(J)+"') "),a+=") { "+m+" = false; ";var M=e.errorPath,te=l,ae=e.util.escapeQuotes(J);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(M,J,e.opts.jsonPointers)),l=e.errSchemaPath+"/required",(Ee=Ee||[]).push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+ae+"' } ",!1!==e.opts.messages&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+ae+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";be=a;a=Ee.pop(),a+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+be+"]); ":" validate.errors = ["+be+"]; return false; ":" var err = "+be+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l=te,e.errorPath=M,a+=" } else { "}else h?(a+=" if ( "+re+" === undefined ",O&&(a+=" || ! Object.prototype.hasOwnProperty.call("+u+", '"+e.util.escapeQuotes(J)+"') "),a+=") { "+m+" = true; } else { "):(a+=" if ("+re+" !== undefined ",O&&(a+=" && Object.prototype.hasOwnProperty.call("+u+", '"+e.util.escapeQuotes(J)+"') "),a+=" ) { ");a+=" "+pe+" } "}}h&&(a+=" if ("+m+") { ",p+="}")}}if(j.length){var se=j;if(se)for(var oe,ie=-1,ne=se.length-1;ie<ne;){de=w[oe=se[ie+=1]];if(e.util.schemaHasRules(de,e.RULES.all)){d.schema=de,d.schemaPath=e.schemaPath+".patternProperties"+e.util.getProperty(oe),d.errSchemaPath=e.errSchemaPath+"/patternProperties/"+e.util.escapeFragment(oe),a+=O?" "+E+" = "+E+" || Object.keys("+u+"); for (var "+y+"=0; "+y+"<"+E+".length; "+y+"++) { var "+v+" = "+E+"["+y+"]; ":" for (var "+v+" in "+u+") { ",a+=" if ("+e.usePattern(oe)+".test("+v+")) { ",d.errorPath=e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers);X=u+"["+v+"]";d.dataPathArr[g]=v;pe=e.validate(d);d.baseId=D,e.util.varOccurences(pe,P)<2?a+=" "+e.util.varReplace(pe,P,X)+" ":a+=" var "+P+" = "+X+"; "+pe+" ",h&&(a+=" if (!"+m+") break; "),a+=" } ",h&&(a+=" else "+m+" = true; "),a+=" } ",h&&(a+=" if ("+m+") { ",p+="}")}}}if(e.opts.patternGroups&&q.length){var le=q;if(le)for(var he,ue=-1,ce=le.length-1;ue<ce;){var fe=k[he=le[ue+=1]],de=fe.schema;if(e.util.schemaHasRules(de,e.RULES.all)){d.schema=de,d.schemaPath=e.schemaPath+".patternGroups"+e.util.getProperty(he)+".schema",d.errSchemaPath=e.errSchemaPath+"/patternGroups/"+e.util.escapeFragment(he)+"/schema",a+=" var pgPropCount"+s+" = 0; ",a+=O?" "+E+" = "+E+" || Object.keys("+u+"); for (var "+y+"=0; "+y+"<"+E+".length; "+y+"++) { var "+v+" = "+E+"["+y+"]; ":" for (var "+v+" in "+u+") { ",a+=" if ("+e.usePattern(he)+".test("+v+")) { pgPropCount"+s+"++; ",d.errorPath=e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers);X=u+"["+v+"]";d.dataPathArr[g]=v;var pe=e.validate(d);d.baseId=D,e.util.varOccurences(pe,P)<2?a+=" "+e.util.varReplace(pe,P,X)+" ":a+=" var "+P+" = "+X+"; "+pe+" ",h&&(a+=" if (!"+m+") break; "),a+=" } ",h&&(a+=" else "+m+" = true; "),a+=" } ",h&&(a+=" if ("+m+") { ",p+="}");var me=fe.minimum,ve=fe.maximum;if(void 0!==me||void 0!==ve){a+=" var "+c+" = true; ";te=l;if(void 0!==me){var ye=me,ge="minimum",Pe="less";a+=" "+c+" = pgPropCount"+s+" >= "+me+"; ",l=e.errSchemaPath+"/patternGroups/minimum",a+=" if (!"+c+") { ",(Ee=Ee||[]).push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'patternGroups' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { reason: '"+ge+"', limit: "+ye+", pattern: '"+e.util.escapeQuotes(he)+"' } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT have "+Pe+" than "+ye+' properties matching pattern "'+e.util.escapeQuotes(he)+"\"' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";be=a;a=Ee.pop(),a+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+be+"]); ":" validate.errors = ["+be+"]; return false; ":" var err = "+be+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",void 0!==ve&&(a+=" else ")}if(void 0!==ve){var ye=ve,ge="maximum",Pe="more";a+=" "+c+" = pgPropCount"+s+" <= "+ve+"; ",l=e.errSchemaPath+"/patternGroups/maximum",a+=" if (!"+c+") { ";var Ee=Ee||[];Ee.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'patternGroups' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { reason: '"+ge+"', limit: "+ye+", pattern: '"+e.util.escapeQuotes(he)+"' } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT have "+Pe+" than "+ye+' properties matching pattern "'+e.util.escapeQuotes(he)+"\"' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var be=a;a=Ee.pop(),a+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+be+"]); ":" validate.errors = ["+be+"]; return false; ":" var err = "+be+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } "}l=te,h&&(a+=" if ("+c+") { ",p+="}")}}}}return h&&(a+=" "+p+" if ("+f+" == errors) {"),a=e.util.cleanUpCode(a)}},{}],31:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(o||""),c="errs__"+s,f=e.util.copy(e),d="valid"+ ++f.level;if(e.util.schemaHasRules(i,e.RULES.all)){f.schema=i,f.schemaPath=n,f.errSchemaPath=l;var p="key"+s,m="idx"+s,v="i"+s,y="' + "+p+" + '",g="data"+(f.dataLevel=e.dataLevel+1),P="dataProperties"+s,E=e.opts.ownProperties,b=e.baseId;a+=" var "+c+" = errors; ",E&&(a+=" var "+P+" = undefined; "),a+=E?" "+P+" = "+P+" || Object.keys("+u+"); for (var "+m+"=0; "+m+"<"+P+".length; "+m+"++) { var "+p+" = "+P+"["+m+"]; ":" for (var "+p+" in "+u+") { ",a+=" var startErrs"+s+" = errors; ";var w=p,j=e.compositeRule;e.compositeRule=f.compositeRule=!0;var S=e.validate(f);f.baseId=b,e.util.varOccurences(S,g)<2?a+=" "+e.util.varReplace(S,g,w)+" ":a+=" var "+g+" = "+w+"; "+S+" ",e.compositeRule=f.compositeRule=j,a+=" if (!"+d+") { for (var "+v+"=startErrs"+s+"; "+v+"<errors; "+v+"++) { vErrors["+v+"].propertyName = "+p+"; } var err = ",!1!==e.createErrors?(a+=" { keyword: 'propertyNames' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { propertyName: '"+y+"' } ",!1!==e.opts.messages&&(a+=" , message: 'property name \\'"+y+"\\' is invalid' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&h&&(a+=e.async?" throw new ValidationError(vErrors); ":" validate.errors = vErrors; return false; "),h&&(a+=" break; "),a+=" } }"}return h&&(a+=" if ("+c+" == errors) {"),a=e.util.cleanUpCode(a)}},{}],32:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s,o=" ",i=e.level,n=e.dataLevel,l=e.schema[r],h=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(n||""),f="valid"+i;if("#"==l||"#/"==l)e.isRoot?(a=e.async,s="validate"):(a=!0===e.root.schema.$async,s="root.refVal[0]");else{var d=e.resolveRef(e.baseId,l,e.isRoot);if(void 0===d){var p=e.MissingRefError.message(e.baseId,l);if("fail"==e.opts.missingRefs){console.error(p),(g=g||[]).push(o),o="",!1!==e.createErrors?(o+=" { keyword: '$ref' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(h)+" , params: { ref: '"+e.util.escapeQuotes(l)+"' } ",!1!==e.opts.messages&&(o+=" , message: 'can\\'t resolve reference "+e.util.escapeQuotes(l)+"' "),e.opts.verbose&&(o+=" , schema: "+e.util.toQuotedString(l)+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),o+=" } "):o+=" {} ";var m=o;o=g.pop(),o+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",u&&(o+=" if (false) { ")}else{if("ignore"!=e.opts.missingRefs)throw new e.MissingRefError(e.baseId,l,p);console.warn(p),u&&(o+=" if (true) { ")}}else if(d.inline){var v=e.util.copy(e),y="valid"+ ++v.level;v.schema=d.schema,v.schemaPath="",v.errSchemaPath=l,o+=" "+e.validate(v).replace(/validate\.schema/g,d.code)+" ",u&&(o+=" if ("+y+") { ")}else a=!0===d.$async,s=d.code}if(s){var g=g||[];g.push(o),o="",o+=e.opts.passContext?" "+s+".call(this, ":" "+s+"( ",o+=" "+c+", (dataPath || '')",'""'!=e.errorPath&&(o+=" + "+e.errorPath);var P=o+=" , "+(n?"data"+(n-1||""):"parentData")+" , "+(n?e.dataPathArr[n]:"parentDataProperty")+", rootData) ";if(o=g.pop(),a){if(!e.async)throw new Error("async schema referenced by sync schema");u&&(o+=" var "+f+"; "),o+=" try { "+e.yieldAwait+" "+P+"; ",u&&(o+=" "+f+" = true; "),o+=" } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ",u&&(o+=" "+f+" = false; "),o+=" } ",u&&(o+=" if ("+f+") { ")}else o+=" if (!"+P+") { if (vErrors === null) vErrors = "+s+".errors; else vErrors = vErrors.concat("+s+".errors); errors = vErrors.length; } ",u&&(o+=" else { ")}return o}},{}],33:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(o||""),c="valid"+s,f=e.opts.$data&&i&&i.$data;f&&(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ");var d="schema"+s;if(!f)if(i.length<e.opts.loopRequired&&e.schema.properties&&Object.keys(e.schema.properties).length){var p=[],m=i;if(m)for(var v,y=-1,g=m.length-1;y<g;){v=m[y+=1];var P=e.schema.properties[v];P&&e.util.schemaHasRules(P,e.RULES.all)||(p[p.length]=v)}}else p=i;if(f||p.length){var E=e.errorPath,b=f||p.length>=e.opts.loopRequired,w=e.opts.ownProperties;if(h)if(a+=" var missing"+s+"; ",b){f||(a+=" var "+d+" = validate.schema"+n+"; ");R="' + "+($="schema"+s+"["+(S="i"+s)+"]")+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(E,$,e.opts.jsonPointers)),a+=" var "+c+" = true; ",f&&(a+=" if (schema"+s+" === undefined) "+c+" = true; else if (!Array.isArray(schema"+s+")) "+c+" = false; else {"),a+=" for (var "+S+" = 0; "+S+" < "+d+".length; "+S+"++) { "+c+" = "+u+"["+d+"["+S+"]] !== undefined ",w&&(a+=" && Object.prototype.hasOwnProperty.call("+u+", "+d+"["+S+"]) "),a+="; if (!"+c+") break; } ",f&&(a+=" } "),a+=" if (!"+c+") { ",(x=x||[]).push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+R+"' } ",!1!==e.opts.messages&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+R+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";F=a;a=x.pop(),a+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+F+"]); ":" validate.errors = ["+F+"]; return false; ":" var err = "+F+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else { "}else{a+=" if ( ";var j=p;if(j)for(var S=-1,_=j.length-1;S<_;)D=j[S+=1],S&&(a+=" || "),a+=" ( ( "+(q=u+(k=e.util.getProperty(D)))+" === undefined ",w&&(a+=" || ! Object.prototype.hasOwnProperty.call("+u+", '"+e.util.escapeQuotes(D)+"') "),a+=") && (missing"+s+" = "+e.util.toQuotedString(e.opts.jsonPointers?D:k)+") ) ";a+=") { ";R="' + "+($="missing"+s)+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.opts.jsonPointers?e.util.getPathExpr(E,$,!0):E+" + "+$);var x=x||[];x.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+R+"' } ",!1!==e.opts.messages&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+R+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var F=a;a=x.pop(),a+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+F+"]); ":" validate.errors = ["+F+"]; return false; ":" var err = "+F+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else { "}else if(b){f||(a+=" var "+d+" = validate.schema"+n+"; ");var $="schema"+s+"["+(S="i"+s)+"]",R="' + "+$+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(E,$,e.opts.jsonPointers)),f&&(a+=" if ("+d+" && !Array.isArray("+d+")) { var err = ",!1!==e.createErrors?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+R+"' } ",!1!==e.opts.messages&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+R+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if ("+d+" !== undefined) { "),a+=" for (var "+S+" = 0; "+S+" < "+d+".length; "+S+"++) { if ("+u+"["+d+"["+S+"]] === undefined ",w&&(a+=" || ! Object.prototype.hasOwnProperty.call("+u+", "+d+"["+S+"]) "),a+=") { var err = ",!1!==e.createErrors?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+R+"' } ",!1!==e.opts.messages&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+R+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } ",f&&(a+=" } ")}else{var O=p;if(O)for(var D,I=-1,A=O.length-1;I<A;){D=O[I+=1];var k=e.util.getProperty(D),R=e.util.escapeQuotes(D),q=u+k;e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(E,D,e.opts.jsonPointers)),a+=" if ( "+q+" === undefined ",w&&(a+=" || ! Object.prototype.hasOwnProperty.call("+u+", '"+e.util.escapeQuotes(D)+"') "),a+=") { var err = ",!1!==e.createErrors?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+R+"' } ",!1!==e.opts.messages&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+R+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } "}}e.errorPath=E}else h&&(a+=" if (true) {");return a}},{}],34:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),h=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(i||""),f="valid"+o,d=e.opts.$data&&n&&n.$data;if(d?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ",a="schema"+o):a=n,(n||d)&&!1!==e.opts.uniqueItems){d&&(s+=" var "+f+"; if ("+a+" === false || "+a+" === undefined) "+f+" = true; else if (typeof "+a+" != 'boolean') "+f+" = false; else { "),s+=" var "+f+" = true; if ("+c+".length > 1) { var i = "+c+".length, j; outer: for (;i--;) { for (j = i; j--;) { if (equal("+c+"[i], "+c+"[j])) { "+f+" = false; break outer; } } } } ",d&&(s+=" } "),s+=" if (!"+f+") { ";var p=p||[];p.push(s),s="",!1!==e.createErrors?(s+=" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(h)+" , params: { i: i, j: j } ",!1!==e.opts.messages&&(s+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(s+=" , schema: ",s+=d?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";var m=s;s=p.pop(),s+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } ",u&&(s+=" else { ")}else u&&(s+=" if (true) { ");return s}},{}],35:[function(e,r,t){"use strict";r.exports=function(e,r,t){function a(e){for(var r=e.rules,t=0;t<r.length;t++)if(s(r[t]))return!0}function s(r){return void 0!==e.schema[r.keyword]||r.implements&&o(r)}function o(r){for(var t=r.implements,a=0;a<t.length;a++)if(void 0!==e.schema[t[a]])return!0}var i="",n=!0===e.schema.$async,l=e.util.schemaHasRulesExcept(e.schema,e.RULES.all,"$ref"),h=e.self._getId(e.schema);if(e.isTop){if(n){e.async=!0;var u="es7"==e.opts.async;e.yieldAwait=u?"await":"yield"}i+=" var validate = ",n?u?i+=" (async function ":("*"!=e.opts.async&&(i+="co.wrap"),i+="(function* "):i+=" (function ",i+=" (data, dataPath, parentData, parentDataProperty, rootData) { 'use strict'; ",h&&(e.opts.sourceCode||e.opts.processCode)&&(i+=" /*# sourceURL="+h+" */ ")}if("boolean"==typeof e.schema||!l&&!e.schema.$ref){var c=e.level,f=e.dataLevel,d=e.schema["false schema"],p=e.schemaPath+e.util.getProperty("false schema"),m=e.errSchemaPath+"/false schema",v=!e.opts.allErrors,y="data"+(f||""),g="valid"+c;if(!1===e.schema){e.isTop?v=!0:i+=" var "+g+" = false; ",(X=X||[]).push(i),i="",!1!==e.createErrors?(i+=" { keyword: '"+(E||"false schema")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(m)+" , params: {} ",!1!==e.opts.messages&&(i+=" , message: 'boolean schema is false' "),e.opts.verbose&&(i+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+y+" "),i+=" } "):i+=" {} ";ee=i;i=X.pop(),i+=!e.compositeRule&&v?e.async?" throw new ValidationError(["+ee+"]); ":" validate.errors = ["+ee+"]; return false; ":" var err = "+ee+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}else i+=e.isTop?n?" return data; ":" validate.errors = null; return true; ":" var "+g+" = true; ";return e.isTop&&(i+=" }); return validate; "),i}if(e.isTop){var P=e.isTop,c=e.level=0,f=e.dataLevel=0,y="data";e.rootId=e.resolve.fullPath(e.self._getId(e.root.schema)),e.baseId=e.baseId||e.rootId,delete e.isTop,e.dataPathArr=[void 0],i+=" var vErrors = null; ",i+=" var errors = 0; ",i+=" if (rootData === undefined) rootData = data; "}else{var c=e.level,y="data"+((f=e.dataLevel)||"");if(h&&(e.baseId=e.resolve.url(e.baseId,h)),n&&!e.async)throw new Error("async schema in sync schema");i+=" var errs_"+c+" = errors;"}var E,g="valid"+c,v=!e.opts.allErrors,b="",w="",j=e.schema.type,S=Array.isArray(j);if(S&&1==j.length&&(j=j[0],S=!1),e.schema.$ref&&l){if("fail"==e.opts.extendRefs)throw new Error('$ref: validation keywords used in schema at path "'+e.errSchemaPath+'" (see option extendRefs)');!0!==e.opts.extendRefs&&(l=!1,console.warn('$ref: keywords ignored in schema at path "'+e.errSchemaPath+'"'))}if(j){if(e.opts.coerceTypes)var _=e.util.coerceToTypes(e.opts.coerceTypes,j);L=e.RULES.types[j];if(_||S||!0===L||L&&!a(L)){var p=e.schemaPath+".type",m=e.errSchemaPath+"/type",p=e.schemaPath+".type",m=e.errSchemaPath+"/type",x=S?"checkDataTypes":"checkDataType";if(i+=" if ("+e.util[x](j,y,!0)+") { ",_){var F="dataType"+c,$="coerced"+c;i+=" var "+F+" = typeof "+y+"; ","array"==e.opts.coerceTypes&&(i+=" if ("+F+" == 'object' && Array.isArray("+y+")) "+F+" = 'array'; "),i+=" var "+$+" = undefined; ";var R="",O=_;if(O)for(var D,I=-1,A=O.length-1;I<A;)D=O[I+=1],I&&(i+=" if ("+$+" === undefined) { ",R+="}"),"array"==e.opts.coerceTypes&&"array"!=D&&(i+=" if ("+F+" == 'array' && "+y+".length == 1) { "+$+" = "+y+" = "+y+"[0]; "+F+" = typeof "+y+"; } "),"string"==D?i+=" if ("+F+" == 'number' || "+F+" == 'boolean') "+$+" = '' + "+y+"; else if ("+y+" === null) "+$+" = ''; ":"number"==D||"integer"==D?(i+=" if ("+F+" == 'boolean' || "+y+" === null || ("+F+" == 'string' && "+y+" && "+y+" == +"+y+" ","integer"==D&&(i+=" && !("+y+" % 1)"),i+=")) "+$+" = +"+y+"; "):"boolean"==D?i+=" if ("+y+" === 'false' || "+y+" === 0 || "+y+" === null) "+$+" = false; else if ("+y+" === 'true' || "+y+" === 1) "+$+" = true; ":"null"==D?i+=" if ("+y+" === '' || "+y+" === 0 || "+y+" === false) "+$+" = null; ":"array"==e.opts.coerceTypes&&"array"==D&&(i+=" if ("+F+" == 'string' || "+F+" == 'number' || "+F+" == 'boolean' || "+y+" == null) "+$+" = ["+y+"]; ");i+=" "+R+" if ("+$+" === undefined) { ",(X=X||[]).push(i),i="",!1!==e.createErrors?(i+=" { keyword: '"+(E||"type")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(m)+" , params: { type: '",i+=S?""+j.join(","):""+j,i+="' } ",!1!==e.opts.messages&&(i+=" , message: 'should be ",i+=S?""+j.join(","):""+j,i+="' "),e.opts.verbose&&(i+=" , schema: validate.schema"+p+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+y+" "),i+=" } "):i+=" {} ";ee=i;i=X.pop(),i+=!e.compositeRule&&v?e.async?" throw new ValidationError(["+ee+"]); ":" validate.errors = ["+ee+"]; return false; ":" var err = "+ee+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" } else { ";var k=f?"data"+(f-1||""):"parentData",q=f?e.dataPathArr[f]:"parentDataProperty";i+=" "+y+" = "+$+"; ",f||(i+="if ("+k+" !== undefined)"),i+=" "+k+"["+q+"] = "+$+"; } "}else{(X=X||[]).push(i),i="",!1!==e.createErrors?(i+=" { keyword: '"+(E||"type")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(m)+" , params: { type: '",i+=S?""+j.join(","):""+j,i+="' } ",!1!==e.opts.messages&&(i+=" , message: 'should be ",i+=S?""+j.join(","):""+j,i+="' "),e.opts.verbose&&(i+=" , schema: validate.schema"+p+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+y+" "),i+=" } "):i+=" {} ";ee=i;i=X.pop(),i+=!e.compositeRule&&v?e.async?" throw new ValidationError(["+ee+"]); ":" validate.errors = ["+ee+"]; return false; ":" var err = "+ee+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}i+=" } "}}if(e.schema.$ref&&!l)i+=" "+e.RULES.all.$ref.code(e,"$ref")+" ",v&&(i+=" } if (errors === ",i+=P?"0":"errs_"+c,i+=") { ",w+="}");else{e.opts.v5&&e.schema.patternGroups&&console.warn('keyword "patternGroups" is deprecated and disabled. Use option patternGroups: true to enable.');var C=e.RULES;if(C)for(var L,z=-1,Q=C.length-1;z<Q;)if(L=C[z+=1],a(L)){if(L.type&&(i+=" if ("+e.util.checkDataType(L.type,y)+") { "),e.opts.useDefaults&&!e.compositeRule)if("object"==L.type&&e.schema.properties){var d=e.schema.properties,U=Object.keys(d);if(U)for(var V,N=-1,T=U.length-1;N<T;)void 0!==(B=d[V=U[N+=1]]).default&&(i+=" if ("+(K=y+e.util.getProperty(V))+" === undefined) "+K+" = ",i+="shared"==e.opts.useDefaults?" "+e.useDefault(B.default)+" ":" "+JSON.stringify(B.default)+" ",i+="; ")}else if("array"==L.type&&Array.isArray(e.schema.items)){var M=e.schema.items;if(M)for(var B,I=-1,H=M.length-1;I<H;)if(void 0!==(B=M[I+=1]).default){var K=y+"["+I+"]";i+=" if ("+K+" === undefined) "+K+" = ",i+="shared"==e.opts.useDefaults?" "+e.useDefault(B.default)+" ":" "+JSON.stringify(B.default)+" ",i+="; "}}var G=L.rules;if(G)for(var J,Z=-1,Y=G.length-1;Z<Y;)if(J=G[Z+=1],s(J)){var W=J.code(e,J.keyword,L.type);W&&(i+=" "+W+" ",v&&(b+="}"))}if(v&&(i+=" "+b+" ",b=""),L.type&&(i+=" } ",j&&j===L.type&&!_)){i+=" else { ";var p=e.schemaPath+".type",m=e.errSchemaPath+"/type",X=X||[];X.push(i),i="",!1!==e.createErrors?(i+=" { keyword: '"+(E||"type")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(m)+" , params: { type: '",i+=S?""+j.join(","):""+j,i+="' } ",!1!==e.opts.messages&&(i+=" , message: 'should be ",i+=S?""+j.join(","):""+j,i+="' "),e.opts.verbose&&(i+=" , schema: validate.schema"+p+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+y+" "),i+=" } "):i+=" {} ";var ee=i;i=X.pop(),i+=!e.compositeRule&&v?e.async?" throw new ValidationError(["+ee+"]); ":" validate.errors = ["+ee+"]; return false; ":" var err = "+ee+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" } "}v&&(i+=" if (errors === ",i+=P?"0":"errs_"+c,i+=") { ",w+="}")}}return v&&(i+=" "+w+" "),P?(n?(i+=" if (errors === 0) return data; ",i+=" else throw new ValidationError(vErrors); "):(i+=" validate.errors = vErrors; ",i+=" return errors === 0; "),i+=" }); return validate;"):i+=" var "+g+" = errors === errs_"+c+";",i=e.util.cleanUpCode(i),P&&(i=e.util.finalCleanUpCode(i,n)),i}},{}],36:[function(e,r,t){"use strict";function a(e,r){function t(e,r,t){for(var a,o=0;o<s.length;o++){var i=s[o];if(i.type==r){a=i;break}}a||(a={type:r,rules:[]},s.push(a));var l={keyword:e,definition:t,custom:!0,code:n,implements:t.implements};a.rules.push(l),s.custom[e]=l}function a(e){if(!s.types[e])throw new Error("Unknown type "+e)}var s=this.RULES;if(s.keywords[e])throw new Error("Keyword "+e+" is already defined");if(!i.test(e))throw new Error("Keyword "+e+" is not a valid identifier");if(r){if(r.macro&&void 0!==r.valid)throw new Error('"valid" option cannot be used with macro keywords');var o=r.type;if(Array.isArray(o)){var l,h=o.length;for(l=0;l<h;l++)a(o[l]);for(l=0;l<h;l++)t(e,o[l],r)}else o&&a(o),t(e,o,r);var u=!0===r.$data&&this._opts.$data;if(u&&!r.validate)throw new Error('$data support: "validate" function is not defined');var c=r.metaSchema;c&&(u&&(c={anyOf:[c,{$ref:"https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/$data.json#"}]}),r.validateSchema=this.compile(c,!0))}s.keywords[e]=s.all[e]=!0}function s(e){var r=this.RULES.custom[e];return r?r.definition:this.RULES.keywords[e]||!1}function o(e){var r=this.RULES;delete r.keywords[e],delete r.all[e],delete r.custom[e];for(var t=0;t<r.length;t++)for(var a=r[t].rules,s=0;s<a.length;s++)if(a[s].keyword==e){a.splice(s,1);break}}var i=/^[a-z_$][a-z0-9_$-]*$/i,n=e("./dotjs/custom");r.exports={add:a,get:s,remove:o}},{"./dotjs/custom":21}],37:[function(e,r,t){"use strict";r.exports=function(e){var r=e._opts.defaultMeta,t="string"==typeof r?{$ref:r}:e.getSchema("http://json-schema.org/draft-06/schema")?{$ref:"http://json-schema.org/draft-06/schema"}:{};e.addKeyword("patternGroups",{metaSchema:{type:"object",additionalProperties:{type:"object",required:["schema"],properties:{maximum:{type:"integer",minimum:0},minimum:{type:"integer",minimum:0},schema:t},additionalProperties:!1}}}),e.RULES.all.properties.implements.push("patternGroups")}},{}],38:[function(e,r,t){r.exports={$schema:"http://json-schema.org/draft-06/schema#",$id:"https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/$data.json#",description:"Meta-schema for $data reference (JSON-schema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}},{}],39:[function(e,r,t){r.exports={$schema:"http://json-schema.org/draft-06/schema#",$id:"http://json-schema.org/draft-06/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},title:{type:"string"},description:{type:"string"},default:{},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:{}},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:{},enum:{type:"array",minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:{}}},{}],40:[function(e,r,t){function a(e){var r=this,t=f.call(arguments,1);return new Promise(function(a,o){function i(r){var t;try{t=e.next(r)}catch(e){return o(e)}h(t)}function n(r){var t;try{t=e.throw(r)}catch(e){return o(e)}h(t)}function h(e){if(e.done)return a(e.value);var t=s.call(r,e.value);return t&&l(t)?t.then(i,n):n(new TypeError('You may only yield a function, promise, generator, array, or object, but the following object was passed: "'+String(e.value)+'"'))}if("function"==typeof e&&(e=e.apply(r,t)),!e||"function"!=typeof e.next)return a(e);i()})}function s(e){return e?l(e)?e:u(e)||h(e)?a.call(this,e):"function"==typeof e?o.call(this,e):Array.isArray(e)?i.call(this,e):c(e)?n.call(this,e):e:e}function o(e){var r=this;return new Promise(function(t,a){e.call(r,function(e,r){if(e)return a(e);arguments.length>2&&(r=f.call(arguments,1)),t(r)})})}function i(e){return Promise.all(e.map(s,this))}function n(e){for(var r=new e.constructor,t=Object.keys(e),a=[],o=0;o<t.length;o++){var i=t[o],n=s.call(this,e[i]);n&&l(n)?function(e,t){r[t]=void 0,a.push(e.then(function(e){r[t]=e}))}(n,i):r[i]=e[i]}return Promise.all(a).then(function(){return r})}function l(e){return"function"==typeof e.then}function h(e){return"function"==typeof e.next&&"function"==typeof e.throw}function u(e){var r=e.constructor;return!!r&&("GeneratorFunction"===r.name||"GeneratorFunction"===r.displayName||h(r.prototype))}function c(e){return Object==e.constructor}var f=Array.prototype.slice;r.exports=a.default=a.co=a,a.wrap=function(e){function r(){return a.call(this,e.apply(this,arguments))}return r.__generatorFunction__=e,r}},{}],41:[function(e,r,t){"use strict";r.exports=function e(r,t){if(r===t)return!0;var a,s=Array.isArray(r),o=Array.isArray(t);if(s&&o){if(r.length!=t.length)return!1;for(a=0;a<r.length;a++)if(!e(r[a],t[a]))return!1;return!0}if(s!=o)return!1;if(r&&t&&"object"==typeof r&&"object"==typeof t){var i=Object.keys(r);if(i.length!==Object.keys(t).length)return!1;var n=r instanceof Date,l=t instanceof Date;if(n&&l)return r.getTime()==t.getTime();if(n!=l)return!1;var h=r instanceof RegExp,u=t instanceof RegExp;if(h&&u)return r.toString()==t.toString();if(h!=u)return!1;for(a=0;a<i.length;a++)if(!Object.prototype.hasOwnProperty.call(t,i[a]))return!1;for(a=0;a<i.length;a++)if(!e(r[i[a]],t[i[a]]))return!1;return!0}return!1}},{}],42:[function(e,r,t){"use strict";function a(e,r,t,i,n,l,h,u,c){if(t&&"object"==typeof t&&!Array.isArray(t)){r(t,i,n,l,h,u,c);for(var f in t){var d=t[f];if(Array.isArray(d)){if(f in o.arrayKeywords)for(var p=0;p<d.length;p++)a(e,r,d[p],i+"/"+f+"/"+p,n,i,f,t,p)}else if(f in o.propsKeywords){if(d&&"object"==typeof d)for(var m in d)a(e,r,d[m],i+"/"+f+"/"+s(m),n,i,f,t,m)}else(f in o.keywords||e.allKeys&&!(f in o.skipKeywords))&&a(e,r,d,i+"/"+f,n,i,f,t)}}}function s(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}var o=r.exports=function(e,r,t){"function"==typeof r&&(t=r,r={}),a(r,t,e,"",e)};o.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0},o.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0},o.propsKeywords={definitions:!0,properties:!0,patternProperties:!0,dependencies:!0},o.skipKeywords={enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0}},{}],43:[function(e,r,t){var a="undefined"!=typeof JSON?JSON:e("jsonify");r.exports=function(e,r){r||(r={}),"function"==typeof r&&(r={cmp:r});var t=r.space||"";"number"==typeof t&&(t=Array(t+1).join(" "));var i="boolean"==typeof r.cycles&&r.cycles,n=r.replacer||function(e,r){return r},l=r.cmp&&function(e){return function(r){return function(t,a){return e({key:t,value:r[t]},{key:a,value:r[a]})}}}(r.cmp),h=[];return function e(r,u,c,f){var d=t?"\n"+new Array(f+1).join(t):"",p=t?": ":":";if(c&&c.toJSON&&"function"==typeof c.toJSON&&(c=c.toJSON()),void 0!==(c=n.call(r,u,c))){if("object"!=typeof c||null===c)return a.stringify(c);if(s(c)){for(var m=[],v=0;v<c.length;v++){var y=e(c,v,c[v],f+1)||a.stringify(null);m.push(d+t+y)}return"["+m.join(",")+d+"]"}if(-1!==h.indexOf(c)){if(i)return a.stringify("__cycle__");throw new TypeError("Converting circular structure to JSON")}h.push(c);for(var g=o(c).sort(l&&l(c)),m=[],v=0;v<g.length;v++){var P=e(c,u=g[v],c[u],f+1);if(P){var E=a.stringify(u)+p+P;m.push(d+t+E)}}return h.splice(h.indexOf(c),1),"{"+m.join(",")+d+"}"}}({"":e},"",e,0)};var s=Array.isArray||function(e){return"[object Array]"==={}.toString.call(e)},o=Object.keys||function(e){var r=Object.prototype.hasOwnProperty||function(){return!0},t=[];for(var a in e)r.call(e,a)&&t.push(a);return t}},{jsonify:44}],44:[function(e,r,t){t.parse=e("./lib/parse"),t.stringify=e("./lib/stringify")},{"./lib/parse":45,"./lib/stringify":46}],45:[function(e,r,t){var a,s,o,i,n={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:"\n",r:"\r",t:"\t"},l=function(e){throw{name:"SyntaxError",message:e,at:a,text:o}},h=function(e){return e&&e!==s&&l("Expected '"+e+"' instead of '"+s+"'"),s=o.charAt(a),a+=1,s},u=function(){var e,r="";for("-"===s&&(r="-",h("-"));s>="0"&&s<="9";)r+=s,h();if("."===s)for(r+=".";h()&&s>="0"&&s<="9";)r+=s;if("e"===s||"E"===s)for(r+=s,h(),"-"!==s&&"+"!==s||(r+=s,h());s>="0"&&s<="9";)r+=s,h();if(e=+r,isFinite(e))return e;l("Bad number")},c=function(){var e,r,t,a="";if('"'===s)for(;h();){if('"'===s)return h(),a;if("\\"===s)if(h(),"u"===s){for(t=0,r=0;r<4&&(e=parseInt(h(),16),isFinite(e));r+=1)t=16*t+e;a+=String.fromCharCode(t)}else{if("string"!=typeof n[s])break;a+=n[s]}else a+=s}l("Bad string")},f=function(){for(;s&&s<=" ";)h()},d=function(){switch(s){case"t":return h("t"),h("r"),h("u"),h("e"),!0;case"f":return h("f"),h("a"),h("l"),h("s"),h("e"),!1;case"n":return h("n"),h("u"),h("l"),h("l"),null}l("Unexpected '"+s+"'")},p=function(){var e=[];if("["===s){if(h("["),f(),"]"===s)return h("]"),e;for(;s;){if(e.push(i()),f(),"]"===s)return h("]"),e;h(","),f()}}l("Bad array")},m=function(){var e,r={};if("{"===s){if(h("{"),f(),"}"===s)return h("}"),r;for(;s;){if(e=c(),f(),h(":"),Object.hasOwnProperty.call(r,e)&&l('Duplicate key "'+e+'"'),r[e]=i(),f(),"}"===s)return h("}"),r;h(","),f()}}l("Bad object")};i=function(){switch(f(),s){case"{":return m();case"[":return p();case'"':return c();case"-":return u();default:return s>="0"&&s<="9"?u():d()}},r.exports=function(e,r){var t;return o=e,a=0,s=" ",t=i(),f(),s&&l("Syntax error"),"function"==typeof r?function e(t,a){var s,o,i=t[a];if(i&&"object"==typeof i)for(s in i)Object.prototype.hasOwnProperty.call(i,s)&&(void 0!==(o=e(i,s))?i[s]=o:delete i[s]);return r.call(t,a,i)}({"":t},""):t}},{}],46:[function(e,r,t){function a(e){return l.lastIndex=0,l.test(e)?'"'+e.replace(l,function(e){var r=h[e];return"string"==typeof r?r:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+e+'"'}function s(e,r){var t,l,h,u,c,f=o,d=r[e];switch(d&&"object"==typeof d&&"function"==typeof d.toJSON&&(d=d.toJSON(e)),"function"==typeof n&&(d=n.call(r,e,d)),typeof d){case"string":return a(d);case"number":return isFinite(d)?String(d):"null";case"boolean":case"null":return String(d);case"object":if(!d)return"null";if(o+=i,c=[],"[object Array]"===Object.prototype.toString.apply(d)){for(u=d.length,t=0;t<u;t+=1)c[t]=s(t,d)||"null";return h=0===c.length?"[]":o?"[\n"+o+c.join(",\n"+o)+"\n"+f+"]":"["+c.join(",")+"]",o=f,h}if(n&&"object"==typeof n)for(u=n.length,t=0;t<u;t+=1)"string"==typeof(l=n[t])&&(h=s(l,d))&&c.push(a(l)+(o?": ":":")+h);else for(l in d)Object.prototype.hasOwnProperty.call(d,l)&&(h=s(l,d))&&c.push(a(l)+(o?": ":":")+h);return h=0===c.length?"{}":o?"{\n"+o+c.join(",\n"+o)+"\n"+f+"}":"{"+c.join(",")+"}",o=f,h}}var o,i,n,l=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,h={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};r.exports=function(e,r,t){var a;if(o="",i="","number"==typeof t)for(a=0;a<t;a+=1)i+=" ";else"string"==typeof t&&(i=t);if(n=r,r&&"function"!=typeof r&&("object"!=typeof r||"number"!=typeof r.length))throw new Error("JSON.stringify");return s("",{"":e})}},{}],47:[function(e,r,t){(function(e){!function(a){function s(e){throw new RangeError(A[e])}function o(e,r){for(var t=e.length,a=[];t--;)a[t]=r(e[t]);return a}function i(e,r){var t=e.split("@"),a="";return t.length>1&&(a=t[0]+"@",e=t[1]),a+o((e=e.replace(I,".")).split("."),r).join(".")}function n(e){for(var r,t,a=[],s=0,o=e.length;s<o;)(r=e.charCodeAt(s++))>=55296&&r<=56319&&s<o?56320==(64512&(t=e.charCodeAt(s++)))?a.push(((1023&r)<<10)+(1023&t)+65536):(a.push(r),s--):a.push(r);return a}function l(e){return o(e,function(e){var r="";return e>65535&&(r+=C((e-=65536)>>>10&1023|55296),e=56320|1023&e),r+=C(e)}).join("")}function h(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:w}function u(e,r){return e+22+75*(e<26)-((0!=r)<<5)}function c(e,r,t){var a=0;for(e=t?q(e/x):e>>1,e+=q(e/r);e>k*S>>1;a+=w)e=q(e/k);return q(a+(k+1)*e/(e+_))}function f(e){var r,t,a,o,i,n,u,f,d,p,m=[],v=e.length,y=0,g=$,P=F;for((t=e.lastIndexOf(R))<0&&(t=0),a=0;a<t;++a)e.charCodeAt(a)>=128&&s("not-basic"),m.push(e.charCodeAt(a));for(o=t>0?t+1:0;o<v;){for(i=y,n=1,u=w;o>=v&&s("invalid-input"),((f=h(e.charCodeAt(o++)))>=w||f>q((b-y)/n))&&s("overflow"),y+=f*n,d=u<=P?j:u>=P+S?S:u-P,!(f<d);u+=w)n>q(b/(p=w-d))&&s("overflow"),n*=p;P=c(y-i,r=m.length+1,0==i),q(y/r)>b-g&&s("overflow"),g+=q(y/r),y%=r,m.splice(y++,0,g)}return l(m)}function d(e){var r,t,a,o,i,l,h,f,d,p,m,v,y,g,P,E=[];for(v=(e=n(e)).length,r=$,t=0,i=F,l=0;l<v;++l)(m=e[l])<128&&E.push(C(m));for(a=o=E.length,o&&E.push(R);a<v;){for(h=b,l=0;l<v;++l)(m=e[l])>=r&&m<h&&(h=m);for(h-r>q((b-t)/(y=a+1))&&s("overflow"),t+=(h-r)*y,r=h,l=0;l<v;++l)if((m=e[l])<r&&++t>b&&s("overflow"),m==r){for(f=t,d=w;p=d<=i?j:d>=i+S?S:d-i,!(f<p);d+=w)P=f-p,g=w-p,E.push(C(u(p+P%g,0))),f=q(P/g);E.push(C(u(f,0))),i=c(t,y,a==o),t=0,++a}++t,++r}return E.join("")}function p(e){return i(e,function(e){return O.test(e)?f(e.slice(4).toLowerCase()):e})}function m(e){return i(e,function(e){return D.test(e)?"xn--"+d(e):e})}var v="object"==typeof t&&t&&!t.nodeType&&t,y="object"==typeof r&&r&&!r.nodeType&&r,g="object"==typeof e&&e;g.global!==g&&g.window!==g&&g.self!==g||(a=g);var P,E,b=2147483647,w=36,j=1,S=26,_=38,x=700,F=72,$=128,R="-",O=/^xn--/,D=/[^\x20-\x7E]/,I=/[\x2E\u3002\uFF0E\uFF61]/g,A={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},k=w-j,q=Math.floor,C=String.fromCharCode;if(P={version:"1.4.1",ucs2:{decode:n,encode:l},decode:f,encode:d,toASCII:m,toUnicode:p},v&&y)if(r.exports==v)y.exports=P;else for(E in P)P.hasOwnProperty(E)&&(v[E]=P[E]);else a.punycode=P}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],48:[function(e,r,t){"use strict";function a(e,r){return Object.prototype.hasOwnProperty.call(e,r)}r.exports=function(e,r,t,o){r=r||"&",t=t||"=";var i={};if("string"!=typeof e||0===e.length)return i;var n=/\+/g;e=e.split(r);var l=1e3;o&&"number"==typeof o.maxKeys&&(l=o.maxKeys);var h=e.length;l>0&&h>l&&(h=l);for(var u=0;u<h;++u){var c,f,d,p,m=e[u].replace(n,"%20"),v=m.indexOf(t);v>=0?(c=m.substr(0,v),f=m.substr(v+1)):(c=m,f=""),d=decodeURIComponent(c),p=decodeURIComponent(f),a(i,d)?s(i[d])?i[d].push(p):i[d]=[i[d],p]:i[d]=p}return i};var s=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},{}],49:[function(e,r,t){"use strict";function a(e,r){if(e.map)return e.map(r);for(var t=[],a=0;a<e.length;a++)t.push(r(e[a],a));return t}var s=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};r.exports=function(e,r,t,n){return r=r||"&",t=t||"=",null===e&&(e=void 0),"object"==typeof e?a(i(e),function(i){var n=encodeURIComponent(s(i))+t;return o(e[i])?a(e[i],function(e){return n+encodeURIComponent(s(e))}).join(r):n+encodeURIComponent(s(e[i]))}).join(r):n?encodeURIComponent(s(n))+t+encodeURIComponent(s(e)):""};var o=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},i=Object.keys||function(e){var r=[];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&r.push(t);return r}},{}],50:[function(e,r,t){"use strict";t.decode=t.parse=e("./decode"),t.encode=t.stringify=e("./encode")},{"./decode":48,"./encode":49}],51:[function(e,r,t){"use strict";function a(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}function s(e,r,t){if(e&&h.isObject(e)&&e instanceof a)return e;var s=new a;return s.parse(e,r,t),s}function o(e){return h.isString(e)&&(e=s(e)),e instanceof a?e.format():a.prototype.format.call(e)}function i(e,r){return s(e,!1,!0).resolve(r)}function n(e,r){return e?s(e,!1,!0).resolveObject(r):r}var l=e("punycode"),h=e("./util");t.parse=s,t.resolve=i,t.resolveObject=n,t.format=o,t.Url=a;var u=/^([a-z0-9.+-]+:)/i,c=/:[0-9]*$/,f=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,d=["<",">",'"',"`"," ","\r","\n","\t"],p=["{","}","|","\\","^","`"].concat(d),m=["'"].concat(p),v=["%","/","?",";","#"].concat(m),y=["/","?","#"],g=/^[+a-z0-9A-Z_-]{0,63}$/,P=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,E={javascript:!0,"javascript:":!0},b={javascript:!0,"javascript:":!0},w={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},j=e("querystring");a.prototype.parse=function(e,r,t){if(!h.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var a=e.indexOf("?"),s=-1!==a&&a<e.indexOf("#")?"?":"#",o=e.split(s),i=/\\/g;o[0]=o[0].replace(i,"/");var n=e=o.join(s);if(n=n.trim(),!t&&1===e.split("#").length){var c=f.exec(n);if(c)return this.path=n,this.href=n,this.pathname=c[1],c[2]?(this.search=c[2],this.query=r?j.parse(this.search.substr(1)):this.search.substr(1)):r&&(this.search="",this.query={}),this}var d=u.exec(n);if(d){var p=(d=d[0]).toLowerCase();this.protocol=p,n=n.substr(d.length)}if(t||d||n.match(/^\/\/[^@\/]+@[^@\/]+/)){var S="//"===n.substr(0,2);!S||d&&b[d]||(n=n.substr(2),this.slashes=!0)}if(!b[d]&&(S||d&&!w[d])){for(var _=-1,x=0;x<y.length;x++)-1!==(R=n.indexOf(y[x]))&&(-1===_||R<_)&&(_=R);var F,$;-1!==($=-1===_?n.lastIndexOf("@"):n.lastIndexOf("@",_))&&(F=n.slice(0,$),n=n.slice($+1),this.auth=decodeURIComponent(F)),_=-1;for(x=0;x<v.length;x++){var R=n.indexOf(v[x]);-1!==R&&(-1===_||R<_)&&(_=R)}-1===_&&(_=n.length),this.host=n.slice(0,_),n=n.slice(_),this.parseHost();var O="["===(this.hostname=this.hostname||"")[0]&&"]"===this.hostname[this.hostname.length-1];if(!O)for(var D=this.hostname.split(/\./),x=0,I=D.length;x<I;x++){var A=D[x];if(A&&!A.match(g)){for(var k="",q=0,C=A.length;q<C;q++)A.charCodeAt(q)>127?k+="x":k+=A[q];if(!k.match(g)){var L=D.slice(0,x),z=D.slice(x+1),Q=A.match(P);Q&&(L.push(Q[1]),z.unshift(Q[2])),z.length&&(n="/"+z.join(".")+n),this.hostname=L.join(".");break}}}this.hostname=this.hostname.length>255?"":this.hostname.toLowerCase(),O||(this.hostname=l.toASCII(this.hostname));var U=this.port?":"+this.port:"",V=this.hostname||"";this.host=V+U,this.href+=this.host,O&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==n[0]&&(n="/"+n))}if(!E[p])for(var x=0,I=m.length;x<I;x++){var N=m[x];if(-1!==n.indexOf(N)){var T=encodeURIComponent(N);T===N&&(T=escape(N)),n=n.split(N).join(T)}}var M=n.indexOf("#");-1!==M&&(this.hash=n.substr(M),n=n.slice(0,M));var B=n.indexOf("?");if(-1!==B?(this.search=n.substr(B),this.query=n.substr(B+1),r&&(this.query=j.parse(this.query)),n=n.slice(0,B)):r&&(this.search="",this.query={}),n&&(this.pathname=n),w[p]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){var U=this.pathname||"",H=this.search||"";this.path=U+H}return this.href=this.format(),this},a.prototype.format=function(){var e=this.auth||"";e&&(e=(e=encodeURIComponent(e)).replace(/%3A/i,":"),e+="@");var r=this.protocol||"",t=this.pathname||"",a=this.hash||"",s=!1,o="";this.host?s=e+this.host:this.hostname&&(s=e+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(s+=":"+this.port)),this.query&&h.isObject(this.query)&&Object.keys(this.query).length&&(o=j.stringify(this.query));var i=this.search||o&&"?"+o||"";return r&&":"!==r.substr(-1)&&(r+=":"),this.slashes||(!r||w[r])&&!1!==s?(s="//"+(s||""),t&&"/"!==t.charAt(0)&&(t="/"+t)):s||(s=""),a&&"#"!==a.charAt(0)&&(a="#"+a),i&&"?"!==i.charAt(0)&&(i="?"+i),t=t.replace(/[?#]/g,function(e){return encodeURIComponent(e)}),i=i.replace("#","%23"),r+s+t+i+a},a.prototype.resolve=function(e){return this.resolveObject(s(e,!1,!0)).format()},a.prototype.resolveObject=function(e){if(h.isString(e)){var r=new a;r.parse(e,!1,!0),e=r}for(var t=new a,s=Object.keys(this),o=0;o<s.length;o++){var i=s[o];t[i]=this[i]}if(t.hash=e.hash,""===e.href)return t.href=t.format(),t;if(e.slashes&&!e.protocol){for(var n=Object.keys(e),l=0;l<n.length;l++){var u=n[l];"protocol"!==u&&(t[u]=e[u])}return w[t.protocol]&&t.hostname&&!t.pathname&&(t.path=t.pathname="/"),t.href=t.format(),t}if(e.protocol&&e.protocol!==t.protocol){if(!w[e.protocol]){for(var c=Object.keys(e),f=0;f<c.length;f++){var d=c[f];t[d]=e[d]}return t.href=t.format(),t}if(t.protocol=e.protocol,e.host||b[e.protocol])t.pathname=e.pathname;else{for(j=(e.pathname||"").split("/");j.length&&!(e.host=j.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==j[0]&&j.unshift(""),j.length<2&&j.unshift(""),t.pathname=j.join("/")}if(t.search=e.search,t.query=e.query,t.host=e.host||"",t.auth=e.auth,t.hostname=e.hostname||e.host,t.port=e.port,t.pathname||t.search){var p=t.pathname||"",m=t.search||"";t.path=p+m}return t.slashes=t.slashes||e.slashes,t.href=t.format(),t}var v=t.pathname&&"/"===t.pathname.charAt(0),y=e.host||e.pathname&&"/"===e.pathname.charAt(0),g=y||v||t.host&&e.pathname,P=g,E=t.pathname&&t.pathname.split("/")||[],j=e.pathname&&e.pathname.split("/")||[],S=t.protocol&&!w[t.protocol];if(S&&(t.hostname="",t.port=null,t.host&&(""===E[0]?E[0]=t.host:E.unshift(t.host)),t.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===j[0]?j[0]=e.host:j.unshift(e.host)),e.host=null),g=g&&(""===j[0]||""===E[0])),y)t.host=e.host||""===e.host?e.host:t.host,t.hostname=e.hostname||""===e.hostname?e.hostname:t.hostname,t.search=e.search,t.query=e.query,E=j;else if(j.length)E||(E=[]),E.pop(),E=E.concat(j),t.search=e.search,t.query=e.query;else if(!h.isNullOrUndefined(e.search))return S&&(t.hostname=t.host=E.shift(),(O=!!(t.host&&t.host.indexOf("@")>0)&&t.host.split("@"))&&(t.auth=O.shift(),t.host=t.hostname=O.shift())),t.search=e.search,t.query=e.query,h.isNull(t.pathname)&&h.isNull(t.search)||(t.path=(t.pathname?t.pathname:"")+(t.search?t.search:"")),t.href=t.format(),t;if(!E.length)return t.pathname=null,t.path=t.search?"/"+t.search:null,t.href=t.format(),t;for(var _=E.slice(-1)[0],x=(t.host||e.host||E.length>1)&&("."===_||".."===_)||""===_,F=0,$=E.length;$>=0;$--)"."===(_=E[$])?E.splice($,1):".."===_?(E.splice($,1),F++):F&&(E.splice($,1),F--);if(!g&&!P)for(;F--;F)E.unshift("..");!g||""===E[0]||E[0]&&"/"===E[0].charAt(0)||E.unshift(""),x&&"/"!==E.join("/").substr(-1)&&E.push("");var R=""===E[0]||E[0]&&"/"===E[0].charAt(0);if(S){t.hostname=t.host=R?"":E.length?E.shift():"";var O=!!(t.host&&t.host.indexOf("@")>0)&&t.host.split("@");O&&(t.auth=O.shift(),t.host=t.hostname=O.shift())}return(g=g||t.host&&E.length)&&!R&&E.unshift(""),E.length?t.pathname=E.join("/"):(t.pathname=null,t.path=null),h.isNull(t.pathname)&&h.isNull(t.search)||(t.path=(t.pathname?t.pathname:"")+(t.search?t.search:"")),t.auth=e.auth||t.auth,t.slashes=t.slashes||e.slashes,t.href=t.format(),t},a.prototype.parseHost=function(){var e=this.host,r=c.exec(e);r&&(":"!==(r=r[0])&&(this.port=r.substr(1)),e=e.substr(0,e.length-r.length)),e&&(this.hostname=e)}},{"./util":52,punycode:47,querystring:50}],52:[function(e,r,t){"use strict";r.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},{}],ajv:[function(e,r,t){"use strict";function a(e){if(!(this instanceof a))return new a(e);e=this._opts=L.copy(e)||{},this._schemas={},this._refs={},this._fragments={},this._formats=A(e.format);var r=this._schemaUriFormat=this._formats["uri-reference"];this._schemaUriFormatFunc=function(e){return r.test(e)},this._cache=e.cache||new O,this._loadingSchemas={},this._compilations=[],this.RULES=k(),this._getId=y(e),e.loopRequired=e.loopRequired||1/0,"property"==e.errorDataPath&&(e._errorDataPathProperty=!0),void 0===e.serialize&&(e.serialize=I),this._metaOpts=F(this),e.formats&&_(this),j(this),"object"==typeof e.meta&&this.addMetaSchema(e.meta),S(this),e.patternGroups&&C(this)}function s(e,r){var t;if("string"==typeof e){if(!(t=this.getSchema(e)))throw new Error('no schema with key or ref "'+e+'"')}else{var a=this._addSchema(e);t=a.validate||this._compile(a)}var s=t(r);return!0===t.$async?"*"==this._opts.async?z(s):s:(this.errors=t.errors,s)}function o(e,r){var t=this._addSchema(e,void 0,r);return t.validate||this._compile(t)}function i(e,r,t,a){if(Array.isArray(e))for(var s=0;s<e.length;s++)this.addSchema(e[s],void 0,t,a);else{var o=this._getId(e);if(void 0!==o&&"string"!=typeof o)throw new Error("schema id must be string");x(this,r=R.normalizeId(r||o)),this._schemas[r]=this._addSchema(e,t,a,!0)}}function n(e,r,t){this.addSchema(e,r,t,!0)}function l(e,r){var t=e.$schema;if(void 0!==t&&"string"!=typeof t)throw new Error("$schema must be a string");if(!(t=t||this._opts.defaultMeta||h(this)))return console.warn("meta-schema not available"),this.errors=null,!0;var a=this._formats.uri;this._formats.uri="function"==typeof a?this._schemaUriFormatFunc:this._schemaUriFormat;var s;try{s=this.validate(t,e)}finally{this._formats.uri=a}if(!s&&r){var o="schema is invalid: "+this.errorsText();if("log"!=this._opts.validateSchema)throw new Error(o);console.error(o)}return s}function h(e){var r=e._opts.meta;return e._opts.defaultMeta="object"==typeof r?e._getId(r)||r:e.getSchema(V)?V:void 0}function u(e){var r=f(this,e);switch(typeof r){case"object":return r.validate||this._compile(r);case"string":return this.getSchema(r);case"undefined":return c(this,e)}}function c(e,r){var t=R.schema.call(e,{schema:{}},r);if(t){var a=t.schema,s=t.root,o=t.baseId,i=$.call(e,a,s,void 0,o);return e._fragments[r]=new D({ref:r,fragment:!0,schema:a,root:s,baseId:o,validate:i}),i}}function f(e,r){return r=R.normalizeId(r),e._schemas[r]||e._refs[r]||e._fragments[r]}function d(e){if(e instanceof RegExp)return p(this,this._schemas,e),void p(this,this._refs,e);switch(typeof e){case"undefined":return p(this,this._schemas),p(this,this._refs),void this._cache.clear();case"string":var r=f(this,e);return r&&this._cache.del(r.cacheKey),delete this._schemas[e],void delete this._refs[e];case"object":var t=this._opts.serialize,a=t?t(e):e;this._cache.del(a);var s=this._getId(e);s&&(s=R.normalizeId(s),delete this._schemas[s],delete this._refs[s])}}function p(e,r,t){for(var a in r){var s=r[a];s.meta||t&&!t.test(a)||(e._cache.del(s.cacheKey),delete r[a])}}function m(e,r,t,a){if("object"!=typeof e&&"boolean"!=typeof e)throw new Error("schema should be object or boolean");var s=this._opts.serialize,o=s?s(e):e,i=this._cache.get(o);if(i)return i;a=a||!1!==this._opts.addUsedSchema;var n=R.normalizeId(this._getId(e));n&&a&&x(this,n);var l,h=!1!==this._opts.validateSchema&&!r;h&&!(l=n&&n==R.normalizeId(e.$schema))&&this.validateSchema(e,!0);var u=R.ids.call(this,e),c=new D({id:n,schema:e,localRefs:u,cacheKey:o,meta:t});return"#"!=n[0]&&a&&(this._refs[n]=c),this._cache.put(o,c),h&&l&&this.validateSchema(e,!0),c}function v(e,r){function t(){var r=e.validate,a=r.apply(null,arguments);return t.errors=r.errors,a}if(e.compiling)return e.validate=t,t.schema=e.schema,t.errors=null,t.root=r||t,!0===e.schema.$async&&(t.$async=!0),t;e.compiling=!0;var a;e.meta&&(a=this._opts,this._opts=this._metaOpts);var s;try{s=$.call(this,e.schema,r,e.localRefs)}finally{e.compiling=!1,e.meta&&(this._opts=a)}return e.validate=s,e.refs=s.refs,e.refVal=s.refVal,e.root=s.root,s}function y(e){switch(e.schemaId){case"$id":return P;case"id":return g;default:return E}}function g(e){return e.$id&&console.warn("schema $id ignored",e.$id),e.id}function P(e){return e.id&&console.warn("schema id ignored",e.id),e.$id}function E(e){if(e.$id&&e.id&&e.$id!=e.id)throw new Error("schema $id is different from id");return e.$id||e.id}function b(e,r){if(!(e=e||this.errors))return"No errors";for(var t=void 0===(r=r||{}).separator?", ":r.separator,a=void 0===r.dataVar?"data":r.dataVar,s="",o=0;o<e.length;o++){var i=e[o];i&&(s+=a+i.dataPath+" "+i.message+t)}return s.slice(0,-t.length)}function w(e,r){"string"==typeof r&&(r=new RegExp(r)),this._formats[e]=r}function j(r){var t;if(r._opts.$data&&(t=e("./refs/$data.json"),r.addMetaSchema(t,t.$id,!0)),!1!==r._opts.meta){var a=e("./refs/json-schema-draft-06.json");r._opts.$data&&(a=q(a,T)),r.addMetaSchema(a,V,!0),r._refs["http://json-schema.org/schema"]=V}}function S(e){var r=e._opts.schemas;if(r)if(Array.isArray(r))e.addSchema(r);else for(var t in r)e.addSchema(r[t],t)}function _(e){for(var r in e._opts.formats){var t=e._opts.formats[r];e.addFormat(r,t)}}function x(e,r){if(e._schemas[r]||e._refs[r])throw new Error('schema with key or id "'+r+'" already exists')}function F(e){for(var r=L.copy(e._opts),t=0;t<N.length;t++)delete r[N[t]];return r}var $=e("./compile"),R=e("./compile/resolve"),O=e("./cache"),D=e("./compile/schema_obj"),I=e("json-stable-stringify"),A=e("./compile/formats"),k=e("./compile/rules"),q=e("./$data"),C=e("./patternGroups"),L=e("./compile/util"),z=e("co");r.exports=a,a.prototype.validate=s,a.prototype.compile=o,a.prototype.addSchema=i,a.prototype.addMetaSchema=n,a.prototype.validateSchema=l,a.prototype.getSchema=u,a.prototype.removeSchema=d,a.prototype.addFormat=w,a.prototype.errorsText=b,a.prototype._addSchema=m,a.prototype._compile=v,a.prototype.compileAsync=e("./compile/async");var Q=e("./keyword");a.prototype.addKeyword=Q.add,a.prototype.getKeyword=Q.get,a.prototype.removeKeyword=Q.remove;var U=e("./compile/error_classes");a.ValidationError=U.Validation,a.MissingRefError=U.MissingRef,a.$dataMetaSchema=q;var V="http://json-schema.org/draft-06/schema",N=["removeAdditional","useDefaults","coerceTypes"],T=["/properties"]},{"./$data":1,"./cache":2,"./compile":7,"./compile/async":4,"./compile/error_classes":5,"./compile/formats":6,"./compile/resolve":8,"./compile/rules":9,"./compile/schema_obj":10,"./compile/util":12,"./keyword":36,"./patternGroups":37,"./refs/$data.json":38,"./refs/json-schema-draft-06.json":39,co:40,"json-stable-stringify":43}]},{},[])("ajv")});
+/* ajv 5.2.2: Another JSON Schema Validator */
+!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Ajv=e()}}(function(){return function e(r,t,a){function s(i,n){if(!t[i]){if(!r[i]){var l="function"==typeof require&&require;if(!n&&l)return l(i,!0);if(o)return o(i,!0);var h=new Error("Cannot find module '"+i+"'");throw h.code="MODULE_NOT_FOUND",h}var u=t[i]={exports:{}};r[i][0].call(u.exports,function(e){var t=r[i][1][e];return s(t||e)},u,u.exports,e,r,t,a)}return t[i].exports}for(var o="function"==typeof require&&require,i=0;i<a.length;i++)s(a[i]);return s}({1:[function(e,r,t){"use strict";var a=["multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","additionalItems","maxItems","minItems","uniqueItems","maxProperties","minProperties","required","additionalProperties","enum","format","const"];r.exports=function(e,r){for(var t=0;t<r.length;t++){e=JSON.parse(JSON.stringify(e));var s,o=r[t].split("/"),i=e;for(s=1;s<o.length;s++)i=i[o[s]];for(s=0;s<a.length;s++){var n=a[s],l=i[n];l&&(i[n]={anyOf:[l,{$ref:"https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/$data.json#"}]})}}return e}},{}],2:[function(e,r,t){"use strict";var a=r.exports=function(){this._cache={}};a.prototype.put=function(e,r){this._cache[e]=r},a.prototype.get=function(e){return this._cache[e]},a.prototype.del=function(e){delete this._cache[e]},a.prototype.clear=function(){this._cache={}}},{}],3:[function(e,r,t){"use strict";r.exports={$ref:e("../dotjs/ref"),allOf:e("../dotjs/allOf"),anyOf:e("../dotjs/anyOf"),const:e("../dotjs/const"),contains:e("../dotjs/contains"),dependencies:e("../dotjs/dependencies"),enum:e("../dotjs/enum"),format:e("../dotjs/format"),items:e("../dotjs/items"),maximum:e("../dotjs/_limit"),minimum:e("../dotjs/_limit"),maxItems:e("../dotjs/_limitItems"),minItems:e("../dotjs/_limitItems"),maxLength:e("../dotjs/_limitLength"),minLength:e("../dotjs/_limitLength"),maxProperties:e("../dotjs/_limitProperties"),minProperties:e("../dotjs/_limitProperties"),multipleOf:e("../dotjs/multipleOf"),not:e("../dotjs/not"),oneOf:e("../dotjs/oneOf"),pattern:e("../dotjs/pattern"),properties:e("../dotjs/properties"),propertyNames:e("../dotjs/propertyNames"),required:e("../dotjs/required"),uniqueItems:e("../dotjs/uniqueItems"),validate:e("../dotjs/validate")}},{"../dotjs/_limit":13,"../dotjs/_limitItems":14,"../dotjs/_limitLength":15,"../dotjs/_limitProperties":16,"../dotjs/allOf":17,"../dotjs/anyOf":18,"../dotjs/const":19,"../dotjs/contains":20,"../dotjs/dependencies":22,"../dotjs/enum":23,"../dotjs/format":24,"../dotjs/items":25,"../dotjs/multipleOf":26,"../dotjs/not":27,"../dotjs/oneOf":28,"../dotjs/pattern":29,"../dotjs/properties":30,"../dotjs/propertyNames":31,"../dotjs/ref":32,"../dotjs/required":33,"../dotjs/uniqueItems":34,"../dotjs/validate":35}],4:[function(e,r,t){"use strict";function a(e,r,t){function o(e){var r=e.$schema;return r&&!n.getSchema(r)?a.call(n,{$ref:r},!0):Promise.resolve()}function i(e){try{return n._compile(e)}catch(t){if(t instanceof s)return function(t){function a(){delete n._loadingSchemas[l]}function s(e){return n._refs[e]||n._schemas[e]}var l=t.missingSchema;if(s(l))throw new Error("Schema "+l+" is loaded but "+t.missingRef+" cannot be resolved");var h=n._loadingSchemas[l];return h||(h=n._loadingSchemas[l]=n._opts.loadSchema(l)).then(a,a),h.then(function(e){if(!s(l))return o(e).then(function(){s(l)||n.addSchema(e,l,void 0,r)})}).then(function(){return i(e)})}(t);throw t}}var n=this;if("function"!=typeof this._opts.loadSchema)throw new Error("options.loadSchema should be a function");"function"==typeof r&&(t=r,r=void 0);var l=o(e).then(function(){var t=n._addSchema(e,void 0,r);return t.validate||i(t)});return t&&l.then(function(e){t(null,e)},t),l}var s=e("./error_classes").MissingRef;r.exports=a},{"./error_classes":5}],5:[function(e,r,t){"use strict";function a(e){this.message="validation failed",this.errors=e,this.ajv=this.validation=!0}function s(e,r,t){this.message=t||s.message(e,r),this.missingRef=i.url(e,r),this.missingSchema=i.normalizeId(i.fullPath(this.missingRef))}function o(e){return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e}var i=e("./resolve");r.exports={Validation:o(a),MissingRef:o(s)},s.message=function(e,r){return"can't resolve reference "+r+" from id "+e}},{"./resolve":8}],6:[function(e,r,t){"use strict";function a(e){return e="full"==e?"full":"fast",u.copy(a[e])}function s(e){var r=e.match(c);if(!r)return!1;var t=+r[1],a=+r[2];return t>=1&&t<=12&&a>=1&&a<=f[t]}function o(e,r){var t=e.match(d);if(!t)return!1;var a=t[1],s=t[2],o=t[3],i=t[5];return a<=23&&s<=59&&o<=59&&(!r||i)}function i(e){var r=e.split(w);return 2==r.length&&s(r[0])&&o(r[1],!0)}function n(e){return e.length<=255&&p.test(e)}function l(e){return j.test(e)&&m.test(e)}function h(e){if(S.test(e))return!1;try{return new RegExp(e),!0}catch(e){return!1}}var u=e("./util"),c=/^\d\d\d\d-(\d\d)-(\d\d)$/,f=[0,31,29,31,30,31,30,31,31,30,31,30,31],d=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d:\d\d)?$/i,p=/^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*$/i,m=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,v=/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,y=/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,g=/^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i,P=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,E=/^(?:\/(?:[^~/]|~0|~1)*)*$|^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,b=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;r.exports=a,a.fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^[0-2]\d:[0-5]\d:[0-5]\d(?:\.\d+)?(?:z|[+-]\d\d:\d\d)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s][0-2]\d:[0-5]\d:[0-5]\d(?:\.\d+)?(?:z|[+-]\d\d:\d\d)$/i,uri:/^(?:[a-z][a-z0-9+-.]*)(?::|\/)\/?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+-.]*:)?\/\/)?[^\s]*$/i,"uri-template":y,url:g,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:p,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:h,uuid:P,"json-pointer":E,"relative-json-pointer":b},a.full={date:s,time:o,"date-time":i,uri:l,"uri-reference":v,"uri-template":y,url:g,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&''*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:n,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:h,uuid:P,"json-pointer":E,"relative-json-pointer":b};var w=/t|\s/i,j=/\/|:/,S=/[^\\]\\Z/},{"./util":12}],7:[function(e,r,t){"use strict";function a(e,r,t,i){function b(){var e=V.validate,r=e.apply(null,arguments);return b.errors=e.errors,r}function w(e,t,s,o){var i=!t||t&&t.schema==e;if(t.schema!=r.schema)return a.call(D,e,t,s,o);var m=!0===e.$async,b=v({isTop:!0,schema:e,isRoot:i,baseId:o,root:t,schemaPath:"",errSchemaPath:"#",errorPath:'""',MissingRefError:p.MissingRef,RULES:T,validate:v,util:d,resolve:f,resolveRef:j,usePattern:$,useDefault:R,useCustomRule:O,opts:I,formats:N,self:D});b=c(A,h)+c(q,n)+c(L,l)+c(Q,u)+b,I.processCode&&(b=I.processCode(b));var w;try{w=new Function("self","RULES","formats","root","refVal","defaults","customRules","co","equal","ucs2length","ValidationError",b)(D,T,N,r,A,L,Q,y,P,g,E),A[0]=w}catch(e){throw console.error("Error compiling schema, function code:",b),e}return w.schema=e,w.errors=null,w.refs=k,w.refVal=A,w.root=i?w:t,m&&(w.$async=!0),!0===I.sourceCode&&(w.source={code:b,patterns:q,defaults:L}),w}function j(e,s,o){s=f.url(e,s);var i,n,l=k[s];if(void 0!==l)return i=A[l],n="refVal["+l+"]",F(i,n);if(!o&&r.refs){var h=r.refs[s];if(void 0!==h)return i=r.refVal[h],n=S(s,i),F(i,n)}n=S(s);var u=f.call(D,w,r,s);if(void 0===u){var c=t&&t[s];c&&(u=f.inlineRef(c,I.inlineRefs)?c:a.call(D,c,r,t,e))}if(void 0!==u)return x(s,u),F(u,n);_(s)}function S(e,r){var t=A.length;return A[t]=r,k[e]=t,"refVal"+t}function _(e){delete k[e]}function x(e,r){A[k[e]]=r}function F(e,r){return"object"==typeof e||"boolean"==typeof e?{code:r,schema:e,inline:!0}:{code:r,$async:e&&e.$async}}function $(e){var r=C[e];return void 0===r&&(r=C[e]=q.length,q[r]=e),"pattern"+r}function R(e){switch(typeof e){case"boolean":case"number":return""+e;case"string":return d.toQuotedString(e);case"object":if(null===e)return"null";var r=m(e),t=z[r];return void 0===t&&(t=z[r]=L.length,L[t]=e),"default"+t}}function O(e,r,t,a){var s=e.definition.validateSchema;if(s&&!1!==D._opts.validateSchema&&!s(r)){var o="keyword schema is invalid: "+D.errorsText(s.errors);if("log"!=D._opts.validateSchema)throw new Error(o);console.error(o)}var i,n=e.definition.compile,l=e.definition.inline,h=e.definition.macro;if(n)i=n.call(D,r,t,a);else if(h)i=h.call(D,r,t,a),!1!==I.validateSchema&&D.validateSchema(i,!0);else if(l)i=l.call(D,a,e.keyword,r,t);else if(!(i=e.definition.validate))return;if(void 0===i)throw new Error('custom keyword "'+e.keyword+'"failed to compile');var u=Q.length;return Q[u]=i,{code:"customRule"+u,validate:i}}var D=this,I=this._opts,A=[void 0],k={},q=[],C={},L=[],z={},Q=[];r=r||{schema:e,refVal:A,refs:k};var U=s.call(this,e,r,i),V=this._compilations[U.index];if(U.compiling)return V.callValidate=b;var N=this._formats,T=this.RULES;try{var M=w(e,r,t,i);V.validate=M;var B=V.callValidate;return B&&(B.schema=M.schema,B.errors=null,B.refs=M.refs,B.refVal=M.refVal,B.root=M.root,B.$async=M.$async,I.sourceCode&&(B.source=M.source)),M}finally{o.call(this,e,r,i)}}function s(e,r,t){var a=i.call(this,e,r,t);return a>=0?{index:a,compiling:!0}:(a=this._compilations.length,this._compilations[a]={schema:e,root:r,baseId:t},{index:a,compiling:!1})}function o(e,r,t){var a=i.call(this,e,r,t);a>=0&&this._compilations.splice(a,1)}function i(e,r,t){for(var a=0;a<this._compilations.length;a++){var s=this._compilations[a];if(s.schema==e&&s.root==r&&s.baseId==t)return a}return-1}function n(e,r){return"var pattern"+e+" = new RegExp("+d.toQuotedString(r[e])+");"}function l(e){return"var default"+e+" = defaults["+e+"];"}function h(e,r){return void 0===r[e]?"":"var refVal"+e+" = refVal["+e+"];"}function u(e){return"var customRule"+e+" = customRules["+e+"];"}function c(e,r){if(!e.length)return"";for(var t="",a=0;a<e.length;a++)t+=r(a,e);return t}var f=e("./resolve"),d=e("./util"),p=e("./error_classes"),m=e("json-stable-stringify"),v=e("../dotjs/validate"),y=e("co"),g=d.ucs2length,P=e("fast-deep-equal"),E=p.Validation;r.exports=a},{"../dotjs/validate":35,"./error_classes":5,"./resolve":8,"./util":12,co:40,"fast-deep-equal":41,"json-stable-stringify":43}],8:[function(e,r,t){"use strict";function a(e,r,t){var o=this._refs[t];if("string"==typeof o){if(!this._refs[o])return a.call(this,e,r,o);o=this._refs[o]}if((o=o||this._schemas[t])instanceof g)return n(o.schema,this._opts.inlineRefs)?o.schema:o.validate||this._compile(o);var i,l,h,u=s.call(this,r,t);return u&&(i=u.schema,r=u.root,h=u.baseId),i instanceof g?l=i.validate||e.call(this,i.schema,r,void 0,h):void 0!==i&&(l=n(i,this._opts.inlineRefs)?i:e.call(this,i,r,void 0,h)),l}function s(e,r){var t=m.parse(r,!1,!0),a=c(t),s=u(this._getId(e.schema));if(a!==s){var n=f(a),l=this._refs[n];if("string"==typeof l)return o.call(this,e,l,t);if(l instanceof g)l.validate||this._compile(l),e=l;else{if(!((l=this._schemas[n])instanceof g))return;if(l.validate||this._compile(l),n==f(r))return{schema:l,root:e,baseId:s};e=l}if(!e.schema)return;s=u(this._getId(e.schema))}return i.call(this,t,s,e.schema,e)}function o(e,r,t){var a=s.call(this,e,r);if(a){var o=a.schema,n=a.baseId;e=a.root;var l=this._getId(o);return l&&(n=d(n,l)),i.call(this,t,n,o,e)}}function i(e,r,t,a){if("#/"==(e.hash=e.hash||"").slice(0,2)){for(var o=e.hash.split("/"),i=1;i<o.length;i++){var n=o[i];if(n){if(n=y.unescapeFragment(n),void 0===(t=t[n]))break;var l;if(!E[n]&&((l=this._getId(t))&&(r=d(r,l)),t.$ref)){var h=d(r,t.$ref),u=s.call(this,a,h);u&&(t=u.schema,a=u.root,r=u.baseId)}}}return void 0!==t&&t!==a.schema?{schema:t,root:a,baseId:r}:void 0}}function n(e,r){return!1!==r&&(void 0===r||!0===r?l(e):r?h(e)<=r:void 0)}function l(e){var r;if(Array.isArray(e)){for(var t=0;t<e.length;t++)if("object"==typeof(r=e[t])&&!l(r))return!1}else for(var a in e){if("$ref"==a)return!1;if("object"==typeof(r=e[a])&&!l(r))return!1}return!0}function h(e){var r,t=0;if(Array.isArray(e)){for(var a=0;a<e.length;a++)if("object"==typeof(r=e[a])&&(t+=h(r)),t==1/0)return 1/0}else for(var s in e){if("$ref"==s)return 1/0;if(b[s])t++;else if("object"==typeof(r=e[s])&&(t+=h(r)+1),t==1/0)return 1/0}return t}function u(e,r){return!1!==r&&(e=f(e)),c(m.parse(e,!1,!0))}function c(e){var r=e.protocol||"//"==e.href.slice(0,2)?"//":"";return(e.protocol||"")+r+(e.host||"")+(e.path||"")+"#"}function f(e){return e?e.replace(w,""):""}function d(e,r){return r=f(r),m.resolve(e,r)}function p(e){var r=f(this._getId(e)),t={"":r},a={"":u(r,!1)},s={},o=this;return P(e,{allKeys:!0},function(e,r,i,n,l,h,u){if(""!==r){var c=o._getId(e),d=t[n],p=a[n]+"/"+l;if(void 0!==u&&(p+="/"+("number"==typeof u?u:y.escapeFragment(u))),"string"==typeof c){c=d=f(d?m.resolve(d,c):c);var g=o._refs[c];if("string"==typeof g&&(g=o._refs[g]),g&&g.schema){if(!v(e,g.schema))throw new Error('id "'+c+'" resolves to more than one schema')}else if(c!=f(p))if("#"==c[0]){if(s[c]&&!v(e,s[c]))throw new Error('id "'+c+'" resolves to more than one schema');s[c]=e}else o._refs[c]=p}t[r]=d,a[r]=p}}),s}var m=e("url"),v=e("fast-deep-equal"),y=e("./util"),g=e("./schema_obj"),P=e("json-schema-traverse");r.exports=a,a.normalizeId=f,a.fullPath=u,a.url=d,a.ids=p,a.inlineRef=n,a.schema=s;var E=y.toHash(["properties","patternProperties","enum","dependencies","definitions"]),b=y.toHash(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum"]),w=/#\/?$/},{"./schema_obj":10,"./util":12,"fast-deep-equal":41,"json-schema-traverse":42,url:51}],9:[function(e,r,t){"use strict";var a=e("./_rules"),s=e("./util").toHash;r.exports=function(){var e=[{type:"number",rules:[{maximum:["exclusiveMaximum"]},{minimum:["exclusiveMinimum"]},"multipleOf","format"]},{type:"string",rules:["maxLength","minLength","pattern","format"]},{type:"array",rules:["maxItems","minItems","uniqueItems","contains","items"]},{type:"object",rules:["maxProperties","minProperties","required","dependencies","propertyNames",{properties:["additionalProperties","patternProperties"]}]},{rules:["$ref","const","enum","not","anyOf","oneOf","allOf"]}],r=["type"],t=["additionalItems","$schema","id","title","description","default","definitions"],o=["number","integer","string","array","object","boolean","null"];return e.all=s(r),e.types=s(o),e.forEach(function(t){t.rules=t.rules.map(function(t){var s;if("object"==typeof t){var o=Object.keys(t)[0];s=t[o],t=o,s.forEach(function(t){r.push(t),e.all[t]=!0})}return r.push(t),e.all[t]={keyword:t,code:a[t],implements:s}}),t.type&&(e.types[t.type]=t)}),e.keywords=s(r.concat(t)),e.custom={},e}},{"./_rules":3,"./util":12}],10:[function(e,r,t){"use strict";function a(e){s.copy(e,this)}var s=e("./util");r.exports=a},{"./util":12}],11:[function(e,r,t){"use strict";r.exports=function(e){for(var r,t=0,a=e.length,s=0;s<a;)t++,(r=e.charCodeAt(s++))>=55296&&r<=56319&&s<a&&56320==(64512&(r=e.charCodeAt(s)))&&s++;return t}},{}],12:[function(e,r,t){"use strict";function a(e,r){r=r||{};for(var t in e)r[t]=e[t];return r}function s(e,r,t){var a=t?" !== ":" === ",s=t?" || ":" && ",o=t?"!":"",i=t?"":"!";switch(e){case"null":return r+a+"null";case"array":return o+"Array.isArray("+r+")";case"object":return"("+o+r+s+"typeof "+r+a+'"object"'+s+i+"Array.isArray("+r+"))";case"integer":return"(typeof "+r+a+'"number"'+s+i+"("+r+" % 1)"+s+r+a+r+")";default:return"typeof "+r+a+'"'+e+'"'}}function o(e,r){switch(e.length){case 1:return s(e[0],r,!0);default:var t="",a=n(e);a.array&&a.object&&(t=a.null?"(":"(!"+r+" || ",t+="typeof "+r+' !== "object")',delete a.null,delete a.array,delete a.object),a.number&&delete a.integer;for(var o in a)t+=(t?" && ":"")+s(o,r,!0);return t}}function i(e,r){if(Array.isArray(r)){for(var t=[],a=0;a<r.length;a++){var s=r[a];_[s]?t[t.length]=s:"array"===e&&"array"===s&&(t[t.length]=s)}if(t.length)return t}else{if(_[r])return[r];if("array"===e&&"array"===r)return["array"]}}function n(e){for(var r={},t=0;t<e.length;t++)r[e[t]]=!0;return r}function l(e){return"number"==typeof e?"["+e+"]":x.test(e)?"."+e:"['"+h(e)+"']"}function h(e){return e.replace(F,"\\$&").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\f/g,"\\f").replace(/\t/g,"\\t")}function u(e,r){r+="[^0-9]";var t=e.match(new RegExp(r,"g"));return t?t.length:0}function c(e,r,t){return r+="([^0-9])",t=t.replace(/\$/g,"$$$$"),e.replace(new RegExp(r,"g"),t+"$1")}function f(e){return e.replace($,"").replace(R,"").replace(O,"if (!($1))")}function d(e,r){var t=e.match(D);return t&&2==t.length&&(e=r?e.replace(A,"").replace(C,L):e.replace(I,"").replace(k,q)),t=e.match(z),t&&3===t.length?e.replace(Q,""):e}function p(e,r){if("boolean"==typeof e)return!e;for(var t in e)if(r[t])return!0}function m(e,r,t){if("boolean"==typeof e)return!e&&"not"!=t;for(var a in e)if(a!=t&&r[a])return!0}function v(e){return"'"+h(e)+"'"}function y(e,r,t,a){return E(e,t?"'/' + "+r+(a?"":".replace(/~/g, '~0').replace(/\\//g, '~1')"):a?"'[' + "+r+" + ']'":"'[\\'' + "+r+" + '\\']'")}function g(e,r,t){return E(e,v(t?"/"+j(r):l(r)))}function P(e,r,t){var a,s,o,i;if(""===e)return"rootData";if("/"==e[0]){if(!U.test(e))throw new Error("Invalid JSON-pointer: "+e);s=e,o="rootData"}else{if(!(i=e.match(V)))throw new Error("Invalid JSON-pointer: "+e);if(a=+i[1],"#"==(s=i[2])){if(a>=r)throw new Error("Cannot access property/index "+a+" levels up, current level is "+r);return t[r-a]}if(a>r)throw new Error("Cannot access data "+a+" levels up, current level is "+r);if(o="data"+(r-a||""),!s)return o}for(var n=o,h=s.split("/"),u=0;u<h.length;u++){var c=h[u];c&&(n+=" && "+(o+=l(S(c))))}return n}function E(e,r){return'""'==e?r:(e+" + "+r).replace(/' \+ '/g,"")}function b(e){return S(decodeURIComponent(e))}function w(e){return encodeURIComponent(j(e))}function j(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function S(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}r.exports={copy:a,checkDataType:s,checkDataTypes:o,coerceToTypes:i,toHash:n,getProperty:l,escapeQuotes:h,equal:e("fast-deep-equal"),ucs2length:e("./ucs2length"),varOccurences:u,varReplace:c,cleanUpCode:f,finalCleanUpCode:d,schemaHasRules:p,schemaHasRulesExcept:m,toQuotedString:v,getPathExpr:y,getPath:g,getData:P,unescapeFragment:b,unescapeJsonPointer:S,escapeFragment:w,escapeJsonPointer:j};var _=n(["string","number","integer","boolean","null"]),x=/^[a-z$_][a-z$_0-9]*$/i,F=/'|\\/g,$=/else\s*{\s*}/g,R=/if\s*\([^)]+\)\s*\{\s*\}(?!\s*else)/g,O=/if\s*\(([^)]+)\)\s*\{\s*\}\s*else(?!\s*if)/g,D=/[^v.]errors/g,I=/var errors = 0;|var vErrors = null;|validate.errors = vErrors;/g,A=/var errors = 0;|var vErrors = null;/g,k="return errors === 0;",q="validate.errors = null; return true;",C=/if \(errors === 0\) return data;\s*else throw new ValidationError\(vErrors\);/,L="return data;",z=/[^A-Za-z_$]rootData[^A-Za-z0-9_$]/g,Q=/if \(rootData === undefined\) rootData = data;/,U=/^\/(?:[^~]|~0|~1)*$/,V=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/},{"./ucs2length":11,"fast-deep-equal":41}],13:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),h=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(i||""),f=e.opts.$data&&n&&n.$data;f?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ",a="schema"+o):a=n;var d="maximum"==r,p=d?"exclusiveMaximum":"exclusiveMinimum",m=e.schema[p],v=e.opts.$data&&m&&m.$data,y=d?"<":">",g=d?">":"<",P=void 0;if(v){var E=e.util.getData(m.$data,i,e.dataPathArr),b="exclusive"+o,w="exclType"+o,j="exclIsNumber"+o,S="' + "+(_="op"+o)+" + '";s+=" var schemaExcl"+o+" = "+E+"; ",s+=" var "+b+"; var "+w+" = typeof "+(E="schemaExcl"+o)+"; if ("+w+" != 'boolean' && "+w+" != 'undefined' && "+w+" != 'number') { ";P=p;(x=x||[]).push(s),s="",!1!==e.createErrors?(s+=" { keyword: '"+(P||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(h)+" , params: {} ",!1!==e.opts.messages&&(s+=" , message: '"+p+" should be boolean' "),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";F=s;s=x.pop(),s+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+F+"]); ":" validate.errors = ["+F+"]; return false; ":" var err = "+F+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } else if ( ",f&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=" "+w+" == 'number' ? ( ("+b+" = "+a+" === undefined || "+E+" "+y+"= "+a+") ? "+c+" "+g+"= "+E+" : "+c+" "+g+" "+a+" ) : ( ("+b+" = "+E+" === true) ? "+c+" "+g+"= "+a+" : "+c+" "+g+" "+a+" ) || "+c+" !== "+c+") { var op"+o+" = "+b+" ? '"+y+"' : '"+y+"=';"}else{S=y;if((j="number"==typeof m)&&f){_="'"+S+"'";s+=" if ( ",f&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=" ( "+a+" === undefined || "+m+" "+y+"= "+a+" ? "+c+" "+g+"= "+m+" : "+c+" "+g+" "+a+" ) || "+c+" !== "+c+") { "}else{j&&void 0===n?(b=!0,P=p,h=e.errSchemaPath+"/"+p,a=m,g+="="):(j&&(a=Math[d?"min":"max"](m,n)),m===(!j||a)?(b=!0,P=p,h=e.errSchemaPath+"/"+p,g+="="):(b=!1,S+="="));var _="'"+S+"'";s+=" if ( ",f&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=" "+c+" "+g+" "+a+" || "+c+" !== "+c+") { "}}P=P||r;var x=x||[];x.push(s),s="",!1!==e.createErrors?(s+=" { keyword: '"+(P||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(h)+" , params: { comparison: "+_+", limit: "+a+", exclusive: "+b+" } ",!1!==e.opts.messages&&(s+=" , message: 'should be "+S+" ",s+=f?"' + "+a:a+"'"),e.opts.verbose&&(s+=" , schema: ",s+=f?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";var F=s;return s=x.pop(),s+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+F+"]); ":" validate.errors = ["+F+"]; return false; ":" var err = "+F+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } ",u&&(s+=" else { "),s}},{}],14:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),h=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(i||""),f=e.opts.$data&&n&&n.$data;f?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ",a="schema"+o):a=n;var d="maxItems"==r?">":"<";s+="if ( ",f&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=" "+c+".length "+d+" "+a+") { ";var p=r,m=m||[];m.push(s),s="",!1!==e.createErrors?(s+=" { keyword: '"+(p||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(h)+" , params: { limit: "+a+" } ",!1!==e.opts.messages&&(s+=" , message: 'should NOT have ",s+="maxItems"==r?"more":"less",s+=" than ",s+=f?"' + "+a+" + '":""+n,s+=" items' "),e.opts.verbose&&(s+=" , schema: ",s+=f?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";var v=s;return s=m.pop(),s+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+v+"]); ":" validate.errors = ["+v+"]; return false; ":" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",u&&(s+=" else { "),s}},{}],15:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),h=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(i||""),f=e.opts.$data&&n&&n.$data;f?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ",a="schema"+o):a=n;var d="maxLength"==r?">":"<";s+="if ( ",f&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=!1===e.opts.unicode?" "+c+".length ":" ucs2length("+c+") ",s+=" "+d+" "+a+") { ";var p=r,m=m||[];m.push(s),s="",!1!==e.createErrors?(s+=" { keyword: '"+(p||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(h)+" , params: { limit: "+a+" } ",!1!==e.opts.messages&&(s+=" , message: 'should NOT be ",s+="maxLength"==r?"longer":"shorter",s+=" than ",s+=f?"' + "+a+" + '":""+n,s+=" characters' "),e.opts.verbose&&(s+=" , schema: ",s+=f?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";var v=s;return s=m.pop(),s+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+v+"]); ":" validate.errors = ["+v+"]; return false; ":" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",u&&(s+=" else { "),s}},{}],16:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),h=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(i||""),f=e.opts.$data&&n&&n.$data;f?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ",a="schema"+o):a=n;var d="maxProperties"==r?">":"<";s+="if ( ",f&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=" Object.keys("+c+").length "+d+" "+a+") { ";var p=r,m=m||[];m.push(s),s="",!1!==e.createErrors?(s+=" { keyword: '"+(p||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(h)+" , params: { limit: "+a+" } ",!1!==e.opts.messages&&(s+=" , message: 'should NOT have ",s+="maxProperties"==r?"more":"less",s+=" than ",s+=f?"' + "+a+" + '":""+n,s+=" properties' "),e.opts.verbose&&(s+=" , schema: ",s+=f?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";var v=s;return s=m.pop(),s+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+v+"]); ":" validate.errors = ["+v+"]; return false; ":" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",u&&(s+=" else { "),s}},{}],17:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.schema[r],o=e.schemaPath+e.util.getProperty(r),i=e.errSchemaPath+"/"+r,n=!e.opts.allErrors,l=e.util.copy(e),h="",u="valid"+ ++l.level,c=l.baseId,f=!0,d=s;if(d)for(var p,m=-1,v=d.length-1;m<v;)p=d[m+=1],e.util.schemaHasRules(p,e.RULES.all)&&(f=!1,l.schema=p,l.schemaPath=o+"["+m+"]",l.errSchemaPath=i+"/"+m,a+=" "+e.validate(l)+" ",l.baseId=c,n&&(a+=" if ("+u+") { ",h+="}"));return n&&(a+=f?" if (true) { ":" "+h.slice(0,-1)+" "),a=e.util.cleanUpCode(a)}},{}],18:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(o||""),c="valid"+s,f="errs__"+s,d=e.util.copy(e),p="",m="valid"+ ++d.level;if(i.every(function(r){return e.util.schemaHasRules(r,e.RULES.all)})){var v=d.baseId;a+=" var "+f+" = errors; var "+c+" = false; ";var y=e.compositeRule;e.compositeRule=d.compositeRule=!0;var g=i;if(g)for(var P,E=-1,b=g.length-1;E<b;)P=g[E+=1],d.schema=P,d.schemaPath=n+"["+E+"]",d.errSchemaPath=l+"/"+E,a+=" "+e.validate(d)+" ",d.baseId=v,a+=" "+c+" = "+c+" || "+m+"; if (!"+c+") { ",p+="}";e.compositeRule=d.compositeRule=y,a+=" "+p+" if (!"+c+") { var err = ",!1!==e.createErrors?(a+=" { keyword: 'anyOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(a+=" , message: 'should match some schema in anyOf' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&h&&(a+=e.async?" throw new ValidationError(vErrors); ":" validate.errors = vErrors; return false; "),a+=" } else { errors = "+f+"; if (vErrors !== null) { if ("+f+") vErrors.length = "+f+"; else vErrors = null; } ",e.opts.allErrors&&(a+=" } "),a=e.util.cleanUpCode(a)}else h&&(a+=" if (true) { ");return a}},{}],19:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(o||""),c="valid"+s,f=e.opts.$data&&i&&i.$data;f&&(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; "),f||(a+=" var schema"+s+" = validate.schema"+n+";"),a+="var "+c+" = equal("+u+", schema"+s+"); if (!"+c+") { ";var d=d||[];d.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'const' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(a+=" , message: 'should be equal to constant' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var p=a;return a=d.pop(),a+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+p+"]); ":" validate.errors = ["+p+"]; return false; ":" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" }",h&&(a+=" else { "),a}},{}],20:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(o||""),c="valid"+s,f="errs__"+s,d=e.util.copy(e),p="valid"+ ++d.level,m="i"+s,v=d.dataLevel=e.dataLevel+1,y="data"+v,g=e.baseId,P=e.util.schemaHasRules(i,e.RULES.all);if(a+="var "+f+" = errors;var "+c+";",P){var E=e.compositeRule;e.compositeRule=d.compositeRule=!0,d.schema=i,d.schemaPath=n,d.errSchemaPath=l,a+=" var "+p+" = false; for (var "+m+" = 0; "+m+" < "+u+".length; "+m+"++) { ",d.errorPath=e.util.getPathExpr(e.errorPath,m,e.opts.jsonPointers,!0);var b=u+"["+m+"]";d.dataPathArr[v]=m;var w=e.validate(d);d.baseId=g,e.util.varOccurences(w,y)<2?a+=" "+e.util.varReplace(w,y,b)+" ":a+=" var "+y+" = "+b+"; "+w+" ",a+=" if ("+p+") break; } ",e.compositeRule=d.compositeRule=E,a+=" if (!"+p+") {"}else a+=" if ("+u+".length == 0) {";var j=j||[];j.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'contains' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(a+=" , message: 'should contain a valid item' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var S=a;return a=j.pop(),a+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+S+"]); ":" validate.errors = ["+S+"]; return false; ":" var err = "+S+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else { ",P&&(a+=" errors = "+f+"; if (vErrors !== null) { if ("+f+") vErrors.length = "+f+"; else vErrors = null; } "),e.opts.allErrors&&(a+=" } "),a=e.util.cleanUpCode(a)}},{}],21:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s,o=" ",i=e.level,n=e.dataLevel,l=e.schema[r],h=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,f="data"+(n||""),d="valid"+i,p="errs__"+i,m=e.opts.$data&&l&&l.$data;m?(o+=" var schema"+i+" = "+e.util.getData(l.$data,n,e.dataPathArr)+"; ",s="schema"+i):s=l;var v,y,g,P,E,b=this,w="definition"+i,j=b.definition,S="";if(m&&j.$data){E="keywordValidate"+i;var _=j.validateSchema;o+=" var "+w+" = RULES.custom['"+r+"'].definition; var "+E+" = "+w+".validate;"}else{if(!(P=e.useCustomRule(b,l,e.schema,e)))return;s="validate.schema"+h,E=P.code,v=j.compile,y=j.inline,g=j.macro}var x=E+".errors",F="i"+i,$="ruleErr"+i,R=j.async;if(R&&!e.async)throw new Error("async keyword in sync schema");if(y||g||(o+=x+" = null;"),o+="var "+p+" = errors;var "+d+";",m&&j.$data&&(S+="}",o+=" if ("+s+" === undefined) { "+d+" = true; } else { ",_&&(S+="}",o+=" "+d+" = "+w+".validateSchema("+s+"); if ("+d+") { ")),y)o+=j.statements?" "+P.validate+" ":" "+d+" = "+P.validate+"; ";else if(g){var O=e.util.copy(e),S="",D="valid"+ ++O.level;O.schema=P.validate,O.schemaPath="";var I=e.compositeRule;e.compositeRule=O.compositeRule=!0;var A=e.validate(O).replace(/validate\.schema/g,E);e.compositeRule=O.compositeRule=I,o+=" "+A}else{(L=L||[]).push(o),o="",o+=" "+E+".call( ",o+=e.opts.passContext?"this":"self",o+=v||!1===j.schema?" , "+f+" ":" , "+s+" , "+f+" , validate.schema"+e.schemaPath+" ",o+=" , (dataPath || '')",'""'!=e.errorPath&&(o+=" + "+e.errorPath);var k=n?"data"+(n-1||""):"parentData",q=n?e.dataPathArr[n]:"parentDataProperty",C=o+=" , "+k+" , "+q+" , rootData ) ";o=L.pop(),!1===j.errors?(o+=" "+d+" = ",R&&(o+=""+e.yieldAwait),o+=C+"; "):o+=R?" var "+(x="customErrors"+i)+" = null; try { "+d+" = "+e.yieldAwait+C+"; } catch (e) { "+d+" = false; if (e instanceof ValidationError) "+x+" = e.errors; else throw e; } ":" "+x+" = null; "+d+" = "+C+"; "}if(j.modifying&&(o+=" if ("+k+") "+f+" = "+k+"["+q+"];"),o+=""+S,j.valid)c&&(o+=" if (true) { ");else{o+=" if ( ",void 0===j.valid?(o+=" !",o+=g?""+D:""+d):o+=" "+!j.valid+" ",o+=") { ",a=b.keyword;var L=L||[];L.push(o),o="",(L=L||[]).push(o),o="",!1!==e.createErrors?(o+=" { keyword: '"+(a||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { keyword: '"+b.keyword+"' } ",!1!==e.opts.messages&&(o+=" , message: 'should pass \""+b.keyword+"\" keyword validation' "),e.opts.verbose&&(o+=" , schema: validate.schema"+h+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),o+=" } "):o+=" {} ";var z=o;o=L.pop();var Q=o+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+z+"]); ":" validate.errors = ["+z+"]; return false; ":" var err = "+z+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ";o=L.pop(),y?j.errors?"full"!=j.errors&&(o+=" for (var "+F+"="+p+"; "+F+"<errors; "+F+"++) { var "+$+" = vErrors["+F+"]; if ("+$+".dataPath === undefined) "+$+".dataPath = (dataPath || '') + "+e.errorPath+"; if ("+$+".schemaPath === undefined) { "+$+'.schemaPath = "'+u+'"; } ',e.opts.verbose&&(o+=" "+$+".schema = "+s+"; "+$+".data = "+f+"; "),o+=" } "):!1===j.errors?o+=" "+Q+" ":(o+=" if ("+p+" == errors) { "+Q+" } else { for (var "+F+"="+p+"; "+F+"<errors; "+F+"++) { var "+$+" = vErrors["+F+"]; if ("+$+".dataPath === undefined) "+$+".dataPath = (dataPath || '') + "+e.errorPath+"; if ("+$+".schemaPath === undefined) { "+$+'.schemaPath = "'+u+'"; } ',e.opts.verbose&&(o+=" "+$+".schema = "+s+"; "+$+".data = "+f+"; "),o+=" } } "):g?(o+=" var err = ",!1!==e.createErrors?(o+=" { keyword: '"+(a||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { keyword: '"+b.keyword+"' } ",!1!==e.opts.messages&&(o+=" , message: 'should pass \""+b.keyword+"\" keyword validation' "),e.opts.verbose&&(o+=" , schema: validate.schema"+h+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+f+" "),o+=" } "):o+=" {} ",o+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&c&&(o+=e.async?" throw new ValidationError(vErrors); ":" validate.errors = vErrors; return false; ")):!1===j.errors?o+=" "+Q+" ":(o+=" if (Array.isArray("+x+")) { if (vErrors === null) vErrors = "+x+"; else vErrors = vErrors.concat("+x+"); errors = vErrors.length; for (var "+F+"="+p+"; "+F+"<errors; "+F+"++) { var "+$+" = vErrors["+F+"]; if ("+$+".dataPath === undefined) "+$+".dataPath = (dataPath || '') + "+e.errorPath+"; "+$+'.schemaPath = "'+u+'"; ',e.opts.verbose&&(o+=" "+$+".schema = "+s+"; "+$+".data = "+f+"; "),o+=" } } else { "+Q+" } "),o+=" } ",c&&(o+=" else { ")}return o}},{}],22:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(o||""),c="errs__"+s,f=e.util.copy(e),d="",p="valid"+ ++f.level,m={},v={},y=e.opts.ownProperties;for(b in i){var g=i[b],P=Array.isArray(g)?v:m;P[b]=g}a+="var "+c+" = errors;";var E=e.errorPath;a+="var missing"+s+";";for(var b in v)if((P=v[b]).length){if(a+=" if ( "+u+e.util.getProperty(b)+" !== undefined ",y&&(a+=" && Object.prototype.hasOwnProperty.call("+u+", '"+e.util.escapeQuotes(b)+"') "),h){a+=" && ( ";var w=P;if(w)for(var j=-1,S=w.length-1;j<S;)O=w[j+=1],j&&(a+=" || "),a+=" ( ( "+(k=u+(A=e.util.getProperty(O)))+" === undefined ",y&&(a+=" || ! Object.prototype.hasOwnProperty.call("+u+", '"+e.util.escapeQuotes(O)+"') "),a+=") && (missing"+s+" = "+e.util.toQuotedString(e.opts.jsonPointers?O:A)+") ) ";a+=")) { ";var _="missing"+s,x="' + "+_+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.opts.jsonPointers?e.util.getPathExpr(E,_,!0):E+" + "+_);var F=F||[];F.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'dependencies' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { property: '"+e.util.escapeQuotes(b)+"', missingProperty: '"+x+"', depsCount: "+P.length+", deps: '"+e.util.escapeQuotes(1==P.length?P[0]:P.join(", "))+"' } ",!1!==e.opts.messages&&(a+=" , message: 'should have ",a+=1==P.length?"property "+e.util.escapeQuotes(P[0]):"properties "+e.util.escapeQuotes(P.join(", ")),a+=" when property "+e.util.escapeQuotes(b)+" is present' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var $=a;a=F.pop(),a+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+$+"]); ":" validate.errors = ["+$+"]; return false; ":" var err = "+$+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}else{a+=" ) { ";var R=P;if(R)for(var O,D=-1,I=R.length-1;D<I;){O=R[D+=1];var A=e.util.getProperty(O),x=e.util.escapeQuotes(O),k=u+A;e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(E,O,e.opts.jsonPointers)),a+=" if ( "+k+" === undefined ",y&&(a+=" || ! Object.prototype.hasOwnProperty.call("+u+", '"+e.util.escapeQuotes(O)+"') "),a+=") { var err = ",!1!==e.createErrors?(a+=" { keyword: 'dependencies' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { property: '"+e.util.escapeQuotes(b)+"', missingProperty: '"+x+"', depsCount: "+P.length+", deps: '"+e.util.escapeQuotes(1==P.length?P[0]:P.join(", "))+"' } ",!1!==e.opts.messages&&(a+=" , message: 'should have ",a+=1==P.length?"property "+e.util.escapeQuotes(P[0]):"properties "+e.util.escapeQuotes(P.join(", ")),a+=" when property "+e.util.escapeQuotes(b)+" is present' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } "}}a+=" } ",h&&(d+="}",a+=" else { ")}e.errorPath=E;var q=f.baseId;for(var b in m){g=m[b];e.util.schemaHasRules(g,e.RULES.all)&&(a+=" "+p+" = true; if ( "+u+e.util.getProperty(b)+" !== undefined ",y&&(a+=" && Object.prototype.hasOwnProperty.call("+u+", '"+e.util.escapeQuotes(b)+"') "),a+=") { ",f.schema=g,f.schemaPath=n+e.util.getProperty(b),f.errSchemaPath=l+"/"+e.util.escapeFragment(b),a+=" "+e.validate(f)+" ",f.baseId=q,a+=" } ",h&&(a+=" if ("+p+") { ",d+="}"))}return h&&(a+=" "+d+" if ("+c+" == errors) {"),a=e.util.cleanUpCode(a)}},{}],23:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(o||""),c="valid"+s,f=e.opts.$data&&i&&i.$data;f&&(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ");var d="i"+s,p="schema"+s;f||(a+=" var "+p+" = validate.schema"+n+";"),a+="var "+c+";",f&&(a+=" if (schema"+s+" === undefined) "+c+" = true; else if (!Array.isArray(schema"+s+")) "+c+" = false; else {"),a+=c+" = false;for (var "+d+"=0; "+d+"<"+p+".length; "+d+"++) if (equal("+u+", "+p+"["+d+"])) { "+c+" = true; break; }",f&&(a+=" } "),a+=" if (!"+c+") { ";var m=m||[];m.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'enum' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { allowedValues: schema"+s+" } ",!1!==e.opts.messages&&(a+=" , message: 'should be equal to one of the allowed values' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var v=a;return a=m.pop(),a+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+v+"]); ":" validate.errors = ["+v+"]; return false; ":" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" }",h&&(a+=" else { "),a}},{}],24:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(o||"");if(!1===e.opts.format)return h&&(a+=" if (true) { "),a;var c,f=e.opts.$data&&i&&i.$data;f?(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ",c="schema"+s):c=i;var d=e.opts.unknownFormats,p=Array.isArray(d);if(f)a+=" var "+(m="format"+s)+" = formats["+c+"]; var "+(v="isObject"+s)+" = typeof "+m+" == 'object' && !("+m+" instanceof RegExp) && "+m+".validate; var "+(y="formatType"+s)+" = "+v+" && "+m+".type || 'string'; if ("+v+") { ",e.async&&(a+=" var async"+s+" = "+m+".async; "),a+=" "+m+" = "+m+".validate; } if ( ",f&&(a+=" ("+c+" !== undefined && typeof "+c+" != 'string') || "),a+=" (","ignore"!=d&&(a+=" ("+c+" && !"+m+" ",p&&(a+=" && self._opts.unknownFormats.indexOf("+c+") == -1 "),a+=") || "),a+=" ("+m+" && "+y+" == '"+t+"' && !(typeof "+m+" == 'function' ? ",a+=e.async?" (async"+s+" ? "+e.yieldAwait+" "+m+"("+u+") : "+m+"("+u+")) ":" "+m+"("+u+") ",a+=" : "+m+".test("+u+"))))) {";else{var m=e.formats[i];if(!m){if("ignore"==d)return console.warn('unknown format "'+i+'" ignored in schema at path "'+e.errSchemaPath+'"'),h&&(a+=" if (true) { "),a;if(p&&d.indexOf(i)>=0)return h&&(a+=" if (true) { "),a;throw new Error('unknown format "'+i+'" is used in schema at path "'+e.errSchemaPath+'"')}var v="object"==typeof m&&!(m instanceof RegExp)&&m.validate,y=v&&m.type||"string";if(v){var g=!0===m.async;m=m.validate}if(y!=t)return h&&(a+=" if (true) { "),a;if(g){if(!e.async)throw new Error("async format in sync schema");P="formats"+e.util.getProperty(i)+".validate";a+=" if (!("+e.yieldAwait+" "+P+"("+u+"))) { "}else{a+=" if (! ";var P="formats"+e.util.getProperty(i);v&&(P+=".validate"),a+="function"==typeof m?" "+P+"("+u+") ":" "+P+".test("+u+") ",a+=") { "}}var E=E||[];E.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'format' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { format: ",a+=f?""+c:""+e.util.toQuotedString(i),a+=" } ",!1!==e.opts.messages&&(a+=" , message: 'should match format \"",a+=f?"' + "+c+" + '":""+e.util.escapeQuotes(i),a+="\"' "),e.opts.verbose&&(a+=" , schema: ",a+=f?"validate.schema"+n:""+e.util.toQuotedString(i),a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var b=a;return a=E.pop(),a+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+b+"]); ":" validate.errors = ["+b+"]; return false; ":" var err = "+b+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",h&&(a+=" else { "),a}},{}],25:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(o||""),c="valid"+s,f="errs__"+s,d=e.util.copy(e),p="",m="valid"+ ++d.level,v="i"+s,y=d.dataLevel=e.dataLevel+1,g="data"+y,P=e.baseId;if(a+="var "+f+" = errors;var "+c+";",Array.isArray(i)){var E=e.schema.additionalItems;if(!1===E){a+=" "+c+" = "+u+".length <= "+i.length+"; ";var b=l;l=e.errSchemaPath+"/additionalItems",a+=" if (!"+c+") { ";var w=w||[];w.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'additionalItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { limit: "+i.length+" } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT have more than "+i.length+" items' "),e.opts.verbose&&(a+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var j=a;a=w.pop(),a+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+j+"]); ":" validate.errors = ["+j+"]; return false; ":" var err = "+j+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",l=b,h&&(p+="}",a+=" else { ")}var S=i;if(S)for(var _,x=-1,F=S.length-1;x<F;)if(_=S[x+=1],e.util.schemaHasRules(_,e.RULES.all)){a+=" "+m+" = true; if ("+u+".length > "+x+") { ";$=u+"["+x+"]";d.schema=_,d.schemaPath=n+"["+x+"]",d.errSchemaPath=l+"/"+x,d.errorPath=e.util.getPathExpr(e.errorPath,x,e.opts.jsonPointers,!0),d.dataPathArr[y]=x;R=e.validate(d);d.baseId=P,e.util.varOccurences(R,g)<2?a+=" "+e.util.varReplace(R,g,$)+" ":a+=" var "+g+" = "+$+"; "+R+" ",a+=" } ",h&&(a+=" if ("+m+") { ",p+="}")}if("object"==typeof E&&e.util.schemaHasRules(E,e.RULES.all)){d.schema=E,d.schemaPath=e.schemaPath+".additionalItems",d.errSchemaPath=e.errSchemaPath+"/additionalItems",a+=" "+m+" = true; if ("+u+".length > "+i.length+") { for (var "+v+" = "+i.length+"; "+v+" < "+u+".length; "+v+"++) { ",d.errorPath=e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers,!0);$=u+"["+v+"]";d.dataPathArr[y]=v;R=e.validate(d);d.baseId=P,e.util.varOccurences(R,g)<2?a+=" "+e.util.varReplace(R,g,$)+" ":a+=" var "+g+" = "+$+"; "+R+" ",h&&(a+=" if (!"+m+") break; "),a+=" } } ",h&&(a+=" if ("+m+") { ",p+="}")}}else if(e.util.schemaHasRules(i,e.RULES.all)){d.schema=i,d.schemaPath=n,d.errSchemaPath=l,a+=" for (var "+v+" = 0; "+v+" < "+u+".length; "+v+"++) { ",d.errorPath=e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers,!0);var $=u+"["+v+"]";d.dataPathArr[y]=v;var R=e.validate(d);d.baseId=P,e.util.varOccurences(R,g)<2?a+=" "+e.util.varReplace(R,g,$)+" ":a+=" var "+g+" = "+$+"; "+R+" ",h&&(a+=" if (!"+m+") break; "),a+=" }"}return h&&(a+=" "+p+" if ("+f+" == errors) {"),a=e.util.cleanUpCode(a)}},{}],26:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),h=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(i||""),f=e.opts.$data&&n&&n.$data;f?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ",a="schema"+o):a=n,s+="var division"+o+";if (",f&&(s+=" "+a+" !== undefined && ( typeof "+a+" != 'number' || "),s+=" (division"+o+" = "+c+" / "+a+", ",s+=e.opts.multipleOfPrecision?" Math.abs(Math.round(division"+o+") - division"+o+") > 1e-"+e.opts.multipleOfPrecision+" ":" division"+o+" !== parseInt(division"+o+") ",s+=" ) ",f&&(s+=" ) "),s+=" ) { ";var d=d||[];d.push(s),s="",!1!==e.createErrors?(s+=" { keyword: 'multipleOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(h)+" , params: { multipleOf: "+a+" } ",!1!==e.opts.messages&&(s+=" , message: 'should be multiple of ",s+=f?"' + "+a:a+"'"),e.opts.verbose&&(s+=" , schema: ",s+=f?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";var p=s;return s=d.pop(),s+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+p+"]); ":" validate.errors = ["+p+"]; return false; ":" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",u&&(s+=" else { "),s}},{}],27:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(o||""),c="errs__"+s,f=e.util.copy(e),d="valid"+ ++f.level;if(e.util.schemaHasRules(i,e.RULES.all)){f.schema=i,f.schemaPath=n,f.errSchemaPath=l,a+=" var "+c+" = errors; ";var p=e.compositeRule;e.compositeRule=f.compositeRule=!0,f.createErrors=!1;var m;f.opts.allErrors&&(m=f.opts.allErrors,f.opts.allErrors=!1),a+=" "+e.validate(f)+" ",f.createErrors=!0,m&&(f.opts.allErrors=m),e.compositeRule=f.compositeRule=p,a+=" if ("+d+") { ";var v=v||[];v.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(a+=" , message: 'should NOT be valid' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var y=a;a=v.pop(),a+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+y+"]); ":" validate.errors = ["+y+"]; return false; ":" var err = "+y+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else { errors = "+c+"; if (vErrors !== null) { if ("+c+") vErrors.length = "+c+"; else vErrors = null; } ",e.opts.allErrors&&(a+=" } ")}else a+=" var err = ",!1!==e.createErrors?(a+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(a+=" , message: 'should NOT be valid' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",h&&(a+=" if (false) { ");return a}},{}],28:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(o||""),c="valid"+s,f="errs__"+s,d=e.util.copy(e),p="",m="valid"+ ++d.level;a+="var "+f+" = errors;var prevValid"+s+" = false;var "+c+" = false;";var v=d.baseId,y=e.compositeRule;e.compositeRule=d.compositeRule=!0;var g=i;if(g)for(var P,E=-1,b=g.length-1;E<b;)P=g[E+=1],e.util.schemaHasRules(P,e.RULES.all)?(d.schema=P,d.schemaPath=n+"["+E+"]",d.errSchemaPath=l+"/"+E,a+=" "+e.validate(d)+" ",d.baseId=v):a+=" var "+m+" = true; ",E&&(a+=" if ("+m+" && prevValid"+s+") "+c+" = false; else { ",p+="}"),a+=" if ("+m+") "+c+" = prevValid"+s+" = true;";return e.compositeRule=d.compositeRule=y,a+=p+"if (!"+c+") { var err = ",!1!==e.createErrors?(a+=" { keyword: 'oneOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(a+=" , message: 'should match exactly one schema in oneOf' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&h&&(a+=e.async?" throw new ValidationError(vErrors); ":" validate.errors = vErrors; return false; "),a+="} else { errors = "+f+"; if (vErrors !== null) { if ("+f+") vErrors.length = "+f+"; else vErrors = null; }",e.opts.allErrors&&(a+=" } "),a}},{}],29:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),h=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(i||""),f=e.opts.$data&&n&&n.$data;f?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ",a="schema"+o):a=n;var d=f?"(new RegExp("+a+"))":e.usePattern(n);s+="if ( ",f&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'string') || "),s+=" !"+d+".test("+c+") ) { ";var p=p||[];p.push(s),s="",!1!==e.createErrors?(s+=" { keyword: 'pattern' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(h)+" , params: { pattern: ",s+=f?""+a:""+e.util.toQuotedString(n),s+=" } ",!1!==e.opts.messages&&(s+=" , message: 'should match pattern \"",s+=f?"' + "+a+" + '":""+e.util.escapeQuotes(n),s+="\"' "),e.opts.verbose&&(s+=" , schema: ",s+=f?"validate.schema"+l:""+e.util.toQuotedString(n),s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";var m=s;return s=p.pop(),s+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",u&&(s+=" else { "),s}},{}],30:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(o||""),c="valid"+s,f="errs__"+s,d=e.util.copy(e),p="",m="valid"+ ++d.level,v="key"+s,y="idx"+s,g=d.dataLevel=e.dataLevel+1,P="data"+g,E="dataProperties"+s,b=Object.keys(i||{}),w=e.schema.patternProperties||{},j=Object.keys(w),S=e.schema.additionalProperties,_=b.length||j.length,x=!1===S,F="object"==typeof S&&Object.keys(S).length,$=e.opts.removeAdditional,R=x||F||$,O=e.opts.ownProperties,D=e.baseId,I=e.schema.required;if(I&&(!e.opts.v5||!I.$data)&&I.length<e.opts.loopRequired)var A=e.util.toHash(I);if(e.opts.patternGroups)var k=e.schema.patternGroups||{},q=Object.keys(k);if(a+="var "+f+" = errors;var "+m+" = true;",O&&(a+=" var "+E+" = undefined;"),R){if(a+=O?" "+E+" = "+E+" || Object.keys("+u+"); for (var "+y+"=0; "+y+"<"+E+".length; "+y+"++) { var "+v+" = "+E+"["+y+"]; ":" for (var "+v+" in "+u+") { ",_){if(a+=" var isAdditional"+s+" = !(false ",b.length)if(b.length>5)a+=" || validate.schema"+n+"["+v+"] ";else{var C=b;if(C)for(var L=-1,z=C.length-1;L<z;)J=C[L+=1],a+=" || "+v+" == "+e.util.toQuotedString(J)+" "}if(j.length){var Q=j;if(Q)for(var U=-1,V=Q.length-1;U<V;)oe=Q[U+=1],a+=" || "+e.usePattern(oe)+".test("+v+") "}if(e.opts.patternGroups&&q.length){var N=q;if(N)for(var U=-1,T=N.length-1;U<T;)he=N[U+=1],a+=" || "+e.usePattern(he)+".test("+v+") "}a+=" ); if (isAdditional"+s+") { "}if("all"==$)a+=" delete "+u+"["+v+"]; ";else{var M=e.errorPath,B="' + "+v+" + '";if(e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers)),x)if($)a+=" delete "+u+"["+v+"]; ";else{a+=" "+m+" = false; ";te=l;l=e.errSchemaPath+"/additionalProperties",(Ee=Ee||[]).push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'additionalProperties' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { additionalProperty: '"+B+"' } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT have additional properties' "),e.opts.verbose&&(a+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";be=a;a=Ee.pop(),a+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+be+"]); ":" validate.errors = ["+be+"]; return false; ":" var err = "+be+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l=te,h&&(a+=" break; ")}else if(F)if("failing"==$){a+=" var "+f+" = errors; ";var H=e.compositeRule;e.compositeRule=d.compositeRule=!0,d.schema=S,d.schemaPath=e.schemaPath+".additionalProperties",d.errSchemaPath=e.errSchemaPath+"/additionalProperties",d.errorPath=e.opts._errorDataPathProperty?e.errorPath:e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers);X=u+"["+v+"]";d.dataPathArr[g]=v;pe=e.validate(d);d.baseId=D,e.util.varOccurences(pe,P)<2?a+=" "+e.util.varReplace(pe,P,X)+" ":a+=" var "+P+" = "+X+"; "+pe+" ",a+=" if (!"+m+") { errors = "+f+"; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete "+u+"["+v+"]; } ",e.compositeRule=d.compositeRule=H}else{d.schema=S,d.schemaPath=e.schemaPath+".additionalProperties",d.errSchemaPath=e.errSchemaPath+"/additionalProperties",d.errorPath=e.opts._errorDataPathProperty?e.errorPath:e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers);X=u+"["+v+"]";d.dataPathArr[g]=v;pe=e.validate(d);d.baseId=D,e.util.varOccurences(pe,P)<2?a+=" "+e.util.varReplace(pe,P,X)+" ":a+=" var "+P+" = "+X+"; "+pe+" ",h&&(a+=" if (!"+m+") break; ")}e.errorPath=M}_&&(a+=" } "),a+=" } ",h&&(a+=" if ("+m+") { ",p+="}")}var K=e.opts.useDefaults&&!e.compositeRule;if(b.length){var G=b;if(G)for(var J,Z=-1,Y=G.length-1;Z<Y;){de=i[J=G[Z+=1]];if(e.util.schemaHasRules(de,e.RULES.all)){var W=e.util.getProperty(J),X=u+W,ee=K&&void 0!==de.default;d.schema=de,d.schemaPath=n+W,d.errSchemaPath=l+"/"+e.util.escapeFragment(J),d.errorPath=e.util.getPath(e.errorPath,J,e.opts.jsonPointers),d.dataPathArr[g]=e.util.toQuotedString(J);pe=e.validate(d);if(d.baseId=D,e.util.varOccurences(pe,P)<2){pe=e.util.varReplace(pe,P,X);re=X}else{var re=P;a+=" var "+P+" = "+X+"; "}if(ee)a+=" "+pe+" ";else{if(A&&A[J]){a+=" if ( "+re+" === undefined ",O&&(a+=" || ! Object.prototype.hasOwnProperty.call("+u+", '"+e.util.escapeQuotes(J)+"') "),a+=") { "+m+" = false; ";var M=e.errorPath,te=l,ae=e.util.escapeQuotes(J);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(M,J,e.opts.jsonPointers)),l=e.errSchemaPath+"/required",(Ee=Ee||[]).push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+ae+"' } ",!1!==e.opts.messages&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+ae+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";be=a;a=Ee.pop(),a+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+be+"]); ":" validate.errors = ["+be+"]; return false; ":" var err = "+be+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l=te,e.errorPath=M,a+=" } else { "}else h?(a+=" if ( "+re+" === undefined ",O&&(a+=" || ! Object.prototype.hasOwnProperty.call("+u+", '"+e.util.escapeQuotes(J)+"') "),a+=") { "+m+" = true; } else { "):(a+=" if ("+re+" !== undefined ",O&&(a+=" && Object.prototype.hasOwnProperty.call("+u+", '"+e.util.escapeQuotes(J)+"') "),a+=" ) { ");a+=" "+pe+" } "}}h&&(a+=" if ("+m+") { ",p+="}")}}if(j.length){var se=j;if(se)for(var oe,ie=-1,ne=se.length-1;ie<ne;){de=w[oe=se[ie+=1]];if(e.util.schemaHasRules(de,e.RULES.all)){d.schema=de,d.schemaPath=e.schemaPath+".patternProperties"+e.util.getProperty(oe),d.errSchemaPath=e.errSchemaPath+"/patternProperties/"+e.util.escapeFragment(oe),a+=O?" "+E+" = "+E+" || Object.keys("+u+"); for (var "+y+"=0; "+y+"<"+E+".length; "+y+"++) { var "+v+" = "+E+"["+y+"]; ":" for (var "+v+" in "+u+") { ",a+=" if ("+e.usePattern(oe)+".test("+v+")) { ",d.errorPath=e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers);X=u+"["+v+"]";d.dataPathArr[g]=v;pe=e.validate(d);d.baseId=D,e.util.varOccurences(pe,P)<2?a+=" "+e.util.varReplace(pe,P,X)+" ":a+=" var "+P+" = "+X+"; "+pe+" ",h&&(a+=" if (!"+m+") break; "),a+=" } ",h&&(a+=" else "+m+" = true; "),a+=" } ",h&&(a+=" if ("+m+") { ",p+="}")}}}if(e.opts.patternGroups&&q.length){var le=q;if(le)for(var he,ue=-1,ce=le.length-1;ue<ce;){var fe=k[he=le[ue+=1]],de=fe.schema;if(e.util.schemaHasRules(de,e.RULES.all)){d.schema=de,d.schemaPath=e.schemaPath+".patternGroups"+e.util.getProperty(he)+".schema",d.errSchemaPath=e.errSchemaPath+"/patternGroups/"+e.util.escapeFragment(he)+"/schema",a+=" var pgPropCount"+s+" = 0; ",a+=O?" "+E+" = "+E+" || Object.keys("+u+"); for (var "+y+"=0; "+y+"<"+E+".length; "+y+"++) { var "+v+" = "+E+"["+y+"]; ":" for (var "+v+" in "+u+") { ",a+=" if ("+e.usePattern(he)+".test("+v+")) { pgPropCount"+s+"++; ",d.errorPath=e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers);X=u+"["+v+"]";d.dataPathArr[g]=v;var pe=e.validate(d);d.baseId=D,e.util.varOccurences(pe,P)<2?a+=" "+e.util.varReplace(pe,P,X)+" ":a+=" var "+P+" = "+X+"; "+pe+" ",h&&(a+=" if (!"+m+") break; "),a+=" } ",h&&(a+=" else "+m+" = true; "),a+=" } ",h&&(a+=" if ("+m+") { ",p+="}");var me=fe.minimum,ve=fe.maximum;if(void 0!==me||void 0!==ve){a+=" var "+c+" = true; ";te=l;if(void 0!==me){var ye=me,ge="minimum",Pe="less";a+=" "+c+" = pgPropCount"+s+" >= "+me+"; ",l=e.errSchemaPath+"/patternGroups/minimum",a+=" if (!"+c+") { ",(Ee=Ee||[]).push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'patternGroups' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { reason: '"+ge+"', limit: "+ye+", pattern: '"+e.util.escapeQuotes(he)+"' } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT have "+Pe+" than "+ye+' properties matching pattern "'+e.util.escapeQuotes(he)+"\"' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";be=a;a=Ee.pop(),a+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+be+"]); ":" validate.errors = ["+be+"]; return false; ":" var err = "+be+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",void 0!==ve&&(a+=" else ")}if(void 0!==ve){var ye=ve,ge="maximum",Pe="more";a+=" "+c+" = pgPropCount"+s+" <= "+ve+"; ",l=e.errSchemaPath+"/patternGroups/maximum",a+=" if (!"+c+") { ";var Ee=Ee||[];Ee.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'patternGroups' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { reason: '"+ge+"', limit: "+ye+", pattern: '"+e.util.escapeQuotes(he)+"' } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT have "+Pe+" than "+ye+' properties matching pattern "'+e.util.escapeQuotes(he)+"\"' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var be=a;a=Ee.pop(),a+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+be+"]); ":" validate.errors = ["+be+"]; return false; ":" var err = "+be+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } "}l=te,h&&(a+=" if ("+c+") { ",p+="}")}}}}return h&&(a+=" "+p+" if ("+f+" == errors) {"),a=e.util.cleanUpCode(a)}},{}],31:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(o||""),c="errs__"+s,f=e.util.copy(e),d="valid"+ ++f.level;if(e.util.schemaHasRules(i,e.RULES.all)){f.schema=i,f.schemaPath=n,f.errSchemaPath=l;var p="key"+s,m="idx"+s,v="i"+s,y="' + "+p+" + '",g="data"+(f.dataLevel=e.dataLevel+1),P="dataProperties"+s,E=e.opts.ownProperties,b=e.baseId;a+=" var "+c+" = errors; ",E&&(a+=" var "+P+" = undefined; "),a+=E?" "+P+" = "+P+" || Object.keys("+u+"); for (var "+m+"=0; "+m+"<"+P+".length; "+m+"++) { var "+p+" = "+P+"["+m+"]; ":" for (var "+p+" in "+u+") { ",a+=" var startErrs"+s+" = errors; ";var w=p,j=e.compositeRule;e.compositeRule=f.compositeRule=!0;var S=e.validate(f);f.baseId=b,e.util.varOccurences(S,g)<2?a+=" "+e.util.varReplace(S,g,w)+" ":a+=" var "+g+" = "+w+"; "+S+" ",e.compositeRule=f.compositeRule=j,a+=" if (!"+d+") { for (var "+v+"=startErrs"+s+"; "+v+"<errors; "+v+"++) { vErrors["+v+"].propertyName = "+p+"; } var err = ",!1!==e.createErrors?(a+=" { keyword: 'propertyNames' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { propertyName: '"+y+"' } ",!1!==e.opts.messages&&(a+=" , message: 'property name \\'"+y+"\\' is invalid' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&h&&(a+=e.async?" throw new ValidationError(vErrors); ":" validate.errors = vErrors; return false; "),h&&(a+=" break; "),a+=" } }"}return h&&(a+=" if ("+c+" == errors) {"),a=e.util.cleanUpCode(a)}},{}],32:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s,o=" ",i=e.level,n=e.dataLevel,l=e.schema[r],h=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(n||""),f="valid"+i;if("#"==l||"#/"==l)e.isRoot?(a=e.async,s="validate"):(a=!0===e.root.schema.$async,s="root.refVal[0]");else{var d=e.resolveRef(e.baseId,l,e.isRoot);if(void 0===d){var p=e.MissingRefError.message(e.baseId,l);if("fail"==e.opts.missingRefs){console.error(p),(g=g||[]).push(o),o="",!1!==e.createErrors?(o+=" { keyword: '$ref' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(h)+" , params: { ref: '"+e.util.escapeQuotes(l)+"' } ",!1!==e.opts.messages&&(o+=" , message: 'can\\'t resolve reference "+e.util.escapeQuotes(l)+"' "),e.opts.verbose&&(o+=" , schema: "+e.util.toQuotedString(l)+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),o+=" } "):o+=" {} ";var m=o;o=g.pop(),o+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",u&&(o+=" if (false) { ")}else{if("ignore"!=e.opts.missingRefs)throw new e.MissingRefError(e.baseId,l,p);console.warn(p),u&&(o+=" if (true) { ")}}else if(d.inline){var v=e.util.copy(e),y="valid"+ ++v.level;v.schema=d.schema,v.schemaPath="",v.errSchemaPath=l,o+=" "+e.validate(v).replace(/validate\.schema/g,d.code)+" ",u&&(o+=" if ("+y+") { ")}else a=!0===d.$async,s=d.code}if(s){var g=g||[];g.push(o),o="",o+=e.opts.passContext?" "+s+".call(this, ":" "+s+"( ",o+=" "+c+", (dataPath || '')",'""'!=e.errorPath&&(o+=" + "+e.errorPath);var P=o+=" , "+(n?"data"+(n-1||""):"parentData")+" , "+(n?e.dataPathArr[n]:"parentDataProperty")+", rootData) ";if(o=g.pop(),a){if(!e.async)throw new Error("async schema referenced by sync schema");u&&(o+=" var "+f+"; "),o+=" try { "+e.yieldAwait+" "+P+"; ",u&&(o+=" "+f+" = true; "),o+=" } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ",u&&(o+=" "+f+" = false; "),o+=" } ",u&&(o+=" if ("+f+") { ")}else o+=" if (!"+P+") { if (vErrors === null) vErrors = "+s+".errors; else vErrors = vErrors.concat("+s+".errors); errors = vErrors.length; } ",u&&(o+=" else { ")}return o}},{}],33:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(o||""),c="valid"+s,f=e.opts.$data&&i&&i.$data;f&&(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ");var d="schema"+s;if(!f)if(i.length<e.opts.loopRequired&&e.schema.properties&&Object.keys(e.schema.properties).length){var p=[],m=i;if(m)for(var v,y=-1,g=m.length-1;y<g;){v=m[y+=1];var P=e.schema.properties[v];P&&e.util.schemaHasRules(P,e.RULES.all)||(p[p.length]=v)}}else p=i;if(f||p.length){var E=e.errorPath,b=f||p.length>=e.opts.loopRequired,w=e.opts.ownProperties;if(h)if(a+=" var missing"+s+"; ",b){f||(a+=" var "+d+" = validate.schema"+n+"; ");R="' + "+($="schema"+s+"["+(S="i"+s)+"]")+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(E,$,e.opts.jsonPointers)),a+=" var "+c+" = true; ",f&&(a+=" if (schema"+s+" === undefined) "+c+" = true; else if (!Array.isArray(schema"+s+")) "+c+" = false; else {"),a+=" for (var "+S+" = 0; "+S+" < "+d+".length; "+S+"++) { "+c+" = "+u+"["+d+"["+S+"]] !== undefined ",w&&(a+=" && Object.prototype.hasOwnProperty.call("+u+", "+d+"["+S+"]) "),a+="; if (!"+c+") break; } ",f&&(a+=" } "),a+=" if (!"+c+") { ",(x=x||[]).push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+R+"' } ",!1!==e.opts.messages&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+R+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";F=a;a=x.pop(),a+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+F+"]); ":" validate.errors = ["+F+"]; return false; ":" var err = "+F+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else { "}else{a+=" if ( ";var j=p;if(j)for(var S=-1,_=j.length-1;S<_;)D=j[S+=1],S&&(a+=" || "),a+=" ( ( "+(q=u+(k=e.util.getProperty(D)))+" === undefined ",w&&(a+=" || ! Object.prototype.hasOwnProperty.call("+u+", '"+e.util.escapeQuotes(D)+"') "),a+=") && (missing"+s+" = "+e.util.toQuotedString(e.opts.jsonPointers?D:k)+") ) ";a+=") { ";R="' + "+($="missing"+s)+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.opts.jsonPointers?e.util.getPathExpr(E,$,!0):E+" + "+$);var x=x||[];x.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+R+"' } ",!1!==e.opts.messages&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+R+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ";var F=a;a=x.pop(),a+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+F+"]); ":" validate.errors = ["+F+"]; return false; ":" var err = "+F+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else { "}else if(b){f||(a+=" var "+d+" = validate.schema"+n+"; ");var $="schema"+s+"["+(S="i"+s)+"]",R="' + "+$+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(E,$,e.opts.jsonPointers)),f&&(a+=" if ("+d+" && !Array.isArray("+d+")) { var err = ",!1!==e.createErrors?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+R+"' } ",!1!==e.opts.messages&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+R+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if ("+d+" !== undefined) { "),a+=" for (var "+S+" = 0; "+S+" < "+d+".length; "+S+"++) { if ("+u+"["+d+"["+S+"]] === undefined ",w&&(a+=" || ! Object.prototype.hasOwnProperty.call("+u+", "+d+"["+S+"]) "),a+=") { var err = ",!1!==e.createErrors?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+R+"' } ",!1!==e.opts.messages&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+R+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } ",f&&(a+=" } ")}else{var O=p;if(O)for(var D,I=-1,A=O.length-1;I<A;){D=O[I+=1];var k=e.util.getProperty(D),R=e.util.escapeQuotes(D),q=u+k;e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(E,D,e.opts.jsonPointers)),a+=" if ( "+q+" === undefined ",w&&(a+=" || ! Object.prototype.hasOwnProperty.call("+u+", '"+e.util.escapeQuotes(D)+"') "),a+=") { var err = ",!1!==e.createErrors?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+R+"' } ",!1!==e.opts.messages&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+R+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } "}}e.errorPath=E}else h&&(a+=" if (true) {");return a}},{}],34:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),h=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(i||""),f="valid"+o,d=e.opts.$data&&n&&n.$data;if(d?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ",a="schema"+o):a=n,(n||d)&&!1!==e.opts.uniqueItems){d&&(s+=" var "+f+"; if ("+a+" === false || "+a+" === undefined) "+f+" = true; else if (typeof "+a+" != 'boolean') "+f+" = false; else { "),s+=" var "+f+" = true; if ("+c+".length > 1) { var i = "+c+".length, j; outer: for (;i--;) { for (j = i; j--;) { if (equal("+c+"[i], "+c+"[j])) { "+f+" = false; break outer; } } } } ",d&&(s+=" } "),s+=" if (!"+f+") { ";var p=p||[];p.push(s),s="",!1!==e.createErrors?(s+=" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(h)+" , params: { i: i, j: j } ",!1!==e.opts.messages&&(s+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(s+=" , schema: ",s+=d?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),s+=" } "):s+=" {} ";var m=s;s=p.pop(),s+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } ",u&&(s+=" else { ")}else u&&(s+=" if (true) { ");return s}},{}],35:[function(e,r,t){"use strict";r.exports=function(e,r,t){function a(e){for(var r=e.rules,t=0;t<r.length;t++)if(s(r[t]))return!0}function s(r){return void 0!==e.schema[r.keyword]||r.implements&&o(r)}function o(r){for(var t=r.implements,a=0;a<t.length;a++)if(void 0!==e.schema[t[a]])return!0}var i="",n=!0===e.schema.$async,l=e.util.schemaHasRulesExcept(e.schema,e.RULES.all,"$ref"),h=e.self._getId(e.schema);if(e.isTop){if(n){e.async=!0;var u="es7"==e.opts.async;e.yieldAwait=u?"await":"yield"}i+=" var validate = ",n?u?i+=" (async function ":("*"!=e.opts.async&&(i+="co.wrap"),i+="(function* "):i+=" (function ",i+=" (data, dataPath, parentData, parentDataProperty, rootData) { 'use strict'; ",h&&(e.opts.sourceCode||e.opts.processCode)&&(i+=" /*# sourceURL="+h+" */ ")}if("boolean"==typeof e.schema||!l&&!e.schema.$ref){var c=e.level,f=e.dataLevel,d=e.schema["false schema"],p=e.schemaPath+e.util.getProperty("false schema"),m=e.errSchemaPath+"/false schema",v=!e.opts.allErrors,y="data"+(f||""),g="valid"+c;if(!1===e.schema){e.isTop?v=!0:i+=" var "+g+" = false; ",(X=X||[]).push(i),i="",!1!==e.createErrors?(i+=" { keyword: '"+(E||"false schema")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(m)+" , params: {} ",!1!==e.opts.messages&&(i+=" , message: 'boolean schema is false' "),e.opts.verbose&&(i+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+y+" "),i+=" } "):i+=" {} ";ee=i;i=X.pop(),i+=!e.compositeRule&&v?e.async?" throw new ValidationError(["+ee+"]); ":" validate.errors = ["+ee+"]; return false; ":" var err = "+ee+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}else i+=e.isTop?n?" return data; ":" validate.errors = null; return true; ":" var "+g+" = true; ";return e.isTop&&(i+=" }); return validate; "),i}if(e.isTop){var P=e.isTop,c=e.level=0,f=e.dataLevel=0,y="data";e.rootId=e.resolve.fullPath(e.self._getId(e.root.schema)),e.baseId=e.baseId||e.rootId,delete e.isTop,e.dataPathArr=[void 0],i+=" var vErrors = null; ",i+=" var errors = 0; ",i+=" if (rootData === undefined) rootData = data; "}else{var c=e.level,y="data"+((f=e.dataLevel)||"");if(h&&(e.baseId=e.resolve.url(e.baseId,h)),n&&!e.async)throw new Error("async schema in sync schema");i+=" var errs_"+c+" = errors;"}var E,g="valid"+c,v=!e.opts.allErrors,b="",w="",j=e.schema.type,S=Array.isArray(j);if(S&&1==j.length&&(j=j[0],S=!1),e.schema.$ref&&l){if("fail"==e.opts.extendRefs)throw new Error('$ref: validation keywords used in schema at path "'+e.errSchemaPath+'" (see option extendRefs)');!0!==e.opts.extendRefs&&(l=!1,console.warn('$ref: keywords ignored in schema at path "'+e.errSchemaPath+'"'))}if(j){if(e.opts.coerceTypes)var _=e.util.coerceToTypes(e.opts.coerceTypes,j);L=e.RULES.types[j];if(_||S||!0===L||L&&!a(L)){var p=e.schemaPath+".type",m=e.errSchemaPath+"/type",p=e.schemaPath+".type",m=e.errSchemaPath+"/type",x=S?"checkDataTypes":"checkDataType";if(i+=" if ("+e.util[x](j,y,!0)+") { ",_){var F="dataType"+c,$="coerced"+c;i+=" var "+F+" = typeof "+y+"; ","array"==e.opts.coerceTypes&&(i+=" if ("+F+" == 'object' && Array.isArray("+y+")) "+F+" = 'array'; "),i+=" var "+$+" = undefined; ";var R="",O=_;if(O)for(var D,I=-1,A=O.length-1;I<A;)D=O[I+=1],I&&(i+=" if ("+$+" === undefined) { ",R+="}"),"array"==e.opts.coerceTypes&&"array"!=D&&(i+=" if ("+F+" == 'array' && "+y+".length == 1) { "+$+" = "+y+" = "+y+"[0]; "+F+" = typeof "+y+"; } "),"string"==D?i+=" if ("+F+" == 'number' || "+F+" == 'boolean') "+$+" = '' + "+y+"; else if ("+y+" === null) "+$+" = ''; ":"number"==D||"integer"==D?(i+=" if ("+F+" == 'boolean' || "+y+" === null || ("+F+" == 'string' && "+y+" && "+y+" == +"+y+" ","integer"==D&&(i+=" && !("+y+" % 1)"),i+=")) "+$+" = +"+y+"; "):"boolean"==D?i+=" if ("+y+" === 'false' || "+y+" === 0 || "+y+" === null) "+$+" = false; else if ("+y+" === 'true' || "+y+" === 1) "+$+" = true; ":"null"==D?i+=" if ("+y+" === '' || "+y+" === 0 || "+y+" === false) "+$+" = null; ":"array"==e.opts.coerceTypes&&"array"==D&&(i+=" if ("+F+" == 'string' || "+F+" == 'number' || "+F+" == 'boolean' || "+y+" == null) "+$+" = ["+y+"]; ");i+=" "+R+" if ("+$+" === undefined) { ",(X=X||[]).push(i),i="",!1!==e.createErrors?(i+=" { keyword: '"+(E||"type")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(m)+" , params: { type: '",i+=S?""+j.join(","):""+j,i+="' } ",!1!==e.opts.messages&&(i+=" , message: 'should be ",i+=S?""+j.join(","):""+j,i+="' "),e.opts.verbose&&(i+=" , schema: validate.schema"+p+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+y+" "),i+=" } "):i+=" {} ";ee=i;i=X.pop(),i+=!e.compositeRule&&v?e.async?" throw new ValidationError(["+ee+"]); ":" validate.errors = ["+ee+"]; return false; ":" var err = "+ee+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" } else { ";var k=f?"data"+(f-1||""):"parentData",q=f?e.dataPathArr[f]:"parentDataProperty";i+=" "+y+" = "+$+"; ",f||(i+="if ("+k+" !== undefined)"),i+=" "+k+"["+q+"] = "+$+"; } "}else{(X=X||[]).push(i),i="",!1!==e.createErrors?(i+=" { keyword: '"+(E||"type")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(m)+" , params: { type: '",i+=S?""+j.join(","):""+j,i+="' } ",!1!==e.opts.messages&&(i+=" , message: 'should be ",i+=S?""+j.join(","):""+j,i+="' "),e.opts.verbose&&(i+=" , schema: validate.schema"+p+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+y+" "),i+=" } "):i+=" {} ";ee=i;i=X.pop(),i+=!e.compositeRule&&v?e.async?" throw new ValidationError(["+ee+"]); ":" validate.errors = ["+ee+"]; return false; ":" var err = "+ee+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}i+=" } "}}if(e.schema.$ref&&!l)i+=" "+e.RULES.all.$ref.code(e,"$ref")+" ",v&&(i+=" } if (errors === ",i+=P?"0":"errs_"+c,i+=") { ",w+="}");else{e.opts.v5&&e.schema.patternGroups&&console.warn('keyword "patternGroups" is deprecated and disabled. Use option patternGroups: true to enable.');var C=e.RULES;if(C)for(var L,z=-1,Q=C.length-1;z<Q;)if(L=C[z+=1],a(L)){if(L.type&&(i+=" if ("+e.util.checkDataType(L.type,y)+") { "),e.opts.useDefaults&&!e.compositeRule)if("object"==L.type&&e.schema.properties){var d=e.schema.properties,U=Object.keys(d);if(U)for(var V,N=-1,T=U.length-1;N<T;)void 0!==(B=d[V=U[N+=1]]).default&&(i+=" if ("+(K=y+e.util.getProperty(V))+" === undefined) "+K+" = ",i+="shared"==e.opts.useDefaults?" "+e.useDefault(B.default)+" ":" "+JSON.stringify(B.default)+" ",i+="; ")}else if("array"==L.type&&Array.isArray(e.schema.items)){var M=e.schema.items;if(M)for(var B,I=-1,H=M.length-1;I<H;)if(void 0!==(B=M[I+=1]).default){var K=y+"["+I+"]";i+=" if ("+K+" === undefined) "+K+" = ",i+="shared"==e.opts.useDefaults?" "+e.useDefault(B.default)+" ":" "+JSON.stringify(B.default)+" ",i+="; "}}var G=L.rules;if(G)for(var J,Z=-1,Y=G.length-1;Z<Y;)if(J=G[Z+=1],s(J)){var W=J.code(e,J.keyword,L.type);W&&(i+=" "+W+" ",v&&(b+="}"))}if(v&&(i+=" "+b+" ",b=""),L.type&&(i+=" } ",j&&j===L.type&&!_)){i+=" else { ";var p=e.schemaPath+".type",m=e.errSchemaPath+"/type",X=X||[];X.push(i),i="",!1!==e.createErrors?(i+=" { keyword: '"+(E||"type")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(m)+" , params: { type: '",i+=S?""+j.join(","):""+j,i+="' } ",!1!==e.opts.messages&&(i+=" , message: 'should be ",i+=S?""+j.join(","):""+j,i+="' "),e.opts.verbose&&(i+=" , schema: validate.schema"+p+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+y+" "),i+=" } "):i+=" {} ";var ee=i;i=X.pop(),i+=!e.compositeRule&&v?e.async?" throw new ValidationError(["+ee+"]); ":" validate.errors = ["+ee+"]; return false; ":" var err = "+ee+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" } "}v&&(i+=" if (errors === ",i+=P?"0":"errs_"+c,i+=") { ",w+="}")}}return v&&(i+=" "+w+" "),P?(n?(i+=" if (errors === 0) return data; ",i+=" else throw new ValidationError(vErrors); "):(i+=" validate.errors = vErrors; ",i+=" return errors === 0; "),i+=" }); return validate;"):i+=" var "+g+" = errors === errs_"+c+";",i=e.util.cleanUpCode(i),P&&(i=e.util.finalCleanUpCode(i,n)),i}},{}],36:[function(e,r,t){"use strict";function a(e,r){function t(e,r,t){for(var a,o=0;o<s.length;o++){var i=s[o];if(i.type==r){a=i;break}}a||(a={type:r,rules:[]},s.push(a));var l={keyword:e,definition:t,custom:!0,code:n,implements:t.implements};a.rules.push(l),s.custom[e]=l}function a(e){if(!s.types[e])throw new Error("Unknown type "+e)}var s=this.RULES;if(s.keywords[e])throw new Error("Keyword "+e+" is already defined");if(!i.test(e))throw new Error("Keyword "+e+" is not a valid identifier");if(r){if(r.macro&&void 0!==r.valid)throw new Error('"valid" option cannot be used with macro keywords');var o=r.type;if(Array.isArray(o)){var l,h=o.length;for(l=0;l<h;l++)a(o[l]);for(l=0;l<h;l++)t(e,o[l],r)}else o&&a(o),t(e,o,r);var u=!0===r.$data&&this._opts.$data;if(u&&!r.validate)throw new Error('$data support: "validate" function is not defined');var c=r.metaSchema;c&&(u&&(c={anyOf:[c,{$ref:"https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/$data.json#"}]}),r.validateSchema=this.compile(c,!0))}s.keywords[e]=s.all[e]=!0}function s(e){var r=this.RULES.custom[e];return r?r.definition:this.RULES.keywords[e]||!1}function o(e){var r=this.RULES;delete r.keywords[e],delete r.all[e],delete r.custom[e];for(var t=0;t<r.length;t++)for(var a=r[t].rules,s=0;s<a.length;s++)if(a[s].keyword==e){a.splice(s,1);break}}var i=/^[a-z_$][a-z0-9_$-]*$/i,n=e("./dotjs/custom");r.exports={add:a,get:s,remove:o}},{"./dotjs/custom":21}],37:[function(e,r,t){"use strict";r.exports=function(e){var r=e._opts.defaultMeta,t="string"==typeof r?{$ref:r}:e.getSchema("http://json-schema.org/draft-06/schema")?{$ref:"http://json-schema.org/draft-06/schema"}:{};e.addKeyword("patternGroups",{metaSchema:{type:"object",additionalProperties:{type:"object",required:["schema"],properties:{maximum:{type:"integer",minimum:0},minimum:{type:"integer",minimum:0},schema:t},additionalProperties:!1}}}),e.RULES.all.properties.implements.push("patternGroups")}},{}],38:[function(e,r,t){r.exports={$schema:"http://json-schema.org/draft-06/schema#",$id:"https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/$data.json#",description:"Meta-schema for $data reference (JSON-schema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}},{}],39:[function(e,r,t){r.exports={$schema:"http://json-schema.org/draft-06/schema#",$id:"http://json-schema.org/draft-06/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},title:{type:"string"},description:{type:"string"},default:{},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:{}},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:{},enum:{type:"array",minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:{}}},{}],40:[function(e,r,t){function a(e){var r=this,t=f.call(arguments,1);return new Promise(function(a,o){function i(r){var t;try{t=e.next(r)}catch(e){return o(e)}h(t)}function n(r){var t;try{t=e.throw(r)}catch(e){return o(e)}h(t)}function h(e){if(e.done)return a(e.value);var t=s.call(r,e.value);return t&&l(t)?t.then(i,n):n(new TypeError('You may only yield a function, promise, generator, array, or object, but the following object was passed: "'+String(e.value)+'"'))}if("function"==typeof e&&(e=e.apply(r,t)),!e||"function"!=typeof e.next)return a(e);i()})}function s(e){return e?l(e)?e:u(e)||h(e)?a.call(this,e):"function"==typeof e?o.call(this,e):Array.isArray(e)?i.call(this,e):c(e)?n.call(this,e):e:e}function o(e){var r=this;return new Promise(function(t,a){e.call(r,function(e,r){if(e)return a(e);arguments.length>2&&(r=f.call(arguments,1)),t(r)})})}function i(e){return Promise.all(e.map(s,this))}function n(e){for(var r=new e.constructor,t=Object.keys(e),a=[],o=0;o<t.length;o++){var i=t[o],n=s.call(this,e[i]);n&&l(n)?function(e,t){r[t]=void 0,a.push(e.then(function(e){r[t]=e}))}(n,i):r[i]=e[i]}return Promise.all(a).then(function(){return r})}function l(e){return"function"==typeof e.then}function h(e){return"function"==typeof e.next&&"function"==typeof e.throw}function u(e){var r=e.constructor;return!!r&&("GeneratorFunction"===r.name||"GeneratorFunction"===r.displayName||h(r.prototype))}function c(e){return Object==e.constructor}var f=Array.prototype.slice;r.exports=a.default=a.co=a,a.wrap=function(e){function r(){return a.call(this,e.apply(this,arguments))}return r.__generatorFunction__=e,r}},{}],41:[function(e,r,t){"use strict";r.exports=function e(r,t){if(r===t)return!0;var a,s=Array.isArray(r),o=Array.isArray(t);if(s&&o){if(r.length!=t.length)return!1;for(a=0;a<r.length;a++)if(!e(r[a],t[a]))return!1;return!0}if(s!=o)return!1;if(r&&t&&"object"==typeof r&&"object"==typeof t){var i=Object.keys(r);if(i.length!==Object.keys(t).length)return!1;var n=r instanceof Date,l=t instanceof Date;if(n&&l)return r.getTime()==t.getTime();if(n!=l)return!1;var h=r instanceof RegExp,u=t instanceof RegExp;if(h&&u)return r.toString()==t.toString();if(h!=u)return!1;for(a=0;a<i.length;a++)if(!Object.prototype.hasOwnProperty.call(t,i[a]))return!1;for(a=0;a<i.length;a++)if(!e(r[i[a]],t[i[a]]))return!1;return!0}return!1}},{}],42:[function(e,r,t){"use strict";function a(e,r,t,i,n,l,h,u,c){if(t&&"object"==typeof t&&!Array.isArray(t)){r(t,i,n,l,h,u,c);for(var f in t){var d=t[f];if(Array.isArray(d)){if(f in o.arrayKeywords)for(var p=0;p<d.length;p++)a(e,r,d[p],i+"/"+f+"/"+p,n,i,f,t,p)}else if(f in o.propsKeywords){if(d&&"object"==typeof d)for(var m in d)a(e,r,d[m],i+"/"+f+"/"+s(m),n,i,f,t,m)}else(f in o.keywords||e.allKeys&&!(f in o.skipKeywords))&&a(e,r,d,i+"/"+f,n,i,f,t)}}}function s(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}var o=r.exports=function(e,r,t){"function"==typeof r&&(t=r,r={}),a(r,t,e,"",e)};o.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0},o.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0},o.propsKeywords={definitions:!0,properties:!0,patternProperties:!0,dependencies:!0},o.skipKeywords={enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0}},{}],43:[function(e,r,t){var a="undefined"!=typeof JSON?JSON:e("jsonify");r.exports=function(e,r){r||(r={}),"function"==typeof r&&(r={cmp:r});var t=r.space||"";"number"==typeof t&&(t=Array(t+1).join(" "));var i="boolean"==typeof r.cycles&&r.cycles,n=r.replacer||function(e,r){return r},l=r.cmp&&function(e){return function(r){return function(t,a){return e({key:t,value:r[t]},{key:a,value:r[a]})}}}(r.cmp),h=[];return function e(r,u,c,f){var d=t?"\n"+new Array(f+1).join(t):"",p=t?": ":":";if(c&&c.toJSON&&"function"==typeof c.toJSON&&(c=c.toJSON()),void 0!==(c=n.call(r,u,c))){if("object"!=typeof c||null===c)return a.stringify(c);if(s(c)){for(var m=[],v=0;v<c.length;v++){var y=e(c,v,c[v],f+1)||a.stringify(null);m.push(d+t+y)}return"["+m.join(",")+d+"]"}if(-1!==h.indexOf(c)){if(i)return a.stringify("__cycle__");throw new TypeError("Converting circular structure to JSON")}h.push(c);for(var g=o(c).sort(l&&l(c)),m=[],v=0;v<g.length;v++){var P=e(c,u=g[v],c[u],f+1);if(P){var E=a.stringify(u)+p+P;m.push(d+t+E)}}return h.splice(h.indexOf(c),1),"{"+m.join(",")+d+"}"}}({"":e},"",e,0)};var s=Array.isArray||function(e){return"[object Array]"==={}.toString.call(e)},o=Object.keys||function(e){var r=Object.prototype.hasOwnProperty||function(){return!0},t=[];for(var a in e)r.call(e,a)&&t.push(a);return t}},{jsonify:44}],44:[function(e,r,t){t.parse=e("./lib/parse"),t.stringify=e("./lib/stringify")},{"./lib/parse":45,"./lib/stringify":46}],45:[function(e,r,t){var a,s,o,i,n={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:"\n",r:"\r",t:"\t"},l=function(e){throw{name:"SyntaxError",message:e,at:a,text:o}},h=function(e){return e&&e!==s&&l("Expected '"+e+"' instead of '"+s+"'"),s=o.charAt(a),a+=1,s},u=function(){var e,r="";for("-"===s&&(r="-",h("-"));s>="0"&&s<="9";)r+=s,h();if("."===s)for(r+=".";h()&&s>="0"&&s<="9";)r+=s;if("e"===s||"E"===s)for(r+=s,h(),"-"!==s&&"+"!==s||(r+=s,h());s>="0"&&s<="9";)r+=s,h();if(e=+r,isFinite(e))return e;l("Bad number")},c=function(){var e,r,t,a="";if('"'===s)for(;h();){if('"'===s)return h(),a;if("\\"===s)if(h(),"u"===s){for(t=0,r=0;r<4&&(e=parseInt(h(),16),isFinite(e));r+=1)t=16*t+e;a+=String.fromCharCode(t)}else{if("string"!=typeof n[s])break;a+=n[s]}else a+=s}l("Bad string")},f=function(){for(;s&&s<=" ";)h()},d=function(){switch(s){case"t":return h("t"),h("r"),h("u"),h("e"),!0;case"f":return h("f"),h("a"),h("l"),h("s"),h("e"),!1;case"n":return h("n"),h("u"),h("l"),h("l"),null}l("Unexpected '"+s+"'")},p=function(){var e=[];if("["===s){if(h("["),f(),"]"===s)return h("]"),e;for(;s;){if(e.push(i()),f(),"]"===s)return h("]"),e;h(","),f()}}l("Bad array")},m=function(){var e,r={};if("{"===s){if(h("{"),f(),"}"===s)return h("}"),r;for(;s;){if(e=c(),f(),h(":"),Object.hasOwnProperty.call(r,e)&&l('Duplicate key "'+e+'"'),r[e]=i(),f(),"}"===s)return h("}"),r;h(","),f()}}l("Bad object")};i=function(){switch(f(),s){case"{":return m();case"[":return p();case'"':return c();case"-":return u();default:return s>="0"&&s<="9"?u():d()}},r.exports=function(e,r){var t;return o=e,a=0,s=" ",t=i(),f(),s&&l("Syntax error"),"function"==typeof r?function e(t,a){var s,o,i=t[a];if(i&&"object"==typeof i)for(s in i)Object.prototype.hasOwnProperty.call(i,s)&&(void 0!==(o=e(i,s))?i[s]=o:delete i[s]);return r.call(t,a,i)}({"":t},""):t}},{}],46:[function(e,r,t){function a(e){return l.lastIndex=0,l.test(e)?'"'+e.replace(l,function(e){var r=h[e];return"string"==typeof r?r:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+e+'"'}function s(e,r){var t,l,h,u,c,f=o,d=r[e];switch(d&&"object"==typeof d&&"function"==typeof d.toJSON&&(d=d.toJSON(e)),"function"==typeof n&&(d=n.call(r,e,d)),typeof d){case"string":return a(d);case"number":return isFinite(d)?String(d):"null";case"boolean":case"null":return String(d);case"object":if(!d)return"null";if(o+=i,c=[],"[object Array]"===Object.prototype.toString.apply(d)){for(u=d.length,t=0;t<u;t+=1)c[t]=s(t,d)||"null";return h=0===c.length?"[]":o?"[\n"+o+c.join(",\n"+o)+"\n"+f+"]":"["+c.join(",")+"]",o=f,h}if(n&&"object"==typeof n)for(u=n.length,t=0;t<u;t+=1)"string"==typeof(l=n[t])&&(h=s(l,d))&&c.push(a(l)+(o?": ":":")+h);else for(l in d)Object.prototype.hasOwnProperty.call(d,l)&&(h=s(l,d))&&c.push(a(l)+(o?": ":":")+h);return h=0===c.length?"{}":o?"{\n"+o+c.join(",\n"+o)+"\n"+f+"}":"{"+c.join(",")+"}",o=f,h}}var o,i,n,l=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,h={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};r.exports=function(e,r,t){var a;if(o="",i="","number"==typeof t)for(a=0;a<t;a+=1)i+=" ";else"string"==typeof t&&(i=t);if(n=r,r&&"function"!=typeof r&&("object"!=typeof r||"number"!=typeof r.length))throw new Error("JSON.stringify");return s("",{"":e})}},{}],47:[function(e,r,t){(function(e){!function(a){function s(e){throw new RangeError(A[e])}function o(e,r){for(var t=e.length,a=[];t--;)a[t]=r(e[t]);return a}function i(e,r){var t=e.split("@"),a="";return t.length>1&&(a=t[0]+"@",e=t[1]),a+o((e=e.replace(I,".")).split("."),r).join(".")}function n(e){for(var r,t,a=[],s=0,o=e.length;s<o;)(r=e.charCodeAt(s++))>=55296&&r<=56319&&s<o?56320==(64512&(t=e.charCodeAt(s++)))?a.push(((1023&r)<<10)+(1023&t)+65536):(a.push(r),s--):a.push(r);return a}function l(e){return o(e,function(e){var r="";return e>65535&&(r+=C((e-=65536)>>>10&1023|55296),e=56320|1023&e),r+=C(e)}).join("")}function h(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:w}function u(e,r){return e+22+75*(e<26)-((0!=r)<<5)}function c(e,r,t){var a=0;for(e=t?q(e/x):e>>1,e+=q(e/r);e>k*S>>1;a+=w)e=q(e/k);return q(a+(k+1)*e/(e+_))}function f(e){var r,t,a,o,i,n,u,f,d,p,m=[],v=e.length,y=0,g=$,P=F;for((t=e.lastIndexOf(R))<0&&(t=0),a=0;a<t;++a)e.charCodeAt(a)>=128&&s("not-basic"),m.push(e.charCodeAt(a));for(o=t>0?t+1:0;o<v;){for(i=y,n=1,u=w;o>=v&&s("invalid-input"),((f=h(e.charCodeAt(o++)))>=w||f>q((b-y)/n))&&s("overflow"),y+=f*n,d=u<=P?j:u>=P+S?S:u-P,!(f<d);u+=w)n>q(b/(p=w-d))&&s("overflow"),n*=p;P=c(y-i,r=m.length+1,0==i),q(y/r)>b-g&&s("overflow"),g+=q(y/r),y%=r,m.splice(y++,0,g)}return l(m)}function d(e){var r,t,a,o,i,l,h,f,d,p,m,v,y,g,P,E=[];for(v=(e=n(e)).length,r=$,t=0,i=F,l=0;l<v;++l)(m=e[l])<128&&E.push(C(m));for(a=o=E.length,o&&E.push(R);a<v;){for(h=b,l=0;l<v;++l)(m=e[l])>=r&&m<h&&(h=m);for(h-r>q((b-t)/(y=a+1))&&s("overflow"),t+=(h-r)*y,r=h,l=0;l<v;++l)if((m=e[l])<r&&++t>b&&s("overflow"),m==r){for(f=t,d=w;p=d<=i?j:d>=i+S?S:d-i,!(f<p);d+=w)P=f-p,g=w-p,E.push(C(u(p+P%g,0))),f=q(P/g);E.push(C(u(f,0))),i=c(t,y,a==o),t=0,++a}++t,++r}return E.join("")}function p(e){return i(e,function(e){return O.test(e)?f(e.slice(4).toLowerCase()):e})}function m(e){return i(e,function(e){return D.test(e)?"xn--"+d(e):e})}var v="object"==typeof t&&t&&!t.nodeType&&t,y="object"==typeof r&&r&&!r.nodeType&&r,g="object"==typeof e&&e;g.global!==g&&g.window!==g&&g.self!==g||(a=g);var P,E,b=2147483647,w=36,j=1,S=26,_=38,x=700,F=72,$=128,R="-",O=/^xn--/,D=/[^\x20-\x7E]/,I=/[\x2E\u3002\uFF0E\uFF61]/g,A={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},k=w-j,q=Math.floor,C=String.fromCharCode;if(P={version:"1.4.1",ucs2:{decode:n,encode:l},decode:f,encode:d,toASCII:m,toUnicode:p},v&&y)if(r.exports==v)y.exports=P;else for(E in P)P.hasOwnProperty(E)&&(v[E]=P[E]);else a.punycode=P}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],48:[function(e,r,t){"use strict";function a(e,r){return Object.prototype.hasOwnProperty.call(e,r)}r.exports=function(e,r,t,o){r=r||"&",t=t||"=";var i={};if("string"!=typeof e||0===e.length)return i;var n=/\+/g;e=e.split(r);var l=1e3;o&&"number"==typeof o.maxKeys&&(l=o.maxKeys);var h=e.length;l>0&&h>l&&(h=l);for(var u=0;u<h;++u){var c,f,d,p,m=e[u].replace(n,"%20"),v=m.indexOf(t);v>=0?(c=m.substr(0,v),f=m.substr(v+1)):(c=m,f=""),d=decodeURIComponent(c),p=decodeURIComponent(f),a(i,d)?s(i[d])?i[d].push(p):i[d]=[i[d],p]:i[d]=p}return i};var s=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},{}],49:[function(e,r,t){"use strict";function a(e,r){if(e.map)return e.map(r);for(var t=[],a=0;a<e.length;a++)t.push(r(e[a],a));return t}var s=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};r.exports=function(e,r,t,n){return r=r||"&",t=t||"=",null===e&&(e=void 0),"object"==typeof e?a(i(e),function(i){var n=encodeURIComponent(s(i))+t;return o(e[i])?a(e[i],function(e){return n+encodeURIComponent(s(e))}).join(r):n+encodeURIComponent(s(e[i]))}).join(r):n?encodeURIComponent(s(n))+t+encodeURIComponent(s(e)):""};var o=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},i=Object.keys||function(e){var r=[];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&r.push(t);return r}},{}],50:[function(e,r,t){"use strict";t.decode=t.parse=e("./decode"),t.encode=t.stringify=e("./encode")},{"./decode":48,"./encode":49}],51:[function(e,r,t){"use strict";function a(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}function s(e,r,t){if(e&&h.isObject(e)&&e instanceof a)return e;var s=new a;return s.parse(e,r,t),s}function o(e){return h.isString(e)&&(e=s(e)),e instanceof a?e.format():a.prototype.format.call(e)}function i(e,r){return s(e,!1,!0).resolve(r)}function n(e,r){return e?s(e,!1,!0).resolveObject(r):r}var l=e("punycode"),h=e("./util");t.parse=s,t.resolve=i,t.resolveObject=n,t.format=o,t.Url=a;var u=/^([a-z0-9.+-]+:)/i,c=/:[0-9]*$/,f=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,d=["<",">",'"',"`"," ","\r","\n","\t"],p=["{","}","|","\\","^","`"].concat(d),m=["'"].concat(p),v=["%","/","?",";","#"].concat(m),y=["/","?","#"],g=/^[+a-z0-9A-Z_-]{0,63}$/,P=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,E={javascript:!0,"javascript:":!0},b={javascript:!0,"javascript:":!0},w={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},j=e("querystring");a.prototype.parse=function(e,r,t){if(!h.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var a=e.indexOf("?"),s=-1!==a&&a<e.indexOf("#")?"?":"#",o=e.split(s),i=/\\/g;o[0]=o[0].replace(i,"/");var n=e=o.join(s);if(n=n.trim(),!t&&1===e.split("#").length){var c=f.exec(n);if(c)return this.path=n,this.href=n,this.pathname=c[1],c[2]?(this.search=c[2],this.query=r?j.parse(this.search.substr(1)):this.search.substr(1)):r&&(this.search="",this.query={}),this}var d=u.exec(n);if(d){var p=(d=d[0]).toLowerCase();this.protocol=p,n=n.substr(d.length)}if(t||d||n.match(/^\/\/[^@\/]+@[^@\/]+/)){var S="//"===n.substr(0,2);!S||d&&b[d]||(n=n.substr(2),this.slashes=!0)}if(!b[d]&&(S||d&&!w[d])){for(var _=-1,x=0;x<y.length;x++)-1!==(R=n.indexOf(y[x]))&&(-1===_||R<_)&&(_=R);var F,$;-1!==($=-1===_?n.lastIndexOf("@"):n.lastIndexOf("@",_))&&(F=n.slice(0,$),n=n.slice($+1),this.auth=decodeURIComponent(F)),_=-1;for(x=0;x<v.length;x++){var R=n.indexOf(v[x]);-1!==R&&(-1===_||R<_)&&(_=R)}-1===_&&(_=n.length),this.host=n.slice(0,_),n=n.slice(_),this.parseHost();var O="["===(this.hostname=this.hostname||"")[0]&&"]"===this.hostname[this.hostname.length-1];if(!O)for(var D=this.hostname.split(/\./),x=0,I=D.length;x<I;x++){var A=D[x];if(A&&!A.match(g)){for(var k="",q=0,C=A.length;q<C;q++)A.charCodeAt(q)>127?k+="x":k+=A[q];if(!k.match(g)){var L=D.slice(0,x),z=D.slice(x+1),Q=A.match(P);Q&&(L.push(Q[1]),z.unshift(Q[2])),z.length&&(n="/"+z.join(".")+n),this.hostname=L.join(".");break}}}this.hostname=this.hostname.length>255?"":this.hostname.toLowerCase(),O||(this.hostname=l.toASCII(this.hostname));var U=this.port?":"+this.port:"",V=this.hostname||"";this.host=V+U,this.href+=this.host,O&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==n[0]&&(n="/"+n))}if(!E[p])for(var x=0,I=m.length;x<I;x++){var N=m[x];if(-1!==n.indexOf(N)){var T=encodeURIComponent(N);T===N&&(T=escape(N)),n=n.split(N).join(T)}}var M=n.indexOf("#");-1!==M&&(this.hash=n.substr(M),n=n.slice(0,M));var B=n.indexOf("?");if(-1!==B?(this.search=n.substr(B),this.query=n.substr(B+1),r&&(this.query=j.parse(this.query)),n=n.slice(0,B)):r&&(this.search="",this.query={}),n&&(this.pathname=n),w[p]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){var U=this.pathname||"",H=this.search||"";this.path=U+H}return this.href=this.format(),this},a.prototype.format=function(){var e=this.auth||"";e&&(e=(e=encodeURIComponent(e)).replace(/%3A/i,":"),e+="@");var r=this.protocol||"",t=this.pathname||"",a=this.hash||"",s=!1,o="";this.host?s=e+this.host:this.hostname&&(s=e+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(s+=":"+this.port)),this.query&&h.isObject(this.query)&&Object.keys(this.query).length&&(o=j.stringify(this.query));var i=this.search||o&&"?"+o||"";return r&&":"!==r.substr(-1)&&(r+=":"),this.slashes||(!r||w[r])&&!1!==s?(s="//"+(s||""),t&&"/"!==t.charAt(0)&&(t="/"+t)):s||(s=""),a&&"#"!==a.charAt(0)&&(a="#"+a),i&&"?"!==i.charAt(0)&&(i="?"+i),t=t.replace(/[?#]/g,function(e){return encodeURIComponent(e)}),i=i.replace("#","%23"),r+s+t+i+a},a.prototype.resolve=function(e){return this.resolveObject(s(e,!1,!0)).format()},a.prototype.resolveObject=function(e){if(h.isString(e)){var r=new a;r.parse(e,!1,!0),e=r}for(var t=new a,s=Object.keys(this),o=0;o<s.length;o++){var i=s[o];t[i]=this[i]}if(t.hash=e.hash,""===e.href)return t.href=t.format(),t;if(e.slashes&&!e.protocol){for(var n=Object.keys(e),l=0;l<n.length;l++){var u=n[l];"protocol"!==u&&(t[u]=e[u])}return w[t.protocol]&&t.hostname&&!t.pathname&&(t.path=t.pathname="/"),t.href=t.format(),t}if(e.protocol&&e.protocol!==t.protocol){if(!w[e.protocol]){for(var c=Object.keys(e),f=0;f<c.length;f++){var d=c[f];t[d]=e[d]}return t.href=t.format(),t}if(t.protocol=e.protocol,e.host||b[e.protocol])t.pathname=e.pathname;else{for(j=(e.pathname||"").split("/");j.length&&!(e.host=j.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==j[0]&&j.unshift(""),j.length<2&&j.unshift(""),t.pathname=j.join("/")}if(t.search=e.search,t.query=e.query,t.host=e.host||"",t.auth=e.auth,t.hostname=e.hostname||e.host,t.port=e.port,t.pathname||t.search){var p=t.pathname||"",m=t.search||"";t.path=p+m}return t.slashes=t.slashes||e.slashes,t.href=t.format(),t}var v=t.pathname&&"/"===t.pathname.charAt(0),y=e.host||e.pathname&&"/"===e.pathname.charAt(0),g=y||v||t.host&&e.pathname,P=g,E=t.pathname&&t.pathname.split("/")||[],j=e.pathname&&e.pathname.split("/")||[],S=t.protocol&&!w[t.protocol];if(S&&(t.hostname="",t.port=null,t.host&&(""===E[0]?E[0]=t.host:E.unshift(t.host)),t.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===j[0]?j[0]=e.host:j.unshift(e.host)),e.host=null),g=g&&(""===j[0]||""===E[0])),y)t.host=e.host||""===e.host?e.host:t.host,t.hostname=e.hostname||""===e.hostname?e.hostname:t.hostname,t.search=e.search,t.query=e.query,E=j;else if(j.length)E||(E=[]),E.pop(),E=E.concat(j),t.search=e.search,t.query=e.query;else if(!h.isNullOrUndefined(e.search))return S&&(t.hostname=t.host=E.shift(),(O=!!(t.host&&t.host.indexOf("@")>0)&&t.host.split("@"))&&(t.auth=O.shift(),t.host=t.hostname=O.shift())),t.search=e.search,t.query=e.query,h.isNull(t.pathname)&&h.isNull(t.search)||(t.path=(t.pathname?t.pathname:"")+(t.search?t.search:"")),t.href=t.format(),t;if(!E.length)return t.pathname=null,t.path=t.search?"/"+t.search:null,t.href=t.format(),t;for(var _=E.slice(-1)[0],x=(t.host||e.host||E.length>1)&&("."===_||".."===_)||""===_,F=0,$=E.length;$>=0;$--)"."===(_=E[$])?E.splice($,1):".."===_?(E.splice($,1),F++):F&&(E.splice($,1),F--);if(!g&&!P)for(;F--;F)E.unshift("..");!g||""===E[0]||E[0]&&"/"===E[0].charAt(0)||E.unshift(""),x&&"/"!==E.join("/").substr(-1)&&E.push("");var R=""===E[0]||E[0]&&"/"===E[0].charAt(0);if(S){t.hostname=t.host=R?"":E.length?E.shift():"";var O=!!(t.host&&t.host.indexOf("@")>0)&&t.host.split("@");O&&(t.auth=O.shift(),t.host=t.hostname=O.shift())}return(g=g||t.host&&E.length)&&!R&&E.unshift(""),E.length?t.pathname=E.join("/"):(t.pathname=null,t.path=null),h.isNull(t.pathname)&&h.isNull(t.search)||(t.path=(t.pathname?t.pathname:"")+(t.search?t.search:"")),t.auth=e.auth||t.auth,t.slashes=t.slashes||e.slashes,t.href=t.format(),t},a.prototype.parseHost=function(){var e=this.host,r=c.exec(e);r&&(":"!==(r=r[0])&&(this.port=r.substr(1)),e=e.substr(0,e.length-r.length)),e&&(this.hostname=e)}},{"./util":52,punycode:47,querystring:50}],52:[function(e,r,t){"use strict";r.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},{}],ajv:[function(e,r,t){"use strict";function a(e){if(!(this instanceof a))return new a(e);e=this._opts=L.copy(e)||{},this._schemas={},this._refs={},this._fragments={},this._formats=A(e.format);var r=this._schemaUriFormat=this._formats["uri-reference"];this._schemaUriFormatFunc=function(e){return r.test(e)},this._cache=e.cache||new O,this._loadingSchemas={},this._compilations=[],this.RULES=k(),this._getId=y(e),e.loopRequired=e.loopRequired||1/0,"property"==e.errorDataPath&&(e._errorDataPathProperty=!0),void 0===e.serialize&&(e.serialize=I),this._metaOpts=F(this),e.formats&&_(this),j(this),"object"==typeof e.meta&&this.addMetaSchema(e.meta),S(this),e.patternGroups&&C(this)}function s(e,r){var t;if("string"==typeof e){if(!(t=this.getSchema(e)))throw new Error('no schema with key or ref "'+e+'"')}else{var a=this._addSchema(e);t=a.validate||this._compile(a)}var s=t(r);return!0===t.$async?"*"==this._opts.async?z(s):s:(this.errors=t.errors,s)}function o(e,r){var t=this._addSchema(e,void 0,r);return t.validate||this._compile(t)}function i(e,r,t,a){if(Array.isArray(e))for(var s=0;s<e.length;s++)this.addSchema(e[s],void 0,t,a);else{var o=this._getId(e);if(void 0!==o&&"string"!=typeof o)throw new Error("schema id must be string");x(this,r=R.normalizeId(r||o)),this._schemas[r]=this._addSchema(e,t,a,!0)}}function n(e,r,t){this.addSchema(e,r,t,!0)}function l(e,r){var t=e.$schema;if(void 0!==t&&"string"!=typeof t)throw new Error("$schema must be a string");if(!(t=t||this._opts.defaultMeta||h(this)))return console.warn("meta-schema not available"),this.errors=null,!0;var a=this._formats.uri;this._formats.uri="function"==typeof a?this._schemaUriFormatFunc:this._schemaUriFormat;var s;try{s=this.validate(t,e)}finally{this._formats.uri=a}if(!s&&r){var o="schema is invalid: "+this.errorsText();if("log"!=this._opts.validateSchema)throw new Error(o);console.error(o)}return s}function h(e){var r=e._opts.meta;return e._opts.defaultMeta="object"==typeof r?e._getId(r)||r:e.getSchema(V)?V:void 0}function u(e){var r=f(this,e);switch(typeof r){case"object":return r.validate||this._compile(r);case"string":return this.getSchema(r);case"undefined":return c(this,e)}}function c(e,r){var t=R.schema.call(e,{schema:{}},r);if(t){var a=t.schema,s=t.root,o=t.baseId,i=$.call(e,a,s,void 0,o);return e._fragments[r]=new D({ref:r,fragment:!0,schema:a,root:s,baseId:o,validate:i}),i}}function f(e,r){return r=R.normalizeId(r),e._schemas[r]||e._refs[r]||e._fragments[r]}function d(e){if(e instanceof RegExp)return p(this,this._schemas,e),void p(this,this._refs,e);switch(typeof e){case"undefined":return p(this,this._schemas),p(this,this._refs),void this._cache.clear();case"string":var r=f(this,e);return r&&this._cache.del(r.cacheKey),delete this._schemas[e],void delete this._refs[e];case"object":var t=this._opts.serialize,a=t?t(e):e;this._cache.del(a);var s=this._getId(e);s&&(s=R.normalizeId(s),delete this._schemas[s],delete this._refs[s])}}function p(e,r,t){for(var a in r){var s=r[a];s.meta||t&&!t.test(a)||(e._cache.del(s.cacheKey),delete r[a])}}function m(e,r,t,a){if("object"!=typeof e&&"boolean"!=typeof e)throw new Error("schema should be object or boolean");var s=this._opts.serialize,o=s?s(e):e,i=this._cache.get(o);if(i)return i;a=a||!1!==this._opts.addUsedSchema;var n=R.normalizeId(this._getId(e));n&&a&&x(this,n);var l,h=!1!==this._opts.validateSchema&&!r;h&&!(l=n&&n==R.normalizeId(e.$schema))&&this.validateSchema(e,!0);var u=R.ids.call(this,e),c=new D({id:n,schema:e,localRefs:u,cacheKey:o,meta:t});return"#"!=n[0]&&a&&(this._refs[n]=c),this._cache.put(o,c),h&&l&&this.validateSchema(e,!0),c}function v(e,r){function t(){var r=e.validate,a=r.apply(null,arguments);return t.errors=r.errors,a}if(e.compiling)return e.validate=t,t.schema=e.schema,t.errors=null,t.root=r||t,!0===e.schema.$async&&(t.$async=!0),t;e.compiling=!0;var a;e.meta&&(a=this._opts,this._opts=this._metaOpts);var s;try{s=$.call(this,e.schema,r,e.localRefs)}finally{e.compiling=!1,e.meta&&(this._opts=a)}return e.validate=s,e.refs=s.refs,e.refVal=s.refVal,e.root=s.root,s}function y(e){switch(e.schemaId){case"$id":return P;case"id":return g;default:return E}}function g(e){return e.$id&&console.warn("schema $id ignored",e.$id),e.id}function P(e){return e.id&&console.warn("schema id ignored",e.id),e.$id}function E(e){if(e.$id&&e.id&&e.$id!=e.id)throw new Error("schema $id is different from id");return e.$id||e.id}function b(e,r){if(!(e=e||this.errors))return"No errors";for(var t=void 0===(r=r||{}).separator?", ":r.separator,a=void 0===r.dataVar?"data":r.dataVar,s="",o=0;o<e.length;o++){var i=e[o];i&&(s+=a+i.dataPath+" "+i.message+t)}return s.slice(0,-t.length)}function w(e,r){"string"==typeof r&&(r=new RegExp(r)),this._formats[e]=r}function j(r){var t;if(r._opts.$data&&(t=e("./refs/$data.json"),r.addMetaSchema(t,t.$id,!0)),!1!==r._opts.meta){var a=e("./refs/json-schema-draft-06.json");r._opts.$data&&(a=q(a,T)),r.addMetaSchema(a,V,!0),r._refs["http://json-schema.org/schema"]=V}}function S(e){var r=e._opts.schemas;if(r)if(Array.isArray(r))e.addSchema(r);else for(var t in r)e.addSchema(r[t],t)}function _(e){for(var r in e._opts.formats){var t=e._opts.formats[r];e.addFormat(r,t)}}function x(e,r){if(e._schemas[r]||e._refs[r])throw new Error('schema with key or id "'+r+'" already exists')}function F(e){for(var r=L.copy(e._opts),t=0;t<N.length;t++)delete r[N[t]];return r}var $=e("./compile"),R=e("./compile/resolve"),O=e("./cache"),D=e("./compile/schema_obj"),I=e("json-stable-stringify"),A=e("./compile/formats"),k=e("./compile/rules"),q=e("./$data"),C=e("./patternGroups"),L=e("./compile/util"),z=e("co");r.exports=a,a.prototype.validate=s,a.prototype.compile=o,a.prototype.addSchema=i,a.prototype.addMetaSchema=n,a.prototype.validateSchema=l,a.prototype.getSchema=u,a.prototype.removeSchema=d,a.prototype.addFormat=w,a.prototype.errorsText=b,a.prototype._addSchema=m,a.prototype._compile=v,a.prototype.compileAsync=e("./compile/async");var Q=e("./keyword");a.prototype.addKeyword=Q.add,a.prototype.getKeyword=Q.get,a.prototype.removeKeyword=Q.remove;var U=e("./compile/error_classes");a.ValidationError=U.Validation,a.MissingRefError=U.MissingRef,a.$dataMetaSchema=q;var V="http://json-schema.org/draft-06/schema",N=["removeAdditional","useDefaults","coerceTypes"],T=["/properties"]},{"./$data":1,"./cache":2,"./compile":7,"./compile/async":4,"./compile/error_classes":5,"./compile/formats":6,"./compile/resolve":8,"./compile/rules":9,"./compile/schema_obj":10,"./compile/util":12,"./keyword":36,"./patternGroups":37,"./refs/$data.json":38,"./refs/json-schema-draft-06.json":39,co:40,"json-stable-stringify":43}]},{},[])("ajv")});
//# sourceMappingURL=ajv.min.js.map \ No newline at end of file
diff --git a/tools/eslint/node_modules/ajv/dist/ajv.min.js.map b/tools/eslint/node_modules/ajv/dist/ajv.min.js.map
index 1469e6886d..c91d60f919 100644
--- a/tools/eslint/node_modules/ajv/dist/ajv.min.js.map
+++ b/tools/eslint/node_modules/ajv/dist/ajv.min.js.map
@@ -1 +1 @@
-{"version":3,"sources":["0"],"names":["f","exports","module","define","amd","window","global","self","this","Ajv","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","KEYWORDS","metaSchema","keywordsJsonPointers","JSON","parse","stringify","j","segments","split","keywords","key","schema","anyOf","$ref","2","Cache","_cache","prototype","put","value","get","del","clear","3","allOf","const","contains","dependencies","enum","format","items","maximum","minimum","maxItems","minItems","maxLength","minLength","maxProperties","minProperties","multipleOf","not","oneOf","pattern","properties","propertyNames","required","uniqueItems","validate","../dotjs/_limit","../dotjs/_limitItems","../dotjs/_limitLength","../dotjs/_limitProperties","../dotjs/allOf","../dotjs/anyOf","../dotjs/const","../dotjs/contains","../dotjs/dependencies","../dotjs/enum","../dotjs/format","../dotjs/items","../dotjs/multipleOf","../dotjs/not","../dotjs/oneOf","../dotjs/pattern","../dotjs/properties","../dotjs/propertyNames","../dotjs/ref","../dotjs/required","../dotjs/uniqueItems","../dotjs/validate","4","compileAsync","meta","callback","loadMetaSchemaOf","sch","$schema","getSchema","Promise","resolve","_compileAsync","schemaObj","_compile","MissingRefError","removePromise","_loadingSchemas","ref","added","_refs","_schemas","missingSchema","missingRef","schemaPromise","_opts","loadSchema","then","addSchema","undefined","p","_addSchema","v","MissingRef","./error_classes","5","ValidationError","errors","message","ajv","validation","baseId","url","normalizeId","fullPath","errorSubclass","Subclass","Object","create","constructor","Validation","./resolve","6","formats","mode","util","copy","date","str","matches","match","DATE","month","day","DAYS","time","full","TIME","hour","minute","second","timeZone","date_time","dateTime","DATE_TIME_SEPARATOR","hostname","HOSTNAME","test","uri","NOT_URI_FRAGMENT","URI","regex","Z_ANCHOR","RegExp","URIREF","URITEMPLATE","URL","UUID","JSON_POINTER","RELATIVE_JSON_POINTER","fast","date-time","uri-reference","uri-template","email","ipv4","ipv6","uuid","json-pointer","relative-json-pointer","./util","7","compile","root","localRefs","callValidate","compilation","result","apply","arguments","localCompile","_schema","_root","isRoot","$async","sourceCode","validateGenerator","isTop","schemaPath","errSchemaPath","errorPath","errorClasses","RULES","resolveRef","usePattern","useDefault","useCustomRule","opts","vars","refVal","refValCode","patterns","patternCode","defaults","defaultCode","customRules","customRuleCode","processCode","Function","co","equal","ucs2length","console","error","refs","source","_refVal","refCode","refIndex","resolvedRef","rootRefId","addLocalRef","localSchema","inlineRef","inlineRefs","replaceLocalRef","refId","inline","regexStr","index","patternsHash","toQuotedString","valueStr","stableStringify","defaultsHash","rule","parentSchema","it","validateSchema","definition","errorsText","macro","keyword","c","checkCompiling","_compilations","compiling","_formats","cv","endCompiling","compIndex","splice","arr","statement","fast-deep-equal","json-stable-stringify","8","SchemaObject","res","resolveSchema","refPath","_getFullPath","getFullPath","_getId","id","resolveRecursive","getJsonPointer","parsedRef","resolveUrl","hash","slice","parts","part","unescapeFragment","PREVENT_SCOPE_CHANGE","limit","checkNoRef","countKeys","item","Array","isArray","count","Infinity","SIMPLE_INLINED","normalize","protocolSeparator","protocol","href","host","path","replace","TRAILING_SLASH_HASH","resolveIds","schemaId","baseIds","","fullPaths","traverse","allKeys","jsonPtr","rootSchema","parentJsonPtr","parentKeyword","keyIndex","escapeFragment","ids","toHash","./schema_obj","json-schema-traverse","9","ruleModules","type","rules","ALL","TYPES","all","types","forEach","group","map","implKeywords","keys","k","push","implements","concat","custom","./_rules","10","obj","11","len","pos","charCodeAt","12","to","checkDataType","dataType","data","negate","EQUAL","AND","OK","NOT","checkDataTypes","dataTypes","array","object","null","number","integer","coerceToTypes","optionCoerceTypes","COERCE_TO_TYPES","getProperty","IDENTIFIER","escapeQuotes","SINGLE_QUOTE","varOccurences","dataVar","varReplace","expr","cleanUpCode","out","EMPTY_ELSE","EMPTY_IF_NO_ELSE","EMPTY_IF_WITH_ELSE","finalCleanUpCode","async","ERRORS_REGEXP","REMOVE_ERRORS_ASYNC","RETURN_ASYNC","RETURN_DATA_ASYNC","REMOVE_ERRORS","RETURN_VALID","RETURN_TRUE","ROOTDATA_REGEXP","REMOVE_ROOTDATA","schemaHasRules","schemaHasRulesExcept","exceptKeyword","getPathExpr","currentPath","jsonPointers","isNumber","joinPaths","getPath","prop","escapeJsonPointer","getData","$data","lvl","paths","up","jsonPointer","segment","unescapeJsonPointer","b","decodeURIComponent","encodeURIComponent","./ucs2length","13","$keyword","$ruleType","$schemaValue","$lvl","level","$dataLvl","dataLevel","$schemaPath","$errSchemaPath","$breakOnError","allErrors","$isData","dataPathArr","$isMax","$exclusiveKeyword","$schemaExcl","$isDataExcl","$op","$notOp","$errorKeyword","$schemaValueExcl","$exclusive","$exclType","$exclIsNumber","$opStr","$opExpr","$$outStack","createErrors","messages","verbose","__err","pop","compositeRule","Math","14","15","unicode","16","17","$it","$closingBraces","$nextValid","$currentBaseId","$allSchemasEmpty","arr1","$sch","$i","l1","18","$valid","$errs","every","$wasComposite","19","20","$idx","$dataNxt","$nextData","$nonEmptySchema","$passData","$code","21","$compile","$inline","$macro","$ruleValidate","$validateCode","$rule","$definition","$rDef","$validateSchema","$ruleErrs","$ruleErr","$asyncKeyword","statements","passContext","$parentData","$parentDataProperty","def_callRuleValidate","modifying","valid","def_customError","22","$schemaDeps","$propertyDeps","$ownProperties","ownProperties","$property","$deps","$currentErrorPath","$propertyKey","$useData","$prop","$propertyPath","$missingProperty","_errorDataPathProperty","join","arr2","i2","l2","23","$vSchema","24","$unknownFormats","unknownFormats","$allowUnknown","$format","$isObject","$formatType","warn","indexOf","$formatRef","25","$additionalItems","additionalItems","$currErrSchemaPath","26","multipleOfPrecision","27","$allErrorsOption","28","29","$regexp","30","$key","$dataProperties","$schemaKeys","$pProperties","patternProperties","$pPropertyKeys","$aProperties","additionalProperties","$someProperties","$noAdditional","$additionalIsSchema","$removeAdditional","removeAdditional","$checkAdditional","$required","v5","loopRequired","$requiredHash","patternGroups","$pgProperties","$pgPropertyKeys","i1","$pProperty","arr3","l3","$pgProperty","$additionalProperty","$useDefaults","useDefaults","arr4","i4","l4","$hasDefault","default","arr5","i5","l5","arr6","i6","l6","$pgSchema","$pgMin","$pgMax","$limit","$reason","$moreOrLess","31","$invalidName","32","$refCode","$refVal","$message","missingRefs","__callValidate","33","$propertySch","$loopRequired","i3","34","35","$shouldUseGroup","$rulesGroup","$shouldUseRule","$ruleImlementsSomeKeyword","impl","$refKeywords","$id","$es7","yieldAwait","$top","rootId","$closingBraces1","$closingBraces2","$typeSchema","$typeIsArray","extendRefs","coerceTypes","$coerceToTypes","$method","$dataType","$coerced","$bracesCoercion","$type","36","addKeyword","_addRule","ruleGroup","rg","getKeyword","removeKeyword","add","remove","./dotjs/custom","37","defaultMeta","metaSchemaRef","38","description","39","title","definitions","schemaArray","nonNegativeInteger","nonNegativeIntegerDefault0","simpleTypes","stringArray","exclusiveMinimum","exclusiveMaximum","40","gen","ctx","args","reject","onFulfilled","ret","next","onRejected","err","throw","done","toPromise","isPromise","TypeError","String","isGeneratorFunction","isGenerator","thunkToPromise","arrayToPromise","isObject","objectToPromise","fn","results","promises","promise","name","displayName","val","wrap","createPromise","__generatorFunction__","41","arrA","arrB","dateA","Date","dateB","getTime","regexpA","regexpB","toString","hasOwnProperty","42","_traverse","cb","arrayKeywords","propsKeywords","escapeJsonPtr","skipKeywords","43","json","cmp","space","cycles","replacer","node","seen","parent","indent","colonSeparator","toJSON","objectKeys","sort","keyValue","x","has","jsonify","44","./lib/parse","./lib/stringify","45","at","ch","text","escapee","\"","\\","/","m","charAt","string","isFinite","hex","uffff","parseInt","fromCharCode","white","word","reviver","walk","holder","46","quote","escapable","lastIndex","partial","mind","gap","rep","\b","\t","\n","\f","\r","47","RangeError","mapDomain","regexSeparators","ucs2decode","extra","output","counter","ucs2encode","stringFromCharCode","basicToDigit","codePoint","base","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","floor","damp","baseMinusTMin","tMax","skew","decode","input","basic","oldi","w","baseMinusT","inputLength","initialN","bias","initialBias","lastIndexOf","delimiter","maxInt","tMin","encode","handledCPCount","basicLength","q","currentValue","handledCPCountPlusOne","qMinusT","toUnicode","regexPunycode","toLowerCase","toASCII","regexNonASCII","freeExports","nodeType","freeModule","freeGlobal","punycode","overflow","not-basic","invalid-input","version","ucs2","48","qs","sep","eq","options","regexp","maxKeys","kstr","vstr","idx","substr","xs","49","stringifyPrimitive","ks","50","./decode","./encode","51","Url","slashes","auth","port","search","query","pathname","urlParse","parseQueryString","slashesDenoteHost","urlFormat","isString","urlResolve","relative","urlResolveObject","resolveObject","protocolPattern","portPattern","simplePathPattern","delims","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","javascript:","hostlessProtocol","slashedProtocol","http","https","ftp","gopher","file","http:","https:","ftp:","gopher:","file:","querystring","queryIndex","splitter","uSplit","slashRegex","rest","trim","simplePath","exec","proto","lowerProto","hostEnd","hec","atSign","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","unshift","h","ae","esc","escape","qm","rel","tkeys","tk","tkey","rkeys","rk","rkey","relPath","shift","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","isNullOrUndefined","authInHost","isNull","last","hasTrailingSlash","isAbsolute","52","arg","_fragments","schemaUriFormat","_schemaUriFormat","_schemaUriFormatFunc","cache","chooseGetId","errorDataPath","serialize","_metaOpts","getMetaSchemaOptions","addInitialFormats","addDraft6MetaSchema","addMetaSchema","addInitialSchemas","schemaKeyRef","_meta","_skipValidation","checkUnique","skipValidation","throwOrLogError","currentUriFormat","META_SCHEMA_ID","keyRef","_getSchemaObj","_getSchemaFragment","compileSchema","fragment","removeSchema","_removeAllSchemas","cacheKey","schemas","shouldAddSchema","cached","addUsedSchema","recursiveMeta","willValidate","_validate","currentOpts","_get$Id","_get$IdOrId","separator","dataPath","addFormat","$dataSchema","$dataMetaSchema","META_SUPPORT_DATA","optsSchemas","metaOpts","META_IGNORE_OPTIONS","customKeyword","./$data","./cache","./compile","./compile/async","./compile/error_classes","./compile/formats","./compile/resolve","./compile/rules","./compile/schema_obj","./compile/util","./keyword","./patternGroups","./refs/$data.json","./refs/json-schema-draft-06.json"],"mappings":"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","file":"ajv.min.js"} \ No newline at end of file
+{"version":3,"sources":["0"],"names":["f","exports","module","define","amd","window","global","self","this","Ajv","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","KEYWORDS","metaSchema","keywordsJsonPointers","JSON","parse","stringify","j","segments","split","keywords","key","schema","anyOf","$ref","2","Cache","_cache","prototype","put","value","get","del","clear","3","allOf","const","contains","dependencies","enum","format","items","maximum","minimum","maxItems","minItems","maxLength","minLength","maxProperties","minProperties","multipleOf","not","oneOf","pattern","properties","propertyNames","required","uniqueItems","validate","../dotjs/_limit","../dotjs/_limitItems","../dotjs/_limitLength","../dotjs/_limitProperties","../dotjs/allOf","../dotjs/anyOf","../dotjs/const","../dotjs/contains","../dotjs/dependencies","../dotjs/enum","../dotjs/format","../dotjs/items","../dotjs/multipleOf","../dotjs/not","../dotjs/oneOf","../dotjs/pattern","../dotjs/properties","../dotjs/propertyNames","../dotjs/ref","../dotjs/required","../dotjs/uniqueItems","../dotjs/validate","4","compileAsync","meta","callback","loadMetaSchemaOf","sch","$schema","getSchema","Promise","resolve","_compileAsync","schemaObj","_compile","MissingRefError","removePromise","_loadingSchemas","ref","added","_refs","_schemas","missingSchema","missingRef","schemaPromise","_opts","loadSchema","then","addSchema","undefined","p","_addSchema","v","MissingRef","./error_classes","5","ValidationError","errors","message","ajv","validation","baseId","url","normalizeId","fullPath","errorSubclass","Subclass","Object","create","constructor","Validation","./resolve","6","formats","mode","util","copy","date","str","matches","match","DATE","month","day","DAYS","time","full","TIME","hour","minute","second","timeZone","date_time","dateTime","DATE_TIME_SEPARATOR","hostname","HOSTNAME","test","uri","NOT_URI_FRAGMENT","URI","regex","Z_ANCHOR","RegExp","URIREF","URITEMPLATE","URL","UUID","JSON_POINTER","RELATIVE_JSON_POINTER","fast","date-time","uri-reference","uri-template","email","ipv4","ipv6","uuid","json-pointer","relative-json-pointer","./util","7","compile","root","localRefs","callValidate","compilation","result","apply","arguments","localCompile","_schema","_root","isRoot","$async","sourceCode","validateGenerator","isTop","schemaPath","errSchemaPath","errorPath","errorClasses","RULES","resolveRef","usePattern","useDefault","useCustomRule","opts","vars","refVal","refValCode","patterns","patternCode","defaults","defaultCode","customRules","customRuleCode","processCode","Function","co","equal","ucs2length","console","error","refs","source","_refVal","refCode","refIndex","resolvedRef","rootRefId","addLocalRef","localSchema","inlineRef","inlineRefs","replaceLocalRef","removeLocalRef","refId","inline","regexStr","index","patternsHash","toQuotedString","valueStr","stableStringify","defaultsHash","rule","parentSchema","it","validateSchema","definition","errorsText","macro","keyword","c","checkCompiling","_compilations","compiling","_formats","cv","endCompiling","compIndex","splice","arr","statement","fast-deep-equal","json-stable-stringify","8","SchemaObject","res","resolveSchema","refPath","_getFullPath","getFullPath","_getId","id","resolveRecursive","getJsonPointer","parsedRef","resolveUrl","hash","slice","parts","part","unescapeFragment","PREVENT_SCOPE_CHANGE","limit","checkNoRef","countKeys","item","Array","isArray","count","Infinity","SIMPLE_INLINED","normalize","protocolSeparator","protocol","href","host","path","replace","TRAILING_SLASH_HASH","resolveIds","schemaId","baseIds","","fullPaths","traverse","allKeys","jsonPtr","rootSchema","parentJsonPtr","parentKeyword","keyIndex","escapeFragment","ids","toHash","./schema_obj","json-schema-traverse","9","ruleModules","type","rules","ALL","TYPES","all","types","forEach","group","map","implKeywords","keys","k","push","implements","concat","custom","./_rules","10","obj","11","len","pos","charCodeAt","12","to","checkDataType","dataType","data","negate","EQUAL","AND","OK","NOT","checkDataTypes","dataTypes","array","object","null","number","integer","coerceToTypes","optionCoerceTypes","COERCE_TO_TYPES","getProperty","IDENTIFIER","escapeQuotes","SINGLE_QUOTE","varOccurences","dataVar","varReplace","expr","cleanUpCode","out","EMPTY_ELSE","EMPTY_IF_NO_ELSE","EMPTY_IF_WITH_ELSE","finalCleanUpCode","async","ERRORS_REGEXP","REMOVE_ERRORS_ASYNC","RETURN_ASYNC","RETURN_DATA_ASYNC","REMOVE_ERRORS","RETURN_VALID","RETURN_TRUE","ROOTDATA_REGEXP","REMOVE_ROOTDATA","schemaHasRules","schemaHasRulesExcept","exceptKeyword","getPathExpr","currentPath","jsonPointers","isNumber","joinPaths","getPath","prop","escapeJsonPointer","getData","$data","lvl","paths","up","jsonPointer","segment","unescapeJsonPointer","b","decodeURIComponent","encodeURIComponent","./ucs2length","13","$keyword","$ruleType","$schemaValue","$lvl","level","$dataLvl","dataLevel","$schemaPath","$errSchemaPath","$breakOnError","allErrors","$isData","dataPathArr","$isMax","$exclusiveKeyword","$schemaExcl","$isDataExcl","$op","$notOp","$errorKeyword","$schemaValueExcl","$exclusive","$exclType","$exclIsNumber","$opStr","$opExpr","$$outStack","createErrors","messages","verbose","__err","pop","compositeRule","Math","14","15","unicode","16","17","$it","$closingBraces","$nextValid","$currentBaseId","$allSchemasEmpty","arr1","$sch","$i","l1","18","$valid","$errs","every","$wasComposite","19","20","$idx","$dataNxt","$nextData","$nonEmptySchema","$passData","$code","21","$compile","$inline","$macro","$ruleValidate","$validateCode","$rule","$definition","$rDef","$validateSchema","$ruleErrs","$ruleErr","$asyncKeyword","statements","passContext","$parentData","$parentDataProperty","def_callRuleValidate","modifying","valid","def_customError","22","$schemaDeps","$propertyDeps","$ownProperties","ownProperties","$property","$deps","$currentErrorPath","$propertyKey","$useData","$prop","$propertyPath","$missingProperty","_errorDataPathProperty","join","arr2","i2","l2","23","$vSchema","24","$unknownFormats","unknownFormats","$allowUnknown","$format","$isObject","$formatType","warn","indexOf","$formatRef","25","$additionalItems","additionalItems","$currErrSchemaPath","26","multipleOfPrecision","27","$allErrorsOption","28","29","$regexp","30","$key","$dataProperties","$schemaKeys","$pProperties","patternProperties","$pPropertyKeys","$aProperties","additionalProperties","$someProperties","$noAdditional","$additionalIsSchema","$removeAdditional","removeAdditional","$checkAdditional","$required","v5","loopRequired","$requiredHash","patternGroups","$pgProperties","$pgPropertyKeys","i1","$pProperty","arr3","l3","$pgProperty","$additionalProperty","$useDefaults","useDefaults","arr4","i4","l4","$hasDefault","default","arr5","i5","l5","arr6","i6","l6","$pgSchema","$pgMin","$pgMax","$limit","$reason","$moreOrLess","31","$invalidName","32","$refCode","$refVal","$message","missingRefs","__callValidate","33","$propertySch","$loopRequired","i3","34","35","$shouldUseGroup","$rulesGroup","$shouldUseRule","$ruleImlementsSomeKeyword","impl","$refKeywords","$id","$es7","yieldAwait","$top","rootId","$closingBraces1","$closingBraces2","$typeSchema","$typeIsArray","extendRefs","coerceTypes","$coerceToTypes","$method","$dataType","$coerced","$bracesCoercion","$type","36","addKeyword","_addRule","ruleGroup","rg","getKeyword","removeKeyword","add","remove","./dotjs/custom","37","defaultMeta","metaSchemaRef","38","description","39","title","definitions","schemaArray","nonNegativeInteger","nonNegativeIntegerDefault0","simpleTypes","stringArray","exclusiveMinimum","exclusiveMaximum","40","gen","ctx","args","reject","onFulfilled","ret","next","onRejected","err","throw","done","toPromise","isPromise","TypeError","String","isGeneratorFunction","isGenerator","thunkToPromise","arrayToPromise","isObject","objectToPromise","fn","results","promises","promise","name","displayName","val","wrap","createPromise","__generatorFunction__","41","arrA","arrB","dateA","Date","dateB","getTime","regexpA","regexpB","toString","hasOwnProperty","42","_traverse","cb","arrayKeywords","propsKeywords","escapeJsonPtr","skipKeywords","43","json","cmp","space","cycles","replacer","node","seen","parent","indent","colonSeparator","toJSON","objectKeys","sort","keyValue","x","has","jsonify","44","./lib/parse","./lib/stringify","45","at","ch","text","escapee","\"","\\","/","m","charAt","string","isFinite","hex","uffff","parseInt","fromCharCode","white","word","reviver","walk","holder","46","quote","escapable","lastIndex","partial","mind","gap","rep","\b","\t","\n","\f","\r","47","RangeError","mapDomain","regexSeparators","ucs2decode","extra","output","counter","ucs2encode","stringFromCharCode","basicToDigit","codePoint","base","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","floor","damp","baseMinusTMin","tMax","skew","decode","input","basic","oldi","w","baseMinusT","inputLength","initialN","bias","initialBias","lastIndexOf","delimiter","maxInt","tMin","encode","handledCPCount","basicLength","q","currentValue","handledCPCountPlusOne","qMinusT","toUnicode","regexPunycode","toLowerCase","toASCII","regexNonASCII","freeExports","nodeType","freeModule","freeGlobal","punycode","overflow","not-basic","invalid-input","version","ucs2","48","qs","sep","eq","options","regexp","maxKeys","kstr","vstr","idx","substr","xs","49","stringifyPrimitive","ks","50","./decode","./encode","51","Url","slashes","auth","port","search","query","pathname","urlParse","parseQueryString","slashesDenoteHost","urlFormat","isString","urlResolve","relative","urlResolveObject","resolveObject","protocolPattern","portPattern","simplePathPattern","delims","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","javascript:","hostlessProtocol","slashedProtocol","http","https","ftp","gopher","file","http:","https:","ftp:","gopher:","file:","querystring","queryIndex","splitter","uSplit","slashRegex","rest","trim","simplePath","exec","proto","lowerProto","hostEnd","hec","atSign","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","unshift","h","ae","esc","escape","qm","rel","tkeys","tk","tkey","rkeys","rk","rkey","relPath","shift","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","isNullOrUndefined","authInHost","isNull","last","hasTrailingSlash","isAbsolute","52","arg","_fragments","schemaUriFormat","_schemaUriFormat","_schemaUriFormatFunc","cache","chooseGetId","errorDataPath","serialize","_metaOpts","getMetaSchemaOptions","addInitialFormats","addDraft6MetaSchema","addMetaSchema","addInitialSchemas","schemaKeyRef","_meta","_skipValidation","checkUnique","skipValidation","throwOrLogError","currentUriFormat","META_SCHEMA_ID","keyRef","_getSchemaObj","_getSchemaFragment","compileSchema","fragment","removeSchema","_removeAllSchemas","cacheKey","schemas","shouldAddSchema","cached","addUsedSchema","recursiveMeta","willValidate","_validate","currentOpts","_get$Id","_get$IdOrId","separator","dataPath","addFormat","$dataSchema","$dataMetaSchema","META_SUPPORT_DATA","optsSchemas","metaOpts","META_IGNORE_OPTIONS","customKeyword","./$data","./cache","./compile","./compile/async","./compile/error_classes","./compile/formats","./compile/resolve","./compile/rules","./compile/schema_obj","./compile/util","./keyword","./patternGroups","./refs/$data.json","./refs/json-schema-draft-06.json"],"mappings":";CAAA,SAAUA,GAAG,GAAoB,iBAAVC,SAAoC,oBAATC,OAAsBA,OAAOD,QAAQD,SAAS,GAAmB,mBAATG,QAAqBA,OAAOC,IAAKD,UAAUH,OAAO,EAA0B,oBAATK,OAAwBA,OAA+B,oBAATC,OAAwBA,OAA6B,oBAAPC,KAAsBA,KAAYC,MAAOC,IAAMT,MAAO,WAAqC,OAAO,SAAUU,EAAEC,EAAEC,EAAEC,GAAG,SAASC,EAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,IAAIE,EAAkB,mBAATC,SAAqBA,QAAQ,IAAIF,GAAGC,EAAE,OAAOA,EAAEF,GAAE,GAAI,GAAGI,EAAE,OAAOA,EAAEJ,GAAE,GAAI,IAAIf,EAAE,IAAIoB,MAAM,uBAAuBL,EAAE,KAAK,MAAMf,EAAEqB,KAAK,mBAAmBrB,EAAE,IAAIsB,EAAEV,EAAEG,IAAId,YAAYU,EAAEI,GAAG,GAAGQ,KAAKD,EAAErB,QAAQ,SAASS,GAAG,IAAIE,EAAED,EAAEI,GAAG,GAAGL,GAAG,OAAOI,EAAEF,GAAIF,IAAIY,EAAEA,EAAErB,QAAQS,EAAEC,EAAEC,EAAEC,GAAG,OAAOD,EAAEG,GAAGd,QAAkD,IAAI,IAA1CkB,EAAkB,mBAATD,SAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,IAAI,OAAOD,IAAKW,GAAG,SAASP,EAAQhB,EAAOD,GACl0B,aAEA,IAAIyB,GACF,aACA,UACA,mBACA,UACA,mBACA,YACA,YACA,UACA,kBACA,WACA,WACA,cACA,gBACA,gBACA,WACA,uBACA,OACA,SACA,SAGFxB,EAAOD,QAAU,SAAU0B,EAAYC,GACrC,IAAK,IAAIT,EAAE,EAAGA,EAAES,EAAqBJ,OAAQL,IAAK,CAChDQ,EAAaE,KAAKC,MAAMD,KAAKE,UAAUJ,IACvC,IAEIK,EAFAC,EAAWL,EAAqBT,GAAGe,MAAM,KACzCC,EAAWR,EAEf,IAAKK,EAAE,EAAGA,EAAEC,EAAST,OAAQQ,IAC3BG,EAAWA,EAASF,EAASD,IAE/B,IAAKA,EAAE,EAAGA,EAAEN,EAASF,OAAQQ,IAAK,CAChC,IAAII,EAAMV,EAASM,GACfK,EAASF,EAASC,GAClBC,IACFF,EAASC,IACPE,OACED,GACEE,KAAM,qFAOlB,OAAOZ,QAGHa,GAAG,SAAStB,EAAQhB,EAAOD,GACjC,aAGA,IAAIwC,EAAQvC,EAAOD,QAAU,WAC3BO,KAAKkC,WAIPD,EAAME,UAAUC,IAAM,SAAmBR,EAAKS,GAC5CrC,KAAKkC,OAAON,GAAOS,GAIrBJ,EAAME,UAAUG,IAAM,SAAmBV,GACvC,OAAO5B,KAAKkC,OAAON,IAIrBK,EAAME,UAAUI,IAAM,SAAmBX,UAChC5B,KAAKkC,OAAON,IAIrBK,EAAME,UAAUK,MAAQ,WACtBxC,KAAKkC,gBAGDO,GAAG,SAAS/B,EAAQhB,EAAOD,GACjC,aAGAC,EAAOD,SACLsC,KAAQrB,EAAQ,gBAChBgC,MAAOhC,EAAQ,kBACfoB,MAAOpB,EAAQ,kBACfiC,MAAOjC,EAAQ,kBACfkC,SAAUlC,EAAQ,qBAClBmC,aAAcnC,EAAQ,yBACtBoC,KAAQpC,EAAQ,iBAChBqC,OAAQrC,EAAQ,mBAChBsC,MAAOtC,EAAQ,kBACfuC,QAASvC,EAAQ,mBACjBwC,QAASxC,EAAQ,mBACjByC,SAAUzC,EAAQ,wBAClB0C,SAAU1C,EAAQ,wBAClB2C,UAAW3C,EAAQ,yBACnB4C,UAAW5C,EAAQ,yBACnB6C,cAAe7C,EAAQ,6BACvB8C,cAAe9C,EAAQ,6BACvB+C,WAAY/C,EAAQ,uBACpBgD,IAAKhD,EAAQ,gBACbiD,MAAOjD,EAAQ,kBACfkD,QAASlD,EAAQ,oBACjBmD,WAAYnD,EAAQ,uBACpBoD,cAAepD,EAAQ,0BACvBqD,SAAUrD,EAAQ,qBAClBsD,YAAatD,EAAQ,wBACrBuD,SAAUvD,EAAQ,wBAGjBwD,kBAAkB,GAAGC,uBAAuB,GAAGC,wBAAwB,GAAGC,4BAA4B,GAAGC,iBAAiB,GAAGC,iBAAiB,GAAGC,iBAAiB,GAAGC,oBAAoB,GAAGC,wBAAwB,GAAGC,gBAAgB,GAAGC,kBAAkB,GAAGC,iBAAiB,GAAGC,sBAAsB,GAAGC,eAAe,GAAGC,iBAAiB,GAAGC,mBAAmB,GAAGC,sBAAsB,GAAGC,yBAAyB,GAAGC,eAAe,GAAGC,oBAAoB,GAAGC,uBAAuB,GAAGC,oBAAoB,KAAKC,GAAG,SAAS9E,EAAQhB,EAAOD,GACvhB,aAgBA,SAASgG,EAAa5D,EAAQ6D,EAAMC,GA4BlC,SAASC,EAAiBC,GACxB,IAAIC,EAAUD,EAAIC,QAClB,OAAOA,IAAY/F,EAAKgG,UAAUD,GACxBL,EAAa1E,KAAKhB,GAAQgC,KAAM+D,IAAW,GAC3CE,QAAQC,UAIpB,SAASC,EAAcC,GACrB,IAAM,OAAOpG,EAAKqG,SAASD,GAC3B,MAAMjG,GACJ,GAAIA,aAAamG,EAAiB,OAKpC,SAA2BnG,GAoBzB,SAASoG,WACAvG,EAAKwG,gBAAgBC,GAG9B,SAASC,EAAMD,GACb,OAAOzG,EAAK2G,MAAMF,IAAQzG,EAAK4G,SAASH,GAxB1C,IAAIA,EAAMtG,EAAE0G,cACZ,GAAIH,EAAMD,GAAM,MAAM,IAAI5F,MAAM,UAAY4F,EAAM,kBAAoBtG,EAAE2G,WAAa,uBAErF,IAAIC,EAAgB/G,EAAKwG,gBAAgBC,GAMzC,OALKM,IACHA,EAAgB/G,EAAKwG,gBAAgBC,GAAOzG,EAAKgH,MAAMC,WAAWR,IACpDS,KAAKX,EAAeA,GAG7BQ,EAAcG,KAAK,SAAUpB,GAClC,IAAKY,EAAMD,GACT,OAAOZ,EAAiBC,GAAKoB,KAAK,WAC3BR,EAAMD,IAAMzG,EAAKmH,UAAUrB,EAAKW,OAAKW,EAAWzB,OAGxDuB,KAAK,WACN,OAAOf,EAAcC,MAtBoCjG,GAC3D,MAAMA,GApCV,IAAIH,EAAOC,KACX,GAAoC,mBAAzBA,KAAK+G,MAAMC,WACpB,MAAM,IAAIpG,MAAM,2CAEC,mBAAR8E,IACTC,EAAWD,EACXA,OAAOyB,GAGT,IAAIC,EAAIxB,EAAiB/D,GAAQoF,KAAK,WACpC,IAAId,EAAYpG,EAAKsH,WAAWxF,OAAQsF,EAAWzB,GACnD,OAAOS,EAAUlC,UAAYiC,EAAcC,KAU7C,OAPIR,GACFyB,EAAEH,KACA,SAASK,GAAK3B,EAAS,KAAM2B,IAC7B3B,GAIGyB,EAvCT,IAAIf,EAAkB3F,EAAQ,mBAAmB6G,WAEjD7H,EAAOD,QAAUgG,IAuFd+B,kBAAkB,IAAIC,GAAG,SAAS/G,EAAQhB,EAAOD,GACpD,aAUA,SAASiI,EAAgBC,GACvB3H,KAAK4H,QAAU,oBACf5H,KAAK2H,OAASA,EACd3H,KAAK6H,IAAM7H,KAAK8H,YAAa,EAS/B,SAASzB,EAAgB0B,EAAQvB,EAAKoB,GACpC5H,KAAK4H,QAAUA,GAAWvB,EAAgBuB,QAAQG,EAAQvB,GAC1DxG,KAAK6G,WAAaZ,EAAQ+B,IAAID,EAAQvB,GACtCxG,KAAK4G,cAAgBX,EAAQgC,YAAYhC,EAAQiC,SAASlI,KAAK6G,aAIjE,SAASsB,EAAcC,GAGrB,OAFAA,EAASjG,UAAYkG,OAAOC,OAAO1H,MAAMuB,WACzCiG,EAASjG,UAAUoG,YAAcH,EAC1BA,EA9BT,IAAInC,EAAUvF,EAAQ,aAEtBhB,EAAOD,SACL+I,WAAYL,EAAcT,GAC1BH,WAAYY,EAAc9B,IAW5BA,EAAgBuB,QAAU,SAAUG,EAAQvB,GAC1C,MAAO,2BAA8BA,EAAM,YAAcuB,KAiBxDU,YAAY,IAAIC,GAAG,SAAShI,EAAQhB,EAAOD,GAC9C,aAwBA,SAASkJ,EAAQC,GAEf,OADAA,EAAe,QAARA,EAAiB,OAAS,OAC1BC,EAAKC,KAAKH,EAAQC,IAsD3B,SAASG,EAAKC,GAEZ,IAAIC,EAAUD,EAAIE,MAAMC,GACxB,IAAKF,EAAS,OAAO,EAErB,IAAIG,GAASH,EAAQ,GACjBI,GAAOJ,EAAQ,GACnB,OAAOG,GAAS,GAAKA,GAAS,IAAMC,GAAO,GAAKA,GAAOC,EAAKF,GAI9D,SAASG,EAAKP,EAAKQ,GACjB,IAAIP,EAAUD,EAAIE,MAAMO,GACxB,IAAKR,EAAS,OAAO,EAErB,IAAIS,EAAOT,EAAQ,GACfU,EAASV,EAAQ,GACjBW,EAASX,EAAQ,GACjBY,EAAWZ,EAAQ,GACvB,OAAOS,GAAQ,IAAMC,GAAU,IAAMC,GAAU,MAAQJ,GAAQK,GAKjE,SAASC,EAAUd,GAEjB,IAAIe,EAAWf,EAAItH,MAAMsI,GACzB,OAA0B,GAAnBD,EAAS/I,QAAe+H,EAAKgB,EAAS,KAAOR,EAAKQ,EAAS,IAAI,GAIxE,SAASE,EAASjB,GAGhB,OAAOA,EAAIhI,QAAU,KAAOkJ,EAASC,KAAKnB,GAK5C,SAASoB,EAAIpB,GAEX,OAAOqB,EAAiBF,KAAKnB,IAAQsB,EAAIH,KAAKnB,GAKhD,SAASuB,EAAMvB,GACb,GAAIwB,EAASL,KAAKnB,GAAM,OAAO,EAC/B,IAEE,OADA,IAAIyB,OAAOzB,IACJ,EACP,MAAM9I,GACN,OAAO,GAlIX,IAAI2I,EAAOnI,EAAQ,UAEfyI,EAAO,2BACPG,GAAQ,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAC3CG,EAAO,oDACPS,EAAW,qFACXI,EAAM,+nCACNI,EAAS,yoCAETC,EAAc,oLAKdC,EAAM,4rDACNC,EAAO,+DACPC,EAAe,yFACfC,EAAwB,mDAG5BrL,EAAOD,QAAUkJ,EAQjBA,EAAQqC,MAENjC,KAAM,6BAENQ,KAAM,2DACN0B,YAAa,uFAEbb,IAAK,4CACLc,gBAAiB,4CACjBC,eAAgBR,EAChB3C,IAAK4C,EAILQ,MAAO,mHACPnB,SAAUC,EAEVmB,KAAM,4EAENC,KAAM,qpCACNf,MAAOA,EAEPgB,KAAMV,EAGNW,eAAgBV,EAEhBW,wBAAyBV,GAI3BpC,EAAQa,MACNT,KAAMA,EACNQ,KAAMA,EACN0B,YAAanB,EACbM,IAAKA,EACLc,gBAAiBR,EACjBS,eAAgBR,EAChB3C,IAAK4C,EACLQ,MAAO,4IACPnB,SAAUA,EACVoB,KAAM,4EACNC,KAAM,qpCACNf,MAAOA,EACPgB,KAAMV,EACNW,eAAgBV,EAChBW,wBAAyBV,GA2B3B,IAAIf,EAAsB,QAetBK,EAAmB,OAOnBG,EAAW,aAWZkB,SAAS,KAAKC,GAAG,SAASjL,EAAQhB,EAAOD,GAC5C,aAgCA,SAASmM,EAAQ/J,EAAQgK,EAAMC,EAAW/D,GAwCxC,SAASgE,IACP,IAAI9H,EAAW+H,EAAY/H,SACvBgI,EAAShI,EAASiI,MAAM,KAAMC,WAElC,OADAJ,EAAapE,OAAS1D,EAAS0D,OACxBsE,EAGT,SAASG,EAAaC,EAASC,EAAOR,EAAW/D,GAC/C,IAAIwE,GAAUD,GAAUA,GAASA,EAAMzK,QAAUwK,EACjD,GAAIC,EAAMzK,QAAUgK,EAAKhK,OACvB,OAAO+J,EAAQ7K,KAAKhB,EAAMsM,EAASC,EAAOR,EAAW/D,GAEvD,IAAIyE,GAA4B,IAAnBH,EAAQG,OAEjBC,EAAaC,GACfC,OAAO,EACP9K,OAAQwK,EACRE,OAAQA,EACRxE,OAAQA,EACR8D,KAAMS,EACNM,WAAY,GACZC,cAAe,IACfC,UAAW,KACXzG,gBAAiB0G,EAAaxF,WAC9ByF,MAAOA,EACP/I,SAAUyI,EACV7D,KAAMA,EACN5C,QAASA,EACTgH,WAAYA,EACZC,WAAYA,EACZC,WAAYA,EACZC,cAAeA,EACfC,KAAMA,EACN1E,QAASA,EACT5I,KAAMA,IAGR0M,EAAaa,EAAKC,EAAQC,GAAcF,EAAKG,EAAUC,GACtCJ,EAAKK,EAAUC,GAAeN,EAAKO,EAAaC,GAChDrB,EAEbY,EAAKU,cAAatB,EAAaY,EAAKU,YAAYtB,IAEpD,IAAIxI,EACJ,IAgBEA,EAfmB,IAAI+J,SACrB,OACA,QACA,UACA,OACA,SACA,WACA,cACA,KACA,QACA,aACA,kBACAvB,GAIA1M,EACAiN,EACArE,EACAkD,EACA0B,EACAI,EACAE,EACAI,EACAC,EACAC,EACAzG,GAGF6F,EAAO,GAAKtJ,EACZ,MAAM/D,GAEN,MADAkO,QAAQC,MAAM,yCAA0C5B,GAClDvM,EAiBR,OAdA+D,EAASpC,OAASwK,EAClBpI,EAAS0D,OAAS,KAClB1D,EAASqK,KAAOA,EAChBrK,EAASsJ,OAASA,EAClBtJ,EAAS4H,KAAOU,EAAStI,EAAWqI,EAChCE,IAAQvI,EAASuI,QAAS,IACN,IAApBa,EAAKZ,aACPxI,EAASsK,QACP1N,KAAM4L,EACNgB,SAAUA,EACVE,SAAUA,IAIP1J,EAGT,SAASgJ,EAAWlF,EAAQvB,EAAK+F,GAC/B/F,EAAMP,EAAQ+B,IAAID,EAAQvB,GAC1B,IACIgI,EAASC,EADTC,EAAWJ,EAAK9H,GAEpB,QAAiBW,IAAbuH,EAGF,OAFAF,EAAUjB,EAAOmB,GACjBD,EAAU,UAAYC,EAAW,IAC1BC,EAAYH,EAASC,GAE9B,IAAKlC,GAAUV,EAAKyC,KAAM,CACxB,IAAIM,EAAY/C,EAAKyC,KAAK9H,GAC1B,QAAkBW,IAAdyH,EAGF,OAFAJ,EAAU3C,EAAK0B,OAAOqB,GACtBH,EAAUI,EAAYrI,EAAKgI,GACpBG,EAAYH,EAASC,GAIhCA,EAAUI,EAAYrI,GACtB,IAAIc,EAAIrB,EAAQlF,KAAKhB,EAAMqM,EAAcP,EAAMrF,GAC/C,QAAUW,IAANG,EAAiB,CACnB,IAAIwH,EAAchD,GAAaA,EAAUtF,GACrCsI,IACFxH,EAAIrB,EAAQ8I,UAAUD,EAAazB,EAAK2B,YAClCF,EACAlD,EAAQ7K,KAAKhB,EAAM+O,EAAajD,EAAMC,EAAW/D,IAI3D,QAAUZ,IAANG,EAIF,OADA2H,EAAgBzI,EAAKc,GACdqH,EAAYrH,EAAGmH,GAHtBS,EAAe1I,GAOnB,SAASqI,EAAYrI,EAAKc,GACxB,IAAI6H,EAAQ5B,EAAOvM,OAGnB,OAFAuM,EAAO4B,GAAS7H,EAChBgH,EAAK9H,GAAO2I,EACL,SAAWA,EAGpB,SAASD,EAAe1I,UACf8H,EAAK9H,GAGd,SAASyI,EAAgBzI,EAAKc,GAE5BiG,EADYe,EAAK9H,IACDc,EAGlB,SAASqH,EAAYpB,EAAQ1M,GAC3B,MAAwB,iBAAV0M,GAAuC,kBAAVA,GAC/B1M,KAAMA,EAAMgB,OAAQ0L,EAAQ6B,QAAQ,IACpCvO,KAAMA,EAAM2L,OAAQe,GAAUA,EAAOf,QAGnD,SAASU,EAAWmC,GAClB,IAAIC,EAAQC,EAAaF,GAKzB,YAJclI,IAAVmI,IACFA,EAAQC,EAAaF,GAAY5B,EAASzM,OAC1CyM,EAAS6B,GAASD,GAEb,UAAYC,EAGrB,SAASnC,EAAW9K,GAClB,cAAeA,GACb,IAAK,UACL,IAAK,SACH,MAAO,GAAKA,EACd,IAAK,SACH,OAAOwG,EAAK2G,eAAenN,GAC7B,IAAK,SACH,GAAc,OAAVA,EAAgB,MAAO,OAC3B,IAAIoN,EAAWC,EAAgBrN,GAC3BiN,EAAQK,EAAaF,GAKzB,YAJctI,IAAVmI,IACFA,EAAQK,EAAaF,GAAY9B,EAAS3M,OAC1C2M,EAAS2B,GAASjN,GAEb,UAAYiN,GAIzB,SAASlC,EAAcwC,EAAM/N,EAAQgO,EAAcC,GACjD,IAAIC,EAAiBH,EAAKI,WAAWD,eACrC,GAAIA,IAAgD,IAA9BhQ,EAAKgH,MAAMgJ,iBACnBA,EAAelO,GACf,CACV,IAAI+F,EAAU,8BAAgC7H,EAAKkQ,WAAWF,EAAepI,QAC7E,GAAiC,OAA7B5H,EAAKgH,MAAMgJ,eACV,MAAM,IAAInP,MAAMgH,GADmBwG,QAAQC,MAAMzG,GAK1D,IAII3D,EAJA2H,EAAUgE,EAAKI,WAAWpE,QAC1BwD,EAASQ,EAAKI,WAAWZ,OACzBc,EAAQN,EAAKI,WAAWE,MAG5B,GAAItE,EACF3H,EAAW2H,EAAQ7K,KAAKhB,EAAM8B,EAAQgO,EAAcC,QAC/C,GAAII,EACTjM,EAAWiM,EAAMnP,KAAKhB,EAAM8B,EAAQgO,EAAcC,IACtB,IAAxBzC,EAAK0C,gBAA0BhQ,EAAKgQ,eAAe9L,GAAU,QAC5D,GAAImL,EACTnL,EAAWmL,EAAOrO,KAAKhB,EAAM+P,EAAIF,EAAKO,QAAStO,EAAQgO,QAGvD,KADA5L,EAAW2L,EAAKI,WAAW/L,UACZ,OAGjB,QAAiBkD,IAAblD,EACF,MAAM,IAAIrD,MAAM,mBAAqBgP,EAAKO,QAAU,sBAEtD,IAAIb,EAAQzB,EAAY7M,OAGxB,OAFA6M,EAAYyB,GAASrL,GAGnBpD,KAAM,aAAeyO,EACrBrL,SAAUA,GAjQd,IAAIlE,EAAOC,KACPqN,EAAOrN,KAAK+G,MACZwG,QAAWpG,GACXmH,KACAb,KACA8B,KACA5B,KACAgC,KACA9B,KAEJhC,EAAOA,IAAUhK,OAAQA,EAAQ0L,OAAQA,EAAQe,KAAMA,GAEvD,IAAI8B,EAAIC,EAAetP,KAAKf,KAAM6B,EAAQgK,EAAM9D,GAC5CiE,EAAchM,KAAKsQ,cAAcF,EAAEd,OACvC,GAAIc,EAAEG,UAAW,OAAQvE,EAAYD,aAAeA,EAEpD,IAAIpD,EAAU3I,KAAKwQ,SACfxD,EAAQhN,KAAKgN,MAEjB,IACE,IAAI1F,EAAI8E,EAAavK,EAAQgK,EAAMC,EAAW/D,GAC9CiE,EAAY/H,SAAWqD,EACvB,IAAImJ,EAAKzE,EAAYD,aAUrB,OATI0E,IACFA,EAAG5O,OAASyF,EAAEzF,OACd4O,EAAG9I,OAAS,KACZ8I,EAAGnC,KAAOhH,EAAEgH,KACZmC,EAAGlD,OAASjG,EAAEiG,OACdkD,EAAG5E,KAAOvE,EAAEuE,KACZ4E,EAAGjE,OAASlF,EAAEkF,OACVa,EAAKZ,aAAYgE,EAAGlC,OAASjH,EAAEiH,SAE9BjH,EACP,QACAoJ,EAAa3P,KAAKf,KAAM6B,EAAQgK,EAAM9D,IA6O1C,SAASsI,EAAexO,EAAQgK,EAAM9D,GAEpC,IAAIuH,EAAQqB,EAAU5P,KAAKf,KAAM6B,EAAQgK,EAAM9D,GAC/C,OAAIuH,GAAS,GAAYA,MAAOA,EAAOiB,WAAW,IAClDjB,EAAQtP,KAAKsQ,cAActP,OAC3BhB,KAAKsQ,cAAchB,IACjBzN,OAAQA,EACRgK,KAAMA,EACN9D,OAAQA,IAEDuH,MAAOA,EAAOiB,WAAW,IAWpC,SAASG,EAAa7O,EAAQgK,EAAM9D,GAElC,IAAIpH,EAAIgQ,EAAU5P,KAAKf,KAAM6B,EAAQgK,EAAM9D,GACvCpH,GAAK,GAAGX,KAAKsQ,cAAcM,OAAOjQ,EAAG,GAY3C,SAASgQ,EAAU9O,EAAQgK,EAAM9D,GAE/B,IAAK,IAAIpH,EAAE,EAAGA,EAAEX,KAAKsQ,cAActP,OAAQL,IAAK,CAC9C,IAAIyP,EAAIpQ,KAAKsQ,cAAc3P,GAC3B,GAAIyP,EAAEvO,QAAUA,GAAUuO,EAAEvE,MAAQA,GAAQuE,EAAErI,QAAUA,EAAQ,OAAOpH,EAEzE,OAAQ,EAIV,SAAS+M,EAAY/M,EAAG8M,GACtB,MAAO,cAAgB9M,EAAI,iBAAmBkI,EAAK2G,eAAe/B,EAAS9M,IAAM,KAInF,SAASiN,EAAYjN,GACnB,MAAO,cAAgBA,EAAI,eAAiBA,EAAI,KAIlD,SAAS6M,EAAW7M,EAAG4M,GACrB,YAAqBpG,IAAdoG,EAAO5M,GAAmB,GAAK,aAAeA,EAAI,aAAeA,EAAI,KAI9E,SAASmN,EAAenN,GACtB,MAAO,iBAAmBA,EAAI,kBAAoBA,EAAI,KAIxD,SAAS2M,EAAKuD,EAAKC,GACjB,IAAKD,EAAI7P,OAAQ,MAAO,GAExB,IAAK,IADDH,EAAO,GACFF,EAAE,EAAGA,EAAEkQ,EAAI7P,OAAQL,IAC1BE,GAAQiQ,EAAUnQ,EAAGkQ,GACvB,OAAOhQ,EAvXT,IAAIoF,EAAUvF,EAAQ,aAClBmI,EAAOnI,EAAQ,UACfqM,EAAerM,EAAQ,mBACvBgP,EAAkBhP,EAAQ,yBAE1BgM,EAAoBhM,EAAQ,qBAM5BuN,EAAKvN,EAAQ,MACbyN,EAAatF,EAAKsF,WAClBD,EAAQxN,EAAQ,mBAGhBgH,EAAkBqF,EAAavE,WAEnC9I,EAAOD,QAAUmM,IAwWdrG,oBAAoB,GAAGiC,kBAAkB,EAAEiB,YAAY,EAAEiD,SAAS,GAAGuC,GAAK,GAAG8C,kBAAkB,GAAGC,wBAAwB,KAAKC,GAAG,SAASvQ,EAAQhB,EAAOD,GAC7J,aAyBA,SAASwG,EAAQ2F,EAASC,EAAMrF,GAE9B,IAAI+G,EAASvN,KAAK0G,MAAMF,GACxB,GAAqB,iBAAV+G,EAAoB,CAC7B,IAAIvN,KAAK0G,MAAM6G,GACV,OAAOtH,EAAQlF,KAAKf,KAAM4L,EAASC,EAAM0B,GADtBA,EAASvN,KAAK0G,MAAM6G,GAK9C,IADAA,EAASA,GAAUvN,KAAK2G,SAASH,cACX0K,EACpB,OAAOnC,EAAUxB,EAAO1L,OAAQ7B,KAAK+G,MAAMiI,YACjCzB,EAAO1L,OACP0L,EAAOtJ,UAAYjE,KAAKoG,SAASmH,GAG7C,IACI1L,EAAQyF,EAAGS,EADXoJ,EAAMC,EAAcrQ,KAAKf,KAAM6L,EAAMrF,GAgBzC,OAdI2K,IACFtP,EAASsP,EAAItP,OACbgK,EAAOsF,EAAItF,KACX9D,EAASoJ,EAAIpJ,QAGXlG,aAAkBqP,EACpB5J,EAAIzF,EAAOoC,UAAY2H,EAAQ7K,KAAKf,KAAM6B,EAAOA,OAAQgK,OAAM1E,EAAWY,QACtDZ,IAAXtF,IACTyF,EAAIyH,EAAUlN,EAAQ7B,KAAK+G,MAAMiI,YAC3BnN,EACA+J,EAAQ7K,KAAKf,KAAM6B,EAAQgK,OAAM1E,EAAWY,IAG7CT,EAWT,SAAS8J,EAAcvF,EAAMrF,GAE3B,IAAIY,EAAIY,EAAI1G,MAAMkF,GAAK,GAAO,GAC1B6K,EAAUC,EAAalK,GACvBW,EAASwJ,EAAYvR,KAAKwR,OAAO3F,EAAKhK,SAC1C,GAAIwP,IAAYtJ,EAAQ,CACtB,IAAI0J,EAAKxJ,EAAYoJ,GACjB9D,EAASvN,KAAK0G,MAAM+K,GACxB,GAAqB,iBAAVlE,EACT,OAAOmE,EAAiB3Q,KAAKf,KAAM6L,EAAM0B,EAAQnG,GAC5C,GAAImG,aAAkB2D,EACtB3D,EAAOtJ,UAAUjE,KAAKoG,SAASmH,GACpC1B,EAAO0B,MACF,CAEL,MADAA,EAASvN,KAAK2G,SAAS8K,cACDP,GAMpB,OAJA,GADK3D,EAAOtJ,UAAUjE,KAAKoG,SAASmH,GAChCkE,GAAMxJ,EAAYzB,GACpB,OAAS3E,OAAQ0L,EAAQ1B,KAAMA,EAAM9D,OAAQA,GAC/C8D,EAAO0B,EAKX,IAAK1B,EAAKhK,OAAQ,OAClBkG,EAASwJ,EAAYvR,KAAKwR,OAAO3F,EAAKhK,SAExC,OAAO8P,EAAe5Q,KAAKf,KAAMoH,EAAGW,EAAQ8D,EAAKhK,OAAQgK,GAK3D,SAAS6F,EAAiB7F,EAAMrF,EAAKoL,GAEnC,IAAIT,EAAMC,EAAcrQ,KAAKf,KAAM6L,EAAMrF,GACzC,GAAI2K,EAAK,CACP,IAAItP,EAASsP,EAAItP,OACbkG,EAASoJ,EAAIpJ,OACjB8D,EAAOsF,EAAItF,KACX,IAAI4F,EAAKzR,KAAKwR,OAAO3P,GAErB,OADI4P,IAAI1J,EAAS8J,EAAW9J,EAAQ0J,IAC7BE,EAAe5Q,KAAKf,KAAM4R,EAAW7J,EAAQlG,EAAQgK,IAOhE,SAAS8F,EAAeC,EAAW7J,EAAQlG,EAAQgK,GAGjD,GAAiC,OADjC+F,EAAUE,KAAOF,EAAUE,MAAQ,IAChBC,MAAM,EAAE,GAA3B,CAGA,IAAK,IAFDC,EAAQJ,EAAUE,KAAKpQ,MAAM,KAExBf,EAAI,EAAGA,EAAIqR,EAAMhR,OAAQL,IAAK,CACrC,IAAIsR,EAAOD,EAAMrR,GACjB,GAAIsR,EAAM,CAGR,GAFAA,EAAOpJ,EAAKqJ,iBAAiBD,QAEd9K,KADftF,EAASA,EAAOoQ,IACU,MAC1B,IAAIR,EACJ,IAAKU,EAAqBF,MACxBR,EAAKzR,KAAKwR,OAAO3P,MACTkG,EAAS8J,EAAW9J,EAAQ0J,IAChC5P,EAAOE,MAAM,CACf,IAAIA,EAAO8P,EAAW9J,EAAQlG,EAAOE,MACjCoP,EAAMC,EAAcrQ,KAAKf,KAAM6L,EAAM9J,GACrCoP,IACFtP,EAASsP,EAAItP,OACbgK,EAAOsF,EAAItF,KACX9D,EAASoJ,EAAIpJ,UAMvB,YAAeZ,IAAXtF,GAAwBA,IAAWgK,EAAKhK,QACjCA,OAAQA,EAAQgK,KAAMA,EAAM9D,OAAQA,QAD/C,GAcF,SAASgH,EAAUlN,EAAQuQ,GACzB,OAAc,IAAVA,SACUjL,IAAViL,IAAiC,IAAVA,EAAuBC,EAAWxQ,GACpDuQ,EAAcE,EAAUzQ,IAAWuQ,OAAvC,GAIP,SAASC,EAAWxQ,GAClB,IAAI0Q,EACJ,GAAIC,MAAMC,QAAQ5Q,IAChB,IAAK,IAAIlB,EAAE,EAAGA,EAAEkB,EAAOb,OAAQL,IAE7B,GAAmB,iBADnB4R,EAAO1Q,EAAOlB,MACkB0R,EAAWE,GAAO,OAAO,OAG3D,IAAK,IAAI3Q,KAAOC,EAAQ,CACtB,GAAW,QAAPD,EAAe,OAAO,EAE1B,GAAmB,iBADnB2Q,EAAO1Q,EAAOD,MACkByQ,EAAWE,GAAO,OAAO,EAG7D,OAAO,EAIT,SAASD,EAAUzQ,GACjB,IAAe0Q,EAAXG,EAAQ,EACZ,GAAIF,MAAMC,QAAQ5Q,IAChB,IAAK,IAAIlB,EAAE,EAAGA,EAAEkB,EAAOb,OAAQL,IAG7B,GADmB,iBADnB4R,EAAO1Q,EAAOlB,MACe+R,GAASJ,EAAUC,IAC5CG,GAASC,EAAAA,EAAU,OAAOA,EAAAA,OAGhC,IAAK,IAAI/Q,KAAOC,EAAQ,CACtB,GAAW,QAAPD,EAAe,OAAO+Q,EAAAA,EAC1B,GAAIC,EAAehR,GACjB8Q,SAIA,GADmB,iBADnBH,EAAO1Q,EAAOD,MACe8Q,GAASJ,EAAUC,GAAQ,GACpDG,GAASC,EAAAA,EAAU,OAAOA,EAAAA,EAIpC,OAAOD,EAIT,SAASnB,EAAYE,EAAIoB,GAGvB,OAFkB,IAAdA,IAAqBpB,EAAKxJ,EAAYwJ,IAEnCH,EADCtJ,EAAI1G,MAAMmQ,GAAI,GAAO,IAK/B,SAASH,EAAalK,GACpB,IAAI0L,EAAoB1L,EAAE2L,UAAiC,MAArB3L,EAAE4L,KAAKjB,MAAM,EAAE,GAAa,KAAO,GACzE,OAAQ3K,EAAE2L,UAAU,IAAMD,GAAqB1L,EAAE6L,MAAM,KAAO7L,EAAE8L,MAAM,IAAO,IAK/E,SAASjL,EAAYwJ,GACnB,OAAOA,EAAKA,EAAG0B,QAAQC,EAAqB,IAAM,GAIpD,SAASvB,EAAW9J,EAAQ0J,GAE1B,OADAA,EAAKxJ,EAAYwJ,GACVzJ,EAAI/B,QAAQ8B,EAAQ0J,GAK7B,SAAS4B,EAAWxR,GAClB,IAAIyR,EAAWrL,EAAYjI,KAAKwR,OAAO3P,IACnC0R,GAAWC,GAAIF,GACfG,GAAaD,GAAIjC,EAAY+B,GAAU,IACvCxH,KACA/L,EAAOC,KAgCX,OA9BA0T,EAAS7R,GAAS8R,SAAS,GAAO,SAAS9N,EAAK+N,EAASC,EAAYC,EAAeC,EAAelE,EAAcmE,GAC/G,GAAgB,KAAZJ,EAAJ,CACA,IAAInC,EAAK1R,EAAKyR,OAAO3L,GACjBkC,EAASwL,EAAQO,GACjB5L,EAAWuL,EAAUK,GAAiB,IAAMC,EAIhD,QAHiB5M,IAAb6M,IACF9L,GAAY,KAA0B,iBAAZ8L,EAAuBA,EAAWnL,EAAKoL,eAAeD,KAEjE,iBAANvC,EAAgB,CACzBA,EAAK1J,EAASE,EAAYF,EAASC,EAAI/B,QAAQ8B,EAAQ0J,GAAMA,GAE7D,IAAIlE,EAASxN,EAAK2G,MAAM+K,GAExB,GADqB,iBAAVlE,IAAoBA,EAASxN,EAAK2G,MAAM6G,IAC/CA,GAAUA,EAAO1L,QACnB,IAAKqM,EAAMrI,EAAK0H,EAAO1L,QACrB,MAAM,IAAIjB,MAAM,OAAS6Q,EAAK,2CAC3B,GAAIA,GAAMxJ,EAAYC,GAC3B,GAAa,KAATuJ,EAAG,GAAW,CAChB,GAAI3F,EAAU2F,KAAQvD,EAAMrI,EAAKiG,EAAU2F,IACzC,MAAM,IAAI7Q,MAAM,OAAS6Q,EAAK,sCAChC3F,EAAU2F,GAAM5L,OAEhB9F,EAAK2G,MAAM+K,GAAMvJ,EAIvBqL,EAAQK,GAAW7L,EACnB0L,EAAUG,GAAW1L,KAGhB4D,EA3QT,IAAI9D,EAAMtH,EAAQ,OACdwN,EAAQxN,EAAQ,mBAChBmI,EAAOnI,EAAQ,UACfwQ,EAAexQ,EAAQ,gBACvBgT,EAAWhT,EAAQ,wBAEvBhB,EAAOD,QAAUwG,EAEjBA,EAAQgC,YAAcA,EACtBhC,EAAQiC,SAAWqJ,EACnBtL,EAAQ+B,IAAM6J,EACd5L,EAAQiO,IAAMb,EACdpN,EAAQ8I,UAAYA,EACpB9I,EAAQpE,OAASuP,EAkGjB,IAAIe,EAAuBtJ,EAAKsL,QAAQ,aAAc,oBAAqB,OAAQ,eAAgB,gBAmC/FvB,EAAiB/J,EAAKsL,QACxB,OAAQ,SAAU,UAClB,YAAa,YACb,gBAAiB,gBACjB,WAAY,WACZ,UAAW,UACX,cAAe,aACf,WAAY,SAgEVf,EAAsB,UAqDvBgB,eAAe,GAAG1I,SAAS,GAAGqF,kBAAkB,GAAGsD,uBAAuB,GAAGrM,IAAM,KAAKsM,GAAG,SAAS5T,EAAQhB,EAAOD,GACtH,aAEA,IAAI8U,EAAc7T,EAAQ,YACtByT,EAASzT,EAAQ,UAAUyT,OAE/BzU,EAAOD,QAAU,WACf,IAAIuN,IACAwH,KAAM,SACNC,QAAWxR,SAAY,sBACZC,SAAY,qBAAuB,aAAc,YAC5DsR,KAAM,SACNC,OAAS,YAAa,YAAa,UAAW,YAC9CD,KAAM,QACNC,OAAS,WAAY,WAAY,cAAe,WAAY,WAC5DD,KAAM,SACNC,OAAS,gBAAiB,gBAAiB,WAAY,eAAgB,iBAC5D5Q,YAAe,uBAAwB,yBAClD4Q,OAAS,OAAQ,QAAS,OAAQ,MAAO,QAAS,QAAS,WAG3DC,GAAQ,QACRxT,GACF,kBAAmB,UAAW,KAAM,QACpC,cAAe,UAAW,eAExByT,GAAU,SAAU,UAAW,SAAU,QAAS,SAAU,UAAW,QA+B3E,OA9BA3H,EAAM4H,IAAMT,EAAOO,GACnB1H,EAAM6H,MAAQV,EAAOQ,GAErB3H,EAAM8H,QAAQ,SAAUC,GACtBA,EAAMN,MAAQM,EAAMN,MAAMO,IAAI,SAAU7E,GACtC,IAAI8E,EACJ,GAAsB,iBAAX9E,EAAqB,CAC9B,IAAIvO,EAAMyG,OAAO6M,KAAK/E,GAAS,GAC/B8E,EAAe9E,EAAQvO,GACvBuO,EAAUvO,EACVqT,EAAaH,QAAQ,SAAUK,GAC7BT,EAAIU,KAAKD,GACTnI,EAAM4H,IAAIO,IAAK,IASnB,OANAT,EAAIU,KAAKjF,GACEnD,EAAM4H,IAAIzE,IACnBA,QAASA,EACTtP,KAAM0T,EAAYpE,GAClBkF,WAAYJ,KAKZF,EAAMP,OAAMxH,EAAM6H,MAAME,EAAMP,MAAQO,KAG5C/H,EAAMrL,SAAWwS,EAAOO,EAAIY,OAAOpU,IACnC8L,EAAMuI,UAECvI,KAGNwI,WAAW,EAAE9J,SAAS,KAAK+J,IAAI,SAAS/U,EAAQhB,EAAOD,GAC1D,aAMA,SAASyR,EAAawE,GACpB7M,EAAKC,KAAK4M,EAAK1V,MALjB,IAAI6I,EAAOnI,EAAQ,UAEnBhB,EAAOD,QAAUyR,IAMdxF,SAAS,KAAKiK,IAAI,SAASjV,EAAQhB,EAAOD,GAC7C,aAIAC,EAAOD,QAAU,SAAoBuJ,GAKnC,IAJA,IAGI3G,EAHArB,EAAS,EACT4U,EAAM5M,EAAIhI,OACV6U,EAAM,EAEHA,EAAMD,GACX5U,KACAqB,EAAQ2G,EAAI8M,WAAWD,OACV,OAAUxT,GAAS,OAAUwT,EAAMD,GAGtB,QAAX,OADbvT,EAAQ2G,EAAI8M,WAAWD,MACSA,IAGpC,OAAO7U,QAGH+U,IAAI,SAASrV,EAAQhB,EAAOD,GAClC,aA8BA,SAASqJ,EAAKvI,EAAGyV,GACfA,EAAKA,MACL,IAAK,IAAIpU,KAAOrB,EAAGyV,EAAGpU,GAAOrB,EAAEqB,GAC/B,OAAOoU,EAIT,SAASC,EAAcC,EAAUC,EAAMC,GACrC,IAAIC,EAAQD,EAAS,QAAU,QAC3BE,EAAMF,EAAS,OAAS,OACxBG,EAAKH,EAAS,IAAM,GACpBI,EAAMJ,EAAS,GAAK,IACxB,OAAQF,GACN,IAAK,OAAQ,OAAOC,EAAOE,EAAQ,OACnC,IAAK,QAAS,OAAOE,EAAK,iBAAmBJ,EAAO,IACpD,IAAK,SAAU,MAAO,IAAMI,EAAKJ,EAAOG,EAClB,UAAYH,EAAOE,EAAQ,WAAaC,EACxCE,EAAM,iBAAmBL,EAAO,KACtD,IAAK,UAAW,MAAO,WAAaA,EAAOE,EAAQ,WAAaC,EACzCE,EAAM,IAAML,EAAO,QACnBG,EAAMH,EAAOE,EAAQF,EAAO,IACnD,QAAS,MAAO,UAAYA,EAAOE,EAAQ,IAAMH,EAAW,KAKhE,SAASO,EAAeC,EAAWP,GACjC,OAAQO,EAAU1V,QAChB,KAAK,EAAG,OAAOiV,EAAcS,EAAU,GAAIP,GAAM,GACjD,QACE,IAAItV,EAAO,GACPgU,EAAQV,EAAOuC,GACf7B,EAAM8B,OAAS9B,EAAM+B,SACvB/V,EAAOgU,EAAMgC,KAAO,IAAK,KAAOV,EAAO,OACvCtV,GAAQ,UAAYsV,EAAO,wBACpBtB,EAAMgC,YACNhC,EAAM8B,aACN9B,EAAM+B,QAEX/B,EAAMiC,eAAejC,EAAMkC,QAC/B,IAAK,IAAI5W,KAAK0U,EACZhU,IAASA,EAAO,OAAS,IAAOoV,EAAc9V,EAAGgW,GAAM,GAEzD,OAAOtV,GAMb,SAASmW,EAAcC,EAAmBP,GACxC,GAAIlE,MAAMC,QAAQiE,GAAY,CAE5B,IAAK,IADD7B,KACKlU,EAAE,EAAGA,EAAE+V,EAAU1V,OAAQL,IAAK,CACrC,IAAIR,EAAIuW,EAAU/V,GACduW,EAAgB/W,GAAI0U,EAAMA,EAAM7T,QAAUb,EACf,UAAtB8W,GAAuC,UAAN9W,IAAe0U,EAAMA,EAAM7T,QAAUb,GAEjF,GAAI0U,EAAM7T,OAAQ,OAAO6T,MACpB,CAAA,GAAIqC,EAAgBR,GACzB,OAAQA,GACH,GAA0B,UAAtBO,GAA+C,UAAdP,EAC1C,OAAQ,UAKZ,SAASvC,EAAOtD,GAEd,IAAK,IADDiB,KACKnR,EAAE,EAAGA,EAAEkQ,EAAI7P,OAAQL,IAAKmR,EAAKjB,EAAIlQ,KAAM,EAChD,OAAOmR,EAMT,SAASqF,EAAYvV,GACnB,MAAqB,iBAAPA,EACJ,IAAMA,EAAM,IACZwV,EAAWjN,KAAKvI,GACd,IAAMA,EACN,KAAOyV,EAAazV,GAAO,KAIzC,SAASyV,EAAarO,GACpB,OAAOA,EAAImK,QAAQmE,EAAc,QACtBnE,QAAQ,MAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,MAAO,OAI5B,SAASoE,EAAcvO,EAAKwO,GAC1BA,GAAW,SACX,IAAIvO,EAAUD,EAAIE,MAAM,IAAIuB,OAAO+M,EAAS,MAC5C,OAAOvO,EAAUA,EAAQjI,OAAS,EAIpC,SAASyW,EAAWzO,EAAKwO,EAASE,GAGhC,OAFAF,GAAW,WACXE,EAAOA,EAAKvE,QAAQ,MAAO,QACpBnK,EAAImK,QAAQ,IAAI1I,OAAO+M,EAAS,KAAME,EAAO,MAOtD,SAASC,EAAYC,GACnB,OAAOA,EAAIzE,QAAQ0E,EAAY,IACpB1E,QAAQ2E,EAAkB,IAC1B3E,QAAQ4E,EAAoB,cAczC,SAASC,EAAiBJ,EAAKK,GAC7B,IAAIhP,EAAU2O,EAAI1O,MAAMgP,GAUxB,OATIjP,GAA6B,GAAlBA,EAAQjI,SACrB4W,EAAMK,EACEL,EAAIzE,QAAQgF,EAAqB,IAC7BhF,QAAQiF,EAAcC,GAC1BT,EAAIzE,QAAQmF,EAAe,IACvBnF,QAAQoF,EAAcC,IAGpCvP,EAAU2O,EAAI1O,MAAMuP,GACfxP,GAA8B,IAAnBA,EAAQjI,OACjB4W,EAAIzE,QAAQuF,EAAiB,IADSd,EAK/C,SAASe,EAAe9W,EAAQ4S,GAC9B,GAAqB,kBAAV5S,EAAqB,OAAQA,EACxC,IAAK,IAAID,KAAOC,EAAQ,GAAI4S,EAAM7S,GAAM,OAAO,EAIjD,SAASgX,EAAqB/W,EAAQ4S,EAAOoE,GAC3C,GAAqB,kBAAVhX,EAAqB,OAAQA,GAA2B,OAAjBgX,EAClD,IAAK,IAAIjX,KAAOC,EAAQ,GAAID,GAAOiX,GAAiBpE,EAAM7S,GAAM,OAAO,EAIzE,SAAS4N,EAAexG,GACtB,MAAO,IAAOqO,EAAarO,GAAO,IAIpC,SAAS8P,EAAYC,EAAarB,EAAMsB,EAAcC,GAIpD,OAAOC,EAAUH,EAHNC,EACG,SAAatB,GAAQuB,EAAW,GAAK,8CACpCA,EAAW,SAAavB,EAAO,SAAa,YAAiBA,EAAO,aAKrF,SAASyB,EAAQJ,EAAaK,EAAMJ,GAIlC,OAAOE,EAAUH,EAFHvJ,EADHwJ,EACkB,IAAMK,EAAkBD,GACxBjC,EAAYiC,KAO3C,SAASE,EAAQC,EAAOC,EAAKC,GAC3B,IAAIC,EAAIC,EAAaxD,EAAMlN,EAC3B,GAAc,KAAVsQ,EAAc,MAAO,WACzB,GAAgB,KAAZA,EAAM,GAAW,CACnB,IAAKzO,EAAaX,KAAKoP,GAAQ,MAAM,IAAI3Y,MAAM,yBAA2B2Y,GAC1EI,EAAcJ,EACdpD,EAAO,eACF,CAEL,KADAlN,EAAUsQ,EAAMrQ,MAAM6B,IACR,MAAM,IAAInK,MAAM,yBAA2B2Y,GAGzD,GAFAG,GAAMzQ,EAAQ,GAEK,MADnB0Q,EAAc1Q,EAAQ,IACE,CACtB,GAAIyQ,GAAMF,EAAK,MAAM,IAAI5Y,MAAM,gCAAkC8Y,EAAK,gCAAkCF,GACxG,OAAOC,EAAMD,EAAME,GAGrB,GAAIA,EAAKF,EAAK,MAAM,IAAI5Y,MAAM,sBAAwB8Y,EAAK,gCAAkCF,GAE7F,GADArD,EAAO,QAAWqD,EAAME,GAAO,KAC1BC,EAAa,OAAOxD,EAK3B,IAAK,IAFDuB,EAAOvB,EACP1U,EAAWkY,EAAYjY,MAAM,KACxBf,EAAE,EAAGA,EAAEc,EAAST,OAAQL,IAAK,CACpC,IAAIiZ,EAAUnY,EAASd,GACnBiZ,IAEFlC,GAAQ,QADRvB,GAAQgB,EAAY0C,EAAoBD,MAI5C,OAAOlC,EAIT,SAASwB,EAAWzY,EAAGqZ,GACrB,MAAS,MAALrZ,EAAkBqZ,GACdrZ,EAAI,MAAQqZ,GAAG3G,QAAQ,UAAW,IAI5C,SAASjB,EAAiBlJ,GACxB,OAAO6Q,EAAoBE,mBAAmB/Q,IAIhD,SAASiL,EAAejL,GACtB,OAAOgR,mBAAmBX,EAAkBrQ,IAI9C,SAASqQ,EAAkBrQ,GACzB,OAAOA,EAAImK,QAAQ,KAAM,MAAMA,QAAQ,MAAO,MAIhD,SAAS0G,EAAoB7Q,GAC3B,OAAOA,EAAImK,QAAQ,MAAO,KAAKA,QAAQ,MAAO,KAtQhDzT,EAAOD,SACLqJ,KAAMA,EACNmN,cAAeA,EACfQ,eAAgBA,EAChBO,cAAeA,EACf7C,OAAQA,EACRgD,YAAaA,EACbE,aAAcA,EACdnJ,MAAOxN,EAAQ,mBACfyN,WAAYzN,EAAQ,gBACpB6W,cAAeA,EACfE,WAAYA,EACZE,YAAaA,EACbK,iBAAkBA,EAClBW,eAAgBA,EAChBC,qBAAsBA,EACtBpJ,eAAgBA,EAChBsJ,YAAaA,EACbK,QAASA,EACTG,QAASA,EACTpH,iBAAkBA,EAClB2H,oBAAqBA,EACrB5F,eAAgBA,EAChBoF,kBAAmBA,GAoDrB,IAAInC,EAAkB/C,GAAS,SAAU,SAAU,UAAW,UAAW,SAyBrEiD,EAAa,wBACbE,EAAe,QAiCfO,EAAa,gBACbC,EAAmB,uCACnBC,EAAqB,8CAQrBG,EAAgB,eAChBI,EAAgB,kEAChBH,EAAsB,uCACtBI,EAAe,uBACfC,EAAc,uCACdJ,EAAe,gFACfC,EAAoB,eACpBI,EAAkB,qCAClBC,EAAkB,iDAmDlB5N,EAAe,sBACfC,EAAwB,qCA6DzBkP,eAAe,GAAGlJ,kBAAkB,KAAKmJ,IAAI,SAASxZ,EAAQhB,EAAOD,GACxE,aACAC,EAAOD,QAAU,SAAyBqQ,EAAIqK,EAAUC,GACtD,IAUEC,EAVEzC,EAAM,IACN0C,EAAOxK,EAAGyK,MACVC,EAAW1K,EAAG2K,UACd3U,EAAUgK,EAAGjO,OAAOsY,GACpBO,EAAc5K,EAAGlD,WAAakD,EAAGjH,KAAKsO,YAAYgD,GAClDQ,EAAiB7K,EAAGjD,cAAgB,IAAMsN,EAC1CS,GAAiB9K,EAAGzC,KAAKwN,UAEzBtB,EAAQ,QAAUiB,GAAY,IAC9BM,EAAUhL,EAAGzC,KAAKkM,OAASzT,GAAWA,EAAQyT,MAE9CuB,GACFlD,GAAO,cAAgB,EAAS,MAAS9H,EAAGjH,KAAKyQ,QAAQxT,EAAQyT,MAAOiB,EAAU1K,EAAGiL,aAAgB,KACrGV,EAAe,SAAWC,GAE1BD,EAAevU,EAEjB,IAAIkV,EAAqB,WAAZb,EACXc,EAAoBD,EAAS,mBAAqB,mBAClDE,EAAcpL,EAAGjO,OAAOoZ,GACxBE,EAAcrL,EAAGzC,KAAKkM,OAAS2B,GAAeA,EAAY3B,MAC1D6B,EAAMJ,EAAS,IAAM,IACrBK,EAASL,EAAS,IAAM,IACxBM,OAAgBnU,EAClB,GAAIgU,EAAa,CACf,IAAII,EAAmBzL,EAAGjH,KAAKyQ,QAAQ4B,EAAY3B,MAAOiB,EAAU1K,EAAGiL,aACrES,EAAa,YAAclB,EAC3BmB,EAAY,WAAanB,EACzBoB,EAAgB,eAAiBpB,EAEjCqB,EAAS,QADTC,EAAU,KAAOtB,GACY,OAC/B1C,GAAO,kBAAoB,EAAS,MAAQ,EAAqB,KAEjEA,GAAO,QAAU,EAAe,SAAW,EAAc,cADzD2D,EAAmB,aAAejB,GAC2D,SAAW,EAAc,oBAAwB,EAAc,sBAA0B,EAAc,mBAChMgB,EAAgBL,GAChBY,EAAaA,OACNzG,KAAKwC,GAChBA,EAAM,IACkB,IAApB9H,EAAGgM,cACLlE,GAAO,iBAAoB0D,GAAiB,mBAAqB,oCAA0CxL,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,kBACjK,IAArB7K,EAAGzC,KAAK0O,WACVnE,GAAO,gBAAmB,EAAsB,wBAE9C9H,EAAGzC,KAAK2O,UACVpE,GAAO,6BAA+B,EAAgB,mCAAsC9H,EAAa,WAAI,YAAc,EAAU,KAEvI8H,GAAO,OAEPA,GAAO,OAELqE,EAAQrE,EACZA,EAAMiE,EAAWK,MAGbtE,IAFC9H,EAAGqM,eAAiBvB,EACnB9K,EAAGmI,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCL,GAAO,gBACHkD,IACFlD,GAAO,KAAO,EAAiB,4BAA8B,EAAiB,qBAEhFA,GAAO,IAAM,EAAc,qBAAyB,EAAe,MAAQ,EAAiB,qBAAuB,EAAqB,IAAM,EAAQ,KAAO,EAAiB,OAAS,EAAU,IAAM,EAAW,KAAO,EAAqB,MAAQ,EAAU,IAAM,EAAW,IAAM,EAAiB,WAAa,EAAe,MAAQ,EAAqB,gBAAkB,EAAU,IAAM,EAAW,KAAO,EAAiB,MAAQ,EAAU,IAAM,EAAW,IAAM,EAAiB,SAAW,EAAU,QAAU,EAAU,aAAe,EAAS,MAAQ,EAAe,OAAU,EAAQ,QAAY,EAAQ,UACzlB,CAEH+D,EAASP,EACX,IAFIM,EAAsC,iBAAfR,IAENJ,EAAS,CACxBc,EAAU,IAAOD,EAAS,IAC9B/D,GAAO,SACHkD,IACFlD,GAAO,KAAO,EAAiB,4BAA8B,EAAiB,qBAEhFA,GAAO,MAAQ,EAAiB,qBAAuB,EAAgB,IAAM,EAAQ,KAAO,EAAiB,MAAQ,EAAU,IAAM,EAAW,KAAO,EAAgB,MAAQ,EAAU,IAAM,EAAW,IAAM,EAAiB,SAAW,EAAU,QAAU,EAAU,WACrQ,CACD8D,QAA6BvU,IAAZrB,GACnB0V,GAAa,EACbF,EAAgBL,EAChBN,EAAiB7K,EAAGjD,cAAgB,IAAMoO,EAC1CZ,EAAea,EACfG,GAAU,MAENK,IAAerB,EAAe+B,KAAKpB,EAAS,MAAQ,OAAOE,EAAapV,IACxEoV,MAAiBQ,GAAgBrB,IACnCmB,GAAa,EACbF,EAAgBL,EAChBN,EAAiB7K,EAAGjD,cAAgB,IAAMoO,EAC1CI,GAAU,MAEVG,GAAa,EACbG,GAAU,MAGd,IAAIC,EAAU,IAAOD,EAAS,IAC9B/D,GAAO,SACHkD,IACFlD,GAAO,KAAO,EAAiB,4BAA8B,EAAiB,qBAEhFA,GAAO,IAAM,EAAU,IAAM,EAAW,IAAM,EAAiB,OAAS,EAAU,QAAU,EAAU,QAG1G0D,EAAgBA,GAAiBnB,EACjC,IAAI0B,EAAaA,MACjBA,EAAWzG,KAAKwC,GAChBA,EAAM,IACkB,IAApB9H,EAAGgM,cACLlE,GAAO,iBAAoB0D,GAAiB,UAAY,oCAA0CxL,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,4BAA8B,EAAY,YAAc,EAAiB,gBAAkB,EAAe,OAClQ,IAArB7K,EAAGzC,KAAK0O,WACVnE,GAAO,0BAA6B,EAAW,IAE7CA,GADEkD,EACK,OAAU,EAEL,EAAiB,KAG7BhL,EAAGzC,KAAK2O,UACVpE,GAAO,eAELA,GADEkD,EACK,kBAAoB,EAEpB,GAAK,EAEdlD,GAAO,2CAA8C9H,EAAa,WAAI,YAAc,EAAU,KAEhG8H,GAAO,OAEPA,GAAO,OAET,IAAIqE,EAAQrE,EAeZ,OAdAA,EAAMiE,EAAWK,MAGbtE,IAFC9H,EAAGqM,eAAiBvB,EACnB9K,EAAGmI,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCL,GAAO,MACHgD,IACFhD,GAAO,YAEFA,QAGHyE,IAAI,SAAS3b,EAAQhB,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAA8BqQ,EAAIqK,EAAUC,GAC3D,IAUEC,EAVEzC,EAAM,IACN0C,EAAOxK,EAAGyK,MACVC,EAAW1K,EAAG2K,UACd3U,EAAUgK,EAAGjO,OAAOsY,GACpBO,EAAc5K,EAAGlD,WAAakD,EAAGjH,KAAKsO,YAAYgD,GAClDQ,EAAiB7K,EAAGjD,cAAgB,IAAMsN,EAC1CS,GAAiB9K,EAAGzC,KAAKwN,UAEzBtB,EAAQ,QAAUiB,GAAY,IAC9BM,EAAUhL,EAAGzC,KAAKkM,OAASzT,GAAWA,EAAQyT,MAE9CuB,GACFlD,GAAO,cAAgB,EAAS,MAAS9H,EAAGjH,KAAKyQ,QAAQxT,EAAQyT,MAAOiB,EAAU1K,EAAGiL,aAAgB,KACrGV,EAAe,SAAWC,GAE1BD,EAAevU,EAEjB,IAAIsV,EAAkB,YAAZjB,EAAyB,IAAM,IACzCvC,GAAO,QACHkD,IACFlD,GAAO,KAAO,EAAiB,4BAA8B,EAAiB,qBAEhFA,GAAO,IAAM,EAAU,WAAa,EAAQ,IAAM,EAAiB,OACnE,IAAI0D,EAAgBnB,EAChB0B,EAAaA,MACjBA,EAAWzG,KAAKwC,GAChBA,EAAM,IACkB,IAApB9H,EAAGgM,cACLlE,GAAO,iBAAoB0D,GAAiB,eAAiB,oCAA0CxL,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,uBAAyB,EAAiB,OACvM,IAArB7K,EAAGzC,KAAK0O,WACVnE,GAAO,gCAELA,GADc,YAAZuC,EACK,OAEA,OAETvC,GAAO,SAELA,GADEkD,EACK,OAAU,EAAiB,OAE3B,GAAK,EAEdlD,GAAO,YAEL9H,EAAGzC,KAAK2O,UACVpE,GAAO,eAELA,GADEkD,EACK,kBAAoB,EAEpB,GAAK,EAEdlD,GAAO,2CAA8C9H,EAAa,WAAI,YAAc,EAAU,KAEhG8H,GAAO,OAEPA,GAAO,OAET,IAAIqE,EAAQrE,EAeZ,OAdAA,EAAMiE,EAAWK,MAGbtE,IAFC9H,EAAGqM,eAAiBvB,EACnB9K,EAAGmI,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCL,GAAO,KACHgD,IACFhD,GAAO,YAEFA,QAGH0E,IAAI,SAAS5b,EAAQhB,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAA+BqQ,EAAIqK,EAAUC,GAC5D,IAUEC,EAVEzC,EAAM,IACN0C,EAAOxK,EAAGyK,MACVC,EAAW1K,EAAG2K,UACd3U,EAAUgK,EAAGjO,OAAOsY,GACpBO,EAAc5K,EAAGlD,WAAakD,EAAGjH,KAAKsO,YAAYgD,GAClDQ,EAAiB7K,EAAGjD,cAAgB,IAAMsN,EAC1CS,GAAiB9K,EAAGzC,KAAKwN,UAEzBtB,EAAQ,QAAUiB,GAAY,IAC9BM,EAAUhL,EAAGzC,KAAKkM,OAASzT,GAAWA,EAAQyT,MAE9CuB,GACFlD,GAAO,cAAgB,EAAS,MAAS9H,EAAGjH,KAAKyQ,QAAQxT,EAAQyT,MAAOiB,EAAU1K,EAAGiL,aAAgB,KACrGV,EAAe,SAAWC,GAE1BD,EAAevU,EAEjB,IAAIsV,EAAkB,aAAZjB,EAA0B,IAAM,IAC1CvC,GAAO,QACHkD,IACFlD,GAAO,KAAO,EAAiB,4BAA8B,EAAiB,qBAG9EA,IADsB,IAApB9H,EAAGzC,KAAKkP,QACH,IAAM,EAAU,WAEhB,eAAiB,EAAU,KAEpC3E,GAAO,IAAM,EAAQ,IAAM,EAAiB,OAC5C,IAAI0D,EAAgBnB,EAChB0B,EAAaA,MACjBA,EAAWzG,KAAKwC,GAChBA,EAAM,IACkB,IAApB9H,EAAGgM,cACLlE,GAAO,iBAAoB0D,GAAiB,gBAAkB,oCAA0CxL,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,uBAAyB,EAAiB,OACxM,IAArB7K,EAAGzC,KAAK0O,WACVnE,GAAO,8BAELA,GADc,aAAZuC,EACK,SAEA,UAETvC,GAAO,SAELA,GADEkD,EACK,OAAU,EAAiB,OAE3B,GAAK,EAEdlD,GAAO,iBAEL9H,EAAGzC,KAAK2O,UACVpE,GAAO,eAELA,GADEkD,EACK,kBAAoB,EAEpB,GAAK,EAEdlD,GAAO,2CAA8C9H,EAAa,WAAI,YAAc,EAAU,KAEhG8H,GAAO,OAEPA,GAAO,OAET,IAAIqE,EAAQrE,EAeZ,OAdAA,EAAMiE,EAAWK,MAGbtE,IAFC9H,EAAGqM,eAAiBvB,EACnB9K,EAAGmI,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCL,GAAO,KACHgD,IACFhD,GAAO,YAEFA,QAGH4E,IAAI,SAAS9b,EAAQhB,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAAmCqQ,EAAIqK,EAAUC,GAChE,IAUEC,EAVEzC,EAAM,IACN0C,EAAOxK,EAAGyK,MACVC,EAAW1K,EAAG2K,UACd3U,EAAUgK,EAAGjO,OAAOsY,GACpBO,EAAc5K,EAAGlD,WAAakD,EAAGjH,KAAKsO,YAAYgD,GAClDQ,EAAiB7K,EAAGjD,cAAgB,IAAMsN,EAC1CS,GAAiB9K,EAAGzC,KAAKwN,UAEzBtB,EAAQ,QAAUiB,GAAY,IAC9BM,EAAUhL,EAAGzC,KAAKkM,OAASzT,GAAWA,EAAQyT,MAE9CuB,GACFlD,GAAO,cAAgB,EAAS,MAAS9H,EAAGjH,KAAKyQ,QAAQxT,EAAQyT,MAAOiB,EAAU1K,EAAGiL,aAAgB,KACrGV,EAAe,SAAWC,GAE1BD,EAAevU,EAEjB,IAAIsV,EAAkB,iBAAZjB,EAA8B,IAAM,IAC9CvC,GAAO,QACHkD,IACFlD,GAAO,KAAO,EAAiB,4BAA8B,EAAiB,qBAEhFA,GAAO,gBAAkB,EAAU,YAAc,EAAQ,IAAM,EAAiB,OAChF,IAAI0D,EAAgBnB,EAChB0B,EAAaA,MACjBA,EAAWzG,KAAKwC,GAChBA,EAAM,IACkB,IAApB9H,EAAGgM,cACLlE,GAAO,iBAAoB0D,GAAiB,oBAAsB,oCAA0CxL,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,uBAAyB,EAAiB,OAC5M,IAArB7K,EAAGzC,KAAK0O,WACVnE,GAAO,gCAELA,GADc,iBAAZuC,EACK,OAEA,OAETvC,GAAO,SAELA,GADEkD,EACK,OAAU,EAAiB,OAE3B,GAAK,EAEdlD,GAAO,iBAEL9H,EAAGzC,KAAK2O,UACVpE,GAAO,eAELA,GADEkD,EACK,kBAAoB,EAEpB,GAAK,EAEdlD,GAAO,2CAA8C9H,EAAa,WAAI,YAAc,EAAU,KAEhG8H,GAAO,OAEPA,GAAO,OAET,IAAIqE,EAAQrE,EAeZ,OAdAA,EAAMiE,EAAWK,MAGbtE,IAFC9H,EAAGqM,eAAiBvB,EACnB9K,EAAGmI,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCL,GAAO,KACHgD,IACFhD,GAAO,YAEFA,QAGH6E,IAAI,SAAS/b,EAAQhB,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAAwBqQ,EAAIqK,EAAUC,GACrD,IAAIxC,EAAM,IACN9R,EAAUgK,EAAGjO,OAAOsY,GACpBO,EAAc5K,EAAGlD,WAAakD,EAAGjH,KAAKsO,YAAYgD,GAClDQ,EAAiB7K,EAAGjD,cAAgB,IAAMsN,EAC1CS,GAAiB9K,EAAGzC,KAAKwN,UACzB6B,EAAM5M,EAAGjH,KAAKC,KAAKgH,GACnB6M,EAAiB,GAEjBC,EAAa,WADjBF,EAAInC,MAEAsC,EAAiBH,EAAI3U,OACvB+U,GAAmB,EACjBC,EAAOjX,EACX,GAAIiX,EAGF,IAFA,IAAIC,EAAMC,GAAM,EACdC,EAAKH,EAAK/b,OAAS,EACdic,EAAKC,GACVF,EAAOD,EAAKE,GAAM,GACdnN,EAAGjH,KAAK8P,eAAeqE,EAAMlN,EAAG9C,MAAM4H,OACxCkI,GAAmB,EACnBJ,EAAI7a,OAASmb,EACbN,EAAI9P,WAAa8N,EAAc,IAAMuC,EAAK,IAC1CP,EAAI7P,cAAgB8N,EAAiB,IAAMsC,EAC3CrF,GAAO,KAAQ9H,EAAG7L,SAASyY,GAAQ,IACnCA,EAAI3U,OAAS8U,EACTjC,IACFhD,GAAO,QAAU,EAAe,OAChC+E,GAAkB,MAa1B,OARI/B,IAEAhD,GADEkF,EACK,gBAEA,IAAOH,EAAe5K,MAAM,GAAI,GAAM,KAGjD6F,EAAM9H,EAAGjH,KAAK8O,YAAYC,SAItBuF,IAAI,SAASzc,EAAQhB,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAAwBqQ,EAAIqK,EAAUC,GACrD,IAAIxC,EAAM,IACN0C,EAAOxK,EAAGyK,MACVC,EAAW1K,EAAG2K,UACd3U,EAAUgK,EAAGjO,OAAOsY,GACpBO,EAAc5K,EAAGlD,WAAakD,EAAGjH,KAAKsO,YAAYgD,GAClDQ,EAAiB7K,EAAGjD,cAAgB,IAAMsN,EAC1CS,GAAiB9K,EAAGzC,KAAKwN,UACzBtB,EAAQ,QAAUiB,GAAY,IAC9B4C,EAAS,QAAU9C,EACnB+C,EAAQ,SAAW/C,EACnBoC,EAAM5M,EAAGjH,KAAKC,KAAKgH,GACnB6M,EAAiB,GAEjBC,EAAa,WADjBF,EAAInC,MAKJ,GAHqBzU,EAAQwX,MAAM,SAASN,GAC1C,OAAOlN,EAAGjH,KAAK8P,eAAeqE,EAAMlN,EAAG9C,MAAM4H,OAE3B,CAClB,IAAIiI,EAAiBH,EAAI3U,OACzB6P,GAAO,QAAU,EAAU,kBAAoB,EAAW,cAC1D,IAAI2F,EAAgBzN,EAAGqM,cACvBrM,EAAGqM,cAAgBO,EAAIP,eAAgB,EACvC,IAAIY,EAAOjX,EACX,GAAIiX,EAGF,IAFA,IAAIC,EAAMC,GAAM,EACdC,EAAKH,EAAK/b,OAAS,EACdic,EAAKC,GACVF,EAAOD,EAAKE,GAAM,GAClBP,EAAI7a,OAASmb,EACbN,EAAI9P,WAAa8N,EAAc,IAAMuC,EAAK,IAC1CP,EAAI7P,cAAgB8N,EAAiB,IAAMsC,EAC3CrF,GAAO,KAAQ9H,EAAG7L,SAASyY,GAAQ,IACnCA,EAAI3U,OAAS8U,EACbjF,GAAO,IAAM,EAAW,MAAQ,EAAW,OAAS,EAAe,UAAY,EAAW,OAC1F+E,GAAkB,IAGtB7M,EAAGqM,cAAgBO,EAAIP,cAAgBoB,EACvC3F,GAAO,IAAM,EAAmB,SAAW,EAAW,sBAC9B,IAApB9H,EAAGgM,cACLlE,GAAO,sDAAyE9H,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,kBACtI,IAArB7K,EAAGzC,KAAK0O,WACVnE,GAAO,oDAEL9H,EAAGzC,KAAK2O,UACVpE,GAAO,6BAA+B,EAAgB,mCAAsC9H,EAAa,WAAI,YAAc,EAAU,KAEvI8H,GAAO,OAEPA,GAAO,OAETA,GAAO,gFACF9H,EAAGqM,eAAiBvB,IAErBhD,GADE9H,EAAGmI,MACE,wCAEA,8CAGXL,GAAO,uBAAyB,EAAU,iCAAmC,EAAU,sBAAwB,EAAU,4BACrH9H,EAAGzC,KAAKwN,YACVjD,GAAO,OAETA,EAAM9H,EAAGjH,KAAK8O,YAAYC,QAEtBgD,IACFhD,GAAO,iBAGX,OAAOA,QAGH4F,IAAI,SAAS9c,EAAQhB,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAAwBqQ,EAAIqK,EAAUC,GACrD,IAAIxC,EAAM,IACN0C,EAAOxK,EAAGyK,MACVC,EAAW1K,EAAG2K,UACd3U,EAAUgK,EAAGjO,OAAOsY,GACpBO,EAAc5K,EAAGlD,WAAakD,EAAGjH,KAAKsO,YAAYgD,GAClDQ,EAAiB7K,EAAGjD,cAAgB,IAAMsN,EAC1CS,GAAiB9K,EAAGzC,KAAKwN,UACzBtB,EAAQ,QAAUiB,GAAY,IAC9B4C,EAAS,QAAU9C,EACnBQ,EAAUhL,EAAGzC,KAAKkM,OAASzT,GAAWA,EAAQyT,MAE9CuB,IACFlD,GAAO,cAAgB,EAAS,MAAS9H,EAAGjH,KAAKyQ,QAAQxT,EAAQyT,MAAOiB,EAAU1K,EAAGiL,aAAgB,MAKlGD,IACHlD,GAAO,cAAgB,EAAS,qBAAuB,EAAgB,KAEzEA,GAAO,OAAS,EAAW,YAAc,EAAU,WAAa,EAAS,WAAa,EAAW,SACjG,IAAIiE,EAAaA,MACjBA,EAAWzG,KAAKwC,GAChBA,EAAM,IACkB,IAApB9H,EAAGgM,cACLlE,GAAO,sDAAyE9H,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,kBACtI,IAArB7K,EAAGzC,KAAK0O,WACVnE,GAAO,8CAEL9H,EAAGzC,KAAK2O,UACVpE,GAAO,6BAA+B,EAAgB,mCAAsC9H,EAAa,WAAI,YAAc,EAAU,KAEvI8H,GAAO,OAEPA,GAAO,OAET,IAAIqE,EAAQrE,EAeZ,OAdAA,EAAMiE,EAAWK,MAGbtE,IAFC9H,EAAGqM,eAAiBvB,EACnB9K,EAAGmI,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCL,GAAO,KACHgD,IACFhD,GAAO,YAEFA,QAGH6F,IAAI,SAAS/c,EAAQhB,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAA2BqQ,EAAIqK,EAAUC,GACxD,IAAIxC,EAAM,IACN0C,EAAOxK,EAAGyK,MACVC,EAAW1K,EAAG2K,UACd3U,EAAUgK,EAAGjO,OAAOsY,GACpBO,EAAc5K,EAAGlD,WAAakD,EAAGjH,KAAKsO,YAAYgD,GAClDQ,EAAiB7K,EAAGjD,cAAgB,IAAMsN,EAC1CS,GAAiB9K,EAAGzC,KAAKwN,UACzBtB,EAAQ,QAAUiB,GAAY,IAC9B4C,EAAS,QAAU9C,EACnB+C,EAAQ,SAAW/C,EACnBoC,EAAM5M,EAAGjH,KAAKC,KAAKgH,GAGnB8M,EAAa,WADjBF,EAAInC,MAEAmD,EAAO,IAAMpD,EACfqD,EAAWjB,EAAIjC,UAAY3K,EAAG2K,UAAY,EAC1CmD,EAAY,OAASD,EACrBd,EAAiB/M,EAAG/H,OACpB8V,EAAkB/N,EAAGjH,KAAK8P,eAAe7S,EAASgK,EAAG9C,MAAM4H,KAE7D,GADAgD,GAAO,OAAS,EAAU,iBAAmB,EAAW,IACpDiG,EAAiB,CACnB,IAAIN,EAAgBzN,EAAGqM,cACvBrM,EAAGqM,cAAgBO,EAAIP,eAAgB,EACvCO,EAAI7a,OAASiE,EACb4W,EAAI9P,WAAa8N,EACjBgC,EAAI7P,cAAgB8N,EACpB/C,GAAO,QAAU,EAAe,sBAAwB,EAAS,SAAW,EAAS,MAAQ,EAAU,YAAc,EAAS,SAC9H8E,EAAI5P,UAAYgD,EAAGjH,KAAKiQ,YAAYhJ,EAAGhD,UAAW4Q,EAAM5N,EAAGzC,KAAK2L,cAAc,GAC9E,IAAI8E,EAAYvE,EAAQ,IAAMmE,EAAO,IACrChB,EAAI3B,YAAY4C,GAAYD,EAC5B,IAAIK,EAAQjO,EAAG7L,SAASyY,GACxBA,EAAI3U,OAAS8U,EACT/M,EAAGjH,KAAK0O,cAAcwG,EAAOH,GAAa,EAC5ChG,GAAO,IAAO9H,EAAGjH,KAAK4O,WAAWsG,EAAOH,EAAWE,GAAc,IAEjElG,GAAO,QAAU,EAAc,MAAQ,EAAc,KAAO,EAAU,IAExEA,GAAO,QAAU,EAAe,eAChC9H,EAAGqM,cAAgBO,EAAIP,cAAgBoB,EACvC3F,GAAO,UAAoC,EAAe,WAE1DA,GAAO,QAAU,EAAU,kBAE7B,IAAIiE,EAAaA,MACjBA,EAAWzG,KAAKwC,GAChBA,EAAM,IACkB,IAApB9H,EAAGgM,cACLlE,GAAO,yDAA4E9H,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,kBACzI,IAArB7K,EAAGzC,KAAK0O,WACVnE,GAAO,8CAEL9H,EAAGzC,KAAK2O,UACVpE,GAAO,6BAA+B,EAAgB,mCAAsC9H,EAAa,WAAI,YAAc,EAAU,KAEvI8H,GAAO,OAEPA,GAAO,OAET,IAAIqE,EAAQrE,EAmBZ,OAlBAA,EAAMiE,EAAWK,MAGbtE,IAFC9H,EAAGqM,eAAiBvB,EACnB9K,EAAGmI,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCL,GAAO,aACHiG,IACFjG,GAAO,cAAgB,EAAU,iCAAmC,EAAU,sBAAwB,EAAU,6BAE9G9H,EAAGzC,KAAKwN,YACVjD,GAAO,OAETA,EAAM9H,EAAGjH,KAAK8O,YAAYC,SAItBoG,IAAI,SAAStd,EAAQhB,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAAyBqQ,EAAIqK,EAAUC,GACtD,IAOIkB,EAKFjB,EAZEzC,EAAM,IACN0C,EAAOxK,EAAGyK,MACVC,EAAW1K,EAAG2K,UACd3U,EAAUgK,EAAGjO,OAAOsY,GACpBO,EAAc5K,EAAGlD,WAAakD,EAAGjH,KAAKsO,YAAYgD,GAClDQ,EAAiB7K,EAAGjD,cAAgB,IAAMsN,EAC1CS,GAAiB9K,EAAGzC,KAAKwN,UAEzBtB,EAAQ,QAAUiB,GAAY,IAC9B4C,EAAS,QAAU9C,EACnB+C,EAAQ,SAAW/C,EACnBQ,EAAUhL,EAAGzC,KAAKkM,OAASzT,GAAWA,EAAQyT,MAE9CuB,GACFlD,GAAO,cAAgB,EAAS,MAAS9H,EAAGjH,KAAKyQ,QAAQxT,EAAQyT,MAAOiB,EAAU1K,EAAGiL,aAAgB,KACrGV,EAAe,SAAWC,GAE1BD,EAAevU,EAEjB,IAIImY,EAAUC,EAASC,EAAQC,EAAeC,EAJ1CC,EAAQte,KACVue,EAAc,aAAejE,EAC7BkE,EAAQF,EAAMtO,WACd2M,EAAiB,GAEnB,GAAI7B,GAAW0D,EAAMjF,MAAO,CAC1B8E,EAAgB,kBAAoB/D,EACpC,IAAImE,EAAkBD,EAAMzO,eAC5B6H,GAAO,QAAU,EAAgB,oBAAuB,EAAa,sBAAyB,EAAkB,MAAQ,EAAgB,iBACnI,CAEL,KADAwG,EAAgBtO,EAAG1C,cAAckR,EAAOxY,EAASgK,EAAGjO,OAAQiO,IACxC,OACpBuK,EAAe,kBAAoBK,EACnC2D,EAAgBD,EAAcvd,KAC9Bod,EAAWO,EAAM5S,QACjBsS,EAAUM,EAAMpP,OAChB+O,EAASK,EAAMtO,MAEjB,IAAIwO,EAAYL,EAAgB,UAC9BpB,EAAK,IAAM3C,EACXqE,EAAW,UAAYrE,EACvBsE,EAAgBJ,EAAMvG,MACxB,GAAI2G,IAAkB9O,EAAGmI,MAAO,MAAM,IAAIrX,MAAM,gCAahD,GAZMsd,GAAWC,IACfvG,GAAY,EAAc,YAE5BA,GAAO,OAAS,EAAU,iBAAmB,EAAW,IACpDkD,GAAW0D,EAAMjF,QACnBoD,GAAkB,IAClB/E,GAAO,QAAU,EAAiB,qBAAuB,EAAW,qBAChE6G,IACF9B,GAAkB,IAClB/E,GAAO,IAAM,EAAW,MAAQ,EAAgB,mBAAqB,EAAiB,UAAY,EAAW,SAG7GsG,EAEAtG,GADE4G,EAAMK,WACD,IAAOT,EAAsB,SAAI,IAEjC,IAAM,EAAW,MAASA,EAAsB,SAAI,UAExD,GAAID,EAAQ,CACjB,IAAIzB,EAAM5M,EAAGjH,KAAKC,KAAKgH,GACnB6M,EAAiB,GAEjBC,EAAa,WADjBF,EAAInC,MAEJmC,EAAI7a,OAASuc,EAAcna,SAC3ByY,EAAI9P,WAAa,GACjB,IAAI2Q,EAAgBzN,EAAGqM,cACvBrM,EAAGqM,cAAgBO,EAAIP,eAAgB,EACvC,IAAI4B,EAAQjO,EAAG7L,SAASyY,GAAKvJ,QAAQ,oBAAqBkL,GAC1DvO,EAAGqM,cAAgBO,EAAIP,cAAgBoB,EACvC3F,GAAO,IAAM,MACR,EACDiE,EAAaA,OACNzG,KAAKwC,GAChBA,EAAM,GACNA,GAAO,KAAO,EAAkB,UAE9BA,GADE9H,EAAGzC,KAAKyR,YACH,OAEA,OAGPlH,GADEqG,IAA6B,IAAjBO,EAAM3c,OACb,MAAQ,EAAU,IAElB,MAAQ,EAAiB,MAAQ,EAAU,qBAAwBiO,EAAa,WAAI,IAE7F8H,GAAO,sBACa,MAAhB9H,EAAGhD,YACL8K,GAAO,MAAS9H,EAAY,WAE9B,IAAIiP,EAAcvE,EAAW,QAAWA,EAAW,GAAM,IAAM,aAC7DwE,EAAsBxE,EAAW1K,EAAGiL,YAAYP,GAAY,qBAE1DyE,EADJrH,GAAO,MAAQ,EAAgB,MAAQ,EAAwB,kBAE/DA,EAAMiE,EAAWK,OACI,IAAjBsC,EAAM7W,QACRiQ,GAAO,IAAM,EAAW,MACpBgH,IACFhH,GAAO,GAAM9H,EAAa,YAE5B8H,GAAY,EAAyB,MAInCA,GAFEgH,EAEK,SADPF,EAAY,eAAiBpE,GACE,kBAAoB,EAAW,MAASxK,EAAa,WAAI,EAAyB,mBAAqB,EAAW,+CAAiD,EAAc,gCAEzM,IAAM,EAAc,YAAc,EAAW,MAAQ,EAAyB,KAQ3F,GAJI0O,EAAMU,YACRtH,GAAO,QAAU,EAAgB,KAAO,EAAU,MAAQ,EAAgB,IAAM,EAAwB,MAE1GA,GAAO,GAAK,EACR4G,EAAMW,MACJvE,IACFhD,GAAO,qBAEJ,CACLA,GAAO,cACazQ,IAAhBqX,EAAMW,OACRvH,GAAO,KAELA,GADEuG,EACK,GAAK,EAEL,GAAK,GAGdvG,GAAO,KAAQ4G,EAAMW,MAAS,IAEhCvH,GAAO,OACP0D,EAAgBgD,EAAMnO,QACtB,IAAI0L,EAAaA,MACjBA,EAAWzG,KAAKwC,GAChBA,EAAM,IACFiE,EAAaA,OACNzG,KAAKwC,GAChBA,EAAM,IACkB,IAApB9H,EAAGgM,cACLlE,GAAO,iBAAoB0D,GAAiB,UAAY,oCAA0CxL,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,0BAA8B2D,EAAa,QAAI,QACvM,IAArBxO,EAAGzC,KAAK0O,WACVnE,GAAO,8BAAiC0G,EAAa,QAAI,2BAEvDxO,EAAGzC,KAAK2O,UACVpE,GAAO,6BAA+B,EAAgB,mCAAsC9H,EAAa,WAAI,YAAc,EAAU,KAEvI8H,GAAO,OAEPA,GAAO,OAET,IAAIqE,EAAQrE,EACZA,EAAMiE,EAAWK,MAUjB,IAAIkD,EAPAxH,IAFC9H,EAAGqM,eAAiBvB,EACnB9K,EAAGmI,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAGnCL,EAAMiE,EAAWK,MACbgC,EACEM,EAAM7W,OACY,QAAhB6W,EAAM7W,SACRiQ,GAAO,cAAgB,EAAO,IAAM,EAAU,KAAO,EAAO,YAAc,EAAO,aAAe,EAAa,cAAgB,EAAO,UAAY,EAAa,4BAA8B,EAAa,kCAAuC9H,EAAY,UAAI,SAAW,EAAa,gCAAkC,EAAa,kBAAoB,EAAmB,QACzWA,EAAGzC,KAAK2O,UACVpE,GAAO,IAAM,EAAa,aAAe,EAAiB,KAAO,EAAa,WAAa,EAAU,MAEvGA,GAAO,QAGY,IAAjB4G,EAAM7W,OACRiQ,GAAO,IAAM,EAAoB,KAEjCA,GAAO,QAAU,EAAU,iBAAmB,EAAoB,uBAAyB,EAAO,IAAM,EAAU,KAAO,EAAO,YAAc,EAAO,aAAe,EAAa,cAAgB,EAAO,UAAY,EAAa,4BAA8B,EAAa,kCAAuC9H,EAAY,UAAI,SAAW,EAAa,gCAAkC,EAAa,kBAAoB,EAAmB,QAC7aA,EAAGzC,KAAK2O,UACVpE,GAAO,IAAM,EAAa,aAAe,EAAiB,KAAO,EAAa,WAAa,EAAU,MAEvGA,GAAO,SAGFuG,GACTvG,GAAO,mBACiB,IAApB9H,EAAGgM,cACLlE,GAAO,iBAAoB0D,GAAiB,UAAY,oCAA0CxL,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,0BAA8B2D,EAAa,QAAI,QACvM,IAArBxO,EAAGzC,KAAK0O,WACVnE,GAAO,8BAAiC0G,EAAa,QAAI,2BAEvDxO,EAAGzC,KAAK2O,UACVpE,GAAO,6BAA+B,EAAgB,mCAAsC9H,EAAa,WAAI,YAAc,EAAU,KAEvI8H,GAAO,OAEPA,GAAO,OAETA,GAAO,gFACF9H,EAAGqM,eAAiBvB,IAErBhD,GADE9H,EAAGmI,MACE,wCAEA,gDAIU,IAAjBuG,EAAM7W,OACRiQ,GAAO,IAAM,EAAoB,KAEjCA,GAAO,sBAAwB,EAAc,wCAA0C,EAAc,mCAAqC,EAAc,yCAA2C,EAAO,IAAM,EAAU,KAAO,EAAO,YAAc,EAAO,aAAe,EAAa,cAAgB,EAAO,UAAY,EAAa,4BAA8B,EAAa,kCAAuC9H,EAAY,UAAI,MAAQ,EAAa,kBAAoB,EAAmB,OACneA,EAAGzC,KAAK2O,UACVpE,GAAO,IAAM,EAAa,aAAe,EAAiB,KAAO,EAAa,WAAa,EAAU,MAEvGA,GAAO,eAAiB,EAAoB,OAGhDA,GAAO,MACHgD,IACFhD,GAAO,YAGX,OAAOA,QAGHyH,IAAI,SAAS3e,EAAQhB,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAA+BqQ,EAAIqK,EAAUC,GAC5D,IAAIxC,EAAM,IACN0C,EAAOxK,EAAGyK,MACVC,EAAW1K,EAAG2K,UACd3U,EAAUgK,EAAGjO,OAAOsY,GACpBO,EAAc5K,EAAGlD,WAAakD,EAAGjH,KAAKsO,YAAYgD,GAClDQ,EAAiB7K,EAAGjD,cAAgB,IAAMsN,EAC1CS,GAAiB9K,EAAGzC,KAAKwN,UACzBtB,EAAQ,QAAUiB,GAAY,IAC9B6C,EAAQ,SAAW/C,EACnBoC,EAAM5M,EAAGjH,KAAKC,KAAKgH,GACnB6M,EAAiB,GAEjBC,EAAa,WADjBF,EAAInC,MAEA+E,KACFC,KACAC,EAAiB1P,EAAGzC,KAAKoS,cAC3B,IAAKC,KAAa5Z,EAAS,CACzB,IAAIkX,EAAOlX,EAAQ4Z,GACfC,EAAQnN,MAAMC,QAAQuK,GAAQuC,EAAgBD,EAClDK,EAAMD,GAAa1C,EAErBpF,GAAO,OAAS,EAAU,aAC1B,IAAIgI,EAAoB9P,EAAGhD,UAC3B8K,GAAO,cAAgB,EAAS,IAChC,IAAK,IAAI8H,KAAaH,EAEpB,IADAI,EAAQJ,EAAcG,IACZ1e,OAAQ,CAKhB,GAJA4W,GAAO,SAAW,EAAW9H,EAAGjH,KAAKsO,YAAYuI,GAAc,kBAC3DF,IACF5H,GAAO,4CAA8C,EAAU,MAAU9H,EAAGjH,KAAKwO,aAAaqI,GAAc,OAE1G9E,EAAe,CACjBhD,GAAO,SACP,IAAImF,EAAO4C,EACX,GAAI5C,EAGF,IAFA,IAAkBE,GAAM,EACtBC,EAAKH,EAAK/b,OAAS,EACdic,EAAKC,GACV2C,EAAe9C,EAAKE,GAAM,GACtBA,IACFrF,GAAO,QAITA,GAAO,SADLkI,EAAWvG,GADTwG,EAAQjQ,EAAGjH,KAAKsO,YAAY0I,KAEF,kBAC1BL,IACF5H,GAAO,8CAAgD,EAAU,MAAU9H,EAAGjH,KAAKwO,aAAawI,GAAiB,OAEnHjI,GAAO,gBAAkB,EAAS,MAAS9H,EAAGjH,KAAK2G,eAAeM,EAAGzC,KAAK2L,aAAe6G,EAAeE,GAAU,OAGtHnI,GAAO,SACP,IAAIoI,EAAgB,UAAY1F,EAC9B2F,EAAmB,OAAUD,EAAgB,OAC3ClQ,EAAGzC,KAAK6S,yBACVpQ,EAAGhD,UAAYgD,EAAGzC,KAAK2L,aAAelJ,EAAGjH,KAAKiQ,YAAY8G,EAAmBI,GAAe,GAAQJ,EAAoB,MAAQI,GAElI,IAAInE,EAAaA,MACjBA,EAAWzG,KAAKwC,GAChBA,EAAM,IACkB,IAApB9H,EAAGgM,cACLlE,GAAO,6DAAgF9H,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,2BAA+B7K,EAAGjH,KAAKwO,aAAaqI,GAAc,wBAA4B,EAAqB,iBAAqBC,EAAY,OAAI,YAAgB7P,EAAGjH,KAAKwO,aAA6B,GAAhBsI,EAAM3e,OAAc2e,EAAM,GAAKA,EAAMQ,KAAK,OAAU,QAC9X,IAArBrQ,EAAGzC,KAAK0O,WACVnE,GAAO,4BAELA,GADkB,GAAhB+H,EAAM3e,OACD,YAAe8O,EAAGjH,KAAKwO,aAAasI,EAAM,IAE1C,cAAiB7P,EAAGjH,KAAKwO,aAAasI,EAAMQ,KAAK,OAE1DvI,GAAO,kBAAqB9H,EAAGjH,KAAKwO,aAAaqI,GAAc,iBAE7D5P,EAAGzC,KAAK2O,UACVpE,GAAO,6BAA+B,EAAgB,mCAAsC9H,EAAa,WAAI,YAAc,EAAU,KAEvI8H,GAAO,OAEPA,GAAO,OAET,IAAIqE,EAAQrE,EACZA,EAAMiE,EAAWK,MAGbtE,IAFC9H,EAAGqM,eAAiBvB,EACnB9K,EAAGmI,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,mFAE9B,CACLL,GAAO,QACP,IAAIwI,EAAOT,EACX,GAAIS,EAGF,IAFA,IAAIP,EAAcQ,GAAM,EACtBC,EAAKF,EAAKpf,OAAS,EACdqf,EAAKC,GAAI,CACdT,EAAeO,EAAKC,GAAM,GAC1B,IAAIN,EAAQjQ,EAAGjH,KAAKsO,YAAY0I,GAC9BI,EAAmBnQ,EAAGjH,KAAKwO,aAAawI,GACxCC,EAAWvG,EAAQwG,EACjBjQ,EAAGzC,KAAK6S,yBACVpQ,EAAGhD,UAAYgD,EAAGjH,KAAKsQ,QAAQyG,EAAmBC,EAAc/P,EAAGzC,KAAK2L,eAE1EpB,GAAO,SAAW,EAAa,kBAC3B4H,IACF5H,GAAO,8CAAgD,EAAU,MAAU9H,EAAGjH,KAAKwO,aAAawI,GAAiB,OAEnHjI,GAAO,qBACiB,IAApB9H,EAAGgM,cACLlE,GAAO,6DAAgF9H,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,2BAA+B7K,EAAGjH,KAAKwO,aAAaqI,GAAc,wBAA4B,EAAqB,iBAAqBC,EAAY,OAAI,YAAgB7P,EAAGjH,KAAKwO,aAA6B,GAAhBsI,EAAM3e,OAAc2e,EAAM,GAAKA,EAAMQ,KAAK,OAAU,QAC9X,IAArBrQ,EAAGzC,KAAK0O,WACVnE,GAAO,4BAELA,GADkB,GAAhB+H,EAAM3e,OACD,YAAe8O,EAAGjH,KAAKwO,aAAasI,EAAM,IAE1C,cAAiB7P,EAAGjH,KAAKwO,aAAasI,EAAMQ,KAAK,OAE1DvI,GAAO,kBAAqB9H,EAAGjH,KAAKwO,aAAaqI,GAAc,iBAE7D5P,EAAGzC,KAAK2O,UACVpE,GAAO,6BAA+B,EAAgB,mCAAsC9H,EAAa,WAAI,YAAc,EAAU,KAEvI8H,GAAO,OAEPA,GAAO,OAETA,GAAO,kFAIbA,GAAO,QACHgD,IACF+B,GAAkB,IAClB/E,GAAO,YAIb9H,EAAGhD,UAAY8S,EACf,IAAI/C,EAAiBH,EAAI3U,OACzB,IAAK,IAAI2X,KAAaJ,EAAa,CAC7BtC,EAAOsC,EAAYI,GACnB5P,EAAGjH,KAAK8P,eAAeqE,EAAMlN,EAAG9C,MAAM4H,OACxCgD,GAAO,IAAM,EAAe,iBAAmB,EAAW9H,EAAGjH,KAAKsO,YAAYuI,GAAc,kBACxFF,IACF5H,GAAO,4CAA8C,EAAU,MAAU9H,EAAGjH,KAAKwO,aAAaqI,GAAc,OAE9G9H,GAAO,OACP8E,EAAI7a,OAASmb,EACbN,EAAI9P,WAAa8N,EAAc5K,EAAGjH,KAAKsO,YAAYuI,GACnDhD,EAAI7P,cAAgB8N,EAAiB,IAAM7K,EAAGjH,KAAKoL,eAAeyL,GAClE9H,GAAO,KAAQ9H,EAAG7L,SAASyY,GAAQ,IACnCA,EAAI3U,OAAS8U,EACbjF,GAAO,OACHgD,IACFhD,GAAO,QAAU,EAAe,OAChC+E,GAAkB,MAQxB,OAJI/B,IACFhD,GAAO,MAAQ,EAAmB,QAAU,EAAU,iBAExDA,EAAM9H,EAAGjH,KAAK8O,YAAYC,SAItB2I,IAAI,SAAS7f,EAAQhB,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAAuBqQ,EAAIqK,EAAUC,GACpD,IAAIxC,EAAM,IACN0C,EAAOxK,EAAGyK,MACVC,EAAW1K,EAAG2K,UACd3U,EAAUgK,EAAGjO,OAAOsY,GACpBO,EAAc5K,EAAGlD,WAAakD,EAAGjH,KAAKsO,YAAYgD,GAClDQ,EAAiB7K,EAAGjD,cAAgB,IAAMsN,EAC1CS,GAAiB9K,EAAGzC,KAAKwN,UACzBtB,EAAQ,QAAUiB,GAAY,IAC9B4C,EAAS,QAAU9C,EACnBQ,EAAUhL,EAAGzC,KAAKkM,OAASzT,GAAWA,EAAQyT,MAE9CuB,IACFlD,GAAO,cAAgB,EAAS,MAAS9H,EAAGjH,KAAKyQ,QAAQxT,EAAQyT,MAAOiB,EAAU1K,EAAGiL,aAAgB,MAKvG,IAAIkC,EAAK,IAAM3C,EACbkG,EAAW,SAAWlG,EACnBQ,IACHlD,GAAO,QAAU,EAAa,qBAAuB,EAAgB,KAEvEA,GAAO,OAAS,EAAW,IACvBkD,IACFlD,GAAO,cAAgB,EAAS,mBAAqB,EAAW,0CAA4C,EAAS,MAAQ,EAAW,oBAE1IA,GAAY,EAAW,qBAAuB,EAAO,OAAS,EAAO,IAAM,EAAa,YAAc,EAAO,iBAAmB,EAAU,KAAO,EAAa,IAAM,EAAO,SAAW,EAAW,oBAC7LkD,IACFlD,GAAO,SAETA,GAAO,SAAW,EAAW,SAC7B,IAAIiE,EAAaA,MACjBA,EAAWzG,KAAKwC,GAChBA,EAAM,IACkB,IAApB9H,EAAGgM,cACLlE,GAAO,qDAAwE9H,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,qCAAuC,EAAS,OACrL,IAArB7K,EAAGzC,KAAK0O,WACVnE,GAAO,+DAEL9H,EAAGzC,KAAK2O,UACVpE,GAAO,6BAA+B,EAAgB,mCAAsC9H,EAAa,WAAI,YAAc,EAAU,KAEvI8H,GAAO,OAEPA,GAAO,OAET,IAAIqE,EAAQrE,EAeZ,OAdAA,EAAMiE,EAAWK,MAGbtE,IAFC9H,EAAGqM,eAAiBvB,EACnB9K,EAAGmI,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCL,GAAO,KACHgD,IACFhD,GAAO,YAEFA,QAGH6I,IAAI,SAAS/f,EAAQhB,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAAyBqQ,EAAIqK,EAAUC,GACtD,IAAIxC,EAAM,IACN0C,EAAOxK,EAAGyK,MACVC,EAAW1K,EAAG2K,UACd3U,EAAUgK,EAAGjO,OAAOsY,GACpBO,EAAc5K,EAAGlD,WAAakD,EAAGjH,KAAKsO,YAAYgD,GAClDQ,EAAiB7K,EAAGjD,cAAgB,IAAMsN,EAC1CS,GAAiB9K,EAAGzC,KAAKwN,UACzBtB,EAAQ,QAAUiB,GAAY,IAClC,IAAuB,IAAnB1K,EAAGzC,KAAKtK,OAIV,OAHI6X,IACFhD,GAAO,iBAEFA,EAET,IACEyC,EADES,EAAUhL,EAAGzC,KAAKkM,OAASzT,GAAWA,EAAQyT,MAE9CuB,GACFlD,GAAO,cAAgB,EAAS,MAAS9H,EAAGjH,KAAKyQ,QAAQxT,EAAQyT,MAAOiB,EAAU1K,EAAGiL,aAAgB,KACrGV,EAAe,SAAWC,GAE1BD,EAAevU,EAEjB,IAAI4a,EAAkB5Q,EAAGzC,KAAKsT,eAC5BC,EAAgBpO,MAAMC,QAAQiO,GAChC,GAAI5F,EAIFlD,GAAO,SAHHiJ,EAAU,SAAWvG,GAGI,cAAgB,EAAiB,WAF5DwG,EAAY,WAAaxG,GAE6D,aAAe,EAAY,qBAAyB,EAAY,0BAA4B,EAAY,mBAD9LyG,EAAc,aAAezG,GACqM,MAAQ,EAAc,OAAS,EAAY,0BAA8B,EAAc,OACvTxK,EAAGmI,QACLL,GAAO,aAAe,EAAS,MAAQ,EAAY,YAErDA,GAAO,IAAM,EAAY,MAAQ,EAAY,sBACzCkD,IACFlD,GAAO,KAAO,EAAiB,4BAA8B,EAAiB,qBAEhFA,GAAO,KACgB,UAAnB8I,IACF9I,GAAO,KAAO,EAAiB,QAAU,EAAY,IACjDgJ,IACFhJ,GAAO,yCAA2C,EAAiB,YAErEA,GAAO,SAETA,GAAO,KAAO,EAAY,OAAS,EAAgB,QAAW,EAAc,iBAAoB,EAAY,oBAE1GA,GADE9H,EAAGmI,MACE,UAAY,EAAS,MAASnI,EAAa,WAAI,IAAM,EAAY,IAAM,EAAU,OAAS,EAAY,IAAM,EAAU,MAEtH,IAAM,EAAY,IAAM,EAAU,KAE3C8H,GAAO,MAAQ,EAAY,SAAW,EAAU,cAC3C,CACL,IAAIiJ,EAAU/Q,EAAGnH,QAAQ7C,GACzB,IAAK+a,EAAS,CACZ,GAAuB,UAAnBH,EAKF,OAJAtS,QAAQ4S,KAAK,mBAAqBlb,EAAU,gCAAkCgK,EAAGjD,cAAgB,KAC7F+N,IACFhD,GAAO,iBAEFA,EACF,GAAIgJ,GAAiBF,EAAgBO,QAAQnb,IAAY,EAI9D,OAHI8U,IACFhD,GAAO,iBAEFA,EAEP,MAAM,IAAIhX,MAAM,mBAAqBkF,EAAU,gCAAkCgK,EAAGjD,cAAgB,KAGxG,IAAIiU,EAA8B,iBAAXD,KAAyBA,aAAmBpW,SAAWoW,EAAQ5c,SAClF8c,EAAcD,GAAaD,EAAQrM,MAAQ,SAC/C,GAAIsM,EAAW,CACb,IAAItU,GAA2B,IAAlBqU,EAAQ5I,MACrB4I,EAAUA,EAAQ5c,SAEpB,GAAI8c,GAAe3G,EAIjB,OAHIQ,IACFhD,GAAO,iBAEFA,EAET,GAAIpL,EAAQ,CACV,IAAKsD,EAAGmI,MAAO,MAAM,IAAIrX,MAAM,+BAC3BsgB,EAAa,UAAYpR,EAAGjH,KAAKsO,YAAYrR,GAAW,YAC5D8R,GAAO,UAAa9H,EAAa,WAAI,IAAM,EAAe,IAAM,EAAU,aACrE,CACL8H,GAAO,UACP,IAAIsJ,EAAa,UAAYpR,EAAGjH,KAAKsO,YAAYrR,GAC7Cgb,IAAWI,GAAc,aAE3BtJ,GADoB,mBAAXiJ,EACF,IAAM,EAAe,IAAM,EAAU,KAErC,IAAM,EAAe,SAAW,EAAU,KAEnDjJ,GAAO,QAGX,IAAIiE,EAAaA,MACjBA,EAAWzG,KAAKwC,GAChBA,EAAM,IACkB,IAApB9H,EAAGgM,cACLlE,GAAO,uDAA0E9H,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,yBAE9J/C,GADEkD,EACK,GAAK,EAEL,GAAMhL,EAAGjH,KAAK2G,eAAe1J,GAEtC8R,GAAO,QACkB,IAArB9H,EAAGzC,KAAK0O,WACVnE,GAAO,sCAELA,GADEkD,EACK,OAAU,EAAiB,OAE3B,GAAMhL,EAAGjH,KAAKwO,aAAavR,GAEpC8R,GAAO,QAEL9H,EAAGzC,KAAK2O,UACVpE,GAAO,eAELA,GADEkD,EACK,kBAAoB,EAEpB,GAAMhL,EAAGjH,KAAK2G,eAAe1J,GAEtC8R,GAAO,2CAA8C9H,EAAa,WAAI,YAAc,EAAU,KAEhG8H,GAAO,OAEPA,GAAO,OAET,IAAIqE,EAAQrE,EAeZ,OAdAA,EAAMiE,EAAWK,MAGbtE,IAFC9H,EAAGqM,eAAiBvB,EACnB9K,EAAGmI,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCL,GAAO,MACHgD,IACFhD,GAAO,YAEFA,QAGHuJ,IAAI,SAASzgB,EAAQhB,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAAwBqQ,EAAIqK,EAAUC,GACrD,IAAIxC,EAAM,IACN0C,EAAOxK,EAAGyK,MACVC,EAAW1K,EAAG2K,UACd3U,EAAUgK,EAAGjO,OAAOsY,GACpBO,EAAc5K,EAAGlD,WAAakD,EAAGjH,KAAKsO,YAAYgD,GAClDQ,EAAiB7K,EAAGjD,cAAgB,IAAMsN,EAC1CS,GAAiB9K,EAAGzC,KAAKwN,UACzBtB,EAAQ,QAAUiB,GAAY,IAC9B4C,EAAS,QAAU9C,EACnB+C,EAAQ,SAAW/C,EACnBoC,EAAM5M,EAAGjH,KAAKC,KAAKgH,GACnB6M,EAAiB,GAEjBC,EAAa,WADjBF,EAAInC,MAEAmD,EAAO,IAAMpD,EACfqD,EAAWjB,EAAIjC,UAAY3K,EAAG2K,UAAY,EAC1CmD,EAAY,OAASD,EACrBd,EAAiB/M,EAAG/H,OAEtB,GADA6P,GAAO,OAAS,EAAU,iBAAmB,EAAW,IACpDpF,MAAMC,QAAQ3M,GAAU,CAC1B,IAAIsb,EAAmBtR,EAAGjO,OAAOwf,gBACjC,IAAyB,IAArBD,EAA4B,CAC9BxJ,GAAO,IAAM,EAAW,MAAQ,EAAU,cAAiB9R,EAAc,OAAI,KAC7E,IAAIwb,EAAqB3G,EACzBA,EAAiB7K,EAAGjD,cAAgB,mBACpC+K,GAAO,UAAY,EAAW,SAC9B,IAAIiE,EAAaA,MACjBA,EAAWzG,KAAKwC,GAChBA,EAAM,IACkB,IAApB9H,EAAGgM,cACLlE,GAAO,gEAAmF9H,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,uBAA0B7U,EAAc,OAAI,OAC5L,IAArBgK,EAAGzC,KAAK0O,WACVnE,GAAO,0CAA8C9R,EAAc,OAAI,YAErEgK,EAAGzC,KAAK2O,UACVpE,GAAO,mDAAsD9H,EAAa,WAAI,YAAc,EAAU,KAExG8H,GAAO,OAEPA,GAAO,OAET,IAAIqE,EAAQrE,EACZA,EAAMiE,EAAWK,MAGbtE,IAFC9H,EAAGqM,eAAiBvB,EACnB9K,EAAGmI,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCL,GAAO,MACP+C,EAAiB2G,EACb1G,IACF+B,GAAkB,IAClB/E,GAAO,YAGX,IAAImF,EAAOjX,EACX,GAAIiX,EAGF,IAFA,IAAIC,EAAMC,GAAM,EACdC,EAAKH,EAAK/b,OAAS,EACdic,EAAKC,GAEV,GADAF,EAAOD,EAAKE,GAAM,GACdnN,EAAGjH,KAAK8P,eAAeqE,EAAMlN,EAAG9C,MAAM4H,KAAM,CAC9CgD,GAAO,IAAM,EAAe,gBAAkB,EAAU,aAAe,EAAO,OAC1EkG,EAAYvE,EAAQ,IAAM0D,EAAK,IACnCP,EAAI7a,OAASmb,EACbN,EAAI9P,WAAa8N,EAAc,IAAMuC,EAAK,IAC1CP,EAAI7P,cAAgB8N,EAAiB,IAAMsC,EAC3CP,EAAI5P,UAAYgD,EAAGjH,KAAKiQ,YAAYhJ,EAAGhD,UAAWmQ,EAAInN,EAAGzC,KAAK2L,cAAc,GAC5E0D,EAAI3B,YAAY4C,GAAYV,EACxBc,EAAQjO,EAAG7L,SAASyY,GACxBA,EAAI3U,OAAS8U,EACT/M,EAAGjH,KAAK0O,cAAcwG,EAAOH,GAAa,EAC5ChG,GAAO,IAAO9H,EAAGjH,KAAK4O,WAAWsG,EAAOH,EAAWE,GAAc,IAEjElG,GAAO,QAAU,EAAc,MAAQ,EAAc,KAAO,EAAU,IAExEA,GAAO,OACHgD,IACFhD,GAAO,QAAU,EAAe,OAChC+E,GAAkB,KAK1B,GAA+B,iBAApByE,GAAgCtR,EAAGjH,KAAK8P,eAAeyI,EAAkBtR,EAAG9C,MAAM4H,KAAM,CACjG8H,EAAI7a,OAASuf,EACb1E,EAAI9P,WAAakD,EAAGlD,WAAa,mBACjC8P,EAAI7P,cAAgBiD,EAAGjD,cAAgB,mBACvC+K,GAAO,IAAM,EAAe,gBAAkB,EAAU,aAAgB9R,EAAc,OAAI,iBAAmB,EAAS,MAASA,EAAc,OAAI,KAAO,EAAS,MAAQ,EAAU,YAAc,EAAS,SAC1M4W,EAAI5P,UAAYgD,EAAGjH,KAAKiQ,YAAYhJ,EAAGhD,UAAW4Q,EAAM5N,EAAGzC,KAAK2L,cAAc,GAC1E8E,EAAYvE,EAAQ,IAAMmE,EAAO,IACrChB,EAAI3B,YAAY4C,GAAYD,EACxBK,EAAQjO,EAAG7L,SAASyY,GACxBA,EAAI3U,OAAS8U,EACT/M,EAAGjH,KAAK0O,cAAcwG,EAAOH,GAAa,EAC5ChG,GAAO,IAAO9H,EAAGjH,KAAK4O,WAAWsG,EAAOH,EAAWE,GAAc,IAEjElG,GAAO,QAAU,EAAc,MAAQ,EAAc,KAAO,EAAU,IAEpEgD,IACFhD,GAAO,SAAW,EAAe,aAEnCA,GAAO,SACHgD,IACFhD,GAAO,QAAU,EAAe,OAChC+E,GAAkB,WAGjB,GAAI7M,EAAGjH,KAAK8P,eAAe7S,EAASgK,EAAG9C,MAAM4H,KAAM,CACxD8H,EAAI7a,OAASiE,EACb4W,EAAI9P,WAAa8N,EACjBgC,EAAI7P,cAAgB8N,EACpB/C,GAAO,cAAgB,EAAS,SAAqB,EAAS,MAAQ,EAAU,YAAc,EAAS,SACvG8E,EAAI5P,UAAYgD,EAAGjH,KAAKiQ,YAAYhJ,EAAGhD,UAAW4Q,EAAM5N,EAAGzC,KAAK2L,cAAc,GAC9E,IAAI8E,EAAYvE,EAAQ,IAAMmE,EAAO,IACrChB,EAAI3B,YAAY4C,GAAYD,EAC5B,IAAIK,EAAQjO,EAAG7L,SAASyY,GACxBA,EAAI3U,OAAS8U,EACT/M,EAAGjH,KAAK0O,cAAcwG,EAAOH,GAAa,EAC5ChG,GAAO,IAAO9H,EAAGjH,KAAK4O,WAAWsG,EAAOH,EAAWE,GAAc,IAEjElG,GAAO,QAAU,EAAc,MAAQ,EAAc,KAAO,EAAU,IAEpEgD,IACFhD,GAAO,SAAW,EAAe,aAEnCA,GAAO,KAMT,OAJIgD,IACFhD,GAAO,IAAM,EAAmB,QAAU,EAAU,iBAEtDA,EAAM9H,EAAGjH,KAAK8O,YAAYC,SAItB2J,IAAI,SAAS7gB,EAAQhB,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAA6BqQ,EAAIqK,EAAUC,GAC1D,IASEC,EATEzC,EAAM,IACN0C,EAAOxK,EAAGyK,MACVC,EAAW1K,EAAG2K,UACd3U,EAAUgK,EAAGjO,OAAOsY,GACpBO,EAAc5K,EAAGlD,WAAakD,EAAGjH,KAAKsO,YAAYgD,GAClDQ,EAAiB7K,EAAGjD,cAAgB,IAAMsN,EAC1CS,GAAiB9K,EAAGzC,KAAKwN,UACzBtB,EAAQ,QAAUiB,GAAY,IAC9BM,EAAUhL,EAAGzC,KAAKkM,OAASzT,GAAWA,EAAQyT,MAE9CuB,GACFlD,GAAO,cAAgB,EAAS,MAAS9H,EAAGjH,KAAKyQ,QAAQxT,EAAQyT,MAAOiB,EAAU1K,EAAGiL,aAAgB,KACrGV,EAAe,SAAWC,GAE1BD,EAAevU,EAEjB8R,GAAO,eAAiB,EAAS,QAC7BkD,IACFlD,GAAO,IAAM,EAAiB,8BAAgC,EAAiB,oBAEjFA,GAAO,aAAe,EAAS,MAAQ,EAAU,MAAQ,EAAiB,KAExEA,GADE9H,EAAGzC,KAAKmU,oBACH,gCAAkC,EAAS,eAAiB,EAAS,UAAa1R,EAAGzC,KAAwB,oBAAI,IAEjH,YAAc,EAAS,yBAA2B,EAAS,KAEpEuK,GAAO,MACHkD,IACFlD,GAAO,SAETA,GAAO,UACP,IAAIiE,EAAaA,MACjBA,EAAWzG,KAAKwC,GAChBA,EAAM,IACkB,IAApB9H,EAAGgM,cACLlE,GAAO,2DAA8E9H,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,4BAA8B,EAAiB,OAC1L,IAArB7K,EAAGzC,KAAK0O,WACVnE,GAAO,sCAELA,GADEkD,EACK,OAAU,EAEL,EAAiB,KAG7BhL,EAAGzC,KAAK2O,UACVpE,GAAO,eAELA,GADEkD,EACK,kBAAoB,EAEpB,GAAK,EAEdlD,GAAO,2CAA8C9H,EAAa,WAAI,YAAc,EAAU,KAEhG8H,GAAO,OAEPA,GAAO,OAET,IAAIqE,EAAQrE,EAeZ,OAdAA,EAAMiE,EAAWK,MAGbtE,IAFC9H,EAAGqM,eAAiBvB,EACnB9K,EAAGmI,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCL,GAAO,KACHgD,IACFhD,GAAO,YAEFA,QAGH6J,IAAI,SAAS/gB,EAAQhB,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAAsBqQ,EAAIqK,EAAUC,GACnD,IAAIxC,EAAM,IACN0C,EAAOxK,EAAGyK,MACVC,EAAW1K,EAAG2K,UACd3U,EAAUgK,EAAGjO,OAAOsY,GACpBO,EAAc5K,EAAGlD,WAAakD,EAAGjH,KAAKsO,YAAYgD,GAClDQ,EAAiB7K,EAAGjD,cAAgB,IAAMsN,EAC1CS,GAAiB9K,EAAGzC,KAAKwN,UACzBtB,EAAQ,QAAUiB,GAAY,IAC9B6C,EAAQ,SAAW/C,EACnBoC,EAAM5M,EAAGjH,KAAKC,KAAKgH,GAEnB8M,EAAa,WADjBF,EAAInC,MAEJ,GAAIzK,EAAGjH,KAAK8P,eAAe7S,EAASgK,EAAG9C,MAAM4H,KAAM,CACjD8H,EAAI7a,OAASiE,EACb4W,EAAI9P,WAAa8N,EACjBgC,EAAI7P,cAAgB8N,EACpB/C,GAAO,QAAU,EAAU,eAC3B,IAAI2F,EAAgBzN,EAAGqM,cACvBrM,EAAGqM,cAAgBO,EAAIP,eAAgB,EACvCO,EAAIZ,cAAe,EACnB,IAAI4F,EACAhF,EAAIrP,KAAKwN,YACX6G,EAAmBhF,EAAIrP,KAAKwN,UAC5B6B,EAAIrP,KAAKwN,WAAY,GAEvBjD,GAAO,IAAO9H,EAAG7L,SAASyY,GAAQ,IAClCA,EAAIZ,cAAe,EACf4F,IAAkBhF,EAAIrP,KAAKwN,UAAY6G,GAC3C5R,EAAGqM,cAAgBO,EAAIP,cAAgBoB,EACvC3F,GAAO,QAAU,EAAe,SAChC,IAAIiE,EAAaA,MACjBA,EAAWzG,KAAKwC,GAChBA,EAAM,IACkB,IAApB9H,EAAGgM,cACLlE,GAAO,oDAAuE9H,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,kBACpI,IAArB7K,EAAGzC,KAAK0O,WACVnE,GAAO,sCAEL9H,EAAGzC,KAAK2O,UACVpE,GAAO,6BAA+B,EAAgB,mCAAsC9H,EAAa,WAAI,YAAc,EAAU,KAEvI8H,GAAO,OAEPA,GAAO,OAET,IAAIqE,EAAQrE,EACZA,EAAMiE,EAAWK,MAGbtE,IAFC9H,EAAGqM,eAAiBvB,EACnB9K,EAAGmI,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCL,GAAO,uBAAyB,EAAU,iCAAmC,EAAU,sBAAwB,EAAU,4BACrH9H,EAAGzC,KAAKwN,YACVjD,GAAO,YAGTA,GAAO,kBACiB,IAApB9H,EAAGgM,cACLlE,GAAO,oDAAuE9H,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,kBACpI,IAArB7K,EAAGzC,KAAK0O,WACVnE,GAAO,sCAEL9H,EAAGzC,KAAK2O,UACVpE,GAAO,6BAA+B,EAAgB,mCAAsC9H,EAAa,WAAI,YAAc,EAAU,KAEvI8H,GAAO,OAEPA,GAAO,OAETA,GAAO,+EACHgD,IACFhD,GAAO,kBAGX,OAAOA,QAGH+J,IAAI,SAASjhB,EAAQhB,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAAwBqQ,EAAIqK,EAAUC,GACrD,IAAIxC,EAAM,IACN0C,EAAOxK,EAAGyK,MACVC,EAAW1K,EAAG2K,UACd3U,EAAUgK,EAAGjO,OAAOsY,GACpBO,EAAc5K,EAAGlD,WAAakD,EAAGjH,KAAKsO,YAAYgD,GAClDQ,EAAiB7K,EAAGjD,cAAgB,IAAMsN,EAC1CS,GAAiB9K,EAAGzC,KAAKwN,UACzBtB,EAAQ,QAAUiB,GAAY,IAC9B4C,EAAS,QAAU9C,EACnB+C,EAAQ,SAAW/C,EACnBoC,EAAM5M,EAAGjH,KAAKC,KAAKgH,GACnB6M,EAAiB,GAEjBC,EAAa,WADjBF,EAAInC,MAEJ3C,GAAO,OAAS,EAAU,0BAA4B,EAAS,gBAAkB,EAAW,YAC5F,IAAIiF,EAAiBH,EAAI3U,OACrBwV,EAAgBzN,EAAGqM,cACvBrM,EAAGqM,cAAgBO,EAAIP,eAAgB,EACvC,IAAIY,EAAOjX,EACX,GAAIiX,EAGF,IAFA,IAAIC,EAAMC,GAAM,EACdC,EAAKH,EAAK/b,OAAS,EACdic,EAAKC,GACVF,EAAOD,EAAKE,GAAM,GACdnN,EAAGjH,KAAK8P,eAAeqE,EAAMlN,EAAG9C,MAAM4H,MACxC8H,EAAI7a,OAASmb,EACbN,EAAI9P,WAAa8N,EAAc,IAAMuC,EAAK,IAC1CP,EAAI7P,cAAgB8N,EAAiB,IAAMsC,EAC3CrF,GAAO,KAAQ9H,EAAG7L,SAASyY,GAAQ,IACnCA,EAAI3U,OAAS8U,GAEbjF,GAAO,QAAU,EAAe,YAE9BqF,IACFrF,GAAO,QAAU,EAAe,gBAAkB,EAAS,KAAO,EAAW,oBAC7E+E,GAAkB,KAEpB/E,GAAO,QAAU,EAAe,KAAO,EAAW,eAAiB,EAAS,WA6BhF,OA1BA9H,EAAGqM,cAAgBO,EAAIP,cAAgBoB,EACvC3F,GAAY,EAAmB,QAAU,EAAW,sBAC5B,IAApB9H,EAAGgM,cACLlE,GAAO,sDAAyE9H,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,kBACtI,IAArB7K,EAAGzC,KAAK0O,WACVnE,GAAO,2DAEL9H,EAAGzC,KAAK2O,UACVpE,GAAO,6BAA+B,EAAgB,mCAAsC9H,EAAa,WAAI,YAAc,EAAU,KAEvI8H,GAAO,OAEPA,GAAO,OAETA,GAAO,gFACF9H,EAAGqM,eAAiBvB,IAErBhD,GADE9H,EAAGmI,MACE,wCAEA,8CAGXL,GAAO,sBAAwB,EAAU,iCAAmC,EAAU,sBAAwB,EAAU,2BACpH9H,EAAGzC,KAAKwN,YACVjD,GAAO,OAEFA,QAGHgK,IAAI,SAASlhB,EAAQhB,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAA0BqQ,EAAIqK,EAAUC,GACvD,IASEC,EATEzC,EAAM,IACN0C,EAAOxK,EAAGyK,MACVC,EAAW1K,EAAG2K,UACd3U,EAAUgK,EAAGjO,OAAOsY,GACpBO,EAAc5K,EAAGlD,WAAakD,EAAGjH,KAAKsO,YAAYgD,GAClDQ,EAAiB7K,EAAGjD,cAAgB,IAAMsN,EAC1CS,GAAiB9K,EAAGzC,KAAKwN,UACzBtB,EAAQ,QAAUiB,GAAY,IAC9BM,EAAUhL,EAAGzC,KAAKkM,OAASzT,GAAWA,EAAQyT,MAE9CuB,GACFlD,GAAO,cAAgB,EAAS,MAAS9H,EAAGjH,KAAKyQ,QAAQxT,EAAQyT,MAAOiB,EAAU1K,EAAGiL,aAAgB,KACrGV,EAAe,SAAWC,GAE1BD,EAAevU,EAEjB,IAAI+b,EAAU/G,EAAU,eAAiBT,EAAe,KAAOvK,EAAG5C,WAAWpH,GAC7E8R,GAAO,QACHkD,IACFlD,GAAO,KAAO,EAAiB,4BAA8B,EAAiB,qBAEhFA,GAAO,KAAO,EAAY,SAAW,EAAU,WAC/C,IAAIiE,EAAaA,MACjBA,EAAWzG,KAAKwC,GAChBA,EAAM,IACkB,IAApB9H,EAAGgM,cACLlE,GAAO,wDAA2E9H,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,0BAE/J/C,GADEkD,EACK,GAAK,EAEL,GAAMhL,EAAGjH,KAAK2G,eAAe1J,GAEtC8R,GAAO,QACkB,IAArB9H,EAAGzC,KAAK0O,WACVnE,GAAO,uCAELA,GADEkD,EACK,OAAU,EAAiB,OAE3B,GAAMhL,EAAGjH,KAAKwO,aAAavR,GAEpC8R,GAAO,QAEL9H,EAAGzC,KAAK2O,UACVpE,GAAO,eAELA,GADEkD,EACK,kBAAoB,EAEpB,GAAMhL,EAAGjH,KAAK2G,eAAe1J,GAEtC8R,GAAO,2CAA8C9H,EAAa,WAAI,YAAc,EAAU,KAEhG8H,GAAO,OAEPA,GAAO,OAET,IAAIqE,EAAQrE,EAeZ,OAdAA,EAAMiE,EAAWK,MAGbtE,IAFC9H,EAAGqM,eAAiBvB,EACnB9K,EAAGmI,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCL,GAAO,KACHgD,IACFhD,GAAO,YAEFA,QAGHkK,IAAI,SAASphB,EAAQhB,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAA6BqQ,EAAIqK,EAAUC,GAC1D,IAAIxC,EAAM,IACN0C,EAAOxK,EAAGyK,MACVC,EAAW1K,EAAG2K,UACd3U,EAAUgK,EAAGjO,OAAOsY,GACpBO,EAAc5K,EAAGlD,WAAakD,EAAGjH,KAAKsO,YAAYgD,GAClDQ,EAAiB7K,EAAGjD,cAAgB,IAAMsN,EAC1CS,GAAiB9K,EAAGzC,KAAKwN,UACzBtB,EAAQ,QAAUiB,GAAY,IAC9B4C,EAAS,QAAU9C,EACnB+C,EAAQ,SAAW/C,EACnBoC,EAAM5M,EAAGjH,KAAKC,KAAKgH,GACnB6M,EAAiB,GAEjBC,EAAa,WADjBF,EAAInC,MAEAwH,EAAO,MAAQzH,EACjBoD,EAAO,MAAQpD,EACfqD,EAAWjB,EAAIjC,UAAY3K,EAAG2K,UAAY,EAC1CmD,EAAY,OAASD,EACrBqE,EAAkB,iBAAmB1H,EACnC2H,EAAc5Z,OAAO6M,KAAKpP,OAC5Boc,EAAepS,EAAGjO,OAAOsgB,sBACzBC,EAAiB/Z,OAAO6M,KAAKgN,GAC7BG,EAAevS,EAAGjO,OAAOygB,qBACzBC,EAAkBN,EAAYjhB,QAAUohB,EAAephB,OACvDwhB,GAAiC,IAAjBH,EAChBI,EAA6C,iBAAhBJ,GAA4Bha,OAAO6M,KAAKmN,GAAcrhB,OACnF0hB,EAAoB5S,EAAGzC,KAAKsV,iBAC5BC,EAAmBJ,GAAiBC,GAAuBC,EAC3DlD,EAAiB1P,EAAGzC,KAAKoS,cACzB5C,EAAiB/M,EAAG/H,OAClB8a,EAAY/S,EAAGjO,OAAOkC,SAC1B,GAAI8e,KAAe/S,EAAGzC,KAAKyV,KAAMD,EAAUtJ,QAAUsJ,EAAU7hB,OAAS8O,EAAGzC,KAAK0V,aAAc,IAAIC,EAAgBlT,EAAGjH,KAAKsL,OAAO0O,GACjI,GAAI/S,EAAGzC,KAAK4V,cACV,IAAIC,EAAgBpT,EAAGjO,OAAOohB,kBAC5BE,EAAkB9a,OAAO6M,KAAKgO,GAMlC,GAJAtL,GAAO,OAAS,EAAU,iBAAmB,EAAe,WACxD4H,IACF5H,GAAO,QAAU,EAAoB,iBAEnCgL,EAAkB,CAMpB,GAJEhL,GADE4H,EACK,IAAM,EAAoB,MAAQ,EAAoB,mBAAqB,EAAU,eAAiB,EAAS,OAAS,EAAS,IAAM,EAAoB,YAAc,EAAS,aAAe,EAAS,MAAQ,EAAoB,IAAM,EAAS,MAErP,aAAe,EAAS,OAAS,EAAU,OAEhD+C,EAAiB,CAEnB,GADA3K,GAAO,oBAAsB,EAAS,cAClCqK,EAAYjhB,OACd,GAAIihB,EAAYjhB,OAAS,EACvB4W,GAAO,sBAAwB,EAAgB,IAAM,EAAS,SACzD,CACL,IAAImF,EAAOkF,EACX,GAAIlF,EAGF,IAFA,IAAkBqG,GAAM,EACtBlG,EAAKH,EAAK/b,OAAS,EACdoiB,EAAKlG,GACV2C,EAAe9C,EAAKqG,GAAM,GAC1BxL,GAAO,OAAS,EAAS,OAAU9H,EAAGjH,KAAK2G,eAAeqQ,GAAiB,IAKnF,GAAIuC,EAAephB,OAAQ,CACzB,IAAIof,EAAOgC,EACX,GAAIhC,EAGF,IAFA,IAAgBnD,GAAM,EACpBqD,EAAKF,EAAKpf,OAAS,EACdic,EAAKqD,GACV+C,GAAajD,EAAKnD,GAAM,GACxBrF,GAAO,OAAU9H,EAAG5C,WAAWmW,IAAe,SAAW,EAAS,KAIxE,GAAIvT,EAAGzC,KAAK4V,eAAiBE,EAAgBniB,OAAQ,CACnD,IAAIsiB,EAAOH,EACX,GAAIG,EAGF,IAFA,IAAiBrG,GAAM,EACrBsG,EAAKD,EAAKtiB,OAAS,EACdic,EAAKsG,GACVC,GAAcF,EAAKrG,GAAM,GACzBrF,GAAO,OAAU9H,EAAG5C,WAAWsW,IAAgB,SAAW,EAAS,KAIzE5L,GAAO,uBAAyB,EAAS,OAE3C,GAAyB,OAArB8K,EACF9K,GAAO,WAAa,EAAU,IAAM,EAAS,UACxC,CACL,IAAIgI,EAAoB9P,EAAGhD,UACvB2W,EAAsB,OAAU1B,EAAO,OAI3C,GAHIjS,EAAGzC,KAAK6S,yBACVpQ,EAAGhD,UAAYgD,EAAGjH,KAAKiQ,YAAYhJ,EAAGhD,UAAWiV,EAAMjS,EAAGzC,KAAK2L,eAE7DwJ,EACF,GAAIE,EACF9K,GAAO,WAAa,EAAU,IAAM,EAAS,UACxC,CACLA,GAAO,IAAM,EAAe,aACxB0J,GAAqB3G,EACzBA,EAAiB7K,EAAGjD,cAAgB,yBAChCgP,GAAaA,QACNzG,KAAKwC,GAChBA,EAAM,IACkB,IAApB9H,EAAGgM,cACLlE,GAAO,qEAAwF9H,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,qCAAwC,EAAwB,QACrN,IAArB7K,EAAGzC,KAAK0O,WACVnE,GAAO,wDAEL9H,EAAGzC,KAAK2O,UACVpE,GAAO,mDAAsD9H,EAAa,WAAI,YAAc,EAAU,KAExG8H,GAAO,OAEPA,GAAO,OAELqE,GAAQrE,EACZA,EAAMiE,GAAWK,MAGbtE,IAFC9H,EAAGqM,eAAiBvB,EACnB9K,EAAGmI,MACE,+BAAiC,GAAU,OAE3C,uBAAyB,GAAU,oBAGrC,cAAgB,GAAU,+EAEnC0C,EAAiB2G,GACb1G,IACFhD,GAAO,iBAGN,GAAI6K,EACT,GAAyB,WAArBC,EAAgC,CAClC9K,GAAO,QAAU,EAAU,eAC3B,IAAI2F,EAAgBzN,EAAGqM,cACvBrM,EAAGqM,cAAgBO,EAAIP,eAAgB,EACvCO,EAAI7a,OAASwgB,EACb3F,EAAI9P,WAAakD,EAAGlD,WAAa,wBACjC8P,EAAI7P,cAAgBiD,EAAGjD,cAAgB,wBACvC6P,EAAI5P,UAAYgD,EAAGzC,KAAK6S,uBAAyBpQ,EAAGhD,UAAYgD,EAAGjH,KAAKiQ,YAAYhJ,EAAGhD,UAAWiV,EAAMjS,EAAGzC,KAAK2L,cAC5G8E,EAAYvE,EAAQ,IAAMwI,EAAO,IACrCrF,EAAI3B,YAAY4C,GAAYoE,EACxBhE,GAAQjO,EAAG7L,SAASyY,GACxBA,EAAI3U,OAAS8U,EACT/M,EAAGjH,KAAK0O,cAAcwG,GAAOH,GAAa,EAC5ChG,GAAO,IAAO9H,EAAGjH,KAAK4O,WAAWsG,GAAOH,EAAWE,GAAc,IAEjElG,GAAO,QAAU,EAAc,MAAQ,EAAc,KAAO,GAAU,IAExEA,GAAO,SAAW,EAAe,gBAAkB,EAAU,wHAA0H,EAAU,IAAM,EAAS,SAChN9H,EAAGqM,cAAgBO,EAAIP,cAAgBoB,MAClC,CACLb,EAAI7a,OAASwgB,EACb3F,EAAI9P,WAAakD,EAAGlD,WAAa,wBACjC8P,EAAI7P,cAAgBiD,EAAGjD,cAAgB,wBACvC6P,EAAI5P,UAAYgD,EAAGzC,KAAK6S,uBAAyBpQ,EAAGhD,UAAYgD,EAAGjH,KAAKiQ,YAAYhJ,EAAGhD,UAAWiV,EAAMjS,EAAGzC,KAAK2L,cAC5G8E,EAAYvE,EAAQ,IAAMwI,EAAO,IACrCrF,EAAI3B,YAAY4C,GAAYoE,EACxBhE,GAAQjO,EAAG7L,SAASyY,GACxBA,EAAI3U,OAAS8U,EACT/M,EAAGjH,KAAK0O,cAAcwG,GAAOH,GAAa,EAC5ChG,GAAO,IAAO9H,EAAGjH,KAAK4O,WAAWsG,GAAOH,EAAWE,GAAc,IAEjElG,GAAO,QAAU,EAAc,MAAQ,EAAc,KAAO,GAAU,IAEpEgD,IACFhD,GAAO,SAAW,EAAe,aAIvC9H,EAAGhD,UAAY8S,EAEb2C,IACF3K,GAAO,OAETA,GAAO,OACHgD,IACFhD,GAAO,QAAU,EAAe,OAChC+E,GAAkB,KAGtB,IAAI+G,EAAe5T,EAAGzC,KAAKsW,cAAgB7T,EAAGqM,cAC9C,GAAI8F,EAAYjhB,OAAQ,CACtB,IAAI4iB,EAAO3B,EACX,GAAI2B,EAGF,IAFA,IAAI/D,EAAcgE,GAAM,EACtBC,EAAKF,EAAK5iB,OAAS,EACd6iB,EAAKC,GAAI,CAEV9G,GAAOlX,EADX+Z,EAAe+D,EAAKC,GAAM,IAE1B,GAAI/T,EAAGjH,KAAK8P,eAAeqE,GAAMlN,EAAG9C,MAAM4H,KAAM,CAC9C,IAAImL,EAAQjQ,EAAGjH,KAAKsO,YAAY0I,GAC9B/B,EAAYvE,EAAQwG,EACpBgE,GAAcL,QAAiCvc,IAAjB6V,GAAKgH,QACrCtH,EAAI7a,OAASmb,GACbN,EAAI9P,WAAa8N,EAAcqF,EAC/BrD,EAAI7P,cAAgB8N,EAAiB,IAAM7K,EAAGjH,KAAKoL,eAAe4L,GAClEnD,EAAI5P,UAAYgD,EAAGjH,KAAKsQ,QAAQrJ,EAAGhD,UAAW+S,EAAc/P,EAAGzC,KAAK2L,cACpE0D,EAAI3B,YAAY4C,GAAY7N,EAAGjH,KAAK2G,eAAeqQ,GAC/C9B,GAAQjO,EAAG7L,SAASyY,GAExB,GADAA,EAAI3U,OAAS8U,EACT/M,EAAGjH,KAAK0O,cAAcwG,GAAOH,GAAa,EAAG,CAC/CG,GAAQjO,EAAGjH,KAAK4O,WAAWsG,GAAOH,EAAWE,GACzCgC,GAAWhC,MACV,CACL,IAAIgC,GAAWlC,EACfhG,GAAO,QAAU,EAAc,MAAQ,EAAc,KAEvD,GAAImM,GACFnM,GAAO,IAAM,GAAU,QAClB,CACL,GAAIoL,GAAiBA,EAAcnD,GAAe,CAChDjI,GAAO,SAAW,GAAa,kBAC3B4H,IACF5H,GAAO,8CAAgD,EAAU,MAAU9H,EAAGjH,KAAKwO,aAAawI,GAAiB,OAEnHjI,GAAO,OAAS,EAAe,aAC/B,IAAIgI,EAAoB9P,EAAGhD,UACzBwU,GAAqB3G,EACrBsF,GAAmBnQ,EAAGjH,KAAKwO,aAAawI,GACtC/P,EAAGzC,KAAK6S,yBACVpQ,EAAGhD,UAAYgD,EAAGjH,KAAKsQ,QAAQyG,EAAmBC,EAAc/P,EAAGzC,KAAK2L,eAE1E2B,EAAiB7K,EAAGjD,cAAgB,aAChCgP,GAAaA,QACNzG,KAAKwC,GAChBA,EAAM,IACkB,IAApB9H,EAAGgM,cACLlE,GAAO,yDAA4E9H,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,kCAAqC,GAAqB,QACnM,IAArB7K,EAAGzC,KAAK0O,WACVnE,GAAO,gBAELA,GADE9H,EAAGzC,KAAK6S,uBACH,yBAEA,oCAAuC,GAAqB,MAErEtI,GAAO,MAEL9H,EAAGzC,KAAK2O,UACVpE,GAAO,6BAA+B,EAAgB,mCAAsC9H,EAAa,WAAI,YAAc,EAAU,KAEvI8H,GAAO,OAEPA,GAAO,OAELqE,GAAQrE,EACZA,EAAMiE,GAAWK,MAGbtE,IAFC9H,EAAGqM,eAAiBvB,EACnB9K,EAAGmI,MACE,+BAAiC,GAAU,OAE3C,uBAAyB,GAAU,oBAGrC,cAAgB,GAAU,+EAEnC0C,EAAiB2G,GACjBxR,EAAGhD,UAAY8S,EACfhI,GAAO,kBAEHgD,GACFhD,GAAO,SAAW,GAAa,kBAC3B4H,IACF5H,GAAO,8CAAgD,EAAU,MAAU9H,EAAGjH,KAAKwO,aAAawI,GAAiB,OAEnHjI,GAAO,OAAS,EAAe,uBAE/BA,GAAO,QAAU,GAAa,kBAC1B4H,IACF5H,GAAO,8CAAgD,EAAU,MAAU9H,EAAGjH,KAAKwO,aAAawI,GAAiB,OAEnHjI,GAAO,SAGXA,GAAO,IAAM,GAAU,OAGvBgD,IACFhD,GAAO,QAAU,EAAe,OAChC+E,GAAkB,MAK1B,GAAIyF,EAAephB,OAAQ,CACzB,IAAIijB,GAAO7B,EACX,GAAI6B,GAGF,IAFA,IAAIZ,GAAYa,IAAM,EACpBC,GAAKF,GAAKjjB,OAAS,EACdkjB,GAAKC,IAAI,CAEVnH,GAAOkF,EADXmB,GAAaY,GAAKC,IAAM,IAExB,GAAIpU,EAAGjH,KAAK8P,eAAeqE,GAAMlN,EAAG9C,MAAM4H,KAAM,CAC9C8H,EAAI7a,OAASmb,GACbN,EAAI9P,WAAakD,EAAGlD,WAAa,qBAAuBkD,EAAGjH,KAAKsO,YAAYkM,IAC5E3G,EAAI7P,cAAgBiD,EAAGjD,cAAgB,sBAAwBiD,EAAGjH,KAAKoL,eAAeoP,IAEpFzL,GADE4H,EACK,IAAM,EAAoB,MAAQ,EAAoB,mBAAqB,EAAU,eAAiB,EAAS,OAAS,EAAS,IAAM,EAAoB,YAAc,EAAS,aAAe,EAAS,MAAQ,EAAoB,IAAM,EAAS,MAErP,aAAe,EAAS,OAAS,EAAU,OAEpD5H,GAAO,QAAW9H,EAAG5C,WAAWmW,IAAe,SAAW,EAAS,QACnE3G,EAAI5P,UAAYgD,EAAGjH,KAAKiQ,YAAYhJ,EAAGhD,UAAWiV,EAAMjS,EAAGzC,KAAK2L,cAC5D8E,EAAYvE,EAAQ,IAAMwI,EAAO,IACrCrF,EAAI3B,YAAY4C,GAAYoE,EACxBhE,GAAQjO,EAAG7L,SAASyY,GACxBA,EAAI3U,OAAS8U,EACT/M,EAAGjH,KAAK0O,cAAcwG,GAAOH,GAAa,EAC5ChG,GAAO,IAAO9H,EAAGjH,KAAK4O,WAAWsG,GAAOH,EAAWE,GAAc,IAEjElG,GAAO,QAAU,EAAc,MAAQ,EAAc,KAAO,GAAU,IAEpEgD,IACFhD,GAAO,SAAW,EAAe,aAEnCA,GAAO,MACHgD,IACFhD,GAAO,SAAW,EAAe,aAEnCA,GAAO,OACHgD,IACFhD,GAAO,QAAU,EAAe,OAChC+E,GAAkB,OAM5B,GAAI7M,EAAGzC,KAAK4V,eAAiBE,EAAgBniB,OAAQ,CACnD,IAAIojB,GAAOjB,EACX,GAAIiB,GAGF,IAFA,IAAIZ,GAAaa,IAAM,EACrBC,GAAKF,GAAKpjB,OAAS,EACdqjB,GAAKC,IAAI,CAEd,IAAIC,GAAYrB,EADhBM,GAAcY,GAAKC,IAAM,IAEvBrH,GAAOuH,GAAU1iB,OACnB,GAAIiO,EAAGjH,KAAK8P,eAAeqE,GAAMlN,EAAG9C,MAAM4H,KAAM,CAC9C8H,EAAI7a,OAASmb,GACbN,EAAI9P,WAAakD,EAAGlD,WAAa,iBAAmBkD,EAAGjH,KAAKsO,YAAYqM,IAAe,UACvF9G,EAAI7P,cAAgBiD,EAAGjD,cAAgB,kBAAoBiD,EAAGjH,KAAKoL,eAAeuP,IAAe,UACjG5L,GAAO,mBAAqB,EAAS,UAEnCA,GADE4H,EACK,IAAM,EAAoB,MAAQ,EAAoB,mBAAqB,EAAU,eAAiB,EAAS,OAAS,EAAS,IAAM,EAAoB,YAAc,EAAS,aAAe,EAAS,MAAQ,EAAoB,IAAM,EAAS,MAErP,aAAe,EAAS,OAAS,EAAU,OAEpD5H,GAAO,QAAW9H,EAAG5C,WAAWsW,IAAgB,SAAW,EAAS,mBAAqB,EAAS,OAClG9G,EAAI5P,UAAYgD,EAAGjH,KAAKiQ,YAAYhJ,EAAGhD,UAAWiV,EAAMjS,EAAGzC,KAAK2L,cAC5D8E,EAAYvE,EAAQ,IAAMwI,EAAO,IACrCrF,EAAI3B,YAAY4C,GAAYoE,EAC5B,IAAIhE,GAAQjO,EAAG7L,SAASyY,GACxBA,EAAI3U,OAAS8U,EACT/M,EAAGjH,KAAK0O,cAAcwG,GAAOH,GAAa,EAC5ChG,GAAO,IAAO9H,EAAGjH,KAAK4O,WAAWsG,GAAOH,EAAWE,GAAc,IAEjElG,GAAO,QAAU,EAAc,MAAQ,EAAc,KAAO,GAAU,IAEpEgD,IACFhD,GAAO,SAAW,EAAe,aAEnCA,GAAO,MACHgD,IACFhD,GAAO,SAAW,EAAe,aAEnCA,GAAO,OACHgD,IACFhD,GAAO,QAAU,EAAe,OAChC+E,GAAkB,KAEpB,IAAI6H,GAASD,GAAUrhB,QACrBuhB,GAASF,GAAUthB,QACrB,QAAekE,IAAXqd,SAAmCrd,IAAXsd,GAAsB,CAChD7M,GAAO,QAAU,EAAW,YACxB0J,GAAqB3G,EACzB,QAAexT,IAAXqd,GAAsB,CACxB,IAAIE,GAASF,GACXG,GAAU,UACVC,GAAc,OAChBhN,GAAO,IAAM,EAAW,iBAAmB,EAAS,OAAS,GAAW,KACxE+C,EAAiB7K,EAAGjD,cAAgB,yBACpC+K,GAAO,UAAY,EAAW,UAC1BiE,GAAaA,QACNzG,KAAKwC,GAChBA,EAAM,IACkB,IAApB9H,EAAGgM,cACLlE,GAAO,8DAAiF9H,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,yBAA4B,GAAY,aAAgB,GAAW,eAAmB7K,EAAGjH,KAAKwO,aAAamM,IAAgB,QACzQ,IAArB1T,EAAGzC,KAAK0O,WACVnE,GAAO,gCAAmC,GAAgB,SAAW,GAAW,iCAAoC9H,EAAGjH,KAAKwO,aAAamM,IAAgB,QAEvJ1T,EAAGzC,KAAK2O,UACVpE,GAAO,6BAA+B,EAAgB,mCAAsC9H,EAAa,WAAI,YAAc,EAAU,KAEvI8H,GAAO,OAEPA,GAAO,OAELqE,GAAQrE,EACZA,EAAMiE,GAAWK,MAGbtE,IAFC9H,EAAGqM,eAAiBvB,EACnB9K,EAAGmI,MACE,+BAAiC,GAAU,OAE3C,uBAAyB,GAAU,oBAGrC,cAAgB,GAAU,+EAEnCL,GAAO,WACQzQ,IAAXsd,KACF7M,GAAO,UAGX,QAAezQ,IAAXsd,GAAsB,CACxB,IAAIC,GAASD,GACXE,GAAU,UACVC,GAAc,OAChBhN,GAAO,IAAM,EAAW,iBAAmB,EAAS,OAAS,GAAW,KACxE+C,EAAiB7K,EAAGjD,cAAgB,yBACpC+K,GAAO,UAAY,EAAW,SAC9B,IAAIiE,GAAaA,OACjBA,GAAWzG,KAAKwC,GAChBA,EAAM,IACkB,IAApB9H,EAAGgM,cACLlE,GAAO,8DAAiF9H,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,yBAA4B,GAAY,aAAgB,GAAW,eAAmB7K,EAAGjH,KAAKwO,aAAamM,IAAgB,QACzQ,IAArB1T,EAAGzC,KAAK0O,WACVnE,GAAO,gCAAmC,GAAgB,SAAW,GAAW,iCAAoC9H,EAAGjH,KAAKwO,aAAamM,IAAgB,QAEvJ1T,EAAGzC,KAAK2O,UACVpE,GAAO,6BAA+B,EAAgB,mCAAsC9H,EAAa,WAAI,YAAc,EAAU,KAEvI8H,GAAO,OAEPA,GAAO,OAET,IAAIqE,GAAQrE,EACZA,EAAMiE,GAAWK,MAGbtE,IAFC9H,EAAGqM,eAAiBvB,EACnB9K,EAAGmI,MACE,+BAAiC,GAAU,OAE3C,uBAAyB,GAAU,oBAGrC,cAAgB,GAAU,+EAEnCL,GAAO,MAET+C,EAAiB2G,GACb1G,IACFhD,GAAO,QAAU,EAAW,OAC5B+E,GAAkB,QAW9B,OAJI/B,IACFhD,GAAO,IAAM,EAAmB,QAAU,EAAU,iBAEtDA,EAAM9H,EAAGjH,KAAK8O,YAAYC,SAItBiN,IAAI,SAASnkB,EAAQhB,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAAgCqQ,EAAIqK,EAAUC,GAC7D,IAAIxC,EAAM,IACN0C,EAAOxK,EAAGyK,MACVC,EAAW1K,EAAG2K,UACd3U,EAAUgK,EAAGjO,OAAOsY,GACpBO,EAAc5K,EAAGlD,WAAakD,EAAGjH,KAAKsO,YAAYgD,GAClDQ,EAAiB7K,EAAGjD,cAAgB,IAAMsN,EAC1CS,GAAiB9K,EAAGzC,KAAKwN,UACzBtB,EAAQ,QAAUiB,GAAY,IAC9B6C,EAAQ,SAAW/C,EACnBoC,EAAM5M,EAAGjH,KAAKC,KAAKgH,GAGnB8M,EAAa,WADjBF,EAAInC,MAEJ,GAAIzK,EAAGjH,KAAK8P,eAAe7S,EAASgK,EAAG9C,MAAM4H,KAAM,CACjD8H,EAAI7a,OAASiE,EACb4W,EAAI9P,WAAa8N,EACjBgC,EAAI7P,cAAgB8N,EACpB,IAAIoH,EAAO,MAAQzH,EACjBoD,EAAO,MAAQpD,EACf2C,EAAK,IAAM3C,EACXwK,EAAe,OAAU/C,EAAO,OAEhCnE,EAAY,QADDlB,EAAIjC,UAAY3K,EAAG2K,UAAY,GAE1CuH,EAAkB,iBAAmB1H,EACrCkF,EAAiB1P,EAAGzC,KAAKoS,cACzB5C,EAAiB/M,EAAG/H,OACtB6P,GAAO,QAAU,EAAU,cACvB4H,IACF5H,GAAO,QAAU,EAAoB,kBAGrCA,GADE4H,EACK,IAAM,EAAoB,MAAQ,EAAoB,mBAAqB,EAAU,eAAiB,EAAS,OAAS,EAAS,IAAM,EAAoB,YAAc,EAAS,aAAe,EAAS,MAAQ,EAAoB,IAAM,EAAS,MAErP,aAAe,EAAS,OAAS,EAAU,OAEpD5H,GAAO,iBAAmB,EAAS,cACnC,IAAIkG,EAAYiE,EACZxE,EAAgBzN,EAAGqM,cACvBrM,EAAGqM,cAAgBO,EAAIP,eAAgB,EACvC,IAAI4B,EAAQjO,EAAG7L,SAASyY,GACxBA,EAAI3U,OAAS8U,EACT/M,EAAGjH,KAAK0O,cAAcwG,EAAOH,GAAa,EAC5ChG,GAAO,IAAO9H,EAAGjH,KAAK4O,WAAWsG,EAAOH,EAAWE,GAAc,IAEjElG,GAAO,QAAU,EAAc,MAAQ,EAAc,KAAO,EAAU,IAExE9H,EAAGqM,cAAgBO,EAAIP,cAAgBoB,EACvC3F,GAAO,SAAW,EAAe,gBAAkB,EAAO,aAAe,EAAS,KAAO,EAAO,YAAc,EAAO,iBAAmB,EAAO,oBAAsB,EAAS,sBACtJ,IAApB9H,EAAGgM,cACLlE,GAAO,8DAAiF9H,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,+BAAkC,EAAiB,QACjM,IAArB7K,EAAGzC,KAAK0O,WACVnE,GAAO,iCAAqC,EAAiB,oBAE3D9H,EAAGzC,KAAK2O,UACVpE,GAAO,6BAA+B,EAAgB,mCAAsC9H,EAAa,WAAI,YAAc,EAAU,KAEvI8H,GAAO,OAEPA,GAAO,OAETA,GAAO,gFACF9H,EAAGqM,eAAiBvB,IAErBhD,GADE9H,EAAGmI,MACE,wCAEA,8CAGP2C,IACFhD,GAAO,YAETA,GAAO,OAMT,OAJIgD,IACFhD,GAAO,SAAmC,EAAU,iBAEtDA,EAAM9H,EAAGjH,KAAK8O,YAAYC,SAItBmN,IAAI,SAASrkB,EAAQhB,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAAsBqQ,EAAIqK,EAAUC,GACnD,IAQI5N,EAAQwY,EARRpN,EAAM,IACN0C,EAAOxK,EAAGyK,MACVC,EAAW1K,EAAG2K,UACd3U,EAAUgK,EAAGjO,OAAOsY,GACpBQ,EAAiB7K,EAAGjD,cAAgB,IAAMsN,EAC1CS,GAAiB9K,EAAGzC,KAAKwN,UACzBtB,EAAQ,QAAUiB,GAAY,IAC9B4C,EAAS,QAAU9C,EAEvB,GAAe,KAAXxU,GAA6B,MAAXA,EAChBgK,EAAGvD,QACLC,EAASsD,EAAGmI,MACZ+M,EAAW,aAEXxY,GAAmC,IAA1BsD,EAAGjE,KAAKhK,OAAO2K,OACxBwY,EAAW,sBAER,CACL,IAAIC,EAAUnV,EAAG7C,WAAW6C,EAAG/H,OAAQjC,EAASgK,EAAGvD,QACnD,QAAgBpF,IAAZ8d,EAAuB,CACzB,IAAIC,EAAWpV,EAAGzJ,gBAAgBuB,QAAQkI,EAAG/H,OAAQjC,GACrD,GAA2B,QAAvBgK,EAAGzC,KAAK8X,YAAuB,CACjC/W,QAAQC,MAAM6W,IACVrJ,EAAaA,OACNzG,KAAKwC,GAChBA,EAAM,IACkB,IAApB9H,EAAGgM,cACLlE,GAAO,qDAAwE9H,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,sBAA0B7K,EAAGjH,KAAKwO,aAAavR,GAAY,QAChM,IAArBgK,EAAGzC,KAAK0O,WACVnE,GAAO,0CAA+C9H,EAAGjH,KAAKwO,aAAavR,GAAY,MAErFgK,EAAGzC,KAAK2O,UACVpE,GAAO,cAAiB9H,EAAGjH,KAAK2G,eAAe1J,GAAY,mCAAsCgK,EAAa,WAAI,YAAc,EAAU,KAE5I8H,GAAO,OAEPA,GAAO,OAET,IAAIqE,EAAQrE,EACZA,EAAMiE,EAAWK,MAGbtE,IAFC9H,EAAGqM,eAAiBvB,EACnB9K,EAAGmI,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAE/B2C,IACFhD,GAAO,sBAEJ,CAAA,GAA2B,UAAvB9H,EAAGzC,KAAK8X,YAMjB,MAAM,IAAIrV,EAAGzJ,gBAAgByJ,EAAG/H,OAAQjC,EAASof,GALjD9W,QAAQ4S,KAAKkE,GACTtK,IACFhD,GAAO,uBAKN,GAAIqN,EAAQ7V,OAAQ,CACzB,IAAIsN,EAAM5M,EAAGjH,KAAKC,KAAKgH,GAEnB8M,EAAa,WADjBF,EAAInC,MAEJmC,EAAI7a,OAASojB,EAAQpjB,OACrB6a,EAAI9P,WAAa,GACjB8P,EAAI7P,cAAgB/G,EAEpB8R,GAAO,IADK9H,EAAG7L,SAASyY,GAAKvJ,QAAQ,oBAAqB8R,EAAQpkB,MAC3C,IACnB+Z,IACFhD,GAAO,QAAU,EAAe,aAGlCpL,GAA4B,IAAnByY,EAAQzY,OACjBwY,EAAWC,EAAQpkB,KAGvB,GAAImkB,EAAU,CACZ,IAAInJ,EAAaA,MACjBA,EAAWzG,KAAKwC,GAChBA,EAAM,GAEJA,GADE9H,EAAGzC,KAAKyR,YACH,IAAM,EAAa,eAEnB,IAAM,EAAa,KAE5BlH,GAAO,IAAM,EAAU,qBACH,MAAhB9H,EAAGhD,YACL8K,GAAO,MAAS9H,EAAY,WAK9B,IAAIsV,EADJxN,GAAO,OAFW4C,EAAW,QAAWA,EAAW,GAAM,IAAM,cAEhC,OADPA,EAAW1K,EAAGiL,YAAYP,GAAY,sBACC,gBAG/D,GADA5C,EAAMiE,EAAWK,MACb1P,EAAQ,CACV,IAAKsD,EAAGmI,MAAO,MAAM,IAAIrX,MAAM,0CAC3Bga,IACFhD,GAAO,QAAU,EAAW,MAE9BA,GAAO,UAAa9H,EAAa,WAAI,IAAM,EAAmB,KAC1D8K,IACFhD,GAAO,IAAM,EAAW,aAE1BA,GAAO,4KACHgD,IACFhD,GAAO,IAAM,EAAW,cAE1BA,GAAO,MACHgD,IACFhD,GAAO,QAAU,EAAW,aAG9BA,GAAO,SAAW,EAAmB,uCAAyC,EAAa,0CAA4C,EAAa,wCAChJgD,IACFhD,GAAO,YAIb,OAAOA,QAGHyN,IAAI,SAAS3kB,EAAQhB,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAA2BqQ,EAAIqK,EAAUC,GACxD,IAAIxC,EAAM,IACN0C,EAAOxK,EAAGyK,MACVC,EAAW1K,EAAG2K,UACd3U,EAAUgK,EAAGjO,OAAOsY,GACpBO,EAAc5K,EAAGlD,WAAakD,EAAGjH,KAAKsO,YAAYgD,GAClDQ,EAAiB7K,EAAGjD,cAAgB,IAAMsN,EAC1CS,GAAiB9K,EAAGzC,KAAKwN,UACzBtB,EAAQ,QAAUiB,GAAY,IAC9B4C,EAAS,QAAU9C,EACnBQ,EAAUhL,EAAGzC,KAAKkM,OAASzT,GAAWA,EAAQyT,MAE9CuB,IACFlD,GAAO,cAAgB,EAAS,MAAS9H,EAAGjH,KAAKyQ,QAAQxT,EAAQyT,MAAOiB,EAAU1K,EAAGiL,aAAgB,MAKvG,IAAIyF,EAAW,SAAWlG,EAC1B,IAAKQ,EACH,GAAIhV,EAAQ9E,OAAS8O,EAAGzC,KAAK0V,cAAgBjT,EAAGjO,OAAOgC,YAAcwE,OAAO6M,KAAKpF,EAAGjO,OAAOgC,YAAY7C,OAAQ,CAC7G,IAAI6hB,KACA9F,EAAOjX,EACX,GAAIiX,EAGF,IAFA,IAAI2C,EAAW0D,GAAM,EACnBlG,EAAKH,EAAK/b,OAAS,EACdoiB,EAAKlG,GAAI,CACdwC,EAAY3C,EAAKqG,GAAM,GACvB,IAAIkC,EAAexV,EAAGjO,OAAOgC,WAAW6b,GAClC4F,GAAgBxV,EAAGjH,KAAK8P,eAAe2M,EAAcxV,EAAG9C,MAAM4H,OAClEiO,EAAUA,EAAU7hB,QAAU0e,SAKhCmD,EAAY/c,EAGpB,GAAIgV,GAAW+H,EAAU7hB,OAAQ,CAC/B,IAAI4e,EAAoB9P,EAAGhD,UACzByY,EAAgBzK,GAAW+H,EAAU7hB,QAAU8O,EAAGzC,KAAK0V,aACvDvD,EAAiB1P,EAAGzC,KAAKoS,cAC3B,GAAI7E,EAEF,GADAhD,GAAO,eAAiB,EAAS,KAC7B2N,EAAe,CACZzK,IACHlD,GAAO,QAAU,EAAa,qBAAuB,EAAgB,MAIrEqI,EAAmB,QADnBD,EAAgB,SAAW1F,EAAO,KADhC2C,EAAK,IAAM3C,GACgC,KACA,OAC3CxK,EAAGzC,KAAK6S,yBACVpQ,EAAGhD,UAAYgD,EAAGjH,KAAKiQ,YAAY8G,EAAmBI,EAAelQ,EAAGzC,KAAK2L,eAE/EpB,GAAO,QAAU,EAAW,YACxBkD,IACFlD,GAAO,cAAgB,EAAS,mBAAqB,EAAW,0CAA4C,EAAS,MAAQ,EAAW,oBAE1IA,GAAO,aAAe,EAAO,SAAW,EAAO,MAAQ,EAAa,YAAc,EAAO,SAAW,EAAW,MAAQ,EAAU,IAAM,EAAa,IAAM,EAAO,oBAC7J4H,IACF5H,GAAO,8CAAgD,EAAU,KAAO,EAAa,IAAM,EAAO,OAEpGA,GAAO,UAAY,EAAW,cAC1BkD,IACFlD,GAAO,SAETA,GAAO,UAAY,EAAW,UAC1BiE,EAAaA,OACNzG,KAAKwC,GAChBA,EAAM,IACkB,IAApB9H,EAAGgM,cACLlE,GAAO,yDAA4E9H,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,kCAAqC,EAAqB,QACnM,IAArB7K,EAAGzC,KAAK0O,WACVnE,GAAO,gBAELA,GADE9H,EAAGzC,KAAK6S,uBACH,yBAEA,oCAAuC,EAAqB,MAErEtI,GAAO,MAEL9H,EAAGzC,KAAK2O,UACVpE,GAAO,6BAA+B,EAAgB,mCAAsC9H,EAAa,WAAI,YAAc,EAAU,KAEvI8H,GAAO,OAEPA,GAAO,OAELqE,EAAQrE,EACZA,EAAMiE,EAAWK,MAGbtE,IAFC9H,EAAGqM,eAAiBvB,EACnB9K,EAAGmI,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCL,GAAO,iBACF,CACLA,GAAO,SACP,IAAIwI,EAAOyC,EACX,GAAIzC,EAGF,IAFA,IAAkBnD,GAAM,EACtBqD,EAAKF,EAAKpf,OAAS,EACdic,EAAKqD,GACVT,EAAeO,EAAKnD,GAAM,GACtBA,IACFrF,GAAO,QAITA,GAAO,SADLkI,EAAWvG,GADTwG,EAAQjQ,EAAGjH,KAAKsO,YAAY0I,KAEF,kBAC1BL,IACF5H,GAAO,8CAAgD,EAAU,MAAU9H,EAAGjH,KAAKwO,aAAawI,GAAiB,OAEnHjI,GAAO,gBAAkB,EAAS,MAAS9H,EAAGjH,KAAK2G,eAAeM,EAAGzC,KAAK2L,aAAe6G,EAAeE,GAAU,OAGtHnI,GAAO,QAELqI,EAAmB,QADjBD,EAAgB,UAAY1F,GACe,OAC3CxK,EAAGzC,KAAK6S,yBACVpQ,EAAGhD,UAAYgD,EAAGzC,KAAK2L,aAAelJ,EAAGjH,KAAKiQ,YAAY8G,EAAmBI,GAAe,GAAQJ,EAAoB,MAAQI,GAElI,IAAInE,EAAaA,MACjBA,EAAWzG,KAAKwC,GAChBA,EAAM,IACkB,IAApB9H,EAAGgM,cACLlE,GAAO,yDAA4E9H,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,kCAAqC,EAAqB,QACnM,IAArB7K,EAAGzC,KAAK0O,WACVnE,GAAO,gBAELA,GADE9H,EAAGzC,KAAK6S,uBACH,yBAEA,oCAAuC,EAAqB,MAErEtI,GAAO,MAEL9H,EAAGzC,KAAK2O,UACVpE,GAAO,6BAA+B,EAAgB,mCAAsC9H,EAAa,WAAI,YAAc,EAAU,KAEvI8H,GAAO,OAEPA,GAAO,OAET,IAAIqE,EAAQrE,EACZA,EAAMiE,EAAWK,MAGbtE,IAFC9H,EAAGqM,eAAiBvB,EACnB9K,EAAGmI,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCL,GAAO,kBAGT,GAAI2N,EAAe,CACZzK,IACHlD,GAAO,QAAU,EAAa,qBAAuB,EAAgB,MAEvE,IACEoI,EAAgB,SAAW1F,EAAO,KADhC2C,EAAK,IAAM3C,GACgC,IAC7C2F,EAAmB,OAAUD,EAAgB,OAC3ClQ,EAAGzC,KAAK6S,yBACVpQ,EAAGhD,UAAYgD,EAAGjH,KAAKiQ,YAAY8G,EAAmBI,EAAelQ,EAAGzC,KAAK2L,eAE3E8B,IACFlD,GAAO,QAAU,EAAa,sBAAwB,EAAa,sBAC3C,IAApB9H,EAAGgM,cACLlE,GAAO,yDAA4E9H,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,kCAAqC,EAAqB,QACnM,IAArB7K,EAAGzC,KAAK0O,WACVnE,GAAO,gBAELA,GADE9H,EAAGzC,KAAK6S,uBACH,yBAEA,oCAAuC,EAAqB,MAErEtI,GAAO,MAEL9H,EAAGzC,KAAK2O,UACVpE,GAAO,6BAA+B,EAAgB,mCAAsC9H,EAAa,WAAI,YAAc,EAAU,KAEvI8H,GAAO,OAEPA,GAAO,OAETA,GAAO,0FAA4F,EAAa,sBAElHA,GAAO,aAAe,EAAO,SAAW,EAAO,MAAQ,EAAa,YAAc,EAAO,aAAe,EAAU,IAAM,EAAa,IAAM,EAAO,oBAC9I4H,IACF5H,GAAO,8CAAgD,EAAU,KAAO,EAAa,IAAM,EAAO,OAEpGA,GAAO,qBACiB,IAApB9H,EAAGgM,cACLlE,GAAO,yDAA4E9H,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,kCAAqC,EAAqB,QACnM,IAArB7K,EAAGzC,KAAK0O,WACVnE,GAAO,gBAELA,GADE9H,EAAGzC,KAAK6S,uBACH,yBAEA,oCAAuC,EAAqB,MAErEtI,GAAO,MAEL9H,EAAGzC,KAAK2O,UACVpE,GAAO,6BAA+B,EAAgB,mCAAsC9H,EAAa,WAAI,YAAc,EAAU,KAEvI8H,GAAO,OAEPA,GAAO,OAETA,GAAO,mFACHkD,IACFlD,GAAO,aAEJ,CACL,IAAI0L,EAAOT,EACX,GAAIS,EAGF,IAFA,IAAIzD,EAAc2F,GAAM,EACtBjC,EAAKD,EAAKtiB,OAAS,EACdwkB,EAAKjC,GAAI,CACd1D,EAAeyD,EAAKkC,GAAM,GAC1B,IAAIzF,EAAQjQ,EAAGjH,KAAKsO,YAAY0I,GAC9BI,EAAmBnQ,EAAGjH,KAAKwO,aAAawI,GACxCC,EAAWvG,EAAQwG,EACjBjQ,EAAGzC,KAAK6S,yBACVpQ,EAAGhD,UAAYgD,EAAGjH,KAAKsQ,QAAQyG,EAAmBC,EAAc/P,EAAGzC,KAAK2L,eAE1EpB,GAAO,SAAW,EAAa,kBAC3B4H,IACF5H,GAAO,8CAAgD,EAAU,MAAU9H,EAAGjH,KAAKwO,aAAawI,GAAiB,OAEnHjI,GAAO,qBACiB,IAApB9H,EAAGgM,cACLlE,GAAO,yDAA4E9H,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,kCAAqC,EAAqB,QACnM,IAArB7K,EAAGzC,KAAK0O,WACVnE,GAAO,gBAELA,GADE9H,EAAGzC,KAAK6S,uBACH,yBAEA,oCAAuC,EAAqB,MAErEtI,GAAO,MAEL9H,EAAGzC,KAAK2O,UACVpE,GAAO,6BAA+B,EAAgB,mCAAsC9H,EAAa,WAAI,YAAc,EAAU,KAEvI8H,GAAO,OAEPA,GAAO,OAETA,GAAO,kFAKf9H,EAAGhD,UAAY8S,OACNhF,IACThD,GAAO,gBAET,OAAOA,QAGH6N,IAAI,SAAS/kB,EAAQhB,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAA8BqQ,EAAIqK,EAAUC,GAC3D,IAUEC,EAVEzC,EAAM,IACN0C,EAAOxK,EAAGyK,MACVC,EAAW1K,EAAG2K,UACd3U,EAAUgK,EAAGjO,OAAOsY,GACpBO,EAAc5K,EAAGlD,WAAakD,EAAGjH,KAAKsO,YAAYgD,GAClDQ,EAAiB7K,EAAGjD,cAAgB,IAAMsN,EAC1CS,GAAiB9K,EAAGzC,KAAKwN,UACzBtB,EAAQ,QAAUiB,GAAY,IAC9B4C,EAAS,QAAU9C,EACnBQ,EAAUhL,EAAGzC,KAAKkM,OAASzT,GAAWA,EAAQyT,MAQlD,GANIuB,GACFlD,GAAO,cAAgB,EAAS,MAAS9H,EAAGjH,KAAKyQ,QAAQxT,EAAQyT,MAAOiB,EAAU1K,EAAGiL,aAAgB,KACrGV,EAAe,SAAWC,GAE1BD,EAAevU,GAEZA,GAAWgV,KAAoC,IAAxBhL,EAAGzC,KAAKrJ,YAAuB,CACrD8W,IACFlD,GAAO,QAAU,EAAW,SAAW,EAAiB,iBAAmB,EAAiB,mBAAqB,EAAW,4BAA8B,EAAiB,kBAAsB,EAAW,qBAE9MA,GAAO,QAAU,EAAW,gBAAkB,EAAU,0BAA4B,EAAU,kEAAoE,EAAU,QAAU,EAAU,WAAa,EAAW,kCACpNkD,IACFlD,GAAO,SAETA,GAAO,SAAW,EAAW,SAC7B,IAAIiE,EAAaA,MACjBA,EAAWzG,KAAKwC,GAChBA,EAAM,IACkB,IAApB9H,EAAGgM,cACLlE,GAAO,4DAA+E9H,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,8BAC5I,IAArB7K,EAAGzC,KAAK0O,WACVnE,GAAO,mGAEL9H,EAAGzC,KAAK2O,UACVpE,GAAO,eAELA,GADEkD,EACK,kBAAoB,EAEpB,GAAK,EAEdlD,GAAO,2CAA8C9H,EAAa,WAAI,YAAc,EAAU,KAEhG8H,GAAO,OAEPA,GAAO,OAET,IAAIqE,EAAQrE,EACZA,EAAMiE,EAAWK,MAGbtE,IAFC9H,EAAGqM,eAAiBvB,EACnB9K,EAAGmI,MACE,+BAAiC,EAAU,OAE3C,uBAAyB,EAAU,oBAGrC,cAAgB,EAAU,+EAEnCL,GAAO,MACHgD,IACFhD,GAAO,iBAGLgD,IACFhD,GAAO,iBAGX,OAAOA,QAGH8N,IAAI,SAAShlB,EAAQhB,EAAOD,GAClC,aACAC,EAAOD,QAAU,SAA2BqQ,EAAIqK,EAAUC,GAwbxD,SAASuL,EAAgBC,GAEvB,IAAK,IADDnR,EAAQmR,EAAYnR,MACf9T,EAAI,EAAGA,EAAI8T,EAAMzT,OAAQL,IAChC,GAAIklB,EAAepR,EAAM9T,IAAK,OAAO,EAGzC,SAASklB,EAAevH,GACtB,YAAoCnX,IAA7B2I,EAAGjO,OAAOyc,EAAMnO,UAA2BmO,EAAMjJ,YAAcyQ,EAA0BxH,GAGlG,SAASwH,EAA0BxH,GAEjC,IAAK,IADDyH,EAAOzH,EAAMjJ,WACR1U,EAAI,EAAGA,EAAIolB,EAAK/kB,OAAQL,IAC/B,QAA2BwG,IAAvB2I,EAAGjO,OAAOkkB,EAAKplB,IAAmB,OAAO,EApcjD,IAAIiX,EAAM,GACNpL,GAA8B,IAArBsD,EAAGjO,OAAO2K,OACrBwZ,EAAelW,EAAGjH,KAAK+P,qBAAqB9I,EAAGjO,OAAQiO,EAAG9C,MAAM4H,IAAK,QACrEqR,EAAMnW,EAAG/P,KAAKyR,OAAO1B,EAAGjO,QAC1B,GAAIiO,EAAGnD,MAAO,CACZ,GAAIH,EAAQ,CACVsD,EAAGmI,OAAQ,EACX,IAAIiO,EAAwB,OAAjBpW,EAAGzC,KAAK4K,MACnBnI,EAAGqW,WAAaD,EAAO,QAAU,QAEnCtO,GAAO,mBACHpL,EACE0Z,EACFtO,GAAO,qBAEc,KAAjB9H,EAAGzC,KAAK4K,QACVL,GAAO,WAETA,GAAO,eAGTA,GAAO,cAETA,GAAO,+EACHqO,IAAQnW,EAAGzC,KAAKZ,YAAcqD,EAAGzC,KAAKU,eACxC6J,GAAO,kBAA2BqO,EAAM,QAG5C,GAAwB,kBAAbnW,EAAGjO,SAAyBmkB,IAAgBlW,EAAGjO,OAAOE,KAAO,CACtE,IACIuY,EAAOxK,EAAGyK,MACVC,EAAW1K,EAAG2K,UACd3U,EAAUgK,EAAGjO,OAHF,gBAIX6Y,EAAc5K,EAAGlD,WAAakD,EAAGjH,KAAKsO,YAJ3B,gBAKXwD,EAAiB7K,EAAGjD,cAAgB,gBACpC+N,GAAiB9K,EAAGzC,KAAKwN,UAEzBtB,EAAQ,QAAUiB,GAAY,IAC9B4C,EAAS,QAAU9C,EACvB,IAAkB,IAAdxK,EAAGjO,OAAkB,CACnBiO,EAAGnD,MACLiO,GAAgB,EAEhBhD,GAAO,QAAU,EAAW,cAE1BiE,EAAaA,OACNzG,KAAKwC,GAChBA,EAAM,IACkB,IAApB9H,EAAGgM,cACLlE,GAAO,iBAAoB0D,GAAiB,gBAAkB,oCAA0CxL,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,kBAC9J,IAArB7K,EAAGzC,KAAK0O,WACVnE,GAAO,0CAEL9H,EAAGzC,KAAK2O,UACVpE,GAAO,mDAAsD9H,EAAa,WAAI,YAAc,EAAU,KAExG8H,GAAO,OAEPA,GAAO,OAELqE,GAAQrE,EACZA,EAAMiE,EAAWK,MAGbtE,IAFC9H,EAAGqM,eAAiBvB,EACnB9K,EAAGmI,MACE,+BAAiC,GAAU,OAE3C,uBAAyB,GAAU,oBAGrC,cAAgB,GAAU,oFAK/BL,GAFA9H,EAAGnD,MACDH,EACK,iBAEA,yCAGF,QAAU,EAAW,YAMhC,OAHIsD,EAAGnD,QACLiL,GAAO,0BAEFA,EAET,GAAI9H,EAAGnD,MAAO,CACZ,IAAIyZ,EAAOtW,EAAGnD,MACZ2N,EAAOxK,EAAGyK,MAAQ,EAClBC,EAAW1K,EAAG2K,UAAY,EAC1BlB,EAAQ,OACVzJ,EAAGuW,OAASvW,EAAG7J,QAAQiC,SAAS4H,EAAG/P,KAAKyR,OAAO1B,EAAGjE,KAAKhK,SACvDiO,EAAG/H,OAAS+H,EAAG/H,QAAU+H,EAAGuW,cACrBvW,EAAGnD,MACVmD,EAAGiL,kBAAe5T,GAClByQ,GAAO,wBACPA,GAAO,wBACPA,GAAO,qDACF,CACL,IAAI0C,EAAOxK,EAAGyK,MAEZhB,EAAQ,SADRiB,EAAW1K,EAAG2K,YACgB,IAEhC,GADIwL,IAAKnW,EAAG/H,OAAS+H,EAAG7J,QAAQ+B,IAAI8H,EAAG/H,OAAQke,IAC3CzZ,IAAWsD,EAAGmI,MAAO,MAAM,IAAIrX,MAAM,+BACzCgX,GAAO,aAAe,EAAS,aAEjC,IAII0D,EAJA8B,EAAS,QAAU9C,EACrBM,GAAiB9K,EAAGzC,KAAKwN,UACzByL,EAAkB,GAClBC,EAAkB,GAEhBC,EAAc1W,EAAGjO,OAAO2S,KAC1BiS,EAAejU,MAAMC,QAAQ+T,GAK/B,GAJIC,GAAsC,GAAtBD,EAAYxlB,SAC9BwlB,EAAcA,EAAY,GAC1BC,GAAe,GAEb3W,EAAGjO,OAAOE,MAAQikB,EAAc,CAClC,GAA0B,QAAtBlW,EAAGzC,KAAKqZ,WACV,MAAM,IAAI9lB,MAAM,qDAAuDkP,EAAGjD,cAAgB,8BAC1D,IAAvBiD,EAAGzC,KAAKqZ,aACjBV,GAAe,EACf5X,QAAQ4S,KAAK,6CAA+ClR,EAAGjD,cAAgB,MAGnF,GAAI2Z,EAAa,CACf,GAAI1W,EAAGzC,KAAKsZ,YACV,IAAIC,EAAiB9W,EAAGjH,KAAKmO,cAAclH,EAAGzC,KAAKsZ,YAAaH,GAE9DZ,EAAc9V,EAAG9C,MAAM6H,MAAM2R,GACjC,GAAII,GAAkBH,IAAgC,IAAhBb,GAAyBA,IAAgBD,EAAgBC,GAAe,CAC5G,IAAIlL,EAAc5K,EAAGlD,WAAa,QAChC+N,EAAiB7K,EAAGjD,cAAgB,QAClC6N,EAAc5K,EAAGlD,WAAa,QAChC+N,EAAiB7K,EAAGjD,cAAgB,QACpCga,EAAUJ,EAAe,iBAAmB,gBAE9C,GADA7O,GAAO,QAAW9H,EAAGjH,KAAKge,GAASL,EAAajN,GAAO,GAAS,OAC5DqN,EAAgB,CAClB,IAAIE,EAAY,WAAaxM,EAC3ByM,EAAW,UAAYzM,EACzB1C,GAAO,QAAU,EAAc,aAAe,EAAU,KAC7B,SAAvB9H,EAAGzC,KAAKsZ,cACV/O,GAAO,QAAU,EAAc,iCAAqC,EAAU,MAAQ,EAAc,gBAEtGA,GAAO,QAAU,EAAa,iBAC9B,IAAIoP,EAAkB,GAClBjK,EAAO6J,EACX,GAAI7J,EAGF,IAFA,IAAIkK,EAAOhK,GAAM,EACfC,EAAKH,EAAK/b,OAAS,EACdic,EAAKC,GACV+J,EAAQlK,EAAKE,GAAM,GACfA,IACFrF,GAAO,QAAU,EAAa,qBAC9BoP,GAAmB,KAEM,SAAvBlX,EAAGzC,KAAKsZ,aAAmC,SAATM,IACpCrP,GAAO,QAAU,EAAc,kBAAsB,EAAU,mBAAqB,EAAa,MAAQ,EAAU,MAAQ,EAAU,QAAU,EAAc,aAAe,EAAU,SAE3K,UAATqP,EACFrP,GAAO,QAAU,EAAc,mBAAuB,EAAc,kBAAsB,EAAa,WAAe,EAAU,cAAgB,EAAU,cAAgB,EAAa,UACrK,UAATqP,GAA8B,WAATA,GAC9BrP,GAAO,QAAU,EAAc,oBAAwB,EAAU,iBAAmB,EAAc,mBAAuB,EAAU,OAAS,EAAU,QAAU,EAAU,IAC7J,WAATqP,IACFrP,GAAO,SAAW,EAAU,SAE9BA,GAAO,MAAQ,EAAa,OAAS,EAAU,MAC7B,WAATqP,EACTrP,GAAO,QAAU,EAAU,mBAAuB,EAAU,aAAe,EAAU,cAAgB,EAAa,sBAAwB,EAAU,kBAAsB,EAAU,WAAa,EAAa,YAC5L,QAATqP,EACTrP,GAAO,QAAU,EAAU,cAAkB,EAAU,aAAe,EAAU,eAAiB,EAAa,YAC9E,SAAvB9H,EAAGzC,KAAKsZ,aAAmC,SAATM,IAC3CrP,GAAO,QAAU,EAAc,mBAAuB,EAAc,mBAAuB,EAAc,oBAAwB,EAAU,aAAe,EAAa,OAAS,EAAU,OAIhMA,GAAO,IAAM,EAAoB,QAAU,EAAa,wBACpDiE,EAAaA,OACNzG,KAAKwC,GAChBA,EAAM,IACkB,IAApB9H,EAAGgM,cACLlE,GAAO,iBAAoB0D,GAAiB,QAAU,oCAA0CxL,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,uBAE7K/C,GADE6O,EACK,GAAMD,EAAYrG,KAAK,KAEvB,GAAK,EAEdvI,GAAO,QACkB,IAArB9H,EAAGzC,KAAK0O,WACVnE,GAAO,0BAELA,GADE6O,EACK,GAAMD,EAAYrG,KAAK,KAEvB,GAAK,EAEdvI,GAAO,MAEL9H,EAAGzC,KAAK2O,UACVpE,GAAO,6BAA+B,EAAgB,mCAAsC9H,EAAa,WAAI,YAAc,EAAU,KAEvI8H,GAAO,OAEPA,GAAO,OAELqE,GAAQrE,EACZA,EAAMiE,EAAWK,MAGbtE,IAFC9H,EAAGqM,eAAiBvB,EACnB9K,EAAGmI,MACE,+BAAiC,GAAU,OAE3C,uBAAyB,GAAU,oBAGrC,cAAgB,GAAU,+EAEnCL,GAAO,cACP,IAAImH,EAAcvE,EAAW,QAAWA,EAAW,GAAM,IAAM,aAC7DwE,EAAsBxE,EAAW1K,EAAGiL,YAAYP,GAAY,qBAC9D5C,GAAO,IAAM,EAAU,MAAQ,EAAa,KACvC4C,IACH5C,GAAO,OAAS,EAAgB,mBAElCA,GAAO,IAAM,EAAgB,IAAM,EAAwB,OAAS,EAAa,WAC5E,EACDiE,EAAaA,OACNzG,KAAKwC,GAChBA,EAAM,IACkB,IAApB9H,EAAGgM,cACLlE,GAAO,iBAAoB0D,GAAiB,QAAU,oCAA0CxL,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,uBAE7K/C,GADE6O,EACK,GAAMD,EAAYrG,KAAK,KAEvB,GAAK,EAEdvI,GAAO,QACkB,IAArB9H,EAAGzC,KAAK0O,WACVnE,GAAO,0BAELA,GADE6O,EACK,GAAMD,EAAYrG,KAAK,KAEvB,GAAK,EAEdvI,GAAO,MAEL9H,EAAGzC,KAAK2O,UACVpE,GAAO,6BAA+B,EAAgB,mCAAsC9H,EAAa,WAAI,YAAc,EAAU,KAEvI8H,GAAO,OAEPA,GAAO,OAELqE,GAAQrE,EACZA,EAAMiE,EAAWK,MAGbtE,IAFC9H,EAAGqM,eAAiBvB,EACnB9K,EAAGmI,MACE,+BAAiC,GAAU,OAE3C,uBAAyB,GAAU,oBAGrC,cAAgB,GAAU,+EAGrCL,GAAO,OAGX,GAAI9H,EAAGjO,OAAOE,OAASikB,EACrBpO,GAAO,IAAO9H,EAAG9C,MAAM4H,IAAI7S,KAAKlB,KAAKiP,EAAI,QAAW,IAChD8K,IACFhD,GAAO,qBAELA,GADEwO,EACK,IAEA,QAAU,EAEnBxO,GAAO,OACP2O,GAAmB,SAEhB,CACDzW,EAAGzC,KAAKyV,IAAMhT,EAAGjO,OAAOohB,eAC1B7U,QAAQ4S,KAAK,iGAEf,IAAIZ,EAAOtQ,EAAG9C,MACd,GAAIoT,EAGF,IAFA,IAAIwF,EAAavF,GAAM,EACrBC,EAAKF,EAAKpf,OAAS,EACdqf,EAAKC,GAEV,GADAsF,EAAcxF,EAAKC,GAAM,GACrBsF,EAAgBC,GAAc,CAIhC,GAHIA,EAAYpR,OACdoD,GAAO,QAAW9H,EAAGjH,KAAKoN,cAAc2P,EAAYpR,KAAM+E,GAAU,QAElEzJ,EAAGzC,KAAKsW,cAAgB7T,EAAGqM,cAC7B,GAAwB,UAApByJ,EAAYpR,MAAoB1E,EAAGjO,OAAOgC,WAAY,CACxD,IAAIiC,EAAUgK,EAAGjO,OAAOgC,WAEpByf,EADYjb,OAAO6M,KAAKpP,GAE5B,GAAIwd,EAGF,IAFA,IAAIzD,EAAc2F,GAAM,EACtBjC,EAAKD,EAAKtiB,OAAS,EACdwkB,EAAKjC,QAGWpc,KADjB6V,EAAOlX,EADX+Z,EAAeyD,EAAKkC,GAAM,KAEjBxB,UAEPpM,GAAO,UADHkG,EAAYvE,EAAQzJ,EAAGjH,KAAKsO,YAAY0I,IACZ,mBAAqB,EAAc,MAEjEjI,GADyB,UAAvB9H,EAAGzC,KAAKsW,YACH,IAAO7T,EAAG3C,WAAW6P,EAAKgH,SAAY,IAEtC,IAAO3iB,KAAKE,UAAUyb,EAAKgH,SAAY,IAEhDpM,GAAO,WAIR,GAAwB,SAApBgO,EAAYpR,MAAmBhC,MAAMC,QAAQ3C,EAAGjO,OAAOmB,OAAQ,CACxE,IAAI4gB,EAAO9T,EAAGjO,OAAOmB,MACrB,GAAI4gB,EAGF,IAFA,IAAI5G,EAAMC,GAAM,EACd6G,EAAKF,EAAK5iB,OAAS,EACdic,EAAK6G,GAEV,QAAqB3c,KADrB6V,EAAO4G,EAAK3G,GAAM,IACT+G,QAAuB,CAC9B,IAAIlG,EAAYvE,EAAQ,IAAM0D,EAAK,IACnCrF,GAAO,SAAW,EAAc,mBAAqB,EAAc,MAEjEA,GADyB,UAAvB9H,EAAGzC,KAAKsW,YACH,IAAO7T,EAAG3C,WAAW6P,EAAKgH,SAAY,IAEtC,IAAO3iB,KAAKE,UAAUyb,EAAKgH,SAAY,IAEhDpM,GAAO,MAMjB,IAAIqM,EAAO2B,EAAYnR,MACvB,GAAIwP,EAGF,IAFA,IAAI3F,EAAO4F,GAAM,EACfC,EAAKF,EAAKjjB,OAAS,EACdkjB,EAAKC,GAEV,GADA7F,EAAQ2F,EAAKC,GAAM,GACf2B,EAAevH,GAAQ,CACzB,IAAIP,EAAQO,EAAMzd,KAAKiP,EAAIwO,EAAMnO,QAASyV,EAAYpR,MAClDuJ,IACFnG,GAAO,IAAM,EAAU,IACnBgD,IACF0L,GAAmB,MAU7B,GAJI1L,IACFhD,GAAO,IAAM,EAAoB,IACjC0O,EAAkB,IAEhBV,EAAYpR,OACdoD,GAAO,MACH4O,GAAeA,IAAgBZ,EAAYpR,OAASoS,GAAgB,CACtEhP,GAAO,WACP,IAAI8C,EAAc5K,EAAGlD,WAAa,QAChC+N,EAAiB7K,EAAGjD,cAAgB,QAClCgP,EAAaA,MACjBA,EAAWzG,KAAKwC,GAChBA,EAAM,IACkB,IAApB9H,EAAGgM,cACLlE,GAAO,iBAAoB0D,GAAiB,QAAU,oCAA0CxL,EAAY,UAAI,kBAAqBA,EAAGjH,KAAK2G,eAAemL,GAAmB,uBAE7K/C,GADE6O,EACK,GAAMD,EAAYrG,KAAK,KAEvB,GAAK,EAEdvI,GAAO,QACkB,IAArB9H,EAAGzC,KAAK0O,WACVnE,GAAO,0BAELA,GADE6O,EACK,GAAMD,EAAYrG,KAAK,KAEvB,GAAK,EAEdvI,GAAO,MAEL9H,EAAGzC,KAAK2O,UACVpE,GAAO,6BAA+B,EAAgB,mCAAsC9H,EAAa,WAAI,YAAc,EAAU,KAEvI8H,GAAO,OAEPA,GAAO,OAET,IAAIqE,GAAQrE,EACZA,EAAMiE,EAAWK,MAGbtE,IAFC9H,EAAGqM,eAAiBvB,EACnB9K,EAAGmI,MACE,+BAAiC,GAAU,OAE3C,uBAAyB,GAAU,oBAGrC,cAAgB,GAAU,+EAEnCL,GAAO,MAGPgD,IACFhD,GAAO,mBAELA,GADEwO,EACK,IAEA,QAAU,EAEnBxO,GAAO,OACP2O,GAAmB,MAyC7B,OAnCI3L,IACFhD,GAAO,IAAM,EAAoB,KAE/BwO,GACE5Z,GACFoL,GAAO,6CACPA,GAAO,+CAEPA,GAAO,+BACPA,GAAO,gCAETA,GAAO,yBAEPA,GAAO,QAAU,EAAW,sBAAwB,EAAS,IAE/DA,EAAM9H,EAAGjH,KAAK8O,YAAYC,GACtBwO,IACFxO,EAAM9H,EAAGjH,KAAKmP,iBAAiBJ,EAAKpL,IAkB/BoL,QAGHsP,IAAI,SAASxmB,EAAQhB,EAAOD,GAClC,aAiBA,SAAS0nB,EAAWhX,EAASH,GA8C3B,SAASoX,EAASjX,EAAS+F,EAAUlG,GAEnC,IAAK,IADDqX,EACK1mB,EAAE,EAAGA,EAAEqM,EAAMhM,OAAQL,IAAK,CACjC,IAAI2mB,EAAKta,EAAMrM,GACf,GAAI2mB,EAAG9S,MAAQ0B,EAAU,CACvBmR,EAAYC,EACZ,OAICD,IACHA,GAAc7S,KAAM0B,EAAUzB,UAC9BzH,EAAMoI,KAAKiS,IAGb,IAAIzX,GACFO,QAASA,EACTH,WAAYA,EACZuF,QAAQ,EACR1U,KAAMiN,EACNuH,WAAYrF,EAAWqF,YAEzBgS,EAAU5S,MAAMW,KAAKxF,GACrB5C,EAAMuI,OAAOpF,GAAWP,EAI1B,SAASqG,EAAcC,GACrB,IAAKlJ,EAAM6H,MAAMqB,GAAW,MAAM,IAAItV,MAAM,gBAAkBsV,GAvEhE,IAAIlJ,EAAQhN,KAAKgN,MAEjB,GAAIA,EAAMrL,SAASwO,GACjB,MAAM,IAAIvP,MAAM,WAAauP,EAAU,uBAEzC,IAAKiH,EAAWjN,KAAKgG,GACnB,MAAM,IAAIvP,MAAM,WAAauP,EAAU,8BAEzC,GAAIH,EAAY,CACd,GAAIA,EAAWE,YAA8B/I,IAArB6I,EAAWmP,MACjC,MAAM,IAAIve,MAAM,qDAElB,IAAIsV,EAAWlG,EAAWwE,KAC1B,GAAIhC,MAAMC,QAAQyD,GAAW,CAC3B,IAAIvV,EAAGiV,EAAMM,EAASlV,OACtB,IAAKL,EAAE,EAAGA,EAAEiV,EAAKjV,IAAKsV,EAAcC,EAASvV,IAC7C,IAAKA,EAAE,EAAGA,EAAEiV,EAAKjV,IAAKymB,EAASjX,EAAS+F,EAASvV,GAAIqP,QAEjDkG,GAAUD,EAAcC,GAC5BkR,EAASjX,EAAS+F,EAAUlG,GAG9B,IAAIuJ,GAA6B,IAArBvJ,EAAWuJ,OAAkBvZ,KAAK+G,MAAMwS,MACpD,GAAIA,IAAUvJ,EAAW/L,SACvB,MAAM,IAAIrD,MAAM,qDAElB,IAAIO,EAAa6O,EAAW7O,WACxBA,IACEoY,IACFpY,GACEW,OACEX,GACEY,KAAQ,oFAIhBiO,EAAWD,eAAiB/P,KAAK4L,QAAQzK,GAAY,IAIzD6L,EAAMrL,SAASwO,GAAWnD,EAAM4H,IAAIzE,IAAW,EA0CjD,SAASoX,EAAWpX,GAElB,IAAIP,EAAO5P,KAAKgN,MAAMuI,OAAOpF,GAC7B,OAAOP,EAAOA,EAAKI,WAAahQ,KAAKgN,MAAMrL,SAASwO,KAAY,EASlE,SAASqX,EAAcrX,GAErB,IAAInD,EAAQhN,KAAKgN,aACVA,EAAMrL,SAASwO,UACfnD,EAAM4H,IAAIzE,UACVnD,EAAMuI,OAAOpF,GACpB,IAAK,IAAIxP,EAAE,EAAGA,EAAEqM,EAAMhM,OAAQL,IAE5B,IAAK,IADD8T,EAAQzH,EAAMrM,GAAG8T,MACZjT,EAAE,EAAGA,EAAEiT,EAAMzT,OAAQQ,IAC5B,GAAIiT,EAAMjT,GAAG2O,SAAWA,EAAS,CAC/BsE,EAAM7D,OAAOpP,EAAG,GAChB,OA3HR,IAAI4V,EAAa,yBACbtJ,EAAiBpN,EAAQ,kBAE7BhB,EAAOD,SACLgoB,IAAKN,EACL7kB,IAAKilB,EACLG,OAAQF,KA2HPG,iBAAiB,KAAKC,IAAI,SAASlnB,EAAQhB,EAAOD,GACrD,aAIAC,EAAOD,QAAU,SAAUoI,GACzB,IAAIggB,EAAchgB,EAAId,MAAM8gB,YACxBC,EAAsC,iBAAfD,GACH9lB,KAAM8lB,GACRhgB,EAAI9B,UANP,2CAOOhE,KAPP,6CAUnB8F,EAAIsf,WAAW,iBAEbhmB,YACEqT,KAAM,SACN8N,sBACE9N,KAAM,SACNzQ,UAAY,UACZF,YACEZ,SACEuR,KAAM,UACNtR,QAAS,GAEXA,SACEsR,KAAM,UACNtR,QAAS,GAEXrB,OAAQimB,GAEVxF,sBAAsB,MAI5Bza,EAAImF,MAAM4H,IAAI/Q,WAAWwR,WAAWD,KAAK,uBAGrC2S,IAAI,SAASrnB,EAAQhB,EAAOD,GAClCC,EAAOD,SACHqG,QAAW,0CACXmgB,IAAO,gFACP+B,YAAe,mEACfxT,KAAQ,SACRzQ,UAAc,SACdF,YACI0V,OACI/E,KAAQ,SACR1S,QACMiB,OAAU,0BACVA,OAAU,mBAIxBuf,sBAAwB,QAGtB2F,IAAI,SAASvnB,EAAQhB,EAAOD,GAClCC,EAAOD,SACHqG,QAAW,0CACXmgB,IAAO,0CACPiC,MAAS,0BACTC,aACIC,aACI5T,KAAQ,QACRpR,SAAY,EACZJ,OAAWjB,KAAQ,MAEvBsmB,oBACI7T,KAAQ,UACRtR,QAAW,GAEfolB,4BACI5lB,QACMX,KAAQ,qCACRiiB,QAAW,KAGrBuE,aACIzlB,MACI,QACA,UACA,UACA,OACA,SACA,SACA,WAGR0lB,aACIhU,KAAQ,QACRxR,OAAWwR,KAAQ,UACnBxQ,aAAe,EACfggB,aAGRxP,MAAS,SAAU,WACnB3Q,YACIoiB,KACIzR,KAAQ,SACRzR,OAAU,iBAEd+C,SACI0O,KAAQ,SACRzR,OAAU,OAEdhB,MACIyS,KAAQ,SACRzR,OAAU,iBAEdmlB,OACI1T,KAAQ,UAEZwT,aACIxT,KAAQ,UAEZwP,WACAvgB,YACI+Q,KAAQ,SACRiU,iBAAoB,GAExBxlB,SACIuR,KAAQ,UAEZkU,kBACIlU,KAAQ,UAEZtR,SACIsR,KAAQ,UAEZiU,kBACIjU,KAAQ,UAEZnR,WAAetB,KAAQ,oCACvBuB,WAAevB,KAAQ,4CACvB6B,SACI4Q,KAAQ,SACRzR,OAAU,SAEdse,iBAAqBtf,KAAQ,KAC7BiB,OACIlB,QACMC,KAAQ,MACRA,KAAQ,8BAEdiiB,YAEJ7gB,UAAcpB,KAAQ,oCACtBqB,UAAcrB,KAAQ,4CACtBiC,aACIwQ,KAAQ,UACRwP,SAAW,GAEfphB,UAAcb,KAAQ,KACtBwB,eAAmBxB,KAAQ,oCAC3ByB,eAAmBzB,KAAQ,4CAC3BgC,UAAchC,KAAQ,6BACtBugB,sBAA0BvgB,KAAQ,KAClComB,aACI3T,KAAQ,SACR8N,sBAA0BvgB,KAAQ,KAClCiiB,YAEJngB,YACI2Q,KAAQ,SACR8N,sBAA0BvgB,KAAQ,KAClCiiB,YAEJ7B,mBACI3N,KAAQ,SACR8N,sBAA0BvgB,KAAQ,KAClCiiB,YAEJnhB,cACI2R,KAAQ,SACR8N,sBACIxgB,QACMC,KAAQ,MACRA,KAAQ,gCAItB+B,eAAmB/B,KAAQ,KAC3BY,SACAG,MACI0R,KAAQ,QACRpR,SAAY,EACZY,aAAe,GAEnBwQ,MACI1S,QACMC,KAAQ,8BAENyS,KAAQ,QACRxR,OAAWjB,KAAQ,6BACnBqB,SAAY,EACZY,aAAe,KAI3BjB,QAAYyR,KAAQ,UACpB9R,OAAWX,KAAQ,6BACnBD,OAAWC,KAAQ,6BACnB4B,OAAW5B,KAAQ,6BACnB2B,KAAS3B,KAAQ,MAErBiiB,iBAGE2E,IAAI,SAASjoB,EAAQhB,EAAOD,GA2ClC,SAASwO,EAAG2a,GACV,IAAIC,EAAM7oB,KACN8oB,EAAO/W,EAAMhR,KAAKoL,UAAW,GAKjC,OAAO,IAAInG,QAAQ,SAASC,EAAS8iB,GAYnC,SAASC,EAAY7X,GACnB,IAAI8X,EACJ,IACEA,EAAML,EAAIM,KAAK/X,GACf,MAAOjR,GACP,OAAO6oB,EAAO7oB,GAEhBgpB,EAAKD,GASP,SAASE,EAAWC,GAClB,IAAIH,EACJ,IACEA,EAAML,EAAIS,MAAMD,GAChB,MAAOlpB,GACP,OAAO6oB,EAAO7oB,GAEhBgpB,EAAKD,GAYP,SAASC,EAAKD,GACZ,GAAIA,EAAIK,KAAM,OAAOrjB,EAAQgjB,EAAI5mB,OACjC,IAAIA,EAAQknB,EAAUxoB,KAAK8nB,EAAKI,EAAI5mB,OACpC,OAAIA,GAASmnB,EAAUnnB,GAAeA,EAAM4E,KAAK+hB,EAAaG,GACvDA,EAAW,IAAIM,UAAU,8GACeC,OAAOT,EAAI5mB,OAAS,MAlDrE,GADmB,mBAARumB,IAAoBA,EAAMA,EAAI1c,MAAM2c,EAAKC,KAC/CF,GAA2B,mBAAbA,EAAIM,KAAqB,OAAOjjB,EAAQ2iB,GAE3DI,MA6DJ,SAASO,EAAU7T,GACjB,OAAKA,EACD8T,EAAU9T,GAAaA,EACvBiU,EAAoBjU,IAAQkU,EAAYlU,GAAazH,EAAGlN,KAAKf,KAAM0V,GACnE,mBAAqBA,EAAYmU,EAAe9oB,KAAKf,KAAM0V,GAC3DlD,MAAMC,QAAQiD,GAAaoU,EAAe/oB,KAAKf,KAAM0V,GACrDqU,EAASrU,GAAasU,EAAgBjpB,KAAKf,KAAM0V,GAC9CA,EANUA,EAiBnB,SAASmU,EAAeI,GACtB,IAAIpB,EAAM7oB,KACV,OAAO,IAAIgG,QAAQ,SAAUC,EAAS8iB,GACpCkB,EAAGlpB,KAAK8nB,EAAK,SAAUO,EAAKjY,GAC1B,GAAIiY,EAAK,OAAOL,EAAOK,GACnBjd,UAAUnL,OAAS,IAAGmQ,EAAMY,EAAMhR,KAAKoL,UAAW,IACtDlG,EAAQkL,OAcd,SAAS2Y,EAAepU,GACtB,OAAO1P,QAAQ4O,IAAIc,EAAIV,IAAIuU,EAAWvpB,OAYxC,SAASgqB,EAAgBtU,GAIvB,IAAK,IAHDwU,EAAU,IAAIxU,EAAInN,YAClB2M,EAAO7M,OAAO6M,KAAKQ,GACnByU,KACKxpB,EAAI,EAAGA,EAAIuU,EAAKlU,OAAQL,IAAK,CACpC,IAAIiB,EAAMsT,EAAKvU,GACXypB,EAAUb,EAAUxoB,KAAKf,KAAM0V,EAAI9T,IACnCwoB,GAAWZ,EAAUY,GAO3B,SAAeA,EAASxoB,GAEtBsoB,EAAQtoB,QAAOuF,EACfgjB,EAAS/U,KAAKgV,EAAQnjB,KAAK,SAAUkK,GACnC+Y,EAAQtoB,GAAOuP,MAXwBiZ,EAASxoB,GAC7CsoB,EAAQtoB,GAAO8T,EAAI9T,GAE1B,OAAOoE,QAAQ4O,IAAIuV,GAAUljB,KAAK,WAChC,OAAOijB,IAoBX,SAASV,EAAU9T,GACjB,MAAO,mBAAqBA,EAAIzO,KAWlC,SAAS2iB,EAAYlU,GACnB,MAAO,mBAAqBA,EAAIwT,MAAQ,mBAAqBxT,EAAI2T,MAUnE,SAASM,EAAoBjU,GAC3B,IAAInN,EAAcmN,EAAInN,YACtB,QAAKA,IACD,sBAAwBA,EAAY8hB,MAAQ,sBAAwB9hB,EAAY+hB,aAC7EV,EAAYrhB,EAAYpG,YAWjC,SAAS4nB,EAASQ,GAChB,OAAOliB,QAAUkiB,EAAIhiB,YAtOvB,IAAIwJ,EAAQS,MAAMrQ,UAAU4P,MAM5BrS,EAAOD,QAAUwO,EAAY,QAAIA,EAAGA,GAAKA,EAczCA,EAAGuc,KAAO,SAAUP,GAGlB,SAASQ,IACP,OAAOxc,EAAGlN,KAAKf,KAAMiqB,EAAG/d,MAAMlM,KAAMmM,YAFtC,OADAse,EAAcC,sBAAwBT,EAC/BQ,QAmNHE,IAAI,SAASjqB,EAAQhB,EAAOD,GAClC,aAEAC,EAAOD,QAAU,SAASyO,EAAMzN,EAAGqZ,GACjC,GAAIrZ,IAAMqZ,EAAG,OAAO,EAEpB,IAEInZ,EAFAiqB,EAAOpY,MAAMC,QAAQhS,GACrBoqB,EAAOrY,MAAMC,QAAQqH,GAGzB,GAAI8Q,GAAQC,EAAM,CAChB,GAAIpqB,EAAEO,QAAU8Y,EAAE9Y,OAAQ,OAAO,EACjC,IAAKL,EAAI,EAAGA,EAAIF,EAAEO,OAAQL,IACxB,IAAKuN,EAAMzN,EAAEE,GAAImZ,EAAEnZ,IAAK,OAAO,EACjC,OAAO,EAGT,GAAIiqB,GAAQC,EAAM,OAAO,EAEzB,GAAIpqB,GAAKqZ,GAAkB,iBAANrZ,GAA+B,iBAANqZ,EAAgB,CAC5D,IAAI5E,EAAO7M,OAAO6M,KAAKzU,GACvB,GAAIyU,EAAKlU,SAAWqH,OAAO6M,KAAK4E,GAAG9Y,OAAQ,OAAO,EAElD,IAAI8pB,EAAQrqB,aAAasqB,KACrBC,EAAQlR,aAAaiR,KACzB,GAAID,GAASE,EAAO,OAAOvqB,EAAEwqB,WAAanR,EAAEmR,UAC5C,GAAIH,GAASE,EAAO,OAAO,EAE3B,IAAIE,EAAUzqB,aAAagK,OACvB0gB,EAAUrR,aAAarP,OAC3B,GAAIygB,GAAWC,EAAS,OAAO1qB,EAAE2qB,YAActR,EAAEsR,WACjD,GAAIF,GAAWC,EAAS,OAAO,EAE/B,IAAKxqB,EAAI,EAAGA,EAAIuU,EAAKlU,OAAQL,IAC3B,IAAK0H,OAAOlG,UAAUkpB,eAAetqB,KAAK+Y,EAAG5E,EAAKvU,IAAK,OAAO,EAEhE,IAAKA,EAAI,EAAGA,EAAIuU,EAAKlU,OAAQL,IAC3B,IAAIuN,EAAMzN,EAAEyU,EAAKvU,IAAKmZ,EAAE5E,EAAKvU,KAAM,OAAO,EAE5C,OAAO,EAGT,OAAO,QAGH2qB,IAAI,SAAS5qB,EAAQhB,EAAOD,GAClC,aAuDA,SAAS8rB,EAAUle,EAAMme,EAAI3pB,EAAQ+R,EAASC,EAAYC,EAAeC,EAAelE,EAAcmE,GACpG,GAAInS,GAA2B,iBAAVA,IAAuB2Q,MAAMC,QAAQ5Q,GAAS,CACjE2pB,EAAG3pB,EAAQ+R,EAASC,EAAYC,EAAeC,EAAelE,EAAcmE,GAC5E,IAAK,IAAIpS,KAAOC,EAAQ,CACtB,IAAIgE,EAAMhE,EAAOD,GACjB,GAAI4Q,MAAMC,QAAQ5M,IAChB,GAAIjE,KAAO8R,EAAS+X,cAClB,IAAK,IAAI9qB,EAAE,EAAGA,EAAEkF,EAAI7E,OAAQL,IAC1B4qB,EAAUle,EAAMme,EAAI3lB,EAAIlF,GAAIiT,EAAU,IAAMhS,EAAM,IAAMjB,EAAGkT,EAAYD,EAAShS,EAAKC,EAAQlB,QAE5F,GAAIiB,KAAO8R,EAASgY,eACzB,GAAI7lB,GAAqB,iBAAPA,EAChB,IAAK,IAAIuT,KAAQvT,EACf0lB,EAAUle,EAAMme,EAAI3lB,EAAIuT,GAAOxF,EAAU,IAAMhS,EAAM,IAAM+pB,EAAcvS,GAAOvF,EAAYD,EAAShS,EAAKC,EAAQuX,QAE7GxX,KAAO8R,EAAS/R,UAAa0L,EAAKsG,WAAa/R,KAAO8R,EAASkY,gBACxEL,EAAUle,EAAMme,EAAI3lB,EAAK+N,EAAU,IAAMhS,EAAKiS,EAAYD,EAAShS,EAAKC,KAOhF,SAAS8pB,EAAc3iB,GACrB,OAAOA,EAAImK,QAAQ,KAAM,MAAMA,QAAQ,MAAO,MA7EhD,IAAIO,EAAWhU,EAAOD,QAAU,SAAUoC,EAAQwL,EAAMme,GACnC,mBAARne,IACTme,EAAKne,EACLA,MAEFke,EAAUle,EAAMme,EAAI3pB,EAAQ,GAAIA,IAIlC6R,EAAS/R,UACP0f,iBAAiB,EACjBre,OAAO,EACPJ,UAAU,EACV0f,sBAAsB,EACtBxe,eAAe,EACfJ,KAAK,GAGPgQ,EAAS+X,eACPzoB,OAAO,EACPN,OAAO,EACPZ,OAAO,EACP6B,OAAO,GAGT+P,EAASgY,eACPvD,aAAa,EACbtkB,YAAY,EACZse,mBAAmB,EACnBtf,cAAc,GAGhB6Q,EAASkY,cACP9oB,MAAM,EACNH,OAAO,EACPoB,UAAU,EACVd,SAAS,EACTC,SAAS,EACTwlB,kBAAkB,EAClBD,kBAAkB,EAClBhlB,YAAY,EACZJ,WAAW,EACXC,WAAW,EACXM,SAAS,EACTb,QAAQ,EACRI,UAAU,EACVC,UAAU,EACVY,aAAa,EACbT,eAAe,EACfC,eAAe,QA+BXqoB,IAAI,SAASnrB,EAAQhB,EAAOD,GAClC,IAAIqsB,EAAuB,oBAATzqB,KAAuBA,KAAOX,EAAQ,WAExDhB,EAAOD,QAAU,SAAUiW,EAAKrI,GACvBA,IAAMA,MACS,mBAATA,IAAqBA,GAAS0e,IAAK1e,IAC9C,IAAI2e,EAAQ3e,EAAK2e,OAAS,GACL,iBAAVA,IAAoBA,EAAQxZ,MAAMwZ,EAAM,GAAG7L,KAAK,MAC3D,IAAI8L,EAAiC,kBAAhB5e,EAAK4e,QAAwB5e,EAAK4e,OACnDC,EAAW7e,EAAK6e,UAAY,SAAStqB,EAAKS,GAAS,OAAOA,GAE1D0pB,EAAM1e,EAAK0e,KAAO,SAAWvsB,GAC7B,OAAO,SAAU2sB,GACb,OAAO,SAAU1rB,EAAGqZ,GAGhB,OAAOta,GAFMoC,IAAKnB,EAAG4B,MAAO8pB,EAAK1rB,KACpBmB,IAAKkY,EAAGzX,MAAO8pB,EAAKrS,QAI1CzM,EAAK0e,KAEJK,KACJ,OAAO,SAAU7qB,EAAW8qB,EAAQzqB,EAAKuqB,EAAM5R,GAC3C,IAAI+R,EAASN,EAAS,KAAO,IAAIxZ,MAAM+H,EAAQ,GAAG4F,KAAK6L,GAAU,GAC7DO,EAAiBP,EAAQ,KAAO,IAQpC,GANIG,GAAQA,EAAKK,QAAiC,mBAAhBL,EAAKK,SACnCL,EAAOA,EAAKK,eAKHrlB,KAFbglB,EAAOD,EAASnrB,KAAKsrB,EAAQzqB,EAAKuqB,IAElC,CAGA,GAAoB,iBAATA,GAA8B,OAATA,EAC5B,OAAOL,EAAKvqB,UAAU4qB,GAE1B,GAAI1Z,EAAQ0Z,GAAO,CAEf,IAAK,IADDvU,KACKjX,EAAI,EAAGA,EAAIwrB,EAAKnrB,OAAQL,IAAK,CAClC,IAAI4R,EAAOhR,EAAU4qB,EAAMxrB,EAAGwrB,EAAKxrB,GAAI4Z,EAAM,IAAMuR,EAAKvqB,UAAU,MAClEqW,EAAIxC,KAAKkX,EAASN,EAAQzZ,GAE9B,MAAO,IAAMqF,EAAIuI,KAAK,KAAOmM,EAAS,IAGtC,IAA4B,IAAxBF,EAAKnL,QAAQkL,GAAc,CAC3B,GAAIF,EAAQ,OAAOH,EAAKvqB,UAAU,aAClC,MAAM,IAAIkoB,UAAU,yCAEnB2C,EAAKhX,KAAK+W,GAIf,IAAK,IAFDjX,EAAOuX,EAAWN,GAAMO,KAAKX,GAAOA,EAAII,IACxCvU,KACKjX,EAAI,EAAGA,EAAIuU,EAAKlU,OAAQL,IAAK,CAClC,IACI0B,EAAQd,EAAU4qB,EADlBvqB,EAAMsT,EAAKvU,GACkBwrB,EAAKvqB,GAAM2Y,EAAM,GAElD,GAAIlY,EAAJ,CAEA,IAAIsqB,EAAWb,EAAKvqB,UAAUK,GACxB2qB,EACAlqB,EAENuV,EAAIxC,KAAKkX,EAASN,EAAQW,IAG9B,OADAP,EAAKxb,OAAOwb,EAAKnL,QAAQkL,GAAO,GACzB,IAAMvU,EAAIuI,KAAK,KAAOmM,EAAS,OAEzC9Y,GAAIkC,GAAO,GAAIA,EAAK,IAG7B,IAAIjD,EAAUD,MAAMC,SAAW,SAAUma,GACrC,MAA+B,sBAArBxB,SAASrqB,KAAK6rB,IAGxBH,EAAapkB,OAAO6M,MAAQ,SAAUQ,GACtC,IAAImX,EAAMxkB,OAAOlG,UAAUkpB,gBAAkB,WAAc,OAAO,GAC9DnW,KACJ,IAAK,IAAItT,KAAO8T,EACRmX,EAAI9rB,KAAK2U,EAAK9T,IAAMsT,EAAKE,KAAKxT,GAEtC,OAAOsT,KAGR4X,QAAU,KAAKC,IAAI,SAASrsB,EAAQhB,EAAOD,GAC9CA,EAAQ6B,MAAQZ,EAAQ,eACxBjB,EAAQ8B,UAAYb,EAAQ,qBAEzBssB,cAAc,GAAGC,kBAAkB,KAAKC,IAAI,SAASxsB,EAAQhB,EAAOD,GACvE,IAAI0tB,EACAC,EAWAC,EA4IAhrB,EAtJAirB,GACIC,IAAM,IACNC,KAAM,KACNC,IAAM,IACN3T,EAAM,KACNta,EAAM,KACNY,EAAM,KACNC,EAAM,KACNF,EAAM,MAIVkO,EAAQ,SAAUqf,GAEd,MACIrD,KAAS,cACTziB,QAAS8lB,EACTP,GAASA,EACTE,KAASA,IAIjBnE,EAAO,SAAU9Y,GAWb,OATIA,GAAKA,IAAMgd,GACX/e,EAAM,aAAe+B,EAAI,iBAAmBgd,EAAK,KAMrDA,EAAKC,EAAKM,OAAOR,GACjBA,GAAM,EACCC,GAGXtW,EAAS,WAEL,IAAIA,EACA8W,EAAS,GAMb,IAJW,MAAPR,IACAQ,EAAS,IACT1E,EAAK,MAEFkE,GAAM,KAAOA,GAAM,KACtBQ,GAAUR,EACVlE,IAEJ,GAAW,MAAPkE,EAEA,IADAQ,GAAU,IACH1E,KAAUkE,GAAM,KAAOA,GAAM,KAChCQ,GAAUR,EAGlB,GAAW,MAAPA,GAAqB,MAAPA,EAOd,IANAQ,GAAUR,EACVlE,IACW,MAAPkE,GAAqB,MAAPA,IACdQ,GAAUR,EACVlE,KAEGkE,GAAM,KAAOA,GAAM,KACtBQ,GAAUR,EACVlE,IAIR,GADApS,GAAU8W,EACLC,SAAS/W,GAGV,OAAOA,EAFPzI,EAAM,eAMduf,EAAS,WAEL,IAAIE,EACAntB,EAEAotB,EADAH,EAAS,GAIb,GAAW,MAAPR,EACA,KAAOlE,KAAQ,CACX,GAAW,MAAPkE,EAEA,OADAlE,IACO0E,EACJ,GAAW,OAAPR,EAEP,GADAlE,IACW,MAAPkE,EAAY,CAEZ,IADAW,EAAQ,EACHptB,EAAI,EAAGA,EAAI,IACZmtB,EAAME,SAAS9E,IAAQ,IAClB2E,SAASC,IAFCntB,GAAK,EAKpBotB,EAAgB,GAARA,EAAaD,EAEzBF,GAAUlE,OAAOuE,aAAaF,OAC3B,CAAA,GAA2B,iBAAhBT,EAAQF,GAGtB,MAFAQ,GAAUN,EAAQF,QAKtBQ,GAAUR,EAItB/e,EAAM,eAGV6f,EAAQ,WAIJ,KAAOd,GAAMA,GAAM,KACflE,KAIRiF,EAAO,WAIH,OAAQf,GACR,IAAK,IAKD,OAJAlE,EAAK,KACLA,EAAK,KACLA,EAAK,KACLA,EAAK,MACE,EACX,IAAK,IAMD,OALAA,EAAK,KACLA,EAAK,KACLA,EAAK,KACLA,EAAK,KACLA,EAAK,MACE,EACX,IAAK,IAKD,OAJAA,EAAK,KACLA,EAAK,KACLA,EAAK,KACLA,EAAK,KACE,KAEX7a,EAAM,eAAiB+e,EAAK,MAKhCzW,EAAQ,WAIJ,IAAIA,KAEJ,GAAW,MAAPyW,EAAY,CAGZ,GAFAlE,EAAK,KACLgF,IACW,MAAPd,EAEA,OADAlE,EAAK,KACEvS,EAEX,KAAOyW,GAAI,CAGP,GAFAzW,EAAMvB,KAAK/S,KACX6rB,IACW,MAAPd,EAEA,OADAlE,EAAK,KACEvS,EAEXuS,EAAK,KACLgF,KAGR7f,EAAM,cAGVuI,EAAS,WAIL,IAAIhV,EACAgV,KAEJ,GAAW,MAAPwW,EAAY,CAGZ,GAFAlE,EAAK,KACLgF,IACW,MAAPd,EAEA,OADAlE,EAAK,KACEtS,EAEX,KAAOwW,GAAI,CASP,GARAxrB,EAAMgsB,IACNM,IACAhF,EAAK,KACD7gB,OAAOgjB,eAAetqB,KAAK6V,EAAQhV,IACnCyM,EAAM,kBAAoBzM,EAAM,KAEpCgV,EAAOhV,GAAOS,IACd6rB,IACW,MAAPd,EAEA,OADAlE,EAAK,KACEtS,EAEXsS,EAAK,KACLgF,KAGR7f,EAAM,eAGdhM,EAAQ,WAMJ,OADA6rB,IACQd,GACR,IAAK,IACD,OAAOxW,IACX,IAAK,IACD,OAAOD,IACX,IAAK,IACD,OAAOiX,IACX,IAAK,IACD,OAAO9W,IACX,QACI,OAAOsW,GAAM,KAAOA,GAAM,IAAMtW,IAAWqX,MAOnDzuB,EAAOD,QAAU,SAAU8O,EAAQ6f,GAC/B,IAAIniB,EAiBJ,OAfAohB,EAAO9e,EACP4e,EAAK,EACLC,EAAK,IACLnhB,EAAS5J,IACT6rB,IACId,GACA/e,EAAM,gBASgB,mBAAZ+f,EAA0B,SAASC,EAAKC,EAAQ1sB,GAC1D,IAAIuT,EAAG7N,EAAGjF,EAAQisB,EAAO1sB,GACzB,GAAIS,GAA0B,iBAAVA,EAChB,IAAK8S,KAAK9S,EACFgG,OAAOlG,UAAUkpB,eAAetqB,KAAKsB,EAAO8S,UAElChO,KADVG,EAAI+mB,EAAKhsB,EAAO8S,IAEZ9S,EAAM8S,GAAK7N,SAEJjF,EAAM8S,IAK7B,OAAOiZ,EAAQrtB,KAAKutB,EAAQ1sB,EAAKS,KAClCmR,GAAIvH,GAAS,IAAOA,QAGrBsiB,IAAI,SAAS7tB,EAAQhB,EAAOD,GAgBlC,SAAS+uB,EAAMZ,GAOX,OADAa,EAAUC,UAAY,EACfD,EAAUtkB,KAAKyjB,GAAU,IAAMA,EAAOza,QAAQsb,EAAW,SAAUhuB,GACtE,IAAI2P,EAAI1K,EAAKjF,GACb,MAAoB,iBAAN2P,EAAiBA,EAC3B,OAAS,OAAS3P,EAAEqV,WAAW,GAAGsV,SAAS,KAAKrZ,OAAO,KAC1D,IAAM,IAAM6b,EAAS,IAG9B,SAAS5kB,EAAIpH,EAAK0sB,GAEd,IAAI3tB,EACAwU,EACA7N,EACAtG,EAEA2tB,EADAC,EAAOC,EAEPxsB,EAAQisB,EAAO1sB,GAenB,OAZIS,GAA0B,iBAAVA,GACY,mBAAjBA,EAAMmqB,SACjBnqB,EAAQA,EAAMmqB,OAAO5qB,IAKN,mBAARktB,IACPzsB,EAAQysB,EAAI/tB,KAAKutB,EAAQ1sB,EAAKS,WAInBA,GACX,IAAK,SACD,OAAOmsB,EAAMnsB,GAEjB,IAAK,SAED,OAAOwrB,SAASxrB,GAASqnB,OAAOrnB,GAAS,OAE7C,IAAK,UACL,IAAK,OAID,OAAOqnB,OAAOrnB,GAElB,IAAK,SACD,IAAKA,EAAO,MAAO,OAKnB,GAJAwsB,GAAOvC,EACPqC,KAG+C,mBAA3CtmB,OAAOlG,UAAUipB,SAASlf,MAAM7J,GAA6B,CAE7D,IADArB,EAASqB,EAAMrB,OACVL,EAAI,EAAGA,EAAIK,EAAQL,GAAK,EACzBguB,EAAQhuB,GAAKqI,EAAIrI,EAAG0B,IAAU,OASlC,OAJAiF,EAAuB,IAAnBqnB,EAAQ3tB,OAAe,KAAO6tB,EAC9B,MAAQA,EAAMF,EAAQxO,KAAK,MAAQ0O,GAAO,KAAOD,EAAO,IACxD,IAAMD,EAAQxO,KAAK,KAAO,IAC9B0O,EAAMD,EACCtnB,EAKX,GAAIwnB,GAAsB,iBAARA,EAEd,IADA9tB,EAAS8tB,EAAI9tB,OACRL,EAAI,EAAGA,EAAIK,EAAQL,GAAK,EAER,iBADjBwU,EAAI2Z,EAAInuB,MAEJ2G,EAAI0B,EAAImM,EAAG9S,KAEPssB,EAAQvZ,KAAKoZ,EAAMrZ,IAAM0Z,EAAM,KAAO,KAAOvnB,QAOzD,IAAK6N,KAAK9S,EACFgG,OAAOlG,UAAUkpB,eAAetqB,KAAKsB,EAAO8S,KAC5C7N,EAAI0B,EAAImM,EAAG9S,KAEPssB,EAAQvZ,KAAKoZ,EAAMrZ,IAAM0Z,EAAM,KAAO,KAAOvnB,GAajE,OAJAA,EAAuB,IAAnBqnB,EAAQ3tB,OAAe,KAAO6tB,EAC9B,MAAQA,EAAMF,EAAQxO,KAAK,MAAQ0O,GAAO,KAAOD,EAAO,IACxD,IAAMD,EAAQxO,KAAK,KAAO,IAC9B0O,EAAMD,EACCtnB,GAzHf,IAEIunB,EACAvC,EAUAwC,EAZAL,EAAY,2HAGZ/oB,GACIqpB,KAAM,MACNC,KAAM,MACNC,KAAM,MACNC,KAAM,MACNC,KAAM,MACN5B,IAAM,MACNC,KAAM,QAkHd9tB,EAAOD,QAAU,SAAU4C,EAAO6pB,EAAUF,GACxC,IAAIrrB,EAMJ,GALAkuB,EAAM,GACNvC,EAAS,GAIY,iBAAVN,EACP,IAAKrrB,EAAI,EAAGA,EAAIqrB,EAAOrrB,GAAK,EACxB2rB,GAAU,QAIQ,iBAAVN,IACZM,EAASN,GAMb,GADA8C,EAAM5C,EACFA,GAAgC,mBAAbA,IACC,iBAAbA,GAAoD,iBAApBA,EAASlrB,QAChD,MAAM,IAAIJ,MAAM,kBAKpB,OAAOoI,EAAI,IAAKwK,GAAInR,UAGlB+sB,IAAI,SAAS1uB,EAAQhB,EAAOD,IAClC,SAAWK,IAET,SAAS+L,GAgEV,SAASwC,EAAMmG,GACd,MAAM,IAAI6a,WAAW1nB,EAAO6M,IAW7B,SAASQ,EAAI2B,EAAOsT,GAGnB,IAFA,IAAIjpB,EAAS2V,EAAM3V,OACfiL,KACGjL,KACNiL,EAAOjL,GAAUipB,EAAGtT,EAAM3V,IAE3B,OAAOiL,EAaR,SAASqjB,EAAU1B,EAAQ3D,GAC1B,IAAIjY,EAAQ4b,EAAOlsB,MAAM,KACrBuK,EAAS,GAWb,OAVI+F,EAAMhR,OAAS,IAGlBiL,EAAS+F,EAAM,GAAK,IACpB4b,EAAS5b,EAAM,IAMT/F,EADO+I,GAFd4Y,EAASA,EAAOza,QAAQoc,EAAiB,MACrB7tB,MAAM,KACAuoB,GAAI9J,KAAK,KAiBpC,SAASqP,EAAW5B,GAMnB,IALA,IAGIvrB,EACAotB,EAJAC,KACAC,EAAU,EACV3uB,EAAS4sB,EAAO5sB,OAGb2uB,EAAU3uB,IAChBqB,EAAQurB,EAAO9X,WAAW6Z,OACb,OAAUttB,GAAS,OAAUstB,EAAU3uB,EAG3B,QAAX,OADbyuB,EAAQ7B,EAAO9X,WAAW6Z,OAEzBD,EAAOta,OAAe,KAAR/S,IAAkB,KAAe,KAARotB,GAAiB,QAIxDC,EAAOta,KAAK/S,GACZstB,KAGDD,EAAOta,KAAK/S,GAGd,OAAOqtB,EAWR,SAASE,EAAWjZ,GACnB,OAAO3B,EAAI2B,EAAO,SAAStU,GAC1B,IAAIqtB,EAAS,GAOb,OANIrtB,EAAQ,QAEXqtB,GAAUG,GADVxtB,GAAS,SAC8B,GAAK,KAAQ,OACpDA,EAAQ,MAAiB,KAARA,GAElBqtB,GAAUG,EAAmBxtB,KAE3B8d,KAAK,IAYT,SAAS2P,EAAaC,GACrB,OAAIA,EAAY,GAAK,GACbA,EAAY,GAEhBA,EAAY,GAAK,GACbA,EAAY,GAEhBA,EAAY,GAAK,GACbA,EAAY,GAEbC,EAcR,SAASC,EAAaC,EAAOC,GAG5B,OAAOD,EAAQ,GAAK,IAAMA,EAAQ,MAAgB,GAARC,IAAc,GAQzD,SAASC,EAAMC,EAAOC,EAAWC,GAChC,IAAIpb,EAAI,EAGR,IAFAkb,EAAQE,EAAYC,EAAMH,EAAQI,GAAQJ,GAAS,EACnDA,GAASG,EAAMH,EAAQC,GACOD,EAAQK,EAAgBC,GAAQ,EAAGxb,GAAK6a,EACrEK,EAAQG,EAAMH,EAAQK,GAEvB,OAAOF,EAAMrb,GAAKub,EAAgB,GAAKL,GAASA,EAAQO,IAUzD,SAASC,EAAOC,GAEf,IAEIlZ,EAIAmZ,EACAvvB,EACA8N,EACA0hB,EACAC,EACA9b,EACA+a,EACA/vB,EAEA+wB,EAfAxB,KACAyB,EAAcL,EAAM9vB,OAEpBL,EAAI,EACJP,EAAIgxB,EACJC,EAAOC,EAqBX,KALAP,EAAQD,EAAMS,YAAYC,IACd,IACXT,EAAQ,GAGJvvB,EAAI,EAAGA,EAAIuvB,IAASvvB,EAEpBsvB,EAAMhb,WAAWtU,IAAM,KAC1B6M,EAAM,aAEPqhB,EAAOta,KAAK0b,EAAMhb,WAAWtU,IAM9B,IAAK8N,EAAQyhB,EAAQ,EAAIA,EAAQ,EAAI,EAAGzhB,EAAQ6hB,GAAwC,CAOvF,IAAKH,EAAOrwB,EAAGswB,EAAI,EAAG9b,EAAI6a,EAErB1gB,GAAS6hB,GACZ9iB,EAAM,mBAGP6hB,EAAQJ,EAAagB,EAAMhb,WAAWxG,QAEzB0gB,GAAQE,EAAQM,GAAOiB,EAAS9wB,GAAKswB,KACjD5iB,EAAM,YAGP1N,GAAKuvB,EAAQe,EACb9wB,EAAIgV,GAAKkc,EAAOK,EAAQvc,GAAKkc,EAAOV,EAAOA,EAAOxb,EAAIkc,IAElDnB,EAAQ/vB,GAfuCgV,GAAK6a,EAoBpDiB,EAAIT,EAAMiB,GADdP,EAAalB,EAAO7vB,KAEnBkO,EAAM,YAGP4iB,GAAKC,EAKNG,EAAOjB,EAAMzvB,EAAIqwB,EADjBpZ,EAAM8X,EAAO1uB,OAAS,EACc,GAARgwB,GAIxBR,EAAM7vB,EAAIiX,GAAO6Z,EAASrxB,GAC7BiO,EAAM,YAGPjO,GAAKowB,EAAM7vB,EAAIiX,GACfjX,GAAKiX,EAGL8X,EAAO9e,OAAOjQ,IAAK,EAAGP,GAIvB,OAAOwvB,EAAWF,GAUnB,SAASiC,EAAOb,GACf,IAAI1wB,EACAiwB,EACAuB,EACAC,EACAR,EACA7vB,EACAksB,EACAoE,EACA3c,EACAhV,EACA4xB,EAGAZ,EAEAa,EACAd,EACAe,EANAvC,KAoBJ,IARAyB,GAHAL,EAAQtB,EAAWsB,IAGC9vB,OAGpBZ,EAAIgxB,EACJf,EAAQ,EACRgB,EAAOC,EAGF9vB,EAAI,EAAGA,EAAI2vB,IAAe3vB,GAC9BuwB,EAAejB,EAAMtvB,IACF,KAClBkuB,EAAOta,KAAKya,EAAmBkC,IAejC,IAXAH,EAAiBC,EAAcnC,EAAO1uB,OAMlC6wB,GACHnC,EAAOta,KAAKoc,GAINI,EAAiBT,GAAa,CAIpC,IAAKzD,EAAI+D,EAAQjwB,EAAI,EAAGA,EAAI2vB,IAAe3vB,GAC1CuwB,EAAejB,EAAMtvB,KACDpB,GAAK2xB,EAAerE,IACvCA,EAAIqE,GAcN,IAPIrE,EAAIttB,EAAIowB,GAAOiB,EAASpB,IAD5B2B,EAAwBJ,EAAiB,KAExCvjB,EAAM,YAGPgiB,IAAU3C,EAAIttB,GAAK4xB,EACnB5xB,EAAIstB,EAEClsB,EAAI,EAAGA,EAAI2vB,IAAe3vB,EAO9B,IANAuwB,EAAejB,EAAMtvB,IAEFpB,KAAOiwB,EAAQoB,GACjCpjB,EAAM,YAGH0jB,GAAgB3xB,EAAG,CAEtB,IAAK0xB,EAAIzB,EAAOlb,EAAI6a,EACnB7vB,EAAIgV,GAAKkc,EAAOK,EAAQvc,GAAKkc,EAAOV,EAAOA,EAAOxb,EAAIkc,IAClDS,EAAI3xB,GAFqCgV,GAAK6a,EAKlDiC,EAAUH,EAAI3xB,EACd+wB,EAAalB,EAAO7vB,EACpBuvB,EAAOta,KACNya,EAAmBI,EAAa9vB,EAAI8xB,EAAUf,EAAY,KAE3DY,EAAItB,EAAMyB,EAAUf,GAGrBxB,EAAOta,KAAKya,EAAmBI,EAAa6B,EAAG,KAC/CT,EAAOjB,EAAMC,EAAO2B,EAAuBJ,GAAkBC,GAC7DxB,EAAQ,IACNuB,IAIFvB,IACAjwB,EAGH,OAAOsvB,EAAOvP,KAAK,IAcpB,SAAS+R,EAAUpB,GAClB,OAAOxB,EAAUwB,EAAO,SAASlD,GAChC,OAAOuE,EAAchoB,KAAKyjB,GACvBiD,EAAOjD,EAAO7b,MAAM,GAAGqgB,eACvBxE,IAeL,SAASyE,EAAQvB,GAChB,OAAOxB,EAAUwB,EAAO,SAASlD,GAChC,OAAO0E,EAAcnoB,KAAKyjB,GACvB,OAAS+D,EAAO/D,GAChBA,IAvdL,IAAI2E,EAAgC,iBAAX9yB,GAAuBA,IAC9CA,EAAQ+yB,UAAY/yB,EAClBgzB,EAA8B,iBAAV/yB,GAAsBA,IAC5CA,EAAO8yB,UAAY9yB,EACjBgzB,EAA8B,iBAAV5yB,GAAsBA,EAE7C4yB,EAAW5yB,SAAW4yB,GACtBA,EAAW7yB,SAAW6yB,GACtBA,EAAW3yB,OAAS2yB,IAEpB7mB,EAAO6mB,GAQR,IAAIC,EAiCJ/wB,EA9BA6vB,EAAS,WAGTzB,EAAO,GACP0B,EAAO,EACPf,EAAO,GACPC,EAAO,GACPH,EAAO,IACPa,EAAc,GACdF,EAAW,IACXI,EAAY,IAGZW,EAAgB,QAChBG,EAAgB,eAChB/C,EAAkB,4BAGlB5nB,GACCirB,SAAY,kDACZC,YAAa,iDACbC,gBAAiB,iBAIlBpC,EAAgBV,EAAO0B,EACvBlB,EAAQpU,KAAKoU,MACbX,EAAqBnG,OAAOuE,aAidrB,GAnCP0E,GAMCI,QAAW,QAQXC,MACCnC,OAAUrB,EACVmC,OAAU/B,GAEXiB,OAAUA,EACVc,OAAUA,EACVU,QAAWA,EACXH,UAAaA,GAcHK,GAAeE,EACzB,GAAI/yB,EAAOD,SAAW8yB,EAErBE,EAAWhzB,QAAUkzB,OAGrB,IAAK/wB,KAAO+wB,EACXA,EAAStH,eAAezpB,KAAS2wB,EAAY3wB,GAAO+wB,EAAS/wB,SAK/DiK,EAAK8mB,SAAWA,GAGhB3yB,QAECe,KAAKf,KAAuB,oBAAXF,OAAyBA,OAAyB,oBAATC,KAAuBA,KAAyB,oBAAXF,OAAyBA,gBACrHozB,IAAI,SAASvyB,EAAQhB,EAAOD,GAsBlC,aAKA,SAAS4rB,EAAe3V,EAAK0D,GAC3B,OAAO/Q,OAAOlG,UAAUkpB,eAAetqB,KAAK2U,EAAK0D,GAGnD1Z,EAAOD,QAAU,SAASyzB,EAAIC,EAAKC,EAAIC,GACrCF,EAAMA,GAAO,IACbC,EAAKA,GAAM,IACX,IAAI1d,KAEJ,GAAkB,iBAAPwd,GAAiC,IAAdA,EAAGlyB,OAC/B,OAAO0U,EAGT,IAAI4d,EAAS,MACbJ,EAAKA,EAAGxxB,MAAMyxB,GAEd,IAAII,EAAU,IACVF,GAAsC,iBAApBA,EAAQE,UAC5BA,EAAUF,EAAQE,SAGpB,IAAI3d,EAAMsd,EAAGlyB,OAETuyB,EAAU,GAAK3d,EAAM2d,IACvB3d,EAAM2d,GAGR,IAAK,IAAI5yB,EAAI,EAAGA,EAAIiV,IAAOjV,EAAG,CAC5B,IAEI6yB,EAAMC,EAAMte,EAAG7N,EAFfslB,EAAIsG,EAAGvyB,GAAGwS,QAAQmgB,EAAQ,OAC1BI,EAAM9G,EAAE3L,QAAQmS,GAGhBM,GAAO,GACTF,EAAO5G,EAAE+G,OAAO,EAAGD,GACnBD,EAAO7G,EAAE+G,OAAOD,EAAM,KAEtBF,EAAO5G,EACP6G,EAAO,IAGTte,EAAI4E,mBAAmByZ,GACvBlsB,EAAIyS,mBAAmB0Z,GAElBpI,EAAe3V,EAAKP,GAEd1C,EAAQiD,EAAIP,IACrBO,EAAIP,GAAGC,KAAK9N,GAEZoO,EAAIP,IAAMO,EAAIP,GAAI7N,GAJlBoO,EAAIP,GAAK7N,EAQb,OAAOoO,GAGT,IAAIjD,EAAUD,MAAMC,SAAW,SAAUmhB,GACvC,MAA8C,mBAAvCvrB,OAAOlG,UAAUipB,SAASrqB,KAAK6yB,SAGlCC,IAAI,SAASnzB,EAAQhB,EAAOD,GAsBlC,aAgDA,SAASuV,EAAK4e,EAAIp0B,GAChB,GAAIo0B,EAAG5e,IAAK,OAAO4e,EAAG5e,IAAIxV,GAE1B,IAAK,IADD2R,KACKxQ,EAAI,EAAGA,EAAIizB,EAAG5yB,OAAQL,IAC7BwQ,EAAIiE,KAAK5V,EAAEo0B,EAAGjzB,GAAIA,IAEpB,OAAOwQ,EApDT,IAAI2iB,EAAqB,SAASxsB,GAChC,cAAeA,GACb,IAAK,SACH,OAAOA,EAET,IAAK,UACH,OAAOA,EAAI,OAAS,QAEtB,IAAK,SACH,OAAOumB,SAASvmB,GAAKA,EAAI,GAE3B,QACE,MAAO,KAIb5H,EAAOD,QAAU,SAASiW,EAAKyd,EAAKC,EAAI/I,GAOtC,OANA8I,EAAMA,GAAO,IACbC,EAAKA,GAAM,IACC,OAAR1d,IACFA,OAAMvO,GAGW,iBAARuO,EACFV,EAAIyX,EAAW/W,GAAM,SAASP,GACnC,IAAI4e,EAAK/Z,mBAAmB8Z,EAAmB3e,IAAMie,EACrD,OAAI3gB,EAAQiD,EAAIP,IACPH,EAAIU,EAAIP,GAAI,SAAS7N,GAC1B,OAAOysB,EAAK/Z,mBAAmB8Z,EAAmBxsB,MACjD6Y,KAAKgT,GAEDY,EAAK/Z,mBAAmB8Z,EAAmBpe,EAAIP,OAEvDgL,KAAKgT,GAIL9I,EACErQ,mBAAmB8Z,EAAmBzJ,IAAS+I,EAC/CpZ,mBAAmB8Z,EAAmBpe,IAF3B,IAKpB,IAAIjD,EAAUD,MAAMC,SAAW,SAAUmhB,GACvC,MAA8C,mBAAvCvrB,OAAOlG,UAAUipB,SAASrqB,KAAK6yB,IAYpCnH,EAAapkB,OAAO6M,MAAQ,SAAUQ,GACxC,IAAIvE,KACJ,IAAK,IAAIvP,KAAO8T,EACVrN,OAAOlG,UAAUkpB,eAAetqB,KAAK2U,EAAK9T,IAAMuP,EAAIiE,KAAKxT,GAE/D,OAAOuP,QAGH6iB,IAAI,SAAStzB,EAAQhB,EAAOD,GAClC,aAEAA,EAAQoxB,OAASpxB,EAAQ6B,MAAQZ,EAAQ,YACzCjB,EAAQkyB,OAASlyB,EAAQ8B,UAAYb,EAAQ,cAE1CuzB,WAAW,GAAGC,WAAW,KAAKC,IAAI,SAASzzB,EAAQhB,EAAOD,GAsB7D,aAYA,SAAS20B,IACPp0B,KAAK+S,SAAW,KAChB/S,KAAKq0B,QAAU,KACfr0B,KAAKs0B,KAAO,KACZt0B,KAAKiT,KAAO,KACZjT,KAAKu0B,KAAO,KACZv0B,KAAKiK,SAAW,KAChBjK,KAAK8R,KAAO,KACZ9R,KAAKw0B,OAAS,KACdx0B,KAAKy0B,MAAQ,KACbz0B,KAAK00B,SAAW,KAChB10B,KAAKkT,KAAO,KACZlT,KAAKgT,KAAO,KAwDd,SAAS2hB,EAAS3sB,EAAK4sB,EAAkBC,GACvC,GAAI7sB,GAAOa,EAAKkhB,SAAS/hB,IAAQA,aAAeosB,EAAK,OAAOpsB,EAE5D,IAAIxH,EAAI,IAAI4zB,EAEZ,OADA5zB,EAAEc,MAAM0G,EAAK4sB,EAAkBC,GACxBr0B,EAyQT,SAASs0B,EAAUpf,GAMjB,OADI7M,EAAKksB,SAASrf,KAAMA,EAAMif,EAASjf,IACjCA,aAAe0e,EACd1e,EAAI3S,SADuBqxB,EAAIjyB,UAAUY,OAAOhC,KAAK2U,GA4D9D,SAASsf,EAAWzmB,EAAQ0mB,GAC1B,OAAON,EAASpmB,GAAQ,GAAO,GAAMtI,QAAQgvB,GAO/C,SAASC,EAAiB3mB,EAAQ0mB,GAChC,OAAK1mB,EACEomB,EAASpmB,GAAQ,GAAO,GAAM4mB,cAAcF,GAD/BA,EAvatB,IAAItC,EAAWjyB,EAAQ,YACnBmI,EAAOnI,EAAQ,UAEnBjB,EAAQ6B,MAAQqzB,EAChBl1B,EAAQwG,QAAU+uB,EAClBv1B,EAAQ01B,cAAgBD,EACxBz1B,EAAQsD,OAAS+xB,EAEjBr1B,EAAQ20B,IAAMA,EAqBd,IAAIgB,EAAkB,oBAClBC,EAAc,WAGdC,EAAoB,qCAIpBC,GAAU,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,MAG/CC,GAAU,IAAK,IAAK,IAAK,KAAM,IAAK,KAAKlgB,OAAOigB,GAGhDE,GAAc,KAAMngB,OAAOkgB,GAK3BE,GAAgB,IAAK,IAAK,IAAK,IAAK,KAAKpgB,OAAOmgB,GAChDE,GAAmB,IAAK,IAAK,KAE7BC,EAAsB,yBACtBC,EAAoB,+BAEpBC,GACEC,YAAc,EACdC,eAAe,GAGjBC,GACEF,YAAc,EACdC,eAAe,GAGjBE,GACEC,MAAQ,EACRC,OAAS,EACTC,KAAO,EACPC,QAAU,EACVC,MAAQ,EACRC,SAAS,EACTC,UAAU,EACVC,QAAQ,EACRC,WAAW,EACXC,SAAS,GAEXC,EAAcn2B,EAAQ,eAU1B0zB,EAAIjyB,UAAUb,MAAQ,SAAS0G,EAAK4sB,EAAkBC,GACpD,IAAKhsB,EAAKksB,SAAS/sB,GACjB,MAAM,IAAIyhB,UAAU,gDAAkDzhB,GAMxE,IAAI8uB,EAAa9uB,EAAIiZ,QAAQ,KACzB8V,GACqB,IAAhBD,GAAqBA,EAAa9uB,EAAIiZ,QAAQ,KAAQ,IAAM,IACjE+V,EAAShvB,EAAItG,MAAMq1B,GACnBE,EAAa,MACjBD,EAAO,GAAKA,EAAO,GAAG7jB,QAAQ8jB,EAAY,KAG1C,IAAIC,EAFJlvB,EAAMgvB,EAAO7W,KAAK4W,GAQlB,GAFAG,EAAOA,EAAKC,QAEPtC,GAA+C,IAA1B7sB,EAAItG,MAAM,KAAKV,OAAc,CAErD,IAAIo2B,EAAa9B,EAAkB+B,KAAKH,GACxC,GAAIE,EAeF,OAdAp3B,KAAKkT,KAAOgkB,EACZl3B,KAAKgT,KAAOkkB,EACZl3B,KAAK00B,SAAW0C,EAAW,GACvBA,EAAW,IACbp3B,KAAKw0B,OAAS4C,EAAW,GAEvBp3B,KAAKy0B,MADHG,EACWiC,EAAYv1B,MAAMtB,KAAKw0B,OAAOb,OAAO,IAErC3zB,KAAKw0B,OAAOb,OAAO,IAEzBiB,IACT50B,KAAKw0B,OAAS,GACdx0B,KAAKy0B,UAEAz0B,KAIX,IAAIs3B,EAAQlC,EAAgBiC,KAAKH,GACjC,GAAII,EAAO,CAET,IAAIC,GADJD,EAAQA,EAAM,IACSlF,cACvBpyB,KAAK+S,SAAWwkB,EAChBL,EAAOA,EAAKvD,OAAO2D,EAAMt2B,QAO3B,GAAI6zB,GAAqByC,GAASJ,EAAKhuB,MAAM,wBAAyB,CACpE,IAAImrB,EAAgC,OAAtB6C,EAAKvD,OAAO,EAAG,IACzBU,GAAaiD,GAASrB,EAAiBqB,KACzCJ,EAAOA,EAAKvD,OAAO,GACnB3zB,KAAKq0B,SAAU,GAInB,IAAK4B,EAAiBqB,KACjBjD,GAAYiD,IAAUpB,EAAgBoB,IAAU,CAmBnD,IAAK,IADDE,GAAW,EACN72B,EAAI,EAAGA,EAAIg1B,EAAgB30B,OAAQL,KAE7B,KADT82B,EAAMP,EAAKjW,QAAQ0U,EAAgBh1B,QACP,IAAb62B,GAAkBC,EAAMD,KACzCA,EAAUC,GAKd,IAAInD,EAAMoD,GAYM,KATdA,GAFe,IAAbF,EAEON,EAAK3F,YAAY,KAIjB2F,EAAK3F,YAAY,IAAKiG,MAM/BlD,EAAO4C,EAAKnlB,MAAM,EAAG2lB,GACrBR,EAAOA,EAAKnlB,MAAM2lB,EAAS,GAC3B13B,KAAKs0B,KAAOva,mBAAmBua,IAIjCkD,GAAW,EACX,IAAS72B,EAAI,EAAGA,EAAI+0B,EAAa10B,OAAQL,IAAK,CAC5C,IAAI82B,EAAMP,EAAKjW,QAAQyU,EAAa/0B,KACvB,IAAT82B,KAA4B,IAAbD,GAAkBC,EAAMD,KACzCA,EAAUC,IAGG,IAAbD,IACFA,EAAUN,EAAKl2B,QAEjBhB,KAAKiT,KAAOikB,EAAKnlB,MAAM,EAAGylB,GAC1BN,EAAOA,EAAKnlB,MAAMylB,GAGlBx3B,KAAK23B,YAQL,IAAIC,EAAoC,OAJxC53B,KAAKiK,SAAWjK,KAAKiK,UAAY,IAIA,IACe,MAA5CjK,KAAKiK,SAASjK,KAAKiK,SAASjJ,OAAS,GAGzC,IAAK42B,EAEH,IAAK,IADDC,EAAY73B,KAAKiK,SAASvI,MAAM,MAC3Bf,EAAI,EAAGG,EAAI+2B,EAAU72B,OAAQL,EAAIG,EAAGH,IAAK,CAChD,IAAIsR,EAAO4lB,EAAUl3B,GACrB,GAAKsR,IACAA,EAAK/I,MAAM0sB,GAAsB,CAEpC,IAAK,IADDkC,EAAU,GACLt2B,EAAI,EAAG2T,EAAIlD,EAAKjR,OAAQQ,EAAI2T,EAAG3T,IAClCyQ,EAAK6D,WAAWtU,GAAK,IAIvBs2B,GAAW,IAEXA,GAAW7lB,EAAKzQ,GAIpB,IAAKs2B,EAAQ5uB,MAAM0sB,GAAsB,CACvC,IAAImC,EAAaF,EAAU9lB,MAAM,EAAGpR,GAChCq3B,EAAUH,EAAU9lB,MAAMpR,EAAI,GAC9Bs3B,EAAMhmB,EAAK/I,MAAM2sB,GACjBoC,IACFF,EAAW3iB,KAAK6iB,EAAI,IACpBD,EAAQE,QAAQD,EAAI,KAElBD,EAAQh3B,SACVk2B,EAAO,IAAMc,EAAQ7X,KAAK,KAAO+W,GAEnCl3B,KAAKiK,SAAW8tB,EAAW5X,KAAK,KAChC,QAONngB,KAAKiK,SADHjK,KAAKiK,SAASjJ,OAjND,IAkNC,GAGAhB,KAAKiK,SAASmoB,cAG3BwF,IAKH53B,KAAKiK,SAAW0oB,EAASN,QAAQryB,KAAKiK,WAGxC,IAAI7C,EAAIpH,KAAKu0B,KAAO,IAAMv0B,KAAKu0B,KAAO,GAClC4D,EAAIn4B,KAAKiK,UAAY,GACzBjK,KAAKiT,KAAOklB,EAAI/wB,EAChBpH,KAAKgT,MAAQhT,KAAKiT,KAId2kB,IACF53B,KAAKiK,SAAWjK,KAAKiK,SAAS0pB,OAAO,EAAG3zB,KAAKiK,SAASjJ,OAAS,GAC/C,MAAZk2B,EAAK,KACPA,EAAO,IAAMA,IAOnB,IAAKpB,EAAeyB,GAKlB,IAAK,IAAI52B,EAAI,EAAGG,EAAI20B,EAAWz0B,OAAQL,EAAIG,EAAGH,IAAK,CACjD,IAAIy3B,EAAK3C,EAAW90B,GACpB,IAA0B,IAAtBu2B,EAAKjW,QAAQmX,GAAjB,CAEA,IAAIC,EAAMre,mBAAmBoe,GACzBC,IAAQD,IACVC,EAAMC,OAAOF,IAEflB,EAAOA,EAAKx1B,MAAM02B,GAAIjY,KAAKkY,IAM/B,IAAIvmB,EAAOolB,EAAKjW,QAAQ,MACV,IAAVnP,IAEF9R,KAAK8R,KAAOolB,EAAKvD,OAAO7hB,GACxBolB,EAAOA,EAAKnlB,MAAM,EAAGD,IAEvB,IAAIymB,EAAKrB,EAAKjW,QAAQ,KAoBtB,IAnBY,IAARsX,GACFv4B,KAAKw0B,OAAS0C,EAAKvD,OAAO4E,GAC1Bv4B,KAAKy0B,MAAQyC,EAAKvD,OAAO4E,EAAK,GAC1B3D,IACF50B,KAAKy0B,MAAQoC,EAAYv1B,MAAMtB,KAAKy0B,QAEtCyC,EAAOA,EAAKnlB,MAAM,EAAGwmB,IACZ3D,IAET50B,KAAKw0B,OAAS,GACdx0B,KAAKy0B,UAEHyC,IAAMl3B,KAAK00B,SAAWwC,GACtBhB,EAAgBqB,IAChBv3B,KAAKiK,WAAajK,KAAK00B,WACzB10B,KAAK00B,SAAW,KAId10B,KAAK00B,UAAY10B,KAAKw0B,OAAQ,CAChC,IAAIptB,EAAIpH,KAAK00B,UAAY,GACrBp0B,EAAIN,KAAKw0B,QAAU,GACvBx0B,KAAKkT,KAAO9L,EAAI9G,EAKlB,OADAN,KAAKgT,KAAOhT,KAAK+C,SACV/C,MAcTo0B,EAAIjyB,UAAUY,OAAS,WACrB,IAAIuxB,EAAOt0B,KAAKs0B,MAAQ,GACpBA,IAEFA,GADAA,EAAOta,mBAAmBsa,IACdnhB,QAAQ,OAAQ,KAC5BmhB,GAAQ,KAGV,IAAIvhB,EAAW/S,KAAK+S,UAAY,GAC5B2hB,EAAW10B,KAAK00B,UAAY,GAC5B5iB,EAAO9R,KAAK8R,MAAQ,GACpBmB,GAAO,EACPwhB,EAAQ,GAERz0B,KAAKiT,KACPA,EAAOqhB,EAAOt0B,KAAKiT,KACVjT,KAAKiK,WACdgJ,EAAOqhB,IAAwC,IAAhCt0B,KAAKiK,SAASgX,QAAQ,KACjCjhB,KAAKiK,SACL,IAAMjK,KAAKiK,SAAW,KACtBjK,KAAKu0B,OACPthB,GAAQ,IAAMjT,KAAKu0B,OAInBv0B,KAAKy0B,OACL5rB,EAAKkhB,SAAS/pB,KAAKy0B,QACnBpsB,OAAO6M,KAAKlV,KAAKy0B,OAAOzzB,SAC1ByzB,EAAQoC,EAAYt1B,UAAUvB,KAAKy0B,QAGrC,IAAID,EAASx0B,KAAKw0B,QAAWC,GAAU,IAAMA,GAAW,GAsBxD,OApBI1hB,GAAoC,MAAxBA,EAAS4gB,QAAQ,KAAY5gB,GAAY,KAIrD/S,KAAKq0B,WACHthB,GAAYmjB,EAAgBnjB,MAAuB,IAATE,GAC9CA,EAAO,MAAQA,GAAQ,IACnByhB,GAAmC,MAAvBA,EAAS/G,OAAO,KAAY+G,EAAW,IAAMA,IACnDzhB,IACVA,EAAO,IAGLnB,GAA2B,MAAnBA,EAAK6b,OAAO,KAAY7b,EAAO,IAAMA,GAC7C0iB,GAA+B,MAArBA,EAAO7G,OAAO,KAAY6G,EAAS,IAAMA,GAEvDE,EAAWA,EAASvhB,QAAQ,QAAS,SAASjK,GAC5C,OAAO8Q,mBAAmB9Q,KAE5BsrB,EAASA,EAAOrhB,QAAQ,IAAK,OAEtBJ,EAAWE,EAAOyhB,EAAWF,EAAS1iB,GAO/CsiB,EAAIjyB,UAAU8D,QAAU,SAASgvB,GAC/B,OAAOj1B,KAAKm1B,cAAcR,EAASM,GAAU,GAAO,IAAOlyB,UAQ7DqxB,EAAIjyB,UAAUgzB,cAAgB,SAASF,GACrC,GAAIpsB,EAAKksB,SAASE,GAAW,CAC3B,IAAIuD,EAAM,IAAIpE,EACdoE,EAAIl3B,MAAM2zB,GAAU,GAAO,GAC3BA,EAAWuD,EAKb,IAAK,IAFDvsB,EAAS,IAAImoB,EACbqE,EAAQpwB,OAAO6M,KAAKlV,MACf04B,EAAK,EAAGA,EAAKD,EAAMz3B,OAAQ03B,IAAM,CACxC,IAAIC,EAAOF,EAAMC,GACjBzsB,EAAO0sB,GAAQ34B,KAAK24B,GAQtB,GAHA1sB,EAAO6F,KAAOmjB,EAASnjB,KAGD,KAAlBmjB,EAASjiB,KAEX,OADA/G,EAAO+G,KAAO/G,EAAOlJ,SACdkJ,EAIT,GAAIgpB,EAASZ,UAAYY,EAASliB,SAAU,CAG1C,IAAK,IADD6lB,EAAQvwB,OAAO6M,KAAK+f,GACf4D,EAAK,EAAGA,EAAKD,EAAM53B,OAAQ63B,IAAM,CACxC,IAAIC,EAAOF,EAAMC,GACJ,aAATC,IACF7sB,EAAO6sB,GAAQ7D,EAAS6D,IAU5B,OANI5C,EAAgBjqB,EAAO8G,WACvB9G,EAAOhC,WAAagC,EAAOyoB,WAC7BzoB,EAAOiH,KAAOjH,EAAOyoB,SAAW,KAGlCzoB,EAAO+G,KAAO/G,EAAOlJ,SACdkJ,EAGT,GAAIgpB,EAASliB,UAAYkiB,EAASliB,WAAa9G,EAAO8G,SAAU,CAS9D,IAAKmjB,EAAgBjB,EAASliB,UAAW,CAEvC,IAAK,IADDmC,EAAO7M,OAAO6M,KAAK+f,GACd3tB,EAAI,EAAGA,EAAI4N,EAAKlU,OAAQsG,IAAK,CACpC,IAAI6N,EAAID,EAAK5N,GACb2E,EAAOkJ,GAAK8f,EAAS9f,GAGvB,OADAlJ,EAAO+G,KAAO/G,EAAOlJ,SACdkJ,EAIT,GADAA,EAAO8G,SAAWkiB,EAASliB,SACtBkiB,EAAShiB,MAASgjB,EAAiBhB,EAASliB,UAS/C9G,EAAOyoB,SAAWO,EAASP,aAT+B,CAE1D,IADIqE,GAAW9D,EAASP,UAAY,IAAIhzB,MAAM,KACvCq3B,EAAQ/3B,UAAYi0B,EAAShiB,KAAO8lB,EAAQC,WAC9C/D,EAAShiB,OAAMgiB,EAAShiB,KAAO,IAC/BgiB,EAAShrB,WAAUgrB,EAAShrB,SAAW,IACzB,KAAf8uB,EAAQ,IAAWA,EAAQb,QAAQ,IACnCa,EAAQ/3B,OAAS,GAAG+3B,EAAQb,QAAQ,IACxCjsB,EAAOyoB,SAAWqE,EAAQ5Y,KAAK,KAWjC,GAPAlU,EAAOuoB,OAASS,EAAST,OACzBvoB,EAAOwoB,MAAQQ,EAASR,MACxBxoB,EAAOgH,KAAOgiB,EAAShiB,MAAQ,GAC/BhH,EAAOqoB,KAAOW,EAASX,KACvBroB,EAAOhC,SAAWgrB,EAAShrB,UAAYgrB,EAAShiB,KAChDhH,EAAOsoB,KAAOU,EAASV,KAEnBtoB,EAAOyoB,UAAYzoB,EAAOuoB,OAAQ,CACpC,IAAIptB,EAAI6E,EAAOyoB,UAAY,GACvBp0B,EAAI2L,EAAOuoB,QAAU,GACzBvoB,EAAOiH,KAAO9L,EAAI9G,EAIpB,OAFA2L,EAAOooB,QAAUpoB,EAAOooB,SAAWY,EAASZ,QAC5CpoB,EAAO+G,KAAO/G,EAAOlJ,SACdkJ,EAGT,IAAIgtB,EAAehtB,EAAOyoB,UAA0C,MAA9BzoB,EAAOyoB,SAAS/G,OAAO,GACzDuL,EACIjE,EAAShiB,MACTgiB,EAASP,UAA4C,MAAhCO,EAASP,SAAS/G,OAAO,GAElDwL,EAAcD,GAAYD,GACXhtB,EAAOgH,MAAQgiB,EAASP,SACvC0E,EAAgBD,EAChBE,EAAUptB,EAAOyoB,UAAYzoB,EAAOyoB,SAAShzB,MAAM,SACnDq3B,EAAU9D,EAASP,UAAYO,EAASP,SAAShzB,MAAM,SACvD43B,EAAYrtB,EAAO8G,WAAamjB,EAAgBjqB,EAAO8G,UA2B3D,GApBIumB,IACFrtB,EAAOhC,SAAW,GAClBgC,EAAOsoB,KAAO,KACVtoB,EAAOgH,OACU,KAAfomB,EAAQ,GAAWA,EAAQ,GAAKptB,EAAOgH,KACtComB,EAAQnB,QAAQjsB,EAAOgH,OAE9BhH,EAAOgH,KAAO,GACVgiB,EAASliB,WACXkiB,EAAShrB,SAAW,KACpBgrB,EAASV,KAAO,KACZU,EAAShiB,OACQ,KAAf8lB,EAAQ,GAAWA,EAAQ,GAAK9D,EAAShiB,KACxC8lB,EAAQb,QAAQjD,EAAShiB,OAEhCgiB,EAAShiB,KAAO,MAElBkmB,EAAaA,IAA8B,KAAfJ,EAAQ,IAA4B,KAAfM,EAAQ,KAGvDH,EAEFjtB,EAAOgH,KAAQgiB,EAAShiB,MAA0B,KAAlBgiB,EAAShiB,KAC3BgiB,EAAShiB,KAAOhH,EAAOgH,KACrChH,EAAOhC,SAAYgrB,EAAShrB,UAAkC,KAAtBgrB,EAAShrB,SAC/BgrB,EAAShrB,SAAWgC,EAAOhC,SAC7CgC,EAAOuoB,OAASS,EAAST,OACzBvoB,EAAOwoB,MAAQQ,EAASR,MACxB4E,EAAUN,OAEL,GAAIA,EAAQ/3B,OAGZq4B,IAASA,MACdA,EAAQnd,MACRmd,EAAUA,EAAQ/jB,OAAOyjB,GACzB9sB,EAAOuoB,OAASS,EAAST,OACzBvoB,EAAOwoB,MAAQQ,EAASR,WACnB,IAAK5rB,EAAK0wB,kBAAkBtE,EAAST,QAwB1C,OApBI8E,IACFrtB,EAAOhC,SAAWgC,EAAOgH,KAAOomB,EAAQL,SAIpCQ,KAAavtB,EAAOgH,MAAQhH,EAAOgH,KAAKgO,QAAQ,KAAO,IAC1ChV,EAAOgH,KAAKvR,MAAM,QAEjCuK,EAAOqoB,KAAOkF,EAAWR,QACzB/sB,EAAOgH,KAAOhH,EAAOhC,SAAWuvB,EAAWR,UAG/C/sB,EAAOuoB,OAASS,EAAST,OACzBvoB,EAAOwoB,MAAQQ,EAASR,MAEnB5rB,EAAK4wB,OAAOxtB,EAAOyoB,WAAc7rB,EAAK4wB,OAAOxtB,EAAOuoB,UACvDvoB,EAAOiH,MAAQjH,EAAOyoB,SAAWzoB,EAAOyoB,SAAW,KACpCzoB,EAAOuoB,OAASvoB,EAAOuoB,OAAS,KAEjDvoB,EAAO+G,KAAO/G,EAAOlJ,SACdkJ,EAGT,IAAKotB,EAAQr4B,OAWX,OARAiL,EAAOyoB,SAAW,KAGhBzoB,EAAOiH,KADLjH,EAAOuoB,OACK,IAAMvoB,EAAOuoB,OAEb,KAEhBvoB,EAAO+G,KAAO/G,EAAOlJ,SACdkJ,EAcT,IAAK,IARDytB,EAAOL,EAAQtnB,OAAO,GAAG,GACzB4nB,GACC1tB,EAAOgH,MAAQgiB,EAAShiB,MAAQomB,EAAQr4B,OAAS,KACxC,MAAT04B,GAAyB,OAATA,IAA2B,KAATA,EAInChgB,EAAK,EACA/Y,EAAI04B,EAAQr4B,OAAQL,GAAK,EAAGA,IAEtB,OADb+4B,EAAOL,EAAQ14B,IAEb04B,EAAQzoB,OAAOjQ,EAAG,GACA,OAAT+4B,GACTL,EAAQzoB,OAAOjQ,EAAG,GAClB+Y,KACSA,IACT2f,EAAQzoB,OAAOjQ,EAAG,GAClB+Y,KAKJ,IAAKyf,IAAeC,EAClB,KAAO1f,IAAMA,EACX2f,EAAQnB,QAAQ,OAIhBiB,GAA6B,KAAfE,EAAQ,IACpBA,EAAQ,IAA+B,MAAzBA,EAAQ,GAAG1L,OAAO,IACpC0L,EAAQnB,QAAQ,IAGdyB,GAAsD,MAAjCN,EAAQlZ,KAAK,KAAKwT,QAAQ,IACjD0F,EAAQjkB,KAAK,IAGf,IAAIwkB,EAA4B,KAAfP,EAAQ,IACpBA,EAAQ,IAA+B,MAAzBA,EAAQ,GAAG1L,OAAO,GAGrC,GAAI2L,EAAW,CACbrtB,EAAOhC,SAAWgC,EAAOgH,KAAO2mB,EAAa,GACbP,EAAQr4B,OAASq4B,EAAQL,QAAU,GAInE,IAAIQ,KAAavtB,EAAOgH,MAAQhH,EAAOgH,KAAKgO,QAAQ,KAAO,IAC1ChV,EAAOgH,KAAKvR,MAAM,KAC/B83B,IACFvtB,EAAOqoB,KAAOkF,EAAWR,QACzB/sB,EAAOgH,KAAOhH,EAAOhC,SAAWuvB,EAAWR,SAyB/C,OArBAG,EAAaA,GAAeltB,EAAOgH,MAAQomB,EAAQr4B,UAEhC44B,GACjBP,EAAQnB,QAAQ,IAGbmB,EAAQr4B,OAIXiL,EAAOyoB,SAAW2E,EAAQlZ,KAAK,MAH/BlU,EAAOyoB,SAAW,KAClBzoB,EAAOiH,KAAO,MAMXrK,EAAK4wB,OAAOxtB,EAAOyoB,WAAc7rB,EAAK4wB,OAAOxtB,EAAOuoB,UACvDvoB,EAAOiH,MAAQjH,EAAOyoB,SAAWzoB,EAAOyoB,SAAW,KACpCzoB,EAAOuoB,OAASvoB,EAAOuoB,OAAS,KAEjDvoB,EAAOqoB,KAAOW,EAASX,MAAQroB,EAAOqoB,KACtCroB,EAAOooB,QAAUpoB,EAAOooB,SAAWY,EAASZ,QAC5CpoB,EAAO+G,KAAO/G,EAAOlJ,SACdkJ,GAGTmoB,EAAIjyB,UAAUw1B,UAAY,WACxB,IAAI1kB,EAAOjT,KAAKiT,KACZshB,EAAOc,EAAYgC,KAAKpkB,GACxBshB,IAEW,OADbA,EAAOA,EAAK,MAEVv0B,KAAKu0B,KAAOA,EAAKZ,OAAO,IAE1B1gB,EAAOA,EAAK0gB,OAAO,EAAG1gB,EAAKjS,OAASuzB,EAAKvzB,SAEvCiS,IAAMjT,KAAKiK,SAAWgJ,MAGzBvH,SAAS,GAAGinB,SAAW,GAAGkE,YAAc,KAAKgD,IAAI,SAASn5B,EAAQhB,EAAOD,GAC5E,aAEAC,EAAOD,SACLs1B,SAAU,SAAS+E,GACjB,MAAuB,iBAAV,GAEf/P,SAAU,SAAS+P,GACjB,MAAuB,iBAAV,GAA8B,OAARA,GAErCL,OAAQ,SAASK,GACf,OAAe,OAARA,GAETP,kBAAmB,SAASO,GAC1B,OAAc,MAAPA,SAILjyB,KAAO,SAASnH,EAAQhB,EAAOD,GACrC,aAmDA,SAASQ,EAAIoN,GACX,KAAMrN,gBAAgBC,GAAM,OAAO,IAAIA,EAAIoN,GAC3CA,EAAOrN,KAAK+G,MAAQ8B,EAAKC,KAAKuE,OAC9BrN,KAAK2G,YACL3G,KAAK0G,SACL1G,KAAK+5B,cACL/5B,KAAKwQ,SAAW7H,EAAQ0E,EAAKtK,QAC7B,IAAIi3B,EAAkBh6B,KAAKi6B,iBAAmBj6B,KAAKwQ,SAAS,iBAC5DxQ,KAAKk6B,qBAAuB,SAAUlxB,GAAO,OAAOgxB,EAAgB7vB,KAAKnB,IAEzEhJ,KAAKkC,OAASmL,EAAK8sB,OAAS,IAAIl4B,EAChCjC,KAAKuG,mBACLvG,KAAKsQ,iBACLtQ,KAAKgN,MAAQyH,IACbzU,KAAKwR,OAAS4oB,EAAY/sB,GAE1BA,EAAK0V,aAAe1V,EAAK0V,cAAgBpQ,EAAAA,EACf,YAAtBtF,EAAKgtB,gBAA6BhtB,EAAK6S,wBAAyB,QAC7C/Y,IAAnBkG,EAAKitB,YAAyBjtB,EAAKitB,UAAY5qB,GACnD1P,KAAKu6B,UAAYC,EAAqBx6B,MAElCqN,EAAK1E,SAAS8xB,EAAkBz6B,MACpC06B,EAAoB16B,MACI,iBAAbqN,EAAK3H,MAAkB1F,KAAK26B,cAActtB,EAAK3H,MAC1Dk1B,EAAkB56B,MACdqN,EAAK4V,eAAeA,EAAcjjB,MAaxC,SAASiE,EAAS42B,EAAc1kB,GAC9B,IAAI7O,EACJ,GAA2B,iBAAhBuzB,GAET,KADAvzB,EAAItH,KAAK+F,UAAU80B,IACX,MAAM,IAAIj6B,MAAM,8BAAgCi6B,EAAe,SAClE,CACL,IAAI10B,EAAYnG,KAAKqH,WAAWwzB,GAChCvzB,EAAInB,EAAUlC,UAAYjE,KAAKoG,SAASD,GAG1C,IAAIgZ,EAAQ7X,EAAE6O,GACd,OAAiB,IAAb7O,EAAEkF,OACuB,KAApBxM,KAAK+G,MAAMkR,MAAehK,EAAGkR,GAASA,GAC/Cnf,KAAK2H,OAASL,EAAEK,OACTwX,GAWT,SAASvT,EAAQ/J,EAAQi5B,GACvB,IAAI30B,EAAYnG,KAAKqH,WAAWxF,OAAQsF,EAAW2zB,GACnD,OAAO30B,EAAUlC,UAAYjE,KAAKoG,SAASD,GAY7C,SAASe,EAAUrF,EAAQD,EAAKm5B,EAAiBD,GAC/C,GAAItoB,MAAMC,QAAQ5Q,GAChB,IAAK,IAAIlB,EAAE,EAAGA,EAAEkB,EAAOb,OAAQL,IAAKX,KAAKkH,UAAUrF,EAAOlB,QAAIwG,EAAW4zB,EAAiBD,OAD5F,CAIA,IAAIrpB,EAAKzR,KAAKwR,OAAO3P,GACrB,QAAWsF,IAAPsK,GAAiC,iBAANA,EAC7B,MAAM,IAAI7Q,MAAM,4BAElBo6B,EAAYh7B,KADZ4B,EAAMqE,EAAQgC,YAAYrG,GAAO6P,IAEjCzR,KAAK2G,SAAS/E,GAAO5B,KAAKqH,WAAWxF,EAAQk5B,EAAiBD,GAAO,IAYvE,SAASH,EAAc94B,EAAQD,EAAKq5B,GAClCj7B,KAAKkH,UAAUrF,EAAQD,EAAKq5B,GAAgB,GAW9C,SAASlrB,EAAelO,EAAQq5B,GAC9B,IAAIp1B,EAAUjE,EAAOiE,QACrB,QAAgBqB,IAAZrB,GAA2C,iBAAXA,EAClC,MAAM,IAAIlF,MAAM,4BAElB,KADAkF,EAAUA,GAAW9F,KAAK+G,MAAM8gB,aAAeA,EAAY7nB,OAIzD,OAFAoO,QAAQ4S,KAAK,6BACbhhB,KAAK2H,OAAS,MACP,EAET,IAAIwzB,EAAmBn7B,KAAKwQ,SAASpG,IACrCpK,KAAKwQ,SAASpG,IAAiC,mBAApB+wB,EACLn7B,KAAKk6B,qBACLl6B,KAAKi6B,iBAC3B,IAAI9a,EACJ,IAAMA,EAAQnf,KAAKiE,SAAS6B,EAASjE,GACrC,QAAU7B,KAAKwQ,SAASpG,IAAM+wB,EAC9B,IAAKhc,GAAS+b,EAAiB,CAC7B,IAAItzB,EAAU,sBAAwB5H,KAAKiQ,aAC3C,GAAiC,OAA7BjQ,KAAK+G,MAAMgJ,eACV,MAAM,IAAInP,MAAMgH,GADmBwG,QAAQC,MAAMzG,GAGxD,OAAOuX,EAIT,SAAS0I,EAAY9nB,GACnB,IAAI2F,EAAO3F,EAAKgH,MAAMrB,KAMtB,OALA3F,EAAKgH,MAAM8gB,YAA6B,iBAARniB,EACJ3F,EAAKyR,OAAO9L,IAASA,EACrB3F,EAAKgG,UAAUq1B,GACbA,OACAj0B,EAWhC,SAASpB,EAAUs1B,GACjB,IAAIl1B,EAAYm1B,EAAct7B,KAAMq7B,GACpC,cAAel1B,GACb,IAAK,SAAU,OAAOA,EAAUlC,UAAYjE,KAAKoG,SAASD,GAC1D,IAAK,SAAU,OAAOnG,KAAK+F,UAAUI,GACrC,IAAK,YAAa,OAAOo1B,EAAmBv7B,KAAMq7B,IAKtD,SAASE,EAAmBx7B,EAAMyG,GAChC,IAAI2K,EAAMlL,EAAQpE,OAAOd,KAAKhB,GAAQ8B,WAAc2E,GACpD,GAAI2K,EAAK,CACP,IAAItP,EAASsP,EAAItP,OACbgK,EAAOsF,EAAItF,KACX9D,EAASoJ,EAAIpJ,OACbT,EAAIk0B,EAAcz6B,KAAKhB,EAAM8B,EAAQgK,OAAM1E,EAAWY,GAS1D,OARAhI,EAAKg6B,WAAWvzB,GAAO,IAAI0K,GACzB1K,IAAKA,EACLi1B,UAAU,EACV55B,OAAQA,EACRgK,KAAMA,EACN9D,OAAQA,EACR9D,SAAUqD,IAELA,GAKX,SAASg0B,EAAcv7B,EAAMs7B,GAE3B,OADAA,EAASp1B,EAAQgC,YAAYozB,GACtBt7B,EAAK4G,SAAS00B,IAAWt7B,EAAK2G,MAAM20B,IAAWt7B,EAAKg6B,WAAWsB,GAYxE,SAASK,EAAab,GACpB,GAAIA,aAAwBpwB,OAG1B,OAFAkxB,EAAkB37B,KAAMA,KAAK2G,SAAUk0B,QACvCc,EAAkB37B,KAAMA,KAAK0G,MAAOm0B,GAGtC,cAAeA,GACb,IAAK,YAIH,OAHAc,EAAkB37B,KAAMA,KAAK2G,UAC7Bg1B,EAAkB37B,KAAMA,KAAK0G,YAC7B1G,KAAKkC,OAAOM,QAEd,IAAK,SACH,IAAI2D,EAAYm1B,EAAct7B,KAAM66B,GAIpC,OAHI10B,GAAWnG,KAAKkC,OAAOK,IAAI4D,EAAUy1B,iBAClC57B,KAAK2G,SAASk0B,eACd76B,KAAK0G,MAAMm0B,GAEpB,IAAK,SACH,IAAIP,EAAYt6B,KAAK+G,MAAMuzB,UACvBsB,EAAWtB,EAAYA,EAAUO,GAAgBA,EACrD76B,KAAKkC,OAAOK,IAAIq5B,GAChB,IAAInqB,EAAKzR,KAAKwR,OAAOqpB,GACjBppB,IACFA,EAAKxL,EAAQgC,YAAYwJ,UAClBzR,KAAK2G,SAAS8K,UACdzR,KAAK0G,MAAM+K,KAM1B,SAASkqB,EAAkB57B,EAAM87B,EAAStxB,GACxC,IAAK,IAAI8wB,KAAUQ,EAAS,CAC1B,IAAI11B,EAAY01B,EAAQR,GACnBl1B,EAAUT,MAAU6E,IAASA,EAAMJ,KAAKkxB,KAC3Ct7B,EAAKmC,OAAOK,IAAI4D,EAAUy1B,iBACnBC,EAAQR,KAOrB,SAASh0B,EAAWxF,EAAQo5B,EAAgBv1B,EAAMo2B,GAChD,GAAqB,iBAAVj6B,GAAuC,kBAAVA,EACtC,MAAM,IAAIjB,MAAM,sCAClB,IAAI05B,EAAYt6B,KAAK+G,MAAMuzB,UACvBsB,EAAWtB,EAAYA,EAAUz4B,GAAUA,EAC3Ck6B,EAAS/7B,KAAKkC,OAAOI,IAAIs5B,GAC7B,GAAIG,EAAQ,OAAOA,EAEnBD,EAAkBA,IAAgD,IAA7B97B,KAAK+G,MAAMi1B,cAEhD,IAAIvqB,EAAKxL,EAAQgC,YAAYjI,KAAKwR,OAAO3P,IACrC4P,GAAMqqB,GAAiBd,EAAYh7B,KAAMyR,GAE7C,IACIwqB,EADAC,GAA6C,IAA9Bl8B,KAAK+G,MAAMgJ,iBAA6BkrB,EAEvDiB,KAAkBD,EAAgBxqB,GAAMA,GAAMxL,EAAQgC,YAAYpG,EAAOiE,WAC3E9F,KAAK+P,eAAelO,GAAQ,GAE9B,IAAIiK,EAAY7F,EAAQiO,IAAInT,KAAKf,KAAM6B,GAEnCsE,EAAY,IAAI+K,GAClBO,GAAIA,EACJ5P,OAAQA,EACRiK,UAAWA,EACX8vB,SAAUA,EACVl2B,KAAMA,IAQR,MALa,KAAT+L,EAAG,IAAaqqB,IAAiB97B,KAAK0G,MAAM+K,GAAMtL,GACtDnG,KAAKkC,OAAOE,IAAIw5B,EAAUz1B,GAEtB+1B,GAAgBD,GAAej8B,KAAK+P,eAAelO,GAAQ,GAExDsE,EAKT,SAASC,EAASD,EAAW0F,GAgC3B,SAASE,IACP,IAAIowB,EAAYh2B,EAAUlC,SACtBgI,EAASkwB,EAAUjwB,MAAM,KAAMC,WAEnC,OADAJ,EAAapE,OAASw0B,EAAUx0B,OACzBsE,EAnCT,GAAI9F,EAAUoK,UAOZ,OANApK,EAAUlC,SAAW8H,EACrBA,EAAalK,OAASsE,EAAUtE,OAChCkK,EAAapE,OAAS,KACtBoE,EAAaF,KAAOA,GAAcE,GACF,IAA5B5F,EAAUtE,OAAO2K,SACnBT,EAAaS,QAAS,GACjBT,EAET5F,EAAUoK,WAAY,EAEtB,IAAI6rB,EACAj2B,EAAUT,OACZ02B,EAAcp8B,KAAK+G,MACnB/G,KAAK+G,MAAQ/G,KAAKu6B,WAGpB,IAAIjzB,EACJ,IAAMA,EAAIk0B,EAAcz6B,KAAKf,KAAMmG,EAAUtE,OAAQgK,EAAM1F,EAAU2F,WACrE,QACE3F,EAAUoK,WAAY,EAClBpK,EAAUT,OAAM1F,KAAK+G,MAAQq1B,GAOnC,OAJAj2B,EAAUlC,SAAWqD,EACrBnB,EAAUmI,KAAOhH,EAAEgH,KACnBnI,EAAUoH,OAASjG,EAAEiG,OACrBpH,EAAU0F,KAAOvE,EAAEuE,KACZvE,EAYT,SAAS8yB,EAAY/sB,GACnB,OAAQA,EAAKiG,UACX,IAAK,MAAO,OAAO+oB,EACnB,IAAK,KAAM,OAAO7qB,EAClB,QAAS,OAAO8qB,GAKpB,SAAS9qB,EAAO3P,GAEd,OADIA,EAAOokB,KAAK7X,QAAQ4S,KAAK,qBAAsBnf,EAAOokB,KACnDpkB,EAAO4P,GAIhB,SAAS4qB,EAAQx6B,GAEf,OADIA,EAAO4P,IAAIrD,QAAQ4S,KAAK,oBAAqBnf,EAAO4P,IACjD5P,EAAOokB,IAIhB,SAASqW,EAAYz6B,GACnB,GAAIA,EAAOokB,KAAOpkB,EAAO4P,IAAM5P,EAAOokB,KAAOpkB,EAAO4P,GAClD,MAAM,IAAI7Q,MAAM,mCAClB,OAAOiB,EAAOokB,KAAOpkB,EAAO4P,GAW9B,SAASxB,EAAWtI,EAAQ0rB,GAE1B,KADA1rB,EAASA,GAAU3H,KAAK2H,QACX,MAAO,YAMpB,IAAK,IAJD40B,OAAkCp1B,KADtCksB,EAAUA,OACckJ,UAA0B,KAAOlJ,EAAQkJ,UAC7D/kB,OAA8BrQ,IAApBksB,EAAQ7b,QAAwB,OAAS6b,EAAQ7b,QAE3D6V,EAAO,GACF1sB,EAAE,EAAGA,EAAEgH,EAAO3G,OAAQL,IAAK,CAClC,IAAIT,EAAIyH,EAAOhH,GACXT,IAAGmtB,GAAQ7V,EAAUtX,EAAEs8B,SAAW,IAAMt8B,EAAE0H,QAAU20B,GAE1D,OAAOlP,EAAKtb,MAAM,GAAIwqB,EAAUv7B,QAUlC,SAASy7B,EAAUpS,EAAMtnB,GACF,iBAAVA,IAAoBA,EAAS,IAAI0H,OAAO1H,IACnD/C,KAAKwQ,SAAS6Z,GAAQtnB,EAIxB,SAAS23B,EAAoB36B,GAC3B,IAAI28B,EAKJ,GAJI38B,EAAKgH,MAAMwS,QACbmjB,EAAch8B,EAAQ,qBACtBX,EAAK46B,cAAc+B,EAAaA,EAAYzW,KAAK,KAE3B,IAApBlmB,EAAKgH,MAAMrB,KAAf,CACA,IAAIvE,EAAaT,EAAQ,oCACrBX,EAAKgH,MAAMwS,QAAOpY,EAAaw7B,EAAgBx7B,EAAYy7B,IAC/D78B,EAAK46B,cAAcx5B,EAAYi6B,GAAgB,GAC/Cr7B,EAAK2G,MAAM,iCAAmC00B,GAIhD,SAASR,EAAkB76B,GACzB,IAAI88B,EAAc98B,EAAKgH,MAAM80B,QAC7B,GAAKgB,EACL,GAAIrqB,MAAMC,QAAQoqB,GAAc98B,EAAKmH,UAAU21B,QAC1C,IAAK,IAAIj7B,KAAOi7B,EAAa98B,EAAKmH,UAAU21B,EAAYj7B,GAAMA,GAIrE,SAAS64B,EAAkB16B,GACzB,IAAK,IAAIsqB,KAAQtqB,EAAKgH,MAAM4B,QAAS,CACnC,IAAI5F,EAAShD,EAAKgH,MAAM4B,QAAQ0hB,GAChCtqB,EAAK08B,UAAUpS,EAAMtnB,IAKzB,SAASi4B,EAAYj7B,EAAM0R,GACzB,GAAI1R,EAAK4G,SAAS8K,IAAO1R,EAAK2G,MAAM+K,GAClC,MAAM,IAAI7Q,MAAM,0BAA4B6Q,EAAK,oBAIrD,SAAS+oB,EAAqBz6B,GAE5B,IAAK,IADD+8B,EAAWj0B,EAAKC,KAAK/I,EAAKgH,OACrBpG,EAAE,EAAGA,EAAEo8B,EAAoB/7B,OAAQL,WACnCm8B,EAASC,EAAoBp8B,IACtC,OAAOm8B,EAzdT,IAAItB,EAAgB96B,EAAQ,aACxBuF,EAAUvF,EAAQ,qBAClBuB,EAAQvB,EAAQ,WAChBwQ,EAAexQ,EAAQ,wBACvBgP,EAAkBhP,EAAQ,yBAC1BiI,EAAUjI,EAAQ,qBAClB+T,EAAQ/T,EAAQ,mBAChBi8B,EAAkBj8B,EAAQ,WAC1BuiB,EAAgBviB,EAAQ,mBACxBmI,EAAOnI,EAAQ,kBACfuN,EAAKvN,EAAQ,MAEjBhB,EAAOD,QAAUQ,EAEjBA,EAAIkC,UAAU8B,SAAWA,EACzBhE,EAAIkC,UAAUyJ,QAAUA,EACxB3L,EAAIkC,UAAU+E,UAAYA,EAC1BjH,EAAIkC,UAAUw4B,cAAgBA,EAC9B16B,EAAIkC,UAAU4N,eAAiBA,EAC/B9P,EAAIkC,UAAU4D,UAAYA,EAC1B9F,EAAIkC,UAAUu5B,aAAeA,EAC7Bz7B,EAAIkC,UAAUs6B,UAAYA,EAC1Bx8B,EAAIkC,UAAU8N,WAAaA,EAE3BhQ,EAAIkC,UAAUkF,WAAaA,EAC3BpH,EAAIkC,UAAUiE,SAAWA,EAEzBnG,EAAIkC,UAAUsD,aAAe/E,EAAQ,mBACrC,IAAIs8B,EAAgBt8B,EAAQ,aAC5BT,EAAIkC,UAAUglB,WAAa6V,EAAcvV,IACzCxnB,EAAIkC,UAAUolB,WAAayV,EAAc16B,IACzCrC,EAAIkC,UAAUqlB,cAAgBwV,EAActV,OAE5C,IAAI3a,EAAerM,EAAQ,2BAC3BT,EAAIyH,gBAAkBqF,EAAavE,WACnCvI,EAAIoG,gBAAkB0G,EAAaxF,WACnCtH,EAAI08B,gBAAkBA,EAEtB,IAAIvB,EAAiB,yCAEjB2B,GAAwB,mBAAoB,cAAe,eAC3DH,GAAqB,iBAmbtBK,UAAU,EAAEC,UAAU,EAAEC,YAAY,EAAEC,kBAAkB,EAAEC,0BAA0B,EAAEC,oBAAoB,EAAEC,oBAAoB,EAAEC,kBAAkB,EAAEC,uBAAuB,GAAGC,iBAAiB,GAAGC,YAAY,GAAGC,kBAAkB,GAAGC,oBAAoB,GAAGC,mCAAmC,GAAG7vB,GAAK,GAAG+C,wBAAwB,aAAa","file":"ajv.min.js"} \ No newline at end of file
diff --git a/tools/eslint/node_modules/ajv/lib/compile/index.js b/tools/eslint/node_modules/ajv/lib/compile/index.js
index 3e59c879a2..45e35d905b 100644
--- a/tools/eslint/node_modules/ajv/lib/compile/index.js
+++ b/tools/eslint/node_modules/ajv/lib/compile/index.js
@@ -196,7 +196,9 @@ function compile(schema, root, localRefs, baseId) {
}
}
- if (v !== undefined) {
+ if (v === undefined) {
+ removeLocalRef(ref);
+ } else {
replaceLocalRef(ref, v);
return resolvedRef(v, refCode);
}
@@ -209,6 +211,10 @@ function compile(schema, root, localRefs, baseId) {
return 'refVal' + refId;
}
+ function removeLocalRef(ref) {
+ delete refs[ref];
+ }
+
function replaceLocalRef(ref, v) {
var refId = refs[ref];
refVal[refId] = v;
diff --git a/tools/eslint/node_modules/ajv/package.json b/tools/eslint/node_modules/ajv/package.json
index 6457d48b98..177756a8ed 100644
--- a/tools/eslint/node_modules/ajv/package.json
+++ b/tools/eslint/node_modules/ajv/package.json
@@ -1,8 +1,8 @@
{
"_from": "ajv@^5.2.0",
- "_id": "ajv@5.2.1",
+ "_id": "ajv@5.2.2",
"_inBundle": false,
- "_integrity": "sha1-3NAwRRdYg7obY25a6ew9+auFMjo=",
+ "_integrity": "sha1-R8aNaehvXZUxA7AHSpQw3GPaXjk=",
"_location": "/eslint/ajv",
"_phantomChildren": {},
"_requested": {
@@ -18,8 +18,8 @@
"_requiredBy": [
"/eslint"
],
- "_resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.1.tgz",
- "_shasum": "dcd03045175883ba1b636e5ae9ec3df9ab85323a",
+ "_resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.2.tgz",
+ "_shasum": "47c68d69e86f5d953103b0074a9430dc63da5e39",
"_spec": "ajv@^5.2.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint",
"author": {
@@ -126,5 +126,5 @@
},
"tonicExampleFilename": ".tonic_example.js",
"typings": "lib/ajv.d.ts",
- "version": "5.2.1"
+ "version": "5.2.2"
}
diff --git a/tools/eslint/node_modules/character-entities-legacy/package.json b/tools/eslint/node_modules/character-entities-legacy/package.json
index 902e5f6384..ca111d3e17 100644
--- a/tools/eslint/node_modules/character-entities-legacy/package.json
+++ b/tools/eslint/node_modules/character-entities-legacy/package.json
@@ -1,8 +1,8 @@
{
"_from": "character-entities-legacy@^1.0.0",
- "_id": "character-entities-legacy@1.1.0",
+ "_id": "character-entities-legacy@1.1.1",
"_inBundle": false,
- "_integrity": "sha1-sYqtmPa3vMZGweTIH58ZVjdqVho=",
+ "_integrity": "sha1-9Ad53xoQGHK7UQo9KV4fzPFHIC8=",
"_location": "/character-entities-legacy",
"_phantomChildren": {},
"_requested": {
@@ -18,8 +18,8 @@
"_requiredBy": [
"/parse-entities"
],
- "_resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.0.tgz",
- "_shasum": "b18aad98f6b7bcc646c1e4c81f9f1956376a561a",
+ "_resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.1.tgz",
+ "_shasum": "f40779df1a101872bb510a3d295e1fccf147202f",
"_spec": "character-entities-legacy@^1.0.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/parse-entities",
"author": {
@@ -43,14 +43,13 @@
"description": "HTML legacy character entity information",
"devDependencies": {
"bail": "^1.0.1",
- "browserify": "^13.0.1",
+ "browserify": "^14.0.0",
"concat-stream": "^1.5.2",
"esmangle": "^1.0.1",
- "nyc": "^8.0.0",
- "remark-cli": "^2.0.0",
- "remark-preset-wooorm": "^1.0.0",
+ "remark-cli": "^3.0.0",
+ "remark-preset-wooorm": "^3.0.0",
"tape": "^4.0.0",
- "xo": "^0.17.0"
+ "xo": "^0.18.0"
},
"files": [
"index.json"
@@ -69,8 +68,9 @@
"main": "index.json",
"name": "character-entities-legacy",
"remarkConfig": {
- "output": true,
- "presets": "wooorm"
+ "plugins": [
+ "preset-wooorm"
+ ]
},
"repository": {
"type": "git",
@@ -81,15 +81,15 @@
"build-bundle": "browserify index.json --bare -s characterEntitiesLegacy > character-entities-legacy.js",
"build-generate": "node build",
"build-mangle": "esmangle character-entities-legacy.js > character-entities-legacy.min.js",
- "build-md": "remark . --quiet --frail",
+ "build-md": "remark . -qfo",
"lint": "xo",
- "test": "npm run build && npm run lint && npm run test-coverage",
- "test-api": "node test",
- "test-coverage": "nyc --reporter lcov tape test.js"
+ "test": "npm run build && npm run lint && npm run test-api",
+ "test-api": "node test"
},
- "version": "1.1.0",
+ "version": "1.1.1",
"xo": {
"space": true,
+ "esnext": false,
"ignores": [
"character-entities-legacy.js"
]
diff --git a/tools/eslint/node_modules/character-entities-legacy/readme.md b/tools/eslint/node_modules/character-entities-legacy/readme.md
index 7f6a876820..e3e8662462 100644
--- a/tools/eslint/node_modules/character-entities-legacy/readme.md
+++ b/tools/eslint/node_modules/character-entities-legacy/readme.md
@@ -1,4 +1,4 @@
-# character-entities-legacy [![Build Status][travis-badge]][travis] [![Coverage Status][codecov-badge]][codecov]
+# character-entities-legacy [![Build Status][travis-badge]][travis]
HTML legacy character entity information: for legacy reasons some
character entities are not required to have a trailing semicolon:
@@ -6,7 +6,7 @@ character entities are not required to have a trailing semicolon:
## Installation
-[npm][npm-install]:
+[npm][]:
```bash
npm install character-entities-legacy
@@ -15,9 +15,9 @@ npm install character-entities-legacy
## Usage
```js
-console.log(characterEntitiesLegacy.copy); // ©
-console.log(characterEntitiesLegacy.frac34); // ¾
-console.log(characterEntitiesLegacy.sup1); // ¹
+console.log(characterEntitiesLegacy.copy); //=> '©'
+console.log(characterEntitiesLegacy.frac34); //=> '¾'
+console.log(characterEntitiesLegacy.sup1); //=> '¹'
```
## API
@@ -31,6 +31,17 @@ replacements.
See [whatwg/html][html].
+## Related
+
+* [`character-entities`](https://github.com/wooorm/character-entities)
+ — HTML character entity info
+* [`character-entities-html4`](https://github.com/wooorm/character-entities-html4)
+ — HTML 4 character entity info
+* [`parse-entities`](https://github.com/wooorm/parse-entities)
+ — Parse HTML character references
+* [`stringify-entities`](https://github.com/wooorm/stringify-entities)
+ — Stringify HTML character references
+
## License
[MIT][license] © [Titus Wormer][author]
@@ -41,11 +52,7 @@ See [whatwg/html][html].
[travis]: https://travis-ci.org/wooorm/character-entities-legacy
-[codecov-badge]: https://img.shields.io/codecov/c/github/wooorm/character-entities-legacy.svg
-
-[codecov]: https://codecov.io/github/wooorm/character-entities-legacy
-
-[npm-install]: https://docs.npmjs.com/cli/install
+[npm]: https://docs.npmjs.com/cli/install
[license]: LICENSE
diff --git a/tools/eslint/node_modules/character-entities/package.json b/tools/eslint/node_modules/character-entities/package.json
index ab8867b5ac..7249c29e12 100644
--- a/tools/eslint/node_modules/character-entities/package.json
+++ b/tools/eslint/node_modules/character-entities/package.json
@@ -1,8 +1,8 @@
{
"_from": "character-entities@^1.0.0",
- "_id": "character-entities@1.2.0",
+ "_id": "character-entities@1.2.1",
"_inBundle": false,
- "_integrity": "sha1-poPiz3Xb6LFxljUxNk5Y4YobFV8=",
+ "_integrity": "sha1-92hxvl72bdt/j440eOzDdMJ9bco=",
"_location": "/character-entities",
"_phantomChildren": {},
"_requested": {
@@ -18,8 +18,8 @@
"_requiredBy": [
"/parse-entities"
],
- "_resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.0.tgz",
- "_shasum": "a683e2cf75dbe8b171963531364e58e18a1b155f",
+ "_resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.1.tgz",
+ "_shasum": "f76871be5ef66ddb7f8f8e3478ecc374c27d6dca",
"_spec": "character-entities@^1.0.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/parse-entities",
"author": {
@@ -43,14 +43,13 @@
"description": "HTML character entity information",
"devDependencies": {
"bail": "^1.0.1",
- "browserify": "^13.0.1",
+ "browserify": "^14.0.0",
"concat-stream": "^1.5.2",
"esmangle": "^1.0.1",
- "nyc": "^8.0.0",
- "remark-cli": "^2.0.0",
- "remark-preset-wooorm": "^1.0.0",
+ "remark-cli": "^3.0.0",
+ "remark-preset-wooorm": "^3.0.0",
"tape": "^4.0.0",
- "xo": "^0.17.0"
+ "xo": "^0.18.0"
},
"files": [
"index.json"
@@ -69,8 +68,9 @@
"main": "index.json",
"name": "character-entities",
"remarkConfig": {
- "output": true,
- "presets": "wooorm"
+ "plugins": [
+ "preset-wooorm"
+ ]
},
"repository": {
"type": "git",
@@ -81,15 +81,15 @@
"build-bundle": "browserify index.json --bare -s characterEntities > character-entities.js",
"build-generate": "node build",
"build-mangle": "esmangle character-entities.js > character-entities.min.js",
- "build-md": "remark . --quiet --frail",
+ "build-md": "remark . -qfo",
"lint": "xo",
- "test": "npm run build && npm run lint && npm run test-coverage",
- "test-api": "node test",
- "test-coverage": "nyc --reporter lcov tape test.js"
+ "test": "npm run build && npm run lint && npm run test-api",
+ "test-api": "node test"
},
- "version": "1.2.0",
+ "version": "1.2.1",
"xo": {
"space": true,
+ "esnext": false,
"ignores": [
"character-entities.js"
]
diff --git a/tools/eslint/node_modules/character-entities/readme.md b/tools/eslint/node_modules/character-entities/readme.md
index 8f79f76b2f..c1c2fd1abb 100644
--- a/tools/eslint/node_modules/character-entities/readme.md
+++ b/tools/eslint/node_modules/character-entities/readme.md
@@ -1,12 +1,10 @@
-# character-entities [![Build Status][travis-badge]][travis] [![Coverage Status][codecov-badge]][codecov]
-
-<!--lint disable heading-increment list-item-spacing no-duplicate-headings-->
+# character-entities [![Build Status][travis-badge]][travis]
HTML character entity information.
## Installation
-[npm][npm-install]:
+[npm][]:
```bash
npm install character-entities
@@ -15,9 +13,9 @@ npm install character-entities
## Usage
```js
-console.log(characterEntities.AElig); // Æ
-console.log(characterEntities.aelig); // æ
-console.log(characterEntities.amp); // &
+console.log(characterEntities.AElig); //=> 'Æ'
+console.log(characterEntities.aelig); //=> 'æ'
+console.log(characterEntities.amp); //=> '&'
```
## API
@@ -30,6 +28,17 @@ Mapping between (case-sensitive) character entity names to replacements.
See [html.spec.whatwg.org][html].
+## Related
+
+* [`character-entities-html4`](https://github.com/wooorm/character-entities-html4)
+ — HTML 4 character entity info
+* [`character-entities-legacy`](https://github.com/wooorm/character-entities-legacy)
+ — Legacy character entity info
+* [`parse-entities`](https://github.com/wooorm/parse-entities)
+ — Parse HTML character references
+* [`stringify-entities`](https://github.com/wooorm/stringify-entities)
+ — Stringify HTML character references
+
## License
[MIT][license] © [Titus Wormer][author]
@@ -40,11 +49,7 @@ See [html.spec.whatwg.org][html].
[travis]: https://travis-ci.org/wooorm/character-entities
-[codecov-badge]: https://img.shields.io/codecov/c/github/wooorm/character-entities.svg
-
-[codecov]: https://codecov.io/github/wooorm/character-entities
-
-[npm-install]: https://docs.npmjs.com/cli/install
+[npm]: https://docs.npmjs.com/cli/install
[license]: LICENSE
diff --git a/tools/eslint/node_modules/character-reference-invalid/package.json b/tools/eslint/node_modules/character-reference-invalid/package.json
index 77517d9d99..d43a2ae0ea 100644
--- a/tools/eslint/node_modules/character-reference-invalid/package.json
+++ b/tools/eslint/node_modules/character-reference-invalid/package.json
@@ -1,8 +1,8 @@
{
"_from": "character-reference-invalid@^1.0.0",
- "_id": "character-reference-invalid@1.1.0",
+ "_id": "character-reference-invalid@1.1.1",
"_inBundle": false,
- "_integrity": "sha1-3smtHfufjQa0/NqircPE/ZevHmg=",
+ "_integrity": "sha1-lCg191Dk7GGjCOYMLvjMEBEgLvw=",
"_location": "/character-reference-invalid",
"_phantomChildren": {},
"_requested": {
@@ -18,8 +18,8 @@
"_requiredBy": [
"/parse-entities"
],
- "_resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.0.tgz",
- "_shasum": "dec9ad1dfb9f8d06b4fcdaa2adc3c4fd97af1e68",
+ "_resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.1.tgz",
+ "_shasum": "942835f750e4ec61a308e60c2ef8cc1011202efc",
"_spec": "character-reference-invalid@^1.0.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/parse-entities",
"author": {
@@ -43,14 +43,17 @@
"description": "HTML invalid numeric character reference information",
"devDependencies": {
"bail": "^1.0.1",
- "browserify": "^13.0.1",
+ "browserify": "^14.0.0",
+ "concat-stream": "^1.6.0",
"esmangle": "^1.0.1",
- "jsdom": "^9.4.1",
- "nyc": "^8.0.0",
- "remark-cli": "^2.0.0",
- "remark-preset-wooorm": "^1.0.0",
+ "hast-util-select": "^1.0.1",
+ "hast-util-to-string": "^1.0.0",
+ "rehype-parse": "^4.0.0",
+ "remark-cli": "^3.0.0",
+ "remark-preset-wooorm": "^3.0.0",
"tape": "^4.0.0",
- "xo": "^0.17.0"
+ "unified": "^6.1.5",
+ "xo": "^0.18.0"
},
"files": [
"index.json"
@@ -70,27 +73,28 @@
"main": "index.json",
"name": "character-reference-invalid",
"remarkConfig": {
- "output": true,
- "presets": "wooorm"
+ "plugins": [
+ "preset-wooorm"
+ ]
},
"repository": {
"type": "git",
"url": "git+https://github.com/wooorm/character-reference-invalid.git"
},
"scripts": {
- "build": "npm run build-md && npm run build-bundle && npm run build-mangle",
+ "build": "npm run build-generate && npm run build-md && npm run build-bundle && npm run build-mangle",
"build-bundle": "browserify index.json --bare -s characterReferenceInvalid > character-reference-invalid.js",
"build-generate": "node build",
"build-mangle": "esmangle character-reference-invalid.js > character-reference-invalid.min.js",
- "build-md": "remark . --quiet --frail",
+ "build-md": "remark . -qfo",
"lint": "xo",
- "test": "npm run build && npm run lint && npm run test-coverage",
- "test-api": "node test",
- "test-coverage": "nyc --reporter lcov tape test.js"
+ "test": "npm run build && npm run lint && npm run test-api",
+ "test-api": "node test"
},
- "version": "1.1.0",
+ "version": "1.1.1",
"xo": {
"space": true,
+ "esnext": false,
"rules": {
"guard-for-in": "off"
},
diff --git a/tools/eslint/node_modules/character-reference-invalid/readme.md b/tools/eslint/node_modules/character-reference-invalid/readme.md
index ac6e3e1f38..487c61de5f 100644
--- a/tools/eslint/node_modules/character-reference-invalid/readme.md
+++ b/tools/eslint/node_modules/character-reference-invalid/readme.md
@@ -1,10 +1,10 @@
-# character-reference-invalid [![Build Status][travis-badge]][travis] [![Coverage Status][codecov-badge]][codecov]
+# character-reference-invalid [![Build Status][travis-badge]][travis]
HTML invalid numeric character reference information.
## Installation
-[npm][npm-install]:
+[npm][]:
```bash
npm install character-reference-invalid
@@ -13,9 +13,9 @@ npm install character-reference-invalid
## Usage
```js
-console.log(characterReferenceInvalid[0x80]); // €
-console.log(characterReferenceInvalid[0x89]); // ‰
-console.log(characterReferenceInvalid[0x99]); // â„¢
+console.log(characterReferenceInvalid[0x80]); //=> '€'
+console.log(characterReferenceInvalid[0x89]); //=> '‰'
+console.log(characterReferenceInvalid[0x99]); //=> 'â„¢'
```
## API
@@ -28,6 +28,19 @@ Mapping between invalid numeric character reference to replacements.
See [html.spec.whatwg.org][html].
+## Related
+
+* [`character-entities`](https://github.com/wooorm/character-entities)
+ — HTML character entity info
+* [`character-entities-html4`](https://github.com/wooorm/character-entities-html4)
+ — HTML 4 character entity info
+* [`character-entities-legacy`](https://github.com/wooorm/character-entities-legacy)
+ — Legacy character entity info
+* [`parse-entities`](https://github.com/wooorm/parse-entities)
+ — Parse HTML character references
+* [`stringify-entities`](https://github.com/wooorm/stringify-entities)
+ — Stringify HTML character references
+
## License
[MIT][license] © [Titus Wormer][author]
@@ -38,11 +51,7 @@ See [html.spec.whatwg.org][html].
[travis]: https://travis-ci.org/wooorm/character-reference-invalid
-[codecov-badge]: https://img.shields.io/codecov/c/github/wooorm/character-reference-invalid.svg
-
-[codecov]: https://codecov.io/github/wooorm/character-reference-invalid
-
-[npm-install]: https://docs.npmjs.com/cli/install
+[npm]: https://docs.npmjs.com/cli/install
[license]: LICENSE
diff --git a/tools/eslint/node_modules/color-name/.eslintrc.json b/tools/eslint/node_modules/color-name/.eslintrc.json
new file mode 100644
index 0000000000..c50c250446
--- /dev/null
+++ b/tools/eslint/node_modules/color-name/.eslintrc.json
@@ -0,0 +1,43 @@
+{
+ "env": {
+ "browser": true,
+ "node": true,
+ "commonjs": true,
+ "es6": true
+ },
+ "extends": "eslint:recommended",
+ "rules": {
+ "strict": 2,
+ "indent": 0,
+ "linebreak-style": 0,
+ "quotes": 0,
+ "semi": 0,
+ "no-cond-assign": 1,
+ "no-constant-condition": 1,
+ "no-duplicate-case": 1,
+ "no-empty": 1,
+ "no-ex-assign": 1,
+ "no-extra-boolean-cast": 1,
+ "no-extra-semi": 1,
+ "no-fallthrough": 1,
+ "no-func-assign": 1,
+ "no-global-assign": 1,
+ "no-implicit-globals": 2,
+ "no-inner-declarations": ["error", "functions"],
+ "no-irregular-whitespace": 2,
+ "no-loop-func": 1,
+ "no-multi-str": 1,
+ "no-mixed-spaces-and-tabs": 1,
+ "no-proto": 1,
+ "no-sequences": 1,
+ "no-throw-literal": 1,
+ "no-unmodified-loop-condition": 1,
+ "no-useless-call": 1,
+ "no-void": 1,
+ "no-with": 2,
+ "wrap-iife": 1,
+ "no-redeclare": 1,
+ "no-unused-vars": ["error", { "vars": "all", "args": "none" }],
+ "no-sparse-arrays": 1
+ }
+}
diff --git a/tools/eslint/node_modules/color-name/index.js b/tools/eslint/node_modules/color-name/index.js
index 7d85e58c9a..e42aa68a54 100644
--- a/tools/eslint/node_modules/color-name/index.js
+++ b/tools/eslint/node_modules/color-name/index.js
@@ -1,3 +1,5 @@
+'use strict'
+
module.exports = {
"aliceblue": [240, 248, 255],
"antiquewhite": [250, 235, 215],
@@ -147,4 +149,4 @@ module.exports = {
"whitesmoke": [245, 245, 245],
"yellow": [255, 255, 0],
"yellowgreen": [154, 205, 50]
-}; \ No newline at end of file
+};
diff --git a/tools/eslint/node_modules/color-name/package.json b/tools/eslint/node_modules/color-name/package.json
index bd009b0c54..56c5ea48f9 100644
--- a/tools/eslint/node_modules/color-name/package.json
+++ b/tools/eslint/node_modules/color-name/package.json
@@ -1,8 +1,8 @@
{
"_from": "color-name@^1.1.1",
- "_id": "color-name@1.1.2",
+ "_id": "color-name@1.1.3",
"_inBundle": false,
- "_integrity": "sha1-XIq3K2S9IhXWF66VWeuxSEdc+Y0=",
+ "_integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
"_location": "/eslint/color-name",
"_phantomChildren": {},
"_requested": {
@@ -18,8 +18,8 @@
"_requiredBy": [
"/eslint/color-convert"
],
- "_resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.2.tgz",
- "_shasum": "5c8ab72b64bd2215d617ae9559ebb148475cf98d",
+ "_resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "_shasum": "a7d0558bd89c42f795dd42328f740831ca53bc25",
"_spec": "color-name@^1.1.1",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/color-convert",
"author": {
@@ -32,9 +32,6 @@
"bundleDependencies": false,
"deprecated": false,
"description": "A list of color names and its values",
- "files": [
- "index.js"
- ],
"homepage": "https://github.com/dfcreative/color-name",
"keywords": [
"color-name",
@@ -52,5 +49,5 @@
"scripts": {
"test": "node test.js"
},
- "version": "1.1.2"
+ "version": "1.1.3"
}
diff --git a/tools/eslint/node_modules/cross-spawn/LICENSE b/tools/eslint/node_modules/cross-spawn/LICENSE
new file mode 100644
index 0000000000..db5e914de1
--- /dev/null
+++ b/tools/eslint/node_modules/cross-spawn/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2014 IndigoUnited
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/tools/eslint/node_modules/cross-spawn/README.md b/tools/eslint/node_modules/cross-spawn/README.md
new file mode 100644
index 0000000000..dde730df1b
--- /dev/null
+++ b/tools/eslint/node_modules/cross-spawn/README.md
@@ -0,0 +1,85 @@
+# cross-spawn
+
+[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Build status][appveyor-image]][appveyor-url] [![Dependency status][david-dm-image]][david-dm-url] [![Dev Dependency status][david-dm-dev-image]][david-dm-dev-url]
+
+[npm-url]:https://npmjs.org/package/cross-spawn
+[downloads-image]:http://img.shields.io/npm/dm/cross-spawn.svg
+[npm-image]:http://img.shields.io/npm/v/cross-spawn.svg
+[travis-url]:https://travis-ci.org/IndigoUnited/node-cross-spawn
+[travis-image]:http://img.shields.io/travis/IndigoUnited/node-cross-spawn/master.svg
+[appveyor-url]:https://ci.appveyor.com/project/satazor/node-cross-spawn
+[appveyor-image]:https://img.shields.io/appveyor/ci/satazor/node-cross-spawn/master.svg
+[david-dm-url]:https://david-dm.org/IndigoUnited/node-cross-spawn
+[david-dm-image]:https://img.shields.io/david/IndigoUnited/node-cross-spawn.svg
+[david-dm-dev-url]:https://david-dm.org/IndigoUnited/node-cross-spawn#info=devDependencies
+[david-dm-dev-image]:https://img.shields.io/david/dev/IndigoUnited/node-cross-spawn.svg
+
+A cross platform solution to node's spawn and spawnSync.
+
+
+## Installation
+
+`$ npm install cross-spawn`
+
+If you are using `spawnSync` on node 0.10 or older, you will also need to install `spawn-sync`:
+
+`$ npm install spawn-sync`
+
+
+## Why
+
+Node has issues when using spawn on Windows:
+
+- It ignores [PATHEXT](https://github.com/joyent/node/issues/2318)
+- It does not support [shebangs](http://pt.wikipedia.org/wiki/Shebang)
+- No `options.shell` support on node < v6
+- It does not allow you to run `del` or `dir`
+
+All these issues are handled correctly by `cross-spawn`.
+There are some known modules, such as [win-spawn](https://github.com/ForbesLindesay/win-spawn), that try to solve this but they are either broken or provide faulty escaping of shell arguments.
+
+
+## Usage
+
+Exactly the same way as node's [`spawn`](https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options) or [`spawnSync`](https://nodejs.org/api/child_process.html#child_process_child_process_spawnsync_command_args_options), so it's a drop in replacement.
+
+
+```js
+var spawn = require('cross-spawn');
+
+// Spawn NPM asynchronously
+var child = spawn('npm', ['list', '-g', '-depth', '0'], { stdio: 'inherit' });
+
+// Spawn NPM synchronously
+var results = spawn.sync('npm', ['list', '-g', '-depth', '0'], { stdio: 'inherit' });
+```
+
+
+## Caveats
+
+#### `options.shell` as an alternative to `cross-spawn`
+
+Starting from node v6, `spawn` has a `shell` option that allows you run commands from within a shell. This new option solves most of the problems that `cross-spawn` attempts to solve, but:
+
+- It's not supported in node < v6
+- It has no support for shebangs on Windows
+- You must manually escape the command and arguments which is very error prone, specially when passing user input
+
+If you are using the `shell` option to spawn a command in a cross platform way, consider using `cross-spawn` instead. You have been warned.
+
+
+#### Shebangs
+
+While `cross-spawn` handles shebangs on Windows, its support is limited: e.g.: it doesn't handle arguments after the path, e.g.: `#!/bin/bash -e`.
+
+Remember to always test your code on Windows!
+
+
+## Tests
+
+`$ npm test`
+
+
+## License
+
+Released under the [MIT License](http://www.opensource.org/licenses/mit-license.php).
diff --git a/tools/eslint/node_modules/cross-spawn/index.js b/tools/eslint/node_modules/cross-spawn/index.js
new file mode 100644
index 0000000000..7814a9692d
--- /dev/null
+++ b/tools/eslint/node_modules/cross-spawn/index.js
@@ -0,0 +1,59 @@
+'use strict';
+
+var cp = require('child_process');
+var parse = require('./lib/parse');
+var enoent = require('./lib/enoent');
+
+var cpSpawnSync = cp.spawnSync;
+
+function spawn(command, args, options) {
+ var parsed;
+ var spawned;
+
+ // Parse the arguments
+ parsed = parse(command, args, options);
+
+ // Spawn the child process
+ spawned = cp.spawn(parsed.command, parsed.args, parsed.options);
+
+ // Hook into child process "exit" event to emit an error if the command
+ // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16
+ enoent.hookChildProcess(spawned, parsed);
+
+ return spawned;
+}
+
+function spawnSync(command, args, options) {
+ var parsed;
+ var result;
+
+ if (!cpSpawnSync) {
+ try {
+ cpSpawnSync = require('spawn-sync'); // eslint-disable-line global-require
+ } catch (ex) {
+ throw new Error(
+ 'In order to use spawnSync on node 0.10 or older, you must ' +
+ 'install spawn-sync:\n\n' +
+ ' npm install spawn-sync --save'
+ );
+ }
+ }
+
+ // Parse the arguments
+ parsed = parse(command, args, options);
+
+ // Spawn the child process
+ result = cpSpawnSync(parsed.command, parsed.args, parsed.options);
+
+ // Analyze if the command does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16
+ result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);
+
+ return result;
+}
+
+module.exports = spawn;
+module.exports.spawn = spawn;
+module.exports.sync = spawnSync;
+
+module.exports._parse = parse;
+module.exports._enoent = enoent;
diff --git a/tools/eslint/node_modules/cross-spawn/lib/enoent.js b/tools/eslint/node_modules/cross-spawn/lib/enoent.js
new file mode 100644
index 0000000000..d0a193aecd
--- /dev/null
+++ b/tools/eslint/node_modules/cross-spawn/lib/enoent.js
@@ -0,0 +1,73 @@
+'use strict';
+
+var isWin = process.platform === 'win32';
+var resolveCommand = require('./util/resolveCommand');
+
+var isNode10 = process.version.indexOf('v0.10.') === 0;
+
+function notFoundError(command, syscall) {
+ var err;
+
+ err = new Error(syscall + ' ' + command + ' ENOENT');
+ err.code = err.errno = 'ENOENT';
+ err.syscall = syscall + ' ' + command;
+
+ return err;
+}
+
+function hookChildProcess(cp, parsed) {
+ var originalEmit;
+
+ if (!isWin) {
+ return;
+ }
+
+ originalEmit = cp.emit;
+ cp.emit = function (name, arg1) {
+ var err;
+
+ // If emitting "exit" event and exit code is 1, we need to check if
+ // the command exists and emit an "error" instead
+ // See: https://github.com/IndigoUnited/node-cross-spawn/issues/16
+ if (name === 'exit') {
+ err = verifyENOENT(arg1, parsed, 'spawn');
+
+ if (err) {
+ return originalEmit.call(cp, 'error', err);
+ }
+ }
+
+ return originalEmit.apply(cp, arguments);
+ };
+}
+
+function verifyENOENT(status, parsed) {
+ if (isWin && status === 1 && !parsed.file) {
+ return notFoundError(parsed.original, 'spawn');
+ }
+
+ return null;
+}
+
+function verifyENOENTSync(status, parsed) {
+ if (isWin && status === 1 && !parsed.file) {
+ return notFoundError(parsed.original, 'spawnSync');
+ }
+
+ // If we are in node 10, then we are using spawn-sync; if it exited
+ // with -1 it probably means that the command does not exist
+ if (isNode10 && status === -1) {
+ parsed.file = isWin ? parsed.file : resolveCommand(parsed.original);
+
+ if (!parsed.file) {
+ return notFoundError(parsed.original, 'spawnSync');
+ }
+ }
+
+ return null;
+}
+
+module.exports.hookChildProcess = hookChildProcess;
+module.exports.verifyENOENT = verifyENOENT;
+module.exports.verifyENOENTSync = verifyENOENTSync;
+module.exports.notFoundError = notFoundError;
diff --git a/tools/eslint/node_modules/cross-spawn/lib/parse.js b/tools/eslint/node_modules/cross-spawn/lib/parse.js
new file mode 100644
index 0000000000..10a013625b
--- /dev/null
+++ b/tools/eslint/node_modules/cross-spawn/lib/parse.js
@@ -0,0 +1,113 @@
+'use strict';
+
+var resolveCommand = require('./util/resolveCommand');
+var hasEmptyArgumentBug = require('./util/hasEmptyArgumentBug');
+var escapeArgument = require('./util/escapeArgument');
+var escapeCommand = require('./util/escapeCommand');
+var readShebang = require('./util/readShebang');
+
+var isWin = process.platform === 'win32';
+var skipShellRegExp = /\.(?:com|exe)$/i;
+
+// Supported in Node >= 6 and >= 4.8
+var supportsShellOption = parseInt(process.version.substr(1).split('.')[0], 10) >= 6 ||
+ parseInt(process.version.substr(1).split('.')[0], 10) === 4 && parseInt(process.version.substr(1).split('.')[1], 10) >= 8;
+
+function parseNonShell(parsed) {
+ var shebang;
+ var needsShell;
+ var applyQuotes;
+
+ if (!isWin) {
+ return parsed;
+ }
+
+ // Detect & add support for shebangs
+ parsed.file = resolveCommand(parsed.command);
+ parsed.file = parsed.file || resolveCommand(parsed.command, true);
+ shebang = parsed.file && readShebang(parsed.file);
+
+ if (shebang) {
+ parsed.args.unshift(parsed.file);
+ parsed.command = shebang;
+ needsShell = hasEmptyArgumentBug || !skipShellRegExp.test(resolveCommand(shebang) || resolveCommand(shebang, true));
+ } else {
+ needsShell = hasEmptyArgumentBug || !skipShellRegExp.test(parsed.file);
+ }
+
+ // If a shell is required, use cmd.exe and take care of escaping everything correctly
+ if (needsShell) {
+ // Escape command & arguments
+ applyQuotes = (parsed.command !== 'echo'); // Do not quote arguments for the special "echo" command
+ parsed.command = escapeCommand(parsed.command);
+ parsed.args = parsed.args.map(function (arg) {
+ return escapeArgument(arg, applyQuotes);
+ });
+
+ // Make use of cmd.exe
+ parsed.args = ['/d', '/s', '/c', '"' + parsed.command + (parsed.args.length ? ' ' + parsed.args.join(' ') : '') + '"'];
+ parsed.command = process.env.comspec || 'cmd.exe';
+ parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped
+ }
+
+ return parsed;
+}
+
+function parseShell(parsed) {
+ var shellCommand;
+
+ // If node supports the shell option, there's no need to mimic its behavior
+ if (supportsShellOption) {
+ return parsed;
+ }
+
+ // Mimic node shell option, see: https://github.com/nodejs/node/blob/b9f6a2dc059a1062776133f3d4fd848c4da7d150/lib/child_process.js#L335
+ shellCommand = [parsed.command].concat(parsed.args).join(' ');
+
+ if (isWin) {
+ parsed.command = typeof parsed.options.shell === 'string' ? parsed.options.shell : process.env.comspec || 'cmd.exe';
+ parsed.args = ['/d', '/s', '/c', '"' + shellCommand + '"'];
+ parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped
+ } else {
+ if (typeof parsed.options.shell === 'string') {
+ parsed.command = parsed.options.shell;
+ } else if (process.platform === 'android') {
+ parsed.command = '/system/bin/sh';
+ } else {
+ parsed.command = '/bin/sh';
+ }
+
+ parsed.args = ['-c', shellCommand];
+ }
+
+ return parsed;
+}
+
+// ------------------------------------------------
+
+function parse(command, args, options) {
+ var parsed;
+
+ // Normalize arguments, similar to nodejs
+ if (args && !Array.isArray(args)) {
+ options = args;
+ args = null;
+ }
+
+ args = args ? args.slice(0) : []; // Clone array to avoid changing the original
+ options = options || {};
+
+ // Build our parsed object
+ parsed = {
+ command: command,
+ args: args,
+ options: options,
+ file: undefined,
+ original: command,
+ };
+
+ // Delegate further parsing to shell or non-shell
+ return options.shell ? parseShell(parsed) : parseNonShell(parsed);
+}
+
+module.exports = parse;
diff --git a/tools/eslint/node_modules/cross-spawn/lib/util/escapeArgument.js b/tools/eslint/node_modules/cross-spawn/lib/util/escapeArgument.js
new file mode 100644
index 0000000000..367263f669
--- /dev/null
+++ b/tools/eslint/node_modules/cross-spawn/lib/util/escapeArgument.js
@@ -0,0 +1,30 @@
+'use strict';
+
+function escapeArgument(arg, quote) {
+ // Convert to string
+ arg = '' + arg;
+
+ // If we are not going to quote the argument,
+ // escape shell metacharacters, including double and single quotes:
+ if (!quote) {
+ arg = arg.replace(/([()%!^<>&|;,"'\s])/g, '^$1');
+ } else {
+ // Sequence of backslashes followed by a double quote:
+ // double up all the backslashes and escape the double quote
+ arg = arg.replace(/(\\*)"/g, '$1$1\\"');
+
+ // Sequence of backslashes followed by the end of the string
+ // (which will become a double quote later):
+ // double up all the backslashes
+ arg = arg.replace(/(\\*)$/, '$1$1');
+
+ // All other backslashes occur literally
+
+ // Quote the whole thing:
+ arg = '"' + arg + '"';
+ }
+
+ return arg;
+}
+
+module.exports = escapeArgument;
diff --git a/tools/eslint/node_modules/cross-spawn/lib/util/escapeCommand.js b/tools/eslint/node_modules/cross-spawn/lib/util/escapeCommand.js
new file mode 100644
index 0000000000..d9c25b2656
--- /dev/null
+++ b/tools/eslint/node_modules/cross-spawn/lib/util/escapeCommand.js
@@ -0,0 +1,12 @@
+'use strict';
+
+var escapeArgument = require('./escapeArgument');
+
+function escapeCommand(command) {
+ // Do not escape if this command is not dangerous..
+ // We do this so that commands like "echo" or "ifconfig" work
+ // Quoting them, will make them unaccessible
+ return /^[a-z0-9_-]+$/i.test(command) ? command : escapeArgument(command, true);
+}
+
+module.exports = escapeCommand;
diff --git a/tools/eslint/node_modules/cross-spawn/lib/util/hasEmptyArgumentBug.js b/tools/eslint/node_modules/cross-spawn/lib/util/hasEmptyArgumentBug.js
new file mode 100644
index 0000000000..9f2eba6355
--- /dev/null
+++ b/tools/eslint/node_modules/cross-spawn/lib/util/hasEmptyArgumentBug.js
@@ -0,0 +1,18 @@
+'use strict';
+
+// See: https://github.com/IndigoUnited/node-cross-spawn/pull/34#issuecomment-221623455
+function hasEmptyArgumentBug() {
+ var nodeVer;
+
+ if (process.platform !== 'win32') {
+ return false;
+ }
+
+ nodeVer = process.version.substr(1).split('.').map(function (num) {
+ return parseInt(num, 10);
+ });
+
+ return (nodeVer[0] === 0 && nodeVer[1] < 12);
+}
+
+module.exports = hasEmptyArgumentBug();
diff --git a/tools/eslint/node_modules/cross-spawn/lib/util/readShebang.js b/tools/eslint/node_modules/cross-spawn/lib/util/readShebang.js
new file mode 100644
index 0000000000..2cf3541c99
--- /dev/null
+++ b/tools/eslint/node_modules/cross-spawn/lib/util/readShebang.js
@@ -0,0 +1,37 @@
+'use strict';
+
+var fs = require('fs');
+var LRU = require('lru-cache');
+var shebangCommand = require('shebang-command');
+
+var shebangCache = new LRU({ max: 50, maxAge: 30 * 1000 }); // Cache just for 30sec
+
+function readShebang(command) {
+ var buffer;
+ var fd;
+ var shebang;
+
+ // Check if it is in the cache first
+ if (shebangCache.has(command)) {
+ return shebangCache.get(command);
+ }
+
+ // Read the first 150 bytes from the file
+ buffer = new Buffer(150);
+
+ try {
+ fd = fs.openSync(command, 'r');
+ fs.readSync(fd, buffer, 0, 150, 0);
+ fs.closeSync(fd);
+ } catch (e) { /* empty */ }
+
+ // Attempt to extract shebang (null is returned if not a shebang)
+ shebang = shebangCommand(buffer.toString());
+
+ // Store the shebang in the cache
+ shebangCache.set(command, shebang);
+
+ return shebang;
+}
+
+module.exports = readShebang;
diff --git a/tools/eslint/node_modules/cross-spawn/lib/util/resolveCommand.js b/tools/eslint/node_modules/cross-spawn/lib/util/resolveCommand.js
new file mode 100644
index 0000000000..b7a9490974
--- /dev/null
+++ b/tools/eslint/node_modules/cross-spawn/lib/util/resolveCommand.js
@@ -0,0 +1,31 @@
+'use strict';
+
+var path = require('path');
+var which = require('which');
+var LRU = require('lru-cache');
+
+var commandCache = new LRU({ max: 50, maxAge: 30 * 1000 }); // Cache just for 30sec
+
+function resolveCommand(command, noExtension) {
+ var resolved;
+
+ noExtension = !!noExtension;
+ resolved = commandCache.get(command + '!' + noExtension);
+
+ // Check if its resolved in the cache
+ if (commandCache.has(command)) {
+ return commandCache.get(command);
+ }
+
+ try {
+ resolved = !noExtension ?
+ which.sync(command) :
+ which.sync(command, { pathExt: path.delimiter + (process.env.PATHEXT || '') });
+ } catch (e) { /* empty */ }
+
+ commandCache.set(command + '!' + noExtension, resolved);
+
+ return resolved;
+}
+
+module.exports = resolveCommand;
diff --git a/tools/eslint/node_modules/cross-spawn/package.json b/tools/eslint/node_modules/cross-spawn/package.json
new file mode 100644
index 0000000000..765850eae1
--- /dev/null
+++ b/tools/eslint/node_modules/cross-spawn/package.json
@@ -0,0 +1,83 @@
+{
+ "_from": "cross-spawn@^5.1.0",
+ "_id": "cross-spawn@5.1.0",
+ "_inBundle": false,
+ "_integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+ "_location": "/eslint/cross-spawn",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "cross-spawn@^5.1.0",
+ "name": "cross-spawn",
+ "escapedName": "cross-spawn",
+ "rawSpec": "^5.1.0",
+ "saveSpec": null,
+ "fetchSpec": "^5.1.0"
+ },
+ "_requiredBy": [
+ "/eslint"
+ ],
+ "_resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "_shasum": "e8bd0efee58fcff6f8f94510a0a554bbfa235449",
+ "_spec": "cross-spawn@^5.1.0",
+ "_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint",
+ "author": {
+ "name": "IndigoUnited",
+ "email": "hello@indigounited.com",
+ "url": "http://indigounited.com"
+ },
+ "bugs": {
+ "url": "https://github.com/IndigoUnited/node-cross-spawn/issues/"
+ },
+ "bundleDependencies": false,
+ "dependencies": {
+ "lru-cache": "^4.0.1",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ },
+ "deprecated": false,
+ "description": "Cross platform child_process#spawn and child_process#spawnSync",
+ "devDependencies": {
+ "@satazor/eslint-config": "^3.0.0",
+ "eslint": "^3.0.0",
+ "expect.js": "^0.3.0",
+ "glob": "^7.0.0",
+ "mkdirp": "^0.5.1",
+ "mocha": "^3.0.2",
+ "once": "^1.4.0",
+ "rimraf": "^2.5.0"
+ },
+ "files": [
+ "index.js",
+ "lib"
+ ],
+ "homepage": "https://github.com/IndigoUnited/node-cross-spawn#readme",
+ "keywords": [
+ "spawn",
+ "spawnSync",
+ "windows",
+ "cross",
+ "platform",
+ "path",
+ "ext",
+ "path-ext",
+ "path_ext",
+ "shebang",
+ "hashbang",
+ "cmd",
+ "execute"
+ ],
+ "license": "MIT",
+ "main": "index.js",
+ "name": "cross-spawn",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/IndigoUnited/node-cross-spawn.git"
+ },
+ "scripts": {
+ "lint": "eslint '{*.js,lib/**/*.js,test/**/*.js}'",
+ "test": "node test/prepare && mocha --bail test/test"
+ },
+ "version": "5.1.0"
+}
diff --git a/tools/eslint/node_modules/functional-red-black-tree/LICENSE b/tools/eslint/node_modules/functional-red-black-tree/LICENSE
new file mode 100644
index 0000000000..8ce206a845
--- /dev/null
+++ b/tools/eslint/node_modules/functional-red-black-tree/LICENSE
@@ -0,0 +1,22 @@
+
+The MIT License (MIT)
+
+Copyright (c) 2013 Mikola Lysenko
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/tools/eslint/node_modules/functional-red-black-tree/README.md b/tools/eslint/node_modules/functional-red-black-tree/README.md
new file mode 100644
index 0000000000..edd19cbf31
--- /dev/null
+++ b/tools/eslint/node_modules/functional-red-black-tree/README.md
@@ -0,0 +1,237 @@
+functional-red-black-tree
+=========================
+A [fully persistent](http://en.wikipedia.org/wiki/Persistent_data_structure) [red-black tree](http://en.wikipedia.org/wiki/Red%E2%80%93black_tree) written 100% in JavaScript. Works both in node.js and in the browser via [browserify](http://browserify.org/).
+
+Functional (or fully presistent) data structures allow for non-destructive updates. So if you insert an element into the tree, it returns a new tree with the inserted element rather than destructively updating the existing tree in place. Doing this requires using extra memory, and if one were naive it could cost as much as reallocating the entire tree. Instead, this data structure saves some memory by recycling references to previously allocated subtrees. This requires using only O(log(n)) additional memory per update instead of a full O(n) copy.
+
+Some advantages of this is that it is possible to apply insertions and removals to the tree while still iterating over previous versions of the tree. Functional and persistent data structures can also be useful in many geometric algorithms like point location within triangulations or ray queries, and can be used to analyze the history of executing various algorithms. This added power though comes at a cost, since it is generally a bit slower to use a functional data structure than an imperative version. However, if your application needs this behavior then you may consider using this module.
+
+# Install
+
+ npm install functional-red-black-tree
+
+# Example
+
+Here is an example of some basic usage:
+
+```javascript
+//Load the library
+var createTree = require("functional-red-black-tree")
+
+//Create a tree
+var t1 = createTree()
+
+//Insert some items into the tree
+var t2 = t1.insert(1, "foo")
+var t3 = t2.insert(2, "bar")
+
+//Remove something
+var t4 = t3.remove(1)
+```
+
+
+# API
+
+```javascript
+var createTree = require("functional-red-black-tree")
+```
+
+## Overview
+
+- [Tree methods](#tree-methods)
+ - [`var tree = createTree([compare])`](#var-tree-=-createtreecompare)
+ - [`tree.keys`](#treekeys)
+ - [`tree.values`](#treevalues)
+ - [`tree.length`](#treelength)
+ - [`tree.get(key)`](#treegetkey)
+ - [`tree.insert(key, value)`](#treeinsertkey-value)
+ - [`tree.remove(key)`](#treeremovekey)
+ - [`tree.find(key)`](#treefindkey)
+ - [`tree.ge(key)`](#treegekey)
+ - [`tree.gt(key)`](#treegtkey)
+ - [`tree.lt(key)`](#treeltkey)
+ - [`tree.le(key)`](#treelekey)
+ - [`tree.at(position)`](#treeatposition)
+ - [`tree.begin`](#treebegin)
+ - [`tree.end`](#treeend)
+ - [`tree.forEach(visitor(key,value)[, lo[, hi]])`](#treeforEachvisitorkeyvalue-lo-hi)
+ - [`tree.root`](#treeroot)
+- [Node properties](#node-properties)
+ - [`node.key`](#nodekey)
+ - [`node.value`](#nodevalue)
+ - [`node.left`](#nodeleft)
+ - [`node.right`](#noderight)
+- [Iterator methods](#iterator-methods)
+ - [`iter.key`](#iterkey)
+ - [`iter.value`](#itervalue)
+ - [`iter.node`](#iternode)
+ - [`iter.tree`](#itertree)
+ - [`iter.index`](#iterindex)
+ - [`iter.valid`](#itervalid)
+ - [`iter.clone()`](#iterclone)
+ - [`iter.remove()`](#iterremove)
+ - [`iter.update(value)`](#iterupdatevalue)
+ - [`iter.next()`](#iternext)
+ - [`iter.prev()`](#iterprev)
+ - [`iter.hasNext`](#iterhasnext)
+ - [`iter.hasPrev`](#iterhasprev)
+
+## Tree methods
+
+### `var tree = createTree([compare])`
+Creates an empty functional tree
+
+* `compare` is an optional comparison function, same semantics as array.sort()
+
+**Returns** An empty tree ordered by `compare`
+
+### `tree.keys`
+A sorted array of all the keys in the tree
+
+### `tree.values`
+An array array of all the values in the tree
+
+### `tree.length`
+The number of items in the tree
+
+### `tree.get(key)`
+Retrieves the value associated to the given key
+
+* `key` is the key of the item to look up
+
+**Returns** The value of the first node associated to `key`
+
+### `tree.insert(key, value)`
+Creates a new tree with the new pair inserted.
+
+* `key` is the key of the item to insert
+* `value` is the value of the item to insert
+
+**Returns** A new tree with `key` and `value` inserted
+
+### `tree.remove(key)`
+Removes the first item with `key` in the tree
+
+* `key` is the key of the item to remove
+
+**Returns** A new tree with the given item removed if it exists
+
+### `tree.find(key)`
+Returns an iterator pointing to the first item in the tree with `key`, otherwise `null`.
+
+### `tree.ge(key)`
+Find the first item in the tree whose key is `>= key`
+
+* `key` is the key to search for
+
+**Returns** An iterator at the given element.
+
+### `tree.gt(key)`
+Finds the first item in the tree whose key is `> key`
+
+* `key` is the key to search for
+
+**Returns** An iterator at the given element
+
+### `tree.lt(key)`
+Finds the last item in the tree whose key is `< key`
+
+* `key` is the key to search for
+
+**Returns** An iterator at the given element
+
+### `tree.le(key)`
+Finds the last item in the tree whose key is `<= key`
+
+* `key` is the key to search for
+
+**Returns** An iterator at the given element
+
+### `tree.at(position)`
+Finds an iterator starting at the given element
+
+* `position` is the index at which the iterator gets created
+
+**Returns** An iterator starting at position
+
+### `tree.begin`
+An iterator pointing to the first element in the tree
+
+### `tree.end`
+An iterator pointing to the last element in the tree
+
+### `tree.forEach(visitor(key,value)[, lo[, hi]])`
+Walks a visitor function over the nodes of the tree in order.
+
+* `visitor(key,value)` is a callback that gets executed on each node. If a truthy value is returned from the visitor, then iteration is stopped.
+* `lo` is an optional start of the range to visit (inclusive)
+* `hi` is an optional end of the range to visit (non-inclusive)
+
+**Returns** The last value returned by the callback
+
+### `tree.root`
+Returns the root node of the tree
+
+
+## Node properties
+Each node of the tree has the following properties:
+
+### `node.key`
+The key associated to the node
+
+### `node.value`
+The value associated to the node
+
+### `node.left`
+The left subtree of the node
+
+### `node.right`
+The right subtree of the node
+
+## Iterator methods
+
+### `iter.key`
+The key of the item referenced by the iterator
+
+### `iter.value`
+The value of the item referenced by the iterator
+
+### `iter.node`
+The value of the node at the iterator's current position. `null` is iterator is node valid.
+
+### `iter.tree`
+The tree associated to the iterator
+
+### `iter.index`
+Returns the position of this iterator in the sequence.
+
+### `iter.valid`
+Checks if the iterator is valid
+
+### `iter.clone()`
+Makes a copy of the iterator
+
+### `iter.remove()`
+Removes the item at the position of the iterator
+
+**Returns** A new binary search tree with `iter`'s item removed
+
+### `iter.update(value)`
+Updates the value of the node in the tree at this iterator
+
+**Returns** A new binary search tree with the corresponding node updated
+
+### `iter.next()`
+Advances the iterator to the next position
+
+### `iter.prev()`
+Moves the iterator backward one element
+
+### `iter.hasNext`
+If true, then the iterator is not at the end of the sequence
+
+### `iter.hasPrev`
+If true, then the iterator is not at the beginning of the sequence
+
+# Credits
+(c) 2013 Mikola Lysenko. MIT License \ No newline at end of file
diff --git a/tools/eslint/node_modules/functional-red-black-tree/bench/test.js b/tools/eslint/node_modules/functional-red-black-tree/bench/test.js
new file mode 100644
index 0000000000..41c5a31c3a
--- /dev/null
+++ b/tools/eslint/node_modules/functional-red-black-tree/bench/test.js
@@ -0,0 +1,11 @@
+"use strict"
+
+var createTree = require("../rbtree.js")
+
+var t = createTree()
+
+var s = Date.now()
+for(var i=0; i<100000; ++i) {
+ t = t.insert(Math.random(), Math.random())
+}
+console.log(Date.now() - s) \ No newline at end of file
diff --git a/tools/eslint/node_modules/functional-red-black-tree/package.json b/tools/eslint/node_modules/functional-red-black-tree/package.json
new file mode 100644
index 0000000000..57693e21ac
--- /dev/null
+++ b/tools/eslint/node_modules/functional-red-black-tree/package.json
@@ -0,0 +1,68 @@
+{
+ "_from": "functional-red-black-tree@^1.0.1",
+ "_id": "functional-red-black-tree@1.0.1",
+ "_inBundle": false,
+ "_integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
+ "_location": "/eslint/functional-red-black-tree",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "functional-red-black-tree@^1.0.1",
+ "name": "functional-red-black-tree",
+ "escapedName": "functional-red-black-tree",
+ "rawSpec": "^1.0.1",
+ "saveSpec": null,
+ "fetchSpec": "^1.0.1"
+ },
+ "_requiredBy": [
+ "/eslint"
+ ],
+ "_resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "_shasum": "1b0ab3bd553b2a0d6399d29c0e3ea0b252078327",
+ "_spec": "functional-red-black-tree@^1.0.1",
+ "_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint",
+ "author": {
+ "name": "Mikola Lysenko"
+ },
+ "bugs": {
+ "url": "https://github.com/mikolalysenko/functional-red-black-tree/issues"
+ },
+ "bundleDependencies": false,
+ "dependencies": {},
+ "deprecated": false,
+ "description": "A fully persistent balanced binary search tree",
+ "devDependencies": {
+ "iota-array": "^0.0.1",
+ "tape": "^2.12.0"
+ },
+ "directories": {
+ "test": "test"
+ },
+ "homepage": "https://github.com/mikolalysenko/functional-red-black-tree#readme",
+ "keywords": [
+ "functional",
+ "red",
+ "black",
+ "tree",
+ "binary",
+ "search",
+ "balance",
+ "persistent",
+ "fully",
+ "dynamic",
+ "data",
+ "structure"
+ ],
+ "license": "MIT",
+ "main": "rbtree.js",
+ "name": "functional-red-black-tree",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/mikolalysenko/functional-red-black-tree.git"
+ },
+ "scripts": {
+ "test": "tape test/*.js"
+ },
+ "version": "1.0.1"
+}
diff --git a/tools/eslint/node_modules/functional-red-black-tree/rbtree.js b/tools/eslint/node_modules/functional-red-black-tree/rbtree.js
new file mode 100644
index 0000000000..5a69a4090d
--- /dev/null
+++ b/tools/eslint/node_modules/functional-red-black-tree/rbtree.js
@@ -0,0 +1,996 @@
+"use strict"
+
+module.exports = createRBTree
+
+var RED = 0
+var BLACK = 1
+
+function RBNode(color, key, value, left, right, count) {
+ this._color = color
+ this.key = key
+ this.value = value
+ this.left = left
+ this.right = right
+ this._count = count
+}
+
+function cloneNode(node) {
+ return new RBNode(node._color, node.key, node.value, node.left, node.right, node._count)
+}
+
+function repaint(color, node) {
+ return new RBNode(color, node.key, node.value, node.left, node.right, node._count)
+}
+
+function recount(node) {
+ node._count = 1 + (node.left ? node.left._count : 0) + (node.right ? node.right._count : 0)
+}
+
+function RedBlackTree(compare, root) {
+ this._compare = compare
+ this.root = root
+}
+
+var proto = RedBlackTree.prototype
+
+Object.defineProperty(proto, "keys", {
+ get: function() {
+ var result = []
+ this.forEach(function(k,v) {
+ result.push(k)
+ })
+ return result
+ }
+})
+
+Object.defineProperty(proto, "values", {
+ get: function() {
+ var result = []
+ this.forEach(function(k,v) {
+ result.push(v)
+ })
+ return result
+ }
+})
+
+//Returns the number of nodes in the tree
+Object.defineProperty(proto, "length", {
+ get: function() {
+ if(this.root) {
+ return this.root._count
+ }
+ return 0
+ }
+})
+
+//Insert a new item into the tree
+proto.insert = function(key, value) {
+ var cmp = this._compare
+ //Find point to insert new node at
+ var n = this.root
+ var n_stack = []
+ var d_stack = []
+ while(n) {
+ var d = cmp(key, n.key)
+ n_stack.push(n)
+ d_stack.push(d)
+ if(d <= 0) {
+ n = n.left
+ } else {
+ n = n.right
+ }
+ }
+ //Rebuild path to leaf node
+ n_stack.push(new RBNode(RED, key, value, null, null, 1))
+ for(var s=n_stack.length-2; s>=0; --s) {
+ var n = n_stack[s]
+ if(d_stack[s] <= 0) {
+ n_stack[s] = new RBNode(n._color, n.key, n.value, n_stack[s+1], n.right, n._count+1)
+ } else {
+ n_stack[s] = new RBNode(n._color, n.key, n.value, n.left, n_stack[s+1], n._count+1)
+ }
+ }
+ //Rebalance tree using rotations
+ //console.log("start insert", key, d_stack)
+ for(var s=n_stack.length-1; s>1; --s) {
+ var p = n_stack[s-1]
+ var n = n_stack[s]
+ if(p._color === BLACK || n._color === BLACK) {
+ break
+ }
+ var pp = n_stack[s-2]
+ if(pp.left === p) {
+ if(p.left === n) {
+ var y = pp.right
+ if(y && y._color === RED) {
+ //console.log("LLr")
+ p._color = BLACK
+ pp.right = repaint(BLACK, y)
+ pp._color = RED
+ s -= 1
+ } else {
+ //console.log("LLb")
+ pp._color = RED
+ pp.left = p.right
+ p._color = BLACK
+ p.right = pp
+ n_stack[s-2] = p
+ n_stack[s-1] = n
+ recount(pp)
+ recount(p)
+ if(s >= 3) {
+ var ppp = n_stack[s-3]
+ if(ppp.left === pp) {
+ ppp.left = p
+ } else {
+ ppp.right = p
+ }
+ }
+ break
+ }
+ } else {
+ var y = pp.right
+ if(y && y._color === RED) {
+ //console.log("LRr")
+ p._color = BLACK
+ pp.right = repaint(BLACK, y)
+ pp._color = RED
+ s -= 1
+ } else {
+ //console.log("LRb")
+ p.right = n.left
+ pp._color = RED
+ pp.left = n.right
+ n._color = BLACK
+ n.left = p
+ n.right = pp
+ n_stack[s-2] = n
+ n_stack[s-1] = p
+ recount(pp)
+ recount(p)
+ recount(n)
+ if(s >= 3) {
+ var ppp = n_stack[s-3]
+ if(ppp.left === pp) {
+ ppp.left = n
+ } else {
+ ppp.right = n
+ }
+ }
+ break
+ }
+ }
+ } else {
+ if(p.right === n) {
+ var y = pp.left
+ if(y && y._color === RED) {
+ //console.log("RRr", y.key)
+ p._color = BLACK
+ pp.left = repaint(BLACK, y)
+ pp._color = RED
+ s -= 1
+ } else {
+ //console.log("RRb")
+ pp._color = RED
+ pp.right = p.left
+ p._color = BLACK
+ p.left = pp
+ n_stack[s-2] = p
+ n_stack[s-1] = n
+ recount(pp)
+ recount(p)
+ if(s >= 3) {
+ var ppp = n_stack[s-3]
+ if(ppp.right === pp) {
+ ppp.right = p
+ } else {
+ ppp.left = p
+ }
+ }
+ break
+ }
+ } else {
+ var y = pp.left
+ if(y && y._color === RED) {
+ //console.log("RLr")
+ p._color = BLACK
+ pp.left = repaint(BLACK, y)
+ pp._color = RED
+ s -= 1
+ } else {
+ //console.log("RLb")
+ p.left = n.right
+ pp._color = RED
+ pp.right = n.left
+ n._color = BLACK
+ n.right = p
+ n.left = pp
+ n_stack[s-2] = n
+ n_stack[s-1] = p
+ recount(pp)
+ recount(p)
+ recount(n)
+ if(s >= 3) {
+ var ppp = n_stack[s-3]
+ if(ppp.right === pp) {
+ ppp.right = n
+ } else {
+ ppp.left = n
+ }
+ }
+ break
+ }
+ }
+ }
+ }
+ //Return new tree
+ n_stack[0]._color = BLACK
+ return new RedBlackTree(cmp, n_stack[0])
+}
+
+
+//Visit all nodes inorder
+function doVisitFull(visit, node) {
+ if(node.left) {
+ var v = doVisitFull(visit, node.left)
+ if(v) { return v }
+ }
+ var v = visit(node.key, node.value)
+ if(v) { return v }
+ if(node.right) {
+ return doVisitFull(visit, node.right)
+ }
+}
+
+//Visit half nodes in order
+function doVisitHalf(lo, compare, visit, node) {
+ var l = compare(lo, node.key)
+ if(l <= 0) {
+ if(node.left) {
+ var v = doVisitHalf(lo, compare, visit, node.left)
+ if(v) { return v }
+ }
+ var v = visit(node.key, node.value)
+ if(v) { return v }
+ }
+ if(node.right) {
+ return doVisitHalf(lo, compare, visit, node.right)
+ }
+}
+
+//Visit all nodes within a range
+function doVisit(lo, hi, compare, visit, node) {
+ var l = compare(lo, node.key)
+ var h = compare(hi, node.key)
+ var v
+ if(l <= 0) {
+ if(node.left) {
+ v = doVisit(lo, hi, compare, visit, node.left)
+ if(v) { return v }
+ }
+ if(h > 0) {
+ v = visit(node.key, node.value)
+ if(v) { return v }
+ }
+ }
+ if(h > 0 && node.right) {
+ return doVisit(lo, hi, compare, visit, node.right)
+ }
+}
+
+
+proto.forEach = function rbTreeForEach(visit, lo, hi) {
+ if(!this.root) {
+ return
+ }
+ switch(arguments.length) {
+ case 1:
+ return doVisitFull(visit, this.root)
+ break
+
+ case 2:
+ return doVisitHalf(lo, this._compare, visit, this.root)
+ break
+
+ case 3:
+ if(this._compare(lo, hi) >= 0) {
+ return
+ }
+ return doVisit(lo, hi, this._compare, visit, this.root)
+ break
+ }
+}
+
+//First item in list
+Object.defineProperty(proto, "begin", {
+ get: function() {
+ var stack = []
+ var n = this.root
+ while(n) {
+ stack.push(n)
+ n = n.left
+ }
+ return new RedBlackTreeIterator(this, stack)
+ }
+})
+
+//Last item in list
+Object.defineProperty(proto, "end", {
+ get: function() {
+ var stack = []
+ var n = this.root
+ while(n) {
+ stack.push(n)
+ n = n.right
+ }
+ return new RedBlackTreeIterator(this, stack)
+ }
+})
+
+//Find the ith item in the tree
+proto.at = function(idx) {
+ if(idx < 0) {
+ return new RedBlackTreeIterator(this, [])
+ }
+ var n = this.root
+ var stack = []
+ while(true) {
+ stack.push(n)
+ if(n.left) {
+ if(idx < n.left._count) {
+ n = n.left
+ continue
+ }
+ idx -= n.left._count
+ }
+ if(!idx) {
+ return new RedBlackTreeIterator(this, stack)
+ }
+ idx -= 1
+ if(n.right) {
+ if(idx >= n.right._count) {
+ break
+ }
+ n = n.right
+ } else {
+ break
+ }
+ }
+ return new RedBlackTreeIterator(this, [])
+}
+
+proto.ge = function(key) {
+ var cmp = this._compare
+ var n = this.root
+ var stack = []
+ var last_ptr = 0
+ while(n) {
+ var d = cmp(key, n.key)
+ stack.push(n)
+ if(d <= 0) {
+ last_ptr = stack.length
+ }
+ if(d <= 0) {
+ n = n.left
+ } else {
+ n = n.right
+ }
+ }
+ stack.length = last_ptr
+ return new RedBlackTreeIterator(this, stack)
+}
+
+proto.gt = function(key) {
+ var cmp = this._compare
+ var n = this.root
+ var stack = []
+ var last_ptr = 0
+ while(n) {
+ var d = cmp(key, n.key)
+ stack.push(n)
+ if(d < 0) {
+ last_ptr = stack.length
+ }
+ if(d < 0) {
+ n = n.left
+ } else {
+ n = n.right
+ }
+ }
+ stack.length = last_ptr
+ return new RedBlackTreeIterator(this, stack)
+}
+
+proto.lt = function(key) {
+ var cmp = this._compare
+ var n = this.root
+ var stack = []
+ var last_ptr = 0
+ while(n) {
+ var d = cmp(key, n.key)
+ stack.push(n)
+ if(d > 0) {
+ last_ptr = stack.length
+ }
+ if(d <= 0) {
+ n = n.left
+ } else {
+ n = n.right
+ }
+ }
+ stack.length = last_ptr
+ return new RedBlackTreeIterator(this, stack)
+}
+
+proto.le = function(key) {
+ var cmp = this._compare
+ var n = this.root
+ var stack = []
+ var last_ptr = 0
+ while(n) {
+ var d = cmp(key, n.key)
+ stack.push(n)
+ if(d >= 0) {
+ last_ptr = stack.length
+ }
+ if(d < 0) {
+ n = n.left
+ } else {
+ n = n.right
+ }
+ }
+ stack.length = last_ptr
+ return new RedBlackTreeIterator(this, stack)
+}
+
+//Finds the item with key if it exists
+proto.find = function(key) {
+ var cmp = this._compare
+ var n = this.root
+ var stack = []
+ while(n) {
+ var d = cmp(key, n.key)
+ stack.push(n)
+ if(d === 0) {
+ return new RedBlackTreeIterator(this, stack)
+ }
+ if(d <= 0) {
+ n = n.left
+ } else {
+ n = n.right
+ }
+ }
+ return new RedBlackTreeIterator(this, [])
+}
+
+//Removes item with key from tree
+proto.remove = function(key) {
+ var iter = this.find(key)
+ if(iter) {
+ return iter.remove()
+ }
+ return this
+}
+
+//Returns the item at `key`
+proto.get = function(key) {
+ var cmp = this._compare
+ var n = this.root
+ while(n) {
+ var d = cmp(key, n.key)
+ if(d === 0) {
+ return n.value
+ }
+ if(d <= 0) {
+ n = n.left
+ } else {
+ n = n.right
+ }
+ }
+ return
+}
+
+//Iterator for red black tree
+function RedBlackTreeIterator(tree, stack) {
+ this.tree = tree
+ this._stack = stack
+}
+
+var iproto = RedBlackTreeIterator.prototype
+
+//Test if iterator is valid
+Object.defineProperty(iproto, "valid", {
+ get: function() {
+ return this._stack.length > 0
+ }
+})
+
+//Node of the iterator
+Object.defineProperty(iproto, "node", {
+ get: function() {
+ if(this._stack.length > 0) {
+ return this._stack[this._stack.length-1]
+ }
+ return null
+ },
+ enumerable: true
+})
+
+//Makes a copy of an iterator
+iproto.clone = function() {
+ return new RedBlackTreeIterator(this.tree, this._stack.slice())
+}
+
+//Swaps two nodes
+function swapNode(n, v) {
+ n.key = v.key
+ n.value = v.value
+ n.left = v.left
+ n.right = v.right
+ n._color = v._color
+ n._count = v._count
+}
+
+//Fix up a double black node in a tree
+function fixDoubleBlack(stack) {
+ var n, p, s, z
+ for(var i=stack.length-1; i>=0; --i) {
+ n = stack[i]
+ if(i === 0) {
+ n._color = BLACK
+ return
+ }
+ //console.log("visit node:", n.key, i, stack[i].key, stack[i-1].key)
+ p = stack[i-1]
+ if(p.left === n) {
+ //console.log("left child")
+ s = p.right
+ if(s.right && s.right._color === RED) {
+ //console.log("case 1: right sibling child red")
+ s = p.right = cloneNode(s)
+ z = s.right = cloneNode(s.right)
+ p.right = s.left
+ s.left = p
+ s.right = z
+ s._color = p._color
+ n._color = BLACK
+ p._color = BLACK
+ z._color = BLACK
+ recount(p)
+ recount(s)
+ if(i > 1) {
+ var pp = stack[i-2]
+ if(pp.left === p) {
+ pp.left = s
+ } else {
+ pp.right = s
+ }
+ }
+ stack[i-1] = s
+ return
+ } else if(s.left && s.left._color === RED) {
+ //console.log("case 1: left sibling child red")
+ s = p.right = cloneNode(s)
+ z = s.left = cloneNode(s.left)
+ p.right = z.left
+ s.left = z.right
+ z.left = p
+ z.right = s
+ z._color = p._color
+ p._color = BLACK
+ s._color = BLACK
+ n._color = BLACK
+ recount(p)
+ recount(s)
+ recount(z)
+ if(i > 1) {
+ var pp = stack[i-2]
+ if(pp.left === p) {
+ pp.left = z
+ } else {
+ pp.right = z
+ }
+ }
+ stack[i-1] = z
+ return
+ }
+ if(s._color === BLACK) {
+ if(p._color === RED) {
+ //console.log("case 2: black sibling, red parent", p.right.value)
+ p._color = BLACK
+ p.right = repaint(RED, s)
+ return
+ } else {
+ //console.log("case 2: black sibling, black parent", p.right.value)
+ p.right = repaint(RED, s)
+ continue
+ }
+ } else {
+ //console.log("case 3: red sibling")
+ s = cloneNode(s)
+ p.right = s.left
+ s.left = p
+ s._color = p._color
+ p._color = RED
+ recount(p)
+ recount(s)
+ if(i > 1) {
+ var pp = stack[i-2]
+ if(pp.left === p) {
+ pp.left = s
+ } else {
+ pp.right = s
+ }
+ }
+ stack[i-1] = s
+ stack[i] = p
+ if(i+1 < stack.length) {
+ stack[i+1] = n
+ } else {
+ stack.push(n)
+ }
+ i = i+2
+ }
+ } else {
+ //console.log("right child")
+ s = p.left
+ if(s.left && s.left._color === RED) {
+ //console.log("case 1: left sibling child red", p.value, p._color)
+ s = p.left = cloneNode(s)
+ z = s.left = cloneNode(s.left)
+ p.left = s.right
+ s.right = p
+ s.left = z
+ s._color = p._color
+ n._color = BLACK
+ p._color = BLACK
+ z._color = BLACK
+ recount(p)
+ recount(s)
+ if(i > 1) {
+ var pp = stack[i-2]
+ if(pp.right === p) {
+ pp.right = s
+ } else {
+ pp.left = s
+ }
+ }
+ stack[i-1] = s
+ return
+ } else if(s.right && s.right._color === RED) {
+ //console.log("case 1: right sibling child red")
+ s = p.left = cloneNode(s)
+ z = s.right = cloneNode(s.right)
+ p.left = z.right
+ s.right = z.left
+ z.right = p
+ z.left = s
+ z._color = p._color
+ p._color = BLACK
+ s._color = BLACK
+ n._color = BLACK
+ recount(p)
+ recount(s)
+ recount(z)
+ if(i > 1) {
+ var pp = stack[i-2]
+ if(pp.right === p) {
+ pp.right = z
+ } else {
+ pp.left = z
+ }
+ }
+ stack[i-1] = z
+ return
+ }
+ if(s._color === BLACK) {
+ if(p._color === RED) {
+ //console.log("case 2: black sibling, red parent")
+ p._color = BLACK
+ p.left = repaint(RED, s)
+ return
+ } else {
+ //console.log("case 2: black sibling, black parent")
+ p.left = repaint(RED, s)
+ continue
+ }
+ } else {
+ //console.log("case 3: red sibling")
+ s = cloneNode(s)
+ p.left = s.right
+ s.right = p
+ s._color = p._color
+ p._color = RED
+ recount(p)
+ recount(s)
+ if(i > 1) {
+ var pp = stack[i-2]
+ if(pp.right === p) {
+ pp.right = s
+ } else {
+ pp.left = s
+ }
+ }
+ stack[i-1] = s
+ stack[i] = p
+ if(i+1 < stack.length) {
+ stack[i+1] = n
+ } else {
+ stack.push(n)
+ }
+ i = i+2
+ }
+ }
+ }
+}
+
+//Removes item at iterator from tree
+iproto.remove = function() {
+ var stack = this._stack
+ if(stack.length === 0) {
+ return this.tree
+ }
+ //First copy path to node
+ var cstack = new Array(stack.length)
+ var n = stack[stack.length-1]
+ cstack[cstack.length-1] = new RBNode(n._color, n.key, n.value, n.left, n.right, n._count)
+ for(var i=stack.length-2; i>=0; --i) {
+ var n = stack[i]
+ if(n.left === stack[i+1]) {
+ cstack[i] = new RBNode(n._color, n.key, n.value, cstack[i+1], n.right, n._count)
+ } else {
+ cstack[i] = new RBNode(n._color, n.key, n.value, n.left, cstack[i+1], n._count)
+ }
+ }
+
+ //Get node
+ n = cstack[cstack.length-1]
+ //console.log("start remove: ", n.value)
+
+ //If not leaf, then swap with previous node
+ if(n.left && n.right) {
+ //console.log("moving to leaf")
+
+ //First walk to previous leaf
+ var split = cstack.length
+ n = n.left
+ while(n.right) {
+ cstack.push(n)
+ n = n.right
+ }
+ //Copy path to leaf
+ var v = cstack[split-1]
+ cstack.push(new RBNode(n._color, v.key, v.value, n.left, n.right, n._count))
+ cstack[split-1].key = n.key
+ cstack[split-1].value = n.value
+
+ //Fix up stack
+ for(var i=cstack.length-2; i>=split; --i) {
+ n = cstack[i]
+ cstack[i] = new RBNode(n._color, n.key, n.value, n.left, cstack[i+1], n._count)
+ }
+ cstack[split-1].left = cstack[split]
+ }
+ //console.log("stack=", cstack.map(function(v) { return v.value }))
+
+ //Remove leaf node
+ n = cstack[cstack.length-1]
+ if(n._color === RED) {
+ //Easy case: removing red leaf
+ //console.log("RED leaf")
+ var p = cstack[cstack.length-2]
+ if(p.left === n) {
+ p.left = null
+ } else if(p.right === n) {
+ p.right = null
+ }
+ cstack.pop()
+ for(var i=0; i<cstack.length; ++i) {
+ cstack[i]._count--
+ }
+ return new RedBlackTree(this.tree._compare, cstack[0])
+ } else {
+ if(n.left || n.right) {
+ //Second easy case: Single child black parent
+ //console.log("BLACK single child")
+ if(n.left) {
+ swapNode(n, n.left)
+ } else if(n.right) {
+ swapNode(n, n.right)
+ }
+ //Child must be red, so repaint it black to balance color
+ n._color = BLACK
+ for(var i=0; i<cstack.length-1; ++i) {
+ cstack[i]._count--
+ }
+ return new RedBlackTree(this.tree._compare, cstack[0])
+ } else if(cstack.length === 1) {
+ //Third easy case: root
+ //console.log("ROOT")
+ return new RedBlackTree(this.tree._compare, null)
+ } else {
+ //Hard case: Repaint n, and then do some nasty stuff
+ //console.log("BLACK leaf no children")
+ for(var i=0; i<cstack.length; ++i) {
+ cstack[i]._count--
+ }
+ var parent = cstack[cstack.length-2]
+ fixDoubleBlack(cstack)
+ //Fix up links
+ if(parent.left === n) {
+ parent.left = null
+ } else {
+ parent.right = null
+ }
+ }
+ }
+ return new RedBlackTree(this.tree._compare, cstack[0])
+}
+
+//Returns key
+Object.defineProperty(iproto, "key", {
+ get: function() {
+ if(this._stack.length > 0) {
+ return this._stack[this._stack.length-1].key
+ }
+ return
+ },
+ enumerable: true
+})
+
+//Returns value
+Object.defineProperty(iproto, "value", {
+ get: function() {
+ if(this._stack.length > 0) {
+ return this._stack[this._stack.length-1].value
+ }
+ return
+ },
+ enumerable: true
+})
+
+
+//Returns the position of this iterator in the sorted list
+Object.defineProperty(iproto, "index", {
+ get: function() {
+ var idx = 0
+ var stack = this._stack
+ if(stack.length === 0) {
+ var r = this.tree.root
+ if(r) {
+ return r._count
+ }
+ return 0
+ } else if(stack[stack.length-1].left) {
+ idx = stack[stack.length-1].left._count
+ }
+ for(var s=stack.length-2; s>=0; --s) {
+ if(stack[s+1] === stack[s].right) {
+ ++idx
+ if(stack[s].left) {
+ idx += stack[s].left._count
+ }
+ }
+ }
+ return idx
+ },
+ enumerable: true
+})
+
+//Advances iterator to next element in list
+iproto.next = function() {
+ var stack = this._stack
+ if(stack.length === 0) {
+ return
+ }
+ var n = stack[stack.length-1]
+ if(n.right) {
+ n = n.right
+ while(n) {
+ stack.push(n)
+ n = n.left
+ }
+ } else {
+ stack.pop()
+ while(stack.length > 0 && stack[stack.length-1].right === n) {
+ n = stack[stack.length-1]
+ stack.pop()
+ }
+ }
+}
+
+//Checks if iterator is at end of tree
+Object.defineProperty(iproto, "hasNext", {
+ get: function() {
+ var stack = this._stack
+ if(stack.length === 0) {
+ return false
+ }
+ if(stack[stack.length-1].right) {
+ return true
+ }
+ for(var s=stack.length-1; s>0; --s) {
+ if(stack[s-1].left === stack[s]) {
+ return true
+ }
+ }
+ return false
+ }
+})
+
+//Update value
+iproto.update = function(value) {
+ var stack = this._stack
+ if(stack.length === 0) {
+ throw new Error("Can't update empty node!")
+ }
+ var cstack = new Array(stack.length)
+ var n = stack[stack.length-1]
+ cstack[cstack.length-1] = new RBNode(n._color, n.key, value, n.left, n.right, n._count)
+ for(var i=stack.length-2; i>=0; --i) {
+ n = stack[i]
+ if(n.left === stack[i+1]) {
+ cstack[i] = new RBNode(n._color, n.key, n.value, cstack[i+1], n.right, n._count)
+ } else {
+ cstack[i] = new RBNode(n._color, n.key, n.value, n.left, cstack[i+1], n._count)
+ }
+ }
+ return new RedBlackTree(this.tree._compare, cstack[0])
+}
+
+//Moves iterator backward one element
+iproto.prev = function() {
+ var stack = this._stack
+ if(stack.length === 0) {
+ return
+ }
+ var n = stack[stack.length-1]
+ if(n.left) {
+ n = n.left
+ while(n) {
+ stack.push(n)
+ n = n.right
+ }
+ } else {
+ stack.pop()
+ while(stack.length > 0 && stack[stack.length-1].left === n) {
+ n = stack[stack.length-1]
+ stack.pop()
+ }
+ }
+}
+
+//Checks if iterator is at start of tree
+Object.defineProperty(iproto, "hasPrev", {
+ get: function() {
+ var stack = this._stack
+ if(stack.length === 0) {
+ return false
+ }
+ if(stack[stack.length-1].left) {
+ return true
+ }
+ for(var s=stack.length-1; s>0; --s) {
+ if(stack[s-1].right === stack[s]) {
+ return true
+ }
+ }
+ return false
+ }
+})
+
+//Default comparison function
+function defaultCompare(a, b) {
+ if(a < b) {
+ return -1
+ }
+ if(a > b) {
+ return 1
+ }
+ return 0
+}
+
+//Build a tree
+function createRBTree(compare) {
+ return new RedBlackTree(compare || defaultCompare, null)
+} \ No newline at end of file
diff --git a/tools/eslint/node_modules/is-alphabetical/history.md b/tools/eslint/node_modules/is-alphabetical/history.md
deleted file mode 100644
index ef81df4296..0000000000
--- a/tools/eslint/node_modules/is-alphabetical/history.md
+++ /dev/null
@@ -1,6 +0,0 @@
-<!--remark setext-->
-
-<!--lint disable no-multiple-toplevel-headings -->
-
-1.0.0 / 2016-07-11
-==================
diff --git a/tools/eslint/node_modules/is-alphabetical/index.js b/tools/eslint/node_modules/is-alphabetical/index.js
index 090d47010f..3b27588720 100644
--- a/tools/eslint/node_modules/is-alphabetical/index.js
+++ b/tools/eslint/node_modules/is-alphabetical/index.js
@@ -1,25 +1,9 @@
-/**
- * @author Titus Wormer
- * @copyright 2016 Titus Wormer
- * @license MIT
- * @module is-alphabetical
- * @fileoverview Check if a character is alphabetical.
- */
-
'use strict';
-/* eslint-env commonjs */
-
-/* Expose. */
module.exports = alphabetical;
-/**
- * Check whether the given character code, or the character
- * code at the first character, is alphabetical.
- *
- * @param {string|number} character
- * @return {boolean} - Whether `character` is alphabetical.
- */
+/* Check if the given character code, or the character
+ * code at the first character, is alphabetical. */
function alphabetical(character) {
var code = typeof character === 'string' ?
character.charCodeAt(0) : character;
diff --git a/tools/eslint/node_modules/is-alphabetical/package.json b/tools/eslint/node_modules/is-alphabetical/package.json
index 7033fc8f26..2c7811526a 100644
--- a/tools/eslint/node_modules/is-alphabetical/package.json
+++ b/tools/eslint/node_modules/is-alphabetical/package.json
@@ -1,8 +1,8 @@
{
"_from": "is-alphabetical@^1.0.0",
- "_id": "is-alphabetical@1.0.0",
+ "_id": "is-alphabetical@1.0.1",
"_inBundle": false,
- "_integrity": "sha1-4lRMEwWCVfIUTLdXBmzTNCocjEY=",
+ "_integrity": "sha1-x3B5zJHU76x3W+EDS/LSQ/lebwg=",
"_location": "/is-alphabetical",
"_phantomChildren": {},
"_requested": {
@@ -19,8 +19,8 @@
"/is-alphanumerical",
"/remark-parse"
],
- "_resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.0.tgz",
- "_shasum": "e2544c13058255f2144cb757066cd3342a1c8c46",
+ "_resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.1.tgz",
+ "_shasum": "c77079cc91d4efac775be1034bf2d243f95e6f08",
"_spec": "is-alphabetical@^1.0.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/remark-parse",
"author": {
@@ -43,16 +43,13 @@
"deprecated": false,
"description": "Check if a character is alphabetical",
"devDependencies": {
- "browserify": "^13.0.1",
+ "browserify": "^14.1.0",
"esmangle": "^1.0.1",
- "nyc": "^7.0.0",
- "remark-cli": "^1.0.0",
- "remark-comment-config": "^4.0.0",
- "remark-github": "^5.0.0",
- "remark-lint": "^4.0.0",
- "remark-validate-links": "^4.0.0",
+ "nyc": "^11.0.0",
+ "remark-cli": "^3.0.0",
+ "remark-preset-wooorm": "^3.0.0",
"tape": "^4.0.0",
- "xo": "^0.16.0"
+ "xo": "^0.18.0"
},
"files": [
"index.js"
@@ -74,16 +71,9 @@
"branches": 100
},
"remarkConfig": {
- "output": true,
"plugins": [
- "comment-config",
- "github",
- "lint",
- "validate-links"
- ],
- "settings": {
- "bullet": "*"
- }
+ "preset-wooorm"
+ ]
},
"repository": {
"type": "git",
@@ -93,18 +83,21 @@
"build": "npm run build-md && npm run build-bundle && npm run build-mangle",
"build-bundle": "browserify index.js --bare -s isAlphabetical > is-alphabetical.js",
"build-mangle": "esmangle < is-alphabetical.js > is-alphabetical.min.js",
- "build-md": "remark . --quiet --frail",
+ "build-md": "remark . -qfo",
"lint": "xo",
"test": "npm run build && npm run lint && npm run test-coverage",
"test-api": "node test",
"test-coverage": "nyc --reporter lcov tape test.js"
},
- "version": "1.0.0",
+ "version": "1.0.1",
"xo": {
"space": true,
+ "esnext": false,
+ "rules": {
+ "capitalized-comments": "off"
+ },
"ignores": [
- "is-alphabetical.js",
- "is-alphabetical.min.js"
+ "is-alphabetical.js"
]
}
}
diff --git a/tools/eslint/node_modules/is-alphabetical/readme.md b/tools/eslint/node_modules/is-alphabetical/readme.md
index ea08662dad..372b188378 100644
--- a/tools/eslint/node_modules/is-alphabetical/readme.md
+++ b/tools/eslint/node_modules/is-alphabetical/readme.md
@@ -1,12 +1,10 @@
# is-alphabetical [![Build Status][travis-badge]][travis] [![Coverage Status][codecov-badge]][codecov]
-<!--lint disable heading-increment list-item-spacing-->
-
Check if a character is alphabetical.
## Installation
-[npm][npm-install]:
+[npm][]:
```bash
npm install is-alphabetical
@@ -14,8 +12,6 @@ npm install is-alphabetical
## Usage
-Dependencies:
-
```javascript
var alphabetical = require('is-alphabetical');
@@ -27,7 +23,7 @@ alphabetical('💩'); // false
## API
-### `alphabetical(character)`
+### `alphabetical(character|code)`
Check whether the given character code (`number`), or the character
code at the first position (`string`), is alphabetical.
@@ -36,6 +32,9 @@ code at the first position (`string`), is alphabetical.
* [`is-decimal`](https://github.com/wooorm/is-decimal)
* [`is-hexadecimal`](https://github.com/wooorm/is-hexadecimal)
+* [`is-alphanumerical`](https://github.com/wooorm/is-alphanumerical)
+* [`is-whitespace-character`](https://github.com/wooorm/is-whitespace-character)
+* [`is-word-character`](https://github.com/wooorm/is-word-character)
## License
@@ -51,7 +50,7 @@ code at the first position (`string`), is alphabetical.
[codecov]: https://codecov.io/github/wooorm/is-alphabetical
-[npm-install]: https://docs.npmjs.com/cli/install
+[npm]: https://docs.npmjs.com/cli/install
[license]: LICENSE
diff --git a/tools/eslint/node_modules/is-alphanumerical/history.md b/tools/eslint/node_modules/is-alphanumerical/history.md
deleted file mode 100644
index 674e111c47..0000000000
--- a/tools/eslint/node_modules/is-alphanumerical/history.md
+++ /dev/null
@@ -1,6 +0,0 @@
-<!--remark setext-->
-
-<!--lint disable no-multiple-toplevel-headings -->
-
-1.0.0 / 2016-07-12
-==================
diff --git a/tools/eslint/node_modules/is-alphanumerical/index.js b/tools/eslint/node_modules/is-alphanumerical/index.js
index 58ea455baa..441d6171fa 100644
--- a/tools/eslint/node_modules/is-alphanumerical/index.js
+++ b/tools/eslint/node_modules/is-alphanumerical/index.js
@@ -1,29 +1,12 @@
-/**
- * @author Titus Wormer
- * @copyright 2016 Titus Wormer
- * @license MIT
- * @module is-alphanumerical
- * @fileoverview Check if a character is alphanumerical.
- */
-
'use strict';
-/* eslint-env commonjs */
-
-/* Dependencies. */
var alphabetical = require('is-alphabetical');
var decimal = require('is-decimal');
-/* Expose. */
module.exports = alphanumerical;
-/**
- * Check whether the given character code, or the character
- * code at the first character, is alphanumerical.
- *
- * @param {string|number} character
- * @return {boolean} - Whether `character` is alphanumerical.
- */
+/* Check if the given character code, or the character
+ * code at the first character, is alphanumerical. */
function alphanumerical(character) {
return alphabetical(character) || decimal(character);
}
diff --git a/tools/eslint/node_modules/is-alphanumerical/package.json b/tools/eslint/node_modules/is-alphanumerical/package.json
index 629f3d31df..aafc45e797 100644
--- a/tools/eslint/node_modules/is-alphanumerical/package.json
+++ b/tools/eslint/node_modules/is-alphanumerical/package.json
@@ -1,8 +1,8 @@
{
"_from": "is-alphanumerical@^1.0.0",
- "_id": "is-alphanumerical@1.0.0",
+ "_id": "is-alphanumerical@1.0.1",
"_inBundle": false,
- "_integrity": "sha1-4GSS5xnBvxXewjnk8a9fZ7TW578=",
+ "_integrity": "sha1-37SqTRCF4zvbYcLe6cgOnGwZ9Ts=",
"_location": "/is-alphanumerical",
"_phantomChildren": {},
"_requested": {
@@ -18,8 +18,8 @@
"_requiredBy": [
"/parse-entities"
],
- "_resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.0.tgz",
- "_shasum": "e06492e719c1bf15dec239e4f1af5f67b4d6e7bf",
+ "_resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.1.tgz",
+ "_shasum": "dfb4aa4d1085e33bdb61c2dee9c80e9c6c19f53b",
"_spec": "is-alphanumerical@^1.0.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/parse-entities",
"author": {
@@ -45,16 +45,13 @@
"deprecated": false,
"description": "Check if a character is alphanumerical",
"devDependencies": {
- "browserify": "^13.0.1",
+ "browserify": "^14.1.0",
"esmangle": "^1.0.1",
- "nyc": "^7.0.0",
- "remark-cli": "^1.0.0",
- "remark-comment-config": "^4.0.0",
- "remark-github": "^5.0.0",
- "remark-lint": "^4.0.0",
- "remark-validate-links": "^4.0.0",
+ "nyc": "^11.0.0",
+ "remark-cli": "^3.0.0",
+ "remark-preset-wooorm": "^3.0.0",
"tape": "^4.0.0",
- "xo": "^0.16.0"
+ "xo": "^0.18.0"
},
"files": [
"index.js"
@@ -78,16 +75,9 @@
"branches": 100
},
"remarkConfig": {
- "output": true,
"plugins": [
- "comment-config",
- "github",
- "lint",
- "validate-links"
- ],
- "settings": {
- "bullet": "*"
- }
+ "preset-wooorm"
+ ]
},
"repository": {
"type": "git",
@@ -97,18 +87,18 @@
"build": "npm run build-md && npm run build-bundle && npm run build-mangle",
"build-bundle": "browserify index.js --bare -s isAlphanumerical > is-alphanumerical.js",
"build-mangle": "esmangle < is-alphanumerical.js > is-alphanumerical.min.js",
- "build-md": "remark . --quiet --frail",
+ "build-md": "remark . -qfo",
"lint": "xo",
"test": "npm run build && npm run lint && npm run test-coverage",
"test-api": "node test",
"test-coverage": "nyc --reporter lcov tape test.js"
},
- "version": "1.0.0",
+ "version": "1.0.1",
"xo": {
"space": true,
+ "esnext": false,
"ignores": [
- "is-alphanumerical.js",
- "is-alphanumerical.min.js"
+ "is-alphanumerical.js"
]
}
}
diff --git a/tools/eslint/node_modules/is-alphanumerical/readme.md b/tools/eslint/node_modules/is-alphanumerical/readme.md
index 26e6289d38..9b1ffddddc 100644
--- a/tools/eslint/node_modules/is-alphanumerical/readme.md
+++ b/tools/eslint/node_modules/is-alphanumerical/readme.md
@@ -1,12 +1,10 @@
# is-alphanumerical [![Build Status][travis-badge]][travis] [![Coverage Status][codecov-badge]][codecov]
-<!--lint disable heading-increment list-item-spacing-->
-
Check if a character is alphanumerical (`[a-zA-Z0-9]`).
## Installation
-[npm][npm-install]:
+[npm][]:
```bash
npm install is-alphanumerical
@@ -17,11 +15,11 @@ npm install is-alphanumerical
```javascript
var alphanumerical = require('is-alphanumerical');
-alphanumerical('a'); // true
-alphanumerical('Z'); // true
-alphanumerical('0'); // true
-alphanumerical(' '); // false
-alphanumerical('💩'); // false
+alphanumerical('a'); //=> true
+alphanumerical('Z'); //=> true
+alphanumerical('0'); //=> true
+alphanumerical(' '); //=> false
+alphanumerical('💩'); //=> false
```
## API
@@ -53,7 +51,7 @@ code at the first position (`string`), is alphanumerical.
[codecov]: https://codecov.io/github/wooorm/is-alphanumerical
-[npm-install]: https://docs.npmjs.com/cli/install
+[npm]: https://docs.npmjs.com/cli/install
[license]: LICENSE
diff --git a/tools/eslint/node_modules/is-decimal/history.md b/tools/eslint/node_modules/is-decimal/history.md
deleted file mode 100644
index ef81df4296..0000000000
--- a/tools/eslint/node_modules/is-decimal/history.md
+++ /dev/null
@@ -1,6 +0,0 @@
-<!--remark setext-->
-
-<!--lint disable no-multiple-toplevel-headings -->
-
-1.0.0 / 2016-07-11
-==================
diff --git a/tools/eslint/node_modules/is-decimal/index.js b/tools/eslint/node_modules/is-decimal/index.js
index 15ed373507..e0940c040d 100644
--- a/tools/eslint/node_modules/is-decimal/index.js
+++ b/tools/eslint/node_modules/is-decimal/index.js
@@ -1,25 +1,9 @@
-/**
- * @author Titus Wormer
- * @copyright 2016 Titus Wormer
- * @license MIT
- * @module is-decimal
- * @fileoverview Check if a character is decimal.
- */
-
'use strict';
-/* eslint-env commonjs */
-
-/* Expose. */
module.exports = decimal;
-/**
- * Check whether the given character code, or the character
- * code at the first character, is decimal.
- *
- * @param {string|number} character
- * @return {boolean} - Whether `character` is decimal.
- */
+/* Check if the given character code, or the character
+ * code at the first character, is decimal. */
function decimal(character) {
var code = typeof character === 'string' ?
character.charCodeAt(0) : character;
diff --git a/tools/eslint/node_modules/is-decimal/package.json b/tools/eslint/node_modules/is-decimal/package.json
index 9cb4650d3f..fb2988848f 100644
--- a/tools/eslint/node_modules/is-decimal/package.json
+++ b/tools/eslint/node_modules/is-decimal/package.json
@@ -1,8 +1,8 @@
{
"_from": "is-decimal@^1.0.0",
- "_id": "is-decimal@1.0.0",
+ "_id": "is-decimal@1.0.1",
"_inBundle": false,
- "_integrity": "sha1-lAV5tupjxigICmnmK9qIyEcLT+A=",
+ "_integrity": "sha1-9ftqlJlq2ejjdh+/vQkfH8qMToI=",
"_location": "/is-decimal",
"_phantomChildren": {},
"_requested": {
@@ -20,8 +20,8 @@
"/parse-entities",
"/remark-parse"
],
- "_resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.0.tgz",
- "_shasum": "940579b6ea63c628080a69e62bda88c8470b4fe0",
+ "_resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.1.tgz",
+ "_shasum": "f5fb6a94996ad9e8e3761fbfbd091f1fca8c4e82",
"_spec": "is-decimal@^1.0.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/remark-parse",
"author": {
@@ -44,16 +44,13 @@
"deprecated": false,
"description": "Check if a character is decimal",
"devDependencies": {
- "browserify": "^13.0.1",
+ "browserify": "^14.1.0",
"esmangle": "^1.0.1",
- "nyc": "^7.0.0",
- "remark-cli": "^1.0.0",
- "remark-comment-config": "^4.0.0",
- "remark-github": "^5.0.0",
- "remark-lint": "^4.0.0",
- "remark-validate-links": "^4.0.0",
+ "nyc": "^11.0.0",
+ "remark-cli": "^3.0.0",
+ "remark-preset-wooorm": "^3.0.0",
"tape": "^4.0.0",
- "xo": "^0.16.0"
+ "xo": "^0.18.0"
},
"files": [
"index.js"
@@ -75,16 +72,9 @@
"branches": 100
},
"remarkConfig": {
- "output": true,
"plugins": [
- "comment-config",
- "github",
- "lint",
- "validate-links"
- ],
- "settings": {
- "bullet": "*"
- }
+ "preset-wooorm"
+ ]
},
"repository": {
"type": "git",
@@ -94,18 +84,18 @@
"build": "npm run build-md && npm run build-bundle && npm run build-mangle",
"build-bundle": "browserify index.js --bare -s isDecimal > is-decimal.js",
"build-mangle": "esmangle < is-decimal.js > is-decimal.min.js",
- "build-md": "remark . --quiet --frail",
+ "build-md": "remark . -qfo",
"lint": "xo",
"test": "npm run build && npm run lint && npm run test-coverage",
"test-api": "node test",
"test-coverage": "nyc --reporter lcov tape test.js"
},
- "version": "1.0.0",
+ "version": "1.0.1",
"xo": {
"space": true,
+ "esnext": false,
"ignores": [
- "is-decimal.js",
- "is-decimal.min.js"
+ "is-decimal.js"
]
}
}
diff --git a/tools/eslint/node_modules/is-decimal/readme.md b/tools/eslint/node_modules/is-decimal/readme.md
index 58d25c26bc..5d5de46683 100644
--- a/tools/eslint/node_modules/is-decimal/readme.md
+++ b/tools/eslint/node_modules/is-decimal/readme.md
@@ -1,12 +1,10 @@
# is-decimal [![Build Status][travis-badge]][travis] [![Coverage Status][codecov-badge]][codecov]
-<!--lint disable heading-increment list-item-spacing-->
-
Check if a character is decimal.
## Installation
-[npm][npm-install]:
+[npm][]:
```bash
npm install is-decimal
@@ -14,20 +12,18 @@ npm install is-decimal
## Usage
-Dependencies:
-
```javascript
var decimal = require('is-decimal');
-decimal('0'); // true
-decimal('9'); // true
-decimal('a'); // false
-decimal('💩'); // false
+decimal('0'); //=> true
+decimal('9'); //=> true
+decimal('a'); //=> false
+decimal('💩'); //=> false
```
## API
-### `decimal(character)`
+### `decimal(character|code)`
Check whether the given character code (`number`), or the character
code at the first position (`string`), is decimal.
@@ -36,6 +32,8 @@ code at the first position (`string`), is decimal.
* [`is-alphabetical`](https://github.com/wooorm/is-alphabetical)
* [`is-hexadecimal`](https://github.com/wooorm/is-hexadecimal)
+* [`is-whitespace-character`](https://github.com/wooorm/is-whitespace-character)
+* [`is-word-character`](https://github.com/wooorm/is-word-character)
## License
@@ -51,7 +49,7 @@ code at the first position (`string`), is decimal.
[codecov]: https://codecov.io/github/wooorm/is-decimal
-[npm-install]: https://docs.npmjs.com/cli/install
+[npm]: https://docs.npmjs.com/cli/install
[license]: LICENSE
diff --git a/tools/eslint/node_modules/is-hexadecimal/history.md b/tools/eslint/node_modules/is-hexadecimal/history.md
deleted file mode 100644
index ef81df4296..0000000000
--- a/tools/eslint/node_modules/is-hexadecimal/history.md
+++ /dev/null
@@ -1,6 +0,0 @@
-<!--remark setext-->
-
-<!--lint disable no-multiple-toplevel-headings -->
-
-1.0.0 / 2016-07-11
-==================
diff --git a/tools/eslint/node_modules/is-hexadecimal/index.js b/tools/eslint/node_modules/is-hexadecimal/index.js
index dfb9ddb578..533e74a67f 100644
--- a/tools/eslint/node_modules/is-hexadecimal/index.js
+++ b/tools/eslint/node_modules/is-hexadecimal/index.js
@@ -1,25 +1,9 @@
-/**
- * @author Titus Wormer
- * @copyright 2016 Titus Wormer
- * @license MIT
- * @module is-hexadecimal
- * @fileoverview Check if a character is hexadecimal.
- */
-
'use strict';
-/* eslint-env commonjs */
-
-/* Expose. */
module.exports = hexadecimal;
-/**
- * Check whether the given character code, or the character
- * code at the first character, is hexadecimal.
- *
- * @param {string|number} character
- * @return {boolean} - Whether `character` is hexadecimal.
- */
+/* Check if the given character code, or the character
+ * code at the first character, is hexadecimal. */
function hexadecimal(character) {
var code = typeof character === 'string' ?
character.charCodeAt(0) : character;
diff --git a/tools/eslint/node_modules/is-hexadecimal/package.json b/tools/eslint/node_modules/is-hexadecimal/package.json
index b53102a1ad..d8a2111a3a 100644
--- a/tools/eslint/node_modules/is-hexadecimal/package.json
+++ b/tools/eslint/node_modules/is-hexadecimal/package.json
@@ -1,8 +1,8 @@
{
"_from": "is-hexadecimal@^1.0.0",
- "_id": "is-hexadecimal@1.0.0",
+ "_id": "is-hexadecimal@1.0.1",
"_inBundle": false,
- "_integrity": "sha1-XEWXcdKvmi45Ungf1U/LG8/kETw=",
+ "_integrity": "sha1-bghLvJIGH7sJcexYts5tQE4k2mk=",
"_location": "/is-hexadecimal",
"_phantomChildren": {},
"_requested": {
@@ -18,8 +18,8 @@
"_requiredBy": [
"/parse-entities"
],
- "_resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.0.tgz",
- "_shasum": "5c459771d2af9a2e3952781fd54fcb1bcfe4113c",
+ "_resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.1.tgz",
+ "_shasum": "6e084bbc92061fbb0971ec58b6ce6d404e24da69",
"_spec": "is-hexadecimal@^1.0.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/parse-entities",
"author": {
@@ -42,16 +42,13 @@
"deprecated": false,
"description": "Check if a character is hexadecimal",
"devDependencies": {
- "browserify": "^13.0.1",
+ "browserify": "^14.1.0",
"esmangle": "^1.0.1",
- "nyc": "^7.0.0",
- "remark-cli": "^1.0.0",
- "remark-comment-config": "^4.0.0",
- "remark-github": "^5.0.0",
- "remark-lint": "^4.0.0",
- "remark-validate-links": "^4.0.0",
+ "nyc": "^11.0.0",
+ "remark-cli": "^3.0.0",
+ "remark-preset-wooorm": "^3.0.0",
"tape": "^4.0.0",
- "xo": "^0.16.0"
+ "xo": "^0.18.0"
},
"files": [
"index.js"
@@ -73,16 +70,9 @@
"branches": 100
},
"remarkConfig": {
- "output": true,
"plugins": [
- "comment-config",
- "github",
- "lint",
- "validate-links"
- ],
- "settings": {
- "bullet": "*"
- }
+ "preset-wooorm"
+ ]
},
"repository": {
"type": "git",
@@ -92,18 +82,18 @@
"build": "npm run build-md && npm run build-bundle && npm run build-mangle",
"build-bundle": "browserify index.js --bare -s isHexadecimal > is-hexadecimal.js",
"build-mangle": "esmangle < is-hexadecimal.js > is-hexadecimal.min.js",
- "build-md": "remark . --quiet --frail",
+ "build-md": "remark . -qfo",
"lint": "xo",
"test": "npm run build && npm run lint && npm run test-coverage",
"test-api": "node test",
"test-coverage": "nyc --reporter lcov tape test.js"
},
- "version": "1.0.0",
+ "version": "1.0.1",
"xo": {
"space": true,
+ "esnext": false,
"ignores": [
- "is-hexadecimal.js",
- "is-hexadecimal.min.js"
+ "is-hexadecimal.js"
]
}
}
diff --git a/tools/eslint/node_modules/is-hexadecimal/readme.md b/tools/eslint/node_modules/is-hexadecimal/readme.md
index 19640e3668..5c4b6e63d2 100644
--- a/tools/eslint/node_modules/is-hexadecimal/readme.md
+++ b/tools/eslint/node_modules/is-hexadecimal/readme.md
@@ -1,12 +1,10 @@
# is-hexadecimal [![Build Status][travis-badge]][travis] [![Coverage Status][codecov-badge]][codecov]
-<!--lint disable heading-increment list-item-spacing-->
-
Check if a character is hexadecimal.
## Installation
-[npm][npm-install]:
+[npm][]:
```bash
npm install is-hexadecimal
@@ -14,20 +12,18 @@ npm install is-hexadecimal
## Usage
-Dependencies:
-
```javascript
var hexadecimal = require('is-hexadecimal');
-hexadecimal('a'); // true
-hexadecimal('0'); // true
-hexadecimal('G'); // false
-hexadecimal('💩'); // false
+hexadecimal('a'); //=> true
+hexadecimal('0'); //=> true
+hexadecimal('G'); //=> false
+hexadecimal('💩'); //=> false
```
## API
-### `hexadecimal(character)`
+### `hexadecimal(character|code)`
Check whether the given character code (`number`), or the character
code at the first position (`string`), is hexadecimal.
@@ -35,7 +31,10 @@ code at the first position (`string`), is hexadecimal.
## Related
* [`is-alphabetical`](https://github.com/wooorm/is-alphabetical)
+* [`is-alphanumerical`](https://github.com/wooorm/is-alphabetical)
* [`is-decimal`](https://github.com/wooorm/is-decimal)
+* [`is-whitespace-character`](https://github.com/wooorm/is-whitespace-character)
+* [`is-word-character`](https://github.com/wooorm/is-word-character)
## License
@@ -51,7 +50,7 @@ code at the first position (`string`), is hexadecimal.
[codecov]: https://codecov.io/github/wooorm/is-hexadecimal
-[npm-install]: https://docs.npmjs.com/cli/install
+[npm]: https://docs.npmjs.com/cli/install
[license]: LICENSE
diff --git a/tools/eslint/node_modules/is-whitespace-character/history.md b/tools/eslint/node_modules/is-whitespace-character/history.md
deleted file mode 100644
index 674e111c47..0000000000
--- a/tools/eslint/node_modules/is-whitespace-character/history.md
+++ /dev/null
@@ -1,6 +0,0 @@
-<!--remark setext-->
-
-<!--lint disable no-multiple-toplevel-headings -->
-
-1.0.0 / 2016-07-12
-==================
diff --git a/tools/eslint/node_modules/is-whitespace-character/index.js b/tools/eslint/node_modules/is-whitespace-character/index.js
index f9e23df3f7..57d4ca68eb 100644
--- a/tools/eslint/node_modules/is-whitespace-character/index.js
+++ b/tools/eslint/node_modules/is-whitespace-character/index.js
@@ -1,31 +1,12 @@
-/**
- * @author Titus Wormer
- * @copyright 2016 Titus Wormer
- * @license MIT
- * @module is-whitespace-character
- * @fileoverview Check if a character is a whitespace character.
- */
-
'use strict';
-/* eslint-env commonjs */
-
-/* Expose. */
module.exports = whitespace;
-/* Methods. */
var fromCode = String.fromCharCode;
-
-/* Constants. */
var re = /\s/;
-/**
- * Check whether the given character code, or the character
- * code at the first character, is a whitespace character.
- *
- * @param {string|number} character
- * @return {boolean} - Whether `character` is a whitespaces character.
- */
+/* Check if the given character code, or the character
+ * code at the first character, is a whitespace character. */
function whitespace(character) {
return re.test(
typeof character === 'number' ? fromCode(character) : character.charAt(0)
diff --git a/tools/eslint/node_modules/is-whitespace-character/package.json b/tools/eslint/node_modules/is-whitespace-character/package.json
index 1663491e3a..5639b3bd42 100644
--- a/tools/eslint/node_modules/is-whitespace-character/package.json
+++ b/tools/eslint/node_modules/is-whitespace-character/package.json
@@ -1,8 +1,8 @@
{
"_from": "is-whitespace-character@^1.0.0",
- "_id": "is-whitespace-character@1.0.0",
+ "_id": "is-whitespace-character@1.0.1",
"_inBundle": false,
- "_integrity": "sha1-u/SoN2Tq0NRRvsKlUhjpGWGtwnU=",
+ "_integrity": "sha1-muAXbzKCtlRXoZks2whPil+DPjs=",
"_location": "/is-whitespace-character",
"_phantomChildren": {},
"_requested": {
@@ -18,8 +18,8 @@
"_requiredBy": [
"/remark-parse"
],
- "_resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.0.tgz",
- "_shasum": "bbf4a83764ead0d451bec2a55218e91961adc275",
+ "_resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.1.tgz",
+ "_shasum": "9ae0176f3282b65457a1992cdb084f8a5f833e3b",
"_spec": "is-whitespace-character@^1.0.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/remark-parse",
"author": {
@@ -42,16 +42,13 @@
"deprecated": false,
"description": "Check if a character is a whitespace character",
"devDependencies": {
- "browserify": "^13.0.1",
+ "browserify": "^14.1.0",
"esmangle": "^1.0.1",
- "nyc": "^7.0.0",
- "remark-cli": "^1.0.0",
- "remark-comment-config": "^4.0.0",
- "remark-github": "^5.0.0",
- "remark-lint": "^4.0.0",
- "remark-validate-links": "^4.0.0",
+ "nyc": "^11.0.0",
+ "remark-cli": "^3.0.0",
+ "remark-preset-wooorm": "^3.0.0",
"tape": "^4.0.0",
- "xo": "^0.16.0"
+ "xo": "^0.18.0"
},
"files": [
"index.js"
@@ -75,16 +72,9 @@
"branches": 100
},
"remarkConfig": {
- "output": true,
"plugins": [
- "comment-config",
- "github",
- "lint",
- "validate-links"
- ],
- "settings": {
- "bullet": "*"
- }
+ "preset-wooorm"
+ ]
},
"repository": {
"type": "git",
@@ -94,18 +84,18 @@
"build": "npm run build-md && npm run build-bundle && npm run build-mangle",
"build-bundle": "browserify index.js --bare -s isWhitespaceCharacter > is-whitespace-character.js",
"build-mangle": "esmangle < is-whitespace-character.js > is-whitespace-character.min.js",
- "build-md": "remark . --quiet --frail",
+ "build-md": "remark . -qfo",
"lint": "xo",
"test": "npm run build && npm run lint && npm run test-coverage",
"test-api": "node test",
"test-coverage": "nyc --reporter lcov tape test.js"
},
- "version": "1.0.0",
+ "version": "1.0.1",
"xo": {
"space": true,
+ "esnext": false,
"ignores": [
- "is-whitespace-character.js",
- "is-whitespace-character.min.js"
+ "is-whitespace-character.js"
]
}
}
diff --git a/tools/eslint/node_modules/is-whitespace-character/readme.md b/tools/eslint/node_modules/is-whitespace-character/readme.md
index c2ac49c213..171c2071fa 100644
--- a/tools/eslint/node_modules/is-whitespace-character/readme.md
+++ b/tools/eslint/node_modules/is-whitespace-character/readme.md
@@ -1,14 +1,12 @@
# is-whitespace-character [![Build Status][travis-badge]][travis] [![Coverage Status][codecov-badge]][codecov]
-<!--lint disable heading-increment list-item-spacing-->
-
Check if a character is a whitespace character: `\s`, which equals
all Unicode Space Separators (including `[ \t\v\f]`), the BOM
(`\uFEFF`), and line terminator (`[\n\r\u2028\u2029]`).
## Installation
-[npm][npm-install]:
+[npm][]:
```bash
npm install is-whitespace-character
@@ -29,7 +27,7 @@ whitespace('💩'); // false
## API
-### `whitespaceCharacter(character)`
+### `whitespaceCharacter(character|code)`
Check whether the given character code (`number`), or the character
code at the first position (`string`), is a whitespace character.
@@ -56,7 +54,7 @@ code at the first position (`string`), is a whitespace character.
[codecov]: https://codecov.io/github/wooorm/is-whitespace-character
-[npm-install]: https://docs.npmjs.com/cli/install
+[npm]: https://docs.npmjs.com/cli/install
[license]: LICENSE
diff --git a/tools/eslint/node_modules/is-word-character/history.md b/tools/eslint/node_modules/is-word-character/history.md
deleted file mode 100644
index 674e111c47..0000000000
--- a/tools/eslint/node_modules/is-word-character/history.md
+++ /dev/null
@@ -1,6 +0,0 @@
-<!--remark setext-->
-
-<!--lint disable no-multiple-toplevel-headings -->
-
-1.0.0 / 2016-07-12
-==================
diff --git a/tools/eslint/node_modules/is-word-character/index.js b/tools/eslint/node_modules/is-word-character/index.js
index c2f9c3fd05..9641147437 100644
--- a/tools/eslint/node_modules/is-word-character/index.js
+++ b/tools/eslint/node_modules/is-word-character/index.js
@@ -1,31 +1,12 @@
-/**
- * @author Titus Wormer
- * @copyright 2016 Titus Wormer
- * @license MIT
- * @module is-word-character
- * @fileoverview Check if a character is a word character.
- */
-
'use strict';
-/* eslint-env commonjs */
-
-/* Expose. */
module.exports = wordCharacter;
-/* Methods. */
var fromCode = String.fromCharCode;
-
-/* Constants. */
var re = /\w/;
-/**
- * Check whether the given character code, or the character
- * code at the first character, is a word character.
- *
- * @param {string|number} character
- * @return {boolean} - Whether `character` is a word character.
- */
+/* Check if the given character code, or the character
+ * code at the first character, is a word character. */
function wordCharacter(character) {
return re.test(
typeof character === 'number' ? fromCode(character) : character.charAt(0)
diff --git a/tools/eslint/node_modules/is-word-character/package.json b/tools/eslint/node_modules/is-word-character/package.json
index 562d2830dc..944d0712df 100644
--- a/tools/eslint/node_modules/is-word-character/package.json
+++ b/tools/eslint/node_modules/is-word-character/package.json
@@ -1,8 +1,8 @@
{
"_from": "is-word-character@^1.0.0",
- "_id": "is-word-character@1.0.0",
+ "_id": "is-word-character@1.0.1",
"_inBundle": false,
- "_integrity": "sha1-o6nl3a1wxcLuNvSpz8mlP0RTUkc=",
+ "_integrity": "sha1-WgP6HqkazopusMfNdw64bWXIvvs=",
"_location": "/is-word-character",
"_phantomChildren": {},
"_requested": {
@@ -18,8 +18,8 @@
"_requiredBy": [
"/remark-parse"
],
- "_resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.0.tgz",
- "_shasum": "a3a9e5ddad70c5c2ee36f4a9cfc9a53f44535247",
+ "_resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.1.tgz",
+ "_shasum": "5a03fa1ea91ace8a6eb0c7cd770eb86d65c8befb",
"_spec": "is-word-character@^1.0.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/remark-parse",
"author": {
@@ -42,16 +42,13 @@
"deprecated": false,
"description": "Check if a character is a word character",
"devDependencies": {
- "browserify": "^13.0.1",
+ "browserify": "^14.1.0",
"esmangle": "^1.0.1",
- "nyc": "^7.0.0",
- "remark-cli": "^1.0.0",
- "remark-comment-config": "^4.0.0",
- "remark-github": "^5.0.0",
- "remark-lint": "^4.0.0",
- "remark-validate-links": "^4.0.0",
+ "nyc": "^11.0.0",
+ "remark-cli": "^3.0.0",
+ "remark-preset-wooorm": "^3.0.0",
"tape": "^4.0.0",
- "xo": "^0.16.0"
+ "xo": "^0.18.0"
},
"files": [
"index.js"
@@ -73,16 +70,9 @@
"branches": 100
},
"remarkConfig": {
- "output": true,
"plugins": [
- "comment-config",
- "github",
- "lint",
- "validate-links"
- ],
- "settings": {
- "bullet": "*"
- }
+ "preset-wooorm"
+ ]
},
"repository": {
"type": "git",
@@ -92,18 +82,18 @@
"build": "npm run build-md && npm run build-bundle && npm run build-mangle",
"build-bundle": "browserify index.js --bare -s isWordCharacter > is-word-character.js",
"build-mangle": "esmangle < is-word-character.js > is-word-character.min.js",
- "build-md": "remark . --quiet --frail",
+ "build-md": "remark . -qfo",
"lint": "xo",
"test": "npm run build && npm run lint && npm run test-coverage",
"test-api": "node test",
"test-coverage": "nyc --reporter lcov tape test.js"
},
- "version": "1.0.0",
+ "version": "1.0.1",
"xo": {
"space": true,
+ "esnext": false,
"ignores": [
- "is-word-character.js",
- "is-word-character.min.js"
+ "is-word-character.js"
]
}
}
diff --git a/tools/eslint/node_modules/is-word-character/readme.md b/tools/eslint/node_modules/is-word-character/readme.md
index 4a0a25fd29..acf4f2a011 100644
--- a/tools/eslint/node_modules/is-word-character/readme.md
+++ b/tools/eslint/node_modules/is-word-character/readme.md
@@ -1,13 +1,11 @@
# is-word-character [![Build Status][travis-badge]][travis] [![Coverage Status][codecov-badge]][codecov]
-<!--lint disable heading-increment list-item-spacing-->
-
Check if a character is a word character (`\w`, which equals
`[a-zA-Z0-9_]`).
## Installation
-[npm][npm-install]:
+[npm][]:
```bash
npm install is-word-character
@@ -18,17 +16,17 @@ npm install is-word-character
```javascript
var wordCharacter = require('is-word-character');
-wordCharacter('a'); // true
-wordCharacter('Z'); // true
-wordCharacter('0'); // true
-wordCharacter('_'); // true
-wordCharacter(' '); // false
-wordCharacter('💩'); // false
+wordCharacter('a'); //=> true
+wordCharacter('Z'); //=> true
+wordCharacter('0'); //=> true
+wordCharacter('_'); //=> true
+wordCharacter(' '); //=> false
+wordCharacter('💩'); //=> false
```
## API
-### `wordCharacter(character)`
+### `wordCharacter(character|code)`
Check whether the given character code (`number`), or the character
code at the first position (`string`), is a word character.
@@ -55,7 +53,7 @@ code at the first position (`string`), is a word character.
[codecov]: https://codecov.io/github/wooorm/is-word-character
-[npm-install]: https://docs.npmjs.com/cli/install
+[npm]: https://docs.npmjs.com/cli/install
[license]: LICENSE
diff --git a/tools/eslint/node_modules/isexe/LICENSE b/tools/eslint/node_modules/isexe/LICENSE
new file mode 100644
index 0000000000..19129e315f
--- /dev/null
+++ b/tools/eslint/node_modules/isexe/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/tools/eslint/node_modules/isexe/README.md b/tools/eslint/node_modules/isexe/README.md
new file mode 100644
index 0000000000..35769e8440
--- /dev/null
+++ b/tools/eslint/node_modules/isexe/README.md
@@ -0,0 +1,51 @@
+# isexe
+
+Minimal module to check if a file is executable, and a normal file.
+
+Uses `fs.stat` and tests against the `PATHEXT` environment variable on
+Windows.
+
+## USAGE
+
+```javascript
+var isexe = require('isexe')
+isexe('some-file-name', function (err, isExe) {
+ if (err) {
+ console.error('probably file does not exist or something', err)
+ } else if (isExe) {
+ console.error('this thing can be run')
+ } else {
+ console.error('cannot be run')
+ }
+})
+
+// same thing but synchronous, throws errors
+var isExe = isexe.sync('some-file-name')
+
+// treat errors as just "not executable"
+isexe('maybe-missing-file', { ignoreErrors: true }, callback)
+var isExe = isexe.sync('maybe-missing-file', { ignoreErrors: true })
+```
+
+## API
+
+### `isexe(path, [options], [callback])`
+
+Check if the path is executable. If no callback provided, and a
+global `Promise` object is available, then a Promise will be returned.
+
+Will raise whatever errors may be raised by `fs.stat`, unless
+`options.ignoreErrors` is set to true.
+
+### `isexe.sync(path, [options])`
+
+Same as `isexe` but returns the value and throws any errors raised.
+
+### Options
+
+* `ignoreErrors` Treat all errors as "no, this is not executable", but
+ don't raise them.
+* `uid` Number to use as the user id
+* `gid` Number to use as the group id
+* `pathExt` List of path extensions to use instead of `PATHEXT`
+ environment variable on Windows.
diff --git a/tools/eslint/node_modules/isexe/index.js b/tools/eslint/node_modules/isexe/index.js
new file mode 100644
index 0000000000..553fb32b11
--- /dev/null
+++ b/tools/eslint/node_modules/isexe/index.js
@@ -0,0 +1,57 @@
+var fs = require('fs')
+var core
+if (process.platform === 'win32' || global.TESTING_WINDOWS) {
+ core = require('./windows.js')
+} else {
+ core = require('./mode.js')
+}
+
+module.exports = isexe
+isexe.sync = sync
+
+function isexe (path, options, cb) {
+ if (typeof options === 'function') {
+ cb = options
+ options = {}
+ }
+
+ if (!cb) {
+ if (typeof Promise !== 'function') {
+ throw new TypeError('callback not provided')
+ }
+
+ return new Promise(function (resolve, reject) {
+ isexe(path, options || {}, function (er, is) {
+ if (er) {
+ reject(er)
+ } else {
+ resolve(is)
+ }
+ })
+ })
+ }
+
+ core(path, options || {}, function (er, is) {
+ // ignore EACCES because that just means we aren't allowed to run it
+ if (er) {
+ if (er.code === 'EACCES' || options && options.ignoreErrors) {
+ er = null
+ is = false
+ }
+ }
+ cb(er, is)
+ })
+}
+
+function sync (path, options) {
+ // my kingdom for a filtered catch
+ try {
+ return core.sync(path, options || {})
+ } catch (er) {
+ if (options && options.ignoreErrors || er.code === 'EACCES') {
+ return false
+ } else {
+ throw er
+ }
+ }
+}
diff --git a/tools/eslint/node_modules/isexe/mode.js b/tools/eslint/node_modules/isexe/mode.js
new file mode 100644
index 0000000000..1995ea4a06
--- /dev/null
+++ b/tools/eslint/node_modules/isexe/mode.js
@@ -0,0 +1,41 @@
+module.exports = isexe
+isexe.sync = sync
+
+var fs = require('fs')
+
+function isexe (path, options, cb) {
+ fs.stat(path, function (er, stat) {
+ cb(er, er ? false : checkStat(stat, options))
+ })
+}
+
+function sync (path, options) {
+ return checkStat(fs.statSync(path), options)
+}
+
+function checkStat (stat, options) {
+ return stat.isFile() && checkMode(stat, options)
+}
+
+function checkMode (stat, options) {
+ var mod = stat.mode
+ var uid = stat.uid
+ var gid = stat.gid
+
+ var myUid = options.uid !== undefined ?
+ options.uid : process.getuid && process.getuid()
+ var myGid = options.gid !== undefined ?
+ options.gid : process.getgid && process.getgid()
+
+ var u = parseInt('100', 8)
+ var g = parseInt('010', 8)
+ var o = parseInt('001', 8)
+ var ug = u | g
+
+ var ret = (mod & o) ||
+ (mod & g) && gid === myGid ||
+ (mod & u) && uid === myUid ||
+ (mod & ug) && myUid === 0
+
+ return ret
+}
diff --git a/tools/eslint/node_modules/isexe/package.json b/tools/eslint/node_modules/isexe/package.json
new file mode 100644
index 0000000000..9e235ec160
--- /dev/null
+++ b/tools/eslint/node_modules/isexe/package.json
@@ -0,0 +1,60 @@
+{
+ "_from": "isexe@^2.0.0",
+ "_id": "isexe@2.0.0",
+ "_inBundle": false,
+ "_integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "_location": "/eslint/isexe",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "isexe@^2.0.0",
+ "name": "isexe",
+ "escapedName": "isexe",
+ "rawSpec": "^2.0.0",
+ "saveSpec": null,
+ "fetchSpec": "^2.0.0"
+ },
+ "_requiredBy": [
+ "/eslint/which"
+ ],
+ "_resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "_shasum": "e8fbf374dc556ff8947a10dcb0572d633f2cfa10",
+ "_spec": "isexe@^2.0.0",
+ "_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/which",
+ "author": {
+ "name": "Isaac Z. Schlueter",
+ "email": "i@izs.me",
+ "url": "http://blog.izs.me/"
+ },
+ "bugs": {
+ "url": "https://github.com/isaacs/isexe/issues"
+ },
+ "bundleDependencies": false,
+ "deprecated": false,
+ "description": "Minimal module to check if a file is executable.",
+ "devDependencies": {
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.0",
+ "tap": "^10.3.0"
+ },
+ "directories": {
+ "test": "test"
+ },
+ "homepage": "https://github.com/isaacs/isexe#readme",
+ "keywords": [],
+ "license": "ISC",
+ "main": "index.js",
+ "name": "isexe",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/isaacs/isexe.git"
+ },
+ "scripts": {
+ "postpublish": "git push origin --all; git push origin --tags",
+ "postversion": "npm publish",
+ "preversion": "npm test",
+ "test": "tap test/*.js --100"
+ },
+ "version": "2.0.0"
+}
diff --git a/tools/eslint/node_modules/isexe/windows.js b/tools/eslint/node_modules/isexe/windows.js
new file mode 100644
index 0000000000..34996734d8
--- /dev/null
+++ b/tools/eslint/node_modules/isexe/windows.js
@@ -0,0 +1,42 @@
+module.exports = isexe
+isexe.sync = sync
+
+var fs = require('fs')
+
+function checkPathExt (path, options) {
+ var pathext = options.pathExt !== undefined ?
+ options.pathExt : process.env.PATHEXT
+
+ if (!pathext) {
+ return true
+ }
+
+ pathext = pathext.split(';')
+ if (pathext.indexOf('') !== -1) {
+ return true
+ }
+ for (var i = 0; i < pathext.length; i++) {
+ var p = pathext[i].toLowerCase()
+ if (p && path.substr(-p.length).toLowerCase() === p) {
+ return true
+ }
+ }
+ return false
+}
+
+function checkStat (stat, path, options) {
+ if (!stat.isSymbolicLink() && !stat.isFile()) {
+ return false
+ }
+ return checkPathExt(path, options)
+}
+
+function isexe (path, options, cb) {
+ fs.stat(path, function (er, stat) {
+ cb(er, er ? false : checkStat(stat, path, options))
+ })
+}
+
+function sync (path, options) {
+ return checkStat(fs.statSync(path), path, options)
+}
diff --git a/tools/eslint/node_modules/jschardet/LICENSE b/tools/eslint/node_modules/jschardet/LICENSE
new file mode 100755
index 0000000000..19e307187a
--- /dev/null
+++ b/tools/eslint/node_modules/jschardet/LICENSE
@@ -0,0 +1,504 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+(This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.)
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+ When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard. To achieve this, non-free programs must be
+allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ {description}
+ Copyright (C) {year} {fullname}
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James Random
+ Hacker.
+
+ {signature of Ty Coon}, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
diff --git a/tools/eslint/node_modules/jschardet/dist/jschardet.js b/tools/eslint/node_modules/jschardet/dist/jschardet.js
index 20ca69ae2a..5a1fa6e481 100755
--- a/tools/eslint/node_modules/jschardet/dist/jschardet.js
+++ b/tools/eslint/node_modules/jschardet/dist/jschardet.js
@@ -1,6 +1,17 @@
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.jschardet = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
-module.exports = require('./src')
-},{"./src":19}],2:[function(require,module,exports){
+module.exports = require('./src');
+
+var jschardet = require('./src');
+var fs = require('fs');
+
+jschardet.Constants._debug = true;
+
+var contents = fs.readFileSync('./shift-jis_fail.txt');
+console.log(jschardet.detect(contents));
+
+},{"./src":20,"fs":2}],2:[function(require,module,exports){
+
+},{}],3:[function(require,module,exports){
/*
* The Original Code is Mozilla Universal charset detector code.
*
@@ -931,7 +942,7 @@ jschardet.Big5CharToFreqOrder = [
}(require('./init'));
-},{"./init":20}],3:[function(require,module,exports){
+},{"./init":21}],4:[function(require,module,exports){
/*
* The Original Code is Mozilla Universal charset detector code.
*
@@ -984,7 +995,7 @@ jschardet.Big5Prober.prototype = new jschardet.MultiByteCharSetProber();
}(require('./init'));
-},{"./init":20}],4:[function(require,module,exports){
+},{"./init":21}],5:[function(require,module,exports){
/*
* The Original Code is Mozilla Universal charset detector code.
*
@@ -1020,6 +1031,8 @@ jschardet.CharDistributionAnalysis = function() {
var ENOUGH_DATA_THRESHOLD = 1024;
var SURE_YES = 0.99;
var SURE_NO = 0.01;
+ var MINIMUM_DATA_THRESHOLD = 3;
+
var self = this;
function init() {
@@ -1064,7 +1077,7 @@ jschardet.CharDistributionAnalysis = function() {
*/
this.getConfidence = function() {
// if we didn't receive any character in our consideration range, return negative answer
- if( this._mTotalChars <= 0 ) {
+ if( this._mTotalChars <= 0 || this._mFreqChars <= MINIMUM_DATA_THRESHOLD) {
return SURE_NO;
}
if( this._mTotalChars != this._mFreqChars ) {
@@ -1219,8 +1232,8 @@ jschardet.SJISDistributionAnalysis = function() {
this.getOrder = function(aStr) {
// for sjis encoding, we are interested
- // first byte range: 0x81 -- 0x9f , 0xe0 -- 0xfe
- // second byte range: 0x40 -- 0x7e, 0x81 -- 0xfe
+ // first byte range: 0x81 -- 0x9f , 0xe0 -- 0xef
+ // second byte range: 0x40 -- 0x7e, 0x80 -- 0xfc
// no validation needed here. State machine has done that
if( aStr.charCodeAt(0) >= 0x81 && aStr.charCodeAt(0) <= 0x9F ) {
var order = 188 * (aStr.charCodeAt(0) - 0x81);
@@ -1230,7 +1243,7 @@ jschardet.SJISDistributionAnalysis = function() {
return -1;
}
order += aStr.charCodeAt(1) - 0x40;
- if( aStr.charCodeAt(1) > 0x7F ) {
+ if( aStr.charCodeAt(1) < 0x40 || aStr.charCodeAt(1) === 0x7F || aStr.charCodeAt(1) > 0xFC) {
order = -1;
}
return order;
@@ -1269,7 +1282,7 @@ jschardet.EUCJPDistributionAnalysis.prototype = new jschardet.CharDistributionAn
}(require('./init'));
-},{"./init":20}],5:[function(require,module,exports){
+},{"./init":21}],6:[function(require,module,exports){
/*
* The Original Code is Mozilla Universal charset detector code.
*
@@ -1389,7 +1402,7 @@ jschardet.CharSetGroupProber.prototype = new jschardet.CharSetProber();
}(require('./init'));
-},{"./init":20}],6:[function(require,module,exports){
+},{"./init":21}],7:[function(require,module,exports){
/*
* The Original Code is Mozilla Universal charset detector code.
*
@@ -1459,7 +1472,7 @@ jschardet.CharSetProber = function() {
}(require('./init'));
-},{"./init":20}],7:[function(require,module,exports){
+},{"./init":21}],8:[function(require,module,exports){
/*
* The Original Code is Mozilla Universal charset detector code.
*
@@ -1532,7 +1545,7 @@ jschardet.CodingStateMachine = function(sm) {
}(require('./init'));
-},{"./init":20}],8:[function(require,module,exports){
+},{"./init":21}],9:[function(require,module,exports){
/*
* The Original Code is Mozilla Universal charset detector code.
*
@@ -1581,7 +1594,7 @@ jschardet.Constants = {
}(require('./init'));
-},{"./init":20}],9:[function(require,module,exports){
+},{"./init":21}],10:[function(require,module,exports){
/*
* The Original Code is Mozilla Universal charset detector code.
*
@@ -1681,7 +1694,7 @@ jschardet.EscCharSetProber.prototype = new jschardet.CharSetProber();
}(require('./init'));
-},{"./init":20}],10:[function(require,module,exports){
+},{"./init":21}],11:[function(require,module,exports){
/*
* The Original Code is Mozilla Universal charset detector code.
*
@@ -1937,7 +1950,7 @@ jschardet.ISO2022KRSMModel = {
}(require('./init'));
-},{"./init":20}],11:[function(require,module,exports){
+},{"./init":21}],12:[function(require,module,exports){
/*
* The Original Code is Mozilla Universal charset detector code.
*
@@ -2041,7 +2054,7 @@ jschardet.EUCJPProber.prototype = new jschardet.MultiByteCharSetProber();
}(require('./init'));
-},{"./init":20}],12:[function(require,module,exports){
+},{"./init":21}],13:[function(require,module,exports){
/*
* The Original Code is Mozilla Universal charset detector code.
*
@@ -2644,7 +2657,7 @@ jschardet.EUCKRCharToFreqOrder = [
}(require('./init'));
-},{"./init":20}],13:[function(require,module,exports){
+},{"./init":21}],14:[function(require,module,exports){
/*
* The Original Code is Mozilla Universal charset detector code.
*
@@ -2697,7 +2710,7 @@ jschardet.EUCKRProber.prototype = new jschardet.MultiByteCharSetProber();
}(require('./init'));
-},{"./init":20}],14:[function(require,module,exports){
+},{"./init":21}],15:[function(require,module,exports){
/*
* The Original Code is Mozilla Universal charset detector code.
*
@@ -3132,7 +3145,7 @@ jschardet.EUCTWCharToFreqOrder = [
}(require('./init'));
-},{"./init":20}],15:[function(require,module,exports){
+},{"./init":21}],16:[function(require,module,exports){
/*
* The Original Code is Mozilla Universal charset detector code.
*
@@ -3185,7 +3198,7 @@ jschardet.EUCTWProber.prototype = new jschardet.MultiByteCharSetProber();
}(require('./init'));
-},{"./init":20}],16:[function(require,module,exports){
+},{"./init":21}],17:[function(require,module,exports){
/*
* The Original Code is Mozilla Universal charset detector code.
*
@@ -3664,7 +3677,7 @@ jschardet.GB2312CharToFreqOrder = [
}(require('./init'));
-},{"./init":20}],17:[function(require,module,exports){
+},{"./init":21}],18:[function(require,module,exports){
/*
* The Original Code is Mozilla Universal charset detector code.
*
@@ -3717,7 +3730,7 @@ jschardet.GB2312Prober.prototype = new jschardet.MultiByteCharSetProber();
}(require('./init'));
-},{"./init":20}],18:[function(require,module,exports){
+},{"./init":21}],19:[function(require,module,exports){
/*
* The Original Code is Mozilla Universal charset detector code.
*
@@ -4041,9 +4054,9 @@ if (!Array.prototype.indexOf)
}(require('./init'));
-},{"./init":20}],19:[function(require,module,exports){
+},{"./init":21}],20:[function(require,module,exports){
module.exports = require('./init')
-},{"./init":20}],20:[function(require,module,exports){
+},{"./init":21}],21:[function(require,module,exports){
/*
* The Original Code is Mozilla Universal charset detector code.
*
@@ -4126,7 +4139,7 @@ jschardet.log = function() {
console.log.apply(console, arguments);
}
-},{"./big5freq":2,"./big5prober":3,"./chardistribution":4,"./charsetgroupprober":5,"./charsetprober":6,"./codingstatemachine":7,"./constants":8,"./escprober":9,"./escsm":10,"./eucjpprober":11,"./euckrfreq":12,"./euckrprober":13,"./euctwfreq":14,"./euctwprober":15,"./gb2312freq":16,"./gb2312prober":17,"./hebrewprober":18,"./jisfreq":21,"./jpcntx":22,"./langbulgarianmodel":23,"./langcyrillicmodel":24,"./langgreekmodel":25,"./langhebrewmodel":26,"./langhungarianmodel":27,"./langthaimodel":28,"./latin1prober":29,"./mbcharsetprober":30,"./mbcsgroupprober":31,"./mbcssm":32,"./sbcharsetprober":33,"./sbcsgroupprober":34,"./sjisprober":35,"./universaldetector":36,"./utf8prober":37}],21:[function(require,module,exports){
+},{"./big5freq":3,"./big5prober":4,"./chardistribution":5,"./charsetgroupprober":6,"./charsetprober":7,"./codingstatemachine":8,"./constants":9,"./escprober":10,"./escsm":11,"./eucjpprober":12,"./euckrfreq":13,"./euckrprober":14,"./euctwfreq":15,"./euctwprober":16,"./gb2312freq":17,"./gb2312prober":18,"./hebrewprober":19,"./jisfreq":22,"./jpcntx":23,"./langbulgarianmodel":24,"./langcyrillicmodel":25,"./langgreekmodel":26,"./langhebrewmodel":27,"./langhungarianmodel":28,"./langthaimodel":29,"./latin1prober":30,"./mbcharsetprober":31,"./mbcsgroupprober":32,"./mbcssm":33,"./sbcharsetprober":34,"./sbcsgroupprober":35,"./sjisprober":36,"./universaldetector":37,"./utf8prober":38}],22:[function(require,module,exports){
/*
* The Original Code is Mozilla Universal charset detector code.
*
@@ -4701,7 +4714,7 @@ jschardet.JISCharToFreqOrder = [
}(require('./init'));
-},{"./init":20}],22:[function(require,module,exports){
+},{"./init":21}],23:[function(require,module,exports){
/*
* The Original Code is Mozilla Universal charset detector code.
*
@@ -4945,7 +4958,7 @@ jschardet.EUCJPContextAnalysis.prototype = new jschardet.JapaneseContextAnalysis
}(require('./init'));
-},{"./init":20}],23:[function(require,module,exports){
+},{"./init":21}],24:[function(require,module,exports){
/*
* The Original Code is Mozilla Universal charset detector code.
*
@@ -5179,7 +5192,7 @@ jschardet.Win1251BulgarianModel = {
}(require('./init'));
-},{"./init":20}],24:[function(require,module,exports){
+},{"./init":21}],25:[function(require,module,exports){
/*
* The Original Code is Mozilla Universal charset detector code.
*
@@ -5514,7 +5527,7 @@ jschardet.Ibm855Model = {
}(require('./init'));
-},{"./init":20}],25:[function(require,module,exports){
+},{"./init":21}],26:[function(require,module,exports){
/*
* The Original Code is Mozilla Universal charset detector code.
*
@@ -5745,7 +5758,7 @@ jschardet.Win1253GreekModel = {
}(require('./init'));
-},{"./init":20}],26:[function(require,module,exports){
+},{"./init":21}],27:[function(require,module,exports){
/*
* The Original Code is Mozilla Universal charset detector code.
*
@@ -5950,7 +5963,7 @@ jschardet.Win1255HebrewModel = {
}(require('./init'));
-},{"./init":20}],27:[function(require,module,exports){
+},{"./init":21}],28:[function(require,module,exports){
/*
* The Original Code is Mozilla Universal charset detector code.
*
@@ -6181,7 +6194,7 @@ jschardet.Win1250HungarianModel = {
}(require('./init'));
-},{"./init":20}],28:[function(require,module,exports){
+},{"./init":21}],29:[function(require,module,exports){
/*
* The Original Code is Mozilla Universal charset detector code.
*
@@ -6387,7 +6400,7 @@ jschardet.TIS620ThaiModel = {
}(require('./init'));
-},{"./init":20}],29:[function(require,module,exports){
+},{"./init":21}],30:[function(require,module,exports){
/*
* The Original Code is Mozilla Universal charset detector code.
*
@@ -6555,7 +6568,7 @@ jschardet.Latin1Prober.prototype = new jschardet.CharSetProber();
}(require('./init'));
-},{"./init":20}],30:[function(require,module,exports){
+},{"./init":21}],31:[function(require,module,exports){
/*
* The Original Code is Mozilla Universal charset detector code.
*
@@ -6658,7 +6671,7 @@ jschardet.MultiByteCharSetProber.prototype = new jschardet.CharSetProber();
}(require('./init'));
-},{"./init":20}],31:[function(require,module,exports){
+},{"./init":21}],32:[function(require,module,exports){
/*
* The Original Code is Mozilla Universal charset detector code.
*
@@ -6707,7 +6720,7 @@ jschardet.MBCSGroupProber.prototype = new jschardet.CharSetGroupProber();
}(require('./init'));
-},{"./init":20}],32:[function(require,module,exports){
+},{"./init":21}],33:[function(require,module,exports){
/*
* The Original Code is Mozilla Universal charset detector code.
*
@@ -7053,8 +7066,8 @@ jschardet.SJIS_cls = [
2,2,2,2,2,2,2,2, // d8 - df
3,3,3,3,3,3,3,3, // e0 - e7
3,3,3,3,3,4,4,4, // e8 - ef
- 4,4,4,4,4,4,4,4, // f0 - f7
- 4,4,4,4,4,0,0,0 // f8 - ff
+ 3,3,3,3,3,3,3,3, // f0 - f7
+ 3,3,3,3,3,0,0,0 // f8 - ff
];
jschardet.SJIS_st = [
@@ -7265,7 +7278,7 @@ jschardet.UTF8SMModel = {
}(require('./init'));
-},{"./init":20}],33:[function(require,module,exports){
+},{"./init":21}],34:[function(require,module,exports){
/*
* The Original Code is Mozilla Universal charset detector code.
*
@@ -7406,7 +7419,7 @@ jschardet.SingleByteCharSetProber.prototype = new jschardet.CharSetProber();
}(require('./init'));
-},{"./init":20}],34:[function(require,module,exports){
+},{"./init":21}],35:[function(require,module,exports){
/*
* The Original Code is Mozilla Universal charset detector code.
*
@@ -7474,7 +7487,7 @@ jschardet.SBCSGroupProber.prototype = new jschardet.CharSetGroupProber();
}(require('./init'));
-},{"./init":20}],35:[function(require,module,exports){
+},{"./init":21}],36:[function(require,module,exports){
/*
* The Original Code is Mozilla Universal charset detector code.
*
@@ -7577,7 +7590,7 @@ jschardet.SJISProber.prototype = new jschardet.MultiByteCharSetProber();
}(require('./init'));
-},{"./init":20}],36:[function(require,module,exports){
+},{"./init":21}],37:[function(require,module,exports){
/*
* The Original Code is Mozilla Universal charset detector code.
*
@@ -7789,7 +7802,7 @@ jschardet.UniversalDetector = function() {
}(require('./init'));
-},{"./init":20}],37:[function(require,module,exports){
+},{"./init":21}],38:[function(require,module,exports){
/*
* The Original Code is Mozilla Universal charset detector code.
*
@@ -7886,5 +7899,5 @@ jschardet.UTF8Prober.prototype = new jschardet.CharSetProber();
}(require('./init'));
-},{"./init":20}]},{},[1])(1)
+},{"./init":21}]},{},[1])(1)
}); \ No newline at end of file
diff --git a/tools/eslint/node_modules/jschardet/dist/jschardet.min.js b/tools/eslint/node_modules/jschardet/dist/jschardet.min.js
index e4753136bd..06ca20343b 100755
--- a/tools/eslint/node_modules/jschardet/dist/jschardet.min.js
+++ b/tools/eslint/node_modules/jschardet/dist/jschardet.min.js
@@ -1,673 +1,673 @@
(function(l){"object"===typeof exports&&"undefined"!==typeof module?module.exports=l():"function"===typeof define&&define.amd?define([],l):("undefined"!==typeof window?window:"undefined"!==typeof global?global:"undefined"!==typeof self?self:this).jschardet=l()})(function(){return function b(a,d,h){function k(c,n){if(!d[c]){if(!a[c]){var g="function"==typeof require&&require;if(!n&&g)return g(c,!0);if(f)return f(c,!0);g=Error("Cannot find module '"+c+"'");throw g.code="MODULE_NOT_FOUND",g;}g=d[c]=
-{exports:{}};a[c][0].call(g.exports,function(h){var b=a[c][1][h];return k(b?b:h)},g,g.exports,b,a,d,h)}return d[c].exports}for(var f="function"==typeof require&&require,c=0;c<h.length;c++)k(h[c]);return k}({1:[function(b,a,d){a.exports=b("./src")},{"./src":19}],2:[function(b,a,d){b=b("./init");b.BIG5_TYPICAL_DISTRIBUTION_RATIO=.75;b.BIG5_TABLE_SIZE=5376;b.Big5CharToFreqOrder=[1,1801,1506,255,1431,198,9,82,6,5008,177,202,3681,1256,2821,110,3814,33,3274,261,76,44,2114,16,2946,2187,1176,659,3971,26,
-3451,2653,1198,3972,3350,4202,410,2215,302,590,361,1964,8,204,58,4510,5009,1932,63,5010,5011,317,1614,75,222,159,4203,2417,1480,5012,3555,3091,224,2822,3682,3,10,3973,1471,29,2787,1135,2866,1940,873,130,3275,1123,312,5013,4511,2052,507,252,682,5014,142,1915,124,206,2947,34,3556,3204,64,604,5015,2501,1977,1978,155,1991,645,641,1606,5016,3452,337,72,406,5017,80,630,238,3205,1509,263,939,1092,2654,756,1440,1094,3453,449,69,2987,591,179,2096,471,115,2035,1844,60,50,2988,134,806,1869,734,2036,3454,180,
-995,1607,156,537,2907,688,5018,319,1305,779,2145,514,2379,298,4512,359,2502,90,2716,1338,663,11,906,1099,2553,20,2441,182,532,1716,5019,732,1376,4204,1311,1420,3206,25,2317,1056,113,399,382,1950,242,3455,2474,529,3276,475,1447,3683,5020,117,21,656,810,1297,2300,2334,3557,5021,126,4205,706,456,150,613,4513,71,1118,2037,4206,145,3092,85,835,486,2115,1246,1426,428,727,1285,1015,800,106,623,303,1281,5022,2128,2359,347,3815,221,3558,3135,5023,1956,1153,4207,83,296,1199,3093,192,624,93,5024,822,1898,2823,
-3136,795,2065,991,1554,1542,1592,27,43,2867,859,139,1456,860,4514,437,712,3974,164,2397,3137,695,211,3037,2097,195,3975,1608,3559,3560,3684,3976,234,811,2989,2098,3977,2233,1441,3561,1615,2380,668,2077,1638,305,228,1664,4515,467,415,5025,262,2099,1593,239,108,300,200,1033,512,1247,2078,5026,5027,2176,3207,3685,2682,593,845,1062,3277,88,1723,2038,3978,1951,212,266,152,149,468,1899,4208,4516,77,187,5028,3038,37,5,2990,5029,3979,5030,5031,39,2524,4517,2908,3208,2079,55,148,74,4518,545,483,1474,1029,
-1665,217,1870,1531,3138,1104,2655,4209,24,172,3562,900,3980,3563,3564,4519,32,1408,2824,1312,329,487,2360,2251,2717,784,2683,4,3039,3351,1427,1789,188,109,499,5032,3686,1717,1790,888,1217,3040,4520,5033,3565,5034,3352,1520,3687,3981,196,1034,775,5035,5036,929,1816,249,439,38,5037,1063,5038,794,3982,1435,2301,46,178,3278,2066,5039,2381,5040,214,1709,4521,804,35,707,324,3688,1601,2554,140,459,4210,5041,5042,1365,839,272,978,2262,2580,3456,2129,1363,3689,1423,697,100,3094,48,70,1231,495,3139,2196,5043,
-1294,5044,2080,462,586,1042,3279,853,256,988,185,2382,3457,1698,434,1084,5045,3458,314,2625,2788,4522,2335,2336,569,2285,637,1817,2525,757,1162,1879,1616,3459,287,1577,2116,768,4523,1671,2868,3566,2526,1321,3816,909,2418,5046,4211,933,3817,4212,2053,2361,1222,4524,765,2419,1322,786,4525,5047,1920,1462,1677,2909,1699,5048,4526,1424,2442,3140,3690,2600,3353,1775,1941,3460,3983,4213,309,1369,1130,2825,364,2234,1653,1299,3984,3567,3985,3986,2656,525,1085,3041,902,2001,1475,964,4527,421,1845,1415,1057,
-2286,940,1364,3141,376,4528,4529,1381,7,2527,983,2383,336,1710,2684,1846,321,3461,559,1131,3042,2752,1809,1132,1313,265,1481,1858,5049,352,1203,2826,3280,167,1089,420,2827,776,792,1724,3568,4214,2443,3281,5050,4215,5051,446,229,333,2753,901,3818,1200,1557,4530,2657,1921,395,2754,2685,3819,4216,1836,125,916,3209,2626,4531,5052,5053,3820,5054,5055,5056,4532,3142,3691,1133,2555,1757,3462,1510,2318,1409,3569,5057,2146,438,2601,2910,2384,3354,1068,958,3043,461,311,2869,2686,4217,1916,3210,4218,1979,383,
-750,2755,2627,4219,274,539,385,1278,1442,5058,1154,1965,384,561,210,98,1295,2556,3570,5059,1711,2420,1482,3463,3987,2911,1257,129,5060,3821,642,523,2789,2790,2658,5061,141,2235,1333,68,176,441,876,907,4220,603,2602,710,171,3464,404,549,18,3143,2398,1410,3692,1666,5062,3571,4533,2912,4534,5063,2991,368,5064,146,366,99,871,3693,1543,748,807,1586,1185,22,2263,379,3822,3211,5065,3212,505,1942,2628,1992,1382,2319,5066,380,2362,218,702,1818,1248,3465,3044,3572,3355,3282,5067,2992,3694,930,3283,3823,5068,
-59,5069,585,601,4221,497,3466,1112,1314,4535,1802,5070,1223,1472,2177,5071,749,1837,690,1900,3824,1773,3988,1476,429,1043,1791,2236,2117,917,4222,447,1086,1629,5072,556,5073,5074,2021,1654,844,1090,105,550,966,1758,2828,1008,1783,686,1095,5075,2287,793,1602,5076,3573,2603,4536,4223,2948,2302,4537,3825,980,2503,544,353,527,4538,908,2687,2913,5077,381,2629,1943,1348,5078,1341,1252,560,3095,5079,3467,2870,5080,2054,973,886,2081,143,4539,5081,5082,157,3989,496,4224,57,840,540,2039,4540,4541,3468,2118,
-1445,970,2264,1748,1966,2082,4225,3144,1234,1776,3284,2829,3695,773,1206,2130,1066,2040,1326,3990,1738,1725,4226,279,3145,51,1544,2604,423,1578,2131,2067,173,4542,1880,5083,5084,1583,264,610,3696,4543,2444,280,154,5085,5086,5087,1739,338,1282,3096,693,2871,1411,1074,3826,2445,5088,4544,5089,5090,1240,952,2399,5091,2914,1538,2688,685,1483,4227,2475,1436,953,4228,2055,4545,671,2400,79,4229,2446,3285,608,567,2689,3469,4230,4231,1691,393,1261,1792,2401,5092,4546,5093,5094,5095,5096,1383,1672,3827,3213,
-1464,522,1119,661,1150,216,675,4547,3991,1432,3574,609,4548,2690,2402,5097,5098,5099,4232,3045,0,5100,2476,315,231,2447,301,3356,4549,2385,5101,233,4233,3697,1819,4550,4551,5102,96,1777,1315,2083,5103,257,5104,1810,3698,2718,1139,1820,4234,2022,1124,2164,2791,1778,2659,5105,3097,363,1655,3214,5106,2993,5107,5108,5109,3992,1567,3993,718,103,3215,849,1443,341,3357,2949,1484,5110,1712,127,67,339,4235,2403,679,1412,821,5111,5112,834,738,351,2994,2147,846,235,1497,1881,418,1993,3828,2719,186,1100,2148,
-2756,3575,1545,1355,2950,2872,1377,583,3994,4236,2581,2995,5113,1298,3699,1078,2557,3700,2363,78,3829,3830,267,1289,2100,2002,1594,4237,348,369,1274,2197,2178,1838,4552,1821,2830,3701,2757,2288,2003,4553,2951,2758,144,3358,882,4554,3995,2759,3470,4555,2915,5114,4238,1726,320,5115,3996,3046,788,2996,5116,2831,1774,1327,2873,3997,2832,5117,1306,4556,2004,1700,3831,3576,2364,2660,787,2023,506,824,3702,534,323,4557,1044,3359,2024,1901,946,3471,5118,1779,1500,1678,5119,1882,4558,165,243,4559,3703,2528,
-123,683,4239,764,4560,36,3998,1793,589,2916,816,626,1667,3047,2237,1639,1555,1622,3832,3999,5120,4E3,2874,1370,1228,1933,891,2084,2917,304,4240,5121,292,2997,2720,3577,691,2101,4241,1115,4561,118,662,5122,611,1156,854,2386,1316,2875,2,386,515,2918,5123,5124,3286,868,2238,1486,855,2661,785,2216,3048,5125,1040,3216,3578,5126,3146,448,5127,1525,5128,2165,4562,5129,3833,5130,4242,2833,3579,3147,503,818,4001,3148,1568,814,676,1444,306,1749,5131,3834,1416,1030,197,1428,805,2834,1501,4563,5132,5133,5134,
-1994,5135,4564,5136,5137,2198,13,2792,3704,2998,3149,1229,1917,5138,3835,2132,5139,4243,4565,2404,3580,5140,2217,1511,1727,1120,5141,5142,646,3836,2448,307,5143,5144,1595,3217,5145,5146,5147,3705,1113,1356,4002,1465,2529,2530,5148,519,5149,128,2133,92,2289,1980,5150,4003,1512,342,3150,2199,5151,2793,2218,1981,3360,4244,290,1656,1317,789,827,2365,5152,3837,4566,562,581,4004,5153,401,4567,2252,94,4568,5154,1399,2794,5155,1463,2025,4569,3218,1944,5156,828,1105,4245,1262,1394,5157,4246,605,4570,5158,
-1784,2876,5159,2835,819,2102,578,2200,2952,5160,1502,436,3287,4247,3288,2836,4005,2919,3472,3473,5161,2721,2320,5162,5163,2337,2068,23,4571,193,826,3838,2103,699,1630,4248,3098,390,1794,1064,3581,5164,1579,3099,3100,1400,5165,4249,1839,1640,2877,5166,4572,4573,137,4250,598,3101,1967,780,104,974,2953,5167,278,899,253,402,572,504,493,1339,5168,4006,1275,4574,2582,2558,5169,3706,3049,3102,2253,565,1334,2722,863,41,5170,5171,4575,5172,1657,2338,19,463,2760,4251,606,5173,2999,3289,1087,2085,1323,2662,
-3E3,5174,1631,1623,1750,4252,2691,5175,2878,791,2723,2663,2339,232,2421,5176,3001,1498,5177,2664,2630,755,1366,3707,3290,3151,2026,1609,119,1918,3474,862,1026,4253,5178,4007,3839,4576,4008,4577,2265,1952,2477,5179,1125,817,4254,4255,4009,1513,1766,2041,1487,4256,3050,3291,2837,3840,3152,5180,5181,1507,5182,2692,733,40,1632,1106,2879,345,4257,841,2531,230,4578,3002,1847,3292,3475,5183,1263,986,3476,5184,735,879,254,1137,857,622,1300,1180,1388,1562,4010,4011,2954,967,2761,2665,1349,592,2134,1692,3361,
-3003,1995,4258,1679,4012,1902,2188,5185,739,3708,2724,1296,1290,5186,4259,2201,2202,1922,1563,2605,2559,1871,2762,3004,5187,435,5188,343,1108,596,17,1751,4579,2239,3477,3709,5189,4580,294,3582,2955,1693,477,979,281,2042,3583,643,2043,3710,2631,2795,2266,1031,2340,2135,2303,3584,4581,367,1249,2560,5190,3585,5191,4582,1283,3362,2005,240,1762,3363,4583,4584,836,1069,3153,474,5192,2149,2532,268,3586,5193,3219,1521,1284,5194,1658,1546,4260,5195,3587,3588,5196,4261,3364,2693,1685,4262,961,1673,2632,190,
-2006,2203,3841,4585,4586,5197,570,2504,3711,1490,5198,4587,2633,3293,1957,4588,584,1514,396,1045,1945,5199,4589,1968,2449,5200,5201,4590,4013,619,5202,3154,3294,215,2007,2796,2561,3220,4591,3221,4592,763,4263,3842,4593,5203,5204,1958,1767,2956,3365,3712,1174,452,1477,4594,3366,3155,5205,2838,1253,2387,2189,1091,2290,4264,492,5206,638,1169,1825,2136,1752,4014,648,926,1021,1324,4595,520,4596,997,847,1007,892,4597,3843,2267,1872,3713,2405,1785,4598,1953,2957,3103,3222,1728,4265,2044,3714,4599,2008,1701,
-3156,1551,30,2268,4266,5207,2027,4600,3589,5208,501,5209,4267,594,3478,2166,1822,3590,3479,3591,3223,829,2839,4268,5210,1680,3157,1225,4269,5211,3295,4601,4270,3158,2341,5212,4602,4271,5213,4015,4016,5214,1848,2388,2606,3367,5215,4603,374,4017,652,4272,4273,375,1140,798,5216,5217,5218,2366,4604,2269,546,1659,138,3051,2450,4605,5219,2254,612,1849,910,796,3844,1740,1371,825,3845,3846,5220,2920,2562,5221,692,444,3052,2634,801,4606,4274,5222,1491,244,1053,3053,4275,4276,340,5223,4018,1041,3005,293,1168,
-87,1357,5224,1539,959,5225,2240,721,694,4277,3847,219,1478,644,1417,3368,2666,1413,1401,1335,1389,4019,5226,5227,3006,2367,3159,1826,730,1515,184,2840,66,4607,5228,1660,2958,246,3369,378,1457,226,3480,975,4020,2959,1264,3592,674,696,5229,163,5230,1141,2422,2167,713,3593,3370,4608,4021,5231,5232,1186,15,5233,1079,1070,5234,1522,3224,3594,276,1050,2725,758,1126,653,2960,3296,5235,2342,889,3595,4022,3104,3007,903,1250,4609,4023,3481,3596,1342,1681,1718,766,3297,286,89,2961,3715,5236,1713,5237,2607,3371,
-3008,5238,2962,2219,3225,2880,5239,4610,2505,2533,181,387,1075,4024,731,2190,3372,5240,3298,310,313,3482,2304,770,4278,54,3054,189,4611,3105,3848,4025,5241,1230,1617,1850,355,3597,4279,4612,3373,111,4280,3716,1350,3160,3483,3055,4281,2150,3299,3598,5242,2797,4026,4027,3009,722,2009,5243,1071,247,1207,2343,2478,1378,4613,2010,864,1437,1214,4614,373,3849,1142,2220,667,4615,442,2763,2563,3850,4028,1969,4282,3300,1840,837,170,1107,934,1336,1883,5244,5245,2119,4283,2841,743,1569,5246,4616,4284,582,2389,
-1418,3484,5247,1803,5248,357,1395,1729,3717,3301,2423,1564,2241,5249,3106,3851,1633,4617,1114,2086,4285,1532,5250,482,2451,4618,5251,5252,1492,833,1466,5253,2726,3599,1641,2842,5254,1526,1272,3718,4286,1686,1795,416,2564,1903,1954,1804,5255,3852,2798,3853,1159,2321,5256,2881,4619,1610,1584,3056,2424,2764,443,3302,1163,3161,5257,5258,4029,5259,4287,2506,3057,4620,4030,3162,2104,1647,3600,2011,1873,4288,5260,4289,431,3485,5261,250,97,81,4290,5262,1648,1851,1558,160,848,5263,866,740,1694,5264,2204,2843,
-3226,4291,4621,3719,1687,950,2479,426,469,3227,3720,3721,4031,5265,5266,1188,424,1996,861,3601,4292,3854,2205,2694,168,1235,3602,4293,5267,2087,1674,4622,3374,3303,220,2565,1009,5268,3855,670,3010,332,1208,717,5269,5270,3603,2452,4032,3375,5271,513,5272,1209,2882,3376,3163,4623,1080,5273,5274,5275,5276,2534,3722,3604,815,1587,4033,4034,5277,3605,3486,3856,1254,4624,1328,3058,1390,4035,1741,4036,3857,4037,5278,236,3858,2453,3304,5279,5280,3723,3859,1273,3860,4625,5281,308,5282,4626,245,4627,1852,2480,
-1307,2583,430,715,2137,2454,5283,270,199,2883,4038,5284,3606,2727,1753,761,1754,725,1661,1841,4628,3487,3724,5285,5286,587,14,3305,227,2608,326,480,2270,943,2765,3607,291,650,1884,5287,1702,1226,102,1547,62,3488,904,4629,3489,1164,4294,5288,5289,1224,1548,2766,391,498,1493,5290,1386,1419,5291,2056,1177,4630,813,880,1081,2368,566,1145,4631,2291,1001,1035,2566,2609,2242,394,1286,5292,5293,2069,5294,86,1494,1730,4039,491,1588,745,897,2963,843,3377,4040,2767,2884,3306,1768,998,2221,2070,397,1827,1195,
-1970,3725,3011,3378,284,5295,3861,2507,2138,2120,1904,5296,4041,2151,4042,4295,1036,3490,1905,114,2567,4296,209,1527,5297,5298,2964,2844,2635,2390,2728,3164,812,2568,5299,3307,5300,1559,737,1885,3726,1210,885,28,2695,3608,3862,5301,4297,1004,1780,4632,5302,346,1982,2222,2696,4633,3863,1742,797,1642,4043,1934,1072,1384,2152,896,4044,3308,3727,3228,2885,3609,5303,2569,1959,4634,2455,1786,5304,5305,5306,4045,4298,1005,1308,3728,4299,2729,4635,4636,1528,2610,161,1178,4300,1983,987,4637,1101,4301,631,
-4046,1157,3229,2425,1343,1241,1016,2243,2570,372,877,2344,2508,1160,555,1935,911,4047,5307,466,1170,169,1051,2921,2697,3729,2481,3012,1182,2012,2571,1251,2636,5308,992,2345,3491,1540,2730,1201,2071,2406,1997,2482,5309,4638,528,1923,2191,1503,1874,1570,2369,3379,3309,5310,557,1073,5311,1828,3492,2088,2271,3165,3059,3107,767,3108,2799,4639,1006,4302,4640,2346,1267,2179,3730,3230,778,4048,3231,2731,1597,2667,5312,4641,5313,3493,5314,5315,5316,3310,2698,1433,3311,131,95,1504,4049,723,4303,3166,1842,3610,
-2768,2192,4050,2028,2105,3731,5317,3013,4051,1218,5318,3380,3232,4052,4304,2584,248,1634,3864,912,5319,2845,3732,3060,3865,654,53,5320,3014,5321,1688,4642,777,3494,1032,4053,1425,5322,191,820,2121,2846,971,4643,931,3233,135,664,783,3866,1998,772,2922,1936,4054,3867,4644,2923,3234,282,2732,640,1372,3495,1127,922,325,3381,5323,5324,711,2045,5325,5326,4055,2223,2800,1937,4056,3382,2224,2255,3868,2305,5327,4645,3869,1258,3312,4057,3235,2139,2965,4058,4059,5328,2225,258,3236,4646,101,1227,5329,3313,1755,
-5330,1391,3314,5331,2924,2057,893,5332,5333,5334,1402,4305,2347,5335,5336,3237,3611,5337,5338,878,1325,1781,2801,4647,259,1385,2585,744,1183,2272,4648,5339,4060,2509,5340,684,1024,4306,5341,472,3612,3496,1165,3315,4061,4062,322,2153,881,455,1695,1152,1340,660,554,2154,4649,1058,4650,4307,830,1065,3383,4063,4651,1924,5342,1703,1919,5343,932,2273,122,5344,4652,947,677,5345,3870,2637,297,1906,1925,2274,4653,2322,3316,5346,5347,4308,5348,4309,84,4310,112,989,5349,547,1059,4064,701,3613,1019,5350,4311,
-5351,3497,942,639,457,2306,2456,993,2966,407,851,494,4654,3384,927,5352,1237,5353,2426,3385,573,4312,680,921,2925,1279,1875,285,790,1448,1984,719,2168,5354,5355,4655,4065,4066,1649,5356,1541,563,5357,1077,5358,3386,3061,3498,511,3015,4067,4068,3733,4069,1268,2572,3387,3238,4656,4657,5359,535,1048,1276,1189,2926,2029,3167,1438,1373,2847,2967,1134,2013,5360,4313,1238,2586,3109,1259,5361,700,5362,2968,3168,3734,4314,5363,4315,1146,1876,1907,4658,2611,4070,781,2427,132,1589,203,147,273,2802,2407,898,
-1787,2155,4071,4072,5364,3871,2803,5365,5366,4659,4660,5367,3239,5368,1635,3872,965,5369,1805,2699,1516,3614,1121,1082,1329,3317,4073,1449,3873,65,1128,2848,2927,2769,1590,3874,5370,5371,12,2668,45,976,2587,3169,4661,517,2535,1013,1037,3240,5372,3875,2849,5373,3876,5374,3499,5375,2612,614,1999,2323,3877,3110,2733,2638,5376,2588,4316,599,1269,5377,1811,3735,5378,2700,3111,759,1060,489,1806,3388,3318,1358,5379,5380,2391,1387,1215,2639,2256,490,5381,5382,4317,1759,2392,2348,5383,4662,3878,1908,4074,
-2640,1807,3241,4663,3500,3319,2770,2349,874,5384,5385,3501,3736,1859,91,2928,3737,3062,3879,4664,5386,3170,4075,2669,5387,3502,1202,1403,3880,2969,2536,1517,2510,4665,3503,2511,5388,4666,5389,2701,1886,1495,1731,4076,2370,4667,5390,2030,5391,5392,4077,2702,1216,237,2589,4318,2324,4078,3881,4668,4669,2703,3615,3504,445,4670,5393,5394,5395,5396,2771,61,4079,3738,1823,4080,5397,687,2046,935,925,405,2670,703,1096,1860,2734,4671,4081,1877,1367,2704,3389,918,2106,1782,2483,334,3320,1611,1093,4672,564,3171,
-3505,3739,3390,945,2641,2058,4673,5398,1926,872,4319,5399,3506,2705,3112,349,4320,3740,4082,4674,3882,4321,3741,2156,4083,4675,4676,4322,4677,2408,2047,782,4084,400,251,4323,1624,5400,5401,277,3742,299,1265,476,1191,3883,2122,4324,4325,1109,205,5402,2590,1E3,2157,3616,1861,5403,5404,5405,4678,5406,4679,2573,107,2484,2158,4085,3507,3172,5407,1533,541,1301,158,753,4326,2886,3617,5408,1696,370,1088,4327,4680,3618,579,327,440,162,2244,269,1938,1374,3508,968,3063,56,1396,3113,2107,3321,3391,5409,1927,
-2159,4681,3016,5410,3619,5411,5412,3743,4682,2485,5413,2804,5414,1650,4683,5415,2613,5416,5417,4086,2671,3392,1149,3393,4087,3884,4088,5418,1076,49,5419,951,3242,3322,3323,450,2850,920,5420,1812,2805,2371,4328,1909,1138,2372,3885,3509,5421,3243,4684,1910,1147,1518,2428,4685,3886,5422,4686,2393,2614,260,1796,3244,5423,5424,3887,3324,708,5425,3620,1704,5426,3621,1351,1618,3394,3017,1887,944,4329,3395,4330,3064,3396,4331,5427,3744,422,413,1714,3325,500,2059,2350,4332,2486,5428,1344,1911,954,5429,1668,
-5430,5431,4089,2409,4333,3622,3888,4334,5432,2307,1318,2512,3114,133,3115,2887,4687,629,31,2851,2706,3889,4688,850,949,4689,4090,2970,1732,2089,4335,1496,1853,5433,4091,620,3245,981,1242,3745,3397,1619,3746,1643,3326,2140,2457,1971,1719,3510,2169,5434,3246,5435,5436,3398,1829,5437,1277,4690,1565,2048,5438,1636,3623,3116,5439,869,2852,655,3890,3891,3117,4092,3018,3892,1310,3624,4691,5440,5441,5442,1733,558,4692,3747,335,1549,3065,1756,4336,3748,1946,3511,1830,1291,1192,470,2735,2108,2806,913,1054,
-4093,5443,1027,5444,3066,4094,4693,982,2672,3399,3173,3512,3247,3248,1947,2807,5445,571,4694,5446,1831,5447,3625,2591,1523,2429,5448,2090,984,4695,3749,1960,5449,3750,852,923,2808,3513,3751,969,1519,999,2049,2325,1705,5450,3118,615,1662,151,597,4095,2410,2326,1049,275,4696,3752,4337,568,3753,3626,2487,4338,3754,5451,2430,2275,409,3249,5452,1566,2888,3514,1002,769,2853,194,2091,3174,3755,2226,3327,4339,628,1505,5453,5454,1763,2180,3019,4096,521,1161,2592,1788,2206,2411,4697,4097,1625,4340,4341,412,
-42,3119,464,5455,2642,4698,3400,1760,1571,2889,3515,2537,1219,2207,3893,2643,2141,2373,4699,4700,3328,1651,3401,3627,5456,5457,3628,2488,3516,5458,3756,5459,5460,2276,2092,460,5461,4701,5462,3020,962,588,3629,289,3250,2644,1116,52,5463,3067,1797,5464,5465,5466,1467,5467,1598,1143,3757,4342,1985,1734,1067,4702,1280,3402,465,4703,1572,510,5468,1928,2245,1813,1644,3630,5469,4704,3758,5470,5471,2673,1573,1534,5472,5473,536,1808,1761,3517,3894,3175,2645,5474,5475,5476,4705,3518,2929,1912,2809,5477,3329,
-1122,377,3251,5478,360,5479,5480,4343,1529,551,5481,2060,3759,1769,2431,5482,2930,4344,3330,3120,2327,2109,2031,4706,1404,136,1468,1479,672,1171,3252,2308,271,3176,5483,2772,5484,2050,678,2736,865,1948,4707,5485,2014,4098,2971,5486,2737,2227,1397,3068,3760,4708,4709,1735,2931,3403,3631,5487,3895,509,2854,2458,2890,3896,5488,5489,3177,3178,4710,4345,2538,4711,2309,1166,1010,552,681,1888,5490,5491,2972,2973,4099,1287,1596,1862,3179,358,453,736,175,478,1117,905,1167,1097,5492,1854,1530,5493,1706,5494,
-2181,3519,2292,3761,3520,3632,4346,2093,4347,5495,3404,1193,2489,4348,1458,2193,2208,1863,1889,1421,3331,2932,3069,2182,3521,595,2123,5496,4100,5497,5498,4349,1707,2646,223,3762,1359,751,3121,183,3522,5499,2810,3021,419,2374,633,704,3897,2394,241,5500,5501,5502,838,3022,3763,2277,2773,2459,3898,1939,2051,4101,1309,3122,2246,1181,5503,1136,2209,3899,2375,1446,4350,2310,4712,5504,5505,4351,1055,2615,484,3764,5506,4102,625,4352,2278,3405,1499,4353,4103,5507,4104,4354,3253,2279,2280,3523,5508,5509,2774,
-808,2616,3765,3406,4105,4355,3123,2539,526,3407,3900,4356,955,5510,1620,4357,2647,2432,5511,1429,3766,1669,1832,994,928,5512,3633,1260,5513,5514,5515,1949,2293,741,2933,1626,4358,2738,2460,867,1184,362,3408,1392,5516,5517,4106,4359,1770,1736,3254,2934,4713,4714,1929,2707,1459,1158,5518,3070,3409,2891,1292,1930,2513,2855,3767,1986,1187,2072,2015,2617,4360,5519,2574,2514,2170,3768,2490,3332,5520,3769,4715,5521,5522,666,1003,3023,1022,3634,4361,5523,4716,1814,2257,574,3901,1603,295,1535,705,3902,4362,
-283,858,417,5524,5525,3255,4717,4718,3071,1220,1890,1046,2281,2461,4107,1393,1599,689,2575,388,4363,5526,2491,802,5527,2811,3903,2061,1405,2258,5528,4719,3904,2110,1052,1345,3256,1585,5529,809,5530,5531,5532,575,2739,3524,956,1552,1469,1144,2328,5533,2329,1560,2462,3635,3257,4108,616,2210,4364,3180,2183,2294,5534,1833,5535,3525,4720,5536,1319,3770,3771,1211,3636,1023,3258,1293,2812,5537,5538,5539,3905,607,2311,3906,762,2892,1439,4365,1360,4721,1485,3072,5540,4722,1038,4366,1450,2062,2648,4367,1379,
-4723,2593,5541,5542,4368,1352,1414,2330,2935,1172,5543,5544,3907,3908,4724,1798,1451,5545,5546,5547,5548,2936,4109,4110,2492,2351,411,4111,4112,3637,3333,3124,4725,1561,2674,1452,4113,1375,5549,5550,47,2974,316,5551,1406,1591,2937,3181,5552,1025,2142,3125,3182,354,2740,884,2228,4369,2412,508,3772,726,3638,996,2433,3639,729,5553,392,2194,1453,4114,4726,3773,5554,5555,2463,3640,2618,1675,2813,919,2352,2975,2353,1270,4727,4115,73,5556,5557,647,5558,3259,2856,2259,1550,1346,3024,5559,1332,883,3526,5560,
-5561,5562,5563,3334,2775,5564,1212,831,1347,4370,4728,2331,3909,1864,3073,720,3910,4729,4730,3911,5565,4371,5566,5567,4731,5568,5569,1799,4732,3774,2619,4733,3641,1645,2376,4734,5570,2938,669,2211,2675,2434,5571,2893,5572,5573,1028,3260,5574,4372,2413,5575,2260,1353,5576,5577,4735,3183,518,5578,4116,5579,4373,1961,5580,2143,4374,5581,5582,3025,2354,2355,3912,516,1834,1454,4117,2708,4375,4736,2229,2620,1972,1129,3642,5583,2776,5584,2976,1422,577,1470,3026,1524,3410,5585,5586,432,4376,3074,3527,5587,
-2594,1455,2515,2230,1973,1175,5588,1020,2741,4118,3528,4737,5589,2742,5590,1743,1361,3075,3529,2649,4119,4377,4738,2295,895,924,4378,2171,331,2247,3076,166,1627,3077,1098,5591,1232,2894,2231,3411,4739,657,403,1196,2377,542,3775,3412,1600,4379,3530,5592,4740,2777,3261,576,530,1362,4741,4742,2540,2676,3776,4120,5593,842,3913,5594,2814,2032,1014,4121,213,2709,3413,665,621,4380,5595,3777,2939,2435,5596,2436,3335,3643,3414,4743,4381,2541,4382,4744,3644,1682,4383,3531,1380,5597,724,2282,600,1670,5598,1337,
-1233,4745,3126,2248,5599,1621,4746,5600,651,4384,5601,1612,4385,2621,5602,2857,5603,2743,2312,3078,5604,716,2464,3079,174,1255,2710,4122,3645,548,1320,1398,728,4123,1574,5605,1891,1197,3080,4124,5606,3081,3082,3778,3646,3779,747,5607,635,4386,4747,5608,5609,5610,4387,5611,5612,4748,5613,3415,4749,2437,451,5614,3780,2542,2073,4388,2744,4389,4125,5615,1764,4750,5616,4390,350,4751,2283,2395,2493,5617,4391,4126,2249,1434,4127,488,4752,458,4392,4128,3781,771,1330,2396,3914,2576,3184,2160,2414,1553,2677,
-3185,4393,5618,2494,2895,2622,1720,2711,4394,3416,4753,5619,2543,4395,5620,3262,4396,2778,5621,2016,2745,5622,1155,1017,3782,3915,5623,3336,2313,201,1865,4397,1430,5624,4129,5625,5626,5627,5628,5629,4398,1604,5630,414,1866,371,2595,4754,4755,3532,2017,3127,4756,1708,960,4399,887,389,2172,1536,1663,1721,5631,2232,4130,2356,2940,1580,5632,5633,1744,4757,2544,4758,4759,5634,4760,5635,2074,5636,4761,3647,3417,2896,4400,5637,4401,2650,3418,2815,673,2712,2465,709,3533,4131,3648,4402,5638,1148,502,634,5639,
-5640,1204,4762,3649,1575,4763,2623,3783,5641,3784,3128,948,3263,121,1745,3916,1110,5642,4403,3083,2516,3027,4132,3785,1151,1771,3917,1488,4133,1987,5643,2438,3534,5644,5645,2094,5646,4404,3918,1213,1407,2816,531,2746,2545,3264,1011,1537,4764,2779,4405,3129,1061,5647,3786,3787,1867,2897,5648,2018,120,4406,4407,2063,3650,3265,2314,3919,2678,3419,1955,4765,4134,5649,3535,1047,2713,1266,5650,1368,4766,2858,649,3420,3920,2546,2747,1102,2859,2679,5651,5652,2E3,5653,1111,3651,2977,5654,2495,3921,3652,2817,
-1855,3421,3788,5655,5656,3422,2415,2898,3337,3266,3653,5657,2577,5658,3654,2818,4135,1460,856,5659,3655,5660,2899,2978,5661,2900,3922,5662,4408,632,2517,875,3923,1697,3924,2296,5663,5664,4767,3028,1239,580,4768,4409,5665,914,936,2075,1190,4136,1039,2124,5666,5667,5668,5669,3423,1473,5670,1354,4410,3925,4769,2173,3084,4137,915,3338,4411,4412,3339,1605,1835,5671,2748,398,3656,4413,3926,4138,328,1913,2860,4139,3927,1331,4414,3029,937,4415,5672,3657,4140,4141,3424,2161,4770,3425,524,742,538,3085,1012,
-5673,5674,3928,2466,5675,658,1103,225,3929,5676,5677,4771,5678,4772,5679,3267,1243,5680,4142,963,2250,4773,5681,2714,3658,3186,5682,5683,2596,2332,5684,4774,5685,5686,5687,3536,957,3426,2547,2033,1931,2941,2467,870,2019,3659,1746,2780,2781,2439,2468,5688,3930,5689,3789,3130,3790,3537,3427,3791,5690,1179,3086,5691,3187,2378,4416,3792,2548,3188,3131,2749,4143,5692,3428,1556,2549,2297,977,2901,2034,4144,1205,3429,5693,1765,3430,3189,2125,1271,714,1689,4775,3538,5694,2333,3931,533,4417,3660,2184,617,
-5695,2469,3340,3539,2315,5696,5697,3190,5698,5699,3932,1988,618,427,2651,3540,3431,5700,5701,1244,1690,5702,2819,4418,4776,5703,3541,4777,5704,2284,1576,473,3661,4419,3432,972,5705,3662,5706,3087,5707,5708,4778,4779,5709,3793,4145,4146,5710,153,4780,356,5711,1892,2902,4420,2144,408,803,2357,5712,3933,5713,4421,1646,2578,2518,4781,4782,3934,5714,3935,4422,5715,2416,3433,752,5716,5717,1962,3341,2979,5718,746,3030,2470,4783,4423,3794,698,4784,1893,4424,3663,2550,4785,3664,3936,5719,3191,3434,5720,1824,
-1302,4147,2715,3937,1974,4425,5721,4426,3192,823,1303,1288,1236,2861,3542,4148,3435,774,3938,5722,1581,4786,1304,2862,3939,4787,5723,2440,2162,1083,3268,4427,4149,4428,344,1173,288,2316,454,1683,5724,5725,1461,4788,4150,2597,5726,5727,4789,985,894,5728,3436,3193,5729,1914,2942,3795,1989,5730,2111,1975,5731,4151,5732,2579,1194,425,5733,4790,3194,1245,3796,4429,5734,5735,2863,5736,636,4791,1856,3940,760,1800,5737,4430,2212,1508,4792,4152,1894,1684,2298,5738,5739,4793,4431,4432,2213,479,5740,5741,832,
-5742,4153,2496,5743,2980,2497,3797,990,3132,627,1815,2652,4433,1582,4434,2126,2112,3543,4794,5744,799,4435,3195,5745,4795,2113,1737,3031,1018,543,754,4436,3342,1676,4796,4797,4154,4798,1489,5746,3544,5747,2624,2903,4155,5748,5749,2981,5750,5751,5752,5753,3196,4799,4800,2185,1722,5754,3269,3270,1843,3665,1715,481,365,1976,1857,5755,5756,1963,2498,4801,5757,2127,3666,3271,433,1895,2064,2076,5758,602,2750,5759,5760,5761,5762,5763,3032,1628,3437,5764,3197,4802,4156,2904,4803,2519,5765,2551,2782,5766,
-5767,5768,3343,4804,2905,5769,4805,5770,2864,4806,4807,1221,2982,4157,2520,5771,5772,5773,1868,1990,5774,5775,5776,1896,5777,5778,4808,1897,4158,318,5779,2095,4159,4437,5780,5781,485,5782,938,3941,553,2680,116,5783,3942,3667,5784,3545,2681,2783,3438,3344,2820,5785,3668,2943,4160,1747,2944,2983,5786,5787,207,5788,4809,5789,4810,2521,5790,3033,890,3669,3943,5791,1878,3798,3439,5792,2186,2358,3440,1652,5793,5794,5795,941,2299,208,3546,4161,2020,330,4438,3944,2906,2499,3799,4439,4811,5796,5797,5798,2522,
-1613,4812,5799,3345,3945,2523,5800,4162,5801,1637,4163,2471,4813,3946,5802,2500,3034,3800,5803,5804,2195,4814,5805,2163,5806,5807,5808,5809,5810,5811,5812,5813,5814,5815,5816,5817,5818,5819,5820,5821,5822,5823,5824,5825,5826,5827,5828,5829,5830,5831,5832,5833,5834,5835,5836,5837,5838,5839,5840,5841,5842,5843,5844,5845,5846,5847,5848,5849,5850,5851,5852,5853,5854,5855,5856,5857,5858,5859,5860,5861,5862,5863,5864,5865,5866,5867,5868,5869,5870,5871,5872,5873,5874,5875,5876,5877,5878,5879,5880,5881,5882,
-5883,5884,5885,5886,5887,5888,5889,5890,5891,5892,5893,5894,5895,5896,5897,5898,5899,5900,5901,5902,5903,5904,5905,5906,5907,5908,5909,5910,5911,5912,5913,5914,5915,5916,5917,5918,5919,5920,5921,5922,5923,5924,5925,5926,5927,5928,5929,5930,5931,5932,5933,5934,5935,5936,5937,5938,5939,5940,5941,5942,5943,5944,5945,5946,5947,5948,5949,5950,5951,5952,5953,5954,5955,5956,5957,5958,5959,5960,5961,5962,5963,5964,5965,5966,5967,5968,5969,5970,5971,5972,5973,5974,5975,5976,5977,5978,5979,5980,5981,5982,5983,
-5984,5985,5986,5987,5988,5989,5990,5991,5992,5993,5994,5995,5996,5997,5998,5999,6E3,6001,6002,6003,6004,6005,6006,6007,6008,6009,6010,6011,6012,6013,6014,6015,6016,6017,6018,6019,6020,6021,6022,6023,6024,6025,6026,6027,6028,6029,6030,6031,6032,6033,6034,6035,6036,6037,6038,6039,6040,6041,6042,6043,6044,6045,6046,6047,6048,6049,6050,6051,6052,6053,6054,6055,6056,6057,6058,6059,6060,6061,6062,6063,6064,6065,6066,6067,6068,6069,6070,6071,6072,6073,6074,6075,6076,6077,6078,6079,6080,6081,6082,6083,6084,
-6085,6086,6087,6088,6089,6090,6091,6092,6093,6094,6095,6096,6097,6098,6099,6100,6101,6102,6103,6104,6105,6106,6107,6108,6109,6110,6111,6112,6113,6114,6115,6116,6117,6118,6119,6120,6121,6122,6123,6124,6125,6126,6127,6128,6129,6130,6131,6132,6133,6134,6135,6136,6137,6138,6139,6140,6141,6142,6143,6144,6145,6146,6147,6148,6149,6150,6151,6152,6153,6154,6155,6156,6157,6158,6159,6160,6161,6162,6163,6164,6165,6166,6167,6168,6169,6170,6171,6172,6173,6174,6175,6176,6177,6178,6179,6180,6181,6182,6183,6184,6185,
-6186,6187,6188,6189,6190,6191,6192,6193,6194,6195,6196,6197,6198,6199,6200,6201,6202,6203,6204,6205,6206,6207,6208,6209,6210,6211,6212,6213,6214,6215,6216,6217,6218,6219,6220,6221,6222,6223,3670,6224,6225,6226,6227,6228,6229,6230,6231,6232,6233,6234,6235,6236,6237,6238,6239,6240,6241,6242,6243,6244,6245,6246,6247,6248,6249,6250,6251,6252,6253,6254,6255,6256,6257,6258,6259,6260,6261,6262,6263,6264,6265,6266,6267,6268,6269,6270,6271,6272,6273,6274,6275,6276,6277,6278,6279,6280,6281,6282,6283,6284,6285,
-4815,6286,6287,6288,6289,6290,6291,6292,4816,6293,6294,6295,6296,6297,6298,6299,6300,6301,6302,6303,6304,6305,6306,6307,6308,6309,6310,6311,4817,4818,6312,6313,6314,6315,6316,6317,6318,4819,6319,6320,6321,6322,6323,6324,6325,6326,6327,6328,6329,6330,6331,6332,6333,6334,6335,6336,6337,4820,6338,6339,6340,6341,6342,6343,6344,6345,6346,6347,6348,6349,6350,6351,6352,6353,6354,6355,6356,6357,6358,6359,6360,6361,6362,6363,6364,6365,6366,6367,6368,6369,6370,6371,6372,6373,6374,6375,6376,6377,6378,6379,6380,
-6381,6382,6383,6384,6385,6386,6387,6388,6389,6390,6391,6392,6393,6394,6395,6396,6397,6398,6399,6400,6401,6402,6403,6404,6405,6406,6407,6408,6409,6410,3441,6411,6412,6413,6414,6415,6416,6417,6418,6419,6420,6421,6422,6423,6424,6425,4440,6426,6427,6428,6429,6430,6431,6432,6433,6434,6435,6436,6437,6438,6439,6440,6441,6442,6443,6444,6445,6446,6447,6448,6449,6450,6451,6452,6453,6454,4821,6455,6456,6457,6458,6459,6460,6461,6462,6463,6464,6465,6466,6467,6468,6469,6470,6471,6472,6473,6474,6475,6476,6477,3947,
-3948,6478,6479,6480,6481,3272,4441,6482,6483,6484,6485,4442,6486,6487,6488,6489,6490,6491,6492,6493,6494,6495,6496,4822,6497,6498,6499,6500,6501,6502,6503,6504,6505,6506,6507,6508,6509,6510,6511,6512,6513,6514,6515,6516,6517,6518,6519,6520,6521,6522,6523,6524,6525,6526,6527,6528,6529,6530,6531,6532,6533,6534,6535,6536,6537,6538,6539,6540,6541,6542,6543,6544,6545,6546,6547,6548,6549,6550,6551,6552,6553,6554,6555,6556,2784,6557,4823,6558,6559,6560,6561,6562,6563,6564,6565,6566,6567,6568,6569,3949,6570,
-6571,6572,4824,6573,6574,6575,6576,6577,6578,6579,6580,6581,6582,6583,4825,6584,6585,6586,3950,2785,6587,6588,6589,6590,6591,6592,6593,6594,6595,6596,6597,6598,6599,6600,6601,6602,6603,6604,6605,6606,6607,6608,6609,6610,6611,6612,4826,6613,6614,6615,4827,6616,6617,6618,6619,6620,6621,6622,6623,6624,6625,4164,6626,6627,6628,6629,6630,6631,6632,6633,6634,3547,6635,4828,6636,6637,6638,6639,6640,6641,6642,3951,2984,6643,6644,6645,6646,6647,6648,6649,4165,6650,4829,6651,6652,4830,6653,6654,6655,6656,6657,
-6658,6659,6660,6661,6662,4831,6663,6664,6665,6666,6667,6668,6669,6670,6671,4166,6672,4832,3952,6673,6674,6675,6676,4833,6677,6678,6679,4167,6680,6681,6682,3198,6683,6684,6685,6686,6687,6688,6689,6690,6691,6692,6693,6694,6695,6696,6697,4834,6698,6699,6700,6701,6702,6703,6704,6705,6706,6707,6708,6709,6710,6711,6712,6713,6714,6715,6716,6717,6718,6719,6720,6721,6722,6723,6724,6725,6726,6727,6728,6729,6730,6731,6732,6733,6734,4443,6735,6736,6737,6738,6739,6740,6741,6742,6743,6744,6745,4444,6746,6747,6748,
-6749,6750,6751,6752,6753,6754,6755,6756,6757,6758,6759,6760,6761,6762,6763,6764,6765,6766,6767,6768,6769,6770,6771,6772,6773,6774,6775,6776,6777,6778,6779,6780,6781,4168,6782,6783,3442,6784,6785,6786,6787,6788,6789,6790,6791,4169,6792,6793,6794,6795,6796,6797,6798,6799,6800,6801,6802,6803,6804,6805,6806,6807,6808,6809,6810,6811,4835,6812,6813,6814,4445,6815,6816,4446,6817,6818,6819,6820,6821,6822,6823,6824,6825,6826,6827,6828,6829,6830,6831,6832,6833,6834,6835,3548,6836,6837,6838,6839,6840,6841,6842,
-6843,6844,6845,6846,4836,6847,6848,6849,6850,6851,6852,6853,6854,3953,6855,6856,6857,6858,6859,6860,6861,6862,6863,6864,6865,6866,6867,6868,6869,6870,6871,6872,6873,6874,6875,6876,6877,3199,6878,6879,6880,6881,6882,4447,6883,6884,6885,6886,6887,6888,6889,6890,6891,6892,6893,6894,6895,6896,6897,6898,6899,6900,6901,6902,6903,6904,4170,6905,6906,6907,6908,6909,6910,6911,6912,6913,6914,6915,6916,6917,6918,6919,6920,6921,6922,6923,6924,6925,6926,6927,4837,6928,6929,6930,6931,6932,6933,6934,6935,6936,3346,
-6937,6938,4838,6939,6940,6941,4448,6942,6943,6944,6945,6946,4449,6947,6948,6949,6950,6951,6952,6953,6954,6955,6956,6957,6958,6959,6960,6961,6962,6963,6964,6965,6966,6967,6968,6969,6970,6971,6972,6973,6974,6975,6976,6977,6978,6979,6980,6981,6982,6983,6984,6985,6986,6987,6988,6989,6990,6991,6992,6993,6994,3671,6995,6996,6997,6998,4839,6999,7E3,7001,7002,3549,7003,7004,7005,7006,7007,7008,7009,7010,7011,7012,7013,7014,7015,7016,7017,7018,7019,7020,7021,7022,7023,7024,7025,7026,7027,7028,7029,7030,4840,
-7031,7032,7033,7034,7035,7036,7037,7038,4841,7039,7040,7041,7042,7043,7044,7045,7046,7047,7048,7049,7050,7051,7052,7053,7054,7055,7056,7057,7058,7059,7060,7061,7062,7063,7064,7065,7066,7067,7068,7069,7070,2985,7071,7072,7073,7074,7075,7076,7077,7078,7079,7080,4842,7081,7082,7083,7084,7085,7086,7087,7088,7089,7090,7091,7092,7093,7094,7095,7096,7097,7098,7099,7100,7101,7102,7103,7104,7105,7106,7107,7108,7109,7110,7111,7112,7113,7114,7115,7116,7117,7118,4450,7119,7120,7121,7122,7123,7124,7125,7126,7127,
-7128,7129,7130,7131,7132,7133,7134,7135,7136,7137,7138,7139,7140,7141,7142,7143,4843,7144,7145,7146,7147,7148,7149,7150,7151,7152,7153,7154,7155,7156,7157,7158,7159,7160,7161,7162,7163,7164,7165,7166,7167,7168,7169,7170,7171,7172,7173,7174,7175,7176,7177,7178,7179,7180,7181,7182,7183,7184,7185,7186,7187,7188,4171,4172,7189,7190,7191,7192,7193,7194,7195,7196,7197,7198,7199,7200,7201,7202,7203,7204,7205,7206,7207,7208,7209,7210,7211,7212,7213,7214,7215,7216,7217,7218,7219,7220,7221,7222,7223,7224,7225,
-7226,7227,7228,7229,7230,7231,7232,7233,7234,7235,7236,7237,7238,7239,7240,7241,7242,7243,7244,7245,7246,7247,7248,7249,7250,7251,7252,7253,7254,7255,7256,7257,7258,7259,7260,7261,7262,7263,7264,7265,7266,7267,7268,7269,7270,7271,7272,7273,7274,7275,7276,7277,7278,7279,7280,7281,7282,7283,7284,7285,7286,7287,7288,7289,7290,7291,7292,7293,7294,7295,7296,4844,7297,7298,7299,7300,7301,7302,7303,7304,7305,7306,7307,7308,7309,7310,7311,7312,7313,7314,7315,7316,4451,7317,7318,7319,7320,7321,7322,7323,7324,
-7325,7326,7327,7328,7329,7330,7331,7332,7333,7334,7335,7336,7337,7338,7339,7340,7341,7342,7343,7344,7345,7346,7347,7348,7349,7350,7351,7352,7353,4173,7354,7355,4845,7356,7357,7358,7359,7360,7361,7362,7363,7364,7365,7366,7367,7368,7369,7370,7371,7372,7373,7374,7375,7376,7377,7378,7379,7380,7381,7382,7383,7384,7385,7386,7387,7388,4846,7389,7390,7391,7392,7393,7394,7395,7396,7397,7398,7399,7400,7401,7402,7403,7404,7405,3672,7406,7407,7408,7409,7410,7411,7412,7413,7414,7415,7416,7417,7418,7419,7420,7421,
-7422,7423,7424,7425,7426,7427,7428,7429,7430,7431,7432,7433,7434,7435,7436,7437,7438,7439,7440,7441,7442,7443,7444,7445,7446,7447,7448,7449,7450,7451,7452,7453,4452,7454,3200,7455,7456,7457,7458,7459,7460,7461,7462,7463,7464,7465,7466,7467,7468,7469,7470,7471,7472,7473,7474,4847,7475,7476,7477,3133,7478,7479,7480,7481,7482,7483,7484,7485,7486,7487,7488,7489,7490,7491,7492,7493,7494,7495,7496,7497,7498,7499,7500,7501,7502,3347,7503,7504,7505,7506,7507,7508,7509,7510,7511,7512,7513,7514,7515,7516,7517,
-7518,7519,7520,7521,4848,7522,7523,7524,7525,7526,7527,7528,7529,7530,7531,7532,7533,7534,7535,7536,7537,7538,7539,7540,7541,7542,7543,7544,7545,7546,7547,7548,7549,3801,4849,7550,7551,7552,7553,7554,7555,7556,7557,7558,7559,7560,7561,7562,7563,7564,7565,7566,7567,7568,7569,3035,7570,7571,7572,7573,7574,7575,7576,7577,7578,7579,7580,7581,7582,7583,7584,7585,7586,7587,7588,7589,7590,7591,7592,7593,7594,7595,7596,7597,7598,7599,7600,7601,7602,7603,7604,7605,7606,7607,7608,7609,7610,7611,7612,7613,7614,
-7615,7616,4850,7617,7618,3802,7619,7620,7621,7622,7623,7624,7625,7626,7627,7628,7629,7630,7631,7632,4851,7633,7634,7635,7636,7637,7638,7639,7640,7641,7642,7643,7644,7645,7646,7647,7648,7649,7650,7651,7652,7653,7654,7655,7656,7657,7658,7659,7660,7661,7662,7663,7664,7665,7666,7667,7668,7669,7670,4453,7671,7672,7673,7674,7675,7676,7677,7678,7679,7680,7681,7682,7683,7684,7685,7686,7687,7688,7689,7690,7691,7692,7693,7694,7695,7696,7697,3443,7698,7699,7700,7701,7702,4454,7703,7704,7705,7706,7707,7708,7709,
-7710,7711,7712,7713,2472,7714,7715,7716,7717,7718,7719,7720,7721,7722,7723,7724,7725,7726,7727,7728,7729,7730,7731,3954,7732,7733,7734,7735,7736,7737,7738,7739,7740,7741,7742,7743,7744,7745,7746,7747,7748,7749,7750,3134,7751,7752,4852,7753,7754,7755,4853,7756,7757,7758,7759,7760,4174,7761,7762,7763,7764,7765,7766,7767,7768,7769,7770,7771,7772,7773,7774,7775,7776,7777,7778,7779,7780,7781,7782,7783,7784,7785,7786,7787,7788,7789,7790,7791,7792,7793,7794,7795,7796,7797,7798,7799,7800,7801,7802,7803,7804,
-7805,4854,7806,7807,7808,7809,7810,7811,7812,7813,7814,7815,7816,7817,7818,7819,7820,7821,7822,7823,7824,7825,4855,7826,7827,7828,7829,7830,7831,7832,7833,7834,7835,7836,7837,7838,7839,7840,7841,7842,7843,7844,7845,7846,7847,3955,7848,7849,7850,7851,7852,7853,7854,7855,7856,7857,7858,7859,7860,3444,7861,7862,7863,7864,7865,7866,7867,7868,7869,7870,7871,7872,7873,7874,7875,7876,7877,7878,7879,7880,7881,7882,7883,7884,7885,7886,7887,7888,7889,7890,7891,4175,7892,7893,7894,7895,7896,4856,4857,7897,7898,
-7899,7900,2598,7901,7902,7903,7904,7905,7906,7907,7908,4455,7909,7910,7911,7912,7913,7914,3201,7915,7916,7917,7918,7919,7920,7921,4858,7922,7923,7924,7925,7926,7927,7928,7929,7930,7931,7932,7933,7934,7935,7936,7937,7938,7939,7940,7941,7942,7943,7944,7945,7946,7947,7948,7949,7950,7951,7952,7953,7954,7955,7956,7957,7958,7959,7960,7961,7962,7963,7964,7965,7966,7967,7968,7969,7970,7971,7972,7973,7974,7975,7976,7977,7978,7979,7980,7981,4859,7982,7983,7984,7985,7986,7987,7988,7989,7990,7991,7992,7993,7994,
-7995,7996,4860,7997,7998,7999,8E3,8001,8002,8003,8004,8005,8006,8007,8008,8009,8010,8011,8012,8013,8014,8015,8016,4176,8017,8018,8019,8020,8021,8022,8023,4861,8024,8025,8026,8027,8028,8029,8030,8031,8032,8033,8034,8035,8036,4862,4456,8037,8038,8039,8040,4863,8041,8042,8043,8044,8045,8046,8047,8048,8049,8050,8051,8052,8053,8054,8055,8056,8057,8058,8059,8060,8061,8062,8063,8064,8065,8066,8067,8068,8069,8070,8071,8072,8073,8074,8075,8076,8077,8078,8079,8080,8081,8082,8083,8084,8085,8086,8087,8088,8089,
-8090,8091,8092,8093,8094,8095,8096,8097,8098,8099,4864,4177,8100,8101,8102,8103,8104,8105,8106,8107,8108,8109,8110,8111,8112,8113,8114,8115,8116,8117,8118,8119,8120,4178,8121,8122,8123,8124,8125,8126,8127,8128,8129,8130,8131,8132,8133,8134,8135,8136,8137,8138,8139,8140,8141,8142,8143,8144,8145,4865,4866,8146,8147,8148,8149,8150,8151,8152,8153,8154,8155,8156,8157,8158,8159,8160,8161,8162,8163,8164,8165,4179,8166,8167,8168,8169,8170,8171,8172,8173,8174,8175,8176,8177,8178,8179,8180,8181,4457,8182,8183,
-8184,8185,8186,8187,8188,8189,8190,8191,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8203,8204,8205,8206,8207,8208,8209,8210,8211,8212,8213,8214,8215,8216,8217,8218,8219,8220,8221,8222,8223,8224,8225,8226,8227,8228,8229,8230,8231,8232,8233,8234,8235,8236,8237,8238,8239,8240,8241,8242,8243,8244,8245,8246,8247,8248,8249,8250,8251,8252,8253,8254,8255,8256,3445,8257,8258,8259,8260,8261,8262,4458,8263,8264,8265,8266,8267,8268,8269,8270,8271,8272,4459,8273,8274,8275,8276,3550,8277,8278,8279,8280,
-8281,8282,8283,8284,8285,8286,8287,8288,8289,4460,8290,8291,8292,8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,8304,8305,8306,8307,4867,8308,8309,8310,8311,8312,3551,8313,8314,8315,8316,8317,8318,8319,8320,8321,8322,8323,8324,8325,8326,4868,8327,8328,8329,8330,8331,8332,8333,8334,8335,8336,8337,8338,8339,8340,8341,8342,8343,8344,8345,8346,8347,8348,8349,8350,8351,8352,8353,8354,8355,8356,8357,8358,8359,8360,8361,8362,8363,4869,4461,8364,8365,8366,8367,8368,8369,8370,4870,8371,8372,8373,8374,
-8375,8376,8377,8378,8379,8380,8381,8382,8383,8384,8385,8386,8387,8388,8389,8390,8391,8392,8393,8394,8395,8396,8397,8398,8399,8400,8401,8402,8403,8404,8405,8406,8407,8408,8409,8410,4871,8411,8412,8413,8414,8415,8416,8417,8418,8419,8420,8421,8422,4462,8423,8424,8425,8426,8427,8428,8429,8430,8431,8432,8433,2986,8434,8435,8436,8437,8438,8439,8440,8441,8442,8443,8444,8445,8446,8447,8448,8449,8450,8451,8452,8453,8454,8455,8456,8457,8458,8459,8460,8461,8462,8463,8464,8465,8466,8467,8468,8469,8470,8471,8472,
-8473,8474,8475,8476,8477,8478,4180,8479,8480,8481,8482,8483,8484,8485,8486,8487,8488,8489,8490,8491,8492,8493,8494,8495,8496,8497,8498,8499,8500,8501,8502,8503,8504,8505,8506,8507,8508,8509,8510,8511,8512,8513,8514,8515,8516,8517,8518,8519,8520,8521,8522,8523,8524,8525,8526,8527,8528,8529,8530,8531,8532,8533,8534,8535,8536,8537,8538,8539,8540,8541,8542,8543,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,8554,8555,8556,8557,8558,8559,8560,8561,8562,8563,8564,4872,8565,8566,8567,8568,8569,8570,8571,
-8572,8573,4873,8574,8575,8576,8577,8578,8579,8580,8581,8582,8583,8584,8585,8586,8587,8588,8589,8590,8591,8592,8593,8594,8595,8596,8597,8598,8599,8600,8601,8602,8603,8604,8605,3803,8606,8607,8608,8609,8610,8611,8612,8613,4874,3804,8614,8615,8616,8617,8618,8619,8620,8621,3956,8622,8623,8624,8625,8626,8627,8628,8629,8630,8631,8632,8633,8634,8635,8636,8637,8638,2865,8639,8640,8641,8642,8643,8644,8645,8646,8647,8648,8649,8650,8651,8652,8653,8654,8655,8656,4463,8657,8658,8659,4875,4876,8660,8661,8662,8663,
-8664,8665,8666,8667,8668,8669,8670,8671,8672,8673,8674,8675,8676,8677,8678,8679,8680,8681,4464,8682,8683,8684,8685,8686,8687,8688,8689,8690,8691,8692,8693,8694,8695,8696,8697,8698,8699,8700,8701,8702,8703,8704,8705,8706,8707,8708,8709,2261,8710,8711,8712,8713,8714,8715,8716,8717,8718,8719,8720,8721,8722,8723,8724,8725,8726,8727,8728,8729,8730,8731,8732,8733,4181,8734,8735,8736,8737,8738,8739,8740,8741,8742,8743,8744,8745,8746,8747,8748,8749,8750,8751,8752,8753,8754,8755,8756,8757,8758,8759,8760,8761,
-8762,8763,4877,8764,8765,8766,8767,8768,8769,8770,8771,8772,8773,8774,8775,8776,8777,8778,8779,8780,8781,8782,8783,8784,8785,8786,8787,8788,4878,8789,4879,8790,8791,8792,4880,8793,8794,8795,8796,8797,8798,8799,8800,8801,4881,8802,8803,8804,8805,8806,8807,8808,8809,8810,8811,8812,8813,8814,8815,3957,8816,8817,8818,8819,8820,8821,8822,8823,8824,8825,8826,8827,8828,8829,8830,8831,8832,8833,8834,8835,8836,8837,8838,8839,8840,8841,8842,8843,8844,8845,8846,8847,4882,8848,8849,8850,8851,8852,8853,8854,8855,
-8856,8857,8858,8859,8860,8861,8862,8863,8864,8865,8866,8867,8868,8869,8870,8871,8872,8873,8874,8875,8876,8877,8878,8879,8880,8881,8882,8883,8884,3202,8885,8886,8887,8888,8889,8890,8891,8892,8893,8894,8895,8896,8897,8898,8899,8900,8901,8902,8903,8904,8905,8906,8907,8908,8909,8910,8911,8912,8913,8914,8915,8916,8917,8918,8919,8920,8921,8922,8923,8924,4465,8925,8926,8927,8928,8929,8930,8931,8932,4883,8933,8934,8935,8936,8937,8938,8939,8940,8941,8942,8943,2214,8944,8945,8946,8947,8948,8949,8950,8951,8952,
-8953,8954,8955,8956,8957,8958,8959,8960,8961,8962,8963,8964,8965,4884,8966,8967,8968,8969,8970,8971,8972,8973,8974,8975,8976,8977,8978,8979,8980,8981,8982,8983,8984,8985,8986,8987,8988,8989,8990,8991,8992,4885,8993,8994,8995,8996,8997,8998,8999,9E3,9001,9002,9003,9004,9005,9006,9007,9008,9009,9010,9011,9012,9013,9014,9015,9016,9017,9018,9019,9020,9021,4182,9022,9023,9024,9025,9026,9027,9028,9029,9030,9031,9032,9033,9034,9035,9036,9037,9038,9039,9040,9041,9042,9043,9044,9045,9046,9047,9048,9049,9050,
-9051,9052,9053,9054,9055,9056,9057,9058,9059,9060,9061,9062,9063,4886,9064,9065,9066,9067,9068,9069,4887,9070,9071,9072,9073,9074,9075,9076,9077,9078,9079,9080,9081,9082,9083,9084,9085,9086,9087,9088,9089,9090,9091,9092,9093,9094,9095,9096,9097,9098,9099,9100,9101,9102,9103,9104,9105,9106,9107,9108,9109,9110,9111,9112,9113,9114,9115,9116,9117,9118,9119,9120,9121,9122,9123,9124,9125,9126,9127,9128,9129,9130,9131,9132,9133,9134,9135,9136,9137,9138,9139,9140,9141,3958,9142,9143,9144,9145,9146,9147,9148,
-9149,9150,9151,4888,9152,9153,9154,9155,9156,9157,9158,9159,9160,9161,9162,9163,9164,9165,9166,9167,9168,9169,9170,9171,9172,9173,9174,9175,4889,9176,9177,9178,9179,9180,9181,9182,9183,9184,9185,9186,9187,9188,9189,9190,9191,9192,9193,9194,9195,9196,9197,9198,9199,9200,9201,9202,9203,4890,9204,9205,9206,9207,9208,9209,9210,9211,9212,9213,9214,9215,9216,9217,9218,9219,9220,9221,9222,4466,9223,9224,9225,9226,9227,9228,9229,9230,9231,9232,9233,9234,9235,9236,9237,9238,9239,9240,9241,9242,9243,9244,9245,
-4891,9246,9247,9248,9249,9250,9251,9252,9253,9254,9255,9256,9257,4892,9258,9259,9260,9261,4893,4894,9262,9263,9264,9265,9266,9267,9268,9269,9270,9271,9272,9273,4467,9274,9275,9276,9277,9278,9279,9280,9281,9282,9283,9284,9285,3673,9286,9287,9288,9289,9290,9291,9292,9293,9294,9295,9296,9297,9298,9299,9300,9301,9302,9303,9304,9305,9306,9307,9308,9309,9310,9311,9312,9313,9314,9315,9316,9317,9318,9319,9320,9321,9322,4895,9323,9324,9325,9326,9327,9328,9329,9330,9331,9332,9333,9334,9335,9336,9337,9338,9339,
-9340,9341,9342,9343,9344,9345,9346,9347,4468,9348,9349,9350,9351,9352,9353,9354,9355,9356,9357,9358,9359,9360,9361,9362,9363,9364,9365,9366,9367,9368,9369,9370,9371,9372,9373,4896,9374,4469,9375,9376,9377,9378,9379,4897,9380,9381,9382,9383,9384,9385,9386,9387,9388,9389,9390,9391,9392,9393,9394,9395,9396,9397,9398,9399,9400,9401,9402,9403,9404,9405,9406,4470,9407,2751,9408,9409,3674,3552,9410,9411,9412,9413,9414,9415,9416,9417,9418,9419,9420,9421,4898,9422,9423,9424,9425,9426,9427,9428,9429,3959,9430,
-9431,9432,9433,9434,9435,9436,4471,9437,9438,9439,9440,9441,9442,9443,9444,9445,9446,9447,9448,9449,9450,3348,9451,9452,9453,9454,9455,9456,9457,9458,9459,9460,9461,9462,9463,9464,9465,9466,9467,9468,9469,9470,9471,9472,4899,9473,9474,9475,9476,9477,4900,9478,9479,9480,9481,9482,9483,9484,9485,9486,9487,9488,3349,9489,9490,9491,9492,9493,9494,9495,9496,9497,9498,9499,9500,9501,9502,9503,9504,9505,9506,9507,9508,9509,9510,9511,9512,9513,9514,9515,9516,9517,9518,9519,9520,4901,9521,9522,9523,9524,9525,
-9526,4902,9527,9528,9529,9530,9531,9532,9533,9534,9535,9536,9537,9538,9539,9540,9541,9542,9543,9544,9545,9546,9547,9548,9549,9550,9551,9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9581,9582,9583,9584,3805,9585,9586,9587,9588,9589,9590,9591,9592,9593,9594,9595,9596,9597,9598,9599,9600,9601,9602,4903,9603,9604,9605,9606,9607,4904,9608,9609,9610,9611,9612,9613,9614,4905,9615,9616,9617,9618,9619,9620,9621,
-9622,9623,9624,9625,9626,9627,9628,9629,9630,9631,9632,4906,9633,9634,9635,9636,9637,9638,9639,9640,9641,9642,9643,4907,9644,9645,9646,9647,9648,9649,9650,9651,9652,9653,9654,9655,9656,9657,9658,9659,9660,9661,9662,9663,9664,9665,9666,9667,9668,9669,9670,9671,9672,4183,9673,9674,9675,9676,9677,4908,9678,9679,9680,9681,4909,9682,9683,9684,9685,9686,9687,9688,9689,9690,4910,9691,9692,9693,3675,9694,9695,9696,2945,9697,9698,9699,9700,9701,9702,9703,9704,9705,4911,9706,9707,9708,9709,9710,9711,9712,9713,
-9714,9715,9716,9717,9718,9719,9720,9721,9722,9723,9724,9725,9726,9727,9728,9729,9730,9731,9732,9733,9734,9735,4912,9736,9737,9738,9739,9740,4913,9741,9742,9743,9744,9745,9746,9747,9748,9749,9750,9751,9752,9753,9754,9755,9756,9757,9758,4914,9759,9760,9761,9762,9763,9764,9765,9766,9767,9768,9769,9770,9771,9772,9773,9774,9775,9776,9777,9778,9779,9780,9781,9782,4915,9783,9784,9785,9786,9787,9788,9789,9790,9791,9792,9793,4916,9794,9795,9796,9797,9798,9799,9800,9801,9802,9803,9804,9805,9806,9807,9808,9809,
-9810,9811,9812,9813,9814,9815,9816,9817,9818,9819,9820,9821,9822,9823,9824,9825,9826,9827,9828,9829,9830,9831,9832,9833,9834,9835,9836,9837,9838,9839,9840,9841,9842,9843,9844,9845,9846,9847,9848,9849,9850,9851,9852,9853,9854,9855,9856,9857,9858,9859,9860,9861,9862,9863,9864,9865,9866,9867,9868,4917,9869,9870,9871,9872,9873,9874,9875,9876,9877,9878,9879,9880,9881,9882,9883,9884,9885,9886,9887,9888,9889,9890,9891,9892,4472,9893,9894,9895,9896,9897,3806,9898,9899,9900,9901,9902,9903,9904,9905,9906,9907,
-9908,9909,9910,9911,9912,9913,9914,4918,9915,9916,9917,4919,9918,9919,9920,9921,4184,9922,9923,9924,9925,9926,9927,9928,9929,9930,9931,9932,9933,9934,9935,9936,9937,9938,9939,9940,9941,9942,9943,9944,9945,9946,4920,9947,9948,9949,9950,9951,9952,9953,9954,9955,4185,9956,9957,9958,9959,9960,9961,9962,9963,9964,9965,4921,9966,9967,9968,4473,9969,9970,9971,9972,9973,9974,9975,9976,9977,4474,9978,9979,9980,9981,9982,9983,9984,9985,9986,9987,9988,9989,9990,9991,9992,9993,9994,9995,9996,9997,9998,9999,1E4,
-10001,10002,10003,10004,10005,10006,10007,10008,10009,10010,10011,10012,10013,10014,10015,10016,10017,10018,10019,10020,10021,4922,10022,4923,10023,10024,10025,10026,10027,10028,10029,10030,10031,10032,10033,10034,10035,10036,10037,10038,10039,10040,10041,10042,10043,10044,10045,10046,10047,10048,4924,10049,10050,10051,10052,10053,10054,10055,10056,10057,10058,10059,10060,10061,10062,10063,10064,10065,10066,10067,10068,10069,10070,10071,10072,10073,10074,10075,10076,10077,10078,10079,10080,10081,
-10082,10083,10084,10085,10086,10087,4475,10088,10089,10090,10091,10092,10093,10094,10095,10096,10097,4476,10098,10099,10100,10101,10102,10103,10104,10105,10106,10107,10108,10109,10110,10111,2174,10112,10113,10114,10115,10116,10117,10118,10119,10120,10121,10122,10123,10124,10125,10126,10127,10128,10129,10130,10131,10132,10133,10134,10135,10136,10137,10138,10139,10140,3807,4186,4925,10141,10142,10143,10144,10145,10146,10147,4477,4187,10148,10149,10150,10151,10152,10153,4188,10154,10155,10156,10157,
-10158,10159,10160,10161,4926,10162,10163,10164,10165,10166,10167,10168,10169,10170,10171,10172,10173,10174,10175,10176,10177,10178,10179,10180,10181,10182,10183,10184,10185,10186,10187,10188,10189,10190,10191,10192,3203,10193,10194,10195,10196,10197,10198,10199,10200,4478,10201,10202,10203,10204,4479,10205,10206,10207,10208,10209,10210,10211,10212,10213,10214,10215,10216,10217,10218,10219,10220,10221,10222,10223,10224,10225,10226,10227,10228,10229,10230,10231,10232,10233,10234,4927,10235,10236,10237,
-10238,10239,10240,10241,10242,10243,10244,10245,10246,10247,10248,10249,10250,10251,10252,10253,10254,10255,10256,10257,10258,10259,10260,10261,10262,10263,10264,10265,10266,10267,10268,10269,10270,10271,10272,10273,4480,4928,4929,10274,10275,10276,10277,10278,10279,10280,10281,10282,10283,10284,10285,10286,10287,10288,10289,10290,10291,10292,10293,10294,10295,10296,10297,10298,10299,10300,10301,10302,10303,10304,10305,10306,10307,10308,10309,10310,10311,10312,10313,10314,10315,10316,10317,10318,
-10319,10320,10321,10322,10323,10324,10325,10326,10327,10328,10329,10330,10331,10332,10333,10334,4930,10335,10336,10337,10338,10339,10340,10341,10342,4931,10343,10344,10345,10346,10347,10348,10349,10350,10351,10352,10353,10354,10355,3088,10356,2786,10357,10358,10359,10360,4189,10361,10362,10363,10364,10365,10366,10367,10368,10369,10370,10371,10372,10373,10374,10375,4932,10376,10377,10378,10379,10380,10381,10382,10383,10384,10385,10386,10387,10388,10389,10390,10391,10392,4933,10393,10394,10395,4934,
-10396,10397,10398,10399,10400,10401,10402,10403,10404,10405,10406,10407,10408,10409,10410,10411,10412,3446,10413,10414,10415,10416,10417,10418,10419,10420,10421,10422,10423,4935,10424,10425,10426,10427,10428,10429,10430,4936,10431,10432,10433,10434,10435,10436,10437,10438,10439,10440,10441,10442,10443,4937,10444,10445,10446,10447,4481,10448,10449,10450,10451,10452,10453,10454,10455,10456,10457,10458,10459,10460,10461,10462,10463,10464,10465,10466,10467,10468,10469,10470,10471,10472,10473,10474,10475,
-10476,10477,10478,10479,10480,10481,10482,10483,10484,10485,10486,10487,10488,10489,10490,10491,10492,10493,10494,10495,10496,10497,10498,10499,10500,10501,10502,10503,10504,10505,4938,10506,10507,10508,10509,10510,2552,10511,10512,10513,10514,10515,10516,3447,10517,10518,10519,10520,10521,10522,10523,10524,10525,10526,10527,10528,10529,10530,10531,10532,10533,10534,10535,10536,10537,10538,10539,10540,10541,10542,10543,4482,10544,4939,10545,10546,10547,10548,10549,10550,10551,10552,10553,10554,10555,
-10556,10557,10558,10559,10560,10561,10562,10563,10564,10565,10566,10567,3676,4483,10568,10569,10570,10571,10572,3448,10573,10574,10575,10576,10577,10578,10579,10580,10581,10582,10583,10584,10585,10586,10587,10588,10589,10590,10591,10592,10593,10594,10595,10596,10597,10598,10599,10600,10601,10602,10603,10604,10605,10606,10607,10608,10609,10610,10611,10612,10613,10614,10615,10616,10617,10618,10619,10620,10621,10622,10623,10624,10625,10626,10627,4484,10628,10629,10630,10631,10632,4940,10633,10634,10635,
-10636,10637,10638,10639,10640,10641,10642,10643,10644,10645,10646,10647,10648,10649,10650,10651,10652,10653,10654,10655,10656,4941,10657,10658,10659,2599,10660,10661,10662,10663,10664,10665,10666,3089,10667,10668,10669,10670,10671,10672,10673,10674,10675,10676,10677,10678,10679,10680,4942,10681,10682,10683,10684,10685,10686,10687,10688,10689,10690,10691,10692,10693,10694,10695,10696,10697,4485,10698,10699,10700,10701,10702,10703,10704,4943,10705,3677,10706,10707,10708,10709,10710,10711,10712,4944,
-10713,10714,10715,10716,10717,10718,10719,10720,10721,10722,10723,10724,10725,10726,10727,10728,4945,10729,10730,10731,10732,10733,10734,10735,10736,10737,10738,10739,10740,10741,10742,10743,10744,10745,10746,10747,10748,10749,10750,10751,10752,10753,10754,10755,10756,10757,10758,10759,10760,10761,4946,10762,10763,10764,10765,10766,10767,4947,4948,10768,10769,10770,10771,10772,10773,10774,10775,10776,10777,10778,10779,10780,10781,10782,10783,10784,10785,10786,10787,10788,10789,10790,10791,10792,10793,
-10794,10795,10796,10797,10798,10799,10800,10801,10802,10803,10804,10805,10806,10807,10808,10809,10810,10811,10812,10813,10814,10815,10816,10817,10818,10819,10820,10821,10822,10823,10824,10825,10826,10827,10828,10829,10830,10831,10832,10833,10834,10835,10836,10837,10838,10839,10840,10841,10842,10843,10844,10845,10846,10847,10848,10849,10850,10851,10852,10853,10854,10855,10856,10857,10858,10859,10860,10861,10862,10863,10864,10865,10866,10867,10868,10869,10870,10871,10872,10873,10874,10875,10876,10877,
-10878,4486,10879,10880,10881,10882,10883,10884,10885,4949,10886,10887,10888,10889,10890,10891,10892,10893,10894,10895,10896,10897,10898,10899,10900,10901,10902,10903,10904,10905,10906,10907,10908,10909,10910,10911,10912,10913,10914,10915,10916,10917,10918,10919,4487,10920,10921,10922,10923,10924,10925,10926,10927,10928,10929,10930,10931,10932,4950,10933,10934,10935,10936,10937,10938,10939,10940,10941,10942,10943,10944,10945,10946,10947,10948,10949,4488,10950,10951,10952,10953,10954,10955,10956,10957,
-10958,10959,4190,10960,10961,10962,10963,10964,10965,10966,10967,10968,10969,10970,10971,10972,10973,10974,10975,10976,10977,10978,10979,10980,10981,10982,10983,10984,10985,10986,10987,10988,10989,10990,10991,10992,10993,10994,10995,10996,10997,10998,10999,11E3,11001,11002,11003,11004,11005,11006,3960,11007,11008,11009,11010,11011,11012,11013,11014,11015,11016,11017,11018,11019,11020,11021,11022,11023,11024,11025,11026,11027,11028,11029,11030,11031,11032,4951,11033,11034,11035,11036,11037,11038,11039,
-11040,11041,11042,11043,11044,11045,11046,11047,4489,11048,11049,11050,11051,4952,11052,11053,11054,11055,11056,11057,11058,4953,11059,11060,11061,11062,11063,11064,11065,11066,11067,11068,11069,11070,11071,4954,11072,11073,11074,11075,11076,11077,11078,11079,11080,11081,11082,11083,11084,11085,11086,11087,11088,11089,11090,11091,11092,11093,11094,11095,11096,11097,11098,11099,11100,11101,11102,11103,11104,11105,11106,11107,11108,11109,11110,11111,11112,11113,11114,11115,3808,11116,11117,11118,11119,
-11120,11121,11122,11123,11124,11125,11126,11127,11128,11129,11130,11131,11132,11133,11134,4955,11135,11136,11137,11138,11139,11140,11141,11142,11143,11144,11145,11146,11147,11148,11149,11150,11151,11152,11153,11154,11155,11156,11157,11158,11159,11160,11161,4956,11162,11163,11164,11165,11166,11167,11168,11169,11170,11171,11172,11173,11174,11175,11176,11177,11178,11179,11180,4957,11181,11182,11183,11184,11185,11186,4958,11187,11188,11189,11190,11191,11192,11193,11194,11195,11196,11197,11198,11199,11200,
-3678,11201,11202,11203,11204,11205,11206,4191,11207,11208,11209,11210,11211,11212,11213,11214,11215,11216,11217,11218,11219,11220,11221,11222,11223,11224,11225,11226,11227,11228,11229,11230,11231,11232,11233,11234,11235,11236,11237,11238,11239,11240,11241,11242,11243,11244,11245,11246,11247,11248,11249,11250,11251,4959,11252,11253,11254,11255,11256,11257,11258,11259,11260,11261,11262,11263,11264,11265,11266,11267,11268,11269,11270,11271,11272,11273,11274,11275,11276,11277,11278,11279,11280,11281,
-11282,11283,11284,11285,11286,11287,11288,11289,11290,11291,11292,11293,11294,11295,11296,11297,11298,11299,11300,11301,11302,11303,11304,11305,11306,11307,11308,11309,11310,11311,11312,11313,11314,3679,11315,11316,11317,11318,4490,11319,11320,11321,11322,11323,11324,11325,11326,11327,11328,11329,11330,11331,11332,11333,11334,11335,11336,11337,11338,11339,11340,11341,11342,11343,11344,11345,11346,11347,4960,11348,11349,11350,11351,11352,11353,11354,11355,11356,11357,11358,11359,11360,11361,11362,
-11363,11364,11365,11366,11367,11368,11369,11370,11371,11372,11373,11374,11375,11376,11377,3961,4961,11378,11379,11380,11381,11382,11383,11384,11385,11386,11387,11388,11389,11390,11391,11392,11393,11394,11395,11396,11397,4192,11398,11399,11400,11401,11402,11403,11404,11405,11406,11407,11408,11409,11410,11411,4962,11412,11413,11414,11415,11416,11417,11418,11419,11420,11421,11422,11423,11424,11425,11426,11427,11428,11429,11430,11431,11432,11433,11434,11435,11436,11437,11438,11439,11440,11441,11442,11443,
-11444,11445,11446,11447,11448,11449,11450,11451,11452,11453,11454,11455,11456,11457,11458,11459,11460,11461,11462,11463,11464,11465,11466,11467,11468,11469,4963,11470,11471,4491,11472,11473,11474,11475,4964,11476,11477,11478,11479,11480,11481,11482,11483,11484,11485,11486,11487,11488,11489,11490,11491,11492,4965,11493,11494,11495,11496,11497,11498,11499,11500,11501,11502,11503,11504,11505,11506,11507,11508,11509,11510,11511,11512,11513,11514,11515,11516,11517,11518,11519,11520,11521,11522,11523,11524,
-11525,11526,11527,11528,11529,3962,11530,11531,11532,11533,11534,11535,11536,11537,11538,11539,11540,11541,11542,11543,11544,11545,11546,11547,11548,11549,11550,11551,11552,11553,11554,11555,11556,11557,11558,11559,11560,11561,11562,11563,11564,4193,4194,11565,11566,11567,11568,11569,11570,11571,11572,11573,11574,11575,11576,11577,11578,11579,11580,11581,11582,11583,11584,11585,11586,11587,11588,11589,11590,11591,4966,4195,11592,11593,11594,11595,11596,11597,11598,11599,11600,11601,11602,11603,11604,
-3090,11605,11606,11607,11608,11609,11610,4967,11611,11612,11613,11614,11615,11616,11617,11618,11619,11620,11621,11622,11623,11624,11625,11626,11627,11628,11629,11630,11631,11632,11633,11634,11635,11636,11637,11638,11639,11640,11641,11642,11643,11644,11645,11646,11647,11648,11649,11650,11651,11652,11653,11654,11655,11656,11657,11658,11659,11660,11661,11662,11663,11664,11665,11666,11667,11668,11669,11670,11671,11672,11673,11674,4968,11675,11676,11677,11678,11679,11680,11681,11682,11683,11684,11685,
-11686,11687,11688,11689,11690,11691,11692,11693,3809,11694,11695,11696,11697,11698,11699,11700,11701,11702,11703,11704,11705,11706,11707,11708,11709,11710,11711,11712,11713,11714,11715,11716,11717,11718,3553,11719,11720,11721,11722,11723,11724,11725,11726,11727,11728,11729,11730,4969,11731,11732,11733,11734,11735,11736,11737,11738,11739,11740,4492,11741,11742,11743,11744,11745,11746,11747,11748,11749,11750,11751,11752,4970,11753,11754,11755,11756,11757,11758,11759,11760,11761,11762,11763,11764,11765,
-11766,11767,11768,11769,11770,11771,11772,11773,11774,11775,11776,11777,11778,11779,11780,11781,11782,11783,11784,11785,11786,11787,11788,11789,11790,4971,11791,11792,11793,11794,11795,11796,11797,4972,11798,11799,11800,11801,11802,11803,11804,11805,11806,11807,11808,11809,11810,4973,11811,11812,11813,11814,11815,11816,11817,11818,11819,11820,11821,11822,11823,11824,11825,11826,11827,11828,11829,11830,11831,11832,11833,11834,3680,3810,11835,11836,4974,11837,11838,11839,11840,11841,11842,11843,11844,
-11845,11846,11847,11848,11849,11850,11851,11852,11853,11854,11855,11856,11857,11858,11859,11860,11861,11862,11863,11864,11865,11866,11867,11868,11869,11870,11871,11872,11873,11874,11875,11876,11877,11878,11879,11880,11881,11882,11883,11884,4493,11885,11886,11887,11888,11889,11890,11891,11892,11893,11894,11895,11896,11897,11898,11899,11900,11901,11902,11903,11904,11905,11906,11907,11908,11909,11910,11911,11912,11913,11914,11915,4975,11916,11917,11918,11919,11920,11921,11922,11923,11924,11925,11926,
-11927,11928,11929,11930,11931,11932,11933,11934,11935,11936,11937,11938,11939,11940,11941,11942,11943,11944,11945,11946,11947,11948,11949,4976,11950,11951,11952,11953,11954,11955,11956,11957,11958,11959,11960,11961,11962,11963,11964,11965,11966,11967,11968,11969,11970,11971,11972,11973,11974,11975,11976,11977,11978,11979,11980,11981,11982,11983,11984,11985,11986,11987,4196,11988,11989,11990,11991,11992,4977,11993,11994,11995,11996,11997,11998,11999,12E3,12001,12002,12003,12004,12005,12006,12007,12008,
-12009,12010,12011,12012,12013,12014,12015,12016,12017,12018,12019,12020,12021,12022,12023,12024,12025,12026,12027,12028,12029,12030,12031,12032,12033,12034,12035,12036,12037,12038,12039,12040,12041,12042,12043,12044,12045,12046,12047,12048,12049,12050,12051,12052,12053,12054,12055,12056,12057,12058,12059,12060,12061,4978,12062,12063,12064,12065,12066,12067,12068,12069,12070,12071,12072,12073,12074,12075,12076,12077,12078,12079,12080,12081,12082,12083,12084,12085,12086,12087,12088,12089,12090,12091,
-12092,12093,12094,12095,12096,12097,12098,12099,12100,12101,12102,12103,12104,12105,12106,12107,12108,12109,12110,12111,12112,12113,12114,12115,12116,12117,12118,12119,12120,12121,12122,12123,4979,12124,12125,12126,12127,12128,4197,12129,12130,12131,12132,12133,12134,12135,12136,12137,12138,12139,12140,12141,12142,12143,12144,12145,12146,12147,12148,12149,12150,12151,12152,12153,12154,4980,12155,12156,12157,12158,12159,12160,4494,12161,12162,12163,12164,3811,12165,12166,12167,12168,12169,4495,12170,
-12171,4496,12172,12173,12174,12175,12176,3812,12177,12178,12179,12180,12181,12182,12183,12184,12185,12186,12187,12188,12189,12190,12191,12192,12193,12194,12195,12196,12197,12198,12199,12200,12201,12202,12203,12204,12205,12206,12207,12208,12209,12210,12211,12212,12213,12214,12215,12216,12217,12218,12219,12220,12221,4981,12222,12223,12224,12225,12226,12227,12228,12229,12230,12231,12232,12233,12234,12235,4982,12236,12237,12238,12239,12240,12241,12242,12243,12244,12245,4983,12246,12247,12248,12249,4984,
-12250,12251,12252,12253,12254,12255,12256,12257,12258,12259,12260,12261,12262,12263,12264,4985,12265,4497,12266,12267,12268,12269,12270,12271,12272,12273,12274,12275,12276,12277,12278,12279,12280,12281,12282,12283,12284,12285,12286,12287,4986,12288,12289,12290,12291,12292,12293,12294,12295,12296,2473,12297,12298,12299,12300,12301,12302,12303,12304,12305,12306,12307,12308,12309,12310,12311,12312,12313,12314,12315,12316,12317,12318,12319,3963,12320,12321,12322,12323,12324,12325,12326,12327,12328,12329,
-12330,12331,12332,4987,12333,12334,12335,12336,12337,12338,12339,12340,12341,12342,12343,12344,12345,12346,12347,12348,12349,12350,12351,12352,12353,12354,12355,12356,12357,12358,12359,3964,12360,12361,12362,12363,12364,12365,12366,12367,12368,12369,12370,3965,12371,12372,12373,12374,12375,12376,12377,12378,12379,12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,12390,12391,12392,12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403,12404,12405,12406,12407,12408,4988,12409,12410,
-12411,12412,12413,12414,12415,12416,12417,12418,12419,12420,12421,12422,12423,12424,12425,12426,12427,12428,12429,12430,12431,12432,12433,12434,12435,12436,12437,12438,3554,12439,12440,12441,12442,12443,12444,12445,12446,12447,12448,12449,12450,12451,12452,12453,12454,12455,12456,12457,12458,12459,12460,12461,12462,12463,12464,4989,12465,12466,12467,12468,12469,12470,12471,12472,12473,12474,12475,12476,12477,12478,12479,12480,4990,12481,12482,12483,12484,12485,12486,12487,12488,12489,4498,12490,12491,
-12492,12493,12494,12495,12496,12497,12498,12499,12500,12501,12502,12503,12504,12505,12506,12507,12508,12509,12510,12511,12512,12513,12514,12515,12516,12517,12518,12519,12520,12521,12522,12523,12524,12525,12526,12527,12528,12529,12530,12531,12532,12533,12534,12535,12536,12537,12538,12539,12540,12541,12542,12543,12544,12545,12546,12547,12548,12549,12550,12551,4991,12552,12553,12554,12555,12556,12557,12558,12559,12560,12561,12562,12563,12564,12565,12566,12567,12568,12569,12570,12571,12572,12573,12574,
-12575,12576,12577,12578,3036,12579,12580,12581,12582,12583,3966,12584,12585,12586,12587,12588,12589,12590,12591,12592,12593,12594,12595,12596,12597,12598,12599,12600,12601,12602,12603,12604,12605,12606,12607,12608,12609,12610,12611,12612,12613,12614,12615,12616,12617,12618,12619,12620,12621,12622,12623,12624,12625,12626,12627,12628,12629,12630,12631,12632,12633,12634,12635,12636,12637,12638,12639,12640,12641,12642,12643,12644,12645,12646,4499,12647,12648,12649,12650,12651,12652,12653,12654,12655,
-12656,12657,12658,12659,12660,12661,12662,12663,12664,12665,12666,12667,12668,12669,12670,12671,12672,12673,12674,12675,12676,12677,12678,12679,12680,12681,12682,12683,12684,12685,12686,12687,12688,12689,12690,12691,12692,12693,12694,12695,12696,12697,12698,4992,12699,12700,12701,12702,12703,12704,12705,12706,12707,12708,12709,12710,12711,12712,12713,12714,12715,12716,12717,12718,12719,12720,12721,12722,12723,12724,12725,12726,12727,12728,12729,12730,12731,12732,12733,12734,12735,12736,12737,12738,
-12739,12740,12741,12742,12743,12744,12745,12746,12747,12748,12749,12750,12751,12752,12753,12754,12755,12756,12757,12758,12759,12760,12761,12762,12763,12764,12765,12766,12767,12768,12769,12770,12771,12772,12773,12774,12775,12776,12777,12778,4993,2175,12779,12780,12781,12782,12783,12784,12785,12786,4500,12787,12788,12789,12790,12791,12792,12793,12794,12795,12796,12797,12798,12799,12800,12801,12802,12803,12804,12805,12806,12807,12808,12809,12810,12811,12812,12813,12814,12815,12816,12817,12818,12819,
-12820,12821,12822,12823,12824,12825,12826,4198,3967,12827,12828,12829,12830,12831,12832,12833,12834,12835,12836,12837,12838,12839,12840,12841,12842,12843,12844,12845,12846,12847,12848,12849,12850,12851,12852,12853,12854,12855,12856,12857,12858,12859,12860,12861,4199,12862,12863,12864,12865,12866,12867,12868,12869,12870,12871,12872,12873,12874,12875,12876,12877,12878,12879,12880,12881,12882,12883,12884,12885,12886,12887,4501,12888,12889,12890,12891,12892,12893,12894,12895,12896,12897,12898,12899,12900,
-12901,12902,12903,12904,12905,12906,12907,12908,12909,12910,12911,12912,4994,12913,12914,12915,12916,12917,12918,12919,12920,12921,12922,12923,12924,12925,12926,12927,12928,12929,12930,12931,12932,12933,12934,12935,12936,12937,12938,12939,12940,12941,12942,12943,12944,12945,12946,12947,12948,12949,12950,12951,12952,12953,12954,12955,12956,1772,12957,12958,12959,12960,12961,12962,12963,12964,12965,12966,12967,12968,12969,12970,12971,12972,12973,12974,12975,12976,12977,12978,12979,12980,12981,12982,
-12983,12984,12985,12986,12987,12988,12989,12990,12991,12992,12993,12994,12995,12996,12997,4502,12998,4503,12999,13E3,13001,13002,13003,4504,13004,13005,13006,13007,13008,13009,13010,13011,13012,13013,13014,13015,13016,13017,13018,13019,13020,13021,13022,13023,13024,13025,13026,13027,13028,13029,3449,13030,13031,13032,13033,13034,13035,13036,13037,13038,13039,13040,13041,13042,13043,13044,13045,13046,13047,13048,13049,13050,13051,13052,13053,13054,13055,13056,13057,13058,13059,13060,13061,13062,13063,
-13064,13065,13066,13067,13068,13069,13070,13071,13072,13073,13074,13075,13076,13077,13078,13079,13080,13081,13082,13083,13084,13085,13086,13087,13088,13089,13090,13091,13092,13093,13094,13095,13096,13097,13098,13099,13100,13101,13102,13103,13104,13105,13106,13107,13108,13109,13110,13111,13112,13113,13114,13115,13116,13117,13118,3968,13119,4995,13120,13121,13122,13123,13124,13125,13126,13127,4505,13128,13129,13130,13131,13132,13133,13134,4996,4506,13135,13136,13137,13138,13139,4997,13140,13141,13142,
-13143,13144,13145,13146,13147,13148,13149,13150,13151,13152,13153,13154,13155,13156,13157,13158,13159,4998,13160,13161,13162,13163,13164,13165,13166,13167,13168,13169,13170,13171,13172,13173,13174,13175,13176,4999,13177,13178,13179,13180,13181,13182,13183,13184,13185,13186,13187,13188,13189,13190,13191,13192,13193,13194,13195,13196,13197,13198,13199,13200,13201,13202,13203,13204,13205,13206,5E3,13207,13208,13209,13210,13211,13212,13213,13214,13215,13216,13217,13218,13219,13220,13221,13222,13223,13224,
-13225,13226,13227,4200,5001,13228,13229,13230,13231,13232,13233,13234,13235,13236,13237,13238,13239,13240,3969,13241,13242,13243,13244,3970,13245,13246,13247,13248,13249,13250,13251,13252,13253,13254,13255,13256,13257,13258,13259,13260,13261,13262,13263,13264,13265,13266,13267,13268,3450,13269,13270,13271,13272,13273,13274,13275,13276,5002,13277,13278,13279,13280,13281,13282,13283,13284,13285,13286,13287,13288,13289,13290,13291,13292,13293,13294,13295,13296,13297,13298,13299,13300,13301,13302,3813,
-13303,13304,13305,13306,13307,13308,13309,13310,13311,13312,13313,13314,13315,13316,13317,13318,13319,13320,13321,13322,13323,13324,13325,13326,13327,13328,4507,13329,13330,13331,13332,13333,13334,13335,13336,13337,13338,13339,13340,13341,5003,13342,13343,13344,13345,13346,13347,13348,13349,13350,13351,13352,13353,13354,13355,13356,13357,13358,13359,13360,13361,13362,13363,13364,13365,13366,13367,5004,13368,13369,13370,13371,13372,13373,13374,13375,13376,13377,13378,13379,13380,13381,13382,13383,
-13384,13385,13386,13387,13388,13389,13390,13391,13392,13393,13394,13395,13396,13397,13398,13399,13400,13401,13402,13403,13404,13405,13406,13407,13408,13409,13410,13411,13412,13413,13414,13415,13416,13417,13418,13419,13420,13421,13422,13423,13424,13425,13426,13427,13428,13429,13430,13431,13432,4508,13433,13434,13435,4201,13436,13437,13438,13439,13440,13441,13442,13443,13444,13445,13446,13447,13448,13449,13450,13451,13452,13453,13454,13455,13456,13457,5005,13458,13459,13460,13461,13462,13463,13464,
-13465,13466,13467,13468,13469,13470,4509,13471,13472,13473,13474,13475,13476,13477,13478,13479,13480,13481,13482,13483,13484,13485,13486,13487,13488,13489,13490,13491,13492,13493,13494,13495,13496,13497,13498,13499,13500,13501,13502,13503,13504,13505,13506,13507,13508,13509,13510,13511,13512,13513,13514,13515,13516,13517,13518,13519,13520,13521,13522,13523,13524,13525,13526,13527,13528,13529,13530,13531,13532,13533,13534,13535,13536,13537,13538,13539,13540,13541,13542,13543,13544,13545,13546,13547,
-13548,13549,13550,13551,13552,13553,13554,13555,13556,13557,13558,13559,13560,13561,13562,13563,13564,13565,13566,13567,13568,13569,13570,13571,13572,13573,13574,13575,13576,13577,13578,13579,13580,13581,13582,13583,13584,13585,13586,13587,13588,13589,13590,13591,13592,13593,13594,13595,13596,13597,13598,13599,13600,13601,13602,13603,13604,13605,13606,13607,13608,13609,13610,13611,13612,13613,13614,13615,13616,13617,13618,13619,13620,13621,13622,13623,13624,13625,13626,13627,13628,13629,13630,13631,
-13632,13633,13634,13635,13636,13637,13638,13639,13640,13641,13642,5006,13643,13644,13645,13646,13647,13648,13649,13650,13651,5007,13652,13653,13654,13655,13656,13657,13658,13659,13660,13661,13662,13663,13664,13665,13666,13667,13668,13669,13670,13671,13672,13673,13674,13675,13676,13677,13678,13679,13680,13681,13682,13683,13684,13685,13686,13687,13688,13689,13690,13691,13692,13693,13694,13695,13696,13697,13698,13699,13700,13701,13702,13703,13704,13705,13706,13707,13708,13709,13710,13711,13712,13713,
-13714,13715,13716,13717,13718,13719,13720,13721,13722,13723,13724,13725,13726,13727,13728,13729,13730,13731,13732,13733,13734,13735,13736,13737,13738,13739,13740,13741,13742,13743,13744,13745,13746,13747,13748,13749,13750,13751,13752,13753,13754,13755,13756,13757,13758,13759,13760,13761,13762,13763,13764,13765,13766,13767,13768,13769,13770,13771,13772,13773,13774,3273,13775,13776,13777,13778,13779,13780,13781,13782,13783,13784,13785,13786,13787,13788,13789,13790,13791,13792,13793,13794,13795,13796,
-13797,13798,13799,13800,13801,13802,13803,13804,13805,13806,13807,13808,13809,13810,13811,13812,13813,13814,13815,13816,13817,13818,13819,13820,13821,13822,13823,13824,13825,13826,13827,13828,13829,13830,13831,13832,13833,13834,13835,13836,13837,13838,13839,13840,13841,13842,13843,13844,13845,13846,13847,13848,13849,13850,13851,13852,13853,13854,13855,13856,13857,13858,13859,13860,13861,13862,13863,13864,13865,13866,13867,13868,13869,13870,13871,13872,13873,13874,13875,13876,13877,13878,13879,13880,
-13881,13882,13883,13884,13885,13886,13887,13888,13889,13890,13891,13892,13893,13894,13895,13896,13897,13898,13899,13900,13901,13902,13903,13904,13905,13906,13907,13908,13909,13910,13911,13912,13913,13914,13915,13916,13917,13918,13919,13920,13921,13922,13923,13924,13925,13926,13927,13928,13929,13930,13931,13932,13933,13934,13935,13936,13937,13938,13939,13940,13941,13942,13943,13944,13945,13946,13947,13948,13949,13950,13951,13952,13953,13954,13955,13956,13957,13958,13959,13960,13961,13962,13963,13964,
-13965,13966,13967,13968,13969,13970,13971,13972];!0},{"./init":20}],3:[function(b,a,d){!function(a){a.Big5Prober=function(){a.MultiByteCharSetProber.apply(this);this.getCharsetName=function(){return"Big5"};this._mCodingSM=new a.CodingStateMachine(a.Big5SMModel);this._mDistributionAnalyzer=new a.Big5DistributionAnalysis;this.reset()};a.Big5Prober.prototype=new a.MultiByteCharSetProber}(b("./init"))},{"./init":20}],4:[function(b,a,d){!function(a){a.CharDistributionAnalysis=function(){this.reset=function(){this._mDone=
-!1;this._mFreqChars=this._mTotalChars=0};this.feed=function(a,b){var h=2==b?this.getOrder(a):-1;0<=h&&(this._mTotalChars++,h<this._mTableSize&&512>this._mCharToFreqOrder[h]&&this._mFreqChars++)};this.getConfidence=function(){if(0>=this._mTotalChars)return.01;if(this._mTotalChars!=this._mFreqChars){var a=this._mFreqChars/((this._mTotalChars-this._mFreqChars)*this._mTypicalDistributionRatio);if(.99>a)return a}return.99};this.gotEnoughData=function(){return 1024<this._mTotalChars};this.getOrder=function(a){return-1};
-this._mTypicalDistributionRatio=this._mTableSize=this._mCharToFreqOrder=null;this.reset()};a.EUCTWDistributionAnalysis=function(){a.CharDistributionAnalysis.apply(this);this.getOrder=function(a){return 196<=a.charCodeAt(0)?94*(a.charCodeAt(0)-196)+a.charCodeAt(1)-161:-1};this._mCharToFreqOrder=a.EUCTWCharToFreqOrder;this._mTableSize=a.EUCTW_TABLE_SIZE;this._mTypicalDistributionRatio=a.EUCTW_TYPICAL_DISTRIBUTION_RATIO};a.EUCTWDistributionAnalysis.prototype=new a.CharDistributionAnalysis;a.EUCKRDistributionAnalysis=
-function(){a.CharDistributionAnalysis.apply(this);this.getOrder=function(a){return 176<=a.charCodeAt(0)?94*(a.charCodeAt(0)-176)+a.charCodeAt(1)-161:-1};this._mCharToFreqOrder=a.EUCKRCharToFreqOrder;this._mTableSize=a.EUCKR_TABLE_SIZE;this._mTypicalDistributionRatio=a.EUCKR_TYPICAL_DISTRIBUTION_RATIO};a.EUCKRDistributionAnalysis.prototype=new a.CharDistributionAnalysis;a.GB2312DistributionAnalysis=function(){a.CharDistributionAnalysis.apply(this);this.getOrder=function(a){return 176<=a.charCodeAt(0)&&
-161<=a.charCodeAt(1)?94*(a.charCodeAt(0)-176)+a.charCodeAt(1)-161:-1};this._mCharToFreqOrder=a.GB2312CharToFreqOrder;this._mTableSize=a.GB2312_TABLE_SIZE;this._mTypicalDistributionRatio=a.GB2312_TYPICAL_DISTRIBUTION_RATIO};a.GB2312DistributionAnalysis.prototype=new a.CharDistributionAnalysis;a.Big5DistributionAnalysis=function(){a.CharDistributionAnalysis.apply(this);this.getOrder=function(a){return 164<=a.charCodeAt(0)?161<=a.charCodeAt(1)?157*(a.charCodeAt(0)-164)+a.charCodeAt(1)-161+63:157*(a.charCodeAt(0)-
-164)+a.charCodeAt(1)-64:-1};this._mCharToFreqOrder=a.Big5CharToFreqOrder;this._mTableSize=a.BIG5_TABLE_SIZE;this._mTypicalDistributionRatio=a.BIG5_TYPICAL_DISTRIBUTION_RATIO};a.Big5DistributionAnalysis.prototype=new a.CharDistributionAnalysis;a.SJISDistributionAnalysis=function(){a.CharDistributionAnalysis.apply(this);this.getOrder=function(a){if(129<=a.charCodeAt(0)&&159>=a.charCodeAt(0))var b=188*(a.charCodeAt(0)-129);else if(224<=a.charCodeAt(0)&&239>=a.charCodeAt(0))b=188*(a.charCodeAt(0)-224+
-31);else return-1;b+=a.charCodeAt(1)-64;127<a.charCodeAt(1)&&(b=-1);return b};this._mCharToFreqOrder=a.JISCharToFreqOrder;this._mTableSize=a.JIS_TABLE_SIZE;this._mTypicalDistributionRatio=a.JIS_TYPICAL_DISTRIBUTION_RATIO};a.SJISDistributionAnalysis.prototype=new a.CharDistributionAnalysis;a.EUCJPDistributionAnalysis=function(){a.CharDistributionAnalysis.apply(this);this.getOrder=function(a){return"\u00a0"<=a[0]?94*(a.charCodeAt(0)-161)+a.charCodeAt(1)-161:-1};this._mCharToFreqOrder=a.JISCharToFreqOrder;
-this._mTableSize=a.JIS_TABLE_SIZE;this._mTypicalDistributionRatio=a.JIS_TYPICAL_DISTRIBUTION_RATIO};a.EUCJPDistributionAnalysis.prototype=new a.CharDistributionAnalysis}(b("./init"))},{"./init":20}],5:[function(b,a,d){!function(a){a.CharSetGroupProber=function(){a.CharSetProber.apply(this);this.reset=function(){a.CharSetGroupProber.prototype.reset.apply(this);for(var b=this._mActiveNum=0,f;f=this._mProbers[b];b++)f&&(f.reset(),f.active=!0,this._mActiveNum++);this._mBestGuessProber=null};this.getCharsetName=
-function(){return this._mBestGuessProber||(this.getConfidence(),this._mBestGuessProber)?this._mBestGuessProber.getCharsetName():null};this.feed=function(b){for(var f=0,c;c=this._mProbers[f];f++)if(c&&c.active){var e=c.feed(b);if(e)if(e==a.Constants.foundIt){this._mBestGuessProber=c;break}else if(e==a.Constants.notMe&&(c.active=!1,this._mActiveNum--,0>=this._mActiveNum)){this._mState=a.Constants.notMe;break}}return this.getState()};this.getConfidence=function(){var b=this.getState();if(b==a.Constants.foundIt)return.99;
-if(b==a.Constants.notMe)return.01;b=0;this._mBestGuessProber=null;for(var f=0,c;c=this._mProbers[f];f++)if(c)if(c.active){var e=c.getConfidence();a.Constants._debug&&a.log(c.getCharsetName()+" confidence = "+e+"\n");b<e&&(b=e,this._mBestGuessProber=c)}else a.Constants._debug&&a.log(c.getCharsetName()+" not active\n");return this._mBestGuessProber?b:0};this._mActiveNum=0;this._mProbers=[];this._mBestGuessProber=null};a.CharSetGroupProber.prototype=new a.CharSetProber}(b("./init"))},{"./init":20}],
-6:[function(b,a,d){!function(a){a.CharSetProber=function(){this.reset=function(){this._mState=a.Constants.detecting};this.getCharsetName=function(){return null};this.feed=function(a){};this.getState=function(){return this._mState};this.getConfidence=function(){return 0};this.filterHighBitOnly=function(a){return a=a.replace(/[\x00-\x7F]+/g," ")};this.filterWithoutEnglishLetters=function(a){return a=a.replace(/[A-Za-z]+/g," ")};this.filterWithEnglishLetters=function(a){return a}}}(b("./init"))},{"./init":20}],
-7:[function(b,a,d){!function(a){a.CodingStateMachine=function(b){this.reset=function(){this._mCurrentState=a.Constants.start};this.nextState=function(b){b=this._mModel.classTable[b.charCodeAt(0)];this._mCurrentState==a.Constants.start&&(this._mCurrentBytePos=0,this._mCurrentCharLen=this._mModel.charLenTable[b]);this._mCurrentState=this._mModel.stateTable[this._mCurrentState*this._mModel.classFactor+b];this._mCurrentBytePos++;return this._mCurrentState};this.getCurrentCharLen=function(){return this._mCurrentCharLen};
-this.getCodingStateMachine=function(){return this._mModel.name};this._mModel=b;this._mCurrentCharLen=this._mCurrentBytePos=0;this.reset()}}(b("./init"))},{"./init":20}],8:[function(b,a,d){b("./init").Constants={_debug:!1,detecting:0,foundIt:1,notMe:2,start:0,error:1,itsMe:2,MINIMUM_THRESHOLD:.2,SHORTCUT_THRESHOLD:.95};!0},{"./init":20}],9:[function(b,a,d){!function(a){a.EscCharSetProber=function(){a.CharSetProber.apply(this);var b=this;this.reset=function(){a.EscCharSetProber.prototype.reset.apply(this);
-for(var f=0,c;c=this._mCodingSM[f];f++)c&&(c.active=!0,c.reset());this._mActiveSM=b._mCodingSM.length;this._mDetectedCharset=null};this.getCharsetName=function(){return this._mDetectedCharset};this.getConfidence=function(){return this._mDetectedCharset?.99:0};this.feed=function(b){for(var c=0,k;c<b.length;c++){k=b[c];for(var d=0,g;g=this._mCodingSM[d];d++)if(g&&g.active){var m=g.nextState(k);if(m==a.Constants.error){if(g.active=!1,this._mActiveSM--,0>=this._mActiveSM)return this._mState=a.Constants.notMe,
-this.getState()}else if(m==a.Constants.itsMe)return this._mState=a.Constants.foundIt,this._mDetectedCharset=g.getCodingStateMachine(),this.getState()}}return this.getState()};b._mCodingSM=[new a.CodingStateMachine(a.HZSMModel),new a.CodingStateMachine(a.ISO2022CNSMModel),new a.CodingStateMachine(a.ISO2022JPSMModel),new a.CodingStateMachine(a.ISO2022KRSMModel)];b.reset()};a.EscCharSetProber.prototype=new a.CharSetProber}(b("./init"))},{"./init":20}],10:[function(b,a,d){b=b("./init");a=b.Constants;
-b.HZ_cls=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,5,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,1,1];b.HZ_st=[a.start,a.error,3,a.start,a.start,a.start,a.error,a.error,a.error,a.error,a.error,a.error,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.error,a.error,a.start,a.start,4,a.error,5,a.error,6,a.error,5,5,4,a.error,4,a.error,4,4,4,a.error,4,a.error,4,a.itsMe,a.start,a.start,a.start,a.start,a.start,a.start];b.HZCharLenTable=[0,0,0,0,0,0];b.HZSMModel={classTable:b.HZ_cls,classFactor:6,stateTable:b.HZ_st,charLenTable:b.HZCharLenTable,name:"HZ-GB-2312"};b.ISO2022CN_cls=[2,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
-2,2,2,2];b.ISO2022CN_st=[a.start,3,a.error,a.start,a.start,a.start,a.start,a.start,a.start,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.error,a.error,a.error,4,a.error,a.error,a.error,a.error,a.itsMe,a.error,a.error,a.error,a.error,5,6,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.itsMe,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.itsMe,a.error,
-a.start];b.ISO2022CNCharLenTable=[0,0,0,0,0,0,0,0,0];b.ISO2022CNSMModel={classTable:b.ISO2022CN_cls,classFactor:9,stateTable:b.ISO2022CN_st,charLenTable:b.ISO2022CNCharLenTable,name:"ISO-2022-CN"};b.ISO2022JP_cls=[2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,7,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,4,0,8,0,0,0,0,9,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2];b.ISO2022JP_st=[a.start,3,a.error,a.start,a.start,a.start,a.start,a.start,a.start,a.start,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.error,a.error,a.error,5,
-a.error,a.error,a.error,4,a.error,a.error,a.error,a.error,a.error,6,a.itsMe,a.error,a.itsMe,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.itsMe,a.itsMe,a.error,a.error,a.error,a.itsMe,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.itsMe,a.error,a.start,a.start];b.ISO2022JPCharLenTable=[0,0,0,0,0,0,0,0,0,0];b.ISO2022JPSMModel={classTable:b.ISO2022JP_cls,classFactor:10,stateTable:b.ISO2022JP_st,charLenTable:b.ISO2022JPCharLenTable,name:"ISO-2022-JP"};b.ISO2022KR_cls=[2,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,3,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
-2,2,2,2];b.ISO2022KR_st=[a.start,3,a.error,a.start,a.start,a.start,a.error,a.error,a.error,a.error,a.error,a.error,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.error,a.error,a.error,4,a.error,a.error,a.error,a.error,a.error,a.error,5,a.error,a.error,a.error,a.error,a.error,a.error,a.itsMe,a.start,a.start,a.start,a.start];b.ISO2022KRCharLenTable=[0,0,0,0,0,0];b.ISO2022KRSMModel={classTable:b.ISO2022KR_cls,classFactor:6,stateTable:b.ISO2022KR_st,charLenTable:b.ISO2022KRCharLenTable,name:"ISO-2022-KR"};
-!0},{"./init":20}],11:[function(b,a,d){!function(a){a.EUCJPProber=function(){a.MultiByteCharSetProber.apply(this);this.reset=function(){a.EUCJPProber.prototype.reset.apply(this);this._mContextAnalyzer.reset()};this.getCharsetName=function(){return"EUC-JP"};this.feed=function(b){for(var f=b.length,c=0;c<f;c++){var e=this._mCodingSM.nextState(b[c]);if(e==a.Constants.error){a.Constants._debug&&a.log(this.getCharsetName()+" prober hit error at byte "+c+"\n");this._mState=a.Constants.notMe;break}else if(e==
-a.Constants.itsMe){this._mState=a.Constants.foundIt;break}else e==a.Constants.start&&(e=this._mCodingSM.getCurrentCharLen(),0==c?(this._mLastChar[1]=b[0],this._mContextAnalyzer.feed(this._mLastChar,e),this._mDistributionAnalyzer.feed(this._mLastChar,e)):(this._mContextAnalyzer.feed(b.slice(c-1,c+1),e),this._mDistributionAnalyzer.feed(b.slice(c-1,c+1),e)))}this._mLastChar[0]=b[f-1];this.getState()==a.Constants.detecting&&this._mContextAnalyzer.gotEnoughData()&&this.getConfidence()>a.Constants.SHORTCUT_THRESHOLD&&
-(this._mState=a.Constants.foundIt);return this.getState()};this.getConfidence=function(){var a=this._mContextAnalyzer.getConfidence(),b=this._mDistributionAnalyzer.getConfidence();return Math.max(a,b)};this._mCodingSM=new a.CodingStateMachine(a.EUCJPSMModel);this._mDistributionAnalyzer=new a.EUCJPDistributionAnalysis;this._mContextAnalyzer=new a.EUCJPContextAnalysis;this.reset()};a.EUCJPProber.prototype=new a.MultiByteCharSetProber}(b("./init"))},{"./init":20}],12:[function(b,a,d){b=b("./init");b.EUCKR_TYPICAL_DISTRIBUTION_RATIO=
-6;b.EUCKR_TABLE_SIZE=2352;b.EUCKRCharToFreqOrder=[13,130,120,1396,481,1719,1720,328,609,212,1721,707,400,299,1722,87,1397,1723,104,536,1117,1203,1724,1267,685,1268,508,1725,1726,1727,1728,1398,1399,1729,1730,1731,141,621,326,1057,368,1732,267,488,20,1733,1269,1734,945,1400,1735,47,904,1270,1736,1737,773,248,1738,409,313,786,429,1739,116,987,813,1401,683,75,1204,145,1740,1741,1742,1743,16,847,667,622,708,1744,1745,1746,966,787,304,129,1747,60,820,123,676,1748,1749,1750,1751,617,1752,626,1753,1754,
-1755,1756,653,1757,1758,1759,1760,1761,1762,856,344,1763,1764,1765,1766,89,401,418,806,905,848,1767,1768,1769,946,1205,709,1770,1118,1771,241,1772,1773,1774,1271,1775,569,1776,999,1777,1778,1779,1780,337,751,1058,28,628,254,1781,177,906,270,349,891,1079,1782,19,1783,379,1784,315,1785,629,754,1402,559,1786,636,203,1206,1787,710,567,1788,935,814,1789,1790,1207,766,528,1791,1792,1208,1793,1794,1795,1796,1797,1403,1798,1799,533,1059,1404,1405,1156,1406,936,884,1080,1800,351,1801,1802,1803,1804,1805,801,
-1806,1807,1808,1119,1809,1157,714,474,1407,1810,298,899,885,1811,1120,802,1158,1812,892,1813,1814,1408,659,1815,1816,1121,1817,1818,1819,1820,1821,1822,319,1823,594,545,1824,815,937,1209,1825,1826,573,1409,1022,1827,1210,1828,1829,1830,1831,1832,1833,556,722,807,1122,1060,1834,697,1835,900,557,715,1836,1410,540,1411,752,1159,294,597,1211,976,803,770,1412,1837,1838,39,794,1413,358,1839,371,925,1840,453,661,788,531,723,544,1023,1081,869,91,1841,392,430,790,602,1414,677,1082,457,1415,1416,1842,1843,
-475,327,1024,1417,795,121,1844,733,403,1418,1845,1846,1847,300,119,711,1212,627,1848,1272,207,1849,1850,796,1213,382,1851,519,1852,1083,893,1853,1854,1855,367,809,487,671,1856,663,1857,1858,956,471,306,857,1859,1860,1160,1084,1861,1862,1863,1864,1865,1061,1866,1867,1868,1869,1870,1871,282,96,574,1872,502,1085,1873,1214,1874,907,1875,1876,827,977,1419,1420,1421,268,1877,1422,1878,1879,1880,308,1881,2,537,1882,1883,1215,1884,1885,127,791,1886,1273,1423,1887,34,336,404,643,1888,571,654,894,840,1889,
-0,886,1274,122,575,260,908,938,1890,1275,410,316,1891,1892,100,1893,1894,1123,48,1161,1124,1025,1895,633,901,1276,1896,1897,115,816,1898,317,1899,694,1900,909,734,1424,572,866,1425,691,85,524,1010,543,394,841,1901,1902,1903,1026,1904,1905,1906,1907,1908,1909,30,451,651,988,310,1910,1911,1426,810,1216,93,1912,1913,1277,1217,1914,858,759,45,58,181,610,269,1915,1916,131,1062,551,443,1E3,821,1427,957,895,1086,1917,1918,375,1919,359,1920,687,1921,822,1922,293,1923,1924,40,662,118,692,29,939,887,640,482,
-174,1925,69,1162,728,1428,910,1926,1278,1218,1279,386,870,217,854,1163,823,1927,1928,1929,1930,834,1931,78,1932,859,1933,1063,1934,1935,1936,1937,438,1164,208,595,1938,1939,1940,1941,1219,1125,1942,280,888,1429,1430,1220,1431,1943,1944,1945,1946,1947,1280,150,510,1432,1948,1949,1950,1951,1952,1953,1954,1011,1087,1955,1433,1043,1956,881,1957,614,958,1064,1065,1221,1958,638,1001,860,967,896,1434,989,492,553,1281,1165,1959,1282,1002,1283,1222,1960,1961,1962,1963,36,383,228,753,247,454,1964,876,678,1965,
-1966,1284,126,464,490,835,136,672,529,940,1088,1435,473,1967,1968,467,50,390,227,587,279,378,598,792,968,240,151,160,849,882,1126,1285,639,1044,133,140,288,360,811,563,1027,561,142,523,1969,1970,1971,7,103,296,439,407,506,634,990,1972,1973,1974,1975,645,1976,1977,1978,1979,1980,1981,236,1982,1436,1983,1984,1089,192,828,618,518,1166,333,1127,1985,818,1223,1986,1987,1988,1989,1990,1991,1992,1993,342,1128,1286,746,842,1994,1995,560,223,1287,98,8,189,650,978,1288,1996,1437,1997,17,345,250,423,277,234,
-512,226,97,289,42,167,1998,201,1999,2E3,843,836,824,532,338,783,1090,182,576,436,1438,1439,527,500,2001,947,889,2002,2003,2004,2005,262,600,314,447,2006,547,2007,693,738,1129,2008,71,1440,745,619,688,2009,829,2010,2011,147,2012,33,948,2013,2014,74,224,2015,61,191,918,399,637,2016,1028,1130,257,902,2017,2018,2019,2020,2021,2022,2023,2024,2025,2026,837,2027,2028,2029,2030,179,874,591,52,724,246,2031,2032,2033,2034,1167,969,2035,1289,630,605,911,1091,1168,2036,2037,2038,1441,912,2039,623,2040,2041,253,
-1169,1290,2042,1442,146,620,611,577,433,2043,1224,719,1170,959,440,437,534,84,388,480,1131,159,220,198,679,2044,1012,819,1066,1443,113,1225,194,318,1003,1029,2045,2046,2047,2048,1067,2049,2050,2051,2052,2053,59,913,112,2054,632,2055,455,144,739,1291,2056,273,681,499,2057,448,2058,2059,760,2060,2061,970,384,169,245,1132,2062,2063,414,1444,2064,2065,41,235,2066,157,252,877,568,919,789,580,2067,725,2068,2069,1292,2070,2071,1445,2072,1446,2073,2074,55,588,66,1447,271,1092,2075,1226,2076,960,1013,372,
-2077,2078,2079,2080,2081,1293,2082,2083,2084,2085,850,2086,2087,2088,2089,2090,186,2091,1068,180,2092,2093,2094,109,1227,522,606,2095,867,1448,1093,991,1171,926,353,1133,2096,581,2097,2098,2099,1294,1449,1450,2100,596,1172,1014,1228,2101,1451,1295,1173,1229,2102,2103,1296,1134,1452,949,1135,2104,2105,1094,1453,1454,1455,2106,1095,2107,2108,2109,2110,2111,2112,2113,2114,2115,2116,2117,804,2118,2119,1230,1231,805,1456,405,1136,2120,2121,2122,2123,2124,720,701,1297,992,1457,927,1004,2125,2126,2127,2128,
-2129,2130,22,417,2131,303,2132,385,2133,971,520,513,2134,1174,73,1096,231,274,962,1458,673,2135,1459,2136,152,1137,2137,2138,2139,2140,1005,1138,1460,1139,2141,2142,2143,2144,11,374,844,2145,154,1232,46,1461,2146,838,830,721,1233,106,2147,90,428,462,578,566,1175,352,2148,2149,538,1234,124,1298,2150,1462,761,565,2151,686,2152,649,2153,72,173,2154,460,415,2155,1463,2156,1235,305,2157,2158,2159,2160,2161,2162,579,2163,2164,2165,2166,2167,747,2168,2169,2170,2171,1464,669,2172,2173,2174,2175,2176,1465,
-2177,23,530,285,2178,335,729,2179,397,2180,2181,2182,1030,2183,2184,698,2185,2186,325,2187,2188,369,2189,799,1097,1015,348,2190,1069,680,2191,851,1466,2192,2193,10,2194,613,424,2195,979,108,449,589,27,172,81,1031,80,774,281,350,1032,525,301,582,1176,2196,674,1045,2197,2198,1467,730,762,2199,2200,2201,2202,1468,2203,993,2204,2205,266,1070,963,1140,2206,2207,2208,664,1098,972,2209,2210,2211,1177,1469,1470,871,2212,2213,2214,2215,2216,1471,2217,2218,2219,2220,2221,2222,2223,2224,2225,2226,2227,1472,
-1236,2228,2229,2230,2231,2232,2233,2234,2235,1299,2236,2237,200,2238,477,373,2239,2240,731,825,777,2241,2242,2243,521,486,548,2244,2245,2246,1473,1300,53,549,137,875,76,158,2247,1301,1474,469,396,1016,278,712,2248,321,442,503,767,744,941,1237,1178,1475,2249,82,178,1141,1179,973,2250,1302,2251,297,2252,2253,570,2254,2255,2256,18,450,206,2257,290,292,1142,2258,511,162,99,346,164,735,2259,1476,1477,4,554,343,798,1099,2260,1100,2261,43,171,1303,139,215,2262,2263,717,775,2264,1033,322,216,2265,831,2266,
-149,2267,1304,2268,2269,702,1238,135,845,347,309,2270,484,2271,878,655,238,1006,1478,2272,67,2273,295,2274,2275,461,2276,478,942,412,2277,1034,2278,2279,2280,265,2281,541,2282,2283,2284,2285,2286,70,852,1071,2287,2288,2289,2290,21,56,509,117,432,2291,2292,331,980,552,1101,148,284,105,393,1180,1239,755,2293,187,2294,1046,1479,2295,340,2296,63,1047,230,2297,2298,1305,763,1306,101,800,808,494,2299,2300,2301,903,2302,37,1072,14,5,2303,79,675,2304,312,2305,2306,2307,2308,2309,1480,6,1307,2310,2311,2312,
-1,470,35,24,229,2313,695,210,86,778,15,784,592,779,32,77,855,964,2314,259,2315,501,380,2316,2317,83,981,153,689,1308,1481,1482,1483,2318,2319,716,1484,2320,2321,2322,2323,2324,2325,1485,2326,2327,128,57,68,261,1048,211,170,1240,31,2328,51,435,742,2329,2330,2331,635,2332,264,456,2333,2334,2335,425,2336,1486,143,507,263,943,2337,363,920,1487,256,1488,1102,243,601,1489,2338,2339,2340,2341,2342,2343,2344,861,2345,2346,2347,2348,2349,2350,395,2351,1490,1491,62,535,166,225,2352,2353,668,419,1241,138,604,
-928,2354,1181,2355,1492,1493,2356,2357,2358,1143,2359,696,2360,387,307,1309,682,476,2361,2362,332,12,222,156,2363,232,2364,641,276,656,517,1494,1495,1035,416,736,1496,2365,1017,586,2366,2367,2368,1497,2369,242,2370,2371,2372,1498,2373,965,713,2374,2375,2376,2377,740,982,1499,944,1500,1007,2378,2379,1310,1501,2380,2381,2382,785,329,2383,2384,1502,2385,2386,2387,932,2388,1503,2389,2390,2391,2392,1242,2393,2394,2395,2396,2397,994,950,2398,2399,2400,2401,1504,1311,2402,2403,2404,2405,1049,749,2406,2407,
-853,718,1144,1312,2408,1182,1505,2409,2410,255,516,479,564,550,214,1506,1507,1313,413,239,444,339,1145,1036,1508,1509,1314,1037,1510,1315,2411,1511,2412,2413,2414,176,703,497,624,593,921,302,2415,341,165,1103,1512,2416,1513,2417,2418,2419,376,2420,700,2421,2422,2423,258,768,1316,2424,1183,2425,995,608,2426,2427,2428,2429,221,2430,2431,2432,2433,2434,2435,2436,2437,195,323,726,188,897,983,1317,377,644,1050,879,2438,452,2439,2440,2441,2442,2443,2444,914,2445,2446,2447,2448,915,489,2449,1514,1184,2450,
-2451,515,64,427,495,2452,583,2453,483,485,1038,562,213,1515,748,666,2454,2455,2456,2457,334,2458,780,996,1008,705,1243,2459,2460,2461,2462,2463,114,2464,493,1146,366,163,1516,961,1104,2465,291,2466,1318,1105,2467,1517,365,2468,355,951,1244,2469,1319,2470,631,2471,2472,218,1320,364,320,756,1518,1519,1321,1520,1322,2473,2474,2475,2476,997,2477,2478,2479,2480,665,1185,2481,916,1521,2482,2483,2484,584,684,2485,2486,797,2487,1051,1186,2488,2489,2490,1522,2491,2492,370,2493,1039,1187,65,2494,434,205,463,
-1188,2495,125,812,391,402,826,699,286,398,155,781,771,585,2496,590,505,1073,2497,599,244,219,917,1018,952,646,1523,2498,1323,2499,2500,49,984,354,741,2501,625,2502,1324,2503,1019,190,357,757,491,95,782,868,2504,2505,2506,2507,2508,2509,134,1524,1074,422,1525,898,2510,161,2511,2512,2513,2514,769,2515,1526,2516,2517,411,1325,2518,472,1527,2519,2520,2521,2522,2523,2524,985,2525,2526,2527,2528,2529,2530,764,2531,1245,2532,2533,25,204,311,2534,496,2535,1052,2536,2537,2538,2539,2540,2541,2542,199,704,504,
-468,758,657,1528,196,44,839,1246,272,750,2543,765,862,2544,2545,1326,2546,132,615,933,2547,732,2548,2549,2550,1189,1529,2551,283,1247,1053,607,929,2552,2553,2554,930,183,872,616,1040,1147,2555,1148,1020,441,249,1075,2556,2557,2558,466,743,2559,2560,2561,92,514,426,420,526,2562,2563,2564,2565,2566,2567,2568,185,2569,2570,2571,2572,776,1530,658,2573,362,2574,361,922,1076,793,2575,2576,2577,2578,2579,2580,1531,251,2581,2582,2583,2584,1532,54,612,237,1327,2585,2586,275,408,647,111,2587,1533,1106,465,
-3,458,9,38,2588,107,110,890,209,26,737,498,2589,1534,2590,431,202,88,1535,356,287,1107,660,1149,2591,381,1536,986,1150,445,1248,1151,974,2592,2593,846,2594,446,953,184,1249,1250,727,2595,923,193,883,2596,2597,2598,102,324,539,817,2599,421,1041,2600,832,2601,94,175,197,406,2602,459,2603,2604,2605,2606,2607,330,555,2608,2609,2610,706,1108,389,2611,2612,2613,2614,233,2615,833,558,931,954,1251,2616,2617,1537,546,2618,2619,1009,2620,2621,2622,1538,690,1328,2623,955,2624,1539,2625,2626,772,2627,2628,2629,
-2630,2631,924,648,863,603,2632,2633,934,1540,864,865,2634,642,1042,670,1190,2635,2636,2637,2638,168,2639,652,873,542,1054,1541,2640,2641,2642,2643,2644,2645,2646,2647,2648,2649,2650,2651,2652,2653,2654,2655,2656,2657,2658,2659,2660,2661,2662,2663,2664,2665,2666,2667,2668,2669,2670,2671,2672,2673,2674,2675,2676,2677,2678,2679,2680,2681,2682,2683,2684,2685,2686,2687,2688,2689,2690,2691,2692,2693,2694,2695,2696,2697,2698,2699,1542,880,2700,2701,2702,2703,2704,2705,2706,2707,2708,2709,2710,2711,2712,
-2713,2714,2715,2716,2717,2718,2719,2720,2721,2722,2723,2724,2725,1543,2726,2727,2728,2729,2730,2731,2732,1544,2733,2734,2735,2736,2737,2738,2739,2740,2741,2742,2743,2744,2745,2746,2747,2748,2749,2750,2751,2752,2753,2754,1545,2755,2756,2757,2758,2759,2760,2761,2762,2763,2764,2765,2766,1546,2767,1547,2768,2769,2770,2771,2772,2773,2774,2775,2776,2777,2778,2779,2780,2781,2782,2783,2784,2785,2786,1548,2787,2788,2789,1109,2790,2791,2792,2793,2794,2795,2796,2797,2798,2799,2800,2801,2802,2803,2804,2805,2806,
-2807,2808,2809,2810,2811,2812,1329,2813,2814,2815,2816,2817,2818,2819,2820,2821,2822,2823,2824,2825,2826,2827,2828,2829,2830,2831,2832,2833,2834,2835,2836,2837,2838,2839,2840,2841,2842,2843,2844,2845,2846,2847,2848,2849,2850,2851,2852,2853,2854,2855,2856,1549,2857,2858,2859,2860,1550,2861,2862,1551,2863,2864,2865,2866,2867,2868,2869,2870,2871,2872,2873,2874,1110,1330,2875,2876,2877,2878,2879,2880,2881,2882,2883,2884,2885,2886,2887,2888,2889,2890,2891,2892,2893,2894,2895,2896,2897,2898,2899,2900,2901,
-2902,2903,2904,2905,2906,2907,2908,2909,2910,2911,2912,2913,2914,2915,2916,2917,2918,2919,2920,2921,2922,2923,2924,2925,2926,2927,2928,2929,2930,1331,2931,2932,2933,2934,2935,2936,2937,2938,2939,2940,2941,2942,2943,1552,2944,2945,2946,2947,2948,2949,2950,2951,2952,2953,2954,2955,2956,2957,2958,2959,2960,2961,2962,2963,2964,1252,2965,2966,2967,2968,2969,2970,2971,2972,2973,2974,2975,2976,2977,2978,2979,2980,2981,2982,2983,2984,2985,2986,2987,2988,2989,2990,2991,2992,2993,2994,2995,2996,2997,2998,2999,
-3E3,3001,3002,3003,3004,3005,3006,3007,3008,3009,3010,3011,3012,1553,3013,3014,3015,3016,3017,1554,3018,1332,3019,3020,3021,3022,3023,3024,3025,3026,3027,3028,3029,3030,3031,3032,3033,3034,3035,3036,3037,3038,3039,3040,3041,3042,3043,3044,3045,3046,3047,3048,3049,3050,1555,3051,3052,3053,1556,1557,3054,3055,3056,3057,3058,3059,3060,3061,3062,3063,3064,3065,3066,3067,1558,3068,3069,3070,3071,3072,3073,3074,3075,3076,1559,3077,3078,3079,3080,3081,3082,3083,1253,3084,3085,3086,3087,3088,3089,3090,3091,
-3092,3093,3094,3095,3096,3097,3098,3099,3100,3101,3102,3103,3104,3105,3106,3107,3108,1152,3109,3110,3111,3112,3113,1560,3114,3115,3116,3117,1111,3118,3119,3120,3121,3122,3123,3124,3125,3126,3127,3128,3129,3130,3131,3132,3133,3134,3135,3136,3137,3138,3139,3140,3141,3142,3143,3144,3145,3146,3147,3148,3149,3150,3151,3152,3153,3154,3155,3156,3157,3158,3159,3160,3161,3162,3163,3164,3165,3166,3167,3168,3169,3170,3171,3172,3173,3174,3175,3176,1333,3177,3178,3179,3180,3181,3182,3183,3184,3185,3186,3187,3188,
-3189,1561,3190,3191,1334,3192,3193,3194,3195,3196,3197,3198,3199,3200,3201,3202,3203,3204,3205,3206,3207,3208,3209,3210,3211,3212,3213,3214,3215,3216,3217,3218,3219,3220,3221,3222,3223,3224,3225,3226,3227,3228,3229,3230,3231,3232,3233,3234,1562,3235,3236,3237,3238,3239,3240,3241,3242,3243,3244,3245,3246,3247,3248,3249,3250,3251,3252,3253,3254,3255,3256,3257,3258,3259,3260,3261,3262,3263,3264,3265,3266,3267,3268,3269,3270,3271,3272,3273,3274,3275,3276,3277,1563,3278,3279,3280,3281,3282,3283,3284,3285,
-3286,3287,3288,3289,3290,3291,3292,3293,3294,3295,3296,3297,3298,3299,3300,3301,3302,3303,3304,3305,3306,3307,3308,3309,3310,3311,3312,3313,3314,3315,3316,3317,3318,3319,3320,3321,3322,3323,3324,3325,3326,3327,3328,3329,3330,3331,3332,3333,3334,3335,3336,3337,3338,3339,3340,3341,3342,3343,3344,3345,3346,3347,3348,3349,3350,3351,3352,3353,3354,3355,3356,3357,3358,3359,3360,3361,3362,3363,3364,1335,3365,3366,3367,3368,3369,3370,3371,3372,3373,3374,3375,3376,3377,3378,3379,3380,3381,3382,3383,3384,3385,
-3386,3387,1336,3388,3389,3390,3391,3392,3393,3394,3395,3396,3397,3398,3399,3400,3401,3402,3403,3404,3405,3406,3407,3408,3409,3410,3411,3412,3413,3414,1337,3415,3416,3417,3418,3419,1338,3420,3421,3422,1564,1565,3423,3424,3425,3426,3427,3428,3429,3430,3431,1254,3432,3433,3434,1339,3435,3436,3437,3438,3439,1566,3440,3441,3442,3443,3444,3445,3446,3447,3448,3449,3450,3451,3452,3453,3454,1255,3455,3456,3457,3458,3459,1567,1191,3460,1568,1569,3461,3462,3463,1570,3464,3465,3466,3467,3468,1571,3469,3470,3471,
-3472,3473,1572,3474,3475,3476,3477,3478,3479,3480,3481,3482,3483,3484,3485,3486,1340,3487,3488,3489,3490,3491,3492,1021,3493,3494,3495,3496,3497,3498,1573,3499,1341,3500,3501,3502,3503,3504,3505,3506,3507,3508,3509,3510,3511,1342,3512,3513,3514,3515,3516,1574,1343,3517,3518,3519,1575,3520,1576,3521,3522,3523,3524,3525,3526,3527,3528,3529,3530,3531,3532,3533,3534,3535,3536,3537,3538,3539,3540,3541,3542,3543,3544,3545,3546,3547,3548,3549,3550,3551,3552,3553,3554,3555,3556,3557,3558,3559,3560,3561,3562,
-3563,3564,3565,3566,3567,3568,3569,3570,3571,3572,3573,3574,3575,3576,3577,3578,3579,3580,1577,3581,3582,1578,3583,3584,3585,3586,3587,3588,3589,3590,3591,3592,3593,3594,3595,3596,3597,3598,3599,3600,3601,3602,3603,3604,1579,3605,3606,3607,3608,3609,3610,3611,3612,3613,3614,3615,3616,3617,3618,3619,3620,3621,3622,3623,3624,3625,3626,3627,3628,3629,1580,3630,3631,1581,3632,3633,3634,3635,3636,3637,3638,3639,3640,3641,3642,3643,3644,3645,3646,3647,3648,3649,3650,3651,3652,3653,3654,3655,3656,1582,3657,
-3658,3659,3660,3661,3662,3663,3664,3665,3666,3667,3668,3669,3670,3671,3672,3673,3674,3675,3676,3677,3678,3679,3680,3681,3682,3683,3684,3685,3686,3687,3688,3689,3690,3691,3692,3693,3694,3695,3696,3697,3698,3699,3700,1192,3701,3702,3703,3704,1256,3705,3706,3707,3708,1583,1257,3709,3710,3711,3712,3713,3714,3715,3716,1584,3717,3718,3719,3720,3721,3722,3723,3724,3725,3726,3727,3728,3729,3730,3731,3732,3733,3734,3735,3736,3737,3738,3739,3740,3741,3742,3743,3744,3745,1344,3746,3747,3748,3749,3750,3751,3752,
-3753,3754,3755,3756,1585,3757,3758,3759,3760,3761,3762,3763,3764,3765,3766,1586,3767,3768,3769,3770,3771,3772,3773,3774,3775,3776,3777,3778,1345,3779,3780,3781,3782,3783,3784,3785,3786,3787,3788,3789,3790,3791,3792,3793,3794,3795,1346,1587,3796,3797,1588,3798,3799,3800,3801,3802,3803,3804,3805,3806,1347,3807,3808,3809,3810,3811,1589,3812,3813,3814,3815,3816,3817,3818,3819,3820,3821,1590,3822,3823,1591,1348,3824,3825,3826,3827,3828,3829,3830,1592,3831,3832,1593,3833,3834,3835,3836,3837,3838,3839,3840,
-3841,3842,3843,3844,1349,3845,3846,3847,3848,3849,3850,3851,3852,3853,3854,3855,3856,3857,3858,1594,3859,3860,3861,3862,3863,3864,3865,3866,3867,3868,3869,1595,3870,3871,3872,3873,1596,3874,3875,3876,3877,3878,3879,3880,3881,3882,3883,3884,3885,3886,1597,3887,3888,3889,3890,3891,3892,3893,3894,3895,1598,3896,3897,3898,1599,1600,3899,1350,3900,1351,3901,3902,1352,3903,3904,3905,3906,3907,3908,3909,3910,3911,3912,3913,3914,3915,3916,3917,3918,3919,3920,3921,3922,3923,3924,1258,3925,3926,3927,3928,3929,
-3930,3931,1193,3932,1601,3933,3934,3935,3936,3937,3938,3939,3940,3941,3942,3943,1602,3944,3945,3946,3947,3948,1603,3949,3950,3951,3952,3953,3954,3955,3956,3957,3958,3959,3960,3961,3962,3963,3964,3965,1604,3966,3967,3968,3969,3970,3971,3972,3973,3974,3975,3976,3977,1353,3978,3979,3980,3981,3982,3983,3984,3985,3986,3987,3988,3989,3990,3991,1354,3992,3993,3994,3995,3996,3997,3998,3999,4E3,4001,4002,4003,4004,4005,4006,4007,4008,4009,4010,4011,4012,4013,4014,4015,4016,4017,4018,4019,4020,4021,4022,4023,
-1355,4024,4025,4026,4027,4028,4029,4030,4031,4032,4033,4034,4035,4036,4037,4038,4039,4040,1605,4041,4042,4043,4044,4045,4046,4047,4048,4049,4050,4051,4052,4053,4054,4055,4056,4057,4058,4059,4060,1606,4061,4062,4063,4064,1607,4065,4066,4067,4068,4069,4070,4071,4072,4073,4074,4075,4076,1194,4077,4078,1608,4079,4080,4081,4082,4083,4084,4085,4086,4087,1609,4088,4089,4090,4091,4092,4093,4094,4095,4096,4097,4098,4099,4100,4101,4102,4103,4104,4105,4106,4107,4108,1259,4109,4110,4111,4112,4113,4114,4115,4116,
-4117,4118,4119,4120,4121,4122,4123,4124,1195,4125,4126,4127,1610,4128,4129,4130,4131,4132,4133,4134,4135,4136,4137,1356,4138,4139,4140,4141,4142,4143,4144,1611,4145,4146,4147,4148,4149,4150,4151,4152,4153,4154,4155,4156,4157,4158,4159,4160,4161,4162,4163,4164,4165,4166,4167,4168,4169,4170,4171,4172,4173,4174,4175,4176,4177,4178,4179,4180,4181,4182,4183,4184,4185,4186,4187,4188,4189,4190,4191,4192,4193,4194,4195,4196,4197,4198,4199,4200,4201,4202,4203,4204,4205,4206,4207,4208,4209,4210,4211,4212,4213,
-4214,4215,4216,4217,4218,4219,1612,4220,4221,4222,4223,4224,4225,4226,4227,1357,4228,1613,4229,4230,4231,4232,4233,4234,4235,4236,4237,4238,4239,4240,4241,4242,4243,1614,4244,4245,4246,4247,4248,4249,4250,4251,4252,4253,4254,4255,4256,4257,4258,4259,4260,4261,4262,4263,4264,4265,4266,4267,4268,4269,4270,1196,1358,4271,4272,4273,4274,4275,4276,4277,4278,4279,4280,4281,4282,4283,4284,4285,4286,4287,1615,4288,4289,4290,4291,4292,4293,4294,4295,4296,4297,4298,4299,4300,4301,4302,4303,4304,4305,4306,4307,
-4308,4309,4310,4311,4312,4313,4314,4315,4316,4317,4318,4319,4320,4321,4322,4323,4324,4325,4326,4327,4328,4329,4330,4331,4332,4333,4334,1616,4335,4336,4337,4338,4339,4340,4341,4342,4343,4344,4345,4346,4347,4348,4349,4350,4351,4352,4353,4354,4355,4356,4357,4358,4359,4360,1617,4361,4362,4363,4364,4365,1618,4366,4367,4368,4369,4370,4371,4372,4373,4374,4375,4376,4377,4378,4379,4380,4381,4382,4383,4384,4385,4386,4387,4388,4389,4390,4391,4392,4393,4394,4395,4396,4397,4398,4399,4400,4401,4402,4403,4404,4405,
-4406,4407,4408,4409,4410,4411,4412,4413,4414,4415,4416,1619,4417,4418,4419,4420,4421,4422,4423,4424,4425,1112,4426,4427,4428,4429,4430,1620,4431,4432,4433,4434,4435,4436,4437,4438,4439,4440,4441,4442,1260,1261,4443,4444,4445,4446,4447,4448,4449,4450,4451,4452,4453,4454,4455,1359,4456,4457,4458,4459,4460,4461,4462,4463,4464,4465,1621,4466,4467,4468,4469,4470,4471,4472,4473,4474,4475,4476,4477,4478,4479,4480,4481,4482,4483,4484,4485,4486,4487,4488,4489,1055,4490,4491,4492,4493,4494,4495,4496,4497,4498,
-4499,4500,4501,4502,4503,4504,4505,4506,4507,4508,4509,4510,4511,4512,4513,4514,4515,4516,4517,4518,1622,4519,4520,4521,1623,4522,4523,4524,4525,4526,4527,4528,4529,4530,4531,4532,4533,4534,4535,1360,4536,4537,4538,4539,4540,4541,4542,4543,975,4544,4545,4546,4547,4548,4549,4550,4551,4552,4553,4554,4555,4556,4557,4558,4559,4560,4561,4562,4563,4564,4565,4566,4567,4568,4569,4570,4571,1624,4572,4573,4574,4575,4576,1625,4577,4578,4579,4580,4581,4582,4583,4584,1626,4585,4586,4587,4588,4589,4590,4591,4592,
-4593,4594,4595,1627,4596,4597,4598,4599,4600,4601,4602,4603,4604,4605,4606,4607,4608,4609,4610,4611,4612,4613,4614,4615,1628,4616,4617,4618,4619,4620,4621,4622,4623,4624,4625,4626,4627,4628,4629,4630,4631,4632,4633,4634,4635,4636,4637,4638,4639,4640,4641,4642,4643,4644,4645,4646,4647,4648,4649,1361,4650,4651,4652,4653,4654,4655,4656,4657,4658,4659,4660,4661,1362,4662,4663,4664,4665,4666,4667,4668,4669,4670,4671,4672,4673,4674,4675,4676,4677,4678,4679,4680,4681,4682,1629,4683,4684,4685,4686,4687,1630,
-4688,4689,4690,4691,1153,4692,4693,4694,1113,4695,4696,4697,4698,4699,4700,4701,4702,4703,4704,4705,4706,4707,4708,4709,4710,4711,1197,4712,4713,4714,4715,4716,4717,4718,4719,4720,4721,4722,4723,4724,4725,4726,4727,4728,4729,4730,4731,4732,4733,4734,4735,1631,4736,1632,4737,4738,4739,4740,4741,4742,4743,4744,1633,4745,4746,4747,4748,4749,1262,4750,4751,4752,4753,4754,1363,4755,4756,4757,4758,4759,4760,4761,4762,4763,4764,4765,4766,4767,4768,1634,4769,4770,4771,4772,4773,4774,4775,4776,4777,4778,1635,
-4779,4780,4781,4782,4783,4784,4785,4786,4787,4788,4789,1636,4790,4791,4792,4793,4794,4795,4796,4797,4798,4799,4800,4801,4802,4803,4804,4805,4806,1637,4807,4808,4809,1638,4810,4811,4812,4813,4814,4815,4816,4817,4818,1639,4819,4820,4821,4822,4823,4824,4825,4826,4827,4828,4829,4830,4831,4832,4833,1077,4834,4835,4836,4837,4838,4839,4840,4841,4842,4843,4844,4845,4846,4847,4848,4849,4850,4851,4852,4853,4854,4855,4856,4857,4858,4859,4860,4861,4862,4863,4864,4865,4866,4867,4868,4869,4870,4871,4872,4873,4874,
-4875,4876,4877,4878,4879,4880,4881,4882,4883,1640,4884,4885,1641,4886,4887,4888,4889,4890,4891,4892,4893,4894,4895,4896,4897,4898,4899,4900,4901,4902,4903,4904,4905,4906,4907,4908,4909,4910,4911,1642,4912,4913,4914,1364,4915,4916,4917,4918,4919,4920,4921,4922,4923,4924,4925,4926,4927,4928,4929,4930,4931,1643,4932,4933,4934,4935,4936,4937,4938,4939,4940,4941,4942,4943,4944,4945,4946,4947,4948,4949,4950,4951,4952,4953,4954,4955,4956,4957,4958,4959,4960,4961,4962,4963,4964,4965,4966,4967,4968,4969,4970,
-4971,4972,4973,4974,4975,4976,4977,4978,4979,4980,1644,4981,4982,4983,4984,1645,4985,4986,1646,4987,4988,4989,4990,4991,4992,4993,4994,4995,4996,4997,4998,4999,5E3,5001,5002,5003,5004,5005,1647,5006,1648,5007,5008,5009,5010,5011,5012,1078,5013,5014,5015,5016,5017,5018,5019,5020,5021,5022,5023,5024,5025,5026,5027,5028,1365,5029,5030,5031,5032,5033,5034,5035,5036,5037,5038,5039,1649,5040,5041,5042,5043,5044,5045,1366,5046,5047,5048,5049,5050,5051,5052,5053,5054,5055,1650,5056,5057,5058,5059,5060,5061,
-5062,5063,5064,5065,5066,5067,5068,5069,5070,5071,5072,5073,5074,5075,5076,5077,1651,5078,5079,5080,5081,5082,5083,5084,5085,5086,5087,5088,5089,5090,5091,5092,5093,5094,5095,5096,5097,5098,5099,5100,5101,5102,5103,5104,5105,5106,5107,5108,5109,5110,1652,5111,5112,5113,5114,5115,5116,5117,5118,1367,5119,5120,5121,5122,5123,5124,5125,5126,5127,5128,5129,1653,5130,5131,5132,5133,5134,5135,5136,5137,5138,5139,5140,5141,5142,5143,5144,5145,5146,5147,5148,5149,1368,5150,1654,5151,1369,5152,5153,5154,5155,
-5156,5157,5158,5159,5160,5161,5162,5163,5164,5165,5166,5167,5168,5169,5170,5171,5172,5173,5174,5175,5176,5177,5178,1370,5179,5180,5181,5182,5183,5184,5185,5186,5187,5188,5189,5190,5191,5192,5193,5194,5195,5196,5197,5198,1655,5199,5200,5201,5202,1656,5203,5204,5205,5206,1371,5207,1372,5208,5209,5210,5211,1373,5212,5213,1374,5214,5215,5216,5217,5218,5219,5220,5221,5222,5223,5224,5225,5226,5227,5228,5229,5230,5231,5232,5233,5234,5235,5236,5237,5238,5239,5240,5241,5242,5243,5244,5245,5246,5247,1657,5248,
-5249,5250,5251,1658,1263,5252,5253,5254,5255,5256,1375,5257,5258,5259,5260,5261,5262,5263,5264,5265,5266,5267,5268,5269,5270,5271,5272,5273,5274,5275,5276,5277,5278,5279,5280,5281,5282,5283,1659,5284,5285,5286,5287,5288,5289,5290,5291,5292,5293,5294,5295,5296,5297,5298,5299,5300,1660,5301,5302,5303,5304,5305,5306,5307,5308,5309,5310,5311,5312,5313,5314,5315,5316,5317,5318,5319,5320,5321,1376,5322,5323,5324,5325,5326,5327,5328,5329,5330,5331,5332,5333,1198,5334,5335,5336,5337,5338,5339,5340,5341,5342,
-5343,1661,5344,5345,5346,5347,5348,5349,5350,5351,5352,5353,5354,5355,5356,5357,5358,5359,5360,5361,5362,5363,5364,5365,5366,5367,5368,5369,5370,5371,5372,5373,5374,5375,5376,5377,5378,5379,5380,5381,5382,5383,5384,5385,5386,5387,5388,5389,5390,5391,5392,5393,5394,5395,5396,5397,5398,1264,5399,5400,5401,5402,5403,5404,5405,5406,5407,5408,5409,5410,5411,5412,1662,5413,5414,5415,5416,1663,5417,5418,5419,5420,5421,5422,5423,5424,5425,5426,5427,5428,5429,5430,5431,5432,5433,5434,5435,5436,5437,5438,1664,
-5439,5440,5441,5442,5443,5444,5445,5446,5447,5448,5449,5450,5451,5452,5453,5454,5455,5456,5457,5458,5459,5460,5461,5462,5463,5464,5465,5466,5467,5468,5469,5470,5471,5472,5473,5474,5475,5476,5477,5478,1154,5479,5480,5481,5482,5483,5484,5485,1665,5486,5487,5488,5489,5490,5491,5492,5493,5494,5495,5496,5497,5498,5499,5500,5501,5502,5503,5504,5505,5506,5507,5508,5509,5510,5511,5512,5513,5514,5515,5516,5517,5518,5519,5520,5521,5522,5523,5524,5525,5526,5527,5528,5529,5530,5531,5532,5533,5534,5535,5536,5537,
-5538,5539,5540,5541,5542,5543,5544,5545,5546,5547,5548,1377,5549,5550,5551,5552,5553,5554,5555,5556,5557,5558,5559,5560,5561,5562,5563,5564,5565,5566,5567,5568,5569,5570,1114,5571,5572,5573,5574,5575,5576,5577,5578,5579,5580,5581,5582,5583,5584,5585,5586,5587,5588,5589,5590,5591,5592,1378,5593,5594,5595,5596,5597,5598,5599,5600,5601,5602,5603,5604,5605,5606,5607,5608,5609,5610,5611,5612,5613,5614,1379,5615,5616,5617,5618,5619,5620,5621,5622,5623,5624,5625,5626,5627,5628,5629,5630,5631,5632,5633,5634,
-1380,5635,5636,5637,5638,5639,5640,5641,5642,5643,5644,5645,5646,5647,5648,5649,1381,1056,5650,5651,5652,5653,5654,5655,5656,5657,5658,5659,5660,1666,5661,5662,5663,5664,5665,5666,5667,5668,1667,5669,1668,5670,5671,5672,5673,5674,5675,5676,5677,5678,1155,5679,5680,5681,5682,5683,5684,5685,5686,5687,5688,5689,5690,5691,5692,5693,5694,5695,5696,5697,5698,1669,5699,5700,5701,5702,5703,5704,5705,1670,5706,5707,5708,5709,5710,1671,5711,5712,5713,5714,1382,5715,5716,5717,5718,5719,5720,5721,5722,5723,5724,
-5725,1672,5726,5727,1673,1674,5728,5729,5730,5731,5732,5733,5734,5735,5736,1675,5737,5738,5739,5740,5741,5742,5743,5744,1676,5745,5746,5747,5748,5749,5750,5751,1383,5752,5753,5754,5755,5756,5757,5758,5759,5760,5761,5762,5763,5764,5765,5766,5767,5768,1677,5769,5770,5771,5772,5773,1678,5774,5775,5776,998,5777,5778,5779,5780,5781,5782,5783,5784,5785,1384,5786,5787,5788,5789,5790,5791,5792,5793,5794,5795,5796,5797,5798,5799,5800,1679,5801,5802,5803,1115,1116,5804,5805,5806,5807,5808,5809,5810,5811,5812,
-5813,5814,5815,5816,5817,5818,5819,5820,5821,5822,5823,5824,5825,5826,5827,5828,5829,5830,5831,5832,5833,5834,5835,5836,5837,5838,5839,5840,5841,5842,5843,5844,5845,5846,5847,5848,5849,5850,5851,5852,5853,5854,5855,1680,5856,5857,5858,5859,5860,5861,5862,5863,5864,1681,5865,5866,5867,1682,5868,5869,5870,5871,5872,5873,5874,5875,5876,5877,5878,5879,1683,5880,1684,5881,5882,5883,5884,1685,5885,5886,5887,5888,5889,5890,5891,5892,5893,5894,5895,5896,5897,5898,5899,5900,5901,5902,5903,5904,5905,5906,5907,
-1686,5908,5909,5910,5911,5912,5913,5914,5915,5916,5917,5918,5919,5920,5921,5922,5923,5924,5925,5926,5927,5928,5929,5930,5931,5932,5933,5934,5935,1687,5936,5937,5938,5939,5940,5941,5942,5943,5944,5945,5946,5947,5948,5949,5950,5951,5952,1688,1689,5953,1199,5954,5955,5956,5957,5958,5959,5960,5961,1690,5962,5963,5964,5965,5966,5967,5968,5969,5970,5971,5972,5973,5974,5975,5976,5977,5978,5979,5980,5981,1385,5982,1386,5983,5984,5985,5986,5987,5988,5989,5990,5991,5992,5993,5994,5995,5996,5997,5998,5999,6E3,
-6001,6002,6003,6004,6005,6006,6007,6008,6009,6010,6011,6012,6013,6014,6015,6016,6017,6018,6019,6020,6021,6022,6023,6024,6025,6026,6027,1265,6028,6029,1691,6030,6031,6032,6033,6034,6035,6036,6037,6038,6039,6040,6041,6042,6043,6044,6045,6046,6047,6048,6049,6050,6051,6052,6053,6054,6055,6056,6057,6058,6059,6060,6061,6062,6063,6064,6065,6066,6067,6068,6069,6070,6071,6072,6073,6074,6075,6076,6077,6078,6079,6080,6081,6082,6083,6084,1692,6085,6086,6087,6088,6089,6090,6091,6092,6093,6094,6095,6096,6097,6098,
-6099,6100,6101,6102,6103,6104,6105,6106,6107,6108,6109,6110,6111,6112,6113,6114,6115,6116,6117,6118,6119,6120,6121,6122,6123,6124,6125,6126,6127,6128,6129,6130,6131,1693,6132,6133,6134,6135,6136,1694,6137,6138,6139,6140,6141,1695,6142,6143,6144,6145,6146,6147,6148,6149,6150,6151,6152,6153,6154,6155,6156,6157,6158,6159,6160,6161,6162,6163,6164,6165,6166,6167,6168,6169,6170,6171,6172,6173,6174,6175,6176,6177,6178,6179,6180,6181,6182,6183,6184,6185,1696,6186,6187,6188,6189,6190,6191,6192,6193,6194,6195,
-6196,6197,6198,6199,6200,6201,6202,6203,6204,6205,6206,6207,6208,6209,6210,6211,6212,6213,6214,6215,6216,6217,6218,6219,1697,6220,6221,6222,6223,6224,6225,6226,6227,6228,6229,6230,6231,6232,6233,6234,6235,6236,6237,6238,6239,6240,6241,6242,6243,6244,6245,6246,6247,6248,6249,6250,6251,6252,6253,1698,6254,6255,6256,6257,6258,6259,6260,6261,6262,6263,1200,6264,6265,6266,6267,6268,6269,6270,6271,6272,6273,6274,6275,6276,6277,6278,6279,6280,6281,6282,6283,6284,6285,6286,6287,6288,6289,6290,6291,6292,6293,
-6294,6295,6296,6297,6298,6299,6300,6301,6302,1699,6303,6304,1700,6305,6306,6307,6308,6309,6310,6311,6312,6313,6314,6315,6316,6317,6318,6319,6320,6321,6322,6323,6324,6325,6326,6327,6328,6329,6330,6331,6332,6333,6334,6335,6336,6337,6338,6339,1701,6340,6341,6342,6343,6344,1387,6345,6346,6347,6348,6349,6350,6351,6352,6353,6354,6355,6356,6357,6358,6359,6360,6361,6362,6363,6364,6365,6366,6367,6368,6369,6370,6371,6372,6373,6374,6375,6376,6377,6378,6379,6380,6381,6382,6383,6384,6385,6386,6387,6388,6389,6390,
-6391,6392,6393,6394,6395,6396,6397,6398,6399,6400,6401,6402,6403,6404,6405,6406,6407,6408,6409,6410,6411,6412,6413,1702,6414,6415,6416,6417,6418,6419,6420,6421,6422,1703,6423,6424,6425,6426,6427,6428,6429,6430,6431,6432,6433,6434,6435,6436,6437,6438,1704,6439,6440,6441,6442,6443,6444,6445,6446,6447,6448,6449,6450,6451,6452,6453,6454,6455,6456,6457,6458,6459,6460,6461,6462,6463,6464,6465,6466,6467,6468,6469,6470,6471,6472,6473,6474,6475,6476,6477,6478,6479,6480,6481,6482,6483,6484,6485,6486,6487,6488,
-6489,6490,6491,6492,6493,6494,6495,6496,6497,6498,6499,6500,6501,6502,6503,1266,6504,6505,6506,6507,6508,6509,6510,6511,6512,6513,6514,6515,6516,6517,6518,6519,6520,6521,6522,6523,6524,6525,6526,6527,6528,6529,6530,6531,6532,6533,6534,6535,6536,6537,6538,6539,6540,6541,6542,6543,6544,6545,6546,6547,6548,6549,6550,6551,1705,1706,6552,6553,6554,6555,6556,6557,6558,6559,6560,6561,6562,6563,6564,6565,6566,6567,6568,6569,6570,6571,6572,6573,6574,6575,6576,6577,6578,6579,6580,6581,6582,6583,6584,6585,6586,
-6587,6588,6589,6590,6591,6592,6593,6594,6595,6596,6597,6598,6599,6600,6601,6602,6603,6604,6605,6606,6607,6608,6609,6610,6611,6612,6613,6614,6615,6616,6617,6618,6619,6620,6621,6622,6623,6624,6625,6626,6627,6628,6629,6630,6631,6632,6633,6634,6635,6636,6637,1388,6638,6639,6640,6641,6642,6643,6644,1707,6645,6646,6647,6648,6649,6650,6651,6652,6653,6654,6655,6656,6657,6658,6659,6660,6661,6662,6663,1708,6664,6665,6666,6667,6668,6669,6670,6671,6672,6673,6674,1201,6675,6676,6677,6678,6679,6680,6681,6682,6683,
-6684,6685,6686,6687,6688,6689,6690,6691,6692,6693,6694,6695,6696,6697,6698,6699,6700,6701,6702,6703,6704,6705,6706,6707,6708,6709,6710,6711,6712,6713,6714,6715,6716,6717,6718,6719,6720,6721,6722,6723,6724,6725,1389,6726,6727,6728,6729,6730,6731,6732,6733,6734,6735,6736,1390,1709,6737,6738,6739,6740,6741,6742,1710,6743,6744,6745,6746,1391,6747,6748,6749,6750,6751,6752,6753,6754,6755,6756,6757,1392,6758,6759,6760,6761,6762,6763,6764,6765,6766,6767,6768,6769,6770,6771,6772,6773,6774,6775,6776,6777,6778,
-6779,6780,1202,6781,6782,6783,6784,6785,6786,6787,6788,6789,6790,6791,6792,6793,6794,6795,6796,6797,6798,6799,6800,6801,6802,6803,6804,6805,6806,6807,6808,6809,1711,6810,6811,6812,6813,6814,6815,6816,6817,6818,6819,6820,6821,6822,6823,6824,6825,6826,6827,6828,6829,6830,6831,6832,6833,6834,6835,6836,1393,6837,6838,6839,6840,6841,6842,6843,6844,6845,6846,6847,6848,6849,6850,6851,6852,6853,6854,6855,6856,6857,6858,6859,6860,6861,6862,6863,6864,6865,6866,6867,6868,6869,6870,6871,6872,6873,6874,6875,6876,
-6877,6878,6879,6880,6881,6882,6883,6884,6885,6886,6887,6888,6889,6890,6891,6892,6893,6894,6895,6896,6897,6898,6899,6900,6901,6902,1712,6903,6904,6905,6906,6907,6908,6909,6910,1713,6911,6912,6913,6914,6915,6916,6917,6918,6919,6920,6921,6922,6923,6924,6925,6926,6927,6928,6929,6930,6931,6932,6933,6934,6935,6936,6937,6938,6939,6940,6941,6942,6943,6944,6945,6946,6947,6948,6949,6950,6951,6952,6953,6954,6955,6956,6957,6958,6959,6960,6961,6962,6963,6964,6965,6966,6967,6968,6969,6970,6971,6972,6973,6974,1714,
-6975,6976,6977,6978,6979,6980,6981,6982,6983,6984,6985,6986,6987,6988,1394,6989,6990,6991,6992,6993,6994,6995,6996,6997,6998,6999,7E3,1715,7001,7002,7003,7004,7005,7006,7007,7008,7009,7010,7011,7012,7013,7014,7015,7016,7017,7018,7019,7020,7021,7022,7023,7024,7025,7026,7027,7028,1716,7029,7030,7031,7032,7033,7034,7035,7036,7037,7038,7039,7040,7041,7042,7043,7044,7045,7046,7047,7048,7049,7050,7051,7052,7053,7054,7055,7056,7057,7058,7059,7060,7061,7062,7063,7064,7065,7066,7067,7068,7069,7070,7071,7072,
-7073,7074,7075,7076,7077,7078,7079,7080,7081,7082,7083,7084,7085,7086,7087,7088,7089,7090,7091,7092,7093,7094,7095,7096,7097,7098,7099,7100,7101,7102,7103,7104,7105,7106,7107,7108,7109,7110,7111,7112,7113,7114,7115,7116,7117,7118,7119,7120,7121,7122,7123,7124,7125,7126,7127,7128,7129,7130,7131,7132,7133,7134,7135,7136,7137,7138,7139,7140,7141,7142,7143,7144,7145,7146,7147,7148,7149,7150,7151,7152,7153,7154,7155,7156,7157,7158,7159,7160,7161,7162,7163,7164,7165,7166,7167,7168,7169,7170,7171,7172,7173,
-7174,7175,7176,7177,7178,7179,7180,7181,7182,7183,7184,7185,7186,7187,7188,7189,7190,7191,7192,7193,7194,7195,7196,7197,7198,7199,7200,7201,7202,7203,7204,7205,7206,7207,1395,7208,7209,7210,7211,7212,7213,1717,7214,7215,7216,7217,7218,7219,7220,7221,7222,7223,7224,7225,7226,7227,7228,7229,7230,7231,7232,7233,7234,7235,7236,7237,7238,7239,7240,7241,7242,7243,7244,7245,7246,7247,7248,7249,7250,7251,7252,7253,7254,7255,7256,7257,7258,7259,7260,7261,7262,7263,7264,7265,7266,7267,7268,7269,7270,7271,7272,
-7273,7274,7275,7276,7277,7278,7279,7280,7281,7282,7283,7284,7285,7286,7287,7288,7289,7290,7291,7292,7293,7294,7295,7296,7297,7298,7299,7300,7301,7302,7303,7304,7305,7306,7307,7308,7309,7310,7311,7312,7313,1718,7314,7315,7316,7317,7318,7319,7320,7321,7322,7323,7324,7325,7326,7327,7328,7329,7330,7331,7332,7333,7334,7335,7336,7337,7338,7339,7340,7341,7342,7343,7344,7345,7346,7347,7348,7349,7350,7351,7352,7353,7354,7355,7356,7357,7358,7359,7360,7361,7362,7363,7364,7365,7366,7367,7368,7369,7370,7371,7372,
-7373,7374,7375,7376,7377,7378,7379,7380,7381,7382,7383,7384,7385,7386,7387,7388,7389,7390,7391,7392,7393,7394,7395,7396,7397,7398,7399,7400,7401,7402,7403,7404,7405,7406,7407,7408,7409,7410,7411,7412,7413,7414,7415,7416,7417,7418,7419,7420,7421,7422,7423,7424,7425,7426,7427,7428,7429,7430,7431,7432,7433,7434,7435,7436,7437,7438,7439,7440,7441,7442,7443,7444,7445,7446,7447,7448,7449,7450,7451,7452,7453,7454,7455,7456,7457,7458,7459,7460,7461,7462,7463,7464,7465,7466,7467,7468,7469,7470,7471,7472,7473,
-7474,7475,7476,7477,7478,7479,7480,7481,7482,7483,7484,7485,7486,7487,7488,7489,7490,7491,7492,7493,7494,7495,7496,7497,7498,7499,7500,7501,7502,7503,7504,7505,7506,7507,7508,7509,7510,7511,7512,7513,7514,7515,7516,7517,7518,7519,7520,7521,7522,7523,7524,7525,7526,7527,7528,7529,7530,7531,7532,7533,7534,7535,7536,7537,7538,7539,7540,7541,7542,7543,7544,7545,7546,7547,7548,7549,7550,7551,7552,7553,7554,7555,7556,7557,7558,7559,7560,7561,7562,7563,7564,7565,7566,7567,7568,7569,7570,7571,7572,7573,7574,
-7575,7576,7577,7578,7579,7580,7581,7582,7583,7584,7585,7586,7587,7588,7589,7590,7591,7592,7593,7594,7595,7596,7597,7598,7599,7600,7601,7602,7603,7604,7605,7606,7607,7608,7609,7610,7611,7612,7613,7614,7615,7616,7617,7618,7619,7620,7621,7622,7623,7624,7625,7626,7627,7628,7629,7630,7631,7632,7633,7634,7635,7636,7637,7638,7639,7640,7641,7642,7643,7644,7645,7646,7647,7648,7649,7650,7651,7652,7653,7654,7655,7656,7657,7658,7659,7660,7661,7662,7663,7664,7665,7666,7667,7668,7669,7670,7671,7672,7673,7674,7675,
-7676,7677,7678,7679,7680,7681,7682,7683,7684,7685,7686,7687,7688,7689,7690,7691,7692,7693,7694,7695,7696,7697,7698,7699,7700,7701,7702,7703,7704,7705,7706,7707,7708,7709,7710,7711,7712,7713,7714,7715,7716,7717,7718,7719,7720,7721,7722,7723,7724,7725,7726,7727,7728,7729,7730,7731,7732,7733,7734,7735,7736,7737,7738,7739,7740,7741,7742,7743,7744,7745,7746,7747,7748,7749,7750,7751,7752,7753,7754,7755,7756,7757,7758,7759,7760,7761,7762,7763,7764,7765,7766,7767,7768,7769,7770,7771,7772,7773,7774,7775,7776,
-7777,7778,7779,7780,7781,7782,7783,7784,7785,7786,7787,7788,7789,7790,7791,7792,7793,7794,7795,7796,7797,7798,7799,7800,7801,7802,7803,7804,7805,7806,7807,7808,7809,7810,7811,7812,7813,7814,7815,7816,7817,7818,7819,7820,7821,7822,7823,7824,7825,7826,7827,7828,7829,7830,7831,7832,7833,7834,7835,7836,7837,7838,7839,7840,7841,7842,7843,7844,7845,7846,7847,7848,7849,7850,7851,7852,7853,7854,7855,7856,7857,7858,7859,7860,7861,7862,7863,7864,7865,7866,7867,7868,7869,7870,7871,7872,7873,7874,7875,7876,7877,
-7878,7879,7880,7881,7882,7883,7884,7885,7886,7887,7888,7889,7890,7891,7892,7893,7894,7895,7896,7897,7898,7899,7900,7901,7902,7903,7904,7905,7906,7907,7908,7909,7910,7911,7912,7913,7914,7915,7916,7917,7918,7919,7920,7921,7922,7923,7924,7925,7926,7927,7928,7929,7930,7931,7932,7933,7934,7935,7936,7937,7938,7939,7940,7941,7942,7943,7944,7945,7946,7947,7948,7949,7950,7951,7952,7953,7954,7955,7956,7957,7958,7959,7960,7961,7962,7963,7964,7965,7966,7967,7968,7969,7970,7971,7972,7973,7974,7975,7976,7977,7978,
-7979,7980,7981,7982,7983,7984,7985,7986,7987,7988,7989,7990,7991,7992,7993,7994,7995,7996,7997,7998,7999,8E3,8001,8002,8003,8004,8005,8006,8007,8008,8009,8010,8011,8012,8013,8014,8015,8016,8017,8018,8019,8020,8021,8022,8023,8024,8025,8026,8027,8028,8029,8030,8031,8032,8033,8034,8035,8036,8037,8038,8039,8040,8041,8042,8043,8044,8045,8046,8047,8048,8049,8050,8051,8052,8053,8054,8055,8056,8057,8058,8059,8060,8061,8062,8063,8064,8065,8066,8067,8068,8069,8070,8071,8072,8073,8074,8075,8076,8077,8078,8079,
-8080,8081,8082,8083,8084,8085,8086,8087,8088,8089,8090,8091,8092,8093,8094,8095,8096,8097,8098,8099,8100,8101,8102,8103,8104,8105,8106,8107,8108,8109,8110,8111,8112,8113,8114,8115,8116,8117,8118,8119,8120,8121,8122,8123,8124,8125,8126,8127,8128,8129,8130,8131,8132,8133,8134,8135,8136,8137,8138,8139,8140,8141,8142,8143,8144,8145,8146,8147,8148,8149,8150,8151,8152,8153,8154,8155,8156,8157,8158,8159,8160,8161,8162,8163,8164,8165,8166,8167,8168,8169,8170,8171,8172,8173,8174,8175,8176,8177,8178,8179,8180,
-8181,8182,8183,8184,8185,8186,8187,8188,8189,8190,8191,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8203,8204,8205,8206,8207,8208,8209,8210,8211,8212,8213,8214,8215,8216,8217,8218,8219,8220,8221,8222,8223,8224,8225,8226,8227,8228,8229,8230,8231,8232,8233,8234,8235,8236,8237,8238,8239,8240,8241,8242,8243,8244,8245,8246,8247,8248,8249,8250,8251,8252,8253,8254,8255,8256,8257,8258,8259,8260,8261,8262,8263,8264,8265,8266,8267,8268,8269,8270,8271,8272,8273,8274,8275,8276,8277,8278,8279,8280,8281,
-8282,8283,8284,8285,8286,8287,8288,8289,8290,8291,8292,8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,8304,8305,8306,8307,8308,8309,8310,8311,8312,8313,8314,8315,8316,8317,8318,8319,8320,8321,8322,8323,8324,8325,8326,8327,8328,8329,8330,8331,8332,8333,8334,8335,8336,8337,8338,8339,8340,8341,8342,8343,8344,8345,8346,8347,8348,8349,8350,8351,8352,8353,8354,8355,8356,8357,8358,8359,8360,8361,8362,8363,8364,8365,8366,8367,8368,8369,8370,8371,8372,8373,8374,8375,8376,8377,8378,8379,8380,8381,8382,
-8383,8384,8385,8386,8387,8388,8389,8390,8391,8392,8393,8394,8395,8396,8397,8398,8399,8400,8401,8402,8403,8404,8405,8406,8407,8408,8409,8410,8411,8412,8413,8414,8415,8416,8417,8418,8419,8420,8421,8422,8423,8424,8425,8426,8427,8428,8429,8430,8431,8432,8433,8434,8435,8436,8437,8438,8439,8440,8441,8442,8443,8444,8445,8446,8447,8448,8449,8450,8451,8452,8453,8454,8455,8456,8457,8458,8459,8460,8461,8462,8463,8464,8465,8466,8467,8468,8469,8470,8471,8472,8473,8474,8475,8476,8477,8478,8479,8480,8481,8482,8483,
-8484,8485,8486,8487,8488,8489,8490,8491,8492,8493,8494,8495,8496,8497,8498,8499,8500,8501,8502,8503,8504,8505,8506,8507,8508,8509,8510,8511,8512,8513,8514,8515,8516,8517,8518,8519,8520,8521,8522,8523,8524,8525,8526,8527,8528,8529,8530,8531,8532,8533,8534,8535,8536,8537,8538,8539,8540,8541,8542,8543,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,8554,8555,8556,8557,8558,8559,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,8570,8571,8572,8573,8574,8575,8576,8577,8578,8579,8580,8581,8582,8583,8584,
-8585,8586,8587,8588,8589,8590,8591,8592,8593,8594,8595,8596,8597,8598,8599,8600,8601,8602,8603,8604,8605,8606,8607,8608,8609,8610,8611,8612,8613,8614,8615,8616,8617,8618,8619,8620,8621,8622,8623,8624,8625,8626,8627,8628,8629,8630,8631,8632,8633,8634,8635,8636,8637,8638,8639,8640,8641,8642,8643,8644,8645,8646,8647,8648,8649,8650,8651,8652,8653,8654,8655,8656,8657,8658,8659,8660,8661,8662,8663,8664,8665,8666,8667,8668,8669,8670,8671,8672,8673,8674,8675,8676,8677,8678,8679,8680,8681,8682,8683,8684,8685,
-8686,8687,8688,8689,8690,8691,8692,8693,8694,8695,8696,8697,8698,8699,8700,8701,8702,8703,8704,8705,8706,8707,8708,8709,8710,8711,8712,8713,8714,8715,8716,8717,8718,8719,8720,8721,8722,8723,8724,8725,8726,8727,8728,8729,8730,8731,8732,8733,8734,8735,8736,8737,8738,8739,8740,8741];!0},{"./init":20}],13:[function(b,a,d){!function(a){a.EUCKRProber=function(){a.MultiByteCharSetProber.apply(this);this.getCharsetName=function(){return"EUC-KR"};this._mCodingSM=new a.CodingStateMachine(a.EUCKRSMModel);this._mDistributionAnalyzer=
-new a.EUCKRDistributionAnalysis;this.reset()};a.EUCKRProber.prototype=new a.MultiByteCharSetProber}(b("./init"))},{"./init":20}],14:[function(b,a,d){b=b("./init");b.EUCTW_TYPICAL_DISTRIBUTION_RATIO=.75;b.EUCTW_TABLE_SIZE=8102;b.EUCTWCharToFreqOrder=[1,1800,1506,255,1431,198,9,82,6,7310,177,202,3615,1256,2808,110,3735,33,3241,261,76,44,2113,16,2931,2184,1176,659,3868,26,3404,2643,1198,3869,3313,4060,410,2211,302,590,361,1963,8,204,58,4296,7311,1931,63,7312,7313,317,1614,75,222,159,4061,2412,1480,7314,
-3500,3068,224,2809,3616,3,10,3870,1471,29,2774,1135,2852,1939,873,130,3242,1123,312,7315,4297,2051,507,252,682,7316,142,1914,124,206,2932,34,3501,3173,64,604,7317,2494,1976,1977,155,1990,645,641,1606,7318,3405,337,72,406,7319,80,630,238,3174,1509,263,939,1092,2644,756,1440,1094,3406,449,69,2969,591,179,2095,471,115,2034,1843,60,50,2970,134,806,1868,734,2035,3407,180,995,1607,156,537,2893,688,7320,319,1305,779,2144,514,2374,298,4298,359,2495,90,2707,1338,663,11,906,1099,2545,20,2436,182,532,1716,7321,
-732,1376,4062,1311,1420,3175,25,2312,1056,113,399,382,1949,242,3408,2467,529,3243,475,1447,3617,7322,117,21,656,810,1297,2295,2329,3502,7323,126,4063,706,456,150,613,4299,71,1118,2036,4064,145,3069,85,835,486,2114,1246,1426,428,727,1285,1015,800,106,623,303,1281,7324,2127,2354,347,3736,221,3503,3110,7325,1955,1153,4065,83,296,1199,3070,192,624,93,7326,822,1897,2810,3111,795,2064,991,1554,1542,1592,27,43,2853,859,139,1456,860,4300,437,712,3871,164,2392,3112,695,211,3017,2096,195,3872,1608,3504,3505,
-3618,3873,234,811,2971,2097,3874,2229,1441,3506,1615,2375,668,2076,1638,305,228,1664,4301,467,415,7327,262,2098,1593,239,108,300,200,1033,512,1247,2077,7328,7329,2173,3176,3619,2673,593,845,1062,3244,88,1723,2037,3875,1950,212,266,152,149,468,1898,4066,4302,77,187,7330,3018,37,5,2972,7331,3876,7332,7333,39,2517,4303,2894,3177,2078,55,148,74,4304,545,483,1474,1029,1665,217,1869,1531,3113,1104,2645,4067,24,172,3507,900,3877,3508,3509,4305,32,1408,2811,1312,329,487,2355,2247,2708,784,2674,4,3019,3314,
-1427,1788,188,109,499,7334,3620,1717,1789,888,1217,3020,4306,7335,3510,7336,3315,1520,3621,3878,196,1034,775,7337,7338,929,1815,249,439,38,7339,1063,7340,794,3879,1435,2296,46,178,3245,2065,7341,2376,7342,214,1709,4307,804,35,707,324,3622,1601,2546,140,459,4068,7343,7344,1365,839,272,978,2257,2572,3409,2128,1363,3623,1423,697,100,3071,48,70,1231,495,3114,2193,7345,1294,7346,2079,462,586,1042,3246,853,256,988,185,2377,3410,1698,434,1084,7347,3411,314,2615,2775,4308,2330,2331,569,2280,637,1816,2518,
-757,1162,1878,1616,3412,287,1577,2115,768,4309,1671,2854,3511,2519,1321,3737,909,2413,7348,4069,933,3738,7349,2052,2356,1222,4310,765,2414,1322,786,4311,7350,1919,1462,1677,2895,1699,7351,4312,1424,2437,3115,3624,2590,3316,1774,1940,3413,3880,4070,309,1369,1130,2812,364,2230,1653,1299,3881,3512,3882,3883,2646,525,1085,3021,902,2E3,1475,964,4313,421,1844,1415,1057,2281,940,1364,3116,376,4314,4315,1381,7,2520,983,2378,336,1710,2675,1845,321,3414,559,1131,3022,2742,1808,1132,1313,265,1481,1857,7352,
-352,1203,2813,3247,167,1089,420,2814,776,792,1724,3513,4071,2438,3248,7353,4072,7354,446,229,333,2743,901,3739,1200,1557,4316,2647,1920,395,2744,2676,3740,4073,1835,125,916,3178,2616,4317,7355,7356,3741,7357,7358,7359,4318,3117,3625,1133,2547,1757,3415,1510,2313,1409,3514,7360,2145,438,2591,2896,2379,3317,1068,958,3023,461,311,2855,2677,4074,1915,3179,4075,1978,383,750,2745,2617,4076,274,539,385,1278,1442,7361,1154,1964,384,561,210,98,1295,2548,3515,7362,1711,2415,1482,3416,3884,2897,1257,129,7363,
-3742,642,523,2776,2777,2648,7364,141,2231,1333,68,176,441,876,907,4077,603,2592,710,171,3417,404,549,18,3118,2393,1410,3626,1666,7365,3516,4319,2898,4320,7366,2973,368,7367,146,366,99,871,3627,1543,748,807,1586,1185,22,2258,379,3743,3180,7368,3181,505,1941,2618,1991,1382,2314,7369,380,2357,218,702,1817,1248,3418,3024,3517,3318,3249,7370,2974,3628,930,3250,3744,7371,59,7372,585,601,4078,497,3419,1112,1314,4321,1801,7373,1223,1472,2174,7374,749,1836,690,1899,3745,1772,3885,1476,429,1043,1790,2232,2116,
-917,4079,447,1086,1629,7375,556,7376,7377,2020,1654,844,1090,105,550,966,1758,2815,1008,1782,686,1095,7378,2282,793,1602,7379,3518,2593,4322,4080,2933,2297,4323,3746,980,2496,544,353,527,4324,908,2678,2899,7380,381,2619,1942,1348,7381,1341,1252,560,3072,7382,3420,2856,7383,2053,973,886,2080,143,4325,7384,7385,157,3886,496,4081,57,840,540,2038,4326,4327,3421,2117,1445,970,2259,1748,1965,2081,4082,3119,1234,1775,3251,2816,3629,773,1206,2129,1066,2039,1326,3887,1738,1725,4083,279,3120,51,1544,2594,423,
-1578,2130,2066,173,4328,1879,7386,7387,1583,264,610,3630,4329,2439,280,154,7388,7389,7390,1739,338,1282,3073,693,2857,1411,1074,3747,2440,7391,4330,7392,7393,1240,952,2394,7394,2900,1538,2679,685,1483,4084,2468,1436,953,4085,2054,4331,671,2395,79,4086,2441,3252,608,567,2680,3422,4087,4088,1691,393,1261,1791,2396,7395,4332,7396,7397,7398,7399,1383,1672,3748,3182,1464,522,1119,661,1150,216,675,4333,3888,1432,3519,609,4334,2681,2397,7400,7401,7402,4089,3025,0,7403,2469,315,231,2442,301,3319,4335,2380,
-7404,233,4090,3631,1818,4336,4337,7405,96,1776,1315,2082,7406,257,7407,1809,3632,2709,1139,1819,4091,2021,1124,2163,2778,1777,2649,7408,3074,363,1655,3183,7409,2975,7410,7411,7412,3889,1567,3890,718,103,3184,849,1443,341,3320,2934,1484,7413,1712,127,67,339,4092,2398,679,1412,821,7414,7415,834,738,351,2976,2146,846,235,1497,1880,418,1992,3749,2710,186,1100,2147,2746,3520,1545,1355,2935,2858,1377,583,3891,4093,2573,2977,7416,1298,3633,1078,2549,3634,2358,78,3750,3751,267,1289,2099,2001,1594,4094,348,
-369,1274,2194,2175,1837,4338,1820,2817,3635,2747,2283,2002,4339,2936,2748,144,3321,882,4340,3892,2749,3423,4341,2901,7417,4095,1726,320,7418,3893,3026,788,2978,7419,2818,1773,1327,2859,3894,2819,7420,1306,4342,2003,1700,3752,3521,2359,2650,787,2022,506,824,3636,534,323,4343,1044,3322,2023,1900,946,3424,7421,1778,1500,1678,7422,1881,4344,165,243,4345,3637,2521,123,683,4096,764,4346,36,3895,1792,589,2902,816,626,1667,3027,2233,1639,1555,1622,3753,3896,7423,3897,2860,1370,1228,1932,891,2083,2903,304,
-4097,7424,292,2979,2711,3522,691,2100,4098,1115,4347,118,662,7425,611,1156,854,2381,1316,2861,2,386,515,2904,7426,7427,3253,868,2234,1486,855,2651,785,2212,3028,7428,1040,3185,3523,7429,3121,448,7430,1525,7431,2164,4348,7432,3754,7433,4099,2820,3524,3122,503,818,3898,3123,1568,814,676,1444,306,1749,7434,3755,1416,1030,197,1428,805,2821,1501,4349,7435,7436,7437,1993,7438,4350,7439,7440,2195,13,2779,3638,2980,3124,1229,1916,7441,3756,2131,7442,4100,4351,2399,3525,7443,2213,1511,1727,1120,7444,7445,
-646,3757,2443,307,7446,7447,1595,3186,7448,7449,7450,3639,1113,1356,3899,1465,2522,2523,7451,519,7452,128,2132,92,2284,1979,7453,3900,1512,342,3125,2196,7454,2780,2214,1980,3323,7455,290,1656,1317,789,827,2360,7456,3758,4352,562,581,3901,7457,401,4353,2248,94,4354,1399,2781,7458,1463,2024,4355,3187,1943,7459,828,1105,4101,1262,1394,7460,4102,605,4356,7461,1783,2862,7462,2822,819,2101,578,2197,2937,7463,1502,436,3254,4103,3255,2823,3902,2905,3425,3426,7464,2712,2315,7465,7466,2332,2067,23,4357,193,
-826,3759,2102,699,1630,4104,3075,390,1793,1064,3526,7467,1579,3076,3077,1400,7468,4105,1838,1640,2863,7469,4358,4359,137,4106,598,3078,1966,780,104,974,2938,7470,278,899,253,402,572,504,493,1339,7471,3903,1275,4360,2574,2550,7472,3640,3029,3079,2249,565,1334,2713,863,41,7473,7474,4361,7475,1657,2333,19,463,2750,4107,606,7476,2981,3256,1087,2084,1323,2652,2982,7477,1631,1623,1750,4108,2682,7478,2864,791,2714,2653,2334,232,2416,7479,2983,1498,7480,2654,2620,755,1366,3641,3257,3126,2025,1609,119,1917,
-3427,862,1026,4109,7481,3904,3760,4362,3905,4363,2260,1951,2470,7482,1125,817,4110,4111,3906,1513,1766,2040,1487,4112,3030,3258,2824,3761,3127,7483,7484,1507,7485,2683,733,40,1632,1106,2865,345,4113,841,2524,230,4364,2984,1846,3259,3428,7486,1263,986,3429,7487,735,879,254,1137,857,622,1300,1180,1388,1562,3907,3908,2939,967,2751,2655,1349,592,2133,1692,3324,2985,1994,4114,1679,3909,1901,2185,7488,739,3642,2715,1296,1290,7489,4115,2198,2199,1921,1563,2595,2551,1870,2752,2986,7490,435,7491,343,1108,
-596,17,1751,4365,2235,3430,3643,7492,4366,294,3527,2940,1693,477,979,281,2041,3528,643,2042,3644,2621,2782,2261,1031,2335,2134,2298,3529,4367,367,1249,2552,7493,3530,7494,4368,1283,3325,2004,240,1762,3326,4369,4370,836,1069,3128,474,7495,2148,2525,268,3531,7496,3188,1521,1284,7497,1658,1546,4116,7498,3532,3533,7499,4117,3327,2684,1685,4118,961,1673,2622,190,2005,2200,3762,4371,4372,7500,570,2497,3645,1490,7501,4373,2623,3260,1956,4374,584,1514,396,1045,1944,7502,4375,1967,2444,7503,7504,4376,3910,
-619,7505,3129,3261,215,2006,2783,2553,3189,4377,3190,4378,763,4119,3763,4379,7506,7507,1957,1767,2941,3328,3646,1174,452,1477,4380,3329,3130,7508,2825,1253,2382,2186,1091,2285,4120,492,7509,638,1169,1824,2135,1752,3911,648,926,1021,1324,4381,520,4382,997,847,1007,892,4383,3764,2262,1871,3647,7510,2400,1784,4384,1952,2942,3080,3191,1728,4121,2043,3648,4385,2007,1701,3131,1551,30,2263,4122,7511,2026,4386,3534,7512,501,7513,4123,594,3431,2165,1821,3535,3432,3536,3192,829,2826,4124,7514,1680,3132,1225,
-4125,7515,3262,4387,4126,3133,2336,7516,4388,4127,7517,3912,3913,7518,1847,2383,2596,3330,7519,4389,374,3914,652,4128,4129,375,1140,798,7520,7521,7522,2361,4390,2264,546,1659,138,3031,2445,4391,7523,2250,612,1848,910,796,3765,1740,1371,825,3766,3767,7524,2906,2554,7525,692,444,3032,2624,801,4392,4130,7526,1491,244,1053,3033,4131,4132,340,7527,3915,1041,2987,293,1168,87,1357,7528,1539,959,7529,2236,721,694,4133,3768,219,1478,644,1417,3331,2656,1413,1401,1335,1389,3916,7530,7531,2988,2362,3134,1825,
-730,1515,184,2827,66,4393,7532,1660,2943,246,3332,378,1457,226,3433,975,3917,2944,1264,3537,674,696,7533,163,7534,1141,2417,2166,713,3538,3333,4394,3918,7535,7536,1186,15,7537,1079,1070,7538,1522,3193,3539,276,1050,2716,758,1126,653,2945,3263,7539,2337,889,3540,3919,3081,2989,903,1250,4395,3920,3434,3541,1342,1681,1718,766,3264,286,89,2946,3649,7540,1713,7541,2597,3334,2990,7542,2947,2215,3194,2866,7543,4396,2498,2526,181,387,1075,3921,731,2187,3335,7544,3265,310,313,3435,2299,770,4134,54,3034,189,
-4397,3082,3769,3922,7545,1230,1617,1849,355,3542,4135,4398,3336,111,4136,3650,1350,3135,3436,3035,4137,2149,3266,3543,7546,2784,3923,3924,2991,722,2008,7547,1071,247,1207,2338,2471,1378,4399,2009,864,1437,1214,4400,373,3770,1142,2216,667,4401,442,2753,2555,3771,3925,1968,4138,3267,1839,837,170,1107,934,1336,1882,7548,7549,2118,4139,2828,743,1569,7550,4402,4140,582,2384,1418,3437,7551,1802,7552,357,1395,1729,3651,3268,2418,1564,2237,7553,3083,3772,1633,4403,1114,2085,4141,1532,7554,482,2446,4404,7555,
-7556,1492,833,1466,7557,2717,3544,1641,2829,7558,1526,1272,3652,4142,1686,1794,416,2556,1902,1953,1803,7559,3773,2785,3774,1159,2316,7560,2867,4405,1610,1584,3036,2419,2754,443,3269,1163,3136,7561,7562,3926,7563,4143,2499,3037,4406,3927,3137,2103,1647,3545,2010,1872,4144,7564,4145,431,3438,7565,250,97,81,4146,7566,1648,1850,1558,160,848,7567,866,740,1694,7568,2201,2830,3195,4147,4407,3653,1687,950,2472,426,469,3196,3654,3655,3928,7569,7570,1188,424,1995,861,3546,4148,3775,2202,2685,168,1235,3547,
-4149,7571,2086,1674,4408,3337,3270,220,2557,1009,7572,3776,670,2992,332,1208,717,7573,7574,3548,2447,3929,3338,7575,513,7576,1209,2868,3339,3138,4409,1080,7577,7578,7579,7580,2527,3656,3549,815,1587,3930,3931,7581,3550,3439,3777,1254,4410,1328,3038,1390,3932,1741,3933,3778,3934,7582,236,3779,2448,3271,7583,7584,3657,3780,1273,3781,4411,7585,308,7586,4412,245,4413,1851,2473,1307,2575,430,715,2136,2449,7587,270,199,2869,3935,7588,3551,2718,1753,761,1754,725,1661,1840,4414,3440,3658,7589,7590,587,14,
-3272,227,2598,326,480,2265,943,2755,3552,291,650,1883,7591,1702,1226,102,1547,62,3441,904,4415,3442,1164,4150,7592,7593,1224,1548,2756,391,498,1493,7594,1386,1419,7595,2055,1177,4416,813,880,1081,2363,566,1145,4417,2286,1001,1035,2558,2599,2238,394,1286,7596,7597,2068,7598,86,1494,1730,3936,491,1588,745,897,2948,843,3340,3937,2757,2870,3273,1768,998,2217,2069,397,1826,1195,1969,3659,2993,3341,284,7599,3782,2500,2137,2119,1903,7600,3938,2150,3939,4151,1036,3443,1904,114,2559,4152,209,1527,7601,7602,
-2949,2831,2625,2385,2719,3139,812,2560,7603,3274,7604,1559,737,1884,3660,1210,885,28,2686,3553,3783,7605,4153,1004,1779,4418,7606,346,1981,2218,2687,4419,3784,1742,797,1642,3940,1933,1072,1384,2151,896,3941,3275,3661,3197,2871,3554,7607,2561,1958,4420,2450,1785,7608,7609,7610,3942,4154,1005,1308,3662,4155,2720,4421,4422,1528,2600,161,1178,4156,1982,987,4423,1101,4157,631,3943,1157,3198,2420,1343,1241,1016,2239,2562,372,877,2339,2501,1160,555,1934,911,3944,7611,466,1170,169,1051,2907,2688,3663,2474,
-2994,1182,2011,2563,1251,2626,7612,992,2340,3444,1540,2721,1201,2070,2401,1996,2475,7613,4424,528,1922,2188,1503,1873,1570,2364,3342,3276,7614,557,1073,7615,1827,3445,2087,2266,3140,3039,3084,767,3085,2786,4425,1006,4158,4426,2341,1267,2176,3664,3199,778,3945,3200,2722,1597,2657,7616,4427,7617,3446,7618,7619,7620,3277,2689,1433,3278,131,95,1504,3946,723,4159,3141,1841,3555,2758,2189,3947,2027,2104,3665,7621,2995,3948,1218,7622,3343,3201,3949,4160,2576,248,1634,3785,912,7623,2832,3666,3040,3786,654,
-53,7624,2996,7625,1688,4428,777,3447,1032,3950,1425,7626,191,820,2120,2833,971,4429,931,3202,135,664,783,3787,1997,772,2908,1935,3951,3788,4430,2909,3203,282,2723,640,1372,3448,1127,922,325,3344,7627,7628,711,2044,7629,7630,3952,2219,2787,1936,3953,3345,2220,2251,3789,2300,7631,4431,3790,1258,3279,3954,3204,2138,2950,3955,3956,7632,2221,258,3205,4432,101,1227,7633,3280,1755,7634,1391,3281,7635,2910,2056,893,7636,7637,7638,1402,4161,2342,7639,7640,3206,3556,7641,7642,878,1325,1780,2788,4433,259,1385,
-2577,744,1183,2267,4434,7643,3957,2502,7644,684,1024,4162,7645,472,3557,3449,1165,3282,3958,3959,322,2152,881,455,1695,1152,1340,660,554,2153,4435,1058,4436,4163,830,1065,3346,3960,4437,1923,7646,1703,1918,7647,932,2268,122,7648,4438,947,677,7649,3791,2627,297,1905,1924,2269,4439,2317,3283,7650,7651,4164,7652,4165,84,4166,112,989,7653,547,1059,3961,701,3558,1019,7654,4167,7655,3450,942,639,457,2301,2451,993,2951,407,851,494,4440,3347,927,7656,1237,7657,2421,3348,573,4168,680,921,2911,1279,1874,285,
-790,1448,1983,719,2167,7658,7659,4441,3962,3963,1649,7660,1541,563,7661,1077,7662,3349,3041,3451,511,2997,3964,3965,3667,3966,1268,2564,3350,3207,4442,4443,7663,535,1048,1276,1189,2912,2028,3142,1438,1373,2834,2952,1134,2012,7664,4169,1238,2578,3086,1259,7665,700,7666,2953,3143,3668,4170,7667,4171,1146,1875,1906,4444,2601,3967,781,2422,132,1589,203,147,273,2789,2402,898,1786,2154,3968,3969,7668,3792,2790,7669,7670,4445,4446,7671,3208,7672,1635,3793,965,7673,1804,2690,1516,3559,1121,1082,1329,3284,
-3970,1449,3794,65,1128,2835,2913,2759,1590,3795,7674,7675,12,2658,45,976,2579,3144,4447,517,2528,1013,1037,3209,7676,3796,2836,7677,3797,7678,3452,7679,2602,614,1998,2318,3798,3087,2724,2628,7680,2580,4172,599,1269,7681,1810,3669,7682,2691,3088,759,1060,489,1805,3351,3285,1358,7683,7684,2386,1387,1215,2629,2252,490,7685,7686,4173,1759,2387,2343,7687,4448,3799,1907,3971,2630,1806,3210,4449,3453,3286,2760,2344,874,7688,7689,3454,3670,1858,91,2914,3671,3042,3800,4450,7690,3145,3972,2659,7691,3455,1202,
-1403,3801,2954,2529,1517,2503,4451,3456,2504,7692,4452,7693,2692,1885,1495,1731,3973,2365,4453,7694,2029,7695,7696,3974,2693,1216,237,2581,4174,2319,3975,3802,4454,4455,2694,3560,3457,445,4456,7697,7698,7699,7700,2761,61,3976,3672,1822,3977,7701,687,2045,935,925,405,2660,703,1096,1859,2725,4457,3978,1876,1367,2695,3352,918,2105,1781,2476,334,3287,1611,1093,4458,564,3146,3458,3673,3353,945,2631,2057,4459,7702,1925,872,4175,7703,3459,2696,3089,349,4176,3674,3979,4460,3803,4177,3675,2155,3980,4461,4462,
-4178,4463,2403,2046,782,3981,400,251,4179,1624,7704,7705,277,3676,299,1265,476,1191,3804,2121,4180,4181,1109,205,7706,2582,1E3,2156,3561,1860,7707,7708,7709,4464,7710,4465,2565,107,2477,2157,3982,3460,3147,7711,1533,541,1301,158,753,4182,2872,3562,7712,1696,370,1088,4183,4466,3563,579,327,440,162,2240,269,1937,1374,3461,968,3043,56,1396,3090,2106,3288,3354,7713,1926,2158,4467,2998,7714,3564,7715,7716,3677,4468,2478,7717,2791,7718,1650,4469,7719,2603,7720,7721,3983,2661,3355,1149,3356,3984,3805,3985,
-7722,1076,49,7723,951,3211,3289,3290,450,2837,920,7724,1811,2792,2366,4184,1908,1138,2367,3806,3462,7725,3212,4470,1909,1147,1518,2423,4471,3807,7726,4472,2388,2604,260,1795,3213,7727,7728,3808,3291,708,7729,3565,1704,7730,3566,1351,1618,3357,2999,1886,944,4185,3358,4186,3044,3359,4187,7731,3678,422,413,1714,3292,500,2058,2345,4188,2479,7732,1344,1910,954,7733,1668,7734,7735,3986,2404,4189,3567,3809,4190,7736,2302,1318,2505,3091,133,3092,2873,4473,629,31,2838,2697,3810,4474,850,949,4475,3987,2955,
-1732,2088,4191,1496,1852,7737,3988,620,3214,981,1242,3679,3360,1619,3680,1643,3293,2139,2452,1970,1719,3463,2168,7738,3215,7739,7740,3361,1828,7741,1277,4476,1565,2047,7742,1636,3568,3093,7743,869,2839,655,3811,3812,3094,3989,3E3,3813,1310,3569,4477,7744,7745,7746,1733,558,4478,3681,335,1549,3045,1756,4192,3682,1945,3464,1829,1291,1192,470,2726,2107,2793,913,1054,3990,7747,1027,7748,3046,3991,4479,982,2662,3362,3148,3465,3216,3217,1946,2794,7749,571,4480,7750,1830,7751,3570,2583,1523,2424,7752,2089,
-984,4481,3683,1959,7753,3684,852,923,2795,3466,3685,969,1519,999,2048,2320,1705,7754,3095,615,1662,151,597,3992,2405,2321,1049,275,4482,3686,4193,568,3687,3571,2480,4194,3688,7755,2425,2270,409,3218,7756,1566,2874,3467,1002,769,2840,194,2090,3149,3689,2222,3294,4195,628,1505,7757,7758,1763,2177,3001,3993,521,1161,2584,1787,2203,2406,4483,3994,1625,4196,4197,412,42,3096,464,7759,2632,4484,3363,1760,1571,2875,3468,2530,1219,2204,3814,2633,2140,2368,4485,4486,3295,1651,3364,3572,7760,7761,3573,2481,
-3469,7762,3690,7763,7764,2271,2091,460,7765,4487,7766,3002,962,588,3574,289,3219,2634,1116,52,7767,3047,1796,7768,7769,7770,1467,7771,1598,1143,3691,4198,1984,1734,1067,4488,1280,3365,465,4489,1572,510,7772,1927,2241,1812,1644,3575,7773,4490,3692,7774,7775,2663,1573,1534,7776,7777,4199,536,1807,1761,3470,3815,3150,2635,7778,7779,7780,4491,3471,2915,1911,2796,7781,3296,1122,377,3220,7782,360,7783,7784,4200,1529,551,7785,2059,3693,1769,2426,7786,2916,4201,3297,3097,2322,2108,2030,4492,1404,136,1468,
-1479,672,1171,3221,2303,271,3151,7787,2762,7788,2049,678,2727,865,1947,4493,7789,2013,3995,2956,7790,2728,2223,1397,3048,3694,4494,4495,1735,2917,3366,3576,7791,3816,509,2841,2453,2876,3817,7792,7793,3152,3153,4496,4202,2531,4497,2304,1166,1010,552,681,1887,7794,7795,2957,2958,3996,1287,1596,1861,3154,358,453,736,175,478,1117,905,1167,1097,7796,1853,1530,7797,1706,7798,2178,3472,2287,3695,3473,3577,4203,2092,4204,7799,3367,1193,2482,4205,1458,2190,2205,1862,1888,1421,3298,2918,3049,2179,3474,595,
-2122,7800,3997,7801,7802,4206,1707,2636,223,3696,1359,751,3098,183,3475,7803,2797,3003,419,2369,633,704,3818,2389,241,7804,7805,7806,838,3004,3697,2272,2763,2454,3819,1938,2050,3998,1309,3099,2242,1181,7807,1136,2206,3820,2370,1446,4207,2305,4498,7808,7809,4208,1055,2605,484,3698,7810,3999,625,4209,2273,3368,1499,4210,4E3,7811,4001,4211,3222,2274,2275,3476,7812,7813,2764,808,2606,3699,3369,4002,4212,3100,2532,526,3370,3821,4213,955,7814,1620,4214,2637,2427,7815,1429,3700,1669,1831,994,928,7816,3578,
-1260,7817,7818,7819,1948,2288,741,2919,1626,4215,2729,2455,867,1184,362,3371,1392,7820,7821,4003,4216,1770,1736,3223,2920,4499,4500,1928,2698,1459,1158,7822,3050,3372,2877,1292,1929,2506,2842,3701,1985,1187,2071,2014,2607,4217,7823,2566,2507,2169,3702,2483,3299,7824,3703,4501,7825,7826,666,1003,3005,1022,3579,4218,7827,4502,1813,2253,574,3822,1603,295,1535,705,3823,4219,283,858,417,7828,7829,3224,4503,4504,3051,1220,1889,1046,2276,2456,4004,1393,1599,689,2567,388,4220,7830,2484,802,7831,2798,3824,
-2060,1405,2254,7832,4505,3825,2109,1052,1345,3225,1585,7833,809,7834,7835,7836,575,2730,3477,956,1552,1469,1144,2323,7837,2324,1560,2457,3580,3226,4005,616,2207,3155,2180,2289,7838,1832,7839,3478,4506,7840,1319,3704,3705,1211,3581,1023,3227,1293,2799,7841,7842,7843,3826,607,2306,3827,762,2878,1439,4221,1360,7844,1485,3052,7845,4507,1038,4222,1450,2061,2638,4223,1379,4508,2585,7846,7847,4224,1352,1414,2325,2921,1172,7848,7849,3828,3829,7850,1797,1451,7851,7852,7853,7854,2922,4006,4007,2485,2346,411,
-4008,4009,3582,3300,3101,4509,1561,2664,1452,4010,1375,7855,7856,47,2959,316,7857,1406,1591,2923,3156,7858,1025,2141,3102,3157,354,2731,884,2224,4225,2407,508,3706,726,3583,996,2428,3584,729,7859,392,2191,1453,4011,4510,3707,7860,7861,2458,3585,2608,1675,2800,919,2347,2960,2348,1270,4511,4012,73,7862,7863,647,7864,3228,2843,2255,1550,1346,3006,7865,1332,883,3479,7866,7867,7868,7869,3301,2765,7870,1212,831,1347,4226,4512,2326,3830,1863,3053,720,3831,4513,4514,3832,7871,4227,7872,7873,4515,7874,7875,
-1798,4516,3708,2609,4517,3586,1645,2371,7876,7877,2924,669,2208,2665,2429,7878,2879,7879,7880,1028,3229,7881,4228,2408,7882,2256,1353,7883,7884,4518,3158,518,7885,4013,7886,4229,1960,7887,2142,4230,7888,7889,3007,2349,2350,3833,516,1833,1454,4014,2699,4231,4519,2225,2610,1971,1129,3587,7890,2766,7891,2961,1422,577,1470,3008,1524,3373,7892,7893,432,4232,3054,3480,7894,2586,1455,2508,2226,1972,1175,7895,1020,2732,4015,3481,4520,7896,2733,7897,1743,1361,3055,3482,2639,4016,4233,4521,2290,895,924,4234,
-2170,331,2243,3056,166,1627,3057,1098,7898,1232,2880,2227,3374,4522,657,403,1196,2372,542,3709,3375,1600,4235,3483,7899,4523,2767,3230,576,530,1362,7900,4524,2533,2666,3710,4017,7901,842,3834,7902,2801,2031,1014,4018,213,2700,3376,665,621,4236,7903,3711,2925,2430,7904,2431,3302,3588,3377,7905,4237,2534,4238,4525,3589,1682,4239,3484,1380,7906,724,2277,600,1670,7907,1337,1233,4526,3103,2244,7908,1621,4527,7909,651,4240,7910,1612,4241,2611,7911,2844,7912,2734,2307,3058,7913,716,2459,3059,174,1255,2701,
-4019,3590,548,1320,1398,728,4020,1574,7914,1890,1197,3060,4021,7915,3061,3062,3712,3591,3713,747,7916,635,4242,4528,7917,7918,7919,4243,7920,7921,4529,7922,3378,4530,2432,451,7923,3714,2535,2072,4244,2735,4245,4022,7924,1764,4531,7925,4246,350,7926,2278,2390,2486,7927,4247,4023,2245,1434,4024,488,4532,458,4248,4025,3715,771,1330,2391,3835,2568,3159,2159,2409,1553,2667,3160,4249,7928,2487,2881,2612,1720,2702,4250,3379,4533,7929,2536,4251,7930,3231,4252,2768,7931,2015,2736,7932,1155,1017,3716,3836,
-7933,3303,2308,201,1864,4253,1430,7934,4026,7935,7936,7937,7938,7939,4254,1604,7940,414,1865,371,2587,4534,4535,3485,2016,3104,4536,1708,960,4255,887,389,2171,1536,1663,1721,7941,2228,4027,2351,2926,1580,7942,7943,7944,1744,7945,2537,4537,4538,7946,4539,7947,2073,7948,7949,3592,3380,2882,4256,7950,4257,2640,3381,2802,673,2703,2460,709,3486,4028,3593,4258,7951,1148,502,634,7952,7953,1204,4540,3594,1575,4541,2613,3717,7954,3718,3105,948,3232,121,1745,3837,1110,7955,4259,3063,2509,3009,4029,3719,1151,
-1771,3838,1488,4030,1986,7956,2433,3487,7957,7958,2093,7959,4260,3839,1213,1407,2803,531,2737,2538,3233,1011,1537,7960,2769,4261,3106,1061,7961,3720,3721,1866,2883,7962,2017,120,4262,4263,2062,3595,3234,2309,3840,2668,3382,1954,4542,7963,7964,3488,1047,2704,1266,7965,1368,4543,2845,649,3383,3841,2539,2738,1102,2846,2669,7966,7967,1999,7968,1111,3596,2962,7969,2488,3842,3597,2804,1854,3384,3722,7970,7971,3385,2410,2884,3304,3235,3598,7972,2569,7973,3599,2805,4031,1460,856,7974,3600,7975,2885,2963,
-7976,2886,3843,7977,4264,632,2510,875,3844,1697,3845,2291,7978,7979,4544,3010,1239,580,4545,4265,7980,914,936,2074,1190,4032,1039,2123,7981,7982,7983,3386,1473,7984,1354,4266,3846,7985,2172,3064,4033,915,3305,4267,4268,3306,1605,1834,7986,2739,398,3601,4269,3847,4034,328,1912,2847,4035,3848,1331,4270,3011,937,4271,7987,3602,4036,4037,3387,2160,4546,3388,524,742,538,3065,1012,7988,7989,3849,2461,7990,658,1103,225,3850,7991,7992,4547,7993,4548,7994,3236,1243,7995,4038,963,2246,4549,7996,2705,3603,3161,
-7997,7998,2588,2327,7999,4550,8E3,8001,8002,3489,3307,957,3389,2540,2032,1930,2927,2462,870,2018,3604,1746,2770,2771,2434,2463,8003,3851,8004,3723,3107,3724,3490,3390,3725,8005,1179,3066,8006,3162,2373,4272,3726,2541,3163,3108,2740,4039,8007,3391,1556,2542,2292,977,2887,2033,4040,1205,3392,8008,1765,3393,3164,2124,1271,1689,714,4551,3491,8009,2328,3852,533,4273,3605,2181,617,8010,2464,3308,3492,2310,8011,8012,3165,8013,8014,3853,1987,618,427,2641,3493,3394,8015,8016,1244,1690,8017,2806,4274,4552,
-8018,3494,8019,8020,2279,1576,473,3606,4275,3395,972,8021,3607,8022,3067,8023,8024,4553,4554,8025,3727,4041,4042,8026,153,4555,356,8027,1891,2888,4276,2143,408,803,2352,8028,3854,8029,4277,1646,2570,2511,4556,4557,3855,8030,3856,4278,8031,2411,3396,752,8032,8033,1961,2964,8034,746,3012,2465,8035,4279,3728,698,4558,1892,4280,3608,2543,4559,3609,3857,8036,3166,3397,8037,1823,1302,4043,2706,3858,1973,4281,8038,4282,3167,823,1303,1288,1236,2848,3495,4044,3398,774,3859,8039,1581,4560,1304,2849,3860,4561,
-8040,2435,2161,1083,3237,4283,4045,4284,344,1173,288,2311,454,1683,8041,8042,1461,4562,4046,2589,8043,8044,4563,985,894,8045,3399,3168,8046,1913,2928,3729,1988,8047,2110,1974,8048,4047,8049,2571,1194,425,8050,4564,3169,1245,3730,4285,8051,8052,2850,8053,636,4565,1855,3861,760,1799,8054,4286,2209,1508,4566,4048,1893,1684,2293,8055,8056,8057,4287,4288,2210,479,8058,8059,832,8060,4049,2489,8061,2965,2490,3731,990,3109,627,1814,2642,4289,1582,4290,2125,2111,3496,4567,8062,799,4291,3170,8063,4568,2112,
-1737,3013,1018,543,754,4292,3309,1676,4569,4570,4050,8064,1489,8065,3497,8066,2614,2889,4051,8067,8068,2966,8069,8070,8071,8072,3171,4571,4572,2182,1722,8073,3238,3239,1842,3610,1715,481,365,1975,1856,8074,8075,1962,2491,4573,8076,2126,3611,3240,433,1894,2063,2075,8077,602,2741,8078,8079,8080,8081,8082,3014,1628,3400,8083,3172,4574,4052,2890,4575,2512,8084,2544,2772,8085,8086,8087,3310,4576,2891,8088,4577,8089,2851,4578,4579,1221,2967,4053,2513,8090,8091,8092,1867,1989,8093,8094,8095,1895,8096,8097,
-4580,1896,4054,318,8098,2094,4055,4293,8099,8100,485,8101,938,3862,553,2670,116,8102,3863,3612,8103,3498,2671,2773,3401,3311,2807,8104,3613,2929,4056,1747,2930,2968,8105,8106,207,8107,8108,2672,4581,2514,8109,3015,890,3614,3864,8110,1877,3732,3402,8111,2183,2353,3403,1652,8112,8113,8114,941,2294,208,3499,4057,2019,330,4294,3865,2892,2492,3733,4295,8115,8116,8117,8118,2515,1613,4582,8119,3312,3866,2516,8120,4058,8121,1637,4059,2466,4583,3867,8122,2493,3016,3734,8123,8124,2192,8125,8126,2162,8127,8128,
-8129,8130,8131,8132,8133,8134,8135,8136,8137,8138,8139,8140,8141,8142,8143,8144,8145,8146,8147,8148,8149,8150,8151,8152,8153,8154,8155,8156,8157,8158,8159,8160,8161,8162,8163,8164,8165,8166,8167,8168,8169,8170,8171,8172,8173,8174,8175,8176,8177,8178,8179,8180,8181,8182,8183,8184,8185,8186,8187,8188,8189,8190,8191,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8203,8204,8205,8206,8207,8208,8209,8210,8211,8212,8213,8214,8215,8216,8217,8218,8219,8220,8221,8222,8223,8224,8225,8226,8227,8228,8229,
-8230,8231,8232,8233,8234,8235,8236,8237,8238,8239,8240,8241,8242,8243,8244,8245,8246,8247,8248,8249,8250,8251,8252,8253,8254,8255,8256,8257,8258,8259,8260,8261,8262,8263,8264,8265,8266,8267,8268,8269,8270,8271,8272,8273,8274,8275,8276,8277,8278,8279,8280,8281,8282,8283,8284,8285,8286,8287,8288,8289,8290,8291,8292,8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,8304,8305,8306,8307,8308,8309,8310,8311,8312,8313,8314,8315,8316,8317,8318,8319,8320,8321,8322,8323,8324,8325,8326,8327,8328,8329,8330,
-8331,8332,8333,8334,8335,8336,8337,8338,8339,8340,8341,8342,8343,8344,8345,8346,8347,8348,8349,8350,8351,8352,8353,8354,8355,8356,8357,8358,8359,8360,8361,8362,8363,8364,8365,8366,8367,8368,8369,8370,8371,8372,8373,8374,8375,8376,8377,8378,8379,8380,8381,8382,8383,8384,8385,8386,8387,8388,8389,8390,8391,8392,8393,8394,8395,8396,8397,8398,8399,8400,8401,8402,8403,8404,8405,8406,8407,8408,8409,8410,8411,8412,8413,8414,8415,8416,8417,8418,8419,8420,8421,8422,8423,8424,8425,8426,8427,8428,8429,8430,8431,
-8432,8433,8434,8435,8436,8437,8438,8439,8440,8441,8442,8443,8444,8445,8446,8447,8448,8449,8450,8451,8452,8453,8454,8455,8456,8457,8458,8459,8460,8461,8462,8463,8464,8465,8466,8467,8468,8469,8470,8471,8472,8473,8474,8475,8476,8477,8478,8479,8480,8481,8482,8483,8484,8485,8486,8487,8488,8489,8490,8491,8492,8493,8494,8495,8496,8497,8498,8499,8500,8501,8502,8503,8504,8505,8506,8507,8508,8509,8510,8511,8512,8513,8514,8515,8516,8517,8518,8519,8520,8521,8522,8523,8524,8525,8526,8527,8528,8529,8530,8531,8532,
-8533,8534,8535,8536,8537,8538,8539,8540,8541,8542,8543,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,8554,8555,8556,8557,8558,8559,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,8570,8571,8572,8573,8574,8575,8576,8577,8578,8579,8580,8581,8582,8583,8584,8585,8586,8587,8588,8589,8590,8591,8592,8593,8594,8595,8596,8597,8598,8599,8600,8601,8602,8603,8604,8605,8606,8607,8608,8609,8610,8611,8612,8613,8614,8615,8616,8617,8618,8619,8620,8621,8622,8623,8624,8625,8626,8627,8628,8629,8630,8631,8632,8633,
-8634,8635,8636,8637,8638,8639,8640,8641,8642,8643,8644,8645,8646,8647,8648,8649,8650,8651,8652,8653,8654,8655,8656,8657,8658,8659,8660,8661,8662,8663,8664,8665,8666,8667,8668,8669,8670,8671,8672,8673,8674,8675,8676,8677,8678,8679,8680,8681,8682,8683,8684,8685,8686,8687,8688,8689,8690,8691,8692,8693,8694,8695,8696,8697,8698,8699,8700,8701,8702,8703,8704,8705,8706,8707,8708,8709,8710,8711,8712,8713,8714,8715,8716,8717,8718,8719,8720,8721,8722,8723,8724,8725,8726,8727,8728,8729,8730,8731,8732,8733,8734,
-8735,8736,8737,8738,8739,8740,8741];!0},{"./init":20}],15:[function(b,a,d){!function(a){a.EUCTWProber=function(){a.MultiByteCharSetProber.apply(this);this.getCharsetName=function(){return"EUC-TW"};this._mCodingSM=new a.CodingStateMachine(a.EUCTWSMModel);this._mDistributionAnalyzer=new a.EUCTWDistributionAnalysis;this.reset()};a.EUCTWProber.prototype=new a.MultiByteCharSetProber}(b("./init"))},{"./init":20}],16:[function(b,a,d){b=b("./init");b.GB2312_TYPICAL_DISTRIBUTION_RATIO=.9;b.GB2312_TABLE_SIZE=
-3760;b.GB2312CharToFreqOrder=[1671,749,1443,2364,3924,3807,2330,3921,1704,3463,2691,1511,1515,572,3191,2205,2361,224,2558,479,1711,963,3162,440,4060,1905,2966,2947,3580,2647,3961,3842,2204,869,4207,970,2678,5626,2944,2956,1479,4048,514,3595,588,1346,2820,3409,249,4088,1746,1873,2047,1774,581,1813,358,1174,3590,1014,1561,4844,2245,670,1636,3112,889,1286,953,556,2327,3060,1290,3141,613,185,3477,1367,850,3820,1715,2428,2642,2303,2732,3041,2562,2648,3566,3946,1349,388,3098,2091,1360,3585,152,1687,1539,
-738,1559,59,1232,2925,2267,1388,1249,1741,1679,2960,151,1566,1125,1352,4271,924,4296,385,3166,4459,310,1245,2850,70,3285,2729,3534,3575,2398,3298,3466,1960,2265,217,3647,864,1909,2084,4401,2773,1010,3269,5152,853,3051,3121,1244,4251,1895,364,1499,1540,2313,1180,3655,2268,562,715,2417,3061,544,336,3768,2380,1752,4075,950,280,2425,4382,183,2759,3272,333,4297,2155,1688,2356,1444,1039,4540,736,1177,3349,2443,2368,2144,2225,565,196,1482,3406,927,1335,4147,692,878,1311,1653,3911,3622,1378,4200,1840,2969,
-3149,2126,1816,2534,1546,2393,2760,737,2494,13,447,245,2747,38,2765,2129,2589,1079,606,360,471,3755,2890,404,848,699,1785,1236,370,2221,1023,3746,2074,2026,2023,2388,1581,2119,812,1141,3091,2536,1519,804,2053,406,1596,1090,784,548,4414,1806,2264,2936,1100,343,4114,5096,622,3358,743,3668,1510,1626,5020,3567,2513,3195,4115,5627,2489,2991,24,2065,2697,1087,2719,48,1634,315,68,985,2052,198,2239,1347,1107,1439,597,2366,2172,871,3307,919,2487,2790,1867,236,2570,1413,3794,906,3365,3381,1701,1982,1818,1524,
-2924,1205,616,2586,2072,2004,575,253,3099,32,1365,1182,197,1714,2454,1201,554,3388,3224,2748,756,2587,250,2567,1507,1517,3529,1922,2761,2337,3416,1961,1677,2452,2238,3153,615,911,1506,1474,2495,1265,1906,2749,3756,3280,2161,898,2714,1759,3450,2243,2444,563,26,3286,2266,3769,3344,2707,3677,611,1402,531,1028,2871,4548,1375,261,2948,835,1190,4134,353,840,2684,1900,3082,1435,2109,1207,1674,329,1872,2781,4055,2686,2104,608,3318,2423,2957,2768,1108,3739,3512,3271,3985,2203,1771,3520,1418,2054,1681,1153,
-225,1627,2929,162,2050,2511,3687,1954,124,1859,2431,1684,3032,2894,585,4805,3969,2869,2704,2088,2032,2095,3656,2635,4362,2209,256,518,2042,2105,3777,3657,643,2298,1148,1779,190,989,3544,414,11,2135,2063,2979,1471,403,3678,126,770,1563,671,2499,3216,2877,600,1179,307,2805,4937,1268,1297,2694,252,4032,1448,1494,1331,1394,127,2256,222,1647,1035,1481,3056,1915,1048,873,3651,210,33,1608,2516,200,1520,415,102,0,3389,1287,817,91,3299,2940,836,1814,549,2197,1396,1669,2987,3582,2297,2848,4528,1070,687,20,
-1819,121,1552,1364,1461,1968,2617,3540,2824,2083,177,948,4938,2291,110,4549,2066,648,3359,1755,2110,2114,4642,4845,1693,3937,3308,1257,1869,2123,208,1804,3159,2992,2531,2549,3361,2418,1350,2347,2800,2568,1291,2036,2680,72,842,1990,212,1233,1154,1586,75,2027,3410,4900,1823,1337,2710,2676,728,2810,1522,3026,4995,157,755,1050,4022,710,785,1936,2194,2085,1406,2777,2400,150,1250,4049,1206,807,1910,534,529,3309,1721,1660,274,39,2827,661,2670,1578,925,3248,3815,1094,4278,4901,4252,41,1150,3747,2572,2227,
-4501,3658,4902,3813,3357,3617,2884,2258,887,538,4187,3199,1294,2439,3042,2329,2343,2497,1255,107,543,1527,521,3478,3568,194,5062,15,961,3870,1241,1192,2664,66,5215,3260,2111,1295,1127,2152,3805,4135,901,1164,1976,398,1278,530,1460,748,904,1054,1966,1426,53,2909,509,523,2279,1534,536,1019,239,1685,460,2353,673,1065,2401,3600,4298,2272,1272,2363,284,1753,3679,4064,1695,81,815,2677,2757,2731,1386,859,500,4221,2190,2566,757,1006,2519,2068,1166,1455,337,2654,3203,1863,1682,1914,3025,1252,1409,1366,847,
-714,2834,2038,3209,964,2970,1901,885,2553,1078,1756,3049,301,1572,3326,688,2130,1996,2429,1805,1648,2930,3421,2750,3652,3088,262,1158,1254,389,1641,1812,526,1719,923,2073,1073,1902,468,489,4625,1140,857,2375,3070,3319,2863,380,116,1328,2693,1161,2244,273,1212,1884,2769,3011,1775,1142,461,3066,1200,2147,2212,790,702,2695,4222,1601,1058,434,2338,5153,3640,67,2360,4099,2502,618,3472,1329,416,1132,830,2782,1807,2653,3211,3510,1662,192,2124,296,3979,1739,1611,3684,23,118,324,446,1239,1225,293,2520,3814,
-3795,2535,3116,17,1074,467,2692,2201,387,2922,45,1326,3055,1645,3659,2817,958,243,1903,2320,1339,2825,1784,3289,356,576,865,2315,2381,3377,3916,1088,3122,1713,1655,935,628,4689,1034,1327,441,800,720,894,1979,2183,1528,5289,2702,1071,4046,3572,2399,1571,3281,79,761,1103,327,134,758,1899,1371,1615,879,442,215,2605,2579,173,2048,2485,1057,2975,3317,1097,2253,3801,4263,1403,1650,2946,814,4968,3487,1548,2644,1567,1285,2,295,2636,97,946,3576,832,141,4257,3273,760,3821,3521,3156,2607,949,1024,1733,1516,
-1803,1920,2125,2283,2665,3180,1501,2064,3560,2171,1592,803,3518,1416,732,3897,4258,1363,1362,2458,119,1427,602,1525,2608,1605,1639,3175,694,3064,10,465,76,2E3,4846,4208,444,3781,1619,3353,2206,1273,3796,740,2483,320,1723,2377,3660,2619,1359,1137,1762,1724,2345,2842,1850,1862,912,821,1866,612,2625,1735,2573,3369,1093,844,89,937,930,1424,3564,2413,2972,1004,3046,3019,2011,711,3171,1452,4178,428,801,1943,432,445,2811,206,4136,1472,730,349,73,397,2802,2547,998,1637,1167,789,396,3217,154,1218,716,1120,
-1780,2819,4826,1931,3334,3762,2139,1215,2627,552,3664,3628,3232,1405,2383,3111,1356,2652,3577,3320,3101,1703,640,1045,1370,1246,4996,371,1575,2436,1621,2210,984,4033,1734,2638,16,4529,663,2755,3255,1451,3917,2257,1253,1955,2234,1263,2951,214,1229,617,485,359,1831,1969,473,2310,750,2058,165,80,2864,2419,361,4344,2416,2479,1134,796,3726,1266,2943,860,2715,938,390,2734,1313,1384,248,202,877,1064,2854,522,3907,279,1602,297,2357,395,3740,137,2075,944,4089,2584,1267,3802,62,1533,2285,178,176,780,2440,201,
-3707,590,478,1560,4354,2117,1075,30,74,4643,4004,1635,1441,2745,776,2596,238,1077,1692,1912,2844,605,499,1742,3947,241,3053,980,1749,936,2640,4511,2582,515,1543,2162,5322,2892,2993,890,2148,1924,665,1827,3581,1032,968,3163,339,1044,1896,270,583,1791,1720,4367,1194,3488,3669,43,2523,1657,163,2167,290,1209,1622,3378,550,634,2508,2510,695,2634,2384,2512,1476,1414,220,1469,2341,2138,2852,3183,2900,4939,2865,3502,1211,3680,854,3227,1299,2976,3172,186,2998,1459,443,1067,3251,1495,321,1932,3054,909,753,
-1410,1828,436,2441,1119,1587,3164,2186,1258,227,231,1425,1890,3200,3942,247,959,725,5254,2741,577,2158,2079,929,120,174,838,2813,591,1115,417,2024,40,3240,1536,1037,291,4151,2354,632,1298,2406,2500,3535,1825,1846,3451,205,1171,345,4238,18,1163,811,685,2208,1217,425,1312,1508,1175,4308,2552,1033,587,1381,3059,2984,3482,340,1316,4023,3972,792,3176,519,777,4690,918,933,4130,2981,3741,90,3360,2911,2200,5184,4550,609,3079,2030,272,3379,2736,363,3881,1130,1447,286,779,357,1169,3350,3137,1630,1220,2687,
-2391,747,1277,3688,2618,2682,2601,1156,3196,5290,4034,3102,1689,3596,3128,874,219,2783,798,508,1843,2461,269,1658,1776,1392,1913,2983,3287,2866,2159,2372,829,4076,46,4253,2873,1889,1894,915,1834,1631,2181,2318,298,664,2818,3555,2735,954,3228,3117,527,3511,2173,681,2712,3033,2247,2346,3467,1652,155,2164,3382,113,1994,450,899,494,994,1237,2958,1875,2336,1926,3727,545,1577,1550,633,3473,204,1305,3072,2410,1956,2471,707,2134,841,2195,2196,2663,3843,1026,4940,990,3252,4997,368,1092,437,3212,3258,1933,
-1829,675,2977,2893,412,943,3723,4644,3294,3283,2230,2373,5154,2389,2241,2661,2323,1404,2524,593,787,677,3008,1275,2059,438,2709,2609,2240,2269,2246,1446,36,1568,1373,3892,1574,2301,1456,3962,693,2276,5216,2035,1143,2720,1919,1797,1811,2763,4137,2597,1830,1699,1488,1198,2090,424,1694,312,3634,3390,4179,3335,2252,1214,561,1059,3243,2295,2561,975,5155,2321,2751,3772,472,1537,3282,3398,1047,2077,2348,2878,1323,3340,3076,690,2906,51,369,170,3541,1060,2187,2688,3670,2541,1083,1683,928,3918,459,109,4427,
-599,3744,4286,143,2101,2730,2490,82,1588,3036,2121,281,1860,477,4035,1238,2812,3020,2716,3312,1530,2188,2055,1317,843,636,1808,1173,3495,649,181,1002,147,3641,1159,2414,3750,2289,2795,813,3123,2610,1136,4368,5,3391,4541,2174,420,429,1728,754,1228,2115,2219,347,2223,2733,735,1518,3003,2355,3134,1764,3948,3329,1888,2424,1001,1234,1972,3321,3363,1672,1021,1450,1584,226,765,655,2526,3404,3244,2302,3665,731,594,2184,319,1576,621,658,2656,4299,2099,3864,1279,2071,2598,2739,795,3086,3699,3908,1707,2352,
-2402,1382,3136,2475,1465,4847,3496,3865,1085,3004,2591,1084,213,2287,1963,3565,2250,822,793,4574,3187,1772,1789,3050,595,1484,1959,2770,1080,2650,456,422,2996,940,3322,4328,4345,3092,2742,965,2784,739,4124,952,1358,2498,2949,2565,332,2698,2378,660,2260,2473,4194,3856,2919,535,1260,2651,1208,1428,1300,1949,1303,2942,433,2455,2450,1251,1946,614,1269,641,1306,1810,2737,3078,2912,564,2365,1419,1415,1497,4460,2367,2185,1379,3005,1307,3218,2175,1897,3063,682,1157,4040,4005,1712,1160,1941,1399,394,402,2952,
-1573,1151,2986,2404,862,299,2033,1489,3006,346,171,2886,3401,1726,2932,168,2533,47,2507,1030,3735,1145,3370,1395,1318,1579,3609,4560,2857,4116,1457,2529,1965,504,1036,2690,2988,2405,745,5871,849,2397,2056,3081,863,2359,3857,2096,99,1397,1769,2300,4428,1643,3455,1978,1757,3718,1440,35,4879,3742,1296,4228,2280,160,5063,1599,2013,166,520,3479,1646,3345,3012,490,1937,1545,1264,2182,2505,1096,1188,1369,1436,2421,1667,2792,2460,1270,2122,727,3167,2143,806,1706,1012,1800,3037,960,2218,1882,805,139,2456,
-1139,1521,851,1052,3093,3089,342,2039,744,5097,1468,1502,1585,2087,223,939,326,2140,2577,892,2481,1623,4077,982,3708,135,2131,87,2503,3114,2326,1106,876,1616,547,2997,2831,2093,3441,4530,4314,9,3256,4229,4148,659,1462,1986,1710,2046,2913,2231,4090,4880,5255,3392,3274,1368,3689,4645,1477,705,3384,3635,1068,1529,2941,1458,3782,1509,100,1656,2548,718,2339,408,1590,2780,3548,1838,4117,3719,1345,3530,717,3442,2778,3220,2898,1892,4590,3614,3371,2043,1998,1224,3483,891,635,584,2559,3355,733,1766,1729,1172,
-3789,1891,2307,781,2982,2271,1957,1580,5773,2633,2005,4195,3097,1535,3213,1189,1934,5693,3262,586,3118,1324,1598,517,1564,2217,1868,1893,4445,3728,2703,3139,1526,1787,1992,3882,2875,1549,1199,1056,2224,1904,2711,5098,4287,338,1993,3129,3489,2689,1809,2815,1997,957,1855,3898,2550,3275,3057,1105,1319,627,1505,1911,1883,3526,698,3629,3456,1833,1431,746,77,1261,2017,2296,1977,1885,125,1334,1600,525,1798,1109,2222,1470,1945,559,2236,1186,3443,2476,1929,1411,2411,3135,1777,3372,2621,1841,1613,3229,668,
-1430,1839,2643,2916,195,1989,2671,2358,1387,629,3205,2293,5256,4439,123,1310,888,1879,4300,3021,3605,1003,1162,3192,2910,2010,140,2395,2859,55,1082,2012,2901,662,419,2081,1438,680,2774,4654,3912,1620,1731,1625,5035,4065,2328,512,1344,802,5443,2163,2311,2537,524,3399,98,1155,2103,1918,2606,3925,2816,1393,2465,1504,3773,2177,3963,1478,4346,180,1113,4655,3461,2028,1698,833,2696,1235,1322,1594,4408,3623,3013,3225,2040,3022,541,2881,607,3632,2029,1665,1219,639,1385,1686,1099,2803,3231,1938,3188,2858,427,
-676,2772,1168,2025,454,3253,2486,3556,230,1950,580,791,1991,1280,1086,1974,2034,630,257,3338,2788,4903,1017,86,4790,966,2789,1995,1696,1131,259,3095,4188,1308,179,1463,5257,289,4107,1248,42,3413,1725,2288,896,1947,774,4474,4254,604,3430,4264,392,2514,2588,452,237,1408,3018,988,4531,1970,3034,3310,540,2370,1562,1288,2990,502,4765,1147,4,1853,2708,207,294,2814,4078,2902,2509,684,34,3105,3532,2551,644,709,2801,2344,573,1727,3573,3557,2021,1081,3100,4315,2100,3681,199,2263,1837,2385,146,3484,1195,2776,
-3949,997,1939,3973,1008,1091,1202,1962,1847,1149,4209,5444,1076,493,117,5400,2521,972,1490,2934,1796,4542,2374,1512,2933,2657,413,2888,1135,2762,2314,2156,1355,2369,766,2007,2527,2170,3124,2491,2593,2632,4757,2437,234,3125,3591,1898,1750,1376,1942,3468,3138,570,2127,2145,3276,4131,962,132,1445,4196,19,941,3624,3480,3366,1973,1374,4461,3431,2629,283,2415,2275,808,2887,3620,2112,2563,1353,3610,955,1089,3103,1053,96,88,4097,823,3808,1583,399,292,4091,3313,421,1128,642,4006,903,2539,1877,2082,596,29,
-4066,1790,722,2157,130,995,1569,769,1485,464,513,2213,288,1923,1101,2453,4316,133,486,2445,50,625,487,2207,57,423,481,2962,159,3729,1558,491,303,482,501,240,2837,112,3648,2392,1783,362,8,3433,3422,610,2793,3277,1390,1284,1654,21,3823,734,367,623,193,287,374,1009,1483,816,476,313,2255,2340,1262,2150,2899,1146,2581,782,2116,1659,2018,1880,255,3586,3314,1110,2867,2137,2564,986,2767,5185,2006,650,158,926,762,881,3157,2717,2362,3587,306,3690,3245,1542,3077,2427,1691,2478,2118,2985,3490,2438,539,2305,983,
-129,1754,355,4201,2386,827,2923,104,1773,2838,2771,411,2905,3919,376,767,122,1114,828,2422,1817,3506,266,3460,1007,1609,4998,945,2612,4429,2274,726,1247,1964,2914,2199,2070,4002,4108,657,3323,1422,579,455,2764,4737,1222,2895,1670,824,1223,1487,2525,558,861,3080,598,2659,2515,1967,752,2583,2376,2214,4180,977,704,2464,4999,2622,4109,1210,2961,819,1541,142,2284,44,418,457,1126,3730,4347,4626,1644,1876,3671,1864,302,1063,5694,624,723,1984,3745,1314,1676,2488,1610,1449,3558,3569,2166,2098,409,1011,2325,
-3704,2306,818,1732,1383,1824,1844,3757,999,2705,3497,1216,1423,2683,2426,2954,2501,2726,2229,1475,2554,5064,1971,1794,1666,2014,1343,783,724,191,2434,1354,2220,5065,1763,2752,2472,4152,131,175,2885,3434,92,1466,4920,2616,3871,3872,3866,128,1551,1632,669,1854,3682,4691,4125,1230,188,2973,3290,1302,1213,560,3266,917,763,3909,3249,1760,868,1958,764,1782,2097,145,2277,3774,4462,64,1491,3062,971,2132,3606,2442,221,1226,1617,218,323,1185,3207,3147,571,619,1473,1005,1744,2281,449,1887,2396,3685,275,375,
-3816,1743,3844,3731,845,1983,2350,4210,1377,773,967,3499,3052,3743,2725,4007,1697,1022,3943,1464,3264,2855,2722,1952,1029,2839,2467,84,4383,2215,820,1391,2015,2448,3672,377,1948,2168,797,2545,3536,2578,2645,94,2874,1678,405,1259,3071,771,546,1315,470,1243,3083,895,2468,981,969,2037,846,4181,653,1276,2928,14,2594,557,3007,2474,156,902,1338,1740,2574,537,2518,973,2282,2216,2433,1928,138,2903,1293,2631,1612,646,3457,839,2935,111,496,2191,2847,589,3186,149,3994,2060,4031,2641,4067,3145,1870,37,3597,2136,
-1025,2051,3009,3383,3549,1121,1016,3261,1301,251,2446,2599,2153,872,3246,637,334,3705,831,884,921,3065,3140,4092,2198,1944,246,2964,108,2045,1152,1921,2308,1031,203,3173,4170,1907,3890,810,1401,2003,1690,506,647,1242,2828,1761,1649,3208,2249,1589,3709,2931,5156,1708,498,666,2613,834,3817,1231,184,2851,1124,883,3197,2261,3710,1765,1553,2658,1178,2639,2351,93,1193,942,2538,2141,4402,235,1821,870,1591,2192,1709,1871,3341,1618,4126,2595,2334,603,651,69,701,268,2662,3411,2555,1380,1606,503,448,254,2371,
-2646,574,1187,2309,1770,322,2235,1292,1801,305,566,1133,229,2067,2057,706,167,483,2002,2672,3295,1820,3561,3067,316,378,2746,3452,1112,136,1981,507,1651,2917,1117,285,4591,182,2580,3522,1304,335,3303,1835,2504,1795,1792,2248,674,1018,2106,2449,1857,2292,2845,976,3047,1781,2600,2727,1389,1281,52,3152,153,265,3950,672,3485,3951,4463,430,1183,365,278,2169,27,1407,1336,2304,209,1340,1730,2202,1852,2403,2883,979,1737,1062,631,2829,2542,3876,2592,825,2086,2226,3048,3625,352,1417,3724,542,991,431,1351,3938,
-1861,2294,826,1361,2927,3142,3503,1738,463,2462,2723,582,1916,1595,2808,400,3845,3891,2868,3621,2254,58,2492,1123,910,2160,2614,1372,1603,1196,1072,3385,1700,3267,1980,696,480,2430,920,799,1570,2920,1951,2041,4047,2540,1321,4223,2469,3562,2228,1271,2602,401,2833,3351,2575,5157,907,2312,1256,410,263,3507,1582,996,678,1849,2316,1480,908,3545,2237,703,2322,667,1826,2849,1531,2604,2999,2407,3146,2151,2630,1786,3711,469,3542,497,3899,2409,858,837,4446,3393,1274,786,620,1845,2001,3311,484,308,3367,1204,
-1815,3691,2332,1532,2557,1842,2020,2724,1927,2333,4440,567,22,1673,2728,4475,1987,1858,1144,1597,101,1832,3601,12,974,3783,4391,951,1412,1,3720,453,4608,4041,528,1041,1027,3230,2628,1129,875,1051,3291,1203,2262,1069,2860,2799,2149,2615,3278,144,1758,3040,31,475,1680,366,2685,3184,311,1642,4008,2466,5036,1593,1493,2809,216,1420,1668,233,304,2128,3284,232,1429,1768,1040,2008,3407,2740,2967,2543,242,2133,778,1565,2022,2620,505,2189,2756,1098,2273,372,1614,708,553,2846,2094,2278,169,3626,2835,4161,228,
-2674,3165,809,1454,1309,466,1705,1095,900,3423,880,2667,3751,5258,2317,3109,2571,4317,2766,1503,1342,866,4447,1118,63,2076,314,1881,1348,1061,172,978,3515,1747,532,511,3970,6,601,905,2699,3300,1751,276,1467,3725,2668,65,4239,2544,2779,2556,1604,578,2451,1802,992,2331,2624,1320,3446,713,1513,1013,103,2786,2447,1661,886,1702,916,654,3574,2031,1556,751,2178,2821,2179,1498,1538,2176,271,914,2251,2080,1325,638,1953,2937,3877,2432,2754,95,3265,1716,260,1227,4083,775,106,1357,3254,426,1607,555,2480,772,
-1985,244,2546,474,495,1046,2611,1851,2061,71,2089,1675,2590,742,3758,2843,3222,1433,267,2180,2576,2826,2233,2092,3913,2435,956,1745,3075,856,2113,1116,451,3,1988,2896,1398,993,2463,1878,2049,1341,2718,2721,2870,2108,712,2904,4363,2753,2324,277,2872,2349,2649,384,987,435,691,3E3,922,164,3939,652,1500,1184,4153,2482,3373,2165,4848,2335,3775,3508,3154,2806,2830,1554,2102,1664,2530,1434,2408,893,1547,2623,3447,2832,2242,2532,3169,2856,3223,2078,49,3770,3469,462,318,656,2259,3250,3069,679,1629,2758,344,
-1138,1104,3120,1836,1283,3115,2154,1437,4448,934,759,1999,794,2862,1038,533,2560,1722,2342,855,2626,1197,1663,4476,3127,85,4240,2528,25,1111,1181,3673,407,3470,4561,2679,2713,768,1925,2841,3986,1544,1165,932,373,1240,2146,1930,2673,721,4766,354,4333,391,2963,187,61,3364,1442,1102,330,1940,1767,341,3809,4118,393,2496,2062,2211,105,331,300,439,913,1332,626,379,3304,1557,328,689,3952,309,1555,931,317,2517,3027,325,569,686,2107,3084,60,1042,1333,2794,264,3177,4014,1628,258,3712,7,4464,1176,1043,1778,
-683,114,1975,78,1492,383,1886,510,386,645,5291,2891,2069,3305,4138,3867,2939,2603,2493,1935,1066,1848,3588,1015,1282,1289,4609,697,1453,3044,2666,3611,1856,2412,54,719,1330,568,3778,2459,1748,788,492,551,1191,1E3,488,3394,3763,282,1799,348,2016,1523,3155,2390,1049,382,2019,1788,1170,729,2968,3523,897,3926,2785,2938,3292,350,2319,3238,1718,1717,2655,3453,3143,4465,161,2889,2980,2009,1421,56,1908,1640,2387,2232,1917,1874,2477,4921,148,83,3438,592,4245,2882,1822,1055,741,115,1496,1624,381,1638,4592,
-1020,516,3214,458,947,4575,1432,211,1514,2926,1865,2142,189,852,1221,1400,1486,882,2299,4036,351,28,1122,700,6479,6480,6481,6482,6483,5508,6484,3900,3414,3974,4441,4024,3537,4037,5628,5099,3633,6485,3148,6486,3636,5509,3257,5510,5973,5445,5872,4941,4403,3174,4627,5873,6276,2286,4230,5446,5874,5122,6102,6103,4162,5447,5123,5323,4849,6277,3980,3851,5066,4246,5774,5067,6278,3001,2807,5695,3346,5775,5974,5158,5448,6487,5975,5976,5776,3598,6279,5696,4806,4211,4154,6280,6488,6489,6490,6281,4212,5037,3374,
-4171,6491,4562,4807,4722,4827,5977,6104,4532,4079,5159,5324,5160,4404,3858,5359,5875,3975,4288,4610,3486,4512,5325,3893,5360,6282,6283,5560,2522,4231,5978,5186,5449,2569,3878,6284,5401,3578,4415,6285,4656,5124,5979,2506,4247,4449,3219,3417,4334,4969,4329,6492,4576,4828,4172,4416,4829,5402,6286,3927,3852,5361,4369,4830,4477,4867,5876,4173,6493,6105,4657,6287,6106,5877,5450,6494,4155,4868,5451,3700,5629,4384,6288,6289,5878,3189,4881,6107,6290,6495,4513,6496,4692,4515,4723,5100,3356,6497,6291,3810,4080,
-5561,3570,4430,5980,6498,4355,5697,6499,4724,6108,6109,3764,4050,5038,5879,4093,3226,6292,5068,5217,4693,3342,5630,3504,4831,4377,4466,4309,5698,4431,5777,6293,5778,4272,3706,6110,5326,3752,4676,5327,4273,5403,4767,5631,6500,5699,5880,3475,5039,6294,5562,5125,4348,4301,4482,4068,5126,4593,5700,3380,3462,5981,5563,3824,5404,4970,5511,3825,4738,6295,6501,5452,4516,6111,5881,5564,6502,6296,5982,6503,4213,4163,3454,6504,6112,4009,4450,6113,4658,6297,6114,3035,6505,6115,3995,4904,4739,4563,4942,4110,5040,
-3661,3928,5362,3674,6506,5292,3612,4791,5565,4149,5983,5328,5259,5021,4725,4577,4564,4517,4364,6298,5405,4578,5260,4594,4156,4157,5453,3592,3491,6507,5127,5512,4709,4922,5984,5701,4726,4289,6508,4015,6116,5128,4628,3424,4241,5779,6299,4905,6509,6510,5454,5702,5780,6300,4365,4923,3971,6511,5161,3270,3158,5985,4100,867,5129,5703,6117,5363,3695,3301,5513,4467,6118,6512,5455,4232,4242,4629,6513,3959,4478,6514,5514,5329,5986,4850,5162,5566,3846,4694,6119,5456,4869,5781,3779,6301,5704,5987,5515,4710,6302,
-5882,6120,4392,5364,5705,6515,6121,6516,6517,3736,5988,5457,5989,4695,2457,5883,4551,5782,6303,6304,6305,5130,4971,6122,5163,6123,4870,3263,5365,3150,4871,6518,6306,5783,5069,5706,3513,3498,4409,5330,5632,5366,5458,5459,3991,5990,4502,3324,5991,5784,3696,4518,5633,4119,6519,4630,5634,4417,5707,4832,5992,3418,6124,5993,5567,4768,5218,6520,4595,3458,5367,6125,5635,6126,4202,6521,4740,4924,6307,3981,4069,4385,6308,3883,2675,4051,3834,4302,4483,5568,5994,4972,4101,5368,6309,5164,5884,3922,6127,6522,6523,
-5261,5460,5187,4164,5219,3538,5516,4111,3524,5995,6310,6311,5369,3181,3386,2484,5188,3464,5569,3627,5708,6524,5406,5165,4677,4492,6312,4872,4851,5885,4468,5996,6313,5709,5710,6128,2470,5886,6314,5293,4882,5785,3325,5461,5101,6129,5711,5786,6525,4906,6526,6527,4418,5887,5712,4808,2907,3701,5713,5888,6528,3765,5636,5331,6529,6530,3593,5889,3637,4943,3692,5714,5787,4925,6315,6130,5462,4405,6131,6132,6316,5262,6531,6532,5715,3859,5716,5070,4696,5102,3929,5788,3987,4792,5997,6533,6534,3920,4809,5E3,5998,
-6535,2974,5370,6317,5189,5263,5717,3826,6536,3953,5001,4883,3190,5463,5890,4973,5999,4741,6133,6134,3607,5570,6E3,4711,3362,3630,4552,5041,6318,6001,2950,2953,5637,4646,5371,4944,6002,2044,4120,3429,6319,6537,5103,4833,6538,6539,4884,4647,3884,6003,6004,4758,3835,5220,5789,4565,5407,6540,6135,5294,4697,4852,6320,6321,3206,4907,6541,6322,4945,6542,6136,6543,6323,6005,4631,3519,6544,5891,6545,5464,3784,5221,6546,5571,4659,6547,6324,6137,5190,6548,3853,6549,4016,4834,3954,6138,5332,3827,4017,3210,3546,
-4469,5408,5718,3505,4648,5790,5131,5638,5791,5465,4727,4318,6325,6326,5792,4553,4010,4698,3439,4974,3638,4335,3085,6006,5104,5042,5166,5892,5572,6327,4356,4519,5222,5573,5333,5793,5043,6550,5639,5071,4503,6328,6139,6551,6140,3914,3901,5372,6007,5640,4728,4793,3976,3836,4885,6552,4127,6553,4451,4102,5002,6554,3686,5105,6555,5191,5072,5295,4611,5794,5296,6556,5893,5264,5894,4975,5466,5265,4699,4976,4370,4056,3492,5044,4886,6557,5795,4432,4769,4357,5467,3940,4660,4290,6141,4484,4770,4661,3992,6329,4025,
-4662,5022,4632,4835,4070,5297,4663,4596,5574,5132,5409,5895,6142,4504,5192,4664,5796,5896,3885,5575,5797,5023,4810,5798,3732,5223,4712,5298,4084,5334,5468,6143,4052,4053,4336,4977,4794,6558,5335,4908,5576,5224,4233,5024,4128,5469,5225,4873,6008,5045,4729,4742,4633,3675,4597,6559,5897,5133,5577,5003,5641,5719,6330,6560,3017,2382,3854,4406,4811,6331,4393,3964,4946,6561,2420,3722,6562,4926,4378,3247,1736,4442,6332,5134,6333,5226,3996,2918,5470,4319,4003,4598,4743,4744,4485,3785,3902,5167,5004,5373,4394,
-5898,6144,4874,1793,3997,6334,4085,4214,5106,5642,4909,5799,6009,4419,4189,3330,5899,4165,4420,5299,5720,5227,3347,6145,4081,6335,2876,3930,6146,3293,3786,3910,3998,5900,5300,5578,2840,6563,5901,5579,6147,3531,5374,6564,6565,5580,4759,5375,6566,6148,3559,5643,6336,6010,5517,6337,6338,5721,5902,3873,6011,6339,6567,5518,3868,3649,5722,6568,4771,4947,6569,6149,4812,6570,2853,5471,6340,6341,5644,4795,6342,6012,5723,6343,5724,6013,4349,6344,3160,6150,5193,4599,4514,4493,5168,4320,6345,4927,3666,4745,5169,
-5903,5005,4928,6346,5725,6014,4730,4203,5046,4948,3395,5170,6015,4150,6016,5726,5519,6347,5047,3550,6151,6348,4197,4310,5904,6571,5581,2965,6152,4978,3960,4291,5135,6572,5301,5727,4129,4026,5905,4853,5728,5472,6153,6349,4533,2700,4505,5336,4678,3583,5073,2994,4486,3043,4554,5520,6350,6017,5800,4487,6351,3931,4103,5376,6352,4011,4321,4311,4190,5136,6018,3988,3233,4350,5906,5645,4198,6573,5107,3432,4191,3435,5582,6574,4139,5410,6353,5411,3944,5583,5074,3198,6575,6354,4358,6576,5302,4600,5584,5194,5412,
-6577,6578,5585,5413,5303,4248,5414,3879,4433,6579,4479,5025,4854,5415,6355,4760,4772,3683,2978,4700,3797,4452,3965,3932,3721,4910,5801,6580,5195,3551,5907,3221,3471,3029,6019,3999,5908,5909,5266,5267,3444,3023,3828,3170,4796,5646,4979,4259,6356,5647,5337,3694,6357,5648,5338,4520,4322,5802,3031,3759,4071,6020,5586,4836,4386,5048,6581,3571,4679,4174,4949,6154,4813,3787,3402,3822,3958,3215,3552,5268,4387,3933,4950,4359,6021,5910,5075,3579,6358,4234,4566,5521,6359,3613,5049,6022,5911,3375,3702,3178,4911,
-5339,4521,6582,6583,4395,3087,3811,5377,6023,6360,6155,4027,5171,5649,4421,4249,2804,6584,2270,6585,4E3,4235,3045,6156,5137,5729,4140,4312,3886,6361,4330,6157,4215,6158,3500,3676,4929,4331,3713,4930,5912,4265,3776,3368,5587,4470,4855,3038,4980,3631,6159,6160,4132,4680,6161,6362,3923,4379,5588,4255,6586,4121,6587,6363,4649,6364,3288,4773,4774,6162,6024,6365,3543,6588,4274,3107,3737,5050,5803,4797,4522,5589,5051,5730,3714,4887,5378,4001,4523,6163,5026,5522,4701,4175,2791,3760,6589,5473,4224,4133,3847,
-4814,4815,4775,3259,5416,6590,2738,6164,6025,5304,3733,5076,5650,4816,5590,6591,6165,6592,3934,5269,6593,3396,5340,6594,5804,3445,3602,4042,4488,5731,5732,3525,5591,4601,5196,6166,6026,5172,3642,4612,3202,4506,4798,6366,3818,5108,4303,5138,5139,4776,3332,4304,2915,3415,4434,5077,5109,4856,2879,5305,4817,6595,5913,3104,3144,3903,4634,5341,3133,5110,5651,5805,6167,4057,5592,2945,4371,5593,6596,3474,4182,6367,6597,6168,4507,4279,6598,2822,6599,4777,4713,5594,3829,6169,3887,5417,6170,3653,5474,6368,4216,
-2971,5228,3790,4579,6369,5733,6600,6601,4951,4746,4555,6602,5418,5475,6027,3400,4665,5806,6171,4799,6028,5052,6172,3343,4800,4747,5006,6370,4556,4217,5476,4396,5229,5379,5477,3839,5914,5652,5807,4714,3068,4635,5808,6173,5342,4192,5078,5419,5523,5734,6174,4557,6175,4602,6371,6176,6603,5809,6372,5735,4260,3869,5111,5230,6029,5112,6177,3126,4681,5524,5915,2706,3563,4748,3130,6178,4018,5525,6604,6605,5478,4012,4837,6606,4534,4193,5810,4857,3615,5479,6030,4082,3697,3539,4086,5270,3662,4508,4931,5916,4912,
-5811,5027,3888,6607,4397,3527,3302,3798,2775,2921,2637,3966,4122,4388,4028,4054,1633,4858,5079,3024,5007,3982,3412,5736,6608,3426,3236,5595,3030,6179,3427,3336,3279,3110,6373,3874,3039,5080,5917,5140,4489,3119,6374,5812,3405,4494,6031,4666,4141,6180,4166,6032,5813,4981,6609,5081,4422,4982,4112,3915,5653,3296,3983,6375,4266,4410,5654,6610,6181,3436,5082,6611,5380,6033,3819,5596,4535,5231,5306,5113,6612,4952,5918,4275,3113,6613,6376,6182,6183,5814,3073,4731,4838,5008,3831,6614,4888,3090,3848,4280,5526,
-5232,3014,5655,5009,5737,5420,5527,6615,5815,5343,5173,5381,4818,6616,3151,4953,6617,5738,2796,3204,4360,2989,4281,5739,5174,5421,5197,3132,5141,3849,5142,5528,5083,3799,3904,4839,5480,2880,4495,3448,6377,6184,5271,5919,3771,3193,6034,6035,5920,5010,6036,5597,6037,6378,6038,3106,5422,6618,5423,5424,4142,6619,4889,5084,4890,4313,5740,6620,3437,5175,5307,5816,4199,5198,5529,5817,5199,5656,4913,5028,5344,3850,6185,2955,5272,5011,5818,4567,4580,5029,5921,3616,5233,6621,6622,6186,4176,6039,6379,6380,3352,
-5200,5273,2908,5598,5234,3837,5308,6623,6624,5819,4496,4323,5309,5201,6625,6626,4983,3194,3838,4167,5530,5922,5274,6381,6382,3860,3861,5599,3333,4292,4509,6383,3553,5481,5820,5531,4778,6187,3955,3956,4324,4389,4218,3945,4325,3397,2681,5923,4779,5085,4019,5482,4891,5382,5383,6040,4682,3425,5275,4094,6627,5310,3015,5483,5657,4398,5924,3168,4819,6628,5925,6629,5532,4932,4613,6041,6630,4636,6384,4780,4204,5658,4423,5821,3989,4683,5822,6385,4954,6631,5345,6188,5425,5012,5384,3894,6386,4490,4104,6632,5741,
-5053,6633,5823,5926,5659,5660,5927,6634,5235,5742,5824,4840,4933,4820,6387,4859,5928,4955,6388,4143,3584,5825,5346,5013,6635,5661,6389,5014,5484,5743,4337,5176,5662,6390,2836,6391,3268,6392,6636,6042,5236,6637,4158,6638,5744,5663,4471,5347,3663,4123,5143,4293,3895,6639,6640,5311,5929,5826,3800,6189,6393,6190,5664,5348,3554,3594,4749,4603,6641,5385,4801,6043,5827,4183,6642,5312,5426,4761,6394,5665,6191,4715,2669,6643,6644,5533,3185,5427,5086,5930,5931,5386,6192,6044,6645,4781,4013,5745,4282,4435,5534,
-4390,4267,6045,5746,4984,6046,2743,6193,3501,4087,5485,5932,5428,4184,4095,5747,4061,5054,3058,3862,5933,5600,6646,5144,3618,6395,3131,5055,5313,6396,4650,4956,3855,6194,3896,5202,4985,4029,4225,6195,6647,5828,5486,5829,3589,3002,6648,6397,4782,5276,6649,6196,6650,4105,3803,4043,5237,5830,6398,4096,3643,6399,3528,6651,4453,3315,4637,6652,3984,6197,5535,3182,3339,6653,3096,2660,6400,6654,3449,5934,4250,4236,6047,6401,5831,6655,5487,3753,4062,5832,6198,6199,6656,3766,6657,3403,4667,6048,6658,4338,2897,
-5833,3880,2797,3780,4326,6659,5748,5015,6660,5387,4351,5601,4411,6661,3654,4424,5935,4339,4072,5277,4568,5536,6402,6662,5238,6663,5349,5203,6200,5204,6201,5145,4536,5016,5056,4762,5834,4399,4957,6202,6403,5666,5749,6664,4340,6665,5936,5177,5667,6666,6667,3459,4668,6404,6668,6669,4543,6203,6670,4276,6405,4480,5537,6671,4614,5205,5668,6672,3348,2193,4763,6406,6204,5937,5602,4177,5669,3419,6673,4020,6205,4443,4569,5388,3715,3639,6407,6049,4058,6206,6674,5938,4544,6050,4185,4294,4841,4651,4615,5488,6207,
-6408,6051,5178,3241,3509,5835,6208,4958,5836,4341,5489,5278,6209,2823,5538,5350,5206,5429,6675,4638,4875,4073,3516,4684,4914,4860,5939,5603,5389,6052,5057,3237,5490,3791,6676,6409,6677,4821,4915,4106,5351,5058,4243,5539,4244,5604,4842,4916,5239,3028,3716,5837,5114,5605,5390,5940,5430,6210,4332,6678,5540,4732,3667,3840,6053,4305,3408,5670,5541,6410,2744,5240,5750,6679,3234,5606,6680,5607,5671,3608,4283,4159,4400,5352,4783,6681,6411,6682,4491,4802,6211,6412,5941,6413,6414,5542,5751,6683,4669,3734,5942,
-6684,6415,5943,5059,3328,4670,4144,4268,6685,6686,6687,6688,4372,3603,6689,5944,5491,4373,3440,6416,5543,4784,4822,5608,3792,4616,5838,5672,3514,5391,6417,4892,6690,4639,6691,6054,5673,5839,6055,6692,6056,5392,6212,4038,5544,5674,4497,6057,6693,5840,4284,5675,4021,4545,5609,6418,4454,6419,6213,4113,4472,5314,3738,5087,5279,4074,5610,4959,4063,3179,4750,6058,6420,6214,3476,4498,4716,5431,4960,4685,6215,5241,6694,6421,6216,6695,5841,5945,6422,3748,5946,5179,3905,5752,5545,5947,4374,6217,4455,6423,4412,
-6218,4803,5353,6696,3832,5280,6219,4327,4702,6220,6221,6059,4652,5432,6424,3749,4751,6425,5753,4986,5393,4917,5948,5030,5754,4861,4733,6426,4703,6697,6222,4671,5949,4546,4961,5180,6223,5031,3316,5281,6698,4862,4295,4934,5207,3644,6427,5842,5950,6428,6429,4570,5843,5282,6430,6224,5088,3239,6060,6699,5844,5755,6061,6431,2701,5546,6432,5115,5676,4039,3993,3327,4752,4425,5315,6433,3941,6434,5677,4617,4604,3074,4581,6225,5433,6435,6226,6062,4823,5756,5116,6227,3717,5678,4717,5845,6436,5679,5846,6063,5847,
-6064,3977,3354,6437,3863,5117,6228,5547,5394,4499,4524,6229,4605,6230,4306,4500,6700,5951,6065,3693,5952,5089,4366,4918,6701,6231,5548,6232,6702,6438,4704,5434,6703,6704,5953,4168,6705,5680,3420,6706,5242,4407,6066,3812,5757,5090,5954,4672,4525,3481,5681,4618,5395,5354,5316,5955,6439,4962,6707,4526,6440,3465,4673,6067,6441,5682,6708,5435,5492,5758,5683,4619,4571,4674,4804,4893,4686,5493,4753,6233,6068,4269,6442,6234,5032,4705,5146,5243,5208,5848,6235,6443,4963,5033,4640,4226,6236,5849,3387,6444,6445,
-4436,4437,5850,4843,5494,4785,4894,6709,4361,6710,5091,5956,3331,6237,4987,5549,6069,6711,4342,3517,4473,5317,6070,6712,6071,4706,6446,5017,5355,6713,6714,4988,5436,6447,4734,5759,6715,4735,4547,4456,4754,6448,5851,6449,6450,3547,5852,5318,6451,6452,5092,4205,6716,6238,4620,4219,5611,6239,6072,4481,5760,5957,5958,4059,6240,6453,4227,4537,6241,5761,4030,4186,5244,5209,3761,4457,4876,3337,5495,5181,6242,5959,5319,5612,5684,5853,3493,5854,6073,4169,5613,5147,4895,6074,5210,6717,5182,6718,3830,6243,2798,
-3841,6075,6244,5855,5614,3604,4606,5496,5685,5118,5356,6719,6454,5960,5357,5961,6720,4145,3935,4621,5119,5962,4261,6721,6455,4786,5963,4375,4582,6245,6246,6247,6076,5437,4877,5856,3376,4380,6248,4160,6722,5148,6456,5211,6457,6723,4718,6458,6724,6249,5358,4044,3297,6459,6250,5857,5615,5497,5245,6460,5498,6725,6251,6252,5550,3793,5499,2959,5396,6461,6462,4572,5093,5500,5964,3806,4146,6463,4426,5762,5858,6077,6253,4755,3967,4220,5965,6254,4989,5501,6464,4352,6726,6078,4764,2290,5246,3906,5438,5283,3767,
-4964,2861,5763,5094,6255,6256,4622,5616,5859,5860,4707,6727,4285,4708,4824,5617,6257,5551,4787,5212,4965,4935,4687,6465,6728,6466,5686,6079,3494,4413,2995,5247,5966,5618,6729,5967,5764,5765,5687,5502,6730,6731,6080,5397,6467,4990,6258,6732,4538,5060,5619,6733,4719,5688,5439,5018,5149,5284,5503,6734,6081,4607,6259,5120,3645,5861,4583,6260,4584,4675,5620,4098,5440,6261,4863,2379,3306,4585,5552,5689,4586,5285,6735,4864,6736,5286,6082,6737,4623,3010,4788,4381,4558,5621,4587,4896,3698,3161,5248,4353,4045,
-6262,3754,5183,4588,6738,6263,6739,6740,5622,3936,6741,6468,6742,6264,5095,6469,4991,5968,6743,4992,6744,6083,4897,6745,4256,5766,4307,3108,3968,4444,5287,3889,4343,6084,4510,6085,4559,6086,4898,5969,6746,5623,5061,4919,5249,5250,5504,5441,6265,5320,4878,3242,5862,5251,3428,6087,6747,4237,5624,5442,6266,5553,4539,6748,2585,3533,5398,4262,6088,5150,4736,4438,6089,6267,5505,4966,6749,6268,6750,6269,5288,5554,3650,6090,6091,4624,6092,5690,6751,5863,4270,5691,4277,5555,5864,6752,5692,4720,4865,6470,5151,
-4688,4825,6753,3094,6754,6471,3235,4653,6755,5213,5399,6756,3201,4589,5865,4967,6472,5866,6473,5019,3016,6757,5321,4756,3957,4573,6093,4993,5767,4721,6474,6758,5625,6759,4458,6475,6270,6760,5556,4994,5214,5252,6271,3875,5768,6094,5034,5506,4376,5769,6761,2120,6476,5253,5770,6762,5771,5970,3990,5971,5557,5558,5772,6477,6095,2787,4641,5972,5121,6096,6097,6272,6763,3703,5867,5507,6273,4206,6274,4789,6098,6764,3619,3646,3833,3804,2394,3788,4936,3978,4866,4899,6099,6100,5559,6478,6765,3599,5868,6101,5869,
-5870,6275,6766,4527,6767];!0},{"./init":20}],17:[function(b,a,d){!function(a){a.GB2312Prober=function(){a.MultiByteCharSetProber.apply(this);this.getCharsetName=function(){return"GB2312"};this._mCodingSM=new a.CodingStateMachine(a.GB2312SMModel);this._mDistributionAnalyzer=new a.GB2312DistributionAnalysis;this.reset()};a.GB2312Prober.prototype=new a.MultiByteCharSetProber}(b("./init"))},{"./init":20}],18:[function(b,a,d){!function(a){a.HebrewProber=function(){a.CharSetProber.apply(this);this.reset=
-function(){this._mFinalCharVisualScore=this._mFinalCharLogicalScore=0;this._mBeforePrev=this._mPrev=" "};this.setModelProbers=function(a,b){this._mLogicalProber=a;this._mVisualProber=b};this.isFinal=function(a){return-1!=["\u00ea","\u00ed","\u00ef","\u00f3","\u00f5"].indexOf(a)};this.isNonFinal=function(a){return-1!=["\u00eb","\u00ee","\u00f0","\u00f4"].indexOf(a)};this.feed=function(b){if(this.getState()==a.Constants.notMe)return a.Constants.notMe;b=this.filterHighBitOnly(b);for(var f=0,c;f<b.length;f++)c=
-b[f]," "==c?" "!=this._mBeforePrev&&(this.isFinal(this._mPrev)?this._mFinalCharLogicalScore++:this.isNonFinal(this._mPrev)&&this._mFinalCharVisualScore++):" "==this._mBeforePrev&&this.isFinal(this._mPrev)&&" "!=c&&this._mFinalCharVisualScore++,this._mBeforePrev=this._mPrev,this._mPrev=c;return a.Constants.detecting};this.getCharsetName=function(){var a=this._mFinalCharLogicalScore-this._mFinalCharVisualScore;if(5<=a)return"windows-1255";if(-5>=a)return"ISO-8859-8";var b=this._mLogicalProber.getConfidence()-
-this._mVisualProber.getConfidence();return.01<b?"windows-1255":-.01>b||0>a?"ISO-8859-8":"windows-1255"};this.getState=function(){return this._mLogicalProber.getState()==a.Constants.notMe&&this._mVisualProber.getState()==a.Constants.notMe?a.Constants.notMe:a.Constants.detecting};this._mVisualProber=this._mLogicalProber=null;this.reset()};a.HebrewProber.prototype=new a.CharSetProber;Array.prototype.indexOf||(Array.prototype.indexOf=function(a,b){var h=this.length>>>0,e=Number(b)||0,e=0>e?Math.ceil(e):
-Math.floor(e);for(0>e&&(e+=h);e<h;e++)if(e in this&&this[e]===a)return e;return-1})}(b("./init"))},{"./init":20}],19:[function(b,a,d){a.exports=b("./init")},{"./init":20}],20:[function(b,a,d){b("./constants");b("./codingstatemachine");b("./escsm");b("./mbcssm");b("./charsetprober");b("./mbcharsetprober");b("./jisfreq");b("./gb2312freq");b("./euckrfreq");b("./big5freq");b("./euctwfreq");b("./chardistribution");b("./jpcntx");b("./sjisprober");b("./utf8prober");b("./charsetgroupprober");b("./eucjpprober");
-b("./gb2312prober");b("./euckrprober");b("./big5prober");b("./euctwprober");b("./mbcsgroupprober");b("./sbcharsetprober");b("./langgreekmodel");b("./langthaimodel");b("./langbulgarianmodel");b("./langcyrillicmodel");b("./hebrewprober");b("./langhebrewmodel");b("./langhungarianmodel");b("./sbcsgroupprober");b("./latin1prober");b("./escprober");b("./universaldetector");d.VERSION="1.4.1";d.detect=function(a){var b=new d.UniversalDetector;b.reset();"function"==typeof Buffer&&a instanceof Buffer?b.feed(a.toString("binary")):
-b.feed(a);b.close();return b.result};d.log=function(){console.log.apply(console,arguments)}},{"./big5freq":2,"./big5prober":3,"./chardistribution":4,"./charsetgroupprober":5,"./charsetprober":6,"./codingstatemachine":7,"./constants":8,"./escprober":9,"./escsm":10,"./eucjpprober":11,"./euckrfreq":12,"./euckrprober":13,"./euctwfreq":14,"./euctwprober":15,"./gb2312freq":16,"./gb2312prober":17,"./hebrewprober":18,"./jisfreq":21,"./jpcntx":22,"./langbulgarianmodel":23,"./langcyrillicmodel":24,"./langgreekmodel":25,
-"./langhebrewmodel":26,"./langhungarianmodel":27,"./langthaimodel":28,"./latin1prober":29,"./mbcharsetprober":30,"./mbcsgroupprober":31,"./mbcssm":32,"./sbcharsetprober":33,"./sbcsgroupprober":34,"./sjisprober":35,"./universaldetector":36,"./utf8prober":37}],21:[function(b,a,d){b=b("./init");b.JIS_TYPICAL_DISTRIBUTION_RATIO=3;b.JIS_TABLE_SIZE=4368;b.JISCharToFreqOrder=[40,1,6,182,152,180,295,2127,285,381,3295,4304,3068,4606,3165,3510,3511,1822,2785,4607,1193,2226,5070,4608,171,2996,1247,18,179,5071,
-856,1661,1262,5072,619,127,3431,3512,3230,1899,1700,232,228,1294,1298,284,283,2041,2042,1061,1062,48,49,44,45,433,434,1040,1041,996,787,2997,1255,4305,2108,4609,1684,1648,5073,5074,5075,5076,5077,5078,3687,5079,4610,5080,3927,3928,5081,3296,3432,290,2285,1471,2187,5082,2580,2825,1303,2140,1739,1445,2691,3375,1691,3297,4306,4307,4611,452,3376,1182,2713,3688,3069,4308,5083,5084,5085,5086,5087,5088,5089,5090,5091,5092,5093,5094,5095,5096,5097,5098,5099,5100,5101,5102,5103,5104,5105,5106,5107,5108,5109,
-5110,5111,5112,4097,5113,5114,5115,5116,5117,5118,5119,5120,5121,5122,5123,5124,5125,5126,5127,5128,5129,5130,5131,5132,5133,5134,5135,5136,5137,5138,5139,5140,5141,5142,5143,5144,5145,5146,5147,5148,5149,5150,5151,5152,4612,5153,5154,5155,5156,5157,5158,5159,5160,5161,5162,5163,5164,5165,5166,5167,5168,5169,5170,5171,5172,5173,5174,5175,1472,598,618,820,1205,1309,1412,1858,1307,1692,5176,5177,5178,5179,5180,5181,5182,1142,1452,1234,1172,1875,2043,2149,1793,1382,2973,925,2404,1067,1241,960,1377,2935,
-1491,919,1217,1865,2030,1406,1499,2749,4098,5183,5184,5185,5186,5187,5188,2561,4099,3117,1804,2049,3689,4309,3513,1663,5189,3166,3118,3298,1587,1561,3433,5190,3119,1625,2998,3299,4613,1766,3690,2786,4614,5191,5192,5193,5194,2161,26,3377,2,3929,20,3691,47,4100,50,17,16,35,268,27,243,42,155,24,154,29,184,4,91,14,92,53,396,33,289,9,37,64,620,21,39,321,5,12,11,52,13,3,208,138,0,7,60,526,141,151,1069,181,275,1591,83,132,1475,126,331,829,15,69,160,59,22,157,55,1079,312,109,38,23,25,10,19,79,5195,61,382,
-1124,8,30,5196,5197,5198,5199,5200,5201,5202,5203,5204,5205,5206,89,62,74,34,2416,112,139,196,271,149,84,607,131,765,46,88,153,683,76,874,101,258,57,80,32,364,121,1508,169,1547,68,235,145,2999,41,360,3027,70,63,31,43,259,262,1383,99,533,194,66,93,846,217,192,56,106,58,565,280,272,311,256,146,82,308,71,100,128,214,655,110,261,104,1140,54,51,36,87,67,3070,185,2618,2936,2020,28,1066,2390,2059,5207,5208,5209,5210,5211,5212,5213,5214,5215,5216,4615,5217,5218,5219,5220,5221,5222,5223,5224,5225,5226,5227,
-5228,5229,5230,5231,5232,5233,5234,5235,5236,3514,5237,5238,5239,5240,5241,5242,5243,5244,2297,2031,4616,4310,3692,5245,3071,5246,3598,5247,4617,3231,3515,5248,4101,4311,4618,3808,4312,4102,5249,4103,4104,3599,5250,5251,5252,5253,5254,5255,5256,5257,5258,5259,5260,5261,5262,5263,5264,5265,5266,5267,5268,5269,5270,5271,5272,5273,5274,5275,5276,5277,5278,5279,5280,5281,5282,5283,5284,5285,5286,5287,5288,5289,5290,5291,5292,5293,5294,5295,5296,5297,5298,5299,5300,5301,5302,5303,5304,5305,5306,5307,5308,
-5309,5310,5311,5312,5313,5314,5315,5316,5317,5318,5319,5320,5321,5322,5323,5324,5325,5326,5327,5328,5329,5330,5331,5332,5333,5334,5335,5336,5337,5338,5339,5340,5341,5342,5343,5344,5345,5346,5347,5348,5349,5350,5351,5352,5353,5354,5355,5356,5357,5358,5359,5360,5361,5362,5363,5364,5365,5366,5367,5368,5369,5370,5371,5372,5373,5374,5375,5376,5377,5378,5379,5380,5381,363,642,2787,2878,2788,2789,2316,3232,2317,3434,2011,165,1942,3930,3931,3932,3933,5382,4619,5383,4620,5384,5385,5386,5387,5388,5389,5390,
-5391,5392,5393,5394,5395,5396,5397,5398,5399,5400,5401,5402,5403,5404,5405,5406,5407,5408,5409,5410,5411,5412,5413,5414,5415,5416,5417,5418,5419,5420,5421,5422,5423,5424,5425,5426,5427,5428,5429,5430,5431,5432,5433,5434,5435,5436,5437,5438,5439,5440,5441,5442,5443,5444,5445,5446,5447,5448,5449,5450,5451,5452,5453,5454,5455,5456,5457,5458,5459,5460,5461,5462,5463,5464,5465,5466,5467,5468,5469,5470,5471,5472,5473,5474,5475,5476,5477,5478,5479,5480,5481,5482,5483,5484,5485,5486,5487,5488,5489,5490,5491,
-5492,5493,5494,5495,5496,5497,5498,5499,5500,5501,5502,5503,5504,5505,5506,5507,5508,5509,5510,5511,5512,5513,5514,5515,5516,5517,5518,5519,5520,5521,5522,5523,5524,5525,5526,5527,5528,5529,5530,5531,5532,5533,5534,5535,5536,5537,5538,5539,5540,5541,5542,5543,5544,5545,5546,5547,5548,5549,5550,5551,5552,5553,5554,5555,5556,5557,5558,5559,5560,5561,5562,5563,5564,5565,5566,5567,5568,5569,5570,5571,5572,5573,5574,5575,5576,5577,5578,5579,5580,5581,5582,5583,5584,5585,5586,5587,5588,5589,5590,5591,5592,
-5593,5594,5595,5596,5597,5598,5599,5600,5601,5602,5603,5604,5605,5606,5607,5608,5609,5610,5611,5612,5613,5614,5615,5616,5617,5618,5619,5620,5621,5622,5623,5624,5625,5626,5627,5628,5629,5630,5631,5632,5633,5634,5635,5636,5637,5638,5639,5640,5641,5642,5643,5644,5645,5646,5647,5648,5649,5650,5651,5652,5653,5654,5655,5656,5657,5658,5659,5660,5661,5662,5663,5664,5665,5666,5667,5668,5669,5670,5671,5672,5673,5674,5675,5676,5677,5678,5679,5680,5681,5682,5683,5684,5685,5686,5687,5688,5689,5690,5691,5692,5693,
-5694,5695,5696,5697,5698,5699,5700,5701,5702,5703,5704,5705,5706,5707,5708,5709,5710,5711,5712,5713,5714,5715,5716,5717,5718,5719,5720,5721,5722,5723,5724,5725,5726,5727,5728,5729,5730,5731,5732,5733,5734,5735,5736,5737,5738,5739,5740,5741,5742,5743,5744,5745,5746,5747,5748,5749,5750,5751,5752,5753,5754,5755,5756,5757,5758,5759,5760,5761,5762,5763,5764,5765,5766,5767,5768,5769,5770,5771,5772,5773,5774,5775,5776,5777,5778,5779,5780,5781,5782,5783,5784,5785,5786,5787,5788,5789,5790,5791,5792,5793,5794,
-5795,5796,5797,5798,5799,5800,5801,5802,5803,5804,5805,5806,5807,5808,5809,5810,5811,5812,5813,5814,5815,5816,5817,5818,5819,5820,5821,5822,5823,5824,5825,5826,5827,5828,5829,5830,5831,5832,5833,5834,5835,5836,5837,5838,5839,5840,5841,5842,5843,5844,5845,5846,5847,5848,5849,5850,5851,5852,5853,5854,5855,5856,5857,5858,5859,5860,5861,5862,5863,5864,5865,5866,5867,5868,5869,5870,5871,5872,5873,5874,5875,5876,5877,5878,5879,5880,5881,5882,5883,5884,5885,5886,5887,5888,5889,5890,5891,5892,5893,5894,5895,
-5896,5897,5898,5899,5900,5901,5902,5903,5904,5905,5906,5907,5908,5909,5910,5911,5912,5913,5914,5915,5916,5917,5918,5919,5920,5921,5922,5923,5924,5925,5926,5927,5928,5929,5930,5931,5932,5933,5934,5935,5936,5937,5938,5939,5940,5941,5942,5943,5944,5945,5946,5947,5948,5949,5950,5951,5952,5953,5954,5955,5956,5957,5958,5959,5960,5961,5962,5963,5964,5965,5966,5967,5968,5969,5970,5971,5972,5973,5974,5975,5976,5977,5978,5979,5980,5981,5982,5983,5984,5985,5986,5987,5988,5989,5990,5991,5992,5993,5994,5995,5996,
-5997,5998,5999,6E3,6001,6002,6003,6004,6005,6006,6007,6008,6009,6010,6011,6012,6013,6014,6015,6016,6017,6018,6019,6020,6021,6022,6023,6024,6025,6026,6027,6028,6029,6030,6031,6032,6033,6034,6035,6036,6037,6038,6039,6040,6041,6042,6043,6044,6045,6046,6047,6048,6049,6050,6051,6052,6053,6054,6055,6056,6057,6058,6059,6060,6061,6062,6063,6064,6065,6066,6067,6068,6069,6070,6071,6072,6073,6074,6075,6076,6077,6078,6079,6080,6081,6082,6083,6084,6085,6086,6087,6088,6089,6090,6091,6092,6093,6094,6095,6096,6097,
-6098,6099,6100,6101,6102,6103,6104,6105,6106,6107,6108,6109,6110,6111,6112,6113,6114,2044,2060,4621,997,1235,473,1186,4622,920,3378,6115,6116,379,1108,4313,2657,2735,3934,6117,3809,636,3233,573,1026,3693,3435,2974,3300,2298,4105,854,2937,2463,393,2581,2417,539,752,1280,2750,2480,140,1161,440,708,1569,665,2497,1746,1291,1523,3E3,164,1603,847,1331,537,1997,486,508,1693,2418,1970,2227,878,1220,299,1030,969,652,2751,624,1137,3301,2619,65,3302,2045,1761,1859,3120,1930,3694,3516,663,1767,852,835,3695,269,
-767,2826,2339,1305,896,1150,770,1616,6118,506,1502,2075,1012,2519,775,2520,2975,2340,2938,4314,3028,2086,1224,1943,2286,6119,3072,4315,2240,1273,1987,3935,1557,175,597,985,3517,2419,2521,1416,3029,585,938,1931,1007,1052,1932,1685,6120,3379,4316,4623,804,599,3121,1333,2128,2539,1159,1554,2032,3810,687,2033,2904,952,675,1467,3436,6121,2241,1096,1786,2440,1543,1924,980,1813,2228,781,2692,1879,728,1918,3696,4624,548,1950,4625,1809,1088,1356,3303,2522,1944,502,972,373,513,2827,586,2377,2391,1003,1976,
-1631,6122,2464,1084,648,1776,4626,2141,324,962,2012,2177,2076,1384,742,2178,1448,1173,1810,222,102,301,445,125,2420,662,2498,277,200,1476,1165,1068,224,2562,1378,1446,450,1880,659,791,582,4627,2939,3936,1516,1274,555,2099,3697,1020,1389,1526,3380,1762,1723,1787,2229,412,2114,1900,2392,3518,512,2597,427,1925,2341,3122,1653,1686,2465,2499,697,330,273,380,2162,951,832,780,991,1301,3073,965,2270,3519,668,2523,2636,1286,535,1407,518,671,957,2658,2378,267,611,2197,3030,6123,248,2299,967,1799,2356,850,1418,
-3437,1876,1256,1480,2828,1718,6124,6125,1755,1664,2405,6126,4628,2879,2829,499,2179,676,4629,557,2329,2214,2090,325,3234,464,811,3001,992,2342,2481,1232,1469,303,2242,466,1070,2163,603,1777,2091,4630,2752,4631,2714,322,2659,1964,1768,481,2188,1463,2330,2857,3600,2092,3031,2421,4632,2318,2070,1849,2598,4633,1302,2254,1668,1701,2422,3811,2905,3032,3123,2046,4106,1763,1694,4634,1604,943,1724,1454,917,868,2215,1169,2940,552,1145,1800,1228,1823,1955,316,1080,2510,361,1807,2830,4107,2660,3381,1346,1423,
-1134,4108,6127,541,1263,1229,1148,2540,545,465,1833,2880,3438,1901,3074,2482,816,3937,713,1788,2500,122,1575,195,1451,2501,1111,6128,859,374,1225,2243,2483,4317,390,1033,3439,3075,2524,1687,266,793,1440,2599,946,779,802,507,897,1081,528,2189,1292,711,1866,1725,1167,1640,753,398,2661,1053,246,348,4318,137,1024,3440,1600,2077,2129,825,4319,698,238,521,187,2300,1157,2423,1641,1605,1464,1610,1097,2541,1260,1436,759,2255,1814,2150,705,3235,409,2563,3304,561,3033,2005,2564,726,1956,2343,3698,4109,949,3812,
-3813,3520,1669,653,1379,2525,881,2198,632,2256,1027,778,1074,733,1957,514,1481,2466,554,2180,702,3938,1606,1017,1398,6129,1380,3521,921,993,1313,594,449,1489,1617,1166,768,1426,1360,495,1794,3601,1177,3602,1170,4320,2344,476,425,3167,4635,3168,1424,401,2662,1171,3382,1998,1089,4110,477,3169,474,6130,1909,596,2831,1842,494,693,1051,1028,1207,3076,606,2115,727,2790,1473,1115,743,3522,630,805,1532,4321,2021,366,1057,838,684,1114,2142,4322,2050,1492,1892,1808,2271,3814,2424,1971,1447,1373,3305,1090,1536,
-3939,3523,3306,1455,2199,336,369,2331,1035,584,2393,902,718,2600,6131,2753,463,2151,1149,1611,2467,715,1308,3124,1268,343,1413,3236,1517,1347,2663,2093,3940,2022,1131,1553,2100,2941,1427,3441,2942,1323,2484,6132,1980,872,2368,2441,2943,320,2369,2116,1082,679,1933,3941,2791,3815,625,1143,2023,422,2200,3816,6133,730,1695,356,2257,1626,2301,2858,2637,1627,1778,937,883,2906,2693,3002,1769,1086,400,1063,1325,3307,2792,4111,3077,456,2345,1046,747,6134,1524,884,1094,3383,1474,2164,1059,974,1688,2181,2258,
-1047,345,1665,1187,358,875,3170,305,660,3524,2190,1334,1135,3171,1540,1649,2542,1527,927,968,2793,885,1972,1850,482,500,2638,1218,1109,1085,2543,1654,2034,876,78,2287,1482,1277,861,1675,1083,1779,724,2754,454,397,1132,1612,2332,893,672,1237,257,2259,2370,135,3384,337,2244,547,352,340,709,2485,1400,788,1138,2511,540,772,1682,2260,2272,2544,2013,1843,1902,4636,1999,1562,2288,4637,2201,1403,1533,407,576,3308,1254,2071,978,3385,170,136,1201,3125,2664,3172,2394,213,912,873,3603,1713,2202,699,3604,3699,
-813,3442,493,531,1054,468,2907,1483,304,281,4112,1726,1252,2094,339,2319,2130,2639,756,1563,2944,748,571,2976,1588,2425,2715,1851,1460,2426,1528,1392,1973,3237,288,3309,685,3386,296,892,2716,2216,1570,2245,722,1747,2217,905,3238,1103,6135,1893,1441,1965,251,1805,2371,3700,2601,1919,1078,75,2182,1509,1592,1270,2640,4638,2152,6136,3310,3817,524,706,1075,292,3818,1756,2602,317,98,3173,3605,3525,1844,2218,3819,2502,814,567,385,2908,1534,6137,534,1642,3239,797,6138,1670,1529,953,4323,188,1071,538,178,
-729,3240,2109,1226,1374,2E3,2357,2977,731,2468,1116,2014,2051,6139,1261,1593,803,2859,2736,3443,556,682,823,1541,6140,1369,2289,1706,2794,845,462,2603,2665,1361,387,162,2358,1740,739,1770,1720,1304,1401,3241,1049,627,1571,2427,3526,1877,3942,1852,1500,431,1910,1503,677,297,2795,286,1433,1038,1198,2290,1133,1596,4113,4639,2469,1510,1484,3943,6141,2442,108,712,4640,2372,866,3701,2755,3242,1348,834,1945,1408,3527,2395,3243,1811,824,994,1179,2110,1548,1453,790,3003,690,4324,4325,2832,2909,3820,1860,3821,
-225,1748,310,346,1780,2470,821,1993,2717,2796,828,877,3528,2860,2471,1702,2165,2910,2486,1789,453,359,2291,1676,73,1164,1461,1127,3311,421,604,314,1037,589,116,2487,737,837,1180,111,244,735,6142,2261,1861,1362,986,523,418,581,2666,3822,103,855,503,1414,1867,2488,1091,657,1597,979,605,1316,4641,1021,2443,2078,2001,1209,96,587,2166,1032,260,1072,2153,173,94,226,3244,819,2006,4642,4114,2203,231,1744,782,97,2667,786,3387,887,391,442,2219,4326,1425,6143,2694,633,1544,1202,483,2015,592,2052,1958,2472,1655,
-419,129,4327,3444,3312,1714,1257,3078,4328,1518,1098,865,1310,1019,1885,1512,1734,469,2444,148,773,436,1815,1868,1128,1055,4329,1245,2756,3445,2154,1934,1039,4643,579,1238,932,2320,353,205,801,115,2428,944,2321,1881,399,2565,1211,678,766,3944,335,2101,1459,1781,1402,3945,2737,2131,1010,844,981,1326,1013,550,1816,1545,2620,1335,1008,371,2881,936,1419,1613,3529,1456,1395,2273,1834,2604,1317,2738,2503,416,1643,4330,806,1126,229,591,3946,1314,1981,1576,1837,1666,347,1790,977,3313,764,2861,1853,688,2429,
-1920,1462,77,595,415,2002,3034,798,1192,4115,6144,2978,4331,3035,2695,2582,2072,2566,430,2430,1727,842,1396,3947,3702,613,377,278,236,1417,3388,3314,3174,757,1869,107,3530,6145,1194,623,2262,207,1253,2167,3446,3948,492,1117,1935,536,1838,2757,1246,4332,696,2095,2406,1393,1572,3175,1782,583,190,253,1390,2230,830,3126,3389,934,3245,1703,1749,2979,1870,2545,1656,2204,869,2346,4116,3176,1817,496,1764,4644,942,1504,404,1903,1122,1580,3606,2945,1022,515,372,1735,955,2431,3036,6146,2797,1110,2302,2798,617,
-6147,441,762,1771,3447,3607,3608,1904,840,3037,86,939,1385,572,1370,2445,1336,114,3703,898,294,203,3315,703,1583,2274,429,961,4333,1854,1951,3390,2373,3704,4334,1318,1381,966,1911,2322,1006,1155,309,989,458,2718,1795,1372,1203,252,1689,1363,3177,517,1936,168,1490,562,193,3823,1042,4117,1835,551,470,4645,395,489,3448,1871,1465,2583,2641,417,1493,279,1295,511,1236,1119,72,1231,1982,1812,3004,871,1564,984,3449,1667,2696,2096,4646,2347,2833,1673,3609,695,3246,2668,807,1183,4647,890,388,2333,1801,1457,
-2911,1765,1477,1031,3316,3317,1278,3391,2799,2292,2526,163,3450,4335,2669,1404,1802,6148,2323,2407,1584,1728,1494,1824,1269,298,909,3318,1034,1632,375,776,1683,2061,291,210,1123,809,1249,1002,2642,3038,206,1011,2132,144,975,882,1565,342,667,754,1442,2143,1299,2303,2062,447,626,2205,1221,2739,2912,1144,1214,2206,2584,760,1715,614,950,1281,2670,2621,810,577,1287,2546,4648,242,2168,250,2643,691,123,2644,647,313,1029,689,1357,2946,1650,216,771,1339,1306,808,2063,549,913,1371,2913,2914,6149,1466,1092,
-1174,1196,1311,2605,2396,1783,1796,3079,406,2671,2117,3949,4649,487,1825,2220,6150,2915,448,2348,1073,6151,2397,1707,130,900,1598,329,176,1959,2527,1620,6152,2275,4336,3319,1983,2191,3705,3610,2155,3706,1912,1513,1614,6153,1988,646,392,2304,1589,3320,3039,1826,1239,1352,1340,2916,505,2567,1709,1437,2408,2547,906,6154,2672,384,1458,1594,1100,1329,710,423,3531,2064,2231,2622,1989,2673,1087,1882,333,841,3005,1296,2882,2379,580,1937,1827,1293,2585,601,574,249,1772,4118,2079,1120,645,901,1176,1690,795,
-2207,478,1434,516,1190,1530,761,2080,930,1264,355,435,1552,644,1791,987,220,1364,1163,1121,1538,306,2169,1327,1222,546,2645,218,241,610,1704,3321,1984,1839,1966,2528,451,6155,2586,3707,2568,907,3178,254,2947,186,1845,4650,745,432,1757,428,1633,888,2246,2221,2489,3611,2118,1258,1265,956,3127,1784,4337,2490,319,510,119,457,3612,274,2035,2007,4651,1409,3128,970,2758,590,2800,661,2247,4652,2008,3950,1420,1549,3080,3322,3951,1651,1375,2111,485,2491,1429,1156,6156,2548,2183,1495,831,1840,2529,2446,501,
-1657,307,1894,3247,1341,666,899,2156,1539,2549,1559,886,349,2208,3081,2305,1736,3824,2170,2759,1014,1913,1386,542,1397,2948,490,368,716,362,159,282,2569,1129,1658,1288,1750,2674,276,649,2016,751,1496,658,1818,1284,1862,2209,2087,2512,3451,622,2834,376,117,1060,2053,1208,1721,1101,1443,247,1250,3179,1792,3952,2760,2398,3953,6157,2144,3708,446,2432,1151,2570,3452,2447,2761,2835,1210,2448,3082,424,2222,1251,2449,2119,2836,504,1581,4338,602,817,857,3825,2349,2306,357,3826,1470,1883,2883,255,958,929,2917,
-3248,302,4653,1050,1271,1751,2307,1952,1430,2697,2719,2359,354,3180,777,158,2036,4339,1659,4340,4654,2308,2949,2248,1146,2232,3532,2720,1696,2623,3827,6158,3129,1550,2698,1485,1297,1428,637,931,2721,2145,914,2550,2587,81,2450,612,827,2646,1242,4655,1118,2884,472,1855,3181,3533,3534,569,1353,2699,1244,1758,2588,4119,2009,2762,2171,3709,1312,1531,6159,1152,1938,134,1830,471,3710,2276,1112,1535,3323,3453,3535,982,1337,2950,488,826,674,1058,1628,4120,2017,522,2399,211,568,1367,3454,350,293,1872,1139,
-3249,1399,1946,3006,1300,2360,3324,588,736,6160,2606,744,669,3536,3828,6161,1358,199,723,848,933,851,1939,1505,1514,1338,1618,1831,4656,1634,3613,443,2740,3829,717,1947,491,1914,6162,2551,1542,4121,1025,6163,1099,1223,198,3040,2722,370,410,1905,2589,998,1248,3182,2380,519,1449,4122,1710,947,928,1153,4341,2277,344,2624,1511,615,105,161,1212,1076,1960,3130,2054,1926,1175,1906,2473,414,1873,2801,6164,2309,315,1319,3325,318,2018,2146,2157,963,631,223,4342,4343,2675,479,3711,1197,2625,3712,2676,2361,6165,
-4344,4123,6166,2451,3183,1886,2184,1674,1330,1711,1635,1506,799,219,3250,3083,3954,1677,3713,3326,2081,3614,1652,2073,4657,1147,3041,1752,643,1961,147,1974,3955,6167,1716,2037,918,3007,1994,120,1537,118,609,3184,4345,740,3455,1219,332,1615,3830,6168,1621,2980,1582,783,212,553,2350,3714,1349,2433,2082,4124,889,6169,2310,1275,1410,973,166,1320,3456,1797,1215,3185,2885,1846,2590,2763,4658,629,822,3008,763,940,1990,2862,439,2409,1566,1240,1622,926,1282,1907,2764,654,2210,1607,327,1130,3956,1678,1623,
-6170,2434,2192,686,608,3831,3715,903,3957,3042,6171,2741,1522,1915,1105,1555,2552,1359,323,3251,4346,3457,738,1354,2553,2311,2334,1828,2003,3832,1753,2351,1227,6172,1887,4125,1478,6173,2410,1874,1712,1847,520,1204,2607,264,4659,836,2677,2102,600,4660,3833,2278,3084,6174,4347,3615,1342,640,532,543,2608,1888,2400,2591,1009,4348,1497,341,1737,3616,2723,1394,529,3252,1321,983,4661,1515,2120,971,2592,924,287,1662,3186,4349,2700,4350,1519,908,1948,2452,156,796,1629,1486,2223,2055,694,4126,1259,1036,3392,
-1213,2249,2742,1889,1230,3958,1015,910,408,559,3617,4662,746,725,935,4663,3959,3009,1289,563,867,4664,3960,1567,2981,2038,2626,988,2263,2381,4351,143,2374,704,1895,6175,1188,3716,2088,673,3085,2362,4352,484,1608,1921,2765,2918,215,904,3618,3537,894,509,976,3043,2701,3961,4353,2837,2982,498,6176,6177,1102,3538,1332,3393,1487,1636,1637,233,245,3962,383,650,995,3044,460,1520,1206,2352,749,3327,530,700,389,1438,1560,1773,3963,2264,719,2951,2724,3834,870,1832,1644,1E3,839,2474,3717,197,1630,3394,365,2886,
-3964,1285,2133,734,922,818,1106,732,480,2083,1774,3458,923,2279,1350,221,3086,85,2233,2234,3835,1585,3010,2147,1387,1705,2382,1619,2475,133,239,2802,1991,1016,2084,2383,411,2838,1113,651,1985,1160,3328,990,1863,3087,1048,1276,2647,265,2627,1599,3253,2056,150,638,2019,656,853,326,1479,680,1439,4354,1001,1759,413,3459,3395,2492,1431,459,4355,1125,3329,2265,1953,1450,2065,2863,849,351,2678,3131,3254,3255,1104,1577,227,1351,1645,2453,2193,1421,2887,812,2121,634,95,2435,201,2312,4665,1646,1671,2743,1601,
-2554,2702,2648,2280,1315,1366,2089,3132,1573,3718,3965,1729,1189,328,2679,1077,1940,1136,558,1283,964,1195,621,2074,1199,1743,3460,3619,1896,1916,1890,3836,2952,1154,2112,1064,862,378,3011,2066,2113,2803,1568,2839,6178,3088,2919,1941,1660,2004,1992,2194,142,707,1590,1708,1624,1922,1023,1836,1233,1004,2313,789,741,3620,6179,1609,2411,1200,4127,3719,3720,4666,2057,3721,593,2840,367,2920,1878,6180,3461,1521,628,1168,692,2211,2649,300,720,2067,2571,2953,3396,959,2504,3966,3539,3462,1977,701,6181,954,
-1043,800,681,183,3722,1803,1730,3540,4128,2103,815,2314,174,467,230,2454,1093,2134,755,3541,3397,1141,1162,6182,1738,2039,270,3256,2513,1005,1647,2185,3837,858,1679,1897,1719,2954,2324,1806,402,670,167,4129,1498,2158,2104,750,6183,915,189,1680,1551,455,4356,1501,2455,405,1095,2955,338,1586,1266,1819,570,641,1324,237,1556,2650,1388,3723,6184,1368,2384,1343,1978,3089,2436,879,3724,792,1191,758,3012,1411,2135,1322,4357,240,4667,1848,3725,1574,6185,420,3045,1546,1391,714,4358,1967,941,1864,863,664,426,
-560,1731,2680,1785,2864,1949,2363,403,3330,1415,1279,2136,1697,2335,204,721,2097,3838,90,6186,2085,2505,191,3967,124,2148,1376,1798,1178,1107,1898,1405,860,4359,1243,1272,2375,2983,1558,2456,1638,113,3621,578,1923,2609,880,386,4130,784,2186,2266,1422,2956,2172,1722,497,263,2514,1267,2412,2610,177,2703,3542,774,1927,1344,616,1432,1595,1018,172,4360,2325,911,4361,438,1468,3622,794,3968,2024,2173,1681,1829,2957,945,895,3090,575,2212,2476,475,2401,2681,785,2744,1745,2293,2555,1975,3133,2865,394,4668,
-3839,635,4131,639,202,1507,2195,2766,1345,1435,2572,3726,1908,1184,1181,2457,3727,3134,4362,843,2611,437,916,4669,234,769,1884,3046,3047,3623,833,6187,1639,2250,2402,1355,1185,2010,2047,999,525,1732,1290,1488,2612,948,1578,3728,2413,2477,1216,2725,2159,334,3840,1328,3624,2921,1525,4132,564,1056,891,4363,1444,1698,2385,2251,3729,1365,2281,2235,1717,6188,864,3841,2515,444,527,2767,2922,3625,544,461,6189,566,209,2437,3398,2098,1065,2068,3331,3626,3257,2137,2138,2122,3730,2888,1995,1820,1044,6190,6191,
-6192,6193,6194,6195,6196,6197,6198,6199,6200,6201,6202,6203,6204,6205,4670,6206,6207,6208,6209,6210,6211,6212,6213,6214,6215,6216,6217,6218,6219,6220,6221,6222,6223,6224,6225,6226,6227,6228,6229,6230,6231,6232,6233,6234,6235,6236,6237,3187,6238,6239,3969,6240,6241,6242,6243,6244,4671,6245,6246,4672,6247,6248,4133,6249,6250,4364,6251,2923,2556,2613,4673,4365,3970,6252,6253,6254,6255,4674,6256,6257,6258,2768,2353,4366,4675,4676,3188,4367,3463,6259,4134,4677,4678,6260,2267,6261,3842,3332,4368,3543,6262,
-6263,6264,3013,1954,1928,4135,4679,6265,6266,2478,3091,6267,4680,4369,6268,6269,1699,6270,3544,4136,4681,6271,4137,6272,4370,2804,6273,6274,2593,3971,3972,4682,6275,2236,4683,6276,6277,4684,6278,6279,4138,3973,4685,6280,6281,3258,6282,6283,6284,6285,3974,4686,2841,3975,6286,6287,3545,6288,6289,4139,4687,4140,6290,4141,6291,4142,6292,6293,3333,6294,6295,6296,4371,6297,3399,6298,6299,4372,3976,6300,6301,6302,4373,6303,6304,3843,3731,6305,4688,4374,6306,6307,3259,2294,6308,3732,2530,4143,6309,4689,6310,
-6311,6312,3048,6313,6314,4690,3733,2237,6315,6316,2282,3334,6317,6318,3844,6319,6320,4691,6321,3400,4692,6322,4693,6323,3049,6324,4375,6325,3977,6326,6327,6328,3546,6329,4694,3335,6330,4695,4696,6331,6332,6333,6334,4376,3978,6335,4697,3979,4144,6336,3980,4698,6337,6338,6339,6340,6341,4699,4700,4701,6342,6343,4702,6344,6345,4703,6346,6347,4704,6348,4705,4706,3135,6349,4707,6350,4708,6351,4377,6352,4709,3734,4145,6353,2506,4710,3189,6354,3050,4711,3981,6355,3547,3014,4146,4378,3735,2651,3845,3260,3136,
-2224,1986,6356,3401,6357,4712,2594,3627,3137,2573,3736,3982,4713,3628,4714,4715,2682,3629,4716,6358,3630,4379,3631,6359,6360,6361,3983,6362,6363,6364,6365,4147,3846,4717,6366,6367,3737,2842,6368,4718,2628,6369,3261,6370,2386,6371,6372,3738,3984,4719,3464,4720,3402,6373,2924,3336,4148,2866,6374,2805,3262,4380,2704,2069,2531,3138,2806,2984,6375,2769,6376,4721,4722,3403,6377,6378,3548,6379,6380,2705,3092,1979,4149,2629,3337,2889,6381,3338,4150,2557,3339,4381,6382,3190,3263,3739,6383,4151,4723,4152,2558,
-2574,3404,3191,6384,6385,4153,6386,4724,4382,6387,6388,4383,6389,6390,4154,6391,4725,3985,6392,3847,4155,6393,6394,6395,6396,6397,3465,6398,4384,6399,6400,6401,6402,6403,6404,4156,6405,6406,6407,6408,2123,6409,6410,2326,3192,4726,6411,6412,6413,6414,4385,4157,6415,6416,4158,6417,3093,3848,6418,3986,6419,6420,3849,6421,6422,6423,4159,6424,6425,4160,6426,3740,6427,6428,6429,6430,3987,6431,4727,6432,2238,6433,6434,4386,3988,6435,6436,3632,6437,6438,2843,6439,6440,6441,6442,3633,6443,2958,6444,6445,3466,
-6446,2364,4387,3850,6447,4388,2959,3340,6448,3851,6449,4728,6450,6451,3264,4729,6452,3193,6453,4389,4390,2706,3341,4730,6454,3139,6455,3194,6456,3051,2124,3852,1602,4391,4161,3853,1158,3854,4162,3989,4392,3990,4731,4732,4393,2040,4163,4394,3265,6457,2807,3467,3855,6458,6459,6460,3991,3468,4733,4734,6461,3140,2960,6462,4735,6463,6464,6465,6466,4736,4737,4738,4739,6467,6468,4164,2403,3856,6469,6470,2770,2844,6471,4740,6472,6473,6474,6475,6476,6477,6478,3195,6479,4741,4395,6480,2867,6481,4742,2808,6482,
-2493,4165,6483,6484,6485,6486,2295,4743,6487,6488,6489,3634,6490,6491,6492,6493,6494,6495,6496,2985,4744,6497,6498,4745,6499,6500,2925,3141,4166,6501,6502,4746,6503,6504,4747,6505,6506,6507,2890,6508,6509,6510,6511,6512,6513,6514,6515,6516,6517,6518,6519,3469,4167,6520,6521,6522,4748,4396,3741,4397,4749,4398,3342,2125,4750,6523,4751,4752,4753,3052,6524,2961,4168,6525,4754,6526,4755,4399,2926,4169,6527,3857,6528,4400,4170,6529,4171,6530,6531,2595,6532,6533,6534,6535,3635,6536,6537,6538,6539,6540,6541,
-6542,4756,6543,6544,6545,6546,6547,6548,4401,6549,6550,6551,6552,4402,3405,4757,4403,6553,6554,6555,4172,3742,6556,6557,6558,3992,3636,6559,6560,3053,2726,6561,3549,4173,3054,4404,6562,6563,3993,4405,3266,3550,2809,4406,6564,6565,6566,4758,4759,6567,3743,6568,4760,3744,4761,3470,6569,6570,6571,4407,6572,3745,4174,6573,4175,2810,4176,3196,4762,6574,4177,6575,6576,2494,2891,3551,6577,6578,3471,6579,4408,6580,3015,3197,6581,3343,2532,3994,3858,6582,3094,3406,4409,6583,2892,4178,4763,4410,3016,4411,6584,
-3995,3142,3017,2683,6585,4179,6586,6587,4764,4412,6588,6589,4413,6590,2986,6591,2962,3552,6592,2963,3472,6593,6594,4180,4765,6595,6596,2225,3267,4414,6597,3407,3637,4766,6598,6599,3198,6600,4415,6601,3859,3199,6602,3473,4767,2811,4416,1856,3268,3200,2575,3996,3997,3201,4417,6603,3095,2927,6604,3143,6605,2268,6606,3998,3860,3096,2771,6607,6608,3638,2495,4768,6609,3861,6610,3269,2745,4769,4181,3553,6611,2845,3270,6612,6613,6614,3862,6615,6616,4770,4771,6617,3474,3999,4418,4419,6618,3639,3344,6619,4772,
-4182,6620,2126,6621,6622,6623,4420,4773,6624,3018,6625,4774,3554,6626,4183,2025,3746,6627,4184,2707,6628,4421,4422,3097,1775,4185,3555,6629,6630,2868,6631,6632,4423,6633,6634,4424,2414,2533,2928,6635,4186,2387,6636,4775,6637,4187,6638,1891,4425,3202,3203,6639,6640,4776,6641,3345,6642,6643,3640,6644,3475,3346,3641,4E3,6645,3144,6646,3098,2812,4188,3642,3204,6647,3863,3476,6648,3864,6649,4426,4001,6650,6651,6652,2576,6653,4189,4777,6654,6655,6656,2846,6657,3477,3205,4002,6658,4003,6659,3347,2252,6660,
-6661,6662,4778,6663,6664,6665,6666,6667,6668,6669,4779,4780,2048,6670,3478,3099,6671,3556,3747,4004,6672,6673,6674,3145,4005,3748,6675,6676,6677,6678,6679,3408,6680,6681,6682,6683,3206,3207,6684,6685,4781,4427,6686,4782,4783,4784,6687,6688,6689,4190,6690,6691,3479,6692,2746,6693,4428,6694,6695,6696,6697,6698,6699,4785,6700,6701,3208,2727,6702,3146,6703,6704,3409,2196,6705,4429,6706,6707,6708,2534,1996,6709,6710,6711,2747,6712,6713,6714,4786,3643,6715,4430,4431,6716,3557,6717,4432,4433,6718,6719,6720,
-6721,3749,6722,4006,4787,6723,6724,3644,4788,4434,6725,6726,4789,2772,6727,6728,6729,6730,6731,2708,3865,2813,4435,6732,6733,4790,4791,3480,6734,6735,6736,6737,4436,3348,6738,3410,4007,6739,6740,4008,6741,6742,4792,3411,4191,6743,6744,6745,6746,6747,3866,6748,3750,6749,6750,6751,6752,6753,6754,6755,3867,6756,4009,6757,4793,4794,6758,2814,2987,6759,6760,6761,4437,6762,6763,6764,6765,3645,6766,6767,3481,4192,6768,3751,6769,6770,2174,6771,3868,3752,6772,6773,6774,4193,4795,4438,3558,4796,4439,6775,4797,
-6776,6777,4798,6778,4799,3559,4800,6779,6780,6781,3482,6782,2893,6783,6784,4194,4801,4010,6785,6786,4440,6787,4011,6788,6789,6790,6791,6792,6793,4802,6794,6795,6796,4012,6797,6798,6799,6800,3349,4803,3483,6801,4804,4195,6802,4013,6803,6804,4196,6805,4014,4015,6806,2847,3271,2848,6807,3484,6808,6809,6810,4441,6811,4442,4197,4443,3272,4805,6812,3412,4016,1579,6813,6814,4017,6815,3869,6816,2964,6817,4806,6818,6819,4018,3646,6820,6821,4807,4019,4020,6822,6823,3560,6824,6825,4021,4444,6826,4198,6827,6828,
-4445,6829,6830,4199,4808,6831,6832,6833,3870,3019,2458,6834,3753,3413,3350,6835,4809,3871,4810,3561,4446,6836,6837,4447,4811,4812,6838,2459,4448,6839,4449,6840,6841,4022,3872,6842,4813,4814,6843,6844,4815,4200,4201,4202,6845,4023,6846,6847,4450,3562,3873,6848,6849,4816,4817,6850,4451,4818,2139,6851,3563,6852,6853,3351,6854,6855,3352,4024,2709,3414,4203,4452,6856,4204,6857,6858,3874,3875,6859,6860,4819,6861,6862,6863,6864,4453,3647,6865,6866,4820,6867,6868,6869,6870,4454,6871,2869,6872,6873,4821,6874,
-3754,6875,4822,4205,6876,6877,6878,3648,4206,4455,6879,4823,6880,4824,3876,6881,3055,4207,6882,3415,6883,6884,6885,4208,4209,6886,4210,3353,6887,3354,3564,3209,3485,2652,6888,2728,6889,3210,3755,6890,4025,4456,6891,4825,6892,6893,6894,6895,4211,6896,6897,6898,4826,6899,6900,4212,6901,4827,6902,2773,3565,6903,4828,6904,6905,6906,6907,3649,3650,6908,2849,3566,6909,3567,3100,6910,6911,6912,6913,6914,6915,4026,6916,3355,4829,3056,4457,3756,6917,3651,6918,4213,3652,2870,6919,4458,6920,2438,6921,6922,3757,
-2774,4830,6923,3356,4831,4832,6924,4833,4459,3653,2507,6925,4834,2535,6926,6927,3273,4027,3147,6928,3568,6929,6930,6931,4460,6932,3877,4461,2729,3654,6933,6934,6935,6936,2175,4835,2630,4214,4028,4462,4836,4215,6937,3148,4216,4463,4837,4838,4217,6938,6939,2850,4839,6940,4464,6941,6942,6943,4840,6944,4218,3274,4465,6945,6946,2710,6947,4841,4466,6948,6949,2894,6950,6951,4842,6952,4219,3057,2871,6953,6954,6955,6956,4467,6957,2711,6958,6959,6960,3275,3101,4843,6961,3357,3569,6962,4844,6963,6964,4468,4845,
-3570,6965,3102,4846,3758,6966,4847,3878,4848,4849,4029,6967,2929,3879,4850,4851,6968,6969,1733,6970,4220,6971,6972,6973,6974,6975,6976,4852,6977,6978,6979,6980,6981,6982,3759,6983,6984,6985,3486,3487,6986,3488,3416,6987,6988,6989,6990,6991,6992,6993,6994,6995,6996,6997,4853,6998,6999,4030,7E3,7001,3211,7002,7003,4221,7004,7005,3571,4031,7006,3572,7007,2614,4854,2577,7008,7009,2965,3655,3656,4855,2775,3489,3880,4222,4856,3881,4032,3882,3657,2730,3490,4857,7010,3149,7011,4469,4858,2496,3491,4859,2283,
-7012,7013,7014,2365,4860,4470,7015,7016,3760,7017,7018,4223,1917,7019,7020,7021,4471,7022,2776,4472,7023,7024,7025,7026,4033,7027,3573,4224,4861,4034,4862,7028,7029,1929,3883,4035,7030,4473,3058,7031,2536,3761,3884,7032,4036,7033,2966,2895,1968,4474,3276,4225,3417,3492,4226,2105,7034,7035,1754,2596,3762,4227,4863,4475,3763,4864,3764,2615,2777,3103,3765,3658,3418,4865,2296,3766,2815,7036,7037,7038,3574,2872,3277,4476,7039,4037,4477,7040,7041,4038,7042,7043,7044,7045,7046,7047,2537,7048,7049,7050,7051,
-7052,7053,7054,4478,7055,7056,3767,3659,4228,3575,7057,7058,4229,7059,7060,7061,3660,7062,3212,7063,3885,4039,2460,7064,7065,7066,7067,7068,7069,7070,7071,7072,7073,7074,4866,3768,4867,7075,7076,7077,7078,4868,3358,3278,2653,7079,7080,4479,3886,7081,7082,4869,7083,7084,7085,7086,7087,7088,2538,7089,7090,7091,4040,3150,3769,4870,4041,2896,3359,4230,2930,7092,3279,7093,2967,4480,3213,4481,3661,7094,7095,7096,7097,7098,7099,7100,7101,7102,2461,3770,7103,7104,4231,3151,7105,7106,7107,4042,3662,7108,7109,
-4871,3663,4872,4043,3059,7110,7111,7112,3493,2988,7113,4873,7114,7115,7116,3771,4874,7117,7118,4232,4875,7119,3576,2336,4876,7120,4233,3419,4044,4877,4878,4482,4483,4879,4484,4234,7121,3772,4880,1045,3280,3664,4881,4882,7122,7123,7124,7125,4883,7126,2778,7127,4485,4486,7128,4884,3214,3887,7129,7130,3215,7131,4885,4045,7132,7133,4046,7134,7135,7136,7137,7138,7139,7140,7141,7142,7143,4235,7144,4886,7145,7146,7147,4887,7148,7149,7150,4487,4047,4488,7151,7152,4888,4048,2989,3888,7153,3665,7154,4049,7155,
-7156,7157,7158,7159,7160,2931,4889,4890,4489,7161,2631,3889,4236,2779,7162,7163,4891,7164,3060,7165,1672,4892,7166,4893,4237,3281,4894,7167,7168,3666,7169,3494,7170,7171,4050,7172,7173,3104,3360,3420,4490,4051,2684,4052,7174,4053,7175,7176,7177,2253,4054,7178,7179,4895,7180,3152,3890,3153,4491,3216,7181,7182,7183,2968,4238,4492,4055,7184,2990,7185,2479,7186,7187,4493,7188,7189,7190,7191,7192,4896,7193,4897,2969,4494,4898,7194,3495,7195,7196,4899,4495,7197,3105,2731,7198,4900,7199,7200,7201,4056,7202,
-3361,7203,7204,4496,4901,4902,7205,4497,7206,7207,2315,4903,7208,4904,7209,4905,2851,7210,7211,3577,7212,3578,4906,7213,4057,3667,4907,7214,4058,2354,3891,2376,3217,3773,7215,7216,7217,7218,7219,4498,7220,4908,3282,2685,7221,3496,4909,2632,3154,4910,7222,2337,7223,4911,7224,7225,7226,4912,4913,3283,4239,4499,7227,2816,7228,7229,7230,7231,7232,7233,7234,4914,4500,4501,7235,7236,7237,2686,7238,4915,7239,2897,4502,7240,4503,7241,2516,7242,4504,3362,3218,7243,7244,7245,4916,7246,7247,4505,3363,7248,7249,
-7250,7251,3774,4506,7252,7253,4917,7254,7255,3284,2991,4918,4919,3219,3892,4920,3106,3497,4921,7256,7257,7258,4922,7259,4923,3364,4507,4508,4059,7260,4240,3498,7261,7262,4924,7263,2992,3893,4060,3220,7264,7265,7266,7267,7268,7269,4509,3775,7270,2817,7271,4061,4925,4510,3776,7272,4241,4511,3285,7273,7274,3499,7275,7276,7277,4062,4512,4926,7278,3107,3894,7279,7280,4927,7281,4513,7282,7283,3668,7284,7285,4242,4514,4243,7286,2058,4515,4928,4929,4516,7287,3286,4244,7288,4517,7289,7290,7291,3669,7292,7293,
-4930,4931,4932,2355,4933,7294,2633,4518,7295,4245,7296,7297,4519,7298,7299,4520,4521,4934,7300,4246,4522,7301,7302,7303,3579,7304,4247,4935,7305,4936,7306,7307,7308,7309,3777,7310,4523,7311,7312,7313,4248,3580,7314,4524,3778,4249,7315,3581,7316,3287,7317,3221,7318,4937,7319,7320,7321,7322,7323,7324,4938,4939,7325,4525,7326,7327,7328,4063,7329,7330,4940,7331,7332,4941,7333,4526,7334,3500,2780,1741,4942,2026,1742,7335,7336,3582,4527,2388,7337,7338,7339,4528,7340,4250,4943,7341,7342,7343,4944,7344,7345,
-7346,3020,7347,4945,7348,7349,7350,7351,3895,7352,3896,4064,3897,7353,7354,7355,4251,7356,7357,3898,7358,3779,7359,3780,3288,7360,7361,4529,7362,4946,4530,2027,7363,3899,4531,4947,3222,3583,7364,4948,7365,7366,7367,7368,4949,3501,4950,3781,4951,4532,7369,2517,4952,4252,4953,3155,7370,4954,4955,4253,2518,4533,7371,7372,2712,4254,7373,7374,7375,3670,4956,3671,7376,2389,3502,4065,7377,2338,7378,7379,7380,7381,3061,7382,4957,7383,7384,7385,7386,4958,4534,7387,7388,2993,7389,3062,7390,4959,7391,7392,7393,
-4960,3108,4961,7394,4535,7395,4962,3421,4536,7396,4963,7397,4964,1857,7398,4965,7399,7400,2176,3584,4966,7401,7402,3422,4537,3900,3585,7403,3782,7404,2852,7405,7406,7407,4538,3783,2654,3423,4967,4539,7408,3784,3586,2853,4540,4541,7409,3901,7410,3902,7411,7412,3785,3109,2327,3903,7413,7414,2970,4066,2932,7415,7416,7417,3904,3672,3424,7418,4542,4543,4544,7419,4968,7420,7421,4255,7422,7423,7424,7425,7426,4067,7427,3673,3365,4545,7428,3110,2559,3674,7429,7430,3156,7431,7432,3503,7433,3425,4546,7434,3063,
-2873,7435,3223,4969,4547,4548,2898,4256,4068,7436,4069,3587,3786,2933,3787,4257,4970,4971,3788,7437,4972,3064,7438,4549,7439,7440,7441,7442,7443,4973,3905,7444,2874,7445,7446,7447,7448,3021,7449,4550,3906,3588,4974,7450,7451,3789,3675,7452,2578,7453,4070,7454,7455,7456,4258,3676,7457,4975,7458,4976,4259,3790,3504,2634,4977,3677,4551,4260,7459,7460,7461,7462,3907,4261,4978,7463,7464,7465,7466,4979,4980,7467,7468,2213,4262,7469,7470,7471,3678,4981,7472,2439,7473,4263,3224,3289,7474,3908,2415,4982,7475,
-4264,7476,4983,2655,7477,7478,2732,4552,2854,2875,7479,7480,4265,7481,4553,4984,7482,7483,4266,7484,3679,3366,3680,2818,2781,2782,3367,3589,4554,3065,7485,4071,2899,7486,7487,3157,2462,4072,4555,4073,4985,4986,3111,4267,2687,3368,4556,4074,3791,4268,7488,3909,2783,7489,2656,1962,3158,4557,4987,1963,3159,3160,7490,3112,4988,4989,3022,4990,4991,3792,2855,7491,7492,2971,4558,7493,7494,4992,7495,7496,7497,7498,4993,7499,3426,4559,4994,7500,3681,4560,4269,4270,3910,7501,4075,4995,4271,7502,7503,4076,7504,
-4996,7505,3225,4997,4272,4077,2819,3023,7506,7507,2733,4561,7508,4562,7509,3369,3793,7510,3590,2508,7511,7512,4273,3113,2994,2616,7513,7514,7515,7516,7517,7518,2820,3911,4078,2748,7519,7520,4563,4998,7521,7522,7523,7524,4999,4274,7525,4564,3682,2239,4079,4565,7526,7527,7528,7529,5E3,7530,7531,5001,4275,3794,7532,7533,7534,3066,5002,4566,3161,7535,7536,4080,7537,3162,7538,7539,4567,7540,7541,7542,7543,7544,7545,5003,7546,4568,7547,7548,7549,7550,7551,7552,7553,7554,7555,7556,5004,7557,7558,7559,5005,
-7560,3795,7561,4569,7562,7563,7564,2821,3796,4276,4277,4081,7565,2876,7566,5006,7567,7568,2900,7569,3797,3912,7570,7571,7572,4278,7573,7574,7575,5007,7576,7577,5008,7578,7579,4279,2934,7580,7581,5009,7582,4570,7583,4280,7584,7585,7586,4571,4572,3913,7587,4573,3505,7588,5010,7589,7590,7591,7592,3798,4574,7593,7594,5011,7595,4281,7596,7597,7598,4282,5012,7599,7600,5013,3163,7601,5014,7602,3914,7603,7604,2734,4575,4576,4577,7605,7606,7607,7608,7609,3506,5015,4578,7610,4082,7611,2822,2901,2579,3683,3024,
-4579,3507,7612,4580,7613,3226,3799,5016,7614,7615,7616,7617,7618,7619,7620,2995,3290,7621,4083,7622,5017,7623,7624,7625,7626,7627,4581,3915,7628,3291,7629,5018,7630,7631,7632,7633,4084,7634,7635,3427,3800,7636,7637,4582,7638,5019,4583,5020,7639,3916,7640,3801,5021,4584,4283,7641,7642,3428,3591,2269,7643,2617,7644,4585,3592,7645,4586,2902,7646,7647,3227,5022,7648,4587,7649,4284,7650,7651,7652,4588,2284,7653,5023,7654,7655,7656,4589,5024,3802,7657,7658,5025,3508,4590,7659,7660,7661,1969,5026,7662,7663,
-3684,1821,2688,7664,2028,2509,4285,7665,2823,1841,7666,2689,3114,7667,3917,4085,2160,5027,5028,2972,7668,5029,7669,7670,7671,3593,4086,7672,4591,4087,5030,3803,7673,7674,7675,7676,7677,7678,7679,4286,2366,4592,4593,3067,2328,7680,7681,4594,3594,3918,2029,4287,7682,5031,3919,3370,4288,4595,2856,7683,3509,7684,7685,5032,5033,7686,7687,3804,2784,7688,7689,7690,7691,3371,7692,7693,2877,5034,7694,7695,3920,4289,4088,7696,7697,7698,5035,7699,5036,4290,5037,5038,5039,7700,7701,7702,5040,5041,3228,7703,1760,
-7704,5042,3229,4596,2106,4089,7705,4597,2824,5043,2107,3372,7706,4291,4090,5044,7707,4091,7708,5045,3025,3805,4598,4292,4293,4294,3373,7709,4599,7710,5046,7711,7712,5047,5048,3806,7713,7714,7715,5049,7716,7717,7718,7719,4600,5050,7720,7721,7722,5051,7723,4295,3429,7724,7725,7726,7727,3921,7728,3292,5052,4092,7729,7730,7731,7732,7733,7734,7735,5053,5054,7736,7737,7738,7739,3922,3685,7740,7741,7742,7743,2635,5055,7744,5056,4601,7745,7746,2560,7747,7748,7749,7750,3923,7751,7752,7753,7754,7755,4296,2903,
-7756,7757,7758,7759,7760,3924,7761,5057,4297,7762,7763,5058,4298,7764,4093,7765,7766,5059,3925,7767,7768,7769,7770,7771,7772,7773,7774,7775,7776,3595,7777,4299,5060,4094,7778,3293,5061,7779,7780,4300,7781,7782,4602,7783,3596,7784,7785,3430,2367,7786,3164,5062,5063,4301,7787,7788,4095,5064,5065,7789,3374,3115,7790,7791,7792,7793,7794,7795,7796,3597,4603,7797,7798,3686,3116,3807,5066,7799,7800,5067,7801,7802,4604,4302,5068,4303,4096,7803,7804,3294,7805,7806,5069,4605,2690,7807,3026,7808,7809,7810,7811,
-7812,7813,7814,7815,7816,7817,7818,7819,7820,7821,7822,7823,7824,7825,7826,7827,7828,7829,7830,7831,7832,7833,7834,7835,7836,7837,7838,7839,7840,7841,7842,7843,7844,7845,7846,7847,7848,7849,7850,7851,7852,7853,7854,7855,7856,7857,7858,7859,7860,7861,7862,7863,7864,7865,7866,7867,7868,7869,7870,7871,7872,7873,7874,7875,7876,7877,7878,7879,7880,7881,7882,7883,7884,7885,7886,7887,7888,7889,7890,7891,7892,7893,7894,7895,7896,7897,7898,7899,7900,7901,7902,7903,7904,7905,7906,7907,7908,7909,7910,7911,7912,
-7913,7914,7915,7916,7917,7918,7919,7920,7921,7922,7923,7924,3926,7925,7926,7927,7928,7929,7930,7931,7932,7933,7934,7935,7936,7937,7938,7939,7940,7941,7942,7943,7944,7945,7946,7947,7948,7949,7950,7951,7952,7953,7954,7955,7956,7957,7958,7959,7960,7961,7962,7963,7964,7965,7966,7967,7968,7969,7970,7971,7972,7973,7974,7975,7976,7977,7978,7979,7980,7981,7982,7983,7984,7985,7986,7987,7988,7989,7990,7991,7992,7993,7994,7995,7996,7997,7998,7999,8E3,8001,8002,8003,8004,8005,8006,8007,8008,8009,8010,8011,8012,
-8013,8014,8015,8016,8017,8018,8019,8020,8021,8022,8023,8024,8025,8026,8027,8028,8029,8030,8031,8032,8033,8034,8035,8036,8037,8038,8039,8040,8041,8042,8043,8044,8045,8046,8047,8048,8049,8050,8051,8052,8053,8054,8055,8056,8057,8058,8059,8060,8061,8062,8063,8064,8065,8066,8067,8068,8069,8070,8071,8072,8073,8074,8075,8076,8077,8078,8079,8080,8081,8082,8083,8084,8085,8086,8087,8088,8089,8090,8091,8092,8093,8094,8095,8096,8097,8098,8099,8100,8101,8102,8103,8104,8105,8106,8107,8108,8109,8110,8111,8112,8113,
-8114,8115,8116,8117,8118,8119,8120,8121,8122,8123,8124,8125,8126,8127,8128,8129,8130,8131,8132,8133,8134,8135,8136,8137,8138,8139,8140,8141,8142,8143,8144,8145,8146,8147,8148,8149,8150,8151,8152,8153,8154,8155,8156,8157,8158,8159,8160,8161,8162,8163,8164,8165,8166,8167,8168,8169,8170,8171,8172,8173,8174,8175,8176,8177,8178,8179,8180,8181,8182,8183,8184,8185,8186,8187,8188,8189,8190,8191,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8203,8204,8205,8206,8207,8208,8209,8210,8211,8212,8213,8214,
-8215,8216,8217,8218,8219,8220,8221,8222,8223,8224,8225,8226,8227,8228,8229,8230,8231,8232,8233,8234,8235,8236,8237,8238,8239,8240,8241,8242,8243,8244,8245,8246,8247,8248,8249,8250,8251,8252,8253,8254,8255,8256,8257,8258,8259,8260,8261,8262,8263,8264,8265,8266,8267,8268,8269,8270,8271];!0},{"./init":20}],22:[function(b,a,d){!function(a){a.jp2CharContext=[[0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,
-0,0,0,0,0,0,0,0,0,0,1],[2,4,0,4,0,3,0,4,0,3,4,4,4,2,4,3,3,4,3,2,3,3,4,2,3,3,3,2,4,1,4,3,3,1,5,4,3,4,3,4,3,5,3,0,3,5,4,2,0,3,1,0,3,3,0,3,3,0,1,1,0,4,3,0,3,3,0,4,0,2,0,3,5,5,5,5,4,0,4,1,0,3,4],[0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2],[0,4,0,5,0,5,0,4,0,4,5,4,4,3,5,3,5,1,5,3,4,3,4,4,3,4,3,3,4,3,5,4,4,3,5,5,3,5,5,5,3,5,5,3,4,5,5,3,1,3,2,0,3,4,0,4,2,0,4,2,1,5,3,2,3,5,0,4,0,2,0,
-5,4,4,5,4,5,0,4,0,0,4,4],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,3,0,4,0,3,0,3,0,4,5,4,3,3,3,3,4,3,5,4,4,3,5,4,4,3,4,3,4,4,4,4,5,3,4,4,3,4,5,5,4,5,5,1,4,5,4,3,0,3,3,1,3,3,0,4,4,0,3,3,1,5,3,3,3,5,0,4,0,3,0,4,4,3,4,3,3,0,4,1,1,3,4],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0],[0,4,0,3,0,3,0,4,0,3,4,4,3,2,2,1,2,1,3,1,3,3,3,3,3,4,3,1,3,3,5,3,3,0,4,3,0,5,4,3,3,5,4,4,3,4,4,5,0,1,2,0,1,2,0,2,2,0,1,0,0,5,2,2,1,4,0,3,0,1,0,4,4,3,5,4,3,0,2,1,0,4,3],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,3,0,5,0,4,0,2,1,4,4,2,4,1,4,2,4,2,4,3,3,3,4,3,3,3,3,1,4,2,3,3,3,1,4,4,1,1,1,4,3,3,2,0,2,4,3,2,0,3,3,0,3,1,1,0,0,0,3,3,0,4,2,2,3,4,0,4,0,
-3,0,4,4,5,3,4,4,0,3,0,0,1,4],[1,4,0,4,0,4,0,4,0,3,5,4,4,3,4,3,5,4,3,3,4,3,5,4,4,4,4,3,4,2,4,3,3,1,5,4,3,2,4,5,4,5,5,4,4,5,4,4,0,3,2,2,3,3,0,4,3,1,3,2,1,4,3,3,4,5,0,3,0,2,0,4,5,5,4,5,4,0,4,0,0,5,4],[0,5,0,5,0,4,0,3,0,4,4,3,4,3,3,3,4,0,4,4,4,3,4,3,4,3,3,1,4,2,4,3,4,0,5,4,1,4,5,4,4,5,3,2,4,3,4,3,2,4,1,3,3,3,2,3,2,0,4,3,3,4,3,3,3,4,0,4,0,3,0,4,5,4,4,4,3,0,4,1,0,1,3],[0,3,1,4,0,3,0,2,0,3,4,4,3,1,4,2,3,3,4,3,4,3,4,3,4,4,3,2,3,1,5,4,4,1,4,4,3,5,4,4,3,5,5,4,3,4,4,3,1,2,3,1,2,2,0,3,2,0,3,1,0,5,3,3,3,4,3,3,
-3,3,4,4,4,4,5,4,2,0,3,3,2,4,3],[0,2,0,3,0,1,0,1,0,0,3,2,0,0,2,0,1,0,2,1,3,3,3,1,2,3,1,0,1,0,4,2,1,1,3,3,0,4,3,3,1,4,3,3,0,3,3,2,0,0,0,0,1,0,0,2,0,0,0,0,0,4,1,0,2,3,2,2,2,1,3,3,3,4,4,3,2,0,3,1,0,3,3],[0,4,0,4,0,3,0,3,0,4,4,4,3,3,3,3,3,3,4,3,4,2,4,3,4,3,3,2,4,3,4,5,4,1,4,5,3,5,4,5,3,5,4,0,3,5,5,3,1,3,3,2,2,3,0,3,4,1,3,3,2,4,3,3,3,4,0,4,0,3,0,4,5,4,4,5,3,0,4,1,0,3,4],[0,2,0,3,0,3,0,0,0,2,2,2,1,0,1,0,0,0,3,0,3,0,3,0,1,3,1,0,3,1,3,3,3,1,3,3,3,0,1,3,1,3,4,0,0,3,1,1,0,3,2,0,0,0,0,1,3,0,1,0,0,3,3,2,0,3,0,
-0,0,0,0,3,4,3,4,3,3,0,3,0,0,2,3],[2,3,0,3,0,2,0,1,0,3,3,4,3,1,3,1,1,1,3,1,4,3,4,3,3,3,0,0,3,1,5,4,3,1,4,3,2,5,5,4,4,4,4,3,3,4,4,4,0,2,1,1,3,2,0,1,2,0,0,1,0,4,1,3,3,3,0,3,0,1,0,4,4,4,5,5,3,0,2,0,0,4,4],[0,2,0,1,0,3,1,3,0,2,3,3,3,0,3,1,0,0,3,0,3,2,3,1,3,2,1,1,0,0,4,2,1,0,2,3,1,4,3,2,0,4,4,3,1,3,1,3,0,1,0,0,1,0,0,0,1,0,0,0,0,4,1,1,1,2,0,3,0,0,0,3,4,2,4,3,2,0,1,0,0,3,3],[0,1,0,4,0,5,0,4,0,2,4,4,2,3,3,2,3,3,5,3,3,3,4,3,4,2,3,0,4,3,3,3,4,1,4,3,2,1,5,5,3,4,5,1,3,5,4,2,0,3,3,0,1,3,0,4,2,0,1,3,1,4,3,3,3,3,
-0,3,0,1,0,3,4,4,4,5,5,0,3,0,1,4,5],[0,2,0,3,0,3,0,0,0,2,3,1,3,0,4,0,1,1,3,0,3,4,3,2,3,1,0,3,3,2,3,1,3,0,2,3,0,2,1,4,1,2,2,0,0,3,3,0,0,2,0,0,0,1,0,0,0,0,2,2,0,3,2,1,3,3,0,2,0,2,0,0,3,3,1,2,4,0,3,0,2,2,3],[2,4,0,5,0,4,0,4,0,2,4,4,4,3,4,3,3,3,1,2,4,3,4,3,4,4,5,0,3,3,3,3,2,0,4,3,1,4,3,4,1,4,4,3,3,4,4,3,1,2,3,0,4,2,0,4,1,0,3,3,0,4,3,3,3,4,0,4,0,2,0,3,5,3,4,5,2,0,3,0,0,4,5],[0,3,0,4,0,1,0,1,0,1,3,2,2,1,3,0,3,0,2,0,2,0,3,0,2,0,0,0,1,0,1,1,0,0,3,1,0,0,0,4,0,3,1,0,2,1,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,4,2,2,3,
-1,0,3,0,0,0,1,4,4,4,3,0,0,4,0,0,1,4],[1,4,1,5,0,3,0,3,0,4,5,4,4,3,5,3,3,4,4,3,4,1,3,3,3,3,2,1,4,1,5,4,3,1,4,4,3,5,4,4,3,5,4,3,3,4,4,4,0,3,3,1,2,3,0,3,1,0,3,3,0,5,4,4,4,4,4,4,3,3,5,4,4,3,3,5,4,0,3,2,0,4,4],[0,2,0,3,0,1,0,0,0,1,3,3,3,2,4,1,3,0,3,1,3,0,2,2,1,1,0,0,2,0,4,3,1,0,4,3,0,4,4,4,1,4,3,1,1,3,3,1,0,2,0,0,1,3,0,0,0,0,2,0,0,4,3,2,4,3,5,4,3,3,3,4,3,3,4,3,3,0,2,1,0,3,3],[0,2,0,4,0,3,0,2,0,2,5,5,3,4,4,4,4,1,4,3,3,0,4,3,4,3,1,3,3,2,4,3,0,3,4,3,0,3,4,4,2,4,4,0,4,5,3,3,2,2,1,1,1,2,0,1,5,0,3,3,2,4,3,3,
-3,4,0,3,0,2,0,4,4,3,5,5,0,0,3,0,2,3,3],[0,3,0,4,0,3,0,1,0,3,4,3,3,1,3,3,3,0,3,1,3,0,4,3,3,1,1,0,3,0,3,3,0,0,4,4,0,1,5,4,3,3,5,0,3,3,4,3,0,2,0,1,1,1,0,1,3,0,1,2,1,3,3,2,3,3,0,3,0,1,0,1,3,3,4,4,1,0,1,2,2,1,3],[0,1,0,4,0,4,0,3,0,1,3,3,3,2,3,1,1,0,3,0,3,3,4,3,2,4,2,0,1,0,4,3,2,0,4,3,0,5,3,3,2,4,4,4,3,3,3,4,0,1,3,0,0,1,0,0,1,0,0,0,0,4,2,3,3,3,0,3,0,0,0,4,4,4,5,3,2,0,3,3,0,3,5],[0,2,0,3,0,0,0,3,0,1,3,0,2,0,0,0,1,0,3,1,1,3,3,0,0,3,0,0,3,0,2,3,1,0,3,1,0,3,3,2,0,4,2,2,0,2,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,1,
-2,0,1,0,1,0,0,0,1,3,1,2,0,0,0,1,0,0,1,4],[0,3,0,3,0,5,0,1,0,2,4,3,1,3,3,2,1,1,5,2,1,0,5,1,2,0,0,0,3,3,2,2,3,2,4,3,0,0,3,3,1,3,3,0,2,5,3,4,0,3,3,0,1,2,0,2,2,0,3,2,0,2,2,3,3,3,0,2,0,1,0,3,4,4,2,5,4,0,3,0,0,3,5],[0,3,0,3,0,3,0,1,0,3,3,3,3,0,3,0,2,0,2,1,1,0,2,0,1,0,0,0,2,1,0,0,1,0,3,2,0,0,3,3,1,2,3,1,0,3,3,0,0,1,0,0,0,0,0,2,0,0,0,0,0,2,3,1,2,3,0,3,0,1,0,3,2,1,0,4,3,0,1,1,0,3,3],[0,4,0,5,0,3,0,3,0,4,5,5,4,3,5,3,4,3,5,3,3,2,5,3,4,4,4,3,4,3,4,5,5,3,4,4,3,4,4,5,4,4,4,3,4,5,5,4,2,3,4,2,3,4,0,3,3,1,4,3,2,4,
-3,3,5,5,0,3,0,3,0,5,5,5,5,4,4,0,4,0,1,4,4],[0,4,0,4,0,3,0,3,0,3,5,4,4,2,3,2,5,1,3,2,5,1,4,2,3,2,3,3,4,3,3,3,3,2,5,4,1,3,3,5,3,4,4,0,4,4,3,1,1,3,1,0,2,3,0,2,3,0,3,0,0,4,3,1,3,4,0,3,0,2,0,4,4,4,3,4,5,0,4,0,0,3,4],[0,3,0,3,0,3,1,2,0,3,4,4,3,3,3,0,2,2,4,3,3,1,3,3,3,1,1,0,3,1,4,3,2,3,4,4,2,4,4,4,3,4,4,3,2,4,4,3,1,3,3,1,3,3,0,4,1,0,2,2,1,4,3,2,3,3,5,4,3,3,5,4,4,3,3,0,4,0,3,2,2,4,4],[0,2,0,1,0,0,0,0,0,1,2,1,3,0,0,0,0,0,2,0,1,2,1,0,0,1,0,0,0,0,3,0,0,1,0,1,1,3,1,0,0,0,1,1,0,1,1,0,0,0,0,0,2,0,0,0,0,0,0,0,0,
-1,1,2,2,0,3,4,0,0,0,1,1,0,0,1,0,0,0,0,0,1,1],[0,1,0,0,0,1,0,0,0,0,4,0,4,1,4,0,3,0,4,0,3,0,4,0,3,0,3,0,4,1,5,1,4,0,0,3,0,5,0,5,2,0,1,0,0,0,2,1,4,0,1,3,0,0,3,0,0,3,1,1,4,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0],[1,4,0,5,0,3,0,2,0,3,5,4,4,3,4,3,5,3,4,3,3,0,4,3,3,3,3,3,3,2,4,4,3,1,3,4,4,5,4,4,3,4,4,1,3,5,4,3,3,3,1,2,2,3,3,1,3,1,3,3,3,5,3,3,4,5,0,3,0,3,0,3,4,3,4,4,3,0,3,0,2,4,3],[0,1,0,4,0,0,0,0,0,1,4,0,4,1,4,2,4,0,3,0,1,0,1,0,0,0,0,0,2,0,3,1,1,1,0,3,0,0,0,1,2,1,0,0,1,1,1,1,0,1,0,0,0,1,0,0,3,0,0,0,
-0,3,2,0,2,2,0,1,0,0,0,2,3,2,3,3,0,0,0,0,2,1,0],[0,5,1,5,0,3,0,3,0,5,4,4,5,1,5,3,3,0,4,3,4,3,5,3,4,3,3,2,4,3,4,3,3,0,3,3,1,4,4,3,4,4,4,3,4,5,5,3,2,3,1,1,3,3,1,3,1,1,3,3,2,4,5,3,3,5,0,4,0,3,0,4,4,3,5,3,3,0,3,4,0,4,3],[0,5,0,5,0,3,0,2,0,4,4,3,5,2,4,3,3,3,4,4,4,3,5,3,5,3,3,1,4,0,4,3,3,0,3,3,0,4,4,4,4,5,4,3,3,5,5,3,2,3,1,2,3,2,0,1,0,0,3,2,2,4,4,3,1,5,0,4,0,3,0,4,3,1,3,2,1,0,3,3,0,3,3],[0,4,0,5,0,5,0,4,0,4,5,5,5,3,4,3,3,2,5,4,4,3,5,3,5,3,4,0,4,3,4,4,3,2,4,4,3,4,5,4,4,5,5,0,3,5,5,4,1,3,3,2,3,3,1,3,1,0,4,
-3,1,4,4,3,4,5,0,4,0,2,0,4,3,4,4,3,3,0,4,0,0,5,5],[0,4,0,4,0,5,0,1,1,3,3,4,4,3,4,1,3,0,5,1,3,0,3,1,3,1,1,0,3,0,3,3,4,0,4,3,0,4,4,4,3,4,4,0,3,5,4,1,0,3,0,0,2,3,0,3,1,0,3,1,0,3,2,1,3,5,0,3,0,1,0,3,2,3,3,4,4,0,2,2,0,4,4],[2,4,0,5,0,4,0,3,0,4,5,5,4,3,5,3,5,3,5,3,5,2,5,3,4,3,3,4,3,4,5,3,2,1,5,4,3,2,3,4,5,3,4,1,2,5,4,3,0,3,3,0,3,2,0,2,3,0,4,1,0,3,4,3,3,5,0,3,0,1,0,4,5,5,5,4,3,0,4,2,0,3,5],[0,5,0,4,0,4,0,2,0,5,4,3,4,3,4,3,3,3,4,3,4,2,5,3,5,3,4,1,4,3,4,4,4,0,3,5,0,4,4,4,4,5,3,1,3,4,5,3,3,3,3,3,3,3,0,2,2,0,
-3,3,2,4,3,3,3,5,3,4,1,3,3,5,3,2,0,0,0,0,4,3,1,3,3],[0,1,0,3,0,3,0,1,0,1,3,3,3,2,3,3,3,0,3,0,0,0,3,1,3,0,0,0,2,2,2,3,0,0,3,2,0,1,2,4,1,3,3,0,0,3,3,3,0,1,0,0,2,1,0,0,3,0,3,1,0,3,0,0,1,3,0,2,0,1,0,3,3,1,3,3,0,0,1,1,0,3,3],[0,2,0,3,0,2,1,4,0,2,2,3,1,1,3,1,1,0,2,0,3,1,2,3,1,3,0,0,1,0,4,3,2,3,3,3,1,4,2,3,3,3,3,1,0,3,1,4,0,1,1,0,1,2,0,1,1,0,1,1,0,3,1,3,2,2,0,1,0,0,0,2,3,3,3,1,0,0,0,0,0,2,3],[0,5,0,4,0,5,0,2,0,4,5,5,3,3,4,3,3,1,5,4,4,2,4,4,4,3,4,2,4,3,5,5,4,3,3,4,3,3,5,5,4,5,5,1,3,4,5,3,1,4,3,1,3,3,0,3,3,
-1,4,3,1,4,5,3,3,5,0,4,0,3,0,5,3,3,1,4,3,0,4,0,1,5,3],[0,5,0,5,0,4,0,2,0,4,4,3,4,3,3,3,3,3,5,4,4,4,4,4,4,5,3,3,5,2,4,4,4,3,4,4,3,3,4,4,5,5,3,3,4,3,4,3,3,4,3,3,3,3,1,2,2,1,4,3,3,5,4,4,3,4,0,4,0,3,0,4,4,4,4,4,1,0,4,2,0,2,4],[0,4,0,4,0,3,0,1,0,3,5,2,3,0,3,0,2,1,4,2,3,3,4,1,4,3,3,2,4,1,3,3,3,0,3,3,0,0,3,3,3,5,3,3,3,3,3,2,0,2,0,0,2,0,0,2,0,0,1,0,0,3,1,2,2,3,0,3,0,2,0,4,4,3,3,4,1,0,3,0,0,2,4],[0,0,0,4,0,0,0,0,0,0,1,0,1,0,2,0,0,0,0,0,1,0,2,0,1,0,0,0,0,0,3,1,3,0,3,2,0,0,0,1,0,3,2,0,0,2,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,0,2,0,0,0,0,0,0,2],[0,2,1,3,0,2,0,2,0,3,3,3,3,1,3,1,3,3,3,3,3,3,4,2,2,1,2,1,4,0,4,3,1,3,3,3,2,4,3,5,4,3,3,3,3,3,3,3,0,1,3,0,2,0,0,1,0,0,1,0,0,4,2,0,2,3,0,3,3,0,3,3,4,2,3,1,4,0,1,2,0,2,3],[0,3,0,3,0,1,0,3,0,2,3,3,3,0,3,1,2,0,3,3,2,3,3,2,3,2,3,1,3,0,4,3,2,0,3,3,1,4,3,3,2,3,4,3,1,3,3,1,1,0,1,1,0,1,0,1,0,1,0,0,0,4,1,1,0,3,0,3,1,0,2,3,3,3,3,3,1,0,0,2,0,3,3],[0,0,0,0,0,0,0,0,0,0,3,0,2,0,3,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,3,0,3,0,3,1,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,2,0,2,3,0,0,0,0,0,0,0,0,3],[0,2,0,3,1,3,0,3,0,2,3,3,3,1,3,1,3,1,3,1,3,3,3,1,3,0,2,3,1,1,4,3,3,2,3,3,1,2,2,4,1,3,3,0,1,4,2,3,0,1,3,0,3,0,0,1,3,0,2,0,0,3,3,2,1,3,0,3,0,2,0,3,4,4,4,3,1,0,3,0,0,3,3],[0,2,0,1,0,2,0,0,0,1,3,2,2,1,3,0,1,1,3,0,3,2,3,1,2,0,2,0,1,1,3,3,3,0,3,3,1,1,2,3,2,3,3,1,2,3,2,0,0,1,0,0,0,0,0,0,3,0,1,0,0,2,1,2,1,3,0,3,0,0,0,3,4,4,4,3,2,0,2,0,0,2,4],[0,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,2,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,3,1,0,0,0,0,0,0,0,3],[0,3,0,3,0,2,0,3,0,3,3,3,2,3,2,2,2,0,3,1,3,3,3,2,3,3,0,0,3,0,3,2,2,0,2,3,1,4,3,4,3,3,2,3,1,5,4,4,0,3,1,2,1,3,0,3,1,1,2,0,2,3,1,3,1,3,0,3,0,1,0,3,3,4,4,2,1,0,2,1,0,2,4],[0,1,0,3,0,1,0,2,0,1,4,2,5,1,4,0,2,0,2,1,3,1,4,0,2,1,0,0,2,1,4,1,1,0,3,3,0,5,1,3,2,3,3,1,0,3,2,3,0,1,0,0,0,0,0,0,1,0,0,0,0,4,0,1,0,3,0,2,0,1,0,3,3,3,4,3,3,0,0,0,0,2,3],[0,0,0,1,0,0,0,0,0,0,2,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,0,1,0,0,0,0,0,3],[0,1,0,3,0,4,0,3,0,2,4,3,1,0,3,2,2,1,3,1,2,2,3,1,1,1,2,1,3,0,1,2,0,1,3,2,1,3,0,5,5,1,0,0,1,3,2,1,0,3,0,0,1,0,0,0,0,0,3,4,0,1,1,1,3,2,0,2,0,1,0,2,3,3,1,2,3,0,1,0,1,0,4],[0,0,0,1,0,3,0,3,0,2,2,1,0,0,4,0,3,0,3,1,3,0,3,0,3,0,1,0,3,0,3,1,3,0,3,3,0,0,1,2,1,1,1,0,1,2,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,2,2,1,2,0,0,2,0,0,0,0,2,3,3,3,3,0,0,0,0,1,4],[0,0,0,3,0,3,0,0,0,0,3,1,1,0,3,0,1,0,2,0,1,0,0,0,0,0,0,0,1,0,3,0,2,0,2,3,0,0,2,2,3,1,2,0,0,1,0,0,0,0,0,0,
-0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,2,0,0,0,0,2,3],[2,4,0,5,0,5,0,4,0,3,4,3,3,3,4,3,3,3,4,3,4,4,5,4,5,5,5,2,3,0,5,5,4,1,5,4,3,1,5,4,3,4,4,3,3,4,3,3,0,3,2,0,2,3,0,3,0,0,3,3,0,5,3,2,3,3,0,3,0,3,0,3,4,5,4,5,3,0,4,3,0,3,4],[0,3,0,3,0,3,0,3,0,3,3,4,3,2,3,2,3,0,4,3,3,3,3,3,3,3,3,0,3,2,4,3,3,1,3,4,3,4,4,4,3,4,4,3,2,4,4,1,0,2,0,0,1,1,0,2,0,0,3,1,0,5,3,2,1,3,0,3,0,1,2,4,3,2,4,3,3,0,3,2,0,4,4],[0,3,0,3,0,1,0,0,0,1,4,3,3,2,3,1,3,1,4,2,3,2,4,2,3,4,3,0,2,2,3,3,3,0,3,3,3,0,3,4,1,3,3,0,3,4,3,3,0,1,1,
-0,1,0,0,0,4,0,3,0,0,3,1,2,1,3,0,4,0,1,0,4,3,3,4,3,3,0,2,0,0,3,3],[0,3,0,4,0,1,0,3,0,3,4,3,3,0,3,3,3,1,3,1,3,3,4,3,3,3,0,0,3,1,5,3,3,1,3,3,2,5,4,3,3,4,5,3,2,5,3,4,0,1,0,0,0,0,0,2,0,0,1,1,0,4,2,2,1,3,0,3,0,2,0,4,4,3,5,3,2,0,1,1,0,3,4],[0,5,0,4,0,5,0,2,0,4,4,3,3,2,3,3,3,1,4,3,4,1,5,3,4,3,4,0,4,2,4,3,4,1,5,4,0,4,4,4,4,5,4,1,3,5,4,2,1,4,1,1,3,2,0,3,1,0,3,2,1,4,3,3,3,4,0,4,0,3,0,4,4,4,3,3,3,0,4,2,0,3,4],[1,4,0,4,0,3,0,1,0,3,3,3,1,1,3,3,2,2,3,3,1,0,3,2,2,1,2,0,3,1,2,1,2,0,3,2,0,2,2,3,3,4,3,0,3,3,1,2,0,1,
-1,3,1,2,0,0,3,0,1,1,0,3,2,2,3,3,0,3,0,0,0,2,3,3,4,3,3,0,1,0,0,1,4],[0,4,0,4,0,4,0,0,0,3,4,4,3,1,4,2,3,2,3,3,3,1,4,3,4,0,3,0,4,2,3,3,2,2,5,4,2,1,3,4,3,4,3,1,3,3,4,2,0,2,1,0,3,3,0,0,2,0,3,1,0,4,4,3,4,3,0,4,0,1,0,2,4,4,4,4,4,0,3,2,0,3,3],[0,0,0,1,0,4,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,3,2,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,2],[0,2,0,3,0,4,0,4,0,1,3,3,3,0,4,0,2,1,2,1,1,1,2,0,3,1,1,0,1,0,3,1,0,0,3,3,2,0,1,1,0,0,0,0,0,1,0,2,0,
-2,2,0,3,1,0,0,1,0,1,1,0,1,2,0,3,0,0,0,0,1,0,0,3,3,4,3,1,0,1,0,3,0,2],[0,0,0,3,0,5,0,0,0,0,1,0,2,0,3,1,0,1,3,0,0,0,2,0,0,0,1,0,0,0,1,1,0,0,4,0,0,0,2,3,0,1,4,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,3,0,0,0,0,0,3],[0,2,0,5,0,5,0,1,0,2,4,3,3,2,5,1,3,2,3,3,3,0,4,1,2,0,3,0,4,0,2,2,1,1,5,3,0,0,1,4,2,3,2,0,3,3,3,2,0,2,4,1,1,2,0,1,1,0,3,1,0,1,3,1,2,3,0,2,0,0,0,1,3,5,4,4,4,0,3,0,0,1,3],[0,4,0,5,0,4,0,4,0,4,5,4,3,3,4,3,3,3,4,3,4,4,5,3,4,5,4,2,4,2,3,4,3,1,4,4,1,3,5,4,4,5,5,4,4,5,5,5,
-2,3,3,1,4,3,1,3,3,0,3,3,1,4,3,4,4,4,0,3,0,4,0,3,3,4,4,5,0,0,4,3,0,4,5],[0,4,0,4,0,3,0,3,0,3,4,4,4,3,3,2,4,3,4,3,4,3,5,3,4,3,2,1,4,2,4,4,3,1,3,4,2,4,5,5,3,4,5,4,1,5,4,3,0,3,2,2,3,2,1,3,1,0,3,3,3,5,3,3,3,5,4,4,2,3,3,4,3,3,3,2,1,0,3,2,1,4,3],[0,4,0,5,0,4,0,3,0,3,5,5,3,2,4,3,4,0,5,4,4,1,4,4,4,3,3,3,4,3,5,5,2,3,3,4,1,2,5,5,3,5,5,2,3,5,5,4,0,3,2,0,3,3,1,1,5,1,4,1,0,4,3,2,3,5,0,4,0,3,0,5,4,3,4,3,0,0,4,1,0,4,4],[1,3,0,4,0,2,0,2,0,2,5,5,3,3,3,3,3,0,4,2,3,4,4,4,3,4,0,0,3,4,5,4,3,3,3,3,2,5,5,4,5,5,5,4,3,5,5,
-5,1,3,1,0,1,0,0,3,2,0,4,2,0,5,2,3,2,4,1,3,0,3,0,4,5,4,5,4,3,0,4,2,0,5,4],[0,3,0,4,0,5,0,3,0,3,4,4,3,2,3,2,3,3,3,3,3,2,4,3,3,2,2,0,3,3,3,3,3,1,3,3,3,0,4,4,3,4,4,1,1,4,4,2,0,3,1,0,1,1,0,4,1,0,2,3,1,3,3,1,3,4,0,3,0,1,0,3,1,3,0,0,1,0,2,0,0,4,4],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,3,0,3,0,2,0,3,0,1,5,4,3,3,3,1,4,2,1,2,3,4,4,2,4,4,5,0,3,1,4,3,4,0,4,3,3,3,2,3,2,5,3,4,3,2,
-2,3,0,0,3,0,2,1,0,1,2,0,0,0,0,2,1,1,3,1,0,2,0,4,0,3,4,4,4,5,2,0,2,0,0,1,3],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,0,0,1,1,0,0,0,4,2,1,1,0,1,0,3,2,0,0,3,1,1,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,1,0,0,0,2,0,0,0,1,4,0,4,2,1,0,0,0,0,0,1],[0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,3,1,0,0,0,2,0,2,1,0,0,1,2,1,0,1,1,0,0,3,0,0,0,0,0,0,0,0,0,0,0,1,3,1,0,0,0,0,0,1,0,0,2,1,0,0,0,0,0,0,0,0,2],[0,4,0,4,0,4,0,3,0,4,4,3,4,2,4,3,2,0,4,4,4,3,5,3,5,3,3,2,4,2,4,3,4,3,1,4,0,2,3,4,4,4,3,3,3,
-4,4,4,3,4,1,3,4,3,2,1,2,1,3,3,3,4,4,3,3,5,0,4,0,3,0,4,3,3,3,2,1,0,3,0,0,3,3],[0,4,0,3,0,3,0,3,0,3,5,5,3,3,3,3,4,3,4,3,3,3,4,4,4,3,3,3,3,4,3,5,3,3,1,3,2,4,5,5,5,5,4,3,4,5,5,3,2,2,3,3,3,3,2,3,3,1,2,3,2,4,3,3,3,4,0,4,0,2,0,4,3,2,2,1,2,0,3,0,0,4,1]];a.JapaneseContextAnalysis=function(){this.reset=function(){this._mTotalRel=0;this._mRelSample=[];for(var a=0;6>a;this._mRelSample[a++]=0);this._mNeedToSkipCharNum=0;this._mLastCharOrder=-1;this._mDone=!1};this.feed=function(b,f){if(!this._mDone)for(var c=
-this._mNeedToSkipCharNum;c<f;){var e=this.getOrder(b.slice(c,c+2)),d=e[0],c=c+e[1];if(c>f)this._mNeedToSkipCharNum=c-f,this._mLastCharOrder=-1;else{if(-1!=d&&-1!=this._mLastCharOrder){this._mTotalRel+=1;if(1E3<this._mTotalRel){this._mDone=!0;break}this._mRelSample[a.jp2CharContext[this._mLastCharOrder][d]]+=1}this._mLastCharOrder=d}}};this.gotEnoughData=function(){return 100<this._mTotalRel};this.getConfidence=function(){return 4<this._mTotalRel?(this._mTotalRel-this._mRelSample[0])/this._mTotalRel:
--1};this.getOrder=function(a){return[-1,1]};this.reset()};a.SJISContextAnalysis=function(){this.getOrder=function(a){if(!a)return[-1,1];var b=129<=a.charCodeAt(0)&&159>=a.charCodeAt(0)||224<=a.charCodeAt(0)&&252>=a.charCodeAt(0)?2:1;return 1<a.length&&130==a.charCodeAt(0)&&159<=a.charCodeAt(1)&&241>=a.charCodeAt(0)?[a.charCodeAt(1)-159,b]:[-1,b]}};a.SJISContextAnalysis.prototype=new a.JapaneseContextAnalysis;a.EUCJPContextAnalysis=function(){this.getOrder=function(a){if(!a)return[-1,1];var b=142<=
-a.charCodeAt(0)||161<=a.charCodeAt(0)&&254>=a.charCodeAt(0)?2:143==a.charCodeAt(0)?3:1;return 1<a.length&&164==a.charCodeAt(0)&&161<=a.charCodeAt(1)&&243>=a.charCodeAt(1)?[a.charCodeAt(1)-161,b]:[-1,b]}};a.EUCJPContextAnalysis.prototype=new a.JapaneseContextAnalysis}(b("./init"))},{"./init":20}],23:[function(b,a,d){b=b("./init");b.Latin5_BulgarianCharToOrderMap=[255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,
-253,253,253,253,253,253,253,253,253,253,253,253,253,253,252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253,253,77,90,99,100,72,109,107,101,79,185,81,102,76,94,82,110,186,108,91,74,119,84,96,111,187,115,253,253,253,253,253,253,65,69,70,66,63,68,112,103,92,194,104,95,86,87,71,116,195,85,93,97,113,196,197,198,199,200,253,253,253,253,253,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,81,226,227,228,229,230,105,
-231,232,233,234,235,236,45,237,238,31,32,35,43,37,44,55,47,40,59,33,46,38,36,41,30,39,28,34,51,48,49,53,50,54,57,61,239,67,240,60,56,1,18,9,20,11,3,23,15,2,26,12,10,14,6,4,13,7,8,5,19,29,25,22,21,27,24,17,75,52,241,42,16,62,242,243,244,58,245,98,246,247,248,249,250,251,91,252,253];b.win1251BulgarianCharToOrderMap=[255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,
-253,252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253,253,77,90,99,100,72,109,107,101,79,185,81,102,76,94,82,110,186,108,91,74,119,84,96,111,187,115,253,253,253,253,253,253,65,69,70,66,63,68,112,103,92,194,104,95,86,87,71,116,195,85,93,97,113,196,197,198,199,200,253,253,253,253,253,206,207,208,209,210,211,212,213,120,214,215,216,217,218,219,220,221,78,64,83,121,98,117,105,222,223,224,225,226,227,228,229,88,230,231,232,233,122,89,106,234,235,236,237,238,45,239,240,73,80,118,114,241,242,
-243,244,245,62,58,246,247,248,249,250,31,32,35,43,37,44,55,47,40,59,33,46,38,36,41,30,39,28,34,51,48,49,53,50,54,57,61,251,67,252,60,56,1,18,9,20,11,3,23,15,2,26,12,10,14,6,4,13,7,8,5,19,29,25,22,21,27,24,17,75,52,253,42,16];b.BulgarianLangModel=[0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,3,3,3,2,2,3,2,2,1,2,2,3,1,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,0,3,3,3,3,3,3,3,3,3,3,0,3,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,2,3,3,3,3,3,3,3,3,0,3,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,1,3,2,3,3,3,3,3,3,3,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,1,3,2,3,3,3,3,3,3,3,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,2,3,2,2,1,3,3,3,3,2,2,2,1,1,2,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,
-0,0,0,0,0,1,3,3,3,3,3,3,3,2,3,2,2,3,3,1,1,2,3,3,2,3,3,3,3,2,1,2,0,2,0,3,0,0,0,0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1,3,3,3,3,3,3,3,1,3,3,3,3,3,2,3,2,3,3,3,3,3,2,3,3,1,3,0,3,0,2,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,3,3,3,3,3,3,3,3,1,3,3,2,3,3,3,1,3,3,2,3,2,2,2,0,0,2,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1,3,3,3,3,3,3,3,3,3,0,3,3,3,2,2,3,3,3,1,2,2,3,2,1,1,2,0,2,0,0,0,0,1,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,1,0,0,0,1,
-0,0,0,0,0,0,0,0,0,0,1,3,3,3,3,3,3,3,2,3,3,1,2,3,2,2,2,3,3,3,3,3,2,2,3,1,2,0,2,1,2,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1,3,3,3,3,3,1,3,3,3,3,3,2,3,3,3,2,3,3,2,3,2,2,2,3,1,2,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,3,3,3,3,3,3,3,3,3,3,3,1,1,1,2,2,1,3,1,3,2,2,3,0,0,1,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,3,3,3,3,3,2,2,3,2,2,3,1,2,1,1,1,2,3,1,3,1,2,2,0,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,
-0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,3,3,3,3,3,1,3,2,2,3,3,1,2,3,1,1,3,3,3,3,1,2,2,1,1,1,0,2,0,2,0,1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,2,2,3,3,3,2,2,1,1,2,0,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,3,0,1,2,1,3,3,2,3,3,3,3,3,2,3,2,1,0,3,1,2,1,2,1,2,3,2,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,2,3,3,3,3,3,3,3,3,3,3,3,3,0,0,3,1,3,3,2,3,3,2,2,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,3,3,3,0,3,3,3,3,3,2,1,1,2,1,3,3,0,3,1,1,1,1,3,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,3,3,2,2,2,3,3,3,3,3,3,3,3,3,3,3,1,1,3,1,3,3,2,3,2,2,2,3,0,2,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,2,3,3,2,2,3,2,1,1,1,1,1,3,1,3,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,2,3,2,0,3,2,0,3,0,2,0,0,2,1,3,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,3,3,2,1,1,1,1,2,1,1,2,1,1,1,2,2,1,2,1,1,1,0,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,3,3,3,3,2,1,3,1,1,2,1,3,2,1,1,0,1,2,3,2,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,3,3,3,2,2,1,0,1,0,0,1,0,0,0,2,1,0,3,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,3,2,3,2,3,3,1,3,2,1,1,1,2,1,1,2,1,3,0,1,0,0,0,1,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,1,2,2,3,3,2,3,2,2,2,3,1,2,2,1,1,2,1,1,2,2,0,1,1,0,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,2,1,3,1,0,2,2,1,3,2,1,0,0,2,0,2,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,3,3,3,3,3,3,1,2,0,2,3,1,2,3,2,0,1,3,1,2,1,1,1,0,0,1,0,0,2,2,2,3,2,2,2,2,1,2,1,1,2,2,1,1,2,0,1,1,1,0,0,1,1,0,0,1,1,0,0,0,1,1,0,1,3,3,3,3,3,2,1,2,2,1,2,0,2,0,1,0,1,2,1,2,1,1,0,0,0,1,0,1,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1,3,3,2,3,3,1,1,3,1,0,3,2,1,0,0,0,1,2,0,2,0,1,0,0,0,1,0,1,2,1,2,2,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,0,1,2,1,1,1,0,0,0,0,0,1,1,0,0,3,1,0,1,0,2,3,2,2,2,3,2,2,2,2,2,1,0,2,1,2,1,1,1,0,1,2,1,2,2,2,1,1,1,2,2,2,2,1,2,1,1,0,1,2,1,2,2,2,1,1,1,0,1,1,1,1,2,0,1,0,0,0,0,2,3,2,3,3,0,0,2,1,0,2,1,0,0,0,0,2,3,0,2,0,0,0,0,0,1,0,0,2,0,1,2,2,1,2,1,2,2,1,1,1,2,1,1,1,0,1,2,2,1,1,1,1,1,0,1,1,1,0,0,1,2,0,0,3,3,2,2,3,0,2,3,1,1,2,0,0,0,1,0,0,2,0,2,0,0,0,
-1,0,1,0,1,2,0,2,2,1,1,1,1,2,1,0,1,2,2,2,1,1,1,1,1,1,1,0,1,1,1,0,0,0,0,0,0,1,1,0,0,2,3,2,3,3,0,0,3,0,1,1,0,1,0,0,0,2,2,1,2,0,0,0,0,0,0,0,0,2,0,1,2,2,2,1,1,1,1,1,2,2,2,1,0,2,0,1,0,1,0,0,1,0,1,0,0,1,0,0,0,0,1,0,0,3,3,3,3,2,2,2,2,2,0,2,1,1,1,1,2,1,2,1,1,0,2,0,1,0,1,0,0,2,0,1,2,1,1,1,1,1,1,1,2,2,1,1,0,2,0,1,0,2,0,0,1,1,1,0,0,2,0,0,0,1,1,0,0,2,3,3,3,3,1,0,0,0,0,0,0,0,0,0,0,2,0,0,1,1,0,0,0,0,0,0,1,2,0,1,2,2,2,2,1,1,2,1,1,2,2,2,1,2,0,1,1,1,1,1,1,0,1,1,1,1,0,0,1,1,1,0,0,2,3,3,3,3,0,2,2,0,2,1,0,0,0,1,1,1,2,
-0,2,0,0,0,3,0,0,0,0,2,0,2,2,1,1,1,2,1,2,1,1,2,2,2,1,2,0,1,1,1,0,1,1,1,1,0,2,1,0,0,0,1,1,0,0,2,3,3,3,3,0,2,1,0,0,2,0,0,0,0,0,1,2,0,2,0,0,0,0,0,0,0,0,2,0,1,2,1,1,1,2,1,1,1,1,2,2,2,0,1,0,1,1,1,0,0,1,1,1,0,0,1,0,0,0,0,1,0,0,3,3,2,2,3,0,1,0,1,0,0,0,0,0,0,0,1,1,0,3,0,0,0,0,0,0,0,0,1,0,2,2,1,1,1,1,1,2,1,1,2,2,1,2,2,1,0,1,1,1,1,1,0,1,0,0,1,0,0,0,1,1,0,0,3,1,0,1,0,2,2,2,2,3,2,1,1,1,2,3,0,0,1,0,2,1,1,0,1,1,1,1,2,1,1,1,1,2,2,1,2,1,2,2,1,1,0,1,2,1,2,2,1,1,1,0,0,1,1,1,2,1,0,1,0,0,0,0,2,1,0,1,0,3,1,2,2,2,2,1,2,
-2,1,1,1,0,2,1,2,2,1,1,2,1,1,0,2,1,1,1,1,2,2,2,2,2,2,2,1,2,0,1,1,0,2,1,1,1,1,1,0,0,1,1,1,1,0,1,0,0,0,0,2,1,1,1,1,2,2,2,2,1,2,2,2,1,2,2,1,1,2,1,2,3,2,2,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,3,2,0,1,2,0,1,2,1,1,0,1,0,1,2,1,2,0,0,0,1,1,0,0,0,1,0,0,2,1,1,0,0,1,1,0,1,1,1,1,0,2,0,1,1,1,0,0,1,1,0,0,0,0,1,0,0,0,1,0,0,2,0,0,0,0,1,2,2,2,2,2,2,2,1,2,1,1,1,1,1,1,1,0,1,1,1,1,1,2,1,1,1,1,2,2,2,2,1,1,2,1,2,1,1,1,0,2,1,2,1,1,1,0,2,1,1,1,1,0,1,0,0,0,0,3,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,1,0,1,0,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,3,2,0,0,0,0,1,0,0,0,0,0,0,1,1,0,2,0,0,0,0,0,0,0,0,1,0,1,2,1,1,1,1,1,1,0,0,2,2,2,2,2,0,1,1,0,1,1,1,1,1,0,0,1,0,0,0,1,1,0,1,2,3,1,2,1,0,1,1,0,2,2,2,0,0,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,1,2,1,1,1,1,2,1,1,1,1,1,1,1,1,0,1,1,0,1,0,1,0,1,0,0,1,0,0,0,0,1,0,0,2,2,2,2,2,0,0,2,0,0,2,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,2,0,2,2,1,1,1,1,1,0,0,1,2,1,1,0,1,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,2,2,
-2,2,0,0,2,0,1,1,0,0,0,1,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,2,2,3,2,0,0,1,0,0,1,0,0,0,0,0,0,1,0,2,0,0,0,1,0,0,0,0,0,0,0,2,1,1,0,0,1,0,0,0,1,1,0,0,1,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,2,1,2,2,2,1,2,1,2,2,1,1,2,1,1,1,0,1,1,1,1,2,0,1,0,1,1,1,1,0,1,1,1,1,2,1,1,1,1,1,1,0,0,1,2,1,1,1,1,1,1,0,0,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,3,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,2,2,2,2,1,0,0,1,0,2,0,0,0,0,0,1,1,1,0,1,0,0,0,0,0,0,0,0,2,0,0,1,0,2,0,1,0,0,1,1,2,0,1,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,2,2,0,1,1,0,2,1,0,1,1,1,0,0,1,0,2,0,1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,0,0,0,1,1,0,0,1,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,1,1,0,0,1,1,1,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,2,0,1,0,0,1,2,1,1,1,1,1,1,2,2,1,0,0,1,0,1,0,0,0,0,1,1,1,1,0,0,0,1,1,2,1,1,1,1,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,2,2,1,2,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,2,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,1,1,0,0,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,2,0,0,2,0,1,0,0,1,0,0,1,1,1,0,0,1,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,
-0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,1,1,1,1,1,1,2,0,0,0,0,0,0,2,1,0,1,1,0,0,1,1,1,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,1,0,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1];b.Latin5BulgarianModel={charToOrderMap:b.Latin5_BulgarianCharToOrderMap,precedenceMatrix:b.BulgarianLangModel,
-mTypicalPositiveRatio:.969392,keepEnglishLetter:!1,charsetName:"ISO-8859-5"};b.Win1251BulgarianModel={charToOrderMap:b.win1251BulgarianCharToOrderMap,precedenceMatrix:b.BulgarianLangModel,mTypicalPositiveRatio:.969392,keepEnglishLetter:!1,charsetName:"windows-1251"};!0},{"./init":20}],24:[function(b,a,d){b=b("./init");b.KOI8R_CharToOrderMap=[255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,253,253,253,253,253,253,
-253,253,253,253,253,253,253,253,252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253,253,142,143,144,145,146,147,148,149,150,151,152,74,153,75,154,155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253,253,71,172,66,173,65,174,76,175,64,176,177,77,72,178,69,67,179,78,73,180,181,79,182,183,184,185,253,253,253,253,253,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,68,226,227,228,229,230,
-231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,27,3,21,28,13,2,39,19,26,4,23,11,8,12,5,1,15,16,9,7,6,14,24,10,17,18,20,25,30,29,22,54,59,37,44,58,41,48,53,46,55,42,60,36,49,38,31,34,35,43,45,32,40,52,56,33,61,62,51,57,47,63,50,70];b.win1251_CharToOrderMap=[255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,252,252,
-252,252,252,252,252,252,252,252,253,253,253,253,253,253,253,142,143,144,145,146,147,148,149,150,151,152,74,153,75,154,155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253,253,71,172,66,173,65,174,76,175,64,176,177,77,72,178,69,67,179,78,73,180,181,79,182,183,184,185,253,253,253,253,253,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,
-242,243,244,245,246,68,247,248,249,250,251,252,253,37,44,33,46,41,48,56,51,42,60,36,49,38,31,34,35,45,32,40,52,53,55,58,50,57,63,70,62,61,47,59,43,3,21,10,19,13,2,24,20,4,23,11,8,12,5,1,15,9,7,6,14,39,26,28,22,25,29,54,18,17,30,27,16];b.latin5_CharToOrderMap=[255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,252,252,252,252,252,252,252,252,252,252,253,253,253,
-253,253,253,253,142,143,144,145,146,147,148,149,150,151,152,74,153,75,154,155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253,253,71,172,66,173,65,174,76,175,64,176,177,77,72,178,69,67,179,78,73,180,181,79,182,183,184,185,253,253,253,253,253,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,37,44,33,46,41,48,56,51,42,60,36,49,38,31,34,35,45,32,40,
-52,53,55,58,50,57,63,70,62,61,47,59,43,3,21,10,19,13,2,24,20,4,23,11,8,12,5,1,15,9,7,6,14,39,26,28,22,25,29,54,18,17,30,27,16,239,68,240,241,242,243,244,245,246,247,248,249,250,251,252,255];b.macCyrillic_CharToOrderMap=[255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253,253,142,143,144,145,146,147,
-148,149,150,151,152,74,153,75,154,155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253,253,71,172,66,173,65,174,76,175,64,176,177,77,72,178,69,67,179,78,73,180,181,79,182,183,184,185,253,253,253,253,253,37,44,33,46,41,48,56,51,42,60,36,49,38,31,34,35,45,32,40,52,53,55,58,50,57,63,70,62,61,47,59,43,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,
-239,240,241,242,243,244,245,246,247,248,249,250,251,252,68,16,3,21,10,19,13,2,24,20,4,23,11,8,12,5,1,15,9,7,6,14,39,26,28,22,25,29,54,18,17,30,27,255];b.IBM855_CharToOrderMap=[255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253,253,142,143,144,145,146,147,148,149,150,151,152,74,153,75,154,155,156,
-157,158,159,160,161,162,163,164,165,253,253,253,253,253,253,71,172,66,173,65,174,76,175,64,176,177,77,72,178,69,67,179,78,73,180,181,79,182,183,184,185,253,253,253,253,253,191,192,193,194,68,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,27,59,54,70,3,37,21,44,28,58,13,41,2,48,39,53,19,46,218,219,220,221,222,223,224,26,55,4,42,225,226,227,228,23,60,229,230,231,232,233,234,235,11,36,236,237,238,239,240,241,242,243,8,49,12,38,5,31,1,34,15,244,245,246,247,
-35,16,248,43,9,45,7,32,6,40,14,52,24,56,10,33,17,61,249,250,18,62,20,51,25,57,30,47,29,63,22,50,251,252,255];b.IBM866_CharToOrderMap=[255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253,253,142,143,144,145,146,147,148,149,150,151,152,74,153,75,154,155,156,157,158,159,160,161,162,163,164,165,253,253,
-253,253,253,253,71,172,66,173,65,174,76,175,64,176,177,77,72,178,69,67,179,78,73,180,181,79,182,183,184,185,253,253,253,253,253,37,44,33,46,41,48,56,51,42,60,36,49,38,31,34,35,45,32,40,52,53,55,58,50,57,63,70,62,61,47,59,43,3,21,10,19,13,2,24,20,4,23,11,8,12,5,1,15,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,9,7,6,14,39,26,28,22,25,29,54,18,17,30,27,16,
-239,68,240,241,242,243,244,245,246,247,248,249,250,251,252,255];b.RussianLangModel=[0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,3,1,3,3,3,2,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,3,2,2,2,2,2,0,0,2,3,3,3,2,3,3,3,3,3,3,3,3,3,3,2,3,3,0,0,3,3,3,3,3,3,3,3,3,2,3,2,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,2,2,3,3,3,3,3,3,3,3,3,2,3,3,0,0,3,3,3,3,3,3,3,3,2,3,3,1,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,
-0,0,3,3,3,3,3,3,3,3,3,3,3,2,1,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,0,0,3,3,3,3,3,3,3,3,3,3,3,2,1,0,0,0,0,0,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,2,2,2,3,1,3,3,1,3,3,3,3,2,2,3,0,2,2,2,3,3,2,1,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,2,3,3,3,3,3,2,2,3,2,3,3,3,2,1,2,2,0,1,2,2,2,2,2,2,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,
-3,3,3,3,3,3,3,2,2,2,3,0,2,2,3,3,2,1,2,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,2,3,3,1,2,3,2,2,3,2,3,3,3,3,2,2,3,0,3,2,2,3,1,1,1,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,2,2,3,3,3,3,3,2,3,3,3,3,2,2,2,0,3,3,3,2,2,2,2,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,2,3,2,3,3,3,3,3,3,2,3,2,2,0,1,3,2,1,2,2,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,
-3,3,3,3,2,1,1,3,0,1,1,1,1,2,1,1,0,2,2,2,1,2,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,2,3,3,2,2,2,2,1,3,2,3,2,3,2,1,2,2,0,1,1,2,1,2,1,2,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,2,2,3,2,3,3,3,2,2,2,2,0,2,2,2,2,3,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,3,2,3,2,2,3,3,3,3,3,3,3,3,3,1,3,2,0,0,3,3,3,3,2,3,3,3,3,2,3,2,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,
-3,3,3,3,2,2,3,3,0,2,1,0,3,2,3,2,3,0,0,1,2,0,0,1,0,1,2,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,0,2,3,3,3,3,2,3,3,3,3,1,2,2,0,0,2,3,2,2,2,3,2,3,2,2,3,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,3,0,2,3,2,3,0,1,2,3,3,2,0,2,3,0,0,2,3,2,2,0,1,3,1,3,2,2,1,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,3,0,2,3,3,3,3,3,3,3,3,2,1,3,2,0,0,2,2,3,3,3,2,3,3,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,3,3,3,3,3,3,2,2,3,3,2,2,2,3,3,0,0,1,1,1,1,1,2,0,0,1,1,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,2,2,3,3,3,3,3,3,3,0,3,2,3,3,2,3,2,0,2,1,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,2,3,3,3,2,2,2,2,3,1,3,2,3,1,1,2,1,0,2,2,2,2,1,3,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,2,3,3,3,3,3,1,2,2,1,3,1,0,3,0,0,3,0,0,0,1,1,0,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,3,2,2,1,1,3,3,3,2,2,1,2,2,3,1,1,2,0,0,2,2,1,3,0,0,2,1,1,2,1,1,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,3,3,3,3,1,2,2,2,1,2,1,3,3,1,1,2,1,2,1,2,2,0,2,0,0,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,3,3,3,3,2,1,3,2,2,3,2,0,3,2,0,3,0,1,0,1,1,0,0,1,1,1,1,0,1,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,2,3,3,3,2,2,2,3,3,1,2,1,2,1,0,1,0,1,1,0,1,0,0,2,1,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,1,0,0,0,0,0,0,0,0,0,3,1,1,2,1,2,3,3,2,2,1,2,2,3,0,2,1,0,0,2,2,3,2,1,2,2,2,2,2,3,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,1,1,0,1,1,2,2,1,1,3,0,0,1,3,1,1,1,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,3,3,3,2,0,0,0,2,1,0,1,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,1,0,0,2,3,2,2,2,1,2,2,2,1,2,1,0,0,1,1,1,0,2,0,1,1,1,0,0,1,1,1,0,0,0,0,0,1,2,0,0,0,0,0,1,
-0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,2,3,3,3,3,0,0,0,0,1,0,0,0,0,3,0,1,2,1,0,0,0,0,0,0,0,1,1,0,0,1,1,1,0,1,0,1,2,0,0,1,1,2,1,0,1,1,1,1,0,1,1,1,1,0,1,0,0,1,0,0,1,1,0,2,2,3,2,2,2,3,1,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,0,1,0,1,1,1,0,2,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,0,1,0,1,1,0,1,1,1,0,1,1,0,3,3,3,2,2,2,2,3,2,2,1,1,2,2,2,2,1,1,3,1,2,1,2,0,0,1,1,0,1,0,2,1,1,1,1,1,1,2,1,0,1,1,1,1,0,1,0,0,1,1,0,0,1,0,1,0,0,1,0,0,0,1,1,0,2,0,0,1,0,3,2,2,2,2,1,2,1,2,1,2,0,0,0,2,1,2,2,1,1,2,2,0,1,1,0,2,1,1,1,1,1,0,1,1,1,
-2,1,1,1,2,1,0,1,2,1,1,1,1,0,1,1,1,0,0,1,0,0,1,1,3,2,2,2,1,1,1,2,3,0,0,0,0,2,0,2,2,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,1,1,0,1,0,1,1,0,1,1,0,2,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,2,3,2,3,2,1,2,2,2,2,1,0,0,0,2,0,0,1,1,0,0,0,0,0,0,0,1,1,0,0,2,1,1,1,2,1,0,2,0,0,1,0,1,0,0,1,0,0,1,1,0,1,1,0,0,0,0,0,1,0,0,0,0,0,3,0,0,1,0,2,2,2,3,2,2,2,2,2,2,2,0,0,0,2,1,2,1,1,1,2,2,0,0,0,1,2,1,1,1,1,1,0,1,2,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0,0,1,2,3,2,3,3,2,0,1,1,1,0,0,1,0,2,0,1,1,3,1,0,0,0,0,0,0,0,1,0,0,2,1,1,1,1,1,
-1,1,1,0,1,0,1,1,1,1,0,1,1,1,0,0,1,1,0,1,0,0,0,0,0,0,1,0,2,3,3,3,3,1,2,2,2,2,0,1,1,0,2,1,1,1,2,1,0,1,1,0,0,1,0,1,0,0,2,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,3,3,2,0,0,1,1,2,2,1,0,0,2,0,1,1,3,0,0,1,0,0,0,0,0,1,0,1,2,1,1,1,2,0,1,1,1,0,1,0,1,1,0,1,0,1,1,1,1,0,1,0,0,0,0,0,0,1,0,1,1,0,1,3,2,3,2,1,0,0,2,2,2,0,1,0,2,0,1,1,1,0,1,0,0,0,3,0,1,1,0,0,2,1,1,1,1,0,1,1,0,0,0,0,1,1,0,1,0,0,2,1,1,0,1,0,0,0,1,0,1,0,0,1,1,0,3,1,2,1,1,2,2,2,2,2,2,1,2,2,1,1,0,0,0,2,2,2,0,0,0,1,2,1,0,1,0,
-1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,2,1,1,1,0,1,0,1,1,0,1,1,1,0,0,1,3,0,0,0,0,2,0,1,1,1,1,1,1,1,0,1,0,0,0,1,1,1,0,1,0,1,1,0,0,1,0,1,1,1,0,0,1,0,0,0,1,0,1,1,0,0,1,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,0,1,1,3,3,2,2,0,0,0,2,2,0,0,0,1,2,0,1,1,2,0,0,0,0,0,0,0,0,1,0,0,2,1,0,1,1,0,0,1,1,0,0,0,1,1,0,1,1,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,2,3,2,3,2,0,0,0,0,1,1,0,0,0,2,0,2,0,2,0,0,0,0,0,1,0,0,1,0,0,1,1,1,1,2,0,1,2,1,0,1,1,2,1,1,1,1,1,2,1,1,0,1,0,0,1,1,1,1,1,0,1,1,0,1,3,2,2,2,1,0,0,2,2,1,0,1,2,2,0,0,1,0,0,0,0,0,0,0,0,
-0,1,0,0,1,1,0,0,1,1,0,1,1,0,0,1,1,0,1,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,2,3,1,2,2,2,2,2,2,1,1,0,0,0,1,0,1,0,2,1,1,1,0,0,0,0,1,1,1,0,1,1,0,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,2,0,0,1,0,3,2,1,2,1,2,2,0,1,0,0,0,2,1,0,0,2,1,1,1,1,0,2,0,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,1,0,1,1,1,1,0,0,0,1,1,1,1,0,1,0,0,1,1,2,2,2,2,1,0,0,1,0,0,0,0,0,2,0,1,1,1,1,0,0,0,0,1,0,1,2,0,0,2,0,1,0,1,1,1,2,1,0,1,0,1,1,0,0,1,0,1,1,1,0,1,0,0,0,1,0,0,1,0,1,1,0,2,1,2,2,2,0,3,0,1,1,0,0,0,0,2,0,0,1,0,0,0,
-0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,2,2,3,2,2,0,0,1,1,2,0,1,2,1,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,2,2,1,1,2,1,2,2,2,2,2,1,2,2,0,1,0,0,0,1,2,2,2,1,2,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,0,1,1,1,0,0,0,0,1,1,1,0,1,1,0,0,1,1,2,2,2,2,0,1,0,2,2,0,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,1,0,0,0,0,1,0,1,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
-2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,2,2,0,0,0,2,2,2,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,2,2,0,0,0,0,1,0,0,1,1,2,0,0,0,0,1,0,1,0,0,1,0,0,2,0,0,0,1,0,0,1,0,0,1,0,0,0,1,1,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,2,2,2,1,1,2,0,2,1,1,1,1,0,2,2,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,0,0,1,0,1,1,0,0,0,0,1,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,2,1,2,0,0,0,0,0,1,
-0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,2,0,1,2,1,0,1,1,1,0,1,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,1,1,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,0,1,0,0,1,1,1,1,0,0,0,1,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,1,0,1,0,1,0,0,0,0,1,1,0,1,1,0,0,0,0,0,1,0,1,1,0,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0];b.Koi8rModel={charToOrderMap:b.KOI8R_CharToOrderMap,precedenceMatrix:b.RussianLangModel,mTypicalPositiveRatio:.976601,keepEnglishLetter:!1,charsetName:"KOI8-R"};b.Win1251CyrillicModel={charToOrderMap:b.win1251_CharToOrderMap,precedenceMatrix:b.RussianLangModel,
-mTypicalPositiveRatio:.976601,keepEnglishLetter:!1,charsetName:"windows-1251"};b.Latin5CyrillicModel={charToOrderMap:b.latin5_CharToOrderMap,precedenceMatrix:b.RussianLangModel,mTypicalPositiveRatio:.976601,keepEnglishLetter:!1,charsetName:"ISO-8859-5"};b.MacCyrillicModel={charToOrderMap:b.macCyrillic_CharToOrderMap,precedenceMatrix:b.RussianLangModel,mTypicalPositiveRatio:.976601,keepEnglishLetter:!1,charsetName:"MacCyrillic"};b.Ibm866Model={charToOrderMap:b.IBM866_CharToOrderMap,precedenceMatrix:b.RussianLangModel,
-mTypicalPositiveRatio:.976601,keepEnglishLetter:!1,charsetName:"IBM866"};b.Ibm855Model={charToOrderMap:b.IBM855_CharToOrderMap,precedenceMatrix:b.RussianLangModel,mTypicalPositiveRatio:.976601,keepEnglishLetter:!1,charsetName:"IBM855"};!0},{"./init":20}],25:[function(b,a,d){b=b("./init");b.Latin7_CharToOrderMap=[255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,
-253,252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253,253,82,100,104,94,98,101,116,102,111,187,117,92,88,113,85,79,118,105,83,67,114,119,95,99,109,188,253,253,253,253,253,253,72,70,80,81,60,96,93,89,68,120,97,77,86,69,55,78,115,65,66,58,76,106,103,87,107,112,253,253,253,253,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,233,90,253,253,253,253,253,253,253,253,253,253,74,253,253,253,253,253,253,247,
-248,61,36,46,71,73,253,54,253,108,123,110,31,51,43,41,34,91,40,52,47,44,53,38,49,59,39,35,48,250,37,33,45,56,50,84,57,120,121,17,18,22,15,124,1,29,20,21,3,32,13,25,5,11,16,10,6,30,4,9,8,14,7,2,12,28,23,42,24,64,75,19,26,27,253];b.win1253_CharToOrderMap=[255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,252,252,252,252,252,252,252,252,252,252,253,253,253,253,
-253,253,253,82,100,104,94,98,101,116,102,111,187,117,92,88,113,85,79,118,105,83,67,114,119,95,99,109,188,253,253,253,253,253,253,72,70,80,81,60,96,93,89,68,120,97,77,86,69,55,78,115,65,66,58,76,106,103,87,107,112,253,253,253,253,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,233,61,253,253,253,253,253,253,253,253,253,253,74,253,253,253,253,253,253,247,253,253,36,46,71,73,253,54,253,108,123,110,31,51,43,41,34,
-91,40,52,47,44,53,38,49,59,39,35,48,250,37,33,45,56,50,84,57,120,121,17,18,22,15,124,1,29,20,21,3,32,13,25,5,11,16,10,6,30,4,9,8,14,7,2,12,28,23,42,24,64,75,19,26,27,253];b.GreekLangModel=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,2,3,3,3,3,3,3,3,3,1,3,3,3,0,2,2,3,3,0,3,0,3,2,0,3,3,3,0,3,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,0,3,3,0,3,2,3,3,0,3,2,3,3,3,0,0,3,0,3,0,3,3,
-2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,3,2,2,3,3,3,3,3,3,3,3,0,3,3,3,3,0,2,3,3,0,3,3,3,3,2,3,3,3,0,2,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,0,2,1,3,3,3,3,2,3,3,2,3,3,2,0,0,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,0,3,3,3,3,3,3,0,3,3,0,3,3,3,3,3,3,3,3,3,3,0,3,2,3,3,0,2,0,1,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,3,3,3,3,3,2,3,0,0,0,0,3,3,0,3,1,3,3,3,0,3,3,
-0,3,3,3,3,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,0,3,0,3,3,3,3,3,0,3,2,2,2,3,0,2,3,3,3,3,3,2,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,2,2,2,3,3,3,3,0,3,1,3,3,3,3,2,3,3,3,3,3,3,3,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,2,0,3,0,0,0,3,3,2,3,3,3,3,3,0,0,3,2,3,0,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,3,3,3,0,0,3,3,0,2,3,0,3,0,3,
-3,3,0,0,3,0,3,0,2,2,3,3,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,2,0,3,2,3,3,3,3,0,3,3,3,3,3,0,3,3,2,3,2,3,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,2,3,2,3,3,3,3,3,3,0,2,3,2,3,2,2,2,3,2,3,3,2,3,0,2,2,2,3,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,3,3,3,2,3,3,0,0,3,0,3,0,0,0,3,2,0,3,0,3,0,0,2,0,2,0,0,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,0,3,3,3,3,3,3,0,3,3,0,3,0,0,0,3,3,0,3,3,3,0,0,1,2,3,0,3,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,2,0,0,3,2,2,3,3,0,3,3,3,3,3,2,1,3,0,3,2,3,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,2,3,3,3,3,3,3,0,0,3,0,3,0,0,0,3,3,0,3,2,3,0,0,3,3,3,0,3,0,0,0,2,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,0,3,3,
-3,3,3,3,0,0,3,0,3,0,0,0,3,2,0,3,2,3,0,0,3,2,3,0,2,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,2,2,3,3,3,3,3,3,0,2,3,0,3,0,0,0,3,3,0,3,0,2,0,0,2,3,1,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,3,3,3,0,3,0,3,3,2,3,0,3,3,3,3,3,3,0,3,3,3,0,2,3,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,3,3,0,0,3,0,0,0,3,3,0,3,0,2,3,3,0,0,3,0,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,
-0,0,0,3,3,3,3,3,3,0,0,3,0,2,0,0,0,3,3,0,3,0,3,0,0,2,0,2,0,0,0,0,0,1,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,0,3,0,2,0,3,2,0,3,2,3,2,3,0,0,3,2,3,2,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,2,3,3,3,3,3,0,0,0,3,0,2,1,0,0,3,2,2,2,0,3,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,3,3,2,0,3,0,3,0,3,3,0,2,1,2,3,3,0,0,3,0,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,2,3,3,3,0,3,3,3,3,3,3,0,2,3,0,3,0,0,0,2,1,0,2,2,3,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,2,3,3,3,2,3,0,0,1,3,0,2,0,0,0,0,3,0,1,0,2,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,1,0,3,0,0,0,3,2,0,3,2,3,3,3,0,0,3,0,3,2,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,3,3,0,0,3,0,0,0,0,2,0,2,3,3,2,2,2,2,3,0,2,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,3,3,3,3,2,0,0,0,0,0,0,2,3,0,2,0,2,3,2,0,0,3,0,3,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,3,3,2,2,3,0,2,0,3,0,0,0,2,0,0,0,0,1,2,0,2,0,2,0,0,2,0,2,0,2,2,0,0,1,0,2,2,2,0,2,2,2,0,2,2,2,0,0,2,0,0,1,0,0,0,0,0,2,0,3,3,2,0,0,0,0,0,0,1,3,0,2,0,2,2,2,0,0,2,0,3,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,2,3,2,0,2,2,0,2,0,2,2,0,2,0,2,2,2,0,0,0,0,0,0,2,3,0,0,0,2,0,1,2,0,0,0,0,2,2,0,0,0,2,1,0,2,2,0,0,0,
-0,0,0,1,0,2,0,0,0,0,0,0,0,0,2,1,0,2,3,2,2,3,2,3,2,0,0,3,3,3,0,0,3,2,0,0,0,1,1,0,2,0,2,2,0,2,0,2,0,2,2,0,0,2,0,2,2,2,0,2,2,2,2,0,0,2,0,0,0,2,0,1,0,0,0,0,0,3,0,3,3,2,2,0,3,0,0,0,2,2,0,2,2,2,1,2,0,0,1,2,2,0,0,3,0,0,0,2,0,1,2,0,0,0,1,2,0,0,0,0,0,0,0,2,2,0,1,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,3,2,2,0,0,0,2,0,2,3,3,0,2,0,0,0,0,0,0,2,2,2,0,2,2,0,2,0,2,0,2,2,0,0,2,2,2,2,1,0,0,2,2,0,
-2,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,0,3,2,3,0,0,0,3,0,0,2,2,0,2,0,2,2,2,0,0,2,0,0,0,0,0,0,0,0,2,0,0,2,2,0,0,2,2,2,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,3,2,0,2,2,2,2,2,0,0,0,2,0,0,0,0,2,0,1,0,0,2,0,1,0,0,0,0,2,2,2,0,2,2,0,1,2,0,2,2,2,0,2,2,2,2,1,2,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,2,0,2,0,2,2,0,0,0,0,1,2,1,0,0,2,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,3,0,0,2,0,0,0,2,2,0,2,0,0,0,1,0,0,2,0,2,0,2,2,0,0,0,0,0,0,2,0,0,0,0,2,2,0,
-0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,2,3,2,2,0,0,0,0,0,0,1,3,0,2,0,2,2,0,0,0,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,3,2,0,2,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,2,0,0,0,0,1,1,0,0,2,1,2,0,2,2,0,1,0,0,1,0,0,0,2,0,0,0,0,0,0,0,3,0,2,2,2,0,0,2,0,0,0,2,0,0,0,2,3,0,2,0,0,0,0,0,0,2,2,0,0,0,2,0,1,2,0,0,0,1,2,2,1,0,0,0,2,0,0,2,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,2,0,
-2,2,0,2,0,0,2,0,0,0,0,1,2,1,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,1,2,2,0,2,0,0,0,0,2,0,0,0,2,0,0,3,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,2,0,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,0,0,2,0,2,2,0,0,2,2,2,2,2,0,1,2,0,0,0,2,2,0,1,0,2,0,0,2,2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,3,0,0,2,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,2,0,1,2,0,0,0,0,2,2,1,0,1,0,1,0,2,2,2,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,1,2,0,0,0,0,0,0,0,0,0,0,2,0,0,2,2,0,0,0,0,1,0,0,0,0,0,0,2,
-0,2,2,0,0,0,0,2,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,0,0,2,2,2,2,0,0,0,3,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0,1,0,0,2,0,0,0,0,1,2,0,0,0,0,0,0,2,2,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,2,2,2,0,0,2,0,0,0,0,0,0,0,2,2,2,0,0,0,2,0,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,2,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,3,0,2,0,0,0,0,0,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,2,0,0,2,0,0,0,0,2,2,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,2,1,0,0,0,0,0,0,2,0,0,2,0,2,2,2,0,0,0,0,0,0,2,
-0,0,0,0,2,0,0,2,0,0,2,0,2,2,0,0,0,0,2,0,2,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,3,0,0,0,2,2,0,2,2,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,0,0,0,0,2,2,2,2,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,2,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,2,0,0,0,0,0,0,0,
-0,1,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,1,0,0,0,0,2,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,2,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,2,1,0,0,0,0,0,0,2,
-0,0,0,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];b.Latin7GreekModel={charToOrderMap:b.Latin7_CharToOrderMap,precedenceMatrix:b.GreekLangModel,mTypicalPositiveRatio:.982851,keepEnglishLetter:!1,charsetName:"ISO-8859-7"};
-b.Win1253GreekModel={charToOrderMap:b.win1253_CharToOrderMap,precedenceMatrix:b.GreekLangModel,mTypicalPositiveRatio:.982851,keepEnglishLetter:!1,charsetName:"windows-1253"};!0},{"./init":20}],26:[function(b,a,d){b=b("./init");b.win1255_CharToOrderMap=[255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,252,252,252,252,252,252,252,252,252,252,253,253,253,253,
-253,253,253,69,91,79,80,92,89,97,90,68,111,112,82,73,95,85,78,121,86,71,67,102,107,84,114,103,115,253,253,253,253,253,253,50,74,60,61,42,76,70,64,53,105,93,56,65,54,49,66,110,51,43,44,63,81,77,98,75,108,253,253,253,253,253,124,202,203,204,205,40,58,206,207,208,209,210,211,212,213,214,215,83,52,47,46,72,32,94,216,113,217,109,218,219,220,221,34,116,222,118,100,223,224,117,119,104,125,225,226,87,99,227,106,122,123,228,55,229,230,101,231,232,120,233,48,39,57,234,30,59,41,88,33,37,36,31,29,35,235,62,28,
-236,126,237,238,38,45,239,240,241,242,243,127,244,245,246,247,248,249,250,9,8,20,16,3,2,24,14,22,1,25,15,4,11,6,23,12,19,13,26,18,27,21,17,7,10,5,251,252,128,96,253];b.HebrewLangModel=[0,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,2,3,2,1,2,0,1,0,0,3,0,3,1,0,0,1,3,2,0,1,1,2,0,2,2,2,1,1,1,1,2,1,1,1,2,0,0,2,2,0,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,1,2,1,2,1,2,0,0,2,0,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,
-2,2,1,2,1,3,1,1,0,0,2,0,0,0,1,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,0,1,2,2,1,3,1,2,1,1,2,2,0,0,2,2,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,1,0,1,1,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,2,2,2,2,3,2,1,2,1,2,2,2,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,2,3,2,2,3,2,2,2,1,2,2,2,2,1,2,1,1,2,2,0,1,2,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
-2,0,2,2,2,2,2,0,2,0,2,2,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,0,2,2,2,0,2,1,2,2,2,0,0,2,1,0,0,0,0,1,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,1,0,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,2,1,2,3,2,2,2,1,2,1,2,2,2,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,0,3,3,3,3,3,3,3,3,3,2,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,1,0,2,0,2,0,2,1,2,2,2,0,0,1,2,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,2,0,0,1,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,
-3,2,3,2,2,3,2,1,2,1,1,1,0,1,1,1,1,1,3,0,1,0,0,0,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,1,1,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,0,2,0,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,3,3,3,3,3,3,3,3,3,2,3,3,3,2,1,2,3,3,2,3,3,3,3,2,3,2,1,2,0,2,1,2,0,2,0,2,2,2,0,0,1,2,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,3,3,3,3,3,3,3,3,3,2,3,3,3,1,2,
-2,3,3,2,3,2,3,2,2,3,1,2,2,0,2,2,2,0,2,1,2,2,2,0,0,1,2,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,2,3,3,2,2,2,3,3,3,3,1,3,2,2,2,0,2,0,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,3,3,3,2,3,2,2,2,1,2,2,0,2,2,2,2,0,2,0,2,2,2,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,1,3,2,3,3,2,3,3,2,2,1,2,2,2,2,2,2,0,2,1,2,1,2,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,3,3,3,3,3,3,2,3,2,3,
-3,2,3,3,3,3,2,3,2,3,3,3,3,3,2,2,2,2,2,2,2,1,0,2,0,1,2,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,3,3,3,3,3,3,3,3,3,2,1,2,3,3,3,3,3,3,3,2,3,2,3,2,1,2,3,0,2,1,2,2,0,2,1,1,2,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,2,0,3,3,3,3,3,3,3,3,3,2,3,3,3,3,2,1,3,1,2,2,2,1,2,3,3,1,2,1,2,2,2,2,0,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,0,2,3,3,3,1,3,3,3,1,2,2,2,2,1,1,2,2,2,2,2,2,0,2,0,1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,3,3,3,3,3,
-3,2,3,3,3,2,2,3,3,3,2,1,2,3,2,3,2,2,2,2,1,2,1,1,1,2,2,0,2,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,2,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,2,3,3,2,3,1,2,2,2,2,3,2,3,1,1,2,2,1,2,2,1,1,0,2,2,2,2,0,1,0,1,2,2,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,3,0,0,1,1,0,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,0,1,0,1,0,1,1,0,1,1,0,0,0,1,1,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,3,2,2,1,2,2,2,2,2,2,2,1,2,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,0,3,3,3,0,3,0,2,2,2,2,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,2,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,1,2,2,2,1,1,1,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,1,0,2,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,3,1,1,2,2,2,2,2,1,2,2,2,1,1,2,2,2,2,2,2,2,1,2,2,1,0,1,1,1,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,3,2,1,1,1,1,2,1,1,2,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0,1,0,0,2,1,1,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,1,2,1,2,1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,1,2,2,2,2,2,2,2,2,2,2,1,2,1,2,1,1,2,1,1,1,2,1,2,1,2,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,2,2,2,1,2,2,2,2,2,2,2,2,1,2,1,1,1,1,1,1,2,1,2,1,1,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,2,0,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,3,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,1,1,0,1,1,0,1,0,0,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,1,1,1,0,1,0,0,0,1,1,0,1,1,0,0,0,0,0,1,1,0,0,0,1,1,1,2,1,2,2,2,0,2,0,2,0,1,1,2,1,1,1,1,2,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,2,2,0,1,0,0,1,1,2,2,1,2,0,2,0,0,0,1,2,0,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,1,2,0,2,0,0,1,1,1,1,1,1,0,1,0,0,0,1,0,0,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,2,1,1,0,1,0,0,1,1,1,2,2,0,0,1,0,0,0,1,0,0,1,1,1,2,1,0,1,1,1,0,1,0,1,1,1,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,2,2,1,0,2,0,1,2,1,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,0,1,0,1,1,1,1,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,2,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,1,1,0,1,0,0,0,1,1,0,1,2,0,1,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,1,0,1,1,1,0,1,0,0,1,1,2,1,1,2,0,1,0,0,0,1,1,0,1,1,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,2,0,1,0,0,0,0,2,1,1,2,0,2,0,0,0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,1,1,0,1,0,0,2,2,1,2,1,1,0,1,0,0,0,1,1,0,1,2,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,0,0,0,0,0,1,1,0,1,0,0,1,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,0,0,0,0,2,1,1,1,0,2,1,1,0,0,0,2,1,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,2,0,1,0,0,1,1,0,2,1,1,0,1,0,0,0,1,1,0,1,2,2,1,1,1,0,1,1,0,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,1,1,0,1,0,0,1,1,0,1,2,1,0,2,0,0,0,1,1,0,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,1,0,0,2,0,2,1,1,0,1,0,1,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,2,0,1,0,0,1,1,1,0,1,0,0,1,0,0,0,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,1,0,0,1,0,0,2,1,1,1,1,1,0,1,0,0,0,0,1,0,1,0,1,1,1,2,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,1,0,0,0,0,0,1,1,1,1,1,0,1,0,0,0,1,1,0,0];b.Win1255HebrewModel={charToOrderMap:b.win1255_CharToOrderMap,precedenceMatrix:b.HebrewLangModel,mTypicalPositiveRatio:.984004,keepEnglishLetter:!1,charsetName:"windows-1255"};
-!0},{"./init":20}],27:[function(b,a,d){b=b("./init");b.Latin2_HungarianCharToOrderMap=[255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253,253,28,40,54,45,32,50,49,38,39,53,36,41,34,35,47,46,71,43,33,37,57,48,64,68,55,52,253,253,253,253,253,253,2,18,26,17,1,27,12,20,9,22,7,6,13,4,8,23,67,10,5,3,21,
-19,65,62,16,11,253,253,253,253,253,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,75,198,199,200,201,202,203,204,205,79,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,51,81,222,78,223,224,225,226,44,227,228,229,61,230,231,232,233,234,58,235,66,59,236,237,238,60,69,63,239,240,241,82,14,74,242,70,80,243,72,244,15,83,77,84,30,76,85,245,246,247,25,73,42,24,248,249,250,31,56,29,
-251,252,253];b.win1250HungarianCharToOrderMap=[255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253,253,28,40,54,45,32,50,49,38,39,53,36,41,34,35,47,46,72,43,33,37,57,48,64,68,55,52,253,253,253,253,253,253,2,18,26,17,1,27,12,20,9,22,7,6,13,4,8,23,67,10,5,3,21,19,65,62,16,11,253,253,253,253,253,161,
-162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,78,181,69,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,76,198,199,200,201,202,203,204,205,81,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,51,83,222,80,223,224,225,226,44,227,228,229,61,230,231,232,233,234,58,235,66,59,236,237,238,60,70,63,239,240,241,84,14,75,242,71,82,243,73,244,15,85,79,86,30,77,87,245,246,247,25,74,42,24,248,249,250,31,56,29,251,252,253];b.HungarianLangModel=[0,3,3,
-3,3,3,3,3,3,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,2,2,3,3,1,1,2,2,2,2,2,1,2,3,2,2,3,3,3,3,3,2,3,3,3,3,3,3,1,2,3,3,3,3,2,3,3,1,1,3,3,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,3,2,1,3,3,3,3,3,2,3,3,3,3,3,1,1,2,3,3,3,3,3,3,3,1,1,3,2,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,3,3,3,3,3,3,3,3,3,3,3,1,1,2,3,3,3,1,3,3,3,3,3,1,3,3,2,2,0,3,2,3,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,
-0,0,3,3,3,3,3,3,2,3,3,3,2,3,3,2,3,3,3,3,3,2,3,3,2,2,3,2,3,2,0,3,2,2,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,3,3,3,3,3,3,2,3,3,3,3,3,2,3,3,3,1,2,3,2,2,3,1,2,3,3,2,2,0,3,3,3,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,2,2,3,3,3,3,3,3,2,3,3,3,3,2,3,3,3,3,0,2,3,2,0,0,0,1,1,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,1,1,1,3,3,2,1,3,2,2,3,2,1,3,2,2,1,0,3,3,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
-0,0,0,0,0,0,0,3,2,2,3,3,3,3,3,1,2,3,3,3,3,1,2,1,3,3,3,3,2,2,3,1,1,3,2,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,3,3,3,3,3,3,3,3,2,2,3,3,3,3,3,2,1,3,3,3,3,3,2,2,1,3,3,3,0,1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,2,3,3,2,3,3,3,2,0,3,2,3,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,1,0,3,3,3,3,3,3,2,3,3,3,2,3,2,3,3,3,1,3,2,2,2,3,1,1,3,3,1,1,0,3,3,2,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,
-0,0,0,0,1,0,0,0,0,0,0,0,3,3,3,3,3,3,3,2,3,3,3,2,3,2,3,3,3,2,3,3,3,3,3,1,2,3,2,2,0,2,2,2,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,3,3,3,2,2,2,3,1,3,3,2,2,1,3,3,3,1,1,3,1,2,3,2,3,2,2,2,1,0,2,2,2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,1,1,3,3,3,3,3,1,2,3,3,3,3,1,2,1,3,3,3,2,2,3,2,1,0,3,2,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,1,3,3,3,3,3,1,2,3,3,3,3,1,1,0,3,3,3,3,0,2,3,0,0,2,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,2,2,3,3,2,2,2,2,3,3,0,1,2,3,2,3,2,2,3,2,1,2,0,2,2,2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,3,3,3,3,3,1,2,3,3,3,2,1,2,3,3,2,2,2,3,2,3,3,1,3,3,1,1,0,2,3,2,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,3,3,3,1,2,2,2,2,3,3,3,1,1,1,3,3,1,1,3,1,1,3,2,1,2,3,1,1,0,2,2,2,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,3,3,3,2,1,2,1,1,3,3,1,1,1,1,3,3,1,1,2,2,1,2,1,1,2,2,1,1,0,2,2,1,0,0,0,0,0,0,0,0,0,0,
-1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,3,3,3,1,1,2,1,1,3,3,1,0,1,1,3,3,2,0,1,1,2,3,1,0,2,2,1,0,0,1,3,2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,3,2,1,3,3,3,3,3,1,2,3,2,3,3,2,1,1,3,2,3,2,1,2,2,0,1,2,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,3,3,3,3,2,2,2,2,3,1,2,2,1,1,3,3,0,3,2,1,2,3,2,1,3,3,1,1,0,2,1,3,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,3,3,3,2,2,2,3,2,3,3,3,2,1,1,3,3,1,1,1,2,2,3,2,3,2,2,2,1,0,2,2,1,0,0,0,0,0,
-0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,3,3,3,3,3,0,0,3,3,2,3,0,0,0,2,3,3,1,0,1,2,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,2,3,3,3,3,3,1,2,3,3,2,2,1,1,0,3,3,2,2,1,2,2,1,0,2,2,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,2,2,1,3,1,2,3,3,2,2,1,1,2,2,1,1,1,1,3,2,1,1,1,1,2,1,0,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,2,3,3,1,1,1,1,1,3,3,3,0,1,1,3,3,1,1,1,1,1,2,2,0,3,1,1,2,0,2,1,1,
-0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,3,1,0,1,2,1,2,2,0,1,2,3,1,2,0,0,0,2,1,1,1,1,1,2,0,0,1,1,0,0,0,0,1,2,1,2,2,2,1,2,1,2,0,2,0,2,2,1,1,2,1,1,2,1,1,1,0,1,0,0,0,1,1,0,1,1,1,2,3,2,3,3,0,1,2,2,3,1,0,1,0,2,1,2,2,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,3,3,2,2,1,0,0,3,2,3,2,0,0,0,1,1,3,0,0,1,1,0,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,1,2,2,3,3,1,0,1,3,2,3,1,1,1,0,1,1,1,1,1,3,1,0,0,2,
-2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,1,1,2,2,2,1,0,1,2,3,3,2,0,0,0,2,1,1,1,2,1,1,1,0,1,1,1,0,0,0,1,2,2,2,2,2,1,1,1,2,0,2,1,1,1,1,1,2,1,1,1,1,1,1,0,1,1,1,0,0,1,1,3,2,2,1,0,0,1,1,2,2,0,3,0,1,2,1,1,0,0,1,1,1,0,1,1,1,1,0,2,1,1,1,2,2,1,1,1,2,1,2,1,1,1,1,1,1,1,2,1,1,1,2,3,1,1,1,1,1,1,1,1,1,0,1,2,3,3,0,1,0,0,0,3,3,1,0,0,1,2,2,1,0,0,0,0,2,0,0,1,1,1,0,2,1,1,1,2,1,1,1,1,1,1,2,1,1,0,1,1,0,1,1,1,0,1,2,1,1,0,1,1,1,1,1,1,1,0,1,2,3,3,0,1,0,0,0,2,2,0,0,0,0,1,2,2,0,0,0,0,1,
-0,0,1,1,0,0,2,0,1,0,2,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,2,0,1,1,1,1,1,0,1,3,2,2,0,1,0,1,0,2,3,2,0,0,1,2,2,1,0,0,1,1,1,0,0,2,1,0,1,2,2,1,1,2,1,1,1,1,1,1,2,1,1,1,1,1,1,0,2,1,0,1,1,0,1,1,1,0,1,1,2,1,1,0,1,2,2,2,0,0,1,0,0,2,2,1,1,0,0,2,1,1,0,0,0,1,2,0,0,2,1,0,0,2,1,1,1,2,1,1,1,1,2,1,2,1,1,1,2,2,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,0,1,1,2,3,0,0,0,1,0,3,2,1,0,0,1,2,1,1,0,0,0,0,2,1,0,1,1,0,0,2,1,2,1,1,1,0,0,0,1,0,1,1,1,1,1,2,0,0,1,0,0,0,2,0,0,1,1,1,1,1,1,1,1,0,1,3,0,0,2,1,2,2,1,0,0,2,1,2,2,0,0,0,
-2,1,1,1,0,1,1,0,0,1,1,2,0,0,0,1,2,1,2,2,1,1,2,1,2,0,1,1,1,1,1,1,1,1,1,2,1,1,0,0,1,1,1,1,0,0,1,1,3,2,0,0,0,1,0,2,2,2,0,0,0,2,2,1,0,0,0,0,3,1,1,1,1,0,0,2,1,1,1,2,1,0,1,1,1,0,1,1,1,1,1,1,1,0,2,1,0,0,1,0,1,1,0,1,1,1,1,1,1,0,1,2,3,2,0,0,0,1,0,2,2,0,0,0,0,2,1,1,0,0,0,0,2,1,0,1,1,0,0,2,1,1,0,2,1,1,1,1,2,1,2,1,2,0,1,1,1,0,2,1,1,1,2,1,1,1,1,0,1,1,1,1,1,0,1,3,1,1,2,2,2,3,2,1,1,2,2,1,1,0,1,0,2,2,1,1,1,1,1,0,0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,0,2,2,0,0,
-0,0,2,2,1,0,0,0,1,1,0,0,1,2,0,0,2,1,1,1,2,2,1,1,1,2,1,2,1,1,0,1,1,1,1,2,1,1,1,2,1,1,1,1,0,1,2,1,1,1,0,1,1,0,0,1,2,3,2,1,0,0,2,0,1,1,0,0,0,1,1,1,1,0,1,1,0,0,1,0,0,0,0,0,1,2,1,2,1,2,1,1,1,2,0,2,1,1,1,0,1,2,0,0,1,1,1,0,0,0,0,0,0,0,0,0,2,3,2,0,0,0,0,0,1,1,2,1,0,0,1,1,1,0,0,0,0,2,0,0,1,1,0,0,2,1,1,1,2,1,1,1,1,1,1,2,1,0,1,1,1,1,0,2,1,1,1,1,1,1,0,1,0,1,1,1,1,1,0,1,1,2,2,0,1,1,1,0,2,2,2,0,0,0,3,2,1,0,0,0,1,1,0,0,1,1,0,1,1,1,0,0,1,1,0,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,0,0,1,1,1,0,1,0,1,2,1,0,2,1,1,2,
-2,1,1,2,1,1,1,0,0,0,1,1,0,1,1,1,1,0,0,1,1,1,0,0,0,1,2,2,2,2,2,1,1,1,2,0,2,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,0,1,0,1,2,3,0,0,0,1,0,2,2,0,0,0,0,2,2,0,0,0,0,0,1,0,0,1,0,0,0,2,0,1,0,2,1,1,1,1,1,0,2,0,0,0,1,2,1,1,1,1,0,1,2,0,1,0,1,0,1,1,1,0,1,0,1,2,2,2,0,0,0,1,0,2,1,2,0,0,0,1,1,2,0,0,0,0,1,0,0,1,1,0,0,2,1,0,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,0,1,1,1,1,1,0,1,1,2,2,0,0,0,1,0,2,2,2,0,0,0,1,1,0,0,0,0,0,1,1,0,2,0,0,1,1,1,0,1,1,0,1,1,1,1,1,1,0,1,1,1,1,0,0,1,0,0,1,1,0,1,0,1,1,1,1,1,0,0,0,1,1,0,
-0,1,0,1,2,1,0,0,1,1,1,2,0,0,0,1,1,0,1,0,1,1,0,0,1,0,0,0,0,0,0,2,1,2,1,1,1,1,1,2,0,2,0,1,1,0,1,2,1,0,1,1,1,0,0,0,0,0,0,1,0,0,2,1,1,0,1,2,0,0,1,1,1,0,0,0,1,1,0,0,0,0,0,1,0,0,1,0,0,0,2,1,0,1,2,2,1,1,1,1,1,2,1,1,0,1,1,1,1,2,1,1,1,2,1,1,0,1,0,1,1,1,1,1,0,1,1,2,2,0,0,0,0,0,1,1,0,0,0,0,2,1,0,0,0,0,0,2,0,0,2,2,0,0,2,0,0,1,2,1,1,1,1,1,1,1,0,1,1,0,1,1,0,1,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,2,0,0,3,1,0,2,1,1,1,0,0,1,1,1,0,0,0,1,1,0,0,0,1,0,0,1,0,1,0,1,2,1,0,1,1,1,2,1,1,0,1,1,1,1,1,0,0,0,1,1,1,1,1,0,1,0,0,0,
-1,0,0,2,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,2,0,0,0,2,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,2,1,1,0,0,1,1,1,1,1,0,1,2,1,1,1,2,1,1,1,0,1,1,2,1,0,0,0,0,1,1,1,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,1,1,0,0,1,1,2,1,0,0,0,1,1,0,0,0,1,1,0,0,1,0,1,0,0,0,1,2,1,1,1,1,1,1,1,1,0,1,0,1,1,1,1,1,1,0,1,1,1,0,0,0,0,0,0,1,0,0,2,0,0,0,1,1,1,1,0,0,1,1,0,0,0,0,0,1,1,1,2,0,0,1,0,0,1,0,1,0,0,0,0,1,1,1,1,1,1,1,1,2,0,1,1,1,1,0,1,1,1,0,1,1,1,0,
-0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,0,0,2,1,0,1,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,1,1,1,1,0,1,1,0,1,0,1,1,0,1,1,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,0,0,0,1,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,1,1,0,1,0,1,0,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,0,0,1,1,0,1,0,1,1,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,0,0,1,0,0,1,0,1,0,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,1,1,0,1,0,1,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0];b.Latin2HungarianModel={charToOrderMap:b.Latin2_HungarianCharToOrderMap,precedenceMatrix:b.HungarianLangModel,mTypicalPositiveRatio:.947368,keepEnglishLetter:!0,charsetName:"ISO-8859-2"};b.Win1250HungarianModel={charToOrderMap:b.win1250HungarianCharToOrderMap,precedenceMatrix:b.HungarianLangModel,mTypicalPositiveRatio:.947368,keepEnglishLetter:!0,
-charsetName:"windows-1250"};!0},{"./init":20}],28:[function(b,a,d){b=b("./init");b.TIS620CharToOrderMap=[255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253,253,182,106,107,100,183,184,185,101,94,186,187,108,109,110,111,188,189,190,89,95,112,113,191,192,193,194,253,253,253,253,253,253,64,72,73,114,
-74,115,116,102,81,201,117,90,103,78,82,96,202,91,79,84,104,105,97,98,92,203,253,253,253,253,253,209,210,211,212,213,88,214,215,216,217,218,219,220,118,221,222,223,224,99,85,83,225,226,227,228,229,230,231,232,233,234,235,236,5,30,237,24,238,75,8,26,52,34,51,119,47,58,57,49,53,55,43,20,19,44,14,48,3,17,25,39,62,31,54,45,9,16,2,61,15,239,12,42,46,18,21,76,4,66,63,22,10,1,36,23,13,40,27,32,35,86,240,241,242,243,244,11,28,41,29,33,245,50,37,6,7,67,77,38,93,246,247,68,56,59,65,69,60,70,80,71,87,248,249,
-250,251,252,253];b.ThaiLangModel=[0,1,3,3,3,3,0,0,3,3,0,3,3,0,3,3,3,3,3,3,3,3,0,0,3,3,3,0,3,3,3,3,0,3,3,0,0,0,1,3,0,3,3,2,3,3,0,1,2,3,3,3,3,0,2,0,2,0,0,3,2,1,2,2,3,0,3,3,2,3,0,0,3,3,0,3,3,0,3,3,3,3,3,3,3,3,3,0,3,2,3,0,2,2,2,3,0,2,3,0,0,0,0,1,0,1,2,3,1,1,3,2,2,0,1,1,0,0,1,0,0,0,0,0,0,0,1,1,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,3,3,2,3,2,3,3,2,2,2,3,1,2,3,0,3,3,2,2,1,2,3,3,1,2,0,1,3,0,1,0,0,1,0,0,0,0,0,0,0,1,1,3,3,2,2,3,3,3,3,1,2,3,3,3,3,3,2,2,2,2,3,3,2,2,3,3,2,2,3,2,3,2,2,3,3,1,2,3,1,2,2,3,3,
-1,0,2,1,0,0,3,1,2,1,0,0,1,0,0,0,0,0,0,1,0,1,3,3,3,3,3,3,2,2,3,3,3,3,2,3,2,2,3,3,2,2,3,2,2,2,2,1,1,3,1,2,1,1,3,2,1,0,2,1,0,1,0,1,1,0,1,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,3,3,3,2,3,2,3,3,2,2,3,2,3,3,2,3,1,1,2,3,2,2,2,3,2,2,2,2,2,1,2,1,2,2,1,1,3,3,2,1,0,1,2,2,0,1,3,0,0,0,1,1,0,0,0,0,0,2,3,0,0,2,1,1,3,3,2,3,3,2,0,0,3,3,0,3,3,0,2,2,3,1,2,2,1,1,1,0,2,2,2,0,2,2,1,1,0,2,1,0,2,0,0,2,0,1,0,0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0,3,3,2,3,3,2,0,0,3,3,0,2,3,0,2,1,2,2,2,2,1,2,0,0,2,2,2,0,2,2,1,1,0,2,1,0,2,
-0,0,2,0,1,1,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,3,3,2,3,2,3,2,0,2,2,1,3,2,1,3,2,1,2,3,2,2,3,0,2,3,2,2,1,2,2,2,2,1,2,2,0,0,0,0,2,0,1,2,0,1,1,1,0,1,0,3,1,1,0,0,0,0,0,0,0,0,0,1,0,3,3,2,3,3,2,3,2,2,2,3,2,2,3,2,2,1,2,3,2,2,3,1,3,2,2,2,3,2,2,2,3,3,2,1,3,0,1,1,1,0,2,1,1,1,1,1,0,1,0,1,1,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,3,0,3,3,3,3,3,0,0,3,0,2,2,3,3,3,3,3,0,0,0,1,1,3,0,0,0,0,2,0,0,1,0,0,0,0,0,0,0,2,3,0,0,0,3,0,2,0,0,0,0,0,3,0,0,0,0,0,0,0,0,2,0,3,3,3,3,0,0,2,3,0,0,3,0,3,3,2,3,3,3,3,3,0,0,3,3,3,0,0,0,3,3,
-0,0,3,0,0,0,0,2,0,0,2,1,1,3,0,0,1,0,0,2,3,0,1,0,0,0,0,0,0,0,1,0,3,3,3,3,2,3,3,3,3,3,3,3,1,2,1,3,3,2,2,1,2,2,2,3,1,1,2,0,2,1,2,1,2,2,1,0,0,0,1,1,0,1,0,1,1,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,3,0,2,1,2,3,3,3,0,2,0,2,2,0,2,1,3,2,2,1,2,1,0,0,2,2,1,0,2,1,2,2,0,1,1,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,2,1,3,3,1,1,3,0,2,3,1,1,3,2,1,1,2,0,2,2,3,2,1,1,1,1,1,2,3,0,0,1,3,1,2,1,2,0,3,0,0,0,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,3,3,1,1,3,2,3,3,3,1,3,2,1,3,2,1,3,2,2,2,2,1,3,3,1,2,1,
-3,1,2,3,0,2,1,1,3,2,2,2,1,2,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,3,2,3,2,3,3,2,3,2,3,2,3,3,2,1,0,3,2,2,2,1,2,2,2,1,2,2,1,2,1,1,2,2,2,3,0,1,3,1,1,1,1,0,1,1,0,2,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,2,3,2,2,1,1,3,2,3,2,3,2,0,3,2,2,1,2,0,2,2,2,1,2,2,2,2,1,3,2,1,2,2,1,0,2,0,1,0,0,1,1,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,1,3,3,3,3,3,2,3,1,2,3,3,2,2,3,0,1,1,2,0,3,3,2,2,3,0,1,1,3,0,0,0,0,3,1,0,3,3,0,2,0,2,1,0,0,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,2,3,2,3,3,0,1,3,1,1,2,1,2,1,1,3,1,1,0,
-2,3,1,1,1,1,1,1,1,1,3,1,1,2,2,2,2,1,1,1,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,2,2,1,1,2,1,3,3,2,3,2,2,3,2,2,3,1,2,2,1,2,0,3,2,1,2,2,2,2,2,1,3,2,1,2,2,2,1,1,1,1,0,0,1,1,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,1,3,3,0,2,1,0,3,2,0,0,3,1,0,1,1,0,1,0,0,0,0,0,1,1,0,0,1,0,3,2,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,2,2,2,3,0,0,1,3,0,3,2,0,3,2,2,3,3,3,3,3,1,0,2,2,2,0,2,2,1,2,0,2,3,0,0,0,0,1,0,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,0,2,3,1,3,3,2,3,3,0,3,3,0,3,2,2,
-3,2,3,3,3,0,0,2,2,3,0,1,1,1,3,0,0,3,0,0,0,2,2,0,1,3,0,1,2,2,2,3,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,3,2,3,3,2,0,3,3,2,2,3,1,3,2,1,3,2,0,1,2,2,0,2,3,2,1,0,3,0,0,0,0,3,0,0,2,3,1,3,0,0,3,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,3,2,2,2,1,2,0,1,3,1,1,3,1,3,0,0,2,1,1,1,1,2,1,1,1,0,2,1,0,1,1,2,0,0,0,3,1,1,0,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,0,3,1,0,0,0,1,0,3,3,3,3,2,2,2,2,2,1,3,1,1,1,2,0,1,1,2,1,2,1,3,2,0,0,3,1,1,1,1,1,3,1,0,2,3,0,0,0,3,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,0,3,3,0,2,0,0,
-0,0,0,0,0,3,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,1,3,0,0,1,2,0,0,2,0,3,3,2,3,3,3,2,3,0,0,2,2,2,0,0,0,2,2,0,0,1,0,0,0,0,3,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,3,0,2,0,0,0,0,0,0,0,0,0,0,1,2,3,1,3,3,0,0,1,0,3,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,1,2,3,1,2,3,1,0,3,0,2,2,1,0,2,1,1,2,0,1,0,0,1,1,1,1,0,1,0,0,1,0,0,0,0,1,1,0,3,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,2,1,0,
-1,1,1,3,1,2,2,2,2,2,2,1,1,1,1,0,3,1,0,1,3,1,1,1,1,1,1,0,2,0,1,3,1,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,1,3,0,2,2,1,3,3,2,3,3,0,1,1,0,2,2,1,2,1,3,3,1,0,0,3,2,0,0,0,0,2,1,0,1,0,0,0,0,1,2,0,1,1,3,1,1,2,2,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,3,0,0,1,0,0,0,3,0,0,3,0,3,1,0,1,1,1,3,2,0,0,0,3,0,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,3,3,1,3,2,1,3,3,1,2,2,0,1,2,1,0,1,2,0,0,0,0,0,3,0,0,0,3,0,0,0,0,3,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,
-1,2,0,3,3,3,2,2,0,1,1,0,1,3,0,0,0,2,2,0,0,0,0,3,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,2,3,1,2,0,0,2,1,0,3,1,0,1,2,0,1,1,1,1,3,0,0,3,1,1,0,2,2,1,1,0,2,0,0,0,0,0,1,0,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,3,1,2,0,0,2,2,0,1,2,0,1,0,1,3,1,2,1,0,0,0,2,0,3,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,1,1,2,2,0,0,0,2,0,2,1,0,1,1,0,1,1,1,2,1,0,0,1,1,1,0,2,1,1,1,0,1,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,
-1,0,1,0,0,0,2,0,1,3,1,1,1,1,0,0,0,0,3,2,0,1,0,0,0,1,2,0,0,0,1,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,3,2,2,0,0,0,1,0,0,0,0,2,3,2,1,2,2,3,0,0,0,2,3,1,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0,3,3,2,2,0,1,0,0,0,0,2,0,2,0,1,0,0,0,1,1,0,0,0,2,1,0,1,0,1,1,0,0,0,1,0,2,0,0,1,0,3,0,1,0,0,0,2,1,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,3,3,1,0,0,1,0,0,0,0,0,1,1,2,0,0,0,0,1,0,0,1,3,1,0,0,0,0,1,1,0,0,0,1,0,0,0,0,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,3,3,1,1,1,1,2,3,0,0,2,1,1,1,1,1,0,2,1,1,0,0,0,2,1,0,1,2,1,1,0,1,2,1,0,3,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,1,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,2,0,0,0,0,0,0,1,2,1,0,1,1,0,2,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,3,0,1,0,0,0,2,0,
-0,0,0,0,0,0,1,2,0,0,0,0,0,3,3,0,0,1,1,2,0,0,1,2,1,0,1,1,1,0,1,1,0,0,2,1,1,0,1,0,0,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,1,0,0,0,0,1,0,0,0,0,3,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,2,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,0,0,1,1,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,2,0,1,2,0,0,1,1,0,2,0,1,0,0,1,0,0,0,0,1,0,0,0,2,0,0,0,0,1,0,0,1,0,1,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,1,0,2,1,3,0,0,0,0,1,1,0,0,0,0,0,0,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,1,0,1,0,0,2,0,0,2,0,0,1,1,2,0,0,1,1,0,0,0,1,0,0,0,1,1,0,0,0,1,0,1,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,3,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,2,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,2,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];b.TIS620ThaiModel={charToOrderMap:b.TIS620CharToOrderMap,precedenceMatrix:b.ThaiLangModel,mTypicalPositiveRatio:.926386,keepEnglishLetter:!1,charsetName:"TIS-620"};!0},{"./init":20}],29:[function(b,a,d){!function(a){a.OTH=1;a.Latin1_CharToClass=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,1,1,0,1,7,1,1,1,1,1,1,5,1,5,0,5,0,0,1,1,1,1,1,1,1,1,1,7,1,7,0,7,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,4,4,4,4,4,5,5,4,4,4,4,4,4,4,4,5,5,4,4,4,4,4,1,4,4,4,4,4,5,5,5,6,6,6,6,6,6,7,7,6,6,6,6,6,6,6,6,7,7,6,6,6,6,6,1,6,6,6,6,6,7,7,7];a.Latin1ClassModel=[0,0,0,0,0,0,0,0,0,3,3,3,3,3,
-3,3,0,3,3,3,3,3,3,3,0,3,3,3,1,1,3,3,0,3,3,3,1,2,1,2,0,3,3,3,3,3,3,3,0,3,1,3,1,1,1,3,0,3,1,3,1,1,3,3];a.Latin1Prober=function(){a.CharSetProber.apply(this);this.reset=function(){this._mLastCharClass=a.OTH;this._mFreqCounter=[];for(var b=0;4>b;this._mFreqCounter[b++]=0);a.Latin1Prober.prototype.reset.apply(this)};this.getCharsetName=function(){return"windows-1252"};this.feed=function(b){b=this.filterWithEnglishLetters(b);for(var f=0;f<b.length;f++){var c=b.charCodeAt(f),c=a.Latin1_CharToClass[c],e=
-a.Latin1ClassModel[8*this._mLastCharClass+c];if(0==e){this._mState=a.Constants.notMe;break}this._mFreqCounter[e]++;this._mLastCharClass=c}return this.getState()};this.getConfidence=function(){var b;if(this.getState()==a.Constants.notMe)return.01;for(var f=0,c=0;c<this._mFreqCounter.length;c++)f+=this._mFreqCounter[c];.01>f||(b=this._mFreqCounter[3]/f-20*this._mFreqCounter[1]/f);0>b&&(b=0);return.95*b};this.reset()};a.Latin1Prober.prototype=new a.CharSetProber}(b("./init"))},{"./init":20}],30:[function(b,
-a,d){!function(a){a.MultiByteCharSetProber=function(){a.CharSetProber.apply(this);this.reset=function(){a.MultiByteCharSetProber.prototype.reset.apply(this);this._mCodingSM&&this._mCodingSM.reset();this._mDistributionAnalyzer&&this._mDistributionAnalyzer.reset();this._mLastChar="\x00\x00"};this.getCharsetName=function(){};this.feed=function(b){for(var f=b.length,c=0;c<f;c++){var e=this._mCodingSM.nextState(b[c]);if(e==a.Constants.error){a.Constants._debug&&a.log(this.getCharsetName()+" prober hit error at byte "+
-c+"\n");this._mState=a.Constants.notMe;break}else if(e==a.Constants.itsMe){this._mState=a.Constants.foundIt;break}else e==a.Constants.start&&(e=this._mCodingSM.getCurrentCharLen(),0==c?(this._mLastChar[1]=b[0],this._mDistributionAnalyzer.feed(this._mLastChar,e)):this._mDistributionAnalyzer.feed(b.slice(c-1,c+1),e))}this._mLastChar[0]=b[f-1];this.getState()==a.Constants.detecting&&this._mDistributionAnalyzer.gotEnoughData()&&this.getConfidence()>a.Constants.SHORTCUT_THRESHOLD&&(this._mState=a.Constants.foundIt);
-return this.getState()};this.getConfidence=function(){return this._mDistributionAnalyzer.getConfidence()}};a.MultiByteCharSetProber.prototype=new a.CharSetProber}(b("./init"))},{"./init":20}],31:[function(b,a,d){!function(a){a.MBCSGroupProber=function(){a.CharSetGroupProber.apply(this);this._mProbers=[new a.UTF8Prober,new a.SJISProber,new a.EUCJPProber,new a.GB2312Prober,new a.EUCKRProber,new a.Big5Prober,new a.EUCTWProber];this.reset()};a.MBCSGroupProber.prototype=new a.CharSetGroupProber}(b("./init"))},
-{"./init":20}],32:[function(b,a,d){b=b("./init");a=b.Constants;b.BIG5_cls=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
-3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0];b.BIG5_st=[a.error,a.start,a.start,3,a.error,a.error,a.error,a.error,a.error,a.error,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.error,a.error,a.start,a.start,a.start,a.start,a.start,a.start,a.start];b.Big5CharLenTable=[0,1,1,2,0];b.Big5SMModel={classTable:b.BIG5_cls,classFactor:5,stateTable:b.BIG5_st,charLenTable:b.Big5CharLenTable,name:"Big5"};b.EUCJP_cls=[4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,4,4,4,4,4,4,4,4,4,4,4,5,
-4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5];b.EUCJP_st=[3,4,3,5,a.start,a.error,a.error,
-a.error,a.error,a.error,a.error,a.error,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.start,a.error,a.start,a.error,a.error,a.error,a.error,a.error,a.start,a.error,a.error,a.error,3,a.error,3,a.error,a.error,a.error,a.start,a.start,a.start,a.start];b.EUCJPCharLenTable=[2,2,2,3,1,0];b.EUCJPSMModel={classTable:b.EUCJP_cls,classFactor:6,stateTable:b.EUCJP_st,charLenTable:b.EUCJPCharLenTable,name:"EUC-JP"};b.EUCKR_cls=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0];b.EUCKR_st=[a.error,a.start,3,a.error,a.error,a.error,a.error,a.error,
-a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.error,a.error,a.start,a.start];b.EUCKRCharLenTable=[0,1,2,0];b.EUCKRSMModel={classTable:b.EUCKR_cls,classFactor:4,stateTable:b.EUCKR_st,charLenTable:b.EUCKRCharLenTable,name:"EUC-KR"};b.EUCTW_cls=[2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,4,4,4,4,4,5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0];b.EUCTW_st=[a.error,a.error,a.start,3,3,3,4,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.error,a.start,a.error,a.start,a.start,a.start,a.error,a.error,a.error,a.error,a.error,5,a.error,a.error,
-a.error,a.start,a.error,a.start,a.start,a.start,a.error,a.start,a.start,a.start,a.start,a.start,a.start];b.EUCTWCharLenTable=[0,0,1,2,2,2,3];b.EUCTWSMModel={classTable:b.EUCTW_cls,classFactor:7,stateTable:b.EUCTW_st,charLenTable:b.EUCTWCharLenTable,name:"x-euc-tw"};b.GB2312_cls=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,0];b.GB2312_st=[a.error,a.start,a.start,a.start,a.start,a.start,3,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.error,a.error,a.start,4,a.error,a.start,
-a.start,a.error,a.error,a.error,a.error,a.error,a.error,5,a.error,a.error,a.error,a.itsMe,a.error,a.error,a.error,a.start,a.start,a.start,a.start,a.start,a.start];b.GB2312CharLenTable=[0,1,1,1,1,1,2];b.GB2312SMModel={classTable:b.GB2312_cls,classFactor:7,stateTable:b.GB2312_st,charLenTable:b.GB2312CharLenTable,name:"GB2312"};b.SJIS_cls=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0];b.SJIS_st=[a.error,a.start,a.start,3,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.error,
-a.error,a.start,a.start,a.start,a.start];b.SJISCharLenTable=[0,1,1,2,0,0];b.SJISSMModel={classTable:b.SJIS_cls,classFactor:6,stateTable:b.SJIS_st,charLenTable:b.SJISCharLenTable,name:"Shift_JIS"};b.UCS2BE_cls=[0,0,0,0,0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,5];b.UCS2BE_st=[5,7,7,a.error,4,3,a.error,a.error,a.error,a.error,a.error,a.error,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,6,6,6,6,a.error,a.error,6,6,6,6,6,a.itsMe,6,6,6,6,6,6,5,7,7,a.error,5,8,6,6,a.error,6,6,6,6,6,6,6,a.error,a.error,a.start,a.start];b.UCS2BECharLenTable=[2,
-2,2,0,2,2];b.UCS2BESMModel={classTable:b.UCS2BE_cls,classFactor:6,stateTable:b.UCS2BE_st,charLenTable:b.UCS2BECharLenTable,name:"UTF-16BE"};b.UCS2LE_cls=[0,0,0,0,0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,5];b.UCS2LE_st=[6,6,7,6,4,3,a.error,a.error,a.error,a.error,a.error,a.error,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,5,5,5,a.error,a.itsMe,a.error,5,5,5,a.error,5,a.error,6,6,7,6,8,8,5,5,5,a.error,5,5,5,a.error,a.error,a.error,5,5,5,5,5,a.error,5,a.error,a.start,a.start];b.UCS2LECharLenTable=[2,2,2,2,2,2];b.UCS2LESMModel={classTable:b.UCS2LE_cls,
-classFactor:6,stateTable:b.UCS2LE_st,charLenTable:b.UCS2LECharLenTable,name:"UTF-16LE"};b.UTF8_cls=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,6,6,6,6,6,6,6,
-6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,8,8,8,8,8,8,8,8,8,8,8,8,9,8,8,10,11,11,11,11,11,11,11,12,13,13,13,14,15,0,0];b.UTF8_st=[a.error,a.start,a.error,a.error,a.error,a.error,12,10,9,11,8,7,6,5,4,3,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.error,a.error,5,5,5,5,a.error,a.error,
-a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,5,5,5,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,7,7,7,7,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,7,7,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,9,9,9,9,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,
-a.error,a.error,a.error,a.error,9,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,12,12,12,12,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,12,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,12,12,12,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.start,a.start,a.start,a.start,
-a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error];b.UTF8CharLenTable=[0,1,0,0,0,0,2,3,3,3,4,4,5,5,6,6];b.UTF8SMModel={classTable:b.UTF8_cls,classFactor:16,stateTable:b.UTF8_st,charLenTable:b.UTF8CharLenTable,name:"UTF-8"};!0},{"./init":20}],33:[function(b,a,d){!function(a){a.SingleByteCharSetProber=function(b,f,c){a.CharSetProber.apply(this);var e=this;this.reset=function(){a.SingleByteCharSetProber.prototype.reset.apply(this);this._mLastOrder=255;this._mSeqCounters=
-[];for(var b=0;4>b;this._mSeqCounters[b++]=0);this._mFreqChar=this._mTotalChar=this._mTotalSeqs=0};this.getCharsetName=function(){return this._mNameProber?this._mNameProber.getCharsetName():this._mModel.charsetName};this.feed=function(b){this._mModel.keepEnglishLetter||(b=this.filterWithoutEnglishLetters(b));var c=b.length;if(!c)return this.getState();for(var f=0,d;f<c;f++)d=b.charCodeAt(f),d=this._mModel.charToOrderMap[d],250>d&&this._mTotalChar++,64>d&&(this._mFreqChar++,64>this._mLastOrder&&(this._mTotalSeqs++,
-this._mReversed?this._mSeqCounters[this._mModel.precedenceMatrix[64*d+this._mLastOrder]]++:this._mSeqCounters[this._mModel.precedenceMatrix[64*this._mLastOrder+d]]++)),this._mLastOrder=d;this.getState()==a.Constants.detecting&&1024<e._mTotalSeqs&&(b=this.getConfidence(),.95<b?a.Constants._debug&&a.log(this._mModel.charsetName+" confidence = "+b+", we have a winner\n"):.05>b&&(a.Constants._debug&&a.log(this._mModel.charsetName+" confidence = "+b+", below negative shortcut threshhold 0.05\n"),this._mState=
-a.Constants.notMe));return this.getState()};this.getConfidence=function(){var a=.01;0<this._mTotalSeqs&&(a=1*this._mSeqCounters[3]/this._mTotalSeqs/this._mModel.mTypicalPositiveRatio,a*=this._mFreqChar/this._mTotalChar,1<=a&&(a=.99));return a};(function(a,b,c){e._mModel=a;e._mReversed=b;e._mNameProber=c;e.reset()})(b,void 0!==f?f:!1,void 0!==c?c:null)};a.SingleByteCharSetProber.prototype=new a.CharSetProber}(b("./init"))},{"./init":20}],34:[function(b,a,d){!function(a){a.SBCSGroupProber=function(){a.CharSetGroupProber.apply(this);
-this._mProbers=[new a.SingleByteCharSetProber(a.Win1251CyrillicModel),new a.SingleByteCharSetProber(a.Koi8rModel),new a.SingleByteCharSetProber(a.Latin5CyrillicModel),new a.SingleByteCharSetProber(a.MacCyrillicModel),new a.SingleByteCharSetProber(a.Ibm866Model),new a.SingleByteCharSetProber(a.Ibm855Model),new a.SingleByteCharSetProber(a.Latin7GreekModel),new a.SingleByteCharSetProber(a.Win1253GreekModel),new a.SingleByteCharSetProber(a.Latin5BulgarianModel),new a.SingleByteCharSetProber(a.Win1251BulgarianModel),
-new a.SingleByteCharSetProber(a.Latin2HungarianModel),new a.SingleByteCharSetProber(a.Win1250HungarianModel),new a.SingleByteCharSetProber(a.TIS620ThaiModel)];var b=new a.HebrewProber,f=new a.SingleByteCharSetProber(a.Win1255HebrewModel,!1,b),c=new a.SingleByteCharSetProber(a.Win1255HebrewModel,!0,b);b.setModelProbers(f,c);this._mProbers.push(b,f,c);this.reset()};a.SBCSGroupProber.prototype=new a.CharSetGroupProber}(b("./init"))},{"./init":20}],35:[function(b,a,d){!function(a){a.SJISProber=function(){a.MultiByteCharSetProber.apply(this);
-this.reset=function(){a.SJISProber.prototype.reset.apply(this);this._mContextAnalyzer.reset()};this.getCharsetName=function(){return"SHIFT_JIS"};this.feed=function(b){for(var f=b.length,c=0;c<f;c++){var e=this._mCodingSM.nextState(b[c]);if(e==a.Constants.error){a.Constants._debug&&a.log(this.getCharsetName()+" prober hit error at byte "+c+"\n");this._mState=a.Constants.notMe;break}else if(e==a.Constants.itsMe){this._mState=a.Constants.foundIt;break}else e==a.Constants.start&&(e=this._mCodingSM.getCurrentCharLen(),
-0==c?(this._mLastChar[1]=b[0],this._mContextAnalyzer.feed(this._mLastChar.slice(2-e),e),this._mDistributionAnalyzer.feed(this._mLastChar,e)):(this._mContextAnalyzer.feed(b.slice(c+1-e,c+3-e),e),this._mDistributionAnalyzer.feed(b.slice(c-1,c+1),e)))}this._mLastChar[0]=b[f-1];this.getState()==a.Constants.detecting&&this._mContextAnalyzer.gotEnoughData()&&this.getConfidence()>a.Constants.SHORTCUT_THRESHOLD&&(this._mState=a.Constants.foundIt);return this.getState()};this.getConfidence=function(){var a=
-this._mContextAnalyzer.getConfidence(),b=this._mDistributionAnalyzer.getConfidence();return Math.max(a,b)};this._mCodingSM=new a.CodingStateMachine(a.SJISSMModel);this._mDistributionAnalyzer=new a.SJISDistributionAnalysis;this._mContextAnalyzer=new a.SJISContextAnalysis;this.reset()};a.SJISProber.prototype=new a.MultiByteCharSetProber}(b("./init"))},{"./init":20}],36:[function(b,a,d){!function(a){a.UniversalDetector=function(){var b=a.Constants.MINIMUM_THRESHOLD;this.reset=function(){this.result=
-{encoding:null,confidence:0};this.done=!1;this._mStart=!0;this._mGotData=!1;this._mInputState=0;this._mBOM=this._mLastChar="";this._mEscCharsetProber&&this._mEscCharsetProber.reset();for(var a=0,b;b=this._mCharsetProbers[a];a++)b.reset()};this.feed=function(b){if(!this.done&&b.length)if(this._mGotData||(this._mBOM+=b,"\u00ef\u00bb\u00bf"==this._mBOM.slice(0,3)?this.result={encoding:"UTF-8",confidence:1}:"\u00ff\u00fe\x00\x00"==this._mBOM.slice(0,4)?this.result={encoding:"UTF-32LE",confidence:1}:"\x00\x00\u00fe\u00ff"==
-this._mBOM.slice(0,4)?this.result={encoding:"UTF-32BE",confidence:1}:"\u00fe\u00ff\x00\x00"==this._mBOM.slice(0,4)?this.result={encoding:"X-ISO-10646-UCS-4-3412",confidence:1}:"\x00\x00\u00ff\u00fe"==this._mBOM.slice(0,4)?this.result={encoding:"X-ISO-10646-UCS-4-2143",confidence:1}:"\u00ff\u00fe"==this._mBOM.slice(0,2)?this.result={encoding:"UTF-16LE",confidence:1}:"\u00fe\u00ff"==this._mBOM.slice(0,2)&&(this.result={encoding:"UTF-16BE",confidence:1}),3<this._mBOM.length&&(this._mGotData=!0)),this.result.encoding&&
-0<this.result.confidence)this.done=!0;else if(0==this._mInputState&&(this._highBitDetector.test(b)?this._mInputState=2:this._escDetector.test(this._mLastChar+b)&&(this._mInputState=1)),this._mLastChar=b.slice(-1),1==this._mInputState)this._mEscCharsetProber||(this._mEscCharsetProber=new a.EscCharSetProber),this._mEscCharsetProber.feed(b)==a.Constants.foundIt&&(this.result={encoding:this._mEscCharsetProber.getCharsetName(),confidence:this._mEscCharsetProber.getConfidence()},this.done=!0);else if(2==
-this._mInputState){0==this._mCharsetProbers.length&&(this._mCharsetProbers=[new a.MBCSGroupProber,new a.SBCSGroupProber,new a.Latin1Prober]);for(var c=0,e;e=this._mCharsetProbers[c];c++)if(e.feed(b)==a.Constants.foundIt){this.result={encoding:e.getCharsetName(),confidence:e.getConfidence()};this.done=!0;break}}};this.close=function(){if(!this.done)if(0===this._mBOM.length)a.Constants._debug&&a.log("no data received!\n");else{this.done=!0;if(0==this._mInputState)return a.Constants._debug&&a.log("pure ascii"),
-this.result={encoding:"ascii",confidence:1};if(2==this._mInputState){for(var f=null,c=0,e=null,d=0,g;g=this._mCharsetProbers[d];d++)g&&(f=g.getConfidence(),f>c&&(c=f,e=g),a.Constants._debug&&a.log(g.getCharsetName()+" confidence "+g.getConfidence()));if(e&&c>b)return this.result={encoding:e.getCharsetName(),confidence:e.getConfidence()}}if(a.Constants._debug)for(a.log("no probers hit minimum threshhold\n"),d=0;g=this._mCharsetProbers[d];d++)g&&a.log(g.getCharsetName()+" confidence = "+g.getConfidence()+
-"\n")}};this._highBitDetector=/[\x80-\xFF]/;this._escDetector=/(\x1B|~\{)/;this._mEscCharsetProber=null;this._mCharsetProbers=[];this.reset()}}(b("./init"))},{"./init":20}],37:[function(b,a,d){!function(a){a.UTF8Prober=function(){a.CharSetProber.apply(this);this.reset=function(){a.UTF8Prober.prototype.reset.apply(this);this._mCodingSM.reset();this._mNumOfMBChar=0};this.getCharsetName=function(){return"UTF-8"};this.feed=function(b){for(var d=0,c;d<b.length;d++)if(c=b[d],c=this._mCodingSM.nextState(c),
-c==a.Constants.error){this._mState=a.Constants.notMe;break}else if(c==a.Constants.itsMe){this._mState=a.Constants.foundIt;break}else c==a.Constants.start&&2<=this._mCodingSM.getCurrentCharLen()&&this._mNumOfMBChar++;this.getState()==a.Constants.detecting&&this.getConfidence()>a.Constants.SHORTCUT_THRESHOLD&&(this._mState=a.Constants.foundIt);return this.getState()};this.getConfidence=function(){var a=.99;if(6>this._mNumOfMBChar){for(var b=0;b<this._mNumOfMBChar;b++)a*=.5;return 1-a}return a};this._mCodingSM=
-new a.CodingStateMachine(a.UTF8SMModel);this.reset()};a.UTF8Prober.prototype=new a.CharSetProber}(b("./init"))},{"./init":20}]},{},[1])(1)});
+{exports:{}};a[c][0].call(g.exports,function(h){var b=a[c][1][h];return k(b?b:h)},g,g.exports,b,a,d,h)}return d[c].exports}for(var f="function"==typeof require&&require,c=0;c<h.length;c++)k(h[c]);return k}({1:[function(b,a,d){a.exports=b("./src");a=b("./src");b=b("fs");a.Constants._debug=!0;b=b.readFileSync("./shift-jis_fail.txt");console.log(a.detect(b))},{"./src":20,fs:2}],2:[function(b,a,d){},{}],3:[function(b,a,d){b=b("./init");b.BIG5_TYPICAL_DISTRIBUTION_RATIO=.75;b.BIG5_TABLE_SIZE=5376;b.Big5CharToFreqOrder=
+[1,1801,1506,255,1431,198,9,82,6,5008,177,202,3681,1256,2821,110,3814,33,3274,261,76,44,2114,16,2946,2187,1176,659,3971,26,3451,2653,1198,3972,3350,4202,410,2215,302,590,361,1964,8,204,58,4510,5009,1932,63,5010,5011,317,1614,75,222,159,4203,2417,1480,5012,3555,3091,224,2822,3682,3,10,3973,1471,29,2787,1135,2866,1940,873,130,3275,1123,312,5013,4511,2052,507,252,682,5014,142,1915,124,206,2947,34,3556,3204,64,604,5015,2501,1977,1978,155,1991,645,641,1606,5016,3452,337,72,406,5017,80,630,238,3205,1509,
+263,939,1092,2654,756,1440,1094,3453,449,69,2987,591,179,2096,471,115,2035,1844,60,50,2988,134,806,1869,734,2036,3454,180,995,1607,156,537,2907,688,5018,319,1305,779,2145,514,2379,298,4512,359,2502,90,2716,1338,663,11,906,1099,2553,20,2441,182,532,1716,5019,732,1376,4204,1311,1420,3206,25,2317,1056,113,399,382,1950,242,3455,2474,529,3276,475,1447,3683,5020,117,21,656,810,1297,2300,2334,3557,5021,126,4205,706,456,150,613,4513,71,1118,2037,4206,145,3092,85,835,486,2115,1246,1426,428,727,1285,1015,800,
+106,623,303,1281,5022,2128,2359,347,3815,221,3558,3135,5023,1956,1153,4207,83,296,1199,3093,192,624,93,5024,822,1898,2823,3136,795,2065,991,1554,1542,1592,27,43,2867,859,139,1456,860,4514,437,712,3974,164,2397,3137,695,211,3037,2097,195,3975,1608,3559,3560,3684,3976,234,811,2989,2098,3977,2233,1441,3561,1615,2380,668,2077,1638,305,228,1664,4515,467,415,5025,262,2099,1593,239,108,300,200,1033,512,1247,2078,5026,5027,2176,3207,3685,2682,593,845,1062,3277,88,1723,2038,3978,1951,212,266,152,149,468,1899,
+4208,4516,77,187,5028,3038,37,5,2990,5029,3979,5030,5031,39,2524,4517,2908,3208,2079,55,148,74,4518,545,483,1474,1029,1665,217,1870,1531,3138,1104,2655,4209,24,172,3562,900,3980,3563,3564,4519,32,1408,2824,1312,329,487,2360,2251,2717,784,2683,4,3039,3351,1427,1789,188,109,499,5032,3686,1717,1790,888,1217,3040,4520,5033,3565,5034,3352,1520,3687,3981,196,1034,775,5035,5036,929,1816,249,439,38,5037,1063,5038,794,3982,1435,2301,46,178,3278,2066,5039,2381,5040,214,1709,4521,804,35,707,324,3688,1601,2554,
+140,459,4210,5041,5042,1365,839,272,978,2262,2580,3456,2129,1363,3689,1423,697,100,3094,48,70,1231,495,3139,2196,5043,1294,5044,2080,462,586,1042,3279,853,256,988,185,2382,3457,1698,434,1084,5045,3458,314,2625,2788,4522,2335,2336,569,2285,637,1817,2525,757,1162,1879,1616,3459,287,1577,2116,768,4523,1671,2868,3566,2526,1321,3816,909,2418,5046,4211,933,3817,4212,2053,2361,1222,4524,765,2419,1322,786,4525,5047,1920,1462,1677,2909,1699,5048,4526,1424,2442,3140,3690,2600,3353,1775,1941,3460,3983,4213,
+309,1369,1130,2825,364,2234,1653,1299,3984,3567,3985,3986,2656,525,1085,3041,902,2001,1475,964,4527,421,1845,1415,1057,2286,940,1364,3141,376,4528,4529,1381,7,2527,983,2383,336,1710,2684,1846,321,3461,559,1131,3042,2752,1809,1132,1313,265,1481,1858,5049,352,1203,2826,3280,167,1089,420,2827,776,792,1724,3568,4214,2443,3281,5050,4215,5051,446,229,333,2753,901,3818,1200,1557,4530,2657,1921,395,2754,2685,3819,4216,1836,125,916,3209,2626,4531,5052,5053,3820,5054,5055,5056,4532,3142,3691,1133,2555,1757,
+3462,1510,2318,1409,3569,5057,2146,438,2601,2910,2384,3354,1068,958,3043,461,311,2869,2686,4217,1916,3210,4218,1979,383,750,2755,2627,4219,274,539,385,1278,1442,5058,1154,1965,384,561,210,98,1295,2556,3570,5059,1711,2420,1482,3463,3987,2911,1257,129,5060,3821,642,523,2789,2790,2658,5061,141,2235,1333,68,176,441,876,907,4220,603,2602,710,171,3464,404,549,18,3143,2398,1410,3692,1666,5062,3571,4533,2912,4534,5063,2991,368,5064,146,366,99,871,3693,1543,748,807,1586,1185,22,2263,379,3822,3211,5065,3212,
+505,1942,2628,1992,1382,2319,5066,380,2362,218,702,1818,1248,3465,3044,3572,3355,3282,5067,2992,3694,930,3283,3823,5068,59,5069,585,601,4221,497,3466,1112,1314,4535,1802,5070,1223,1472,2177,5071,749,1837,690,1900,3824,1773,3988,1476,429,1043,1791,2236,2117,917,4222,447,1086,1629,5072,556,5073,5074,2021,1654,844,1090,105,550,966,1758,2828,1008,1783,686,1095,5075,2287,793,1602,5076,3573,2603,4536,4223,2948,2302,4537,3825,980,2503,544,353,527,4538,908,2687,2913,5077,381,2629,1943,1348,5078,1341,1252,
+560,3095,5079,3467,2870,5080,2054,973,886,2081,143,4539,5081,5082,157,3989,496,4224,57,840,540,2039,4540,4541,3468,2118,1445,970,2264,1748,1966,2082,4225,3144,1234,1776,3284,2829,3695,773,1206,2130,1066,2040,1326,3990,1738,1725,4226,279,3145,51,1544,2604,423,1578,2131,2067,173,4542,1880,5083,5084,1583,264,610,3696,4543,2444,280,154,5085,5086,5087,1739,338,1282,3096,693,2871,1411,1074,3826,2445,5088,4544,5089,5090,1240,952,2399,5091,2914,1538,2688,685,1483,4227,2475,1436,953,4228,2055,4545,671,2400,
+79,4229,2446,3285,608,567,2689,3469,4230,4231,1691,393,1261,1792,2401,5092,4546,5093,5094,5095,5096,1383,1672,3827,3213,1464,522,1119,661,1150,216,675,4547,3991,1432,3574,609,4548,2690,2402,5097,5098,5099,4232,3045,0,5100,2476,315,231,2447,301,3356,4549,2385,5101,233,4233,3697,1819,4550,4551,5102,96,1777,1315,2083,5103,257,5104,1810,3698,2718,1139,1820,4234,2022,1124,2164,2791,1778,2659,5105,3097,363,1655,3214,5106,2993,5107,5108,5109,3992,1567,3993,718,103,3215,849,1443,341,3357,2949,1484,5110,1712,
+127,67,339,4235,2403,679,1412,821,5111,5112,834,738,351,2994,2147,846,235,1497,1881,418,1993,3828,2719,186,1100,2148,2756,3575,1545,1355,2950,2872,1377,583,3994,4236,2581,2995,5113,1298,3699,1078,2557,3700,2363,78,3829,3830,267,1289,2100,2002,1594,4237,348,369,1274,2197,2178,1838,4552,1821,2830,3701,2757,2288,2003,4553,2951,2758,144,3358,882,4554,3995,2759,3470,4555,2915,5114,4238,1726,320,5115,3996,3046,788,2996,5116,2831,1774,1327,2873,3997,2832,5117,1306,4556,2004,1700,3831,3576,2364,2660,787,
+2023,506,824,3702,534,323,4557,1044,3359,2024,1901,946,3471,5118,1779,1500,1678,5119,1882,4558,165,243,4559,3703,2528,123,683,4239,764,4560,36,3998,1793,589,2916,816,626,1667,3047,2237,1639,1555,1622,3832,3999,5120,4E3,2874,1370,1228,1933,891,2084,2917,304,4240,5121,292,2997,2720,3577,691,2101,4241,1115,4561,118,662,5122,611,1156,854,2386,1316,2875,2,386,515,2918,5123,5124,3286,868,2238,1486,855,2661,785,2216,3048,5125,1040,3216,3578,5126,3146,448,5127,1525,5128,2165,4562,5129,3833,5130,4242,2833,
+3579,3147,503,818,4001,3148,1568,814,676,1444,306,1749,5131,3834,1416,1030,197,1428,805,2834,1501,4563,5132,5133,5134,1994,5135,4564,5136,5137,2198,13,2792,3704,2998,3149,1229,1917,5138,3835,2132,5139,4243,4565,2404,3580,5140,2217,1511,1727,1120,5141,5142,646,3836,2448,307,5143,5144,1595,3217,5145,5146,5147,3705,1113,1356,4002,1465,2529,2530,5148,519,5149,128,2133,92,2289,1980,5150,4003,1512,342,3150,2199,5151,2793,2218,1981,3360,4244,290,1656,1317,789,827,2365,5152,3837,4566,562,581,4004,5153,401,
+4567,2252,94,4568,5154,1399,2794,5155,1463,2025,4569,3218,1944,5156,828,1105,4245,1262,1394,5157,4246,605,4570,5158,1784,2876,5159,2835,819,2102,578,2200,2952,5160,1502,436,3287,4247,3288,2836,4005,2919,3472,3473,5161,2721,2320,5162,5163,2337,2068,23,4571,193,826,3838,2103,699,1630,4248,3098,390,1794,1064,3581,5164,1579,3099,3100,1400,5165,4249,1839,1640,2877,5166,4572,4573,137,4250,598,3101,1967,780,104,974,2953,5167,278,899,253,402,572,504,493,1339,5168,4006,1275,4574,2582,2558,5169,3706,3049,3102,
+2253,565,1334,2722,863,41,5170,5171,4575,5172,1657,2338,19,463,2760,4251,606,5173,2999,3289,1087,2085,1323,2662,3E3,5174,1631,1623,1750,4252,2691,5175,2878,791,2723,2663,2339,232,2421,5176,3001,1498,5177,2664,2630,755,1366,3707,3290,3151,2026,1609,119,1918,3474,862,1026,4253,5178,4007,3839,4576,4008,4577,2265,1952,2477,5179,1125,817,4254,4255,4009,1513,1766,2041,1487,4256,3050,3291,2837,3840,3152,5180,5181,1507,5182,2692,733,40,1632,1106,2879,345,4257,841,2531,230,4578,3002,1847,3292,3475,5183,1263,
+986,3476,5184,735,879,254,1137,857,622,1300,1180,1388,1562,4010,4011,2954,967,2761,2665,1349,592,2134,1692,3361,3003,1995,4258,1679,4012,1902,2188,5185,739,3708,2724,1296,1290,5186,4259,2201,2202,1922,1563,2605,2559,1871,2762,3004,5187,435,5188,343,1108,596,17,1751,4579,2239,3477,3709,5189,4580,294,3582,2955,1693,477,979,281,2042,3583,643,2043,3710,2631,2795,2266,1031,2340,2135,2303,3584,4581,367,1249,2560,5190,3585,5191,4582,1283,3362,2005,240,1762,3363,4583,4584,836,1069,3153,474,5192,2149,2532,
+268,3586,5193,3219,1521,1284,5194,1658,1546,4260,5195,3587,3588,5196,4261,3364,2693,1685,4262,961,1673,2632,190,2006,2203,3841,4585,4586,5197,570,2504,3711,1490,5198,4587,2633,3293,1957,4588,584,1514,396,1045,1945,5199,4589,1968,2449,5200,5201,4590,4013,619,5202,3154,3294,215,2007,2796,2561,3220,4591,3221,4592,763,4263,3842,4593,5203,5204,1958,1767,2956,3365,3712,1174,452,1477,4594,3366,3155,5205,2838,1253,2387,2189,1091,2290,4264,492,5206,638,1169,1825,2136,1752,4014,648,926,1021,1324,4595,520,4596,
+997,847,1007,892,4597,3843,2267,1872,3713,2405,1785,4598,1953,2957,3103,3222,1728,4265,2044,3714,4599,2008,1701,3156,1551,30,2268,4266,5207,2027,4600,3589,5208,501,5209,4267,594,3478,2166,1822,3590,3479,3591,3223,829,2839,4268,5210,1680,3157,1225,4269,5211,3295,4601,4270,3158,2341,5212,4602,4271,5213,4015,4016,5214,1848,2388,2606,3367,5215,4603,374,4017,652,4272,4273,375,1140,798,5216,5217,5218,2366,4604,2269,546,1659,138,3051,2450,4605,5219,2254,612,1849,910,796,3844,1740,1371,825,3845,3846,5220,
+2920,2562,5221,692,444,3052,2634,801,4606,4274,5222,1491,244,1053,3053,4275,4276,340,5223,4018,1041,3005,293,1168,87,1357,5224,1539,959,5225,2240,721,694,4277,3847,219,1478,644,1417,3368,2666,1413,1401,1335,1389,4019,5226,5227,3006,2367,3159,1826,730,1515,184,2840,66,4607,5228,1660,2958,246,3369,378,1457,226,3480,975,4020,2959,1264,3592,674,696,5229,163,5230,1141,2422,2167,713,3593,3370,4608,4021,5231,5232,1186,15,5233,1079,1070,5234,1522,3224,3594,276,1050,2725,758,1126,653,2960,3296,5235,2342,889,
+3595,4022,3104,3007,903,1250,4609,4023,3481,3596,1342,1681,1718,766,3297,286,89,2961,3715,5236,1713,5237,2607,3371,3008,5238,2962,2219,3225,2880,5239,4610,2505,2533,181,387,1075,4024,731,2190,3372,5240,3298,310,313,3482,2304,770,4278,54,3054,189,4611,3105,3848,4025,5241,1230,1617,1850,355,3597,4279,4612,3373,111,4280,3716,1350,3160,3483,3055,4281,2150,3299,3598,5242,2797,4026,4027,3009,722,2009,5243,1071,247,1207,2343,2478,1378,4613,2010,864,1437,1214,4614,373,3849,1142,2220,667,4615,442,2763,2563,
+3850,4028,1969,4282,3300,1840,837,170,1107,934,1336,1883,5244,5245,2119,4283,2841,743,1569,5246,4616,4284,582,2389,1418,3484,5247,1803,5248,357,1395,1729,3717,3301,2423,1564,2241,5249,3106,3851,1633,4617,1114,2086,4285,1532,5250,482,2451,4618,5251,5252,1492,833,1466,5253,2726,3599,1641,2842,5254,1526,1272,3718,4286,1686,1795,416,2564,1903,1954,1804,5255,3852,2798,3853,1159,2321,5256,2881,4619,1610,1584,3056,2424,2764,443,3302,1163,3161,5257,5258,4029,5259,4287,2506,3057,4620,4030,3162,2104,1647,3600,
+2011,1873,4288,5260,4289,431,3485,5261,250,97,81,4290,5262,1648,1851,1558,160,848,5263,866,740,1694,5264,2204,2843,3226,4291,4621,3719,1687,950,2479,426,469,3227,3720,3721,4031,5265,5266,1188,424,1996,861,3601,4292,3854,2205,2694,168,1235,3602,4293,5267,2087,1674,4622,3374,3303,220,2565,1009,5268,3855,670,3010,332,1208,717,5269,5270,3603,2452,4032,3375,5271,513,5272,1209,2882,3376,3163,4623,1080,5273,5274,5275,5276,2534,3722,3604,815,1587,4033,4034,5277,3605,3486,3856,1254,4624,1328,3058,1390,4035,
+1741,4036,3857,4037,5278,236,3858,2453,3304,5279,5280,3723,3859,1273,3860,4625,5281,308,5282,4626,245,4627,1852,2480,1307,2583,430,715,2137,2454,5283,270,199,2883,4038,5284,3606,2727,1753,761,1754,725,1661,1841,4628,3487,3724,5285,5286,587,14,3305,227,2608,326,480,2270,943,2765,3607,291,650,1884,5287,1702,1226,102,1547,62,3488,904,4629,3489,1164,4294,5288,5289,1224,1548,2766,391,498,1493,5290,1386,1419,5291,2056,1177,4630,813,880,1081,2368,566,1145,4631,2291,1001,1035,2566,2609,2242,394,1286,5292,
+5293,2069,5294,86,1494,1730,4039,491,1588,745,897,2963,843,3377,4040,2767,2884,3306,1768,998,2221,2070,397,1827,1195,1970,3725,3011,3378,284,5295,3861,2507,2138,2120,1904,5296,4041,2151,4042,4295,1036,3490,1905,114,2567,4296,209,1527,5297,5298,2964,2844,2635,2390,2728,3164,812,2568,5299,3307,5300,1559,737,1885,3726,1210,885,28,2695,3608,3862,5301,4297,1004,1780,4632,5302,346,1982,2222,2696,4633,3863,1742,797,1642,4043,1934,1072,1384,2152,896,4044,3308,3727,3228,2885,3609,5303,2569,1959,4634,2455,
+1786,5304,5305,5306,4045,4298,1005,1308,3728,4299,2729,4635,4636,1528,2610,161,1178,4300,1983,987,4637,1101,4301,631,4046,1157,3229,2425,1343,1241,1016,2243,2570,372,877,2344,2508,1160,555,1935,911,4047,5307,466,1170,169,1051,2921,2697,3729,2481,3012,1182,2012,2571,1251,2636,5308,992,2345,3491,1540,2730,1201,2071,2406,1997,2482,5309,4638,528,1923,2191,1503,1874,1570,2369,3379,3309,5310,557,1073,5311,1828,3492,2088,2271,3165,3059,3107,767,3108,2799,4639,1006,4302,4640,2346,1267,2179,3730,3230,778,
+4048,3231,2731,1597,2667,5312,4641,5313,3493,5314,5315,5316,3310,2698,1433,3311,131,95,1504,4049,723,4303,3166,1842,3610,2768,2192,4050,2028,2105,3731,5317,3013,4051,1218,5318,3380,3232,4052,4304,2584,248,1634,3864,912,5319,2845,3732,3060,3865,654,53,5320,3014,5321,1688,4642,777,3494,1032,4053,1425,5322,191,820,2121,2846,971,4643,931,3233,135,664,783,3866,1998,772,2922,1936,4054,3867,4644,2923,3234,282,2732,640,1372,3495,1127,922,325,3381,5323,5324,711,2045,5325,5326,4055,2223,2800,1937,4056,3382,
+2224,2255,3868,2305,5327,4645,3869,1258,3312,4057,3235,2139,2965,4058,4059,5328,2225,258,3236,4646,101,1227,5329,3313,1755,5330,1391,3314,5331,2924,2057,893,5332,5333,5334,1402,4305,2347,5335,5336,3237,3611,5337,5338,878,1325,1781,2801,4647,259,1385,2585,744,1183,2272,4648,5339,4060,2509,5340,684,1024,4306,5341,472,3612,3496,1165,3315,4061,4062,322,2153,881,455,1695,1152,1340,660,554,2154,4649,1058,4650,4307,830,1065,3383,4063,4651,1924,5342,1703,1919,5343,932,2273,122,5344,4652,947,677,5345,3870,
+2637,297,1906,1925,2274,4653,2322,3316,5346,5347,4308,5348,4309,84,4310,112,989,5349,547,1059,4064,701,3613,1019,5350,4311,5351,3497,942,639,457,2306,2456,993,2966,407,851,494,4654,3384,927,5352,1237,5353,2426,3385,573,4312,680,921,2925,1279,1875,285,790,1448,1984,719,2168,5354,5355,4655,4065,4066,1649,5356,1541,563,5357,1077,5358,3386,3061,3498,511,3015,4067,4068,3733,4069,1268,2572,3387,3238,4656,4657,5359,535,1048,1276,1189,2926,2029,3167,1438,1373,2847,2967,1134,2013,5360,4313,1238,2586,3109,
+1259,5361,700,5362,2968,3168,3734,4314,5363,4315,1146,1876,1907,4658,2611,4070,781,2427,132,1589,203,147,273,2802,2407,898,1787,2155,4071,4072,5364,3871,2803,5365,5366,4659,4660,5367,3239,5368,1635,3872,965,5369,1805,2699,1516,3614,1121,1082,1329,3317,4073,1449,3873,65,1128,2848,2927,2769,1590,3874,5370,5371,12,2668,45,976,2587,3169,4661,517,2535,1013,1037,3240,5372,3875,2849,5373,3876,5374,3499,5375,2612,614,1999,2323,3877,3110,2733,2638,5376,2588,4316,599,1269,5377,1811,3735,5378,2700,3111,759,
+1060,489,1806,3388,3318,1358,5379,5380,2391,1387,1215,2639,2256,490,5381,5382,4317,1759,2392,2348,5383,4662,3878,1908,4074,2640,1807,3241,4663,3500,3319,2770,2349,874,5384,5385,3501,3736,1859,91,2928,3737,3062,3879,4664,5386,3170,4075,2669,5387,3502,1202,1403,3880,2969,2536,1517,2510,4665,3503,2511,5388,4666,5389,2701,1886,1495,1731,4076,2370,4667,5390,2030,5391,5392,4077,2702,1216,237,2589,4318,2324,4078,3881,4668,4669,2703,3615,3504,445,4670,5393,5394,5395,5396,2771,61,4079,3738,1823,4080,5397,
+687,2046,935,925,405,2670,703,1096,1860,2734,4671,4081,1877,1367,2704,3389,918,2106,1782,2483,334,3320,1611,1093,4672,564,3171,3505,3739,3390,945,2641,2058,4673,5398,1926,872,4319,5399,3506,2705,3112,349,4320,3740,4082,4674,3882,4321,3741,2156,4083,4675,4676,4322,4677,2408,2047,782,4084,400,251,4323,1624,5400,5401,277,3742,299,1265,476,1191,3883,2122,4324,4325,1109,205,5402,2590,1E3,2157,3616,1861,5403,5404,5405,4678,5406,4679,2573,107,2484,2158,4085,3507,3172,5407,1533,541,1301,158,753,4326,2886,
+3617,5408,1696,370,1088,4327,4680,3618,579,327,440,162,2244,269,1938,1374,3508,968,3063,56,1396,3113,2107,3321,3391,5409,1927,2159,4681,3016,5410,3619,5411,5412,3743,4682,2485,5413,2804,5414,1650,4683,5415,2613,5416,5417,4086,2671,3392,1149,3393,4087,3884,4088,5418,1076,49,5419,951,3242,3322,3323,450,2850,920,5420,1812,2805,2371,4328,1909,1138,2372,3885,3509,5421,3243,4684,1910,1147,1518,2428,4685,3886,5422,4686,2393,2614,260,1796,3244,5423,5424,3887,3324,708,5425,3620,1704,5426,3621,1351,1618,3394,
+3017,1887,944,4329,3395,4330,3064,3396,4331,5427,3744,422,413,1714,3325,500,2059,2350,4332,2486,5428,1344,1911,954,5429,1668,5430,5431,4089,2409,4333,3622,3888,4334,5432,2307,1318,2512,3114,133,3115,2887,4687,629,31,2851,2706,3889,4688,850,949,4689,4090,2970,1732,2089,4335,1496,1853,5433,4091,620,3245,981,1242,3745,3397,1619,3746,1643,3326,2140,2457,1971,1719,3510,2169,5434,3246,5435,5436,3398,1829,5437,1277,4690,1565,2048,5438,1636,3623,3116,5439,869,2852,655,3890,3891,3117,4092,3018,3892,1310,3624,
+4691,5440,5441,5442,1733,558,4692,3747,335,1549,3065,1756,4336,3748,1946,3511,1830,1291,1192,470,2735,2108,2806,913,1054,4093,5443,1027,5444,3066,4094,4693,982,2672,3399,3173,3512,3247,3248,1947,2807,5445,571,4694,5446,1831,5447,3625,2591,1523,2429,5448,2090,984,4695,3749,1960,5449,3750,852,923,2808,3513,3751,969,1519,999,2049,2325,1705,5450,3118,615,1662,151,597,4095,2410,2326,1049,275,4696,3752,4337,568,3753,3626,2487,4338,3754,5451,2430,2275,409,3249,5452,1566,2888,3514,1002,769,2853,194,2091,
+3174,3755,2226,3327,4339,628,1505,5453,5454,1763,2180,3019,4096,521,1161,2592,1788,2206,2411,4697,4097,1625,4340,4341,412,42,3119,464,5455,2642,4698,3400,1760,1571,2889,3515,2537,1219,2207,3893,2643,2141,2373,4699,4700,3328,1651,3401,3627,5456,5457,3628,2488,3516,5458,3756,5459,5460,2276,2092,460,5461,4701,5462,3020,962,588,3629,289,3250,2644,1116,52,5463,3067,1797,5464,5465,5466,1467,5467,1598,1143,3757,4342,1985,1734,1067,4702,1280,3402,465,4703,1572,510,5468,1928,2245,1813,1644,3630,5469,4704,
+3758,5470,5471,2673,1573,1534,5472,5473,536,1808,1761,3517,3894,3175,2645,5474,5475,5476,4705,3518,2929,1912,2809,5477,3329,1122,377,3251,5478,360,5479,5480,4343,1529,551,5481,2060,3759,1769,2431,5482,2930,4344,3330,3120,2327,2109,2031,4706,1404,136,1468,1479,672,1171,3252,2308,271,3176,5483,2772,5484,2050,678,2736,865,1948,4707,5485,2014,4098,2971,5486,2737,2227,1397,3068,3760,4708,4709,1735,2931,3403,3631,5487,3895,509,2854,2458,2890,3896,5488,5489,3177,3178,4710,4345,2538,4711,2309,1166,1010,552,
+681,1888,5490,5491,2972,2973,4099,1287,1596,1862,3179,358,453,736,175,478,1117,905,1167,1097,5492,1854,1530,5493,1706,5494,2181,3519,2292,3761,3520,3632,4346,2093,4347,5495,3404,1193,2489,4348,1458,2193,2208,1863,1889,1421,3331,2932,3069,2182,3521,595,2123,5496,4100,5497,5498,4349,1707,2646,223,3762,1359,751,3121,183,3522,5499,2810,3021,419,2374,633,704,3897,2394,241,5500,5501,5502,838,3022,3763,2277,2773,2459,3898,1939,2051,4101,1309,3122,2246,1181,5503,1136,2209,3899,2375,1446,4350,2310,4712,5504,
+5505,4351,1055,2615,484,3764,5506,4102,625,4352,2278,3405,1499,4353,4103,5507,4104,4354,3253,2279,2280,3523,5508,5509,2774,808,2616,3765,3406,4105,4355,3123,2539,526,3407,3900,4356,955,5510,1620,4357,2647,2432,5511,1429,3766,1669,1832,994,928,5512,3633,1260,5513,5514,5515,1949,2293,741,2933,1626,4358,2738,2460,867,1184,362,3408,1392,5516,5517,4106,4359,1770,1736,3254,2934,4713,4714,1929,2707,1459,1158,5518,3070,3409,2891,1292,1930,2513,2855,3767,1986,1187,2072,2015,2617,4360,5519,2574,2514,2170,3768,
+2490,3332,5520,3769,4715,5521,5522,666,1003,3023,1022,3634,4361,5523,4716,1814,2257,574,3901,1603,295,1535,705,3902,4362,283,858,417,5524,5525,3255,4717,4718,3071,1220,1890,1046,2281,2461,4107,1393,1599,689,2575,388,4363,5526,2491,802,5527,2811,3903,2061,1405,2258,5528,4719,3904,2110,1052,1345,3256,1585,5529,809,5530,5531,5532,575,2739,3524,956,1552,1469,1144,2328,5533,2329,1560,2462,3635,3257,4108,616,2210,4364,3180,2183,2294,5534,1833,5535,3525,4720,5536,1319,3770,3771,1211,3636,1023,3258,1293,
+2812,5537,5538,5539,3905,607,2311,3906,762,2892,1439,4365,1360,4721,1485,3072,5540,4722,1038,4366,1450,2062,2648,4367,1379,4723,2593,5541,5542,4368,1352,1414,2330,2935,1172,5543,5544,3907,3908,4724,1798,1451,5545,5546,5547,5548,2936,4109,4110,2492,2351,411,4111,4112,3637,3333,3124,4725,1561,2674,1452,4113,1375,5549,5550,47,2974,316,5551,1406,1591,2937,3181,5552,1025,2142,3125,3182,354,2740,884,2228,4369,2412,508,3772,726,3638,996,2433,3639,729,5553,392,2194,1453,4114,4726,3773,5554,5555,2463,3640,
+2618,1675,2813,919,2352,2975,2353,1270,4727,4115,73,5556,5557,647,5558,3259,2856,2259,1550,1346,3024,5559,1332,883,3526,5560,5561,5562,5563,3334,2775,5564,1212,831,1347,4370,4728,2331,3909,1864,3073,720,3910,4729,4730,3911,5565,4371,5566,5567,4731,5568,5569,1799,4732,3774,2619,4733,3641,1645,2376,4734,5570,2938,669,2211,2675,2434,5571,2893,5572,5573,1028,3260,5574,4372,2413,5575,2260,1353,5576,5577,4735,3183,518,5578,4116,5579,4373,1961,5580,2143,4374,5581,5582,3025,2354,2355,3912,516,1834,1454,4117,
+2708,4375,4736,2229,2620,1972,1129,3642,5583,2776,5584,2976,1422,577,1470,3026,1524,3410,5585,5586,432,4376,3074,3527,5587,2594,1455,2515,2230,1973,1175,5588,1020,2741,4118,3528,4737,5589,2742,5590,1743,1361,3075,3529,2649,4119,4377,4738,2295,895,924,4378,2171,331,2247,3076,166,1627,3077,1098,5591,1232,2894,2231,3411,4739,657,403,1196,2377,542,3775,3412,1600,4379,3530,5592,4740,2777,3261,576,530,1362,4741,4742,2540,2676,3776,4120,5593,842,3913,5594,2814,2032,1014,4121,213,2709,3413,665,621,4380,5595,
+3777,2939,2435,5596,2436,3335,3643,3414,4743,4381,2541,4382,4744,3644,1682,4383,3531,1380,5597,724,2282,600,1670,5598,1337,1233,4745,3126,2248,5599,1621,4746,5600,651,4384,5601,1612,4385,2621,5602,2857,5603,2743,2312,3078,5604,716,2464,3079,174,1255,2710,4122,3645,548,1320,1398,728,4123,1574,5605,1891,1197,3080,4124,5606,3081,3082,3778,3646,3779,747,5607,635,4386,4747,5608,5609,5610,4387,5611,5612,4748,5613,3415,4749,2437,451,5614,3780,2542,2073,4388,2744,4389,4125,5615,1764,4750,5616,4390,350,4751,
+2283,2395,2493,5617,4391,4126,2249,1434,4127,488,4752,458,4392,4128,3781,771,1330,2396,3914,2576,3184,2160,2414,1553,2677,3185,4393,5618,2494,2895,2622,1720,2711,4394,3416,4753,5619,2543,4395,5620,3262,4396,2778,5621,2016,2745,5622,1155,1017,3782,3915,5623,3336,2313,201,1865,4397,1430,5624,4129,5625,5626,5627,5628,5629,4398,1604,5630,414,1866,371,2595,4754,4755,3532,2017,3127,4756,1708,960,4399,887,389,2172,1536,1663,1721,5631,2232,4130,2356,2940,1580,5632,5633,1744,4757,2544,4758,4759,5634,4760,
+5635,2074,5636,4761,3647,3417,2896,4400,5637,4401,2650,3418,2815,673,2712,2465,709,3533,4131,3648,4402,5638,1148,502,634,5639,5640,1204,4762,3649,1575,4763,2623,3783,5641,3784,3128,948,3263,121,1745,3916,1110,5642,4403,3083,2516,3027,4132,3785,1151,1771,3917,1488,4133,1987,5643,2438,3534,5644,5645,2094,5646,4404,3918,1213,1407,2816,531,2746,2545,3264,1011,1537,4764,2779,4405,3129,1061,5647,3786,3787,1867,2897,5648,2018,120,4406,4407,2063,3650,3265,2314,3919,2678,3419,1955,4765,4134,5649,3535,1047,
+2713,1266,5650,1368,4766,2858,649,3420,3920,2546,2747,1102,2859,2679,5651,5652,2E3,5653,1111,3651,2977,5654,2495,3921,3652,2817,1855,3421,3788,5655,5656,3422,2415,2898,3337,3266,3653,5657,2577,5658,3654,2818,4135,1460,856,5659,3655,5660,2899,2978,5661,2900,3922,5662,4408,632,2517,875,3923,1697,3924,2296,5663,5664,4767,3028,1239,580,4768,4409,5665,914,936,2075,1190,4136,1039,2124,5666,5667,5668,5669,3423,1473,5670,1354,4410,3925,4769,2173,3084,4137,915,3338,4411,4412,3339,1605,1835,5671,2748,398,3656,
+4413,3926,4138,328,1913,2860,4139,3927,1331,4414,3029,937,4415,5672,3657,4140,4141,3424,2161,4770,3425,524,742,538,3085,1012,5673,5674,3928,2466,5675,658,1103,225,3929,5676,5677,4771,5678,4772,5679,3267,1243,5680,4142,963,2250,4773,5681,2714,3658,3186,5682,5683,2596,2332,5684,4774,5685,5686,5687,3536,957,3426,2547,2033,1931,2941,2467,870,2019,3659,1746,2780,2781,2439,2468,5688,3930,5689,3789,3130,3790,3537,3427,3791,5690,1179,3086,5691,3187,2378,4416,3792,2548,3188,3131,2749,4143,5692,3428,1556,2549,
+2297,977,2901,2034,4144,1205,3429,5693,1765,3430,3189,2125,1271,714,1689,4775,3538,5694,2333,3931,533,4417,3660,2184,617,5695,2469,3340,3539,2315,5696,5697,3190,5698,5699,3932,1988,618,427,2651,3540,3431,5700,5701,1244,1690,5702,2819,4418,4776,5703,3541,4777,5704,2284,1576,473,3661,4419,3432,972,5705,3662,5706,3087,5707,5708,4778,4779,5709,3793,4145,4146,5710,153,4780,356,5711,1892,2902,4420,2144,408,803,2357,5712,3933,5713,4421,1646,2578,2518,4781,4782,3934,5714,3935,4422,5715,2416,3433,752,5716,
+5717,1962,3341,2979,5718,746,3030,2470,4783,4423,3794,698,4784,1893,4424,3663,2550,4785,3664,3936,5719,3191,3434,5720,1824,1302,4147,2715,3937,1974,4425,5721,4426,3192,823,1303,1288,1236,2861,3542,4148,3435,774,3938,5722,1581,4786,1304,2862,3939,4787,5723,2440,2162,1083,3268,4427,4149,4428,344,1173,288,2316,454,1683,5724,5725,1461,4788,4150,2597,5726,5727,4789,985,894,5728,3436,3193,5729,1914,2942,3795,1989,5730,2111,1975,5731,4151,5732,2579,1194,425,5733,4790,3194,1245,3796,4429,5734,5735,2863,5736,
+636,4791,1856,3940,760,1800,5737,4430,2212,1508,4792,4152,1894,1684,2298,5738,5739,4793,4431,4432,2213,479,5740,5741,832,5742,4153,2496,5743,2980,2497,3797,990,3132,627,1815,2652,4433,1582,4434,2126,2112,3543,4794,5744,799,4435,3195,5745,4795,2113,1737,3031,1018,543,754,4436,3342,1676,4796,4797,4154,4798,1489,5746,3544,5747,2624,2903,4155,5748,5749,2981,5750,5751,5752,5753,3196,4799,4800,2185,1722,5754,3269,3270,1843,3665,1715,481,365,1976,1857,5755,5756,1963,2498,4801,5757,2127,3666,3271,433,1895,
+2064,2076,5758,602,2750,5759,5760,5761,5762,5763,3032,1628,3437,5764,3197,4802,4156,2904,4803,2519,5765,2551,2782,5766,5767,5768,3343,4804,2905,5769,4805,5770,2864,4806,4807,1221,2982,4157,2520,5771,5772,5773,1868,1990,5774,5775,5776,1896,5777,5778,4808,1897,4158,318,5779,2095,4159,4437,5780,5781,485,5782,938,3941,553,2680,116,5783,3942,3667,5784,3545,2681,2783,3438,3344,2820,5785,3668,2943,4160,1747,2944,2983,5786,5787,207,5788,4809,5789,4810,2521,5790,3033,890,3669,3943,5791,1878,3798,3439,5792,
+2186,2358,3440,1652,5793,5794,5795,941,2299,208,3546,4161,2020,330,4438,3944,2906,2499,3799,4439,4811,5796,5797,5798,2522,1613,4812,5799,3345,3945,2523,5800,4162,5801,1637,4163,2471,4813,3946,5802,2500,3034,3800,5803,5804,2195,4814,5805,2163,5806,5807,5808,5809,5810,5811,5812,5813,5814,5815,5816,5817,5818,5819,5820,5821,5822,5823,5824,5825,5826,5827,5828,5829,5830,5831,5832,5833,5834,5835,5836,5837,5838,5839,5840,5841,5842,5843,5844,5845,5846,5847,5848,5849,5850,5851,5852,5853,5854,5855,5856,5857,
+5858,5859,5860,5861,5862,5863,5864,5865,5866,5867,5868,5869,5870,5871,5872,5873,5874,5875,5876,5877,5878,5879,5880,5881,5882,5883,5884,5885,5886,5887,5888,5889,5890,5891,5892,5893,5894,5895,5896,5897,5898,5899,5900,5901,5902,5903,5904,5905,5906,5907,5908,5909,5910,5911,5912,5913,5914,5915,5916,5917,5918,5919,5920,5921,5922,5923,5924,5925,5926,5927,5928,5929,5930,5931,5932,5933,5934,5935,5936,5937,5938,5939,5940,5941,5942,5943,5944,5945,5946,5947,5948,5949,5950,5951,5952,5953,5954,5955,5956,5957,5958,
+5959,5960,5961,5962,5963,5964,5965,5966,5967,5968,5969,5970,5971,5972,5973,5974,5975,5976,5977,5978,5979,5980,5981,5982,5983,5984,5985,5986,5987,5988,5989,5990,5991,5992,5993,5994,5995,5996,5997,5998,5999,6E3,6001,6002,6003,6004,6005,6006,6007,6008,6009,6010,6011,6012,6013,6014,6015,6016,6017,6018,6019,6020,6021,6022,6023,6024,6025,6026,6027,6028,6029,6030,6031,6032,6033,6034,6035,6036,6037,6038,6039,6040,6041,6042,6043,6044,6045,6046,6047,6048,6049,6050,6051,6052,6053,6054,6055,6056,6057,6058,6059,
+6060,6061,6062,6063,6064,6065,6066,6067,6068,6069,6070,6071,6072,6073,6074,6075,6076,6077,6078,6079,6080,6081,6082,6083,6084,6085,6086,6087,6088,6089,6090,6091,6092,6093,6094,6095,6096,6097,6098,6099,6100,6101,6102,6103,6104,6105,6106,6107,6108,6109,6110,6111,6112,6113,6114,6115,6116,6117,6118,6119,6120,6121,6122,6123,6124,6125,6126,6127,6128,6129,6130,6131,6132,6133,6134,6135,6136,6137,6138,6139,6140,6141,6142,6143,6144,6145,6146,6147,6148,6149,6150,6151,6152,6153,6154,6155,6156,6157,6158,6159,6160,
+6161,6162,6163,6164,6165,6166,6167,6168,6169,6170,6171,6172,6173,6174,6175,6176,6177,6178,6179,6180,6181,6182,6183,6184,6185,6186,6187,6188,6189,6190,6191,6192,6193,6194,6195,6196,6197,6198,6199,6200,6201,6202,6203,6204,6205,6206,6207,6208,6209,6210,6211,6212,6213,6214,6215,6216,6217,6218,6219,6220,6221,6222,6223,3670,6224,6225,6226,6227,6228,6229,6230,6231,6232,6233,6234,6235,6236,6237,6238,6239,6240,6241,6242,6243,6244,6245,6246,6247,6248,6249,6250,6251,6252,6253,6254,6255,6256,6257,6258,6259,6260,
+6261,6262,6263,6264,6265,6266,6267,6268,6269,6270,6271,6272,6273,6274,6275,6276,6277,6278,6279,6280,6281,6282,6283,6284,6285,4815,6286,6287,6288,6289,6290,6291,6292,4816,6293,6294,6295,6296,6297,6298,6299,6300,6301,6302,6303,6304,6305,6306,6307,6308,6309,6310,6311,4817,4818,6312,6313,6314,6315,6316,6317,6318,4819,6319,6320,6321,6322,6323,6324,6325,6326,6327,6328,6329,6330,6331,6332,6333,6334,6335,6336,6337,4820,6338,6339,6340,6341,6342,6343,6344,6345,6346,6347,6348,6349,6350,6351,6352,6353,6354,6355,
+6356,6357,6358,6359,6360,6361,6362,6363,6364,6365,6366,6367,6368,6369,6370,6371,6372,6373,6374,6375,6376,6377,6378,6379,6380,6381,6382,6383,6384,6385,6386,6387,6388,6389,6390,6391,6392,6393,6394,6395,6396,6397,6398,6399,6400,6401,6402,6403,6404,6405,6406,6407,6408,6409,6410,3441,6411,6412,6413,6414,6415,6416,6417,6418,6419,6420,6421,6422,6423,6424,6425,4440,6426,6427,6428,6429,6430,6431,6432,6433,6434,6435,6436,6437,6438,6439,6440,6441,6442,6443,6444,6445,6446,6447,6448,6449,6450,6451,6452,6453,6454,
+4821,6455,6456,6457,6458,6459,6460,6461,6462,6463,6464,6465,6466,6467,6468,6469,6470,6471,6472,6473,6474,6475,6476,6477,3947,3948,6478,6479,6480,6481,3272,4441,6482,6483,6484,6485,4442,6486,6487,6488,6489,6490,6491,6492,6493,6494,6495,6496,4822,6497,6498,6499,6500,6501,6502,6503,6504,6505,6506,6507,6508,6509,6510,6511,6512,6513,6514,6515,6516,6517,6518,6519,6520,6521,6522,6523,6524,6525,6526,6527,6528,6529,6530,6531,6532,6533,6534,6535,6536,6537,6538,6539,6540,6541,6542,6543,6544,6545,6546,6547,6548,
+6549,6550,6551,6552,6553,6554,6555,6556,2784,6557,4823,6558,6559,6560,6561,6562,6563,6564,6565,6566,6567,6568,6569,3949,6570,6571,6572,4824,6573,6574,6575,6576,6577,6578,6579,6580,6581,6582,6583,4825,6584,6585,6586,3950,2785,6587,6588,6589,6590,6591,6592,6593,6594,6595,6596,6597,6598,6599,6600,6601,6602,6603,6604,6605,6606,6607,6608,6609,6610,6611,6612,4826,6613,6614,6615,4827,6616,6617,6618,6619,6620,6621,6622,6623,6624,6625,4164,6626,6627,6628,6629,6630,6631,6632,6633,6634,3547,6635,4828,6636,6637,
+6638,6639,6640,6641,6642,3951,2984,6643,6644,6645,6646,6647,6648,6649,4165,6650,4829,6651,6652,4830,6653,6654,6655,6656,6657,6658,6659,6660,6661,6662,4831,6663,6664,6665,6666,6667,6668,6669,6670,6671,4166,6672,4832,3952,6673,6674,6675,6676,4833,6677,6678,6679,4167,6680,6681,6682,3198,6683,6684,6685,6686,6687,6688,6689,6690,6691,6692,6693,6694,6695,6696,6697,4834,6698,6699,6700,6701,6702,6703,6704,6705,6706,6707,6708,6709,6710,6711,6712,6713,6714,6715,6716,6717,6718,6719,6720,6721,6722,6723,6724,6725,
+6726,6727,6728,6729,6730,6731,6732,6733,6734,4443,6735,6736,6737,6738,6739,6740,6741,6742,6743,6744,6745,4444,6746,6747,6748,6749,6750,6751,6752,6753,6754,6755,6756,6757,6758,6759,6760,6761,6762,6763,6764,6765,6766,6767,6768,6769,6770,6771,6772,6773,6774,6775,6776,6777,6778,6779,6780,6781,4168,6782,6783,3442,6784,6785,6786,6787,6788,6789,6790,6791,4169,6792,6793,6794,6795,6796,6797,6798,6799,6800,6801,6802,6803,6804,6805,6806,6807,6808,6809,6810,6811,4835,6812,6813,6814,4445,6815,6816,4446,6817,6818,
+6819,6820,6821,6822,6823,6824,6825,6826,6827,6828,6829,6830,6831,6832,6833,6834,6835,3548,6836,6837,6838,6839,6840,6841,6842,6843,6844,6845,6846,4836,6847,6848,6849,6850,6851,6852,6853,6854,3953,6855,6856,6857,6858,6859,6860,6861,6862,6863,6864,6865,6866,6867,6868,6869,6870,6871,6872,6873,6874,6875,6876,6877,3199,6878,6879,6880,6881,6882,4447,6883,6884,6885,6886,6887,6888,6889,6890,6891,6892,6893,6894,6895,6896,6897,6898,6899,6900,6901,6902,6903,6904,4170,6905,6906,6907,6908,6909,6910,6911,6912,6913,
+6914,6915,6916,6917,6918,6919,6920,6921,6922,6923,6924,6925,6926,6927,4837,6928,6929,6930,6931,6932,6933,6934,6935,6936,3346,6937,6938,4838,6939,6940,6941,4448,6942,6943,6944,6945,6946,4449,6947,6948,6949,6950,6951,6952,6953,6954,6955,6956,6957,6958,6959,6960,6961,6962,6963,6964,6965,6966,6967,6968,6969,6970,6971,6972,6973,6974,6975,6976,6977,6978,6979,6980,6981,6982,6983,6984,6985,6986,6987,6988,6989,6990,6991,6992,6993,6994,3671,6995,6996,6997,6998,4839,6999,7E3,7001,7002,3549,7003,7004,7005,7006,
+7007,7008,7009,7010,7011,7012,7013,7014,7015,7016,7017,7018,7019,7020,7021,7022,7023,7024,7025,7026,7027,7028,7029,7030,4840,7031,7032,7033,7034,7035,7036,7037,7038,4841,7039,7040,7041,7042,7043,7044,7045,7046,7047,7048,7049,7050,7051,7052,7053,7054,7055,7056,7057,7058,7059,7060,7061,7062,7063,7064,7065,7066,7067,7068,7069,7070,2985,7071,7072,7073,7074,7075,7076,7077,7078,7079,7080,4842,7081,7082,7083,7084,7085,7086,7087,7088,7089,7090,7091,7092,7093,7094,7095,7096,7097,7098,7099,7100,7101,7102,7103,
+7104,7105,7106,7107,7108,7109,7110,7111,7112,7113,7114,7115,7116,7117,7118,4450,7119,7120,7121,7122,7123,7124,7125,7126,7127,7128,7129,7130,7131,7132,7133,7134,7135,7136,7137,7138,7139,7140,7141,7142,7143,4843,7144,7145,7146,7147,7148,7149,7150,7151,7152,7153,7154,7155,7156,7157,7158,7159,7160,7161,7162,7163,7164,7165,7166,7167,7168,7169,7170,7171,7172,7173,7174,7175,7176,7177,7178,7179,7180,7181,7182,7183,7184,7185,7186,7187,7188,4171,4172,7189,7190,7191,7192,7193,7194,7195,7196,7197,7198,7199,7200,
+7201,7202,7203,7204,7205,7206,7207,7208,7209,7210,7211,7212,7213,7214,7215,7216,7217,7218,7219,7220,7221,7222,7223,7224,7225,7226,7227,7228,7229,7230,7231,7232,7233,7234,7235,7236,7237,7238,7239,7240,7241,7242,7243,7244,7245,7246,7247,7248,7249,7250,7251,7252,7253,7254,7255,7256,7257,7258,7259,7260,7261,7262,7263,7264,7265,7266,7267,7268,7269,7270,7271,7272,7273,7274,7275,7276,7277,7278,7279,7280,7281,7282,7283,7284,7285,7286,7287,7288,7289,7290,7291,7292,7293,7294,7295,7296,4844,7297,7298,7299,7300,
+7301,7302,7303,7304,7305,7306,7307,7308,7309,7310,7311,7312,7313,7314,7315,7316,4451,7317,7318,7319,7320,7321,7322,7323,7324,7325,7326,7327,7328,7329,7330,7331,7332,7333,7334,7335,7336,7337,7338,7339,7340,7341,7342,7343,7344,7345,7346,7347,7348,7349,7350,7351,7352,7353,4173,7354,7355,4845,7356,7357,7358,7359,7360,7361,7362,7363,7364,7365,7366,7367,7368,7369,7370,7371,7372,7373,7374,7375,7376,7377,7378,7379,7380,7381,7382,7383,7384,7385,7386,7387,7388,4846,7389,7390,7391,7392,7393,7394,7395,7396,7397,
+7398,7399,7400,7401,7402,7403,7404,7405,3672,7406,7407,7408,7409,7410,7411,7412,7413,7414,7415,7416,7417,7418,7419,7420,7421,7422,7423,7424,7425,7426,7427,7428,7429,7430,7431,7432,7433,7434,7435,7436,7437,7438,7439,7440,7441,7442,7443,7444,7445,7446,7447,7448,7449,7450,7451,7452,7453,4452,7454,3200,7455,7456,7457,7458,7459,7460,7461,7462,7463,7464,7465,7466,7467,7468,7469,7470,7471,7472,7473,7474,4847,7475,7476,7477,3133,7478,7479,7480,7481,7482,7483,7484,7485,7486,7487,7488,7489,7490,7491,7492,7493,
+7494,7495,7496,7497,7498,7499,7500,7501,7502,3347,7503,7504,7505,7506,7507,7508,7509,7510,7511,7512,7513,7514,7515,7516,7517,7518,7519,7520,7521,4848,7522,7523,7524,7525,7526,7527,7528,7529,7530,7531,7532,7533,7534,7535,7536,7537,7538,7539,7540,7541,7542,7543,7544,7545,7546,7547,7548,7549,3801,4849,7550,7551,7552,7553,7554,7555,7556,7557,7558,7559,7560,7561,7562,7563,7564,7565,7566,7567,7568,7569,3035,7570,7571,7572,7573,7574,7575,7576,7577,7578,7579,7580,7581,7582,7583,7584,7585,7586,7587,7588,7589,
+7590,7591,7592,7593,7594,7595,7596,7597,7598,7599,7600,7601,7602,7603,7604,7605,7606,7607,7608,7609,7610,7611,7612,7613,7614,7615,7616,4850,7617,7618,3802,7619,7620,7621,7622,7623,7624,7625,7626,7627,7628,7629,7630,7631,7632,4851,7633,7634,7635,7636,7637,7638,7639,7640,7641,7642,7643,7644,7645,7646,7647,7648,7649,7650,7651,7652,7653,7654,7655,7656,7657,7658,7659,7660,7661,7662,7663,7664,7665,7666,7667,7668,7669,7670,4453,7671,7672,7673,7674,7675,7676,7677,7678,7679,7680,7681,7682,7683,7684,7685,7686,
+7687,7688,7689,7690,7691,7692,7693,7694,7695,7696,7697,3443,7698,7699,7700,7701,7702,4454,7703,7704,7705,7706,7707,7708,7709,7710,7711,7712,7713,2472,7714,7715,7716,7717,7718,7719,7720,7721,7722,7723,7724,7725,7726,7727,7728,7729,7730,7731,3954,7732,7733,7734,7735,7736,7737,7738,7739,7740,7741,7742,7743,7744,7745,7746,7747,7748,7749,7750,3134,7751,7752,4852,7753,7754,7755,4853,7756,7757,7758,7759,7760,4174,7761,7762,7763,7764,7765,7766,7767,7768,7769,7770,7771,7772,7773,7774,7775,7776,7777,7778,7779,
+7780,7781,7782,7783,7784,7785,7786,7787,7788,7789,7790,7791,7792,7793,7794,7795,7796,7797,7798,7799,7800,7801,7802,7803,7804,7805,4854,7806,7807,7808,7809,7810,7811,7812,7813,7814,7815,7816,7817,7818,7819,7820,7821,7822,7823,7824,7825,4855,7826,7827,7828,7829,7830,7831,7832,7833,7834,7835,7836,7837,7838,7839,7840,7841,7842,7843,7844,7845,7846,7847,3955,7848,7849,7850,7851,7852,7853,7854,7855,7856,7857,7858,7859,7860,3444,7861,7862,7863,7864,7865,7866,7867,7868,7869,7870,7871,7872,7873,7874,7875,7876,
+7877,7878,7879,7880,7881,7882,7883,7884,7885,7886,7887,7888,7889,7890,7891,4175,7892,7893,7894,7895,7896,4856,4857,7897,7898,7899,7900,2598,7901,7902,7903,7904,7905,7906,7907,7908,4455,7909,7910,7911,7912,7913,7914,3201,7915,7916,7917,7918,7919,7920,7921,4858,7922,7923,7924,7925,7926,7927,7928,7929,7930,7931,7932,7933,7934,7935,7936,7937,7938,7939,7940,7941,7942,7943,7944,7945,7946,7947,7948,7949,7950,7951,7952,7953,7954,7955,7956,7957,7958,7959,7960,7961,7962,7963,7964,7965,7966,7967,7968,7969,7970,
+7971,7972,7973,7974,7975,7976,7977,7978,7979,7980,7981,4859,7982,7983,7984,7985,7986,7987,7988,7989,7990,7991,7992,7993,7994,7995,7996,4860,7997,7998,7999,8E3,8001,8002,8003,8004,8005,8006,8007,8008,8009,8010,8011,8012,8013,8014,8015,8016,4176,8017,8018,8019,8020,8021,8022,8023,4861,8024,8025,8026,8027,8028,8029,8030,8031,8032,8033,8034,8035,8036,4862,4456,8037,8038,8039,8040,4863,8041,8042,8043,8044,8045,8046,8047,8048,8049,8050,8051,8052,8053,8054,8055,8056,8057,8058,8059,8060,8061,8062,8063,8064,
+8065,8066,8067,8068,8069,8070,8071,8072,8073,8074,8075,8076,8077,8078,8079,8080,8081,8082,8083,8084,8085,8086,8087,8088,8089,8090,8091,8092,8093,8094,8095,8096,8097,8098,8099,4864,4177,8100,8101,8102,8103,8104,8105,8106,8107,8108,8109,8110,8111,8112,8113,8114,8115,8116,8117,8118,8119,8120,4178,8121,8122,8123,8124,8125,8126,8127,8128,8129,8130,8131,8132,8133,8134,8135,8136,8137,8138,8139,8140,8141,8142,8143,8144,8145,4865,4866,8146,8147,8148,8149,8150,8151,8152,8153,8154,8155,8156,8157,8158,8159,8160,
+8161,8162,8163,8164,8165,4179,8166,8167,8168,8169,8170,8171,8172,8173,8174,8175,8176,8177,8178,8179,8180,8181,4457,8182,8183,8184,8185,8186,8187,8188,8189,8190,8191,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8203,8204,8205,8206,8207,8208,8209,8210,8211,8212,8213,8214,8215,8216,8217,8218,8219,8220,8221,8222,8223,8224,8225,8226,8227,8228,8229,8230,8231,8232,8233,8234,8235,8236,8237,8238,8239,8240,8241,8242,8243,8244,8245,8246,8247,8248,8249,8250,8251,8252,8253,8254,8255,8256,3445,8257,8258,
+8259,8260,8261,8262,4458,8263,8264,8265,8266,8267,8268,8269,8270,8271,8272,4459,8273,8274,8275,8276,3550,8277,8278,8279,8280,8281,8282,8283,8284,8285,8286,8287,8288,8289,4460,8290,8291,8292,8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,8304,8305,8306,8307,4867,8308,8309,8310,8311,8312,3551,8313,8314,8315,8316,8317,8318,8319,8320,8321,8322,8323,8324,8325,8326,4868,8327,8328,8329,8330,8331,8332,8333,8334,8335,8336,8337,8338,8339,8340,8341,8342,8343,8344,8345,8346,8347,8348,8349,8350,8351,8352,
+8353,8354,8355,8356,8357,8358,8359,8360,8361,8362,8363,4869,4461,8364,8365,8366,8367,8368,8369,8370,4870,8371,8372,8373,8374,8375,8376,8377,8378,8379,8380,8381,8382,8383,8384,8385,8386,8387,8388,8389,8390,8391,8392,8393,8394,8395,8396,8397,8398,8399,8400,8401,8402,8403,8404,8405,8406,8407,8408,8409,8410,4871,8411,8412,8413,8414,8415,8416,8417,8418,8419,8420,8421,8422,4462,8423,8424,8425,8426,8427,8428,8429,8430,8431,8432,8433,2986,8434,8435,8436,8437,8438,8439,8440,8441,8442,8443,8444,8445,8446,8447,
+8448,8449,8450,8451,8452,8453,8454,8455,8456,8457,8458,8459,8460,8461,8462,8463,8464,8465,8466,8467,8468,8469,8470,8471,8472,8473,8474,8475,8476,8477,8478,4180,8479,8480,8481,8482,8483,8484,8485,8486,8487,8488,8489,8490,8491,8492,8493,8494,8495,8496,8497,8498,8499,8500,8501,8502,8503,8504,8505,8506,8507,8508,8509,8510,8511,8512,8513,8514,8515,8516,8517,8518,8519,8520,8521,8522,8523,8524,8525,8526,8527,8528,8529,8530,8531,8532,8533,8534,8535,8536,8537,8538,8539,8540,8541,8542,8543,8544,8545,8546,8547,
+8548,8549,8550,8551,8552,8553,8554,8555,8556,8557,8558,8559,8560,8561,8562,8563,8564,4872,8565,8566,8567,8568,8569,8570,8571,8572,8573,4873,8574,8575,8576,8577,8578,8579,8580,8581,8582,8583,8584,8585,8586,8587,8588,8589,8590,8591,8592,8593,8594,8595,8596,8597,8598,8599,8600,8601,8602,8603,8604,8605,3803,8606,8607,8608,8609,8610,8611,8612,8613,4874,3804,8614,8615,8616,8617,8618,8619,8620,8621,3956,8622,8623,8624,8625,8626,8627,8628,8629,8630,8631,8632,8633,8634,8635,8636,8637,8638,2865,8639,8640,8641,
+8642,8643,8644,8645,8646,8647,8648,8649,8650,8651,8652,8653,8654,8655,8656,4463,8657,8658,8659,4875,4876,8660,8661,8662,8663,8664,8665,8666,8667,8668,8669,8670,8671,8672,8673,8674,8675,8676,8677,8678,8679,8680,8681,4464,8682,8683,8684,8685,8686,8687,8688,8689,8690,8691,8692,8693,8694,8695,8696,8697,8698,8699,8700,8701,8702,8703,8704,8705,8706,8707,8708,8709,2261,8710,8711,8712,8713,8714,8715,8716,8717,8718,8719,8720,8721,8722,8723,8724,8725,8726,8727,8728,8729,8730,8731,8732,8733,4181,8734,8735,8736,
+8737,8738,8739,8740,8741,8742,8743,8744,8745,8746,8747,8748,8749,8750,8751,8752,8753,8754,8755,8756,8757,8758,8759,8760,8761,8762,8763,4877,8764,8765,8766,8767,8768,8769,8770,8771,8772,8773,8774,8775,8776,8777,8778,8779,8780,8781,8782,8783,8784,8785,8786,8787,8788,4878,8789,4879,8790,8791,8792,4880,8793,8794,8795,8796,8797,8798,8799,8800,8801,4881,8802,8803,8804,8805,8806,8807,8808,8809,8810,8811,8812,8813,8814,8815,3957,8816,8817,8818,8819,8820,8821,8822,8823,8824,8825,8826,8827,8828,8829,8830,8831,
+8832,8833,8834,8835,8836,8837,8838,8839,8840,8841,8842,8843,8844,8845,8846,8847,4882,8848,8849,8850,8851,8852,8853,8854,8855,8856,8857,8858,8859,8860,8861,8862,8863,8864,8865,8866,8867,8868,8869,8870,8871,8872,8873,8874,8875,8876,8877,8878,8879,8880,8881,8882,8883,8884,3202,8885,8886,8887,8888,8889,8890,8891,8892,8893,8894,8895,8896,8897,8898,8899,8900,8901,8902,8903,8904,8905,8906,8907,8908,8909,8910,8911,8912,8913,8914,8915,8916,8917,8918,8919,8920,8921,8922,8923,8924,4465,8925,8926,8927,8928,8929,
+8930,8931,8932,4883,8933,8934,8935,8936,8937,8938,8939,8940,8941,8942,8943,2214,8944,8945,8946,8947,8948,8949,8950,8951,8952,8953,8954,8955,8956,8957,8958,8959,8960,8961,8962,8963,8964,8965,4884,8966,8967,8968,8969,8970,8971,8972,8973,8974,8975,8976,8977,8978,8979,8980,8981,8982,8983,8984,8985,8986,8987,8988,8989,8990,8991,8992,4885,8993,8994,8995,8996,8997,8998,8999,9E3,9001,9002,9003,9004,9005,9006,9007,9008,9009,9010,9011,9012,9013,9014,9015,9016,9017,9018,9019,9020,9021,4182,9022,9023,9024,9025,
+9026,9027,9028,9029,9030,9031,9032,9033,9034,9035,9036,9037,9038,9039,9040,9041,9042,9043,9044,9045,9046,9047,9048,9049,9050,9051,9052,9053,9054,9055,9056,9057,9058,9059,9060,9061,9062,9063,4886,9064,9065,9066,9067,9068,9069,4887,9070,9071,9072,9073,9074,9075,9076,9077,9078,9079,9080,9081,9082,9083,9084,9085,9086,9087,9088,9089,9090,9091,9092,9093,9094,9095,9096,9097,9098,9099,9100,9101,9102,9103,9104,9105,9106,9107,9108,9109,9110,9111,9112,9113,9114,9115,9116,9117,9118,9119,9120,9121,9122,9123,9124,
+9125,9126,9127,9128,9129,9130,9131,9132,9133,9134,9135,9136,9137,9138,9139,9140,9141,3958,9142,9143,9144,9145,9146,9147,9148,9149,9150,9151,4888,9152,9153,9154,9155,9156,9157,9158,9159,9160,9161,9162,9163,9164,9165,9166,9167,9168,9169,9170,9171,9172,9173,9174,9175,4889,9176,9177,9178,9179,9180,9181,9182,9183,9184,9185,9186,9187,9188,9189,9190,9191,9192,9193,9194,9195,9196,9197,9198,9199,9200,9201,9202,9203,4890,9204,9205,9206,9207,9208,9209,9210,9211,9212,9213,9214,9215,9216,9217,9218,9219,9220,9221,
+9222,4466,9223,9224,9225,9226,9227,9228,9229,9230,9231,9232,9233,9234,9235,9236,9237,9238,9239,9240,9241,9242,9243,9244,9245,4891,9246,9247,9248,9249,9250,9251,9252,9253,9254,9255,9256,9257,4892,9258,9259,9260,9261,4893,4894,9262,9263,9264,9265,9266,9267,9268,9269,9270,9271,9272,9273,4467,9274,9275,9276,9277,9278,9279,9280,9281,9282,9283,9284,9285,3673,9286,9287,9288,9289,9290,9291,9292,9293,9294,9295,9296,9297,9298,9299,9300,9301,9302,9303,9304,9305,9306,9307,9308,9309,9310,9311,9312,9313,9314,9315,
+9316,9317,9318,9319,9320,9321,9322,4895,9323,9324,9325,9326,9327,9328,9329,9330,9331,9332,9333,9334,9335,9336,9337,9338,9339,9340,9341,9342,9343,9344,9345,9346,9347,4468,9348,9349,9350,9351,9352,9353,9354,9355,9356,9357,9358,9359,9360,9361,9362,9363,9364,9365,9366,9367,9368,9369,9370,9371,9372,9373,4896,9374,4469,9375,9376,9377,9378,9379,4897,9380,9381,9382,9383,9384,9385,9386,9387,9388,9389,9390,9391,9392,9393,9394,9395,9396,9397,9398,9399,9400,9401,9402,9403,9404,9405,9406,4470,9407,2751,9408,9409,
+3674,3552,9410,9411,9412,9413,9414,9415,9416,9417,9418,9419,9420,9421,4898,9422,9423,9424,9425,9426,9427,9428,9429,3959,9430,9431,9432,9433,9434,9435,9436,4471,9437,9438,9439,9440,9441,9442,9443,9444,9445,9446,9447,9448,9449,9450,3348,9451,9452,9453,9454,9455,9456,9457,9458,9459,9460,9461,9462,9463,9464,9465,9466,9467,9468,9469,9470,9471,9472,4899,9473,9474,9475,9476,9477,4900,9478,9479,9480,9481,9482,9483,9484,9485,9486,9487,9488,3349,9489,9490,9491,9492,9493,9494,9495,9496,9497,9498,9499,9500,9501,
+9502,9503,9504,9505,9506,9507,9508,9509,9510,9511,9512,9513,9514,9515,9516,9517,9518,9519,9520,4901,9521,9522,9523,9524,9525,9526,4902,9527,9528,9529,9530,9531,9532,9533,9534,9535,9536,9537,9538,9539,9540,9541,9542,9543,9544,9545,9546,9547,9548,9549,9550,9551,9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9581,9582,9583,9584,3805,9585,9586,9587,9588,9589,9590,9591,9592,9593,9594,9595,9596,9597,9598,9599,
+9600,9601,9602,4903,9603,9604,9605,9606,9607,4904,9608,9609,9610,9611,9612,9613,9614,4905,9615,9616,9617,9618,9619,9620,9621,9622,9623,9624,9625,9626,9627,9628,9629,9630,9631,9632,4906,9633,9634,9635,9636,9637,9638,9639,9640,9641,9642,9643,4907,9644,9645,9646,9647,9648,9649,9650,9651,9652,9653,9654,9655,9656,9657,9658,9659,9660,9661,9662,9663,9664,9665,9666,9667,9668,9669,9670,9671,9672,4183,9673,9674,9675,9676,9677,4908,9678,9679,9680,9681,4909,9682,9683,9684,9685,9686,9687,9688,9689,9690,4910,9691,
+9692,9693,3675,9694,9695,9696,2945,9697,9698,9699,9700,9701,9702,9703,9704,9705,4911,9706,9707,9708,9709,9710,9711,9712,9713,9714,9715,9716,9717,9718,9719,9720,9721,9722,9723,9724,9725,9726,9727,9728,9729,9730,9731,9732,9733,9734,9735,4912,9736,9737,9738,9739,9740,4913,9741,9742,9743,9744,9745,9746,9747,9748,9749,9750,9751,9752,9753,9754,9755,9756,9757,9758,4914,9759,9760,9761,9762,9763,9764,9765,9766,9767,9768,9769,9770,9771,9772,9773,9774,9775,9776,9777,9778,9779,9780,9781,9782,4915,9783,9784,9785,
+9786,9787,9788,9789,9790,9791,9792,9793,4916,9794,9795,9796,9797,9798,9799,9800,9801,9802,9803,9804,9805,9806,9807,9808,9809,9810,9811,9812,9813,9814,9815,9816,9817,9818,9819,9820,9821,9822,9823,9824,9825,9826,9827,9828,9829,9830,9831,9832,9833,9834,9835,9836,9837,9838,9839,9840,9841,9842,9843,9844,9845,9846,9847,9848,9849,9850,9851,9852,9853,9854,9855,9856,9857,9858,9859,9860,9861,9862,9863,9864,9865,9866,9867,9868,4917,9869,9870,9871,9872,9873,9874,9875,9876,9877,9878,9879,9880,9881,9882,9883,9884,
+9885,9886,9887,9888,9889,9890,9891,9892,4472,9893,9894,9895,9896,9897,3806,9898,9899,9900,9901,9902,9903,9904,9905,9906,9907,9908,9909,9910,9911,9912,9913,9914,4918,9915,9916,9917,4919,9918,9919,9920,9921,4184,9922,9923,9924,9925,9926,9927,9928,9929,9930,9931,9932,9933,9934,9935,9936,9937,9938,9939,9940,9941,9942,9943,9944,9945,9946,4920,9947,9948,9949,9950,9951,9952,9953,9954,9955,4185,9956,9957,9958,9959,9960,9961,9962,9963,9964,9965,4921,9966,9967,9968,4473,9969,9970,9971,9972,9973,9974,9975,9976,
+9977,4474,9978,9979,9980,9981,9982,9983,9984,9985,9986,9987,9988,9989,9990,9991,9992,9993,9994,9995,9996,9997,9998,9999,1E4,10001,10002,10003,10004,10005,10006,10007,10008,10009,10010,10011,10012,10013,10014,10015,10016,10017,10018,10019,10020,10021,4922,10022,4923,10023,10024,10025,10026,10027,10028,10029,10030,10031,10032,10033,10034,10035,10036,10037,10038,10039,10040,10041,10042,10043,10044,10045,10046,10047,10048,4924,10049,10050,10051,10052,10053,10054,10055,10056,10057,10058,10059,10060,10061,
+10062,10063,10064,10065,10066,10067,10068,10069,10070,10071,10072,10073,10074,10075,10076,10077,10078,10079,10080,10081,10082,10083,10084,10085,10086,10087,4475,10088,10089,10090,10091,10092,10093,10094,10095,10096,10097,4476,10098,10099,10100,10101,10102,10103,10104,10105,10106,10107,10108,10109,10110,10111,2174,10112,10113,10114,10115,10116,10117,10118,10119,10120,10121,10122,10123,10124,10125,10126,10127,10128,10129,10130,10131,10132,10133,10134,10135,10136,10137,10138,10139,10140,3807,4186,4925,
+10141,10142,10143,10144,10145,10146,10147,4477,4187,10148,10149,10150,10151,10152,10153,4188,10154,10155,10156,10157,10158,10159,10160,10161,4926,10162,10163,10164,10165,10166,10167,10168,10169,10170,10171,10172,10173,10174,10175,10176,10177,10178,10179,10180,10181,10182,10183,10184,10185,10186,10187,10188,10189,10190,10191,10192,3203,10193,10194,10195,10196,10197,10198,10199,10200,4478,10201,10202,10203,10204,4479,10205,10206,10207,10208,10209,10210,10211,10212,10213,10214,10215,10216,10217,10218,
+10219,10220,10221,10222,10223,10224,10225,10226,10227,10228,10229,10230,10231,10232,10233,10234,4927,10235,10236,10237,10238,10239,10240,10241,10242,10243,10244,10245,10246,10247,10248,10249,10250,10251,10252,10253,10254,10255,10256,10257,10258,10259,10260,10261,10262,10263,10264,10265,10266,10267,10268,10269,10270,10271,10272,10273,4480,4928,4929,10274,10275,10276,10277,10278,10279,10280,10281,10282,10283,10284,10285,10286,10287,10288,10289,10290,10291,10292,10293,10294,10295,10296,10297,10298,10299,
+10300,10301,10302,10303,10304,10305,10306,10307,10308,10309,10310,10311,10312,10313,10314,10315,10316,10317,10318,10319,10320,10321,10322,10323,10324,10325,10326,10327,10328,10329,10330,10331,10332,10333,10334,4930,10335,10336,10337,10338,10339,10340,10341,10342,4931,10343,10344,10345,10346,10347,10348,10349,10350,10351,10352,10353,10354,10355,3088,10356,2786,10357,10358,10359,10360,4189,10361,10362,10363,10364,10365,10366,10367,10368,10369,10370,10371,10372,10373,10374,10375,4932,10376,10377,10378,
+10379,10380,10381,10382,10383,10384,10385,10386,10387,10388,10389,10390,10391,10392,4933,10393,10394,10395,4934,10396,10397,10398,10399,10400,10401,10402,10403,10404,10405,10406,10407,10408,10409,10410,10411,10412,3446,10413,10414,10415,10416,10417,10418,10419,10420,10421,10422,10423,4935,10424,10425,10426,10427,10428,10429,10430,4936,10431,10432,10433,10434,10435,10436,10437,10438,10439,10440,10441,10442,10443,4937,10444,10445,10446,10447,4481,10448,10449,10450,10451,10452,10453,10454,10455,10456,
+10457,10458,10459,10460,10461,10462,10463,10464,10465,10466,10467,10468,10469,10470,10471,10472,10473,10474,10475,10476,10477,10478,10479,10480,10481,10482,10483,10484,10485,10486,10487,10488,10489,10490,10491,10492,10493,10494,10495,10496,10497,10498,10499,10500,10501,10502,10503,10504,10505,4938,10506,10507,10508,10509,10510,2552,10511,10512,10513,10514,10515,10516,3447,10517,10518,10519,10520,10521,10522,10523,10524,10525,10526,10527,10528,10529,10530,10531,10532,10533,10534,10535,10536,10537,
+10538,10539,10540,10541,10542,10543,4482,10544,4939,10545,10546,10547,10548,10549,10550,10551,10552,10553,10554,10555,10556,10557,10558,10559,10560,10561,10562,10563,10564,10565,10566,10567,3676,4483,10568,10569,10570,10571,10572,3448,10573,10574,10575,10576,10577,10578,10579,10580,10581,10582,10583,10584,10585,10586,10587,10588,10589,10590,10591,10592,10593,10594,10595,10596,10597,10598,10599,10600,10601,10602,10603,10604,10605,10606,10607,10608,10609,10610,10611,10612,10613,10614,10615,10616,10617,
+10618,10619,10620,10621,10622,10623,10624,10625,10626,10627,4484,10628,10629,10630,10631,10632,4940,10633,10634,10635,10636,10637,10638,10639,10640,10641,10642,10643,10644,10645,10646,10647,10648,10649,10650,10651,10652,10653,10654,10655,10656,4941,10657,10658,10659,2599,10660,10661,10662,10663,10664,10665,10666,3089,10667,10668,10669,10670,10671,10672,10673,10674,10675,10676,10677,10678,10679,10680,4942,10681,10682,10683,10684,10685,10686,10687,10688,10689,10690,10691,10692,10693,10694,10695,10696,
+10697,4485,10698,10699,10700,10701,10702,10703,10704,4943,10705,3677,10706,10707,10708,10709,10710,10711,10712,4944,10713,10714,10715,10716,10717,10718,10719,10720,10721,10722,10723,10724,10725,10726,10727,10728,4945,10729,10730,10731,10732,10733,10734,10735,10736,10737,10738,10739,10740,10741,10742,10743,10744,10745,10746,10747,10748,10749,10750,10751,10752,10753,10754,10755,10756,10757,10758,10759,10760,10761,4946,10762,10763,10764,10765,10766,10767,4947,4948,10768,10769,10770,10771,10772,10773,
+10774,10775,10776,10777,10778,10779,10780,10781,10782,10783,10784,10785,10786,10787,10788,10789,10790,10791,10792,10793,10794,10795,10796,10797,10798,10799,10800,10801,10802,10803,10804,10805,10806,10807,10808,10809,10810,10811,10812,10813,10814,10815,10816,10817,10818,10819,10820,10821,10822,10823,10824,10825,10826,10827,10828,10829,10830,10831,10832,10833,10834,10835,10836,10837,10838,10839,10840,10841,10842,10843,10844,10845,10846,10847,10848,10849,10850,10851,10852,10853,10854,10855,10856,10857,
+10858,10859,10860,10861,10862,10863,10864,10865,10866,10867,10868,10869,10870,10871,10872,10873,10874,10875,10876,10877,10878,4486,10879,10880,10881,10882,10883,10884,10885,4949,10886,10887,10888,10889,10890,10891,10892,10893,10894,10895,10896,10897,10898,10899,10900,10901,10902,10903,10904,10905,10906,10907,10908,10909,10910,10911,10912,10913,10914,10915,10916,10917,10918,10919,4487,10920,10921,10922,10923,10924,10925,10926,10927,10928,10929,10930,10931,10932,4950,10933,10934,10935,10936,10937,10938,
+10939,10940,10941,10942,10943,10944,10945,10946,10947,10948,10949,4488,10950,10951,10952,10953,10954,10955,10956,10957,10958,10959,4190,10960,10961,10962,10963,10964,10965,10966,10967,10968,10969,10970,10971,10972,10973,10974,10975,10976,10977,10978,10979,10980,10981,10982,10983,10984,10985,10986,10987,10988,10989,10990,10991,10992,10993,10994,10995,10996,10997,10998,10999,11E3,11001,11002,11003,11004,11005,11006,3960,11007,11008,11009,11010,11011,11012,11013,11014,11015,11016,11017,11018,11019,11020,
+11021,11022,11023,11024,11025,11026,11027,11028,11029,11030,11031,11032,4951,11033,11034,11035,11036,11037,11038,11039,11040,11041,11042,11043,11044,11045,11046,11047,4489,11048,11049,11050,11051,4952,11052,11053,11054,11055,11056,11057,11058,4953,11059,11060,11061,11062,11063,11064,11065,11066,11067,11068,11069,11070,11071,4954,11072,11073,11074,11075,11076,11077,11078,11079,11080,11081,11082,11083,11084,11085,11086,11087,11088,11089,11090,11091,11092,11093,11094,11095,11096,11097,11098,11099,11100,
+11101,11102,11103,11104,11105,11106,11107,11108,11109,11110,11111,11112,11113,11114,11115,3808,11116,11117,11118,11119,11120,11121,11122,11123,11124,11125,11126,11127,11128,11129,11130,11131,11132,11133,11134,4955,11135,11136,11137,11138,11139,11140,11141,11142,11143,11144,11145,11146,11147,11148,11149,11150,11151,11152,11153,11154,11155,11156,11157,11158,11159,11160,11161,4956,11162,11163,11164,11165,11166,11167,11168,11169,11170,11171,11172,11173,11174,11175,11176,11177,11178,11179,11180,4957,11181,
+11182,11183,11184,11185,11186,4958,11187,11188,11189,11190,11191,11192,11193,11194,11195,11196,11197,11198,11199,11200,3678,11201,11202,11203,11204,11205,11206,4191,11207,11208,11209,11210,11211,11212,11213,11214,11215,11216,11217,11218,11219,11220,11221,11222,11223,11224,11225,11226,11227,11228,11229,11230,11231,11232,11233,11234,11235,11236,11237,11238,11239,11240,11241,11242,11243,11244,11245,11246,11247,11248,11249,11250,11251,4959,11252,11253,11254,11255,11256,11257,11258,11259,11260,11261,11262,
+11263,11264,11265,11266,11267,11268,11269,11270,11271,11272,11273,11274,11275,11276,11277,11278,11279,11280,11281,11282,11283,11284,11285,11286,11287,11288,11289,11290,11291,11292,11293,11294,11295,11296,11297,11298,11299,11300,11301,11302,11303,11304,11305,11306,11307,11308,11309,11310,11311,11312,11313,11314,3679,11315,11316,11317,11318,4490,11319,11320,11321,11322,11323,11324,11325,11326,11327,11328,11329,11330,11331,11332,11333,11334,11335,11336,11337,11338,11339,11340,11341,11342,11343,11344,
+11345,11346,11347,4960,11348,11349,11350,11351,11352,11353,11354,11355,11356,11357,11358,11359,11360,11361,11362,11363,11364,11365,11366,11367,11368,11369,11370,11371,11372,11373,11374,11375,11376,11377,3961,4961,11378,11379,11380,11381,11382,11383,11384,11385,11386,11387,11388,11389,11390,11391,11392,11393,11394,11395,11396,11397,4192,11398,11399,11400,11401,11402,11403,11404,11405,11406,11407,11408,11409,11410,11411,4962,11412,11413,11414,11415,11416,11417,11418,11419,11420,11421,11422,11423,11424,
+11425,11426,11427,11428,11429,11430,11431,11432,11433,11434,11435,11436,11437,11438,11439,11440,11441,11442,11443,11444,11445,11446,11447,11448,11449,11450,11451,11452,11453,11454,11455,11456,11457,11458,11459,11460,11461,11462,11463,11464,11465,11466,11467,11468,11469,4963,11470,11471,4491,11472,11473,11474,11475,4964,11476,11477,11478,11479,11480,11481,11482,11483,11484,11485,11486,11487,11488,11489,11490,11491,11492,4965,11493,11494,11495,11496,11497,11498,11499,11500,11501,11502,11503,11504,11505,
+11506,11507,11508,11509,11510,11511,11512,11513,11514,11515,11516,11517,11518,11519,11520,11521,11522,11523,11524,11525,11526,11527,11528,11529,3962,11530,11531,11532,11533,11534,11535,11536,11537,11538,11539,11540,11541,11542,11543,11544,11545,11546,11547,11548,11549,11550,11551,11552,11553,11554,11555,11556,11557,11558,11559,11560,11561,11562,11563,11564,4193,4194,11565,11566,11567,11568,11569,11570,11571,11572,11573,11574,11575,11576,11577,11578,11579,11580,11581,11582,11583,11584,11585,11586,
+11587,11588,11589,11590,11591,4966,4195,11592,11593,11594,11595,11596,11597,11598,11599,11600,11601,11602,11603,11604,3090,11605,11606,11607,11608,11609,11610,4967,11611,11612,11613,11614,11615,11616,11617,11618,11619,11620,11621,11622,11623,11624,11625,11626,11627,11628,11629,11630,11631,11632,11633,11634,11635,11636,11637,11638,11639,11640,11641,11642,11643,11644,11645,11646,11647,11648,11649,11650,11651,11652,11653,11654,11655,11656,11657,11658,11659,11660,11661,11662,11663,11664,11665,11666,11667,
+11668,11669,11670,11671,11672,11673,11674,4968,11675,11676,11677,11678,11679,11680,11681,11682,11683,11684,11685,11686,11687,11688,11689,11690,11691,11692,11693,3809,11694,11695,11696,11697,11698,11699,11700,11701,11702,11703,11704,11705,11706,11707,11708,11709,11710,11711,11712,11713,11714,11715,11716,11717,11718,3553,11719,11720,11721,11722,11723,11724,11725,11726,11727,11728,11729,11730,4969,11731,11732,11733,11734,11735,11736,11737,11738,11739,11740,4492,11741,11742,11743,11744,11745,11746,11747,
+11748,11749,11750,11751,11752,4970,11753,11754,11755,11756,11757,11758,11759,11760,11761,11762,11763,11764,11765,11766,11767,11768,11769,11770,11771,11772,11773,11774,11775,11776,11777,11778,11779,11780,11781,11782,11783,11784,11785,11786,11787,11788,11789,11790,4971,11791,11792,11793,11794,11795,11796,11797,4972,11798,11799,11800,11801,11802,11803,11804,11805,11806,11807,11808,11809,11810,4973,11811,11812,11813,11814,11815,11816,11817,11818,11819,11820,11821,11822,11823,11824,11825,11826,11827,11828,
+11829,11830,11831,11832,11833,11834,3680,3810,11835,11836,4974,11837,11838,11839,11840,11841,11842,11843,11844,11845,11846,11847,11848,11849,11850,11851,11852,11853,11854,11855,11856,11857,11858,11859,11860,11861,11862,11863,11864,11865,11866,11867,11868,11869,11870,11871,11872,11873,11874,11875,11876,11877,11878,11879,11880,11881,11882,11883,11884,4493,11885,11886,11887,11888,11889,11890,11891,11892,11893,11894,11895,11896,11897,11898,11899,11900,11901,11902,11903,11904,11905,11906,11907,11908,11909,
+11910,11911,11912,11913,11914,11915,4975,11916,11917,11918,11919,11920,11921,11922,11923,11924,11925,11926,11927,11928,11929,11930,11931,11932,11933,11934,11935,11936,11937,11938,11939,11940,11941,11942,11943,11944,11945,11946,11947,11948,11949,4976,11950,11951,11952,11953,11954,11955,11956,11957,11958,11959,11960,11961,11962,11963,11964,11965,11966,11967,11968,11969,11970,11971,11972,11973,11974,11975,11976,11977,11978,11979,11980,11981,11982,11983,11984,11985,11986,11987,4196,11988,11989,11990,
+11991,11992,4977,11993,11994,11995,11996,11997,11998,11999,12E3,12001,12002,12003,12004,12005,12006,12007,12008,12009,12010,12011,12012,12013,12014,12015,12016,12017,12018,12019,12020,12021,12022,12023,12024,12025,12026,12027,12028,12029,12030,12031,12032,12033,12034,12035,12036,12037,12038,12039,12040,12041,12042,12043,12044,12045,12046,12047,12048,12049,12050,12051,12052,12053,12054,12055,12056,12057,12058,12059,12060,12061,4978,12062,12063,12064,12065,12066,12067,12068,12069,12070,12071,12072,
+12073,12074,12075,12076,12077,12078,12079,12080,12081,12082,12083,12084,12085,12086,12087,12088,12089,12090,12091,12092,12093,12094,12095,12096,12097,12098,12099,12100,12101,12102,12103,12104,12105,12106,12107,12108,12109,12110,12111,12112,12113,12114,12115,12116,12117,12118,12119,12120,12121,12122,12123,4979,12124,12125,12126,12127,12128,4197,12129,12130,12131,12132,12133,12134,12135,12136,12137,12138,12139,12140,12141,12142,12143,12144,12145,12146,12147,12148,12149,12150,12151,12152,12153,12154,
+4980,12155,12156,12157,12158,12159,12160,4494,12161,12162,12163,12164,3811,12165,12166,12167,12168,12169,4495,12170,12171,4496,12172,12173,12174,12175,12176,3812,12177,12178,12179,12180,12181,12182,12183,12184,12185,12186,12187,12188,12189,12190,12191,12192,12193,12194,12195,12196,12197,12198,12199,12200,12201,12202,12203,12204,12205,12206,12207,12208,12209,12210,12211,12212,12213,12214,12215,12216,12217,12218,12219,12220,12221,4981,12222,12223,12224,12225,12226,12227,12228,12229,12230,12231,12232,
+12233,12234,12235,4982,12236,12237,12238,12239,12240,12241,12242,12243,12244,12245,4983,12246,12247,12248,12249,4984,12250,12251,12252,12253,12254,12255,12256,12257,12258,12259,12260,12261,12262,12263,12264,4985,12265,4497,12266,12267,12268,12269,12270,12271,12272,12273,12274,12275,12276,12277,12278,12279,12280,12281,12282,12283,12284,12285,12286,12287,4986,12288,12289,12290,12291,12292,12293,12294,12295,12296,2473,12297,12298,12299,12300,12301,12302,12303,12304,12305,12306,12307,12308,12309,12310,
+12311,12312,12313,12314,12315,12316,12317,12318,12319,3963,12320,12321,12322,12323,12324,12325,12326,12327,12328,12329,12330,12331,12332,4987,12333,12334,12335,12336,12337,12338,12339,12340,12341,12342,12343,12344,12345,12346,12347,12348,12349,12350,12351,12352,12353,12354,12355,12356,12357,12358,12359,3964,12360,12361,12362,12363,12364,12365,12366,12367,12368,12369,12370,3965,12371,12372,12373,12374,12375,12376,12377,12378,12379,12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,12390,12391,
+12392,12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403,12404,12405,12406,12407,12408,4988,12409,12410,12411,12412,12413,12414,12415,12416,12417,12418,12419,12420,12421,12422,12423,12424,12425,12426,12427,12428,12429,12430,12431,12432,12433,12434,12435,12436,12437,12438,3554,12439,12440,12441,12442,12443,12444,12445,12446,12447,12448,12449,12450,12451,12452,12453,12454,12455,12456,12457,12458,12459,12460,12461,12462,12463,12464,4989,12465,12466,12467,12468,12469,12470,12471,12472,
+12473,12474,12475,12476,12477,12478,12479,12480,4990,12481,12482,12483,12484,12485,12486,12487,12488,12489,4498,12490,12491,12492,12493,12494,12495,12496,12497,12498,12499,12500,12501,12502,12503,12504,12505,12506,12507,12508,12509,12510,12511,12512,12513,12514,12515,12516,12517,12518,12519,12520,12521,12522,12523,12524,12525,12526,12527,12528,12529,12530,12531,12532,12533,12534,12535,12536,12537,12538,12539,12540,12541,12542,12543,12544,12545,12546,12547,12548,12549,12550,12551,4991,12552,12553,
+12554,12555,12556,12557,12558,12559,12560,12561,12562,12563,12564,12565,12566,12567,12568,12569,12570,12571,12572,12573,12574,12575,12576,12577,12578,3036,12579,12580,12581,12582,12583,3966,12584,12585,12586,12587,12588,12589,12590,12591,12592,12593,12594,12595,12596,12597,12598,12599,12600,12601,12602,12603,12604,12605,12606,12607,12608,12609,12610,12611,12612,12613,12614,12615,12616,12617,12618,12619,12620,12621,12622,12623,12624,12625,12626,12627,12628,12629,12630,12631,12632,12633,12634,12635,
+12636,12637,12638,12639,12640,12641,12642,12643,12644,12645,12646,4499,12647,12648,12649,12650,12651,12652,12653,12654,12655,12656,12657,12658,12659,12660,12661,12662,12663,12664,12665,12666,12667,12668,12669,12670,12671,12672,12673,12674,12675,12676,12677,12678,12679,12680,12681,12682,12683,12684,12685,12686,12687,12688,12689,12690,12691,12692,12693,12694,12695,12696,12697,12698,4992,12699,12700,12701,12702,12703,12704,12705,12706,12707,12708,12709,12710,12711,12712,12713,12714,12715,12716,12717,
+12718,12719,12720,12721,12722,12723,12724,12725,12726,12727,12728,12729,12730,12731,12732,12733,12734,12735,12736,12737,12738,12739,12740,12741,12742,12743,12744,12745,12746,12747,12748,12749,12750,12751,12752,12753,12754,12755,12756,12757,12758,12759,12760,12761,12762,12763,12764,12765,12766,12767,12768,12769,12770,12771,12772,12773,12774,12775,12776,12777,12778,4993,2175,12779,12780,12781,12782,12783,12784,12785,12786,4500,12787,12788,12789,12790,12791,12792,12793,12794,12795,12796,12797,12798,
+12799,12800,12801,12802,12803,12804,12805,12806,12807,12808,12809,12810,12811,12812,12813,12814,12815,12816,12817,12818,12819,12820,12821,12822,12823,12824,12825,12826,4198,3967,12827,12828,12829,12830,12831,12832,12833,12834,12835,12836,12837,12838,12839,12840,12841,12842,12843,12844,12845,12846,12847,12848,12849,12850,12851,12852,12853,12854,12855,12856,12857,12858,12859,12860,12861,4199,12862,12863,12864,12865,12866,12867,12868,12869,12870,12871,12872,12873,12874,12875,12876,12877,12878,12879,
+12880,12881,12882,12883,12884,12885,12886,12887,4501,12888,12889,12890,12891,12892,12893,12894,12895,12896,12897,12898,12899,12900,12901,12902,12903,12904,12905,12906,12907,12908,12909,12910,12911,12912,4994,12913,12914,12915,12916,12917,12918,12919,12920,12921,12922,12923,12924,12925,12926,12927,12928,12929,12930,12931,12932,12933,12934,12935,12936,12937,12938,12939,12940,12941,12942,12943,12944,12945,12946,12947,12948,12949,12950,12951,12952,12953,12954,12955,12956,1772,12957,12958,12959,12960,
+12961,12962,12963,12964,12965,12966,12967,12968,12969,12970,12971,12972,12973,12974,12975,12976,12977,12978,12979,12980,12981,12982,12983,12984,12985,12986,12987,12988,12989,12990,12991,12992,12993,12994,12995,12996,12997,4502,12998,4503,12999,13E3,13001,13002,13003,4504,13004,13005,13006,13007,13008,13009,13010,13011,13012,13013,13014,13015,13016,13017,13018,13019,13020,13021,13022,13023,13024,13025,13026,13027,13028,13029,3449,13030,13031,13032,13033,13034,13035,13036,13037,13038,13039,13040,13041,
+13042,13043,13044,13045,13046,13047,13048,13049,13050,13051,13052,13053,13054,13055,13056,13057,13058,13059,13060,13061,13062,13063,13064,13065,13066,13067,13068,13069,13070,13071,13072,13073,13074,13075,13076,13077,13078,13079,13080,13081,13082,13083,13084,13085,13086,13087,13088,13089,13090,13091,13092,13093,13094,13095,13096,13097,13098,13099,13100,13101,13102,13103,13104,13105,13106,13107,13108,13109,13110,13111,13112,13113,13114,13115,13116,13117,13118,3968,13119,4995,13120,13121,13122,13123,
+13124,13125,13126,13127,4505,13128,13129,13130,13131,13132,13133,13134,4996,4506,13135,13136,13137,13138,13139,4997,13140,13141,13142,13143,13144,13145,13146,13147,13148,13149,13150,13151,13152,13153,13154,13155,13156,13157,13158,13159,4998,13160,13161,13162,13163,13164,13165,13166,13167,13168,13169,13170,13171,13172,13173,13174,13175,13176,4999,13177,13178,13179,13180,13181,13182,13183,13184,13185,13186,13187,13188,13189,13190,13191,13192,13193,13194,13195,13196,13197,13198,13199,13200,13201,13202,
+13203,13204,13205,13206,5E3,13207,13208,13209,13210,13211,13212,13213,13214,13215,13216,13217,13218,13219,13220,13221,13222,13223,13224,13225,13226,13227,4200,5001,13228,13229,13230,13231,13232,13233,13234,13235,13236,13237,13238,13239,13240,3969,13241,13242,13243,13244,3970,13245,13246,13247,13248,13249,13250,13251,13252,13253,13254,13255,13256,13257,13258,13259,13260,13261,13262,13263,13264,13265,13266,13267,13268,3450,13269,13270,13271,13272,13273,13274,13275,13276,5002,13277,13278,13279,13280,
+13281,13282,13283,13284,13285,13286,13287,13288,13289,13290,13291,13292,13293,13294,13295,13296,13297,13298,13299,13300,13301,13302,3813,13303,13304,13305,13306,13307,13308,13309,13310,13311,13312,13313,13314,13315,13316,13317,13318,13319,13320,13321,13322,13323,13324,13325,13326,13327,13328,4507,13329,13330,13331,13332,13333,13334,13335,13336,13337,13338,13339,13340,13341,5003,13342,13343,13344,13345,13346,13347,13348,13349,13350,13351,13352,13353,13354,13355,13356,13357,13358,13359,13360,13361,
+13362,13363,13364,13365,13366,13367,5004,13368,13369,13370,13371,13372,13373,13374,13375,13376,13377,13378,13379,13380,13381,13382,13383,13384,13385,13386,13387,13388,13389,13390,13391,13392,13393,13394,13395,13396,13397,13398,13399,13400,13401,13402,13403,13404,13405,13406,13407,13408,13409,13410,13411,13412,13413,13414,13415,13416,13417,13418,13419,13420,13421,13422,13423,13424,13425,13426,13427,13428,13429,13430,13431,13432,4508,13433,13434,13435,4201,13436,13437,13438,13439,13440,13441,13442,
+13443,13444,13445,13446,13447,13448,13449,13450,13451,13452,13453,13454,13455,13456,13457,5005,13458,13459,13460,13461,13462,13463,13464,13465,13466,13467,13468,13469,13470,4509,13471,13472,13473,13474,13475,13476,13477,13478,13479,13480,13481,13482,13483,13484,13485,13486,13487,13488,13489,13490,13491,13492,13493,13494,13495,13496,13497,13498,13499,13500,13501,13502,13503,13504,13505,13506,13507,13508,13509,13510,13511,13512,13513,13514,13515,13516,13517,13518,13519,13520,13521,13522,13523,13524,
+13525,13526,13527,13528,13529,13530,13531,13532,13533,13534,13535,13536,13537,13538,13539,13540,13541,13542,13543,13544,13545,13546,13547,13548,13549,13550,13551,13552,13553,13554,13555,13556,13557,13558,13559,13560,13561,13562,13563,13564,13565,13566,13567,13568,13569,13570,13571,13572,13573,13574,13575,13576,13577,13578,13579,13580,13581,13582,13583,13584,13585,13586,13587,13588,13589,13590,13591,13592,13593,13594,13595,13596,13597,13598,13599,13600,13601,13602,13603,13604,13605,13606,13607,13608,
+13609,13610,13611,13612,13613,13614,13615,13616,13617,13618,13619,13620,13621,13622,13623,13624,13625,13626,13627,13628,13629,13630,13631,13632,13633,13634,13635,13636,13637,13638,13639,13640,13641,13642,5006,13643,13644,13645,13646,13647,13648,13649,13650,13651,5007,13652,13653,13654,13655,13656,13657,13658,13659,13660,13661,13662,13663,13664,13665,13666,13667,13668,13669,13670,13671,13672,13673,13674,13675,13676,13677,13678,13679,13680,13681,13682,13683,13684,13685,13686,13687,13688,13689,13690,
+13691,13692,13693,13694,13695,13696,13697,13698,13699,13700,13701,13702,13703,13704,13705,13706,13707,13708,13709,13710,13711,13712,13713,13714,13715,13716,13717,13718,13719,13720,13721,13722,13723,13724,13725,13726,13727,13728,13729,13730,13731,13732,13733,13734,13735,13736,13737,13738,13739,13740,13741,13742,13743,13744,13745,13746,13747,13748,13749,13750,13751,13752,13753,13754,13755,13756,13757,13758,13759,13760,13761,13762,13763,13764,13765,13766,13767,13768,13769,13770,13771,13772,13773,13774,
+3273,13775,13776,13777,13778,13779,13780,13781,13782,13783,13784,13785,13786,13787,13788,13789,13790,13791,13792,13793,13794,13795,13796,13797,13798,13799,13800,13801,13802,13803,13804,13805,13806,13807,13808,13809,13810,13811,13812,13813,13814,13815,13816,13817,13818,13819,13820,13821,13822,13823,13824,13825,13826,13827,13828,13829,13830,13831,13832,13833,13834,13835,13836,13837,13838,13839,13840,13841,13842,13843,13844,13845,13846,13847,13848,13849,13850,13851,13852,13853,13854,13855,13856,13857,
+13858,13859,13860,13861,13862,13863,13864,13865,13866,13867,13868,13869,13870,13871,13872,13873,13874,13875,13876,13877,13878,13879,13880,13881,13882,13883,13884,13885,13886,13887,13888,13889,13890,13891,13892,13893,13894,13895,13896,13897,13898,13899,13900,13901,13902,13903,13904,13905,13906,13907,13908,13909,13910,13911,13912,13913,13914,13915,13916,13917,13918,13919,13920,13921,13922,13923,13924,13925,13926,13927,13928,13929,13930,13931,13932,13933,13934,13935,13936,13937,13938,13939,13940,13941,
+13942,13943,13944,13945,13946,13947,13948,13949,13950,13951,13952,13953,13954,13955,13956,13957,13958,13959,13960,13961,13962,13963,13964,13965,13966,13967,13968,13969,13970,13971,13972];!0},{"./init":21}],4:[function(b,a,d){!function(a){a.Big5Prober=function(){a.MultiByteCharSetProber.apply(this);this.getCharsetName=function(){return"Big5"};this._mCodingSM=new a.CodingStateMachine(a.Big5SMModel);this._mDistributionAnalyzer=new a.Big5DistributionAnalysis;this.reset()};a.Big5Prober.prototype=new a.MultiByteCharSetProber}(b("./init"))},
+{"./init":21}],5:[function(b,a,d){!function(a){a.CharDistributionAnalysis=function(){this.reset=function(){this._mDone=!1;this._mFreqChars=this._mTotalChars=0};this.feed=function(a,b){var h=2==b?this.getOrder(a):-1;0<=h&&(this._mTotalChars++,h<this._mTableSize&&512>this._mCharToFreqOrder[h]&&this._mFreqChars++)};this.getConfidence=function(){if(0>=this._mTotalChars||3>=this._mFreqChars)return.01;if(this._mTotalChars!=this._mFreqChars){var a=this._mFreqChars/((this._mTotalChars-this._mFreqChars)*this._mTypicalDistributionRatio);
+if(.99>a)return a}return.99};this.gotEnoughData=function(){return 1024<this._mTotalChars};this.getOrder=function(a){return-1};this._mTypicalDistributionRatio=this._mTableSize=this._mCharToFreqOrder=null;this.reset()};a.EUCTWDistributionAnalysis=function(){a.CharDistributionAnalysis.apply(this);this.getOrder=function(a){return 196<=a.charCodeAt(0)?94*(a.charCodeAt(0)-196)+a.charCodeAt(1)-161:-1};this._mCharToFreqOrder=a.EUCTWCharToFreqOrder;this._mTableSize=a.EUCTW_TABLE_SIZE;this._mTypicalDistributionRatio=
+a.EUCTW_TYPICAL_DISTRIBUTION_RATIO};a.EUCTWDistributionAnalysis.prototype=new a.CharDistributionAnalysis;a.EUCKRDistributionAnalysis=function(){a.CharDistributionAnalysis.apply(this);this.getOrder=function(a){return 176<=a.charCodeAt(0)?94*(a.charCodeAt(0)-176)+a.charCodeAt(1)-161:-1};this._mCharToFreqOrder=a.EUCKRCharToFreqOrder;this._mTableSize=a.EUCKR_TABLE_SIZE;this._mTypicalDistributionRatio=a.EUCKR_TYPICAL_DISTRIBUTION_RATIO};a.EUCKRDistributionAnalysis.prototype=new a.CharDistributionAnalysis;
+a.GB2312DistributionAnalysis=function(){a.CharDistributionAnalysis.apply(this);this.getOrder=function(a){return 176<=a.charCodeAt(0)&&161<=a.charCodeAt(1)?94*(a.charCodeAt(0)-176)+a.charCodeAt(1)-161:-1};this._mCharToFreqOrder=a.GB2312CharToFreqOrder;this._mTableSize=a.GB2312_TABLE_SIZE;this._mTypicalDistributionRatio=a.GB2312_TYPICAL_DISTRIBUTION_RATIO};a.GB2312DistributionAnalysis.prototype=new a.CharDistributionAnalysis;a.Big5DistributionAnalysis=function(){a.CharDistributionAnalysis.apply(this);
+this.getOrder=function(a){return 164<=a.charCodeAt(0)?161<=a.charCodeAt(1)?157*(a.charCodeAt(0)-164)+a.charCodeAt(1)-161+63:157*(a.charCodeAt(0)-164)+a.charCodeAt(1)-64:-1};this._mCharToFreqOrder=a.Big5CharToFreqOrder;this._mTableSize=a.BIG5_TABLE_SIZE;this._mTypicalDistributionRatio=a.BIG5_TYPICAL_DISTRIBUTION_RATIO};a.Big5DistributionAnalysis.prototype=new a.CharDistributionAnalysis;a.SJISDistributionAnalysis=function(){a.CharDistributionAnalysis.apply(this);this.getOrder=function(a){if(129<=a.charCodeAt(0)&&
+159>=a.charCodeAt(0))var b=188*(a.charCodeAt(0)-129);else if(224<=a.charCodeAt(0)&&239>=a.charCodeAt(0))b=188*(a.charCodeAt(0)-224+31);else return-1;b+=a.charCodeAt(1)-64;if(64>a.charCodeAt(1)||127===a.charCodeAt(1)||252<a.charCodeAt(1))b=-1;return b};this._mCharToFreqOrder=a.JISCharToFreqOrder;this._mTableSize=a.JIS_TABLE_SIZE;this._mTypicalDistributionRatio=a.JIS_TYPICAL_DISTRIBUTION_RATIO};a.SJISDistributionAnalysis.prototype=new a.CharDistributionAnalysis;a.EUCJPDistributionAnalysis=function(){a.CharDistributionAnalysis.apply(this);
+this.getOrder=function(a){return"\u00a0"<=a[0]?94*(a.charCodeAt(0)-161)+a.charCodeAt(1)-161:-1};this._mCharToFreqOrder=a.JISCharToFreqOrder;this._mTableSize=a.JIS_TABLE_SIZE;this._mTypicalDistributionRatio=a.JIS_TYPICAL_DISTRIBUTION_RATIO};a.EUCJPDistributionAnalysis.prototype=new a.CharDistributionAnalysis}(b("./init"))},{"./init":21}],6:[function(b,a,d){!function(a){a.CharSetGroupProber=function(){a.CharSetProber.apply(this);this.reset=function(){a.CharSetGroupProber.prototype.reset.apply(this);
+for(var b=this._mActiveNum=0,f;f=this._mProbers[b];b++)f&&(f.reset(),f.active=!0,this._mActiveNum++);this._mBestGuessProber=null};this.getCharsetName=function(){return this._mBestGuessProber||(this.getConfidence(),this._mBestGuessProber)?this._mBestGuessProber.getCharsetName():null};this.feed=function(b){for(var f=0,c;c=this._mProbers[f];f++)if(c&&c.active){var e=c.feed(b);if(e)if(e==a.Constants.foundIt){this._mBestGuessProber=c;break}else if(e==a.Constants.notMe&&(c.active=!1,this._mActiveNum--,
+0>=this._mActiveNum)){this._mState=a.Constants.notMe;break}}return this.getState()};this.getConfidence=function(){var b=this.getState();if(b==a.Constants.foundIt)return.99;if(b==a.Constants.notMe)return.01;b=0;this._mBestGuessProber=null;for(var f=0,c;c=this._mProbers[f];f++)if(c)if(c.active){var e=c.getConfidence();a.Constants._debug&&a.log(c.getCharsetName()+" confidence = "+e+"\n");b<e&&(b=e,this._mBestGuessProber=c)}else a.Constants._debug&&a.log(c.getCharsetName()+" not active\n");return this._mBestGuessProber?
+b:0};this._mActiveNum=0;this._mProbers=[];this._mBestGuessProber=null};a.CharSetGroupProber.prototype=new a.CharSetProber}(b("./init"))},{"./init":21}],7:[function(b,a,d){!function(a){a.CharSetProber=function(){this.reset=function(){this._mState=a.Constants.detecting};this.getCharsetName=function(){return null};this.feed=function(a){};this.getState=function(){return this._mState};this.getConfidence=function(){return 0};this.filterHighBitOnly=function(a){return a=a.replace(/[\x00-\x7F]+/g," ")};this.filterWithoutEnglishLetters=
+function(a){return a=a.replace(/[A-Za-z]+/g," ")};this.filterWithEnglishLetters=function(a){return a}}}(b("./init"))},{"./init":21}],8:[function(b,a,d){!function(a){a.CodingStateMachine=function(b){this.reset=function(){this._mCurrentState=a.Constants.start};this.nextState=function(b){b=this._mModel.classTable[b.charCodeAt(0)];this._mCurrentState==a.Constants.start&&(this._mCurrentBytePos=0,this._mCurrentCharLen=this._mModel.charLenTable[b]);this._mCurrentState=this._mModel.stateTable[this._mCurrentState*
+this._mModel.classFactor+b];this._mCurrentBytePos++;return this._mCurrentState};this.getCurrentCharLen=function(){return this._mCurrentCharLen};this.getCodingStateMachine=function(){return this._mModel.name};this._mModel=b;this._mCurrentCharLen=this._mCurrentBytePos=0;this.reset()}}(b("./init"))},{"./init":21}],9:[function(b,a,d){b("./init").Constants={_debug:!1,detecting:0,foundIt:1,notMe:2,start:0,error:1,itsMe:2,MINIMUM_THRESHOLD:.2,SHORTCUT_THRESHOLD:.95};!0},{"./init":21}],10:[function(b,a,d){!function(a){a.EscCharSetProber=
+function(){a.CharSetProber.apply(this);var b=this;this.reset=function(){a.EscCharSetProber.prototype.reset.apply(this);for(var f=0,c;c=this._mCodingSM[f];f++)c&&(c.active=!0,c.reset());this._mActiveSM=b._mCodingSM.length;this._mDetectedCharset=null};this.getCharsetName=function(){return this._mDetectedCharset};this.getConfidence=function(){return this._mDetectedCharset?.99:0};this.feed=function(b){for(var c=0,k;c<b.length;c++){k=b[c];for(var d=0,g;g=this._mCodingSM[d];d++)if(g&&g.active){var m=g.nextState(k);
+if(m==a.Constants.error){if(g.active=!1,this._mActiveSM--,0>=this._mActiveSM)return this._mState=a.Constants.notMe,this.getState()}else if(m==a.Constants.itsMe)return this._mState=a.Constants.foundIt,this._mDetectedCharset=g.getCodingStateMachine(),this.getState()}}return this.getState()};b._mCodingSM=[new a.CodingStateMachine(a.HZSMModel),new a.CodingStateMachine(a.ISO2022CNSMModel),new a.CodingStateMachine(a.ISO2022JPSMModel),new a.CodingStateMachine(a.ISO2022KRSMModel)];b.reset()};a.EscCharSetProber.prototype=
+new a.CharSetProber}(b("./init"))},{"./init":21}],11:[function(b,a,d){b=b("./init");a=b.Constants;b.HZ_cls=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,5,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];b.HZ_st=[a.start,a.error,3,a.start,a.start,a.start,a.error,a.error,a.error,a.error,a.error,a.error,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.error,a.error,a.start,a.start,4,a.error,5,a.error,6,a.error,5,5,4,a.error,4,a.error,4,4,4,a.error,4,a.error,4,a.itsMe,a.start,a.start,a.start,a.start,a.start,a.start];b.HZCharLenTable=[0,0,0,0,0,0];b.HZSMModel={classTable:b.HZ_cls,classFactor:6,
+stateTable:b.HZ_st,charLenTable:b.HZCharLenTable,name:"HZ-GB-2312"};b.ISO2022CN_cls=[2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2];b.ISO2022CN_st=[a.start,3,a.error,a.start,a.start,a.start,a.start,a.start,a.start,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.error,a.error,a.error,4,a.error,a.error,a.error,a.error,a.itsMe,a.error,a.error,a.error,a.error,5,6,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.itsMe,
+a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.itsMe,a.error,a.start];b.ISO2022CNCharLenTable=[0,0,0,0,0,0,0,0,0];b.ISO2022CNSMModel={classTable:b.ISO2022CN_cls,classFactor:9,stateTable:b.ISO2022CN_st,charLenTable:b.ISO2022CNCharLenTable,name:"ISO-2022-CN"};b.ISO2022JP_cls=[2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,7,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,4,0,8,0,0,0,0,9,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2];b.ISO2022JP_st=[a.start,3,a.error,a.start,a.start,a.start,a.start,a.start,a.start,a.start,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.itsMe,a.itsMe,a.itsMe,
+a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.error,a.error,a.error,5,a.error,a.error,a.error,4,a.error,a.error,a.error,a.error,a.error,6,a.itsMe,a.error,a.itsMe,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.itsMe,a.itsMe,a.error,a.error,a.error,a.itsMe,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.itsMe,a.error,a.start,a.start];b.ISO2022JPCharLenTable=[0,0,0,0,0,0,0,0,0,0];b.ISO2022JPSMModel={classTable:b.ISO2022JP_cls,classFactor:10,stateTable:b.ISO2022JP_st,
+charLenTable:b.ISO2022JPCharLenTable,name:"ISO-2022-JP"};b.ISO2022KR_cls=[2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,3,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2];b.ISO2022KR_st=[a.start,3,a.error,a.start,a.start,a.start,a.error,a.error,a.error,a.error,a.error,a.error,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.error,a.error,a.error,4,a.error,a.error,a.error,a.error,a.error,a.error,5,a.error,a.error,a.error,a.error,a.error,a.error,a.itsMe,a.start,a.start,a.start,a.start];b.ISO2022KRCharLenTable=[0,0,0,0,0,0];b.ISO2022KRSMModel={classTable:b.ISO2022KR_cls,classFactor:6,
+stateTable:b.ISO2022KR_st,charLenTable:b.ISO2022KRCharLenTable,name:"ISO-2022-KR"};!0},{"./init":21}],12:[function(b,a,d){!function(a){a.EUCJPProber=function(){a.MultiByteCharSetProber.apply(this);this.reset=function(){a.EUCJPProber.prototype.reset.apply(this);this._mContextAnalyzer.reset()};this.getCharsetName=function(){return"EUC-JP"};this.feed=function(b){for(var f=b.length,c=0;c<f;c++){var e=this._mCodingSM.nextState(b[c]);if(e==a.Constants.error){a.Constants._debug&&a.log(this.getCharsetName()+
+" prober hit error at byte "+c+"\n");this._mState=a.Constants.notMe;break}else if(e==a.Constants.itsMe){this._mState=a.Constants.foundIt;break}else e==a.Constants.start&&(e=this._mCodingSM.getCurrentCharLen(),0==c?(this._mLastChar[1]=b[0],this._mContextAnalyzer.feed(this._mLastChar,e),this._mDistributionAnalyzer.feed(this._mLastChar,e)):(this._mContextAnalyzer.feed(b.slice(c-1,c+1),e),this._mDistributionAnalyzer.feed(b.slice(c-1,c+1),e)))}this._mLastChar[0]=b[f-1];this.getState()==a.Constants.detecting&&
+this._mContextAnalyzer.gotEnoughData()&&this.getConfidence()>a.Constants.SHORTCUT_THRESHOLD&&(this._mState=a.Constants.foundIt);return this.getState()};this.getConfidence=function(){var a=this._mContextAnalyzer.getConfidence(),b=this._mDistributionAnalyzer.getConfidence();return Math.max(a,b)};this._mCodingSM=new a.CodingStateMachine(a.EUCJPSMModel);this._mDistributionAnalyzer=new a.EUCJPDistributionAnalysis;this._mContextAnalyzer=new a.EUCJPContextAnalysis;this.reset()};a.EUCJPProber.prototype=new a.MultiByteCharSetProber}(b("./init"))},
+{"./init":21}],13:[function(b,a,d){b=b("./init");b.EUCKR_TYPICAL_DISTRIBUTION_RATIO=6;b.EUCKR_TABLE_SIZE=2352;b.EUCKRCharToFreqOrder=[13,130,120,1396,481,1719,1720,328,609,212,1721,707,400,299,1722,87,1397,1723,104,536,1117,1203,1724,1267,685,1268,508,1725,1726,1727,1728,1398,1399,1729,1730,1731,141,621,326,1057,368,1732,267,488,20,1733,1269,1734,945,1400,1735,47,904,1270,1736,1737,773,248,1738,409,313,786,429,1739,116,987,813,1401,683,75,1204,145,1740,1741,1742,1743,16,847,667,622,708,1744,1745,
+1746,966,787,304,129,1747,60,820,123,676,1748,1749,1750,1751,617,1752,626,1753,1754,1755,1756,653,1757,1758,1759,1760,1761,1762,856,344,1763,1764,1765,1766,89,401,418,806,905,848,1767,1768,1769,946,1205,709,1770,1118,1771,241,1772,1773,1774,1271,1775,569,1776,999,1777,1778,1779,1780,337,751,1058,28,628,254,1781,177,906,270,349,891,1079,1782,19,1783,379,1784,315,1785,629,754,1402,559,1786,636,203,1206,1787,710,567,1788,935,814,1789,1790,1207,766,528,1791,1792,1208,1793,1794,1795,1796,1797,1403,1798,
+1799,533,1059,1404,1405,1156,1406,936,884,1080,1800,351,1801,1802,1803,1804,1805,801,1806,1807,1808,1119,1809,1157,714,474,1407,1810,298,899,885,1811,1120,802,1158,1812,892,1813,1814,1408,659,1815,1816,1121,1817,1818,1819,1820,1821,1822,319,1823,594,545,1824,815,937,1209,1825,1826,573,1409,1022,1827,1210,1828,1829,1830,1831,1832,1833,556,722,807,1122,1060,1834,697,1835,900,557,715,1836,1410,540,1411,752,1159,294,597,1211,976,803,770,1412,1837,1838,39,794,1413,358,1839,371,925,1840,453,661,788,531,
+723,544,1023,1081,869,91,1841,392,430,790,602,1414,677,1082,457,1415,1416,1842,1843,475,327,1024,1417,795,121,1844,733,403,1418,1845,1846,1847,300,119,711,1212,627,1848,1272,207,1849,1850,796,1213,382,1851,519,1852,1083,893,1853,1854,1855,367,809,487,671,1856,663,1857,1858,956,471,306,857,1859,1860,1160,1084,1861,1862,1863,1864,1865,1061,1866,1867,1868,1869,1870,1871,282,96,574,1872,502,1085,1873,1214,1874,907,1875,1876,827,977,1419,1420,1421,268,1877,1422,1878,1879,1880,308,1881,2,537,1882,1883,
+1215,1884,1885,127,791,1886,1273,1423,1887,34,336,404,643,1888,571,654,894,840,1889,0,886,1274,122,575,260,908,938,1890,1275,410,316,1891,1892,100,1893,1894,1123,48,1161,1124,1025,1895,633,901,1276,1896,1897,115,816,1898,317,1899,694,1900,909,734,1424,572,866,1425,691,85,524,1010,543,394,841,1901,1902,1903,1026,1904,1905,1906,1907,1908,1909,30,451,651,988,310,1910,1911,1426,810,1216,93,1912,1913,1277,1217,1914,858,759,45,58,181,610,269,1915,1916,131,1062,551,443,1E3,821,1427,957,895,1086,1917,1918,
+375,1919,359,1920,687,1921,822,1922,293,1923,1924,40,662,118,692,29,939,887,640,482,174,1925,69,1162,728,1428,910,1926,1278,1218,1279,386,870,217,854,1163,823,1927,1928,1929,1930,834,1931,78,1932,859,1933,1063,1934,1935,1936,1937,438,1164,208,595,1938,1939,1940,1941,1219,1125,1942,280,888,1429,1430,1220,1431,1943,1944,1945,1946,1947,1280,150,510,1432,1948,1949,1950,1951,1952,1953,1954,1011,1087,1955,1433,1043,1956,881,1957,614,958,1064,1065,1221,1958,638,1001,860,967,896,1434,989,492,553,1281,1165,
+1959,1282,1002,1283,1222,1960,1961,1962,1963,36,383,228,753,247,454,1964,876,678,1965,1966,1284,126,464,490,835,136,672,529,940,1088,1435,473,1967,1968,467,50,390,227,587,279,378,598,792,968,240,151,160,849,882,1126,1285,639,1044,133,140,288,360,811,563,1027,561,142,523,1969,1970,1971,7,103,296,439,407,506,634,990,1972,1973,1974,1975,645,1976,1977,1978,1979,1980,1981,236,1982,1436,1983,1984,1089,192,828,618,518,1166,333,1127,1985,818,1223,1986,1987,1988,1989,1990,1991,1992,1993,342,1128,1286,746,
+842,1994,1995,560,223,1287,98,8,189,650,978,1288,1996,1437,1997,17,345,250,423,277,234,512,226,97,289,42,167,1998,201,1999,2E3,843,836,824,532,338,783,1090,182,576,436,1438,1439,527,500,2001,947,889,2002,2003,2004,2005,262,600,314,447,2006,547,2007,693,738,1129,2008,71,1440,745,619,688,2009,829,2010,2011,147,2012,33,948,2013,2014,74,224,2015,61,191,918,399,637,2016,1028,1130,257,902,2017,2018,2019,2020,2021,2022,2023,2024,2025,2026,837,2027,2028,2029,2030,179,874,591,52,724,246,2031,2032,2033,2034,
+1167,969,2035,1289,630,605,911,1091,1168,2036,2037,2038,1441,912,2039,623,2040,2041,253,1169,1290,2042,1442,146,620,611,577,433,2043,1224,719,1170,959,440,437,534,84,388,480,1131,159,220,198,679,2044,1012,819,1066,1443,113,1225,194,318,1003,1029,2045,2046,2047,2048,1067,2049,2050,2051,2052,2053,59,913,112,2054,632,2055,455,144,739,1291,2056,273,681,499,2057,448,2058,2059,760,2060,2061,970,384,169,245,1132,2062,2063,414,1444,2064,2065,41,235,2066,157,252,877,568,919,789,580,2067,725,2068,2069,1292,
+2070,2071,1445,2072,1446,2073,2074,55,588,66,1447,271,1092,2075,1226,2076,960,1013,372,2077,2078,2079,2080,2081,1293,2082,2083,2084,2085,850,2086,2087,2088,2089,2090,186,2091,1068,180,2092,2093,2094,109,1227,522,606,2095,867,1448,1093,991,1171,926,353,1133,2096,581,2097,2098,2099,1294,1449,1450,2100,596,1172,1014,1228,2101,1451,1295,1173,1229,2102,2103,1296,1134,1452,949,1135,2104,2105,1094,1453,1454,1455,2106,1095,2107,2108,2109,2110,2111,2112,2113,2114,2115,2116,2117,804,2118,2119,1230,1231,805,
+1456,405,1136,2120,2121,2122,2123,2124,720,701,1297,992,1457,927,1004,2125,2126,2127,2128,2129,2130,22,417,2131,303,2132,385,2133,971,520,513,2134,1174,73,1096,231,274,962,1458,673,2135,1459,2136,152,1137,2137,2138,2139,2140,1005,1138,1460,1139,2141,2142,2143,2144,11,374,844,2145,154,1232,46,1461,2146,838,830,721,1233,106,2147,90,428,462,578,566,1175,352,2148,2149,538,1234,124,1298,2150,1462,761,565,2151,686,2152,649,2153,72,173,2154,460,415,2155,1463,2156,1235,305,2157,2158,2159,2160,2161,2162,579,
+2163,2164,2165,2166,2167,747,2168,2169,2170,2171,1464,669,2172,2173,2174,2175,2176,1465,2177,23,530,285,2178,335,729,2179,397,2180,2181,2182,1030,2183,2184,698,2185,2186,325,2187,2188,369,2189,799,1097,1015,348,2190,1069,680,2191,851,1466,2192,2193,10,2194,613,424,2195,979,108,449,589,27,172,81,1031,80,774,281,350,1032,525,301,582,1176,2196,674,1045,2197,2198,1467,730,762,2199,2200,2201,2202,1468,2203,993,2204,2205,266,1070,963,1140,2206,2207,2208,664,1098,972,2209,2210,2211,1177,1469,1470,871,2212,
+2213,2214,2215,2216,1471,2217,2218,2219,2220,2221,2222,2223,2224,2225,2226,2227,1472,1236,2228,2229,2230,2231,2232,2233,2234,2235,1299,2236,2237,200,2238,477,373,2239,2240,731,825,777,2241,2242,2243,521,486,548,2244,2245,2246,1473,1300,53,549,137,875,76,158,2247,1301,1474,469,396,1016,278,712,2248,321,442,503,767,744,941,1237,1178,1475,2249,82,178,1141,1179,973,2250,1302,2251,297,2252,2253,570,2254,2255,2256,18,450,206,2257,290,292,1142,2258,511,162,99,346,164,735,2259,1476,1477,4,554,343,798,1099,
+2260,1100,2261,43,171,1303,139,215,2262,2263,717,775,2264,1033,322,216,2265,831,2266,149,2267,1304,2268,2269,702,1238,135,845,347,309,2270,484,2271,878,655,238,1006,1478,2272,67,2273,295,2274,2275,461,2276,478,942,412,2277,1034,2278,2279,2280,265,2281,541,2282,2283,2284,2285,2286,70,852,1071,2287,2288,2289,2290,21,56,509,117,432,2291,2292,331,980,552,1101,148,284,105,393,1180,1239,755,2293,187,2294,1046,1479,2295,340,2296,63,1047,230,2297,2298,1305,763,1306,101,800,808,494,2299,2300,2301,903,2302,
+37,1072,14,5,2303,79,675,2304,312,2305,2306,2307,2308,2309,1480,6,1307,2310,2311,2312,1,470,35,24,229,2313,695,210,86,778,15,784,592,779,32,77,855,964,2314,259,2315,501,380,2316,2317,83,981,153,689,1308,1481,1482,1483,2318,2319,716,1484,2320,2321,2322,2323,2324,2325,1485,2326,2327,128,57,68,261,1048,211,170,1240,31,2328,51,435,742,2329,2330,2331,635,2332,264,456,2333,2334,2335,425,2336,1486,143,507,263,943,2337,363,920,1487,256,1488,1102,243,601,1489,2338,2339,2340,2341,2342,2343,2344,861,2345,2346,
+2347,2348,2349,2350,395,2351,1490,1491,62,535,166,225,2352,2353,668,419,1241,138,604,928,2354,1181,2355,1492,1493,2356,2357,2358,1143,2359,696,2360,387,307,1309,682,476,2361,2362,332,12,222,156,2363,232,2364,641,276,656,517,1494,1495,1035,416,736,1496,2365,1017,586,2366,2367,2368,1497,2369,242,2370,2371,2372,1498,2373,965,713,2374,2375,2376,2377,740,982,1499,944,1500,1007,2378,2379,1310,1501,2380,2381,2382,785,329,2383,2384,1502,2385,2386,2387,932,2388,1503,2389,2390,2391,2392,1242,2393,2394,2395,
+2396,2397,994,950,2398,2399,2400,2401,1504,1311,2402,2403,2404,2405,1049,749,2406,2407,853,718,1144,1312,2408,1182,1505,2409,2410,255,516,479,564,550,214,1506,1507,1313,413,239,444,339,1145,1036,1508,1509,1314,1037,1510,1315,2411,1511,2412,2413,2414,176,703,497,624,593,921,302,2415,341,165,1103,1512,2416,1513,2417,2418,2419,376,2420,700,2421,2422,2423,258,768,1316,2424,1183,2425,995,608,2426,2427,2428,2429,221,2430,2431,2432,2433,2434,2435,2436,2437,195,323,726,188,897,983,1317,377,644,1050,879,2438,
+452,2439,2440,2441,2442,2443,2444,914,2445,2446,2447,2448,915,489,2449,1514,1184,2450,2451,515,64,427,495,2452,583,2453,483,485,1038,562,213,1515,748,666,2454,2455,2456,2457,334,2458,780,996,1008,705,1243,2459,2460,2461,2462,2463,114,2464,493,1146,366,163,1516,961,1104,2465,291,2466,1318,1105,2467,1517,365,2468,355,951,1244,2469,1319,2470,631,2471,2472,218,1320,364,320,756,1518,1519,1321,1520,1322,2473,2474,2475,2476,997,2477,2478,2479,2480,665,1185,2481,916,1521,2482,2483,2484,584,684,2485,2486,
+797,2487,1051,1186,2488,2489,2490,1522,2491,2492,370,2493,1039,1187,65,2494,434,205,463,1188,2495,125,812,391,402,826,699,286,398,155,781,771,585,2496,590,505,1073,2497,599,244,219,917,1018,952,646,1523,2498,1323,2499,2500,49,984,354,741,2501,625,2502,1324,2503,1019,190,357,757,491,95,782,868,2504,2505,2506,2507,2508,2509,134,1524,1074,422,1525,898,2510,161,2511,2512,2513,2514,769,2515,1526,2516,2517,411,1325,2518,472,1527,2519,2520,2521,2522,2523,2524,985,2525,2526,2527,2528,2529,2530,764,2531,1245,
+2532,2533,25,204,311,2534,496,2535,1052,2536,2537,2538,2539,2540,2541,2542,199,704,504,468,758,657,1528,196,44,839,1246,272,750,2543,765,862,2544,2545,1326,2546,132,615,933,2547,732,2548,2549,2550,1189,1529,2551,283,1247,1053,607,929,2552,2553,2554,930,183,872,616,1040,1147,2555,1148,1020,441,249,1075,2556,2557,2558,466,743,2559,2560,2561,92,514,426,420,526,2562,2563,2564,2565,2566,2567,2568,185,2569,2570,2571,2572,776,1530,658,2573,362,2574,361,922,1076,793,2575,2576,2577,2578,2579,2580,1531,251,
+2581,2582,2583,2584,1532,54,612,237,1327,2585,2586,275,408,647,111,2587,1533,1106,465,3,458,9,38,2588,107,110,890,209,26,737,498,2589,1534,2590,431,202,88,1535,356,287,1107,660,1149,2591,381,1536,986,1150,445,1248,1151,974,2592,2593,846,2594,446,953,184,1249,1250,727,2595,923,193,883,2596,2597,2598,102,324,539,817,2599,421,1041,2600,832,2601,94,175,197,406,2602,459,2603,2604,2605,2606,2607,330,555,2608,2609,2610,706,1108,389,2611,2612,2613,2614,233,2615,833,558,931,954,1251,2616,2617,1537,546,2618,
+2619,1009,2620,2621,2622,1538,690,1328,2623,955,2624,1539,2625,2626,772,2627,2628,2629,2630,2631,924,648,863,603,2632,2633,934,1540,864,865,2634,642,1042,670,1190,2635,2636,2637,2638,168,2639,652,873,542,1054,1541,2640,2641,2642,2643,2644,2645,2646,2647,2648,2649,2650,2651,2652,2653,2654,2655,2656,2657,2658,2659,2660,2661,2662,2663,2664,2665,2666,2667,2668,2669,2670,2671,2672,2673,2674,2675,2676,2677,2678,2679,2680,2681,2682,2683,2684,2685,2686,2687,2688,2689,2690,2691,2692,2693,2694,2695,2696,2697,
+2698,2699,1542,880,2700,2701,2702,2703,2704,2705,2706,2707,2708,2709,2710,2711,2712,2713,2714,2715,2716,2717,2718,2719,2720,2721,2722,2723,2724,2725,1543,2726,2727,2728,2729,2730,2731,2732,1544,2733,2734,2735,2736,2737,2738,2739,2740,2741,2742,2743,2744,2745,2746,2747,2748,2749,2750,2751,2752,2753,2754,1545,2755,2756,2757,2758,2759,2760,2761,2762,2763,2764,2765,2766,1546,2767,1547,2768,2769,2770,2771,2772,2773,2774,2775,2776,2777,2778,2779,2780,2781,2782,2783,2784,2785,2786,1548,2787,2788,2789,1109,
+2790,2791,2792,2793,2794,2795,2796,2797,2798,2799,2800,2801,2802,2803,2804,2805,2806,2807,2808,2809,2810,2811,2812,1329,2813,2814,2815,2816,2817,2818,2819,2820,2821,2822,2823,2824,2825,2826,2827,2828,2829,2830,2831,2832,2833,2834,2835,2836,2837,2838,2839,2840,2841,2842,2843,2844,2845,2846,2847,2848,2849,2850,2851,2852,2853,2854,2855,2856,1549,2857,2858,2859,2860,1550,2861,2862,1551,2863,2864,2865,2866,2867,2868,2869,2870,2871,2872,2873,2874,1110,1330,2875,2876,2877,2878,2879,2880,2881,2882,2883,2884,
+2885,2886,2887,2888,2889,2890,2891,2892,2893,2894,2895,2896,2897,2898,2899,2900,2901,2902,2903,2904,2905,2906,2907,2908,2909,2910,2911,2912,2913,2914,2915,2916,2917,2918,2919,2920,2921,2922,2923,2924,2925,2926,2927,2928,2929,2930,1331,2931,2932,2933,2934,2935,2936,2937,2938,2939,2940,2941,2942,2943,1552,2944,2945,2946,2947,2948,2949,2950,2951,2952,2953,2954,2955,2956,2957,2958,2959,2960,2961,2962,2963,2964,1252,2965,2966,2967,2968,2969,2970,2971,2972,2973,2974,2975,2976,2977,2978,2979,2980,2981,2982,
+2983,2984,2985,2986,2987,2988,2989,2990,2991,2992,2993,2994,2995,2996,2997,2998,2999,3E3,3001,3002,3003,3004,3005,3006,3007,3008,3009,3010,3011,3012,1553,3013,3014,3015,3016,3017,1554,3018,1332,3019,3020,3021,3022,3023,3024,3025,3026,3027,3028,3029,3030,3031,3032,3033,3034,3035,3036,3037,3038,3039,3040,3041,3042,3043,3044,3045,3046,3047,3048,3049,3050,1555,3051,3052,3053,1556,1557,3054,3055,3056,3057,3058,3059,3060,3061,3062,3063,3064,3065,3066,3067,1558,3068,3069,3070,3071,3072,3073,3074,3075,3076,
+1559,3077,3078,3079,3080,3081,3082,3083,1253,3084,3085,3086,3087,3088,3089,3090,3091,3092,3093,3094,3095,3096,3097,3098,3099,3100,3101,3102,3103,3104,3105,3106,3107,3108,1152,3109,3110,3111,3112,3113,1560,3114,3115,3116,3117,1111,3118,3119,3120,3121,3122,3123,3124,3125,3126,3127,3128,3129,3130,3131,3132,3133,3134,3135,3136,3137,3138,3139,3140,3141,3142,3143,3144,3145,3146,3147,3148,3149,3150,3151,3152,3153,3154,3155,3156,3157,3158,3159,3160,3161,3162,3163,3164,3165,3166,3167,3168,3169,3170,3171,3172,
+3173,3174,3175,3176,1333,3177,3178,3179,3180,3181,3182,3183,3184,3185,3186,3187,3188,3189,1561,3190,3191,1334,3192,3193,3194,3195,3196,3197,3198,3199,3200,3201,3202,3203,3204,3205,3206,3207,3208,3209,3210,3211,3212,3213,3214,3215,3216,3217,3218,3219,3220,3221,3222,3223,3224,3225,3226,3227,3228,3229,3230,3231,3232,3233,3234,1562,3235,3236,3237,3238,3239,3240,3241,3242,3243,3244,3245,3246,3247,3248,3249,3250,3251,3252,3253,3254,3255,3256,3257,3258,3259,3260,3261,3262,3263,3264,3265,3266,3267,3268,3269,
+3270,3271,3272,3273,3274,3275,3276,3277,1563,3278,3279,3280,3281,3282,3283,3284,3285,3286,3287,3288,3289,3290,3291,3292,3293,3294,3295,3296,3297,3298,3299,3300,3301,3302,3303,3304,3305,3306,3307,3308,3309,3310,3311,3312,3313,3314,3315,3316,3317,3318,3319,3320,3321,3322,3323,3324,3325,3326,3327,3328,3329,3330,3331,3332,3333,3334,3335,3336,3337,3338,3339,3340,3341,3342,3343,3344,3345,3346,3347,3348,3349,3350,3351,3352,3353,3354,3355,3356,3357,3358,3359,3360,3361,3362,3363,3364,1335,3365,3366,3367,3368,
+3369,3370,3371,3372,3373,3374,3375,3376,3377,3378,3379,3380,3381,3382,3383,3384,3385,3386,3387,1336,3388,3389,3390,3391,3392,3393,3394,3395,3396,3397,3398,3399,3400,3401,3402,3403,3404,3405,3406,3407,3408,3409,3410,3411,3412,3413,3414,1337,3415,3416,3417,3418,3419,1338,3420,3421,3422,1564,1565,3423,3424,3425,3426,3427,3428,3429,3430,3431,1254,3432,3433,3434,1339,3435,3436,3437,3438,3439,1566,3440,3441,3442,3443,3444,3445,3446,3447,3448,3449,3450,3451,3452,3453,3454,1255,3455,3456,3457,3458,3459,1567,
+1191,3460,1568,1569,3461,3462,3463,1570,3464,3465,3466,3467,3468,1571,3469,3470,3471,3472,3473,1572,3474,3475,3476,3477,3478,3479,3480,3481,3482,3483,3484,3485,3486,1340,3487,3488,3489,3490,3491,3492,1021,3493,3494,3495,3496,3497,3498,1573,3499,1341,3500,3501,3502,3503,3504,3505,3506,3507,3508,3509,3510,3511,1342,3512,3513,3514,3515,3516,1574,1343,3517,3518,3519,1575,3520,1576,3521,3522,3523,3524,3525,3526,3527,3528,3529,3530,3531,3532,3533,3534,3535,3536,3537,3538,3539,3540,3541,3542,3543,3544,3545,
+3546,3547,3548,3549,3550,3551,3552,3553,3554,3555,3556,3557,3558,3559,3560,3561,3562,3563,3564,3565,3566,3567,3568,3569,3570,3571,3572,3573,3574,3575,3576,3577,3578,3579,3580,1577,3581,3582,1578,3583,3584,3585,3586,3587,3588,3589,3590,3591,3592,3593,3594,3595,3596,3597,3598,3599,3600,3601,3602,3603,3604,1579,3605,3606,3607,3608,3609,3610,3611,3612,3613,3614,3615,3616,3617,3618,3619,3620,3621,3622,3623,3624,3625,3626,3627,3628,3629,1580,3630,3631,1581,3632,3633,3634,3635,3636,3637,3638,3639,3640,3641,
+3642,3643,3644,3645,3646,3647,3648,3649,3650,3651,3652,3653,3654,3655,3656,1582,3657,3658,3659,3660,3661,3662,3663,3664,3665,3666,3667,3668,3669,3670,3671,3672,3673,3674,3675,3676,3677,3678,3679,3680,3681,3682,3683,3684,3685,3686,3687,3688,3689,3690,3691,3692,3693,3694,3695,3696,3697,3698,3699,3700,1192,3701,3702,3703,3704,1256,3705,3706,3707,3708,1583,1257,3709,3710,3711,3712,3713,3714,3715,3716,1584,3717,3718,3719,3720,3721,3722,3723,3724,3725,3726,3727,3728,3729,3730,3731,3732,3733,3734,3735,3736,
+3737,3738,3739,3740,3741,3742,3743,3744,3745,1344,3746,3747,3748,3749,3750,3751,3752,3753,3754,3755,3756,1585,3757,3758,3759,3760,3761,3762,3763,3764,3765,3766,1586,3767,3768,3769,3770,3771,3772,3773,3774,3775,3776,3777,3778,1345,3779,3780,3781,3782,3783,3784,3785,3786,3787,3788,3789,3790,3791,3792,3793,3794,3795,1346,1587,3796,3797,1588,3798,3799,3800,3801,3802,3803,3804,3805,3806,1347,3807,3808,3809,3810,3811,1589,3812,3813,3814,3815,3816,3817,3818,3819,3820,3821,1590,3822,3823,1591,1348,3824,3825,
+3826,3827,3828,3829,3830,1592,3831,3832,1593,3833,3834,3835,3836,3837,3838,3839,3840,3841,3842,3843,3844,1349,3845,3846,3847,3848,3849,3850,3851,3852,3853,3854,3855,3856,3857,3858,1594,3859,3860,3861,3862,3863,3864,3865,3866,3867,3868,3869,1595,3870,3871,3872,3873,1596,3874,3875,3876,3877,3878,3879,3880,3881,3882,3883,3884,3885,3886,1597,3887,3888,3889,3890,3891,3892,3893,3894,3895,1598,3896,3897,3898,1599,1600,3899,1350,3900,1351,3901,3902,1352,3903,3904,3905,3906,3907,3908,3909,3910,3911,3912,3913,
+3914,3915,3916,3917,3918,3919,3920,3921,3922,3923,3924,1258,3925,3926,3927,3928,3929,3930,3931,1193,3932,1601,3933,3934,3935,3936,3937,3938,3939,3940,3941,3942,3943,1602,3944,3945,3946,3947,3948,1603,3949,3950,3951,3952,3953,3954,3955,3956,3957,3958,3959,3960,3961,3962,3963,3964,3965,1604,3966,3967,3968,3969,3970,3971,3972,3973,3974,3975,3976,3977,1353,3978,3979,3980,3981,3982,3983,3984,3985,3986,3987,3988,3989,3990,3991,1354,3992,3993,3994,3995,3996,3997,3998,3999,4E3,4001,4002,4003,4004,4005,4006,
+4007,4008,4009,4010,4011,4012,4013,4014,4015,4016,4017,4018,4019,4020,4021,4022,4023,1355,4024,4025,4026,4027,4028,4029,4030,4031,4032,4033,4034,4035,4036,4037,4038,4039,4040,1605,4041,4042,4043,4044,4045,4046,4047,4048,4049,4050,4051,4052,4053,4054,4055,4056,4057,4058,4059,4060,1606,4061,4062,4063,4064,1607,4065,4066,4067,4068,4069,4070,4071,4072,4073,4074,4075,4076,1194,4077,4078,1608,4079,4080,4081,4082,4083,4084,4085,4086,4087,1609,4088,4089,4090,4091,4092,4093,4094,4095,4096,4097,4098,4099,4100,
+4101,4102,4103,4104,4105,4106,4107,4108,1259,4109,4110,4111,4112,4113,4114,4115,4116,4117,4118,4119,4120,4121,4122,4123,4124,1195,4125,4126,4127,1610,4128,4129,4130,4131,4132,4133,4134,4135,4136,4137,1356,4138,4139,4140,4141,4142,4143,4144,1611,4145,4146,4147,4148,4149,4150,4151,4152,4153,4154,4155,4156,4157,4158,4159,4160,4161,4162,4163,4164,4165,4166,4167,4168,4169,4170,4171,4172,4173,4174,4175,4176,4177,4178,4179,4180,4181,4182,4183,4184,4185,4186,4187,4188,4189,4190,4191,4192,4193,4194,4195,4196,
+4197,4198,4199,4200,4201,4202,4203,4204,4205,4206,4207,4208,4209,4210,4211,4212,4213,4214,4215,4216,4217,4218,4219,1612,4220,4221,4222,4223,4224,4225,4226,4227,1357,4228,1613,4229,4230,4231,4232,4233,4234,4235,4236,4237,4238,4239,4240,4241,4242,4243,1614,4244,4245,4246,4247,4248,4249,4250,4251,4252,4253,4254,4255,4256,4257,4258,4259,4260,4261,4262,4263,4264,4265,4266,4267,4268,4269,4270,1196,1358,4271,4272,4273,4274,4275,4276,4277,4278,4279,4280,4281,4282,4283,4284,4285,4286,4287,1615,4288,4289,4290,
+4291,4292,4293,4294,4295,4296,4297,4298,4299,4300,4301,4302,4303,4304,4305,4306,4307,4308,4309,4310,4311,4312,4313,4314,4315,4316,4317,4318,4319,4320,4321,4322,4323,4324,4325,4326,4327,4328,4329,4330,4331,4332,4333,4334,1616,4335,4336,4337,4338,4339,4340,4341,4342,4343,4344,4345,4346,4347,4348,4349,4350,4351,4352,4353,4354,4355,4356,4357,4358,4359,4360,1617,4361,4362,4363,4364,4365,1618,4366,4367,4368,4369,4370,4371,4372,4373,4374,4375,4376,4377,4378,4379,4380,4381,4382,4383,4384,4385,4386,4387,4388,
+4389,4390,4391,4392,4393,4394,4395,4396,4397,4398,4399,4400,4401,4402,4403,4404,4405,4406,4407,4408,4409,4410,4411,4412,4413,4414,4415,4416,1619,4417,4418,4419,4420,4421,4422,4423,4424,4425,1112,4426,4427,4428,4429,4430,1620,4431,4432,4433,4434,4435,4436,4437,4438,4439,4440,4441,4442,1260,1261,4443,4444,4445,4446,4447,4448,4449,4450,4451,4452,4453,4454,4455,1359,4456,4457,4458,4459,4460,4461,4462,4463,4464,4465,1621,4466,4467,4468,4469,4470,4471,4472,4473,4474,4475,4476,4477,4478,4479,4480,4481,4482,
+4483,4484,4485,4486,4487,4488,4489,1055,4490,4491,4492,4493,4494,4495,4496,4497,4498,4499,4500,4501,4502,4503,4504,4505,4506,4507,4508,4509,4510,4511,4512,4513,4514,4515,4516,4517,4518,1622,4519,4520,4521,1623,4522,4523,4524,4525,4526,4527,4528,4529,4530,4531,4532,4533,4534,4535,1360,4536,4537,4538,4539,4540,4541,4542,4543,975,4544,4545,4546,4547,4548,4549,4550,4551,4552,4553,4554,4555,4556,4557,4558,4559,4560,4561,4562,4563,4564,4565,4566,4567,4568,4569,4570,4571,1624,4572,4573,4574,4575,4576,1625,
+4577,4578,4579,4580,4581,4582,4583,4584,1626,4585,4586,4587,4588,4589,4590,4591,4592,4593,4594,4595,1627,4596,4597,4598,4599,4600,4601,4602,4603,4604,4605,4606,4607,4608,4609,4610,4611,4612,4613,4614,4615,1628,4616,4617,4618,4619,4620,4621,4622,4623,4624,4625,4626,4627,4628,4629,4630,4631,4632,4633,4634,4635,4636,4637,4638,4639,4640,4641,4642,4643,4644,4645,4646,4647,4648,4649,1361,4650,4651,4652,4653,4654,4655,4656,4657,4658,4659,4660,4661,1362,4662,4663,4664,4665,4666,4667,4668,4669,4670,4671,4672,
+4673,4674,4675,4676,4677,4678,4679,4680,4681,4682,1629,4683,4684,4685,4686,4687,1630,4688,4689,4690,4691,1153,4692,4693,4694,1113,4695,4696,4697,4698,4699,4700,4701,4702,4703,4704,4705,4706,4707,4708,4709,4710,4711,1197,4712,4713,4714,4715,4716,4717,4718,4719,4720,4721,4722,4723,4724,4725,4726,4727,4728,4729,4730,4731,4732,4733,4734,4735,1631,4736,1632,4737,4738,4739,4740,4741,4742,4743,4744,1633,4745,4746,4747,4748,4749,1262,4750,4751,4752,4753,4754,1363,4755,4756,4757,4758,4759,4760,4761,4762,4763,
+4764,4765,4766,4767,4768,1634,4769,4770,4771,4772,4773,4774,4775,4776,4777,4778,1635,4779,4780,4781,4782,4783,4784,4785,4786,4787,4788,4789,1636,4790,4791,4792,4793,4794,4795,4796,4797,4798,4799,4800,4801,4802,4803,4804,4805,4806,1637,4807,4808,4809,1638,4810,4811,4812,4813,4814,4815,4816,4817,4818,1639,4819,4820,4821,4822,4823,4824,4825,4826,4827,4828,4829,4830,4831,4832,4833,1077,4834,4835,4836,4837,4838,4839,4840,4841,4842,4843,4844,4845,4846,4847,4848,4849,4850,4851,4852,4853,4854,4855,4856,4857,
+4858,4859,4860,4861,4862,4863,4864,4865,4866,4867,4868,4869,4870,4871,4872,4873,4874,4875,4876,4877,4878,4879,4880,4881,4882,4883,1640,4884,4885,1641,4886,4887,4888,4889,4890,4891,4892,4893,4894,4895,4896,4897,4898,4899,4900,4901,4902,4903,4904,4905,4906,4907,4908,4909,4910,4911,1642,4912,4913,4914,1364,4915,4916,4917,4918,4919,4920,4921,4922,4923,4924,4925,4926,4927,4928,4929,4930,4931,1643,4932,4933,4934,4935,4936,4937,4938,4939,4940,4941,4942,4943,4944,4945,4946,4947,4948,4949,4950,4951,4952,4953,
+4954,4955,4956,4957,4958,4959,4960,4961,4962,4963,4964,4965,4966,4967,4968,4969,4970,4971,4972,4973,4974,4975,4976,4977,4978,4979,4980,1644,4981,4982,4983,4984,1645,4985,4986,1646,4987,4988,4989,4990,4991,4992,4993,4994,4995,4996,4997,4998,4999,5E3,5001,5002,5003,5004,5005,1647,5006,1648,5007,5008,5009,5010,5011,5012,1078,5013,5014,5015,5016,5017,5018,5019,5020,5021,5022,5023,5024,5025,5026,5027,5028,1365,5029,5030,5031,5032,5033,5034,5035,5036,5037,5038,5039,1649,5040,5041,5042,5043,5044,5045,1366,
+5046,5047,5048,5049,5050,5051,5052,5053,5054,5055,1650,5056,5057,5058,5059,5060,5061,5062,5063,5064,5065,5066,5067,5068,5069,5070,5071,5072,5073,5074,5075,5076,5077,1651,5078,5079,5080,5081,5082,5083,5084,5085,5086,5087,5088,5089,5090,5091,5092,5093,5094,5095,5096,5097,5098,5099,5100,5101,5102,5103,5104,5105,5106,5107,5108,5109,5110,1652,5111,5112,5113,5114,5115,5116,5117,5118,1367,5119,5120,5121,5122,5123,5124,5125,5126,5127,5128,5129,1653,5130,5131,5132,5133,5134,5135,5136,5137,5138,5139,5140,5141,
+5142,5143,5144,5145,5146,5147,5148,5149,1368,5150,1654,5151,1369,5152,5153,5154,5155,5156,5157,5158,5159,5160,5161,5162,5163,5164,5165,5166,5167,5168,5169,5170,5171,5172,5173,5174,5175,5176,5177,5178,1370,5179,5180,5181,5182,5183,5184,5185,5186,5187,5188,5189,5190,5191,5192,5193,5194,5195,5196,5197,5198,1655,5199,5200,5201,5202,1656,5203,5204,5205,5206,1371,5207,1372,5208,5209,5210,5211,1373,5212,5213,1374,5214,5215,5216,5217,5218,5219,5220,5221,5222,5223,5224,5225,5226,5227,5228,5229,5230,5231,5232,
+5233,5234,5235,5236,5237,5238,5239,5240,5241,5242,5243,5244,5245,5246,5247,1657,5248,5249,5250,5251,1658,1263,5252,5253,5254,5255,5256,1375,5257,5258,5259,5260,5261,5262,5263,5264,5265,5266,5267,5268,5269,5270,5271,5272,5273,5274,5275,5276,5277,5278,5279,5280,5281,5282,5283,1659,5284,5285,5286,5287,5288,5289,5290,5291,5292,5293,5294,5295,5296,5297,5298,5299,5300,1660,5301,5302,5303,5304,5305,5306,5307,5308,5309,5310,5311,5312,5313,5314,5315,5316,5317,5318,5319,5320,5321,1376,5322,5323,5324,5325,5326,
+5327,5328,5329,5330,5331,5332,5333,1198,5334,5335,5336,5337,5338,5339,5340,5341,5342,5343,1661,5344,5345,5346,5347,5348,5349,5350,5351,5352,5353,5354,5355,5356,5357,5358,5359,5360,5361,5362,5363,5364,5365,5366,5367,5368,5369,5370,5371,5372,5373,5374,5375,5376,5377,5378,5379,5380,5381,5382,5383,5384,5385,5386,5387,5388,5389,5390,5391,5392,5393,5394,5395,5396,5397,5398,1264,5399,5400,5401,5402,5403,5404,5405,5406,5407,5408,5409,5410,5411,5412,1662,5413,5414,5415,5416,1663,5417,5418,5419,5420,5421,5422,
+5423,5424,5425,5426,5427,5428,5429,5430,5431,5432,5433,5434,5435,5436,5437,5438,1664,5439,5440,5441,5442,5443,5444,5445,5446,5447,5448,5449,5450,5451,5452,5453,5454,5455,5456,5457,5458,5459,5460,5461,5462,5463,5464,5465,5466,5467,5468,5469,5470,5471,5472,5473,5474,5475,5476,5477,5478,1154,5479,5480,5481,5482,5483,5484,5485,1665,5486,5487,5488,5489,5490,5491,5492,5493,5494,5495,5496,5497,5498,5499,5500,5501,5502,5503,5504,5505,5506,5507,5508,5509,5510,5511,5512,5513,5514,5515,5516,5517,5518,5519,5520,
+5521,5522,5523,5524,5525,5526,5527,5528,5529,5530,5531,5532,5533,5534,5535,5536,5537,5538,5539,5540,5541,5542,5543,5544,5545,5546,5547,5548,1377,5549,5550,5551,5552,5553,5554,5555,5556,5557,5558,5559,5560,5561,5562,5563,5564,5565,5566,5567,5568,5569,5570,1114,5571,5572,5573,5574,5575,5576,5577,5578,5579,5580,5581,5582,5583,5584,5585,5586,5587,5588,5589,5590,5591,5592,1378,5593,5594,5595,5596,5597,5598,5599,5600,5601,5602,5603,5604,5605,5606,5607,5608,5609,5610,5611,5612,5613,5614,1379,5615,5616,5617,
+5618,5619,5620,5621,5622,5623,5624,5625,5626,5627,5628,5629,5630,5631,5632,5633,5634,1380,5635,5636,5637,5638,5639,5640,5641,5642,5643,5644,5645,5646,5647,5648,5649,1381,1056,5650,5651,5652,5653,5654,5655,5656,5657,5658,5659,5660,1666,5661,5662,5663,5664,5665,5666,5667,5668,1667,5669,1668,5670,5671,5672,5673,5674,5675,5676,5677,5678,1155,5679,5680,5681,5682,5683,5684,5685,5686,5687,5688,5689,5690,5691,5692,5693,5694,5695,5696,5697,5698,1669,5699,5700,5701,5702,5703,5704,5705,1670,5706,5707,5708,5709,
+5710,1671,5711,5712,5713,5714,1382,5715,5716,5717,5718,5719,5720,5721,5722,5723,5724,5725,1672,5726,5727,1673,1674,5728,5729,5730,5731,5732,5733,5734,5735,5736,1675,5737,5738,5739,5740,5741,5742,5743,5744,1676,5745,5746,5747,5748,5749,5750,5751,1383,5752,5753,5754,5755,5756,5757,5758,5759,5760,5761,5762,5763,5764,5765,5766,5767,5768,1677,5769,5770,5771,5772,5773,1678,5774,5775,5776,998,5777,5778,5779,5780,5781,5782,5783,5784,5785,1384,5786,5787,5788,5789,5790,5791,5792,5793,5794,5795,5796,5797,5798,
+5799,5800,1679,5801,5802,5803,1115,1116,5804,5805,5806,5807,5808,5809,5810,5811,5812,5813,5814,5815,5816,5817,5818,5819,5820,5821,5822,5823,5824,5825,5826,5827,5828,5829,5830,5831,5832,5833,5834,5835,5836,5837,5838,5839,5840,5841,5842,5843,5844,5845,5846,5847,5848,5849,5850,5851,5852,5853,5854,5855,1680,5856,5857,5858,5859,5860,5861,5862,5863,5864,1681,5865,5866,5867,1682,5868,5869,5870,5871,5872,5873,5874,5875,5876,5877,5878,5879,1683,5880,1684,5881,5882,5883,5884,1685,5885,5886,5887,5888,5889,5890,
+5891,5892,5893,5894,5895,5896,5897,5898,5899,5900,5901,5902,5903,5904,5905,5906,5907,1686,5908,5909,5910,5911,5912,5913,5914,5915,5916,5917,5918,5919,5920,5921,5922,5923,5924,5925,5926,5927,5928,5929,5930,5931,5932,5933,5934,5935,1687,5936,5937,5938,5939,5940,5941,5942,5943,5944,5945,5946,5947,5948,5949,5950,5951,5952,1688,1689,5953,1199,5954,5955,5956,5957,5958,5959,5960,5961,1690,5962,5963,5964,5965,5966,5967,5968,5969,5970,5971,5972,5973,5974,5975,5976,5977,5978,5979,5980,5981,1385,5982,1386,5983,
+5984,5985,5986,5987,5988,5989,5990,5991,5992,5993,5994,5995,5996,5997,5998,5999,6E3,6001,6002,6003,6004,6005,6006,6007,6008,6009,6010,6011,6012,6013,6014,6015,6016,6017,6018,6019,6020,6021,6022,6023,6024,6025,6026,6027,1265,6028,6029,1691,6030,6031,6032,6033,6034,6035,6036,6037,6038,6039,6040,6041,6042,6043,6044,6045,6046,6047,6048,6049,6050,6051,6052,6053,6054,6055,6056,6057,6058,6059,6060,6061,6062,6063,6064,6065,6066,6067,6068,6069,6070,6071,6072,6073,6074,6075,6076,6077,6078,6079,6080,6081,6082,
+6083,6084,1692,6085,6086,6087,6088,6089,6090,6091,6092,6093,6094,6095,6096,6097,6098,6099,6100,6101,6102,6103,6104,6105,6106,6107,6108,6109,6110,6111,6112,6113,6114,6115,6116,6117,6118,6119,6120,6121,6122,6123,6124,6125,6126,6127,6128,6129,6130,6131,1693,6132,6133,6134,6135,6136,1694,6137,6138,6139,6140,6141,1695,6142,6143,6144,6145,6146,6147,6148,6149,6150,6151,6152,6153,6154,6155,6156,6157,6158,6159,6160,6161,6162,6163,6164,6165,6166,6167,6168,6169,6170,6171,6172,6173,6174,6175,6176,6177,6178,6179,
+6180,6181,6182,6183,6184,6185,1696,6186,6187,6188,6189,6190,6191,6192,6193,6194,6195,6196,6197,6198,6199,6200,6201,6202,6203,6204,6205,6206,6207,6208,6209,6210,6211,6212,6213,6214,6215,6216,6217,6218,6219,1697,6220,6221,6222,6223,6224,6225,6226,6227,6228,6229,6230,6231,6232,6233,6234,6235,6236,6237,6238,6239,6240,6241,6242,6243,6244,6245,6246,6247,6248,6249,6250,6251,6252,6253,1698,6254,6255,6256,6257,6258,6259,6260,6261,6262,6263,1200,6264,6265,6266,6267,6268,6269,6270,6271,6272,6273,6274,6275,6276,
+6277,6278,6279,6280,6281,6282,6283,6284,6285,6286,6287,6288,6289,6290,6291,6292,6293,6294,6295,6296,6297,6298,6299,6300,6301,6302,1699,6303,6304,1700,6305,6306,6307,6308,6309,6310,6311,6312,6313,6314,6315,6316,6317,6318,6319,6320,6321,6322,6323,6324,6325,6326,6327,6328,6329,6330,6331,6332,6333,6334,6335,6336,6337,6338,6339,1701,6340,6341,6342,6343,6344,1387,6345,6346,6347,6348,6349,6350,6351,6352,6353,6354,6355,6356,6357,6358,6359,6360,6361,6362,6363,6364,6365,6366,6367,6368,6369,6370,6371,6372,6373,
+6374,6375,6376,6377,6378,6379,6380,6381,6382,6383,6384,6385,6386,6387,6388,6389,6390,6391,6392,6393,6394,6395,6396,6397,6398,6399,6400,6401,6402,6403,6404,6405,6406,6407,6408,6409,6410,6411,6412,6413,1702,6414,6415,6416,6417,6418,6419,6420,6421,6422,1703,6423,6424,6425,6426,6427,6428,6429,6430,6431,6432,6433,6434,6435,6436,6437,6438,1704,6439,6440,6441,6442,6443,6444,6445,6446,6447,6448,6449,6450,6451,6452,6453,6454,6455,6456,6457,6458,6459,6460,6461,6462,6463,6464,6465,6466,6467,6468,6469,6470,6471,
+6472,6473,6474,6475,6476,6477,6478,6479,6480,6481,6482,6483,6484,6485,6486,6487,6488,6489,6490,6491,6492,6493,6494,6495,6496,6497,6498,6499,6500,6501,6502,6503,1266,6504,6505,6506,6507,6508,6509,6510,6511,6512,6513,6514,6515,6516,6517,6518,6519,6520,6521,6522,6523,6524,6525,6526,6527,6528,6529,6530,6531,6532,6533,6534,6535,6536,6537,6538,6539,6540,6541,6542,6543,6544,6545,6546,6547,6548,6549,6550,6551,1705,1706,6552,6553,6554,6555,6556,6557,6558,6559,6560,6561,6562,6563,6564,6565,6566,6567,6568,6569,
+6570,6571,6572,6573,6574,6575,6576,6577,6578,6579,6580,6581,6582,6583,6584,6585,6586,6587,6588,6589,6590,6591,6592,6593,6594,6595,6596,6597,6598,6599,6600,6601,6602,6603,6604,6605,6606,6607,6608,6609,6610,6611,6612,6613,6614,6615,6616,6617,6618,6619,6620,6621,6622,6623,6624,6625,6626,6627,6628,6629,6630,6631,6632,6633,6634,6635,6636,6637,1388,6638,6639,6640,6641,6642,6643,6644,1707,6645,6646,6647,6648,6649,6650,6651,6652,6653,6654,6655,6656,6657,6658,6659,6660,6661,6662,6663,1708,6664,6665,6666,6667,
+6668,6669,6670,6671,6672,6673,6674,1201,6675,6676,6677,6678,6679,6680,6681,6682,6683,6684,6685,6686,6687,6688,6689,6690,6691,6692,6693,6694,6695,6696,6697,6698,6699,6700,6701,6702,6703,6704,6705,6706,6707,6708,6709,6710,6711,6712,6713,6714,6715,6716,6717,6718,6719,6720,6721,6722,6723,6724,6725,1389,6726,6727,6728,6729,6730,6731,6732,6733,6734,6735,6736,1390,1709,6737,6738,6739,6740,6741,6742,1710,6743,6744,6745,6746,1391,6747,6748,6749,6750,6751,6752,6753,6754,6755,6756,6757,1392,6758,6759,6760,6761,
+6762,6763,6764,6765,6766,6767,6768,6769,6770,6771,6772,6773,6774,6775,6776,6777,6778,6779,6780,1202,6781,6782,6783,6784,6785,6786,6787,6788,6789,6790,6791,6792,6793,6794,6795,6796,6797,6798,6799,6800,6801,6802,6803,6804,6805,6806,6807,6808,6809,1711,6810,6811,6812,6813,6814,6815,6816,6817,6818,6819,6820,6821,6822,6823,6824,6825,6826,6827,6828,6829,6830,6831,6832,6833,6834,6835,6836,1393,6837,6838,6839,6840,6841,6842,6843,6844,6845,6846,6847,6848,6849,6850,6851,6852,6853,6854,6855,6856,6857,6858,6859,
+6860,6861,6862,6863,6864,6865,6866,6867,6868,6869,6870,6871,6872,6873,6874,6875,6876,6877,6878,6879,6880,6881,6882,6883,6884,6885,6886,6887,6888,6889,6890,6891,6892,6893,6894,6895,6896,6897,6898,6899,6900,6901,6902,1712,6903,6904,6905,6906,6907,6908,6909,6910,1713,6911,6912,6913,6914,6915,6916,6917,6918,6919,6920,6921,6922,6923,6924,6925,6926,6927,6928,6929,6930,6931,6932,6933,6934,6935,6936,6937,6938,6939,6940,6941,6942,6943,6944,6945,6946,6947,6948,6949,6950,6951,6952,6953,6954,6955,6956,6957,6958,
+6959,6960,6961,6962,6963,6964,6965,6966,6967,6968,6969,6970,6971,6972,6973,6974,1714,6975,6976,6977,6978,6979,6980,6981,6982,6983,6984,6985,6986,6987,6988,1394,6989,6990,6991,6992,6993,6994,6995,6996,6997,6998,6999,7E3,1715,7001,7002,7003,7004,7005,7006,7007,7008,7009,7010,7011,7012,7013,7014,7015,7016,7017,7018,7019,7020,7021,7022,7023,7024,7025,7026,7027,7028,1716,7029,7030,7031,7032,7033,7034,7035,7036,7037,7038,7039,7040,7041,7042,7043,7044,7045,7046,7047,7048,7049,7050,7051,7052,7053,7054,7055,
+7056,7057,7058,7059,7060,7061,7062,7063,7064,7065,7066,7067,7068,7069,7070,7071,7072,7073,7074,7075,7076,7077,7078,7079,7080,7081,7082,7083,7084,7085,7086,7087,7088,7089,7090,7091,7092,7093,7094,7095,7096,7097,7098,7099,7100,7101,7102,7103,7104,7105,7106,7107,7108,7109,7110,7111,7112,7113,7114,7115,7116,7117,7118,7119,7120,7121,7122,7123,7124,7125,7126,7127,7128,7129,7130,7131,7132,7133,7134,7135,7136,7137,7138,7139,7140,7141,7142,7143,7144,7145,7146,7147,7148,7149,7150,7151,7152,7153,7154,7155,7156,
+7157,7158,7159,7160,7161,7162,7163,7164,7165,7166,7167,7168,7169,7170,7171,7172,7173,7174,7175,7176,7177,7178,7179,7180,7181,7182,7183,7184,7185,7186,7187,7188,7189,7190,7191,7192,7193,7194,7195,7196,7197,7198,7199,7200,7201,7202,7203,7204,7205,7206,7207,1395,7208,7209,7210,7211,7212,7213,1717,7214,7215,7216,7217,7218,7219,7220,7221,7222,7223,7224,7225,7226,7227,7228,7229,7230,7231,7232,7233,7234,7235,7236,7237,7238,7239,7240,7241,7242,7243,7244,7245,7246,7247,7248,7249,7250,7251,7252,7253,7254,7255,
+7256,7257,7258,7259,7260,7261,7262,7263,7264,7265,7266,7267,7268,7269,7270,7271,7272,7273,7274,7275,7276,7277,7278,7279,7280,7281,7282,7283,7284,7285,7286,7287,7288,7289,7290,7291,7292,7293,7294,7295,7296,7297,7298,7299,7300,7301,7302,7303,7304,7305,7306,7307,7308,7309,7310,7311,7312,7313,1718,7314,7315,7316,7317,7318,7319,7320,7321,7322,7323,7324,7325,7326,7327,7328,7329,7330,7331,7332,7333,7334,7335,7336,7337,7338,7339,7340,7341,7342,7343,7344,7345,7346,7347,7348,7349,7350,7351,7352,7353,7354,7355,
+7356,7357,7358,7359,7360,7361,7362,7363,7364,7365,7366,7367,7368,7369,7370,7371,7372,7373,7374,7375,7376,7377,7378,7379,7380,7381,7382,7383,7384,7385,7386,7387,7388,7389,7390,7391,7392,7393,7394,7395,7396,7397,7398,7399,7400,7401,7402,7403,7404,7405,7406,7407,7408,7409,7410,7411,7412,7413,7414,7415,7416,7417,7418,7419,7420,7421,7422,7423,7424,7425,7426,7427,7428,7429,7430,7431,7432,7433,7434,7435,7436,7437,7438,7439,7440,7441,7442,7443,7444,7445,7446,7447,7448,7449,7450,7451,7452,7453,7454,7455,7456,
+7457,7458,7459,7460,7461,7462,7463,7464,7465,7466,7467,7468,7469,7470,7471,7472,7473,7474,7475,7476,7477,7478,7479,7480,7481,7482,7483,7484,7485,7486,7487,7488,7489,7490,7491,7492,7493,7494,7495,7496,7497,7498,7499,7500,7501,7502,7503,7504,7505,7506,7507,7508,7509,7510,7511,7512,7513,7514,7515,7516,7517,7518,7519,7520,7521,7522,7523,7524,7525,7526,7527,7528,7529,7530,7531,7532,7533,7534,7535,7536,7537,7538,7539,7540,7541,7542,7543,7544,7545,7546,7547,7548,7549,7550,7551,7552,7553,7554,7555,7556,7557,
+7558,7559,7560,7561,7562,7563,7564,7565,7566,7567,7568,7569,7570,7571,7572,7573,7574,7575,7576,7577,7578,7579,7580,7581,7582,7583,7584,7585,7586,7587,7588,7589,7590,7591,7592,7593,7594,7595,7596,7597,7598,7599,7600,7601,7602,7603,7604,7605,7606,7607,7608,7609,7610,7611,7612,7613,7614,7615,7616,7617,7618,7619,7620,7621,7622,7623,7624,7625,7626,7627,7628,7629,7630,7631,7632,7633,7634,7635,7636,7637,7638,7639,7640,7641,7642,7643,7644,7645,7646,7647,7648,7649,7650,7651,7652,7653,7654,7655,7656,7657,7658,
+7659,7660,7661,7662,7663,7664,7665,7666,7667,7668,7669,7670,7671,7672,7673,7674,7675,7676,7677,7678,7679,7680,7681,7682,7683,7684,7685,7686,7687,7688,7689,7690,7691,7692,7693,7694,7695,7696,7697,7698,7699,7700,7701,7702,7703,7704,7705,7706,7707,7708,7709,7710,7711,7712,7713,7714,7715,7716,7717,7718,7719,7720,7721,7722,7723,7724,7725,7726,7727,7728,7729,7730,7731,7732,7733,7734,7735,7736,7737,7738,7739,7740,7741,7742,7743,7744,7745,7746,7747,7748,7749,7750,7751,7752,7753,7754,7755,7756,7757,7758,7759,
+7760,7761,7762,7763,7764,7765,7766,7767,7768,7769,7770,7771,7772,7773,7774,7775,7776,7777,7778,7779,7780,7781,7782,7783,7784,7785,7786,7787,7788,7789,7790,7791,7792,7793,7794,7795,7796,7797,7798,7799,7800,7801,7802,7803,7804,7805,7806,7807,7808,7809,7810,7811,7812,7813,7814,7815,7816,7817,7818,7819,7820,7821,7822,7823,7824,7825,7826,7827,7828,7829,7830,7831,7832,7833,7834,7835,7836,7837,7838,7839,7840,7841,7842,7843,7844,7845,7846,7847,7848,7849,7850,7851,7852,7853,7854,7855,7856,7857,7858,7859,7860,
+7861,7862,7863,7864,7865,7866,7867,7868,7869,7870,7871,7872,7873,7874,7875,7876,7877,7878,7879,7880,7881,7882,7883,7884,7885,7886,7887,7888,7889,7890,7891,7892,7893,7894,7895,7896,7897,7898,7899,7900,7901,7902,7903,7904,7905,7906,7907,7908,7909,7910,7911,7912,7913,7914,7915,7916,7917,7918,7919,7920,7921,7922,7923,7924,7925,7926,7927,7928,7929,7930,7931,7932,7933,7934,7935,7936,7937,7938,7939,7940,7941,7942,7943,7944,7945,7946,7947,7948,7949,7950,7951,7952,7953,7954,7955,7956,7957,7958,7959,7960,7961,
+7962,7963,7964,7965,7966,7967,7968,7969,7970,7971,7972,7973,7974,7975,7976,7977,7978,7979,7980,7981,7982,7983,7984,7985,7986,7987,7988,7989,7990,7991,7992,7993,7994,7995,7996,7997,7998,7999,8E3,8001,8002,8003,8004,8005,8006,8007,8008,8009,8010,8011,8012,8013,8014,8015,8016,8017,8018,8019,8020,8021,8022,8023,8024,8025,8026,8027,8028,8029,8030,8031,8032,8033,8034,8035,8036,8037,8038,8039,8040,8041,8042,8043,8044,8045,8046,8047,8048,8049,8050,8051,8052,8053,8054,8055,8056,8057,8058,8059,8060,8061,8062,
+8063,8064,8065,8066,8067,8068,8069,8070,8071,8072,8073,8074,8075,8076,8077,8078,8079,8080,8081,8082,8083,8084,8085,8086,8087,8088,8089,8090,8091,8092,8093,8094,8095,8096,8097,8098,8099,8100,8101,8102,8103,8104,8105,8106,8107,8108,8109,8110,8111,8112,8113,8114,8115,8116,8117,8118,8119,8120,8121,8122,8123,8124,8125,8126,8127,8128,8129,8130,8131,8132,8133,8134,8135,8136,8137,8138,8139,8140,8141,8142,8143,8144,8145,8146,8147,8148,8149,8150,8151,8152,8153,8154,8155,8156,8157,8158,8159,8160,8161,8162,8163,
+8164,8165,8166,8167,8168,8169,8170,8171,8172,8173,8174,8175,8176,8177,8178,8179,8180,8181,8182,8183,8184,8185,8186,8187,8188,8189,8190,8191,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8203,8204,8205,8206,8207,8208,8209,8210,8211,8212,8213,8214,8215,8216,8217,8218,8219,8220,8221,8222,8223,8224,8225,8226,8227,8228,8229,8230,8231,8232,8233,8234,8235,8236,8237,8238,8239,8240,8241,8242,8243,8244,8245,8246,8247,8248,8249,8250,8251,8252,8253,8254,8255,8256,8257,8258,8259,8260,8261,8262,8263,8264,
+8265,8266,8267,8268,8269,8270,8271,8272,8273,8274,8275,8276,8277,8278,8279,8280,8281,8282,8283,8284,8285,8286,8287,8288,8289,8290,8291,8292,8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,8304,8305,8306,8307,8308,8309,8310,8311,8312,8313,8314,8315,8316,8317,8318,8319,8320,8321,8322,8323,8324,8325,8326,8327,8328,8329,8330,8331,8332,8333,8334,8335,8336,8337,8338,8339,8340,8341,8342,8343,8344,8345,8346,8347,8348,8349,8350,8351,8352,8353,8354,8355,8356,8357,8358,8359,8360,8361,8362,8363,8364,8365,
+8366,8367,8368,8369,8370,8371,8372,8373,8374,8375,8376,8377,8378,8379,8380,8381,8382,8383,8384,8385,8386,8387,8388,8389,8390,8391,8392,8393,8394,8395,8396,8397,8398,8399,8400,8401,8402,8403,8404,8405,8406,8407,8408,8409,8410,8411,8412,8413,8414,8415,8416,8417,8418,8419,8420,8421,8422,8423,8424,8425,8426,8427,8428,8429,8430,8431,8432,8433,8434,8435,8436,8437,8438,8439,8440,8441,8442,8443,8444,8445,8446,8447,8448,8449,8450,8451,8452,8453,8454,8455,8456,8457,8458,8459,8460,8461,8462,8463,8464,8465,8466,
+8467,8468,8469,8470,8471,8472,8473,8474,8475,8476,8477,8478,8479,8480,8481,8482,8483,8484,8485,8486,8487,8488,8489,8490,8491,8492,8493,8494,8495,8496,8497,8498,8499,8500,8501,8502,8503,8504,8505,8506,8507,8508,8509,8510,8511,8512,8513,8514,8515,8516,8517,8518,8519,8520,8521,8522,8523,8524,8525,8526,8527,8528,8529,8530,8531,8532,8533,8534,8535,8536,8537,8538,8539,8540,8541,8542,8543,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,8554,8555,8556,8557,8558,8559,8560,8561,8562,8563,8564,8565,8566,8567,
+8568,8569,8570,8571,8572,8573,8574,8575,8576,8577,8578,8579,8580,8581,8582,8583,8584,8585,8586,8587,8588,8589,8590,8591,8592,8593,8594,8595,8596,8597,8598,8599,8600,8601,8602,8603,8604,8605,8606,8607,8608,8609,8610,8611,8612,8613,8614,8615,8616,8617,8618,8619,8620,8621,8622,8623,8624,8625,8626,8627,8628,8629,8630,8631,8632,8633,8634,8635,8636,8637,8638,8639,8640,8641,8642,8643,8644,8645,8646,8647,8648,8649,8650,8651,8652,8653,8654,8655,8656,8657,8658,8659,8660,8661,8662,8663,8664,8665,8666,8667,8668,
+8669,8670,8671,8672,8673,8674,8675,8676,8677,8678,8679,8680,8681,8682,8683,8684,8685,8686,8687,8688,8689,8690,8691,8692,8693,8694,8695,8696,8697,8698,8699,8700,8701,8702,8703,8704,8705,8706,8707,8708,8709,8710,8711,8712,8713,8714,8715,8716,8717,8718,8719,8720,8721,8722,8723,8724,8725,8726,8727,8728,8729,8730,8731,8732,8733,8734,8735,8736,8737,8738,8739,8740,8741];!0},{"./init":21}],14:[function(b,a,d){!function(a){a.EUCKRProber=function(){a.MultiByteCharSetProber.apply(this);this.getCharsetName=function(){return"EUC-KR"};
+this._mCodingSM=new a.CodingStateMachine(a.EUCKRSMModel);this._mDistributionAnalyzer=new a.EUCKRDistributionAnalysis;this.reset()};a.EUCKRProber.prototype=new a.MultiByteCharSetProber}(b("./init"))},{"./init":21}],15:[function(b,a,d){b=b("./init");b.EUCTW_TYPICAL_DISTRIBUTION_RATIO=.75;b.EUCTW_TABLE_SIZE=8102;b.EUCTWCharToFreqOrder=[1,1800,1506,255,1431,198,9,82,6,7310,177,202,3615,1256,2808,110,3735,33,3241,261,76,44,2113,16,2931,2184,1176,659,3868,26,3404,2643,1198,3869,3313,4060,410,2211,302,590,
+361,1963,8,204,58,4296,7311,1931,63,7312,7313,317,1614,75,222,159,4061,2412,1480,7314,3500,3068,224,2809,3616,3,10,3870,1471,29,2774,1135,2852,1939,873,130,3242,1123,312,7315,4297,2051,507,252,682,7316,142,1914,124,206,2932,34,3501,3173,64,604,7317,2494,1976,1977,155,1990,645,641,1606,7318,3405,337,72,406,7319,80,630,238,3174,1509,263,939,1092,2644,756,1440,1094,3406,449,69,2969,591,179,2095,471,115,2034,1843,60,50,2970,134,806,1868,734,2035,3407,180,995,1607,156,537,2893,688,7320,319,1305,779,2144,
+514,2374,298,4298,359,2495,90,2707,1338,663,11,906,1099,2545,20,2436,182,532,1716,7321,732,1376,4062,1311,1420,3175,25,2312,1056,113,399,382,1949,242,3408,2467,529,3243,475,1447,3617,7322,117,21,656,810,1297,2295,2329,3502,7323,126,4063,706,456,150,613,4299,71,1118,2036,4064,145,3069,85,835,486,2114,1246,1426,428,727,1285,1015,800,106,623,303,1281,7324,2127,2354,347,3736,221,3503,3110,7325,1955,1153,4065,83,296,1199,3070,192,624,93,7326,822,1897,2810,3111,795,2064,991,1554,1542,1592,27,43,2853,859,
+139,1456,860,4300,437,712,3871,164,2392,3112,695,211,3017,2096,195,3872,1608,3504,3505,3618,3873,234,811,2971,2097,3874,2229,1441,3506,1615,2375,668,2076,1638,305,228,1664,4301,467,415,7327,262,2098,1593,239,108,300,200,1033,512,1247,2077,7328,7329,2173,3176,3619,2673,593,845,1062,3244,88,1723,2037,3875,1950,212,266,152,149,468,1898,4066,4302,77,187,7330,3018,37,5,2972,7331,3876,7332,7333,39,2517,4303,2894,3177,2078,55,148,74,4304,545,483,1474,1029,1665,217,1869,1531,3113,1104,2645,4067,24,172,3507,
+900,3877,3508,3509,4305,32,1408,2811,1312,329,487,2355,2247,2708,784,2674,4,3019,3314,1427,1788,188,109,499,7334,3620,1717,1789,888,1217,3020,4306,7335,3510,7336,3315,1520,3621,3878,196,1034,775,7337,7338,929,1815,249,439,38,7339,1063,7340,794,3879,1435,2296,46,178,3245,2065,7341,2376,7342,214,1709,4307,804,35,707,324,3622,1601,2546,140,459,4068,7343,7344,1365,839,272,978,2257,2572,3409,2128,1363,3623,1423,697,100,3071,48,70,1231,495,3114,2193,7345,1294,7346,2079,462,586,1042,3246,853,256,988,185,
+2377,3410,1698,434,1084,7347,3411,314,2615,2775,4308,2330,2331,569,2280,637,1816,2518,757,1162,1878,1616,3412,287,1577,2115,768,4309,1671,2854,3511,2519,1321,3737,909,2413,7348,4069,933,3738,7349,2052,2356,1222,4310,765,2414,1322,786,4311,7350,1919,1462,1677,2895,1699,7351,4312,1424,2437,3115,3624,2590,3316,1774,1940,3413,3880,4070,309,1369,1130,2812,364,2230,1653,1299,3881,3512,3882,3883,2646,525,1085,3021,902,2E3,1475,964,4313,421,1844,1415,1057,2281,940,1364,3116,376,4314,4315,1381,7,2520,983,
+2378,336,1710,2675,1845,321,3414,559,1131,3022,2742,1808,1132,1313,265,1481,1857,7352,352,1203,2813,3247,167,1089,420,2814,776,792,1724,3513,4071,2438,3248,7353,4072,7354,446,229,333,2743,901,3739,1200,1557,4316,2647,1920,395,2744,2676,3740,4073,1835,125,916,3178,2616,4317,7355,7356,3741,7357,7358,7359,4318,3117,3625,1133,2547,1757,3415,1510,2313,1409,3514,7360,2145,438,2591,2896,2379,3317,1068,958,3023,461,311,2855,2677,4074,1915,3179,4075,1978,383,750,2745,2617,4076,274,539,385,1278,1442,7361,1154,
+1964,384,561,210,98,1295,2548,3515,7362,1711,2415,1482,3416,3884,2897,1257,129,7363,3742,642,523,2776,2777,2648,7364,141,2231,1333,68,176,441,876,907,4077,603,2592,710,171,3417,404,549,18,3118,2393,1410,3626,1666,7365,3516,4319,2898,4320,7366,2973,368,7367,146,366,99,871,3627,1543,748,807,1586,1185,22,2258,379,3743,3180,7368,3181,505,1941,2618,1991,1382,2314,7369,380,2357,218,702,1817,1248,3418,3024,3517,3318,3249,7370,2974,3628,930,3250,3744,7371,59,7372,585,601,4078,497,3419,1112,1314,4321,1801,
+7373,1223,1472,2174,7374,749,1836,690,1899,3745,1772,3885,1476,429,1043,1790,2232,2116,917,4079,447,1086,1629,7375,556,7376,7377,2020,1654,844,1090,105,550,966,1758,2815,1008,1782,686,1095,7378,2282,793,1602,7379,3518,2593,4322,4080,2933,2297,4323,3746,980,2496,544,353,527,4324,908,2678,2899,7380,381,2619,1942,1348,7381,1341,1252,560,3072,7382,3420,2856,7383,2053,973,886,2080,143,4325,7384,7385,157,3886,496,4081,57,840,540,2038,4326,4327,3421,2117,1445,970,2259,1748,1965,2081,4082,3119,1234,1775,
+3251,2816,3629,773,1206,2129,1066,2039,1326,3887,1738,1725,4083,279,3120,51,1544,2594,423,1578,2130,2066,173,4328,1879,7386,7387,1583,264,610,3630,4329,2439,280,154,7388,7389,7390,1739,338,1282,3073,693,2857,1411,1074,3747,2440,7391,4330,7392,7393,1240,952,2394,7394,2900,1538,2679,685,1483,4084,2468,1436,953,4085,2054,4331,671,2395,79,4086,2441,3252,608,567,2680,3422,4087,4088,1691,393,1261,1791,2396,7395,4332,7396,7397,7398,7399,1383,1672,3748,3182,1464,522,1119,661,1150,216,675,4333,3888,1432,3519,
+609,4334,2681,2397,7400,7401,7402,4089,3025,0,7403,2469,315,231,2442,301,3319,4335,2380,7404,233,4090,3631,1818,4336,4337,7405,96,1776,1315,2082,7406,257,7407,1809,3632,2709,1139,1819,4091,2021,1124,2163,2778,1777,2649,7408,3074,363,1655,3183,7409,2975,7410,7411,7412,3889,1567,3890,718,103,3184,849,1443,341,3320,2934,1484,7413,1712,127,67,339,4092,2398,679,1412,821,7414,7415,834,738,351,2976,2146,846,235,1497,1880,418,1992,3749,2710,186,1100,2147,2746,3520,1545,1355,2935,2858,1377,583,3891,4093,2573,
+2977,7416,1298,3633,1078,2549,3634,2358,78,3750,3751,267,1289,2099,2001,1594,4094,348,369,1274,2194,2175,1837,4338,1820,2817,3635,2747,2283,2002,4339,2936,2748,144,3321,882,4340,3892,2749,3423,4341,2901,7417,4095,1726,320,7418,3893,3026,788,2978,7419,2818,1773,1327,2859,3894,2819,7420,1306,4342,2003,1700,3752,3521,2359,2650,787,2022,506,824,3636,534,323,4343,1044,3322,2023,1900,946,3424,7421,1778,1500,1678,7422,1881,4344,165,243,4345,3637,2521,123,683,4096,764,4346,36,3895,1792,589,2902,816,626,1667,
+3027,2233,1639,1555,1622,3753,3896,7423,3897,2860,1370,1228,1932,891,2083,2903,304,4097,7424,292,2979,2711,3522,691,2100,4098,1115,4347,118,662,7425,611,1156,854,2381,1316,2861,2,386,515,2904,7426,7427,3253,868,2234,1486,855,2651,785,2212,3028,7428,1040,3185,3523,7429,3121,448,7430,1525,7431,2164,4348,7432,3754,7433,4099,2820,3524,3122,503,818,3898,3123,1568,814,676,1444,306,1749,7434,3755,1416,1030,197,1428,805,2821,1501,4349,7435,7436,7437,1993,7438,4350,7439,7440,2195,13,2779,3638,2980,3124,1229,
+1916,7441,3756,2131,7442,4100,4351,2399,3525,7443,2213,1511,1727,1120,7444,7445,646,3757,2443,307,7446,7447,1595,3186,7448,7449,7450,3639,1113,1356,3899,1465,2522,2523,7451,519,7452,128,2132,92,2284,1979,7453,3900,1512,342,3125,2196,7454,2780,2214,1980,3323,7455,290,1656,1317,789,827,2360,7456,3758,4352,562,581,3901,7457,401,4353,2248,94,4354,1399,2781,7458,1463,2024,4355,3187,1943,7459,828,1105,4101,1262,1394,7460,4102,605,4356,7461,1783,2862,7462,2822,819,2101,578,2197,2937,7463,1502,436,3254,4103,
+3255,2823,3902,2905,3425,3426,7464,2712,2315,7465,7466,2332,2067,23,4357,193,826,3759,2102,699,1630,4104,3075,390,1793,1064,3526,7467,1579,3076,3077,1400,7468,4105,1838,1640,2863,7469,4358,4359,137,4106,598,3078,1966,780,104,974,2938,7470,278,899,253,402,572,504,493,1339,7471,3903,1275,4360,2574,2550,7472,3640,3029,3079,2249,565,1334,2713,863,41,7473,7474,4361,7475,1657,2333,19,463,2750,4107,606,7476,2981,3256,1087,2084,1323,2652,2982,7477,1631,1623,1750,4108,2682,7478,2864,791,2714,2653,2334,232,
+2416,7479,2983,1498,7480,2654,2620,755,1366,3641,3257,3126,2025,1609,119,1917,3427,862,1026,4109,7481,3904,3760,4362,3905,4363,2260,1951,2470,7482,1125,817,4110,4111,3906,1513,1766,2040,1487,4112,3030,3258,2824,3761,3127,7483,7484,1507,7485,2683,733,40,1632,1106,2865,345,4113,841,2524,230,4364,2984,1846,3259,3428,7486,1263,986,3429,7487,735,879,254,1137,857,622,1300,1180,1388,1562,3907,3908,2939,967,2751,2655,1349,592,2133,1692,3324,2985,1994,4114,1679,3909,1901,2185,7488,739,3642,2715,1296,1290,
+7489,4115,2198,2199,1921,1563,2595,2551,1870,2752,2986,7490,435,7491,343,1108,596,17,1751,4365,2235,3430,3643,7492,4366,294,3527,2940,1693,477,979,281,2041,3528,643,2042,3644,2621,2782,2261,1031,2335,2134,2298,3529,4367,367,1249,2552,7493,3530,7494,4368,1283,3325,2004,240,1762,3326,4369,4370,836,1069,3128,474,7495,2148,2525,268,3531,7496,3188,1521,1284,7497,1658,1546,4116,7498,3532,3533,7499,4117,3327,2684,1685,4118,961,1673,2622,190,2005,2200,3762,4371,4372,7500,570,2497,3645,1490,7501,4373,2623,
+3260,1956,4374,584,1514,396,1045,1944,7502,4375,1967,2444,7503,7504,4376,3910,619,7505,3129,3261,215,2006,2783,2553,3189,4377,3190,4378,763,4119,3763,4379,7506,7507,1957,1767,2941,3328,3646,1174,452,1477,4380,3329,3130,7508,2825,1253,2382,2186,1091,2285,4120,492,7509,638,1169,1824,2135,1752,3911,648,926,1021,1324,4381,520,4382,997,847,1007,892,4383,3764,2262,1871,3647,7510,2400,1784,4384,1952,2942,3080,3191,1728,4121,2043,3648,4385,2007,1701,3131,1551,30,2263,4122,7511,2026,4386,3534,7512,501,7513,
+4123,594,3431,2165,1821,3535,3432,3536,3192,829,2826,4124,7514,1680,3132,1225,4125,7515,3262,4387,4126,3133,2336,7516,4388,4127,7517,3912,3913,7518,1847,2383,2596,3330,7519,4389,374,3914,652,4128,4129,375,1140,798,7520,7521,7522,2361,4390,2264,546,1659,138,3031,2445,4391,7523,2250,612,1848,910,796,3765,1740,1371,825,3766,3767,7524,2906,2554,7525,692,444,3032,2624,801,4392,4130,7526,1491,244,1053,3033,4131,4132,340,7527,3915,1041,2987,293,1168,87,1357,7528,1539,959,7529,2236,721,694,4133,3768,219,
+1478,644,1417,3331,2656,1413,1401,1335,1389,3916,7530,7531,2988,2362,3134,1825,730,1515,184,2827,66,4393,7532,1660,2943,246,3332,378,1457,226,3433,975,3917,2944,1264,3537,674,696,7533,163,7534,1141,2417,2166,713,3538,3333,4394,3918,7535,7536,1186,15,7537,1079,1070,7538,1522,3193,3539,276,1050,2716,758,1126,653,2945,3263,7539,2337,889,3540,3919,3081,2989,903,1250,4395,3920,3434,3541,1342,1681,1718,766,3264,286,89,2946,3649,7540,1713,7541,2597,3334,2990,7542,2947,2215,3194,2866,7543,4396,2498,2526,
+181,387,1075,3921,731,2187,3335,7544,3265,310,313,3435,2299,770,4134,54,3034,189,4397,3082,3769,3922,7545,1230,1617,1849,355,3542,4135,4398,3336,111,4136,3650,1350,3135,3436,3035,4137,2149,3266,3543,7546,2784,3923,3924,2991,722,2008,7547,1071,247,1207,2338,2471,1378,4399,2009,864,1437,1214,4400,373,3770,1142,2216,667,4401,442,2753,2555,3771,3925,1968,4138,3267,1839,837,170,1107,934,1336,1882,7548,7549,2118,4139,2828,743,1569,7550,4402,4140,582,2384,1418,3437,7551,1802,7552,357,1395,1729,3651,3268,
+2418,1564,2237,7553,3083,3772,1633,4403,1114,2085,4141,1532,7554,482,2446,4404,7555,7556,1492,833,1466,7557,2717,3544,1641,2829,7558,1526,1272,3652,4142,1686,1794,416,2556,1902,1953,1803,7559,3773,2785,3774,1159,2316,7560,2867,4405,1610,1584,3036,2419,2754,443,3269,1163,3136,7561,7562,3926,7563,4143,2499,3037,4406,3927,3137,2103,1647,3545,2010,1872,4144,7564,4145,431,3438,7565,250,97,81,4146,7566,1648,1850,1558,160,848,7567,866,740,1694,7568,2201,2830,3195,4147,4407,3653,1687,950,2472,426,469,3196,
+3654,3655,3928,7569,7570,1188,424,1995,861,3546,4148,3775,2202,2685,168,1235,3547,4149,7571,2086,1674,4408,3337,3270,220,2557,1009,7572,3776,670,2992,332,1208,717,7573,7574,3548,2447,3929,3338,7575,513,7576,1209,2868,3339,3138,4409,1080,7577,7578,7579,7580,2527,3656,3549,815,1587,3930,3931,7581,3550,3439,3777,1254,4410,1328,3038,1390,3932,1741,3933,3778,3934,7582,236,3779,2448,3271,7583,7584,3657,3780,1273,3781,4411,7585,308,7586,4412,245,4413,1851,2473,1307,2575,430,715,2136,2449,7587,270,199,2869,
+3935,7588,3551,2718,1753,761,1754,725,1661,1840,4414,3440,3658,7589,7590,587,14,3272,227,2598,326,480,2265,943,2755,3552,291,650,1883,7591,1702,1226,102,1547,62,3441,904,4415,3442,1164,4150,7592,7593,1224,1548,2756,391,498,1493,7594,1386,1419,7595,2055,1177,4416,813,880,1081,2363,566,1145,4417,2286,1001,1035,2558,2599,2238,394,1286,7596,7597,2068,7598,86,1494,1730,3936,491,1588,745,897,2948,843,3340,3937,2757,2870,3273,1768,998,2217,2069,397,1826,1195,1969,3659,2993,3341,284,7599,3782,2500,2137,2119,
+1903,7600,3938,2150,3939,4151,1036,3443,1904,114,2559,4152,209,1527,7601,7602,2949,2831,2625,2385,2719,3139,812,2560,7603,3274,7604,1559,737,1884,3660,1210,885,28,2686,3553,3783,7605,4153,1004,1779,4418,7606,346,1981,2218,2687,4419,3784,1742,797,1642,3940,1933,1072,1384,2151,896,3941,3275,3661,3197,2871,3554,7607,2561,1958,4420,2450,1785,7608,7609,7610,3942,4154,1005,1308,3662,4155,2720,4421,4422,1528,2600,161,1178,4156,1982,987,4423,1101,4157,631,3943,1157,3198,2420,1343,1241,1016,2239,2562,372,
+877,2339,2501,1160,555,1934,911,3944,7611,466,1170,169,1051,2907,2688,3663,2474,2994,1182,2011,2563,1251,2626,7612,992,2340,3444,1540,2721,1201,2070,2401,1996,2475,7613,4424,528,1922,2188,1503,1873,1570,2364,3342,3276,7614,557,1073,7615,1827,3445,2087,2266,3140,3039,3084,767,3085,2786,4425,1006,4158,4426,2341,1267,2176,3664,3199,778,3945,3200,2722,1597,2657,7616,4427,7617,3446,7618,7619,7620,3277,2689,1433,3278,131,95,1504,3946,723,4159,3141,1841,3555,2758,2189,3947,2027,2104,3665,7621,2995,3948,
+1218,7622,3343,3201,3949,4160,2576,248,1634,3785,912,7623,2832,3666,3040,3786,654,53,7624,2996,7625,1688,4428,777,3447,1032,3950,1425,7626,191,820,2120,2833,971,4429,931,3202,135,664,783,3787,1997,772,2908,1935,3951,3788,4430,2909,3203,282,2723,640,1372,3448,1127,922,325,3344,7627,7628,711,2044,7629,7630,3952,2219,2787,1936,3953,3345,2220,2251,3789,2300,7631,4431,3790,1258,3279,3954,3204,2138,2950,3955,3956,7632,2221,258,3205,4432,101,1227,7633,3280,1755,7634,1391,3281,7635,2910,2056,893,7636,7637,
+7638,1402,4161,2342,7639,7640,3206,3556,7641,7642,878,1325,1780,2788,4433,259,1385,2577,744,1183,2267,4434,7643,3957,2502,7644,684,1024,4162,7645,472,3557,3449,1165,3282,3958,3959,322,2152,881,455,1695,1152,1340,660,554,2153,4435,1058,4436,4163,830,1065,3346,3960,4437,1923,7646,1703,1918,7647,932,2268,122,7648,4438,947,677,7649,3791,2627,297,1905,1924,2269,4439,2317,3283,7650,7651,4164,7652,4165,84,4166,112,989,7653,547,1059,3961,701,3558,1019,7654,4167,7655,3450,942,639,457,2301,2451,993,2951,407,
+851,494,4440,3347,927,7656,1237,7657,2421,3348,573,4168,680,921,2911,1279,1874,285,790,1448,1983,719,2167,7658,7659,4441,3962,3963,1649,7660,1541,563,7661,1077,7662,3349,3041,3451,511,2997,3964,3965,3667,3966,1268,2564,3350,3207,4442,4443,7663,535,1048,1276,1189,2912,2028,3142,1438,1373,2834,2952,1134,2012,7664,4169,1238,2578,3086,1259,7665,700,7666,2953,3143,3668,4170,7667,4171,1146,1875,1906,4444,2601,3967,781,2422,132,1589,203,147,273,2789,2402,898,1786,2154,3968,3969,7668,3792,2790,7669,7670,
+4445,4446,7671,3208,7672,1635,3793,965,7673,1804,2690,1516,3559,1121,1082,1329,3284,3970,1449,3794,65,1128,2835,2913,2759,1590,3795,7674,7675,12,2658,45,976,2579,3144,4447,517,2528,1013,1037,3209,7676,3796,2836,7677,3797,7678,3452,7679,2602,614,1998,2318,3798,3087,2724,2628,7680,2580,4172,599,1269,7681,1810,3669,7682,2691,3088,759,1060,489,1805,3351,3285,1358,7683,7684,2386,1387,1215,2629,2252,490,7685,7686,4173,1759,2387,2343,7687,4448,3799,1907,3971,2630,1806,3210,4449,3453,3286,2760,2344,874,7688,
+7689,3454,3670,1858,91,2914,3671,3042,3800,4450,7690,3145,3972,2659,7691,3455,1202,1403,3801,2954,2529,1517,2503,4451,3456,2504,7692,4452,7693,2692,1885,1495,1731,3973,2365,4453,7694,2029,7695,7696,3974,2693,1216,237,2581,4174,2319,3975,3802,4454,4455,2694,3560,3457,445,4456,7697,7698,7699,7700,2761,61,3976,3672,1822,3977,7701,687,2045,935,925,405,2660,703,1096,1859,2725,4457,3978,1876,1367,2695,3352,918,2105,1781,2476,334,3287,1611,1093,4458,564,3146,3458,3673,3353,945,2631,2057,4459,7702,1925,872,
+4175,7703,3459,2696,3089,349,4176,3674,3979,4460,3803,4177,3675,2155,3980,4461,4462,4178,4463,2403,2046,782,3981,400,251,4179,1624,7704,7705,277,3676,299,1265,476,1191,3804,2121,4180,4181,1109,205,7706,2582,1E3,2156,3561,1860,7707,7708,7709,4464,7710,4465,2565,107,2477,2157,3982,3460,3147,7711,1533,541,1301,158,753,4182,2872,3562,7712,1696,370,1088,4183,4466,3563,579,327,440,162,2240,269,1937,1374,3461,968,3043,56,1396,3090,2106,3288,3354,7713,1926,2158,4467,2998,7714,3564,7715,7716,3677,4468,2478,
+7717,2791,7718,1650,4469,7719,2603,7720,7721,3983,2661,3355,1149,3356,3984,3805,3985,7722,1076,49,7723,951,3211,3289,3290,450,2837,920,7724,1811,2792,2366,4184,1908,1138,2367,3806,3462,7725,3212,4470,1909,1147,1518,2423,4471,3807,7726,4472,2388,2604,260,1795,3213,7727,7728,3808,3291,708,7729,3565,1704,7730,3566,1351,1618,3357,2999,1886,944,4185,3358,4186,3044,3359,4187,7731,3678,422,413,1714,3292,500,2058,2345,4188,2479,7732,1344,1910,954,7733,1668,7734,7735,3986,2404,4189,3567,3809,4190,7736,2302,
+1318,2505,3091,133,3092,2873,4473,629,31,2838,2697,3810,4474,850,949,4475,3987,2955,1732,2088,4191,1496,1852,7737,3988,620,3214,981,1242,3679,3360,1619,3680,1643,3293,2139,2452,1970,1719,3463,2168,7738,3215,7739,7740,3361,1828,7741,1277,4476,1565,2047,7742,1636,3568,3093,7743,869,2839,655,3811,3812,3094,3989,3E3,3813,1310,3569,4477,7744,7745,7746,1733,558,4478,3681,335,1549,3045,1756,4192,3682,1945,3464,1829,1291,1192,470,2726,2107,2793,913,1054,3990,7747,1027,7748,3046,3991,4479,982,2662,3362,3148,
+3465,3216,3217,1946,2794,7749,571,4480,7750,1830,7751,3570,2583,1523,2424,7752,2089,984,4481,3683,1959,7753,3684,852,923,2795,3466,3685,969,1519,999,2048,2320,1705,7754,3095,615,1662,151,597,3992,2405,2321,1049,275,4482,3686,4193,568,3687,3571,2480,4194,3688,7755,2425,2270,409,3218,7756,1566,2874,3467,1002,769,2840,194,2090,3149,3689,2222,3294,4195,628,1505,7757,7758,1763,2177,3001,3993,521,1161,2584,1787,2203,2406,4483,3994,1625,4196,4197,412,42,3096,464,7759,2632,4484,3363,1760,1571,2875,3468,2530,
+1219,2204,3814,2633,2140,2368,4485,4486,3295,1651,3364,3572,7760,7761,3573,2481,3469,7762,3690,7763,7764,2271,2091,460,7765,4487,7766,3002,962,588,3574,289,3219,2634,1116,52,7767,3047,1796,7768,7769,7770,1467,7771,1598,1143,3691,4198,1984,1734,1067,4488,1280,3365,465,4489,1572,510,7772,1927,2241,1812,1644,3575,7773,4490,3692,7774,7775,2663,1573,1534,7776,7777,4199,536,1807,1761,3470,3815,3150,2635,7778,7779,7780,4491,3471,2915,1911,2796,7781,3296,1122,377,3220,7782,360,7783,7784,4200,1529,551,7785,
+2059,3693,1769,2426,7786,2916,4201,3297,3097,2322,2108,2030,4492,1404,136,1468,1479,672,1171,3221,2303,271,3151,7787,2762,7788,2049,678,2727,865,1947,4493,7789,2013,3995,2956,7790,2728,2223,1397,3048,3694,4494,4495,1735,2917,3366,3576,7791,3816,509,2841,2453,2876,3817,7792,7793,3152,3153,4496,4202,2531,4497,2304,1166,1010,552,681,1887,7794,7795,2957,2958,3996,1287,1596,1861,3154,358,453,736,175,478,1117,905,1167,1097,7796,1853,1530,7797,1706,7798,2178,3472,2287,3695,3473,3577,4203,2092,4204,7799,
+3367,1193,2482,4205,1458,2190,2205,1862,1888,1421,3298,2918,3049,2179,3474,595,2122,7800,3997,7801,7802,4206,1707,2636,223,3696,1359,751,3098,183,3475,7803,2797,3003,419,2369,633,704,3818,2389,241,7804,7805,7806,838,3004,3697,2272,2763,2454,3819,1938,2050,3998,1309,3099,2242,1181,7807,1136,2206,3820,2370,1446,4207,2305,4498,7808,7809,4208,1055,2605,484,3698,7810,3999,625,4209,2273,3368,1499,4210,4E3,7811,4001,4211,3222,2274,2275,3476,7812,7813,2764,808,2606,3699,3369,4002,4212,3100,2532,526,3370,
+3821,4213,955,7814,1620,4214,2637,2427,7815,1429,3700,1669,1831,994,928,7816,3578,1260,7817,7818,7819,1948,2288,741,2919,1626,4215,2729,2455,867,1184,362,3371,1392,7820,7821,4003,4216,1770,1736,3223,2920,4499,4500,1928,2698,1459,1158,7822,3050,3372,2877,1292,1929,2506,2842,3701,1985,1187,2071,2014,2607,4217,7823,2566,2507,2169,3702,2483,3299,7824,3703,4501,7825,7826,666,1003,3005,1022,3579,4218,7827,4502,1813,2253,574,3822,1603,295,1535,705,3823,4219,283,858,417,7828,7829,3224,4503,4504,3051,1220,
+1889,1046,2276,2456,4004,1393,1599,689,2567,388,4220,7830,2484,802,7831,2798,3824,2060,1405,2254,7832,4505,3825,2109,1052,1345,3225,1585,7833,809,7834,7835,7836,575,2730,3477,956,1552,1469,1144,2323,7837,2324,1560,2457,3580,3226,4005,616,2207,3155,2180,2289,7838,1832,7839,3478,4506,7840,1319,3704,3705,1211,3581,1023,3227,1293,2799,7841,7842,7843,3826,607,2306,3827,762,2878,1439,4221,1360,7844,1485,3052,7845,4507,1038,4222,1450,2061,2638,4223,1379,4508,2585,7846,7847,4224,1352,1414,2325,2921,1172,
+7848,7849,3828,3829,7850,1797,1451,7851,7852,7853,7854,2922,4006,4007,2485,2346,411,4008,4009,3582,3300,3101,4509,1561,2664,1452,4010,1375,7855,7856,47,2959,316,7857,1406,1591,2923,3156,7858,1025,2141,3102,3157,354,2731,884,2224,4225,2407,508,3706,726,3583,996,2428,3584,729,7859,392,2191,1453,4011,4510,3707,7860,7861,2458,3585,2608,1675,2800,919,2347,2960,2348,1270,4511,4012,73,7862,7863,647,7864,3228,2843,2255,1550,1346,3006,7865,1332,883,3479,7866,7867,7868,7869,3301,2765,7870,1212,831,1347,4226,
+4512,2326,3830,1863,3053,720,3831,4513,4514,3832,7871,4227,7872,7873,4515,7874,7875,1798,4516,3708,2609,4517,3586,1645,2371,7876,7877,2924,669,2208,2665,2429,7878,2879,7879,7880,1028,3229,7881,4228,2408,7882,2256,1353,7883,7884,4518,3158,518,7885,4013,7886,4229,1960,7887,2142,4230,7888,7889,3007,2349,2350,3833,516,1833,1454,4014,2699,4231,4519,2225,2610,1971,1129,3587,7890,2766,7891,2961,1422,577,1470,3008,1524,3373,7892,7893,432,4232,3054,3480,7894,2586,1455,2508,2226,1972,1175,7895,1020,2732,4015,
+3481,4520,7896,2733,7897,1743,1361,3055,3482,2639,4016,4233,4521,2290,895,924,4234,2170,331,2243,3056,166,1627,3057,1098,7898,1232,2880,2227,3374,4522,657,403,1196,2372,542,3709,3375,1600,4235,3483,7899,4523,2767,3230,576,530,1362,7900,4524,2533,2666,3710,4017,7901,842,3834,7902,2801,2031,1014,4018,213,2700,3376,665,621,4236,7903,3711,2925,2430,7904,2431,3302,3588,3377,7905,4237,2534,4238,4525,3589,1682,4239,3484,1380,7906,724,2277,600,1670,7907,1337,1233,4526,3103,2244,7908,1621,4527,7909,651,4240,
+7910,1612,4241,2611,7911,2844,7912,2734,2307,3058,7913,716,2459,3059,174,1255,2701,4019,3590,548,1320,1398,728,4020,1574,7914,1890,1197,3060,4021,7915,3061,3062,3712,3591,3713,747,7916,635,4242,4528,7917,7918,7919,4243,7920,7921,4529,7922,3378,4530,2432,451,7923,3714,2535,2072,4244,2735,4245,4022,7924,1764,4531,7925,4246,350,7926,2278,2390,2486,7927,4247,4023,2245,1434,4024,488,4532,458,4248,4025,3715,771,1330,2391,3835,2568,3159,2159,2409,1553,2667,3160,4249,7928,2487,2881,2612,1720,2702,4250,3379,
+4533,7929,2536,4251,7930,3231,4252,2768,7931,2015,2736,7932,1155,1017,3716,3836,7933,3303,2308,201,1864,4253,1430,7934,4026,7935,7936,7937,7938,7939,4254,1604,7940,414,1865,371,2587,4534,4535,3485,2016,3104,4536,1708,960,4255,887,389,2171,1536,1663,1721,7941,2228,4027,2351,2926,1580,7942,7943,7944,1744,7945,2537,4537,4538,7946,4539,7947,2073,7948,7949,3592,3380,2882,4256,7950,4257,2640,3381,2802,673,2703,2460,709,3486,4028,3593,4258,7951,1148,502,634,7952,7953,1204,4540,3594,1575,4541,2613,3717,7954,
+3718,3105,948,3232,121,1745,3837,1110,7955,4259,3063,2509,3009,4029,3719,1151,1771,3838,1488,4030,1986,7956,2433,3487,7957,7958,2093,7959,4260,3839,1213,1407,2803,531,2737,2538,3233,1011,1537,7960,2769,4261,3106,1061,7961,3720,3721,1866,2883,7962,2017,120,4262,4263,2062,3595,3234,2309,3840,2668,3382,1954,4542,7963,7964,3488,1047,2704,1266,7965,1368,4543,2845,649,3383,3841,2539,2738,1102,2846,2669,7966,7967,1999,7968,1111,3596,2962,7969,2488,3842,3597,2804,1854,3384,3722,7970,7971,3385,2410,2884,3304,
+3235,3598,7972,2569,7973,3599,2805,4031,1460,856,7974,3600,7975,2885,2963,7976,2886,3843,7977,4264,632,2510,875,3844,1697,3845,2291,7978,7979,4544,3010,1239,580,4545,4265,7980,914,936,2074,1190,4032,1039,2123,7981,7982,7983,3386,1473,7984,1354,4266,3846,7985,2172,3064,4033,915,3305,4267,4268,3306,1605,1834,7986,2739,398,3601,4269,3847,4034,328,1912,2847,4035,3848,1331,4270,3011,937,4271,7987,3602,4036,4037,3387,2160,4546,3388,524,742,538,3065,1012,7988,7989,3849,2461,7990,658,1103,225,3850,7991,7992,
+4547,7993,4548,7994,3236,1243,7995,4038,963,2246,4549,7996,2705,3603,3161,7997,7998,2588,2327,7999,4550,8E3,8001,8002,3489,3307,957,3389,2540,2032,1930,2927,2462,870,2018,3604,1746,2770,2771,2434,2463,8003,3851,8004,3723,3107,3724,3490,3390,3725,8005,1179,3066,8006,3162,2373,4272,3726,2541,3163,3108,2740,4039,8007,3391,1556,2542,2292,977,2887,2033,4040,1205,3392,8008,1765,3393,3164,2124,1271,1689,714,4551,3491,8009,2328,3852,533,4273,3605,2181,617,8010,2464,3308,3492,2310,8011,8012,3165,8013,8014,
+3853,1987,618,427,2641,3493,3394,8015,8016,1244,1690,8017,2806,4274,4552,8018,3494,8019,8020,2279,1576,473,3606,4275,3395,972,8021,3607,8022,3067,8023,8024,4553,4554,8025,3727,4041,4042,8026,153,4555,356,8027,1891,2888,4276,2143,408,803,2352,8028,3854,8029,4277,1646,2570,2511,4556,4557,3855,8030,3856,4278,8031,2411,3396,752,8032,8033,1961,2964,8034,746,3012,2465,8035,4279,3728,698,4558,1892,4280,3608,2543,4559,3609,3857,8036,3166,3397,8037,1823,1302,4043,2706,3858,1973,4281,8038,4282,3167,823,1303,
+1288,1236,2848,3495,4044,3398,774,3859,8039,1581,4560,1304,2849,3860,4561,8040,2435,2161,1083,3237,4283,4045,4284,344,1173,288,2311,454,1683,8041,8042,1461,4562,4046,2589,8043,8044,4563,985,894,8045,3399,3168,8046,1913,2928,3729,1988,8047,2110,1974,8048,4047,8049,2571,1194,425,8050,4564,3169,1245,3730,4285,8051,8052,2850,8053,636,4565,1855,3861,760,1799,8054,4286,2209,1508,4566,4048,1893,1684,2293,8055,8056,8057,4287,4288,2210,479,8058,8059,832,8060,4049,2489,8061,2965,2490,3731,990,3109,627,1814,
+2642,4289,1582,4290,2125,2111,3496,4567,8062,799,4291,3170,8063,4568,2112,1737,3013,1018,543,754,4292,3309,1676,4569,4570,4050,8064,1489,8065,3497,8066,2614,2889,4051,8067,8068,2966,8069,8070,8071,8072,3171,4571,4572,2182,1722,8073,3238,3239,1842,3610,1715,481,365,1975,1856,8074,8075,1962,2491,4573,8076,2126,3611,3240,433,1894,2063,2075,8077,602,2741,8078,8079,8080,8081,8082,3014,1628,3400,8083,3172,4574,4052,2890,4575,2512,8084,2544,2772,8085,8086,8087,3310,4576,2891,8088,4577,8089,2851,4578,4579,
+1221,2967,4053,2513,8090,8091,8092,1867,1989,8093,8094,8095,1895,8096,8097,4580,1896,4054,318,8098,2094,4055,4293,8099,8100,485,8101,938,3862,553,2670,116,8102,3863,3612,8103,3498,2671,2773,3401,3311,2807,8104,3613,2929,4056,1747,2930,2968,8105,8106,207,8107,8108,2672,4581,2514,8109,3015,890,3614,3864,8110,1877,3732,3402,8111,2183,2353,3403,1652,8112,8113,8114,941,2294,208,3499,4057,2019,330,4294,3865,2892,2492,3733,4295,8115,8116,8117,8118,2515,1613,4582,8119,3312,3866,2516,8120,4058,8121,1637,4059,
+2466,4583,3867,8122,2493,3016,3734,8123,8124,2192,8125,8126,2162,8127,8128,8129,8130,8131,8132,8133,8134,8135,8136,8137,8138,8139,8140,8141,8142,8143,8144,8145,8146,8147,8148,8149,8150,8151,8152,8153,8154,8155,8156,8157,8158,8159,8160,8161,8162,8163,8164,8165,8166,8167,8168,8169,8170,8171,8172,8173,8174,8175,8176,8177,8178,8179,8180,8181,8182,8183,8184,8185,8186,8187,8188,8189,8190,8191,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8203,8204,8205,8206,8207,8208,8209,8210,8211,8212,8213,8214,
+8215,8216,8217,8218,8219,8220,8221,8222,8223,8224,8225,8226,8227,8228,8229,8230,8231,8232,8233,8234,8235,8236,8237,8238,8239,8240,8241,8242,8243,8244,8245,8246,8247,8248,8249,8250,8251,8252,8253,8254,8255,8256,8257,8258,8259,8260,8261,8262,8263,8264,8265,8266,8267,8268,8269,8270,8271,8272,8273,8274,8275,8276,8277,8278,8279,8280,8281,8282,8283,8284,8285,8286,8287,8288,8289,8290,8291,8292,8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,8304,8305,8306,8307,8308,8309,8310,8311,8312,8313,8314,8315,
+8316,8317,8318,8319,8320,8321,8322,8323,8324,8325,8326,8327,8328,8329,8330,8331,8332,8333,8334,8335,8336,8337,8338,8339,8340,8341,8342,8343,8344,8345,8346,8347,8348,8349,8350,8351,8352,8353,8354,8355,8356,8357,8358,8359,8360,8361,8362,8363,8364,8365,8366,8367,8368,8369,8370,8371,8372,8373,8374,8375,8376,8377,8378,8379,8380,8381,8382,8383,8384,8385,8386,8387,8388,8389,8390,8391,8392,8393,8394,8395,8396,8397,8398,8399,8400,8401,8402,8403,8404,8405,8406,8407,8408,8409,8410,8411,8412,8413,8414,8415,8416,
+8417,8418,8419,8420,8421,8422,8423,8424,8425,8426,8427,8428,8429,8430,8431,8432,8433,8434,8435,8436,8437,8438,8439,8440,8441,8442,8443,8444,8445,8446,8447,8448,8449,8450,8451,8452,8453,8454,8455,8456,8457,8458,8459,8460,8461,8462,8463,8464,8465,8466,8467,8468,8469,8470,8471,8472,8473,8474,8475,8476,8477,8478,8479,8480,8481,8482,8483,8484,8485,8486,8487,8488,8489,8490,8491,8492,8493,8494,8495,8496,8497,8498,8499,8500,8501,8502,8503,8504,8505,8506,8507,8508,8509,8510,8511,8512,8513,8514,8515,8516,8517,
+8518,8519,8520,8521,8522,8523,8524,8525,8526,8527,8528,8529,8530,8531,8532,8533,8534,8535,8536,8537,8538,8539,8540,8541,8542,8543,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,8554,8555,8556,8557,8558,8559,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,8570,8571,8572,8573,8574,8575,8576,8577,8578,8579,8580,8581,8582,8583,8584,8585,8586,8587,8588,8589,8590,8591,8592,8593,8594,8595,8596,8597,8598,8599,8600,8601,8602,8603,8604,8605,8606,8607,8608,8609,8610,8611,8612,8613,8614,8615,8616,8617,8618,
+8619,8620,8621,8622,8623,8624,8625,8626,8627,8628,8629,8630,8631,8632,8633,8634,8635,8636,8637,8638,8639,8640,8641,8642,8643,8644,8645,8646,8647,8648,8649,8650,8651,8652,8653,8654,8655,8656,8657,8658,8659,8660,8661,8662,8663,8664,8665,8666,8667,8668,8669,8670,8671,8672,8673,8674,8675,8676,8677,8678,8679,8680,8681,8682,8683,8684,8685,8686,8687,8688,8689,8690,8691,8692,8693,8694,8695,8696,8697,8698,8699,8700,8701,8702,8703,8704,8705,8706,8707,8708,8709,8710,8711,8712,8713,8714,8715,8716,8717,8718,8719,
+8720,8721,8722,8723,8724,8725,8726,8727,8728,8729,8730,8731,8732,8733,8734,8735,8736,8737,8738,8739,8740,8741];!0},{"./init":21}],16:[function(b,a,d){!function(a){a.EUCTWProber=function(){a.MultiByteCharSetProber.apply(this);this.getCharsetName=function(){return"EUC-TW"};this._mCodingSM=new a.CodingStateMachine(a.EUCTWSMModel);this._mDistributionAnalyzer=new a.EUCTWDistributionAnalysis;this.reset()};a.EUCTWProber.prototype=new a.MultiByteCharSetProber}(b("./init"))},{"./init":21}],17:[function(b,
+a,d){b=b("./init");b.GB2312_TYPICAL_DISTRIBUTION_RATIO=.9;b.GB2312_TABLE_SIZE=3760;b.GB2312CharToFreqOrder=[1671,749,1443,2364,3924,3807,2330,3921,1704,3463,2691,1511,1515,572,3191,2205,2361,224,2558,479,1711,963,3162,440,4060,1905,2966,2947,3580,2647,3961,3842,2204,869,4207,970,2678,5626,2944,2956,1479,4048,514,3595,588,1346,2820,3409,249,4088,1746,1873,2047,1774,581,1813,358,1174,3590,1014,1561,4844,2245,670,1636,3112,889,1286,953,556,2327,3060,1290,3141,613,185,3477,1367,850,3820,1715,2428,2642,
+2303,2732,3041,2562,2648,3566,3946,1349,388,3098,2091,1360,3585,152,1687,1539,738,1559,59,1232,2925,2267,1388,1249,1741,1679,2960,151,1566,1125,1352,4271,924,4296,385,3166,4459,310,1245,2850,70,3285,2729,3534,3575,2398,3298,3466,1960,2265,217,3647,864,1909,2084,4401,2773,1010,3269,5152,853,3051,3121,1244,4251,1895,364,1499,1540,2313,1180,3655,2268,562,715,2417,3061,544,336,3768,2380,1752,4075,950,280,2425,4382,183,2759,3272,333,4297,2155,1688,2356,1444,1039,4540,736,1177,3349,2443,2368,2144,2225,
+565,196,1482,3406,927,1335,4147,692,878,1311,1653,3911,3622,1378,4200,1840,2969,3149,2126,1816,2534,1546,2393,2760,737,2494,13,447,245,2747,38,2765,2129,2589,1079,606,360,471,3755,2890,404,848,699,1785,1236,370,2221,1023,3746,2074,2026,2023,2388,1581,2119,812,1141,3091,2536,1519,804,2053,406,1596,1090,784,548,4414,1806,2264,2936,1100,343,4114,5096,622,3358,743,3668,1510,1626,5020,3567,2513,3195,4115,5627,2489,2991,24,2065,2697,1087,2719,48,1634,315,68,985,2052,198,2239,1347,1107,1439,597,2366,2172,
+871,3307,919,2487,2790,1867,236,2570,1413,3794,906,3365,3381,1701,1982,1818,1524,2924,1205,616,2586,2072,2004,575,253,3099,32,1365,1182,197,1714,2454,1201,554,3388,3224,2748,756,2587,250,2567,1507,1517,3529,1922,2761,2337,3416,1961,1677,2452,2238,3153,615,911,1506,1474,2495,1265,1906,2749,3756,3280,2161,898,2714,1759,3450,2243,2444,563,26,3286,2266,3769,3344,2707,3677,611,1402,531,1028,2871,4548,1375,261,2948,835,1190,4134,353,840,2684,1900,3082,1435,2109,1207,1674,329,1872,2781,4055,2686,2104,608,
+3318,2423,2957,2768,1108,3739,3512,3271,3985,2203,1771,3520,1418,2054,1681,1153,225,1627,2929,162,2050,2511,3687,1954,124,1859,2431,1684,3032,2894,585,4805,3969,2869,2704,2088,2032,2095,3656,2635,4362,2209,256,518,2042,2105,3777,3657,643,2298,1148,1779,190,989,3544,414,11,2135,2063,2979,1471,403,3678,126,770,1563,671,2499,3216,2877,600,1179,307,2805,4937,1268,1297,2694,252,4032,1448,1494,1331,1394,127,2256,222,1647,1035,1481,3056,1915,1048,873,3651,210,33,1608,2516,200,1520,415,102,0,3389,1287,817,
+91,3299,2940,836,1814,549,2197,1396,1669,2987,3582,2297,2848,4528,1070,687,20,1819,121,1552,1364,1461,1968,2617,3540,2824,2083,177,948,4938,2291,110,4549,2066,648,3359,1755,2110,2114,4642,4845,1693,3937,3308,1257,1869,2123,208,1804,3159,2992,2531,2549,3361,2418,1350,2347,2800,2568,1291,2036,2680,72,842,1990,212,1233,1154,1586,75,2027,3410,4900,1823,1337,2710,2676,728,2810,1522,3026,4995,157,755,1050,4022,710,785,1936,2194,2085,1406,2777,2400,150,1250,4049,1206,807,1910,534,529,3309,1721,1660,274,
+39,2827,661,2670,1578,925,3248,3815,1094,4278,4901,4252,41,1150,3747,2572,2227,4501,3658,4902,3813,3357,3617,2884,2258,887,538,4187,3199,1294,2439,3042,2329,2343,2497,1255,107,543,1527,521,3478,3568,194,5062,15,961,3870,1241,1192,2664,66,5215,3260,2111,1295,1127,2152,3805,4135,901,1164,1976,398,1278,530,1460,748,904,1054,1966,1426,53,2909,509,523,2279,1534,536,1019,239,1685,460,2353,673,1065,2401,3600,4298,2272,1272,2363,284,1753,3679,4064,1695,81,815,2677,2757,2731,1386,859,500,4221,2190,2566,757,
+1006,2519,2068,1166,1455,337,2654,3203,1863,1682,1914,3025,1252,1409,1366,847,714,2834,2038,3209,964,2970,1901,885,2553,1078,1756,3049,301,1572,3326,688,2130,1996,2429,1805,1648,2930,3421,2750,3652,3088,262,1158,1254,389,1641,1812,526,1719,923,2073,1073,1902,468,489,4625,1140,857,2375,3070,3319,2863,380,116,1328,2693,1161,2244,273,1212,1884,2769,3011,1775,1142,461,3066,1200,2147,2212,790,702,2695,4222,1601,1058,434,2338,5153,3640,67,2360,4099,2502,618,3472,1329,416,1132,830,2782,1807,2653,3211,3510,
+1662,192,2124,296,3979,1739,1611,3684,23,118,324,446,1239,1225,293,2520,3814,3795,2535,3116,17,1074,467,2692,2201,387,2922,45,1326,3055,1645,3659,2817,958,243,1903,2320,1339,2825,1784,3289,356,576,865,2315,2381,3377,3916,1088,3122,1713,1655,935,628,4689,1034,1327,441,800,720,894,1979,2183,1528,5289,2702,1071,4046,3572,2399,1571,3281,79,761,1103,327,134,758,1899,1371,1615,879,442,215,2605,2579,173,2048,2485,1057,2975,3317,1097,2253,3801,4263,1403,1650,2946,814,4968,3487,1548,2644,1567,1285,2,295,2636,
+97,946,3576,832,141,4257,3273,760,3821,3521,3156,2607,949,1024,1733,1516,1803,1920,2125,2283,2665,3180,1501,2064,3560,2171,1592,803,3518,1416,732,3897,4258,1363,1362,2458,119,1427,602,1525,2608,1605,1639,3175,694,3064,10,465,76,2E3,4846,4208,444,3781,1619,3353,2206,1273,3796,740,2483,320,1723,2377,3660,2619,1359,1137,1762,1724,2345,2842,1850,1862,912,821,1866,612,2625,1735,2573,3369,1093,844,89,937,930,1424,3564,2413,2972,1004,3046,3019,2011,711,3171,1452,4178,428,801,1943,432,445,2811,206,4136,1472,
+730,349,73,397,2802,2547,998,1637,1167,789,396,3217,154,1218,716,1120,1780,2819,4826,1931,3334,3762,2139,1215,2627,552,3664,3628,3232,1405,2383,3111,1356,2652,3577,3320,3101,1703,640,1045,1370,1246,4996,371,1575,2436,1621,2210,984,4033,1734,2638,16,4529,663,2755,3255,1451,3917,2257,1253,1955,2234,1263,2951,214,1229,617,485,359,1831,1969,473,2310,750,2058,165,80,2864,2419,361,4344,2416,2479,1134,796,3726,1266,2943,860,2715,938,390,2734,1313,1384,248,202,877,1064,2854,522,3907,279,1602,297,2357,395,
+3740,137,2075,944,4089,2584,1267,3802,62,1533,2285,178,176,780,2440,201,3707,590,478,1560,4354,2117,1075,30,74,4643,4004,1635,1441,2745,776,2596,238,1077,1692,1912,2844,605,499,1742,3947,241,3053,980,1749,936,2640,4511,2582,515,1543,2162,5322,2892,2993,890,2148,1924,665,1827,3581,1032,968,3163,339,1044,1896,270,583,1791,1720,4367,1194,3488,3669,43,2523,1657,163,2167,290,1209,1622,3378,550,634,2508,2510,695,2634,2384,2512,1476,1414,220,1469,2341,2138,2852,3183,2900,4939,2865,3502,1211,3680,854,3227,
+1299,2976,3172,186,2998,1459,443,1067,3251,1495,321,1932,3054,909,753,1410,1828,436,2441,1119,1587,3164,2186,1258,227,231,1425,1890,3200,3942,247,959,725,5254,2741,577,2158,2079,929,120,174,838,2813,591,1115,417,2024,40,3240,1536,1037,291,4151,2354,632,1298,2406,2500,3535,1825,1846,3451,205,1171,345,4238,18,1163,811,685,2208,1217,425,1312,1508,1175,4308,2552,1033,587,1381,3059,2984,3482,340,1316,4023,3972,792,3176,519,777,4690,918,933,4130,2981,3741,90,3360,2911,2200,5184,4550,609,3079,2030,272,3379,
+2736,363,3881,1130,1447,286,779,357,1169,3350,3137,1630,1220,2687,2391,747,1277,3688,2618,2682,2601,1156,3196,5290,4034,3102,1689,3596,3128,874,219,2783,798,508,1843,2461,269,1658,1776,1392,1913,2983,3287,2866,2159,2372,829,4076,46,4253,2873,1889,1894,915,1834,1631,2181,2318,298,664,2818,3555,2735,954,3228,3117,527,3511,2173,681,2712,3033,2247,2346,3467,1652,155,2164,3382,113,1994,450,899,494,994,1237,2958,1875,2336,1926,3727,545,1577,1550,633,3473,204,1305,3072,2410,1956,2471,707,2134,841,2195,2196,
+2663,3843,1026,4940,990,3252,4997,368,1092,437,3212,3258,1933,1829,675,2977,2893,412,943,3723,4644,3294,3283,2230,2373,5154,2389,2241,2661,2323,1404,2524,593,787,677,3008,1275,2059,438,2709,2609,2240,2269,2246,1446,36,1568,1373,3892,1574,2301,1456,3962,693,2276,5216,2035,1143,2720,1919,1797,1811,2763,4137,2597,1830,1699,1488,1198,2090,424,1694,312,3634,3390,4179,3335,2252,1214,561,1059,3243,2295,2561,975,5155,2321,2751,3772,472,1537,3282,3398,1047,2077,2348,2878,1323,3340,3076,690,2906,51,369,170,
+3541,1060,2187,2688,3670,2541,1083,1683,928,3918,459,109,4427,599,3744,4286,143,2101,2730,2490,82,1588,3036,2121,281,1860,477,4035,1238,2812,3020,2716,3312,1530,2188,2055,1317,843,636,1808,1173,3495,649,181,1002,147,3641,1159,2414,3750,2289,2795,813,3123,2610,1136,4368,5,3391,4541,2174,420,429,1728,754,1228,2115,2219,347,2223,2733,735,1518,3003,2355,3134,1764,3948,3329,1888,2424,1001,1234,1972,3321,3363,1672,1021,1450,1584,226,765,655,2526,3404,3244,2302,3665,731,594,2184,319,1576,621,658,2656,4299,
+2099,3864,1279,2071,2598,2739,795,3086,3699,3908,1707,2352,2402,1382,3136,2475,1465,4847,3496,3865,1085,3004,2591,1084,213,2287,1963,3565,2250,822,793,4574,3187,1772,1789,3050,595,1484,1959,2770,1080,2650,456,422,2996,940,3322,4328,4345,3092,2742,965,2784,739,4124,952,1358,2498,2949,2565,332,2698,2378,660,2260,2473,4194,3856,2919,535,1260,2651,1208,1428,1300,1949,1303,2942,433,2455,2450,1251,1946,614,1269,641,1306,1810,2737,3078,2912,564,2365,1419,1415,1497,4460,2367,2185,1379,3005,1307,3218,2175,
+1897,3063,682,1157,4040,4005,1712,1160,1941,1399,394,402,2952,1573,1151,2986,2404,862,299,2033,1489,3006,346,171,2886,3401,1726,2932,168,2533,47,2507,1030,3735,1145,3370,1395,1318,1579,3609,4560,2857,4116,1457,2529,1965,504,1036,2690,2988,2405,745,5871,849,2397,2056,3081,863,2359,3857,2096,99,1397,1769,2300,4428,1643,3455,1978,1757,3718,1440,35,4879,3742,1296,4228,2280,160,5063,1599,2013,166,520,3479,1646,3345,3012,490,1937,1545,1264,2182,2505,1096,1188,1369,1436,2421,1667,2792,2460,1270,2122,727,
+3167,2143,806,1706,1012,1800,3037,960,2218,1882,805,139,2456,1139,1521,851,1052,3093,3089,342,2039,744,5097,1468,1502,1585,2087,223,939,326,2140,2577,892,2481,1623,4077,982,3708,135,2131,87,2503,3114,2326,1106,876,1616,547,2997,2831,2093,3441,4530,4314,9,3256,4229,4148,659,1462,1986,1710,2046,2913,2231,4090,4880,5255,3392,3274,1368,3689,4645,1477,705,3384,3635,1068,1529,2941,1458,3782,1509,100,1656,2548,718,2339,408,1590,2780,3548,1838,4117,3719,1345,3530,717,3442,2778,3220,2898,1892,4590,3614,3371,
+2043,1998,1224,3483,891,635,584,2559,3355,733,1766,1729,1172,3789,1891,2307,781,2982,2271,1957,1580,5773,2633,2005,4195,3097,1535,3213,1189,1934,5693,3262,586,3118,1324,1598,517,1564,2217,1868,1893,4445,3728,2703,3139,1526,1787,1992,3882,2875,1549,1199,1056,2224,1904,2711,5098,4287,338,1993,3129,3489,2689,1809,2815,1997,957,1855,3898,2550,3275,3057,1105,1319,627,1505,1911,1883,3526,698,3629,3456,1833,1431,746,77,1261,2017,2296,1977,1885,125,1334,1600,525,1798,1109,2222,1470,1945,559,2236,1186,3443,
+2476,1929,1411,2411,3135,1777,3372,2621,1841,1613,3229,668,1430,1839,2643,2916,195,1989,2671,2358,1387,629,3205,2293,5256,4439,123,1310,888,1879,4300,3021,3605,1003,1162,3192,2910,2010,140,2395,2859,55,1082,2012,2901,662,419,2081,1438,680,2774,4654,3912,1620,1731,1625,5035,4065,2328,512,1344,802,5443,2163,2311,2537,524,3399,98,1155,2103,1918,2606,3925,2816,1393,2465,1504,3773,2177,3963,1478,4346,180,1113,4655,3461,2028,1698,833,2696,1235,1322,1594,4408,3623,3013,3225,2040,3022,541,2881,607,3632,2029,
+1665,1219,639,1385,1686,1099,2803,3231,1938,3188,2858,427,676,2772,1168,2025,454,3253,2486,3556,230,1950,580,791,1991,1280,1086,1974,2034,630,257,3338,2788,4903,1017,86,4790,966,2789,1995,1696,1131,259,3095,4188,1308,179,1463,5257,289,4107,1248,42,3413,1725,2288,896,1947,774,4474,4254,604,3430,4264,392,2514,2588,452,237,1408,3018,988,4531,1970,3034,3310,540,2370,1562,1288,2990,502,4765,1147,4,1853,2708,207,294,2814,4078,2902,2509,684,34,3105,3532,2551,644,709,2801,2344,573,1727,3573,3557,2021,1081,
+3100,4315,2100,3681,199,2263,1837,2385,146,3484,1195,2776,3949,997,1939,3973,1008,1091,1202,1962,1847,1149,4209,5444,1076,493,117,5400,2521,972,1490,2934,1796,4542,2374,1512,2933,2657,413,2888,1135,2762,2314,2156,1355,2369,766,2007,2527,2170,3124,2491,2593,2632,4757,2437,234,3125,3591,1898,1750,1376,1942,3468,3138,570,2127,2145,3276,4131,962,132,1445,4196,19,941,3624,3480,3366,1973,1374,4461,3431,2629,283,2415,2275,808,2887,3620,2112,2563,1353,3610,955,1089,3103,1053,96,88,4097,823,3808,1583,399,
+292,4091,3313,421,1128,642,4006,903,2539,1877,2082,596,29,4066,1790,722,2157,130,995,1569,769,1485,464,513,2213,288,1923,1101,2453,4316,133,486,2445,50,625,487,2207,57,423,481,2962,159,3729,1558,491,303,482,501,240,2837,112,3648,2392,1783,362,8,3433,3422,610,2793,3277,1390,1284,1654,21,3823,734,367,623,193,287,374,1009,1483,816,476,313,2255,2340,1262,2150,2899,1146,2581,782,2116,1659,2018,1880,255,3586,3314,1110,2867,2137,2564,986,2767,5185,2006,650,158,926,762,881,3157,2717,2362,3587,306,3690,3245,
+1542,3077,2427,1691,2478,2118,2985,3490,2438,539,2305,983,129,1754,355,4201,2386,827,2923,104,1773,2838,2771,411,2905,3919,376,767,122,1114,828,2422,1817,3506,266,3460,1007,1609,4998,945,2612,4429,2274,726,1247,1964,2914,2199,2070,4002,4108,657,3323,1422,579,455,2764,4737,1222,2895,1670,824,1223,1487,2525,558,861,3080,598,2659,2515,1967,752,2583,2376,2214,4180,977,704,2464,4999,2622,4109,1210,2961,819,1541,142,2284,44,418,457,1126,3730,4347,4626,1644,1876,3671,1864,302,1063,5694,624,723,1984,3745,
+1314,1676,2488,1610,1449,3558,3569,2166,2098,409,1011,2325,3704,2306,818,1732,1383,1824,1844,3757,999,2705,3497,1216,1423,2683,2426,2954,2501,2726,2229,1475,2554,5064,1971,1794,1666,2014,1343,783,724,191,2434,1354,2220,5065,1763,2752,2472,4152,131,175,2885,3434,92,1466,4920,2616,3871,3872,3866,128,1551,1632,669,1854,3682,4691,4125,1230,188,2973,3290,1302,1213,560,3266,917,763,3909,3249,1760,868,1958,764,1782,2097,145,2277,3774,4462,64,1491,3062,971,2132,3606,2442,221,1226,1617,218,323,1185,3207,3147,
+571,619,1473,1005,1744,2281,449,1887,2396,3685,275,375,3816,1743,3844,3731,845,1983,2350,4210,1377,773,967,3499,3052,3743,2725,4007,1697,1022,3943,1464,3264,2855,2722,1952,1029,2839,2467,84,4383,2215,820,1391,2015,2448,3672,377,1948,2168,797,2545,3536,2578,2645,94,2874,1678,405,1259,3071,771,546,1315,470,1243,3083,895,2468,981,969,2037,846,4181,653,1276,2928,14,2594,557,3007,2474,156,902,1338,1740,2574,537,2518,973,2282,2216,2433,1928,138,2903,1293,2631,1612,646,3457,839,2935,111,496,2191,2847,589,
+3186,149,3994,2060,4031,2641,4067,3145,1870,37,3597,2136,1025,2051,3009,3383,3549,1121,1016,3261,1301,251,2446,2599,2153,872,3246,637,334,3705,831,884,921,3065,3140,4092,2198,1944,246,2964,108,2045,1152,1921,2308,1031,203,3173,4170,1907,3890,810,1401,2003,1690,506,647,1242,2828,1761,1649,3208,2249,1589,3709,2931,5156,1708,498,666,2613,834,3817,1231,184,2851,1124,883,3197,2261,3710,1765,1553,2658,1178,2639,2351,93,1193,942,2538,2141,4402,235,1821,870,1591,2192,1709,1871,3341,1618,4126,2595,2334,603,
+651,69,701,268,2662,3411,2555,1380,1606,503,448,254,2371,2646,574,1187,2309,1770,322,2235,1292,1801,305,566,1133,229,2067,2057,706,167,483,2002,2672,3295,1820,3561,3067,316,378,2746,3452,1112,136,1981,507,1651,2917,1117,285,4591,182,2580,3522,1304,335,3303,1835,2504,1795,1792,2248,674,1018,2106,2449,1857,2292,2845,976,3047,1781,2600,2727,1389,1281,52,3152,153,265,3950,672,3485,3951,4463,430,1183,365,278,2169,27,1407,1336,2304,209,1340,1730,2202,1852,2403,2883,979,1737,1062,631,2829,2542,3876,2592,
+825,2086,2226,3048,3625,352,1417,3724,542,991,431,1351,3938,1861,2294,826,1361,2927,3142,3503,1738,463,2462,2723,582,1916,1595,2808,400,3845,3891,2868,3621,2254,58,2492,1123,910,2160,2614,1372,1603,1196,1072,3385,1700,3267,1980,696,480,2430,920,799,1570,2920,1951,2041,4047,2540,1321,4223,2469,3562,2228,1271,2602,401,2833,3351,2575,5157,907,2312,1256,410,263,3507,1582,996,678,1849,2316,1480,908,3545,2237,703,2322,667,1826,2849,1531,2604,2999,2407,3146,2151,2630,1786,3711,469,3542,497,3899,2409,858,
+837,4446,3393,1274,786,620,1845,2001,3311,484,308,3367,1204,1815,3691,2332,1532,2557,1842,2020,2724,1927,2333,4440,567,22,1673,2728,4475,1987,1858,1144,1597,101,1832,3601,12,974,3783,4391,951,1412,1,3720,453,4608,4041,528,1041,1027,3230,2628,1129,875,1051,3291,1203,2262,1069,2860,2799,2149,2615,3278,144,1758,3040,31,475,1680,366,2685,3184,311,1642,4008,2466,5036,1593,1493,2809,216,1420,1668,233,304,2128,3284,232,1429,1768,1040,2008,3407,2740,2967,2543,242,2133,778,1565,2022,2620,505,2189,2756,1098,
+2273,372,1614,708,553,2846,2094,2278,169,3626,2835,4161,228,2674,3165,809,1454,1309,466,1705,1095,900,3423,880,2667,3751,5258,2317,3109,2571,4317,2766,1503,1342,866,4447,1118,63,2076,314,1881,1348,1061,172,978,3515,1747,532,511,3970,6,601,905,2699,3300,1751,276,1467,3725,2668,65,4239,2544,2779,2556,1604,578,2451,1802,992,2331,2624,1320,3446,713,1513,1013,103,2786,2447,1661,886,1702,916,654,3574,2031,1556,751,2178,2821,2179,1498,1538,2176,271,914,2251,2080,1325,638,1953,2937,3877,2432,2754,95,3265,
+1716,260,1227,4083,775,106,1357,3254,426,1607,555,2480,772,1985,244,2546,474,495,1046,2611,1851,2061,71,2089,1675,2590,742,3758,2843,3222,1433,267,2180,2576,2826,2233,2092,3913,2435,956,1745,3075,856,2113,1116,451,3,1988,2896,1398,993,2463,1878,2049,1341,2718,2721,2870,2108,712,2904,4363,2753,2324,277,2872,2349,2649,384,987,435,691,3E3,922,164,3939,652,1500,1184,4153,2482,3373,2165,4848,2335,3775,3508,3154,2806,2830,1554,2102,1664,2530,1434,2408,893,1547,2623,3447,2832,2242,2532,3169,2856,3223,2078,
+49,3770,3469,462,318,656,2259,3250,3069,679,1629,2758,344,1138,1104,3120,1836,1283,3115,2154,1437,4448,934,759,1999,794,2862,1038,533,2560,1722,2342,855,2626,1197,1663,4476,3127,85,4240,2528,25,1111,1181,3673,407,3470,4561,2679,2713,768,1925,2841,3986,1544,1165,932,373,1240,2146,1930,2673,721,4766,354,4333,391,2963,187,61,3364,1442,1102,330,1940,1767,341,3809,4118,393,2496,2062,2211,105,331,300,439,913,1332,626,379,3304,1557,328,689,3952,309,1555,931,317,2517,3027,325,569,686,2107,3084,60,1042,1333,
+2794,264,3177,4014,1628,258,3712,7,4464,1176,1043,1778,683,114,1975,78,1492,383,1886,510,386,645,5291,2891,2069,3305,4138,3867,2939,2603,2493,1935,1066,1848,3588,1015,1282,1289,4609,697,1453,3044,2666,3611,1856,2412,54,719,1330,568,3778,2459,1748,788,492,551,1191,1E3,488,3394,3763,282,1799,348,2016,1523,3155,2390,1049,382,2019,1788,1170,729,2968,3523,897,3926,2785,2938,3292,350,2319,3238,1718,1717,2655,3453,3143,4465,161,2889,2980,2009,1421,56,1908,1640,2387,2232,1917,1874,2477,4921,148,83,3438,592,
+4245,2882,1822,1055,741,115,1496,1624,381,1638,4592,1020,516,3214,458,947,4575,1432,211,1514,2926,1865,2142,189,852,1221,1400,1486,882,2299,4036,351,28,1122,700,6479,6480,6481,6482,6483,5508,6484,3900,3414,3974,4441,4024,3537,4037,5628,5099,3633,6485,3148,6486,3636,5509,3257,5510,5973,5445,5872,4941,4403,3174,4627,5873,6276,2286,4230,5446,5874,5122,6102,6103,4162,5447,5123,5323,4849,6277,3980,3851,5066,4246,5774,5067,6278,3001,2807,5695,3346,5775,5974,5158,5448,6487,5975,5976,5776,3598,6279,5696,
+4806,4211,4154,6280,6488,6489,6490,6281,4212,5037,3374,4171,6491,4562,4807,4722,4827,5977,6104,4532,4079,5159,5324,5160,4404,3858,5359,5875,3975,4288,4610,3486,4512,5325,3893,5360,6282,6283,5560,2522,4231,5978,5186,5449,2569,3878,6284,5401,3578,4415,6285,4656,5124,5979,2506,4247,4449,3219,3417,4334,4969,4329,6492,4576,4828,4172,4416,4829,5402,6286,3927,3852,5361,4369,4830,4477,4867,5876,4173,6493,6105,4657,6287,6106,5877,5450,6494,4155,4868,5451,3700,5629,4384,6288,6289,5878,3189,4881,6107,6290,6495,
+4513,6496,4692,4515,4723,5100,3356,6497,6291,3810,4080,5561,3570,4430,5980,6498,4355,5697,6499,4724,6108,6109,3764,4050,5038,5879,4093,3226,6292,5068,5217,4693,3342,5630,3504,4831,4377,4466,4309,5698,4431,5777,6293,5778,4272,3706,6110,5326,3752,4676,5327,4273,5403,4767,5631,6500,5699,5880,3475,5039,6294,5562,5125,4348,4301,4482,4068,5126,4593,5700,3380,3462,5981,5563,3824,5404,4970,5511,3825,4738,6295,6501,5452,4516,6111,5881,5564,6502,6296,5982,6503,4213,4163,3454,6504,6112,4009,4450,6113,4658,6297,
+6114,3035,6505,6115,3995,4904,4739,4563,4942,4110,5040,3661,3928,5362,3674,6506,5292,3612,4791,5565,4149,5983,5328,5259,5021,4725,4577,4564,4517,4364,6298,5405,4578,5260,4594,4156,4157,5453,3592,3491,6507,5127,5512,4709,4922,5984,5701,4726,4289,6508,4015,6116,5128,4628,3424,4241,5779,6299,4905,6509,6510,5454,5702,5780,6300,4365,4923,3971,6511,5161,3270,3158,5985,4100,867,5129,5703,6117,5363,3695,3301,5513,4467,6118,6512,5455,4232,4242,4629,6513,3959,4478,6514,5514,5329,5986,4850,5162,5566,3846,4694,
+6119,5456,4869,5781,3779,6301,5704,5987,5515,4710,6302,5882,6120,4392,5364,5705,6515,6121,6516,6517,3736,5988,5457,5989,4695,2457,5883,4551,5782,6303,6304,6305,5130,4971,6122,5163,6123,4870,3263,5365,3150,4871,6518,6306,5783,5069,5706,3513,3498,4409,5330,5632,5366,5458,5459,3991,5990,4502,3324,5991,5784,3696,4518,5633,4119,6519,4630,5634,4417,5707,4832,5992,3418,6124,5993,5567,4768,5218,6520,4595,3458,5367,6125,5635,6126,4202,6521,4740,4924,6307,3981,4069,4385,6308,3883,2675,4051,3834,4302,4483,5568,
+5994,4972,4101,5368,6309,5164,5884,3922,6127,6522,6523,5261,5460,5187,4164,5219,3538,5516,4111,3524,5995,6310,6311,5369,3181,3386,2484,5188,3464,5569,3627,5708,6524,5406,5165,4677,4492,6312,4872,4851,5885,4468,5996,6313,5709,5710,6128,2470,5886,6314,5293,4882,5785,3325,5461,5101,6129,5711,5786,6525,4906,6526,6527,4418,5887,5712,4808,2907,3701,5713,5888,6528,3765,5636,5331,6529,6530,3593,5889,3637,4943,3692,5714,5787,4925,6315,6130,5462,4405,6131,6132,6316,5262,6531,6532,5715,3859,5716,5070,4696,5102,
+3929,5788,3987,4792,5997,6533,6534,3920,4809,5E3,5998,6535,2974,5370,6317,5189,5263,5717,3826,6536,3953,5001,4883,3190,5463,5890,4973,5999,4741,6133,6134,3607,5570,6E3,4711,3362,3630,4552,5041,6318,6001,2950,2953,5637,4646,5371,4944,6002,2044,4120,3429,6319,6537,5103,4833,6538,6539,4884,4647,3884,6003,6004,4758,3835,5220,5789,4565,5407,6540,6135,5294,4697,4852,6320,6321,3206,4907,6541,6322,4945,6542,6136,6543,6323,6005,4631,3519,6544,5891,6545,5464,3784,5221,6546,5571,4659,6547,6324,6137,5190,6548,
+3853,6549,4016,4834,3954,6138,5332,3827,4017,3210,3546,4469,5408,5718,3505,4648,5790,5131,5638,5791,5465,4727,4318,6325,6326,5792,4553,4010,4698,3439,4974,3638,4335,3085,6006,5104,5042,5166,5892,5572,6327,4356,4519,5222,5573,5333,5793,5043,6550,5639,5071,4503,6328,6139,6551,6140,3914,3901,5372,6007,5640,4728,4793,3976,3836,4885,6552,4127,6553,4451,4102,5002,6554,3686,5105,6555,5191,5072,5295,4611,5794,5296,6556,5893,5264,5894,4975,5466,5265,4699,4976,4370,4056,3492,5044,4886,6557,5795,4432,4769,4357,
+5467,3940,4660,4290,6141,4484,4770,4661,3992,6329,4025,4662,5022,4632,4835,4070,5297,4663,4596,5574,5132,5409,5895,6142,4504,5192,4664,5796,5896,3885,5575,5797,5023,4810,5798,3732,5223,4712,5298,4084,5334,5468,6143,4052,4053,4336,4977,4794,6558,5335,4908,5576,5224,4233,5024,4128,5469,5225,4873,6008,5045,4729,4742,4633,3675,4597,6559,5897,5133,5577,5003,5641,5719,6330,6560,3017,2382,3854,4406,4811,6331,4393,3964,4946,6561,2420,3722,6562,4926,4378,3247,1736,4442,6332,5134,6333,5226,3996,2918,5470,4319,
+4003,4598,4743,4744,4485,3785,3902,5167,5004,5373,4394,5898,6144,4874,1793,3997,6334,4085,4214,5106,5642,4909,5799,6009,4419,4189,3330,5899,4165,4420,5299,5720,5227,3347,6145,4081,6335,2876,3930,6146,3293,3786,3910,3998,5900,5300,5578,2840,6563,5901,5579,6147,3531,5374,6564,6565,5580,4759,5375,6566,6148,3559,5643,6336,6010,5517,6337,6338,5721,5902,3873,6011,6339,6567,5518,3868,3649,5722,6568,4771,4947,6569,6149,4812,6570,2853,5471,6340,6341,5644,4795,6342,6012,5723,6343,5724,6013,4349,6344,3160,6150,
+5193,4599,4514,4493,5168,4320,6345,4927,3666,4745,5169,5903,5005,4928,6346,5725,6014,4730,4203,5046,4948,3395,5170,6015,4150,6016,5726,5519,6347,5047,3550,6151,6348,4197,4310,5904,6571,5581,2965,6152,4978,3960,4291,5135,6572,5301,5727,4129,4026,5905,4853,5728,5472,6153,6349,4533,2700,4505,5336,4678,3583,5073,2994,4486,3043,4554,5520,6350,6017,5800,4487,6351,3931,4103,5376,6352,4011,4321,4311,4190,5136,6018,3988,3233,4350,5906,5645,4198,6573,5107,3432,4191,3435,5582,6574,4139,5410,6353,5411,3944,5583,
+5074,3198,6575,6354,4358,6576,5302,4600,5584,5194,5412,6577,6578,5585,5413,5303,4248,5414,3879,4433,6579,4479,5025,4854,5415,6355,4760,4772,3683,2978,4700,3797,4452,3965,3932,3721,4910,5801,6580,5195,3551,5907,3221,3471,3029,6019,3999,5908,5909,5266,5267,3444,3023,3828,3170,4796,5646,4979,4259,6356,5647,5337,3694,6357,5648,5338,4520,4322,5802,3031,3759,4071,6020,5586,4836,4386,5048,6581,3571,4679,4174,4949,6154,4813,3787,3402,3822,3958,3215,3552,5268,4387,3933,4950,4359,6021,5910,5075,3579,6358,4234,
+4566,5521,6359,3613,5049,6022,5911,3375,3702,3178,4911,5339,4521,6582,6583,4395,3087,3811,5377,6023,6360,6155,4027,5171,5649,4421,4249,2804,6584,2270,6585,4E3,4235,3045,6156,5137,5729,4140,4312,3886,6361,4330,6157,4215,6158,3500,3676,4929,4331,3713,4930,5912,4265,3776,3368,5587,4470,4855,3038,4980,3631,6159,6160,4132,4680,6161,6362,3923,4379,5588,4255,6586,4121,6587,6363,4649,6364,3288,4773,4774,6162,6024,6365,3543,6588,4274,3107,3737,5050,5803,4797,4522,5589,5051,5730,3714,4887,5378,4001,4523,6163,
+5026,5522,4701,4175,2791,3760,6589,5473,4224,4133,3847,4814,4815,4775,3259,5416,6590,2738,6164,6025,5304,3733,5076,5650,4816,5590,6591,6165,6592,3934,5269,6593,3396,5340,6594,5804,3445,3602,4042,4488,5731,5732,3525,5591,4601,5196,6166,6026,5172,3642,4612,3202,4506,4798,6366,3818,5108,4303,5138,5139,4776,3332,4304,2915,3415,4434,5077,5109,4856,2879,5305,4817,6595,5913,3104,3144,3903,4634,5341,3133,5110,5651,5805,6167,4057,5592,2945,4371,5593,6596,3474,4182,6367,6597,6168,4507,4279,6598,2822,6599,4777,
+4713,5594,3829,6169,3887,5417,6170,3653,5474,6368,4216,2971,5228,3790,4579,6369,5733,6600,6601,4951,4746,4555,6602,5418,5475,6027,3400,4665,5806,6171,4799,6028,5052,6172,3343,4800,4747,5006,6370,4556,4217,5476,4396,5229,5379,5477,3839,5914,5652,5807,4714,3068,4635,5808,6173,5342,4192,5078,5419,5523,5734,6174,4557,6175,4602,6371,6176,6603,5809,6372,5735,4260,3869,5111,5230,6029,5112,6177,3126,4681,5524,5915,2706,3563,4748,3130,6178,4018,5525,6604,6605,5478,4012,4837,6606,4534,4193,5810,4857,3615,5479,
+6030,4082,3697,3539,4086,5270,3662,4508,4931,5916,4912,5811,5027,3888,6607,4397,3527,3302,3798,2775,2921,2637,3966,4122,4388,4028,4054,1633,4858,5079,3024,5007,3982,3412,5736,6608,3426,3236,5595,3030,6179,3427,3336,3279,3110,6373,3874,3039,5080,5917,5140,4489,3119,6374,5812,3405,4494,6031,4666,4141,6180,4166,6032,5813,4981,6609,5081,4422,4982,4112,3915,5653,3296,3983,6375,4266,4410,5654,6610,6181,3436,5082,6611,5380,6033,3819,5596,4535,5231,5306,5113,6612,4952,5918,4275,3113,6613,6376,6182,6183,5814,
+3073,4731,4838,5008,3831,6614,4888,3090,3848,4280,5526,5232,3014,5655,5009,5737,5420,5527,6615,5815,5343,5173,5381,4818,6616,3151,4953,6617,5738,2796,3204,4360,2989,4281,5739,5174,5421,5197,3132,5141,3849,5142,5528,5083,3799,3904,4839,5480,2880,4495,3448,6377,6184,5271,5919,3771,3193,6034,6035,5920,5010,6036,5597,6037,6378,6038,3106,5422,6618,5423,5424,4142,6619,4889,5084,4890,4313,5740,6620,3437,5175,5307,5816,4199,5198,5529,5817,5199,5656,4913,5028,5344,3850,6185,2955,5272,5011,5818,4567,4580,5029,
+5921,3616,5233,6621,6622,6186,4176,6039,6379,6380,3352,5200,5273,2908,5598,5234,3837,5308,6623,6624,5819,4496,4323,5309,5201,6625,6626,4983,3194,3838,4167,5530,5922,5274,6381,6382,3860,3861,5599,3333,4292,4509,6383,3553,5481,5820,5531,4778,6187,3955,3956,4324,4389,4218,3945,4325,3397,2681,5923,4779,5085,4019,5482,4891,5382,5383,6040,4682,3425,5275,4094,6627,5310,3015,5483,5657,4398,5924,3168,4819,6628,5925,6629,5532,4932,4613,6041,6630,4636,6384,4780,4204,5658,4423,5821,3989,4683,5822,6385,4954,6631,
+5345,6188,5425,5012,5384,3894,6386,4490,4104,6632,5741,5053,6633,5823,5926,5659,5660,5927,6634,5235,5742,5824,4840,4933,4820,6387,4859,5928,4955,6388,4143,3584,5825,5346,5013,6635,5661,6389,5014,5484,5743,4337,5176,5662,6390,2836,6391,3268,6392,6636,6042,5236,6637,4158,6638,5744,5663,4471,5347,3663,4123,5143,4293,3895,6639,6640,5311,5929,5826,3800,6189,6393,6190,5664,5348,3554,3594,4749,4603,6641,5385,4801,6043,5827,4183,6642,5312,5426,4761,6394,5665,6191,4715,2669,6643,6644,5533,3185,5427,5086,5930,
+5931,5386,6192,6044,6645,4781,4013,5745,4282,4435,5534,4390,4267,6045,5746,4984,6046,2743,6193,3501,4087,5485,5932,5428,4184,4095,5747,4061,5054,3058,3862,5933,5600,6646,5144,3618,6395,3131,5055,5313,6396,4650,4956,3855,6194,3896,5202,4985,4029,4225,6195,6647,5828,5486,5829,3589,3002,6648,6397,4782,5276,6649,6196,6650,4105,3803,4043,5237,5830,6398,4096,3643,6399,3528,6651,4453,3315,4637,6652,3984,6197,5535,3182,3339,6653,3096,2660,6400,6654,3449,5934,4250,4236,6047,6401,5831,6655,5487,3753,4062,5832,
+6198,6199,6656,3766,6657,3403,4667,6048,6658,4338,2897,5833,3880,2797,3780,4326,6659,5748,5015,6660,5387,4351,5601,4411,6661,3654,4424,5935,4339,4072,5277,4568,5536,6402,6662,5238,6663,5349,5203,6200,5204,6201,5145,4536,5016,5056,4762,5834,4399,4957,6202,6403,5666,5749,6664,4340,6665,5936,5177,5667,6666,6667,3459,4668,6404,6668,6669,4543,6203,6670,4276,6405,4480,5537,6671,4614,5205,5668,6672,3348,2193,4763,6406,6204,5937,5602,4177,5669,3419,6673,4020,6205,4443,4569,5388,3715,3639,6407,6049,4058,6206,
+6674,5938,4544,6050,4185,4294,4841,4651,4615,5488,6207,6408,6051,5178,3241,3509,5835,6208,4958,5836,4341,5489,5278,6209,2823,5538,5350,5206,5429,6675,4638,4875,4073,3516,4684,4914,4860,5939,5603,5389,6052,5057,3237,5490,3791,6676,6409,6677,4821,4915,4106,5351,5058,4243,5539,4244,5604,4842,4916,5239,3028,3716,5837,5114,5605,5390,5940,5430,6210,4332,6678,5540,4732,3667,3840,6053,4305,3408,5670,5541,6410,2744,5240,5750,6679,3234,5606,6680,5607,5671,3608,4283,4159,4400,5352,4783,6681,6411,6682,4491,4802,
+6211,6412,5941,6413,6414,5542,5751,6683,4669,3734,5942,6684,6415,5943,5059,3328,4670,4144,4268,6685,6686,6687,6688,4372,3603,6689,5944,5491,4373,3440,6416,5543,4784,4822,5608,3792,4616,5838,5672,3514,5391,6417,4892,6690,4639,6691,6054,5673,5839,6055,6692,6056,5392,6212,4038,5544,5674,4497,6057,6693,5840,4284,5675,4021,4545,5609,6418,4454,6419,6213,4113,4472,5314,3738,5087,5279,4074,5610,4959,4063,3179,4750,6058,6420,6214,3476,4498,4716,5431,4960,4685,6215,5241,6694,6421,6216,6695,5841,5945,6422,3748,
+5946,5179,3905,5752,5545,5947,4374,6217,4455,6423,4412,6218,4803,5353,6696,3832,5280,6219,4327,4702,6220,6221,6059,4652,5432,6424,3749,4751,6425,5753,4986,5393,4917,5948,5030,5754,4861,4733,6426,4703,6697,6222,4671,5949,4546,4961,5180,6223,5031,3316,5281,6698,4862,4295,4934,5207,3644,6427,5842,5950,6428,6429,4570,5843,5282,6430,6224,5088,3239,6060,6699,5844,5755,6061,6431,2701,5546,6432,5115,5676,4039,3993,3327,4752,4425,5315,6433,3941,6434,5677,4617,4604,3074,4581,6225,5433,6435,6226,6062,4823,5756,
+5116,6227,3717,5678,4717,5845,6436,5679,5846,6063,5847,6064,3977,3354,6437,3863,5117,6228,5547,5394,4499,4524,6229,4605,6230,4306,4500,6700,5951,6065,3693,5952,5089,4366,4918,6701,6231,5548,6232,6702,6438,4704,5434,6703,6704,5953,4168,6705,5680,3420,6706,5242,4407,6066,3812,5757,5090,5954,4672,4525,3481,5681,4618,5395,5354,5316,5955,6439,4962,6707,4526,6440,3465,4673,6067,6441,5682,6708,5435,5492,5758,5683,4619,4571,4674,4804,4893,4686,5493,4753,6233,6068,4269,6442,6234,5032,4705,5146,5243,5208,5848,
+6235,6443,4963,5033,4640,4226,6236,5849,3387,6444,6445,4436,4437,5850,4843,5494,4785,4894,6709,4361,6710,5091,5956,3331,6237,4987,5549,6069,6711,4342,3517,4473,5317,6070,6712,6071,4706,6446,5017,5355,6713,6714,4988,5436,6447,4734,5759,6715,4735,4547,4456,4754,6448,5851,6449,6450,3547,5852,5318,6451,6452,5092,4205,6716,6238,4620,4219,5611,6239,6072,4481,5760,5957,5958,4059,6240,6453,4227,4537,6241,5761,4030,4186,5244,5209,3761,4457,4876,3337,5495,5181,6242,5959,5319,5612,5684,5853,3493,5854,6073,4169,
+5613,5147,4895,6074,5210,6717,5182,6718,3830,6243,2798,3841,6075,6244,5855,5614,3604,4606,5496,5685,5118,5356,6719,6454,5960,5357,5961,6720,4145,3935,4621,5119,5962,4261,6721,6455,4786,5963,4375,4582,6245,6246,6247,6076,5437,4877,5856,3376,4380,6248,4160,6722,5148,6456,5211,6457,6723,4718,6458,6724,6249,5358,4044,3297,6459,6250,5857,5615,5497,5245,6460,5498,6725,6251,6252,5550,3793,5499,2959,5396,6461,6462,4572,5093,5500,5964,3806,4146,6463,4426,5762,5858,6077,6253,4755,3967,4220,5965,6254,4989,5501,
+6464,4352,6726,6078,4764,2290,5246,3906,5438,5283,3767,4964,2861,5763,5094,6255,6256,4622,5616,5859,5860,4707,6727,4285,4708,4824,5617,6257,5551,4787,5212,4965,4935,4687,6465,6728,6466,5686,6079,3494,4413,2995,5247,5966,5618,6729,5967,5764,5765,5687,5502,6730,6731,6080,5397,6467,4990,6258,6732,4538,5060,5619,6733,4719,5688,5439,5018,5149,5284,5503,6734,6081,4607,6259,5120,3645,5861,4583,6260,4584,4675,5620,4098,5440,6261,4863,2379,3306,4585,5552,5689,4586,5285,6735,4864,6736,5286,6082,6737,4623,3010,
+4788,4381,4558,5621,4587,4896,3698,3161,5248,4353,4045,6262,3754,5183,4588,6738,6263,6739,6740,5622,3936,6741,6468,6742,6264,5095,6469,4991,5968,6743,4992,6744,6083,4897,6745,4256,5766,4307,3108,3968,4444,5287,3889,4343,6084,4510,6085,4559,6086,4898,5969,6746,5623,5061,4919,5249,5250,5504,5441,6265,5320,4878,3242,5862,5251,3428,6087,6747,4237,5624,5442,6266,5553,4539,6748,2585,3533,5398,4262,6088,5150,4736,4438,6089,6267,5505,4966,6749,6268,6750,6269,5288,5554,3650,6090,6091,4624,6092,5690,6751,5863,
+4270,5691,4277,5555,5864,6752,5692,4720,4865,6470,5151,4688,4825,6753,3094,6754,6471,3235,4653,6755,5213,5399,6756,3201,4589,5865,4967,6472,5866,6473,5019,3016,6757,5321,4756,3957,4573,6093,4993,5767,4721,6474,6758,5625,6759,4458,6475,6270,6760,5556,4994,5214,5252,6271,3875,5768,6094,5034,5506,4376,5769,6761,2120,6476,5253,5770,6762,5771,5970,3990,5971,5557,5558,5772,6477,6095,2787,4641,5972,5121,6096,6097,6272,6763,3703,5867,5507,6273,4206,6274,4789,6098,6764,3619,3646,3833,3804,2394,3788,4936,3978,
+4866,4899,6099,6100,5559,6478,6765,3599,5868,6101,5869,5870,6275,6766,4527,6767];!0},{"./init":21}],18:[function(b,a,d){!function(a){a.GB2312Prober=function(){a.MultiByteCharSetProber.apply(this);this.getCharsetName=function(){return"GB2312"};this._mCodingSM=new a.CodingStateMachine(a.GB2312SMModel);this._mDistributionAnalyzer=new a.GB2312DistributionAnalysis;this.reset()};a.GB2312Prober.prototype=new a.MultiByteCharSetProber}(b("./init"))},{"./init":21}],19:[function(b,a,d){!function(a){a.HebrewProber=
+function(){a.CharSetProber.apply(this);this.reset=function(){this._mFinalCharVisualScore=this._mFinalCharLogicalScore=0;this._mBeforePrev=this._mPrev=" "};this.setModelProbers=function(a,b){this._mLogicalProber=a;this._mVisualProber=b};this.isFinal=function(a){return-1!=["\u00ea","\u00ed","\u00ef","\u00f3","\u00f5"].indexOf(a)};this.isNonFinal=function(a){return-1!=["\u00eb","\u00ee","\u00f0","\u00f4"].indexOf(a)};this.feed=function(b){if(this.getState()==a.Constants.notMe)return a.Constants.notMe;
+b=this.filterHighBitOnly(b);for(var f=0,c;f<b.length;f++)c=b[f]," "==c?" "!=this._mBeforePrev&&(this.isFinal(this._mPrev)?this._mFinalCharLogicalScore++:this.isNonFinal(this._mPrev)&&this._mFinalCharVisualScore++):" "==this._mBeforePrev&&this.isFinal(this._mPrev)&&" "!=c&&this._mFinalCharVisualScore++,this._mBeforePrev=this._mPrev,this._mPrev=c;return a.Constants.detecting};this.getCharsetName=function(){var a=this._mFinalCharLogicalScore-this._mFinalCharVisualScore;if(5<=a)return"windows-1255";if(-5>=
+a)return"ISO-8859-8";var b=this._mLogicalProber.getConfidence()-this._mVisualProber.getConfidence();return.01<b?"windows-1255":-.01>b||0>a?"ISO-8859-8":"windows-1255"};this.getState=function(){return this._mLogicalProber.getState()==a.Constants.notMe&&this._mVisualProber.getState()==a.Constants.notMe?a.Constants.notMe:a.Constants.detecting};this._mVisualProber=this._mLogicalProber=null;this.reset()};a.HebrewProber.prototype=new a.CharSetProber;Array.prototype.indexOf||(Array.prototype.indexOf=function(a,
+b){var h=this.length>>>0,e=Number(b)||0,e=0>e?Math.ceil(e):Math.floor(e);for(0>e&&(e+=h);e<h;e++)if(e in this&&this[e]===a)return e;return-1})}(b("./init"))},{"./init":21}],20:[function(b,a,d){a.exports=b("./init")},{"./init":21}],21:[function(b,a,d){b("./constants");b("./codingstatemachine");b("./escsm");b("./mbcssm");b("./charsetprober");b("./mbcharsetprober");b("./jisfreq");b("./gb2312freq");b("./euckrfreq");b("./big5freq");b("./euctwfreq");b("./chardistribution");b("./jpcntx");b("./sjisprober");
+b("./utf8prober");b("./charsetgroupprober");b("./eucjpprober");b("./gb2312prober");b("./euckrprober");b("./big5prober");b("./euctwprober");b("./mbcsgroupprober");b("./sbcharsetprober");b("./langgreekmodel");b("./langthaimodel");b("./langbulgarianmodel");b("./langcyrillicmodel");b("./hebrewprober");b("./langhebrewmodel");b("./langhungarianmodel");b("./sbcsgroupprober");b("./latin1prober");b("./escprober");b("./universaldetector");d.VERSION="1.4.1";d.detect=function(a){var b=new d.UniversalDetector;
+b.reset();"function"==typeof Buffer&&a instanceof Buffer?b.feed(a.toString("binary")):b.feed(a);b.close();return b.result};d.log=function(){console.log.apply(console,arguments)}},{"./big5freq":3,"./big5prober":4,"./chardistribution":5,"./charsetgroupprober":6,"./charsetprober":7,"./codingstatemachine":8,"./constants":9,"./escprober":10,"./escsm":11,"./eucjpprober":12,"./euckrfreq":13,"./euckrprober":14,"./euctwfreq":15,"./euctwprober":16,"./gb2312freq":17,"./gb2312prober":18,"./hebrewprober":19,"./jisfreq":22,
+"./jpcntx":23,"./langbulgarianmodel":24,"./langcyrillicmodel":25,"./langgreekmodel":26,"./langhebrewmodel":27,"./langhungarianmodel":28,"./langthaimodel":29,"./latin1prober":30,"./mbcharsetprober":31,"./mbcsgroupprober":32,"./mbcssm":33,"./sbcharsetprober":34,"./sbcsgroupprober":35,"./sjisprober":36,"./universaldetector":37,"./utf8prober":38}],22:[function(b,a,d){b=b("./init");b.JIS_TYPICAL_DISTRIBUTION_RATIO=3;b.JIS_TABLE_SIZE=4368;b.JISCharToFreqOrder=[40,1,6,182,152,180,295,2127,285,381,3295,4304,
+3068,4606,3165,3510,3511,1822,2785,4607,1193,2226,5070,4608,171,2996,1247,18,179,5071,856,1661,1262,5072,619,127,3431,3512,3230,1899,1700,232,228,1294,1298,284,283,2041,2042,1061,1062,48,49,44,45,433,434,1040,1041,996,787,2997,1255,4305,2108,4609,1684,1648,5073,5074,5075,5076,5077,5078,3687,5079,4610,5080,3927,3928,5081,3296,3432,290,2285,1471,2187,5082,2580,2825,1303,2140,1739,1445,2691,3375,1691,3297,4306,4307,4611,452,3376,1182,2713,3688,3069,4308,5083,5084,5085,5086,5087,5088,5089,5090,5091,5092,
+5093,5094,5095,5096,5097,5098,5099,5100,5101,5102,5103,5104,5105,5106,5107,5108,5109,5110,5111,5112,4097,5113,5114,5115,5116,5117,5118,5119,5120,5121,5122,5123,5124,5125,5126,5127,5128,5129,5130,5131,5132,5133,5134,5135,5136,5137,5138,5139,5140,5141,5142,5143,5144,5145,5146,5147,5148,5149,5150,5151,5152,4612,5153,5154,5155,5156,5157,5158,5159,5160,5161,5162,5163,5164,5165,5166,5167,5168,5169,5170,5171,5172,5173,5174,5175,1472,598,618,820,1205,1309,1412,1858,1307,1692,5176,5177,5178,5179,5180,5181,
+5182,1142,1452,1234,1172,1875,2043,2149,1793,1382,2973,925,2404,1067,1241,960,1377,2935,1491,919,1217,1865,2030,1406,1499,2749,4098,5183,5184,5185,5186,5187,5188,2561,4099,3117,1804,2049,3689,4309,3513,1663,5189,3166,3118,3298,1587,1561,3433,5190,3119,1625,2998,3299,4613,1766,3690,2786,4614,5191,5192,5193,5194,2161,26,3377,2,3929,20,3691,47,4100,50,17,16,35,268,27,243,42,155,24,154,29,184,4,91,14,92,53,396,33,289,9,37,64,620,21,39,321,5,12,11,52,13,3,208,138,0,7,60,526,141,151,1069,181,275,1591,83,
+132,1475,126,331,829,15,69,160,59,22,157,55,1079,312,109,38,23,25,10,19,79,5195,61,382,1124,8,30,5196,5197,5198,5199,5200,5201,5202,5203,5204,5205,5206,89,62,74,34,2416,112,139,196,271,149,84,607,131,765,46,88,153,683,76,874,101,258,57,80,32,364,121,1508,169,1547,68,235,145,2999,41,360,3027,70,63,31,43,259,262,1383,99,533,194,66,93,846,217,192,56,106,58,565,280,272,311,256,146,82,308,71,100,128,214,655,110,261,104,1140,54,51,36,87,67,3070,185,2618,2936,2020,28,1066,2390,2059,5207,5208,5209,5210,5211,
+5212,5213,5214,5215,5216,4615,5217,5218,5219,5220,5221,5222,5223,5224,5225,5226,5227,5228,5229,5230,5231,5232,5233,5234,5235,5236,3514,5237,5238,5239,5240,5241,5242,5243,5244,2297,2031,4616,4310,3692,5245,3071,5246,3598,5247,4617,3231,3515,5248,4101,4311,4618,3808,4312,4102,5249,4103,4104,3599,5250,5251,5252,5253,5254,5255,5256,5257,5258,5259,5260,5261,5262,5263,5264,5265,5266,5267,5268,5269,5270,5271,5272,5273,5274,5275,5276,5277,5278,5279,5280,5281,5282,5283,5284,5285,5286,5287,5288,5289,5290,5291,
+5292,5293,5294,5295,5296,5297,5298,5299,5300,5301,5302,5303,5304,5305,5306,5307,5308,5309,5310,5311,5312,5313,5314,5315,5316,5317,5318,5319,5320,5321,5322,5323,5324,5325,5326,5327,5328,5329,5330,5331,5332,5333,5334,5335,5336,5337,5338,5339,5340,5341,5342,5343,5344,5345,5346,5347,5348,5349,5350,5351,5352,5353,5354,5355,5356,5357,5358,5359,5360,5361,5362,5363,5364,5365,5366,5367,5368,5369,5370,5371,5372,5373,5374,5375,5376,5377,5378,5379,5380,5381,363,642,2787,2878,2788,2789,2316,3232,2317,3434,2011,
+165,1942,3930,3931,3932,3933,5382,4619,5383,4620,5384,5385,5386,5387,5388,5389,5390,5391,5392,5393,5394,5395,5396,5397,5398,5399,5400,5401,5402,5403,5404,5405,5406,5407,5408,5409,5410,5411,5412,5413,5414,5415,5416,5417,5418,5419,5420,5421,5422,5423,5424,5425,5426,5427,5428,5429,5430,5431,5432,5433,5434,5435,5436,5437,5438,5439,5440,5441,5442,5443,5444,5445,5446,5447,5448,5449,5450,5451,5452,5453,5454,5455,5456,5457,5458,5459,5460,5461,5462,5463,5464,5465,5466,5467,5468,5469,5470,5471,5472,5473,5474,
+5475,5476,5477,5478,5479,5480,5481,5482,5483,5484,5485,5486,5487,5488,5489,5490,5491,5492,5493,5494,5495,5496,5497,5498,5499,5500,5501,5502,5503,5504,5505,5506,5507,5508,5509,5510,5511,5512,5513,5514,5515,5516,5517,5518,5519,5520,5521,5522,5523,5524,5525,5526,5527,5528,5529,5530,5531,5532,5533,5534,5535,5536,5537,5538,5539,5540,5541,5542,5543,5544,5545,5546,5547,5548,5549,5550,5551,5552,5553,5554,5555,5556,5557,5558,5559,5560,5561,5562,5563,5564,5565,5566,5567,5568,5569,5570,5571,5572,5573,5574,5575,
+5576,5577,5578,5579,5580,5581,5582,5583,5584,5585,5586,5587,5588,5589,5590,5591,5592,5593,5594,5595,5596,5597,5598,5599,5600,5601,5602,5603,5604,5605,5606,5607,5608,5609,5610,5611,5612,5613,5614,5615,5616,5617,5618,5619,5620,5621,5622,5623,5624,5625,5626,5627,5628,5629,5630,5631,5632,5633,5634,5635,5636,5637,5638,5639,5640,5641,5642,5643,5644,5645,5646,5647,5648,5649,5650,5651,5652,5653,5654,5655,5656,5657,5658,5659,5660,5661,5662,5663,5664,5665,5666,5667,5668,5669,5670,5671,5672,5673,5674,5675,5676,
+5677,5678,5679,5680,5681,5682,5683,5684,5685,5686,5687,5688,5689,5690,5691,5692,5693,5694,5695,5696,5697,5698,5699,5700,5701,5702,5703,5704,5705,5706,5707,5708,5709,5710,5711,5712,5713,5714,5715,5716,5717,5718,5719,5720,5721,5722,5723,5724,5725,5726,5727,5728,5729,5730,5731,5732,5733,5734,5735,5736,5737,5738,5739,5740,5741,5742,5743,5744,5745,5746,5747,5748,5749,5750,5751,5752,5753,5754,5755,5756,5757,5758,5759,5760,5761,5762,5763,5764,5765,5766,5767,5768,5769,5770,5771,5772,5773,5774,5775,5776,5777,
+5778,5779,5780,5781,5782,5783,5784,5785,5786,5787,5788,5789,5790,5791,5792,5793,5794,5795,5796,5797,5798,5799,5800,5801,5802,5803,5804,5805,5806,5807,5808,5809,5810,5811,5812,5813,5814,5815,5816,5817,5818,5819,5820,5821,5822,5823,5824,5825,5826,5827,5828,5829,5830,5831,5832,5833,5834,5835,5836,5837,5838,5839,5840,5841,5842,5843,5844,5845,5846,5847,5848,5849,5850,5851,5852,5853,5854,5855,5856,5857,5858,5859,5860,5861,5862,5863,5864,5865,5866,5867,5868,5869,5870,5871,5872,5873,5874,5875,5876,5877,5878,
+5879,5880,5881,5882,5883,5884,5885,5886,5887,5888,5889,5890,5891,5892,5893,5894,5895,5896,5897,5898,5899,5900,5901,5902,5903,5904,5905,5906,5907,5908,5909,5910,5911,5912,5913,5914,5915,5916,5917,5918,5919,5920,5921,5922,5923,5924,5925,5926,5927,5928,5929,5930,5931,5932,5933,5934,5935,5936,5937,5938,5939,5940,5941,5942,5943,5944,5945,5946,5947,5948,5949,5950,5951,5952,5953,5954,5955,5956,5957,5958,5959,5960,5961,5962,5963,5964,5965,5966,5967,5968,5969,5970,5971,5972,5973,5974,5975,5976,5977,5978,5979,
+5980,5981,5982,5983,5984,5985,5986,5987,5988,5989,5990,5991,5992,5993,5994,5995,5996,5997,5998,5999,6E3,6001,6002,6003,6004,6005,6006,6007,6008,6009,6010,6011,6012,6013,6014,6015,6016,6017,6018,6019,6020,6021,6022,6023,6024,6025,6026,6027,6028,6029,6030,6031,6032,6033,6034,6035,6036,6037,6038,6039,6040,6041,6042,6043,6044,6045,6046,6047,6048,6049,6050,6051,6052,6053,6054,6055,6056,6057,6058,6059,6060,6061,6062,6063,6064,6065,6066,6067,6068,6069,6070,6071,6072,6073,6074,6075,6076,6077,6078,6079,6080,
+6081,6082,6083,6084,6085,6086,6087,6088,6089,6090,6091,6092,6093,6094,6095,6096,6097,6098,6099,6100,6101,6102,6103,6104,6105,6106,6107,6108,6109,6110,6111,6112,6113,6114,2044,2060,4621,997,1235,473,1186,4622,920,3378,6115,6116,379,1108,4313,2657,2735,3934,6117,3809,636,3233,573,1026,3693,3435,2974,3300,2298,4105,854,2937,2463,393,2581,2417,539,752,1280,2750,2480,140,1161,440,708,1569,665,2497,1746,1291,1523,3E3,164,1603,847,1331,537,1997,486,508,1693,2418,1970,2227,878,1220,299,1030,969,652,2751,
+624,1137,3301,2619,65,3302,2045,1761,1859,3120,1930,3694,3516,663,1767,852,835,3695,269,767,2826,2339,1305,896,1150,770,1616,6118,506,1502,2075,1012,2519,775,2520,2975,2340,2938,4314,3028,2086,1224,1943,2286,6119,3072,4315,2240,1273,1987,3935,1557,175,597,985,3517,2419,2521,1416,3029,585,938,1931,1007,1052,1932,1685,6120,3379,4316,4623,804,599,3121,1333,2128,2539,1159,1554,2032,3810,687,2033,2904,952,675,1467,3436,6121,2241,1096,1786,2440,1543,1924,980,1813,2228,781,2692,1879,728,1918,3696,4624,548,
+1950,4625,1809,1088,1356,3303,2522,1944,502,972,373,513,2827,586,2377,2391,1003,1976,1631,6122,2464,1084,648,1776,4626,2141,324,962,2012,2177,2076,1384,742,2178,1448,1173,1810,222,102,301,445,125,2420,662,2498,277,200,1476,1165,1068,224,2562,1378,1446,450,1880,659,791,582,4627,2939,3936,1516,1274,555,2099,3697,1020,1389,1526,3380,1762,1723,1787,2229,412,2114,1900,2392,3518,512,2597,427,1925,2341,3122,1653,1686,2465,2499,697,330,273,380,2162,951,832,780,991,1301,3073,965,2270,3519,668,2523,2636,1286,
+535,1407,518,671,957,2658,2378,267,611,2197,3030,6123,248,2299,967,1799,2356,850,1418,3437,1876,1256,1480,2828,1718,6124,6125,1755,1664,2405,6126,4628,2879,2829,499,2179,676,4629,557,2329,2214,2090,325,3234,464,811,3001,992,2342,2481,1232,1469,303,2242,466,1070,2163,603,1777,2091,4630,2752,4631,2714,322,2659,1964,1768,481,2188,1463,2330,2857,3600,2092,3031,2421,4632,2318,2070,1849,2598,4633,1302,2254,1668,1701,2422,3811,2905,3032,3123,2046,4106,1763,1694,4634,1604,943,1724,1454,917,868,2215,1169,
+2940,552,1145,1800,1228,1823,1955,316,1080,2510,361,1807,2830,4107,2660,3381,1346,1423,1134,4108,6127,541,1263,1229,1148,2540,545,465,1833,2880,3438,1901,3074,2482,816,3937,713,1788,2500,122,1575,195,1451,2501,1111,6128,859,374,1225,2243,2483,4317,390,1033,3439,3075,2524,1687,266,793,1440,2599,946,779,802,507,897,1081,528,2189,1292,711,1866,1725,1167,1640,753,398,2661,1053,246,348,4318,137,1024,3440,1600,2077,2129,825,4319,698,238,521,187,2300,1157,2423,1641,1605,1464,1610,1097,2541,1260,1436,759,
+2255,1814,2150,705,3235,409,2563,3304,561,3033,2005,2564,726,1956,2343,3698,4109,949,3812,3813,3520,1669,653,1379,2525,881,2198,632,2256,1027,778,1074,733,1957,514,1481,2466,554,2180,702,3938,1606,1017,1398,6129,1380,3521,921,993,1313,594,449,1489,1617,1166,768,1426,1360,495,1794,3601,1177,3602,1170,4320,2344,476,425,3167,4635,3168,1424,401,2662,1171,3382,1998,1089,4110,477,3169,474,6130,1909,596,2831,1842,494,693,1051,1028,1207,3076,606,2115,727,2790,1473,1115,743,3522,630,805,1532,4321,2021,366,
+1057,838,684,1114,2142,4322,2050,1492,1892,1808,2271,3814,2424,1971,1447,1373,3305,1090,1536,3939,3523,3306,1455,2199,336,369,2331,1035,584,2393,902,718,2600,6131,2753,463,2151,1149,1611,2467,715,1308,3124,1268,343,1413,3236,1517,1347,2663,2093,3940,2022,1131,1553,2100,2941,1427,3441,2942,1323,2484,6132,1980,872,2368,2441,2943,320,2369,2116,1082,679,1933,3941,2791,3815,625,1143,2023,422,2200,3816,6133,730,1695,356,2257,1626,2301,2858,2637,1627,1778,937,883,2906,2693,3002,1769,1086,400,1063,1325,3307,
+2792,4111,3077,456,2345,1046,747,6134,1524,884,1094,3383,1474,2164,1059,974,1688,2181,2258,1047,345,1665,1187,358,875,3170,305,660,3524,2190,1334,1135,3171,1540,1649,2542,1527,927,968,2793,885,1972,1850,482,500,2638,1218,1109,1085,2543,1654,2034,876,78,2287,1482,1277,861,1675,1083,1779,724,2754,454,397,1132,1612,2332,893,672,1237,257,2259,2370,135,3384,337,2244,547,352,340,709,2485,1400,788,1138,2511,540,772,1682,2260,2272,2544,2013,1843,1902,4636,1999,1562,2288,4637,2201,1403,1533,407,576,3308,1254,
+2071,978,3385,170,136,1201,3125,2664,3172,2394,213,912,873,3603,1713,2202,699,3604,3699,813,3442,493,531,1054,468,2907,1483,304,281,4112,1726,1252,2094,339,2319,2130,2639,756,1563,2944,748,571,2976,1588,2425,2715,1851,1460,2426,1528,1392,1973,3237,288,3309,685,3386,296,892,2716,2216,1570,2245,722,1747,2217,905,3238,1103,6135,1893,1441,1965,251,1805,2371,3700,2601,1919,1078,75,2182,1509,1592,1270,2640,4638,2152,6136,3310,3817,524,706,1075,292,3818,1756,2602,317,98,3173,3605,3525,1844,2218,3819,2502,
+814,567,385,2908,1534,6137,534,1642,3239,797,6138,1670,1529,953,4323,188,1071,538,178,729,3240,2109,1226,1374,2E3,2357,2977,731,2468,1116,2014,2051,6139,1261,1593,803,2859,2736,3443,556,682,823,1541,6140,1369,2289,1706,2794,845,462,2603,2665,1361,387,162,2358,1740,739,1770,1720,1304,1401,3241,1049,627,1571,2427,3526,1877,3942,1852,1500,431,1910,1503,677,297,2795,286,1433,1038,1198,2290,1133,1596,4113,4639,2469,1510,1484,3943,6141,2442,108,712,4640,2372,866,3701,2755,3242,1348,834,1945,1408,3527,2395,
+3243,1811,824,994,1179,2110,1548,1453,790,3003,690,4324,4325,2832,2909,3820,1860,3821,225,1748,310,346,1780,2470,821,1993,2717,2796,828,877,3528,2860,2471,1702,2165,2910,2486,1789,453,359,2291,1676,73,1164,1461,1127,3311,421,604,314,1037,589,116,2487,737,837,1180,111,244,735,6142,2261,1861,1362,986,523,418,581,2666,3822,103,855,503,1414,1867,2488,1091,657,1597,979,605,1316,4641,1021,2443,2078,2001,1209,96,587,2166,1032,260,1072,2153,173,94,226,3244,819,2006,4642,4114,2203,231,1744,782,97,2667,786,
+3387,887,391,442,2219,4326,1425,6143,2694,633,1544,1202,483,2015,592,2052,1958,2472,1655,419,129,4327,3444,3312,1714,1257,3078,4328,1518,1098,865,1310,1019,1885,1512,1734,469,2444,148,773,436,1815,1868,1128,1055,4329,1245,2756,3445,2154,1934,1039,4643,579,1238,932,2320,353,205,801,115,2428,944,2321,1881,399,2565,1211,678,766,3944,335,2101,1459,1781,1402,3945,2737,2131,1010,844,981,1326,1013,550,1816,1545,2620,1335,1008,371,2881,936,1419,1613,3529,1456,1395,2273,1834,2604,1317,2738,2503,416,1643,4330,
+806,1126,229,591,3946,1314,1981,1576,1837,1666,347,1790,977,3313,764,2861,1853,688,2429,1920,1462,77,595,415,2002,3034,798,1192,4115,6144,2978,4331,3035,2695,2582,2072,2566,430,2430,1727,842,1396,3947,3702,613,377,278,236,1417,3388,3314,3174,757,1869,107,3530,6145,1194,623,2262,207,1253,2167,3446,3948,492,1117,1935,536,1838,2757,1246,4332,696,2095,2406,1393,1572,3175,1782,583,190,253,1390,2230,830,3126,3389,934,3245,1703,1749,2979,1870,2545,1656,2204,869,2346,4116,3176,1817,496,1764,4644,942,1504,
+404,1903,1122,1580,3606,2945,1022,515,372,1735,955,2431,3036,6146,2797,1110,2302,2798,617,6147,441,762,1771,3447,3607,3608,1904,840,3037,86,939,1385,572,1370,2445,1336,114,3703,898,294,203,3315,703,1583,2274,429,961,4333,1854,1951,3390,2373,3704,4334,1318,1381,966,1911,2322,1006,1155,309,989,458,2718,1795,1372,1203,252,1689,1363,3177,517,1936,168,1490,562,193,3823,1042,4117,1835,551,470,4645,395,489,3448,1871,1465,2583,2641,417,1493,279,1295,511,1236,1119,72,1231,1982,1812,3004,871,1564,984,3449,
+1667,2696,2096,4646,2347,2833,1673,3609,695,3246,2668,807,1183,4647,890,388,2333,1801,1457,2911,1765,1477,1031,3316,3317,1278,3391,2799,2292,2526,163,3450,4335,2669,1404,1802,6148,2323,2407,1584,1728,1494,1824,1269,298,909,3318,1034,1632,375,776,1683,2061,291,210,1123,809,1249,1002,2642,3038,206,1011,2132,144,975,882,1565,342,667,754,1442,2143,1299,2303,2062,447,626,2205,1221,2739,2912,1144,1214,2206,2584,760,1715,614,950,1281,2670,2621,810,577,1287,2546,4648,242,2168,250,2643,691,123,2644,647,313,
+1029,689,1357,2946,1650,216,771,1339,1306,808,2063,549,913,1371,2913,2914,6149,1466,1092,1174,1196,1311,2605,2396,1783,1796,3079,406,2671,2117,3949,4649,487,1825,2220,6150,2915,448,2348,1073,6151,2397,1707,130,900,1598,329,176,1959,2527,1620,6152,2275,4336,3319,1983,2191,3705,3610,2155,3706,1912,1513,1614,6153,1988,646,392,2304,1589,3320,3039,1826,1239,1352,1340,2916,505,2567,1709,1437,2408,2547,906,6154,2672,384,1458,1594,1100,1329,710,423,3531,2064,2231,2622,1989,2673,1087,1882,333,841,3005,1296,
+2882,2379,580,1937,1827,1293,2585,601,574,249,1772,4118,2079,1120,645,901,1176,1690,795,2207,478,1434,516,1190,1530,761,2080,930,1264,355,435,1552,644,1791,987,220,1364,1163,1121,1538,306,2169,1327,1222,546,2645,218,241,610,1704,3321,1984,1839,1966,2528,451,6155,2586,3707,2568,907,3178,254,2947,186,1845,4650,745,432,1757,428,1633,888,2246,2221,2489,3611,2118,1258,1265,956,3127,1784,4337,2490,319,510,119,457,3612,274,2035,2007,4651,1409,3128,970,2758,590,2800,661,2247,4652,2008,3950,1420,1549,3080,
+3322,3951,1651,1375,2111,485,2491,1429,1156,6156,2548,2183,1495,831,1840,2529,2446,501,1657,307,1894,3247,1341,666,899,2156,1539,2549,1559,886,349,2208,3081,2305,1736,3824,2170,2759,1014,1913,1386,542,1397,2948,490,368,716,362,159,282,2569,1129,1658,1288,1750,2674,276,649,2016,751,1496,658,1818,1284,1862,2209,2087,2512,3451,622,2834,376,117,1060,2053,1208,1721,1101,1443,247,1250,3179,1792,3952,2760,2398,3953,6157,2144,3708,446,2432,1151,2570,3452,2447,2761,2835,1210,2448,3082,424,2222,1251,2449,2119,
+2836,504,1581,4338,602,817,857,3825,2349,2306,357,3826,1470,1883,2883,255,958,929,2917,3248,302,4653,1050,1271,1751,2307,1952,1430,2697,2719,2359,354,3180,777,158,2036,4339,1659,4340,4654,2308,2949,2248,1146,2232,3532,2720,1696,2623,3827,6158,3129,1550,2698,1485,1297,1428,637,931,2721,2145,914,2550,2587,81,2450,612,827,2646,1242,4655,1118,2884,472,1855,3181,3533,3534,569,1353,2699,1244,1758,2588,4119,2009,2762,2171,3709,1312,1531,6159,1152,1938,134,1830,471,3710,2276,1112,1535,3323,3453,3535,982,
+1337,2950,488,826,674,1058,1628,4120,2017,522,2399,211,568,1367,3454,350,293,1872,1139,3249,1399,1946,3006,1300,2360,3324,588,736,6160,2606,744,669,3536,3828,6161,1358,199,723,848,933,851,1939,1505,1514,1338,1618,1831,4656,1634,3613,443,2740,3829,717,1947,491,1914,6162,2551,1542,4121,1025,6163,1099,1223,198,3040,2722,370,410,1905,2589,998,1248,3182,2380,519,1449,4122,1710,947,928,1153,4341,2277,344,2624,1511,615,105,161,1212,1076,1960,3130,2054,1926,1175,1906,2473,414,1873,2801,6164,2309,315,1319,
+3325,318,2018,2146,2157,963,631,223,4342,4343,2675,479,3711,1197,2625,3712,2676,2361,6165,4344,4123,6166,2451,3183,1886,2184,1674,1330,1711,1635,1506,799,219,3250,3083,3954,1677,3713,3326,2081,3614,1652,2073,4657,1147,3041,1752,643,1961,147,1974,3955,6167,1716,2037,918,3007,1994,120,1537,118,609,3184,4345,740,3455,1219,332,1615,3830,6168,1621,2980,1582,783,212,553,2350,3714,1349,2433,2082,4124,889,6169,2310,1275,1410,973,166,1320,3456,1797,1215,3185,2885,1846,2590,2763,4658,629,822,3008,763,940,1990,
+2862,439,2409,1566,1240,1622,926,1282,1907,2764,654,2210,1607,327,1130,3956,1678,1623,6170,2434,2192,686,608,3831,3715,903,3957,3042,6171,2741,1522,1915,1105,1555,2552,1359,323,3251,4346,3457,738,1354,2553,2311,2334,1828,2003,3832,1753,2351,1227,6172,1887,4125,1478,6173,2410,1874,1712,1847,520,1204,2607,264,4659,836,2677,2102,600,4660,3833,2278,3084,6174,4347,3615,1342,640,532,543,2608,1888,2400,2591,1009,4348,1497,341,1737,3616,2723,1394,529,3252,1321,983,4661,1515,2120,971,2592,924,287,1662,3186,
+4349,2700,4350,1519,908,1948,2452,156,796,1629,1486,2223,2055,694,4126,1259,1036,3392,1213,2249,2742,1889,1230,3958,1015,910,408,559,3617,4662,746,725,935,4663,3959,3009,1289,563,867,4664,3960,1567,2981,2038,2626,988,2263,2381,4351,143,2374,704,1895,6175,1188,3716,2088,673,3085,2362,4352,484,1608,1921,2765,2918,215,904,3618,3537,894,509,976,3043,2701,3961,4353,2837,2982,498,6176,6177,1102,3538,1332,3393,1487,1636,1637,233,245,3962,383,650,995,3044,460,1520,1206,2352,749,3327,530,700,389,1438,1560,
+1773,3963,2264,719,2951,2724,3834,870,1832,1644,1E3,839,2474,3717,197,1630,3394,365,2886,3964,1285,2133,734,922,818,1106,732,480,2083,1774,3458,923,2279,1350,221,3086,85,2233,2234,3835,1585,3010,2147,1387,1705,2382,1619,2475,133,239,2802,1991,1016,2084,2383,411,2838,1113,651,1985,1160,3328,990,1863,3087,1048,1276,2647,265,2627,1599,3253,2056,150,638,2019,656,853,326,1479,680,1439,4354,1001,1759,413,3459,3395,2492,1431,459,4355,1125,3329,2265,1953,1450,2065,2863,849,351,2678,3131,3254,3255,1104,1577,
+227,1351,1645,2453,2193,1421,2887,812,2121,634,95,2435,201,2312,4665,1646,1671,2743,1601,2554,2702,2648,2280,1315,1366,2089,3132,1573,3718,3965,1729,1189,328,2679,1077,1940,1136,558,1283,964,1195,621,2074,1199,1743,3460,3619,1896,1916,1890,3836,2952,1154,2112,1064,862,378,3011,2066,2113,2803,1568,2839,6178,3088,2919,1941,1660,2004,1992,2194,142,707,1590,1708,1624,1922,1023,1836,1233,1004,2313,789,741,3620,6179,1609,2411,1200,4127,3719,3720,4666,2057,3721,593,2840,367,2920,1878,6180,3461,1521,628,
+1168,692,2211,2649,300,720,2067,2571,2953,3396,959,2504,3966,3539,3462,1977,701,6181,954,1043,800,681,183,3722,1803,1730,3540,4128,2103,815,2314,174,467,230,2454,1093,2134,755,3541,3397,1141,1162,6182,1738,2039,270,3256,2513,1005,1647,2185,3837,858,1679,1897,1719,2954,2324,1806,402,670,167,4129,1498,2158,2104,750,6183,915,189,1680,1551,455,4356,1501,2455,405,1095,2955,338,1586,1266,1819,570,641,1324,237,1556,2650,1388,3723,6184,1368,2384,1343,1978,3089,2436,879,3724,792,1191,758,3012,1411,2135,1322,
+4357,240,4667,1848,3725,1574,6185,420,3045,1546,1391,714,4358,1967,941,1864,863,664,426,560,1731,2680,1785,2864,1949,2363,403,3330,1415,1279,2136,1697,2335,204,721,2097,3838,90,6186,2085,2505,191,3967,124,2148,1376,1798,1178,1107,1898,1405,860,4359,1243,1272,2375,2983,1558,2456,1638,113,3621,578,1923,2609,880,386,4130,784,2186,2266,1422,2956,2172,1722,497,263,2514,1267,2412,2610,177,2703,3542,774,1927,1344,616,1432,1595,1018,172,4360,2325,911,4361,438,1468,3622,794,3968,2024,2173,1681,1829,2957,945,
+895,3090,575,2212,2476,475,2401,2681,785,2744,1745,2293,2555,1975,3133,2865,394,4668,3839,635,4131,639,202,1507,2195,2766,1345,1435,2572,3726,1908,1184,1181,2457,3727,3134,4362,843,2611,437,916,4669,234,769,1884,3046,3047,3623,833,6187,1639,2250,2402,1355,1185,2010,2047,999,525,1732,1290,1488,2612,948,1578,3728,2413,2477,1216,2725,2159,334,3840,1328,3624,2921,1525,4132,564,1056,891,4363,1444,1698,2385,2251,3729,1365,2281,2235,1717,6188,864,3841,2515,444,527,2767,2922,3625,544,461,6189,566,209,2437,
+3398,2098,1065,2068,3331,3626,3257,2137,2138,2122,3730,2888,1995,1820,1044,6190,6191,6192,6193,6194,6195,6196,6197,6198,6199,6200,6201,6202,6203,6204,6205,4670,6206,6207,6208,6209,6210,6211,6212,6213,6214,6215,6216,6217,6218,6219,6220,6221,6222,6223,6224,6225,6226,6227,6228,6229,6230,6231,6232,6233,6234,6235,6236,6237,3187,6238,6239,3969,6240,6241,6242,6243,6244,4671,6245,6246,4672,6247,6248,4133,6249,6250,4364,6251,2923,2556,2613,4673,4365,3970,6252,6253,6254,6255,4674,6256,6257,6258,2768,2353,4366,
+4675,4676,3188,4367,3463,6259,4134,4677,4678,6260,2267,6261,3842,3332,4368,3543,6262,6263,6264,3013,1954,1928,4135,4679,6265,6266,2478,3091,6267,4680,4369,6268,6269,1699,6270,3544,4136,4681,6271,4137,6272,4370,2804,6273,6274,2593,3971,3972,4682,6275,2236,4683,6276,6277,4684,6278,6279,4138,3973,4685,6280,6281,3258,6282,6283,6284,6285,3974,4686,2841,3975,6286,6287,3545,6288,6289,4139,4687,4140,6290,4141,6291,4142,6292,6293,3333,6294,6295,6296,4371,6297,3399,6298,6299,4372,3976,6300,6301,6302,4373,6303,
+6304,3843,3731,6305,4688,4374,6306,6307,3259,2294,6308,3732,2530,4143,6309,4689,6310,6311,6312,3048,6313,6314,4690,3733,2237,6315,6316,2282,3334,6317,6318,3844,6319,6320,4691,6321,3400,4692,6322,4693,6323,3049,6324,4375,6325,3977,6326,6327,6328,3546,6329,4694,3335,6330,4695,4696,6331,6332,6333,6334,4376,3978,6335,4697,3979,4144,6336,3980,4698,6337,6338,6339,6340,6341,4699,4700,4701,6342,6343,4702,6344,6345,4703,6346,6347,4704,6348,4705,4706,3135,6349,4707,6350,4708,6351,4377,6352,4709,3734,4145,6353,
+2506,4710,3189,6354,3050,4711,3981,6355,3547,3014,4146,4378,3735,2651,3845,3260,3136,2224,1986,6356,3401,6357,4712,2594,3627,3137,2573,3736,3982,4713,3628,4714,4715,2682,3629,4716,6358,3630,4379,3631,6359,6360,6361,3983,6362,6363,6364,6365,4147,3846,4717,6366,6367,3737,2842,6368,4718,2628,6369,3261,6370,2386,6371,6372,3738,3984,4719,3464,4720,3402,6373,2924,3336,4148,2866,6374,2805,3262,4380,2704,2069,2531,3138,2806,2984,6375,2769,6376,4721,4722,3403,6377,6378,3548,6379,6380,2705,3092,1979,4149,2629,
+3337,2889,6381,3338,4150,2557,3339,4381,6382,3190,3263,3739,6383,4151,4723,4152,2558,2574,3404,3191,6384,6385,4153,6386,4724,4382,6387,6388,4383,6389,6390,4154,6391,4725,3985,6392,3847,4155,6393,6394,6395,6396,6397,3465,6398,4384,6399,6400,6401,6402,6403,6404,4156,6405,6406,6407,6408,2123,6409,6410,2326,3192,4726,6411,6412,6413,6414,4385,4157,6415,6416,4158,6417,3093,3848,6418,3986,6419,6420,3849,6421,6422,6423,4159,6424,6425,4160,6426,3740,6427,6428,6429,6430,3987,6431,4727,6432,2238,6433,6434,4386,
+3988,6435,6436,3632,6437,6438,2843,6439,6440,6441,6442,3633,6443,2958,6444,6445,3466,6446,2364,4387,3850,6447,4388,2959,3340,6448,3851,6449,4728,6450,6451,3264,4729,6452,3193,6453,4389,4390,2706,3341,4730,6454,3139,6455,3194,6456,3051,2124,3852,1602,4391,4161,3853,1158,3854,4162,3989,4392,3990,4731,4732,4393,2040,4163,4394,3265,6457,2807,3467,3855,6458,6459,6460,3991,3468,4733,4734,6461,3140,2960,6462,4735,6463,6464,6465,6466,4736,4737,4738,4739,6467,6468,4164,2403,3856,6469,6470,2770,2844,6471,4740,
+6472,6473,6474,6475,6476,6477,6478,3195,6479,4741,4395,6480,2867,6481,4742,2808,6482,2493,4165,6483,6484,6485,6486,2295,4743,6487,6488,6489,3634,6490,6491,6492,6493,6494,6495,6496,2985,4744,6497,6498,4745,6499,6500,2925,3141,4166,6501,6502,4746,6503,6504,4747,6505,6506,6507,2890,6508,6509,6510,6511,6512,6513,6514,6515,6516,6517,6518,6519,3469,4167,6520,6521,6522,4748,4396,3741,4397,4749,4398,3342,2125,4750,6523,4751,4752,4753,3052,6524,2961,4168,6525,4754,6526,4755,4399,2926,4169,6527,3857,6528,4400,
+4170,6529,4171,6530,6531,2595,6532,6533,6534,6535,3635,6536,6537,6538,6539,6540,6541,6542,4756,6543,6544,6545,6546,6547,6548,4401,6549,6550,6551,6552,4402,3405,4757,4403,6553,6554,6555,4172,3742,6556,6557,6558,3992,3636,6559,6560,3053,2726,6561,3549,4173,3054,4404,6562,6563,3993,4405,3266,3550,2809,4406,6564,6565,6566,4758,4759,6567,3743,6568,4760,3744,4761,3470,6569,6570,6571,4407,6572,3745,4174,6573,4175,2810,4176,3196,4762,6574,4177,6575,6576,2494,2891,3551,6577,6578,3471,6579,4408,6580,3015,3197,
+6581,3343,2532,3994,3858,6582,3094,3406,4409,6583,2892,4178,4763,4410,3016,4411,6584,3995,3142,3017,2683,6585,4179,6586,6587,4764,4412,6588,6589,4413,6590,2986,6591,2962,3552,6592,2963,3472,6593,6594,4180,4765,6595,6596,2225,3267,4414,6597,3407,3637,4766,6598,6599,3198,6600,4415,6601,3859,3199,6602,3473,4767,2811,4416,1856,3268,3200,2575,3996,3997,3201,4417,6603,3095,2927,6604,3143,6605,2268,6606,3998,3860,3096,2771,6607,6608,3638,2495,4768,6609,3861,6610,3269,2745,4769,4181,3553,6611,2845,3270,6612,
+6613,6614,3862,6615,6616,4770,4771,6617,3474,3999,4418,4419,6618,3639,3344,6619,4772,4182,6620,2126,6621,6622,6623,4420,4773,6624,3018,6625,4774,3554,6626,4183,2025,3746,6627,4184,2707,6628,4421,4422,3097,1775,4185,3555,6629,6630,2868,6631,6632,4423,6633,6634,4424,2414,2533,2928,6635,4186,2387,6636,4775,6637,4187,6638,1891,4425,3202,3203,6639,6640,4776,6641,3345,6642,6643,3640,6644,3475,3346,3641,4E3,6645,3144,6646,3098,2812,4188,3642,3204,6647,3863,3476,6648,3864,6649,4426,4001,6650,6651,6652,2576,
+6653,4189,4777,6654,6655,6656,2846,6657,3477,3205,4002,6658,4003,6659,3347,2252,6660,6661,6662,4778,6663,6664,6665,6666,6667,6668,6669,4779,4780,2048,6670,3478,3099,6671,3556,3747,4004,6672,6673,6674,3145,4005,3748,6675,6676,6677,6678,6679,3408,6680,6681,6682,6683,3206,3207,6684,6685,4781,4427,6686,4782,4783,4784,6687,6688,6689,4190,6690,6691,3479,6692,2746,6693,4428,6694,6695,6696,6697,6698,6699,4785,6700,6701,3208,2727,6702,3146,6703,6704,3409,2196,6705,4429,6706,6707,6708,2534,1996,6709,6710,6711,
+2747,6712,6713,6714,4786,3643,6715,4430,4431,6716,3557,6717,4432,4433,6718,6719,6720,6721,3749,6722,4006,4787,6723,6724,3644,4788,4434,6725,6726,4789,2772,6727,6728,6729,6730,6731,2708,3865,2813,4435,6732,6733,4790,4791,3480,6734,6735,6736,6737,4436,3348,6738,3410,4007,6739,6740,4008,6741,6742,4792,3411,4191,6743,6744,6745,6746,6747,3866,6748,3750,6749,6750,6751,6752,6753,6754,6755,3867,6756,4009,6757,4793,4794,6758,2814,2987,6759,6760,6761,4437,6762,6763,6764,6765,3645,6766,6767,3481,4192,6768,3751,
+6769,6770,2174,6771,3868,3752,6772,6773,6774,4193,4795,4438,3558,4796,4439,6775,4797,6776,6777,4798,6778,4799,3559,4800,6779,6780,6781,3482,6782,2893,6783,6784,4194,4801,4010,6785,6786,4440,6787,4011,6788,6789,6790,6791,6792,6793,4802,6794,6795,6796,4012,6797,6798,6799,6800,3349,4803,3483,6801,4804,4195,6802,4013,6803,6804,4196,6805,4014,4015,6806,2847,3271,2848,6807,3484,6808,6809,6810,4441,6811,4442,4197,4443,3272,4805,6812,3412,4016,1579,6813,6814,4017,6815,3869,6816,2964,6817,4806,6818,6819,4018,
+3646,6820,6821,4807,4019,4020,6822,6823,3560,6824,6825,4021,4444,6826,4198,6827,6828,4445,6829,6830,4199,4808,6831,6832,6833,3870,3019,2458,6834,3753,3413,3350,6835,4809,3871,4810,3561,4446,6836,6837,4447,4811,4812,6838,2459,4448,6839,4449,6840,6841,4022,3872,6842,4813,4814,6843,6844,4815,4200,4201,4202,6845,4023,6846,6847,4450,3562,3873,6848,6849,4816,4817,6850,4451,4818,2139,6851,3563,6852,6853,3351,6854,6855,3352,4024,2709,3414,4203,4452,6856,4204,6857,6858,3874,3875,6859,6860,4819,6861,6862,6863,
+6864,4453,3647,6865,6866,4820,6867,6868,6869,6870,4454,6871,2869,6872,6873,4821,6874,3754,6875,4822,4205,6876,6877,6878,3648,4206,4455,6879,4823,6880,4824,3876,6881,3055,4207,6882,3415,6883,6884,6885,4208,4209,6886,4210,3353,6887,3354,3564,3209,3485,2652,6888,2728,6889,3210,3755,6890,4025,4456,6891,4825,6892,6893,6894,6895,4211,6896,6897,6898,4826,6899,6900,4212,6901,4827,6902,2773,3565,6903,4828,6904,6905,6906,6907,3649,3650,6908,2849,3566,6909,3567,3100,6910,6911,6912,6913,6914,6915,4026,6916,3355,
+4829,3056,4457,3756,6917,3651,6918,4213,3652,2870,6919,4458,6920,2438,6921,6922,3757,2774,4830,6923,3356,4831,4832,6924,4833,4459,3653,2507,6925,4834,2535,6926,6927,3273,4027,3147,6928,3568,6929,6930,6931,4460,6932,3877,4461,2729,3654,6933,6934,6935,6936,2175,4835,2630,4214,4028,4462,4836,4215,6937,3148,4216,4463,4837,4838,4217,6938,6939,2850,4839,6940,4464,6941,6942,6943,4840,6944,4218,3274,4465,6945,6946,2710,6947,4841,4466,6948,6949,2894,6950,6951,4842,6952,4219,3057,2871,6953,6954,6955,6956,4467,
+6957,2711,6958,6959,6960,3275,3101,4843,6961,3357,3569,6962,4844,6963,6964,4468,4845,3570,6965,3102,4846,3758,6966,4847,3878,4848,4849,4029,6967,2929,3879,4850,4851,6968,6969,1733,6970,4220,6971,6972,6973,6974,6975,6976,4852,6977,6978,6979,6980,6981,6982,3759,6983,6984,6985,3486,3487,6986,3488,3416,6987,6988,6989,6990,6991,6992,6993,6994,6995,6996,6997,4853,6998,6999,4030,7E3,7001,3211,7002,7003,4221,7004,7005,3571,4031,7006,3572,7007,2614,4854,2577,7008,7009,2965,3655,3656,4855,2775,3489,3880,4222,
+4856,3881,4032,3882,3657,2730,3490,4857,7010,3149,7011,4469,4858,2496,3491,4859,2283,7012,7013,7014,2365,4860,4470,7015,7016,3760,7017,7018,4223,1917,7019,7020,7021,4471,7022,2776,4472,7023,7024,7025,7026,4033,7027,3573,4224,4861,4034,4862,7028,7029,1929,3883,4035,7030,4473,3058,7031,2536,3761,3884,7032,4036,7033,2966,2895,1968,4474,3276,4225,3417,3492,4226,2105,7034,7035,1754,2596,3762,4227,4863,4475,3763,4864,3764,2615,2777,3103,3765,3658,3418,4865,2296,3766,2815,7036,7037,7038,3574,2872,3277,4476,
+7039,4037,4477,7040,7041,4038,7042,7043,7044,7045,7046,7047,2537,7048,7049,7050,7051,7052,7053,7054,4478,7055,7056,3767,3659,4228,3575,7057,7058,4229,7059,7060,7061,3660,7062,3212,7063,3885,4039,2460,7064,7065,7066,7067,7068,7069,7070,7071,7072,7073,7074,4866,3768,4867,7075,7076,7077,7078,4868,3358,3278,2653,7079,7080,4479,3886,7081,7082,4869,7083,7084,7085,7086,7087,7088,2538,7089,7090,7091,4040,3150,3769,4870,4041,2896,3359,4230,2930,7092,3279,7093,2967,4480,3213,4481,3661,7094,7095,7096,7097,7098,
+7099,7100,7101,7102,2461,3770,7103,7104,4231,3151,7105,7106,7107,4042,3662,7108,7109,4871,3663,4872,4043,3059,7110,7111,7112,3493,2988,7113,4873,7114,7115,7116,3771,4874,7117,7118,4232,4875,7119,3576,2336,4876,7120,4233,3419,4044,4877,4878,4482,4483,4879,4484,4234,7121,3772,4880,1045,3280,3664,4881,4882,7122,7123,7124,7125,4883,7126,2778,7127,4485,4486,7128,4884,3214,3887,7129,7130,3215,7131,4885,4045,7132,7133,4046,7134,7135,7136,7137,7138,7139,7140,7141,7142,7143,4235,7144,4886,7145,7146,7147,4887,
+7148,7149,7150,4487,4047,4488,7151,7152,4888,4048,2989,3888,7153,3665,7154,4049,7155,7156,7157,7158,7159,7160,2931,4889,4890,4489,7161,2631,3889,4236,2779,7162,7163,4891,7164,3060,7165,1672,4892,7166,4893,4237,3281,4894,7167,7168,3666,7169,3494,7170,7171,4050,7172,7173,3104,3360,3420,4490,4051,2684,4052,7174,4053,7175,7176,7177,2253,4054,7178,7179,4895,7180,3152,3890,3153,4491,3216,7181,7182,7183,2968,4238,4492,4055,7184,2990,7185,2479,7186,7187,4493,7188,7189,7190,7191,7192,4896,7193,4897,2969,4494,
+4898,7194,3495,7195,7196,4899,4495,7197,3105,2731,7198,4900,7199,7200,7201,4056,7202,3361,7203,7204,4496,4901,4902,7205,4497,7206,7207,2315,4903,7208,4904,7209,4905,2851,7210,7211,3577,7212,3578,4906,7213,4057,3667,4907,7214,4058,2354,3891,2376,3217,3773,7215,7216,7217,7218,7219,4498,7220,4908,3282,2685,7221,3496,4909,2632,3154,4910,7222,2337,7223,4911,7224,7225,7226,4912,4913,3283,4239,4499,7227,2816,7228,7229,7230,7231,7232,7233,7234,4914,4500,4501,7235,7236,7237,2686,7238,4915,7239,2897,4502,7240,
+4503,7241,2516,7242,4504,3362,3218,7243,7244,7245,4916,7246,7247,4505,3363,7248,7249,7250,7251,3774,4506,7252,7253,4917,7254,7255,3284,2991,4918,4919,3219,3892,4920,3106,3497,4921,7256,7257,7258,4922,7259,4923,3364,4507,4508,4059,7260,4240,3498,7261,7262,4924,7263,2992,3893,4060,3220,7264,7265,7266,7267,7268,7269,4509,3775,7270,2817,7271,4061,4925,4510,3776,7272,4241,4511,3285,7273,7274,3499,7275,7276,7277,4062,4512,4926,7278,3107,3894,7279,7280,4927,7281,4513,7282,7283,3668,7284,7285,4242,4514,4243,
+7286,2058,4515,4928,4929,4516,7287,3286,4244,7288,4517,7289,7290,7291,3669,7292,7293,4930,4931,4932,2355,4933,7294,2633,4518,7295,4245,7296,7297,4519,7298,7299,4520,4521,4934,7300,4246,4522,7301,7302,7303,3579,7304,4247,4935,7305,4936,7306,7307,7308,7309,3777,7310,4523,7311,7312,7313,4248,3580,7314,4524,3778,4249,7315,3581,7316,3287,7317,3221,7318,4937,7319,7320,7321,7322,7323,7324,4938,4939,7325,4525,7326,7327,7328,4063,7329,7330,4940,7331,7332,4941,7333,4526,7334,3500,2780,1741,4942,2026,1742,7335,
+7336,3582,4527,2388,7337,7338,7339,4528,7340,4250,4943,7341,7342,7343,4944,7344,7345,7346,3020,7347,4945,7348,7349,7350,7351,3895,7352,3896,4064,3897,7353,7354,7355,4251,7356,7357,3898,7358,3779,7359,3780,3288,7360,7361,4529,7362,4946,4530,2027,7363,3899,4531,4947,3222,3583,7364,4948,7365,7366,7367,7368,4949,3501,4950,3781,4951,4532,7369,2517,4952,4252,4953,3155,7370,4954,4955,4253,2518,4533,7371,7372,2712,4254,7373,7374,7375,3670,4956,3671,7376,2389,3502,4065,7377,2338,7378,7379,7380,7381,3061,7382,
+4957,7383,7384,7385,7386,4958,4534,7387,7388,2993,7389,3062,7390,4959,7391,7392,7393,4960,3108,4961,7394,4535,7395,4962,3421,4536,7396,4963,7397,4964,1857,7398,4965,7399,7400,2176,3584,4966,7401,7402,3422,4537,3900,3585,7403,3782,7404,2852,7405,7406,7407,4538,3783,2654,3423,4967,4539,7408,3784,3586,2853,4540,4541,7409,3901,7410,3902,7411,7412,3785,3109,2327,3903,7413,7414,2970,4066,2932,7415,7416,7417,3904,3672,3424,7418,4542,4543,4544,7419,4968,7420,7421,4255,7422,7423,7424,7425,7426,4067,7427,3673,
+3365,4545,7428,3110,2559,3674,7429,7430,3156,7431,7432,3503,7433,3425,4546,7434,3063,2873,7435,3223,4969,4547,4548,2898,4256,4068,7436,4069,3587,3786,2933,3787,4257,4970,4971,3788,7437,4972,3064,7438,4549,7439,7440,7441,7442,7443,4973,3905,7444,2874,7445,7446,7447,7448,3021,7449,4550,3906,3588,4974,7450,7451,3789,3675,7452,2578,7453,4070,7454,7455,7456,4258,3676,7457,4975,7458,4976,4259,3790,3504,2634,4977,3677,4551,4260,7459,7460,7461,7462,3907,4261,4978,7463,7464,7465,7466,4979,4980,7467,7468,2213,
+4262,7469,7470,7471,3678,4981,7472,2439,7473,4263,3224,3289,7474,3908,2415,4982,7475,4264,7476,4983,2655,7477,7478,2732,4552,2854,2875,7479,7480,4265,7481,4553,4984,7482,7483,4266,7484,3679,3366,3680,2818,2781,2782,3367,3589,4554,3065,7485,4071,2899,7486,7487,3157,2462,4072,4555,4073,4985,4986,3111,4267,2687,3368,4556,4074,3791,4268,7488,3909,2783,7489,2656,1962,3158,4557,4987,1963,3159,3160,7490,3112,4988,4989,3022,4990,4991,3792,2855,7491,7492,2971,4558,7493,7494,4992,7495,7496,7497,7498,4993,7499,
+3426,4559,4994,7500,3681,4560,4269,4270,3910,7501,4075,4995,4271,7502,7503,4076,7504,4996,7505,3225,4997,4272,4077,2819,3023,7506,7507,2733,4561,7508,4562,7509,3369,3793,7510,3590,2508,7511,7512,4273,3113,2994,2616,7513,7514,7515,7516,7517,7518,2820,3911,4078,2748,7519,7520,4563,4998,7521,7522,7523,7524,4999,4274,7525,4564,3682,2239,4079,4565,7526,7527,7528,7529,5E3,7530,7531,5001,4275,3794,7532,7533,7534,3066,5002,4566,3161,7535,7536,4080,7537,3162,7538,7539,4567,7540,7541,7542,7543,7544,7545,5003,
+7546,4568,7547,7548,7549,7550,7551,7552,7553,7554,7555,7556,5004,7557,7558,7559,5005,7560,3795,7561,4569,7562,7563,7564,2821,3796,4276,4277,4081,7565,2876,7566,5006,7567,7568,2900,7569,3797,3912,7570,7571,7572,4278,7573,7574,7575,5007,7576,7577,5008,7578,7579,4279,2934,7580,7581,5009,7582,4570,7583,4280,7584,7585,7586,4571,4572,3913,7587,4573,3505,7588,5010,7589,7590,7591,7592,3798,4574,7593,7594,5011,7595,4281,7596,7597,7598,4282,5012,7599,7600,5013,3163,7601,5014,7602,3914,7603,7604,2734,4575,4576,
+4577,7605,7606,7607,7608,7609,3506,5015,4578,7610,4082,7611,2822,2901,2579,3683,3024,4579,3507,7612,4580,7613,3226,3799,5016,7614,7615,7616,7617,7618,7619,7620,2995,3290,7621,4083,7622,5017,7623,7624,7625,7626,7627,4581,3915,7628,3291,7629,5018,7630,7631,7632,7633,4084,7634,7635,3427,3800,7636,7637,4582,7638,5019,4583,5020,7639,3916,7640,3801,5021,4584,4283,7641,7642,3428,3591,2269,7643,2617,7644,4585,3592,7645,4586,2902,7646,7647,3227,5022,7648,4587,7649,4284,7650,7651,7652,4588,2284,7653,5023,7654,
+7655,7656,4589,5024,3802,7657,7658,5025,3508,4590,7659,7660,7661,1969,5026,7662,7663,3684,1821,2688,7664,2028,2509,4285,7665,2823,1841,7666,2689,3114,7667,3917,4085,2160,5027,5028,2972,7668,5029,7669,7670,7671,3593,4086,7672,4591,4087,5030,3803,7673,7674,7675,7676,7677,7678,7679,4286,2366,4592,4593,3067,2328,7680,7681,4594,3594,3918,2029,4287,7682,5031,3919,3370,4288,4595,2856,7683,3509,7684,7685,5032,5033,7686,7687,3804,2784,7688,7689,7690,7691,3371,7692,7693,2877,5034,7694,7695,3920,4289,4088,7696,
+7697,7698,5035,7699,5036,4290,5037,5038,5039,7700,7701,7702,5040,5041,3228,7703,1760,7704,5042,3229,4596,2106,4089,7705,4597,2824,5043,2107,3372,7706,4291,4090,5044,7707,4091,7708,5045,3025,3805,4598,4292,4293,4294,3373,7709,4599,7710,5046,7711,7712,5047,5048,3806,7713,7714,7715,5049,7716,7717,7718,7719,4600,5050,7720,7721,7722,5051,7723,4295,3429,7724,7725,7726,7727,3921,7728,3292,5052,4092,7729,7730,7731,7732,7733,7734,7735,5053,5054,7736,7737,7738,7739,3922,3685,7740,7741,7742,7743,2635,5055,7744,
+5056,4601,7745,7746,2560,7747,7748,7749,7750,3923,7751,7752,7753,7754,7755,4296,2903,7756,7757,7758,7759,7760,3924,7761,5057,4297,7762,7763,5058,4298,7764,4093,7765,7766,5059,3925,7767,7768,7769,7770,7771,7772,7773,7774,7775,7776,3595,7777,4299,5060,4094,7778,3293,5061,7779,7780,4300,7781,7782,4602,7783,3596,7784,7785,3430,2367,7786,3164,5062,5063,4301,7787,7788,4095,5064,5065,7789,3374,3115,7790,7791,7792,7793,7794,7795,7796,3597,4603,7797,7798,3686,3116,3807,5066,7799,7800,5067,7801,7802,4604,4302,
+5068,4303,4096,7803,7804,3294,7805,7806,5069,4605,2690,7807,3026,7808,7809,7810,7811,7812,7813,7814,7815,7816,7817,7818,7819,7820,7821,7822,7823,7824,7825,7826,7827,7828,7829,7830,7831,7832,7833,7834,7835,7836,7837,7838,7839,7840,7841,7842,7843,7844,7845,7846,7847,7848,7849,7850,7851,7852,7853,7854,7855,7856,7857,7858,7859,7860,7861,7862,7863,7864,7865,7866,7867,7868,7869,7870,7871,7872,7873,7874,7875,7876,7877,7878,7879,7880,7881,7882,7883,7884,7885,7886,7887,7888,7889,7890,7891,7892,7893,7894,7895,
+7896,7897,7898,7899,7900,7901,7902,7903,7904,7905,7906,7907,7908,7909,7910,7911,7912,7913,7914,7915,7916,7917,7918,7919,7920,7921,7922,7923,7924,3926,7925,7926,7927,7928,7929,7930,7931,7932,7933,7934,7935,7936,7937,7938,7939,7940,7941,7942,7943,7944,7945,7946,7947,7948,7949,7950,7951,7952,7953,7954,7955,7956,7957,7958,7959,7960,7961,7962,7963,7964,7965,7966,7967,7968,7969,7970,7971,7972,7973,7974,7975,7976,7977,7978,7979,7980,7981,7982,7983,7984,7985,7986,7987,7988,7989,7990,7991,7992,7993,7994,7995,
+7996,7997,7998,7999,8E3,8001,8002,8003,8004,8005,8006,8007,8008,8009,8010,8011,8012,8013,8014,8015,8016,8017,8018,8019,8020,8021,8022,8023,8024,8025,8026,8027,8028,8029,8030,8031,8032,8033,8034,8035,8036,8037,8038,8039,8040,8041,8042,8043,8044,8045,8046,8047,8048,8049,8050,8051,8052,8053,8054,8055,8056,8057,8058,8059,8060,8061,8062,8063,8064,8065,8066,8067,8068,8069,8070,8071,8072,8073,8074,8075,8076,8077,8078,8079,8080,8081,8082,8083,8084,8085,8086,8087,8088,8089,8090,8091,8092,8093,8094,8095,8096,
+8097,8098,8099,8100,8101,8102,8103,8104,8105,8106,8107,8108,8109,8110,8111,8112,8113,8114,8115,8116,8117,8118,8119,8120,8121,8122,8123,8124,8125,8126,8127,8128,8129,8130,8131,8132,8133,8134,8135,8136,8137,8138,8139,8140,8141,8142,8143,8144,8145,8146,8147,8148,8149,8150,8151,8152,8153,8154,8155,8156,8157,8158,8159,8160,8161,8162,8163,8164,8165,8166,8167,8168,8169,8170,8171,8172,8173,8174,8175,8176,8177,8178,8179,8180,8181,8182,8183,8184,8185,8186,8187,8188,8189,8190,8191,8192,8193,8194,8195,8196,8197,
+8198,8199,8200,8201,8202,8203,8204,8205,8206,8207,8208,8209,8210,8211,8212,8213,8214,8215,8216,8217,8218,8219,8220,8221,8222,8223,8224,8225,8226,8227,8228,8229,8230,8231,8232,8233,8234,8235,8236,8237,8238,8239,8240,8241,8242,8243,8244,8245,8246,8247,8248,8249,8250,8251,8252,8253,8254,8255,8256,8257,8258,8259,8260,8261,8262,8263,8264,8265,8266,8267,8268,8269,8270,8271];!0},{"./init":21}],23:[function(b,a,d){!function(a){a.jp2CharContext=[[0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1],[2,4,0,4,0,3,0,4,0,3,4,4,4,2,4,3,3,4,3,2,3,3,4,2,3,3,3,2,4,1,4,3,3,1,5,4,3,4,3,4,3,5,3,0,3,5,4,2,0,3,1,0,3,3,0,3,3,0,1,1,0,4,3,0,3,3,0,4,0,2,0,3,5,5,5,5,4,0,4,1,0,3,4],[0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2],[0,4,0,5,0,5,0,4,0,4,5,4,4,3,5,3,5,1,5,3,4,3,4,4,3,4,3,3,4,
+3,5,4,4,3,5,5,3,5,5,5,3,5,5,3,4,5,5,3,1,3,2,0,3,4,0,4,2,0,4,2,1,5,3,2,3,5,0,4,0,2,0,5,4,4,5,4,5,0,4,0,0,4,4],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,3,0,4,0,3,0,3,0,4,5,4,3,3,3,3,4,3,5,4,4,3,5,4,4,3,4,3,4,4,4,4,5,3,4,4,3,4,5,5,4,5,5,1,4,5,4,3,0,3,3,1,3,3,0,4,4,0,3,3,1,5,3,3,3,5,0,4,0,3,0,4,4,3,4,3,3,0,4,1,1,3,4],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,4,0,3,0,3,0,4,0,3,4,4,3,2,2,1,2,1,3,1,3,3,3,3,3,4,3,1,3,3,5,3,3,0,4,3,0,5,4,3,3,5,4,4,3,4,4,5,0,1,2,0,1,2,0,2,2,0,1,0,0,5,2,2,1,4,0,3,0,1,0,4,4,3,5,4,3,0,2,1,0,4,3],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,3,0,5,0,4,0,2,1,4,4,2,4,1,4,2,4,2,4,3,3,3,4,3,3,3,3,
+1,4,2,3,3,3,1,4,4,1,1,1,4,3,3,2,0,2,4,3,2,0,3,3,0,3,1,1,0,0,0,3,3,0,4,2,2,3,4,0,4,0,3,0,4,4,5,3,4,4,0,3,0,0,1,4],[1,4,0,4,0,4,0,4,0,3,5,4,4,3,4,3,5,4,3,3,4,3,5,4,4,4,4,3,4,2,4,3,3,1,5,4,3,2,4,5,4,5,5,4,4,5,4,4,0,3,2,2,3,3,0,4,3,1,3,2,1,4,3,3,4,5,0,3,0,2,0,4,5,5,4,5,4,0,4,0,0,5,4],[0,5,0,5,0,4,0,3,0,4,4,3,4,3,3,3,4,0,4,4,4,3,4,3,4,3,3,1,4,2,4,3,4,0,5,4,1,4,5,4,4,5,3,2,4,3,4,3,2,4,1,3,3,3,2,3,2,0,4,3,3,4,3,3,3,4,0,4,0,3,0,4,5,4,4,4,3,0,4,1,0,1,3],[0,3,1,4,0,3,0,2,0,3,4,4,3,1,4,2,3,3,4,3,4,3,4,3,4,4,
+3,2,3,1,5,4,4,1,4,4,3,5,4,4,3,5,5,4,3,4,4,3,1,2,3,1,2,2,0,3,2,0,3,1,0,5,3,3,3,4,3,3,3,3,4,4,4,4,5,4,2,0,3,3,2,4,3],[0,2,0,3,0,1,0,1,0,0,3,2,0,0,2,0,1,0,2,1,3,3,3,1,2,3,1,0,1,0,4,2,1,1,3,3,0,4,3,3,1,4,3,3,0,3,3,2,0,0,0,0,1,0,0,2,0,0,0,0,0,4,1,0,2,3,2,2,2,1,3,3,3,4,4,3,2,0,3,1,0,3,3],[0,4,0,4,0,3,0,3,0,4,4,4,3,3,3,3,3,3,4,3,4,2,4,3,4,3,3,2,4,3,4,5,4,1,4,5,3,5,4,5,3,5,4,0,3,5,5,3,1,3,3,2,2,3,0,3,4,1,3,3,2,4,3,3,3,4,0,4,0,3,0,4,5,4,4,5,3,0,4,1,0,3,4],[0,2,0,3,0,3,0,0,0,2,2,2,1,0,1,0,0,0,3,0,3,0,3,0,1,
+3,1,0,3,1,3,3,3,1,3,3,3,0,1,3,1,3,4,0,0,3,1,1,0,3,2,0,0,0,0,1,3,0,1,0,0,3,3,2,0,3,0,0,0,0,0,3,4,3,4,3,3,0,3,0,0,2,3],[2,3,0,3,0,2,0,1,0,3,3,4,3,1,3,1,1,1,3,1,4,3,4,3,3,3,0,0,3,1,5,4,3,1,4,3,2,5,5,4,4,4,4,3,3,4,4,4,0,2,1,1,3,2,0,1,2,0,0,1,0,4,1,3,3,3,0,3,0,1,0,4,4,4,5,5,3,0,2,0,0,4,4],[0,2,0,1,0,3,1,3,0,2,3,3,3,0,3,1,0,0,3,0,3,2,3,1,3,2,1,1,0,0,4,2,1,0,2,3,1,4,3,2,0,4,4,3,1,3,1,3,0,1,0,0,1,0,0,0,1,0,0,0,0,4,1,1,1,2,0,3,0,0,0,3,4,2,4,3,2,0,1,0,0,3,3],[0,1,0,4,0,5,0,4,0,2,4,4,2,3,3,2,3,3,5,3,3,3,4,3,
+4,2,3,0,4,3,3,3,4,1,4,3,2,1,5,5,3,4,5,1,3,5,4,2,0,3,3,0,1,3,0,4,2,0,1,3,1,4,3,3,3,3,0,3,0,1,0,3,4,4,4,5,5,0,3,0,1,4,5],[0,2,0,3,0,3,0,0,0,2,3,1,3,0,4,0,1,1,3,0,3,4,3,2,3,1,0,3,3,2,3,1,3,0,2,3,0,2,1,4,1,2,2,0,0,3,3,0,0,2,0,0,0,1,0,0,0,0,2,2,0,3,2,1,3,3,0,2,0,2,0,0,3,3,1,2,4,0,3,0,2,2,3],[2,4,0,5,0,4,0,4,0,2,4,4,4,3,4,3,3,3,1,2,4,3,4,3,4,4,5,0,3,3,3,3,2,0,4,3,1,4,3,4,1,4,4,3,3,4,4,3,1,2,3,0,4,2,0,4,1,0,3,3,0,4,3,3,3,4,0,4,0,2,0,3,5,3,4,5,2,0,3,0,0,4,5],[0,3,0,4,0,1,0,1,0,1,3,2,2,1,3,0,3,0,2,0,2,0,3,
+0,2,0,0,0,1,0,1,1,0,0,3,1,0,0,0,4,0,3,1,0,2,1,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,4,2,2,3,1,0,3,0,0,0,1,4,4,4,3,0,0,4,0,0,1,4],[1,4,1,5,0,3,0,3,0,4,5,4,4,3,5,3,3,4,4,3,4,1,3,3,3,3,2,1,4,1,5,4,3,1,4,4,3,5,4,4,3,5,4,3,3,4,4,4,0,3,3,1,2,3,0,3,1,0,3,3,0,5,4,4,4,4,4,4,3,3,5,4,4,3,3,5,4,0,3,2,0,4,4],[0,2,0,3,0,1,0,0,0,1,3,3,3,2,4,1,3,0,3,1,3,0,2,2,1,1,0,0,2,0,4,3,1,0,4,3,0,4,4,4,1,4,3,1,1,3,3,1,0,2,0,0,1,3,0,0,0,0,2,0,0,4,3,2,4,3,5,4,3,3,3,4,3,3,4,3,3,0,2,1,0,3,3],[0,2,0,4,0,3,0,2,0,2,5,5,3,4,4,4,4,1,4,3,3,0,
+4,3,4,3,1,3,3,2,4,3,0,3,4,3,0,3,4,4,2,4,4,0,4,5,3,3,2,2,1,1,1,2,0,1,5,0,3,3,2,4,3,3,3,4,0,3,0,2,0,4,4,3,5,5,0,0,3,0,2,3,3],[0,3,0,4,0,3,0,1,0,3,4,3,3,1,3,3,3,0,3,1,3,0,4,3,3,1,1,0,3,0,3,3,0,0,4,4,0,1,5,4,3,3,5,0,3,3,4,3,0,2,0,1,1,1,0,1,3,0,1,2,1,3,3,2,3,3,0,3,0,1,0,1,3,3,4,4,1,0,1,2,2,1,3],[0,1,0,4,0,4,0,3,0,1,3,3,3,2,3,1,1,0,3,0,3,3,4,3,2,4,2,0,1,0,4,3,2,0,4,3,0,5,3,3,2,4,4,4,3,3,3,4,0,1,3,0,0,1,0,0,1,0,0,0,0,4,2,3,3,3,0,3,0,0,0,4,4,4,5,3,2,0,3,3,0,3,5],[0,2,0,3,0,0,0,3,0,1,3,0,2,0,0,0,1,0,3,1,1,
+3,3,0,0,3,0,0,3,0,2,3,1,0,3,1,0,3,3,2,0,4,2,2,0,2,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,1,2,0,1,0,1,0,0,0,1,3,1,2,0,0,0,1,0,0,1,4],[0,3,0,3,0,5,0,1,0,2,4,3,1,3,3,2,1,1,5,2,1,0,5,1,2,0,0,0,3,3,2,2,3,2,4,3,0,0,3,3,1,3,3,0,2,5,3,4,0,3,3,0,1,2,0,2,2,0,3,2,0,2,2,3,3,3,0,2,0,1,0,3,4,4,2,5,4,0,3,0,0,3,5],[0,3,0,3,0,3,0,1,0,3,3,3,3,0,3,0,2,0,2,1,1,0,2,0,1,0,0,0,2,1,0,0,1,0,3,2,0,0,3,3,1,2,3,1,0,3,3,0,0,1,0,0,0,0,0,2,0,0,0,0,0,2,3,1,2,3,0,3,0,1,0,3,2,1,0,4,3,0,1,1,0,3,3],[0,4,0,5,0,3,0,3,0,4,5,5,4,3,5,3,4,3,5,3,
+3,2,5,3,4,4,4,3,4,3,4,5,5,3,4,4,3,4,4,5,4,4,4,3,4,5,5,4,2,3,4,2,3,4,0,3,3,1,4,3,2,4,3,3,5,5,0,3,0,3,0,5,5,5,5,4,4,0,4,0,1,4,4],[0,4,0,4,0,3,0,3,0,3,5,4,4,2,3,2,5,1,3,2,5,1,4,2,3,2,3,3,4,3,3,3,3,2,5,4,1,3,3,5,3,4,4,0,4,4,3,1,1,3,1,0,2,3,0,2,3,0,3,0,0,4,3,1,3,4,0,3,0,2,0,4,4,4,3,4,5,0,4,0,0,3,4],[0,3,0,3,0,3,1,2,0,3,4,4,3,3,3,0,2,2,4,3,3,1,3,3,3,1,1,0,3,1,4,3,2,3,4,4,2,4,4,4,3,4,4,3,2,4,4,3,1,3,3,1,3,3,0,4,1,0,2,2,1,4,3,2,3,3,5,4,3,3,5,4,4,3,3,0,4,0,3,2,2,4,4],[0,2,0,1,0,0,0,0,0,1,2,1,3,0,0,0,0,0,2,
+0,1,2,1,0,0,1,0,0,0,0,3,0,0,1,0,1,1,3,1,0,0,0,1,1,0,1,1,0,0,0,0,0,2,0,0,0,0,0,0,0,0,1,1,2,2,0,3,4,0,0,0,1,1,0,0,1,0,0,0,0,0,1,1],[0,1,0,0,0,1,0,0,0,0,4,0,4,1,4,0,3,0,4,0,3,0,4,0,3,0,3,0,4,1,5,1,4,0,0,3,0,5,0,5,2,0,1,0,0,0,2,1,4,0,1,3,0,0,3,0,0,3,1,1,4,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0],[1,4,0,5,0,3,0,2,0,3,5,4,4,3,4,3,5,3,4,3,3,0,4,3,3,3,3,3,3,2,4,4,3,1,3,4,4,5,4,4,3,4,4,1,3,5,4,3,3,3,1,2,2,3,3,1,3,1,3,3,3,5,3,3,4,5,0,3,0,3,0,3,4,3,4,4,3,0,3,0,2,4,3],[0,1,0,4,0,0,0,0,0,1,4,0,4,1,4,2,4,0,
+3,0,1,0,1,0,0,0,0,0,2,0,3,1,1,1,0,3,0,0,0,1,2,1,0,0,1,1,1,1,0,1,0,0,0,1,0,0,3,0,0,0,0,3,2,0,2,2,0,1,0,0,0,2,3,2,3,3,0,0,0,0,2,1,0],[0,5,1,5,0,3,0,3,0,5,4,4,5,1,5,3,3,0,4,3,4,3,5,3,4,3,3,2,4,3,4,3,3,0,3,3,1,4,4,3,4,4,4,3,4,5,5,3,2,3,1,1,3,3,1,3,1,1,3,3,2,4,5,3,3,5,0,4,0,3,0,4,4,3,5,3,3,0,3,4,0,4,3],[0,5,0,5,0,3,0,2,0,4,4,3,5,2,4,3,3,3,4,4,4,3,5,3,5,3,3,1,4,0,4,3,3,0,3,3,0,4,4,4,4,5,4,3,3,5,5,3,2,3,1,2,3,2,0,1,0,0,3,2,2,4,4,3,1,5,0,4,0,3,0,4,3,1,3,2,1,0,3,3,0,3,3],[0,4,0,5,0,5,0,4,0,4,5,5,5,3,4,3,3,
+2,5,4,4,3,5,3,5,3,4,0,4,3,4,4,3,2,4,4,3,4,5,4,4,5,5,0,3,5,5,4,1,3,3,2,3,3,1,3,1,0,4,3,1,4,4,3,4,5,0,4,0,2,0,4,3,4,4,3,3,0,4,0,0,5,5],[0,4,0,4,0,5,0,1,1,3,3,4,4,3,4,1,3,0,5,1,3,0,3,1,3,1,1,0,3,0,3,3,4,0,4,3,0,4,4,4,3,4,4,0,3,5,4,1,0,3,0,0,2,3,0,3,1,0,3,1,0,3,2,1,3,5,0,3,0,1,0,3,2,3,3,4,4,0,2,2,0,4,4],[2,4,0,5,0,4,0,3,0,4,5,5,4,3,5,3,5,3,5,3,5,2,5,3,4,3,3,4,3,4,5,3,2,1,5,4,3,2,3,4,5,3,4,1,2,5,4,3,0,3,3,0,3,2,0,2,3,0,4,1,0,3,4,3,3,5,0,3,0,1,0,4,5,5,5,4,3,0,4,2,0,3,5],[0,5,0,4,0,4,0,2,0,5,4,3,4,3,4,3,
+3,3,4,3,4,2,5,3,5,3,4,1,4,3,4,4,4,0,3,5,0,4,4,4,4,5,3,1,3,4,5,3,3,3,3,3,3,3,0,2,2,0,3,3,2,4,3,3,3,5,3,4,1,3,3,5,3,2,0,0,0,0,4,3,1,3,3],[0,1,0,3,0,3,0,1,0,1,3,3,3,2,3,3,3,0,3,0,0,0,3,1,3,0,0,0,2,2,2,3,0,0,3,2,0,1,2,4,1,3,3,0,0,3,3,3,0,1,0,0,2,1,0,0,3,0,3,1,0,3,0,0,1,3,0,2,0,1,0,3,3,1,3,3,0,0,1,1,0,3,3],[0,2,0,3,0,2,1,4,0,2,2,3,1,1,3,1,1,0,2,0,3,1,2,3,1,3,0,0,1,0,4,3,2,3,3,3,1,4,2,3,3,3,3,1,0,3,1,4,0,1,1,0,1,2,0,1,1,0,1,1,0,3,1,3,2,2,0,1,0,0,0,2,3,3,3,1,0,0,0,0,0,2,3],[0,5,0,4,0,5,0,2,0,4,5,5,3,3,4,
+3,3,1,5,4,4,2,4,4,4,3,4,2,4,3,5,5,4,3,3,4,3,3,5,5,4,5,5,1,3,4,5,3,1,4,3,1,3,3,0,3,3,1,4,3,1,4,5,3,3,5,0,4,0,3,0,5,3,3,1,4,3,0,4,0,1,5,3],[0,5,0,5,0,4,0,2,0,4,4,3,4,3,3,3,3,3,5,4,4,4,4,4,4,5,3,3,5,2,4,4,4,3,4,4,3,3,4,4,5,5,3,3,4,3,4,3,3,4,3,3,3,3,1,2,2,1,4,3,3,5,4,4,3,4,0,4,0,3,0,4,4,4,4,4,1,0,4,2,0,2,4],[0,4,0,4,0,3,0,1,0,3,5,2,3,0,3,0,2,1,4,2,3,3,4,1,4,3,3,2,4,1,3,3,3,0,3,3,0,0,3,3,3,5,3,3,3,3,3,2,0,2,0,0,2,0,0,2,0,0,1,0,0,3,1,2,2,3,0,3,0,2,0,4,4,3,3,4,1,0,3,0,0,2,4],[0,0,0,4,0,0,0,0,0,0,1,0,1,0,
+2,0,0,0,0,0,1,0,2,0,1,0,0,0,0,0,3,1,3,0,3,2,0,0,0,1,0,3,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,0,2,0,0,0,0,0,0,2],[0,2,1,3,0,2,0,2,0,3,3,3,3,1,3,1,3,3,3,3,3,3,4,2,2,1,2,1,4,0,4,3,1,3,3,3,2,4,3,5,4,3,3,3,3,3,3,3,0,1,3,0,2,0,0,1,0,0,1,0,0,4,2,0,2,3,0,3,3,0,3,3,4,2,3,1,4,0,1,2,0,2,3],[0,3,0,3,0,1,0,3,0,2,3,3,3,0,3,1,2,0,3,3,2,3,3,2,3,2,3,1,3,0,4,3,2,0,3,3,1,4,3,3,2,3,4,3,1,3,3,1,1,0,1,1,0,1,0,1,0,1,0,0,0,4,1,1,0,3,0,3,1,0,2,3,3,3,3,3,1,0,0,2,0,3,3],[0,0,0,0,0,0,0,0,0,0,3,0,2,
+0,3,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,3,0,3,0,3,1,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,2,0,2,3,0,0,0,0,0,0,0,0,3],[0,2,0,3,1,3,0,3,0,2,3,3,3,1,3,1,3,1,3,1,3,3,3,1,3,0,2,3,1,1,4,3,3,2,3,3,1,2,2,4,1,3,3,0,1,4,2,3,0,1,3,0,3,0,0,1,3,0,2,0,0,3,3,2,1,3,0,3,0,2,0,3,4,4,4,3,1,0,3,0,0,3,3],[0,2,0,1,0,2,0,0,0,1,3,2,2,1,3,0,1,1,3,0,3,2,3,1,2,0,2,0,1,1,3,3,3,0,3,3,1,1,2,3,2,3,3,1,2,3,2,0,0,1,0,0,0,0,0,0,3,0,1,0,0,2,1,2,1,3,0,3,0,0,0,3,4,4,4,3,2,0,2,0,0,2,4],[0,0,0,1,0,1,0,0,0,0,1,0,
+0,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,2,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,3,1,0,0,0,0,0,0,0,3],[0,3,0,3,0,2,0,3,0,3,3,3,2,3,2,2,2,0,3,1,3,3,3,2,3,3,0,0,3,0,3,2,2,0,2,3,1,4,3,4,3,3,2,3,1,5,4,4,0,3,1,2,1,3,0,3,1,1,2,0,2,3,1,3,1,3,0,3,0,1,0,3,3,4,4,2,1,0,2,1,0,2,4],[0,1,0,3,0,1,0,2,0,1,4,2,5,1,4,0,2,0,2,1,3,1,4,0,2,1,0,0,2,1,4,1,1,0,3,3,0,5,1,3,2,3,3,1,0,3,2,3,0,1,0,0,0,0,0,0,1,0,0,0,0,4,0,1,0,3,0,2,0,1,0,3,3,3,4,3,3,0,0,0,0,2,3],[0,0,0,1,0,0,0,0,0,0,2,
+0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,0,1,0,0,0,0,0,3],[0,1,0,3,0,4,0,3,0,2,4,3,1,0,3,2,2,1,3,1,2,2,3,1,1,1,2,1,3,0,1,2,0,1,3,2,1,3,0,5,5,1,0,0,1,3,2,1,0,3,0,0,1,0,0,0,0,0,3,4,0,1,1,1,3,2,0,2,0,1,0,2,3,3,1,2,3,0,1,0,1,0,4],[0,0,0,1,0,3,0,3,0,2,2,1,0,0,4,0,3,0,3,1,3,0,3,0,3,0,1,0,3,0,3,1,3,0,3,3,0,0,1,2,1,1,1,0,1,2,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,2,2,1,2,0,0,2,0,0,0,0,2,3,3,3,3,0,0,0,0,1,4],[0,0,0,3,0,3,0,0,0,0,
+3,1,1,0,3,0,1,0,2,0,1,0,0,0,0,0,0,0,1,0,3,0,2,0,2,3,0,0,2,2,3,1,2,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,2,0,0,0,0,2,3],[2,4,0,5,0,5,0,4,0,3,4,3,3,3,4,3,3,3,4,3,4,4,5,4,5,5,5,2,3,0,5,5,4,1,5,4,3,1,5,4,3,4,4,3,3,4,3,3,0,3,2,0,2,3,0,3,0,0,3,3,0,5,3,2,3,3,0,3,0,3,0,3,4,5,4,5,3,0,4,3,0,3,4],[0,3,0,3,0,3,0,3,0,3,3,4,3,2,3,2,3,0,4,3,3,3,3,3,3,3,3,0,3,2,4,3,3,1,3,4,3,4,4,4,3,4,4,3,2,4,4,1,0,2,0,0,1,1,0,2,0,0,3,1,0,5,3,2,1,3,0,3,0,1,2,4,3,2,4,3,3,0,3,2,0,4,4],[0,3,0,3,0,1,0,0,0,
+1,4,3,3,2,3,1,3,1,4,2,3,2,4,2,3,4,3,0,2,2,3,3,3,0,3,3,3,0,3,4,1,3,3,0,3,4,3,3,0,1,1,0,1,0,0,0,4,0,3,0,0,3,1,2,1,3,0,4,0,1,0,4,3,3,4,3,3,0,2,0,0,3,3],[0,3,0,4,0,1,0,3,0,3,4,3,3,0,3,3,3,1,3,1,3,3,4,3,3,3,0,0,3,1,5,3,3,1,3,3,2,5,4,3,3,4,5,3,2,5,3,4,0,1,0,0,0,0,0,2,0,0,1,1,0,4,2,2,1,3,0,3,0,2,0,4,4,3,5,3,2,0,1,1,0,3,4],[0,5,0,4,0,5,0,2,0,4,4,3,3,2,3,3,3,1,4,3,4,1,5,3,4,3,4,0,4,2,4,3,4,1,5,4,0,4,4,4,4,5,4,1,3,5,4,2,1,4,1,1,3,2,0,3,1,0,3,2,1,4,3,3,3,4,0,4,0,3,0,4,4,4,3,3,3,0,4,2,0,3,4],[1,4,0,4,0,3,0,1,
+0,3,3,3,1,1,3,3,2,2,3,3,1,0,3,2,2,1,2,0,3,1,2,1,2,0,3,2,0,2,2,3,3,4,3,0,3,3,1,2,0,1,1,3,1,2,0,0,3,0,1,1,0,3,2,2,3,3,0,3,0,0,0,2,3,3,4,3,3,0,1,0,0,1,4],[0,4,0,4,0,4,0,0,0,3,4,4,3,1,4,2,3,2,3,3,3,1,4,3,4,0,3,0,4,2,3,3,2,2,5,4,2,1,3,4,3,4,3,1,3,3,4,2,0,2,1,0,3,3,0,0,2,0,3,1,0,4,4,3,4,3,0,4,0,1,0,2,4,4,4,4,4,0,3,2,0,3,3],[0,0,0,1,0,4,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,3,2,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,2],[0,2,0,3,0,4,0,
+4,0,1,3,3,3,0,4,0,2,1,2,1,1,1,2,0,3,1,1,0,1,0,3,1,0,0,3,3,2,0,1,1,0,0,0,0,0,1,0,2,0,2,2,0,3,1,0,0,1,0,1,1,0,1,2,0,3,0,0,0,0,1,0,0,3,3,4,3,1,0,1,0,3,0,2],[0,0,0,3,0,5,0,0,0,0,1,0,2,0,3,1,0,1,3,0,0,0,2,0,0,0,1,0,0,0,1,1,0,0,4,0,0,0,2,3,0,1,4,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,3,0,0,0,0,0,3],[0,2,0,5,0,5,0,1,0,2,4,3,3,2,5,1,3,2,3,3,3,0,4,1,2,0,3,0,4,0,2,2,1,1,5,3,0,0,1,4,2,3,2,0,3,3,3,2,0,2,4,1,1,2,0,1,1,0,3,1,0,1,3,1,2,3,0,2,0,0,0,1,3,5,4,4,4,0,3,0,0,1,3],[0,4,0,5,0,4,
+0,4,0,4,5,4,3,3,4,3,3,3,4,3,4,4,5,3,4,5,4,2,4,2,3,4,3,1,4,4,1,3,5,4,4,5,5,4,4,5,5,5,2,3,3,1,4,3,1,3,3,0,3,3,1,4,3,4,4,4,0,3,0,4,0,3,3,4,4,5,0,0,4,3,0,4,5],[0,4,0,4,0,3,0,3,0,3,4,4,4,3,3,2,4,3,4,3,4,3,5,3,4,3,2,1,4,2,4,4,3,1,3,4,2,4,5,5,3,4,5,4,1,5,4,3,0,3,2,2,3,2,1,3,1,0,3,3,3,5,3,3,3,5,4,4,2,3,3,4,3,3,3,2,1,0,3,2,1,4,3],[0,4,0,5,0,4,0,3,0,3,5,5,3,2,4,3,4,0,5,4,4,1,4,4,4,3,3,3,4,3,5,5,2,3,3,4,1,2,5,5,3,5,5,2,3,5,5,4,0,3,2,0,3,3,1,1,5,1,4,1,0,4,3,2,3,5,0,4,0,3,0,5,4,3,4,3,0,0,4,1,0,4,4],[1,3,0,4,0,
+2,0,2,0,2,5,5,3,3,3,3,3,0,4,2,3,4,4,4,3,4,0,0,3,4,5,4,3,3,3,3,2,5,5,4,5,5,5,4,3,5,5,5,1,3,1,0,1,0,0,3,2,0,4,2,0,5,2,3,2,4,1,3,0,3,0,4,5,4,5,4,3,0,4,2,0,5,4],[0,3,0,4,0,5,0,3,0,3,4,4,3,2,3,2,3,3,3,3,3,2,4,3,3,2,2,0,3,3,3,3,3,1,3,3,3,0,4,4,3,4,4,1,1,4,4,2,0,3,1,0,1,1,0,4,1,0,2,3,1,3,3,1,3,4,0,3,0,1,0,3,1,3,0,0,1,0,2,0,0,4,4],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,3,0,3,
+0,2,0,3,0,1,5,4,3,3,3,1,4,2,1,2,3,4,4,2,4,4,5,0,3,1,4,3,4,0,4,3,3,3,2,3,2,5,3,4,3,2,2,3,0,0,3,0,2,1,0,1,2,0,0,0,0,2,1,1,3,1,0,2,0,4,0,3,4,4,4,5,2,0,2,0,0,1,3],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,0,0,1,1,0,0,0,4,2,1,1,0,1,0,3,2,0,0,3,1,1,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,1,0,0,0,2,0,0,0,1,4,0,4,2,1,0,0,0,0,0,1],[0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,3,1,0,0,0,2,0,2,1,0,0,1,2,1,0,1,1,0,0,3,0,0,0,0,0,0,0,0,0,0,0,1,3,1,0,0,0,0,0,1,0,0,2,1,0,0,0,0,0,0,0,0,2],[0,4,0,
+4,0,4,0,3,0,4,4,3,4,2,4,3,2,0,4,4,4,3,5,3,5,3,3,2,4,2,4,3,4,3,1,4,0,2,3,4,4,4,3,3,3,4,4,4,3,4,1,3,4,3,2,1,2,1,3,3,3,4,4,3,3,5,0,4,0,3,0,4,3,3,3,2,1,0,3,0,0,3,3],[0,4,0,3,0,3,0,3,0,3,5,5,3,3,3,3,4,3,4,3,3,3,4,4,4,3,3,3,3,4,3,5,3,3,1,3,2,4,5,5,5,5,4,3,4,5,5,3,2,2,3,3,3,3,2,3,3,1,2,3,2,4,3,3,3,4,0,4,0,2,0,4,3,2,2,1,2,0,3,0,0,4,1]];a.JapaneseContextAnalysis=function(){this.reset=function(){this._mTotalRel=0;this._mRelSample=[];for(var a=0;6>a;this._mRelSample[a++]=0);this._mNeedToSkipCharNum=0;this._mLastCharOrder=
+-1;this._mDone=!1};this.feed=function(b,f){if(!this._mDone)for(var c=this._mNeedToSkipCharNum;c<f;){var e=this.getOrder(b.slice(c,c+2)),d=e[0],c=c+e[1];if(c>f)this._mNeedToSkipCharNum=c-f,this._mLastCharOrder=-1;else{if(-1!=d&&-1!=this._mLastCharOrder){this._mTotalRel+=1;if(1E3<this._mTotalRel){this._mDone=!0;break}this._mRelSample[a.jp2CharContext[this._mLastCharOrder][d]]+=1}this._mLastCharOrder=d}}};this.gotEnoughData=function(){return 100<this._mTotalRel};this.getConfidence=function(){return 4<
+this._mTotalRel?(this._mTotalRel-this._mRelSample[0])/this._mTotalRel:-1};this.getOrder=function(a){return[-1,1]};this.reset()};a.SJISContextAnalysis=function(){this.getOrder=function(a){if(!a)return[-1,1];var b=129<=a.charCodeAt(0)&&159>=a.charCodeAt(0)||224<=a.charCodeAt(0)&&252>=a.charCodeAt(0)?2:1;return 1<a.length&&130==a.charCodeAt(0)&&159<=a.charCodeAt(1)&&241>=a.charCodeAt(0)?[a.charCodeAt(1)-159,b]:[-1,b]}};a.SJISContextAnalysis.prototype=new a.JapaneseContextAnalysis;a.EUCJPContextAnalysis=
+function(){this.getOrder=function(a){if(!a)return[-1,1];var b=142<=a.charCodeAt(0)||161<=a.charCodeAt(0)&&254>=a.charCodeAt(0)?2:143==a.charCodeAt(0)?3:1;return 1<a.length&&164==a.charCodeAt(0)&&161<=a.charCodeAt(1)&&243>=a.charCodeAt(1)?[a.charCodeAt(1)-161,b]:[-1,b]}};a.EUCJPContextAnalysis.prototype=new a.JapaneseContextAnalysis}(b("./init"))},{"./init":21}],24:[function(b,a,d){b=b("./init");b.Latin5_BulgarianCharToOrderMap=[255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253,253,77,90,99,100,72,109,107,101,79,185,81,102,76,94,82,110,186,108,91,74,119,84,96,111,187,115,253,253,253,253,253,253,65,69,70,66,63,68,112,103,92,194,104,95,86,87,71,116,195,85,93,97,113,196,197,198,199,200,253,253,253,253,253,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,
+216,217,218,219,220,221,222,223,224,225,81,226,227,228,229,230,105,231,232,233,234,235,236,45,237,238,31,32,35,43,37,44,55,47,40,59,33,46,38,36,41,30,39,28,34,51,48,49,53,50,54,57,61,239,67,240,60,56,1,18,9,20,11,3,23,15,2,26,12,10,14,6,4,13,7,8,5,19,29,25,22,21,27,24,17,75,52,241,42,16,62,242,243,244,58,245,98,246,247,248,249,250,251,91,252,253];b.win1251BulgarianCharToOrderMap=[255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253,253,77,90,99,100,72,109,107,101,79,185,81,102,76,94,82,110,186,108,91,74,119,84,96,111,187,115,253,253,253,253,253,253,65,69,70,66,63,68,112,103,92,194,104,95,86,87,71,116,195,85,93,97,113,196,197,198,199,200,253,253,253,253,253,206,207,208,209,210,211,212,213,120,214,215,216,217,218,219,220,221,78,64,83,121,98,117,105,222,223,224,225,226,227,228,229,88,230,231,232,
+233,122,89,106,234,235,236,237,238,45,239,240,73,80,118,114,241,242,243,244,245,62,58,246,247,248,249,250,31,32,35,43,37,44,55,47,40,59,33,46,38,36,41,30,39,28,34,51,48,49,53,50,54,57,61,251,67,252,60,56,1,18,9,20,11,3,23,15,2,26,12,10,14,6,4,13,7,8,5,19,29,25,22,21,27,24,17,75,52,253,42,16];b.BulgarianLangModel=[0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,3,3,3,2,2,3,2,2,1,2,2,3,1,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,0,3,3,3,3,3,3,3,3,3,3,0,
+3,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,2,3,3,3,3,3,3,3,3,0,3,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,1,3,2,3,3,3,3,3,3,3,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,1,3,2,3,3,3,3,3,3,3,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,2,3,2,2,1,3,3,3,3,2,2,2,1,
+1,2,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1,3,3,3,3,3,3,3,2,3,2,2,3,3,1,1,2,3,3,2,3,3,3,3,2,1,2,0,2,0,3,0,0,0,0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1,3,3,3,3,3,3,3,1,3,3,3,3,3,2,3,2,3,3,3,3,3,2,3,3,1,3,0,3,0,2,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,3,3,3,3,3,3,3,3,1,3,3,2,3,3,3,1,3,3,2,3,2,2,2,0,0,2,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1,3,3,3,3,3,3,3,3,3,0,3,3,3,2,2,3,3,3,1,
+2,2,3,2,1,1,2,0,2,0,0,0,0,1,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,3,3,3,3,3,3,3,2,3,3,1,2,3,2,2,2,3,3,3,3,3,2,2,3,1,2,0,2,1,2,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1,3,3,3,3,3,1,3,3,3,3,3,2,3,3,3,2,3,3,2,3,2,2,2,3,1,2,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,3,3,3,3,3,3,3,3,3,3,3,1,1,1,2,2,1,3,1,3,2,2,3,0,0,1,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,3,3,3,3,3,2,2,3,2,2,3,1,2,1,
+1,1,2,3,1,3,1,2,2,0,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,3,3,3,3,3,1,3,2,2,3,3,1,2,3,1,1,3,3,3,3,1,2,2,1,1,1,0,2,0,2,0,1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,2,2,3,3,3,2,2,1,1,2,0,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,3,0,1,2,1,3,3,2,3,3,3,3,3,2,3,2,1,0,3,1,2,1,2,1,2,3,2,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,2,3,3,3,3,3,
+3,3,3,3,3,3,3,0,0,3,1,3,3,2,3,3,2,2,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,3,3,3,0,3,3,3,3,3,2,1,1,2,1,3,3,0,3,1,1,1,1,3,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,3,3,2,2,2,3,3,3,3,3,3,3,3,3,3,3,1,1,3,1,3,3,2,3,2,2,2,3,0,2,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,2,3,3,2,2,3,2,1,1,1,1,1,3,1,3,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,
+3,2,3,2,0,3,2,0,3,0,2,0,0,2,1,3,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,3,3,2,1,1,1,1,2,1,1,2,1,1,1,2,2,1,2,1,1,1,0,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,3,3,3,3,2,1,3,1,1,2,1,3,2,1,1,0,1,2,3,2,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,3,3,3,2,2,1,0,1,0,0,1,0,0,0,2,1,0,3,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+1,3,3,3,2,3,2,3,3,1,3,2,1,1,1,2,1,1,2,1,3,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,1,2,2,3,3,2,3,2,2,2,3,1,2,2,1,1,2,1,1,2,2,0,1,1,0,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,2,1,3,1,0,2,2,1,3,2,1,0,0,2,0,2,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,3,3,3,3,3,3,1,2,0,2,3,1,2,3,2,0,1,3,1,2,1,1,1,0,0,1,0,0,2,2,2,3,2,2,2,2,1,2,1,1,2,2,1,1,2,0,1,1,1,0,0,1,1,0,0,1,1,0,
+0,0,1,1,0,1,3,3,3,3,3,2,1,2,2,1,2,0,2,0,1,0,1,2,1,2,1,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1,3,3,2,3,3,1,1,3,1,0,3,2,1,0,0,0,1,2,0,2,0,1,0,0,0,1,0,1,2,1,2,2,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,0,1,2,1,1,1,0,0,0,0,0,1,1,0,0,3,1,0,1,0,2,3,2,2,2,3,2,2,2,2,2,1,0,2,1,2,1,1,1,0,1,2,1,2,2,2,1,1,1,2,2,2,2,1,2,1,1,0,1,2,1,2,2,2,1,1,1,0,1,1,1,1,2,0,1,0,0,0,0,2,3,2,3,3,0,0,2,1,0,2,1,0,0,0,0,2,3,0,2,0,0,0,0,0,1,0,0,2,0,1,2,2,1,2,1,2,2,1,1,1,2,1,1,1,0,1,2,2,1,1,1,1,
+1,0,1,1,1,0,0,1,2,0,0,3,3,2,2,3,0,2,3,1,1,2,0,0,0,1,0,0,2,0,2,0,0,0,1,0,1,0,1,2,0,2,2,1,1,1,1,2,1,0,1,2,2,2,1,1,1,1,1,1,1,0,1,1,1,0,0,0,0,0,0,1,1,0,0,2,3,2,3,3,0,0,3,0,1,1,0,1,0,0,0,2,2,1,2,0,0,0,0,0,0,0,0,2,0,1,2,2,2,1,1,1,1,1,2,2,2,1,0,2,0,1,0,1,0,0,1,0,1,0,0,1,0,0,0,0,1,0,0,3,3,3,3,2,2,2,2,2,0,2,1,1,1,1,2,1,2,1,1,0,2,0,1,0,1,0,0,2,0,1,2,1,1,1,1,1,1,1,2,2,1,1,0,2,0,1,0,2,0,0,1,1,1,0,0,2,0,0,0,1,1,0,0,2,3,3,3,3,1,0,0,0,0,0,0,0,0,0,0,2,0,0,1,1,0,0,0,0,0,0,1,2,0,1,2,2,2,2,1,1,2,1,1,2,2,2,1,2,0,1,1,
+1,1,1,1,0,1,1,1,1,0,0,1,1,1,0,0,2,3,3,3,3,0,2,2,0,2,1,0,0,0,1,1,1,2,0,2,0,0,0,3,0,0,0,0,2,0,2,2,1,1,1,2,1,2,1,1,2,2,2,1,2,0,1,1,1,0,1,1,1,1,0,2,1,0,0,0,1,1,0,0,2,3,3,3,3,0,2,1,0,0,2,0,0,0,0,0,1,2,0,2,0,0,0,0,0,0,0,0,2,0,1,2,1,1,1,2,1,1,1,1,2,2,2,0,1,0,1,1,1,0,0,1,1,1,0,0,1,0,0,0,0,1,0,0,3,3,2,2,3,0,1,0,1,0,0,0,0,0,0,0,1,1,0,3,0,0,0,0,0,0,0,0,1,0,2,2,1,1,1,1,1,2,1,1,2,2,1,2,2,1,0,1,1,1,1,1,0,1,0,0,1,0,0,0,1,1,0,0,3,1,0,1,0,2,2,2,2,3,2,1,1,1,2,3,0,0,1,0,2,1,1,0,1,1,1,1,2,1,1,1,1,2,2,1,2,1,2,2,1,1,0,
+1,2,1,2,2,1,1,1,0,0,1,1,1,2,1,0,1,0,0,0,0,2,1,0,1,0,3,1,2,2,2,2,1,2,2,1,1,1,0,2,1,2,2,1,1,2,1,1,0,2,1,1,1,1,2,2,2,2,2,2,2,1,2,0,1,1,0,2,1,1,1,1,1,0,0,1,1,1,1,0,1,0,0,0,0,2,1,1,1,1,2,2,2,2,1,2,2,2,1,2,2,1,1,2,1,2,3,2,2,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,3,2,0,1,2,0,1,2,1,1,0,1,0,1,2,1,2,0,0,0,1,1,0,0,0,1,0,0,2,1,1,0,0,1,1,0,1,1,1,1,0,2,0,1,1,1,0,0,1,1,0,0,0,0,1,0,0,0,1,0,0,2,0,0,0,0,1,2,2,2,2,2,2,2,1,2,1,1,1,1,1,1,1,0,1,1,1,1,1,2,1,1,1,1,2,2,2,2,1,
+1,2,1,2,1,1,1,0,2,1,2,1,1,1,0,2,1,1,1,1,0,1,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,1,0,1,0,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,3,2,0,0,0,0,1,0,0,0,0,0,0,1,1,0,2,0,0,0,0,0,0,0,0,1,0,1,2,1,1,1,1,1,1,0,0,2,2,2,2,2,0,1,1,0,1,1,1,1,1,0,0,1,0,0,0,1,1,0,1,2,3,1,2,1,0,1,1,0,2,2,2,0,0,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,1,2,1,1,1,1,2,1,1,1,1,1,1,1,1,0,1,1,0,1,0,1,0,1,0,0,1,0,0,0,0,1,0,0,2,2,2,2,2,0,0,2,0,0,2,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,2,0,2,2,1,
+1,1,1,1,0,0,1,2,1,1,0,1,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,2,2,2,2,0,0,2,0,1,1,0,0,0,1,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,2,2,3,2,0,0,1,0,0,1,0,0,0,0,0,0,1,0,2,0,0,0,1,0,0,0,0,0,0,0,2,1,1,0,0,1,0,0,0,1,1,0,0,1,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,2,1,2,2,2,1,2,1,2,2,1,1,2,1,1,1,0,1,1,1,1,2,0,1,0,1,1,1,1,0,1,1,1,1,2,1,1,1,1,1,1,0,0,1,2,1,1,1,1,1,1,0,0,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,3,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,1,0,0,1,0,2,0,0,0,0,0,1,1,1,0,1,0,0,0,0,0,0,0,0,2,0,0,1,0,2,0,1,0,0,1,1,2,0,1,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,2,2,0,1,1,0,2,1,0,1,1,1,0,0,1,0,2,0,1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,0,0,0,1,1,0,0,1,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,1,1,0,0,1,1,1,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,2,0,1,0,0,1,2,1,1,1,1,1,1,2,2,1,0,0,1,0,1,0,0,
+0,0,1,1,1,1,0,0,0,1,1,2,1,1,1,1,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,1,2,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,2,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,1,1,0,0,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,
+1,0,2,0,0,2,0,1,0,0,1,0,0,1,1,1,0,0,1,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,1,1,1,1,1,1,2,0,0,0,0,0,0,2,1,0,1,1,0,0,1,1,1,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,1,0,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1];b.Latin5BulgarianModel={charToOrderMap:b.Latin5_BulgarianCharToOrderMap,
+precedenceMatrix:b.BulgarianLangModel,mTypicalPositiveRatio:.969392,keepEnglishLetter:!1,charsetName:"ISO-8859-5"};b.Win1251BulgarianModel={charToOrderMap:b.win1251BulgarianCharToOrderMap,precedenceMatrix:b.BulgarianLangModel,mTypicalPositiveRatio:.969392,keepEnglishLetter:!1,charsetName:"windows-1251"};!0},{"./init":21}],25:[function(b,a,d){b=b("./init");b.KOI8R_CharToOrderMap=[255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253,253,142,143,144,145,146,147,148,149,150,151,152,74,153,75,154,155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253,253,71,172,66,173,65,174,76,175,64,176,177,77,72,178,69,67,179,78,73,180,181,79,182,183,184,185,253,253,253,253,253,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,
+222,223,224,225,68,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,27,3,21,28,13,2,39,19,26,4,23,11,8,12,5,1,15,16,9,7,6,14,24,10,17,18,20,25,30,29,22,54,59,37,44,58,41,48,53,46,55,42,60,36,49,38,31,34,35,43,45,32,40,52,56,33,61,62,51,57,47,63,50,70];b.win1251_CharToOrderMap=[255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,253,253,253,253,253,253,
+253,253,253,253,253,253,253,253,252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253,253,142,143,144,145,146,147,148,149,150,151,152,74,153,75,154,155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253,253,71,172,66,173,65,174,76,175,64,176,177,77,72,178,69,67,179,78,73,180,181,79,182,183,184,185,253,253,253,253,253,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,
+232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,68,247,248,249,250,251,252,253,37,44,33,46,41,48,56,51,42,60,36,49,38,31,34,35,45,32,40,52,53,55,58,50,57,63,70,62,61,47,59,43,3,21,10,19,13,2,24,20,4,23,11,8,12,5,1,15,9,7,6,14,39,26,28,22,25,29,54,18,17,30,27,16];b.latin5_CharToOrderMap=[255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,252,252,252,
+252,252,252,252,252,252,252,253,253,253,253,253,253,253,142,143,144,145,146,147,148,149,150,151,152,74,153,75,154,155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253,253,71,172,66,173,65,174,76,175,64,176,177,77,72,178,69,67,179,78,73,180,181,79,182,183,184,185,253,253,253,253,253,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,37,44,33,46,41,
+48,56,51,42,60,36,49,38,31,34,35,45,32,40,52,53,55,58,50,57,63,70,62,61,47,59,43,3,21,10,19,13,2,24,20,4,23,11,8,12,5,1,15,9,7,6,14,39,26,28,22,25,29,54,18,17,30,27,16,239,68,240,241,242,243,244,245,246,247,248,249,250,251,252,255];b.macCyrillic_CharToOrderMap=[255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,252,252,252,252,252,252,252,252,252,252,253,253,
+253,253,253,253,253,142,143,144,145,146,147,148,149,150,151,152,74,153,75,154,155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253,253,71,172,66,173,65,174,76,175,64,176,177,77,72,178,69,67,179,78,73,180,181,79,182,183,184,185,253,253,253,253,253,37,44,33,46,41,48,56,51,42,60,36,49,38,31,34,35,45,32,40,52,53,55,58,50,57,63,70,62,61,47,59,43,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,
+228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,68,16,3,21,10,19,13,2,24,20,4,23,11,8,12,5,1,15,9,7,6,14,39,26,28,22,25,29,54,18,17,30,27,255];b.IBM855_CharToOrderMap=[255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253,253,142,143,144,145,146,147,
+148,149,150,151,152,74,153,75,154,155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253,253,71,172,66,173,65,174,76,175,64,176,177,77,72,178,69,67,179,78,73,180,181,79,182,183,184,185,253,253,253,253,253,191,192,193,194,68,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,27,59,54,70,3,37,21,44,28,58,13,41,2,48,39,53,19,46,218,219,220,221,222,223,224,26,55,4,42,225,226,227,228,23,60,229,230,231,232,233,234,235,11,36,236,237,238,239,240,241,242,243,
+8,49,12,38,5,31,1,34,15,244,245,246,247,35,16,248,43,9,45,7,32,6,40,14,52,24,56,10,33,17,61,249,250,18,62,20,51,25,57,30,47,29,63,22,50,251,252,255];b.IBM866_CharToOrderMap=[255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253,253,142,143,144,145,146,147,148,149,150,151,152,74,153,75,154,155,156,157,
+158,159,160,161,162,163,164,165,253,253,253,253,253,253,71,172,66,173,65,174,76,175,64,176,177,77,72,178,69,67,179,78,73,180,181,79,182,183,184,185,253,253,253,253,253,37,44,33,46,41,48,56,51,42,60,36,49,38,31,34,35,45,32,40,52,53,55,58,50,57,63,70,62,61,47,59,43,3,21,10,19,13,2,24,20,4,23,11,8,12,5,1,15,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,9,7,
+6,14,39,26,28,22,25,29,54,18,17,30,27,16,239,68,240,241,242,243,244,245,246,247,248,249,250,251,252,255];b.RussianLangModel=[0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,3,1,3,3,3,2,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,3,2,2,2,2,2,0,0,2,3,3,3,2,3,3,3,3,3,3,3,3,3,3,2,3,3,0,0,3,3,3,3,3,3,3,3,3,2,3,2,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,2,2,3,3,3,3,3,3,3,3,3,2,3,3,0,0,3,3,3,3,3,3,3,3,2,3,3,1,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,3,2,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,3,3,3,3,3,3,3,3,3,3,3,2,1,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,0,0,3,3,3,3,3,3,3,3,3,3,3,2,1,0,0,0,0,0,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,2,2,2,3,1,3,3,1,3,3,3,3,2,2,3,0,2,2,2,3,3,2,1,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,2,3,3,3,3,3,2,2,3,2,3,3,3,2,1,2,2,0,1,2,2,2,2,2,2,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,
+0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,3,0,2,2,3,3,2,1,2,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,2,3,3,1,2,3,2,2,3,2,3,3,3,3,2,2,3,0,3,2,2,3,1,1,1,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,2,2,3,3,3,3,3,2,3,3,3,3,2,2,2,0,3,3,3,2,2,2,2,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,2,3,2,3,3,3,3,3,3,2,3,2,2,0,1,3,2,1,2,2,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,2,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,2,1,1,3,0,1,1,1,1,2,1,1,0,2,2,2,1,2,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,2,3,3,2,2,2,2,1,3,2,3,2,3,2,1,2,2,0,1,1,2,1,2,1,2,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,2,2,3,2,3,3,3,2,2,2,2,0,2,2,2,2,3,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,3,2,3,2,2,3,3,3,3,3,3,3,3,3,1,3,2,0,0,3,3,3,3,2,3,3,3,3,2,3,2,0,0,0,0,0,0,0,0,2,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,3,3,3,3,2,2,3,3,0,2,1,0,3,2,3,2,3,0,0,1,2,0,0,1,0,1,2,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,0,2,3,3,3,3,2,3,3,3,3,1,2,2,0,0,2,3,2,2,2,3,2,3,2,2,3,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,3,0,2,3,2,3,0,1,2,3,3,2,0,2,3,0,0,2,3,2,2,0,1,3,1,3,2,2,1,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,3,0,2,3,3,3,3,3,3,3,3,2,1,3,2,0,0,2,2,3,3,3,2,3,3,0,2,2,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,2,2,3,3,2,2,2,3,3,0,0,1,1,1,1,1,2,0,0,1,1,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,2,2,3,3,3,3,3,3,3,0,3,2,3,3,2,3,2,0,2,1,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,2,3,3,3,2,2,2,2,3,1,3,2,3,1,1,2,1,0,2,2,2,2,1,3,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,2,3,3,3,3,3,1,2,2,1,3,1,0,3,0,0,3,0,0,0,1,1,0,1,2,1,0,0,0,0,0,0,0,0,
+0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,2,1,1,3,3,3,2,2,1,2,2,3,1,1,2,0,0,2,2,1,3,0,0,2,1,1,2,1,1,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,3,3,3,3,1,2,2,2,1,2,1,3,3,1,1,2,1,2,1,2,2,0,2,0,0,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,3,3,3,3,2,1,3,2,2,3,2,0,3,2,0,3,0,1,0,1,1,0,0,1,1,1,1,0,1,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,2,3,3,3,2,2,2,3,3,1,2,1,2,1,0,1,0,1,1,0,1,0,0,2,1,1,1,0,
+1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,3,1,1,2,1,2,3,3,2,2,1,2,2,3,0,2,1,0,0,2,2,3,2,1,2,2,2,2,2,3,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,1,1,0,1,1,2,2,1,1,3,0,0,1,3,1,1,1,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,3,3,3,2,0,0,0,2,1,0,1,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,1,0,0,2,3,2,2,2,1,2,2,2,1,2,1,0,0,1,1,1,0,2,0,
+1,1,1,0,0,1,1,1,0,0,0,0,0,1,2,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,2,3,3,3,3,0,0,0,0,1,0,0,0,0,3,0,1,2,1,0,0,0,0,0,0,0,1,1,0,0,1,1,1,0,1,0,1,2,0,0,1,1,2,1,0,1,1,1,1,0,1,1,1,1,0,1,0,0,1,0,0,1,1,0,2,2,3,2,2,2,3,1,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,0,1,0,1,1,1,0,2,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,0,1,0,1,1,0,1,1,1,0,1,1,0,3,3,3,2,2,2,2,3,2,2,1,1,2,2,2,2,1,1,3,1,2,1,2,0,0,1,1,0,1,0,2,1,1,1,1,1,1,2,1,0,1,1,1,1,0,1,0,0,1,1,0,0,1,0,1,0,0,1,0,0,0,1,1,0,2,0,0,1,0,3,2,2,2,2,1,2,1,2,1,2,0,0,0,2,
+1,2,2,1,1,2,2,0,1,1,0,2,1,1,1,1,1,0,1,1,1,2,1,1,1,2,1,0,1,2,1,1,1,1,0,1,1,1,0,0,1,0,0,1,1,3,2,2,2,1,1,1,2,3,0,0,0,0,2,0,2,2,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,1,1,0,1,0,1,1,0,1,1,0,2,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,2,3,2,3,2,1,2,2,2,2,1,0,0,0,2,0,0,1,1,0,0,0,0,0,0,0,1,1,0,0,2,1,1,1,2,1,0,2,0,0,1,0,1,0,0,1,0,0,1,1,0,1,1,0,0,0,0,0,1,0,0,0,0,0,3,0,0,1,0,2,2,2,3,2,2,2,2,2,2,2,0,0,0,2,1,2,1,1,1,2,2,0,0,0,1,2,1,1,1,1,1,0,1,2,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0,0,1,2,3,2,3,3,2,0,1,1,1,0,0,1,0,2,
+0,1,1,3,1,0,0,0,0,0,0,0,1,0,0,2,1,1,1,1,1,1,1,1,0,1,0,1,1,1,1,0,1,1,1,0,0,1,1,0,1,0,0,0,0,0,0,1,0,2,3,3,3,3,1,2,2,2,2,0,1,1,0,2,1,1,1,2,1,0,1,1,0,0,1,0,1,0,0,2,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,3,3,2,0,0,1,1,2,2,1,0,0,2,0,1,1,3,0,0,1,0,0,0,0,0,1,0,1,2,1,1,1,2,0,1,1,1,0,1,0,1,1,0,1,0,1,1,1,1,0,1,0,0,0,0,0,0,1,0,1,1,0,1,3,2,3,2,1,0,0,2,2,2,0,1,0,2,0,1,1,1,0,1,0,0,0,3,0,1,1,0,0,2,1,1,1,1,0,1,1,0,0,0,0,1,1,0,1,0,0,2,1,1,0,1,0,0,0,1,0,1,0,0,1,1,0,3,1,2,1,1,2,2,2,2,2,
+2,1,2,2,1,1,0,0,0,2,2,2,0,0,0,1,2,1,0,1,0,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,2,1,1,1,0,1,0,1,1,0,1,1,1,0,0,1,3,0,0,0,0,2,0,1,1,1,1,1,1,1,0,1,0,0,0,1,1,1,0,1,0,1,1,0,0,1,0,1,1,1,0,0,1,0,0,0,1,0,1,1,0,0,1,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,0,1,1,3,3,2,2,0,0,0,2,2,0,0,0,1,2,0,1,1,2,0,0,0,0,0,0,0,0,1,0,0,2,1,0,1,1,0,0,1,1,0,0,0,1,1,0,1,1,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,2,3,2,3,2,0,0,0,0,1,1,0,0,0,2,0,2,0,2,0,0,0,0,0,1,0,0,1,0,0,1,1,1,1,2,0,1,2,1,0,1,1,2,1,1,1,1,1,2,1,1,0,1,0,0,1,1,1,1,1,0,1,1,0,1,3,2,2,2,
+1,0,0,2,2,1,0,1,2,2,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,1,0,1,1,0,0,1,1,0,1,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,2,3,1,2,2,2,2,2,2,1,1,0,0,0,1,0,1,0,2,1,1,1,0,0,0,0,1,1,1,0,1,1,0,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,2,0,0,1,0,3,2,1,2,1,2,2,0,1,0,0,0,2,1,0,0,2,1,1,1,1,0,2,0,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,1,0,1,1,1,1,0,0,0,1,1,1,1,0,1,0,0,1,1,2,2,2,2,1,0,0,1,0,0,0,0,0,2,0,1,1,1,1,0,0,0,0,1,0,1,2,0,0,2,0,1,0,1,1,1,2,1,0,1,0,1,1,0,0,1,0,1,1,1,0,1,0,0,0,1,0,0,1,0,1,1,0,
+2,1,2,2,2,0,3,0,1,1,0,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,2,2,3,2,2,0,0,1,1,2,0,1,2,1,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,2,2,1,1,2,1,2,2,2,2,2,1,2,2,0,1,0,0,0,1,2,2,2,1,2,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,0,1,1,1,0,0,0,0,1,1,1,0,1,1,0,0,1,1,2,2,2,2,0,1,0,2,2,0,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,1,0,0,0,0,1,0,1,1,0,0,1,1,0,0,1,0,0,0,0,0,0,
+0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,2,2,0,0,0,2,2,2,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,2,2,0,0,0,0,1,0,0,1,1,2,0,0,0,0,1,0,1,0,0,1,0,0,2,0,0,0,1,0,0,1,0,0,1,0,0,0,1,1,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,2,2,2,1,1,2,0,2,1,1,1,1,0,2,2,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,0,0,1,0,1,1,0,0,0,0,1,0,0,0,0,0,1,1,0,0,1,0,
+0,0,0,0,0,0,0,0,0,0,1,0,2,1,2,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,2,0,1,2,1,0,1,1,1,0,1,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,1,1,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,0,1,0,0,1,1,1,1,0,0,0,1,
+0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,1,0,1,0,1,0,0,0,0,1,1,0,1,1,0,0,0,0,0,1,0,1,1,0,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0];b.Koi8rModel={charToOrderMap:b.KOI8R_CharToOrderMap,precedenceMatrix:b.RussianLangModel,mTypicalPositiveRatio:.976601,keepEnglishLetter:!1,charsetName:"KOI8-R"};b.Win1251CyrillicModel={charToOrderMap:b.win1251_CharToOrderMap,
+precedenceMatrix:b.RussianLangModel,mTypicalPositiveRatio:.976601,keepEnglishLetter:!1,charsetName:"windows-1251"};b.Latin5CyrillicModel={charToOrderMap:b.latin5_CharToOrderMap,precedenceMatrix:b.RussianLangModel,mTypicalPositiveRatio:.976601,keepEnglishLetter:!1,charsetName:"ISO-8859-5"};b.MacCyrillicModel={charToOrderMap:b.macCyrillic_CharToOrderMap,precedenceMatrix:b.RussianLangModel,mTypicalPositiveRatio:.976601,keepEnglishLetter:!1,charsetName:"MacCyrillic"};b.Ibm866Model={charToOrderMap:b.IBM866_CharToOrderMap,
+precedenceMatrix:b.RussianLangModel,mTypicalPositiveRatio:.976601,keepEnglishLetter:!1,charsetName:"IBM866"};b.Ibm855Model={charToOrderMap:b.IBM855_CharToOrderMap,precedenceMatrix:b.RussianLangModel,mTypicalPositiveRatio:.976601,keepEnglishLetter:!1,charsetName:"IBM855"};!0},{"./init":21}],26:[function(b,a,d){b=b("./init");b.Latin7_CharToOrderMap=[255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,253,253,253,253,
+253,253,253,253,253,253,253,253,253,253,252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253,253,82,100,104,94,98,101,116,102,111,187,117,92,88,113,85,79,118,105,83,67,114,119,95,99,109,188,253,253,253,253,253,253,72,70,80,81,60,96,93,89,68,120,97,77,86,69,55,78,115,65,66,58,76,106,103,87,107,112,253,253,253,253,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,233,90,253,253,253,253,253,253,253,253,253,
+253,74,253,253,253,253,253,253,247,248,61,36,46,71,73,253,54,253,108,123,110,31,51,43,41,34,91,40,52,47,44,53,38,49,59,39,35,48,250,37,33,45,56,50,84,57,120,121,17,18,22,15,124,1,29,20,21,3,32,13,25,5,11,16,10,6,30,4,9,8,14,7,2,12,28,23,42,24,64,75,19,26,27,253];b.win1253_CharToOrderMap=[255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,252,252,252,252,252,
+252,252,252,252,252,253,253,253,253,253,253,253,82,100,104,94,98,101,116,102,111,187,117,92,88,113,85,79,118,105,83,67,114,119,95,99,109,188,253,253,253,253,253,253,72,70,80,81,60,96,93,89,68,120,97,77,86,69,55,78,115,65,66,58,76,106,103,87,107,112,253,253,253,253,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,233,61,253,253,253,253,253,253,253,253,253,253,74,253,253,253,253,253,253,247,253,253,36,46,71,73,253,
+54,253,108,123,110,31,51,43,41,34,91,40,52,47,44,53,38,49,59,39,35,48,250,37,33,45,56,50,84,57,120,121,17,18,22,15,124,1,29,20,21,3,32,13,25,5,11,16,10,6,30,4,9,8,14,7,2,12,28,23,42,24,64,75,19,26,27,253];b.GreekLangModel=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,2,3,3,3,3,3,3,3,3,1,3,3,3,0,2,2,3,3,0,3,0,3,2,0,3,3,3,0,3,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,0,3,3,0,3,
+2,3,3,0,3,2,3,3,3,0,0,3,0,3,0,3,3,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,3,2,2,3,3,3,3,3,3,3,3,0,3,3,3,3,0,2,3,3,0,3,3,3,3,2,3,3,3,0,2,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,0,2,1,3,3,3,3,2,3,3,2,3,3,2,0,0,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,0,3,3,3,3,3,3,0,3,3,0,3,3,3,3,3,3,3,3,3,3,0,3,2,3,3,0,2,0,1,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,3,3,3,3,3,
+2,3,0,0,0,0,3,3,0,3,1,3,3,3,0,3,3,0,3,3,3,3,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,0,3,0,3,3,3,3,3,0,3,2,2,2,3,0,2,3,3,3,3,3,2,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,2,2,2,3,3,3,3,0,3,1,3,3,3,3,2,3,3,3,3,3,3,3,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,2,0,3,0,0,0,3,3,2,3,3,3,3,3,0,0,3,2,3,0,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,0,3,3,3,3,0,0,3,3,0,2,3,0,3,0,3,3,3,0,0,3,0,3,0,2,2,3,3,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,2,0,3,2,3,3,3,3,0,3,3,3,3,3,0,3,3,2,3,2,3,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,2,3,2,3,3,3,3,3,3,0,2,3,2,3,2,2,2,3,2,3,3,2,3,0,2,2,2,3,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,3,3,3,2,3,3,0,0,3,0,3,0,0,0,3,2,0,3,0,3,0,0,2,0,2,0,0,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,0,3,3,3,3,3,3,0,3,3,0,3,0,0,0,3,3,0,3,3,3,0,0,1,2,3,0,3,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,2,0,0,3,2,2,3,3,0,3,3,3,3,3,2,1,3,0,3,2,3,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,2,3,3,3,3,3,3,0,0,3,0,3,0,0,0,3,3,0,3,2,3,0,0,3,3,3,0,3,0,0,0,2,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,3,3,3,3,0,3,3,3,3,3,3,0,0,3,0,3,0,0,0,3,2,0,3,2,3,0,0,3,2,3,0,2,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,2,2,3,3,3,3,3,3,0,2,3,0,3,0,0,0,3,3,0,3,0,2,0,0,2,3,1,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,3,3,3,0,3,0,3,3,2,3,0,3,3,3,3,3,3,0,3,3,3,0,2,3,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,3,3,0,0,3,0,0,0,3,3,0,3,0,2,3,3,0,0,3,0,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,3,3,3,3,3,3,0,0,3,0,2,0,0,0,3,3,0,3,0,3,0,0,2,0,2,0,0,0,0,0,1,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,0,3,0,2,0,3,2,0,3,2,3,2,3,0,0,3,2,3,2,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,2,3,3,3,3,3,0,0,0,3,0,2,1,0,0,3,2,2,2,0,3,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,3,3,2,0,3,0,3,0,3,3,0,2,1,2,3,3,0,0,3,0,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,3,3,0,3,3,3,3,3,3,0,2,3,0,3,0,0,0,2,1,0,2,2,3,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,2,3,3,3,2,3,0,0,1,3,0,2,0,0,0,0,3,0,1,0,2,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,1,0,3,0,0,0,3,2,0,3,2,3,3,3,0,0,3,0,3,2,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,3,3,0,0,3,0,0,0,0,2,0,2,3,3,2,2,2,2,3,0,2,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,2,0,0,0,0,0,0,2,3,0,2,0,2,3,2,0,0,3,0,3,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,3,3,2,2,3,0,2,0,3,0,0,0,2,0,0,0,0,1,2,0,2,0,2,0,0,2,0,2,0,2,2,0,0,1,0,2,2,2,0,2,2,2,0,2,2,2,0,0,2,0,0,1,0,0,0,0,0,2,0,3,3,2,0,0,0,0,0,0,1,3,0,2,0,2,2,2,0,0,2,0,3,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,2,3,2,0,2,2,0,2,0,2,2,0,2,0,2,2,2,0,0,0,0,0,0,2,3,0,0,0,2,0,1,2,
+0,0,0,0,2,2,0,0,0,2,1,0,2,2,0,0,0,0,0,0,1,0,2,0,0,0,0,0,0,0,0,2,1,0,2,3,2,2,3,2,3,2,0,0,3,3,3,0,0,3,2,0,0,0,1,1,0,2,0,2,2,0,2,0,2,0,2,2,0,0,2,0,2,2,2,0,2,2,2,2,0,0,2,0,0,0,2,0,1,0,0,0,0,0,3,0,3,3,2,2,0,3,0,0,0,2,2,0,2,2,2,1,2,0,0,1,2,2,0,0,3,0,0,0,2,0,1,2,0,0,0,1,2,0,0,0,0,0,0,0,2,2,0,1,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,3,2,2,0,0,0,2,0,2,3,3,0,2,0,0,0,0,0,0,2,2,2,0,2,2,0,2,
+0,2,0,2,2,0,0,2,2,2,2,1,0,0,2,2,0,2,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,0,3,2,3,0,0,0,3,0,0,2,2,0,2,0,2,2,2,0,0,2,0,0,0,0,0,0,0,0,2,0,0,2,2,0,0,2,2,2,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,3,2,0,2,2,2,2,2,0,0,0,2,0,0,0,0,2,0,1,0,0,2,0,1,0,0,0,0,2,2,2,0,2,2,0,1,2,0,2,2,2,0,2,2,2,2,1,2,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,2,0,2,0,2,2,0,0,0,0,1,2,1,0,0,2,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,3,0,0,2,0,0,0,2,2,0,2,0,0,0,1,0,0,2,0,2,
+0,2,2,0,0,0,0,0,0,2,0,0,0,0,2,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,2,3,2,2,0,0,0,0,0,0,1,3,0,2,0,2,2,0,0,0,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,3,2,0,2,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,2,0,0,0,0,1,1,0,0,2,1,2,0,2,2,0,1,0,0,1,0,0,0,2,0,0,0,0,0,0,0,3,0,2,2,2,0,0,2,0,0,0,2,0,0,0,2,3,0,2,0,0,0,0,0,0,2,2,0,0,0,2,0,1,2,0,0,0,1,2,2,1,0,0,0,2,0,0,2,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,2,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,2,0,2,2,0,2,0,0,2,0,0,0,0,1,2,1,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,1,2,2,0,2,0,0,0,0,2,0,0,0,2,0,0,3,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,2,0,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,0,0,2,0,2,2,0,0,2,2,2,2,2,0,1,2,0,0,0,2,2,0,1,0,2,0,0,2,2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,3,0,0,2,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,2,0,1,2,0,0,0,0,2,2,1,0,1,0,1,0,2,2,2,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,1,2,0,0,0,0,0,0,0,0,0,0,
+2,0,0,2,2,0,0,0,0,1,0,0,0,0,0,0,2,0,2,2,0,0,0,0,2,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,0,0,2,2,2,2,0,0,0,3,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0,1,0,0,2,0,0,0,0,1,2,0,0,0,0,0,0,2,2,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,2,2,2,0,0,2,0,0,0,0,0,0,0,2,2,2,0,0,0,2,0,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,2,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,3,0,2,0,0,0,0,0,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,2,0,0,2,0,0,0,0,2,2,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,2,1,0,0,0,0,
+0,0,2,0,0,2,0,2,2,2,0,0,0,0,0,0,2,0,0,0,0,2,0,0,2,0,0,2,0,2,2,0,0,0,0,2,0,2,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,3,0,0,0,2,2,0,2,2,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,0,0,0,0,2,2,2,2,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,2,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,2,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,1,0,0,0,0,2,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,2,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,2,0,2,0,0,0,
+0,0,0,0,0,0,0,0,2,1,0,0,0,0,0,0,2,0,0,0,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];b.Latin7GreekModel={charToOrderMap:b.Latin7_CharToOrderMap,precedenceMatrix:b.GreekLangModel,mTypicalPositiveRatio:.982851,
+keepEnglishLetter:!1,charsetName:"ISO-8859-7"};b.Win1253GreekModel={charToOrderMap:b.win1253_CharToOrderMap,precedenceMatrix:b.GreekLangModel,mTypicalPositiveRatio:.982851,keepEnglishLetter:!1,charsetName:"windows-1253"};!0},{"./init":21}],27:[function(b,a,d){b=b("./init");b.win1255_CharToOrderMap=[255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,252,252,252,
+252,252,252,252,252,252,252,253,253,253,253,253,253,253,69,91,79,80,92,89,97,90,68,111,112,82,73,95,85,78,121,86,71,67,102,107,84,114,103,115,253,253,253,253,253,253,50,74,60,61,42,76,70,64,53,105,93,56,65,54,49,66,110,51,43,44,63,81,77,98,75,108,253,253,253,253,253,124,202,203,204,205,40,58,206,207,208,209,210,211,212,213,214,215,83,52,47,46,72,32,94,216,113,217,109,218,219,220,221,34,116,222,118,100,223,224,117,119,104,125,225,226,87,99,227,106,122,123,228,55,229,230,101,231,232,120,233,48,39,57,
+234,30,59,41,88,33,37,36,31,29,35,235,62,28,236,126,237,238,38,45,239,240,241,242,243,127,244,245,246,247,248,249,250,9,8,20,16,3,2,24,14,22,1,25,15,4,11,6,23,12,19,13,26,18,27,21,17,7,10,5,251,252,128,96,253];b.HebrewLangModel=[0,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,2,3,2,1,2,0,1,0,0,3,0,3,1,0,0,1,3,2,0,1,1,2,0,2,2,2,1,1,1,1,2,1,1,1,2,0,0,2,2,0,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,1,2,1,2,1,2,0,0,2,0,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,3,3,3,3,3,3,3,3,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,1,2,1,3,1,1,0,0,2,0,0,0,1,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,0,1,2,2,1,3,1,2,1,1,2,2,0,0,2,2,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,1,0,1,1,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,2,2,2,2,3,2,1,2,1,2,2,2,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,2,3,2,2,3,2,2,2,1,2,2,2,2,1,2,1,1,2,2,0,1,2,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,3,3,3,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,0,2,2,2,2,2,0,2,0,2,2,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,0,2,2,2,0,2,1,2,2,2,0,0,2,1,0,0,0,0,1,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,1,0,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,2,1,2,3,2,2,2,1,2,1,2,2,2,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,0,3,3,3,3,3,3,3,3,3,2,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,1,0,2,0,2,0,2,1,2,2,2,0,0,1,2,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,2,0,0,
+1,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,2,3,2,2,3,2,1,2,1,1,1,0,1,1,1,1,1,3,0,1,0,0,0,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,1,1,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,0,2,0,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,3,3,3,3,3,3,3,3,3,2,3,3,3,2,1,2,3,3,2,3,3,3,3,2,3,2,1,2,0,2,1,2,0,2,0,2,2,2,0,0,1,2,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,
+0,0,1,0,0,1,0,3,3,3,3,3,3,3,3,3,2,3,3,3,1,2,2,3,3,2,3,2,3,2,2,3,1,2,2,0,2,2,2,0,2,1,2,2,2,0,0,1,2,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,2,3,3,2,2,2,3,3,3,3,1,3,2,2,2,0,2,0,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,3,3,3,2,3,2,2,2,1,2,2,0,2,2,2,2,0,2,0,2,2,2,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,1,3,2,3,3,2,3,3,2,2,1,2,2,2,2,2,2,0,2,1,2,1,2,0,0,1,0,0,0,0,0,1,0,0,0,0,0,
+1,0,0,1,0,0,0,0,0,0,1,0,3,3,3,3,3,3,2,3,2,3,3,2,3,3,3,3,2,3,2,3,3,3,3,3,2,2,2,2,2,2,2,1,0,2,0,1,2,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,3,3,3,3,3,3,3,3,3,2,1,2,3,3,3,3,3,3,3,2,3,2,3,2,1,2,3,0,2,1,2,2,0,2,1,1,2,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,2,0,3,3,3,3,3,3,3,3,3,2,3,3,3,3,2,1,3,1,2,2,2,1,2,3,3,1,2,1,2,2,2,2,0,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,0,2,3,3,3,1,3,3,3,1,2,2,2,2,1,1,2,2,2,2,2,2,0,2,0,1,1,2,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,3,3,3,3,3,3,2,3,3,3,2,2,3,3,3,2,1,2,3,2,3,2,2,2,2,1,2,1,1,1,2,2,0,2,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,2,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,2,3,3,2,3,1,2,2,2,2,3,2,3,1,1,2,2,1,2,2,1,1,0,2,2,2,2,0,1,0,1,2,2,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,3,0,0,1,1,0,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,0,0,0,0,0,0,0,0,0,1,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,1,0,1,0,1,1,0,1,1,0,0,0,1,1,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,3,2,2,1,2,2,2,2,2,2,2,1,2,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,0,3,3,3,0,3,0,2,2,2,2,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,2,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,1,2,2,2,1,1,1,2,0,1,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,1,0,2,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,3,1,1,2,2,2,2,2,1,2,2,2,1,1,2,2,2,2,2,2,2,1,2,2,1,0,1,1,1,1,0,
+0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,1,1,1,1,2,1,1,2,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0,1,0,0,2,1,1,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,1,2,1,2,1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,1,2,2,2,2,2,2,2,2,2,2,1,2,1,2,1,1,2,1,1,1,2,1,2,1,2,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,2,2,2,1,2,2,2,2,2,2,2,2,1,2,1,1,1,1,1,1,2,1,2,1,
+1,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,2,0,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,3,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,1,1,0,1,1,0,1,0,0,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,1,1,1,0,1,0,0,0,1,1,0,1,1,0,0,0,0,0,1,1,0,0,0,1,1,1,2,1,2,2,2,0,2,0,2,0,1,1,2,1,1,1,1,2,
+1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,2,2,0,1,0,0,1,1,2,2,1,2,0,2,0,0,0,1,2,0,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,1,2,0,2,0,0,1,1,1,1,1,1,0,1,0,0,0,1,0,0,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,2,1,1,0,1,0,0,1,1,1,2,2,0,0,1,0,0,0,1,0,0,1,1,1,2,1,0,1,1,1,0,1,0,1,1,1,1,0,0,
+0,1,0,1,0,0,0,0,0,0,0,0,2,2,1,0,2,0,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,0,1,0,1,1,1,1,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,2,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,1,1,0,1,0,0,0,1,1,0,1,2,0,1,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,0,1,0,0,1,1,2,1,1,2,0,1,0,0,0,1,1,0,1,1,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,2,0,1,0,0,0,0,2,1,1,2,0,2,0,0,0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,1,1,0,1,0,0,2,2,1,2,1,1,0,1,0,0,0,1,1,0,1,2,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,0,0,0,0,0,1,1,0,1,0,0,1,0,0,0,0,1,0,1,1,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,0,0,0,0,2,1,1,1,0,2,1,1,0,0,0,2,1,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,2,0,1,0,0,1,1,0,2,1,1,0,1,0,0,0,1,1,0,1,2,2,1,1,1,0,1,1,0,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,1,1,0,1,0,0,1,1,0,1,2,1,0,2,0,0,0,1,1,0,1,2,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,1,0,0,2,0,2,1,1,0,1,0,1,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,2,0,1,0,0,1,1,1,0,1,0,0,1,0,0,0,1,
+0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,1,0,0,1,0,0,2,1,1,1,1,1,0,1,0,0,0,0,1,0,1,0,1,1,1,2,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,1,0,0,0,0,0,1,1,1,1,1,0,1,0,0,0,1,1,0,0];b.Win1255HebrewModel={charToOrderMap:b.win1255_CharToOrderMap,precedenceMatrix:b.HebrewLangModel,mTypicalPositiveRatio:.984004,
+keepEnglishLetter:!1,charsetName:"windows-1255"};!0},{"./init":21}],28:[function(b,a,d){b=b("./init");b.Latin2_HungarianCharToOrderMap=[255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253,253,28,40,54,45,32,50,49,38,39,53,36,41,34,35,47,46,71,43,33,37,57,48,64,68,55,52,253,253,253,253,253,253,2,18,
+26,17,1,27,12,20,9,22,7,6,13,4,8,23,67,10,5,3,21,19,65,62,16,11,253,253,253,253,253,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,75,198,199,200,201,202,203,204,205,79,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,51,81,222,78,223,224,225,226,44,227,228,229,61,230,231,232,233,234,58,235,66,59,236,237,238,60,69,63,239,240,241,82,14,74,242,70,80,243,72,244,15,83,77,84,30,76,
+85,245,246,247,25,73,42,24,248,249,250,31,56,29,251,252,253];b.win1250HungarianCharToOrderMap=[255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253,253,28,40,54,45,32,50,49,38,39,53,36,41,34,35,47,46,72,43,33,37,57,48,64,68,55,52,253,253,253,253,253,253,2,18,26,17,1,27,12,20,9,22,7,6,13,4,8,23,67,
+10,5,3,21,19,65,62,16,11,253,253,253,253,253,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,78,181,69,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,76,198,199,200,201,202,203,204,205,81,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,51,83,222,80,223,224,225,226,44,227,228,229,61,230,231,232,233,234,58,235,66,59,236,237,238,60,70,63,239,240,241,84,14,75,242,71,82,243,73,244,15,85,79,86,30,77,87,245,246,247,25,74,42,24,248,249,250,
+31,56,29,251,252,253];b.HungarianLangModel=[0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,2,2,3,3,1,1,2,2,2,2,2,1,2,3,2,2,3,3,3,3,3,2,3,3,3,3,3,3,1,2,3,3,3,3,2,3,3,1,1,3,3,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,3,2,1,3,3,3,3,3,2,3,3,3,3,3,1,1,2,3,3,3,3,3,3,3,1,1,3,2,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,3,3,3,3,3,3,3,3,3,3,3,1,1,2,3,3,3,1,3,3,3,3,3,1,3,3,2,2,0,3,2,3,0,0,0,0,0,
+0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,3,3,3,3,3,2,3,3,3,2,3,3,2,3,3,3,3,3,2,3,3,2,2,3,2,3,2,0,3,2,2,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,3,3,3,3,3,3,2,3,3,3,3,3,2,3,3,3,1,2,3,2,2,3,1,2,3,3,2,2,0,3,3,3,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,2,2,3,3,3,3,3,3,2,3,3,3,3,2,3,3,3,3,0,2,3,2,0,0,0,1,1,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,1,1,1,3,3,2,1,3,2,2,3,2,1,3,2,2,1,0,3,3,1,
+0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,3,2,2,3,3,3,3,3,1,2,3,3,3,3,1,2,1,3,3,3,3,2,2,3,1,1,3,2,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,3,3,3,3,3,3,3,3,2,2,3,3,3,3,3,2,1,3,3,3,3,3,2,2,1,3,3,3,0,1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,2,3,3,2,3,3,3,2,0,3,2,3,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,1,0,3,3,3,3,3,3,2,3,3,3,2,3,2,3,3,3,1,3,2,2,2,3,1,1,3,3,1,
+1,0,3,3,2,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,3,3,3,3,3,3,3,2,3,3,3,2,3,2,3,3,3,2,3,3,3,3,3,1,2,3,2,2,0,2,2,2,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,3,3,3,2,2,2,3,1,3,3,2,2,1,3,3,3,1,1,3,1,2,3,2,3,2,2,2,1,0,2,2,2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,1,1,3,3,3,3,3,1,2,3,3,3,3,1,2,1,3,3,3,2,2,3,2,1,0,3,2,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,1,3,3,3,3,3,1,2,3,3,3,3,1,1,0,3,3,3,3,0,
+2,3,0,0,2,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,2,2,3,3,2,2,2,2,3,3,0,1,2,3,2,3,2,2,3,2,1,2,0,2,2,2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,3,3,3,3,3,1,2,3,3,3,2,1,2,3,3,2,2,2,3,2,3,3,1,3,3,1,1,0,2,3,2,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,3,3,3,1,2,2,2,2,3,3,3,1,1,1,3,3,1,1,3,1,1,3,2,1,2,3,1,1,0,2,2,2,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,3,3,3,2,1,2,1,1,3,3,1,1,1,1,3,3,1,
+1,2,2,1,2,1,1,2,2,1,1,0,2,2,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,3,3,3,1,1,2,1,1,3,3,1,0,1,1,3,3,2,0,1,1,2,3,1,0,2,2,1,0,0,1,3,2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,3,2,1,3,3,3,3,3,1,2,3,2,3,3,2,1,1,3,2,3,2,1,2,2,0,1,2,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,3,3,3,3,2,2,2,2,3,1,2,2,1,1,3,3,0,3,2,1,2,3,2,1,3,3,1,1,0,2,1,3,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,3,3,3,2,2,2,3,2,3,3,3,2,
+1,1,3,3,1,1,1,2,2,3,2,3,2,2,2,1,0,2,2,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,3,3,3,3,3,0,0,3,3,2,3,0,0,0,2,3,3,1,0,1,2,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,2,3,3,3,3,3,1,2,3,3,2,2,1,1,0,3,3,2,2,1,2,2,1,0,2,2,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,2,2,1,3,1,2,3,3,2,2,1,1,2,2,1,1,1,1,3,2,1,1,1,1,2,1,0,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,2,3,3,1,1,1,1,
+1,3,3,3,0,1,1,3,3,1,1,1,1,1,2,2,0,3,1,1,2,0,2,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,3,1,0,1,2,1,2,2,0,1,2,3,1,2,0,0,0,2,1,1,1,1,1,2,0,0,1,1,0,0,0,0,1,2,1,2,2,2,1,2,1,2,0,2,0,2,2,1,1,2,1,1,2,1,1,1,0,1,0,0,0,1,1,0,1,1,1,2,3,2,3,3,0,1,2,2,3,1,0,1,0,2,1,2,2,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,3,3,2,2,1,0,0,3,2,3,2,0,0,0,1,1,3,0,0,1,1,0,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,
+1,2,2,3,3,1,0,1,3,2,3,1,1,1,0,1,1,1,1,1,3,1,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,1,1,2,2,2,1,0,1,2,3,3,2,0,0,0,2,1,1,1,2,1,1,1,0,1,1,1,0,0,0,1,2,2,2,2,2,1,1,1,2,0,2,1,1,1,1,1,2,1,1,1,1,1,1,0,1,1,1,0,0,1,1,3,2,2,1,0,0,1,1,2,2,0,3,0,1,2,1,1,0,0,1,1,1,0,1,1,1,1,0,2,1,1,1,2,2,1,1,1,2,1,2,1,1,1,1,1,1,1,2,1,1,1,2,3,1,1,1,1,1,1,1,1,1,0,1,2,3,3,0,1,0,0,0,3,3,1,0,0,1,2,2,1,0,0,0,0,2,0,0,1,1,1,0,2,1,1,1,2,1,1,1,1,1,1,2,1,1,0,1,1,0,1,1,1,0,1,2,1,1,0,1,1,1,1,1,1,
+1,0,1,2,3,3,0,1,0,0,0,2,2,0,0,0,0,1,2,2,0,0,0,0,1,0,0,1,1,0,0,2,0,1,0,2,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,2,0,1,1,1,1,1,0,1,3,2,2,0,1,0,1,0,2,3,2,0,0,1,2,2,1,0,0,1,1,1,0,0,2,1,0,1,2,2,1,1,2,1,1,1,1,1,1,2,1,1,1,1,1,1,0,2,1,0,1,1,0,1,1,1,0,1,1,2,1,1,0,1,2,2,2,0,0,1,0,0,2,2,1,1,0,0,2,1,1,0,0,0,1,2,0,0,2,1,0,0,2,1,1,1,2,1,1,1,1,2,1,2,1,1,1,2,2,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,0,1,1,2,3,0,0,0,1,0,3,2,1,0,0,1,2,1,1,0,0,0,0,2,1,0,1,1,0,0,2,1,2,1,1,1,0,0,0,1,0,1,1,1,1,1,2,0,0,1,0,0,0,2,0,0,1,1,
+1,1,1,1,1,1,0,1,3,0,0,2,1,2,2,1,0,0,2,1,2,2,0,0,0,2,1,1,1,0,1,1,0,0,1,1,2,0,0,0,1,2,1,2,2,1,1,2,1,2,0,1,1,1,1,1,1,1,1,1,2,1,1,0,0,1,1,1,1,0,0,1,1,3,2,0,0,0,1,0,2,2,2,0,0,0,2,2,1,0,0,0,0,3,1,1,1,1,0,0,2,1,1,1,2,1,0,1,1,1,0,1,1,1,1,1,1,1,0,2,1,0,0,1,0,1,1,0,1,1,1,1,1,1,0,1,2,3,2,0,0,0,1,0,2,2,0,0,0,0,2,1,1,0,0,0,0,2,1,0,1,1,0,0,2,1,1,0,2,1,1,1,1,2,1,2,1,2,0,1,1,1,0,2,1,1,1,2,1,1,1,1,0,1,1,1,1,1,0,1,3,1,1,2,2,2,3,2,1,1,2,2,1,1,0,1,0,2,2,1,1,1,1,1,0,0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,0,2,2,0,0,0,0,2,2,1,0,0,0,1,1,0,0,1,2,0,0,2,1,1,1,2,2,1,1,1,2,1,2,1,1,0,1,1,1,1,2,1,1,1,2,1,1,1,1,0,1,2,1,1,1,0,1,1,0,0,1,2,3,2,1,0,0,2,0,1,1,0,0,0,1,1,1,1,0,1,1,0,0,1,0,0,0,0,0,1,2,1,2,1,2,1,1,1,2,0,2,1,1,1,0,1,2,0,0,1,1,1,0,0,0,0,0,0,0,0,0,2,3,2,0,0,0,0,0,1,1,2,1,0,0,1,1,1,0,0,0,0,2,0,0,1,1,0,0,2,1,1,1,2,1,1,1,1,1,1,2,1,0,1,1,1,1,0,2,1,1,1,1,1,1,0,1,0,1,1,1,1,1,0,1,1,2,2,0,1,1,1,0,2,2,2,0,0,0,3,2,1,0,0,0,1,1,0,0,1,1,0,1,1,1,0,0,1,1,0,1,1,1,1,1,1,1,1,2,1,1,
+1,1,1,1,1,2,1,1,1,0,0,1,1,1,0,1,0,1,2,1,0,2,1,1,2,2,1,1,2,1,1,1,0,0,0,1,1,0,1,1,1,1,0,0,1,1,1,0,0,0,1,2,2,2,2,2,1,1,1,2,0,2,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,0,1,0,1,2,3,0,0,0,1,0,2,2,0,0,0,0,2,2,0,0,0,0,0,1,0,0,1,0,0,0,2,0,1,0,2,1,1,1,1,1,0,2,0,0,0,1,2,1,1,1,1,0,1,2,0,1,0,1,0,1,1,1,0,1,0,1,2,2,2,0,0,0,1,0,2,1,2,0,0,0,1,1,2,0,0,0,0,1,0,0,1,1,0,0,2,1,0,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,0,1,1,1,1,1,0,1,1,2,2,0,0,0,1,0,2,2,2,0,0,0,1,1,0,0,0,0,0,1,1,0,2,0,0,1,1,1,0,1,1,0,1,1,1,1,1,1,0,
+1,1,1,1,0,0,1,0,0,1,1,0,1,0,1,1,1,1,1,0,0,0,1,1,0,0,1,0,1,2,1,0,0,1,1,1,2,0,0,0,1,1,0,1,0,1,1,0,0,1,0,0,0,0,0,0,2,1,2,1,1,1,1,1,2,0,2,0,1,1,0,1,2,1,0,1,1,1,0,0,0,0,0,0,1,0,0,2,1,1,0,1,2,0,0,1,1,1,0,0,0,1,1,0,0,0,0,0,1,0,0,1,0,0,0,2,1,0,1,2,2,1,1,1,1,1,2,1,1,0,1,1,1,1,2,1,1,1,2,1,1,0,1,0,1,1,1,1,1,0,1,1,2,2,0,0,0,0,0,1,1,0,0,0,0,2,1,0,0,0,0,0,2,0,0,2,2,0,0,2,0,0,1,2,1,1,1,1,1,1,1,0,1,1,0,1,1,0,1,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,2,0,0,3,1,0,2,1,1,1,0,0,1,1,1,0,0,0,1,1,0,0,0,1,0,0,1,0,1,0,1,2,1,0,
+1,1,1,2,1,1,0,1,1,1,1,1,0,0,0,1,1,1,1,1,0,1,0,0,0,1,0,0,2,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,2,0,0,0,2,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,2,1,1,0,0,1,1,1,1,1,0,1,2,1,1,1,2,1,1,1,0,1,1,2,1,0,0,0,0,1,1,1,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,1,1,0,0,1,1,2,1,0,0,0,1,1,0,0,0,1,1,0,0,1,0,1,0,0,0,1,2,1,1,1,1,1,1,1,1,0,1,0,1,1,1,1,1,1,0,1,1,1,0,0,0,0,0,0,1,0,0,2,0,0,0,1,1,1,1,0,0,1,1,0,0,0,0,0,1,1,1,2,0,0,1,0,0,1,0,1,0,0,
+0,0,1,1,1,1,1,1,1,1,2,0,1,1,1,1,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,0,0,2,1,0,1,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,1,1,1,1,0,1,1,0,1,0,1,1,0,1,1,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,0,0,0,1,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,1,1,0,1,0,1,0,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,0,0,1,1,0,1,0,1,1,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,0,0,1,0,0,1,0,1,0,1,
+1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,1,1,0,1,0,1,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0];b.Latin2HungarianModel={charToOrderMap:b.Latin2_HungarianCharToOrderMap,precedenceMatrix:b.HungarianLangModel,mTypicalPositiveRatio:.947368,keepEnglishLetter:!0,charsetName:"ISO-8859-2"};b.Win1250HungarianModel={charToOrderMap:b.win1250HungarianCharToOrderMap,precedenceMatrix:b.HungarianLangModel,
+mTypicalPositiveRatio:.947368,keepEnglishLetter:!0,charsetName:"windows-1250"};!0},{"./init":21}],29:[function(b,a,d){b=b("./init");b.TIS620CharToOrderMap=[255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253,253,182,106,107,100,183,184,185,101,94,186,187,108,109,110,111,188,189,190,89,95,112,113,
+191,192,193,194,253,253,253,253,253,253,64,72,73,114,74,115,116,102,81,201,117,90,103,78,82,96,202,91,79,84,104,105,97,98,92,203,253,253,253,253,253,209,210,211,212,213,88,214,215,216,217,218,219,220,118,221,222,223,224,99,85,83,225,226,227,228,229,230,231,232,233,234,235,236,5,30,237,24,238,75,8,26,52,34,51,119,47,58,57,49,53,55,43,20,19,44,14,48,3,17,25,39,62,31,54,45,9,16,2,61,15,239,12,42,46,18,21,76,4,66,63,22,10,1,36,23,13,40,27,32,35,86,240,241,242,243,244,11,28,41,29,33,245,50,37,6,7,67,77,
+38,93,246,247,68,56,59,65,69,60,70,80,71,87,248,249,250,251,252,253];b.ThaiLangModel=[0,1,3,3,3,3,0,0,3,3,0,3,3,0,3,3,3,3,3,3,3,3,0,0,3,3,3,0,3,3,3,3,0,3,3,0,0,0,1,3,0,3,3,2,3,3,0,1,2,3,3,3,3,0,2,0,2,0,0,3,2,1,2,2,3,0,3,3,2,3,0,0,3,3,0,3,3,0,3,3,3,3,3,3,3,3,3,0,3,2,3,0,2,2,2,3,0,2,3,0,0,0,0,1,0,1,2,3,1,1,3,2,2,0,1,1,0,0,1,0,0,0,0,0,0,0,1,1,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,3,3,2,3,2,3,3,2,2,2,3,1,2,3,0,3,3,2,2,1,2,3,3,1,2,0,1,3,0,1,0,0,1,0,0,0,0,0,0,0,1,1,3,3,2,2,3,3,3,3,1,2,3,3,3,3,3,2,
+2,2,2,3,3,2,2,3,3,2,2,3,2,3,2,2,3,3,1,2,3,1,2,2,3,3,1,0,2,1,0,0,3,1,2,1,0,0,1,0,0,0,0,0,0,1,0,1,3,3,3,3,3,3,2,2,3,3,3,3,2,3,2,2,3,3,2,2,3,2,2,2,2,1,1,3,1,2,1,1,3,2,1,0,2,1,0,1,0,1,1,0,1,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,3,3,3,2,3,2,3,3,2,2,3,2,3,3,2,3,1,1,2,3,2,2,2,3,2,2,2,2,2,1,2,1,2,2,1,1,3,3,2,1,0,1,2,2,0,1,3,0,0,0,1,1,0,0,0,0,0,2,3,0,0,2,1,1,3,3,2,3,3,2,0,0,3,3,0,3,3,0,2,2,3,1,2,2,1,1,1,0,2,2,2,0,2,2,1,1,0,2,1,0,2,0,0,2,0,1,0,0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0,3,3,2,3,3,2,0,0,3,3,0,
+2,3,0,2,1,2,2,2,2,1,2,0,0,2,2,2,0,2,2,1,1,0,2,1,0,2,0,0,2,0,1,1,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,3,3,2,3,2,3,2,0,2,2,1,3,2,1,3,2,1,2,3,2,2,3,0,2,3,2,2,1,2,2,2,2,1,2,2,0,0,0,0,2,0,1,2,0,1,1,1,0,1,0,3,1,1,0,0,0,0,0,0,0,0,0,1,0,3,3,2,3,3,2,3,2,2,2,3,2,2,3,2,2,1,2,3,2,2,3,1,3,2,2,2,3,2,2,2,3,3,2,1,3,0,1,1,1,0,2,1,1,1,1,1,0,1,0,1,1,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,3,0,3,3,3,3,3,0,0,3,0,2,2,3,3,3,3,3,0,0,0,1,1,3,0,0,0,0,2,0,0,1,0,0,0,0,0,0,0,2,3,0,0,0,3,0,2,0,0,0,0,0,3,0,0,0,0,0,0,0,0,2,0,3,3,3,3,
+0,0,2,3,0,0,3,0,3,3,2,3,3,3,3,3,0,0,3,3,3,0,0,0,3,3,0,0,3,0,0,0,0,2,0,0,2,1,1,3,0,0,1,0,0,2,3,0,1,0,0,0,0,0,0,0,1,0,3,3,3,3,2,3,3,3,3,3,3,3,1,2,1,3,3,2,2,1,2,2,2,3,1,1,2,0,2,1,2,1,2,2,1,0,0,0,1,1,0,1,0,1,1,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,3,0,2,1,2,3,3,3,0,2,0,2,2,0,2,1,3,2,2,1,2,1,0,0,2,2,1,0,2,1,2,2,0,1,1,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,2,1,3,3,1,1,3,0,2,3,1,1,3,2,1,1,2,0,2,2,3,2,1,1,1,1,1,2,3,0,0,1,3,1,2,1,2,0,3,0,0,0,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,3,
+3,1,1,3,2,3,3,3,1,3,2,1,3,2,1,3,2,2,2,2,1,3,3,1,2,1,3,1,2,3,0,2,1,1,3,2,2,2,1,2,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,3,2,3,2,3,3,2,3,2,3,2,3,3,2,1,0,3,2,2,2,1,2,2,2,1,2,2,1,2,1,1,2,2,2,3,0,1,3,1,1,1,1,0,1,1,0,2,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,2,3,2,2,1,1,3,2,3,2,3,2,0,3,2,2,1,2,0,2,2,2,1,2,2,2,2,1,3,2,1,2,2,1,0,2,0,1,0,0,1,1,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,1,3,3,3,3,3,2,3,1,2,3,3,2,2,3,0,1,1,2,0,3,3,2,2,3,0,1,1,3,0,0,0,0,3,1,0,3,3,0,2,0,2,1,0,0,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,3,3,3,2,3,2,3,3,0,1,3,1,1,2,1,2,1,1,3,1,1,0,2,3,1,1,1,1,1,1,1,1,3,1,1,2,2,2,2,1,1,1,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,2,2,1,1,2,1,3,3,2,3,2,2,3,2,2,3,1,2,2,1,2,0,3,2,1,2,2,2,2,2,1,3,2,1,2,2,2,1,1,1,1,0,0,1,1,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,1,3,3,0,2,1,0,3,2,0,0,3,1,0,1,1,0,1,0,0,0,0,0,1,1,0,0,1,0,3,2,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,2,2,2,3,0,0,1,3,0,3,2,0,3,2,2,3,3,3,3,3,1,0,2,2,2,0,2,2,1,2,0,2,3,0,0,0,0,1,0,1,0,0,1,1,0,0,1,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,1,3,0,2,3,1,3,3,2,3,3,0,3,3,0,3,2,2,3,2,3,3,3,0,0,2,2,3,0,1,1,1,3,0,0,3,0,0,0,2,2,0,1,3,0,1,2,2,2,3,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,3,2,3,3,2,0,3,3,2,2,3,1,3,2,1,3,2,0,1,2,2,0,2,3,2,1,0,3,0,0,0,0,3,0,0,2,3,1,3,0,0,3,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,3,2,2,2,1,2,0,1,3,1,1,3,1,3,0,0,2,1,1,1,1,2,1,1,1,0,2,1,0,1,1,2,0,0,0,3,1,1,0,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,0,3,1,0,0,0,1,0,3,3,3,3,2,2,2,2,2,1,3,1,1,1,2,0,1,1,2,1,2,1,3,2,0,0,3,1,1,1,1,1,3,1,0,2,3,0,0,0,3,0,0,0,1,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,0,3,3,0,2,0,0,0,0,0,0,0,3,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,1,3,0,0,1,2,0,0,2,0,3,3,2,3,3,3,2,3,0,0,2,2,2,0,0,0,2,2,0,0,1,0,0,0,0,3,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,3,0,2,0,0,0,0,0,0,0,0,0,0,1,2,3,1,3,3,0,0,1,0,3,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,1,2,3,1,2,3,1,0,3,0,2,2,1,0,2,1,1,2,0,1,0,0,1,1,1,1,0,1,0,0,1,0,0,0,0,1,1,0,3,0,0,2,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,2,1,0,1,1,1,3,1,2,2,2,2,2,2,1,1,1,1,0,3,1,0,1,3,1,1,1,1,1,1,0,2,0,1,3,1,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,1,3,0,2,2,1,3,3,2,3,3,0,1,1,0,2,2,1,2,1,3,3,1,0,0,3,2,0,0,0,0,2,1,0,1,0,0,0,0,1,2,0,1,1,3,1,1,2,2,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,3,0,0,1,0,0,0,3,0,0,3,0,3,1,0,1,1,1,3,2,0,0,0,3,0,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,3,3,1,3,2,1,3,3,1,2,2,0,1,2,1,0,1,2,0,0,0,0,0,3,0,0,0,3,0,0,0,0,3,0,0,1,1,1,0,0,
+0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,1,2,0,3,3,3,2,2,0,1,1,0,1,3,0,0,0,2,2,0,0,0,0,3,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,2,3,1,2,0,0,2,1,0,3,1,0,1,2,0,1,1,1,1,3,0,0,3,1,1,0,2,2,1,1,0,2,0,0,0,0,0,1,0,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,3,1,2,0,0,2,2,0,1,2,0,1,0,1,3,1,2,1,0,0,0,2,0,3,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,1,1,2,2,0,0,0,2,0,2,1,0,1,1,0,1,1,1,2,1,0,0,1,1,1,0,2,1,1,1,0,1,1,
+0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,2,0,1,3,1,1,1,1,0,0,0,0,3,2,0,1,0,0,0,1,2,0,0,0,1,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,3,2,2,0,0,0,1,0,0,0,0,2,3,2,1,2,2,3,0,0,0,2,3,1,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0,3,3,2,2,0,1,0,0,0,0,2,0,2,0,1,0,0,0,1,1,0,0,0,2,1,0,1,0,1,1,
+0,0,0,1,0,2,0,0,1,0,3,0,1,0,0,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,1,0,0,1,0,0,0,0,0,1,1,2,0,0,0,0,1,0,0,1,3,1,0,0,0,0,1,1,0,0,0,1,0,0,0,0,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,3,3,1,1,1,1,2,3,0,0,2,1,1,1,1,1,0,2,1,1,0,0,0,2,1,0,1,2,1,1,0,1,2,1,0,3,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,1,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,2,0,0,0,0,0,0,1,2,1,0,1,1,0,2,0,0,1,0,0,2,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,3,0,1,0,0,0,2,0,0,0,0,0,0,0,1,2,0,0,0,0,0,3,3,0,0,1,1,2,0,0,1,2,1,0,1,1,1,0,1,1,0,0,2,1,1,0,1,0,0,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,1,0,0,0,0,1,0,0,0,0,3,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,2,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,0,0,1,1,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,2,0,1,2,0,0,1,1,0,2,0,1,0,0,1,0,0,0,0,1,0,0,0,2,0,0,0,0,1,0,0,1,0,1,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,1,0,2,1,3,0,0,0,0,1,1,0,0,0,0,0,0,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,1,0,1,0,0,2,0,0,2,0,0,1,1,
+2,0,0,1,1,0,0,0,1,0,0,0,1,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,2,0,0,0,0,
+0,0,0,2,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,3,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,2,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,
+0,2,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];b.TIS620ThaiModel={charToOrderMap:b.TIS620CharToOrderMap,precedenceMatrix:b.ThaiLangModel,mTypicalPositiveRatio:.926386,keepEnglishLetter:!1,charsetName:"TIS-620"};!0},{"./init":21}],30:[function(b,a,d){!function(a){a.OTH=1;a.Latin1_CharToClass=[1,1,1,1,
+1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,1,1,0,1,7,1,1,1,1,1,1,5,1,5,0,5,0,0,1,1,1,1,1,1,1,1,1,7,1,7,0,7,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,4,4,4,4,4,5,5,4,4,4,4,4,4,4,4,5,5,4,4,4,4,4,1,4,4,4,4,4,5,5,5,6,6,6,6,6,6,7,7,6,6,6,6,6,6,6,6,7,7,6,6,6,6,6,1,6,6,6,6,6,7,7,
+7];a.Latin1ClassModel=[0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,0,3,3,3,3,3,3,3,0,3,3,3,1,1,3,3,0,3,3,3,1,2,1,2,0,3,3,3,3,3,3,3,0,3,1,3,1,1,1,3,0,3,1,3,1,1,3,3];a.Latin1Prober=function(){a.CharSetProber.apply(this);this.reset=function(){this._mLastCharClass=a.OTH;this._mFreqCounter=[];for(var b=0;4>b;this._mFreqCounter[b++]=0);a.Latin1Prober.prototype.reset.apply(this)};this.getCharsetName=function(){return"windows-1252"};this.feed=function(b){b=this.filterWithEnglishLetters(b);for(var f=0;f<b.length;f++){var c=
+b.charCodeAt(f),c=a.Latin1_CharToClass[c],e=a.Latin1ClassModel[8*this._mLastCharClass+c];if(0==e){this._mState=a.Constants.notMe;break}this._mFreqCounter[e]++;this._mLastCharClass=c}return this.getState()};this.getConfidence=function(){var b;if(this.getState()==a.Constants.notMe)return.01;for(var f=0,c=0;c<this._mFreqCounter.length;c++)f+=this._mFreqCounter[c];.01>f||(b=this._mFreqCounter[3]/f-20*this._mFreqCounter[1]/f);0>b&&(b=0);return.95*b};this.reset()};a.Latin1Prober.prototype=new a.CharSetProber}(b("./init"))},
+{"./init":21}],31:[function(b,a,d){!function(a){a.MultiByteCharSetProber=function(){a.CharSetProber.apply(this);this.reset=function(){a.MultiByteCharSetProber.prototype.reset.apply(this);this._mCodingSM&&this._mCodingSM.reset();this._mDistributionAnalyzer&&this._mDistributionAnalyzer.reset();this._mLastChar="\x00\x00"};this.getCharsetName=function(){};this.feed=function(b){for(var f=b.length,c=0;c<f;c++){var e=this._mCodingSM.nextState(b[c]);if(e==a.Constants.error){a.Constants._debug&&a.log(this.getCharsetName()+
+" prober hit error at byte "+c+"\n");this._mState=a.Constants.notMe;break}else if(e==a.Constants.itsMe){this._mState=a.Constants.foundIt;break}else e==a.Constants.start&&(e=this._mCodingSM.getCurrentCharLen(),0==c?(this._mLastChar[1]=b[0],this._mDistributionAnalyzer.feed(this._mLastChar,e)):this._mDistributionAnalyzer.feed(b.slice(c-1,c+1),e))}this._mLastChar[0]=b[f-1];this.getState()==a.Constants.detecting&&this._mDistributionAnalyzer.gotEnoughData()&&this.getConfidence()>a.Constants.SHORTCUT_THRESHOLD&&
+(this._mState=a.Constants.foundIt);return this.getState()};this.getConfidence=function(){return this._mDistributionAnalyzer.getConfidence()}};a.MultiByteCharSetProber.prototype=new a.CharSetProber}(b("./init"))},{"./init":21}],32:[function(b,a,d){!function(a){a.MBCSGroupProber=function(){a.CharSetGroupProber.apply(this);this._mProbers=[new a.UTF8Prober,new a.SJISProber,new a.EUCJPProber,new a.GB2312Prober,new a.EUCKRProber,new a.Big5Prober,new a.EUCTWProber];this.reset()};a.MBCSGroupProber.prototype=
+new a.CharSetGroupProber}(b("./init"))},{"./init":21}],33:[function(b,a,d){b=b("./init");a=b.Constants;b.BIG5_cls=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0];b.BIG5_st=[a.error,a.start,a.start,3,a.error,a.error,a.error,a.error,a.error,a.error,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.error,a.error,a.start,a.start,a.start,a.start,a.start,a.start,a.start];b.Big5CharLenTable=[0,1,1,2,0];b.Big5SMModel={classTable:b.BIG5_cls,classFactor:5,stateTable:b.BIG5_st,charLenTable:b.Big5CharLenTable,name:"Big5"};b.EUCJP_cls=[4,4,4,4,4,4,4,4,
+4,4,4,4,4,4,5,5,4,4,4,4,4,4,4,4,4,4,4,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5];b.EUCJP_st=
+[3,4,3,5,a.start,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.start,a.error,a.start,a.error,a.error,a.error,a.error,a.error,a.start,a.error,a.error,a.error,3,a.error,3,a.error,a.error,a.error,a.start,a.start,a.start,a.start];b.EUCJPCharLenTable=[2,2,2,3,1,0];b.EUCJPSMModel={classTable:b.EUCJP_cls,classFactor:6,stateTable:b.EUCJP_st,charLenTable:b.EUCJPCharLenTable,name:"EUC-JP"};b.EUCKR_cls=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,
+1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0];b.EUCKR_st=[a.error,a.start,3,a.error,
+a.error,a.error,a.error,a.error,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.error,a.error,a.start,a.start];b.EUCKRCharLenTable=[0,1,2,0];b.EUCKRSMModel={classTable:b.EUCKR_cls,classFactor:4,stateTable:b.EUCKR_st,charLenTable:b.EUCKRCharLenTable,name:"EUC-KR"};b.EUCTW_cls=[2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,4,4,4,4,4,5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0];b.EUCTW_st=[a.error,a.error,a.start,3,3,3,4,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.error,a.start,a.error,a.start,a.start,a.start,a.error,a.error,a.error,
+a.error,a.error,5,a.error,a.error,a.error,a.start,a.error,a.start,a.start,a.start,a.error,a.start,a.start,a.start,a.start,a.start,a.start];b.EUCTWCharLenTable=[0,0,1,2,2,2,3];b.EUCTWSMModel={classTable:b.EUCTW_cls,classFactor:7,stateTable:b.EUCTW_st,charLenTable:b.EUCTWCharLenTable,name:"x-euc-tw"};b.GB2312_cls=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,0];b.GB2312_st=[a.error,a.start,a.start,a.start,a.start,a.start,3,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.error,
+a.error,a.start,4,a.error,a.start,a.start,a.error,a.error,a.error,a.error,a.error,a.error,5,a.error,a.error,a.error,a.itsMe,a.error,a.error,a.error,a.start,a.start,a.start,a.start,a.start,a.start];b.GB2312CharLenTable=[0,1,1,1,1,1,2];b.GB2312SMModel={classTable:b.GB2312_cls,classFactor:7,stateTable:b.GB2312_st,charLenTable:b.GB2312CharLenTable,name:"GB2312"};b.SJIS_cls=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0];b.SJIS_st=[a.error,a.start,a.start,3,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.itsMe,a.itsMe,
+a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.error,a.error,a.start,a.start,a.start,a.start];b.SJISCharLenTable=[0,1,1,2,0,0];b.SJISSMModel={classTable:b.SJIS_cls,classFactor:6,stateTable:b.SJIS_st,charLenTable:b.SJISCharLenTable,name:"Shift_JIS"};b.UCS2BE_cls=[0,0,0,0,0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,5];b.UCS2BE_st=[5,7,7,a.error,4,3,a.error,a.error,a.error,a.error,a.error,a.error,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,6,6,6,6,a.error,a.error,6,6,6,6,6,a.itsMe,6,6,6,6,6,6,5,7,7,a.error,5,8,6,6,a.error,6,6,6,6,6,6,6,a.error,a.error,
+a.start,a.start];b.UCS2BECharLenTable=[2,2,2,0,2,2];b.UCS2BESMModel={classTable:b.UCS2BE_cls,classFactor:6,stateTable:b.UCS2BE_st,charLenTable:b.UCS2BECharLenTable,name:"UTF-16BE"};b.UCS2LE_cls=[0,0,0,0,0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,5];b.UCS2LE_st=[6,6,7,6,4,3,a.error,a.error,a.error,a.error,a.error,a.error,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,5,5,5,a.error,a.itsMe,a.error,5,5,5,a.error,5,a.error,6,6,7,6,8,8,5,5,5,a.error,5,5,5,a.error,a.error,a.error,5,5,5,5,5,a.error,5,a.error,a.start,a.start];b.UCS2LECharLenTable=
+[2,2,2,2,2,2];b.UCS2LESMModel={classTable:b.UCS2LE_cls,classFactor:6,stateTable:b.UCS2LE_st,charLenTable:b.UCS2LECharLenTable,name:"UTF-16LE"};b.UTF8_cls=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,8,8,8,8,8,8,8,8,8,8,8,8,9,8,8,10,11,11,11,11,11,11,11,12,13,13,13,14,15,0,0];b.UTF8_st=[a.error,a.start,a.error,a.error,a.error,a.error,12,10,9,11,8,7,6,5,4,3,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,a.itsMe,
+a.itsMe,a.itsMe,a.error,a.error,5,5,5,5,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,5,5,5,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,7,7,7,7,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,7,7,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,9,9,9,9,a.error,a.error,a.error,a.error,
+a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,9,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,12,12,12,12,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,12,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,12,12,12,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,
+a.error,a.error,a.error,a.start,a.start,a.start,a.start,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error,a.error];b.UTF8CharLenTable=[0,1,0,0,0,0,2,3,3,3,4,4,5,5,6,6];b.UTF8SMModel={classTable:b.UTF8_cls,classFactor:16,stateTable:b.UTF8_st,charLenTable:b.UTF8CharLenTable,name:"UTF-8"};!0},{"./init":21}],34:[function(b,a,d){!function(a){a.SingleByteCharSetProber=function(b,f,c){a.CharSetProber.apply(this);var e=this;this.reset=function(){a.SingleByteCharSetProber.prototype.reset.apply(this);
+this._mLastOrder=255;this._mSeqCounters=[];for(var b=0;4>b;this._mSeqCounters[b++]=0);this._mFreqChar=this._mTotalChar=this._mTotalSeqs=0};this.getCharsetName=function(){return this._mNameProber?this._mNameProber.getCharsetName():this._mModel.charsetName};this.feed=function(b){this._mModel.keepEnglishLetter||(b=this.filterWithoutEnglishLetters(b));var c=b.length;if(!c)return this.getState();for(var f=0,d;f<c;f++)d=b.charCodeAt(f),d=this._mModel.charToOrderMap[d],250>d&&this._mTotalChar++,64>d&&(this._mFreqChar++,
+64>this._mLastOrder&&(this._mTotalSeqs++,this._mReversed?this._mSeqCounters[this._mModel.precedenceMatrix[64*d+this._mLastOrder]]++:this._mSeqCounters[this._mModel.precedenceMatrix[64*this._mLastOrder+d]]++)),this._mLastOrder=d;this.getState()==a.Constants.detecting&&1024<e._mTotalSeqs&&(b=this.getConfidence(),.95<b?a.Constants._debug&&a.log(this._mModel.charsetName+" confidence = "+b+", we have a winner\n"):.05>b&&(a.Constants._debug&&a.log(this._mModel.charsetName+" confidence = "+b+", below negative shortcut threshhold 0.05\n"),
+this._mState=a.Constants.notMe));return this.getState()};this.getConfidence=function(){var a=.01;0<this._mTotalSeqs&&(a=1*this._mSeqCounters[3]/this._mTotalSeqs/this._mModel.mTypicalPositiveRatio,a*=this._mFreqChar/this._mTotalChar,1<=a&&(a=.99));return a};(function(a,b,c){e._mModel=a;e._mReversed=b;e._mNameProber=c;e.reset()})(b,void 0!==f?f:!1,void 0!==c?c:null)};a.SingleByteCharSetProber.prototype=new a.CharSetProber}(b("./init"))},{"./init":21}],35:[function(b,a,d){!function(a){a.SBCSGroupProber=
+function(){a.CharSetGroupProber.apply(this);this._mProbers=[new a.SingleByteCharSetProber(a.Win1251CyrillicModel),new a.SingleByteCharSetProber(a.Koi8rModel),new a.SingleByteCharSetProber(a.Latin5CyrillicModel),new a.SingleByteCharSetProber(a.MacCyrillicModel),new a.SingleByteCharSetProber(a.Ibm866Model),new a.SingleByteCharSetProber(a.Ibm855Model),new a.SingleByteCharSetProber(a.Latin7GreekModel),new a.SingleByteCharSetProber(a.Win1253GreekModel),new a.SingleByteCharSetProber(a.Latin5BulgarianModel),
+new a.SingleByteCharSetProber(a.Win1251BulgarianModel),new a.SingleByteCharSetProber(a.Latin2HungarianModel),new a.SingleByteCharSetProber(a.Win1250HungarianModel),new a.SingleByteCharSetProber(a.TIS620ThaiModel)];var b=new a.HebrewProber,f=new a.SingleByteCharSetProber(a.Win1255HebrewModel,!1,b),c=new a.SingleByteCharSetProber(a.Win1255HebrewModel,!0,b);b.setModelProbers(f,c);this._mProbers.push(b,f,c);this.reset()};a.SBCSGroupProber.prototype=new a.CharSetGroupProber}(b("./init"))},{"./init":21}],
+36:[function(b,a,d){!function(a){a.SJISProber=function(){a.MultiByteCharSetProber.apply(this);this.reset=function(){a.SJISProber.prototype.reset.apply(this);this._mContextAnalyzer.reset()};this.getCharsetName=function(){return"SHIFT_JIS"};this.feed=function(b){for(var f=b.length,c=0;c<f;c++){var e=this._mCodingSM.nextState(b[c]);if(e==a.Constants.error){a.Constants._debug&&a.log(this.getCharsetName()+" prober hit error at byte "+c+"\n");this._mState=a.Constants.notMe;break}else if(e==a.Constants.itsMe){this._mState=
+a.Constants.foundIt;break}else e==a.Constants.start&&(e=this._mCodingSM.getCurrentCharLen(),0==c?(this._mLastChar[1]=b[0],this._mContextAnalyzer.feed(this._mLastChar.slice(2-e),e),this._mDistributionAnalyzer.feed(this._mLastChar,e)):(this._mContextAnalyzer.feed(b.slice(c+1-e,c+3-e),e),this._mDistributionAnalyzer.feed(b.slice(c-1,c+1),e)))}this._mLastChar[0]=b[f-1];this.getState()==a.Constants.detecting&&this._mContextAnalyzer.gotEnoughData()&&this.getConfidence()>a.Constants.SHORTCUT_THRESHOLD&&(this._mState=
+a.Constants.foundIt);return this.getState()};this.getConfidence=function(){var a=this._mContextAnalyzer.getConfidence(),b=this._mDistributionAnalyzer.getConfidence();return Math.max(a,b)};this._mCodingSM=new a.CodingStateMachine(a.SJISSMModel);this._mDistributionAnalyzer=new a.SJISDistributionAnalysis;this._mContextAnalyzer=new a.SJISContextAnalysis;this.reset()};a.SJISProber.prototype=new a.MultiByteCharSetProber}(b("./init"))},{"./init":21}],37:[function(b,a,d){!function(a){a.UniversalDetector=
+function(){var b=a.Constants.MINIMUM_THRESHOLD;this.reset=function(){this.result={encoding:null,confidence:0};this.done=!1;this._mStart=!0;this._mGotData=!1;this._mInputState=0;this._mBOM=this._mLastChar="";this._mEscCharsetProber&&this._mEscCharsetProber.reset();for(var a=0,b;b=this._mCharsetProbers[a];a++)b.reset()};this.feed=function(b){if(!this.done&&b.length)if(this._mGotData||(this._mBOM+=b,"\u00ef\u00bb\u00bf"==this._mBOM.slice(0,3)?this.result={encoding:"UTF-8",confidence:1}:"\u00ff\u00fe\x00\x00"==
+this._mBOM.slice(0,4)?this.result={encoding:"UTF-32LE",confidence:1}:"\x00\x00\u00fe\u00ff"==this._mBOM.slice(0,4)?this.result={encoding:"UTF-32BE",confidence:1}:"\u00fe\u00ff\x00\x00"==this._mBOM.slice(0,4)?this.result={encoding:"X-ISO-10646-UCS-4-3412",confidence:1}:"\x00\x00\u00ff\u00fe"==this._mBOM.slice(0,4)?this.result={encoding:"X-ISO-10646-UCS-4-2143",confidence:1}:"\u00ff\u00fe"==this._mBOM.slice(0,2)?this.result={encoding:"UTF-16LE",confidence:1}:"\u00fe\u00ff"==this._mBOM.slice(0,2)&&(this.result=
+{encoding:"UTF-16BE",confidence:1}),3<this._mBOM.length&&(this._mGotData=!0)),this.result.encoding&&0<this.result.confidence)this.done=!0;else if(0==this._mInputState&&(this._highBitDetector.test(b)?this._mInputState=2:this._escDetector.test(this._mLastChar+b)&&(this._mInputState=1)),this._mLastChar=b.slice(-1),1==this._mInputState)this._mEscCharsetProber||(this._mEscCharsetProber=new a.EscCharSetProber),this._mEscCharsetProber.feed(b)==a.Constants.foundIt&&(this.result={encoding:this._mEscCharsetProber.getCharsetName(),
+confidence:this._mEscCharsetProber.getConfidence()},this.done=!0);else if(2==this._mInputState){0==this._mCharsetProbers.length&&(this._mCharsetProbers=[new a.MBCSGroupProber,new a.SBCSGroupProber,new a.Latin1Prober]);for(var c=0,e;e=this._mCharsetProbers[c];c++)if(e.feed(b)==a.Constants.foundIt){this.result={encoding:e.getCharsetName(),confidence:e.getConfidence()};this.done=!0;break}}};this.close=function(){if(!this.done)if(0===this._mBOM.length)a.Constants._debug&&a.log("no data received!\n");
+else{this.done=!0;if(0==this._mInputState)return a.Constants._debug&&a.log("pure ascii"),this.result={encoding:"ascii",confidence:1};if(2==this._mInputState){for(var f=null,c=0,e=null,d=0,g;g=this._mCharsetProbers[d];d++)g&&(f=g.getConfidence(),f>c&&(c=f,e=g),a.Constants._debug&&a.log(g.getCharsetName()+" confidence "+g.getConfidence()));if(e&&c>b)return this.result={encoding:e.getCharsetName(),confidence:e.getConfidence()}}if(a.Constants._debug)for(a.log("no probers hit minimum threshhold\n"),d=
+0;g=this._mCharsetProbers[d];d++)g&&a.log(g.getCharsetName()+" confidence = "+g.getConfidence()+"\n")}};this._highBitDetector=/[\x80-\xFF]/;this._escDetector=/(\x1B|~\{)/;this._mEscCharsetProber=null;this._mCharsetProbers=[];this.reset()}}(b("./init"))},{"./init":21}],38:[function(b,a,d){!function(a){a.UTF8Prober=function(){a.CharSetProber.apply(this);this.reset=function(){a.UTF8Prober.prototype.reset.apply(this);this._mCodingSM.reset();this._mNumOfMBChar=0};this.getCharsetName=function(){return"UTF-8"};
+this.feed=function(b){for(var d=0,c;d<b.length;d++)if(c=b[d],c=this._mCodingSM.nextState(c),c==a.Constants.error){this._mState=a.Constants.notMe;break}else if(c==a.Constants.itsMe){this._mState=a.Constants.foundIt;break}else c==a.Constants.start&&2<=this._mCodingSM.getCurrentCharLen()&&this._mNumOfMBChar++;this.getState()==a.Constants.detecting&&this.getConfidence()>a.Constants.SHORTCUT_THRESHOLD&&(this._mState=a.Constants.foundIt);return this.getState()};this.getConfidence=function(){var a=.99;if(6>
+this._mNumOfMBChar){for(var b=0;b<this._mNumOfMBChar;b++)a*=.5;return 1-a}return a};this._mCodingSM=new a.CodingStateMachine(a.UTF8SMModel);this.reset()};a.UTF8Prober.prototype=new a.CharSetProber}(b("./init"))},{"./init":21}]},{},[1])(1)});
diff --git a/tools/eslint/node_modules/jschardet/package.json b/tools/eslint/node_modules/jschardet/package.json
index 52d0213511..8177bb3bd3 100755
--- a/tools/eslint/node_modules/jschardet/package.json
+++ b/tools/eslint/node_modules/jschardet/package.json
@@ -1,8 +1,8 @@
{
"_from": "jschardet@^1.4.2",
- "_id": "jschardet@1.4.2",
+ "_id": "jschardet@1.5.0",
"_inBundle": false,
- "_integrity": "sha1-KqEH8UKvQSHRRWWdRPUIMJYeaZo=",
+ "_integrity": "sha512-+Q8JsoEQbrdE+a/gg1F9XO92gcKXgpE5UACqr0sIubjDmBEkd+OOWPGzQeMrWSLxd73r4dHxBeRW7edHu5LmJQ==",
"_location": "/eslint/jschardet",
"_phantomChildren": {},
"_requested": {
@@ -18,8 +18,8 @@
"_requiredBy": [
"/eslint/external-editor"
],
- "_resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.4.2.tgz",
- "_shasum": "2aa107f142af4121d145659d44f50830961e699a",
+ "_resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.5.0.tgz",
+ "_shasum": "a61f310306a5a71188e1b1acd08add3cfbb08b1e",
"_spec": "jschardet@^1.4.2",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/external-editor",
"author": {
@@ -59,5 +59,5 @@
"dist": "npm run dist-dev && java -jar node_modules/google-closure-compiler/compiler.jar --warning_level QUIET --compilation_level SIMPLE_OPTIMIZATIONS --js dist/jschardet.js > dist/jschardet.min.js",
"dist-dev": "mkdir -p dist && browserify index.js -s jschardet --detect-globals false -o dist/jschardet.js"
},
- "version": "1.4.2"
+ "version": "1.5.0"
}
diff --git a/tools/eslint/node_modules/jschardet/src/chardistribution.js b/tools/eslint/node_modules/jschardet/src/chardistribution.js
index 95c736d2f0..e0b99a3fc2 100755
--- a/tools/eslint/node_modules/jschardet/src/chardistribution.js
+++ b/tools/eslint/node_modules/jschardet/src/chardistribution.js
@@ -33,6 +33,8 @@ jschardet.CharDistributionAnalysis = function() {
var ENOUGH_DATA_THRESHOLD = 1024;
var SURE_YES = 0.99;
var SURE_NO = 0.01;
+ var MINIMUM_DATA_THRESHOLD = 3;
+
var self = this;
function init() {
@@ -77,7 +79,7 @@ jschardet.CharDistributionAnalysis = function() {
*/
this.getConfidence = function() {
// if we didn't receive any character in our consideration range, return negative answer
- if( this._mTotalChars <= 0 ) {
+ if( this._mTotalChars <= 0 || this._mFreqChars <= MINIMUM_DATA_THRESHOLD) {
return SURE_NO;
}
if( this._mTotalChars != this._mFreqChars ) {
@@ -232,8 +234,8 @@ jschardet.SJISDistributionAnalysis = function() {
this.getOrder = function(aStr) {
// for sjis encoding, we are interested
- // first byte range: 0x81 -- 0x9f , 0xe0 -- 0xfe
- // second byte range: 0x40 -- 0x7e, 0x81 -- 0xfe
+ // first byte range: 0x81 -- 0x9f , 0xe0 -- 0xef
+ // second byte range: 0x40 -- 0x7e, 0x80 -- 0xfc
// no validation needed here. State machine has done that
if( aStr.charCodeAt(0) >= 0x81 && aStr.charCodeAt(0) <= 0x9F ) {
var order = 188 * (aStr.charCodeAt(0) - 0x81);
@@ -243,7 +245,7 @@ jschardet.SJISDistributionAnalysis = function() {
return -1;
}
order += aStr.charCodeAt(1) - 0x40;
- if( aStr.charCodeAt(1) > 0x7F ) {
+ if( aStr.charCodeAt(1) < 0x40 || aStr.charCodeAt(1) === 0x7F || aStr.charCodeAt(1) > 0xFC) {
order = -1;
}
return order;
diff --git a/tools/eslint/node_modules/jschardet/src/mbcssm.js b/tools/eslint/node_modules/jschardet/src/mbcssm.js
index 20412069ae..2596bd845e 100755
--- a/tools/eslint/node_modules/jschardet/src/mbcssm.js
+++ b/tools/eslint/node_modules/jschardet/src/mbcssm.js
@@ -343,8 +343,8 @@ jschardet.SJIS_cls = [
2,2,2,2,2,2,2,2, // d8 - df
3,3,3,3,3,3,3,3, // e0 - e7
3,3,3,3,3,4,4,4, // e8 - ef
- 4,4,4,4,4,4,4,4, // f0 - f7
- 4,4,4,4,4,0,0,0 // f8 - ff
+ 3,3,3,3,3,3,3,3, // f0 - f7
+ 3,3,3,3,3,0,0,0 // f8 - ff
];
jschardet.SJIS_st = [
diff --git a/tools/eslint/node_modules/lru-cache/LICENSE b/tools/eslint/node_modules/lru-cache/LICENSE
new file mode 100644
index 0000000000..19129e315f
--- /dev/null
+++ b/tools/eslint/node_modules/lru-cache/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/tools/eslint/node_modules/lru-cache/README.md b/tools/eslint/node_modules/lru-cache/README.md
new file mode 100644
index 0000000000..f646c1cb8e
--- /dev/null
+++ b/tools/eslint/node_modules/lru-cache/README.md
@@ -0,0 +1,152 @@
+# lru cache
+
+A cache object that deletes the least-recently-used items.
+
+[![Build Status](https://travis-ci.org/isaacs/node-lru-cache.svg?branch=master)](https://travis-ci.org/isaacs/node-lru-cache) [![Coverage Status](https://coveralls.io/repos/isaacs/node-lru-cache/badge.svg?service=github)](https://coveralls.io/github/isaacs/node-lru-cache)
+
+## Installation:
+
+```javascript
+npm install lru-cache --save
+```
+
+## Usage:
+
+```javascript
+var LRU = require("lru-cache")
+ , options = { max: 500
+ , length: function (n, key) { return n * 2 + key.length }
+ , dispose: function (key, n) { n.close() }
+ , maxAge: 1000 * 60 * 60 }
+ , cache = LRU(options)
+ , otherCache = LRU(50) // sets just the max size
+
+cache.set("key", "value")
+cache.get("key") // "value"
+
+// non-string keys ARE fully supported
+var someObject = {}
+cache.set(someObject, 'a value')
+cache.set('[object Object]', 'a different value')
+assert.equal(cache.get(someObject), 'a value')
+
+cache.reset() // empty the cache
+```
+
+If you put more stuff in it, then items will fall out.
+
+If you try to put an oversized thing in it, then it'll fall out right
+away.
+
+## Options
+
+* `max` The maximum size of the cache, checked by applying the length
+ function to all values in the cache. Not setting this is kind of
+ silly, since that's the whole purpose of this lib, but it defaults
+ to `Infinity`.
+* `maxAge` Maximum age in ms. Items are not pro-actively pruned out
+ as they age, but if you try to get an item that is too old, it'll
+ drop it and return undefined instead of giving it to you.
+* `length` Function that is used to calculate the length of stored
+ items. If you're storing strings or buffers, then you probably want
+ to do something like `function(n, key){return n.length}`. The default is
+ `function(){return 1}`, which is fine if you want to store `max`
+ like-sized things. The item is passed as the first argument, and
+ the key is passed as the second argumnet.
+* `dispose` Function that is called on items when they are dropped
+ from the cache. This can be handy if you want to close file
+ descriptors or do other cleanup tasks when items are no longer
+ accessible. Called with `key, value`. It's called *before*
+ actually removing the item from the internal cache, so if you want
+ to immediately put it back in, you'll have to do that in a
+ `nextTick` or `setTimeout` callback or it won't do anything.
+* `stale` By default, if you set a `maxAge`, it'll only actually pull
+ stale items out of the cache when you `get(key)`. (That is, it's
+ not pre-emptively doing a `setTimeout` or anything.) If you set
+ `stale:true`, it'll return the stale value before deleting it. If
+ you don't set this, then it'll return `undefined` when you try to
+ get a stale entry, as if it had already been deleted.
+* `noDisposeOnSet` By default, if you set a `dispose()` method, then
+ it'll be called whenever a `set()` operation overwrites an existing
+ key. If you set this option, `dispose()` will only be called when a
+ key falls out of the cache, not when it is overwritten.
+
+## API
+
+* `set(key, value, maxAge)`
+* `get(key) => value`
+
+ Both of these will update the "recently used"-ness of the key.
+ They do what you think. `maxAge` is optional and overrides the
+ cache `maxAge` option if provided.
+
+ If the key is not found, `get()` will return `undefined`.
+
+ The key and val can be any value.
+
+* `peek(key)`
+
+ Returns the key value (or `undefined` if not found) without
+ updating the "recently used"-ness of the key.
+
+ (If you find yourself using this a lot, you *might* be using the
+ wrong sort of data structure, but there are some use cases where
+ it's handy.)
+
+* `del(key)`
+
+ Deletes a key out of the cache.
+
+* `reset()`
+
+ Clear the cache entirely, throwing away all values.
+
+* `has(key)`
+
+ Check if a key is in the cache, without updating the recent-ness
+ or deleting it for being stale.
+
+* `forEach(function(value,key,cache), [thisp])`
+
+ Just like `Array.prototype.forEach`. Iterates over all the keys
+ in the cache, in order of recent-ness. (Ie, more recently used
+ items are iterated over first.)
+
+* `rforEach(function(value,key,cache), [thisp])`
+
+ The same as `cache.forEach(...)` but items are iterated over in
+ reverse order. (ie, less recently used items are iterated over
+ first.)
+
+* `keys()`
+
+ Return an array of the keys in the cache.
+
+* `values()`
+
+ Return an array of the values in the cache.
+
+* `length`
+
+ Return total length of objects in cache taking into account
+ `length` options function.
+
+* `itemCount`
+
+ Return total quantity of objects currently in cache. Note, that
+ `stale` (see options) items are returned as part of this item
+ count.
+
+* `dump()`
+
+ Return an array of the cache entries ready for serialization and usage
+ with 'destinationCache.load(arr)`.
+
+* `load(cacheEntriesArray)`
+
+ Loads another cache entries array, obtained with `sourceCache.dump()`,
+ into the cache. The destination cache is reset before loading new entries
+
+* `prune()`
+
+ Manually iterates over the entire cache proactively pruning old entries
diff --git a/tools/eslint/node_modules/lru-cache/index.js b/tools/eslint/node_modules/lru-cache/index.js
new file mode 100644
index 0000000000..460462aadc
--- /dev/null
+++ b/tools/eslint/node_modules/lru-cache/index.js
@@ -0,0 +1,467 @@
+'use strict'
+
+module.exports = LRUCache
+
+// This will be a proper iterable 'Map' in engines that support it,
+// or a fakey-fake PseudoMap in older versions.
+var Map = require('pseudomap')
+var util = require('util')
+
+// A linked list to keep track of recently-used-ness
+var Yallist = require('yallist')
+
+// use symbols if possible, otherwise just _props
+var hasSymbol = typeof Symbol === 'function'
+var makeSymbol
+if (hasSymbol) {
+ makeSymbol = function (key) {
+ return Symbol.for(key)
+ }
+} else {
+ makeSymbol = function (key) {
+ return '_' + key
+ }
+}
+
+var MAX = makeSymbol('max')
+var LENGTH = makeSymbol('length')
+var LENGTH_CALCULATOR = makeSymbol('lengthCalculator')
+var ALLOW_STALE = makeSymbol('allowStale')
+var MAX_AGE = makeSymbol('maxAge')
+var DISPOSE = makeSymbol('dispose')
+var NO_DISPOSE_ON_SET = makeSymbol('noDisposeOnSet')
+var LRU_LIST = makeSymbol('lruList')
+var CACHE = makeSymbol('cache')
+
+function naiveLength () { return 1 }
+
+// lruList is a yallist where the head is the youngest
+// item, and the tail is the oldest. the list contains the Hit
+// objects as the entries.
+// Each Hit object has a reference to its Yallist.Node. This
+// never changes.
+//
+// cache is a Map (or PseudoMap) that matches the keys to
+// the Yallist.Node object.
+function LRUCache (options) {
+ if (!(this instanceof LRUCache)) {
+ return new LRUCache(options)
+ }
+
+ if (typeof options === 'number') {
+ options = { max: options }
+ }
+
+ if (!options) {
+ options = {}
+ }
+
+ var max = this[MAX] = options.max
+ // Kind of weird to have a default max of Infinity, but oh well.
+ if (!max ||
+ !(typeof max === 'number') ||
+ max <= 0) {
+ this[MAX] = Infinity
+ }
+
+ var lc = options.length || naiveLength
+ if (typeof lc !== 'function') {
+ lc = naiveLength
+ }
+ this[LENGTH_CALCULATOR] = lc
+
+ this[ALLOW_STALE] = options.stale || false
+ this[MAX_AGE] = options.maxAge || 0
+ this[DISPOSE] = options.dispose
+ this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false
+ this.reset()
+}
+
+// resize the cache when the max changes.
+Object.defineProperty(LRUCache.prototype, 'max', {
+ set: function (mL) {
+ if (!mL || !(typeof mL === 'number') || mL <= 0) {
+ mL = Infinity
+ }
+ this[MAX] = mL
+ trim(this)
+ },
+ get: function () {
+ return this[MAX]
+ },
+ enumerable: true
+})
+
+Object.defineProperty(LRUCache.prototype, 'allowStale', {
+ set: function (allowStale) {
+ this[ALLOW_STALE] = !!allowStale
+ },
+ get: function () {
+ return this[ALLOW_STALE]
+ },
+ enumerable: true
+})
+
+Object.defineProperty(LRUCache.prototype, 'maxAge', {
+ set: function (mA) {
+ if (!mA || !(typeof mA === 'number') || mA < 0) {
+ mA = 0
+ }
+ this[MAX_AGE] = mA
+ trim(this)
+ },
+ get: function () {
+ return this[MAX_AGE]
+ },
+ enumerable: true
+})
+
+// resize the cache when the lengthCalculator changes.
+Object.defineProperty(LRUCache.prototype, 'lengthCalculator', {
+ set: function (lC) {
+ if (typeof lC !== 'function') {
+ lC = naiveLength
+ }
+ if (lC !== this[LENGTH_CALCULATOR]) {
+ this[LENGTH_CALCULATOR] = lC
+ this[LENGTH] = 0
+ this[LRU_LIST].forEach(function (hit) {
+ hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)
+ this[LENGTH] += hit.length
+ }, this)
+ }
+ trim(this)
+ },
+ get: function () { return this[LENGTH_CALCULATOR] },
+ enumerable: true
+})
+
+Object.defineProperty(LRUCache.prototype, 'length', {
+ get: function () { return this[LENGTH] },
+ enumerable: true
+})
+
+Object.defineProperty(LRUCache.prototype, 'itemCount', {
+ get: function () { return this[LRU_LIST].length },
+ enumerable: true
+})
+
+LRUCache.prototype.rforEach = function (fn, thisp) {
+ thisp = thisp || this
+ for (var walker = this[LRU_LIST].tail; walker !== null;) {
+ var prev = walker.prev
+ forEachStep(this, fn, walker, thisp)
+ walker = prev
+ }
+}
+
+function forEachStep (self, fn, node, thisp) {
+ var hit = node.value
+ if (isStale(self, hit)) {
+ del(self, node)
+ if (!self[ALLOW_STALE]) {
+ hit = undefined
+ }
+ }
+ if (hit) {
+ fn.call(thisp, hit.value, hit.key, self)
+ }
+}
+
+LRUCache.prototype.forEach = function (fn, thisp) {
+ thisp = thisp || this
+ for (var walker = this[LRU_LIST].head; walker !== null;) {
+ var next = walker.next
+ forEachStep(this, fn, walker, thisp)
+ walker = next
+ }
+}
+
+LRUCache.prototype.keys = function () {
+ return this[LRU_LIST].toArray().map(function (k) {
+ return k.key
+ }, this)
+}
+
+LRUCache.prototype.values = function () {
+ return this[LRU_LIST].toArray().map(function (k) {
+ return k.value
+ }, this)
+}
+
+LRUCache.prototype.reset = function () {
+ if (this[DISPOSE] &&
+ this[LRU_LIST] &&
+ this[LRU_LIST].length) {
+ this[LRU_LIST].forEach(function (hit) {
+ this[DISPOSE](hit.key, hit.value)
+ }, this)
+ }
+
+ this[CACHE] = new Map() // hash of items by key
+ this[LRU_LIST] = new Yallist() // list of items in order of use recency
+ this[LENGTH] = 0 // length of items in the list
+}
+
+LRUCache.prototype.dump = function () {
+ return this[LRU_LIST].map(function (hit) {
+ if (!isStale(this, hit)) {
+ return {
+ k: hit.key,
+ v: hit.value,
+ e: hit.now + (hit.maxAge || 0)
+ }
+ }
+ }, this).toArray().filter(function (h) {
+ return h
+ })
+}
+
+LRUCache.prototype.dumpLru = function () {
+ return this[LRU_LIST]
+}
+
+LRUCache.prototype.inspect = function (n, opts) {
+ var str = 'LRUCache {'
+ var extras = false
+
+ var as = this[ALLOW_STALE]
+ if (as) {
+ str += '\n allowStale: true'
+ extras = true
+ }
+
+ var max = this[MAX]
+ if (max && max !== Infinity) {
+ if (extras) {
+ str += ','
+ }
+ str += '\n max: ' + util.inspect(max, opts)
+ extras = true
+ }
+
+ var maxAge = this[MAX_AGE]
+ if (maxAge) {
+ if (extras) {
+ str += ','
+ }
+ str += '\n maxAge: ' + util.inspect(maxAge, opts)
+ extras = true
+ }
+
+ var lc = this[LENGTH_CALCULATOR]
+ if (lc && lc !== naiveLength) {
+ if (extras) {
+ str += ','
+ }
+ str += '\n length: ' + util.inspect(this[LENGTH], opts)
+ extras = true
+ }
+
+ var didFirst = false
+ this[LRU_LIST].forEach(function (item) {
+ if (didFirst) {
+ str += ',\n '
+ } else {
+ if (extras) {
+ str += ',\n'
+ }
+ didFirst = true
+ str += '\n '
+ }
+ var key = util.inspect(item.key).split('\n').join('\n ')
+ var val = { value: item.value }
+ if (item.maxAge !== maxAge) {
+ val.maxAge = item.maxAge
+ }
+ if (lc !== naiveLength) {
+ val.length = item.length
+ }
+ if (isStale(this, item)) {
+ val.stale = true
+ }
+
+ val = util.inspect(val, opts).split('\n').join('\n ')
+ str += key + ' => ' + val
+ })
+
+ if (didFirst || extras) {
+ str += '\n'
+ }
+ str += '}'
+
+ return str
+}
+
+LRUCache.prototype.set = function (key, value, maxAge) {
+ maxAge = maxAge || this[MAX_AGE]
+
+ var now = maxAge ? Date.now() : 0
+ var len = this[LENGTH_CALCULATOR](value, key)
+
+ if (this[CACHE].has(key)) {
+ if (len > this[MAX]) {
+ del(this, this[CACHE].get(key))
+ return false
+ }
+
+ var node = this[CACHE].get(key)
+ var item = node.value
+
+ // dispose of the old one before overwriting
+ // split out into 2 ifs for better coverage tracking
+ if (this[DISPOSE]) {
+ if (!this[NO_DISPOSE_ON_SET]) {
+ this[DISPOSE](key, item.value)
+ }
+ }
+
+ item.now = now
+ item.maxAge = maxAge
+ item.value = value
+ this[LENGTH] += len - item.length
+ item.length = len
+ this.get(key)
+ trim(this)
+ return true
+ }
+
+ var hit = new Entry(key, value, len, now, maxAge)
+
+ // oversized objects fall out of cache automatically.
+ if (hit.length > this[MAX]) {
+ if (this[DISPOSE]) {
+ this[DISPOSE](key, value)
+ }
+ return false
+ }
+
+ this[LENGTH] += hit.length
+ this[LRU_LIST].unshift(hit)
+ this[CACHE].set(key, this[LRU_LIST].head)
+ trim(this)
+ return true
+}
+
+LRUCache.prototype.has = function (key) {
+ if (!this[CACHE].has(key)) return false
+ var hit = this[CACHE].get(key).value
+ if (isStale(this, hit)) {
+ return false
+ }
+ return true
+}
+
+LRUCache.prototype.get = function (key) {
+ return get(this, key, true)
+}
+
+LRUCache.prototype.peek = function (key) {
+ return get(this, key, false)
+}
+
+LRUCache.prototype.pop = function () {
+ var node = this[LRU_LIST].tail
+ if (!node) return null
+ del(this, node)
+ return node.value
+}
+
+LRUCache.prototype.del = function (key) {
+ del(this, this[CACHE].get(key))
+}
+
+LRUCache.prototype.load = function (arr) {
+ // reset the cache
+ this.reset()
+
+ var now = Date.now()
+ // A previous serialized cache has the most recent items first
+ for (var l = arr.length - 1; l >= 0; l--) {
+ var hit = arr[l]
+ var expiresAt = hit.e || 0
+ if (expiresAt === 0) {
+ // the item was created without expiration in a non aged cache
+ this.set(hit.k, hit.v)
+ } else {
+ var maxAge = expiresAt - now
+ // dont add already expired items
+ if (maxAge > 0) {
+ this.set(hit.k, hit.v, maxAge)
+ }
+ }
+ }
+}
+
+LRUCache.prototype.prune = function () {
+ var self = this
+ this[CACHE].forEach(function (value, key) {
+ get(self, key, false)
+ })
+}
+
+function get (self, key, doUse) {
+ var node = self[CACHE].get(key)
+ if (node) {
+ var hit = node.value
+ if (isStale(self, hit)) {
+ del(self, node)
+ if (!self[ALLOW_STALE]) hit = undefined
+ } else {
+ if (doUse) {
+ self[LRU_LIST].unshiftNode(node)
+ }
+ }
+ if (hit) hit = hit.value
+ }
+ return hit
+}
+
+function isStale (self, hit) {
+ if (!hit || (!hit.maxAge && !self[MAX_AGE])) {
+ return false
+ }
+ var stale = false
+ var diff = Date.now() - hit.now
+ if (hit.maxAge) {
+ stale = diff > hit.maxAge
+ } else {
+ stale = self[MAX_AGE] && (diff > self[MAX_AGE])
+ }
+ return stale
+}
+
+function trim (self) {
+ if (self[LENGTH] > self[MAX]) {
+ for (var walker = self[LRU_LIST].tail;
+ self[LENGTH] > self[MAX] && walker !== null;) {
+ // We know that we're about to delete this one, and also
+ // what the next least recently used key will be, so just
+ // go ahead and set it now.
+ var prev = walker.prev
+ del(self, walker)
+ walker = prev
+ }
+ }
+}
+
+function del (self, node) {
+ if (node) {
+ var hit = node.value
+ if (self[DISPOSE]) {
+ self[DISPOSE](hit.key, hit.value)
+ }
+ self[LENGTH] -= hit.length
+ self[CACHE].delete(hit.key)
+ self[LRU_LIST].removeNode(node)
+ }
+}
+
+// classy, since V8 prefers predictable objects.
+function Entry (key, value, length, now, maxAge) {
+ this.key = key
+ this.value = value
+ this.length = length
+ this.now = now
+ this.maxAge = maxAge || 0
+}
diff --git a/tools/eslint/node_modules/lru-cache/package.json b/tools/eslint/node_modules/lru-cache/package.json
new file mode 100644
index 0000000000..4cec8d2f23
--- /dev/null
+++ b/tools/eslint/node_modules/lru-cache/package.json
@@ -0,0 +1,68 @@
+{
+ "_from": "lru-cache@^4.0.1",
+ "_id": "lru-cache@4.1.1",
+ "_inBundle": false,
+ "_integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==",
+ "_location": "/eslint/lru-cache",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "lru-cache@^4.0.1",
+ "name": "lru-cache",
+ "escapedName": "lru-cache",
+ "rawSpec": "^4.0.1",
+ "saveSpec": null,
+ "fetchSpec": "^4.0.1"
+ },
+ "_requiredBy": [
+ "/eslint/cross-spawn"
+ ],
+ "_resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz",
+ "_shasum": "622e32e82488b49279114a4f9ecf45e7cd6bba55",
+ "_spec": "lru-cache@^4.0.1",
+ "_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/cross-spawn",
+ "author": {
+ "name": "Isaac Z. Schlueter",
+ "email": "i@izs.me"
+ },
+ "bugs": {
+ "url": "https://github.com/isaacs/node-lru-cache/issues"
+ },
+ "bundleDependencies": false,
+ "dependencies": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ },
+ "deprecated": false,
+ "description": "A cache object that deletes the least-recently-used items.",
+ "devDependencies": {
+ "benchmark": "^2.1.4",
+ "standard": "^5.4.1",
+ "tap": "^10.3.3"
+ },
+ "files": [
+ "index.js"
+ ],
+ "homepage": "https://github.com/isaacs/node-lru-cache#readme",
+ "keywords": [
+ "mru",
+ "lru",
+ "cache"
+ ],
+ "license": "ISC",
+ "main": "index.js",
+ "name": "lru-cache",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/isaacs/node-lru-cache.git"
+ },
+ "scripts": {
+ "postpublish": "git push origin --all; git push origin --tags",
+ "posttest": "standard test/*.js index.js",
+ "postversion": "npm publish",
+ "preversion": "npm test",
+ "test": "tap test/*.js --100 -J"
+ },
+ "version": "4.1.1"
+}
diff --git a/tools/eslint/node_modules/markdown-escapes/history.md b/tools/eslint/node_modules/markdown-escapes/history.md
deleted file mode 100644
index f20d503569..0000000000
--- a/tools/eslint/node_modules/markdown-escapes/history.md
+++ /dev/null
@@ -1,6 +0,0 @@
-<!--remark setext-->
-
-<!--lint disable no-multiple-toplevel-headings -->
-
-1.0.0 / 2016-07-16
-==================
diff --git a/tools/eslint/node_modules/markdown-escapes/index.js b/tools/eslint/node_modules/markdown-escapes/index.js
index 38f81193e8..9e5b7739f9 100644
--- a/tools/eslint/node_modules/markdown-escapes/index.js
+++ b/tools/eslint/node_modules/markdown-escapes/index.js
@@ -1,19 +1,7 @@
-/**
- * @author Titus Wormer
- * @copyright 2016 Titus Wormer
- * @license MIT
- * @module markdown-escapes
- * @fileoverview List of escapable characters in markdown.
- */
-
'use strict';
-/* eslint-env commonjs */
-
-/* Expose. */
module.exports = escapes;
-/* Characters. */
var defaults = [
'\\',
'`',
@@ -53,17 +41,11 @@ var commonmark = gfm.concat([
'^'
]);
-/* Expose characters. */
escapes.default = defaults;
escapes.gfm = gfm;
escapes.commonmark = commonmark;
-/**
- * Get markdown escapes.
- *
- * @param {Object?} [options] - Configuration.
- * @return {Array.<string>} - Escapes.
- */
+/* Get markdown escapes. */
function escapes(options) {
var settings = options || {};
diff --git a/tools/eslint/node_modules/markdown-escapes/package.json b/tools/eslint/node_modules/markdown-escapes/package.json
index 1d4ce55f5a..0b21321443 100644
--- a/tools/eslint/node_modules/markdown-escapes/package.json
+++ b/tools/eslint/node_modules/markdown-escapes/package.json
@@ -1,8 +1,8 @@
{
"_from": "markdown-escapes@^1.0.0",
- "_id": "markdown-escapes@1.0.0",
+ "_id": "markdown-escapes@1.0.1",
"_inBundle": false,
- "_integrity": "sha1-yMoZ8dlNaCRZ4Kk8htsnp+9xayM=",
+ "_integrity": "sha1-GZTfLTr0gR3lmmcUk0wrIpJzRRg=",
"_location": "/markdown-escapes",
"_phantomChildren": {},
"_requested": {
@@ -18,8 +18,8 @@
"_requiredBy": [
"/remark-parse"
],
- "_resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.0.tgz",
- "_shasum": "c8ca19f1d94d682459e0a93c86db27a7ef716b23",
+ "_resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.1.tgz",
+ "_shasum": "1994df2d3af4811de59a6714934c2b2292734518",
"_spec": "markdown-escapes@^1.0.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/remark-parse",
"author": {
@@ -42,16 +42,13 @@
"deprecated": false,
"description": "List of escapable characters in markdown",
"devDependencies": {
- "browserify": "^13.0.1",
+ "browserify": "^14.1.0",
"esmangle": "^1.0.1",
- "nyc": "^7.0.0",
- "remark-cli": "^1.0.0",
- "remark-comment-config": "^4.0.0",
- "remark-github": "^5.0.0",
- "remark-lint": "^4.0.0",
- "remark-validate-links": "^4.0.0",
+ "nyc": "^11.0.0",
+ "remark-cli": "^3.0.0",
+ "remark-preset-wooorm": "^3.0.0",
"tape": "^4.0.0",
- "xo": "^0.16.0"
+ "xo": "^0.18.0"
},
"files": [
"index.js"
@@ -73,16 +70,9 @@
"branches": 100
},
"remarkConfig": {
- "output": true,
"plugins": [
- "comment-config",
- "github",
- "lint",
- "validate-links"
- ],
- "settings": {
- "bullet": "*"
- }
+ "preset-wooorm"
+ ]
},
"repository": {
"type": "git",
@@ -92,18 +82,18 @@
"build": "npm run build-md && npm run build-bundle && npm run build-mangle",
"build-bundle": "browserify index.js --bare -s markdownEscapes > markdown-escapes.js",
"build-mangle": "esmangle < markdown-escapes.js > markdown-escapes.min.js",
- "build-md": "remark . --quiet --frail",
+ "build-md": "remark . -qfo",
"lint": "xo",
"test": "npm run build && npm run lint && npm run test-coverage",
"test-api": "node test",
"test-coverage": "nyc --reporter lcov tape test.js"
},
- "version": "1.0.0",
+ "version": "1.0.1",
"xo": {
"space": true,
+ "esnext": false,
"ignores": [
- "markdown-escapes.js",
- "markdown-escapes.min.js"
+ "markdown-escapes.js"
]
}
}
diff --git a/tools/eslint/node_modules/markdown-escapes/readme.md b/tools/eslint/node_modules/markdown-escapes/readme.md
index 8ab33f397d..2f01806a34 100644
--- a/tools/eslint/node_modules/markdown-escapes/readme.md
+++ b/tools/eslint/node_modules/markdown-escapes/readme.md
@@ -1,12 +1,10 @@
# markdown-escapes [![Build Status][travis-badge]][travis] [![Coverage Status][codecov-badge]][codecov]
-<!--lint disable heading-increment no-duplicate-headings-->
-
List of escapable characters in markdown.
## Installation
-[npm][npm-install]:
+[npm][]:
```bash
npm install markdown-escapes
@@ -18,12 +16,10 @@ npm install markdown-escapes
var escapes = require('markdown-escapes');
// Access by property:
-escapes.commonmark;
-// ['\\', '`', ..., '@', '^']
+escapes.commonmark; //=> ['\\', '`', ..., '@', '^']
// Access by options object:
-escapes({gfm: true});
-// ['\\', '`', ..., '~', '|']
+escapes({gfm: true}); //=> ['\\', '`', ..., '~', '|']
```
## API
@@ -64,7 +60,7 @@ List of escapable characters in CommonMark (which includes all `gfm`s).
[codecov]: https://codecov.io/github/wooorm/markdown-escapes
-[npm-install]: https://docs.npmjs.com/cli/install
+[npm]: https://docs.npmjs.com/cli/install
[license]: LICENSE
diff --git a/tools/eslint/node_modules/pseudomap/LICENSE b/tools/eslint/node_modules/pseudomap/LICENSE
new file mode 100644
index 0000000000..19129e315f
--- /dev/null
+++ b/tools/eslint/node_modules/pseudomap/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/tools/eslint/node_modules/pseudomap/README.md b/tools/eslint/node_modules/pseudomap/README.md
new file mode 100644
index 0000000000..778bf01dfa
--- /dev/null
+++ b/tools/eslint/node_modules/pseudomap/README.md
@@ -0,0 +1,60 @@
+# pseudomap
+
+A thing that is a lot like ES6 `Map`, but without iterators, for use
+in environments where `for..of` syntax and `Map` are not available.
+
+If you need iterators, or just in general a more faithful polyfill to
+ES6 Maps, check out [es6-map](http://npm.im/es6-map).
+
+If you are in an environment where `Map` is supported, then that will
+be returned instead, unless `process.env.TEST_PSEUDOMAP` is set.
+
+You can use any value as keys, and any value as data. Setting again
+with the identical key will overwrite the previous value.
+
+Internally, data is stored on an `Object.create(null)` style object.
+The key is coerced to a string to generate the key on the internal
+data-bag object. The original key used is stored along with the data.
+
+In the event of a stringified-key collision, a new key is generated by
+appending an increasing number to the stringified-key until finding
+either the intended key or an empty spot.
+
+Note that because object traversal order of plain objects is not
+guaranteed to be identical to insertion order, the insertion order
+guarantee of `Map.prototype.forEach` is not guaranteed in this
+implementation. However, in all versions of Node.js and V8 where this
+module works, `forEach` does traverse data in insertion order.
+
+## API
+
+Most of the [Map
+API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map),
+with the following exceptions:
+
+1. A `Map` object is not an iterator.
+2. `values`, `keys`, and `entries` methods are not implemented,
+ because they return iterators.
+3. The argument to the constructor can be an Array of `[key, value]`
+ pairs, or a `Map` or `PseudoMap` object. But, since iterators
+ aren't used, passing any plain-old iterator won't initialize the
+ map properly.
+
+## USAGE
+
+Use just like a regular ES6 Map.
+
+```javascript
+var PseudoMap = require('pseudomap')
+
+// optionally provide a pseudomap, or an array of [key,value] pairs
+// as the argument to initialize the map with
+var myMap = new PseudoMap()
+
+myMap.set(1, 'number 1')
+myMap.set('1', 'string 1')
+var akey = {}
+var bkey = {}
+myMap.set(akey, { some: 'data' })
+myMap.set(bkey, { some: 'other data' })
+```
diff --git a/tools/eslint/node_modules/pseudomap/map.js b/tools/eslint/node_modules/pseudomap/map.js
new file mode 100644
index 0000000000..7db1599461
--- /dev/null
+++ b/tools/eslint/node_modules/pseudomap/map.js
@@ -0,0 +1,9 @@
+if (process.env.npm_package_name === 'pseudomap' &&
+ process.env.npm_lifecycle_script === 'test')
+ process.env.TEST_PSEUDOMAP = 'true'
+
+if (typeof Map === 'function' && !process.env.TEST_PSEUDOMAP) {
+ module.exports = Map
+} else {
+ module.exports = require('./pseudomap')
+}
diff --git a/tools/eslint/node_modules/pseudomap/package.json b/tools/eslint/node_modules/pseudomap/package.json
new file mode 100644
index 0000000000..6f9da04a22
--- /dev/null
+++ b/tools/eslint/node_modules/pseudomap/package.json
@@ -0,0 +1,54 @@
+{
+ "_from": "pseudomap@^1.0.2",
+ "_id": "pseudomap@1.0.2",
+ "_inBundle": false,
+ "_integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
+ "_location": "/eslint/pseudomap",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "pseudomap@^1.0.2",
+ "name": "pseudomap",
+ "escapedName": "pseudomap",
+ "rawSpec": "^1.0.2",
+ "saveSpec": null,
+ "fetchSpec": "^1.0.2"
+ },
+ "_requiredBy": [
+ "/eslint/lru-cache"
+ ],
+ "_resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "_shasum": "f052a28da70e618917ef0a8ac34c1ae5a68286b3",
+ "_spec": "pseudomap@^1.0.2",
+ "_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/lru-cache",
+ "author": {
+ "name": "Isaac Z. Schlueter",
+ "email": "i@izs.me",
+ "url": "http://blog.izs.me/"
+ },
+ "bugs": {
+ "url": "https://github.com/isaacs/pseudomap/issues"
+ },
+ "bundleDependencies": false,
+ "deprecated": false,
+ "description": "A thing that is a lot like ES6 `Map`, but without iterators, for use in environments where `for..of` syntax and `Map` are not available.",
+ "devDependencies": {
+ "tap": "^2.3.1"
+ },
+ "directories": {
+ "test": "test"
+ },
+ "homepage": "https://github.com/isaacs/pseudomap#readme",
+ "license": "ISC",
+ "main": "map.js",
+ "name": "pseudomap",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/isaacs/pseudomap.git"
+ },
+ "scripts": {
+ "test": "tap test/*.js"
+ },
+ "version": "1.0.2"
+}
diff --git a/tools/eslint/node_modules/pseudomap/pseudomap.js b/tools/eslint/node_modules/pseudomap/pseudomap.js
new file mode 100644
index 0000000000..25a21d829e
--- /dev/null
+++ b/tools/eslint/node_modules/pseudomap/pseudomap.js
@@ -0,0 +1,113 @@
+var hasOwnProperty = Object.prototype.hasOwnProperty
+
+module.exports = PseudoMap
+
+function PseudoMap (set) {
+ if (!(this instanceof PseudoMap)) // whyyyyyyy
+ throw new TypeError("Constructor PseudoMap requires 'new'")
+
+ this.clear()
+
+ if (set) {
+ if ((set instanceof PseudoMap) ||
+ (typeof Map === 'function' && set instanceof Map))
+ set.forEach(function (value, key) {
+ this.set(key, value)
+ }, this)
+ else if (Array.isArray(set))
+ set.forEach(function (kv) {
+ this.set(kv[0], kv[1])
+ }, this)
+ else
+ throw new TypeError('invalid argument')
+ }
+}
+
+PseudoMap.prototype.forEach = function (fn, thisp) {
+ thisp = thisp || this
+ Object.keys(this._data).forEach(function (k) {
+ if (k !== 'size')
+ fn.call(thisp, this._data[k].value, this._data[k].key)
+ }, this)
+}
+
+PseudoMap.prototype.has = function (k) {
+ return !!find(this._data, k)
+}
+
+PseudoMap.prototype.get = function (k) {
+ var res = find(this._data, k)
+ return res && res.value
+}
+
+PseudoMap.prototype.set = function (k, v) {
+ set(this._data, k, v)
+}
+
+PseudoMap.prototype.delete = function (k) {
+ var res = find(this._data, k)
+ if (res) {
+ delete this._data[res._index]
+ this._data.size--
+ }
+}
+
+PseudoMap.prototype.clear = function () {
+ var data = Object.create(null)
+ data.size = 0
+
+ Object.defineProperty(this, '_data', {
+ value: data,
+ enumerable: false,
+ configurable: true,
+ writable: false
+ })
+}
+
+Object.defineProperty(PseudoMap.prototype, 'size', {
+ get: function () {
+ return this._data.size
+ },
+ set: function (n) {},
+ enumerable: true,
+ configurable: true
+})
+
+PseudoMap.prototype.values =
+PseudoMap.prototype.keys =
+PseudoMap.prototype.entries = function () {
+ throw new Error('iterators are not implemented in this version')
+}
+
+// Either identical, or both NaN
+function same (a, b) {
+ return a === b || a !== a && b !== b
+}
+
+function Entry (k, v, i) {
+ this.key = k
+ this.value = v
+ this._index = i
+}
+
+function find (data, k) {
+ for (var i = 0, s = '_' + k, key = s;
+ hasOwnProperty.call(data, key);
+ key = s + i++) {
+ if (same(data[key].key, k))
+ return data[key]
+ }
+}
+
+function set (data, k, v) {
+ for (var i = 0, s = '_' + k, key = s;
+ hasOwnProperty.call(data, key);
+ key = s + i++) {
+ if (same(data[key].key, k)) {
+ data[key].value = v
+ return
+ }
+ }
+ data.size++
+ data[key] = new Entry(k, v, key)
+}
diff --git a/tools/eslint/node_modules/semver/LICENSE b/tools/eslint/node_modules/semver/LICENSE
new file mode 100644
index 0000000000..19129e315f
--- /dev/null
+++ b/tools/eslint/node_modules/semver/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/tools/eslint/node_modules/semver/README.md b/tools/eslint/node_modules/semver/README.md
new file mode 100644
index 0000000000..cbd956549d
--- /dev/null
+++ b/tools/eslint/node_modules/semver/README.md
@@ -0,0 +1,350 @@
+semver(1) -- The semantic versioner for npm
+===========================================
+
+## Usage
+
+ $ npm install semver
+ $ node
+ var semver = require('semver')
+
+ semver.valid('1.2.3') // '1.2.3'
+ semver.valid('a.b.c') // null
+ semver.clean(' =v1.2.3 ') // '1.2.3'
+ semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true
+ semver.gt('1.2.3', '9.8.7') // false
+ semver.lt('1.2.3', '9.8.7') // true
+
+As a command-line utility:
+
+ $ semver -h
+
+ SemVer 5.1.0
+
+ A JavaScript implementation of the http://semver.org/ specification
+ Copyright Isaac Z. Schlueter
+
+ Usage: semver [options] <version> [<version> [...]]
+ Prints valid versions sorted by SemVer precedence
+
+ Options:
+ -r --range <range>
+ Print versions that match the specified range.
+
+ -i --increment [<level>]
+ Increment a version by the specified level. Level can
+ be one of: major, minor, patch, premajor, preminor,
+ prepatch, or prerelease. Default level is 'patch'.
+ Only one version may be specified.
+
+ --preid <identifier>
+ Identifier to be used to prefix premajor, preminor,
+ prepatch or prerelease version increments.
+
+ -l --loose
+ Interpret versions and ranges loosely
+
+ Program exits successfully if any valid version satisfies
+ all supplied ranges, and prints all satisfying versions.
+
+ If no satisfying versions are found, then exits failure.
+
+ Versions are printed in ascending order, so supplying
+ multiple versions to the utility will just sort them.
+
+## Versions
+
+A "version" is described by the `v2.0.0` specification found at
+<http://semver.org/>.
+
+A leading `"="` or `"v"` character is stripped off and ignored.
+
+## Ranges
+
+A `version range` is a set of `comparators` which specify versions
+that satisfy the range.
+
+A `comparator` is composed of an `operator` and a `version`. The set
+of primitive `operators` is:
+
+* `<` Less than
+* `<=` Less than or equal to
+* `>` Greater than
+* `>=` Greater than or equal to
+* `=` Equal. If no operator is specified, then equality is assumed,
+ so this operator is optional, but MAY be included.
+
+For example, the comparator `>=1.2.7` would match the versions
+`1.2.7`, `1.2.8`, `2.5.3`, and `1.3.9`, but not the versions `1.2.6`
+or `1.1.0`.
+
+Comparators can be joined by whitespace to form a `comparator set`,
+which is satisfied by the **intersection** of all of the comparators
+it includes.
+
+A range is composed of one or more comparator sets, joined by `||`. A
+version matches a range if and only if every comparator in at least
+one of the `||`-separated comparator sets is satisfied by the version.
+
+For example, the range `>=1.2.7 <1.3.0` would match the versions
+`1.2.7`, `1.2.8`, and `1.2.99`, but not the versions `1.2.6`, `1.3.0`,
+or `1.1.0`.
+
+The range `1.2.7 || >=1.2.9 <2.0.0` would match the versions `1.2.7`,
+`1.2.9`, and `1.4.6`, but not the versions `1.2.8` or `2.0.0`.
+
+### Prerelease Tags
+
+If a version has a prerelease tag (for example, `1.2.3-alpha.3`) then
+it will only be allowed to satisfy comparator sets if at least one
+comparator with the same `[major, minor, patch]` tuple also has a
+prerelease tag.
+
+For example, the range `>1.2.3-alpha.3` would be allowed to match the
+version `1.2.3-alpha.7`, but it would *not* be satisfied by
+`3.4.5-alpha.9`, even though `3.4.5-alpha.9` is technically "greater
+than" `1.2.3-alpha.3` according to the SemVer sort rules. The version
+range only accepts prerelease tags on the `1.2.3` version. The
+version `3.4.5` *would* satisfy the range, because it does not have a
+prerelease flag, and `3.4.5` is greater than `1.2.3-alpha.7`.
+
+The purpose for this behavior is twofold. First, prerelease versions
+frequently are updated very quickly, and contain many breaking changes
+that are (by the author's design) not yet fit for public consumption.
+Therefore, by default, they are excluded from range matching
+semantics.
+
+Second, a user who has opted into using a prerelease version has
+clearly indicated the intent to use *that specific* set of
+alpha/beta/rc versions. By including a prerelease tag in the range,
+the user is indicating that they are aware of the risk. However, it
+is still not appropriate to assume that they have opted into taking a
+similar risk on the *next* set of prerelease versions.
+
+#### Prerelease Identifiers
+
+The method `.inc` takes an additional `identifier` string argument that
+will append the value of the string as a prerelease identifier:
+
+```javascript
+> semver.inc('1.2.3', 'prerelease', 'beta')
+'1.2.4-beta.0'
+```
+
+command-line example:
+
+```shell
+$ semver 1.2.3 -i prerelease --preid beta
+1.2.4-beta.0
+```
+
+Which then can be used to increment further:
+
+```shell
+$ semver 1.2.4-beta.0 -i prerelease
+1.2.4-beta.1
+```
+
+### Advanced Range Syntax
+
+Advanced range syntax desugars to primitive comparators in
+deterministic ways.
+
+Advanced ranges may be combined in the same way as primitive
+comparators using white space or `||`.
+
+#### Hyphen Ranges `X.Y.Z - A.B.C`
+
+Specifies an inclusive set.
+
+* `1.2.3 - 2.3.4` := `>=1.2.3 <=2.3.4`
+
+If a partial version is provided as the first version in the inclusive
+range, then the missing pieces are replaced with zeroes.
+
+* `1.2 - 2.3.4` := `>=1.2.0 <=2.3.4`
+
+If a partial version is provided as the second version in the
+inclusive range, then all versions that start with the supplied parts
+of the tuple are accepted, but nothing that would be greater than the
+provided tuple parts.
+
+* `1.2.3 - 2.3` := `>=1.2.3 <2.4.0`
+* `1.2.3 - 2` := `>=1.2.3 <3.0.0`
+
+#### X-Ranges `1.2.x` `1.X` `1.2.*` `*`
+
+Any of `X`, `x`, or `*` may be used to "stand in" for one of the
+numeric values in the `[major, minor, patch]` tuple.
+
+* `*` := `>=0.0.0` (Any version satisfies)
+* `1.x` := `>=1.0.0 <2.0.0` (Matching major version)
+* `1.2.x` := `>=1.2.0 <1.3.0` (Matching major and minor versions)
+
+A partial version range is treated as an X-Range, so the special
+character is in fact optional.
+
+* `""` (empty string) := `*` := `>=0.0.0`
+* `1` := `1.x.x` := `>=1.0.0 <2.0.0`
+* `1.2` := `1.2.x` := `>=1.2.0 <1.3.0`
+
+#### Tilde Ranges `~1.2.3` `~1.2` `~1`
+
+Allows patch-level changes if a minor version is specified on the
+comparator. Allows minor-level changes if not.
+
+* `~1.2.3` := `>=1.2.3 <1.(2+1).0` := `>=1.2.3 <1.3.0`
+* `~1.2` := `>=1.2.0 <1.(2+1).0` := `>=1.2.0 <1.3.0` (Same as `1.2.x`)
+* `~1` := `>=1.0.0 <(1+1).0.0` := `>=1.0.0 <2.0.0` (Same as `1.x`)
+* `~0.2.3` := `>=0.2.3 <0.(2+1).0` := `>=0.2.3 <0.3.0`
+* `~0.2` := `>=0.2.0 <0.(2+1).0` := `>=0.2.0 <0.3.0` (Same as `0.2.x`)
+* `~0` := `>=0.0.0 <(0+1).0.0` := `>=0.0.0 <1.0.0` (Same as `0.x`)
+* `~1.2.3-beta.2` := `>=1.2.3-beta.2 <1.3.0` Note that prereleases in
+ the `1.2.3` version will be allowed, if they are greater than or
+ equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but
+ `1.2.4-beta.2` would not, because it is a prerelease of a
+ different `[major, minor, patch]` tuple.
+
+#### Caret Ranges `^1.2.3` `^0.2.5` `^0.0.4`
+
+Allows changes that do not modify the left-most non-zero digit in the
+`[major, minor, patch]` tuple. In other words, this allows patch and
+minor updates for versions `1.0.0` and above, patch updates for
+versions `0.X >=0.1.0`, and *no* updates for versions `0.0.X`.
+
+Many authors treat a `0.x` version as if the `x` were the major
+"breaking-change" indicator.
+
+Caret ranges are ideal when an author may make breaking changes
+between `0.2.4` and `0.3.0` releases, which is a common practice.
+However, it presumes that there will *not* be breaking changes between
+`0.2.4` and `0.2.5`. It allows for changes that are presumed to be
+additive (but non-breaking), according to commonly observed practices.
+
+* `^1.2.3` := `>=1.2.3 <2.0.0`
+* `^0.2.3` := `>=0.2.3 <0.3.0`
+* `^0.0.3` := `>=0.0.3 <0.0.4`
+* `^1.2.3-beta.2` := `>=1.2.3-beta.2 <2.0.0` Note that prereleases in
+ the `1.2.3` version will be allowed, if they are greater than or
+ equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but
+ `1.2.4-beta.2` would not, because it is a prerelease of a
+ different `[major, minor, patch]` tuple.
+* `^0.0.3-beta` := `>=0.0.3-beta <0.0.4` Note that prereleases in the
+ `0.0.3` version *only* will be allowed, if they are greater than or
+ equal to `beta`. So, `0.0.3-pr.2` would be allowed.
+
+When parsing caret ranges, a missing `patch` value desugars to the
+number `0`, but will allow flexibility within that value, even if the
+major and minor versions are both `0`.
+
+* `^1.2.x` := `>=1.2.0 <2.0.0`
+* `^0.0.x` := `>=0.0.0 <0.1.0`
+* `^0.0` := `>=0.0.0 <0.1.0`
+
+A missing `minor` and `patch` values will desugar to zero, but also
+allow flexibility within those values, even if the major version is
+zero.
+
+* `^1.x` := `>=1.0.0 <2.0.0`
+* `^0.x` := `>=0.0.0 <1.0.0`
+
+### Range Grammar
+
+Putting all this together, here is a Backus-Naur grammar for ranges,
+for the benefit of parser authors:
+
+```bnf
+range-set ::= range ( logical-or range ) *
+logical-or ::= ( ' ' ) * '||' ( ' ' ) *
+range ::= hyphen | simple ( ' ' simple ) * | ''
+hyphen ::= partial ' - ' partial
+simple ::= primitive | partial | tilde | caret
+primitive ::= ( '<' | '>' | '>=' | '<=' | '=' | ) partial
+partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )?
+xr ::= 'x' | 'X' | '*' | nr
+nr ::= '0' | ['1'-'9'] ( ['0'-'9'] ) *
+tilde ::= '~' partial
+caret ::= '^' partial
+qualifier ::= ( '-' pre )? ( '+' build )?
+pre ::= parts
+build ::= parts
+parts ::= part ( '.' part ) *
+part ::= nr | [-0-9A-Za-z]+
+```
+
+## Functions
+
+All methods and classes take a final `loose` boolean argument that, if
+true, will be more forgiving about not-quite-valid semver strings.
+The resulting output will always be 100% strict, of course.
+
+Strict-mode Comparators and Ranges will be strict about the SemVer
+strings that they parse.
+
+* `valid(v)`: Return the parsed version, or null if it's not valid.
+* `inc(v, release)`: Return the version incremented by the release
+ type (`major`, `premajor`, `minor`, `preminor`, `patch`,
+ `prepatch`, or `prerelease`), or null if it's not valid
+ * `premajor` in one call will bump the version up to the next major
+ version and down to a prerelease of that major version.
+ `preminor`, and `prepatch` work the same way.
+ * If called from a non-prerelease version, the `prerelease` will work the
+ same as `prepatch`. It increments the patch version, then makes a
+ prerelease. If the input version is already a prerelease it simply
+ increments it.
+* `prerelease(v)`: Returns an array of prerelease components, or null
+ if none exist. Example: `prerelease('1.2.3-alpha.1') -> ['alpha', 1]`
+* `major(v)`: Return the major version number.
+* `minor(v)`: Return the minor version number.
+* `patch(v)`: Return the patch version number.
+
+### Comparison
+
+* `gt(v1, v2)`: `v1 > v2`
+* `gte(v1, v2)`: `v1 >= v2`
+* `lt(v1, v2)`: `v1 < v2`
+* `lte(v1, v2)`: `v1 <= v2`
+* `eq(v1, v2)`: `v1 == v2` This is true if they're logically equivalent,
+ even if they're not the exact same string. You already know how to
+ compare strings.
+* `neq(v1, v2)`: `v1 != v2` The opposite of `eq`.
+* `cmp(v1, comparator, v2)`: Pass in a comparison string, and it'll call
+ the corresponding function above. `"==="` and `"!=="` do simple
+ string comparison, but are included for completeness. Throws if an
+ invalid comparison string is provided.
+* `compare(v1, v2)`: Return `0` if `v1 == v2`, or `1` if `v1` is greater, or `-1` if
+ `v2` is greater. Sorts in ascending order if passed to `Array.sort()`.
+* `rcompare(v1, v2)`: The reverse of compare. Sorts an array of versions
+ in descending order when passed to `Array.sort()`.
+* `diff(v1, v2)`: Returns difference between two versions by the release type
+ (`major`, `premajor`, `minor`, `preminor`, `patch`, `prepatch`, or `prerelease`),
+ or null if the versions are the same.
+
+
+### Ranges
+
+* `validRange(range)`: Return the valid range or null if it's not valid
+* `satisfies(version, range)`: Return true if the version satisfies the
+ range.
+* `maxSatisfying(versions, range)`: Return the highest version in the list
+ that satisfies the range, or `null` if none of them do.
+* `minSatisfying(versions, range)`: Return the lowest version in the list
+ that satisfies the range, or `null` if none of them do.
+* `gtr(version, range)`: Return `true` if version is greater than all the
+ versions possible in the range.
+* `ltr(version, range)`: Return `true` if version is less than all the
+ versions possible in the range.
+* `outside(version, range, hilo)`: Return true if the version is outside
+ the bounds of the range in either the high or low direction. The
+ `hilo` argument must be either the string `'>'` or `'<'`. (This is
+ the function called by `gtr` and `ltr`.)
+
+Note that, since ranges may be non-contiguous, a version might not be
+greater than a range, less than a range, *or* satisfy a range! For
+example, the range `1.2 <1.2.9 || >2.0.0` would have a hole from `1.2.9`
+until `2.0.0`, so the version `1.2.10` would not be greater than the
+range (because `2.0.1` satisfies, which is higher), nor less than the
+range (since `1.2.8` satisfies, which is lower), and it also does not
+satisfy the range.
+
+If you want to know if a version satisfies or does not satisfy a
+range, use the `satisfies(version, range)` function.
diff --git a/tools/eslint/node_modules/semver/bin/semver b/tools/eslint/node_modules/semver/bin/semver
new file mode 100755
index 0000000000..c5f2e857e8
--- /dev/null
+++ b/tools/eslint/node_modules/semver/bin/semver
@@ -0,0 +1,133 @@
+#!/usr/bin/env node
+// Standalone semver comparison program.
+// Exits successfully and prints matching version(s) if
+// any supplied version is valid and passes all tests.
+
+var argv = process.argv.slice(2)
+ , versions = []
+ , range = []
+ , gt = []
+ , lt = []
+ , eq = []
+ , inc = null
+ , version = require("../package.json").version
+ , loose = false
+ , identifier = undefined
+ , semver = require("../semver")
+ , reverse = false
+
+main()
+
+function main () {
+ if (!argv.length) return help()
+ while (argv.length) {
+ var a = argv.shift()
+ var i = a.indexOf('=')
+ if (i !== -1) {
+ a = a.slice(0, i)
+ argv.unshift(a.slice(i + 1))
+ }
+ switch (a) {
+ case "-rv": case "-rev": case "--rev": case "--reverse":
+ reverse = true
+ break
+ case "-l": case "--loose":
+ loose = true
+ break
+ case "-v": case "--version":
+ versions.push(argv.shift())
+ break
+ case "-i": case "--inc": case "--increment":
+ switch (argv[0]) {
+ case "major": case "minor": case "patch": case "prerelease":
+ case "premajor": case "preminor": case "prepatch":
+ inc = argv.shift()
+ break
+ default:
+ inc = "patch"
+ break
+ }
+ break
+ case "--preid":
+ identifier = argv.shift()
+ break
+ case "-r": case "--range":
+ range.push(argv.shift())
+ break
+ case "-h": case "--help": case "-?":
+ return help()
+ default:
+ versions.push(a)
+ break
+ }
+ }
+
+ versions = versions.filter(function (v) {
+ return semver.valid(v, loose)
+ })
+ if (!versions.length) return fail()
+ if (inc && (versions.length !== 1 || range.length))
+ return failInc()
+
+ for (var i = 0, l = range.length; i < l ; i ++) {
+ versions = versions.filter(function (v) {
+ return semver.satisfies(v, range[i], loose)
+ })
+ if (!versions.length) return fail()
+ }
+ return success(versions)
+}
+
+function failInc () {
+ console.error("--inc can only be used on a single version with no range")
+ fail()
+}
+
+function fail () { process.exit(1) }
+
+function success () {
+ var compare = reverse ? "rcompare" : "compare"
+ versions.sort(function (a, b) {
+ return semver[compare](a, b, loose)
+ }).map(function (v) {
+ return semver.clean(v, loose)
+ }).map(function (v) {
+ return inc ? semver.inc(v, inc, loose, identifier) : v
+ }).forEach(function (v,i,_) { console.log(v) })
+}
+
+function help () {
+ console.log(["SemVer " + version
+ ,""
+ ,"A JavaScript implementation of the http://semver.org/ specification"
+ ,"Copyright Isaac Z. Schlueter"
+ ,""
+ ,"Usage: semver [options] <version> [<version> [...]]"
+ ,"Prints valid versions sorted by SemVer precedence"
+ ,""
+ ,"Options:"
+ ,"-r --range <range>"
+ ," Print versions that match the specified range."
+ ,""
+ ,"-i --increment [<level>]"
+ ," Increment a version by the specified level. Level can"
+ ," be one of: major, minor, patch, premajor, preminor,"
+ ," prepatch, or prerelease. Default level is 'patch'."
+ ," Only one version may be specified."
+ ,""
+ ,"--preid <identifier>"
+ ," Identifier to be used to prefix premajor, preminor,"
+ ," prepatch or prerelease version increments."
+ ,""
+ ,"-l --loose"
+ ," Interpret versions and ranges loosely"
+ ,""
+ ,"Program exits successfully if any valid version satisfies"
+ ,"all supplied ranges, and prints all satisfying versions."
+ ,""
+ ,"If no satisfying versions are found, then exits failure."
+ ,""
+ ,"Versions are printed in ascending order, so supplying"
+ ,"multiple versions to the utility will just sort them."
+ ].join("\n"))
+}
diff --git a/tools/eslint/node_modules/semver/package.json b/tools/eslint/node_modules/semver/package.json
new file mode 100644
index 0000000000..258eba3c29
--- /dev/null
+++ b/tools/eslint/node_modules/semver/package.json
@@ -0,0 +1,54 @@
+{
+ "_from": "semver@^5.3.0",
+ "_id": "semver@5.3.0",
+ "_inBundle": false,
+ "_integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
+ "_location": "/eslint/semver",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "semver@^5.3.0",
+ "name": "semver",
+ "escapedName": "semver",
+ "rawSpec": "^5.3.0",
+ "saveSpec": null,
+ "fetchSpec": "^5.3.0"
+ },
+ "_requiredBy": [
+ "/eslint"
+ ],
+ "_resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
+ "_shasum": "9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f",
+ "_spec": "semver@^5.3.0",
+ "_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint",
+ "bin": {
+ "semver": "./bin/semver"
+ },
+ "bugs": {
+ "url": "https://github.com/npm/node-semver/issues"
+ },
+ "bundleDependencies": false,
+ "deprecated": false,
+ "description": "The semantic version parser used by npm.",
+ "devDependencies": {
+ "tap": "^2.0.0"
+ },
+ "files": [
+ "bin",
+ "range.bnf",
+ "semver.js"
+ ],
+ "homepage": "https://github.com/npm/node-semver#readme",
+ "license": "ISC",
+ "main": "semver.js",
+ "name": "semver",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/npm/node-semver.git"
+ },
+ "scripts": {
+ "test": "tap test/*.js"
+ },
+ "version": "5.3.0"
+}
diff --git a/tools/eslint/node_modules/semver/range.bnf b/tools/eslint/node_modules/semver/range.bnf
new file mode 100644
index 0000000000..25ebd5c832
--- /dev/null
+++ b/tools/eslint/node_modules/semver/range.bnf
@@ -0,0 +1,16 @@
+range-set ::= range ( logical-or range ) *
+logical-or ::= ( ' ' ) * '||' ( ' ' ) *
+range ::= hyphen | simple ( ' ' simple ) * | ''
+hyphen ::= partial ' - ' partial
+simple ::= primitive | partial | tilde | caret
+primitive ::= ( '<' | '>' | '>=' | '<=' | '=' | ) partial
+partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )?
+xr ::= 'x' | 'X' | '*' | nr
+nr ::= '0' | ['1'-'9'] ( ['0'-'9'] ) *
+tilde ::= '~' partial
+caret ::= '^' partial
+qualifier ::= ( '-' pre )? ( '+' build )?
+pre ::= parts
+build ::= parts
+parts ::= part ( '.' part ) *
+part ::= nr | [-0-9A-Za-z]+
diff --git a/tools/eslint/node_modules/semver/semver.js b/tools/eslint/node_modules/semver/semver.js
new file mode 100644
index 0000000000..5f1a3c5c9e
--- /dev/null
+++ b/tools/eslint/node_modules/semver/semver.js
@@ -0,0 +1,1203 @@
+exports = module.exports = SemVer;
+
+// The debug function is excluded entirely from the minified version.
+/* nomin */ var debug;
+/* nomin */ if (typeof process === 'object' &&
+ /* nomin */ process.env &&
+ /* nomin */ process.env.NODE_DEBUG &&
+ /* nomin */ /\bsemver\b/i.test(process.env.NODE_DEBUG))
+ /* nomin */ debug = function() {
+ /* nomin */ var args = Array.prototype.slice.call(arguments, 0);
+ /* nomin */ args.unshift('SEMVER');
+ /* nomin */ console.log.apply(console, args);
+ /* nomin */ };
+/* nomin */ else
+ /* nomin */ debug = function() {};
+
+// Note: this is the semver.org version of the spec that it implements
+// Not necessarily the package version of this code.
+exports.SEMVER_SPEC_VERSION = '2.0.0';
+
+var MAX_LENGTH = 256;
+var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;
+
+// The actual regexps go on exports.re
+var re = exports.re = [];
+var src = exports.src = [];
+var R = 0;
+
+// The following Regular Expressions can be used for tokenizing,
+// validating, and parsing SemVer version strings.
+
+// ## Numeric Identifier
+// A single `0`, or a non-zero digit followed by zero or more digits.
+
+var NUMERICIDENTIFIER = R++;
+src[NUMERICIDENTIFIER] = '0|[1-9]\\d*';
+var NUMERICIDENTIFIERLOOSE = R++;
+src[NUMERICIDENTIFIERLOOSE] = '[0-9]+';
+
+
+// ## Non-numeric Identifier
+// Zero or more digits, followed by a letter or hyphen, and then zero or
+// more letters, digits, or hyphens.
+
+var NONNUMERICIDENTIFIER = R++;
+src[NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*';
+
+
+// ## Main Version
+// Three dot-separated numeric identifiers.
+
+var MAINVERSION = R++;
+src[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\.' +
+ '(' + src[NUMERICIDENTIFIER] + ')\\.' +
+ '(' + src[NUMERICIDENTIFIER] + ')';
+
+var MAINVERSIONLOOSE = R++;
+src[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' +
+ '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' +
+ '(' + src[NUMERICIDENTIFIERLOOSE] + ')';
+
+// ## Pre-release Version Identifier
+// A numeric identifier, or a non-numeric identifier.
+
+var PRERELEASEIDENTIFIER = R++;
+src[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] +
+ '|' + src[NONNUMERICIDENTIFIER] + ')';
+
+var PRERELEASEIDENTIFIERLOOSE = R++;
+src[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] +
+ '|' + src[NONNUMERICIDENTIFIER] + ')';
+
+
+// ## Pre-release Version
+// Hyphen, followed by one or more dot-separated pre-release version
+// identifiers.
+
+var PRERELEASE = R++;
+src[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] +
+ '(?:\\.' + src[PRERELEASEIDENTIFIER] + ')*))';
+
+var PRERELEASELOOSE = R++;
+src[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] +
+ '(?:\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))';
+
+// ## Build Metadata Identifier
+// Any combination of digits, letters, or hyphens.
+
+var BUILDIDENTIFIER = R++;
+src[BUILDIDENTIFIER] = '[0-9A-Za-z-]+';
+
+// ## Build Metadata
+// Plus sign, followed by one or more period-separated build metadata
+// identifiers.
+
+var BUILD = R++;
+src[BUILD] = '(?:\\+(' + src[BUILDIDENTIFIER] +
+ '(?:\\.' + src[BUILDIDENTIFIER] + ')*))';
+
+
+// ## Full Version String
+// A main version, followed optionally by a pre-release version and
+// build metadata.
+
+// Note that the only major, minor, patch, and pre-release sections of
+// the version string are capturing groups. The build metadata is not a
+// capturing group, because it should not ever be used in version
+// comparison.
+
+var FULL = R++;
+var FULLPLAIN = 'v?' + src[MAINVERSION] +
+ src[PRERELEASE] + '?' +
+ src[BUILD] + '?';
+
+src[FULL] = '^' + FULLPLAIN + '$';
+
+// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
+// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
+// common in the npm registry.
+var LOOSEPLAIN = '[v=\\s]*' + src[MAINVERSIONLOOSE] +
+ src[PRERELEASELOOSE] + '?' +
+ src[BUILD] + '?';
+
+var LOOSE = R++;
+src[LOOSE] = '^' + LOOSEPLAIN + '$';
+
+var GTLT = R++;
+src[GTLT] = '((?:<|>)?=?)';
+
+// Something like "2.*" or "1.2.x".
+// Note that "x.x" is a valid xRange identifer, meaning "any version"
+// Only the first item is strictly required.
+var XRANGEIDENTIFIERLOOSE = R++;
+src[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\*';
+var XRANGEIDENTIFIER = R++;
+src[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\*';
+
+var XRANGEPLAIN = R++;
+src[XRANGEPLAIN] = '[v=\\s]*(' + src[XRANGEIDENTIFIER] + ')' +
+ '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' +
+ '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' +
+ '(?:' + src[PRERELEASE] + ')?' +
+ src[BUILD] + '?' +
+ ')?)?';
+
+var XRANGEPLAINLOOSE = R++;
+src[XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
+ '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
+ '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
+ '(?:' + src[PRERELEASELOOSE] + ')?' +
+ src[BUILD] + '?' +
+ ')?)?';
+
+var XRANGE = R++;
+src[XRANGE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAIN] + '$';
+var XRANGELOOSE = R++;
+src[XRANGELOOSE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAINLOOSE] + '$';
+
+// Tilde ranges.
+// Meaning is "reasonably at or greater than"
+var LONETILDE = R++;
+src[LONETILDE] = '(?:~>?)';
+
+var TILDETRIM = R++;
+src[TILDETRIM] = '(\\s*)' + src[LONETILDE] + '\\s+';
+re[TILDETRIM] = new RegExp(src[TILDETRIM], 'g');
+var tildeTrimReplace = '$1~';
+
+var TILDE = R++;
+src[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$';
+var TILDELOOSE = R++;
+src[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$';
+
+// Caret ranges.
+// Meaning is "at least and backwards compatible with"
+var LONECARET = R++;
+src[LONECARET] = '(?:\\^)';
+
+var CARETTRIM = R++;
+src[CARETTRIM] = '(\\s*)' + src[LONECARET] + '\\s+';
+re[CARETTRIM] = new RegExp(src[CARETTRIM], 'g');
+var caretTrimReplace = '$1^';
+
+var CARET = R++;
+src[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$';
+var CARETLOOSE = R++;
+src[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$';
+
+// A simple gt/lt/eq thing, or just "" to indicate "any version"
+var COMPARATORLOOSE = R++;
+src[COMPARATORLOOSE] = '^' + src[GTLT] + '\\s*(' + LOOSEPLAIN + ')$|^$';
+var COMPARATOR = R++;
+src[COMPARATOR] = '^' + src[GTLT] + '\\s*(' + FULLPLAIN + ')$|^$';
+
+
+// An expression to strip any whitespace between the gtlt and the thing
+// it modifies, so that `> 1.2.3` ==> `>1.2.3`
+var COMPARATORTRIM = R++;
+src[COMPARATORTRIM] = '(\\s*)' + src[GTLT] +
+ '\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')';
+
+// this one has to use the /g flag
+re[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g');
+var comparatorTrimReplace = '$1$2$3';
+
+
+// Something like `1.2.3 - 1.2.4`
+// Note that these all use the loose form, because they'll be
+// checked against either the strict or loose comparator form
+// later.
+var HYPHENRANGE = R++;
+src[HYPHENRANGE] = '^\\s*(' + src[XRANGEPLAIN] + ')' +
+ '\\s+-\\s+' +
+ '(' + src[XRANGEPLAIN] + ')' +
+ '\\s*$';
+
+var HYPHENRANGELOOSE = R++;
+src[HYPHENRANGELOOSE] = '^\\s*(' + src[XRANGEPLAINLOOSE] + ')' +
+ '\\s+-\\s+' +
+ '(' + src[XRANGEPLAINLOOSE] + ')' +
+ '\\s*$';
+
+// Star ranges basically just allow anything at all.
+var STAR = R++;
+src[STAR] = '(<|>)?=?\\s*\\*';
+
+// Compile to actual regexp objects.
+// All are flag-free, unless they were created above with a flag.
+for (var i = 0; i < R; i++) {
+ debug(i, src[i]);
+ if (!re[i])
+ re[i] = new RegExp(src[i]);
+}
+
+exports.parse = parse;
+function parse(version, loose) {
+ if (version instanceof SemVer)
+ return version;
+
+ if (typeof version !== 'string')
+ return null;
+
+ if (version.length > MAX_LENGTH)
+ return null;
+
+ var r = loose ? re[LOOSE] : re[FULL];
+ if (!r.test(version))
+ return null;
+
+ try {
+ return new SemVer(version, loose);
+ } catch (er) {
+ return null;
+ }
+}
+
+exports.valid = valid;
+function valid(version, loose) {
+ var v = parse(version, loose);
+ return v ? v.version : null;
+}
+
+
+exports.clean = clean;
+function clean(version, loose) {
+ var s = parse(version.trim().replace(/^[=v]+/, ''), loose);
+ return s ? s.version : null;
+}
+
+exports.SemVer = SemVer;
+
+function SemVer(version, loose) {
+ if (version instanceof SemVer) {
+ if (version.loose === loose)
+ return version;
+ else
+ version = version.version;
+ } else if (typeof version !== 'string') {
+ throw new TypeError('Invalid Version: ' + version);
+ }
+
+ if (version.length > MAX_LENGTH)
+ throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')
+
+ if (!(this instanceof SemVer))
+ return new SemVer(version, loose);
+
+ debug('SemVer', version, loose);
+ this.loose = loose;
+ var m = version.trim().match(loose ? re[LOOSE] : re[FULL]);
+
+ if (!m)
+ throw new TypeError('Invalid Version: ' + version);
+
+ this.raw = version;
+
+ // these are actually numbers
+ this.major = +m[1];
+ this.minor = +m[2];
+ this.patch = +m[3];
+
+ if (this.major > MAX_SAFE_INTEGER || this.major < 0)
+ throw new TypeError('Invalid major version')
+
+ if (this.minor > MAX_SAFE_INTEGER || this.minor < 0)
+ throw new TypeError('Invalid minor version')
+
+ if (this.patch > MAX_SAFE_INTEGER || this.patch < 0)
+ throw new TypeError('Invalid patch version')
+
+ // numberify any prerelease numeric ids
+ if (!m[4])
+ this.prerelease = [];
+ else
+ this.prerelease = m[4].split('.').map(function(id) {
+ if (/^[0-9]+$/.test(id)) {
+ var num = +id;
+ if (num >= 0 && num < MAX_SAFE_INTEGER)
+ return num;
+ }
+ return id;
+ });
+
+ this.build = m[5] ? m[5].split('.') : [];
+ this.format();
+}
+
+SemVer.prototype.format = function() {
+ this.version = this.major + '.' + this.minor + '.' + this.patch;
+ if (this.prerelease.length)
+ this.version += '-' + this.prerelease.join('.');
+ return this.version;
+};
+
+SemVer.prototype.toString = function() {
+ return this.version;
+};
+
+SemVer.prototype.compare = function(other) {
+ debug('SemVer.compare', this.version, this.loose, other);
+ if (!(other instanceof SemVer))
+ other = new SemVer(other, this.loose);
+
+ return this.compareMain(other) || this.comparePre(other);
+};
+
+SemVer.prototype.compareMain = function(other) {
+ if (!(other instanceof SemVer))
+ other = new SemVer(other, this.loose);
+
+ return compareIdentifiers(this.major, other.major) ||
+ compareIdentifiers(this.minor, other.minor) ||
+ compareIdentifiers(this.patch, other.patch);
+};
+
+SemVer.prototype.comparePre = function(other) {
+ if (!(other instanceof SemVer))
+ other = new SemVer(other, this.loose);
+
+ // NOT having a prerelease is > having one
+ if (this.prerelease.length && !other.prerelease.length)
+ return -1;
+ else if (!this.prerelease.length && other.prerelease.length)
+ return 1;
+ else if (!this.prerelease.length && !other.prerelease.length)
+ return 0;
+
+ var i = 0;
+ do {
+ var a = this.prerelease[i];
+ var b = other.prerelease[i];
+ debug('prerelease compare', i, a, b);
+ if (a === undefined && b === undefined)
+ return 0;
+ else if (b === undefined)
+ return 1;
+ else if (a === undefined)
+ return -1;
+ else if (a === b)
+ continue;
+ else
+ return compareIdentifiers(a, b);
+ } while (++i);
+};
+
+// preminor will bump the version up to the next minor release, and immediately
+// down to pre-release. premajor and prepatch work the same way.
+SemVer.prototype.inc = function(release, identifier) {
+ switch (release) {
+ case 'premajor':
+ this.prerelease.length = 0;
+ this.patch = 0;
+ this.minor = 0;
+ this.major++;
+ this.inc('pre', identifier);
+ break;
+ case 'preminor':
+ this.prerelease.length = 0;
+ this.patch = 0;
+ this.minor++;
+ this.inc('pre', identifier);
+ break;
+ case 'prepatch':
+ // If this is already a prerelease, it will bump to the next version
+ // drop any prereleases that might already exist, since they are not
+ // relevant at this point.
+ this.prerelease.length = 0;
+ this.inc('patch', identifier);
+ this.inc('pre', identifier);
+ break;
+ // If the input is a non-prerelease version, this acts the same as
+ // prepatch.
+ case 'prerelease':
+ if (this.prerelease.length === 0)
+ this.inc('patch', identifier);
+ this.inc('pre', identifier);
+ break;
+
+ case 'major':
+ // If this is a pre-major version, bump up to the same major version.
+ // Otherwise increment major.
+ // 1.0.0-5 bumps to 1.0.0
+ // 1.1.0 bumps to 2.0.0
+ if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0)
+ this.major++;
+ this.minor = 0;
+ this.patch = 0;
+ this.prerelease = [];
+ break;
+ case 'minor':
+ // If this is a pre-minor version, bump up to the same minor version.
+ // Otherwise increment minor.
+ // 1.2.0-5 bumps to 1.2.0
+ // 1.2.1 bumps to 1.3.0
+ if (this.patch !== 0 || this.prerelease.length === 0)
+ this.minor++;
+ this.patch = 0;
+ this.prerelease = [];
+ break;
+ case 'patch':
+ // If this is not a pre-release version, it will increment the patch.
+ // If it is a pre-release it will bump up to the same patch version.
+ // 1.2.0-5 patches to 1.2.0
+ // 1.2.0 patches to 1.2.1
+ if (this.prerelease.length === 0)
+ this.patch++;
+ this.prerelease = [];
+ break;
+ // This probably shouldn't be used publicly.
+ // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction.
+ case 'pre':
+ if (this.prerelease.length === 0)
+ this.prerelease = [0];
+ else {
+ var i = this.prerelease.length;
+ while (--i >= 0) {
+ if (typeof this.prerelease[i] === 'number') {
+ this.prerelease[i]++;
+ i = -2;
+ }
+ }
+ if (i === -1) // didn't increment anything
+ this.prerelease.push(0);
+ }
+ if (identifier) {
+ // 1.2.0-beta.1 bumps to 1.2.0-beta.2,
+ // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
+ if (this.prerelease[0] === identifier) {
+ if (isNaN(this.prerelease[1]))
+ this.prerelease = [identifier, 0];
+ } else
+ this.prerelease = [identifier, 0];
+ }
+ break;
+
+ default:
+ throw new Error('invalid increment argument: ' + release);
+ }
+ this.format();
+ this.raw = this.version;
+ return this;
+};
+
+exports.inc = inc;
+function inc(version, release, loose, identifier) {
+ if (typeof(loose) === 'string') {
+ identifier = loose;
+ loose = undefined;
+ }
+
+ try {
+ return new SemVer(version, loose).inc(release, identifier).version;
+ } catch (er) {
+ return null;
+ }
+}
+
+exports.diff = diff;
+function diff(version1, version2) {
+ if (eq(version1, version2)) {
+ return null;
+ } else {
+ var v1 = parse(version1);
+ var v2 = parse(version2);
+ if (v1.prerelease.length || v2.prerelease.length) {
+ for (var key in v1) {
+ if (key === 'major' || key === 'minor' || key === 'patch') {
+ if (v1[key] !== v2[key]) {
+ return 'pre'+key;
+ }
+ }
+ }
+ return 'prerelease';
+ }
+ for (var key in v1) {
+ if (key === 'major' || key === 'minor' || key === 'patch') {
+ if (v1[key] !== v2[key]) {
+ return key;
+ }
+ }
+ }
+ }
+}
+
+exports.compareIdentifiers = compareIdentifiers;
+
+var numeric = /^[0-9]+$/;
+function compareIdentifiers(a, b) {
+ var anum = numeric.test(a);
+ var bnum = numeric.test(b);
+
+ if (anum && bnum) {
+ a = +a;
+ b = +b;
+ }
+
+ return (anum && !bnum) ? -1 :
+ (bnum && !anum) ? 1 :
+ a < b ? -1 :
+ a > b ? 1 :
+ 0;
+}
+
+exports.rcompareIdentifiers = rcompareIdentifiers;
+function rcompareIdentifiers(a, b) {
+ return compareIdentifiers(b, a);
+}
+
+exports.major = major;
+function major(a, loose) {
+ return new SemVer(a, loose).major;
+}
+
+exports.minor = minor;
+function minor(a, loose) {
+ return new SemVer(a, loose).minor;
+}
+
+exports.patch = patch;
+function patch(a, loose) {
+ return new SemVer(a, loose).patch;
+}
+
+exports.compare = compare;
+function compare(a, b, loose) {
+ return new SemVer(a, loose).compare(b);
+}
+
+exports.compareLoose = compareLoose;
+function compareLoose(a, b) {
+ return compare(a, b, true);
+}
+
+exports.rcompare = rcompare;
+function rcompare(a, b, loose) {
+ return compare(b, a, loose);
+}
+
+exports.sort = sort;
+function sort(list, loose) {
+ return list.sort(function(a, b) {
+ return exports.compare(a, b, loose);
+ });
+}
+
+exports.rsort = rsort;
+function rsort(list, loose) {
+ return list.sort(function(a, b) {
+ return exports.rcompare(a, b, loose);
+ });
+}
+
+exports.gt = gt;
+function gt(a, b, loose) {
+ return compare(a, b, loose) > 0;
+}
+
+exports.lt = lt;
+function lt(a, b, loose) {
+ return compare(a, b, loose) < 0;
+}
+
+exports.eq = eq;
+function eq(a, b, loose) {
+ return compare(a, b, loose) === 0;
+}
+
+exports.neq = neq;
+function neq(a, b, loose) {
+ return compare(a, b, loose) !== 0;
+}
+
+exports.gte = gte;
+function gte(a, b, loose) {
+ return compare(a, b, loose) >= 0;
+}
+
+exports.lte = lte;
+function lte(a, b, loose) {
+ return compare(a, b, loose) <= 0;
+}
+
+exports.cmp = cmp;
+function cmp(a, op, b, loose) {
+ var ret;
+ switch (op) {
+ case '===':
+ if (typeof a === 'object') a = a.version;
+ if (typeof b === 'object') b = b.version;
+ ret = a === b;
+ break;
+ case '!==':
+ if (typeof a === 'object') a = a.version;
+ if (typeof b === 'object') b = b.version;
+ ret = a !== b;
+ break;
+ case '': case '=': case '==': ret = eq(a, b, loose); break;
+ case '!=': ret = neq(a, b, loose); break;
+ case '>': ret = gt(a, b, loose); break;
+ case '>=': ret = gte(a, b, loose); break;
+ case '<': ret = lt(a, b, loose); break;
+ case '<=': ret = lte(a, b, loose); break;
+ default: throw new TypeError('Invalid operator: ' + op);
+ }
+ return ret;
+}
+
+exports.Comparator = Comparator;
+function Comparator(comp, loose) {
+ if (comp instanceof Comparator) {
+ if (comp.loose === loose)
+ return comp;
+ else
+ comp = comp.value;
+ }
+
+ if (!(this instanceof Comparator))
+ return new Comparator(comp, loose);
+
+ debug('comparator', comp, loose);
+ this.loose = loose;
+ this.parse(comp);
+
+ if (this.semver === ANY)
+ this.value = '';
+ else
+ this.value = this.operator + this.semver.version;
+
+ debug('comp', this);
+}
+
+var ANY = {};
+Comparator.prototype.parse = function(comp) {
+ var r = this.loose ? re[COMPARATORLOOSE] : re[COMPARATOR];
+ var m = comp.match(r);
+
+ if (!m)
+ throw new TypeError('Invalid comparator: ' + comp);
+
+ this.operator = m[1];
+ if (this.operator === '=')
+ this.operator = '';
+
+ // if it literally is just '>' or '' then allow anything.
+ if (!m[2])
+ this.semver = ANY;
+ else
+ this.semver = new SemVer(m[2], this.loose);
+};
+
+Comparator.prototype.toString = function() {
+ return this.value;
+};
+
+Comparator.prototype.test = function(version) {
+ debug('Comparator.test', version, this.loose);
+
+ if (this.semver === ANY)
+ return true;
+
+ if (typeof version === 'string')
+ version = new SemVer(version, this.loose);
+
+ return cmp(version, this.operator, this.semver, this.loose);
+};
+
+
+exports.Range = Range;
+function Range(range, loose) {
+ if ((range instanceof Range) && range.loose === loose)
+ return range;
+
+ if (!(this instanceof Range))
+ return new Range(range, loose);
+
+ this.loose = loose;
+
+ // First, split based on boolean or ||
+ this.raw = range;
+ this.set = range.split(/\s*\|\|\s*/).map(function(range) {
+ return this.parseRange(range.trim());
+ }, this).filter(function(c) {
+ // throw out any that are not relevant for whatever reason
+ return c.length;
+ });
+
+ if (!this.set.length) {
+ throw new TypeError('Invalid SemVer Range: ' + range);
+ }
+
+ this.format();
+}
+
+Range.prototype.format = function() {
+ this.range = this.set.map(function(comps) {
+ return comps.join(' ').trim();
+ }).join('||').trim();
+ return this.range;
+};
+
+Range.prototype.toString = function() {
+ return this.range;
+};
+
+Range.prototype.parseRange = function(range) {
+ var loose = this.loose;
+ range = range.trim();
+ debug('range', range, loose);
+ // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`
+ var hr = loose ? re[HYPHENRANGELOOSE] : re[HYPHENRANGE];
+ range = range.replace(hr, hyphenReplace);
+ debug('hyphen replace', range);
+ // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
+ range = range.replace(re[COMPARATORTRIM], comparatorTrimReplace);
+ debug('comparator trim', range, re[COMPARATORTRIM]);
+
+ // `~ 1.2.3` => `~1.2.3`
+ range = range.replace(re[TILDETRIM], tildeTrimReplace);
+
+ // `^ 1.2.3` => `^1.2.3`
+ range = range.replace(re[CARETTRIM], caretTrimReplace);
+
+ // normalize spaces
+ range = range.split(/\s+/).join(' ');
+
+ // At this point, the range is completely trimmed and
+ // ready to be split into comparators.
+
+ var compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR];
+ var set = range.split(' ').map(function(comp) {
+ return parseComparator(comp, loose);
+ }).join(' ').split(/\s+/);
+ if (this.loose) {
+ // in loose mode, throw out any that are not valid comparators
+ set = set.filter(function(comp) {
+ return !!comp.match(compRe);
+ });
+ }
+ set = set.map(function(comp) {
+ return new Comparator(comp, loose);
+ });
+
+ return set;
+};
+
+// Mostly just for testing and legacy API reasons
+exports.toComparators = toComparators;
+function toComparators(range, loose) {
+ return new Range(range, loose).set.map(function(comp) {
+ return comp.map(function(c) {
+ return c.value;
+ }).join(' ').trim().split(' ');
+ });
+}
+
+// comprised of xranges, tildes, stars, and gtlt's at this point.
+// already replaced the hyphen ranges
+// turn into a set of JUST comparators.
+function parseComparator(comp, loose) {
+ debug('comp', comp);
+ comp = replaceCarets(comp, loose);
+ debug('caret', comp);
+ comp = replaceTildes(comp, loose);
+ debug('tildes', comp);
+ comp = replaceXRanges(comp, loose);
+ debug('xrange', comp);
+ comp = replaceStars(comp, loose);
+ debug('stars', comp);
+ return comp;
+}
+
+function isX(id) {
+ return !id || id.toLowerCase() === 'x' || id === '*';
+}
+
+// ~, ~> --> * (any, kinda silly)
+// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0
+// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0
+// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0
+// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0
+// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0
+function replaceTildes(comp, loose) {
+ return comp.trim().split(/\s+/).map(function(comp) {
+ return replaceTilde(comp, loose);
+ }).join(' ');
+}
+
+function replaceTilde(comp, loose) {
+ var r = loose ? re[TILDELOOSE] : re[TILDE];
+ return comp.replace(r, function(_, M, m, p, pr) {
+ debug('tilde', comp, _, M, m, p, pr);
+ var ret;
+
+ if (isX(M))
+ ret = '';
+ else if (isX(m))
+ ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
+ else if (isX(p))
+ // ~1.2 == >=1.2.0 <1.3.0
+ ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
+ else if (pr) {
+ debug('replaceTilde pr', pr);
+ if (pr.charAt(0) !== '-')
+ pr = '-' + pr;
+ ret = '>=' + M + '.' + m + '.' + p + pr +
+ ' <' + M + '.' + (+m + 1) + '.0';
+ } else
+ // ~1.2.3 == >=1.2.3 <1.3.0
+ ret = '>=' + M + '.' + m + '.' + p +
+ ' <' + M + '.' + (+m + 1) + '.0';
+
+ debug('tilde return', ret);
+ return ret;
+ });
+}
+
+// ^ --> * (any, kinda silly)
+// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0
+// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0
+// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0
+// ^1.2.3 --> >=1.2.3 <2.0.0
+// ^1.2.0 --> >=1.2.0 <2.0.0
+function replaceCarets(comp, loose) {
+ return comp.trim().split(/\s+/).map(function(comp) {
+ return replaceCaret(comp, loose);
+ }).join(' ');
+}
+
+function replaceCaret(comp, loose) {
+ debug('caret', comp, loose);
+ var r = loose ? re[CARETLOOSE] : re[CARET];
+ return comp.replace(r, function(_, M, m, p, pr) {
+ debug('caret', comp, _, M, m, p, pr);
+ var ret;
+
+ if (isX(M))
+ ret = '';
+ else if (isX(m))
+ ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
+ else if (isX(p)) {
+ if (M === '0')
+ ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
+ else
+ ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0';
+ } else if (pr) {
+ debug('replaceCaret pr', pr);
+ if (pr.charAt(0) !== '-')
+ pr = '-' + pr;
+ if (M === '0') {
+ if (m === '0')
+ ret = '>=' + M + '.' + m + '.' + p + pr +
+ ' <' + M + '.' + m + '.' + (+p + 1);
+ else
+ ret = '>=' + M + '.' + m + '.' + p + pr +
+ ' <' + M + '.' + (+m + 1) + '.0';
+ } else
+ ret = '>=' + M + '.' + m + '.' + p + pr +
+ ' <' + (+M + 1) + '.0.0';
+ } else {
+ debug('no pr');
+ if (M === '0') {
+ if (m === '0')
+ ret = '>=' + M + '.' + m + '.' + p +
+ ' <' + M + '.' + m + '.' + (+p + 1);
+ else
+ ret = '>=' + M + '.' + m + '.' + p +
+ ' <' + M + '.' + (+m + 1) + '.0';
+ } else
+ ret = '>=' + M + '.' + m + '.' + p +
+ ' <' + (+M + 1) + '.0.0';
+ }
+
+ debug('caret return', ret);
+ return ret;
+ });
+}
+
+function replaceXRanges(comp, loose) {
+ debug('replaceXRanges', comp, loose);
+ return comp.split(/\s+/).map(function(comp) {
+ return replaceXRange(comp, loose);
+ }).join(' ');
+}
+
+function replaceXRange(comp, loose) {
+ comp = comp.trim();
+ var r = loose ? re[XRANGELOOSE] : re[XRANGE];
+ return comp.replace(r, function(ret, gtlt, M, m, p, pr) {
+ debug('xRange', comp, ret, gtlt, M, m, p, pr);
+ var xM = isX(M);
+ var xm = xM || isX(m);
+ var xp = xm || isX(p);
+ var anyX = xp;
+
+ if (gtlt === '=' && anyX)
+ gtlt = '';
+
+ if (xM) {
+ if (gtlt === '>' || gtlt === '<') {
+ // nothing is allowed
+ ret = '<0.0.0';
+ } else {
+ // nothing is forbidden
+ ret = '*';
+ }
+ } else if (gtlt && anyX) {
+ // replace X with 0
+ if (xm)
+ m = 0;
+ if (xp)
+ p = 0;
+
+ if (gtlt === '>') {
+ // >1 => >=2.0.0
+ // >1.2 => >=1.3.0
+ // >1.2.3 => >= 1.2.4
+ gtlt = '>=';
+ if (xm) {
+ M = +M + 1;
+ m = 0;
+ p = 0;
+ } else if (xp) {
+ m = +m + 1;
+ p = 0;
+ }
+ } else if (gtlt === '<=') {
+ // <=0.7.x is actually <0.8.0, since any 0.7.x should
+ // pass. Similarly, <=7.x is actually <8.0.0, etc.
+ gtlt = '<';
+ if (xm)
+ M = +M + 1;
+ else
+ m = +m + 1;
+ }
+
+ ret = gtlt + M + '.' + m + '.' + p;
+ } else if (xm) {
+ ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
+ } else if (xp) {
+ ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
+ }
+
+ debug('xRange return', ret);
+
+ return ret;
+ });
+}
+
+// Because * is AND-ed with everything else in the comparator,
+// and '' means "any version", just remove the *s entirely.
+function replaceStars(comp, loose) {
+ debug('replaceStars', comp, loose);
+ // Looseness is ignored here. star is always as loose as it gets!
+ return comp.trim().replace(re[STAR], '');
+}
+
+// This function is passed to string.replace(re[HYPHENRANGE])
+// M, m, patch, prerelease, build
+// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5
+// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do
+// 1.2 - 3.4 => >=1.2.0 <3.5.0
+function hyphenReplace($0,
+ from, fM, fm, fp, fpr, fb,
+ to, tM, tm, tp, tpr, tb) {
+
+ if (isX(fM))
+ from = '';
+ else if (isX(fm))
+ from = '>=' + fM + '.0.0';
+ else if (isX(fp))
+ from = '>=' + fM + '.' + fm + '.0';
+ else
+ from = '>=' + from;
+
+ if (isX(tM))
+ to = '';
+ else if (isX(tm))
+ to = '<' + (+tM + 1) + '.0.0';
+ else if (isX(tp))
+ to = '<' + tM + '.' + (+tm + 1) + '.0';
+ else if (tpr)
+ to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr;
+ else
+ to = '<=' + to;
+
+ return (from + ' ' + to).trim();
+}
+
+
+// if ANY of the sets match ALL of its comparators, then pass
+Range.prototype.test = function(version) {
+ if (!version)
+ return false;
+
+ if (typeof version === 'string')
+ version = new SemVer(version, this.loose);
+
+ for (var i = 0; i < this.set.length; i++) {
+ if (testSet(this.set[i], version))
+ return true;
+ }
+ return false;
+};
+
+function testSet(set, version) {
+ for (var i = 0; i < set.length; i++) {
+ if (!set[i].test(version))
+ return false;
+ }
+
+ if (version.prerelease.length) {
+ // Find the set of versions that are allowed to have prereleases
+ // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
+ // That should allow `1.2.3-pr.2` to pass.
+ // However, `1.2.4-alpha.notready` should NOT be allowed,
+ // even though it's within the range set by the comparators.
+ for (var i = 0; i < set.length; i++) {
+ debug(set[i].semver);
+ if (set[i].semver === ANY)
+ continue;
+
+ if (set[i].semver.prerelease.length > 0) {
+ var allowed = set[i].semver;
+ if (allowed.major === version.major &&
+ allowed.minor === version.minor &&
+ allowed.patch === version.patch)
+ return true;
+ }
+ }
+
+ // Version has a -pre, but it's not one of the ones we like.
+ return false;
+ }
+
+ return true;
+}
+
+exports.satisfies = satisfies;
+function satisfies(version, range, loose) {
+ try {
+ range = new Range(range, loose);
+ } catch (er) {
+ return false;
+ }
+ return range.test(version);
+}
+
+exports.maxSatisfying = maxSatisfying;
+function maxSatisfying(versions, range, loose) {
+ return versions.filter(function(version) {
+ return satisfies(version, range, loose);
+ }).sort(function(a, b) {
+ return rcompare(a, b, loose);
+ })[0] || null;
+}
+
+exports.minSatisfying = minSatisfying;
+function minSatisfying(versions, range, loose) {
+ return versions.filter(function(version) {
+ return satisfies(version, range, loose);
+ }).sort(function(a, b) {
+ return compare(a, b, loose);
+ })[0] || null;
+}
+
+exports.validRange = validRange;
+function validRange(range, loose) {
+ try {
+ // Return '*' instead of '' so that truthiness works.
+ // This will throw if it's invalid anyway
+ return new Range(range, loose).range || '*';
+ } catch (er) {
+ return null;
+ }
+}
+
+// Determine if version is less than all the versions possible in the range
+exports.ltr = ltr;
+function ltr(version, range, loose) {
+ return outside(version, range, '<', loose);
+}
+
+// Determine if version is greater than all the versions possible in the range.
+exports.gtr = gtr;
+function gtr(version, range, loose) {
+ return outside(version, range, '>', loose);
+}
+
+exports.outside = outside;
+function outside(version, range, hilo, loose) {
+ version = new SemVer(version, loose);
+ range = new Range(range, loose);
+
+ var gtfn, ltefn, ltfn, comp, ecomp;
+ switch (hilo) {
+ case '>':
+ gtfn = gt;
+ ltefn = lte;
+ ltfn = lt;
+ comp = '>';
+ ecomp = '>=';
+ break;
+ case '<':
+ gtfn = lt;
+ ltefn = gte;
+ ltfn = gt;
+ comp = '<';
+ ecomp = '<=';
+ break;
+ default:
+ throw new TypeError('Must provide a hilo val of "<" or ">"');
+ }
+
+ // If it satisifes the range it is not outside
+ if (satisfies(version, range, loose)) {
+ return false;
+ }
+
+ // From now on, variable terms are as if we're in "gtr" mode.
+ // but note that everything is flipped for the "ltr" function.
+
+ for (var i = 0; i < range.set.length; ++i) {
+ var comparators = range.set[i];
+
+ var high = null;
+ var low = null;
+
+ comparators.forEach(function(comparator) {
+ if (comparator.semver === ANY) {
+ comparator = new Comparator('>=0.0.0')
+ }
+ high = high || comparator;
+ low = low || comparator;
+ if (gtfn(comparator.semver, high.semver, loose)) {
+ high = comparator;
+ } else if (ltfn(comparator.semver, low.semver, loose)) {
+ low = comparator;
+ }
+ });
+
+ // If the edge version comparator has a operator then our version
+ // isn't outside it
+ if (high.operator === comp || high.operator === ecomp) {
+ return false;
+ }
+
+ // If the lowest version comparator has an operator and our version
+ // is less than it then it isn't higher than the range
+ if ((!low.operator || low.operator === comp) &&
+ ltefn(version, low.semver)) {
+ return false;
+ } else if (low.operator === ecomp && ltfn(version, low.semver)) {
+ return false;
+ }
+ }
+ return true;
+}
+
+exports.prerelease = prerelease;
+function prerelease(version, loose) {
+ var parsed = parse(version, loose);
+ return (parsed && parsed.prerelease.length) ? parsed.prerelease : null;
+}
diff --git a/tools/eslint/node_modules/shebang-command/index.js b/tools/eslint/node_modules/shebang-command/index.js
new file mode 100644
index 0000000000..2de70b0742
--- /dev/null
+++ b/tools/eslint/node_modules/shebang-command/index.js
@@ -0,0 +1,19 @@
+'use strict';
+var shebangRegex = require('shebang-regex');
+
+module.exports = function (str) {
+ var match = str.match(shebangRegex);
+
+ if (!match) {
+ return null;
+ }
+
+ var arr = match[0].replace(/#! ?/, '').split(' ');
+ var bin = arr[0].split('/').pop();
+ var arg = arr[1];
+
+ return (bin === 'env' ?
+ arg :
+ bin + (arg ? ' ' + arg : '')
+ );
+};
diff --git a/tools/eslint/node_modules/shebang-command/license b/tools/eslint/node_modules/shebang-command/license
new file mode 100644
index 0000000000..0f8cf79c3c
--- /dev/null
+++ b/tools/eslint/node_modules/shebang-command/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Kevin Martensson <kevinmartensson@gmail.com> (github.com/kevva)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/tools/eslint/node_modules/shebang-command/package.json b/tools/eslint/node_modules/shebang-command/package.json
new file mode 100644
index 0000000000..c11c76fb53
--- /dev/null
+++ b/tools/eslint/node_modules/shebang-command/package.json
@@ -0,0 +1,71 @@
+{
+ "_from": "shebang-command@^1.2.0",
+ "_id": "shebang-command@1.2.0",
+ "_inBundle": false,
+ "_integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "_location": "/eslint/shebang-command",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "shebang-command@^1.2.0",
+ "name": "shebang-command",
+ "escapedName": "shebang-command",
+ "rawSpec": "^1.2.0",
+ "saveSpec": null,
+ "fetchSpec": "^1.2.0"
+ },
+ "_requiredBy": [
+ "/eslint/cross-spawn"
+ ],
+ "_resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "_shasum": "44aac65b695b03398968c39f363fee5deafdf1ea",
+ "_spec": "shebang-command@^1.2.0",
+ "_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/cross-spawn",
+ "author": {
+ "name": "Kevin Martensson",
+ "email": "kevinmartensson@gmail.com",
+ "url": "github.com/kevva"
+ },
+ "bugs": {
+ "url": "https://github.com/kevva/shebang-command/issues"
+ },
+ "bundleDependencies": false,
+ "dependencies": {
+ "shebang-regex": "^1.0.0"
+ },
+ "deprecated": false,
+ "description": "Get the command from a shebang",
+ "devDependencies": {
+ "ava": "*",
+ "xo": "*"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "homepage": "https://github.com/kevva/shebang-command#readme",
+ "keywords": [
+ "cmd",
+ "command",
+ "parse",
+ "shebang"
+ ],
+ "license": "MIT",
+ "name": "shebang-command",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/kevva/shebang-command.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "1.2.0",
+ "xo": {
+ "ignores": [
+ "test.js"
+ ]
+ }
+}
diff --git a/tools/eslint/node_modules/shebang-command/readme.md b/tools/eslint/node_modules/shebang-command/readme.md
new file mode 100644
index 0000000000..16b0be4d7d
--- /dev/null
+++ b/tools/eslint/node_modules/shebang-command/readme.md
@@ -0,0 +1,39 @@
+# shebang-command [![Build Status](https://travis-ci.org/kevva/shebang-command.svg?branch=master)](https://travis-ci.org/kevva/shebang-command)
+
+> Get the command from a shebang
+
+
+## Install
+
+```
+$ npm install --save shebang-command
+```
+
+
+## Usage
+
+```js
+const shebangCommand = require('shebang-command');
+
+shebangCommand('#!/usr/bin/env node');
+//=> 'node'
+
+shebangCommand('#!/bin/bash');
+//=> 'bash'
+```
+
+
+## API
+
+### shebangCommand(string)
+
+#### string
+
+Type: `string`
+
+String containing a shebang.
+
+
+## License
+
+MIT © [Kevin Martensson](http://github.com/kevva)
diff --git a/tools/eslint/node_modules/shebang-regex/index.js b/tools/eslint/node_modules/shebang-regex/index.js
new file mode 100644
index 0000000000..d052d2e05e
--- /dev/null
+++ b/tools/eslint/node_modules/shebang-regex/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = /^#!.*/;
diff --git a/tools/eslint/node_modules/shebang-regex/license b/tools/eslint/node_modules/shebang-regex/license
new file mode 100644
index 0000000000..654d0bfe94
--- /dev/null
+++ b/tools/eslint/node_modules/shebang-regex/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/tools/eslint/node_modules/shebang-regex/package.json b/tools/eslint/node_modules/shebang-regex/package.json
new file mode 100644
index 0000000000..75570d43b6
--- /dev/null
+++ b/tools/eslint/node_modules/shebang-regex/package.json
@@ -0,0 +1,64 @@
+{
+ "_from": "shebang-regex@^1.0.0",
+ "_id": "shebang-regex@1.0.0",
+ "_inBundle": false,
+ "_integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "_location": "/eslint/shebang-regex",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "shebang-regex@^1.0.0",
+ "name": "shebang-regex",
+ "escapedName": "shebang-regex",
+ "rawSpec": "^1.0.0",
+ "saveSpec": null,
+ "fetchSpec": "^1.0.0"
+ },
+ "_requiredBy": [
+ "/eslint/shebang-command"
+ ],
+ "_resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "_shasum": "da42f49740c0b42db2ca9728571cb190c98efea3",
+ "_spec": "shebang-regex@^1.0.0",
+ "_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/shebang-command",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/shebang-regex/issues"
+ },
+ "bundleDependencies": false,
+ "deprecated": false,
+ "description": "Regular expression for matching a shebang",
+ "devDependencies": {
+ "ava": "0.0.4"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "homepage": "https://github.com/sindresorhus/shebang-regex#readme",
+ "keywords": [
+ "re",
+ "regex",
+ "regexp",
+ "shebang",
+ "match",
+ "test"
+ ],
+ "license": "MIT",
+ "name": "shebang-regex",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/shebang-regex.git"
+ },
+ "scripts": {
+ "test": "node test.js"
+ },
+ "version": "1.0.0"
+}
diff --git a/tools/eslint/node_modules/shebang-regex/readme.md b/tools/eslint/node_modules/shebang-regex/readme.md
new file mode 100644
index 0000000000..ef75e51b5b
--- /dev/null
+++ b/tools/eslint/node_modules/shebang-regex/readme.md
@@ -0,0 +1,29 @@
+# shebang-regex [![Build Status](https://travis-ci.org/sindresorhus/shebang-regex.svg?branch=master)](https://travis-ci.org/sindresorhus/shebang-regex)
+
+> Regular expression for matching a [shebang](https://en.wikipedia.org/wiki/Shebang_(Unix))
+
+
+## Install
+
+```
+$ npm install --save shebang-regex
+```
+
+
+## Usage
+
+```js
+var shebangRegex = require('shebang-regex');
+var str = '#!/usr/bin/env node\nconsole.log("unicorns");';
+
+shebangRegex.test(str);
+//=> true
+
+shebangRegex.exec(str)[0];
+//=> '#!/usr/bin/env node'
+```
+
+
+## License
+
+MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/tools/eslint/node_modules/string-width/index.js b/tools/eslint/node_modules/string-width/index.js
index 1f8a1f1134..bbc49d29b1 100644
--- a/tools/eslint/node_modules/string-width/index.js
+++ b/tools/eslint/node_modules/string-width/index.js
@@ -7,10 +7,10 @@ module.exports = str => {
return 0;
}
- let width = 0;
-
str = stripAnsi(str);
+ let width = 0;
+
for (let i = 0; i < str.length; i++) {
const code = str.codePointAt(i);
@@ -19,16 +19,17 @@ module.exports = str => {
continue;
}
+ // Ignore combining characters
+ if (code >= 0x300 && code <= 0x36F) {
+ continue;
+ }
+
// Surrogates
- if (code >= 0x10000) {
+ if (code > 0xFFFF) {
i++;
}
- if (isFullwidthCodePoint(code)) {
- width += 2;
- } else {
- width++;
- }
+ width += isFullwidthCodePoint(code) ? 2 : 1;
}
return width;
diff --git a/tools/eslint/node_modules/string-width/package.json b/tools/eslint/node_modules/string-width/package.json
index 4d0ef38339..08cc96ce7b 100644
--- a/tools/eslint/node_modules/string-width/package.json
+++ b/tools/eslint/node_modules/string-width/package.json
@@ -1,8 +1,8 @@
{
"_from": "string-width@^2.1.0",
- "_id": "string-width@2.1.0",
+ "_id": "string-width@2.1.1",
"_inBundle": false,
- "_integrity": "sha1-AwZkVh/BRslCPsfZeP4kV0N/5tA=",
+ "_integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
"_location": "/eslint/string-width",
"_phantomChildren": {},
"_requested": {
@@ -19,8 +19,8 @@
"/eslint/inquirer",
"/eslint/table"
],
- "_resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.0.tgz",
- "_shasum": "030664561fc146c9423ec7d978fe2457437fe6d0",
+ "_resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "_shasum": "ab93f27a8dc13d28cac815c462143a6d9012ae9e",
"_spec": "string-width@^2.1.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/inquirer",
"author": {
@@ -84,5 +84,5 @@
"scripts": {
"test": "xo && ava"
},
- "version": "2.1.0"
+ "version": "2.1.1"
}
diff --git a/tools/eslint/node_modules/vfile-location/index.js b/tools/eslint/node_modules/vfile-location/index.js
index 0f85b86290..9263d2486a 100644
--- a/tools/eslint/node_modules/vfile-location/index.js
+++ b/tools/eslint/node_modules/vfile-location/index.js
@@ -1,22 +1,9 @@
-/**
- * @author Titus Wormer
- * @copyright 2016 Titus Wormer
- * @license MIT
- * @module vfile-location
- * @fileoverview Convert between positions (line and column-based)
- * and offsets (range-based) locations in a virtual file.
- */
-
'use strict';
/* Expose. */
module.exports = factory;
-/**
- * Factory.
- *
- * @param {VFile|string|Buffer} file - Virtual file or document.
- */
+/* Factory. */
function factory(file) {
var contents = indices(String(file));
@@ -26,27 +13,13 @@ function factory(file) {
};
}
-/**
- * Factory to get the line and column-based `position` for
- * `offset` in the bound indices.
- *
- * @param {Array.<number>} indices - Indices of
- * line-breaks in `value`.
- * @return {Function} - Bound method.
- */
+/* Factory to get the line and column-based `position` for
+ * `offset` in the bound indices. */
function offsetToPositionFactory(indices) {
return offsetToPosition;
- /**
- * Get the line and column-based `position` for
- * `offset` in the bound indices.
- *
- * @param {number} offset - Offset.
- * @return {Position} - Object with `line`, `column`,
- * and `offset` properties based on the bound
- * `indices`. An empty object when given invalid
- * or out of bounds input.
- */
+ /* Get the line and column-based `position` for
+ * `offset` in the bound indices. */
function offsetToPosition(offset) {
var index = -1;
var length = indices.length;
@@ -69,26 +42,13 @@ function offsetToPositionFactory(indices) {
}
}
-/**
- * Factory to get the `offset` for a line and column-based
- * `position` in the bound indices.
- *
- * @param {Array.<number>} indices - Indices of
- * line-breaks in `value`.
- * @return {Function} - Bound method.
- */
+/* Factory to get the `offset` for a line and column-based
+ * `position` in the bound indices. */
function positionToOffsetFactory(indices) {
return positionToOffset;
- /**
- * Get the `offset` for a line and column-based
- * `position` in the bound indices.
- *
- * @param {Position} position - Object with `line` and
- * `column` properties.
- * @return {number} - Offset. `-1` when given invalid
- * or out of bounds input.
- */
+ /* Get the `offset` for a line and column-based
+ * `position` in the bound indices. */
function positionToOffset(position) {
var line = position && position.line;
var column = position && position.column;
@@ -101,13 +61,7 @@ function positionToOffsetFactory(indices) {
}
}
-/**
- * Get indices of line-breaks in `value`.
- *
- * @param {string} value - Value.
- * @return {Array.<number>} - List of indices of
- * line-breaks.
- */
+/* Get indices of line-breaks in `value`. */
function indices(value) {
var result = [];
var index = value.indexOf('\n');
diff --git a/tools/eslint/node_modules/vfile-location/package.json b/tools/eslint/node_modules/vfile-location/package.json
index 685f4bbf2f..c8a1d7ace9 100644
--- a/tools/eslint/node_modules/vfile-location/package.json
+++ b/tools/eslint/node_modules/vfile-location/package.json
@@ -1,8 +1,8 @@
{
"_from": "vfile-location@^2.0.0",
- "_id": "vfile-location@2.0.1",
+ "_id": "vfile-location@2.0.2",
"_inBundle": false,
- "_integrity": "sha1-C/iBb3MrD4vZAqVv2kxiyOk13FI=",
+ "_integrity": "sha1-02dcWch3SY5JK0dW/2Xkrxp1IlU=",
"_location": "/vfile-location",
"_phantomChildren": {},
"_requested": {
@@ -18,8 +18,8 @@
"_requiredBy": [
"/remark-parse"
],
- "_resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.1.tgz",
- "_shasum": "0bf8816f732b0f8bd902a56fda4c62c8e935dc52",
+ "_resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.2.tgz",
+ "_shasum": "d3675c59c877498e492b4756ff65e4af1a752255",
"_spec": "vfile-location@^2.0.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/remark-parse",
"author": {
@@ -28,7 +28,7 @@
"url": "http://wooorm.com"
},
"bugs": {
- "url": "https://github.com/wooorm/vfile-location/issues"
+ "url": "https://github.com/vfile/vfile-location/issues"
},
"bundleDependencies": false,
"contributors": [
@@ -42,22 +42,19 @@
"deprecated": false,
"description": "Convert between positions (line and column-based) and offsets (range-based) locations in a virtual file",
"devDependencies": {
- "browserify": "^13.0.1",
+ "browserify": "^14.0.0",
"esmangle": "^1.0.1",
- "nyc": "^8.1.0",
- "remark-cli": "^1.0.0",
- "remark-comment-config": "^4.0.0",
- "remark-github": "^5.0.0",
- "remark-lint": "^4.0.0",
- "remark-validate-links": "^4.0.0",
+ "nyc": "^11.0.0",
+ "remark-cli": "^3.0.0",
+ "remark-preset-wooorm": "^3.0.0",
"tape": "^4.0.0",
"vfile": "^2.0.0",
- "xo": "^0.16.0"
+ "xo": "^0.18.0"
},
"files": [
"index.js"
],
- "homepage": "https://github.com/wooorm/vfile-location#readme",
+ "homepage": "https://github.com/vfile/vfile-location#readme",
"keywords": [
"remark",
"comment",
@@ -74,34 +71,28 @@
"branches": 100
},
"remarkConfig": {
- "output": true,
- "plugins": {
- "comment-config": null,
- "github": null,
- "lint": null,
- "validate-links": null
- },
- "settings": {
- "bullet": "*"
- }
+ "plugins": [
+ "preset-wooorm"
+ ]
},
"repository": {
"type": "git",
- "url": "git+https://github.com/wooorm/vfile-location.git"
+ "url": "git+https://github.com/vfile/vfile-location.git"
},
"scripts": {
"build": "npm run build-md && npm run build-bundle && npm run build-mangle",
"build-bundle": "browserify index.js --bare -s vfileLocation > vfile-location.js",
"build-mangle": "esmangle vfile-location.js > vfile-location.min.js",
- "build-md": "remark . --quiet --frail",
+ "build-md": "remark . -qfo",
"lint": "xo",
"test": "npm run build && npm run lint && npm run test-coverage",
"test-api": "node test",
"test-coverage": "nyc --reporter lcov tape test.js"
},
- "version": "2.0.1",
+ "version": "2.0.2",
"xo": {
"space": true,
+ "esnext": false,
"ignores": [
"vfile-location.js"
]
diff --git a/tools/eslint/node_modules/vfile-location/readme.md b/tools/eslint/node_modules/vfile-location/readme.md
index 02081d68dc..c9bad64cce 100644
--- a/tools/eslint/node_modules/vfile-location/readme.md
+++ b/tools/eslint/node_modules/vfile-location/readme.md
@@ -5,7 +5,7 @@ Convert between positions (line and column-based) and offsets
## Installation
-[npm][npm-install]:
+[npm][]:
```bash
npm install vfile-location
@@ -18,19 +18,8 @@ var vfile = require('vfile');
var vfileLocation = require('vfile-location');
var location = vfileLocation(vfile('foo\nbar\nbaz'));
-var offset = location.toOffset({line: 3, column: 3});
-var position = location.toPosition(offset);
-```
-
-Yields:
-
-```js
-10
-{
- "line": 3,
- "column": 3,
- "offset": 10
-}
+location.toOffset({line: 3, column: 3}); //=> 10
+location.toPosition(offset); //=> {line: 3, column: 3, offset: 10}
```
## API
@@ -60,24 +49,24 @@ the bound file.
<!-- Definitions -->
-[travis-badge]: https://img.shields.io/travis/wooorm/vfile-location.svg
+[travis-badge]: https://img.shields.io/travis/vfile/vfile-location.svg
-[travis]: https://travis-ci.org/wooorm/vfile-location
+[travis]: https://travis-ci.org/vfile/vfile-location
-[codecov-badge]: https://img.shields.io/codecov/c/github/wooorm/vfile-location.svg
+[codecov-badge]: https://img.shields.io/codecov/c/github/vfile/vfile-location.svg
-[codecov]: https://codecov.io/github/wooorm/vfile-location
+[codecov]: https://codecov.io/github/vfile/vfile-location
-[npm-install]: https://docs.npmjs.com/cli/install
+[npm]: https://docs.npmjs.com/cli/install
[license]: LICENSE
[author]: http://wooorm.com
-[vfile]: https://github.com/wooorm/vfile
+[vfile]: https://github.com/vfile/vfile
[to-offset]: #locationtooffsetposition
[to-position]: #locationtopositionoffset
-[position]: https://github.com/wooorm/unist#position
+[position]: https://github.com/syntax-tree/unist#position
diff --git a/tools/eslint/node_modules/vfile/index.js b/tools/eslint/node_modules/vfile/index.js
index bc5b0ef853..26ec88bc97 100644
--- a/tools/eslint/node_modules/vfile/index.js
+++ b/tools/eslint/node_modules/vfile/index.js
@@ -12,6 +12,7 @@ var proto = VFile.prototype;
proto.toString = toString;
proto.message = message;
+proto.info = info;
proto.fail = fail;
/* Slight backwards compatibility. Remove in the future. */
@@ -153,8 +154,7 @@ function toString(encoding) {
}
/* Create a message with `reason` at `position`.
- * When an error is passed in as `reason`, copies the
- * stack. This does not add a message to `messages`. */
+ * When an error is passed in as `reason`, copies the stack. */
function message(reason, position, ruleId) {
var filePath = this.path;
var range = stringify(position) || '1:1';
@@ -212,6 +212,16 @@ function fail() {
throw message;
}
+/* Info. Creates a vmessage, associates it with the file,
+ * and marks the fatality as null. */
+function info() {
+ var message = this.message.apply(this, arguments);
+
+ message.fatal = null;
+
+ return message;
+}
+
/* Inherit from `Error#`. */
function VMessagePrototype() {}
VMessagePrototype.prototype = Error.prototype;
diff --git a/tools/eslint/node_modules/vfile/package.json b/tools/eslint/node_modules/vfile/package.json
index 014377bf27..63ea20349d 100644
--- a/tools/eslint/node_modules/vfile/package.json
+++ b/tools/eslint/node_modules/vfile/package.json
@@ -1,8 +1,8 @@
{
"_from": "vfile@^2.0.0",
- "_id": "vfile@2.1.0",
+ "_id": "vfile@2.2.0",
"_inBundle": false,
- "_integrity": "sha1-086Lgl57jVO4lhZDQSczgZNvAr0=",
+ "_integrity": "sha1-zkek+zNZIrIz5TXbD32BIdj87U4=",
"_location": "/vfile",
"_phantomChildren": {},
"_requested": {
@@ -18,8 +18,8 @@
"_requiredBy": [
"/unified"
],
- "_resolved": "https://registry.npmjs.org/vfile/-/vfile-2.1.0.tgz",
- "_shasum": "d3ce8b825e7b8d53b896164341273381936f02bd",
+ "_resolved": "https://registry.npmjs.org/vfile/-/vfile-2.2.0.tgz",
+ "_shasum": "ce47a4fb335922b233e535db0f7d8121d8fced4e",
"_spec": "vfile@^2.0.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/unified",
"author": {
@@ -38,6 +38,10 @@
"url": "http://wooorm.com"
},
{
+ "name": "Brendan Abbott",
+ "email": "brendan.abbott@temando.com"
+ },
+ {
"name": "Denys Dovhan",
"email": "email@denysdovhan.com"
},
@@ -64,7 +68,7 @@
"devDependencies": {
"browserify": "^14.0.0",
"esmangle": "^1.0.0",
- "nyc": "^10.0.0",
+ "nyc": "^11.0.0",
"remark-cli": "^3.0.0",
"remark-preset-wooorm": "^3.0.0",
"tape": "^4.4.0",
@@ -112,7 +116,7 @@
"test-api": "node test",
"test-coverage": "nyc --reporter lcov tape test.js"
},
- "version": "2.1.0",
+ "version": "2.2.0",
"xo": {
"space": true,
"esnext": false,
diff --git a/tools/eslint/node_modules/vfile/readme.md b/tools/eslint/node_modules/vfile/readme.md
index 38896f6940..dc814456a6 100644
--- a/tools/eslint/node_modules/vfile/readme.md
+++ b/tools/eslint/node_modules/vfile/readme.md
@@ -42,6 +42,7 @@ npm install vfile
* [vfile.data](#vfiledata)
* [VFile#toString(\[encoding\])](#vfiletostringencoding)
* [VFile#message(reason\[, position\[, ruleId\]\])](#vfilemessagereason-position-ruleid)
+ * [VFile#info(reason\[, position\[, ruleId\]\])](#vfileinforeason-position-ruleid)
* [VFile#fail(reason\[, position\[, ruleId\]\])](#vfilefailreason-position-ruleid)
* [VFileMessage](#vfilemessage)
* [License](#license)
@@ -206,7 +207,8 @@ Convert contents of `vfile` to string. If `contents` is a buffer,
### `VFile#message(reason[, position[, ruleId]])`
Associates a message with the file for `reason` at `position`. When an
-error is passed in as `reason`, copies the stack.
+error is passed in as `reason`, copies the stack. Each message has a `fatal`
+property which by default is set to `false` (ie. `warning`).
###### Parameters
@@ -215,7 +217,16 @@ error is passed in as `reason`, copies the stack.
* `position` (`Node`, `Location`, or `Position`, optional)
— Place at which the message occurred in `vfile`
* `ruleId` (`string`, optional)
- — Category of warning
+ — Category of message
+
+###### Returns
+
+[`VFileMessage`][message].
+
+### `VFile#info(reason[, position[, ruleId]])`
+
+Associates an informational message with the file, where `fatal` is set to
+`null`. Calls [`#message()`][messages] internally.
###### Returns
diff --git a/tools/eslint/node_modules/which/LICENSE b/tools/eslint/node_modules/which/LICENSE
new file mode 100644
index 0000000000..19129e315f
--- /dev/null
+++ b/tools/eslint/node_modules/which/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/tools/eslint/node_modules/which/README.md b/tools/eslint/node_modules/which/README.md
new file mode 100644
index 0000000000..7f679d595c
--- /dev/null
+++ b/tools/eslint/node_modules/which/README.md
@@ -0,0 +1,48 @@
+# which
+
+Like the unix `which` utility.
+
+Finds the first instance of a specified executable in the PATH
+environment variable. Does not cache the results, so `hash -r` is not
+needed when the PATH changes.
+
+## USAGE
+
+```javascript
+var which = require('which')
+
+// async usage
+which('node', function (er, resolvedPath) {
+ // er is returned if no "node" is found on the PATH
+ // if it is found, then the absolute path to the exec is returned
+})
+
+// sync usage
+// throws if not found
+var resolved = which.sync('node')
+
+// Pass options to override the PATH and PATHEXT environment vars.
+which('node', { path: someOtherPath }, function (er, resolved) {
+ if (er)
+ throw er
+ console.log('found at %j', resolved)
+})
+```
+
+## CLI USAGE
+
+Same as the BSD `which(1)` binary.
+
+```
+usage: which [-as] program ...
+```
+
+## OPTIONS
+
+You may pass an options object as the second argument.
+
+- `path`: Use instead of the `PATH` environment variable.
+- `pathExt`: Use instead of the `PATHEXT` environment variable.
+- `all`: Return all matches, instead of just the first one. Note that
+ this means the function returns an array of strings instead of a
+ single string.
diff --git a/tools/eslint/node_modules/which/bin/which b/tools/eslint/node_modules/which/bin/which
new file mode 100755
index 0000000000..7cee3729ee
--- /dev/null
+++ b/tools/eslint/node_modules/which/bin/which
@@ -0,0 +1,52 @@
+#!/usr/bin/env node
+var which = require("../")
+if (process.argv.length < 3)
+ usage()
+
+function usage () {
+ console.error('usage: which [-as] program ...')
+ process.exit(1)
+}
+
+var all = false
+var silent = false
+var dashdash = false
+var args = process.argv.slice(2).filter(function (arg) {
+ if (dashdash || !/^-/.test(arg))
+ return true
+
+ if (arg === '--') {
+ dashdash = true
+ return false
+ }
+
+ var flags = arg.substr(1).split('')
+ for (var f = 0; f < flags.length; f++) {
+ var flag = flags[f]
+ switch (flag) {
+ case 's':
+ silent = true
+ break
+ case 'a':
+ all = true
+ break
+ default:
+ console.error('which: illegal option -- ' + flag)
+ usage()
+ }
+ }
+ return false
+})
+
+process.exit(args.reduce(function (pv, current) {
+ try {
+ var f = which.sync(current, { all: all })
+ if (all)
+ f = f.join('\n')
+ if (!silent)
+ console.log(f)
+ return pv;
+ } catch (e) {
+ return 1;
+ }
+}, 0))
diff --git a/tools/eslint/node_modules/which/package.json b/tools/eslint/node_modules/which/package.json
new file mode 100644
index 0000000000..68abaa933c
--- /dev/null
+++ b/tools/eslint/node_modules/which/package.json
@@ -0,0 +1,65 @@
+{
+ "_from": "which@^1.2.9",
+ "_id": "which@1.2.14",
+ "_inBundle": false,
+ "_integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=",
+ "_location": "/eslint/which",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "which@^1.2.9",
+ "name": "which",
+ "escapedName": "which",
+ "rawSpec": "^1.2.9",
+ "saveSpec": null,
+ "fetchSpec": "^1.2.9"
+ },
+ "_requiredBy": [
+ "/eslint/cross-spawn"
+ ],
+ "_resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz",
+ "_shasum": "9a87c4378f03e827cecaf1acdf56c736c01c14e5",
+ "_spec": "which@^1.2.9",
+ "_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/cross-spawn",
+ "author": {
+ "name": "Isaac Z. Schlueter",
+ "email": "i@izs.me",
+ "url": "http://blog.izs.me"
+ },
+ "bin": {
+ "which": "./bin/which"
+ },
+ "bugs": {
+ "url": "https://github.com/isaacs/node-which/issues"
+ },
+ "bundleDependencies": false,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "deprecated": false,
+ "description": "Like which(1) unix command. Find the first instance of an executable in the PATH.",
+ "devDependencies": {
+ "mkdirp": "^0.5.0",
+ "rimraf": "^2.3.3",
+ "tap": "^10.3.0"
+ },
+ "files": [
+ "which.js",
+ "bin/which"
+ ],
+ "homepage": "https://github.com/isaacs/node-which#readme",
+ "license": "ISC",
+ "main": "which.js",
+ "name": "which",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/isaacs/node-which.git"
+ },
+ "scripts": {
+ "changelog": "bash gen-changelog.sh",
+ "postversion": "npm run changelog && git add CHANGELOG.md && git commit -m 'update changelog - '${npm_package_version}",
+ "test": "tap test/*.js --cov"
+ },
+ "version": "1.2.14"
+}
diff --git a/tools/eslint/node_modules/which/which.js b/tools/eslint/node_modules/which/which.js
new file mode 100644
index 0000000000..70d974c18b
--- /dev/null
+++ b/tools/eslint/node_modules/which/which.js
@@ -0,0 +1,132 @@
+module.exports = which
+which.sync = whichSync
+
+var isWindows = process.platform === 'win32' ||
+ process.env.OSTYPE === 'cygwin' ||
+ process.env.OSTYPE === 'msys'
+
+var path = require('path')
+var COLON = isWindows ? ';' : ':'
+var isexe = require('isexe')
+
+function getNotFoundError (cmd) {
+ var er = new Error('not found: ' + cmd)
+ er.code = 'ENOENT'
+
+ return er
+}
+
+function getPathInfo (cmd, opt) {
+ var colon = opt.colon || COLON
+ var pathEnv = opt.path || process.env.PATH || ''
+ var pathExt = ['']
+
+ pathEnv = pathEnv.split(colon)
+
+ var pathExtExe = ''
+ if (isWindows) {
+ pathEnv.unshift(process.cwd())
+ pathExtExe = (opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM')
+ pathExt = pathExtExe.split(colon)
+
+
+ // Always test the cmd itself first. isexe will check to make sure
+ // it's found in the pathExt set.
+ if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')
+ pathExt.unshift('')
+ }
+
+ // If it has a slash, then we don't bother searching the pathenv.
+ // just check the file itself, and that's it.
+ if (cmd.match(/\//) || isWindows && cmd.match(/\\/))
+ pathEnv = ['']
+
+ return {
+ env: pathEnv,
+ ext: pathExt,
+ extExe: pathExtExe
+ }
+}
+
+function which (cmd, opt, cb) {
+ if (typeof opt === 'function') {
+ cb = opt
+ opt = {}
+ }
+
+ var info = getPathInfo(cmd, opt)
+ var pathEnv = info.env
+ var pathExt = info.ext
+ var pathExtExe = info.extExe
+ var found = []
+
+ ;(function F (i, l) {
+ if (i === l) {
+ if (opt.all && found.length)
+ return cb(null, found)
+ else
+ return cb(getNotFoundError(cmd))
+ }
+
+ var pathPart = pathEnv[i]
+ if (pathPart.charAt(0) === '"' && pathPart.slice(-1) === '"')
+ pathPart = pathPart.slice(1, -1)
+
+ var p = path.join(pathPart, cmd)
+ if (!pathPart && (/^\.[\\\/]/).test(cmd)) {
+ p = cmd.slice(0, 2) + p
+ }
+ ;(function E (ii, ll) {
+ if (ii === ll) return F(i + 1, l)
+ var ext = pathExt[ii]
+ isexe(p + ext, { pathExt: pathExtExe }, function (er, is) {
+ if (!er && is) {
+ if (opt.all)
+ found.push(p + ext)
+ else
+ return cb(null, p + ext)
+ }
+ return E(ii + 1, ll)
+ })
+ })(0, pathExt.length)
+ })(0, pathEnv.length)
+}
+
+function whichSync (cmd, opt) {
+ opt = opt || {}
+
+ var info = getPathInfo(cmd, opt)
+ var pathEnv = info.env
+ var pathExt = info.ext
+ var pathExtExe = info.extExe
+ var found = []
+
+ for (var i = 0, l = pathEnv.length; i < l; i ++) {
+ var pathPart = pathEnv[i]
+ if (pathPart.charAt(0) === '"' && pathPart.slice(-1) === '"')
+ pathPart = pathPart.slice(1, -1)
+
+ var p = path.join(pathPart, cmd)
+ if (!pathPart && /^\.[\\\/]/.test(cmd)) {
+ p = cmd.slice(0, 2) + p
+ }
+ for (var j = 0, ll = pathExt.length; j < ll; j ++) {
+ var cur = p + pathExt[j]
+ var is
+ try {
+ is = isexe.sync(cur, { pathExt: pathExtExe })
+ if (is) {
+ if (opt.all)
+ found.push(cur)
+ else
+ return cur
+ }
+ } catch (ex) {}
+ }
+ }
+
+ if (opt.all && found.length)
+ return found
+
+ throw getNotFoundError(cmd)
+}
diff --git a/tools/eslint/node_modules/yallist/LICENSE b/tools/eslint/node_modules/yallist/LICENSE
new file mode 100644
index 0000000000..19129e315f
--- /dev/null
+++ b/tools/eslint/node_modules/yallist/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/tools/eslint/node_modules/yallist/README.md b/tools/eslint/node_modules/yallist/README.md
new file mode 100644
index 0000000000..f586101869
--- /dev/null
+++ b/tools/eslint/node_modules/yallist/README.md
@@ -0,0 +1,204 @@
+# yallist
+
+Yet Another Linked List
+
+There are many doubly-linked list implementations like it, but this
+one is mine.
+
+For when an array would be too big, and a Map can't be iterated in
+reverse order.
+
+
+[![Build Status](https://travis-ci.org/isaacs/yallist.svg?branch=master)](https://travis-ci.org/isaacs/yallist) [![Coverage Status](https://coveralls.io/repos/isaacs/yallist/badge.svg?service=github)](https://coveralls.io/github/isaacs/yallist)
+
+## basic usage
+
+```javascript
+var yallist = require('yallist')
+var myList = yallist.create([1, 2, 3])
+myList.push('foo')
+myList.unshift('bar')
+// of course pop() and shift() are there, too
+console.log(myList.toArray()) // ['bar', 1, 2, 3, 'foo']
+myList.forEach(function (k) {
+ // walk the list head to tail
+})
+myList.forEachReverse(function (k, index, list) {
+ // walk the list tail to head
+})
+var myDoubledList = myList.map(function (k) {
+ return k + k
+})
+// now myDoubledList contains ['barbar', 2, 4, 6, 'foofoo']
+// mapReverse is also a thing
+var myDoubledListReverse = myList.mapReverse(function (k) {
+ return k + k
+}) // ['foofoo', 6, 4, 2, 'barbar']
+
+var reduced = myList.reduce(function (set, entry) {
+ set += entry
+ return set
+}, 'start')
+console.log(reduced) // 'startfoo123bar'
+```
+
+## api
+
+The whole API is considered "public".
+
+Functions with the same name as an Array method work more or less the
+same way.
+
+There's reverse versions of most things because that's the point.
+
+### Yallist
+
+Default export, the class that holds and manages a list.
+
+Call it with either a forEach-able (like an array) or a set of
+arguments, to initialize the list.
+
+The Array-ish methods all act like you'd expect. No magic length,
+though, so if you change that it won't automatically prune or add
+empty spots.
+
+### Yallist.create(..)
+
+Alias for Yallist function. Some people like factories.
+
+#### yallist.head
+
+The first node in the list
+
+#### yallist.tail
+
+The last node in the list
+
+#### yallist.length
+
+The number of nodes in the list. (Change this at your peril. It is
+not magic like Array length.)
+
+#### yallist.toArray()
+
+Convert the list to an array.
+
+#### yallist.forEach(fn, [thisp])
+
+Call a function on each item in the list.
+
+#### yallist.forEachReverse(fn, [thisp])
+
+Call a function on each item in the list, in reverse order.
+
+#### yallist.get(n)
+
+Get the data at position `n` in the list. If you use this a lot,
+probably better off just using an Array.
+
+#### yallist.getReverse(n)
+
+Get the data at position `n`, counting from the tail.
+
+#### yallist.map(fn, thisp)
+
+Create a new Yallist with the result of calling the function on each
+item.
+
+#### yallist.mapReverse(fn, thisp)
+
+Same as `map`, but in reverse.
+
+#### yallist.pop()
+
+Get the data from the list tail, and remove the tail from the list.
+
+#### yallist.push(item, ...)
+
+Insert one or more items to the tail of the list.
+
+#### yallist.reduce(fn, initialValue)
+
+Like Array.reduce.
+
+#### yallist.reduceReverse
+
+Like Array.reduce, but in reverse.
+
+#### yallist.reverse
+
+Reverse the list in place.
+
+#### yallist.shift()
+
+Get the data from the list head, and remove the head from the list.
+
+#### yallist.slice([from], [to])
+
+Just like Array.slice, but returns a new Yallist.
+
+#### yallist.sliceReverse([from], [to])
+
+Just like yallist.slice, but the result is returned in reverse.
+
+#### yallist.toArray()
+
+Create an array representation of the list.
+
+#### yallist.toArrayReverse()
+
+Create a reversed array representation of the list.
+
+#### yallist.unshift(item, ...)
+
+Insert one or more items to the head of the list.
+
+#### yallist.unshiftNode(node)
+
+Move a Node object to the front of the list. (That is, pull it out of
+wherever it lives, and make it the new head.)
+
+If the node belongs to a different list, then that list will remove it
+first.
+
+#### yallist.pushNode(node)
+
+Move a Node object to the end of the list. (That is, pull it out of
+wherever it lives, and make it the new tail.)
+
+If the node belongs to a list already, then that list will remove it
+first.
+
+#### yallist.removeNode(node)
+
+Remove a node from the list, preserving referential integrity of head
+and tail and other nodes.
+
+Will throw an error if you try to have a list remove a node that
+doesn't belong to it.
+
+### Yallist.Node
+
+The class that holds the data and is actually the list.
+
+Call with `var n = new Node(value, previousNode, nextNode)`
+
+Note that if you do direct operations on Nodes themselves, it's very
+easy to get into weird states where the list is broken. Be careful :)
+
+#### node.next
+
+The next node in the list.
+
+#### node.prev
+
+The previous node in the list.
+
+#### node.value
+
+The data the node contains.
+
+#### node.list
+
+The list to which this node belongs. (Null if it does not belong to
+any list.)
diff --git a/tools/eslint/node_modules/yallist/iterator.js b/tools/eslint/node_modules/yallist/iterator.js
new file mode 100644
index 0000000000..4a15bf22c4
--- /dev/null
+++ b/tools/eslint/node_modules/yallist/iterator.js
@@ -0,0 +1,7 @@
+var Yallist = require('./yallist.js')
+
+Yallist.prototype[Symbol.iterator] = function* () {
+ for (let walker = this.head; walker; walker = walker.next) {
+ yield walker.value
+ }
+}
diff --git a/tools/eslint/node_modules/yallist/package.json b/tools/eslint/node_modules/yallist/package.json
new file mode 100644
index 0000000000..1a26ba8193
--- /dev/null
+++ b/tools/eslint/node_modules/yallist/package.json
@@ -0,0 +1,62 @@
+{
+ "_from": "yallist@^2.1.2",
+ "_id": "yallist@2.1.2",
+ "_inBundle": false,
+ "_integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+ "_location": "/eslint/yallist",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "yallist@^2.1.2",
+ "name": "yallist",
+ "escapedName": "yallist",
+ "rawSpec": "^2.1.2",
+ "saveSpec": null,
+ "fetchSpec": "^2.1.2"
+ },
+ "_requiredBy": [
+ "/eslint/lru-cache"
+ ],
+ "_resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "_shasum": "1c11f9218f076089a47dd512f93c6699a6a81d52",
+ "_spec": "yallist@^2.1.2",
+ "_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/lru-cache",
+ "author": {
+ "name": "Isaac Z. Schlueter",
+ "email": "i@izs.me",
+ "url": "http://blog.izs.me/"
+ },
+ "bugs": {
+ "url": "https://github.com/isaacs/yallist/issues"
+ },
+ "bundleDependencies": false,
+ "dependencies": {},
+ "deprecated": false,
+ "description": "Yet Another Linked List",
+ "devDependencies": {
+ "tap": "^10.3.0"
+ },
+ "directories": {
+ "test": "test"
+ },
+ "files": [
+ "yallist.js",
+ "iterator.js"
+ ],
+ "homepage": "https://github.com/isaacs/yallist#readme",
+ "license": "ISC",
+ "main": "yallist.js",
+ "name": "yallist",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/isaacs/yallist.git"
+ },
+ "scripts": {
+ "postpublish": "git push origin --all; git push origin --tags",
+ "postversion": "npm publish",
+ "preversion": "npm test",
+ "test": "tap test/*.js --100"
+ },
+ "version": "2.1.2"
+}
diff --git a/tools/eslint/node_modules/yallist/yallist.js b/tools/eslint/node_modules/yallist/yallist.js
new file mode 100644
index 0000000000..518d23330b
--- /dev/null
+++ b/tools/eslint/node_modules/yallist/yallist.js
@@ -0,0 +1,370 @@
+module.exports = Yallist
+
+Yallist.Node = Node
+Yallist.create = Yallist
+
+function Yallist (list) {
+ var self = this
+ if (!(self instanceof Yallist)) {
+ self = new Yallist()
+ }
+
+ self.tail = null
+ self.head = null
+ self.length = 0
+
+ if (list && typeof list.forEach === 'function') {
+ list.forEach(function (item) {
+ self.push(item)
+ })
+ } else if (arguments.length > 0) {
+ for (var i = 0, l = arguments.length; i < l; i++) {
+ self.push(arguments[i])
+ }
+ }
+
+ return self
+}
+
+Yallist.prototype.removeNode = function (node) {
+ if (node.list !== this) {
+ throw new Error('removing node which does not belong to this list')
+ }
+
+ var next = node.next
+ var prev = node.prev
+
+ if (next) {
+ next.prev = prev
+ }
+
+ if (prev) {
+ prev.next = next
+ }
+
+ if (node === this.head) {
+ this.head = next
+ }
+ if (node === this.tail) {
+ this.tail = prev
+ }
+
+ node.list.length--
+ node.next = null
+ node.prev = null
+ node.list = null
+}
+
+Yallist.prototype.unshiftNode = function (node) {
+ if (node === this.head) {
+ return
+ }
+
+ if (node.list) {
+ node.list.removeNode(node)
+ }
+
+ var head = this.head
+ node.list = this
+ node.next = head
+ if (head) {
+ head.prev = node
+ }
+
+ this.head = node
+ if (!this.tail) {
+ this.tail = node
+ }
+ this.length++
+}
+
+Yallist.prototype.pushNode = function (node) {
+ if (node === this.tail) {
+ return
+ }
+
+ if (node.list) {
+ node.list.removeNode(node)
+ }
+
+ var tail = this.tail
+ node.list = this
+ node.prev = tail
+ if (tail) {
+ tail.next = node
+ }
+
+ this.tail = node
+ if (!this.head) {
+ this.head = node
+ }
+ this.length++
+}
+
+Yallist.prototype.push = function () {
+ for (var i = 0, l = arguments.length; i < l; i++) {
+ push(this, arguments[i])
+ }
+ return this.length
+}
+
+Yallist.prototype.unshift = function () {
+ for (var i = 0, l = arguments.length; i < l; i++) {
+ unshift(this, arguments[i])
+ }
+ return this.length
+}
+
+Yallist.prototype.pop = function () {
+ if (!this.tail) {
+ return undefined
+ }
+
+ var res = this.tail.value
+ this.tail = this.tail.prev
+ if (this.tail) {
+ this.tail.next = null
+ } else {
+ this.head = null
+ }
+ this.length--
+ return res
+}
+
+Yallist.prototype.shift = function () {
+ if (!this.head) {
+ return undefined
+ }
+
+ var res = this.head.value
+ this.head = this.head.next
+ if (this.head) {
+ this.head.prev = null
+ } else {
+ this.tail = null
+ }
+ this.length--
+ return res
+}
+
+Yallist.prototype.forEach = function (fn, thisp) {
+ thisp = thisp || this
+ for (var walker = this.head, i = 0; walker !== null; i++) {
+ fn.call(thisp, walker.value, i, this)
+ walker = walker.next
+ }
+}
+
+Yallist.prototype.forEachReverse = function (fn, thisp) {
+ thisp = thisp || this
+ for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {
+ fn.call(thisp, walker.value, i, this)
+ walker = walker.prev
+ }
+}
+
+Yallist.prototype.get = function (n) {
+ for (var i = 0, walker = this.head; walker !== null && i < n; i++) {
+ // abort out of the list early if we hit a cycle
+ walker = walker.next
+ }
+ if (i === n && walker !== null) {
+ return walker.value
+ }
+}
+
+Yallist.prototype.getReverse = function (n) {
+ for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {
+ // abort out of the list early if we hit a cycle
+ walker = walker.prev
+ }
+ if (i === n && walker !== null) {
+ return walker.value
+ }
+}
+
+Yallist.prototype.map = function (fn, thisp) {
+ thisp = thisp || this
+ var res = new Yallist()
+ for (var walker = this.head; walker !== null;) {
+ res.push(fn.call(thisp, walker.value, this))
+ walker = walker.next
+ }
+ return res
+}
+
+Yallist.prototype.mapReverse = function (fn, thisp) {
+ thisp = thisp || this
+ var res = new Yallist()
+ for (var walker = this.tail; walker !== null;) {
+ res.push(fn.call(thisp, walker.value, this))
+ walker = walker.prev
+ }
+ return res
+}
+
+Yallist.prototype.reduce = function (fn, initial) {
+ var acc
+ var walker = this.head
+ if (arguments.length > 1) {
+ acc = initial
+ } else if (this.head) {
+ walker = this.head.next
+ acc = this.head.value
+ } else {
+ throw new TypeError('Reduce of empty list with no initial value')
+ }
+
+ for (var i = 0; walker !== null; i++) {
+ acc = fn(acc, walker.value, i)
+ walker = walker.next
+ }
+
+ return acc
+}
+
+Yallist.prototype.reduceReverse = function (fn, initial) {
+ var acc
+ var walker = this.tail
+ if (arguments.length > 1) {
+ acc = initial
+ } else if (this.tail) {
+ walker = this.tail.prev
+ acc = this.tail.value
+ } else {
+ throw new TypeError('Reduce of empty list with no initial value')
+ }
+
+ for (var i = this.length - 1; walker !== null; i--) {
+ acc = fn(acc, walker.value, i)
+ walker = walker.prev
+ }
+
+ return acc
+}
+
+Yallist.prototype.toArray = function () {
+ var arr = new Array(this.length)
+ for (var i = 0, walker = this.head; walker !== null; i++) {
+ arr[i] = walker.value
+ walker = walker.next
+ }
+ return arr
+}
+
+Yallist.prototype.toArrayReverse = function () {
+ var arr = new Array(this.length)
+ for (var i = 0, walker = this.tail; walker !== null; i++) {
+ arr[i] = walker.value
+ walker = walker.prev
+ }
+ return arr
+}
+
+Yallist.prototype.slice = function (from, to) {
+ to = to || this.length
+ if (to < 0) {
+ to += this.length
+ }
+ from = from || 0
+ if (from < 0) {
+ from += this.length
+ }
+ var ret = new Yallist()
+ if (to < from || to < 0) {
+ return ret
+ }
+ if (from < 0) {
+ from = 0
+ }
+ if (to > this.length) {
+ to = this.length
+ }
+ for (var i = 0, walker = this.head; walker !== null && i < from; i++) {
+ walker = walker.next
+ }
+ for (; walker !== null && i < to; i++, walker = walker.next) {
+ ret.push(walker.value)
+ }
+ return ret
+}
+
+Yallist.prototype.sliceReverse = function (from, to) {
+ to = to || this.length
+ if (to < 0) {
+ to += this.length
+ }
+ from = from || 0
+ if (from < 0) {
+ from += this.length
+ }
+ var ret = new Yallist()
+ if (to < from || to < 0) {
+ return ret
+ }
+ if (from < 0) {
+ from = 0
+ }
+ if (to > this.length) {
+ to = this.length
+ }
+ for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {
+ walker = walker.prev
+ }
+ for (; walker !== null && i > from; i--, walker = walker.prev) {
+ ret.push(walker.value)
+ }
+ return ret
+}
+
+Yallist.prototype.reverse = function () {
+ var head = this.head
+ var tail = this.tail
+ for (var walker = head; walker !== null; walker = walker.prev) {
+ var p = walker.prev
+ walker.prev = walker.next
+ walker.next = p
+ }
+ this.head = tail
+ this.tail = head
+ return this
+}
+
+function push (self, item) {
+ self.tail = new Node(item, self.tail, null, self)
+ if (!self.head) {
+ self.head = self.tail
+ }
+ self.length++
+}
+
+function unshift (self, item) {
+ self.head = new Node(item, null, self.head, self)
+ if (!self.tail) {
+ self.tail = self.head
+ }
+ self.length++
+}
+
+function Node (value, prev, next, list) {
+ if (!(this instanceof Node)) {
+ return new Node(value, prev, next, list)
+ }
+
+ this.list = list
+ this.value = value
+
+ if (prev) {
+ prev.next = this
+ this.prev = prev
+ } else {
+ this.prev = null
+ }
+
+ if (next) {
+ next.prev = this
+ this.next = next
+ } else {
+ this.next = null
+ }
+}
diff --git a/tools/eslint/package-lock.json b/tools/eslint/package-lock.json
index 114bbc6e10..a8512b57e4 100644
--- a/tools/eslint/package-lock.json
+++ b/tools/eslint/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "eslint",
- "version": "4.2.0",
+ "version": "4.3.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -25,9 +25,9 @@
}
},
"ajv": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.1.tgz",
- "integrity": "sha1-3NAwRRdYg7obY25a6ew9+auFMjo=",
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.2.tgz",
+ "integrity": "sha1-R8aNaehvXZUxA7AHSpQw3GPaXjk=",
"requires": {
"co": "4.6.0",
"fast-deep-equal": "1.0.0",
@@ -136,19 +136,19 @@
}
},
"character-entities": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.0.tgz",
- "integrity": "sha1-poPiz3Xb6LFxljUxNk5Y4YobFV8="
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.1.tgz",
+ "integrity": "sha1-92hxvl72bdt/j440eOzDdMJ9bco="
},
"character-entities-legacy": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.0.tgz",
- "integrity": "sha1-sYqtmPa3vMZGweTIH58ZVjdqVho="
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.1.tgz",
+ "integrity": "sha1-9Ad53xoQGHK7UQo9KV4fzPFHIC8="
},
"character-reference-invalid": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.0.tgz",
- "integrity": "sha1-3smtHfufjQa0/NqircPE/ZevHmg="
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.1.tgz",
+ "integrity": "sha1-lCg191Dk7GGjCOYMLvjMEBEgLvw="
},
"circular-json": {
"version": "0.3.1",
@@ -183,13 +183,13 @@
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz",
"integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=",
"requires": {
- "color-name": "1.1.2"
+ "color-name": "1.1.3"
}
},
"color-name": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.2.tgz",
- "integrity": "sha1-XIq3K2S9IhXWF66VWeuxSEdc+Y0="
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
},
"concat-map": {
"version": "0.0.1",
@@ -211,6 +211,16 @@
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
},
+ "cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+ "requires": {
+ "lru-cache": "4.1.1",
+ "shebang-command": "1.2.0",
+ "which": "1.2.14"
+ }
+ },
"debug": {
"version": "2.6.8",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz",
@@ -323,7 +333,7 @@
"integrity": "sha1-HtkZnanL/i7y96MbL96LDRI2iXI=",
"requires": {
"iconv-lite": "0.4.18",
- "jschardet": "1.4.2",
+ "jschardet": "1.5.0",
"tmp": "0.0.31"
}
},
@@ -375,6 +385,11 @@
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz",
"integrity": "sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E="
},
+ "functional-red-black-tree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc="
+ },
"glob": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
@@ -477,7 +492,7 @@
"run-async": "2.3.0",
"rx-lite": "4.0.8",
"rx-lite-aggregates": "4.0.8",
- "string-width": "2.1.0",
+ "string-width": "2.1.1",
"strip-ansi": "4.0.0",
"through": "2.3.8"
},
@@ -524,17 +539,17 @@
}
},
"is-alphabetical": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.0.tgz",
- "integrity": "sha1-4lRMEwWCVfIUTLdXBmzTNCocjEY="
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.1.tgz",
+ "integrity": "sha1-x3B5zJHU76x3W+EDS/LSQ/lebwg="
},
"is-alphanumerical": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.0.tgz",
- "integrity": "sha1-4GSS5xnBvxXewjnk8a9fZ7TW578=",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.1.tgz",
+ "integrity": "sha1-37SqTRCF4zvbYcLe6cgOnGwZ9Ts=",
"requires": {
- "is-alphabetical": "1.0.0",
- "is-decimal": "1.0.0"
+ "is-alphabetical": "1.0.1",
+ "is-decimal": "1.0.1"
}
},
"is-buffer": {
@@ -543,9 +558,9 @@
"integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw="
},
"is-decimal": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.0.tgz",
- "integrity": "sha1-lAV5tupjxigICmnmK9qIyEcLT+A="
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.1.tgz",
+ "integrity": "sha1-9ftqlJlq2ejjdh+/vQkfH8qMToI="
},
"is-fullwidth-code-point": {
"version": "2.0.0",
@@ -553,9 +568,9 @@
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
},
"is-hexadecimal": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.0.tgz",
- "integrity": "sha1-XEWXcdKvmi45Ungf1U/LG8/kETw="
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.1.tgz",
+ "integrity": "sha1-bghLvJIGH7sJcexYts5tQE4k2mk="
},
"is-path-cwd": {
"version": "1.0.0",
@@ -597,20 +612,25 @@
}
},
"is-whitespace-character": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.0.tgz",
- "integrity": "sha1-u/SoN2Tq0NRRvsKlUhjpGWGtwnU="
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.1.tgz",
+ "integrity": "sha1-muAXbzKCtlRXoZks2whPil+DPjs="
},
"is-word-character": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.0.tgz",
- "integrity": "sha1-o6nl3a1wxcLuNvSpz8mlP0RTUkc="
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.1.tgz",
+ "integrity": "sha1-WgP6HqkazopusMfNdw64bWXIvvs="
},
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
},
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
+ },
"js-tokens": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
@@ -626,9 +646,9 @@
}
},
"jschardet": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.4.2.tgz",
- "integrity": "sha1-KqEH8UKvQSHRRWWdRPUIMJYeaZo="
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.5.0.tgz",
+ "integrity": "sha512-+Q8JsoEQbrdE+a/gg1F9XO92gcKXgpE5UACqr0sIubjDmBEkd+OOWPGzQeMrWSLxd73r4dHxBeRW7edHu5LmJQ=="
},
"json-schema-traverse": {
"version": "0.3.1",
@@ -662,10 +682,19 @@
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
"integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4="
},
+ "lru-cache": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz",
+ "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==",
+ "requires": {
+ "pseudomap": "1.0.2",
+ "yallist": "2.1.2"
+ }
+ },
"markdown-escapes": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.0.tgz",
- "integrity": "sha1-yMoZ8dlNaCRZ4Kk8htsnp+9xayM="
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.1.tgz",
+ "integrity": "sha1-GZTfLTr0gR3lmmcUk0wrIpJzRRg="
},
"mimic-fn": {
"version": "1.1.0",
@@ -752,12 +781,12 @@
"resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.1.1.tgz",
"integrity": "sha1-gRLYhHExnyerrk1klksSL+ThuJA=",
"requires": {
- "character-entities": "1.2.0",
- "character-entities-legacy": "1.1.0",
- "character-reference-invalid": "1.1.0",
- "is-alphanumerical": "1.0.0",
- "is-decimal": "1.0.0",
- "is-hexadecimal": "1.0.0"
+ "character-entities": "1.2.1",
+ "character-entities-legacy": "1.1.1",
+ "character-reference-invalid": "1.1.1",
+ "is-alphanumerical": "1.0.1",
+ "is-decimal": "1.0.1",
+ "is-hexadecimal": "1.0.1"
}
},
"path-is-absolute": {
@@ -808,6 +837,11 @@
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz",
"integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8="
},
+ "pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
+ },
"readable-stream": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
@@ -829,11 +863,11 @@
"requires": {
"collapse-white-space": "1.0.3",
"has": "1.0.1",
- "is-alphabetical": "1.0.0",
- "is-decimal": "1.0.0",
- "is-whitespace-character": "1.0.0",
- "is-word-character": "1.0.0",
- "markdown-escapes": "1.0.0",
+ "is-alphabetical": "1.0.1",
+ "is-decimal": "1.0.1",
+ "is-whitespace-character": "1.0.1",
+ "is-word-character": "1.0.1",
+ "markdown-escapes": "1.0.1",
"parse-entities": "1.1.1",
"repeat-string": "1.6.1",
"state-toggle": "1.0.0",
@@ -841,7 +875,7 @@
"trim-trailing-lines": "1.1.0",
"unherit": "1.1.0",
"unist-util-remove-position": "1.1.1",
- "vfile-location": "2.0.1",
+ "vfile-location": "2.0.2",
"xtend": "4.0.1"
}
},
@@ -912,6 +946,24 @@
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
"integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
},
+ "semver": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
+ "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8="
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "requires": {
+ "shebang-regex": "1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM="
+ },
"signal-exit": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
@@ -941,9 +993,9 @@
}
},
"string-width": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.0.tgz",
- "integrity": "sha1-AwZkVh/BRslCPsfZeP4kV0N/5tA=",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
"requires": {
"is-fullwidth-code-point": "2.0.0",
"strip-ansi": "4.0.0"
@@ -992,7 +1044,7 @@
"chalk": "1.1.3",
"lodash": "4.17.4",
"slice-ansi": "0.0.4",
- "string-width": "2.1.0"
+ "string-width": "2.1.1"
},
"dependencies": {
"ajv": {
@@ -1075,7 +1127,7 @@
"extend": "3.0.1",
"is-plain-obj": "1.1.0",
"trough": "1.0.1",
- "vfile": "2.1.0",
+ "vfile": "2.2.0",
"x-is-function": "1.0.4",
"x-is-string": "0.1.0"
}
@@ -1104,9 +1156,9 @@
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
},
"vfile": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-2.1.0.tgz",
- "integrity": "sha1-086Lgl57jVO4lhZDQSczgZNvAr0=",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-2.2.0.tgz",
+ "integrity": "sha1-zkek+zNZIrIz5TXbD32BIdj87U4=",
"requires": {
"is-buffer": "1.1.5",
"replace-ext": "1.0.0",
@@ -1114,9 +1166,17 @@
}
},
"vfile-location": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.1.tgz",
- "integrity": "sha1-C/iBb3MrD4vZAqVv2kxiyOk13FI="
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.2.tgz",
+ "integrity": "sha1-02dcWch3SY5JK0dW/2Xkrxp1IlU="
+ },
+ "which": {
+ "version": "1.2.14",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz",
+ "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=",
+ "requires": {
+ "isexe": "2.0.0"
+ }
},
"wordwrap": {
"version": "1.0.0",
@@ -1150,6 +1210,11 @@
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
"integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
}
}
}
diff --git a/tools/eslint/package.json b/tools/eslint/package.json
index 5d9698e6c3..37fb7b951b 100644
--- a/tools/eslint/package.json
+++ b/tools/eslint/package.json
@@ -1,8 +1,8 @@
{
"_from": "eslint@latest",
- "_id": "eslint@4.2.0",
+ "_id": "eslint@4.3.0",
"_inBundle": false,
- "_integrity": "sha1-orMYQRGxmOAunH88ymJaXgHFaz0=",
+ "_integrity": "sha1-/NfJY3a780yF7mftABKimWQrEI8=",
"_location": "/eslint",
"_phantomChildren": {},
"_requested": {
@@ -19,8 +19,8 @@
"#USER",
"/"
],
- "_resolved": "https://registry.npmjs.org/eslint/-/eslint-4.2.0.tgz",
- "_shasum": "a2b3184111b198e02e9c7f3cca625a5e01c56b3d",
+ "_resolved": "https://registry.npmjs.org/eslint/-/eslint-4.3.0.tgz",
+ "_shasum": "fcd7c96376bbf34c85ee67ed0012a299642b108f",
"_spec": "eslint@latest",
"_where": "/Users/trott/io.js/tools/eslint-tmp",
"author": {
@@ -39,6 +39,7 @@
"babel-code-frame": "^6.22.0",
"chalk": "^1.1.3",
"concat-stream": "^1.6.0",
+ "cross-spawn": "^5.1.0",
"debug": "^2.6.8",
"doctrine": "^2.0.0",
"eslint-plugin-markdown": "^1.0.0-beta.7",
@@ -48,6 +49,7 @@
"estraverse": "^4.2.0",
"esutils": "^2.0.2",
"file-entry-cache": "^2.0.0",
+ "functional-red-black-tree": "^1.0.1",
"glob": "^7.1.2",
"globals": "^9.17.0",
"ignore": "^3.3.3",
@@ -66,6 +68,7 @@
"pluralize": "^4.0.0",
"progress": "^2.0.0",
"require-uncached": "^1.0.3",
+ "semver": "^5.3.0",
"strip-json-comments": "~2.0.1",
"table": "^4.0.1",
"text-table": "~0.2.0"
@@ -87,6 +90,7 @@
"eslint-plugin-eslint-plugin": "^0.7.4",
"eslint-plugin-node": "^5.1.0",
"eslint-release": "^0.10.1",
+ "eslump": "1.6.0",
"esprima": "^3.1.3",
"esprima-fb": "^15001.1001.0-dev-harmony-fb",
"istanbul": "^0.4.5",
@@ -104,7 +108,6 @@
"npm-license": "^0.3.3",
"phantomjs-prebuilt": "^2.1.14",
"proxyquire": "^1.8.0",
- "semver": "^5.3.0",
"shelljs": "^0.7.7",
"shelljs-nodecli": "~0.1.1",
"sinon": "^2.3.2",
@@ -145,6 +148,7 @@
"ci-release": "node Makefile.js ciRelease",
"coveralls": "cat ./coverage/lcov.info | coveralls",
"docs": "node Makefile.js docs",
+ "fuzz": "node Makefile.js fuzz",
"gensite": "node Makefile.js gensite",
"lint": "node Makefile.js lint",
"perf": "node Makefile.js perf",
@@ -152,5 +156,5 @@
"release": "node Makefile.js release",
"test": "node Makefile.js test"
},
- "version": "4.2.0"
+ "version": "4.3.0"
}